ブログ > 2025 > March > プログラム可能なトークンの新設計でCardanoの「凍結と押収」機能を実証

プログラム可能なトークンの新設計でCardanoの「凍結と押収」機能を実証

ネットワークのプログラム可能性と、比類のないスケーラビリティ、相互運用性、エネルギー効率に優れたアプリケーションが、Cardanoを引き続き推進

2025年 3月 12日 Jann Müller 10 分で読めます

プログラム可能なトークンの新設計でCardanoの「凍結と押収」機能を実証

到達範囲を唯一制限するのはイノベーターの創造性というCardanoは、査読付き研究とスケーラブルなアーキテクチャーという基盤により、規制コンプライアンス、データ保護の強化、プライバシー重視のアプリケーションのための主要ブロックチェーンとなっている。

「凍結と押収(freeze and seize)」は、特に金融や他の規制の厳しい業界において、規制やビジネス要件を満たすように設計されたアプリケーションを構築するための重要な機能である。悪意のあるアクターから資産を保護する権限を持つ当局のアクションを意味するこのメカニズムは、Cardanoにとってもブロックチェーンエコシステム全体にとっても新しいものではない。しかし、Cardanoが発行、送金、支払いを完全に制御するプログラム可能なトークンをサポートしていることを実証するために、Input | OutputとAnastasia LabsのPhilip DiSarroは、Wyoming Stable Token(WST)として知られる、凍結と押収機能を備えた規制型ステーブルコインの概念実証(POC)を構築した。

完全なソースコードはGithubで入手可能だ。凍結と押収機能に加えて、POCはCardanoウォレットとアプリケーションがプログラム可能なトークンを自動的に認識することを可能にする標準であるCIP-0143も実装している。

CIP-0143:トークンのプログラム可能性を強化

本CIPは、トークンポリシーのレジストリーと、CIP-0143準拠のトークンを格納するためのアドレスフォーマットを定義している。WSTのようなポリシーは、オンチェーンのデータ構造にスクリプトハッシュを入力することでレジストリーに追加することができる。WSTや他のトークンを含むトランザクションを検証する必要がある場合、ロジックは単純にすべてのチェックをトークン固有のスクリプトに転送する。

CIP-0143の主要機能

柔軟性

本CIPの設計は柔軟であり、ロイヤリティ支払いを伴うNFTの実装や、所有権を移転する前にオフチェーンのチェックを必要とするトークン化された実世界の資産の実装に使用できる。

ハードフォーク不要

CIP-0143は定義された規約を持つPlutusスクリプトのコレクションであるため、その実装にハードフォークまたはADAや既存のネイティブトークンポリシーの変更は不要となる。

統一アドレスシステム

CIP-0143で定義されている重要な規約の1つはアドレスフォーマットである。トークンごとに個別のアドレスを要求する代わりに、プログラム可能なトークンアドレスが通常のウォレットアドレスすべてに割り当てられ、CIP-0143ベースのトークンを受け取ることができる。つまり、異なるWSTアドレスを指定する必要はない。この標準に従うトークンはすべて1つのアドレスで管理できる。

このプログラム可能なトークンアドレスは、支払いクレデンシャルをステーククレデンシャルとして使用することにより、通常のウォレットアドレスから直接導出される。この合理化されたアプローチは、既存のウォレットへのCIP-0143の統合を簡素化し、シームレスな適用を可能にする。

WST:プログラム可能な準拠トークン

WSTはCIP-0143準拠トークンの一例である。その主な機能は送金ポリシーであり、WSTトークンを含むすべてのトランザクションをチェックして送信者のアドレスが凍結されていないことを確認する。この送金ポリシーでは、WSTの発行者(発行主体)がWSTトークンを保持している任意のアドレスからWSTトークンを押収することもできる。

これをサポートするために、オンチェーンの凍結アドレスリンクリストは、凍結アカウントごとに1つの未使用トランザクション出力(UTXO)を使用して維持される。リストは支払いクレデンシャルごとに辞書式順序で並べられ、各UTXOにはリストにおける現在のエントリーと次のエントリーの両方が含まれる。送信者が凍結していない状態であることを証明するためにかかる時間は、凍結リストのサイズに関係なく常に同じである。

