区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > DOGE > 正文

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

作者:

时间:

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

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

取得所有令牌转移信息

取得以太坊转账来源地址

取得以太坊转账目标地址

获得特定金额的转账信息

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

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

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

动态 | 国家电网:研究建立适应区块链技术的安全保障机制:12月15日,记者自国家电网获悉,国家电网有限公司党组理论学习中心组(扩大)开展区块链技术专题学习,进一步探索推进区块链技术在能源电力行业的应用,加快“三型两网、世界一流”战略实施。国家电网称,推进区块链技术在能源电力领域的应用,对加快泛在电力物联网建设、促进国家电网数字化转型,具有重要的战略意义。公司将密切跟踪区块链技术的发展趋势,强化区块链基础研究,开展底层技术创新,确保关键核心技术自主可控;坚持需求导向和应用统筹,积极推进区块链技术与泛在电力物联网的融合发展,在优质服务、安全生产、企业运营、电力金融和能源交易等领域拓展应用;强化风险意识、底线思维,研究建立适应区块链技术的安全保障机制,确保电网安全、信息安全;推进区块链标准体系建设,加快构建区块链产业生态,带动产业链上下游协同发展,为公司“三型两网”世界一流能源互联网企业建设注入新动能。(新京报)[2019/12/16]

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

动态 | 韩国LG CNS利用区块链技术推出用于企业管理的平台:据Monachain消息,6月19日,韩国LG CNS的区块链事业部宣布推出可在金融,通讯,制造行业中使用的企业区块链平台。[2019/6/19]

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

数据库选择

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

我们应该储存什么?

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

动态 | GE与德国能源局合作 共同研究利用区块链技术提升整体能源工业的效率:近日,美国通用电气(GE)正在同德国能源局合作,研究如何利用区块链技术提升整体能源工业的效率。GE认为,通过区块链实现能源之间的点对点交易。传统意义上来说,将电力输送给终端用户分为三个阶段:从发电厂先通过高压电线传输到城市,再从邻近的变电站分发到家庭和企业,最后被使用。其中,传统变电站的功能是将高压线中的电力输送给无数终端用户,而不是从终端用户那里获得电力,整合在一起,再放到高压线中。但区块链技术可以让变压器等硬件实现升级。区块链可以识别本地的供需要求,然后将这些要求与本地的电力生产来源进行匹配。[2018/12/30]

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

现场 | 范金刚:区块链技术为食品行业构建资源信用网络:金色财经现场报道,在区块链服务(BaaS)论坛上中国食品链技术股份有限公司总经理范金刚发表了“中国食品链重塑食品产业信用体系”的演讲,他表示,中食链从食品行业出发,利用区块链技术构建生态资源信用网络,推动传统经济数字化创新发展。[2018/10/10]

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

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

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

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

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

保险公司Beazley和Bitfury推出区块链注册中心:保险公司Beazley已与三家公司合作,建立了一个基于区块链的注册中心,该注册中心将为大规模击案等危机情况提供保险。该注册中心将利用区块链来加速对大规模人员伤亡及其财务后果的应对,允许保险公司对威胁和索赔进行分类,并分享有关威胁和索赔的实时信息。[2018/5/1]

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区块链dapp开发公司Stellar InvictusSongbird Finance

DOGE热门资讯
TOK:ZG.COM“NEW ”打新计划第11期项目IGC公告_NEW

尊敬的用户 您好! 根据ZG.COM“NEW”打新计划原则,综合多方位因素考量,ZG.COM团队从众多投标项目中甄选出--IGC,作为本计划第11期打新项目.

CoinTiger币虎8月6日16:00上线BAX/ETH和BAX/USDT交易对

尊敬的用户: CoinTiger币虎将于新加坡时间2019年8月6日16:00上线BAX/ETH和BAX/USDT交易对.

ONT:火币钱包荣升共识节点 分享1888 ONG回馈礼_Huobi

尊敬的用户: 火币钱包已成功晋级为ONT的共识节点,并成为首个钱包产品共识节点。为庆祝这一重要时刻,火币钱包特此奉上1888ONG回馈礼.

ENT:纽约时报计划用区块链打击假新闻 真的可以实现吗?_Paycent

在这个信息爆炸的时代,除了官媒外,还有许多无良媒体、无章法的自媒体总是想方设法吸引人们眼球,群众企图听到真实的声音居然是件不容易的事情,假新闻的危害性也愈加显著.

TOP:ZG.TOP上线Launchpad项目——Fantom(FTM)_ANT

尊敬的ZG.TOP用户:ZG.TOP即将上线非首发Launchpad项目——Fantom打折认购。此项目为Gate.iostartup优选项目.

TOM:关于假冒客服的公告_bytom

尊敬的EZB用户: 随着EZB平台越来越受到广大用户的欢迎,在线用户人数不断攀高的同时,一些不法份子开始采用不正当手段损害用户利益.