banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.

区块链发展的三个阶段

对未来 3~5 年区块链的落地应用场景探索发现。大致可以分为三个阶段:

● 信息 “区块链化”;

● 价值 “区块链化”;

● 场景 “区块链化”。

23.1 信息 “区块链化”,解决信息割裂问题 区块链技术能维护验证一个公共的交易账本。一般而言,每个技术的应用,一般会从最能改善绩效、提高效率的节点开始。平时大家也有自己的支付宝、银行卡的交易账本。一般情况下,支付宝之间的转账、同行转账基本能即时到账,只需要支付宝公司、某家银行验证记录即可;而跨行转账、甚至跨境转账支付,需要很长一段时间来确认交易,主要原因是各个银行、出入境登记机关,需要反复验证和核对,耗费大量人力、物力。而据 IBM 全球企业咨询服务部、大中华区银行业总经理范斌介绍,现在很多银行业务已经筹备或实现交易数据的 “区块链化”,很大程度上提高了跨境跨行汇款效率、去掉冗余工作等问题,一般以联盟链的形式存在。本质上而言,区块链化的公共账本,能够让各个国家、各个银行体系的数据互通互联,实时同步更新,对每个用户而言,能简化开户流程,便捷服务,对各个银行而言,对各个用户的信用数据能有全面了解,降低业务风险,提供精准信贷服务等。

除了银行体系里的票据、支付等环节能够运用区块链技术很好地改善。在其他实际生活中的场景,由于信息割裂而导致的各种各样的社会问题,都可以通过信息 “区块链化” 来解决。

可以预见的价值 “区块链化” 的应用场景有很多,一般需要具备以下几个特征:

● 双方交换的产品或服务可数字化;

● 服务 \ 产品标准化,评估体系清晰可查;

● 由个体提供服务,个体消费服务;

● 随着个体的逐步加入,网络价值越大。

举一个简单的例子,共享出行行业,服务的提供方主要是司机(车主),服务的消费方是乘客,司机将乘客从 A 点送到 B 点,乘客给司机一定的报酬,整个交易结束。司机将 A 点送到 B 点,可以通过 GPS 地理导航来计算行驶路程,时间戳来记录行驶时间,按照一个全网公示的计算方式自动生成路费,然后司机把乘客送到目的地后,确认,乘客账户自动将钱转到司机账户。随着乘客和司机加入区块链化的网络越多,司机越容易接到更多合适的订单,乘客也更容易搭到车。

本阶段的主要创业机会在于 “去中介化” 的应用场景,比如区块链化的滴滴、美团、淘宝等。由于这些中心化的公司并不存在太大的技术壁垒,例如滴滴和美团的订单分配算法并不复杂且容易复制重现,需要克服的问题在于用户的获取,以及解决链上交易吞吐量的问题,问题的解决有赖于大众区块链知识的教育以及技术的发展,还有其他具有类似特征的产业,例如 P2P 保险行业、信贷行业、博彩、预测、游戏等,满足上述四个特征的应用场景,都可以通过价值 “区块链化”,实现交易的 “去中介化”,解决交易信任的问题。

从链的承载能力和信息的特征角度分析,上链、大量节点分布式验证记录的信息一般需要具备以下几个特征:

● 信息价值较高,例如比特币的转账;

● 每条信息之间相互独立,互不干扰;

第一条是保证更多节点参与验证的经济动力,如果海量价值较低的数据,放在集中式的服务器里也未尝不可;第二条是对信息有一定程度的筛选,打包区块 + 链式串联在相互独立的信息流里有很好的作用。若在信息相互依赖的情境下,区块 + 链式结构不一定起到很好的作用。

未来的发展,可能会出现信息的信任等级,依照分布式存储和验证的随机性节点多或少来进行定量化评估。可以预见,在未来更多的应用场景中,只有少数待确权、交易记录等信息会需要大量甚至全网的节点去验证,各种应用场景下 app 的文章、图片、视频、音乐等只是链上字符串映射到现实生活的投影。

,资产上链的对象包括资产的所有权、使用权以及收益权。表 27-3 比较了不同资产的所有权、使用权以及收益权的上链优先级分布。人们发现:

(1)同一资产上链的内容不同,优先级会有所差异。以土地、房屋及建筑物为例,当上链的资产是使用权(租赁)和未来收益权时,会成为最优先上链的资产(第 1 类资产),而如果上链的资产是所有权,其对去信任的需求低,资产的流通率低,因而是第 11 类资产。

(2)资产的收益权上链优先级相对较高。收益权因其对去信任的需求高,本身流通性高,可操作性强,是非常适合上链的资产类型。因此,对资产权益化后(Token)的上链应给予重视。

(3)资产的所有权上链优先级相对较低。除了传统的股票、证券和应收款项等金融资产,其他资产的所有权较收益权和使用权的上链优先级会偏低,这主要是由于资产流通低,以及去信任需求低造成的。

