來源|FISCOBCOS開源社區責編|Carol
經常有人問到一個問題:“怎么在合約里實現鏈上數據的讀取權限?”這樣的需求背后,是開發者想把一些數據上鏈,讓智能合約管理和運算,以達成業務上的共識,但又不希望數據公開可見,避免鏈上其他未授權參與者讀取,導致信息泄露。最直觀的實現思路,就是在合約代碼里寫一段過濾邏輯,判斷調用者滿足某些條件才允許返回數據,否則拒絕。我們設定一個案例:有一個積分聯盟鏈,鏈上參與者有Alice、Bob、Carl、Dave等多方以及他們的家人,每個人的積分余額希望設定只有自己和家人可見,其他參與者不可見。客戶端通過區塊鏈的應用級接口,發送請求到某個節點,調用智能合約的get方法查Bob的積分,智能合約寫了權限控制邏輯,拒絕越權訪問。因為智能合約在每個節點上的運行邏輯是一致的,因此無論請求發往哪個節點,結果都一樣。這看起來貌似沒啥問題,但實際是否也是如此?這里先說結論:這是個“治標不治本”的做法,并不能確保數據不泄露。現在開始我們要用“多中心、去信任”的思維重新去審視這個案例。我們先分析下:鏈上數據是怎么存儲?在什么情況下會被泄露呢?區塊鏈網絡節點分布在不同參與者的環境里,出于區塊鏈的數據一致性特性,每個節點都持有一份完整的數據副本。無論這個數據庫是LevelDB/RocksDB這樣的文件型數據庫,還是Mysql這樣的關系型數據庫,數據都會落到每個節點的數據庫實例里。也就是說Bob的積分余額,在所有的節點硬盤上都存了一份,在MySQL數據庫工具里看,大概這個樣子:如果鏈上存在某個有點兒區塊鏈技術經驗的參與者,暗戳戳地懷揣“惡意”,交易會打包進區塊,最終也寫入節點數據庫里。對區塊和交易數據的查詢一般不會用合約邏輯實現,于是,僅僅在合約里寫過濾邏輯并無法防止這些數據的讀取。拜占庭玩家可以在本地數據庫里遍歷區塊數據,獲取交易歷史明細,從頭到尾回放交易流水,得知現在Bob的余額是300。從整個技術棧來看,拜占庭玩家用工具訪問本地數據、遍歷區塊和交易都算是小意思了,他甚至可以修改區塊鏈系統代碼,從區塊鏈網絡接口、程序內存、智能合約引擎等層面切入,從協議包、區塊、交易流水、合約上下文、狀態數據等環節嗅探和攔截到明文數據,即使數據落盤是加密的,密鑰也在節點持有人手里,他照樣能解開。所以,從區塊鏈底層代碼入手去控制讀數據的權限,同樣也是不管用的,畢竟開源的代碼,誰都可以改,俗話說:“壞人會武術,誰都擋不住”,而懂技術的“壞人”更是無所不能、防不勝防。總之,區塊鏈強調“分享”和“一致性”,只要明文數據在鏈上廣播,別人就有無數種方法去獲取。無論是在合約層還是底層代碼,幾乎所有的讀控制邏輯都像窗戶紙一捅就破,像馬其諾防線一樣形同虛設。看到這里,有人可能會問:讀數據如此不設防,那區塊鏈上的“寫”權限還有意義嗎?回答是:有的。回到積分這個例子,我們設定Alice是積分管理員,她才能發起轉移積分的交易,然后Bob也只接受Alice給自己的積分。轉移積分的交易需要經過全網共識,所有共識節點會檢查合約里寫的規則,不符合就拒絕簽名,越權交易無法得到共識,則數據不會被修改。這時即使有少量的拜占庭節點,無論在本地節點怎么折騰,也篡改不了全網數據。“寫”交易追求共識,所以客戶端發交易時,要打上數字簽名,區塊鏈系統驗證簽名,確認是哪個外部賬戶發過來的交易,可以進行嚴格地校驗和準確地追溯。“讀”操作更強調共享,讀數據的操作其實并不經過共識流程,在自己的節點翻翻數據就行了。通常區塊鏈系統在讀接口并不用嚴格填寫發送者,也無需打上數字簽名,所以,在合約的讀方法里判斷外部賬戶,其實是無效的。綜合以上種種分析,可以得出結論:在鏈上實現讀控制并不是簡單的事情。如果對讀控制邏輯考慮不足,那么效果將是:你在自己的節點上讀一下數據來測試驗證,表象看起來OK,你以為歲月靜好,卻不知道在一個拜占庭玩家那里,數據已經被翻得底朝天了。考慮到多方協作中的去信任化,追求數據共享、公開、透明的取向,一般來說,如果是關鍵的、不能泄露的敏感數據,一定要慎重上鏈,能上鏈的,一定是大家說好可以分享的“最大公約數”。事實上很多區塊鏈系統里的交易和余額等狀態都是全網可見的,所謂的匿名性或隱私性,只是用公私鑰和地址體系代替了明文賬戶,這個級別的“匿名”,在業務模型復雜且強調全面隱私的金融、政務等領域并不適用。那么我們還有什么方法,在兼顧共享、透明、開放的同時,適當地控制數據可見性呢?第一個思路是與鏈外治理結合,約定責權利邊界。我在合約、接口層面做好權限設計和實現,保證在我的業務系統里不泄露數據,我的區塊鏈應用層、展示界面、報表、日志、數據庫等環節都不會被越權訪問,消除我內部操作風險。至于別人的節點,我管不著,那是他們的責任,誰泄露濫用數據,就重罰誰。這種邏輯其實有點“各掃門前雪”的意思,在這種模式下,我的敏感數據還是不能上鏈給到別人。第二個思路是引入密碼學。這里舉幾個例子。非對稱加密:上鏈的數據用接受方的公鑰加密,則只有接收方才能用自己的私鑰解開。密碼信封:上鏈數據采用某個口令加密,口令通過鏈外信道給到接收方,只有知道口令的接收方才能解密。屬性加密:數據采用屬性加密算法進行加密,符合指定屬性的才能解密。這些方案的考量在于運算、傳輸、存儲的開銷都會大一點,另外加密的數據不支持明文運算,難以實現復雜的業務合約邏輯。還要注意的是,即使加了密,本質上數據的全部信息還是都上鏈了,隨著時間推移,計算能力和算法的進化,存在被暴力破解的可能性,或者因為密鑰泄露/太簡單被猜到,鏈上的數據又無法撤回,就有被昭告天下的風險。第三個思路是僅摘要上鏈,數據明文根本就不上鏈。其實,區塊鏈的作用并不一定是全面掌握數據和執行復雜的業務規則,而是憑借多方見證的公信力,驗證數據的準確性、完整性,并起到存證和追溯的作用,事實上現階段很多區塊鏈系統主要是這么個邏輯,客觀上已經能起到信任的錨點作用。如果需要明文數據,再通過摘要里的尋址信息去鏈外系統獲取數據,在這個環節上做精細的權限控制,并和鏈上摘要進行互驗。但,數據不上鏈還是有點不甘心呀,區塊鏈這么創新的理念,智能合約這么強大的功能,怎么充分發揮呢?這就要講到隱私計算了,包括但不限于零知識證明、同態加密、安全多方計算、聯邦學習等一系列重武器,可以做到隱秘數據、身份的同時,對加密數據進行加減乘除運算、邏輯運算、排序、統計分析,更進一步還可以做到“前臺匿名,后臺可審計”的效果,以符合監管合規要求。這就是在區塊鏈上實現“可用不可見”的最終奧義。限于篇幅,這里不展開隱私計算的細節,可以參考WeDPR隱私保護相關的開源場景方案,尤其是其中的幾個場景,如VCL區塊鏈可驗證密文賬本,可以用于解決前面提到的積分案例里的一些隱私問題。WeDPR隱私保護相關開源場景方案:https://fintech.webank.com/wedpr/VCL區塊鏈可驗證密文賬本:https://sandbox.webank.com/wedpr/confidentialpayment/#/start結語
安全公司:有用戶丟失價值約40萬美元的NFT:金色財經報道,據Scam Sniffer監測,有用戶丟失了價值約40萬美元的 NFT,包括3枚BAYC、5枚MAYC、10枚BACK、6枚DOODLE 和CloneX。被盜用戶簽署了惡意Opensea Registry OwnableDelegateProxy升級交易。攻擊者通過調用此惡意實現,用3筆交易轉移了所有 NFT。事件發生后,受害者試圖撤銷對Seaport、Blur、Blend、X2Y2和LooksRare的批準。[2023/7/8 22:25:38]
本來只是想聊聊“怎么寫合約讀權限”這樣一個小問題,結果變成了長篇。其實面對區塊鏈編程和開發時,真的不能像寫單機或集群軟件那樣考慮問題,而要充分考量多方參與、去信任環境下的協作關系,在共享、透明、可追溯的基本哲學之上,關注隱私保護訴求,掂量數據的重要性和敏感性,再深入到技術棧,考慮各種算法的功效和成本、綜合現在和未來的風險和收益以選擇合適策略,這樣才能全面保護數據和隱私,安全地發展業務,維護自身和用戶權益。
BitKeep已上線賠付申領頁面,并以站內信形式向受損用戶推送:2月6日消息,Web3多鏈錢包BitKeep昨日在電報群公告中表示,針對729 APK安裝包遭黑客劫持導致部分用戶資金被盜,BitKeep將提前墊付被盜款項,目前賠付申領頁面已正式上線。公告稱:“黑客攻擊發生在2022年12月26日03:00-06:15 (UTC+8),我們統計受影響地址和資產數據后,決定將以USDT幣種-BEP20形式發放賠付資金。”官方提醒道,賠付頁面僅以站內信的形式向受影響用戶推送。
金色財經此前報道,BitKeep錢包因APK版本劫持而被盜,被盜資金價值達800萬美元。1月19日消息,BitKeep稱2月將上線賠付入口并賠付50%資金,3月底完成剩余資金賠付。[2023/2/6 11:49:32]
Cathie Wood:SBF無法控制BTC,BTC是透明和去中心化的:12月12日消息,Ark Invest首席執行官Cathie Wood在發推表示,比特幣在當前市場環境下表現依舊堅韌且“沒有暫停心跳”,她還表示:“難怪SBF不喜歡比特幣,因為比特幣透明且去中心化,SBF無法控制比特幣。”
數據顯示,盡管FTX引發加密市場動蕩,但長期持有者持有的BTC供應量仍保持不變,活躍比特幣持有者數量11月也上漲了18%,創下2021年以來最大的正增長。[2022/12/12 21:38:43]
清潔算力公司SAI.TECH推出的SAIHUB App支持閃電網絡:8月18日消息,清潔算力服務運營商SAI.TECH Global Corporation近日發布其一站式云管理軟件SAIHUB App 1.1版本,新增支持閃電網絡功能。用戶不僅可以在鏈上為錢包充值,還可以基于添加到比特幣區塊鏈的第二層在鏈下進行或接收即時支付。
據悉,SAIHUB App為用戶提供一站式比特幣資產管理平臺,可以在手機上管理自己的比特幣資產。(Globenewswire)[2022/8/18 12:33:52]
Jump Crypto報告:UST崩盤期間,大型投資者選擇退出而散戶繼續買入:6月3日消息,Jump Crypto在一份關于Terra崩盤的報告中表示,UST脫錨期間,一些大型投資者退出了與Terra相關的頭寸,而小型投資者卻在繼續買入。
到目前為止,該公司基本上對Terra的消亡保持沉默。盡管Jump的總裁Kanav Kariya在LFG基金會的網站上被列為管理委員會成員,但該報告沒有討論他的公司在此次事件中扮演的角色。
基于公開區塊鏈交易(不包括Jump的內部數據)的發現表明,一些大型投資者比許多較小的投資者更早地退出了UST頭寸,這再次表明加密貨幣仍然是大型專業玩家的游戲。
由研究人員Nihar Shah和Maher Latif撰寫的Jump Crypto報告指出,UST的一些大儲戶早在5月7日就退出了Anchor,而一些小儲戶則在5月7日至5月9日期間增加了敞口。Jump表示,UST從Anchor流出在UST進一步脫錨方面發揮了關鍵作用。
報告總結稱:“然而,小儲戶的總倉位規模比中型和大型儲戶小一個數量級,因此敞口的增加不足以抵消資金外流。”此外,Jump認為,根據對錢包歷史的分析,引發這場崩盤的錢包不太可能與專業交易實體有關。(彭博社)[2022/6/3 3:59:59]
Tags:區塊鏈比特幣USTbitkeep區塊鏈dapp開發費多少錢比特幣十年歷史走勢圖JUSTICEbitkeep錢包官網最新版
吳說作者|劉全凱本期編輯|ColinWu流動性以驚人的速度離開農場。“在農場啟動當天進入農場的農民,有42%的用戶在24小時內退出,約16%的用戶會在48小時內離開,到了第三天,70%的用戶將會.
1900/1/1 0:00:00文|Nancy編輯|Tong出品|PANews翹首以盼的波卡平行鏈插槽拍賣終于即將拉開帷幕。隨著39號提案通過,波卡將于11月11日開啟首場拍賣盛宴.
1900/1/1 0:00:00經Odaily星球日報不完全統計,10月25日-10月31日當周公布的海內外區塊鏈融資事件共45起,已披露融資總額約為6.69億美元,較上周數據均有一定下降.
1900/1/1 0:00:00作者|五火球教主出品|白話區塊鏈8月底以來,公鏈市場持續火熱,引起不少關注。另外,多鏈這邊Cosmos生態取得持續進展,波卡插槽拍賣也已經開始了.
1900/1/1 0:00:00在11月8日舉辦的新加坡金融科技節中,RealVision首席執行官、高盛前高管RaoulPal與以太坊創始人VitalikButerin進行了一次深度對話.
1900/1/1 0:00:00歐易NFT平臺是什么? 主要有3個方向:購買:購買由全球頂尖藝術家和機構創作的NFT交易:鑄造和競標NFT盲盒:開啟充滿驚喜的盲盒,抽取稀有NFT,獲得翻倍收益簡單來說就是:1、購買NFT.
1900/1/1 0:00:00