九層天塔DApp合約開發系統搭建技術
全鏈遊戲的樂趣應該是:在區塊鏈上構築穩固、不可篡改的核心玩法,並將衍生玩法的設計最大限度地讓渡給玩家,使得遊戲衍生本身能產生無數的可能,內容再次創作有無限的延展性。
創作一款好玩的全鏈遊戲,設計者要try to play god(當然是一個有趣的god),造一個有趣的世界,具體來說分三步:
1)提煉出遊戲的核心玩法,明確有哪些要素是希望刻進遊戲dna裡,不希望任何人(包括作者)能改變的,然後將核心玩法拆分成最小的原子
2)將遊戲原子用區塊鏈變成玩家的共識,九層天塔系統13z開4z77發z558,成為遊戲世界執行的底層規則
3)用合理的設計鼓勵人類用這些原子去創造更有趣更豐富的世界。
以下非同質化代幣的鑄造分析,原始程式碼參考以太坊ERC721提案。
首先非同質化代幣的鑄造會執行
_safeMint函式,該函式存在兩個引數,他們分別的作用是:
to:新鑄的代幣接受地址
tokenId:新鑄代幣的id序列
function _safeMint(address to,uint256 tokenId)internal virtual{
_safeMint(to,tokenId,"");//接收以上兩個引數加上空字元湊齊3個引數傳入同名_safeMint函式(過載)
}
可以看到接下來呼叫三引數同名_safeMint函式,
function _safeMint(address to,uint256 tokenId,bytes memory _data)internal virtual{//接收_safeMint函式傳參
_mint(to,tokenId);//將傳參to和tokenId傳入_mint函式
require(_checkOnERC721Received(address(0),to,tokenId,_data),"ERC721:transfer to non ERC721Receiver implementer");//呼叫_checkOnERC721Received函式來檢測函式介面合法性
}
最後呼叫_mint函式進行鑄幣:
function _mint(address to,uint256 tokenId)internal virtual{//接收來自_safeMint函式的傳參
require(to!=address(0),"ERC721:mint to the zero address");//校驗傳參地址是否為空(為假繼續後續操作,為真終止操作)
require(!_exists(tokenId),"ERC721:token already minted");//接著校驗tokenId是否已經存在(為假繼續後續操作,為真終止操作)
_beforeTokenTransfer(address(0),to,tokenId);//初始化;
_balances[to]+=1;//在傳參地址to上生成一個token
_owners[tokenId]=to;//將傳參地址to與引索tokenId進行繫結
emit Transfer(address(0),to,tokenId);//觸發token生成事件
}
就這樣一個獨一無二的NFT被鑄造出來了。總體過程如下:
合約中使用_safeMint函式呼叫鑄幣函式並檢查函式的ERC721函式介面合法性,該函式在ERC721中有所體現,程式碼如下:
function _checkOnERC721Received(address from,address to,uint256 tokenId,bytes memory _data)
private returns(bool)
{
if(to.isContract()){
try IERC721Receiver(to).onERC721Received(_msgSender(),from,tokenId,_data)returns(bytes4 retval){
return retval==IERC721Receiver(to).onERC721Received.selector;
}catch(bytes memory reason){
if(reason.length==0){
revert("ERC721:transfer to non ERC721Receiver implementer");
}else{
//solhint-disable-next-line no-inline-assembly
assembly{
revert(add(32,reason),mload(reason))
}
}
}
}else{
return true;
}
}
在_mint函式中首先檢查了地址是否是0地址,還有tokenId是否已存在。該tokenId在ERC721標準中生成規則是一個不可互換的通證。檢測透過後為to地址鑄幣(相應的tokenId),同時記錄餘額與該NFT藝術品的歸屬者
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020115/viewspace-2948479/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 九層天塔DAPP系統開發技術|鏈上智慧合約dapp開發方案APP
- 九層天塔智慧合約模式系統開發模式
- 九層天塔技術開發丨原始碼丨九層天塔系統開發詳情分析原始碼
- dapp智慧合約公排系統開發技術搭建APP
- 佛薩奇(智慧合約)系統dapp開發技術搭建APP
- DAPP合約系統開發邏輯技術丨DAPP成熟系統開發技術方案APP
- DAPP/DAO/IDO智慧合約挖礦系統開發技術搭建APP
- 泰山眾籌4.0合約系統開發|泰山DAPP開發搭建技術APP
- FDF智慧合約系統開發|馬蹄鏈DAPP開發搭建技術APP
- DAPP系統開發邏輯丨DAPP系統開發功能丨合約DAPP系統開發技術APP
- 鏈上DAPP系統開發|智慧合約DAPP開發搭建APP
- DAPP合約系統開發技術丨DAPP馬蹄鏈系統開發成熟DmeoAPP
- BSC鏈二二複製公排合約系統開發|DAPP技術搭建APP
- DAPP智慧合約理財質押模式系統開發技術搭建框架APP模式框架
- Defi mmm合約互助(智慧合約)系統說明丨mmm互助合約dapp開發技術搭建原理APP
- 趣步智慧合約模式系統開發dapp技術模式APP
- FDF智慧合約DAPP複利系統技術開發APP
- OP 鏈 DAPP 智慧合約質押挖礦系統開發(Python技術搭建)APPPython
- DAPP合約代幣燃燒挖礦系統開發丨智慧合約DAPP技術框架APP框架
- BSC鏈合約互助系統開發技術搭建
- 智慧合約互助公排DAPP系統開發技術案例APP
- 智慧合約DAPP理財模式系統開發技術方案APP模式
- 代幣合約系統開發搭建丨DAPP代幣模式專案開發技術方案APP模式
- Bsc幣安鏈智慧合約Dapp開發技術搭建APP
- DAPP/Defi質押挖礦/秒U合約/系統技術開發/原始碼搭建APP原始碼
- polygon馬蹄鏈智慧合約dapp系統開發|NFT鏈遊戲搭建技術GoAPP遊戲
- 區塊鏈趣步DAPP智慧合約合約系統技術開發詳情區塊鏈APP
- 馬蹄鏈智慧合約dapp系統開發搭建APP
- 智慧合約DAPP系統技術開發(功能邏輯講解)APP
- FDF迴圈互助智慧合約系統DAPP開發技術方案APP
- 智慧合約DAPP理財返現系統開發技術方案APP
- Polygon馬蹄鏈(matic)智慧合約DApp開發系統技術GoAPP
- MMM互助系統開發|互助智慧合約搭建技術
- SWP智慧合約語言系統技術開發搭建
- MetaForce佛薩奇系統開發合約技術搭建
- 區塊鏈DApp開發 | 跨鏈智慧合約技術搭建開發區塊鏈APP
- 九層天塔DAp開發(定製)系統開發(說明詳細)
- 智慧合約共享投票dapp系統開發(技術支援)丨dapp投票功能開發專案APP