Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(sdk): Turn off alloy-* crate features by default #1980

Merged
merged 1 commit into from
Jan 24, 2025

Conversation

ratankaliani
Copy link
Member

@ratankaliani ratankaliani commented Jan 24, 2025

Problem

The issue arises because alloy-primitives features are being set to include all default features based on dependencies in OP Succinct. This causes a conflict with the kona dependency, which relies on the standard HashMap implementation.

Specifically:
1. sp1-sdk enables all default features of alloy-primitives unnecessarily.
2. This includes the map-foldhash feature, which uses foldhash::fast::RandomState.
3. foldhash::fast::RandomState does not implement Send + Sync.
4. However, spin::RwLock, which kona uses, requires its contents to be Send + Sync for thread safety.

This mismatch leads to thread-safety issues when foldhash::fast::RandomState is used in conjunction with spin::RwLock.

Fix

The solution is to disable default features for alloy crates in sp1-sdk, preventing it from enabling all features of alloy-primitives. By doing so:
• The standard HashMap implementation will be used instead when users don't enable alloy-primitives.
• The standard HashMap uses a RandomState that implements Send + Sync, ensuring compatibility with spin::RwLock.

We should have never set the default features to be enabled in the first place, as they're unnecessary.

Note

  • Only alloy-primitives and alloy-sol-types have default-features.

@ratankaliani ratankaliani merged commit 40a9d84 into dev Jan 24, 2025
14 checks passed
@ratankaliani ratankaliani deleted the ratan/set-alloy-features-off-by-default branch January 24, 2025 17:27
nhtyy added a commit that referenced this pull request Jan 31, 2025
* chore: bump docker image

* chore: bump patches

* fix: workflow docker gnark install toolchain

* fix: bump examples patch

* fix: clean up install logic

* fix: remove ed-consesnus patch

* fix: test mod vis

* fix: examples

