Permissioned Assets와 통합하기
Permissioned Asset Standard는 현재 Testnet에서 사용할 수 있다. 아직 Mainnet에는 live 상태가 아니다.
Permissioned Assets Standard (PAS)와 통합하려면 다음을 수행해야 한다.
-
public struct MyApproval() has drop;을 사용해 approval witness를 정의한다. -
policy::new_for_currency로 policy를 만들고 action별 required approval을 설정한다. -
&mut Request<...>를 받고 validation을 수행한 뒤request.approve(MyApproval())을 호출하는 function으로 approval logic을 빌드한다. -
client가 programmable transaction block (PTB)을 자동으로 빌드할 수 있도록 template command를 설정한다.
TypeScript package를 통해 PAS를 사용할 수 있으며, GitHub repo에서 더 자세히 알아볼 수 있다.
approval witness 정의
approval witness는 type-level stamp 역할을 하는 drop이 있는 zero-sized struct이다. 각 witness는 contract가 부여할 수 있는 별도의 approval을 나타낸다.
/// Witness for approved transfers between accounts.
public struct MyTransferApproval() has drop;
/// Witness for approved clawbacks (issuer withdrawal).
public struct MyClawbackApproval() has drop;
action마다 하나의 witness type을 정의해 해당 action의 approval로 사용할 수 있다. 각 witness는 policy에 독립적으로 등록되며, 선택적으로 자체 template command를 가질 수 있다.