区块链的发展

# 区块链的发展

# 比特币

2008 年金融危机背景下,中本聪 (opens new window)看到现代金融体系的不足,创建了基于密码学而非信任关系的数字货币系统——比特币 (opens new window)

# 以太坊

2014 年,V 神 (opens new window)在比特币的基础上,将智能合约与区块链结合,创立了去中心化应用平台——以太坊 (opens new window)

# The DAO 事件

DAO(去中心化自治组织)就是基于智能合约的组织管理方式。

2016 年,The DAO 事件 (opens new window)驱动历史进入野蛮生长期。

  • 在区块链中,网络是由多个节点彼此相连组成的,节点间必须可以互相通信。几个小版本的软件迭代不影响区块链网络的运行,一些节点升级,而另一些节点继续使用原始版本,不会引起区块链网络的割裂。这种情况就是所谓的软分叉,其本质就是可兼容的程序版本更新。

  • 一旦社区决定对区块链协议进行了重构,则必须协调整个网络节点都进行升级。如果一半节点继续使用原来的版本,而另一部分节点升级了新版本的程序,在这种情况下,一个区块链网络就被割裂成了两个。虽然它们的数据从属于共同的祖先,但是在某一时刻,它们独自派生出不同的数据走向。这就是硬分叉的逻辑,其本质是不可兼容的程序版本更新。

因此,每一次区块链网络的升级都是一件大事,需要社区去协调从哪一个区块启用新版本,废弃老版本。

在 The DAO 事件中,以太坊通过硬分叉分裂成 ETH 跟 ETC,两个网络都保持独立运营。从逻辑上讲,并没有什么问题,是可以说得通的。但问题就在于其凭证是有价值的,在硬分叉前,我拥有 1 枚 ETH,而硬分叉以后,我既有 1 枚 ETH,同时我又拥有了 1 枚 ETC。相当于我在什么都没有操作的情况下,凭空多了一枚有价值的凭证。这里所说的凭证就是指币。

# 区块链出现

2014 年左右,才真正有了 “区块链” 的概念。

区块链行业是通过比特币形成的,发展到现在包括 “链圈”“币圈”

  • “链圈”:具有理想主义情怀的极客所提出的 “去中心化”;

  • “币圈”:以赚钱为主要目标的投资者和生意人。

区块链是一个分布式网络,但它与分布式网络最大的不同是整个系统本身具有自己的 Token。Token 在国内被翻译成 “通证”“代币”,其实最简单的理解就是 “虚拟资产凭证”,它可以是股权、票据、游戏积分,凡是需要资产记账的地方都可以用 Token 来做

区块链可以帮助多个节点达成共识去记录和 Token 相关的事情

区块链可以帮助所有人无门槛地构建属于自己的小经济系统

# 公链圈

公链圈研究有币的公有开放区块链网络,比如比特币/以太坊,就跟应用开发者在苹果生态系统中开发应用一样。

公链圈的创新以投资激励为驱动力,创新领域主要集中在金融/存储等方面。

# 去中心化金融 DeFi

DeFi(Decentralised Finance) 就是运行在区块链网络上的金融服务,这是公链圈最直接的发展驱动力。

金融是通过重新分配资产来获得资产增值的一种渠道,它的本质在于信用、风险和杠杆。金融成立的前提就是控制不确定性风险,只是传统金融跟区块链控制风险的手段不同。

传统金融服务对风险的控制主要是考察借贷人的历史信用记录以及抵押物的市场价值,如果借贷人信用不佳或抵押物价值低,可能就无法贷款。像银行这样的传统金融机构,不光要在贷款前严格把关,而且还要承担坏账的风险。

但是 DeFi 就不一样了,它可以通过智能合约来把控风险,其优势在于一切都是由程序代码自动控制。在不满足初始约定条件的情况下,合约会强制平仓,将抵押物没收。而且 DeFi 还有一个重要优势,那就是不存在坏账,几乎不需要风险控制,因此 DeFi 可实现超额抵押,也就是杠杆。

虽然 DeFi 是一个非常新颖的金融创新,但其未来的发展还是不太明朗的,尤其是在国内。DeFi 的主战场在以太坊,而以太坊是匿名的公有区块链网络,匿名意味着无法被金融部门监管/审查,传统金融行业在重重监管下都经常出现各种金融丑闻,更不用说不受监管的 DeFi。对投资人来说,风险是巨大的,此处的风险不同于传统金融中的坏账风险,而是要警惕人为造成的投机风口及暗箱交易。

# 去中心化存储

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

去中心化存储跟区块链的关联并没有那么密切,区块链在其中的主要作用是作为存储层之上的一种激励计费机制

拥有空闲硬盘设备的 “矿工” 将空间贡献出来,通过特殊设计的存储证明机制在区块链中记录贡献度,主要考察维度集中在贡献时长、空间大小以及有效空间利用率等等,贡献度可用于获得等额代币回报;而有存储需求的用户需要支付代币,用于获取更多的数据存储空间。

去中心化存储的发展目前主要有以下三方面的问题:

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

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

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

# 跨链

去中心化金融和去中心化存储都属于应用创新,相比之下,跨链则属于技术创新。

不同的区块链网络是独立的,是一个个的数据孤岛,跨链技术就是在这些岛之间构建互通的桥梁,提供不同链之间数据互通的可能性。

最初的跨链是两个链之间的直连,而现阶段的跨链更像是一个中枢,链与链之间的交互不再直接,而是通过中继链进行信息的中转,可以说,跨链技术的发展是其他创新的基础。

比如下面是一张波卡跨链协议的跨链网络示意图,通过中继链把其他的公链嫁接在同一生态系统中。

# 联盟链圈

所谓联盟链,就是这个区块链具有准入许可,不像公链,任何人都可以随时进入,准入许可意味着候选节点进入区块链时,需要得到已经在网络中的节点的许可,所以联盟链也叫做许可链。联盟链的节点数通常不多,维护成本相比公链要低。

联盟链圈研究如何根据企业自身业务定制联盟区块链,就好比现在各家手机厂商基于安卓开源系统做定制化的系统研发。

目前,企业区块链的发展现处于数据存证向数据交换的过渡阶段,国家政策的加持会加快这一过程。在 “十四五” 规划中,首次将区块链列入五年规划中,与人工智能、大数据、云计算、网络安全等共同被列入新基建行列。

# 数据存证

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

大多数应用在区块链上存储的也只是数据证明,而非原始数据。这种做法既与区块链本身的数据承载能力有关,也是业务本身的需求决定的。区块链中的数据从网络的维度来看,对存储及网络带宽的需求会随着数据量的增大呈指数级增长的趋势,因此需合理控制数据的取向。

数据存证阶段的应用只是将数据存储在区块链上,只有在必要的时候才会利用其中的数据进行取证,绝大多数时候,数据是死的。区块链技术只是这些应用的一种特殊的技术保障,而不是非区块链技术不可。且大多数时候是各家玩各家的,并没有涉及到多方参与。

在此阶段,区块链的可替代性较强。现在大多数企业区块链应用还停留在这一阶段。

# 数据交换

传统的企业间数据交换的模式是数据提供方或需求方提供 API 接口的形式或拉或推的形式进行。而一旦涉及到数据的相互需求以及多于两家企业参与的情况,问题就会变得很麻烦。

而通过区块链技术可以很方便地解决这个问题,在各家企业内部部署区块链节点,各家只需与自家运维的节点交互,区块链机制自动地将数据同步至其他参与方,任一节点如有新数据上链,区块链的事件通知机制自动通知各企业内部的应用。

在此阶段,企业合作强依赖区块链作为数据交换的枢纽,因此区块链的替代性较低。且现在已有企业应用达到了数据交换的阶段,比如联邦学习与区块链技术的结合。

# 价值转移

以太坊存在的意义之一,就是提供了一个将现实价值与数字世界锚定的媒介,也让我们看到了信息网络向价值网络转移的可能性。

在企业区块链领域,这种意义可被无限放大,企业对外提供的产品无非是商品/服务/解决方案等。而如果通过区块链技术将企业产品转换成价值网络中的流通资产,在基础价值之外,还可以延伸出多种资产应用的可能性。

在这个阶段,区块链技术是价值网络的基石,无可替代。

# 超级账本

超级账本 (opens new window)(HyperLedger)在 2015 年年底被发起,由 Linux 基金会主持,宗旨是构建一个面向企业应用场景的开源分布式账本技术平台

因为企业应用场景的多样性,所以超级账本包含了不只一个项目,它是由多个项目组成的。一共 9 个项目,其中 5 个是主要的技术框架(Hyperledger Fabric、Hyperledger Sawtooth、Hyperledger Iroha、Hyperledger Burrow、Hyperledger Indy),其他 4 个是辅助性工具(Cello、Composer、Explorer、Quilt)。

# 区块链的技术定义

区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。

区块链有以下 7 个技术特征:

  • 区块链的存储基于分布式数据库;

  • 数据库是区块链的数据载体,区块链是交易的业务逻辑载体;

  • 区块链按时间序列化区块数据,整个网络有一个最终确定状态;

  • 区块链只对添加有效,对其他操作无效;

  • 交易基于非对称加密的公私钥验证;

  • 区块链网络要求拜占庭将军容错;

  • 共识算法能够 “解决” 双花问题。

# 区块链的技术特性

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

1. 区块链是价值的载体,是一种新型的社会生产关系。

  • 基于区块链技术,我们可以打通现实世界与网络世界的屏障,将物质虚拟化,将价值实体化。未来的互联网流转的不是信息,而是活生生的价值。

2. 区块链拥有去中心化、可追溯及不可篡改的技术特性。

  • 去中心化只是一个理想化的状态。现阶段的区块链去中心化本质上是相对去中心化,也可以叫做多中心化。

  • 对单个节点来说,区块链可以被认为是一个时序数据库。每一次对系统的操作,实质是在每个节点数据库中存储了相应的数据及日志。且每一份数据都不是离散的存储,而是按时间顺序前后关联在一起,新的数据一定是从某一组之前已存在的数据派生而来。而这一切都依赖于区块链存储技术,存储主要关注数据结构以及数据关系,包括交易以及区块的数据结构,交易与区块的关联关系,区块状态的存储模式等等。

  • 区块链中的不可篡改,是指私自的不被认可的修改,而不是不能修改。在区块链中,实现不可篡改特性需要两种技术来保障:密码学技术和共识算法。

  • 所谓共识,就是在一个分布式系统中保持数据的一致性,而如果出现数据不一致,大多数共识算法都遵循少数服从多数的原则。

  • 有一点要注意的是,不可篡改其实是一个辩证的特性。少数服从多数的规则意味着如果作恶者能够控制大多数的节点资源,那么篡改区块链是可能的。在一个健壮且足够分散的网络中,篡改所要付出的成本是巨大的,几乎不可能成功。而一旦成功,剩下的少数派才是妄图破坏区块链共识的作恶者,以太坊的硬分叉就是一个典型。

3. 区块链技术是存储、密码学、点对点网络以及共识算法等基础技术的融合创新。

# 区块链的运行机制

公开记账 -> 创建创世区块 -> 交易 -> 打包交易(挖矿) -> 广播交易

# 区块链的核心技术组成

无论是公链还是联盟链,至少需要四个模块组成:P2P 网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型

# P2P 网络协议

P2P 网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点发现和维护。

# 分布式一致性算法

区块链领域三种业界主流的共识算法分别是:PoW 工作量证明算法、PoS 权益证明算法,以及 DPoS 代理权益证明算法

  • PoW

通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。比特币本身的演化很好地诠释了这个问题,中本聪设计的思路本来是由 CPU 计算。随着市场发展,人们发现 GPU 也可以参与其中,而且效率可以达到十倍百倍,现在,这项工作基本以 ASIC 专业挖矿芯片为主。

  • PoS

这是一种股权证明机制,它的基本概念是产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例,目前有三个版本 PoS1.0、PoS2.0、PoS3.0。它实现的核心思路是:使用你所锁定代币的币龄(CoinAge)以及一个小的工作量证明,去计算一个目标值,当满足目标值时,你将可能获取记账权

  • DPoS

将 PoS 共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账,这个圈子可能是 21 个节点,也有可能是 101 个节点。这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。

# 加密签名算法

在区块链领域,哈希算法是应用得最多的算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。

# 账户与存储模型

区块链的底层存储设施多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这些存储技术与其他场合下的使用并没有什么不同。

区块链的账本特性(也叫账本模型),通常分为 UTXO 结构以及基于 Account-Balance 结构的账本结构

UTXO 是指 “未花费的交易输入输出”,这是区块链中 Token 转移的一种记账模式,每次转移均以输入输出的形式出现。而在 Balance 结构中,是没有这个模式的。

# 区块链的存储设计

# 交易

交易是现实世界与区块链网络沟通的唯一媒介,是现实操作在区块链网络中的投影。

区块链中的交易不仅仅只是转账,在这里,它的概念已经有所扩展。

  • 从行为的角度解释,交易等同于操作。我们向区块链网络提交一笔交易实质上是发起了一个操作,而操作的具体内容与特定区块链协议有关,比如在以太坊中,一个操作可能就是执行了智能合约中的一个方法。

  • 从计算机技术的角度分析,交易实质就是原子事物。交易是区块链网络中数据的最小组成部分。一笔交易提交后,它只能有两种状态,要么成功要么失败,不可能存在成功了一半的情况。

下图是一个通用的交易属性模板。不过需要注意的是,并不是所有的区块链都遵循下图中的规则。不同区块链对交易的定义虽然一致,属性字段却有所差异。

可以看到,一笔交易通常有 8 个属性(交易哈希本身也是一个属性)。

  • FromTo 分别指向交易的发起方及接收方,比如一笔货币的转账当然需要有转钱的跟收钱的。

  • 智能合约标识的是当前这笔交易要执行智能合约的名称,随后附带了执行智能合约对应的方法以及执行该方法时应该附带的参数列表

  • 时间戳表示该交易在客户端构建的时间。这个时间是客户端独立添加的,但是我们也不用担心该时间与标准时间的差异,因为区块链网络在接收这笔交易的时候,会有交易时间的校验,过早与过晚的交易并不会被网络接受,这在一定程度上限制了作假的可能性。

  • 签名一般情况下是 From 字段的账户进行签发的,用于向网络证明这笔交易确实是这个账户构建的,而不是其他人伪造的,主要是使用账户拥有者手中的私钥对交易进行签名,而私钥只有账户拥有者持有。就像我们平常生活中使用的印章,只不过私钥被伪造的几率几乎没有,除非被盗。

  • 交易哈希可以作为交易在区块链网络中的标识,且该标识不在交易的字段内容中。就像身份证可以代表一个人,但身份证并不是这个人的一部分。

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

# 区块

区块链是时间段的数据前后关联依次串联整合成的信息链条,而每一时间段的数据就称之为区块,区块是交易的容器

区块是指将节点一段时间内收到的所有(有效)交易打包而形成的一种数据结构。注意,有些区块链的设计也包括了无效交易。

从图中可以看出,区块分成了区块头跟区块体。

区块头包含该区块的基础属性,其中重要的属性主要有 4 个:

  • 前置区块哈希用于区块间的关联;

  • 交易根哈希用于区块与交易的关联;

  • 区块高度用于标记当前区块在区块链中的位置,方便定位;

  • 时间戳记录了区块打包的时间。

区块体则只有交易,且交易是有先后顺序的,一般是按照交易的时间戳字段进行排序。

# 区块间关联

每一个区块都会包含前置区块哈希作为逻辑关联两个区块的那个锚点。

区块哈希跟交易哈希类似,是区块的外置属性,在区块构建完成后才能得到。如果我们从当前区块一步一步往前追踪,最终会找到创世区块,而创世区块也是有前置区块哈希的,只不过是一个空值。比如我们可以通过以太坊浏览器 (opens new window)查看创世区块的前置哈希。

# 默克尔树

