carllin
6dfad0652f
Cache account stores, flush from AccountsBackgroundService ( #13140 )
2021-01-11 17:00:23 -08:00
Tyera Eulberg
b0e6e29527
Update timestamp max allowable drift to 50% of PoH ( #14531 )
...
* Repurpose warp-timestamp feature for general bump
* Change max_allowable_drift to 50%
* Fill in PR#
* Fix rpc test setup
2021-01-11 23:27:30 +00:00
Michael Vines
a95675a7ce
Avoid tmp snapshot backlog in SnapshotPackagerService under high load ( #14516 )
2021-01-11 10:21:15 -08:00
Michael Vines
7be6770808
Rename CompressionType to ArchiveFormat
2021-01-09 09:07:49 -08:00
Michael Vines
141e6706e6
Rename AccountsPackage::root to AccountsPackage::slot
2021-01-09 09:07:49 -08:00
behzad nouri
766195dded
limits number of crds values associated with a pubkey ( #14467 )
2021-01-08 18:54:40 +00:00
Jeff Washington (jwash)
773b21b34e
consolidate DEFAULT_HASHES_PER_TICK ( #14463 )
2021-01-07 09:49:42 -06:00
sakridge
c282586753
Add fixed tick rate adjustment ( #14447 )
2021-01-05 19:25:44 -08:00
Tyera Eulberg
ce1766d798
Enable program-id account index for supply calculations ( #14444 )
...
* Enable program-id account index for supply calculations
* Fixup comments
2021-01-06 02:42:33 +00:00
carllin
5affd8aa72
Add secondary indexes ( #14212 )
2020-12-31 18:06:03 -08:00
Michael Vines
4a3d217839
Only initialize BigTable upload service when requested
2020-12-31 17:40:51 -08:00
Michael Vines
0b23abd479
Bind RPC and faucet to 0.0.0.0
2020-12-31 07:55:26 +00:00
Michael Vines
3d077fb656
Revert "Upgrade in-tree tokio 0.2 usage to tokio 0.3"
...
This reverts commit 444ed768dc
.
2020-12-31 06:26:53 +00:00
Michael Vines
fb6c660cfd
Port ip-echo-server to tokio 0.3
2020-12-30 09:29:16 -08:00
Trent Nelson
fe667db910
validator: Add experimental flag to select PoH pinned core
2020-12-29 19:15:44 -07:00
Trent Nelson
82f61c0c4a
core: Update stale error message
2020-12-29 19:15:44 -07:00
sakridge
f8a4afc7c1
Fix flaky broadcast test ( #14329 )
2020-12-29 12:35:04 -08:00
sakridge
2074e407cd
Add poh speed check and tick speed calibration ( #14292 )
2020-12-29 09:35:57 -08:00
Michael Vines
444ed768dc
Upgrade in-tree tokio 0.2 usage to tokio 0.3
2020-12-29 09:23:23 -08:00
Tyera Eulberg
3f10fb993b
Retry durable-nonce transactions ( #14308 )
...
* Retry durable-nonce transactions
* Add metric to track durable-nonce txs in queue
* Populate send-tx-service initial addresses with tpu_address if empty (primarily for testing)
* Reinstate last_valid_slot check for durable-nonce txs; use arbitrary future slot
2020-12-29 09:48:43 -07:00
Michael Vines
9ddd6f08e8
Persist gossip contact info
2020-12-27 20:46:54 -08:00
sakridge
c693ffaa08
Fix subtraction overflow in metrics ( #14290 )
2020-12-27 16:26:22 -08:00
behzad nouri
2fd38d9912
indexes votes in crds table ( #14272 )
2020-12-27 13:31:05 +00:00
behzad nouri
49019c6613
obtains staked-nodes from the root-bank ( #14257 )
...
... as opposed to the working bank
2020-12-27 13:28:05 +00:00
Trent Nelson
5b903318b2
vote: Add helper for creating current-versioned states
2020-12-22 19:37:26 -07:00
Michael Vines
ace360ade2
Multiple entrypoint support
2020-12-22 18:35:31 -08:00
Michael Vines
3373082ffa
Update entrypoint contact info even when shred version adoption is not requested
2020-12-22 18:35:31 -08:00
behzad nouri
a14cfd660a
removes &Arc<Self> receivers ( #14234 )
2020-12-22 23:51:53 +00:00
sakridge
baa9602411
Add shrink paths ( #14238 )
2020-12-21 21:33:37 -08:00
behzad nouri
7b08cb1f0d
improves performance in replay-stage ( #14217 )
...
bank::vote_accounts returns a hash-map which is slow to iterate, but all uses
only require an iterator:
https://github.com/solana-labs/solana/blob/b3dc98856/runtime/src/bank.rs#L4300-L4306
Similarly, calculate_stake_weighted_timestamp takes a hash-map whereas it only
requires an iterator:
https://github.com/solana-labs/solana/blob/b3dc98856/sdk/src/stake_weighted_timestamp.rs#L21-L28
2020-12-21 19:18:19 +00:00
Michael Vines
57b03c5bc1
Restore Content-Length header for streaming snapshot download
2020-12-20 23:22:26 -08:00
Michael Vines
b3dc988564
Stream RPC snapshot downloads
2020-12-19 15:54:23 -08:00
Michael Vines
0090106f60
getBlockTime RPC method now falls back to BigTable in all cases
2020-12-18 20:51:49 +00:00
behzad nouri
691031fefd
limits number of crds values returned when responding to pull requests ( #13739 )
...
Crds values buffered when responding to pull-requests can be very large taking a lot of memory.
Added a limit for number of buffered crds values based on outbound data budget.
2020-12-18 18:45:12 +00:00
behzad nouri
6a3797e164
adds crds-value for broadcasting duplicate shreds through gossip ( #14133 )
...
In gossip, the header overhead we get from:
https://github.com/solana-labs/solana/blob/de9ac43eb/core/src/cluster_info.rs#L434-L435
https://github.com/solana-labs/solana/blob/de9ac43eb/core/src/crds_value.rs#L31-L36
https://github.com/solana-labs/solana/blob/de9ac43eb/core/src/crds_value.rs#L73
already exceeds SIZE_OF_NONCE in shreds. We also need aditional
meta-data (wallclock, source pubkey, ...). Which means that given the
SHRED_PAYLOAD_SIZE, we cannot fit all these in PACKET_DATA_SIZE:
https://github.com/solana-labs/solana/blob/de9ac43eb/ledger/src/shred.rs#L80
On top of that, we need 2 shred payloads as the proof of duplicate. So
each DuplicateShred crds value includes only a chunk of the payload,
along with the meta-data to reconstruct the full payload from the chunks
on the receiving end.
2020-12-18 14:32:43 +00:00
sakridge
a5db6399ad
Fix test_max_hashes ( #14189 )
2020-12-17 15:12:18 -08:00
sakridge
da7d1e2302
Improved Transaction Forwarding ( #13944 )
...
* Forwarding
* Dedupe leaders
* Use consistent commitment for last_valid_slot in rpc send_transaction
* Plumb rpc send_transaction options into solana-validator
* Extend num slots banking-stage holds forwarded txs
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-12-17 15:37:22 -07:00
behzad nouri
d6d76219b6
caches staked nodes computed from vote-accounts ( #13929 )
2020-12-17 21:22:50 +00:00
Michael Vines
0b92720fdb
Don't require increased open file limit in solana-test-validator
...
Travis CI in particular does not allow the open file limit to be
increased.
2020-12-16 20:43:08 -08:00
Trent Nelson
6875113d82
Bump SPL crates
2020-12-17 01:54:22 +00:00
Tyera Eulberg
ac0d32bc7e
Add blockstore skipped api ( #14145 )
...
* Add blockstore api to determine if a slot was skipped
* Return custom rpc error if slot is skipped
2020-12-16 13:40:36 -07:00
sakridge
d4a174fb7c
Partial shred deserialize cleanup and shred type differentiation ( #14094 )
...
* Partial shred deserialize cleanup and shred type differentiation in retransmit
* consolidate packet hashing logic
2020-12-15 16:50:40 -08:00
carllin
75e9e321de
Fix race between setting tick height and calculating accounts hash ( #14101 )
...
Co-authored-by: Carl Lin <carl@solana.com>
2020-12-15 12:45:40 -08:00
Michael Vines
1e977ac025
Bump version to v1.6.0
2020-12-15 18:28:04 +00:00
behzad nouri
c2b7115031
indexes crds values associated with a pubkey ( #14088 )
...
record_labels returns all the possible labels for a record identified by
a pubkey, used in updating timestamp of crds values:
https://github.com/solana-labs/solana/blob/1792100e2/core/src/crds_value.rs#L560-L577
https://github.com/solana-labs/solana/blob/1792100e2/core/src/crds.rs#L240-L251
The code relies on CrdsValueLabel to be limited to a small deterministic
set of possible values for a fixed pubkey. As we expand crds values to
include duplicate shreds, this limits what the duplicate proofs can be
keyed by in the table.
In addition the computation of these labels is inefficient and will
become more so as duplicate shreds and more types of crds values are
added. An alternative is to maintain an index of all crds values
associated with a pubkey.
2020-12-15 01:49:22 +00:00
sakridge
5294f70189
Remove some non-warnings ( #14115 )
2020-12-14 16:26:17 -08:00
Michael Vines
7143aaa89b
Clippy
2020-12-14 08:03:29 -08:00
Michael Vines
cdd3e7d856
Remove solana-vote-signer ( #14099 )
2020-12-13 19:12:20 -08:00
Michael Vines
9f2d154588
Rework TestValidator API to be more like ProgramTest
2020-12-13 07:45:55 +00:00
dependabot[bot]
88d950e5a8
chore: bump log from 0.4.8 to 0.4.11 ( #13691 )
...
* chore: bump log from 0.4.8 to 0.4.11
Bumps [log](https://github.com/rust-lang/log ) from 0.4.8 to 0.4.11.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/compare/0.4.8...0.4.11 )
Signed-off-by: dependabot[bot] <support@github.com>
* [auto-commit] Update all Cargo lock files
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
2020-12-13 13:48:23 +09:00
carllin
55fc963595
Move slot cleanup to AccountsBackgroundService ( #13911 )
...
* Move bank drop to AccountsBackgroundService
* Send to ABS on drop instead, protects against other places banks are dropped
* Fix Abi
* test
Co-authored-by: Carl Lin <carl@solana.com>
2020-12-13 01:22:34 +00:00
Tyera Eulberg
8541ffa328
Add subscription cap ( #14011 )
...
* Add subscription cap
* Elide unwraps
2020-12-12 01:57:40 +00:00
Trent Nelson
546c6a4531
Override yanked miow crate to 0.2.2
2020-12-11 23:44:03 +00:00
Trent Nelson
277b6790c7
Override yanked net2 0.2.37
2020-12-11 23:44:03 +00:00
Ryo Onodera
09bd412b13
Wrong rpc inflation rate ( #14063 )
...
* Fix wrong inflation calculation in rpc
* Reorder
* Fix test
2020-12-11 07:42:39 +00:00
Michael Vines
4fba7e6865
Move validator_block_0_fee_workaround into TestValidator
2020-12-11 04:17:38 +00:00
Michael Vines
bbad3fe501
TestValidator now implements Drop, no need to close() it
2020-12-11 04:17:38 +00:00
Michael Vines
0a9ff1dc9d
Initial solana-test-validator command-line program
2020-12-11 04:17:38 +00:00
Josh
13db3eca9f
SPL token balance in transaction metadata ( #13673 )
...
* feat: store pre / post token balances
* move helper functions into separate include
* move token balance functionality to transaction-status crate
* fix blockstore processor test
* fix bigtable legacy test
* add caching to decimals
2020-12-10 19:25:07 -08:00
sakridge
aa2751e614
Check shred type in is_duplicate ( #14050 )
2020-12-10 18:20:08 -08:00
behzad nouri
409fe3bca1
adds the instance token to crds-labels for node-instance crds-values ( #14037 )
...
If a node "a" receives instance-info from node "b1" it will override any
instance-info associated with "b1" pubkey in its crds table. This makes
it less likely that when "b1" receives crds values from "a" (either
through pull or push), it sees other instances of itself (because node
"a" discarded them when it received "b1" instance info).
In order for the crds table to contain all instance-info associated with
the same pubkey at the same time, we need to add the instance tokens to
the keys in the crds table (i.e. the CrdsValueLabel).
2020-12-10 17:01:55 +00:00
sakridge
5c95d8e963
Shred filter ( #14030 )
2020-12-10 07:54:15 -08:00
sakridge
c5fe076432
Better dupe detection ( #13992 )
2020-12-09 23:14:31 -08:00
behzad nouri
1d267eae6b
std::process::exit to kill all threads
2020-12-09 10:24:23 -08:00
behzad nouri
895d7d6a65
removes RwLock on ClusterInfo.instance
2020-12-09 10:24:23 -08:00
behzad nouri
542198180a
pushes node-instance along with version early in gossip
2020-12-09 10:24:23 -08:00
behzad nouri
8cd5eb9863
checks for duplicate validator instances using gossip
2020-12-09 10:24:23 -08:00
sakridge
f6600810d7
Use LRU cache and blake3 hash of shreds to filter duplicates ( #13976 )
2020-12-07 16:42:39 -08:00
Michael Vines
6e9dbb4f6e
Add --rpc-max-multiple-accounts to override the getMultipleAccounts JSON RPC maximum
2020-12-07 16:31:01 -08:00
carllin
239a191612
Remove unneeded BankWeight fork choice ( #13978 )
...
Co-authored-by: Carl Lin <carl@solana.com>
2020-12-07 13:47:14 -08:00
Tyera Eulberg
6ae4d2e5cb
Fix logsSubscribe ( #13996 )
2020-12-07 19:00:52 +00:00
Ryo Onodera
3d9d7557c8
core/validator: Wrap std::process:exit(1) for easier testing ( #13990 )
2020-12-07 16:43:03 +00:00
Alexander Meißner
a706706572
Validator CLI option to enable just-in-time compilation of BPF ( #13789 )
...
* Adds a CLI option to the validator to enable just-in-time compilation of BPF.
* Refactoring to use bpf_loader_program instead of feature_set to pass JIT flag from the validator CLI to the executor.
2020-12-07 09:49:55 +01:00
behzad nouri
6706f2b3bb
removes recursive read-locks on gossip ( #13973 )
...
ClusterInfo::tvu_peers acquires a read-lock on gossip:
https://github.com/solana-labs/solana/blob/f0e934145/core/src/cluster_info.rs#L1171-L1185
and so, ClusterInfo::repair_peers is recursively locking gossip for
read twice:
https://github.com/solana-labs/solana/blob/f0e934145/core/src/cluster_info.rs#L1202-L1223
But std::sync::RwLock is not re-entrant (recursive).
2020-12-06 15:14:49 +00:00
Tyera Eulberg
ca35bb3ac8
Report highest_confirmed_root and _slot in commitment metric ( #13964 )
2020-12-05 00:50:00 +00:00
carllin
34b68288c8
Fix propagation skip check ( #13933 )
...
Co-authored-by: Carl Lin <carl@solana.com>
2020-12-03 12:31:38 -08:00
behzad nouri
c3048b451d
samples repair peers using WeightedIndex ( #13919 )
...
To output one random sample, weighted_best generates n random numbers:
https://github.com/solana-labs/solana/blob/f751a5d4e/core/src/weighted_shuffle.rs#L38-L63
WeightedIndex does so with only one random number:
https://github.com/rust-random/rand/blob/eb02f0e46/src/distributions/weighted_index.rs#L223-L240
Additionally, if the index is already constructed, it only does a total
of O(log(n)) amount of work; which can be achieved if RepairCache,
caches the weighted index:
https://github.com/solana-labs/solana/blob/f751a5d4e/core/src/serve_repair.rs#L83
Also, the repair-peers code can be reorganized to have fewer redundant
unlock-then-lock code.
2020-12-03 14:26:07 +00:00
Trent Nelson
404fc1570d
runtime: Replace `HashAgeKind` with `NonceRollbackInfo`
2020-12-02 20:10:08 +00:00
Tyera Eulberg
10c81a2448
Remove rpc_banks from validator ( #13882 )
...
* Remove rpc_banks from validator
* Bump abi-digest
2020-12-02 03:25:09 +00:00
Michael Vines
0a8bc347a1
Restore discover_cluster to avoid test panics
2020-12-01 17:58:28 -08:00
Michael Vines
3eece38ffa
Add expects() to improve error logs on join failures
2020-12-01 17:58:28 -08:00
Michael Vines
73111b005f
Reduce the number of snapshots
2020-12-01 11:13:37 -08:00
Tyera Eulberg
8fd1e55805
Add logging in check_blockstore_max_root ( #13887 )
2020-12-01 07:44:18 +00:00
Michael Vines
90d557d916
Strengthen EpochSlots sanitization
2020-11-30 14:40:25 -08:00
behzad nouri
e1793e5a13
caches vote-state de-serialized from vote accounts ( #13795 )
...
Gossip and other places repeatedly de-serialize vote-state stored in
vote accounts. Ideally the first de-serialization should cache the
result.
This commit adds new VoteAccount type which lazily de-serializes
VoteState from Account data and caches the result internally.
Serialize and Deserialize traits are manually implemented to match
existing code. So, despite changes to frozen_abi, this commit should be
backward compatible.
2020-11-30 17:18:33 +00:00
Michael Vines
43b82b31e5
More TestValidator cleanup
2020-11-26 08:56:25 +00:00
Michael Vines
b5f7e39be8
TestValidator public interface cleanup
2020-11-25 17:04:37 -08:00
Tyera Eulberg
4ff0f0949a
Separate blockstore checks for not (yet) rooted and cleaned up ( #13814 )
2020-11-25 22:59:38 +00:00
Michael Vines
4ef2da0ff0
Add `solana logs` command
2020-11-25 11:44:41 -08:00
sakridge
b70abdc645
Nonce updates ( #13799 )
...
* runtime: Add `FeeCalculator` resolution method to `HashAgeKind`
* runtime: Plumb fee-collected accounts for failed nonce tx rollback
* runtime: Use fee-collected nonce/fee account for nonced TX error rollback
* runtime: Add test for failed nonced TX accounts rollback
* Fee payer test
* fixup: replace nonce account when it pays the fee
* fixup: nonce fee-payer collect test
* fixup: fixup: clippy/fmt for replace...
* runtime: Test for `HashAgeKind::fee_calculator()`
* Clippy
Co-authored-by: Trent Nelson <trent@solana.com>
2020-11-24 23:53:51 -08:00
Michael Vines
215ddecaa5
Add base64+zstd encoding for RPC account data
2020-11-25 02:03:23 +00:00
Michael Vines
61ab2072bd
Clean up default commitment handling for subscriptions
2020-11-23 22:54:47 -08:00
Tyera Eulberg
7befad2f6d
Check SlotNotRooted if confirmed block not found in blockstore or bigtable ( #13776 )
2020-11-24 03:36:20 +00:00
behzad nouri
26bf2b7e45
processes pull-request callers only once per unique caller ( #13750 )
...
process_pull_requests acquires a write lock on crds table to update
records timestamp for each of the pull-request callers:
https://github.com/solana-labs/solana/blob/3087c9049/core/src/crds_gossip_pull.rs#L287-L300
However, pull-requests overlap a lot in callers and this function ends
up doing a lot of redundant duplicate work.
This commit obtains unique callers before acquiring an exclusive lock on
crds table.
2020-11-22 17:51:14 +00:00
sakridge
c1eb350c47
Allow contact debug interval to be adjusted ( #13737 )
2020-11-20 14:47:37 -08:00
Ryo Onodera
b74d7b5758
Fix fragile tests in prep of stake rewrite pr ( #13654 )
...
* Fix fragile tests in prep of stake rewrite pr
* Restore BOOTSTRAP_VALIDATOR_LAMPORTS where appropriate
* Further clean up
* Further clean up
* Aligh with other call site change
* Remove false warn!
* fix ci!
2020-11-20 17:21:03 +09:00
behzad nouri
a8c29505f0
sanitizes bloom filters to avoid division by zero ( #13714 )
...
Pull requests received over the wire can cause a validator to panic
because of division by zero in bloom filters:
https://github.com/solana-labs/solana/blob/af08ba93e/runtime/src/bloom.rs#L86-L88
2020-11-19 23:35:22 +00:00
dependabot[bot]
856693ac1f
chore: bump lru from 0.6.0 to 0.6.1
...
Bumps [lru](https://github.com/jeromefroe/lru-rs ) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/jeromefroe/lru-rs/releases )
- [Changelog](https://github.com/jeromefroe/lru-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/jeromefroe/lru-rs/compare/0.6.0...0.6.1 )
Signed-off-by: dependabot[bot] <support@github.com>
2020-11-19 14:28:50 -08:00
behzad nouri
b58f69297f
makes crds fields private ( #13703 )
...
Crds fields should maintain several invariants between themselves, so
exposing them as public fields can be bug prone. In addition these
invariants are asserted on every write:
https://github.com/solana-labs/solana/blob/9668dd85d/core/src/crds.rs#L138-L154
https://github.com/solana-labs/solana/blob/9668dd85d/core/src/crds.rs#L239-L262
which adds extra instructions and is not optimal. Should these fields be
private the asserts will be redundant.
2020-11-19 20:57:40 +00:00
behzad nouri
1ffab5de77
breaks prunes data into chunks to fit into packets ( #13613 )
...
Validator logs show that prune messages are dropped because they exceed
packet data size:
https://github.com/solana-labs/solana/blob/f25c969ad/perf/src/packet.rs#L90-L92
This can exacerbate gossip traffic by redundantly increasing push
messages across network. The workaround is to break prunes into smaller
chunks and send over in multiple messages.
2020-11-19 16:38:01 +00:00
Trent Nelson
f2a1a0ac5c
RPC: Demote missing block error to warning
...
It frightens the tourists
2020-11-19 04:54:49 +00:00
Tyera Eulberg
3e4acba72f
Quiet notification logs when no subscriptions ( #13629 )
2020-11-17 06:37:38 +00:00
Tyera Eulberg
ef99689592
Improve TestValidator instantiation ( #13627 )
...
* Add TestValidator::new_with_fees constructor, and warning for low bootstrap_validator_lamports
* Add logging to solana-tokens integration test to help catch low bootstrap_validator_lamports in the future
* Reasonable TestValidator mint_lamports
2020-11-16 23:27:36 -07:00
behzad nouri
5e8490ab9d
packs more crds-values in a single gossip packet ( #13500 )
...
split_gossip_messages:
https://github.com/solana-labs/solana/blob/a97c04b40/core/src/cluster_info.rs#L1536-L1574
splits crds-values into chunks to fit into a gossip packet. However it is
using a global upper-bound for the header-size across all protocols:
https://github.com/solana-labs/solana/blob/a97c04b40/core/src/cluster_info.rs#L90-L93
This can be wasteful as the specific gossip protocol can have smaller
header than this upper-bound (e.g. Protocol::PushMessage is 170 bytes
smaller). Adding more crds-values in one gossip packet can avoid the
overheads of separate packets and reduce total number of bytes sent over
the wire.
This commit updates the splitting function to take a max-chunk-size
argument. At call-site, this value is set to the size of the protocol
which the values are sent over.
2020-11-15 18:23:59 +00:00
behzad nouri
cbea9ebc34
indexes nodes' contact infos in crds table ( #13553 )
...
In several places in gossip code, the entire crds table is scanned only
to filter out nodes' contact infos. Currently on mainnet, crds table is
of size ~70k, while there are only ~470 nodes. So the full table scan is
inefficient. Instead we may maintain an index of only nodes' contact
infos.
2020-11-15 16:38:04 +00:00
Michael Vines
5d72e52ad0
Disable the PubSub vote subscription by default
...
The --rpc-pubsub-enable-vote-subscription flag may be used to enable it.
The current vote subscription is problematic because it emits a
notification for *every* vote, so hundreds a second in a real cluster.
Critically it's also missing information about *who* is voting,
rendering all those notifications practically useless.
Until these two issues can be resolved, the vote subscription is not
much more than a potential DoS vector.
2020-11-14 12:36:37 -08:00
Tyera Eulberg
88ae321d3f
Add counter metrics to rpc-subscriptions ( #13596 )
2020-11-14 12:40:24 -07:00
Michael Vines
baa6b3a261
Add stable program logging for BPF and native programs
2020-11-14 08:26:01 -08:00
Tyera Eulberg
34bf80ba9c
Send pubsub metrics to metrics server ( #13584 )
2020-11-13 19:31:23 +00:00
sakridge
c1f3f9d27b
Stop searching for incorrect shred version after a minute ( #13512 )
2020-11-12 14:01:13 -08:00
behzad nouri
4e4e12b384
filters out offline nodes from pull options ( #13533 )
...
Inactive nodes are still observing incoming gossip traffic:
https://discord.com/channels/428295358100013066/670512312339398668/776140351291260968
likely because of pull-requests.
Previous related issues and commits:
https://github.com/solana-labs/solana/issues/12409
https://github.com/solana-labs/solana/pull/12620
https://github.com/solana-labs/solana/pull/12674
This commit implements same logic as
https://github.com/solana-labs/solana/pull/12674
to exclude inactive nodes from pull options, with the same periodic
retry logic for offline staked nodes in order to mitigate eclipse
attack.
2020-11-12 16:09:37 +00:00
carllin
9821a7754c
Discard pre hard fork persisted tower if hard-forking ( #13536 )
...
* Discard pre hard fork persisted tower if hard-forking
* Relax config.require_tower
* Add cluster test
* nits
* Remove unnecessary check
Co-authored-by: Ryo Onodera <ryoqun@gmail.com>
Co-authored-by: Carl Lin <carl@solana.com>
2020-11-12 23:29:04 +09:00
Ryo Onodera
89b474e192
Fix slow/stuck unstaking due to toggling in epoch ( #13501 )
...
* Fix slow/stuck unstaking due to toggling in epoch
* nits
* nits
* Add stake_program_v2 feature status check to cli
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-11-11 14:11:57 -07:00
Trent Nelson
38f15e41b5
Validator: Periodically log what we're waiting for during `--wait-for-supermajority`
2020-11-11 20:03:26 +00:00
sakridge
70c4626efe
Fix signature access ( #13491 )
2020-11-10 08:35:03 -08:00
Justin Starry
a97c04b400
Send RPC notification when account is deleted ( #13440 )
...
* Send RPC notification when account is deleted
* Remove unwrap
2020-11-10 19:48:42 +08:00
sakridge
b4cf968e14
Add back shredding broadcast stats ( #13463 )
2020-11-09 23:04:27 -08:00
sakridge
c644b05c54
Fix avx check with newest nightly compiler ( #13465 )
2020-11-09 08:04:34 -08:00
behzad nouri
73ac104df2
propagates errors out of Packet::from_data ( #13445 )
...
Packet::from_data is ignoring serialization errors:
https://github.com/solana-labs/solana/blob/d08c3232e/sdk/src/packet.rs#L42-L48
This is likely never useful as the packet will be sent over the wire
taking bandwidth but at the receiving end will either fail to
deserialize or it will be invalid.
This commit will propagate the errors out of the function to the
call-site, allowing the call-site to handle the error.
2020-11-08 15:10:03 +00:00
behzad nouri
7f4debdad5
drops older gossip packets when load shedding ( #13364 )
...
Gossip drops incoming packets when overloaded:
https://github.com/solana-labs/solana/blob/f6a73098a/core/src/cluster_info.rs#L2462-L2475
However newer packets are dropped in favor of the older ones.
This is probably not ideal as newer packets are more likely to contain
more recent data, so dropping them will keep the validator state
lagging.
2020-11-05 17:14:28 +00:00
behzad nouri
8f0796436a
shares the lock on gossip when processing prune messages ( #13339 )
...
Processing prune messages acquires an exclusive lock on gossip:
https://github.com/solana-labs/solana/blob/55b0428ff/core/src/cluster_info.rs#L1824-L1825
This can be reduced to a shared lock if active-sets are changed to use
atomic bloom filters:
https://github.com/solana-labs/solana/blob/55b0428ff/core/src/crds_gossip_push.rs#L50
2020-11-05 15:42:00 +00:00
behzad nouri
118ce47b97
measures processing time of each kind of gossip packets ( #13366 )
2020-11-05 15:34:34 +00:00
Michael Vines
8838a55a1a
Bump spl-token and spl-memo crate versions
2020-11-04 21:44:33 +00:00
behzad nouri
10fa4f45ab
uses thread-pool when handling push messages ( #13338 )
...
From runtime profiles, the majority time of solana-listen thread:
https://github.com/solana-labs/solana/blob/55b0428ff/core/src/cluster_info.rs#L2720
is spent handling push messages. The code here:
https://github.com/solana-labs/solana/blob/55b0428ff/core/src/cluster_info.rs#L2272-L2364
may utilize the idle gossip thread-pool.
2020-11-04 19:15:58 +00:00
sakridge
0d663158d0
Reduce repair_stats debug ( #13393 )
2020-11-04 10:32:48 -08:00
Tyera Eulberg
eb2560e782
Prevent block times from ever going backward
2020-10-31 21:30:42 -07:00
Tyera Eulberg
90778615f6
Use bounded timestamp-correction when feature enabled
2020-10-31 21:30:42 -07:00
sakridge
8415c22b59
Reduce debug ( #13319 )
2020-10-30 16:18:44 -07:00
Ryo Onodera
1df15d85c3
Fix tower/blockstore unsync due to external causes ( #12671 )
...
* Fix tower/blockstore unsync due to external causes
* Add and clean up long comments
* Clean up test
* Comment about warped_slot_history
* Run test_future_tower with master-only/master-slave
* Update comments about false leader condition
2020-10-30 19:31:23 +09:00
Michael Vines
df8dab9d2b
Native/builtin programs now receive an InvokeContext
2020-10-29 21:45:24 -07:00
Greg Fitzgerald
ca00197009
Upgrade tarpc and tokio ( #13293 )
2020-10-29 19:21:18 -06:00
behzad nouri
3738611f5c
adds more parallel processing to gossip packets handling ( #12988 )
2020-10-29 15:17:19 +00:00
behzad nouri
be80f6d5c5
excludes origin from prune set ( #13204 )
...
On the receiving end, prune messages are ignored if the origin points to
the node itself:
https://github.com/solana-labs/solana/blob/631f029fe/core/src/crds_gossip_push.rs#L285-L295
So to avoid sending these over the wire, the requester can exclude
origin from the prune set.
2020-10-29 12:50:58 +00:00
Jack May
c458d4b213
move Account to solana-sdk ( #13198 )
2020-10-28 22:01:07 -07:00
behzad nouri
ae91270961
implements ping-pong packets between nodes ( #12794 )
...
https://hackerone.com/reports/991106
> It’s possible to use UDP gossip protocol to amplify DDoS attacks. An attacker
> can spoof IP address in UDP packet when sending PullRequest to the node.
> There's no any validation if provided source IP address is not spoofed and
> the node can send much larger PullResponse to victim's IP. As I checked,
> PullRequest is about 290 bytes, while PullResponse is about 10 kB. It means
> that amplification is about 34x. This way an attacker can easily perform DDoS
> attack both on Solana node and third-party server.
>
> To prevent it, need for example to implement ping-pong mechanism similar as
> in Ethereum: Before accepting requests from remote client needs to validate
> his IP. Local node sends Ping packet to the remote node and it needs to reply
> with Pong packet that contains hash of matching Ping packet. Content of Ping
> packet is unpredictable. If hash from Pong packet matches, local node can
> remember IP where Ping packet was sent as correct and allow further
> communication.
>
> More info:
> https://github.com/ethereum/devp2p/blob/master/discv4.md#endpoint-proof
> https://github.com/ethereum/devp2p/blob/master/discv4.md#wire-protocol
The commit adds a PingCache, which maintains records of remote nodes
which have returned a valid response to a ping message, and on-the-fly
ping messages pending a pong response from the remote node.
When handling pull-requests, those from addresses which have not passed
the ping-pong check are filtered out, and additionally ping packets are
added for addresses which need to be (re)verified.
2020-10-28 17:03:02 +00:00
carllin
f96ab5a818
Fix log ( #13207 )
...
Co-authored-by: Carl Lin <carl@solana.com>
2020-10-27 18:56:57 -07:00
Tyera Eulberg
39686ef098
Use bank timestamp to populate Blockstore::blocktime_cf when correction active ( #13158 )
2020-10-26 19:23:45 +00:00
behzad nouri
4bfda3e766
marks pull request creation time only once per peer ( #13113 )
...
mark_pull_request_creation time requires an exclusive lock on gossip:
https://github.com/solana-labs/solana/blob/16944e218/core/src/cluster_info.rs#L1547-L1548
Current code is redundantly marking each peer once for each request.
There are at most only 2 unique peers, whereas there are hundreds of
requests per each. So the lock is acquired hundreds of time longer than
necessary.
2020-10-26 17:11:31 +00:00
Ryo Onodera
66c7a98009
Allow existence of vote on root in saved tower ( #13135 )
2020-10-26 11:08:20 +09:00
Michael Vines
a4956844bd
Update frozen_abi hashes
...
The movement of files in sdk/ caused ABI hashes to change
2020-10-24 08:37:55 -07:00
Josh
766406fd23
add precompile verification to simulate_transaction ( #13080 )
2020-10-23 20:47:51 -07:00
Ryo Onodera
0264147d42
Clean up opt conf verifier and vote state tracker ( #13081 )
...
* Clean up opt conf verifier and vote state tracker
* Update test to follow new message and some knob
* Rename
2020-10-24 10:19:12 +09:00
behzad nouri
37c8842bcb
scans crds table in parallel for finding old labels ( #13073 )
...
From runtime profiles, the majority time of ClusterInfo::handle_purge
https://github.com/solana-labs/solana/blob/0776fa05c/core/src/cluster_info.rs#L1605-L1626
is spent scanning crds table finding old labels:
https://github.com/solana-labs/solana/blob/0776fa05c/core/src/crds.rs#L175-L197
This can be done in parallel given that gossip thread-pool:
https://github.com/solana-labs/solana/blob/0776fa05c/core/src/cluster_info.rs#L1637-L1641
is idle when handle_purge is invoked:
https://github.com/solana-labs/solana/blob/0776fa05c/core/src/cluster_info.rs#L1681
2020-10-23 14:17:37 +00:00
Justin Starry
c95f6c4b83
Remove spammy invalid rpc log ( #13100 )
2020-10-23 07:05:29 +00:00
Justin Starry
8b0242a5d8
Allow nodes to advertise a different rpc address over gossip ( #13053 )
...
* Allow nodes to advertise a different rpc address over gossip
* Feedback
2020-10-22 03:31:48 +00:00
Michael Vines
959880db60
Remove unused pubkey::Pubkey imports
2020-10-21 19:08:13 -07:00
Michael Vines
17c391121a
Run `codemod --extensions rs Hash::new_rand solana_sdk: #️⃣ :new_rand`
2020-10-21 19:08:13 -07:00
Michael Vines
7bc073defe
Run `codemod --extensions rs Pubkey::new_rand solana_sdk::pubkey::new_rand`
2020-10-21 19:08:13 -07:00
Ryo Onodera
0776fa05c7
Add ledger-tool dead-slots and improve purge a lot ( #13065 )
...
* Add ledger-tool dead-slots and improve purge a lot
* Reduce batch size...
* Add --dead-slots-only and fixed purge ordering
2020-10-21 17:45:21 +00:00
Ryo Onodera
efdb560e97
Various clean-ups before assert adjustment ( #13006 )
...
* Various clean-ups before assert adjustment
* oops
2020-10-21 10:26:20 +09:00
Michael Vines
6858950f76
Remove frozen ABI modules from solana-sdk
2020-10-20 16:11:30 -07:00
Ryo Onodera
c0675968b1
Support Debug Bank ( #13017 )
2020-10-21 01:05:45 +09:00
Trent Nelson
3b3f7341fa
validator: Activate RPC before halting on slot
2020-10-20 02:09:07 +00:00
behzad nouri
75d62ca095
improves threads' utilization in processing gossip packets ( #12962 )
...
ClusterInfo::process_packets handles incoming packets in a thread_pool:
https://github.com/solana-labs/solana/blob/87311cce7/core/src/cluster_info.rs#L2118-L2134
However, profiling runtime shows that threads are not well utilized and
a lot of the processing is done sequentially.
This commit redistributes the work done in parallel. Testing on a gce
cluster shows 20%+ improvement in processing gossip packets with much
smaller variations.
2020-10-19 19:03:38 +00:00
Ryo Onodera
54517ea454
Follow up to persistent tower with tests and API cleaning ( #12350 )
...
* Follow up to persistent tower
* Ignore for now...
* Hard-code validator identities for easy reasoning
* Add a test for opt. conf violation without tower
* Fix compile with rust < 1.47
* Remove unused method
* More move of assert tweak to the asser pr
* Add comments
* Clean up
* Clean the test addressing various review comments
* Clean up a bit
2020-10-19 16:37:03 +09:00
Ryo Onodera
fd8ec27fe8
Another some tower logging improvements ( #12940 )
2020-10-16 14:44:07 +09:00
behzad nouri
48283161c3
passes through feature-set to gossip requests handling ( #12878 )
...
* passes through feature-set to down to gossip requests handling
* takes the feature-set from root_bank instead of working_bank
2020-10-15 20:54:21 +00:00
Tyera Eulberg
d008dfb7ad
Bump spl-memo and spl-token versions ( #12917 )
2020-10-15 18:23:41 +00:00
behzad nouri
05cf15a382
implements DataBudget using atomics ( #12856 )
2020-10-15 11:33:58 +00:00
Ryo Onodera
a44e4d386f
Better tower logs for SwitchForkDecision and etc ( #12875 )
...
* Better tower logs for SwitchForkDecision and etc
* nits
* Update comment
2020-10-15 18:30:33 +09:00
Trent Nelson
c26512255d
RPC: Add metrics for TX encoding
2020-10-14 12:24:11 -06:00
sakridge
1f1eb9f26e
Add separate push queue to reduce push lock contention ( #12713 )
2020-10-13 18:10:25 -07:00
Michael Vines
247228ee61
Implementation-defined RPC server errors are now accessible to client/ users
2020-10-13 10:05:44 -07:00
Michael Vines
649fe6d3b6
get_vote_accounts: access HashMap directly instead of turning it into an iterator
2020-10-13 04:12:10 +00:00
Michael Vines
8a119c1483
Bump reqwest/rayon to get past `cargo audit`
2020-10-11 18:51:09 +00:00
Michael Vines
c5c8da1ac0
Expose all rewards (fees, rent, voting and staking) in RPC getConfirmedBlock and the cli
2020-10-09 21:54:13 -07:00
Ryo Onodera
1f4bcf70b0
Fix various ledger-tool error due to no builtins ( #12759 )
...
* Fix various ledger-tool error due to no builtins
* Add missing file...
2020-10-09 12:19:36 -06:00
carllin
c879e7c1ad
Fix fee mismatch on snapshot deserialize ( #12697 )
...
Co-authored-by: Carl Lin <carl@solana.com>
2020-10-08 23:44:41 -07:00
Dan Albert
2c5f83c264
Add new internal accounts ( #12740 )
...
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-10-09 00:48:32 +00:00
Josh
8f5431551e
Store program logs in blockstore / bigtable (TransactionWithStatusMeta) ( #12678 )
...
* introduce store program logs in blockstore / bigtable
* fix test, transaction logs created for successful transactions
* fix test for legacy bincode implementation around log_messages
* only api nodes should record logs
* truncate transaction logs to 100KB
* refactor log truncate for improved coverage
2020-10-08 12:06:15 -07:00
Michael Vines
11df2e2236
Bump version to v1.5.0
2020-10-08 04:51:36 +00:00
behzad nouri
b5faa11f73
removes invalid/outdated pending push messages early ( #12555 )
...
In CrdsGossipPush::new_push_messages:
https://github.com/solana-labs/solana/blob/972619edb/core/src/crds_gossip_push.rs#L211-L228
we already have paid the cost of looking-up the label in crds table and
checking the hash value and wallclock only to find out that in some
cases the value is invalid or is outdated. So might as well remove the
value here rather than wait for the next call to
purge_old_pending_push_messages:
https://github.com/solana-labs/solana/blob/972619edb/core/src/crds_gossip_push.rs#L372
2020-10-07 18:29:20 +00:00
Jack May
41ad3dd8f0
Remove skip-no-mangle entirely ( #12696 )
2020-10-07 09:13:48 -07:00
Trent Nelson
e35889542b
RPC: Support base64 encoded transactions
...
Defaults to base58
2020-10-06 22:41:06 -06:00
Trent Nelson
7f67d36777
RPC: Check encoded transaction size before decoding
2020-10-06 22:41:06 -06:00
behzad nouri
a5c6a78f6d
filters out inactive nodes from push options ( #12674 )
...
* filters out inactive nodes from push options
https://github.com/solana-labs/solana/pull/12620
patched the DDOS issue with nodes which go offline:
https://github.com/solana-labs/solana/issues/12409
However, offline nodes still see (much lesser) traffic spike, likely
because no origins are pruned from their bloom filter in active set:
https://github.com/solana-labs/solana/blob/aaf3790d8/core/src/crds_gossip_push.rs#L276-L286
and so multiple nodes push redundant duplicate messages to them
simultaneously:
https://github.com/solana-labs/solana/blob/aaf3790d8/core/src/crds_gossip_push.rs#L254-L255
This commit will filter out inactive peers from potential push targets
entirely. To mitigate eclipse attacks, staked nodes are retried
periodically.
* uses current timestamp in test/crds_gossip
2020-10-06 13:48:32 +00:00
Ryo Onodera
026e7de819
Show commit in `--version` and ledger-tool's log ( #12636 )
...
* Show commit in `--version` and ledger-tool's log
* Another handy hidden env var
* Fix test
* Rename to semver!
* Fix syntax error...
2020-10-04 00:30:26 +09:00
sakridge
71c469c72b
Weight push peers by how long we haven't pushed to them ( #12620 )
2020-10-02 13:57:26 -07:00
behzad nouri
2c669f65f1
limits number of threads in core/tests/crds_gossip.rs ( #12615 )
...
crds_gossip tests start large networks, which with large thread-pools
will exhaust system resources, causing failures in ci tests:
https://buildkite.com/solana-labs/solana/builds/31953
The commit limits size of thread-pools in the test.
2020-10-02 16:55:44 +00:00
Michael Vines
75b621160e
Add GetConfirmedBlocksWithLimit RPC method
2020-10-01 22:56:17 -07:00
Michael Vines
f41a73d76a
Expose validator cli arguments for pubsub buffer tuning
2020-10-01 20:30:40 -07:00
behzad nouri
1866521df6
retains hash value of outdated responses received from pull requests ( #12513 )
...
pull_response_fail_inserts has been increasing:
https://cdn.discordapp.com/attachments/478692221441409024/759096187587657778/pull_response_fail_insert.png
but for outdated values which fail to insert:
https://github.com/solana-labs/solana/blob/a5c3fc14b3/core/src/crds_gossip_pull.rs#L332-L344
https://github.com/solana-labs/solana/blob/a5c3fc14b3/core/src/crds.rs#L104-L108
are not recorded anywhere, and so the next pull request may obtain the
same redundant payload again, unnecessary taking bandwidth.
This commit holds on to the hashes of failed-inserts for a while, similar
to purged_values:
https://github.com/solana-labs/solana/blob/a5c3fc14b3/core/src/crds_gossip_pull.rs#L380
and filter them out for the next pull request:
https://github.com/solana-labs/solana/blob/a5c3fc14b3/core/src/crds_gossip_pull.rs#L204
2020-10-01 00:39:22 +00:00
Tyera Eulberg
c31a34fbcb
Include post balance information for rewards ( #12598 )
...
* Include post balance information for rewards
* Add post-balance to stored Reward struct
* Handle extended Reward in bigtable
Co-authored-by: Michael Vines <mvines@gmail.com>
2020-09-30 17:57:06 -06:00
Trent Nelson
3c7b9c2938
Move remaining nonce utils from runtime to SDK
2020-09-30 05:45:42 +00:00
behzad nouri
537bbde22e
builds crds filters in parallel ( #12360 )
...
Based on run-time profiles, the majority time of new_pull_requests is
spent building bloom filters, in hashing and bit-vec ops.
This commit builds crds filters in parallel using rayon constructs. The
added benchmark shows ~5x speedup (4-core machine, 8 threads).
2020-09-29 23:06:02 +00:00
Tyera Eulberg
96a7d4dbd8
Query BigTable for block time if does not exist in blockstore ( #12560 )
2020-09-29 21:39:36 +00:00
sakridge
ce98088457
Track inserted repair shreds ( #12455 )
2020-09-29 14:13:21 -07:00
Justin Starry
36d55c0667
Increase rpc pubsub max payload to unblock large account notifications ( #12548 )
2020-09-30 00:09:39 +08:00
behzad nouri
0d5258b6d3
separates out ClusterInfo::{gossip,listen} thread-pools ( #12535 )
...
https://github.com/solana-labs/solana/pull/12402
moved gossip-work threads:
https://github.com/solana-labs/solana/blob/afd9bfc45/core/src/cluster_info.rs#L2330-L2334
to ClusterInfo::new as a new field in the ClusterInfo struct:
https://github.com/solana-labs/solana/blob/35208c5ee/core/src/cluster_info.rs#L249
So that they can be shared between listen and gossip threads:
https://github.com/solana-labs/solana/blob/afd9bfc45/core/src/gossip_service.rs#L54-L67
However, in testing https://github.com/solana-labs/solana/pull/12360
it turned out this will cause breakage:
https://buildkite.com/solana-labs/solana/builds/31646
https://buildkite.com/solana-labs/solana/builds/31651
https://buildkite.com/solana-labs/solana/builds/31655
Whereas with separate thread pools all is good. It might be the case
that one thread is slowing down the other by exhausting the thread-pool
whereas with separate thread-pools we get fair scheduling guarantees
from the os.
This commit reverts https://github.com/solana-labs/solana/pull/12402
and instead adds separate thread-pools for listen and gossip threads:
https://github.com/solana-labs/solana/blob/afd9bfc45/core/src/gossip_service.rs#L54-L67
2020-09-29 09:05:31 +00:00
behzad nouri
57ed4e4657
patches bug in Crds::find_old_labels with pubkey specific timeout ( #12528 )
...
Current code only returns values which are expired based on the default
timeout. Example from the added unit test:
- value inserted at time 0
- pubkey specific timeout = 1
- default timeout = 3
Then at now = 2, the value is expired, but the function fails to return
the value because it compares with the default timeout.
2020-09-29 09:04:40 +00:00
Tyera Eulberg
89621adca7
Rpc -> proper optimistic confirmation ( #12514 )
...
* Add service to track the most recent optimistically confirmed bank
* Plumb service into ClusterInfoVoteListener and ReplayStage
* Clean up test
* Use OptimisticallyConfirmedBank in RPC
* Remove superfluous notifications from RpcSubscriptions
* Use crossbeam to avoid mpsc recv_timeout panic
* Review comments
* Remove superfluous last_checked_slots, but pass in OptimisticallyConfirmedBank for complete correctness
2020-09-28 20:43:05 -06:00
carllin
06f84c65f1
Fix rooted accounts cleanup, simplify locking ( #12194 )
...
Co-authored-by: Carl Lin <carl@solana.com>
2020-09-28 16:04:46 -07:00
behzad nouri
c94fe9236f
purges old pending push messages more efficiently ( #12522 )
2020-09-28 21:59:59 +00:00
Michael Vines
31696a1d72
Port BPFLoader2 activation to FeatureSet and rework built-in program activation
2020-09-28 12:50:19 -07:00
sakridge
6583c8cffe
Add precompile verification to preflight ( #12486 )
2020-09-27 22:29:00 -07:00
Trent Nelson
1014781b87
Bump jsonrpc-* to 15.0.0
2020-09-25 19:30:47 +00:00
Michael Vines
7526bb96f3
Make test_process_rest_api less fragile
2020-09-25 11:40:36 -07:00
Michael Vines
c10da16d7b
Port instructions sysvar and secp256k1 program activation to FeatureSet
2020-09-25 11:40:36 -07:00
Michael Vines
35f5f9fc7b
Add feature set identifier to gossiped version information
2020-09-25 11:40:36 -07:00
Josh
1d04c1db94
introduce RpcPerfSample and modify getPerformanceSamples output ( #12434 )
...
* introduce RpcPerfSample and modify getPerformanceSamples output
* camelCase test results
2020-09-24 14:22:22 -07:00
behzad nouri
42f1ef8acb
moves gossip-work thread pool cons to ClusterInfo::new ( #12402 )
2020-09-24 18:36:31 +00:00
Justin Starry
6601ec8f26
Record and store invoked instructions in transaction meta ( #12311 )
...
* Record invoked instructions and store in transaction meta
* Enable cpi recording if transaction sender is some
* Rename invoked to innerInstructions
2020-09-24 22:36:22 +08:00
Justin Starry
731a943239
Remove transaction encoding from storage layer ( #12404 )
2020-09-24 13:10:29 +08:00
sakridge
68e5a2ef56
Add RPC notify and banking keys debug ( #12396 )
2020-09-23 18:46:42 -07:00
Tyera Eulberg
e1a212fb79
Bump spl-token ( #12395 )
2020-09-22 17:08:54 -06:00
Josh
65a6bfad09
Add blockstore column to store performance sampling data ( #12251 )
...
* Add blockstore column to store performance sampling data
* introduce timer and write performance metrics to blockstore
* introduce getRecentPerformanceSamples rpc
* only run on rpc nodes enabled with transaction history
* add unit tests for get_recent_performance_samples
* remove RpcResponse from rpc call
* refactor to use Instant::now and elapsed for timer
* switch to root bank and ensure not negative subraction
* Add PerfSamples to purge/compaction
* refactor to use Instant::now and elapsed for timer
* switch to root bank and ensure not negative subraction
* remove duplicate constants
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-09-22 12:26:32 -07:00
Michael Vines
208dd1de3a
Move TestValidator into its own module
2020-09-19 08:35:26 -07:00
Michael Vines
1a03afccb1
validator/ cleanup
2020-09-19 08:35:26 -07:00
Ryo Onodera
cb8661bd49
Persistent tower ( #10718 )
...
* Save/restore Tower
* Avoid unwrap()
* Rebase cleanups
* Forcibly pass test
* Correct reconcilation of votes after validator resume
* d b g
* Add more tests
* fsync and fix test
* Add test
* Fix fmt
* Debug
* Fix tests...
* save
* Clarify error message and code cleaning around it
* Move most of code out of tower save hot codepath
* Proper comment for the lack of fsync on tower
* Clean up
* Clean up
* Simpler type alias
* Manage tower-restored ancestor slots without banks
* Add comment
* Extract long code blocks...
* Add comment
* Simplify returned tuple...
* Tweak too aggresive log
* Fix typo...
* Add test
* Update comment
* Improve test to require non-empty stray restored slots
* Measure tower save and dump all tower contents
* Log adjust and add threshold related assertions
* cleanup adjust
* Properly lower stray restored slots priority...
* Rust fmt
* Fix test....
* Clarify comments a bit and add TowerError::TooNew
* Further clean-up arround TowerError
* Truly create ancestors by excluding last vote slot
* Add comment for stray_restored_slots
* Add comment for stray_restored_slots
* Use BTreeSet
* Consider root_slot into post-replay adjustment
* Tweak logging
* Add test for stray_restored_ancestors
* Reorder some code
* Better names for unit tests
* Add frozen_abi to SavedTower
* Fold long lines
* Tweak stray ancestors and too old slot history
* Re-adjust error conditon of too old slot history
* Test normal ancestors is checked before stray ones
* Fix conflict, update tests, adjust behavior a bit
* Fix test
* Address review comments
* Last touch!
* Immediately after creating cleaning pr
* Revert stray slots
* Revert comment...
* Report error as metrics
* Revert not to panic! and ignore unfixable test...
* Normalize lockouts.root_slot more strictly
* Add comments for panic! and more assertions
* Proper initialize root without vote account
* Clarify code and comments based on review feedback
* Fix rebase
* Further simplify based on assured tower root
* Reorder code for more readability
Co-authored-by: Michael Vines <mvines@gmail.com>
2020-09-19 14:03:54 +09:00
Michael Vines
c4913e3c9e
SendTransactionServices now exit their thread on channel drop instead of by a flag
2020-09-18 17:29:10 +00:00
Michael Vines
75c3690ccd
Give the duplicate send_transaction_service a different thread name
2020-09-18 17:29:10 +00:00
behzad nouri
9b866d79fb
shards crds values based on their hash prefix ( #12187 )
...
filter_crds_values checks every crds filter against every hash value:
https://github.com/solana-labs/solana/blob/ee646aa7/core/src/crds_gossip_pull.rs#L432
which can be inefficient if the filter's bit-mask only matches small
portion of the entire crds table.
This commit shards crds values into separate tables based on shard_bits
first bits of their hash prefix. Given a (mask, mask_bits) filter,
filtering crds can be done by inspecting only relevant shards.
If CrdsFilter.mask_bits <= shard_bits, then precisely only the crds
values which match (mask, mask_bits) bit pattern are traversed.
If CrdsFilter.mask_bits > shard_bits, then approximately only
1/2^shard_bits of crds values are inspected.
Benchmarking on a gce cluster of 20 nodes, I see ~10% improvement in
generate_pull_responses metric, but with larger clusters, crds table and
2^mask_bits are both larger, so the impact should be more significant.
2020-09-17 14:05:16 +00:00
Trent Nelson
32dcce0ac1
RPC: Limit request payload size to 50kB
2020-09-16 20:21:59 +00:00
Justin Starry
f6cda2579f
Fix off-by-one max payload checks
2020-09-16 12:46:06 -07:00
Michael Vines
c6eea94edc
Remove stale comment
2020-09-16 08:42:26 -07:00
Michael Vines
749208fa32
RPC sendTransaction now returns transaction logs on simulation failure
2020-09-16 08:42:26 -07:00
sakridge
3930cb865a
Add keccak-secp256k1 instruction ( #11839 )
...
* Implement keccak-secp256k1 instruction
Verifies eth addreses with ecrecover function
* Move secp256k1 test
2020-09-15 18:23:21 -07:00
Michael Vines
daae638781
Add --gossip-validator argument
2020-09-14 20:18:27 -07:00
behzad nouri
d6ec03f13c
patches default impl for crds filter ( #12199 )
...
In CrdsFilter.mask all bits after mask_bits are set to 1:
https://github.com/solana-labs/solana/blob/555252f4/core/src/crds_gossip_pull.rs#L65
However the default implementation, sets both mask and mask_bits to zero
which is inconsistent with CrdsFilter::compute_mask for a mask_bits of
zero.
This commit changes the default implementation by setting mask to
`!0u64` (i.e all bits set to one). As a result, for the default crds
filter, `test_mask` will always return true, whereas previously it was
always returning false.
https://github.com/solana-labs/solana/blob/555252f4/core/src/crds_gossip_pull.rs#L85
This is only used in tests and benchmarks, but causes some benchmarks to
be misleading by short circuiting in this line:
https://github.com/solana-labs/solana/blob/555252f4/core/src/crds_gossip_pull.rs#L429
2020-09-13 13:08:25 +00:00
Ryo Onodera
de4a613610
Check bank capitalization ( #11927 )
...
* Check bank capitalization
* Simplify and unify capitalization calculation
* Improve and add tests
* Avoid overflow and inhibit automatic restart
* Fix test
* Tweak checked sum for cap. and add tests
* Fix broken build after merge conflicts..
* Rename to ClusterType
* Rename confusing method
* Clarify comment
* Verify cap. in rent and inflation tests
Co-authored-by: Stephen Akridge <sakridge@gmail.com>
2020-09-12 01:48:06 +09:00
carllin
9c490e06b0
Fix propagation on startup from snapshot ( #12177 )
2020-09-11 02:03:11 -07:00
Michael Vines
6f325d4594
`solana-validator --rpc-bind-address` argument now works as expected
2020-09-10 13:36:13 -07:00
Michael Vines
10ce839ec0
Speed up `bigtable transaction-history` command
2020-09-10 05:22:10 +00:00
Tyera Eulberg
4431080066
Program subscriptions now properly check results len and token program id ( #12139 )
2020-09-09 21:07:29 +00:00
Tyera Eulberg
05db41fe9c
Cache block time in Blockstore ( #11955 )
...
* Add blockstore column to cache block times
* Add method to cache block time
* Add service to cache block time
* Update rpc getBlockTime to use new method, and refactor blockstore slightly
* Return block_time with confirmed block, if available
* Add measure and warning to cache-block-time
2020-09-09 09:33:14 -06:00
behzad nouri
28f2fa3fd5
uses rust intrinsics to convert hashes to u64 ( #12097 )
2020-09-09 15:28:17 +00:00
Michael Vines
9e96180ce4
getMinimumBalanceForRentExemption now only responds to valid account lengths
2020-09-08 17:48:09 +00:00
Ryo Onodera
53b8ea4464
Rename to ClusterType and restore devnet compat. ( #12068 )
...
* Rename to ClusterType and restore devnet compat.
* De-duplicate parse code and add comments
* Adjust default Devnet genesis & reduce it in tests
2020-09-08 23:55:09 +09:00
anatoly yakovenko
c67f8bd821
Forward transactions to the expected leader instead of your own TPU port ( #12004 )
...
* Use PoHRecorder to send to the right leader
* cleanup
* fmt
* clippy
* Cleanup, fix bug
Co-authored-by: Carl <carl@solana.com>
2020-09-08 17:00:49 +08:00
Justin Starry
9940870c89
Fix RPC transaction method configs serialization ( #12100 )
2020-09-08 13:08:09 +08:00
Justin Starry
369d376d10
Fix signaure subscription panic ( #12077 )
2020-09-06 14:33:12 +08:00
Ryo Onodera
eabc63cdcd
Fix bad predicate with malformed gossip votes ( #12072 )
2020-09-06 13:27:50 +09:00
Michael Vines
b64fb295a1
Add LARGEST_CONFIRMED_ROOT_UPLOAD_DELAY
2020-09-04 16:01:49 -07:00
Michael Vines
4ba43c29ce
Request correct access
2020-09-04 16:01:49 -07:00
Michael Vines
d3611f74c8
Add exit flag for bigtable upload operations
2020-09-04 16:01:49 -07:00
Michael Vines
bafdcf24f5
Add BigTableUploadService
2020-09-04 16:01:49 -07:00
Michael Vines
bc7731b969
Add BigTableUploadService
2020-09-04 16:01:49 -07:00
Michael Vines
d8e2038dda
Add --enable-bigtable-ledger-upload flag
2020-09-04 16:01:49 -07:00
behzad nouri
114c211b66
adds new CrdsFilterSet type for Vec<CrdsFilter> ( #12029 )
2020-09-04 13:04:47 +00:00
Tyera Eulberg
39246f9dd7
Revert signature-notification format change ( #12032 )
...
* Use untagged RpcSignatureResult enum to avoid breaking downstream consumers of current signature subscriptions
* Clean up client duplication
* Clippy
2020-09-03 18:14:45 -06:00
Greg Fitzgerald
2c091e4fca
Mark a withdraw authority as non-circulating ( #12033 )
2020-09-03 23:45:49 +00:00
behzad nouri
bc7adb97ed
builds crds filters without looping over filters ( #11998 )
2020-09-03 20:32:23 +00:00
Tyera Eulberg
90fad36613
Use new_response for consistency
2020-09-03 12:02:26 -06:00
Tyera Eulberg
b22de369b7
Rpc: add getMultipleAccounts endpoint ( #12005 )
...
* Add rpc endpoint to return the state of multiple accounts from the same bank
* Add docs
* Review comments: Dedupe account code, default to base64, add max const
* Add get_multiple_accounts to rpc-client
2020-09-03 11:35:06 -06:00
carllin
3f39ab1e04
Fix forwarding calculation ( #12014 )
...
Co-authored-by: Carl <carl@solana.com>
2020-09-03 02:31:28 -07:00
carllin
1c1a3f979d
Detect and notify when deserializable shreds are available ( #11816 )
...
* Add logic to check for complete data ranges
* Add RPC signature notification
Co-authored-by: Carl <carl@solana.com>
2020-09-01 22:06:06 -07:00
Michael Vines
7341e60043
Ensure that the spl-token 2 native mint account is owned by the spl-token 2 program.
...
Workaround for https://github.com/solana-labs/solana-program-library/issues/374 until spl-token 3 is shipped
2020-09-01 17:09:36 +00:00
carllin
7641b60a2b
Remove log ( #11949 )
...
Co-authored-by: Carl <carl@solana.com>
2020-08-31 16:40:22 -07:00
Tyera Eulberg
60c7ac6f95
Fix get_parsed_token_accounts ( #11907 )
2020-08-29 12:38:27 -06:00
Tyera Eulberg
befd99edac
Bump spl-token version
2020-08-29 03:20:38 -06:00
Tyera Eulberg
2eff9a19c3
Update to token pack/unpack changes ( #11900 )
2020-08-28 22:06:30 -06:00
sakridge
c4253dc0f9
Update to rayon 1.4.0 ( #11898 )
2020-08-28 21:00:11 -07:00
Tyera Eulberg
76be36c9ce
Update spl-token to v2.0 ( #11884 )
...
* Update account-decoder to spl-token v2.0
* Update transaction-status to spl-token v2.0
* Update rpc to spl-token v2.0
* Update getTokenSupply to pull from Mint directly
* Fixup to spl-token v2.0.1
2020-08-28 15:54:57 -06:00
Ryo Onodera
d8c529a9b8
Small cleaning around consensus/bank_forks ( #11873 )
2020-08-28 08:56:53 +09:00
Tyera Eulberg
5c7d743883
Timestamp first vote ( #11856 )
2020-08-26 18:34:02 +00:00
Tyera Eulberg
1988ee9cd6
Rpc: Filter accounts with invalid mints from get_parsed_token_accounts ( #11844 )
...
* Filter out accounts with invalid mints from get_parsed_token_accounts
* Explicit docs
2020-08-26 11:39:42 -06:00
Michael Vines
a1e2357d12
`solana-gossip spy` can now be given an identity keypair (`--identity` argument)
2020-08-22 17:00:50 -07:00
Michael Vines
b660704faa
Allow the sendTransaction preflight commitment level to be configured
2020-08-22 08:19:50 -07:00
behzad nouri
418b483af6
Fix filter_crds_values output alignment with the inputs ( #11734 )
2020-08-21 12:32:37 -07:00
Michael Vines
247f27af37
Submit a vote timestamp every vote ( #10630 )
...
* Submit a timestamp for every vote
* Submit at most one vote timestamp per second
* Submit a timestamp for every new vote
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-08-21 11:10:51 -06:00
carllin
c8d67aa8eb
Add option for repairing only from trusted validators ( #11752 )
...
Co-authored-by: Carl <carl@solana.com>
2020-08-21 00:35:11 -07:00
Tyera Eulberg
747f8d5877
Rpc: Return error if block does not exist ( #11743 )
...
* Return error if block does not exist
* Update docs
2020-08-20 15:05:30 -06:00
Tyera Eulberg
2fd2aceeb2
Bump spl-token to clean up magic number ( #11726 )
2020-08-20 09:51:12 -06:00
carllin
b7ed06b17a
Cleanup test utilities ( #11723 )
...
* Add voting utility
* Add blockstore utility
Co-authored-by: Carl <carl@solana.com>
2020-08-20 05:04:38 +00:00
carllin
5f8d34feb3
Skip grace blocks if previous leader was on different fork ( #11679 )
...
* Start leader blocks if previous leader was on different fork
* Fix test
Co-authored-by: Carl <carl@solana.com>
2020-08-19 08:16:24 +00:00
carllin
0f0a2ddafe
Filter push/pulls from spies ( #11620 )
...
* Filter push/pulls from spies
* Don't pull from peers with shred version == 0, don't push to people with shred_version == 0
Co-authored-by: Carl <carl@solana.com>
2020-08-18 18:52:45 -07:00
Michael Vines
d15173ad9d
Address latest nightly clippy lints, but globally disable stable_sort_primitive
2020-08-17 22:36:10 -07:00
Michael Vines
adc984a225
Rename Binary64 to Base64. Establish Base58 encoding
2020-08-17 17:26:29 -07:00
Michael Vines
757e147b3b
Rework UiAccountData encode/decode such that it works from Rust
2020-08-17 17:26:29 -07:00
Ryo Onodera
23fa84b322
Re-do rent collection check on rent-exempt account ( #11349 )
...
* wip: re-do rent collection check on rent-exempt account
* Let's see how the ci goes
* Restore previous code
* Well, almost all new changes are revertable
* Update doc
* Add test and gating
* Fix tests
* Fix tests, especially avoid to change abi...
* Fix more tests...
* Fix snapshot restore
* Align to _new_ with better uninitialized detection
2020-08-17 14:22:16 +09:00
Tyera Eulberg
6c5b8f324a
Rpc: Add until parameter for getConfirmedSignaturesForAddress2 ( #11644 )
...
* Refactor bigtable apis to accept start and end keys
* Make helper fn to deserialize cell data
* Refactor get_confirmed_signatures_for_address to use get_row_data range
* Add until param to get_confirmed_signatures_for_address
* Add until param to blockstore api
* Plumb until through client/cli
* Simplify client params
2020-08-15 10:42:17 -06:00
Jack May
7c736f71fe
Make BPF Loader static ( #11516 )
2020-08-14 12:32:45 -07:00
Tyera Eulberg
4da1e9833c
Ensure highest_confirmed_root only grows ( #11596 )
...
* Split out commitment-cache update for unit testing
* Add failing test
* Ensure highest_confirmed_root only grows
2020-08-13 00:59:44 -06:00
sakridge
f519fdecc2
generate_pull_response optimization ( #11597 )
2020-08-12 22:45:19 -07:00
Greg Fitzgerald
574c356863
Add CommitmentSlots::new_from_slot() ( #11600 )
2020-08-13 03:51:15 +00:00
Tyera Eulberg
b1e452f876
Return blockstore signatures-for-address despite bigtable error ( #11594 )
2020-08-12 17:57:05 -06:00
sakridge
54137e3446
Add incoming pull response counter ( #11591 )
2020-08-12 14:07:05 -07:00
carllin
473b5249e3
Fix assertion failure ( #11572 )
...
Co-authored-by: Carl <carl@solana.com>
2020-08-12 12:10:24 -07:00
Jack May
9290e561e1
Align host addresses ( #11384 )
...
* Align host addresses
* support new program abi
* update epoch rollout
* Enforce aligned pointers in cross-program invocations
2020-08-11 16:11:52 -07:00
carllin
1b238dd63e
Gossip log ( #11555 )
...
Co-authored-by: Carl <carl@solana.com>
2020-08-11 21:03:54 +00:00
carllin
7ef50a9352
Move cluster slots update to separate thread ( #11523 )
...
* Add cluster_slots_service
Co-authored-by: Carl <carl@solana.com>
2020-08-11 12:48:13 -07:00
Ryo Onodera
2910fd467f
Fix rust fmt ( #11537 )
2020-08-11 22:53:55 +09:00
anatoly yakovenko
713851b68d
filter out old gossip pull requests ( #11448 )
...
* init
* builds
* stats
* revert
* tests
* clippy
* add some jitter
* shorter jitter timer
* update
* fixup! update
* use saturating_sub
* fix filters
2020-08-11 06:26:42 -07:00
dependabot[bot]
191a2eb088
chore: bump indexmap from 1.4.0 to 1.5.1
...
Bumps [indexmap](https://github.com/bluss/indexmap ) from 1.4.0 to 1.5.1.
- [Release notes](https://github.com/bluss/indexmap/releases )
- [Commits](https://github.com/bluss/indexmap/compare/1.4.0...1.5.1 )
Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 22:49:55 -07:00
Tyera Eulberg
88ca04dbdb
Add config param to specify offset/length for single and program account info ( #11515 )
...
* Add config param to specify dataSlice for account info and program accounts
* Use match instead of if
2020-08-10 22:35:29 +00:00
Tyera Eulberg
da210ddd51
Fix parsing of spl-token Mint ( #11512 )
...
* Add failing test
* Fix jsonParsed mint
2020-08-10 20:35:36 +00:00
Tyera Eulberg
a9f76862fb
Decode native-program and sysvar accounts ( #11463 )
...
* Pass pubkey in to account-decoder for sysvars
* Decode sysvar accounts
* Decode config accounts; move validator-info lower
* Decode stake accounts
* Review comments
* Stringify any account lamports and epochs that can be set to u64::MAX
2020-08-09 07:50:45 +00:00
sakridge
068d23f298
Add Binary64 option for account data ( #11474 )
...
* Add Binary64 option for account data
* Decode into binary64
* Reword docs
2020-08-08 22:40:13 -07:00
Greg Fitzgerald
edadd5d6d5
Remove Budget from CLI ( #11451 )
...
* Remove support for Budget
Also:
* Make "pay" command a deprecated alias for the "transfer" command
* chore: remove budget from web3.js
* Drop Budget depedency from core
Validators no longer ship with builtin Budget
2020-08-07 16:01:51 -06:00
carllin
7e25130529
Send votes from banking stage to vote listener ( #11434 )
...
* Send votes from banking stage to vote listener
Co-authored-by: Carl <carl@solana.com>
2020-08-07 11:21:35 -07:00
Tyera Eulberg
b7c2681903
Token Accounts: return ui_amount, decimals with decoded account ( #11407 )
...
* Return ui_amount, decimals from token client methods
* Return ui_amount, decimals in RPC jsonParsed token accounts
* Fixup docs
* Return ui_amount, decimals in pubsub jsonParsed token accounts
* Remove unnecessary duplicate struct
* StringAmount rename
2020-08-07 11:37:39 -06:00
Greg Fitzgerald
bad486823c
Add a client for BankForks ( #10728 )
...
Also:
* Use BanksClient in solana-tokens
2020-08-07 08:45:17 -06:00
Greg Fitzgerald
3fdd8ffdf0
Remove circular dep between InstructionError and SystemError ( #11427 )
2020-08-06 22:04:43 +00:00
Michael Vines
4222932e08
Plug getConfirmedSignaturesForAddress2 into bigtable storage
2020-08-05 23:04:16 -07:00
Michael Vines
02c0981ecf
Rename startAfter to before
2020-08-05 14:33:14 -07:00
Michael Vines
087fd32ce3
Reimplement transaction-history command with getConfirmedSignaturesForAddress2
2020-08-05 14:33:14 -07:00
Michael Vines
1b2276520b
Add getConfirmedSignaturesForAddress2 RPC method
2020-08-05 14:33:14 -07:00
Michael Vines
dfae9a9864
Plumb Bigtable ledger storage into the RPC subsystem
2020-08-05 14:27:12 -07:00
Michael Vines
0e02740565
Setup a tokio 0.2 runtime for RPC usage
2020-08-05 14:27:12 -07:00
Michael Vines
b876fb84ba
Make room for tokio 0.2
2020-08-05 14:27:12 -07:00
Trent Nelson
e12ab9d0dd
Bump version to 1.4.0
2020-08-05 12:04:15 -06:00
Tyera Eulberg
86e3f96f16
Return token amounts as floats ( #11370 )
...
* Return token amounts as floats
* Floating-point equality
* Return float and raw token amounts
* Fix decimals and token rpcs for native-mint tokens
* Fixup docs and review comments
2020-08-05 06:48:09 +00:00
Trent Nelson
14339dec0a
Harden RPC preflight test inputs
2020-08-05 06:06:57 +00:00
Trent Nelson
e25846e1ad
Add failing test for unsane tx in RPC preflight
2020-08-05 06:06:57 +00:00
Tyera Eulberg
d0144ce382
Fix token rpc-client methods ( #11361 )
...
* Convert None to error in parse_keyed_accounts
* Allow encoding configuration in getTokenAccounts methods
2020-08-04 11:11:30 -06:00
carllin
5b4cb083f1
Add integration test for optimistic confirmation failure detection ( #11353 )
...
* Add optimistic conf failure test
* Add check for optimistic failure log
Co-authored-by: Carl <carl@solana.com>
2020-08-03 20:01:52 -07:00
Michael Vines
1d40685b8e
Remove support for 1.1.0 version snapshots
2020-08-04 01:01:50 +00:00
Michael Vines
eefcf484cb
clippy
2020-08-03 18:35:15 +00:00
Tyera Eulberg
0bc9bcc8b9
Fix bad rebase
2020-08-02 12:09:06 -06:00
Tyera Eulberg
d1b2e6cdf2
Add getTokenLargestAccounts endpoint ( #11322 )
2020-08-02 10:23:44 -06:00
Michael Vines
ffbd859c42
Update spl-token and spl-memo
2020-08-02 07:53:42 -07:00
Tyera Eulberg
9bcfc51df1
Add token rpc endpoints to rpc-client ( #11315 )
2020-07-31 20:53:49 +00:00
carllin
d7e961dac4
Enable new fork choice on mainnet, 400_000 slots into epoch 61 ( #11312 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-31 20:37:58 +00:00
Greg Fitzgerald
61d9d219f9
Withdraw authority no longer implies a custodian ( #11302 )
...
* Withdraw authority no longer implies a custodian
Before this change, if the withdraw authority and custodian had
the same public key, then a withdraw authority signature would
imply a custodian signature and lockup would be not be enforced.
After this change, the client's withdraw instruction must
explictly reference a custodian account in its optional sixth
account argument.
Likewise, the fee-payer no longer implies either a withdraw
authority or custodian.
* Fix test
The test was configuring the stake account with the fee-payer as
the withdraw authority, but then passing in a different key to
the withdraw instruction's withdraw authority parameter. It only
worked because the second transaction was signed by the fee-payer.
2020-07-31 13:37:53 -06:00
Michael Vines
c78e12a262
Avoid spl-sdk dependency, which inhibits crate publishing
2020-07-30 23:47:26 +00:00
Greg Fitzgerald
1d2426ddbc
Move simulate_transaction from rpc to bank ( #11294 )
2020-07-30 19:15:45 +00:00
carllin
a23e1129a9
Switch to optimistic conf for notifying gossip subscribers ( #11289 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-30 02:52:27 -07:00
carllin
bf18524368
Add hook for getting vote transactions on replay ( #11264 )
...
* Add hook for getting vote transactions on replay
Co-authored-by: Carl <carl@solana.com>
2020-07-29 23:17:40 -07:00
Trent Nelson
a888f2f516
Reject TXs sent via RPC with no signatures
2020-07-30 00:07:33 -06:00
Trent Nelson
9778fedd7a
Add new RPC error for TXs with no signatures
2020-07-30 00:07:33 -06:00
Trent Nelson
a7079e4dde
Dereplicode send_transaction and request_airdrop RPC handlers
2020-07-30 00:07:33 -06:00
Trent Nelson
b962b2ce2d
Add failing test for TX sent via RPC with no signatures
2020-07-30 00:07:33 -06:00
carllin
ebe367f722
Add utility function ( #11262 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-28 23:44:10 -07:00
Tyera Eulberg
b45ac5d4db
Add SPL Token-specific rpc endpoints ( #11231 )
...
* Simplify account-decoder program ids + spl_token helper
* Spl program namespace version
* Add getTokenAccountBalance endpoint
* Remove token program id from getTokenAccountBalance request
* Add getTokenSupply endpoint
* Remove token program id from getTokenSupply request
* Add getTokenAccountsByOwner/Delegate endpoints
* Remove token program id from getTokenAccountsByOwner/Delegate requests
* Named parameter
2020-07-28 23:00:48 -06:00
Trent Nelson
678f94903b
Fill out missing RPC request received debug logging
2020-07-29 01:51:20 +00:00
carllin
a7ea340f22
Track votes from gossip for optimistic confirmation ( #11209 )
...
* Add check in cluster_info_vote_listenere to see if optimstic conf was achieved
Add OptimisticConfirmationVerifier
* More fixes
* Fix merge conflicts
* Remove gossip notificatin
* Add dashboards
* Fix rebase
* Count switch votes as well toward optimistic conf
* rename
Co-authored-by: Carl <carl@solana.com>
2020-07-28 09:33:27 +00:00
carllin
c0dc21620b
Test cleanup ( #11192 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-24 09:55:25 +00:00
carllin
6578ad7d08
Speed up local cluster partitioning tests ( #11177 )
...
* Fix long local cluster partition tests by skipping slot warmup
Co-authored-by: Carl <carl@solana.com>
2020-07-23 18:50:42 -07:00
Greg Fitzgerald
7484202282
Return root when bank not found ( #11188 )
...
* Return root when bank not found
* Apply suggestions from code review
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-07-24 00:57:15 +00:00
Greg Fitzgerald
8ccce1e543
Upgrade ed25519-dalek ( #11183 )
2020-07-23 17:23:51 -06:00
Tyera Eulberg
c90de8978d
Add encoding and filters parameters to rpc Subscriptions ( #11065 )
...
* Plumb account configs and enable encoding
* Enable filters for pubsub program accounts
* Update docs
2020-07-23 13:38:28 -06:00
Tyera Eulberg
ca6480a8ac
Use OrderedIterator in collect_balances ( #11166 )
2020-07-23 13:35:10 -06:00
Tyera Eulberg
b5a6a2f461
Initialize BlockCommitmentCache slot and root on node boot ( #11178 )
...
* Initialize commitment-cache slot and root on node boot
* Ignore long tests
2020-07-23 11:44:57 -06:00
carllin
e556f85178
Add test for making sure switch doesn't happen past failure threshold ( #11138 )
...
Fix switch threshold
Co-authored-by: Carl <carl@solana.com>
2020-07-21 23:04:24 -07:00
Tyera Eulberg
6c38369042
Use OrderedIterator in TransactionStatusService ( #11149 )
...
* Split out get-first-err for unit testing
* Add failing test
* Add missing ordering
2020-07-21 20:06:49 +00:00
carllin
73f3d04798
Add replay votes to gossip vote tracking ( #11119 )
...
* Plumb replay vote channel for notifying vote listener of replay votes
* Keep gossip only notification for debugging gossip in the future
Co-authored-by: Carl <carl@solana.com>
2020-07-20 17:29:07 -07:00
Greg Fitzgerald
23c2e55cbf
Use BlockCommitmentCache for RPC slots, take 2 ( #11137 )
...
* Use BlockCommitmentCache for RPC slots (#11103 )
* Add BankForks::highest_descendant(slot)
* Update debug messages
* Update core/src/rpc.rs
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
* cargo fmt
* Remove highest_descendant
* Fix test
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
* Fix crossed-in-flight compilation error
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-07-20 23:03:40 +00:00
Michael Vines
d19cd3a18a
Revert "Use BlockCommitmentCache for RPC slots ( #11103 )" ( #11122 )
...
This reverts commit 815b0f31b4
.
2020-07-18 16:39:12 -07:00
Greg Fitzgerald
815b0f31b4
Use BlockCommitmentCache for RPC slots ( #11103 )
...
* Add BankForks::highest_descendant(slot)
* Update debug messages
* Update core/src/rpc.rs
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
* cargo fmt
* Remove highest_descendant
* Fix test
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-07-17 16:22:27 -06:00
Tyera Eulberg
a255b0fc86
Rename CacheSlotInfo to CommitmentSlots ( #11111 )
2020-07-17 17:54:49 +00:00
Tyera Eulberg
fdff681bcc
Simplify BlockCommitmentCache slot info ( #11106 )
...
* Refactor BlockCommitmentCache, store a CacheSlotInfo
* Comma
2020-07-17 09:24:51 -06:00
Dan Albert
7958dd88c2
Update non_circulating_supply.rs
2020-07-16 12:57:13 -06:00
sakridge
7fe870ba48
Make accounts file clean faster ( #11071 )
2020-07-15 09:37:40 -07:00
Tyera Eulberg
9a80e31bae
Expose tss to the other blockstore_processor path ( #11070 )
2020-07-14 21:14:48 -06:00
dependabot-preview[bot]
5055028231
Bump serde_json from 1.0.54 to 1.0.56
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.54 to 1.0.56.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.54...v1.0.56 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-14 11:13:22 -07:00
carllin
e9cbdf711b
Add TreeDiff trait to reuse tree functions ( #11046 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-14 07:38:48 +00:00
Kristofer Peterson
ed5a2f2a90
Fold bank serialisation into serde snapshot ( #10581 )
...
* Move bank (de)serialisation logic from bank and snapshot_utils to serde_snapshot.
Add sanity assertions between genesis config and bank fields on deserialisation.
Atomically update atomic bool in quote_for_specialization_detection().
Use same genesis config when restoring snapshots in test cases.
* Tidy up namings and duplicate structs to version
* Apply struct renames to tests
* Update abi hashes
Co-authored-by: Ryo Onodera <ryoqun@gmail.com>
2020-07-13 23:00:59 +09:00
Greg Fitzgerald
145906123a
Simplify use of SendTransactionService ( #10999 )
...
* Send transaction upon recv
This will allow us to move the channel to the public interface
* Use a channel, not a method, to communicate
* Pipeline the services
* Ignore unused return values
* Fix clippy warning
2020-07-11 01:14:41 +00:00
Michael Vines
25ca99cdcf
largest -> highest
2020-07-10 12:57:32 -07:00
Michael Vines
aef6bf272e
getConfirmedBlocks now has an upper limit on slot range
2020-07-10 12:18:31 -07:00
sakridge
631f051c68
Add jitter to cleanup to prevent all nodes cleaning at the same time ( #10936 )
2020-07-10 11:54:45 -07:00
carllin
7a14e359d7
Switch to using weighted repair in RepairService ( #10735 )
...
* Plumb votes into repair service
* Remove refactoring
* Fix tests
* Switch to using RepairWeight for generating repairs
* Revert "Weight repair slots based on vote stake (#10741 )"
This reverts commit cabd0a09c3
.
* Update logging
Co-authored-by: Carl <carl@solana.com>
2020-07-10 05:52:54 +00:00
Greg Fitzgerald
16eeea4f82
Move SendTransactionService to solana_runtime ( #10972 )
2020-07-09 18:28:26 +00:00
Greg Fitzgerald
17a8cc862b
Remove core dependencies from SendTransactionService ( #10965 )
...
* Remove core dependencies from SendTransactionService
* Fix clippy warnings
2020-07-08 19:13:42 -06:00
Greg Fitzgerald
ebadbce920
Drop bank from BlockCommitmentCache ( #10959 )
...
* Remove bank reference from BlockCommitmentCache
* Don't use a Bank to create BlockCommitmentCache
* Rename recent_slot to slot
2020-07-09 00:50:13 +00:00
dependabot-preview[bot]
841ecfd927
chore(deps): bump bincode from 1.2.1 to 1.3.1 ( #10867 )
...
* chore(deps): bump bincode from 1.2.1 to 1.3.1
Bumps [bincode](https://github.com/servo/bincode ) from 1.2.1 to 1.3.1.
- [Release notes](https://github.com/servo/bincode/releases )
- [Commits](https://github.com/servo/bincode/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
* [auto-commit] Update all Cargo lock files
* Switch from deprecated method
* Add options to maintain behavior with bincode::options()
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-07-09 00:08:05 +00:00
Tyera Eulberg
1a6bbd2867
Limited Deserialize isn't limiting anything ( #10952 )
...
* Add failing test
* Use deserialize_from to enable limit
2020-07-08 15:54:42 -06:00
Greg Fitzgerald
930162a079
Drop dependency on BlockCommitmentCache bank ( #10946 )
...
* Drop dependency on BlockCommitmentCache bank
* cargo fmt
2020-07-07 20:13:30 -06:00
Greg Fitzgerald
2fdbb97244
Rename largest_confirmed_root to highest_confirmed_root ( #10947 )
2020-07-07 23:59:46 +00:00
sakridge
d492f4f15b
Clean accounts path on validator startup ( #10929 )
2020-07-07 09:41:45 -07:00
carllin
3f6042d8b3
Add RepairWeight to track votes seen in gossip for weighted repair ( #10903 )
...
* Add RepairWeight
Co-authored-by: Carl <carl@solana.com>
2020-07-06 22:49:40 -07:00
sakridge
58a475b789
Add db recovery methods ( #10838 )
2020-07-06 12:43:45 -07:00
Tyera Eulberg
4de0713aa3
Rpc: Add getStakeActivation endpoint ( #10902 )
...
* Add getStakeActivation endpoint
* Add docs
* Update docs/src/apps/jsonrpc-api.md
Co-authored-by: Michael Vines <mvines@gmail.com>
* Rework return type
* Update docs
* Rebase
Co-authored-by: Michael Vines <mvines@gmail.com>
2020-07-06 13:28:40 -06:00
Ryo Onodera
39b3ac6a8d
Introduce automatic ABI maintenance mechanism (2/2; rollout) ( #8012 )
...
* Introduce automatic ABI maintenance mechanism (2/2; rollout)
* Fix stable clippy
* Change to symlink
* Freeze abi of Tower
* fmt...
* Improve dev-experience!
* Update BankSlotDelta
$ diff -u /tmp/abi8/*7dg6BreYxTuxiVz6aLvk3p2Z7GQk2cJqfGvC9h4FAoSj* /tmp/abi8/*9chBcbXVJ4fK7uGgydQzam5aHipaAKFw6V4LDFpjbE4w*
--- /tmp/abi8/bank__BankSlotDelta_frozen_abi__test_abi_digest_7dg6BreYxTuxiVz6aLvk3p2Z7GQk2cJqfGvC9h4FAoSj 2020-06-18 18:01:22.831228087 +0900
+++ /tmp/abi8/bank__BankSlotDelta_frozen_abi__test_abi_digest_9chBcbXVJ4fK7uGgydQzam5aHipaAKFw6V4LDFpjbE4w 2020-07-03 15:59:58.430695244 +0900
@@ -140,7 +140,7 @@
field u8
primitive u8
field solana_sdk::instruction::InstructionError
- enum InstructionError (variants = 34)
+ enum InstructionError (variants = 35)
variant(0) GenericError (unit)
variant(1) InvalidArgument (unit)
variant(2) InvalidInstructionData (unit)
@@ -176,6 +176,7 @@
variant(31) CallDepth (unit)
variant(32) MissingAccount (unit)
variant(33) ReentrancyNotAllowed (unit)
+ variant(34) MaxSeedLengthExceeded (unit)
variant(9) CallChainTooDeep (unit)
variant(10) MissingSignatureForFee (unit)
variant(11) InvalidAccountIndex (unit)
* Fix some merge conflicts...
2020-07-06 20:22:23 +09:00
Ryo Onodera
92697973d0
Document lockout_intervals and tiny niceties ( #10925 )
2020-07-06 08:59:17 +00:00
carllin
28e15a63e5
Repair timing ( #10913 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-03 18:37:01 -07:00
Greg Fitzgerald
2922494b4f
Cleanup rpc ( #10910 )
...
* Remove unreachable error case
* Inline Ok
* Hoist Ok
2020-07-03 17:39:14 -06:00
Tyera Eulberg
8d951776ab
Rpc: add filter to getProgramAccounts ( #10888 )
...
* Add RpcFilterType, and implement CompareBytes for getProgramAccounts
* Accept bytes in bs58
* Rename to memcmp
* Add Memcmp optional encoding field
* Add dataSize filter
* Update docs
* Clippy
* Simplify tests that don't need to test account contents; add multiple-filter tests
2020-07-03 07:46:29 +00:00
sakridge
832d47317e
Move clean accounts to background service ( #10898 )
2020-07-02 22:25:17 -07:00
carllin
f1699721ef
Bench RaptorQ ( #10886 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-02 18:31:32 -07:00
carllin
f17ac70bb2
Add weighted traversal ( #10877 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-02 14:33:04 -07:00
Michael Vines
d53228e69d
getInflationRate now only supports the current epoch
2020-07-02 02:11:31 +00:00
Tyera Eulberg
2669ccb864
Update struct prefixes to Ui ( #10874 )
...
* Update comments
* Use Ui prefix
2020-07-01 20:06:40 +00:00
dependabot-preview[bot]
4deec51703
chore(deps): bump rayon from 1.3.0 to 1.3.1 ( #10605 )
...
* chore(deps): bump rayon from 1.3.0 to 1.3.1
Bumps [rayon](https://github.com/rayon-rs/rayon ) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/rayon-rs/rayon/releases )
- [Changelog](https://github.com/rayon-rs/rayon/blob/master/RELEASES.md )
- [Commits](https://github.com/rayon-rs/rayon/compare/rayon-core-v1.3.0...v1.3.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
* [auto-commit] Update all Cargo lock files
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
2020-07-01 08:09:28 -07:00
carllin
7a71580d53
Add heaviest subtree utility functions ( #10863 )
...
Co-authored-by: Carl <carl@solana.com>
2020-07-01 08:45:32 +00:00
Ryo Onodera
ecf6fb2cd2
Rename new_banks_from_blockstore => new_banks_from_ledger ( #10864 )
2020-07-01 06:19:40 +00:00
Tyera Eulberg
d97850f1d9
Add account-decoder utilities ( #10846 )
...
* Fix comment and make less pub
* Add account-decoder crate and use to decode vote and system (nonce) accounts
* Update docs
* Rename RpcAccount struct
* s/Rpc/Display
* Call it jsonParsed and update docs
* Revert "s/Rpc/Display"
This reverts commit 6e7149f503f560f1e9237981058ff05642bb7db5.
* s/Rpc/Ui
* Add tests
* Ui more things
* Comments
2020-07-01 04:55:11 +00:00
sakridge
1ffad2d051
More guard rails for restart with ledger procedure ( #10853 )
...
* Add expected_bank_hash required for supermajority
* Print snapshot hash in ledger-tool create-snapshot.
2020-06-30 12:43:48 -07:00
carllin
4b93a7c1f6
Fix fork detection ( #10839 )
...
* Fix fork detection
Co-authored-by: Carl <carl@solana.com>
2020-06-29 18:49:57 -07:00
sakridge
d9b389f510
Reduce logging lines ( #10835 )
2020-06-29 15:57:28 -07:00
sakridge
583cec922b
Remove ledger purge batching ( #10830 )
2020-06-29 14:44:35 -07:00
sakridge
17a2128a8f
More replay stage timing metrics ( #10828 )
2020-06-28 10:04:15 -07:00
carllin
fb8e2d8cdb
Add debugging ( #10822 )
...
Co-authored-by: Carl <carl@solana.com>
2020-06-26 10:23:11 +00:00
Greg Fitzgerald
50b3fa83a0
Move BankCommitmentCache to solana_runtime ( #10816 )
...
* Remove Blockstore member variable from BlockCommitmentCache
* Hoist is_confirmed_rooted() to its only caller
BlockCommitmentCache no longer depends on Blockstore
* Move BlockCommitmentCache to solana_runtime
2020-06-25 22:06:58 -06:00
Greg Fitzgerald
62b873b054
Clean up rpc module ( #10812 )
...
* Clean up rpc module
* Simplify getting bank
2020-06-25 17:08:55 -06:00
carllin
84954ad0a0
Fix leaf propagation in case of no votes in HeaviestForkChoice ( #10803 )
...
* Fix leaf propagation logic
Co-authored-by: Carl <carl@solana.com>
2020-06-25 04:08:18 -07:00
Ryo Onodera
4164c69683
Tiny cleanups in preparation for persistent tower ( #10805 )
2020-06-25 18:24:16 +09:00
Dan Albert
b3e382ab3f
Add non-circulating withdraw authority ( #10798 )
...
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-06-25 04:17:49 +00:00
Greg Fitzgerald
1c498369b5
Remove fee-payer guesswork from Message and Transaction ( #10776 )
...
* Make Message::new_with_payer the default constructor
* Remove Transaction::new_[un]signed_instructions
These guess the fee-payer instead of stating it explicitly
2020-06-24 14:52:38 -06:00
carllin
764c7b0403
Disable entire codepath ( #10767 )
...
Co-authored-by: Carl <carl@solana.com>
2020-06-24 12:09:55 -07:00
sakridge
a1ef921b88
Rework backup and clear function ( #10751 )
2020-06-23 21:29:07 +00:00
Ryo Onodera
685becad13
Further expand last_voted_slot terminology ( #10747 )
2020-06-23 21:52:45 +09:00
sakridge
cabd0a09c3
Weight repair slots based on vote stake ( #10741 )
...
* Weight repair slots based on vote stake
* Add test
2020-06-22 20:27:45 -07:00
sakridge
2ba8fc5243
Remove slots past wait-for-supermajority slot. ( #10720 )
2020-06-22 20:27:25 -07:00
Ryo Onodera
0952b76f02
Add {Vote, Tower}::last_voted_slot() ( #10734 )
2020-06-23 11:59:54 +09:00
Ryo Onodera
44f5452013
Remove unused StakeLockout::lockout ( #10719 )
...
* Remove unused StakeLockout::lockout
* Revert...
* Really revert to the original behavior...
* Use consistent naming after StakeLockout removal
* Furhter clean up
* Missed type aliases...
* More...
* Even more...
2020-06-23 10:30:09 +09:00
Kristofer Peterson
a87f490b5e
nit removal ( #10721 )
2020-06-21 16:12:21 +09:00
carllin
a33fef9af2
Add repair breakdown by slot and index ( #10717 )
...
* Slot full logging
* Repair stats logging
Co-authored-by: Carl <carl@solana.com>
2020-06-19 18:28:15 -07:00
Tyera Eulberg
fd2508b09e
Add jsonParsed option for EncodedTransactions; add memo parser ( #10711 )
...
* Add jsonParsed option for EncodedTransactions; add memo parser
* Use kebab case for program names
* Add account-key parsing
* Add parse test
2020-06-19 16:15:13 -06:00
Kristofer Peterson
6d81eede93
Add CLI options and runtime support for selection of output snapshot version. ( #10536 )
2020-06-19 14:38:37 +09:00
Greg Fitzgerald
ed4c71fe2d
Merge heaviest bank modules ( #10672 )
...
* Merge heaviest bank modules
* Merge heaviest fork choice modules
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-18 03:59:08 +00:00
Greg Fitzgerald
0550b893b0
Fix typos ( #10675 )
...
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-17 20:54:52 -07:00
Justin Starry
39984cdcc3
Wait until bank is frozen before sending RPC notifications ( #10654 )
2020-06-18 00:44:51 +08:00
Greg Fitzgerald
6ee222363e
Move BankForks to solana_runtime ( #10637 )
...
* Move BankForks to solana_runtime
* Update imports
2020-06-17 15:27:03 +00:00
sakridge
0de6c444d6
Simd poh ( #10604 )
...
* Simd poh
* Fix poh verify bench
2020-06-16 23:03:26 -07:00
Greg Fitzgerald
891aa8c13e
Add RequestProcessor constructor to simplify testing ( #10631 )
...
* Add JsonRpcRequestProcessor constructor
* Avoid start_rpc_handler_with_tx monolith in rpc tests
* pub
* Pass an Arc, so that caller can poke the bank
2020-06-16 23:30:59 -06:00
publish-docs.sh
5673343f49
Add address to non-circulating supply
2020-06-16 21:20:33 -07:00
sakridge
1eca9b19ab
Entry verify cleanup and gossip counters ( #10632 )
...
* Add prune message counter
* Switch to us verification time to match other counters
* Add separate transaction/poh verify timing
2020-06-16 14:00:29 -07:00
carllin
f8b88d717e
Enable fork choice and switch votes, devnet => now, testnet => epoch 63 ( #10615 )
...
* Enable fork choice, devnet => now, testnet => epoch 63
* Set development to 0
* Enable switch vote slot
Co-authored-by: Carl <carl@solana.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-16 09:55:36 +00:00
dependabot-preview[bot]
480f69cc5e
Bump serde from 1.0.111 to 1.0.112
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.111 to 1.0.112.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.111...v1.0.112 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 07:58:16 -07:00
Ryo Onodera
a0692c9b4c
Further fix the ci ( #10559 )
2020-06-14 14:53:49 +09:00
Ryo Onodera
d159bc71e7
Fix trailing whitespace ( #10558 )
2020-06-14 14:43:43 +09:00
anatoly yakovenko
ba83e4ca50
Fix fannout gossip bench ( #10509 )
...
* Gossip benchmark
* Rayon tweaking
* push pulls
* fanout to max nodes
* fixup! fanout to max nodes
* fixup! fixup! fanout to max nodes
* update
* multi vote test
* fixup prune
* fast propagation
* fixups
* compute up to 95%
* test for specific tx
* stats
* stats
* fixed tests
* rename
* track a lagging view of which nodes have the local node in their active set in the local received_cache
* test fixups
* dups are old now
* dont prune your own origin
* send vote to tpu
* tests
* fixed tests
* fixed test
* update
* ignore scale
* lint
* fixup
* fixup
* fixup
* cleanup
Co-authored-by: Stephen Akridge <sakridge@gmail.com>
2020-06-13 22:03:38 -07:00
R. M. Shea
48febf153b
Change documentation introduction to indicate Foundation IP transfer ( #10440 )
2020-06-13 14:41:05 -07:00
Jack May
b6a9573748
Route all loader messages to log collector ( #10528 )
2020-06-13 13:20:08 -07:00
Greg Fitzgerald
8dd5384d6d
Split commitment module ( #10541 )
...
automerge
2020-06-12 17:16:10 -07:00
Michael Vines
f54c049b43
Add FdGYQ... to non-circulation withdrawer authority list ( #10542 )
...
automerge
2020-06-12 16:45:20 -07:00
Greg Fitzgerald
2eb6f498a8
Remove redundant BankForks parameter ( #10537 )
2020-06-12 11:04:17 -06:00
Ryo Onodera
dfe72d5242
Optimize stale slot shrinking for previously cleaned roots ( #10099 )
...
* Prioritize shrinking of previously cleaned roots
* measure time of stale slot shrinking
* Disable shrink for test
* shrink: budgeting, store count, force for snapshot
* Polish implementation and fix tests
* Fix ci..
* Clean up a bit
* Further polish implementation and fix/add tests
* Rebase fixes
* Remove unneeded Default for AccountStorageEntry
* Address review comments
* More cleanup
* More cleanup
2020-06-12 14:51:43 +09:00
Greg Fitzgerald
fb8612be49
Update non-circulating pubkeys ( #10524 )
...
automerge
2020-06-11 16:30:25 -07:00
Greg Fitzgerald
9077c4a776
Enable jsonrpc client ( #10522 )
2020-06-11 16:51:25 -06:00
carllin
526eefac97
Fix clippy ( #10521 )
...
Co-authored-by: Carl <carl@solana.com>
2020-06-11 15:26:00 -06:00
carllin
2e1d59ff85
Adopt heaviest subtree fork choice rule ( #10441 )
...
* Add HeaviestSubtreeForkChoice
* Make replay stage switch between two fork choice rules
Co-authored-by: Carl <carl@solana.com>
2020-06-11 12:16:04 -07:00
sakridge
4c140acb3b
ClusterInfo cleanup ( #10504 )
...
automerge
2020-06-10 17:00:17 -07:00
sakridge
6eb5ef6ac7
Add back missing pull_response success counter ( #10491 )
2020-06-10 09:17:57 -07:00
sakridge
ecb6959720
Optimize process pull responses ( #10460 )
...
* Batch process pull responses
* Generate pull requests at 1/2 rate
* Do filtering work of process_pull_response in read lock
Only take write lock to insert if needed.
2020-06-09 17:08:13 -07:00
dependabot-preview[bot]
a264a9dd0b
Bump serde_json from 1.0.53 to 1.0.54
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.53 to 1.0.54.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.53...v1.0.54 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-09 16:57:46 -07:00
Michael Vines
8e2745c2a2
Clean up delinquency slot distance computation
2020-06-09 11:27:30 -07:00
Michael Vines
ed351400b2
Add SendTransactionService
2020-06-09 07:46:40 -07:00
anatoly yakovenko
832d324a23
Revert "Gossip PullRequests tend to return a lot of duplicates. ( #10326 )" ( #10455 )
...
This reverts commit 31e20eff82
.
2020-06-09 07:27:00 -07:00
Kristofer Peterson
e23340d89e
Clippy cleanup for all targets and nighly rust (also support 1.44.0) ( #10445 )
...
* address warnings from 'rustup run beta cargo clippy --workspace'
minor refactoring in:
- cli/src/cli.rs
- cli/src/offline/blockhash_query.rs
- logger/src/lib.rs
- runtime/src/accounts_db.rs
expect some performance improvement AccountsDB::clean_accounts()
* address warnings from 'rustup run beta cargo clippy --workspace --tests'
* address warnings from 'rustup run nightly cargo clippy --workspace --all-targets'
* rustfmt
* fix warning stragglers
* properly fix clippy warnings test_vote_subscribe()
replace ref-to-arc with ref parameters where arc not cloned
* Remove lock around JsonRpcRequestProcessor (#10417 )
automerge
* make ancestors parameter optional to avoid forcing construction of empty hash maps
Co-authored-by: Greg Fitzgerald <greg@solana.com>
2020-06-09 09:38:14 +09:00
Greg Fitzgerald
af8c21c559
Remove lock around JsonRpcRequestProcessor ( #10417 )
...
automerge
2020-06-07 20:54:03 -07:00
sakridge
0645a0c96d
Gossip cleanup remove duplicate gossip metrics and name worker threads ( #10435 )
...
Refactor into functions
2020-06-06 15:05:45 -07:00
sakridge
ebb612ab4e
Enable and add tick rate to metrics ( #10430 )
2020-06-06 11:47:11 -07:00
Michael Vines
7e2651ca51
RPC simulateTransaction endpoint now returns program log output ( #10432 )
2020-06-06 10:18:28 -07:00
sakridge
2725acebea
Lower counter level ( #10428 )
2020-06-05 15:53:09 -07:00
dependabot-preview[bot]
2e37eccfc4
Bump jsonrpc-core-client from 14.1.0 to 14.2.0 ( #10425 )
...
Bumps [jsonrpc-core-client](https://github.com/paritytech/jsonrpc ) from 14.1.0 to 14.2.0.
- [Release notes](https://github.com/paritytech/jsonrpc/releases )
- [Commits](https://github.com/paritytech/jsonrpc/compare/v14.1.0...v14.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-05 15:51:01 -06:00
sakridge
3d2230f1a9
Add pull request count metrics ( #10421 )
2020-06-05 09:36:31 -07:00
anatoly yakovenko
31e20eff82
Gossip PullRequests tend to return a lot of duplicates. ( #10326 )
...
* filter messages that are likely to be pushed from the response
* tests
* tests
* wait to start filtering responses, and push stats to influx
* wait to start filtering responses, and push stats to influx
* reduce the timers to match the publish self timeout
* fmt
* fmt
2020-06-05 08:01:45 -07:00
Michael Vines
aa6832964c
ledger_cleanup_service: compact at a slower rate than purging ( #10414 )
2020-06-04 21:06:06 -07:00
dependabot-preview[bot]
318835e3a0
Merge pull request #10410 from solana-labs/dependabot/cargo/jsonrpc-pubsub-14.2.0
...
Bump jsonrpc-pubsub from 14.1.0 to 14.2.0
2020-06-04 19:06:14 -07:00
Justin Starry
754f25ae99
Avoid AccountInUse errors when simulating transactions ( #10391 )
...
automerge
2020-06-04 19:06:01 -07:00
dependabot-preview[bot]
68f95c791a
Bump jsonrpc-ws-server from 14.1.0 to 14.2.0
...
Bumps [jsonrpc-ws-server](https://github.com/paritytech/jsonrpc ) from 14.1.0 to 14.2.0.
- [Release notes](https://github.com/paritytech/jsonrpc/releases )
- [Commits](https://github.com/paritytech/jsonrpc/compare/v14.1.0...v14.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-04 19:02:30 -07:00
dependabot-preview[bot]
8736247554
Bump jsonrpc-http-server from 14.1.0 to 14.2.0
...
Bumps [jsonrpc-http-server](https://github.com/paritytech/jsonrpc ) from 14.1.0 to 14.2.0.
- [Release notes](https://github.com/paritytech/jsonrpc/releases )
- [Commits](https://github.com/paritytech/jsonrpc/compare/v14.1.0...v14.2.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-04 19:00:28 -07:00
dependabot-preview[bot]
ea9b958dff
Bump jsonrpc-derive from 14.1.0 to 14.2.1
...
Bumps [jsonrpc-derive](https://github.com/paritytech/jsonrpc ) from 14.1.0 to 14.2.1.
- [Release notes](https://github.com/paritytech/jsonrpc/releases )
- [Commits](https://github.com/paritytech/jsonrpc/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-03 12:16:54 -07:00
dependabot-preview[bot]
f58b6b3431
Bump jsonrpc-core from 14.1.0 to 14.2.0
...
Bumps [jsonrpc-core](https://github.com/paritytech/jsonrpc ) from 14.1.0 to 14.2.0.
- [Release notes](https://github.com/paritytech/jsonrpc/releases )
- [Commits](https://github.com/paritytech/jsonrpc/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-03 09:02:07 -07:00
dependabot-preview[bot]
6cf30c38a4
Bump reqwest from 0.10.5 to 0.10.6
...
Bumps [reqwest](https://github.com/seanmonstar/reqwest ) from 0.10.5 to 0.10.6.
- [Release notes](https://github.com/seanmonstar/reqwest/releases )
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md )
- [Commits](https://github.com/seanmonstar/reqwest/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-03 09:01:36 -07:00
sakridge
2cf719ac2c
Cache tvu peers for broadcast ( #10373 )
2020-06-03 08:24:05 -07:00
dependabot-preview[bot]
f901571026
Bump serde from 1.0.110 to 1.0.111
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.110 to 1.0.111.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.110...v1.0.111 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-02 23:29:14 -07:00
dependabot-preview[bot]
8498b75d6c
Bump indexmap from 1.3.2 to 1.4.0
...
Bumps [indexmap](https://github.com/bluss/indexmap ) from 1.3.2 to 1.4.0.
- [Release notes](https://github.com/bluss/indexmap/releases )
- [Commits](https://github.com/bluss/indexmap/compare/1.3.2...1.4.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-02 23:28:57 -07:00
Tyera Eulberg
eee9a08376
Purge TransactionStatus and AddressSignatures exactly from ledger-tool ( #10358 )
...
* Add failing test
* Add execution path to purge primary-index columns exactly
* Fail gracefully if older TransactionStatus rocksdb keys are present
* Remove columns_empty check for special columns
* Move blockstore purge methods to submodule
* Remove unused column empty check
2020-06-02 19:49:31 -06:00
Michael Vines
ebf8a65526
Add test_rpc_send_transaction_preflight
2020-06-01 17:51:04 -07:00
Michael Vines
9158479dc4
Add node health check to transaction preflight
2020-06-01 17:51:04 -07:00
Michael Vines
9dbf3d5430
Factor out RpcHealth module
2020-06-01 17:51:04 -07:00
Michael Vines
189aa7962e
Add preflight checks to sendTransaction RPC method
2020-06-01 17:51:04 -07:00
sakridge
ef37b82ffa
More cluster stats and add epoch stakes cache in retransmit stage ( #10345 )
...
* More cluster info metrics for push request/response counts
* Cache staked peers for the epoch
2020-06-01 08:37:54 -07:00
carllin
d9366776b2
Add operating mode gating ( #10332 )
...
Co-authored-by: Carl <carl@solana.com>
2020-05-30 00:03:19 -07:00
Greg Fitzgerald
19d11800bf
Remove WithSigner ( #10325 )
...
automerge
2020-05-29 23:17:44 -07:00
Michael Vines
eb45aaa6c3
Added --health-check-slot-distance ( #10324 )
2020-05-29 15:31:52 -07:00
carllin
778078e1dc
Distinguish switch/non-switching votes in ReplayStage ( #10218 )
...
* Add SwitchForkDecision, change vote instruction based on decision
* Factor out SelectVoteAndResetForkResult
Co-authored-by: Carl <carl@solana.com>
2020-05-29 14:40:36 -07:00
Tyera Eulberg
b563b49ed5
Improve Rpc inflation tooling ( #10309 )
...
automerge
2020-05-29 11:50:25 -07:00
Kristofer Peterson
fb4d8e1f62
cleanup clippy tests ( #10172 )
...
automerge
2020-05-29 00:26:06 -07:00
dependabot-preview[bot]
a71833c17b
Bump regex from 1.3.8 to 1.3.9 ( #10308 )
...
* Bump regex from 1.3.8 to 1.3.9
Bumps [regex](https://github.com/rust-lang/regex ) from 1.3.8 to 1.3.9.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.3.8...1.3.9 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
* [auto-commit] Update all Cargo lock files
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
2020-05-28 21:48:39 -07:00
Michael Vines
9eefb2c929
Bump version to 1.3.0
2020-05-28 15:01:13 -07:00
carllin
e68621b8bb
Fix repair dos ( #10299 )
...
Co-authored-by: Carl <carl@solana.com>
2020-05-28 14:16:24 -07:00
Michael Vines
0442c45d5b
Feign RPC health while in a `--wait-for-supermajority` holding pattern ( #10295 )
2020-05-28 12:22:19 -07:00
sakridge
3f508b37fd
Skip gossip requests with different shred version and split lock ( #10240 )
2020-05-28 11:38:13 -07:00
dependabot-preview[bot]
9227874ada
Bump regex from 1.3.7 to 1.3.8 ( #10293 )
...
* Bump regex from 1.3.7 to 1.3.8
Bumps [regex](https://github.com/rust-lang/regex ) from 1.3.7 to 1.3.8.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/regex-1.3.7...1.3.8 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
* [auto-commit] Update all Cargo lock files
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: dependabot-buildkite <dependabot-buildkite@noreply.solana.com>
2020-05-28 10:02:23 -07:00
Tyera Eulberg
3f0995d3b4
Add commitment parameter to getFeeCalculatorForBlockhash ( #10255 )
...
* Accept commitment parameter on getFeeCalculatorForBlockhash
* Update docs
* Add get_fee_calculator_for_blockhash_with_commitment to rpc client
2020-05-26 17:23:58 -06:00
Tyera Eulberg
4e431bc818
Add mechanism to get blockhash's last valid slot ( #10239 )
...
automerge
2020-05-26 12:06:21 -07:00
sakridge
7ebd8ee531
Cluster info metrics ( #10215 )
2020-05-25 15:03:34 -07:00
Michael Vines
156387aba4
LedgerCleanupService no longer causes an OOM and actually purges ( #10199 )
...
* cleanup_ledger() now services new_root_receiver while purging
* purge_slots() now fully deletes before compacting
* Add ledger pruning grafana graph
2020-05-24 21:41:54 -07:00
carllin
3aae98c8be
Add switching vote instruction ( #10197 )
...
* Add switching vote
* Make sure vote size stays under gossip limit
Co-authored-by: Carl <carl@solana.com>
2020-05-24 15:38:35 -07:00
carllin
42aaacf520
Factor out LockedPubkeyReferences ( #10198 )
...
Co-authored-by: Carl <carl@solana.com>
2020-05-22 23:23:17 -07:00
Michael Vines
48c0845359
Update another non-circulating account
2020-05-22 15:11:33 -07:00
sakridge
10b1895357
Optimize banking processing of AccountInUse ( #10154 )
...
* Optimize banking processing of AccountInUse and thread count
* Add more options to banking-bench
2020-05-22 15:01:01 -07:00
sakridge
f1e932c90a
Trigger notifications on supermajority votes confirmation ( #10137 )
...
automerge
2020-05-22 14:53:47 -07:00
Michael Vines
e2b5cd6d47
Add another non-circulating account ( #10186 )
...
automerge
2020-05-22 13:06:03 -07:00
Tyera Eulberg
2928c5d103
Add SingleGossip commitment level to use for subscriptions ( #10147 )
...
automerge
2020-05-22 12:55:17 -07:00
Kristofer Peterson
b7a32f01c0
Multi-version snapshot support ( #9980 )
...
* Multi-version snapshot support
* rustfmt
* Remove CLI options and runtime support for selection output snapshot version.
Address some clippy complaints.
* Muzzle clippy type complexity warning.
Despite clippy's suggestion, it is not currently possible to create type aliases
for traits and so everything within the 'Box<...>' cannot be type aliased.
This then leaves creating full blown traits, and either implementing
said traits by closure (somehow) or moving the closures into new structs
implementing said traits which seems a bit of a palaver.
Alternatively it is possible to define and use the type alias 'type ResultBox<T> = Result<Box<T>>'
which does seems rather pointless and not a great reduction in complexity but is enough to keep clippy happy.
In the end I simply went with squelching the clippy warning.
* Remove now unused Serialize/Deserialize trait implementations for AccountStorageEntry and AppendVec
* refactor versioned de/serialisers
* rename serde_utils to serde_snapshot
* move call to accounts_db.generate_index() back down to context_accountsdb_from_stream()
* update version 1.1.1 to 1.2.0
remove nested use of serialize_bytes
* cleanups
* Add back measurement of account storage entry serialization.
Remove construction of Vec and HashMap temporaries during serialization.
* consolidate serialisation test cases into serde_snapshot.
clean up leakage of implementation details in serde_snapshot.
* move short term / legacy snapshot code into child module
* add serialize_iter_as_tuple
* preliminary integration of following commit
commit 6d58b73c47294bfb93465d5a83cd2175660b6e6d
Author: Ryo Onodera <ryoqun@gmail.com>
Date: Wed May 20 14:02:02 2020 +0900
Confine snapshot 1.1 relic to versioned codepath
* refactored serde_snapshot, rustfmt
legacy accounts_db format now "owns" both leading u64s, legacy bank_rc format has none
* reduce type complexity (clippy)
2020-05-23 02:54:24 +09:00
Tyera Eulberg
12a3b1ba6a
Fixup deserialize_bs58_transaction, and make a few error types more targeted ( #10171 )
...
automerge
2020-05-21 17:30:02 -07:00
Michael Vines
18be7a7966
REST API now returns supply in SOL rather than lamports ( #10170 )
...
automerge
2020-05-21 15:50:06 -07:00
Michael Vines
486168b796
Revert "Add AVX2 runtime checks ( #10033 )" ( #10167 )
...
This reverts commit cf8eb7700b
.
2020-05-21 13:13:52 -07:00
Justin Starry
10d60288e8
Update default subscription commitment level from recent to single ( #10161 )
...
* Update default subscription commitment level from recent to single
* Update jsonrpc docs
* Fix failing tests
2020-05-22 00:33:24 +08:00
Michael Vines
324cfd40f0
Add v0 REST APIs for circulating and total supply ( #10102 )
2020-05-20 20:04:07 -07:00
sakridge
ce17de7d25
Add option to wait for a specific epoch length to bench-tps ( #10083 )
2020-05-20 16:42:46 -07:00
Michael Vines
417f0e41fa
Add stake-o-matic ( #10044 )
...
automerge
2020-05-20 16:15:03 -07:00
Michael Vines
ad7b113944
Ignore test_tvu_exit ( #10134 )
...
automerge
2020-05-19 23:40:27 -07:00
Greg Fitzgerald
d9919b99d2
Remove folds ( #10128 )
...
automerge
2020-05-19 18:13:41 -07:00
carllin
439fd30840
Fix erasure ( #10095 )
...
* Fix bad FEC blocks
* Add test
Co-authored-by: Carl <carl@solana.com>
2020-05-19 16:13:12 -07:00
carllin
97f2bcff69
master: Add nonce to shreds repairs, add shred data size to header ( #10109 )
...
* Add nonce to shreds/repairs
* Add data shred size to header
Co-authored-by: Carl <carl@solana.com>
2020-05-19 12:38:18 -07:00
Michael Vines
427c78d891
Add SimulateTransaction RPC endpoint ( #10106 )
...
automerge
2020-05-19 12:08:19 -07:00
Tyera Eulberg
759c0e0b03
Update accounts whitelist ( #10100 )
2020-05-18 14:17:56 -06:00
Tyera Eulberg
bac4aec16f
Trigger RPC notifications after block commitment cache update ( #10077 )
...
* Fixup commitment-aggregation metric
* Trigger notifications after commitment-cache update
* Fixup fn name
* Add single-confirmation commitment level
* Rename to highest_confirmed_slot
* Pass commitment-cache info directly to notifications
* Use match
* Update commitment docs
* Update out of date pubsub docs
2020-05-18 12:49:01 -06:00
Reisen
bfcfbab818
Add Vote PubSub endpoint for live gossip votes. ( #10045 )
...
* Add Vote PubSub endpoint for live gossip votes.
* Updated tests for Vote RPC and Vote Listener
* Add JSON RPC documentation for Vote RPC.
* Base58 encode hash in Vote RPC response.
2020-05-17 15:01:08 -06:00
sakridge
f562ed4cc8
Distinguish between shred type in shred fetch stage duplicate filter ( #10068 )
...
* Shred type check
* Test
2020-05-15 13:23:56 -07:00
Kristofer Peterson
58ef02f02b
9951 clippy errors in the test suite ( #10030 )
...
automerge
2020-05-15 09:35:43 -07:00
Michael Vines
1da1667920
Forge a confirmed root before halting for RPC inspection ( #10061 )
2020-05-15 09:02:48 -07:00
Jack May
eb1acaf927
Remove archiver and storage program ( #9992 )
...
automerge
2020-05-14 18:22:47 -07:00
Michael Vines
4e4a21f9b7
`solana-gossip spy` can now specify a shred version ( #10040 )
2020-05-13 19:37:40 -07:00