导语
老拙文科出身,技术素人。如果能在5分钟内说清楚区块链,那么其他小白应该可以在五分钟内理解。
第一部分:区块链的形成机理
技术点说,区块链是一个去中心化的分布式记账系统。
通俗点说,就是许多人争着抢着为某些人的交易进行记录。
为什么争着抢着?因为有报酬。
通常所说的矿工,其实就是一个记账员。通常所说的挖矿,就是一个提供账本,记录交易的过程。
首先,你要证明你有提供账本和记账的能力。技术点说,你要先解一个哈希函数,来证明你有能力;
随后,你要生产一张用于记账的账页纸,方便在上面记账。这张账页纸,就是区块。每提供一张账页纸(一个区块),系统就会自动给你12.5个比特币作为奖励。不要问这些钱是哪儿来的,是系统自动印出来的,与印刷人民纸相同。
次后,你可以根据某些人的要求,把他们的交易记录在这些账页纸(区块)上。要求你记录交易的人会向你支付记录费用。出价高的,记账员们会抢着记录。如果费用出得低,你可以不抢这个单,其他记账员谁愿记录谁记录。
再后,交易记录完了,就需要把记载交易内容的账页纸给穿起来,订成账册。这就形成了“区块链”。
再后,这些穿起来的账册,分别有不同的版本储存在不同的记账员那里,这就是“分布式记账”。如果某一个记账员的账册记错了,那么这个账册就会作废,不能再继续记录。怎么知道你记错了呢?因为你的账册与其他多数记账员保存的账册不一致,你就会被认为是借的。
这就是投票机制。
再后,如果你心存恶念,在记账时把“张三欠李四100万”,有意写成“张三欠我100万”怎么办?这就需要一个验证密码,即所谓的“公钥”和“私钥”。
第一步:先“哈希”一下
你想成为一个记账员,想去记账,想赚钱。所以你必须先解一个问题(solve a puzzle),以证明你有记账的能力,这叫工作证明(Proof of Work)。
你要解决的这个问题,首先肯定不能太容易,否则大家就都来做记账员了。但结果要非常容易验证,否则验证的成本与记账相同,这个记账就没有意义。
这个被解决的问题,就是要先解一个哈希函数。
哈希函数是一种散列函数。至于什么是散列函数,老拙不知道,反正是不管你输入什么内容,多少内容,最终都会出现一个固定数位的输出值。例如,我输入了一个词“anders”在表内,马上就出现了下面红框内的一组固定数字。这组数字,就是“anders”的哈希值。
别问我为什么一个“anders",会变成下面这一串数字?
爸爸妈妈为什么生的是你而不是他,难道非要查出基因图谱来吗?反正这是一种很高深莫测的算法。
如果输入的是海量的数据,如下图所示,哪怕输入的是一整座图书馆的数据,得到的同样是一组固定数字的哈希值。
你瞧,数字不一样了吧?数字很长,看前四位就能判断了。
哦,忘了告诉你,哈希函数是一个单向散列函数。也就是,你输入的记录能得出一组数字,但你根据得出的数字,却不能反向推出输入的记录。这一点不要忘记。
第二步:生产一页记账纸(区块)
赚钱记账的最好手段,其实不是记账,而是生产记账用纸,也就是创建“新区块”(block)。
区块是怎么建的呢?很简单,你只要能解出一个前四位都是零的哈希值,就能建一个新区块。
解这个哈希值的过程,就是一个挖矿的过程。
例如,我们找到了一个前四位为“零”的随机数,就创建了名称为“1”的记账纸,也就是“区块”。随后,我们把别人要记录的交易内容,例如“hi”,记进了区块,哈希值随之改变,前四位极可能就不再是“零”了。因此,作为一个敬业的矿工,我们要再开启一段”挖矿“旅程,找出一个新的前四位为“零”的随机数(Nonce),经计算,这个值是59396。
我们每“挖”出一个新的区块,系统就自动给我们12.5个比特币作为奖励。这个制度设计很巧妙,考虑了无利不起早的人性。
第三步:把这些记账纸串成账册(区块链)
我们现在记好了第一页账单,接下来要记下一页了。
但这两个区块怎么连接呢?
每个区块都有两个哈希值。第一个是前一区块的哈希值,就是区块1中的“0000000”;第二个是本区块的哈希值,就是“00001578”。第二个区块中的第一个哈希值,就是“00001578”,与前一个区块的第二个哈希值相同,就像把两页用一个孔穿在一起一样。
这就像第一页账册中,写的是“年末余额”,第二页账册中,写的是“年初余额”。第二年的“年初余额”,与第一年的“年末余额”必须一致。
在形成这本账册的过程,如果任何人修改了前两个区块的内容,其哈希值都会随之改变,那么下一个区块的哈希值就会与前一个出现差异。就像你偷偷改了前一年的“年末余额”,那么第二年的“年初余额”就会与它对不上一样。
因此,你只要看最后一个区块的哈希值,就马上能验证出前面的区块是否被篡改过。
在这些连起来的账册中,当然是有交易记录的:
例如,Darcy向Bingle支付了$25,这笔交易他们请记账员,也就是矿工,在区块链中记录下来。矿工们不白记账,他们会从Darcy和Bingle那里拿到记账费用,这是矿工们在创建区块的收入之外,第二个收入来源。
第四步:如果真出现了记录不一致怎么办?
我们刚才提到,每一个记账员,都会保存这些账册上的交易记录。但如果这些记账员,也就是所谓的矿工们,保存的交易记录不一致怎么办?
首先,他们要进行投票(vote),哪边的记录是大多数人的记录,就以他们的记录为准。这也就是咱们通常所说的“共识”。
例如,记账员1账册最后的哈希值与记账员3相同,前几位都是“000012”,但记账员2的账册的哈希值前几位却是“000059”。那么结果就是抛弃记账员2的账册。
区块链在不断延伸的过程中,一定会出现记录差异,这里的术语是“分叉”(FORK)。例如从第“i+2”个区块开始,大家出现了差异,那么就遵从刚才所说的投票原则,按照多数人的记录内容继续向下延伸。在下面这张图里,分叉一得到了大家的共识,就继续延伸,而分叉二则被抛弃。
而作为所有的参与者,都会把“最长的链”,作为有效的链。
第二部分:区块链的逻辑是什么?
区块链的逻辑,其实是用哈希、广播、分布式记账,投票和激励等功能,极大提高了交易记录的篡改成本,让它变得无限可信。
用哈希值这种方法,让每一个区块都与前一个区块相连,任何对前一个区块数据的篡改,都会被后面的区块发现。
用广播这种方法,每一个交易记录都会在全网公开,无数个记账员都会把它记入账册,加大了信息的可靠性。
用分布式记账这种方法,无数个账本,在无数个记账员手里,人手一册,篡改的难度几何级加大。
如果真的出现了记录差异,那就用投票这种方法来解决。真理虽然不一定掌握在多数人手里,但大家记录的同样数据,往往是多数人相同的记录,更为可靠。
不要担心这些记账员被收买,他们付出了劳动,也获得了回报。可如果他们偷偷篡改记录,却可能白白浪费自己的算力。
当然,如果某个记账员,手里掌握有足够的算力,总能比其他人更快地算出那个哈希值,他有可能利用某一个过去的分叉,来改写历史。但只要算力足够分散,这种事情发生的概率就非常之低。比特币之所以比其它加密货币更被人接受,就是因为它的区块链算力更分散。
区块链是一个天才的设计,也是人类信任链条的一次重塑。想想人类历史上,即便是对黄金的信任形成,也经历了前后上千年。但对比特币的这种货币信任,却只经历了短短十年的光景。
可以说,比特币的辉煌,完全是建立在区块链技术的基础之上。
最后,如果大家对这篇介绍不满意,还可以登陆页面:https://anders.com/blockchain/,那里有最详尽的动画解释。老拙的许多图,都是从那里扒下来的。
https://www.aganjinrong.com/post/860
---End---
作者:老拙,白俄罗斯大学法学硕士、北大国际工商管理硕士、北大在读金融学博士,拥有多重专业背景和超过20年从业经验的资本市场老炮儿。原文发布于阿甘社区。
领取专属 10元无门槛券
私享最新 技术干货