默克尔树 (opens new window)是一种树状结构,一般情况下至少有三层,分别是叶子节点,中间节点以及根节点,中间节点的层数取决于叶子节点的数量,叶子节点的数量越多,默克尔树的深度就越高。引入它主要是用来处理区块与交易的关联关系。

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

从上面的图中可以发现,区块体中包含的交易所对应的交易哈希,可以作为默克尔树的叶子节点,然后依次往上进行哈希计算,最后得到的根哈希就是区块体所有交易的交易根哈希,这个数据将会记录在区块头中。

之所以引入默克尔树这种数据结构,是因为叶子节点哈希的任何变化都会传递至其父节点,一层层向上直到根节点,这就意味着根节点的值其实包含了所有叶子节点的哈希,但是却将可能被篡改的交易分开处理了,这样一旦出现问题,我们很容易就能判断出出错的分支。这提高了数据校验的灵活性,减少了很多不必要的资源浪费。

# 状态

在区块链中执行的每一笔交易都有一个输出,而状态就是交易执行后输出的累积

比如:2 + 3 + (4 * 7) + (8 - 9 / 3) + 23 = 61,“=” 左边的每一个加法旁边的表达式都可以认为是一笔交易记录,“=” 右边的 61 则是交易执行后累积后的状态。

# 有限状态机

有限状态机是指在一个封闭的系统中,如果状态起始条件一致,状态改变条件顺序一致,最终一定会得到一致的结果。

而区块链按时间顺序记录了所有的交易,因此即便丢失了状态,我们也可以很容易地重放状态,只要我们按照顺序再执行一次交易即可。所以从某种角度来讲,区块链也是一种有限状态机

既然可以重放状态,为什么还要保留状态呢?

如果我们现在正在执行一笔交易需要某个输入,而这个输入跟之前中间某个区块里某笔交易的输出有关。

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

总的来说,状态的生成离不开区块,但区块的新增需要状态进行加速。

# 与数据库的异同

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

# 状态模型

根据区块链的定位的不同,我们大致可以将状态模型的设计归纳为三种模型。

# UTXO 模型

这种模型主要是被以比特币为首的专注于数字货币的区块链所使用,即未花费的交易输出(Unspent Transaction Outputs)。

UTXO 的核心设计思路是无状态,它记录的是交易事件,而不记录最终状态,也就是说只记录变更事件,用户需要根据历史记录自行计算余额

在此模型中,每一笔交易都应该有 N 个交易输入,同时产生 M 个交易输出(N 与 M 可以不等)。其中,交易输入是前序任意交易的未花费的交易输出。如果当前交易成交,该前序交易的输出也就变成了成交的交易输入,也就失去了再次成为交易输入的资格。

UTXO 模型 (opens new window)能够追踪数字货币的流向:未花费的交易输入告知货币是从哪里来的,未花费的交易输出告知货币往哪里去。

# 账户模型

这种模型被以太坊区块链所使用,通过数字的加减表示账户余额的变化。

每一笔交易的执行,都会实现不同账户间余额的动态平衡,你我之间转账,你支出了 1 块钱,你的账户余额减 1,同时我的账户余额加 1,这种模型更符合我们日常生活的认知。

同时,账户模型除表示余额以外,也支持自定义数据的存储,可以在基础账户之上衍生出智能合约数据存储。

# UTXO 模型 vs 账户模型

  1. 存储空间,UTXO 占用空间比账户模型高,因为账户模型只记录最终状态。

  2. 易用性,UTXO 比较难处理,账户模型简单容易理解。例如 UTXO 在使用上,还需要配合高效的 UTXO 组装算法,这个算法要求尽可能降低输入输出的个数,还要让 “零钱“ 归整,算法的复杂度相比账户余额无疑要高。而账户模型具有较高的自由度,可以让智能合约有更好的发挥空间,并且它避免了 UTXO 的复杂组装逻辑,精度控制上也更为得心应手。

  3. 安全性,UTXO 比账户模型更安全,UTXO 本身具备 ACID 的记账机制,而账户模型需要自行处理,例如重放攻击。

从技术选择上来看,比特币选择 UTXO 是为了满足支付的安全性,以太坊选择账户模型是为了智能合约的自由度。

# 通用模型

这种模型没有内置状态属性,可存储任意自定义数据,被广泛应用在联盟链中。

联盟链的定位是支持企业级应用的区块链平台,而企业业务的种类及模式是无法预知的,因此无法在设计中内定状态模型。索性就将状态的设计工作留给企业应用开发者,状态可以自定义,而链本身只提供通用数据接口。

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

总的来说,区块链的存储设计没有定式。

# 区块链与密码学

密码学是一门研究将明文信息加密处理与传递,以及解析加密信息的基础学科。

信息的安全应依赖于密钥的保密,而不是加密算法的保密,这是现代密码学设计的基本原则。

哈希算法可用于保证数据完整性外,还能用来构建由区块哈希关联的哈希链条,增加作恶篡改的成本。

区块链中不直接使用非对称加密算法,而是使用数字签名。这既保证了交易完整性,又证明了交易发起者的身份。

V 神罗列的区块链中涉及的密码学清单 (opens new window)

# 区块链与密码学的关系

中本聪在比特币白皮书中开篇就说,比特币是基于密码学构建的去信任数字货币。

这句话把密码学与区块链的关系说得很清楚,密码学是因,区块链是果。

密码学是先于区块链产生的基础学科,有完备的理论及技术体系。是中本聪及其先行者们在理解及运用密码学的过程中,看到了基于密码学创造数字货币的可能性。正因为哈希算法有校验数据完备性的能力,中本聪才会想到利用区块哈希前后关联形成区块链;也是因为数字签名有证明所有权的能力,所以才会基于数字签名去证明数字货币所有权问题。

因此,区块链之所以有独特的性质,是因为密码学中的某些算法已经有了这些性质的雏形,只不过是区块链是将这些算法加以揉和,最终以一个整体呈现给我们。

# 哈希算法

哈希算法 (opens new window)又称散列函数,它可以将任意长度的数据转换成短的、固定长度的数据指纹。

哈希算法不是只有一个固定的实现,而是一类算法的统称,目前流行的 Hash 算法包括了 MD5、SHA-1 和 SHA-2

其中 MD5 被证明不具有强抗碰撞性

SHA(Secure Hash Algorithm)是一个 Hash 函数族,分为 SHA-1、SHA-2、SHA-3,代表了三代哈希标准,目前使用比较多的是 SHA-2 系列

  • 第一代的 SHA-1 基于 MD4 设计,并且模仿了该算法,SHA-1 已被证明了不具备 “强抗碰撞性”,所以安全性不够高。

  • 为了提高安全性,第二代 SHA-2 一共包含了 SHA-224、SHA-256、SHA-384,和 SHA-512 算法,它们跟 SHA-1 算法原理类似。

  • SHA-3 相关算法也已被提出,它的出现并不是要取代 SHA-2,由于对 MD5、和 SHA-1 出现成功的破解,我们需要一个不同与之前算法,可替换的加密散列算法,也就是现在的 SHA-3。

要评判一个哈希算法是否足够优秀,有以下 4 个标准:

  • 正向快速:如果给定信息和算法规则,可以在有限的时间内计算得到信息的哈希结果。

  • 逆向困难:如果给定哈希结果,在有限的时间内基本不可能逆推出原始信息。

  • 输入敏感:原始信息即使发生一丁点的变化,重新计算的哈希值与之前比较都应该有很大的不同。

  • 避免碰撞:在设计哈希算法时,应该避免不同的明文信息产生相同的哈希值。

区块链中用到哈希算法的地方主要是交易哈希区块哈希,主要功能就是校验交易及区块的完整性,以及充当区块链网络中交易及区块的唯一标识

在区块链数据落盘的时候,我们就可以使用交易哈希、区块哈希分别作为交易及区块的数据主键,只要保持了数据与标识对应索引关系,就可以把交易跟区块存储在任意数据库中。

此外,哈希算法还成就了区块链单节点的不可篡改特性。区块属性中包含了前一个区块的哈希,从而构建成一条由区块哈希关联的数据链条,所以我们称区块链为哈希链也不为过。利用哈希算法对输入的敏感性,作恶者如想篡改区块链数据,必须从被修改处开始依次修改后续的全部区块,哈希算法的加入增加了作恶者篡改的成本。

# 非对称加密算法

对称与非对称体现在对密钥的处理上。

  • 对称表示加密和解密都使用同一套密钥。

  • 而非对称加密却不一样,分为公钥跟私钥,如果使用公钥加密,只有用对应的私钥才能解密,反之亦然。

对称加密算法要想保证密钥不被泄露,最好的办法是面对面协商,而且即便是面对面协商了密钥,后续也不能多次使用,否则使用次数越多,泄密风险越高,且不能保证中途没有其他人篡改。常见的对称加密算法有 DES、3DES、AES、IDEA

非对称加密算法的密钥是一对,分为公钥跟私钥。公钥可以随便公开,而私钥需要私密保存,只要私钥不被泄露,信息交换过程就是安全的。

非对称加密算法虽然解决了对称加密算法使用过程中遇到的问题,但其加解密的效率是远不如对称加密算法的。因此,在使用过程中常采用混用的方式,即明文数据采用对称加密算法进行加密,然后使用非对称加密算法加密对称加密的密钥和明文数据哈希,对方收到信息后,用匹配成对的另一个密钥解密数据并核对明文数据哈希,混用的方式可很好的平衡安全性与时效性。

非对称加密算法跟哈希算法一样,也是一类算法的统称。现用的比较多的是 RSA (opens new window)ECC 椭圆曲线加密算法 (opens new window)。RSA 多用于互联网信息传输中,比如我们上网用到的 https 通信,而在区块链中基本都使用的是 ECC 类的变种,比如 ECDSA 跟 ED25519 等。相较于 RSA,ECC 密钥较短,在拥有更高安全性的同时还有更好的性能。

# 数字签名

区块链中对非对称加密算法的使用并不是直接被用作数据加密,而是利用其具备身份确权的能力,也就是数字签名。

当你通过数字货币手机钱包创建了一个账户,此时区块链网络并不知道,只有当你接收到一笔转账之后,网络中才有你这个账户的信息。

那如何确认这个账户是属于你的呢?

非常简单,只要你能证明你可以花费账户中的余额就可以了,而这证明的关键就在于数字签名。既然账户是公钥的形变表示,那么必定存在与之对应的私钥,且只存在你的手中。

数字签名的生成和验证过程如下:

首先对交易内容进行哈希计算得到交易摘要,接着用手中的私钥对交易摘要进行加密,而加密的结果就是交易的签名。

如果要验证交易,只需要按照相反的流程进行就可以了,将交易签名使用对应的公钥解密得到签名中包含交易摘要,同时将明文的交易内容利用哈希算法再计算交易摘要,然后将签名中的交易摘要与自主计算的交易摘要进行对比,如果匹配,则表示交易验证成功。

数字签名的本质也是一种加密,只不过针对的是数据的哈希摘要,并不是数据本身。

这么做的好处有两点:

  • 一方面证明了确实是你自己构建的这笔交易,因为其他人没有你的私钥,无法假冒。

  • 另一方面,因为数字签名是有哈希算法参与的,因此也继承了哈希算法的特性,能保障交易的完整性,确保了交易不会被他人无故篡改。

# 区块链与点对点网络

区块链网络一直处在中心化与绝对去中心化的动态平衡中。

因为节点发现机制的不同处理,点对点网络衍生出了不同的网络拓扑结构。

# 网络连接

除少数支持 UDP 协议的区块链项目外,绝大部分的区块链项目所使用的底层网络协议依然是 TCP 协议。

所以从网络协议的角度来看,区块链其实是基于 TCP/IP 网络协议的,这与 HTTP 协议、SMTP 协议是处在同一层,也就是应用层。

以 HTTP 协议为代表的、与服务端的交互模式在区块链上被彻底打破了,变更为完全的点对点拓扑结构,这也是以太坊提出的 Web3.0 的由来。

比特币的 P2P 网络是一个非常复杂的结构,考虑到矿池内部的挖矿交互协议与轻节点。它是基于 TCP 构建的,主网默认通信端口为 8333。

以太坊的 P2P 网络则与比特币不太相同,以太坊 P2P 网络是一个完全加密的网络,提供 UDP 和 TCP 两种连接方式,主网默认 TCP 通信端口是 30303,推荐的 UDP 发现端口为 30301。

# 网络模型

在日常工作生活中,我们接触的大部分网络应用架构都是客户端 - 服务器模型。这个模型的运行机制是:各个客户端向服务器发送请求,而服务端负责接收并处理请求,最终给客户端返回处理结果。这是一个中心化的网络架构,其服务能力完全取决于中心的服务器,如果中心服务器因意外导致宕机,那整个服务就瘫痪了。整个应用的可用性仅依赖于服务器的活性,与客户端无关。

而点对点网络则完全不同,它是一种分布式的网络架构,并不存在单一的中心服务器。网络中每个节点的权利与义务都是一致的。每个节点都拥有向网络中其他节点发起请求的权利,同时也有着必须响应其他节点请求的义务。

节点的权利与义务对等意味着点对点网络的可用性是随着节点数的增多而增强的,网络的运行并不依赖任何单一节点,节点可以任意地加入或者退出。即使一些节点宕机或者遭受攻击,只要还有正常运行的节点,整个系统依旧可以照常运作。

# 拓扑结构

只有一个节点的网络实质就是中心化网络,此时区块链表现为中心化。而如果网络中所有的节点两两之间建立连接,此时点对点网络可以看作是完美对称的,区块链也就表现出绝对去中心化特性。

但如果我们允许点对点网络在这两个极端理论值间左右摇摆,就会发现区块链网络会一直处于中心化与绝对去中心化之间的动态平衡之中,而对去中心化程度的考量主要依托于对点对点网络拓扑结构的选择。

相比中心化网络,点对点网络虽然优势明显,但它的不足也同样明显,那就是新的节点加入网络之前,必须知道至少一个已经存在于网络里的节点,不然这个新节点跟整个网络就是脱钩的。

这就像在中心化网络中,客户端要想让服务器响应自己的请求,必须先将自己的请求发送到服务器,而这就要求客户端知道服务器在哪。而点对点网络则不一样,所有节点互为服务器客户端,因此节点必须知道其他节点的地址,才能加入网络。

对节点发现机制处理的不同,也就形成了不同的网络拓扑结构。主要有以下 4 种:

1. 中心索引网络拓扑

这种网络拓扑结构引入了一个中心索引节点,用来保存其他所有节点的接入信息

新节点的加入首先将自身信息传入中心节点,从而换取已在网络中其他节点的连接信息,随后与其他节点组成点对点网络,这种结构与我们使用搜索引擎进行信息检索是类似的,但存在单点故障的可能性,一旦中心索引节点宕机,新节点将无法加入网络。

2. 无为而治网络拓扑

新节点选择连接一个已存在网络中的节点,被连接的节点可以告知新节点它连接的其他节点信息,这样新节点可以随机选择再连接到其他节点,这样就形成了一张没有规律的网络拓扑结构。

3. 混合网络拓扑

这种网络拓扑结构融合了前两种结构的特点,整个网络由多个种子节点形成主干网络,而其他普通节点则连接到某个种子节点,这样就形成了整体分散局部集中的混合结构。

4. 结构化网络拓扑

这种网络拓扑结构是结构化的,节点间的连接遵循某种算法,组成了一种有序的结构化网络,比如树形网络结构。大多数结构化网络的算法都是基于分布式哈希表 (opens new window)算法实现的,这是一种用于在大量节点的系统中快速定位目标节点的索引算法。

# 区块链网络拓扑

1. 比特币:混合型

比特币采用的是类似于混合型的网络拓扑结构,一个新节点的加入需要给节点指定几个已在比特币网络中的相邻节点信息,可以是普通节点,也可以是种子节点。

