以太坊区块链索引器
eth-index的Python项目详细描述
ETH指数
eth index是以太坊区块链上事件的索引器。它 将事件导入PostgreSQL数据库。它是 TrustLines项目中继服务器组件。
安装
在尝试安装py eth索引之前,请确保您拥有postgresql 已安装开发头文件和库。基于debian的系统 这可以通过运行:
apt install libpq-dev
eth index使用python 3.6或更高版本。请确保您有所需的 已安装版本。
请将源代码从github,cd签入签出的 repo并用一个新的virtualenv运行下面的pip命令:
pip install -c constraints.txt .
发展
一个完整的开发环境可以安装:
pip install -c constraints.txt -r requirements.txt pip install -c constraints.txt -e .
这将安装黑色,片状8,mypy和tox等。
黑色
源代码的格式为black。如果 如果选择不使用预提交挂钩,则应该能够格式化 使用black setup.py ethindex的源代码。
薄片8
我们使用flake8检查错误。运行flake8 ethindex检查错误。
mypy
mypy用于检查类型错误。运行mypy --ignore-missing-imports ethindex手动检查。
运行tox将在本地运行black、flake8、mypy和pytest。
由于我们也对postgres运行了一些测试,postgres数据库服务器必须 安装在本地计算机上。不过,也不必启动,因为 测试将使用临时数据目录启动postgres。
在基于debian的系统上,apt install postgresql将安装postgresql 数据库。
预提交
存储库附带一个配置文件,用于 pre-commit。我们建议使用PIPSI 安装预提交。在安装预提交之后,git 提交挂钩可以在 PY ETH索引存储库。
初始化数据库
请设置一个工作的postgres环境,即设置pg* 环境变量和配置~/.pgpass。
然后运行
psql -f create-table.sql
创建数据库表。
ethindex
ethindex是一个命令行程序,用于运行 同步进程。它还使用pg*变量来确定 要连接的Postgres服务器。
输入索引
在将事件导入postgres数据库之前,abis必须 知道。
ethindex importabi可用于将abis导入postgres 数据库。默认情况下,它读取两个json文件addresses.json和 contracts.json从当前目录添加到abis 桌子。这些文件正是中继服务器读取的文件。 它们的位置可以通过--addresses和 -contracts命令行参数。
用法:
Usage: ethindex importabi [OPTIONS] Options: --addresses TEXT --contracts TEXT --help Show this message and exit.
ethindex运行同步
ethindex runsync将启动实际的同步过程。打开 第一次启动时,它将读取所有abis并在 包含所有协定地址的同步表。然后它将所有 事件放入postgres表events。
用法
Usage: ethindex runsync [OPTIONS] Options: --jsonrpc TEXT jsonrpc URL to use --required-confirmations INTEGER number of confirmations until we consider a block final --waittime INTEGER time to sleep in milliseconds waiting for a new block --startblock INTEGER Block from where events should be synced --syncid TEXT syncid to use --merge-with-syncid TEXT syncid to merge with --help Show this message and exit.
添加新合同
使用ethindex importabi命令导入合同。然后同步 这些契约并将它们与默认的 以下命令:
ethindex runsync --syncid new --merge-with-syncid default
此命令将同步所有尚未同步的合同 对于默认值syncid,并将新的syncid合并到默认值 syncid,当它们都与链完全同步时。这意味着 必须为默认值运行runsync作业。
状态和限制
- ethindex是alpha-softw是。