本期重点介绍比特币白皮书,对其有所了解的读者可以跳过。
最后,上一期提到中本聪在2008年发明了比特币(次年正式推出创世区块),那么比特币到底是什么?让& # 039;让我们先来看看中本聪& # 039;s自己在白皮书中的表述:完全通过点对点技术实现的电子现金系统。它使网上支付能够由一方直接发起,支付给另一方,中间不经过任何金融机构。综上所述,比特币是一个去中心化的P2P支付系统。重点是点对点电子支付系统已经存在很久了,比特币和传统P2P支付系统的核心区别是& quot分散化& quot。
在传统的财务体系下,记账是由一个可信的第三方机构进行的。比如你在银行存100元,你存款的数据只记录在银行& # 039;只有银行保留交易记录。这是典型的集中记账。那么比特币是如何实现支付过程去中心化的呢?中本聪巧妙地利用分布式存储、链式数据结构、密码学(非对称加密)和POS工作量证明机制(共识算法)构建了一个新的操作系统,从而实现了& quot分散记账& quot;简单来说,比特币产生的每一笔交易,都会被所有节点记录下来,也就是每个人都有一个完整的账本。然而,这也引出了一系列问题:如何保证交易记录的真实性?如何保证交易记录的顺序(防止双花)?如何保证所有账本的一致性?如何保证账本不会被篡改?
为了解决记账的真实性,需要向所有节点公开交易记录,每个节点可以反向验证任何交易。中本聪通过引入非对称加密解决了这个问题。系统中的每笔交易都被定义为一段加密数据(记录)。在交易过程中,需要与收款人创建新的交易记录(包含从最后一个付款人处收到的信息& # 039;的公钥(具体来说,是基于公钥生成的钱包地址),并将数字签名添加到带有付款人的记录中& # 039;的私钥(其他人可以通过付款人验证签名& # 039;s公钥),从而将比特币的所有权转移给收款人(因为收款人& # 039;的私钥可以解锁这个加密的数据),这样就形成了一个交易链。
那么如何确定交易完成的顺序呢?中本聪给出的解决方案是用& quot时间戳服务器& quot以块的形式随机散列一组数据,然后标记它们。每个块的时间戳将被添加到其随机哈希值中的前一个块的时间戳中,从而形成时间序列上的数据链。从而确保交易的清晰顺序。
同时,交易发起过程中会广播全网(基于P2P网络协议),每个节点会将收到的交易信息包含到一个块中。那么谁有权利记录这些数据呢?这里使用了前面提到的工作量证明机制(POS)。简单来说,在进行随机哈希运算时,引入一个数学解问题(比如SHA256,消耗大量CPU时间和功率),最先找到这个解的节点获得记账权。这个解决方案需要很多操作,但是验证只需要一次。而且在分块中加入了一个随机数(Nonce),可以自动调整求解难度。
这个方案一旦被大多数节点确认,这个块的信息就不能更改了。由于后面的块都是在这个块之后链接的,如果要更改这个块中的信息,就要更改后面的所有块,这就需要很大的计算能力(但如果只是更改最后一个块,难度会小很多,所以一个事务只有连续确认了六个块才会被认为是基本不可逆的),这样就增加了node & # 039大大降低了篡改账簿的风险。但是,这可以& # 039;我不能保证绝对安全。如果有人掌握了全网51%的计算能力,那么从概率的角度来看,他会更容易优先考虑计算成功,这样他就可以伪造一个假链来代替主链,交易就会被篡改。也就是传说中的& quot51%的攻击& quot。攻击者的比例越高& # 039;计算能力越强,攻击成功的概率越大。
由于网络环境的复杂性,总会有多个节点同时广播不同版本的新块,因此其他节点接收这些块的时间也不同。此时,它们将在第一个接收到的块的基础上工作,但它们也会保留其他链(分叉),直到找到下一个工作负载,并且其中一个链被证明是更长的一个,那么在分支链上工作的节点将切换到更长的链上继续工作(合并),其他分叉将被放弃。比特币中的区块链是一个不断分支、合并、分支、合并的过程,最长的是系统认可的区块链。
如上所述,获得记账权需要很大的计算能力,整个系统有& quot被51%的人攻击& quot。那么如何才能保证比特币系统能够安全有效的运行呢?我不得不说中本聪是一个真正的天才。他通过设计独特的奖励机制,从经济学的角度很好地解决了这些问题。成功记账(挖矿)可以获得大量的比特币奖励(相比转账时收取很少的费用),这就给了节点争夺记账权的动力,保证了交易的正常进行。同时,对于51%的攻击者来说,即使实现了计算攻击,整个系统的价值也会崩溃,因此攻击获得的比特币没有任何意义,攻击过程中付出的大量硬件资源和电费都会成为巨大的损失。对于超级计算能力拥有者(主要是矿池)来说,攻击从经济成本的角度来看完全不经济。他们有更好的盈利方式:通过硬分叉比特币(分叉币)凭空创造财富。而且这种奖励机制巧妙地解决了代币产生和流入市场的问题。谁付出资源谁就得到代币,这也可能是对全球央行货币体系的反击。
中本聪一直认为,过量的货币是一种& quot掠夺& quot的公共财富,所以他将比特币的数量设定为恒定的2100万(这带来了系统性通货紧缩)。同时,为了使价值易于组合和分割,交易被设计成包括多个输入和输出。一般来说,是由价值较高的前一笔交易组成的单一输入,或者是由价值较低的前几笔交易组成的平行输入,但最多只有两个输出:一个是支付,一个是找零(如果有的话)。需要指出的是,大量的事务是相互依赖的,但是上述技术方案(链结构、时间戳、公钥和私钥签名、POW等。)保证当前交易数据的真实性,所以没有必要开始测试之前发生的所有交易历史。
随着比特币交易的日益频繁,积累的交易信息越来越多,这显然给数据存储带来了压力,因此中本聪设计了存储空间回收机制。当最新的事务包含在足够多的块中时,可以丢弃事务之前的数据以回收存储空间;同时,为了保证块的随机散列值不被破坏,在对交易信息进行随机散列时,将其构造成一棵Merkel树(Merkle Tree是一种存储散列值的树结构。块中的每个事务计算一个哈希值,然后成对连接再次计算该哈希值,一直到顶部根哈希值),这样,块的随机哈希值中只包含根哈希值。通过拔出树的分支(只保留最后一个事务的Hash和其他非叶子节点),可以压缩旧块,从而大大减少系统占用的存储空间。
由于Merkle算法的特点,轻节点(SPV节点,它不& # 039;不需要存储整个区块链数据,可以& # 039;t记账)也可以查询付款。节点只需要保存最长工作量证明链的块头的数据(没有事务信息的块头的大小只有80字节),它可以不断地向网络查询,直到确信自己有最长的链,并可以通过Merkle树的分支导致它被打上时间戳并包含在块中的事务。这样就可以看出某个节点已经接受了,之后添加的块进一步证明全网都接受了,从而快速检验交易的有效性。
由于交易是向全网广播的,所以必须采取特殊的隐私政策来保护用户:通过保持公钥匿名,公众只能知道有若干比特币从支付地址转移到收款地址,而无法知道具体的收款人,从而保证了用户的隐私。作为额外的预防措施,用户可以要求每个交易生成一个新的地址,以确保这些交易不会追溯到一个共同的所有者。但是,由于平行输入的存在,一定程度的可追溯性是不可避免的,因为平行输入表明这些货币都属于同一所有者。这时,风险在于,如果一个人& # 039;的公钥被确认是属于他的,那么这个人的许多其他交易都可以被追溯。
坚持在这里的读者应该对比特币系统有了基本的了解。我简单总结一下:比特币是利用分布式存储、链式数据结构、非对称加密、POW共识机制、P2P联网等一系列技术组合而成的去中心化、自运行的金融体系。实现了数字货币的自主发行、匿名交易和公开记账。这一期的内容很多。之后,我将带你了解更多关于比特币及其底层技术——区块链的知识,敬请关注。
(本文来自GetNo。我不& # 039;我不知道夜晚天空的白色。下次预览:《“比特币”的价值及其流通》)