Skip to content

Update stellar-strkey to 0.0.18#1694

Open
leighmcculloch wants to merge 7 commits into
mainfrom
update-stellar-strkey-0-0-17
Open

Update stellar-strkey to 0.0.18#1694
leighmcculloch wants to merge 7 commits into
mainfrom
update-stellar-strkey-0-0-17

Conversation

@leighmcculloch

@leighmcculloch leighmcculloch commented Jun 17, 2026

Copy link
Copy Markdown
Member

What

Bumps the direct stellar-strkey dependency in soroban-env-host from 0.0.13 to 0.0.18, and adapts the two strkey-encoding call sites in host/conversion.rs to the new API. In 0.0.17+ the crate is no_std by default and Strkey::to_string() now returns a fixed-capacity heapless::String rather than std::string::String, so those sites now convert via .as_str().to_string(). The lockfile re-resolves to contain both 0.0.18 (for soroban-env-host) and 0.0.13 (transitively via the published stellar-xdr 27.0.0, which still pins 0.0.13); the 0.0.13 entry is expected and left in place, and deny.toml skips the duplicate.

Why

This moves soroban-env-host onto the stellar-strkey release line targeted for protocol 28.

This supersedes the earlier 0.0.17 bump: 0.0.17 contained a CLI bug (Decoded<Strkey> rejected owned JSON keys, breaking strkey encode), fixed in 0.0.18 by stellar/rs-stellar-strkey#125.

Known limitations

N/A


Protocol 28 coordination

⚠️ This change targets versions of software that will ship for Protocol 28, and should not be merged unless this repository is ready to accept Protocol 28 changes.

This is one of a coordinated set of PRs bumping stellar-strkey to 0.0.18 across the Protocol 28 component stack. It is preferred that all Protocol 28 releases of these components depend on the same version of stellar-strkey:

stellar-strkey 0.0.18 raises the minimum supported Rust version to 1.87 and updates/adds transitive dependencies (heapless 0.9, zeroize), so MSRV and supply-chain policy (cargo-deny / cackle) updates may be required in some repositories before CI is green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XiSfu2MM5xbdGjxj7oXys8
leighmcculloch and others added 5 commits June 17, 2026 05:22
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XiSfu2MM5xbdGjxj7oXys8
0.0.18 includes the strkey CLI fix (accept owned variant keys for
Decoded<Strkey>). It is not yet on crates.io, so temporarily patch
stellar-strkey to the release/v0.0.18 branch to validate ahead of the
release. Remove the patch once 0.0.18 is published.
@leighmcculloch leighmcculloch changed the title Update stellar-strkey to 0.0.17 Update stellar-strkey to 0.0.18 Jun 17, 2026

@leighmcculloch leighmcculloch left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Few comments inline for why changes are required.

Comment thread soroban-env-host/src/crypto/poseidon/poseidon2.rs
}
};
Ok(strkey.to_string())
Ok(strkey.to_string().as_str().to_string())

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

The string returned from strkey's is now a heapless string, so this seemingly odd dance is converting that heapless string into an alloc String.

Comment thread cackle.toml
0.0.18 is now published to crates.io, so drop the temporary
[patch.crates-io] that pointed stellar-strkey at the release/v0.0.18 git
branch (and the matching stellar-cli deny.toml allow-git entry). The
dependency now resolves from crates.io.
@leighmcculloch leighmcculloch marked this pull request as ready for review June 18, 2026 03:38
@leighmcculloch leighmcculloch requested a review from graydon as a code owner June 18, 2026 03:38
Copilot AI review requested due to automatic review settings June 18, 2026 03:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the workspace to use stellar-strkey v0.0.18 (needed for Protocol 28) and raises the workspace MSRV to Rust 1.87, adapting soroban-env-host call sites to the updated stellar-strkey string-returning API.

Changes:

  • Bump stellar-strkey in soroban-env-host from 0.0.13 to 0.0.18 and adjust strkey encoding conversions in host/conversion.rs.
  • Raise rust-version to 1.87.0 in the workspace and affected crates.
  • Update supply-chain policy configuration (deny.toml, cackle.toml) and Cargo.lock to account for new/duplicate dependencies.

Reviewed changes

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

Show a summary per file
File Description
Cargo.toml Raises workspace MSRV to Rust 1.87.0.
soroban-env-host/Cargo.toml Bumps direct stellar-strkey dependency to 0.0.18 and sets crate MSRV to 1.87.0.
soroban-fuzz-targets/Cargo.toml Raises crate MSRV to 1.87.0.
soroban-env-host/src/host/conversion.rs Updates strkey encoding call sites to convert heapless::String to std::string::String.
soroban-env-host/src/crypto/poseidon/poseidon2.rs Replaces a divisibility check implementation (currently introduces a compile issue).
soroban-env-host/src/crypto/poseidon/poseidon2_params.rs Replaces an evenness check implementation (currently introduces a compile issue).
soroban-env-host/src/crypto/poseidon/poseidon_params.rs Replaces an evenness check implementation (currently introduces a compile issue).
deny.toml Skips the expected transitional duplicate stellar-strkey 0.0.13 in cargo-deny duplicates.
cackle.toml Updates cackle allowlists for newly introduced transitive crates.
Cargo.lock Lockfile refresh reflecting stellar-strkey 0.0.18 and new transitive dependencies.

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

Comment thread soroban-env-host/src/crypto/poseidon/poseidon2.rs
Comment thread soroban-env-host/src/crypto/poseidon/poseidon2_params.rs
Comment thread soroban-env-host/src/crypto/poseidon/poseidon_params.rs
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.

3 participants