发表于 2017-11-27 21:03:48 | 显示全部楼层
前些日子写了Wanchain的架构分析,对于其价值给出了一定的解释,作为一条公有链,抛开应用场景不提,其主要价值有两点:

1. 在ETH上实现了隐私保护

2. 实现跨链交易

很明显,即使不考虑跨链交易功能,单就Wanchain在ETH上实现隐私保护这一项上也是极有价值的。记得应该是上半年的时候,有团队在ETH中提出将Zcash通过智能合约加入进来,也通过precompiled smart contract做了Zcash上交易的验证阶段的代码测试,感兴趣的可以去看一下Ethereum Improvement Proposal(EIP)196 & 197。但不得不说,Zcash真心是个很厉害的项目,其零知识证明技术着实是复杂深奥,计算代价也是真心的大,即使这些牛人想把它搬到ETH上来也只是实现了verify,但是对于造币mint或者说z-address的交易生成也是无能为力。

为什么莫名其妙提到Zcash呢,因为可以说目前在公有链上最好的两个隐私保护的链就是Zcash和Monero,Zcash采用零知识证明而Monero采用环签名和一次性地址技术,当然Monero今年使用RingCT技术实现了对value值的隐藏,总体上也是使用环签名。但是有一个很重要的问题是在Zcash和Monero上都是没有智能合约的,对当下的应用需求来讲是无法接受的。前面说了有团队想在ETH上实现Zcash,但前途漫漫,而Wanchain做的是将Monero整合到ETH上,进而实现隐私保护,无论在计算代价还是复杂度上,Wanchain的目标可以预见是能够实现的。


好了,前言背景基本如此,下面来分析一下Wanchain上的隐私保护。

采用的技术:

1. 环签名(Ring Signature)

2. 一次性地址(Onetime-account)

账户本身就是一个地址,文章中不进行细分。

关于技术分析,由于涉及的专业知识比较多,如有需要我将再另发文章进行详述,这里只给出大致概念。


首先说说环签名,对于数字签名相信很多人是很熟悉了,即使不知道具体原理也能懂是一个钥匙一把锁的关系,目前ETH上对于交易的合法性就是靠用户采用自身账户对应私钥使用ECDSA签名来保证,而何为环签名呢,环签名就是将一把钥匙一把锁变成了一把钥匙N把锁。形象的解释是这样的,原本利用ECDSA的一个交易可以看成是张三发给李四,明文展示,全网公开,使用环签名就变成张三、王五、陈六……赵N这一组人在一起给李四发了个交易,而我们只知道这一组人中确实有一个真正的给李四发了交易,却不知道是其中的哪一个,也就这样让原本赤裸裸的张三藏在了一群彪形大汉之中,不能被发现。

再说说一次性地址,顾名思义,一次性地址是被一次性创建或者说是一次性使用的账户地址。原理大致是这样的,原来的体系里我们手里有一把钥匙,而我们用这把钥匙就可以给我们自己账户发出的交易上锁,任何人验证锁和我的账户是对应的,那么说明这笔交易确实是我发出的。而现在要想使用一次性地址,那么我就要在原来账户的基础上再生成一个账户,七巧板相信大家都玩过,而生成另一个账户之后,我们就有了这七巧板中的两片或者可以叫做二巧板吧,任何人知道我这“两片”账户之后都可以随机的把他们进行组合形成一个新的账户,而这个账户地址就是一次性账户,也可以叫做一次性地址。重点在于这个账户是随机生成的,而只有我本人和为我生成的人才知道这个账户归我所有,其他人只能挠头叹息,一脸懵逼的说:“这账户又是谁的?!”


应用解析:

上面给出了两个关键技术的直观解释,下面说说在Wanchain上这两项技术是怎么使用的,如何实现的隐私保护功能。


原生币隐私保护

关于原生币也就是万币的隐私保护,Wanchain比较讨巧的解决了Monero前期存在的问题:即转账交易金额一致才能纳入环签名集合。Monero采用的是UTXO模型,也就是说每笔交易的输入是前一笔交易的输出,而发起一笔交易必须寻找金额一致的输入才能进行环签名,如若不然大家一比对钱数的变动,就能找到真正的交易发起者是谁,所谓的隐私保护也就不攻自破。而Wanchain采用的是原本ETH的account模型,那么其交易的输入也就是某个账户,类比上面的问题,更严重的发现,如果直接使用环签名,那么账户余额的变动将更加直观的暴露交易真正的发起人。为解决这个问题,Wanchain布置了一个WancoinSmartContract,专门用于原生币的隐私保护。

具体是这样的过程,如果张三想偷偷摸摸给李四发点钱救急,那么他就先给李四生成个谁也不知道的一次性地址,然后把这个地址发到WancoinSmartContract上,再往里面充点钱,值得一提的是,类似于人民币的离散面值,WancoinSmartContract内部对充钱金额进行了设定,也许有100的、50的等等吧,假设要给李四100,那就在给李四生成的一次性地址里充100,自然的这个一次性地址就被记录在充值100“万”(好吧,万是万币的万)的记录序列里。这时候李四钱包一震,发现张三给他创建了个一次性地址并往里面充了100,欣然一笑,在钱包里发了个请求,把自己一次性地址和100“万”记录序列里的其他几个地址打个包,利用环签名大声宣布,这一堆里有我100“万”,我现在要拿走,好吧,环签名合法,您拿您拿,这100个万币也就顺理成章进了李四的腰包。同时,环签名还保证了李四只能吼这一嗓子,若是取过了他再叫,那Validator就狠狠的抽过去,告诉大家这钱他刚才取过了,也就保证了不能双花。


