2017年區塊鏈最主要的技術類挑戰
2016年加密貨幣和區塊鏈技術成為金融科技領域備受關注的焦點,投資趨勢火熱。然而這一年也是問題不斷的,因此對于熱衷該領域研發及投資的機構和個人可能更加關心新年的技術發展趨勢及潛在問題和挑戰。本文就總結了一些獲得普遍認可的問題。
數據——鏈上或鏈下
第一代區塊鏈應用主要是比特幣衍生品,并不在區塊鏈上存儲真實的加密貨幣數據,而是存儲哈希值,也就是數字指紋。這些哈希值代表鏈上的數字資產,因此可以利用區塊鏈追蹤數字資產所有權,或者作為不可篡改的活動記錄。此方法的優勢是簡單,可以保護隱私性,因為數據本身是鏈下的,網絡節點并不能看到。缺陷是商業邏輯和數據許可不能在鏈上執行(除了加密貨幣或代幣)。另一個缺陷是數據必須存儲在某個地方,這個地方就是弱點。如果某人做了不被允許的調整,我們只能通過對比鏈上與鏈下的哈希值,才知道數據有問題,比如比特幣、和Factom。
第二個方法就是利用智能合約存儲數據,直接在區塊鏈中更新數據狀態。可以把它看作“數據承包”。此法的缺陷之一是每個節點的容量要大,因為需要存儲數據集變更歷史。每個節點還需要執行智能合約。第二個缺陷是隱私性。如果每個節點存儲所有數據,就可以看到所有數據,從而無法保證數據隱私性。這兩個缺陷都可以克服,只要只在部分子節點共享。此方式的優點是,在去中心化解決方案中,可以實時在鏈上執行許可、潛在業務、工作邏輯、代幣、資產轉移。比如以太坊、超級賬本(Hyperledger)Fabric、R3 Corda。
數據隱私性——加密或選擇性共享
假設數據存儲在鏈上,保護區塊鏈數據隱私性的方法有兩個。
私有數據加密
智能合約出售數據之前進行加密。如果數據在所有節點中共享,每個節點就將有一份加密數據副本,但是它們不一定持有解密數據的密鑰。該方法的潛在問題是區塊鏈數據是不可篡改的,可能保存數年。未來,尤其是量子計算成熟之后,今天的密碼也許可以被破解,曾經保密的數據也許就會被所有節點看到,公有鏈也許更多這種問題的風險,因為這里沒有管理或控制。而私有鏈中,只要所有節點采取數據遷移戰略,就可以消除這個問題。采用加密保護數據隱私的項目有Hyperledger Fabric。
私有數據的選擇性共享
數據存儲在鏈上,但是只與參與交易的節點共享數據,或者公證人也可以。這可以解決數據隱私性問題,因為數據不與非參與方共享。還可以解決擴展性,每個節點不再需要存儲整個鏈。此方式的潛在問題是沒有統一的交易鏈、出處,不可篡改性受限于交易參與方的數量。比如如果兩方參與交易,一位公證人參與。那么只有三個人收到數據及交易副本。如果這三方合謀將歷史交易及數據轉移,網絡中無人可以發現,因為其他人沒有記錄。然而只要增加公證人的數量就可以避免。公證人的性質很重要。如果他們是獨立的,沒有合謀的可能(比如監管者),那么不可篡改性將很強。這個選擇性共享方法目前是最受銀行歡迎的。比如R3 Corda。
數據加密算法,如果我們將鏈上存儲的數據加密,就很難去修改。
數據存儲及執行許可
如果我們將商業邏輯寫入智能合約,數據加密保存。每個執行及驗證合約的節點將不可以如此處理加密數據,因為該過程中數據一直是加密的,節點沒有可以解密的密鑰。因此雖然每個節點需要執行智能合約邏輯,并不是每個節點都有解密數據的密鑰。這可以限制智能合約只用于加密數據存儲(沒有商業邏輯)。InnovateUK支持開發了在合約中部署驗證許可的邏輯,即使數據是加密的,參與方是匿名的。這樣的例子有Applied Blockchain。
數據及全智能合約處理
可以通過將算力分配給鏈下參與者,進行鏈上加密數據處理,不會泄露數據內容。這項技術將數據處理流程分解成不可識別的塊,并分配給不同的節點進行處理。每個節點沒有足以理解數據內容的信息。其缺陷是節點可能會合謀將數據整合在一起。這種例子有麻省理工媒體實驗室的(MIT Media Lab)Enigma項目。
零知識證明——ZK-SNARKS
目前加密技術最熱話題是零知識證明。這是非常有限的算法功能,可以運用于完全加密的數據,適用于加密狀態,因此可以在不暴露未加密數據的前提下進行驗證。使得不同節點可以在智能合約中運行有限的計算,不向其他節點透露加密數據。該技術是游戲規則改變者,因為它可以用加密數據執行智能合約。類似比特幣的ZCash目前是該方式的首個實踐者。
交易匿名性
如果私鑰用于交易簽名,網絡中每個人都可以檢查某個密鑰是否用于該交易,這意味著每個人都可以看到該密鑰簽名對應的交易量。在有主導參與方的交易中,也許可以根據交易量,更加直接地識別各方的密鑰。
其解決方案之一是交易密鑰。從核心私鑰中生成不同密鑰的發布機構(中心化,可能會有多個)。核心密鑰與交易密鑰的映射并不向其他參與者公開,只可以看到單個交易的密鑰。這類案例有Hyperledger Fabric。
智能合約——有狀態與無狀態
無狀態條件邏輯
比特幣采用簡單的智能合約。它更多的是為支付交易添加更多邏輯與條件的腳本范例,典型案例有多簽名技術,執行交易的前提是提供多個簽名。這種智能合約是無狀態的,接受一系列輸入,運行一些邏輯,因此交易可以存在執行與不執行兩種選擇。如果給一筆交易添加一系列無狀態條款,這種模式將非常有用。其優勢在于簡單。缺陷是我們追蹤的唯一狀態或事件是賬戶之間的原生代幣或資產。
無狀態智能合約
更復雜的智能合同范例是以太坊中的( https://ethcore.io/parity.html ),其中包含了狀態。在這種情況下,智能合同還具有在鏈上存儲數據的能力。每筆交易可以改變該數據,并且所得到的數據再次存儲/凍結在鏈上。然后下一筆交易可以利用該數據,因為前一筆交易已將將數據凍結,數據將依此方式進行下一次調整。任何時候,我們可以遍歷區塊鏈,并且瀏覽以前的狀態,看到每筆交易變化前后的數據。這個模型的優點是,我們可以將區塊鏈作為數據庫,其中區塊鏈交易可以改變數據。只是這最后一點仍然很有爭議。
有狀態智能合約可以以不同的方式實現,例如狀態數據可以存儲在區塊鏈自己的內部數據結構內,或者它可以存儲在外部數據庫中,其中每筆交易的初始和結束狀態存儲在鏈上。后一個選項可以維持狀態完整性,同時允許我們直接訪問數據。示例:R3 Corda( https://www.corda.net/ )。
智能合約代碼——加密或開源
以太坊(和比特幣)被設計為公開開放鏈。由于我們不信任系統上的任何其他方,我們就必須信任系統,即代碼。因此,代碼必須向所有各方公開,無論是開源的底層區塊鏈平臺代碼,還是向參與交易流程的各方公開的個別智能合約的代碼。
私人智能合約源代碼
在需要隱私的私人區塊鏈部署中,該隱私性也可適用于數據,也可以應用于智能合約源代碼。這意味著如果我在一個私有區塊鏈網絡中持有一個節點,即使我持有所有的智能合約和賬本數據,一些智能合約源代碼是加密的,因此我看不到也沒有辦法執行代碼。這減少了證明合同按計劃執行的參與方的數量,因為只有交易參與方可以解密智能合約,執行并驗證它。示例:Hyperledger Fabric( https://hyperledger-fabric.readthedocs.io/en/latest/ )。
代幣——原生代幣或智能合約中
區塊鏈一開始是加密貨幣,它們現在已經發展成通用分布式數據庫和狀態機。順便說一句,我個人認為,它最終會回到原點,因為我們今天看到的大多數非加密貨幣用例最終都需要某種形式的支付或代幣交易方式,如果可以將其部署在鏈上,將非常非常有效率(無論是賬本上的代幣化法幣形式,還是受監管的加密貨幣)。因此,我們許多人今天使用的公共區塊鏈源代碼包含了原生代幣部署(例如比特幣、以太坊中的以太幣)。
如果我們開發一個包含代幣的解決方案,例如用來表示法定貨幣或獎勵、積分,我們可以選擇使用平臺的原生代幣機制,或者我們可以使用智能合同創建自己的代幣。以太坊甚至提供了智能合約代幣標準( https://www.ethereum.org/token )。
如果平臺具有原生加密貨幣,則使用平臺中固有的原生貨幣機制的第一種方法實際上是結合使用公共代幣平臺(即以太網坊的以太幣)。這是因為生成代幣的機制綁定了加密貨幣激勵方案(例如工作量證明、權益證明)。如果原生代幣部署不綁定到加密貨幣機制,那么就應該進行研究。同樣,諸如以太坊智能合約代幣標準的非原生代幣機制提供了很大的靈活性以及外部、第三方和開放錢包軟件的支持。
來源與隱私
開放代幣/資產
在加密貨幣代幣平臺中,原生代幣通過區塊鏈工作量證明創建。區塊鏈保證每個代幣歷史的透明性,使得每個人可以看到其創建的時間及地點,以及哪些帳戶已經轉移過它。由此可以了解每個代幣的來源,以便我們確保代幣不是憑空出現,也不是雙重花費的。然而,由于代幣和資產的歷史是對所有人是可見的,所以這樣的解決方案沒有隱私性。
私有代幣/資產
在zCash( https://z.cash/ )中,代幣交易完全加密,不會泄露給驗證節點,因此我們保留隱私和匿名。這是使用零知識證明來實現的。該解決方案保證了代幣不是憑空出現的,也不會雙重花費,不會泄露交易中的帳戶的任何信息,或代幣的來源。
當隱私性否定來源
在法定貨幣銀行系統中,現金由中央銀行發行。對于在區塊鏈上發行的法定貨幣,我們需要代幣的完全透明和來源,以確定代幣不是某人憑空捏造的,而是中央銀行發行的,并且沒有被雙重花費。
然而,在法定貨幣區塊鏈解決方案中,我們需要數據隱私性和匿名性(銀行不希望公開其活動內容或客戶數據),因此數據將需要加密或僅與交易參與方共享,可能還有一個或多個公證人。在任一種情況下,接收到這個代幣并且希望驗證其來源的任何人,將需要反復確認其來源,這就意味著完全公開該代幣的完整歷史。也就需要為該方提供解密或訪問該代幣相關歷史信息的能力;每個交易的細節將需要與更多的人共享,而不僅僅是交易本身的參與方;或者需要在不泄露交易歷史及參與方的前提下,提供來源證明。
這個問題適用于需要隱私性和來源證明的任何代幣、資產或數據。
可擴展性
許多區塊鏈解決方案需要存儲大量的交易信息和數據,以及快速的交易信息吞吐量和性能。全功能的傳統區塊鏈堆棧在這方面的速度相對較慢。下面是提高可擴展性的三種可行方法:
一種創新的方法是將區塊鏈流程劃分為兩個不同的層:復制和鏈接。可以跨越大型同步服務器群集的大數據存儲已經實現了前者。共識算法,如RAFT( https://raft.github.io/ )和Paxos有效地解決了這個問題。第二部分是鏈接。這可以添加在大數據存儲群集之上以產生超快速和可擴展的鏈式數據庫集群。一個例子是BigChainDB( https://www.bigchaindb.com/ )。
選擇性共享
默認情況下,區塊鏈要求每個節點存儲所有交易和數據的完整副本。這可能引起可擴展性的問題,特別是在需要大量交易和數據的用例中,或者將許多應用程序合并在鏈上的情形。如果交易和數據僅與交易各方以及可能一兩個公證人共享,則每個節點存儲的數據量就是整個網絡中交易和數據的總量的一部分。這顯然可以擴大網絡的整體交易處理量。示例:R3 Corda( https://www.corda.net/ )。
側鏈/通道
一個非同一般的擴容方案是側鏈。該方法集成多個鏈,其中一個或多個鏈被認為是主鏈,而其它鏈被認為是側鏈(也稱為通道)。該創意是主鏈速度更慢,因為它們要求大型參與者網絡達成共識。同時,側鏈提供較差的完整性和不可篡改性,并且共識范圍更小,但是交易速度和體積將更大。可以通過定期以固定間隔排列,將這兩種方案組合起來。示例:Lightning Network(閃電網絡)( https://lightning.network/ ),Radien Network(雷霆網絡)( http://raiden.network/ )。
互聯賬本
經濟、企業和監管要求使得大多數區塊鏈項目在私有區塊鏈網絡上設計和實施。這在短期內是好的,很可能長期維持這樣的方式。
只是這就引起關于賬本互連性的問題。例如,如果同一個行業內有兩個競爭性賬本解決方案,可以解決同樣的問題,這兩個解決方案可以互連嗎?或者一個組織使用不同技術平臺和網絡上的兩個互補解決方案。或者如果一個非常強大的組織或集團將其所有的分布式帳本活動整合到單個技術平臺上,并且強制其他人進入該平臺上怎么辦?不同的平臺可以相互通信嗎?
技術上看這是可能的。然而,其有效性和可取性就是另一回事了。不過目前已經有一些新興的技術解決方案在解決賬本互連問題。
例如,瑞波(Ripple)的Interledger( https://interledger.org/ )是一個用于賬本代幣交易的開放標準。它主要目的是允許其網絡直接連接到其他區塊鏈網絡,使得有價代幣可以通過網絡進行交換。這確實解決了令代幣的問題。然而,許多區塊鏈解決方案不是基于代幣的。例如,我們可能會使用區塊鏈智能合同、存儲數據、執行權限和業務規范等。這些更復雜的機制無法在不同的賬本中相互連通。
EthCore最近發布了Polkadot( https://ethcore.io/press.html )白皮書,可以連接不同帳本法案的底層機制。這是一個有雄心的項目,因為如此的話,不同的分類帳本需要被按照其設定的可集成的反向設計。
該領域可探討的爭議和內容還很多。
來自:http://geek.csdn.net/news/detail/137073