How NFT smart contract really work
Ethereum NFT 기준
# OpenSea
예제 Doodle #1815

OpenSea 주소에서
chain,contract address,token확인할 수 있다.https://opensea.io/assets/{chain}/{contract address}/{token id}

- Details 에서도 동일하게 NFT에 대해 알 수 있다.
- Contract Address 링크 : NFT Collection contract Etherscan 페이지로 연결
- Token ID 링크 : NFT Token의 metadata
# Etherscan
# “Contract” tab
Code
- Contract Source Code : solidity. contract code 내용
- Contract ABI
- Contract Creation Code
- ByteCode
- Opcodes
Read Contract : 해당 스마트 컨트렉트에 대해 READ 할수 있는 function들
- 예를 들어,
onwnerOffunction에tokenId를 넣으면 해당tokenId의 NFT를 가진 owner query 가능
tokenURI: NFT metadata link
- IPFS 주소
https://ipfs.io/ipfs/{뒤쪽 주소}- 앞부분은 바뀌지 않고 맨 뒤 token ID만 변경된다.
- https://ipfs.io/ipfs/QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/13
- 이렇게 다른 곳에 저장되어있기 때문에 owner가 원하면 metada를 바꿀 수 있다.
- owner를 만약 resign(이 역시도 function) 한다면 owner가 없게 되고 해당 NFT는 영원히 바꿀 수 없게 된다.
balanceOf: owner 주소가 해당 contract NFT 를 몇개 가졌는지
totalSupply: 이 contract의 최대 발행갯수
- 예를 들어,
Write code
- 지갑과 연결하여 code를 실행시킬 수 있다.
setBaseURI: Metadata URL 세팅하기
(내가 owner가 아니기 때문에 denied 됨)
(코드 보면 onlyOwnercontract owner 만 가능하게 되어있음 ) 나중에 metadata가 호오오옥시나 바뀌게 되면 이setBaseURI로 변경할 수 있음.withdraw:onlyOwner해당 contract의 balance를 해당 function call 한 사람에게 transfer 한다. (누구든 부를 수 있긴 하지만onlyOwner에서 막히니 owner만이 balance를 가져갈 수 있다.)
# NFT Staking
- 예시 Wizards & Dragons Game (WnD)
- Contract Etherscan
Contracttab >Read Contract>tower다른 contract 주소가 있음
staking contract
transferFrom: ERC-20 standard function -tokenOwner로 부터 이address에게 NFT를 보내겠다.- unstaking
“claim”, “unstaking” function을 보면 대부분 여기에 reward에 대한 코드가 있다.