`

eth_fetch

 
阅读更多
fetch的流程
1.当我们接收到NewBlockHashesMsg消息得时候,我们只收到了很多Block的hash值。 需要通过hash值来同步区块,然后更新本地区块链。 fetcher就提供了这样的功能
2.fetcher通过四个map(announced,fetching,fetched,completing )记录了announce的状态(等待fetch,正在fetch,fetch完头等待fetch body, fetch完成),并通过定时器和各种消息来对各种map里面的announce进行状态转换,announced --fetchTimer(fetch header)---> fetching --(headerFilter)--> fetched --completeTimer(fetch body)-->completing --(bodyFilter)--> enqueue --task.done--> forgetHash
3.在接收到NewBlockHashesMsg的时候,对于本地区块链还没有的区块的hash值会调用fetcher的Notify方法发送到notify通道
4.在接收到NewBlockMsg的时候会调用fetcher的Enqueue方法,这个方法会把当前接收到的区块发送到inject通道
5.header和body都收到并验证通过后,会马上广播出去
分享到:
评论

相关推荐

    rt-thread 通信

    - 经过一系列调用后到达`sys_arch_mbox_fetch()`函数,该函数使用`rt_mb_recv()`等待信号量和数据。 - 当ETH中断发生时,通过`HAL_ETH_IRQHandler`函数触发接收流程。 - `HAL_ETH_IRQHandler`函数调用`HAL_ETH_...

    sudo apt-get install ethereum遇到E: Failed to fetch http://ppa.launchpad.net/, Unable to fetch some等

    在Ubuntu上搭建以太坊环境时,每次到sudo apt-get install ethereum这一步都会变得巨卡无比,并且经常遇到这个问题: ... Connection timed out...E: Failed to fetch http://ppa.launchpad.net/ethereum/ethereum/ubuntu

    时间序列机器学习:用于时间序列分析的机器学习模型

    # Fetches the default tickers: BTC_ETH, BTC_LTC, BTC_XRP, BTC_ZEC for all time periods. $ ./run_fetch.py 默认情况下,将提取Poloniex中所有可用时间段(天,4h,2h,30m,15m,5m)的数据,并将其存储在_...

    Python库 | huobitrade-0.2.8-py3-none-any.whl

    tasks = [fetch_ticker(symbol) for symbol in symbols] results = await asyncio.gather(*tasks) print(results) ``` 以上只是`huobitrade`库的基本用法。它还提供了更高级的功能,如批量下单、监听实时行情、管理...

    nimbus-eth1:Nimbus:用于资源受限设备的以太坊1.0和2.0客户端

    在Windows上,可通过fetch-dlls Makefile目标获得预编译的DLL集合下载:( )。 # MacOS with Homebrew brew install rocksdb pcre # Fedora dnf install rocksdb-devel pcre pcre-devel # Debian and Ubuntu sudo...

    uniswap-things:Uniswap自动化的东西

    从描述中可以看出,“fetch_swap”是一个例子,它的功能是监控某个代币的价格,一旦价格达到用户设定的限制,就会自动执行卖出操作。这为交易者提供了一种自动化策略,帮助他们在市场波动时抓住有利的交易时机。然而...

Global site tag (gtag.js) - Google Analytics