在本文中,我们将解释如何在Injective上启动一个代币。
在Injective上启动代币有两种选择:桥接现有代币或创建新代币。
桥接
在Injective上启动代币的最简单方法是通过桥接来自Injective支持的互操作网络中的现有资产。你可以参考桥接 中的指南,了解如何将资产从其他网络桥接到Injective。
一旦桥接过程完成,代币将在Injective上创建,你就可以使用它来发布市场 。
创建一个新的代币
你也可以使用TokenFactory
模块在Injective上创建一个新代币。有多种方式可以实现这一目标。
使用 Injective Hub
web 应用程序让你能够轻松创建和管理代币,在Injective的 上创建市场等。
使用 TokenStation
web 应用程序让你能够轻松创建和管理代币,在 Injective 的 上创建市场,启动空投等功能。
使用 DojoSwap
类似于上述,你可以使用 来创建、管理和列出你的代币,以及其他一些有用的功能。
通过编程
使用 TypeScript
使用 Injective CLI
一旦您安装了 injectived
并添加了密钥,您可以使用 CLI 启动您的代币:
创建工厂 denom 的费用为 0.1 INJ
。
Copy injectived tx tokenfactory create-denom ak --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}
。
要使您的代币在 Injective dApp 上可见,您必须提交其元数据。
Copy 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
这条指令参数如下:
Copy injectived tx tokenfactory set-denom-metadata [description] [base] [display] [name] [symbol] [uri] [uri-hash] [denom-unit (json)] [decimals]
一旦您创建了代币并提交了代币元数据,就可以开始铸造您的代币了。
Copy 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个小数位。
代币的管理者,也可以销毁代币。
Copy 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
一旦铸造了初始供应量,建议将管理员更改为null
地址,以确保代币的供应量无法被篡改。再次强调,代币的管理员可以随时铸造和销毁供应量。NEW_ADDRESS
,如上所述,在大多数情况下应设置为 inj1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqe2hm49
。
Copy 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
使用 Cosmwasm
create_new_denom_msg
Copy 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。
参数:
subdenom
:新代币的sub-denomination标识符。
返回:一个包装在 InjectiveMsgWrapper
中的 CosmosMsg
,准备发送到 Injective 区块链。
示例:
Copy let new_denom_message = create_new_denom_msg(
env.contract.address, // Sender's address
"mytoken".to_string(), // Sub-denomination identifier
);
Copy 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标识符。
返回:一个包装在 InjectiveMsgWrapper
中的 CosmosMsg
,准备发送到 Injective 区块链。
示例:
Copy 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
Copy 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 代币,且发送者必须是代币管理员。
参数:
返回:一个包装在 InjectiveMsgWrapper
中的 CosmosMsg
,准备发送到 Injective 区块链。
示例:
Copy 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
Copy pub fn create_burn_tokens_msg(sender: Addr, amount: Coin) -> CosmosMsg<InjectiveMsgWrapper> {
InjectiveMsgWrapper {
route: InjectiveRoute::Tokenfactory,
msg_data: InjectiveMsg::Burn { sender, amount },
}
.into()
}
目的:创建一个消息,用于销毁代币。该代币必须是 TokenFactory 代币,且发送者必须是代币管理员。
参数:
返回:一个包装在 InjectiveMsgWrapper
中的 CosmosMsg
,准备发送到 Injective 区块链。
示例:
Copy let burn_message = create_burn_tokens_msg(
env.contract.address, // Sender's address
Coin::new(500, "factory/<creator-address>/mytoken"), // Amount to burn
);