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

区块链膨胀:以太坊客户如何解决存储问题

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

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

在这里插入图片描述

​​​4,270个代币。27,358笔交易。数字小猫463,713。

以太坊最近举办了很多活动,虽然很多加密爱好者认为这是一个积极的信号,随着网络使用量的增长,历史变长,区块链变得更加不稳定。

虽然导致交易积压和费用上涨的网络拥塞已经成为焦点,但这个规模还有另外一个问题 - 一个日益增长的数据库,为希望运行一个完整节点的用户带来了巨大的存储成本。

该数据库称为以太坊(Ethereum)状态,它包含支持平台和以太坊区块链本身的计算机需要记忆的所有计算。随着存储状态的成本(时间和金钱)越来越多,越来越少的人选择运行全部节点,许多担心将把网络集中到少数几个仲裁员手中。

开发人员认识到这个问题。

首先,以太坊开发人员正在进行工程协议级别的改变,如分片,旨在最小化数据库。

但是由于这些技术仍在发展之中,其他利益相关者,即运行以太坊客户的用户,即用户与区块链进行沟通所需的软件,已经面临着应对国家数据库增长的新的压力。

“自2016年年底以来,改善这种情况至关重要的事实已经被人们所了解,这些想法已经流传了半年到一年多了,实施在哪里呢?说,以太坊的创造者Vitalik Buterin最近在开发者频道上。

Buterin和Afri Schoedon在Ethereum软件客户端供应商Parity的管理技术交流中感到沮丧。Schoedon告诉CoinDesk:

“按目前的增长速度,预计今年国家将快速增长,到小型设备上难以管理的地步。”

为了限制这个笨拙的国家的影响,最近两个最受欢迎的以太坊客户 - Geth和Parity最近发布了更新,试图改善这种状况。

涡轮增压

Parity上周发布的第一个更新通过消除不必要的临时文件来减少存储需求,因为软件记录了以太坊的历史。

通过极大地减少存储需求,用户连接运行完整的节点,然后体验更快的同步时间。因此,该公司表示,其以太坊软件现在可以在硬盘上运行,而不是固态硬盘(SSD),这是一个特别显着的成就,因为自去年夏天以来,长时间的同步使得以太坊无法在硬盘上运行。

Buterin在开发者频道上说:“哇,你们是怎么做到的?

作为更新的结果,用户已经报告了大大改进的体验。

与此同时,独立开发商Alexey Akhunov一直致力于改写geth客户端,称为“turbo geth”。该项目被阿赫胡诺夫描述为“痴迷”,旨在消除以太坊客户如何处理整体状况的诸多不必要的重复。

尽管还没有准备好,但是它开辟了一些“投机优化”的有趣途径,Akhunov在最近的开发者聊天中说。

例如,Akhunov建议将客户自己的某些关于以太坊的信息“硬编码”。最终目标是使软件适应简单的运行,使用随机存取存储器(RAM),这可以使客户端更快 - 使他们有可能立即与网络同步。

Geth公司的开发人员也在进行优化,他们试图纠正当客户端与网络在所谓的“快速”模式下同步时如何存储信息的问题。由Geth核心开发人员PéterSzilágyi描述为“非常糟糕”,现有的代码可能会被一系列更新所取代,这些更新使同步更快,更少占用存储空间。

限制

还有一种被称为“无状态客户端”的客户端类型正在研究,这种客户端类型只存储整个状态的压缩。

即使Buterin对这个想法感兴趣,最近正在进行一项研究,描述一个“矿工和全部节点不再需要存储任何状态”的情况。此外,Buterin稍后在开发者渠道中表示,无国籍客户还可以通过其他措施来缓解清理状态的需要,例如修剪旧的不相关的数据,例如空的或长期不活动的账户。

Buterin写道:“我现在赞成无国籍客户的做法。

甚至有人猜测无状态客户端可能没有进行协议级别的更改。

作为一个可能的解决方案,在CryptoKitties成功之后,把这些客户作为一个可能的解决方案来解决Ethereum所面临的障碍,Akhunov在最近的一篇博客文章中写道:“我相信(无状态客户)现在已经可以实现,没有任何硬分叉,更改以太坊客户端…这意味着节点不需要从文件访问存储,并且块验证时间应该会显着下降。

但是,客户端优化不可能是网络依赖的唯一方法来减少状态问题。

根据Szilágyi的说法,最终客户端优化将达到极限。然后开发人员必须把注意力转向正在进行的技术,比如分割(fragmentation),将以太坊数据库拆分成存储在不同节点的较小块,以减轻将整个数据库存储在各个客户端上的压力。

