Injective 的 Permissions 模块
permissions 模块
是 Injective 的原生模块,允许对 Denom 进行自定义管理(例如角色)。
此功能扩展到 MultiVM Token Standard (MTS) 代币,
你可以在 EVM 智能合约代码中实现这些自定义管理规则。
为什么在 MTS 代币上使用 Permissions?
如果你正在使用 MTS 在 Injective 上对现实世界资产 (RWA) 进行代币化, 而该底层资产本身需要权限控制, 这是使用 Injectivepermissions 模块的绝佳用例。
你的 MTS 代币的 EVM 智能合约只需实现
一个额外的 Solidity 接口即可利用 permissions 模块的功能。
智能合约实现
在你的智能合约中,从PermissionsHook.sol 导入 IPermissionsHook 并扩展它。
isTransferRestricted 函数,
签名如下:
PermissionsHook.sol
智能合约示例
创建一个扩展PermissionsHook 的智能合约:
isTransferRestricted 函数的自定义实现。
例如,此函数将允许所有转账,
除了涉及特定地址的转账:
PermissionsHookExamples.sol
注册 Hook
要为 permissions 注册 hook, 你需要以下内容:- 控制部署 MTS 代币的同一账户。
- MTS 代币的部署地址
- Permissions Hook 的部署地址
injectived 进行注册,
使用部署 MTS 代币的同一账户。
注意 MTS 代币和 Permissions Hook 可以具有相同的地址。
这是一个由你决定的架构决策。
注册 Hook 示例
创建一个名为register-hooks.json 的文件,内容如下:
denom 和 evm_hook 字段的值替换为适当的值。
同时删除所有注释,使文件成为有效的 JSON。
参考实现
还提供了一个更完整的示例,演示了权限化 MTS 代币 在稳定币中的使用。 此示例涉及一个 permissions hook,当代币暂停时阻止转账, 并维护一个地址黑名单。PermissionsHook_Inj.sol。