Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e0963f2
Add --verifiable flag to stellar contract build.
fnando May 21, 2026
b04676d
Record every build-affecting flag as bldopt.
fnando May 21, 2026
1a118d1
Remove duplicate 'contract build' in container error hint.
fnando May 21, 2026
196405d
Probe container cli version for --optimize syntax.
fnando May 21, 2026
c81c6d5
Add SEP-58 source-id flags to --verifiable.
fnando May 21, 2026
e000d84
Move --locked info banner after validation.
fnando May 21, 2026
5f59fb8
Group --docker-host under Verifiable on contract build.
fnando May 22, 2026
17c2fc8
Plumb verbose flag through run_in_container.
fnando May 22, 2026
9c3b31f
Capitalize info and warn messages on verifiable build.
fnando May 22, 2026
c20a1d5
Rewrite docker pull status lines for clarity.
fnando May 22, 2026
4d7fcd6
Anchor verifiable build bind-mount to git root or cwd.
fnando May 22, 2026
d5a7209
Pull bldimg when --image is set.
fnando May 22, 2026
38d09ee
Avoid duplicate Image prefix in pull status.
fnando May 22, 2026
ae73bcc
Factor enforce_hardened_tree out of fix_config_permissions.
fnando May 22, 2026
7014661
Generate source archive for verifiable builds.
fnando Jun 17, 2026
5653489
Record each contract's package in verifiable builds.
fnando Jun 17, 2026
4518c1a
Document reproducible source archive guarantees.
fnando Jun 17, 2026
36552c9
Add stellar contract archive command.
fnando Jun 17, 2026
9892d6e
Add --env to set build environment variables.
fnando Jun 17, 2026
3af186c
Pin the rust toolchain in verifiable builds.
fnando Jun 18, 2026
bf7cf3a
Build source archives from the working directory.
fnando Jun 19, 2026
1833606
Skip --locked on build images that lack it.
fnando Jul 8, 2026
ef4993c
Run verifiable builds through the docker CLI.
fnando Jul 16, 2026
b556382
Support other container engines in verifiable builds.
fnando Jul 17, 2026
6018142
Stop the build container when the build is interrupted.
fnando Jul 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 20 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 35 additions & 0 deletions FULL_HELP_DOCS.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ Tools for smart contract developers
- `asset` — Utilities to deploy a Stellar Asset Contract or get its id
- `alias` — Utilities to manage contract aliases
- `bindings` — Generate code client bindings for a contract
- `archive` — Generate the reproducible source archive used by verifiable builds
- `build` — Build a contract from source
- `extend` — Extend the time to live ledger of a contract-data ledger entry
- `deploy` — Deploy a wasm contract
Expand Down Expand Up @@ -344,6 +345,17 @@ Generate PHP bindings

**Usage:** `stellar contract bindings php`

## `stellar contract archive`

Generate the reproducible source archive used by verifiable builds

**Usage:** `stellar contract archive [OPTIONS]`

###### **Options:**

- `-o`, `--out-file <OUT_FILE>` — Where to write the gzipped tarball. Required unless `--dry-run` is used
- `--dry-run` — List the entries that would be archived and the computed source_sha256, without writing any file

## `stellar contract build`

Build a contract from source
Expand All @@ -356,6 +368,18 @@ To view the commands that will be executed, without executing them, use the --pr

**Usage:** `stellar contract build [OPTIONS]`

###### **Container Options:**

- `-d`, `--docker-host <DOCKER_HOST>` — Optional argument to override the default docker host. This is useful when you are using a non-standard docker host path for your Docker-compatible container runtime, e.g. Docker Desktop defaults to $HOME/.docker/run/docker.sock instead of /var/run/docker.sock
- `--engine <ENGINE>` — Container engine to use [default: docker]

Possible values:
- `docker`: Docker, or any Docker-compatible CLI
- `apple-container`: Apple's `container` CLI (macOS 26+, Apple silicon)