(4)二手交易、租赁市场是资产上链可能的增长点。无论是二手交易市场,还是租赁市场,对交易内容的去信任化需求很高,特别是租赁市场,因为资产使用权的流通率高,使得其位于资产上链优先级的第一位。

表 27-3 资产上链优先级分布

image

image

区块链技术作为一种分布式记账的技术,能有效地实现资产流通过程中公开透明、去中心化、隐私保护等需求。随着区块链技术 “热潮” 的掀起,一些人出于推广或炒作、融资等目的,对区块链技术盲目 “吹捧”,认为一切资产都需要上链。实际上,不是所有资产都适合上链。要判断资产是否适合上链,需要清楚两个方面的问题:

(1)上链的内容是资产的使用权、所有权还是收益权。同一资产上链的内容不同,优先级会有所差异,资产的收益权上链优先级相对较高,而资产的所有权上链优先级相对较低。

(2)在判断资产上链的优先级时,需要综合供给层、操作层和需求层三个层次的因素。本文列举了去信任的需求、资产价值和资产流通以及可操作性四个可量化的指标,作为 “区块链技术 + 资产管理” 可行性判断的标准。其中:

● 去信任的需求是资产上链的原动力。不是所有资产都需要上链。区块链技术是必须能解决当前资产经营过程的 “痛点”。如果当前的资产交易过程中,买、卖方信任关系可以得到保证,资产能实现快速流通,那么这类资产就不需要应用区块链技术了。

● 资产价值和资产流通是资产上链的基础。首先,资产上链对资产价值和流通性是有要求的。如果对于低价值的或者顾客对其价格敏感的资产,交易频率较低的或者一次性交易的资产,应用区块链技术的可行性较低。

● 可操作性是资产上链的催化剂。可操作性不资产上链的决定因素,但是它会影响资产上链的快与慢除此之外,本文也得出了以下两个观点:

(3)最适合优先上链的资产包括:土地的使用权和收益权,房屋及建筑物的使用权和收益权,专用设备的使用权和收益权,机械设备的使用权和收益权,贵重金属、珠宝的使用权和收益权,煤炭、石油、天然气的收益权,社交、社区、娱乐平台虚拟财产的所有权,股票、债券的所有权,应收款项的所有权,古玩字画的收益权,专利权、商标权的使用权。

(4)二手交易、租赁市场是资产上链可能的增长点。原因包括两个方面:一是这两类资产的使用权对去信任的需求,

从面向对象、代币结构、共识机制与发行方式、分配方式几个维度探讨通证的发展现状,得到以下结论:

(1)从数量上来看,支付货币类、通用平台类和行业应用类分布相对均衡,呈现 “三足鼎立” 的态势。

(2)从代币结构上看,以一层代币为主,多层代币并行发展。其中,支付货币类通证均为一层代币,二层代币包括五种代币,三层代币有一种。

(3)共识机制和发行方式更加灵活。在共识机制上,从比特币最早采用的工作证明机制 POW 逐渐发展到权益证明机制 POS 和拜占庭容错机制 BFT,到委托权利证明机制 DPoS 和委托拜占庭容错机制 DBFT,到将各共识机制组合的混合共识机制。在初始发行方式上,根据项目特点、社区经营和技术推广的需要,除了经典的挖矿释放外,其他手段被引入到推动通证初期的发展,包括预挖矿、ICO 众筹、风投、空投、打赏等。

(4)激励方式多元化。挖矿奖励和交易费用节点奖励依然在当前通证经济体系中扮演重要的角色,特别是支付货币类通证以及通用平台类通证。对于应用类平台通证,在激励方式上一般会根据通证项目的内容做个性化的调整。

(5)社区治理融入通证经济体系的建设。特别是对于通用平台类和应用类通证,社区治理机制在推动通证经济可持续发展中扮演着重要角色。

其次,本文梳理总结了目前通证经济发展模式。对以比特币为代表的通证经济体系的发展路径分为三类:一是从技术角度出发,解决信息隐匿性、交易效率、能耗大等问题;二是从拓展应用场景出发,将通证经济落实到更多的项目中;三是从减少市场扰动角度出发,即减少市场因素(如价格波动)对区块链社区的影响。具体来说,由一层代币结构发展为多层代币,将通证的价值属性和管理属性剥离,从而使得通证的价值波动不会影响区块链网络的正常运作。

同时,讨论了通证经济体系的未来发展方向:

(1)对于从技术完善角度设计的通证,专注于解决区块链网络的技术难点,强调技术创新和应用场景的普适性,因此,这类通证往往会选择一层代币结构,并且以一层代币结构为特点的支付货币类和底层技术开发平台类通证仍会作为主流发展的通证经济体系。

