超零协议(SERO)产品技术分析

前段时间在做联盟链,接触了跟隐私相关的一些技术。由于在大多数情况下,链上的业务数据都属于交易各方的商业机密,不可能让用户无限制的访问。但是区块链去中心化的特性,又决定着,不可能弄出一个授信的中心机构来保存这些机密数据。

因此我十分关注公链界匿名币区块链技术的发展。我关注过门罗币(Monero),达世币(DASH)以及大零币(Zcash)等热门的匿名区块链技术。环签和混币器等技术的应用局限性太大,而Zcash使用的零知识证明适合大多数场景,但它一直都很慢,适用性也不高。并且,他们都没有实现对图灵完备智能合约的支持。基于纯粹的UTXO,这种技术对智能合约的实现并不友好。

前几天公司聚餐时,有同事提到,最近出现了一个名为超零协议(SERO)的公链,是个支持图灵完备智能合约的匿名币,采用零知识证明实现,据说目前已经完成了开发。这引起了我的兴趣,因此打算研究一下,看能否借鉴一二。

官网和白皮书

说实话,SERO 团队的营销和SEO做得并不算好,我在百度搜索 sero 的时候,首页全部是日系各位老师的种子链接。直到我搜索了sero cash 才有关于这个公链的一些信息。

从官网提供的信息看,SERO 开发团队应该在中国国内,基本都是华人。从linkdin上的履历看,这些成员在技术领域,有丰富的研发和工程实践经验。如果真像官宣的那样,SERO是全球第一个支持图灵完备智能合约的匿名链,而且在零知识证明的生成上比Zcash快20倍,那么作为一个中国人,这还是很让人兴奋的。

在官网分别能找到白皮书和github开源项目的链接。根据官宣的信息,SERO 项目已经开发完成并且已经开源。因此我下载了白皮书并且将github里面的源码克隆,做了一番简要的分析。

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

超前的源码

我发现一个非常有意思的事情,这个事情颠覆了我对区块链项目的理解。

通常的区块链项目 的白皮书要超前其源代码很多个开发周期。最极端的情况下,一些空气币,他们的白皮书写得天花乱坠,但是也许还没等到主链开发出来,项目方就跑路了。

而对于SERO项目,它的源代码要超出白皮书几个周期。也就是说,我发现官网上 V1.0.6 版白皮书只映射了 SERO 一个月前(Alpha 0.1版)源码的内容。而当前(Beta 0.3.0 版)版所发布的功能,比如“交易生成速度优化”、“发行匿名票据”和“测试邀请许可证”等功能,并没有在白皮书里面体现。

也许SERO团队每次都是在开发完成后再更新白皮书的。

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

匿名币的基本理论

根据SERO白皮书的描述,匿名币有三种最基本的特性【不可追踪性不可关联性抗分析能力】这很好理解,你转一笔钱给其他人,非交易双方,即使用大数据分析法,也不应该能追踪到这笔钱的来源、去处、金额、以及该笔交易相同账号的其他的交易行为。

除此之外,SERO白皮书还提出【可选的审计方案 】比如,你可以将你的配偶设为可选的审计方,那么除了你和你配偶以外,其余的人都无法从数据中分析出跟你相关的信息。而除你以外,即使你的配偶,也无法动用你的钱。

SERO的白皮书中,还将匿名资产和智能合约都分为线上和线下两类,从上面的描述来看,Beta版增加的匿名票据,应该在 线上匿名资产 这个范畴。这块信息量较大,有兴趣的人可以自行阅读白皮书。

另外,SERO的官宣信息中提到,他们有一个Super-ZK的C++库,比Zcash使用zk-snarks的方式高效20倍,并给出了跟Zcash对比的视频。我在github中找了很久没找到这个库。后来发现,好像是一个名为 go-czero-import 的库,这个库引用了一个名为czero的C++库。其中有生成交易证明的接口。

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

SERO的功能

为了尝试和调试SERO的功能,我克隆了SERO所有的源码。我发现SERO 项目还有一个严重的问题,作为一个有着完整产品的项目,居然没有一个对整个产品集的统一介绍,导致我必须要自己去摸索各个功能,这样实在是有些浪费时间。

SERO的主节点程序 gero 是用Go语言版的以太坊 geth 改的,虽然看起来改动有点大,但主干并没有变化。还好我对geth很熟悉,只在引入C++动态库的时候磕磕碰碰了一下。最后根据github上的readme,在 MACOS 系统和 CENTOS7 系统上分别成功编译并运行了。

SERO整个产品体系包括下面几个系统与功能:

go-sero 全节点服务程序

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

通过编译后获得程序gero

后台服务功能

gero启动时,根据配置,节点会自动选择同步AlphaNet或是BetaNet网络的数据,充当网络中的一个全数据节点,并执行客户端发出的指令。客户端钱包 或者 交互式控制台 通过rpc或者ipc连接全节点。

交互式控制台

当对gero增加console参数的时候,gero会变成一个 交互式控制台 。不得不说,gero中指令的操作方式,跟以太坊几乎是一致的,这对于像我这样熟悉以太坊指令的人,操作起来没有什么门槛。

账户管理和匿名资产

在账户管理方面,gero提供的资产查询结果分了两种类型,Tkn和Tkt,我没找到对应文档,但根据网上宣传信息看,应该分别代表Token和Ticket,就是所说的通证与票据。票据可以认为是非同质通证,唯一且不可分割。根据白皮书和宣传资料,这两种资产都是匿名资产。也就是说,你交易的时候,SERO会隐藏这两种资产的信息。

匿名交易

