區塊鏈(BlockChain)簡介

區塊鏈是瀏覽器或作業系統出現以來最複雜的科技,需要對密碼學、賽局理論、網路、資安、分散式系統、資料庫和系統程式設計有深入的了解。只有少數人具備哪種知識。

區塊鏈有著以下的核心概念,分別是:

  • Security
  • Trustless-ness(去信任化)
  • Decentralization(去中化的)
  • Distributed ledgers(分散式帳本)
  • Group consensus(集體共識)
  • Immutability(不變性)

如果要比較簡單話來描述區塊鏈,哪就是:

區塊是一種分散式的資料庫,一種資產所有權無法被變更的紀錄。

區塊鏈主要被定義為共享的不可變帳本,或者是“誰擁有什麼的不可更改的記錄”。帳本通常用於追蹤和管理資產所有權,但是區塊鏈可以是任何與所有類型資料的簡單記錄保存設備 — 無論這些資料是否與資產所有權有關。

區塊鏈由三種舊的技術所組成的,它們分別是:

  • 會計帳本 — 這可以追朔到七千年前。
  • 密碼學 — 這已存在了幾十年,至今仍然是資訊科技不可或缺的一部分。
  • 電腦網路技術 — 區塊鏈是P2P網路架構的一種延伸。

而區塊鏈的交易發生的流程如下:

  1. 在多個電腦節點前發佈公告。
  2. 每台電腦在自己的個人帳本副本中記錄公告的詳細資訊。
  3. 公告被組合在“block”中。 每台電腦都會定期嘗試將他們當前的block(區塊)與網路上所有其他電腦的當前區塊進行比較。
  4. 如果當前區塊存在一個大多數電腦都是一樣的版本,則該版本被認為是真實的。 任何與大多數電腦沒有相同資料的電腦將丟棄他們的副本,從另一台電腦那裡獲得一個副本,然後繼續運作。

資產(assets)與區塊鏈

資產是任何區塊鏈方案的關鍵組成部分。 資產只是我們保存記錄(records)的項目,在特定方案或use case的脈絡中“重要”的項目。 資產可以定義為任何需要所有權記錄"的東西。 這可以是貨幣、非貨幣或只有資料,例如健康記錄、活動門票、汽車所有權或專利。

區塊鏈最初是一個記錄保存系統,用於記錄比特幣和其他加密貨幣等數字“代幣(tokens)”或“硬幣(coins)”的轉移。 這些硬幣和代幣需要一種方法來保存所有權的記錄(record)。 出於創建數位所有權記錄的需求,於是區塊鏈誕生了。

區塊鏈為人們提供了一種安全可靠的方式來進行任何類型的交易,而無需信任另一方。 區塊鏈中的這個概念被稱為“去信任化” — — 只要交易中的每個參與者都可以信任帳本的準確性和完整性,他們之間就不需要額外的信任。

區塊鏈提供了一種廣泛分佈且經過peer-validated的數位不可變帳本。 至關重要的是,區塊鏈不需要貨幣才能正常運行,大多數企業級區塊鏈應用程式不需要特殊的貨幣、coins或tokens。

區塊鏈還可以用作事件追踪系統(event tracking system),其中公告(announcements)標示著重大事件的發生,並且可以通過使用智能合約/Chaincode使這些事件具有可行動性; 進行軟體開發來回應某些類型的這些events。通過使用智能合約/Chaincode來處理有意義的事件,區塊鏈也可以成為一個工作流程平台。

哪麼區塊鏈內的紀錄是不可變的嗎?
基本上紀錄只要產生了就不可能再變動,唯一的方式是再新增一筆資料抵銷上一筆紀錄。所以資料的整個變動歷史是可以被稽核的。

區塊鏈與加密貨幣

二次消費(Double spending)是數位貨幣中的一個潛在缺陷,其中同一個數位代幣(token)可能可以多次使用.因為數位代幣由可以複製或偽造的數位文件組成。 這個問題在嘗試建立去中心化貨幣時是很容易顯現出來的,區塊鏈卻可以解決了這個問題. 區塊鏈通過將交易放在一個區塊(block)中,驗證每筆交易,然後將這些區塊加到鏈(chain)中來解決這個問題。