(2)对于服务于应用场景的通证,旨在追求区块链技术的应用能力,因而会根据场景内容的不同做个性化的调整,这类通证既可能选择一层代币结构,也可能选择多层代币结构。

(3)当通证经济体系要求区块链社区稳定,减少市场投机行为、价格波动等影响时,一般会选择多层代币结构。多层代币结构包括两部分内容:管理代币和价值代币。以社区经营为场景的通证经济体系都适用多层代币结构,目前,多层代币结构的应用场景还比较少,但可以预期其在未来通证经济体系设计中的巨大潜力。

最后,本文指出通证经济在发展和应用过程中的 “痛点”:

(1)区块链技术的发展尚不成熟,表现为区块链底层技术尚不完善和区块链技术的运营管理模式不成熟。

(2)通证项目落地进程艰难。从市值上比较,支付货币类通证的总市值占比 63%,通用平台类占比 27%,而应用类通证占比不到 10%。除内容、娱乐及广告和物联网技术以外,非金融类的通证仅为 1%。

(3)通证经济发展环境混乱,落地不确定性大。表现为两个方面,1)通证创始人仅把通证经济作为筹集资金的手段,而不思考虑通证经济的落地问题。2)通证经济能否落地以及多久能落地都存在很多不确定性。

image

去中心化存储#

另一个比较火的创新是去中心化存储,是一种利用分布式存储技术,将文件分块存储在不同存储节点的应用型创新。相较于中心化存储,它拥有更高级别的隐私保护,存储成本也更低,且具备更冗余的数据备份副本,能有效避免单点故障。

其实去中心化存储跟区块链的关联并没有那么密切,区块链在其中的主要作用是作为存储层之上的一种激励计费机制。拥有空闲硬盘设备的 “矿工” 将空间贡献出来,通过特殊设计的存储证明机制在区块链中 记录贡献度,主要考察维度集中在贡献时长、空间大小以及有效空间利用率等等,贡献度可用于获得等额代币回报;而有存储需求的用户需要支付代币,用于获取更多的数据存储 空间。

不过,去中心化存储的发展目前也面临着一些问题,主要有这样三方面。

  • 其一,对其币价的炒作几乎从未停止,真实有存储需求的用户几乎无法忍受因币价波动而导致的成本不确定性。

  • 其二,不同矿工贡献的空间是极度分散的,虽然在全世界各地都可以搭建,但受制于当地网络环境以及硬盘本身的机械素质,整个去中心化网络的存储性能不高,远不如中心化存储,因此只适合冷数据以及个人数据存储。

  • 最后,随着矿工的涌入,大部分项目的存储空间供应规模远远大于真正的需求,已经处于供大于求的局面,数据来源是当前急需解决的问题,怎样解决数据来源是当前重点,否则 难有更大的发展。

跨链#

前面所列举的 2 类创新都属于应用创新,相较而言,跨链则属于技术创新。不同的区块链网络是独立的,是一个个的数据孤岛,跨链技术就是在这些岛之间构建互通的桥梁,提供 不同链之间数据互通的可能性。

最初的跨链是两个链之间的直连,而现阶段的跨链更像是一个中枢,链与链之间的交互不再直接,而是通过中继链进行信息的中转,可以说,跨链技术的发展是其他创新的基础。就比如下图是一张波卡跨链协议的跨链网络示意图,通过中继链把其他的公链嫁接在同一生态系统中。

image

通过上面对两大类公链圈技术应用创新的简单分析,我们不难看出投资激励对于公有链的推动作用,这也无可厚非,天下没有免费的午餐。没有创新,就没有投机的爆点,也就不可能有生态的繁荣。相较于前一阶段的野蛮生长,

纯投机的项目逐渐消失,DeFi 是传统金融的衍生,而去中心化存储则是共享经济的一次探索,新概念的提出让它更贴近大众生活。

  • 联盟链圈的发展 了解完最近公链圈的创新,我们再来看看联盟链圈的发展。在联盟链圈的这几年,我见证了区块链技术在企业商业活动中的实践,如何使传统业务在区块链技术的加持下降本增效,如何降低企业间合作门槛,当然也碰到了区块链技术现有的发展壁垒。个人对区块链技术在企业的发展,我总结了三个阶段。

数据存证#

区块链技术具有时间连续,不可篡改,可回溯等特性,因此非常适合需要留存证据的数据存储。现阶段,像产品溯源、互联网法院、电子证照等应用都属于这一阶段的产物,大多 数应用在区块链上存储的也只是数据证明,而非原始数据。

这种做法既与区块链本身的数据承载能力有关,也是业务本身的需求决定的。区块链中的数据从网络的维度来看,对存储及网络带宽的需求会随着数据量的增大呈指数级增长的趋 势,因此需合理控制数据的取向,关于这一点我会在技术篇的末尾为你再做一个解读。数据存证阶段的应用只是将数据存储在区块链上,只有在必要的时候才会利用其中的数据进行取证,绝大多数时候,数据是死的。区块链技术只是这些应用的一种特殊的技术保障,而不是非区块链技术不可。且大多数时候是各家玩各家的,并没有涉及到多方参与。在此阶段,区块链的可替代性较强。现在大多数企业区块链应用还停留在这一阶段。

