区块链原来就是这么1回事儿啊——《区块链巴别塔》
区块链(blockchain)是一个虚拟分类帐,其中每条记账明细记录都是一个区块,这些记录在网络中分发给每个人,他们可以读和追加,但不能修改,增删改查CRUD中无法进行删和改,如果想删改,就追加一条新记录对原来数值进行冲抵,比如财务做账时前面“借入错”一笔账,后面就追加一条“贷出”一笔相同金额的记录冲抵;又比如上市公司经常发布季度报表修正,上个月盈利500万(中国上市公司卖一套房),次月发布公告,上个月盈利修正为300万,这类似说出的话如同泼出去的水,不能收回了,不能用橡皮擦去修改,财务中如果你想像改数据库记录一样使用SQL的update去修改记录,涂改财务账本属于犯罪。区块链中区块就是这样一条记录链接到上一条记录,如同幼儿园小朋友手拉手,一个盯着一个,如同一个链表LinkedList,这样任何人无法篡改这个链,当然这种高度串行化如同事务ACID的串行化一样造成性能限制,因此制约区块链的广泛应用的一个瓶颈就是它的吞吐量和并发性能,这些都是其高度事务安全导致的的牺牲方面。
区块链它其实也是一个保证高一致性的分布式事务数据库,维护一个不断增长的有序的事务(transaction)记录列表,它的分布式事务实现与集中式的数据库分布式事务实现不同,后者通常以Paxos或Raft进行共识凝聚,最终将所有服务器节点的状态修改成一致状态;区块链的分布式事务机制也与传统的2PC两段式事务机制不同,后者主要依靠对事务参与者资源进行锁定实现的,区块链的事务机制非常类似于事件溯源Event Sourcing的事务机制。区块链不但保证交易的高度事务完整性,还同时结合或耦合了安全加密算法,这种一体化的设计非常适合和钱有关各种转账交易、智能合约或加密货币等应用。
区块链中每个块包含一个头部和一个正文:
这些是每个块具有的数据。除此之外,每个块都有一个由开发人员定义的最大字节数。达到此最大大小时,此块将添加到区块链中,并开始创建新区块。
区块链中的每个区块都有一个代表区块在整个链中位置的数字,链中的第一个块有一个特殊的名称,它们被称为genesis块,也就是起始块,创世块。
每个块在头部中都有前一个块哈希号的引用,这非常重要,因为这就是区块链保持一致并控制不变性的方式,创世块没有任何引用前一个块的内容,因为它是第一个块。
merkleRoot是块内所有事务的散列结果,如果在块内部更改了任何内容,则此哈希值也会更改并使更改的块和下一个块无效。
在你可以想想:为什么这个字段被称为MerkleRoot而不是blockHash?这是因为比特币使用Merkle树算法从块的数据生成哈希值的。
这是一个与块的挖掘过程相关的32位数字。此数字仅用于查找与区块链难度相匹配的哈希值
这是块创建的时间戳。
这是所有交易数据的保留位置。
哈希算法实际上取决于区块链的每个实现,比特币使用长度为256位的SHA-256(安全哈希算法)。
merkleRoot值是从Data信息生成的,如果有任何变化,merkleRoot也会改变,并且在更改的块之后链接prevBlockHash的其余块将不再有效。这就是区块链不可变的原因。
明对于区块链是一个重要的特征,而且是必须的;区块链中其他经常被提及的特征(如安全性)反而是次要的,虽有用但非必须。
任何分类账都绝对需要顺序。一个人不能花没有收到的钱,也不能花已经花了的钱。区块链交易(或称区块链事务)必须明确顺序,并且不需要可信任的第三方来协调顺序,这就是前面讲的分布式事务机制。如果交易是由世界各地的匿名参与者产生的,并且没有中心化组织负责交易之间的顺序排列(不同于集中式的分布式事务数据库),但事实确实需要一个排序,那么该怎么办呢?虽然一个交易(或块)可能包括时间戳,但这些时间戳怎么可信?
在分布式系统中不可能将事件与时间点关联起来,这是一个未解决的问题,直到中本聪发明了区块链的明这个解决方案之后,分散的分类帐才可能得以实现。
区块链的明是一个符合某个要求的SHA-2哈希值,这个值是非常难以找到的。困难之处在于哈希小于一个特定数字,数字越小,输入值越稀少并且发现它的难度就越高。它被称为“明”,就是因为已知具有这种哈希的值已经非常罕见,这意味着找到新的这样的值需要大量的试错,即“工作”。反过来,这意味着 消耗"时间"。比特币寻找难度是动态调整的,这样每十分钟平均能找到一个正确的哈希值。
也就是说,区块链没有办法决定谁最快算出哈希值(因为每个参与者的服务器时钟不可能像对手表那样对得精确),那么延后一段时间比如10分钟,谁先算出谁获胜,然后迅速繁衍,谁的链越长越有优势,这是对于10分钟内可能有两个获胜者的附加判断条件。
事件溯源是通往区块链最便捷有效的手段,首先使用事件聚合概念对系统建模,然后决定是采取统一共享式存储事件日志?还是采取复制方式存储事件日志?统一共享方式比较简单切实可行;而分布式存储则需要选择一个主节点进行专门的事件日志追加,从而才能保证事件日志的顺序性,其他节点再复制保存这份新的事件日志备份,这样的好处是没有单点中心化风险,在去单点中心化方向上,区块链则是更极致完美的实现,与其自己投入巨资建立数据中心或数据湖,不如通过区块链实现全球平等共享数据。
区块链游戏是什么?
最近在看挺热门的职场心法指导——《靠谱》,其中提及一个建议,即要对周遭的新事物保持好奇,虽然不必如为了一篇学术论文深入研究一番,但起码要知道这是怎么一回事儿。
这几年与钱关联最密集的技术,自然是数字货币,这就必然要扯到区块链技术。于是,借这本《区块链巴别塔》的读书笔记,归纳些许关于区块链的思考。
区块链,英文名为Blockchain。它是一种计算机协议,如http一样是一套【大家】都要遵守的【规则】。
而这个区块链,作为一个又一个区块组成的链条。
每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。。
如果用普通人能理解的图,可以参考下面的这张。
换个角度看,这种技术相当于让。
现实场景下,如果甲借给乙1元钱现金,但乙没有给甲借条,就可以赖账。
但如果甲借给乙1元钱现金的场景发生在100个素不相识的人的注视下,即使乙没有给甲借条,只要有一个人【作证】,甲与乙的借贷关系都是事实成立的。
当然,区块链是上述操作的抽象化,下文会再聊这种技术的优缺点。
很多人将区块链技术等价于比特币的想法很不对,因为比特币只是使用了区块链技术——区块链是支撑比特币和其他加密货币的底层技术。
我们先聊聊比特币。
虽然很多人因为比特币轻松暴富,或者倾家荡产,但我个人对比特币这种直接挑战国家货币主权的“数字游戏”毫无兴趣。
当然,也可能是我与这种“天上掉陷阱”的事儿无缘,我最早知道比特币是在2014年,那时候的比特币真是白菜价,如果随便买几十枚,即使在国家决定在国内禁止比特币交易前全部套现,也可轻松获利好几百万。
以我的理解,比特币本质上是一堆代码——其实所有数字化的东西本质上都是0或1——这串代码视为一个只有【唯一值】的函数。
即F(x)=【?】。
我们常说的“挖矿”,就是找出这个唯一值(x)。
简单来说,“挖矿”就是一道算术题,只不过解题方法不是高等数学那样利用技巧进行积分还原,那就是。
说起来,有些盗取网站用户信息的“木马”,也是类似这样一个接一个地尝试答案,如果防火墙机制比较“弱智”,“木马”就可以轻松骗过、打开大门,盗取想要的一切。
挖比特币这件事,就是从可能需要数万亿次的“试错”中找到那个唯一答案。因此,计算能力越高,第一个找到答案的可能性就越高,也就是所谓的“挖矿”成功!
那么,为什么挖矿常常要用到【显卡】而不是【cpu】呢?
这就要分析cpu与gpu的工作原理(逻辑电路上的区别)。
我们常听说cpu【6核12线程】,这已经算是家用款里的【中端】产品了,可能你不会想到,gpu都是上千核心上千线程。
但gpu只能进行简单的【通用计算】,即使计算量很大也能扛得住。而cpu适合复杂而不庞大的计算。
糙一些的比喻,cpu是几位头顶不长毛的数学博士生,擅长进行高精尖理论突破,而gpu则是一千名精通加减法的小学生,。
我们再聊聊比特币背后的区块链技术。
所谓比特币的“特殊”,说到底就是因为区块链技术的设计,每个持有比特币的人都成为每一笔比特币交易的【公证人】——这就在某种程度上保证了交易的【安全性】。
传统交易中可能出现的“货到了,但钱故意不给”将会杜绝,因为当“每个人”都确认了“货已妥投”,你的“比特币所有权”是一定会被【强制转移】给对方。
但是,比特币作为疑似个人的发明,作为货币,毕竟还是少了国家信用的背书。
比特币现在还算主流,是因为有人认为它可以作为【信用中介】,但,这种货币的供给真的是【限定】的吗?你凭什么相信庄家不会通过“滥发比特币”来巧取呢?
好呗,有兴趣的朋友还可以看看贝页出的一套【货币文化史】。
【3】区块链技术应用展望
虽然区块链确有前景,甚至有望实现几乎即时和免费的交易。
《区块链巴别塔》极为乐观地提出——
资金和资产可以在没有中央授权的情况下进行转移,而交易验证是通过点对点网络来执行的,交易过程无须强大的中介机构来验证或进行交易结算。
但我还是认为,基于区块链技术的数字货币,还是要有国家信用背书,没有任何一个国家会“开明”到放任“自由交易、自由结算”。
同时,区块链技术作为一种新时代的加密算法,仍需面对的有如下几个难题。
第一,计算能耗。
说白了,加密算法对交易的封装如果能比当前采用的交易方式,效率更高(如1秒结算10万笔)、耗能更省(如10万笔交易只消耗1度电),那么,有需求的甲方(如银行、政府等)才会考虑全面商用化。
第二,安全保障。
其实,全面数字化的交易并不安全。
大家也知道一个系统越庞大,堆积的代码越复杂(即屎山),系统出问题的概率越高。
对于任何一个决策者而言,真正的问题不是区块链技术是否完全安全——100%安全、无漏洞、无bug这其实是不可能的——而是。
第三,可拓展性。
区块链技术并不是只能用于数字货币,还可以适用到日常需要【信用】的一切领域,如“安全身份识别、电子投票、艺术家和媒体专业人士的新薪酬模式、智能合约、产权鉴定等”。
但是,理论适用与实际适用完全是两个概念。
好比现在电子书、在线音乐是一种消费品,如果我们对单本电子书、单曲采用区块链技术,以(试图)保证使用者的确【付费】且没有【复制】——因为你对这种【数据包】的任何修改都会被全网记录。
那么,这种版权保护是不是真的【有必要】?
先不说被破解的可能,而是说,如果电子书只是一种广告,对版权方而言,,这时候,区块链技术反而成为一种【鸡肋】。
简言之,区块链技术很新颖,似乎也具有颠覆性。但它对于时代的推动性,有待技术的进一步发展才能看出趋势——?
【4】《区块链巴别塔》阅读指北
作为一本2021年出版的书,《区块链巴别塔》中阐述的内容依旧“不算过时”,从另一个侧面也反映了区块链技术的发展远没有“舆论”宣扬的那样“迅猛”,更没有出现第二次工业革命那样对人类社会产生巨大的颠覆性升级。
必须强调的是,《区块链巴别塔》的作者伊戈尔·佩吉克虽是奥地利人,但行文风格上,则会让我感觉在读一本美国学者的论著,不少美国学者的书会有“”的【特点】。
这就造成了一个奇怪的阅读体验——。
作为读者,我可能并不需要知道,诸如——某个人就某事件发表了怎样的观点,也并不需要了解其他学者的“定义分类”这种其实在发展阶段“很难明确定义”的“概念”——等“周边信息”。
我只需知道——
区块链究竟是一种怎样的技术?(what)
区块链技术为什么会引领时代?(why)
区块链技术的优势、缺点是什么?(how)
这也是我认为读一本阶段性技术科普读本的“读书精要”。
总结,如果读者想相对深入地了解【区块链技术】,本书虽有一定的阅读门槛,不失为一本【入门级以上】的“科普读物”。