Bài học 2

比特幣如何運作

比特幣依託區塊鏈技術實現,它是一種公開的分布式賬本,透過 PoW 共識機製維持網路安全性

比特幣和區塊鏈的誕生涉及到數字貨幣領域由來已久的兩大難題:雙花問題和拜占庭將軍問題

從實物貨幣到數字貨幣:破解雙花問題

相較於生活中的實物貨幣而言,開髮電子現金的最大難點在於如何剋服“信任問題”。最早的貝殼、貴金屬之所以能夠作爲一般等價物,是因爲它們本身就具有一定的稀缺性,後來的實物紙幣,則是依托國家的公信力解決信任問題。

這些實物貨幣具有價值,能夠即時完成價值的轉移。到了數字時代,任何內容本質上都是的0與1的代碼組合,數字化的貨幣也可以被覆製成兩份,衕時髮布給兩個不衕的接受者,這就是所謂的“雙花問題”。互聯網本身併沒有錶示價值的能力,因此,人們此前必鬚借助銀行等第三方的中心化服務器,使用集中式的賬戶繫統進行記賬才能使用信用卡等類型的電子貨幣。

無需信任的繫統:分布式賬本

但真正可信賴的第三方是否存在卻是一個值得思考的問題。且不説中心化服務器存在遭到攻擊等單點故障風險,就連政府也有可能通過超髮貨幣收取“鑄幣稅”。對此,比特幣提出的解決方法是放棄第三方中介,構建分布式賬本,使得每個人都成爲記賬的中心。

假想一個村落中,本來僅由一位“村長”負責記賬,村子全體成員的所有開支,都需要在村長處事無巨細地登記,那麽這位“村長”就是這個記賬繫統的中心。如果村長值得信任,那麽這個繫統能夠良好運作,但如果作爲繫統中心的村長監守自盜,那可能就很難被其他人察覺了。

而設想存在一個“去中心化”村,村中每位成員都是記賬人,每個人都各自持有一份相衕的賬本。某位成員想要修改賬本,需要在修改完後通過“廣播”通知給其他成員,讓他們確認記賬內容併抄寫的自己的賬本上。隻有所有成員都確認併更新了賬本,記賬過程才算完成。這也是比特幣網絡大緻的運作方式。

分布式記賬的實現:區塊與區塊鏈

可以認爲比特幣開創了一種新式的記賬繫統 — 分布式賬本。相較於中心式記賬將數據儲存在中心化服務器中,區塊鏈本身就是一種去中心化的數據庫,網絡中每個節點都是這個數據庫的持有者和維護者。

區塊鏈是比特幣的基礎基礎,比特幣則是區塊鏈的首個大規模應用。

根據各自功能的不衕,可以將整個比特幣繫統簡單畫分爲三層:數據層、共識層、應用層。讓我們先來看看,比特幣繫統中每位成員所各自持有的“賬本”(數據層)是什麽樣的。

從默剋爾樹到區塊“鏈”

區塊鏈本質上是一個由全體節點共衕維護的分布式賬本,網絡每個節點都儲存有完整的區塊鏈數據。從數據結構上來説,節點所儲存的區塊“鏈”是由一個個區塊連接在一起形成的有序鏈錶,而區塊自身則是一個由Hash加密算法維持不可篡改特性的數據塊。

在比特幣中,哈希函數(SHA-256和RipeMD160)是一種至關重要的加密算法,它能夠將任意長度的輸入值轉變成固定長度的值輸出,具有隨機性、抗碰撞性、不可反推原始輸入值等特點,輸入數據的微小改變就能産生完全不衕的輸出值。哈希函數的輸出很容易通過輸入得出,但要從輸出反推輸入隻能通過暴力窮舉方式花費大量時間和算力完成。哈希函數的反覆運用使得比特幣的數據結構簡潔而嚴謹。

一個比特幣區塊由區塊體和區塊頭兩部分組成。區塊體包含有該區塊上的所有交易信息,這些交易信息會經過多次哈希運算,形成一種被稱爲默剋爾樹的結構,構成區塊體。其中每個區塊的第一條交易信息也被稱作coinbase交易,也是生成新比特幣併將之獎勵給礦工的交易,其他交易都是用戶之間互相轉賬的交易。

這些交易經過多次哈希運算最終得出的一個值被稱作默剋爾根(Merkle Hash)。默剋爾根是所有交易數據的歸總,無論是任何一筆交易的數據被篡改,還是交易的順序被調動,都會導緻默剋爾根值的改變。默剋爾根與隨機數(Nunce)、時間戳、父區塊哈希等數據共衕構成區塊頭,計算區塊頭的哈希值能夠得到這一區塊的區塊哈希(Block Hash)。由於每個區塊的區塊頭都包含了父區塊的哈希值,所有區塊通過這種形式連接成鏈。各個區塊之間環環相扣,對於區塊數據的任何更改都會導緻區塊哈希的變動,從而使得鏈條破裂。

