38273427ad
have banks save vote_state by epoch to support stable leader schedules ( #3019 )
...
have banks save vote_state by epoch to support stable leader schedules
2019-03-01 11:54:28 -08:00
46fb0b1b94
Rename last_id to last_hash within HashQueue
2019-03-01 11:48:09 -08:00
224b705f8d
Rename genesis_block.last_id() to genesis_block.hash()
2019-03-01 11:48:09 -08:00
a57fb00584
Rename last_id_queue.rs to hash_queue.rs
2019-03-01 09:50:51 -08:00
360055ad70
Rename LastIdQueue to HashQueue
2019-03-01 09:50:51 -08:00
c53c351759
Rename erc20 to token-program
...
Everything it uses already had that name, just the crate was never
renamed.
2019-03-01 10:47:38 -07:00
b41286919d
Rename bank.id to bank.slot ( #3018 )
2019-02-28 18:02:45 -08:00
20e4edec61
Refactor Vote Program Account setup ( #2992 )
2019-02-28 17:08:45 -08:00
1c44b738fe
Fix vote_accounts test
2019-02-28 15:22:47 -08:00
217f30f9c3
Add get_supermajority_slot() function ( #2976 )
...
* Moved supermajority functions into new module, staking_utils
* Move staking functions out of bank, and into staking_utils, change get_supermajority_slot to only use state from epoch boundary
* Move bank slot height in staked_nodes_at_slot() to be bank id
2019-02-28 13:15:25 -08:00
0f2226901d
Fix transaction count after squash
2019-02-27 23:21:49 -08:00
dad1511484
test_bank_squash: validate transaction_count() before/after squashing
2019-02-27 23:21:49 -08:00
d23f8a3e99
increase accounts coverage ( #2993 )
2019-02-27 21:42:14 -08:00
0dc5af62ff
Standardize on 'use log::*' for easy access to all log level macros
2019-02-27 21:16:23 -08:00
855f1823a4
Include solana-logger for use by tests
2019-02-27 21:16:23 -08:00
7fd40f1eb9
add failing test for #2994 ( #2995 )
2019-02-27 20:46:26 -08:00
95f2f05f45
Refactor account serialize in appendvec
...
Remove dupe code and see how this compares to bincode.
Add benchmarks to justify custom serialize and also experiment with
safe solutions.
2019-02-27 19:57:50 -08:00
163874d4da
remove purge
parameter to accounts ( #2990 )
2019-02-27 16:06:06 -08:00
b6ccb475f1
Clarify FIXME source
2019-02-27 10:37:48 -08:00
ca0f16ccc0
Fix test failure
2019-02-27 08:22:52 -08:00
c241a56fb0
Remove extraneous print.
2019-02-27 08:22:52 -08:00
4149f7fd1c
Fix review comments
2019-02-27 08:22:52 -08:00
96b349dcbb
Performance optimizations
2019-02-27 08:22:52 -08:00
5216952691
Change benchmark path to target/ or OUT_DIR
...
Also reduce some code duplication with cleanup_dirs fn.
2019-02-27 08:22:52 -08:00
c46b2541fe
- Fix lock/unlock of accounts
...
- Fix format check warnings
2019-02-27 08:22:52 -08:00
2158ba5863
tx count per fork
2019-02-27 08:22:52 -08:00
180d297df8
Rebase and panic with no accounts
...
Add Accounts::has_accounts function for hash_internal_state calculation.
2019-02-27 08:22:52 -08:00
c276375a0e
Persistent account storage across directories
2019-02-27 08:22:52 -08:00
130563cd4c
AppendVec
2019-02-27 08:22:52 -08:00
033a04129a
Add lockouts to vote program ( #2944 )
...
* Add lockouts to vote program
* Rename MAX_VOTE_HISTORY TO MAX_LOCKOUT_HISTORY, change process_vote() to only pop votes after MAX_LOCKOUT_HISTORY + 1 votes have arrived
* Correctly calculate serialized size of an Option, rename root_block to root_slot
2019-02-26 22:19:31 -07:00
72214b2b68
Squash test to test parent bank after squash
2019-02-26 15:15:34 -08:00
87281f6ed5
ensure at Accounts level that tokens == 0 means None ( #2960 )
2019-02-26 13:51:39 -08:00
af206111e2
Hoist new leader scheduler up to protocol level
...
Attempt to feel similar to LeaderScheduler to easy migration.
2019-02-26 08:23:01 -08:00
3897b66270
Let the bank creator decide where to send transaction fees
2019-02-26 08:06:08 -07:00
feefdca969
Minor cleanup to Bank and LastIdQueue
2019-02-26 06:46:38 -08:00
25690ff078
merge_parents() => squash() ( #2943 )
2019-02-25 20:34:05 -08:00
897279eddb
Encapsulate log::Level so counter macro users don't need to use it
2019-02-25 20:01:30 -08:00
67c9bbc6b2
* drop parents once merged ( #2930 )
...
* add bank.id() which can be used by BankForks, blocktree_processor
* add bank.hash(), make hash_internal_state() private
* add bank.freeze()/is_frozen(), also useful for blocktree_processor, eventual freeze()ing in replay
2019-02-25 14:05:02 -08:00
2fbdec59cb
Generalize access to staked nodes
2019-02-25 08:49:43 -08:00
710f88edda
Handle edge cases earlier
...
We have lots of tests that work off genesis block. Also, one
might want to generate a future leader schedule under the assumption
the stakers stay the same.
2019-02-25 08:49:43 -08:00
db899a2813
Inline LeaderSchedule::new_from_bank()
...
Breaks circular dependency and offers more flexibility in bank's
usage.
2019-02-25 08:49:43 -08:00
aad0d90fdd
Use epoch_height to generate schedule instead of last_id
...
I had suggested the last_id, but that puts an unnecessary dependency
on LastIdsQueue. Using epoch height is pretty interesting in that
given the same set of stakers, you simply increment the seed once
per epoch.
Also, tighten up the LeaderSchedule code.
2019-02-25 08:49:43 -08:00
72b4834446
Add Bank::prev_slot_leader() and Bank::next_slot_leader()
2019-02-25 08:49:43 -08:00
ec48c58df1
Award tx fees to validators in new leader schedule
...
Also, generalize the leader_schedule functions a bit to allow for
prev_slot_leader and next_slot_leader, should they be needed.
2019-02-25 08:49:43 -08:00
0947ec59c9
Expose the new leader schedule functionality from the bank.
2019-02-25 08:49:43 -08:00
ba7d121724
Switch to Bank::staked_nodes(); want node_id, not staker_id
...
Also, update LeaderScheduler's code to use node_id as well.
Unfortuntely, no unit tests for this, because there's currently
only one way to set staker_id/node_id, and they are both set
to the same value.
2019-02-24 07:52:44 -07:00
a1070e9572
Split ActiveStakers over Bank and LeaderScheduler
2019-02-24 07:52:44 -07:00
66891d9d4e
Don't use global storage account
...
Other accounts would not be able to modify the system accounts userdata.
2019-02-22 15:59:55 -08:00
11c7aab023
Add some unit-tests
2019-02-22 16:18:10 -07:00
5541eedcc4
Reject modifications to userdata if not owned by the program
2019-02-22 16:18:10 -07:00