发布代币

在本文中,我们将解释如何在Injective上启动一个代币。 在Injective上启动代币有两种选择:桥接现有代币或创建新代币。

桥接

在Injective上启动代币的最简单方法是通过桥接来自Injective支持的互操作网络中的现有资产。你可以参考桥接中的指南,了解如何将资产从其他网络桥接到Injective。 一旦桥接过程完成,代币将在Injective上创建,你就可以使用它来发布市场

创建一个新的代币

你也可以使用TokenFactory模块在Injective上创建一个新代币。有多种方式可以实现这一目标。

使用 Injective Hub

Injective Hub web 应用程序让你能够轻松创建和管理代币,在Injective的原生订单簿上创建市场等。

使用 TokenStation

TokenStation web 应用程序让你能够轻松创建和管理代币,在 Injective 的原生订单簿上创建市场,启动空投等功能。

使用 DojoSwap

类似于上述,你可以使用 DojoSwap 的市场创建模块来创建、管理和列出你的代币,以及其他一些有用的功能。

通过编程

使用 TypeScript

你可以学些更多关于发布代币的内容在 TypeScript 文档

使用 Injective CLI

在继续本教程之前,您必须先在本地安装 Injectived。您可以在节点部分的快速入门页面上了解更多信息。

一旦您安装了 injectived 并添加了密钥,您可以使用 CLI 启动您的代币:

  1. 创建一个 TokenFactory denom

创建工厂 denom 的费用为 0.1 INJ

injectived tx tokenfactory create-denom [subdenom] [name] [symbol] [decimals] --from=YOUR_KEY --chain-id=injective-888 --node=https://testnet.tm.injective.network:443 --gas-prices=500000000inj --gas 1000000

代币按创建者地址命名空间进行管理,以实现无需许可并避免名称冲突。在上述示例中,subdenom 是 ak,但 denom 的命名方式将是 factory/{creator address}/{subdenom}

  1. 提交代币元数据

要使您的代币在 Injective dApp 上可见,您必须提交其元数据。

injectived tx tokenfactory set-denom-metadata "My Token Description" 'factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ak' AKK AKCoin AK '' '' '[
{"denom":"factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ak","exponent":0,"aliases":[]},
{"denom":"AKK","exponent":6,"aliases":[]}
]' 6 --from=YOUR_KEY --chain-id=injective-888 --node=https://testnet.sentry.tm.injective.network:443 --gas-prices=500000000inj --gas 1000000

这条指令参数如下:

injectived tx tokenfactory set-denom-metadata [description] [base] [display] [name] [symbol] [uri] [uri-hash] [denom-unit (json)] [decimals]
  1. 铸造代币

一旦您创建了代币并提交了代币元数据,就可以开始铸造您的代币了。

injectived tx tokenfactory mint 1000000factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ak --from=gov --chain-id=injective-888 --node=https://testnet.sentry.tm.injective.network:443 --gas-prices=500000000inj --gas 1000000

此命令将铸造1个代币,假设您的代币有6个小数位。

  1. 销毁代币

代币的管理者,也可以销毁代币。

injectived tx tokenfactory burn 1000000factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ak --from=gov --chain-id=injective-888 --node=https://testnet.sentry.tm.injective.network:443 --gas-prices=500000000inj --gas 1000000
  1. 更换管理者

一旦铸造了初始供应量,建议将管理员更改为null地址,以确保代币的供应量无法被篡改。再次强调,代币的管理员可以随时铸造和销毁供应量。NEW_ADDRESS,如上所述,在大多数情况下应设置为 inj1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqe2hm49

injectived tx tokenfactory change-admin factory/inj17vytdwqczqz72j65saukplrktd4gyfme5agf6c/ak NEW_ADDRESS --from=gov --chain-id=injective-888 --node=https://testnet.sentry.tm.injective.network:443 --gas-prices=500000000inj --gas 1000000

以上示例适用于测试网。如果您想在主网上运行,请进行以下更改:

injective-888 > injective-1

