買比特幣 買比特幣
Ctrl+D 買比特幣
ads
首頁 > Coinw > Info

比特幣:“無奈”的中本聰與梅克爾樹的“多余”_無聊猿價格

Author:

Time:1900/1/1 0:00:00

導讀

數字貨幣本質上是一串特殊的字符串,可以無限復制。如果一名礦工短暫控制了超過50%的算力,向交易所發起轉賬,同時把同一筆數字貨幣轉賬給自己。因為手頭有足夠的算力,所以兩筆交易都被寫進區塊,成為合法交易,這就是“雙花攻擊”。

比特幣網絡自誕生以來并穩健運行至今,已證明:在沒有結算中心的對等網絡,點對點交易也能拒絕雙花攻擊。所有的比特幣交易記錄都被保存在區塊鏈上,2008年在中本聰描述比特幣原型的論文里提到,他使用了一種名為梅克爾樹(MerkleTree,縮寫MT)的數據結構對每一個區塊里的所有交易做一次簡略記錄,梅克爾樹能夠用較少的字節去表達極大量的信息。

梅克爾樹的結構是個滿二叉樹,因此要求交易數量必須是2n。中本聰通過引入“無效卻必要的”多余信息來解決這個問題,所付出代價是此多余信息可能會被攻擊者利用,實施雙花攻擊。

本文先介紹梅克爾樹的基本結構,生成節點的規則,然后用一個例子來說明如何為比特幣交易構造梅克爾樹,最后解釋了比特幣如何通過UTXO的唯一編號來避免因梅克爾樹可能引起的雙花威脅。

安全團隊:BGEO Token或存在“無限鑄幣”漏洞:10月20日消息,據Dataverse在社交媒體透露,目前已經檢測到黑客對GEO BSC合約進行攻擊,并提醒用戶不要在BSC購買GEO,因為相關操作可能無效。后續GeoCash將對相關問題進行維護,也將根據ETH/Polygon鏈上快照進行空投。

另據派盾(PeckShield)在社交媒體上分析,該問題可能是BGEO(Binance GeoDB Coin)的鑄造函數存在“允許無限鑄幣”漏洞導致。[2022/10/20 16:31:20]

知識點1:

哈希函數是由數學家或者密碼學家精心設計的一種數學運算規則,它可以輸入任意長度的數據,而輸出結果(即哈希值)的長度保持不變,并且滿足:

1)單向運算:只能計算輸入得到輸出,不能逆向計算輸出得到輸入;

2)沖突避免:無法找到兩個不一樣的輸入,而它們的哈希值卻相同。

哈希函數可以說是區塊鏈最最核心的技術之一,另外一個是非對稱加密。正是這二個性質確保了比特幣像黃金一樣難以獲得,經過大量的運算才能得到某個正確的哈希值,使得該哈希值比其它字符串更加珍貴,從而獲得價值屬性。這是哈希函數在比特幣挖礦中的應用,但這并不是本文的重點。

BAYC創始人披露共擁有6只“無聊猿”,Yuga Labs實體擁有7只:2月1日消息,BAYC 匿名創始人在接受采訪時透露,該項目四位聯合創始人總計擁有 6 只“無聊猿”,Yuga Labs 實體擁有 7 只“無聊猿”和 10 個變異猿,目前除了來自一級市場的鑄造 NFT 之外,該實體從未出售過任何一個“無聊猿”或「變異猿」。

BAYC匿名創始人表示,他們希望人們可以將“無聊猿”作為自己的數字身份以更好地訪問社區。因此,每個創始人實際上只有一兩個“無聊猿”,而不是擁有一堆。此外,BAYC 創始人也非常看好可互操作的元宇宙,并表示在很多方面元宇宙其實已經存在了,比如人們已經開始使用 NFT 作為他們跨平臺的數字身份,但他們認為當前元宇宙還有更多的增長空間,同時也需要進一步發展和普及。[2022/2/1 9:26:08]

