搖錢樹41:區塊鏈的定義
楊惟雯
世界經濟論壇(WEF)創辦人施瓦布(Klaus Schwab)說,區塊鏈(blockchain)將帶動繼蒸汽機、電力和電腦發明而來的第四次工業革命;俄羅斯聯邦儲蓄銀行副主席夏洛夫(Andrey Sharov)預言,區塊鏈技術會讓銀行在10年內消失!
一、什麼是「區塊鏈」?
區塊鏈是一種改變「記帳」方式的新技術,它讓交易中每個節點的每一筆帳,都能透明、省錢又安全地被紀錄。因此,區塊鏈的正式名稱是「分散式帳本技術」(distributed ledger technology)。
從技術角度看,它是使用密碼學方法產生的一連串相關聯資料塊鏈接,每一個資料塊中累積了前幾次網路交易的資訊,用於驗證其資訊的有效性(防偽)和生成下一個資料塊。
易言之,區塊鏈是集成多種技術,形成了一種新的資料記錄、存儲和發表的方式。也是一個分散式帳本,是運用分散式資料庫識別、傳播和記載資訊的智慧化網路應用,未來它有可能改變人類的所有交易行為。
再從運用模式來看,區塊鏈是一種通過去中心化、去信任的方式,集體維護一個可靠資料庫的技術方案。
其中,“區塊”內含有一個特殊的資訊就是時間戳記。這些含有時間戳記的區塊彼此互連,形成所謂的“區塊鏈”。
再從安全性上來看,區塊鏈幾乎是不可能被更改的分散式資料庫,這裡的“分散式”不僅體現為資料的分散式存儲,也體現為資料的分散式記錄(即由系統參與者共同維護)。
此概念於2008年在「中本聰」的白皮書中提出(雖然韓人喜歡吹「中本聰」是韓人),在隨後一年當比特幣網路開始應用,中本聰實現了第一個區塊,即“創世區塊”。
綜合以上視角來看,區塊鏈具有以下的特徵:
1、開放,共識
◆任何人都可以參與到區塊鏈網路,每一台設備都能作為一個節點,每個節點都允許獲得一份完整的資料庫拷貝。
◆節點間基於一套共識機制,通過競爭計算共同維護整個區塊鏈。
◆任一節點失效,其餘節點仍能正常工作。
2、去中心,去信任
◆區塊鏈由眾多節點共同組成一個端到端的網路,不存在中心化的設備和管理機構。
◆節點之間資料交換通過數位簽章技術進行驗證,無需互相信任,只要按照系統既定的規則進行,節點之間不能也無法欺騙其它節點。
3、交易透明,雙方匿名
◆區塊鏈的運行規則是公開透明的,所有的資料資訊也是公開的,因此每一筆交易都對所有節點可見。
◆由於節點與節點之間是去信任的,因此節點之間無需公開身份,每個參與的節點都是匿名的。
4、不可篡改,可追溯
◆單個甚至多個節點對資料庫的修改無法影響其他節點的資料庫,除非能控制整個網路中超過51%的節點同時修改,這幾乎不可能發生。
◆區塊鏈中的每一筆交易都通過密碼學方法與相鄰兩個區塊串聯,因此可以追溯到任何一筆交易的前世今生。
總之,區塊鏈在網路上是公開的,可以在每一個離線比特幣<錢包>資料塊中查詢。比特幣<錢包>的功能依賴于與區塊鏈的確認,一次有效檢驗稱為一次確認。通常一次交易要獲得數個確認才能進行。羽量級比特幣錢包使用線上確認,即不會下載區塊鏈資料到設備存儲中。
即便比特幣的眾多競爭幣(如以太幣等)也使用同樣的設計,只是在工作量證明上和演算法上略有不同。如採用權益證明和SCrypt演算法…等等。
二、區塊鏈相關技術名詞的定義
(一)比特幣是甚麼?
(一)比特幣的運作方式和原理
探討區塊鏈的興起,我們必須先了解比特幣的運作方式和原理。
比特幣是一種全球通用的線上支付系統和加密網際網路貨幣,它是經由一種稱為「挖礦」的密碼技術產生,參與者貢獻他們的計算能力處理交易驗證,並記錄到公開帳本中,且獲取比特幣作為報酬。
易言之,比特幣也是種新型態的交易模式及數位資產,讓參與者樂於貢獻出CPU的運算能力,運行一個特殊軟件來做一名“挖礦工”,這促成一個網絡共同來維持區域鏈,而這個過程中會生成新貨幣。
◆交易過程中,參與者在這個網絡上競速,運行這個特殊軟件,來爭相破解不可逆密碼難題,這些難題包括好幾個交易數據。
◆第一個解決難題的“礦工”會得到50比特幣獎勵,相關交易區域會加入鏈條。
◆隨著“礦工”數量的增加,每個謎題的困難程度也隨之提高,這使每個交易區的比特幣生產率維持約在10分鐘一枚。
◆此外,每達到21萬個區域,獎勵就減半,從50比特幣減到25,再從25到12.5,一直持續下去。
◆如果這樣到2140年,比特幣將達到預定的2100萬枚上限。
基本上,比特幣網路想成功建立出一個去中心化、安全、可追蹤交易的虛擬支付系統。而比特幣使用者可利用電腦、手機、平板上的電子錢包軟體來進行比特幣的交易。
但2009年1月比特幣網路正式上線後,由於比特幣缺乏法定監管的機制,且比特幣基本上屬於匿名交易,所以常被用於地下經濟,成為不法分子洗錢或黑市買賣的管道,加上比特幣的價格波動十分不穩定,較不具價值儲存等功能,故目前非大眾普遍接受的交易媒介。
(二)區塊鏈的原理是甚麼?
簡言之,區塊鏈是一個分散式的帳本系統,參與者採用密碼技術(共識演算法) 集體維護一個具時序性的帳本系統,來確保交易的正確性,不同的區塊鏈技術採用不同的共識機制。
其中,每一個區塊網路之參與者(礦工)都是一個節點,一套完整的帳本因為這些節點而得以保存,帳本中記錄了所有的歷史帳戶訊息,任何一個節點需要發起一個交易行為都需要將交易行為訊息傳遞到區塊網路中的其他每一個節點中,如此可以確保此保存於所有節點上的帳本能精確地更新且驗證這一筆交易行為。
基本上,區塊鏈可視為一個公開的帳本,它有以下特性:
1.網路上的各節點都有完整的帳本備份
2.帳本裡,存在比特幣從誕生到現在的所有交易紀錄
3.帳本本身以區塊紀錄,每個區塊包含一部分的交易,而每個區塊記著前面區塊的id,形成一種鍊狀的資料結構,所以稱之為區塊鏈
4.當某一個節點要發起交易時,會先將交易廣播給其他節點,此時所有節點都可以經由共識演算法來決定誰可以驗證這筆交易,也就是”解題”,之後就有礦工幫你的交易訊息包成一個新的區塊送上區塊鏈,此時交易完成 (blockchain.info可以看到區塊的即時訊息)
5.其中一個節點先解出題目時,便由該節點將驗證過的交易寫進區塊鏈中,並廣播通知其他節點。而資料一旦被寫進區塊鏈之中,便無法再被竄改
6.每個比特幣帳戶都有公鑰跟私鑰,發起交易時只需要用私鑰簽名,然後礦工用公鑰檢查簽名即可
7.若你帳戶中的比特幣餘額不夠,只需要回溯整個帳本的交易紀錄就可以察覺有異並且取消交易
(三)挖礦
最古老的區塊鏈共識機制是由一種稱為挖礦的過程產生,目的是決定記帳權共識:確認交易並把交易納入區塊鏈之中。挖礦的過程能確保區塊鏈時間順序的正確、保護網路的中立性。
有待確認的交易資料會被打包至某個區塊之中,而為了防止區塊被惡意篡改,區塊必須滿足一項非常嚴格的密碼學規則,隨意篡改的區塊會因為不符規則都變得無效,藉由這個機制,沒有一個人能控制區塊鏈中能包含哪些交易,或是任意更動區塊鏈的某一部份。
Andreas M. Antonopoulos的精通比特幣一書中對挖礦有很好的比喻,我們可以把挖礦想像為一個大規模的多人數獨遊戲。
關於數獨,相傳源起於拉丁方陣(Latin Square),美國開始發展數獨於1970年代,並改名為數字拼圖(Number Place),數獨遊戲開始發揚光大是因為之後流傳至日本,以數學智力遊戲智力拚圖遊戲發表。
數獨玩法:在9×9格的九宮格中或者有9個3×3格的小九宮格,並提供17個以上的數字。根據這些數字,在其它空格上填入1到9的數字。但每個數字在每個小九宮格內只能出現一次,每個數字在每行、每列也只能出現一次。 數獨與數字運算無關。雖然看似簡單,但數字排列方式卻千變萬化,所以許多教育者認為數獨是鍛煉腦筋的好遊戲。
一旦有人解出答案,這個數獨遊戲會根據解出所花的速度自動地調整困難度,若太快被解出則增加難度,若太慢被解出則降低難度,使得每次遊戲需要大約10分鐘被解出。一個幾千行乘幾千列的數獨,就需要很多時間才能被解出。一個已經近乎被完成的數獨,則可以很快地被驗證。這每十分鐘 advance 一次state 的state machine,用算法、算力保護的state machine,自然形成強大的trust machine,是區塊鏈的最重要創新點。所以,區塊鏈的關鍵就是這個state machine(trust machine),而非應用層面的database 或 p2p network觀點。
(四)地址 (address)
在一筆交易中,我們只會看到收款對象的地址,一個收款者能夠擁有不只一個地址,也就是說,地址與收款者並無法做到準確的對應。
每筆交易的付款與收款對象均可以有一個或多個,由於我們無法得知這些對象實際上是否為同一人,故能達成基本的匿名性。
相對於傳統中心化機構(如銀行)的會員申請,區塊鏈要產生一個地址是相對容易很多的,只要符合一定的格式,都會被網路所接受。
地址的產生,是私鑰透過一連串的雜湊函式產生。地址是透過由SHA256 與 RIPEMD160 所組成的雜湊函式。
通常一個512位元的公鑰將會先由此雜湊函式轉換為160位元後,再編碼為地址,因此轉換途徑依序為私鑰、公鑰以及地址,僅由後者是難以回推出前者的。
此地址可用於收取別人轉交給你的財產,擁有此地址相對應的公鑰與私鑰,便可以再把裡頭的財產轉出。
(五)私鑰 (private key)
私鑰可以用來管控相對地址的所有資產,從資產的傳送到交換,都需要用私鑰來簽名認證。私鑰基本上可以寫作256位元的二進位數,所有符合此一格式的私鑰約有 2 的 256 次方個,寫成十進位的話有足足78位數,所以只要隨機程度足夠,是非常不容易跟別人相同的。要產生一個隨機程度足夠的私鑰,最簡單的方法是丟一枚硬幣,人頭取1,字面取0,這樣一直丟個256次,就會得到一組跟其他人不一樣的私鑰。從私鑰到地址的過程中,私鑰會先透過一個橢圓曲線加密的對應函數得到一個長度為512位元的公鑰。
(六)公鑰 (public key)
公鑰最主要的功能,為驗證財產的擁有權。每筆交易中需要轉出任一財產的時候,須提出公鑰以認證該財產擁有權,並以私鑰對整筆交易簽名認證,用以確定財產擁有者同意此一財產的轉出。
當礦工在驗證交易時,會檢查該公鑰是否配對於該財產,也即要能與該資產的地址對應,並同時檢查此一簽名是否屬於該擁有者。雖然私鑰僅能單向轉換成公鑰,但由於公鑰對私鑰而言,公鑰是取得私鑰的最後一道防線,所以我們會希望公鑰盡可能不要太常出現在公開的區塊鏈上,而在轉出財產的時候一定需要公鑰來驗證,所以我們只保護收入端所顯示的公鑰。在收入財產的部分,我們再對公鑰做一層的雜湊函式,用以保護公鑰,此一雜湊函式的輸出即為地址。
留言列表