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

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

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

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

官网和白皮书

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

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

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

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

超前的源码

超零协议(SERO)产品技术分析_第1张图片

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

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

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

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

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

匿名币的基本理论

超零协议(SERO)产品技术分析_第2张图片

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

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

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

超零协议(SERO)产品技术分析_第3张图片

另外,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

后台服务功能

超零协议(SERO)产品技术分析_第4张图片

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

交互式控制台

超零协议(SERO)产品技术分析_第5张图片

当对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)产品技术分析_第6张图片

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

区块浏览器

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

超零协议(SERO)产品技术分析_第7张图片

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

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

钱包客户端

超零协议(SERO)产品技术分析_第8张图片

根据社区宣传的说法,钱包客户端会在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)产品技术分析_第9张图片

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

超零协议(SERO)产品技术分析_第10张图片

如果你以为这就完了?那就太小看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

你可能感兴趣的:(超零协议(SERO)产品技术分析)