链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。

许多使用点对点协议且基于区块链的项目在性能和吞吐量上夸大其辞。在研发阶段,这些项目已经出现了一些创新,但是一旦这些协议运行时,它们大多对经常遇到的挑战难以作出解释。

网络拓扑结构
假设大多数人在延迟和计算量之间的某个置信区间上网是很容易的,但是他们忽略了必须借助于区块链上的节点进行交互。对大多数用户而言,不幸的是,运行一个全节点不仅速度慢,而且价格昂贵让人望而却步,因此大多数用户选择轻节点,因为它们不仅背负着全节点所拥有的安全性使命,对资源没有额外的需求。

以太坊轻客户端模式允许像树莓派一样的轻量型设备加入网络,当区块头显示时可以将它们下载,并且如用户所要求的那样按需验证某几种状态。在以太坊中,这些档案性的全节点拥有的客户端很容易使得网络饱和。与所谓的 Merkle Tree 相比,树莓派可以更快地锁定这些节点。

你可以在树莓派上安装一个轻型客户端!

密码经济作为运行全节点的动机已远远不够,这是因为资源成本效益在平衡分布式网络过程中遇到了瓶颈。对于轻型节点,网络将拥有怎样的完全平衡是难以预测的。关于怎样平衡这些动机以及如何使得用户更容易证明运行全节点是正确的这些话题,早已被讨论过多次。

对轻客户端的介绍:以太坊中的关键角色
轻型客户端背后的核心思想是它能够获取用户所关切的状态部分。它假设有一个诚信模型,在这个模型中,矿工们都正确遵循以太坊的规则,并且系统中至少有一个完全节点是完全诚实的。

将同步模式标志设置为轻型模式

他们的基本功能是当块标题显示在网络中时可以将它们下载,而且对于正在被客户端使用的状态部分的 Merkle 证明而言,按需变化的问题需求也可以被下载。以太坊上的轻客户端采用分布哈希表而不是本地存储来记录字典树的节点。

考虑到 Ethereum 状态通过大些的 Merkle 树来显示,从 Merkle 的树根出发,沿着树中一个分支的一条节点路径,可以很轻易地将验证信息的完整性作为轻量级的证明。这最终依赖于对所提供的 Merkle 树根正确性的信任。

轻客户端信息包括但不局限于查询账户余额、验证确认事务、检查部署在网络上的某份合同的事件日志等其他信息。

通过 Merkle 树的证明和验证,所有的这些可以被归结为次线性复杂度。当无法获取来自区块链的数据时,或无法检查出何时验证状态交易指数时,客户端可以在点对点网络中向其他参与者发出警告。

当处于轻客户端模式下时,以太坊客户端会将基本上不同的配置和协议经理具体化。当以太坊启动一个轻客户端时究竟发生了什么,对此感兴趣的用户可以参考我下面的问题。

潜在的共识机制
目前的轻客户端协议假定通过全节点在主链上开展工作共识证明。在工作量证明过程中,我们可以借助于一个数学函数来验证区块头部的有效性。也就是说,这个算法很难计算区块头部并输出,但是却很容易对其进行验证。

当轻客户端启动时,他们会寻找区块头部最长的链,而且对于攻击者而言,通过制造有错误的头部来伪装成这条链的费用几乎是无法想象的。

以电力为基础的物理工作到通过工作证明而致力于链的安全性的转变是一个潜在的过程,尽管对制造出的区块头部的验证尤为有效。

在工作量证明环境中,轻客户端十分常用的,因为区块头部可以立刻得到验证,但是我们却无法保证在证明环境中也可以做到这样。

权益证明中的轻客户端:工作证明是不可或缺的吗?
在工作量证明中,轻客户端被简化的问题相当于区块头部并未与一定量的真正的工作实现绑定,而参与者需要投入这些工作中并制造他们。这种共识机制所带来的强度实质上是对拜占庭参与者的威慑性惩罚而不是对耗电计算 NP 难题的奖赏。在权益证明中,如果参与者想尝试发展错误链,那么他们将会受到惩罚,然而,在工作量证明机制中,在错误链上挖矿的参与者将会建立分支,而且不会得到在一条规范链上挖矿的奖励。

权益证明提供协议内的机制来最终确定区块头部。一旦这些头部被信任,获得它们所包含的数据复杂度为对数级别,即从 Merkle 树上获取一个节点。尽管如此,区块头部并不包含我们可以用来验证工作证明方法的标量值,这使得验证最起码为对数级别的而不是具有时效性的常量级的直接实现。然而,我们最起码可以在轻客户端的同步率上做得更好。

正如 Vitalik 在工作岗位上的对该问题的建议所言,凭借 checkpoint 系统可以建造一个更为轻量的客户端友好型权益机制。一个 checkpoint 可以被定义为一组固定数字的区块。

在这些区块内,三分之二的参与者必须同意通过密码签名,而且 checkpoint 必须包含其以前 checkpoint 的哈希值。在这种新的轻客户端同步机制中,只能下载 checkpoint,而且客户可以验证参与者的签名。如此,在目前的工作证明轻客户端模式下,下载每个单一区块头部所需的开支就降了下来。

然而这种方法并不能解决验证区块头部这一问题,因此权益证明还是很有可能将一小部分作用在块标题上的为了创造轻客户端的工作证明包含在内。

