內容整理自 北京大學肖臻老師《區塊鏈技術與應用》公開課03-btc-資料結構普通指標儲存的是某個結構體在記憶體中的位址。
雜湊指標不僅儲存位址,還儲存hash值 h( )。不僅能找到位置,還能檢測出內容是否被篡改。
位元幣最基本的資料結構---區塊鏈,就是乙個個區塊組成的鍊錶。
和普通區塊的區別:雜湊指標代替普通指標。block chain is a linked list using hash pointers.
通過這樣的資料結構可以實現tamper-evident log,如果修改某個區塊的內容,則後面區塊的h( )對不上,包括系統保留的h( )都需要修改。我們只需要記住最後乙個h( ),就會檢測出對區塊鏈的任何修改。
普通鍊錶可以改變其中乙個元素,對鍊錶中其他元素是沒有影響的。而區塊鏈牽一髮而動全身。
有這個性質,位元幣中有些節點,就沒必要儲存整個區塊鏈的內容,可以只儲存最近幾千個區塊。如果用到其他區塊,可以問系統中其他節點要這個區塊。
有些節點可能有惡意,給的區塊不一定正確,可以通過雜湊指標的性質,算出該區塊的雜湊值,和儲存的雜湊值對比即可知道是否正確。
與binary tree區別:雜湊指標代替普通指標。
好處是只要記住root hash,就能檢測出對樹中任何位置的修改。因為只要乙個資料塊修改,根hash值也會修改。
位元幣中,各區塊之間用雜湊指標連線在一起,每個區塊所包含的交易組織成merkle tree.每個資料塊實際是乙個交易。
每個資料塊分為塊頭(block header)和塊身(block body)兩部分。header裡儲存root hash的值,區塊所包含的所有交易組成的merkle tree的root hash存在header中,但是header中沒有交易的具體內容,只有root hash。body中有具體的交易列表。
merkle tree作用:提供merkle proof。
位元幣中的節點分為兩類:全節點和輕節點。其中全節點儲存整個區塊的內容,輕節點只儲存header。向輕節點證明某交易寫在區塊鏈中,就用到proof(從交易到root hash的路徑)。
如圖,最上面一行是小型區塊鏈,最下面一行是交易。展現其中乙個區塊的merkle tree。假設某個輕節點想要知道黃色交易是不是包含在merkle tree裡面,輕節點沒有儲存交易列表,也沒有merkle tree的具體內容,只有root hash,儲存在header裡。輕節點向某個全節點發出請求,請求乙個能夠證明黃色交易被包含在merkle tree中的proof。全節點收到收到請求後,把圖中紅色的雜湊值發給輕節點。有了這些雜湊值,輕節點在本地可以依次計算出圖中標為綠色的雜湊值,最後可以算出整棵樹的root hash值。輕節點把算出的雜湊值和block header中的雜湊值比較,就知道黃色交易是不是包含在merkle tree中。
proof of membership / proof of inclusion o(log(n))
proof of non-membership o(n)
只要無環,都可以用雜湊指標代替普通指標。有環的話,會產生迴圈依賴
BTC 歷史上幾個著名的位元幣BTC錢包位址
目錄 著名的位元幣btc錢包位址 1 位元幣創始人中本聰 2 位元幣披薩之王 laszlo 3 法國女僕 4 單筆最大額度交易 1a1zp1ep5qgefi2dmptftl5slmv7divfna 這個位址還是位元幣的創世位址,位元幣從未移動過,其中的50幣因為技術上的設計原因也無法進行移動。注 最...
您需要支付0 04位元幣(BTC)才能恢復資料庫
突然連不上資料庫了,進去一看,資料庫中的表都沒了,就有乙個warning表,裡面有一條記錄,意思是要想恢復資料,就得給錢,而且還只要位元幣。位元幣是一種數字貨幣,誕生於2009年。本篇簡述如何預防中此病毒。另外windows確實不適合做伺服器,閉源的東西漏洞太多。唯一的優勢就是已經佔據市場了,平常用...
位元幣原始碼解析 7 資料結構 區塊
區塊是區塊鏈的組成基本結構,也是交易資訊的載體,礦工通過挖礦的形式來產生新的區塊並獲得獎勵,新塊產生的過程也是乙個交易打包的過程,只有加入到區塊中的交易才會被系統所有其他節點所認可,才是有效的。網路中的節點不斷收集新的交易,然後乙個merkle樹的形式打包進區塊中,打包的過程就是要完成工作量證明的要...