# 跨链机制

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链。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fonscan.io/zh_cn/develop/white-paper/technology-system/cross-chain-mechanism.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