当建立节点间连接以后,新节点将自身信息发送给相邻节点,相邻节点再将新节点的信息依次转发给它们各自的相邻节点,从而保证了新节点信息在网络中被广泛传播。新节点也可以从相邻节点获取该节点的相邻节点信息,从而选择性地连接更多节点,增强节点自身与整个网络连接的稳定性。

比特币中的点对点网络相对简单,也更容易理解,但信息传递的效率不高,并且对网络带宽的负载要求较高。

2. 以太坊:结构化

以太坊使用的是结构化网络拓扑,打造这种结构,离不开基于分布式哈希表思想的 Kademlia 算法 (opens new window)

Kademlia 算法定义了一种节点间距离计算的方法,用于新节点的发现。

节点 A 首先从自身存储节点信息的 K 桶中找出 2 个与自己距离最近的节点,之后请求这 2 个节点,要求它们从各自的 K 桶中分别找出 2 个与节点 A 更近的节点。那么节点 A 最多可以得到 2 × 2 个新节点信息,随后再请求这 2×2 个新节点中距离节点 A 最近的 2 个节点,让它们再分别返回与节点 A 距离更近的 2 个节点,整个过程持续迭代,直到没有新节点被发现。

通过这种办法,节点 A 只与自己距离最近的节点连接,这保持了以太坊网络中节点的有序。需要注意的是,节点间的距离是逻辑距离,而并非是物理距离。

通过对比特币、以太坊对不同网络拓扑的选择,我们可以发现,区块链中选择网络结构是没有定式的,没有唯一标准。

3. 联盟链:不太重视

联盟链对点对点网络的重视程度不如公链,主要有两方面原因:

  • 一方面联盟链的节点是确定的,很少出现随时加入,随时退出的需求;

  • 另一方面联盟链节点个数比较少,并不需要节点发现机制引导新节点的加入。

# 交易扩散

区块链网络不生产交易,而只是交易的搬运工。

在区块链网络外围有大量的手机、电脑、汽车等外联设备,这些设备与任意的区块链节点连接,就能从该节点获取与自身相关的信息,诸如余额、历史交易等等。同时,外联设备所构建的交易会随之发送到与之相连的节点,所以它们是区块链网络的交易源头。

当外联设备将交易发送至某一区块链节点后,节点随后就将交易发送到了和它连接的、相邻的其他节点,其他节点依次将交易扩散给其连接的节点,而最终会有一个时刻,所有的节点都会收到该交易。

这跟生活中传递八卦的场景很像,所以这种模式也被称为八卦协议

在这种传播过程中,不同网络拓扑对重复接收相同交易的处理上是有差别的。

  • 以太坊网络的节点只与自己最近距离的相邻节点连接,交易的扩散并不存在回路的可能性,它的扩散路径更像是一种单向的持续向外广播,就像水永远只向低处流一样,交易会逐渐远离最初的节点,交易扩散效率较高。

  • 比特币的交易扩散对此的处理则有所不同。它的网络拓扑是随机的,交易扩散的时候是扩散至与之连接的节点,但扩散前并不知道对方是否已经接收过相同的交易,因此网络扩散的效率是较低的。

随着网络节点规模的扩大,节点间连接关系更为无序,大量的网络带宽浪费在对交易的重复扩散中。节点接收到重复交易并不会再次理会,而是直接丢弃,白白做了无用功。因此,比特币的网络拓扑虽然结构简单,但也为此付出了代价。

# 区块链与共识算法

交易扩散的时候,自连接节点开始逐步向外扩散,最终会有一个时刻,所有的节点都可以收到该交易。这也就意味着去中心化网络中,想要实时保证每个节点数据状态一致比较困难,网络越分散,数据扩散的时间也越久,一致性也越难以达成。更不要说还存在专门搞破坏的作恶者,故意阻碍一致性的达成。

因此,需要有一种机制去协调,使其在一定程度上约束节点的行为,来保证整个区块链网络保持状态的一致性,这种机制就是共识算法

共识算法可以说是区块链技术的核心思想,是区块链运行的行为准则。

共识算法主要解决了两个问题:

  1. 谁有权利;

  2. 作弊问题。

# 拜占庭将军问题

拜占庭将军其实是计算机科学界长达几十年的、关于如何在分布式系统中有节点被故意破坏的情况下达成共识的讨论。

拜占庭将军问题要想有解,叛徒的数量不能大于等于所有将军数的 1/3。

# 共识的必要性

状态是节点接收到交易后执行结果的累积。如果每个节点接收到的交易是不一致的,那么即便现在不同节点处理同一笔交易,其前置状态也会有所不同,从而在此基础上累积成不同的状态结果。随着更多的交易被提交到区块链网络,这种状态的不一致会进一步加深。

如果我们把目光从单个节点转向整个网络,一个区块链节点出现问题,我们可以随时切换到任意其他节点继续工作,但如果此时两个节点的状态有差别,无疑会产生不一样的结果。而这影响了区块链去中心化的特性,是不可接受的。因此,我们非常有必要引入共识算法来保证节点间状态的一致。

# 为什么要引入区块

为什么区块链中要引入区块的概念呢,直接交易不是更好吗,反正状态是交易执行结果的累积?

这是因为交易的扩散是有时间消耗的,最终有个时刻所有的节点都会收到该交易,但会是哪一个时刻谁都不知道。同时,交易的扩散也会受制于网络环境的影响,完全可能出现后发出的交易被某个节点先收到,先发出的交易后被收到,那这样累积的状态也是可能不一致的。

为了避免这些问题的出现,区块链是这样规定的:

节点会把一段时间内接收到的所有交易打个包组装成区块。区块的构建是有确切时间点的,这样就可以保证在这个时间点前的交易有序排列,而且区块是有编号的,即便因网络问题区块并未按照编号顺序进行扩散,其接收节点也可以等待前置区块接收到以后,再累积状态。

因此,区块链中对状态的共识实质就是对区块的共识,只要区块一致状态就一定一致。

# 理解共识的基础要点

1. 由谁来生产区块?

因为区块链是去中心化网络,节点间权利与义务是对等的,因此在任意一个时刻,任何节点都可以生产区块。但是以谁的为准呢?这是我们在理解区块链共识时需要首先搞清楚的问题。

2. 什么时刻可以达成共识?

分布式共识其实也蕴含一个前提,那就是需要在有限的时间内达成各节点间区块一致。如果共识过程无限期,那么共识本身就不成立了。

3. 有多少节点参与了共识?

通过对拜占庭将军问题的解析,我们知道共识的达成跟叛徒的数量息息相关,不同的共识对于叛徒的容忍程度是不一样的,我们常听到的少数服从多数,51% 攻击等等说的就是这一点。

# 实用拜占庭容错 PBFT

拜占庭容错共识将节点进行角色划分。经过有限次数的网络通信,可以在有限时间内达成共识。但随着节点数量的增多,效率也会下降,因此仅适用于联盟链。

拜占庭容错共识中最著名的成果就是实用拜占庭容错算法,简称 PBFT

图中一个 request 被提交到 0 节点,再通过 0 节点发送给其他参与方节点,随之展开共识后续的流程。

在 PBFT 中,节点被赋予主节点从节点这两个角色,request 都从主节点发起,一次共识有且只有一个 request 存在。图中的 0 就是 request 的发起者,所以 0 是主节点。

如果从区块链角度来看,0 就是区块的生产者,且针对当前区块的共识并不存在潜在的竞争区块,也就是说在拜占庭容错共识中,主节点具有绝对的话语权。

不过,为了防止主节点作恶,节点角色是可以动态进行切换的,其他节点通过共识的结果可以推断出主节点是否是诚实节点,一旦主节点不是,则可以发起投票剥夺主节点的权利,这样就保证了系统的正常运行。

从图中还可以发现,PBFT 将共识信息的流转划分成 3 步,每一步都包含着多次的信息广播通信。通信虽然需要时间,但是只要能走完整个流程,就代表着共识可以达成,而且一旦达成就不再改变,可以说拜占庭容错共识是强一致共识协议。

一次共识的达成,PBFT 需要进行多次的网络通信,如果将节点数进一步扩展,通信的要求就会指数级增加,因此它并不适用于有大量节点参与的场景。

这个问题也并不仅仅是 PBFT 才存在,而是任何类 BFT 的共识算法都要面临的共同问题,虽然它们或多或少都在 PBFT 的基础上作出了改进,但面临像比特币以太坊这类拥有大量节点的公链网络时,基本都束手无策。

因此,BFT 类的共识算法主要是用在联盟链中,因为联盟链主要参与对象是企业,有准入机制的存在,一条链的参与方不会很多也很少存在动态增删节点的情形。

# 工作量证明 PoW

比特币中的工作量证明算法(PoW) (opens new window)属于一种激励共识算法。

# PoW 是什么

PoW(Proof of Work) 的核心设计思路就是提出一个计算难题,但是这个难题答案的验证过程是非常容易的,这种特性称为计算不对称特性

在比特币中,这个难题就是以 SHA256 算法计算一个目标哈希,使得这个哈希值符合前 N 位全是 0

# PoW 如何防止作弊

在 PoW 这种机制中,计算资源(又称算力)是决定记账权的唯一因素。与之对应的,便是计算难度。计算难度又称作挖矿难度,计算难度是区块链为了控制产生答案的速度。

PoW 在保证公链网络节点公开进出的基础上,降低了节点间候选区块的提案数量,让网络可以达成最终一致性。

虽然在公链网络中,每个节点都可以独立的将自己一段时间内搜集到的交易打包成区块,但是你创建的区块必须满足一定的条件,否则就算区块被全网广播了,也是一个错误的区块,其他节点会拒绝接受,也就是说无法达成共识。

而这个条件就是利用哈希算法计算区块哈希,使得区块哈希以 N 个 0 开头,N 的多少取决于当前网络区块增长的速度,是一个动态调整的值。这样一来,PoW 就限制了一段时间内网络中区块提案的个数。

虽然这种做法增加了难度,但并不能保证在一个公开的网络中,不会有多个节点同时计算出满足约束条件的区块,并向外扩散。而且就算区块创建的时间有先后顺序的差别,但网络扩散是无序随机广播的,谁也保证不了谁会被先收到,极有可能一些节点收到了满足条件的区块 A,而另一些节点收到满足条件的区块 B,那到底以谁的为准呢?

此时有另一条规定:比特币网络允许有多条区块链存在,但只认同节点能接收到的最长的那条区块链是全网络共识的链,其余短的区块链都是无效链。

这也就意味着,节点当前所累积的最长链可能并不是最终的结果,在某个时刻它可能收到比节点本地存储更长的链,此时节点就应该切换区块链,否则有很大概率它所维系的区块链并不是全网络共识的结果。

通过这两条规定,比特币巧妙解决了如何在分布式系统中达成共识的问题。与拜占庭容错共识相比,在无节点角色区分的情况下降低了区块提案的个数,同时将一致性从强一致性放宽到最终一致性,虽然效率有所下降,但却达到了相同的效果。

我们也可以从共识的角度来分析下怎样保证比特币的不可篡改特性。

作恶者如果想篡改区块,其目标就是要计算出满足条件的替代区块,并使得该区块所在的链成为全网中最长的区块链。

而区块哈希的计算几乎没有捷径可走,必须老老实实计算,这就要求作恶者必须拥有占比全网总的计算资源的绝大部分,才能有机会将自己篡改的区块链变成全网路中最长的链,因为你在篡改的同时,被大多数节点认可的最长的链,它也在不断地向前延伸。

因此,对比特币网络的篡改,实质是对计算资源(算力)的争夺,谁拥有更多的计算资源,谁的话语权就大,这也就是我们通常听到的 51% 攻击。

其他激励共识算法也遵循相同的道理,比如:

  • 权益证明算法(PoS),谁拥有更多的权益,就更有机会去争夺下一个区块的提案权。

  • 委托权益证明算法(DPoS),个人的力量是有限的,但是如果把很多人手中的权益集中起来,就可以以一种联合代表的形式参与到对区块的共识当中。

它们与 PoW 相比,无非是减少了对计算资源的浪费,但本质并无差别。

# PoW 中的激励机制

PoW 中一个有趣的设计是激励机制,在 PoW 共识机制下,我们假设所有参与者都是理性的,理性的意思就是单纯逐利,不考虑家庭、爱好等其他因素。有了理性的前提,PoW 共识机制会给每个诚实的记账者予以奖励,这个设计可以抗击作弊收益的问题

理性的人如果作弊、篡改账本肯定需要投入成本,也就是计算资源,收益是篡改账本获得的收益减去投入成本,这个收益往往小于诚实计算所获得的收益。所以,作弊者在作弊过程中投入的计算资源过大,反而得不偿失。

公链是公开的网络,可以看作是一个小型的社会,所有的参与方都是基于一个共同的目标,参与到社会的建设中,但这必须需要付出一定的成本,比如 PoW 共识的成本就是对计算资源的消耗、对电能的消耗。

如果没有激励,参与者的成本无从分担,就无法保证区块链生态的平稳发展。通过激励机制,使得各参与节点能摒弃信任中介,建立一种无组织、自协作的新型生产关系网络,并以此来吸引更多节点加入,共同维持区块链的正常运转。

关于区块链中的激励问题可以阅读这篇文章:姚前:区块链技术的激励相容:基于博弈论的经济分析 (opens new window)

# 解决双花攻击

双花攻击是指一个代币被花费了两次,这在任意的区块链系统中是不被允许的。

如果避免了双花问题,基本就能避免作弊中收益过大的问题,因为攻击者首先要窃取到你的私钥,同时又能控制你的计算资源(算力)。

在区块链中,广播的内容分为两种:未确认的交易和区块(区块中的所有交易被称为已确认的交易)

所有记账节点都会遵循以下两条规则:

  • 一个代币如果已经被花费,那么会被标记成已花费,如果再次接收到这个代币被花费的请求,那么记账节点会拒绝打包这笔交易;

  • 如果同时接收到两个区块,这两个区块中装的两笔交易出现了一个代币被花费了两次的情况,这种情况就是分叉(Fork),那么选择挖矿难度比较大的那个区块。

规则一避免了未确认的交易出现双花,规则二基本避免已经确认的交易中的双花问题。

假设作弊者的计算资源(算力)占整个系统的 30%,那么连续两次获得记账权的概率是 9%,看起来作弊的可能性还是挺高的,如果是连续 6 次获得记账权呢?概率直降到万分之七。在比特币中,这个 6 也就是 6 次确认,表示连续 6 个块过去了,如果我的交易没有被双花的话,那么它被篡改的可能性将越来越小,最后变得几乎不可能被篡改。这也是区块链不可被篡改说法的由来

# PoW 的优劣势

1. 优势

  • 可以稳定币价,因为在 PoW 币种下,矿工的纯收益来自 Coinbase 奖励减去设备和运营成本,成本会驱使矿工至少将币价维持在一个稳定水平,所以攻击者很难在短时间内获得大量算力来攻击主链。

  • 目前依然是工业成熟度最高的区块共识算法,所以在用户信任度上、矿工基础上都有很好的受众。

2. 劣势

  • 非常消耗计算资源,耗电耗能源。因为每次产生新的区块都会让相当一部分工作量证明白白浪费了,也就是将计算资源浪费了。这个问题目前无解。

  • 一直会有 51% 算力攻击的问题,即攻击者只需要购买超过全网 51% 算力设备,即可发起 “双花攻击”,甚至 “重放攻击” 等多种高收益攻击,这个问题目前没有解决方案。

  • 自私挖矿的问题,自私挖矿是一种特殊的攻击类型,不会影响区块链正常运转,但是会形成矿霸,间接造成 51% 攻击。

总的来说,PoW 共识机制是一种简单粗暴的共识算法,它不要求高质量的 P2P 网络资源,它可以为公链提供稳定有效的记账者筛选机制。同时它也面临了挖矿中心化严重的问题,这也促使人们研究出新的共识机制。

# 权益证明 PoS

# PoS 的由来