数据交换#

传统的企业间合作都涉及到了商业数据的交换,一般情况下,数据交换的模式是数据提供方或需求方提供 API 接口的形式或拉或推的形式进行。而一旦涉及到数据的相互需求以及 多于两家企业参与的情况,问题就变得更加棘手。而通过区块链技术可以很方便地解决这个问题,在各家企业内部部署区块链节点,各家只需与自家运维的节点交互,区块链机制自动地将数据同步至其他参与方,任一节点如有新数据上链,区块链的事件通知机制自动通知各企业内部的应用。在此阶段,企业合作强依赖区块链作为数据交换的枢纽,因此区块链的替代性较低。且现在已有企业应用达到了数据交换的阶段,比如联邦学习与区块链技术的结合。

价值转移#

以太坊存在的意义之一,就是提供了一个将现实价值与数字世界锚定的媒介,也让我们看到了信息网络向价值网络转移的可能性。在企业区块链领域,这种意义可被无限放大,企业对外提供的产品无非是商品 / 服务 / 解决方案等。而如果通过区块链技术将企业产品转换成价值网络中的流通资产,在基础价值之外,亦可延伸出多种资产应用的可能

而在这个阶段,区块链技术是价值网络的基石,无可替代。当然,现阶段离价值网络还很远,我也无法准确地描述未来的样子。企业区块链发展的时间较短,总的来说还只处于刚刚起步的阶段。但国家对其未来的前景非常看好,从高维度引导区块链在国民社会经济等各个领域的发展

区块链 +,虽还处在发展的第一阶段,但已有更进一步的趋势。当然,我们也应该看到,区块链技术的价值在过去的十多年中虽已被逐步验证,但终究是发展时间还较短,技术本身也还不成熟,且所带来的思维模式的变革也足够震撼,区块链

技术全面走进我们的工作生活还需要更多时间。如果有一天,公链的每一个创新都能赋能实体经济,企业间能放下曾经构筑的层层商业壁垒,公链圈与联盟链圈重新相交相融,那就是区块链技术的黄金时代,价值网络触手可及。

这是否就能说明区块链可以传输实体价值了呢?主要三点:锚定、确权、交易(重新确权)

看现在的互联网大佬,华为,蚂蚁,百度,腾讯就知道,都是在联盟链深耕细作吧,目前币圈的热度褪去就是公链热度褪去,链圈崛起,其实基本指联盟链崛起是这样的,现在联盟链占主要的大面,公链被打压的厉害

数字货币交易平台,比如币安、火币等,它们属于哪一个圈子呢?他们是属于公链圈

“将企业产品转换成价值网络中的流通资产。” 这句话不太理解,企业提供产品或服务,为什么需要转换到价值网络上去

畅想价值网络可能的场景。可以这么理解,现在互联网上流转的是信息,但信息是有正确与错误的,所以无法给信息估价(衡量价值),而价值网络想表达的是有价值的信息,企业提供的产品服务本身就是有价值的,当然可以过渡到价值网络,除此之外,或许还能产生出额外的价值,但这还未可知,只是一种猜想。

可能很多人都觉得区块链是一个多么新颖的技术,其实不然。它不过是旧瓶装新酒,本身并没有创造新的技术,只是将几种已经成熟的技术进行组合,是融合性创新。 而我们初步开始学习区块链的时候,最重要的就是把握其技术特点,并且了解它的技术基 础。

区块链的技术基础,#

同时帮助你掌握区块链技术最重要的三个特性。

区块链技术发展到现在,尤其在以太坊将智能合约的概念与区块链技术融合之后,区块链已经变成了现实与网络的媒介,可以说区块链是价值的载体,是一种新型的社会生 产关系。

怎么理解这句话呢?我个人的理解是基于区块链技术,我们可以打通现实世界与网络世界的屏障,将物质虚拟化,将价值实体化。未来的互联网流转的不是信息,而是活生生的价 值。

未来可期,不过也要始于足下。我们不妨先回归现实世界,前段时间,网上有一张图引起了广泛传播,被网友戏称为 “区块链技术实体化”。拿这个例子来说明区块链的技术特 性,再适合不过了。 区块链技术实体化 这是辽宁沈阳一小区大门,业主用多把锁串联在一起,形成了一套简单的门禁系统。谁家有车谁就加锁,每把锁都有标识,小区车主只需拿钥匙打开对应锁头,就能打开大门。这样就防止了外来车辆占用小区车位,不得不说,高手在民间。