而加密貨幣與法定貨幣有一些相似的特徵:

  • 持久性:這種貨幣是否能長期存在?
  • 可攜帶:這種貨幣是否易於移動和轉移?
  • 可分割:這種貨幣是否易於劃分為較小的子單元以進行小額支付和交易?
  • 可替代的:這種貨幣的每個單位的價值是否與任何其他單位相等?
  • 稀缺性:這種貨幣是否稀缺到足以賦予它有意義的價值?
  • 接受度:這種貨幣作為支付或償還債務的手段的接受程度如何?

區塊鏈是管理和控制比特幣網路的底層安全和記錄保存機制。 它只是一個記錄比特幣或其他資產在個人或實體之間轉移的帳本。 記錄保留在區塊鏈上,轉移的是基礎資產 .就是比特幣的“控制權或所有權”

為何要使用區塊鏈

區塊鏈中的一個主要概念是去中心化。 為了正確理解去中心化,認識中央集權式和分散式方法是有幫助的。 在我們檢視每種方法時,需要記住,每種新方法都不能替代之前的方法 — — 它們應該被視為解決方案設計工具箱中的附加工具。 換句話說,不能只因為我們買了一把螺絲起子就可以回家就扔掉所有的扳手; 每種方法都以獨特的不同方式提供價值,在一個解決方案的脈絡下使用多種方法是很常見的。

最老舊和最有名的系統架構方法是中央集權式。在中央集權式解決方案中,通常有解決方案的最高管理者,負責解決方案使用的資料以及交付解決方案的基礎架構。換句話說,解決方案的所有層級和組件都由中央集權式所擁有和管理。

下一種方法是分散式或雲端方法。在分散式解決方案中,“集中控制”、解決方案的“所有權”和組成解決方案的”資料“被保留。但是,”放棄“了提供解決方案的基礎架構的”所有權“。 Facebook 是分散式解決方案的一個很好的例子 — — 臉書擁有應用程序以及進入應用程序的資料,但 臉書在很大程度上放棄了基礎設施的所有權和管理,這些基礎設施將解決方案給雲端託管服務提供商,如AWS , Azure。

分散的方法消除了所有層級的集中所有權和控制權。在真正去中心化的解決方案中,解決方案及其資料在所有參與者之間共享,基礎設施可以由解決方案所有者共享或由整個社群提供。

區塊鏈的效益

與任何新事物一樣,區塊鏈在一些use case可以是正面的,但有些卻不是。 區塊鏈提供了許多效益,但也有缺點。 理解好與不好是我們將正確的技術應用於我們正在解決的問題上是至關重要的。 區塊鏈提供的效益是以犧牲“效率、速度和效能”為代價的,這一點非常重要。

就設計而言,區塊鏈是一種效率極低的解決方案。 然而,通過接受這些低效率,我們獲得了“安全性、冗餘性和大規模容錯”的效益。 對於那些在傳統 IT 領域工作過的人來說,接受這種低效率的方法可能感覺會很奇怪。 並且已經習慣於盡可能地清除低效率的事。

區塊鏈解決方案的效益包含:

  • 業務網路中組織之間的共享基礎架構:
    組織的業務系統是有關我們的組織中任何問題的唯一的真實來源,但是對於跨越我們組織的業務網路中的多個組織的流程,什麼是唯一的真實來源?
  • 可公開的驗證:
    對客戶和最終用戶負責(非允許制)
  • 安全的:
    控制誰在什麼時候看到什麼資料(允許制)
  • 質量保證:
    追蹤所有供應組件的來源,例如食品安全.
    智慧合約作為中間商營運商的替代品.
  • 降低交易成本
    去除中間人的交易成本
  • 代幣化:
    建立由真實世界價值支援的可交易代幣.
    部分資產所有權和資產數位化.裡如,在 1家麵包店擁有一個麵包,或一百家麵包店擁有個一個麵包.
  • 冗餘和高度容錯:
    分散式帳本是容錯的,因為如果一個節點沒有追蹤到帳本,它將保留在網路上的其他地方。 所謂的容錯,我們想成是群組訊息。 訊息中的每個人都有對話的副本,如果有人想在群聊中刪除某些內容,則需要在每個人的手機上將其刪除。 當有很多人參與時,容錯是有用的。
  • 為業務流程帶來清晰和透明
  • 沒有中央集權
  • 進入門檻低
  • 即時的全球交易能力
  • 沒有二次消費

