#parity #blockchain #edsl #parity-wasm #wasm

无std app cargo-contract

通过ink!开发基于Wasm的智能合同的设置和部署工具!

61个版本 (23个稳定版)

4.1.1 2024年4月17日
4.0.2 2024年3月14日
4.0.0-rc.12023年12月1日
4.0.0-rc2023年11月30日
0.1.1 2019年4月24日

1404神奇豆子

Download history 210/week @ 2024-04-25 151/week @ 2024-05-02 197/week @ 2024-05-09 251/week @ 2024-05-16 101/week @ 2024-05-23 1118/week @ 2024-05-30 120/week @ 2024-06-06 116/week @ 2024-06-13 80/week @ 2024-06-20 54/week @ 2024-06-27 40/week @ 2024-07-04 89/week @ 2024-07-11 140/week @ 2024-07-18 144/week @ 2024-07-25 126/week @ 2024-08-01 181/week @ 2024-08-08

每月下载量:610

GPL-3.0 许可证

755KB
17K SLoC

cargo-contract

CI Status Latest Release stack-exchange

squink,ink!吉祥物cargo-contract 是一个命令行工具,可以帮助您在Parity的 ink! 中开发智能合同。
ink! 是一个Rust eDSL,它允许您为基于 Substrate 框架的区块链编写智能合同。


入门指南  •   ink! 文档门户


更多相关链接

  • 通过加入我们的 Stack Exchange 社区来寻找问题的答案
  • ink! — 包含智能合同示例的主要ink! 仓库
  • 合同UI — 合同部署和交互的前端
  • Substrate 合同节点 — 包含智能合同功能的简单Substrate区块链

安装

除了 Rust 之外,安装还需要支持 C++17 的 C++ 编译器。gcc 和 clang 的现代版本,以及 Visual Studio 2019+ 应该都可以使用。

  • 步骤 1: rustup component add rust-src

  • 步骤 2: cargo install --force --locked cargo-contract

  • 步骤 3: 安装 linting 的依赖。

    • (MacOS) brew install openssl
    • export TOOLCHAIN_VERSION=nightly-2023-12-28
      rustup install $TOOLCHAIN_VERSION
      rustup component add rust-src --toolchain $TOOLCHAIN_VERSION
      rustup run $TOOLCHAIN_VERSION cargo install cargo-dylint dylint-link
      
  • 步骤 4: (可选) 安装 Docker 引擎 以能够生成可验证的构建。

您可以通过运行步骤 2 来始终更新 cargo-contract 二进制文件到最新版本。

使用 Docker 镜像进行安装

如果您更喜欢使用 Docker,我们有一个可在 Docker Hub 上找到的 Docker 镜像 可供使用

# Pull the latest stable image.
docker pull paritytech/contracts-ci-linux

# Create a new contract in your current directory.
docker run --rm -it -v $(pwd):/sources paritytech/contracts-ci-linux \
  cargo contract new --target-dir /sources my_contract

# Build the contract. This will create the contract file under
# `my_contract/target/ink/my_contract.contract`.
docker run --rm -it -v $(pwd):/sources paritytech/contracts-ci-linux \
  cargo contract build --manifest-path=/sources/my_contract/Cargo.toml

Windows: 如果您使用 PowerShell,将 $(pwd) 更改为 ${pwd}

# Create a new contract in your current directory (in Windows PowerShell).
docker run --rm -it -v ${pwd}:/sources paritytech/contracts-ci-linux \
  cargo contract new --target-dir /sources my_contract

可验证的构建

一些区块链浏览器要求在确定性环境中编译 Wasm 二进制文件。为了实现这一点,您应该使用我们提供的 Docker 镜像来构建您的合约

cargo contract build --verifiable

有关如何使用此镜像的更详细文档,请访问 此处

使用方法

您始终可以使用 cargo contract help 来打印有关可用命令及其使用的相关信息。

对于每个命令,还有一个带有有关额外参数信息的 --help 标志,例如 cargo contract new --help

cargocontract new my_contract

在名为 my_contract 的新文件夹中创建一个初始智能合约和一些脚手架代码。

该合约包含 Flipper 合约的源代码,这是可以构建的最简单的“智能”合约——一个 bool,通过 flip() 函数从 true 翻转到 false

cargocontract build

将合约编译成优化的 WebAssembly 字节码,为其生成元数据,并将其打包在一起存入 <name>.contract 文件,您可以使用该文件在链上部署合约。

cargocontract check

检查代码是否可以编译成 WebAssembly。此命令不会将任何 <name>.contract 工件输出到 target/ 目录。

cargocontract upload

将合约上传到启用了 pallet-contracts 的链。请参阅 外设

cargocontract instantiate

在链上创建合约的实例。请参阅 外设

cargocontract call

在链上对现有合约调用消息。参见外接程序

cargo合约编码

对合约的输入调用及其参数进行编码

cargo合约解码

解码合约的输入或输出数据。

这可以是事件、对合约消息的调用或对合约构造函数的调用。

参数必须以十六进制编码的形式给出,以0x开头。

cargo合约移除

从启用pallet-contracts的链中移除合约。参见外接程序

cargo合约信息

获取并显示链上合约的信息。参见信息

cargo合约验证

验证给定的合约二进制文件是否与指定工作区的构建结果匹配

cargo合约模式生成

生成模式并将其打印到标准输出。

cargo合约验证模式

验证元数据文件或包含元数据的合约包与模式文件。

cargo合约存储

获取并显示链上合约的存储。

cargo合约RPC

对节点调用RPC调用。参见RPC

发布

为了发布cargo-contract的新版本

  • 提升所有crate版本,我们以相同的步骤移动它们。
  • 执行cargo update以更新Cargo.lock
  • 确保你的PR已获得一个或多个核心开发者的批准。
  • 发布metadataanalyzetranscodebuildextrinsicscargo-contract
  • 合并你的PR并推送带有版本号的标签vX.Xgit tag -s vX.X.X && git push origin vX.X.X
  • 创建带有更改日志条目的GitHub发布。

许可证

本存储库中的所有代码均根据GPLv3授权。

如果您对我们产品的授权有任何疑问,请联系我们

依赖关系

~47–64MB
~1M SLoC