微信公号:辉光日新i(hgrx2017);
已进行数字签名版权保护;
转载请注明出处。
孙宁辉0026篇原创
当我见到小明时,他已昏睡在桌子上,头上还落着几片花瓣。
喂,醒醒!不是约好今晚陪女朋友看电影吗,还不快准备一下?
小明揉揉眼说道:我从昨天就开始准备了,不但买好了花,还给她转了一些常常念叨的比特币想来个惊喜。
可是你看,小明拿起头上的花瓣说:我等得花儿都谢了也没见确认到账!
我惊讶地问:你转账的时候出矿工费了吗?等多久啦?
小明无力地回道:还要给矿工费啊?都快等一天了,为什么比特币转个账这么慢呀?!
好吧,看来要好好地说道一下了,免得耽误你大事。
关于区块
“区块”就像是一个集装箱,它里面装满了交易记录。你给女朋友转账比特币就是一笔交易记录,也会被永久记录在区块(集装箱)里。
实际上我们平时所说的“区块链”并不是像链条一样延伸开来,而是像由区块堆叠起来的、高度不断增加的高塔。
所谓“块的高度”,就是指这个区块距创世区块(一楼)的高度。
而一个块的深度,则是指这个区块距当前最新区块的距离。
图片来自《精通比特币》
交易信息的优先级
不要以为只要是交易信息就可以一拥而上地挤进区块(集装箱),负责装箱的矿工可是有着一系列的挑选规则。
当交易信息的大军瞬间涌入矿工节点时,会被安排到内存池中等待分配,有点像堆在仓库的包裹等待被挑捡装箱。
负责装箱的矿工节点(实际为程序)会根据设定的优先级来区分先后,以装满一个新区块(集装箱)。
那么这个优先级的标准是什么呢?
优先级=交易金额×排队时间÷交易信息大小。
交易金额,因为比特币可以分割到小数点后八位的特性,所以交易金额可不是1比特币,而是1聪(即1个比特币的1亿分之一)。
金额越大越优先,这个我们都懂的。
排队时间,即交易的“块龄”,就是该交易记录在内存池(仓库)中等待被记录(装箱)所经历过的区块数。
比如,一个交易记录被放到内存池中等待装箱,这时它的块龄为0。
如果眼巴巴看着50个区块(集装箱)都被填装好并放上高塔,这个倒霉蛋还停在原地,那么它的块龄就涨到50了。
交易信息大小,记录交易信息的字节数,单位是byte(比特)。因为每笔交易是不一样的,所以交易信息的大小也就不同。
小明转账给女朋友的交易比较简单,交易信息大概在250bytes;如果是小明的老板用比特币给员工发工资,那这笔交易信息可就大多了。
每笔交易都想成为“较高优先级”,但这需要满足几个条件:
交易金额大于1个比特币(1亿聪);
块龄为144个区块(1天时间);
交易信息在250bytes以上。
为什么大家都愿意争抢“较高优先级”的身份呢?
这是因为在区块(集装箱)中,专门预留了50k字节的空间给“较高优先级”的交易,即便没有矿工费也会被优先处理。
其余的交易信息,会被矿工节点按照“每千字节矿工费”的高低来排序----价高者优待嘛。
假如这个时间段里,区块(集装箱)里还有剩余的空间,才会收纳那些不给矿工费的交易。
之间提到的那个块龄为50的倒霉蛋,就是苦等了50个集装箱都没遇到这样的好事。
一个区块(集装箱)的大小为1M,虽然看着感觉不大,但它可以装下2000多笔交易呢。
当一个区块(集装箱)被装满后,内存池(仓库)中剩下的交易就等候下一个区块(集装箱)来排序装箱。
整个过程就是如此重复着。
矿工费的价值
我看了一眼小明,继续说道:剩下的那些普通的、没有矿工费的交易,很容易被一次次地无视在区块之外。
“哦,原来给不给小费的差距竟然这么大呀!”小明终于明白过来了。
不过如果对交易确认的时间不敏感,也可以多等些时间。
等待时间越长,交易记录的“块龄”也就越大,优先值也随之增加。一旦满足了优先级,就会被免费装进区块里啦。
得了吧,还是女朋友重要!
我这就重新转账,再多出点矿工费,哼!
……咦?原来10分钟前交易已经确认了呀,太好了!
小明兴奋地照了下镜子冲我说:帮我关门啊哥!
随即一阵风地没影了。
我理了一下被吹乱的头发,感叹道:
爱情的力量果然强大!
参考资料:
《精通比特币》Andreas M Antonopoulos
这篇文章的PRESS.one 签名:
一己之谈,仅供参考。
领取 专属20元代金券
Get大咖技术交流圈