余林倚 賴宇昊 馬驍驍 孫雪 施運梅


摘要:近期關于區塊鏈的應用研究越來越多,一般都是區塊鏈在金融、物聯網等領域的應用研究,或是基于區塊鏈的安全的研究,經過調研沒有發現在國產化平臺上所構建的區塊鏈上開展研究的。本項目將探索在國產化平臺上搭建區塊鏈的方法,采用國產的龍芯機器作為實驗環境,基于以太坊構建區塊鏈,最后通過模擬挖礦驗證區塊鏈是否搭建成功。實驗證明,在國產的龍芯平臺上可以用以太坊構建區塊鏈系統。
關鍵詞:區塊鏈;以太坊;龍芯;挖礦
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2020)01-0025-02
前一段時日區塊鏈在網上頻頻引發熱議,吸引了眾多沒接觸過區塊鏈的網友的關注,然而區塊鏈并非一時興起,其源頭可追溯到十多年前。
2008年,中本聰首次提出了“比特幣”的概念,比特幣的底層記賬系統就是現在我們說的區塊鏈技術;這是以“比特幣”為代表的貨幣區塊鏈技術的區塊鏈1.0時代。
在2013年下半年,VitalikButerin提出了“以太坊”的概念;2014年,以太坊基金會成立,創建了以太坊項目;這是以“以太坊”為代表的合同區塊鏈技術的區塊鏈2.0時代。
在2015年,IBM聯手Linux基金會共同推動了區塊鏈領域的基礎項目——Hyperledger,也叫作超級賬本;2017年7月,由IBM領導的Fabric項目正式發布1.0版本,同年10月,百度金融加入Hyperledger項目,目前約有27個組織參與了Fabric項目并做出貢獻。這是以“fabric”為代表的企業級聯盟鏈區塊鏈技術的區塊鏈3.0時代。
前人栽樹,后人乘涼,以太坊和Hyperledger Fabric是兩個搭建區塊鏈最常用的平臺。據目前了解在互聯網領域內,使用國產芯片十分罕見,且沒有在區塊鏈國產化平臺上構建的,從而我們開始探索在國產化平臺上構建區塊鏈的方法。本篇文章將提出基于國產化平臺上區塊鏈的搭建及應用,調研國產處理器與區塊鏈技術的適配程度,采用恰當的區塊鏈技術在國產化平臺上部署區塊鏈環境。
1相關知識
1.1區塊鏈技術
圖1為區塊鏈結構。
區塊鏈由區塊鏈接組成,每個區塊包含一個區塊頭和一系列交易作為其負載。區塊主要由區塊頭部和區塊體組成,區塊頭主要包括:區塊號、區塊的哈希值、前一區塊的哈希值、時間戳、隨機數和Merkle樹根節點。區塊體中以Merkle樹形式存儲著每一筆交易記錄。區塊鏈就是基于網絡的、可以分散可信存儲、交換和訪問數據的管理系統。
區塊鏈不僅是一個數據結構,還包括可信數據存儲、交換和數據訪問的相關操作機制。區塊鏈可以看作是一種去中心化的數據管理系統,也可以看作是P2P網絡上的一類應用。使用區塊鏈需要區塊鏈環境的支撐,好的平臺會考慮區塊鏈平臺使用的安全性,那么基于fabric和基于以太坊是兩種構建區塊鏈不錯的方法。
(1)Hyperledger Fabric
Fabric是介于操作系統和區塊鏈之間的軟件,出身于Hy-perledger項目,由IBM主導,作為開源的區塊鏈實現平臺,它采用不可篡改的區塊鏈結構來保存數據、采用非對稱加密技術來進行身份識別與認證、支持智能合約等等。企業級的分布式賬本是它區別于其他區塊鏈實現平臺的特色,為跨越多個企業邊界的活動提供不可篡改的分布式記賬平臺。
Fabric的區塊鏈網絡在總體上分為Orderer及Peer兩類節點,當發起一個區塊鏈交易后,將此交易提交到Peer節點上,這些Peer節點在完成必要的交易驗證核實后,再將交易數據發送到一個或多個Orderer節點,經過Orderer節點特定的共識算法驗證篩選后,合格的交易被打包成一個區塊,廣播到整個Peer節點網絡中,成為持久化存儲的賬本。
(2)以太坊
以太坊是一個保存數字交易永久記錄的公共數據庫。這個數據庫不需要任何中央權威機構來維持和保護它,它以一個個體在不需要信任任何第三方或對方的情況下進行點對點交易的架構。
以太坊的整體架構分為三層:底層服務、核心層、頂層應用,各層結構相互協同又各司其職,共同組成一個完整的以大坊系統。
底層服務包含P2P網絡服務、LeveIDB數據庫、密碼學算法以及分片(sharding)優化等基礎服務。這些底層服務共同促使區塊鏈系統平穩地運行。
核心層包含區塊鏈、共識算法和以太坊虛擬機等核心元件,其以區塊鏈技術為主體,以共識算法為輔,并以EVM作為載體,這三部分是以太坊的核心組成部分。
這一層包括API接口、智能合約以及去中心化應用等,所有的智能合約都運行在EVM上,遠程調用,該層是最接近用戶的層。
1.2國產化平臺
我國國內CPU產業有龍芯、申威、飛騰、兆芯等。其中龍芯作為“國家隊”,堅持自主研發CPU,其產品線包括龍芯1號小CPU、龍芯2號中CPU和龍芯3號大CPU三個系列。
龍芯1號系列為32位低功耗、低成本,主要面向低端嵌入式和專用應用領域;龍芯2號主要面向工控和終端等領域;龍芯3號主要面向桌面和服務器等領域,這三個系列并行發展。目前龍芯3號系列產品主要包括龍芯3A1000、3A2000/3A1500I/382000、3A3000/383000幾款芯片。前三款封裝設計一致,3A3000/383000起可向下兼容其他主板。龍芯3號系列又分為A、B兩個系列,3A3000為面向桌面版本,用于臺式機或桌面機上;383000為面向服務器版本,用于服務器上,支持雙路及多路互連系統。
2國產化平臺上區塊鏈的構建
2.1環境準備
硬件平臺:內置龍芯cpu的臺式機
芯片規格:龍芯3A3000處理器,四核64位,支持MIPS64指令集、支持LISA64指令集
操作系統:Ubuntu 16
其他軟件:Go語言安裝包、以太坊安裝包
2.2構建方法
經過反復比對龍芯各型號cpu,本文選擇龍芯3A3000處理器。在初期,通過移植了mips版本的ubuntu系統,希望借助官方源完成搭建docker等fabric所需環境。后因為docker不支持mios版本系統,進行docker原生編譯,原生編譯過程中因為mios架構導致不兼容。后改用龍芯官方支持,通過loongnix系統yum服務器進行docker安裝,但在拉取docker hub上的fabric相關鏡像時,不支持zips架構,轉而放棄fabric,轉用以太坊進行搭建。
對于基于以太坊的區塊鏈構建,其層次結構如圖2所示,最底層是內置龍芯3A3000型號處理器的主機,在此基礎上裝有操作系統,龍芯cpu不支持Windows,但能使用Ubuntu,所以倒數第二是Linux系統;部署區塊鏈時需要以太坊作為中間件,所以以太坊環境作為第二層,區塊鏈為頂層。
在操作系統上構建以太坊環境需要安裝軟件Go-ethereum運行以太坊節點,簡稱Geth,Geth采用g0語言…,因此確保基礎環境包含go語言;如圖3所示,是通過Geth構建區塊鏈的方式,區塊鏈屬于以太坊的核心層,基于創世區塊生成根節點后,其他人就可以通過來連接此根節點進行交易,有了創始區塊作為根本,挖礦可以產生出其它的區塊。
2.3構建過程
go語言環境
搭建go語言環境用于支持以太坊客戶端,而loongson底層是mips架構,一般的dab包上不了,所以從源代碼開始編譯go環境,是以在X86平臺上先生成一個可在loongson平臺上使用包,再于loongson平臺上編譯。
以太坊環境
以太坊的搭建首先安裝軟件Geth,準備好創世區塊,初始化生成根節點,此后配好環境變量后便可啟動節點。
3區塊鏈測試
比特幣依托于區塊鏈,通過“挖礦”產生,從而我們在此利用“挖礦”實驗去測試區塊鏈環境在龍芯平臺上的構建是否成功。
挖礦測試中,挖到的礦就是比特幣。設置這樣一個應用場景,每挖出一個區塊獎勵5個幣,將默認的挖礦收益賬戶設置為accounts,記錄該賬戶挖礦前后資金進行比對,若滿足“賬戶初始金額+挖出的區塊數×5=挖礦后賬戶金額”,則說明挖礦成功,從而表明區塊鏈搭建方法可行,并證明了區塊鏈能在國產化平臺上使用。
經過測試,比特幣增量恰恰就是20,挖礦測試成功,區塊鏈技術能在國產化平臺上使用,且構建方法可行。
4結束語
目前對于區塊鏈的研究與使用廣泛基于比較普遍的機器諸如聯想、戴爾、惠普等計算機,內置的基本都是intel的cpu,也就是說針對區塊鏈的使用往往需要依賴于國外的技術,習總書記在網絡安全和信息化工作座談會上曾指出“如果核心元器件嚴重依賴外國,供應鏈的‘命門掌握在別人手里,就好比在別人的墻基上砌房子,再大再漂亮也可能經不起風雨,甚至會不堪一擊。”本文提出一種在龍芯國產化硬件平臺上基于以太坊的區塊鏈應用方案,研究過程從針對國產化硬件平臺進行調研,到在國產化硬件平臺上部署區塊鏈,用兩種不同的區塊鏈技術進行試驗,探索出在龍芯3A3000機器上構建區塊鏈的可行方案,最后通過模擬挖礦測試方案效果。現在區塊鏈在國產平臺領域中的應用尚處于探索磨合階段,存在硬件與技術不兼容的問題,希望本文能為區塊鏈在國產化平臺上的使用提供一些借鑒或靈感。
5致謝
由北京信息科技大學2019年人才培養質量提供經費(51019234001支持。
This work is supported by 2019 Talent—Development.