交易费
交易费是比特币的第二个奖励机制。任何交易的制造者都可以选择让交易输出值比输入值小,即你支付出去的比特币数额要比接收方收到的比特币数额大,中间的差值就是交易费——gas。第一个创建区块把交易放进区块链的人可以取得这个交易费。如果你是一个节点,正在创建一个包含200笔交易的区块,那么这200笔交易的交易费将会被付到你放在区块内的那个地址。这些交易费完全自愿的,不过也得取决于比特币网络的拥堵情况,拥堵越严重,就需要支付更高的交易费才能完成这笔交易。
我们在描述共识机制时还有一些问题没有解答。第一个主要问题是我们要你相信这样的假设:我们能随机选取一个节点。第二个是因奖励那些节点参与而产生的新问题:如果大家都想来分一杯羹成为一个节点来获得这些奖励的话,整个系统会变得不稳定。第三个是第二个问题的复杂版,就是可能会有攻击者创建大量的女巫节点来尝试颠覆整个共识过程。因为这个交易费也是极为可观。
挖矿与工作量证明
事实证明,这些问题都是相互联系的,所有这些问题都有相同的解决办法——工作量证明 (proof of work)。工作量证明的核心理念是,我们把随机选取节点改为根据节点占有某种资源的比例来选取节点,我们希望这种资源是没有人可以垄断的。比如说,如果这个资源是计算能力,那我们称之为工作量证明系统。
我们试着更好地理解根据计算能力来选择节点到底是什么意思。换一个角度理解,我们是允许节点用它们的计算能力来互相竞争,导致的结果是计算能力的比例决定了节点被自动选中的概率。工作量证明还有一种理解方式,即我们把制造新身份的难度适度提高了。这就好像是对制造新身份,继而对女巫攻击收税一样。这听起来好像有点模糊,我们接下来看下比特币使用时工作量证明体系的细节,事情就变得清楚多了。
比特币是用哈希函数解谜来证明工作量的。任何一个提议并创建区块的节点想要制造下一块,这个节点必须要找到一个数,或者我们把它称为临时随机数。当你把这个临时随机数、前序块的哈希值还有要填进这个区块的交易列表连接起来,组成一整串字符,然后用哈希函数计算这一整串字符的输出值,这个输出值正好要落在一个相对于这个哈希函数所有可能的输出中很小的目标区间内。用公式来表示的话,就是临时随机数要满足下面的不等式,才算成功。
H(nonceǁprev_hashǁtxǁtxǁ…ǁtx) < target
就像我们前面看到的,通常一个区块会包含这个节点提议的一系列交易。而且,这个区块还会包含一个指向前序区块的哈希指针。除此之外,我们现在还要求区块包含一个临时随机数。这个想法是为了适度提高发现符合要求的临时随机数的难度,即把包含临时随机数在内的整个区块的哈希值组合到一起,输出结果要是一种特定的形式。如果哈希函数符合谜题友好特性,那唯一解出哈希谜题的办法就是去试足够多的临时随机数,直到成功为止。具体来说,如果这个目标区域是所有可能的输出的1%,那你大概就要试100次才可能成功。事实上,这个目标区域远比输出范围的1%小得多得多,毕竟全球有那么多的矿机在争抢制造区块,来获取其中巨额的奖励。
用这种哈希函数解谜以及工作量证明的办法,我们可以完全舍弃采取那种随机选取节点的办法。这些节点在竞争哈希函数解谜的过程中一直都是互相独立的。有时一个节点鸿运当头,正好发现一个临时随机数可以满足要求。这个幸运的节点就可以提议创建下一个区块了。这就是比特币系统实现完全去中心化的方式,没有任何人能决定谁可以提交下一区块。
网友评论