加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads

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

大學生全球線上馬拉松THUBA DAO Summer Hack進入評審階段:9月13日消息,大學生全球線上馬拉松THUBA DAO Summer Hack已于9月12日在全球開發者激勵平臺DoraHacks.io上關閉報名通道,共吸引來自包括紐約大學、香港中文大學、清華大學、越南河內公立大學在內的全球60支大學生團隊提交項目,共同角逐6萬美金總獎金池。

本次活動由THUBA DAO— 清華大學學生區塊鏈協會(THUBA)發起的去中心化自治組織主辦,面向全球所有大學生開發者,旨在培養下一代Web3領導者。[2022/9/13 13:26:38]

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

Metropolitan Commercial Bank:FDIC保險不會對 Voyager Digital的破產提供保護:7月7日消息,Voyager Digital從未向FDIC保險投保,其此前的宣傳內容中承諾持有的美元由FDIC承保是由于Metropolitan Commercial Bank向FDIC投保的緣故。此外,Voyager Digital的客戶協議中也顯示,FDIC保險不保護Voyager或任何托管人的瀆職行為。Metropolitan CommercialBank則在其聲明中表示,FDIC保險僅適用于防止Metropolitan CommercialBank的失敗,并不保護Voyager的失敗、Voyager或其員工的任何作為或不作為,或加密貨幣或其他資產的價值損失。(TheBlock)[2022/7/7 1:56:37]

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

Siam Commercial Bank旗下風投SCB 10X涉足DeFi領域:泰國銀行Siam Commercial Bank的風險投資部門SCB 10X正在為Alpha Finance Labs提供支持,以吸引DeFi的新用戶。Alpha Finance Labs的第一個DeFi產品“Alpha Homora”可利用用戶在收益耕作池中的頭寸。據悉,SCB 10X還曾投資過Ripple和BlockFi。(Decrypt)[2020/10/29]

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

聲音 | Oppenheimer分析師:不應對Bakkt比特幣期貨交易量低迷感到“沮喪”:在10月1日的一份研究報告中,Oppenheimer鼓勵投資者不要對Bakkt比特幣期貨交易量低迷感到“沮喪”。 Oppenheimer高級分析師Own Lau和董事總經理Chris Kotowski寫道,一方面,其母公司洲際交易所(ICE)在固定收益分析和交易、抵押貸款和ETF中還有許多其他電子化計劃。分析師指出,雖然Bakkt的比特幣期貨在初期的交易量無法與CBOE和CME相比,但與這兩家芝加哥交易所不同,Bakkt的期貨以實物比特幣結算。[2019/10/3]

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));}

為了演示方便我們值寫了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幣

比特幣最新價格
融一億但被質疑的5ire為何大家有分歧_CTO:CTO幣區塊鏈工程專業學什么

5ire是由印度裔企業家PratikGauri和PrateekDwivedi以及Web3金融家VilmaMattila于2021年8月創立的區塊鏈項目.

1900/1/1 0:00:00
韓國:通過Pi網絡應用的激增為先驅鋪平道路_加密貨幣:區塊鏈加密貨幣是什么意思啊

韓國這個長期以來以技術進步和創新著稱的國家,目前正進入神秘世界之旅的新篇章。作為全球技術中心之一,該國采取了重大舉措,采用區塊鏈和加密貨幣技術,其中一個日益突出的現象是Pi網絡加密貨幣網絡的采用.

1900/1/1 0:00:00
好消息:Pi Network映射重啟!令通過KYC的先鋒激動不已!_區塊鏈:區塊鏈技術發展現狀和趨勢

我們都知道,PiNetwork是一個去中心化的區塊鏈項目,致力于為全球數百萬先鋒提供安全、可靠和易于訪問的數字身份認證服務.

1900/1/1 0:00:00
孫正義為自行上架Pi幣IOU做辯護,引發爭議!_數字資產:數字資產數字資產和數字貨幣的區別

孫正義,最近因為自行上架Pi幣IOU而引發了一場爭議。在他的辯護中,他強調了Pi幣IOU的價值和潛力,并表示這是一個值得投資的機會.

1900/1/1 0:00:00
隨著市場復蘇,Chainlink(LINK)在最后一天錄得 7% 的漲幅_LINK:LINK幣

加密貨幣市場目前正在從2月22日的價格回調中恢復過來,因此,今天許多加密貨幣都以綠色交易。今天早些時候的過去24小時內,比特幣和以太坊這兩個排名前列的代幣分別上漲了1.70%和2.06%,隨后出.

1900/1/1 0:00:00
無聊猿游戲Dookey Dash分析_NFT:TIE幣MAY幣

DookeyDash是無聊猿項目方YugaLabs近期即將推出的一款區塊鏈游戲產品,無聊猿作為NFT的頭部項目,自然也獲得不少玩家的關注,以此賦能NFT,同時也被無聊猿持有者寄予厚望.

1900/1/1 0:00:00
ads