也许是为了应对最近网络上的压力,近几个月来分片开发已经有所进展,在Github上勾勒出了一个早期的规范。

Szilágyi说:“我们可以优化数据库,使其快十倍,最优化,这使我们有足够的空间增长到目前规模的十倍。”他补充道:

但是最终,我们将不再能够进行数据库优化,到那时我们需要能够分割我们的数据。“​​​​

相关文章:

Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)

一、进程: 1、语法 2、进程间通讯 3、进程池 二、Gevent协程 三、Select\Poll\Epoll异步IO与事件驱动 一、进程: 1、语法 1 简单的启动线程语法 2 def run(name): 3 time.sleep(2) 4 print("hello",name) 5 6 if __name__ __main__:…

python画圣诞帽_用Python给头像加上圣诞帽

原标题:用Python给头像加上圣诞帽随着圣诞的到来,大家纷纷官微给自己的头像加上一顶圣诞帽。我们有必要写一个程序来做这件事情。用到的工具OpenCVdlib流程一、素材准备首先我们需要准备一个圣诞帽的素材,格式最好为PNG,因为PNG的…

Python知识点进阶——生成器

生成器为什么要将列表转化为迭代器?因为列表太大的话用内存太大,做成迭代器可以节省空间,用的时候再拿出部分。生成器是不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,知道…

以太坊开启区块链2.0时代

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 今天我们唠唠以太坊,这个开启区块链2.0时代的伟大项目。 前面我们说比特币实际上是一个大账本,从比特币白皮书里走出来的区…

手把手教你架构3d游戏引擎pdf_一个在游戏行业摸爬滚打了十几年的人,为何我对这本书情有独钟...

Big News!《游戏开发:世嘉新人培训教材》今日开始预售啦!经过漫长的等待,这次终于可以买到了。现在下单,你将在图书出印厂的第一时间收到书哦~这本书由世嘉一线开发者执笔,并被选为世嘉新人培训…

PostgreSQL获取年月日

