0x01 联盟链及区块链原理
1.1 联盟链
联盟链是介于公有链和私有链之间,具备部分去中心化的特性。
联盟链是由若干机构联合发起,由盟友共同来维护,它只针对特定某个群体的成员和有限的第三方开放,其加入和退出需要得到盟友的许可,所以也被称为许可链。
联盟链的特点
- 部分去中心化:联盟链只属于联盟内部的成员所有,联盟链的节点数是有限所以容易达成共识。
- 可控性较强:公有链是一旦区块链形成,将不可篡改,这主要源于公有链的节点一般是海量的,比如比特币节点太多,想要篡改区块数据,几乎是不可能的,而联盟链,只要所有机构中的大部分达成共识,即可将区块数据进行更改。
- 数据将不会默认公开:不同于公有链,联盟链的数据只限于联盟里的机构及其用户才有权限进行访问。
- 交易速度很快:与私有链一样,联盟链本质上还是私有链,因此由于其节点不多的原因,达成共识比较容易,交易速度自然也就快很多了。
联盟链的应用场景
场景一:商品溯源
在传统的商业零售场景中,商品从出厂到消费者的链条存在中间环节信息不透明的情况,当发生商品质量或安全问题的时候,难以回溯和追责,同时供应链信息也存在被篡改或伪造的风险。
那么就可以使用联盟链来统一上下流,从商品出厂到消费者手里的整个流程环节的揭露,通过这些方式来解决上述问题。
场景二:公益慈善
基于区块链数据可追溯、不可篡改等特点对捐赠资金及资金流向进行公示,可以提高受捐机构的公信力,减少捐赠人对资金使用的质疑。
场景三:供应链金融
在传统供应链体系中,除了核心企业外,还包括了上游的多级供应商和下游的多级经销商,但由于企业的信用无法实现传递,导致许多企业面临融资难、融资慢的问题,影响了业务的健康发展和生产规模的扩大,同时由于信息难以共享,使得企业之间交易协作的效率较为低下,比如由于票据流通不便导致的合同结算慢的问题。
场景四:互助保险
这种模式是基于特定人群自发组织成一个保险风险池互帮互助,无中心信任背书,此时,如何提高保险资金的公平合理使用就显得尤为重要,利用区块链技术公示所有保险资金的流向,增加了松散群体之间的信任,能帮助这种保险模式取得了很好的发展前景。
1.2 区块链的基本技术原理
哈希函数

