3 个版本
0.4.3 | 2024年4月11日 |
---|---|
0.4.2 | 2023年8月31日 |
0.4.1 | 2023年7月12日 |
#2881 in 神奇豆
50KB
873 行
并行链主网合约编译器(pchain_compile)
pchain_compile
是一个命令行工具,用于将 Rust 代码重复构建为紧凑、高效的 WebAssembly 并行链主网智能合约。
先决条件
pchain_compile
将并行链智能合约代码从 Rust 编译为 WebAssembly 二进制文件。要了解更多关于开发并行链智能合约的信息,请访问 并行链主网合约 SDK。
默认情况下,编译器要求在本地计算机上安装 docker。具体来说,它从 DockerHub 拉取 Docker 镜像,并启动一个 docker 容器,该容器提供了一个用于构建 WebAssembly 二进制文件的完整环境。要安装 docker,请按照 Docker 文档 中的说明进行操作。
安装
从 Github 的 发布页面 下载预构建的可执行文件。
或者,如果您已经安装了 Rust,可以使用 cargo install 安装二进制 crate pchain_compile。
cargo install pchain_compile
构建智能合约
假设您的智能合约源代码位于您家目录下的 contract
文件夹中。
/home/
|- user/
|- contract/
|- src/
|- lib.rs
|- Cargo.toml
使用参数 source 和 destination 运行 pchain_compile
,以指定源代码文件夹和保存结果的文件夹。
pchain_compile build --source /home/user/contract --destination /home/user/result
完成后,控制台将显示消息
Build process started. This could take several minutes for large contracts.
Finished compiling. ParallelChain Mainnet smart contract(s) ["contract.wasm"] are saved at (/home/user/result).
您的WebAssembly智能合约现在以文件扩展名 .wasm
保存到目标文件夹。
如果您在Windows上运行,以下是示例输出
$ .\pchain_compile.exe build --source 'C:\Users\user\contract' --destination 'C:\Users\user\result'
Build process started. This could take several minutes for large contracts.
Finished compiling. ParallelChain Mainnet smart contract(s) ["contract.wasm"] are saved at (C:\Users\user\result).
要了解更多关于命令和参数的信息,请运行 pchain_compile build --help
。
使用 pchain_compile
Docker镜像
pchain_compile
从ParallelChain Lab的官方DockerHub 仓库拉取Docker镜像用于构建过程。该镜像提供已安装的组件环境
- rustc: Rust的编译器。
- wasm-snip: 用于移除在运行时未调用的函数的WASM实用工具。
- wasm-opt: 用于以文本格式加载WebAssembly并运行Binaryen IR传递以优化其大小的WASM实用工具。有关Binaryen IR的更多信息,请参阅此处。
docker镜像有不同的标签,它们根据组件的版本而有所不同。下表描述了标签及其差异。
镜像标签 | rustc | wasm-snip | wasm-opt |
---|---|---|---|
0.4.3 | 1.77.1 | 0.4.0 | 114 |
0.4.2 | 1.71.0 | 0.4.0 | 114 |
mainnet01 | 1.66.1 | 0.4.0 | 109 |
要在特定的docker环境中构建智能合约,请使用参数 use-docker-tag 运行。例如,
pchain_compile build --source /home/user/contract --destination /home/user/result --use-docker-tag 0.4.3
如果未使用 use-docker-tag,则docker镜像标签由 pchain_compile
的版本确定。例如,pchain_compile
v0.4.3将拉取带有标签 0.4.3
的docker镜像。
依赖关系
~69–105MB
~2M SLoC