当前位置: 首页 > article >正文

以太事件解析 #7 事件侦听_02

前言

续接上篇内容,在上篇介绍了事件的获取和确认的过程,本篇文章集中讲下,后台管理的一些api和配合业务一些内容的说明。

管理类

链配置管理

AdminChainConfigController
用于维护区块链的相关侦听配置信息,包括但不限于区块高度、链的侦听状态以及其他必要信息,为系统提供实时的链状态监控能力。


合约配置管理

AdminContractConfigController
负责管理合约的配置,支持以下功能:

  • 配置和更新合约地址。
  • 维护合约的运行状态(启用、禁用等)。
  • 保存合约相关的附加信息,支持个性化扩展。

日志信息管理

AdminContractLogsController
提供合约日志的查询和管理功能。通过该模块,用户可以便捷地获取和分析合约的运行日志,为问题排查和运行监控提供支持。

外部对接

外部查询主要用于外部接口和日志信息的对接,也就是说让业务模块可以查询通过合约名称、topic0等其它信息查询到未处理的日志信息。

select log.*
    from t_contract_logs as log,
         t_contract_config as config
    where log.contract_config_id = config.contract_config_id
      and log.first_topic = #{firstTopic,jdbcType=VARCHAR}
      and log.contract_address = config.contract_address
    <if test="contractAddress != null">
      and log.contract_address = #{contractAddress,jdbcType=VARCHAR}
    </if>
    <if test="contractName != null">
      and config.name = #{contractName,jdbcType=VARCHAR}
    </if>
    <if test="targetTable != null">
      and log.contract_log_id not in (select contract_log_id from `${targetTable}`)
    </if>
    order by log.block_timestamp, log.contract_log_id
    <if test="limit != 0">
      limit #{limit,jdbcType=INTEGER}
    </if>

典型的业务表的设计如下

其中contract_log_id批的是业务的id,一般我们可以将其设置成唯一索引,这样就可以关联你的业务表和日志表的关系,这里的hash和区块高度和区块时间是冗余在业务表中。用来理文件的查询,当然实际业务过程中有一些特殊的处理,大家可以自己编写SQL进行查询,总体的集成建议是让日志表和业务库是在同一个数据库里,这样能解决你大概90%以上的业务问题。

总结

总结来看,这两篇文章基本完整地描述了当前区块侦听相关功能的设计与实现内容。核心模块涵盖了链配置管理、合约配置管理以及日志信息管理,形成了一套较为完整的区块链侦听解决方案。

具体细节和实现可以直接参考代码。如有更成熟的思路或建议,欢迎随时留言交流,以便共同优化和完善整体功能。


http://www.kler.cn/a/413225.html

相关文章:

  • C#开发合集
  • Springboot项目搭建(6)-前端登录跳转与Pinia实用
  • CTF之密码学(BF与Ook)
  • MQ高级2:MQ的可靠性
  • 【前端】JavaScript中的字面量概念与应用详解
  • uniapp+vue2+uview2.0导航栏组件二次封装
  • 第四十篇 DDP模型并行
  • Android基本概念及控件
  • 23种设计模式-享元(Flyweight)设计模式
  • 基于SSM的婴幼儿用品商城系统+LW示例参考
  • C#里怎么样快速使用LINQ实现查询?
  • k8s集群增加nfs-subdir-external-provisioner存储类
  • UWB数字钥匙安全测距和场景应用
  • SQL EXISTS 子句的深入解析
  • 电脑上的ip地址可以改吗?如何改变ip地址
  • Java图书管理系统(简易保姆级)
  • CTF之密码学(RSA加密)
  • PMP好考吗,有多大的价值?
  • Leetcode 每日一题 30.串联所有单词的子串
  • 《用Python实现3D动态旋转爱心模型》
  • 前端学习笔记之FileReader
  • 蓝牙定位的MATLAB仿真程序|基于信号强度的定位,平面、四个蓝牙基站(附源代码)
  • React的基础知识:Context
  • 【vue】导航守卫
  • 高级java每日一道面试题-2024年11月27日-JVM篇-JVM的永久代中会发生垃圾回收么?
  • 将jar包导入maven