整个过程如何保证隐私性的呢?是这样,张三创建了个一次性地址,并往里存了100个万币,这是大家都有目共睹的,但是却没人知道这个一次性地址是谁的;而由于这个一次性地址本就是给李四创建的,那李四自然发现了他可以支配这个账户,然后他又把其他的地址一块拿过来做挡箭牌,让大家只知道那一堆账户里面有一个的钱被李四提走了,却又不知道提的具体是哪一个账户,也就让这真正使用的一次性地址销声匿迹。通过这两个手段,自然切断了张三和李四之间的联系,也就实现了匿名的万币交易。


代币隐私保护

就个人观点而言,这个功能实在是太强大了,结合Wanchain实现跨链交易,任何一种其他链上的币种都可以转到Wanchain上来以代币的形式存在,进而进行交易,那么在代币上实现隐私保护也就间接的给其他所有的币种实现了隐私保护功能,解决了其他公有链上的隐私保护问题。

所谓代币,也就是指在智能合约中实现的币,可以类比目前很多ICO项目使用合约给投资人发放的币。那么实现代币的隐私保护也就是要在智能合约中实现隐私保护。为实现这一功能,Wanchain上独特的设计了一套邮票系统,这一系统的目的是为了解决合约使用中的gas消耗问题,由于比较复杂,这里我只给出一个大致概念,便于理解即可,如有需要后续将发文详细解读邮票系统。

邮票系统是一个智能合约,与现实中的邮票类似,任何用户可以在合约中买其需要面值的邮票,当然,邮票面值是离散且固定的。

具体过程是这样的,张三突然又想给李四转点代币,却不想让别人知道,他原本在合约里有一个一次性地址,我们就叫这个地址为1号账户吧。首先张三去邮票系统买了张邮票,假设就买了个1“万”的邮票吧。随后他给李四创建个一次性地址new,并在纸上写下了这样一笔交易:“从合约中的1号账户里给new这个账户地址转100个代币”,然后他把这张信纸折起塞进一个空信封密封起来,再拿着自己的邮票去和邮票系统里1“万”的其他几个邮票利用环签名攒成一堆贴到信封上发出去。Validator就相当于这个邮差,他拿到信封之后,看到信封上这一堆邮票,好的,这活我接了,然后就把信封拆开,按照要求把合约里的1号账户扣100个代币,并创建一个地址为new的账户,给里面加100个代币,活干完,Wanchain的系统机制就把这堆邮票变成1个万币给了Validator。这笔交易也就完成了。



整个过程如何保证隐私性的呢?是这样的,吃瓜群众知道张三买了张邮票,可张三却把这邮票跟别人的邮票攒起来贴到信封上,群众傻眼了,这用的到底是哪一张?而且合约中的1号账户本就是张三的一次性地址,谁也不知道它是张三的。好的,发起人张三把自己隐藏起来了。对于李四的隐藏就更简单了,本就是张三给他生成的一次性地址,除了张三和李四本人,谁也不知道这地址对应的账户就是李四的,也就让李四也潜水匿名了。



Wanchain上的隐私保护大体就是这样,总的来说就是隐藏起了交易发起方和接收方,让交易联系在其他用户眼中是断开的,也就让交易变成的匿名的。把专业技术翻译成白话文实在困难,越复杂也就越难以一言而明,大体意思我尽量表述清楚了,不过分追求真理的同志就大概理解好了,若有严苛的专家,可以去读一下Wanchain的黄皮书,相信那里面对技术写的很清楚,后续如有需要我也会在发从专业知识角度的详细解读供大家参考。


**以上内容来自知乎网友,个别地方稍有改动

另:万维链优秀区块链开发人才招聘正在进行中,研发总监、高级架构师、区块链软件工程师,亚太区市场总监等多个岗位,感兴趣请发送简历,GitHub或Linkedin链接资料等到:info@wanchain.org,欢迎推荐,推荐成功将给予一定奖励。
加入万维链社区互动
唯一官方网站:https://wanchain.org

客服邮箱:info@wanchain.org

微信公众号:wanchain_org

微博:http://weibo.com/wanchain

Discord:https://discord.gg/3DpeV6W

Telegram电报群:
Telegram announcements:https://t.me/WanchainANN
Telegram chat Chinese:https://t.me/WanchainCHINESE

Twitter : @wanchain_org
Facebook : https://www.facebook.com/wanchainfoundation/
Linkedin :https://www.linkedin.com/company/13421502/

Github :https://github.com/wanchain
Reddit : https://www.reddit.com/r/wanchain/
Bitcointalk : https://bitcointalk.org/index.php?topic=2110925.0
Wanchain(wanchain.org),分布式未来“银行”.

0条回复 跳转到指定楼层

高级模式
您需要登录后才可以发帖 登录 | 立即注册 用新浪微博登录

本版积分规则

搜索

0关注 1粉丝 85主题

作者的其他主题

万维链Wanchain

关注微博


关注微信

返回顶部 返回列表
分享 发帖