區塊鏈的缺點

區塊鏈與任何其他技術沒有什麼不同 — — 它提供的效益也是有代價的。 必須適當考慮區塊鏈的一些缺點,以確定區塊鏈在整體解決方案架構中是否是一個好的選擇。

以下是區塊鏈的一些缺點:

  • 極度的沒有效率
  • 非常新的技術:
    技術一直在變/沒有非常/訓練有素的資源不多/訓練有素的資源成本高
  • 還沒有最佳實踐的做法或建議的模式
  • 低度的可擴展性、交易速度過慢,尤其是在公共平台上(例如比特幣)
  • 不是集中化的所有權,所以沒有單一的最高權限
  • 可能很難(甚至不可能)獲得解決方案及其資料的完整“上帝模式”視角
  • 許多平台和toolsets仍處於pre-production版本,可能還沒有準備好進行繁重的應用程式開發

只能夠加資料上去的帳本性質

我們聽到區塊鏈的描述時,會很常聽到區塊鏈構成“全球共享資料庫”的說法。 我們只要記住幾個主要區別,這就不是一個糟糕的類比。 資料庫有四個主要的操作或功能,通常稱為 CRUD(create/read/update/delete) 功能。而在區塊鏈中只有兩功能(create / read).所以這一種資料庫只有append only的操作.

而這樣的設計讓區塊鏈內的資料有著無法變動的特性存在,已經存在的資料既不能改也不能刪.如果要更改資料內容,只能再create一筆record來沖銷上一筆的資料.這種只能加資料的方法提供了區塊鏈解決方案中所有資料點的完整版本歷史記錄。

點對點(或稱對等)(Peer-to-Peer)

中央極權式和分散式系統架構解決方案通常採用client/server網路方式。 區塊鏈和去中心化應用程式平台在很大程度上放棄了client/server以採用點對點 (P2P) 方式。 在 P2P 網路中,所有節點或電腦都與其他所有節點或電腦相同。 沒有client也沒有server的單ㄧ角色,所有節點同時是cleint和servert。 這允許幾乎無限的容錯和內建failover能力,以及通過資料冗餘進行備份。 所有這些都以犧牲“效能和效率”為代價。

分散式網路與帳本

在區塊鏈中,帳本由Peer network來進行存儲、更新和維護。 這個網路中的每個節點都維護自己的帳本副本。 就帳本每次更新的內容達成共識是整個網路的工作。 這確保了帳本的每個單獨副本都是相同的,而不需要帳本的集中式的“官方”副本。

為何是一個分散式網路

如上面所講,我們從一開始就假設沒有參與者將要或必須相互信任。只要他們相信區塊鏈本身的完整性和準確性,他們就不必相互信任。下圖可用於表示區塊鏈網路。這張圖片上的每個點都是網絡上的一個節點或一個礦工,保存著漲本的副本。

我們可以想像一下,如果我們要嘗試攻擊這種網路架構,我們將沒有辦法做DoS或DDoS的攻擊。唯一的方法是讓每個節點(電腦)離線。如果你放大這張圖片,假設放大 10 倍或 100 倍(就是添加節點),我們可以看到這個網路變得多麼強大和安全。

節點可以根據自己的選擇上線和離線,並且整個網路是繼續無縫運行。當離線節點重新上線時,它可以簡單地與其他線上節點同步帳本的當前狀態。這允許區塊鏈沒有單點故障或依賴單一節點的問題。這使得區塊鏈(或是說 P2P的延伸 架構)成為網路連接是很差的或是電腦正常運行時間很短的場景的理想選擇 。

區塊鏈的型態

區塊鏈平台有公開(Public)或私有(Private)平台。 這兩種平台如何套用在我們的解決方案呢? 以下,我們將討論每種方法以及各自的優缺點。

為了正確描述區塊鏈解決方案,我們必須在討論中加入附加的術語。 可以根據以下三個指標來衡量和描述區塊鏈解決方案:

Public與Private
誰可以將資料寫入區塊鏈?Public區塊鏈允許公眾本身將資料添加到帳本中。 比特幣是Public區塊鏈網路的一個很好的例子 — — 沒有關於誰可以交易比特幣的規定或許可。 任何人都可以購買、出售或發送比特幣給其他任何人。 用於追踪非營利組織如何使用慈善捐款的區塊鏈的方案將是私有解決方案的一個很好的案例。 在這樣的方案中,只應允許非營利組織的指定人員共享詳細的說明如何分配和使用捐款的指標。

