メインコンテンツへスキップ

トークンの管理

このガイドでは、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 — ミントできる最大総供給量。
  • curve object — トークンの価格をプログラムで制御するボンディングカーブの設定。省略した場合、ミント/バーンはリザーブトークンに結び付けられません。
    • basePrice number — リザーブ通貨でのトークンの基本価格。
    • fixedPrice number — 動的なカーブを使用しない場合のトークンの固定価格。
    • slope number — ボンディングカーブの傾き。その急勾配を決定します。
  • feeRate number (default: 0) — ミントおよびバーン操作の手数料率(ベーシスポイント単位)。
  • data object — トークンファクトリーに添付するオプションのカスタムデータ。

戻り値

トランザクションハッシュと新しく作成されたトークンファクトリーのアドレスを含む配列に解決される Promise を返します。

  • [0] string — ファクトリー作成のトランザクションハッシュ。
  • [1] string — 新しいトークンファクトリーのアドレス。

トークンファクトリーの作成

javascript
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 — ミント操作のトランザクションハッシュ。

ファクトリーからトークンをミントする

javascript
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 — バーン操作のトランザクションハッシュ。

トークンをバーンする

javascript
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の転送ガイドに進み、その方法を確認してください。