PoW 工作量證明:維護網路安全的共識機製

在介紹完每個節點所持有的“賬本”( 數據層 )後,讓我們再來談談比特幣的共識層,也就是維持網路安全

在深入分布式繫統的共識前,首先要知道 “拜占庭將軍”問題

拜占庭將軍:涉及多方訊息的衕步問題

拜占庭將軍問題起源於中世紀時期,由於拜占庭國土遼闊,軍隊之間通信隻能依靠信差傳遞上層的作戰信息。如果有叛徒故意錯傳上層領導作戰信息,會導緻作戰方案不一緻,從而出現“拜占庭將軍問題”。

比特幣網絡由諸多去中心化的節點構成,各個節點都是獨立自主、地位平等的“軍團”。網絡每個節點都持有自己獨有的區塊鏈數據拷貝,他們都想首先打包交易,併由此賺取繫統分髮的比特幣獎勵。那麽究竟哪個節點能夠穫得記賬權,成功使得整個網絡達成共識,從而修改區塊鏈數據呢 ?

PoW 工作量證明:運算產生答案,即時發佈至網路驗證

比特幣對此給出的答案是工作量證明( PoW )共識機製,俗稱“挖礦”,這是一種由節點進行的數字運算過程,首先找到問題“答案”的節點就能夠穫得記賬權。具體來説,節點需要不斷嘗試改變區塊頭的隨機數( Nunce ),不斷計算區塊哈希,最終得到一個前麵若幹位數值都是零的區塊哈希

此時的Nunce值就是問題的答案。找到答案後,節點將會曏其他網絡節點廣播,其他節點驗證答案後,迅速將這一區塊作爲新的父節點,繼續進行下一輪的挖礦作業。

這就引出了另外一個問題,節點之間的信號傳播需要時間,在網絡全體節點達成共識前,完全可能有兩個乃至多個節點衕時找到了問題的解。但由於兩個節點打包的 coinbase 交易不衕,這將産生兩個不衕的有效區塊。由於信號傳遞的先後不衕,兩條分叉鏈上都會有礦工節點開展作業。此時,比特幣網絡將採取“最長鏈原則”,隻將其上區塊數目最多的分叉鏈視作唯一被承認的區塊鏈。一般而言,這種分叉競爭會在6個區塊以內完成,另一條廢棄鏈上的交易則將全部作廢。

比特幣的本質:UXTO模型

借由算力競爭和最長鏈原則,比特幣節點之間能夠達成共識,衕步完成各自手上分布式賬本的更新。而這種基於共識的分布式賬本,也使得比特幣這種點對點的數字貨幣成爲可能。

傳統電子貨幣採用中心化的賬戶繫統,將在中心化服務器上爲每個用戶創建賬戶,併儲存所有賬戶的餘額數據。每筆交易髮生後,按照時間順序對於賬戶餘額進行增減。而比特幣所採用的則是UXTO模型,即Unspent TX Output,未花費交易輸出。

比特幣中的交易是通過非對稱加密實現的。每個比特幣用戶都需要持有一組成對的公鑰和私鑰,類似於中心化金融中的賬戶與密碼。用戶需要使用私鑰對交易數據進行簽名,併將自己的交易數據、簽名和公鑰一起髮布出去。但在每筆交易的過程中,用戶併不直接賬戶餘額進行轉賬,而是使用多筆此前交易中“未花費的金額”,也就是UTXO。

從根本上,比特幣繫統中不存在賬戶或是賬戶餘額的概念,有的隻是歷史上所有交易的UTXO。比特幣錢包能夠掃描歷史上所有交易的數據,計算出特定地址(也就是公鑰)所具有的UTXO總額,得到所謂的賬戶餘額。此外,比特幣錢包還能在髮起交易時自動安排,匹配餘額合適的UTXO以完成轉賬。

Highlights
比特幣依託區塊技術實現,區塊鏈是一種去中心化數據庫,藉此構建無需第三方信任的分佈式賬本,讓網路中的每個節點都成為數據的維護者
比特幣透過 SHA256 算法生成哈希值,並以區塊頭和區塊體的方式保存數據,由一個個區塊鏈接而成的結構,資料不可篡改因此有極搞的安全性
比特幣的共識機製是 PoW 工作量證明,這是一種由節點耗費算力進行解題,獲得記賬權後將該筆交易衕步至其他節點,進而獲得加密貨幣獎勵的機製




📄・Related Articles

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 2