PoS(Proof of Stake) 最早出现在点点币的创始人 Sunny King 的白皮书中,它的目的就是为了解决使用 PoW 挖矿出现大量资源浪费的问题

PoS 共识机制一经提出就引起了广泛关注,Sunny King 也基于 PoW 的基础框架实现了第一代 PoS 区块链:点点币。

# PoS 是什么

PoW 是通过计算能力来获得记账权的,计算能力越强,获得记账权的概率越大

而 PoS 是通过财产证明来获得记账权的,节点所拥有的币龄越多,获得的记账的概率就越大

币龄(CoinAge)就是币数量乘以天数。

比如你有 100 个币,在某个地址上 9 天没有动,那么产生的币龄就是 900,如果你把这个地址上这 100 币转移到任意地址,包括你自己的地址,那么 900 个币龄就在转移过程中被花费了,你的币数量虽然还是 100 个,但是币龄变更为 0。币龄在数据链上就可以取到,任何人都可以验证。

实际上,PoS 的发展经历了三个版本,第一个版本是以点点币为代表的 PoS1.0 版本,这个版本中使用的是币龄;第二个版本的代表是黑币(blackcoin),对应使用的是币数量,相当于是财产证明,后面黑币又升级到 PoS3.0,这个版本又回到了币龄。

# PoS 的优劣势

1. 优势

PoS 解决了 PoW 挖矿资源浪费的问题,以及 51% 攻击的问题(PoW 矿工如果积累了超过 51% 的算力,则可以一定程度篡改账本)。

怎么解决 51% 攻击的呢?

在 PoS 中,矿工挖矿的成本不再是物理设备和电费,而是虚拟代币,它的边际成本几乎为零,本质上 PoS 让挖矿者和使用者合二为一了。这也意味着如果挖矿者发起 51% 攻击,就需要拥有全网 51% 的币或币龄,这几乎不可能办到,即使你成功地实施了 51% 攻击,那么也意味着作为全网最大的持币大户的你,损失也会最大。

2. 劣势

  • 缺乏工业级的区块链应用,从逻辑上来看有点循环自证明的味道,就是用自己的币来维护系统的安全,而币的安全性是由系统保证的。所以现阶段 PoS 共识机制往往不是独立运行的,而是混合了 PoW 一起运行,这就可以弥补 PoS 的缺陷。

  • 目前也出现了矿池,也可能会出现中心化挖矿的风险。

  • 币发行的问题,最开始的时候,只有创始区块上有币,意味着只有这一个节点可以挖矿,只有让币分散出去才能让整个网络壮大,那么如何分散出去就是一个难题。早期 PoS 币种基本都采用了分阶段挖矿,即第一阶段是 PoW 挖矿,到第二阶段才是 PoS 挖矿。随着 ERC20 类型的标准合约代币的出现,这个问题被解决了,不再需要第一阶段改成 PoW,也可以将代币分散出去。

  • 由于币龄是与时间挂钩的,这也意味着用户可以无限囤积一定的币,等过了很久再一次性挖矿发起攻击。解决方案是:PoS 机制需要引入一个时间上限来控制时间因素的自然增长。

  • 虽然引入了时间上下限,用户还是倾向于囤积代币,这会造成币流通的不充分;基于此,瑞迪币引入了币龄按时间衰减,构造了权益速度证明,鼓励用户流动代币,而不是倾向于囤积代币。

  • 离线攻击,即使引入了时间上下限,时间仍然是自然流动的,也就是可以不需要要求挖矿节点长时间在线。挖矿是可以离线的,这简直是灾难,任意一个 PoS 机制的实践形式都必须避免这个问题,因为网络节点数量的多少直接关系到区块链网络的健壮性。

# 委托权益证明 DPoS

# DPoS 是什么

DPoS(Delegated Proof of Stake)是由 BM 一手创造的。DPoS 不是独立提出的共识算法,而是直接被 BM 应用到比特股项目中,在稳定运行了 3 年多后,又接着被 BM 构造成可复用的区块链工具箱:石墨烯。

虽然应用得很早,但 DPoS 算法直到 2017 年才被 BM 单独拎出来作了一篇 “DPoS 技术白皮书”,这期间伴随着比特股、Steemit、EOS 三个项目的依次发布。

DPoS 共识算法就是将 PoS 共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账,这个圈子可能是 21 个节点,也有可能是 101 个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。

# DPoS 详解

DPOS 共识算法-by BM (opens new window)

# DPoS 的优劣势

1. 优势

DPoS 提升了性能,即交易确认时间短。

DPoS 为了尽快确定交易顺序,过滤无效交易,所以规定了在正常情况下,所有记账节点轮流每 3 秒产生一个区块,轮到了某个记账节点出块时,必须在 3 秒内提交区块,否则就会错块。

假设一直没有记账节点错过自己顺序,那么他们生产的链条势必是最长的链条,如果记账节点在非指定时间生产区块被认为是无效的,每经过一轮,所有节点轮流出块的顺序就会发生重新洗牌。

2. 劣势

从某种角度来看,DPoS 是社区治理加上共识算法,不再是单纯的技术共识,这是与 PoW、PoS 算法最大的不同。

DPoS 的基本假设是相信节点是好的,所以尽可能快速选择记账节点,而把问题发生后的修复过程推迟到投票中,可以说 DPoS 并不考虑拜占庭容错问题,把拜占庭容错推给了社区治理,而在社区治理上可归纳为一切皆投票。

而现实生活中,很多情况下,投票并不能解决问题,比如投票人都是有惰性的,集齐所有人投票成本是很高的,如果记账节点没有上限,所有节点的投票都投给自己,DPoS 系统就会退化成 PoS 系统。

DPoS 共识机制本身将 “矿池” 纳入系统内部,并把它们统称为见证节点,虽然不会出现中心化挖矿的风险,但是 DPoS 由于节点数不多,并且见证节点权力较大,可以认为 DPoS 本身就是带中心化思路的共识机制。

# 智能合约

# 谜恋猫

谜恋猫是世界上首款广为人知的区块链游戏。

玩家可以在游戏中购买猫咪,通过配对就可以培育新猫。如果能够培育出稀有特征的猫咪,它的价值也就更高。而且每一只谜恋猫都独一无二,100% 归玩家所有,它无法被复制、拿走、或销毁。

这是一款具有革命性的产品,它的革命性不仅体现在扩展了区块链应用方向,而且使我们认识到:价值不仅可以通过数字货币锚定,还可以有任意独特的承载方式。

支撑这个游戏的就是运行在以太坊上的智能合约

# 智能合约基础

智能合约这一概念早在 20 世纪 90 年代就有人提出,这个人是从事智能合约和数字货币研究的尼克萨博(Nick Szabo)博士,尼克 1996 年在《Extopy》期刊上发表了对智能合约的描述,他认为智能合约是一个由数字表单指定的承诺,这个承诺包含关系到多方执行的一组协议

只不过因为当时缺少有效的载体,智能合约未能进一步发展。直到以太坊出现,才将区块链技术与智能合约相结合,最终呈现在我们面前。

智能合约是一个由计算机处理、可执行合约条款的交易协议,其总体目标是满足协议既定的条件,例如支付、抵押、保密协议。这可以降低合约欺诈造成的损失,降低仲裁和强制执行所产生的成本以及其他的交易成本。

如果将区块链技术分层,智能合约就相当于区块链技术体系架构中的能力层,它是外部世界与区块链网络交互的媒介。假如将区块链比作智能手机操作系统,那么智能合约就是操作系统提供的、用来构建各色各样应用的基础支撑能力。

智能合约与传统合同协议的差异在于约束力的不同,传统意义上的合同协议的约束力来自权威机构的背书,而智能合约只受制于代码约束及区块链信任约束

# 智能合约制定

智能合约标准的制定一般需要经过爆款、模仿、泡沫、思考、抽象、标准这 6 个阶段。

首先市场上必定要先出现一款爆款应用,因其创新的模式引得大家争相模仿,进一步粗暴的推动此类应用达到一个顶峰,随之而来的是泡沫的破灭。而当市场情绪变得冷静之后,有一些人会静下心来思考泡沫背后的深层逻辑,从而抽象出应用背后的蕴含的共性行为模式,进而将其总结成 EIP 提案,最终为未来类似应用场景提供标准化解决方案。

智能合约标准制定的不易,更凸显了价值网络的可贵。

# 智能合约标准模板

当任何人都可以写代码自定义业务逻辑的时候,也就意味着需要一套标准让人们降低开发门槛,标准化的接口让产品之间可以协作。下面介绍以太坊上的三种智能合约标准模板。

这三种模板都与 Token 有关,Token 往往代表了一种资产,这些资产在已经存在的其他区块链之上运行,资产还可以像商品一样交易,例如消费积分、游戏虚拟资产。Token 离具体的区块链应用也会更近,因为区块链应用的项目方通常也是 Token 的发行方。

目前最广泛使用的三种 Token 标准都是基于以太坊的,它们分别是 ERC20、ERC223、ERC721。ERC 表示 Ethereum Request for Comments,即以太坊意见征求稿

# ERC20

2015 年 11 月,V 神在 Github 上提交了 ERC20 代币的技术标准,随后 2016 年到 2017 年,大量的区块链项目都使用 ERC20 作为工具进行 ICO。这使得 ERC20 成为了区块链整个行业内的 Token 标准,可见这种标准的影响之大。

实际上 ERC20 代币是一类运行在以太坊区块链上的智能合约,只不过这些合约代码遵循一定的规范,这个规范就是 ERC20 标准,它规定了跨 Dapp 转移 Token、Token 交易以及一些使用接口。

ERC20 一共定义了 6 个函数和两个触发事件,它们都是使用 Solidity 语言编写的。

6 个函数描述了如何转移以及 Token 的相关数据如何被访问,市面上 99% 的 ERC20 Token 都可以找到这 6 个函数。2 个事件提供了 Approve 和 Transfer 的格式化输出。

# ERC223

在某些情况下,ERC20 也有些缺陷。

例如某人使用 ERC20 发送 100 个 Token 到另外一个账户,如果目标账户是一个合约账户,目标账户的合约代码如果不兼容 ERC20 标准怎么办呢?

此时由于合约代码无法识别交易,所以这笔交易就会被拒绝。并且以太坊使用的并不是 UTXO,这意味着合约之间不满足 ACID,那么很遗憾,发送方的这 100 个 Token 就永久地丢失了。

为了解决这个问题,非官方的社区开发者提交了 ERC223 模板,可以解决这个问题,使用者需要把既存的 ERC20 合约升级到 ERC223 合约。

ACID

Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)

# ERC721

ERC721 与 ERC20 最大的区别是:ERC721 定义了每一份 Token 都是唯一的,它们有唯一的标识

因此,ERC721 中 Token 的含义也转变成了一种物权所有权凭证,不再是 ERC20 中的同质资产。

2018 年初的以太坊养猫游戏就是一个智能合约。它基于 ERC721 标准,实际上也是一种 Token 标准。

# 以太坊

# Dapp

以太坊 Ethereum 项目的目标是打造一个去中心化的新一代互联网应用平台,这个平台称作 Dapp 平台

这些 Dapp 基于以太坊智能合约虚拟机开发、编译、部署,并且可以自定义业务逻辑,部署后全网可见且自动执行,理想情况下不存在宕机、审查、欺诈、第三方干预的情况。

Dapp 在运行过程中,可以被请求或其他事件触发,然后执行相应的逻辑,这些请求和事件是由以太坊上的交易产生的,不是来自本地操作系统的事件。

Dapp 运行过程中,每次状态发生变化,则意味着全网同步更新,大家的计算结果都是一致的,这有两个特性:

  • 所有 Dapp 的计算结果经过全网共识,一旦确认过几乎无法被伪造和篡改;

  • 由于必须经过全网共识,所以这限制了整个网络的容量。

# 以太坊的核心概念

以太坊核心概念包括:智能合约虚拟机 EVM 和 Solidity 编程语言、账户模型、以太币和 Gas,交易和消息

# 智能合约虚拟机 EVM 和 Solidity 编程语言

智能合约包含两部分:

一部分是开发语言,主要以 Solidity 为主,Dapp 开发者编写好代码以后,使用 Solidity 编译成十六进制字节码,然后部署到 EVM 上,也就是把合约广播到全网,等矿工打包后就形成了常年运行的 Dapp 了。

另一部分就是以太坊智能合约虚拟机 EVM,可以等价将它理解为 Javascript、Python 等脚本语言的执行引擎。它是一个轻量级的虚拟机隔离环境,它并不提供访问本地网络、进程、文件系统的功能,它更像是一个封闭的容器,这个容器里面装了一个正在运行 Dapp,可以看成是无法和外界交互的 Docker Container。

# 账户模型

以太坊上的账户有两种类型,第一类叫做合约账户 CA(Contracts Accounts),第二类叫做外部账户 EOA(Externally Owned Accounts)。简单理解就是:CA 是智能合约代码用的账户,EOA 是人用的账户

CA 可以存储并执行智能合约代码,它的智能被 EOA 激活,它也不保存和存储私钥,合约账户可以调用其他合约。

EOA 则是人们直接控制的账户,可以存储以太币,可以发送交易到合约账户,触发既定的逻辑。EOA 账户由公钥标识,由对应的私钥控制。

当合约账户被调用时,存储其中的智能合约可以在矿工处的虚拟机中自动执行,并消耗 Gas,如果 Gas 不足则会触发 “Out of Gas” 异常,被终止执行。

无论是 CA 还是 EOA,在以太坊内部都被看做状态对象(state objects),意思就是说这些账户都有自己的状态,EOA 具有以太币余额的状态,而 CA 除了余额,还多了合约存储状态

# 以太币和 Gas

以太币可以通过 PoW 挖矿而产生,主要通过 GPU 挖矿。挖出一个块可以换得 5 个以太币,并且还有一定的交易费、以及叔伯块的奖励。

Gas 是执行智能合约操作的燃料,智能合约的每一个步骤都会消耗 Gas,Gas 是由以太坊的平台代币以太币转化而来,最小单位是 wei,1ETH 相当于 10 的 18 次方 wei。

# 交易和消息

以太坊上的交易与比特币中的 UTXO 交易不同,它是指 EOA 账户将一个经过签名的数据包发送到另外一个账户的过程,这个过程产生的账户状态变化将被存储到以太坊区块链上。

以太坊上除了交易还有消息这个概念,消息指一个合约账户调用其他合约账户的过程,可以类比函数调用过程。

所以以太坊上的 Dapp 如果被触发,有两种可能,第一种是交易触发,第二种是消息触发

这两种的区别在于前者是 EOA 发起的,后者只能是其他合约账户发起的

状态对象的状态变化被以太坊共识机制记录下来,交易和消息驱动着状态的变化,于是,在一个开放式的网络中构建一个全球共享的 Dapp 变得十分方便。

以太坊上智能合约具有全网准实时同步、准确执行、去中心化运行、较低的人为干预风险等特性,EVM 和 Solidity 为全球开发者提供了较低的进入门槛。

# 以太坊改进提案 EIP

以太坊不仅是将智能合约引入到区块链中,为智能合约落地提供运行环境;更是为智能合约的推广及普及提供了通道,这就是以太坊改进提案 EIP (opens new window)

以太坊不仅提供技术能力支撑,还提供了可复用模板。入门难度降低了,对使用体验的提升影响深远。全世界的用户都可以提交各类以太坊改进意见稿,如果社区接收了意见,随后的以太坊新版本就会实现这些方案。这相当于在以太坊社区运营者跟用户间搭建了直通的交流通道。少数人的思路毕竟有限,但汇聚群众的智慧,平台的发展潜力就是无穷的。

而在这些改进方案中,有很大一部分方案是对智能合约标准的提议。

通过通用行为标准去引导智能合约的发展是一种捷径,价值网络的落地离不开智能合约标准的制定。

# 与比特币的主要区别

以太坊项目又被称作区块链 2.0 项目,这里 2.0 就是指智能合约

