多链(multi-chain)不同于跨链(cross-chain),多链不需要第三方的跨链桥、跨链协议,也不存在抵押增发跨链资产,是指在相同的通信协议下无缝转移原生资产(native assets)。跨链与多链的本质性区别是安全性不一样,多链是确保状态一致,即如果回滚那么也会状态一致的回滚。但跨链受制于不同区块链的状态不同,无法做到同步一致,一旦发生攻击,那么跨链资产的平衡将会打破。
层次设计
多链一共分为3层,链管理层SMC,通过一个合约SMC管理验证节点押金,验证节点随机抽样等;Date为具体的交易数据层,各个子链分别维护各个子链的全状态数据和主链的全状态;state层主要是交易的产生层,也可以说是智能合约的执行层。
基本的分片结构
假如一台计算机的处理能力为C笔交易,主链节点能观察C条子链,则整个系统能处理C*C笔交易。
多链系统中的大多数用户都会运行两部分程序。
多链架构图
主链变更
本子链协议可单独于现有MainChain主链实施。只需再主链中作出如下修改,其中第二个变更非技术必须。
在MainChain主链上增加合约;该合约支持存入DEPOSIT_SIZE的ETH;deposit函数以:
代码语言:javascript复制fields = {
# Hash of the parent block
'parent_hash': 'hash32',
# Slot number (for the PoS mechanism)
'slot_number': 'int64',
# Randao commitment reveal
'randao_reveal': 'hash32',
# Attestations
'attestations': [AttestationRecord],
# Reference to bumo chain block
'bu_chain_ref': 'hash32',
# Hash of the active state
'active_state_root': 'hash32',
# Hash of the crystallized state
'crystallized_state_root': 'hash32',
}
主链状态分为活跃状态和结晶状态两种。
以下为活跃状态
代码语言:javascript复制/ActiveState:
fields = {
# Attestations that have not yet been processed
'pending_attestations': [AttestationRecord],
# Most recent 2 * CYCLE_LENGTH block hashes, older to newer
'recent_block_hashes': ['hash32']
}
MainChain主链处理
处理MainChain链与处理bu1.0链在很多方面非常类似。客户端下载并处理区块,维护当前“规范链”,终止于当前的“头部”。但是,由于主链链与现有bu1.0链的关系,并且本身是一个多链的架构,所以(处理)也存在一定的差异。