Injective의 Permissions 모듈
permissions 모듈은
Injective에 네이티브이며 Denom에 대한 사용자 정의 관리(예: 역할)를 허용합니다.
이 기능은 MultiVM Token Standard(MTS) 토큰으로 확장되어
EVM 스마트 컨트랙트 코드 내에서 해당 사용자 정의 관리 규칙을 구현할 수 있습니다.
MTS 토큰에서 권한을 사용하는 이유
Injective에서 MTS를 사용하여 실물 자산(RWA)을 토큰화하고 해당 기초 자산이 본질적으로 권한을 필요로 하는 경우 Injective의permissions 모듈을 활용하는 좋은 사용 사례입니다.
MTS 토큰의 EVM 스마트 컨트랙트는 permissions 모듈의 기능을 활용하기 위해
추가 Solidity 인터페이스를 구현하기만 하면 됩니다.
스마트 컨트랙트 구현
스마트 컨트랙트에서PermissionsHook.sol에서 IPermissionsHook을 가져오고 확장합니다.
isTransferRestricted 함수를 구현하는 것을 포함합니다:
PermissionsHook.sol
스마트 컨트랙트 예제
PermissionsHook을 확장하는 스마트 컨트랙트를 만듭니다:
isTransferRestricted 함수의 사용자 정의 구현을 추가합니다.
예를 들어, 이 함수는 특정 주소와 관련된 전송을 제외한 모든 전송을 허용합니다:
PermissionsHookExamples.sol
Hook 등록
권한에 대한 hook을 등록하려면 다음이 필요합니다:- MTS 토큰을 배포한 동일한 계정의 제어권
- MTS 토큰의 배포된 주소
- Permissions Hook의 배포된 주소
injectived를 실행합니다.
MTS 토큰과 Permissions Hook은 동일한 주소를 가질 수 있습니다.
이는 사용자에게 달린 아키텍처 결정입니다.
Hook 등록 예제
다음 내용으로register-hooks.json이라는 파일을 만듭니다:
denom 및 evm_hook 필드의 값을 적절한 값으로 바꾸세요.
파일이 유효한 JSON이 되도록 모든 주석도 삭제하세요.
참조 구현
권한 있는 MTS 토큰의 사용을 보여주는 더 완전한 예제도 사용할 수 있습니다. 스테이블코인용입니다. 이 예제는 토큰이 일시 중지되었을 때 전송을 방지하고 주소 블랙리스트를 유지하는 permissions hook을 포함합니다.PermissionsHook_Inj.sol을 참조하세요.