LINE區塊鏈實驗室代幣經濟平臺負責人Toshimasa Nasu終於揭露了自家區塊鏈平臺的技術架構,這也是先前LINK白皮書上沒說過的事。 (攝影/王宏仁)

不同於一般以區塊鏈技術為主的作法,LINE區塊鏈在設計之初就為了發展dApp區塊鏈應用而設計,LINE技術長朴懿彬更以服務導向的區塊鏈(Services-oriented Blockchain)來形容自家的區塊鏈技術LINK。她希望,LINK可以成為各種dApp區塊鏈應用或服務的大平臺,尤其以使用者貢獻內容的服務為主打。

早在9月,LINE就先發表了兩個示範性dApp應用,一個是問答平臺Wizball和未來預測票選服務4Cast。Wizball上線不到三個月,累積問題數已經接近3萬題,回答數也高達了11萬次。

LINE也在今年11月的東京開發日大會中,由LINE區塊鏈實驗室代幣經濟平臺負責人Toshimasa Nasu揭露了自家區塊鏈平臺架構。

Toshimasa Nasu指出,LINE想要實現的代幣經濟,就是要解決現有獎勵平臺、獎勵機制的問題。

例如,常見的獎勵平臺不一定能直接對使用者給予獎勵,有時反而是平臺獲益較大,另一個問題是這類系統非常複雜,資訊透明度也不夠高,例如服務供應商如何發放獎勵,承諾發放1百萬點是否完全發出?點數規則為何?過期與否如何追蹤?點數規則變動了,用戶如何得知?萬一點數規則不公平,用戶又何從對抗或抗議等問題,都是因為點數機制不夠透明所致。「因為點數平臺掌握在平臺供應商手上,沒有一套透明化的公開機制。」他解釋。

就連LINE自己已有一套非常成功的點數系統,光從2017年9月到2018年8月期間,已經發放了328億多個LINE Point點數,也有一套對應的商業模式,可以作為廣告行銷活動之用,也是LINE重要營收來源之一。不過,但Toshimasa Nasu認為,LINE Point平臺還不夠好,區塊鏈技術才會是獎勵機制未來更好的選擇,不但可以直接獎勵使用者,又容易在線上,或甚至是線下流通與交換。

LINK技術架構

LINE的區塊鏈稱為LINK區塊鏈,包括了三層架構,分散式應用的dApp層、中間給開發者用的LINK框架,以及實際的區塊鏈底層LINK Network。

LINE要打造兼具透明化和安全性的區塊鏈

因為區塊鏈可以記錄所有的點數,而且點數發放的歷史記錄可以開放給所有人讀取,所有的獎勵點數也可以由這個區塊鏈網路上所有的人共享,就算點數被偷了,透過區塊鏈技術很容易可以追蹤其下落,就算有人竄改點數記錄的資料,只要和歷史資料比對發現不一致,就可以揪出竄改的人。「透明化和安全是LINE選擇區塊鏈來打造代幣經濟的原因。」他說。

不過,現行的區塊鏈技術仍有不少上手使用的瓶頸,他解釋,對使用者來說,得要先建立錢包,並且要妥善保管那一串很難記憶的複雜私鑰,要探索有哪些相關服務也非常困難。而對開發者而言也有不小的挑戰,要兼顧安全又有擴充性的區塊鏈服務,需要深入了解技術,還要建立適當的資安量測機制。「這些都是LINK區塊鏈想要解決的挑戰。」

三層式LINK區塊鏈架構

也因此,LINE採取了三層式的LINK區塊鏈技術架構,第一層是去中心化的dApp應用層,也可說是服務層。第二層是一套可供開發者快速打造自家區塊鏈dApp應用的LINK框架,可以提供所需的常用API模組。最下層是LINK Network底層,也就是一般所謂的區塊鏈技術層,負責產生區塊,以及驗證交易時的區塊,核心是共識演算法和一套高度擴充性的架構。

LINK框架與底層運作架構

LINK框架中包含了開發dApp常用的元件,可以用來呼叫底層LINK Netwok進行區塊交易處理,LINK底層主要由負責共識驗證的C-Node節點和查詢專用的唯讀節點S-Node組成。

