比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

如何全面控制區塊鏈上數據的“讀”權限_BOB

Author:

Time:1900/1/1 0:00:00

經常有人問到一個問題:“怎么在合約里實現鏈上數據的讀取權限?”

這樣的需求背后,是開發者想把一些數據上鏈,讓智能合約管理和運算,以達成業務上的共識,但又不希望數據公開可見,避免鏈上其他未授權參與者讀取,導致信息泄露。

最直觀的實現思路,就是在合約代碼里寫一段過濾邏輯,判斷調用者滿足某些條件(如在白名單里)才允許返回數據,否則拒絕。

我們設定一個案例:有一個積分聯盟鏈,鏈上參與者有Alice、Bob、Carl、Dave等多方以及他們的家人,每個人的積分余額希望設定只有自己和家人可見,其他參與者不可見。

客戶端通過區塊鏈的應用級接口,發送請求到某個節點,調用智能合約的get方法查Bob的積分,智能合約寫了權限控制邏輯,拒絕越權訪問。

因為智能合約在每個節點上的運行邏輯是一致的,因此無論請求發往哪個節點,結果都一樣。這看起來貌似沒啥問題,但實際是否也是如此?

這里先說結論:這是個“治標不治本”的做法,并不能確保數據不泄露。

Stargate DAO成員在社區會議上討論如何處理即將收到的160萬枚ARB:3月30日消息,Stargate DAO成員在周三社區電話會議上討論如何處理160萬枚Arbitrum(ARB)代幣的預期分配,這些代幣價值不到200萬美元。LayerZero Labs的員工MaxPower表示,這些代幣尚未收到,但當收到時將必須決定是否持有、出售、部署或委托這些代幣。

一些與會者建議,DAO應該將ARB代幣分發給用戶,或將其部署為流動性激勵。與此同時,其他治理代幣持有者建議委托ARB代幣,以便Stargate DAO可以參與Arbitrum治理。

據DeFiLlama的數據,Stargate的總鎖定價值(TVL)為3.64億美元,其中近22%來自Arbitrum平臺。(CoinDesk)[2023/3/30 13:34:35]

現在開始我們要用“多中心、去信任”的思維重新去審視這個案例。

我們先分析下:鏈上數據是怎么存儲?在什么情況下會被泄露呢?

區塊鏈網絡節點分布在不同參與者的環境里,出于區塊鏈的數據一致性特性,每個節點都持有一份完整的數據副本。無論這個數據庫是LevelDB/RocksDB這樣的文件型數據庫,還是Mysql這樣的關系型數據庫,數據都會落到每個節點的數據庫實例里。

美國職棒大聯盟正與律師討論如何處理與FTX的合作關系:11月17日,據消息人士透露,美國職業棒球大聯盟(MLB)正在與其法律顧問討論如何處理與FTX的合作關系。作為美國最知名的體育聯盟之一,MLB正密切關注FTX的情況。

據悉,MLB于2021年6月與FTX簽署五年協議。如果MLB最終決定終止與FTX的關系,FTX的品牌Logo將不會出現在MLB球場上。(Sporttechie)[2022/11/17 13:16:28]

也就是說Bob的積分余額,在所有的節點硬盤上都存了一份,在MySQL數據庫工具里看,大概這個樣子:

如果鏈上(小概率地)存在某個有點兒區塊鏈技術經驗的參與者,暗戳戳地懷揣“惡意”(也就是俗稱的拜占庭玩家),他可以用工具打開本地的數據庫,直接查詢Bob的余額。這樣,用合約去防止數據泄露的控制邏輯就會完全被繞過。就這么簡單。

俄羅斯彼爾姆地區一家法院屏蔽解釋如何交易比特幣的網站:俄羅斯彼爾姆地區的一家法院決定屏蔽一些描述如何將加密貨幣兌換成法定貨幣的網站,當地檢察官聲稱,在俄羅斯傳播此類信息是違法的,違反了俄羅斯打擊犯罪收益合法化的立法,可能會促進非法洗錢行為。(Bitcoin.com)[2021/6/11 23:30:46]

另外,區塊鏈的數據不僅與合約相關,還和交易記錄密切相關。

在發送交易的時候,交易參數會包含一部分或全部數據(如Alice給Bob轉賬100),交易會打包進區塊,最終也寫入節點數據庫里。

對區塊和交易數據的查詢一般不會用合約邏輯實現,于是,僅僅在合約里寫過濾邏輯并無法防止這些數據的讀取。拜占庭玩家可以在本地數據庫里遍歷區塊數據,獲取交易歷史明細,從頭到尾回放交易流水,得知現在Bob的余額是300。

從整個技術棧來看,拜占庭玩家用工具訪問本地數據、遍歷區塊和交易都算是小意思了,他甚至可以修改區塊鏈系統代碼,從區塊鏈網絡接口、程序內存、智能合約引擎等層面切入,從協議包、區塊、交易流水、合約上下文、狀態數據等環節嗅探和攔截到明文數據,即使數據落盤是加密的,密鑰也在節點持有人手里,他照樣能解開。

