Stegos代码审计:去中心化移动应用的隐私性底层平台

Stegos中文 · · 2255 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

隔墙有耳,Stegos有着崇高的目标。

本篇评测发布于知名加密平台Cryptobrefing https://cryptobriefing.com/stegos-code-review-privacy-platform/

Stegos是完全私人、隐私以及可扩容的加密货币,并且对环境也非常友好。

现在,我想说,我认识Joel多年,而且发现他绝对是我认识最有毅力的人之一。

还记得去年关于第一代vs第二代vs第N代的巨大争议吗?有些公链认为自己是第8代甚至更多,我认为他们最终看到了第二代的浪潮。我们看到很多的PoS+BFT+隐私协议的项目出现,并且越来越多的项目开始成熟。我之前看到了Harmony,现在研究Elrond,以及CasperLabs, Near, Aleph和其他的项目,但是我想说这些都适用于第二代概念。

从技术角度来看,这是个好事情,因为技术架构越来越成熟。我不确定这有什么意义,但是我们拭目以待。

Stegos是一个为隐私应用而生的平台。Stegos为去中心化移动应用提供了决定隐私和安全的平台。

这完全符合第二代项目,绝对隐私,分片+高TPS,确认时间短,数据删减,运行在移动设备上等等。“能够运行HTML/CSS/JavaScript应用的安全移动虚拟机”非常有趣。

这是非常高程度的隐私,我们来看看白皮书的细节。

雪球非常有趣,很有必须深入研究。但是,我们先对区块链有所了解。为何我们会相信比特币和以太坊的余额显示?因为我们可以跟追每笔转账。我知道有个账户的余额是10个,因为它收到了输入值是10,因此我可以从这个输入一直追踪到创世区块(或者是某个区块奖励-因为只有创世区块和区块奖励能够创建全新的输出)。

如何这些都不链接,同时变得隐私呢?你如何才能知道这个数据是可信的?初始的隐私性只是不能让别人看到交易的对象,和现在交易所做的事情类似,你有输入,但是交易却在第三方进行,因此输入数据都会混乱,你也无法知道输出是从哪儿来。

举个更加实际的例子。假设我存入1ETH,交易后余额是2ETH,现在我提出2ETH。这2ETH和我存入的1ETH无关,这就是隐私交易(虽然在交易所交易需要提供身份信息)。有些加密算法(例如环形签名)可以完成这个,另外的加密(例如bulletproofs))算法让其更加优化。

因此环形签名能让输入和输出隐藏。那么交易数额呢?我想转你10个代币,但是我不想别人看到。于是,rangeproofs算法出现,这个算法可以让交易数额在某个范围,同时不会暴露真实的数额。因此,rangeproofs会表明交易数额会在8–12之间(举例来说)。

因此,现在我可以进行混合,并且隐藏交易value,但是如何我还想隐藏转入地址呢?你可以转账给另一个和你主地址关联的隐藏地址。这能够将余额添加到你的主地址上,但是转账会出现你第二个地址。这就是混合地址。

因此,很多不同的技术能够完成隐私行为,那么雪球是如何做的呢?

雪球的数据总量更小,这就好像它可以删除已经完成的输出数据,并且只保留那些还未消费的value(类似于mimblewimble机制)。这是篇很好的论文,虽然不是非常技术,但是可以解释很多原理和概念。我从附录中看到了很多技术细节。

现在,我们讨论了很多东西,Pedersen commits、bulletproofs,地址隐藏、加密有效载荷、UTXO删减、PoS、pBFT、value shuffle以及混合技术,这些听起来非常厉害。有时候,当我阅读这些论文的时候,我都觉得他们是在互相复制粘贴,这一个流程非常合乎逻辑,每添加一个额外的选择看起来都是经过深思熟虑的,而不是仅仅为了能够说他们拥有它而添加的。

阅读白皮书其实可以让我看代码的时候感到兴奋,那么让我们来看看代码吧。

我们先看最基本的事情:871 commits, 12 branches, 6 releases, 6 contributors,同时也有很好的发布以及Pull request管理。