CIP-0143でポリシーの登録とチェックを行うインフラが整ってしまえば、WSTの構築は簡単だった。凍結アカウントリストを確認するというビジネスロジックに集中でき、ポリシーが確実に適切なタイミングで呼び出されるようにするための簿記機能や管理機能に煩わされることはなかった。CIPがすべて処理したし、このCIPに構築されたトークンはロジックを再利用できる。

ベストプラクティスと設計パターン

WSTプロトタイプは、Cardanoで凍結と押収が可能であることを証明するだけでなく、Plutusの設計パターンとベストプラクティスの有用な例も提供している。

これには以下が含まれる。

  • トランザクションレベルの検証にステークバリデーターを使用する

    • UTXO消費バリデーターは、ステークバリデーターがトランザクションの一部として実行されていることを確認することにより、ステークバリデータースクリプトに従う
    • 例:ProgrammableLogicBase、L.166
  • リディーマーを使用して、トランザクションのインプットまたはアウトプットリスト内の特定のエントリーをポイントする

    • インデックスをリディーマーの一部として提供することで、オンチェーンコードでコストのかかる検索を回避する
    • 例:ExampleTransferLogic、L.145
  • 凍結アカウントリストをリンクリストとしてUTXOセットに保存する

    • これにより、メンバーシップと非メンバーシップを(リストのサイズに応じて)一定の時間で検証できる
    • 例: LinkedList
  • 実際の台帳コードと現実的な台帳プロトコルパラメーターを使用したユニットテスト

    • 実際の台帳コードベースに対してメインネットの現行プロトコルパラメーターを使ってスクリプトをテストすることで、システムが想定どおりに動作し、最小UTXO値、トランザクションサイズ、ブロックサイズなどに関連する問題が発生しないことを確認する
    • 例:UnitTestモジュール
  • パラメーター専用UTXO

    • 参照インプットとして使用する専用のUTXOに、プロトコル固有のパラメーターをインラインデータムとして格納する。これにより、CIP-0143の他のユーザーがパラメーターを発見できるようになり、パラメーター変更のたびにスクリプトハッシュを変更する必要がなくなる
    • 例:ProtocolParamsモジュール
  • 想定するアウトプットのData表現の比較

    • Plutusスクリプトでは、必要なアウトプットが存在することを確認するとき、想定するデータをData値として構築し、アウトプット内の実際のインラインデータムと等価性を比較する。これにより、余計なデータがインラインデータムに含まれることがなくなり、プロトコルの安全性を危険にさらすこと(大きなデータム攻撃や、同様にエンコーディングの脆弱性を悪用した攻撃など)がなくなる
    • 例:PTokenDirectoryのpIsInsertedNode

ユーザーインターフェイス(UI)とライブデモ

エンドユーザーがプログラム可能なトークンを簡単に送受信できることを示す、スマートなWebアプリケーションも追加した。UIはnext.jsに基づいており、トランザクションの署名と送信にlucidを使用する。

ライブデモ

最近ワイオミング大学でWSTのデモを行った。その際、工学部の学生であるAijun Hall氏がCardanoメインネットで凍結と押収アクションを実行した。

以下は、ワイオミング州ララミーでのライブデモ中に生成されたトランザクションIDの一部だ。

2つのウォレット間でWSTトークンを送信 https://cexplorer.io/tx/d92651eaa48e9f825b5fb40d109dff9e74b7754f366dc86b8c9159738e14327f

アカウントを凍結 https://cexplorer.io/tx/6b67f518e681964ac90574749745039cb20a8b190b1afb1c6e6c2fe620db3e11

凍結アカウントからWSTを押収 https://cexplorer.io/tx/27a94541838d87e53b04ae510d5e5ab1ee344e83e2ba7cbc6b3fe2cc88e6c986

まとめ

CIP-0143の汎用性によって、ウォレットや他のアプリケーションとの統合が簡易化され、さまざまなトークンタイプのサポートが可能になる。プログラム可能なトークン標準は、Alonzoハードフォーク初期からもっとも期待されていた機能の1つであり、このようなパワフル且つエレガントなデザインについに収束するのを目にして感無量だ。

詳細は、POC GitHubリポジトリを参照のこと。議論、バグレポートの提出、プルリクエストはもちろん、何よりもぜひビルドを開始して欲しい。

執筆協力:Amir Meyssami