經常有人問到一個問題:“怎么在合約里實現鏈上數據的讀取權限?”
這樣的需求背后,是開發者想把一些數據上鏈,讓智能合約管理和運算,以達成業務上的共識,但又不希望數據公開可見,避免鏈上其他未授權參與者讀取,導致信息泄露。
最直觀的實現思路,就是在合約代碼里寫一段過濾邏輯,判斷調用者滿足某些條件才允許返回數據,否則拒絕。
我們設定一個案例:有一個積分聯盟鏈,鏈上參與者有Alice、Bob、Carl、Dave等多方以及他們的家人,每個人的積分余額希望設定只有自己和家人可見,其他參與者不可見。
客戶端通過區塊鏈的應用級接口,發送請求到某個節點,調用智能合約的get方法查Bob的積分,智能合約寫了權限控制邏輯,拒絕越權訪問。
因為智能合約在每個節點上的運行邏輯是一致的,因此無論請求發往哪個節點,結果都一樣。這看起來貌似沒啥問題,但實際是否也是如此?
這里先說結論:這是個“治標不治本”的做法,并不能確保數據不泄露。
恒生電子:聯盟鏈的創新空間應集中在如何更好地服務中小和小微企業方面:金色財經報道,6月23日,恒生電子區塊鏈發展部運營經理林晗做客金色財經舉辦的“聯盟鏈-創新場景應用的偶然與必然”為主題的金色沙龍第64期活動。林晗表示中國的區塊鏈研究和專利成果,從一開始就比較集中在區塊鏈技術的應用和落地,也就是產業區塊鏈方面。現階段聯盟鏈適用于與具體細分產業相結合的場景,比如說產業金融領域,例如產業金融區塊鏈平臺范太鏈。聯盟鏈的創新空間應是集中如何利用區塊鏈解決小微企業的信任問題、更好提升小微企業運營效率來開展。因為區塊鏈能解決的一個核心痛點是信任問題,與本身就具有信任背書能力的大企業相比,在產業中往往是小企業才需要解決信任問題。區塊鏈作為一種劃時代意義的記賬技術,其最大的價值是應該被用來與實體產業結合,促進社會發展。[2021/6/23 0:00:23]
現在開始我們要用“多中心、去信任”的思維重新去審視這個案例。
我們先分析下:鏈上數據是怎么存儲?在什么情況下會被泄露呢?
區塊鏈網絡節點分布在不同參與者的環境里,出于區塊鏈的數據一致性特性,每個節點都持有一份完整的數據副本。無論這個數據庫是LevelDB/RocksDB這樣的文件型數據庫,還是Mysql這樣的關系型數據庫,數據都會落到每個節點的數據庫實例里。
張春泉:區塊鏈等如何與行業深度融合將是工業互聯網發展關鍵要素:曙光云計算集團副總裁、中國科學院智慧城市產業聯盟副秘書長張春泉表示,目前工業互聯網發展呈現出新特征,一是在云計算技術架構支撐下,企業之間正從技術、產品和供應鏈的競爭逐步演進成為平臺化的生態體系競爭。二是以工業互聯網為支撐,助力企業邁向網絡化、智能化的新階段,構建數字化的工業生態和數字化的商業服務生態。三是新一輪的IT技術加速行業的深度融合,比如說標識解析、區塊鏈等技術如何與行業深度融合,將是這一時期工業互聯網發展的關鍵要素。(經濟參考報)[2020/4/30]
也就是說Bob的積分余額,在所有的節點硬盤上都存了一份,在MySQL數據庫工具里看,大概這個樣子:
如果鏈上存在某個有點兒區塊鏈技術經驗的參與者,暗戳戳地懷揣“惡意”(也就是俗稱的拜占庭玩家),他可以用工具打開本地的數據庫,直接查詢Bob的余額。這樣,用合約去防止數據泄露的控制邏輯就會完全被繞過。就這么簡單。
動態 | 捷豹路虎DLT開發人員解釋如何通過報告路況獲得加密貨幣獎勵:英國最大汽車制造商捷豹路虎分布式賬本技術團隊的軟件開發人員Aaron Hetherington解釋了駕駛員如何通過報告道路問題而獲得加密貨幣獎勵。Hetherington稱,捷豹路虎的技術可以追蹤車輛何時何地撞到路上的坑洞,這樣就可以將維修細節發送給英國和愛爾蘭的地方議會。他補充道:“當然,發現這些不好的路況是有獎勵的。利用像IOTA這樣的加密貨幣,我們可以將獎勵直接發送給客戶。”通過讓汽車自動向導航提供商或地方當局報告道路狀況數據,比如交通擁堵或坑洼,司機將獲得加密貨幣積分,這些積分可用于自動支付通行費、停車費和充電費。2019年4月,捷豹路虎表示正在測試軟件,旨在允許其汽車司機獲得加密貨幣IOTA作為共享數據的獎勵。據悉,該公司正在開發“智能錢包”技術,以安裝在其汽車中。目前還未確定何時上市。(SiliconRepublic)[2020/2/6]
另外,區塊鏈的數據不僅與合約相關,還和交易記錄密切相關。
動態 | V神闡述如何進行ETH委托挖礦:V神回復網友提問“1.可以通過合約合租一個validator(平民化參與,共享投票身份)嗎?2.一個客戶端可以跑多個valifator (共享機器)嗎?”表示,“你開一個validator,需要設置兩個公鑰:簽名的公鑰和取款的公鑰。Phase 2后,不一定需要設置取款公鑰,也可以設置取款合約。簽名的私鑰能withdraw,withdraw完成后validator里面的資金都給取款合約的地址。所以你開新的validator到時候,可以先發比如1以太幣,設置取款合約,這個合約的規則是,誰deposit多少誰按照比例withdraw多少。一段時間后,你發withdraw的交易。現在因為獎勵這個validator的balance是33.6以太幣(加 5%),33.6以太幣給合約,合約的規則分配1.05給你,8.4, 10.5和13.65 給其他的參與者。簽名的私鑰是你的,誰能withdraw多少的規則是合約定的。別人能看一個還未activated的validator的withdraw合約的規則,如果他們覺得是合理的,則他們能發他們的幣給這個validator,這個是委托的方法。”[2019/10/22]
在發送交易的時候,交易參數會包含一部分或全部數據,交易會打包進區塊,最終也寫入節點數據庫里。
聲音 | 光大證券彭文生:Libra的發展關鍵要看監管機構如何在支持創新和監管之間的平衡:近日,光大集團研究院副院長、光大證券全球首席經濟學家彭文生表示,和比特幣等代幣相比,Libra尚未問世引來如此高的關注度,一是數字經濟下科技巨頭平臺公司和貨幣的網絡規模優勢有協同效應;二是Libra作為一攬子貨幣的衍生品,屬于數字貨幣中的穩定幣。而比特幣等代幣僅僅是數字資產,其未來價值取決于使用者對其的“信仰”,故其價格波動幅度會比較大。他還指出,未來Libra要成為貨幣,在起步階段,支付手段可能是突破口;但發展到一定規模后,儲值工具的作用更重要,是推動Libra能成為一種真正貨幣的主要力量。Libra現在是0,按常理起步會較慢,但不能低估其社區網絡帶來的規模效應。不過Libra的發展關鍵還要看監管機構如何在支持創新和監管之間的平衡。[2019/7/30]
對區塊和交易數據的查詢一般不會用合約邏輯實現,于是,僅僅在合約里寫過濾邏輯并無法防止這些數據的讀取。拜占庭玩家可以在本地數據庫里遍歷區塊數據,獲取交易歷史明細,從頭到尾回放交易流水,得知現在Bob的余額是300。
從整個技術棧來看,拜占庭玩家用工具訪問本地數據、遍歷區塊和交易都算是小意思了,他甚至可以修改區塊鏈系統代碼,從區塊鏈網絡接口、程序內存、智能合約引擎等層面切入,從協議包、區塊、交易流水、合約上下文、狀態數據等環節嗅探和攔截到明文數據,即使數據落盤是加密的,密鑰也在節點持有人手里,他照樣能解開。
所以,從區塊鏈底層代碼入手去控制讀數據的權限,同樣也是不管用的,畢竟開源的代碼,誰都可以改,俗話說:“壞人會武術,誰都擋不住”,而懂技術的“壞人”更是無所不能、防不勝防。
總之,區塊鏈強調“分享”和“一致性”,只要明文數據在鏈上廣播,別人就有無數種方法去獲取。無論是在合約層還是底層代碼,幾乎所有的讀控制邏輯都像窗戶紙一捅就破,像馬其諾防線一樣形同虛設。
看到這里,有人可能會問:讀數據如此不設防,那區塊鏈上的“寫”權限還有意義嗎?回答是:有的。
回到積分這個例子,我們設定Alice是積分管理員,她才能發起轉移積分的交易,然后Bob也只接受Alice給自己的積分。轉移積分的交易需要經過全網共識,所有共識節點會檢查合約里寫的規則,不符合就拒絕簽名,越權交易無法得到共識,則數據不會被修改。
這時即使有少量的拜占庭節點,無論在本地節點怎么折騰,也篡改不了全網數據。
“寫”交易追求共識,所以客戶端發交易時,要打上數字簽名,區塊鏈系統驗證簽名,確認是哪個外部賬戶發過來的交易,可以進行嚴格地校驗和準確地追溯。
“讀”操作更強調共享,讀數據的操作其實并不經過共識流程,在自己的節點翻翻數據就行了。通常區塊鏈系統在讀接口并不用嚴格填寫發送者,也無需打上數字簽名,所以,在合約的讀方法里判斷外部賬戶,其實是無效的。
綜合以上種種分析,可以得出結論:在鏈上實現讀控制并不是簡單的事情。
如果對讀控制邏輯考慮不足,那么效果將是:你在自己的節點上讀一下數據來測試驗證,表象看起來OK,你以為歲月靜好,卻不知道在一個拜占庭玩家那里,數據已經被翻得底朝天了。
考慮到多方協作中的去信任化,追求數據共享、公開、透明的取向,一般來說,如果是關鍵的、不能泄露的敏感數據,一定要慎重上鏈,能上鏈的,一定是大家說好可以分享的“最大公約數”。
事實上很多區塊鏈系統里的交易和余額等狀態都是全網可見的,所謂的匿名性或隱私性,只是用公私鑰和地址體系代替了明文賬戶,這個級別的“匿名”,在業務模型復雜且強調全面隱私的金融、政務等領域并不適用。
那么我們還有什么方法,在兼顧共享、透明、開放的同時,適當地控制數據可見性呢?
第一個思路是與鏈外治理結合,約定責權利邊界。我在合約、接口層面做好權限設計和實現,保證在我的業務系統里不泄露數據,我的區塊鏈應用層、展示界面、報表、日志、數據庫等環節都不會被越權訪問,消除我內部操作風險。
至于別人的節點,我管不著,那是他們的責任,誰泄露濫用數據,就重罰誰。這種邏輯其實有點“各掃門前雪”的意思,在這種模式下,我的敏感數據還是不能上鏈給到別人。
第二個思路是引入密碼學。這里舉幾個例子。
非對稱加密:上鏈的數據用接受方的公鑰加密,則只有接收方才能用自己的私鑰解開。
密碼信封:上鏈數據采用某個口令加密,口令通過鏈外信道給到接收方,只有知道口令的接收方才能解密。
屬性加密:數據采用屬性加密算法進行加密,符合指定屬性的才能解密。這些方案的考量在于運算、傳輸、存儲的開銷都會大一點,另外加密的數據不支持明文運算,難以實現復雜的業務合約邏輯。還要注意的是,即使加了密,本質上數據的全部信息還是都上鏈了,隨著時間推移,計算能力和算法的進化,存在被暴力破解的可能性,或者因為密鑰泄露/太簡單被猜到,鏈上的數據又無法撤回,就有被昭告天下的風險。
第三個思路是僅摘要上鏈,數據明文根本就不上鏈。
其實,區塊鏈的作用并不一定是全面掌握數據和執行復雜的業務規則,而是憑借多方見證的公信力,驗證數據的準確性、完整性,并起到存證和追溯的作用,事實上現階段很多區塊鏈系統主要是這么個邏輯,客觀上已經能起到信任的錨點作用。
如果需要明文數據,再通過摘要里的尋址信息去鏈外系統獲取數據,在這個環節上做精細的權限控制,并和鏈上摘要進行互驗。
但,數據不上鏈還是有點不甘心呀,區塊鏈這么創新的理念,智能合約這么強大的功能,怎么充分發揮呢?
這就要講到隱私計算了,包括但不限于零知識證明、同態加密、安全多方計算、聯邦學習等一系列重武器,可以做到隱秘數據、身份的同時,對加密數據進行加減乘除運算、邏輯運算、排序、統計分析,更進一步還可以做到“前臺匿名,后臺可審計”的效果,以符合監管合規要求。這就是在區塊鏈上實現“可用不可見”的最終奧義。
限于篇幅,這里不展開隱私計算的細節,可以參考WeDPR隱私保護相關的開源場景方案,尤其是其中的幾個場景,如VCL區塊鏈可驗證密文賬本,可以用于解決前面提到的積分案例里的一些隱私問題。
WeDPR隱私保護相關開源場景方案:
https://fintech.webank.com/wedpr/
VCL區塊鏈可驗證密文賬本:
https://sandbox.webank.com/wedpr/confidentialpayment/#/start
結語
本來只是想聊聊“怎么寫合約讀權限”這樣一個小問題,結果變成了長篇。
其實面對區塊鏈編程和開發時,真的不能像寫單機或集群軟件那樣考慮問題,而要充分考量多方參與、去信任環境下的協作關系,在共享、透明、可追溯的基本哲學之上,關注隱私保護訴求,掂量數據的重要性和敏感性,再深入到技術棧,考慮各種算法的功效和成本、綜合現在和未來的風險和收益以選擇合適策略,這樣才能全面保護數據和隱私,安全地發展業務,維護自身和用戶權益。
來源|??FISCOBCOS開源社區
在#118提案獲得通過后,Polkadot平行鏈競拍終于提上了日程。10月13日,Parity研究分析師JoePetrowski提出的#118號提案獲得了通過,之后,Polkadot官方也正式公.
1900/1/1 0:00:00本周,我們以技術視角,進一步探尋Layer2上Rollup方案的MEV防范問題。區塊鏈的公平性、透明性與可驗證性是其受到廣泛信任的基礎,然而這樣的特性也給整個生態帶來了不小的麻煩.
1900/1/1 0:00:00近日,自動化做市商應用Osmosis獲得2100萬美元投資,由著名的加密風險投資機構Paradigm領投,該應用基于Cosmos搭建.
1900/1/1 0:00:00概述 用一種資產交換另一種資產是金融市場的一個基本概念。在加密貨幣市場中,這種情況通常發生在代幣或貨幣與他人交換或交易的地方。Uniswap是一種自動流動性協議,有助于這種類型的交換.
1900/1/1 0:00:00金色財經?區塊鏈11月8日訊?爆紅的“元宇宙”概念實際上也并非多么遙遠或者高大上的概念,其實它最早的起源是源于1992年出版的科幻小說《雪崩》.
1900/1/1 0:00:002021年10月28日據Decrypt報道,世界著名商學院、賓夕法尼亞大學沃頓商學院將支持以加密貨幣的形式支付學費.
1900/1/1 0:00:00