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関数の実装が含まれます:
PermissionsHook.sol
スマートコントラクトの例
PermissionsHookを拡張するスマートコントラクトを作成します:
isTransferRestricted関数のカスタム実装を追加します。
例えば、この関数は特定のアドレスに関連する転送を除き、すべての転送を許可します:
PermissionsHookExamples.sol
Hookの登録
permissions用のhookを登録するには、以下が必要です:- MTSトークンをデプロイしたのと同じアカウントの制御権。
- MTSトークンのデプロイ済みアドレス
- Permissions Hookのデプロイ済みアドレス
injectivedを実行し登録します。
MTSトークンとPermissions Hookは同じアドレスを持つことができます。
これはアーキテクチャ上の選択によります。
Hookの登録例
以下の内容でregister-hooks.jsonという名前のファイルを作成します:
denomとevm_hookフィールドの値を適切な値に置き換えてください。
ファイルが有効なJSONになるよう、すべてのコメントも削除してください。
リファレンス実装
permissioned MTSトークンの使用を示す、より完全なステーブルコインの例も利用可能です。 この例には、トークンが一時停止されている場合に転送を防止し、 アドレスのブラックリストも管理するpermissions hookが含まれています。PermissionsHook_Inj.solを参照してください。