火星链 火星链
Ctrl+D收藏火星链

SON:区块链研究实验室 | 使用MySQL存储以太坊事件

作者:

时间:1900/1/1 0:00:00

在本文中,我将演示一种缓存以太坊事件的简单方法。我只想说,通常我们将事务用于链下操作,例如跟踪令牌的传输或检索特定事务的筛选列表,就像一个SQL查询一样。

假设我们想要创建一个跟踪令牌传输的网站,Etherscan。我们只需要一波简单的操作,比如:

取得所有令牌转移信息

取得以太坊转账来源地址

取得以太坊转账目标地址

获得特定金额的转账信息

在特定时间范围内获得转移信息

在web3中是有getPastEvents方法,其示例用法是:

这种方法的主要问题是,随着区块链的增长,速度可能会变慢,尤其是如果您不运行自己的以太坊节点,并且使用像infura或MyEtherApi这样的公共提供者。

印度中小微企业区块链业绩及信誉平台IOUX拟融资1000万美元:金色财经报道,印度中小微企业区块链业绩及信誉平台IOUX宣布将融资1000万美元,约合7.7亿印度卢比,以进一步提升市场影响力并帮助中小微企业用更低成本、更便捷的方式从金融机构获得资金。据该公司联合创始人Vineet K Sachdev透露,IOUX此前已成功募集到一笔50万美元的种子轮融资,目前正与法律科技和金融科技领域里的投资公司接洽,以更好地支持区块链技术。(indiatimes)[2022/6/6 4:04:54]

接下来,几乎不可能实现一些比较复杂的查询,因为筛选对象的功能非常有限。

此外,已经写入区块链的事件无法更改,只能随时间添加新记录。这个和其他事实使事件成为缓存的完美目标。

数据库选择

美国华盛顿州州长签署法案,成立工作组研究区块链的应用潜力:3月31日消息,美国华盛顿州通过旨在扩大当地区块链采用的法案。华盛顿州州长Jay Inslee签署一项法案,使其成为法律,旨在扩大该州在各个金融和工业部门采用区块链技术的范围。

根据SB 5544法案,Jay Inslee下令成立华盛顿区块链工作组,该工作组将“研究区块链技术的各种潜在应用”。该工作组将由七名政府官员和全州各行业协会的八名领导人组成。它将研究区块链技术的实际应用,并在2023年12月1日前向州长提交一份研究结果报告。(Cointelegraph)[2022/3/31 14:29:15]

在这个例子中,我们将使用mysql作为保存事件记录的数据库。MySQL有能力存储原始JSON,然后使用JSON对象的属性编写查询,就好像它们是普通的SQL列一样。

动态 | 山西证券:两种类型的区块链公司值得投资者关注:据新浪财经报道,山西证券认为,从主题投资的角度来看,区块链技术的想象空间大,且多个国家部门连续发文也印证了其重要性。但和以往的题材不同,区块链尚属于早期,应用最多的是政府部门和金融机构,但主要注重将技术服务内部,区块链的商业化模式也不甚清晰,其收益难以体现在报表上。由此,本轮区块链的参与方式与此前的题材有所不同。从产业链角度来看,两种类型的区块链公司值得投资者关注。一类是区块链的底层技术公司,区块链的发展离不开底层技术和架构的支撑,预计后续相关部门有望出台政策对该类型的公司进行支持和补贴,该类型的公司将显著受益。二是为政府或大型金融机构提供技术支持的公司。[2019/10/29]

我们应该储存什么?

让我们仔细看看getPastEvents方法的结果,以实现我们使用的数据。我以Binance代币转移为例。每个事件对象都具有以下结构:

声音 | 屠光绍:区块链是金融科技四大支柱之一:据中国金融杂志报道,10日至11日,“沪上金融家公开课”暨“数字金融·金融科技”学科建设研讨讲坛在中欧国际工商学院举行。原中国投资有限责任公司党委副书记、副董事长、总经理屠光绍在公开课上表示,当前金融科技有四大支柱,包括人工智能、区块链、云计算、大数据。金融科技发展日新月异,对资产管理行业产生了九大影响。[2019/5/11]

如您所见,事件参数存储在returnValues属性中。blockNumber,transactionHash,logIndex也可能有用,我稍后会告诉你。

我们的目标是将这些JSON对象编写到数据库中,并实现可以无缝替换标准web3的getPastEvents方法的简单访问方法。

以下是用于创建Transfer表的SQL脚本。

人大教授杨东:看人、基础设施、白皮书可以辨别区块链项目真假:中国人民大学大数据区块链与监管科技实验室主任杨东表示,在分辨区块链项目时,早期项目主要看人,首先要看项目发起方主体,项目主要负责人哪些,CEO、CTO等是否具有强大技术背景等。第二看项目本身,区块链的基础设施非常重要。第三,看白皮书是否非常简单,有没有实质技术、场景应用。[2018/3/8]

需要说明的一些重要事项:

json列创建为JSON类型。这允许我们使用特殊语法创建自动生成的列。

from,to,value?-这些是自动生成的列。这个表达式起初看起来很复杂,但实际上它很简单。例如,从列值等于存储在json列中的对象的returnValues.from属性。

