Noxed #1 徹頭徹尾瞭解 DEXON

首篇 Noxed 系列帶你瞭解「拜占庭協議」、「鏈上隨機數」與「原生代幣 DXN」。

DEXON 中文
DEXONZH
8 min readApr 2, 2019

--

我們的生活到處藏著許多看不見的演算法與程式碼,不論我們是否為開發者,程式碼正在影響著我們生活中的每個層面。每當我們掏出信用卡結帳時,只要確保有足夠的信用額度,就可以使支付暢行無阻。不可否認的,這些人們早以習以為常的科技的確帶給我們無限的便利。現在,有一個足以挑戰現今世界秩序的新科技正在經歷技術革命 — 區塊鏈。

讓我們來看看世界上最普及的金融科技:來自「傳統」世界的 VISA。VISA 是一家跨國的金融服務公司,平均每秒處理高達 4,000 筆全球電子資金轉帳。反觀目前區塊鏈世界的兩大龍頭,以太坊每秒只能處理 30 筆交易、比特幣每秒處理 7 筆。此外,透過比特幣或以太坊交易還需等待數分鐘到一小時的確認時間。顯然,區塊鏈目前在金融科技的應用上仍有待突破的瓶頸,但其技術本身並沒有因此而停下發展的腳步。目前,區塊鏈的應用範圍已經走出金融領域,逐漸與其它產業結合。

你或許會好奇,區塊鏈不就是虛擬貨幣而已嗎?其實不然。區塊鏈去中心化、不可篡改的特性,讓它能夠與各種產業結合,創造出原有產業做不到事情。其中,區塊鏈的「隨機性」就是一個關鍵性的因素。比方說,現在樂透開獎都必須實際把彩球放進機器裡,開獎成本高且開獎間隔長。如果利用區塊鏈去中心化的特性,加上智慧合約,就可以創造出線上樂透彩,投注方便而且可以塊塊開獎。

可惜的是,多數的區塊鏈項目並沒有在共識層設計隨機數機制。開發者目前多半仰賴第三方應用程式(例如 Oraclize)或根據未來區塊的雜湊值(Hash)來決定隨機數。但是,我們很難去驗證第三方提供的隨機數是否是根據標準產生。此外,這個第三方也有可能提前知道即將產生的隨機數。如此一來,在區塊鏈上的抽獎或賭博類型的應用程式極有可能會有不公平的現象。同樣地,區塊的雜湊值或時間仍然可能遭到惡意礦工操縱。比方說,礦工可以選擇保留一個有效的區塊來使隨機性產生偏誤,或者找到另一個區塊,並產生對自身有利的隨機性,這種情況同樣有著不公平的疑慮。

因此,DEXON 誕生了。

DEXON 是一個全新設計的區塊鏈技術,交易確認時間短、吞吐量高,而且具備鏈上隨機數 — 完美地解決現有區塊鏈面臨的難題。接下來,讓我們看看 DEXON 之所以可以實現這些願景的兩大關鍵技術吧!

1. 拜占庭協議 (Byzantine agreement)

DEXON 拜占庭協議 (Byzantine Agreement)

所有的區塊鏈共識演算法都會面臨一個問題:如何讓所有人對於區塊鏈的狀態達成共識?要解決這個問題,其中一個關鍵是:「如何決定每一塊是由誰負責出塊?」在 DEXON 之中,「拜占庭協議」是決定誰負責出塊,並且讓 DEXON 達成低延遲 (fast finality)、高吞吐量 (high throughput) 的核心技術。

在 DEXON 之中,有一小群獨特的節點被稱為「公證群 (notary set)」。公證群就像是一個議會一樣,負責投票決定誰可以出塊,而這個投票規則正是拜占庭協議。利用拜占庭協議來運行區塊鏈有一個很明顯的優勢:一旦透過拜占庭協議達成共識之後,獲選者出的塊就被唯一決定。

許多以最長鏈原則為基礎的區塊鏈 (像是比特幣或以太坊),出塊的確認僅是機率性的。也就是說,礦工算出一個區塊並接上主鏈之後,還不能確定這個區塊是否被確認,而需等待一段時間,直到後面有足夠多的區塊也接上來。而且,只要攻擊者算出另一條更長的鏈,較短的分支就不會繼續被接其它區塊。反之,DEXON 藉由拜占庭協議來決定出塊權,可以達成決定性的出塊確認。也就是說,一旦區塊經過公證群投票達成共識之後,這個區塊就被確認。如此一來,DEXON 的出塊時間會更快且更穩。

