超零協(xié)議(SERO)產品技術分析

前段時間在做聯盟鏈,接觸了跟隱私相關的一些技術。由于在大多數情況下,鏈上的業(yè)務數據都屬于交易各方的商業(yè)機密,不可能讓用戶無限制的訪問。但是區(qū)塊鏈去中心化的特性,又決定著,不可能弄出一個授信的中心機構來保存這些機密數據。

因此我十分關注公鏈界匿名幣區(qū)塊鏈技術的發(fā)展。我關注過門羅幣(Monero),達世幣(DASH)以及大零幣(Zcash)等熱門的匿名區(qū)塊鏈技術。環(huán)簽和混幣器等技術的應用局限性太大,而Zcash使用的零知識證明適合大多數場景,但它一直都很慢,適用性也不高。并且,他們都沒有實現對圖靈完備智能合約的支持。基于純粹的UTXO,這種技術對智能合約的實現并不友好。

前幾天公司聚餐時,有同事提到,最近出現了一個名為超零協(xié)議(SERO)的公鏈,是個支持圖靈完備智能合約的匿名幣,采用零知識證明實現,據說目前已經完成了開發(fā)。這引起了我的興趣,因此打算研究一下,看能否借鑒一二。

官網和白皮書

說實話,SERO 團隊的營銷和SEO做得并不算好,我在百度搜索 sero 的時候,首頁全部是日系各位老師的種子鏈接。直到我搜索了sero cash 才有關于這個公鏈的一些信息。

從官網提供的信息看,SERO 開發(fā)團隊應該在中國國內,基本都是華人。從linkdin上的履歷看,這些成員在技術領域,有豐富的研發(fā)和工程實踐經驗。如果真像官宣的那樣,SERO是全球第一個支持圖靈完備智能合約的匿名鏈,而且在零知識證明的生成上比Zcash快20倍,那么作為一個中國人,這還是很讓人興奮的。

在官網分別能找到白皮書和github開源項目的鏈接。根據官宣的信息,SERO 項目已經開發(fā)完成并且已經開源。因此我下載了白皮書并且將github里面的源碼克隆,做了一番簡要的分析。

-----------------------------------------------------------------------------------------------------------------------

超前的源碼

我發(fā)現一個非常有意思的事情,這個事情顛覆了我對區(qū)塊鏈項目的理解。

通常的區(qū)塊鏈項目 的白皮書要超前其源代碼很多個開發(fā)周期。最極端的情況下,一些空氣幣,他們的白皮書寫得天花亂墜,但是也許還沒等到主鏈開發(fā)出來,項目方就跑路了。

而對于SERO項目,它的源代碼要超出白皮書幾個周期。也就是說,我發(fā)現官網上 V1.0.6 版白皮書只映射了 SERO 一個月前(Alpha 0.1版)源碼的內容。而當前(Beta 0.3.0 版)版所發(fā)布的功能,比如“交易生成速度優(yōu)化”、“發(fā)行匿名票據”和“測試邀請許可證”等功能,并沒有在白皮書里面體現。

也許SERO團隊每次都是在開發(fā)完成后再更新白皮書的。

-------------------------------------------------------------------------------------------------------------------------

匿名幣的基本理論

根據SERO白皮書的描述,匿名幣有三種最基本的特性【不可追蹤性、不可關聯性、抗分析能力】這很好理解,你轉一筆錢給其他人,非交易雙方,即使用大數據分析法,也不應該能追蹤到這筆錢的來源、去處、金額、以及該筆交易相同賬號的其他的交易行為。

除此之外,SERO白皮書還提出【可選的審計方案 】比如,你可以將你的配偶設為可選的審計方,那么除了你和你配偶以外,其余的人都無法從數據中分析出跟你相關的信息。而除你以外,即使你的配偶,也無法動用你的錢。

SERO的白皮書中,還將匿名資產和智能合約都分為線上和線下兩類,從上面的描述來看,Beta版增加的匿名票據,應該在 線上匿名資產 這個范疇。這塊信息量較大,有興趣的人可以自行閱讀白皮書。

另外,SERO的官宣信息中提到,他們有一個Super-ZK的C++庫,比Zcash使用zk-snarks的方式高效20倍,并給出了跟Zcash對比的視頻。我在github中找了很久沒找到這個庫。后來發(fā)現,好像是一個名為 go-czero-import 的庫,這個庫引用了一個名為czero的C++庫。其中有生成交易證明的接口。

-------------------------------------------------------------------------------------------------------------------------

