日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

前言

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

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

本教程將演示如何計(jì)算merkle根字段。

先決條件

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

在深入到Merkle樹(shù)之前,讓我們先了解一下它們的操作所需的專業(yè)術(shù)語(yǔ),稱為hash函數(shù)或trapdoor函數(shù)。這些函數(shù)在一個(gè)方向上很容易計(jì)算,但在沒(méi)有特殊信息的情況下(稱為“陷阱門”)很難在相反的方向上計(jì)算(求逆)。Trapdoor功能廣泛用于密碼學(xué)。散列函數(shù)是可用于將任意大小的數(shù)字?jǐn)?shù)據(jù)映射到固定大小的任何函數(shù),輸入數(shù)據(jù)的細(xì)微差異會(huì)導(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)志。我們?cè)谶@里收到的輸出是輸入數(shù)據(jù)的認(rèn)證a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e。任何在相同輸入數(shù)據(jù)上使用sha256的人都會(huì)產(chǎn)生相同的哈希值。對(duì)數(shù)據(jù)的輕微更改會(huì)導(dǎo)致完全不同的哈希值。

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

f4bb1975bf1f81f76ce824f7536c1e101a8060a632a52289d530a6f600d52c92

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

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

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

從命令行計(jì)算merkle根目錄

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

1、生成一個(gè)新地址。

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”

}

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

5、接下來(lái),我們需要將這些字節(jié)順序從大到小顛倒過(guò)來(lái)(網(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ù)計(jì)算sha256摘要

gr0kchain@bitcoindev $ echo -en “b337c28c30846620599f060577db352

cd66b3a6cc2fd4812388c519a30a1d33b6d95e85d4d7305728e583765884280e

a382841fac8656c3d7594989ea11190a9” | xxd -r -p | sha256

c1f8c1f3b52135cf7f9d0f9422d6d826f4097631615fcc44e3ec70461c27b7b2

7、將此值轉(zhuǎn)換為二進(jìn)制,并在輸出上執(zhí)行另一個(gè)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)在有來(lái)自bitcoin-cli getblock命令的原始merkleroot值! 您可以根據(jù)需要重復(fù)此過(guò)程。

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

上述過(guò)程的一個(gè)例外是為包含單個(gè)事務(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é)點(diǎn)的數(shù)量不均勻,則將現(xiàn)有的tx id附加到葉節(jié)點(diǎn)列表以計(jì)算第一級(jí)散列對(duì)。

結(jié)論

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

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

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