可扩展性辩论位于加密社区的前端和中心。 在几天的时间内,Cryptokitities崩溃等重大事件的发生阻塞了整个以太坊网络,众所周知,当前状态下最大的公共链不会扩展 。

那么社区决定采取哪些方法? 解决方案是双重的。 第一种方法是通过脱链解决方案(也称为第二层缩放)来提高扩展性,其中一些事务处理在区块链之外,并且仅与其进行有效的交互。 另一种方法是修改协议的设计,以解决区块链所面临的并行性问题。 不幸的是,我们中的许多协议开发人员经常看到这些问题,并立即感到被他们所构成的巨大困难所拖延。

虽然我们仍处于以太坊的早期阶段,但社区充满了科技领域的一些最聪明的头脑,有如此多的创新以极快的速度发生。 很容易感觉到有更聪明的开发者可能更有资格处理诸如可伸缩性等重大问题,但这种感觉正在阻碍我们。 事实是,社区愿意并愿意帮助任何想参与进来的人,并且是的,包括你 ! 这篇文章将打破以太坊核心团队正在采取的分拆方法,揭示当前的局限性和改进途径。 在这篇文章的最后,你会知道足够的知识来自己探索这个问题,谁知道呢,也许你会成为构建第一个分片客户端的人!

由于以太坊的交易数量持续上升,我们没有时间损失。 让我们开始吧。

什么是Sharding?

目前,运行以太网网络的每个节点都必须处理通过网络传输的每一笔交易。这使区块链具有很高的安全性,因为每个区块有多少验证,但同时这意味着整个区块链只与其单个节点一样快,而不是其各个部分的总和。 目前,EVM上的事务是不可并行化的,并且每个事务都是按照全局顺序执行的。 可扩展性问题与块链最多可以包含以下3个属性中的2个有关 :

  • 分权
  • Scalabiltity
  • 安全

如果我们具有可扩展性和安全性,这意味着我们的区块链是集中式的,并且可以实现更快的吞吐量。 对,不,以太坊是分散和安全的 。

我们如何打破这个三难局面,在当前模型中包含可伸缩性? 我们不能只是增加块大小,或者在以太坊的情况下,GAS_LIMIT增加吞吐量? 虽然理论上这可能是一个正确的方法,但我们越是越多越好,采矿将集中在超级计算机上运行的节点周围,这会给进入系统带来更高的障碍。

更明智的做法是区块链分片的概念,我们将网络的整个状态分割成一系列称为碎片的分区,其中包含自己独立的状态和事务历史记录。 在这个系统中,某些节点只会处理某些分片的事务处理,从而允许在所有分片中总共处理的事务的吞吐量比单个分片完成所有主分支现在所做的工作要高得多。

在我们深入讨论分片区块链的实际工作方式之前,让我们回顾一下重要的词汇表​​:

  • 状态 :在任何时间点描述系统的整套信息。 在以太坊,这是包含当前余额,智能合约代码和特定时刻的随机数的当前账户集合。 每笔交易都会将此状态变为全新的状态。
  • 事务 :用户发出的更改系统状态的操作
  • Merkle Tree:一种可以通过加密哈希存储大量数据的数据结构。 Merkle树可以很容易地在很短的时间内和计算量上检查一段数据是否属于结构的一部分。
  • 收据:事务的副作用,不存储在系统状态中,但保存在Merkle树中,以便可以轻松地验证其存在。 例如,以太坊中的智能合约日志在Merkle树中保存为收据。

考虑到这一点,我们来看看分片系统的结构。 首先,我们可以在某个分片上创建一个叫collat​​ors的节点,它负责创建一个排序规则 ,它是一个包含关于所涉及分片的重要信息的特定结构。

这些排序规则就像对某个分片的状态和事务的迷你描述。 他们每个人都有一个排序标题 ,这是一个包含的数据

  • 关于排序规则对应的分片的信息(比方说分片10)
  • 在应用所有交易之前关于分片的当前状态的信息
  • 有关所有交易应用后分片状态的信息
  • 来自至少2/3的分片上的所有校勘员的数字签名确认校对是合法的

如果一个交易发生在各个分片上呢? 例如,如果我将钱从分片1中的地址发送到分片10中的地址,该怎么办? 这个系统最重要的部分之一就是跨越分片进行通信的能力,否则我们并没有完成任何新的事情。 这是收据的概念发挥作用的地方,以及它如何允许上述场景发挥作用。

