#cargo #compile #contracts #smart-contracts #abi #deployment #partisia

app cargo-partisia-contract

Compiles Smart Contracts for the Partisia Blockchain for deployment on-chain

11 stable releases

new 4.104.0 Apr 12, 2024
4.96.0 Mar 4, 2024
4.70.0 Jan 8, 2024
4.51.0 Dec 6, 2023
0.2.16 Sep 2, 2022

#590 in Magic Beans

Download history 27/week @ 2024-01-07 1/week @ 2024-01-14 21/week @ 2024-01-28 36/week @ 2024-02-04 38/week @ 2024-02-11 28/week @ 2024-02-18 20/week @ 2024-02-25 170/week @ 2024-03-03 45/week @ 2024-03-10 27/week @ 2024-03-17 22/week @ 2024-03-31

103 downloads per month

MIT license

600KB
3K 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

~14–29MB
~448K SLoC