###### tags: `BCALI` # 2021/10/28 ### What I did last semester I was working on the development and operation of the NFT Market. In the process, I studied the ERC standard and Opensea, so I learned a lot and I'll share it with you. ### ERC721 https://docs.openzeppelin.com/contracts/4.x/api/token/erc721 ### Opensea https://remix.ethereum.org/#version=soljson-v0.4.26+commit.4563c3fc.js&optimize=false&runs=200&evmVersion=null AtomicMatch ``` function atomicMatch(Order memory buy, Sig memory buySig, Order memory sell, Sig memory sellSig, bytes32 metadata) { check buy side parameter; check sell order is valid;(expirationTime, signature) check sell order is not cancelled or finalized; transfer sell price(ETH or ERC20) to seller; transfer fee to Opensea; transfer NFT from seller to buyer; emit event; } ``` OPENSTORE ``` function safeTransferFrom( address _from, address _to, uint256 _id, uint256 _amount, bytes memory _data ) public { uint256 mintedBalance = super.balanceOf(_from, _id); if (mintedBalance < _amount) { // Only mint what _from doesn't already have mint(_to, _id, _amount.sub(mintedBalance), _data); if (mintedBalance > 0) { super.safeTransferFrom(_from, _to, _id, mintedBalance, _data); } } else { super.safeTransferFrom(_from, _to, _id, _amount, _data); } } ``` ### EX * I want it to be impossible to resell. I want a mechanism to ban accounts/assets that have violations from the operating account, and other requests that are fundamentally incompatible with blockchain. * Sometimes there is business-like security. * I realize my lack of basic knowledge.I realize my lack of basic knowledge.