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

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

Meta2032質押挖礦開發(fā)說明,Meta2032質押挖礦系統(tǒng)開發(fā)(運營版)及源碼方案

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

  Conscientious Value Network(CVN)is a blockchain 3.0 underlying public chain that is positioned as a new generation of public chain infrastructure,a universal distributed database(storage)cloud,and high-performance decentralized"fast broadcasting".It aims to provide high-speed,secure,and easy-to-use one-stop decentralized solutions for all users.CVN achieves ledger consensus and storage proof consensus through layering the consensus principle of PoST on the VRF consensus main chain,building a fast and stable underlying blockchain.


  區(qū)塊鏈是分布式數(shù)據(jù)存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。


  區(qū)塊鏈(Blockchain),它本質上是一個去中心化的數(shù)據(jù)庫,


  是一串使用密碼學方法相關聯(lián)產(chǎn)生的數(shù)據(jù)塊,詳細唯:yy625019,每一個數(shù)據(jù)塊中包含了一批次比特幣網(wǎng)絡交易的信息,用于驗證其信息的有效性(防偽)和生成下一個區(qū)塊。


  uint256 prevOwnershipPacked=_packedOwnershipOf(tokenId);


  from=address(uint160(uint256(uint160(from))&_BITMASK_ADDRESS));


  if(address(uint160(prevOwnershipPacked))!=from)_revert(TransferFromIncorrectOwner.selector);


  通過_packedOwnershipOf函數(shù)獲得NFT擁有者地址,使用address(uint160(uint256(uint160(from))&_BITMASK_ADDRESS))進行數(shù)據(jù)類型轉化。如果我們發(fā)現(xiàn)調用參數(shù)中的from與NFT擁有者不同,則直接拋出錯誤。


  接下來,我們使用以下代碼校驗NFT轉移的相關權限問題:


  (uint256 approvedAddressSlot,address approvedAddress)=_getApprovedSlotAndAddress(tokenId);


  if(!_isSenderApprovedOrOwner(approvedAddress,from,_msgSenderERC721A()))


  if(!isApprovedForAll(from,_msgSenderERC721A()))_revert(TransferCallerNotOwnerNorApproved.selector);


  滿足以下條件則繼續(xù)運行:


  函數(shù)調用者為NFT擁有者或被授權者或函數(shù)調用者存在isApprovedForAll權限。


  如果上述條件全不滿足,則拋出異常。


  該部分中最復雜的函數(shù)為_getApprovedSlotAndAddress:


  function _getApprovedSlotAndAddress(uint256 tokenId)


  private


  view


  returns(uint256 approvedAddressSlot,address approvedAddress)


  {


  TokenApprovalRef storage tokenApproval=_tokenApprovals[tokenId];


  assembly{


  approvedAddressSlot:=tokenApproval.slot


  approvedAddress:=sload(approvedAddressSlot)


  }


  }


  該函數(shù)會返回兩個底層數(shù)據(jù),即授權地址在storage中的位置approvedAddressSlot和授權地址的值approvedAddress。


  理解此代碼需要對EVM的存儲結構有一定了解,推薦閱讀Understanding Ethereum Smart Contract Storage


  當函數(shù)調用者滿足條件后,我們進入真正的NFT轉移程序。首先清除待轉移NFT的原有授權,代碼如下:


  assembly{


  if approvedAddress{


  sstore(approvedAddressSlot,0)


  }


  }


  直接將_tokenApprovals中NFT對應的值清空。


  接下來,我們進入了最復雜的NFT轉移階段,該階段的邏輯大致如下:


  修正轉移雙方的balance參數(shù)


  --_packedAddressData[from];


  ++_packedAddressData[to];


  1


  2


  更新tokenId對應的_packedOwnerships數(shù)據(jù):


  _packedOwnerships[tokenId]=_packOwnershipData(


  to,


  _BITMASK_NEXT_INITIALIZED|_nextExtraData(from,to,prevOwnershipPacked)


  );


  由于轉移過程必須進行初始化,所以此處將轉移的NFT的nextInitialized設置為True


  考慮下一個NFT是否被初始化,


  如轉移下圖中tokenId=3的NFT:


  [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wKsxnwNP-1675684640935)(https://files.catbox.moe/20sjdu.svg)]


  該NFT轉移后,由于破壞了擁有者0x2的連續(xù)性,所以我們需要重寫tokenId=4的對應數(shù)據(jù),代碼如下:


  if(prevOwnershipPacked&_BITMASK_NEXT_INITIALIZED==0){


  uint256 nextTokenId=tokenId+1;


  if(_packedOwnerships[nextTokenId]==0){


  if(nextTokenId!=_currentIndex){


  _packedOwnerships[nextTokenId]=prevOwnershipPacked;


  }


  }


Meta2032質押挖礦開發(fā)說明,Meta2032質押挖礦系統(tǒng)開發(fā)(運營版)及源碼方案的評論 (共 條)

分享到微博請遵守國家法律
永善县| 仙居县| 广州市| 虞城县| 呼玛县| 揭西县| 资兴市| 泸溪县| 河津市| 沙雅县| 通辽市| 东城区| 玛沁县| 陆川县| 淄博市| 资兴市| 台湾省| 河津市| 临清市| 鄄城县| 池州市| 安庆市| 上杭县| 平原县| 永川市| 胶南市| 南川市| 梓潼县| 安平县| 三亚市| 阿尔山市| 蒲城县| 进贤县| 荥阳市| 古交市| 安乡县| 洛南县| 喀喇沁旗| 襄垣县| 屏南县| 磐石市|