知識點2:

梅克爾樹又被稱作哈希樹,因為在這種樹狀數據結構中,每個節點的標簽(或稱作值)都是一串哈希值。按照從左向右的順序,將所有子節點的哈希串聯成一個新的長字符串,結果作為哈希函數的輸入,經計算得到父節點的標簽。

Blockstream首席戰略官:比特幣挖礦是“無限可持續的”:11月10日消息,比特幣技術公司Blockstream的首席戰略官Samson Mow在Bitcoin & Beyond虛擬峰會上表示,能源消耗是一個熱門話題,“在這個領域有很多FUD,只是人們誤解了比特幣挖礦,甚至誤解了能源生產和消費……更大的圖景真的經常被忽視,因為比特幣挖礦在全球能源消耗中只占很小的比例。”Mow指出,在某種程度上,比特幣挖礦是“無限可持續的”。“我真的不喜歡關于可持續性的說法,因為這種說法假設能源生產是有限的,但實際上并非如此,”Mow補充說,“宇宙中的能量非常豐富。我們只捕獲了太陽釋放能量的一小部分。”(Forkast)[2021/11/10 6:44:33]

哈希樹的概念得名于RalphMerkle,他在1979年9月5號提交文件申請注冊了該項專利。當然,等到中本聰使用梅克爾樹作為比特幣的底層數據結構時,此專利保護期已經結束了。不然的話,中本聰得向梅克爾先生支付專利授權費,這樣做也許他的身份就被曝光,而整個區塊鏈行業都需要繳納一筆不菲的費用。

“區塊鏈”技術加持 長沙望城“無證城市”平臺上線試運行:12月1日,長沙市望城區“無證城市”平臺上線試運行,望城區政府雷鋒政務超市9個部門127項政務服務事項,可以通過“刷臉”或“掃碼”獲取10類證件(證明),市民不需要攜帶實體證件,刷臉就可辦事。

望城區“無證城市”作為全省首個以區級政府為建設主體的“無證城市”項目,既是全省首個在無證城市-可信電子證照核驗服務系統中引入“區塊鏈”技術的先例,也是全省首個“區塊鏈”技術落地到具體政務公共服務中的先例。(新浪財經)[2021/12/1 12:43:49]

另外多說一句,比特幣并沒有憑空創造任何新型技術,而是巧妙地使用了若干個已有的密碼學工具,組合之后便是區塊鏈這種從未見過的系統。這種創新需要極強的系統性思維,往往獨自一人很難擁有這般思考的深度和廣度,也就有人推測中本聰其人背后其實并不是某一個人,有可能是一群密碼學專家。

梅克爾樹的基本結構

言歸正傳,梅克爾樹是一棵滿二叉樹,其結構如圖所示。

華爾街分析師:“無用”天然氣或能成數字貨幣挖礦新能源:有華爾街分析師指出,希望通過將“無用”的天然氣轉換成數字貨幣挖礦能源,從而使得克薩斯州的二疊河盆地的天然氣生產商獲得可觀的利潤。一些加密貨幣使用的是工作證明(PoW)算法,這一共識要求礦商相互競爭以完成交易,并獲得新硬幣的獎勵。這種機制的主要例子是比特幣網絡。這個過程需要大量的電力;因此,網絡中的礦工總是在尋找廉價而充足的電力供應。在這樣的背景下,一些華爾街分析師建議,德克薩斯二疊紀盆地的石油公司可以通過天然氣燃燒來處理其過剩的天然氣,可以更好地利用天然氣發電,反過來,這將為比特幣開采平臺提供電力。[2018/4/22]

每個葉子節點的標簽都是其所記錄內容的哈希值,而將兩個兄弟節點的標簽串聯起來,作為哈希函數的輸入,經過計算得到父節點的哈希,如此重復直到最后只剩下一個節點,即根節點,又稱作梅克爾樹根。