1.获取当前日期的年份 select to_char(t.detect_date,YYYY) select extract(year from now())为double precision 格式类型select to_char((SELECT now()::timestamp),yyyy) 2.获取下一年select to_char((SELECT now()::timestamp 1 year),yyyy) 3.获取上一年select to_char((S…

查看mysql主外键信息

SELECT *FROMinformation_schema.key_column_usage tWHERE t.constraint_schema 库名称AND t.constraint_name 外键名;转载于:https://www.cnblogs.com/igoodful/p/8954091.html

什么是以太坊,它是区块链2.0的代表,它又什么特点?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 以太坊 是一种全球共享计算,是各种分散应用程序的基础。它有一个独立于比特币的独立区块链,但与之类似。以太坊的区块链有显…

四川第七届 I Travel(bfs)

Travel The country frog lives in has nn towns which are conveniently numbered by 1,2,…,n1,2,…,n. Among n(n−1)2n(n−1)2 pairs of towns, mm of them are connected by bidirectional highway, which needs aa minutes to travel. The other pairs are connected by …

python社会学科需要学些什么_学好Python能做什么

近年来,选择学Python的人也在逐年增多。然而,很多人学Python只是盲目的跟随潮流,对于Python却不了解,学好Python能做什么?今天源码时代小编就来给大家介绍一下Python的就业方向。首先我们要了解一下Python是什么Python是一种计算…

解决Android5.0以后DatePicker选择时间无效的bug。

一、在布局中加上这句话。 加上了这句话后,就相当于强制用5.0以前的外观,所以外观会有所变化: 5.0以上没有这句话的外观: 加上之后的外观: 二、可以用DatePickerDialog代替 转载于:https://www.cnblogs.com/fuyouG/p/f…

【区块链Go语言实现】区块链基本原型

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 0x00 介绍 区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力…

python2和python3 在windows下公用 导致python2 pip无法使用 报ssl的错误

在查找资料的过程中,网上的信息说。高版本的pip是默认使用ssl,而python2的pip是不使用ssl; 本机的环境,是将python2的pip和python3的 pip做过处理的 最后会有一个叫pip2和pip3环境 有可能是我的操作失误,导致直接使用的…

阻塞队列与非阻塞队列

阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场…

python unicodedecodeerror utf8_python-pip install和UnicodeDecodeError:’utf-8’编...

尝试安装:pip install python-binance结果:Exception:Traceback (most recent call last):File "c:\users\анна\appdata\local\programs\python\python36\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_strreturn s…

Go语言指针详解

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 不像 Java 和 .NET,Go语言为程序员提供了控制数据结构的指针的能力;但是,并不能进行指针运算。通过给予程序员基…

java基础--日期--练习集锦

题目1 --日期 借助随机数,创建一个从1995.1.1 00:00:00 到 1995.12.31 23:59:59 之间的随机日期 package date;import java.util.Date;public class TestDate {public static void main(String[] args) {long second 1000;long minute 60*second;long hour minut…

python多变量非线性拟合_python实现多变量线性回归(Linear Regression with Multiple Variables)...

本文介绍如何使用python实现多变量线性回归,文章参考NG的视频和黄海广博士的笔记现在对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(x1,x2,...,xn)表示为:引入x01&#xff0c…

【bzoj3150】 cqoi2013—新Nim游戏

www.lydsy.com/JudgeOnline/problem.php?id3105 (题目链接) 题意 在第一个回合中,第一个游戏者可以直接拿走若干个整堆的火柴。可以一堆都不拿,但不可以全部拿走。第二回合也一样,第二个游戏者也有这样一次机会。从第三个回合(又…

再见,Python!你好,Go语言

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 AI 前线导读:Go 语言诞生于谷歌,由计算机领域的三位宗师级大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 写成。由于出身…

tensorflow intel platform 优化

intel平台优化 TensorFlow *是深度学习领域中主要使用的机器学习框架,要求高效利用计算资源。 为了充分利用英特尔架构和提高性能,TensorFlow *库已经使用英特尔MKL-DNN原语进行了优化,该原语是深度学习应用的流行性能库。 已进行优化的平台 …

basePath = request.getScheme()+://+request.getServerName()+:+r

basePath request.getScheme()"://"request.getServerName()":"r (2014-06-30 18:29:54) 转载▼标签: 宠物 分类: JavaString path request.getContextPath();String basePath request.getScheme()"://"request.getSe…

python dump函数_python中实现php的var_dump函数功能

最近在做python的web开发(原谅我的多变,好东西总想都学着。。。node.js也是),不过过程中总遇到些问题,不管是web.py还是django,开发起来确实没用php方便,毕竟存在的时间比较短,很多不完善的地方。比如我在调…

Go语言的Channel文章,整个人都感觉不好了

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Go的Channel是一个很强大的并发数据模型,在一个发送者和多个消费者情况下工作得最好,但是如果是多个发送者,那么…

图书管理系统(源码)

本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId1070 实例使用java语言实现了一个网页版的图片管理系统, 系统前端使用bootstrap技术,可以进行浏览器适配, 实现功能: 管理图书管书, 管理图书借还信息&#xff0…

linux 如何禁用账号和解除禁用账号

把账号禁用可以有几个方法&#xff1a;1. # usermod -L <username> # usermod -U <username> // 解除禁用2. 修改/etc/passwd文件&#xff0c;可以有几个地方1&#xff09;把第二个字段中的"x"变成其它的字符&#xff0c;该账号就不能…

maya批量命名插件_教你玩转MAYA的四十二精华造诣(第一期)

最近在整理文档时发现我收藏了一篇关于MAYA应用技巧的文章&#xff0c;突然有兴趣看了看&#xff0c;结果发现老版本MAYA中的某些内容很多已经无法应用于新版本。我又上网查了一下&#xff0c;结果发现网上好多帖子和我收藏的这篇内容基本一致&#xff0c;看来好多都是转载和抄…

Go语言开发常见陷阱,你遇到过几个?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 Go作为一种简便灵巧的语言&#xff0c;深受开发者的喜爱。但对于初学者来说&#xff0c;要想轻松驾驭它&#xff0c;还得做好细节学习工作。 初学者…

sxoi爆炸祭

好吧&#xff0c;纯粹是去玩玩的&#xff0c;我这么一个弱省的蒟蒻&#xff0c;进队纯粹是开玩笑。。。。 Day0 去五中试机&#xff0c;感觉电脑手感不错&#xff0c;打了半个线段树的板子才发现试机要在自己的电脑上试&#xff0c;然后我无奈的搬东西&#xff08;从26号搬到2号…

wiki多个文件一起导入_mac文件信息管理工具EagleFiler for Mac分享给大家

EagleFiler for mac使得管理您的信息方便。它可以让你存档和搜索邮件&#xff0c;网页&#xff0c;PDF文件&#xff0c;字处理文档&#xff0c;图像&#xff0c;等等。使用它可以从不同的来源收集信息。浏览不同类型的文件采用标准的三窗格界面。组织他们到文件夹中&#xff0c…