与比特币相比,以太坊首先不是一个单纯的数字货币项目,它可以提供全世界无差别的区块链智能合约应用平台,这个平台基于区块链四大核心技术要素,即 P2P 网络、共识机制、账户模型、加密模块。

除了以上的四个技术要素,以太坊还推出了 EVM —— 以太坊智能合约虚拟机,并且,它还推出了自己的智能合约语言 Solidity。并且还设计了下面的内容。

  • 研究并实现了自己的 PoW 挖矿算法 —— ETHASH,这是一个内存困难型的挖矿算法。

  • 叔伯块激励机制,降低了挖矿中心化的趋势。取消了 UTXO 模型,采用了账户模型和世界状态,提供了数据结构的可塑性。

  • 设计了 Gas 机制,避免程序死循环消耗全网资源的情况出现。研究并实现了自己的 PoS 共识算法 —— Casper,可防止 Nothing-at-Stake 攻击。

  • 以太坊提供了在区块链自由编程的能力,智能合约让所有人得以开发属于自己的 Dapp,这是与比特币作为单纯的数字货币所不具有的能力。

于是,区块链的开发者因为智能合约的出现开始分为两类。

  • 第一类是公链底层开发者,主要是以 C++ 和 Go 语言为主的全节点开发者,他们需要对区块链各个技术模块有很深的理解。

  • 第二类是智能合约开发者,也就是应用开发者,这类开发者对区块链的运行原理不需要理解很深,只需要会编写 Solidity,了解规范即可。

# 比特币

# 比特币历史

比特币历史 (opens new window)

# 比特币 BIP

比特币 BIP(Bitcoin Impovement Proposals) 是一种设计文档,用来描述比特币新特性的提案,第一个比特币 BIP 是 2011 年 8 月 19 号一个名为 Amir Taaki 的人提交的,编号 bip001,它描述了 BIP 本身是什么。

# 比特币扩容之争

扩容之争是比特币历史上影响较大的事件,它也是比特币社区治理的经典案例。扩容之争的背后其实是社区治理的难题:如何让社区达成一致。

扩容的需求是由于比特币的使用人数逐渐增长,于是比特币的网络也日益拥堵。关于如何解决这种网络拥堵的问题,比特币社区出现了两种不同的解决方案。

  • 方案一:极端扩容,直接将区块的上限进行扩容,它的优点是可以快速解决问题,缺点是十分直接,只能舒缓一时的拥堵,并没有从根本上解决问题,更不能带来新的特性。

  • 方案二:隔离见证,要求坚守 1MB 的容量上限,通过隔离见证的方法绕过 1MB 的限制。这种方式改动比特币交易的结构,它的优点是结构的改变可以带来崭新的特性,缺点也不少,不但花费的时间较长,用户的使用感知也并不算完美。

最后,极端扩容派在比特币主链上硬分叉出一条没有隔离见证的链,分叉之后的币就是比特现金(BitcoinCash),缩写 BCH,而隔离见证则成了现在我们看见的比特币

至此,扩容斗争进入双链对抗的时代。

比特币扩容纷争:双链的诞生 (opens new window)

# 扩容之争引起的 IFO

扩容之争基本在 2017 年 11 月结束,比特币硬分叉出比特币现金已经成了定局。

比特币现金的出现还带来了一件新事物,就是 IFO —— Initial Fork Offering,也就是分叉比特币形成新的数字代币,这其实就是 ICO 的替代品

ICO 的中文名是首次代币发行,又称为区块链众筹,这是一种新型的融资模式,投资者可以用手中的比特币或其他代币投到其他的区块链创始项目。ICO 从本质上来说就是一纸白皮书,接下来全靠吹,忽悠散户投币,“我要出一个新的代币了,你们快来买吧。”

而 IFO 的集资依靠的是与比特币的关联,“我要出一个代币了,这个代币是由比特币分叉出来的哦,你们快来买吧!”

自从 2017 年 9 月 4 号 ICO 被七部委发文明令禁止之后,国内的人就开始寻找替代品。比特币的分叉带来了全新的灵感,于是 IFO 应运而生。

# 链上治理

链上治理指的是人们直接在区块链发起社区提案,并进行决策的过程

这里首先要求的是链上支持基本治理协议,这套协议可以规定或强制执行提案,链上治理直接决定了区块链本身的发展方向。

链上治理的参与方包括了投资者、使用者、开发者、矿工四类人群。

链上治理与链下治理的区别在于,区块链本身是否提供强制执行的机制让少数服从多数

在链上治理协议中,参与者需要通过投票参与治理,而链下治理中,多数通过提案、社区见面开会等多种线下线上互动方式,让整个社区达成一致,扩容之争中的三次共识就是典型的链下治理。

# 各种类型的链上治理

1. 比特币 BIP 和区块投票

虽然比特币没有提供完整的链上治理机制,但是比特币也支持简单的投票机制,例如在区块中写入共识信息表示支持某项提案,矿工可以在区块中填写 NYA 表示支持纽约共识。

但这一切都是基于比特币的 BIP,首先得有 BIP,才能发起投票。BIP 的组织架构比较社区化,主要由 Github 上的一些开发者和核心社区成员组成。

矿工的所有行为也是非强制性的,当真正发生主网升级时,矿工仍可以选择不升级,这将带来分叉,也是所有人都不愿看到的。

2. 以太坊 Gas limit 投票

以太坊上提供了对 Gas 消耗的上限参数 —— Gas limit,矿工通过投票选择增加或减少 Gas limit,Gas limit 决定了单个区块上可以处理的智能合约数量,但这仅针对这一项细分功能,并不能决定整个区块链的发展。

实际上,以太坊的发展受 Vatalik 本身影响比较大,核心成员和早期资本的推动是以太坊治理的主要源动力。

3. 比特股 BTS 和柚子 EOS 的链上治理

EOS 区块链的链上治理结构是区块链宪法。实际上宪法也没有强制约束力,但是它成为了一种社区强制约束力,类似宣誓过程。

EOS 和比特股的治理结构来自于 DPoS 算法提供的投票过程,投票是根据币的数量作为权重的,使用者、投资者、开发者、矿工这四种角色中,其中把矿工和投资者进行了合并,受资本的要挟,风险比较大。

# NFT

# 同质化代币

所谓同质化代币,指的就是互相可以替代,且可以进行拆分的货币。

就比如人民币,你手中的 100 块跟我手里的 100 块的购买力并没有什么区别,而且我们还可以将 100 块钱分成 2 个 50 或者 10 个 10 块。

# 非同质化代币 NFT

NFT 是一个智能合约标准 EIP-721(721 是提案编号,NFT 是提案的名称),它的全称是非同质化代币。谜恋猫游戏背后的智能合约其实就是这个标准的由来。

每一个 NFT 都是独一无二,且不可拆分的。有了 NFT,我们就能够有一种手段将虚拟与现实的价值锚定。

比如房产抵押,房产信息具有唯一性且不可复制、拆分,如果能够通过 NFT 标记房产的所有权,那么就能实现房产在虚拟世界的锚定,而一旦锚定关系成立,我们就可以在区块链网络中实现对房产的转移,这个过程会像转账一样方便。

此外,还可以通过 NFT 完成多类资产的绑定,一张照片,一幅画,一首歌,一段文字,一张门票等等,任何具有资产属性的事物都可以将其登记成 NFT。

# 区块链存在的问题

# CAP 定理

区块链本身属于分布式系统,分布式系统有哪些局限、哪些约束,区块链一样也有。

在分布式领域,有个著名的 CAP 定理。

在 CAP 中:

  • Consistency 是一致性,表示同样数据在分布式系统中所有地方都是被复制成相同;

  • Availability 是可用性,表示所有在分布式系统活跃的节点都能够处理操作且能响应查询;

  • Partition tolerance 是分区容忍性,表示不同节点之间数据同步有意外情况产生时,能够容错。

一般情况下,CAP 理论认为不能同时拥有上述三种,只能同时选择两种。

因此,当应用到区块链上时,可以明显地发现区块链其实是一个 AP 系统,尤其在 A 这个指标上,也就是可用性做得非常好,所以相应地,C 就会降低,反映到具体系统中的交易吞吐量上,自然会也会降低。

当我们在分区容忍性和一致性中做取舍的时候,如果强调 “不可篡改” “去中心化” 这两个特性,就会明显感觉到区块链跟不上大吞吐量的业务。

因此,在做技术选型时,如果去中心化不是强需求,还是建议使用中心化的解决方案。

# FLP 不可能性

这也是分布式领域一个著名的定理。

简单来说就是,即使网络通信完全可靠,只要产生了拜占庭错误,就不存在一个确定性的共识算法能够为异步分布式系统提供一致性。即不存在一个通用的共识算法可以解决所有的拜占庭错误

# 存储冗余

区块链技术的第一个特点是去中心化,而这个特点的负面作用就是导致了存储冗余。

要想实现去中心化,就要让区块链网络中所有节点都是平等的,没有服务端客户端的区别,即便其他区块链节点都失效了,只要保留了一个节点,整个网络还是可以恢复的。

而要想实现只有一个节点也能恢复的目的,就意味着每个节点都要继承区块链网络里的全套 “DNA”,也就是保存从创世区块到最新区块的完整数据。这样,随着区块链网络持续运行、交易量不断增加,单节点的存储负载自然越来越多。

如果我们将视角转换至整个区块链网络,就会发现,每增加一个节点,整个网络就多了一份数据的备份,整个系统的存储负载会随着区块链节点的增加而线性增长。

比特币网络的历史数据量可以查看这里,以太坊网络的历史数据量可以查看这里 (opens new window)

虽然随着技术的发展,磁盘的成本在逐渐降低,区块数据的增长不会线性的增加存储成本。站在参与节点的角度来看,每个节点只保留一份区块链数据,成本是分摊给了网络的每一个参与者,并不会因为存储而增加额外的成本。

但终究会有一个时间临界点,会导致独立节点的存储使用量超过现阶段个人电脑的存储上限,而这也就会失去大量的小节点,从而导致去中心化程度的降低,不利于区块链网络的持续长久发展。而且,随着数据量的增多,通过网络同步区块数据也变得越来越困难,有些节点同步区块的速度还跟不上整个网络区块产生的速度,如果这样的情况越来越普遍,同步将变得没有意义。

📌 数据归档

解决存储冗余问题最简单的方法就是删除历史数据,完成数据的归档

数据归档是将区块链从某历史区块开始,将之前的数据清理掉,但随后的区块还保持原有的顺序不变,因此数据归档的本质是在保持不可篡改的前提下牺牲部分可追溯性

如果我们能在将区块历史数据清理以后,还提供一种方式将被归档的区块再次读取出来,那数据归档其实是一个比较优秀的解决方案。

不过在公链中几乎不采用这种方法,这是因为公链是公开的,所以你不能预设所有用户的使用场景,有些应用可能赖以生存的根源就在于可追溯性,社区不能剥夺这部分用户的权利。

因此,数据归档方案一般都是联盟链网络在使用,因为联盟链的业务场景比较单一,而且可以提前预知。如果不太需要可追溯性,就可以将部分历史数据归档,但如果需要时,也可以通过技术手段恢复。

📌 节点角色分类

对于一位比特币持有者来说,可能只关心他的余额以及历史交易记录,其他的信息一概不关心。因此他并不需要因为这一小小的需求去同步整个别特币网络的存量数据,这些数据对他来说并没有什么意义。

但对于某些大型的节点来说,它就可以同步历史数据,并以此数据作为生产资料,对外提供相关服务,比如挖矿的矿工节点以及区块链浏览器背后的节点。

公链普遍采取的就是这种节点角色分类的方案。

可以发现,虽然节点角色区分是缓解存储冗余的一种有效手段,但这是以牺牲去中心化特性作为前提的,从某种程度来说,这也是一种妥协。

总的来说,联盟链以牺牲区块链可追溯性作为突破口,而公链以牺牲去中心化为前提。

# 量子计算威胁

很多人会担心,量子计算机一旦成熟,以比特币为首的区块链系统就会面临崩溃。他们主要担心量子计算机可以瞬间把以比特币为首的、使用 PoW 共识算法的区块链的奖励都挖完,从而让其他矿工无币可挖;或者使用量子计算机破解比特币的公私钥,盗取其他用户的比特币。

量子计算机的存储能力和并行计算能力都远超经典计算机。

经典计算机与量子计算机存储数据的差别,一个是存储具体的值,而另一个是存储值的概率

存储值的概率就是指把值的所有可能性叠加在一起存储。比如 5 比特位的经典计算机,同时只能表达一个数字,而同样是 5 比特位的量子计算机则可以同时表示 个数字,二者有着 32 倍性能的差距,而且存储的效率也会随着比特位的增多而成倍增长。

量子计算机的并行计算能力可以用下面这个例子来说明。

假设现在你面前有 64 × 64 根水管分成两列,其中只有一组水管可以联通,那么请问需要多少次尝试,我们才可以找到那唯一一组可以联通的水管呢?

如果按照经典计算机的思路,我们只有一组一组尝试,左侧列的第一个水管与右侧列的第一个水管联通,如果不行,保持左侧列的第一个水管不变,将右侧列水管换成第二个。这样依次比较下去,直到找到可以联通的两根水管。极端情况下,我们需要尝试 64 × 64 次才可以找到。

而量子计算机则大不一样,它可以同时表示 64 根水管,因此一次尝试就可以找到那唯一匹配的结果。

不过,也不必过于担心。

首先,比特币协议中就有这样的规定:不管全网络的算力如何变化,区块的出块速度应保持在平均 10 分钟左右,如果出块间隔较短,则会加大挖矿难度,如果出块间隔较长,则会降低难度。

如果量子计算机加入挖矿,出块间隔势必变短,因此挖矿的难度会增加。即便增加的难度不足以难倒量子计算机,也不过是后续所有的区块奖励都由量子计算机获得,瞬间将比特币挖光的情况并不可能出现。

其次,目前量子计算机距离商业化还很遥远,而且区块链技术也在不断发展中,即使有一天量子计算机真的到来,区块链也有可能通过硬分叉的方式将现阶段的密码算法换成与量子计算机匹配的抗量子密码。

# 智能合约安全

前面两个问题或多或少都是因为技术本身或者其他威胁造成的,而智能合约安全完全是人的问题。

智能合约是软件工程师基于以太坊等区块链平台自主编写的程序代码。

有程序就可能会有 bug,智能合约当然也不例外。几乎每天都存在因智能合约编写不规范而造成的攻击事件,不过是或大或小的差别罢了。

之前的 The DAO 事件事件就是一个很好的例子。

因此,如果后续有机会编写智能合约,一定要搞懂所写的每一行代码,时刻谨记 bug 可能引起的后果,不留给黑客可乘之机。

# 主流区块链项目

# 比特币

比特币的发布时间为 2009 年 1 月 9 号,预计它的挖矿可以一直持续到 2140 年,发行总量收敛到 2100 万。比特币的出块时间是 10 分钟,出块时间是指全网平均产生一个区块的时间间隔。

比特币是所有数字资产的始祖,它的公众认可度非常高,纵然面临着矿池中心化的问题,但是公众依然非常信任比特币这种资产。

比特币曾经面临过区块容量不足的问题,但随着隔离见证的生效,网络拥堵的问题缓解了很多。

# 以太坊

以太坊在 2014 年开始众筹,2015 年 3 月份正式运行,它采取的共识机制是 PoW,但根据核心团队公布的方案,后期会逐渐迁移到 PoS 共识算法。以太坊的总发行量是:6000 万 +1872 万 / 年,目前的区块时间是 12 秒。

以太坊是一个区块链应用平台,它的极大创新在于它提供了智能合约这种可以自定义业务逻辑的工具,智能合约是一种可编程的合约,合约是由用户编写并且部署到区块链上的。

