# Fab公链实现企业级应用的统一架构设计之3:辅助链(重点) **Published by:** [FAB公链讲解员小K](https://paragraph.com/@fab-k/) **Published on:** 2022-07-25 **URL:** https://paragraph.com/@fab-k/fab-3 ## Content 前面的文章中我们知道,基础区块链内核中的许多模块也将应用于辅助链及开放存贮架构模块中。 辅助链是FAB公链系统的重要组成部分,通常辅助链节点承载大量具体业务,如汇兑交易、电子商务(电商平台)、供应链、、物联网平台或医疗平台等等,也就是说,辅助链上实现了大规模企业级应用。 在主链的基础上,建立辅助链: 1、使系统具有可扩展性,将扩展性错位投放到局部节点。 2、建立强大的处理能力,完美的运行实体商业应用,实现百万TPS。 但这样的辅助链呈现中心化的特性。那么我们如何确保辅助链的安全性?辅助链节点业务呈现中心化特征,因此,根据Fab的统一设计,基础链(主链)以去中心化方式执行价值确认及交易最终裁决权,配合开放存储架构的去中心化数据存储,从根本上保证了辅助链及其上面的各种功能具有中心化特征的本地交易的同时,实现完全去中心化的安全、可靠、可扩展性,高速运行。1.1 辅助链技术方案辅助链是由基础区块链授权的,由基础链提供原始证据及身份并通过基础链签发的智能合约确定本辅助链的属性及参数交易过程中由主链、KanBan及存储架构参与验证。设计思想上,主要的网络传输及数据处理尽量在辅助链节点执行,而仅将必要的证据及数据提交到KanBan及开放存储系统。值得注意的是,辅助链构造示意图上的辅链并非从主链分叉形成,虚线仅表示依赖关系。 辅助链包含如下关键要素:初始块、智能合约地址路由(SCAR)、跨链统一地址(CCUA)协议、KanBan证明,它们保证了辅链交易的可靠性、安全性和有效性。 辅助链可以有很多很多条,每条辅助链的起始块是由基础区块链签署的特别块,并为辅助链定义一个特别账号,称为智能合约代理路由(Smart Contract Agent Route,简称SCAR),代理辅助链与外部的一切交易。在Fab的总体设计方案上,辅助链可以为从同一个根上生成的两条独立区块链,分别为价值链和事务链,用于服务于辅助链的价值维护与事务管理。如下图所示,完整的辅助链双链结构:价值链记录价值交易,事务链记录业务逻辑和业务数据。这种双链机制使Fab可以在底层区块链与上层业务逻辑之间,构建通用的功能层,全方位支持各类具体商业应用需求。 原则上,辅助链采用基础区块链价值体系,即在辅助链上直接交易基础链货币。但为了使Fab公链具有更广泛的灵活性以适应各种应用场景,Fab设计方案支持定制辅助链协议和共识机制,允许用户发行自己的独立货币。也就是说,任何一个企业都可以在辅助链上开发自己的应用,发行自己的代币。1.2 辅助链的价值及信任机制维护辅助链的信任机制源于基础区块链、过程中受基础区块链及其制订的规则制约、结果及最终裁决权归于基础区块链。 通俗地说,辅助链的身份及属性由主链确定,交易的有效性需经主链认可,数据存储按主链要求,最后结算由主链裁决。Fab的设计原则是在满足此条件前提下运算尽量由辅链节点承担。1.3 SCAR账户及交易方式辅助链核心功能中一个非常重要的特殊模块为SCAR处理模块,以将所有的交易转换为与SCAR之间的交易,并维护关联交易状态。 SCAR是一个特殊账户,称为智能合约代理路由账户Smart Contract Agent Route,SCAR账户的支配权仅限于基础区块链授权的智能合约,用于执行基础链与辅助链对应账户之间的交易,该路由中的智能合约亦由主链确立及控制。 SCAR是辅助链交易枢纽,辅助链上账户间的一切交易均转化为辅助链账户与SCAR之间的交易,所有辅助链与主链及其它辅助链之间的交易也均通过SCAR账户执行,这样,就使辅助链上的所有交易流线化,目的是当用户向基础区块链申请清算时,减少基础链交易数据,且无需交易对方同意即可执行,而SCAR也为基础链防范辅助链欺诈提供了可能措施。 SCAR的机制: 1、这种方式看似中心化,但交易是由去中心化的KanBan验证且数据由去中心化的开放存储节点保存的, 2、辅助链本身不具有裁决权,也不存在数据的独占权,所以也完全是去中心化的。 3、辅助链的SCAR账户私钥由主链智能合约控制。 4、辅助链上的任何交易均由智能合约及SCAR进行合法性检查。 5、辅助链上任何两账户间的交易均被流线化为用户与SCAR之间的交易。1.4 辅助链交易处理流程辅助的交易需要经KanBan核实的,这是防止双花攻击的必要条件,只有通过KanBan验证并收到KanBan签收存根的交易才有效。主链收到辅链提交的数据包后,对包进行验证,首先验明正身,然后验证数据包的有效性,最后核实数据包中记录有效性,如有问题拒收并通知辅链,如通过验证,则更改KanBan相关记录状态,并将交易放入未清算交易表,并签收,将收据发给辅助链;当从主链KanBan收到否决后,辅助链应将可疑交易剔除,重新打包提交。辅助链及KanBan包数据及交易记录的保存应具有完全相同的顺序和时间记录,每次发送包里,均包含上一数据包的Hash值。这样可以使数据传输最少化,所有节点通过PoS生成块时,仅需知会各方最后一个包的Hash值即可。一般情况下,基础链KanBan收到辅助链的数据包,包含一条或以上交易;辅助链在收到KanBan节点验证后该交易全局有效,一个辅助链交易收到的KanBan节点确认越多,可信性越高。辅助链中的交易是由辅助链打包后自主向KanBan节点发送的,KanBan节点间不再自动进行P2P节点间传播。1.5 辅助链账户清算辅助链的价值交易具有全局有效性,这是通过KanBan功能及去中心化的存储架构实施的,即辅助链的账户状态始终与KanBan同步,而包含交易记录的块被提交到KanBan指定的存储节点存储。 当辅助链客户向基础区块链提交账户清算时,即使所在的辅助链消失,也可使清算得到顺利执行,因为KanBan及存储系统保存完整的交易数据及状态信息,而由于SCAR机制的设立,任何辅助链交易均转化为用户与SCAR之间的交易,而SCAR是由基础区块链控制的,所以无需其它交易方的同意即可执行清算。 清算完成后,辅助链上对应地址清空,KanBan中对应的记录也删除。1.6 辅助链分层架构辅助链在系统设计原理上并不限于一层,而是可以建立多层次链。如下图所示:所谓的多层辅链结构,就是从辅助链上再衍生出下一级辅助链,上一层链称为父链,衍生出的链称为子链。 在分层辅助链系统中,子链的KanBan由父链节点维护,因此,辅助链核心也具有KanBan模块,在必要时配置激活。 Fab整个系统最多可以有256级辅助链,每级最多可以有16,777,216个辅助链。1.7 辅助链价值体系与共识机制通常情况下,辅助链采用基础链的同一个价值体系,即在辅助链直接执行基础链货币交易。 Fab公链支持辅助链用户自定义价值体系与共识机制,其目的是增强系统灵活性与适应性。基于业务需要的理由,一个辅助链可以发行自己的币,维护自己独立的价值体系。这也就意味着,一个企业可以发行并维护自己的代币。 当然还有,辅助链双花攻击防范、辅助链的块处理流程、辅助链内核结构等等。1.8 地址格式最后我们一定要说一下,除了SCAR机制,Fab为地址设计制订一了套专门规则:跨链统一地址协议(Cross Chain Unified Address,简称CCUA),即地址专属规则,地址码段相同的地址属于同一拥有人。 1、辅助链与基础链之间仅限同一拥有者在相同地址码的地址间交易。 2、当一个辅助链用户向基础区块链提交清算时,必须转到相对应的地址。 3、一个地址在辅助链上为交易状态型地址,即每次交易不会改变地址,而只是更新余额。 跨链统一地址协议(CCUA)为实施交易验证及简化辅助链交易的管理提供了方便的手段,通过基础链、kanban的制约,实现安全、可靠的交易。而最重要的是,跨链统一地址协议不限于Fab公链,完全可以作为唯一跨链统一地址协议,适应于所有的区块链,可以为实施通用去中心化的交易管理,提供非常方便的手段。可以这么说,Fab的统一架构设计实现了万链互通。1.9跨链统一地址协议跨链统一地址协议(CCUA)也是Fab能实现跨链的最重要手段,可以这么说,Fab做到了真正的跨链,使得万链相连。任何一个区块链公链、私有链、联盟链都可以连接到Fab公链上,这也是为什么在亿币钱包中可以存储BTC、ETH、LTC、TRX、BNB、Doge、Fab、EXG、UNI、DUSD 、MATIC(Ploygon)、USDT(ERC20和TRC20)等等不同公链币种的主要原因。 跨链仅仅只是Fab所有功能之一,可以说完全不起眼。但是功能放在币圈却可以说是王炸的功能了,我们目前能看到的市面上所有标榜自己跨链存储的钱包在底层要么不是安全的,要么根本就不是去中心化的钱包。或者有的去中心化钱包根本上只能支持一种主链代币的存储,比如ETH的去中心化钱包,只能存储基于以太坊开发的各种代币。 那么,Fab的这种跨链对我们来说有什么意义呢?我们在后面单独出一期详细的解释跨链统一地址的详细实现技术,其在钱包、交易做中的功能,以及在七星消费商系统中的重要作用。 如果您觉得好,请推荐给您身边的朋友并关注,谢谢您的支持! ## Publication Information - [FAB公链讲解员小K](https://paragraph.com/@fab-k/): Publication homepage - [All Posts](https://paragraph.com/@fab-k/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@fab-k): Subscribe to updates