通过前面两篇文章,我们知道比特币的出现有其历史必然性,因为它能够提高交易的效率。同时,从货币的属性来看,比特币已经被定义为一种货币。 今天我们要聊的是,比特币作为货币,它是如何解决“伪造”和“双花”这个问题的,这里的双花,简单理解就是“一份钱当两份来花”。
大家已经普遍接受银行账户和微信账户的余额数字其实就是货币这一概念了。然而,我们知道互联网的一个特点就是复制和粘贴,这个功能大家都用过。所以我们有理由担心,银行账号的数字会不会也被人复制粘贴呢?严格来说是有可能的,只是基于我们对银行的信任,认为银行不会做种事情,或者说银行做这种事情的可能性极低(央行的超发除外)。另外,银行每年花费巨资来维护银行系统的安全性,黑客也很难攻破银行的安全系统去作恶。所以,我们是基于对银行的信任,认为他会想尽办法去解决好伪造的问题。 对于比特币来说,这个问题就要复杂多了,因为比特币背后没有类似银行这样一个机构来维护比特币系统的安全,它只能通过自己的算法和设计来解决这个问题。
分布式账本
我们知道,银行集中管理着一个涵盖所有账户的账本,里面记录着每一个账户的账户余额是多少,而账户之间的转账就是通过增减每一个账户的余额来完成的,这个账本放在银行系统内部某一台电脑上面。比特币系统也是一个大账本,记录着每一个账户的余额,也是通过余额增减来完成转账操作。但是它这个账本是存放在比特币系统内部的每一台电脑上面的,即系统内的每一台电脑存放着一个完整并且一模一样的账本,这就是我们常说的分布式账本,或者叫做分布式的数据库。这里的“分布式”是指这个账本不是集中存储,而是存储在网络里面的每一台电脑上面。这正是解决“伪造”和“双发”的核心设计。具体如何实现的呢,我们用一个简单的例子来说明:
假设比特币系统有4台电脑,分别是A、B、C、D,他们共同维护一份一模一样的账本。然后,A打算转一个比特币给B,转完之后,A把这个消息同时告诉B、C、D。首先,B、C、D会检查自己的账本确认A是否有足够的比特币,核查后,B和C会同时更新自己的账本,从而转账成功。如果A作弊,它没有一个比特币,或者它想把同一个比特币即转给B、又转给C,这个时候B、C、D都会站出来指出A的转账有问题,拒绝A的转账,即转账不成功。你也许你会说,我偷偷的同时改掉A、B、C、D的账本的余额不就好了吗?
但是如果我告诉你,比特币系统有成千上万台电脑通过自己的算力来维护这个账本,要实现篡改账本,你需要在同一时间之内侵入所有的电脑来完成这一动作,以目前人类已有的计算能力,成功的机会很小,或者说实施的成本高到没有人愿意这么做。而且全网的电脑数量还在快速的增加,账本被篡改的可能性变得越来越低。