化表达区块链技术特性的呢?首先,我们需要明确区块链有哪些特性,一般我们认为有 3 点,分别是:结合这个实例,我们来一一理解这几个概念。

去中心化 可追溯性 不可篡改

去中心化 在这个小区门禁系统中,每把锁代表着一家小区业主,他们不需要物业公司统一管理,只需要管理维护自己的锁就能保证系统的正常运行。每一把锁有大有小,有贵的有便宜的,业主也可能有多辆车,但在这个系统中他们没有地位上的差别。而且,当有新的业主加入或者有业主搬走,只需要增加或去掉相应的锁就好。 你有没有发现,这里面就蕴含了去中心化的概念,门禁不再由物业公司这个 “第三方机构” 统一管理,每把锁都是管理的一部分。同样的道理,区块链存在的初衷就是去除中心化的第三方机构(可以回看第 1 讲),整个网络的数据及状态是由网络中所有的节点共同维护的,他们没有地位上的差别,有的只是可支配的资源的不同,且任一节点离线也不会影响系统的运作。你可以自己试着先推演一下,想要实现去中心化,应该选取怎样的网络模型和存储模型呢?没有中心节点的系统从某种角度来讲,可以说每一个节点都是中心,每一个节点都能对外提供服务,同样也能从其他节点请求服务,而这也正是点对点网络模型的特性,可以说,节点互为彼此的数据生产者及消费者

image

另一方面,因为节点角色对等,因此每一个节点存储的数据应该是一致的,都独立地维持一条完整的区块链链式结构,即便一些节点数据丢失,但只要还有一个节点完好,历史数据就不会丢失。这有效地避免了单点故障带来的系统崩溃,相较于传统的数据灾备模式,其可靠性可以说是万无一失。当然,去中心化只是一个理想化的状态。现阶段来说区块链去中心化本质上是相对去中心化,我们也可以叫做多中心化。我们在理解概念的时候,不仅需要理性思维,更要学会使用感性思维去接受中间过程的渐变

image

可追溯性 在门禁系统中,每把锁记录了业主的相关信息,是跟业主一一绑定的,这就可以在异常情况下对破坏规则的业主进行追责,比如忘记锁门而导致外来车辆进入小区,这体现了该系 统的可追溯性。 在实际区块链运转中,同样是完成信息追溯这件事儿,道理虽然相通,但是更为复杂,我来给你说一说。

对单个节点来说,区块链可以被认为是一个时序数据库。每一次对系统的操作,实质是在每个节点数据库中存储了相应的数据及日志。且每一份数据都不是离散的存储,而是按时间顺序前后关联在一起,新的数据一定是从某一组之前已存在的数据派生而来。

依照这种关联,如果想回溯数据的状态变更历史是很容易的,只需要依次往前查找,一定会找到数据的初始状态。而这一切都依赖于区块链存储技术,存储主要关注数据结构以及数据关系,包括交易以及 区块的数据结构,交易与区块的关联关系,区块状态的存储模式等等。

不可篡改 另一个技术特点是不可篡改,这是一个比较容易被初学者搞混的概念,所谓篡改,就是私自的不被认可的修改,而不是不能修改。 我们回顾例子,可以发现业主手中的钥匙与锁是一一对应的,没有钥匙或者用错误的钥匙,车辆都是进不了小区的。 社会车辆要想进入小区,可能会采取盗用某一业主身份,多配一把钥匙或者添加一把锁,这就是篡改。而只要被业主委员会发现,就会及时纠正错误,将社会车辆清理出去,也就实现了不可篡改。

在区块链中,实现不可篡改需要两种技术来保障。前面例子里 “锁” 的功能由密码学技术实现,而 “业主委员会” 的角色则是由共识算法来扮演。前面我们讲过,单个区块链节点中的数据是按时间的先后顺序串联存储的,而串联的关键

就利用了密码学中的哈希算法。 哈希算法可以把一段数据变换成固定长度的数据指纹,而且只要数据有细微变化,得到的指纹也是大不一样的。通过这个方法,我们可以将前一时间段的数据指纹与后一时间段数据整合在一起。周而复始,后一时间段内的数据永远都会包含前一时间段的数据指纹,这样就形成了一条由数据指纹串联的信息链条。

image

如果有一个作恶者想要修改中间某一时间段的数据,那么依照哈希算法原理,其对应的数据指纹则会改变。因此他不得不依次修改后续的每一个时间段的数据,否则数据链条就会在他修改的这一刻断掉,不再具备可追溯性。

image

我们可以把困难进一步放大,想一想如果作恶者真的把本地节点的所有数据都篡改一遍,又要怎么应对呢?这时候就要让共识算法出马了,它可以保证整个系统的数据不被篡改。所谓共识,就是在 一个分布式系统中保持数据的一致性,而如果出现数据不一致,大多数共识算法都遵循少数服从多数的原则。

