国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程)

這篇具有很好參考價值的文章主要介紹了你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Merkle樹——驗證NFT白名單

文末有實戰(zhàn)教程,評論區(qū)留下你的實戰(zhàn)心得吧!

在我們今天所知道和喜愛的區(qū)塊鏈出現(xiàn)之前,默克爾樹一直是密碼學和計算機科學領(lǐng)域的一個方面。如今,我們開始慢慢看到它們在鏈上更頻繁地被用于數(shù)據(jù)驗證的目的。

1. 什么是默克爾樹?

默克爾樹是一種樹狀結(jié)構(gòu),樹上的每個節(jié)點都由一個值表示,這個值是一些加密哈希函數(shù)的結(jié)果。哈希函數(shù)是單向的,從一個輸入產(chǎn)生一個輸出很容易,但從一個輸出確定一個輸入在計算上是不可行的。默克爾樹有3種類型的節(jié)點,如下所示:

  1. 葉子節(jié)點 - 葉子節(jié)點位于樹的最底部,它們的值是原始數(shù)據(jù)的哈希值。一棵樹上有多少個葉子節(jié)點,就有多少個需要哈希的原始數(shù)據(jù)。例如,如果有7個數(shù)據(jù)需要被哈希,就會有7個葉子節(jié)點。
  2. 父節(jié)點 - 父節(jié)點可以位于樹的不同層次,這取決于整個樹的大小,父節(jié)點總是位于葉節(jié)點之上。父節(jié)點的值是由它下面的節(jié)點的哈希值決定的,通常從左到右開始。由于不同的輸入總是會產(chǎn)生不同的哈希值,不考慮哈希值的碰撞,節(jié)點哈希值的連接順序很重要。
  3. 根節(jié)點 - 根節(jié)點位于樹的頂端,由位于它下面的兩個父節(jié)點的哈希值連接而成,同樣從左到右開始。任何默克爾樹上都只有一個根節(jié)點,根節(jié)點擁有根哈希值。

2. 默克爾樹結(jié)構(gòu)

你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程),爆火技術(shù)背后的原理,區(qū)塊鏈,區(qū)塊鏈,web3,javascript,智能合約

簡化它

你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程),爆火技術(shù)背后的原理,區(qū)塊鏈,區(qū)塊鏈,web3,javascript,智能合約

3. 為什么需要默克爾樹?

3.1 背景

在NFT(ERC-721)的背景下使用Merkle樹,白名單為選定的參與者群體保留一定數(shù)量的代幣。

白名單地址將會預先計算成Merkle對象。

在這種情況下,可以讓一個葉子節(jié)點代表我們白名單中的一個錢包地址的哈希值。

3.2 痛點

前面提到過哈希函數(shù)是單向的——從一個輸入產(chǎn)生一個輸出很容易但從一個輸出確定一個輸入在計算上是不可行的,并且連接順序也將決定結(jié)果。

Example:

hash(hash1,hash2) != hash(hash2,hash1)

在NFT白名單實例中,將會使用哈希值進行數(shù)據(jù)安全驗證。

因此在這種情況下,直系驗證是非常困難的,需要非常大的計算量和資源。

傳統(tǒng)驗證

驗證根哈希值是否相同,這看似很簡單,但問題就在于,當你去驗證一個地址時,到底將該地址哈希與哪個葉子哈希值進行替換并驗證?這是很難計算得知的。

你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程),爆火技術(shù)背后的原理,區(qū)塊鏈,區(qū)塊鏈,web3,javascript,智能合約

根哈希驗證的另一個難點(了解即可)

你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程),爆火技術(shù)背后的原理,區(qū)塊鏈,區(qū)塊鏈,web3,javascript,智能合約

3.3 如何解決——取得默克爾證明

Merkle樹妙處在于它根本不需要與根哈希父哈希等等進行等量校對。

