美文网首页数字藏品开发
同步合约数据到数据库经典案例1

同步合约数据到数据库经典案例1

作者: 区块链董叔 | 来源:发表于2023-04-06 17:23 被阅读0次

之前在《数字藏品发行平台的架构》里讲过,有一种架构希望以区块链的数据为核心。这样就需要将合约保存在区块链上的数据同步到数据库里,方便后续中间件接口的开发。

本次我们以同步ConfirmSale事件日志为例,介绍数据同步程序开发的相关知识点。

一、先上全部代码

二、相关知识点介绍

1. event logs

在Solidity代码中,使用event关键字来定义一个事件,如:event EventName(address bidder, uint amount);

这个用法和定义函数式一样的,并且事件在合约中同样可以被继承。触发一个事件使用emit(说明,之前的版本里并不需要使用emit),如:emit EventName(msg.sender, msg.value);

触发事件可以在任何函数中调用,如:

在我们的实例程序中,数字藏品交易合约定义了5种event log,分别是:商品上架、更新商品信息、取消上架、订单确认和拍卖出价。

我们需要将这5种事件从区块链同步下来,存入activity表中,作为基础数据,方便我们进行数据处理。

同时我们将event ConfirmSale单独拿出来,因为该事件数据作可以存入order为订单表,表示交易完成。

2. 使用环境变量

dotenv是一个零依赖的模块,它将环境变量从.env文件加载到process.env中。这使得我们可以隐藏数据库密码细节到.env文件,同时通过git进行代码版本管理。

3. 使用mysql数据库

此处我们将query包装在DbQuery方法的Promise中,目的是为了在程序中同步运行并等待。防止程序停止后,数据来不及存入数据库丢失。

4. 代码整体架构

使用异步方式方便使用wait语法

5. 使用hardhat同步数据

此处mysql语法使用“on duplicate key update”,为防止重复录入数据库。

6.附加order表数据结构

相关文章

  • 1.PDMan使用及自动生成代码

    1.打开PDMan开始->创建模块->创建数据库2.同步数据库到数据库模型模板->同步配置->保存版本 3.同步数...

  • (九)同步数据库数据到ES中

    1、需求描述 将数据库中数据同步到ES中,借助ES全文检索,提高搜索效率 用户update之后,需要同步到ES; ...

  • Qt数据库应用15-通用数据库同步

    一、前言 数据库同步的主要功能是将本地的数据库记录同步到远程的数据库,其中数据库类型不限,比如本地是sqlite数...

  • Qt数据库应用16-通用数据库采集

    一、前言 数据库采集对应的就是上一篇文章的数据库同步,数据库同步到云端数据库以后,app、网页、小程序啥的要数据的...

  • 12.shell中数据库操作

    打开数据库 退出数据库 显示数据库列表 查询数据库表 查询数据库表&输入重定向 插入表数据 案例1: 案例2:动态...

  • 数据库设计连接

    数据库建模工具 MySQL Workbench 同步到数据库 同步到远程服务器如果发生如下错误 这就需要在远程服务...

  • 构建高并发高可用的电商平台架构实践(二)

    8) 数据同步 在交易系统中,通常需要进行异构数据源的同步,通常有数据文件到关系型数据库,数据文件到分布式数据库,...

  • Python读取Excel文件

    需求:将Excel的数据同步到数据库, 由于sql 比较渣渣,于是打算用Python读取后在update到数据库,...

  • 【MySQL】MySQL5.6数据库基于binlog主从(Mas

    主从数据库同步原理 主从数据库同步工作原理(流程):当主库的数据发生修改时,数据更改的记录将写入到主库的二进制文件...

  • odoo之数据同步

    将其他数据库上的数据同步到odoo数据库内,生成报表,随时更新数据,并对更新的数据进行对比分析,分析详情: 精确到...

网友评论

    本文标题:同步合约数据到数据库经典案例1

    本文链接:https://www.haomeiwen.com/subject/jxuuddtx.html