区块链网络中的每一个节点的数据都是一致的,作恶者只是篡改了自己维护的单个节点,从整个网络的维度来看,依旧是以大多数节点的数据为正确数据。最后,我想提醒你,看问题不能只看一面,不可篡改其实是一个辩证的特性。少数服从多数的规则意味着如果作恶者能够控制大多数的节点资源,那么篡改区块链是可能的。在一个健壮且足够分散的网络中,篡改所要付出的成本是巨大的,几乎不可能成功。而一旦成功,剩下的少数派才是妄图破坏区块链共识的作恶者,以太坊的硬分叉

区块链是新一代信息技术的重要推动力,它利用了存储、密码学、点对点网络及共识算法等基础技术的融合,提供去中心化、可追溯以及不可篡改等特性,可以用来解决互联网中的信任及安全问题,从而推动互联网从信息传递向价值传递的变革。

你可能觉得刚才的解读有点书面化,为了帮助你理解,我再给你分享一个通俗版本的:可以说存储是砖头,密码学是钢筋,点对点网络是混凝土,而共识算法是设计图纸,以他们为基础,揉和在一起,就构建了区块链这座精妙的上层建筑。我想和你强调的是,区块链技术并不是教条主义地照本宣科。比特币是区块链,以太坊也是区块链,技术本身也并没有规定实现的唯一路径。

区块链是一个分布式存储、篡改难度巨大的信息存储技术,目前主要的应用是比特币等数字货币。

区块链是一种去中心化、可追溯、不可篡改的信息存储技术,是多种技术结合的融合创新,主要解决的是互联网中的信任和安全问题。

阅读《区块链革命:比特币底层技术如何改变货币、商业和世界》,如果不太了解技术,可以阅读《区块链:新经济蓝图及导读》

git 就是变相的区块链

  • 去中心化:每个用户在本地都有自己的 git 仓库,并且相互之间可以 pull 和 push

  • 可追溯性:每个 git 提交都依赖于上一个提交,可以追溯到最初的提交

  • 不可篡改:修改本地的某个历史提交后,其之后的提交的 hash 值都会变化

直观的角度,用 “铁索连环” 的例子和你探讨了区块链技术特性,也顺便引出了区块链技术基础。从今天开始,我会用几讲的时间为你解释每一种技术在区块链中的 最核心应用,以点带面,为你勾画出区块链技术体系。这一讲我会带你深入单个区块链节点,让你了解区块链存储是如何设计的。其实一说到存储设计,我们首先想到的是区块链里如何存储数据,以及要使用哪种数据库这些常规定式内容。但在我看来,这些都只拘泥于存储设计的表面。想要真正把握住区块链存储的要点,我们更需要把握的是交易、区块还有状态这三个基础概念,有了这些基础,你再去分析区块链存储设计就会驾轻就熟了

image

首先需要理解的概念就是交易(Transaction),这是区块链中的最小也是最核心的知识点。因为我们最初接触区块链大多从比特币开始,所以我们通常会把交易理解成转账, 但其实这个理解比较片面。其实在区块链中,交易的概念已经有所扩展。

从行为的角度解释,交易等同于操作(Operation),我们向区块链网络提交一笔交易实质上是发起了一个操作,而操作的具体内容与特定区块链协议有关,比如在以太坊中,一个操作可能就是执行了智能合约中的一个方法。而如果我们从计算机技术的角度分析,交易实质就是原子事物,只是翻译的不一样,它们的英文都是 Transaction,交易是区块链网络中数据的最小的组成部分。一笔交易提交后,它只能有两种状态,要么成功要么失败,不可能存在成功了一半的情况。

不同区块链对交易的定义虽然一致,属性字段却有所差异,但却不影响我们抽象出一个通用的交易属性模板。需要注意的是,并不是所有的区块链都遵循下图中的规则,此处只是方便你理解交易主要有哪些属性。

image

我们可以看到,一笔交易通常有 8 个属性(交易哈希本身也是一个属性)。From 跟 To 分别指向交易的发起方及接收方,这个很好理解,比如一笔货币的转账当然需要有转 钱的跟收钱的。跟智能合约相关的属性有三个,智能合约标识的是当前这笔交易要执行智能合约的名称,随后附带了执行智能合约对应的方法以及执行该方法时应该附带的参数列表,不同方法可 能有着不同长度不同数据类型的参数,此处统一用参数列表表示。接下来的时间戳字段表示该交易在客户端构建的时间。这个时间是客户端独立添加的,但是我们也不用担心该时间与标准时间的差异,因为区块链网络在接收这笔交易的时候,会有交易时间的校验,过早与过晚的交易并不会被网络接受,这在一定程度上限制了作假的可能性。最后一个通用交易字段是签名,一般情况下是 From 字段的账户进行签发的,用于向网络证明这笔交易确实是这个账户构建的,而不是其他人伪造的,主要是使用账户拥有者手中的私钥对交易进行签名,而私钥只有账户拥有者持有。就像我们平常生活中使用的印章, 只不过私钥被伪造的几率几乎没有,除非被盗。

