www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導(dǎo)讀] 前言 Merkle根是通過將成對的txid散列一起創(chuàng)建的,它為區(qū)塊中的所有事務(wù)提供了一個簡短但唯一的認(rèn)證。 然后將這個merkle根用作于區(qū)塊頭中的字段,這意味著每個區(qū)塊頭將對區(qū)

前言

Merkle根是通過將成對的txid散列一起創(chuàng)建的,它為區(qū)塊中的所有事務(wù)提供了一個簡短但唯一的認(rèn)證。

然后將這個merkle根用作于區(qū)塊頭中的字段,這意味著每個區(qū)塊頭將對區(qū)塊內(nèi)的每個事務(wù)都有一個簡潔的表示。

本教程將演示如何計算merkle根字段。

先決條件

本教程將需要訪問比特幣節(jié)點。我們建議以regtest模式配置節(jié)點進(jìn)行,這樣我們就可以自由地玩各種場景,而不必浪費真正的BTC。但是您也可以針對testnet或mainnet配置執(zhí)行這些操作。

在深入到Merkle樹之前,讓我們先了解一下它們的操作所需的專業(yè)術(shù)語,稱為hash函數(shù)或trapdoor函數(shù)。這些函數(shù)在一個方向上很容易計算,但在沒有特殊信息的情況下(稱為“陷阱門”)很難在相反的方向上計算(求逆)。Trapdoor功能廣泛用于密碼學(xué)。散列函數(shù)是可用于將任意大小的數(shù)字?jǐn)?shù)據(jù)映射到固定大小的任何函數(shù),輸入數(shù)據(jù)的細(xì)微差異會導(dǎo)致輸出數(shù)據(jù)的很大差異。

其中一些散列函數(shù)包括md5、sha1和sha256。

使用sha256的示例

gr0kchain@bitcoindev $ echo -en “Hello World” | openssl dgst -sha256

a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

這里我們提供數(shù)據(jù)Hello World并將其傳遞到opnessl命令,并帶有sha256的摘要標(biāo)志。我們在這里收到的輸出是輸入數(shù)據(jù)的認(rèn)證a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e。任何在相同輸入數(shù)據(jù)上使用sha256的人都會產(chǎn)生相同的哈希值。對數(shù)據(jù)的輕微更改會導(dǎo)致完全不同的哈希值。

gr0kchain@bitcoindev $ echo -en “Hello World.” | openssl dgst -sha256

f4bb1975bf1f81f76ce824f7536c1e101a8060a632a52289d530a6f600d52c92

關(guān)于merkle樹的一些背景

在前面的示例中,我們簡要介紹了如何從任意輸入數(shù)據(jù)生成唯一的認(rèn)證。當(dāng)我們需要為大量數(shù)據(jù)提供加密證明時,這非常有用。這些數(shù)據(jù)可以用所謂的merkle或hash樹表示。Merkle Trees是一種數(shù)據(jù)結(jié)構(gòu),您可以從中派生與前面所指出的相同的哈希。

merkle樹的一個特性是,葉節(jié)點層中的任何更改都將導(dǎo)致完全不同的merkle根散列。因此,我們可以使用這個數(shù)據(jù)結(jié)構(gòu)來驗證一組數(shù)據(jù)的完整性。

從命令行計算merkle根目錄

讓我們完成生成merkle root所需的步驟:

1、生成一個新地址。

gr0kchain@bitcoindev $ bitcoin-cli getnewaddress

mgKkU7NQsDrMZ6uY1J7on9TyKKeH3FNnhH

2、將比特幣發(fā)送到新地址。

gr0kchain@bitcoindev $ bitcoin-cli sendtoaddress mgKkU7NQsDrMZ6uY1J7on9TyKKeH3FNnhH 1

a99011a19e9894753d6c65c8fa412838ea8042886537588e7205734d5de8956d

3、生成新區(qū)塊。

gr0kchain@bitcoindev $ bitcoin-cli generate 1

“1e871187ba510207d88f1bb0aa1895fb2420066277fdbba7c857b339810dfcec”

4、獲取區(qū)塊的信息。

gr0kchain@bitcoindev $ bitcoin-cli getblock

1e871187ba510207d88f1bb0aa1895fb2420066277fdbba7c857b339810dfcec

{

“hash”: “1e871187ba510207d88f1bb0aa1895fb2420066277fdbba7c857b

339810dfcec”,

“confirmations”: 1,

“size”: 553,

“height”: 132,

“version”: 536870912,

“merkleroot”: “25c8487847de572c21bff029a95d9a9fecd9f4c2736984b9

79d37258cd47bd1f”,

“tx”: [

“3bd3a1309a518c381248fdc26c3a6bd62c35db7705069f59206684308cc237b3”,

“a99011a19e9894753d6c65c8fa412838ea8042886537588e7205734d5de8956d”

],

“TIme”: 1553088284,

“medianTIme”: 1553087229,

“nonce”: 3,

“bits”: “207fffff”,

“difficulty”: 4.656542373906925e-10,

“chainwork”: “000000000000000000000000000000000000000000000000000000000000010a”,

“previousblockhash”: “78c3c76fe213ca9f5a0f616b155341eb12b963ce10107b18c9ff612cfc90843d”

}