以太坊的优势是为全世界的开发者们提供了一种开发工具,这种工具让所有人都能释放出巨大的创造力,所以基本上可以看成:只要是有一定技术基础的开发者,通过智能合约可以随时为以太坊贡献内容。

这形成了一种良性循环,开发者使用智能合约的时候,发现的问题提交给以太坊开发者社区,社区改进智能合约的缺陷,新的开发者基于智能合约开发多样性的工具包,这种核心开发者与社区互动的良性循环是以太坊生态最重要的一部分。

同时从以太坊社区可以看到,以太坊绝大部分开发流程和智能合约都已经形成行业标准,比如常见的 ERC20 代币标准,ERC725 身份标准。

而 ERC20 代币标准,则为智能合约指明了主要的业务方向:数字资产,有的叫智能资产,它们的含义差不多。以太坊 2017 价格大幅上涨,最直接的原因就是:ERC20 代币成为事实意义上的区块链标准资产。

# 瑞波币

瑞波币(Ripple)是一个比较另类的区块链项目,因为从本质上来说,它更像是一种支付结算协议,瑞波币不需要挖矿,它是通过一种叫 “Open Coin” 的算法,提供瑞波协议共识来达到记账的目的。

瑞波币旨在为全球跨境机构提供了高效率的支付过程,提供较好的全球支付体验。因为涉及了机构之间的资产转移,瑞波币被设计成需要准入许可才能进入瑞波的支付网络,这一点有些像联盟链。

瑞波团队掌握了一半以上的瑞波币,所以瑞波币面临的币价被操纵的问题很严重。

如果你是一个技术极客,那么你可以略过该项目。如果你想创建一个有关支付结算的区块链项目,那么一定要研究瑞波币。

# 莱特币

莱特币在技术上仅仅把比特币的挖矿算法修改成了 Scrypt 算法,Scrypt 算法是一个可参数化、可配置的挖矿算法,不过它依然没有防住专业矿机的出现。它的其他核心代码几乎与比特币保持一致。

莱特币的崛起得益于良好的市场运作,从提供的功能来看,莱特币与比特币没有区别。

那为什么还要有莱特币呢?

这是因为,比特币扩容之争的核心焦点在是否使用 “隔离见证” 的方法,“隔离见证” 虽然在比特币社区提出,但是第一个应用的地方是莱特币,从这里就可以看出:莱特币作为比特币的先行者,它会替代比特币做一些具有实验性质的试运行。

# 比特现金

与比特币相比,比特现金仅仅是从区块容量上高于比特币,其他技术上的区别并不是很大。

比特现金的诞生要从比特币扩容之争开始谈起,由于比特币的区块容量是 1MB,随着用户增多,交易愈发拥堵。

所以围绕着提升网络容量,社区内部发生了分歧,“支持隔离见证” 与 ”支持直接扩大区块尺寸” 分成了两派,这就是著名的扩容之争。

比特币核心开发者们支持前者,矿工们支持后者,由于比特币核心开发者掌握了代码的控制权,但是矿工掌握了记账权,所以两权发生了分离,矿工索性一拍大腿,你不改代码,我花钱找人改,这就产生了比特现金。

比特现金作为社区共识分裂的产物,体现了区块链开放共识的特点,你不支持我,我分分钟就可以独立出来。

# Tether

Tether 也是一个特殊的区块链项目,它为所有区块链资产提供了法币(主要是美元)兑换网关。

Tether 又称 USDT,言外之意就是和美元一对一锚定,用户存入多少美元,就会产生多少 USDT 进入虚拟资产网络。USDT 可以直接在虚拟货币交易所与比特币等其他区块链资产进行交易。

Tether 可以直接在二级市场流通,是数字货币交易市场重要的交易入口。另外,Tether 可能存在被冻结和没收的风险。

# 比特股

比特股发布于 2014 年,是一个并没有开放式智能合约的区块链项目,虽然没有引入智能合约的概念,但它提供了功能极为丰富的金融类工具,比特股上所有的金融合约都是事先在代码里写好的,所以说它的本身就是一个超级智能合约集合

比特股是一个公开透明的、7*24 小时不间断运行的、基于区块链技术的去中心化交易平台。它兼具了区块链的优点,也是第一个有关稳定数字货币的尝试,目前比特股提供了若干核心的金融服务,例如支付、撮合交易、资产存托等服务。

相较于传统的金融 IT 系统,它的服务器是由分散在世界各地的受托人(Delegated)维护的,即使其中一些人被攻击也不会导致整个系统的宕机。

比特股目前全网在线的服务器有 27 个,由于 DPoS 共识算法提供了较好的交易吞吐性能,理论上比特股的 TPS 可达 10 万,这也是比特股在技术上区别于其他区块链的最显著特征。比特股较好的 TPS 其实也是为了它的功能服务的。

# EOS

EOS 全称 EOS.IO 软件,EOS 也是 EOS.IO 上的平台代币缩写。

EOS 是一个以太坊的竞争型区块链,它提供了全新的区块链架构,使得去中心化平台水平扩容和垂直扩容都成为了可能。

如果智能合约是程序,那么可以把 EOS 看成是一个超大的操作系统了,它为所有的程序,也就是智能合约提供了基本设施。例如账户、授权、数据库、异步通信等接口。

它甚至可以跨平台驱动大量的 CPU 或者集群,所以 EOS 的 TPS 肯定是远超以太坊的,这也使得构建基于区块链的应用几乎没有成本而且快速高效。

# 埃欧塔 IOTA

IOTA 是一个为了物联网(IoT) 而生的区块链项目。严格来说,IOTA 不是 “区块链”,因为它没有区块,也不是链式结构。

IOTA 提出了一种基于有向无环图(DAG)的分布式账本结构,这种结构 IOTA 将其命名为 The Tangle,探戈。

# 卡尔达诺 Cardano

卡尔达诺(Cardano)也是一个新一代区块链智能合约平台。它最大的特色是由理论研究主导,严格采用数学形式化验证的来证明严谨、安全性的区块链。

# 匿名性区块链项目

匿名性区块链项目是指:使用交易匿名技术,让公开可查询的交易内容变成私密的匿名性区块链项目。

市值比较不错的有门罗币、达世币、Zcash 三种,它们分别使用了不同类型的匿名技术,为区块链技术的匿名特性发展做出了贡献。

从需求上来看,这三种都是为了解决其他所有数字货币无法匿名的问题,因为从技术上看,比特币也好,以太坊也好,交易是可以被追踪的。

所以以上三种区块链提供了不同程度的匿名,按照匿名程度分别是:达世币 < 门罗币 < Zcash。从市场认可度来看,门罗币的匿名性最为人们所认可。

# 国内的公有区块链项目

国内的公链项目不多,分别有 NEO、量子链、元界、公信宝、比原链

NEO 的前身是小蚁,主打的也是智能合约,不过相比以太坊,NEO 更有方向性,旨在通过智能合约塑造一个基于区块链的智能经济。

量子链完全支持以太坊智能合约,也就是说能在以太坊上运行的智能合约也能在量子链上运行。

元界在 2017 年初上线造成了一波市场轰动,元界是当时唯一一家既能提供数字货币交易平台服务,又能提供公链技术服务的技术团队。

公信宝是比特股社区的开发者,将比特股的底层技术石墨烯技术改造成属于自己的公链项目,公信宝团队是一个靠谱的团队,市场价值也十分不错。

比原链是一个致力于打造资产数字化,提供资产流通的一个公链平台。

# 区块链众筹 ICO

ICO(Initial Coin Offering)的中文名是首次代币发行,又称为区块链众筹,这是一种新型的融资模式,投资者可以用手中的比特币或其他代币投到一些区块链创始项目。

一个区块链项目发起之后,如果选择发起 ICO,相比传统融资渠道,项目方会在很短的时间内融到资,且白皮书中规定好的代币将一次性地投放到投资者手里,并在短时间内上线数字资产交易平台。

数字资产交易平台也具有高流动性,这种高流动性为早期投资者提供了退出条件,这样投资者的投资周期大大缩短,并且可以快速抽身。

例如,马先生持有 1 个比特币,现在参加了某名为 ABC 的区块链项目 ICO,ICO 兑换比例是 1:10000,也就是说马先生投资 1 个比特币给项目方,将会拿到 1 万个 ABC 代币。

如果 ABC 代币会在一个月内上线交易平台,假设 ABC 的价格波动超过 50%,那么马先生的 1 万的 ABC 代币可以交易成 1.5 个比特币,马先生纯赚 0.5 个比特币,并且他可以抽身这个项目,再次参加新一轮的 ICO。

ICO 技术虽然为所有区块链项目提供了周期短、效率高的融资模式,但同时,ICO 也成了传销和内幕交易的重灾区。

因此,在 2017 年 9 月 4 日下午 3 点,国家七部委就明令禁止 ICO 这种融资模式。

# 区块链与数字货币

数字货币通常是国内的叫法,在国外,它一般称作 “加密货币”。

# 数字货币的概念

数字货币通常是基于区块链技术、在全球范围内公开发行的、并且没有任何国家政府背书的虚拟货币,这种虚拟货币具有去信任、点对点、公开记账、不可篡改等特征。

# 电子货币 vs 虚拟货币 vs 数字货币

1. 电子货币

电子货币其实就是将法币电子化,例如第三方支付平台,银行卡电子现金,银行大小额支付系统等等。它只是以电子的方式记录了原来法币的账目,从本质上来说,它们仍然需要在多个中心化系统中进行稽核、对账,“电子” 本身并没有成为金融的一部分。

2. 虚拟货币

虚拟货币所指代的概念远比电子货币以及数字货币都要更加广泛。

虚拟货币通常是由非金融机构发行的非实体货币,大致分为三类。

  • 第一类比如游戏代币,通常不与实体经济发生联系。这种虚拟货币有个特征就是封闭性,即只能在这款游戏中使用

  • 第二类是积分类,它可以与实体经济发生联系,比如常旅客积分,超市礼品卡,这种虚拟货币也有个特征叫做单向性,即只能流入,而不能流出

  • 第三类就是数字货币(加密货币),比特币便是其中典型

3. 数字货币

数字货币一般是指公有区块链平台底下的基础代币,该代币被记录在由密码学保证的一套公开账本上,与传统货币不同的是,由于去中心化以及可编程等特性,此种货币具有可自定义行为的属性。

在比特币中,我们可以定义多重签名交易来实现真正意义上的 “由多人共同掌管的机构型账户”。

比如,在元界上,用户可以自定义交易的行为,例如在转账时可以指定代币的一个锁定期,并且指定解锁条件;而在比特股中,这种行为更被强化为具有衍生品特性的货币,这在传统货币领域是不可想象的。

# 数字货币的发行过程

数字货币在 2016 年开始加速,2017 年借助 ICO 呈井喷式发展,数字货币市场形成了一个大泡沫,这与 2000 年初的互联网泡沫十分相似,但是泡沫并不可怕,它只是一个热门新生事物的必然过程。

比如比特币的发行过程如下:

比特币的发行过程是通过挖矿维持的,是依靠矿工挖矿产生比特币。相当于矿工自己就是一个小型的印钞机。

矿工每挖出一个区块,会产生一个 Coinbase 交易,这个 Coinbase 交易相当于凭空产生了币,矿工可以从 Coinbase 获得比特币,作为维护系统的奖励。

Coinbase 的产出是每 4 年衰减一半的,第一个 4 年是挖出每个块 50 个比特币,第二个 4 年的周期就是挖出每块产出 25 个,以此类推。

这个规则是比特币白皮书和比特币代码规定好的,所有比特币的参与者可以进行验证。

数字货币的发行过程可以认为是一个区块链项目的核心利益分配的过程,也是一个社区激励的过程,如何把有限的代币派发给愿意为项目付出的社区人,是考量一个区块链项目运营成熟度的重要指标。

# 数字货币钱包

数字货币钱包是最贴近用户的区块链程序,它可以帮助我们管理数字货币私钥,发送交易,显示我们的交易历史记录。从用户功能的角度,数字货币钱包比较接近我们日常使用的钱包,它帮助我们管理纸币、硬币、信用卡借记卡。

数字货币钱包作为数字货币的载体,从技术角度来看,数字货币钱包分为三种类型。

  • 全节点钱包。全节点钱包是指官方发行的一种数字货币钱包版本,这个版本包含了完整的功能需求,挖矿、发送交易、查询交易记录、管理私钥。

  • SPV 轻钱包(Simplified Payment Verification)。轻钱包为了用户体验,牺牲了全节点的部分功能,属于全节点钱包的简化版,如挖矿功能、查询交易功能就没有。

  • 中心化资产托管钱包。这种钱包其实是第三方服务商帮助我们打理数字货币,找一个中介托管我们的数字货币,比较典型的有 blockchain.info (opens new window)

第 1 种和第 2 种会在各个数字货币的官网出现,属于真正意义上的数字货币钱包,1 相比 2 而言,安全性要更高。

而第 3 种钱包,与银行移动 App 或支付宝相比,在业务逻辑上区别不大。就像我们会把钱托管到支付宝上一样,也可以将我们的数字货币放进第三类钱包中。这种钱包往往都是多币种的,深受投资用户的喜欢,而且从方便性和用户体验来说,基本完爆 1 和 2,例如:以太坊系钱包 imToken,多币种钱包 Jaxx,以及各个数字货币交易平台。

无论是什么类型的钱包,在获取钱包程序的时候,一律要从官网下载,即使是移动端 App 也强烈推荐从官网的入口进入。

数字货币钱包中的代币获取有两种方式:挖矿和上数字货币交易所购买

  • 挖矿的技术门槛虽然不高,但是过程繁杂,手续繁琐,不推荐入门尝试。

  • 目前不存在人民币对数字货币的场内交易平台,所以想用人民币购买数字货币的话只能选择场外交易,比较有名的平台有 coincola (opens new window)

# 国内交易平台

OK (opens new window)火币 (opens new window)币安 (opens new window)中比特 (opens new window)比特儿 (opens new window)比特时代 (opens new window)元宝 (opens new window)聚币 (opens new window)云币 (opens new window)币久 (opens new window)币赢 (opens new window)kex (opens new window)

# 国外交易平台

Bitfinex (opens new window)B 网 (opens new window)R 网 (opens new window)P 网 (opens new window)L 网 (opens new window)CEO (opens new window)BTBT (opens new window)HitBTC (opens new window)coincheck (opens new window)bit-z (opens new window)

# 去中心化交易平台

以德 (opens new window)比特股 (opens new window)

# 场外交易平台

LocalBitcoins (opens new window)CoinCola (opens new window)比特币世界 (opens new window)元宝场外交易 (opens new window)

# 行情网站

CoinMarketCap (opens new window)非小号 (opens new window)

# 新闻网站

金色财经 (opens new window)巴比特 (opens new window)bitcoin86 (opens new window)

# 区块链与数字人民币

# 数字人民币介绍

数字人民币是中国人民银行发行的法定货币的数字化,是由国家信用在背后作支撑,其发行权属于国家。

而比特币、以太坊等数字货币,其背后的支撑是我们对区块链技术的信任,货币的发行权属于共同维护区块链网络正常运行的矿工。

也就是说,虽然都是信任产生价值,但数字人民币与加密货币的信任源不一样,货币的生产机制也不一样,而这也是二者之间最大的两点不同。

此外,数字人民币的定位是现金类支付凭证。即数字人民币跟纸币、硬币的定位是一致的。

因此,数字人民币也就具有了跟现金一样的三点性质。

  • 不计利息。如果将数字人民币放在钱包中不使用,它的面额是不变的,但它的购买力却是随着时间而变化的。

  • 无手续费。不管是在银行柜台还是通过手机钱包转移数字人民币,中间转移过程是没有费用支出的。从这还可以推断,如果后续微信支付接入数字人民币,当你需要提现时,微信是不可以向你收取服务费的,否则可能违法。

  • 可控匿名。所谓可控匿名,用白皮书的话说,就是 “小额匿名、大额依法可溯”。数字人民币也可以有相同的效果,只不过手段却不一样。用户可以按照不同身份识别强度开设不同等级的钱包,根据实名强弱程度赋予各类钱包不同的单笔、单日交易及余额限额。比如说,最低权限的钱包不需要提供任何身份信息,当然限制也是最严格的。

