[币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light
ETH 全节点Archive(归档)模式数据量增长图
上述图表可通过链接查看:https://etherscan.io/chartsync/chainarchive
通过上表,可以看到截止2019年8月12日,以太坊的全部区块数据已经高达2.8T,如果按照比特币的方式搭建全节点,会是一个很痛苦的事,毕竟云硬盘也不是那么便宜的。
做数字钱包或交易所的开发人员里,有聪明人可能会意识到一个问题,在处理用户账户充值时,我们所关注的数据仅仅是从当前开始到未来这段时间的区块数据,那么巨大体积的历史区块数据没什么用处。
有问题,自然会有更聪明的人解决问题,鉴于ETH庞大的区块数据,并且不断在增长,ETH提供了三种同步模式:
- –syncmode "fast" Enable fast syncing through state downloads
- –syncmode "light" Enable light client mode
- –syncmode "full"
在Geth1.6以前,fast与full模式的命令参数为 --fast与--full。Geth 1.6版本及以后,两种命令参数都可使用。
使用方法,启动命令如下:
./geth --datadir "D:\Program Files\Geth\data" --syncmode "fast" --rpc --rpcapi "db,eth,net,web3,miner"
上面的命令指定了区块数据与秘钥文件的存储目录:D:\Program Files\Geth\data
也指定了同步模式是: --syncmode "fast"
同时开启了RPC方式模式: --rpc --rpcapi "db,eth,net,web3,miner"
本文中,我们需要关注就是: -- syncmode,下面对三种同步模式做一个介绍:
Full同步步骤:
获取区块的header
获取区块的body
从创始块开始校验每一个元素
PS:下载所有区块数据信息,所以此种方式的数据量会十分庞大
Fast同步:
获取区块的header
获取区块的body
在同步到当前块之前不处理任何事务,然后获得一个快照,像full节点一样进行后面的同步操作。沿着区块下载最近数据库中的交易,有可能丢失历史数据。比如,你的账户地址A上面有10个ETH,但转入的的交易存在于较老的历史交易中,此同步模式无法获取到交易的详细情况。
使用此模式时注意需要设置–cache,默认16M,建议设置为1G(1024)到2G(2048)。
Ligth同步:
仅获取当前状态。验证元素需要向full节点发起相应的请求。
此外,启动ETH节点时还可以增加--gcmode=archive,这个模式称为归档Archive模式,即归档节点,这种模式保存了最最最全的Ethereum节点数据,占用硬盘空间也会更大。其数据量比单纯的full模式数量还要大。这个参数很多人不知道,大部分也没法用这个启动模式,因为需要的存储空间实在太大。启动命令一般如下:
./geth --datadir "D:\Program Files\Geth\data" --syncmode "fast" --gcmode=archive --rpc --rpcapi "db,eth,net,web3,miner"
那么,作为交易所与钱包服务商,如何选择合适的模式呢?如果对安全性要求极高,并且有充足的硬盘资源,自然是选择Full模式。而对于一般情况下,可使用Fast模式,因为Full模式同步区块数据需要很长时间。截止到本文发文时间2019-08-12,Fast模式需要同步数据大小为132GB,相较于Full模式的2.8TB而言,小了很多。Light模式对于轻量级的移动钱包比较适用。
附,当前Fast模式数据量大小变化:
数据查看链接:https://etherscan.io/chart2/chaindatasizefast
BIZZAN(币严) 数字货币交易所官方网址:
www.bizzan.com
[币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light的更多相关文章
- 逐步搭建Lamp环境之vim的三种模式以及基本命令
在Linux中vim的三种模式分别为:命令模式.末行模式.编辑模式.以下是三者的关系图: 三种模式的彼此切换: 命令模式是vim中的默认模式. 命令模式切换至末行模式: 使用英文冒号(:). 末行模式 ...
- 区块链、云计算、大数据、人工智能、FinTech带来的挑战与机遇,中国技术开放日上海站精彩回顾
区块链.云计算.大数据.人工智能.FinTech带来的挑战与机遇,中国技术开放日上海站精彩回顾 | 作者 韩婷 发布于 2016年12月26日. 估计阅读时间: 不到一分钟 | 欲知区块链.VR.Te ...
- 未来-区块链-IBM:IBM 区块链技术开发社区
ylbtech-未来-区块链-IBM:IBM 区块链技术开发社区 1.返回顶部 1. 开始学习 IBM Blockchain 101:开发人员快速入门指南 这篇快速入门指南适合不熟悉区块链技术,希望快 ...
- 用VMWare搭建服务器集群不能上外网的三种模式下对应解决办法
前言 决心要花费宝贵时间写下这篇心得,是因为从昨天晚上到今天上午被这个VMWare模拟搭建的服务器集群不能上外网的问题搞得很心烦,最后决定跟它杠上了!上午还通过远程连接得到了“空白”同学的帮助,在此表 ...
- java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件 准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...
- [币严区块链]USDT钱包节点搭建
USDT是基于BTC发的稳定币,它是比特币的一条侧链,说简单点,就是在比特币区块数据的不可篡改性与区块唯一性的基础上,再封装了一层.具体原理可网上查资料.总之理解一点:USDT的钱包节点就是BTC的钱 ...
- cpp 区块链模拟示例(四) 区块链工作量证明
本文主要在之前的区块链原形上添加了工作量证明,并且为后继的交易功能做好准备. 上一个章节我们已经创建了区块链的基本原形,但是区块的哈希计算和加入太过于简单,如果按照这种速度添加区块那么区块链估计一个小 ...
- 区块链+AI将给区块链带来怎样的改变?
区块链和人工智能技术都是互联网时代最新.最热的技术,不仅可以改变我们生活,还能产生巨大的财富,为此国家大力支持发展,科技巨头们也纷纷布局.那区块链与人工智能结合,对区块链技术而言会产生什么样的化学反应 ...
- 深度探索区块链/基于Gossip的P2P数据分发(4)
一.概述 背书节点模拟执行签名的结果会经过排序服务(Ording service)广播给所有的节点. 它提供的是一种原子广播服务(Atomic Broadcast),即在逻辑上所有节点接收到的消息顺序 ...
随机推荐
- python面试总结1(基础章节)
python语言基础 语言特点 python是静态还是动态类型?是强类型还是弱类型 动态强类型语言 动态还是静态指的是编译期还是运作期确定类型 强类型指的是不会发生隐式类型转换 python作为后端语 ...
- 洛谷 P3338 [ZJOI2014]力
题意简述 读入\(n\)个数\(q_i\) 设\(F_j = \sum\limits_{i<j}\frac{q_i\times q_j}{(i-j)^2 }-\sum\limits_{i> ...
- temperatureConversion1
(原题:https://www.python123.io/student/courses/934/groups/8102/problems/programmings/6078) Solution: # ...
- Django安装于基本介绍
pycharm果然是最强大的python IDE,在创建Diango项目时如果没有则自动下载. 然而即使是这样,我在安装Django的时候还是比较曲折的. Django的安装方式有很多,但是因为网络问 ...
- jmeter学习笔记-----第一天
环境简介:apache-jmeter-3.3 win10系统 一.Jmeter录制操作步骤: 1.工作台---添加HTTP代理服务器: 2.为自己笔记本的浏览器设置相同代理: 3.测试计划下-s ...
- 为什么不建议在hbase中使用过多的列簇
我们知道,hbase表可以设置一个至多个列簇(column families),但是为什么说越少的列簇越好呢? 官网原文: HBase currently does not do well with ...
- AVL树(二叉平衡树)详解与实现
AVL树概念 前面学习二叉查找树和二叉树的各种遍历,但是其查找效率不稳定(斜树),而二叉平衡树的用途更多.查找相比稳定很多.(欢迎关注数据结构专栏) AVL树是带有平衡条件的二叉查找树.这个平衡条件必 ...
- 《Java 8 in Action》Chapter 5:使用流
流让你从外部迭代转向内部迭代,for循环显示迭代不用再写了,流内部管理对集合数据的迭代.这种处理数据的方式很有用,因为你让Stream API管理如何处理数据.这样Stream API就可以在背后进行 ...
- Flutter学习笔记(23)--多个子元素的布局Widget(Rwo、Column、Stack、IndexedStack、Table、Wrap)
如需转载,请注明出处:Flutter学习笔记(23)--多个子元素的布局Widget(Rwo.Column.Stack.IndexedStack.Table.Wrap) 上一篇梳理了拥有单个子元素布局 ...
- JS中 isNaN() 方法解析
1. isNaN() 存在的意义 由于 NaN 是唯一一个不等于自身的值,不像其他的值,可以用相等操作符来判断是否等于自身,NaN == NaN和NaN === NaN都会返回false,所以isNa ...