16 stable releases (3 major)
5.42.0 | Nov 1, 2024 |
---|---|
4.224.0 | Sep 13, 2024 |
4.166.0 | Jul 5, 2024 |
4.96.0 | Mar 4, 2024 |
0.2.16 | Sep 2, 2022 |
#14 in #on-chain
243 downloads per month
610KB
3.5K
SLoC
Cargo partisia-contract
Compiles Smart Contracts for the Partisia Blockchain for deployment on-chain.
Installation
To install run the command
cargo install cargo-partisia-contract
Usage
Compiles Smart Contracts for the Partisia Blockchain for deployment on-chain.
Usage: cargo partisia-contract <COMMAND>
Commands:
build Compile contracts to WASM and generate ABI files.
init Initialize the contract. Retrieves dependencies for build.
new Create a new smart contract project.
print-version Print the client and binder version of the contract.
path-of-wasm Print the expected WASM file path based on the context of Cargo.toml
path-of-abi Print the expected ABI file path based on the context of Cargo.toml
set-sdk Update the sdk used for compiling the contracts.
abi Inspect or generate code from an ABI-file.
cli Interact with the Partisia blockchain through the partisia-cli.
help Print this message or the help of the given subcommand(s)
Options:
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
build
Compile a smart contract for deployment on Partisia Blockchain.
Usage: cargo partisia-contract build [OPTIONS] [ADDITIONAL_ARGS]...
Arguments:
[ADDITIONAL_ARGS]... Additional arguments that will be passed along to cargo build,
see cargo build --help for details.
Options:
-r, --release Build artifacts in release mode, with optimizations
-n, --no-abi Skip generating .abi file
-q, --quiet No messages printed to stdout
-w, --no-wasm-strip Do not remove custom sections from the WASM-file (will produce a much larger file).
-z, --no-zk Only compile the public part of the contract. Skips compilation of ZK computation.
--zkcompiler <ZK_COMPILER_PATH> Specify path to a zk-compiler JAR to use for compiling the ZK code
--disable-git-fetch-with-cli Uses cargo's built-in git library to fetch dependencies instead of the git executable
--workspace Build all packages in the workspace
--manifest-path <MANIFEST_PATH> Specify path to the Cargo.toml of the contract or workspace
--sdk <SDK> Override the sdk used for compiling the contracts. Git url and tag/branch/rev can be supplied at the same time or separately.
Example usage:
--sdk "git: https://git@gitlab.com/partisiablockchain/language/contract-sdk.git, tag: 9.1.2"
--sdk "branch: example_branch"
--sdk "rev: 55061d796e5547e3cdf637407d928f95e2e32c59"
--coverage Compile an instrumented binary for the smart contract. This enables generation of coverage files.
-h, --help Print help
new
Create a new smart contract project.
Usage: cargo partisia-contract new [OPTIONS] <path> [ADDITIONAL_ARGS]...
Arguments:
<path> The contract folder that will be created
[ADDITIONAL_ARGS]... Additional arguments that will be passed along to cargo new,
see cargo new --help for details.
Options:
-n, --name <NAME> Set the name of the contract project created
-z Create a zero knowledge contract
-h, --help Print help
init
Initialize the contract. Retrieves dependencies for build.
Usage: cargo partisia-contract init [OPTIONS]
Options:
--workspace Init all zk contracts in the workspace
--manifest-path <MANIFEST_PATH> Specify path to the Cargo.toml of the contract or workspace
-h, --help Print help
path-of-abi
Print the expected ABI file path based on the context of Cargo.toml
Usage: cargo partisia-contract path-of-abi [OPTIONS]
Options:
-r, --release File is in release folder instead of debug
--manifest-path <MANIFEST_PATH> Specify path to the Cargo.toml of the contract or workspace
-h, --help Print help
path-of-wasm
Print the expected WASM file path based on the context of Cargo.toml
Usage: cargo partisia-contract path-of-wasm [OPTIONS]
Options:
-r, --release File is in release folder instead of debug
--manifest-path <MANIFEST_PATH> Specify path to the Cargo.toml of the contract or workspace
-h, --help Print help
print-version
Print the client and binder version of the contract.
Usage: cargo partisia-contract print-version [OPTIONS] <WASM contract>
Arguments:
<WASM contract> The wasm file to load
Options:
-b, --bashlike Print the version as bash variables
-h, --help Print help
set-sdk
Update the sdk used for compiling the contracts.
Usage: cargo partisia-contract set-sdk [OPTIONS] <sdk>
Arguments:
<sdk> The new sdk value. Git url and tag/branch/rev can be supplied at the same time or separately.
Example usage:
set-sdk "git: https://git@gitlab.com/partisiablockchain/language/contract-sdk.git, tag: 9.1.2"
set-sdk "branch: example_branch"
set-sdk "rev: 55061d796e5547e3cdf637407d928f95e2e32c59"
Options:
--workspace Set the sdk for all packages in the workspace
--manifest-path <MANIFEST_PATH> Specify path to the Cargo.toml of the contract or workspace
-h, --help Print help
abi
Inspect or generate code from an ABI-file. The specification of the ABI client commands can be found here.
Inspect or generate code from an ABI-file.
Usage: cargo partisia-contract abi [OPTIONS] [ADDITIONAL_ARGS]...
Arguments:
[ADDITIONAL_ARGS]... Additional arguments that will be passed along to abi-cli.jar
Options:
-q, --quiet No messages printed to stdout
-u, --use <URL> Url specifying the location to retrieve the abi-cli JAR from. If not given, a user configuration file in
~/.abigen/config.toml or default values will be used.
Uses netrc for authentication.
Example usage:
--use https://gitlab.com/api/v4/groups/12499775/-/packages/maven/com/partisiablockchain/language/abi-cli/4.75.0/abi-cli-4.75.0-jar-with-dependencies.jar
-h, --help Print help
cli
Interact with the Partisia blockchain through the partisia-cli. The specification of the Partisia-CLI commands can be found here.
Interact with the Partisia blockchain through the partisia-cli.
Usage: cargo partisia-contract cli [OPTIONS] [ADDITIONAL_ARGS]...
Arguments:
[ADDITIONAL_ARGS]... Additional arguments that will be passed along to partisia-cli.jar
Options:
-q, --quiet No messages printed to stdout
-u, --use <URL> Url specifying the location to retrieve the partisia-cli JAR from. If not given, a user configuration file in
~/.pbc/config.toml or default values will be used.
Uses netrc for authentication.
Example usage:
--use https://gitlab.com/api/v4/groups/12499775/-/packages/maven/com/partisiablockchain/language/partisia-cli/4.1.0/partisia-cli-4.1.0-jar-with-dependencies.jar
-h, --help Print help
How to use
Go into the rust project containing your Cargo.toml and the contract.
An example for a contract written in rust can be found here.
When you are standing in the directory, run the following command to compile the contract and generate the ABI.
cargo partisia-contract build
This will build and write the contract and ABI files in the target/wasm32-unknown-unknown/debug
.
If you run it with the flag --release
, then the files will be in target/wasm32-unknown-unknown/release
.
Dependencies
~26–41MB
~629K SLoC