因为我没有AlphaNet或是BetaNet的测试许可证,无法通过挖矿来确认交易,因此我用Dev模式测试了一下匿名交易,在我的机器上,确实能看到交易生成时间是7s。从交易数据看,交易证明采用Commitment模式,可以确定是匿名交易。至于AssetCM和OutCM各代表什么,暂时弄不明白意思是什么,只有等到通读代码或最新白皮书时再仔细研究了。

账本创建(挖矿)

这个指令与以太坊一致,从区块的结构来看,矿工每次接受奖励的coinbase地址,都在变化,这个地址应该可以对应到白皮书中描述的暂存地址(PKr),也就是说,这块究竟是谁挖出来的,除矿工自己外,不会有人知道。

智能合约

智能合约的安装步骤也与以太坊一致,社区的宣传信息中提到,SERO与以太坊智能合约的指令集是兼容的。我将部署代码从以太坊的Remix编辑器拷贝过来,将代码中的eth改为sero后进行测试,结果安装和运行都没有问题。智能合约可以发行匿名的Token和Ticket。这样的话,应该可以实现匿名版本的ERC20与ERC721智能合约了。

资产独立性

这个特性是我自己发现的,V1.0.6版白皮书中并没有说清楚。对于匿名Token和Ticket资产,它们与发行自己的智能合约是相互独立的。

这意味着资产与规则相互独立。智能合约发行的匿名资产,与SERO币地位等同,而不是记录在智能合约的map中。这样的方式使得SERO智能合约的适应性超越了以太坊,打破了智能合约之间的界限,很多复杂功能实现起来更加简单。比如可以在SERO上编写去中心化交易所的智能合约。

智能合约编辑器

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

SERO Remix编辑器中自带有如何发行匿名Token和匿名Ticket的例子。

区块浏览器

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

SERO产品集中包含一个简洁的区块浏览器。区块浏览器包含区块、交易两类视图。在区块链浏览器中,SERO币和用SERO智能合约发行的匿名代币,因为其匿名属性,交易各方的交易地址为暂存地址PKr,交易金额则会用0代替实际的交易金额。

不过对于SERO的区块浏览器,我觉得未来可以在智能合约数据展示上下一些功夫。毕竟对于一个区块链应用,即使在大多数交易加密的情况下,有部分公示数据在智能合约中被展示非常有必要。

钱包客户端

根据社区宣传的说法,钱包客户端会在24号之前开源出来,钱包将包括账户管理交易管理智能合约管理三个功能,由于目前并没有看到实物,上面的图是从宣传页拷贝过来的。

开发和测试环境

根据github上的信息,SERO分为四个环境:

Dev环境 用于个人测试,需要手工链接才能形成网络,采用参数--dev启动即可,我就是在这个环境中完成的SERO试用。

AlphaNet 是SERO团队内部测试网络,采用--alpha参数启动,可以加入到这个网络中,但是基本上没有这个必要。

BetaNet 是社区公测网络,采用POW共识,据说在主网上线时,BetaNet中挖出的SERO币会一比一映射到MainNet中。不过在这个网络中挖矿需要向 申请测试许可证。我发出了测试申请,希望能够尽快通过审核,(像我们这样的穷人只能通过挖矿来赚SERO币了)

MainNet 是主网络,将在明年上线,根据白皮书上所说,到时将会换成SE-Random共识,看白皮书中对这个算法的描述,大体上跟Algorand差不多。至于能不能达到理想的 3000 TPS,只能看 SERO 那时的实现方式了。不过对于匿名币来说,TPS是不是足够高并不是我最关心的,我比较关心能否满足大多数应用场景。

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

有趣的名称

在研究SERO的过程中,我发现SERO团队十分的有趣。

首先他们在白皮书中使用西方国家家喻户晓的《龙枪编年史》来记录较大的版本变化,类似于以太坊的大都会、拜占庭等名字,他们叫秋暮之巨龙冬夜之巨龙夏焰之巨龙春晓之巨龙。没有听过的朋友不要紧,一定玩过一款经典游戏《龙与地下城》吧?他们是一个公司出品的。

如果你以为这就完了?那就太小看SERO团队工程师了的恶趣味了。在看《sero vs zcash》视频的时候,演示者打过一串文本 “1 SERO=1^9 ta” ,但是并没有讲解是什么意思。我思考了很久,突然顿悟了,SERO 跟赛罗发音很像,也可以写成超级-赛罗。虽然赛罗可以是很多的东西,但丰富的动画片观影经验告诉我,它非常有可能是赛罗奥特曼,因为奥特曼的起源来自等离子火花塔。这样的话SERO币的最小单位是塔(TA)就能说得通了。当然,这纯粹是我的猜想,官方并没有这么说过。

Btw我会持续关注SERO项目的动态,毕竟遇到一个自己喜欢的项目,比遇到喜欢的人还难呀!

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

参考:

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

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

[SERO区块浏览器] 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 世人如何评价梁武帝萧衍?大概逃不过一世英豪,晚节不保。 萧衍的一生,传奇、复杂且荒诞。他缔造了“文物之盛,独美于兹...
    不与梨花同梦阅读 1,056评论 0 1
  • 喧嚣的那个我其实是我自己编造出来的一种人格。所以G先生每次不理我,我都是抱着一种受虐和惊奇的心理在接受着...
    Bunny_青蛙阅读 387评论 0 0
  • 这个中秋假期过的很开心。会发现原来你关心,想见的人都还在。特别的温暖。除了以前的亲戚,朋友。今年中秋多了一个人。就...
    提笔忘字2016阅读 239评论 0 0