劳尔(地址在碎片1)想要发送100 ETH给吉姆(地址在碎片10上)

  1. 交易被发送到碎片1 ,将劳尔的余额减少100 ETH,系统等待交易完成
  2. 然后为事务创建收据 ,该收据不是以状态存储的,而是以容易验证的Merkle根目录创建的
  3. 交易被发送到碎片10,包括Merkle收据作为数据。 碎片10检查该收据是否尚未用完
  4. Shard 10处理交易并将Jim的余额增加100 ETH。 然后它也节省了从碎片1收到的收据
  5. 碎片10创建一个新的收据,然后可以在随后的交易中使用

这听起来很酷,但什么是一些陷阱?

一旦我们考虑到对网络的可能攻击,分裂区块链的问题就会变得更加明显。一个主要的问题是单一碎片接管攻击的概念 ,攻击者在一个碎片中接管绝大多数的整理者来创建可以提交无效排序规则的恶意碎片。 我们如何解决这个问题?

[caption id =“attachment_195”align =“alignnone”width =“1420”]

感谢王晓伟

以太坊Wiki的分片常见问题解答建议在每个分片上随机抽取校勘员。 目标是这些验证者不会知道他们会提前获得哪些碎片。 每一个碎片都会被分配一堆整理者,而实际上验证交易的那些将从该组中随机抽样。

股权证明使得这很微不足道,因为已经有一组全球验证者,我们可以从中选择整理者。 随机性的来源必须是共同的,以确保这种抽样完全是强制性的,并且不能由有问题的验证人进行比较。

此外,进行这种随机抽样还有一些潜在的延迟问题。 想象一下,你运行了一个以太坊节点,并已经与整个区块链历史记录同步,开始进行交易。 如果在几个街区之后,你必须再次与一条新链条完全同步呢? 这是验证器节点重新洗牌时会发生的情况,因为当它们被随机分配为整理器时,它们每个都需要重新下载新的碎片,这会带来很多潜在的开销。

要详细了解潜在的安全风险以及针对此问题和其他问题的详细方法,请查看Ethereum Sharding常见问题解答。

这对于Solidity Devs和Ethereum用户理解起来听起来如此复杂! 我们将如何在分片上教育他们?

他们不需要。 分片将专门存在于协议层,不会暴露给开发人员。 以太坊系统将继续像目前一样,但协议将有一个内置系统,可以创建碎片,在碎片之间平衡状态,摆脱碎片太小等等。 这将全部在幕后完成,允许开发者在Ethereum上继续他们当前的工作流程。

超越规模:超二次分片和难以置信的速度增益

为了超越和超越,以太坊可能会采用超二次分片方案(简单的英语表示由碎片碎片构成的系统)。 目前这种复杂性很难想象,但是可扩展性的潜力是巨大的。 此外,超级分区分割区块链将为用户带来巨大利益,将交易费用降至可忽略的数量,并为各种新应用提供更通用的基础架构。

资源和从哪里开始

好吧,现在你想开始编码分片区块链! 你怎么开始? 在最基本的层面上,拟议的初始实施不会通过硬分叉来实现,而是通过称为验证管理器合约的智能合约来控制分片系统。

VMC将管理来自全球验证机构的碎片和提议的整理者样本,并负责所有碎片状态的全球和解。 Vitalik在这里概述了一个用于实现分片的出色参考文档:https : //github.com/ethereum/sharding/blob/develop/docs/doc.md

要详细了解此VMC体系结构并了解有关系统工作方式的更多信息,请查看以下资源:

  • 分片常见问题解答: https ://github.com/ethereum/wiki/wiki/Sharding-FAQ
  • 以太坊分片技术概述: https://medium.com/@icebearhww/ethereum-sharding-and-finality-65248951f649
  • Sharding参考文档: https ://github.com/ethereum/sharding/blob/develop/docs/doc.md

原文: https://medium.com/prysmatic-labs/how-to-scale-ethereum-sharding-explained-ba2e283b7fce

