Injective | Documentation
InjectiveGithub
Injective | 中文文档
Injective | 中文文档
  • 关于 Injective
  • 快速入门
    • 钱包
      • 创建钱包
      • 账户
      • 质押
      • 治理
      • 拍卖
    • 代币标准
      • INJ 代币
      • Token Factory
      • CW20 标准
    • 交易
      • Gas 和 Fees
  • 指南
    • 创建钱包
    • 桥接
      • From Ethereum
      • Using Wormhole
      • Using IBC
      • From Solana
    • 发布代币
    • 发布市场
    • Denom 元数据
    • 获取INJ
  • 工具包
    • injectived
      • 安装 injectived
      • 使用 injectived
      • 指令
    • Injective TS SDK
    • Injective Go SDK
    • Injective Python SDK
    • Injective CW SDK
    • The Graph
  • 参考
  • 术语表
  • 开发者
    • 快速入门
      • 指南
        • 测试网提案
        • 转换地址
        • 计算
          • 最低价格刻度
          • 最低数量刻度
    • 交易所开发者
      • 构建 DEX
      • 预言机提供方
    • Cosmwasm 开发者
      • 您的首个智能合约
      • 指南
        • 本地开发
        • 主网开发
        • 给部署地址白名单
        • 创建您的 Swap 合约
        • 创建 UIs
      • CW20 适配器
      • Injective Test Tube
    • 模块
      • Injective
        • 拍卖(Auction)
          • State
          • 消息
          • EndBlock
          • 事件
          • 参数
        • 交易所(Exchange)
          • 衍生品市场概念
          • 现货市场概念
          • 二元期权市场概念
          • 其他概念
          • 状态
          • 状态转换
          • 消息
          • 提案
          • BeginBlock
          • EndBlock
          • 事件
          • 参数
          • MsgPrivilegedExecuteContract
        • 保险(Insurance)
          • 状态
          • 状态转换
          • 消息
          • EndBlock
          • 事件
          • 参数
          • 改进
        • OCR
          • 概念
          • 状态
          • 消息
          • 提案
          • BeginBlock
          • 钩子(Hooks)
          • 事件
          • 参数
        • 预言机(Oracle)
          • 状态
          • Keeper
          • 消息
          • 提案
          • 事件
          • 改进
        • Peggy
          • 定义
          • 工作流
          • 状态
          • 消息
          • 处罚
          • EndBlock
          • 事件
          • 参数
          • 中继语义
          • 改进
        • 权限(Permissions)
          • 概念
          • 状态
          • 状态转换
        • 代币工厂(TokenFactory)
          • 概念
          • 状态
          • 消息
          • 事件
          • 参数
        • WasmX
          • 概念
          • 数据
          • 提案
          • 消息
          • 参数
      • 核心
        • Auth
        • AuthZ
        • 银行(Bank)
        • 共识(Consensus)
        • 危机(Crisis)
        • 分发(Distribution)
        • 证据(Evidence)
        • 费用授权(Feegrant)
        • 治理(Gov)
        • 群组(Group)
        • 铸造(Mint)
        • NFT
        • 参数(Params)
        • 惩罚(Slashing)
        • 质押(Staking)
        • 升级(Upgrade)
        • Circuit
        • Genutils
    • dApps 开发文档
  • 节点
    • 快速入门
      • 和节点交互
      • 运行节点
        • 设置密钥环
        • 加入网络
        • Cosmovisor
        • 升级您的节点
    • 验证者
      • 主网
        • Peggo
        • 规范链升级
          • Upgrade to 10002-rc1
          • Upgrade to 10002-rc2
          • Upgrade to 10003-rc1
          • Upgrade to 10004-rc1
          • Upgrade to 10004-rc1-patch
          • Upgrade to 10005-rc1
          • Upgrade to 10006-rc1
          • Upgrade to 10007-rc1
          • Upgrade to 10008 - Camelot
          • Upgrade to 10009
          • Upgrade to v1.10
          • Upgrade to v1.11
          • Upgrade to v1.12.0 - Volan
          • Upgrade to v1.12.1
          • Upgrade to v1.13.0 - Altaris
          • Upgrade to v1.13.2
          • Upgrade to v1.13.3
          • Upgrade to v1.14.0
          • Upgrade to v1.14.1
      • 测试网
        • 测试网 Peggo
    • 公共端点
    • 高级端点
    • Injective 索引器设置
  • 交易员
    • 快速入门
    • 文档
    • API 参考
  • 常用链接
    • Injective 101
    • Injective Hub
    • Injective 浏览器
    • Chain API Reference
    • Indexer API Reference
    • 测试网水龙头