SERO的功能

為了嘗試和調試SERO的功能,我克隆了SERO所有的源碼。我發(fā)現SERO 項目還有一個嚴重的問題,作為一個有著完整產品的項目,居然沒有一個對整個產品集的統(tǒng)一介紹,導致我必須要自己去摸索各個功能,這樣實在是有些浪費時間。

SERO的主節(jié)點程序 gero 是用Go語言版的以太坊 geth 改的,雖然看起來改動有點大,但主干并沒有變化。還好我對geth很熟悉,只在引入C++動態(tài)庫的時候磕磕碰碰了一下。最后根據github上的readme,在 MACOS 系統(tǒng)和 CENTOS7 系統(tǒng)上分別成功編譯并運行了。

SERO整個產品體系包括下面幾個系統(tǒng)與功能:

go-sero 全節(jié)點服務程序

代碼位置:http://github.com/sero-cash/go-sero

通過編譯后獲得程序gero

后臺服務功能

gero啟動時,根據配置,節(jié)點會自動選擇同步AlphaNet或是BetaNet網絡的數據,充當網絡中的一個全數據節(jié)點,并執(zhí)行客戶端發(fā)出的指令。客戶端錢包 或者 交互式控制臺 通過rpc或者ipc連接全節(jié)點。

交互式控制臺

當對gero增加console參數的時候,gero會變成一個 交互式控制臺 。不得不說,gero中指令的操作方式,跟以太坊幾乎是一致的,這對于像我這樣熟悉以太坊指令的人,操作起來沒有什么門檻。

賬戶管理和匿名資產

在賬戶管理方面,gero提供的資產查詢結果分了兩種類型,Tkn和Tkt,我沒找到對應文檔,但根據網上宣傳信息看,應該分別代表Token和Ticket,就是所說的通證與票據。票據可以認為是非同質通證,唯一且不可分割。根據白皮書和宣傳資料,這兩種資產都是匿名資產。也就是說,你交易的時候,SERO會隱藏這兩種資產的信息。

匿名交易

因為我沒有AlphaNet或是BetaNet的測試許可證,無法通過挖礦來確認交易,因此我用Dev模式測試了一下匿名交易,在我的機器上,確實能看到交易生成時間是7s。從交易數據看,交易證明采用Commitment模式,可以確定是匿名交易。至于AssetCM和OutCM各代表什么,暫時弄不明白意思是什么,只有等到通讀代碼或最新白皮書時再仔細研究了。

賬本創(chuàng)建(挖礦)

這個指令與以太坊一致,從區(qū)塊的結構來看,礦工每次接受獎勵的coinbase地址,都在變化,這個地址應該可以對應到白皮書中描述的暫存地址(PKr),也就是說,這塊究竟是誰挖出來的,除礦工自己外,不會有人知道。

智能合約

智能合約的安裝步驟也與以太坊一致,社區(qū)的宣傳信息中提到,SERO與以太坊智能合約的指令集是兼容的。我將部署代碼從以太坊的Remix編輯器拷貝過來,將代碼中的eth改為sero后進行測試,結果安裝和運行都沒有問題。智能合約可以發(fā)行匿名的Token和Ticket。這樣的話,應該可以實現匿名版本的ERC20與ERC721智能合約了。

資產獨立性

這個特性是我自己發(fā)現的,V1.0.6版白皮書中并沒有說清楚。對于匿名Token和Ticket資產,它們與發(fā)行自己的智能合約是相互獨立的。

這意味著資產與規(guī)則相互獨立。智能合約發(fā)行的匿名資產,與SERO幣地位等同,而不是記錄在智能合約的map中。這樣的方式使得SERO智能合約的適應性超越了以太坊,打破了智能合約之間的界限,很多復雜功能實現起來更加簡單。比如可以在SERO上編寫去中心化交易所的智能合約。

智能合約編輯器

產品地址:https://remix.web.sero.cash

SERO Remix編輯器中自帶有如何發(fā)行匿名Token和匿名Ticket的例子。

區(qū)塊瀏覽器

產品地址:https://explorer.web.sero.cash

SERO產品集中包含一個簡潔的區(qū)塊瀏覽器。區(qū)塊瀏覽器包含區(qū)塊、交易兩類視圖。在區(qū)塊鏈瀏覽器中,SERO幣和用SERO智能合約發(fā)行的匿名代幣,因為其匿名屬性,交易各方的交易地址為暫存地址PKr,交易金額則會用0代替實際的交易金額。

