일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 러스트기초
- multicall
- ambiguous function description
- 티스토리챌린지
- nest.js설명
- ethers websocket
- 러스트 기초 학습
- Vue
- 스마트컨트렉트 예약어 함수이름 중복
- rust 기초
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 배포 자동화
- 스마트컨트렉트프록시
- 프록시배포구조
- SBT표준
- ethers typescript
- 머신러닝기초
- Vue.js
- vue기초
- 스마트컨트렉트테스트
- 체인의정석
- git rebase
- ethers type
- chainlink 설명
- 컨트렉트 동일한 함수이름 호출
- ethers v6
- 러스트 기초
- 오블완
- ethers
Archives
- Today
- Total
체인의정석
ERC721 Receiver에 대한 설명 본문
728x90
반응형
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 _data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
internal returns (bool)
{
if (!to.isContract()) {
return true;
}
bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data);
return (retval == _ERC721_RECEIVED);
}
다음과 같이 erc721 receiver에서 체크를 하여서 구현이 된 컨트렉트에만 보낼 수 있게 설정하였다.
EOA는 상관이 없지만 만약 컨트렉트라면 이를 사용해야 한다.
특히 지갑이나, 거래와 같이 erc721을 직접적으로 만드는 부분에서는 이를 써야하는데
현재 재작중인 dapp에서는 erc721을 상속받아서 쓰는 새로운 erc721에 접근하여 쓰고 있으므로 직접 구현할 필요는 없었다.
728x90
반응형
'블록체인 > NFT & BRIDGE' 카테고리의 다른 글
ERC721의 safeTransferFrom (0) | 2022.02.14 |
---|---|
Solidity 에서 token URI 와 toString 라이브러리 (0) | 2022.02.09 |
ERC721) token URI에 대한 코드 분석 (0) | 2022.02.08 |
Waffle 사용기 - ERC721 테스트 코드 작성하기 (0) | 2022.01.28 |
hardhat 사용법 정리 02- ERC721 배포해보기 (0) | 2022.01.18 |
Comments