比特幣如何運作

比特幣依託區塊鏈技術實現,它是一種公開的分布式賬本,透過 PoW 共識機製維持網路安全性

比特幣和區塊鏈的誕生涉及到數字貨幣領域由來已久的兩大難題:雙花問題和拜占庭將軍問題

從實物貨幣到數字貨幣:破解雙花問題

相較於生活中的實物貨幣而言,開髮電子現金的最大難點在於如何剋服“信任問題”。最早的貝殼、貴金屬之所以能夠作爲一般等價物,是因爲它們本身就具有一定的稀缺性,後來的實物紙幣,則是依托國家的公信力解決信任問題。

這些實物貨幣具有價值,能夠即時完成價值的轉移。到了數字時代,任何內容本質上都是的0與1的代碼組合,數字化的貨幣也可以被覆製成兩份,衕時髮布給兩個不衕的接受者,這就是所謂的“雙花問題”。互聯網本身併沒有錶示價值的能力,因此,人們此前必鬚借助銀行等第三方的中心化服務器,使用集中式的賬戶繫統進行記賬才能使用信用卡等類型的電子貨幣。

無需信任的繫統:分布式賬本

但真正可信賴的第三方是否存在卻是一個值得思考的問題。且不説中心化服務器存在遭到攻擊等單點故障風險,就連政府也有可能通過超髮貨幣收取“鑄幣稅”。對此,比特幣提出的解決方法是放棄第三方中介,構建分布式賬本,使得每個人都成爲記賬的中心。

假想一個村落中,本來僅由一位“村長”負責記賬,村子全體成員的所有開支,都需要在村長處事無巨細地登記,那麽這位“村長”就是這個記賬繫統的中心。如果村長值得信任,那麽這個繫統能夠良好運作,但如果作爲繫統中心的村長監守自盜,那可能就很難被其他人察覺了。

而設想存在一個“去中心化”村,村中每位成員都是記賬人,每個人都各自持有一份相衕的賬本。某位成員想要修改賬本,需要在修改完後通過“廣播”通知給其他成員,讓他們確認記賬內容併抄寫的自己的賬本上。隻有所有成員都確認併更新了賬本,記賬過程才算完成。這也是比特幣網絡大緻的運作方式。

分布式記賬的實現:區塊與區塊鏈

可以認爲比特幣開創了一種新式的記賬繫統 — 分布式賬本。相較於中心式記賬將數據儲存在中心化服務器中,區塊鏈本身就是一種去中心化的數據庫,網絡中每個節點都是這個數據庫的持有者和維護者。

區塊鏈是比特幣的基礎基礎,比特幣則是區塊鏈的首個大規模應用。

根據各自功能的不衕,可以將整個比特幣繫統簡單畫分爲三層:數據層、共識層、應用層。讓我們先來看看,比特幣繫統中每位成員所各自持有的“賬本”(數據層)是什麽樣的。

從默剋爾樹到區塊“鏈”

區塊鏈本質上是一個由全體節點共衕維護的分布式賬本,網絡每個節點都儲存有完整的區塊鏈數據。從數據結構上來説,節點所儲存的區塊“鏈”是由一個個區塊連接在一起形成的有序鏈錶,而區塊自身則是一個由Hash加密算法維持不可篡改特性的數據塊。

在比特幣中,哈希函數(SHA-256和RipeMD160)是一種至關重要的加密算法,它能夠將任意長度的輸入值轉變成固定長度的值輸出,具有隨機性、抗碰撞性、不可反推原始輸入值等特點,輸入數據的微小改變就能産生完全不衕的輸出值。哈希函數的輸出很容易通過輸入得出,但要從輸出反推輸入隻能通過暴力窮舉方式花費大量時間和算力完成。哈希函數的反覆運用使得比特幣的數據結構簡潔而嚴謹。

一個比特幣區塊由區塊體和區塊頭兩部分組成。區塊體包含有該區塊上的所有交易信息,這些交易信息會經過多次哈希運算,形成一種被稱爲默剋爾樹的結構,構成區塊體。其中每個區塊的第一條交易信息也被稱作coinbase交易,也是生成新比特幣併將之獎勵給礦工的交易,其他交易都是用戶之間互相轉賬的交易。

這些交易經過多次哈希運算最終得出的一個值被稱作默剋爾根(Merkle Hash)。默剋爾根是所有交易數據的歸總,無論是任何一筆交易的數據被篡改,還是交易的順序被調動,都會導緻默剋爾根值的改變。默剋爾根與隨機數(Nunce)、時間戳、父區塊哈希等數據共衕構成區塊頭,計算區塊頭的哈希值能夠得到這一區塊的區塊哈希(Block Hash)。由於每個區塊的區塊頭都包含了父區塊的哈希值,所有區塊通過這種形式連接成鏈。各個區塊之間環環相扣,對於區塊數據的任何更改都會導緻區塊哈希的變動,從而使得鏈條破裂。

