A blockchain event processing suite based on python asyncio
Project description
web3-reactor
项目介绍
本项目是一个基于Python的异步web3信息处理套件,内置集成一些常用的区块链基础功能。旨在收集,处理,响应区块链上的所有 Transaction 或 Event。
用途
- NFT抢购
- ERC20抢购
- MEV机器人
- 构建区块链数据库
- 区块链实时数据分析
项目结构
核心观念
正如名字那样,本项目的核心就在于 react
,即消息驱动式,一个 message
引导一次回应。
本套件使用插件模式进行开发,开发者可以在本套件提供的基础设施的基础上,开发自己的插件,以实现自己的业务逻辑。
- 消息:一个消息代表了一次广播,消息由频道内的
publisher
发布,随后在频道内进行广播。 - 上下文(
msg-context
):一个消息将会伴随着一个上下文,上下文中包含了消息的一些基础信息,如:区块链原始交易信息,插件自定义的数据等,一个上下文将会在一个完整的生命周期中保持。 - 服务:本套件提供的一些基础服务设施。可以通过开发独立的包,来扩展本套件的服务(目前只提供ETH相关服务)。
- 频道:一个插件的集合,用户开发的对象,可以同时运行多个频道,来执行不同的任务,也可以将频道进行串联关联来执行其中的插件。
- 插件:一个频道中的最小单元,当一个频道广播一个消息时,频道内的插件会根据自己的权重按序处理消息,处理完成后,将消息传递给下一个插件。
- 生命周期:一个消息拥有一个完整的生命周期,包含
msg-start
,msg-end
,msg-prevent
,msg-stop
,msg-jump
以及开发者自定义的生命周期事件
,通常地,认为一个完整的生命周期是msg-start
到msg-end
。 - 事件:事件是除了默认广播之外的另外一种监听方式,可以用来处理一些特殊的业务逻辑,如:添加后台任务,检查任务情况,清理内存等。事件支持自定义。
消息广播
当 channel
内的 publisher
发布一个消息时,消息将会在 channel
内广播,所有的插件都将会收到这个消息,并对其作出相应的回应。
当本 channel
的最后一个插件响应之后,如果 channel
没有子节点,那么消息将会被销毁,否则,消息将会被传递给子节点的 publisher
,并在子节点内广播。
如果 channel
拥有多个子节点,那么 msg-context
会被复制,让所有子节点并发执行。
TODO
-
msg-context
to lock - config format&type check support
- etherscan API to module
- alchemy API to module
- web3 toolkit (pro edition)
快速上手
当一个 message
被发布,插件将会按序执行,并对其作出相应的回应。这就是本套件最直观的行为。
现在,我们将编写一个简单的插件,来实现一个简单的功能:监听 Transfer
事件,当事件发生时,打印出 from
和 to
地址。
创建虚拟环境,可选
python3 -m venv my-reactor
cd my-reactor
# Linux & Mac
source ./venv/bin/activate
# Windows
.\venv\Scripts\activate.bat
安装
# Linux & Mac
pip3 install web3-reactor
# Windows
pip install web3-reactor
使用
详见 example
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file web3_reactor-0.1.0.tar.gz
.
File metadata
- Download URL: web3_reactor-0.1.0.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f8a93fb03562ba7bf12725b887c8e8ab9622e14f494ccd50a697e730a00987b |
|
MD5 | 08d464247fd3fdd2ea59c8cf5d09d931 |
|
BLAKE2b-256 | 4e0b3308fb51aab92abbf5e0b1ed7a7e516a90a9e763999720b9dd7b05877f89 |
File details
Details for the file web3_reactor-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: web3_reactor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b39449b23044f137b112a46aac43967cbfd37025dc119b6e236cbf04e9406c15 |
|
MD5 | 8f59cc19a2e2ad5544b92bd4672239e4 |
|
BLAKE2b-256 | 1945c05e67649b33b6a91bcd62588ffa558e0a9921ec56db9abb5467a3a269a9 |