Open與Closed
誰可以從區塊鏈讀取資料?開放式(open)區塊鏈允許公眾本身使用所有帳本資料。 封閉的(Closed)區塊鏈試圖限制讀取。 比特幣是開放平台的一個很好的例子。 世界上任何人都可以使用區塊鏈瀏覽器查看任何比特幣交易的詳細資訊,無論他們是否是參與者。 封閉區塊鏈方案的一個例子可能是管理選舉的平台。

Permissoned與Permissionless
開放(Open)和公共(Public)的平台或解決方案幾乎不需要許可或是基於角色的acess。 此類平台被描述為無需權限平台,因為它們不具備追踪和管理身份以及隨後基於該身份定義和實施權限的能力。 這並不意味著我們不能在無需許可平台上建立許可解決方案,它只是意味著如果我們選擇這樣做,我們有責任設計和實施一種方法來追踪和管理身份並針對該身份獲取權限。

在設計方案時,確定需要哪種類型的區塊鏈的一個方式是確定是否所有參與者都被認為是平等的,或者某些參與者是否應該具有其他人沒有的能力或權限? 回答這個問題將有助於指導解決方案使用許可或無需許可的區塊鏈技術。

在規劃區塊鏈方案時,有一個可視化模型有時會有幫助的。 在制定方案時,請使用如下象限。 對於任何設想的場景,它適合以下模型的什麼地方? 換句話說,哪種組合最能描述我們想要的解決方案?

  • Public/ Open : 任何人都可以 write/read
  • Public / Closed : 任何人可以write, 但只有少數有權限的人可以read
  • Private/ Open : 只有少數有權限的人可以write, 任何人都可以read
  • Private / Closed : 只有少數有權限的人可以write / read

區塊是如何產生的

對於如何擷取區塊鏈上的區塊交易,以及隨後的驗證過程,我們將回顧交易記錄的產生、添加到區塊和使用群體共識(group consensus)進行驗證的過程。 這個過程是區塊鏈的核心,而這也是區塊鏈的主要步驟。

什麼是區塊(Block)

區塊鏈中的區塊的最簡單的比喻可能是考慮筆記本中的每一張紙。 想像一會議室中有一群人。 每個人都得到了一個相同的筆記本和一支筆。 任何時候交易記錄在帳本上,參與者都會站起來,向其他人宣布他們的交易。 然後其他將在他們的筆記本中記錄交易,每行一筆交易。

最終,筆記本中的整個頁面將被交易填滿。 此時,會議室中的人會將他們當前的這一張填滿資料的頁面與所有其他人一樣式持有的當前頁面進行比較。 如果全部的人有超過 50% 同意或共享的資料版本,則該資料被認為是真實的。 如果會議室中的人能夠找到大多數人共享的交易資料的版本,那麼會發生兩件事:

  1. 任何參與者他們的資料沒有跟大多數(超過50%)的參與者相同的話,就將丟棄他們的區塊(就是哪張記滿資料的頁面)並從大多數參與者那裡獲得一個新副本,從而使他們與其他參與者的資料重新同步。
  2. 一旦每個人都同步了,每個參與者將通過在一張頁面重新開始紀錄交易的這個過程。

區塊鏈中的一個區塊就像一張紙,在某種意義上,既不需要知道也不關心上面記錄的是什麼類型的資料。 紙張同樣可以很好地存儲財務資料、圖形、音樂、天氣等資料。類型迥異且彼此無關的資料點可以共存於一個區塊或一張紙上。 區塊或紙只是一個簡單的記錄保存設備。

在這個例子中,我們假設交易會被記錄,直到這張紙被填滿,然後這張紙被整個會議室的人驗證。 實際上,區塊是按計劃開採的。 想像與上面相同的場景,但在這個版本中,有一個計時器可能每隔幾秒就會發出一次告警聲。 當聲音響起時,會議室裡的人會比較他們的紙張中的紀錄。

群體共識