不过,数字人民币也有跟现金不一样的地方,最直观的一点就是,纸币、硬币是固定面额的,而数字人民币是可变面额。

# 数字人民币的体系架构

数字人民币的体系架构概括起来就是:一币,两库,三中心,N 终端

  • 一币:数字人民币;

  • 两库:数字人民币发行库和银行库;

  • 三中心:认证中心、大数据分析中心和登记中心;

  • N 终端:分散在用户手中的手机钱包等存储数字人民币的终端软件及设备。

数字人民币发行库是人民银行存放数字货币发行基金的数据库,由银行库负责记录通过特定商业银行渠道分发的数字人民币。

当某商业银行有数字人民币的需求时,央行将数字人民币从发行库转移到该商业银行的银行库,从而实现数字人民币从央行到商业银行的转移。

而且,数字人民币的分发渠道不仅包含商业银行,未来还可以推广到拥有支付牌照的机构,比如微信跟支付宝等,所以广义的银行库实质是指任何有资质的分发机构。

认证中心是系统中对用户身份信息的管理组件,这是整个数字人民币系统的安全中心。数字人民币的可控匿名性质,就要依赖这个组件实现。

登记中心是数字人民币转账的核心系统,用于将数字人民币与用户身份进行绑定,完成所有权的登记。同时,数字人民币的转账记录等信息也通过该组件进行记录。

大数据分析中心则基于前面几个子系统采集的数据完成各类指标分析,比如能够对可疑转账记录进行反洗钱分析,通过用户支付行为的分析优化数字人民币投放策略等。这非常像区块链网络中的区块浏览器,可以直观感受到网络整体的运行情况,例如我们可以通过 EtherScan 网站 (opens new window)监控以太坊网络的实时状态。

N 终端就是由数字人民币钱包构建的使用生态。数字人民币从核心系统发行之后,经过投放,就分散到了用户手里的钱包。数字人民币的钱包其实跟区块链中的数字货币钱包功能很像,都有类似于储值,交易等功能。此外,钱包的形式也同样包括软件钱包跟硬件钱包(如银行卡、钱包),软件钱包相对使用更加便捷,比如在手机中安装一个应用程序就可以直接使用,但是其安全性不如硬件钱包。

# 数字人民币的生命周期

数字人民币的生命周期包括发行、申请、兑换、交易 4 个阶段。

首先,由中国人民银行进行数字货币的发行,存放在发行库中。随后,由任意分发机构根据自身需求进行申请,申请的同时需要向央行缴纳 100% 的准备金。

因为数字人民币跟纸币等都属于现金类支付凭证,在总量控制的前提下,分发机构要想获得数字人民币,就只能将手中的纸币等现金以 1:1 的方式换成数字人民币。也就是说,数字人民币与纸币等现金是等价的,只是形式不同而已。发行数字人民币并不意味着市场上流通的货币多了,而只是形式进行了切换。

等分发机构缴纳了准备金之后,央行就将数字人民币从发行库转移到银行库。而用户兑换数字人民币时,数字人民币就从银行库进入到市场流通环节,被用户手中的数字货币钱包接收。而在此之后的环节,实质就是数字人民币在多个用户钱包间进行转移,用于交易支付。

# 区块链如何应用到数字人民币中

在数字人民币的白皮书中有这么一段话:

数字人民币的技术路线选择是一个长期演进、持续迭代、动态升级的过程,以市场需求为导向定期开展评估,持续进行优化改进。指定运营机构可根据自身实际需求及技术优势自行选取技术路线,充分保持对未来技术的洞察力和前瞻性。

也就是说,数字人民币的流通没有指定必须使用哪种技术,而是由分发机构自行选择。

而数字人民币的发行权在于央行,其发行模式是集中式的,因此可以认为数字人民币的发行是不必使用区块链技术的。

区块链技术非常适合分发机构内部技术架构的选型。

同一分发机构内部可以使用区块链技术作为数字人民币流通的网络,利用区块链技术不仅可以解决最基本的记账需求,还可以继承区块链的不可篡改及可追溯特性。

跨分发机构的数字人民币流通可以使用区块链跨链技术实现资产的转移,减少了额外的对账过程。

# 数字人民币解决的痛点

区块链技术是现实资产与价值网络资产锚定的介质。

我们期待想达成的效果就是,在价值网络中的转移就等于是在现实世界中同步完成了转移。而一般情况下,资产的转移都涉及到资产凭证与货币的原子转移。

价值网络中的资产凭证转移就是锚定后的所有权标定修改,这个是可以通过交易等手段实现转移的,但是货币转移如果没有数字货币,就无法实现原子转移。虽说可以使用技术手段将区块链网络与银行系统对接,通过银行转账的手段完成资产与货币的转移,但是肯定不如本就是数字化的货币(数字人民币)来的方便。

关于数字人民币更详细的解读可以阅读这篇文章:中国数字人民币的研发进展白皮书 (opens new window)

# 区块链与 5G 物联网

# 可信上链

区块链虽然可以保证链上数据不被篡改,但却不能保证链外数据本身的真实性。

如果我们将区块链网络看作一个整体,那么在数据通过交易提交到区块链网络之前,其本身是游离于网络整体之外的,对于链外的世界,区块链特性无法覆盖,自然对数据的真实性也就无法辨认。

从数据上链这一刻开始,区块链的特性自然可以提供保障,确保上链数据的所有操作都处于监控中。这个监控者并不是个体,而是区块链网络所有节点共同遵守的共识协议。

如何确保区块链上链数据的真实性呢?有以下两种途径:

1. 相信权威机构的信息发布

预言机 (opens new window)就是数据可信上链的一种解决方案,它的作用是将外界真实的信息输入到区块链网络中,实现链外与链内的数据互通。

更具体地说,预言机为智能合约提供真实数据的输入,从而指导智能合约根据提前约定的条件触发预定的动作。比如某些 DeFi 智能合约,它需要实时根据以太坊价格来决定是否需要平仓,而预言机就能为此提供稳定且实时的以太坊价格数据。

但是,目前预言机在实际应用过程中,还存在着诸多问题。最重要、也是最难解决的就是关于预言机的信任问题

区块链无法确认链外数据的真实性,同样,预言机也无法给予人足够的信任。比如上面所说的价格获取,就无法保证数据源的数据实时、准确,即便确实从真实的数据源获取了数据,也很难保证在数据源与区块链交互的过程中不被篡改。

2. 摆脱数据的人为干预

数据不是凭空产生的,必定存在数据生产源,如果我们能够在数据生产源与区块链网络之间构建直通的数据采集通道,减少人为干预步骤,就能够极大提高数据的真实性。

这就可以借助 5G 物联网的力量。

5G 物联网能够使得传感器数据源生产的数据,在不经过数据网关等第三方中枢设备的情况下,直接与区块链进行数据的输入,这样就摆脱了人为的干预,保证了上链数据的真实性,进而就能基于区块链 +5G 物联网实现更多的联动应用。

关于区块链 + 物联网更详细的解读可以阅读这篇文章:“物联网+区块链”应用与发展白皮书(2019) (opens new window)

# 新能源汽车社区新玩法

会“挖矿”的智能汽车,是个什么新物种? (opens new window)

# 区块链与云计算

云计算利用虚拟化技术将物理服务器、存储和网络等硬件设备以服务的形式提供给用户使用,用户只需要通过互联网,以按需服务的形式购买计算资源,无需自行采购、配置或者管理这些硬件资源,只需要为实际使用的资源付费。

而且,借助云计算,我们不需要过多考虑业务峰值来临时,因资源不够而造成的服务崩溃。我们可以根据业务需求的变化立即扩展或者缩减这些资源,用最小化的成本抵抗住最凶猛的业务请求。

云计算技术是数字社会的生产工具,是数字社会新基建中的基建。

云计算技术主要可以支撑起区块链的网络部署。

公有链网络中的节点间的关系相对松散,你部署你的节点并不需要考虑我的节点是如何部署的,我与你两个节点间的联系仅限通过网络通信进行数据传递而已。也就是说,公有链的节点部署并不需要统一标准,只需满足最低资源要求,就可以在任意时间、任意地点部署

而联盟链网络因为技术选型的原因,部署的初期就需要协调各节点程序,使其保持步调的一致,是典型的分布式系统构建方式。比如联盟链中用到的拜占庭容错共识算法,就需要至少 4 个节点才能构建一个区块链网络。

云计算的出现,让区块链复杂的组网过程有了统一简化的可能,通过统一协调制定节点资源的使用,规范制定区块链参数配置,就能快速部署联盟链网络。

# BaaS 与 BTaaS

在此基础上,为了不仅能够快速标准化部署多种类联盟链网络,还能够对其进行管理,监控等运维操作,区块链与云计算的结合催生出区块链即服务平台,也就是 BaaS(Blockchain as a Service),灵感来源于云计算中的 IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(Software as a Service) 的理念。比如腾讯云的 TBaaS (opens new window)华为云的 BCS (opens new window) 等,都是国内现在比较优秀的公有云 BaaS 平台。

BaaS 的概念还可以被拆分成两种:

  • BaaS 是指把公链提供的服务(数字货币、数字资产、身份验证服务、第三方监管服务)转化成云计算中的 PaaS 服务的过程;

  • BTaaS 是指把区块链技术框架转化成 PaaS 服务的过程。

BaaS 是未来区块链的发展方向,BTaaS 只是作为经典方案的补充。

# 区块链与大数据

大数据指的是非常庞大、复杂且大量非结构化的数据集,其规模之大,我们用传统的处理手段已经无法处理,因此需要借助新的技术辅助,以便帮助我们解决棘手的业务难题。

大数据有以下 5 个特性:

  • 大量(Volume):所谓大数据,首先肯定是数据量大,在实际场景中,大数据的数据量通常是以 TB,PB 来计算,什么概念呢?我们的手机现在一般能存储 128G 的数据,而 1024G 数据才等于 1TB,1024TB 才等于 1PB。

  • 高速(Velocity):大数据需要用较高的速度接收甚至是处理数据。数据通常是直接在内存中,而不是写入磁盘,这样就可以满足实时数据分析的需求。

  • 多样化(Variety):多样化是指大数据的数据源很多,且大多数属于非结构化的数据,比如图片、音频、视频等等,因此需要经过预处理才能发挥数据的价值。

  • 价值(Value):大数据所面对的数据是海量的,但并不是所有的数据都有价值,因此我们需要通过数据清洗,过滤出有价值的数据。

  • 真实(Veracity):与价值特性一样,需要保证数据的真实性、准确性,才能提高数据质量,这样最终的结果才值得信赖。

现阶段,大数据技术已经被广泛应用。移动互联网、社交网络、物联网等领域的兴起,都产生了源源不断的大数据样本,而云计算又为大数据提供了稳健的计算及存储资源支撑,通过对不同数据源的数据采集、预处理、分析及挖掘,最终将结果反馈输出至数据源,进而反向指导应用的发展。

大数据是数字社会的生产资料。

大数据技术可以从以下两个方面融入到区块链中。

1. 解决区块链上链数据的真实性问题

面对海量杂乱无序的原始数据,我们可以利用大数据技术进行预处理清洗,分析挖掘出其中真实的具有特定价值的数据,之后再将处理后的数据通过区块链节点以交易的形式上链,这会在很大程度上解决数据真实性的问题。

2. 评估区块链的真实运作情况

对于已经上链的区块链数据,我们可以用大数据技术分析,以此评估区块链的真实运作情况。而数据不外乎是交易、区块及状态。

交易跟区块是固定格式的数据,相对来说比较容易分析,而状态对于不同的区块链来说,对应着不同的状态模型,且智能合约更加剧了状态数据的不确定性,分析难度较大。但是我们还是可以分析标准智能合约产生的相对结构化的数据,对大数据技术来说,无非是需要增加新的数据采集规则。

其实基于区块链的大数据分析应用就是区块链浏览器的技术原理。通过对区块链数据的分析,为用户提供直观的、可以查看区块链网络运行的平台,比如以太坊的区块浏览器 EtherScan (opens new window),通过它,我们可以实时了解以太坊网络的运行状况。

# 区块链与人工智能

人工智能试图了解人类智能的本质,并以此为基础,期望能够制造出一种能以人类智能相似方式做出反应的行为模式系统,包括但不限于与之匹配的软件及硬件系统。

现阶段人工智能采用逐个击破的方式,分别探索不同的领域,包括语言识别、图像识别、自然语言处理等等。随后将各个领域的成果加以整合,形成相对智能的产品推向市场,比如自动驾驶技术等等。

其实人工智能技术能有如此快速的发展不仅是技术的优越,同时也依赖多种技术的协同。

  • 云计算技术将 GPU 等资源整合,为人工智能提供强有力的资源辅助,提升人工智能在训练阶段的效率,同时也为人工智能应用面向用户提供了便捷的途径;

  • 大数据技术帮助我们在海量繁杂的数据中通过采集、处理、分析等过程,获得有价值的数据,为人工智能的训练提供足够多的样本,提升机器学习的精准度。

人工智能有云计算及大数据等技术的辅助,极大提升了数字社会的生产力。

人工智能如何与区块链产生联系呢?

在数字社会,数据作为一种新型的生产资料,区别于其他生产资料的一点就是个人数据隐私需要被保护,这是法律层面的约束;但数据又需要开放共享才能与人工智能结合,使得价值最大化。这时就产生了新问题,如何在数据隐私保护与开放共享之间寻求平衡呢?

因此,人工智能领域诞生了一种新的机器学习模式,那就是联邦学习

这种模式就是,在数据源不离开原来的企业的情况下,也能让各企业的人工智能学习平台联合起来进行模型训练及预测。可以看到,联邦学习涉及到了多企业间的分工协助,而一旦涉及多方协作,区块链就有了用武之地。

区块链可以给联邦学习带来的优势主要有以下两点:

  • 利用区块链的不可篡改特性及可追溯性,对恶意参与方进行跟踪惩罚。联邦学习平台可以利用区块链技术作为学习阶段的元数据共享通道,当发现遭受恶意或者惰性攻击时,就可以依据区块链历史数据对相关责任方进行确认,从而采取有效惩罚措施,保持联邦学习平台的平稳健康发展。

  • 利用区块链的去中心化特性可以积极拥抱监管。在实际参与联邦学习的合作方之外,可将相关的监管审查机构作为独立自主的第三方节点,接入区块链网络,因此监管审查机构就可以实时地监控联邦学习平台的运作情况,如有违规操作,可以在短时间内制止。

总的来说,云计算是生产工具,大数据是生产资料,区块链是生产关系,人工智能是生产力。它们齐力协同,共同组成数字社会的四驾马车,推动数字社会的发展。

# 区块链与电商

区块链的最终发展形态是价值网络,但目前距离这个目标还很遥远。

在现实与价值网络之间该如何过渡呢?

# 行业链

在联盟链这边,似乎有一条可行的实现路径,那就是行业链

所谓行业链,就是在这个行业内,所有的商业活动都围绕同一条区块链网络展开。

行业链的形成并不是一个自上而下的政策性产物,而是逐渐由小变大的顺势而为,是联盟链发展的必然结果。可以说,行业链是特定行业的价值网络,而价值网络是所有行业链的集合。

现阶段具有某些业务往来的企业,因为区块链的某种特性正好契合他们之间的需求,因此逐渐就联合起来形成小范围的联盟链试点。不过,联盟链的试点不应该是漫无目的地套用区块链技术,而应该是利用区块链技术特性定向需求优化。

这里的 “定向” 就是指有需求才需要区块链技术,否则就是伪需求,试点永远也只是试点,不可能孵化出一种新的商业模式。而且,随着业务链的规模扩大,区块链的作用也应该更加明显,不然使用区块链只是多此一举。