此外,我們的拜占庭協議具備「即時反應 (responsiveness)」的特性,也就是公證群的成員只要接到訊息就可以立即反應,不需等待任何的時間限制。如此一來,出塊時間就會只取決於當下的網路延遲,而非事先決定的系統參數。

2. 鏈上隨機數 (On-Chain Randomness)

DEXON 也具備了「可驗證的鏈上隨機數 (verifiable on-chain randomness)」。在 DEXON 之中,鏈上的每一塊都配有唯一一個隨機數供智慧合約使用。這個隨機數有兩大特性:第一,任何人,包括出塊者,都無法預測或改變隨機數的分佈;第二,所有使用者都可以驗證隨機數是否完全依照演算法來生成。能夠做到可驗證的鏈上隨機數的核心技術是「門檻簽章 (threshold signature)」。

DEXON 門檻簽章 (Threshold signature)

簡單來說,要執行一個 (n,t)-門檻簽章需要下列步驟:

  1. 假設我們想要針對 “m” 這個訊息加上簽章。
  2. 一個大小為 n 的群體會利用他們各自的私鑰分別對 m 簽出「部分簽章 (signature-share)」。
  3. 一旦有超過 t 的成員給出部分簽章,任何人都可以用這 t 個部分簽章組成唯一一個門檻簽章。

值得注意的是,無論是哪 t 的成員給出的部分簽章,最後都會組成相同一個門檻簽章。

那麼我們如何利用門檻簽章來做到鏈上隨機數?關鍵就在於門檻簽章的唯一性 (uniqueness) 和不可偽造性 (unforgeability) 讓門檻簽章成為一個「非常適合生成隨機數的種子」。如此一來,公證群的成員先針對區塊上的雜湊值 (block hash) 簽出部分簽章,並將結果公開出來。接著,只要有超過 t 個部分簽章被公開在網路上,大家就可以依此組成「區塊上雜湊值的門檻簽章」。最後,再將這個門檻簽章放進雜湊函數中,就成了專屬於這個區塊的隨機數。

總結而言,第 i 塊 (block i) 的隨機數可以表示成

3. DEXON 的原生幣:DXN

最後來聊聊如何賺取 DEXON 的原生幣:DXN!!!每當一個節點成功在拜占庭協議中獲得出塊權之後,有兩個來源可以獲得 DXN:

1. 交易費 (transaction fee)

2. 區塊獎勵 (block reward)

如前文所說,唯有公證群的成員有機會被選成出塊者,因此要贏取 DXN 的人,需要先「在區塊鏈上登記公鑰」並且「在鏈上儲存足夠多的 DXN」,成為公證群的候選者。如果你不是公證群的成員怎麼辦?別擔心。隨著 DEXON 的運作,每經過 3600 個區塊,公證群就會重新挑選,所有滿足條件的候選者都有「相等的機率」被選為下一輪公證群的成員。

至於公證群是怎麼被挑選的,我們將在之後的文章中逐漸為大家揭曉。

在下一篇文章中,我們將聚焦在掌控 DEXON 安全性的核心技術 — 拜占庭協議,其中包括:

  1. 什麼是「拜占庭將軍問題」?
  2. DEXON 的拜占庭協議如何達成「即時反應」?
  3. DEXON 如何達成「網路容錯 (partition-resilient)」?

Noxed 是什麼?

Noxed 是由 DEXON 基金會所製作的全新區塊鏈學習系列,我們將以文字、影片或圖像的方式來闡述 DEXON 的來龍去脈。如果你希望看到更多 DEXON 技術相關的主題,請在留言中告知我們。

立刻加入 DEXON 社群

「社群即是力量」,如果你想更了解 DEXON,或是加入 DEXON 社群成為社群管理員,歡迎加入我們!

Telegram discussions: https://t.me/dexon_foundation
Announcements: https://t.me/dexon_news
Scam alerts: https://t.me/dexon_scam_alerts

👩‍💻 Discord: https://discord.gg/WwZUTFj
👩‍💻 Github: https://github.com/dexon-foundation
👩‍💻 Reddit: https://www.reddit.com/r/DEXONFoundation/

👉 Twitter: https://twitter.com/dexonfoundation
👉 英文 Faceboook: https://www.facebook.com/DEXON.Foundation/
👉 中文 Faceboook: https://www.facebook.com/dexonchinese/
👉YouTube: https://www.youtube.com/channel/UCbg6l4M8QmSrJphxQvKof5g
👉 Medium: https://medium.com/dexon

--

--