本指南提供使用 OCAP Client 管理同质化通证的分步说明。您将学习如何设置通证工厂(它作为您通证的蓝图),然后用它来铸造(创建新通证)和销毁(销毁现有通证)。这些操作是在您的应用程序中创建和管理自定义经济体系的基础。
铸造通证后,您可以在账户之间转移它们。有关该过程的更多详细信息,请参阅转移通证和 NFT 指南。
创建通证工厂
通证工厂是一个智能合约,它定义了同质化通证的属性和规则,例如其名称、符号和供应机制。它还管理铸造和销毁的过程。创建工厂是任何新通证进入流通前的第一步。
createTokenFactory 方法将一个新的通证工厂部署到区块链上。
参数
- wallet
WalletObject(required) — 工厂所有者的钱包对象,用于签署交易。 - token
object(required) — 一个定义待创建通证属性的对象。- name
string(required) — 通证的全名(例如,'My Awesome Token')。 - symbol
string(required) — 通证的股票代码符号(例如,'MAT')。 - decimal
number(required) — 通证支持的小数位数。 - description
string— 通证的简要描述。 - icon
string— 通证图标的 URL。 - maxTotalSupply
number— 可铸造的最大总供应量。
- name
- curve
object— 联合曲线的配置,它以编程方式控制通证的价格。如果省略,铸造/销毁将不与储备通证挂钩。- basePrice
number— 通证以储备货币计价的基础价格。 - fixedPrice
number— 通证的固定价格,如果不使用动态曲线。 - slope
number— 联合曲线的斜率,决定其陡峭程度。
- basePrice
- feeRate
number(default:0) — 铸造和销毁操作的费率(以基点为单位)。 - data
object— 附加到通证工厂的可选自定义数据。
返回值
返回一个 promise,该 promise 会解析为一个数组,其中包含交易哈希和新创建的通证工厂地址。
- [0]
string— 工厂创建的交易哈希。 - [1]
string— 新通证工厂的地址。
示例
创建通证工厂
import Client from '@ocap/client';
import Wallet from '@ocap/wallet';
const endpoint = 'https://beta.abtnetwork.io/api';
const client = new Client(endpoint);
const wallet = Wallet.fromRandom();
// 首先,确保钱包中有资金。您可以从水龙头获取测试通证:
// https://faucet.abtnetwork.io/
async function createFactory() {
try {
const [hash, factoryAddress] = await client.createTokenFactory({
wallet,
token: {
name: 'My Game Coin',
symbol: 'MGC',
decimal: 18,
description: 'The official currency for My Awesome Game.',
maxTotalSupply: 1000000,
},
feeRate: 100, // 1% 手续费
});
console.log('Token factory created successfully!');
console.log('Transaction Hash:', hash);
console.log('Factory Address:', factoryAddress);
return factoryAddress;
} catch (error) {
console.error('Error creating token factory:', error);
}
}
createFactory();铸造通证
铸造是创建新通证并将其添加到总供应量的过程。这是通过通证工厂完成的。如果工厂配置了联合曲线,铸造将需要使用储备通证进行支付。
mintToken 方法会启动一个交易,从工厂铸造指定数量的通证。
参数
- wallet
WalletObject(required) — 为铸造操作提供资金并签署交易的钱包。 - tokenFactory
string(required) — 要从中铸造通证的通证工厂地址。 - amount
number(required) — 要铸造的通证数量。 - receiver
string(required) — 将接收新铸造通证的地址。 - maxReserve
number(required) — 钱包愿意花费的储备通证的最大数量。这可作为一种滑点保护机制。 - data
object— 附加到铸造交易的可选自定义数据。
返回值
返回一个 promise,该 promise 会解析为交易哈希。
- hash
string— 铸造操作的交易哈希。
示例
从工厂铸造通证
async function mintNewTokens(factoryAddress) {
try {
const hash = await client.mintToken({
wallet,
tokenFactory: factoryAddress,
amount: 5000,
receiver: wallet.address, // 将通证铸造到我们自己的钱包
maxReserve: 10, // 支付的最大储备通证。根据联合曲线价格进行调整。
});
console.log('Tokens minted successfully!');
console.log('Transaction Hash:', hash);
} catch (error) {
console.error('Error minting tokens:', error);
}
}
// 假设 `factoryAddress` 可从 createFactory 示例中获取
// const factoryAddress = '...';
// mintNewTokens(factoryAddress);销毁通证
销毁与铸造相反;它会永久地将通证从流通中移除。如果通证工厂使用联合曲线,销毁通证将按比例向用户返还储备货币。
burnToken 方法启动此过程。
参数
- wallet
WalletObject(required) — 持有待销毁通证并将签署交易的钱包。 - tokenFactory
string(required) — 通证工厂的地址。 - amount
number(required) — 要销毁的通证数量。 - receiver
string(required) — 将接收返还的储备通证的地址。 - minReserve
number(required) — 钱包期望收到的储备通证的最低数量。这可以防止价格滑点。 - data
object— 附加到销毁交易的可选自定义数据。
返回值
返回一个 promise,该 promise 会解析为交易哈希。
- hash
string— 销毁操作的交易哈希。
示例
销毁通证
async function burnExistingTokens(factoryAddress) {
try {
const hash = await client.burnToken({
wallet,
tokenFactory: factoryAddress,
amount: 1000,
receiver: wallet.address, // 将储备通证接收回我们自己的钱包
minReserve: 1, // 接收的最小储备通证。根据联合曲线价格进行调整。
});
console.log('Tokens burned successfully!');
console.log('Transaction Hash:', hash);
} catch (error) {
console.error('Error burning tokens:', error);
}
}
// 假设 `factoryAddress` 可从 createFactory 示例中获取
// const factoryAddress = '...';
// burnExistingTokens(factoryAddress);总结
在本指南中,您学习了管理同质化通证的完整生命周期:创建工厂、铸造新通证以及销毁它们以减少供应。这些强大的原语使您能够在 OCAP 平台上构建复杂的经济系统。
既然您知道了如何创建通证,下一个合乎逻辑的步骤就是学习如何转移它们。请前往转移通证和 NFT 指南,了解具体操作方法。