試玩Blockchain Demo:瞭解區塊鏈如何防止攻擊、挖礦電腦都在算什麼

許明恩 Astro Hsu

現役役男,台大電子所碩士。白天寫作訂閱內容「BlockTrend 區塊勢」,讓更多人看懂區塊鏈。晚上是在木柵出沒的英語導遊,喜歡買酒、喝茶、泡咖啡。今年目標是單車環島、爬玉山及泳渡日月潭。

Astro is a junior consultant, self-taught technology analyst, tour guide and ETH miner living in Taipei. He currently focuses on Blockchain, Artificial Intelligence and Industry 4.0.

對比特幣有興趣的人,應該都會發現關於比特幣的入門文章中,一開頭都會提到「共享帳本(ledger)」的概念;讓初學者藉由帳本的概念來想像區塊鏈,是目前最普遍的方法。

但是,我相信有很多人和我一樣,其實這輩子都還沒機會看過帳本長什麼樣子、用在哪裡、還有上面該記錄哪些資訊;當然,也就更難想像區塊鏈是如何運作的。

最近筆者發現一個叫做「Blockchain Demo」的網站,主要目的就是讓初學者一眼看懂「區塊鏈」是如何運作的。即使你不是技術人員,也能知道區塊上記錄著哪些資訊、如何防止被惡意篡改、以及挖礦的電腦上都在計算些什麼內容。

除此之外,你還可以像個駭客一樣,試著修改已經被記錄在區塊鏈上的資料,親身體驗需要花費多大的成本,才能篡改一台電腦上的區塊鏈紀錄、以及為什麼需要控制整個網路上過半的電腦運算能力,才可能成功攻擊區塊鏈。

理解區塊鏈如何運作之後,你就有能力自己判斷,用「共享帳本」來比喻區塊鏈是否合適。

接下來,我會把區塊鏈拆成「區塊」和「鏈」兩個部分來說明。

區塊:記錄交易資訊

加密交易資訊

區塊鏈上的每筆交易,都是經過加密運算後的一串亂數。使用亂數,是為了確保交易資訊在網路上的隱匿性,以避免因為每筆交易都在網路上完成,而被其他無關的人看光光。

「亂數」和「真實交易資訊」之間的關係,就像是「指紋」和「人」的關係一樣;每個人都有獨一無二的指紋,但是沒有人可以直接解讀一個陌生指紋,就知道它對應的人是誰。所以即使有人拿到亂數、又有電腦的輔助,也無法還原出這筆交易的內容,更遑論修改。

利用這個網頁上的服務,你輸入訊息(data)之後,網頁就會產生相對應的亂數(hash);只要訊息內容相同,亂數就會是一樣的。

工作量證明

之前提過,工作量證明就像是畢業證書,是個防止駭客惡意攻擊的防禦機制。

而在區塊鏈上的畢業證書,是一套檢查亂數的規則;例如區塊的寫入規則是檢查「亂數是否有『4個0』作為開頭」,只有符合規則的亂數,才是在這個區塊上合法運作的記錄。

電腦必須花時間運算、逐個嘗試成千上萬種不同可能,才能找到符合規則的亂數;規則越複雜,找到答案的難度就越高。概念和學生必須通過重重考驗,才能獲得畢業證書是一樣的。

在上述的網頁中輸入訊息之後,方框背景會由綠色轉為紅色;顯示紅色的原因,是亂數不符合區塊「以4個0為開頭」的寫入規則,而不符合規則的紀錄是無效(invalid)的。

因此,你必須點按「Mine」按鈕,讓電腦花點時間幫你找答案;找到答案之後,方框就會變回綠色,代表這筆交易可以被合法記錄在「區塊」上。

要改變一個區塊還算單純,但是要改變一串頭尾相連接的區塊「鏈」,就比較複雜了。

鏈:結合時間順序、共識機制的安全設計

時間順序:一條區塊鏈

區塊上除了紀錄交易資訊和區塊編號之外,還明確記錄了前一個區塊的運算結果,以作為排列先後順序的重要依據,並形成一條區塊「鏈」。

