許多人都會把區塊鏈、加密貨幣等等混為一談,或將其跟詐騙畫上等號,實際上他們是不同的東西! 我們可以說加密貨幣是區塊鏈中的一個應用,甚至詐騙也是應用的一種!
那究竟什麼是區塊鏈? 在了解細節之前,我們不如想一下為什麼有這個東西。
普遍認為,區塊鏈的起源來自於2008年中本聰 ( Satoshi Nakamoto ) 所發表的 "Bitcoin: A Peer-to-Peer Electronic Cash System"。他的初衷是為了建造一個不需要經過第三方的一個電子現金支付系統! 從而讓用戶可以實現貨幣的點對點P2P (Peer to Peer)支付,就是你直接轉給我,不再需要透過銀行或政府等第三方來幫你做金錢的轉移。
我們可以想一想,為什麼第三方能幫助我們實現電子支付的?
1. 他能協助處理數位貨幣雙重支付問題 (同一份數位貨幣被多次使用)
2. 公信力
但這些服務並不是無償的,因此我們必須支付第三方手續費,有時候就算只想小額轉帳還是會被抽很高的手續費。再來大家都知道轉錢其實就是第三方在他的電腦裡面更改數字,並非真實的轉錢,換句話說,這樣的機制就有能被串改的風險,並不是不可逆的交易,因此就"轉錢"這個動作,透過第三方的信任模式其實是非常孱弱的(或是說這個動作容易被攻擊)。
而為了解決這個問題,中本聰透過技術建立了一個基於密碼學且用戶互相直接交易的系統! 而這個系統就是我們現在所稱的區塊鏈!
區塊鏈中制定了一連串的"規則",這些規則能夠保證我們的交易是有效、安全且不可逆! 更有意思的地方在於,中本聰制定了"機制"來有效的降低規則被惡意破壞的機率,這是把人性都設計進來。 這也是區塊鏈最有趣的地方,你可以看到許多項目是如何透過代碼程式和人性博弈,因此如果真的要深入玩轉區塊鏈,這些相關的知識你必須了解!
所以區塊鏈實際到底是什麼? 實際上它就是一個電子記帳資料庫系統! 這個系統以區塊 ( Block ) 為單位,所有的交易都會被記錄在區塊上,因為區塊們會按照時間順序連接,因此也就像是鏈一樣。 (以下以比特比網路做說明)
Blocks coonected with the form of chain (source: bitcoin whitepaper)
那這個區塊到底記錄了什麼? 你只要記得重要的東西有前一區塊的資訊、時間戳、交易列表! (有興趣再看下面的內容)
1. 區塊頭(Block Header):
1-1 版本號(Version):指定區塊的規則和功能。
1-2 前一個區塊的雜湊(Previous Block Hash):連結到前一個區塊的雜湊值,形成區塊鏈。
1-3 Merkle 根(Merkle Root):由所有交易的雜湊值組成的 Merkle 樹根節點的雜湊值。
1-4 時間戳(Timestamp):區塊建立的時間戳。
1-5 難度目標(Difficulty Target):用於指定挖礦的難度目標。
1-6 隨機數(Nonce):用於滿足難度目標的隨機數。
2. 交易列表(Transaction List):
2-1 包含多個交易的列表。每個交易代表一筆比特幣交易,包括輸入和輸出。
3. 其他元數據:
3-1 區塊高度(Block Height):表示區塊在區塊鏈中的位置。
3-2 區塊雜湊(Block Hash):區塊頭的雜湊值,用於唯一標識該區塊。
因為負責維運這個電子記帳資料庫系統的節點們手上都會有一條同樣的鏈,只要你想你也可以加入這個系統成為一個節點,這就代表了在這個系統的交易紀錄都是一致的,也因為每個區塊紀錄了前一區塊的資訊、時間戳、交易列表,所以我們常說區塊鏈具有可追溯性,可以追查資金流向同時避免了雙重支付問題。
這邊你應該要思考,既然每個人都可以加入系統,要怎麼確保大家都有同樣的鏈(帳本的一致性)? 怎麼確保會不會有人記假帳(交易的合法性)? 怎麼確保鏈會不會被竄改(鏈的安全性)?
在探討上面問題前,先說明一下區塊鏈網路是怎麼運作:
我們可以看到在整個運作的環節,當大家想要做交易時,理論上每個礦工都看得到這筆交易,而大家都會維護同一個鏈,因此區塊鏈才常常被稱做去中心化的系統,除非有人能獨斷運算資源,不然這個系統是由大家一起維護的!
我們需要知道雖然每個節點都有相同的區塊鏈,但實際上大家拿到這個鏈的方法是透過其他節點的廣播! 你可以想像成,每個節點手上都有一個鏈,都在瘋狂的挖礦想要第一個將新的區塊添加到這個鏈上,第一個挖礦成功的會把這條新的鏈在網路上廣播,這時候收到廣播的節點們就會知道 x! 有人贏了!我要趕快更新這條鏈去挖下一個區塊。
怎麼知道是誰贏? 這個地方就是共識機制了! 這是一個需要大家遵守才能繼續玩的遊戲!
比特幣使用的共識機制是工作量證明(Proof of Work,PoW)。下面是比特幣的共識機制的主要步驟:
礦工選擇區塊->工作量證明->難度目標->找到證明->廣播和驗證->最長鏈原則
最長鏈原則:
當多個礦工在同一時間內找到不同的區塊時,將會有多個分支出現。根據最長鏈原則,節點會選擇加入最長的區塊鏈作為有效鏈,而其他分支將被棄用。這確保了整個網絡中的節點都接受最長鏈作為共識的區塊鏈。
工作量證明機制的主要目的是防止惡意節點對區塊鏈進行攻擊,因為攻擊者需要控制超過50%的網絡計算能力才能修改過去的區塊。這樣的攻擊成本非常高昂,使得比特幣網絡變得安全和可信。
簡單的理解就是在這個系統中,每個人都要有幾個共識:
1. 要解數學題才能添加區塊!
2. 必須承認系統裡最長的鏈就是主鏈!
解數學題這個動作就是在增加新增區塊的難度,避免有人隨便記帳,再來大家只認可符合特性的鏈,避免這個系統跑出一堆亂七八糟的鏈!
那今天我要怎麼確保不會有人亂記帳呢? 比如我在帳本隨便寫把A的錢轉給自己,或是我把這個錢同時轉給A和B!?
我們在上面(三)區塊鏈的運作中,可以看到有一步叫做區塊驗證,其中會驗證裡面交易的有效性,就包含了不能讓別人幫你提出交易也不能做雙重支付。
驗證交易的有效性通常涉及以下幾個步驟:
上面的驗證呢,其實就包含了加密學的知識,加密學因為有點複雜就不放在入門篇,各位只需要知道在區塊鏈的規則中,上面的驗證會確保你有足夠的錢做這筆交易而且是本人所提出! 由於這些驗證都是有時間順序,所以你也不需要擔心錢被重複使用,在驗證階段一定會擋掉!
但在這邊也有一個例外!所有的驗證其實都是透過其他節點做的,因此若是你能獨斷運算資源的話,你就能夠隨便記帳並且隨便驗證! 那這時候這個系統就崩壞了。
到這邊你會想問,所以比特幣扮演的腳色到底是什麼? 從運作的機制來看似乎根本不需要比特幣就能運行?
沒錯! 在大家都遵守遊戲規則下根本不需要比特幣! 就乖乖地遵循共識機制來記錄,但誰沒事會花費資源來幫你挖礦幫你驗證,因此比特幣設計的根本原因一個是為了補償運算資源,一個是為了要獎勵按照遊戲規則玩得玩家! 可以說中本聰設計的不只是系統,還有人性。
區塊鏈的獎勵制度有兩個!
獎勵機制使礦工願意投入計算資源和能源來驗證交易並保護區塊鏈的安全性。這也是比特幣區塊鏈的分散式共識機制的重要組成部分,這個機制甚至讓他不需要自己布置就會有人源源不絕的加入這個系統。
這時你就會發現,當使用了共識機制和獎勵機制後,區塊鏈就會變得難以攻破,原因有幾個:
但也不是絕對的! 大家都知道當你手中握有大部分的區塊鏈運算資源,你就能夠自己去維護主鏈,想怎麼記賬就怎麼記賬,但這個問題通常只會出現在規模小的鏈上面,鏈的規模越大就越難以集中資源,攻擊的的成本也會越高。
老實說, 就算區塊鏈有這個獎勵機制但誰又會真的想要呢? 所以與其說比特幣一開始的價值來自於礦工所付出的成本, 不如說是來自於當初那些人為了想要改變或相信這個生態的付出吧!
區塊鏈解決的問題在白皮書的摘要就寫得非常清楚,一個去中心化並且能解決雙重支付且可靠的點對點現金支付系統! 我們來用一些問題來幫助大家重新go through 一次區塊鏈!
Q: 如何進行點對點現金支付?
A: 那要建置一個網路廣播系統,這個系統能管理並記錄所有人的金錢交易,從而實現金錢轉移。
Q: 怎麼讓系統不需要第三方中心化的管理?
A: 這個系統不屬於任何人,任何人都可以存取和運行這個系統(分散式去中心化),但需要一套紀錄方法。
Q: 紀錄方法是什麼呢?
A: 使用共識機制(解數學題+驗證+最長鏈)來當作紀錄方法。
Q: 如何讓大家使用共識機制當記錄方法呢?
A: 使用獎勵機制(第一個挖出新區塊的人),只有按規則玩才能得到BTC獎勵。
Q:那我要怎麼知道有沒有人亂記帳呢(雙重支付)?
A:透過密碼學和區塊的可溯性確保每筆交易的合法性和正確性(交易驗證)。
Q:那我要怎麼知道這個系統會不會被人破壞?
A:除非有人握有大部分的算力或聯合搞破壞。
耗能
區塊鏈一開始最為人詬病的就是他的共識機制PoW,因為PoW就必續消耗運算資源來換取鏈上的安全性,這個動作就會非常地耗電,還記得念大學的時候學校都警告不要在宿舍挖礦XD。但近幾年也越來越多鏈採取PoS機制或其他機制,大幅的減少了耗能問題。
去中心化
再來就是是否真的去中心化? 大家普遍都知道挖礦很耗電很吃設備,因此不是普通人可以玩的,這也代表了其實負責維護鏈上安全性的人還是那些握有資源的少數人。就算區塊鏈的設計是去中心化的,但實際上還是被資本主義所掌控。現在流行的PoS機制其實有一定程度的消弭上面所說的問題,有機會再詳解。
套利攻擊
由於礦工這個腳色不管哪種共識機制都存在,大部分鏈的機制都可以給礦工小費來加速交易的進行,這個小費機制就足以讓聰明的人去做套利,因此大家可能聽說過MEV、滑價攻擊、流動性攻擊等,就是針對鏈上規則的漏洞來套利,不同鏈有不同的做法。目前Flashbot也致力於解決這些問題,雖然以前NFT Gas War的時候用他總感覺比較慢,但我也很期待這個項目日後的發展。
詐騙
詐騙可能是最常見的問題了XD 由於大家不懂區塊鏈的運作和規則,不了解項目的經濟模型或代幣價值,就會有很多人假借區塊鏈之名行詐騙之實,未來也會專門寫一篇關於如何避免詐騙(都是學費QQ)
所以在這個世界,我們一定要好好地了解他是怎麼運作的! 當你了解之後你就會發現原來真正的代幣經濟是這樣! 原來光靠程式設計可以達成這樣的效果! 這裡還是一個很新且待開發的世界,希望大家有時間都可以了解一看看XD