中本聰設計了一種區塊結構,其區塊頭的某個字段就是梅克爾樹根。梅克爾樹根源自區塊里記錄的每一筆交易,交易可以理解成轉賬,例如類似「A轉給B某某數額的比特幣」的格式。將有著固定格式的一筆轉賬記錄做序列化之后,就能作為輸入tx,交由哈希函數運算,得到的結果就是葉子節點的標簽L。

L=Hash(tx)

而每二個葉子節點的哈希,便可以串聯起來作為輸入,得到父節點的哈希P。

P=Hash(L0+L1)?//'+'meansconcatenation

區塊可以記錄的交易內容長度有限,在中本聰的設計里,嚴格限制了一個區塊內所有交易的總長不超過1MB。而交易的長度又隨交易的復雜度而變化,可以簡單理解成越復雜的交易,其內容越長。為了有效利用區塊,掙更多的手續費,礦工們總是希望盡可能往區塊里面記錄更多的交易。

觀察梅克爾樹的結構,可以發現其總是一棵滿二叉樹,這意味著葉子節點的數量總為2n。當待記錄的交易數量不足2n,又或者等于2n?時所有交易的總長度超過1MB限制,此時區塊能夠記錄的交易數量不能恰好等于一棵滿二叉樹的葉子數量。這種情況出現時,該怎么計算梅克爾樹根呢?

中本聰如何為比特幣交易構造梅克爾樹?

以一個簡單的例子來說明這個問題。

假設某區塊里面記錄了一共5筆交易,那么其初始葉子節點僅有5個。每2個葉子節點生成1個父節點,在產生父節點的過程中,卻遇到了最后1個葉子節點沒有兄弟節點的情況,這時候需要構造出來另外一個節點與其匹配。中本聰的做法是:直接重復該節點本身作為其兄弟節點,然后再按照前述方法得到父節點。這個重復的節點,就是原始交易記錄里沒有但是梅克爾樹上卻存在的多余信息。

此時,在梅克爾樹結構里面出現了3個父節點,然后再依據這3個節點繼續往上構造父節點。同樣的問題又出現了,這一層僅有3個節點,最后1個節點必須重復自身以滿足兄弟節點成對出現的要求,這樣又出現了新的多余信息。最后,再高一層又出現了2個父節點,繼續合并,得到最后唯一的節點,即根節點。

在交易數量為5的情況下,由此構造出來的梅克爾樹的結構如下圖所示。

比特幣如何避免

因梅克爾樹可能引起的雙花威脅?

中本聰的這種做法也許會讓讀者產生疑惑:既然最后一個葉子節點會被重復,從其父節點的角度看,它有兩個具有相同哈希的葉子節點。根據哈希函數的沖突避免性質可以判斷,此二個葉子節點所代表的內容完全相同。也就意味著,假設區塊里面還能再添加一筆完全相同的交易記錄,計算得到的梅克爾樹根的值保持不變。這種做法豈不是會導致雙花攻擊的問題?

比特幣網絡是如何避免不誠實節點故意在同一區塊內記錄完全相同的二筆交易?這個疑惑需要借助比特幣交易的基本單位UTXO來解釋。

在比特幣網絡里面,并沒有「賬戶」這種東西,也就沒有所謂「余額」等衍生概念,因此無法像傳統銀行系統一樣,通過檢查賬戶余額來判斷用戶有沒有可繼續花費的資產。所有的比特幣都是以UTXO(UnspendTransactionOutput)的形式存在,交易消耗已經存在的UTXO(稱作輸入,Input),產生新的UTXO(稱作輸出,Output),被消耗的UTXO便不再有效。

每一個UTXO都擁有一個鎖定腳本(ScriptPubKey),用來保護該UTXO不會被除了其擁有者以外的其它人使用,目前還沒有人可以解鎖不屬于自己的UTXO。UTXO能被花費的前提條件是,其鎖定腳本被正確地解鎖。通常某UTXO的鎖定腳本會指定其擁有者的公鑰信息,當該UTXO被花費的時候,只有出示與該公鑰匹配的私鑰所生成的數字簽名,即解鎖腳本(ScriptSig),才能成功解鎖UTXO。