這里我們可以看到該塊的兩個事務(wù)標(biāo)識符為3bd3a1309a518c381248fdc26c3a6bd62c35db7705069f59206684308cc237b3(我們的coinbase)和a99011a19e9894753d6c65c8fa412838ea8042886537588e7205734d5de8956d(我們上面執(zhí)行的事務(wù)的標(biāo)識符)

5、接下來,我們需要將這些字節(jié)順序從大到小顛倒過來(網(wǎng)絡(luò)字節(jié)順序)

gr0kchain@bitcoindev $ (export LC_ALL=C; xxd -revert -plain

《《《 3bd3a1309a518c381248fdc26c3a6bd62c35db7705069f59206684308cc237b3

| rev | tr -d ‘ ’ | xxd -plain | tr -d ‘ ’)

b337c28c30846620599f060577db352cd66b3a6cc2fd4812388c519a30a1d33b

gr0kchain@bitcoindev $ (export LC_ALL=C; xxd -revert -plain

《《《 a99011a19e9894753d6c65c8fa412838ea8042886537588e7205734d5de8956d

| rev | tr -d ‘ ’ | xxd -plain | tr -d ‘ ’)

6d95e85d4d7305728e583765884280ea382841fac8656c3d7594989ea11190a9

注意:此處使用LC_ALL = C刪除所有本地化設(shè)置。

6、連接這些值并從二進(jìn)制數(shù)據(jù)計算sha256摘要

gr0kchain@bitcoindev $ echo -en “b337c28c30846620599f060577db352

cd66b3a6cc2fd4812388c519a30a1d33b6d95e85d4d7305728e583765884280e

a382841fac8656c3d7594989ea11190a9” | xxd -r -p | sha256

c1f8c1f3b52135cf7f9d0f9422d6d826f4097631615fcc44e3ec70461c27b7b2

7、將此值轉(zhuǎn)換為二進(jìn)制,并在輸出上執(zhí)行另一個sha256操作

gr0kchain@bitcoindev $ echo -en “c1f8c1f3b52135cf7f9d0f9422d6d82

6f4097631615fcc44e3ec70461c27b7b2” | xxd -r -p | sha256

1fbd47cd5872d379b9846973c2f4d9ec9f9a5da929f0bf212c57de477848c825

8、最后,顛倒順序從小到大。

gr0kchain@bitcoindev $ (export LC_ALL=C; xxd -revert -plain

《《《 1fbd47cd5872d379b9846973c2f4d9ec9f9a5da929f0bf212c57de477848c825

| rev | tr -d ‘ ’ | xxd -plain | tr -d ‘ ’)

25c8487847de572c21bff029a95d9a9fecd9f4c2736984b979d37258cd47bd1f

我們現(xiàn)在有來自bitcoin-cli getblock命令的原始merkleroot值! 您可以根據(jù)需要重復(fù)此過程。

只包含coinbase事務(wù)的區(qū)塊的merkle根的異常

上述過程的一個例外是為包含單個事務(wù)的區(qū)塊生成merkle根。

gr0kchain@bitcoindev $ bitcoin-cli generate 1

“78c3c76fe213ca9f5a0f616b155341eb12b963ce10107b18c9ff612cfc90843d”

gr0kchain@bitcoindev $ bitcoin-cli getblock 78c3c76fe213ca9f5a0f616b155341eb12b963ce10107b18c9ff612cfc90843d

{

“hash”: “78c3c76fe213ca9f5a0f616b155341eb12b963ce10107b18c9ff612cfc90843d”,

“confirmaTIons”: 1,

“size”: 181,

“height”: 131,

“version”: 536870912,

“merkleroot”: “4415425121d3e80d3d733323ecdc981d43b6888241b99c0217a6b7184b021f5e”,

“tx”: [

“4415425121d3e80d3d733323ecdc981d43b6888241b99c0217a6b7184b021f5e”

],

“TIme”: 1553088104,

“mediantime”: 1553087066,

“nonce”: 0,

“bits”: “207fffff”,

“difficulty”: 4.656542373906925e-10,

“chainwork”: “0000000000000000000000000000000000000000000000000000000000000108”,

“previousblockhash”: “0d0c6c9b2c5b48451832c15cf6e8856772df2a0760f8614dbc0734e1e9d7171a”

}

在這里我們可以看到merkle root與coinbase事務(wù)的事務(wù)id相同。還有另一種情況,如果葉節(jié)點的數(shù)量不均勻,則將現(xiàn)有的tx id附加到葉節(jié)點列表以計算第一級散列對。

結(jié)論

在本教程中,我們研究了hash函數(shù)、merkle樹以及如何計算merkle根。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