- `--cpus <CPUS>` — Limit the number of CPUs available to the container, e.g. `2`. A whole number: Apple's `container` engine does not accept fractional CPUs
- `--memory <MEMORY>` — Limit the memory available to the container, e.g. `2g` or `512m`

###### **Features:**

- `--features <FEATURES>` — Build with the list of features activated, space or comma separated
Expand Down Expand Up @@ -384,6 +408,7 @@ To view the commands that will be executed, without executing them, use the --pr
If ommitted, wasm files are written only to the cargo target directory.

- `--locked` — Assert that `Cargo.lock` will remain unchanged
- `--env <ENV>` — Set an environment variable for the build (repeatable), e.g. `--env NAME=VALUE`. It's set on the build process; for a verifiable build it's passed to the container and recorded as a `bldopt`, so avoid secrets there
- `--optimize <OPTIMIZE>` — Optimize the generated wasm. Enabled by default; pass `--optimize=false` to disable. Requires the `additional-libs` feature

Default value: `true`
Expand All @@ -394,6 +419,13 @@ To view the commands that will be executed, without executing them, use the --pr

- `--print-commands-only` — Print commands to build without executing them

###### **Verifiable Options:**

- `--verifiable` — Build inside a trusted Docker container and record SEP-58 metadata (`bldimg`, `source_uri`, `source_sha256`, `bldopt`) so the resulting WASM can be reproduced and verified by third parties. Implies `--locked`. Requires a clean git working tree
- `--image <IMAGE>` — Override the auto-selected container image used by `--verifiable`. Must be digest-pinned, e.g. `docker.io/stellar/stellar-cli@sha256:...`. Tag-only refs are rejected because SEP-58 requires content addressing
- `--source-sha256 <SOURCE_SHA256>` — SEP-58 source identification: SHA-256 of the source archive (recorded as the `source_sha256` meta entry). Optional with `--verifiable`: the archive is always generated and its SHA-256 computed for you. When supplied it's treated as a pin — the build fails if it doesn't match the generated archive
- `--source-uri <SOURCE_URI>` — SEP-58 source identification: URI where the source can be obtained, e.g. `https://example.com/src.tar.gz` (recorded as the `source_uri` meta entry). Optional; when set it must accompany `--source-sha256`

## `stellar contract extend`

Extend the time to live ledger of a contract-data ledger entry.
Expand Down Expand Up @@ -481,6 +513,7 @@ Deploy a wasm contract
Default value: `false`

- `--alias <ALIAS>` — The alias that will be used to save the contract's id. Whenever used, `--alias` will always overwrite the existing contract id configuration without asking for confirmation
- `--env <ENV>` — Set an environment variable for the build (repeatable), e.g. `--env NAME=VALUE`. It's set on the build process; for a verifiable build it's passed to the container and recorded as a `bldopt`, so avoid secrets there
- `--optimize <OPTIMIZE>` — Optimize the generated wasm. Enabled by default; pass `--optimize=false` to disable. Requires the `additional-libs` feature

Default value: `true`
Expand Down Expand Up @@ -855,6 +888,7 @@ Install a WASM file to the ledger without creating a contract instance

Default value: `false`

- `--env <ENV>` — Set an environment variable for the build (repeatable), e.g. `--env NAME=VALUE`. It's set on the build process; for a verifiable build it's passed to the container and recorded as a `bldopt`, so avoid secrets there
- `--optimize <OPTIMIZE>` — Optimize the generated wasm. Enabled by default; pass `--optimize=false` to disable. Requires the `additional-libs` feature

Default value: `true`
Expand Down Expand Up @@ -918,6 +952,7 @@ Install a WASM file to the ledger without creating a contract instance

Default value: `false`

- `--env <ENV>` — Set an environment variable for the build (repeatable), e.g. `--env NAME=VALUE`. It's set on the build process; for a verifiable build it's passed to the container and recorded as a `bldopt`, so avoid secrets there
- `--optimize <OPTIMIZE>` — Optimize the generated wasm. Enabled by default; pass `--optimize=false` to disable. Requires the `additional-libs` feature

Default value: `true`
Expand Down
Loading
Loading