海德薇格:我很期待看到 數字貨幣將如何改變人民幣支付市場:第十七屆中國國際金融論壇于2020年12月17日-18日在上海舉行。主題為“數字經濟時代的金融服務”。國際銀行業聯合會(IBFed)總裁海德薇格?挪倫斯視頻參會并致辭時指出:金融穩定委員會正在監測大科技公司的創新和金融穩定風險,并且已經發表了很多關于該主旨的文章,例如在2020年10月13日發表的一篇文章中,就提出了關于全球穩定幣的10個高層建議。考慮到創新的規模之大,監管機構和監督機構都需要拓寬自己的視野,并且彼此之間開展更多合作。

中國監管機構一直在積極加強監管,以便隨時應對大科技公司所引起的市場變化。例如,去年,中國人民銀行就起草了相關規則,要求將銀行和金融服務與金融控股公司旗下的科技公司分離,并對這些科技公司進行監管。 現在,要求支付公司必須有100%的存款準備金。

中國還率先推出了由國家信用支持的數字貨幣。我很期待看到這些數字貨幣將如何改變中國國內和境外的人民幣支付市場。(新浪財經)[2020/12/17 15:29:42]

所以,從區塊鏈底層代碼入手去控制讀數據的權限,同樣也是不管用的,畢竟開源的代碼,誰都可以改,俗話說:“壞人會武術,誰都擋不住”,而懂技術的“壞人”更是無所不能、防不勝防。

聲音 | 羅玫:金融機構非常重視如何對加密貨幣進行計量:據數字金融資產研究中心微信公眾號消息,清華經管數字金融資產研究中心主任羅玫稱如何對加密數字貨幣進行計量是國際國內證券監管機構、稅務和會計準則制定機構都非常重視的領域,國際會計準則和美國GAAP都沒有對加密數字貨幣的會計計量和確認制定單獨準則。建立新的財務報告規范需要會計準則制定委員會的參與,也需要和正在經歷變化的加密數字貨幣的證券規范、以及稅務規范同時融合更新。[2018/11/27]

總之,區塊鏈強調“分享”和“一致性”,只要明文數據在鏈上廣播,別人就有無數種方法去獲取。無論是在合約層還是底層代碼,幾乎所有的讀控制邏輯都像窗戶紙一捅就破,像馬其諾防線一樣形同虛設。

看到這里,有人可能會問:讀數據如此不設防,那區塊鏈上的“寫”權限還有意義嗎?回答是:有的。

回到積分這個例子,我們設定Alice是積分管理員,她才能發起轉移積分的交易,然后Bob也只接受Alice給自己的積分。轉移積分的交易需要經過全網共識,所有共識節點會檢查合約里寫的規則,不符合就拒絕簽名,越權交易無法得到共識,則數據不會被修改。

這時即使有少量的拜占庭節點,無論在本地節點怎么折騰,也篡改不了全網數據。

“寫”交易追求共識,所以客戶端發交易(sendTransaction或sendRawTransaction)時,要打上數字簽名,區塊鏈系統驗證簽名,確認是哪個外部賬戶發過來的交易,可以進行嚴格地校驗和準確地追溯。

“讀”操作更強調共享,讀數據的操作其實并不經過共識流程,在自己的節點翻翻數據就行了。通常區塊鏈系統在讀接口(call)并不用嚴格填寫發送者,也無需打上數字簽名,所以,在合約的讀方法里判斷外部賬戶,其實是無效的。

綜合以上種種分析,可以得出結論:在鏈上實現讀控制并不是簡單的事情。

如果對讀控制邏輯考慮不足,那么效果將是:你在自己的節點上讀一下數據來測試驗證,表象看起來OK,你以為歲月靜好,卻不知道在一個拜占庭玩家那里,數據已經被翻得底朝天了。

考慮到多方協作中的去信任化,追求數據共享、公開、透明的取向,一般來說,如果是關鍵的、不能泄露的敏感數據,一定要慎重上鏈,能上鏈的,一定是大家說好可以分享的“最大公約數”。

事實上很多區塊鏈系統里的交易和余額等狀態都是全網可見的,所謂的匿名性或隱私性,只是用公私鑰和地址體系代替了明文賬戶,這個級別的“匿名”,在業務模型復雜且強調全面隱私的金融、政務等領域并不適用。

那么我們還有什么方法,在兼顧共享、透明、開放的同時,適當地控制數據可見性呢?

第一個思路是與鏈外治理結合,約定責權利邊界。我在合約、接口層面做好權限設計和實現,保證在我的業務系統里不泄露數據,我的區塊鏈應用層、展示界面、報表、日志、數據庫等環節都不會被越權訪問,消除我內部操作風險。

至于別人的節點,我管不著,那是他們的責任,誰泄露濫用數據,就重罰誰(取證、舉證其實挺難的)。這種邏輯其實有點“各掃門前雪”的意思,在這種模式下,我的敏感數據還是不能上鏈給到別人。

第二個思路是引入密碼學。這里舉幾個例子。

非對稱加密:上鏈的數據用接受方的公鑰加密,則只有接收方才能用自己的私鑰解開。

