Caver를 통한 KIP-17 배포, global fee payer

안녕하세요

위 링크를 보면 개인키를 통한 계정생성으로 KIP-17 컨트랙을 배포 할 수 있는데

  const keyring = caver.wallet.keyring.createFromPrivateKey(
    req.body.sellerPrivateKey
  );
  const kip17 = await caver.kct.kip17.deploy(
    {
      name: req.body.name,
      symbol: req.body.symbol,
    },
    keyring.address
  );

이러면 컨트랙의 owner는 개인키를 사용한 계정이 되는것이고 그 후에 실질적으로 민팅을 하게 될 때

const kip17 = new caver.kct.kip17(kip17.options.address);
await kip17.mintWithTokenURI(....)

실행 후 청구되는 수수료는 KAS에서 알아서 계산하는건가요?
혹시 KAS콘솔 credentials에서 설정한 accessKeyId, secretAccessKey를 통해서 청구가 되는것인지 궁금합니다.

트랜잭션의 서명을 진행하는 지갑으로 결제가됩니다.

예를들어 해당 코드를 그대로 느시면 KAS 에 등록된 지갑에 잔고가있는경우 진행되고, 아니면 revert 가 발생합니다.

해당 KAS 계정에 global fee payer 설정을 하셨고, 트랜잭션을 global fee payer 로 수행하시면, 비용은 해당 설정된 계정으로 청구되고, KAS 에서 비용청구하는 구조가 가능하고요. 이부분은 아래링크에서 KIP17FeePayerOptions 항목 참고해주시고

https://refs.klaytnapi.com/en/sdk/js/latest/

Fee Delegation Example - Klaytn Docs
위의 예제도 참고해주시면 될것 같습니다.

진행이 어려우시면 KAS 카테고리쪽으로 문의주시면 될것같습니다.

사용자가 비용을 지불하는 경우에는 caver 객채를 생성할때, provider를 Kaikas 에서 제공하는 provider를 사용하시면 됩니다. 이경우 mint 관련함수가 onlyMinter 나 onlyOwner 등의 modifier가 지정되어있지 않아야합니다.

도움이 되셨길 바라며, 덧붙혀 포럼 이용시 카테고리에 맞춰서 질문해주시면 더 빠른답변 얻으실것으로 예상합니다.

1 Like