Commit Graph

260 Commits

Author SHA1 Message Date
mergify[bot] bc18e44526
v2.1: ed25519_verify_cpu: remove allocation in hot path (backport of #3941) (#3945)
ed25519_verify_cpu: remove allocation in hot path (#3941)

The old code was a remnant from a time when we tried to "balance" the
amount of work across threads by re-batching and therefore allocating.

This is a hot path. Allocations are bad. Let work stealing work its
magic.

(cherry picked from commit a53a87657c945efd0fc2c6d7edcc2213cff44495)

Co-authored-by: Alessandro Decina <alessandro.d@gmail.com>
2025-01-08 11:22:12 -06:00
dependabot[bot] b33c3a4b35
build(deps): bump ahash from 0.8.10 to 0.8.11 (#1170)
* build(deps): bump ahash from 0.8.10 to 0.8.11

Bumps [ahash](https://github.com/tkaitchuck/ahash) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tkaitchuck/ahash/releases)
- [Commits](https://github.com/tkaitchuck/ahash/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: ahash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update all Cargo files

* updates test_dedup_seeded

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: behzad nouri <behzadnouri@gmail.com>
2024-10-23 12:51:41 +08:00
Kevin Heavey 6082e8434d
Remove frozen-abi build script (#2911)
* replace cfg(RUSTC_WITH_SPECIALIZATION) with cfg(feature = "frozen-abi")

* remove the build scripts for the two frozen-abi crates

* remove all rustc_version deps

* remove a rustc_version dep that I missed

* fix duplicate lines in Cargo.toml files

* remove build.rs from instruction crate

* remove rustc_version from instruction crate

* remove no-longer-needed check-cfg entries

* update lock file after rebase
2024-09-17 06:08:48 +00:00
Yihau Chen 6e23e69f09
chore: bump curve25519-dalek from 3.2.1 to 4.1.3 (#2252)
* bump curve25519-dalek from 3.2.1 to 4.1.3

* Update .github/scripts/downstream-project-spl-common.sh

Co-authored-by: samkim-crypto <skim13@cs.stanford.edu>

* Update .github/scripts/downstream-project-spl-common.sh

Co-authored-by: samkim-crypto <skim13@cs.stanford.edu>

* Update .github/scripts/downstream-project-spl-common.sh

Co-authored-by: samkim-crypto <skim13@cs.stanford.edu>

* Update Cargo.toml

Co-authored-by: samkim-crypto <skim13@cs.stanford.edu>

* remove opt level hack

* add comment for opt level

---------

Co-authored-by: samkim-crypto <skim13@cs.stanford.edu>
2024-09-03 17:57:13 +08:00
steviez a72f981370
Remove counters from sigverify functions (#2785)
These counters should be removed for several reasons:
- Counters in general are bad (multiple atomics for a single value)
- The counters are at debug level, so effectively unused
- The reported values can be determined from SigVerifierStats

The only thing lost is whether verification was done by cpu/gpu/disabled
verifier. But, most validators are not running gpu's, so ripping this
out now and it can be re-added more properly if more validators shift to
using gpu's.
2024-08-30 06:28:00 +09:00
Yihau Chen d8e95ac15f
bump rust to 1.80.1 / 2024-08-08 (#2487)
* bump rust to 1.80

* bump nightly version to 2024-07-21

* bump rust stable to 1.80.1, nightly to 2024-08-08

* clippy: macro_metavars_in_unsafe

* fix unexpected tag

* run anchor downstream test with their master

* add no-entrypoint into workspace level lint

* use correct llvm path for coverage test
2024-08-16 11:55:08 +08:00
Ashwin Sekar 993d223410
vote: deprecate legacy vote instructions (#587)
* vote: deprecate legacy vote instructions

* fix tests
2024-08-15 14:25:25 -04:00
Kevin Heavey 77ea09a74f
Only run frozen-abi build script when needed (#2443)
* add cfg(feature = "frozen-abi") to build.rs

* only depend on rustc_version when frozen-abi feature is activated

* remove extraneous dirs that snuck in from another branch

* update perf/build.rs as it's different from the standard build script

* use symlink for svm/build.rs

* remove unused build dep rustc_version from wen-restart

* fmt Cargo.toml
2024-08-08 16:18:12 +00:00
Kevin Heavey b2c4742af2
Move short_vec to its own crate (#1796)
* move short_vec.rs to its own crate

* update short_vec dependents to use new crate

* update lock file

* reexport short_vec with deprecation notice

* re-export in sdk too

* fmt

* remove duplicate frozen-abi stuff

* fix frozen-abi usage and activation

* update lock file

* fmt

* update expected digests after confirming not a real abi change

* update another digest

* add missing activation of frozen-abi feature

* update digests in sdk and program

* update VoteTransaction digest

* fmt
2024-07-17 14:10:16 +00:00
Yihau Chen 17e496d779
Revert "bump curve25519-dalek from 3.2.1 to 4.1.3 (#1693)" (#2055)
This reverts commit 69a1e86e0f.
2024-07-10 15:30:10 +08:00
Yihau Chen 69a1e86e0f
bump curve25519-dalek from 3.2.1 to 4.1.3 (#1693)
* Bump curve25519-dalek from 3.2.1 to 4.1.3

* hack spl test

* ignore some spl downstream tests

* use into_option

* hack spl test 2

---------

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-09 14:29:28 +08:00
Yihau Chen c59fa1ea77
chore: remove unused clippy attributes, needless_collect (#1517)
* remove clippy needless_collect

* update comment
2024-06-03 13:24:20 +00:00
Kevin Heavey cadba689cb
Make solana-frozen-abi optional in all remaining crates (#1278)
* put most AbiExample derivations behind a cfg_attr

* feature gate all `extern crate solana_frozen_abi_macro;`

* use cfg_attr wherever we were deriving both AbiExample and AbiEnumVisitor

* fix cases where AbiEnumVisitor was still being derived unconditionally

* fix a case where AbiExample was derived unconditionally

* fix more cases where both AbiEnumVisitor and AbiExample were derived unconditionally

* two more cases where AbiExample and AbiEnumVisitor were unconditionally derived

* fix remaining unconditional derivations of AbiEnumVisitor

* fix cases where AbiExample is the first thing derived

* fix most remaining unconditional derivations of AbiExample

* move all `frozen_abi(digest =` behind cfg_attr

* replace incorrect cfg with cfg_attr

* fix one more unconditionally derived AbiExample

* feature gate AbiExample impls

* add frozen-abi feature to required Cargo.toml files

* make frozen-abi features activate recursively

* fmt

* add missing feature gating

* fix accidentally changed digest

* activate frozen-abi in relevant test scripts

* don't activate solana-program's frozen-abi in sdk dev-dependencies

* update to handle AbiExample derivation on new AppendVecFileBacking enum

* revert toml formatting

* remove unused frozen-abi entries from address-lookup-table Cargo.toml

* remove toml references to solana-address-lookup-table-program/frozen-abi

* update lock file

* remove no-longer-used generic param
2024-05-17 14:42:58 +02:00
Yihau Chen 0e6d42e613
bump nix to 0.28.0 (#628)
* bump nix to 0.28.0

* enable 'socket' for net-utils

* enable 'signal' for install

* enable 'user' for perf

* enable 'net' for streamer
2024-04-11 12:03:23 +08:00
Jon C b6f6fdbc9a
frozen-abi: Remove proc_macro_hygiene featurization (#109) 2024-03-06 15:32:05 +01:00
GoodDaisy 03386cc7b9
Fix typos (#34459)
* Fix typos

* Fix typos

* fix typo
2023-12-21 13:06:00 -07:00
Ryo Onodera 95810d876a
Enable frozen_abi on banking trace file (#33501)
* Enable frozen_abi on banking trace file

* Fix ci with really correct bugfix...

* Remove tracker_callers

* Fix typo...

* Fix AbiExample for Arc/Rc's Weaks

* Added comment for AbiExample impl of SystemTime

* Simplify and document EvenAsOpaque with new usage

* Minor clean-ups

* Simplify SystemTime::example() with UNIX_EPOCH...

* Add comment for AbiExample subtleties
2023-10-07 13:15:38 +09:00
behzad nouri 528a03f32a
removes outdated matches crate from dependencies (#33172)
removes outdated matches crate from the dependencies

std::matches has been stable since rust 1.42.0.
Other use-cases are covered by assert_matches crate.
2023-09-07 12:52:57 +00:00
Alexander Meißner 9e703f85de
Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961)
* allow pedantic invalid cast lint

* allow lint with false-positive triggered by `test-case` crate

* nightly `fmt` correction

* adapt to rust layout changes

* remove dubious test

* Use transmute instead of pointer cast and de/ref when check_aligned is false.

* Renames clippy::integer_arithmetic to clippy::arithmetic_side_effects.

* bump rust nightly to 2023-08-25

* Upgrades Rust to 1.72.0

---------

Co-authored-by: Trent Nelson <trent@solana.com>
2023-09-01 07:26:13 +00:00
Alexander Meißner 150a798d32
Fix - Upcoming `arithmetic_side_effects` lints (#33000)
* dereplicode address alignment check

* Uses `checked_div` and `checked_rem` in built-in loaders.

* Uses `checked_div` and `checked_rem`.

* sdk: replace sub() with saturating_sub()

* eliminate `String` "arithmetic"

* allow arithmetic side-effects in tests and benches and on types we don't control

---------

Co-authored-by: Trent Nelson <trent@solana.com>
2023-08-29 20:58:53 +02:00
Jon Cinque 0fe902ced7
Bump rand to 0.8, rand_chacha to 0.3, getrandom to 0.2 (#32871)
* sdk: Add concurrent support for rand 0.7 and 0.8

* Update rand, rand_chacha, and getrandom versions

* Run command to replace `gen_range`

Run `git grep -l gen_range | xargs sed -i'' -e 's/gen_range(\(\S*\), /gen_range(\1../'

* sdk: Fix users of older `gen_range`

* Replace `hash::new_rand` with `hash::new_with_thread_rng`

Run:
```
git grep -l hash::new_rand | xargs sed -i'' -e 's/hash::new_rand([^)]*/hash::new_with_thread_rng(/'
```

* perf: Use `Keypair::new()` instead of `generate`

* Use older rand version in zk-token-sdk

* program-runtime: Inline random key generation

* bloom: Fix clippy warnings in tests

* streamer: Scope rng usage correctly

* perf: Fix clippy warning

* accounts-db: Map to char to generate a random string

* Remove `from_secret_key_bytes`, it's just `keypair_from_seed`

* ledger: Generate keypairs by hand

* ed25519-tests: Use new rand

* runtime: Use new rand in all tests

* gossip: Clean up clippy and inline keypair generators

* core: Inline keypair generation for tests

* Push sbf lockfile change

* sdk: Sort dependencies correctly

* Remove `hash::new_with_thread_rng`, use `Hash::new_unique()`

* Use Keypair::new where chacha isn't used

* sdk: Fix build by marking rand 0.7 optional

* Hardcode secret key length, add static assertion

* Unify `getrandom` crate usage to fix linking errors

* bloom: Fix tests that require a random hash

* Remove some dependencies, try to unify others

* Remove unnecessary uses of rand and rand_core

* Update lockfiles

* Add back some dependencies to reduce rebuilds

* Increase max rebuilds from 14 to 15

* frozen-abi: Remove `getrandom`

* Bump rebuilds to 17

* Remove getrandom from zk-token-proof
2023-08-21 19:11:21 +02:00
behzad nouri 0b52b8a46e
switches from dlopen to dlopen2 (#32640)
dlopen is unmaintained:
https://github.com/szymonwieloch/rust-dlopen/issues/47
2023-07-27 16:30:22 +00:00
behzad nouri cfb028819a
deprecates Signature::new in favor of Signature::{try_,}from (#32481) 2023-07-14 22:51:12 +00:00
Brooks 3b0e4c8452
Removes unnecessary default() (#32477) 2023-07-13 13:59:57 -04:00
behzad nouri d54b6204be
removes instances of clippy::manual_let_else (#32417) 2023-07-09 21:41:36 +00:00
behzad nouri 0da01270ef
removes redundant recycler clones (#32401) 2023-07-06 18:25:20 +00:00
steviez c2e45773af
Fixup is_niceness_adjustment_valid unit test for non-linux case (#32363)
The test needs to be aware of is_niceness_adjustment_valid from super
scope; however, the use directive in test module only runs on Linux
systems.
2023-07-05 14:27:03 -04:00
sakridge 7ff5e463e9
Move is_niceness logic out of clap utils to reduce dependencies (#32331)
Move is_niceness logic out of clap utils to reduce dependencies..

..for solana-keygen
2023-06-29 14:03:36 +02:00
Tao Zhu 9d6c921b5f
check simple vote could have 1 or 2 signatures when creating sanitized transaction (#31807)
* check simple vote could have 1 or 2 signatures when creating sanitized transaction
2023-05-25 15:45:15 -05:00
Brennan e79b84ea70
Rework tx sig verify batching (#31355)
* Rework tx sig verify batching to eliminate special casing and increase the packet limit for sigverify from 2k to 5k
2023-04-28 09:21:12 -07:00
Ryo Onodera a30830d7a9
ci: treewide: deny used_underscore_binding (#31319)
* Enforce used_underscore_binding

* Fix all

* Work around for cfg()-ed code...

* ci....

* Make clipply fixes more pleasant

* Clone exit signal while intentionally shadowing

* Use more verbose code to avoid any #[allow(...)]s
2023-04-27 10:10:16 +09:00
Andrew Fitzgerald 65d9238e31
remove pub from to_packet_batches_for_tests (#31056) 2023-04-05 08:57:17 -07:00
Yihau Chen 2c842e9932
chore: workspace inheritance (#30939)
* client/Cargo.toml

* udp-client/Cargo.toml

* tpu-client/Cargo.toml

* thin-client/Cargo.toml

* storage-proto/Cargo.toml

* quic-client/Cargo.toml

* dos/Cargo.toml

* entry/Cargo.toml

* perf/Cargo.toml

* program-runtime/Cargo.toml

* program-test/Cargo.toml

* programs/address-lookup-table/Cargo.toml

* programs/loader-v3/Cargo.toml

* connection-cache/Cargo.toml

* programs/sbf/rust/big_mod_exp/Cargo.toml

* programs/zk-token-proof-tests/Cargo.toml
2023-03-29 03:28:56 +00:00
behzad nouri 359d9c7b9f
upgrades ahash to 0.8.3 (#30935) 2023-03-28 18:23:33 +00:00
Jeff Biseda 04f0311aa1
check data budget before accessing blockstore (#30809) 2023-03-22 15:56:06 -07:00
behzad nouri 9ad77485ce
generalizes deduper to work with any hashable type (#30753)
generalizes Deduper to work with any hashable type

Current Deduper is hard-coded only for Packet type. In order to use
Deduper in retransmit-stage, we need to dedup types other than Packet.
The commit generalizes Deduper to any hashable type.
2023-03-20 18:04:46 +00:00
behzad nouri 46614c0e9f
removes false_positive_rate field from Deduper (#30788)
removes the false_positive_rate field from the Deduper

Deduper.false_positive_rate field is misleading because it is not
enforced until maybe_reset is called. But then maybe_reset can be
invoked with an explicit argument.
2023-03-20 13:16:52 +00:00
behzad nouri 93f696dac7
increases shred-fetch-stage deduper capacity and reset-cycle (#30690) 2023-03-17 00:05:29 +00:00
behzad nouri 7a7b020580
dedups packets using an atomic bloom filter (#30726)
Current Deduper implementation uses many bits per entry:
https://github.com/solana-labs/solana/blob/65cd55261/perf/src/deduper.rs#L70-L73
and may be saturated quickly. It also lacks api to specify desired false
positive rate.

The commit instead uses an atomic bloom filter with K hash functions.
The false positive rate is obtained by tracking popcount of bits.
2023-03-16 16:45:42 +00:00
Tao Zhu ee81679804
Not to tag versioned transaction as simple_vote_tx (#30517)
* not to tag versioned transaction as simple_vote_tx
* better error code
2023-02-24 23:48:15 -06:00
Yihau Chen df3ef111f7
chore: workspace inheritance (#29893)
* introduce workspace.package

* introduce workspace.dependencies

* read version from root cargo.toml

* pass check when version = { workspace = true }

* don't bump version when version = { workspace = true }

* including workspace Cargo.toml when bump version

* programs/sbf use workspace inheritance

* fix increasing cargo version ignore program/sbf/Cargo.toml
2023-02-23 22:01:54 +08:00
Michael Vines 5136ed3448
Update homepage value for all crates (#30444) 2023-02-23 02:20:18 +00:00
steviez 2ba76e4235
chore: Use Self in Packet/PacketBatch impl blocks (#30417) 2023-02-22 10:02:50 -05:00
steviez d3dab24bbe
chore: Use `i` over `ix` variable name when naming worker threads (#30206) 2023-02-09 01:24:57 +00:00
dependabot[bot] 232e252014
Bump serde from 1.0.144 to 1.0.152 (#29696)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
Co-authored-by: Tyera <tyera@solana.com>
2023-02-01 16:27:17 -07:00
Will Hickey 04a6a631bc
Bump version to v1.16 (#30028) 2023-01-31 17:48:33 -06:00
joeaba a12bf8c003
Update maintainers references (#29997)
* update maintainers references

* chore: update maintainers reference
2023-01-31 08:07:13 -05:00
behzad nouri 4cc07a176e
reduces number of gossip pull requests/responses (#29974) 2023-01-30 17:59:56 +00:00
steviez fa39bfef6b
Move Deduper into a separate file (#29891) 2023-01-25 15:34:53 -06:00
Ryo Onodera 40bbf99c74
Add fully-reproducible online tracer for banking (#29196)
* Add fully-reproducible online tracer for banking

* Don't use eprintln!()...

* Update programs/sbf/Cargo.lock...

* Remove meaningless assert_eq

* Group test-only code under aptly named mod

* Remove needless overflow handling in receive_until

* Delay stat aggregation as it's possible now

* Use Cow to avoid needless heap allocs

* Properly consume metrics action as soon as hold

* Trace UnprocessedTransactionStorage::len() instead

* Loosen joining api over type safety for replaystage

* Introce hash event to override these when simulating

* Use serde_with/serde_as instead of hacky workaround

* Update another Cargo.lock...

* Add detailed comment for Packet::buffer serialize

* Rename sender_overhead_minimized_receiver_loop()

* Use type interference for TraceError

* Another minor rename

* Retire now useless ForEach to simplify code

* Use type alias as much as possible

* Properly translate and propagate tracing errors

* Clarify --enable-banking-trace with better naming

* Consider unclean (signal-based) node restarts..

* Tweak logging and cli

* Remove Bank events as it's not needed anymore

* Make tpu own banking tracer thread

* Reduce diff a bit..

* Use latest serde_with

* Finally use the published rolling-file crate

* Make test code change more consistent

* Revive dead and non-terminating test code path...

* Dispose batches early now that possible

* Split off thread handle very early at ::new()

* Tweak message for TooSmallDirByteLimitl

* Remove too much of indirection

* Remove needless pub from ::channel()

* Clarify test comments

* Avoid needless event creation if tracer is disabled

* Write tests around file rotation and spill-over

* Remove unneeded PathBuf::clone()s...

* Introduce inner struct instead of tuple...

* Remove unused enum BankStatus...

* Avoid .unwrap() for the case of disabled tracer...
2023-01-25 21:54:38 +09:00