From 8acb9f4f570a1728f22ffe0806d81784d0d3f1aa Mon Sep 17 00:00:00 2001 From: brozorec <9572072+brozorec@users.noreply.github.com> Date: Mon, 12 Oct 2026 17:13:00 +0200 Subject: [PATCH 1/2] Confidential: use the crates.io release of the UltraHonk verifier Depend on ultrahonk_soroban_verifier 0.1.0 from crates.io instead of the git pin. The release is alloc-free, so stellar-confidential follows the standard library layout (lib + cdylib, publish = true), the examples drop the soroban-sdk alloc feature, and the factory test fixtures are rebuilt to match. --- CLAUDE.md | 2 -- Cargo.lock | 3 ++- Cargo.toml | 7 +++---- .../confidential/allowlist-policy/Cargo.toml | 2 +- examples/confidential/auditor/Cargo.toml | 2 +- .../confidential/compliant-token/Cargo.toml | 2 +- examples/confidential/factory/Cargo.toml | 2 +- ...confidential_allowlist_policy_example.wasm | Bin 17080 -> 17080 bytes .../confidential_compliant_token_example.wasm | Bin 66276 -> 66276 bytes examples/confidential/verifier/Cargo.toml | 2 +- packages/confidential/CLAUDE.md | 4 ---- packages/confidential/Cargo.toml | 6 ++---- packages/confidential/README.md | 11 ----------- packages/confidential/src/lib.rs | 9 --------- packages/confidential/src/verifier/mod.rs | 3 +-- 15 files changed, 13 insertions(+), 42 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index e26b20a4f..8a8567632 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -160,8 +160,6 @@ Reversing the two is a common mistake. - All packages have `[package.metadata.stellar] cargo_inherit = true`. - Workspace fields use `field.workspace = true` shorthand; library crates set `crate-type = ["lib", "cdylib"]`, examples set `["cdylib"]` only. - `stellar-confidential` is the exception (`["lib"]`, unpublished, no - `alloc` feature); see `packages/confidential/README.md#packaging`. - Two-step transfer pattern (initiate + accept with `live_until_ledger`) for any owner/admin handover. Reuse `role_transfer` rather than rolling a new one. diff --git a/Cargo.lock b/Cargo.lock index 23248d36c..cbc62153a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2948,7 +2948,8 @@ checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" [[package]] name = "ultrahonk_soroban_verifier" version = "0.1.0" -source = "git+https://github.com/NethermindEth/rs-soroban-ultrahonk?rev=097da17df8b0b971d71885566034958a8caebab4#097da17df8b0b971d71885566034958a8caebab4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63ad166fd0d4fcecdddd094a92e496eb2d815bc1694d5f22a7aac63fc5de95d8" dependencies = [ "soroban-sdk 28.0.0", ] diff --git a/Cargo.toml b/Cargo.toml index a19371b5a..9d5ea9390 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,10 +68,9 @@ p256 = "0.13.2" serde = { version = "1", default-features = false } serde-json-core = { version = "0.6.0", default-features = false } -# UltraHonk proof-verification backend for the confidential token. Pinned to a -# specific commit because the upstream crate has no tagged release. The pinned -# commit carries the remediation of the OpenZeppelin audit performed at 661db07. -ultrahonk-soroban-verifier = { git = "https://github.com/NethermindEth/rs-soroban-ultrahonk", rev = "097da17df8b0b971d71885566034958a8caebab4", package = "ultrahonk_soroban_verifier", default-features = false } +# UltraHonk proof-verification backend for the confidential token. 0.1.0 carries +# the remediation of the OpenZeppelin audit performed at 661db07. +ultrahonk-soroban-verifier = { version = "0.1.0", package = "ultrahonk_soroban_verifier" } # members stellar-access = { path = "packages/access", version = "0.7.1" } diff --git a/examples/confidential/allowlist-policy/Cargo.toml b/examples/confidential/allowlist-policy/Cargo.toml index c8f4551ca..41180ad87 100644 --- a/examples/confidential/allowlist-policy/Cargo.toml +++ b/examples/confidential/allowlist-policy/Cargo.toml @@ -15,7 +15,7 @@ crate-type = ["cdylib"] doctest = false [dependencies] -soroban-sdk = { workspace = true, features = ["alloc"] } +soroban-sdk = { workspace = true } stellar-access = { workspace = true } stellar-confidential = { workspace = true } stellar-macros = { workspace = true } diff --git a/examples/confidential/auditor/Cargo.toml b/examples/confidential/auditor/Cargo.toml index 6d5eeabf8..ff8ec5ebb 100644 --- a/examples/confidential/auditor/Cargo.toml +++ b/examples/confidential/auditor/Cargo.toml @@ -15,7 +15,7 @@ crate-type = ["cdylib"] doctest = false [dependencies] -soroban-sdk = { workspace = true, features = ["alloc"] } +soroban-sdk = { workspace = true } stellar-access = { workspace = true } stellar-confidential = { workspace = true } stellar-macros = { workspace = true } diff --git a/examples/confidential/compliant-token/Cargo.toml b/examples/confidential/compliant-token/Cargo.toml index e955cbeee..ae5641a85 100644 --- a/examples/confidential/compliant-token/Cargo.toml +++ b/examples/confidential/compliant-token/Cargo.toml @@ -15,7 +15,7 @@ crate-type = ["cdylib"] doctest = false [dependencies] -soroban-sdk = { workspace = true, features = ["alloc"] } +soroban-sdk = { workspace = true } stellar-access = { workspace = true } stellar-confidential = { workspace = true } stellar-macros = { workspace = true } diff --git a/examples/confidential/factory/Cargo.toml b/examples/confidential/factory/Cargo.toml index 5efe2830d..d8cdb4c10 100644 --- a/examples/confidential/factory/Cargo.toml +++ b/examples/confidential/factory/Cargo.toml @@ -15,7 +15,7 @@ crate-type = ["cdylib"] doctest = false [dependencies] -soroban-sdk = { workspace = true, features = ["alloc"] } +soroban-sdk = { workspace = true } stellar-confidential = { workspace = true } [dev-dependencies] diff --git a/examples/confidential/factory/testdata/confidential_allowlist_policy_example.wasm b/examples/confidential/factory/testdata/confidential_allowlist_policy_example.wasm index 52fab1eb46816a003587dc985ffaf10205ad5333..b71c174e90b8653485d37b43afe3565cd6460c75 100644 GIT binary patch delta 177 zcmdnd%DAJIaf1~jGcOCrW?RPJ%#7ZXEm;*9eJ4k;Dv0O&4-1` z*(SS6s&R2KC@?56Ixz~!ZO)QZW!AIMGt@IsPBut0Nij%Cw6HWxN=h>_G)XqFNU}&a aH83_!Of^eMvM@-sOf*hP*}PZgw<-YNbt+Q; delta 177 zcmdnd%DAJIaf1~jGY2orW?RPJ%#1#hEm;*9y(dSpDv0X_Ha9glG%-uEv`9`i*}PZgw<-X>3Motg diff --git a/examples/confidential/factory/testdata/confidential_compliant_token_example.wasm b/examples/confidential/factory/testdata/confidential_compliant_token_example.wasm index fa617f87b46782c9910f2287ae4216019420a4f6..fb40b2987b5cd287c4cf6cf0ae92cddda7e94779 100644 GIT binary patch delta 61 zcmaFT%JQU@WrN=wJqtZUJp<)rgEW&AgOo%IOT(n3G$TWkWCM#Ni)2#+W7EV`vy>zY QgH+2z Date: Wed, 14 Oct 2026 15:17:44 +0200 Subject: [PATCH 2/2] Publish stellar-confidential on release tags Add stellar-confidential to the publish job after stellar-contract-utils, its only workspace dependency. --- .github/workflows/publish-crates.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates.yml b/.github/workflows/publish-crates.yml index 1bd33dd28..037b52c42 100644 --- a/.github/workflows/publish-crates.yml +++ b/.github/workflows/publish-crates.yml @@ -55,7 +55,7 @@ jobs: # Skipped: stellar-fee-abstraction (dev-deps on stellar-tokens, stellar-macros) # Skipped: stellar-tokens (depends on stellar-contract-utils, stellar-governance) - # Skipped: stellar-confidential (not published to crates.io yet) + # Skipped: stellar-confidential (depends on stellar-contract-utils) # Skipped: stellar-zk-email (not published to crates.io yet) publish: @@ -106,3 +106,7 @@ jobs: # stellar-fee-abstraction dev-depends on stellar-tokens, stellar-macros - name: Publish stellar-fee-abstraction run: cargo publish -p stellar-fee-abstraction --no-verify + + # stellar-confidential depends on stellar-contract-utils + - name: Publish stellar-confidential + run: cargo publish -p stellar-confidential --no-verify