—— 以 xLog 區塊鏈博客為例,談談我對 DApp 的思考
引言:從 Web2 到 Web3 的轉變#
web2 時代的局限性#
- 中心化風險
Web2 時代,數據存儲和管理高度集中,一旦平台遭受攻擊或濫用權力,用戶權限和權益極易受損。 - 信息孤島
各平台間數據難以互通,形成信息孤島,限制了數據價值的充分挖掘與利用,用戶體驗受限。 - 內容控制權缺失
創作者在 Web2 平台上發布內容,往往喪失對其作品的完全控制權,版權保護和收益分配機制不健全。 - 廣告模式侵擾
依賴廣告的盈利模式導致用戶頻繁遭遇無關廣告侵擾,影響使用體驗,且個人數據被用於精準營銷,隱私邊界模糊。
Web3 願景和目標#
- Web3 起源:Web3 源於對 Web2 數據壟斷的反思,旨在利用去中心化網絡,讓用戶重獲數據主權。
- 智能合約:智能合約自動執行協議,無需第三方,確保交易透明、高效,是 Web3 信任機制的核心。
- 區塊鏈技術:區塊鏈提供不可篡改的數據記錄,支撐 Web3 的去中心化應用,保障信息安全與隱私。
- 分佈式賬本:Web3 強調用戶控制個人數據,通過加密數據保護隱私,實現真正的數字賦權。
Web3、智能合約與區塊鏈的核心概念#
有一說一,我註冊這個博客,確實是為了體驗一下概念爆火了數年的區塊鏈概念(儘管大學區塊鏈課程有讓我們體驗 DApp 的任務),為了讓正在看這篇文章的同志們理解 Web3 的概念,我來簡單與 Web2 做個對比。
首先 Web3 產品的形態非常簡單,就是在傳統的 Web 應用形態上,結合了區塊鏈。
產品形態 | 定義 | 實例 |
---|---|---|
DeFi(去中心化金融) | 基於區塊鏈技術構建的金融服務平台,無需傳統金融機構作為中介即可提供貸款、借款、交易等服務。 | Uniswap, Aave, Compound |
NFT(非同質化代幣) | 在區塊鏈上表示獨一無二數字資產的技術,通常用於藝術品、收藏品等領域。 | CryptoPunks, Bored Ape Yacht Club, Decentraland |
DApp(去中心化應用) | 運行在區塊鏈上的應用程序,具有去中心化、不可篡改等特點,涵蓋遊戲、社交等多個領域。 | OpenSea(NFT 市場),Steemit(社交媒體) |
還有超級多,比如 GameFi 等 |
說了這麼多,我們來從傳統開發熟悉的角度出發,對比一下
從註冊登錄流程上感知差異#
Web2 註冊登錄#
這個,但凡是學軟工信安計科的同學們都不陌生
Web3 註冊登錄#
- 基礎架構流程
後端幾乎整個被智能合約代替了。
大概是這樣看待的,Web2 後端是對數據庫增刪改查,但是合約是對區塊鏈增刪改查,因為區塊鏈可以看做一個數據庫。
但是,在 Web3 中,合約端處理計算的時候,會產生費用,計算量越大,開銷越大,這個費用就需要從用戶錢包中扣除代幣,所以我們一般還是需要用後端進行傳統的增刪改查業務,減小合約端開銷。
挑戰(Challenge) 是由服務端(或前端)生成的一段隨機的、一次性的字符串,用於請求用戶對其進行簽名,以證明其擁有某個錢包的控制權。可以把它理解為一個 “臨時口令”,只有真正擁有它的人才能正確簽名它。通常原理是基於 ECDSA(橢圓曲線數字簽名算法),感興趣的同學可以進一步了解。
再解釋一下概念#
- 錢包與代幣
在 Web3 中,每個人都至少有一個錢包,用來存放你的資產 —— 通常情況下,大部分資產都是代幣(Token),而代幣就比如大家熟知的比特幣、以太坊等等... 錢包實際上還分為冷錢包和熱錢包。冷錢包可以理解為一個 USB 硬件設備,需要物理上的接入才能使用;而熱錢包就是一些軟件,比如 MetaMask
- 區塊鏈和區塊
區塊鏈是一種去中心化的分佈式賬本技術,可以用於解決信任問題。
中心化:
去中心化:
簡單來說就是一個鏈表,每個節點叫做區塊(block),區塊包含一組交易記錄,任何能上網的人,都能查看這些交易記錄,甚至完整複製這些記錄做備份 —— 區塊鏈上的數據是透明公開的,幾乎無法篡改。
實驗課的代碼也寫了
{
"Header": {
// 父 hash 值,也就是上個節點的 hash,形成鏈表
"parentHash": "abasbdasbd",
// 創建時間
"timestamp": "2020-02-30",
// 交易樹的根節點的地址
// 交易樹包含該區塊中所有交易的記錄
"transactionRoot": "hash22222",
// 狀態樹的根節點的地址,
// 狀態樹包含一些用戶產生的信息(交易後餘額、🌟合約代碼等)
"stateRoot": "hash21312312", // 收據樹...., 交易歷史(支付方、收款方、手續費等)
"...": "..."
},
"Body": [
"hash111111",
"hash222222", // 這裡就是上面提到的交易樹的根地址
"hash333333",
"hash444444",
"..."
]
}
可能有的同學就會問了 —— 區塊鏈什麼時候添加一個新區塊呢? 這個就取決於區塊鏈所採用的協議了,不同的區塊鏈的規則不太一樣。比如比特幣的鏈,採用 PoW 機制;而以太坊的鏈,採用的優勢 PoS 機制。區塊鏈大概的結構就是上面這樣了,我們再來說說具體的。
- 智能合約
智能合約其實就是一段程序,我們可以把它部署到測試區塊鏈中,形如這樣:
// SPDX-License-Identifier信標版本: MIT
pragma solidity ^0.8.0;、
contract SimpleVoting {
// 定義候選人結構體
struct Candidate {
string name;
uint voteCount;
}
// 儲存候選人信息
mapping(uint => Candidate) public candidates;
uint public candidatesCount;
// 初始化構造函數,設置候選人
constructor() {
addCandidate("Candidate A");
addCandidate("Candidate B");
}
// 投票函數
function vote(uint _candidateId) public {
// 確保投票給有效的候選人
require(
_candidateId < candidatesCount
&& _candidateId >= 0, "Invalid candidate id"
);
// 更新選票計數
candidates[_candidateId].voteCount++;
}
}
後端提供的接口叫 API,但是智能合約的接口地址是一個二進制 Hash 值,叫做 ABI,形如:0xhash123123
結合上面的區塊鏈數據結構,我們可以得知,部署就是把這個程序的 ABI 放到 Body 中,成為狀態樹的一個節點。
是不是和 git 中的 blob tree 管理方式很像?都是默克爾樹(哈希樹)。
- 計算開銷
在說明為什麼要有計算開銷之前,我們先介紹下背景:
在 PoW 或者 PoS 機制下,在一個新區塊產生的時候,參與推動產生新區塊構建的人(比礦工或者驗證者)將會獲得一些代幣作為獎勵(沒錯,挖礦也就是這麼一回事)。這裡其實是指 Gas 費,是以太坊的 PoS 最先提出的一種收費機制。有以下幾個目的:防止濫用區塊鏈,每次操作都是有代價的,這有效減少了高頻攻擊。激勵礦工,如果你願意支付更多 Gas,部分 Gas 會被作為礦工的小費,你的交易將會優先被礦工們處理,更快地放入下一個區塊(放入區塊意味著完成交易),
Web3、智能合約與區塊鏈相對於 Web2 的優勢與不足#
技術方面#
首先是性能瓶頸,Web3 和區塊鏈技術相比於 Web2,交易速度慢、處理能力有限,智能合約的執行效率也受制於鏈上的資源,難以滿足大規模需求。
交易所、錢包、註冊賬戶 / 不註冊賬戶、記錄密碼(私鑰、助記詞)/ 不記錄密碼,操作流程複雜,Gas 費用高昂,網絡連接不穩定等問題時刻困擾著用戶,所以 Web3 概念雖熱,但普通用戶對其認知度不高,缺乏直觀易懂的應用場景,導致技術普及與大眾接受度仍有較大提升空間,有點 “脫離群眾”。
監管方面#
這個博客是搭建在區塊鏈上的,賬戶用錢包地址 + 區塊鏈驗證,博客內容存放在 IPFS 分佈式文件系統中,我體驗了幾天,深感這種方式的好處,但是弊端也很明顯。首當其衝的就是監管問題。
1. 平台無權限治理惡意賬號和內容#
所有的公共空間,在保證言論自由的同時,都應該考慮言論的合規性,去中心化社交平台的核心理念是去中心化治理,所以一旦用戶可以隨意發布惡意內容或者濫用平台,會導致社區環境惡化,我個人認為,應該引入社區治理的模式,比如發布治理代幣,高代幣賬戶參與投票機制,讓用戶決定是否封禁乃至隱藏違規賬號(我不確定能否刪除,按理說賬號在綁定的 IPFS 上發布的內容是可以刪除的,但是如果涉及到鏈上的賬號,可能刪不掉,那就只能隱藏了)
2. 敏感信息在誤傳到區塊鏈上將永遠無法刪除#
首先,我們將,避免直接把敏感信息寫入區塊鏈,頂多也就是存個哈希值,實際內容放在 IPFS 裡,但是既然要 Web3 走進尋常百姓家,或者萬一被惡意上鏈,那實際上是相當糟糕的,而且就算是 IPFS,也應該上傳進對敏感信息加密,只有特定私鑰的用戶才能讀取。
3. 社區區塊鏈的存亡問題對數據的影響#
如果一個社區自己搭建的區塊鏈 “死掉” 了,而上面的內容沒有合併進入公有鏈或其他鏈,用戶將無法通過原有的網絡訪問這些數據。即使數據仍然存在,也需要通過特殊的手段(如直接訪問節點存儲設備)來恢復和訪問這些數據,但這些分佈式數據在哪?備份是個大難題,公有鏈會好一些,但是小型的私有鏈,一旦出現這些基礎設施問題,還是很考驗可靠性的。
4. 法律問題#
剛搞這博客的時候,隨手發了幾篇發癲文章,反正也沒多少人看,看了的話因為匿名也不知道我是哪個,權當一個說悄悄話的樹洞;僅僅是發癲文章問題不大,但是這麼一個平台在法律層面(畢竟黑產都用 BTC 結算嘛,區塊鏈幾乎成為了黑色產業的溫床),特別是《個人信息保護法》上,對現有體系挑戰蠻大的。(這段把我用來寫信息安全法律的結課作業拿來了,能用上真是可喜可賀,可喜可賀,為什麼這麼多課,我要瘋掉了啊啊啊啊啊!!!)
就區塊鏈而言,不同類型的區塊鏈(公有鏈 / 無需許可鏈 vs. 私有鏈 / 許可鏈)在技術架構上的差異,直接決定了其在《個人信息保護法》合規方面的可行性 。許可鏈由於其參與者可知、可控的特性,為建立治理機制和落實法律責任提供了更多可能性,因此在適應現有法律框架方面具有天然優勢 。例如,有的觀點甚至提出,公有鏈的發起人和節點控制者不承擔個人信息處理者的法律責任,而非公有鏈的發起人和有限節點控制者則應承擔此責任。
而智能合約作為 “後端”,能夠根據預設的規則和條件自動執行、控制或記錄合約條款及相關行為 。其運作基於 “如果 - 那麼”(if-then)的邏輯 。儘管自動化特性可以顯著提高交易效率,但也引發了關於人工監督、錯誤糾正以及在執行與法律權利或情勢變更發生衝突時如何干預的問題。 比如其執行結果與底層區塊鏈數據一樣具有不可更改性 。這直接挑戰了《個人信息保護法》中個人撤回同意的權利(第十五條)以及在處理行為變得不合法或不必要時調整或停止處理活動的能力。
所以說,問題大了去了!且不論在上個章節提到的,個人信息上鏈帶來的隱私問題擔憂,秘鑰管理問題帶來的數據問題擔憂,僅僅是一個不成熟的區塊鏈 + 智能合約,一旦部署,便會自動持續地違反《個人信息保護法》,而且難以糾正。冷靜的想一想,數據主體真的是你嗎?《個人信息保護法》賦予個人一系列數據主體權利,包括知情權、決定權(第四十四條),查閱權、複製權(第四十五條),更正、補充權(第四十六條),以及至關重要的刪除權(第四十七條)。此外,還包括撤回同意權(第十五條)和數據可攜帶權(第四十五條第三款)。這些權利,特別是更正權和刪除權,與區塊鏈的不可篡改性直接衝突。你的信息,真的可以肆無忌憚的,被拆成很多片,永久匿名存放在不知道哪個節點上,你失去了刪除權、更正權、可攜帶權、撤回同意權,這些數據真的能被你所控嗎?
因此,個人信息處理者(因為去中心化組織相當難以界定責任主體,我們模糊一下,直接把組織當處理者主體)的義務,必須對整體安全負責,否則區塊鏈等技術,難以真正意義上走進千家萬戶。是啊,冷靜想一想,區塊鏈雖然真的很棒,Web3 真的很棒,但是 “代碼即法律” 的觀念,與法律體系需要解釋和適用法律、提供救濟以及適應不可預見情況的需求相衝突。法律框架是動態的,而一旦部署的代碼可能是僵化的。涉及個人信息的智能合約執行所產生的爭議,仍將受到《個人信息保護法》的規制。智能合約自動化執行規則,雖然可以減少某些類型的人為錯誤或偏見,但也可能引入新的、系統性的偏見 —— 如果其底層代碼或數據輸入存在缺陷或歧視性。區塊鏈生態系統催生了新的參與者類型,如礦工 / 驗證者、節點運營者、智能合約開發者、交易發起用戶等,他們在《個人信息保護法》下的角色和責任尚不明確 ,在明確好一整個體系權利和責任人前,怎能大肆宣揚區塊鏈技術,乃至不可控的推廣呢?
毛主席教導我們,不要一口氣想解決所有的矛盾,矛盾是無窮的,要抓住事務的主要矛盾,其他的問題就會迎刃而解,我們接下來列舉一下,看一看技術究竟帶來那些主要矛盾:
《個人信息保護法》條款與核心要求 | 技術特性帶來的挑戰 | 具體挑戰描述 |
---|---|---|
第四十七條 – 刪除權; 第四十六條 – 更正權 | 不可篡改性 | 無法直接刪除或修改鏈上已記錄的個人信息,難以滿足用戶刪除或更正數據的請求。 |
第七十三條 – “個人信息處理者” 的認定 | 去中心化 | 在公有鏈或 DAO 中難以確定唯一或共同的、自主決定處理目的和方式的責任主體。 |
第十四條 – 知情同意、明確同意; 第十五條 – 撤回同意權 | 智能合約的自動化、不可逆執行 | 難以確保用戶對複雜智能合約處理邏輯的充分知情;用戶撤回同意後,難以停止或修改已自動執行的合約。 |
第二十四條 – 自動化決策的規制 | 智能合約的自動化決策特性 | 難以保障自動化決策的透明度、公平性,以及用戶獲得解釋、拒絕僅基於自動化決策的權利。 |
第三十八至四十條 – 個人信息跨境傳輸規則 | 區塊鏈網絡的全球分佈式特性 | 難以識別數據出境方和接收方,難以適用安全評估、標準合同等機制;數據在多節點複製導致事實上的持續跨境流動。 |
第六條 – 數據最小化原則 | 區塊鏈的全節點數據複製、永久記錄特性 | 鏈上存儲和全網廣播可能導致處理超出最小必要範圍的個人信息。 |
第五十一條 – 安全保障義務 | 去中心化、密鑰管理複雜性 | 雖有加密等技術,但整體安全責任歸屬不清,鏈上數據一旦洩露(如密鑰失竊)難以控制;開源代碼可能存在漏洞。 |
所以,這不僅僅是個技術問題,還涉及到監管、運營等,是個多方面的法律問題。
技術的問題,終究還是需要技術對症下藥,運營者的問題,終究還需要運營者做出考量。下面我就列舉一下個人拙見,作為本章節的尾聲。
策略類別 | 具體策略 | 描述 | 《個人信息保護法》合規效益 | 主要考量 / 局限性 |
---|---|---|---|---|
技術 | 個人數據鏈下存儲 | 將敏感個人信息存儲在鏈外可控數據庫,鏈上僅存哈希或引用。 | 便於實現刪除權 / 更正權,降低鏈上數據暴露風險。 | 可能增加系統複雜性,部分犧牲鏈上數據直接管理的價值。 |
技術 | 隱私增強技術(PETs)應用 | 如零知識證明、同態加密等,在不暴露原始數據情況下進行驗證或計算。 | 提升數據處理過程中的隱私保護水平,可能有助於實現數據最小化。 | 技術成熟度和標準化程度不一,法律認可度待明確,實施成本可能較高。 |
技術 | 穩健的匿名化 / 假名化處理 | 對個人信息進行有效的匿名化處理,或在假名化處理時評估並降低再識別風險。 | 匿名化信息不適用《個人信息保護法》;假名化有助於降低直接暴露風險。 | 實現真正匿名化難度大;假名化數據仍可能被再識別。 |
治理 / 運營 | 採用許可鏈 / 聯盟鏈 | 參與者身份可知,可建立明確的治理規則和責任分配機制。 | 有助於明確 “個人信息處理者”,落實各項法定義務。 | 可能犧牲部分去中心化特性,適用場景受限。 |
治理 / 運營 | 實施數據保護影響評估(DPIA) | 對高風險的區塊鏈數據處理活動進行事前風險評估和記錄。 | 主動識別和緩解法律風險,滿足《個人信息保護法》第五十五、五十六條要求。 | 評估過程可能複雜耗時,需要專業知識。 |
治理 / 運營 | 建立清晰的治理框架和用戶透明度機制 | 明確數據處理規則、各方權責,清晰告知用戶其信息處理情況及權利。 | 增強問責性,保障用戶知情權、決定權。 | 治理框架設計和執行依賴參與方共識和配合。 |
法律 / 監管 | 出台針對性的監管指南和標準 | 監管機構發布關於《個人信息保護法》在區塊鏈場景下適用的具體指引、標準合同範本等。 | 提供法律確定性,指導合規實踐。 | 指南制定需要時間,可能滯後於技術發展。 |
法律 / 監管 | 推動行業自律和認證機制 | 鼓勵行業協會制定行為準則,建立個人信息保護認證體系。 | 補充法律監管,提升行業整體合規水平。 | 自律效力有限,認證機制的權威性和普適性需要建立。 |
結語#
唉,想當年剛出區塊鏈的概念時,我還是一個小毛孩,沒想到十多年過去了,我現在在大學機房寫博客紙上談兵高談闊論,哈哈哈。我就模仿領導講話作為本文的結語吧:世界是運動的,向前的,由於技術和法律都在快速演進 ,今天提出的影響和挑戰並非一成不變。隨著技術的成熟和法律解釋的深入,新的問題和解決方案將不斷湧現。因此,所有利益相關方都必須保持持續的警惕、深入的研究和開放的對話,以適應這一動態變化的領域。相信未來 Web3、智能合約與區塊鏈真的能為新時代的互聯網賦能,少一些黑產,多一些用武之地,實現人和社會自由而全面的發展(我想,這玩意既有共產主義的雛形,又有資本主義高級階段的自由和明碼標價,沒準真能成為人類未來特色社會形態的基石呢!!)
以上。