什么是Merkle樹
定義
MerkleTree,也叫默克爾樹或哈希樹,是區塊鏈的底層加密技術,被以太坊區塊鏈廣泛采用。MerkleTree是一種自下而上構建的加密樹,每個葉子是對應數據的哈希,而每個非葉子為它的2個子節點的哈希。
如何生成Merkle樹的數據
在solidity中我們通過keccak256算法計算hash值:
keccak256(abi.encodePacked(toHashValue)e.g.:hash前0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2hash后0x999bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdb
McDermott Will & Emery律所向Voyager債權人收取510萬美元法律費用:金色財經報道,代表Voyager的律所McDermott Will & Emery根據其3月至5月工作,收取了510萬美元的法律費用。此項收費使得總收費達到了1640萬美元,超過了預算的1120萬美元。
據報道,2022年的市場低迷引發了許多項目破產,FTX和Celsius等公司分別在法律費用上花費了2億美元和5000萬美元。[2023/7/4 22:16:54]
在對葉子節點的值進行hash運算之后,再把相鄰的節點再進行hash運算,直到只剩下一個根節點。假設存在兩個相鄰的節點A和B,那么在進行hash運算的時候到地址是hash(A+B)呢?還是hash(B+A)呢?其實這是由A和B的大小決定的,在openzeppelin對應的merkle代碼中我們可以找到這么一段代碼:
Web3游戲工作室Pomerium獲得2000萬美元天使投資:5月26日消息,Web3游戲工作室Pomerium宣布其已從一位未公開的投資者那里獲得了2000萬美元的天使投資。這筆資金將使該公司能夠擴大其基于區塊鏈的游戲組合,并推動Web3游戲創新。
據悉,Pomerium成立于2022年2月,是一個專注于移動游戲的Web3多游戲平臺。該平臺的代幣經濟旨在創建可持續的移動游戲生態系統。Pomerium計劃在未來幾年擴大其在GameFi市場的服務。[2023/5/26 10:41:05]
function_hashPair(bytes32a,bytes32b)privatepurereturns(bytes32){returna<b?_efficientHash(a,b):_efficientHash(b,a);}
Solana生態DeFi項目Mercurial將更名為Meteora,并進行代幣重置:12月28日消息,Solana生態DeFi項目Mercurial將更名為Meteora,并用Meteora代幣進行重置,以取代其MER代幣,MER持有者將獲得Meteora的新代幣產品。其中在1億枚Meteora代幣的供應中,20%將流通并完全流動,而80%將交給DAO管理,旨在激發用戶興趣,建立市場信心,與FTX/Alameda保持距離。[2022/12/28 22:12:06]
總結來說就是把相對小的數值放到前面去這么來排序計算hash值。這個地方在自己動手實際運算的時候可能會有些許困惑。在實際的項目中一般只需要把計算的最后結果的根hash值存儲到合約中,如果大量的地址都需要存到合約中的話會消耗大量的gas費。經過merkle樹計算之后,大大的減少了需要存儲的數據。通過一段foundry的setUp演示下如何計算和存儲roothash值:
FTX與電競平臺Nerd Street Gamers達成合作協議,將贊助錦標賽,支持加密支付技術:2月17日消息,電競平臺Nerd Street Gamers今日宣布和FTX.US建立長期合作伙伴關系。FTX.US將贊助舉辦Nerd Street錦標賽,以及Nerd Street全美9個實體電競場館的每周小區比賽和活動。
此外,FTX.US還會幫助Nerd Street Gamers平臺建立加密支付功能和區塊鏈相關應用。
據悉,Nerd Street Gamers在全美已有9間實體電競場館,并在美國第五大城市費城建立了一間超過1,500平方公尺的電競學院The Block,提供專業級的電競設備,供玩家訓練或是舉辦私人比賽,而Nerd Street Gamers也會定期舉辦錦標賽、小區聚會。[2022/2/17 9:59:12]
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幣
PiNetwork是一個創新的區塊鏈項目,旨在創建一種去中心化的數字貨幣,在加密貨幣愛好者中獲得了巨大的人氣。隨著用戶探索Pi幣的潛力,一個名為PiBridge的混合網關的宣布引起了廣泛的關注.
1900/1/1 0:00:00對于這個問題,我的觀點是,當Pi主網成功開通后,我第一步最想做的事情是轉賬和交易。SwissOne Capital推出新加密基金“SwissOne IOTA Shimmer Opportunit.
1900/1/1 0:00:00加密貨幣PiNetwork再次在其用戶中引起轟動。Multicoin Capital:已采取新措施來“減輕交易對手風險”:金色財經報道,Multicoin Capital公司年度投資者信件顯示其.
1900/1/1 0:00:00首先,我們需要了解派鏈國際商城的具體情況和運營模式,以及Pi幣的定義和特點。 派鏈國際商城是一個去中心化的電商平臺,以Pi幣作為主要支付方式.
1900/1/1 0:00:00終于等到這一刻了!Pi網絡KYC系統更新,真是太好了!這個系統一直以來都是Pi網絡的重要組成部分,對于保障用戶隱私和安全至關重要.
1900/1/1 0:00:00正如今天報道的那樣,PiNetwork核心團隊正處于準備向開放主網過渡的最后階段。雖然這一過渡的確切時間仍然是猜測性的,但至關重要的是不要忽視這一發展的潛在意義.
1900/1/1 0:00:00