工作证明和股权证明的混合有助于轻客户端吗?
为了在权益证明系统中验证轻客户端,在区块头部的形成过程中无疑会有一个使用计算能力的角色存在,只要能够按要求验证这些区块头部充分小即可。

如果你想对有关内容有更多了解,检查以太坊社区正在分片上进行的工作,包括我的团队:Prysmatic 实验室!在分片模型中,轻客户端是极为有用的,因为分片的目的之一是降低节点对计算的要求。大多数分片的最新进展都公布在以太坊搜索,你可以从这里开始。

如果你喜欢这篇文章或者你有任何疑问,请在推特上联系我们。

想挖矿?不如先学习一下以太坊相关推荐

  1. 以太坊教程:入门学习开发以太坊dapp

    一.区块链 1. 分布式去中心化 比特币设计的初衷就是要避免依赖中心化的机构,没有发行机构,也不可能操纵发行数量.既然没有中心化的信用机构,在电子货币运行的过程中,也势必需要一种机制来认可运行在区块链 ...

  2. 区块链学习(3)--以太坊Dapp开发

    DApp是Decentralized Application的缩写,译为:分散式的应用程序.App我们都知道,我们在智能手机上安装的应用程序也就是App.而DApp比App多了一个'D','D'的意思 ...

  3. 区块链学习(3) 以太坊测试环境编译并部署智能合约(mac版)

    选择编写智能合约的语言 Ethereum上的智能合约需要使用solidity语言来撰写.虽然还有其他能用来撰写智能合约的语言如Serpent(类Python).lll(类Fortran),但目前看到所 ...

  4. 以太坊2.0怎么挖矿_以太坊2.0即将上线 现在正是挖矿红利期 普通人如何参与挖矿?...

    以太坊2.0 吹响牛市号角!以太坊从诞生至今,共经历了四个阶段,分别是Frontier.Homestead.Metropolis和Serenity,此次以太坊升级疏于第四阶段Serenity,其中最核 ...

  5. 以太坊源码之--Pow挖矿源码剖析

    PoW挖矿 代码基于在学习以太坊挖矿以前先来了解几个相关的数据结构作为铺垫: 数据结构1: type Miner struct {mux *event.TypeMux // 事件锁,已被feed.mu ...

  6. 以太坊挖矿源码:ethash算法

    本文具体分析以太坊的共识算法之一:实现了POW的以太坊共识引擎ethash. 关键字:ethash,共识算法,pow,Dagger Hashimoto,ASIC,struct{},nonce,FNV ...

  7. 以太坊上海升级完成 “挖矿”成为历史 ETH未跌反涨,突破2100美元

    期待已久的以太坊Shapella升级终于完成,意味着以太坊质押提款功能的开启,质押者可以根据自己的需要和市场情况决定是否继续质押,也意味着以太坊终于切断与加密"挖矿"的联系. 在以 ...

  8. 为什么以太坊能成为区块链2.0的代表之作?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链的学习进入到第四天,前三天学习比特币,分别从比特币的前世.货币属性和背后的区块链技术学习. 比特币是区块链的1.0 ...

  9. php rpc调用,PHP 通过 JSON-RPC 调用实现以太坊交互

    PHP 通过 JSON-RPC 调用实现以太坊交互 由 hubwiz 创建于2年前, 最后更新于 2年前 版本号 #1 6262 views 0 likes 0 collects 自去年以来,我们正在 ...

最新文章

  1. Solr搜索引擎 — 通过mysql配置数据源
  2. UITextView实现图文混排效果
  3. Android4.0/Android4.1 WifiStateMachine状态机结构图
  4. Django:保持会话状态cookies和session(1)
  5. php获取时间格式的年份,PHP获取当前时间、时间戳的各种格式写法汇总
  6. 计算机课的情感目标是什么意思,教案中情感目标是什么.doc
  7. soap协议有get方式
  8. CDH修改PySpark默认的Python版本
  9. MsChart控件在VC++中的使用(VS2013+MFC+对话框)
  10. Macbook 终端命令使用sudo时改用指纹解锁
  11. Docker系列 利用RSShub搭建个人RSS源 从此万物皆RSS
  12. gmail如何配置163邮箱服务器端口,hotmail,gmail,live,QQ,163,yahoo邮箱服务器及端口号,outlook,foxmail 设置...
  13. ftp服务器文件无法删除,ftp服务器文件删除
  14. word给参考文献插入脚注
  15. 2022注册测绘师备考开始 还在不知所措?手把手教你怎么考?
  16. 国庆专属头像、国旗专属头像一键生成源代码
  17. CDR2021安装教程 CorelDRAW 2021完整版下载
  18. 2016首次CCCC总结
  19. 理解 Python 中的装饰器
  20. Medusa(美杜莎)和Hydra(九头蛇)快速入门手册:02

热门文章

  1. Git npm相关命令
  2. 自学笔记——Python内置的处理字符串的函数
  3. 1小时学会:最简单的iOS直播推流(一)介绍
  4. 求整型数组所有子串的和中的最大值
  5. JS实现HTML标签转义及反转义
  6. JQ加AJAX 加PHP实现网页登录功能
  7. xCode BuildSetting 设置
  8. 极速理解设计模式系列:11.单例模式(Singleton Pattern)
  9. C#图片灰度处理(位深度24→位深度8),用灰度数组byte[]新建一个8位灰度图像Bitmap 。...
  10. 后台接口向数据库录入汉字时乱码以及自动过滤文字经验总结