p0-cosmpy实践
0x-wen

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对象成员是否符合规范

image

  • aerial/init.py

    LedgerClient 根据config中的URL类型建立一个客户端

    image

1.4 更改配置后调试测试用例

项目测试用例中有一个简单示例:

1
cosmospy/tests/integration/test_tx.py::test_faucet_transaction_balance

更改相关配置主要是代币名称,节点地址等,先保证此用例通过

2.cosmpy实践

2.1 找到proto源文件并导入相关依赖

改造 cosmos-sdk 项目的 proto 源文件路径一般在根目录下的 proto 文件夹中

image

需注意 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
    2
    find ./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客户端调用文件

2.4 按proto文件编写对应客户端代码

image

由 Hexo 驱动 & 主题 Keep
总字数 41.7k