Trent Nelson
9754fc789e
Manage durable nonce stored value in runtime ( #7684 )
...
* Bank: Return nonce pubkey/account from `check_tx_durable_nonce`
* Forward account with HashAgeKind::DurableNonce
* Add durable nonce helper for HashAgeKind
* Add nonce util for advancing stored nonce in runtime
* Advance nonce in runtime
* Store rolled back nonce account on TX InstructionError
* nonce: Add test for replayed InstErr fee theft
2020-01-10 16:57:31 -07:00
Ryo Onodera
865c42465a
Cap file size for snapshot data files ( #7182 )
...
* save limit deserialize
* save
* Save
* Clean up
* rustfmt
* rustfmt
* Just comment out to please CI
* Fix ci...
* Move code
* Rustfmt
* Crean up control flow
* Add another comment
* Introduce predetermined constant limit on snapshot data files (deserialize side)
* Introduce predetermined constant limit on snapshot data files (serialize side)
* rustfmt
* Tweak message
* Revert dynamic memory limit
* Limit size of snapshot data file (de)serialization
* Fix test breakage
* Clean up
* Fix uses formatting
* Rename: deserialize_{for,from}_snapshot
* Simplify comment
* Use Slot
* Provide slot for status cache
* Align variable name with snapshot_status_cache_file_path
* Define serialize_snapshot_data_file_with_metrics
* Fix build.......
* De-marco serialize_snapshot_data_file_with_metrics
* Revert u64 => Slot
2020-01-10 09:49:36 +09:00
sakridge
73c93cc345
Print bank hash and hash inputs. ( #7733 )
2020-01-09 16:33:10 -08:00
Michael Vines
e782c26908
Prune older epoch stakes
2020-01-04 09:34:27 -07:00
Trent Nelson
7e94cc2cc3
Move nonce into system program ( #7645 )
...
automerge
2020-01-03 16:34:58 -08:00
Rob Walker
63f185f9bf
Delete unused type ( #7653 )
2020-01-02 13:15:31 -08:00
Rob Walker
e0564f628e
Use lamports in genesis ( #7631 )
...
* Use lamports in genesis
* readability
2019-12-28 12:49:10 -08:00
Rob Walker
120c8f244c
Add slot_history for slashing ( #7589 )
...
* Add slot_history for slashing
* fixup
* fixup
2019-12-23 12:23:45 -08:00
Ryo Onodera
3c361eb759
Check account hashes in snapshot ( #7559 )
...
* Check for incorrect hash value
* Finish up checking for incorrect hash value
* Fix comment a bit
Co-authored-by: sakridge <sakridge@gmail.com>
2019-12-20 09:39:30 +09:00
Tyera Eulberg
6aaf742dfe
Extend getConfirmedBlock rpc to return account pre- and post-balances ( #7543 )
...
automerge
2019-12-18 09:56:29 -08:00
Trent Nelson
0ea2843ec9
Durable Nonce - Authorized Noncer ( #7417 )
...
* Durable Nonce: Add authorized noncer to initialize instruction
* CLI: Adapt to nonce authority
* Durable Nonce: Introduce Authorize instruction
* Specify who needs to sign ix
* 'authorized-noncer' -> 'nonce-authority'
* Document signing authority for all instructions
2019-12-17 09:34:21 -05:00
Jack May
7c92bf15e2
Only return accounts that have changed since the bank's parent ( #7520 )
...
* Only return accounts that have changed since the bank's parent
* add test
2019-12-16 23:24:18 -08:00
Rob Walker
f05860672c
Add create-address-with-seed to solana-cli ( #7472 )
...
* Add create account with seed to cli
* clippy
* fixup
2019-12-14 04:38:24 -08:00
Rob Walker
777ae3c215
Add time since genesis to sysvar::clock ( #7289 )
...
* genesis timestamp
* remove clock::create_account()
* ..
* add configure-able creation time
* dividing by 1T, should be dividing by 1B
2019-12-12 14:03:43 -08:00
Parth
feeb1cb566
distribute leftover lamports ( #7396 )
...
* distribute leftover lamports
* add test scenario
* fix naming
2019-12-11 02:41:08 +05:30
Rob Walker
39cd6dff7d
turn on rent ( #7368 )
...
* turn on rent
* add rent exempt balances for bootstrap accounts
* use Rent::free() when not testing rent
2019-12-09 21:56:43 -08:00
Justin Starry
43e608af47
Expose stake delegations from bank for winner tool ( #7354 )
...
* Expose stake delegations from bank
* cargo fmt
* Add test
2019-12-08 20:52:01 -08:00
Trent Nelson
1ffd6b4b4d
Add program and runtime support for Durable Transaction Nonces ( #6845 )
...
* Rework transaction processing result forwarding
Durable nonce prereq
* Add Durable Nonce program API
* Add runtime changes for Durable Nonce program
* Register Durable Nonce program
* Concise comments and bad math
* Fix c/p error
* Add rent sysvar to withdraw ix
* Remove rent exempt required balance from Meta struct
* Use the helper
2019-12-07 12:54:10 -07:00
Justin Starry
b7d4330dd4
Fail fast if account paths cannot be canonicalized ( #7300 )
...
* Canonicalize account paths to avoid symlink issues
* fixes
2019-12-05 21:41:29 -05:00
sakridge
cfc21e1225
Only serialize rooted append vecs ( #7281 )
2019-12-05 14:27:46 -08:00
Parth
0d1fed78af
Pay rent to validators ( #7164 )
...
automerge
2019-12-05 06:10:34 -08:00
Parth
ba688cf629
enforce proper range for rent burn_percent ( #7217 )
...
* enforce proper range for burn_percent
2019-12-04 00:54:01 +05:30
Rob Walker
d5c8b26a45
bank_leak_mac_os ( #7209 )
2019-12-03 00:09:05 -08:00
Rob Walker
f9df17d8d0
track bank size ( #7144 )
...
* track bank size
* support non-linux a bit better
2019-12-02 13:47:20 -08:00
Sagar Dhawan
0e2e13f018
Update usages of u64 to Slot ( #7191 )
...
automerge
2019-12-02 11:57:40 -08:00
sakridge
887bff572a
More conservative purge_zero_lamport_accounts purge logic ( #7157 )
2019-12-02 09:51:05 -08:00
Tyera Eulberg
58c144ee55
Add getBlockTime rpc api ( #7130 )
...
* Add getBlockTime rpc api
* Add getBlockTime to docs
* Fix duration rounding for common tick/slot durations; add slot duration calculation
* Expose slots_per_year
* Use genesis values instead of clock defaults to calculate block offset
* Add get-block-time cli subcommand
* Fix test_rent: decrease magic number usage
2019-11-26 00:40:36 -07:00
Sagar Dhawan
76a68c26c9
Track a Bank's parent slot independently from parent bank ( #7131 )
2019-11-25 15:34:51 -08:00
Rob Walker
ef64f00cbb
Revert "Revert "add genesis stake placeholders ( #6969 )" ( #7109 )" ( #7124 )
...
This reverts commit 702f7cc51d
.
2019-11-25 15:11:55 -08:00
Rob Walker
acbe89a159
shrink stakes ( #7122 )
2019-11-25 13:14:32 -08:00
anatoly yakovenko
702f7cc51d
Revert "add genesis stake placeholders ( #6969 )" ( #7109 )
...
* Revert "add genesis stake placeholders (#6969 )"
This reverts commit 8a879faac7
.
* fixup! Revert "add genesis stake placeholders (#6969 )"
* fixup! fixup! Revert "add genesis stake placeholders (#6969 )"
* fixup! fixup! fixup! Revert "add genesis stake placeholders (#6969 )"
* fixup! fixup! fixup! fixup! Revert "add genesis stake placeholders (#6969 )"
* fmt
2019-11-23 23:15:21 -07:00
sakridge
6c89226ccf
Purge zero lamport accounts on snapshot ingestion ( #7010 )
...
Snapshots do not load the original index, so they must
purge zero lamport accounts again.
2019-11-22 18:22:28 -08:00
Ryo Onodera
8bb68c4e6a
Really remove mentions of 'genesis_block' ( #7099 )
2019-11-23 05:58:20 +09:00
Sagar Dhawan
4485b978c1
Clean up accounts hash internal state api ( #7090 )
2019-11-22 08:56:00 -08:00
Rob Walker
8a879faac7
add genesis stake placeholders ( #6969 )
...
* add investor stake placeholders
fixups
fixups
review comments, fixups
make more data-looky for easier management
rent may be zero
rework with more tables, derived keys
fixups
rebase-fix
fixups
fixups
* genesis is now too big to boot in 10 seconds
2019-11-21 12:05:31 -08:00
Sagar Dhawan
2c1b8fdd39
Add another test for bank state hashes ( #7073 )
...
automerge
2019-11-20 23:03:42 -08:00
Tyera Eulberg
97ca6858b7
Write transaction status and fee into persistent store ( #7030 )
...
* Pass blocktree into execute_batch, if persist_transaction_status
* Add validator arg to enable persistent transaction status store
* Pass blocktree into banking_stage, if persist_transaction_status
* Add validator params to bash scripts
* Expose actual transaction statuses outside Bank; add tests
* Fix benches
* Offload transaction status writes to a separate thread
* Enable persistent transaction status along with rpc service
* nudge
* Review comments
2019-11-20 16:43:10 -07:00
Parth
9f6a2e51b2
add credit-debit rent handling ( #6947 )
...
* add credit-debit rent handling
* add tests
* charge rent for validator account for fee credit
* rent is stored per tx instead of account
2019-11-21 01:57:02 +05:30
anatoly yakovenko
b150da837a
Use epoch as the gossip purge timeout for staked nodes. ( #7005 )
...
automerge
2019-11-20 11:25:18 -08:00
Jack May
d184d3a732
Merge native programs parts into one unit ( #7047 )
2019-11-20 10:12:43 -08:00
Sagar Dhawan
42da1ce4e2
Fix bank hash not changing when no internal state has changed ( #7052 )
...
* Fix bank hash not changing when no internal state has changed
* Fix unnecessary call to hash_internal_state
* Add blockhash into the bank_hash
* Add blockhash into the bank_hash and update tests
* Refactor accounts_db slot_hashes
* More clarity in comments
* Add clippy suggestion
* Grammar
* Fix compile after clippy made me break it
* Schooled by clippy
2019-11-19 20:19:43 -08:00
Michael Vines
cc96848b01
Remove unneeded prepare_batch() assert ( #6941 )
...
automerge
2019-11-13 17:08:21 -08:00
Michael Vines
9026339d35
Restore is_frozen() asserts ( #6925 )
2019-11-13 10:40:51 -07:00
Michael Vines
fcc2874591
Remove/address some TODOs ( #6923 )
2019-11-13 09:43:15 -07:00
Justin Starry
9807f47d4e
Rename genesis block to genesis config ( #6816 )
2019-11-08 23:56:57 -05:00
carllin
91be35731c
Fix freeze and register_tick race ( #6799 )
...
* Fix freeze and register_tick race
* Add test
2019-11-08 17:21:17 -08:00
carllin
66a0f54097
Replay should respect order of register_ticks with respect to blockhashes ( #6805 )
2019-11-08 12:29:41 -07:00
Parth
5bd05fba09
require `to` account signature ( #6658 )
...
* require to signature
* fixing invocation to create_account
* fix create_account references
* address review comment
* whacking bugs in tests
* fixing stake program tests
2019-11-08 15:57:35 +05:30
Sagar Dhawan
80a89b5e6d
Revert "Revert "Add inflation to epoch phases ( #6787 )" ( #6802 )" ( #6806 )
...
automerge
2019-11-07 18:33:14 -08:00
Sagar Dhawan
d89271528e
Revert "Add inflation to epoch phases ( #6787 )" ( #6802 )
...
automerge
2019-11-07 16:43:09 -08:00
Jack May
a9c4cd6cbe
Add inflation to epoch phases ( #6787 )
2019-11-07 10:53:04 -08:00
Justin Starry
e420800aeb
Update terminology for block height and genesis block ( #6782 )
2019-11-06 23:09:03 -05:00
carllin
24102a7435
Allow voting on empty banks ( #6719 )
...
* Allow votes on empty banks
* Remove making first bank is_delta true, no longer necessary for idling
* Remove votable from ledger tool
2019-11-06 01:02:26 -08:00
Tyera Eulberg
c6931dcb07
Remove credit-only account handling ( #6726 )
...
* Renaming
- credit-only/credit-debit to read-only/read-write
- debitable to writable
* Remove credit handling, making credit-only accounts read-only
* Update programs to remove deprecated credit-only account designation
* Use readonly and writable instead of underscored types
2019-11-05 09:38:35 -07:00
anatoly yakovenko
f54cfcdb8f
Store and persists full stack of tower votes in gossip ( #6695 )
...
* vote array
wip
wip
wip
update
gossip index should match tower index
tests build
clippy
test index after expired vote
test
bank specific last vote sync time
* verify
* we are likely to see many more warnings about old votes now
2019-11-04 16:19:54 -08:00
Rob Walker
efe260f12e
sysvar trait ( #6667 )
...
* sysvar trait
* get the new guy in on it
2019-11-04 12:31:24 -08:00
Rob Walker
b9b535c30f
move system_instruction::transfer() `to` credit-debit ( #6677 )
...
* transfer no credit only
* use a credit-only transfer in the credit-only test
2019-11-04 12:30:59 -08:00
Trent Nelson
5416c114cf
SDK: Add sysvar to expose recent block hashes to programs ( #6663 )
...
* SDK: Add sysvar to expose recent block hashes to programs
* Blockhashes is one word
* Missed one
* Avoid allocs on update
* unwrap_or_else
* Use iterators
* Add microbench
* Revert "unwrap_or_else"
This reverts commit a8f8c3bfbe0d88e2229e67a29e9d2b489b93ff62.
* Revert "Avoid allocs on update"
This reverts commit 486f01790c271cf09ac3dbffba0e40e526e81324.
2019-11-04 10:51:15 -07:00
Michael Vines
3938142535
keygen: add dedicated `solana-keygen grind` command ( #6697 )
...
* Remove dead code
* Speed up vanity key grinding
2019-11-03 19:41:26 -08:00
Michael Vines
50a17fc00b
Use Slot and Epoch type aliases instead of raw u64 ( #6693 )
...
automerge
2019-11-02 00:38:30 -07:00
Justin Starry
e8e5ddc55d
Verify number of hashes for each block of entries ( #6262 )
...
* Verify number of hashes for each block of entries
* Fix blocktree processor tick check
* Rebase once more
2019-10-31 16:38:50 -04:00
Rob Walker
fa12a5f70b
kill rent calculator ( #6625 )
2019-10-30 16:25:12 -07:00
Rob Walker
b4119c454a
credit_only credits forwarding ( #6509 )
...
* credit_only_credits_forwarding
* whack transfer_now()
* fixup
* bench should retry the airdrop TX
* fixup
* try to make bench-exchange a bit more robust, informative
2019-10-23 22:01:22 -07:00
sakridge
f1172617cc
Purge accounts with lamports=0 on rooted forks ( #6315 )
2019-10-23 12:46:48 -07:00
Michael Vines
35cc74ef25
Add GenesisBlock::OperatingMode to control how cluster features are activated ( #6430 )
2019-10-23 11:50:10 -07:00
Michael Vines
3fb70b8d47
Ban XXX, TBD, FIXME comments ( #6486 )
2019-10-21 16:43:11 -07:00
Greg Fitzgerald
9232057e95
Rename replicator to archiver ( #6464 )
...
* Rename replicator to archiver
* cargo fmt
* Fix grammar
2019-10-21 11:29:37 -06:00
Justin Starry
09abbd93b1
Cleanup register_tick special handling ( #6462 )
2019-10-21 10:51:02 -04:00
Rob Walker
e2c316d2d0
system_instruction_processor updates ( #6448 )
...
* zero lamport account creation
* whack create_user_account, take 2
* target->to
* ..
* ..
* update chacha golden
* update chacha golden
* ..
* ..
2019-10-19 18:23:27 -07:00
Sagar Dhawan
7ae5ff838b
Revert "collect rent from accounts (take:2) ( #6360 )" ( #6400 )
...
This reverts commit c1b401a04a
.
2019-10-16 13:31:21 -07:00
Justin Starry
7e6e7e8406
Remove special handling of first ledger tick ( #6263 )
...
* Remove special handling of first ledger tick
* Fix subtraction overflow
* @garious feedback
* Back to height
* More tick_height name changes
* Fix off-by-one
* Fix leader tick error
* Fix merge conflict
* Fix recently added test
2019-10-16 15:53:11 -04:00
Ryo Onodera
e267dfacdd
Stabilize some banking stage tests ( #6251 )
...
* Stabilize some banking stage tests
Fixes #5660
* Fix CI...
* clean up
* Fix ci
* Address review nits
* Use bank.max_tick_height due to off-by-one for no PohRecord's clearing bank
* Fix CI...
* Use bank.max_tick_height() instead for clarity
2019-10-16 12:37:27 -07:00
Greg Fitzgerald
ee099b0880
Delete ref annotations ( #6394 )
...
automerge
2019-10-16 09:27:49 -07:00
Justin Starry
996c8cf2eb
Don't add bogus native loader if loader account already exists ( #6377 )
...
* Don't add bogus native loader account if it already exists
* Add assert for native loader account owner
2019-10-16 00:33:15 -04:00
Parth
c1b401a04a
collect rent from accounts (take:2) ( #6360 )
...
* collect rent from credit debit accounts
* collect rent from credit only account
* rent_collector now can deduct partial rent + no mem copy + improved design
* adding a test to test credit only rent
* add bank level test for rent deduction
* add test to check if hash value changes or not
* adding test scenario for lamport circulation
2019-10-16 07:45:47 +05:30
Rob Walker
9803f167bd
Revert "collect rent from the accounts ( #6181 )" ( #6356 )
...
automerge
2019-10-14 16:16:44 -07:00
Parth
e210e76bd5
collect rent from the accounts ( #6181 )
...
* collect rent from credit-debit account
* collect rent from credit only account
* improved design for rent collection
* only process if collected rent is non zero
* rent_collector now can deduct partial rent + no mem copy
* adding a test to test credit only rent
* add bank level test for rent deduction
* add test to check if hash value changes or not
* adding test scenario for lamport circulation
* combining rent debtors into credit only locks
2019-10-15 02:00:29 +05:30
Rob Walker
7cf90766a3
add epoch_schedule sysvar ( #6256 )
...
* add epoch_schedule sysvar
* book sheesh!
2019-10-08 22:34:26 -07:00
Michael Vines
c34cc4918f
Prevent repeated accounts in genesis to avoid breaking account hashing
2019-10-07 08:12:18 +09:00
Greg Fitzgerald
fb39bd45d7
Revert "Rename solana-runtime to sealevel ( #6239 )" ( #6247 )
...
This reverts commit 2e921437cd
.
2019-10-04 19:33:29 -06:00
Greg Fitzgerald
2e921437cd
Rename solana-runtime to sealevel ( #6239 )
...
automerge
2019-10-04 15:02:44 -07:00
Ryo Onodera
ffae4662bc
Use AtomicU64 now that it's stabilized ( #6222 )
2019-10-03 20:02:28 -07:00
Parth
92ea11fca1
make executable, vote and stake account rent exempt ( #6017 )
...
* add missing convenience method
* require vote account to be exempt
* make stake account rent exempt
* making executable rent exempt
* rent will be initialized in genesis
* add test for update_rent
2019-10-04 02:52:48 +05:30
Justin Starry
8d0236e3f1
Rename bank height to block_height and expose method ( #6199 )
...
* Rename bank bank_height to block_height
* Expose block_height method
2019-10-01 14:55:39 -04:00
Justin Starry
2f92b92a8a
Expose current stake accounts of a bank for use in cli tooling ( #6184 )
2019-09-30 21:57:49 -04:00
Parth
67d07254c2
Add rent estimation rpc ( #6109 )
...
* server side new rpc endpoint
* client side rpc
* take data_len as usize
Co-Authored-By: Tyera Eulberg <teulberg@gmail.com>
* add test and documentation
2019-09-26 23:27:13 +05:30
Rob Walker
43795193c4
add authorized parameters to vote api ( #6072 )
...
* add authorized parameters to vote api
* code review
2019-09-25 13:53:49 -07:00
Sagar Dhawan
e987d0094f
Move status cache serialization to the Snapshot Packager service ( #6081 )
...
* Move status cache serialization to the Snapshot Packager service
* Minor comment updates
* use ok_or_else instead of ok_or
* satus cache
* Remove assert when snapshot format is wrong
* Fix compile
* Remove slots_to_snapshot from bank forks
* Address review comment
* Remove unused imports
2019-09-25 13:42:19 -07:00
carllin
261ea00efb
Fix race between observing tick height being set to last tick and blockhash being observed on a bank ( #6013 )
2019-09-23 12:54:39 -07:00
carllin
8240d1fe0a
Confidence implementation ( #5993 )
...
* Change confidence parameters
* Add status_cache_ancestors to get all relevant ancestors of a bank including roots from status cache
* Fix and add tests
* Clippy
2019-09-20 19:38:56 -07:00
Michael Vines
a60a3efc1a
Revert "require stake, vote and executable accounts to be rent exempt ( #5928 )" ( #6005 )
...
This reverts commit 11e6197a83
.
2019-09-20 14:10:39 -07:00
sakridge
19ae556857
hash account state on store ( #5573 )
2019-09-20 13:21:12 -07:00
Parth
11e6197a83
require stake, vote and executable accounts to be rent exempt ( #5928 )
...
* require vote account to be exempt
* make stake account rent exempt
* add rent exempted system instruction
* use rent exemption instruction in vote and stake api
* use rent exempted account while creating executable account
* updating chacha golden hash as instruction data has changed
* rent will be initialized for genesis bank too
2019-09-20 16:52:17 +05:30
Rob Walker
5cbd1190b2
transaction batch ( #5962 )
...
* transaction batch
* fixup
2019-09-19 10:06:08 -07:00
Michael Vines
e26f68fe62
Get transactions from LockedAccountsResults when possible ( #5923 )
2019-09-17 08:41:56 -07:00
Parth
d63518a835
Rent tangential stuff ( #5910 )
...
* rename rent.rs to rent_calculator.rs
* add rent sysvar
* integrate rent_calculator with bank
* rent_calculator integration with genesis
* add test for rent sysvar
2019-09-17 17:12:55 +05:30
Michael Vines
f10438d530
Respect randomized transaction order when unlocking accounts ( #5918 )
2019-09-16 21:45:16 -07:00
Jack May
1853771930
Add support for SDK sysvar types ( #5876 )
2019-09-10 18:53:02 -07:00
Jack May
61fe1aa9cf
SDK cleanup to reduce featurization ( #5856 )
2019-09-09 16:38:52 -07:00
Jack May
a317e9513f
Add sysvar support ( #5838 )
2019-09-09 10:55:35 -07:00
sakridge
b35c022629
More types ( #5846 )
...
automerge
2019-09-08 11:13:59 -07:00
Jack May
e8d88f3237
Split SDK's timing.rs ( #5823 )
2019-09-06 14:30:56 -07:00
Parth
7dfb735db9
randomize tx ordering ( #4978 )
...
Summary of Changes:
This change adds functionality to randomize tx execution for every entry. It does this by implementing OrderedIterator that iterates tx slice as per the order specified. The order is generated randomly for every entry.
2019-08-28 21:08:32 +05:30
Sunny Gleason
34ab25a88b
feat: getInflation() endpoint ( #5681 )
2019-08-27 18:17:03 -04:00
Michael Vines
4e827af392
Remove unnecessary trailing semicolons ( #5636 )
2019-08-23 22:47:54 -07:00
Rob Walker
0ffe7a9c8f
plumb some rent ( #5610 )
...
* plumb some rent
* nits
* fixups
* fixups
* fixups
2019-08-23 14:04:53 -07:00
Rob Walker
814af378a7
stake cooldown ( #5553 )
...
* stake cooldown
* fixups
* sheesh
2019-08-17 18:12:30 -07:00
Michael Vines
8258532791
System program is now registered like all other native programs ( #5526 )
2019-08-15 21:07:00 -07:00
carllin
d791c70d90
Snapshot optimizations ( #5518 )
...
* Limit slots_since_snapshot size, only package latest snapshot, refactor tests
* Add test checking status_cache.roots == bank_forks.slots_since_snapshot after bank_forks.set_root()
2019-08-13 22:39:29 -07:00
carllin
cd14a940d8
Allow process_blocktree() to start processing from any root ( #5484 )
...
* Remove unnecessary entry_height from BankInfo
* Refactor process_blocktree to support process_blocktree_from_root
* Refactor to process blocktree after loading from snapshot
* On restart make sure bank_forks contains all the banks between the root and the tip of each fork, not just the head of each fork
* Account for 1 tick_per_slot in bank 0 so that blockhash of bank0 matches the tick
2019-08-13 17:20:14 -07:00
carllin
58d4e32c97
Remove serialization of future AppendVecs and serialize AccountStorage correctly ( #5510 )
2019-08-13 16:05:37 -07:00
Rob Walker
07d11be6ab
add global stake warmup ( #5483 )
...
* add global stake warmup
* integrate stake history into runtime
* fixup core tests
* fixup
* remove existing cooldown tests for now
2019-08-12 20:59:57 -07:00
Justin Starry
0fde19239b
Rate limit counter metrics points to one per second ( #5496 )
...
* Rate limit counter metrics points to one per second
* Remove old env var
* Test that metrics counter is incrementing
* Fix typo
2019-08-12 18:15:34 -04:00
Rob Walker
ed093f86f9
harmonize percentage members ( #5459 )
...
* harmonize percentage members
* update tests
* update capitalization when burning fees
* verify capitalization in fee burn
* fixup
2019-08-09 13:58:46 -07:00
Justin Starry
4f86c0b74a
Rate limit transaction counters ( #5447 )
...
* Rate limit transaction counters
* @sakridge feedback
* Set default high metrics rate for multinode demo
* Fix tests
* Swap defaults and fix env var tests
* Only set metrics rate if not already set
2019-08-08 17:05:06 -04:00
Sagar Dhawan
9dcf3347f5
Refactor status cache and remove complex serialize/deserialize ( #5335 )
...
automerge
2019-08-06 18:47:30 -07:00
carllin
1dbb5c8647
Deserialize snapshots ( #5417 )
...
* Deserialize snapshots
2019-08-05 22:53:19 -07:00
sakridge
832dfd4ab0
Change bank to not create default ( #5409 )
2019-08-02 14:46:53 -07:00
Rob Walker
f7d3f55566
fix epoch_stakes again ( #5396 )
2019-08-01 14:27:47 -07:00
carllin
6cb2040a1b
Snapshot Packaging Service ( #5262 )
...
* Snapshot serialization and packaging
2019-07-31 17:58:10 -07:00
Rob Walker
9278201198
fix epoch_stakes ( #5355 )
...
* fix epoch_stakes
* fix stake_state to use stakers_epoch
* don't allow withdrawal before deactivation
2019-07-31 15:13:26 -07:00
Justin Starry
84368697af
Fix metrics when leader does not report metrics ( #5291 )
2019-07-30 16:18:33 -04:00
Rob Walker
4a57cd3300
Update bank.rs
2019-07-30 11:33:06 -07:00
Rob Walker
8537da19bb
groom accounts_db ( #5283 )
2019-07-25 22:59:28 -07:00
Sagar Dhawan
a233a1c822
Fix poh recorder not flushing virtual ticks immediately ( #5277 )
...
* Fix poh not flushing virtual ticks immediately
* Fix test_would_be_leader_soon
2019-07-25 11:08:44 -07:00
Rob Walker
8a12ed029c
make accounts_db own the directory paths ( #5230 )
...
* change paths to something accounts_db (the singleton) owns, fixes SIGILL
* fail deserialize if paths don't work
serialize paths, too
* test that paths are populated from a bank snapshot
2019-07-23 13:47:48 -07:00
sakridge
b505a0df22
Throw more threads at hash_internal_state ( #5023 )
2019-07-16 16:58:30 -07:00
Rob Walker
fe87c05423
fix transaction_count ( #5110 )
...
* fix transaction_count
* add sig count to bank hash
2019-07-15 13:42:59 -07:00
Rob Walker
16b6576839
use precalculated max_tick_height ( #5084 )
2019-07-12 22:25:48 -07:00
Rob Walker
d2b6c2e0ce
syscall work, rename syscall to sysvar, rename current to clock ( #5074 )
...
* syscall work, rename syscall to sysvar, rename current to clock
* missed one
* nit
2019-07-12 16:38:15 -07:00
carllin
22315d88e7
Fix credit only commit_credits race ( #5028 )
...
* Fix credit only drain race
* Refactor commit credits for tests
* Fix tests to use commit_credits_unsafe
2019-07-11 18:46:49 -07:00
Tyera Eulberg
b2c776eabc
Fix getProgramAccounts RPC ( #5024 )
...
* Use scan_accounts to load accounts by program_id
* Add bank test
* Use get_program_accounts in RPC
2019-07-11 12:58:28 -06:00
Sagar Dhawan
b8e7736af2
Move SLOTS_PER_SEGMENT to genesis ( #4992 )
...
automerge
2019-07-09 16:48:40 -07:00
Rob Walker
49250f62aa
make commit_credits one trip through the rwlock ( #4969 )
2019-07-08 20:46:21 -07:00
Rob Walker
eb4edd75e6
make bank commit_credits non public ( #4944 )
...
* make bank commit_credits non pub
* track down create() failure
* move bank_client to process_transaction(), which commits credits
2019-07-08 15:37:54 -07:00
TristanDebrunner
091999a17e
fix Instruction and CompiledInstruction field names ( #4895 )
...
* s/program_ids_index/program_id for Instruction
* s/program_ids_index/program_id_index for CompiledInstruction
2019-07-01 18:34:22 -06:00
carllin
0c8f187993
remove syscall tick height ( #4891 )
2019-07-01 16:21:51 -07:00
sakridge
a89589a1d5
Add Measure abstraction over measuring time intervals ( #4851 )
...
Allows one to swap in different implementations. This provides
the normal Insant::now() -> .elapsed() path.
2019-06-29 15:34:49 +02:00
Tyera Eulberg
66552d7047
Credit-Only Accounts: Cache account balance for thread-safe load/store ( #4691 )
...
* Implement CreditOnlyLocks
* Update credit-only atomic on account load
* Update credit-only atomic after bank.freeze_lock; store credits if all credit-only lock references are dropped
* Commit credit-only credits on bank freeze
* Update core to CreditAccountLocks
* Impl credit-only in System Transfer
* Rework CreditAccountLocks, test, and fix bugs
* Review comments: Pass CreditAccountLocks by reference; Tighten up insert block
* Only store credits on completed slot
* Check balance in bench_exchange funding to ensure commit_credits has completed
* Add is_debitable info to KeyedAccount meta to pass into programs
* Reinstate CreditOnlyLocks check on lock_account
* Rework CreditAccountLocks to remove strong_count usage
* Add multi-threaded credit-only locks test
* Improve RwLocks usage
* Review comments: panic if bad things happen; tighter code
* Assert lock_accounts race does not happen
* Revert panic if bad things happen; not a bad thing
2019-06-27 17:25:10 -04:00
carllin
97c97db97e
Fix early exit clearing all buffered packets ( #4810 )
2019-06-26 22:39:50 -07:00
Sagar Dhawan
8cea650535
Handle NaN and inifinite point values ( #4839 )
2019-06-26 18:33:52 -07:00
Sagar Dhawan
df1c473341
Add storage point tracking and tie in storage rewards to economics ( #4824 )
...
* Add storage point tracking and tie in storage rewards to epochs and economics
* Prevent validators from updating their validations for a segment
* Fix test
* Retain syscall scoping for readability
* Update Credits to own epoch tracking
2019-06-26 10:40:03 -07:00
Rob Walker
8a64e1ddc3
add fee burning ( #4818 )
2019-06-26 10:13:21 -07:00
Sathish
9e7f618cff
Set proper count value for account stores ( #4797 )
...
* set count values for store accounts
* Use AppendVecId type
2019-06-25 07:21:45 -07:00
anatoly yakovenko
29611fb61d
tower consensus naming ( #4598 )
...
s/locktower/tower/g
2019-06-24 13:41:23 -07:00
Rob Walker
a49f5378e2
rewrite vote credits redemption to eat from rewards_pools on an epoch-sensitive basis ( #4775 )
...
* move redemption to rewards pools
* rewrite redemption, touch a few other things
* re-establish test coverage
2019-06-21 20:43:24 -07:00
Rob Walker
1f0f947ed2
add validator rewards pools ( #4742 )
...
* add validator rewards pools
* populate rewards syscall
2019-06-20 12:22:29 -07:00
Rob Walker
7ea522e851
add rewards syscall, groom some others ( #4740 )
2019-06-19 19:46:47 -07:00
Rob Walker
41fbdc6e08
use stake ( #4721 )
2019-06-19 11:54:52 -07:00
Sathish Ambley
8b41a5d725
periodically save config in separate folders
2019-06-17 22:48:27 -07:00
Sathish Ambley
7fd879b417
Restart validator nodes from snapshots
2019-06-17 22:48:27 -07:00
Rob Walker
d86358eedc
add Account::new_data ( #4701 )
...
* add account_new_data
* fixup
* fixup
2019-06-17 15:58:05 -07:00
Rob Walker
3fe5f886d7
change store to store_account ( #4689 )
2019-06-14 13:34:15 -07:00
Rob Walker
4c6a6d63bf
add MiningPools, fund validator MiningPools from inflation ( #4676 )
...
* add MiningPool fund validator MinigPools from inflation
* fixup
* finish rename of MINIMUM_SLOT_LENGTH to MINIMUM_SLOTS_PER_EPOCH
* deterministic miningpool location
* point_value, not credit_value... use f64
2019-06-14 11:38:37 -07:00
Greg Fitzgerald
c6b4a3a706
Witness account data in Budget ( #4650 )
...
* Add support for contracts based on account data to Budget
* Add program_id to account constraints
* No longer require a signature for the account data witness
* Rename bank::store to store_account
* fmt
* Add a doc
* clippy
2019-06-13 18:20:28 -07:00
sakridge
9e3758983d
Find max root and purge roots below it. ( #4645 )
...
* Test for forking accounts
* Find max root and purge roots below it.
2019-06-13 17:35:16 -07:00
Tyera Eulberg
8abf22f34b
Temporarily revert: Convert System Transfer accounts to credit-only ( #4670 )
2019-06-13 11:01:09 -06:00
Rob Walker
767efab941
add inflation to genesis ( #4652 )
...
* add inflation to genesis
* avoid having to write new()
2019-06-11 21:42:31 -07:00
Rob Walker
575a897ffc
track market cap ( #4643 )
...
* track market cap
* fixup, rebase
* prettier
2019-06-11 17:04:13 -07:00
Rob Walker
3217a1d70c
use highest staked node as bootstrap leader, remove bootstrap_leader from genesis_block ( #4635 )
...
* use highest staked node as bootstrap leader, remove bootstrap_leader from genesis_block
* clippy
* fixup
* fixup
2019-06-11 11:44:58 -07:00
Rob Walker
e56430c9fb
make runtime depend on bpf_loader ( #4601 )
...
* make runtime depend on bpf_loader
* remove vote redundancy, move bpf_loader to genesis, export program\! from bpf_loader crate
* move bpf_loader specification into genesis
* bpf tests to use genesis with bpf
* need to avoid depending on programs, except for macros
2019-06-11 10:27:22 -07:00
Michael Vines
e4d8ea11ac
Make lamports_per_signature dynamic based on cluster load ( #4562 )
...
* Make lamports_per_signature dynamic based on cluster load
* Move transaction-fees.md to implemented
2019-06-10 22:18:32 -07:00
carllin
a4035a3c65
Remove record locks and parent locks from accounts ( #4633 )
...
* Revert "Fix parent record locks usage in child banks (#4159 )"
This reverts commit 69eeb7cf08
.
* Revert "Fix DuplicateSignatures caused by races on frozen banks (#3819 )"
This reverts commit 083090817a
.
* Remove unused imports
2019-06-10 22:05:46 -07:00
Tyera Eulberg
807c69d97c
Slimmer implementation of credit-only accounts ( #4592 )
...
* Add credit-only debit/data check to verify_instruction
* Store credits and pass to accounts_db
* Add InstructionErrors and tests
* Relax account locks for credit-only accounts
* Collect credit-only account credits before passing to accounts_db to store properly
* Convert System Transfer accounts to credit-only, and fixup test
* Functionalize collect_accounts to unit test
* Review comments
* Rebase
2019-06-10 20:50:02 -06:00
Rob Walker
37c2fa1d8d
add current to bank syscalls ( #4581 )
2019-06-07 11:41:34 -07:00
carllin
c9d63204eb
Replace unneeded seqcst with relaxed on atomic operations ( #4587 )
2019-06-06 23:53:21 -07:00
Sagar Dhawan
688f8a669a
Add a storage accounts cache to Bank ( #4578 )
2019-06-06 17:40:01 -07:00
Michael Vines
ff77789718
Collect fees at the end of a slot ( #4525 )
2019-06-03 18:40:20 -07:00
Rob Walker
482ef51502
register_tick() on the correct bank ( #4506 )
...
* skip syscall_id in hash and delta
* add more tests, skip syscalls
2019-06-03 09:04:26 -07:00
Tyera Eulberg
64e8a21d73
Add tick height syscall ( #4497 )
...
* Remove tick_height from entrypoint signature
* Impl tick_height syscall and use in storage program
* Properly remove tick height from bpf handling
2019-05-31 16:29:21 -06:00
Rob Walker
1c1d83bd56
skip syscall_id in hash and delta ( #4500 )
...
* skip syscall_id in hash and delta
* add more tests, skip syscalls
2019-05-31 12:26:45 -07:00
Sathish
182096dc1a
Create bank snapshots ( #4244 )
...
* Revert "Revert "Create bank snapshots (#3671 )" (#4243 )"
This reverts commit 81fa69d347
.
* keep saved and unsaved copies of status cache
* fix format check
* bench for status cache serialize
* misc cleanup
* remove appendvec storage on purge
* fix accounts restore
* cleanup
* Pass snapshot path as args
* Fix clippy
2019-05-30 21:31:35 -07:00
Michael Vines
1de805e7cd
Add fees syscall to expose cluster fees into programs ( #4472 )
2019-05-30 15:18:48 -07:00
Rob Walker
441fed7a5b
check freeze before updating slot_hashes ( #4448 )
...
* check freeze before updating slot_hashes
* fixup
2019-05-28 12:25:55 -07:00
Tyera Eulberg
0e26ee854b
Add test indicating need for credit-only account handling ( #4441 )
...
* Add test indicating need for credit-only account handling
* Add commented correct future test lines
2019-05-28 11:57:22 -04:00
Michael Vines
9843c3a5cb
Restrict transaction fee payers to system accounts ( #4198 )
...
automerge
2019-05-24 13:06:55 -07:00
Michael Vines
cfe5afd34c
_id => _pubkey variable renaming ( #4419 )
...
* wallet: rename *_account_id to *_account_pubkey
* s/from_id/from_pubkey/g
* s/node_id/node_pubkey/g
* s/stake_id/stake_pubkey/g
* s/voter_id/voter_pubkey/g
* s/vote_id/vote_pubkey/g
* s/delegate_id/delegate_pubkey/g
* s/account_id/account_pubkey/g
* s/to_id/to_pubkey/g
* s/my_id/my_pubkey/g
* cargo fmt
* s/staker_id/staker_pubkey/g
* s/mining_pool_id/mining_pool_pubkey/g
* s/leader_id/leader_pubkey/g
* cargo fmt
* s/funding_id/funding_pubkey/g
2019-05-23 23:20:04 -07:00
Rob Walker
35e8f966e3
add freeze_lock() and fix par_process_entries() failure to detect self conflict ( #4415 )
...
* add freeze_lock and fix par_process_entries failure to detect self conflict
* fixup
* fixup
2019-05-23 17:35:15 -07:00
Michael Vines
2ed77b040a
create_genesis_block() now returns a struct ( #4403 )
2019-05-22 20:39:00 -07:00
Rob Walker
7ada8510c4
add slot_hashes to bank, remove phony slot_hashes_from_vote_instruction ( #4401 )
2019-05-22 19:07:56 -07:00
Michael Vines
f079a78c5e
Remove fee arg from system_transaction::* ( #4346 )
...
automerge
2019-05-20 10:03:19 -07:00
Pankaj Garg
9476fe5ce3
Use log levels for datapoint metrics ( #4335 )
...
* Use log levels for datapoint metrics
* address review comments
* fix cyclomatic complexity
2019-05-17 17:34:05 -07:00
Pankaj Garg
b2ce5dc9f5
Adjust log level for counter metrics ( #4323 )
2019-05-17 07:00:06 -07:00
Rob Walker
87414de3e2
switch over to passive stakes ( #4295 )
...
* add failing test
* switch over to passive stakes
* test multiple stakers
2019-05-16 08:23:31 -07:00
Pankaj Garg
778bcbce50
Reduce log level for frequent log message and frequency for metrics datapoint ( #4300 )
...
automerge
2019-05-15 16:01:17 -07:00
Rob Walker
0c1191c3ee
rework staking_utils ( #4283 )
2019-05-14 16:15:51 -07:00
Rob Walker
216e9a61a0
expose stake directly from bank ( #4281 )
2019-05-14 13:35:14 -07:00
Rob Walker
e8ad822111
get program names from programs ( #4273 )
...
* get program names from programs
* fixup
2019-05-14 10:44:16 -07:00
carllin
3bd921264a
Move EpochSchedule into own module ( #4272 )
2019-05-13 16:24:32 -07:00
Rob Walker
0d2574f8f0
get DLL names from programs that made the DLL ( #4269 )
...
* get program names from programs
* fixup
2019-05-13 14:17:44 -07:00
Rob Walker
23c696706b
add stake_accounts to banks' caches ( #4267 )
2019-05-13 12:33:23 -07:00
Jack May
f567877d1d
Cleanup metrics ( #4230 )
2019-05-10 08:33:58 -07:00
Rob Walker
81fa69d347
Revert "Create bank snapshots ( #3671 )" ( #4243 )
...
This reverts commit abf2b300da
.
2019-05-09 19:27:27 -07:00
Sathish
abf2b300da
Create bank snapshots ( #3671 )
...
* Be able to create bank snapshots
* fix clippy
* load snapshot on start
* regenerate account index from the storage
* Remove rc feature dependency
* cleanup
* save snapshot for slot 0
2019-05-09 19:27:06 -07:00
carllin
ab3c988146
API for getting first and last slots in epoch ( #4241 )
...
automerge
2019-05-09 16:06:57 -07:00
Pankaj Garg
1a2b131ceb
Don't forward transactions that are expired or failed signature check ( #4199 )
2019-05-08 10:32:25 -07:00
Rob Walker
b49f8c0984
reduce replicode, introduce passive staking support ( #4207 )
2019-05-07 22:22:43 -07:00
Michael Vines
7609a007c6
Add FeeCalculator to the genesis block ( #4196 )
2019-05-07 20:28:41 -07:00
carllin
69eeb7cf08
Fix parent record locks usage in child banks ( #4159 )
...
* Introduce record locks on txs that will be recorded
* Add tests for LockedAccountsResults
* Fix broken bench
* Exit process_entries on detecting conflicting locks within same entry
2019-05-07 15:51:35 -07:00
Rob Walker
8e400fc4bd
rework genesis (passive staking groundwork) ( #4187 )
...
* rework genesis
* fixup
2019-05-07 11:16:22 -07:00
Tyera Eulberg
71f9b44687
Add Confirmations parameter to RPC Subscriptions ( #4154 )
...
* Add optional depth parameter to pubsub, and store in subscriptions
* Pass bank_forks into rpc_subscription; add method to check depth before notify and impl for account subscriptions
* Impl check-depth for signature subscriptions
* Impl check-depth for program subscriptions
* Plumb fork id through accounts
* Use fork id and root to prevent repeated account notifications; also s/Depth/Confirmations
* Write tests in terms of bank_forks
* Fixup accounts tests
* Add pubsub-confirmations tests
* Update pubsub documentation
2019-05-06 08:31:50 -06:00
Rob Walker
7f75cc8906
update nightly to 2019-05-01 ( #4111 )
...
* update nightly to 2019-05-01
* cargo fmt
* cargo fmt
* increase bench timeout
2019-05-01 20:08:42 -07:00
carllin
73f250f03a
Make minimum warmup period 32 slots long ( #4031 )
...
* Make minimum warmup period 32 slots long
* PR fixes
2019-04-29 15:26:52 -07:00
anatoly yakovenko
c2193a37ce
cleanup unused function ( #4064 )
2019-04-29 12:45:14 -07:00
anatoly yakovenko
acba1d6f9e
Roots are added out of order to the accounts index ( #4051 )
...
* fix root race
* assert root order
* fixup! assert root order
* last root test
* update
* fix tests
2019-04-28 10:27:37 -07:00
anatoly yakovenko
3e14af5033
bast bank ancestor check ( #4050 )
2019-04-28 10:27:09 -07:00
sakridge
aa0b67c93c
Use newer blockhash for recent_confirmed_blockhash api ( #3995 )
...
Oldest blockhash is sometimes too old and does not allow
for transactions to go through.
2019-04-25 16:57:25 -07:00
carllin
ab11327e34
Fix mismatch between leader/validator bank votability ( #3942 )
...
* Fix mismatch between leader/validator bank votability
2019-04-23 15:32:19 -07:00
Greg Fitzgerald
29698fcd38
Cleanup stragglers from move-to-transfer rename ( #3947 )
2019-04-23 13:30:42 -06:00
Jack May
afb00432d4
Add BankClient support to bench-exchange ( #3902 )
2019-04-19 13:18:20 -07:00
carllin
512bfc93cb
Add a cache for leader schedules ( #3841 )
...
* Add a cache for leader schedules
2019-04-19 02:39:44 -07:00
anatoly yakovenko
1e20d449ce
`bank_height / slot` is the block drop rate ( #3816 )
...
* bank_height/slot would give is the block drop rate
* use metrics
2019-04-16 19:35:38 -07:00
anatoly yakovenko
f73d38739a
Split AccountsDB from Accounts ( #3808 )
...
Split AccountsDB from Accounts
2019-04-16 13:32:22 -07:00
anatoly yakovenko
68fc303b9b
Rework Accounts for fast squash, hashing state and checkpoint recovery. ( #3613 )
...
* accounts rewrite
* ignore grow tests
* skip duplicate roots
* allow for a root race
* logger
* accounts_index tests
* tests
* tests
2019-04-15 17:15:50 -07:00
Rob Walker
de52747950
remove max_tick_height replicode ( #3765 )
2019-04-14 19:15:31 -07:00
Sagar Dhawan
1e8f83a74a
Use a better name for new api
2019-04-12 14:58:22 -07:00
Sagar Dhawan
1db80d79fc
Update get recent blockhashes to return confirmed blockhashes only
2019-04-12 14:58:22 -07:00
carllin
787dc5748a
Fixed DuplicateSigs ( #3727 )
...
* Fixed DuplicateSigs by not recording errors in signature cache of bank
2019-04-11 11:51:34 -07:00
Greg Fitzgerald
8ada4bfd1f
Remove test now covered by Vote crate
2019-04-11 10:53:11 -07:00
Greg Fitzgerald
5d4624e75f
Use Bank::add_instruction_processor to bypass manual build step
2019-04-11 10:53:11 -07:00
Rob Walker
f1e7237c09
vote_api cleanup ( #3710 )
...
* vote_api cleanup
* fixups
* fixup
* remove unused code
* revert removal of serialize and deserialize
* ...
* increase coverage, bootstrap staking
* Sagar's STAKE to my VOTE
2019-04-10 17:52:47 -07:00
Sagar Dhawan
c0808d01f8
Add tests
2019-04-10 15:51:00 -07:00
Sagar Dhawan
7fd5e51168
Make sure bank 0 is votable and correctly designate signer
2019-04-10 15:51:00 -07:00
Rob Walker
d30049b8eb
test for debit of TX fees on full process_transaction() ( #3643 )
...
* fix double debit of TX fees
* add test that fails when removing that line
* put that line back in
* comments
2019-04-05 16:55:58 -07:00
Rob Walker
a5b5248a09
move vote_accounts up ( #3647 )
2019-04-05 14:23:00 -07:00
Rob Walker
9f046a023e
move transaction_count up ( #3618 )
...
* move transaction_count up
* fixup
2019-04-05 10:42:25 -07:00
Greg Fitzgerald
46e6911ec1
Add get_signature_status() to SyncClient
...
And move bank::Result to transaction module.
2019-04-05 10:22:05 -07:00
Greg Fitzgerald
35298e01a8
Remove Instruction wrapper structs and name functions after enum fields
2019-04-03 13:34:27 -07:00
Greg Fitzgerald
867f6f107b
Rename SystemInstruction::Move to SystemInstruction::Transfer
2019-04-03 08:35:57 -06:00
Greg Fitzgerald
43bb813cbe
Rename 'new_account' to 'new_user_account'
...
And 'new_program_account' to 'new_account'
2019-04-02 21:24:42 -06:00
Greg Fitzgerald
a0041cec97
Rename Runtime to MessageProcessor
2019-04-02 12:49:26 -06:00
Greg Fitzgerald
fa1c1e3734
Rename native programs to native instruction processors
2019-04-02 10:36:19 -06:00
Greg Fitzgerald
0a9f063d3e
Rename native_program.rs to instruction_processor_utils.rs
...
Prefer the term "instruction processor" over "program". Reserve
the term "native" for the loader and shared object it loads.
Compiling an instruction processor to BPF shouldn't imply changing
to a non-native entrypoint.
2019-04-02 10:36:19 -06:00
carllin
d228b6467c
Implement finalizer so that all locked accounts are dropped ( #3585 )
...
* Implement finalizer so that all locked accounts are dropped when finalizer goes out of scope
* Add test for tx error with lock conflict
* Fix double unlock from destructor running after a call to unlock
2019-04-02 03:55:42 -07:00
Greg Fitzgerald
fcef54d062
Add a constructor to generate random pubkeys
2019-03-31 16:23:18 -06:00
carllin
8660c3581e
Add squashing metrics ( #3573 )
2019-03-29 21:21:59 -07:00
Greg Fitzgerald
5646daa820
Delete lots of fee parameters
...
So many zeros!
2019-03-29 19:21:51 -06:00
Greg Fitzgerald
7896e8288d
Replace Transaction::fee with a FeeCalculator
2019-03-29 19:21:51 -06:00
Greg Fitzgerald
3b516c0710
Fix build
2019-03-29 14:56:29 -06:00
Greg Fitzgerald
31f8b6d352
Integrate Message into Transaction
2019-03-29 13:03:29 -07:00
anatoly yakovenko
10239c3b3c
Replace recursive status cache with a single global fast status cache ( #3541 )
...
Fast Status Cache
2019-03-29 10:03:55 -07:00
Greg Fitzgerald
cecdb7061e
Remove blockhash parameter from Bank::transfer
...
That parameter is an artifact from the Loom days, when I thought
Bank should implement the same interace as ThinClient.
2019-03-27 08:51:10 -06:00
Greg Fitzgerald
ca2ac1e5ea
Remove a mostly unused Transaction constructor
2019-03-26 15:46:58 -07:00
Rob Walker
215b07c1a9
remove status_cache.freeze ( #3506 )
2019-03-26 11:56:25 -07:00
Greg Fitzgerald
df333e8b6e
Move new_move_many to SystemInstruction
2019-03-26 09:22:29 -07:00
Greg Fitzgerald
acedf4ca5a
Move Instruction into its own module
2019-03-23 20:31:55 -07:00
Rob Walker
31b8743052
delay freeze of status_cache until squash ( #3453 )
2019-03-22 22:14:56 -07:00
Sathish
06b0c98c75
Remove accounts when the fork is removed ( #3384 )
...
* Fix test
* Cleanup accounts when the fork is removed
* Update test to check for deleted accounts
2019-03-21 17:36:10 -07:00
anatoly yakovenko
148e08a8a5
Enable cluster tests ( #3372 )
...
* Cluster tests
* stable!
* fixup! stable!
* fixup! fixup! stable!
* fixup! fixup! fixup! stable!
* fixup! fixup! fixup! fixup! stable!
* fixed space
* add getNumBlocksSinceSignatureConfirmation entry for the json rpc docs
* Check in upcoming epochs for potential leadership slots in next_leader_slot()
2019-03-21 07:43:21 -07:00
Stephen Akridge
bcb190a12a
Remove erroneous comment
2019-03-20 16:15:25 -07:00
Rob Walker
df9fd2bc0b
stop copying Blooms ( #3379 )
...
* stop copying Blooms
* fixup
* clippy
2019-03-20 11:06:39 -07:00
Michael Vines
0dc364c17a
Relocate transaction reference verification to join the other validity checks
2019-03-20 07:46:01 -07:00
Carl
5e21268ca0
PR comments
2019-03-18 20:46:11 -07:00
Carl
b38e3bef01
Modify bank_forks to support squashing/filtering new root and also don't remove parents from bank_forks when inserting, otherwise we lose potential fork points when querying blocktree for child slots
2019-03-18 20:46:11 -07:00
Greg Fitzgerald
c09accb685
Rename StaticEntrypoint to ProcessInstruction
2019-03-18 08:22:54 -07:00
Greg Fitzgerald
55cdbedb52
Allow tests to add instruction processors
...
Make runtime a private module again.
2019-03-18 08:22:54 -07:00
Greg Fitzgerald
ee39f31d81
Add Runtime object. Allow any number of static loaders.
2019-03-18 08:22:54 -07:00
Greg Fitzgerald
24d9138067
Abandon Builder pattern
2019-03-15 14:46:44 -06:00
Greg Fitzgerald
e091aa87ea
More precise constructor names
2019-03-15 14:46:44 -06:00
Greg Fitzgerald
968022a1b0
Instruction name swap
...
* Instruction -> GenericInstruction
* Instruction<u8, u8> -> CompiledInstruction
* Instruction<Pubkey, (Pubkey, bool)> -> Instruction
2019-03-15 14:46:44 -06:00
Greg Fitzgerald
7b4568b9bf
Migrate to sign_checked()
2019-03-15 09:06:54 -06:00
Sagar Dhawan
3f2fc21bb3
Rename hash_queue and fix boundary condition ( #3289 )
2019-03-14 11:56:36 -07:00
Greg Fitzgerald
c1eec0290e
Rename userdata to data ( #3282 )
...
* Rename userdata to data
Instead of saying "userdata", which is ambiguous and imprecise,
say "instruction data" or "account data".
Also, add `ProgramError::InvalidInstructionData`
Fixes #2761
2019-03-14 10:48:27 -06:00
Greg Fitzgerald
e58220282a
Move TransactionError into the SDK
2019-03-13 21:26:57 -06:00
Greg Fitzgerald
4ca4038d54
Rename BankError to TransactionError
2019-03-13 21:26:57 -06:00
Greg Fitzgerald
150cd31ec0
Blur the line between Bank and Runtime
2019-03-13 21:26:57 -06:00
Greg Fitzgerald
6fd0d4dcf5
Boot error piggybacking on BankError
2019-03-13 21:26:57 -06:00
Greg Fitzgerald
6a89c68a1d
Add utility function to help get System error out of ProgramError
2019-03-13 21:26:57 -06:00
Greg Fitzgerald
c14cce4c85
Add InstructionError for runtime instruction errors
2019-03-13 21:26:57 -06:00
carllin
af03df38b9
Don't vote for empty leader transmissions ( #3248 )
...
* Don't vote for empty leader transmissions
* Add is_delta flag to bank to detect empty leader transmissions
* Plumb new is_votable flag through replay stage
* Fix PohRecorder tests
* Change is_delta to AtomicBool to avoid making Bank references mutable
* Reset start slot in poh_recorder when working bank is cleared, so that connsecutive TPU's will start from the correct place
* Use proper max tick height calculation
* Test for not voting on empty transmission
* tests for is_votable
2019-03-13 14:06:12 -07:00
Rob Walker
9f916f9d47
remove Option<> wrapper for accounts
2019-03-12 15:03:26 -07:00
Michael Vines
1ee43a7633
Remove non-essential programs from runtime/
2019-03-12 15:11:59 -05:00
Sagar Dhawan
78bb96ee51
Reduce bootstrap leader stake ( #3218 )
2019-03-11 13:29:44 -07:00
Rob Walker
195a880576
pass Pubkeys as refs, copy only where values needed ( #3213 )
...
* pass Pubkeys as refs, copy only where values needed
* Pubkey is pervasive
* fixup
2019-03-09 19:28:43 -08:00
Tyera Eulberg
b053bc2790
Load accounts by program owner for program subscriptions
2019-03-07 17:21:32 -07:00
Rob Walker
01fb76f4bd
add epoch warmup ( #3166 )
...
add epoch warmup
2019-03-06 16:32:23 -08:00
Rob Walker
63a4ed74a4
consolidate logic for epoch and slot_index into Bank ( #3144 )
2019-03-06 14:44:21 -08:00
Pankaj Garg
9163e5b004
Fix sorting order of stakes in confirmation time calculations
2019-03-06 13:11:04 -08:00
Michael Vines
53f09c44f3
Rename tokens to lamports in sdk/
2019-03-05 17:28:06 -08:00
Rob Walker
cb0560df92
remove dead code
2019-03-05 15:35:24 -08:00
Rob Walker
b9e878ee80
slot_height considered harmful ( #3135 )
...
* slot_height considered harmful
* fix test_tick_slot_epoch_indexes
2019-03-05 14:18:29 -08:00
Sagar Dhawan
9349f90a59
Inherit transaction count from parent ( #3134 )
2019-03-05 12:34:21 -08:00
Greg Fitzgerald
885eeec3ed
Boot storage program from the SDK
2019-03-05 07:16:33 -07:00
Greg Fitzgerald
5e9f802d7d
Boot token_program from the SDK
2019-03-05 07:16:33 -07:00
Rob Walker
43bab23651
remove duplicate child creation ( #3100 )
...
* remove duplicate child creation
* resurrect test for partial slot
* simplify blocktree_processor some more (no tick_height, yay!)
* ensure frozen
2019-03-04 19:22:23 -08:00
Rob Walker
794e961328
use Bank's notion of leader_id where possible ( #3119 )
2019-03-04 18:40:47 -08:00
Sagar Dhawan
dc42c12f2b
Revert to more consistent naming ( #3114 )
2019-03-04 17:50:19 -08:00
Stephen Akridge
97274030b9
Add test with transaction with no signatures
...
Add checks for no signature
2019-03-04 16:42:52 -08:00
carllin
de1d7ce312
Cleanup staking utils to divide functionality between delegate and normal node utitliites. Also replaces vote_states() with more generalized vote_accounts() in Bank. ( #3070 )
2019-03-03 18:04:13 -08:00
Greg Fitzgerald
1edf6c361e
Move Vote program out of the SDK
2019-03-02 16:44:36 -08:00
Sagar Dhawan
b99e3eafdd
Fix stakes not being setup correctly
2019-03-02 16:44:36 -08:00
Greg Fitzgerald
e6486b2824
Move Budget out of the SDK
2019-03-02 16:44:36 -08:00
Sagar Dhawan
d22a13257e
Refactor bank get vote accounts ( #3052 )
2019-03-02 16:44:36 -08:00
Michael Vines
a94880574b
block_hash => blockhash
2019-03-02 12:13:30 -07:00
Michael Vines
258cf21416
Purge remaining last_id (now called block_hash)
2019-03-02 12:13:30 -07:00
Michael Vines
2bfad87a5f
Rename Bank.last_id() to Bank.last_block_hash()
2019-03-02 12:13:30 -07:00
Michael Vines
0743f54dfe
Rename LastIdNotFound to BlockHashNotFound
2019-03-02 12:13:30 -07:00
Michael Vines
176d5e0d37
Rename Transaction last_id field to recent_block_hash
2019-03-02 12:13:30 -07:00
Stephen Akridge
16b71a6be0
Cleanup fork id generation
...
Accounts could end up with id collision depending on how
banks are created, this shouldn't happen.
2019-03-02 10:34:41 -08:00
Michael Vines
d5de5bec4f
Register a new last_id once per slot
2019-03-02 08:47:31 -08:00
Michael Vines
61beb42797
Decouple tick counting from hash queue
2019-03-02 08:47:31 -08:00
Michael Vines
e5be3e1dca
HashQueue no longer hard codes max_entries
2019-03-02 08:47:31 -08:00
Greg Fitzgerald
49b7e67585
Return program error from process_transaction()
...
Our unit-test helper `process_transaction()` wasn't returning
program errors, which made testing programs tedious and
counter-intuitive.
2019-03-02 07:50:32 -07:00
Rob Walker
54417acfba
changed vote_states to vote_accounts, more useable ( #3047 )
2019-03-01 17:22:49 -08:00
Rob Walker
29d12d9ff1
remove new_bank_from_parent_with_id() ( #3039 )
2019-03-01 16:39:23 -08:00
Rob Walker
a7c18cc0b4
Fnbool_to_FnOptionT
2019-03-01 14:12:50 -08:00
Michael Vines
e30e4cc603
Remove get_confirmation_timestamp() from HashQueue
2019-03-01 13:38:17 -08:00
Michael Vines
fdc31e99df
Clean up type casts
2019-03-01 13:38:17 -08:00
Michael Vines
a72325dbc2
entry_id -> entry
2019-03-01 13:38:17 -08:00
Michael Vines
67b6be66c8
Rename MAX_ENTRY_IDS
2019-03-01 13:38:17 -08:00
Michael Vines
8ec13d557f
Generalize tick_height to hash_height
2019-03-01 13:38:17 -08:00
Michael Vines
31f570a9f4
Remove unused functions
2019-03-01 13:38:17 -08:00
Rob Walker
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
Michael Vines
46fb0b1b94
Rename last_id to last_hash within HashQueue
2019-03-01 11:48:09 -08:00
Michael Vines
224b705f8d
Rename genesis_block.last_id() to genesis_block.hash()
2019-03-01 11:48:09 -08:00
Michael Vines
a57fb00584
Rename last_id_queue.rs to hash_queue.rs
2019-03-01 09:50:51 -08:00
Michael Vines
360055ad70
Rename LastIdQueue to HashQueue
2019-03-01 09:50:51 -08:00
Greg Fitzgerald
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
Pankaj Garg
b41286919d
Rename bank.id to bank.slot ( #3018 )
2019-02-28 18:02:45 -08:00
Sagar Dhawan
20e4edec61
Refactor Vote Program Account setup ( #2992 )
2019-02-28 17:08:45 -08:00
Stephen Akridge
1c44b738fe
Fix vote_accounts test
2019-02-28 15:22:47 -08:00
carllin
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
Michael Vines
dad1511484
test_bank_squash: validate transaction_count() before/after squashing
2019-02-27 23:21:49 -08:00
Rob Walker
d23f8a3e99
increase accounts coverage ( #2993 )
2019-02-27 21:42:14 -08:00
Michael Vines
0dc5af62ff
Standardize on 'use log::*' for easy access to all log level macros
2019-02-27 21:16:23 -08:00
Rob Walker
163874d4da
remove `purge` parameter to accounts ( #2990 )
2019-02-27 16:06:06 -08:00
Michael Vines
b6ccb475f1
Clarify FIXME source
2019-02-27 10:37:48 -08:00
Sathish Ambley
4149f7fd1c
Fix review comments
2019-02-27 08:22:52 -08:00
Sathish Ambley
c46b2541fe
- Fix lock/unlock of accounts
...
- Fix format check warnings
2019-02-27 08:22:52 -08:00
Stephen Akridge
2158ba5863
tx count per fork
2019-02-27 08:22:52 -08:00
Stephen Akridge
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
Sathish Ambley
c276375a0e
Persistent account storage across directories
2019-02-27 08:22:52 -08:00
carllin
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
Stephen Akridge
72214b2b68
Squash test to test parent bank after squash
2019-02-26 15:15:34 -08:00
Rob Walker
87281f6ed5
ensure at Accounts level that tokens == 0 means None ( #2960 )
2019-02-26 13:51:39 -08:00
Greg Fitzgerald
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
Greg Fitzgerald
3897b66270
Let the bank creator decide where to send transaction fees
2019-02-26 08:06:08 -07:00
Greg Fitzgerald
feefdca969
Minor cleanup to Bank and LastIdQueue
2019-02-26 06:46:38 -08:00
Rob Walker
25690ff078
merge_parents() => squash() ( #2943 )
2019-02-25 20:34:05 -08:00
Michael Vines
897279eddb
Encapsulate log::Level so counter macro users don't need to use it
2019-02-25 20:01:30 -08:00
Rob Walker
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
Greg Fitzgerald
2fbdec59cb
Generalize access to staked nodes
2019-02-25 08:49:43 -08:00
Greg Fitzgerald
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
Greg Fitzgerald
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
Greg Fitzgerald
72b4834446
Add Bank::prev_slot_leader() and Bank::next_slot_leader()
2019-02-25 08:49:43 -08:00
Greg Fitzgerald
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
Greg Fitzgerald
0947ec59c9
Expose the new leader schedule functionality from the bank.
2019-02-25 08:49:43 -08:00
Greg Fitzgerald
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
Greg Fitzgerald
a1070e9572
Split ActiveStakers over Bank and LeaderScheduler
2019-02-24 07:52:44 -07:00
Stephen Akridge
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