DeGate
产品功能说明
Search
⌃K
Links

逃离模式

DeGate链下节点的Operator负责生成zkBlock和提交证明,如果Operator罢工了,所有未提交上链的链下交易就会失效。为了确保资金Trustless,DeGate协议提供了逃离模式(Exodus Mode),当节点罢工时,用户仍然可以提出资产。
一旦进入逃离模式,DeGate智能合约将拒绝接收新的zkBlock数据,状态停留在逃离模式开启前的最新区块。这意味着DeGate所有链下交易都会停止,比如不能交易、提现和转账。逃离模式状态不可逆,用户唯一可做的就是取回其资产。

启动逃离模式

进入逃离模式的步骤如下:
  1. 1.
    发起强制提现:用户可以调用DeGate合约的forceWithdraw方法,发起一次强制提现
  2. 2.
    强制提现未被处理:有任意强制提现请求在规定时间内没有被DeGate节点处理。该时间配置在DeGate合约里
  3. 3.
    开启逃离模式:只要有任意的强制提现未在规定时间内被处理,任何用户可调用DeGate合约的notifyForcedRequestTooOld方法,使DeGate协议进入逃离模式
如果DeGate节点是正直的,便不希望进入逃离模式。节点会尽职尽责地在规定时间内发现并处理完每个强制提现请求。强制提现将被视为用户的一般提现来处理,但差别如下:
  • 强制提现需要指定币种,但不指定提现数量,而是能提尽提,所以节点会取消该币种的所有正在进行的订单,然后处理提现请求。
  • 用户发起强制提现时要用钱包支付费用,一般提现则用DeGate账户支付矿工费。
  • 强制提现请求被成功处理后,用户需要再次调用合约的withdrawFromApprovedWithdrawal方法取回资产。
整个过程如图所示
节点及时处理的强制提现

逃离模式下取回资产

逃离模式启动后,用户可以取回资产,分为三种情况
  1. 1.
    DeGate账户余额:链上调用withdrawFromMerkleTree方法,每次提取一个币种的全部余额,为逃离模式前最新一个区块的账户余额状态
  2. 2.
    未得到确认的高级充值:此时充值资产在合约内,未计入DeGate账户余额,可通过withdrawFromDepositRequest方法取回
  3. 3.
    未得到确认的标准充值:此时充值资产在合约内,未计入DeGate账户余额,需要联系节点运营方申请退币。
普通用户应该如何调用合约?
发起强制提现与取回余额方法都需要用户提供相应数据,这些数据可以通过解析DeGate合约内所有submitBlock交易的Calldata得到。解析方法可查看设计文档。我们预期会有第三方提供实时的DeGate calldata解析服务,届时可通过这些服务来获得信息,甚至第三方可能会提供一键式发起强制提现、进入逃离模式、领取余额的产品。用户不必担心第三方服务的安全问题,因为资产只会提现到发起者的账户,只需注意不要泄漏钱包私钥和资产私钥。