https://testnet.sentry.tm.injective.network:443 > http://sentry.tm.injective.network:443

使用 Cosmwasm

要通过智能合约以编程方式创建和管理银行代币,可以使用以下在 injective-cosmwasm包中找到的消息:

create_new_denom_msg

pub fn create_new_denom_msg(sender: String, subdenom: String) -> CosmosMsg<InjectiveMsgWrapper> {
    InjectiveMsgWrapper {
        route: InjectiveRoute::Tokenfactory,
        msg_data: InjectiveMsg::CreateDenom { sender, subdenom },
    }
    .into()
}

目的:创建一个消息,用于通过 tokenfactory 模块创建一个新的denomination。

参数:

  • sender:发起创建的账户地址。

  • subdenom:新代币的sub-denomination标识符。

返回:一个包装在 InjectiveMsgWrapper 中的 CosmosMsg,准备发送到 Injective 区块链。

示例:

let new_denom_message = create_new_denom_msg(
    env.contract.address,  // Sender's address
    "mytoken".to_string(), // Sub-denomination identifier
);

create_set_token_metadata_msg

pub fn create_set_token_metadata_msg(denom: String, name: String, symbol: String, decimals: u8) -> CosmosMsg<InjectiveMsgWrapper> {
    InjectiveMsgWrapper {
        route: InjectiveRoute::Tokenfactory,
        msg_data: InjectiveMsg::SetTokenMetadata {
            denom,
            name,
            symbol,
            decimals,
        },
    }
    .into()
}

目的:创建一个消息,用于设置或更新代币的元数据。

参数:

  • denom:代币的denomination标识符。

  • name:代币的完整名称。

  • symbol:代币的符号。

  • decimals:代币使用的十进制位数。

  • 返回:一个包装在 InjectiveMsgWrapper 中的 CosmosMsg,准备发送到 Injective 区块链。

示例:

let metadata_message = create_set_token_metadata_msg(
    "mytoken".to_string(),         // Denomination identifier
    "My Custom Token".to_string(), // Full name
    "MYT".to_string(),             // Symbol
    18,                            // Number of decimals
);

create_mint_tokens_msg

pub fn create_mint_tokens_msg(sender: Addr, amount: Coin, mint_to: String) -> CosmosMsg<InjectiveMsgWrapper> {
    InjectiveMsgWrapper {
        route: InjectiveRoute::Tokenfactory,
        msg_data: InjectiveMsg::Mint { sender, amount, mint_to },
    }
    .into()
}

目的:创建一个消息,用于铸造新代币。该代币必须是 TokenFactory 代币,且发送者必须是代币管理员。

参数:

  • sender:发起铸币操作的账户地址。

  • amount:要铸造的代币数量。

  • mint_to:接收新铸造代币的地址。

返回:一个包装在 InjectiveMsgWrapper 中的 CosmosMsg,准备发送到 Injective 区块链。

示例:

let mint_message = create_mint_tokens_msg(
    env.contract.address,                                   // Sender's address
    Coin::new(1000, "factory/<creator-address>/mytoken"),   // Amount to mint
    "inj1...".to_string(),                                  // Recipient's address
);

create_burn_tokens_msg

pub fn create_burn_tokens_msg(sender: Addr, amount: Coin) -> CosmosMsg<InjectiveMsgWrapper> {
    InjectiveMsgWrapper {
        route: InjectiveRoute::Tokenfactory,
        msg_data: InjectiveMsg::Burn { sender, amount },
    }
    .into()
}

目的:创建一个消息,用于销毁代币。该代币必须是 TokenFactory 代币,且发送者必须是代币管理员。

参数:

  • sender:发起销毁操作的账户地址。

  • amount:要销毁的代币数量。

返回:一个包装在 InjectiveMsgWrapper 中的 CosmosMsg,准备发送到 Injective 区块链。

示例:

let burn_message = create_burn_tokens_msg(
    env.contract.address,                                    // Sender's address
    Coin::new(500, "factory/<creator-address>/mytoken"),     // Amount to burn
);

Last updated