密碼信封:上鏈數據采用某個口令加密,口令通過鏈外信道給到接收方,只有知道口令的接收方才能解密。

屬性加密:數據采用屬性加密算法進行加密,符合指定屬性(如具備管理員屬性)的才能解密。這些方案的考量在于運算、傳輸、存儲的開銷都會大一點,另外加密的數據不支持明文運算,難以實現復雜的業務合約邏輯。還要注意的是,即使加了密,本質上數據的全部信息還是都上鏈了,隨著時間推移,計算能力和算法(如量子密碼)的進化,存在被暴力破解的可能性,或者因為密鑰泄露/太簡單被猜到,鏈上的數據又無法撤回,就有被昭告天下的風險。

第三個思路是僅摘要上鏈,數據明文根本就不上鏈。

其實,區塊鏈的作用并不一定是全面掌握數據和執行復雜的業務規則,而是憑借多方見證的公信力,驗證數據的準確性、完整性,并起到存證和追溯的作用,事實上現階段很多區塊鏈系統主要是這么個邏輯,客觀上已經能起到信任的錨點作用。

如果需要明文數據,再通過摘要里的尋址信息去鏈外系統獲取數據,在這個環節上做精細的權限控制,并和鏈上摘要進行互驗。

但,數據不上鏈還是有點不甘心呀,區塊鏈這么創新的理念,智能合約這么強大的功能,怎么充分發揮呢?

這就要講到隱私計算了,包括但不限于零知識證明、同態加密、安全多方計算、聯邦學習等一系列重武器,可以做到隱秘數據、身份的同時,對加密數據進行加減乘除運算、邏輯運算、排序、統計分析,更進一步還可以做到“前臺匿名,后臺可審計”的效果,以符合監管合規要求。這就是在區塊鏈上實現“可用不可見”的最終奧義。

限于篇幅,這里不展開隱私計算的細節,可以參考WeDPR隱私保護相關的開源場景方案,尤其是其中的幾個場景,如VCL區塊鏈可驗證密文賬本,可以用于解決前面提到的積分案例里的一些隱私問題。

WeDPR隱私保護相關開源場景方案:

https://fintech.webank.com/wedpr/

VCL區塊鏈可驗證密文賬本:

https://sandbox.webank.com/wedpr/confidentialpayment/#/start

結語

本來只是想聊聊“怎么寫合約讀權限”這樣一個小問題,結果變成了長篇。

其實面對區塊鏈編程和開發時,真的不能像寫單機或集群軟件那樣考慮問題,而要充分考量多方參與、去信任環境下的協作關系,在共享、透明、可追溯的基本哲學之上,關注隱私保護訴求,掂量數據的重要性和敏感性,再深入到技術棧,考慮各種算法的功效和成本、綜合現在和未來的風險和收益以選擇合適策略,這樣才能全面保護數據和隱私,安全地發展業務,維護自身和用戶權益。

來源 |  FISCO BCOS開源社區

Tags:區塊鏈ARBBOB數字貨幣區塊鏈通俗易懂的例子圖arbitrum幣交易所bobt幣總量麥卡幣數字貨幣

火幣網下載官方app
以太坊 2021 年 Q3 季度報告:EIP1559、NFT、L2_NFT

以太坊 2021 年 Q3 季度的報告新鮮出爐,讓我們來看看與以往季度報告相比,Q3 季度發生了哪些新變化~網絡收入增長了 511%.

1900/1/1 0:00:00
“揭開” Tornado.Cash 的匿名面紗_CASH

隨著 DeFi、NFT、跨鏈橋等項目的火熱發展,黑客攻擊事件也層出不窮。有趣的是,據慢霧統計,80% 的黑客在洗幣過程中都使用了混幣平臺 Tornado.Cash,本文以 KuCoin 被盜事件.

1900/1/1 0:00:00
元宇宙:算法化社會網絡_VENT

我對比特幣的理解:比特幣的本質是“算法信任”,是人類第一次將經驗意義上的群體信任(中心化規則或者長期建立的經驗信任)升級到以邏輯符號系統下的“算法信任”.

1900/1/1 0:00:00
一文讀懂拜登政府發布的「穩定幣報告」_BSP

穩定幣監管的緊張局勢在美國已經醞釀了一段時間。美國證券交易委員會(SEC)主席 Gary Gensler 一直主張對穩定幣(SEC認為是證券)進行監管,并對整個加密市場進行更多監管.

1900/1/1 0:00:00
正確的公鏈估值模型:讀懂 Solana 是否被高估_ETH

許多人試圖將 Layer 1 區塊鏈代幣像股票一樣進行估值,這是很荒謬的。與其像*公司*一樣給以太坊、Solana等定價,不如像*國家*一樣給它們定價.

1900/1/1 0:00:00
V神:對于以太坊來說 rollup是唯一可行的可擴容方案_ROLL

主持人:下面我們再次和萬向區塊鏈的老朋友取得聯絡,他就是Vitalik,是以太坊創始人,也是萬向區塊鏈實驗室的首席科學家,從2015年首屆萬向區塊鏈峰會開始,他就從未缺席.

1900/1/1 0:00:00
ads