假設駭客要篡改3個小時前產生、編號「#377」區塊上的一筆交易記錄。除了#377區塊的亂數會跑掉,導致#377區塊整個失效、必須重新運算(Mine)來找到合法答案之外,還會讓後一個「#378」區塊也立即因為前一個區塊資料不同而失效。

此外,往後一整串彼此相連的區塊們也都會全部失效,必須逐個重新找出答案。這有點像是歹徒企圖侵入銀行結果警鈴大作,導致所有原本可以合法通關的指紋統統失效,必須重新建立指紋資料庫一樣,非常耗費時間與資源。

Gel nails first appeared in the U.S. in the early 1980s, Gel polish
but were met with limited success. At the time, Nail polish
the manufacturers of gel lights and the gel itself had not joined forces, Nail care
not yet recognizing the need to precisely match the intensity of the light to the photoinitiators in the gel.gel nail art
Nail techs and clients soon found out that ­using the wrong light or applying too much gel caused a burning sensation on the client’s fingertips.Nail care
Additionally, education on gel application was limited, leaving nail techs in the dark about the product, and home-use ­systems were introduced around the same time, damaging the reputation of salon-use systems by ­association. gel nail polish color set
By the end of the ‘80s, many companies had pulled their gel products from the market.
Nail gel

點按這裡實際體驗一下:凡是更改任何一個區塊內容,都會導致後面所有區塊因為亂數(hash)規則不符而變紅失效;這時候,你得從第一個紅色區塊開始重新「Mine」,逐個修改完一整條區塊鏈。

要改變一台電腦上的記錄還算單純;但要讓網路上的其他電腦,都跟自己電腦有一樣的區塊鏈記錄,那就麻煩了。

共識機制:區塊鏈們

在區塊鏈網路上,一條被修改過、又重新被Mine過的區塊鏈,是很容易被抓出來的;因為網路上的每一台相關電腦,都各自存有一份獨立且完整的區塊鏈原始記錄。

兩相對照之下,即使這份被修改過的區塊鏈顯示為綠色合法,但因為區塊鏈內容和其他電腦上的區塊鏈紀錄完全不同,就顯得非常突兀。

由於整個區塊鏈網路是以「多數決」原則,來判斷哪條區塊鏈是合法的,因此所有電腦會繼續在「最多人有共識」的那條合法區塊鏈,再串上新的區塊。

因此,即使駭客改了自己電腦上的區塊鏈紀錄,還得想辦法改掉網路上過半電腦的區塊鏈紀錄,才能讓修改結果被區塊鏈網路「表決」接受;這絕對是一項大工程,而且難度非常高。

點按這裡進入示範網頁,你可以試著修改「Peer A」、「Peer B」、或是「Peer C」三部電腦上的區塊鏈內容;除了被修改的區塊鏈會變紅失效之外,即使重新Mine過整條區塊鏈,也會和另外兩台電腦上的區塊鏈紀錄不相同。因此,其他電腦並不會承認這條「特立獨行」的區塊鏈;既然篡改紀錄不被承認,也就不會產生效果了。

加入帳本概念

在每筆交易資料中,至少都會包含付款人、收款人、金額這三項資訊,而且每個區塊的容量都可以記錄多筆交易;無論區塊上哪個欄位被更改,都會改變產生出來的亂數,導致亂數不符合規則且區塊失效。

另外,區塊鏈除了記錄每筆交易之外,還得計算每個人在付錢的時候,錢包裡是真的有錢;因此,區塊鏈會藉由區塊彼此串連的特性,往前追溯歷史交易紀錄。經過一些加減法,就可以迅速確認付款人是否真的有足夠的錢,可以付給其他人了。

到這裡為止,筆者已經把區塊鏈的主要設計介紹完畢;推薦你到Blockchain Demo網站動手玩玩看,或是直接看這部17分鐘的英文解說影片:

 


喜歡我們的文章嗎?按讚立即加入粉絲團 :)

獎勵作者

歡迎您以點數獎勵作者:

關於點數的獲得與使用方式,請參閱說明

  • Goldie Lin

    覺得 hash 翻成亂數 (random number) 怪怪,應該翻成 “雜湊” 比較好。