일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스마트컨트렉트프록시
- ambiguous function description
- Vue.js
- nest.js설명
- Vue
- 오블완
- 스마트컨트렉트 예약어 함수이름 중복
- 프록시배포구조
- 러스트 기초
- 컨트렉트 배포 자동화
- chainlink 설명
- 티스토리챌린지
- git rebase
- 스마트컨트렉트 함수이름 중복 호출
- multicall
- ethers type
- 러스트기초
- ethers v6
- 컨트렉트 동일한 함수이름 호출
- vue기초
- ethers
- ethers websocket
- 스마트 컨트렉트 함수이름 중복
- 체인의정석
- 러스트 기초 학습
- ethers typescript
- 머신러닝기초
- 스마트컨트렉트테스트
- rust 기초
- SBT표준
- Today
- Total
목록블록체인/NFT & BRIDGE (23)
체인의정석
테스트 코드를 한창 쓰고 있는데 Error: VM Exception while processing transaction: reverted with reason string 'ERC721: owner query for nonexistent token' 위와 같은 에러가 났다. 문제는 해당 에러는 여기저기에 다 분포되어 있기 때문에 컨트렉트와 테스트 스트립트 곳곳에 로그를 찍으면서 모두 확인해보았다. import "hardhat/console.sol"; . . . . function ownerOf(uint256 tokenId) public view returns (address) { address owner = _tokenOwner[tokenId]; console.log("owner OF >>>>", tok..
safeTransferFrom 같은 경우 ERC721 onRECEIVE를 상속 받았는지 여부를 체크해 준다. 스마트컨트렉트가 받는 주소라면 이렇게 transferFrom을 사용하여야지 안에 토큰들이 갇히는 걸 방지할 수 있다. 기본적으로 오픈제플린에서 상속을 받으면 safeTransferFrom 이 적용된다. 하지만 직접적으로 토큰을 다루는 컨트렉트 들은 function onERC721Received( address, address, uint256, bytes memory ) public returns (bytes4) { return this.onERC721Received.selector; } "IERC721Receiver" 인터페이스를 상속 받은 후 위와 같이 오버라이딩 해주어야 한다. 위는 0.5.0..
nft에 있는 token URI는 앞부분은 다음과 같이 오픈제플린 표준에 있는 인터페이스방식대로 가져오면 된다. // override external view function tokenURI(uint256 tokenId) external view returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = getBaseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } function getBaseURI()..
ERC721 Receiver /** * @dev Internal function to invoke `onERC721Received` on a target address. * The call is not executed if the target address is not a contract. * * This function is deprecated. * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _d..
ERC721에서 token URI는 토큰아이디와 base URI의 조합으로 만들어 진다. IERC721Metadata.sol function tokenURI(uint256 tokenId) external view returns (string memory); ERC721.sol /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _base..
먼저 아래 링크의 문서를 통하여 테스트 코드를 작성하기로 해보았다. https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html Getting Started — waffle documentation After you have successfully authored a Smart Contract you can now think about testing it. Fortunately for you, Waffle is packed with tools that help with that. Tests in waffle are written using Mocha alongside with Chai. You can use a different test e..
이어서 하드햇과 오픈제플린 라이브러리를 연결하는 부분부터 진행을 하도록 한다. https://docs.openzeppelin.com/upgrades-plugins/1.x/hardhat-upgrades Using with Hardhat - OpenZeppelin Docs You can also use the plugin’s functions from your Hardhat tests, in case you want to add tests for upgrading your contracts (which you should!). The API is the same as in scripts. Proxies const { expect } = require("chai"); describe("Box", functio..