请选择 进入手机版 | 继续访问电脑版
智能合约 +关注 已有2人关注 +发表新主题

SERO | 智能合约教程——匿名Token发行原理(二)

发表在 2019-10-10 10:55 来自PC 复制链接 手机看帖 扫一扫!手机看帖更爽 0 633

二、匿名交易结构

在BetaNet网络中,SERO的普通交易是强制匿名的。因为如果可以允许任意非匿名交易,那么想要使用匿名功能的用户的隐私安全在关联交易中将得不到保证。另外,如果想要公示自己的资产等信息,建议使用智能合约,有限度的公开部分信息。

在MainNet发布时,SERO通过选择隐私级别来获得隐私性和生成速度的平衡。

交易 Tx


SERO的匿名交易Tx拥有一个匿名的输入集合Z ins,一个匿名输出集合Z outs,一个普通输出集合O outs,和一个名为From的暂存地址。Z ins完全是匿名的,让第三方观察者无法得知来源和内容,Z outs是完全匿名的UTXO,只有接收者能查看和使用它的内容,O outs携带的内容是非隐藏的,它指向的接受者有两种情况:一种是指向智能合约地址,一种是指向一个暂存地址。From代表着交易发送者,同样也是一个暂存地址。因此整个Tx无法让人确定真实的用户是谁,其中携带的资产等信息也最大程度被隐藏起来。

输入 Z ins


在SERO交易的输入集合Z ins中,每个输入都是匿名的,包括来源UTXO的Id以及携带的资产信息。每个输入都通过采用零知识证明ZKP生成的Proof,指向一个被隐藏在巨大的UTXO序列中特定的某个UTXO,这个序列是SERO历史的一部分,所有的细节信息被Proof隐藏起来。验证者在不知道细节信息的情况下,通过Proof能确认这个输入是否合法。这种方式跟环签很像,不过我们的Proof自身的大小要比环签小很多,而且在零知识证明下,用来隐匿UTXO的集合的范围比环签也要大得多。

两种不同的输出 outs


SERO交易中包含的输出分为两种形式,零知识输出Z out和普通输出O out。

Z out
Z out指向的是暂存地址PKr,暂存地址只有接受者能解密出身份。由于每个暂存地址都不一样,所以,没有第三方能够识别Z out的指向。Z out还携带了资产的加密信息Encrypt Info,只有持有接受者私钥的人才能解密这些信息。而OutCM是输出承诺,只有交易的双方才能够复现OutCM的计算过程。OutCM在证明 “Z out被ins引用” 这一过程起到至关重要的作用。

O out
O out指向的PKr有两种形式,一种是由智能合约发起的,指向普通账户的暂存地址。另一种是由普通账户发起的,指向智能合约的地址。由于暂存地址的随机性,第三方无法得知接受者的身份,O out携带的资产信息是公开的。

输入和输出的平衡 Balance


Tx将ins、Z outs、O outs打包到一起,如何防止恶意攻击者篡改里面的数据并确保资产安全呢,我们通过引入perdesen commitment,它的同态加密特性使验证者在不知道信息细节的情况下,可以确认Balance一定是平衡的,即输入等于输出。

另外,为了防止恶意攻击者对O outs的篡改,我们利用perdesen commitment的随机特性,以Balance的随机部分对Tx Hash进行签名。如此以来,各个输入输出都可以独立进行计算,然后通过B-Sign打包到一起。

交易发送者 From

当交易的输出是指向智能合约时,智能合约有时根据编写的规则,需要将资源给输出到给定的账户。这时暂存地址From就是承接输出资源的地方。From在交易生成的时候就被确定,并且只使用一次,除了交易发送者外,其他人无法定位发送者的身份。

三、发行匿名Token的原理

Token资产

Token又称之为“同质化通证”,是SERO系统内部承认的一种资产形式。相同种类的Token可以任意的分割和混合,具体来说就是所谓的“币”。SERO币作为SERO系统的第一个币种,本质上也是一种Token。对于Token资产,除了手续费规定只能以SERO币缴纳外,在SERO系统的内部是同一对待的,由共识确保其隐私和安全性。

与以太坊中的Token概念不同,以太坊中的Token只是智能合约内部记录的一个符号,而ETH才是以太坊内部真正运行的Token资产。
币名

每种Token都有一个币名,SERO系统初始化后,默认只有一个被注册的币名SERO。在智能合约发行匿名Token的时候,必须向SERO系统注册一个全局唯一的字符串作为该Token的币名。币名可以极大的提高你发行资产的可读性。

匿名Token资产


SERO的智能合约有一个非常强大的功能,那就是可以任意发行匿名Token。当然,前提是你需要一个从未注册过的币名。一旦匿名Token发行成功,智能合约可以将Token以普通交易的形式发送到某个普通账户的暂存地址PKr,这时这些被发送的Token将以UTXO的形式脱离智能合约账户,并且与SERO币一样,进入用户的个人账户中,从而被SERO的隐私机制所保护。

SERO币的发行是由矿工实现的,过程与智能合约发行匿名Token的机制类似,是SERO内建的Token发行功能。

四、最后

我们已经初步了解SERO智能合约对匿名资产发行和处理的原理,如果想要了解匿名资产发行的技术细节,请阅读《SERO官方WIKI》中的教程《发行匿名Token实战》




扫描二维码,手机查看本帖
显示全部楼层 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部
快速回复 发贴