vm error: out of gas
223
작성한 질문수 3
안녕하세요. 강의 잘 듣고 있습니다:)
제가 코드를 다 쓰고 purchaseAnimalToken을 테스트 하는데
vm error: out of gas 가 뜹니다. gasLimit는 3000000로 설정되어있는데 왜 그런 걸까요?
열심히 구글링을 했는데도 답을 찾지 못해 질문 남깁니다.
pop() 때문에 에러가 나는 것 같은데 강의를 보고 똑같이 따라 했는데 왜 저만 에러가 날까요...?ㅠㅠㅠ
답변 1
0
구매 함수 실행 하실때 리믹스 상에서 Value에 정확한 구매 가격을 입력한 후 실행 하신게 맞으신가요??
해당 에러만 봐서는 판단하기가 힘드네요.
전체코드를 공유 받을 수 있을까요?
0
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "MintAnimalToken.sol";
contract SaleAnimalToken {
MintAnimalToken public mintAnimalTokenAddress;
constructor (address _mintAnimalTokenAddress) {
mintAnimalTokenAddress = MintAnimalToken(_mintAnimalTokenAddress);
}
mapping(uint256 => uint256) public animalTokenPrices;
uint256[] public onSaleAnimalTokenArray;
function setForSaleAnimalToken(uint256 _animalTokenId, uint256 _price) public {
address animalTokenOwner = mintAnimalTokenAddress.ownerOf(_animalTokenId);
require(animalTokenOwner == msg.sender, "Caller is not animal token owner.");
require(_price > 0, "Price is zero or lower.");
require(animalTokenPrices[_animalTokenId] == 0, "This animal token is already on sale.");
require(mintAnimalTokenAddress.isApprovedForAll(animalTokenOwner, address(this)), "Animal token owner did not approve token.");
animalTokenPrices[_animalTokenId] = _price;
onSaleAnimalTokenArray.push(_animalTokenId);
}
function purchaseAnimalToken(uint256 _animalTokenId) public payable {
uint256 price = animalTokenPrices[_animalTokenId];
address animalTokenOwner = mintAnimalTokenAddress.ownerOf(_animalTokenId);
require(price > 0, "Animal token not sale");
require(price <= msg.value, "Caller sent lower than price");
require(animalTokenOwner != msg.sender, "Caller is animal token owner");
payable(animalTokenOwner).transfer(msg.value);
mintAnimalTokenAddress.safeTransferFrom(animalTokenOwner, msg.sender, _animalTokenId);
animalTokenPrices[_animalTokenId] = 0;
// if(onSaleAnimalTokenArray[i] == _animalTokenId)
// if(animalTokenPrices[onSaleAnimalTokenArray[i]] == 0)
for(uint256 i=0; i < onSaleAnimalTokenArray.length; i++){
if(animalTokenPrices[onSaleAnimalTokenArray[i]] == 0){
onSaleAnimalTokenArray[i] = onSaleAnimalTokenArray[onSaleAnimalTokenArray.length - 1];
onSaleAnimalTokenArray.pop();
}
}
}
function getOnSaleAnimalTokenArrayLength() view public returns(uint256) {
return onSaleAnimalTokenArray.length;
}
}
전체 코드 보내드립니다. 왜 에러가 뜨는 걸까요?
댓글 달아주셔서 감사합니다:)
0
주신 코드로 실행했었는데 이상없이 잘 실행됩니다..
네트워크 상황에따라서 실행이 안되는 경우가 있어서
다시한번 배포해서 테스트해보시고
그래도 실행이 안되면 아래 주소 들어가셔서
메타마스크의 뭄바이 테스트넷 RPC URL 변경 후 테스트 해보시길 바랍니다.
https://docs.polygon.technology/docs/develop/network-details/network/
잘되면 공유한번 부탁드리겠습니다 감사합니다 ^^
localhost 전환이 안됩니다.
0
176
1
리팩토링 1 강의 getAnimalTokens() 함수 사용 권한 문의
0
270
1
npm run start에러
0
363
1
TypeError Web3Config 에러가 납니다 함수를 불러올 수 없음
0
484
1
chakraui zeg.js 오류
0
450
1
npm i @openzeppelin/contracts 실행 시 권한 에러
0
590
1
프론트앤드 셋팅 오류
0
560
1
블록체인 내의 데이터를 서버에 계속 update 시킬 수 있을까요?
0
328
1
Error: not found MintAnimalToken.sol
1
361
1
코드는 어디서 볼 수 있나요??
2
439
1
remix 설치 자체가 안 되네요
1
502
1
민팅시 사진 직접 등록
1
351
1
좋은 강의 감사합니다.!
0
211
0
Chakra Ui 에러 config-overrides.js 작성후
1
1019
3
chakra ui 에러
1
958
1
보유 NFT가 보이지 않습니다. metamask 에러
0
303
1
구매 함수 질문입니다 :>
1
378
1
web3 설정 강의 수강중 메타마스크 연동후 deploy 후 컨트랙트 생성/ 빌드가 안됩니다.
1
432
1
fromWei 질문
1
401
1
frontend>src>ontracts>index.ts
1
379
3
메타마스크 mumbai testnet연결에 계속 실패합니다
1
406
1
이미지가 뜨지 않습니다.
1
240
1
polygon faucet에서 폴리곤을 받을 수 없습니다
1
267
1
window.ethereum
2
1119
1





