区块链论文请关注本专栏。

这是2018年的论文,发现已经有介绍这篇论文的中文博客,本文跟它们不同地方在于,希望站在高层视角,以问题为导向来分析这篇论文。
这篇论文的作者和Byzcoin来自同一个人,而且前者是后者的拓展,因此,为了更好地理解本文,建议先看Byzcoin,可参考下面链接文章:

https://zhuanlan.zhihu.com/p/166154594

本文主要内容来自论文:

Kokoris-Kogias, Eleftherios, et al. "Omniledger: A secure, scale-out, decentralized ledger via sharding."2018 IEEE Symposium on Security and Privacy (SP). IEEE, 2018.
发表在顶会2018 IEEE Symposium on Security and Privacy

正文:

前面本人分析过另外两篇关于区块链分片的论文,所以具体为什么要区块链分片,这里略过。可参考本人写的下面两篇文章。需要注意的是,这篇文章是基于processing的分片,不是基于状态的分片,以此所有的矿工需要保存所有的状态数据,或者说在矿工在不同的时期被随机分配到其它片之后,需要下载新的所在片的状态数据。
Tech之直觉:区块链相关论文研读7:通过分片(Sharding)扩展区块链

https://zhuanlan.zhihu.com/p/89933683

https://zhuanlan.zhihu.com/p/87307292

先看总体的架构,下面是naive version,然后,论文基于这个版本所存在的问题来改进。

上面图片看起来分为三个层,注意的是这三个层出现的时间呈先后关系。意思是,先生成一个随机数 rnd_e ,那些validators(认证者)再根据这个随机数决定自己在上图第三层中的哪一个片中。每一个片都是一个Byzcoin。本人专门写了一篇文章介绍了Byzcoin,读者可以上面的第一个链接进入。
上面的版本存在几个很大的问题需要解决,分别是:

  1. 如何生成无偏差的rnd_e?不能使用可信的第三方,我们要做到在不相信任何一方的情况下生成。
  2. 认证者们如何只根据一个随机数rnd_e就能够知道自己属于哪一个片呢?
  3. 如何才能成为认证者?我们需要避免女巫攻击,特别是使用PBFT的情况下。
  4. 如果一个交易是跨片的,如何实现不同片之间的信息交互?

下面一一解释如何解答上面这些问题。

  1. 论文使用分布式的无偏差随机数生成方案RandHound,在使用它的时候,存在一个问题,那么就是RandHound方案需要一个节点当leader这个角色,但是如何选择leader呢?选择leader的时候要无偏差,应避免leader是敌手。原本需要RandHound生成一个无偏差的随机数,但是,现在为了设置和初始化RandHound,需要一个无偏差的随机数。这是一个鸡蛋和鸡谁先出现的问题。因此,文章使用了基于VRF的leader选举算法。具体不深入,我们暂时只需知道rnd_e被在无需信任任何一方的情况下无偏差地生成了。
  2. 对于第二个问题:如果每一个认证者都知道总共有n个认证者,且他们都收到了随机数,把这个随机数作为seed,使用下面的以python代码为例子的算法就能得到一个随机全排列,每一个数对应一个认证者的id。如果认证者都知道有m个片,那么根据n/m,他们就知道自己属于哪一个片了。
np.random.seed(seed)
np.random.permutation(10)
output [0 1 8 5 3 4 7 9 6 2]
  1. 不是所有的计算机节点都可以成为认证者的,在加入之前需要获得资格。为了避免女巫攻击,可以使用WoP或者SoP的共识算法来做。在每一个时区比如一天都要将一部分认证者从一个片调到另一个片中,避免攻击者将某一个片中的很多(1/3)的节点攻破。因此,如果当前是第e时区,那么新节点需要在e-1的时区获得加入资格。为了专门记录这个,论文使用了identity blockchain。
  2. 为了实现跨片交易,这篇论文将这个工作交给client来完成。这样的一个优点是ommiledger协议在跨片上就很简单,片之间不用交流。先上图:

分为三个步骤来实现一个这样的交易:将第一和第二个分片中的账户的钱转到第三个中,如上图所示。

  • 用户要让第一和第二个片的leader生成一个证明,证明用户确实在这个片中有可用的钱。
  • 用户拿到证明之后,锁住第一和第二个分片中的该账户中的钱。
  • 用户将证明发给第三个片的leader,完成交易。

如果第二个leader说该用户没钱在该片,拒绝生成证明,而第一个leader已经成功生成了一个证明,并锁住了该片中的该账号。这时候client是无法让第三个片的leader执行交易的,因此client只能将第一个片中的账号解开。(论文中没有说明如何解开,第一个leader如何判断client没有成功转账?如果client成功转账了,同时恶意地也向第一个leader解开在第一个片中的账号,就会存在重复花费的问题,怎么解决?)
所以跨片交易的责任都交给用户自己来做了,不同片之间不存在信息的交流。在转账交易这个场景上是合理和简单的,解决了要么所有都成功要么所有都失败的效果,但是在其它应用场景上,估计就不够方便了。因为用户会偷懒,只希望点点按钮就能全自动化完成。

