ETH:一文了解Turbo-Geth客户端最新改进_Etheriya

编者按:本文来自:以太坊爱好者,作者:GiulioRebuffo,翻译:阿剑,Odaily星球日报经授权转载。几个月以前,我加入了Turbo-Geth团队,开始主动给Trubo-Geth客户端贡献代码。Turbo-Geth客户端是Geth客户端的一个另类版本,其目标是做得比原有的客户端运行速度更快、更高效。那么Turbo-Geth实现这个目标的办法包括下面几项:进一步优化数据库结构在需要与状态数据交互的场合,减少对数据库的读、写操作优化状态树操作的效率在本文中,我会着重指出Turbo-Geth和Geth在数据库上的不同之处。主要的区别在于:不同的数据库按桶来细分数据库那么,本文的主要内容也就跟这两点相关。什么是Bolt,它跟LevelDB的区别在哪里?

一名ICO者通过欺诈性贷款申请非法获得逾700万美元疫情救济:据美国司法部4月20日公布的一份声明,一名中国籍纽约居民Justin Cheng在2018年通过欺诈贷款申请并在欺诈性ICO中误导投资者,获得了逾700万美元的新冠疫情救济。Cheng将这些钱花在了个人奢侈品支出上,包括劳力士手表、一套豪华公寓和一辆新奔驰汽车。在2018年8月至10月期间,他为自己的公司Alchemy Coin Technology Limited募集投资者参与ICO,同时对公司的财务状况和p2p借贷平台的准备情况做出虚假陈述,并且没有披露该公司的融资活动是未经授权的。地区法官Alison J. Nathan将8月3日定为量刑日期,Justin Cheng将面临最高80年的监禁。(Cointelegraph)[2021/4/21 20:42:57]

Bolt和LevelDB其实非常相似,两者都是“键-值对”存储,设计目标都是为不需要完整数据库服务器的项目提供简单、快捷且可靠的数据库。Geth选用的数据库是LevelDB,而Turbo-Geth选用的是Bolt。但两者也有一个关键区别:组织数据的方式。LevelDB是一个LSM数据库,而Bolt使用bucket,而且每一个bucket都包含着一个B+-Tree结构。我们可以把一个bucket当作“大数据库里的一个小数据库”。那么,两者之间的主要区别在于:LSM数据库是为重度添加操作和范围扫描操作优化的,而不是为随机读取的性能优化的;为了提供一致性,它不允许同时对数据库执行读、写操作。也是出于性能考虑,这种数据库是没有实现原子性的。Bolt则反之,插入操作速度较慢,但是随机读取速度较快,实现了原子性,而且可以同时对数据库读写。我们再稍微解释一下原子性:原子性:“原子”意味着不可分割。假设现在我们要给一个数据库存储多个哈希值,而其中一个在插入数据库时失败了,如果此时所有哈希值的操作都会同时撤销,这就叫做原子性。Turbo-Geth就有这样的特性,只有所有哈希值的插入操作都成功时,这个操作才能成功。而没有实现原子性的数据库则意味着,必须使用一个workaround以安全地将数据插入数据库。换句话来说,在这个点上,我们觉得Bolt更好,因为他在给数据库添加数据时更安全。数据库的组织

IPFSNEXUS 发言人:长远来讲疫情对区块链技术有着推动作用:据IPFS100.com报道,价值互联 链接世界区块链技术论坛会暨IPFSNEXUS交易系统2.0版上线发布会于9月17日在北京圆满落幕。在学术论坛会议上IPFSNEXUS交易系统2.0版本公测版正式上线。

会议上发言人表示,从技术层面,区块链受到政府部门、金融机构、科技公司、公益慈善机构等各方的重视,给区块链、人工智能、大数据、5G等技术带来了新的发展机遇。?从通证层面,以BTC为主的虚拟货币在短期内并没有大幅上涨动力支持,缺乏可持续进场资金的支撑。