行业链没有自上而下的推动力,而是靠行业龙头企业逐步展开联盟链试点,随着一步步发展,最终在监管等需求的推动下,整合成统一标准的行业链。

随着区块链跨链技术的发展,最终行业链的形态可能会有所差异。以核心企业为首的业务联盟链,也可以不必在监管的需求下统一成一条链,而是通过跨链技术让数据可以在多条超级业务联盟链间进行协同。因此,由跨链技术围拢的多条业务联盟链的生态,也可以称之为行业链。

从某种意义上讲,行业链不仅汇聚了区块链技术所带来的信任感,同时也叠加了国家权力赋予的公信力。

有了行业联盟链,就意味着数据对于参与方企业来说都是透明的,企业间的竞争逐步变成拥有相同数据情况下的差异化服务竞争。也就是说,在拥有相同数据的前提下,企业间的竞争会逐渐变成基于相同智能合约标准的差异化服务竞争。

行业链的出现,为行业的发展营造了公平、公正、公开的商业环境,而这对监管及用户来说,无疑是向好的。同时,行业链是巨头粉碎机,对于同行业的诸多小企业来说,也将拥有更多的机会,依靠数据实施垄断的商业行为将不复存在。

# 电商行业链

电商行业链和传统电商最主要的区别就是利用智能合约的标准化思路,规范电商行业流程。

我们可以将电商行业中的流程进行抽象,形成智能合约标准,每个标准可以有不同的实现,最终呈现的效果就是,电商行业的参与者可以任意组装跟自己角色相关流程的不同智能合约实现。

下面以书籍为例展望下电商行业链的设计思路。

现阶段,在电商领域,区块链应用做得最成功的案例无疑是商品追溯平台。利用区块链技术的不可篡改及可追溯特性,可以实现对单个特定商品自原材料到用户手中,整个生命周期全流程的追溯。

1. 出版印刷

在将原材料准备妥当以后,出版社就可以在印刷车间对书籍进行印刷出版。除了印刷用于标记一类商品的 ISBN 编码以外,我们还要为每一本书籍印刷专属于这本书的资产编码,这样就可以在区块链网络中唯一标识这本书,实现现实资产与虚拟价值的锚定。

而这其中描述的书籍印刷的过程,就可以抽象出商品生产智能合约,NFT 其实就可以用来实现这个。

商品的生产商在行业链的流程中,每生产一个商品,就将该商品对应的资产信息(包括但不限于商品基础信息,比如资产编码、出厂价格、分类等等)进行上链,之后商品就可以由此进入市场进行流通。

这是行业链和现有商品生产模式最基础的差异,现有商品生产基于流水线进行批次化生产,比如批量生产一万册书,每册书的商品编码可能都是一个。但在行业链上流转的不是商品类别,而是一个个独立的唯一商品,可以做到一物一码。

这样做的好处就是,行业链是价值网络的前置阶段,如果其上流转的也是资产,也便于后续价值网络的普及。

2. 渠道分发

出版社把书籍印刷出来以后,就可以根据不同的电商渠道分发不同数量的书籍。在行业链中,这一过程其实并不是必须的。

这是因为,行业链其实是在弱化企业的存在感,也就是在淡化渠道的概念。渠道主要是为商品生产商与用户间建立买卖的平台,而区块链去中心化特性恰恰是在抑制中间商。

在这阶段,可以抽象出商品分发智能合约

在链下,是将商品从生产商转移到渠道商仓库,而链上是将商品的所有权从生产商转移到渠道商。

不过需要注意的是,这里要做到链下商品的仓储周转与链上所有权的协同转移。因为行业链中的每件商品都是具备资产属性的,并不能简单以数量进行商品的调拨,而是链上的资产与链下的商品要匹配,否则就有串货的风险。

3. 书籍聚合搜索

在出版商将书籍资产信息上链以后,在行业链中的其实就有了该书籍的信息。

不过对用户来说,在商品种类繁多的行业链中,搜寻书籍无疑是大海捞针,因此就有必要抽象出商品聚合搜索智能合约标准,方便用户浏览、搜索商品。

此时平台的作用就是基于聚合搜索合约,将行业链中的商品个性化地呈现给用户。

而用户根据自己的喜好选择不同的平台进行浏览,也可以根据自己的需求定制合约,比如只关注特定书籍类别。

现在的电商平台依靠用户历史购买记录推断出用户的购买意愿,再利用平台与用户间的信息不对称和用户对平台的依赖性,使用户在无形中被带节奏,从而以较高的成本购买商品。

而行业链支撑的电商平台则有所不同,首先用户的历史购买记录属于个人隐私,用户可以使用智能合约对数据进行定向授权,在用户未授权平台获取这部分数据之前,平台无法提前得知用户的购买倾向,进而也就无法进行商品推荐。

此外,关于商品的这部分信息在链上应该是公开的,任何人都可以查看,因此也就不存在平台与用户间的信息不对称。

只是平台更有技术实力能够将商品从繁杂的商品库中聚合出来而已,而一旦用户对平台的聚合服务不满意,也可以随时切换另一个智能合约实现,抛弃原有平台。也就是说,电商行业链对平台是苛刻的,但却可以为用户带来较好的体验。

4. 书籍订购

在用户找到想要的书籍后,就准备下单进行订购支付了。

在这个阶段也可以抽象出很多智能合约标准,比如库存扣减合约,支付合约,物流合约等等。其实这些合约都从属于同一个订单合约

从业务逻辑分析,购买商品的本质就是用户跟其他各参与方签订了合同协议,合约内容可以理解为如果商品所有权转移给用户,之后选择某某物流公司送达以后,用户就会把锁定在合约中的货币按商品价格组成,分别释放给平台,商家及其他参与方。

总的来说,在电商行业链中,商品信息在同一条区块链网络中共享,电商平台的竞争逐步就表现为对链上数据的聚合、分类及差异化营销。

# 区块链与社会治理

社会治理是指由政府、社会组织、社区、企业等参与主体分工协作,共同管理解决社会事务,维护社会治安秩序,保障社会稳定。

从概念上就可以看出,社会治理需要多参与方主体分工合作,这跟区块链的思想不谋而合。

区块链在联盟链的体系中,去中心化的特性其实更多的是想表达多方协作的意思,因此我们也可以用多中心化替换。

# 政务链和公益链

社会治理的涉及面非常广,下面简单的把社会治理分为政务公益两部分。

  • 政务的主体参与方上至国家各部委机关,下至各乡镇办事处,主要处理与人民群众工作生活息息相关的事务,比如户籍管理、社保公积金管理等等,在此基础上搭建的区块链网络称为政务链

  • 公益的参与主体主要是社会性非营利组织,比如孤儿院、红十字会等等,主要接洽的是社会事务以及对外援助工作等,与之对应的区块链网络叫做公益链

无论是政务还是公益,在与区块链技术的结合方面,二者有着诸多相似之处,因此可以作为一个整体进行分析。

可以从以下三个维度来解析政务链/公益链。

1. 机关间的业务协同

利用政务链,我们就可以基于区块链技术实现跨机关的数据共享,达到业务协同的效果。具体来讲,就是可以在需要共享数据的部门间搭建一条政务联盟链,每个部门维护自己的区块链节点,并通过该节点将需要被共享的数据上链,通过区块链网络的扩散,自然而然同步至其他部门的区块链节点,这样需要数据的部门就可以从自己维护的节点中获得相应的数据。

2. 同机关的上下级数据共享

政务链是在国家指导政策的基础上,由上级部门自上而下进行推动而逐步搭建的区块链网络体系。这主要是由行政管辖权决定的,同机关的上级部门比下级机构的权力的管辖范围更广泛,因此能够有力推动多个直属下属部门的技术体系变革。这个跟默克尔树 (opens new window)的树形结构非常类似。

此外,政务链的搭建过程是自上而下,而不是自顶到底。如果政务链的搭建从一开始就要从部延伸到分局,那无疑是巨大的工作量,因此需要采用分而治之的方法,局部自上而下,然后再逐步贯通,而最终形成的政务链应该就能呈现出自顶到底的完整链条。

在同机关上下级之间,政务链主要用于数据的共享,或者可以说是用于数据的汇总。

同机关上下级意味着政务业务范围是一致的,只是管辖范围的不同,上级机关需要根据下级单位的数据做出业务决策。如果不采用区块链技术,上级部门就需要从业务层面入手,提供数据汇总的途径。

如果采用区块链技术,在上级与多个下属部门间构建联盟区块链网络,彼此维护不同的区块链节点,下级部门的数据通过自己维护的区块链节点上链,这样上级部门就能获得所有下属部门的数据,在不影响现有业务系统的前提下实现数据的共享汇总。

3. 行业链的公信力背书

由去中心化、不可篡改及可追溯性构建的区块链网络天然能给人带来信任感,而这是其他技术无法做到的。此时,如果你的业务仅仅是因为缺乏用户对平台的信任,迟迟无法得以突破,就可以采用区块链技术。

比如公益,我们通过公益平台募捐以后,其实是很关注后续社会性援助的过程及结果的。但通常缺乏这样的渠道,就只能通过有限的对外通报获得捐赠物资的流通情况,久而久之,信任感缺失,我们可能便不再通过该平台进行援助。

如果采用公有区块链技术记录捐赠物资的使用情况,并能让任何人都可以加入到这条公益链中,物资流转从此变得公开透明、可追溯,这能让民众对公益平台的信任感倍增,也能变相促进公益事业的发展。

行业链所对应的业务不仅仅是有与用户间的信任问题,其实更主要的一点就是需要与政府等部门进行业务的协同,需要获得政府部门的授权或者接受监管机构的监督。也就是说,单纯的使用区块链技术是无法做到这一点的,行业链的运作还必须要有国家权力赋予的公信力。

而政务链正好可以提供行业链需要的公信力,当然,这时候的公信力并不是区块链技术提供的,还是国家权力机关本身的属性。只不过是复用在 X、Y 维度已经建立的政务链网络,而且随着跨链技术的发展,链与链的交互相比链与业务系统的交互要更加和谐、便捷。

# 互联网法院

互联网法院就是指将案件的受理到案件宣判等一系列诉讼环节都通过互联网完成。

目前,杭州、北京及广州互联网法院已经开通,这是司法系统顺应互联网发展趋势的重大举措。

互联网法院如何为行业链提供公信力背书呢?

其实就是证据先行,提前将后续可能会发生维权等司法纠纷的证据,上传至互联网法院的司法区块链 (opens new window)进行证据公证,以便在将来可能发生纠纷时快速取证,提升维权效率。

现在很火的区块链电子合同、存证等行业链雏形项目,背后都有互联网法院的身影。

此外,不同互联网法院的区块链网络数据互联互通,也展现了机关间的业务协同能力。合同版权等司法证据在最初上传的时候是在一家互联网法院,但是在真正诉讼的时候却可能是在另一家互联网法院,甚至是一般线下的法院。如果无法做到数据融合共享,就并不能体现出区块链 + 司法的优越性,但毫无疑问,区块链技术是可以做到这一切的。

# 为什么选择区块链 + 社会治理

在联盟链的技术体系中,区块链的作用不是替换业务系统的流程处理方式,也不是替代数据库用做数据的存储,而是在充分利用区块链技术特性的同时提供一种可被信任的,便捷的数据共享方式。

互联网信息技术已经出现了快 30 年,我国的信息化建设的年头也不短了。期间各行各业已经基于当时最先进的技术,搭建出了大量的信息化平台。但是这些平台却并未随着技术的发展而逐步更替,因此就逐渐落后了,这是选择业务优先的必然结果,而这种情况在政务领域更加明显。

怎么解决这种情况呢?全部推翻重来肯定不现实,相比前一个时代的业务优先,数据优先是新时代的选择,如何以最小化的成本实现最大化的数据共享,就是最主要的矛盾。

其实区块链技术就是最好的解决方案,在不大规模改变现有技术架构的同时,实现数据在区块链网络中共享,而上层业务系统只需要极小部分的改动(与区块链 SDK 对接),即可实现对数据的上链以及利用其中的数据,在降本增效的同时,也能连带享受区块链技术带来的额外优势。

总的来说,行业链、政务链、公益链三者合为一体,才能称得上是联盟链价值网络的完整形态。

# 从业区块链

# 区块链行业现状

目前区块链领域的人才需求大致可以分为以下几种。

  • 根据客户的需求,搭建基于 DLT 技术的分布式账本应用,在 DLT 上实现客户要求的业务需求,这类与传统解决方案型的人才十分接近。

  • 公司已经具有了某些行业的资深经验,目标是通过技术选型选择某个公链,在此公链上开发基于区块链的应用。目前游戏与社交类的项目比较成熟,游戏类有以太养猫、LeBloc 等,内容社区类有 Steemit、币问、币乎等项目。这一类的特点是可以很好地与现有技术结合,在业务层面利用区块链的资产数字化特性,商业潜力大,技术发展空间也很大,进入门槛较低,风险较低。

  • 公司获得融资或者在海外发起 ICO,目标是研发新一代公链,这一类是为了通过改进现有的区块链技术不足而创建的项目,技术发展空间最大,进入门槛最高,风险也最高。

  • 区块链生态基础设施类。数字资产交易平台、数字资产管理、移动钱包、硬件冷钱包、数字金融媒体、区块链咨询、矿池运营等都属于此类,这些都是目前商业利润最高的区块链产业,技术发展空间较大,进入门槛较低,风险也较低。

与之相对应的行业相应需求的编程语言如下。

  • 第 1 类是 DLT 技术,由于超级账本的流行,DLT 基本以 Golang 为主,但也会涉及应用可视化交互的问题,毕竟交付给客户的时候,指望客户使用命令行是不现实的,所以不可避免地需要具备一些前端技术。

  • 第 2 类是公链应用,由于智能合约的存在,使用区块链的门槛大大降低,最流行的以太坊智能合约是以类 JavaScript 的语言 Solidity 编写的,目前也出现了不限定编程语言的智能合约区块链。

  • 第 3 类是研发自己的公链。目前主流的是静态编译型语言,以 C++ 和 Golang 最为常见,也有用 Rust、Java、C# 实现的公链,SPV 轻钱包型多使用 Java、Python、JavaScript 实现。可以说公链研发几乎都涉及了主流编程语言。

  • 第 4 类是在商业上与区块链最为紧密,但是技术上却是最不紧密的,整体技术栈与传统互联网网络技术差别不大,例如搭建一个区块链财经类网站,甚至不需要任何区块链技术,但是对内容运营有较高要求。

# 区块链行业人才需求

现有互联网的人才大致可以分为 5 个类别:

  • 技术决策者,这类主要指 CTO、技术总监、技术专家等;

  • 代码生产者和维护者,也就是广大 IT 从业者、开发工程师;

  • 需求产生和归纳者,产品经理、需求分析师;

  • 交互与可视化,前端工程师、UI/UE 与视觉设计等;

  • 产品运营,实际与用户接触,吸纳和维持用户。

而区块链行业对于不同人才的需求如下。

  • 公链核心开发者:编程语言基本功非常扎实,代码风格容易阅读,精通中英文文档撰写,英语口语流畅,了解区块链技术基础即可。

  • 钱包 App 以及其他基础设施开发者:了解主流语言开发包,了解移动互联网产品的开发和上架过程,了解区块链私钥管理即可。

  • 社区运营:互联网产品社区运营,对数字货币和开源社区抱有热情,熟悉常见线上线下运营手段。

  • 钱包 App 产品运营:互联网产品运营,这类与理财类 App 比较接近。

  • 数字资产交易平台:这类人才需求最大,基本上会涵盖上述 5 种人才储备。

  • 区块链研究:这类分为行业战略研究、技术研究两类,前者类似咨询行业,后者主要是 CTO、架构师等高端技术社区、开源技术社区推进。

上次更新时间: 2023年02月07日 15:39:11