Kip17 mint 함수 수정

안녕하세요

  1. kas 연동을 통해서, mintWithTokenURI 대신에 제가 임의로 재구성한 mint 함수를 실행시키려 하는데
    제대로 동작하지 않는 것 같습니다…

    const contractAddress = 생략,
    const ABI = 중략,
    const option = {
    headers: [
    {
    name: “Authorization”,
    value:
    "Basic " +
    Buffer.from(accessKeyId + “:” + secretAccessKey).toString(“base64”),
    },
    { name: “x-chain-id”, value: chainId },
    ],
    };

    const caver_mod = new Caver(
    new Caver.providers.HttpProvider(
    https://node-api.klaytnapi.com/v1/klaytn”,
    option
    )
    );
    const NFTContract = new caver_mod.contract(ABI, contractAddress);
    const mint_data = await NFTContract.methods.mintTest(to_address,tokenId,uri,data);

코드는 대략 이런 식으로 구성되어있고,
실행시키면

이런 식의 결과가 나옵니다.

mintTokenWithURI 같은 함수 실행시, transactionHash 값 등 여러 값이 나오는 걸 확인했는데
이와 다르게 실행결과가 나오는 이유를 잘 모르겠고 결과로 NFT transfer 도 이루어지지 않습니다.

실제 함수는 아래와 같이 쓰여져 있습니다.

function mintTest(address to, uint256 tokenId, string memory tokenURI, string memory data) public onlyOwner returns (bool) { 
    Data[tokenId] = Const(data);
    _mint(to, tokenId);
    _setTokenURI(tokenId, tokenURI);
    return true;
}

내부에 구조체를 형성하여 저장하는 코드가 추가되어있고, _mint 부터 아래 세 줄은 mintTokenWithURI 와 동일합니다.

실행 시, 실제로 mint 가 되지 않으며, transaction 에도 뜨지 않습니다.

다만, Klaytn IDE 에서 함수 실행시 문제없이 NFT transfer 에 기록됩니다.

그래서 제 생각엔 저 위에 써 있는 함수 실행 부분에서 문제가 있는 것 같습니다.

위의 코드의 함수, 키, ABI 등 생략된 내용만 제외하곤 동일하게 구성되어있습니다.

대체 어떤 문제가 있고 어떻게해야 실행이 될까요?

혹시 컨트랙트 함수에 대한 오너 확인이 안 되어서 발생하는 문제면, 어떤 코드를 추가해야 해결이 가능할까요?

  1. KAS 서비스에서 제공하는
    mintReceipt = await kip17.mintWithTokenURI(to_address, tokenId, uri, { from:keyring.address })
    이 코드는 문제없이 실행되는데,
    이 코드를 활용하여
    mintReceipt = await kip17.mintTest(to_address, tokenId, uri,data )
    이게 가능한지도 궁금합니다.
    (실행시켰을 때는 안되는 것으로 보아, kip17에 정의된 함수만 실행되는 것 같습니다만, 여쭤봅니다. )
1 Like