詳解Secret Network:什麼是可編程的隱私公鏈?
撰文:0x76/律動BlockBeats
在區塊鏈行業中,隱私一直是一個十分混亂的概念。因此在真正開始介紹今天的隱私項目 Secret Network 之前,有必要先對隱私相關概念重新進行一下梳理。
本文將分為兩部分,第一部分重新辨析隱私及相關的主要概念。第二部分我們則直接上手,看看目前行業內第一條真正可用的,支持隱私編程的公鏈 Secret Network,在使用中與其他公鏈到底有哪些不同。
當我們在討論隱私的時候,到底在討論什麼?
隱私,是自比特幣誕生以來便一直圍繞在加密行業的標籤。中本聰也曾在比特幣白皮書中單列一章討論隱私問題。然而,比特幣所提供的隱私,真的是我們日常生活意義上的隱私嗎?
天然匿名的帳戶
我們知道,目前以比特幣、以太坊為代表的主流區塊鏈網絡,其最重要的特徵之一,便是其所有交易記錄是完全公開可驗證的。而用戶之所以還能在這種極端透明的環境中保有一定的隱私,唯一的原因,便是其獨特的帳戶註冊機制。
對於任何一個帳戶體系來說,其最重要的工作就是防止出現帳戶重名。因為一旦出現重名,與之相關的信息,乃至資產的權屬都將產生爭議,進而導致整個系統出現嚴重的混亂。就像數據庫每個表中的主鍵一樣,一個系統中的帳戶必須保證唯一性,才能使得整個系統正常運轉。
因此在一般的帳戶體系中,必然需要存在一個中心化節點,專門負責新帳戶的註冊工作,以保證系統中每個帳戶的唯一性。而比特幣由於需要做到完全的去中心化,因此必須採用其他的解決方案。
而我們已經知道,最終中本聰給出的答案,是每個用戶通過隨機算法獨立生成地址。那么隨機算法如何防止地址出現重複?答案是根本防止不了。我們能做的,只是從概率上將地址出現重複的概率降到足夠低,最終以這種去中心化的概率確定性,代替中心化註冊機制的最終確定性。
而由於這種生成機制完全隨機,因此所有地址都具有先天的匿名性。這種匿名性,便是我們早期常常談到的隱私。
不過,通過地址的匿名性保護隱私有兩個重要的缺陷。一是匿名的不可逆性,一旦一個地址的真實身份暴露,則這種匿名性的喪失是不可逆的。
另一個特點是維護地址匿名的工作完全是鏈外事物。也就是說,在地址生成後,維護匿名的工作都由鏈外的持有人負責,區塊鏈系統對相關的任何事情都一無所知也無能為力。
在這種情況下,早期的鏈上隱私解決方案只能通過不斷刪號重練,並切斷新匿名地址與舊地址的聯繫,來幫助用戶恢復匿名性。
我們熟知的早期隱私項目,如 Tornado.cash,乃至達世幣 ( Dash)、門羅幣 (XMR, Monero)、大零幣 (ZEC, Zcash) 等等隱私公鏈,基本也是圍繞著這個思路設計的。
匿名帳戶體系的瓦解
然而當區塊鏈技術逐漸由比特幣時代過渡到以太坊為代表的智能合約時代後,新誕生的各類應用,對原有匿名帳戶體系的衝擊也越來越大。
早期的地址僅僅用來保存購買的加密貨幣。而在今天,我們需要用這些地址購買 NFT 頭像、關聯社交帳戶、持有域名、保留遊戲道具甚至發布 Mirror 文章。所有這些活動,都使得繼續維持這些地址匿名的成本越來越高,而再次進行刪號重練的轉移工作也由於越來越複雜以至於幾乎不可行。
因此我們突然發現,簡單的匿名地址已經不再能滿足新時代用戶的使用需求,我們需要更加先進的隱私解決方案。
什麼才是真正的隱私?
對於隱私的定義我們不再做什麼學術上的討論,這裡我們直接沿用生活中對隱私約定俗成的理解。我們在日常生活中提到的隱私,並不是讓人們每天戴著面具生活,而是即使我們公開了身份,也能在需要的時候,擁有自己私密的空間,進行私密的交易。
對應到區塊鏈中,我們需要的隱私最好是這樣一種形態。即便我的地址已經是公開的實名地址,我也可以根據自己的需要,隱藏自己持有的資產數量,與 DeFi 協議進行互動而不必擔心信息被公開,購買的 NFT 雖然存在自己的地址中,卻可以根據自己的意願選擇是否公開展示。
對於這種需求,傳統的無法支持智能合約的隱私公鏈們顯然已經無能為力。我們需要新的可編程的隱私公鏈來完成這個使命。
可編程的隱私公鏈
目前整個市場中,能夠符合支持智能合約,並且可對公鏈上發生交易的隱私進行定制化選擇的公鏈有兩個,一個是 Oasis Labs 推出的針對隱私編程的 Cipher Paratime,另一個就是 Cosmos 生態中的隱私公鏈 Secret Network。
當然,我們在下文講的是目前生態已經初具規模且切實可用的 Secret Network。而 Oasis Labs 的隱私產品由於依然缺少可用的應用,我們只能以後有機會再進行介紹了。
(注:Oasis 網絡有不同的 Paratime,不了解 Paratime 概念的讀者可以先簡單理解成以太坊不同的 Rollup。許多用戶接觸過的只是其中的 EVM 兼容版 Emerald Paratime,而真正支持隱私編程的 Cipher Paratime 目前尚不成熟。)
Secret Network 發展歷程:從以太坊到 Cosmos 生態應用鏈
Secret Network 項目早期名稱為 Enigma,最早希望依托以太坊生態進行開發。後在遇到性能瓶頸後調整技術路線,改為通過 Cosmos SDK 開發一條獨立的,支持隱私計算的公鏈。這條公鏈便是如今的 Secret Network。
當然,作為 Cosmos 生態的一員,Secret Network 自然也可以無縫集成 IBC 跨鏈協議,可以方便地與 Cosmos 生態其他公鏈進行互動。
Secret Network 隱私功能實操
之前許多關於隱私項目的介紹文章,總喜歡使用一些似是而非的宏大概念,不是為了把事說清,而是希望把水搅混。因此,在本文的後半部分,我們直接通過上手實操的方式,向讀者直觀的介紹到底什麼才是可編程的隱私。
首先,Secret 與任何其他智能合約平台型公鏈類似,都有自己的原生 Token:SCRT,這個 Token 可以用於支付 Secret 網絡的交易費用,以及參與 PoS 質押。與其他智能合約平台(如 Juno)一樣,SCRT 的轉帳記錄是完全透明公開可驗證的,因此沒有任何隱私屬性可言。
但是與 Juno 不同的是,在 Secret Network 中存在一種特殊的隱私 Token,我們稱其為 sToken。每一個普通 Token 都可以被打包成 sToken,從而獲得隱私屬性。
在 Keplr 錢包中我們也能發現,不同於其他公鏈只有 Stake 與 Governance 兩個選項,在 Secret Network 欄目中的治理選項卡下方,還有一個 Secret SCRT 按鈕。點開便可以看到 Secret 到 sSecret 的轉換頁面。
在這個界面中,我們可以直接將錢包中持有的非隱私 SCRT 代幣轉換成具有隱私屬性的 sSCRT 代幣。
然而如果你是第一次使用 sSCRT,你會發現當你轉換完成後,錢包界面中並不會直接顯示 sSCRT 的餘額,而是顯示 Loading… 狀態。
這是由於在 Secret Network 中,任何 sToken 對任何訪問者都是默認不可見的,包括地址的持有人。如果想要看到 sToken 的餘額,需要先使用錢包簽署交易生成一個 Viewing Key。
我們如果刷新這個頁面,系統便會自動彈出如下的 Add Token 交易簽署界面。這裡的 Add Token 指的便是添加 sSCRT 通證,界面上方顯示的合約地址是 sSCRT 的合約地址。
點擊 Submit 提交後便會進入交易簽署界面。注意,簽署任何交易都需要 SCRT 支付 gas 費,sSCRT 不能作為 gas 使用。因此,當你在進行 sSCRT 兌換的時候,記得保留一些 SCRT 餘額。
簽署後,系統便會為你的錢包生成一個 Viewing Key。獲得了對應 Viewing Key 的錢包,將有權限對相應 sToken 進行查詢、轉帳等各種操作。而且,Viewing Key 的添加是一時性的,後面只要不更換錢包,便不再需要重新計算 Viewing Key。
正如 SCRT 在 Secret Network 中擁有唯一對應版的隱私通證 sSCRT,其他任何 Token 進入到 Secret Network 之後,都可以生成一個單獨的隱私通證 sToken,而每個 sToken 都對應著唯一的合約地址。
同理,當帳戶第一次接收到一個新的 sToken 時,也都需要簽署交易生成一個新的 Viewing Key,否則 sToken 的餘額無法正常顯示。
那麼 sToken 在使用時,是如何保護用戶的隱私的?下面我們通過 Mintscan 瀏覽器對一些常見交易進行驗證。
(1)收付 sToken
當一個地址在支付 sToken 時,會在瀏覽器中留下一筆交易記錄。我們以支付 sSCRT 為例,在瀏覽器中付款方地址是公開可見的,同時我們也可以知道這筆交易涉及與 sSCRT 合約的交互,但是收款方以及交易金額都不可見。
我們再來看看收款方的狀態,當我們確認錢包中已經收到這筆資金時再打開 Mintscan,發現交易歷史記錄中並沒有顯示有新的交易發生。因此,任何人都不能通過公開信息,查到一個地址何時收到過多少 sToken。
(2)交易與兌換
我們使用 Secret Network 中的原生交易平台 SecretSwap 將 0.1sSCRT 兌換為 sATOM。
以下便是這筆交易在瀏覽器中的記錄。可以看出,我們依然能夠看出付款方的地址,同時也能推斷他與 sSCRT 合約進行了交互,但是他做了什麼,兌換了哪些代幣,金額是多少,都無法從公開記錄中驗證。
不過,由於我們本次是第一次持有 sATOM,因此在錢包界面中無法直接看到剛才購買的 sATOM 金額,我們需要再簽署一筆交易用來創建 sATOM 的 Viewing Key,才能繼續操作我們購買的資產。
我們直接來到 Secret Network 官方提供的 sToken 轉換專用網站(wrap.scrt.network),並連接 Keplr 錢包。
可以看到,在右側 sATOM 的餘額處,顯示了一個黃色頭像表示尚未創建 Viewing Key。鼠標直接點擊此處便會彈出創建 Viewing Key 的交易簽署界面。
簽署成功後,我們便可以在界面以及 Keplr 錢包插件中看到 sATOM 的餘額了。
同時,剛才的簽署操作會留下一筆公開的交易記錄。顯示你的地址與 sATOM 合約地址有過一次交互,但無法判斷具體的交互內容。
以上便是使用 sToken 進行支付與交易時,在 Secret Network 上產生的公開信息。可以看出,通過使用 sToken,用戶可以有選擇地隱藏自己交易的關鍵信息,保護用戶關鍵信息的隱私安全。
橋接非隱私資產
正如我們剛才看到的,Secret Network 可以將任何資產轉換為隱私通證,進而隱藏相關的交易信息。那么如果用戶希望使得自己的以太坊等其他公鏈資產也擁有這種隱私保護功能,就需要通過跨鏈橋進行資產跨鏈。
而 Secret Network 的官方跨鏈橋包含兩個重要的組件,一個是支持 IBC 的跨鏈打包橋,另一個是支持以太坊、BSC 以及門羅幣跨鏈的官方橋。
(1)IBC 跨鏈打包橋(https://wrap.scrt.network/)
這個橋就是我們剛剛在查詢 sATOM 地址時使用的應用,他不但可以幫助用戶快速的將普通代幣打包成隱私代幣(中間的紅框),也可以通過 IBC 協議,在不同 Cosmos 公鏈間進行快速的資產跨鏈轉移(左側紅框)。
我們點擊界面左側的雙向箭頭按鈕直接調出 IBC 跨鏈的界面,在這裡可以操作資產跨入 Secret 以及跨出 Secret。
而當存入資產後,便可以直接點擊右側的 WRAP 按鈕,將其轉換成隱私版本的 sToken。
(2)官方橋(https://bridge.scrt.network/)
Secret Network 的官方跨鏈橋已經支持了以太坊、BSC 以及門羅幣的資產跨鏈,其跨鏈方式與普通跨鏈橋類似,在此不做演示。
通證標準
Secret Network 建立了獨特的隱私通證標準 SNIP-20,該標準基於 Cosmos 生態的 CW-20 標準改造而成,主要加強了原標準的隱私功能。此外,還有支持隱私功能的 SNIP-721 標準,用於支持隱私版的 NFT 發行。
可編程的隱私到底有什麼用?
看了剛才的簡單體驗,可能很多讀者已經發現了一個很重要的問題,那就是:操作這些隱私應用都好麻煩啊。
我們不但需要在原始 Token 與 sToken 之間頻繁轉帳,還要不斷簽署交易添加 Viewing Key。然而搞的這麼麻煩的目的又是什麼呢?除了可以隱藏我的錢包裡有多少錢(好像也沒必要,畢竟我錢包裡也沒什麼錢),Secret Network 的隱私計算還能給我們帶來什麼?
1. 抗 MEV
如果你曾經在以太坊中進行過交易,那麼你一定聽說過三明治攻擊。也就是當你簽署一筆交易的時候,由於交易在打包前在內存池中公開可見,由此礦工和套利者可以在你的交易之前先進行買入,並在你的交易完成之後進行賣出,導致你的交易成本升高。
而在 Secret Network 中,由於可以將交易指令隱藏,無論是礦工還是套利機器人,都無法再進行 MEV 提取,最終的結果是,用戶可以以真正公平的價格,買到自己需要的資產。
2. 隱私版 NFT
Secret Network 上的隱私版 NFT,同樣可以提供 sToken 相似的功能。比如你購買了一個極為珍貴,類似 CryptoPunk 的 NFT,你擔心之後被別人發現並對你進行針對的釣魚攻擊。為了保護資產的安全,你可以選擇將其隱藏,使得別人在你公開的地址中無法看到你持有的 NFT 資產。
(點擊你購買的 NFT 右側的鑰匙按鈕,可以調整是否顯示持有這個 NFT)
同時,Secret Network 上的 NFT 同樣可以選擇將鏈上的元數據進行加密處理。NFT 的鑄造者可以規定,只有該 NFT 的持有者才能看到真正的元數據地址,顯示清晰圖片,而其他地址則只能看到經過模糊處理的圖片。
比如在 Secret Network 最大的 NFT 交易平台 stashh 中,我們可以點擊左側的年齡驗證按鈕後,瀏覽隱私版的 NFT 產品。
這類 NFT 在購買前用戶只能瀏覽一個虛化的圖像,而只有當你真的購買後,才能看到完整的 NFT 元數據。
不過由於這些產品都不便宜,因此在這裡就不買來給大家演示了。最後在此提示想嘗試的用戶謹防詐騙,因為這些 NFT 的元數據是完全隱藏的,因此你在購買前也沒辦法知道,裡邊裝的到底是什麼東西。
Secret Network 的主要問題有哪些?
經過上文簡單的體驗,我們獲得了對 Secret Network 一個比較直觀的體驗感受。首先,Secret Network 具有任何智能合約平台都具有的基本功能,同時也支持常見的應用部署。
目前的 Secret Network 生態既包括去中心化交易平台、各類 DeFi 應用,也包含 NFT 鑄造與交易市場。如果不考慮隱私代幣 sToken,其體驗與傳統智能合約公鏈基本無異。
但是其缺陷也比較明顯,那就是用來保護隱私 sToken 給用戶的交互體驗帶來了比較大的影響。新用戶不但需要搞清各種涉及隱私的新概念,還需要在隱私通證與非隱私通證之間頻繁轉換,如果沒有明顯的激勵或使用需求,普通用戶可能很難堅持使用下去。
此外,就在前不久,Secret Network 上的 DeFi 應用 Shade Protocol 發放了空投。結果,直接就把 Secret Network 網絡給堵死了,不但主網上交易確認的速度緩慢,很多為了領取空投而從 Osmosis 提取 SCRT 的用戶,一兩天都收不到跨鏈資產。
一側 Osmosis 中的 SCRT 已經付出,另一側遲遲無法到帳,這也是我個人使用 IBC 跨鏈第一次遇到這麼差的體驗(當然這主要是 Secret Network 的責任)。雖然團隊馬上進行了緊急更新,然而這樣的交易處理能力,離真正的大規模使用,恐怕還有不小的距離。
總的來說,Secret Network 依然是一個整體處於開發早期的公鏈,上面的生態應用雖然可以讓用戶初步體驗能夠真正落地的隱私計算產品。但是目前交互體驗還有諸多不足,依然需要持續的發展和改進。