區塊鏈中需要熟悉的一個關鍵概念是群體共識。我們假設大多數參與者同意的事實就是事實。一個很好的例子是一名警察致力於破案。想像一下,我們就是那個警察。有一天,局長要我們調查一起銀行搶劫案。由於銀行被搶劫時我們不是有在場,因此我們不知道發生的事情的真相。然而,作為一名警察,我們的工作是試圖確定發生了什麼。所以,我們做了任何警察在這種情況下都會做的事情 — — 我們找到事件的目擊者並詢問他們看到了什麼。

我們詢問十名目擊者關於搶劫的事情。這十名目擊者中有七個告訴你事件的一個版本 — — 四名劫匪跑出銀行,跳上一輛紅色轎車,然後從銀行向北駛去。你的十個目擊者中有三個講述了一個完全不同的故事 — — 兩個劫匪跑出銀行,上了一輛白色的皮卡車,然後開車離開銀行向南行駛。

哪個版本是真的?作為一名警察,我們可能會相信大多數參與者講述的故事版本。當我們提供可疑描述時,我們很可能會描述四名乘坐紅色轎車向北行駛的劫匪。

同樣的原則在區塊鏈一樣被套用— — 事實是被大多數參與者同意的。

哪區塊之間如何鏈在一起呢?

為了將我們的工作表(區塊)連接在一起,我們將前一張紙中的資訊嵌入到最近經過驗證的新工作表中。在區塊鏈中,我們的一張紙等於一個區塊。將前一個區塊的資訊嵌入到現行資訊區塊中的行為稱為鏈接。因此,稱為區塊鏈(如下圖)。

今天,為了將區塊鏈接在一起,區塊中的所有資料都通過一個稱為“cryptographic hash”的特殊函數運行。cryptographic hash為特定輸入建立一個唯一的輸出或識別碼。

因此,根據輸入,每個區塊的hash值始終是唯一值,並且嘗試更改區塊中的資料將導致hash值或 ID 不再匹配鏈中下一個區塊上記錄的原始值。

要將資料區塊鏈接在一起,下一個區塊的標頭(header)包含前一個(已驗證)區塊的hash值。更改區塊鏈中任何區塊上的資料將導致完全不同的hash值,並且新的hash值將會跟下一個區塊的header中的hash值不匹配,從而破壞區塊鏈並使與更改位置相關的所有區塊無效。這使區塊鏈具有不變性(無法更改)的特性,並使其具有高度的抗審查性。

區塊的高度(height)是指鏈上的區塊數量。區塊高度是區塊上資料安全性的指標;更改任何區塊中的資料需要攻擊者更改每個後續的區塊。攻擊者必須改變的區塊越多,發起攻擊就越困難。

密碼學與雜湊(Hashing)

密碼學在區塊鏈中1被廣泛使用,以解決有關隱性問題,並確保資料的完整性,並協助群體共識的處理過程。 密碼學是研究如何在不相關的人或攻擊者存在的情況下安全地來回發送訊息。

區塊鏈支援代幣化模型,讓不同規模大小的組織能夠建立真正數位化的實體資產,提供部分所有權解決方案,並創造減少處理時間的機會,同時幫助消除不需要的交易中介者。

區塊鏈的一些主要效益是它利用了去中心化的基礎設施,是一個完全無需信任的環境,並通過密碼將所有"區塊"鏈接在一起提供了資料的不變性。 區塊鏈上的所有區塊都使用Merkle Tree進行索引。 Merkle Tree 是區塊內所有交易的輕量級數位指紋,用作區塊鏈的索引(index)。

雜湊

雜湊函數是一種單向函數,它將任何類型的資料作為輸入並將其轉換成一個具有唯一性的 20 位代碼。 例如,可以將字母“j”作為輸入,通過散列將其轉換為 20 位的代碼。 如果將字母更改為“a”,則 20 位代碼將完全不同。 如果輸入是一個 20 GB 的影音檔案,則生成的hash value仍然是一個完全唯一的 20 位代碼。 雜湊在區塊鏈中是必要的,因為區塊鏈需要不斷地將大量資料與網絡上的每個其他節點進行快速比較。

Merkle Tree

區塊鏈使用 Merkle tree來快速有效地驗證資料。 Merkle tree通過建立資料的root hash來匯總區塊中的整個資料集。 Root hash是通過重複hashing pairs的子節點對直到只剩下一個節點來找到的。 最後剩下的子節點稱為 Merkle root。

