NFT頭像鑄造代幣質押挖礦智能合約系統(tǒng)開發(fā)模式定制
價 格:面議
Web3社區(qū)對于非同質化詳細帶幣(NFT)充滿了期待。頭統(tǒng)開開發(fā)搭建(134-1633-5319),像鑄盡管還沒有殺手級應用的造代制出現(xiàn),但是幣質這項技術已經(jīng)重塑了數(shù)字資產(chǎn)所有權,身份體系,押挖約系創(chuàng)新范式和社區(qū)運作方式。礦智
因為NFT是發(fā)模可以被買賣交易的數(shù)字資產(chǎn),而NFT交易所收集了NFT的式定信息并且撮合了買家和賣家,所以NFT交易所是頭統(tǒng)開生態(tài)中一個必不可少的部分。
這個教程講解了如何用Solidity來搭建NFT交易所的像鑄“后端”,如何開發(fā)承載交易所業(yè)務邏輯的造代制智能合約。在代碼中,幣質我們會創(chuàng)建一個NftMarketplace.sol智能合約和一個兼容ERC-721(NFT)標準的押挖約系代幣合約,然后將這個NFT展示在我們的礦智交易所上。
在項目目錄下,發(fā)模創(chuàng)建contracts文件夾。在文件夾中,然后創(chuàng)建NftMarketplace.sol文件(文件路徑應該是../<<root>>/contracts/NftMarketplace.sol)。
在NftMarketplace這個智能合約中,需要完成之前提到的不同的操作。這些方法如下所示:
function listItem(
address nftAddress,
uint256 tokenId,
uint256 price
) { }
function cancelListing(address nftAddress, uint256 tokenId){ }
function buyItem(address nftAddress, uint256 tokenId){ }
function updateListing(
address nftAddress,
uint256 tokenId,
uint256 newPrice
){ }
function withdrawProceeds(){ } // method caller should be withdrawer
function getListing(address nftAddress, uint256 tokenId){ }
盡管看起來很簡單,但智能合約還有很多必要的檢查,現(xiàn)在深入研究一下。我們要保證智能合約不被重入攻擊,重入攻擊一般是對重復執(zhí)行本來不該執(zhí)行的代碼來獲利,通常是重復執(zhí)行通證轉賬操作。
在實現(xiàn)這個交易所的邏輯時,我們需要使用下列的屬性和數(shù)據(jù)架構:
1個結構體:Listing用來存儲價格和賣房資產(chǎn)變量
3個事件:ItemListed,ItemCanceled和ItemBought。
2個mapping:s_listings和s_proceeds,它們存儲在區(qū)塊鏈上的狀態(tài)變量。
3個函數(shù)修飾器。
別著急,繼續(xù)看下面的智能合約的時候,你就會明白上面的東西。
讓我們先聲明智能合約。
可以看到,我們從OpenZeppelin中引入了兩個文件,OpenZeppelin提供了開源且經(jīng)過審計的,智能合約合約模版。我們的智能合約繼承了它的ReentrancyGuard智能合約(在Github上查看),這個智能合約中有我們需要用到的修飾符和方法,用來防止重入攻擊。
我們還引入了IERC721.sol文件,這個接口我們馬上就會用到。然而,我們的交易所智能合約不會繼承ERC-721通證標準,因為交易所合約不是一個通證合約。