txHash和logIndex。这些属性组合在一起可识别每个事件对象我们需要那些为行创建唯一索引,从而防止偶尔重复事件。

我们还可以选择添加数据库索引来提高性能。例如,对于to列

案例实践

先决条件

Node.js的我使用的是8.4.0版。

Web3npm包与区块链进行交互。我们需要特定版本1.0.0-beta.35。在尝试检索某些事件时,最新版本beta.36的使用导致“返回值无效,是否运行OutofGas”错误。

3.要在JavaScript中使用MySQL数据库,我们应该安装mysql包?

?4.最后一个-?MySQL服务器。值得一提的是,我们将使用MySQL5.7作为最新的8.0版本似乎与mysql包兼容。

MySQL交互

我们将利用连接池对此示例进行查询。

使用promisified版本的查询方法会更方便?

现在我们可以使用以下代码将记录插入之前创建的传输表中。?

在这里,我们还检查可能的重复行插入。现在我们不希望在这种情况下做任何特别的事情,可能我们已经提前写过这些重复事件或类似的事情。所以我们只考虑处理这种异常。

缓存功能

让我们构造一个智能合约对象来从中检索事件

?我们只能在abi参数中包含Transfer事件接口,如下所示:

这是缓存功能的基本版本。首先,我们获取事件对象,然后逐个将它们写入数据库。?

定期区块链扫描

现在让我们将其扩展为一个简单的后台脚本,该脚本不断扫描区块链以查找发出的事件。

一些实用功能:

第一个是setTimeout的简单异步/等待实现。第二个用于fn的无限周期调用-工作函数。

有了这些辅助功能,我们的后台扫描仪看起来非常简单

让我解释'latestEthBlock1'的事情。Web3的getPastEvents返回在范围内写入的事件,包括边界。因此,如果没有这个递增,下一个cacheEvents调用将再次将写入latestEthBlock的事件作为结果的一部分返回。

虽然由于实现了唯一索引,重复事件不会插入到数据库中,但我们仍然不希望完成这些多余的工作。

对于简单的后台扫描程序,此实现应该足够了。但是,总有改进的余地。稍后我们会回到它。现在让我们快速了解一下我们现在可以利用这些数据做些什么。

事件检索

以下是选择从特定地址进行的转移的功能示例:

我们使用生成的列查询数据库。这里最值得注意的部分是函数的结果看起来就像web3的getPastEvents的结果。它使得重构当前代码变得更加容易。

进一步改进

事件对象包含许多可能对您的应用程序完全无用的属性。在写入数据库之前删除多余部分会更好。这样我们就节省了很多空间。

您可能还注意到,当前版本的扫描程序在每次重新启动时都以区块#0开始。在一直扫描到当前块时,它会尝试将重复记录插入数据库。我们可以通过查询数据库中的最新缓存块来消除那些多余的工作。

不是从块#0开始扫描也是很好的,但至少从部署合同时的块开始扫描。为简单起见,您可以使用etherscan.io获取此信息。

这里我们再次使用MySQLjson函数来获取事件对象的blockNumber属性。

然后更换旧的扫描功能

新的扫描功能?

?结论

最后,我们创建了一个简单但有效的事件扫描程序,可以将事件连续缓存到MySQL数据库中。

本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120???

标签:MYS区块链STESONmysterium区块链了多少人steem币有什么用SONNE币

欧易okex官网热门资讯
POS:硬盘挖矿才是未来?POC会成为下一个POW吗

共识机制是公链绕不开的课题,它让节点们在无中心组织的状态下相互信任。而更广义的共识则凝聚着持币者和生态建设者的信仰,在价格和价值的螺旋上升中被发扬光大.

1900/1/1 0:00:00
TPS:BiKi.com关于上线EM的公告(08-09)

尊敬的用户:BiKi.com即将开放EM的充值、提现,并开放EM/USDT交易对,具体时间如下:1、开放充值时间:8月9日10:00;2、开放交易时间:8月9日20:00;3、开放提现时间:另行.

1900/1/1 0:00:00
PHO:巴西网红疯创作挖矿 时尚自拍挖出上万枚COS

巴西网红圈最近都在疯一件事情,就是用PhotoGrid发布自拍美照求赞来进行COS挖矿——COS是内容公链Contentos所发行的通证.

1900/1/1 0:00:00
NSH:肖磊:黄金和比特币再度大涨 什么样的人在赚它们的钱

最近投资市场因各种宏观消息面的突变,出现了较大幅度的波动,恐慌情绪还在蔓延,在最近不到十个交易日里,一些主流资产大幅调整,美国道琼斯工业指数最近十个交易日下跌了超过5%.

1900/1/1 0:00:00
ONG:BigONE 关于补发 ONG 的公告

亲爱的用户,近期有用户向我们反馈ONT矿池产品的收益问题,经核实,由于相关数据未及时更新,我们此前确实漏发了部分用户的ONG.

1900/1/1 0:00:00
加密货币:研究:加密货币交易所黑客攻击数量正在下降,托管解决方案逐步完善是原因之一

据CryptoBriefing报道,交易所黑客攻击是加密货币持有者面临的最大威胁。但列支敦士登一家银行的最新报告显示,黑客们从投资者和交易所处盗取加密货币的机会越来越少.

1900/1/1 0:00:00