ERC721을 상속 받아 간단하게 contract를 만들어서 deploy 했습니다.
contract : 0xf2dc36a46e46cf3beca14575f5056a957b896ac3
wallet : 0xb373c647d3a4a29309e5ae367eb2d36661cf60c9
mint 할때 not a program account (e.g., an account having code and storage) 오류가 발생합니다.
어디서 잘못된걸까요?
solidity코드에서 문제인건지 정보를 알고 싶습니다.
error
java.io.IOException: not a program account (e.g., an account having code and storage)
at com.klaytn.caver.contract.ContractMethod.sendTransaction(ContractMethod.java:1067) ~[core-1.10.2.jar:?]
at com.klaytn.caver.contract.ContractMethod.send(ContractMethod.java:290) ~[core-1.10.2.jar:?]
at com.klaytn.caver.contract.ContractMethod.send(ContractMethod.java:242) ~[core-1.10.2.jar:?]
at com.klaytn.caver.kct.kip17.KIP17.mint(KIP17.java:1419) ~[core-1.10.2.jar:?]
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts@4.9.2/token/ERC721/ERC721.sol";
/// @custom:security-contact work.work@gmail.com
contract MyTokenSingleMinting is ERC721 {
// base uri
string private baseUri;
constructor(string memory _tokenName, string memory _symbolName, string memory _baseUri) ERC721(_tokenName, _symbolName) {
baseUri = _baseUri;
}
function _baseURI() internal view override returns (string memory) {
return baseUri;
}
}
caver-java example
Caver caver = new Caver("https://public-en-baobab.klaytn.net"); // https://api.baobab.klaytn.net:8651
SingleKeyring deployerKeyring = caver.wallet.keyring.createWithSingleKey(WalletAddress(), WalletPrivateKey());
caver.wallet.add(deployerKeyring);
// Create a KIP17 instance
KIP17 kip17 = new KIP17(caver, contractAddress());
kip17.setWallet(caver.wallet);
SendOptions sendOptions = new SendOptions(productContract.getWalletAddress());
sendOptions.setGas("25000");
// Mint a NFT token
TransactionReceipt.TransactionReceiptData mintReceiptData = kip17.mint(WalletAddress(), new BigInteger("1"), sendOptions);