不過對于SERO的區(qū)塊瀏覽器,我覺得未來可以在智能合約數據展示上下一些功夫。畢竟對于一個區(qū)塊鏈應用,即使在大多數交易加密的情況下,有部分公示數據在智能合約中被展示非常有必要。

錢包客戶端

根據社區(qū)宣傳的說法,錢包客戶端會在24號之前開源出來,錢包將包括賬戶管理、交易管理智能合約管理三個功能,由于目前并沒有看到實物,上面的圖是從宣傳頁拷貝過來的。

開發(fā)和測試環(huán)境

根據github上的信息,SERO分為四個環(huán)境:

Dev環(huán)境 用于個人測試,需要手工鏈接才能形成網絡,采用參數--dev啟動即可,我就是在這個環(huán)境中完成的SERO試用。

AlphaNet 是SERO團隊內部測試網絡,采用--alpha參數啟動,可以加入到這個網絡中,但是基本上沒有這個必要。

BetaNet 是社區(qū)公測網絡,采用POW共識,據說在主網上線時,BetaNet中挖出的SERO幣會一比一映射到MainNet中。不過在這個網絡中挖礦需要向 申請測試許可證。我發(fā)出了測試申請,希望能夠盡快通過審核,(像我們這樣的窮人只能通過挖礦來賺SERO幣了)

MainNet 是主網絡,將在明年上線,根據白皮書上所說,到時將會換成SE-Random共識,看白皮書中對這個算法的描述,大體上跟Algorand差不多。至于能不能達到理想的 3000 TPS,只能看 SERO 那時的實現方式了。不過對于匿名幣來說,TPS是不是足夠高并不是我最關心的,我比較關心能否滿足大多數應用場景。

-------------------------------------------------------------------------------------------------------------------------

有趣的名稱

在研究SERO的過程中,我發(fā)現SERO團隊十分的有趣。

首先他們在白皮書中使用西方國家家喻戶曉的《龍槍編年史》來記錄較大的版本變化,類似于以太坊的大都會、拜占庭等名字,他們叫秋暮之巨龍冬夜之巨龍、夏焰之巨龍春曉之巨龍。沒有聽過的朋友不要緊,一定玩過一款經典游戲《龍與地下城》吧?他們是一個公司出品的。

如果你以為這就完了?那就太小看SERO團隊工程師了的惡趣味了。在看《sero vs zcash》視頻的時候,演示者打過一串文本 “1 SERO=1^9 ta” ,但是并沒有講解是什么意思。我思考了很久,突然頓悟了,SERO 跟賽羅發(fā)音很像,也可以寫成超級-賽羅。雖然賽羅可以是很多的東西,但豐富的動畫片觀影經驗告訴我,它非常有可能是賽羅奧特曼,因為奧特曼的起源來自等離子火花塔。這樣的話SERO幣的最小單位是塔(TA)就能說得通了。當然,這純粹是我的猜想,官方并沒有這么說過。

Btw我會持續(xù)關注SERO項目的動態(tài),畢竟遇到一個自己喜歡的項目,比遇到喜歡的人還難呀!

-------------------------------------------------------------------------------------------------------------------------

參考:

【SERO白皮書下載】http://sero-media.s3-website-ap-southeast-1.amazonaws.com/Sero_CHS_V1.06.pdf

[源代碼] https://github.com/sero-cash/go-sero

[SERO區(qū)塊瀏覽器] https://explorer.web.sero.cash/blocks.html

[SERO智能合約編輯器] https://remix.web.sero.cash/

[SERO 介紹視頻] https://v.qq.com/x/page/s0792e921ok.html

[SERO vs Zcash 視頻] https://v.qq.com/x/page/r0796jotef8.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 世人如何評價梁武帝蕭衍?大概逃不過一世英豪,晚節(jié)不保。 蕭衍的一生,傳奇、復雜且荒誕。他締造了“文物之盛,獨美于茲...
    不與梨花同夢閱讀 1,292評論 0 1
  • 喧囂的那個我其實是我自己編造出來的一種人格。所以G先生每次不理我,我都是抱著一種受虐和驚奇的心理在接受著...
    Bunny_青蛙閱讀 443評論 0 0
  • 這個中秋假期過的很開心。會發(fā)現原來你關心,想見的人都還在。特別的溫暖。除了以前的親戚,朋友。今年中秋多了一個人。就...
    提筆忘字2016閱讀 292評論 0 0

友情鏈接更多精彩內容