在比特幣的設計中,使用交易ID和UTXO在該交易的輸出序號來作為UTXO的唯一標識,所有可用的UTXO都保存在一個名為UTXOset的數據集合里面。

這意味著,可以實現:將每一個還未被花費的UTXO都存儲在數據庫里并向全網公開,將已經被消耗的UTXO銷毀并從數據庫中刪去。那么當攻擊者故意構造第二筆交易并試圖再一次花費相同的UTXO時,會發現無法在數據庫中找到擁有相同ID的那個UTXO。這就相當于,某人花掉了手中真實存在的物理貨幣以后,便沒法再使用一遍。

因為每個UTXO都擁有獨一無二的標示,所以在一個區塊內,節點很容易判斷每筆交易所消耗的UTXO是否相同:如果存在兩筆交易的輸入為具有相同ID的UTXO,即能判斷第二筆交易無效,此區塊無法被誠實節點驗證通過。

因此,雖然梅克爾樹在交易數量不等于2n的情況下,理論上會出現重復哈希值的問題,但實際中在真實區塊里面無法再偽造具有相同內容的交易,雙花問題得到避免。

注:以上圖片來自于Onchain

參考資料:

?比特幣原始論文?Bitcoin:APeer-to-PeerElectronicCashSystem

?梅克爾樹原始專利文件

本文由PolyEnterprise團隊出品

Tags:比特幣區塊鏈GEO無聊猿比特幣交易網官網區塊鏈技術是什么Geo Web無聊猿價格

Coinw
比特幣:金色前哨 | 加密貨幣再遇春難 24小時11萬人被爆倉_ethyleneterephthalate

就在比特幣以驚人漲勢重新點亮加密貨幣希望之光時,1月11日,比特幣遭遇“暴力洗盤”,整個加密貨幣市場哀嚎一片.

1900/1/1 0:00:00
人工智能:山西將引進培育一批區塊鏈獨角獸企業_人工智能就業真實情況

山西將引進培育一批區塊鏈獨角獸企業 山西省人民政府 剛剛 25 為加快推進我省區塊鏈技術集成應用,山西省工業和信息化廳制定并印發了《關于加快推動區塊鏈創新發展的指導意見》.

1900/1/1 0:00:00
區塊鏈:IDC評估揭曉 浪潮位居中國區塊鏈平臺領導者_Dibs Money

1月6日,全球權威咨詢機構國際數據公司發布的《IDCMarketScape:中國區塊鏈即服務平臺廠商評估,2020》報告顯示,浪潮集團位居中國區塊鏈平臺領導者象限,能力和戰略綜合實力領先.

1900/1/1 0:00:00
ACE:谷燕西:Facebook未來會向其用戶提供比特幣服務_FACE

Facebook于2019年6月發起了Libra項目,也就是現在的Diem項目。Facebook顯然是專注于全力推動Diem這個項目的成功.

1900/1/1 0:00:00
DEFI:孟巖對話曲明:DPO、STO和DeFi將發生疊加效應,DeFi會成為未來ST關鍵基礎設施_isstoken

2020年12月22日,美國證券交易委員會宣布批準了紐交所的“直接掛牌過程”建議,這一建議亦稱為“直接公開發行”,更被傳為“直接上市”計劃.

1900/1/1 0:00:00
比特幣:巴比特專欄丨谷燕西:比特幣可以像宗教一樣持久_sorare幣價格

2020年12月31日,比特幣已經達到了歷史新高,超過29,000美元一枚。它現在越來越被認為是一個新的資產類型。有研究機構把比特幣同其它的資產類型和金融產品相比較.

1900/1/1 0:00:00
ads