ICP Rust CDK学習メモ
  • ICP Rust CDK学習メモ
  • ⚙️開発環境準備
  • 開発
    • テンプレート生成 (dfx new)
    • Frontend開発
      • 1. シンプルなHTML
      • 2. Canister呼び出し
    • Backend開発
      • 1. Hello
      • 2. データ更新/参照
      • 3. ic_cdk::caller()
      • 4. ic_cdk::call()
      • 5. 動的画像生成
      • 6. staticファイル参照
      • 7. HTTPS outcalls
      • 8. Threshold ECDSA
    • Bootcamp
      • Calculator ➕✖️➖➗
      • Homework diary 📔
      • Student wall 🎨
      • MotoCoin 🪙
      • The Verifier 👨‍🏫
      • The Dapp 🚀
  • サンプル
    • 📔Diary
  • 技術情報
    • 🪪Principal
    • 🪪Internet Identity
    • 🪙Token
    • 🖼️NFT
    • 🗝️VetKey
  • ツール
    • dfx
      • dfx identity
    • quill
  • 参考情報
    • 🔗リンク集
GitBook提供
このページ内
  • Specificaiton
  • トークン発行
  • (1) ダウロードスクリプト
  • (2) ダウンロードスクリプトの実行
  • (3) dfx.json
  • (4) deploy_token.sh修正
  • (5) deploy
  • (6) deploy
  • その他情報
  • The Internet Computer Token Standards: A Comparison

役に立ちましたか?

GitHubで編集
  1. 技術情報

Token

前へInternet Identity次へNFT

最終更新 1 年前

役に立ちましたか?

ICP上でTokenの取り扱う規格として、EthereumにおけるERC-20のように『ICRC-1』があります。

Specificaiton

Proposal
Description
did

ICRC-1

ICRC-2

トークン発行

ICP上でトークンを発行する方法について公式ドキュメントがあります。

試しにローカルPC上でつくってみることにします。

(1) ダウロードスクリプト

$ curl -o download_latest_icrc1_ledger.sh "https://raw.githubusercontent.com/dfinity/ic/master/rs/rosetta-api/scripts/download_latest_icrc1_ledger.sh"

※2023年9月19日時点で、Githubにコミットされているファイル名が「_ledger.sh」ではなく、「_leger.sh」となっているので注意

(2) ダウンロードスクリプトの実行

$ bash download_latest_icrc1_ledger.sh
Found artifacts for commit 21fa6190f619ae1179e3511092cd5644f61ceb3e. Downloading icrc1_ledger.did and icrc1_ledger.wasm.gz

※jqコマンドがインストールされている必要があります。

(3) dfx.json

{
  "canisters": {
    "icrc1-ledger": {
      "type": "custom",
      "wasm": "icrc1-ledger.wasm",
      "candid": "icrc1-ledger.did"
    }
  }
}

(4) deploy_token.sh修正

解説ページに載っているスクリプトをベースに、配備用スクリプトを用意します。

#!/bin/bash

# Change the variable to "ic" to deploy the ledger on the mainnet.
export NETWORK=local

# Change the variable to the principal that can mint and burn tokens.
export MINTER_PRINCIPAL=$(dfx identity get-principal)

# Change the variable to the principal that controls archive canisters.
export ARCHIVE_CONTROLLER=$(dfx identity get-principal)

export TOKEN_NAME="TM Token"
export TOKEN_SYMBOL=XTM

dfx deploy --network ${NETWORK} icrc1-ledger --argument "(variant { Init = 
      record {
        token_name = \"${TOKEN_NAME}\";
        token_symbol = \"${TOKEN_SYMBOL}\";
        minting_account = record { owner = principal \"${MINTER_PRINCIPAL}\";};
        initial_balances = vec {};
        metadata = vec {};
        transfer_fee = 10;
        archive_options = record {
          trigger_threshold = 2000;
          num_blocks_to_archive = 1000;
          controller_id = principal \"${ARCHIVE_CONTROLLER}\";
        }
}})"

(5) deploy

$ dfx start --background --clean
$ bash deploy_token.sh

(6) deploy

$ dfx start --background --clean

その他情報

The Internet Computer Token Standards: A Comparison

Fungible Tokenの規格として、ICRC-1以外にも、IS20、DIP20、EXTといった規格があるようです。

https://www.blog.bitfinity.network/the-internet-computer-token-standards-a-comparison/

🪙
https://internetcomputer.org/docs/current/developer-docs/integrations/icrc-1/deploy-new-token
deploy_token.sh
Token Standard
ICRC-1.did
Approve and Transfer From
ICRC-2.did