1 技术特性
区块链其实是一种分布式 KV 数据库。
1.1 去中心化
去中心化只是一个理想化的状态。现阶段来说区块链去中心化本质上是相对去中心化。
1.2 可追溯性
对单个节点来说,区块链可以被认为是一个时序数据库.
单个区块链节点中的数据是按时间的先后顺序串联存储的,而串联的关键就利用了密码学中的哈希算法。
哈希算法可以把一段数据变换成固定长度的数据指纹。将前一时间段的数据指纹与后一时间段数据整合在一起。周而复始,后一时间段内的数据永远都会包含前一时间段的数据指纹,这样就形成了一条由数据指纹串联的信息链条。
如果有一个作恶者想要修改中间某一时间段的数据,那么依照哈希算法原理,其对应的数据指纹则会改变。因此他不得不依次修改后续的每一个时间段的数据,否则数据链条就会在他修改的这一刻断掉,不再具备可追溯性。
1.3 不可篡改
所谓篡改,就是私自的不被认可的修改,而不是不能修改。
在区块链中,实现不可篡改需要两种技术来保障:密码学 & 共识算法
共识算法: 保证整个系统的数据不被篡改。所谓共识,就是在一个分布式系统中保持数据的一致性,而如果出现数据不一致,大多数共识算法都遵循少数服从多数的原则。区块链网络中的每一个节点的数据都是一致的,作恶者只是篡改了自己维护的单个节点,从整个网络的维度来看,依旧是以大多数节点的数据为正确数据。
2 存储设计
2.1 交易
交易是区块链网络中数据的最小的组成部分。一笔交易通常有8个属性,交易哈希本身也是一个属性。
From: 交易发起方
To: 交易接收方
智能合约:标识的是当前这笔交易要执行智能合约的名称
方法:执行智能合约对应的方法
参数列表:执行该方法时应该附带的参数列表
时间戳:表示该交易在客户端构建的时间
签名:From 字段的账户进行签发的,用于向网络证明这笔交易确实是这个账户构建的,而不是其他人伪造的,主要是使用账户拥有者手中的私钥对交易进行签名。
区块链中所有的交易基本上都是从区块链网络外发起的,区块链网络只接收交易而不生产交易,且不对交易做任何改动。
2.2 区块
区块是指将节点一段时间内收到的所有(有效)交易打包而形成的一种数据结构
2.2.1 区块结构
区块头
-
前置区块哈希:用于区块间的关联
-
交易根哈希:用于区块与交易的关联
-
区块高度:用于标记当前区块在区块链中的位置,方便定位
-
时间戳:记录了区块打包的时间。
区块体
- 区块体则只有交易,且交易是有先后顺序的,一般是按照交易的时间戳字段进行排序。
2.2.2 区块间关联
每一个区块都会包含前置区块哈希作为逻辑关联两个区块的那个锚点。区块哈希跟交易哈希类似,是区块的外置属性,在区块构建完成后才能得到。如果我们从当前区块一步一步往前追踪,最终会找到创世区块,而创世区块也是有前置区块哈希的,只不过是一个空值。
2.2.3 区块与交易
默克尔树
- 由哈希值构成的树状数据结构
- 用于验证验证区块链等去中心化系统中的数据的完整准确性
- 具有灵活高效验证数据的优势
2.3 状态
状态就是交易执行后输出的累积
状态模型的选型没有唯一解,只要是能满足应用场景的模型设计就是好的模型。
UTXO 模型(Unspent Transaction Outputs)
每一笔交易都应该有 N 个交易输入,同时产生 M 个交易输出(N 与 M 可以不等)。交易输入是前序任意交易的未花费的交易输出。如果当前交易成交,该前序交易的输出也就变成了成交的交易输入,也就失去了再次成为交易输入的资格。UTXO 模型能够追踪数字货币的流向:未花费的交易输入告知货币是从哪里来的,未花费的交易输出告知货币往哪里去。
账户模型
通过数字的加减表示账户余额的变化。账户模型除表示余额以外,也支持自定义数据的存储,可以在基础账户之上衍生出智能合约数据存储。
通用模型
在账户模型的基础上更进一步,没有内置状态属性,可存储任意自定义数据,被广泛应用在联盟链中。联盟链的定位是支持企业级应用的区块链平台,而企业业务的种类及模式是无法预知的,因此无法在设计中内定状态模型。既然众口难调,所以干脆将状态的设计工作留给企业应用开发者,状态可以自定义,而链本身只提供通用数据接口。
2.4 总结
交易是现实世界与区块链网络沟通的唯一媒介,是现实操作在区块链网络中的投影。
区块是交易的容器。
状态是历史交易输出的累积
区块链是一种有限状态机
3 密码学
3.1 密码学与区块链
密码学是因,区块链是果。
3.2 哈希算法
哈希算法又称散列函数,它可以将任意长度的数据转换成短的、固定长度的数据指纹。
要评判一个哈希算法是否足够优秀,我们有 4 个标准:
- 正向快速
- 逆向困难:如果给定哈希结果,在有限的时间内基本不可能逆推出原始信息。
- 输入敏感:原始信息即使发生一丁点的变化,重新计算的哈希值与之前比较都应该有很大的不同。
- 避免碰撞
3.3 非对称加密算法
非对称加密算法的密钥是一对,分为公钥跟私钥。公钥可以随便公开,而私钥需要私密保存,而只要私钥不被泄露,信息交换过程就是安全的,私钥只有一份。
区块链中的非对称加密
区块链中对非对称加密算法的使用是利用其具备身份确权的能力,也就是数字签名。
数字签名原理
将交易结构分成两部分:左边 - 交易的基本属性 & 右边 - 签名。
将左边部分看作一个整体,然后对它进行哈希计算得到交易摘要,接着用你手中的私钥对交易摘要进行加密,而加密的结果就是交易的签名。
验证交易
如果要验证交易,只需要按照相反的流程进行就可以了。将交易签名使用对应的公钥解密得到签名中包含交易摘要,同时将明文的交易内容利用哈希算法再计算交易摘要,然后将签名中的交易摘要与自主计算的交易摘要进行对比,如果匹配,则表示交易验证成功。
4 网络
4.1 网络拓扑
比特币
混合型网络拓扑结构。
当建立节点间连接以后,新节点将自身信息发送给相邻节点,相邻节点再将新节点的信息依次转发给它们各自的相邻节点,从而保证了新节点信息在网络中被广泛传播。新节点也可以从相邻节点获取该节点的相邻节点信息,从而选择性地连接更多节点,增强节点自身与整个网络连接的稳定性。
以太坊
结构化网络拓扑。
节点 A 只与自己逻辑距离最近的节点连接,这保持了以太坊网络中节点的有序。
节点 A 首先从自身存储节点信息的 K 桶中找出 2 个与自己距离最近的节点,之后请求这 2 个节点,要求他们从各自的 K 桶中分别找出 2 个与节点 A 更近的节点。那么节点 A 最多可以得到 2 × 2 个新节点信息,随后再请求这 2×2 个新节点中距离节点 A 最近的 2 个节点,让它们再分别返回与节点 A 距离更近的 2 个节点,整个过程持续迭代,直到没有新节点被发现。
4.2 交易的扩散
比特币
比特币的网络拓扑是随机的,交易扩散的时候是扩散至与之连接的节点,但扩散前并不知道对方是否已经接收过相同的交易,因此网络扩散的效率是较低的。
以太坊
以太坊网络的节点只与自己最近距离的相邻节点连接,交易的扩散并不存在回路的可能性,它的扩散路径更像是一种单向的持续向外广播,就像水永远只向低处流一样,交易会逐渐远离最初的节点,交易扩散效率较高。
5 共识
区块链中对状态的共识实质就是对区块的共识,只要区块一致状态就一定一致。
区块链中共识的基础是区块,区块有序地包含了交易,从而保证了状态的一致,对区块的共识就是对状态的共识。
5.1 拜占庭容错共识 - 联盟链
《实用拜占庭容错》算法,简称 PBFT,是强一致共识协议。
在 PBFT 中,节点被赋予主节点与从节点这两个角色,request 都从主节点发起,一次共识有且只有一个 request 存在。图中的 0 就是 request 的发起者,所以 0 是主节点。
图中的节点 3,可以看作是因为网络问题,它并未响应任何其他节点的请求,但因为其他节点都是诚实节点,少数服从多数,这次的共识依旧成立。
一次共识的达成,PBFT 需要进行多次的网络通信,而图中还仅表示的是只有 4 个节点的情形,如果将节点数进一步扩展,通信的要求就会指数级增加,因此它并不适用于有大量节点参与的场景。联盟链与拜占庭容错共识是天生一对。
5.2 激励共识 - 公链
比特币网络允许有多条区块链存在,但只认同节点能接收到的最长的那条区块链是全网络共识的链,其余短的区块链都是无效链。与拜占庭容错共识相比,在无节点角色区分的情况下降低了区块提案的个数,同时将一致性从强一致性放宽到最终一致性,虽然效率有所下降,但却达到了相同的效果。
作恶者如果想篡改区块,其目标就是要计算出满足条件的替代区块,并使得该区块所在的链成为全网中最长的区块链。而区块哈希的计算几乎没有捷径可走,必须老老实实计算,这就要求作恶者必须拥有占比全网总的计算资源的绝大部分,才能有机会将自己篡改的区块链变成全网路中最长的链。
对比特币网络的篡改,实质是对计算资源(算力)的争夺,谁拥有更多的计算资源,谁的话语权就大,这也就是我们通常听到的 51% 攻击。
6 智能合约
智能合约与传统合同协议的差异在于约束力的不同,传统意义上的合同协议的约束力来自权威机构的背书,而智能合约只受制于代码约束及区块链信任约束。
智能合约就相当于区块链技术体系架构中的能力层,它是外部世界与区块链网络交互的媒介。
以数字形式制定的一系列承诺,包括各参与方履行这些承诺的协议。
通过通用行为标准去引导智能合约的发展是一种捷径,价值网络的落地离不开智能合约标准的制订。
6.1 NFT - 智能合约标准 EIP-721
721 就是提案编号,NFT 是提案的名称,全称是非同质化代币。
非同质化代币:每一个 NFT 都是独一无二,且不可拆分。
同质化代币,指的就是互相可以替代,且可以进行拆分的货币。例如:人民币
有了 NFT,我们才能够有一种手段将虚拟与现实的价值锚定。
6.2 元宇宙与价值网络
区块链技术为元宇宙提供了去中心化的资产交易平台,NFT/DeFi 等智能合约为玩家的虚拟资产提供承载的媒介;游戏为元宇宙提供交互内容;5G 网络为数据的传输提供可靠保障;而 AR/VR 等显示技术为玩家带来更加沉浸的交互体验。
元宇宙就是我们期待的爆款应用,随着其不断发展,泡沫肯定随之而来,而冷静过后的抽象思考,终会为价值网络的搭建提供标准化的解决方案。