開採一個區塊

當電腦下載區塊鏈時,區塊鏈就會被分發。 這些電腦稱為節點。 當一個區塊被填滿時,它會通過群體共識進行驗證,然後才能添加到先前驗證的區塊鏈中。 有許多區塊鏈共識機制,但無論使用哪種共識類型,重要的是要注意鏈結上的區塊的所有交易資料被認為是可信的,並且由於群體共識對資料的驗證,鏈接的資料沒有被篡改。

群體共識是一種確保網路上的節點驗證交易並同意它們在帳本上的順序和存在的方式。 對於像加密貨幣這樣的應用程式,這個過程對於防止二次消費或其他無效資料被寫入底層帳本至關重要,底層賬本是所有交易的資料庫。

有了群體共識,就有適合不同情況的不同解決方案。 在決定使用特定的共識機制時,我們需要承擔機會成本(例如安全性、速度等)。 共識機制之間的主要區別在於它們委派和獎勵交易驗證的方式。 而大多數區塊鏈生態系統都混合了不同的共識機制,不需要只能有一種選擇。

當交易被廣播到整個區塊鏈網路時,需要時間來確認這些交易。這樣做是因為交易是由群體來驗證的。發起交易時,會將這個交易與其他未確認的交易一起發送到群組中。節點對這些交易進行分組,然後選擇要添加到鏈中的區塊。每個區塊通過包含來自前一個區塊的資料來鏈接,鏈中的區塊數是區塊高度(height)。如果要同時將兩個區塊添加到鏈中,則選擇具有較大區塊高度的鏈作為主鏈。

隨著時間的推移,區塊鏈會變得更加安全。如果確認的區塊越多,則意味著選擇不同鏈作為主鏈的機會會更小。

分叉是協定的變更。有兩種類型的分叉,硬分叉和軟分叉。硬分叉是資料不向後相容的分叉。這會導致建立一個新的區塊鏈。當資料向後兼容時會發生軟分叉,所以導致不會有新區塊鏈。

共識的類型

Proof of Work(工作證明)

比特幣通過稱為工作證明的驗證系統實現了拜占庭式的容錯(Byzantine Fault Tolerance)。在工作量證明的共識中,當一個區塊被驗證時,每個節點都競相解決一個猜謎遊戲問題來驗證資料區塊。這個問題是不是計算出來的,而是用隨機猜測的。節點被稱為礦工,每個礦工都試圖猜測一段稱為“nonce”的資料,用以驗證一個區塊。所有區塊資料加上當前猜測(nonce)然後通過加密hash來運作 — 如果猜測的結果與當前“難度”等級匹配(通常會呈現一個會導致一個變成零的固定數量),則礦工猜測正確答案。

這個難度由網路調整以對應負載並保持平均區塊開採的時間與平台定義的時間表一致。Nonce是與區塊資料相結合的隨機資料,它將產生與區塊鏈當前難度等級相匹配的hash output。任何認為自己有正確答案的礦工都會與所有其他礦工分享。礦工將使用 nonce 確認答案是否正確。使用他們的區塊資料來嘗試獲得與難度設定相匹配的結果。如果 51% 或更多的礦工同意提議的 nonce,則認為獲勝者的區塊上的交易是正確的,並且回答正確的礦工將獲得獎勵(獎勵以平台代幣形式提供)。如果大多數礦工不同意隨機數,則不會給予任何獎勵,並且由於沒有進行驗證,因此所執行的工作是"沉沒成本 — 就是猜測的工作是白做的。

任何沒有正確區塊資料的節點都將從相鄰節點複製經過驗證的區塊來進行協調。工作證明共識為每個節點準確與誠實地行為創造了賽局理論的激勵;任何不誠實的參與者都將在猜測nonce時產生實際成本(就是不會獲得任何獎勵)。

Proof of Stake(權益證明)

權益證明(PoW)是一種較新的區塊鏈共識系統,已被提議作為工作證明共識的替代方案,以克服 PoW 中的可擴展性和成本問題。權益證明消除了區塊驗證中的猜謎遊戲,因此挖礦不再需要強大且專業的硬體。這也大大降低了網路的耗能。權益證明共識使用一個系統,其中每個“驗證者(validator)"節點都給予或支付股份來進行驗證交易。當需要達成群體共識時,所有希望參與的驗證者節點都將資金鎖定在股權中。

