当前位置: 首页 > 编程日记 > 正文

想挖矿?不如先学习一下以太坊

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

此文章来自区块链技术社区,未经允许拒绝转载。
在这里插入图片描述
许多使用点对点协议且基于区块链的项目在性能和吞吐量上夸大其辞。在研发阶段,这些项目已经出现了一些创新,但是一旦这些协议运行时,它们大多对经常遇到的挑战难以作出解释。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章:

Kubernetes入门

简介  它是一个全新的基于容器技术的分布式解决方案,基于强大的自动化机制解决传统系统架构中负载均衡和实施部署的问题,从而节省了30%开发成本,其次具有完备的集群能力, 包括服务注册、服务发现、故障的发现和修复、服务滚动升…

ubuntu 14.04安装postgresql最新版本

官网: https://www.postgresql.org/download/linux/ubuntu/ -------------------------------------------------------------------------------------------------------------------- 另一篇文章,讲的差不多也是这个: http://tecadmin.net…

c++ mysql ctime_C++操作mysql数据库范例代码

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。#include #include void TestMySQL(){TRACE("MySQL client version: %s\n",mysql_get_client_info());MYSQL *conn mysql_init(NULL);if (conn NULL…

链客区块链技术问答社区

链客是中国领先的区块链垂直领域技术问答社区(www.liankexing.com),旨在为大家提供一个直接、高效的技术交流平台,区块链技术爱好者遇到的每一个问题,链客做到有问必答! 在这里: ①海量的真实…

oracle imp dmp

imp helpy导入自己的表:exp scott/tigerorcl tables(student, address) fileD:\scott_stu_add.dmp logD:\scott_stu_add.logimp scott/tigerorcl fileD:\scott_stu_add.dmp logD:log.logimp scott/tigerorcl fileD:\scott_stu_add.dmp tablesstudent 导入别人的表&a…

STM32普通定时器(TIM2-7)的时钟源

STM32普通定时器(TIM2-7)的时钟源 转载于:https://www.cnblogs.com/LittleTiger/p/6218048.html

operate函数_跟着 redux 学 compose组合函数

▲ 点击上方蓝字关注我 ▲把你的心 我的心串一串 串一株幸运草 串一个同心圆文 / 景朝霞来源公号 / 朝霞的光影笔记ID / zhaoxiajingjing目录0 / 热热身1 / redux 中的compose函数2 / 逐步分析(1)compose()函数调用① reduce第一轮遍历② reduce第一轮遍历③ reduce第三轮遍历(…

感恩有你,链客一周年!

感恩有你,链客一周年! 2018年6月16日,天气:晴,在这一天,诞生了一个崭新的技术社区:链客区块链技术问答社区(www.liankexing.com) 她的诞生让我们赋予了’利他‘的概念,…

【Python3_基础系列_006】Python3-set-集合

一、set集合的方法 set不是特别常用,但是set的一些特性可以方便处理一些特殊情况。 集合(set)是一个无序不重复元素的序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { }…

springmvc xml 空模板

<?xml version"1.0" encoding"UTF-8"?><!-- Bean头部 --><beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:p"http://www.springframe…

mysql ltree_mysq基础知识总结l

一、Mysql架构二、Mysql查询过程例如执行select * from tablea where id4;三、Mysql中的事务及隔离级别事务&#xff1a;InnoDB存储引擎支持事务。事务是mysql的执行最小单元&#xff0c;也就是原子性。要么执行成功&#xff0c;要么执行失败。>start transaction>commit…

如何让自己时刻冷静的方法_4个方法,教你如何真正爱自己

很多人说&#xff0c;我想爱自己&#xff0c;看了很多文章&#xff0c;依然不知道如何爱自己。那你可以问一问自己&#xff0c;你对自己拥有的一切感到开心、快乐和满足吗&#xff1f;“爱自己”对你是知识还是习惯呢&#xff1f;实际上&#xff0c;当你的内在固有的思维模式转…

记录一个比较完整的python项目分析架构

世界杯&#xff1a;用Python分析热门夺冠球队 https://www.cnblogs.com/lemonbit/p/9174965.html 转载于:https://www.cnblogs.com/testerhome-yizhou2018/p/9287115.html

list,set,map,数组间的相互转换

1.list转set Java代码 Set set new HashSet( new ArrayList()); 2.set转list Java代码 List list new ArrayList( new HashSet()); 3.数组转为list Java代码 List stooges Arrays.asList( "Larry" , "Moe" , "Curly" ); 此时st…

void函数返回值_(*void(*)()0)() 是什么

(*void(*)()0)()代码分析这是啥这行代码&#xff0c;是我今天在看《C陷阱与缺陷》时看到的&#xff0c;一开始很不能理解。慢慢上网摸索一些后&#xff0c;大致理解了&#xff0c;现在来分享一下我所理解的这行代码。1.首先&#xff0c;得明白什么是函数指针。顾明思义&#xf…

老年手机英文改中文_这些手游大作你都玩了吗?手机游戏推荐

全 世 界 只 有 1 % 的 人 关 注 郭 叔 说你 真 是 个 特 别 的 人目前100000人 已关注 郭叔说郭叔说做一个有趣的人&#xff0c;从认识我开始。关注攻略交流群请添加微信&#xff1a;GLT962464 备注老规矩&#xff1a;游戏名(无备注不通过&#xff01;&#xff01;&#xf…

MySQL数据库(五)使用pymysql对数据库进行增删改查

折腾好半天的数据库连接&#xff0c;由于之前未安装 pip &#xff0c;而且自己用的python 版本为3.6. 只能用 pymysql 来连接数据库&#xff0c;&#xff08;如果有和我一样未安装 pip 的朋友请 点这里http://blog.csdn.net/qq_37176126/article/details/72824404 &#xff09…

vue调试工具如何使用_教你使用Vue.js的DevTools来调试vue项目

Vue DevTools项目的官方主页位于GitHub上&#xff1a;https&#xff1a;//http://github.com/vuejs/vue-devtools。你可以找到安装说明&#xff0c;帮助解决一些问题等等。目前该扩展在Chrome和Firefox中得到支持&#xff0c;同样Safari也得到了支持。如果你想从安装扩展开始&a…

Python开发【第十篇】:CSS (二)

Python开发【前端】&#xff1a;CSS Kylin Zhang 发表于 2016-11-10 13:13:57css样式选择器 标签上设置style属性&#xff1a; <body><div style"height: 48px;">第一层</div><div style"height: 48px;">第二层</div><di…

java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)

