阅读本文你将了解到

  1. 货币
  2. 区块链的原理
  3. 比特币如何解决拜占庭将军的问题&重复支付问题
  4. 密码学货币的前景展望

【货币】

让我们先闭上眼睛回到人类文明的早期阶段,想象一个猎人狩猎归来,他收获颇丰,在饱餐一顿后。他手里的鹿肉还有一大半。如果置之不理,一晚上就会腐烂。于是他相处一个好注意,用鹿肉来跟同伴交换兔肉。第一次交换进行的很顺利,他吃到了从未吃过的兔肉。并立即喜欢上了兔子的味道。于是开始频繁的交换。久而久之,他想要交换更多的东西,但他也发现了一个问题,不是所有的人都愿意用鹿肉来跟他交换,有人喜欢兔肉,于是他用鹿肉换来兔肉,再用兔肉来交换他喜爱的铃铛。 但这样的交换成本太高,而且并不总是幸运的交换到自己喜欢的东西,是不是存在一种东西,我们大家都愿意用自己手上的东西跟它交换呢?

没错,它就是货币。

货币的一个重要的特征就是流通。它建立在所有人都信任的基础上。并且货币应该是极难伪造的。 当货币在流通的时候,遇到的一个挑战是,如何防止货币被伪造。

因为总有人想要不劳而获,通过伪造货币来交换想要的东西,一旦货币的制造成本很低,那么,通货膨胀将慢慢的蚕食掉货币在流通中代表的那部分价值,最后变成一文不值的东西。同样没有完善的验证机制,每个人都可以私自制造货币,最终货币泛滥,再也没有人愿意用自己手里真真实实的大米来跟他交换了。所以,货币的另一个重要的特征就是,可以分辨真伪。

【密码学货币·BTC】

假设有一个账本,记录了 [张三持有1000W BCT] 这样的信息。大多数的参与者都认可这条信息,证明张三确实持有了1000W的现金。现在,我们的目的就是让绝大多数人都认可这个账本。

我们可以使用投票机制,假设有100台计算机都各自持有一个账本,其中51台计算机记录了[张三持有1000W BCT] 这样的信息,49台持有[李四 持有1000W BCT]这样的信息。那么,我们认为,张三拥有1000W BCT这条信息是合法的。这里有一个明显的漏洞,就是当有人控制了51台计算机,那么,他就可以篡改信息。(就是著名的拜占庭将军问题)。

现在,我们把所有的交易都想象成一个巨大的账本,这个账本记录了所有的历史交易。在最开始的时候,在这个账本上记录 [张三得到1000W BTC] 这条的信息。 现在大家都认同了这个账本。接下来,交易开始,张三持有了1000W。这个账本将自己的信息通过广播的形式发送到互联网,所有的其他客户端都接收到这个信息,并进行验证。验证成功后,将自己的账本更新为最新的。

每个客户端都想写入一笔交易到账本上,并且他要获得绝大多数客户端的认可。每个客户端都运行着一样的算法检测。当客户端获取到最近的交易信息的时候,他会运行一个hash函数。来证明自己的运算能力更快。证明方法是:

Hash(历史的交易信息+当前的最新交易+随机数)生成的Hash满足某个特定的条件,这个条件决定了获取这个Hash的难易程度,比如Hash的结果必须是00开头。

很明显,在这个Hash算法中,历史的交易信息和当前的最新交易,对于客户端来说都是共享的,他们都持有这样的信息,唯一不同的是,他们要在其他客户端算出满足条件的Hash之前算出它,并打上时间戳,广播出去。这样,就是一个区块。作为奖励,你可以在里面增加一条你拥有25BTC的记录。其他客户端在接收到你的广播后,会验证是否有效。而这样你就拥有了25个BTC(如果你私自改动这个值,其他客户端将会拒绝这个区块,并且这个值在每四年会减少一半)。但2140之后,打包区块将不会获得BTC。因为总量被设置了2100万个被分配完毕,收益只是交易创建者支付的手续费。

这里每个CPU都真实的付出了劳动(proof-of-work),它们消耗了电力和资源来产生一个满足要求的随机数。并没有任何投机取巧的办法能获得这个随机数,唯一的方案就是暴力遍历匹配。这个的灵感来自于Hashcash,它很难被找到但很容易被验证。所以,最快算出结果的那个客户端,就创建了一个区块。这个区块里包含了若干条交易记录。 比特币的区块大约每十分钟产生一个。截止目前,每个大小约1M的限制。

一旦A接收到来自B的广播,声称自己发现了新的满足要求的随机数,A就会进行验证,通过后,将新的区块连接到旧的区块上,并将这个消息广播出去。而连接若干个的区块形成一个链条。就是区块链。 当诚实的节点站绝大多数的时候,这个由于无数个计算机节点构成的P2P网络,是可以信任的。而每一台客户端都拥有一个完整的账本。

比特币本身代表了互联网架构下无数人构建起的、没有中央集权的信任网,这个信任不被任何政府和机构控制。所有的节点都扮演了监督的决策,每一笔交易都有迹可循。就像是对黄金的信任是因为黄金极难获得且难以伪造,比特币需要消耗大量的计算才能获得。然而,随着计算难度的加大,没有客户端愿意在于计算。

在解决重复支付的问题上,当一个比特币被重复支付的时候,那一条交易被接受取决于被最先加入到区块链上的区块包含了你的那一条交易信息。剩下的交易信息将会丢弃。

未来的支付场景多样化,密码学货币本身面临着巨大的机遇和挑战。一个威胁是加密算法将不在安全。可以肯定的一点是,任何人都无法停止它。它已经正在互联网这篇肥沃的土地上自由的野蛮生长了……

References

(BTC 论文)[https://bitcoin.org/bitcoin.pdf]