選擇一個隨機節點並將該節點的區塊資料的hash值顯示給所有其他參與者。所有其他節點都押注區塊交易的有效性。如果大多數人同意所提議的區塊,則這個隨機節點將獲得獎勵,就像所有在該節點上下注的人一樣。如果多數人不同意,隨機節點則會失去他們的股權,沒有得到任何獎勵,並且再隨機選擇一個新節點來分享他們的區塊資料。而這能夠保持誠實且準確的賽局理論的激勵機制,只是改變了它的執行機制。這種共識的主要區別在於,在共識期間不進行任何計算,只有投注和任何類型的設備都可以投注,無論計算能力如何。

其他共識機制

Proof of Activity — — 是 PoW 和 PoS 的混合體。empty template block被開採(PoW),然後填滿資料後用 PoS 驗證的交易。

Proof of Burn — 將硬幣發送到無法檢索的地址來“燃燒”硬幣。燃燒的硬幣越多,被選中開採下一個區塊的機會就越大。

Proof of Capacity— 是硬碟空間當賭注。 “賭注”的空間越多,被選中開採下一個區塊的機率就越大。此處的共識算法會產生稱為“繪圖(plots)”的大型資料集,這些資料集會消耗存儲空間。

Proof of Elapsed Time— 由英特爾建立的,用於在其受信任的執行環境上運作。它類似於 PoW,但更節能。不過這需要對英特爾有信任,所以可以被視為中央集權。

Proof of Authority— 使用一組“authority”,這些“authority”是明確允許建立新區塊和保護區塊鏈的節點。這是 PoW 的替代品,但僅適用於私有區塊鏈。節點必須獲得成為validator/authority的權利。

區塊鏈 2.0與以太坊

當比特幣在 2009 年上線時,區塊鏈只不過是一個記錄保存方案,一個永久記錄資料以供將來能使用的地方。比特幣和其他僅提供存儲和檢索資料能力的平台通常被稱為“區塊鏈 1.0”平台。

2015 年,以太坊通過引入智慧合約的概念,引入了“區塊鏈 2.0”平台。開發人員在他們的交易中包含自定義的邏輯和規則的能力現在意味著區塊鏈可以做的不僅僅是資料存儲,它現在是一個成熟的應用程式開發平台。可以在交易資料所在的同一個平台上對業務流程進行建模和自動化。

今天,以太坊是使用最廣泛的區塊鏈平台之一。智慧合約,也稱為鏈碼(Chain code),是一種將規則和決策點編碼到區塊鏈上的交易和流程中的方法。對於那些具有開發背景的人來說,智慧合約可以被認為是傳統編碼術語中的一類。智慧合約直接發佈到區塊鏈中,並允許交易自動化並確保它們都遵循相同的規則。每個智慧合約及其執行的交易都以記錄(records)或交易(transactions)的形式存在於區塊鏈上。因此,智慧合約也作為區塊鏈上的永久實體存在 — — 這是在評估智慧合約作為潛在解決方案組件時要記住的一點。

而智慧合約提供:

  • 自治(Autonomy):任何人都可以開發智慧合約,不需要律師、經紀人或審計師等中介人
  • 備份:部署到其中的區塊鏈和智慧合約提供永久記錄,即使建立者不再從事該項業務,也可以進行審核、洞察和可追溯性
  • 效率:去除流程中介人/媒介通常會顯著提高流程效率
  • 準確性:用可執行的代碼代替人工中介可確保流程始終以相同的方式執行
  • 節省成本:更換中介人通常可以顯著降低成本

以太坊中的Gas

以太坊區塊鏈特有的是gas的概念。這個概念源於以太坊的開發人員對比特幣的限制,特別是其稱為比特幣腳本的開發語言。比特幣腳本的主要限制之一是無法在該語言中執行loops或迭代。

這嚴重限制了開發人員可以在比特幣腳本中創建的函數類型。這種限制是故意的 — — 比特幣的開發人員不想創建一種機制,讓惡意或缺乏經驗的開發人員可以將平台置於無限loop中。以太坊開發人員引入了 gas 的概念,以允許比特幣腳本中缺乏的功能,以便為開發人員提供圖靈完整的智慧合約開發語言,例如 Solidity 和 Viper。

