Skip to content

feat(contracts): sync NiriumVault source and add a verified build workflow - #64

Merged
M0nsxx merged 1 commit into
mainfrom
feat/verified-nirium-vault-build
Nov 9, 2026
Merged

M0nsxx merged 1 commit into
mainfrom
feat/verified-nirium-vault-build

Conversation

@Eras256

@Eras256 Eras256 commented Nov 8, 2026

Copy link
Copy Markdown
Collaborator

Two things, so the NiriumVault contract can be verified on stellar.expert.

1. Contract source in sync. nirium_vault.rs, vault_tests.rs and protocol/src/lib.rs were behind the source the team works on. They are now byte-identical to it (same git blob hashes). soroban-sdk stays at 29.0.1: built and tested on 8 Nov 2026 with stellar CLI 27.1.0, 31 tests pass and the WASM builds. With 22.0.0 the test build no longer compiles against current dependencies.

2. Verified build workflow (.github/workflows/release-nirium-vault.yml, SEP-0055). On a nirium-vault-v* tag it calls stellar-expert/soroban-build-workflow, pinned to the commit of v25.1.0 (e43b241f, reviewed on 8 Nov 2026). That workflow:

  • builds nirium-contracts from the tagged commit;
  • stamps source_repo=github:nirium-protocol/nirium-core and home_domain=nirium.xyz;
  • publishes a release with the WASM and attests that same file;
  • registers the hash with stellar.expert.

The tag prefix is not v* on purpose: release.yml (desktop app) runs on every v* tag, and vault-v1 would match it too.

The pin covers release.yml only. The actions it calls (actions/checkout@v4, stellar/stellar-cli@v25.1.0, actions/attest-build-provenance@v1) resolve their own tags at run time.

Why a new deployment. The live testnet contract (CARTJI…5SICV, WASM 24596149…) was not built this way, so it can't be verified after the fact. It also has no upgrade function. After this merges, tagging nirium-vault-v0.1.0 produces the release WASM, and that exact file gets deployed as a new testnet contract. The current one holds 0 vaults, so nothing moves.

🤖 Generated with Claude Code

…kflow

Brings nirium-soroban-contracts in line with the source the team works on:
nirium_vault.rs, its tests and protocol/src/lib.rs were behind (the three
files are now byte-identical to the private repo). soroban-sdk stays at
29.0.1: built and tested on 8 Nov 2026 with stellar CLI 27.1.0, 31 tests
pass and the WASM builds; with 22.0.0 the test build no longer compiles
against current dependencies.

Adds .github/workflows/release-nirium-vault.yml (SEP-0055): on a
nirium-vault-v* tag, stellar-expert/soroban-build-workflow, pinned to the
reviewed commit of v25.1.0, builds nirium-contracts from the tagged commit,
stamps source_repo and home_domain=nirium.xyz, publishes a release with the
WASM, attests it and registers it with stellar.expert. The tag prefix avoids
release.yml, which runs on every v* tag.

The live testnet contract (CARTJI...5SICV, WASM 24596149...) was not built
this way, so it cannot be verified after the fact. The plan is to deploy the
release WASM as a new testnet contract; the current one holds 0 vaults.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@M0nsxx M0nsxx left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed. The three contract files are byte-identical to the private source (same blob hashes), soroban-sdk stays at 29.0.1, and the new workflow only runs on nirium-vault-v* tags, so the desktop release isn't triggered. The build workflow is pinned to a reviewed commit of stellar-expert/soroban-build-workflow v25.1.0. LGTM once the contracts job passes.

@M0nsxx M0nsxx left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed #64. The three contract files are byte-identical to the source in the private repo (same blob hashes: nirium_vault.rs 00df2181, vault_tests.rs b3530792, protocol/lib.rs ec1a538e). The build workflow is pinned to stellar-expert/soroban-build-workflow e43b241f, which is the real v25.1.0 tag, and uses the nirium-vault-v* tag prefix so it doesn't collide with release.yml. Approving.

@M0nsxx
M0nsxx merged commit 67229c0 into main Nov 9, 2026
4 of 6 checks passed
Sign up for free to 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.

2 participants