挖矿那一块看不明白
假如某天东先生给了1000老婆大人,他只要在向全家人大吼一声——东先生给了东夫人1000,请大家在各自的账本上记下“东先生给了东夫人1000”,就OK了。
这个系统完全不需要银行($银行B(SZ150228)$ 默泪),也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系。比如东夫人某天忽然说东先生没给她1000,全家人都会站起来斥责她。
于是东先生全家每个人都成了一个节点,每次东先生家的交易都会被每个人(每个节点)记录下来,形成一个公共的账本(东先生全家人手一份)。可这为什么叫区块链呢。
原因是这样的:东先生全家人手一份的公共账本,每10分钟(以比特币为例)内的交易记录打包起来形成一个块,这个账本是由一个接一个的块链接起来的(可以简单理解成账本的每一页)。于是命名为区块链。
两个概念:
1、区块链中的块:公共账本中每10分钟打包起来的交易包。
2、节点:参与交易的区块链中的网络节点。
剩下两个问题:
1、公共账本的每个交易包结构保证不被篡改,凭什么?
2、每个人(每个节点)都参与打包,凭什么?
【问题一:保证不被篡改】
问题的答案为:非不可,是不能也。改起来太难,所以改不了。
为什么呢?看交易包的结构:
每个交易包都包含了4部分内容,其中有一个限制区块生产时间的参数(每个区块不一样)限制了最新每个区块需全网计算能力大约10分钟(以比特币为例)时间才能形成这个模块。
如果东夫人需要就“东先生支付1000”这条信息伪造出一条“东先生支付50”的记录,那么她必须在随后的时间内伪造其他全网的交易记录,以保证她伪造出来的伪区块链的长度能长过真实的区块链长度,全网的计算力才会向伪区块链倾斜,否则鸟都不会鸟她。
换句话说,在她伪造的区块链未完成超越前(此时全网其他交易记录还在进行),东夫人需要蜉蝣撼大树,以一己之力完成全网计算力的超越。
理论上,除非东夫人拥有全网计算力的51%以上,否则很难控制区块链的记账权。
【问题二:每个人都参与打包】
问题的答案为:可以不参与,等别人打包好复印一份就行,但参与有好处。
交易包打包的过程在区块链中被称为“挖矿”。
参与挖矿的人(节点)被称为“矿工”。
每当有一个新的区块即将形成前,矿工们(比如东先生,东夫人,东奶奶)可以参与挖矿。挖矿的过程实际上就是解一道数学题。题解出来了,交易包就打好了,新的区块就建成了。解出来的那个人就有钱拿。
当然,解完题的人(节点)需要大吼一声:“我解完了,你们可以验证,验证完没事就赶紧把这个交易包也复制到你们账本上,然后我们一起去搞下一个吧。”
懒人如东爷爷(没参与解题),也可以在这时候参与验证,再把交易复制过去。验证可比亲自打包容易多了,以比特币为例,就有一个简化确认(SPV)机制。
看到这,区块链的工作原理就差不多了。
-------------------------------------------------------------------------------------------------------------------------
【延伸阅读】
当然,可能阅读完上文后还存在许多细节上的困惑。在此前,需要额外介绍三种东西:
1、哈希算法;2、数字签名;3、工作量证明
【哈希算法】
1、介绍:
这家伙有点像压缩工具。它能将两个输入交易消息压缩成一个哈希值(一串没有任何意义的数据)。别看它功能简单,它可是美国国家标准与技术研究院发布的。具备以下特性:
A、抗碰撞性:两个不同的消息在同一个哈希函数作用下的输出不可能相同。
B、原像不可逆:不可能经过哈希值倒推输入消息。
C、难题友好性:没有便捷的方法产生一个指定的哈希值。
2、应用:
A、结合“挖矿难度随机数”卡住每个区块的生成时间。
还记得前面提及的“限制区块生产时间的参数”和“矿工们”吗?
当矿工们在挖矿时,实际上就是用计算机从0开始遍历,寻找一个数(图中???)来和挖矿难度随机数搭配,经过哈希算法后,能得出前面N个0的数(多少个0由全网动态调整)。调节哈希值的前面0的个数,就能在越来越多人参与挖矿时,卡住平均10分钟的节奏。
B、压缩交易信息
在区块构成中,包含了一个叫MERKLE根的家伙,这个家伙本包含了该段时间(比特币:10分钟)内发生的全部交易记录。压缩过程如下:
3、至此,一个区块的所有内容浮出水面。
【数字签名】
这家伙和现实中的签名有点像。现实中签名是对某份文件,它可以做到对一条交易信息。
签名前,东先生需输入两个要素:要签名的信息,私有钥匙;
签名后,东先生可以得到经过签名的信息摘要;
随后,东先生将摘要及签名的信息告诉全家人,全家人可以用东先生的公用钥匙(东先生在全网的唯一标志)进行真实性验证。
每条信息都经过签名后,矿工们(东先生,东夫人,东奶奶)才能安心地进行挖矿,最后将该时间段内的交易写入区块。
【工作量证明】
这家伙其实说的就是东先生全家如何在挖矿一事上达成一致。
当东先生挖矿得出对应挖矿随机数的解时,会广播全家,请求大家验证。
一旦验证通过,全家就会放弃对该区块的挖矿,区块就形成。借助于上节的数字签名,东先生也会对该区块进行签名,并且获得对应的系统奖励。
【各种链】
私有链:私有组织所使用的区块链,比如上面的东先生一家。目前很多金融组织在研究。
联盟链:仅限于联盟内使用的区块链,比如当前央妈在研究的。
公共链:全球范围内的区块链,比如比特币。
各种链之间并非是完全隔绝的,可以利用类似沪港通深港通等互联互通机制进行打通,这个也被称为互联链。
$恒生电子(SH600570)$ $金证股份(SH600446)$
@天才之豆 @starshaw @深圳红树林 @ass4370 @king-comet @贵阳小米 @深圳忧郁王子 @东方牛牛N @xxcc蜗牛 @今日话题