如何扩展以太坊:分片相关推荐

  1. 【转】以太坊分片:Overview and Finality

    在 Ethereum Casper 101 (编者按:EthFans中译见文末)中,Jon Choi 对 Casper 做了一个很棒很清晰的综述,并解释了为什么显式最终确定性(explicit fin ...

  2. 【众说区块链】以太坊分片技术提升100倍处理效率,有多大作用?

    2019独角兽企业重金招聘Python工程师标准>>> 上期<众说区块链>讨论的主题是"区块链在医疗行业的落地",大家通过阿里健康给常州市医联体提供的 ...

  3. 智能合约重构社会契约(8)以太坊分片

    1. 定义 使用场景:以太坊的同构链跨链需求 分片定义:将所有节点分配到多条区块链中,每条区块链只需要处理网络中工作的部分. 分片效果:提高了以太坊的处理效率 分片问题:增加了链与链之间信息交互的困难 ...

  4. 以太坊分片:安全模式机制设计

    具体内容由页内超链接进入 1. Proposer/Collator Separation 在这一部分,PPT 为分片提议者(Proposer).校勘者(Collater)和执行者(Executor)作 ...

  5. V神以太坊:Casper 权益证明与分片技术最新进展

    V神以太坊:Casper 权益证明与分片技术最新进展 原创: 卢凯 区块链大本营 昨天 2018年6月3日,由全球最大开发者社区CSDN和专注以太坊生态建设的领先企业灵钛科技主办,以太坊爱好者社区.柏 ...

  6. 区块链100讲:V神·以太坊上的分片

    五月初,以太坊创始人"V神"Vitalik Buterin表示,以太坊的内部扩展解决方案--分片已经接近完成.以太坊分片旨在将以太坊分成几个并发网络,从而使整个网络更加高效地扩展, ...

  7. 1分钟链圈 | 以太坊2.0 Casper 更新版发布,涉及解决跨分片通信低效问题

    Hi,艾瑞巴蒂! 这里是 9 月 7 日的每日1句话新闻晚报,只需1分钟,看看全球最热.最新的区块链新闻. 实时币价:BTC $6368.00    ETH $218.48    EOS $4.98( ...

  8. 人人都能读懂的「以太坊2.0分片设计」

    讨论 | 吴为龙.李画 撰文 | 李画 来源 | 碳链价值 封图由 CSDN 下载于东方 IC 当我们在7-11买早餐的时候,如果只有一个收银员,就要排很长的队等待结帐:如果有两个收银员,立刻就会快一 ...

  9. 决定以太坊未来的三个关键扩容项目

    2019独角兽企业重金招聘Python工程师标准>>> 在过去的几年里,以太坊已经成为加密货币领域最重要的项目. 作为市场中大多数代币的 底层基础设施,以太坊网络的健康对于加密数字币 ...

最新文章

  1. webgl之3d动画
  2. 软件测试随手记(转)
  3. 关于UC、火狐、谷歌浏览器屏蔽布局中广告的解决办法
  4. PHP 验证码   高洛峰 细说PHP
  5. 哈佛NLP组论文解读:基于隐变量的注意力模型 | 附开源代码
  6. c语言实验报告5数组,c语言实验报告五一维数组.doc
  7. CodePage简介(转)
  8. java jxl 写 excel文件_java采用jxl写入一个Excel文件
  9. 16 张图解带你掌握一致性哈希算法
  10. 纸上谈兵: 队列 (queue)
  11. iOS中如何旋转UIView
  12. 小程序:版本更新后获取用户信息变更
  13. CxImage图像库的使用
  14. php显示某年某月某日,输入某年某月某日,判断这一天是这一年的第几天?
  15. C语言--[Error] stray '\237' in program--解决方案。
  16. vscode快捷键快速打开终端到当前目录打开的文件位置
  17. oppo开启系统更新服务器,oppo手机系统升级开不了机怎么办
  18. 人工智能--打飞机游戏
  19. 新能源汽车车架号VIN码查询车辆信息
  20. 电脑设置了从睡眠中唤醒需要密码却没生效(已解决)

热门文章

  1. WebForm页面使用Ajax
  2. FineReport——JS二次开发(局部刷新)
  3. opengl 相关资料
  4. 数据采集中的采样率、缓冲区大小以及,每通道采样数之间的关系
  5. 编程方法学23:搜索排序与算法效率分析
  6. [译]在CUDA C/C++中如何衡量代码性能
  7. 二十万字C/C++、嵌入式软开面试题全集宝典九
  8. [云炬创业基础笔记]第二章创业者测试7
  9. [云炬创业基础]创业过程
  10. 云炬随笔20171227