最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

淺談智能合約代幣流動性質(zhì)押挖礦分紅系統(tǒng)開發(fā)(詳細邏輯)及成熟方案丨源碼案例

2023-04-05 10:36 作者:bili_53879993861  | 我要投稿

 簡而言之,如果一個區(qū)塊的交易信息被改變,那么該區(qū)塊體、區(qū)塊的哈希值也將被改變,該區(qū)塊之后區(qū)塊的哈希值也將被改變。如果想讓后面的區(qū)塊還能連接到它后面所有的區(qū)塊必須全部同時修改,否則被改之后的區(qū)塊就全部脫離了區(qū)塊鏈。


  區(qū)塊鏈最重要的功能,就是建立一種價值共識,而這個“共識”,主要基于“價值量化的能力”和“價值安全的過程”兩個方面。先是“價值量化能力”:把一件事通過數(shù)字化的方式描述清楚,就是一個價值量化的過程。


  其次是“價值安全的過程”:通過數(shù)字化的方式描述清楚后,還要保護數(shù)據(jù)不被篡改,并可以隨時隨地地查詢。詳細案例及源碼唯:yy625019,這兩個方面疊加起來,就形成了價值共識。所以,區(qū)塊鏈在數(shù)據(jù)互通機制、信用體系的搭建上,必將發(fā)揮非常重要的作用。


  常規(guī)實現(xiàn)中,Transfer定義如下:


  event Transfer(address indexed _from,address indexed _to,uint256 indexed _tokenId);


  1


  來自EIP-721標準原文


  我們可以看到此事件拋出了3個topic,但事實上Transfer作為事件名稱也需要占用一個topic,所以此處使用了log4操作碼。


  此操作碼需要的變量如下:


  offset拋出內(nèi)容位于內(nèi)存的起始位置


  size拋出內(nèi)容的長度(與offset參數(shù)共同使用)


  topic1拋出的的變量


  topic2


  topic3


  topic4


  補充函數(shù)


  在ERC721A的實現(xiàn)中,開發(fā)者提供了一些其他的mint函數(shù)實現(xiàn),這些實現(xiàn)的主體邏輯與_mint類似,但提供了一些特別的功能或者符合一些特定的ERC標準。


  我們首先分析_mintERC2309函數(shù),此函數(shù)根據(jù)ERC 2309標準編寫。在介紹函數(shù)具體實現(xiàn)前,我們簡單介紹一下ERC 2309的具體內(nèi)容。


  ERC 2309主要解決在大規(guī)模鑄造和代幣轉(zhuǎn)賬過程中釋放過多event的問題。如在標準_mint函數(shù)實現(xiàn)中,我們在最后使用了while循環(huán)以逐一釋放事件。這顯然是低效的,且無法用于大規(guī)模代幣鑄造。


  為解決這一問題,ERC 2309的開發(fā)者設(shè)計了一個新的事件:


  event ConsecutiveTransfer(uint256 indexed fromTokenId,uint256 toTokenId,address indexed fromAddress,address indexed toAddress);


  基于此事件,我們可以一次性釋放所有代幣轉(zhuǎn)移的事件,大大降低了gas消耗。


  對于_mintERC2309具體實現(xiàn),與_mint基本一致,除了增加了以下代碼:


  ERC2309最大轉(zhuǎn)移量檢查


  if(quantity>_MAX_MINT_ERC2309_QUANTITY_LIMIT)_revert(MintERC2309QuantityExceedsLimit.selector);


  用于判斷單次轉(zhuǎn)移量是否超過5000


  ConsecutiveTransfer事件拋出


  emit ConsecutiveTransfer(startTokenId,startTokenId+quantity-1,address(0),to);


  由于使用了solidity語法編寫,所以此處也減少了大量安全性代碼編寫(如上文的address到uint256轉(zhuǎn)化等)。


  另一個實現(xiàn)mint功能的函數(shù)是_safeMint函數(shù),此函數(shù)會判斷NFT接收地址to的屬性,以避免NFT接受方不具有接受NFT的能力。


  unchecked{


  if(to.code.length!=0){


  uint256 end=_currentIndex;


  uint256 index=end-quantity;


  do{


  if(!_checkContractOnERC721Received(address(0),to,index++,_data)){


  _revert(TransferToNonERC721ReceiverImplementer.selector);


  }


  }while(index<end);


  //Reentrancy protection.


  if(_currentIndex!=end)_revert(bytes4(0));


  }


  }


淺談智能合約代幣流動性質(zhì)押挖礦分紅系統(tǒng)開發(fā)(詳細邏輯)及成熟方案丨源碼案例的評論 (共 條)

分享到微博請遵守國家法律
海丰县| 哈密市| 永安市| 滨海县| 政和县| 会昌县| 汉沽区| 丹东市| 苍溪县| 荥经县| 图们市| 枣庄市| 福州市| 蒙山县| 南澳县| 姜堰市| 灌南县| 九台市| 香港| 清河县| 托克逊县| 绥宁县| 合肥市| 衡阳县| 天等县| 怀柔区| 龙里县| 洛隆县| 秭归县| 桂林市| 武定县| 临桂县| 象州县| 县级市| 通山县| 乌兰县| 长治县| 娄底市| 于田县| 宜宾市| 肇庆市|