dev/Solidity

opensea 및 NFT market 매매 흐름(setApprovalForAll, safeTransferFrom)

_April 2022. 7. 22. 17:27

1. 매도자가 매도 신청을함.

오픈씨는 이때 setApprovalForAll 에 대한 허가를 매도자에게 받음

https://etherscan.io/tx/0x89b6b30c30f05a56daeb1d499ce8e57ffec1522cc9cfdf138453154066a316c5

 

Ethereum Transaction Hash (Txhash) Details | Etherscan

Ethereum (ETH) detailed transaction info for txhash 0x89b6b30c30f05a56daeb1d499ce8e57ffec1522cc9cfdf138453154066a316c5. The transaction status, block confirmation, gas fee, Ether (ETH), and token transfer are shown.

etherscan.io


2. 시간이 지나 매수자가 매수 신청을함.

이때 opensea의 Seaport contract와 상호작용을 하게된다. opensea에 이더리움을 보내고, 수수료를 떼고, 대금을 매도자에게 보내는것을 볼 수 있다.

 

대금지불이 완료되면 오픈씨는 Transfer() 함수를 통해 매도자의 NFT 를 매수자에게 보낸다.

리스팅을 올렸다고 NFT를 오픈씨가 가져가거나 사용을 제한하지 않는다

setApprovalForAll 하나만 활성화할뿐..

 

오픈씨에 등록이 되어있는건 그냥 웹2.0적인 리스팅이기 때문에 

매도자는 그 NFT를 팔겠다고 해놓고 실제로는 burn 할수도있고 transfer 도 할수있다.

물론 이런 invalid 한 NFT 는 매수시 당연히 실패할것이고,

오픈씨가 서버상황이 원활하다면 금방 매도 리스팅에서 제거되기 때문에

실제로 큰문제는 생기지 않는다.

 

https://etherscan.io/tx/0x7110f12c3a13f039affb946b14c29c4b0b3a44c8689278f6885c5f30f2b0791b

 

Ethereum Transaction Hash (Txhash) Details | Etherscan

Ethereum (ETH) detailed transaction info for txhash 0x7110f12c3a13f039affb946b14c29c4b0b3a44c8689278f6885c5f30f2b0791b. The transaction status, block confirmation, gas fee, Ether (ETH), and token transfer are shown.

etherscan.io

 

트랜젝션을 일으킨것은 매수자이므로 매수자의 지갑에 nonce 가 생성된다.(Nonce: 2455)

 

 

 

 

정리해보니 단순한데 이해하기 힘들었음..