分散式dApp應用的核心是公開的智能合約

在第一層dApp層中,所有的dApps應用都是分散式的應用程式,這些應用部署在各自開發者或維運者的環境中,但這些dApp的核心必須使用來自LINK提供的智能合約(Smart Contract),來定義LINK點數交換的規則。換句話說,LINK智能合約就是dApp的核心業務邏輯機制。

而且,Toshimasa Nasu強調,dApp的智能合約必須公開,讓所有人可以看到。智能合約中也必須提供一些基本的資訊,包括服務商的錢包中持有多少點數,這些點數要如何提撥給用戶等規則。LINE目前也提供了一個線上區塊鏈資訊平臺LINK Scan,可以直接瀏覽所有的智能合約資訊,如4Cast和Wizball這兩個示範性dApp的合約都在站上公開可查詢。

LINE也提供了一套智能合約範本,可供開發者直接使用。開發者設計智能合約不需要專用的開發語言,可以使用Python就能設計,也能直接呼叫LINK框架來建立智能合約。

LINK框架可提供常用API,降低dApp開發門檻

而中間層的LINK框架,則是一套公開可用的API框架,提供多種不同的API模組,例如可用來檢查錢包帳目或區塊資訊的API,也可在使用者一登入dApp時,就自動建立錢包,並設計了一套私鑰安全保管機制,來降低區塊鏈應用的開發門檻。不過,LINE目前還沒完全對外開放dApp的上架。

目前LINK框架包括了LINK Scan UI元件、LINK Admin/TDK UI元件,這是兩個可供設計LINK區塊鏈資訊追蹤或管理介面的API元件,另在LINK API模組中則有區塊資料模組、連線模組、錢包模組、Replayer模組、前端API模組和查詢模組。開發者可以透過這些API就足以存取底層區塊鏈來進行交易或建立區塊,不過,Toshimasa Nasu表示,不一定非得透過LINK框架才能存取底層LINK區塊鏈,開發者也可自己串接底層區塊鏈的元件。LINK框架只是將dApp常用的API功能打包成一套框架。LINK框架也採用了API開發常見的gRPC和JSON-RPC協定。

「藉助dApp和LINK框架層的設計,我們想要創造一個用戶容易探索服務,服務商容易開發dApp應用的平臺,才稱其為服務導向的區塊鏈。」Toshimasa Nasu解釋。

LINK區塊鏈底層技術首度公開

進一步來看LINK區塊鏈的技術底層LINK Network,在LINK區塊鏈中,包括了區塊鏈本身,以及周邊的多種服務監控機制。LINK Chain採用了LINE的IMON監控系統,另外也採用了撐起每天2,500億則訊息的關鍵平臺Kafka來提供區塊鏈上所有區塊的探索和追蹤,也就是LINK Scan平臺,「這是確保LINK透明化的關鍵機制。」Toshimasa Nasu強調。

另一個LINK區塊鏈特別的設計是,Toshimasa Nasu指出,LINK利用區塊鏈技術來建立和驗證區塊,而區塊交易資訊則是記錄在LINE慣用的開源記憶體式資料庫Radis和分散式資料庫HBase中。

在區塊鏈的共識驗證架構上,LINK設計了兩種運算節點,一種是負責執行共識演算法的C-Node節點(Consensus-Node),所有區塊建立或驗證都是透過C-Node節點,另外會從C-Node節點中輪流指派特定節點擔任主要節點的角色,稱為C-Node Leader。C-Node節點叢集自有一套L7負載平衡機制來派送廣播訊息。

LINK另外還有一類節點,稱為S-Node(Sync-Node)。Toshimasa Nasu解釋,這是一般傳統區塊鏈沒有的節點類型,S-Node節點不是用來負責驗證或產生區塊的節點,而是專供查詢用途的唯讀節點,S-Node會自動同步取得C-Node完整的區塊資料副本,但只提供查詢而無法修改內容。

LINK設計參考了LINE過去提供大量即時通訊服務的經驗,訊息查詢的需求,遠高於訊息寫入的需求,而LINE團隊設計區塊鏈時,特別強調LINK區塊鏈的透明化設計,這類節點也是專供LINK Scan探索服務之用的節點,而不需要向C-Node驗證節點來查詢資訊,而影響了驗證節點的執行效能。

