Zoro包含 ZoroChain 和 ApplicationEngine 两个部分,其中ZoroChain 是由 RootChain、MappingChain、ApplicationChain 的链群组成的一套跨链解决方案;ApplicationEngine 是一套基于.NetCore的、架设在 ZoroChain 之上的应用运行环境,是 ZoroChain 的计算资源节点,Application Engine 为应用提供了一套分布式计算运行环境,应用可以通过其方便的访问区块链网络以及调用网络中的各种计算资源。
Zoro的目标是搭建一套针对游戏行业这个垂直领域的基于区块链技术的跨链分布式计算网络环境,让区块链技术无论从运行效率还是功能模块上都满足游戏行业的开发需求,让开发者可以方便高效的开发、发布区块链游戏,提供一站式的跨链解决方案。
ZoroChain
ZoroCore
ZoroCore 是 ZoroChain 的核心,是为 Zoro 中所有其他模块提供共识、验证、区块持久化等区块链核心计算服务的基础模块。
SpringThunder Consensus:ZoroCore 提供了一套基于节点可靠性加权 VRF-BFT 的 SpringThunder 共识算法(ST Consensus),主要思路是通过算法对节点可靠性进行评估,以可靠性排序来代替其他公链常用的节点选举工作,或者可以说,以机器算法来代替人工选举节点的工作,我们相信,算法选取得当的情况下,机器将比人更加可靠。
STC 算法中,节点的可靠性将由两个重要参数影响,一个是节点抵押,一个是工作积分证明,两者决定了节点的可靠性排序,STC 将通过 VRF-BFT 算法根据可靠性加权对节点进行记账权筛选,同时提供一套监测机制,对作弊行为进行惩罚以进一步提高安全性。
节点抵押:需要参与共识,则首先要成为节点,成为节点需要抵押一定金额代币,一个节点可以有多个持币用户参与抵押,持币用户不想成为节点可将代币抵押至其他节点来分享出块收益,若节点犯错则用户有损失代币风险。具体参见 ZID 章节说明。
工作积分证明:节点曾经参与的交易确认、共识出块将换算成积分累计至该节点,工作积分是节点稳定参与网络贡献的记录,是节点出块竞争的重要参数。工作积分每 604800 个块调整一次,调整算法为:NewWorkload = 0.9*OldWorkload,通过调整算法可以保持最近的积分权重比历史积分权重高。
VRF-BFT : VRF-BFT 全称是 Verifiable Random Function –Byzantine Fault Tolerance,即可验证随机函数拜占庭容错算法,STC中采用该算法作为共识算法。网络中所有节点列表将按 fx(抵押, 工作积分证明)排序,每次竞争记账权时,将取列表中前 100 个节点(最少不能低于 4 个,否则共识失败)作为备选节点进行 VRF-BFT 共识。共识流程简述如下:
1、 每一轮出块时,所有节点按 fx(抵押, 工作积分证明)更新节点列表;
2、 根据 VRF 算法,从列表前 100 个节点中选取 1 个提案节点进行提案;
3、 根据 VRF 算法,从列表前 100 个节点中选取多个验证节点对提案进行验证;
4、 包含提案节点在内,超过 2/3 的节点验证通过,则由提案节点广播出块,否则重复第 2 步,重新选取提案节点。
惩罚机制:对于已经确认的交易,若存在异议,则可由监测节点发起验证,验证交易需提交保证金,由全网 2/3 以上备选节点表决,若验证失败,则扣除监测节点保证金,若验证成功则根据不同程度错误,将扣除一定比例抵押代币给监测节点同时清除一定比例工作积分。
1、 验证交易将在交易池中由每轮共识中的提案节点和验证节点进行验证并投票标记并记录至当前区块;
2、 当一个验证交易有超过 67 个备选节点表决为真或假后,表决结束,执行验证惩罚。
3、 当一个节点存在未完成标记的验证请求时,其抵押代币不能释放。
4、 节点被判断作弊,则需扣除 max(该交易价值代币,1%抵押代币)的节点抵押代币,同时扣除代币则算的相应工作积分。扣除代币奖励至监测节点账户。
5、 验证交易发起时,监测节点需提交 max(100,交易价值代币相同的保证金),若节点被判断为未作弊,则保证金将被没收,反馈给被验证节点。
ZoroChain 链群
ZoroChain 由 3 个独立区分的部分构成,每个部分都是一条或多条独立的基于ZoroCore实现的链,分别是:RootChain、MappingChain、ApplicationChain。
RootChain
RootChain 是 ZoroChain 的根链,全网只有一条,MappingChain和 ApplicationChain 都由 RootChain 管理,ZoroChain 内部跨链的交易都需要通过 RootChain 来完成,具体参见 ApplicatioinChain 的“应用链跨链”章节。
RootChain的节点叫“核心节点”,其组成了ZoroChain的核心网络,RootChain 的权限和安全级别在 ZoroChain 中是最高的。
MappingChain
MappingChain 是 ZoroChain 的映射链,其他公链的数据将通过映射链并入到 ZoroChain 中,每条公链对应一条映射链,映射链由两类节点组成,验证节点和观测节点,验证节点需同时运行 ZoroChain 和公链程序(如映射以太坊的话,需运行 geth 软件),验证节点在收到公链新出块数据后,将根据 ZoroChain 设定的格式将其他公链块数据转换成 MappingChain 数据并在 MappingChain 进行二次 STC 共识,共识确认后将广播给其他节点;观测节点无需运行公链程序,其只接收同步验证节点的共识数据。节点可以同时是观测节点和验证节点。
数据映射:MappingChain 与侧链类似,都是以公链为主链建立一条平行侧链,所不同的地方在于,MappingChain 会将公链交易数据“翻译”一遍映射至 ZoroChain 空间,其交易数据格式将转换成Zoro 设定的格式(一般是交易结果集,暂时无法同步非标准交易或者非标准智能合约操作),映射完成之后,除了跨链交易部分的数
据,公链上所有交易数据都可以在 ZoroChain 空间内部通过MappingChain 得到快速验证。
二次共识:MappingChain 的验证节点会通过其他公链接口获取公链交易数据和块数据,所获取的数据将转换成 ZoroChain 格式后在 MappingChain 网络内广播,基于 ZoroCore 的 STC 算法进行二次共识并出块,需要指出的是,公链的交易并不会在 MappingChain上再次执行,而是会被翻译成结果集再在 MappingChain 上共识并记录。
举例来说,如果有一笔交易是 20 个 ERC20 代币 XCoin 在Ethereum 上从 A 账户转移到 B 账户,其在以太坊上的交易执行过程是通过 EVM 执行代币智能合约,通过 put 更改存储区数据来完成的;那么该交易在 MappingChain 上进行二次共识的过程并不会执行 EVM 智能合约,而只是简单的转换为 A 账户在 XCoin 地址下的数值减 20,B 账户在 XCoin 地址下的数值加 20。
MappingChain 启动阶段只支持公链的标准转账交易映射,包括各个公链的标准代币合约交易映射,未来将扩展到 NFT 及其他广泛被采用的标准化合约。
安全性问题:MappingChain 的安全性取决于验证节点的数量,数量越大,则其安全性越高。同时,还取决于抵押代币的数量,一般来说 MappingChain 的验证节点不能验证超过其抵押代币数量的交易以保证跨链交易资金安全。
公链资产跨链:当用户需要将资产映射到 ZoroChain 时,可以在公链上将资产转至公链上的映射合约或账户,当 MappingChain 监测到该交易后,将通过验证节点共识下发 ZoroChain 上的代币至用户账户;反之,当用户需要将映射资产转移回公链时,则发送销毁映射代币交易至 MappingChain,由验证节点共识后,将公链上的映射合约或账户代币转移回公链用户账户。若监测节点发现验证节点作弊,则可以发起重新验证,2/3 以上节点通过,则所有作弊验证节点的等量押金扣除后奖励监测节点,若验证失败,则没收监测节点保证金。
公链资产将通过超级验证节点去中心化管理,Zoro 将在各个公链上部署映射合约,合约用于管理转移至 MappingChain 的资产,合约将采用超级验证节点多签方式管理(具体参见“ZID 及节点”章节),其将以去中心化管理的方式最大程度保持 ZoroChain 映射资产的安全性。
资产从公链转移到 MappingChain 步骤
1、 账户 A(公链地址)在公链发起转账 TxP1,将 10 个 NEO 转移至映射合约;
2、 账户 Az(ZoroChain 地址)在 MappingChain 发起代币映射交易 TxMap,包含 TxP1 交易信息及账户 A 的 NEO 公链签名;
3、 验证节点对 TxMap 进行验证,通过映射公链数据对 TxP1 交易信息及账户 A 签名进行验证,通过后发放 10 个映射 NEO代币至账户 Az,完成映射。
资产从 MappingChain 转移到公链步骤
1、 账户 Az(ZoroChain 地址)在 MappingChain 发起映射代币销毁交易 TxRed,销毁 10 个映射 NEO,包含公链账户信息账户 A;
2、 验证节点对 TxRed 进行验证,冻结账户 Az 中 10 个映射NEO;
3、 冻结 Az 中 10 个映射 NEO 后,超级验证节点将构造公链转账交易 TxP2 并广播多签请求;
4、 多签完毕后 TxP2 信息将更新至 TxRed,Az 中 10 个冻结映射 NEO 被销毁,同时 TxP2 将被提交至公链,10 个 NEO 从公链映射合约转账至账户 A,完成提取。
ApplicationChain
ApplicationChain 是 ZoroChain 的应用链,其主要服务于应用,应用链为多条平行链,可通过根链创建、查询,应用链出块速度高(毫秒级),一段时间内无请求则不出块,应用链间交易请求不互相等待,可并发。当某个应用链发生故障或遭受攻击,将不影响其他应用链运行。
应用链跨链:与公链资产跨链类似,需通过验证节点完成,监测节点负责事后监督惩罚,应用链间资产转移需通过根链完成。应用链跨链验证节点需同时获取应用链与根链区块数据,应用链验证节点以多签形式管理应用链在根链上的资产映射合约。
应用链与根链、映射链都采用相同地址加密算法,所以可以互相验证交易信息。
根链到应用链转移流程如下:
1、 账户 A 在根链发起转账 TxP1,将 10 个 ZORO 转移至 AC1映射合约;
2、 应用链 AC1 验证节点在根链检查到 TxP1 后,在应用链 AC1发起 ZORO 发放交易 TxSend1,其中包含 TxP1 信息;
3、 应用链 AC1 共识节点分别验证 TxP1 和 TxSend1,通过后将10 个 ZORO 在应用链 AC1 上发放至账户 A。
应用链到根链转移流程如下:
1、 账户 A 从应用链 AC1 发起 10 个 ZORO 转移至根链交易TxTrans1;
2、 应用链 AC1 共识节点根据 TxTrans1 交易冻结账户 A 的 10个 ZORO;
3、 冻结完成后验证节点将构造根链多签转账请求 TxP2 并进行广播;
4、 多签完毕后,验证节点将 TxP2 信息更新至 TxTrans1,同时销毁冻结的应用链 AC1 上账户 A 中的 10 个 ZORO,并将TxP2 提交至根链,10 个 ZORO 从根链 AC1 映射合约账户转移至账户 A。
应用链的虚拟机:应用链的智能合约虚拟机可以支持 OnChain 计算和 OffChain 计算,顾名思义,OnChain 计算与其他公链的典型智能合约虚拟机一致,合约调用的交易需由所有验证节点执行并根据智能合约执行结果更改链上状态,而 OffChain 计算所不同的是,交易体里除了包含调用合约、方法、参数之外,还包含本次调用的执行结果,其他节点收到 OffChain 计算之后,将不同步执行智能合约调用而是只简单的同步执行结果。
OffChain 计算的安全性:由于 OffChain 计算并不会在节点间进行计算过程验证,其大大提升同步效率时带来的副作用也是明显的,其
安全性将大大降低,只能由监测节点进行事后监测,所以一般来说,我们将建议将安全性要求较低的部分放在 OffChain 计算中。虽然其安全性要低不少,但是相对中心化的服务来说,其毕竟还有事后监督部分,安全性还是要比中心化服务高上一些。
ZID 及节点
要加入 ZoroChain 网络,必须申请成为节点,申请由网络自动确认完成,节点分为核心节点、观测节点、应用节点、监测节点、验证节点。
ZID:成为节点之前,必须先创建 ZID,用户可以通过发起 ZID 创建交易来创建 ZID,创建 ZID 交易需要消耗固定 10 个 ZORO 的手续费。
ZID 是用户在 ZoroChain 网络中的身份,想要参与 ZoroChain 的网络建设,例如参与治理投票、获取代理收益、成为节点等,ZID 是必不可少的。
获取 ZID 后,用可以选择抵押代币运行各种节点,或者将代币代理至其他节点分享节点收益。
核心节点:成为核心节点需要抵押至少 100,000ZORO,可参与分享核心节点挖矿奖励,核心节点可以参与 RootChain 记账竞争,获得核心节点挖矿奖励,关于挖矿奖励具体分配详见“挖矿”。
观测节点:成为观测节点无需抵押。
验证节点 : 验 证 节 点 需 抵 押 至 少 100,000ZORO , 可参与MappingChain 记账权竞争,获取验证节点挖矿奖励;超级验证节点需抵押 1,000,000ZORO,超级验证节点与验证节点唯一不同之处在于,其可以参与公链代币多签管理。成为超级验证节点需审核,通过发起超级节点验证申请获得,申请由现有超级验证节点多签审核通过新成员申请。
应用节点:成为应用节点需抵押 10,000ZORO,可分享应用链运行手续费收益。
监测节点:成为监测节点需抵押 1,000ZORO,可发起交易验证请求,验证成功可以获得节点扣除的押金奖励。
ApplicationEngine
ApplicationEngine 是 基 于 .NetCore 的 应 用 虚 拟 机 , 工 作 在ZoroChain 中的 ApplicationChain 之上,通过应用链与 ZoroChain 交互,ApplicationEngine 运行的节点定义为计算节点,其功能可以通过插件系统进行扩展,主要模块包含网络通信、通用计算库、图形计算库、数据库等,应用程序可以运行在 ApplicationEngine 上,其计算节点可以自行架设或者租用其他用户架设节点。
计算节点
计算节点是 ApplicationEngine 所运行的节点, 其提供ApplicationEngine 运行所需要的环境,计算节点网络由提供不同功能的计算节点组成,如通用计算、图形计算、AI 计算、存储等,计算节点通过应用链节点连接入 ZoroChain,是应用链的叶子节点。
ApplicationEngine 可通过 OffChain 计算将关键计算步骤记录至ApplicationChain 上,亦可以通过 OnChain 计算进行 ApplicationChain的各种链上操作、智能合约调用。
计算节点运行费用可通过应用链结算,费用结算具体参考“节点激励-系统费用”章节。
渲染节点 - 渲染流视频流云计算
正如我们前文所提到到,未来的计算将更多的发生在云端,在游戏领域,Sony、MicroSoft、Google 都提出了各自的云游戏解决方案,当然,都是中心化的云,3 家都是通过视频流来进行图形传输,在目前的网络环境下体验并不好,未来 5G 时代到来,低延迟和高带宽将让视频流云游戏体验与本地游戏一致。
Zoro 将提供渲染节点,渲染节点可选择 2 种远程图形数据传输方案:渲染流、视频流。
渲染流方案是指,CPU 完成计算后,GPU 执行部分计算,生成渲染指令流发送到远程客户端,客户端本地 GPU 根据渲染指令继续执行完成渲染并进一步栅格化显示,GPU 所需要的渲染素材由本地终端预先存储并加载至 GPU。
视频流方案是指,CPU 完成计算后,GPU 执行渲染并输出栅格化图形数据,并提交至视频压缩模块,输出实时视频流发送至远程客户端,远程客户端进行视频解压显示。
渲染流需要云端计算较少,带宽需求低,本地终端性能要求高,需要 GPU;视频流云端计算多,带宽需求高,本地终端性能要求低,无需 GPU。
ApplicationEngine 的应用可以通过渲染节点发送图形数据,单机游戏和多人游戏都在服务器完成执行和渲染。通过适当的数字版权机制,云游戏情况下单机游戏可以较好的避免盗版;多人在线游戏可以从 C/S 结构的系统架构中解放出来,像单机游戏一样开发多人游戏,把远程通信工作下放到图形传输和输入指令传输层面,大大简化开发工作。
开源游戏框架
基于 Application Engine,Zoro 将建设系列开源游戏框架,将陆续覆盖各种类型游戏(如 FPS、RPG、RTS、SLG、MOBA 等等)和各种终端。开源游戏框架将免费提供给社区使用,通过开源框架极大降低游戏开发者的开发成本,同时极大丰富 Zoro 社区应用内容。
节点激励
挖矿
ZoroChain将为参与网络的节点提供代币激励,即挖矿,ZoroChain中的 MappingChain 和 RootChain 将有挖矿产出,具体如下:
MappingChain 挖矿:MappingChain 节点出块产出 50%给提案节点(即出块节点),40%提供给参与记账节点,10%进入 MappingChain矿池。
RootChain 挖矿:RootChain 节点出块产出 50%给提案节点(即出块节点),40%提供给参与记账节点,10%进入 RootChain 矿池。
矿池:MappingChain 和 RootChain 的矿池每个周期(604800 个块,约 1 周)选取节点工作积分列表中排名前 10 的奖励 30%矿池代币,再随机选取列表中 10 个节点奖励 10%矿池代币。
ZoroChain 的挖矿将在 Zoro 第 2.0 阶段开启。
系统费用
1、 创建 ZID 手续费:ZID 创建手续费 35%奖励提案节点(即出块节点),35%奖励参与记账节点,30%进入 RootChain 矿池。
2、 Gas fee:根链、映射链 Gas fee 按 Gas Price*Gas 计算,35%奖励提案节点(即出块节点),35%奖励参与记账节点,30%进入 RootChain 矿池;应用链手续费也按 Gas Price*Gas 计算,可由多签方式指定付费账户,50%奖励提案节点(即出块节点),50%奖励参与记账节点。
3、 监测节点验证交易保证金:若保证金被扣除,将进入所在网络矿池。
4、 投票提案保证金:发起提案需要提交一定额度保证金,若提案被投票为无效提案,则保证金将进入 RootChain 矿池。
5、 ApplicationEngine(计算节点)使用费用:ApplicationEngine使用费用可以由节点搭建人指定,可采用两种方式:按计算量付费、按时间付费(包月),费用支付至计算节点账户。计算节点亦可设置免费应用 Hash,制定应用无需付费即可使用节点,当用户自己搭建计算节点时可以采用这种方式。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』