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

Injectiveのpermissionsモジュール

permissionsモジュールはInjectiveにネイティブで、Denomのカスタム管理(例:ロール)を可能にします。 この機能はMultiVM Token Standard (MTS) トークンに拡張されており、 EVMスマートコントラクトコード内でカスタム管理ルールを実装できます。

なぜMTSトークンにpermissionsを使用するのか?

InjectiveでMTSを使用して現実世界の資産 (RWA) をトークン化しており、 その基盤となる資産が本質的にpermissionsを必要とする場合、 それはInjectiveのpermissionsモジュールを活用する有効なユースケースです。 MTSトークンのEVMスマートコントラクトは、permissionsモジュールの機能を活用するために 追加のSolidityインターフェースを実装するだけで済みます。

スマートコントラクトの実装

スマートコントラクトで、PermissionsHook.solからIPermissionsHookをインポートして拡張します。
これには、以下のシグネチャを持つisTransferRestricted関数の実装が含まれます:
完全なファイルはGithubで確認できます: PermissionsHook.sol

スマートコントラクトの例

PermissionsHookを拡張するスマートコントラクトを作成します:
isTransferRestricted関数のカスタム実装を追加します。 例えば、この関数は特定のアドレスに関連する転送を除き、すべての転送を許可します:
より詳細な例はGithubで確認できます: PermissionsHookExamples.sol

Hookの登録

permissions用のhookを登録するには、以下が必要です:
  • MTSトークンをデプロイしたのと同じアカウントの制御権。
  • MTSトークンのデプロイ済みアドレス
  • Permissions Hookのデプロイ済みアドレス
上記を使用して、 このようなJSONファイルを作成できます。 次に、MTSトークンをデプロイしたのと同じアカウントを使用してinjectivedを実行し登録します。
MTSトークンとPermissions Hookは同じアドレスを持つことができます。 これはアーキテクチャ上の選択によります。

Hookの登録例

以下の内容でregister-hooks.jsonという名前のファイルを作成します:
denomevm_hookフィールドの値を適切な値に置き換えてください。
ファイルが有効なJSONになるよう、すべてのコメントも削除してください。
次に、以下のコマンドを実行します:
これは、MTSトークンにpermissions hookを定義する1つの特定の方法に過ぎません。 複数のバリエーションがあります。 このステップの追加詳細(他のバリエーションを含む)については、 Permissioned Assetsのローンチ方法を参照してください。

リファレンス実装

permissioned MTSトークンの使用を示す、より完全なステーブルコインの例も利用可能です。 この例には、トークンが一時停止されている場合に転送を防止し、 アドレスのブラックリストも管理するpermissions hookが含まれています。
PermissionsHook_Inj.solを参照してください。
最終更新日 2026年4月3日