LINK區塊鏈主鏈與周邊服務

除了共識計算用的C-Node和查詢專用的S-Node節點之外,LINK區塊鏈也採用了自家IMON監控系統,以及撐起每天2,500億則訊息的關鍵平臺Kafka,來提供區塊鏈上所有區塊的探索和追蹤,區塊交易資訊則是記錄在LINE慣用的開源記憶體式資料庫Radis和分散式資料庫HBase中。

追求驗證速度,LINK採用PBFT共識演算法

在共識演算法上,LINK採用了1999年提出的實用拜占庭容錯演算法(Practical Byzantine Fault Tolerance,簡稱PBFT)。Toshimasa Nasu解釋,LINK優先考慮驗證速度,才選擇PBFT。這也是現在追求交易速度的區塊鏈技術,慣用的主流共識演算法之一。

在PBFT共識演算法中,會有兩種角色的驗證節點,Leader(主要節點)和Replica(副本節點),在LINK中,所有C-Node都可說是Replica節點,並從中指定一個C-Node擔任Leader節點的角色。

PBFT進行區塊共識計算時,分成三個階段,包括Pre Prepare預先預備階段、Prepare預備階段和Commit確定階段。首先,當有區塊交易需求的用戶(也就是dApp)先向Leader節點提出區塊交易需求,Leader節點就會進入Pre Prepare階段,先產生一個臨時區塊,並將這個區塊的資訊,廣播給所有副本節點。

接著就是進入Prepare階段,這就是區塊驗證的階段,每一個C-Node副本節點會確認這個區塊的建立過程是否正確,驗證確認後,這些C-Node再互相發送驗證確認的訊息,廣播給其他C-Node。

一般在PBFT演算法中,在一定時間內,一個C-Node收到全體驗證節點中的三分之二的C-Node節點送來的驗證確認訊息後,就可以將這個區塊視為最終的區塊,並且進入最後的Commit(確定)階段,這時,這批C-Node再度送出確定這是最終區塊的訊息,並再次廣播給其他人,同樣的,一個C-Node收到超過三分之二的節點送來「最終區塊」的確定通知,代表多數節點都同意(建立共識)這是定案的最終區塊,這就完成了整個PBFT共識計算,成功地建立了一個區塊,而這個共識計算中的「最終區塊」就是那個完成的正式區塊,各C-Node就可以將其記錄下視為是區塊鏈上的正式區塊。最後再由Leader節點,將這個正式區塊的訊息,回覆給提出區塊交易請求的用戶。

另有一個分散運算的設計是,LINK不會將主要節點集中在少數的C-Node上,「一旦這個Leader節點產生的區塊數,達到上限,或者是無法再產生節點(例如當機)後,就要換人擔任Leader節點,採取輪流擔任制。」Toshimasa Nasu解釋。

為了日後擴充所需,在C-Node內,也採取了模組化設計架構,包括了四大模組,用戶介面模組(支援REST和jsonRPC)、訊息佇列 (Message Queue)、網路介面(還細分成內部服務和外部服務),另外在C-Node內部Channel設計上,還分為LINK核心模組和LINK服務模組。

LINK核心包括了Peer管理機制(Peer Manager)、區塊管理機制(Peer Manager)、共識管理機制(Consensus Manager)和廣播管理機制(Broadcast Manager),而LINK服務模組則有基礎幣管理機制(Base Coin Manager)、STEP管理機制(STEP Manager)、治理管理機制(Governance Manager)和LINK合約管理機制(LINK Contract Manager)。

智能合約更新也採用PBFT共識演算法

不只區塊建立或交易是透過PBFT共識計算過程,在LINK中,智能合約的更新也是透過同樣的PBFT共識計算過程,但又與區塊的共識處理過程略有不同。

Toshimasa Nasu解釋,透過PBFT更新智能合約是LINK獨特的設計,首先只有在白名單中允許的dApp,可以直接將要更新的智能合約打包成一個壓縮檔,(不用先由Leader節點產生暫時區塊的作法),將合約檔送到C-Node進行共識計算,同樣經過三階段驗證(Pre Prepare、Prepare和Commit三階段),最後可以產生一個共同接受變更的新版智能合約。

