比特币的旷工是怎么记账的呢?
之前我们已经有过了解:区块链技术是为了同步比特币的账本。那么,旷工是怎么记账的呢?
继续我们的比特村的故事。
首先我们了解几个名词
身份与签名机制(公钥加密系统):在这套机制下,任何人都使用代号交易,并通过保密章证明是代号本人操作,保密章之后可以被系统识别出来。
虚拟矿工组织(挖矿群体):旷工可以根据“挖矿”的绩效获得对应的报酬。矿工可以随时退出,也可以随时有新的矿工加进来。
建立初始账本(创世块):每个村民可以根据自己的黄金数量,从系统处获得对应的比特币,以此作为比特币账本的第一页。
接着说说比特币交易的步骤
以老张付给老李10个比特币为例:
1、为了支付10个比特币,老张首先要询问老李的代号,例如是“ABCDEFG”,同时老张也有一个代号比如是“HIJKLMN”,然后老张写一张支付的单子,签上自己的保密章。
2、老李用系统扫描这个保密章,证实是“HIJKLMN”这个人(也就是老张)签署的交易单,于是把这个交易单发给旷工。
3、旷工根据这个交易单,计算新的账本。第一个算出来的旷工把更新后的账本同步给所有旷工。
4、交易完成。
在这篇文章里,我们着重介绍整个系统中复杂性最高的地方——在第三个步骤里,旷工是怎么计算新的账本的。
旷工的工具:
最新的账本:每个旷工一开始都有一本初始账本,随着交易的增多,每个旷工都需要及时更新最新的账本。
空账本纸:每个矿工都有一些空账本纸方便记账。按照规定的要求填入了内容之后就可以生效。
编码生成器(哈希函数):生成器会在账簿纸的“本账单编号”一栏自动打印一串由“0”和“1”组成的编号,共256个。
编号生成器有如下功能:
内容相同的账本纸生成的编号总是相同,但是如果内容哪怕只改一个字符,编号就会面目全非
这个编号无法伪造。将一张账本纸放入,机器会判定编号是否是有效,并且判定编号和内容是否一致
(空账本纸)
矿工的工作:
矿工们收到交易单后,马上填写新的账本。他们把交易单的内容填写到“交易清单”一栏,把自己最新账本的最后一页的编号抄写到“上一张账单编号一栏”。 注意还有个“幸运数字”,可以随便填上一个数字,如12345。然后,将这样账本纸放入编号生成器,打印好编号,一张账本就算完成了。
如果你以为矿工的工作就这么简单,那就大错特错了。中本聪有个变态的规定:只有编号的前10个数均为0,这页账本纸才算有效。
根据之前对编号生成器的描述,要修改编号,只能修改账本纸的内容,而“交易清单”和“上一张账单编号”是不能修改的,那么只能改幸运数字了。于是为了生成有效的账本纸,小组里的矿工就不断更改幸运数字,然后不断地生成编号,直到生成一串有效的编号。
这就奇怪了,这些矿工为什么要拼命干这看似无意义的事情呢?还记得之前说过矿工有报酬吧,这就是矿工的动力了。中本聪规定:每一张账本纸的交易清单第一条交易为“系统给这个小组支付50个比特币”。也就是说,如果你生成了一张有意义的账本纸,并且被所有挖矿小组接受了,那么就意味着这条交易也被接受了,你的挖矿小组获得了50个比特币。
这就是矿工被叫做矿工的原因,也是为什么之前说随着交易和矿工的活动,比特币的数量会不断增多。例如下面是一个挖矿过程,这个小组的公共比特币帐号为“UVWXYZ”。
(在幸运数字尝试到“533”时,系统生成了一页有效账本)
当某挖矿小组幸运的生成了一张有意义的账本,为了得到奖励,必须立刻请其它小组确认自己的工作。
当某个小组接到其他小组送来的账本纸时,需要确认的信息有三个:
·账本的编号有效
·账本的前一页账本有效
·交易清单有效
第一点把账本纸放入编码生成器进行验证即可;第二点需要对比自己小组的最新账本的最后一页编号即可;第三点确认当前每笔交易的付款人有足够余额即可。如果三点都确认成功,该小组会承认这一页账本并更新自己的账本。
PS:
1、故事只表达关键原理,细节并不完全相同。
2、交易平台做中间代理时,与该机制有出入。