首页 > 其他分享 >polygon-cdk代码解读

polygon-cdk代码解读

时间:2024-08-13 16:53:55浏览次数:5  
标签:err polygon nil cdk 解读 resultRollupInfo L1 区块 数据

同步器

数据的查找

  1. 数据来源

    1. 数据是从以太坊L1区块链(L1)中获取的。

    2. 通过多个以太坊客户端(ethermans)并行地请求获取区块数据。

  2. 查找数据的函数

    1. asyncRequestRollupInfoByBlockRange: 异步请求特定区块范围内的汇总信息(rollup info)。

    2. requestLastBlockWithRetries: 重试请求L1上的最新区块,直到成功或达到最大重试次数。

  3. 查找数据的核心逻辑

    1. launchWork 函数:是查找数据的核心函数。它负责获取下一个需要处理的区块范围,并使用asyncRequestRollupInfoByBlockRange来请求这些区块的数据。

    2. renewLastBlockOnL1IfNeeded 函数:用于在必要时刷新L1上的最新区块信息,以确保同步是最新的。

数据的发送

  1. 发送的目标

    1. 获取到的数据会被发送到同步器中,通过 outgoingChannel 进行传递。
  2. 发送数据的函数

    1. sendPackages 函数:将打包好的数据发送到 outgoingChannel

    2. onResponseRollupInfo 函数:处理从L1获取到的汇总信息,并通过 sendPackages 发送给消费者(consumer)。

  3. 数据发送的时机

    1. 当生产者(producer)认为自己已完全同步(通过 IsNodeFullySynchronizedWithL1 判断)时,会发送一个消息到消费者,告知已完成同步。

    2. 在每次获取到新的汇总信息时,也会将信息发送到 outgoingChannel

数据发送的流程

  • 数据首先通过以太坊客户端从L1中获取,然后经过一系列的过滤和处理,最后通过 outgoingChannel 将数据发送到同步器(同步器可能是另一个服务或处理逻辑,用于进一步处理这些数据)。

总结:

  • 数据是从以太坊L1区块链中并行获取的,使用 asyncRequestRollupInfoByBlockRangerequestLastBlockWithRetries 进行请求。

  • 获取到的数据会通过 sendPackages 函数发送到 outgoingChannel,传递给同步器进行进一步处理。

里面的几个方法会去找etherman,然后通过ethclient去交互。
func (w *workerEtherman) executeRequestRollupInfoByBlockRange(ctx contextWithCancel, ch chan responseRollupInfoByBlockRange, request requestRollupInfoByBlockRange) (*rollupInfoByBlockRangeResult, error) {
    resultRollupInfo := rollupInfoByBlockRangeResult{request.blockRange, nil, nil, nil, nil}
    if err := w.fillLastBlock(&resultRollupInfo, ctx, request, false); err != nil {
       return &resultRollupInfo, err
    }
    if err := w.fillRollup(&resultRollupInfo, ctx, request); err != nil {
       return &resultRollupInfo, err
    }
    if err := w.fillLastBlock(&resultRollupInfo, ctx, request, true); err != nil {
       return &resultRollupInfo, err
    }
    if err := w.fillPreviousBlock(&resultRollupInfo, ctx, request); err != nil {
       return &resultRollupInfo, err
    }
    return &resultRollupInfo, nil
}

标签:err,polygon,nil,cdk,解读,resultRollupInfo,L1,区块,数据
From: https://www.cnblogs.com/xiaogangfan/p/18357325

相关文章

  • JS中关于为什么调用构造函数要使用new的详细解读
    在JavaScript中,使用new关键字调用构造函数是创建新对象的关键步骤。本文将从以下几个方面解释为什么要这样做:1.创建一个新的对象当你用new调用构造函数时,会自动创建一个新的空对象,这个对象会被赋值给this,即构造函数内部的this关键字会引用这个新创建的对象。fu......
  • 爱因斯坦求和约定einsum简单例题解读
    概论在爱因斯坦求和约定或einsum()格式字符串中,所有的索引都可以分为两类:自由索引集和求和索引集。它们的区别很简单:自由索引是用于输出规范中的索引。它们与外层for循环相关联。求和索引是所有其他索引:它们出现在参数规范中,但不出现在输出规范中。之所以称为求和索引,是因......
  • 142文章解读与程序——SCI《基于DDPG算法的发电公司竞价策略研究》已提供下载资源
    ......
  • Linux内核解读(1)--内存管理与malloc原理
        本文主要关注Linux环境的堆内存的管理,详细解析Glibc与TCMalloc的malloc原理, 由于本人能力有限,难免会出现解读错误的地方,望各位大佬批评指正,后面也会在进一步解读中对本文进行修改。1、Linux内存分布        下图的布局形式是在内核2.6.7以后才引入的,......
  • 艾瑞白皮书解读(二)丨中国企业数据治理价值体现的全方位探析
    2024年7月艾瑞咨询公司对国内数据治理行业进行了研究,访问了国内多位大中型企业数据治理相关负责人,深度剖析中国企业在数字化转型过程中面临到的核心数据问题后,重磅发布《2024中国企业数据治理白皮书》(以下简称“白皮书”)。随着企业数字化转型的逐渐深入,越来越多的企业意识到......
  • 137文章解读与程序——基于遗传算法优化神经网络的时间序列预测 GA-BP已提供下载资源
    ......
  • 深度解读《TOGAF®架构开发方法》在数字化转型中的应用
    《TOGAF®架构开发方法》由全球知名的TheOpenGroup编写,是企业架构开发的权威指南。它不仅提供了一套系统化的理论框架,还为企业架构师和信息技术管理者提供了从理论到实践的详细路径,帮助他们在数字化转型过程中取得成功。本文将从理论到实践的视角,深入解读这本书的核心内容,探......
  • 最佳实践:解读GaussDB(DWS) 统计信息自动收集方案
    摘要:现在商用优化器大多都是基于统计信息进行查询代价评估,因此统计信息是否实时且准确对查询影响很大,特别是分布式数据库场景。本文详细介绍GaussDB(DWS)如何实现了一种轻量、实时、准确的统计信息自动收集方案。本文分享自华为云社区《【最佳实践】GaussDB(DWS)统计信息自动收......
  • 深度解读昇腾CANN小shape算子计算优化技术,进一步减少调度开销
    摘要:Host调度模式下,GE将模型中算子的执行单元划分为HostCPU执行与Device(昇腾AI处理器)执行两大类。本文分享自华为云社区《深度解读昇腾CANN小shape算子计算优化技术,进一步减少调度开销》,作者:昇腾CANN。GE(GraphEngine)将模型的调度分为Host调度与下沉调度两种模式。经过上期的介......
  • 多模态大模型 intern_vl 2.0版本解读
    目录更大规模的语言模型多模态输入多任务输出性能表现github:GitHub-OpenGVLab/InternVL:[CVPR2024Oral]InternVLFamily:APioneeringOpen-SourceAlternativetoGPT-4o.接近GPT-4o表现的可商用开源多模态对话模型论文:https://arxiv.org/pdf/2404.16821(还是......