繼續故事之前,要先介紹什麼是『共識』?
小N對小D説:『小周的頭髮越來越少了』。小D驗證後也認同了這件事情,這時,小N與小D就對於『小周的頭髮越來越少了』這件事情達成『共識』。透過廣播與散播照片,就能更快讓更多人達成『共識』。
小田:故事裡說「A透過廣播跟大家說,『我是A,我給B十塊錢』」,廣播是指網路嗎?
沒錯,在區塊鏈中,廣播就是點對點網路(P2P,peer to peer),使用者利用P2P協定做網路溝通。當使用者要發送交易資訊時,就是透過這個點對點網路將交易資訊發送出去,同時也從這個網路中獲取其他人的交易資訊,並記錄在自己的帳本中,讓所有人達成共識。
分散式帳本換個說法,就是一種分散式檔案系統。
要讓一個分散式檔案系統可以正確運作,那就該討論CAP定理 。CAP定理中表明一個分散式檔案系統不可能同時滿足CAP三項要求。傳統的分散式資料庫都是要求CAP中的CP,當資料不一致時,犧牲可用性來確保使用者得到的訊息是正確與統一的結果。而區塊鏈則是滿足AP的分散式檔案系統。
小田:同步資料不會馬上完成,所以我從區塊鏈上拿到的交易資料有可能不對嗎?
雖說區塊鏈是滿足AP的分散式檔案系統,『即時一致性』這項要求似乎不被重視,但是區塊鏈依然滿足『最終一致性』。白話文的意思就是說,雖然當下大家的帳本不相同,但在網路暢通的情況下,最後大家的帳本還是會一模一樣。
試想,現今很多分散式檔案系統(Dropbox、Google drive等等),當資料正在同步時,你希望系統回應你:
你希望聽到哪種回答呢?很多時候,即時性是可以犧牲的。而這並不會影響最後大家的『共識』。
你使用比特幣時,有聽過『等十分鐘到一小時』、『等六個區塊確認』這些術語嗎?其實就是要等待網路所有人對這筆交易完成共識。
如果有一個人,一個禮拜不上網,那是不是要等上一個禮拜啊~
在現實的網路環境中(區塊鏈),有人一段時間不上網,再次上網後,第一步驟就是同步最新帳本資料。
所以是他自己追上來,而不是大家等他!