일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- CBDC
- 더길티
- 신상진 교수
- 영등포CGV
- 이대목동병원 신경과
- 이대서울병원 정형외과
- UDC2020
- 성장영화
- 알리타 후기
- 영등포 롯데시네마
- 홍대cgv
- 이대목동병원 정형외과
- 이대목동병원 신경외과
- 더길티후기
- 이대서울병원 영상의학과
- 더길티영화
- 항거무대인사
- 영화평
- 어쩌다 결혼
- 블록체인
- 이정환교수
- OmniOne
- 어쩌다결혼
- 유관순이야기
- 알리타 배틀엔젤
- 이대목동병원 재활의학과
- 교통사고
- 영화
- 이대서울병원 신경과
- 이대서울병원
Archives
- Today
- Total
영화와 음식과 여행
[블록체인] ERC-721 본문
ERC-721 문서는 NFT(Non Fungible Token) 토큰에 대한 표준을 제공한다.
코드 명세
A. 해당 주소가 보유하고 있는 NFT 토큰의 개수 : ERC-20에서는 토큰의 총량 이었음
function balanceOf(address owner) public view returns (uint256 balance);
B. 해당 NFT 토큰을 소유하고 있는 주소를 보여준다.
function ownerOf(uint256 tokenId) public view returns (address owner);
C. 해당 주소에 NFT 토큰 전송 권한을 부여한다.
function approve(address to, uint256 tokenId) public;
C-1. 해당 토큰의 전송 권한을 갖고 있는 주소를 보여준다.
function getApproved(uint256 tokenId) public view returns (address operator);
D. 해당 주소의 모든 NFT 토큰에 대한 전송 권한을 부여/해제 한다.
function setApprovalForAll(address operator, bool _approved) public;
D-1. D에 대한 권한이 있는지 참 거짓을 보여준다.
function isApprovedForAll(address owner, address operator) public view returns (bool);
E. NFT 토큰 소유자로부터 해당 NFT토큰을 다른 주소로 전송한다.
function transferFrom(address from, address to, uint256 tokenId) public {
// require 안의 내용이 거짓이면 throw 됨.
require(_isApprovedOrOwner(msg.sender, tokenId)); // sender가 owner 거나 operator(approval을 받았는지)인지 확인
require(to != address(0));
_clearApproval(from, tokenId); // 토큰이 이전되므로 from의 토큰에 대한 권한을 없앤다.
_removeTokenFrom(from, tokenId); // from에게서 token을 없앤다.
_addTokenTo(to, tokenId); // to에 token을 더한다.
emit Transfer(from, to, tokenId);
};
F. 전송받는 주소가 ERC 721 토큰을 받을 수 있는지 체크하고 보낸다.
전송받는 주소가 실제 지갑주소가 아니라 스마트컨트랙트 주소일 수도 있는데 그걸 확인하고 보내는 것임. 그래서 E에는 to 주소가 스마트컨트랙트면 토큰이 소실될 수 있다고 명시되어 있음.
function safetransferFrom(address from, address to, uint256 tokenId) public;
{ // byte 부분에 그냥 "" 넣고 보내면 됨 }
function safetransferFrom(address from, address to, uint256 tokenId, bytes data) public;
G. ERC-721 토큰을 받으려는 스마트컨트랙트 주소가 구현해야하는 인터페이스.
해당 스마트컨트랙트 주소가 ERC-721 토큰을 받을 수 있는지 ERC-165(keccak256을 사용해 해당 코드가 ERC-20, ERC-721 표준을 따르는지 검사하기 위한 표준)를 통해서 체크함.
interface ERC721TokenReceiver {
function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external returns(bytes)
}
참고자료
- https://medium.com/coinmonks/jumping-into-solidity-the-erc721-standard-part-1-e25b67fc91f3
- https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
'개발' 카테고리의 다른 글
[블록체인] DeFi (0) | 2021.01.06 |
---|---|
[블록체인] Ethereum 2 (0) | 2021.01.06 |
[블록체인] UDC 2020 (0) | 2021.01.04 |
[블록체인] 옴니원 (0) | 2021.01.04 |
Comments