Powered by GitBook
On this page
  • 快速开始
  • Messages
  • 代码库
Export as PDF
  1. 开发者
  2. Cosmwasm 开发者
  3. 指南

创建您的 Swap 合约

Previous给部署地址白名单Next创建 UIs

Last updated 2 months ago

允许在两个不同的代币之间进行即时交换。在后台,它使用原子订单在一个或多个现货市场中下达市场订单。

快速开始

任何人都可以实例化交换合约的实例。此合约的一个版本已经上传到 Injective 主网,并可以在找到。 在实例化合约之前,作为合约拥有者,你需要回答以下三个问题:

  1. 哪个地址应为手续费接收者? 由于交换合约下的订单是 Injective 交易模块中的订单,这意味着每个订单可以有一个手续费接收者,该接收者可以获得 40% 的交易手续费。通常,交易所 dApp 会将手续费接收者设置为自己的地址。

  2. 该合约应支持哪些代币? 合约中可用的每个代币必须定义一个交易路线。路线是指代币 A 要通过哪些市场才能换取代币 B。例如,如果你想支持 ATOM 和 INJ 之间的交换,则需要通过提供 ATOM/USDT 和 INJ/USDT 的市场 ID 来设置路线,这样它就知道 ATOM 和 INJ 之间的交换路线是 ATOM ⇔ USDT ⇔ INJ。 目前,合约只能支持以 USDT 报价的市场。

  3. 应该为该合约提供多少缓冲资金? 作为合约拥有者,你还需要为合约提供资金,当发生交换时,这些资金将被使用。缓冲资金由合约在下单时使用。如果用户想要交换大额资产或在流动性不足的市场中进行交换,则需要更多的缓冲资金。当合约的缓冲资金无法满足用户输入金额时,会发生错误。

目前,缓冲资金应仅为 USDT。

Messages

Instantiate

初始化合约状态,包含合约版本和配置详情。配置包括管理员地址和手续费接收者地址。

pub fn instantiate(
    deps: DepsMut<InjectiveQueryWrapper>,
    env: Env,
    info: MessageInfo,
    msg: InstantiateMsg,
) -> Result<Response<InjectiveMsgWrapper>, ContractError>

Execute

处理不同类型的交易和管理员功能:

  • SwapMinOutput: 以最小输出数量进行交换。

  • SwapExactOutput: 以精确输出数量进行交换。

  • SetRoute: 设置交换路线。

  • DeleteRoute: 删除交换路线。

  • UpdateConfig: 更新合约配置。

  • WithdrawSupportFunds: 从合约中提取支持资金。

pub fn execute(
    deps: DepsMut<InjectiveQueryWrapper>,
    env: Env,
    info: MessageInfo,
    msg: ExecuteMsg,
) -> Result<Response<InjectiveMsgWrapper>, ContractError>

Reply

处理来自其他合约或交易的回复。

pub fn reply(
    deps: DepsMut<InjectiveQueryWrapper>,
    env: Env,
    msg: Reply,
) -> Result<Response<InjectiveMsgWrapper>, ContractError>

Query

处理对合约的各种查询:

  • GetRoute: 获取特定的交换路径。

  • GetOutputQuantity: 获取给定输入数量的输出数量。

  • GetInputQuantity: 获取给定输出数量的输入数量。

  • GetAllRoutes: 获取所有可用的交换路径。

pub fn query(deps: Deps<InjectiveQueryWrapper>, env: Env, msg: QueryMsg) -> StdResult<Binary>

代码库

swap contract 的完整 GitHub 仓库可以在找到。

swap contract
此处
这里