比特币白皮书笔记

交易

       每一位所有者通过对前一次交易和下一位拥有者的公钥 签署一个随机散列的数字签名,并将这些信息附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。收款人通过对签名进行检验,就能够验证该串数字签名的所有者。

比特币白皮书笔记

存在问题:双重支付

时间戳服务器

解决方案:时间戳服务器

        时间戳服务器通过对以区块(block)形式存在的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,就像在新闻或世界性新闻组网络(Usenet)的发帖一样 。显然,该时间戳能够证实特定数据必然于某特定时间是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(reinforcing),这样就形成了一个链条(Chain)。

 

比特币白皮书笔记

工作量证明

        在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制。只要该CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。

网络

        如果两个节点同时广播下一个区块的不同版本,一些节点可能首先接收其中一个。在这种情况下,它们在收到的第一个分支上工作,但是会保存另一个分支,以防它变成更长的链。当发现下一个工作量证明,其中一个分支变长时,僵局就会打破,在另一个分支上工作的节点将切换到较长的分支。

        新的交易广播不一定需要到达所有节点。只要它们到达足够多的节点,就会很快进入一个区块中。区块的广播对被丢弃的信息是具有容错能力的。如果一个节点没有接收到一个区块,它将在接收到下一个块时意识到它错过了一个区块,然后请求下载该区块。

激励

        每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。另一个激励来源也可以是交易费用。如果一个交易的输出值小于它的输入值,那么差额就是交易费,该交易费将被加到包含该交易的区块的激励中。

回收硬盘空间

如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前使用的数据以节省磁盘空间。

简化的付款确认

在确定最长链条后,通过追溯到链条的某个位置,它就能看到某个节点曾经接受过它,并且于其后追加的区块也进一步证明全网曾经接受了它。

价值的组合与分割

交易被设计为可以包含多个输入和输出。一般而言是某次价值较大的前次交易构成的单一输入,或者由某几个价值较小的前次交易共同构成的并行输入,但是输出最多只有两个:一个用于支付,另一个用于找零(如有,则返回给发送者)

需要注意扇出,当一笔交易依赖于之前的多笔交易时,这些交易又各自依赖于多笔交易,但这并不存在任何问题。因为这个工作机制并不需要展开检验之前发生的所有交易历史。

隐私

比特币白皮书笔记

计算

随着攻击者必须赶上的块数的增加,概率呈指数级下降