持续和良好的贡献维持在前3的贡献者,很开心能看到这么健康的代码库。

Rust代码库。看这个越来越多,似乎golang语言的时代正在转换。

API是最直接的websocket应用;

无需深入研究这个,这是很好的底层架构设计。

区块链看似非常给力。

每个链都有自己的版本,我不会经常看到,但是我很喜欢。

VRF是核心(如果不是BLS,我现在无法看VRF)

作为一名程序员,不得不承认Rust真的是非常棒的语言,通过它写的代码看起来很不错,虽然我并不是一个Rust狂热爱好者。

还有BLS可以选择,好吧,通过VRF和BLS选出的领导者会作出区块链签名,pBFT共识101。

因此,这看似是很多交易在一个给定的区块中完成(不同的输入/输出交易对)。然后,这些交易数据会随机存储(基于哈希值,但是哈希是随机的),然后得到相应的输出值。这非常简单,而且非常实用。我们通过下面的例子来看:

inputOne (value10) outputOne (value 10)

inputTwo (value 7) outputTwo (value 4) & outputThree (value 3)

在比特币中,我们可以看到区块里面有2个交易,tx1是inputOne和outputOne,以及tx2是inputTwo和outputTwo以及Three。Stegos通过将交易层抽象出来,从而创建了超级交易,因此,Stegos会使用超级交易(supertransaction);

input (value 10)

input (value 7)

output (value 3)

output (value 4)

output (value 10)

将随机顺序(从那个哈希中)加入,你无法映射任何输入到输出。

这也非常简单,但是却非常厉害。

好代码并不是说一定会非常复杂。如果你可以接受非常复杂的想法,并且然它变得很容易,而且很完整,那么你知道你在做什么。这才是真正的好代码。

领导者选举,使用随机pbc:VRF,我们需要看看stegos_crypto::pbc。

这是权益抵押的托管方式,这看似很简单,但是我却不这么认为。

Merkle的代码很好,multisig的代码也很好。但是它们并没有什么特别的地方,我喜欢看代码,但是却发现并没有很新奇的东西。

但是如果看看stegos_crypto的代码,你会发现很多有趣的东西。

Stegos系统默认是隐私的,但是你仍然可以做到公开。

这其实都是很简单的技术,但是结合起来却能变成非常棒的代码。

隐藏秘钥,并且成为某个范围内的随机数。Stegos考虑到很多攻击的模式,并且充分结合了加密算法。所有的output.rs文件看似非常棒。

因此我们已经知道我们会获得一个隐藏的地址,转账金额的bulletproof算法,同时这些交易会整合成一个超级交易,将输入和输出混合。Stegos所有的东西都基于白皮书,pBFT/BLS/VRF算法包含了领导者选举+快速确认,同时也有超过每秒100笔的交易速度。

很多的校验和余额,考虑到可能的攻击向量。

看到这个代码,我喜欢上了验证列表。

共识共有155行代码,这并不是在衡量什么,而是觉得这太棒了。

使用Ben Lynn的PBClib,快速(缺少安全性)或者安全(但是会慢)。

他们加密数据库比区块链数据库要好。。

网络是稳固的,pubsub和Kademlia。

Stegos代码审查结论:

Stegos代码非常好,因为Joel在电报群一直跟我说要我进行一次代码审查,其实我开始觉得代码可能会不好,但是没想到会这么好。

所有的承诺(除了虚拟机)都完成了,我不是很确定为何它们还没有上线主网?我会把Stegos添加到列表上,作为第二代候选人的很强竞争者,Stegos是pBFT+隐私+PoS+紧凑型区块链,我很期待能够测试它们的主网。

反馈

请加入我们的电报社群,从而获取测试代币,并且让我们知道你的想法。订阅官方电报公告群,从而获得最新的消息。

同时,加入我们的中文电报群查看我们的进展吧!


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Stegos中文

查看原文:Stegos代码审计:去中心化移动应用的隐私性底层平台

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2255 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传