1.cosmpy源码解读
1.1 项目简介
基于 Cosmos-SDK 用于与区块链交互的 Python 客户端库 cosmpy-项目地址
官方下也有一些示例文档和教程 可参考:https://fetch.ai/docs
1.2 下载源码并安装依赖
poetry 的使用
1
2
3
4
5
6
7安装
brew install poetry # 这里是mac电脑下安装方式,win可自行查找
进入项目目录下执行下面命令
poetry install
将根据项目根目录中的pyproject.toml文件中定义的依赖项列表,下载并安装所有必需的依赖项
1.3 调试代码和模块解析
aerial模块
- config.py:
核心逻辑是NetworkConfig 和 NetworkConfigError 两个类
NetworkConfig 主要配置 不同网络环境对应的成员数据
validator函数主要检查classdata对象成员是否符合规范
aerial/init.py
LedgerClient 根据config中的URL类型建立一个客户端
1.4 更改配置后调试测试用例
项目测试用例中有一个简单示例:
1 | cosmospy/tests/integration/test_tx.py::test_faucet_transaction_balance |
更改相关配置主要是代币名称,节点地址等,先保证此用例通过
2.cosmpy实践
2.1 找到proto源文件并导入相关依赖
改造 cosmos-sdk 项目的 proto 源文件路径一般在根目录下的 proto 文件夹中
需注意 py-proto
是最后生成的Python调用文件,至于其他三个文件都可通过Google下载
2.2 编译proto文件
编译命令,
需进入proto路径下,并提前创建py-proto文件夹
–proto_path=./proto # 指定proto文件的路径
–python_out=./proto/py-proto –grpc_python_out=./proto/py-proto # 指定Python调用文件路径
$(find ./ ( -path “/proto/“ ) -type f -name “*.proto”) # 查找proto文件夹下所有 .proto结尾文件
1
python -m grpc_tools.protoc --proto_path=./proto --python_out=./proto/py-proto --grpc_python_out=./proto/py-proto $(find ./ \( -path "*/proto/*" \) -type f -name "*.proto")
2.3 生成的文件可能没有包含__init__
文件,需要循环创建
若已经有则可跳过此步骤
将 py-proto 文件夹导入cosmpy项目, 重命名为 proto 此时会覆盖旧项目 proto
在proto文件夹下创建
__init__.py
文件循环遍历每个文件夹并创建
__init__.py
文件1
2find ./cosmpy/proto/amino -type d -not -name '.*' -exec sh -c 'if [ ! -f "{}/__init__.py" ]; then touch "{}/__init__.py"; fi' \;
find ./cosmpy/proto/cosmos -type d -not -name '.*' -exec sh -c 'if [ ! -f "{}/__init__.py" ]; then touch "{}/__init__.py"; fi' \;其他文件夹操作方式类似,操作完毕后将得到完整可用的Python客户端调用文件