比特币是一个账本
比特币让人们的电子支付和发一封邮件一样简单。给别人转账的时候,你要用到手机上的钱包软件,输入金额,扫描一下对方的账号,点击发送。这样对方就看到自己账号上有了新的进账了。
那这一切是怎么工作的呢?最基本的,比特币就是一个账本,上面有账号和账户余额。当 Bob 给 Jim 5 个币,那他的账号余额就减少5,Jim 的加5。比特币背后没有政府和黄金的支撑,它纯粹基于人们对它的购买力的认可。系统可以提供安全保障,没有人可以随便修改账本。
没有人可以随便花别人的钱。每次你点击发送,钱包软件就会向比特币网络发送一条信息,告诉账本应该怎样变化,信息包含数额,发款和收款人账户。但是如何防止有贼挪用他人账号上的钱呢?每条信息都配有一条签名,来保障信息是由账号的主人发出的。这和支票上的签名是类似的。只不过这里的签名是数学方法生成的,而不是手写的。数学方法来自加密学,通常是用来给机密的信息做加密解密用的,但是用在比特币这里主要是为了确认身份。
每一个比特币账号都有一个秘钥,只有账号主人才知道。它可以用来加密信息,来生成签名。这样,他人就可以通过解密签名来验证签署人身份。如果验证成功,就可以证明信息是真的从账号主人那里发出的。数字签名还有个好处,就是不能拷贝复用,因为每次交易的签名都不同。
有了签名,那么伪造的信息就不能更改账本了。 但是,是谁来验证签名,维护账本的呢?可能会让你感到惊讶的是,任何人都可以。比特币系统的一个大的设计目标是,制造一个分布的去中心的系统,不被某个政府或公司控制。每次有人付款,交易信息就会传递给网路上的所有账本维护者。每个维护者,都有账本的一个拷贝,收到信息后就会更新自己的拷贝,只要签名验证是通过的。
通过数学赛跑来投票
但是网路上经常会有延迟,也会收到恶意伪造,所有所有的这些账本拷贝,同一时刻很难达到一致。那么大家到底要相信谁的那个账本呢?和其他的民主系统一样,通过投票决定。投票的方式是大家都运算一个跟自己这个账本数据相关的一个数学结果。第一个算出答案来的人,就广播出答案和他自己的账本信息,其他人的账本就根据他的账本做更新。投票实际上就是一种数学上的赛跑,让最大多数人的那个账本很容易胜出。因为越多的人运算一个相同的版本,那这个版本就最有可能胜出。系统上的交易会不断生成,那这个赛跑也会周而复始的进行,让大家不断保持账本统一。
那为啥采用数学方式?而不是让大家发邮件来投票?因为没有统一管理,所以如果有坏人自己伪装成很多人,也就无法辨别。比特币系统的解决方案就是让你每次投票都有真金白银的成本,因为参加数学赛跑需要买计算机和花电费。这也就意味着如果坏人想在投票中取胜,那他就得比所有诚实的人花钱的总和还有多。总之,数学方法实现了在去中心化的系统中公平投票的一种机制。
相关的两个细节。第一,为了防止有人提前运算,每次运算都基于前面一次运算的结果。第二,运算过程是没有窍门的,想要算的快只能去多买强大的计算机。这样,最终可以保证结果是来自最大多数人的,而不是聪明的攻击者。
钱的发行
最后说说,比特币的发行。每次有账本维护人算出结果,系统就会给他一定数额的比特币作为奖励,这样维护账本的人就有动力了。另外发款人也会付一个小额的手续费。因为维护人挖到了币,所以通常人们把他们叫矿工,但是矿工最重要的目的不是挖钱,而是维护账本。整个投票系统可以让比特币随机的被发行到世界的任何地方,到 2140 年就不会有新的比特币被挖出来了。
总结。比特币是一个基于大众协作维护的账本的电子货币。发款的时候,就给维护人发一条信息,说明钱要转到哪里,数额是多少。维护人负责检查数字签名,保证信息是账号所有人发出的。各个维护人之间通过投票的方式达成一致。