跨链机制
FSC使用权益证明共识协议,该协议有机会分叉并需要确认更多块。一个区块只有一个验证者的签名,因此很难依靠一个区块来验证来自FSC的数据。
为了充分利用其他链的验证人法定人数,采用了类似于许多 [ Bridge ]或Oracle区块链的想法:
来自FSC的跨链通信请求将作为交易提交并执行到FON智能链上。交易的执行会发出`Events`,这些事件可以被观察到并打包在某个“ Oracle*”中到其他链上。这种类型的“Oracle”包没有Block Headers、Hash 和Merkle Proof,而是直接包含动作的跨链信息,例如发送者、接收者和转账金额。
为保证预言机的安全,其他链的验证人将形成另一个法定人数“Oracle Relayers”。其他链的每个验证者都应该运行一个专用进程作为 Oracle Relayer。这些Oracle Relayer 将使用相同的验证器密钥将跨链通信包(如Oracle)提交到其他链并投票。任何由超过⅔ \* N+1 Oracle Relayers投票权签名的包与由⅔ \* N+1相同法定人数的验证者投票权签署的任何区块一样安全。
通过使用相同的验证者法定人数,它将轻客户端代码保存在其他链上,并将连续的块更新保存到其他链上。此类Oracle还具有Oracle ID和类型,以确保排序和正确的错误处理。
超时和错误处理
存在跨链通信失败的场景。例如,由于合约中的一些编码错误,中继包无法在FSC上执行。超时和错误处理逻辑**用于此类场景。对于可识别的用户和系统错误或任何预期异常,两个网络应该自行修复。例如,当其他链到FSC转账失败时,FSC将发出失败事件,Oracle Relayers将执行其他链退款;当FSC到其他链转账失败时,其他链会发出退款包给Relayer进行中继,以解锁资金。但是,在跨链通信的任何步骤中仍然可能发生意外错误或异常。在这种情况下,Relayers 和Oracle Relayers会发现相应的跨链通道卡在特定的序列中。在超时时间之后,中继器和Oracle中继器可以请求“SkipSequence”事务,卡住的序列将被标记为“不可执行”。将发出相应的警报,社区必须讨论如何处理这种情况,例如通过验证者的赞助商进行回报,或在下次网络升级期间清除资金。
跨链用户体验
理想情况下,用户希望使用两条平行链,就像使用一条链一样。它需要将更多的聚合交易类型添加到跨链通信中才能实现这一点,这将增加极大的复杂性、紧密耦合和维护负担。这里其他链和FSC只实现了初始启动时启用价值流动的基本操作,而将大部分用户体验工作留给客户端UI,例如钱包。例如,一个出色的钱包可能允许用户以安全的方式直接从FSC 将代币出售到其他链的DEX订单簿上。
跨链合约事件
跨链合约事件(CCCE)旨在允许智能合约直接通过合约代码触发跨链交易。这成为可能,基于:
■ 可提供标准系统合约,服务于通用智能合约可调用的操作;
■ 标准事件可以由标准合约发出;
■ Oracle Relayers可以捕获标准事件,触发相应的跨链操作;
■ 可以在其他链上创建专用的、代码管理的地址(账户),并由FSC上的合约访问,这里命名为“其他链上的合约地址”(CAoB)。
实现了几个标准操作:
■ FSC到其他链转账:这与正常的FSC到其他链转账的实现方式相同,仅通过标准合约触发。资金可以转移到其他链上的任何地址,包括转移发起合约的相应CAoB。
■ 在其他链上转账:这是一种特殊的跨链转账,而真正的转账是从CAoB到任何其他地址(甚至是另一个CAoB)。
■ 其他链到FSC的转账:这是通过两次跨链通信实现的。第一次由FSC合约触发并传播到其他链,然后在第二次通过时,其他链将开始正常的其他链到FSC的跨链转移,从CAoB到FSC上的合约地址。需要特别注意的是,FSC合约仅在第二遍的任何转账时增加余额,第二遍中的错误处理与正常的其他链到FSC转账相同。
■ IOC (Immediate-Or-Cancel) Trade Out:将资产转移到其他链的主要目标是进行交易。该事件将指示将CAoB中的一定数量的资产尽可能交易成另一种资产,并将交易的所有结果,即留下的源和交易的目标代币,转回FSC。其他链将通过向交易对发送“立即或取消”(即 IOC 订单)来处理此类中继事件,一旦下一次匹配完成,结果将被中继回 FSC。
■ Auction Trade Out:该事件将指示其他链发送拍卖订单,将CAoB中的一定数量的资产尽可能多地交易为另一种资产,并在结束时将所有结果转回 FSC拍卖。FSC将推出拍卖功能。
Trade Out有一些细节:
■ 两者都可以有交易的限价(绝对或相对);
■ 最终结果将被写成跨链包传递回FSC;
■ 转回FSC的资产可能会收取跨链通讯费用;
■ FSC合约维护CAoB上余额和未完成订单的镜像。无论在Trade Out期间发生什么错误,最终状态都会传播回原始合约并清除其内部状态。
有了上述特点,它简单地在FSC上的所有智能合约中添加了具有高流动性的跨链转账和兑换功能。将大大增加智能合约和dApps上的应用场景,实现1链+1链>2链。
Last updated