このガイドでは、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 を返します。
- [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% fee
});
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 を返します。
- 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);
}
}
// createFactory の例で `factoryAddress` が利用可能であると仮定します
// const factoryAddress = '...';
// mintNewTokens(factoryAddress);トークンのバーン
バーンはミントの反対で、トークンを流通から永久に削除します。トークンファクトリーがボンディングカーブを使用している場合、トークンをバーンすると、比例した量のリザーブ通貨がユーザーに返されます。
burnToken メソッドがこのプロセスを開始します。
パラメータ
- wallet
WalletObject(required) — バーンするトークンを保持し、トランザクションに署名するウォレット。 - tokenFactory
string(required) — トークンファクトリーのアドレス。 - amount
number(required) — バーンするトークンの量。 - receiver
string(required) — 見返りとしてリザーブトークンを受け取るアドレス。 - minReserve
number(required) — ウォレットが受け取ることを期待するリザーブトークンの最小量。これは価格のスリッページから保護します。 - data
object— バーントランザクションに添付するオプションのカスタムデータ。
戻り値
トランザクションハッシュに解決される 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);
}
}
// createFactory の例で `factoryAddress` が利用可能であると仮定します
// const factoryAddress = '...';
// burnExistingTokens(factoryAddress);まとめ
このガイドでは、ファンジブルトークンを管理するための完全なライフサイクル、つまりファクトリーの作成、新しいトークンのミント、そして供給量を減らすためのバーンについて学びました。これらの強力なプリミティブにより、OCAP プラットフォーム上で洗練された経済システムを構築できます。
トークンの作成方法を学んだので、次の論理的なステップはそれらを移動させる方法を学ぶことです。トークンとNFTの転送ガイドに進み、その方法を確認してください。