nft數藏平臺系統開發技術方案丨數藏nft系統ai繪畫定製開發技術流程
根據一個Token ID返回Metadata的URL:uri(uint256 id)
查詢一個地址擁有的Token ID數量:balanceOf(address account,uint256 id)
授權或取消授權一個地址有權轉移NFT:setApprovalForAll(address operator,bool approved)
轉移一個NFT:safeTransferFrom(address from,address to,uint256 id,uint256 amount,bytes calldata data)
EIP-1155定義的介面和實現都可以在OpenZeppelin上找到,我們只需要在ERC1155的基礎上修改即可。ERC1155的核心程式碼其實就是一個對映,記錄Token ID到持有地址、再到持有數量:
contract ERC1155{ 搭建‘I8O28578624'
//Mapping from token ID to account balances
mapping(uint256=>mapping(address=>uint256))private _balances;
}
我們做的主要修改是增加一個Token ID到URL的對映。因為我們準備將NFT的圖片和Metadata資料都放到IPFS上,所以增加一個Token ID到IPFS檔案雜湊的對映:
contract ERC1155{
mapping(uint256=>string)private _metadataHashes;
string private _uriPrefix=“”;
//返回”QmasWH…re2Ych?filename=metadata.json”
//如果使用伺服器API返回則可以固定uri為”{id}”
function uri(uint256 id)public view returns(string memory){
return _concat(_uriPrefix,_metadataHashes[id],“?filename=metadata.json”);
}
}
第二個修改是增加一個mint()方法來鑄造NFT:
function mint(uint256 amount,string memory metadataHash)public returns(uint256){
//如果只允許合約部署者鑄造,加上判斷:
//require(msg.sender==owner,“Not contract owner”);
nextTokenId++;
uint256 tokenId=nextTokenId;
_metadataHashes[tokenId]=metadataHash;
_mint(msg.sender,tokenId,amount,“”);
return tokenId;
}
最後一步是在isApprovedForAll()中判斷下當前轉移操作的發起者是不是OpenSea的代理合約:
function isApprovedForAll(address account,address operator)public view returns(bool){
//Whitelist OpenSea proxy contract for easy trading.
ProxyRegistry proxyRegistry=ProxyRegistry(proxyRegistryAddress);
if(address(proxyRegistry.proxies(account))==operator){
return true;
}
return _operatorApprovals[account][operator];
}
這麼做的目的是將來在OpenSea售賣的時候,不需要授權操作,節省了gas費,缺點是無條件信任了OpenSea的代理合約,降低了一點安全性。
NFT鑄造流程
理解NFT的鑄造流程是非常重要的。首先,一個NFT關聯了一個特定的資源,如圖片、影片、3D模型、VR等。假定我們的NFT就是一個圖片,鑄造NFT的第一步是將圖片上傳並獲得一個固定的URL。這裡我們選擇IPFS,上傳成功後返回的URL類似:w開發StPv888
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70016646/viewspace-2937983/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NFT天空數藏系統技術開發丨python語言丨天空數藏nft丨defiPython
- NFT數字藏品開發丨NFT盲盒數藏系統技術開發丨DAPP丨Defi丨NFTAPP
- NFT蝸客數藏開發丨蝸客數藏系統開發技術丨NFT數字藏品詳情
- NFT生態藝術開發丨NFT數藏藝術丨NFT生態藝術系統開發技術
- NFT數字藏品系統開發功能技術需求方案丨AI繪畫數藏模式系統開發對接功能AI模式
- 探元數藏NFT開發丨藏品原始碼丨探元數藏系統設計開發丨NFT技術原始碼
- NFT天空數藏元宇宙技術開發系統及程式碼示例丨NFT元宇宙
- 金鳳數藝NFT數藏系統技術開發示例
- 鏈遊NFT遊戲/NFT元宇宙/系統技術開發/NFT數藏遊戲元宇宙
- MT碳數藏(NFT)系統模式開發技術分析模式
- 非梵藝術NFT數藏開發/系統技術開發/非梵藝術NFT模式模式
- NFT非梵藝術/數藏系統開發/非梵藝術技術開發NFT詳情
- NFT數藏元宇宙藝術品交易系統開發技術解析元宇宙
- NFT生態藝術開發詳情丨數藏藝術系統開發丨Solidity語言技術Solid
- NFT數藏商品系統開發技術詳情
- 悅境2.0數藏系統技術開發/原始碼/DAPP/NFT原始碼APP
- Doodles數藏NFT元宇宙開發系統技術丨原始碼丨Doodles元宇宙功能元宇宙原始碼
- NFT數藏實物專案系統開發技術)(成熟原始碼)原始碼
- NFT數藏系統開發詳細(邏輯功能)NFT實物數藏模式系統開發流程(原始碼搭建)模式原始碼
- 蝸客數藏NFT元宇宙系統程式設計開發技術分析元宇宙程式設計
- NFT數字藏品(iBOX平臺)交易系統開發邏輯技術方案
- NFT金鳳數藝數藏開發丨原始碼丨金鳳數藝系統開發丨Defi丨NFT原始碼
- nft數藏現成案例系統開發
- NFT元宇宙開發丨Doodles數字藏品系統開發技術丨Doodles丨NFT元宇宙
- NFT鑄造交易丨Opensae交易平臺系統開發技術分析
- 探元NFT數藏/數字藏品/NFT元宇宙藏品系統技術開發/程式碼示例元宇宙
- web3/Defi元宇宙NFT開發/swap數藏合約/系統開發技術語言Web元宇宙
- nft數藏系統開發功能(原始碼Demo)原始碼
- OpenSea藏品交易平臺開發NFT系統搭建技術
- 智慧城市開發系統技術丨智慧城市NFT鏈遊開發丨DAPP丨nftAPP
- NFT數字藏品交易系統平臺開發技術(程式設計示例)程式設計
- NFT鏈遊GameFi系統開發技術|NFT藏品鑄造技術GAM
- 數藏nft系統開發原始碼獨立部署原始碼
- NFT交易平臺商城開發系統錢包搭建技術
- NFT鏈遊系統開發流程原始碼部署方案(成熟技術)原始碼
- 智慧AI繪畫系統對接丨ai繪畫數藏模式系統開發功能版及原始碼AI模式原始碼
- NFT鏈遊專案系統開發模式方案丨NFT鏈遊DAPP合約系統開發技術講解模式APP
- NFT遊戲鏈遊開發設計丨NFT鏈遊元宇宙系統技術開發丨DAPP丨NFT遊戲元宇宙APP