61个版本 (23个稳定版)
4.1.1 | 2024年4月17日 |
---|---|
4.0.2 | 2024年3月14日 |
4.0.0-rc.1 | 2023年12月1日 |
4.0.0-rc | 2023年11月30日 |
0.1.1 | 2019年4月24日 |
1404 在 神奇豆子
每月下载量:610
755KB
17K SLoC
cargo-contract
是一个命令行工具,可以帮助您在Parity的 ink! 中开发智能合同。
ink! 是一个Rust eDSL,它允许您为基于 Substrate 框架的区块链编写智能合同。
更多相关链接
- 通过加入我们的 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
- (MacOS)
-
步骤 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已获得一个或多个核心开发者的批准。
- 发布
metadata
➜analyze
➜transcode
➜build
➜extrinsics
➜cargo-contract
。 - 合并你的PR并推送带有版本号的标签
vX.X
:git tag -s vX.X.X && git push origin vX.X.X
。 - 创建带有更改日志条目的GitHub发布。
许可证
本存储库中的所有代码均根据GPLv3授权。
如果您对我们产品的授权有任何疑问,请联系我们。
依赖关系
~47–64MB
~1M SLoC