* fix: docker ci (#230)

* chore: bump docker image

* chore: bump patches

* fix: workflow docker gnark install toolchain

* fix: bump examples patch

* fix: clean up install logic

* fix

* fix ci

---------

Co-authored-by: nhtyy <[email protected]>

* doc updates

* chore: book + tracing (#1932)

* fix: book deploy workflow

* add versioned docs

* chore: don't skip deploy step

* try symlink gcc per rocksdb rec

* try add fix for ARM musl targets

* fix: need seperate musl setups arm vs x86

* combine old arm musl setup

* feat: v4.0.1 (#1941)

Co-authored-by: Ratan Kaliani <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: macos-12 runners deprecated

* improve docs regarding new memory argument

* resolve comments

* fix(book): commit yarn lock file (#1960)

* feat: display the correct proof type in SP1ProofWithPublicValues::bytes() (#1964)

* fix(ci): cache paths not found in book workflow

* fix(ci): correct cache usage for book (#1965)

* fix(ci): fix big int version to avoid msrv (#1966)

* chore: include rustc --version stderr in panic (#1968)

* fix(sdk): implemented verify for EnvProver (#1963)

* perf: rm vec allocs from words conversions (#1972)

* feat(sdk): proof timeout fix (#1971)

* feat: don't checkout submodules when doing `cargo prove new --evm` (#1976)

* fix(sdk): retry network request proof (#1977)

* feat(sdk): Turn off `alloy-*` crate features by default (#1980)

* docs: add audit report for v4, fix typo (#1988)

* docs: improve precompile security docs (#1991)

* fix: Write diagnostics to stderr (vs stdout) (#1978)

* fix(examples): check next validators hash in tendermint program (#1992)

* feat(docker-build): pass additional workspace directory (#1975)

* chore: ignore generated by Intellij-based IDEs. (#1986)

* docs: add GitHub token usage example in installation guide (#1984)

* feat: remove deprecated #[clap] attribute (#1898)

* chore: rm redundant to_vec (#1970)

* chore(clippy): misc clippy fixes (#1969)

* fix: use downloadable go directive 1.22.0 (#1967)

* chore: reorder impl members to match trait definition (#1985)

* fix: deferred checkpoints optimization (#1973)

Co-authored-by: N <[email protected]>

* fix(ci): clippy + fmt (#1997)

* fix: typo in prover network docs (#1998)

* test: check syscalls are actually emitted (#1981)

* perf(prover): powers of alpha (#2000)

Co-authored-by: nhtyy <[email protected]>
Co-authored-by: Yuwen Zhang <[email protected]>
Co-authored-by: jtguibas <[email protected]>
Co-authored-by: Ratan Kaliani <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rkm0959 <[email protected]>
Co-authored-by: Aurélien <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: srdtrk <[email protected]>
Co-authored-by: Matt Stam <[email protected]>
Co-authored-by: Ivan Mikushin <[email protected]>
Co-authored-by: Abishek Bashyal <[email protected]>
Co-authored-by: DevOrbitlabs <[email protected]>
Co-authored-by: Gengar <[email protected]>
Co-authored-by: crStiv <[email protected]>
Co-authored-by: Chris T. <[email protected]>

* nit

---------

Co-authored-by: nhtyy <[email protected]>
Co-authored-by: Yuwen Zhang <[email protected]>
Co-authored-by: jtguibas <[email protected]>
Co-authored-by: Ratan Kaliani <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rkm0959 <[email protected]>
Co-authored-by: Aurélien <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: srdtrk <[email protected]>
Co-authored-by: Matt Stam <[email protected]>
Co-authored-by: Ivan Mikushin <[email protected]>
Co-authored-by: Abishek Bashyal <[email protected]>
Co-authored-by: DevOrbitlabs <[email protected]>
Co-authored-by: Gengar <[email protected]>
Co-authored-by: crStiv <[email protected]>
Co-authored-by: Chris T. <[email protected]>
nhtyy added a commit that referenced this pull request Jan 31, 2025
* chore: bump docker image

* chore: bump patches

* fix: workflow docker gnark install toolchain

* fix: bump examples patch

* fix: clean up install logic

* fix: remove ed-consesnus patch

* fix: test mod vis

* fix: examples

* fix: docker ci (#230)

* chore: bump docker image

* chore: bump patches

* fix: workflow docker gnark install toolchain

* fix: bump examples patch

* fix: clean up install logic

* fix

* fix ci

---------

Co-authored-by: nhtyy <[email protected]>

* doc updates

* chore: book + tracing (#1932)

* fix: book deploy workflow

* add versioned docs

* chore: don't skip deploy step

* try symlink gcc per rocksdb rec

* try add fix for ARM musl targets

* fix: need seperate musl setups arm vs x86

* combine old arm musl setup

* feat: v4.0.1 (#1941)

Co-authored-by: Ratan Kaliani <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: macos-12 runners deprecated

* improve docs regarding new memory argument

* resolve comments

* fix(book): commit yarn lock file (#1960)

* feat: display the correct proof type in SP1ProofWithPublicValues::bytes() (#1964)

* fix(ci): cache paths not found in book workflow

* fix(ci): correct cache usage for book (#1965)

* fix(ci): fix big int version to avoid msrv (#1966)

* chore: include rustc --version stderr in panic (#1968)

* fix(sdk): implemented verify for EnvProver (#1963)

* perf: rm vec allocs from words conversions (#1972)

* feat(sdk): proof timeout fix (#1971)

* feat: don't checkout submodules when doing `cargo prove new --evm` (#1976)

* fix(sdk): retry network request proof (#1977)

* feat(sdk): Turn off `alloy-*` crate features by default (#1980)

* docs: add audit report for v4, fix typo (#1988)

* docs: improve precompile security docs (#1991)

* fix: Write diagnostics to stderr (vs stdout) (#1978)

* fix(examples): check next validators hash in tendermint program (#1992)

* feat(docker-build): pass additional workspace directory (#1975)

* chore: ignore generated by Intellij-based IDEs. (#1986)

* docs: add GitHub token usage example in installation guide (#1984)

* feat: remove deprecated #[clap] attribute (#1898)

* chore: rm redundant to_vec (#1970)

* chore(clippy): misc clippy fixes (#1969)

* fix: use downloadable go directive 1.22.0 (#1967)

* chore: reorder impl members to match trait definition (#1985)

* fix: deferred checkpoints optimization (#1973)

Co-authored-by: N <[email protected]>

* fix(ci): clippy + fmt (#1997)

* fix: typo in prover network docs (#1998)

* test: check syscalls are actually emitted (#1981)

* perf(prover): powers of alpha (#2000)

Co-authored-by: nhtyy <[email protected]>
Co-authored-by: Yuwen Zhang <[email protected]>
Co-authored-by: jtguibas <[email protected]>
Co-authored-by: Ratan Kaliani <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rkm0959 <[email protected]>
Co-authored-by: Aurélien <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: srdtrk <[email protected]>
Co-authored-by: Matt Stam <[email protected]>
Co-authored-by: Ivan Mikushin <[email protected]>
Co-authored-by: Abishek Bashyal <[email protected]>
Co-authored-by: DevOrbitlabs <[email protected]>
Co-authored-by: Gengar <[email protected]>
Co-authored-by: crStiv <[email protected]>
Co-authored-by: Chris T. <[email protected]>

* fix: counts and small shape fixing (#2007)

* patch lock

---------

Co-authored-by: nhtyy <[email protected]>
Co-authored-by: Yuwen Zhang <[email protected]>
Co-authored-by: jtguibas <[email protected]>
Co-authored-by: Ratan Kaliani <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rkm0959 <[email protected]>
Co-authored-by: Aurélien <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: srdtrk <[email protected]>
Co-authored-by: Matt Stam <[email protected]>
Co-authored-by: Ivan Mikushin <[email protected]>
Co-authored-by: Abishek Bashyal <[email protected]>
Co-authored-by: DevOrbitlabs <[email protected]>
Co-authored-by: Gengar <[email protected]>
Co-authored-by: crStiv <[email protected]>
Co-authored-by: Chris T. <[email protected]>
Co-authored-by: umadayal <[email protected]>
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