第二章 文獻回顧
2.1 區塊鏈的定義及解釋
區塊鏈技術,簡單來說就是一門用來處理「資料」的技術組合!有人說是公 眾的電子記帳資料庫。如果更詳細地說明,區塊鏈是一個在點對點網路架構(peer to peer)中,把資料帳本分散式地儲存在每一個節點(node)當中,節點可能就是 一台連結網路的電腦,並且這個區塊鏈帳本是經由密碼學加密演算,按照時間順 序將資料區塊相連組合成的一種鏈式資料結構,另外它會配合著共識機制讓網絡 中每一個分散的節點裡面的資料同步化,可說是一套整合各項技術的基礎建設,
可以公開透明地紀錄交易、合約、資料。 (如圖 2-1)
廣義來說,區塊鏈是一個具有點對點資料傳輸、資料分散式儲存、加密演算 法、共識機制…等計算機技術的新型應用模式。
圖 2-1 區塊鏈的解釋
圖 2-3 比特幣的一個區塊
以比特幣原型區塊鏈為例(如圖 2-2 及 2-3 及 2-4),經由比特幣公開網址 https://blockchain.info/查詢到高度 277316 的區塊之中,可以看到該區塊的各 種資訊以及其記錄著上百筆的交易紀錄。而其中的「hash」欄位便是這個區塊的 雜湊值,是由「previousblockhash、difficulty、time、nonce、merkleroot、
version」六個欄位的組合並透過代入不可逆的「條件式雜湊函數(Conditional Hashing) 」計算而來。因此,這些代表著重要資訊的數值是被緊緊相扣綁在一起 的。
其中 version 代表當前版本的號碼,previousblockhash 代表上一個區塊的 hash 值,time 代表當前的時間戳記(格林威治時間 1970 年 01 月 01 日 00 時 00 分 00 秒起至現在的總秒數), merkleroot(梅克爾樹根)是由當前區塊內的所有 交易(tx 欄)不斷重複 hash 計算收歛而來,可用來檢驗區塊內所有交易。而 difficulty 和 nonce 值則是和決定由誰來寫入區塊相關。
圖 2-4 區塊頭各行的解釋
在一個比特幣的區塊鏈點對點的網絡中,存在著許分散的節點(node),例如 一個連結網路並安裝了節點軟體正在運作的電腦設備。正是這些節點維持著區塊 鏈網絡的運作和服務。其主要的工作便是打包下載了電子錢包軟體的「終端使用 者」所發出的交易並且寫入區塊之中。過程中,節點透過「公開金鑰加密機制 (Public Key Cryptography) 」來驗證訊息來源的正確性。「終端使用者」利用 自己所擁有且私密保管的「私鑰(Private Key)」加密一條交易訊息發送出去,節 點再透過其所對應公開的「公鑰(Public Key)」來解開其訊息得到資訊並驗證。
而節點間競速運算能力,不斷地嘗試不同 nonce 值代入函數計算以找到一個 正確值來符合當前 difficulty 的難度要求,並且打包交易執行雜湊函數計算寫入 區塊,便是俗稱的挖礦(Mining)過程。最先找到正確 nonce 值的節點寫入當前區 塊得到其他節點的驗證,並通過了「共識演算法(Consensus Algorithm) 」 之「工 作量證明(Proof of Work)」機制,即代表此節點在此區塊寫入的的第一筆交易「自
他用戶之間的交易也成真了)。 系統會自動評估整體參與節點之運算能力來調整 difficulty 值,以達到速度為世界上的節點們平均每 10 分鐘能夠挖出一個區塊。
比特幣區塊鏈是由無數個上述的區塊相連而成,也是因為密碼學及雜湊函數 的推導關係,不但一個區塊內的資訊被綁在一起,就連區塊與區塊之間也緊緊相 扣,所有資料牽一髮而動全身,所有資訊皆可被回溯驗證。
從上述角度來說,只要作業協定當中包含 1.公開金鑰加密機制(Public Key Cryptography) 2.條件式雜湊函數計算(Conditional Hashing) 3.同步共識演算 法機制 (Consensus Algorithm)的「技術的複合式組合 」,就是區塊鏈機制。