안녕하세요
민팅 테스트를 하려는 중에 Error: Returned error: unknown account 에러가 생겨서 문의 드립니다.
const config = {
rpcURL: 'https://api.baobab.klaytn.net:8651',
};
const caver = new Caver(config.rpcURL);
const myContract = new caver.klay.Contract(ABI as AbiItem[], CONTRACTADDRESS);
const accounts = await window.klaytn.enable();
const account = accounts[0];
const amount = 1;
const total_value = new BigNumber(1 * (await check_status()).mintPrice); // 민팅 수량 선택 (amount)
try {
const gasAmount = await myContract.methods.publicMint(amount).estimateGas({
from: account,
gas: 6000000,
value: total_value,
});
const tx_result = await myContract.methods.publicMint(amount).send({
from: account,
gas: gasAmount,
value: total_value,
});
위 사진과 같은 부분에서 에러가 계속 발생합니다.
지갑 연결 후 , try 문에서 console에서 account가 잘 찍히다가
tx_result 에서 돌지 못하고 바로 catch문으로 가네요
혹시 무엇이 문제여서 unknown account 에러가 나오는지 궁금합니다.
[버전]
version = Klaytn/v1.9.0/linux-amd64/go1.18
node = v16.16.0
ABI는 아래와 같습니다
{
constant: false,
inputs: [
{
internalType: 'uint256',
name: 'requestedCount',
type: 'uint256',
},
],
name: 'publicMint',
outputs: [],
payable: true,
stateMutability: 'payable',
type: 'function',
},
컨트랙트는 아래와 같습니다.
function publicMint(uint256 requestedCount) external payable {
require(publicMintEnabled, "The public sale is not enabled!");
require(_lastCallBlockNumber[msg.sender].add(_antibotInterval) < block.number, "Bot is not allowed"); //안티 봇 방지, 마지막 블록에서 몇 초동안 같은 함수를 실행할 수 없는지 (newAntibotinterval)
require(block.number >= _mintStartBlockNumber, "Not yet started"); // 민팅 시작 시간 의미 (newMintStartBlockNumber)
require(requestedCount > 0 && requestedCount <= _mintLimitPerBlock, "Too many requests or zero request"); // 트랜잭션당 최대 몇 개를 민팅 할 건지(newMintLimitPerBlock)
require(msg.value == _mintPrice.mul(requestedCount), "Not enough Klay"); // 전체 민팅 수량 (newMaxSaleAmount)
require(_mintIndexForSale.add(requestedCount) <= _maxSaleAmount + 1, "Exceed max amount"); // 몇 번 index 부터 민팅을 시작 할 것인지 (newMintindexForSale) mintingInformation 눌러서 확인 후 실행 0,1,0,0,0,0,0
require(balanceOf(msg.sender) + requestedCount <= _mintLimitPerSale, "Exceed max amount per person"); // 한 사람이 가질 수 있는 최대의 NFT 갯수(newMintLimitPerSale)
for(uint256 i = 0; i < requestedCount; i++) {
_mint(msg.sender, _mintIndexForSale);
_mintIndexForSale = _mintIndexForSale.add(1);
}
_lastCallBlockNumber[msg.sender] = block.number;
}