大白话讲解比特币白皮书,十年后它依然是学习区块链的最佳资料,你真的读懂了吗?
作者 | 欧德张
区块链的一切皆因比特币而生,要懂区块链亦应从比特币开始。本文将用“不精致”化的描述为读者诠释比特币的业务机制。这或许比仅弄明白椭圆加密算法等些许技术点,更接近中本聪中教主的原教旨。
“精致”之说源于学者刘瑜,其认为欧美学术圈流行“精致的平庸”(貌似中国也差不多),简单说就是一种癖好,不管多破的事,只要换成“精致的”腔调,然后“故弄玄虚堆砌辞藻把人绕晕”,就能成为圈子里可发表的抢手货,否则万事莫提。
区块链的一切皆因比特币而生,要懂区块链亦需从比特币开始。《比特币白皮书》是中本聪唯一公开发表的论文,此白皮书有多“精致”呢?
简书上某大神针对其中“交易”一节有如下慨叹:“问题是,他说的每一句话我都看懂了,可我还是看不明白这张图到底在说什么。也许比特币的交易在中本聪的脑海里就是这个样子,所以我一直怀疑他是不是潜伏在地球的外星人,脑回路跟地球人不一样”。然后这位大神只好通过源代码去学习交易的机制和原理。
当然《比特币白皮书》背后的思想与创意是伟大的,所以当得“精致的不平庸”。我现在用“不精致”的“白话文”,把这白皮书的重新叨叨一遍,着重于诠释比特币业务机制,而适当弱化一些不关键的技术点。
若读者们能静心20分钟左右看完本文,结合文末我自绘的业务模型,当可知晓比特币的机制——这或许比仅弄明白椭圆加密算法等些许技术点,更接近中教主的原教旨。
为便于理解,原文中的果因倒置、重复诠释、夹杂叙述等等被“不精致”化了;另外,原文中一些“明明说着苹果树,又莫名冒出一句上面的鸟巢”的描述,本意是中教主表达严谨的科学态度的,也被“不精致”化了。
还有一些技术细节,对于总体业务逻辑理解帮助不大的,我也去掉了(例如“网络”一节中长短链的运作机制等)。我自己又添加了一些不精致”化词句,并在最后有若干名词解释,以期有助于读者理解业务。以下正文:
比特币:一种点对点的电子现金系统
纯粹的电子现金系统压根不需要第三方金融机构,直接就实现从买家到卖家的在线支付(此为中本聪核心观点之一,比特币机制主要目的是废掉类似支付宝、亚马逊之类的中间商)。
我中本聪,也有叫我老中的,首先通过无敌的数字加密技术解决了上述方案中的一部分问题。其次通过对等网络的妙招,解决了“双花”(double-spending)问题。
第三就是我将单个的区块,用链串接起来,形成了一条完备的区块记录链。这些区块链中可能会有分支,但只有最长的那条链得到所有节点的共识。比特币世界的消息们可以四处随便窜,矿工节点们则是想来就来,想走就走,但一旦加入,就要按我老中的规矩来,必须在最长的那一条链下面干活。
比特币就是数字签名链
各位看官请铭记:比特币就是数字签名链。或者说,你现在可以把1个比特币(BTC)看作一沓写着交易记录的小纸条(transaction),这些小纸条永不损坏,字迹永不磨灭,也不可更改。
它的第一张上写着“某时发行此1BTC,拥有者张三”。此后岁月斗转,这1BTC每经一次转手,就增加一张小纸条。现在看上图,一个BTC的转移支付操作可理解如下:
由转让者张三新写一张“小纸条”(transaction),并在纸条上端写好接收者的“姓名”:王五(Public Key);
张三定睛细看,认真验证纸条上的交易信息、接收者姓名,确认无误后,在纸条下端盖下一个转让有效的“私印”(Signature),但此私印上的名字却不是转让者的姓名张三,而是他的“别号”:张幺娃(Privage Key);
把这张最新的“小纸条”放到“小纸条堆”的最下面;
这1个BTC的拥有者换成了王五。
至此,收款人还不能验证和解决双花问题。不过只要所有人均知晓所有的交易,便不再需要第三方,也不再会有双花,所以我创造了一个机制——公开宣布交易(publicly announced,此为中本聪的核心观点之二:通过公开透明的交易数据灭杀第三方机构)。
此机制实现了:
让参与者(各个矿工节点)按时序在各个时段接收全网广播的交易信息;
这些交易信息传到各个矿工节点,经验证确认后被接受。
新的交易(注意不是区块,是交易,例如A转了2BTC给B)将广播到所有矿工节点;
每个矿工节点将最新收集到的交易信息打包到一个预备区块NB中(大致等同于上述的时间戳服务);
然后每个矿工节点基于区块NB的预备数据,开始全力挑战此时段的工作证明(即数字猜谜,此处简化业务逻辑见下图);
当一个节点完成一次工作证明时,它立即将上述2中预备好的“盖好时间戳的最新区块数据”广播给所有节点;
只有当这个(被广播的)区块数据中所有交易都有效且尚未被记录过,各矿工节点才接受这个成功解谜者所广播的最新区块;
网络上的矿工节点们确认“该区块”有效后有如下操作:1)在自己保管的区块链(账本)末尾添加“该区块”;2)刚才自己准备的没用上的预打包区块作废,基于此刻最新的交易数据、关联区块的数据摘要等重新预备打包又一个新区块。
2020年编程语言趋势解读:编程世界之未来握于谁手? 从黑客文化看区块链开源社区的自我组织与成功之道 区块链世界里不能信什么? 微信几亿人在线的点赞、取消点赞系统,用Redis如何实现? 量子算命,在线掷筊:一个IBM量子云计算机的应用实践,代码都有了 倪光南:中国 5G 有望成为世界第一