哈希函数的定义:一般翻译叫做散列函数、杂凑、或音译为哈希,这种技术是把任意长度的输入(又叫做预映射 pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。
哈希函数的特点:正向计算容易,无法逆向计算。
常见的 hash 函数:
- MD5:摘要长度为128bit,由于容易受到碰撞攻击(俗称撞库),目前使用越来越少。
- SHA:SHA系列哈希算法由美国国家安全局制定,具有多个hash算法标准,可以产生160~512bit不等的哈希摘要,目前在区块链中使用较多的是SHA256,摘要长度为256bit,具有较高的抗碰撞性。
加密算法
加密算法可以分为对称加密算法和非对称加密算法,具体加解密过程如下图所示:

默克尔树和默克尔证明

默克尔树是一种二叉树结构,用于高效、安全的验证大量数据的完整性,广泛的应用于区块链和分布式系统中。
结构和工作原理:
- 叶子节点:树的底层节点包含数据的哈希值(通常是交易数据或文件内容)。
- 非叶子节点:每个非叶子节点是其子节点hash值的组合hash。
- 根节点:树的顶部节点称为默克尔根(Merkle Root),是整个数据集的唯一标识。
举个例子来解释一下:
- 叶子节点:hash A,hash B,hash C,hash D
- 中间节点:hash(hash A + hash B) 和 hash(hash C + hash D)
- 根节点:hash(hash(hash A + hash B) + hash(hash C + hash D))
默克尔证明是一种验证某个数据是否属于默克尔树的方法,他通过提供从目标数据到根节点的路径上的哈希值,来证明数据的有效性。
其验证过程:
- 提供目标数据的 hash。
- 提供从目标数据到根节点的路径上的所有兄弟节点的hash值。
- 通过重新计算路径上的hash值,验证是否与默克尔根匹配。
例如,验证交易B是否在默克尔树中:
- 提供 hash B、hash A、hash(hash C + hash D)
- 计算 hash(hash A + hash B),然后与 hash(hash C + hash D)进行组合,最终验证是否与默克尔根一致。
默克尔树和默克尔证明是web 3.0中确保数据完整性和高效验证的核心工具,他们广泛应用于区块链、去中心化存储、隐私保护等领域,是构建可信、高效的去中心化系统的重要基础。
数字签名技术

区块链的核心数据结构
区块链的类型:根据链式结构的不同,区块链可以分为:
单链结构:例如比特币和以太坊,只有一个主链。
侧链结构:例如Polkadot和Cosmos,主链与多个侧链通过跨链协议连接。
有向无环图(DAG):例如IOTA和Nano,使用图结构代替链式结构,提高交易吞吐量。区块链的核心特性:区块链的核心数据结构支持以下几种特性:
不可篡改:一旦数据被写入区块并添加到链中,几乎无法被篡改。
去中心化:所有节点共同维护链式结构,无需中心化机构。
透明性:所有交易数据公开可查,确保透明度。
一致性:通过共识机制(例如PoW、PoS)确保所有节点对链的状态达成一致。
区块(Block):区块是区块链的基本组成单元,每个区块包含以下主要部分:
- 区块头
- 交易列表
- 区块大小。
区块头:区块头是区块的元数据部分,包含了一些关键信息,其中有:
版本号:标识区块的版本和协议规则
前一个区域的hash值(previous Block hash):指向链中前一个区块的hash值,用于形成链式结构。
默克尔根:当前区块中所有交易的默克尔树的根hash值,用于验证交易的完整性。
时间戳:区块创建的时间。
难度目标:当前区块的挖矿难度。
随机数:用于工作量证明(PoW)的随机值,矿工通过调整它来找到满足难度目标的hash值。交易列表(Transaction List):交易列表是区块的主体部分,包含一组经过验证的交易数据,每笔交易通常包括:
输入:指向之前交易的输出(UTXO模型)或账户余额(账户模型)。
输出:指定接收方地址和转账金额。
签名(signature):用于验证交易的合法性。
链式结构:区块链通过hash指针将区块链连接起来,形成一个不可篡改的链式结构.
每个区块的区块头包含前一个区块的hash值,形成“链”。
如果某个区域被篡改,其hash值就会发生变化,导致后续所有区块的hash值失效,从而被网络拒绝。
区块链中哈希和签名的应用

共识机制
共识机制是web3.0的区块链技术的核心组成部分,用于在去中心化网络中达成一致,确保所有节点对数据状态(例如交易记录、区块内容等)的认同,由于区块链没有中心化的权威机构,共识机制的作用是解决分布式系统中的信任问题,防止恶意行为(例如双花攻击),并保证网络的安全性和可靠性。
所谓双花,通俗易懂的说,就是一份钱花了2次或者多次。在区块链中,双花问题会在以下情况下出现:
- 由于共识机制导致区块确认时间长,用一个数字货币去进行一次交易,可以在这笔交易还未被确认完成前,进行第二笔交易。
- 控制算力来实现双花,第一次交易被验证通过并被记录入区块后,在该网络中有更高的算力验证出新的更长链条,在该链条中这笔钱被第二次花费,由于第二次花费的区块链条更长使第一次交易区块所在链条为无效链条,这样一来,第一次交易所在的区块链被区块链网络放弃,第一次花费的钱就又回到自己账户了,就导致了双花问题。
常见的共识协议:
1. 先写入后共识,例如PoW(比特币、以太坊1.0阶段)、PoS(以太坊2.0阶段、Cardano、Tezos)、DPOS(EOS、TRON)、PoX、POA(企业级区块链,例如Hyperledger)
- PoW:核心思想是节点(矿工)通过解决复杂的数学难题(通常是hash计算)来竞争记账权,第一个解决问题的节点获得打包区块的权利,并获得奖励。其特点是需要大量的计算资源(电力、硬件),安全性高但效率低,适用于去中心化程度高的网络。
- PoS:其核心思想是记账权由节点持有的代币数量(权益)决定,持有更多代币的节点被选为验证者的概率更高,其特点是节能环保,不需要大量的计算资源,效率较高,但是可能会导致“富者愈富”的问题,通常结合惩罚机制防止恶意行为。
- DPoS:其核心思想是代币持有者将投票权委托给少数验证节点(代表),由这些代表负责打包区块和维护网络。其特点是效率高,适合搞吞吐的应用,去中心化程度较低,依赖少数验证节点。
- PoA:其核心思想是记账权由预先选定的权威节点(通常是可信实体)负责,其特点是高效且低能耗,去中心化程度低,适用于私有链或联盟链。
2. 先共识后写入,例如PBFT及BFT(NEO、Stellar)变种
- BFT:其核心思想是在网络中存在恶意节点(拜占庭节点)的情况下,通过投票机制达成一致。其特点是高效且安全,适合小规模网络,去中心化程度低。
- 变体:
- 实用拜占庭容错(PBFT):适用于联盟链
- 委托拜占庭容错(dBFT):例如NEO使用。智能合约
区块链智能合约:从数据可信上升到业务可信。
核心数据和核心业务逻辑运行在区块链上,保证去中心化与上层业务进行衔接,提供用户界面或业务集成。

区块链运行原理总结
