永续交易-强制提款和强制交易
对于永续交易应用程序,有两种强制操作:强制提款和强制交易
我们以场景示例,以说明为什么需要执行这两个强制操作来保证资金的自主保管。
Alice的仓位为+1 BTC和0 USDC,BTC价格为20,000 USDC。 Alice想提取她所有的资金。 她可以提交链上的强制提款请求。 但是,由于合成资产的风险因素,她只能提取19,300 USDC,而不能全额提取(20,000 USDC)。 否则,她的仓位将低于维持保证金。 为了获得全部金额,她必须仅拥有抵押品。 为此,她可以使用“强制交易”操作并出售其BTC以换取USDC。
此处描述了强制请求的一般流程。 本节描述了“强制提款”和“强制交易”请求的特定参数。
由于链下限价订单和提款都需要starkKey签名,因此对于丢失其私人starkKey的用户来说,也建议采取强制操作以从系统中获得其资金。

强制提款

‌当Alice想要执行强制提款时,她在StarkEx合约中调用fullWithdrawalRequest全额提款请求函数。 此函数获取三个参数:starkKeyvaultId金额
仅当starkKey参数与发起交易的以太坊地址相关联时,链下应用程序才会处理该请求。 否则,StarkEx智能合约将拒绝该请求。
在链下,仅当提供的starkKey对应于所提供的vaultId时,该请求才有效,并且所要提取的资金数额确实可以在不低于维持保证金的情况下提取。
建议首先在强制交易中平仓,然后在保险库中只剩下抵押品时才使用强制提款。 否则,草率的强制取款请求可能导致清算。

强制交易

为了提交强制交易,交易双方必须事先就该项交易达成协议。
“双方”在现实生活中可能是同一个人。 这在密钥恢复的情况下很有用(将丢失了starkKey的旧保险库中的资金转移到新生成的starkKey的新保险库中)
然后,其中一方提交一份包含第二方签名的链上请求。 该请求包含以下参数:
  • 双方的starkKeyvaultId
  • 要转移的抵押品AssetId抵押品金额
  • 要转入的合成AssetId合成资产金额
  • a_is_buying_synthetic一方买_合成资产-一个标志,标识出他们中购买合成资产的那一方。
  • submission_expiration_timestamp提交_失效_时间戳-以小时为单位。 这是为了防止非发送方在未来的任意时间执行交
  • nonce随机数-用于保护交易中的非发送方免受重播攻击
  • eth_signature以太坊_签名-非发送者的各项参数签名
  • premiumCost额外费用成本-用于确定此交易的Gas成本的参数。 有关详细信息,请参见 强制提款
强制交易是一项免手续费的操作,但请注意,此请求的发送方支付的gas价格可能比其链下交易支付的费用要高得多。
仅在两个交易者的starkKey值与他们的以太坊地址匹配,之前没有相同参数的请求 (包括随机数),以及blockchain_time / 3600 <= submission_expiration_time区块链时间 / 3600 <= 提交失效_时间的情况下,智能合约级别的强制交易请求才被视作有效(即,该请求被记录为应用程序必须服务的操作项)。
在这种情况下,请求将被移至应用程序。 如果指定的vaultId(保险库ID)值对应于指定的starkKey值,并且该交易将两个仓位都保持在维持保证金以上(或提高其仓位与维持保证金的比率),则该交易生效。
如果不是这种情况,StarkEx将证明请求无效,并且不会执行交易。
Copy link