入门
任何人都可以实例化 swap 合约的实例。Injective 主网上已经上传了此合约的一个版本,可以在这里找到。 在实例化合约之前,作为合约所有者,你需要回答三个问题:1. 哪个地址应该是费用接收者?
由于 swap 合约下的订单是 Injective Exchange 模块中的订单,这意味着每个订单都可以有一个费用接收者,可以收取 40% 的交易费用。通常,交易所 dApp 会将费用接收者设置为自己的地址。2. 此合约应支持哪些代币?
合约中可用的每个代币都必须定义一个路由。路由是指代币 A 将通过哪些市场来获得 代币 B。例如,如果你想支持 ATOM 和 INJ 之间的交换,那么你必须通过向合约提供 ATOM/USDT 和 INJ/USDT 的市场 ID 来设置路由,以便它知道 ATOM 和 INJ 之间的交换路由将是 ATOM ⇔ USDT ⇔ INJ。
目前,合约只能支持以 USDT 计价的市场。
3. 应该为此合约提供多少缓冲资金?
作为合约所有者,你还必须向合约提供资金,这些资金将在交换发生时使用。缓冲资金在合约下单时使用。如果用户想要交换大量金额或在流动性不足的市场中交换,则需要更多的缓冲资金。当合约缓冲资金无法满足用户的输入金额时,将发生错误。 目前,缓冲资金应该只是 USDT。消息
Instantiate
使用合约版本和配置详细信息初始化合约状态。配置包括管理员地址和费用接收者地址。Execute
处理不同类型的交易和管理功能:- SwapMinOutput:以最小输出数量进行交换。
- SwapExactOutput:以精确输出数量进行交换。
- SetRoute:设置交换路由。
- DeleteRoute:删除交换路由。
- UpdateConfig:更新合约配置。
- WithdrawSupportFunds:从合约中提取支持资金。
Reply
处理来自其他合约或交易的回复。Query
处理对合约的各种查询:- GetRoute:获取特定的交换路由。
- GetOutputQuantity:获取给定输入数量的输出数量。
- GetInputQuantity:获取给定输出数量的输入数量。
- GetAllRoutes:获取所有可用的交换路由。
