新しいトークンのデプロイ
このチュートリアルでは、独自のトークンを IC にデプロイし、Rosetta を接続する方法を順を追って説明します。
台帳のデプロイ
台帳イメージ、プライベート台帳インターフェース、パブリック台帳インターフェースがあることを確認します。それらがない場合は、台帳のローカルセットアップ の手順に従います。
DFX の最新バージョンを使用していることを確認します。DFX がインストールされていない場合は、SDKのインストール の手順に従ってインストールを行います。
プロジェクト内の
dfx.json
ファイルに、以下の Canisters に定義を追加します:{
"canisters": {
"custom-ledger": {
"type": "custom",
"wasm": "ledger.wasm",
"candid": "ledger.private.did"
}
}
}IC に台帳 Canister をデプロイします:
# メインネットに台帳をデプロイする場合は変数を "ic "に変更します。
export NETWORK=local
# (環境)変数をトークンのミントとバーンが可能なアカウントに変更します。
export MINT_ACC=$(dfx ledger account-id)
# アーカイブ Canister を制御する Principal に(環境)変数を変更します。
export ARCHIVE_CONTROLLER=$(dfx identity get-principal)
export TOKEN_NAME="My Token"
export TOKEN_SYMBOL=XMTK
dfx deploy --network ${NETWORK} custom-ledger --argument '(record {
name = "'${TOKEN_NAME}'";
symbol = "'${TOKEN_SYMBOL}'";
minting_account = "'${MINT_ACC}'";
initial_values = vec {};
send_whitelist = vec {};
archive_options = opt record {
trigger_threshold = 2000;
num_blocks_to_archive = 1000;
controller_id = principal "'${ARCHIVE_CONTROLLER}'";
cycles_for_archive_creation = opt 10_000_000_000_000
}
})'それぞれの単語の説明です。
NETWORK
は、台帳を配置するレプリカの URL または名前です (例: メインネットには ic を使用します)。TOKEN_NAME
は新しいトークンで可読性を高くした名前です。TOKEN_SYMBOL
は新しいトークンのシンボルです。MINT_ACC
はトークンのミントとバーンを担当する Principal のアカウントです ( ICP 台帳を参照してください)。ARCHIVE_CONTROLLER
はアーカイブ Canister の controller Principal です。メインネットにデプロイする場合:
常に
archive_options
フィールドを設定してください。アーカイブを無効にすると、台帳の容量が Canister ひとつ分のメモリに制限されます。台帳 Canister に十分な Cycle があることを確認してください。Canister は必要に応じてアーカイブ Canister の新しいインスタンスを生成するために Cycle を必要とします。
create_canister
メッセージに付けられる正確な Cycle 数は、cycles_for_archive_creation
オプションで制御します。
dfx.json
ファイルの Canister の定義を更新して、public Candid インターフェイスを使用するようにします:{
"canisters": {
"ledger": {
"type": "custom",
"wasm": "ledger.wasm",
- "candid": "ledger.private.did"
+ "candid": "ledger.public.did"
}
}
}台帳 Canister が正常に動作していることを確認します。以下のコマンドを実行します:
dfx canister --network ${NETWORK} call ledger symbol
以下のような出力になるはずです:
(record { symbol = "XMTK" })
新しいトークンがデプロイされ、すぐに使用できるようになりました。
Rosetta にコネクトする
Rosetta は、台帳 Canister に接続し、Rosetta API を公開するアプリケーションです。その主な目的は、取引所との統合を容易にすることです。Rosetta の詳細については、次のセクションで説明します。
それでは、Rosetta を既存の台帳 Canister に接続してみましょう。
台帳トークン・シンボルの取得します:
dfx canister call <ledger_canister_id> symbol
以下のような出力になるはずです:
(record { symbol = <token_symbol> })
rosetta-api
を実行します:docker run \
--interactive \
--tty \
--publish 8081:8080 \
--rm \
dfinity/rosetta-api:v1.3.0 \
--canister-id <ledger_canister_id> \
--ic-url <replica> \
-t <token_symbol>出力には次の行が含まれるはずです:
16:31:45.472550 INFO [main] ic_rosetta_api::rosetta_server - Starting Rosetta API server
16:31:45.506905 INFO [main] ic_rosetta_api::ledger_client - You are all caught up to block <x>上記の
<x>
は、台帳ブロックチェーンの最後のブロックインデックスを表しています。
rosetta-api
はあなたの台帳インスタンスに接続され、使用する準備ができました。Rosetta トークンの転送操作については、Transfers tokens の記事をお読みください。