- 區塊鏈財稅管理與Corda開發指南
- 偶瑞軍
- 5297字
- 2019-03-28 10:04:58
1.2 技術理解
1.2.1 區塊鏈和分布式賬本架構的組成
區塊鏈與分布式賬本在技術架構上分為以下幾個部分:
? 賬本:記錄交易和權益歸屬。
? P2P協議:節點之間的網絡通信協議。
? 共識算法:用來保障不同節點的賬本是一致的。
? 激勵:權益的應用方式。
? 合約:以程序代碼達成交易的機制。
? 應用:面向場景的應用功能實現。
1.賬本
每個區塊鏈和分布式賬本的節點都持有一份自己認可的賬本。賬本就是記錄若干交易和賬戶狀態的數據集合,也可以理解為賬本數據庫。但是要注意,與分布式數據庫相比,區塊鏈和分布式賬本有幾個不同的要點:
(1)在數據庫內,區塊鏈與分布式賬本的每條交易記錄之間都具有鎖定關系,一般是嚴格按照時間先后順序鎖定的,而普通的數據庫記錄之間則沒有這種鎖定關系,可以設置索引,按不同的索引規則任意排序,其中任何一條記錄刪除后,按索引會重新排序。
(2)在數據特點方面,區塊鏈與分布式賬本記錄的數據完全是具有交易特征和賬戶狀態的數據,就是說任何一條記錄一定會體現某種權益的交割和狀態變化。而普通的數據庫,無論是結構化的還是非結構化的,都可以存儲任何數據。
(3)在數據庫之間,普通的分布式數據庫中的數據的同步是分數據庫向主數據庫看齊。而區塊鏈和分布式賬本則是依據共識算法的規則進行驗證,通過驗證則自己認可,記入自己的賬本;驗證不通過的,丟棄,不記入自己的賬本。也就是說,在區塊鏈和分布式賬本中不是像其他數據庫看齊,而是向共識規則看齊。
2.對等網絡與P2P協議
這是非常非常底層和基礎的部分,事實上包括眾多區塊鏈平臺的開發者在內,在這一部分可以設計的余地都不大,都是選擇不同的對等網絡特性和P2P協議參數。因為我們的網絡基礎標準是固定的,所以在此基礎上設計、修改的余地不大,而且一般研發者和設計者不需要,他們也沒有實力在這一層次做出獨特的設計和修改。讀者只需要知道,區塊鏈與分布式賬本建立在對等網絡的基礎上,不同的區塊鏈和分布式賬本架構,根據自己的架構設計面向的方向,均已選擇好適合的對等網絡、P2P協議及相關參數。
3.共識算法
共識算法是區塊鏈和分布式賬本最具特色的部分,如果一個系統沒有共識算法,那么就不能稱為區塊鏈或是分布式賬本系統。共識算法的基本功能是保持賬本的一致性和唯一性,是在眾多節點發起的眾多交易中確定賬本的下一筆交易的下一個塊應該是哪個。雖然實現記賬一致是共識算法的基本功能,但是因為是處在對等網絡環境和點對點記賬中,所以共識算法往往還需要考慮安全性和經濟模型。安全性是指在遭受惡意記賬攻擊和雙重花費的情況下,能夠識別和抵御;經濟模型用來處置整個區塊鏈生態中的資源分配優化問題。當前幾種比較主要的共識算法有POW、POS、DPOS及各類BFT。筆者針對財稅這種涉及公共管理的場景設計了EPOS共識算法,即擴展權益證明共識,在本書后面的章節有專門的介紹。
4.激勵
激勵是區塊鏈和分布式賬本系統對參與并產生貢獻者的獎勵,是以區塊鏈系統獨特的技術優勢形成的一種資源優化配置機制。例如在比特幣系統中,眾多節點通過POW共識算法隨機篩選出下一個具有記賬權的節點,被選出的節點因為貢獻了計算資源,所以獲得系統共識算法自動分配的比特幣獎勵,這可以稱為算力激勵。對于其他節點而言,雖然在此輪計算中沒有獲得記賬權,但是因為POW的隨機性,使得所有參與節點都不斷有機會獲得記賬權,從而形成回報。
5.合約
合約以及智能合約是在區塊鏈和分布式賬本系統中自動處理不同交易方的權益交易的程序。合約和智能合約有幾個主要特征:
(1)至少包含了兩個參與方,產生了有條件的交易,發生了與交易權責對應的權益交割。如果僅僅是使用計算機程序就達成某一條件自動執行某一程序,這不算是合約和智能合約。
(2)合約以及智能合約是完全在無人參與的情況下達成的,合約的條件和要交割的權益,需要計算機可準確判斷和識別的對象,否則就需要有人參與。
(3)最重要的一點,部署合約和智能合約需要在該應用場景和生態中認可代碼即法律,否則無意義。而財稅場景的特殊之處在于,這個場景的各種業務絕大多數涉及各種現行的傳統的行政政策法規,如何做好銜接、平滑過渡和發展到能完全發揮出區塊鏈的潛力,是額外的工作。
6.應用
區塊鏈和分布式賬本的不同節點代表不同的主體,而對于任何一個主體而言,為了這個主體內部節點與其他各種業務系統的配合,所對應的節點程序必須又是一個小的中心化系統,即以節點為中心。區塊鏈中的應用程序不管是Web應用程序還是手機應用程序,或是其他應用程序,都與現有的應用程序完全相同,這里不再展開敘述。所以,單從應用程序來看,可能不太容易發現后臺支撐是否涉及了區塊鏈。
1.2.2 五種非常有用的加密算法
區塊鏈和分布式賬本技術帶來了加密經濟模式。所以對加密技術的使用是必不可少的,我們先對財稅領域涉及的幾種有價值的加密技術做介紹。
1.哈希算法
哈希算法又稱摘要算法,其功能是把一段對象數據轉換為一個固定長度的數據串,其特點是如果你的原文發生了一點改變,那么哈希值就會跟著變,這個可以用來鎖定文件內容并校驗內容是否有修改。其另外一個功能是為其他算法簡化對象原文數據。
2.對稱加密算法
對稱加密算法使用一個密鑰對一段對象數據進行加密,解密使用同一密鑰,所以密鑰的保管非常重要。
3.非對稱加密算法
非對稱加密算法的密鑰成對生成,一個用于加密,另外一個用于解密。其中一個密鑰屬于私鑰,永久不公開,另外一個屬于公鑰,完全公開。因為是密鑰對,所以當你用私鑰加密某一信息時,其他任何人都可以用你的公鑰解開,能用你的公鑰解開就代表是你做的加密,這就是數字簽名,這是一種電子簽名的技術機制,可實現不可抵賴性。所以在技術范疇內,公鑰代表身份,私鑰代表操作權。通過該算法可以實現匿名性。在現實社會的公共事務中,配合電子簽名法可產生相應法律效力。對于任一主體,其私鑰、公鑰與實體法人或者自然人具有對應關系,按照《電子簽名法和商用密碼產品管理條例》規定,由公安部和國密辦檢驗合格的數字證書服務機構可提供數字簽名相關產品和服務。在此情況下進行操作,效果與實體蓋章和手寫簽名等同。
4.零知識證明算法
在財稅領域,涉及大量的交易信息,這些是雙方的商業秘密。在實際場景中,有一種需求是雙方要驗證對方就某一事務的權益,但又不適合泄露任何事務信息,這種情況下就非常適合使用零知識證明算法。該算法的功能是雙方彼此驗證對方就某一事務的知情狀態或支配權,但不需要提供給對方任何有效信息。
5.同態加密算法
同態加密算法用來處理密文,并得到和處理明文一樣的結果。對于財稅商業交易,如果需要某一非當事人的第三方就一項數據進行加工,并給出一個結果值,但該第三方又不是交易的相關方時,為了信息保密,適合使用同態加密算法。先將業務數據加密后再交給第三方處理,得到結果后解密,解密后的值和直接把明文交給第三方處理得到的結果一樣。現階段有許多為了交給第三方辦理某項業務,而不得不提供隱私信息,最后造成信息泄露的例子,這些都可以用同態加密算法來解決。
1.2.3 幾種具有代表性的架構和共識算法
對于區塊鏈和分布式賬本技術,這里介紹幾種具有典型代表意義的架構思想和共識機制,以幫助讀者進一步理解。
1.比特幣
比特幣是一種點對點的電子現金系統,其特征是所有節點記錄在一本賬中,身份匿名,以公鑰標識身份,以私鑰操作轉賬,形成的效果是,所有節點都能看到已有公鑰名下有多少比特幣,但不知道這個公鑰是誰。比特幣是一條公鏈,任何人都可以參與,不涉及實名對應。因為比特幣被定義為一種電子現金,所以需要考慮龐大的共識節點數量。其共識機制為POW(工作量證明),共識的方法是,確定一個隨機數哈希目標值,所有節點各自計算,先得到符合要求的結果節點,再獲得下一次的記賬權,其他節點以該節點的最新記賬數據為準。這樣比特幣的架構和POW共識算法的應用價值就是:適合龐大數量的節點達成共識,一本賬管理重要資產的交易和權益屬性。
2.以太坊
以太坊是在比特幣的基礎上,考慮把所有節點的綜合算力都利用起來的思想,其提出了以太坊虛擬機和智能合約的機制。以太坊使得區塊鏈的應用思路相對于一開始的比特幣有了很大的拓寬。以太坊也是公鏈,任何人都可以參與,且無須許可,身份是隱匿的。以太坊的共識算法分階段設計,初始階段也是POW。以太坊的核心價值就是提出了虛擬機和智能合約,以及運行合約需要消耗以太幣的機制,這為進一步設計復雜、靈活的應用打下了良好的基礎。關于激勵和代幣,我們在后面會有闡述,這里僅討論架構和共識算法。
3.超級賬本Fabric
超級賬本是Linux基金會的開源區塊鏈項目,該項目下面目前有7~8種進展不同的架構社區,目前應用廣泛的是Fabric。Fabric是一種聯盟鏈架構,特點是有許可機制,需要獲得成員管理模塊發行的數字證書才能開展鏈上操作。聯盟鏈是適合聯盟場合使用的區塊鏈架構,聯盟中參與共識的各參與方,都具有自己龐大的用戶群和業務群。也就是說與之前的比特幣和以太坊比較,聯盟鏈適合的是鏈接多個中心系統,這種情況下,參與共識的節點目前一般不超過30個,使用的共識算法可插拔。Fabric的特點是在1.0版本后增加了通道的機制,就是一個節點可以加入多個通道,共識是在通道內形成,以此來滿足復雜應用場景的需求。
4. Corda
Corda是R3公司提出的一種分布式賬本架構,非常適合用于金融處理、財稅業務等場景。Corda的思路是不設立全局賬本,賬本只在交易相關方持有和共識。其引入了公證人概念,公證人可理解為不同業務群的權威機構。實際上技術不斷發展,如果某些業務需要全局共識,這與Corda的架構也不沖突。另外,Corda實現了合約與現實合約的完全銜接和對應,這使得實施變得更為平滑和容易。本書第二部分將詳細介紹Corda的開發。
5. Sawtooth
Sawtooth是英特爾公司基于其硬件體系提出的區塊鏈架構,提供結合硬件芯片級的TEE環境,以及POET共識。其節點地址包含節點自身地址與域地址兩部分,域地址具有域共識特性,即大范圍域覆蓋小范圍域,這種共識特性使Sawtooth可用于與其對應的場景。
6. IOTA
IOTA是面向物聯網的一種架構,和前面所有架構的不同之處在于,其交易的驗證具有隨機性,所有的交易之間關系整體看是一個網狀的結構,而不是像其他架構那樣的鏈狀結構,共識效率與被驗證的次數權重有關。這是一種另辟蹊徑的發展方向,感興趣的讀者可關注。
7. NEO與ONT
NEO是中國社區很早就開始貢獻的一種開源架構技術體系。NEO因應用開發的友好和開發環境的完善而受到開發者稱贊;ONT重在實現多鏈網間應用和身份識別,其是發展前景比較好、構思成熟的一類技術體系。
除了上述共識算法外,還有POS、DPOS和BFT等共識算法。
在某一業務背景下,具有利害關系的參與方共識才有意義,其他人可能就是用戶。與中心化的單一角色服務的信息系統相比,通過共識算法達成的區塊鏈系統,能夠使得各種業務需求得到分布式的區域實現。而對于中心化系統來說,若其不支持區域局部需求,那么區域局部性需求就無法實現。另外,區塊鏈系統通過共識算法,能避免單一系統的被操縱,因為利益方不會認可任何損害自身利益的事務。所以共識算法的設計,往往除了考慮記賬一致性這個基本需求外,還需結合經濟模型和并充分考慮安全性。
1.2.4 區塊鏈激勵機制設計與發展趨勢
目前比特幣、以太坊等公鏈已有的都是算力激勵,即節點持有者投入了設備,那么就可以挖礦,挖礦所得報酬就是對算力貢獻的一種回報,記賬也需要支付代幣作為報酬,這一層的激勵都算是算力激勵。隨著區塊鏈技術的應用發展,會出現第二層的與業務場景綁定的業務場景激勵,和第三層的與應用綁定的應用激勵。
激勵機制和經濟模型的設計,依據設計者對于區塊鏈生態的設計意圖而產生。我們可以結合一個例子來分析一下算力激勵的優點。例如,在傳統的計算機設備銷售過程中,制造商將計算機賣給客戶,獲得銷售收入,客戶使用到年限然后報廢,整個過程就這么簡單。如果購買計算機的客戶,共同用這些計算機搭建一個信息系統,那么一般會有幾個現象:
(1)不同客戶產生的業務量對系統資源的消耗,與不同客戶貢獻計算機的比例可能不匹配。
(2)這個系統可能還有沒有貢獻計算機設備的使用者。
在這種情況下,需要一種分配機制,使得購買計算機者能夠獲得相匹配的回報。而產生業務量消耗計算資源者的付出,也與自己的業務量匹配。通過這兩方面的兼顧考慮,使得資源配置更加公平合理。在POW算法中,記賬權的節點獲得的獎勵,記賬獲得的記賬費,這都是算力激勵的體現。
當前因為區塊鏈處在發展的初級階段,各類區塊鏈平臺也都處在建設期,所以各類算法和激勵都體現在算力激勵與算力資源配置的優化上。筆者認為,區塊鏈系統的激勵和經濟模型,不會只有體現在算力這一層,還會有更多層面和更多維度的激勵和經濟模型設計,例如不同領域的區塊鏈系統的激勵措施就應該有區別,比如銀行業和農牧業應該區別對待。而相同領域中的不同組織或不同產品,也應該有所區別,比如同屬銀行業,但是一線大城市的銀行和小縣城的銀行之間應該區別對待,而不同檔次的理財產品之間也應該有所區別。這就如同我們現在常見的會員系統,往往不同等級的會員會設定不同的年費和可以享受不同的服務。區塊鏈系統結合場景和代幣來設計激勵措施和經濟模型,可以使品質與價格匹配得更加緊密,真正做到一分錢一分貨。體現到在商業上,可能會產生消滅統一定價,甚至消滅價格的效果。