Gas 只是用戶支付在以太坊區塊鏈上處理或驗證的交易成本的方式。 Gas 是給予所有礦工的單獨獎勵,獨立於共識挖礦的獎勵。 Gas 用於補償網路上所有節點記錄單個交易所產生的成本。以太坊區塊鏈上的每筆交易(寫入)都必須使用 gas 提交,任何未使用的 gas 都會退回給用戶。

從區塊鏈讀取資料不會被視為交易,因此不會產生 gas 成本。 Gas 的概念不僅支付了在其帳本副本上記錄交易的成本,而且還可以防止無限loop並關閉某些安全漏洞。無限loop將需要無限的gas,以及購買這個gas的無限資金。

一個函數(在智慧合約中)用盡 gas 將被終止,並且不會將退回給用戶。同樣重要的是,gas 的管理是在協議(protocol)層級處理的 — — 協議本身將從用戶的錢包中扣除以太幣,將其轉換為request的 gas 量,並在將其轉換回來後任何未使用到的 gas 退回到錢包。用戶不需要干預甚至不需要意識到這種情況的發生。這也意味著開發人員只需要在其功能中考慮交易的 gas 成本;他們無需擔心如何管理將以太幣轉換為 gas 以及將 gas 轉換回以太幣。

最後,計算處理交易所需的gas量是可能的,但一般的經驗法則是,智慧合約中的寫入操作越多,所需的gas就越多。 Gas 與 以太幣脫鉤,因此實際 Gas 價格成本保持不變,而 以太幣價格可能繼續波動。如果不使用以太坊區塊鏈,重要的是要確定一個人將如何實施他們自己的 gas/fee/incentive 系統,或者以其他方式補償節點記錄新的單個交易的行為。gas也與所執行的操作類型相關 — — 更複雜的操作將需要比簡單操作更多的gas。線上計算器,例如 Eth Gas Station,可幫助開發人員和架構師根據正在執行的操作估算 gas 成本。

區塊鏈的實行

比特幣使用區塊鏈來存儲金融交易,但資料可以是任何東西,從選舉中的投票到實體資產。 在考慮區塊鏈的實際使用時,這一點很重要。 眾所周知,區塊鏈是一個分散式、不可變、高度安全的資料庫,許多行業都可以利用區塊鏈提供透明度。 例如,區塊鏈技術可以改變投票的運作方式。 區塊鏈將允許選民 100% 確定他們的選票被計算在內。 一個好的案例將做兩件事之一:要嘛允許以前從未有過的新可能性,要嘛改進現有流程的某些方面。

區塊鏈有一些缺點,在嘗試實行時需要考良進去。從新的區塊鏈如何開始,到其使用源自暗網的污名。區塊鏈的建立也是一個謎,往往會讓人們感到緊張。 ICO(Initial Coin Offering — 首次代幣發行)/ITO((Initial Token Offering — 首次通證發行) 騙局以及認為區塊鏈只是加密貨幣的另一個名稱的誤解也是技術缺陷,但確實會影響區塊鏈本身的採用。

當今區塊鏈面臨的更切實挑戰包括區塊鏈技術仍在不斷變化和發展,最佳實踐和推薦的實施模式仍在形成中。訓練有素的資源並不多,因此訓練資源的成本很高。最後,可擴展性是區塊鏈的核心問題。區塊鏈將安全性置於速度之上。因此,需要高速交易速度的需求不適合區塊鏈。目前正在提出工作證明之外的不同群體共識方法,以克服當前的可擴展性限制。今天,大多數主要的公共區塊鏈能夠在全球範圍內每秒處理 10–20 筆交易。

在比較區塊鏈解決方案與傳統解決方案時,資料主權是另一個需要考慮的因素。在中央集權系統中,所有資料都歸系統所有者所有。在必須證明他們擁有和控制資料以及證明資料在哪裡存儲和不存儲在哪裡的情況下,區塊鏈可能不是一個好的方案(儘管私有區塊鏈在這裡仍然是一個可行的選擇)。

而區塊鏈中的交易時間非常長,但正在研究解決方案。 一種這樣的解決方案包括使用脫鏈交易來降低交易時間。

以下是一個流程圖來判斷區塊鏈是否適合我們目前的需求

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet