Kip7 토큰 정지권한 관련 질문

kip7 토큰을 발행한 뒤에 토큰 소유자가 KAS wallet api로 생성되는 계정 중 하나인 A계정에게 토큰을 정지할 수 있는 권한을 줬다면 A계정은 private key를 모르기 때문에 A계정을 통해서 토큰 정지를 할 수 있는 방법이 없는건가요?

안녕하세요, 클레이튼 포럼에 질문을 올려주셔서 감사드립니다.

A계정이 KAS Wallet API에서 생성한 계정이라면 private key는 KAS에서 관리하고 있습니다.

KAS Wallet API를 통해 A 계정의 서명을 생성할 수 있으니 토큰 정지를 하실 수 있습니다.

감사합니다.

1개의 좋아요

답변 감사합니다:)
그럼 트랜잭션은 어떻게 생성할 수 있나요? caver.kct.kip7.pause를 사용하려는데 서명하려면 트랜잭션을 먼저 생성해야 서명할 수 있는 거 아닌가요? 제가 못 찾는 건지 방법을 잘 모르겠습니다.

아래의 코드는 따로 트랜잭션을 생성하여 KAS Wallet API의 계정을 사용하여 서명하고 네트워크에 전송하는 코드입니다.
만약 트랜잭션만 따로 필요하신 경우에는 아래의 tx를 생성하는 방법을 참고하시면 될 것 같습니다.
아래의 코드는 caver-js-ext-kas v1.1.2 기준으로 작성되었습니다.

const kip7 = caver.kct.kip7.create(kip7Address)
const input = kip7.methods.pause().encodeABI()

const tx = caver.transaction.smartContractExecution.create({
    from: acct.address,
    to: kip7.options.address, // KIP-7 contract address
    input,
    gas: 10000000,
})

const signed = await caver.wallet.sign(acct.address, tx)
console.log(signed)

const ret = await caver.rpc.klay.sendRawTransaction(signed)
console.log(ret)

caver.kct.kip7의 pause함수를 사용하면 caver-js-ext-kas를 사용하는 경우, 함수 내부적으로 트랜잭션을 생성하고 이를 KAS Wallet API에서 관리되는 계정을 사용하여 서명한 뒤 네트워크에 전송합니다.
위의 코드는 실제로 아래의 코드와 동일한 동작을 하게 됩니다.
아래도 동일하게 caver-js-ext-kas v1.1.2 기준으로 작성되었습니다.

const kip7 = caver.kct.kip7.create(kip7Address)
const ret = await kip7.pause({ from })
console.log(ret)

caver-js-ext-kas를 사용하면 기본적으로 KAS Wallet API를 사용하여 동작합니다.

2개의 좋아요

자세히 설명해주셔서 감사합니다!

혹시 위에 예시중 const input = kip7.methods.pause().encodeABI()methods 를 이용하는 부분에 대한 설명은 문서 어디서 볼 수 있을까요?

또 한가지 더 궁금한게 있는데 위에 pause함수를 사용할때 KAS 글로벌 대납기능을 사용해서 수수료를 지불한다면 어떤식으로 수정하면 되나요?

KIP7 클래스는 Contract를 상속받아 구현되며, 그러므로 Contract의 기능을 사용할 수 있습니다.
https://docs.klaytn.com/bapp/sdk/caver-js/api-references/caver.contract#methods-methodname-encodeabi
Contract의 encodeABI 함수에 대한 문서는 여기 있습니다.

글로벌 대납 기능을 사용하시려면
스마트 컨트랙트 실행 - KAS Docs 위에서 구한 input을 사용하여 여기 나와있는 예제처럼 코드를 실행하거나

https://refs.klaytnapi.com/en/sdk/js/latest/ 이 문서의 KASWallet쪽에 보시면 signAsGlobalFeePayer 함수가 제공됩니다. 해당 함수를 사용하셔도 됩니다.

1개의 좋아요