月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 币安下载 > 正文

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

作者:

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

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

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

取得所有令牌转移信息

取得以太坊转账来源地址

取得以太坊转账目标地址

获得特定金额的转账信息

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

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

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

A股收盘:区块链50指数收涨0.30%:金色财经报道, A股收盘,三大股指涨跌各异,上证指数收盘下0.08%,报2965.27点,深证成指收涨0.29%,报11702.44点;创业板指数收涨1.01%,报2342.88点。

A股区块链50指数报3510.24点,收涨0.30%;区块链板块收收涨0.31%;数字货币板块收涨1.0%。区块链板块217只概念股中,120只上涨,92只下跌,5只平盘。数字货币板块32只概念股中,23只上涨,8只下跌,1只平盘。[2020/6/22]

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

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

数据库选择

在Robinhood持有区块链相关ETF的用户创今年新高:金色财经报道,交易应用Robinhood上持有区块链相关交易所交易基金(ETF)的用户数量本周达到2020年的最高水平。数据来自三个基于美国的最大的区块链ETF,包括BLCN、BLOK和LEGR。就其中两只而言,这并不代表历史新高水平。BLOK和BLCN的持有人数量分别从历史高点下跌了33%和45%,而LEGR的持有人数量创下了历史新高。[2020/6/6]

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

我们应该储存什么?

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

声音 | 寿文光:区块链、人工智能等技术助推司法效率提升社会法治水平提高:据新华社消息,近日,诸暨法院立案庭庭长寿文光接受采访时表示,“一系列科技手段正在有效助推司法效率的提升和社会法治水平的提高。”浙江省高院审管办数据显示,通过运用司法区块链、人工智能等技术,在线矛盾纠纷多元化解平台、“移动微法院”等平台推进诉源治理,从2019年5月开始,浙江各级法院收案量出现下降拐点,且降幅逐月扩大。[2019/11/24]

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

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

行情 | A股收盘:区块链板块上涨0.40%:A股收盘,上证指数收涨0.01%,区块链板块上涨0.40%。84只概念股中,40只上涨,41只下跌,3只平盘。上涨前三为:深科技(+10.05%)、深大通(+10.01%)、第一创业(+6.97%);跌幅前三为:梦网集团(-3.56%)、天广中茂(-2.41%)、*ST荣联(-2.39%)。[2019/8/21]

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

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

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

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

动态 | 2018年深圳建行将加快区块链等五大核心能力建设:2018年,深圳建行将全面实施金融科技引领战略,对标先进金融科技公司,加快人工智能、云计算、大数据、物联网和区块链五大核心能力建设,围绕粤港澳大湾区、普惠金融、住房租赁等国家政策导向、区域、市场热点,重点推进一批有影响力的重大项目落地。[2018/7/5]

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区块链STESONMAMYSHIBA价格区块链技术的特点StellarPayGlobalSongbird Finance

币安下载热门资讯
CSA:Announcement of the awarding ceremony for“CSAC Telegram Group”event_DAX

DearIDAXusers:Alltheawardshasbeenawarded,customerswhoqualifyfortheawards.

1900/1/1 0:00:00
数字货币:比特币11300美金区间的突破 需要大量能_USD

上周末币圈最大的消息,当属央行数字货币。8月10日,中国人民银行支付结算司副司长穆长春在第三届中国金融四十人论坛上表示,央行数字货币即将推出,将采用双层运营体系DC/EP,即上层是中国人民银行,

1900/1/1 0:00:00
稳定币:沃尔玛要冲击Libra?难_数字货币可靠吗会被吗知乎

近日,据美国专利商标局公布的一份文件显示,零售巨头沃尔玛计划发行稳定币,并与美元直接挂钩。这与Facebook即将推出的“Libra”极为类似,都是通过区块链网络的构建,提供低成本、无边界的价值.

1900/1/1 0:00:00
XRP:报告:XRP表现不佳是因为机构采用率低和Ripple面临激烈竞争_XRP2.0

据OKEx报告《为什么XRP表现不佳?》,支付解决方案提供商Ripple面临激烈的竞争,并且对公司的任何负面影响都很容易在XRP中转化为不受欢迎的价格走势.

1900/1/1 0:00:00
SDT:巨鲸持有80%USDT 高控盘对比特币会造成什么影响?_ledger钱包支持usdt么

虽然加密货币肩挂去中心化的使命,但是加密货币市场还是涌现出众多财力十足的大富豪。在USDT市场,至少拥有价值100万美元等值加密货币的巨鲸账户就有318个.

1900/1/1 0:00:00
MSV:Dcoin 8月11日MSV/USDT上币公告_Siddcoin

亲爱的Dcoin用户,Dcoin将于8月11日上线MSV,时间安排如下,欢迎体验!8月11日11:00MSV开放充值8月11日15:00MSV/USDT开放交易.

1900/1/1 0:00:00