OpenSea藏品交易平臺開發NFT系統搭建技術

搭建猿punk2558發表於2023-04-07

NFT交易平臺OpenSea市場上的交易是可以實現智慧交易的控制,這意味著是在去中心化平臺上進行的交易。而是透過保證公平交易來促進賣方獲得這些報酬。OpenSea在雙方之間進行交易。儘管如此平臺交易仍沒有在市場中以2.5%的價格與每個市場的競爭者達成交易。OpenSea架構協議是由Wyvern的一組智慧協議平臺,提供了該鏈的跨鏈和以太坊的數字化交易平臺支援。

執行原理

1、NFT根據以太坊ERC721或其他標準,可以將作品加密後變成了一種非同質化的代幣,而這叫做鑄幣(mint)。

2、鑄幣是需要和區塊鏈簽約,要支付手續費(Gas費),而這筆手續費是支付給各節點的礦工,需要礦工將簽約記錄到區塊鏈內。記錄的過程需要計算雜湊函式,隨機值,雜湊值,並生成新的區塊,NFT開發punk2558;

3、NFT鑄幣完成後,產品就上架到交易平臺OpenSea上可供交易。當交易NFT作品時,系統會向區塊鏈傳送交易合約,然後各節點開始計算雜湊函式,隨機值,雜湊值,然後生成確權程式碼,以及校驗生成的區塊是否有效;

4、以太坊區塊鏈是基於比特幣區塊鏈上發展和進步的,其在比特幣區塊鏈的基礎上增加了智慧合約的設定,而NFT基於以太坊。所以NFT有了區塊鏈去中心化和智慧合約的特點,使NFT具有不可替代、不可分割、不可篡改等區塊鏈的特點;

跨鏈互操作性有利於Web3不同生態的整合,同時對於連線現有Web2基礎設施和Web3服務有至關重要的作用。透過啟用跨鏈智慧合約,跨鏈互操作性解決方案減少了生態系統的碎片化,並釋放了更高的資本效率和更好的流動性條件。

DeFi的無需許可的可組合性催生了越來越複雜的應用程式,這些應用程式允許開發人員將不同的dApp組合成一個結構,該結構可以實現的效果超過其各部分的總和。然而,數百個不同網路的可組合性受到顯著阻礙,因為智慧合約只能與同一網路上的其他合約本地組合。如果一個應用程式想要跟隨使用者並在快速變化的多鏈環境中保持競爭力,它必須部署在多個平臺上,導致流動性碎片化和使用者體驗下降。此外,單個dApp部署會佔用寶貴的開發資源,否則這些資源可能會用於提升應用程式的業務邏輯。

在多鏈環境中,每個dApp例項都是一組孤立的智慧合約,與其他區塊鏈沒有連線。

跨鏈互操作性使開發人員能夠構建一個原生的跨鏈應用程式,其中一個統一的dApp可以部署在多個不同區塊鏈上,而不必在不同的網路上部署多個單獨的版本。

跨鏈智慧合約由部署在多個網路中的多個智慧合約組成,建立一個統一的dApp。

NFT跨鏈橋是如何做到的?

NFT橋適用在所有的鼓勵的鏈之間來回傳送NFT,與此同時儲存其資料庫。當一個NFT被遷移出它發源鏈時,會出現這樣的情況:

1)NFT被鎖定在NFT橋區塊鏈智慧合約中;

2)一個等效電路產品的包裝NFT被鍛造到總體目標鏈裡的相對應collection中;

3)那個被包裝NFT同名的,看上去和原先的一樣,個人行為也與鏈裡的別的NFT完全一樣,在EVM鏈上,包裝NFT是ERC721貨幣,在Solana上,他們帶有Metaplex資料庫的SPL貨幣,在Aptos上,它們都是Aptos貨幣標準化的案例。

除開名稱及外型以外,被包裝NFT的獨特之處取決於可以把它們推送回初始鏈並開啟初始NFT。這就意味著,比如,源於Aptos的NFT能夠橋收到以太幣,之後在Opensea上售賣,然後再由新使用者轉到Aptos。

在NFT資料儲存中,我們可以看到solmate等常規實現都使用了mapping(uint256=>address)internal _ownerOf將單個tokenId與持有者對應。但ERC721A是對批次鑄造進行特殊最佳化的,開發者認為在批次鑄造過程中,使用者持有的NFT的tokenId往往是連續的。

_ownerOf記錄tokenId與持有者的關係

_balanceOf記錄持有人所持有的NFT數量

其鑄造方法定義如下:

function _mint(address to,uint256 id)internal virtual{

require(to!=address(0),"INVALID_RECIPIENT");

require(_ownerOf[id]==address(0),"ALREADY_MINTED");

//Counter overflow is incredibly unrealistic.

unchecked{

_balanceOf[to]++;

}

_ownerOf[id]=to;

emit Transfer(address(0),to,id);

}

透過此函式,我們更新了_ownerOf和_balanceOf實現使用者鑄造NFT的功能。我們可以發現使用者每次鑄造NFT都需要更新_ownerOf和_balanceOf對映。眾所周知,在操作碼gas消耗中,更新儲存需要消耗大量gas。如果使用者批次鑄造,會在此過程中消耗大量gas。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020115/viewspace-2944447/,如需轉載,請註明出處,否則將追究法律責任。

相關文章