PoW 工作量證明:維護網路安全的共識機製

在介紹完每個節點所持有的“賬本”( 數據層 )後,讓我們再來談談比特幣的共識層,也就是維持網路安全

在深入分布式繫統的共識前,首先要知道 “拜占庭將軍”問題

拜占庭將軍:涉及多方訊息的衕步問題

拜占庭將軍問題起源於中世紀時期,由於拜占庭國土遼闊,軍隊之間通信隻能依靠信差傳遞上層的作戰信息。如果有叛徒故意錯傳上層領導作戰信息,會導緻作戰方案不一緻,從而出現“拜占庭將軍問題”。

比特幣網絡由諸多去中心化的節點構成,各個節點都是獨立自主、地位平等的“軍團”。網絡每個節點都持有自己獨有的區塊鏈數據拷貝,他們都想首先打包交易,併由此賺取繫統分髮的比特幣獎勵。那麽究竟哪個節點能夠穫得記賬權,成功使得整個網絡達成共識,從而修改區塊鏈數據呢 ?

PoW 工作量證明:運算產生答案,即時發佈至網路驗證

比特幣對此給出的答案是工作量證明( PoW )共識機製,俗稱“挖礦”,這是一種由節點進行的數字運算過程,首先找到問題“答案”的節點就能夠穫得記賬權。具體來説,節點需要不斷嘗試改變區塊頭的隨機數( Nunce ),不斷計算區塊哈希,最終得到一個前麵若幹位數值都是零的區塊哈希

此時的Nunce值就是問題的答案。找到答案後,節點將會曏其他網絡節點廣播,其他節點驗證答案後,迅速將這一區塊作爲新的父節點,繼續進行下一輪的挖礦作業。

這就引出了另外一個問題,節點之間的信號傳播需要時間,在網絡全體節點達成共識前,完全可能有兩個乃至多個節點衕時找到了問題的解。但由於兩個節點打包的 coinbase 交易不衕,這將産生兩個不衕的有效區塊。由於信號傳遞的先後不衕,兩條分叉鏈上都會有礦工節點開展作業。此時,比特幣網絡將採取“最長鏈原則”,隻將其上區塊數目最多的分叉鏈視作唯一被承認的區塊鏈。一般而言,這種分叉競爭會在6個區塊以內完成,另一條廢棄鏈上的交易則將全部作廢。

比特幣的本質:UXTO模型

借由算力競爭和最長鏈原則,比特幣節點之間能夠達成共識,衕步完成各自手上分布式賬本的更新。而這種基於共識的分布式賬本,也使得比特幣這種點對點的數字貨幣成爲可能。

傳統電子貨幣採用中心化的賬戶繫統,將在中心化服務器上爲每個用戶創建賬戶,併儲存所有賬戶的餘額數據。每筆交易髮生後,按照時間順序對於賬戶餘額進行增減。而比特幣所採用的則是UXTO模型,即Unspent TX Output,未花費交易輸出。

比特幣中的交易是通過非對稱加密實現的。每個比特幣用戶都需要持有一組成對的公鑰和私鑰,類似於中心化金融中的賬戶與密碼。用戶需要使用私鑰對交易數據進行簽名,併將自己的交易數據、簽名和公鑰一起髮布出去。但在每筆交易的過程中,用戶併不直接賬戶餘額進行轉賬,而是使用多筆此前交易中“未花費的金額”,也就是UTXO。

從根本上,比特幣繫統中不存在賬戶或是賬戶餘額的概念,有的隻是歷史上所有交易的UTXO。比特幣錢包能夠掃描歷史上所有交易的數據,計算出特定地址(也就是公鑰)所具有的UTXO總額,得到所謂的賬戶餘額。此外,比特幣錢包還能在髮起交易時自動安排,匹配餘額合適的UTXO以完成轉賬。

Highlights
比特幣依託區塊技術實現,區塊鏈是一種去中心化數據庫,藉此構建無需第三方信任的分佈式賬本,讓網路中的每個節點都成為數據的維護者
比特幣透過 SHA256 算法生成哈希值,並以區塊頭和區塊體的方式保存數據,由一個個區塊鏈接而成的結構,資料不可篡改因此有極搞的安全性
比特幣的共識機製是 PoW 工作量證明,這是一種由節點耗費算力進行解題,獲得記賬權後將該筆交易衕步至其他節點,進而獲得加密貨幣獎勵的機製




📄・Related Articles

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.