#docker #smart-contracts #command-line-tool #parallel-chain #compile #building #compiling

bin+lib pchain_compile

并行链智能合约编译 CLI - 用于编译并行链智能合约的命令行工具

3 个版本

0.4.3 2024年4月11日
0.4.2 2023年8月31日
0.4.1 2023年7月12日

#2881 in 神奇豆

Apache-2.0

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

使用参数 sourcedestination 运行 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