有一点需要注意的是,区块链中所有的交易基本上都是从区块链网络外发起的,区块链网络只接收交易而不生产交易,且不对交易做任何改动。也就是说,交易在客户端构建出来 以后就固化了。

因此我们可以使用交易内容的哈希值作为交易在区块链网络中的标识,且该标识不在交易的字段内容中,怎么理解呢?可以这样想,身份证可以代表你这个人,但身份证并不是你 人的一部分。

另外,你可能还有这样一个疑惑,如果每笔交易都是客户端独立构建的,并没有与网络中的其他参与方进行协商,那这个交易哈希不会重复吗?这里就要用到哈希算法的性质了,哈希重复意味着产生了哈希碰撞,在我们后续的密码学章节里,我们会讲到哈希碰撞的概率跟使用的哈希算法有关,且几乎不可能碰撞。

区块 理解了交易,我们再讨论一下,要用什么 “容器” 来存储这些交易数据。其实这个容器就是区块,你可以这样理解交易和区块的关系,交易相当于是货物,而区块则是能够容纳多 个交易的集装箱。 在前面我们讲可追溯性的时候,我们提到区块链是时间段的数据前后关联依次串联整合成,而每一时间段的数据我们就称之为区块(Block)。区块是指将节点一段时间内收到的所有(有效)交易打包而形成的一种数据结构,之所以将有效扩起来,是因为有些区块链的设计也包括了无效交易。直接理解概念有些抽象,我们可以参照区块示意图去理解区块的数据结构。

image

块的设计貌似还比较复杂,不过你也别担心,其实我们只需要理清三个关键点就能领略区块的精髓。 区块结构 第一点我们需要理清的是区块的结构,从图中看,区块分成了区块头跟区块体。区块头包含该区块的基础属性,重要的属性主要有 4 个:前置区块哈希用于区块间的关联,交易根哈希用于区块与交易的关联,区块高度用于标记当前区块在区块链中的位置,方便定位,而时间戳记录了区块打包的时间。区块体则只有交易,且交易是有先后顺序的,一般是按照交易的时间戳字段进行排序。

区块间关联#

第二个需要关注的点就是区块间的关联关系,这点我们已经多次提到,每一个区块都会包含前置区块哈希作为逻辑关联两个区块的那个锚点。区块哈希跟交易哈希类似,是区块的外置属性,在区块构建完成后才能得到。如果我们从当前区块一步一步往前追踪,最终会找到创世区块,而创世区块也是有前置区块哈希的,只不过是一个空值。比如你可以通过以太坊浏览器查看创世区块的前置哈希。

image

区块与交易 最后一点就是区块与交易的关联关系。虽然我们前面用了一个形象的比喻,把区块和交易想象成集装箱和货物,但我们并不明白其中的原理。从概念上理解相对复杂一些,这主要 是因为引入了一个不常见的数据结构:默克尔树,我们可以先了解一下它。

默克尔树是一种树状结构,一般情况下至少有三层,分别是叶子节点,中间节点以及根节点,中间节点的层数取决于叶子节点的数量,叶子节点的数量越多,默克尔树的深度就越 高。

它的构建逻辑是这样的:相邻的叶子节点进行哈希运算,得到的哈希值作为这两个叶子节点的父节点。然后同样的逻辑依次往上,最终倒数第二层仅剩的两个中间节点经过一次哈希运算得到他们的父节点,也就是整棵树的根节点,这样由哈希值构成的默克尔树就构建完成了。

对照前面的区块示意图我们可以发现,区块体中包含的交易所对应的交易哈希,可以作为默克尔树的叶子节点,然后依次往上进行哈希计算,最后得到的根哈希就是区块体所有交 易的交易根哈希,这个数据将会记录在区块头中。看到这里,你可能还有一个疑问,为什么要这么麻烦地引入默克尔树呢?为什么不直接把所有的交易揉在一起,取一个哈希就够了呢?我们知道,对数据进行哈希计算得到的结果是可以作为数据指纹使用的,那也就意味着,哈希可以作为一种数据校验机制。

要是此时区块中有一笔交易被作恶者篡改了,如果我们设计交易根哈希的时候,仅仅对所有交易取一次哈希。那在数据校验不通过的时候,就很难找到被篡改的 交易,尤其是在交易数量特别多的时候。

而如果我们使用了默克尔树,叶子节点哈希的任何变化都会传递至其父节点,一层层向上直到根节点,这就意味着根节点的值其实包含了所有叶子节点的哈希,但是却将可能被篡改的交易分开处理了,这样一旦出现问题,我们很容易就能判断出出错的分支。这提高了数据校验的灵活性,减少了很多不必要的资源浪费。通过以上对区块逻辑上三个关键点的梳理,我们理清了区块设计的脉络。区块链之所以叫 区块链,从字面理解,正是因为区块这种特殊的数据结构决定的。

