Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add build support for all versions on mainnet - #22

Open
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions
Open

Add build support for all versions on mainnet#22
ethanfrey wants to merge 2 commits into
stellar:mainfrom
vrfier:all-versions

Conversation

@ethanfrey

Copy link
Copy Markdown
Contributor

I ran an analysis on all wasm hashes on Soroban mainnet, and extracted the cliver and rsver from their data (see tags.csv and tag_info.txt). Many are from pre-v23.2.0 versions and don't have clear cliver marking.

Of the newer ones, I was able to find all (cliver, rsver) pairs and updated builds.json so it can produce build images needed to verify existing contracts on mainnet (part of the RFP for contract verification).

This exposed one issue in the underlying design. People are compiling contracts with rustc versions that are too old to compile the stellar-cli command itself. This actually suggests downloading release builds from github rather than building it in the docker file.

Examples:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.86.0-slim-bookworm --rust-image-digest sha256:57d
415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944

Gives:

building stellar-cli:23.2.1-rust1.86.0-slim-bookworm
stellar-cli 23.2.1 (496ac35be7a7d8d923fcde9bbbc650ee593d1f6f)
rust 1.86.0-slim-bookworm (sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944)
base rust:1.86.0-slim-bookworm
platform <host native>
[+] Building 4.1s (9/14) docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.83kB 0.0s
=> resolve image config for docker-image://docker.io/docker/dockerfile:1.10 0.6s
=> CACHED docker-image://docker.io/docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 0.0s
=> [internal] load metadata for docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 120B 0.0s
=> CACHED [builder 1/4] FROM docker.io/library/rust@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944 0.0s
=> CACHED [builder 2/4] RUN apt-get update && apt-get install -y --no-install-recommends build-essential ca-certificates git 0.0s
=> CANCELED [stage-1 2/6] RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libdbus-1-3 libssl3 3.3s
=> ERROR [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcd 3.3s
------ > [builder 3/4] RUN cargo install --locked --root /out --git https://github.com/stellar/stellar-cli.git --rev "496ac35be7a7d8d923fcde9bbbc650ee593d1f6f" stellar-cli: 0.147 Updating git repository `https://github.com/stellar/stellar-cli.git` 3.288 error: cannot install package `stellar-cli 23.2.1`, it requires rustc 1.89.0 or newer, while the currently active rustc version is 1.86.0 ------ 

While this works successfully:

./scripts/build_image.py --stellar-cli-version 23.2.1 --rust-version 1.91.1-slim-trixie --rust-image-digest sha256:f75071363e7f4771769d4cf81b1b7b290e607f4d4459e8731f6abdcee9982dc8
docker run --rm stellar-cli:23.2.1-rust1.91.1-slim-trixie contract build --help

CopilotAI review requested due to automatic review settings June 9, 2026 08:09

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds version/tag statistics and expands the build matrix for stellar-cli to cover more historical releases and Rust toolchains.

Changes:

  • Added tags.csv and tag_info.txt to capture aggregated rsver/cliver tag counts and derived notes.
  • Expanded builds.json with additional stellar-cli versions and a broader set of pinned Rust image variants per version.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

FileDescription
tags.csvIntroduces aggregated counts by rsver and cliver for downstream analysis and build targeting.
tag_info.txtAdds a human-readable summary of tag stats and a candidate list of stellar-cli versions needing images.
builds.jsonExpands the supported stellar-cli versions and pins more Rust image digests for reproducible builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadtags.csv
Comment on lines +89 to +90
1.97.0-nightly,"",1
1.96.0,"",9
Comment threadtags.csv
1.75.0,"",45
1.74.1,"",52
1.74.0,"",15
"","",11
Comment threadtag_info.txt
@@ -0,0 +1,55 @@
Tag stats (source: versions.sqlite, 3613 wasm files)
Comment threadbuilds.json
@@ -3,25 +3,142 @@
"$schema": "./builds.schema.json",
"default_distro": "trixie",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The older rust versions only have a bookworm variant and not a trixie variant.

Also, the defualt_distro should be trixie-slim I believe according to this comment

Comment threadbuilds.json
Comment on lines +19 to +23
"rust_versions": [
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",
"1.89.0-slim-trixie@sha256:8cffb8fe4e8a95cf0d6a2060375e5a28aff4c752155aa9f1f9193530769bdf66",

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:cb4d64f45c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadbuilds.json
Comment on lines +20 to +22
"1.85.0-slim-bookworm@sha256:1829c432be4a592f3021501334d3fcca24f238432b13306a4e62669dec538e52",
"1.86.0-slim-bookworm@sha256:57d415bbd61ce11e2d5f73de068103c7bd9f3188dc132c97cef4a8f62989e944",
"1.87.0-slim-bookworm@sha256:437507c3e719e4f968033b88d851ffa9f5aceeb2dcc2482cc6cb7647811a55eb",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid declaring Rust bases older than the CLI MSRV

When publishing v23.2.1, publish.yml resolves every pin in this list and the Dockerfile uses that same rust@... base to run cargo install --locked for the CLI. stellar-cli 23.2.1 requires rustc 1.89.0 or newer, so these 1.85/1.86/1.87 rows fail during the release matrix instead of producing verification images; please don't add sub-MSRV runtime pins until the image can install a prebuilt CLI or otherwise decouple the CLI build toolchain from the contract Rust toolchain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right to flag this issue, but we actually need to add these rustc versions as they are using in production contracts.

I think the proper solution is to use a different rustc to builds stellar-cli than the one used to compile the contracts. See #23

Comment threadbuilds.json
{
"ref": "08473ac20016c369067ce0dbca91d9595e72d6d4",
"rust_versions": [
"1.81.0-slim-bookworm@sha256:f9fb6bdb0483de4ade93b262a3f6cf8c2985fca1d34784914bbcabd5a34d3197",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not add Rust 1.81 without handling wasm32v1-none

This row is selected by resolve_matrix.py for a v23.3.0 publish, but the Dockerfile always runs rustup target add wasm32v1-none in the runtime stage. That target is only available on Rust 1.84.0 and newer, so the 1.81.0 image build will fail before it can be published; either exclude this pin or change the image logic for pre-1.84 contract toolchains.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very interesting point here. How did people compile contracts pre-1.84.0?

I think this docker build problem is actually much more complicated than believed when it actually aims to support verifying existing deployed contracts. Maybe there are a few different build paths and different docker files for the different historical artifacts. What target did v23.3.0 use to compile?

@fnando

Copy link
Copy Markdown
Member

@ethanfrey because anything already uploaded to the chain will lack the metadata required by SEP-58, I don't think we should be adding all older rust+cli combinations to the matrix. Instead, we should focus on the newest releases, at least for now.

We have an exception which is 25.1.0, because we're working with a partner (who actually triggered this work) that already audited their contracts with this given CLI+rust version, so we're kinda beta-testing them.

cc @leighmcculloch

@leighmcculloch

Copy link
Copy Markdown
Member

I think there's a compromise in here. I think folks who want to have their contract verified can open an issue requesting that specific configurations get added. I don't think we need to proactively build a large number of images, many of them will not get used.

@ethanfrey

Copy link
Copy Markdown
ContributorAuthor

Okay, I was confused. I understood this repo as trying to build clear cli-rust docker pairs to retroactively validate existing contracts. Moving forward they would all use existing docker images to build and thus be easy to verify

I’ve been researching a lot the back verification for the RFP and I guess ended up a bit single minded focus.

If that is not the purpose of this repo, I will just do it on a fork and build my images so I can start testing existing projects. And only PR specific cases here once I have a successful run verifying a contract

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ethanfrey@fnando@leighmcculloch