其它

  • 在论文中所提到的Trust-but-Verify的认证,是一个很笼统的描述,存在很多没有解决的问题,比如如果惩罚optimistic validators?如何选举optimistic validators和core validators?
  • 经过一定的时区之后,一部分节点需要调换到不同的片中,这就需要这些节点下载和加载好新的片的状态数据。而这些数据可达几百Gb,在短时间内拷贝和加载可不容易。因此我们要裁剪这部分数据,只留下对认证有用的数据。如何裁剪?举一个例子,在UTXO模型中,有 a -> b -> d, 表示三个交易的输入输出关系,为了认证d的钱是来自b的,我们需要使用b来认证。如果我们从b开始生成一个checkpoint,表示b之前的交易都是合法的了,无需再认证了,那么我们就可以不用再保留a的数据,只需要这个checkpoint就可以了。这样子我们就裁剪了a这个数据。裁剪之后,需要生成一个区块,让其它节点认证通过该checkpoint。
  • 论文中提到了ByzCoinX,所谓是byzcoin的改善版本,两者的区别是,前者是一个三层的数,第一层也就是leader,第二层是一个片的group中的一个组长,第三层就是该片的其它成员。后者是一个层数为log(k)的树,可以是二叉树。

如果有理解上的出入,欢迎指出

区块链论文:OmniLedger,一种区块链分片技术相关推荐

  1. 【区块链论文整理】VLDB篇

    VLDB (Very Large Data Base)是数据库三大顶会之一,近几年也发表了不少水平很高的文章.本文主要针对VLDB 会议中区块链相关的论文进行简单整理. 2021 SlimChain: ...

  2. 论文阅读:基于区块链的分布式软件定义车载网络一种深度q -学习方法

    关键技术运用:许可区块链+软件定义的vanet+基于优先级体验重放的深度q学习 传统的问题及文章解决方法 问题1:缺乏基础设施和动态性 方法:使用软件定义的vanet动态和安全地管理vanet. 问题 ...

  3. 区块链论文:Byzcoin,通过集体签名让比特币具有强一致性且强化安全

    区块链论文请查看本专栏 https://zhuanlan.zhihu.com/blockchain-top-paper 阅读本文前,建议先阅读下面链接的文章: ​https://zhuanlan.zh ...

  4. 区块链论文研读12:谨慎日志合约 Discreet Log Contracts,详细 清晰 通俗易懂

    今天讲的论文来自MIT的Digital Currency Initiative, 名字叫<Discreet Log Contracts>https://adiabat.github.io/ ...

  5. 【区块链论文整理】SIGMOD篇(三)

    SIGMOD(Special Interest Group On Management Of Data)是数据库三大顶会之一,近几年也发表了不少水平很高的文章.本文主要针对SIGMOD会议中区块链相关 ...

  6. 如何评价区块链论文?区块链相关学术会议级别大科普

    区块链技术可不是骗菜场大妈的传销工具.真正的区块链技术,可是融合了计算机科学和密码学等基础科学的硬核技术.在衡量一个区块链项目是否靠谱的时候,一个非常重要指标就是:该项目所用的区块链技术是否有高水平的 ...

  7. 【区块链论文整理】SIGMOD篇(一)

    SIGMOD(Special Interest Group On Management Of Data)是数据库三大顶会之一,近几年也发表了不少水平很高的文章.本文主要针对SIGMOD会议中区块链相关 ...

  8. 区块链具有的8种特性

    本文将介绍区块链的8种特性 分布式数据库 区块链是一种分布式数据库,大部分区块链技术在底层是线上采用了传统的数据库保存数据.例如:维护比特币代码的Bitcoin Core团队实现的比特币就采用Leve ...

  9. 【区块链论文阅读】A Weak Consensus Algorithm and Its Applic

    [区块链论文阅读]A Weak Consensus Algorithm and Its Application to High-Performance Blockchain 这是一篇网络顶会INFOC ...

最新文章

  1. re.findall()用法详解
  2. java开学第一周测试自我感想
  3. mvc @html.checkbox,MVC - @Html.CheckBoxFor
  4. OpenCV绘图和文本输出功能的实例(附完整代码)
  5. Spark MaprLab-Auction Data分析
  6. .net 2005大写html标签 xhtml10,HTML10.ppt
  7. 【英语学习】【WOTD】scavenger 释义/词源/示例
  8. 大数据时代下的用户洞察(转载)
  9. 无法使用prop_Adobe Launch配置流量变量(Prop)
  10. (Scrapy框架)爬虫获取新冠疫情数据升级版 | 爬虫案例
  11. 【2015DTCC】专访永洪科技CEO:商业智能搬运大数据之谜
  12. elk报错:[syslogs] index has exceeded [1000000]
  13. netty报错:远程主机强迫关闭了一个现有的连接。(已解决)
  14. 几行代码解决百度云视频变成 8秒净网公告问题(滑稽)
  15. sql中大于等于小于的写法
  16. 大漠多账号循环登录任务自动切换模板大漠绑定后台绑定游戏
  17. 【波段分析】揭秘主力做庄波段分析指标支持多分时级别
  18. Qt源码分析--QImage(1)
  19. URL 重写就是把URL地址重新改写(汗^_^)。
  20. 源码逻辑-官方SDK的做法

热门文章

  1. 8.0系统安装Xposed框架失败Xposed framework version XX is installed
  2. c语言区间,C 语言实例 – 循环输出区间范围内的奇数/偶数 | 菜鸟教程
  3. 波段 ku_X和Ku波段小尺寸无线电设计
  4. 数论计算机科学与技术专业就业前景好,【数学】数学专业就业前景:你看不见的“前途似锦”...
  5. 阿里开源混沌工程工具 ChaosBlade
  6. Spring MVC+Stomp+Security+H2 Jetty
  7. 瓷博会开幕,《锦绣中华》引围观
  8. AJAXControlToolkit-Framework3.5SP1 下载地址
  9. awstats linux日志分析,(总结)Linux下使用awstats分析Nginx的日志详情
  10. Python staticmethod() 函数