状态#

说完交易以及区块,我们再来理解一个经常被遗漏的概念就是状态(State),可能你之前从未听过,但它的作用却不可忽视。

在区块链中执行的每一笔交易都有一个输出,而状态就是交易执行后输出的累积。怎么理解呢?举个简单的例子: 2 + 3 + (4 * 7) + ( 8 - 9 / 3 ) + 23 = 61 “=” 左边的每一个加法旁边的表达式我们可以认为是一笔交易记录,“=” 右边的 61 则是交易执行后累积后的状态。

有限状态机#

那么我们可以发现,即便丢失了表达式的结果,但是只要我们还记着表达式,我们就可以再重新计算出对应的值,而这就是有限状态机的概念,即在一个封闭的系统中,如果状态 起始条件一致,状态改变条件顺序一致,最终一定会得到一致的结果。而区块链就恰恰按时间顺序记录了所有的交易,因此即便丢失了状态,我们也可以很容易地重放状态,只要我们按照顺序再执行一次交易即可。所以从某种角度来讲,区块链也是一种有限状态机。

既然可以重放状态,为什么还要保留状态呢?我们不妨做一个情景假设,如果你现在正在执行一笔交易需要某个输入,而这个输入跟之前中间某个区块里某笔 交易的输出有关。

如果不保留状态,你在执行这笔交易之前,就得重新执行相关联的交易,而那笔交易可能又与更早的另一笔交易有关,因此得一直回溯,直到找到源头为止。 所以从理论上来说,不保留状态是可以的,但是这就需要承担这种设计带来的相应后果。

与数据库的异同 如果你还是觉得状态这个概念不好理解,我们还可以从与数据库对比的角度来解释状态。我们与数据库进行 CRUD 交互的时候,在数据库中插入、更新、删除的记录就是所谓的状 态,而你执行的每一条语句就是交易。换言之,如果你将从数据库创建到建表,再到插入数据、更新数据、删除数据等操作的所有 SQL 语句导出,换到其他地方,你也可以重放出 一个一模一样的数据库出来。

区块链跟数据库都保存了历史操作记录跟状态数据集合。只不过数据库更看重状态,而区块链却以记录历史区块为主,状态为辅。正所谓一个活在当下,一个怀念过去。二者的逻 辑并没有什么本质上的区别,只是侧重点不一样。

状态模型

了解了状态的设计理念,那你可能要问了,状态在区块链中是如何表现的呢?根据区块链 的定位的不同,我们大致可以将状态模型的设计归纳为三种模型。

一种就是以比特币为首的专注于数字货币的区块链使用 UTXO 模型,即未花费的交易输出(Unspent Transaction Outputs)。在此模型中,每一笔交易都应该有 N 个交易输入, 同时产生 M 个交易输出(N 与 M 可以不等)。其中,交易输入是前序任意交易的未花费的交易输出。如果当前交易成交,该前序交易的输出也就变成了成交的交易输入,也就失去了再次成为交易输入的资格。UTXO 模型能够追踪数字货币的流向:未花费的交易输入告知货币是从哪里来的,未花费的交易输出告知货币往哪里去。

另一种就是以太坊区块链采用的账户模型,通过数字的加减表示账户余额的变化。每一笔交易的执行,都会实现不同账户间余额的动态平衡,你我之间转账,你支出了 1 块 钱,你的账户余额减 1,同时我的账户余额加 1,这种模型更符合我们日常生活的认知。同时,账户模型除表示余额以外,也支持自定义数据的存储,可以在基础账户之上衍生出智 能合约数据存储。

而最后一类通用模型在账户模型的基础上更进一步,没有内置状态属性,可存储任意自定义数据,被广泛应用在联盟链中。联盟链的定位是支持企业级应用的区块链平台,而企业 业务的种类及模式是无法预知的,因此无法在设计中内定状态模型。既然众口难调,所以干脆将状态的设计工作留给企业应用开发者,状态可以自定义,而链 本身只提供通用数据接口。

从三种状态模型的设计及应用场景看,状态模型的选型没有唯一解,只要是能满足应用场景的模型设计就是好的模型。

总结#

这一讲我们主要深入到单个区块链节点,侧重了解了区块链存储的要点,主要讲解交易、区块两个数据结构及区块链状态模型。而我也并没有以具体的设计方案作为讲解重点,因为无论多么新颖,多么创新的区块链平台,其最基础的设计都逃不脱这三点。

区块链存储的设计没有定式,而只要你真正理解了交易、区块以及状态,你就是下一个区块链存储架构师。

于开发者来说,状态更重要。区块好比框架,而状态是做具体业务时需要设计的数据结构和算法。

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.