如果試圖驗證一個葉子節(jié)點屬于我們的樹,只需要知道直接相鄰的葉子節(jié)點哈希值(如果有的話),以及葉子節(jié)點正上方相鄰的父節(jié)點哈希值就可以了。

如果這個Merkle樹有四層,五層甚至一百層,那么返回的哈希值數(shù)量將會相應(yīng)增長!

4. 實戰(zhàn)

實戰(zhàn)將會帶你實例化默克爾樹對象以及取得默克爾樹驗證!

4.1 JavaScript實現(xiàn)

安裝

npm i -D merkletreejs keccak256

merkletree.js

const {MerkleTree} = require('merkletreejs')

const keccak256 = require('keccak256')


let whitelistAddresses = [
    "0x262bCDeEf90181676BDC0a247A1954666F8a2815",
    "0x262bCDeEf90181676BDC0a247A1954666F8a2816",
    "0x262bCDeEf90181676BDC0a247A1954666F8a2817",
    "0x262bCDeEf90181676BDC0a247A1954666F8a2818",
    "0x262bCDeEf90181676BDC0a247A1954666F8a2819",
    "0x262bCDeEf90181676BDC0a247A1954666F8a2820",
    "0x262bCDeEf90181676BDC0a247A1954666F8a2821"       
]

//buffer化葉子結(jié)點
const leafNodes = whitelistAddresses.map(addr => keccak256(addr))

//實例化默克爾樹
const merkleTree = new MerkleTree(leafNodes,keccak256,{sortPairs:true});

//獲取根哈希值
const rootHash = merkleTree.getRoot();

console.log('Whitelist Merkle Tree\n',merkleTree.toString())

//定義你所需要驗證的地址
const claimingAddress = leafNodes[0]

//取得默克爾樹證明
const hexProof = merkleTree.getHexProof(claimingAddress)


console.log(`Merkle Proof for Address is\n`,hexProof)


//當你傳入一個錯誤的白名單地址時
const errAddress = keccak256('0x98D9897e0F0389158978B384E6ecF3cf93153876');

//取得默克爾證明
const hexProof1 = merkleTree.getHexProof(errAddress)

//將會得到空數(shù)組!
console.log(`Merkle Proof for error Address is\n`,hexProof1)

測試結(jié)果

你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程),爆火技術(shù)背后的原理,區(qū)塊鏈,區(qū)塊鏈,web3,javascript,智能合約

由于該默克爾樹是由七個葉子節(jié)點組成的,所以這是一個三層結(jié)構(gòu)的樹,因此默克爾證明將會取得三個哈希值作為憑證。當樹結(jié)構(gòu)為五層,六層… 默克爾證明的哈希值數(shù)量會對應(yīng)增加!

4.2 智能合約實現(xiàn)

Merkletree.sol

// SPDX-License-Identifier: SEE LICENSE IN LICENSE
pragma solidity ^0.8.0;


//導入默克爾樹智能合約
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol";

contract Merkletree{

    //該根哈希值需要你用到剛剛js生成的merkle樹的根哈希(記得加上0x)
    bytes32 public merkleRoot = 0x3a6036ef5f6da50ea7f3dc72c7c83c1e6d5be6cded8ad495fb4b0bb870f1c093;
    
    //記錄白名單是否被使用過
    mapping(address => bool) public whitelistClaimed;

    //使用白名單函數(shù)
    function whitelistMint(bytes32[] calldata _merkleProof) public{
        //要求白名單沒有被使用過
        require(!whitelistClaimed[msg.sender],"Address has already claimed");
        //初始化葉子哈希
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        //將葉子哈希傳入merkle樹驗證,查看是否是白名單
        require(MerkleProof.verify(_merkleProof, merkleRoot , leaf),"Invalid proof");
        //是白名單,記錄該白名單使用過
        whitelistClaimed[msg.sender] = true;
    }
}

5. 總結(jié)