不過,因為智能合約是一段程式碼,因此在Prepare驗證時,還得把壓縮後的合約解開,產生臨時性的智能合約和對應的執行環境,來進行區塊交易的合約試算驗證,速度上比原本區塊驗證還要多費上一番功夫。

他估計,等到LINK框架開放給所有人之後,就會進一步把LINK區塊鏈技術公開,讓第三方也可以自己建立一套LINK區塊鏈,也可以讓LINK區塊鏈成為一套聯盟鏈,有一個主要的根鏈(Root-Chain),同時也可以有多個子鏈(Leaf-Chain)架構。這個聯盟鏈的架構,Toshimasa Nasu稱其為LINEAR NETWORK。不過,在開發日大會上,LINE還沒有揭露子鏈如何與根鏈之間串連的機制細節。

LINK區塊鏈dApp運作流程剖析

開發者如何用LINK框架來執行dApp?打造dApp的管理者,要先用LINK框架建立管理者帳號,也同步就會建立了管理者錢包,接著是幫自家dApp註冊,同時也要建立這個dApp所要使用的智能合約,並付款來取得一批LINK幣(或提撥LINK幣),以供智能合約支付給使用者之用,管理者這時也會取得已付款的帳單。

另外,管理者需在管理者錢包中,設定一個可以存取錢包的白名單,目前也允許多位管理者帳號共同管理錢包和dApp。

除此之外,LINK框架還提供了「維運者」的角色,可以由管理者建立維運者資料,並有對應的維運者錢包和維運者錢包白名單。

使用者得使用自己的LINE帳號,才能登入各種dApp應用,這時LINE框架會自動建立使用者的錢包,當使用者在dApp上的活動符合獎勵規則時,例如在Wizball上發言可獲得LINK點數獎勵,就會由dApp進行LINK點數轉帳,透過LINK框架呼叫智能合約,並檢查這個dApp是否符合錢包的白名單(一個管理者錢包可供多個dApp共用),也同步檢查維運者錢包,最後再依據合約判斷要轉出多少LINK幣到使用者錢包中,或是否要分潤(或付費)多少LINK幣到維運者錢包中。

所有這些帳號管理、交易的記錄,都可透過LINK Scan UI元件來追蹤,開發者可以了解dApp呼叫LINK框架來存取LINK Network完成指令的每一個過程。

LINK發展藍圖首度公開

Line已經在8月上線了LINK的主鏈,Toshimasa Nasu表示,預計在12月底在內部上線LINEAR Network架構,以便在明年第一季時,可以開放第三方夥伴上傳各自的dApp,「明年第二季時,則會全面開放LINK的dApp給所有人。」這是LINE首度公開的LINK區塊鏈未來發展時程。

到了明年,dApp不只可以透過LINK框架存取底層鏈LINKEAR Network,也可以直接呼叫底層的節點功能,例如直接查詢S-Node上的資料,或者,dApp開發者也可以自己部署一套LINK子鏈的區塊鏈,讓dApp直接讀取子鏈上的資訊。

Toshimasa Nasu表示,目前LINK區塊鏈仍是一套部署在LINE內部的私有區塊鏈,來進行各種優化設計,一但完成優化之後,會把LINK底層區塊鏈技術公開。「LINK一定會開源,放到GitHub上釋出程式碼。」他強調,只是目前還沒有確切的時間表。

LINK將成聯盟鏈架構

LINK區塊鏈未來將成為一種聯盟鏈架構,dApp不只可以透過LINK框架存取底層鏈LINKEAR Network,也可以直接呼叫底層的節點功能,例如直接查詢S-Node上的資料,或者,等到LINK區塊鏈開源後,dApp開發者也可以自己部署一套LINK子鏈的區塊鏈,讓dApp直接讀取子鏈上的資訊。

相關報導:【代幣經濟生態系技術架構終於亮相】LINE的區塊鏈戰略為何不一樣?


Advertisement

更多 iThome相關內容