总之,疫情对整个区块链行业的直接影响是负面的、短期的,但是从长远来讲对区块链技术的研发和应用的落地、行业的洗牌都有着积极的推动作用。我们看到,区块链技术在疫情这一特殊阶段能够发挥出的特殊作用,同时也能看到其在更长远的未来能够产生的潜在价值。[2020/9/21]

如前所述,Turbo-Geth是切分成多个bucket的。每个bucket都是大数据库中的一个小数据,各自包含了一个B+-Tree结构。下面便是Turbo-Geth数据库在区块高度9,346,492处的切分:

河南省新郑市在疫情期间建设采用区块链技术的不见面开标大厅:疫情期间,河南省新郑市率先建设“莲鹤”不见面开标大厅,采用“区块链”技术,将线下开标现场搬到线上,引入具有投标身份识别、电子签章、文件上传、文件解密等多项功能的“标证通”,一部手机完成异地观看、交流互动、投标解密、定位跟踪等所有投标工作,为企业降低投标成本。率先开发建设金融服务支撑平台,利用电子保函、投标贷、中标贷等服务,为企业与金融机构之间搭建信息桥梁。(河南商报)[2020/8/25]

泰国央行计划在2025年批准首批虚拟银行运营:1月16日消息,泰国央行将于2025年批准首批虚拟银行提供服务,此举旨在促进竞争、扩大贷款渠道、降低企业和个人融资成本。泰国央行助理行长Tharith Panpiemras表示,该行计划在2024年颁发三个许可证,大约有10家公司表示有兴趣申请。申请将于本季度晚些时候开放。据悉,在新的许可制度下,虚拟银行的监管将与传统商业银行相同,合格的申请人需要满足一定的要求。

泰国央行指出,虚拟银行不应通过不负责任的贷款追逐利润,不应给予相关方优惠,也不应滥用市场主导地位,对金融稳定、储户和消费者整体构成风险。虚拟银行在运营的头几年将处于“限制阶段”,其中包括密切监控,以防止金融系统性风险。泰国证券交易委员会最近宣布计划对数字资产实施更严格的监管,旨在加强投资者保护。此外,泰国在分析公司Chainalysis的全球加密采用指数中排名第八。(彭博社)[2023/1/16 11:13:34]

-Turbo-Geth的Archive节点的数据区分-Geth客户端的Archive大小:3.7TBParity客户端的Archive大小:3.6TBTurbo-Geth客户端的Archive大小:652.62GB每一个部分都存储在一个bucket里面。其中主要部分的简要解释如下:原象:哈希值与地址之间的管理,以及存储位置哈希值与存储位置之间的关联收据:交易收据合约存储内容的历史:合约存储内容的变更历史账户历史:账户的变更历史区块头:每个区块的区块头区块体:每个区块的区块体合约存储内容:就是合约存储内容ChangeSet:数据库变更历史账户:账户使用这么多bucket,是为了让构成大数据库的各B+-Tree树高不至于太高,这样跟数据库的交互就会比较容易。换句话说,这是在使用多个bucket来提高读取数据库的性能。另一种备选方案:BadgerDB

在切换到Bolt之后,Turbo-Geth在处理随机键时遇到了一些问题,因为Bolt会在提交数据之前对这些键进行排序,又因为这些哈希值都是随机的,而且数量很多,所以产生了大量的排序需求,然后导致大量的写入放大现象。而BadgerDB使用log-structured-merge模式,似乎是一个更好的选择。这个问题仍在研究当中,不过,我们已经实现了一个workaround来解决这个问题。这里有一个图表,显示了BadgerDB和BoltDB在整体性能上的对比:

结语

Turbo-Geth客户端通过下列手段来优化以太坊的性能:使用多个bucket,以更迅速地检索某些数据片使用B+-Tree而非LSM如果你想给我们捐赠,可以通过Gitcoin。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

火星币ACE:东大门的网红们_LAC

编者按:本文来自白话区块链,Odaily星球日报经授权转载。大家有去过韩国东大门的apM、apMPLACE、apMLuxe么?有在东大门购物的经历么?如果提到韩国服装业,就有一个不得不提的重要参.

[0:15ms0-3:394ms