Merkle樹是區(qū)塊鏈中非常重要的數(shù)據(jù)結(jié)構(gòu),它的應(yīng)用極大地減小了哈希安全驗證的難度,提高了合約安全程度,減少了被攻擊成功的可能性。

感謝閱讀!

Blog by Science_jun文章來源地址http://www.zghlxwxcb.cn/news/detail-855774.html

到了這里,關(guān)于你真的了解區(qū)塊鏈嗎?揭秘白名單背后的技術(shù)原理(附白名單實戰(zhàn)教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 大數(shù)據(jù)小白初探HDFS架構(gòu)原理:帶你揭秘背后的真相(一)

    ???????? 目錄 1.前言 2. HDFS架構(gòu) 2.1 架構(gòu)定義 2.2 揭秘架構(gòu) 2.3 HDFS核心結(jié)構(gòu) ?3. HDFS 的優(yōu)缺點 ? ? ? ? 3.1 HDFS 的優(yōu)點 ????????3.2 HDFS 的缺點 4. HDFS 的應(yīng)用場景 5. 總結(jié) ? ? ? ? 前面的文章寫了一篇,大數(shù)據(jù)方面的基礎(chǔ)知識,目的是希望大數(shù)據(jù)小白可以對大數(shù)據(jù)能有個清楚

    2024年02月21日
    瀏覽(16)
  • 什么是區(qū)塊鏈?區(qū)塊鏈技術(shù)和比特幣背后的故事

    作者:禪與計算機程序設(shè)計藝術(shù) 區(qū)塊鏈是一種分布式的、去中心化的、非國家級的計算機網(wǎng)絡(luò)技術(shù),它是一個開放的系統(tǒng),任何人都可以在不受任何約束的情況下進行去信任的數(shù)據(jù)交易和共識。它的應(yīng)用場景包括數(shù)字貨幣,數(shù)字身份,金融交易,游戲領(lǐng)域,基于區(qū)塊鏈的智慧

    2024年02月08日
    瀏覽(44)
  • 【ChatGPT】萬字長文揭秘 GPT 背后:為何“大模型” 就一下子成為了引領(lǐng)人工智能 AI2.0時代熱門技術(shù)?

    【ChatGPT】萬字長文揭秘 GPT 背后:為何“大模型” 就一下子成為了引領(lǐng)人工智能 AI2.0時代熱門技術(shù)?

    GPT (Generative Pre-trained Transformer) ,生成式預訓練Transformer: 是一種基于 深度學習 的 自然語言處理模型 ,GPT 由 OpenAI 開發(fā)。 GPT 是一種基于 Transformer 模型的語言模型,可以通過大量的文本數(shù)據(jù)進行訓練,從而學習到語言的規(guī)律和模式,進而生成自然流暢的語言文本。 本文將詳

    2023年04月19日
    瀏覽(33)
  • 前沿技術(shù)探究|區(qū)塊鏈的故事你真的知道嗎?

    前沿技術(shù)探究|區(qū)塊鏈的故事你真的知道嗎?

    前言: 區(qū)塊鏈的作用是實現(xiàn)去中心化的安全數(shù)據(jù)傳輸和交易驗證。 區(qū)塊鏈是在2008年由中本聰(Satoshi Nakamoto)提出的概念,它作為比特幣(Bitcoin)的底層技術(shù)而首次被廣為人知。中本聰提出區(qū)塊鏈作為一種去中心化的分布式賬本技術(shù), 旨在解決傳統(tǒng)金融系統(tǒng)中的信任問題

    2024年02月08日
    瀏覽(26)
  • C++中的多態(tài)你真的了解嗎?多態(tài)原理全面具體講解

    C++中的多態(tài)你真的了解嗎?多態(tài)原理全面具體講解

    目錄 1. 多態(tài)的概念 2. 多態(tài)的定義及實現(xiàn) 2.1 多態(tài)的構(gòu)成條件 2.2 虛函數(shù) 2.3 虛函數(shù)的重寫 2.4 C++11 override 和 final 2.5 重載、覆蓋(重寫)、隱藏(重定義)的對比 3. 抽象類 3.1 概念 4. 多態(tài)的原理 4.1 虛函數(shù)表 4.2多態(tài)的原理 4.3 動態(tài)綁定與靜態(tài)綁定 5. 單繼承和多繼承關(guān)系中的虛函數(shù)表

    2024年02月04日
    瀏覽(26)
  • ChatGPT會一直火熱下去嗎?他會是下一個AR,區(qū)塊鏈嗎?

    ChatGPT會一直火熱下去嗎?他會是下一個AR,區(qū)塊鏈嗎?

    目錄 ? ?前言 VR?熱潮 區(qū)塊鏈熱潮 元宇宙熱潮 ChatGPT?熱潮 理智看待?ChatGPT 如果在今年年底評選 2023 年的年度科技熱詞,以 ChatGPT 目前的熱度,毫無疑問會是今年排名第一的科技熱詞。 即使今年才過去四個月,但我很難想象還有什么科技新聞能在熱度上超過 ChatGPT,如果有,

    2023年04月24日
    瀏覽(17)
  • ChatGPT背后的技術(shù)原理:領(lǐng)略Transformer架構(gòu)的魅力

    ChatGPT背后的技術(shù)原理:領(lǐng)略Transformer架構(gòu)的魅力

    ??驚艷了時代的ChatGPT,背后到底有怎樣的技術(shù)支持?本文將深入剖析ChatGPT背后的技術(shù)原理,從Transformer架構(gòu)、自注意力機制到位置編碼等方面,帶領(lǐng)讀者一探究竟??! ??ChatGPT,這個最近讓大家炸裂的人工智能語言模型,背后的秘密武器就是Transformer架構(gòu)。這種神奇的架構(gòu)

    2024年02月04日
    瀏覽(19)
  • 紅衣大叔講AI:Sora技術(shù)原理大揭秘

    紅衣大叔講AI:Sora技術(shù)原理大揭秘

    前沿:Sora是一個OpenAI技術(shù)大集成模型,融合了ChatGPT、DALL E3,以及把視頻融合到Transformer中,生成一個一的視頻幀,利用矢量來表示,最后把這個矢量送到Transformer中訓練視覺大模型。 Sora 生成圖像能力 : Sora是一個文生視頻模型,但同樣具備生成圖像能力,這個創(chuàng)新屬于業(yè)內(nèi)

    2024年03月15日
    瀏覽(36)
  • 斯坦福Mobile ALOHA背后的關(guān)鍵技術(shù):動作分塊算法ACT的原理解析

    斯坦福Mobile ALOHA背后的關(guān)鍵技術(shù):動作分塊算法ACT的原理解析

    23年已過35 今24年則將36,到40歲之前還有4年半,這4年半我想沖一把大模型機器人( 兼具商業(yè)價值、社會價值、科技價值? ),因為 通過過去一年的研究探索與應(yīng)用開發(fā)( 比如我?guī)ш犻_發(fā)完成的AIGC模特生成、論文審稿GPT、企業(yè)知識庫問答等 ),機器人是在可能范圍之內(nèi)我能做的最

    2024年01月17日
    瀏覽(24)
  • VR技術(shù)揭秘:從頭到尾解析VR的實現(xiàn)原理

    虛擬現(xiàn)實(Virtual Reality,簡稱VR)是一種全新的交互方式,它通過計算機模擬的環(huán)境來實現(xiàn)用戶沉浸在虛擬世界中的感覺。本篇博客將會詳細解析VR技術(shù)的實現(xiàn)原理,以及如何使用代碼實現(xiàn)VR應(yīng)用。 VR技術(shù)的實現(xiàn)需要涉及到多個方面的知識,例如圖像處理、物理仿真、人機交互

    2024年02月06日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包