買比特幣 買比特幣
Ctrl+D 買比特幣
ads
首頁 > BNB > Info

區塊鏈:Merkle樹的邏輯和證明_NFT區塊鏈工程專業學什么

Author:

Time:1900/1/1 0:00:00

什么是Merkle樹

定義

MerkleTree,也叫默克爾樹或哈希樹,是區塊鏈的底層加密技術,被以太坊區塊鏈廣泛采用。MerkleTree是一種自下而上構建的加密樹,每個葉子是對應數據的哈希,而每個非葉子為它的2個子節點的哈希。

如何生成Merkle樹的數據

在solidity中我們通過keccak256算法計算hash值:

keccak256(abi.encodePacked(toHashValue)e.g.:hash前0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2hash后0x999bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdb

Merlin攻擊者將約16.5萬枚USDC轉至CEX:4月26日消息,據PeckShield監測,zkSync生態DEX Merlin攻擊者將約16.5萬枚USDC轉移至CEX,其中Binance收到3.1萬枚,MEXC收到13.38萬枚。[2023/4/26 14:27:59]

在對葉子節點的值進行hash運算之后,再把相鄰的節點再進行hash運算,直到只剩下一個根節點。假設存在兩個相鄰的節點A和B,那么在進行hash運算的時候到地址是hash(A+B)呢?還是hash(B+A)呢?其實這是由A和B的大小決定的,在openzeppelin對應的merkle代碼中我們可以找到這么一段代碼:

function_hashPair(bytes32a,bytes32b)privatepurereturns(bytes32){returna<b?_efficientHash(a,b):_efficientHash(b,a);}

攝影師Matthew Reamer以NFT形式出售V神2015年肖像照:8月14日消息,加利福尼亞攝影師Matthew Reamer宣布以NFT形式出售其在2015年為以太坊創始人Vitalik Buterin拍攝的三幅肖像照。目前,第一張關于V神在其筆記本電腦上操作的NFT在Foundation上的出價為1.65 ETH。另外兩張則是比較典型的照片,包括一張全臉照和一張在黑暗背景下的頭像。據悉,這些照片是瑞士出版物《Das Magazin》委托Reamer拍攝的關于當時21歲V神的簡介,于以太坊推出四個月后拍攝。(Decrypt)[2021/8/14 1:55:26]

總結來說就是把相對小的數值放到前面去這么來排序計算hash值。這個地方在自己動手實際運算的時候可能會有些許困惑。在實際的項目中一般只需要把計算的最后結果的根hash值存儲到合約中,如果大量的地址都需要存到合約中的話會消耗大量的gas費。經過merkle樹計算之后,大大的減少了需要存儲的數據。通過一段foundry的setUp演示下如何計算和存儲roothash值:

巴西加密交易所Mercado Bitcoin完成3800萬美元融資:1月22日消息,周四,巴西比特幣交易所Mercado Bitcoin宣布完成2億巴西雷亞爾(約合3800萬美元)的融資,并透露了其國際擴張計劃。此次融資由當地私募股權公司GP Investimentos和早期風險投資公司Parallax Ventures牽頭,其他幾方也參與了此次活動,其中大部分來自本地市場。Mercado Bitcoin首席執行官Reinaldo Rabelo表示,該交易所計劃進入智利,墨西哥和阿根廷市場。(Finance Magnates)[2021/1/22 16:47:36]

bytes32publicroot;bytes32publicleafs;bytes32publicl2;functionsetUp()public{addressmemoryaddrss=newaddress(4);addrss=0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;addrss=0x2d886570A0dA04885bfD6eb48eD8b8ff01A0eb7e;addrss=0xed857ac80A9cc7ca07a1C213e79683A1883df07B;addrss=0x690B9A9E9aa1C9dB991C7721a92d351Db4FaC990;//通過地址列表計算葉子節點的hash值leafs.push(keccak256(abi.encodePacked(addrss)));leafs.push(keccak256(abi.encodePacked(addrss)));leafs.push(keccak256(abi.encodePacked(addrss)));leafs.push(keccak256(abi.encodePacked(addrss)));//計算第二層的hash值l2.push(keccak256(abi.encodePacked(leafs,leafs)));l2.push(keccak256(abi.encodePacked(leafs,leafs)));//計算根的hash值root=keccak256(abi.encodePacked(l2,l2));}

Internet Archive宣布將提前結束National Emergency Library的免費開放:非盈利數字圖書館Internet Archive宣布將提前關閉National Emergency Library的免費開放,于6月16日(原計劃6月30日)停止向用戶提供免費的電子書閱讀服務,恢復至受控借閱模式。

注:V神曾向非盈利數字圖書館互聯網檔案庫Internet Archive捐贈100枚ETH。上周,紐約南區幾家主流出版社聲稱擬對Internet Archive提起法律訴訟,起訴理由是該項目違反了版權法。[2020/6/11]

為了演示方便我們值寫了4個地址,實際項目中可能地址數量非常大。

如何來驗證Merkle樹

在合約中存儲到roothash值之后我們如何去驗證由客戶端發過來的地址是否是有效地址或者說在白名單中的地址呢?首先我們需要將地址進行hash運算,作為第三個參數,然后將地址相鄰的hash值作為proof傳到驗證函數中。proof列表對應下面圖片中的紅色標記區域

測試的驗證方法:

functiontestVerify()public{addressproofAddress=0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;bytes32memoryproof=newbytes32(2);proof=leafs;proof=l2;assert(MerkleProof.verify(proof,root,keccak256(abi.encodePacked(proofAddress))));}

在實際項目中的應用場景

發放空投

NFT的白名單

在合約審計中的常見漏洞

functionparentHash(bytes32a,bytes32b)publicpurereturns(bytes32){if(a<b){returnkeccak256(abi.encode(a,b));}else{returnkeccak256(abi.encode(b,a));}}

abi.encode(address,uint)將會輸出64字節。由于abi.encode(bytes32,bytes32)也是64字節,因此在葉子節點和父節點之間可能會發生哈希碰撞。

Tags:區塊鏈以太坊NFT區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢以太坊幣是什么幣NFT價格NFT幣

BNB
以太坊:Filecoin 推出與以太坊兼容的智能合約_Filecoin幣是什么幣

更新啟用DeFi、“數據DAO”和永久存儲 Filecoin是一種用于存儲數據的區塊鏈,它啟用了以太坊式的智能合約.

1900/1/1 0:00:00
區塊鏈:重要反饋:您的Pi網絡主網清單到了哪一步?_數字資產是未來最大的資產

金色晚報 | 10月5日晚間重要動態一覽:12:00-21:00關鍵詞:泰國央行、SBI、美國議員、V神 1.泰國央行推出區塊鏈技術政府儲蓄債券.

1900/1/1 0:00:00
DEX:什么是Osmosis 加密貨幣?_DEX價格

去中心化交易所為DeFi用戶打開了創新的大門,促進了單產農業和借貸。然而,根據各自的區塊鏈擴展DEX仍然存在許多限制。Osmosis加密平臺旨在通過將多鏈功能與下一代感覺相結合來提供解決方案.

1900/1/1 0:00:00
DAO:為什么DAO將崛起?_UBIDAO幣

已經有不少組織開始采取DAO的方式運轉,但更多的人則抱著懷疑的態度:這種組織結構可能長久嗎?它在經濟上可持續嗎?“效率”低下、流動性極高的DAO可能取代公司制嗎?面對這些懷疑.

1900/1/1 0:00:00
比特幣:比特幣鯊魚和鯨魚在下跌期間積累了 8.215 億美元:Santiment_加密貨幣市場還有未來嗎知乎

來自Santiment的鏈上數據顯示,比特幣鯊魚和鯨魚在最近的價格下跌期間積累了約8.215億美元的資產.

1900/1/1 0:00:00
數字貨幣:Pi Network必然上交易所,無需爭議!_數字貨幣交易所官方網址

PiNetwork獨特之處在于,它采用了移動設備全節點技術,使得每一個用戶都可以成為網絡中的一個節點,從而保證了整個系統的去中心化和安全性.

1900/1/1 0:00:00
ads