我们知道所有的计算和存储都需要消耗计算机资源。既然要付出成本,为什么节点要参与记账?在中本聪(比特币之父)的设计中,完成记账的节点可以获得系统给予的一定数量的比特币奖励。这个奖励的过程也是比特币的发行过程,所以大家形象地把记账叫做"采矿"。本文将详细讨论这一过程。
记账工作
因为记账有奖励。每次记账都可以凭空增加一定数量的比特币(目前是12.5个比特币,写博文的时候每个比特币是4万多人民币,可以算算有多少钱),所以就出现了记账的争夺战。一起记账会出问题:会出现记账不一致的情况。比特币系统引入工作量证明来解决这个问题。规则如下:
一段时间内(10分钟左右,具体时间会和密码学问题的难度相互作用)只能有一个人记账成功。
通过解决密码学问题获得唯一记账权(即工作量证明)竞赛
其他节点复制记账结果
但是,在工作量证明之前,记账节点会做以下准备:
收集广播账簿中未记录的原始交易信息
检查每笔交易信息中的支付地址是否有足够的余额
验证交易是否有正确的签名
包并记录验证后的交易信息
。添加奖励交易:向你的地址添加12.5个比特币
如果节点成功争夺账号的权利,可以获得12.5个比特币的奖励。
工作量证明
从区块链簿记原理我们知道,每次记账时,最后一块的哈希值和当前账页信息作为哈希的原始信息。
如果那个';所有,它';很明显,每个人都可以很容易地完成记账。
为了保证10分钟左右只有一个人记账,需要增加记账的难度,这样哈希的结果必须以几个零开头。为了满足这个条件,哈希时引入了一个随机数变量。
用伪代码表示:
#没有难度的时候是:Hash(上一个哈希值,事务记录集)=456635BCD
Hash(上一个哈希值,事务记录集,随机数)=0000aFD635BCD
。我们知道,如果Hash原始信息的任何一部分发生变化,Hash的值也会不断变化,所以计算Hash时随机数的值也会不断变化。一个总能找到的随机数使哈希结果以几个零开始(以下简称猜测),最先找到随机数的节点获得唯一记账权。计算分析
(这部分可以看)让';让我们简单分析一下记账有多难。
哈希值是由数字和大小写字母组成的字符串,每一位有62种可能(可能是26个大写字母,26个小写字母,也可能是10个数字中的任意一个)。假设任意一个字符出现的概率相等,第一位为0的概率为1/62(不考虑其他位出现什么字符)。理论上,需要62次哈希运算才能出现一次。如果前两位是0,你要尝试62的平方哈希运算,你需要尝试从n个零开始的62的n次方运算。让';让我们来看看当前的实际块#493050信息:
注:数据源
我们可以看到哈希值是以18个零开始的。理论上,我们需要尝试62的18次方。这个数字非常非常巨大,我可以';我想不清楚。应该在1亿以上。。如此大的计算量需要大量的计算设备、电力等。
目前应该没有单个矿工独立参与开采,基本上所有矿工联合起来组成矿池进行开采(矿池中的矿工按照计算能力的百分比分享收益)。
从经济学的角度来看,只有当挖矿有利润时(比特币价格的上涨也让利润变大),新的矿工才会加入,这将加剧竞争,提高计算难度。挖矿会需要更多的计算和电力,最终的成本会因为交互而接近利润。
题外话:在中国,由于较低的电力成本和较高的相对收入,中国';s计算能力占全网一半以上
验证
节点成功找到满意的哈希值后,会立即对全网进行广播和打包。网络的节点将在接收到广播包块后立即对其进行验证。
如果验证成功,则意味着某个节点成功解谜,不再争夺当前块包,而是选择接受这个块,并记录在自己的账本中。,然后是下一块竞猜。
只有网络中能最快解出谜题的区块才会被添加到账本中,其他节点都会被复制,这样就保证了整个账本的唯一性。
如果节点有任何欺骗行为,,会导致网络的节点验证失败,直接丢弃自己打包的块,不会记入总账,作弊节点的成本也就浪费了。因此,在巨大的挖矿成本下,矿工会自觉自愿地遵守比特币系统的共识协议。,保证了整个系统的安全性。
说明
矿工';收入实际上不仅包括新发放的12.5比特币奖励,还包括交易手续费收入(本文为了让主干更清晰,忽略了一些细节)。
感兴趣的同学可以看看图中方块所包含的信息,红色箭头表示本文涉及的信息。
本文中提到了一个共识协议。比特币共识协议主要由工作量证明和最长链机制组成。后面会有文章详细讲解。