关于讲解SAP中国本地化银企直连系统功能&#xff0c;它通过ECC和S4 HANA 1909两个不同版本的演示来讲解银企直连付款相关功能实施和应用&#xff0c;有兴趣的可以联系微信号&#xff1a;timijia进行付费获取。以下资料仅供大家参考&#xff1a;说明&#xff1a;因为平安银行较S…

spark ml中一个比较通用的transformer

spark ml中有许多好用的transformer&#xff0c;很方便用来做特征的处理&#xff0c;比如Tokenizer, StopWordsRemover等,具体可参看文档:http://spark.apache.org/docs/2.1.0/ml-features.html . 但是呢&#xff0c;这些都是一些特定的操作&#xff0c;组内的同事提了一个需求…

mysql 常用函数循环_近30个MySQL常用函数,看到就是学到,纯干货收藏!

概念&#xff1a;相当于java中的方法&#xff0c;将一组逻辑语句封装在方法体中&#xff0c;对外暴露方法名隐藏了实现细节提高代码的可重用性使用&#xff1a;select 函数名(实参列表)【from 表】 【】中内容可省略正文&#xff1a;字符函数&#xff1a;length&#xff1a;…

连接Oracle错误:800a0e7a未找到提供程序的解决

一、现象&#xff1a; C#程序中需要以ProviderOraOLEDB.Oracle.1方式访问ORACLE数据库。但程序执行时报异常&#xff1a;未在本地计算机注册“OraOLEDB.Oracle.1”提供程序 二、解决方案&#xff1a; 1、在Oracle安装目录找到Oracle的主程序目录&#xff0c;点击鼠标右键->属…

定义一个属性_Python property属性

1. 什么是property属性一种用起来像是使用的实例属性一样的特殊属性&#xff0c;可以对应于某个方法# ############### 定义 ###############class Foo: def func(self): pass # 定义property属性 property def prop(self): pass# ############### 调用 ###############foo_obj…

MySQL 字段类型知识

tinyint(m)  值的范围&#xff1a;-128 ~ 127&#xff1b;unsigned 时&#xff0c;0 ~ 255。存储占用1字节 m 默认为4&#xff0c;和存储空间、数字位数没有关系&#xff0c;表示左侧补空格&#xff08;默认&#xff0c;声明 zerofill 则补0&#xff0c;如0001&#xff09;到…

mysql 单实例部署_Mysql 数据库单机多实例部署手记

最近的研发机器需要部署多个环境&#xff0c;包括数据库。为了管理方便考虑将mysql数据库进行隔离&#xff0c;即采用单机多实例部署的方式。找了会资料发现用的人也不是太多&#xff0c;一般的生产环境为了充分发挥机器性能都是单机单实例运行&#xff0c;再进行一系列的配置调…

用python做一个图片验证码

看一下做出来的验证码长啥样 验证码分析 1. 有很多点 2. 有很多线条 3. 有字母&#xff0c;有数字 需要用到的模块&#xff1a; 1. random 2. Pillow (python3中使用pillow) 安装pillow : pip install pillow pillow的用法&#xff1a; 创建一张图片&#xff1a; from PIL im…

地图测量面积工具app_全站仪的使用面积测量

测量与地图制作见习全站仪使用11 / 20#2020 #全站仪是全站型电子速测仪的简称&#xff0c;是电子经纬仪、光学测距仪及微处理器相结合的光电仪器。其可直接测量距离、角度、坐标&#xff0c;根据三角函数原理&#xff0c;已知两点坐标信息推算出无数个第三点的坐标信息。下面让…

Palette使用

1.定义: Palette&#xff1a;可以在一张图片里面分析出一些色彩特性&#xff1a;主色调、鲜艳的颜色、柔和颜色等等…… 2.使用: 1). 2).效果图 3.获取颜色样品: 1). 2).颜色组装算法: 3).效果图:转载于:https://www.cnblogs.com/jeffery336699/p/9294681.html

PYTHON 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者...

def a2(arg):if len(arg) > 2:del arg[2:]li [12,13,14,15] a2(li) print(li) 转载于:https://www.cnblogs.com/zgyc/p/6229722.html