Compare commits

...

1919 Commits

Author SHA1 Message Date
mergify[bot]
69e53ec92a Gossip log (#11555) (#11562)
Co-authored-by: Carl <carl@solana.com>
(cherry picked from commit 1b238dd63e)

Co-authored-by: carllin <wumu727@gmail.com>
2020-08-11 22:55:18 +00:00
mergify[bot]
b8ac76066c Move cluster slots update to separate thread (#11523) (#11558)
* Add cluster_slots_service

Co-authored-by: Carl <carl@solana.com>
(cherry picked from commit 7ef50a9352)

Co-authored-by: carllin <wumu727@gmail.com>
2020-08-11 21:24:34 +00:00
mergify[bot]
1a1d7744bd Add getTokenLargestAccounts to docs (#11560) (#11564)
(cherry picked from commit 697a0e2947)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-11 21:21:35 +00:00
mergify[bot]
61af485732 filter out old gossip pull requests (#11448) (#11553)
* init

* builds

* stats

* revert

* tests

* clippy

* add some jitter

* shorter jitter timer

* update

* fixup! update

* use saturating_sub

* fix filters

(cherry picked from commit 713851b68d)

Co-authored-by: anatoly yakovenko <anatoly@solana.com>
2020-08-11 19:42:32 +00:00
mergify[bot]
6a60d7bf8e Adapt RpcClient to recent token method changes (#11519) (#11548)
* Avoid skip_serializing_if since that breaks deserialization

* Adapt RpcClient to recent token method changes

(cherry picked from commit 17645ee20c)

Co-authored-by: Michael Vines <mvines@gmail.com>
2020-08-11 17:31:57 +00:00
mergify[bot]
53e917b54f Fix bad rent in Bank::deposit as if since epoch 0 (#10468) (#11539)
* Fix bad rent in Bank::deposit as if since epoch 0

* Remove redundant predicate

* Rename

* Start to add tests with some cleanup

* Forgot to add refactor code...

* Enchance test

* Really fix rent timing in deposit with robust test

* Simplify new behavior by disabling rent altogether

(cherry picked from commit 6c242f3fec)

Co-authored-by: Ryo Onodera <ryoqun@gmail.com>
2020-08-11 16:20:06 +00:00
mergify[bot]
4d49c99ac9 Fix simulateTransaction JSON-RPC docs (#11533) (#11535)
(cherry picked from commit f12fc66a69)

Co-authored-by: Justin Starry <justin@solana.com>
2020-08-11 10:26:20 +00:00
mergify[bot]
83597a5ce1 Fix solana CLI deploy (#11520) (#11530)
* Refresh blockhash for program writes and finalize transactions

* Refactor to use current api, eliminating an rpc call

* Review comment

(cherry picked from commit c0d6761f63)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-11 09:52:11 +00:00
mergify[bot]
1589a41178 Add config param to specify offset/length for single and program account info (bp #11515) (#11518)
* 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

(cherry picked from commit 88ca04dbdb)

# Conflicts:
#	cli/src/cli.rs

* Fix conflicts

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-08-11 00:03:18 +00:00
mergify[bot]
23a381b995 Fix parsing of spl-token Mint (#11512) (#11514)
* Add failing test

* Fix jsonParsed mint

(cherry picked from commit da210ddd51)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-10 21:51:20 +00:00
mergify[bot]
eb7ac42b2e Return account data size with parsed accounts (#11506) (#11511)
(cherry picked from commit 1925b0bd0b)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-10 20:09:13 +00:00
mergify[bot]
88cf5e79f5 Unified signature for create_program_address (#11460) (#11509)
(cherry picked from commit 140b2392f6)

Co-authored-by: Jack May <jack@solana.com>
2020-08-10 18:31:51 +00:00
mergify[bot]
520453e1f3 Blockstore address signatures: handle slots that cross primary indexes, and refactor get_confirmed_signatures_for_address2 (#11497) (#11508)
* Freeze address-signature index in the middle of slot to show failure case

* Secondary filter on signature

* Use AddressSignatures iterator instead of manually decrementing slots

* Remove unused method

* Add metrics

* Add transaction-status-index doccumentation

(cherry picked from commit de5fb3ba0e)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-10 17:43:00 +00:00
mergify[bot]
27815555a1 Fallback to base64 account encoding if json parse fails (#11483) (#11488)
* Fallback to base64 account encoding if json parse fails

* Remove default binary conversion

(cherry picked from commit ebc45bd73f)

Co-authored-by: Justin Starry <justin@solana.com>
2020-08-09 16:15:09 +00:00
mergify[bot]
3e483314b6 Decode native-program and sysvar accounts (bp #11463) (#11485)
* 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

(cherry picked from commit a9f76862fb)

# Conflicts:
#	Cargo.lock
#	account-decoder/Cargo.toml

* Fix conflicts

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-08-09 09:18:17 +00:00
mergify[bot]
8a67504578 Add Binary64 option for account data (#11474) (#11481)
* Add Binary64 option for account data

* Decode into binary64

* Reword docs

(cherry picked from commit 068d23f298)

Co-authored-by: sakridge <sakridge@gmail.com>
2020-08-09 06:50:24 +00:00
mergify[bot]
a1b238280b Return delegated amount as UiTokenAmount (#11475) (#11477)
* Return delegated amount as UiTokenAmount

* Omit delegate and delegatedAmount when none

(cherry picked from commit 88d8d3d02a)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-09 00:01:01 +00:00
Trent Nelson
f9e07f575e Bump version to v1.3.2 2020-08-08 06:26:20 +00:00
Trent Nelson
c8bad57455 Bump version to v1.3.1 2020-08-07 19:21:41 -06:00
mergify[bot]
71654c0457 Fix cbindgen compatibility (#11455) (#11459)
(cherry picked from commit 5a7e99f283)

Co-authored-by: Jack May <jack@solana.com>
2020-08-07 23:44:49 +00:00
mergify[bot]
f9d6fb48a4 Send votes from banking stage to vote listener (#11434) (#11454)
*  Send votes from banking stage to vote listener

Co-authored-by: Carl <carl@solana.com>
(cherry picked from commit 7e25130529)

Co-authored-by: carllin <wumu727@gmail.com>
2020-08-07 19:45:40 +00:00
mergify[bot]
fa9aa0a1d7 Token Accounts: return ui_amount, decimals with decoded account (#11407) (#11453)
* 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

(cherry picked from commit b7c2681903)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-07 19:05:35 +00:00
mergify[bot]
9758ebfc99 Only run web3.js/explorer CI when targeting master branch (#11440)
(cherry picked from commit a3165c6a61)

Co-authored-by: Trent Nelson <trent@solana.com>
2020-08-07 06:24:42 +00:00
mergify[bot]
8be23a2bb2 Add address-based lower bound to get_confirmed_signatures_for_address2 loop (#11426) (#11432)
(cherry picked from commit 5530ee4c95)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-07 00:06:44 +00:00
mergify[bot]
4ff9a6910d Fix blockstore empty panic (#11423) (#11430)
* Add panicking test

* Add failing test: fresh transaction-status column shouldn't point at valid root 0

* Prevent transaction status match outside of primary-index bounds

* Initialize transaction-status and address-signature primer entries with Slot::MAX

* Revert "Add failing test: fresh transaction-status column shouldn't point at valid root 0"

This reverts commit cbad2a9fae.

* Revert "Initialize transaction-status and address-signature primer entries with Slot::MAX"

This reverts commit ffaeac0669.

(cherry picked from commit 1061b50665)

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-08-06 23:39:01 +00:00
mergify[bot]
fd192e3641 Link fix (#11368) (#11425)
* fixes logo

* cleans up homepage on docs

* adds icon files and tightens margins

* cleans up sidenav, adds top nav items

* fixes a link

* removes icon files

Co-authored-by: Dan Albert <dan@solana.com>
(cherry picked from commit 14dcaaee6c)

Co-authored-by: Raj Gokal <rajivgokal@gmail.com>
2020-08-06 19:37:04 +00:00
mergify[bot]
a8de467ef8 Realloc not supported (#11418)
(cherry picked from commit bc4c5c5a97)

Co-authored-by: Jack May <jack@solana.com>
2020-08-06 16:24:14 +00:00
Michael Vines
1a186beb5c Update lib.rs
(cherry picked from commit 5a63c9d535)
2020-08-06 07:58:05 -07:00
Michael Vines
66a21ed65e Enable cross program support in mainnet-beta epoch 63
(cherry picked from commit c9b1d08218)
2020-08-06 07:58:05 -07:00
mergify[bot]
1a42a40492 RPC: Plug getConfirmedSignaturesForAddress2 into bigtable storage (bp #11395) (#11406)
* Plug getConfirmedSignaturesForAddress2 into bigtable storage

(cherry picked from commit 4222932e08)

* Upgrade help description

(cherry picked from commit 9abb7db5f8)

Co-authored-by: Michael Vines <mvines@gmail.com>
2020-08-06 07:14:46 +00:00
mergify[bot]
5841e4d665 Long-term ledger storage with BigTable (bp #11222) (#11392)
* ledger-storage-bigtable boilerplate

(cherry picked from commit 9d2293bb32)

* $ wget https://pki.goog/roots.pem -O pki-goog-roots.pem

(cherry picked from commit 1617a025ce)

* Add access_token module

(cherry picked from commit 59d266a111)

* Add root_ca_certificate

(cherry picked from commit faa016e4b7)

* Add build-proto

(cherry picked from commit c31e1f5bf0)

* UiTransactionEncoding is now copy

(cherry picked from commit 494968be66)

* Increase timeout

(cherry picked from commit 57dfebc5ba)

* Add build-proto/build.sh output

(cherry picked from commit 54dae6ba2c)

* Supress doctest errors

(cherry picked from commit 019c75797d)

* Add compression

(cherry picked from commit 243e05d59f)

* Add bigtable

(cherry picked from commit 6e0353965a)

* Add configuration info

(cherry picked from commit 98cca1e774)

* Add ledger-tool bigtable subcommands

(cherry picked from commit f9049d6ee4)

# Conflicts:
#	ledger-tool/Cargo.toml

* Make room for tokio 0.2

(cherry picked from commit b876fb84ba)

# Conflicts:
#	core/Cargo.toml

* Setup a tokio 0.2 runtime for RPC usage

(cherry picked from commit 0e02740565)

# Conflicts:
#	core/Cargo.toml

* Plumb Bigtable ledger storage into the RPC subsystem

(cherry picked from commit dfae9a9864)

# Conflicts:
#	core/Cargo.toml

* Add RPC transaction history design

(cherry picked from commit e56ea138c7)

* Simplify access token refreshing

(cherry picked from commit 1f7af14386)

* Report block status more frequently

(cherry picked from commit 22c46ebf96)

* after -> before

(cherry picked from commit 227ea934ff)

* Rebase

* Cargo.lock

Co-authored-by: Michael Vines <mvines@gmail.com>
2020-08-06 04:06:44 +00:00
mergify[bot]
6542a04521 Mark token-specific rpcs as unstable (#11402)
(cherry picked from commit 7430896c79)

Co-authored-by: Tyera Eulberg <tyera@solana.com>
2020-08-06 04:00:18 +00:00
mergify[bot]
5c27009758 Force program address off the curve (#11323) (#11398)
(cherry picked from commit 03263c850a)

Co-authored-by: Jack May <jack@solana.com>
2020-08-06 01:00:42 +00:00
mergify[bot]
888f3522d8 Add getConfirmedSignaturesForAddress2 RPC method (bp #11259) (#11394)
* Add getConfirmedSignaturesForAddress2 RPC method

(cherry picked from commit 1b2276520b)

* Reimplement transaction-history command with getConfirmedSignaturesForAddress2

(cherry picked from commit 087fd32ce3)

* Rework get_confirmed_signatures_for_address2

(cherry picked from commit a11f137810)

* Rename startAfter to before

(cherry picked from commit 02c0981ecf)

Co-authored-by: Michael Vines <mvines@gmail.com>
2020-08-05 22:47:50 +00:00
Trent Nelson
df820ddb6d Omit web3.js examples when incrementing Cargo.toml versions 2020-08-05 12:04:15 -06:00
Michael Vines
bbb8754b59 Remove update notice 2020-08-05 16:27:32 +00:00
dependabot[bot]
5816ed5369 chore:(deps): bump @types/react-select in /explorer (#11383)
Bumps [@types/react-select](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-select) from 3.0.15 to 3.0.16.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-select)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-05 11:05:00 +00:00
dependabot[bot]
31513fab14 chore:(deps): bump @testing-library/react in /explorer (#11382)
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 10.4.7 to 10.4.8.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v10.4.7...v10.4.8)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-05 09:53:08 +00:00
dependabot[bot]
d44e8ce914 chore:(deps): bump bootstrap from 4.5.0 to 4.5.1 in /explorer (#11381)
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v4.5.0...v4.5.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-05 09:49:38 +00:00
Tyera Eulberg
308186da79 Rework parsed account format (#11372)
* Rework parsed account format

* Serialize as type
2020-08-05 00:59:10 -06:00
Tyera Eulberg
9d4f9be1fe Update instruction encoding format (#11363)
* Rework parsed instruction format

* Rework parsed message accounts

* Review comments
2020-08-05 00:58:58 -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
29b3265dc7 Sanitize transactions during RPC preflight test 2020-08-05 06:06:57 +00:00
Trent Nelson
3f73affb2e Add From for SanitizeError > TransactionError 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
Michael Vines
d4df2ac673 Keep .DS_Store out of the tree 2020-08-04 16:34:45 -07:00
Michael Vines
b5e03d6df2 get_token_accounts_by_owner now returns UiTokenAccounts 2020-08-04 22:45:00 +00:00
Raj Gokal
8c873e232f fixes logo (#11350)
* fixes logo

* cleans up homepage on docs

* adds icon files and tightens margins
2020-08-04 10:51:25 -07: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
Justin Starry
cad36e1b3c Switch explorer to dark mode by default (#11360) 2020-08-04 22:25:50 +08:00
Justin Starry
ebe14415f6 Use more accurate epoch duration calculation in explorer (#11359) 2020-08-04 22:18:09 +08:00
Justin Starry
247e361d23 Make explorer table views more mobile friendly (#11358) 2020-08-04 20:44:16 +08: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
7db144c5da Remove legacy_system_instruction_processor0 2020-08-04 00:45:09 +00:00
Tyera Eulberg
3f6f1adb5b Make accounts explicit in unrecognized jsonParsed instructions (#11351) 2020-08-03 20:27:15 +00:00
Michael Vines
eefcf484cb clippy 2020-08-03 18:35:15 +00:00
Michael Vines
01262cda3f Bump stable rust to 1.45.1 2020-08-03 18:35:15 +00:00
Michael Vines
f3e83c080a Add mainnet-beta upgrade-in-process banner 2020-08-03 07:09:34 -07:00
dependabot[bot]
fc7ba7585d chore:(deps): bump @types/react from 16.9.43 to 16.9.44 in /explorer (#11346)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.43 to 16.9.44.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-03 08:23:50 +00:00
dependabot[bot]
2393278849 chore:(deps): bump @testing-library/user-event in /explorer (#11345)
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 12.0.17 to 12.1.0.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v12.0.17...v12.1.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-03 08:20:27 +00:00
Justin Starry
1fe762cc79 Disable owned token request on mainnet explorer (#11343) 2020-08-03 12:51:47 +08:00
Aaron Hill
8bcc8edf47 Remove calls to unwrap() in respan! macro
Previously, `proc_macro2::Span::resolved_at` was gated behind
cfg(procmacro2_semver_exempt). This gate has been removed in the latest
version of proc-macro2, allowing us to avoid using `unwrap()` to use the
underling method on `proc_macro::Span`
2020-08-02 19:15:06 -07:00
Tyera Eulberg
0bc9bcc8b9 Fix bad rebase 2020-08-02 12:09:06 -06:00
Justin Starry
f401ef7996 Linkify all explorer addresses (#11339) 2020-08-03 01:44:47 +08:00
Tyera Eulberg
d1b2e6cdf2 Add getTokenLargestAccounts endpoint (#11322) 2020-08-02 10:23:44 -06:00
Michael Vines
27a8879574 Update update timeline 2020-08-02 08:57:52 -07:00
Michael Vines
ffbd859c42 Update spl-token and spl-memo 2020-08-02 07:53:42 -07:00
Justin Starry
433f262290 Fix explorer bugs (#11336)
* Fix race condition in explorer details fetching

* Fix SOL delta rendering bug
2020-08-02 22:29:40 +08:00
Justin Starry
4052008c42 Display owned tokens on account details page (#11335) 2020-08-02 21:55:36 +08:00
Justin Starry
b6ea9f1861 Clean up explorer data providers (#11334) 2020-08-02 20:18:28 +08:00
Justin Starry
0d8f3139ae Add unified search bar to the explorer 2020-08-02 20:06:51 +08:00
Justin Starry
d4eb49d252 Add navbar and remove tabbed page layout 2020-08-02 20:06:51 +08:00
Justin Starry
eab48c99d7 Display SOL uniformly in explorer 2020-08-02 20:06:51 +08:00
Raj Gokal
97c0f7c364 Merge branch 'master' of github.com:solana-labs/solana 2020-08-01 08:33:45 -07:00
Raj Gokal
e2789b9373 cross-links SPL library 2020-08-01 08:33:26 -07:00
Justin Starry
2300080f68 Improve explorer tx count animation (#11327) 2020-08-01 23:05:20 +08:00
Justin Starry
54d36d2cfb Add cluster stats tab to explorer (#11325) 2020-08-01 22:05:58 +08: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
Trent Nelson
c421d7f1b8 Test that off-curve pubkeys fail signature verify 2020-07-31 14:21:03 -06:00
Trent Nelson
251f974b50 Allow inspection of signature verification failures 2020-07-31 14:21:03 -06:00
Tyera Eulberg
7889c7603d Explicit spl-token version 2020-07-31 13:59:09 -06: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
Tyera Eulberg
0f551d4f75 Decode token instructions (#11281)
* Token->SplToken

* Add spl_token instruction parsing

* Rebase on master

* Gracefully fail key len mismatches
2020-07-31 13:26:09 -06:00
sakridge
1733f6c9e9 Update perf libs to 0.19.1 (#11301)
* fix for cuda sigverify check for small order pubkey
2020-07-31 09:19:43 -07:00
Michael Vines
52575349dc Build programs with --no-default-features --features program to match solana-sdk 2020-07-31 08:57:42 -07:00
Michael Vines
efcf9ff125 Adjust time window on mainnet-beta upgrade banner 2020-07-31 08:17:08 -07:00
dependabot[bot]
5d3c39b6a9 chore: bump rpc-websockets from 5.2.3 to 5.2.4 in /web3.js (#11306)
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.2.3 to 5.2.4.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-31 08:52:03 +00:00
dependabot[bot]
a2d40151ea chore:(deps): bump @types/jest from 26.0.7 to 26.0.8 in /explorer (#11305)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 26.0.7 to 26.0.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-31 08:19:47 +00:00
dependabot[bot]
2930102064 chore:(deps): bump @solana/web3.js from 0.63.1 to 0.64.0 in /explorer (#11304)
Bumps [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) from 0.63.1 to 0.64.0.
- [Release notes](https://github.com/solana-labs/solana-web3.js/releases)
- [Commits](https://github.com/solana-labs/solana-web3.js/compare/v0.63.1...v0.64.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-31 08:16:32 +00:00
Justin Starry
5a69c66877 feat: add token methods (#11303) 2020-07-31 12:33:54 +08:00
Dan Albert
a5b6fd3d9b Add Vote Account Management Doc (#11278)
* Add vote account management doc

* Add links to new doc

* Whitespace

* Fixup language

* Cleaner title

* Apply review feedback

* Apply further feedback

* Fix usage page header

Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-31 02:43:41 +00: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
Justin Starry
d0f4b24481 fix: remove instanceof checks 2020-07-30 11:44:46 -07:00
Greg Fitzgerald
31ea69f278 Add low-latency, RPC proposal (#11221)
* Add RiP Curl proposal

* Apply review feedback
2020-07-30 10:52:47 -06: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
Dan Albert
e8c0ec53e6 Fix wallet links (#11284)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-30 05:06:04 +00:00
Josh Kauffman
995a7ba8eb Update vote-signing.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
e0f74c6862 Update fork-generation.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
01e26012b3 Update wallet-guide.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
239080c131 Update stake-delegation-and-rewards.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
24831ea42d Update vote-signing.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
1ecc276fd1 Update turbine-block-propagation.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
d6a4ad18fe Update managing-forks.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
d93366fc52 Update fork-generation.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
8c611cf87e Update leader-rotation.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
6a5b7e5b98 Update synchronization.md 2020-07-29 20:40:44 -07:00
Josh Kauffman
8054c3f3fa Fix typos 2020-07-29 20:40:44 -07:00
Jack May
2dbed80e48 Disable cross-program invocations for OperatingMode::Stable (#11272) 2020-07-29 15:29:52 -07:00
Dan Albert
cd043b5d70 Add top level link to Clusters page (#11276)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-29 21:27:25 +00:00
Michael Vines
c410b082b7 .sh 2020-07-29 14:12:11 -07:00
Michael Vines
3a1ca4efff Fetch and install SPL programs by default 2020-07-29 12:48:56 -07:00
Michael Vines
8eb6cbf784 Add --bpf-program argument 2020-07-29 12:48:56 -07:00
Jack May
16ecce353f Revert "Land program addresses on the curve (#11174)" (#11253)
This reverts commit f317c362a8.
2020-07-29 11:33:45 -07:00
dependabot[bot]
9bc31f1e66 chore: bump rollup from 2.22.1 to 2.23.0 in /web3.js (#11269)
Bumps [rollup](https://github.com/rollup/rollup) from 2.22.1 to 2.23.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.22.1...v2.23.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-29 11:14:35 +00:00
dependabot[bot]
071df12908 chore:(deps): bump @types/node from 14.0.26 to 14.0.27 in /explorer (#11268)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.26 to 14.0.27.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-29 11:00:50 +00:00
dependabot[bot]
faaf729e5d chore:(deps): bump @testing-library/jest-dom in /explorer (#11267)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.11.1 to 5.11.2.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.11.1...v5.11.2)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-29 10:59:07 +00:00
dependabot[bot]
df143d133b chore:(deps): bump @testing-library/user-event in /explorer (#11266)
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 12.0.15 to 12.0.17.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v12.0.15...v12.0.17)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-29 10:58:23 +00: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
e553a98d2f Rerere-enable RecentBlockhashes fix on testnet (epoch 76) 2020-07-29 02:43:10 +00:00
Trent Nelson
678f94903b Fill out missing RPC request received debug logging 2020-07-29 01:51:20 +00:00
Ryo Onodera
3e4f49f9c9 Fix race condition between shrinking and cleaning (#11235)
* Fix race condition between shrinking and cleaning

* Minor formatting

* fix ci

* Update comments

* More update comment

* Adjust fn naming
2020-07-29 06:06:14 +09:00
R. M. Shea
b5065a4fde Add Google Analytics to all Explorer pages (#11249)
* add code in head

Co-authored-by: Ryan Shea <rmshea@users.noreply.github.com>
2020-07-29 01:00:57 +08:00
dependabot[bot]
b4f950c770 chore: bump @commitlint/config-conventional in /web3.js (#11240)
Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint) from 9.0.1 to 9.1.1.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-28 10:01:10 +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
dependabot[bot]
d9d69eee81 chore: bump eslint-plugin-import from 2.21.2 to 2.22.0 in /web3.js (#11239)
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.21.2 to 2.22.0.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.21.2...v2.22.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-28 09:00:46 +00:00
dependabot[bot]
d397577e27 chore: bump eslint-plugin-prettier from 3.1.3 to 3.1.4 in /web3.js (#11238)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.1.3...v3.1.4)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-28 08:45:48 +00:00
dependabot[bot]
610f4576bc chore: bump typescript from 3.9.5 to 3.9.7 in /web3.js (#11236)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.5 to 3.9.7.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.9.5...v3.9.7)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-28 08:30:49 +00:00
Justin Starry
bafb2e6e84 Adjust explorer banner margins (#11233) 2020-07-28 13:20:25 +08:00
Michael Vines
ed01591be6 Designate mainnet-beta epoch 61 as an upgrade epoch 2020-07-27 11:41:39 -07:00
dependabot[bot]
de34839f19 chore: bump flow-bin from 0.127.0 to 0.130.0 in /web3.js
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.127.0 to 0.130.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-27 11:01:25 -07:00
Jack May
f317c362a8 Land program addresses on the curve (#11174) 2020-07-27 10:45:59 -07:00
Michael Vines
aa8d6083c4 Add mainnet beta upgrade announcement 2020-07-27 10:24:45 -07:00
R. M. Shea
cbf0b779d7 Add Docusaurus search (#11135)
* Add Docusaurus search

* Add Algolia configuration information

* Trailing whitespace :(

Co-authored-by: Ryan Shea <rmshea@users.noreply.github.com>
2020-07-27 10:26:03 -06:00
dependabot[bot]
30b7b3d963 chore:(deps): bump @types/node from 14.0.25 to 14.0.26 in /explorer (#11218)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.25 to 14.0.26.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-27 10:59:42 +00:00
dependabot[bot]
bec28328cd chore:(deps): bump @testing-library/user-event in /explorer (#11217)
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 12.0.13 to 12.0.15.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v12.0.13...v12.0.15)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-27 10:57:57 +00:00
Trent Nelson
7931579610 Remove accidental MB activation for RecentBlockhashes consistency fix 2020-07-26 17:34:52 +00:00
Justin Starry
f796adc5ea Add announcement banner to explorer (#11210)
* Add announcement banner to explorer

* Remove ^M and trailing spaces

* Update Banner.tsx
2020-07-26 21:11:27 +08:00
Tom Zakrajsek
234449c627 Fix markup for heading 2020-07-26 00:22:43 -07:00
carllin
b7d8e256a5 Fix test stalling (#11212)
Co-authored-by: Carl <carl@solana.com>
2020-07-25 21:30:08 -07:00
Michael Vines
01ff6846f7 Windows binaries are now built with the MSVC instead of the GNU toolchain.
Update `solana-install-init` target info to match
2020-07-25 10:02:52 -07:00
Michael Vines
6808a04abe Remove unmaintained btc programs 2020-07-25 06:04:07 +00:00
Tyera Eulberg
32fea0496e Add token account decoding (#11136)
* Add token decoding

* Bump versions
2020-07-24 17:45:21 -06:00
Dan Albert
eac423f92c Add package-lock.json to docs (#11200)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-24 14:15:22 -06:00
Dan Albert
c8f866e6c0 Restore stake delegation page to sidebar 2020-07-24 13:42:05 -06:00
Trent Nelson
1f8df36b7d Push back activation epochs
Effects:
- Re-enabling inflation
- Nonce FeeCalculator overwrite / RecentBlockhashes sysvar inconsistency fix
2020-07-24 12:54:31 -06:00
dependabot[bot]
5118825fa4 chore:(deps): bump @types/node from 14.0.24 to 14.0.25 in /explorer (#11195)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.24 to 14.0.25.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-24 11:09:34 +00:00
dependabot[bot]
63c024ddd1 chore:(deps): bump @testing-library/user-event in /explorer (#11194)
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 12.0.12 to 12.0.13.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v12.0.12...v12.0.13)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-24 11:02:08 +00:00
dependabot[bot]
a55f09f178 chore: bump flow-typed from 3.1.0 to 3.2.1 in /web3.js (#11198)
Bumps [flow-typed](https://github.com/flow-typed/flow-typed) from 3.1.0 to 3.2.1.
- [Release notes](https://github.com/flow-typed/flow-typed/releases)
- [Changelog](https://github.com/flow-typed/flow-typed/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flow-typed/flow-typed/compare/v3.1.0...v3.2.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-24 10:58:24 +00:00
dependabot[bot]
b3e0d09699 chore:(deps): bump @types/jest from 26.0.5 to 26.0.7 in /explorer (#11196)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 26.0.5 to 26.0.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-24 10:39:57 +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
Michael Vines
125a36abbc Remove move more 2020-07-24 01:42:19 +00: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
Trent Nelson
6f7e121b68 CLI: Add arg to adjust RPC timeout 2020-07-23 22:29:40 +00:00
Trent Nelson
bece8cfbc2 Add RpcClient constructor with timeout 2020-07-23 22:29:40 +00:00
Greg Fitzgerald
8b1b392be9 Remove move_loader and librapay (#11184)
* Remove move_loader and librapay

* Remove Embedding Move from implemented proposals

* Remove Move variant from CI

* Remove move_loader ID
2020-07-23 15:08:59 -06:00
Tyera Eulberg
6de8da05e3 Skip entrypoint in programs (#11176) 2020-07-23 19:44:59 +00: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
Jack May
e75f0bdfd3 panic on native load failure (#11182) 2020-07-23 12:11:01 -07: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
dependabot[bot]
b60ff70657 chore:(deps): bump @testing-library/user-event in /explorer (#11180)
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 12.0.11 to 12.0.12.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v12.0.11...v12.0.12)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-23 08:07:05 +00:00
dependabot[bot]
ae8426f8ae chore:(deps): bump @solana/web3.js from 0.63.0 to 0.63.1 in /explorer (#11179)
Bumps [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) from 0.63.0 to 0.63.1.
- [Release notes](https://github.com/solana-labs/solana-web3.js/releases)
- [Commits](https://github.com/solana-labs/solana-web3.js/compare/v0.63.0...v0.63.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-23 08:06:41 +00:00
Michael Vines
50c92e3a94 Add block-height subcommand 2020-07-22 13:26:05 -07:00
Michael Vines
2adfe3f199 Add block height to epoch-info subcommand 2020-07-22 13:26:05 -07:00
Justin Starry
4d05683abe chore: fix flaky connection test 2020-07-22 22:54:34 +08: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
Ryo Onodera
3fd16cea34 Re-enable inflation again for testnet 2020-07-21 21:44:16 -06:00
Michael Vines
3b87780f21 fix: getEpochInfo RPC endpoint now includes the current block height 2020-07-21 17:24:07 -07:00
Michael Vines
a5dd848702 getEpochInfo RPC endpoint now includes the current block height 2020-07-21 17:24:07 -07:00
Tyera Eulberg
231e2387db Program feature-flag entrypoint (#11144) 2020-07-21 14:36:28 -06: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
dependabot[bot]
9438789fef chore:(deps): bump @types/node from 14.0.23 to 14.0.24 in /explorer (#11146)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.23 to 14.0.24.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-21 09:30:19 +00:00
Ryo Onodera
6935e88148 Freeze warped bank to show freeze logs (#11141) 2020-07-21 15:51:56 +09:00
Rob Walker
7cc2a6801b fix rewards points (#10914)
* fix rewards points

* fixups

* * verify that we don't spend more in rewards than we've allocated for rewards
* purge f64s from calculations that could be done with integers

* test typical values

* simplify iteration over delegations some

* fixups

* Use try_from

* Add a comment for commission_split()

* Add assertion to detect inconsistent reward dist.

* Fix vote_balance_and_staked

* Don't overwrite accounts with stale copies

* Fix CI...

* Add tests for vote_balance_and_staked

* Add test for the determinism of update_rewards

* Revert "Don't overwrite accounts with stale copies"

This reverts commit 9886d085a6.

* Make stake_delegation_accounts to return hashmap

Co-authored-by: Ryo Onodera <ryoqun@gmail.com>
2020-07-21 13:57:25 +09:00
Trent Nelson
b0d1c70718 RemoteWallet: Improve DerivationPathComponent FromStr readability 2020-07-21 03:09:01 +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
Wei Tang
0cb422fbbb Insubstantial grammar fix (#11133) 2020-07-20 23:32:45 +09:00
Ryo Onodera
3db246f596 Add --warp-epoch and --force-inflation to ledger-tool cap. (#11107)
* Add --warp-epoch and --force-inflation to ledger-tool cap.

* Add more arguments

* Address review comments

* Fix message

* Fix various typos...
2020-07-20 19:09:38 +09:00
dependabot[bot]
0781ab817f chore: bump rollup from 2.21.0 to 2.22.1 in /web3.js (#11131)
Bumps [rollup](https://github.com/rollup/rollup) from 2.21.0 to 2.22.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.21.0...v2.22.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-20 09:54:48 +00:00
dependabot[bot]
0a7cbdf495 chore: bump @babel/runtime from 7.10.2 to 7.10.5 in /web3.js (#11129)
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.10.2 to 7.10.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.5/packages/babel-runtime)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-20 09:13:16 +00:00
dependabot[bot]
a09013660f chore: bump @babel/plugin-proposal-function-bind in /web3.js (#11128)
Bumps [@babel/plugin-proposal-function-bind](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-function-bind) from 7.10.1 to 7.10.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.5/packages/babel-plugin-proposal-function-bind)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-20 08:58:30 +00:00
dependabot[bot]
910f559c0c chore: bump rpc-websockets from 5.2.2 to 5.2.3 in /web3.js (#11100)
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.2.2 to 5.2.3.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-20 08:44:19 +00:00
dependabot[bot]
8795f3e4c6 chore:(deps): bump @types/jest from 26.0.4 to 26.0.5 in /explorer (#11127)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 26.0.4 to 26.0.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-20 08:29:50 +00:00
dependabot[bot]
8352bdd3c4 chore:(deps): bump @solana/web3.js from 0.62.0 to 0.63.0 in /explorer (#11126)
Bumps [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) from 0.62.0 to 0.63.0.
- [Release notes](https://github.com/solana-labs/solana-web3.js/releases)
- [Commits](https://github.com/solana-labs/solana-web3.js/compare/v0.62.0...v0.63.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-20 08:28:59 +00:00
Michael Vines
83cc92f3f7 Upgade to Rust 1.45.0 2020-07-19 20:11:02 -07:00
Michael Vines
d19cd3a18a Revert "Use BlockCommitmentCache for RPC slots (#11103)" (#11122)
This reverts commit 815b0f31b4.
2020-07-18 16:39:12 -07:00
Dan Albert
b9c29c3263 Update build.sh 2020-07-18 08:31:54 -06:00
Justin Starry
d0e139ffff feat: add getLeaderSchedule api 2020-07-18 13:23:29 +08:00
Justin Starry
74b4830ba6 fix: broken SlotInfo type def (#11120) 2020-07-18 05:22:58 +00:00
Dan Albert
1ad0d210bc Remove tictactoe, add Break and Hello World to docs (#11117)
* Remove tictactoe, add Break to apps docs

* Add hello world

* fix whitespace

Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-18 00:09:10 +00: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
Dan Albert
d0d4d9b3d1 Fix 404 broken links (#11113)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-17 17:48:07 +00:00
Michael Vines
e5d8c4383f Add Bank support for "upgrade epochs" where all non-vote transactions will be rejected 2020-07-17 08:48:42 -07:00
Tyera Eulberg
fdff681bcc Simplify BlockCommitmentCache slot info (#11106)
* Refactor BlockCommitmentCache, store a CacheSlotInfo

* Comma
2020-07-17 09:24:51 -06:00
dependabot[bot]
25728baeac chore:(deps): bump typescript from 3.9.6 to 3.9.7 in /explorer (#11108)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.6 to 3.9.7.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.9.6...v3.9.7)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-17 08:11:06 +00:00
sakridge
b85538c532 Turn off gossip before downloading snapshot. (#11087) 2020-07-16 17:05:52 -07:00
Dan Albert
862eb87184 Update validator_list.rs 2020-07-16 16:13:45 -06:00
Dan Albert
7958dd88c2 Update non_circulating_supply.rs 2020-07-16 12:57:13 -06:00
dependabot[bot]
836eeba8f3 chore: bump @commitlint/travis-cli from 9.0.1 to 9.1.1 in /web3.js (#11099)
Bumps [@commitlint/travis-cli](https://github.com/conventional-changelog/commitlint) from 9.0.1 to 9.1.1.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-16 08:22:13 +00:00
dependabot[bot]
59bee1ab64 chore: bump @babel/preset-env from 7.10.2 to 7.10.4 in /web3.js (#11098)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.10.2 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-preset-env)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-16 08:19:55 +00:00
dependabot[bot]
fc2c4b3e71 chore:(deps): bump @testing-library/jest-dom in /explorer (#11095)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.11.0 to 5.11.1.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.11.0...v5.11.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-16 08:14:50 +00:00
dependabot[bot]
e9fda8178c chore:(deps): bump @testing-library/react in /explorer (#11097)
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 10.4.6 to 10.4.7.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v10.4.6...v10.4.7)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-16 08:09:50 +00:00
Dan Albert
6174cdb579 Always pass affected file check on tagged release (#11089)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-16 03:22:51 +00:00
Dan Albert
a3f181ad84 Remove release documentation documentation (#11090)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-15 20:55:02 -06:00
Michael Vines
d9b5cce279 Update CRATES_IO_TOKEN 2020-07-15 17:45:00 -07:00
Tyera Eulberg
1da9f9f05a Gate nonce-overwrite change (#11081) 2020-07-15 21:45:30 +00:00
Dan Albert
fe71f9ad1a Change transparent .svg to opaque .png (#11084)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-15 21:35:18 +00:00
dependabot[bot]
d8d87d5d02 chore: bump @babel/plugin-transform-runtime in /web3.js
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.10.4 to 7.10.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.5/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-15 13:48:14 -07:00
dependabot[bot]
2e0fb37bfb Bump thiserror from 1.0.19 to 1.0.20
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.19 to 1.0.20.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.19...1.0.20)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-15 13:39:32 -07:00
Dan Albert
6342e3e215 Refactor file and URL paths in docusaurus (#11080)
* Fix introduction link

* Restore staking guide pages

* Remove Edit this page link

* Fix broken wallet guide link

* Restore lost images

* Fixup URL paths to match gitbook style

* Refactor wallet guide READMEs and clean up URLs

* Remove lingering gitbook files

* Refactor all README files to keep consistent linking

* Updte homepage tile links

Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-15 20:11:51 +00:00
sakridge
7fe870ba48 Make accounts file clean faster (#11071) 2020-07-15 09:37:40 -07:00
dependabot[bot]
8548c3a7eb Bump humantime from 2.0.0 to 2.0.1
Bumps [humantime](https://github.com/tailhook/humantime) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/tailhook/humantime/releases)
- [Commits](https://github.com/tailhook/humantime/compare/v2.0.0...v2.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-15 08:27:33 -07:00
dependabot[bot]
f94979c87c chore: bump @babel/core from 7.10.4 to 7.10.5 in /web3.js
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.4 to 7.10.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.5/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-15 08:08:23 -07:00
sakridge
8bf3a0aa05 accounts_clean: Convert stack dependency calculation with iterative (#11067)
* accounts_clean: Convert stack dependency calculation with iterative

* optimize clean with by creating a reverse-lookup hashset of the affected
keys

* Add dependency bench

reduce bench

* Huge clean
2020-07-15 06:49:22 -07:00
Ryo Onodera
d81c7250b0 Temporalily disable inflation to fix it later (#11072)
* Revert get_inflation()

* Temporalily disable inflation to fix it later

* Use match and proper type aliases
2020-07-15 18:36:09 +09:00
Tyera Eulberg
9a80e31bae Expose tss to the other blockstore_processor path (#11070) 2020-07-14 21:14:48 -06:00
Michael Vines
21beade4b9 Drop support for v1.0 backports, add v1.3 support 2020-07-14 18:04:59 -07:00
Dan Albert
20fa776728 Add TdS 6 validators to testnet auto-staker (#11068)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-14 23:45:18 +00:00
Michael Vines
bed74d803f Add purge --no-compaction flag 2020-07-14 15:02:01 -07:00
Aaron Hill
95490ff56e Apply #![feature(proc_macro_hygiene)] when needed
This allows the rust-bpf-builder toolchain to build the sdk
2020-07-14 14:40:02 -07:00
Aaron Hill
e7387f60a7 Fix clippy lints 2020-07-14 14:40:02 -07:00
Aaron Hill
fed69e96a9 Split comment over multiple lines
Due to https://github.com/rust-lang/rustfmt/issues/4325, leaving this as
one line causes rustfmt to add extra indentation to the surrounding
code.
2020-07-14 14:40:02 -07:00
Jack May
42f88484f4 Update lock files 2020-07-14 14:40:02 -07:00
Aaron Hill
b0cb2b0106 Replace FIXME with an issue link 2020-07-14 14:40:02 -07:00
Aaron Hill
05445c718e Fix hygiene issues in declare_program! and declare_loader!
The `declare_program!` and `declare_loader!` macros both expand to
new macro definitions (based on the `$name` argument). These 'inner'
macros make use of the special `$crate` metavariable to access items in
the crate where the 'inner' macros is defined.

However, this only works due to a bug in rustc. When a macro is
expanded, all `$crate` tokens in its output are 'marked' as being
resolved in the defining crate of that macro. An inner macro (including
the body of its arms) is 'just' another set of tokens that appears in
the body of the outer macro, so any `$crate` identifiers used there are
resolved relative to the 'outer' macro.

For example, consider the following code:

```rust
macro_rules! outer {
    () => {
        macro_rules! inner {
            () => {
                $crate::Foo
            }
        }
    }
}
```

The path `$crate::Foo` will be resolved relative to the crate that defines `outer`,
**not** the crate which defines `inner`.

However, rustc currently loses this extra resolution information
(referred to as 'hygiene' information) when a crate is serialized.
In the above example, this means that the macro `inner` (which gets
defined in whatever crate invokes `outer!`) will behave differently
depending on which crate it is invoked from:

When `inner` is invoked from the same crate in which it is defined,
the hygiene information will still be available,
which will cause `$crate::Foo` to be resolved in the crate which defines 'outer'.

When `inner` is invoked from a different crate, it will be loaded from
the metadata of the crate which defines 'inner'. Since the hygiene
information is currently lost, rust will 'forget' that `$crate::Foo` is
supposed to be resolved in the context of 'outer'. Instead, it will be
resolved relative to the crate which defines 'inner', which can cause
incorrect code to compile.

This bug will soon be fixed in rust (see https://github.com/rust-lang/rust/pull/72121),
which will break `declare_program!` and `declare_loader!`. Fortunately,
it's possible to obtain the desired behavior (`$crate` resolving in the
context of the 'inner' macro) by use of a procedural macro.

This commit adds a `respan!` proc-macro to the `sdk/macro` crate.
Using the newly-stabilized (on Nightly) `Span::resolved_at` method,
the `$crate` identifier can be made to be resolved in the context of the
proper crate.

Since `Span::resolved_at` is only stable on the latest nightly,
referencing it on an earlier version of Rust will cause a compilation error.
This requires the `rustversion` crate to be used, which allows conditionally
compiling code epending on the Rust compiler version in use. Since this method is already
stabilized in the latest nightly, there will never be a situation where
the hygiene bug is fixed (e.g. https://github.com/rust-lang/rust/pull/72121)
is merged but we are unable to call `Span::resolved_at`.
2020-07-14 14:40:02 -07:00
Michael Vines
0b919f095d Add TRAVIS_COMMIT_RANGE logging 2020-07-14 12:10:21 -07:00
dependabot[bot]
9abfd67cd9 chore: bump ws from 7.3.0 to 7.3.1 in /web3.js (#11058)
Bumps [ws](https://github.com/websockets/ws) from 7.3.0 to 7.3.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.3.0...7.3.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-14 11:51:40 -07:00
dependabot[bot]
5e2d80a861 chore: bump @babel/preset-flow in /web3.js (#11061)
Bumps [@babel/preset-flow](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-flow) from 7.10.1 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-preset-flow)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-14 11:51:21 -07:00
dependabot[bot]
ab8d7924f0 chore:(deps-dev): bump marked from 1.1.0 to 1.1.1 in /web3.js (#11060)
Bumps [marked](https://github.com/markedjs/marked) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v1.1.0...v1.1.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-07-14 11:50:18 -07:00
Michael Vines
0708969e9e Update dependabot.yml 2020-07-14 11:49:25 -07:00
Michael Vines
c626d515d2 No automerge for rust dependencies 2020-07-14 11:30:32 -07:00
Michael Vines
05709822f9 Create dependabot.yml 2020-07-14 11:25:05 -07:00
dependabot-buildkite
0affb1c92b [auto-commit] Update all Cargo lock files 2020-07-14 11:13:22 -07: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
dependabot-preview[bot]
95145672c8 Bump byte-unit from 3.1.3 to 4.0.8
Bumps [byte-unit](https://github.com/magiclen/byte-unit) from 3.1.3 to 4.0.8.
- [Release notes](https://github.com/magiclen/byte-unit/releases)
- [Commits](https://github.com/magiclen/byte-unit/compare/v3.1.3...v4.0.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-14 11:13:14 -07:00
Dan Albert
303a4df6ef Clean up docs publishing flow (#11043)
* Clean up publishing flow

* Update README

Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-14 07:56:14 -06:00
Trent Nelson
14ac233d01 CLI: Fix explicitly plumb vote_account through create-vote-account 2020-07-14 07:29:53 -06:00
Trent Nelson
2284699889 CLI: Fix explicitly plumb withdraw_authority through vote-update-validator 2020-07-14 07:29:53 -06:00
Trent Nelson
3392ecc310 CLI: Fix explicitly plumb withdraw_authority through vote-update-commission 2020-07-14 07:29:53 -06: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
Dan Albert
356b552439 Remove docs step from buildkite flow (#11035)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-14 02:44:16 +00:00
Trent Nelson
5741002a32 Mode gate RecentBlockhashes/BlockhashQueue sync 2020-07-14 00:36:31 +00:00
Trent Nelson
51283c931c Fix test advancing banks from incomplete slots 2020-07-14 00:36:31 +00:00
Trent Nelson
837ac77c02 Bump goldens 2020-07-14 00:36:31 +00:00
Trent Nelson
5357ff6d60 Synchronize BlockhashQueue and RecentBlockhashes sysvar update 2020-07-14 00:36:31 +00:00
Trent Nelson
9cc379af6c Factor locked portion of Bank::update_recent_blockhashes() out to helper 2020-07-14 00:36:31 +00:00
Tyera Eulberg
942c019d50 Add failing test 2020-07-14 00:36:31 +00:00
dependabot-preview[bot]
b37192b809 Bump @testing-library/react from 10.4.5 to 10.4.6 in /explorer (#11038)
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 10.4.5 to 10.4.6.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v10.4.5...v10.4.6)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-14 00:11:30 +00:00
Michael Vines
d3784cab4f Bump spl-memo to 1.0.2 2020-07-13 23:59:33 +00:00
Michael Vines
3eea8f2fe6 Bump rust nightly to 2020-07-12 2020-07-13 23:59:33 +00:00
dependabot-preview[bot]
0d1420d868 Bump @types/node from 14.0.22 to 14.0.23 in /explorer (#11037)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.22 to 14.0.23.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-13 22:54:31 +00:00
dependabot-buildkite
2d93ca9ab3 [auto-commit] Update all Cargo lock files 2020-07-13 15:00:27 -07:00
dependabot-preview[bot]
cee9177ec7 Bump libc from 0.2.71 to 0.2.72
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.71 to 0.2.72.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.71...0.2.72)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 15:00:27 -07:00
sakridge
1880621740 Add dropped vote metrics (#11009) 2020-07-13 09:11:07 -07:00
Ryo Onodera
de379a8cd6 Ensure to digest non-empty snapshot_storages and add asserts (#11021)
* Add asserts to detect not-digestable example data

* Ensure to digest non-empty snapshot_storages
2020-07-13 15:58:34 +00:00
dependabot-preview[bot]
e95e7a96da Bump @types/react from 16.9.42 to 16.9.43 in /explorer (#11027)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.42 to 16.9.43.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-13 15:51:43 +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
dependabot-preview[bot]
5c86766fb2 Bump ctrlc from 3.1.4 to 3.1.5 (#11006)
Bumps [ctrlc](https://github.com/Detegr/rust-ctrlc) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/Detegr/rust-ctrlc/releases)
- [Commits](https://github.com/Detegr/rust-ctrlc/compare/3.1.4...3.1.5)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-12 20:59:29 -06:00
dependabot-preview[bot]
33f5c17e46 Bump generic-array from 0.14.1 to 0.14.3 (#11010)
* Bump generic-array from 0.14.1 to 0.14.3

Bumps [generic-array](https://github.com/fizyk20/generic-array) from 0.14.1 to 0.14.3.
- [Release notes](https://github.com/fizyk20/generic-array/releases)
- [Changelog](https://github.com/fizyk20/generic-array/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fizyk20/generic-array/commits)

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-12 20:59:05 -06:00
Michael Vines
1437660686 Revert "Add UiTransactionEncoding::Raw"
This reverts commit a4a5438b6d.
2020-07-12 08:59:50 -07:00
sakridge
edf2b1ee85 Check for deleting key, make sure list is empty again (#11007) 2020-07-11 20:38:34 -07:00
dependabot-buildkite
12d188da09 [auto-commit] Update all Cargo lock files 2020-07-10 22:53:21 -07:00
dependabot-preview[bot]
2e5cb71e54 chore(deps): bump base64 from 0.12.1 to 0.12.3
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.12.1 to 0.12.3.
- [Release notes](https://github.com/marshallpierce/rust-base64/releases)
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.12.1...v0.12.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-10 22:53:21 -07:00
Dan Albert
ffeac298a2 Move from gitbook to docusaurus, build docs in Travis CI (#10970)
* fix: ignore unknown fields in more RPC responses

* Remove mdbook infrastructure

* Delete gitattributes and other theme related items

Move all docs to /docs folder to support Docusaurus

* all docs need to be moved to /docs

* can be changed in the future

Add Docusaurus infrastructure

* initialize docusaurus repo

Remove trailing whitespace, add support for eslint

Change Docusaurus configuration to support `src`

* No need to rename the folder! Change a setting and we're all good to
go.

* Fixing rebase items

* Remove unneccessary markdown file, fix type

* Some fonts are hard to read. Others, not so much. Rubik, you've been
sidelined. Roboto, into the limelight!

* As much as we all love tutorials, I think we all can navigate around a
markdown file. Say goodbye, `mdx.md`.

* Setup deployment infrastructure

* Move docs job from buildkite to travic

* Fix travis config

* Add vercel token to travis config

* Only deploy docs after merge

* Docker rust env

* Revert "Docker rust env"

This reverts commit f84bc208e807aab1c0d97c7588bbfada1fedfa7c.

* Build CLI usage from docker

* Pacify shellcheck

* Run job on PR and new commits for publication

* Update README

* Fix svg image building

* shellcheck

Co-authored-by: Michael Vines <mvines@gmail.com>
Co-authored-by: Ryan Shea <rmshea@users.noreply.github.com>
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-11 05:11:07 +00:00
Ryo Onodera
4046f87134 Fix compilation failure on windows (#10983)
* Fix compilation failure on windows

* Test travis window build

* more tweak trigger travis build...

* Make more debug-friendly

* Fix shellcheck

* Revert .travis.yaml after testing on travis
2020-07-11 04:35:46 +00:00
Tyera Eulberg
f6f5842172 Explicit spl-memo version (#11003) 2020-07-11 03:41:53 +00:00
Michael Vines
427d0ff0b5 fix: ignore unknown fields in more RPC responses 2020-07-11 03:39:49 +00:00
Jack May
f0b22b1b23 spl memo linking windows (#11000)
* Update spl-memo to fix windows linking error

* Only programs need the stubs

Co-authored-by: Ryo Onodera <ryoqun@gmail.com>
2020-07-10 18:39:52 -07: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
Trent Nelson
19813b0ab2 fix: align web3 stake split instruction constuction with rust 2020-07-10 15:29:48 -06:00
Trent Nelson
a8b1d71ae6 fix: inconsistent tx message compilation accounting 2020-07-10 15:29:48 -06:00
Trent Nelson
40800e257c test: tweak test to suss out tx message serialization bug 2020-07-10 15:29:48 -06:00
Trent Nelson
3e3241125f fix: serializing an unsigned tx should throw 2020-07-10 15:29:48 -06:00
Jack May
57576b07ef Fix warnings (#10992)
* Fix warnings

* disable warning
2020-07-10 20:02:55 +00:00
Michael Vines
25ca99cdcf largest -> highest 2020-07-10 12:57:32 -07:00
dependabot-preview[bot]
f3a007b33d chore(deps): bump @types/react from 16.9.41 to 16.9.42 in /explorer (#10998)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.41 to 16.9.42.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-10 19:45:47 +00:00
Michael Vines
a4a5438b6d Add UiTransactionEncoding::Raw 2020-07-10 12:18:41 -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
sakridge
1f5070e569 Add custom print for Bloom object (#10971) 2020-07-10 11:53:24 -07:00
dependabot-preview[bot]
87b497968f chore(deps): bump @types/node from 14.0.21 to 14.0.22 in /explorer (#10994)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.21 to 14.0.22.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-10 18:30:56 +00:00
Jack May
e2c7f446a8 Disable specialization-warnings (#10981)
* Disable specialization-warnings

* nudge
2020-07-10 11:06:10 -07:00
Michael Vines
491f5ae61a Add block time placeholder to getConfirmedBlock 2020-07-10 14:47:11 +00:00
dependabot-preview[bot]
ae6aaab4d8 chore(deps-dev): bump rollup from 2.18.0 to 2.21.0 in /web3.js (#10988)
Bumps [rollup](https://github.com/rollup/rollup) from 2.18.0 to 2.21.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.18.0...v2.21.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-07-10 14:04:59 +00:00
dependabot-preview[bot]
34f31f64f9 chore(deps): bump @types/node from 14.0.20 to 14.0.21 in /explorer (#10987)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.20 to 14.0.21.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-10 13:53:52 +00: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
Ryo Onodera
f1c1152948 Fix skipped slot detection for eager rent collect (#10890) 2020-07-10 08:49:18 +09:00
Dan Albert
da7a31b662 Add MB validators to SOM (#10977)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-09 23:43:48 +00:00
Dan Albert
fec7a61f59 Fix Travis PR detection environment (#10974) 2020-07-09 14:30:47 -06:00
Tyera Eulberg
25228ca957 Fix nonce fee_calculator overwrite (#10973)
* Add failing test

* Pass fee_calculator to prepare_if_nonce_account; only overwrite in error case
2020-07-09 20:22:21 +00:00
Greg Fitzgerald
16eeea4f82 Move SendTransactionService to solana_runtime (#10972) 2020-07-09 18:28:26 +00:00
dependabot-preview[bot]
4ef8f893c7 chore(deps-dev): bump @babel/plugin-transform-runtime in /web3.js (#10969)
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.10.1 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-plugin-transform-runtime)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-09 14:25:49 +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
dependabot-preview[bot]
9b380f8b2c chore(deps): bump @testing-library/react in /explorer (#10964)
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 10.4.4 to 10.4.5.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v10.4.4...v10.4.5)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-08 21:41:32 +00:00
dependabot-preview[bot]
99951adef4 chore(deps): bump @types/node from 14.0.19 to 14.0.20 in /explorer (#10963)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.19 to 14.0.20.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-08 20:58:57 +00:00
dependabot-preview[bot]
cce6b894e1 chore(deps): bump @types/jest from 26.0.3 to 26.0.4 in /explorer (#10942)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 26.0.3 to 26.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-08 17:45:53 +00:00
dependabot-preview[bot]
50e9fcf852 chore(deps): bump @testing-library/user-event in /explorer (#10941)
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 7.2.1 to 12.0.11.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v7.2.1...v12.0.11)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-08 17:45:46 +00:00
dependabot-preview[bot]
3da4a34ef0 chore(deps-dev): bump @babel/plugin-proposal-class-properties (#10943)
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-class-properties) from 7.10.1 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-plugin-proposal-class-properties)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-08 10:38:59 -07:00
dependabot-preview[bot]
2c16a3cd80 chore(deps): [security] bump npm from 6.14.5 to 6.14.6 in /web3.js (#10949)
Bumps [npm](https://github.com/npm/cli) from 6.14.5 to 6.14.6. **This update includes a security fix.**
- [Release notes](https://github.com/npm/cli/releases)
- [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md)
- [Commits](https://github.com/npm/cli/compare/v6.14.5...v6.14.6)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-08 10:38:17 -07:00
dependabot-preview[bot]
0de5a72dc3 chore(deps): bump @types/node from 14.0.18 to 14.0.19 in /explorer (#10948)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.18 to 14.0.19.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-08 10:38:06 -07:00
Michael Vines
3cdd54422d Skip tests on .merify.yml only PRs 2020-07-08 10:36:38 -07:00
Michael Vines
356ab45e5a Gate automerge on Travis 2020-07-08 10:36:38 -07:00
sakridge
6429042b6e Add --print-account-stats/--snapshot-archive-path arguments to ledger-tool (#10945)
Allows for seeing how the accounts are being stored
and specifying a different snapshot source directory.
2020-07-08 09:32:11 -07:00
Justin Starry
c06505934f chore: fix test flakiness and add mock helper (#10956) 2020-07-08 12:46:16 +00:00
sakridge
e50227745d update testnet docs (#10954) 2020-07-08 04:04:17 +00: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
dependabot-preview[bot]
cd503daecc chore(deps): bump react-dom from 16.13.0 to 16.13.1 in /explorer
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.13.0 to 16.13.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.13.1/packages/react-dom)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-07 18:34:55 +08:00
dependabot-preview[bot]
2aa610e5c8 chore(deps-dev): bump semantic-release from 17.0.8 to 17.1.1 in /web3.js
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.0.8 to 17.1.1.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.0.8...v17.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-07 18:20:41 +08:00
dependabot-preview[bot]
e54246a9cf chore(deps): bump @testing-library/react in /explorer
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 9.5.0 to 10.4.4.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v9.5.0...v10.4.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-07 18:20:11 +08:00
dependabot-preview[bot]
dd73e8eb62 chore(deps): bump @types/node from 14.0.14 to 14.0.18 in /explorer
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.14 to 14.0.18.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-07 18:16:35 +08: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
Greg Fitzgerald
119949d4d8 Add a default commitment-level (#10935) 2020-07-07 03:05:55 +00:00
sakridge
960f6f6f07 Decouple genesis fetch and snapshot fetch (#10931) 2020-07-06 16:09:12 -07:00
sakridge
58a475b789 Add db recovery methods (#10838) 2020-07-06 12:43:45 -07:00
sakridge
1269e348fb Add a way to re-hash the bank (#10765) 2020-07-06 12:42:41 -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
carllin
823126b372 Fix parsing (#10924)
Co-authored-by: Carl <carl@solana.com>
2020-07-06 02:39:42 -07:00
Ryo Onodera
92697973d0 Document lockout_intervals and tiny niceties (#10925) 2020-07-06 08:59:17 +00:00
sakridge
658de5b347 Skip and warn for hard-forks which are less than the start slot (#10918)
* Skip and warn for hard-forks which are less than the start slot

Option is used during a restart, but then after the restart is
complete, then the option is not needed if the starting slot
is past the hard-fork since the hard-fork should already be
in the snapshot it started from.

* Update ledger/src/blockstore_processor.rs

Co-authored-by: Michael Vines <mvines@gmail.com>

Co-authored-by: Michael Vines <mvines@gmail.com>
2020-07-05 13:51:43 -07:00
carllin
28e15a63e5 Repair timing (#10913)
Co-authored-by: Carl <carl@solana.com>
2020-07-03 18:37:01 -07:00
carllin
f014c94369 Add breakdown of erasure blobs (#10912)
Co-authored-by: Carl <carl@solana.com>
2020-07-03 17:44:32 -07:00
Greg Fitzgerald
2922494b4f Cleanup rpc (#10910)
* Remove unreachable error case

* Inline Ok

* Hoist Ok
2020-07-03 17:39:14 -06:00
Trent Nelson
c5a501e87f Steal dumoulin from colo for TdS 2020-07-03 20:30:44 +00:00
Ryo Onodera
d8106ab552 Make test-checks.sh helpful and cargo-for-all-lock-files.sh useful (#10906) 2020-07-03 18:08:12 +09: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
Dan Albert
bcf36cbf18 Add June intake validators to SOM (#10899)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-07-02 21:08:54 +00:00
dependabot-preview[bot]
ccc5ae221d chore(deps): bump @solana/web3.js from 0.61.4 to 0.62.0 in /explorer (#10893)
Bumps [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) from 0.61.4 to 0.62.0.
- [Release notes](https://github.com/solana-labs/solana-web3.js/releases)
- [Commits](https://github.com/solana-labs/solana-web3.js/compare/v0.61.4...v0.62.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-07-02 09:00:20 -07:00
dependabot-preview[bot]
2f5f89f804 chore(deps-dev): bump jest from 26.0.1 to 26.1.0 in /web3.js (#10896)
Bumps [jest](https://github.com/facebook/jest) from 26.0.1 to 26.1.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v26.0.1...v26.1.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-07-02 09:00:00 -07:00
sakridge
3884323cb6 Add target-node flag to bench-tps (#10876) 2020-07-01 21:10:12 -07:00
dependabot-preview[bot]
0d6ddf578d chore(deps): bump @types/node from 12.12.30 to 14.0.14 in /explorer
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.12.30 to 14.0.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-02 12:07:28 +08:00
dependabot-preview[bot]
d4836ad58b chore(deps): bump typescript from 3.9.5 to 3.9.6 in /explorer
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.5 to 3.9.6.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-02 12:05:04 +08:00
Michael Vines
d53228e69d getInflationRate now only supports the current epoch 2020-07-02 02:11:31 +00:00
Jack May
52526a9bc2 Prevent stub inclusion when building shared objects (#10875) 2020-07-01 13:15:30 -07:00
Tyera Eulberg
2669ccb864 Update struct prefixes to Ui (#10874)
* Update comments

* Use Ui prefix
2020-07-01 20:06:40 +00:00
carllin
6b45481bbb Instructions for validator logging (#10845)
* Instructions for disabling log throttling

* Remove syslog, add logrotate

* Update docs/src/running-validator/validator-start.md

Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com>

Co-authored-by: Carl <carl@solana.com>
Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com>
2020-07-01 12:50:31 -07:00
sakridge
cf17eaf5aa Add docs for restarting a cluster (#10857) 2020-07-01 10:52:09 -07:00
Michael Vines
36f436c760 genesis subcommand now displays ticks per slot 2020-07-01 17:32:35 +00:00
dependabot-preview[bot]
1742824dd5 chore(deps-dev): bump @commitlint/travis-cli in /web3.js (#10772)
Bumps [@commitlint/travis-cli](https://github.com/conventional-changelog/commitlint) from 8.3.5 to 9.0.1.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.1)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-01 08:34:03 -07:00
dependabot-preview[bot]
a6c269297d chore(deps): bump @testing-library/jest-dom in /explorer (#10868)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.10.1 to 5.11.0.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.10.1...v5.11.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-07-01 08:33:50 -07:00
dependabot-preview[bot]
1500ad97b5 chore(deps): bump react from 16.13.0 to 16.13.1 in /explorer (#10869)
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.13.0 to 16.13.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.13.1/packages/react)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-01 08:33:04 -07: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
dependabot-preview[bot]
2f6f081af4 chore(deps-dev): bump @commitlint/config-conventional in /web3.js (#10774)
Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint) from 8.3.4 to 9.0.1.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v9.0.1)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-01 08:09:10 -07:00
dependabot-preview[bot]
056efcded8 chore(deps): bump @types/react from 16.9.38 to 16.9.41 in /explorer (#10775)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.38 to 16.9.41.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-01 08:09:03 -07:00
dependabot-preview[bot]
08478ed14a chore(deps): bump @types/jest from 26.0.0 to 26.0.3 in /explorer (#10788)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 26.0.0 to 26.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-01 08:08:58 -07:00
dependabot-preview[bot]
8b69f6c863 chore(deps): bump hidapi from 1.2.2 to 1.2.3 (#10866)
Bumps [hidapi](https://github.com/ruabmbua/hidapi-rs) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/ruabmbua/hidapi-rs/releases)
- [Commits](https://github.com/ruabmbua/hidapi-rs/commits)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-01 08:08:47 -07:00
dependabot-preview[bot]
ba73f24a93 chore(deps-dev): bump @babel/core from 7.10.2 to 7.10.4 in /web3.js (#10852)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.2 to 7.10.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.4/packages/babel-core)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-07-01 08:07:45 -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 6e7149f503.

* s/Rpc/Ui

* Add tests

* Ui more things

* Comments
2020-07-01 04:55:11 +00:00
Ryo Onodera
b89e506cbb Consistently create temp dirs under ledger/farf (#10848) 2020-07-01 11:38:59 +09:00
sakridge
5adf6f6bde Update expected shred version for testnet. (#10858) 2020-06-30 13:54:52 -07:00
sakridge
3f287b3328 Change release docs to use CI when bumping the version (#10856) 2020-06-30 12:58:46 -07: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
Greg Fitzgerald
3a3b7a399a Fix netutils test (#10842) 2020-06-30 09:57:16 -06:00
Ryo Onodera
cabedc0f36 Remove outdated todo comment (#10850) 2020-06-30 13:43:01 +00:00
carllin
2dfa48daf9 Add ability to parse logs in ledger-tool (#10840)
Co-authored-by: Carl <carl@solana.com>
2020-06-30 02:20:54 -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
Jack May
0579581f8c feat: getProgramAddress takes bytes rather than strings (#10837) 2020-06-29 17:05:05 -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
Greg Fitzgerald
59aa299d05 Fix the docs build (#10834) 2020-06-29 21:28:15 +00:00
Tyera Eulberg
b28ec32e18 Update transaction encoding docs (#10833) 2020-06-29 14:10:25 -06:00
sakridge
17a2128a8f More replay stage timing metrics (#10828) 2020-06-28 10:04:15 -07:00
sakridge
ea30c157e0 Better slot printing (#10811) 2020-06-27 10:47:02 -07:00
carllin
fb8e2d8cdb Add debugging (#10822)
Co-authored-by: Carl <carl@solana.com>
2020-06-26 10:23:11 +00:00
Trent Nelson
7021e1c584 net.sh: Refactor node initialization wait (#10819)
* remote-node.sh: Factor out init wait to own script

* remote-node.sh: Allow nodes to initialize asynchronously

* testnet-automation: Plumb --async-node-init
2020-06-26 05:48:58 +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
sakridge
7430978d1a Keep oldest snapshot so playing the ledger is possible from local data. (#10814) 2020-06-25 20:41:44 -07:00
carllin
0fde0d7379 Add ancestor iterator to lib.rs (#10813)
Co-authored-by: Carl <carl@solana.com>
2020-06-25 23:39:55 +00:00
Greg Fitzgerald
62b873b054 Clean up rpc module (#10812)
* Clean up rpc module

* Simplify getting bank
2020-06-25 17:08:55 -06:00
sakridge
aa544b2245 Add ledger copy command (#10756) 2020-06-25 11:56:36 -07:00
Tyera Eulberg
72b6349438 Add design proposal for ProgramInstruction procedural macro (#10763)
* Add design proposal for ProgramInstruction procedural macro

* Update examples and some verbiage

* More constant-like

* Generated helpers expect Pubkey by value
2020-06-25 12:52:52 -06:00
Ryo Onodera
50f7ed80c8 Dont skip eager rent collect across gapped epochs (#10206)
* Dont skip eager rent collect across gapped epochs

* Adjust style and comment

* Adjust ascii chart and comment a bit

* Moar assert

* Relax the partition_count assert for completeness

* Tweak comment...

* tweak a bit

* Add gating logic

* Address reviews

* small formatting

* Clarify the code by replacing auto_generated...

* small formatting

* small formatting

* small formatting

* small formatting

* Narrow down conditional compilation scope
2020-06-25 23:11:33 +09: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
Ryo Onodera
9f5bd5fe81 Expose SlotHistory::oldest() -> Slot (#10799) 2020-06-25 18:23:31 +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
Ryo Onodera
4dc9f378b8 Fix race in ci/run-sanity.sh (#10796) 2020-06-25 03:48:28 +00:00
Greg Fitzgerald
7ade330b23 Rename Client methods to match proposed BanksClient (#10793) 2020-06-25 03:35:38 +00:00
sakridge
ea708b0d84 Add blockstore insert metrics to dashboard (#10787) 2020-06-24 18:21:26 -07:00
Trent Nelson
48b846203e Use cargo tree to bump release branch lock files (#10790) 2020-06-25 00:47:04 +00:00
sakridge
98621648cb Add poh-bench (#10707) 2020-06-24 15:51:52 -07: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
Dan Albert
d5d5ad0071 Fixup stake doc wording (#10782)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-06-24 20:45:21 +00:00
sakridge
4e04282564 Add correct erasure metrics to dashboard (#10781) 2020-06-24 13:16:56 -07:00
carllin
764c7b0403 Disable entire codepath (#10767)
Co-authored-by: Carl <carl@solana.com>
2020-06-24 12:09:55 -07:00
Dan Albert
0b14ae5725 Add staking guide to docs (#10609) 2020-06-24 09:25:35 -06:00
Justin Starry
8df16ac8a9 Fix explorer prettier error 2020-06-24 21:48:09 +08:00
Justin Starry
f7a313597b Force https for explorer 2020-06-24 21:45:03 +08:00
Justin Starry
74c44009a7 Fix explorer account history search 2020-06-24 21:01:39 +08:00
Justin Starry
d989cc60f6 Fix explorer cluster status button styling on mobile 2020-06-24 16:49:51 +08:00
Justin Starry
ad75f08c43 chore: run latest prettier 2020-06-24 16:14:08 +08:00
dependabot-preview[bot]
6171b55f50 chore(deps): bump prettier from 1.19.1 to 2.0.5 in /explorer
Bumps [prettier](https://github.com/prettier/prettier) from 1.19.1 to 2.0.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.19.1...2.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 16:14:08 +08:00
dependabot-preview[bot]
12339a72fa chore(deps): bump @solana/web3.js from 0.61.0 to 0.61.4 in /explorer
Bumps [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) from 0.61.0 to 0.61.4.
- [Release notes](https://github.com/solana-labs/solana-web3.js/releases)
- [Commits](https://github.com/solana-labs/solana-web3.js/compare/v0.61.0...v0.61.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 16:13:49 +08:00
dependabot-preview[bot]
1c469e38d3 chore(deps): bump @types/react-router-dom in /explorer
Bumps [@types/react-router-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-router-dom) from 5.1.3 to 5.1.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-router-dom)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 16:13:14 +08:00
dependabot-preview[bot]
65eee0dfb8 chore(deps-dev): bump rollup from 2.17.0 to 2.18.0 in /web3.js
Bumps [rollup](https://github.com/rollup/rollup) from 2.17.0 to 2.18.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.17.0...v2.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 16:03:36 +08:00
sakridge
0e393a5684 Allow for hard fork at last root (#10762) 2020-06-23 21:49:11 -07:00
Trent Nelson
3aab13a167 Make curl verbose when uploading assets to github (#10757)
Debugging silent asset upload failures during release
2020-06-24 00:27:55 +00:00
Dan Albert
c52f06a54a Fix plumtree link (#10755)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-06-23 23:35:35 +00:00
sakridge
a1ef921b88 Rework backup and clear function (#10751) 2020-06-23 21:29:07 +00:00
carllin
77b8de193c Add utility functions for testing (#10749)
* Add ancestor iterator

* Add blockstore generation from trees

Co-authored-by: Carl <carl@solana.com>
2020-06-23 12:05:00 -07:00
Jack May
db4a18ada4 Add PubkeyError for ProgramError (#10748) 2020-06-23 11:19:27 -07: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
Jack May
73586c1aad Use &[u8] for program address seeds rather then &str (#10744) 2020-06-22 16:51:43 -07:00
Trent Nelson
842cab2739 Remote Wallet: Stricter derivation path component parsing (#10725) 2020-06-22 17:10:11 +00:00
Trent Nelson
d42247c652 ledger-tool: Ignore SIGUSR1 (#10730)
Prevents warehouse archive calls getting KO'd by logrotate
2020-06-21 18:08:17 +00: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
cae22efd0e Fix typo (#10724) 2020-06-20 00:07:20 +00: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
dependabot-preview[bot]
968792385b chore(deps): bump @types/react-dom from 16.9.5 to 16.9.8 in /explorer
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 16.9.5 to 16.9.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-19 15:28:05 +08:00
dependabot-preview[bot]
35f3f74aee chore(deps): bump node-sass from 4.13.1 to 4.14.1 in /explorer
Bumps [node-sass](https://github.com/sass/node-sass) from 4.13.1 to 4.14.1.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.13.1...v4.14.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-19 15:27:30 +08:00
dependabot-preview[bot]
00e1235f8f chore(deps-dev): bump rollup from 2.15.0 to 2.17.0 in /web3.js
Bumps [rollup](https://github.com/rollup/rollup) from 2.15.0 to 2.17.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.15.0...v2.17.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-19 15:27:01 +08:00
Justin Starry
f31f66a7c3 fix: avoid double spend in sendAndConfirmTransaction 2020-06-19 15:25:41 +08:00
Jack May
d77818c18b Pull program stubs into SDK (#10704) 2020-06-18 23:23:28 -07: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
sakridge
b172b3369e Add new split poh/transaction verify times to dashboard (#10706) 2020-06-18 22:21:11 -07:00
sakridge
0c72f62e96 Refactor gossip code from one huge function (#10701) 2020-06-18 22:20:52 -07:00
Michael Vines
c0389ef82f Don't bother api.github.com on pull requests to avoid getting rate limited 2020-06-18 23:48:31 +00:00
Michael Vines
2c029b844b Split out current and delinquent validators (#10702) 2020-06-18 16:19:32 -07:00
sakridge
0a0f17b9d2 Reduce responder error prints (#10664) 2020-06-18 13:30:55 -07:00
Michael Vines
b297d0b423 Permit users to assign labels to account addresses 2020-06-18 18:46:49 +00:00
Michael Vines
a25ea8e774 Only force up-to-date lock files on edge 2020-06-18 18:23:31 +00:00
Dan Albert
89e0584250 Do not run buildkite tests if gitbook config modified (#10692)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
2020-06-18 16:25:47 +00:00
dependabot-preview[bot]
f4bffb4b21 chore(deps): bump @types/react from 16.9.36 to 16.9.38 in /explorer
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.36 to 16.9.38.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-18 16:07:39 +08:00
dependabot-preview[bot]
1662496359 chore(deps): bump @testing-library/jest-dom in /explorer
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 4.2.4 to 5.10.1.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v4.2.4...v5.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-18 16:07:26 +08:00
dependabot-preview[bot]
ed404dfc10 chore(deps): bump @types/jest from 24.9.1 to 26.0.0 in /explorer
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 24.9.1 to 26.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-18 16:07:05 +08:00
carllin
9c22a6007d Update testnet shred version (#10684)
Co-authored-by: Carl <carl@solana.com>
2020-06-18 00:55:06 -07:00
Justin Starry
229ff05fe9 fix: improve send and confirm options ergonomics 2020-06-18 15:54:15 +08:00
carllin
dae8bc477b Update testnet shred version (#10681)
Co-authored-by: Carl <carl@solana.com>
2020-06-18 07:39:47 +00:00
Justin Starry
7ad96e833b chore: fix flow config 2020-06-18 15:39:02 +08:00
Justin Starry
df7e40f0bd chore: add set -e to web3 travis script to fail job on error 2020-06-18 15:39:02 +08:00
Justin Starry
66e03822a8 chore: fix web3 CI build failure 2020-06-18 15:39:02 +08:00
Greg Fitzgerald
6d810b9e3c Clean up solana-tokens (#10667)
* Use a trait object in solana-tokens' ThinClient

* Inline arg resolution

Not worth the code complexity

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-18 05:14:41 +00:00
dependabot-preview[bot]
b81998be69 chore(deps-dev): bump flow-bin from 0.126.1 to 0.127.0 in /web3.js (#10591)
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.126.1 to 0.127.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/commits)

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-18 13:13:38 +08: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
Michael Vines
5b9cd72d8f Remove strict from automerge, add rebase opt in 2020-06-17 20:52:39 -07:00
sakridge
7afb5eee78 Fix typo (#10676)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-18 02:24:13 +00:00
Greg Fitzgerald
26ebfedf46 Derive the working bank (#10670) 2020-06-17 20:16:57 -06:00
Tyera Eulberg
f37d2d5a58 Add docs to declare_id macro (#10671) 2020-06-17 19:57:23 -06:00
Michael Vines
c151e783ca cli: Add version information to solana gossip and solana validators (#10652)
* Add validator version to `solana gossip`

* Add validator version to `solana validators`

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-17 23:04:13 +00:00
anatoly yakovenko
a5f82c995e ignore break (#10666) 2020-06-17 20:53:45 +00:00
Tyera Eulberg
7a741bb79a Move commitment to CliConfig to enable faster integration tests (#10627)
* Add commitment config to CliConfig

* Use config.commitment in cluster_query

* Use config.commitment in vote

* Add method with spinner + commitment

* Add send-transaction config to CliConfig

* Remove superfluous nonce check

* Add with_commitment helper fns

* Update src to use commitment

* Fix pay and transfer integration tests

* Fix nonce int tests

* Fix deploy int test

* Fix vote int test

* Fix stake int tests

* Nightly clippy

* Review comments
2020-06-17 12:18:48 -06:00
Jack May
dac7dc2f10 Move types to more appropriate files (#10638) 2020-06-17 10:39:14 -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
Michael Vines
336339ac33 Still destake delinquents on poor block production (#10646)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-17 11:29:28 +00:00
Kristofer Peterson
50c93d4441 Cleanup error type mapping in serde_snapshot (#10580)
* Cleanup error type mapping in serde_snapshot

* Fail when account storage entry files cannot be moved from snapshot
2020-06-17 17:56:29 +09:00
Ryo Onodera
540ac9eb6b Trigger all CI jobs for Dockerfile changes (#10651)
* Trigger docs job for possible mdbook updates, too

* Update comment

* Intentionally trigger ci docs job?

* Broaden more

* Revert "Intentionally trigger ci docs job?"

This reverts commit 801cf2bfdf.
2020-06-17 16:20:52 +09: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
Dan Albert
36ca43e15b Fix links in TdS registration docs page (#10641)
Co-authored-by: publish-docs.sh <maintainers@solana.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-17 02:36:18 +00:00
Trent Nelson
4daa519c1b Plumb --warp-slot through net scripts (#10639)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2020-06-17 01:55:55 +00:00
Ryo Onodera
bdbd677d57 Add crates.io to exclude... (#10640) 2020-06-17 09:10:30 +09:00
Trent Nelson
ae0d5ba201 Allow pre-existing stake accounts in multinode-demo/delegate-stake.sh 2020-06-16 15:45:25 -06: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
dependabot-preview[bot]
1b7ef69bce chore(deps): bump react-router-dom from 5.1.2 to 5.2.0 in /explorer
Bumps [react-router-dom](https://github.com/ReactTraining/react-router) from 5.1.2 to 5.2.0.
- [Release notes](https://github.com/ReactTraining/react-router/releases)
- [Changelog](https://github.com/ReactTraining/react-router/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTraining/react-router/compare/v5.1.2...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 13:16:21 -07:00
dependabot-preview[bot]
4f4105c7e3 chore(deps): bump typescript from 3.8.3 to 3.9.5 in /explorer
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.8.3 to 3.9.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.8.3...v3.9.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 13:16:13 -07:00
Ryo Onodera
2bbd599dfa Resotre linkcheck with some excludes (#10634) 2020-06-17 04:04:36 +09:00
Ryo Onodera
b9d6af4227 Disable linkcheck for now (#10633) 2020-06-17 03:34:13 +09:00
Ryo Onodera
40ccade5cc Update to rust 1.44.0 (#10585)
* Update rust 1.44.0

* Update rust nightly 1.46.0

* Update docs

* Fix clippy errors

* Compile all source code with stable and nightly

* Add another note

* script tweaks

* Fix a test...

* Add another workaround

* Add hack

* Increase timeout...

* Revert "Add hack"

This reverts commit 5960f087203be8792ec0728a6755288c317a2788.

* Revert "Add another workaround"

This reverts commit e14300d01ffd1b8e86e676662177545549b45c13.

* Require nightly rustfmt and use older nightly a bit

* Improve document a bit

* Revert now not-existing clippy check...
2020-06-17 01:32:16 +09:00
Michael Vines
2d2e23ab59 Bump baseline version 2020-06-16 08:45:35 -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
Ryo Onodera
b4f86cc67d Group showing various rust toolchain versions (#10618)
* Group showing various rust toolchain versions

* Fix
2020-06-16 13:40:53 +09:00
carllin
8bd62d78eb Fix race in remove_unrooted_slot (#10607)
* Fix race

* clippy fixes

* Rename and add comment

Co-authored-by: Carl <carl@solana.com>
2020-06-15 19:41:26 -07:00
Ryo Onodera
f76bd9cd5a Follow dependabot change (#10616) 2020-06-16 11:31:46 +09:00
Trent Nelson
348bf78cd1 Plumb --wait-for-supermajority through scripts (#10611) 2020-06-16 01:52:44 +00:00
Michael Vines
296ac10b3a |solana withdraw-from-vote-account| now supports ALL, and refuses to deallocate the vote account (#10602) 2020-06-15 21:36:47 +00:00
Kristofer Peterson
daa2e6363f Add generic is_parsable() input validator.
Allow input validators to accept &str, &String and String parameters.
2020-06-15 09:30:39 -07:00
Michael Vines
184030d6e8 Minor RELEASE doc updates (#10601) 2020-06-15 16:09:04 +00:00
Michael Vines
74c7dce4b5 Simplify automerge label removal condition 2020-06-15 09:01:45 -07:00
Michael Vines
335f5f35f4 / 2020-06-15 08:51:46 -07:00
Michael Vines
22ec51f4d4 Add mergify automerge configuration 2020-06-15 08:45:02 -07:00
dependabot-preview[bot]
2267547f69 chore(deps): bump react-scripts from 3.4.0 to 3.4.1 in /explorer
Bumps [react-scripts](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-scripts) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/facebook/create-react-app/releases)
- [Changelog](https://github.com/facebook/create-react-app/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/create-react-app/commits/react-scripts@3.4.1/packages/react-scripts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 07:59:02 -07:00
dependabot-preview[bot]
c63a9d35bc chore(deps): bump bootstrap from 4.4.1 to 4.5.0 in /explorer
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 4.4.1 to 4.5.0.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v4.4.1...v4.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 07:58:47 -07:00
dependabot-buildkite
c6f20347e0 [auto-commit] Update all Cargo lock files 2020-06-15 07:58:16 -07: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
dependabot-preview[bot]
159a489fd8 Bump zstd from 0.5.2+zstd.1.4.5 to 0.5.3+zstd.1.4.5
Bumps [zstd](https://github.com/gyscos/zstd-rs) from 0.5.2+zstd.1.4.5 to 0.5.3+zstd.1.4.5.
- [Release notes](https://github.com/gyscos/zstd-rs/releases)
- [Commits](https://github.com/gyscos/zstd-rs/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 23:59:12 -07:00
dependabot-preview[bot]
943ae9793d Bump indicatif from 0.14.0 to 0.15.0
Bumps [indicatif](https://github.com/mitsuhiko/indicatif) from 0.14.0 to 0.15.0.
- [Release notes](https://github.com/mitsuhiko/indicatif/releases)
- [Commits](https://github.com/mitsuhiko/indicatif/compare/0.14.0...0.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 23:58:57 -07:00
Michael Vines
f6546d00c2 Export unconditionally 2020-06-14 23:31:10 -07:00
Michael Vines
1440ba9a0e Export to real solana-web3.js repo 2020-06-14 23:27:33 -07:00
Michael Vines
5361b29417 shellcheck 2020-06-14 23:24:22 -07:00
Michael Vines
de9799962c fix: remove broken links from README 2020-06-14 23:24:22 -07:00
Michael Vines
af60907b29 Trigger travis builds when .travis changes 2020-06-14 22:25:34 -07:00
Michael Vines
273710eca4 Connect web3.js to CI 2020-06-14 22:11:38 -07:00
Michael Vines
22ea4fb272 ci: break up .travis.yml 2020-06-14 22:08:55 -07:00
Michael Vines
d7b9aca87b chore: remove trailing whitespace 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
23ab880286 chore(deps-dev): bump eslint-plugin-import from 2.21.1 to 2.21.2
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.21.1 to 2.21.2.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.21.1...v2.21.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
24a906bf51 chore(deps-dev): bump acorn from 7.2.0 to 7.3.1
Bumps [acorn](https://github.com/acornjs/acorn) from 7.2.0 to 7.3.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/7.2.0...7.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f563835d45 chore(deps): bump jayson from 3.3.1 to 3.3.3
Bumps [jayson](https://github.com/tedeh/jayson) from 3.3.1 to 3.3.3.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v3.3.1...v3.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
ad0e71d357 feat: make Transaction.populate method public and tweak MessageArgs 2020-06-14 21:57:04 -07:00
Justin Starry
22a63fe93c fix: fix blockhash cache reuse 2020-06-14 21:57:04 -07:00
Justin Starry
24bb060292 feat: remove commitment option from requestAirdrop 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a9a19e2363 chore(deps-dev): bump eslint-plugin-import from 2.20.2 to 2.21.1
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.2 to 2.21.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.2...v2.21.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
48cbaacee5 chore(deps-dev): bump rollup from 2.13.1 to 2.15.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.13.1 to 2.15.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.13.1...v2.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7bcdb6d693 chore(deps-dev): bump typescript from 3.9.3 to 3.9.5
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.3 to 3.9.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.9.3...v3.9.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1feff166cc chore(deps): bump rpc-websockets from 5.1.2 to 5.2.2
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.1.2 to 5.2.2.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/compare/v5.1.2...v5.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
71a3f0f677 chore(deps-dev): bump rollup from 2.12.0 to 2.13.1
Bumps [rollup](https://github.com/rollup/rollup) from 2.12.0 to 2.13.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.12.0...v2.13.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
92d3f5887e chore(deps-dev): bump flow-bin from 0.126.0 to 0.126.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.126.0 to 0.126.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
e622bb12b3 feat: add getFeeCalculatorForBlockhash method 2020-06-14 21:57:04 -07:00
Justin Starry
e876081d52 chore: revert package.json change 2020-06-14 21:57:04 -07:00
Justin Starry
8f03677801 feat: remove getInflation in favor of getInflationGovernor 2020-06-14 21:57:04 -07:00
Justin Starry
8547ae43ce feat: add skipPreflight option 2020-06-14 21:57:04 -07:00
Justin Starry
a6e07e44da chore: revert "bump eslint-plugin-jest from 22.19.0 to 23.13.2"
This reverts commit 0df7eb8a1b324eb38daa1818990b0557c7147337.
2020-06-14 21:57:04 -07:00
Justin Starry
3a4d7ebe09 chore: revert "bump flow-bin from 0.125.1 to 0.126.0"
This reverts commit 35226a0e0e26673bbd38fbacff9257e72a0835f6.
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e759e7c91d chore(deps-dev): bump eslint-plugin-jest from 22.19.0 to 23.13.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.19.0 to 23.13.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.19.0...v23.13.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b7668838c9 chore(deps-dev): bump flow-bin from 0.125.1 to 0.126.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.125.1 to 0.126.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c4c6db6442 chore(deps): bump rpc-websockets from 5.1.1 to 5.1.2
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/compare/v5.1.1...v5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2c050eec39 chore(deps-dev): bump rollup from 2.11.2 to 2.12.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.11.2 to 2.12.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.11.2...v2.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c45e267973 chore(deps-dev): bump @babel/core from 7.10.1 to 7.10.2
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.1 to 7.10.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.2/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1670c4bee1 chore(deps-dev): bump @babel/preset-env from 7.10.1 to 7.10.2
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.10.1 to 7.10.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.2/packages/babel-preset-env)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
595f1c8867 chore(deps): bump @babel/runtime from 7.10.1 to 7.10.2
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.10.1 to 7.10.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.2/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
723cc5b925 chore(deps-dev): bump @babel/core from 7.10.0 to 7.10.1
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.0 to 7.10.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.1/packages/babel-core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
feaddea1d1 chore(deps): bump jayson from 3.3.0 to 3.3.1
Bumps [jayson](https://github.com/tedeh/jayson) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v3.3.0...v3.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0c996f80e8 chore(deps-dev): bump rollup from 2.11.0 to 2.11.2
Bumps [rollup](https://github.com/rollup/rollup) from 2.11.0 to 2.11.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.11.0...v2.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6b41331ecd chore(deps-dev): bump @babel/preset-env from 7.10.0 to 7.10.1
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.10.0 to 7.10.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.1/packages/babel-preset-env)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0838cdb58b chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-class-properties) from 7.8.3 to 7.10.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.1/packages/babel-plugin-proposal-class-properties)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fc076a0603 chore(deps): bump @babel/runtime from 7.10.0 to 7.10.1
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.10.0 to 7.10.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.1/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1993b51e74 chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.10.0 to 7.10.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.1/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5688949220 chore(deps-dev): bump @babel/preset-flow from 7.9.0 to 7.10.1
Bumps [@babel/preset-flow](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-flow) from 7.9.0 to 7.10.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.1/packages/babel-preset-flow)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fa2cbaf95f chore(deps-dev): bump @babel/plugin-proposal-function-bind
Bumps [@babel/plugin-proposal-function-bind](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-function-bind) from 7.8.3 to 7.10.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.1/packages/babel-plugin-proposal-function-bind)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8ab4c22a54 chore(deps-dev): bump rollup from 2.10.9 to 2.11.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.10.9 to 2.11.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.10.9...v2.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
a29e088169 feat: add createProgramAddress 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
85c68bc953 chore(deps-dev): bump @babel/core from 7.9.6 to 7.10.0
Bumps [@babel/core](https://github.com/babel/babel) from 7.9.6 to 7.10.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.6...v7.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8623d989cd chore(deps-dev): bump @babel/preset-env from 7.9.6 to 7.10.0
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.9.6 to 7.10.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.6...v7.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c289ce85a6 chore(deps): bump @babel/runtime from 7.9.6 to 7.10.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.9.6 to 7.10.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.10.0/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6e262b8eab chore(deps-dev): bump rollup-plugin-terser from 5.3.0 to 6.1.0
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.3.0 to 6.1.0.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.3.0...v6.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c4797ae210 chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.9.6 to 7.10.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.6...v7.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
e2e4b47103 feat: add singleGossip commitment level 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ed08c25d2d chore(deps-dev): bump semantic-release from 17.0.7 to 17.0.8
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.0.7 to 17.0.8.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.0.7...v17.0.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
13bc7a4d95 chore(deps-dev): bump rollup from 2.10.8 to 2.10.9
Bumps [rollup](https://github.com/rollup/rollup) from 2.10.8 to 2.10.9.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.10.8...v2.10.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
925c225885 feat: add support for getFirstAvailableBlock method 2020-06-14 21:57:04 -07:00
Justin Starry
1b8fe71230 feat: add getLargestAccounts rpc api 2020-06-14 21:57:04 -07:00
Justin Starry
9c677c7d3d feat: add support for getSupply RPC method 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6d24110bcd chore(deps-dev): bump rollup from 2.10.5 to 2.10.8
Bumps [rollup](https://github.com/rollup/rollup) from 2.10.5 to 2.10.8.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.10.5...v2.10.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
79642c5d40 fix: update expected signature-status error 2020-06-14 21:57:04 -07:00
Justin Starry
722adb66c2 feat: add commitment param to subscription apis 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
803910bf08 chore(deps-dev): bump acorn from 7.1.1 to 7.2.0
Bumps [acorn](https://github.com/acornjs/acorn) from 7.1.1 to 7.2.0.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/7.1.1...7.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
7f9a2e477f fix: fix getEpochInfo type definition 2020-06-14 21:57:04 -07:00
Justin Starry
6558e05fd0 feat: add minimumLedgerSlot api 2020-06-14 21:57:04 -07:00
Justin Starry
839e93480c feat: update transaction confirming apis 2020-06-14 21:57:04 -07:00
Justin Starry
3b71ec1ff6 feat: add root and single commitment levels 2020-06-14 21:57:04 -07:00
Jack May
1e1c9de367 fix: clean fixtures 2020-06-14 21:57:04 -07:00
Jack May
f02e73cd5e fix: remove return value from load, unnecessary 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6b0c4bf17f chore(deps): bump bn.js from 5.1.1 to 5.1.2
Bumps [bn.js](https://github.com/indutny/bn.js) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/indutny/bn.js/releases)
- [Changelog](https://github.com/indutny/bn.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/indutny/bn.js/compare/v5.1.1...v5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4ee1743b52 chore(deps-dev): bump flow-bin from 0.123.0 to 0.125.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.123.0 to 0.125.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a97a69bf30 chore(deps-dev): bump codecov from 3.6.5 to 3.7.0
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.6.5 to 3.7.0.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/compare/v3.6.5...v3.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a38b6e7060 chore(deps-dev): bump typescript from 3.9.2 to 3.9.3
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.2 to 3.9.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.9.2...v3.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
88af310d07 chore(deps-dev): bump rollup from 2.7.6 to 2.10.5
Bumps [rollup](https://github.com/rollup/rollup) from 2.7.6 to 2.10.5.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.7.6...v2.10.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fc5c33d921 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.30.0 to 2.34.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.34.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b3e093e4f5 chore(deps-dev): bump @typescript-eslint/parser from 2.30.0 to 2.34.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.30.0 to 2.34.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.34.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
4b613a4574 feat: add getBlockTime method 2020-06-14 21:57:04 -07:00
Justin Starry
e10a5c90ab chore: disable latest node in CI 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5fbd07c2c0 chore(deps): bump ws from 7.2.5 to 7.3.0
Bumps [ws](https://github.com/websockets/ws) from 7.2.5 to 7.3.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.2.5...7.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8f2a0d1106 chore(deps-dev): bump typescript from 3.8.3 to 3.9.2
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.8.3 to 3.9.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.8.3...v3.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7a835af4b8 chore(deps-dev): bump marked from 0.8.2 to 1.1.0
Bumps [marked](https://github.com/markedjs/marked) from 0.8.2 to 1.1.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.8.2...v1.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
ec71ed9e57 chore: bump jest from 25.5.4 to 26.0.1 2020-06-14 21:57:04 -07:00
Justin Starry
615252c2e9 chore: bump jest from 25.5.2 to 25.5.4 2020-06-14 21:57:04 -07:00
Justin Starry
d3a2934e75 chore: fix flaky test and stop running broken examples in ci 2020-06-14 21:57:04 -07:00
Justin Starry
5f0b182a3b fix: overly strict key length check when decoding stake instructions 2020-06-14 21:57:04 -07:00
Justin Starry
2116e2b181 fix: key length check when decoding instructions 2020-06-14 21:57:04 -07:00
Justin Starry
742c83f15b fix: add type defs for getEpochInfo 2020-06-14 21:57:04 -07:00
Justin Starry
a112d9cedf fix: add type def for NonceAccount.fromAccountData 2020-06-14 21:57:04 -07:00
Justin Starry
02a278b3b2 fix: add version to ContactInfo 2020-06-14 21:57:04 -07:00
Justin Starry
c584fbdf39 feat: add support for more system instructions 2020-06-14 21:57:04 -07:00
Justin Starry
09d1b7f39f fix: recent blockhash decoding for conf transactions 2020-06-14 21:57:04 -07:00
Justin Starry
c5802bcbb6 feat: allow passing seed to createNonceAccount 2020-06-14 21:57:04 -07:00
Justin Starry
5662808b4c fix: isAccountWritable takes a number 2020-06-14 21:57:04 -07:00
Justin Starry
14a41bc47b feat: expose transaction message publicly 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cd439bed0d chore(deps-dev): bump rollup from 2.7.5 to 2.7.6
Bumps [rollup](https://github.com/rollup/rollup) from 2.7.5 to 2.7.6.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.7.5...v2.7.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
734ada927c chore(deps-dev): bump rollup from 2.7.3 to 2.7.5
Bumps [rollup](https://github.com/rollup/rollup) from 2.7.3 to 2.7.5.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.7.3...v2.7.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e2011469c6 chore(deps): bump @babel/runtime from 7.9.2 to 7.9.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.9.2 to 7.9.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.9.6/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
19a8de94db chore(deps-dev): bump @babel/core from 7.9.0 to 7.9.6
Bumps [@babel/core](https://github.com/babel/babel) from 7.9.0 to 7.9.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.0...v7.9.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cce10e95d2 chore(deps-dev): bump jest from 25.5.0 to 25.5.2
Bumps [jest](https://github.com/facebook/jest) from 25.5.0 to 25.5.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.0...v25.5.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
83ad39fc66 chore(deps-dev): bump @babel/preset-env from 7.9.5 to 7.9.6
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.9.5 to 7.9.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.5...v7.9.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a7d73e89ab chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.9.0 to 7.9.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.0...v7.9.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
be85d74142 chore(deps-dev): bump jest from 25.4.0 to 25.5.0
Bumps [jest](https://github.com/facebook/jest) from 25.4.0 to 25.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.4.0...v25.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
17bb897383 chore(deps-dev): bump rollup from 2.7.1 to 2.7.3
Bumps [rollup](https://github.com/rollup/rollup) from 2.7.1 to 2.7.3.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.7.1...v2.7.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1c5cec9eee chore(deps-dev): bump @typescript-eslint/parser from 2.29.0 to 2.30.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.29.0 to 2.30.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.30.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1ea8caf3fd chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.29.0 to 2.30.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.30.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
9effa09334 chore(deps): bump ws from 7.2.3 to 7.2.5
Bumps [ws](https://github.com/websockets/ws) from 7.2.3 to 7.2.5.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.2.3...7.2.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Trent Nelson
7e642d5456 fix: rename signData to serializeMessage() 2020-06-14 21:57:04 -07:00
Trent Nelson
403448a91f test: add test for external Transaction signing 2020-06-14 21:57:04 -07:00
Trent Nelson
8142aa6c1d feat: allow external signatures on Transactions
Adds a helper for adding externally created signature/pubkey pairs
to `Transactions`
2020-06-14 21:57:04 -07:00
Trent Nelson
7d3781e19f feat: expose Transaction._getSignData() as Transaction.signData 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1be298c49f chore(deps-dev): bump eslint-config-prettier from 6.10.1 to 6.11.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.10.1 to 6.11.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.10.1...v6.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
62251a8bc2 chore: split out meta type 2020-06-14 21:57:04 -07:00
Justin Starry
ae53742e1a feat: add getConfirmedTransaction and getConfirmedSignaturesForAddress 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7f182d22cd chore(deps): bump jayson from 3.2.1 to 3.3.0
Bumps [jayson](https://github.com/tedeh/jayson) from 3.2.1 to 3.3.0.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v3.2.1...v3.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
86546a0466 chore(deps-dev): bump semantic-release from 17.0.6 to 17.0.7
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.0.6 to 17.0.7.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.0.6...v17.0.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2a14eb0763 chore(deps-dev): bump prettier from 2.0.4 to 2.0.5
Bumps [prettier](https://github.com/prettier/prettier) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/2.0.5/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.4...2.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ef95db2028 chore(deps-dev): bump rollup from 2.6.1 to 2.7.1
Bumps [rollup](https://github.com/rollup/rollup) from 2.6.1 to 2.7.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.6.1...v2.7.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2b6cbb2ed8 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.28.0 to 2.29.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.29.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2ed23560fc chore(deps-dev): bump @typescript-eslint/parser from 2.28.0 to 2.29.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.28.0 to 2.29.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.29.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f0e3604652 chore(deps-dev): bump jest from 25.3.0 to 25.4.0
Bumps [jest](https://github.com/facebook/jest) from 25.3.0 to 25.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.3.0...v25.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a4e4dc57bb chore(deps-dev): bump semantic-release from 17.0.5 to 17.0.6
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.0.5 to 17.0.6.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.0.5...v17.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
74e653d885 chore(deps-dev): bump semantic-release from 17.0.4 to 17.0.5
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.0.4 to 17.0.5.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.0.4...v17.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
95e9181b31 chore(deps-dev): bump flow-bin from 0.122.0 to 0.123.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.122.0 to 0.123.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.122.0...v0.123.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
efe6b24e97 chore(deps): bump jayson from 3.2.0 to 3.2.1
Bumps [jayson](https://github.com/tedeh/jayson) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v3.2.0...v3.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
e6fb146809 feat: specify program account when using bpf loader 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
56781f893e chore(deps): bump buffer from 5.5.0 to 5.6.0
Bumps [buffer](https://github.com/feross/buffer) from 5.5.0 to 5.6.0.
- [Release notes](https://github.com/feross/buffer/releases)
- [Commits](https://github.com/feross/buffer/compare/v5.5.0...v5.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
3a1c582df5 fix: connection url can upgrade to a websocket if no port is supplied 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3aee5149a0 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.27.0 to 2.28.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.28.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f35a8db5c0 chore(deps-dev): bump @typescript-eslint/parser from 2.27.0 to 2.28.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.27.0 to 2.28.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.28.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
85f8db13a8 chore(deps-dev): bump eslint-plugin-prettier from 3.1.2 to 3.1.3
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d252b82578 chore(deps-dev): bump rollup from 2.6.0 to 2.6.1
Bumps [rollup](https://github.com/rollup/rollup) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3ef7f6da09 chore(deps-dev): bump rollup from 2.4.0 to 2.6.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.4.0 to 2.6.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.4.0...v2.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
cd6b48a403 fix: adjust status retry algorithm 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2c517c1f3c chore(deps-dev): bump rollup from 2.3.5 to 2.4.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.3.5 to 2.4.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.3.5...v2.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0d37832d3a chore(deps-dev): bump rollup from 2.3.4 to 2.3.5
Bumps [rollup](https://github.com/rollup/rollup) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.3.4...v2.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
96e5099d33 fix: feedback 2020-06-14 21:57:04 -07:00
Jack May
ca02d593aa fix: improve error messaging 2020-06-14 21:57:04 -07:00
Justin Starry
4409a05564 fix: reset subscriptions on ws close 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0f7789e373 chore(deps-dev): bump jest from 25.2.7 to 25.3.0
Bumps [jest](https://github.com/facebook/jest) from 25.2.7 to 25.3.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.7...v25.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
831ab58f32 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.26.0 to 2.27.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.27.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Trent Nelson
d081b55e40 fix: declare system program id in base58 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
65666b63cb chore(deps-dev): bump rollup from 2.3.3 to 2.3.4
Bumps [rollup](https://github.com/rollup/rollup) from 2.3.3 to 2.3.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.3.3...v2.3.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
aa3f411354 chore(deps-dev): bump @babel/preset-env from 7.9.0 to 7.9.5
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.9.0 to 7.9.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.0...v7.9.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
224268ab37 chore(deps-dev): bump @typescript-eslint/parser from 2.26.0 to 2.27.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.26.0 to 2.27.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.27.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e3714a80a8 chore(deps-dev): bump prettier from 2.0.3 to 2.0.4
Bumps [prettier](https://github.com/prettier/prettier) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.3...2.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
3a2fe7fdbc feat: update getSignatureStatus methods 2020-06-14 21:57:04 -07:00
Justin Starry
ae10f1ecab fix: properly export SYSTEM_INSTRUCTION_LAYOUTS 2020-06-14 21:57:04 -07:00
Justin Starry
5e1a26ce2e fix: properly export NONCE_ACCOUNT_LENGTH 2020-06-14 21:57:04 -07:00
Justin Starry
7989c10b7a feat: return null when account info not found 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0fcb1f6f56 chore(deps-dev): bump prettier from 2.0.2 to 2.0.3
Bumps [prettier](https://github.com/prettier/prettier) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.2...2.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
4c85bccda7 fix: add NONCE_ACCOUNT_LENGTH to type defs 2020-06-14 21:57:04 -07:00
Justin Starry
4242eee739 chore: fix lint 2020-06-14 21:57:04 -07:00
Justin Starry
9b05e9d21e fix: add getNonce method to defs 2020-06-14 21:57:04 -07:00
Justin Starry
01f9a2ee4c chore: add test for failed transaction 2020-06-14 21:57:04 -07:00
Justin Starry
b0316f82b5 feat: add err field to status results 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3120e681d6 chore(deps-dev): bump rollup from 2.3.2 to 2.3.3
Bumps [rollup](https://github.com/rollup/rollup) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.3.2...v2.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c55c533202 chore(deps): bump rpc-websockets from 5.1.0 to 5.1.1
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits/v5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0484484823 chore(deps): bump rpc-websockets from 5.0.16 to 5.1.0
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.0.16 to 5.1.0.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2067bfde72 chore(deps-dev): bump jest from 25.2.6 to 25.2.7
Bumps [jest](https://github.com/facebook/jest) from 25.2.6 to 25.2.7.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.6...v25.2.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
98e68825d0 chore(deps-dev): bump flow-bin from 0.121.0 to 0.122.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.121.0 to 0.122.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.121.0...v0.122.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
dd4fbdaed3 chore(deps-dev): bump jest from 25.2.4 to 25.2.6
Bumps [jest](https://github.com/facebook/jest) from 25.2.4 to 25.2.6.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.4...v25.2.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
6f363e5221 feat: use new getSignatureStatuses endpoint and naming 2020-06-14 21:57:04 -07:00
Justin Starry
057b2861d3 fix: getConfirmedBlock ix programId parsing 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cfc902fc1e chore(deps-dev): bump rollup from 2.3.1 to 2.3.2
Bumps [rollup](https://github.com/rollup/rollup) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.3.1...v2.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
0fa84bb06c fix: getConfirmedBlock missing arg in defs 2020-06-14 21:57:04 -07:00
Justin Starry
a948757b0e chore: increase test sleep to ensure confirmation 2020-06-14 21:57:04 -07:00
Justin Starry
aeedd3867f feat: rename testnet util methods 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
352f296c09 chore(deps-dev): bump rollup from 2.3.0 to 2.3.1
Bumps [rollup](https://github.com/rollup/rollup) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.3.0...v2.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cc77cbc0a0 chore(deps-dev): bump @typescript-eslint/parser from 2.25.0 to 2.26.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.25.0 to 2.26.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.26.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
921bb7bf97 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.25.0 to 2.26.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.26.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
732c8c6758 chore(deps-dev): bump rollup from 2.2.0 to 2.3.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.2.0...v2.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
42fd611f6c chore(deps-dev): bump jest from 25.2.3 to 25.2.4
Bumps [jest](https://github.com/facebook/jest) from 25.2.3 to 25.2.4.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.3...v25.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
ed2a0c7acb chore: improve EpochSchedule docs 2020-06-14 21:57:04 -07:00
Justin Starry
7184fd79f6 chore: fix broken doc links 2020-06-14 21:57:04 -07:00
Justin Starry
02f26b8db5 chore: fix new lint 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
399b0c6cf7 chore(deps-dev): bump eslint-plugin-import from 2.20.1 to 2.20.2
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.1 to 2.20.2.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.1...v2.20.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
a2c6c991b8 feat: add root subscription api 2020-06-14 21:57:04 -07:00
Justin Starry
3379e8cd46 chore: add finalized signature test 2020-06-14 21:57:04 -07:00
Justin Starry
a571e3dc65 feat: update getSignatureStatus api 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ce4820a85a chore(deps-dev): bump jest from 25.2.2 to 25.2.3
Bumps [jest](https://github.com/facebook/jest) from 25.2.2 to 25.2.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.2...v25.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
911e002fb3 chore(deps-dev): bump jest from 25.2.1 to 25.2.2
Bumps [jest](https://github.com/facebook/jest) from 25.2.1 to 25.2.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.1...v25.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
41b8c55721 chore(deps-dev): bump jest from 25.2.0 to 25.2.1
Bumps [jest](https://github.com/facebook/jest) from 25.2.0 to 25.2.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.0...v25.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
db7ed6394d chore(deps-dev): bump jest from 25.1.0 to 25.2.0
Bumps [jest](https://github.com/facebook/jest) from 25.1.0 to 25.2.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.1.0...v25.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ac4f155f30 chore(deps-dev): bump eslint-plugin-flowtype from 4.6.0 to 4.7.0
Bumps [eslint-plugin-flowtype](https://github.com/gajus/eslint-plugin-flowtype) from 4.6.0 to 4.7.0.
- [Release notes](https://github.com/gajus/eslint-plugin-flowtype/releases)
- [Commits](https://github.com/gajus/eslint-plugin-flowtype/compare/v4.6.0...v4.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
39d8df9c7d chore(deps-dev): bump rollup from 2.1.0 to 2.2.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.1.0...v2.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0bdadfbf3c chore(deps-dev): bump prettier from 2.0.1 to 2.0.2
Bumps [prettier](https://github.com/prettier/prettier) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.1...2.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ce1e08fbc1 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.24.0 to 2.25.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.25.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
557ae5ea4c chore(deps-dev): bump @typescript-eslint/parser from 2.24.0 to 2.25.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.24.0 to 2.25.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.25.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
b9ade46c41 chore: prettier fixes 2020-06-14 21:57:04 -07:00
Justin Starry
be53ab5aa4 feat: add context to pubsub notification callbacks 2020-06-14 21:57:04 -07:00
Justin Starry
1c31e527e2 feat: update getSignatureStatus 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ac8660b2e9 chore(deps-dev): bump @babel/preset-env from 7.8.7 to 7.9.0
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7a58c92490 chore(deps-dev): bump flow-typed from 3.0.0 to 3.1.0
Bumps [flow-typed](https://github.com/flow-typed/flow-typed) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/flow-typed/flow-typed/releases)
- [Changelog](https://github.com/flow-typed/flow-typed/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flow-typed/flow-typed/compare/v3.0.0...v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c1597635b1 chore(deps-dev): bump marked from 0.8.1 to 0.8.2
Bumps [marked](https://github.com/markedjs/marked) from 0.8.1 to 0.8.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.8.1...v0.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
746e779cfe chore(deps-dev): bump eslint-config-prettier from 6.10.0 to 6.10.1
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.10.0 to 6.10.1.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.10.0...v6.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
63c67c36ac chore(deps-dev): bump prettier from 2.0.0 to 2.0.1
Bumps [prettier](https://github.com/prettier/prettier) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.0...2.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
9f4fc39b78 chore(deps-dev): bump prettier from 1.19.1 to 2.0.0
Bumps [prettier](https://github.com/prettier/prettier) from 1.19.1 to 2.0.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.19.1...2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ec3f56b9bc chore(deps): bump @babel/runtime from 7.9.0 to 7.9.2
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.9.0 to 7.9.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.9.2/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5cbbe9943d chore(deps-dev): bump @babel/preset-flow from 7.8.3 to 7.9.0
Bumps [@babel/preset-flow](https://github.com/babel/babel) from 7.8.3 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f36d268c50 chore(deps-dev): bump @babel/core from 7.8.7 to 7.9.0
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e9b3482fbd chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.8.3 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ae41f967c4 chore(deps): bump @babel/runtime from 7.8.7 to 7.9.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.9.0/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6797bcba76 chore(deps-dev): bump marked from 0.8.0 to 0.8.1
Bumps [marked](https://github.com/markedjs/marked) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.8.0...v0.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
6abd65dfe2 chore: add flow type for jest 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c87ae16aae chore(deps-dev): bump rollup from 2.0.6 to 2.1.0
Bumps [rollup](https://github.com/rollup/rollup) from 2.0.6 to 2.1.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.0.6...v2.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cb64c56494 chore(deps-dev): bump flow-bin from 0.120.1 to 0.121.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.120.1 to 0.121.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.120.1...v0.121.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
96ac1cf173 fix: update bpf c example to latest sdk 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3432d6e5ee chore(deps-dev): bump @typescript-eslint/parser from 2.22.0 to 2.24.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.22.0 to 2.24.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.24.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
2b95ded880 chore: fix eslint errors 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5cb24ecd49 chore(deps-dev): bump @typescript-eslint/parser from 2.22.0 to 2.23.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.23.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fc8e836c37 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.23.0 to 2.24.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.24.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
402c160ae9 feat: use crypto-hash instead of hasha 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
bd7e802e46 chore(deps): bump rpc-websockets from 5.0.14 to 5.0.16
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.0.14 to 5.0.16.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/compare/v5.0.14...v5.0.16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f986607cf4 chore(deps-dev): bump rollup from 2.0.5 to 2.0.6
Bumps [rollup](https://github.com/rollup/rollup) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.0.5...v2.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fcb1f70281 chore(deps-dev): bump rollup from 2.0.4 to 2.0.5
Bumps [rollup](https://github.com/rollup/rollup) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.0.4...v2.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1522080eb5 chore(deps-dev): bump rollup from 2.0.3 to 2.0.4
Bumps [rollup](https://github.com/rollup/rollup) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.0.3...v2.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
65113d3669 fix: update devnet urls 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
18d4e40a79 chore(deps-dev): bump rollup from 1.15.2 to 2.0.3
Bumps [rollup](https://github.com/rollup/rollup) from 1.15.2 to 2.0.3.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.15.2...v2.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
904aa4b468 chore(deps-dev): bump rollup-plugin-terser from 5.2.0 to 5.3.0
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.2.0...v5.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ffb9c0d80a chore(deps): bump ws from 7.2.2 to 7.2.3
Bumps [ws](https://github.com/websockets/ws) from 7.2.2 to 7.2.3.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.2.2...7.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
efb6c6a0b0 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.23.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
b2d30d6655 fix: update TS SystemInstruction API and add missing flow method 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1578492259 chore(deps): bump ws from 7.2.1 to 7.2.2
Bumps [ws](https://github.com/websockets/ws) from 7.2.1 to 7.2.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.2.1...7.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
81ffeac38e chore(deps-dev): bump rollup-plugin-babel from 4.3.3 to 4.4.0
Bumps [rollup-plugin-babel](https://github.com/rollup/rollup-plugin-babel) from 4.3.3 to 4.4.0.
- [Release notes](https://github.com/rollup/rollup-plugin-babel/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-babel/compare/v4.3.3...v4.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
bcbefb971e chore(deps): bump buffer from 5.4.3 to 5.5.0
Bumps [buffer](https://github.com/feross/buffer) from 5.4.3 to 5.5.0.
- [Release notes](https://github.com/feross/buffer/releases)
- [Commits](https://github.com/feross/buffer/compare/v5.4.3...v5.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4192d894ba chore(deps-dev): bump @babel/core from 7.8.6 to 7.8.7
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8de3e85fdc chore(deps-dev): bump cross-env from 7.0.1 to 7.0.2
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v7.0.1...v7.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
14fb2a505e chore(deps-dev): bump flow-bin from 0.119.1 to 0.120.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.119.1 to 0.120.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.119.1...v0.120.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7da4ff1f88 chore(deps): bump @babel/runtime from 7.8.4 to 7.8.7
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.8.4 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.8.7/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7eeaf10911 chore(deps-dev): bump @babel/preset-env from 7.8.6 to 7.8.7
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Trent Nelson
890e21c451 fix: update NonceAccount to upstream changes 2020-06-14 21:57:04 -07:00
Jack May
3b55087a86 fix: install openssl libs for ubuntu 2020-06-14 21:57:04 -07:00
Tyera Eulberg
698269cfcf fix: use new syntax in gcb test 2020-06-14 21:57:04 -07:00
Justin Starry
6ed2bad9d0 feat: add API for decoding system instructions 2020-06-14 21:57:04 -07:00
Tyera Eulberg
662ce22cdd fix: add method to type definitions 2020-06-14 21:57:04 -07:00
Tyera Eulberg
d9a271742f feat: add transaction signature verification 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fd00571b0a chore(deps-dev): bump cross-env from 7.0.0 to 7.0.1
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v7.0.0...v7.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
aba7e14f3a feat: add API for decoding stake instructions 2020-06-14 21:57:04 -07:00
Justin Starry
01e65d2070 fix: add def checks and fix typescript def 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
eb1542696e chore(deps-dev): bump @typescript-eslint/parser from 2.21.0 to 2.22.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.22.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d8a242300d chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.22.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
d61dd70710 chore: revert to edge testnet 2020-06-14 21:57:04 -07:00
Tyera Eulberg
d417c7499a fix: update feeCalculator layout 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1712f12e29 chore(deps-dev): bump acorn from 7.1.0 to 7.1.1
Bumps [acorn](https://github.com/acornjs/acorn) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/7.1.0...7.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
3b98a9b993 chore: use beta testnet to get through CI 2020-06-14 21:57:04 -07:00
Tyera Eulberg
825a43fecc fix: add test coverage and fixup getters 2020-06-14 21:57:04 -07:00
Justin Starry
fdece1a8a9 chore: fix flow 2020-06-14 21:57:04 -07:00
Justin Starry
0cdf532419 feat: expose instruction types and refactor 2020-06-14 21:57:04 -07:00
Justin Starry
8b95f41c51 chore: fix flow linting 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c09e826c15 chore(deps-dev): bump semantic-release from 17.0.3 to 17.0.4
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.0.3 to 17.0.4.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.0.3...v17.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8e93114566 chore(deps-dev): bump @babel/preset-env from 7.8.4 to 7.8.6
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f1cab25f9c chore(deps-dev): bump @babel/core from 7.8.4 to 7.8.6
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
9e7a7a5653 chore(deps-dev): bump @typescript-eslint/parser from 2.20.0 to 2.21.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.20.0 to 2.21.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.21.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
51d98c26ae chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.20.0 to 2.21.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.21.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
30e9691d20 chore(deps-dev): bump babel-eslint from 10.0.3 to 10.1.0
Bumps [babel-eslint](https://github.com/babel/babel-eslint) from 10.0.3 to 10.1.0.
- [Release notes](https://github.com/babel/babel-eslint/releases)
- [Commits](https://github.com/babel/babel-eslint/compare/v10.0.3...v10.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e4ef66c2f7 chore(deps-dev): bump flow-bin from 0.118.0 to 0.119.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.118.0 to 0.119.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.118.0...v0.119.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
11db9497a7 fix: update rust example to latest solana sdk 2020-06-14 21:57:04 -07:00
Jack May
e3516bbcfd fix: epochSchedule test and lint 2020-06-14 21:57:04 -07:00
Michael Vines
7d69cad81b fix: rename testnet.solana.com to devnet.solana.com 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
395b48ceef chore(deps-dev): bump flow-typed from 2.6.2 to 3.0.0
Bumps [flow-typed](https://github.com/flow-typed/flow-typed) from 2.6.2 to 3.0.0.
- [Release notes](https://github.com/flow-typed/flow-typed/releases)
- [Changelog](https://github.com/flow-typed/flow-typed/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flow-typed/flow-typed/compare/v2.6.2...v3.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7d289aacc2 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.19.2 to 2.20.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.20.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a1ac01e5d6 chore(deps-dev): bump @typescript-eslint/parser from 2.19.2 to 2.20.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.19.2 to 2.20.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.20.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cfa1bf0270 chore(deps): bump hasha from 5.1.0 to 5.2.0
Bumps [hasha](https://github.com/sindresorhus/hasha) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/sindresorhus/hasha/releases)
- [Commits](https://github.com/sindresorhus/hasha/compare/v5.1.0...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
830c55d07b chore: fix up docs 2020-06-14 21:57:04 -07:00
Justin Starry
8cf98ec4e2 chore: prettier fixes 2020-06-14 21:57:04 -07:00
Justin Starry
ea1295300d fix: add system program nonce methods to def files 2020-06-14 21:57:04 -07:00
Justin Starry
38213694bd fix: add tx nonce information types to definitions 2020-06-14 21:57:04 -07:00
Justin Starry
6a7115b8bd fix: allow Uint8Array and Array<number> where Buffer is accepted 2020-06-14 21:57:04 -07:00
Justin Starry
6ba2f1d524 chore: npm audit 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
282c16e5ab chore(deps-dev): bump semantic-release from 17.0.2 to 17.0.3
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.0.2 to 17.0.3.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v17.0.2...v17.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2457b383ff chore(deps-dev): bump jest from 24.9.0 to 25.1.0
Bumps [jest](https://github.com/facebook/jest) from 24.9.0 to 25.1.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.9.0...v25.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3b8473b19a chore(deps-dev): bump @babel/core from 7.6.4 to 7.8.4
Bumps [@babel/core](https://github.com/babel/babel) from 7.6.4 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.4...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
19706012ae chore(deps): bump tweetnacl from 1.0.2 to 1.0.3
Bumps [tweetnacl](https://github.com/dchest/tweetnacl-js) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/dchest/tweetnacl-js/releases)
- [Changelog](https://github.com/dchest/tweetnacl-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dchest/tweetnacl-js/compare/v1.0.2...1.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
60045eae99 fix: rename ContactInfo id attribute to pubkey 2020-06-14 21:57:04 -07:00
Justin Starry
b3aa9fda87 fix: add missing apis to flow and ts definitions 2020-06-14 21:57:04 -07:00
Justin Starry
de4f20a569 fix: add rewards to getConfirmedBlock api 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4998bc4595 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.19.1 to 2.19.2.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.19.2/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
da72fbda54 chore(deps-dev): bump @typescript-eslint/parser from 2.19.1 to 2.19.2
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.19.1 to 2.19.2.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.19.2/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
d483f7e904 fix: race condition in rpc unsubscribe 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ca34ad2525 chore(deps-dev): bump cross-env from 6.0.3 to 7.0.0
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 6.0.3 to 7.0.0.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v6.0.3...v7.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4be01331d6 chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.7.4 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
499419dd10 chore(deps-dev): bump babel-plugin-module-resolver from 3.2.0 to 4.0.0
Bumps [babel-plugin-module-resolver](https://github.com/tleunen/babel-plugin-module-resolver) from 3.2.0 to 4.0.0.
- [Release notes](https://github.com/tleunen/babel-plugin-module-resolver/releases)
- [Changelog](https://github.com/tleunen/babel-plugin-module-resolver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tleunen/babel-plugin-module-resolver/compare/v3.2.0...v4.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
7073310e2b fix: add Buffer to loader elf data arg type 2020-06-14 21:57:04 -07:00
Justin Starry
e8ca68043a fix: race condition in rpc websocket subscriptions 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
83cdb6c2e1 chore(deps-dev): bump @typescript-eslint/parser from 2.19.0 to 2.19.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.19.0 to 2.19.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.19.1/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
36b4cbb454 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.19.0 to 2.19.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.19.1/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
740b7a3b23 feat: add onSignature pub sub api 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7ebf82b19d chore(deps-dev): bump @babel/preset-flow from 7.8.0 to 7.8.3
Bumps [@babel/preset-flow](https://github.com/babel/babel) from 7.8.0 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.0...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d9d9e94773 chore(deps-dev): bump eslint from 6.5.1 to 6.8.0
Bumps [eslint](https://github.com/eslint/eslint) from 6.5.1 to 6.8.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.5.1...v6.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
974200f4eb chore(deps): bump @babel/runtime from 7.8.0 to 7.8.4
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.8.0 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.8.4/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6ca391958a chore(deps-dev): bump rimraf from 3.0.1 to 3.0.2
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6e9c8a47a2 chore(deps-dev): bump codecov from 3.6.4 to 3.6.5
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.6.4 to 3.6.5.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6ed1729eea chore(deps): bump bn.js from 5.0.0 to 5.1.1
Bumps [bn.js](https://github.com/indutny/bn.js) from 5.0.0 to 5.1.1.
- [Release notes](https://github.com/indutny/bn.js/releases)
- [Changelog](https://github.com/indutny/bn.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/indutny/bn.js/compare/v5.0.0...v5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ecad6ae4f4 chore(deps-dev): bump @commitlint/config-conventional
Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint) from 8.2.0 to 8.3.4.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
55e523bf97 chore(deps-dev): bump flow-typed from 2.6.1 to 2.6.2
Bumps [flow-typed](https://github.com/flow-typed/flow-typed) from 2.6.1 to 2.6.2.
- [Release notes](https://github.com/flow-typed/flow-typed/releases)
- [Changelog](https://github.com/flow-typed/flow-typed/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flow-typed/flow-typed/compare/v2.6.1...v2.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1f71984453 chore(deps-dev): bump codecov from 3.6.1 to 3.6.4
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.6.1 to 3.6.4.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/compare/v3.6.1...v3.6.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fe1dc4eeaa chore(deps-dev): bump flow-bin from 0.116.0 to 0.118.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.116.0 to 0.118.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.116.0...v0.118.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4472d7eeb3 chore(deps-dev): bump @babel/preset-env from 7.8.0 to 7.8.4
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.0 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.0...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
63625eba80 chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.7.6 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.6...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6c1168788d chore(deps-dev): bump elfy from 0.1.0 to 1.0.0
Bumps [elfy](https://github.com/indutny/elfy) from 0.1.0 to 1.0.0.
- [Release notes](https://github.com/indutny/elfy/releases)
- [Commits](https://github.com/indutny/elfy/compare/v0.1.0...v1.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7e4a4367f3 chore(deps): bump tweetnacl from 1.0.1 to 1.0.2
Bumps [tweetnacl](https://github.com/dchest/tweetnacl-js) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/dchest/tweetnacl-js/releases)
- [Changelog](https://github.com/dchest/tweetnacl-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dchest/tweetnacl-js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b2259cfef7 chore(deps-dev): bump eslint-plugin-import from 2.20.0 to 2.20.1
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.0 to 2.20.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.0...v2.20.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3998b95578 chore(deps): bump rpc-websockets from 5.0.8 to 5.0.14
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 5.0.8 to 5.0.14.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4acd2d40b7 chore(deps-dev): bump marked from 0.7.0 to 0.8.0
Bumps [marked](https://github.com/markedjs/marked) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.7.0...v0.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a6c5057d34 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.18.0 to 2.19.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.19.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
908bf6d0c4 chore(deps-dev): bump @typescript-eslint/parser from 2.18.0 to 2.19.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.18.0 to 2.19.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.19.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
448a759944 chore(deps-dev): bump fs-file-tree from 1.0.7 to 1.1.0
Bumps [fs-file-tree](https://github.com/IonicaBizau/fs-file-tree) from 1.0.7 to 1.1.0.
- [Release notes](https://github.com/IonicaBizau/fs-file-tree/releases)
- [Commits](https://github.com/IonicaBizau/fs-file-tree/compare/1.0.7...1.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3ae18edf9e chore(deps-dev): bump rimraf from 3.0.0 to 3.0.1
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1b4653cb17 chore(deps-dev): bump eslint-config-prettier from 6.4.0 to 6.10.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.4.0 to 6.10.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.4.0...v6.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
e03fa4b962 fix: add typescript type declaration to npm bundle 2020-06-14 21:57:04 -07:00
Justin Starry
4017bd6bfa fix: broken rpc slot change subscription 2020-06-14 21:57:04 -07:00
mirkamio
f67d9411aa fix: correct getSignatureStatus comment 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4ea4b01d50 chore(deps-dev): bump semantic-release from 15.13.31 to 17.0.2
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.31 to 17.0.2.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.31...v17.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5d3685f162 chore(deps-dev): bump rollup-plugin-commonjs from 10.0.2 to 10.1.0
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 10.0.2 to 10.1.0.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v10.0.2...v10.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
30446807b9 fix: update outdated module.flow.js 2020-06-14 21:57:04 -07:00
Justin Starry
a4e7ce3133 fix: update example programs to use new sdk api 2020-06-14 21:57:04 -07:00
Justin Starry
4a3a830789 chore: remove unused 2020-06-14 21:57:04 -07:00
Justin Starry
ebda95bd11 chore: run lint 2020-06-14 21:57:04 -07:00
Justin Starry
7181d3aeea fix: update stake program api 2020-06-14 21:57:04 -07:00
Tyera Eulberg
3482953757 fix: better handling if confirmed block not found on node 2020-06-14 21:57:04 -07:00
Tyera Eulberg
43e90a1967 fix: update rpc sendTransaction format to upstream 2020-06-14 21:57:04 -07:00
Tyera Eulberg
2ab5816bd8 fix: improve non-live code coverage 2020-06-14 21:57:04 -07:00
Tyera Eulberg
d26c4ce75c chore: update flow definitions 2020-06-14 21:57:04 -07:00
Tyera Eulberg
369afecfeb fix: update rpc methods to upstream changes 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
bf6c2ed6f5 chore(deps-dev): bump @commitlint/travis-cli from 8.2.0 to 8.3.5
Bumps [@commitlint/travis-cli](https://github.com/conventional-changelog/commitlint) from 8.2.0 to 8.3.5.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8b35686190 chore(deps-dev): bump eslint-plugin-import from 2.18.2 to 2.20.0
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.18.2 to 2.20.0.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.18.2...v2.20.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2356426886 chore(deps-dev): bump rollup-plugin-terser from 5.1.2 to 5.2.0
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.1.2 to 5.2.0.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.1.2...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0bd452593c chore(deps-dev): bump flow-bin from 0.114.0 to 0.116.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.114.0 to 0.116.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.114.0...v0.116.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7961892858 chore(deps-dev): bump @babel/plugin-proposal-function-bind
Bumps [@babel/plugin-proposal-function-bind](https://github.com/babel/babel) from 7.8.0 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.0...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1fa90149d3 chore(deps-dev): bump enzyme from 3.10.0 to 3.11.0
Bumps [enzyme](https://github.com/airbnb/enzyme/tree/HEAD/packages/enzyme) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/airbnb/enzyme/releases)
- [Changelog](https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/airbnb/enzyme/commits/enzyme@3.11.0/packages/enzyme)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
713df31ec4 chore(deps): bump superstruct from 0.7.0 to 0.8.3
Bumps [superstruct](https://github.com/ianstormtaylor/superstruct) from 0.7.0 to 0.8.3.
- [Release notes](https://github.com/ianstormtaylor/superstruct/releases)
- [Changelog](https://github.com/ianstormtaylor/superstruct/blob/master/Changelog.md)
- [Commits](https://github.com/ianstormtaylor/superstruct/compare/v0.7.0...v0.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Trent Nelson
cca9c5d922 fix: rename nonce instructions with VerbNoun scheme 2020-06-14 21:57:04 -07:00
Tyera Eulberg
fc007b02ae fix: update getConfirmedBlock json-rpc formatting 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3265f3bfa0 chore(deps-dev): bump @babel/preset-env from 7.6.3 to 7.8.0
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.6.3 to 7.8.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.3...v7.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cd21f156a2 chore(deps-dev): bump @babel/preset-flow from 7.0.0 to 7.8.0
Bumps [@babel/preset-flow](https://github.com/babel/babel) from 7.0.0 to 7.8.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.0.0...v7.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c0f806c4ef chore(deps-dev): bump @babel/plugin-proposal-function-bind
Bumps [@babel/plugin-proposal-function-bind](https://github.com/babel/babel) from 7.2.0 to 7.8.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.2.0...v7.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fc53b38a5a chore(deps): bump @babel/runtime from 7.6.3 to 7.8.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.6.3 to 7.8.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.8.0/packages/babel-runtime)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
f37d27660d fix: fund various test accounts above rent minimum to stabilize tests 2020-06-14 21:57:04 -07:00
Tyera Eulberg
17065c3692 fix: add missing function descriptions 2020-06-14 21:57:04 -07:00
Tyera Eulberg
4a547b0057 fix: remove legacy code 2020-06-14 21:57:04 -07:00
Tyera Eulberg
aea0e83a40 fix: repair key handling in _getSignData and add Nonce live test 2020-06-14 21:57:04 -07:00
Tyera Eulberg
bd0a9348f4 fix: add Nonce transaction construction option 2020-06-14 21:57:04 -07:00
Tyera Eulberg
600a295b11 fix: query Nonce account 2020-06-14 21:57:04 -07:00
Tyera Eulberg
c9cc44ae4f feat: add Nonce instructions to system program 2020-06-14 21:57:04 -07:00
Jack May
05491f7fb7 fix: use testnetDefaultChannel when install bpf-sdk 2020-06-14 21:57:04 -07:00
Jack May
09f004c047 fix: remove GetBlock from module flow 2020-06-14 21:57:04 -07:00
Jack May
a51e0211d4 fix: add getMinimumBalanceForRentExemption and getBlock to flow 2020-06-14 21:57:04 -07:00
Tyera Eulberg
0b5bd167d4 fix: upstream authorize fixes 2020-06-14 21:57:04 -07:00
Tyera Eulberg
bed42ac26b fix: fixes needed for createAccountWithSeed and sol-lamport ratio 2020-06-14 21:57:04 -07:00
Tyera Eulberg
8541868587 fix: add split to stake test 2020-06-14 21:57:04 -07:00
Tyera Eulberg
3595892fab fix: add integration test and fix various exposed bugs 2020-06-14 21:57:04 -07:00
Tyera Eulberg
07c0670f65 fix: add stake unit tests 2020-06-14 21:57:04 -07:00
Tyera Eulberg
6ebd47fbac fix: add instruction handling to stake-program 2020-06-14 21:57:04 -07:00
Tyera Eulberg
532b28e96e feat: add stake program methods; refactor instruction type handling 2020-06-14 21:57:04 -07:00
Tyera Eulberg
fc77e55920 fix: add PublicKey createWithSeed method 2020-06-14 21:57:04 -07:00
Rob Walker
e0e3094370 fix(system-program): add base pubkey to create_account_with_seed 2020-06-14 21:57:04 -07:00
Tyera Eulberg
0907750fea fix: update sol:lamports ratio 2020-06-14 21:57:04 -07:00
Tyera Eulberg
b2243802b5 fix: make sol-to-lamport const name more clear 2020-06-14 21:57:04 -07:00
Tyera Eulberg
eef794d9be fix: add balances fields to GetConfirmedBlockRpcResult 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a71c351777 chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.6.2 to 7.7.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.2...v7.7.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
da88d78942 chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.5.5 to 7.7.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.5...v7.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6a1cd39857 chore(deps): bump jayson from 3.1.1 to 3.2.0
Bumps [jayson](https://github.com/tedeh/jayson) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v3.1.1...v3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a0bfe85803 chore(deps-dev): bump eslint-plugin-prettier from 3.1.1 to 3.1.2
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.1.1...v3.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6ff7cde9a0 chore(deps): bump ws from 7.2.0 to 7.2.1
Bumps [ws](https://github.com/websockets/ws) from 7.2.0 to 7.2.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.2.0...7.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5e5f248348 chore(deps-dev): bump semantic-release from 15.13.27 to 15.13.31
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.27 to 15.13.31.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.27...v15.13.31)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a4a2dd5e72 chore(deps-dev): bump flow-bin from 0.109.0 to 0.114.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.109.0 to 0.114.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.109.0...v0.114.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2e0afd5a7e chore(deps): [security] bump npm from 6.12.0 to 6.13.4
Bumps [npm](https://github.com/npm/cli) from 6.12.0 to 6.13.4. **This update includes security fixes.**
- [Release notes](https://github.com/npm/cli/releases)
- [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md)
- [Commits](https://github.com/npm/cli/compare/v6.12.0...v6.13.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b02a1fc2db chore(deps): bump rpc-websockets from 4.6.1 to 5.0.8
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 4.6.1 to 5.0.8.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a149cd8cbb chore(deps-dev): bump prettier from 1.18.2 to 1.19.1
Bumps [prettier](https://github.com/prettier/prettier) from 1.18.2 to 1.19.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.18.2...1.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
997d8c2a72 fix: export sendAndConfirmRecentTransaction 2020-06-14 21:57:04 -07:00
Justin Starry
4428b1bf3d fix: remove unneeded backwards compatible epoch-credits value 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b804455837 chore(deps): [security] bump https-proxy-agent from 2.2.1 to 2.2.4
Bumps [https-proxy-agent](https://github.com/TooTallNate/node-https-proxy-agent) from 2.2.1 to 2.2.4. **This update includes security fixes.**
- [Release notes](https://github.com/TooTallNate/node-https-proxy-agent/releases)
- [Commits](https://github.com/TooTallNate/node-https-proxy-agent/compare/2.2.1...2.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
00184eb65e chore(deps): bump ws from 7.1.2 to 7.2.0
Bumps [ws](https://github.com/websockets/ws) from 7.1.2 to 7.2.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.1.2...7.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
696067228f fix: use parent packages channel 2020-06-14 21:57:04 -07:00
Justin Starry
56cad06568 fix: account change test broken on beta testnet 2020-06-14 21:57:04 -07:00
Justin Starry
7682f55347 fix: add epoch_credits value to getVoteAccounts RPC call 2020-06-14 21:57:04 -07:00
Jack May
899df7881b fix: docs 2020-06-14 21:57:04 -07:00
Jack May
11938e3a65 fix: support other localnet tags 2020-06-14 21:57:04 -07:00
Rob Walker
0760853871 feat(system-program): add createAccountWithSeed 2020-06-14 21:57:04 -07:00
Tyera Eulberg
cc550dfb08 fix: properly fund BPF payer accounts 2020-06-14 21:57:04 -07:00
Tyera Eulberg
d5cd16bef4 fix: rent in connection tests, and remove invalid Loader.load 2020-06-14 21:57:04 -07:00
Rob Walker
cf31ba8924 fix(doc): commission is 0-100 2020-06-14 21:57:04 -07:00
Sunny Gleason
286891fa51 feat: slot change callback (provides real-time fork information) 2020-06-14 21:57:04 -07:00
Tyera Eulberg
ddce1d3c9f chore: make test less flaky 2020-06-14 21:57:04 -07:00
Tyera Eulberg
2d5ace244a fix: getConfirmedBlock result pattern fixup 2020-06-14 21:57:04 -07:00
Tyera Eulberg
a461d5f25f fix: update ConfirmedBlock handling to match solana upstream 2020-06-14 21:57:04 -07:00
Justin Starry
77745a278d chore: add test for Transaction.fromRpcResult 2020-06-14 21:57:04 -07:00
Justin Starry
3c08e5b9c4 feat: add getConfirmedBlock api 2020-06-14 21:57:04 -07:00
Sunny Gleason
5212a98b83 feat: implement new response format for __WithCommitment() methods 2020-06-14 21:57:04 -07:00
Tyera Eulberg
890f6f4d9d fix: add getBlock Connection method 2020-06-14 21:57:04 -07:00
Justin Starry
3382548a79 fix: use the jsonrpc framework reconnect interval 2020-06-14 21:57:04 -07:00
Justin Starry
f3d9ab75e6 feat: add getVersion method 2020-06-14 21:57:04 -07:00
Justin Starry
979a707c94 fix: example budget programs 2020-06-14 21:57:04 -07:00
Tyera Eulberg
086eb6f8b8 fix: add getBlocksSince Connection method 2020-06-14 21:57:04 -07:00
Parth
df886a7a40 make to account key as signer (#550)
fix: require to account sign
2020-06-14 21:57:04 -07:00
Justin Starry
189807f5a5 feat: add commitment param to JSON RPC API requests (#549)
* feat: add commitment param to json rpc requests

* fix: tests and examples

* fix: docs

* fix: epoch info test

* fix: budget example

* fix: test timeout

* fix: remove MAX_COMMITMENT and RECENT_COMMITMENT types
2020-06-14 21:57:04 -07:00
Tyera Eulberg
d0c89f7fa3 fix: update accounts to readonly/writable 2020-06-14 21:57:04 -07:00
Justin Starry
58550733fb fix: transfers require 'to' account to be readwrite (#543) 2020-06-14 21:57:04 -07:00
Sunny Gleason
3f38e89886 feat: getEpochInfo rpc, yarn lint (#540) 2020-06-14 21:57:04 -07:00
Jack May
29aabcb195 fix: wait for airdrop (#538) 2020-06-14 21:57:04 -07:00
Sunny Gleason
67c9b50249 feat: get_epoch_schedule rpc (#536) 2020-06-14 21:57:04 -07:00
Jack May
0d582c180f fix: update module.flow (#537) 2020-06-14 21:57:04 -07:00
Jack May
81c2e8f9c1 fix: loader report minimum number of signatures required (#535) 2020-06-14 21:57:04 -07:00
Jack May
227f161243 fix: test depends on program build success (#532) 2020-06-14 21:57:04 -07:00
Michael Vines
c705ac01f5 fix: adapt tests to higher default transaction signature fee (#531) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
dd7e305c35 chore(deps-dev): bump semantic-release from 15.13.24 to 15.13.27
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.24 to 15.13.27.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.24...v15.13.27)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Sunny Gleason
884a09d8f6 feat: add optional rootSlot parameter (#528) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b3c2d61495 chore(deps-dev): bump eslint-plugin-jest from 22.17.0 to 22.19.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.17.0 to 22.19.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.17.0...v22.19.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
7191159377 fix: update node exit rpc to match solana changes 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8949f321c5 chore(deps-dev): bump acorn from 7.0.0 to 7.1.0
Bumps [acorn](https://github.com/acornjs/acorn) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/7.0.0...7.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
adbe83da18 chore(deps-dev): bump @babel/core from 7.6.3 to 7.6.4
Bumps [@babel/core](https://github.com/babel/babel) from 7.6.3 to 7.6.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.3...v7.6.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d1611ef7b1 chore(deps-dev): bump codecov from 3.5.0 to 3.6.1
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.5.0 to 3.6.1.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/commits/v3.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8405e40ba7 chore(deps-dev): bump @commitlint/travis-cli from 8.1.0 to 8.2.0
Bumps [@commitlint/travis-cli](https://github.com/conventional-changelog/commitlint) from 8.1.0 to 8.2.0.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2fd0f6c5e6 chore(deps-dev): bump @babel/core from 7.5.5 to 7.6.3
Bumps [@babel/core](https://github.com/babel/babel) from 7.5.5 to 7.6.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.5...v7.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a41f5b637f chore(deps-dev): bump @babel/preset-env from 7.6.2 to 7.6.3
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.6.2 to 7.6.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.2...v7.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5ba7fd90cb chore(deps): bump @babel/runtime from 7.6.2 to 7.6.3
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.6.2 to 7.6.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.2...v7.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
489f023a33 chore(deps): bump @babel/runtime from 7.5.5 to 7.6.2
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.5.5 to 7.6.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.5...v7.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
27f652ff41 chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.5.5 to 7.6.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.5...v7.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3be7a6d2c4 chore(deps-dev): bump rollup-plugin-terser from 5.1.1 to 5.1.2
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.1.1...v5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
391da1990c chore(deps-dev): bump eslint-plugin-prettier from 3.1.0 to 3.1.1
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.1.0...v3.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
90b306db25 chore(deps-dev): bump eslint-config-prettier from 6.3.0 to 6.4.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.3.0...v6.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
783483f188 chore(deps-dev): bump eslint from 6.3.0 to 6.5.1
Bumps [eslint](https://github.com/eslint/eslint) from 6.3.0 to 6.5.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.3.0...v6.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
18b0f7b305 chore(deps-dev): bump @commitlint/config-conventional
Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint) from 8.1.0 to 8.2.0.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1495367946 chore(deps): bump jayson from 3.0.2 to 3.1.1
Bumps [jayson](https://github.com/tedeh/jayson) from 3.0.2 to 3.1.1.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v3.0.2...v3.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Parth
7038468edb fix: finalize tx need to have rent sysvar (#506) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5492ef7fa2 chore(deps-dev): bump @babel/preset-env from 7.5.5 to 7.6.2
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.5.5 to 7.6.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.5...v7.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
30b5bff7ef chore(deps-dev): bump eslint-config-prettier from 6.2.0 to 6.3.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.2.0...v6.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
132ccc464a chore(deps): bump superstruct from 0.6.2 to 0.7.0
Bumps [superstruct](https://github.com/ianstormtaylor/superstruct) from 0.6.2 to 0.7.0.
- [Release notes](https://github.com/ianstormtaylor/superstruct/releases)
- [Changelog](https://github.com/ianstormtaylor/superstruct/blob/master/Changelog.md)
- [Commits](https://github.com/ianstormtaylor/superstruct/compare/v0.6.2...v0.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
b4922e8aef fix: token program moved to its own repo (#502) 2020-06-14 21:57:04 -07:00
Jack May
c31ca1fc1b fix: flow expose transactionInstruction (#499) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
da49ff96a5 chore(deps-dev): bump cross-env from 5.2.1 to 6.0.3
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 5.2.1 to 6.0.3.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v5.2.1...v6.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
093a1373ef chore(deps-dev): bump eslint-plugin-jest from 22.16.0 to 22.17.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.16.0 to 22.17.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.16.0...v22.17.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
dd51e9713a chore(deps-dev): bump flow-bin from 0.106.3 to 0.109.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.106.3 to 0.109.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.106.3...v0.109.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
0bfe62ebea fix: ignore fixtures (#498) 2020-06-14 21:57:04 -07:00
Jack May
0f0a0a3b88 fix: build fixtures as part of test (#495) 2020-06-14 21:57:04 -07:00
Justin Starry
d4a2384a5e fix: graceful fallback when minimum balance request fails (#497) 2020-06-14 21:57:04 -07:00
Justin Starry
ef0bad0910 fix: udpate PublicKey flow def (#496) 2020-06-14 21:57:04 -07:00
Tyera Eulberg
b1594439fe fix: use new api in Loader 2020-06-14 21:57:04 -07:00
Tyera Eulberg
4ae90c2944 fix: add api for getMinimumBalanceForRentExemption 2020-06-14 21:57:04 -07:00
Jack May
432345b4d4 fix: update BPF Rust example ELF 2020-06-14 21:57:04 -07:00
Tyera Eulberg
3b337c5f56 fix: getVoteAccounts live test 2020-06-14 21:57:04 -07:00
Tyera Eulberg
19f4cf10bb fix: update VoteAccount format 2020-06-14 21:57:04 -07:00
Michael Vines
e0f51fbcaf doc: correct link to JSON RPC API 2020-06-14 21:57:04 -07:00
Sunny Gleason
e031710ae0 fix: remove grant/grant_term from inflation (#489) 2020-06-14 21:57:04 -07:00
Tyera Eulberg
97c07c7b0a fix: renaming 2020-06-14 21:57:04 -07:00
Tyera Eulberg
daba1a7856 fix: add tx instruction->transfer data functionality 2020-06-14 21:57:04 -07:00
Jack May
ee3acbf1ba fix: update examples (#485) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
82aaa8af47 chore(deps-dev): bump eslint-config-prettier from 6.1.0 to 6.2.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.1.0...v6.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
9da01c6a7b chore(deps-dev): bump cross-env from 5.2.0 to 5.2.1
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v5.2.0...v5.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
fddf2e54e9 fix: enable serialization of unsigned transactions 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6d5b655413 chore(deps-dev): bump eslint from 6.2.2 to 6.3.0
Bumps [eslint](https://github.com/eslint/eslint) from 6.2.2 to 6.3.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.2.2...v6.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
20845955ec chore(deps-dev): bump flow-bin from 0.106.2 to 0.106.3
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.106.2 to 0.106.3.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.106.2...v0.106.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
cf000ef5fc chore(deps-dev): bump eslint-plugin-jest from 22.15.2 to 22.16.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.15.2 to 22.16.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.15.2...v22.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
eec8f6184c fix: reject base58 public keys that are too short (#474) 2020-06-14 21:57:04 -07:00
Sunny Gleason
0379615c76 feat: getInflation() RPC (needs better documentation pending book terms) (#473)
* feat: getInflation() RPC (needs better documentation pending book terms)

* feat: add test
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5b47eb2efc chore(deps): [security] bump mixin-deep from 1.3.1 to 1.3.2
Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2. **This update includes a security fix.**
- [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
- [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d2594cdef3 chore(deps-dev): bump flow-bin from 0.106.1 to 0.106.2
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.106.1 to 0.106.2.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.106.1...v0.106.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c42451e746 chore(deps-dev): bump eslint from 6.1.0 to 6.2.2
Bumps [eslint](https://github.com/eslint/eslint) from 6.1.0 to 6.2.2.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.1.0...v6.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
60aff8b314 chore(deps-dev): bump flow-bin from 0.106.0 to 0.106.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.106.0 to 0.106.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.106.0...v0.106.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
0ce6a96d67 chore(deps-dev): bump babel-eslint from 10.0.2 to 10.0.3
Bumps [babel-eslint](https://github.com/babel/babel-eslint) from 10.0.2 to 10.0.3.
- [Release notes](https://github.com/babel/babel-eslint/releases)
- [Commits](https://github.com/babel/babel-eslint/compare/v10.0.2...v10.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
1b70081399 fix: add Account.rent_epoch field and rebuild bpf test fixtures (#466)
* fix: add Account.rent_epoch field

* fix: rebuild bpf test fixtures
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d4c3cf8966 chore(deps-dev): bump semantic-release from 15.13.21 to 15.13.24
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.21 to 15.13.24.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.21...v15.13.24)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
93a5fc83a1 chore(deps-dev): bump flow-bin from 0.105.2 to 0.106.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.105.2 to 0.106.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.105.2...v0.106.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a6cc5f5b07 chore(deps-dev): bump eslint-plugin-jest from 22.15.1 to 22.15.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.15.1 to 22.15.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.15.1...v22.15.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5a4394349a chore(deps-dev): bump acorn from 6.3.0 to 7.0.0
Bumps [acorn](https://github.com/acornjs/acorn) from 6.3.0 to 7.0.0.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.3.0...7.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6f72cedc03 chore(deps): bump superstruct from 0.6.1 to 0.6.2
Bumps [superstruct](https://github.com/ianstormtaylor/superstruct) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/ianstormtaylor/superstruct/releases)
- [Changelog](https://github.com/ianstormtaylor/superstruct/blob/master/Changelog.md)
- [Commits](https://github.com/ianstormtaylor/superstruct/compare/v0.6.1...v0.6.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
abda0d855d chore(deps-dev): bump eslint-config-prettier from 6.0.0 to 6.1.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.0.0...v6.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
a3bf378d0d fix: update from getEpochVoteAccounts to getVoteAccounts rpc 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
38ffe85737 chore(deps-dev): bump jest from 24.8.0 to 24.9.0
Bumps [jest](https://github.com/facebook/jest) from 24.8.0 to 24.9.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.8.0...v24.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
65a120018e chore(deps-dev): bump rimraf from 2.7.0 to 3.0.0
Bumps [rimraf](https://github.com/isaacs/rimraf) from 2.7.0 to 3.0.0.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Commits](https://github.com/isaacs/rimraf/compare/v2.7.0...v3.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b1331625b8 chore(deps-dev): bump rimraf from 2.6.3 to 2.7.0
Bumps [rimraf](https://github.com/isaacs/rimraf) from 2.6.3 to 2.7.0.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Commits](https://github.com/isaacs/rimraf/compare/v2.6.3...v2.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fd0b4d813e chore(deps-dev): bump semantic-release from 15.13.19 to 15.13.21
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.19 to 15.13.21.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.19...v15.13.21)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5b328bb5f2 chore(deps-dev): bump flow-bin from 0.105.1 to 0.105.2
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.105.1 to 0.105.2.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.105.1...v0.105.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
163133bcad chore(deps-dev): bump eslint-plugin-jest from 22.15.0 to 22.15.1
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.15.0 to 22.15.1.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.15.0...v22.15.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8f674de71d chore(deps): bump ws from 7.1.1 to 7.1.2
Bumps [ws](https://github.com/websockets/ws) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.1.1...7.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
374c23d032 chore(deps-dev): bump acorn from 6.2.1 to 6.3.0
Bumps [acorn](https://github.com/acornjs/acorn) from 6.2.1 to 6.3.0.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.2.1...6.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8de9bad660 chore(deps-dev): bump flow-bin from 0.104.0 to 0.105.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.104.0 to 0.105.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.104.0...v0.105.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
35d138f967 chore(deps): bump rpc-websockets from 4.6.0 to 4.6.1
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/compare/v4.6.0...v4.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
6ac1dffa99 chore(deps-dev): bump eslint-plugin-jest from 22.7.2 to 22.15.0 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
07c2b60458 chore(deps): bump rpc-websockets from 4.5.1 to 4.6.0
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 4.5.1 to 4.6.0.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
494bd5864b chore(deps-dev): bump marked from 0.6.3 to 0.7.0
Bumps [marked](https://github.com/markedjs/marked) from 0.6.3 to 0.7.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.6.3...v0.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a8773f897c chore(deps-dev): bump rollup-plugin-commonjs from 10.0.1 to 10.0.2
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 10.0.1 to 10.0.2.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v10.0.1...v10.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
2eeaf668fa fix: add missing getSlot API 2020-06-14 21:57:04 -07:00
Michael Vines
60ac6fc5b7 fix: avoid empty --network argument 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
97bfa19dd4 chore(deps-dev): bump semantic-release from 15.13.18 to 15.13.19
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.18 to 15.13.19.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.18...v15.13.19)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f8ee8b6218 chore(deps-dev): bump flow-typed from 2.6.0 to 2.6.1
Bumps [flow-typed](https://github.com/flow-typed/flow-typed) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/flow-typed/flow-typed/releases)
- [Changelog](https://github.com/flow-typed/flow-typed/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flow-typed/flow-typed/commits/v2.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
eb2bb8b58f chore(deps-dev): bump flow-bin from 0.103.0 to 0.104.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.103.0 to 0.104.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.103.0...v0.104.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
d9f40bb879 fix: support http endpoints (#433) 2020-06-14 21:57:04 -07:00
Justin Starry
677c075ade fix: add transaction instruction ctor to flow def (#408) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
65e2f85871 chore(deps-dev): bump flow-typed from 2.5.2 to 2.6.0
Bumps [flow-typed](https://github.com/flow-typed/flow-typed) from 2.5.2 to 2.6.0.
- [Release notes](https://github.com/flow-typed/flow-typed/releases)
- [Changelog](https://github.com/flow-typed/flow-typed/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flow-typed/flow-typed/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
44a2ea6897 chore(deps-dev): bump eslint from 6.0.1 to 6.1.0
Bumps [eslint](https://github.com/eslint/eslint) from 6.0.1 to 6.1.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.0.1...v6.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5b79a854a5 chore(deps-dev): bump flow-bin from 0.102.0 to 0.103.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.102.0 to 0.103.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.102.0...v0.103.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d4bfc16857 chore(deps): bump rpc-websockets from 4.4.1 to 4.5.1
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 4.4.1 to 4.5.1.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
23fe614e81 chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.5.0 to 7.5.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.0...v7.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a0e96660b7 chore(deps-dev): bump rollup-plugin-terser from 5.1.0 to 5.1.1
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.1.0...v5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
05a0fa758a chore(deps): bump @babel/runtime from 7.5.1 to 7.5.5
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.5.1 to 7.5.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.1...v7.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
4dd8da8d8d fix: remove usage of api.*.testnet.solana.com 2020-06-14 21:57:04 -07:00
Michael Vines
6c32bca04d fix: export VOTE_ACCOUNT_KEY (#422) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
1bf94c7673 chore(deps-dev): bump acorn from 6.2.0 to 6.2.1
Bumps [acorn](https://github.com/acornjs/acorn) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.2.0...6.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
5a966ea9ab chore(deps): bump bn.js from 4.11.8 to 5.0.0
Bumps [bn.js](https://github.com/indutny/bn.js) from 4.11.8 to 5.0.0.
- [Release notes](https://github.com/indutny/bn.js/releases)
- [Changelog](https://github.com/indutny/bn.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/indutny/bn.js/compare/v4.11.8...v5.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
745f35f821 chore(deps): [security] bump lodash from 4.17.11 to 4.17.14
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.14. **This update includes a security fix.**
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
c929516f52 feat: add vote account decoder (#418) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
41346436f6 chore(deps-dev): bump @babel/preset-env from 7.5.0 to 7.5.5
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.5.0 to 7.5.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.0...v7.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d725d3462c chore(deps-dev): bump eslint-plugin-import from 2.18.1 to 2.18.2
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.18.1 to 2.18.2.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.18.1...v2.18.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
25ad81fb05 chore(deps-dev): bump @commitlint/travis-cli from 8.0.0 to 8.1.0
Bumps [@commitlint/travis-cli](https://github.com/conventional-changelog/commitlint) from 8.0.0 to 8.1.0.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3698079ef1 chore(deps-dev): bump @commitlint/config-conventional
Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint) from 8.0.0 to 8.1.0.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ed32da8a44 chore(deps-dev): bump @babel/core from 7.5.0 to 7.5.5
Bumps [@babel/core](https://github.com/babel/babel) from 7.5.0 to 7.5.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.0...v7.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
7f045c63ea chore(deps): bump ws from 7.1.0 to 7.1.1
Bumps [ws](https://github.com/websockets/ws) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.1.0...7.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c297d259e9 chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.5.0 to 7.5.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.0...v7.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
f6013626d5 chore(deps-dev): bump eslint-plugin-import from 2.18.0 to 2.18.1
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.18.0 to 2.18.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.18.0...v2.18.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
c36e21349a chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.4.4 to 7.5.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.4...v7.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
253e27014e fix: accommodate cluster fees in budget-two-approvers 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
9c880a8c99 chore(deps-dev): bump acorn from 6.1.1 to 6.2.0
Bumps [acorn](https://github.com/acornjs/acorn) from 6.1.1 to 6.2.0.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.1.1...6.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
280e1726b3 chore(deps): [security] bump lodash.template from 4.4.0 to 4.5.0
Bumps [lodash.template](https://github.com/lodash/lodash) from 4.4.0 to 4.5.0. **This update includes security fixes.**
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.4.0...4.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
dd985f550c chore(deps): [security] bump lodash.merge from 4.6.1 to 4.6.2
Bumps [lodash.merge](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2. **This update includes security fixes.**
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
548febabc2 chore(deps): bump ws from 7.0.1 to 7.1.0
Bumps [ws](https://github.com/websockets/ws) from 7.0.1 to 7.1.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.0.1...7.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
f46faee251 fix: update keybaseId to keybaseUsername 2020-06-14 21:57:04 -07:00
Jack May
408e8e7500 fix: Update Rust-BPF example (#406) 2020-06-14 21:57:04 -07:00
Justin Starry
2e3c5e7820 fix: end of life native loader (#404) 2020-06-14 21:57:04 -07:00
Justin Starry
6f05930076 feat: validator info deserialization (#403) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2072f20997 chore(deps): bump @babel/runtime from 7.5.0 to 7.5.1
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.5.0 to 7.5.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.5.0...v7.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
55f997d568 chore(deps-dev): bump @babel/preset-env from 7.4.5 to 7.5.0
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.4.5 to 7.5.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.5...v7.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6895f1146b chore(deps-dev): bump @babel/core from 7.4.5 to 7.5.0
Bumps [@babel/core](https://github.com/babel/babel) from 7.4.5 to 7.5.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.5...v7.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a630f2e903 chore(deps): bump @babel/runtime from 7.4.5 to 7.5.0
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.4.5 to 7.5.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.5...v7.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
841b1c118c chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.4.4 to 7.5.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.4...v7.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ef38ec8a98 chore(deps): bump rpc-websockets from 4.4.0 to 4.4.1
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 4.4.0 to 4.4.1.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3c2a32bebe chore(deps-dev): bump eslint-plugin-jest from 22.7.1 to 22.7.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.7.1 to 22.7.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.7.1...v22.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
118a5f0ece doc: commission is now a u8 (#390) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d5d64c337b chore(deps-dev): bump rollup-plugin-terser from 5.0.0 to 5.1.0
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v5.0.0...v5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4de4f496bf chore(deps-dev): bump marked from 0.6.2 to 0.6.3
Bumps [marked](https://github.com/markedjs/marked) from 0.6.2 to 0.6.3.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.6.2...v0.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b52525ff3d chore(deps-dev): bump rollup-plugin-node-resolve from 5.0.4 to 5.2.0
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 5.0.4 to 5.2.0.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v5.0.4...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
0e7c8cd01f fix: expose getProgramAccounts RPC method 2020-06-14 21:57:04 -07:00
Sunny Gleason
c14a44b8b4 doc: disambiguate sols vs. lamports in doco (#384)
* disambiguate sols vs. lamports in doco

* doc: disambiguate sols vs. lamports
2020-06-14 21:57:04 -07:00
Tyera Eulberg
eb56da4a94 fix: fix transaction live test for credit-only accounts (#385) 2020-06-14 21:57:04 -07:00
Michael Vines
b22c39018f ci: then 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
59d7ee5db2 chore(deps-dev): bump rollup-plugin-babel from 4.3.2 to 4.3.3 (#368)
Bumps [rollup-plugin-babel](https://github.com/rollup/rollup-plugin-babel) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/rollup/rollup-plugin-babel/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-babel/compare/v4.3.2...v4.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
329955f4e6 ci: commitlint only on pull requests 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8a41292e08 Bump rollup-plugin-commonjs from 10.0.0 to 10.0.1
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 10.0.0 to 10.0.1.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v10.0.0...v10.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b4ac94f39c chore(deps-dev): bump semantic-release from 15.13.17 to 15.13.18
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.17 to 15.13.18.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.17...v15.13.18)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
684605fd5c fix: add burnPercent field to FeeCalculator (#381) 2020-06-14 21:57:04 -07:00
Michael Vines
5d81280c97 chore: add ed 2020-06-14 21:57:04 -07:00
Michael Vines
c6f828b06a chore: run pretty 2020-06-14 21:57:04 -07:00
Michael Vines
b3319452e5 chore: update BPF SDK portions of README 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
9419613063 chore(deps-dev): bump flow-bin from 0.101.1 to 0.102.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.101.1 to 0.102.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.101.1...v0.102.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e00d0256a1 chore(deps-dev): bump eslint-config-prettier from 5.1.0 to 6.0.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 5.1.0 to 6.0.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v5.1.0...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
eb16023639 chore(deps-dev): bump semantic-release from 15.13.16 to 15.13.17
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.16 to 15.13.17.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.16...v15.13.17)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
57f3f7994b chore(deps-dev): bump eslint from 5.16.0 to 6.0.1
Bumps [eslint](https://github.com/eslint/eslint) from 5.16.0 to 6.0.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.16.0...v6.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
7bb158d3a0 ci: add commitlint 2020-06-14 21:57:04 -07:00
Trent Nelson
034f31d3bc Expose getTotalSupply RPC method (#370) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
fd2ddef520 chore(deps-dev): bump eslint-plugin-import from 2.17.3 to 2.18.0
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.17.3 to 2.18.0.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.17.3...v2.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e07200229a chore(deps-dev): bump eslint-config-prettier from 5.0.0 to 5.1.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v5.0.0...v5.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
56611e1d2b chore(deps-dev): bump rollup-plugin-node-resolve from 5.0.0 to 5.0.4
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 5.0.0 to 5.0.4.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v5.0.0...v5.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Justin Starry
6304814be3 chore: rollup dependency conflict (#366)
* bump rollup-plugin-node-resolve from 4.2.3 to 5.0.0

* Fix NPM warnings

* bump rollup-plugin-commonjs from 9.3.4 to 10.0.0
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b1df5bf642 chore(deps-dev): bump flow-bin from 0.101.0 to 0.101.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.101.0 to 0.101.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.101.0...v0.101.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
77142fc18d chore(deps-dev): bump eslint-plugin-jest from 22.6.4 to 22.7.1
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.6.4 to 22.7.1.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.6.4...v22.7.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
c7161781b4 ci: ignore dependabot branches 2020-06-14 21:57:04 -07:00
Michael Vines
78483ac49c fix: drop solana-sdk-bpf-utils version 2020-06-14 21:57:04 -07:00
Michael Vines
aa9f2f8730 fix: add {min,max}LamportsPerSignature fields 2020-06-14 21:57:04 -07:00
Jack May
53dcf56559 chore: update noop to new Rust conventions (#365) 2020-06-14 21:57:04 -07:00
Michael Vines
b4c80b1464 fix: inline testnet-default-channel.js 2020-06-14 21:57:04 -07:00
Michael Vines
6b68e2d610 Revert "chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.3 to 5.0.3"
This reverts commit 07854e37ec9ab0928ec848b0b2b2e03f13fe8686.
2020-06-14 21:57:04 -07:00
Michael Vines
e6d6018132 ci: ensure rollup upgrades actually build the right files 2020-06-14 21:57:04 -07:00
Michael Vines
9e30c6f827 fix: add solana-bpf-sdk-install command to permit users to easily update their bpf-sdk 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
53f2c84fab chore(deps-dev): bump enzyme from 3.9.0 to 3.10.0
Bumps [enzyme](https://github.com/airbnb/enzyme/tree/HEAD/packages/enzyme) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/airbnb/enzyme/releases)
- [Changelog](https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/airbnb/enzyme/commits/enzyme@3.10.0/packages/enzyme)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
9075827bc3 chore(deps): bump ws from 7.0.0 to 7.0.1
Bumps [ws](https://github.com/websockets/ws) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.0.0...7.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
62d9bebaa3 Update examples to new SDK (#358) 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
460e095a3c chore(deps): bump rpc-websockets from 4.3.5 to 4.4.0
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 4.3.5 to 4.4.0.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6c33a7f9ee chore(deps-dev): bump babel-eslint from 10.0.1 to 10.0.2
Bumps [babel-eslint](https://github.com/babel/babel-eslint) from 10.0.1 to 10.0.2.
- [Release notes](https://github.com/babel/babel-eslint/releases)
- [Commits](https://github.com/babel/babel-eslint/compare/v10.0.1...v10.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
2fa0baba03 chore(deps-dev): bump prettier from 1.17.0 to 1.18.2
Bumps [prettier](https://github.com/prettier/prettier) from 1.17.0 to 1.18.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.17.0...1.18.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
acf738ee2a chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.3 to 5.0.3
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.2.3 to 5.0.3.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.2.3...v5.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
45425cae0b chore(deps-dev): bump eslint-config-prettier from 4.2.0 to 5.0.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 4.2.0 to 5.0.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v4.2.0...v5.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
522d212076 Revert "chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.3 to 5.0.2"
This reverts commit 4c57e72ef8774d1baf8625bf733281da4d8459ef.
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
e9ae7fe26c chore(deps-dev): bump semantic-release from 15.13.12 to 15.13.16
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.12 to 15.13.16.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.12...v15.13.16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
63990980c4 package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
16dfeecdb9 fix: use packaged bpf-sdk/ by default 2020-06-14 21:57:04 -07:00
Michael Vines
95fbffebd9 chore: update author 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
de73aedc94 chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.3 to 5.0.2
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.2.3 to 5.0.2.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.2.3...v5.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
93e5075bca chore(deps-dev): bump rollup from 1.13.0 to 1.15.2
Bumps [rollup](https://github.com/rollup/rollup) from 1.13.0 to 1.15.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.13.0...v1.15.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
839ed1d462 chore(deps-dev): bump flow-typed from 2.5.1 to 2.5.2
Bumps [flow-typed](https://github.com/flow-typed/flow-typed) from 2.5.1 to 2.5.2.
- [Release notes](https://github.com/flow-typed/flow-typed/releases)
- [Changelog](https://github.com/flow-typed/flow-typed/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flow-typed/flow-typed/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
301e0ea7fe Revert "fix: switch to beta channel until edge bpf stablizes"
This reverts commit 50a73b93688376b1ad7e8556df8f196b56a549d2.
2020-06-14 21:57:04 -07:00
Michael Vines
03603ea87b fix: remove tick_height 2020-06-14 21:57:04 -07:00
Michael Vines
58edbf5607 fix: retain support for 0.15 GetClusterNodes 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
02c1d0416a chore(deps-dev): bump @babel/preset-env from 7.4.4 to 7.4.5
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.4.4 to 7.4.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.4...v7.4.5)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d0b77a768f chore(deps-dev): bump flow-bin from 0.99.1 to 0.101.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.99.1 to 0.101.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.99.1...v0.101.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
10e3a26338 feat: expose feeCalculator 2020-06-14 21:57:04 -07:00
Michael Vines
9fde1eb404 fix: switch to beta channel until edge bpf stablizes 2020-06-14 21:57:04 -07:00
Michael Vines
a8d0b6f9f1 fix: add more lamports to payer accounts to account for higher fees 2020-06-14 21:57:04 -07:00
Michael Vines
e23d2453d7 feat: add binding for getEpochVoteAccounts 2020-06-14 21:57:04 -07:00
Michael Vines
45a42374f2 chore(deps-dev): bump flow-bin from 0.98.1 to 0.99.1 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
8045520261 chore(deps-dev): bump rollup-plugin-terser from 4.0.4 to 5.0.0
Bumps [rollup-plugin-terser](https://github.com/TrySound/rollup-plugin-terser) from 4.0.4 to 5.0.0.
- [Release notes](https://github.com/TrySound/rollup-plugin-terser/releases)
- [Commits](https://github.com/TrySound/rollup-plugin-terser/compare/v4.0.4...v5.0.0)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
d6b14fe7e0 chore(deps-dev): bump rollup from 1.11.3 to 1.13.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.11.3 to 1.13.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.11.3...v1.13.0)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
a9d44a830c chore(deps-dev): bump eslint-plugin-import from 2.17.2 to 2.17.3
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.17.2 to 2.17.3.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.17.2...v2.17.3)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
6d91b6d603 chore(deps): bump @babel/runtime from 7.4.4 to 7.4.5
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.4.4 to 7.4.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.4...v7.4.5)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
ae8ea961a8 chore(deps-dev): bump eslint-plugin-jest from 22.5.1 to 22.6.4
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.5.1 to 22.6.4.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.5.1...v22.6.4)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
32c3fdef30 chore(deps): bump node-fetch from 2.5.0 to 2.6.0
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/bitinn/node-fetch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.5.0...v2.6.0)
2020-06-14 21:57:04 -07:00
Michael Vines
26eef0f057 fix: load programs in larger chunks 2020-06-14 21:57:04 -07:00
Michael Vines
42494713b3 ci: show lib/ 2020-06-14 21:57:04 -07:00
Michael Vines
ae6ddb9be0 Revert "chore(deps-dev): bump rollup from 1.11.3 to 1.12.4"
This reverts commit 23e38987433e4785b90e10d0bb4c4fab4163c4e2.
2020-06-14 21:57:04 -07:00
Michael Vines
39b51246c7 Revert "chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.3 to 5.0.0"
This reverts commit bd3445069138284a301aa6a153694727caf73138.
2020-06-14 21:57:04 -07:00
Michael Vines
95a3a78e57 ci: make examples non-blocking since they run against the public testnet 2020-06-14 21:57:04 -07:00
Michael Vines
d000485f7c fix: increase PACKET_DATA_SIZE to match Solana v0.15.0 2020-06-14 21:57:04 -07:00
Michael Vines
9f8fc5b260 test: ensure any system account can pay for a transaction 2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
b05ec4cf69 chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.3 to 5.0.0
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.2.3 to 5.0.0.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.2.3...v5.0.0)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
3f52cea5ea chore(deps-dev): bump rollup from 1.11.3 to 1.12.4
Bumps [rollup](https://github.com/rollup/rollup) from 1.11.3 to 1.12.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.11.3...v1.12.4)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
4d4866cef9 chore(deps-dev): bump @babel/core from 7.4.4 to 7.4.5
Bumps [@babel/core](https://github.com/babel/babel) from 7.4.4 to 7.4.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.4...v7.4.5)
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
24cbfa8d11 chore(deps-dev): bump semantic-release from 15.13.3 to 15.13.12
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.3 to 15.13.12.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.3...v15.13.12)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
61c0dfb6e7 chore(deps-dev): bump eslint-plugin-prettier from 3.0.1 to 3.1.0
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.0.1...v3.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
62af4c2e6b chore(deps-dev): bump codecov from 3.3.0 to 3.5.0
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.3.0 to 3.5.0.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot-preview[bot]
65c8d0867b chore(deps): [security] bump tar from 2.2.1 to 2.2.2
Bumps [tar](https://github.com/npm/node-tar) from 2.2.1 to 2.2.2. **This update includes security fixes.**
- [Release notes](https://github.com/npm/node-tar/releases)
- [Commits](https://github.com/npm/node-tar/compare/v2.2.1...v2.2.2)
2020-06-14 21:57:04 -07:00
Tyera Eulberg
6b43acf558 fix: Use xenial dist for newer lib symbols 2020-06-14 21:57:04 -07:00
Tyera Eulberg
87c1becbef fix: Squash budget bugs 2020-06-14 21:57:04 -07:00
Tyera Eulberg
c99d8dd15c fix: Add preliminary handling for credit-only account designation 2020-06-14 21:57:04 -07:00
Tyera Eulberg
78ad376bcd fix: Appease flow 2020-06-14 21:57:04 -07:00
Tyera Eulberg
41d14bec22 style: Prettify 2020-06-14 21:57:04 -07:00
Tyera Eulberg
34cb08bd84 fix: Update transaction format; include numCreditOnlySignedAccounts and numCreditOnlyUnsignedAccounts bytes, remove programIds 2020-06-14 21:57:04 -07:00
Tyera Eulberg
53958a8b1e fix: Repair getRecentBlockhash bug in non-legacy formats 2020-06-14 21:57:04 -07:00
Tyera Eulberg
f6494f6675 fix: Repair examples bug 2020-06-14 21:57:04 -07:00
Michael Vines
4cf234618e fix: support v0.14 GetRecentBlockhash too 2020-06-14 21:57:04 -07:00
Michael Vines
a1ce705d15 fix: adapt to GetRecentBlockhash RPC API signature change 2020-06-14 21:57:04 -07:00
dependabot[bot]
2373d66e40 chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.4.0 to 7.4.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.0...v7.4.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
be61b1682f chore(deps-dev): bump @babel/core from 7.4.3 to 7.4.4
Bumps [@babel/core](https://github.com/babel/babel) from 7.4.3 to 7.4.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.3...v7.4.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
9778641120 chore(deps): bump ws from 6.2.1 to 7.0.0
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 7.0.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.2.1...7.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
d142695500 chore(deps-dev): bump jest from 24.7.1 to 24.8.0
Bumps [jest](https://github.com/facebook/jest) from 24.7.1 to 24.8.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.7.1...v24.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
ae76fa10cd chore(deps-dev): bump flow-bin from 0.97.0 to 0.98.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.97.0 to 0.98.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.97.0...v0.98.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
ad0ed83893 chore(deps): bump node-fetch from 2.4.1 to 2.5.0
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/bitinn/node-fetch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.4.1...v2.5.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
4c4f5a0fb9 Add BPF Rust noop example (#316) 2020-06-14 21:57:04 -07:00
Michael Vines
f7a02e54df fix: correctly count duplicate signing keys 2020-06-14 21:57:04 -07:00
Michael Vines
48f0bcc2bf fix: pay transaction fees from system accounts 2020-06-14 21:57:04 -07:00
dependabot[bot]
7bde7e3767 chore(deps): bump jayson from 3.0.1 to 3.0.2
Bumps [jayson](https://github.com/tedeh/jayson) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e276d2f17c chore(deps-dev): bump rollup from 1.11.2 to 1.11.3
Bumps [rollup](https://github.com/rollup/rollup) from 1.11.2 to 1.11.3.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.11.2...v1.11.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
9db5f85156 chore(deps-dev): bump rollup from 1.11.1 to 1.11.2
Bumps [rollup](https://github.com/rollup/rollup) from 1.11.1 to 1.11.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.11.1...v1.11.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
2240e4de84 chore(deps-dev): bump rollup from 1.11.0 to 1.11.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.11.0...v1.11.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
f2bde990ca chore(deps-dev): bump rollup from 1.10.1 to 1.11.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.10.1...v1.11.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
901cf9a4b1 chore(deps): bump node-fetch from 2.3.0 to 2.4.1
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.3.0 to 2.4.1.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/bitinn/node-fetch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.3.0...v2.4.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
3f94c94dd5 chore(deps-dev): bump @babel/preset-env from 7.4.3 to 7.4.4
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.4.3 to 7.4.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.3...v7.4.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
b8ea9b6099 chore(deps): bump @babel/runtime from 7.4.3 to 7.4.4
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.4.3 to 7.4.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
ebfeb0b4ca chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.4.3 to 7.4.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
f803b2ae1f fix: adapt to program id changes 2020-06-14 21:57:04 -07:00
dependabot[bot]
42a2f54c9d chore(deps-dev): bump eslint-config-prettier from 4.1.0 to 4.2.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v4.1.0...v4.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
8334b18d64 chore(deps-dev): bump eslint-plugin-jest from 22.5.0 to 22.5.1
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.5.0 to 22.5.1.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.5.0...v22.5.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
456f34e95b fix: add fullnodeExit() 2020-06-14 21:57:04 -07:00
Michael Vines
2292b5910e doc: correct getClusterNodes() summary 2020-06-14 21:57:04 -07:00
dependabot[bot]
1719b74102 chore(deps-dev): bump eslint-plugin-jest from 22.4.1 to 22.5.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.4.1 to 22.5.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.4.1...v22.5.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
a90cbcee9e test: give more time 2020-06-14 21:57:04 -07:00
Michael Vines
a2cd9180b5 feat: add getSlotLeader()/getClusterNodes() 2020-06-14 21:57:04 -07:00
dependabot[bot]
5f2bcd5200 chore(deps-dev): bump @babel/preset-env from 7.4.2 to 7.4.3
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.4.2 to 7.4.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.2...v7.4.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
16ff2533b4 chore(deps-dev): bump eslint-plugin-import from 2.16.0 to 2.17.2
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.16.0 to 2.17.2.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.16.0...v2.17.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
60771c442d chore(deps-dev): bump rollup from 1.10.0 to 1.10.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
d27555c175 chore(deps-dev): bump prettier from 1.16.4 to 1.17.0
Bumps [prettier](https://github.com/prettier/prettier) from 1.16.4 to 1.17.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.16.4...1.17.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
15c36680cc Fix budget example tx confirmations 2020-06-14 21:57:04 -07:00
dependabot[bot]
b6692c85e6 chore(deps-dev): bump flow-bin from 0.96.0 to 0.97.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.96.0 to 0.97.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.96.0...v0.97.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
c1bbb9b291 s/move/transfer in system program to match solana 2020-06-14 21:57:04 -07:00
Tyera Eulberg
7f02185998 Update native-loader test to noop program rename 2020-06-14 21:57:04 -07:00
Tyera Eulberg
507fac06ee fix: Appease flow 2020-06-14 21:57:04 -07:00
Tyera Eulberg
663f9c76d8 fix: Update default channel to edge 2020-06-14 21:57:04 -07:00
Tyera Eulberg
7f72bbeba3 fix: Update signature status result type 2020-06-14 21:57:04 -07:00
Tyera Eulberg
f2b38bcc56 fix: Remove deprecated length field 2020-06-14 21:57:04 -07:00
Tyera Eulberg
efd0392706 BREAKING CHANGE: requires Solana version v0.13.0 or greater
feat: Update to current solana tx format
2020-06-14 21:57:04 -07:00
dependabot[bot]
853ea88fd0 chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.2 to 4.2.3
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.2.2...v4.2.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e2dbbb9923 chore(deps-dev): bump rollup from 1.9.2 to 1.10.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.9.2 to 1.10.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.9.2...v1.10.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
d7b18bcff5 chore(deps-dev): bump rollup-plugin-replace from 2.1.1 to 2.2.0
Bumps [rollup-plugin-replace](https://github.com/rollup/rollup-plugin-replace) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/rollup/rollup-plugin-replace/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-replace/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-replace/compare/v2.1.1...v2.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
8e4ea2d92c chore(deps-dev): bump rollup from 1.9.0 to 1.9.2
Bumps [rollup](https://github.com/rollup/rollup) from 1.9.0 to 1.9.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.9.0...v1.9.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
4dd2ab7555 chore(deps-dev): bump rollup-plugin-node-resolve from 4.2.1 to 4.2.2
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.2.1...v4.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
603ea8e1ae chore(deps): bump @babel/runtime from 7.3.4 to 7.4.3
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.3.4 to 7.4.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.4...v7.4.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
27359e2f29 chore(deps): bump jayson from 2.1.2 to 3.0.1
Bumps [jayson](https://github.com/tedeh/jayson) from 2.1.2 to 3.0.1.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v2.1.2...v3.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
b5f37a042e chore(deps-dev): bump rollup-plugin-node-resolve from 4.1.0 to 4.2.1
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.1.0 to 4.2.1.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.1.0...v4.2.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
9461437202 chore(deps-dev): bump marked from 0.6.1 to 0.6.2
Bumps [marked](https://github.com/markedjs/marked) from 0.6.1 to 0.6.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.6.1...v0.6.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
592b4022a5 chore(deps-dev): bump rollup from 1.8.0 to 1.9.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.8.0...v1.9.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
6ae61f1782 chore(deps-dev): bump rollup-plugin-replace from 2.1.0 to 2.1.1
Bumps [rollup-plugin-replace](https://github.com/rollup/rollup-plugin-replace) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/rollup/rollup-plugin-replace/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-replace/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-replace/compare/v2.1.0...v2.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e9c0e7cd9b chore(deps-dev): bump rollup-plugin-node-resolve from 4.0.1 to 4.1.0
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.0.1...v4.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
1959be8c95 chore(deps-dev): bump rollup-plugin-commonjs from 9.3.3 to 9.3.4
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 9.3.3 to 9.3.4.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v9.3.3...v9.3.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
faefb2ebb4 chore(deps-dev): bump rollup-plugin-commonjs from 9.3.2 to 9.3.3
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 9.3.2 to 9.3.3.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v9.3.2...v9.3.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
065a3933c9 chore(deps-dev): bump rollup-plugin-commonjs from 9.3.0 to 9.3.2
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 9.3.0 to 9.3.2.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v9.3.0...v9.3.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
863192a23e chore(deps-dev): bump jest from 24.7.0 to 24.7.1
Bumps [jest](https://github.com/facebook/jest) from 24.7.0 to 24.7.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.7.0...v24.7.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
0a8ce522f1 chore(deps-dev): bump codecov from 3.2.0 to 3.3.0
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/commits/v3.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a5279deb81 chore(deps-dev): bump rollup-plugin-commonjs from 9.2.3 to 9.3.0
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 9.2.3 to 9.3.0.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v9.2.3...v9.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
1da20b913f chore(deps-dev): bump @babel/core from 7.4.0 to 7.4.3
Bumps [@babel/core](https://github.com/babel/babel) from 7.4.0 to 7.4.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.0...v7.4.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
7475fbe929 chore(deps-dev): bump flow-bin from 0.95.1 to 0.96.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.95.1 to 0.96.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.95.1...v0.96.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a8a08b38ba chore(deps-dev): bump jest from 24.6.0 to 24.7.0
Bumps [jest](https://github.com/facebook/jest) from 24.6.0 to 24.7.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.6.0...v24.7.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
2f747c93ec chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.3.4 to 7.4.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.4...v7.4.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
917c14e0a3 chore(deps-dev): bump rollup-plugin-commonjs from 9.2.2 to 9.2.3
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 9.2.2 to 9.2.3.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v9.2.2...v9.2.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
45292d7458 chore(deps-dev): bump rollup from 1.7.4 to 1.8.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.7.4 to 1.8.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.7.4...v1.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
d27a0e4824 chore(deps-dev): bump jest from 24.5.0 to 24.6.0
Bumps [jest](https://github.com/facebook/jest) from 24.5.0 to 24.6.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.5.0...v24.6.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
5992c2e12f chore(deps-dev): bump eslint from 5.15.3 to 5.16.0
Bumps [eslint](https://github.com/eslint/eslint) from 5.15.3 to 5.16.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.15.3...v5.16.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a32831a288 chore(deps-dev): bump rollup-plugin-commonjs from 9.2.1 to 9.2.2
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 9.2.1 to 9.2.2.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/compare/v9.2.1...v9.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a852d72198 chore(deps-dev): bump rollup-plugin-json from 3.1.0 to 4.0.0
Bumps [rollup-plugin-json](https://github.com/rollup/rollup-plugin-json) from 3.1.0 to 4.0.0.
- [Release notes](https://github.com/rollup/rollup-plugin-json/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-json/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-json/compare/v3.1.0...v4.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
158546840e chore(deps-dev): bump rollup from 1.7.3 to 1.7.4
Bumps [rollup](https://github.com/rollup/rollup) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
3e89c6f557 chore(deps): bump ws from 6.2.0 to 6.2.1
Bumps [ws](https://github.com/websockets/ws) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.2.0...6.2.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
bcb75c8568 chore(deps): bump superstruct from 0.6.0 to 0.6.1
Bumps [superstruct](https://github.com/ianstormtaylor/superstruct) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/ianstormtaylor/superstruct/releases)
- [Changelog](https://github.com/ianstormtaylor/superstruct/blob/master/Changelog.md)
- [Commits](https://github.com/ianstormtaylor/superstruct/compare/v0.6.0...v0.6.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
077d20a334 chore(deps-dev): bump rollup from 1.7.2 to 1.7.3
Bumps [rollup](https://github.com/rollup/rollup) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.7.2...v1.7.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
6ff219e892 chore(deps-dev): bump rollup from 1.6.1 to 1.7.2
Bumps [rollup](https://github.com/rollup/rollup) from 1.6.1 to 1.7.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
d8cc48c4f8 chore(deps-dev): bump @babel/preset-env from 7.4.1 to 7.4.2
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.4.1 to 7.4.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.4.1...v7.4.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
ad83ad866f chore(deps-dev): bump rollup from 1.6.0 to 1.6.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.6.0...v1.6.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
d8075a5a3c chore(deps-dev): bump @babel/core from 7.3.4 to 7.4.0
Bumps [@babel/core](https://github.com/babel/babel) from 7.3.4 to 7.4.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.4...v7.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
c014a73278 chore(deps-dev): bump @babel/preset-env from 7.3.4 to 7.4.1
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.3.4 to 7.4.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.4...v7.4.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
b36726d65b chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.3.4 to 7.4.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.4...v7.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
3439fd9621 chore: switch default channel to beta 2020-06-14 21:57:04 -07:00
Michael Vines
33bc00d711 fix: adjust DEFAULT_TICKS_PER_SLOT 2020-06-14 21:57:04 -07:00
Michael Vines
024a165947 test: use longer timeout for non-live testing to avoid timeouts 2020-06-14 21:57:04 -07:00
Michael Vines
c78ca47547 chore: npm run pretty 2020-06-14 21:57:04 -07:00
Michael Vines
5c6c3a8ea8 fix: consider ticks_per_slot while sleeping 2020-06-14 21:57:04 -07:00
dependabot[bot]
a87012c5c2 chore(deps-dev): bump eslint-plugin-jest from 22.4.0 to 22.4.1
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.4.0 to 22.4.1.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.4.0...v22.4.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
7bb22b784c chore(deps-dev): bump eslint from 5.15.2 to 5.15.3
Bumps [eslint](https://github.com/eslint/eslint) from 5.15.2 to 5.15.3.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.15.2...v5.15.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
7b0baa180f chore(deps-dev): bump eslint from 5.15.1 to 5.15.2
Bumps [eslint](https://github.com/eslint/eslint) from 5.15.1 to 5.15.2.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.15.1...v5.15.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
cf74fc8098 chore(deps-dev): bump eslint-plugin-jest from 22.3.2 to 22.4.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.3.2 to 22.4.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.3.2...v22.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
df4c83f5be chore(deps-dev): bump flow-bin from 0.95.0 to 0.95.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.95.0 to 0.95.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/commits/v0.95.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
1a98c2fa83 chore(deps-dev): bump flow-bin from 0.94.0 to 0.95.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.94.0 to 0.95.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
a4835edf3c fix(flow): Add ProgramAccountChangeCallback type 2020-06-14 21:57:04 -07:00
dependabot[bot]
b5653f47eb chore(deps-dev): bump rollup from 1.5.0 to 1.6.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.5.0...v1.6.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
7469eb5732 fix: remove stray console.log 2020-06-14 21:57:04 -07:00
Michael Vines
759d7b9cc2 fix: adjust DEFAULT_TICKS_PER_SLOT to match main repo 2020-06-14 21:57:04 -07:00
Michael Vines
6fe0e08a80 fix: rename userdata to data 2020-06-14 21:57:04 -07:00
dependabot[bot]
5d40f359c2 chore(deps-dev): bump jest from 24.4.0 to 24.5.0
Bumps [jest](https://github.com/facebook/jest) from 24.4.0 to 24.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.4.0...v24.5.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
ec287ae7e3 chore(deps-dev): bump eslint-plugin-jest from 22.3.1 to 22.3.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.3.1 to 22.3.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.3.1...v22.3.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
90165b0c9d chore(deps-dev): bump eslint-plugin-jest from 22.3.0 to 22.3.1
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.3.0 to 22.3.1.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.3.0...v22.3.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
8ed00599b3 chore(deps-dev): bump jest from 24.3.1 to 24.4.0
Bumps [jest](https://github.com/facebook/jest) from 24.3.1 to 24.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v24.3.1...v24.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
a7b3abdc62 fix: Update jest to accommodate Nodejs v11.11 2020-06-14 21:57:04 -07:00
Tyera Eulberg
f6afbe1a72 fix: Plumb program-based subscriptions 2020-06-14 21:57:04 -07:00
dependabot[bot]
2ce935287a chore(deps-dev): bump rollup from 1.4.1 to 1.5.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.4.1 to 1.5.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.4.1...v1.5.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
64ff0ab157 chore(deps-dev): bump eslint from 5.14.1 to 5.15.1
Bumps [eslint](https://github.com/eslint/eslint) from 5.14.1 to 5.15.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.14.1...v5.15.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
3cb328f1eb fix: Revert s/tokens/lamports in comments in token program 2020-06-14 21:57:04 -07:00
dependabot[bot]
84163af734 chore(deps-dev): bump flow-bin from 0.93.0 to 0.94.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.93.0 to 0.94.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.93.0...v0.94.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
021c34c0ac chore(deps): bump ws from 6.1.4 to 6.2.0
Bumps [ws](https://github.com/websockets/ws) from 6.1.4 to 6.2.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.1.4...6.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
cd90a67184 fix: simplify RUST_LOG default 2020-06-14 21:57:04 -07:00
Michael Vines
be8821e0d0 fix: rename tokens to lamports 2020-06-14 21:57:04 -07:00
dependabot[bot]
09b6d2b764 chore(deps): bump @babel/runtime from 7.3.1 to 7.3.4
Bumps [@babel/runtime](https://github.com/babel/babel) from 7.3.1 to 7.3.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.1...v7.3.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
c15222250a chore(deps-dev): bump eslint-config-prettier from 4.0.0 to 4.1.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v4.0.0...v4.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
7c76ec6e70 test: add more timeout 2020-06-14 21:57:04 -07:00
dependabot[bot]
80ac6f2820 chore(deps-dev): bump @babel/plugin-transform-runtime
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.2.0 to 7.3.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.2.0...v7.3.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
44284c8aa5 chore(deps-dev): bump rollup-plugin-node-resolve from 4.0.0 to 4.0.1
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v4.0.0...v4.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a372313b2b chore(deps-dev): bump marked from 0.6.0 to 0.6.1
Bumps [marked](https://github.com/markedjs/marked) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.6.0...v0.6.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
6c44f854fa chore(deps-dev): bump rollup-plugin-commonjs from 9.2.0 to 9.2.1
Bumps [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) from 9.2.0 to 9.2.1.
- [Release notes](https://github.com/rollup/rollup-plugin-commonjs/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-commonjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-commonjs/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e9b55c30cf chore(deps-dev): bump @babel/plugin-proposal-class-properties
Bumps [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) from 7.3.3 to 7.3.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.3...v7.3.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
ec6644dc24 chore(deps-dev): bump @babel/core from 7.3.3 to 7.3.4
Bumps [@babel/core](https://github.com/babel/babel) from 7.3.3 to 7.3.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.3...v7.3.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
8d285a6fb4 chore(deps-dev): bump @babel/preset-env from 7.3.1 to 7.3.4
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.3.1 to 7.3.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.3.1...v7.3.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
6298f4a869 chore(deps): [security] bump handlebars from 4.0.11 to 4.1.0
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.0.11 to 4.1.0. **This update includes security fixes.**
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.0.11...v4.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
6c15ab83fc chore(deps): [security] bump extend from 3.0.1 to 3.0.2
Bumps [extend](https://github.com/justmoon/node-extend) from 3.0.1 to 3.0.2. **This update includes security fixes.**
- [Release notes](https://github.com/justmoon/node-extend/releases)
- [Changelog](https://github.com/justmoon/node-extend/blob/master/CHANGELOG.md)
- [Commits](https://github.com/justmoon/node-extend/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
5eb658c980 chore(deps-dev): bump rollup from 1.2.1 to 1.4.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.2.1 to 1.4.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.2.1...v1.4.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
cb68fb300f chore(deps): [security] bump lodash from 4.17.5 to 4.17.11
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.5 to 4.17.11. **This update includes security fixes.**
- [Release notes](https://github.com/lodash/lodash/releases)
- [Changelog](https://github.com/lodash/lodash/blob/master/CHANGELOG)
- [Commits](https://github.com/lodash/lodash/compare/4.17.5...4.17.11)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
51cfcc825a ci: install rustup 2020-06-14 21:57:04 -07:00
Michael Vines
b9e3598a51 fix: adapt test to slower slot rate 2020-06-14 21:57:04 -07:00
Michael Vines
5d350b4568 fix: adjust notification test to wait for the next block 2020-06-14 21:57:04 -07:00
Michael Vines
f655c30159 fix: add timing constants to better set timeouts 2020-06-14 21:57:04 -07:00
Michael Vines
243a4625f1 doc: rename network to cluster 2020-06-14 21:57:04 -07:00
Michael Vines
adb4cb43ec chore: package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
294dd4f4e7 fix: Rename lastId to blockhash 2020-06-14 21:57:04 -07:00
dependabot[bot]
c867f0d9fe chore(deps-dev): bump eslint from 5.14.0 to 5.14.1
Bumps [eslint](https://github.com/eslint/eslint) from 5.14.0 to 5.14.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.14.0...v5.14.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
07f1f9a59c fix: upgrade to babel 7; dump uglify for terser; upgrade to jest 24 2020-06-14 21:57:04 -07:00
dependabot[bot]
32835ba047 chore(deps): bump ws from 6.1.3 to 6.1.4
Bumps [ws](https://github.com/websockets/ws) from 6.1.3 to 6.1.4.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.1.3...6.1.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
b7165a7358 chore(deps): bump jayson from 2.1.1 to 2.1.2
Bumps [jayson](https://github.com/tedeh/jayson) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v2.1.1...v2.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
39cbb77f44 chore(deps-dev): bump babel-plugin-module-resolver from 3.1.3 to 3.2.0
Bumps [babel-plugin-module-resolver](https://github.com/tleunen/babel-plugin-module-resolver) from 3.1.3 to 3.2.0.
- [Release notes](https://github.com/tleunen/babel-plugin-module-resolver/releases)
- [Changelog](https://github.com/tleunen/babel-plugin-module-resolver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tleunen/babel-plugin-module-resolver/compare/v3.1.3...v3.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e8126842f4 chore(deps-dev): bump enzyme from 3.8.0 to 3.9.0
Bumps [enzyme](https://github.com/airbnb/enzyme) from 3.8.0 to 3.9.0.
- [Release notes](https://github.com/airbnb/enzyme/releases)
- [Changelog](https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/airbnb/enzyme/compare/enzyme@3.8.0...enzyme@3.9.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
f0fe1e3047 chore(deps-dev): bump rollup from 1.1.2 to 1.2.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.1.2 to 1.2.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.1.2...v1.2.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
5cd4e4547c chore(deps-dev): bump codecov from 3.1.0 to 3.2.0
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
5b9665098a fix: getConfirmationTime() was removed upstream 2020-06-14 21:57:04 -07:00
Michael Vines
6b73d7d17c fix: unbreak channel default 2020-06-14 21:57:04 -07:00
Michael Vines
5e6c97d0c8 fix: look harder for solana-web3.js install directory 2020-06-14 21:57:04 -07:00
Michael Vines
1c80365812 fix: correctly locate package.json when installed globally 2020-06-14 21:57:04 -07:00
Michael Vines
6bdfce04d1 refactor: improve arg parsing 2020-06-14 21:57:04 -07:00
dependabot[bot]
18b87f4fb9 chore(deps-dev): bump flow-bin from 0.92.1 to 0.93.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.92.1 to 0.93.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.92.1...v0.93.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
1d360fa9ee chore(deps-dev): bump eslint-plugin-jest from 22.2.2 to 22.3.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.2.2 to 22.3.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.2.2...v22.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a5bc1c0c80 chore(deps-dev): bump eslint from 5.13.0 to 5.14.0
Bumps [eslint](https://github.com/eslint/eslint) from 5.13.0 to 5.14.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.13.0...v5.14.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
6311cbf335 fix: retry harder to obtain a last_id 2020-06-14 21:57:04 -07:00
Michael Vines
41865547ee fix: remove spawn 2020-06-14 21:57:04 -07:00
Michael Vines
27c2a11635 chore: update package-lock.json 2020-06-14 21:57:04 -07:00
dependabot[bot]
58a31254cf chore(deps-dev): bump flow-bin from 0.92.0 to 0.92.1
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.92.0 to 0.92.1.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.92.0...v0.92.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
bbbae41388 chore(deps-dev): bump prettier from 1.16.3 to 1.16.4
Bumps [prettier](https://github.com/prettier/prettier) from 1.16.3 to 1.16.4.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.16.3...1.16.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
a91c5c1056 chore: update package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
564d09fdfe fix: remove unwanted u64 length from raw Transaction bytes, it's RPC API specific 2020-06-14 21:57:04 -07:00
dependabot[bot]
5bb07e541d chore(deps-dev): bump eslint from 5.12.1 to 5.13.0
Bumps [eslint](https://github.com/eslint/eslint) from 5.12.1 to 5.13.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.12.1...v5.13.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
27425b3910 chore(deps-dev): bump eslint-config-prettier from 3.6.0 to 4.0.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 3.6.0 to 4.0.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v3.6.0...v4.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
bd6d6f95d2 chore(deps-dev): bump flow-bin from 0.91.0 to 0.92.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.91.0 to 0.92.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.91.0...v0.92.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
1349831d77 chore(deps-dev): bump eslint-plugin-import from 2.15.0 to 2.16.0
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.15.0 to 2.16.0.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.15.0...v2.16.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
c4ae3af1d1 chore(deps-dev): bump prettier from 1.16.1 to 1.16.3
Bumps [prettier](https://github.com/prettier/prettier) from 1.16.1 to 1.16.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.16.1...1.16.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
4a8bad0c22 chore(deps-dev): bump eslint-plugin-jest from 22.1.3 to 22.2.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.1.3 to 22.2.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.1.3...v22.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
79bc47a631 fix: Add Transaction method to parse from wire fmt; update Transaction.serialize 2020-06-14 21:57:04 -07:00
Tyera Eulberg
ac6e503b35 fix: Add transaction encoding helper functions 2020-06-14 21:57:04 -07:00
dependabot[bot]
02ca644cb1 chore(deps): bump tweetnacl from 1.0.0 to 1.0.1
Bumps [tweetnacl](https://github.com/dchest/tweetnacl-js) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/dchest/tweetnacl-js/releases)
- [Changelog](https://github.com/dchest/tweetnacl-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dchest/tweetnacl-js/compare/v1.0.0...v1.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e903b0a954 chore(deps): [security] bump stringstream from 0.0.5 to 0.0.6
Bumps [stringstream](https://github.com/mhart/StringStream) from 0.0.5 to 0.0.6. **This update includes security fixes.**
- [Release notes](https://github.com/mhart/StringStream/releases)
- [Commits](https://github.com/mhart/StringStream/compare/v0.0.5...v0.0.6)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
91b88af25b chore(deps): [security] bump merge from 1.2.0 to 1.2.1
Bumps [merge](https://github.com/yeikos/js.merge) from 1.2.0 to 1.2.1. **This update includes security fixes.**
- [Release notes](https://github.com/yeikos/js.merge/releases)
- [Commits](https://github.com/yeikos/js.merge/compare/v1.2.0...v1.2.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
56d8847b50 chore(deps): [security] bump cryptiles from 3.1.2 to 3.1.4
Bumps [cryptiles](https://github.com/hapijs/cryptiles) from 3.1.2 to 3.1.4. **This update includes security fixes.**
- [Release notes](https://github.com/hapijs/cryptiles/releases)
- [Changelog](https://github.com/hapijs/cryptiles/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hapijs/cryptiles/compare/v3.1.2...v3.1.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
68200ec4a0 chore(deps): bump ws from 6.1.2 to 6.1.3
Bumps [ws](https://github.com/websockets/ws) from 6.1.2 to 6.1.3.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.1.2...6.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Jack May
7d3f671c3d fix: update example to new sdk api (#146) 2020-06-14 21:57:04 -07:00
Jack May
be82e50862 fix: Update sdk everytime (#145) 2020-06-14 21:57:04 -07:00
dependabot[bot]
2b1bccfc24 chore(deps-dev): bump prettier from 1.16.0 to 1.16.1
Bumps [prettier](https://github.com/prettier/prettier) from 1.16.0 to 1.16.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.16.0...1.16.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
2bfb2bfeb1 chore(deps-dev): bump eslint-plugin-import from 2.14.0 to 2.15.0
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.14.0 to 2.15.0.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.14.0...v2.15.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
0cef96b799 chore(deps-dev): bump babel-plugin-module-resolver from 3.1.2 to 3.1.3
Bumps [babel-plugin-module-resolver](https://github.com/tleunen/babel-plugin-module-resolver) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/tleunen/babel-plugin-module-resolver/releases)
- [Changelog](https://github.com/tleunen/babel-plugin-module-resolver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tleunen/babel-plugin-module-resolver/compare/v3.1.2...v3.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
f2b0bad4f1 chore(deps-dev): bump rollup from 1.1.1 to 1.1.2
Bumps [rollup](https://github.com/rollup/rollup) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.1.1...v1.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
8338204bec chore(deps-dev): bump prettier from 1.15.3 to 1.16.0
Bumps [prettier](https://github.com/prettier/prettier) from 1.15.3 to 1.16.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.15.3...1.16.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
c0dea1bd99 chore(deps-dev): bump rollup from 1.1.0 to 1.1.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
5a1fad02b7 chore(deps-dev): bump eslint-config-prettier from 3.5.0 to 3.6.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v3.5.0...v3.6.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
0d0bdc9b24 chore(deps-dev): bump eslint from 5.12.0 to 5.12.1
Bumps [eslint](https://github.com/eslint/eslint) from 5.12.0 to 5.12.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.12.0...v5.12.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
7077f678de chore(deps-dev): bump flow-bin from 0.90.0 to 0.91.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.90.0 to 0.91.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.90.0...v0.91.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
071c6aaa56 chore(deps-dev): bump rollup from 1.0.2 to 1.1.0
Bumps [rollup](https://github.com/rollup/rollup) from 1.0.2 to 1.1.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.0.2...v1.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
a10d553850 fix: expose the localnet drone port 2020-06-14 21:57:04 -07:00
Michael Vines
bc05966765 fix: resend transactions a couple times before giving up 2020-06-14 21:57:04 -07:00
Michael Vines
ea9b03c393 package-lock.json 2020-06-14 21:57:04 -07:00
dependabot[bot]
de7a102121 chore(deps-dev): bump eslint-config-prettier from 3.4.0 to 3.5.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v3.4.0...v3.5.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e9059d93e3 chore(deps-dev): bump babel-plugin-module-resolver from 3.1.1 to 3.1.2
Bumps [babel-plugin-module-resolver](https://github.com/tleunen/babel-plugin-module-resolver) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/tleunen/babel-plugin-module-resolver/releases)
- [Changelog](https://github.com/tleunen/babel-plugin-module-resolver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tleunen/babel-plugin-module-resolver/compare/v3.1.1...v3.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
0ba2affb23 chore(deps-dev): bump eslint-config-prettier from 3.3.0 to 3.4.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v3.3.0...v3.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
75078827ca chore(deps-dev): bump marked from 0.5.2 to 0.6.0
Bumps [marked](https://github.com/markedjs/marked) from 0.5.2 to 0.6.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.5.2...v0.6.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
2db8cbcbca chore(deps-dev): bump flow-bin from 0.89.0 to 0.90.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.89.0 to 0.90.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.89.0...v0.90.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
62c8e824be chore(deps-dev): bump semantic-release from 15.13.2 to 15.13.3
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.2 to 15.13.3.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.2...v15.13.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
60a9ff1092 chore(deps-dev): bump eslint-plugin-jest from 22.1.2 to 22.1.3
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.1.2 to 22.1.3.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.1.2...v22.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
1e7121c685 chore(deps-dev): bump rollup from 1.0.1 to 1.0.2
Bumps [rollup](https://github.com/rollup/rollup) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.0.1...v1.0.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e6ecb477d8 chore(deps): bump jayson from 2.1.0 to 2.1.1
Bumps [jayson](https://github.com/tedeh/jayson) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v2.1.0...v2.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
ee542f0602 chore(deps-dev): bump eslint from 5.11.1 to 5.12.0
Bumps [eslint](https://github.com/eslint/eslint) from 5.11.1 to 5.12.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.11.1...v5.12.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
09460e1795 chore(deps-dev): bump fs-file-tree from 1.0.6 to 1.0.7
Bumps [fs-file-tree](https://github.com/IonicaBizau/fs-file-tree) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/IonicaBizau/fs-file-tree/releases)
- [Commits](https://github.com/IonicaBizau/fs-file-tree/compare/1.0.6...1.0.7)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
5c1f12da01 chore(deps-dev): bump rollup from 1.0.0 to 1.0.1
Bumps [rollup](https://github.com/rollup/rollup) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v1.0.0...v1.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
af5d940355 chore(deps-dev): bump rimraf from 2.6.2 to 2.6.3
Bumps [rimraf](https://github.com/isaacs/rimraf) from 2.6.2 to 2.6.3.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Commits](https://github.com/isaacs/rimraf/compare/v2.6.2...v2.6.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
bd858ecce6 chore(deps-dev): bump rollup from 0.68.2 to 1.0.0
Bumps [rollup](https://github.com/rollup/rollup) from 0.68.2 to 1.0.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v0.68.2...v1.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
473600af55 chore(deps-dev): bump eslint-plugin-prettier from 3.0.0 to 3.0.1
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
efe2cc0cc5 chore(deps-dev): bump semantic-release from 15.13.1 to 15.13.2
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.1 to 15.13.2.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.1...v15.13.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
3af5902eb4 chore(deps-dev): bump eslint from 5.11.0 to 5.11.1
Bumps [eslint](https://github.com/eslint/eslint) from 5.11.0 to 5.11.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.11.0...v5.11.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
b07f251b06 chore(deps-dev): bump rollup from 0.68.1 to 0.68.2
Bumps [rollup](https://github.com/rollup/rollup) from 0.68.1 to 0.68.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v0.68.1...v0.68.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
42944005b5 chore(deps-dev): bump eslint from 5.10.0 to 5.11.0
Bumps [eslint](https://github.com/eslint/eslint) from 5.10.0 to 5.11.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.10.0...v5.11.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
88abaa3cc9 fix: rename getFinality to getConfirmationTime 2020-06-14 21:57:04 -07:00
Michael Vines
62c1efc955 fix: add testnetChannelEndpoint() 2020-06-14 21:57:04 -07:00
Michael Vines
b5d058e88f package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
a015df4fb0 feat: switch to beta solana release channel 2020-06-14 21:57:04 -07:00
dependabot[bot]
3c8dcbb6c7 chore(deps-dev): bump rollup from 0.68.0 to 0.68.1
Bumps [rollup](https://github.com/rollup/rollup) from 0.68.0 to 0.68.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
37eb46e84d chore(deps-dev): bump semantic-release from 15.13.0 to 15.13.1
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.13.0 to 15.13.1.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.13.0...v15.13.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
6e11ad9670 chore(deps-dev): bump rollup from 0.67.4 to 0.68.0
Bumps [rollup](https://github.com/rollup/rollup) from 0.67.4 to 0.68.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v0.67.4...v0.68.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a28e19227d chore(deps-dev): bump semantic-release from 15.12.5 to 15.13.0
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.12.5 to 15.13.0.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.12.5...v15.13.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
af836d6a6b chore(deps-dev): bump flow-bin from 0.88.0 to 0.89.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.88.0 to 0.89.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.88.0...v0.89.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
6e9a13cf1c chore(deps-dev): bump semantic-release from 15.12.4 to 15.12.5
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.12.4 to 15.12.5.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.12.4...v15.12.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
72beef6cd7 chore(deps-dev): bump prettier from 1.14.3 to 1.15.3
Bumps [prettier](https://github.com/prettier/prettier) from 1.14.3 to 1.15.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/1.14.3...1.15.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e250d4de3d chore(deps-dev): bump eslint from 5.9.0 to 5.10.0
Bumps [eslint](https://github.com/eslint/eslint) from 5.9.0 to 5.10.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.9.0...v5.10.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
d46fd83f41 fix: avoid misleading error message when solana-localnet container is not running 2020-06-14 21:57:04 -07:00
dependabot[bot]
198dde4ac1 chore(deps-dev): bump rollup-plugin-node-resolve from 3.4.0 to 4.0.0
Bumps [rollup-plugin-node-resolve](https://github.com/rollup/rollup-plugin-node-resolve) from 3.4.0 to 4.0.0.
- [Release notes](https://github.com/rollup/rollup-plugin-node-resolve/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-node-resolve/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-node-resolve/compare/v3.4.0...v4.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
666f2c2a3f chore(deps-dev): bump rollup-plugin-json from 3.0.0 to 3.1.0
Bumps [rollup-plugin-json](https://github.com/rollup/rollup-plugin-json) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/rollup/rollup-plugin-json/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-json/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-json/compare/v3.0.0...v3.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
e24d830cca chore(deps-dev): bump enzyme from 3.7.0 to 3.8.0
Bumps [enzyme](https://github.com/airbnb/enzyme) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/airbnb/enzyme/releases)
- [Changelog](https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md)
- [Commits](https://github.com/airbnb/enzyme/compare/enzyme@3.7.0...enzyme@3.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Tyera Eulberg
ea5db68640 fix: Add network parameter to localnet run 2020-06-14 21:57:04 -07:00
dependabot[bot]
3999a14bee chore(deps-dev): bump eslint-config-prettier from 3.1.0 to 3.3.0
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 3.1.0 to 3.3.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v3.1.0...v3.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
102e5c4ae5 chore(deps-dev): bump codecov from 3.0.4 to 3.1.0
Bumps [codecov](https://github.com/codecov/codecov-node) from 3.0.4 to 3.1.0.
- [Release notes](https://github.com/codecov/codecov-node/releases)
- [Commits](https://github.com/codecov/codecov-node/compare/v3.0.4...v3.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
35bcb6b413 chore(deps): bump node-fetch from 2.2.0 to 2.3.0
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/bitinn/node-fetch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.2.0...v2.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
a99540efb1 chore(deps-dev): bump rollup-plugin-babel from 3.0.3 to 3.0.7
Bumps [rollup-plugin-babel](https://github.com/rollup/rollup-plugin-babel) from 3.0.3 to 3.0.7.
- [Release notes](https://github.com/rollup/rollup-plugin-babel/releases)
- [Changelog](https://github.com/rollup/rollup-plugin-babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup-plugin-babel/compare/v3.0.3...v3.0.7)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
1dfc0e2531 chore(deps): bump ws from 6.1.0 to 6.1.2
Bumps [ws](https://github.com/websockets/ws) from 6.1.0 to 6.1.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.1.0...6.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
8dde48ac67 chore(deps-dev): bump flow-bin from 0.87.0 to 0.88.0
Bumps [flow-bin](https://github.com/flowtype/flow-bin) from 0.87.0 to 0.88.0.
- [Release notes](https://github.com/flowtype/flow-bin/releases)
- [Commits](https://github.com/flowtype/flow-bin/compare/v0.87.0...v0.88.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
60066f4a01 chore(deps): bump rpc-websockets from 4.3.3 to 4.3.5
Bumps [rpc-websockets](https://github.com/elpheria/rpc-websockets) from 4.3.3 to 4.3.5.
- [Release notes](https://github.com/elpheria/rpc-websockets/releases)
- [Commits](https://github.com/elpheria/rpc-websockets/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
849530a463 chore(deps): bump jayson from 2.0.6 to 2.1.0
Bumps [jayson](https://github.com/tedeh/jayson) from 2.0.6 to 2.1.0.
- [Release notes](https://github.com/tedeh/jayson/releases)
- [Commits](https://github.com/tedeh/jayson/compare/v2.0.6...v2.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
efe55e5fc4 chore(deps-dev): bump semantic-release from 15.9.16 to 15.12.4
Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 15.9.16 to 15.12.4.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](https://github.com/semantic-release/semantic-release/compare/v15.9.16...v15.12.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
09f32f46db chore(deps-dev): bump marked from 0.5.1 to 0.5.2
Bumps [marked](https://github.com/markedjs/marked) from 0.5.1 to 0.5.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v0.5.1...v0.5.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
9cade8c1f8 chore(deps-dev): bump rollup-plugin-node-globals from 1.2.1 to 1.4.0
Bumps [rollup-plugin-node-globals](https://github.com/calvinmetcalf/rollup-plugin-node-globals) from 1.2.1 to 1.4.0.
- [Release notes](https://github.com/calvinmetcalf/rollup-plugin-node-globals/releases)
- [Commits](https://github.com/calvinmetcalf/rollup-plugin-node-globals/compare/v1.2.1...v1.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
2e55dc71f7 chore(deps-dev): bump eslint-plugin-jest from 22.1.0 to 22.1.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 22.1.0 to 22.1.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v22.1.0...v22.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
dependabot[bot]
2a06419a7a chore(deps-dev): bump rollup from 0.67.3 to 0.67.4
Bumps [rollup](https://github.com/rollup/rollup) from 0.67.3 to 0.67.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v0.67.3...v0.67.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2020-06-14 21:57:04 -07:00
Michael Vines
7ef329cd17 refactor: add other testnet urls for easy manual selection 2020-06-14 21:57:04 -07:00
Greg Fitzgerald
6ea01eb90c Fix JSON RPC API link 2020-06-14 21:57:04 -07:00
Manny
9780e4c5a7 code highlight style change 2020-06-14 21:57:04 -07:00
Michael Vines
6b3eeb5504 fix: bpf programs are now shared objects 2020-06-14 21:57:04 -07:00
Manuel
83d79afb96 minor css fix 2020-06-14 21:57:04 -07:00
Manuel
f5138fda91 custom css theme 2020-06-14 21:57:04 -07:00
Michael Vines
d02367d15b chore: package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
97f5ef0b7e fix: add esdoc css theme placeholder 2020-06-14 21:57:04 -07:00
Michael Vines
2bab37a34d chore: rebuild noop.o to catch up to bpf-sdk changes 2020-06-14 21:57:04 -07:00
Michael Vines
bfefb2403c chore: update eslint-plugin-jest 2020-06-14 21:57:04 -07:00
Michael Vines
e17d00d4cd fix: include sourcemaps 2020-06-14 21:57:04 -07:00
Michael Vines
cd4da00a68 fix: avoid packaging bpf-sdk binaries that the user downloads 2020-06-14 21:57:04 -07:00
Michael Vines
5271f4e157 fix: remove cwd assumption 2020-06-14 21:57:04 -07:00
Michael Vines
b67581700b fix: look for the default release channel harder 2020-06-14 21:57:04 -07:00
Michael Vines
96133216e5 fix: derive default release channel from package.json 2020-06-14 21:57:04 -07:00
Michael Vines
7437c3f694 ci: remove automerge label on CI failure 2020-06-14 21:57:04 -07:00
Michael Vines
f1db055199 fix: flowtype catchup 2020-06-14 21:57:04 -07:00
Michael Vines
2962eef2c7 fix: add sendAndConfirmRawTransaction() 2020-06-14 21:57:04 -07:00
Michael Vines
9f0713d3a7 chore: update flow-bin 2020-06-14 21:57:04 -07:00
Michael Vines
cd48ae367b ci: correct rule name 2020-06-14 21:57:04 -07:00
Michael Vines
4acccb3976 fix: add flowtype for SignaturePubkeyPair 2020-06-14 21:57:04 -07:00
Michael Vines
508678a441 ci: tweak .mergify.yml 2020-06-14 21:57:04 -07:00
Michael Vines
ab00797516 ci: add automerge label 2020-06-14 21:57:04 -07:00
Michael Vines
0576415b89 ci: add mergify.io 2020-06-14 21:57:04 -07:00
Michael Vines
0026b44531 feat: add support for partial Transaction signing 2020-06-14 21:57:04 -07:00
Michael Vines
ac4bfaad32 feat: add sendRawTransaction() 2020-06-14 21:57:04 -07:00
Michael Vines
aee383eaec refactor: add constant for max Transaction size 2020-06-14 21:57:04 -07:00
Michael Vines
f120ef21ee fix: adapt to SolKeyedAccount name change 2020-06-14 21:57:04 -07:00
Michael Vines
e4d1497c9d fix: surface system_program info logs by default 2020-06-14 21:57:04 -07:00
Michael Vines
b175a53f4b fix: default transaction fee is now 1 (was 0) 2020-06-14 21:57:04 -07:00
Michael Vines
916a5eb3d2 fix: flatten symlinks in bpf-sdk/ as |npm pack| strips all symlinks 2020-06-14 21:57:04 -07:00
Michael Vines
8e3785989e fix: update some devDependencies 2020-06-14 21:57:04 -07:00
Michael Vines
f032e45bcd chore: delete stray swap file 2020-06-14 21:57:04 -07:00
Michael Vines
fa7e2722d1 fix: support multiple Transaction signatures 2020-06-14 21:57:04 -07:00
Michael Vines
5311ed7f68 fix: catch up to sol_deserialize() signature change 2020-06-14 21:57:04 -07:00
Michael Vines
921ae797d8 fix: stabilize tests 2020-06-14 21:57:04 -07:00
Michael Vines
44047a8d63 fix: adapt transaction wire format for multiple signatures 2020-06-14 21:57:04 -07:00
Michael Vines
3ef167f8fa chore: package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
67ccac9418 fix: catch up to account field renaming 2020-06-14 21:57:04 -07:00
Michael Vines
1f7b8f417d feat: switch to edge release channel 2020-06-14 21:57:04 -07:00
Michael Vines
680d2d18ea refactor: use env to locate bash 2020-06-14 21:57:04 -07:00
Tyera Eulberg
5ce16c2cbb fix: return signature from transfer transactions 2020-06-14 21:57:04 -07:00
Jack May
04962c5cec chore: remove elfy from rollup 2020-06-14 21:57:04 -07:00
Michael Vines
64658c33ee docs: update examples 2020-06-14 21:57:04 -07:00
Michael Vines
f20013a010 fix: update to 0.10.1 bpf sdk 2020-06-14 21:57:04 -07:00
jackcmay
71328e9420 fix: Pass full BPF ELF (#60) 2020-06-14 21:57:04 -07:00
Michael Vines
ee25e0278c refactor: don't pretty twice during ok 2020-06-14 21:57:04 -07:00
Michael Vines
1d6abb17cf refactor: employ prettier 2020-06-14 21:57:04 -07:00
Michael Vines
9a043344d5 fix: sendAndConfirmTransaction now returns the transaction signature 2020-06-14 21:57:04 -07:00
Michael Vines
c424b48cd2 fix(flow): add transaction instructions field 2020-06-14 21:57:04 -07:00
Michael Vines
4c18dabd62 test: add retries to account change notification test 2020-06-14 21:57:04 -07:00
Michael Vines
cbcb774c82 fix: use secure websocket when https JSON RPC endpoint is requested 2020-06-14 21:57:04 -07:00
Michael Vines
452fd1b785 fix: correct default websocket port 2020-06-14 21:57:04 -07:00
Michael Vines
8468d3ebd1 fix: limit concurrent Loads to improve stability 2020-06-14 21:57:04 -07:00
Michael Vines
7b1130b5bf fix: import last id failure error message 2020-06-14 21:57:04 -07:00
Michael Vines
f2f856356b fix: include rpc info logs by default 2020-06-14 21:57:04 -07:00
Michael Vines
f15dd68604 fix: validate bpf example 2020-06-14 21:57:04 -07:00
Michael Vines
6ff9d1a650 refactor: rename env var 2020-06-14 21:57:04 -07:00
Michael Vines
b1e811473a fix: add clang install info 2020-06-14 21:57:04 -07:00
Michael Vines
add7a00ace fix: update bpf sdk header 2020-06-14 21:57:04 -07:00
Michael Vines
bb71529fe0 fix: permit RUST_LOG to be overridden 2020-06-14 21:57:04 -07:00
Michael Vines
224f8b17e7 fix: include solana_bpf_loader in default logging 2020-06-14 21:57:04 -07:00
Michael Vines
0fbf024c8c fix: improve retry logic on AccountInUse 2020-06-14 21:57:04 -07:00
Michael Vines
33c59b73b4 fix: finalize/spawn in same transaction 2020-06-14 21:57:04 -07:00
Michael Vines
4897ed0872 fix: add BpfLoader flow definition 2020-06-14 21:57:04 -07:00
Michael Vines
99b18dbfef fix: ship src/ again 2020-06-14 21:57:04 -07:00
Michael Vines
d328d23faa feat: add bpf-c-noop example 2020-06-14 21:57:04 -07:00
Michael Vines
866e8d6892 chore: fetch bpf-sdk before publishing 2020-06-14 21:57:04 -07:00
Michael Vines
0d0f2a729b chore: delete .npmignore, use package whitelist instead 2020-06-14 21:57:04 -07:00
Michael Vines
79066b7d26 chore: add script to fetch bpf sdk 2020-06-14 21:57:04 -07:00
Michael Vines
66fbd4338f chore: update package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
f3242c12a6 fix(flow): correct onAccountChange prototype 2020-06-14 21:57:04 -07:00
Michael Vines
66e572f2a8 fix(flow): correct removeAccountChangeListener prototype 2020-06-14 21:57:04 -07:00
Michael Vines
e7097340f2 feat: add account change notifications 2020-06-14 21:57:04 -07:00
Michael Vines
9839c087d7 fix: update budget wire format 2020-06-14 21:57:04 -07:00
Michael Vines
ec2a3690b2 fix: update program ids 2020-06-14 21:57:04 -07:00
Michael Vines
ad43705124 fix: expose websocket 2020-06-14 21:57:04 -07:00
Michael Vines
910ab671dc style: remove cicular imports 2020-06-14 21:57:04 -07:00
Michael Vines
55b2b4f598 chore: upgrade flow 2020-06-14 21:57:04 -07:00
Michael Vines
1d226a2e16 chore: package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
40c68f3fcb fix: retry better 2020-06-14 21:57:04 -07:00
Michael Vines
ce6e840e03 fix: block until the JSON RPC API is available 2020-06-14 21:57:04 -07:00
Jack May
f871b0410a fix: Remove fs dep, bpf_loader now takes ELF as bytes 2020-06-14 21:57:04 -07:00
Michael Vines
224d929d4d docs: correct API params 2020-06-14 21:57:04 -07:00
Michael Vines
17720766df chore: update package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
4a39d25127 fix: remove circular imports 2020-06-14 21:57:04 -07:00
Michael Vines
99e6b44d03 fix: expose token program instructions 2020-06-14 21:57:04 -07:00
jackcmay
e1c2498f74 feat: Submit program load transactions in parallel (#39)
feat: Submit program load transactions in parallel
2020-06-14 21:57:04 -07:00
Michael Vines
bb0730f86e fix(flow): add Transaction.add() 2020-06-14 21:57:04 -07:00
Michael Vines
378e766178 test: timeout++ 2020-06-14 21:57:04 -07:00
Michael Vines
f168cdfd70 fix: multiple transaction instructions are now supported 2020-06-14 21:57:04 -07:00
Michael Vines
e50b705de3 fix: remove decimal string support from PublicKey ctor 2020-06-14 21:57:04 -07:00
jackcmay
02787df7b9 Add BpfLoader (#34)
feat: Add BpfLoader
2020-06-14 21:57:04 -07:00
Michael Vines
b8d586c67e feat: add room in the API for Transactions with multiple Instructions 2020-06-14 21:57:04 -07:00
Michael Vines
90c9df15ef fix: retry transactions on AccountInUse errors 2020-06-14 21:57:04 -07:00
Michael Vines
96c685eb5d fix: PublicKey.toBuffer() now zero pads correctly 2020-06-14 21:57:04 -07:00
Michael Vines
5a42cadefe fix: fail faster on transaction errors 2020-06-14 21:57:04 -07:00
Michael Vines
0510dbae6c fix(flow): add sendAndConfirmTransaction 2020-06-14 21:57:04 -07:00
Michael Vines
bc097ec04b test: add confirmation retries when testing live 2020-06-14 21:57:04 -07:00
Michael Vines
70d22476cf fix: report elapsed duration on confirmation failure for better debug 2020-06-14 21:57:04 -07:00
Michael Vines
779b5c38a2 test: add missing awaits 2020-06-14 21:57:04 -07:00
Michael Vines
ad7c0bec64 fix: export sendAndConfirmTransaction 2020-06-14 21:57:04 -07:00
Michael Vines
83d12f50df fix: add lastId caching 2020-06-14 21:57:04 -07:00
Michael Vines
aaf86ff2ba test: bump jest timeout 2020-06-14 21:57:04 -07:00
Michael Vines
9c8cc0bd24 fix: wait for the next lastId before sending a new transaction 2020-06-14 21:57:04 -07:00
Michael Vines
d9b98918b6 Revert "test: disable flaky test until it can be debugged"
This reverts commit 75b52d0fa5bdeb3b49d91b7c227036b9acd0d451.
2020-06-14 21:57:04 -07:00
Michael Vines
00890ef9e0 fix: add Token::setOwner 2020-06-14 21:57:04 -07:00
Michael Vines
5cfe43b980 fix: use correct programId when creating a custom Token 2020-06-14 21:57:04 -07:00
Michael Vines
9d63f28cdf fix(flow): correct newAccount prototype 2020-06-14 21:57:04 -07:00
Michael Vines
c848d64e3c fix(flow): add revoke() 2020-06-14 21:57:04 -07:00
Michael Vines
220589eb5d fix(flow): add missing optional programId arg 2020-06-14 21:57:04 -07:00
Michael Vines
757cf3ec16 fix: catchup to upstream loader changes 2020-06-14 21:57:04 -07:00
Michael Vines
00fd0fc435 feat: support user-supplied Token programs 2020-06-14 21:57:04 -07:00
Michael Vines
a9fc62d891 feat: expose ERC20 token originalAmount field 2020-06-14 21:57:04 -07:00
Michael Vines
b66ca1a84d chore: remove stray log 2020-06-14 21:57:04 -07:00
Michael Vines
cace23bd0e test: disable flaky test until it can be debugged 2020-06-14 21:57:04 -07:00
Michael Vines
011a2abd0c fix: catch up to recent upstream changes 2020-06-14 21:57:04 -07:00
Michael Vines
972f68b16e fix: log bank better 2020-06-14 21:57:04 -07:00
Michael Vines
96242110bf fix: add Token flowtype declarations 2020-06-14 21:57:04 -07:00
Michael Vines
300da5b626 docs: up -> down 2020-06-14 21:57:04 -07:00
Michael Vines
cc68af7bb6 fix: quiet uninteresting log messages 2020-06-14 21:57:04 -07:00
Michael Vines
c931127748 fix: add flow definition for load() 2020-06-14 21:57:04 -07:00
Michael Vines
e739ac1424 feat: add deploy command 2020-06-14 21:57:04 -07:00
Michael Vines
3f2d1c4352 fix: logs are now followed though a localnet restart 2020-06-14 21:57:04 -07:00
Michael Vines
1436eca398 feat: add unstable API for dynamic program loading 2020-06-14 21:57:04 -07:00
Michael Vines
715556a611 test: add Layout.rustString() 2020-06-14 21:57:04 -07:00
Michael Vines
a2d785398c fix: restart flow server explicitly to avoid false errors from a lingering server 2020-06-14 21:57:04 -07:00
Michael Vines
3a5a67bd5e fix: update to post-v0.9 Transaction wire format 2020-06-14 21:57:04 -07:00
Michael Vines
6543248b82 fix: follow log 2020-06-14 21:57:04 -07:00
Michael Vines
1dade364cc test: bump jest timeout 2020-06-14 21:57:04 -07:00
Michael Vines
d40712999c test: add delegate mismatch test case 2020-06-14 21:57:04 -07:00
Michael Vines
ad2fa3ceaf feat: Add ERC20-like Token 2020-06-14 21:57:04 -07:00
Michael Vines
ab2d6c9ede test: add .toString() test 2020-06-14 21:57:04 -07:00
Michael Vines
17b73306fe refactor: use buffer-layout to clean up buffer encoding 2020-06-14 21:57:04 -07:00
Michael Vines
a596e99b4a feat: Add sendAndConfirmTransaction 2020-06-14 21:57:04 -07:00
Michael Vines
feab984cf1 docs: d 2020-06-14 21:57:04 -07:00
Michael Vines
394d63891b fix(solana-localnet): |logs| now works correctly 2020-06-14 21:57:04 -07:00
Michael Vines
f9cf7006df fix: avoid Buffer(), use Buffer.alloc() instead 2020-06-14 21:57:04 -07:00
Michael Vines
d3d1bce4c2 feat: add solana-localnet program 2020-06-14 21:57:04 -07:00
Michael Vines
6b1d1b41b5 docs: add semantic-release badge 2020-06-14 21:57:04 -07:00
Michael Vines
48c3ea8106 docs: correct toBuffer comment 2020-06-14 21:57:04 -07:00
Michael Vines
95efc7c3b0 fix: support creating a PublicKey from a base58 string 2020-06-14 21:57:04 -07:00
Michael Vines
4b2305434e refactor: remove magic number 2020-06-14 21:57:04 -07:00
Michael Vines
65efea67dc chore: ignore swap files 2020-06-14 21:57:04 -07:00
Michael Vines
e090e7b600 fix: expose Buffer to bundlers 2020-06-14 21:57:04 -07:00
Michael Vines
aa1d6ba4d4 fix: zero pad correctly 2020-06-14 21:57:04 -07:00
Michael Vines
4f1112534d fix: remove duplicate PublicKey flow definition 2020-06-14 21:57:04 -07:00
Michael Vines
a878cdccf3 style: add convenience script to run all examples 2020-06-14 21:57:04 -07:00
Michael Vines
ca6965f8c2 feat: wrap public key in a class 2020-06-14 21:57:04 -07:00
Michael Vines
2c3208090c docs: remove stale release process 2020-06-14 21:57:04 -07:00
Michael Vines
70fb01ddd6 test: update test to match AccountInfo userdata refactor 2020-06-14 21:57:04 -07:00
Michael Vines
a2955a2a2e docs: add more details 2020-06-14 21:57:04 -07:00
Michael Vines
cbbb21650f Fix bold 2020-06-14 21:57:04 -07:00
Michael Vines
935d520ec9 refactor: AccountInfo userdata is now never null 2020-06-14 21:57:04 -07:00
Michael Vines
0cc621887b chore: add semantic-git-commit-cli config file 2020-06-14 21:57:04 -07:00
Michael Vines
b025dd82dc chore: ignore module.flow.js, it's not expected to lint cleanly 2020-06-14 21:57:04 -07:00
Michael Vines
c7100964a8 fix: add missing type exports 2020-06-14 21:57:04 -07:00
Michael Vines
aceb29f50f Chore: remove npm provider 2020-06-14 21:57:04 -07:00
Michael Vines
e3d4872b67 Docs: Add link 2020-06-14 21:57:04 -07:00
Michael Vines
7423943801 chore: initial semantic-release configuration 2020-06-14 21:57:04 -07:00
Michael Vines
721ce794e8 feat(flow): add initial flow library definition 2020-06-14 21:57:04 -07:00
Michael Vines
fae9624eb0 0.0.7 2020-06-14 21:57:04 -07:00
Michael Vines
d3a593de4a 0.0.7-3 2020-06-14 21:57:04 -07:00
Greg Fitzgerald
87e86c1cc8 Rename TimeStamp to Timestamp 2020-06-14 21:57:04 -07:00
Michael Vines
2824779699 Fix lint fix 2020-06-14 21:57:04 -07:00
Michael Vines
a3aecba1d0 Improve rpc result validation 2020-06-14 21:57:04 -07:00
Michael Vines
92af6e3341 Add getSignatureStatus() 2020-06-14 21:57:04 -07:00
Michael Vines
8ccbe888d3 Add breadcrumbs to some other available endpoints 2020-06-14 21:57:04 -07:00
Michael Vines
e3703cec29 Add BudgetProgram.payOnBoth 2020-06-14 21:57:04 -07:00
Michael Vines
63382b7e6b Add basic system-program tests 2020-06-14 21:57:04 -07:00
Michael Vines
ffbc23684c Improve budget-program tests 2020-06-14 21:57:04 -07:00
Michael Vines
a15a2424f4 s/contract/program/g 2020-06-14 21:57:04 -07:00
Michael Vines
85c1023861 Update babel-core and jest 2020-06-14 21:57:04 -07:00
Michael Vines
27fbc8bb72 Add link to tic-tac-toe 2020-06-14 21:57:04 -07:00
Michael Vines
f26f1ce64a Update dependencies 2020-06-14 21:57:04 -07:00
Michael Vines
117cf7f287 0.0.7-2 2020-06-14 21:57:04 -07:00
Michael Vines
41e9cd3e99 Ignore deploy/ 2020-06-14 21:57:04 -07:00
Michael Vines
b0c109f586 Remove coveralls remnants 2020-06-14 21:57:04 -07:00
Michael Vines
d350ea2764 0.0.7-1 2020-06-14 21:57:04 -07:00
Michael Vines
6ad116fd60 s/prepublish/prepare/ 2020-06-14 21:57:04 -07:00
Michael Vines
5ce82fe50b 0.0.7-0 2020-06-14 21:57:04 -07:00
Michael Vines
4a484158f3 s/contract_id/program_id/g 2020-06-14 21:57:04 -07:00
Michael Vines
4f2f41d25f s/contract_id/program_id 2020-06-14 21:57:04 -07:00
Michael Vines
e249e4f5c7 Add npm downloads badge 2020-06-14 21:57:04 -07:00
Michael Vines
b37706469b Add david-dm badges 2020-06-14 21:57:04 -07:00
Michael Vines
38d2ea58a5 Clean up badges 2020-06-14 21:57:04 -07:00
Michael Vines
18016444f8 API documentation updates 2020-06-14 21:57:04 -07:00
Michael Vines
914c54e071 Docs 2020-06-14 21:57:04 -07:00
Michael Vines
7148b0f7d8 Add getAccountInfo 2020-06-14 21:57:04 -07:00
Michael Vines
da2496872b Catch up to latest Transaction ABI changes 2020-06-14 21:57:04 -07:00
Michael Vines
d009e7e91b s/contract/program/ 2020-06-14 21:57:04 -07:00
Michael Vines
864940f63b Add budget example 2020-06-14 21:57:04 -07:00
Michael Vines
a96ab72e8e Add support for built-in contracts 2020-06-14 21:57:04 -07:00
Michael Vines
7dad281f69 Create TransferTokensTransaction class 2020-06-14 21:57:04 -07:00
Michael Vines
cc4019f56f Update to v0.0.6 2020-06-14 21:57:04 -07:00
Michael Vines
8ed4be1995 0.0.6 2020-06-14 21:57:04 -07:00
Michael Vines
851ca7acc9 Catch up to solana 0.8 Transaction wire format changes 2020-06-14 21:57:04 -07:00
Michael Vines
fa5f3d81fd Update airdrop return type 2020-06-14 21:57:04 -07:00
Michael Vines
ad5390bbae Switch testnet url 2020-06-14 21:57:04 -07:00
Michael Vines
29148ef898 Add preliminary sendTokens() implementation 2020-06-14 21:57:04 -07:00
Michael Vines
1c365dc31c Add decode() 2020-06-14 21:57:04 -07:00
Michael Vines
552f2f137a Update README.md 2020-06-14 21:57:04 -07:00
Michael Vines
db0447a628 Add test:live script 2020-06-14 21:57:04 -07:00
Michael Vines
0aa5d2c71a Add a couple of negative tests 2020-06-14 21:57:04 -07:00
Michael Vines
9da3188a2d eslint: Suppress 'JestMockFn' is not defined 2020-06-14 21:57:04 -07:00
Michael Vines
92e602bd87 Mock Connection tests 2020-06-14 21:57:04 -07:00
Michael Vines
573dd99b31 Doc tweak 2020-06-14 21:57:04 -07:00
Michael Vines
9dddb84599 Shuffle badges 2020-06-14 21:57:04 -07:00
Michael Vines
4184845997 De-. 2020-06-14 21:57:04 -07:00
Michael Vines
7a618945f6 Add API documentation 2020-06-14 21:57:04 -07:00
Michael Vines
7acaf84c12 Look for more lint 2020-06-14 21:57:04 -07:00
Michael Vines
2ccabce064 Reduce rollup warnings 2020-06-14 21:57:04 -07:00
Michael Vines
4ca59533a4 Link to example-webwallet 2020-06-14 21:57:04 -07:00
Michael Vines
641e2f9f85 0.0.4 2020-06-14 21:57:04 -07:00
Michael Vines
41a658c336 Add most of sendTokens() implementation 2020-06-14 21:57:04 -07:00
Michael Vines
ac976a66f0 package-lock.json update 2020-06-14 21:57:04 -07:00
Michael Vines
3ea2ffc89d Trim eslint plugins 2020-06-14 21:57:04 -07:00
Michael Vines
f3dff59d35 Fix up external dependency bundling 2020-06-14 21:57:04 -07:00
Michael Vines
4fef4356a4 Fill out dependencies 2020-06-14 21:57:04 -07:00
Michael Vines
16ee48b1ad Throw if endpoind is not provided 2020-06-14 21:57:04 -07:00
Michael Vines
45360abc87 Add get-balance html example 2020-06-14 21:57:04 -07:00
Michael Vines
3fb92bd062 Get flow-typed out of postinstall 2020-06-14 21:57:04 -07:00
Michael Vines
392672a5a7 Implement requestAirdrop 2020-06-14 21:57:04 -07:00
Michael Vines
b33633fb9c Minor text update 2020-06-14 21:57:04 -07:00
Michael Vines
c55d21626f Update README.md 2020-06-14 21:57:04 -07:00
Michael Vines
81f3efb436 Flow index.js 2020-06-14 21:57:04 -07:00
Michael Vines
a6154ea649 Refresh package-lock.json 2020-06-14 21:57:04 -07:00
Michael Vines
4df189513e Add Connection class 2020-06-14 21:57:04 -07:00
Michael Vines
79ab826678 Lint tests 2020-06-14 21:57:04 -07:00
Michael Vines
96f8a8620d Activate flow 2020-06-14 21:57:04 -07:00
Michael Vines
bbb8055243 Add external script link reference 2020-06-14 21:57:04 -07:00
Michael Vines
015aff0a4c Remove coveralls 2020-06-14 21:57:04 -07:00
Michael Vines
4f396e60fe Add codecov.io 2020-06-14 21:57:04 -07:00
Michael Vines
36df1b1e5e Add local browser example 2020-06-14 21:57:04 -07:00
Michael Vines
ad95cb5c32 0.0.3 2020-06-14 21:57:04 -07:00
Michael Vines
efeb2f55c3 Run lint/flow/doc/examples in CI 2020-06-14 21:57:04 -07:00
Michael Vines
5a21b2f9fb Fix package main 2020-06-14 21:57:04 -07:00
Michael Vines
0dcd261c38 Trim npm package contents 2020-06-14 21:57:04 -07:00
Michael Vines
ca3582ea5e 0.0.2 2020-06-14 21:57:04 -07:00
Michael Vines
0575148594 Add more documentation 2020-06-14 21:57:04 -07:00
Michael Vines
bf83497bbc Support cjs, esm and iife modules 2020-06-14 21:57:04 -07:00
Michael Vines
5a0206bcfe Add Account class 2020-06-14 21:57:04 -07:00
Michael Vines
0f1f52e3e4 Adjust eslint configuration 2020-06-14 21:57:04 -07:00
Michael Vines
1f1fbd84ff Initial version 2020-06-14 21:57:04 -07:00
Michael Vines
86e32a3f31 Add npm/github deployment 2020-06-14 21:57:04 -07:00
Michael Vines
1ba4492054 Add npm badge 2020-06-14 21:57:04 -07:00
Michael Vines
cf7f048f65 Add esdoc boilerplate 2020-06-14 21:57:04 -07:00
Michael Vines
7e109f22c2 Project boilerplate from eunikitin/modern-package-boilerplate 2020-06-14 21:57:04 -07:00
Ryo Onodera
a39df7ee5d Fix udp port check retry and check all udp ports (#10385)
* Don't start if udp port is really closed

* Fully check all udp ports

* Remove test code.......

* Add tests and adjust impl a bit

* Add comment

* Move comment a bit

* Move a bit

* clean ups
2020-06-15 07:36:08 +09:00
Michael Vines
0d38257dbb Fix perf-libs version detection (#10571)
automerge
2020-06-14 12:35:06 -07:00
Michael Vines
8ac6b7a83f Document removing the pre-release checkmark 2020-06-14 10:32:07 -07:00
Michael Vines
edb81b5007 Add gitbook release documentation 2020-06-14 09:52:13 -07:00
Michael Vines
a323fe9df6 Add more release docs (#10570) 2020-06-14 09:49:56 -07:00
Michael Vines
f717010fa5 Update RELEASE.md (#10569) 2020-06-14 09:11:21 -07:00
Ryo Onodera
1343d0eff7 Use git diff instead of git show for --check (#10566) 2020-06-14 21:24:10 +09:00
Ryo Onodera
f5912f3633 Clean up test-sanity.sh a bit (#10565) 2020-06-14 21:16:19 +09:00
Ryo Onodera
f1131dfbbb Check the whole range of commits in the topic branch (#10560)
* Check the whole range of commits in the topic branch

* Fix shellcheck

* Debug...

* Ensure to update to the latest of the base branch...
2020-06-14 18:15:46 +09: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
Michael Vines
07e8e8af38 Remove trailing whitespace (#10554)
automerge
2020-06-13 14:48:27 -07:00
R. M. Shea
48febf153b Change documentation introduction to indicate Foundation IP transfer (#10440) 2020-06-13 14:41:05 -07:00
Michael Vines
9e0b90f331 commitlint now works in web3.js/ (#10552)
automerge
2020-06-13 14:13:47 -07:00
Jack May
b6a9573748 Route all loader messages to log collector (#10528) 2020-06-13 13:20:08 -07:00
dependabot-preview[bot]
e5a2c75fab Bump serde_yaml from 0.8.12 to 0.8.13
Bumps [serde_yaml](https://github.com/dtolnay/serde-yaml) from 0.8.12 to 0.8.13.
- [Release notes](https://github.com/dtolnay/serde-yaml/releases)
- [Commits](https://github.com/dtolnay/serde-yaml/compare/0.8.12...0.8.13)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-13 09:48:15 -07:00
Michael Vines
a13b72c59c Allow any branch 2020-06-12 22:29:25 -07:00
Michael Vines
8f0e301aa2 Merge notifications 2020-06-12 22:21:28 -07:00
dependabot-preview[bot]
a3a8e8775c [Security] Bump websocket-extensions from 0.1.3 to 0.1.4 in /explorer
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4. **This update includes a security fix.**
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-12 22:10:58 -07:00
Michael Vines
f3965c3eb7 Add commitlint support 2020-06-12 22:10:44 -07:00
dependabot-preview[bot]
483fb86b06 Bump @types/react from 16.9.23 to 16.9.36 in /explorer
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.23 to 16.9.36.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-12 20:26:14 -07:00
dependabot-preview[bot]
4d31d799bf Bump @react-hook/debounce from 2.0.5 to 3.0.0 in /explorer
Bumps [@react-hook/debounce](https://github.com/jaredLunde/react-hook) from 2.0.5 to 3.0.0.
- [Release notes](https://github.com/jaredLunde/react-hook/releases)
- [Commits](https://github.com/jaredLunde/react-hook/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-12 20:26:03 -07:00
Michael Vines
25d72fbed5 Export explorer/ into the real explorer repository 2020-06-12 19:32:35 -07:00
Greg Fitzgerald
8dd5384d6d Split commitment module (#10541)
automerge
2020-06-12 17:16:10 -07:00
Michael Vines
b7da3115dd Build release artifacts less frequently 2020-06-12 17:00:29 -07:00
Michael Vines
69c0649988 Enable cron and api builds 2020-06-12 16:57:05 -07:00
Michael Vines
3bb908a78b Prevent .travis changes from affecting buildkite builds 2020-06-12 16:49:55 -07:00
Michael Vines
f54c049b43 Add FdGYQ... to non-circulation withdrawer authority list (#10542)
automerge
2020-06-12 16:45:20 -07:00
Michael Vines
fd928f4178 Add empty workspace 2020-06-12 16:32:05 -07:00
Justin Starry
94a5c47861 Add incinerator transaction to cache 2020-06-12 16:32:05 -07:00
Justin Starry
96c02eb436 Cache token supply transactions 2020-06-12 16:32:05 -07:00
Justin Starry
81292253b5 Remove duplicate information in create account w seed details section 2020-06-12 16:32:05 -07:00
Justin Starry
d00da9e4b7 Update src/components/TransactionDetails.tsx
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-06-12 16:32:05 -07:00
Justin Starry
183095feac Display recent blockhash if not a nonce transaction 2020-06-12 16:32:05 -07:00
Justin Starry
d8f3081b11 Rename blockhash label to nonce to reduce ambiguity 2020-06-12 16:32:05 -07:00
Justin Starry
8b95be0ee4 Remove clusterUrl url param 2020-06-12 16:32:05 -07:00
Justin Starry
03f7d28aff Remove all but cluster url param when navigating 2020-06-12 16:32:05 -07:00
Justin Starry
d5421266f5 Reorder TopAccountsCard.tsx 2020-06-12 16:32:05 -07:00
Tyera Eulberg
851c0863dc Default top-account filter to circulating 2020-06-12 16:32:05 -07:00
Justin Starry
6c45729694 Move top accounts to supply page and add filter 2020-06-12 16:32:05 -07:00
Justin Starry
16b0ee0a21 Improve background color contrast 2020-06-12 16:32:05 -07:00
Justin Starry
9b602edc7a Fix pending transaction error due to missing timestamp 2020-06-12 16:32:05 -07:00
Tyera Eulberg
3f12bf6f52 Default top accounts to all accounts 2020-06-12 16:32:05 -07:00
Justin Starry
a15ea32f16 Fix unnecessary reload on supply page 2020-06-12 16:32:05 -07:00
Justin Starry
7e2eefad3e Add disclaimer stating oldest available slot (#136) 2020-06-12 16:32:05 -07:00
Justin Starry
e962d40815 Fix bug causing eager fetching of rich list 2020-06-12 16:32:05 -07:00
Justin Starry
94531f0879 Add result and details link to account history table 2020-06-12 16:32:05 -07:00
Justin Starry
612ef1bc10 Fix format 2020-06-12 16:32:05 -07:00
Justin Starry
05d2bf21d2 Explicitly move copy tooltip to the right 2020-06-12 16:32:05 -07:00
Justin Starry
62e330213f Display timestamp unavailable 2020-06-12 16:32:05 -07:00
Justin Starry
d842d161cf Add top accounts page 2020-06-12 16:32:05 -07:00
Justin Starry
c5dcc3c378 Improve transaction details page copy 2020-06-12 16:32:05 -07:00
Justin Starry
406f35edfa Add supply stats page 2020-06-12 16:32:05 -07:00
Justin Starry
2312658492 Account history feed 2020-06-12 16:32:05 -07:00
Justin Starry
27650572dd Display transaction timestamp in details view 2020-06-12 16:32:05 -07:00
Justin Starry
5946817978 Show transaction history for deleted accounts 2020-06-12 16:32:05 -07:00
Justin Starry
7d00398662 Update web3 to 0.49.4 2020-06-12 16:32:05 -07:00
Justin Starry
d1c6a8f60b Update web3 to 0.43.9 2020-06-12 16:32:05 -07:00
Justin Starry
23637d55b2 Make lockup time less ambiguous 2020-06-12 16:32:05 -07:00
Justin Starry
5176a29955 Change copy for stake status 2020-06-12 16:32:05 -07:00
Justin Starry
3e2538919f Spruce up stake account details page 2020-06-12 16:32:05 -07:00
Justin Starry
1f883c88e5 Use solana fork of create-react-app buildpack 2020-06-12 16:32:05 -07:00
Justin Starry
4d94de92c5 Use authority in copy, hide default lockup info 2020-06-12 16:32:05 -07:00
Justin Starry
26e4767fdd Use wasm to decode stake account 2020-06-12 16:32:05 -07:00
Justin Starry
29ec98d0a1 Add account details page 2020-06-12 16:32:05 -07:00
Justin Starry
59288117b9 Remove source tracking for addresses and signatures 2020-06-12 16:32:05 -07:00
Justin Starry
595f3ebe14 Bump web3 to v0.49.0 2020-06-12 16:32:05 -07:00
Justin Starry
b33d7cd893 Add support for more system instructions 2020-06-12 16:32:05 -07:00
Justin Starry
2d00502354 Add stake instruction support 2020-06-12 16:32:05 -07:00
Justin Starry
47acdfebff Move system ix details cards 2020-06-12 16:32:05 -07:00
Justin Starry
0df52938b2 Add key index to tx instructions 2020-06-12 16:32:05 -07:00
Justin Starry
01b99a0570 Add support for more system instruction types 2020-06-12 16:32:05 -07:00
Justin Starry
7eb792a0cc Show blockhash in transaction details 2020-06-12 16:32:05 -07:00
Justin Starry
13af01dcc4 Refactor instruction details components 2020-06-12 16:32:05 -07:00
Justin Starry
285ae1481f Center loading card 2020-06-12 16:32:05 -07:00
Justin Starry
b68dc5cf85 Fix false negative not found response 2020-06-12 16:32:05 -07:00
Justin Starry
e31b30c595 Fix bad system instruction type handling 2020-06-12 16:32:05 -07:00
Justin Starry
6c8a5747f7 Renames 2020-06-12 16:32:05 -07:00
Justin Starry
cfa0c20910 Support plural paths for tx details 2020-06-12 16:32:05 -07:00
Justin Starry
f2a034f938 Fix infinite update loop 2020-06-12 16:32:05 -07:00
Justin Starry
42225446c4 UX improvements 2020-06-12 16:32:05 -07:00
Justin Starry
484a4db626 Add transaction details page 2020-06-12 16:32:05 -07:00
Justin Starry
9f26cbbbeb Bump web3 to v0.47.1 2020-06-12 16:32:05 -07:00
Justin Starry
6eff7f35c9 Refactor transaction provider 2020-06-12 16:32:05 -07:00
Justin Starry
f3e677eaab Call getConfirmedTransaction instead of getConfirmedBlock for tx details 2020-06-12 16:32:05 -07:00
Justin Starry
60b0eb2e57 Fix mergify condition 2020-06-12 16:32:05 -07:00
Justin Starry
04677cb831 Use react-router Switch to control visible content 2020-06-12 16:32:05 -07:00
Justin Starry
d629e67b32 Clean up app component 2020-06-12 16:32:05 -07:00
Justin Starry
8e081c70f2 Add mergify config 2020-06-12 16:32:05 -07:00
Justin Starry
1172d9cd41 Make more things copyable 2020-06-12 16:32:05 -07:00
Justin Starry
bdbd037257 Bump @solana/web3.js 2020-06-12 16:32:05 -07:00
Justin Starry
e5f69673d7 Show account tx history 2020-06-12 16:32:05 -07:00
Nick Brown
73922609e4 Ensure only the copyable element itself is hover-able/click-able 2020-06-12 16:32:05 -07:00
Nick Brown
459b4d06fe Rename signature to be more generic (and less wrong); Make copyable accept children 2020-06-12 16:32:05 -07:00
Nick Brown
0cef795107 Make addresses copyable 2020-06-12 16:32:05 -07:00
Nick Brown
9bf3ddf9c4 Run prettier 2020-06-12 16:32:05 -07:00
Nick Brown
1c7b806575 Add popover for clipboard notification 2020-06-12 16:32:05 -07:00
Nick Brown
1cc76058d2 Add basic copy-to-clipboard functionality 2020-06-12 16:32:05 -07:00
Nick Brown
83b24e682b Remove duplicate .gitignore entries 2020-06-12 16:32:05 -07:00
Justin Starry
2513468582 Enable Heroku review apps 2020-06-12 16:32:05 -07:00
Justin Starry
8de34e1f42 Show details for all transaction instructions 2020-06-12 16:32:05 -07:00
Justin Starry
1c1c628b19 Create test account when test url param is present 2020-06-12 16:32:05 -07:00
Justin Starry
5cf323f9f5 Fix clusterUrl param detection 2020-06-12 16:32:05 -07:00
Justin Starry
e47b178d29 Transaction modal fixes 2020-06-12 16:32:05 -07:00
Justin Starry
0bda30e1f7 Update @solana/web3.js to v0.43.0 2020-06-12 16:32:05 -07:00
Justin Starry
0f0b0a20eb Update @solana/web3.js to v0.42.2 2020-06-12 16:32:05 -07:00
Justin Starry
8eabff3911 Add top nav and improve mobile experience 2020-06-12 16:32:05 -07:00
Michael Vines
18282c04db Drop 2020-06-12 16:32:05 -07:00
Justin Starry
b691f7a77b Update @solana/web3.js to v0.41.2 2020-06-12 16:32:05 -07:00
Justin Starry
ed470564e6 Improve the UI of the transaction modal 2020-06-12 16:32:05 -07:00
Justin Starry
bcb10b0536 Display owner names when known 2020-06-12 16:32:05 -07:00
Justin Starry
35814e77cb Show zero balance for missing accounts 2020-06-12 16:32:05 -07:00
Justin Starry
aec0d9cca0 Update solana/web3.js to v0.40.0 2020-06-12 16:32:05 -07:00
Justin Starry
60981f2031 Make it easy to create test success and failed tx 2020-06-12 16:32:05 -07:00
Justin Starry
152d7bc774 Check for /transactions route 2020-06-12 16:32:05 -07:00
Justin Starry
b3e0f06e23 Fix displaying 0 confirmations 2020-06-12 16:32:05 -07:00
Justin Starry
3a9ab69d52 Use 'recent' connection for status queries 2020-06-12 16:32:05 -07:00
Justin Starry
611f2ae957 Add transaction details modal 2020-06-12 16:32:05 -07:00
Justin Starry
ef7be97540 Use signature and address for state keys 2020-06-12 16:32:05 -07:00
Justin Starry
69502cc68e Add confirmations to tx table 2020-06-12 16:32:05 -07:00
Justin Starry
f55c53e5ca Update web3 to 0.39.1 2020-06-12 16:32:05 -07:00
Justin Starry
2e20b9f43e Remove lamports switch, always display in SOL 2020-06-12 16:32:05 -07:00
Justin Starry
5bdeeda569 Add account address lookup table 2020-06-12 16:32:05 -07:00
Justin Starry
1d7dbe859a Rename network to cluster 2020-06-12 16:32:05 -07:00
Justin Starry
c47c3acb10 Add cluster url param and rename tds to testnet 2020-06-12 16:32:05 -07:00
Justin Starry
82cdd1babe Clean up unused files and fix broken UI elements (#27) 2020-06-12 16:32:05 -07:00
Justin Starry
e59625a41d Improve flexibility of url parsing (#26) 2020-06-12 16:32:05 -07:00
Raj Gokal
1ad1ba73fa Raj (#23)
* adds styling changes for brand consistency

* reverts some prettier snafus

Co-authored-by: Raj Gokal <raj@solana.com>
2020-06-12 16:32:05 -07:00
Justin Starry
52f5934c3d Add real slot info to transactions table (#16)
* Add real slot info to transactions table

* npm run format:fix
2020-06-12 16:32:05 -07:00
Justin Starry
ea705f9147 Bump @solana/web3.js to v0.36.0 (#15) 2020-06-12 16:32:05 -07:00
Justin Starry
60e01116b2 Tweak style of network modal options 2020-06-12 16:32:05 -07:00
Justin Starry
76733e14d8 Update manifest to have Solana info (#13) 2020-06-12 16:32:05 -07:00
Justin Starry
8090ee31ab Left align tx id column 2020-06-12 16:32:05 -07:00
Justin Starry
237b3ae025 Add signature input to tx table (#9) 2020-06-12 16:32:05 -07:00
Justin Starry
82543886fb UI Tweaks 2020-06-12 16:32:05 -07:00
Justin Starry
45898415a1 Small tweaks 2020-06-12 16:32:05 -07:00
Justin Starry
068b034a22 Use https links for clusters (#8) 2020-06-12 16:32:05 -07:00
Justin Starry
03345e9005 Add network selector (#7) 2020-06-12 16:32:05 -07:00
Justin Starry
875aeaa53f Update web3 and fix hasha warning (#6) 2020-06-12 16:32:05 -07:00
Justin Starry
6006c30ace Add transaction card component and provider (#5) 2020-06-12 16:32:05 -07:00
Justin Starry
de1df895a0 Cleanup network provider (#3) 2020-06-12 16:32:05 -07:00
Justin Starry
d7b2612915 Fix travis build (#2) 2020-06-12 16:32:05 -07:00
Justin Starry
95001aa8ee Add network status button and url param parsing 2020-06-12 16:32:05 -07:00
Justin Starry
674ee37ee3 Switch from yarn to npm (#1) 2020-06-12 16:32:05 -07:00
Justin Starry
5ff479590c Enable Travis 2020-06-12 16:32:05 -07:00
Justin Starry
7ef953437f Enable prettier 2020-06-12 16:32:05 -07:00
Justin Starry
6619edb12c Fix dashkit scss building 2020-06-12 16:32:05 -07:00
Justin Starry
6aa797c05c Add placeholder main page 2020-06-12 16:32:05 -07:00
Justin Starry
6a38889572 Import dashkit theme 2020-06-12 16:32:05 -07:00
Justin Starry
d78d9898f3 First commit 2020-06-12 16:32:05 -07:00
Michael Vines
ca0589e5a7 Adjust ^ placement 2020-06-12 16:22:31 -07:00
Michael Vines
24eed881df Fix pull_request-only syntax 2020-06-12 16:16:56 -07:00
Michael Vines
644e37c03e shellcheck 2020-06-12 16:06:32 -07:00
Michael Vines
b54532b4c1 Add explorer/ carve out 2020-06-12 16:02:58 -07:00
Michael Vines
c2fa1032d7 Remove branch condition 2020-06-12 15:46:05 -07:00
Michael Vines
d6cd29b32a Restore lanaguage rust 2020-06-12 15:27:46 -07:00
Michael Vines
6c59093a67 Prepare Travis CI for web3.js and explorer 2020-06-12 15:23:55 -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
Jack May
4f761395d2 Adhere to naming conventions (#10530)
automerge
2020-06-11 19:10:34 -07:00
Dan Albert
914f285914 Add Trust Wallet security info (#10516)
automerge
2020-06-11 17:59:41 -07:00
Michael Vines
206b8118a1 Buildkite pipeline overhaul 2 (#10529) 2020-06-11 17:34:13 -07: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
Jack May
b03a347803 Document InvokeContext trait (#10514) 2020-06-11 15:31:13 -07:00
carllin
526eefac97 Fix clippy (#10521)
Co-authored-by: Carl <carl@solana.com>
2020-06-11 15:26:00 -06:00
Michael Vines
bca386c776 Put docs step in a container 2020-06-11 13:42:20 -07:00
Michael Vines
d79759595a Remove unneeded doc check 2020-06-11 13:18:03 -07:00
Michael Vines
e2d46375cd Rework buildkite pipeline construction to be more composable 2020-06-11 13:17:25 -07:00
Michael Vines
8b3dc2d44b Force CI_REPO_SLUG 2020-06-11 13:13:54 -07: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
Michael Vines
0510b6e336 Add merge-stake subcommmand 2020-06-10 23:19:31 -07:00
Dan Albert
ee007e0d31 Add stage 5 TdS Validators to list (#10508)
automerge
2020-06-10 18:57:18 -07:00
Michael Vines
769f456a22 Add RPC Send Transaction Service graphs 2020-06-10 18:14:06 -07:00
Michael Vines
60bc64629c Add StakeInstruction::Merge (#10503)
automerge
2020-06-10 17:22:47 -07:00
sakridge
4c140acb3b ClusterInfo cleanup (#10504)
automerge
2020-06-10 17:00:17 -07:00
Greg Fitzgerald
9c2c64f8c8 More reliable way to detect expired transactions (#10482)
When the root slot is beyond the last valid slot, we can say
with certainty that the blockhash is expired. Unfortunately,
we still can't say the transaction didn't land. It may have
landed a long time ago and the validator has since purged
its transaction status.
2020-06-10 17:00:13 -06:00
Boqin Qin
1e3554b33d runtime: fix possible deadlock in bank (#10466) 2020-06-11 02:02:08 +09:00
sakridge
6eb5ef6ac7 Add back missing pull_response success counter (#10491) 2020-06-10 09:17:57 -07:00
Trent Nelson
a15f60a291 Factor out testnet automation SW version resolution 2020-06-10 09:55:39 -06:00
Michael Vines
c3bb4b7405 Add vote-update-commission subcommand 2020-06-10 08:30:55 -07:00
Michael Vines
2bcbe44c79 Add VoteInstruction::UpdateCommission 2020-06-10 08:30:55 -07:00
Boqin Qin
0a638a8f17 runtime: fix possible deadlock in accounts_db (#10469) 2020-06-10 19:37:15 +09:00
Ryo Onodera
75b8c2c4e3 Fix broken image link (#10496)
automerge
2020-06-10 02:45:17 -07:00
Michael Vines
f19faa2e13 Don't ever unstake more than 20% of the cluster at a time 2020-06-09 22:04:22 -07:00
Michael Vines
8a7f1c2058 Add --baseline-stake-amount and --bonus-stake-amount arguments 2020-06-09 22:04:22 -07:00
Ryo Onodera
40ffc56f8d Update docs for eager rent collection (#10348)
* Update docs for eager rent collection

* Add rent doc and clarify account doc for app devs

* Clarify some and pass the grammarly

* Fix units notation

* Fix link

* Fix link really

* Fix link really really

* More grammarly

* Apply suggestions from code review

Thank you so much!

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>

* Add explanation of 19.055441478439427

* Fix unit...

* Fix unit...

* Clarify rent duration reasoning

* Tweak a text for more clarification

* Tweak more..

* Apply suggestions from code review

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>

* Revert too detailed out-of-context explanations

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2020-06-10 13:00:47 +09: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
Greg Fitzgerald
4131eee94d Expose last-valid-slot to BankClient and ThinClient users (#10478)
automerge
2020-06-09 17:07:32 -07:00
dependabot-buildkite
b250e8c614 [auto-commit] Update all Cargo lock files 2020-06-09 16:57:46 -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
Trent Nelson
aaf6dd9ee0 Allow ci/publish_tarball.sh's output to be configured (#10480)
automerge
2020-06-09 15:40:41 -07:00
Michael Vines
8e2745c2a2 Clean up delinquency slot distance computation 2020-06-09 11:27:30 -07:00
sakridge
d59fd7d512 Add gossip/poh to dashboard (#10449) 2020-06-09 10:25:10 -07:00
Trent Nelson
b329e6d1a4 Add --warp-slot argument to |solana-ledger-tool create-snapshot| 2020-06-09 09:16:21 -07:00
Michael Vines
ed351400b2 Add SendTransactionService 2020-06-09 07:46:40 -07:00
Michael Vines
2da9b12d67 Remove client-side retry service 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
Michael Vines
4cfb7588d9 som: Add --quality-block-producer-percentage (#10462)
automerge
2020-06-08 22:15:59 -07:00
Ryo Onodera
9d07a23c46 Run clippy before check to avoid being skipped (#10464)
* Run clippy before check to avoid being skipped

* Tweak output

* Apply a workaround
2020-06-09 12:25:39 +09:00
Ryo Onodera
704d98ac28 Use cutting-edge (=nightly) clippy for all targets (#10463)
automerge
2020-06-08 18:58:47 -07:00
Michael Vines
cffd8d9427 Add missing " 2020-06-08 17:44:05 -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
Dan Albert
fa3a6c5584 Add F3LudCbGqu4DMqjduLq5WE2g3USYcjmVK3WR8KeNBhWz (#10456)
automerge
2020-06-08 13:06:45 -07:00
Michael Vines
136342eaae Bump new_system_program_activation_epoch by 2 2020-06-08 09:39:42 -07:00
Jack May
97f9b63507 Improve BPF SDK dependency caching (#10434) 2020-06-08 09:20:12 -07:00
Michael Vines
9f181f41fa Add Algo|Stake as a recommended trusted testnet validator (#10452)
automerge
2020-06-08 08:17:19 -07: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
Michael Vines
718244fb8f Add Certus One as a trusted validator for testnet (#10433)
automerge
2020-06-05 16:44:58 -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
Ryo Onodera
3cea73cf14 docs: Fix missing closing code block ``` (#10424)
automerge
2020-06-05 00:19:56 -07:00
carllin
db82d9e914 Enable more fine-grained control in partition tests (#10418)
Co-authored-by: Carl <carl@solana.com>
2020-06-04 23:32:53 -07:00
Michael Vines
aa6832964c ledger_cleanup_service: compact at a slower rate than purging (#10414) 2020-06-04 21:06:06 -07:00
Tyera Eulberg
da34310eb4 Add arg to specify address-signer for solana deploy (#10416) 2020-06-04 20:14:12 -06: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
Michael Vines
26e684f375 Deactivate legacy_system_instruction_processor at epoch 58/38 (preview/stable) (#10406)
automerge
2020-06-04 00:01:47 -07:00
Jack May
61d91d2d55 Don't reuse executable accounts between instructions (#10403)
automerge
2020-06-03 21:16:15 -07:00
Michael Vines
21d62493ff Add legacy_system_instruction_processor0 tests 2020-06-03 16:04:06 -07:00
Michael Vines
9c631a01c1 Enable rolling upgrade of system_instruction_processor 2020-06-03 16:04:06 -07:00
Michael Vines
1331c9a680 Add legacy_system_instruction_processor 2020-06-03 16:04:06 -07:00
Michael Vines
a4cd96609c Add built-in programs to InvokeContext (#10383)
automerge
2020-06-03 12:48:19 -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
Tyera Eulberg
6c46f5c5e5 Throw error if no release version (#10396) 2020-06-03 12:08:32 -06: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-buildkite
e8d9521cf6 [auto-commit] Update all Cargo lock files 2020-06-03 09:01:36 -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
Ryo Onodera
e63e7937cb Introduce automatic ABI maintenance mechanism (1/2; prepare) (#10335)
* Introduce automatic ABI maintenance mechanism

* Compile fix...

* Docs fix...

* Programs compilation fix...

* Simplify source credit

Co-authored-by: Michael Vines <mvines@gmail.com>

* Cargo.lock...

Co-authored-by: Michael Vines <mvines@gmail.com>
2020-06-03 20:51:56 +09:00
Ryo Onodera
b515cc3ae5 Don't share same snapshot dir for secondary access (#10384)
automerge
2020-06-03 02:45:48 -07:00
dependabot-buildkite
69d90b591f [auto-commit] Update all Cargo lock files 2020-06-02 23:29:14 -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-buildkite
f66169f245 [auto-commit] Update all Cargo lock files 2020-06-02 23:28:57 -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
Michael Vines
a23085ddfd solana validators: Fix credits column formatting 2020-06-02 23:28:36 -07:00
Ryo Onodera
caa7f7a0c9 Support opening an in-use rocksdb as secondary (#10209)
automerge
2020-06-02 21:32:44 -07:00
Trent Nelson
59c5dad020 Testnet automation: Fix slot query (#10378)
automerge
2020-06-02 21:08:59 -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
1303c4964b Surface more helpful error message than 'blockstore error' 2020-06-02 11:11:06 -07:00
Michael Vines
0f2cfec52e Add 4N8t... 2020-06-02 07:47:19 -07:00
Michael Vines
6498cb4214 Remove some unused RpcClient and ThinClient methods 2020-06-02 07:44:30 -07:00
Michael Vines
df216b0e98 Remove RpcClient::resign_transaction() 2020-06-02 07:44:30 -07:00
dependabot-buildkite
4cb7dc7128 [auto-commit] Update all Cargo lock files 2020-06-01 20:53:17 -07:00
dependabot-preview[bot]
89c2175bc9 Bump curve25519-dalek from 2.0.0 to 2.1.0
Bumps [curve25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/dalek-cryptography/curve25519-dalek/releases)
- [Changelog](https://github.com/dalek-cryptography/curve25519-dalek/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dalek-cryptography/curve25519-dalek/compare/2.0.0...2.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 20:53:17 -07:00
Greg Fitzgerald
8c3ad859a9 Add docs for the builtin programs (#10359)
* Add docs for the builtin programs

* Cleanup
2020-06-01 21:06:53 -06:00
Michael Vines
ebf8a65526 Add test_rpc_send_transaction_preflight 2020-06-01 17:51:04 -07:00
Michael Vines
bd1f9d320f Skip RPC preflight to align with the other Client implementations 2020-06-01 17:51:04 -07:00
Michael Vines
202512d46b Adapt solana deploy 2020-06-01 17:51:04 -07:00
Michael Vines
f1733ab125 Add send_transaction_with_config 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
Trent Nelson
27e2e3665a net.sh: Add 'upgrade' subcommand to upload a new release to the BSV
NOTE! (start|stop)node don't support operating on the BSV yet, so a
manual restart is required to get it running the new release
2020-06-01 16:37:17 -06:00
Trent Nelson
1144190d8d net.sh: Factor out logic that uploads bins to BSV 2020-06-01 16:37:17 -06:00
Michael Vines
79e6bd044f Add F7FgS6rr... 2020-06-01 14:18:48 -07:00
Michael Vines
3a7b036eac Add helpful PATH command to copy from 2020-06-01 14:02:50 -07:00
Tyera Eulberg
6ff52f7fde Exchange doc reformat pt2 (#10355) 2020-06-01 14:03:12 -06:00
Michael Vines
c5ca6f6c83 Add H4Dgb3KyCuYWKT8yKtp8qbY49cvaqZcisa2GDnroFsv6 2020-06-01 12:54:39 -07:00
Tyera Eulberg
b538a22529 Exchange doc reformat (#10353) 2020-06-01 11:10:43 -06:00
Tyera Eulberg
e619839236 Restore archiver design document (#10352) 2020-06-01 10:42:45 -06: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
Trent Nelson
08ad7d1ed6 Reduce stable jobs (#10344) 2020-05-31 21:29:32 -07:00
Greg Fitzgerald
5d248fe5f8 Permit paying oneself (#10337)
* Allow paying to oneself

* cargo fmt

* Permit pay-to-self in CLI

No test here because we're just removing an [untested] special case.

Fixes #10339
2020-05-30 20:12:48 -06:00
Greg Fitzgerald
6013b4b2a7 Add clap-utils to workspace (#10340)
Without it, Rust Analyzer reports an error in the IDE
2020-05-30 11:26:26 -06:00
dependabot-preview[bot]
b787254bd6 Bump console from 0.10.3 to 0.11.3 (#10314)
Bumps [console](https://github.com/mitsuhiko/console) from 0.10.3 to 0.11.3.
- [Release notes](https://github.com/mitsuhiko/console/releases)
- [Commits](https://github.com/mitsuhiko/console/commits/v0.11.3)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-05-30 07:47:41 -06: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
Greg Fitzgerald
55a64712b9 Cleanup program docs (#10283) 2020-05-29 20:29:24 -06:00
Greg Fitzgerald
de5b21e444 Don't attempt to resolve mainnet-beta in the test suite (#10328)
automerge
2020-05-29 17:35:07 -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
Trent Nelson
284e83e619 gce.sh: Make help text example command non-executable (#10319)
automerge
2020-05-29 11:52:25 -07:00
Tyera Eulberg
b563b49ed5 Improve Rpc inflation tooling (#10309)
automerge
2020-05-29 11:50:25 -07:00
Dan Albert
75924bd232 Update whitelist.rs (#10317)
automerge
2020-05-29 10:51:33 -07:00
carllin
bc37dfc4c1 log leader (#10316)
automerge
2020-05-29 04:35:20 -07:00
Ryo Onodera
8db34474d3 Cover tests for clippy (#10310)
automerge
2020-05-29 02:00:56 -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
c68d426fa2 Update Cargo.lock 2020-05-28 15:32:42 -07:00
Michael Vines
9eefb2c929 Bump version to 1.3.0 2020-05-28 15:01:13 -07:00
Michael Vines
0a373149dd verify_reachable_ports: Handle errors without expect() (#10298)
automerge
2020-05-28 14:16:53 -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
Trent Nelson
e8bf94c2d2 CLI: Don't display inactive stake lockups 2020-05-28 09:45:20 -06:00
Michael Vines
f60b101920 Verify TPU and serve repair ports are reachable (#10291) 2020-05-28 08:41:06 -07:00
Ryo Onodera
34796d2c81 Include GenesisConfig inflation in Display (#10282)
automerge
2020-05-27 22:35:19 -07:00
Michael Vines
075dc078da Use correct --url (#10284)
automerge
2020-05-27 21:02:58 -07:00
Michael Vines
5ac2ae1178 Purge next slots to avoid a blockstore_processor panic on restart (#10281) 2020-05-27 19:55:40 -07:00
Michael Vines
2cd1e4e12a Adjust mainnet-beta shred version 2020-05-27 17:11:49 -07:00
Greg Fitzgerald
c600cfc655 Cleanup programming model doc (#10274) 2020-05-27 16:18:11 -06:00
Trent Nelson
f9ee97d6f5 CLI: Improve stake (de)activation display 2020-05-27 14:21:09 -06:00
Trent Nelson
34507e8a5b Stalebot: Exempt 'blocked' label (#10268)
automerge
2020-05-27 11:20:45 -07:00
Michael Vines
e3b444834f Add more logging while unpacking snapshots (#10266) 2020-05-27 10:41:05 -07:00
Tyera Eulberg
7d42d529af Add exchange integration docs (#10054)
* Add exchange integration doc

* Round 1 review comments

* Add rent stub doc

* Pretty-print some things

* Rework blockhash info, move offline signing

* Add something to test section

* Update blockhash/last-valid-slot info
2020-05-27 09:47:03 -07:00
Michael Vines
7abdfc23f9 succceed is not a word 2020-05-26 23:17:50 -07:00
Jack May
2ee0c48980 Program address nits (#10261)
automerge
2020-05-26 19:32:19 -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
Michael Vines
22a98bd27a Wait for one slot to be produced (#10257)
automerge
2020-05-26 16:20:28 -07:00
Tyera Eulberg
b6083ca107 Cli: expose last-valid-slot in solana fees (#10254)
automerge
2020-05-26 14:08:07 -07:00
Dan Albert
1cd1988207 Update testnet-automation.sh (#10250)
automerge
2020-05-26 13:02:24 -07:00
Tyera Eulberg
4e431bc818 Add mechanism to get blockhash's last valid slot (#10239)
automerge
2020-05-26 12:06:21 -07:00
dependabot-preview[bot]
1bfc4c1489 Bump libc from 0.2.70 to 0.2.71 (#10249)
* Bump libc from 0.2.70 to 0.2.71

Bumps [libc](https://github.com/rust-lang/libc) from 0.2.70 to 0.2.71.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.70...0.2.71)

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 <anatoly+githubjenkins@solana.io>
2020-05-26 11:04:15 -07:00
dependabot-preview[bot]
d888e1c50a Bump byte-unit from 3.1.2 to 3.1.3 (#10248)
Bumps [byte-unit](https://github.com/magiclen/byte-unit) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/magiclen/byte-unit/releases)
- [Commits](https://github.com/magiclen/byte-unit/compare/v3.1.2...v3.1.3)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-05-26 11:04:06 -07:00
Jack May
03abd3ddd7 Prevent privilege escalation (#10232)
automerge
2020-05-26 01:02:31 -07:00
Tyera Eulberg
5d96fcec63 Remove storage rpc docs (#10238) 2020-05-25 23:38:12 -06:00
Jack May
bf8daf8e74 Update cross-program and program address proposals (#10234) 2020-05-25 22:25:16 -07:00
Jack May
569e3cb46a Use thiserror's display for TransactionError (#10233)
automerge
2020-05-25 16:13:09 -07:00
sakridge
7ebd8ee531 Cluster info metrics (#10215) 2020-05-25 15:03:34 -07:00
dependabot-preview[bot]
c1738b01a0 Bump byte-unit from 3.1.1 to 3.1.2 (#10229)
Bumps [byte-unit](https://github.com/magiclen/byte-unit) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/magiclen/byte-unit/releases)
- [Commits](https://github.com/magiclen/byte-unit/compare/v3.1.1...v3.1.2)

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

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-05-25 10:25:44 -07:00
Jack May
27e3ee8799 Re-enable move in docker-solana (#10214) 2020-05-24 23:51:37 -07:00
1657 changed files with 154359 additions and 30707 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -1,12 +1,12 @@
{
"_public_key": "ae29f4f7ad2fc92de70d470e411c8426d5d48db8817c9e3dae574b122192335f",
"environment": {
"CODECOV_TOKEN": "EJ[1:yGpTmjdbyjW2kjgIHkFoJv7Ue7EbUvUbqHyw6anGgWg=:JnxhrIxh09AvqdJgrVSYmb7PxSrh19aE:07WzVExCHEd1lJ1m8QizRRthGri+WBNeZRKjjEvsy5eo4gv3HD7zVEm42tVTGkqITKkBNQ==]",
"CRATES_IO_TOKEN": "EJ[1:yGpTmjdbyjW2kjgIHkFoJv7Ue7EbUvUbqHyw6anGgWg=:d0jJqC32/axwzq/N7kMRmpxKhnRrhtpt:zvcPHwkOzGnjhNkAQSejwdy1Jkr9wR1qXFFCnfIjyt/XQYubzB1tLkoly/qdmeb5]",
"GEOLOCATION_API_KEY": "EJ[1:yGpTmjdbyjW2kjgIHkFoJv7Ue7EbUvUbqHyw6anGgWg=:R4gfB6Ey4i50HyfLt4UZDLBqg3qHEUye:UfZCOgt8XI6Y2g+ivCRVoS1fjFycFs7/GSevvCqh1B50mG0+hzpEyzXQLuKG5OeI]",
"GITHUB_TOKEN": "EJ[1:yGpTmjdbyjW2kjgIHkFoJv7Ue7EbUvUbqHyw6anGgWg=:Vq2dkGTOzfEpRht0BAGHFp/hDogMvXJe:tFXHg1epVt2mq9hkuc5sRHe+KAnVREi/p8S+IZu67XRyzdiA/nGak1k860FXYuuzuaE0QWekaEc=]",
"INFLUX_DATABASE": "EJ[1:yGpTmjdbyjW2kjgIHkFoJv7Ue7EbUvUbqHyw6anGgWg=:5KI9WBkXx3R/W4m256mU5MJOE7N8aAT9:Cb8QFELZ9I60t5zhJ9h55Kcs]",
"INFLUX_PASSWORD": "EJ[1:yGpTmjdbyjW2kjgIHkFoJv7Ue7EbUvUbqHyw6anGgWg=:hQRMpLCrav+OYkNphkeM4hagdVoZv5Iw:AUO76rr6+gF1OLJA8ZLSG8wHKXgYCPNk6gRCV8rBhZBJ4KwDaxpvOhMl7bxxXG6jol7v4aRa/Lk=]",
"INFLUX_USERNAME": "EJ[1:yGpTmjdbyjW2kjgIHkFoJv7Ue7EbUvUbqHyw6anGgWg=:R7BNmQjfeqoGDAFTJu9bYTGHol2NgnYN:Q2tOT/EBcFvhFk+DKLKmVU7tLCpVC3Ui]"
"CODECOV_TOKEN": "EJ[1:Z7OneT3RdJJ0DipCHQ7rC84snQ+FPbgHwZADQiz54wk=:3K68mE38LJ2RB98VWmjuNLFBNn1XTGR4:cR4r05/TOZQKmEZp1v4CSgUJtC6QJiOaL85QjXW0qZ061fMnsBA8AtAPMDoDq4WCGOZM1A==]",
"CRATES_IO_TOKEN": "EJ[1:Z7OneT3RdJJ0DipCHQ7rC84snQ+FPbgHwZADQiz54wk=:GGRTYDjMXksevzR6kq4Jx+FaIQZz50RU:xkbwDxcgoCyU+aT2tiI9mymigrEl6YiOr3axe3aX70ELIBKbCdPGilXP/wixvKi94g2u]",
"GEOLOCATION_API_KEY": "EJ[1:Z7OneT3RdJJ0DipCHQ7rC84snQ+FPbgHwZADQiz54wk=:U2PZLi5MU3Ru/zK1SilianEeizcMvxml:AJKf2OAtDHmJh0KyXrBnNnistItZvVVP3cZ7ZLtrVupjmWN/PzmKwSsXeCNObWS+]",
"GITHUB_TOKEN": "EJ[1:Z7OneT3RdJJ0DipCHQ7rC84snQ+FPbgHwZADQiz54wk=:0NJNlpD/O19mvOakCGBYDhIDfySxWFSC:Dz4NXv9x6ncRQ1u9sVoWOcqmkg0sI09qmefghB0GXZgPcFGgn6T0mw7ynNnbUvjyH8dLruKHauk=]",
"INFLUX_DATABASE": "EJ[1:Z7OneT3RdJJ0DipCHQ7rC84snQ+FPbgHwZADQiz54wk=:SzwHIeOVpmbTcGQOGngoFgYumsLZJUGq:t7Rpk49njsWvoM+ztv5Uwuiz]",
"INFLUX_PASSWORD": "EJ[1:Z7OneT3RdJJ0DipCHQ7rC84snQ+FPbgHwZADQiz54wk=:/MUs+q7pdGrUjzwcq+6pgIFxur4hxdqu:am22z2E2dtmw1f1J1Mq5JLcUHZsrEjQAJ0pp21M4AZeJbNO6bVb44d9zSkHj7xdN6U+GNlCk+wU=]",
"INFLUX_USERNAME": "EJ[1:Z7OneT3RdJJ0DipCHQ7rC84snQ+FPbgHwZADQiz54wk=:XjghH20xGVWro9B+epGlJaJcW8Wze0Bi:ZIdOtXudTY5TqKseDU7gVvQXfmXV99Xh]"
}
}

View File

@@ -9,23 +9,10 @@
set -e
cd "$(dirname "$0")"/..
source ci/_
if [[ -n $BUILDKITE_TAG ]]; then
buildkite-agent annotate --style info --context release-tag \
"https://github.com/solana-labs/solana/releases/$BUILDKITE_TAG"
buildkite-agent pipeline upload ci/buildkite-release.yml
else
if [[ $BUILDKITE_BRANCH =~ ^pull ]]; then
# Add helpful link back to the corresponding Github Pull Request
buildkite-agent annotate --style info --context pr-backlink \
"Github Pull Request: https://github.com/solana-labs/solana/$BUILDKITE_BRANCH"
fi
_ ci/buildkite-pipeline.sh pipeline.yml
echo +++ pipeline
cat pipeline.yml
if [[ $BUILDKITE_MESSAGE =~ GitBook: ]]; then
buildkite-agent annotate --style info --context gitbook-ci-skip \
"GitBook commit detected, CI skipped"
exit
fi
buildkite-agent pipeline upload ci/buildkite.yml
fi
_ buildkite-agent pipeline upload pipeline.yml

View File

@@ -1,18 +0,0 @@
root: ./docs/src
structure:
readme: introduction.md
summary: SUMMARY.md
redirects:
wallet: ./wallet-guide/README.md
wallet/app-wallets: ./wallet-guide/apps.md
wallet/app-wallets/trust-wallet: ./wallet-guide/trust-wallet.md
wallet/app-wallets/ledger-live: ./wallet-guide/ledger-live.md
wallet/cli-wallets: ./wallet-guide/cli.md
wallet/cli-wallets/paper-wallet: ./paper-wallet/README.md
wallet/cli-wallets/paper-wallet/paper-wallet-usage: ./paper-wallet/paper-wallet-usage.md
wallet/cli-wallets/remote-wallet: ./hardware-wallets/README.md
wallet/cli-wallets/remote-wallet/ledger: ./hardware-wallets/ledger.md
wallet/cli-wallets/file-system-wallet: ./file-system-wallet/README.md
wallet/support: ./wallet-guide/support.md

41
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: cargo
directory: "/"
schedule:
interval: daily
time: "01:00"
timezone: America/Los_Angeles
#labels:
# - "automerge"
open-pull-requests-limit: 3
- package-ecosystem: npm
directory: "/web3.js"
schedule:
interval: daily
time: "01:00"
timezone: America/Los_Angeles
labels:
- "automerge"
commit-message:
prefix: "chore:"
open-pull-requests-limit: 3
- package-ecosystem: npm
directory: "/explorer"
schedule:
interval: daily
time: "01:00"
timezone: America/Los_Angeles
labels:
- "automerge"
commit-message:
prefix: "chore:"
include: "scope"
open-pull-requests-limit: 3

1
.github/stale.yml vendored
View File

@@ -9,6 +9,7 @@ daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- security
- blocked
# Label to use when marking a pull request as stale
staleLabel: stale

6
.gitignore vendored
View File

@@ -23,3 +23,9 @@ log-*/
/.idea/
/solana.iml
/.vscode/
# fetch-spl.sh artifacts
/spl-genesis-args.sh
/spl_*.so
.DS_Store

View File

@@ -1,9 +1,40 @@
# Validate your changes with:
#
# $ curl -F 'data=@.mergify.yml' https://gh.mergify.io/validate
# $ curl -F 'data=@.mergify.yml' https://gh.mergify.io/validate/
#
# https://doc.mergify.io/
pull_request_rules:
- name: automatic merge (squash) on CI success
conditions:
- status-success=buildkite/solana
- status-success=Travis CI - Pull Request
- status-success=ci-gate
- label=automerge
- author≠@dont-squash-my-commits
actions:
merge:
method: squash
# Join the dont-squash-my-commits group if you won't like your commits squashed
- name: automatic merge (rebase) on CI success
conditions:
- status-success=buildkite/solana
- status-success=Travis CI - Pull Request
- status-success=ci-gate
- label=automerge
- author=@dont-squash-my-commits
actions:
merge:
method: rebase
- name: remove automerge label on CI failure
conditions:
- label=automerge
- "#status-failure!=0"
actions:
label:
remove:
- automerge
comment:
message: automerge label removed due to a CI failure
- name: remove outdated reviews
conditions:
- base=master
@@ -19,14 +50,6 @@ pull_request_rules:
label:
add:
- automerge
- name: v1.0 backport
conditions:
- label=v1.0
actions:
backport:
ignore_conflicts: true
branches:
- v1.0
- name: v1.1 backport
conditions:
- label=v1.1
@@ -43,3 +66,11 @@ pull_request_rules:
ignore_conflicts: true
branches:
- v1.2
- name: v1.3 backport
conditions:
- label=v1.3
actions:
backport:
ignore_conflicts: true
branches:
- v1.3

View File

@@ -1,43 +1,132 @@
os:
- osx
- windows
language: rust
rust:
- stable
install:
- source ci/rust-version.sh
script:
- source ci/env.sh
- ci/publish-tarball.sh
branches:
only:
- master
- /^v\d+\.\d+/
notifications:
email: false
slack:
on_success: change
if: NOT type = pull_request
secure: F4IjOE05MyaMOdPRL+r8qhs7jBvv4yDM3RmFKE1zNXnfUOqV4X38oQM1EI+YVsgpMQLj/pxnEB7wcTE4Bf86N6moLssEULCpvAuMVoXj4QbWdomLX+01WbFa6fLVeNQIg45NHrz2XzVBhoKOrMNnl+QI5mbR2AlS5oqsudHsXDnyLzZtd4Y5SDMdYG1zVWM01+oNNjgNfjcCGmOE/K0CnOMl6GPi3X9C34tJ19P2XT7MTDsz1/IfEF7fro2Q8DHEYL9dchJMoisXSkem5z7IDQkGzXsWdWT4NnndUvmd1MlTCE9qgoXDqRf95Qh8sB1Dz08HtvgfaosP2XjtNTfDI9BBYS15Ibw9y7PchAJE1luteNjF35EOy6OgmCLw/YpnweqfuNViBZz+yOPWXVC0kxnPIXKZ1wyH9ibeH6E4hr7a8o9SV/6SiWIlbYF+IR9jPXyTCLP/cc3sYljPWxDnhWFwFdRVIi3PbVAhVu7uWtVUO17Oc9gtGPgs/GrhOMkJfwQPXaudRJDpVZowxTX4x9kefNotlMAMRgq+Drbmgt4eEBiCNp0ITWgh17BiE1U09WS3myuduhoct85+FoVeaUkp1sxzHVtGsNQH0hcz7WcpZyOM+AwistJA/qzeEDQao5zi1eKWPbO2xAhi2rV1bDH6bPf/4lDBwLRqSiwvlWU=
deploy:
- provider: s3
access_key_id: $AWS_ACCESS_KEY_ID
secret_access_key: $AWS_SECRET_ACCESS_KEY
bucket: release.solana.com
region: us-west-1
skip_cleanup: true
acl: public_read
local_dir: travis-s3-upload
on:
all_branches: true
- provider: releases
api_key: $GITHUB_TOKEN
skip_cleanup: true
file_glob: true
file: travis-release-upload/*
on:
tags: true
os: linux
dist: bionic
language: minimal
jobs:
include:
- name: "Export Github Repositories"
if: type IN (push, cron) AND branch = master
language: python
git:
depth: false
script:
- .travis/export-github-repo.sh web3.js/ solana-web3.js
- .travis/export-github-repo.sh explorer/ explorer
- &release-artifacts
if: type IN (api, cron) OR tag IS present
name: "macOS release artifacts"
os: osx
language: rust
rust:
- stable
install:
- source ci/rust-version.sh
script:
- source ci/env.sh
- ci/publish-tarball.sh
deploy:
- provider: s3
access_key_id: $AWS_ACCESS_KEY_ID
secret_access_key: $AWS_SECRET_ACCESS_KEY
bucket: release.solana.com
region: us-west-1
skip_cleanup: true
acl: public_read
local_dir: travis-s3-upload
on:
all_branches: true
- provider: releases
token: $GITHUB_TOKEN
skip_cleanup: true
file_glob: true
file: travis-release-upload/*
on:
tags: true
- <<: *release-artifacts
name: "Windows release artifacts"
os: windows
# Linux release artifacts are still built by ci/buildkite-secondary.yml
#- <<: *release-artifacts
# name: "Linux release artifacts"
# os: linux
# before_install:
# - sudo apt-get install libssl-dev libudev-dev
# explorer pull request
- name: "explorer"
if: type = pull_request AND branch = master
language: node_js
node_js:
- "node"
cache:
directories:
- ~/.npm
before_install:
- .travis/affects.sh explorer/ .travis || travis_terminate 0
- cd explorer
script:
- npm run build
- npm run format
# web3.js pull request
- name: "web3.js"
if: type = pull_request AND branch = master
language: node_js
node_js:
- "lts/*"
services:
- docker
cache:
directories:
- ~/.npm
before_install:
- .travis/affects.sh web3.js/ .travis || travis_terminate 0
- cd web3.js/
- source .travis/before_install.sh
script:
- ../.travis/commitlint.sh
- source .travis/script.sh
# docs pull request
- name: "docs"
if: type IN (push, pull_request) OR tag IS present
language: node_js
node_js:
- "node"
services:
- docker
cache:
directories:
- ~/.npm
before_install:
- .travis/affects.sh docs/ .travis || travis_terminate 0
- cd docs/
- source .travis/before_install.sh
script:
- source .travis/script.sh

25
.travis/affects.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
#
# Check if files in the commit range match one or more prefixes
#
# Always run the job if we are on a tagged release
if [[ -n "$TRAVIS_TAG" ]]; then
exit 0
fi
(
set -x
git diff --name-only "$TRAVIS_COMMIT_RANGE"
)
for file in $(git diff --name-only "$TRAVIS_COMMIT_RANGE"); do
for prefix in "$@"; do
if [[ $file =~ ^"$prefix" ]]; then
exit 0
fi
done
done
echo "No modifications to $*"
exit 1

32
.travis/commitlint.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env bash
#
# Runs commitlint in the provided subdirectory
#
set -e
basedir=$1
if [[ -z "$basedir" ]]; then
basedir=.
fi
if [[ ! -d "$basedir" ]]; then
echo "Error: not a directory: $basedir"
exit 1
fi
if [[ ! -f "$basedir"/commitlint.config.js ]]; then
echo "Error: No commitlint configuration found"
exit 1
fi
if [[ -z $TRAVIS_COMMIT_RANGE ]]; then
echo "Error: TRAVIS_COMMIT_RANGE not defined"
exit 1
fi
cd "$basedir"
echo "Checking commits in TRAVIS_COMMIT_RANGE: $TRAVIS_COMMIT_RANGE"
while IFS= read -r line; do
echo "$line" | npx commitlint
done < <(git log "$TRAVIS_COMMIT_RANGE" --format=%s -- .)

34
.travis/export-github-repo.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/usr/bin/env bash
#
# Exports a subdirectory into another github repository
#
set -e
if [[ -z $GITHUB_TOKEN ]]; then
echo GITHUB_TOKEN not defined
exit 1
fi
cd "$(dirname "$0")/.."
pip3 install git-filter-repo
declare subdir=$1
declare repo_name=$2
[[ -n "$subdir" ]] || {
echo "Error: subdir not specified"
exit 1
}
[[ -n "$repo_name" ]] || {
echo "Error: repo_name not specified"
exit 1
}
echo "Exporting $subdir"
set -x
rm -rf .github_export/"$repo_name"
git clone https://"$GITHUB_TOKEN"@github.com/solana-labs/"$repo_name" .github_export/"$repo_name"
git filter-repo --subdirectory-filter "$subdir" --target .github_export/"$repo_name"
git -C .github_export/"$repo_name" push https://"$GITHUB_TOKEN"@github.com/solana-labs/"$repo_name"

3117
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -5,6 +5,7 @@ members = [
"bench-tps",
"accounts-bench",
"banking-bench",
"clap-utils",
"cli-config",
"client",
"core",
@@ -25,15 +26,15 @@ members = [
"log-analyzer",
"merkle-tree",
"stake-o-matic",
"storage-bigtable",
"streamer",
"measure",
"metrics",
"net-shaper",
"notifier",
"poh-bench",
"programs/bpf_loader",
"programs/budget",
"programs/btc_spv",
"programs/btc_spv_bin",
"programs/config",
"programs/exchange",
"programs/failure",
@@ -52,6 +53,7 @@ members = [
"sys-tuner",
"tokens",
"transaction-status",
"account-decoder",
"upload-perf",
"net-utils",
"version",
@@ -63,6 +65,4 @@ members = [
exclude = [
"programs/bpf",
"programs/move_loader",
"programs/librapay",
]

View File

@@ -1,4 +1,4 @@
Copyright 2018 Solana Labs, Inc.
Copyright 2020 Solana Foundation.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@@ -76,21 +76,20 @@ There are three release channels that map to branches as follows:
git push -u origin <branchname>
```
### Update master branch with the next version
Alternatively use the Github UI.
### Update master branch to the next release minor version
1. After the new branch has been created and pushed, update the Cargo.toml files on **master** to the next semantic version (e.g. 0.9.0 -> 0.10.0) with:
```
scripts/increment-cargo-version.sh minor
$ scripts/increment-cargo-version.sh minor
$ ./scripts/cargo-for-all-lock-files.sh update
```
1. Rebuild to get an updated version of `Cargo.lock`:
```
cargo build
```
1. Push all the changed Cargo.toml and Cargo.lock files to the `master` branch with something like:
```
git co -b version_update
git ls-files -m | xargs git add
git commit -m 'Update Cargo.toml versions from X.Y to X.Y+1'
git commit -m 'Bump version to X.Y+1.0'
git push -u origin version_update
```
1. Confirm that your freshly cut release branch is shown as `BETA_CHANNEL` and the previous release branch as `STABLE_CHANNEL`:
@@ -102,84 +101,51 @@ There are three release channels that map to branches as follows:
### Create the Release Tag on GitHub
1. Go to [GitHub's Releases UI](https://github.com/solana-labs/solana/releases) for tagging a release.
1. Go to [GitHub Releases](https://github.com/solana-labs/solana/releases) for tagging a release.
1. Click "Draft new release". The release tag must exactly match the `version`
field in `/Cargo.toml` prefixed by `v`.
1. If the Cargo.toml verion field is **0.12.3**, then the release tag must be **v0.12.3**
1. If the Cargo.toml version field is **0.12.3**, then the release tag must be **v0.12.3**
1. Make sure the Target Branch field matches the branch you want to make a release on.
1. If you want to release v0.12.0, the target branch must be v0.12
1. If this is the first release on the branch (e.g. v0.13.**0**), paste in [this
template](https://raw.githubusercontent.com/solana-labs/solana/master/.github/RELEASE_TEMPLATE.md). Engineering Lead can provide summary contents for release notes if needed.
1. Click "Save Draft", then confirm the release notes look good and the tag name and branch are correct. Go back into edit the release and click "Publish release" when ready.
template](https://raw.githubusercontent.com/solana-labs/solana/master/.github/RELEASE_TEMPLATE.md). Engineering Lead can provide summary contents for release notes if needed. If this is a patch release, review all the commits since the previous release on this branch and add details as needed.
1. Click "Save Draft", then confirm the release notes look good and the tag name and branch are correct.
1. Ensure the release is marked **"This is a pre-release"**. This flag will then need to be be removed once the the Linux binary artifacts appear later.
1. Go back into edit the release and click "Publish release" when ready.
### Update release branch with the next patch version
1. After the new release has been tagged, update the Cargo.toml files on **release branch** to the next semantic version (e.g. 0.9.0 -> 0.9.1) with:
```
scripts/increment-cargo-version.sh patch
$ scripts/increment-cargo-version.sh patch
$ ./scripts/cargo-for-all-lock-files.sh tree
```
1. Rebuild to get an updated version of `Cargo.lock`:
```
cargo build
```
1. Push all the changed Cargo.toml and Cargo.lock files to the **release branch** with something like:
```
git co -b version_update
git ls-files -m | xargs git add
git commit -m 'Update Cargo.toml versions from X.Y.Z to X.Y.Z+1'
git push -u origin version_update
git co -b version_update origin/vX.Y
git add -u
git commit -m 'Bump version to X.Y.Z+1'
git push -u <user-remote> version_update
```
1. Open a PR against origin/vX.Y and then merge the PR after passing CI.
### Prepare for the next release
1. Go to [GitHub Releases](https://github.com/solana-labs/solana/releases) and create a new draft release for `X.Y.Z+1` with empty release nodes. This allows people to incrementally add new release notes until it's time for the next release
1. Go to the [Github Milestones](https://github.com/solana-labs/solana/milestones). Create a new milestone for the `X.Y.Z+1`, move over
unresolved issues still in the `X.Y.Z` milestone, then close the `X.Y.Z` milestone.
### Verify release automation success
1. Go to [Solana Releases](https://github.com/solana-labs/solana/releases) and click on the latest release that you just published. Verify that all of the build artifacts are present. This can take up to 90 minutes after creating the tag.
1. The `solana-secondary` Buildkite pipeline handles creating the binary tarballs and updated crates. Look for a job under the tag name of the release: https://buildkite.com/solana-labs/solana-secondary
1. [Crates.io](https://crates.io/crates/solana) should have an updated Solana version.
Go to [Solana Releases](https://github.com/solana-labs/solana/releases) and click on the latest release that you just published.
Verify that all of the build artifacts are present, then the uncheck **"This is a pre-release"** for the release.
### Update documentation
TODO: Documentation update procedure is WIP as we move to gitbook
Build artifacts can take up to 60 minutes after creating the tag before
appearing. To check for progress:
* The `solana-secondary` Buildkite pipeline handles creating the Linux release artifacts and updated crates. Look for a job under the tag name of the release: https://buildkite.com/solana-labs/solana-secondary.
* The macOS and Windows release artifacts are produced by Travis CI: https://travis-ci.com/github/solana-labs/solana/branches
Document the new recommended version by updating `docs/src/running-archiver.md` and `docs/src/validator-testnet.md` on the release (beta) branch to point at the `solana-install` for the upcoming release version.
[Crates.io](https://crates.io/crates/solana) should have an updated Solana version. This can take 2-3 hours, and sometimes fails in the `solana-secondary` job.
If this happens and the error is non-fatal, click "Retry" on the "publish crate" job
### Update software on devnet.solana.com
The testnet running on devnet.solana.com is set to use a fixed release tag
which is set in the Buildkite testnet-management pipeline.
This tag needs to be updated and the testnet restarted after a new release
tag is created.
#### Update testnet schedules
Go to https://buildkite.com/solana-labs and click through: Pipelines ->
testnet-management -> Pipeline Settings -> Schedules
Or just click here:
https://buildkite.com/solana-labs/testnet-management/settings/schedules
There are two scheduled jobs for testnet: a daily restart and an hourly sanity-or-restart. \
https://buildkite.com/solana-labs/testnet-management/settings/schedules/0efd7856-7143-4713-8817-47e6bdb05387
https://buildkite.com/solana-labs/testnet-management/settings/schedules/2a926646-d972-42b5-aeb9-bb6759592a53
On each schedule:
1. Set TESTNET_TAG environment variable to the desired release tag.
1. Example, TESTNET_TAG=v0.13.2
1. Set the Build Branch to the branch that TESTNET_TAG is from.
1. Example: v0.13
#### Restart the testnet
Trigger a TESTNET_OP=create-and-start to refresh the cluster with the new version
1. Go to https://buildkite.com/solana-labs/testnet-management
2. Click "New Build" and use the following settings, then click "Create Build"
1. Commit: HEAD
1. Branch: [channel branch as set in the schedules]
1. Environment Variables:
```
TESTNET=testnet
TESTNET_TAG=[same value as used in TESTNET_TAG in the schedules]
TESTNET_OP=create-and-start
```
### Alert the community
Notify Discord users on #validator-support that a new release for
devnet.solana.com is available
### Update software on devnet.solana.com/testnet.solama.com/mainnet-beta.solana.com
See the documentation at https://github.com/solana-labs/cluster-ops/

View File

@@ -0,0 +1,29 @@
[package]
name = "solana-account-decoder"
version = "1.3.2"
description = "Solana account decoder"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
homepage = "https://solana.com/"
license = "Apache-2.0"
edition = "2018"
[dependencies]
base64 = "0.12.3"
bincode = "1.3.1"
bs58 = "0.3.1"
bv = "0.11.1"
Inflector = "0.11.4"
lazy_static = "1.4.0"
solana-config-program = { path = "../programs/config", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
solana-stake-program = { path = "../programs/stake", version = "1.3.2" }
solana-vote-program = { path = "../programs/vote", version = "1.3.2" }
spl-token-v1-0 = { package = "spl-token", version = "1.0.6", features = ["skip-no-mangle"] }
serde = "1.0.112"
serde_derive = "1.0.103"
serde_json = "1.0.56"
thiserror = "1.0"
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

173
account-decoder/src/lib.rs Normal file
View File

@@ -0,0 +1,173 @@
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate serde_derive;
pub mod parse_account_data;
pub mod parse_config;
pub mod parse_nonce;
pub mod parse_stake;
pub mod parse_sysvar;
pub mod parse_token;
pub mod parse_vote;
pub mod validator_info;
use crate::parse_account_data::{parse_account_data, AccountAdditionalData, ParsedAccount};
use solana_sdk::{account::Account, clock::Epoch, fee_calculator::FeeCalculator, pubkey::Pubkey};
use std::str::FromStr;
pub type StringAmount = String;
/// A duplicate representation of an Account for pretty JSON serialization
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct UiAccount {
pub lamports: u64,
pub data: UiAccountData,
pub owner: String,
pub executable: bool,
pub rent_epoch: Epoch,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", untagged)]
pub enum UiAccountData {
Binary(String),
Json(ParsedAccount),
Binary64(String),
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum UiAccountEncoding {
Binary,
JsonParsed,
Binary64,
}
impl UiAccount {
pub fn encode(
pubkey: &Pubkey,
account: Account,
encoding: UiAccountEncoding,
additional_data: Option<AccountAdditionalData>,
data_slice_config: Option<UiDataSliceConfig>,
) -> Self {
let data = match encoding {
UiAccountEncoding::Binary => UiAccountData::Binary(
bs58::encode(slice_data(&account.data, data_slice_config)).into_string(),
),
UiAccountEncoding::Binary64 => UiAccountData::Binary64(base64::encode(slice_data(
&account.data,
data_slice_config,
))),
UiAccountEncoding::JsonParsed => {
if let Ok(parsed_data) =
parse_account_data(pubkey, &account.owner, &account.data, additional_data)
{
UiAccountData::Json(parsed_data)
} else {
UiAccountData::Binary64(base64::encode(&account.data))
}
}
};
UiAccount {
lamports: account.lamports,
data,
owner: account.owner.to_string(),
executable: account.executable,
rent_epoch: account.rent_epoch,
}
}
pub fn decode(&self) -> Option<Account> {
let data = match &self.data {
UiAccountData::Json(_) => None,
UiAccountData::Binary(blob) => bs58::decode(blob).into_vec().ok(),
UiAccountData::Binary64(blob) => base64::decode(blob).ok(),
}?;
Some(Account {
lamports: self.lamports,
data,
owner: Pubkey::from_str(&self.owner).ok()?,
executable: self.executable,
rent_epoch: self.rent_epoch,
})
}
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiFeeCalculator {
pub lamports_per_signature: StringAmount,
}
impl From<FeeCalculator> for UiFeeCalculator {
fn from(fee_calculator: FeeCalculator) -> Self {
Self {
lamports_per_signature: fee_calculator.lamports_per_signature.to_string(),
}
}
}
impl Default for UiFeeCalculator {
fn default() -> Self {
Self {
lamports_per_signature: "0".to_string(),
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UiDataSliceConfig {
pub offset: usize,
pub length: usize,
}
fn slice_data(data: &[u8], data_slice_config: Option<UiDataSliceConfig>) -> &[u8] {
if let Some(UiDataSliceConfig { offset, length }) = data_slice_config {
if offset >= data.len() {
&[]
} else if length > data.len() - offset {
&data[offset..]
} else {
&data[offset..offset + length]
}
} else {
data
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_slice_data() {
let data = vec![1, 2, 3, 4, 5];
let slice_config = Some(UiDataSliceConfig {
offset: 0,
length: 5,
});
assert_eq!(slice_data(&data, slice_config), &data[..]);
let slice_config = Some(UiDataSliceConfig {
offset: 0,
length: 10,
});
assert_eq!(slice_data(&data, slice_config), &data[..]);
let slice_config = Some(UiDataSliceConfig {
offset: 1,
length: 2,
});
assert_eq!(slice_data(&data, slice_config), &data[1..3]);
let slice_config = Some(UiDataSliceConfig {
offset: 10,
length: 2,
});
assert_eq!(slice_data(&data, slice_config), &[] as &[u8]);
}
}

View File

@@ -0,0 +1,145 @@
use crate::{
parse_config::parse_config,
parse_nonce::parse_nonce,
parse_stake::parse_stake,
parse_sysvar::parse_sysvar,
parse_token::{parse_token, spl_token_id_v1_0},
parse_vote::parse_vote,
};
use inflector::Inflector;
use serde_json::Value;
use solana_sdk::{instruction::InstructionError, pubkey::Pubkey, system_program, sysvar};
use std::collections::HashMap;
use thiserror::Error;
lazy_static! {
static ref CONFIG_PROGRAM_ID: Pubkey = solana_config_program::id();
static ref STAKE_PROGRAM_ID: Pubkey = solana_stake_program::id();
static ref SYSTEM_PROGRAM_ID: Pubkey = system_program::id();
static ref SYSVAR_PROGRAM_ID: Pubkey = sysvar::id();
static ref TOKEN_PROGRAM_ID: Pubkey = spl_token_id_v1_0();
static ref VOTE_PROGRAM_ID: Pubkey = solana_vote_program::id();
pub static ref PARSABLE_PROGRAM_IDS: HashMap<Pubkey, ParsableAccount> = {
let mut m = HashMap::new();
m.insert(*CONFIG_PROGRAM_ID, ParsableAccount::Config);
m.insert(*SYSTEM_PROGRAM_ID, ParsableAccount::Nonce);
m.insert(*TOKEN_PROGRAM_ID, ParsableAccount::SplToken);
m.insert(*STAKE_PROGRAM_ID, ParsableAccount::Stake);
m.insert(*SYSVAR_PROGRAM_ID, ParsableAccount::Sysvar);
m.insert(*VOTE_PROGRAM_ID, ParsableAccount::Vote);
m
};
}
#[derive(Error, Debug)]
pub enum ParseAccountError {
#[error("{0:?} account not parsable")]
AccountNotParsable(ParsableAccount),
#[error("Program not parsable")]
ProgramNotParsable,
#[error("Additional data required to parse: {0}")]
AdditionalDataMissing(String),
#[error("Instruction error")]
InstructionError(#[from] InstructionError),
#[error("Serde json error")]
SerdeJsonError(#[from] serde_json::error::Error),
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ParsedAccount {
pub program: String,
pub parsed: Value,
pub space: u64,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ParsableAccount {
Config,
Nonce,
SplToken,
Stake,
Sysvar,
Vote,
}
#[derive(Default)]
pub struct AccountAdditionalData {
pub spl_token_decimals: Option<u8>,
}
pub fn parse_account_data(
pubkey: &Pubkey,
program_id: &Pubkey,
data: &[u8],
additional_data: Option<AccountAdditionalData>,
) -> Result<ParsedAccount, ParseAccountError> {
let program_name = PARSABLE_PROGRAM_IDS
.get(program_id)
.ok_or_else(|| ParseAccountError::ProgramNotParsable)?;
let additional_data = additional_data.unwrap_or_default();
let parsed_json = match program_name {
ParsableAccount::Config => serde_json::to_value(parse_config(data, pubkey)?)?,
ParsableAccount::Nonce => serde_json::to_value(parse_nonce(data)?)?,
ParsableAccount::SplToken => {
serde_json::to_value(parse_token(data, additional_data.spl_token_decimals)?)?
}
ParsableAccount::Stake => serde_json::to_value(parse_stake(data)?)?,
ParsableAccount::Sysvar => serde_json::to_value(parse_sysvar(data, pubkey)?)?,
ParsableAccount::Vote => serde_json::to_value(parse_vote(data)?)?,
};
Ok(ParsedAccount {
program: format!("{:?}", program_name).to_kebab_case(),
parsed: parsed_json,
space: data.len() as u64,
})
}
#[cfg(test)]
mod test {
use super::*;
use solana_sdk::nonce::{
state::{Data, Versions},
State,
};
use solana_vote_program::vote_state::{VoteState, VoteStateVersions};
#[test]
fn test_parse_account_data() {
let account_pubkey = Pubkey::new_rand();
let other_program = Pubkey::new_rand();
let data = vec![0; 4];
assert!(parse_account_data(&account_pubkey, &other_program, &data, None).is_err());
let vote_state = VoteState::default();
let mut vote_account_data: Vec<u8> = vec![0; VoteState::size_of()];
let versioned = VoteStateVersions::Current(Box::new(vote_state));
VoteState::serialize(&versioned, &mut vote_account_data).unwrap();
let parsed = parse_account_data(
&account_pubkey,
&solana_vote_program::id(),
&vote_account_data,
None,
)
.unwrap();
assert_eq!(parsed.program, "vote".to_string());
assert_eq!(parsed.space, VoteState::size_of() as u64);
let nonce_data = Versions::new_current(State::Initialized(Data::default()));
let nonce_account_data = bincode::serialize(&nonce_data).unwrap();
let parsed = parse_account_data(
&account_pubkey,
&system_program::id(),
&nonce_account_data,
None,
)
.unwrap();
assert_eq!(parsed.program, "nonce".to_string());
assert_eq!(parsed.space, State::size() as u64);
}
}

View File

@@ -0,0 +1,146 @@
use crate::{
parse_account_data::{ParsableAccount, ParseAccountError},
validator_info,
};
use bincode::deserialize;
use serde_json::Value;
use solana_config_program::{get_config_data, ConfigKeys};
use solana_sdk::pubkey::Pubkey;
use solana_stake_program::config::Config as StakeConfig;
pub fn parse_config(data: &[u8], pubkey: &Pubkey) -> Result<ConfigAccountType, ParseAccountError> {
let parsed_account = if pubkey == &solana_stake_program::config::id() {
get_config_data(data)
.ok()
.and_then(|data| deserialize::<StakeConfig>(data).ok())
.map(|config| ConfigAccountType::StakeConfig(config.into()))
} else {
deserialize::<ConfigKeys>(data).ok().and_then(|key_list| {
if !key_list.keys.is_empty() && key_list.keys[0].0 == validator_info::id() {
parse_config_data::<String>(data, key_list.keys).and_then(|validator_info| {
Some(ConfigAccountType::ValidatorInfo(UiConfig {
keys: validator_info.keys,
config_data: serde_json::from_str(&validator_info.config_data).ok()?,
}))
})
} else {
None
}
})
};
parsed_account.ok_or(ParseAccountError::AccountNotParsable(
ParsableAccount::Config,
))
}
fn parse_config_data<T>(data: &[u8], keys: Vec<(Pubkey, bool)>) -> Option<UiConfig<T>>
where
T: serde::de::DeserializeOwned,
{
let config_data: T = deserialize(&get_config_data(data).ok()?).ok()?;
let keys = keys
.iter()
.map(|key| UiConfigKey {
pubkey: key.0.to_string(),
signer: key.1,
})
.collect();
Some(UiConfig { keys, config_data })
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase", tag = "type", content = "info")]
pub enum ConfigAccountType {
StakeConfig(UiStakeConfig),
ValidatorInfo(UiConfig<Value>),
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiConfigKey {
pub pubkey: String,
pub signer: bool,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiStakeConfig {
pub warmup_cooldown_rate: f64,
pub slash_penalty: u8,
}
impl From<StakeConfig> for UiStakeConfig {
fn from(config: StakeConfig) -> Self {
Self {
warmup_cooldown_rate: config.warmup_cooldown_rate,
slash_penalty: config.slash_penalty,
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiConfig<T> {
pub keys: Vec<UiConfigKey>,
pub config_data: T,
}
#[cfg(test)]
mod test {
use super::*;
use crate::validator_info::ValidatorInfo;
use serde_json::json;
use solana_config_program::create_config_account;
#[test]
fn test_parse_config() {
let stake_config = StakeConfig {
warmup_cooldown_rate: 0.25,
slash_penalty: 50,
};
let stake_config_account = create_config_account(vec![], &stake_config, 10);
assert_eq!(
parse_config(
&stake_config_account.data,
&solana_stake_program::config::id()
)
.unwrap(),
ConfigAccountType::StakeConfig(UiStakeConfig {
warmup_cooldown_rate: 0.25,
slash_penalty: 50,
}),
);
let validator_info = ValidatorInfo {
info: serde_json::to_string(&json!({
"name": "Solana",
}))
.unwrap(),
};
let info_pubkey = Pubkey::new_rand();
let validator_info_config_account = create_config_account(
vec![(validator_info::id(), false), (info_pubkey, true)],
&validator_info,
10,
);
assert_eq!(
parse_config(&validator_info_config_account.data, &info_pubkey).unwrap(),
ConfigAccountType::ValidatorInfo(UiConfig {
keys: vec![
UiConfigKey {
pubkey: validator_info::id().to_string(),
signer: false,
},
UiConfigKey {
pubkey: info_pubkey.to_string(),
signer: true,
}
],
config_data: serde_json::from_str(r#"{"name":"Solana"}"#).unwrap(),
}),
);
let bad_data = vec![0; 4];
assert!(parse_config(&bad_data, &info_pubkey).is_err());
}
}

View File

@@ -0,0 +1,67 @@
use crate::{parse_account_data::ParseAccountError, UiFeeCalculator};
use solana_sdk::{
instruction::InstructionError,
nonce::{state::Versions, State},
};
pub fn parse_nonce(data: &[u8]) -> Result<UiNonceState, ParseAccountError> {
let nonce_state: Versions = bincode::deserialize(data)
.map_err(|_| ParseAccountError::from(InstructionError::InvalidAccountData))?;
let nonce_state = nonce_state.convert_to_current();
match nonce_state {
State::Uninitialized => Ok(UiNonceState::Uninitialized),
State::Initialized(data) => Ok(UiNonceState::Initialized(UiNonceData {
authority: data.authority.to_string(),
blockhash: data.blockhash.to_string(),
fee_calculator: data.fee_calculator.into(),
})),
}
}
/// A duplicate representation of NonceState for pretty JSON serialization
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase", tag = "type", content = "info")]
pub enum UiNonceState {
Uninitialized,
Initialized(UiNonceData),
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiNonceData {
pub authority: String,
pub blockhash: String,
pub fee_calculator: UiFeeCalculator,
}
#[cfg(test)]
mod test {
use super::*;
use solana_sdk::{
hash::Hash,
nonce::{
state::{Data, Versions},
State,
},
pubkey::Pubkey,
};
#[test]
fn test_parse_nonce() {
let nonce_data = Versions::new_current(State::Initialized(Data::default()));
let nonce_account_data = bincode::serialize(&nonce_data).unwrap();
assert_eq!(
parse_nonce(&nonce_account_data).unwrap(),
UiNonceState::Initialized(UiNonceData {
authority: Pubkey::default().to_string(),
blockhash: Hash::default().to_string(),
fee_calculator: UiFeeCalculator {
lamports_per_signature: 0.to_string(),
},
}),
);
let bad_data = vec![0; 4];
assert!(parse_nonce(&bad_data).is_err());
}
}

View File

@@ -0,0 +1,235 @@
use crate::{
parse_account_data::{ParsableAccount, ParseAccountError},
StringAmount,
};
use bincode::deserialize;
use solana_sdk::clock::{Epoch, UnixTimestamp};
use solana_stake_program::stake_state::{Authorized, Delegation, Lockup, Meta, Stake, StakeState};
pub fn parse_stake(data: &[u8]) -> Result<StakeAccountType, ParseAccountError> {
let stake_state: StakeState = deserialize(data)
.map_err(|_| ParseAccountError::AccountNotParsable(ParsableAccount::Stake))?;
let parsed_account = match stake_state {
StakeState::Uninitialized => StakeAccountType::Uninitialized,
StakeState::Initialized(meta) => StakeAccountType::Initialized(UiStakeAccount {
meta: meta.into(),
stake: None,
}),
StakeState::Stake(meta, stake) => StakeAccountType::Delegated(UiStakeAccount {
meta: meta.into(),
stake: Some(stake.into()),
}),
StakeState::RewardsPool => StakeAccountType::RewardsPool,
};
Ok(parsed_account)
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase", tag = "type", content = "info")]
pub enum StakeAccountType {
Uninitialized,
Initialized(UiStakeAccount),
Delegated(UiStakeAccount),
RewardsPool,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiStakeAccount {
pub meta: UiMeta,
pub stake: Option<UiStake>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiMeta {
pub rent_exempt_reserve: StringAmount,
pub authorized: UiAuthorized,
pub lockup: UiLockup,
}
impl From<Meta> for UiMeta {
fn from(meta: Meta) -> Self {
Self {
rent_exempt_reserve: meta.rent_exempt_reserve.to_string(),
authorized: meta.authorized.into(),
lockup: meta.lockup.into(),
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiLockup {
pub unix_timestamp: UnixTimestamp,
pub epoch: Epoch,
pub custodian: String,
}
impl From<Lockup> for UiLockup {
fn from(lockup: Lockup) -> Self {
Self {
unix_timestamp: lockup.unix_timestamp,
epoch: lockup.epoch,
custodian: lockup.custodian.to_string(),
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiAuthorized {
pub staker: String,
pub withdrawer: String,
}
impl From<Authorized> for UiAuthorized {
fn from(authorized: Authorized) -> Self {
Self {
staker: authorized.staker.to_string(),
withdrawer: authorized.withdrawer.to_string(),
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiStake {
pub delegation: UiDelegation,
pub credits_observed: u64,
}
impl From<Stake> for UiStake {
fn from(stake: Stake) -> Self {
Self {
delegation: stake.delegation.into(),
credits_observed: stake.credits_observed,
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiDelegation {
pub voter: String,
pub stake: StringAmount,
pub activation_epoch: StringAmount,
pub deactivation_epoch: StringAmount,
pub warmup_cooldown_rate: f64,
}
impl From<Delegation> for UiDelegation {
fn from(delegation: Delegation) -> Self {
Self {
voter: delegation.voter_pubkey.to_string(),
stake: delegation.stake.to_string(),
activation_epoch: delegation.activation_epoch.to_string(),
deactivation_epoch: delegation.deactivation_epoch.to_string(),
warmup_cooldown_rate: delegation.warmup_cooldown_rate,
}
}
}
#[cfg(test)]
mod test {
use super::*;
use bincode::serialize;
use solana_sdk::pubkey::Pubkey;
#[test]
fn test_parse_stake() {
let stake_state = StakeState::Uninitialized;
let stake_data = serialize(&stake_state).unwrap();
assert_eq!(
parse_stake(&stake_data).unwrap(),
StakeAccountType::Uninitialized
);
let pubkey = Pubkey::new_rand();
let custodian = Pubkey::new_rand();
let authorized = Authorized::auto(&pubkey);
let lockup = Lockup {
unix_timestamp: 0,
epoch: 1,
custodian,
};
let meta = Meta {
rent_exempt_reserve: 42,
authorized,
lockup,
};
let stake_state = StakeState::Initialized(meta);
let stake_data = serialize(&stake_state).unwrap();
assert_eq!(
parse_stake(&stake_data).unwrap(),
StakeAccountType::Initialized(UiStakeAccount {
meta: UiMeta {
rent_exempt_reserve: 42.to_string(),
authorized: UiAuthorized {
staker: pubkey.to_string(),
withdrawer: pubkey.to_string(),
},
lockup: UiLockup {
unix_timestamp: 0,
epoch: 1,
custodian: custodian.to_string(),
}
},
stake: None,
})
);
let voter_pubkey = Pubkey::new_rand();
let stake = Stake {
delegation: Delegation {
voter_pubkey,
stake: 20,
activation_epoch: 2,
deactivation_epoch: std::u64::MAX,
warmup_cooldown_rate: 0.25,
},
credits_observed: 10,
};
let stake_state = StakeState::Stake(meta, stake);
let stake_data = serialize(&stake_state).unwrap();
assert_eq!(
parse_stake(&stake_data).unwrap(),
StakeAccountType::Delegated(UiStakeAccount {
meta: UiMeta {
rent_exempt_reserve: 42.to_string(),
authorized: UiAuthorized {
staker: pubkey.to_string(),
withdrawer: pubkey.to_string(),
},
lockup: UiLockup {
unix_timestamp: 0,
epoch: 1,
custodian: custodian.to_string(),
}
},
stake: Some(UiStake {
delegation: UiDelegation {
voter: voter_pubkey.to_string(),
stake: 20.to_string(),
activation_epoch: 2.to_string(),
deactivation_epoch: std::u64::MAX.to_string(),
warmup_cooldown_rate: 0.25,
},
credits_observed: 10,
})
})
);
let stake_state = StakeState::RewardsPool;
let stake_data = serialize(&stake_state).unwrap();
assert_eq!(
parse_stake(&stake_data).unwrap(),
StakeAccountType::RewardsPool
);
let bad_data = vec![1, 2, 3, 4];
assert!(parse_stake(&bad_data).is_err());
}
}

View File

@@ -0,0 +1,328 @@
use crate::{
parse_account_data::{ParsableAccount, ParseAccountError},
StringAmount, UiFeeCalculator,
};
use bincode::deserialize;
use bv::BitVec;
use solana_sdk::{
clock::{Clock, Epoch, Slot, UnixTimestamp},
epoch_schedule::EpochSchedule,
pubkey::Pubkey,
rent::Rent,
slot_hashes::SlotHashes,
slot_history::{self, SlotHistory},
stake_history::{StakeHistory, StakeHistoryEntry},
sysvar::{self, fees::Fees, recent_blockhashes::RecentBlockhashes, rewards::Rewards},
};
pub fn parse_sysvar(data: &[u8], pubkey: &Pubkey) -> Result<SysvarAccountType, ParseAccountError> {
let parsed_account = {
if pubkey == &sysvar::clock::id() {
deserialize::<Clock>(data)
.ok()
.map(|clock| SysvarAccountType::Clock(clock.into()))
} else if pubkey == &sysvar::epoch_schedule::id() {
deserialize(data).ok().map(SysvarAccountType::EpochSchedule)
} else if pubkey == &sysvar::fees::id() {
deserialize::<Fees>(data)
.ok()
.map(|fees| SysvarAccountType::Fees(fees.into()))
} else if pubkey == &sysvar::recent_blockhashes::id() {
deserialize::<RecentBlockhashes>(data)
.ok()
.map(|recent_blockhashes| {
let recent_blockhashes = recent_blockhashes
.iter()
.map(|entry| UiRecentBlockhashesEntry {
blockhash: entry.blockhash.to_string(),
fee_calculator: entry.fee_calculator.clone().into(),
})
.collect();
SysvarAccountType::RecentBlockhashes(recent_blockhashes)
})
} else if pubkey == &sysvar::rent::id() {
deserialize::<Rent>(data)
.ok()
.map(|rent| SysvarAccountType::Rent(rent.into()))
} else if pubkey == &sysvar::rewards::id() {
deserialize::<Rewards>(data)
.ok()
.map(|rewards| SysvarAccountType::Rewards(rewards.into()))
} else if pubkey == &sysvar::slot_hashes::id() {
deserialize::<SlotHashes>(data).ok().map(|slot_hashes| {
let slot_hashes = slot_hashes
.iter()
.map(|slot_hash| UiSlotHashEntry {
slot: slot_hash.0,
hash: slot_hash.1.to_string(),
})
.collect();
SysvarAccountType::SlotHashes(slot_hashes)
})
} else if pubkey == &sysvar::slot_history::id() {
deserialize::<SlotHistory>(data).ok().map(|slot_history| {
SysvarAccountType::SlotHistory(UiSlotHistory {
next_slot: slot_history.next_slot,
bits: format!("{:?}", SlotHistoryBits(slot_history.bits)),
})
})
} else if pubkey == &sysvar::stake_history::id() {
deserialize::<StakeHistory>(data).ok().map(|stake_history| {
let stake_history = stake_history
.iter()
.map(|entry| UiStakeHistoryEntry {
epoch: entry.0,
stake_history: entry.1.clone(),
})
.collect();
SysvarAccountType::StakeHistory(stake_history)
})
} else {
None
}
};
parsed_account.ok_or(ParseAccountError::AccountNotParsable(
ParsableAccount::Sysvar,
))
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase", tag = "type", content = "info")]
pub enum SysvarAccountType {
Clock(UiClock),
EpochSchedule(EpochSchedule),
Fees(UiFees),
RecentBlockhashes(Vec<UiRecentBlockhashesEntry>),
Rent(UiRent),
Rewards(UiRewards),
SlotHashes(Vec<UiSlotHashEntry>),
SlotHistory(UiSlotHistory),
StakeHistory(Vec<UiStakeHistoryEntry>),
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Default)]
#[serde(rename_all = "camelCase")]
pub struct UiClock {
pub slot: Slot,
pub epoch: Epoch,
pub leader_schedule_epoch: Epoch,
pub unix_timestamp: UnixTimestamp,
}
impl From<Clock> for UiClock {
fn from(clock: Clock) -> Self {
Self {
slot: clock.slot,
epoch: clock.epoch,
leader_schedule_epoch: clock.leader_schedule_epoch,
unix_timestamp: clock.unix_timestamp,
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Default)]
#[serde(rename_all = "camelCase")]
pub struct UiFees {
pub fee_calculator: UiFeeCalculator,
}
impl From<Fees> for UiFees {
fn from(fees: Fees) -> Self {
Self {
fee_calculator: fees.fee_calculator.into(),
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Default)]
#[serde(rename_all = "camelCase")]
pub struct UiRent {
pub lamports_per_byte_year: StringAmount,
pub exemption_threshold: f64,
pub burn_percent: u8,
}
impl From<Rent> for UiRent {
fn from(rent: Rent) -> Self {
Self {
lamports_per_byte_year: rent.lamports_per_byte_year.to_string(),
exemption_threshold: rent.exemption_threshold,
burn_percent: rent.burn_percent,
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Default)]
#[serde(rename_all = "camelCase")]
pub struct UiRewards {
pub validator_point_value: f64,
}
impl From<Rewards> for UiRewards {
fn from(rewards: Rewards) -> Self {
Self {
validator_point_value: rewards.validator_point_value,
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiRecentBlockhashesEntry {
pub blockhash: String,
pub fee_calculator: UiFeeCalculator,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiSlotHashEntry {
pub slot: Slot,
pub hash: String,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiSlotHistory {
pub next_slot: Slot,
pub bits: String,
}
struct SlotHistoryBits(BitVec<u64>);
impl std::fmt::Debug for SlotHistoryBits {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
for i in 0..slot_history::MAX_ENTRIES {
if self.0.get(i) {
write!(f, "1")?;
} else {
write!(f, "0")?;
}
}
Ok(())
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiStakeHistoryEntry {
pub epoch: Epoch,
pub stake_history: StakeHistoryEntry,
}
#[cfg(test)]
mod test {
use super::*;
use solana_sdk::{
fee_calculator::FeeCalculator,
hash::Hash,
sysvar::{recent_blockhashes::IterItem, Sysvar},
};
use std::iter::FromIterator;
#[test]
fn test_parse_sysvars() {
let clock_sysvar = Clock::default().create_account(1);
assert_eq!(
parse_sysvar(&clock_sysvar.data, &sysvar::clock::id()).unwrap(),
SysvarAccountType::Clock(UiClock::default()),
);
let epoch_schedule = EpochSchedule {
slots_per_epoch: 12,
leader_schedule_slot_offset: 0,
warmup: false,
first_normal_epoch: 1,
first_normal_slot: 12,
};
let epoch_schedule_sysvar = epoch_schedule.create_account(1);
assert_eq!(
parse_sysvar(&epoch_schedule_sysvar.data, &sysvar::epoch_schedule::id()).unwrap(),
SysvarAccountType::EpochSchedule(epoch_schedule),
);
let fees_sysvar = Fees::default().create_account(1);
assert_eq!(
parse_sysvar(&fees_sysvar.data, &sysvar::fees::id()).unwrap(),
SysvarAccountType::Fees(UiFees::default()),
);
let hash = Hash::new(&[1; 32]);
let fee_calculator = FeeCalculator {
lamports_per_signature: 10,
};
let recent_blockhashes =
RecentBlockhashes::from_iter(vec![IterItem(0, &hash, &fee_calculator)].into_iter());
let recent_blockhashes_sysvar = recent_blockhashes.create_account(1);
assert_eq!(
parse_sysvar(
&recent_blockhashes_sysvar.data,
&sysvar::recent_blockhashes::id()
)
.unwrap(),
SysvarAccountType::RecentBlockhashes(vec![UiRecentBlockhashesEntry {
blockhash: hash.to_string(),
fee_calculator: fee_calculator.into(),
}]),
);
let rent = Rent {
lamports_per_byte_year: 10,
exemption_threshold: 2.0,
burn_percent: 5,
};
let rent_sysvar = rent.create_account(1);
assert_eq!(
parse_sysvar(&rent_sysvar.data, &sysvar::rent::id()).unwrap(),
SysvarAccountType::Rent(rent.into()),
);
let rewards_sysvar = Rewards::default().create_account(1);
assert_eq!(
parse_sysvar(&rewards_sysvar.data, &sysvar::rewards::id()).unwrap(),
SysvarAccountType::Rewards(UiRewards::default()),
);
let mut slot_hashes = SlotHashes::default();
slot_hashes.add(1, hash);
let slot_hashes_sysvar = slot_hashes.create_account(1);
assert_eq!(
parse_sysvar(&slot_hashes_sysvar.data, &sysvar::slot_hashes::id()).unwrap(),
SysvarAccountType::SlotHashes(vec![UiSlotHashEntry {
slot: 1,
hash: hash.to_string(),
}]),
);
let mut slot_history = SlotHistory::default();
slot_history.add(42);
let slot_history_sysvar = slot_history.create_account(1);
assert_eq!(
parse_sysvar(&slot_history_sysvar.data, &sysvar::slot_history::id()).unwrap(),
SysvarAccountType::SlotHistory(UiSlotHistory {
next_slot: slot_history.next_slot,
bits: format!("{:?}", SlotHistoryBits(slot_history.bits)),
}),
);
let mut stake_history = StakeHistory::default();
let stake_history_entry = StakeHistoryEntry {
effective: 10,
activating: 2,
deactivating: 3,
};
stake_history.add(1, stake_history_entry.clone());
let stake_history_sysvar = stake_history.create_account(1);
assert_eq!(
parse_sysvar(&stake_history_sysvar.data, &sysvar::stake_history::id()).unwrap(),
SysvarAccountType::StakeHistory(vec![UiStakeHistoryEntry {
epoch: 1,
stake_history: stake_history_entry,
}]),
);
let bad_pubkey = Pubkey::new_rand();
assert!(parse_sysvar(&stake_history_sysvar.data, &bad_pubkey).is_err());
let bad_data = vec![0; 4];
assert!(parse_sysvar(&bad_data, &sysvar::stake_history::id()).is_err());
}
}

View File

@@ -0,0 +1,250 @@
use crate::{
parse_account_data::{ParsableAccount, ParseAccountError},
StringAmount,
};
use solana_sdk::pubkey::Pubkey;
use spl_token_v1_0::{
option::COption,
solana_sdk::pubkey::Pubkey as SplTokenPubkey,
state::{unpack, Account, Mint, Multisig},
};
use std::{mem::size_of, str::FromStr};
// A helper function to convert spl_token_v1_0::id() as spl_sdk::pubkey::Pubkey to
// solana_sdk::pubkey::Pubkey
pub fn spl_token_id_v1_0() -> Pubkey {
Pubkey::from_str(&spl_token_v1_0::id().to_string()).unwrap()
}
// A helper function to convert spl_token_v1_0::native_mint::id() as spl_sdk::pubkey::Pubkey to
// solana_sdk::pubkey::Pubkey
pub fn spl_token_v1_0_native_mint() -> Pubkey {
Pubkey::from_str(&spl_token_v1_0::native_mint::id().to_string()).unwrap()
}
pub fn parse_token(
data: &[u8],
mint_decimals: Option<u8>,
) -> Result<TokenAccountType, ParseAccountError> {
let mut data = data.to_vec();
if data.len() == size_of::<Account>() {
let account: Account = *unpack(&mut data)
.map_err(|_| ParseAccountError::AccountNotParsable(ParsableAccount::SplToken))?;
let decimals = mint_decimals.ok_or_else(|| {
ParseAccountError::AdditionalDataMissing(
"no mint_decimals provided to parse spl-token account".to_string(),
)
})?;
Ok(TokenAccountType::Account(UiTokenAccount {
mint: account.mint.to_string(),
owner: account.owner.to_string(),
token_amount: token_amount_to_ui_amount(account.amount, decimals),
delegate: match account.delegate {
COption::Some(pubkey) => Some(pubkey.to_string()),
COption::None => None,
},
is_initialized: account.is_initialized,
is_native: account.is_native,
delegated_amount: if account.delegate.is_none() {
None
} else {
Some(token_amount_to_ui_amount(
account.delegated_amount,
decimals,
))
},
}))
} else if data.len() == size_of::<Mint>() {
let mint: Mint = *unpack(&mut data)
.map_err(|_| ParseAccountError::AccountNotParsable(ParsableAccount::SplToken))?;
Ok(TokenAccountType::Mint(UiMint {
owner: match mint.owner {
COption::Some(pubkey) => Some(pubkey.to_string()),
COption::None => None,
},
decimals: mint.decimals,
is_initialized: mint.is_initialized,
}))
} else if data.len() == size_of::<Multisig>() {
let multisig: Multisig = *unpack(&mut data)
.map_err(|_| ParseAccountError::AccountNotParsable(ParsableAccount::SplToken))?;
Ok(TokenAccountType::Multisig(UiMultisig {
num_required_signers: multisig.m,
num_valid_signers: multisig.n,
is_initialized: multisig.is_initialized,
signers: multisig
.signers
.iter()
.filter_map(|pubkey| {
if pubkey != &SplTokenPubkey::default() {
Some(pubkey.to_string())
} else {
None
}
})
.collect(),
}))
} else {
Err(ParseAccountError::AccountNotParsable(
ParsableAccount::SplToken,
))
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase", tag = "type", content = "info")]
pub enum TokenAccountType {
Account(UiTokenAccount),
Mint(UiMint),
Multisig(UiMultisig),
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiTokenAccount {
pub mint: String,
pub owner: String,
pub token_amount: UiTokenAmount,
#[serde(skip_serializing_if = "Option::is_none")]
pub delegate: Option<String>,
pub is_initialized: bool,
pub is_native: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub delegated_amount: Option<UiTokenAmount>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiTokenAmount {
pub ui_amount: f64,
pub decimals: u8,
pub amount: StringAmount,
}
pub fn token_amount_to_ui_amount(amount: u64, decimals: u8) -> UiTokenAmount {
// Use `amount_to_ui_amount()` once spl_token is bumped to a version that supports it: https://github.com/solana-labs/solana-program-library/pull/211
let amount_decimals = amount as f64 / 10_usize.pow(decimals as u32) as f64;
UiTokenAmount {
ui_amount: amount_decimals,
decimals,
amount: amount.to_string(),
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiMint {
pub owner: Option<String>,
pub decimals: u8,
pub is_initialized: bool,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiMultisig {
pub num_required_signers: u8,
pub num_valid_signers: u8,
pub is_initialized: bool,
pub signers: Vec<String>,
}
pub fn get_token_account_mint(data: &[u8]) -> Option<Pubkey> {
if data.len() == size_of::<Account>() {
Some(Pubkey::new(&data[0..32]))
} else {
None
}
}
#[cfg(test)]
mod test {
use super::*;
use spl_token_v1_0::state::unpack_unchecked;
#[test]
fn test_parse_token() {
let mint_pubkey = SplTokenPubkey::new(&[2; 32]);
let owner_pubkey = SplTokenPubkey::new(&[3; 32]);
let mut account_data = [0; size_of::<Account>()];
let mut account: &mut Account = unpack_unchecked(&mut account_data).unwrap();
account.mint = mint_pubkey;
account.owner = owner_pubkey;
account.amount = 42;
account.is_initialized = true;
assert!(parse_token(&account_data, None).is_err());
assert_eq!(
parse_token(&account_data, Some(2)).unwrap(),
TokenAccountType::Account(UiTokenAccount {
mint: mint_pubkey.to_string(),
owner: owner_pubkey.to_string(),
token_amount: UiTokenAmount {
ui_amount: 0.42,
decimals: 2,
amount: "42".to_string()
},
delegate: None,
is_initialized: true,
is_native: false,
delegated_amount: None,
}),
);
let mut mint_data = [0; size_of::<Mint>()];
let mut mint: &mut Mint = unpack_unchecked(&mut mint_data).unwrap();
mint.owner = COption::Some(owner_pubkey);
mint.decimals = 3;
mint.is_initialized = true;
assert_eq!(
parse_token(&mint_data, None).unwrap(),
TokenAccountType::Mint(UiMint {
owner: Some(owner_pubkey.to_string()),
decimals: 3,
is_initialized: true,
}),
);
let signer1 = SplTokenPubkey::new(&[1; 32]);
let signer2 = SplTokenPubkey::new(&[2; 32]);
let signer3 = SplTokenPubkey::new(&[3; 32]);
let mut multisig_data = [0; size_of::<Multisig>()];
let mut multisig: &mut Multisig = unpack_unchecked(&mut multisig_data).unwrap();
let mut signers = [SplTokenPubkey::default(); 11];
signers[0] = signer1;
signers[1] = signer2;
signers[2] = signer3;
multisig.m = 2;
multisig.n = 3;
multisig.is_initialized = true;
multisig.signers = signers;
assert_eq!(
parse_token(&multisig_data, None).unwrap(),
TokenAccountType::Multisig(UiMultisig {
num_required_signers: 2,
num_valid_signers: 3,
is_initialized: true,
signers: vec![
signer1.to_string(),
signer2.to_string(),
signer3.to_string()
],
}),
);
let bad_data = vec![0; 4];
assert!(parse_token(&bad_data, None).is_err());
}
#[test]
fn test_get_token_account_mint() {
let mint_pubkey = SplTokenPubkey::new(&[2; 32]);
let mut account_data = [0; size_of::<Account>()];
let mut account: &mut Account = unpack_unchecked(&mut account_data).unwrap();
account.mint = mint_pubkey;
let expected_mint_pubkey = Pubkey::new(&[2; 32]);
assert_eq!(
get_token_account_mint(&account_data),
Some(expected_mint_pubkey)
);
}
}

View File

@@ -0,0 +1,144 @@
use crate::{parse_account_data::ParseAccountError, StringAmount};
use solana_sdk::{
clock::{Epoch, Slot},
pubkey::Pubkey,
};
use solana_vote_program::vote_state::{BlockTimestamp, Lockout, VoteState};
pub fn parse_vote(data: &[u8]) -> Result<VoteAccountType, ParseAccountError> {
let mut vote_state = VoteState::deserialize(data).map_err(ParseAccountError::from)?;
let epoch_credits = vote_state
.epoch_credits()
.iter()
.map(|(epoch, credits, previous_credits)| UiEpochCredits {
epoch: *epoch,
credits: credits.to_string(),
previous_credits: previous_credits.to_string(),
})
.collect();
let votes = vote_state
.votes
.iter()
.map(|lockout| UiLockout {
slot: lockout.slot,
confirmation_count: lockout.confirmation_count,
})
.collect();
let authorized_voters = vote_state
.authorized_voters()
.iter()
.map(|(epoch, authorized_voter)| UiAuthorizedVoters {
epoch: *epoch,
authorized_voter: authorized_voter.to_string(),
})
.collect();
let prior_voters = vote_state
.prior_voters()
.buf()
.iter()
.filter(|(pubkey, _, _)| pubkey != &Pubkey::default())
.map(
|(authorized_pubkey, epoch_of_last_authorized_switch, target_epoch)| UiPriorVoters {
authorized_pubkey: authorized_pubkey.to_string(),
epoch_of_last_authorized_switch: *epoch_of_last_authorized_switch,
target_epoch: *target_epoch,
},
)
.collect();
Ok(VoteAccountType::Vote(UiVoteState {
node_pubkey: vote_state.node_pubkey.to_string(),
authorized_withdrawer: vote_state.authorized_withdrawer.to_string(),
commission: vote_state.commission,
votes,
root_slot: vote_state.root_slot,
authorized_voters,
prior_voters,
epoch_credits,
last_timestamp: vote_state.last_timestamp,
}))
}
/// A wrapper enum for consistency across programs
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase", tag = "type", content = "info")]
pub enum VoteAccountType {
Vote(UiVoteState),
}
/// A duplicate representation of VoteState for pretty JSON serialization
#[derive(Debug, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct UiVoteState {
node_pubkey: String,
authorized_withdrawer: String,
commission: u8,
votes: Vec<UiLockout>,
root_slot: Option<Slot>,
authorized_voters: Vec<UiAuthorizedVoters>,
prior_voters: Vec<UiPriorVoters>,
epoch_credits: Vec<UiEpochCredits>,
last_timestamp: BlockTimestamp,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
struct UiLockout {
slot: Slot,
confirmation_count: u32,
}
impl From<&Lockout> for UiLockout {
fn from(lockout: &Lockout) -> Self {
Self {
slot: lockout.slot,
confirmation_count: lockout.confirmation_count,
}
}
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
struct UiAuthorizedVoters {
epoch: Epoch,
authorized_voter: String,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
struct UiPriorVoters {
authorized_pubkey: String,
epoch_of_last_authorized_switch: Epoch,
target_epoch: Epoch,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
struct UiEpochCredits {
epoch: Epoch,
credits: StringAmount,
previous_credits: StringAmount,
}
#[cfg(test)]
mod test {
use super::*;
use solana_vote_program::vote_state::VoteStateVersions;
#[test]
fn test_parse_vote() {
let vote_state = VoteState::default();
let mut vote_account_data: Vec<u8> = vec![0; VoteState::size_of()];
let versioned = VoteStateVersions::Current(Box::new(vote_state));
VoteState::serialize(&versioned, &mut vote_account_data).unwrap();
let mut expected_vote_state = UiVoteState::default();
expected_vote_state.node_pubkey = Pubkey::default().to_string();
expected_vote_state.authorized_withdrawer = Pubkey::default().to_string();
assert_eq!(
parse_vote(&vote_account_data).unwrap(),
VoteAccountType::Vote(expected_vote_state)
);
let bad_data = vec![0; 4];
assert!(parse_vote(&bad_data).is_err());
}
}

View File

@@ -0,0 +1,18 @@
use solana_config_program::ConfigState;
pub const MAX_SHORT_FIELD_LENGTH: usize = 70;
pub const MAX_LONG_FIELD_LENGTH: usize = 300;
pub const MAX_VALIDATOR_INFO: u64 = 576;
solana_sdk::declare_id!("Va1idator1nfo111111111111111111111111111111");
#[derive(Debug, Deserialize, PartialEq, Serialize, Default)]
pub struct ValidatorInfo {
pub info: String,
}
impl ConfigState for ValidatorInfo {
fn max_space() -> u64 {
MAX_VALIDATOR_INFO
}
}

View File

@@ -1,19 +1,19 @@
[package]
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
edition = "2018"
name = "solana-accounts-bench"
version = "1.2.0"
version = "1.3.2"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
[dependencies]
log = "0.4.6"
rayon = "1.3.0"
solana-logger = { path = "../logger", version = "1.2.0" }
solana-runtime = { path = "../runtime", version = "1.2.0" }
solana-measure = { path = "../measure", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
rayon = "1.3.1"
solana-logger = { path = "../logger", version = "1.3.2" }
solana-runtime = { path = "../runtime", version = "1.3.2" }
solana-measure = { path = "../measure", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
rand = "0.7.0"
clap = "2.33.1"
crossbeam-channel = "0.4"

View File

@@ -1,8 +1,8 @@
[package]
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
edition = "2018"
name = "solana-banking-bench"
version = "1.2.0"
version = "1.3.2"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -12,17 +12,17 @@ clap = "2.33.1"
crossbeam-channel = "0.4"
log = "0.4.6"
rand = "0.7.0"
rayon = "1.3.0"
solana-core = { path = "../core", version = "1.2.0" }
solana-clap-utils = { path = "../clap-utils", version = "1.2.0" }
solana-streamer = { path = "../streamer", version = "1.2.0" }
solana-perf = { path = "../perf", version = "1.2.0" }
solana-ledger = { path = "../ledger", version = "1.2.0" }
solana-logger = { path = "../logger", version = "1.2.0" }
solana-runtime = { path = "../runtime", version = "1.2.0" }
solana-measure = { path = "../measure", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
solana-version = { path = "../version", version = "1.2.0" }
rayon = "1.3.1"
solana-core = { path = "../core", version = "1.3.2" }
solana-clap-utils = { path = "../clap-utils", version = "1.3.2" }
solana-streamer = { path = "../streamer", version = "1.3.2" }
solana-perf = { path = "../perf", version = "1.3.2" }
solana-ledger = { path = "../ledger", version = "1.3.2" }
solana-logger = { path = "../logger", version = "1.3.2" }
solana-runtime = { path = "../runtime", version = "1.3.2" }
solana-measure = { path = "../measure", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
solana-version = { path = "../version", version = "1.3.2" }
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

View File

@@ -11,14 +11,13 @@ use solana_core::{
poh_recorder::WorkingBankEntry,
};
use solana_ledger::{
bank_forks::BankForks,
blockstore::Blockstore,
genesis_utils::{create_genesis_config, GenesisConfigInfo},
get_tmp_ledger_path,
};
use solana_measure::measure::Measure;
use solana_perf::packet::to_packets_chunked;
use solana_runtime::bank::Bank;
use solana_runtime::{bank::Bank, bank_forks::BankForks};
use solana_sdk::{
hash::Hash,
pubkey::Pubkey,
@@ -168,8 +167,9 @@ fn main() {
let (verified_sender, verified_receiver) = unbounded();
let (vote_sender, vote_receiver) = unbounded();
let (replay_vote_sender, _replay_vote_receiver) = unbounded();
let bank0 = Bank::new(&genesis_config);
let mut bank_forks = BankForks::new(0, bank0);
let mut bank_forks = BankForks::new(bank0);
let mut bank = bank_forks.working_bank();
info!("threads: {} txs: {}", num_threads, total_num_transactions);
@@ -209,7 +209,7 @@ fn main() {
bank.clear_signatures();
}
let mut verified: Vec<_> = to_packets_chunked(&transactions.clone(), packets_per_chunk);
let mut verified: Vec<_> = to_packets_chunked(&transactions, packets_per_chunk);
let ledger_path = get_tmp_ledger_path!();
{
let blockstore = Arc::new(
@@ -225,6 +225,7 @@ fn main() {
verified_receiver,
vote_receiver,
None,
replay_vote_sender,
);
poh_recorder.lock().unwrap().set_bank(&bank);

View File

@@ -1,8 +1,8 @@
[package]
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
edition = "2018"
name = "solana-bench-exchange"
version = "1.2.0"
version = "1.3.2"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -15,24 +15,24 @@ log = "0.4.8"
num-derive = "0.3"
num-traits = "0.2"
rand = "0.7.0"
rayon = "1.3.0"
serde_json = "1.0.53"
serde_yaml = "0.8.12"
solana-clap-utils = { path = "../clap-utils", version = "1.2.0" }
solana-core = { path = "../core", version = "1.2.0" }
solana-genesis = { path = "../genesis", version = "1.2.0" }
solana-client = { path = "../client", version = "1.2.0" }
solana-faucet = { path = "../faucet", version = "1.2.0" }
solana-exchange-program = { path = "../programs/exchange", version = "1.2.0" }
solana-logger = { path = "../logger", version = "1.2.0" }
solana-metrics = { path = "../metrics", version = "1.2.0" }
solana-net-utils = { path = "../net-utils", version = "1.2.0" }
solana-runtime = { path = "../runtime", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
solana-version = { path = "../version", version = "1.2.0" }
rayon = "1.3.1"
serde_json = "1.0.56"
serde_yaml = "0.8.13"
solana-clap-utils = { path = "../clap-utils", version = "1.3.2" }
solana-core = { path = "../core", version = "1.3.2" }
solana-genesis = { path = "../genesis", version = "1.3.2" }
solana-client = { path = "../client", version = "1.3.2" }
solana-faucet = { path = "../faucet", version = "1.3.2" }
solana-exchange-program = { path = "../programs/exchange", version = "1.3.2" }
solana-logger = { path = "../logger", version = "1.3.2" }
solana-metrics = { path = "../metrics", version = "1.3.2" }
solana-net-utils = { path = "../net-utils", version = "1.3.2" }
solana-runtime = { path = "../runtime", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
solana-version = { path = "../version", version = "1.3.2" }
[dev-dependencies]
solana-local-cluster = { path = "../local-cluster", version = "1.2.0" }
solana-local-cluster = { path = "../local-cluster", version = "1.3.2" }
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

View File

@@ -14,6 +14,7 @@ use solana_metrics::datapoint_info;
use solana_sdk::{
client::{Client, SyncClient},
commitment_config::CommitmentConfig,
message::Message,
pubkey::Pubkey,
signature::{Keypair, Signer},
timing::{duration_as_ms, duration_as_s},
@@ -178,19 +179,13 @@ where
info!("Generating {:?} account keys", total_keys);
let mut account_keypairs = generate_keypairs(total_keys);
let src_keypairs: Vec<_> = account_keypairs
.drain(0..accounts_in_groups)
.map(|keypair| keypair)
.collect();
let src_keypairs: Vec<_> = account_keypairs.drain(0..accounts_in_groups).collect();
let src_pubkeys: Vec<Pubkey> = src_keypairs
.iter()
.map(|keypair| keypair.pubkey())
.collect();
let profit_keypairs: Vec<_> = account_keypairs
.drain(0..accounts_in_groups)
.map(|keypair| keypair)
.collect();
let profit_keypairs: Vec<_> = account_keypairs.drain(0..accounts_in_groups).collect();
let profit_pubkeys: Vec<Pubkey> = profit_keypairs
.iter()
.map(|keypair| keypair.pubkey())
@@ -449,7 +444,7 @@ fn swapper<T>(
}
account_group = (account_group + 1) % account_groups as usize;
let (blockhash, _fee_calculator) = client
let (blockhash, _fee_calculator, _last_valid_slot) = client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.expect("Failed to get blockhash");
let to_swap_txs: Vec<_> = to_swap
@@ -457,16 +452,14 @@ fn swapper<T>(
.map(|(signer, swap, profit)| {
let s: &Keypair = &signer;
let owner = &signer.pubkey();
Transaction::new_signed_instructions(
&[s],
&[exchange_instruction::swap_request(
owner,
&swap.0.pubkey,
&swap.1.pubkey,
&profit,
)],
blockhash,
)
let instruction = exchange_instruction::swap_request(
owner,
&swap.0.pubkey,
&swap.1.pubkey,
&profit,
);
let message = Message::new(&[instruction], Some(&s.pubkey()));
Transaction::new(&[s], message, blockhash)
})
.collect();
@@ -577,7 +570,7 @@ fn trader<T>(
}
account_group = (account_group + 1) % account_groups as usize;
let (blockhash, _fee_calculator) = client
let (blockhash, _fee_calculator, _last_valid_slot) = client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.expect("Failed to get blockhash");
@@ -588,28 +581,26 @@ fn trader<T>(
let owner_pubkey = &owner.pubkey();
let trade_pubkey = &trade.pubkey();
let space = mem::size_of::<ExchangeState>() as u64;
Transaction::new_signed_instructions(
&[owner.as_ref(), trade],
&[
system_instruction::create_account(
owner_pubkey,
trade_pubkey,
1,
space,
&id(),
),
exchange_instruction::trade_request(
owner_pubkey,
trade_pubkey,
*side,
pair,
tokens,
price,
src,
),
],
blockhash,
)
let instructions = [
system_instruction::create_account(
owner_pubkey,
trade_pubkey,
1,
space,
&id(),
),
exchange_instruction::trade_request(
owner_pubkey,
trade_pubkey,
*side,
pair,
tokens,
price,
src,
),
];
let message = Message::new(&instructions, Some(&owner_pubkey));
Transaction::new(&[owner.as_ref(), trade], message, blockhash)
})
.collect();
@@ -747,13 +738,9 @@ pub fn fund_keys<T: Client>(client: &T, source: &Keypair, dests: &[Arc<Keypair>]
let mut to_fund_txs: Vec<_> = chunk
.par_iter()
.map(|(k, m)| {
(
k.clone(),
Transaction::new_unsigned_instructions(&system_instruction::transfer_many(
&k.pubkey(),
&m,
)),
)
let instructions = system_instruction::transfer_many(&k.pubkey(), &m);
let message = Message::new(&instructions, Some(&k.pubkey()));
(k.clone(), Transaction::new_unsigned(message))
})
.collect();
@@ -776,7 +763,7 @@ pub fn fund_keys<T: Client>(client: &T, source: &Keypair, dests: &[Arc<Keypair>]
to_fund_txs.len(),
);
let (blockhash, _fee_calculator) = client
let (blockhash, _fee_calculator, _last_valid_slot) = client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.expect("blockhash");
to_fund_txs.par_iter_mut().for_each(|(k, tx)| {
@@ -848,9 +835,10 @@ pub fn create_token_accounts<T: Client>(
);
let request_ix =
exchange_instruction::account_request(owner_pubkey, &new_keypair.pubkey());
let message = Message::new(&[create_ix, request_ix], Some(&owner_pubkey));
(
(from_keypair, new_keypair),
Transaction::new_unsigned_instructions(&[create_ix, request_ix]),
Transaction::new_unsigned(message),
)
})
.collect();
@@ -868,7 +856,7 @@ pub fn create_token_accounts<T: Client>(
let mut retries = 0;
while !to_create_txs.is_empty() {
let (blockhash, _fee_calculator) = client
let (blockhash, _fee_calculator, _last_valid_slot) = client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.expect("Failed to get blockhash");
to_create_txs
@@ -997,7 +985,7 @@ pub fn airdrop_lamports<T: Client>(
let mut tries = 0;
loop {
let (blockhash, _fee_calculator) = client
let (blockhash, _fee_calculator, _last_valid_slot) = client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.expect("Failed to get blockhash");
match request_airdrop_transaction(&faucet_addr, &id.pubkey(), amount_to_drop, blockhash) {

View File

@@ -1,19 +1,19 @@
[package]
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
edition = "2018"
name = "solana-bench-streamer"
version = "1.2.0"
version = "1.3.2"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
[dependencies]
clap = "2.33.1"
solana-clap-utils = { path = "../clap-utils", version = "1.2.0" }
solana-streamer = { path = "../streamer", version = "1.2.0" }
solana-logger = { path = "../logger", version = "1.2.0" }
solana-net-utils = { path = "../net-utils", version = "1.2.0" }
solana-version = { path = "../version", version = "1.2.0" }
solana-clap-utils = { path = "../clap-utils", version = "1.3.2" }
solana-streamer = { path = "../streamer", version = "1.3.2" }
solana-logger = { path = "../logger", version = "1.3.2" }
solana-net-utils = { path = "../net-utils", version = "1.3.2" }
solana-version = { path = "../version", version = "1.3.2" }
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

View File

@@ -1,41 +1,36 @@
[package]
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
edition = "2018"
name = "solana-bench-tps"
version = "1.2.0"
version = "1.3.2"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
[dependencies]
bincode = "1.2.1"
bincode = "1.3.1"
clap = "2.33.1"
log = "0.4.8"
rayon = "1.3.0"
serde_json = "1.0.53"
serde_yaml = "0.8.12"
solana-clap-utils = { path = "../clap-utils", version = "1.2.0" }
solana-core = { path = "../core", version = "1.2.0" }
solana-genesis = { path = "../genesis", version = "1.2.0" }
solana-client = { path = "../client", version = "1.2.0" }
solana-faucet = { path = "../faucet", version = "1.2.0" }
solana-librapay = { path = "../programs/librapay", version = "1.2.0", optional = true }
solana-logger = { path = "../logger", version = "1.2.0" }
solana-metrics = { path = "../metrics", version = "1.2.0" }
solana-measure = { path = "../measure", version = "1.2.0" }
solana-net-utils = { path = "../net-utils", version = "1.2.0" }
solana-runtime = { path = "../runtime", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
solana-move-loader-program = { path = "../programs/move_loader", version = "1.2.0", optional = true }
solana-version = { path = "../version", version = "1.2.0" }
rayon = "1.3.1"
serde_json = "1.0.56"
serde_yaml = "0.8.13"
solana-clap-utils = { path = "../clap-utils", version = "1.3.2" }
solana-core = { path = "../core", version = "1.3.2" }
solana-genesis = { path = "../genesis", version = "1.3.2" }
solana-client = { path = "../client", version = "1.3.2" }
solana-faucet = { path = "../faucet", version = "1.3.2" }
solana-logger = { path = "../logger", version = "1.3.2" }
solana-metrics = { path = "../metrics", version = "1.3.2" }
solana-measure = { path = "../measure", version = "1.3.2" }
solana-net-utils = { path = "../net-utils", version = "1.3.2" }
solana-runtime = { path = "../runtime", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
solana-version = { path = "../version", version = "1.3.2" }
[dev-dependencies]
serial_test = "0.4.0"
serial_test_derive = "0.4.0"
solana-local-cluster = { path = "../local-cluster", version = "1.2.0" }
[features]
move = ["solana-librapay", "solana-move-loader-program"]
solana-local-cluster = { path = "../local-cluster", version = "1.3.2" }
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

View File

@@ -4,8 +4,6 @@ use rayon::prelude::*;
use solana_client::perf_utils::{sample_txs, SampleStats};
use solana_core::gen_keys::GenKeys;
use solana_faucet::faucet::request_airdrop_transaction;
#[cfg(feature = "move")]
use solana_librapay::{create_genesis, upload_mint_script, upload_payment_script};
use solana_measure::measure::Measure;
use solana_metrics::{self, datapoint_info};
use solana_sdk::{
@@ -14,6 +12,7 @@ use solana_sdk::{
commitment_config::CommitmentConfig,
fee_calculator::FeeCalculator,
hash::Hash,
message::Message,
pubkey::Pubkey,
signature::{Keypair, Signer},
system_instruction, system_transaction,
@@ -36,9 +35,6 @@ use std::{
const MAX_TX_QUEUE_AGE: u64 =
MAX_PROCESSING_AGE as u64 * DEFAULT_TICKS_PER_SLOT / DEFAULT_TICKS_PER_SECOND;
#[cfg(feature = "move")]
use solana_librapay::librapay_transaction;
pub const MAX_SPENDS_PER_TX: u64 = 4;
#[derive(Debug)]
@@ -50,12 +46,12 @@ pub type Result<T> = std::result::Result<T, BenchTpsError>;
pub type SharedTransactions = Arc<RwLock<VecDeque<Vec<(Transaction, u64)>>>>;
type LibraKeys = (Keypair, Pubkey, Pubkey, Vec<Keypair>);
fn get_recent_blockhash<T: Client>(client: &T) -> (Hash, FeeCalculator) {
loop {
match client.get_recent_blockhash_with_commitment(CommitmentConfig::recent()) {
Ok((blockhash, fee_calculator)) => return (blockhash, fee_calculator),
Ok((blockhash, fee_calculator, _last_valid_slot)) => {
return (blockhash, fee_calculator)
}
Err(err) => {
info!("Couldn't get recent blockhash: {:?}", err);
sleep(Duration::from_secs(1));
@@ -119,7 +115,6 @@ fn generate_chunked_transfers(
threads: usize,
duration: Duration,
sustained: bool,
libra_args: Option<LibraKeys>,
) {
// generate and send transactions for the specified duration
let start = Instant::now();
@@ -134,7 +129,6 @@ fn generate_chunked_transfers(
&dest_keypair_chunks[chunk_index],
threads,
reclaim_lamports_back_to_source_account,
&libra_args,
);
// In sustained mode, overlap the transfers with generation. This has higher average
@@ -202,12 +196,7 @@ where
.collect()
}
pub fn do_bench_tps<T>(
client: Arc<T>,
config: Config,
gen_keypairs: Vec<Keypair>,
libra_args: Option<LibraKeys>,
) -> u64
pub fn do_bench_tps<T>(client: Arc<T>, config: Config, gen_keypairs: Vec<Keypair>) -> u64
where
T: 'static + Client + Send + Sync,
{
@@ -291,7 +280,6 @@ where
threads,
duration,
sustained,
libra_args,
);
// Stop the sampling threads so it will collect the stats
@@ -337,52 +325,6 @@ fn metrics_submit_lamport_balance(lamport_balance: u64) {
);
}
#[cfg(feature = "move")]
fn generate_move_txs(
source: &[&Keypair],
dest: &VecDeque<&Keypair>,
reclaim: bool,
move_keypairs: &[Keypair],
libra_pay_program_id: &Pubkey,
libra_mint_id: &Pubkey,
blockhash: &Hash,
) -> Vec<(Transaction, u64)> {
let count = move_keypairs.len() / 2;
let source_move = &move_keypairs[..count];
let dest_move = &move_keypairs[count..];
let pairs: Vec<_> = if !reclaim {
source_move
.iter()
.zip(dest_move.iter())
.zip(source.iter())
.collect()
} else {
dest_move
.iter()
.zip(source_move.iter())
.zip(dest.iter())
.collect()
};
pairs
.par_iter()
.map(|((from, to), payer)| {
(
librapay_transaction::transfer(
libra_pay_program_id,
libra_mint_id,
&payer,
&from,
&to.pubkey(),
1,
*blockhash,
),
timestamp(),
)
})
.collect()
}
fn generate_system_txs(
source: &[&Keypair],
dest: &VecDeque<&Keypair>,
@@ -413,7 +355,6 @@ fn generate_txs(
dest: &VecDeque<&Keypair>,
threads: usize,
reclaim: bool,
libra_args: &Option<LibraKeys>,
) {
let blockhash = *blockhash.read().unwrap();
let tx_count = source.len();
@@ -423,33 +364,7 @@ fn generate_txs(
);
let signing_start = Instant::now();
let transactions = if let Some((
_libra_genesis_keypair,
_libra_pay_program_id,
_libra_mint_program_id,
_libra_keys,
)) = libra_args
{
#[cfg(not(feature = "move"))]
{
return;
}
#[cfg(feature = "move")]
{
generate_move_txs(
source,
dest,
reclaim,
&_libra_keys,
_libra_pay_program_id,
&_libra_genesis_keypair.pubkey(),
&blockhash,
)
}
} else {
generate_system_txs(source, dest, reclaim, &blockhash)
};
let transactions = generate_system_txs(source, dest, reclaim, &blockhash);
let duration = signing_start.elapsed();
let ns = duration.as_secs() * 1_000_000_000 + u64::from(duration.subsec_nanos());
@@ -650,10 +565,9 @@ impl<'a> FundingTransactions<'a> for Vec<(&'a Keypair, Transaction)> {
let to_fund_txs: Vec<(&Keypair, Transaction)> = to_fund
.par_iter()
.map(|(k, t)| {
let tx = Transaction::new_unsigned_instructions(
&system_instruction::transfer_many(&k.pubkey(), &t),
);
(*k, tx)
let instructions = system_instruction::transfer_many(&k.pubkey(), &t);
let message = Message::new(&instructions, Some(&k.pubkey()));
(*k, Transaction::new_unsigned(message))
})
.collect();
make_txs.stop();
@@ -952,181 +866,13 @@ pub fn generate_keypairs(seed_keypair: &Keypair, count: u64) -> (Vec<Keypair>, u
(rnd.gen_n_keypairs(total_keys), extra)
}
#[cfg(feature = "move")]
fn fund_move_keys<T: Client>(
client: &T,
funding_key: &Keypair,
keypairs: &[Keypair],
total: u64,
libra_pay_program_id: &Pubkey,
libra_mint_program_id: &Pubkey,
libra_genesis_key: &Keypair,
) {
let (mut blockhash, _fee_calculator) = get_recent_blockhash(client);
info!("creating the libra funding account..");
let libra_funding_key = Keypair::new();
let tx = librapay_transaction::create_account(funding_key, &libra_funding_key, 1, blockhash);
client
.send_message(&[funding_key, &libra_funding_key], tx.message)
.unwrap();
info!("minting to funding keypair");
let tx = librapay_transaction::mint_tokens(
&libra_mint_program_id,
funding_key,
libra_genesis_key,
&libra_funding_key.pubkey(),
total,
blockhash,
);
client
.send_message(&[funding_key, libra_genesis_key], tx.message)
.unwrap();
info!("creating {} move accounts...", keypairs.len());
let total_len = keypairs.len();
let create_len = 5;
let mut funding_time = Measure::start("funding_time");
for (i, keys) in keypairs.chunks(create_len).enumerate() {
if client
.get_balance_with_commitment(&keys[0].pubkey(), CommitmentConfig::recent())
.unwrap_or(0)
> 0
{
// already created these accounts.
break;
}
let keypairs: Vec<_> = keys.iter().map(|k| k).collect();
let tx = librapay_transaction::create_accounts(funding_key, &keypairs, 1, blockhash);
let ser_size = bincode::serialized_size(&tx).unwrap();
let mut keys = vec![funding_key];
keys.extend(&keypairs);
client.send_message(&keys, tx.message).unwrap();
if i % 10 == 0 {
info!(
"created {} accounts of {} (size {})",
i,
total_len / create_len,
ser_size,
);
}
}
const NUM_FUNDING_KEYS: usize = 10;
let funding_keys: Vec<_> = (0..NUM_FUNDING_KEYS).map(|_| Keypair::new()).collect();
let pubkey_amounts: Vec<_> = funding_keys
.iter()
.map(|key| (key.pubkey(), total / NUM_FUNDING_KEYS as u64))
.collect();
let tx = Transaction::new_signed_instructions(
&[funding_key],
&system_instruction::transfer_many(&funding_key.pubkey(), &pubkey_amounts),
blockhash,
);
client.send_message(&[funding_key], tx.message).unwrap();
let mut balance = 0;
for _ in 0..20 {
if let Ok(balance_) = client
.get_balance_with_commitment(&funding_keys[0].pubkey(), CommitmentConfig::recent())
{
if balance_ > 0 {
balance = balance_;
break;
}
}
sleep(Duration::from_millis(100));
}
assert!(balance > 0);
info!(
"funded multiple funding accounts with {:?} lanports",
balance
);
let libra_funding_keys: Vec<_> = (0..NUM_FUNDING_KEYS).map(|_| Keypair::new()).collect();
for (i, key) in libra_funding_keys.iter().enumerate() {
let tx = librapay_transaction::create_account(&funding_keys[i], &key, 1, blockhash);
client
.send_message(&[&funding_keys[i], &key], tx.message)
.unwrap();
let tx = librapay_transaction::transfer(
libra_pay_program_id,
&libra_genesis_key.pubkey(),
&funding_keys[i],
&libra_funding_key,
&key.pubkey(),
total / NUM_FUNDING_KEYS as u64,
blockhash,
);
client
.send_message(&[&funding_keys[i], &libra_funding_key], tx.message)
.unwrap();
info!("funded libra funding key {}", i);
}
let keypair_count = keypairs.len();
let amount = total / (keypair_count as u64);
for (i, keys) in keypairs[..keypair_count]
.chunks(NUM_FUNDING_KEYS)
.enumerate()
{
for (j, key) in keys.iter().enumerate() {
let tx = librapay_transaction::transfer(
libra_pay_program_id,
&libra_genesis_key.pubkey(),
&funding_keys[j],
&libra_funding_keys[j],
&key.pubkey(),
amount,
blockhash,
);
let _sig = client
.async_send_transaction(tx.clone())
.expect("create_account in generate_and_fund_keypairs");
}
for (j, key) in keys.iter().enumerate() {
let mut times = 0;
loop {
let balance =
librapay_transaction::get_libra_balance(client, &key.pubkey()).unwrap();
if balance >= amount {
break;
} else if times > 20 {
info!("timed out.. {} key: {} balance: {}", i, j, balance);
break;
} else {
times += 1;
sleep(Duration::from_millis(100));
}
}
}
info!(
"funded group {} of {}",
i + 1,
keypairs.len() / NUM_FUNDING_KEYS
);
blockhash = get_recent_blockhash(client).0;
}
funding_time.stop();
info!("done funding keys, took {} ms", funding_time.as_ms());
}
pub fn generate_and_fund_keypairs<T: 'static + Client + Send + Sync>(
client: Arc<T>,
faucet_addr: Option<SocketAddr>,
funding_key: &Keypair,
keypair_count: usize,
lamports_per_account: u64,
use_move: bool,
) -> Result<(Vec<Keypair>, Option<LibraKeys>)> {
) -> Result<Vec<Keypair>> {
info!("Creating {} keypairs...", keypair_count);
let (mut keypairs, extra) = generate_keypairs(funding_key, keypair_count as u64);
info!("Get lamports...");
@@ -1139,12 +885,6 @@ pub fn generate_and_fund_keypairs<T: 'static + Client + Send + Sync>(
let last_key = keypairs[keypair_count - 1].pubkey();
let last_keypair_balance = client.get_balance(&last_key).unwrap_or(0);
#[cfg(feature = "move")]
let mut move_keypairs_ret = None;
#[cfg(not(feature = "move"))]
let move_keypairs_ret = None;
// Repeated runs will eat up keypair balances from transaction fees. In order to quickly
// start another bench-tps run without re-funding all of the keypairs, check if the
// keypairs still have at least 80% of the expected funds. That should be enough to
@@ -1155,10 +895,7 @@ pub fn generate_and_fund_keypairs<T: 'static + Client + Send + Sync>(
let max_fee = fee_rate_governor.max_lamports_per_signature;
let extra_fees = extra * max_fee;
let total_keypairs = keypairs.len() as u64 + 1; // Add one for funding keypair
let mut total = lamports_per_account * total_keypairs + extra_fees;
if use_move {
total *= 3;
}
let total = lamports_per_account * total_keypairs + extra_fees;
let funding_key_balance = client.get_balance(&funding_key.pubkey()).unwrap_or(0);
info!(
@@ -1170,40 +907,6 @@ pub fn generate_and_fund_keypairs<T: 'static + Client + Send + Sync>(
airdrop_lamports(client.as_ref(), &faucet_addr.unwrap(), funding_key, total)?;
}
#[cfg(feature = "move")]
{
if use_move {
let libra_genesis_keypair =
create_genesis(&funding_key, client.as_ref(), 10_000_000);
let libra_mint_program_id = upload_mint_script(&funding_key, client.as_ref());
let libra_pay_program_id = upload_payment_script(&funding_key, client.as_ref());
// Generate another set of keypairs for move accounts.
// Still fund the solana ones which will be used for fees.
let seed = [0u8; 32];
let mut rnd = GenKeys::new(seed);
let move_keypairs = rnd.gen_n_keypairs(keypair_count as u64);
fund_move_keys(
client.as_ref(),
funding_key,
&move_keypairs,
total / 3,
&libra_pay_program_id,
&libra_mint_program_id,
&libra_genesis_keypair,
);
move_keypairs_ret = Some((
libra_genesis_keypair,
libra_pay_program_id,
libra_mint_program_id,
move_keypairs,
));
// Give solana keys 1/3 and move keys 1/3 the lamports. Keep 1/3 for fees.
total /= 3;
}
}
fund_keys(
client,
funding_key,
@@ -1217,7 +920,7 @@ pub fn generate_and_fund_keypairs<T: 'static + Client + Send + Sync>(
// 'generate_keypairs' generates extra keys to be able to have size-aligned funding batches for fund_keys.
keypairs.truncate(keypair_count);
Ok((keypairs, move_keypairs_ret))
Ok(keypairs)
}
#[cfg(test)]
@@ -1241,11 +944,11 @@ mod tests {
config.duration = Duration::from_secs(5);
let keypair_count = config.tx_count * config.keypair_multiplier;
let (keypairs, _move_keypairs) =
generate_and_fund_keypairs(client.clone(), None, &config.id, keypair_count, 20, false)
let keypairs =
generate_and_fund_keypairs(client.clone(), None, &config.id, keypair_count, 20)
.unwrap();
do_bench_tps(client, config, keypairs, None);
do_bench_tps(client, config, keypairs);
}
#[test]
@@ -1256,9 +959,8 @@ mod tests {
let keypair_count = 20;
let lamports = 20;
let (keypairs, _move_keypairs) =
generate_and_fund_keypairs(client.clone(), None, &id, keypair_count, lamports, false)
.unwrap();
let keypairs =
generate_and_fund_keypairs(client.clone(), None, &id, keypair_count, lamports).unwrap();
for kp in &keypairs {
assert_eq!(
@@ -1280,9 +982,8 @@ mod tests {
let keypair_count = 20;
let lamports = 20;
let (keypairs, _move_keypairs) =
generate_and_fund_keypairs(client.clone(), None, &id, keypair_count, lamports, false)
.unwrap();
let keypairs =
generate_and_fund_keypairs(client.clone(), None, &id, keypair_count, lamports).unwrap();
for kp in &keypairs {
assert_eq!(client.get_balance(&kp.pubkey()).unwrap(), lamports);

View File

@@ -1,7 +1,10 @@
use clap::{crate_description, crate_name, App, Arg, ArgMatches};
use solana_faucet::faucet::FAUCET_PORT;
use solana_sdk::fee_calculator::FeeRateGovernor;
use solana_sdk::signature::{read_keypair_file, Keypair};
use solana_sdk::{
pubkey::Pubkey,
signature::{read_keypair_file, Keypair},
};
use std::{net::SocketAddr, process::exit, time::Duration};
const NUM_LAMPORTS_PER_ACCOUNT_DEFAULT: u64 = solana_sdk::native_token::LAMPORTS_PER_SOL;
@@ -23,9 +26,9 @@ pub struct Config {
pub read_from_client_file: bool,
pub target_lamports_per_signature: u64,
pub multi_client: bool,
pub use_move: bool,
pub num_lamports_per_account: u64,
pub target_slots_per_epoch: u64,
pub target_node: Option<Pubkey>,
}
impl Default for Config {
@@ -46,9 +49,9 @@ impl Default for Config {
read_from_client_file: false,
target_lamports_per_signature: FeeRateGovernor::default().target_lamports_per_signature,
multi_client: true,
use_move: false,
num_lamports_per_account: NUM_LAMPORTS_PER_ACCOUNT_DEFAULT,
target_slots_per_epoch: 0,
target_node: None,
}
}
}
@@ -109,16 +112,19 @@ pub fn build_args<'a, 'b>(version: &'b str) -> App<'a, 'b> {
.long("sustained")
.help("Use sustained performance mode vs. peak mode. This overlaps the tx generation with transfers."),
)
.arg(
Arg::with_name("use-move")
.long("use-move")
.help("Use Move language transactions to perform transfers."),
)
.arg(
Arg::with_name("no-multi-client")
.long("no-multi-client")
.help("Disable multi-client support, only transact with the entrypoint."),
)
.arg(
Arg::with_name("target_node")
.long("target-node")
.requires("no-multi-client")
.takes_value(true)
.value_name("PUBKEY")
.help("Specify an exact node to send transactions to."),
)
.arg(
Arg::with_name("tx_count")
.long("tx_count")
@@ -263,8 +269,10 @@ pub fn extract_args<'a>(matches: &ArgMatches<'a>) -> Config {
args.target_lamports_per_signature = v.to_string().parse().expect("can't parse lamports");
}
args.use_move = matches.is_present("use-move");
args.multi_client = !matches.is_present("no-multi-client");
args.target_node = matches
.value_of("target_node")
.map(|target_str| target_str.parse().unwrap());
if let Some(v) = matches.value_of("num_lamports_per_account") {
args.num_lamports_per_account = v.to_string().parse().expect("can't parse lamports");

View File

@@ -29,9 +29,9 @@ fn main() {
write_to_client_file,
read_from_client_file,
target_lamports_per_signature,
use_move,
multi_client,
num_lamports_per_account,
target_node,
..
} = &cli_config;
@@ -82,11 +82,24 @@ fn main() {
exit(1);
}
Arc::new(client)
} else if let Some(target_node) = target_node {
info!("Searching for target_node: {:?}", target_node);
let mut target_client = None;
for node in nodes {
if node.id == *target_node {
target_client = Some(Arc::new(get_client(&[node])));
break;
}
}
target_client.unwrap_or_else(|| {
eprintln!("Target node {} not found", target_node);
exit(1);
})
} else {
Arc::new(get_client(&nodes))
};
let (keypairs, move_keypairs) = if *read_from_client_file && !use_move {
let keypairs = if *read_from_client_file {
let path = Path::new(&client_ids_and_stake_file);
let file = File::open(path).unwrap();
@@ -115,8 +128,8 @@ fn main() {
// Sort keypairs so that do_bench_tps() uses the same subset of accounts for each run.
// This prevents the amount of storage needed for bench-tps accounts from creeping up
// across multiple runs.
keypairs.sort_by(|x, y| x.pubkey().to_string().cmp(&y.pubkey().to_string()));
(keypairs, None)
keypairs.sort_by_key(|x| x.pubkey().to_string());
keypairs
} else {
generate_and_fund_keypairs(
client.clone(),
@@ -124,7 +137,6 @@ fn main() {
&id,
keypair_count,
*num_lamports_per_account,
*use_move,
)
.unwrap_or_else(|e| {
eprintln!("Error could not fund keys: {:?}", e);
@@ -132,5 +144,5 @@ fn main() {
})
};
do_bench_tps(client, cli_config, keypairs, move_keypairs);
do_bench_tps(client, cli_config, keypairs);
}

View File

@@ -6,17 +6,11 @@ use solana_core::cluster_info::VALIDATOR_PORT_RANGE;
use solana_core::validator::ValidatorConfig;
use solana_faucet::faucet::run_local_faucet;
use solana_local_cluster::local_cluster::{ClusterConfig, LocalCluster};
#[cfg(feature = "move")]
use solana_sdk::move_loader::solana_move_loader_program;
use solana_sdk::signature::{Keypair, Signer};
use std::sync::{mpsc::channel, Arc};
use std::time::Duration;
fn test_bench_tps_local_cluster(config: Config) {
#[cfg(feature = "move")]
let native_instruction_processors = vec![solana_move_loader_program()];
#[cfg(not(feature = "move"))]
let native_instruction_processors = vec![];
solana_logger::setup();
@@ -48,17 +42,16 @@ fn test_bench_tps_local_cluster(config: Config) {
let lamports_per_account = 100;
let keypair_count = config.tx_count * config.keypair_multiplier;
let (keypairs, move_keypairs) = generate_and_fund_keypairs(
let keypairs = generate_and_fund_keypairs(
client.clone(),
Some(faucet_addr),
&config.id,
keypair_count,
lamports_per_account,
config.use_move,
)
.unwrap();
let _total = do_bench_tps(client, config, keypairs, move_keypairs);
let _total = do_bench_tps(client, config, keypairs);
#[cfg(not(debug_assertions))]
assert!(_total > 100);
@@ -73,14 +66,3 @@ fn test_bench_tps_local_cluster_solana() {
test_bench_tps_local_cluster(config);
}
#[test]
#[serial]
fn test_bench_tps_local_cluster_move() {
let mut config = Config::default();
config.tx_count = 100;
config.duration = Duration::from_secs(10);
config.use_move = true;
test_bench_tps_local_cluster(config);
}

View File

@@ -1,43 +0,0 @@
#!/usr/bin/env bash
#
# Checks if a CI build affects one or more path patterns. Each command-line
# argument is checked in series.
#
# Bash regular expressions are permitted in the pattern:
# ./affects-files.sh .rs$ -- any file or directory ending in .rs
# ./affects-files.sh .rs -- also matches foo.rs.bar
# ./affects-files.sh ^snap/ -- anything under the snap/ subdirectory
# ./affects-files.sh snap/ -- also matches foo/snap/
# Any pattern starting with the ! character will be negated:
# ./affects-files.sh !^docs/ -- anything *not* under the docs/ subdirectory
#
set -e
cd "$(dirname "$0")"/..
if [[ -n $CI_PULL_REQUEST ]]; then
affectedFiles="$(buildkite-agent meta-data get affected_files)"
echo "Affected files in this PR: $affectedFiles"
IFS=':' read -ra files <<< "$affectedFiles"
for pattern in "$@"; do
if [[ ${pattern:0:1} = "!" ]]; then
for file in "${files[@]}"; do
if [[ ! $file =~ ${pattern:1} ]]; then
exit 0
fi
done
else
for file in "${files[@]}"; do
if [[ $file =~ $pattern ]]; then
exit 0
fi
done
fi
done
exit 1
fi
# affected_files metadata is not currently available for non-PR builds, so assume
# the worse (affected)
exit 0

254
ci/buildkite-pipeline.sh Executable file
View File

@@ -0,0 +1,254 @@
#!/usr/bin/env bash
#
# Builds a buildkite pipeline based on the environment variables
#
set -e
cd "$(dirname "$0")"/..
output_file=${1:-/dev/stderr}
if [[ -n $CI_PULL_REQUEST ]]; then
IFS=':' read -ra affected_files <<< "$(buildkite-agent meta-data get affected_files)"
if [[ ${#affected_files[*]} -eq 0 ]]; then
echo "Unable to determine the files affected by this PR"
exit 1
fi
else
affected_files=()
fi
annotate() {
if [[ -n $BUILDKITE ]]; then
buildkite-agent annotate "$@"
fi
}
# Checks if a CI pull request affects one or more path patterns. Each
# pattern argument is checked in series. If one of them found to be affected,
# return immediately as such.
#
# Bash regular expressions are permitted in the pattern:
# affects .rs$ -- any file or directory ending in .rs
# affects .rs -- also matches foo.rs.bar
# affects ^snap/ -- anything under the snap/ subdirectory
# affects snap/ -- also matches foo/snap/
# Any pattern starting with the ! character will be negated:
# affects !^docs/ -- anything *not* under the docs/ subdirectory
#
affects() {
if [[ -z $CI_PULL_REQUEST ]]; then
# affected_files metadata is not currently available for non-PR builds so assume
# the worse (affected)
return 0
fi
# Assume everyting needs to be tested when any Dockerfile changes
for pattern in ^ci/docker-rust/Dockerfile ^ci/docker-rust-nightly/Dockerfile "$@"; do
if [[ ${pattern:0:1} = "!" ]]; then
for file in "${affected_files[@]}"; do
if [[ ! $file =~ ${pattern:1} ]]; then
return 0 # affected
fi
done
else
for file in "${affected_files[@]}"; do
if [[ $file =~ $pattern ]]; then
return 0 # affected
fi
done
fi
done
return 1 # not affected
}
# Checks if a CI pull request affects anything other than the provided path patterns
#
# Syntax is the same as `affects()` except that the negation prefix is not
# supported
#
affects_other_than() {
if [[ -z $CI_PULL_REQUEST ]]; then
# affected_files metadata is not currently available for non-PR builds so assume
# the worse (affected)
return 0
fi
for file in "${affected_files[@]}"; do
declare matched=false
for pattern in "$@"; do
if [[ $file =~ $pattern ]]; then
matched=true
fi
done
if ! $matched; then
return 0 # affected
fi
done
return 1 # not affected
}
start_pipeline() {
echo "# $*" > "$output_file"
echo "steps:" >> "$output_file"
}
command_step() {
cat >> "$output_file" <<EOF
- name: "$1"
command: "$2"
timeout_in_minutes: $3
artifact_paths: "log-*.txt"
EOF
}
trigger_secondary_step() {
cat >> "$output_file" <<"EOF"
- trigger: "solana-secondary"
branches: "!pull/*"
async: true
build:
message: "${BUILDKITE_MESSAGE}"
commit: "${BUILDKITE_COMMIT}"
branch: "${BUILDKITE_BRANCH}"
env:
TRIGGERED_BUILDKITE_TAG: "${BUILDKITE_TAG}"
EOF
}
wait_step() {
echo " - wait" >> "$output_file"
}
all_test_steps() {
command_step checks ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-checks.sh" 20
wait_step
# Coverage...
if affects \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
^ci/rust-version.sh \
^ci/test-coverage.sh \
^scripts/coverage.sh \
; then
command_step coverage ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-coverage.sh" 30
wait_step
else
annotate --style info --context test-coverage \
"Coverage skipped as no .rs files were modified"
fi
# Full test suite
command_step stable ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/test-stable.sh" 60
wait_step
# Perf test suite
if affects \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
^ci/rust-version.sh \
^ci/test-stable-perf.sh \
^ci/test-stable.sh \
^ci/test-local-cluster.sh \
^core/build.rs \
^fetch-perf-libs.sh \
^programs/ \
^sdk/ \
; then
cat >> "$output_file" <<"EOF"
- command: "ci/test-stable-perf.sh"
name: "stable-perf"
timeout_in_minutes: 40
artifact_paths: "log-*.txt"
agents:
- "queue=cuda"
EOF
else
annotate --style info \
"Stable-perf skipped as no relevant files were modified"
fi
# Benches...
if affects \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
^ci/rust-version.sh \
^ci/test-coverage.sh \
^ci/test-bench.sh \
; then
command_step bench "ci/test-bench.sh" 30
else
annotate --style info --context test-bench \
"Bench skipped as no .rs files were modified"
fi
command_step "local-cluster" \
". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/test-local-cluster.sh" \
45
}
pull_or_push_steps() {
command_step sanity "ci/test-sanity.sh" 5
wait_step
# Check for any .sh file changes
if affects .sh$; then
command_step shellcheck "ci/shellcheck.sh" 5
wait_step
fi
# Run the full test suite by default, skipping only if modifications are local
# to some particular areas of the tree
if affects_other_than ^.buildkite ^.mergify .md$ ^docs/ ^web3.js/ ^explorer/ ^.gitbook; then
all_test_steps
fi
# web3.js, explorer and docs changes run on Travis...
}
if [[ -n $BUILDKITE_TAG ]]; then
start_pipeline "Tag pipeline for $BUILDKITE_TAG"
annotate --style info --context release-tag \
"https://github.com/solana-labs/solana/releases/$BUILDKITE_TAG"
# Jump directly to the secondary build to publish release artifacts quickly
trigger_secondary_step
exit 0
fi
if [[ $BUILDKITE_BRANCH =~ ^pull ]]; then
echo "+++ Affected files in this PR"
for file in "${affected_files[@]}"; do
echo "- $file"
done
start_pipeline "Pull request pipeline for $BUILDKITE_BRANCH"
# Add helpful link back to the corresponding Github Pull Request
annotate --style info --context pr-backlink \
"Github Pull Request: https://github.com/solana-labs/solana/$BUILDKITE_BRANCH"
if [[ $GITHUB_USER = "dependabot-preview[bot]" ]]; then
command_step dependabot "ci/dependabot-pr.sh" 5
wait_step
fi
pull_or_push_steps
exit 0
fi
start_pipeline "Push pipeline for ${BUILDKITE_BRANCH:-?unknown branch?}"
pull_or_push_steps
wait_step
trigger_secondary_step
exit 0

View File

@@ -1,15 +0,0 @@
# Build steps that run on a release tag
#
# All the steps in `buildkite.yml` are skipped and we jump directly to the
# secondary build steps since it's assumed the commit that was tagged is known
# to be good so there's no need to rebuild and retest it.
steps:
- trigger: "solana-secondary"
branches: "!pull/*"
async: true
build:
message: "${BUILDKITE_MESSAGE}"
commit: "${BUILDKITE_COMMIT}"
branch: "${BUILDKITE_BRANCH}"
env:
TRIGGERED_BUILDKITE_TAG: "${BUILDKITE_TAG}"

View File

@@ -5,9 +5,6 @@ steps:
- command: "ci/publish-tarball.sh"
timeout_in_minutes: 60
name: "publish tarball"
- command: "ci/publish-docs.sh"
timeout_in_minutes: 15
name: "publish docs"
- command: "ci/publish-bpf-sdk.sh"
timeout_in_minutes: 5
name: "publish bpf sdk"
@@ -19,6 +16,3 @@ steps:
timeout_in_minutes: 240
name: "publish crate"
branches: "!master"
# - command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_stable_docker_image ci/test-move.sh"
# name: "move"
# timeout_in_minutes: 20

View File

@@ -1,26 +0,0 @@
# These steps are conditionally triggered by ci/buildkite.yml when files
# other than those in docs/ are modified
steps:
- command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_nightly_docker_image ci/test-coverage.sh"
name: "coverage"
timeout_in_minutes: 30
- wait
- command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_stable_docker_image ci/test-stable.sh"
name: "stable"
timeout_in_minutes: 60
artifact_paths: "log-*.txt"
- wait
- command: "ci/test-stable-perf.sh"
name: "stable-perf"
timeout_in_minutes: 40
artifact_paths: "log-*.txt"
agents:
- "queue=cuda"
- command: "ci/test-bench.sh"
name: "bench"
timeout_in_minutes: 30
- command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_stable_docker_image ci/test-local-cluster.sh"
name: "local-cluster"
timeout_in_minutes: 45
artifact_paths: "log-*.txt"

View File

@@ -1,38 +0,0 @@
# Build steps that run on pushes and pull requests.
# If files other than those in docs/ were modified, this will be followed up by
# ci/buildkite-tests.yml
#
# Release tags use buildkite-release.yml instead
steps:
- command: "ci/dependabot-pr.sh"
name: "dependabot"
timeout_in_minutes: 5
if: build.env("GITHUB_USER") == "dependabot-preview[bot]"
- wait
- command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_nightly_docker_image ci/test-checks.sh"
name: "checks"
timeout_in_minutes: 20
- command: "ci/shellcheck.sh"
name: "shellcheck"
timeout_in_minutes: 5
- wait
- command: "ci/maybe-trigger-tests.sh"
name: "maybe-trigger-tests"
timeout_in_minutes: 2
- wait
- trigger: "solana-secondary"
branches: "!pull/*"
async: true
build:
message: "${BUILDKITE_MESSAGE}"
commit: "${BUILDKITE_COMMIT}"
branch: "${BUILDKITE_BRANCH}"
env:
TRIGGERED_BUILDKITE_TAG: "${BUILDKITE_TAG}"

View File

@@ -7,14 +7,14 @@ source ci/_
commit_range="$(git merge-base HEAD origin/master)..HEAD"
parsed_update_args="$(
git log "$commit_range" --author "dependabot-preview" --oneline -n1 |
grep -o 'Bump.*$' |
sed -r 's/Bump ([^ ]+) from ([^ ]+) to ([^ ]+)/-p \1:\2 --precise \3/'
grep -o '[Bb]ump.*$' |
sed -r 's/[Bb]ump ([^ ]+) from ([^ ]+) to ([^ ]+)/-p \1:\2 --precise \3/'
)"
# relaxed_parsed_update_args is temporal measure...
relaxed_parsed_update_args="$(
git log "$commit_range" --author "dependabot-preview" --oneline -n1 |
grep -o 'Bump.*$' |
sed -r 's/Bump ([^ ]+) from [^ ]+ to ([^ ]+)/-p \1 --precise \2/'
grep -o '[Bb]ump.*$' |
sed -r 's/[Bb]ump ([^ ]+) from [^ ]+ to ([^ ]+)/-p \1 --precise \2/'
)"
package=$(echo "$parsed_update_args" | awk '{print $2}' | grep -o "^[^:]*")
if [[ -n $parsed_update_args ]]; then

View File

@@ -60,6 +60,12 @@ if [[ -z "$SOLANA_DOCKER_RUN_NOSETUID" ]]; then
ARGS+=(--user "$(id -u):$(id -g)")
fi
if [[ -n $SOLANA_ALLOCATE_TTY ]]; then
# Colored output, progress bar and Ctrl-C:
# https://stackoverflow.com/a/41099052/10242004
ARGS+=(--interactive --tty)
fi
# Environment variables to propagate into the container
ARGS+=(
--env BUILDKITE
@@ -67,6 +73,7 @@ ARGS+=(
--env BUILDKITE_JOB_ID
--env CI
--env CI_BRANCH
--env CI_BASE_BRANCH
--env CI_TAG
--env CI_BUILD_ID
--env CI_COMMIT

View File

@@ -1,9 +1,10 @@
FROM solanalabs/rust:1.43.0
FROM solanalabs/rust:1.45.1
ARG date
RUN set -x \
&& rustup install nightly-$date \
&& rustup component add clippy --toolchain=nightly-$date \
&& rustup component add rustfmt --toolchain=nightly-$date \
&& rustup show \
&& rustc --version \
&& cargo --version \

View File

@@ -2,23 +2,27 @@ Docker image containing rust nightly and some preinstalled crates used in CI.
This image may be manually updated by running `CI=true ./build.sh` if you are a member
of the [Solana Labs](https://hub.docker.com/u/solanalabs/) Docker Hub
organization, but it is also automatically updated periodically by
[this automation](https://buildkite.com/solana-labs/solana-ci-docker-rust-nightly).
organization.
## Moving to a newer nightly
NOTE: Follow instructions in docker-rust/README.md before this when updating the stable
rust version as well.
We pin the version of nightly (see the `ARG nightly=xyz` line in `Dockerfile`)
to avoid the build breaking at unexpected times, as occasionally nightly will
introduce breaking changes.
To update the pinned version:
1. Edit `Dockerfile` to match the desired stable rust version to base on if needed.
1. Run `ci/docker-rust-nightly/build.sh` to rebuild the nightly image locally,
or potentially `ci/docker-rust-nightly/build.sh YYYY-MM-DD` if there's a
specific YYYY-MM-DD that is desired (default is today's build).
Check https://rust-lang.github.io/rustup-components-history/ for build
status
1. Update `ci/rust-version.sh` to reflect the new nightly `YYY-MM-DD`
1. Run `SOLANA_DOCKER_RUN_NOSETUID=1 ci/docker-run.sh --nopull solanalabs/rust-nightly:YYYY-MM-DD ci/test-coverage.sh`
1. Run `SOLANA_ALLOCATE_TTY=1 SOLANA_DOCKER_RUN_NOSETUID=1 ci/docker-run.sh --nopull solanalabs/rust-nightly:YYYY-MM-DD ci/test-checks.sh`
and `SOLANA_ALLOCATE_TTY=1 SOLANA_DOCKER_RUN_NOSETUID=1 ci/docker-run.sh --nopull solanalabs/rust-nightly:YYYY-MM-DD ci/test-coverage.sh [args]...`
to confirm the new nightly image builds. Fix any issues as needed
1. Run `docker login` to enable pushing images to Docker Hub, if you're authorized.
1. Run `CI=true ci/docker-rust-nightly/build.sh YYYY-MM-DD` to push the new nightly image to dockerhub.com.

View File

@@ -1,6 +1,6 @@
# Note: when the rust version is changed also modify
# ci/rust-version.sh to pick up the new image tag
FROM rust:1.43.0
FROM rust:1.45.1
# Add Google Protocol Buffers for Libra's metrics library.
ENV PROTOC_VERSION 3.8.0

View File

@@ -1,7 +1,11 @@
Docker image containing rust and some preinstalled packages used in CI.
NOTE: Recreate rust-nightly docker image after this when updating the stable rust
version! Both of docker images must be updated in tandem.
This image manually maintained:
1. Edit `Dockerfile` to match the desired rust version
2. Run `./build.sh` to publish the new image, if you are a member of the [Solana
1. Run `docker login` to enable pushing images to Docker Hub, if you're authorized.
1. Run `./build.sh` to publish the new image, if you are a member of the [Solana
Labs](https://hub.docker.com/u/solanalabs/) Docker Hub organization.

View File

@@ -8,10 +8,11 @@ if [[ -n $CI ]]; then
export CI=1
if [[ -n $TRAVIS ]]; then
export CI_BRANCH=$TRAVIS_BRANCH
export CI_BASE_BRANCH=$TRAVIS_BRANCH
export CI_BUILD_ID=$TRAVIS_BUILD_ID
export CI_COMMIT=$TRAVIS_COMMIT
export CI_JOB_ID=$TRAVIS_JOB_ID
if $TRAVIS_PULL_REQUEST; then
if [[ $TRAVIS_PULL_REQUEST != false ]]; then
export CI_PULL_REQUEST=true
else
export CI_PULL_REQUEST=
@@ -28,8 +29,10 @@ if [[ -n $CI ]]; then
# to how solana-ci-gate is used to trigger PR builds rather than using the
# standard Buildkite PR trigger.
if [[ $CI_BRANCH =~ pull/* ]]; then
export CI_BASE_BRANCH=$BUILDKITE_PULL_REQUEST_BASE_BRANCH
export CI_PULL_REQUEST=true
else
export CI_BASE_BRANCH=$BUILDKITE_BRANCH
export CI_PULL_REQUEST=
fi
export CI_OS_NAME=linux

View File

@@ -1,21 +0,0 @@
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")/.."
annotate() {
${BUILDKITE:-false} && {
buildkite-agent annotate "$@"
}
}
# Skip if only the docs have been modified
ci/affects-files.sh \
\!^docs/ \
|| {
annotate --style info \
"Skipping all further tests as only docs/ files were modified"
exit 0
}
annotate --style info "Triggering tests"
buildkite-agent pipeline upload ci/buildkite-tests.yml

View File

@@ -1,32 +0,0 @@
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")/.."
echo --- build docs
(
set -x
. ci/rust-version.sh stable
ci/docker-run.sh "$rust_stable_docker_image" docs/build.sh
)
echo --- update gitbook-cage
if [[ -n $CI_BRANCH ]]; then
(
# make a local commit for the svgs and generated/updated markdown
set -x
git add -f docs/src
if ! git diff-index --quiet HEAD; then
git config user.email maintainers@solana.com
git config user.name "$(basename "$0")"
git commit -m "gitbook-cage update $(date -Is)"
git push -f git@github.com:solana-labs/solana-gitbook-cage.git HEAD:refs/heads/"$CI_BRANCH"
# pop off the local commit
git reset --hard HEAD~
fi
)
else
echo CI_BRANCH not set
fi
exit 0

View File

@@ -45,7 +45,16 @@ linux)
TARGET=x86_64-unknown-linux-gnu
;;
windows)
TARGET=x86_64-pc-windows-gnu
TARGET=x86_64-pc-windows-msvc
# Enable symlinks used by some build.rs files
# source: https://stackoverflow.com/a/52097145/10242004
(
set -x
git --version
git config core.symlinks true
find . -type l -delete
git reset --hard
)
;;
*)
echo CI_OS_NAME unset
@@ -53,11 +62,14 @@ windows)
;;
esac
RELEASE_BASENAME="${RELEASE_BASENAME:=solana-release}"
TARBALL_BASENAME="${TARBALL_BASENAME:="$RELEASE_BASENAME"}"
echo --- Creating release tarball
(
set -x
rm -rf solana-release/
mkdir solana-release/
rm -rf "${RELEASE_BASENAME:?}"/
mkdir "${RELEASE_BASENAME}"/
COMMIT="$(git rev-parse HEAD)"
@@ -65,18 +77,18 @@ echo --- Creating release tarball
echo "channel: $CHANNEL_OR_TAG"
echo "commit: $COMMIT"
echo "target: $TARGET"
) > solana-release/version.yml
) > "${RELEASE_BASENAME}"/version.yml
# Make CHANNEL available to include in the software version information
export CHANNEL
source ci/rust-version.sh stable
scripts/cargo-install-all.sh +"$rust_stable" solana-release
scripts/cargo-install-all.sh +"$rust_stable" "${RELEASE_BASENAME}"
tar cvf solana-release-$TARGET.tar solana-release
bzip2 solana-release-$TARGET.tar
cp solana-release/bin/solana-install-init solana-install-init-$TARGET
cp solana-release/version.yml solana-release-$TARGET.yml
tar cvf "${TARBALL_BASENAME}"-$TARGET.tar "${RELEASE_BASENAME}"
bzip2 "${TARBALL_BASENAME}"-$TARGET.tar
cp "${RELEASE_BASENAME}"/bin/solana-install-init solana-install-init-$TARGET
cp "${RELEASE_BASENAME}"/version.yml "${TARBALL_BASENAME}"-$TARGET.yml
)
# Metrics tarball is platform agnostic, only publish it from Linux
@@ -94,7 +106,7 @@ fi
source ci/upload-ci-artifact.sh
for file in solana-release-$TARGET.tar.bz2 solana-release-$TARGET.yml solana-install-init-"$TARGET"* $MAYBE_TARBALLS; do
for file in "${TARBALL_BASENAME}"-$TARGET.tar.bz2 "${TARBALL_BASENAME}"-$TARGET.yml solana-install-init-"$TARGET"* $MAYBE_TARBALLS; do
if [[ -n $DO_NOT_PUBLISH_TAR ]]; then
upload-ci-artifact "$file"
echo "Skipped $file due to DO_NOT_PUBLISH_TAR"

View File

@@ -7,7 +7,7 @@ source multinode-demo/common.sh
rm -rf config/run/init-completed config/ledger config/snapshot-ledger
timeout 15 ./run.sh &
timeout 120 ./run.sh &
pid=$!
attempts=20
@@ -19,10 +19,16 @@ while [[ ! -f config/run/init-completed ]]; do
fi
done
snapshot_slot=1
# wait a bit longer than snapshot_slot
while [[ $($solana_cli --url http://localhost:8899 slot --commitment recent) -le $((snapshot_slot + 1)) ]]; do
sleep 1
done
curl -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1, "method":"validatorExit"}' http://localhost:8899
wait $pid
$solana_ledger_tool create-snapshot --ledger config/ledger 1 config/snapshot-ledger
$solana_ledger_tool create-snapshot --ledger config/ledger "$snapshot_slot" config/snapshot-ledger
cp config/ledger/genesis.tar.bz2 config/snapshot-ledger
$solana_ledger_tool verify --ledger config/snapshot-ledger

View File

@@ -18,13 +18,13 @@
if [[ -n $RUST_STABLE_VERSION ]]; then
stable_version="$RUST_STABLE_VERSION"
else
stable_version=1.43.0
stable_version=1.45.1
fi
if [[ -n $RUST_NIGHTLY_VERSION ]]; then
nightly_version="$RUST_NIGHTLY_VERSION"
else
nightly_version=2020-04-23
nightly_version=2020-07-27
fi
@@ -38,7 +38,8 @@ export rust_nightly_docker_image=solanalabs/rust-nightly:"$nightly_version"
rustup_install() {
declare toolchain=$1
if ! cargo +"$toolchain" -V; then
if ! cargo +"$toolchain" -V > /dev/null; then
echo "$0: Missing toolchain? Installing...: $toolchain" >&2
rustup install "$toolchain"
cargo +"$toolchain" -V
fi
@@ -58,7 +59,7 @@ export rust_nightly_docker_image=solanalabs/rust-nightly:"$nightly_version"
rustup_install "$rust_nightly"
;;
*)
echo "Note: ignoring unknown argument: $1"
echo "$0: Note: ignoring unknown argument: $1" >&2
;;
esac
)

View File

@@ -2,25 +2,6 @@
set -e
cd "$(dirname "$0")/.."
annotate() {
${BUILDKITE:-false} && {
buildkite-agent annotate "$@"
}
}
ci/affects-files.sh \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
^ci/rust-version.sh \
^ci/test-bench.sh \
|| {
annotate --style info --context test-bench \
"Bench skipped as no .rs files were modified"
exit 0
}
source ci/_
source ci/upload-ci-artifact.sh

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")/.."
@@ -6,33 +7,55 @@ cd "$(dirname "$0")/.."
source ci/_
source ci/rust-version.sh stable
source ci/rust-version.sh nightly
eval "$(ci/channel-info.sh)"
echo --- build environment
(
set -x
rustup run "$rust_stable" rustc --version --verbose
rustup run "$rust_nightly" rustc --version --verbose
cargo +"$rust_stable" --version --verbose
cargo +"$rust_nightly" --version --verbose
cargo +"$rust_stable" clippy --version --verbose
cargo +"$rust_nightly" clippy --version --verbose
# audit is done only with stable
cargo +"$rust_stable" audit --version
)
export RUST_BACKTRACE=1
export RUSTFLAGS="-D warnings"
export RUSTFLAGS="-D warnings -A incomplete_features"
# Look for failed mergify.io backports
_ git show HEAD --check --oneline
if _ scripts/cargo-for-all-lock-files.sh +"$rust_nightly" check --locked --all-targets; then
true
# Only force up-to-date lock files on edge
if [[ $CI_BASE_BRANCH = "$EDGE_CHANNEL" ]]; then
# Exclude --benches as it's not available in rust stable yet
if _ scripts/cargo-for-all-lock-files.sh +"$rust_stable" check --locked --tests --bins --examples; then
true
else
check_status=$?
echo "$0: Some Cargo.lock might be outdated; sync them (or just be a compilation error?)" >&2
echo "$0: protip: $ ./scripts/cargo-for-all-lock-files.sh [--ignore-exit-code] ... \\" >&2
echo "$0: [tree (for outdated Cargo.lock sync)|check (for compilation error)|update -p foo --precise x.y.z (for your Cargo.toml update)] ..." >&2
exit "$check_status"
fi
else
check_status=$?
echo "Some Cargo.lock is outdated; please update them as well"
echo "protip: you can use ./scripts/cargo-for-all-lock-files.sh update ..."
exit "$check_status"
echo "Note: cargo-for-all-lock-files.sh skipped because $CI_BASE_BRANCH != $EDGE_CHANNEL"
fi
# Ensure nightly and --benches
_ scripts/cargo-for-all-lock-files.sh +"$rust_nightly" check --locked --all-targets
_ ci/order-crates-for-publishing.py
_ cargo +"$rust_stable" fmt --all -- --check
_ cargo +"$rust_stable" clippy --version
_ cargo +"$rust_stable" clippy --workspace -- --deny=warnings
# -Z... is needed because of clippy bug: https://github.com/rust-lang/rust-clippy/issues/4612
# run nightly clippy for `sdk/` as there's a moderate amount of nightly-only code there
_ cargo +"$rust_nightly" clippy -Zunstable-options --workspace --all-targets -- --deny=warnings
_ cargo +"$rust_stable" audit --version
_ scripts/cargo-for-all-lock-files.sh +"$rust_stable" audit --ignore RUSTSEC-2020-0002 --ignore RUSTSEC-2020-0008
_ ci/nits.sh
_ ci/order-crates-for-publishing.py
_ docs/build.sh
_ ci/check-ssh-keys.sh
{
cd programs/bpf
@@ -43,7 +66,6 @@ _ ci/check-ssh-keys.sh
cd "$project"
_ cargo +"$rust_stable" fmt -- --check
_ cargo +"$rust_nightly" test
_ cargo +"$rust_nightly" clippy --version
_ cargo +"$rust_nightly" clippy -- --deny=warnings --allow=clippy::missing_safety_doc
)
done

View File

@@ -8,23 +8,14 @@ annotate() {
}
}
ci/affects-files.sh \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
^ci/rust-version.sh \
^ci/test-coverage.sh \
^scripts/coverage.sh \
|| {
annotate --style info --context test-coverage \
"Coverage skipped as no .rs files were modified"
exit 0
}
source ci/upload-ci-artifact.sh
source scripts/ulimit-n.sh
scripts/coverage.sh
scripts/coverage.sh "$@"
if [[ -z $CI ]]; then
exit
fi
report=coverage-"${CI_COMMIT:0:9}".tar.gz
mv target/cov/report.tar.gz "$report"

View File

@@ -1 +0,0 @@
test-stable.sh

22
ci/test-sanity.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")/.."
source ci/_
(
echo --- git diff --check
set -x
# Look for failed mergify.io backports by searching leftover conflict markers
# Also check for any trailing whitespaces!
git fetch origin "$CI_BASE_BRANCH"
git diff "$(git merge-base HEAD "origin/$CI_BASE_BRANCH")..HEAD" --check --oneline
)
echo
_ ci/nits.sh
_ ci/check-ssh-keys.sh
echo --- ok

View File

@@ -13,15 +13,6 @@ annotate() {
# Run the appropriate test based on entrypoint
testName=$(basename "$0" .sh)
# Skip if only the docs have been modified
ci/affects-files.sh \
\!^docs/ \
|| {
annotate --style info \
"Skipped $testName as only docs/ files were modified"
exit 0
}
source ci/rust-version.sh stable
export RUST_BACKTRACE=1
@@ -39,35 +30,16 @@ test -d target/release/bpf && find target/release/bpf -name '*.d' -delete
rm -rf target/xargo # Issue #3105
# Limit compiler jobs to reduce memory usage
# on machines with 1gb/thread of memory
# on machines with 2gb/thread of memory
NPROC=$(nproc)
NPROC=$((NPROC>16 ? 16 : NPROC))
NPROC=$((NPROC>14 ? 14 : NPROC))
echo "Executing $testName"
case $testName in
test-stable)
_ cargo +"$rust_stable" test --jobs "$NPROC" --all --exclude solana-local-cluster ${V:+--verbose} -- --nocapture
_ cargo +"$rust_stable" test --manifest-path bench-tps/Cargo.toml --features=move ${V:+--verbose} test_bench_tps_local_cluster_move -- --nocapture
;;
test-stable-perf)
ci/affects-files.sh \
.rs$ \
Cargo.lock$ \
Cargo.toml$ \
^ci/rust-version.sh \
^ci/test-stable-perf.sh \
^ci/test-stable.sh \
^ci/test-local-cluster.sh \
^core/build.rs \
^fetch-perf-libs.sh \
^programs/ \
^sdk/ \
|| {
annotate --style info \
"Skipped $testName as no relevant files were modified"
exit 0
}
# BPF program tests
_ make -C programs/bpf/c tests
_ cargo +"$rust_stable" test \
@@ -92,27 +64,7 @@ test-stable-perf)
_ cargo +"$rust_stable" build --bins ${V:+--verbose}
_ cargo +"$rust_stable" test --package solana-perf --package solana-ledger --package solana-core --lib ${V:+--verbose} -- --nocapture
;;
test-move)
ci/affects-files.sh \
Cargo.lock$ \
Cargo.toml$ \
^ci/rust-version.sh \
^ci/test-stable.sh \
^ci/test-move.sh \
^programs/move_loader \
^programs/librapay \
^logger/ \
^runtime/ \
^sdk/ \
|| {
annotate --style info \
"Skipped $testName as no relevant files were modified"
exit 0
}
_ cargo +"$rust_stable" test --manifest-path programs/move_loader/Cargo.toml ${V:+--verbose} -- --nocapture
_ cargo +"$rust_stable" test --manifest-path programs/librapay/Cargo.toml ${V:+--verbose} -- --nocapture
exit 0
_ cargo +"$rust_stable" run --manifest-path poh-bench/Cargo.toml ${V:+--verbose} -- --hashes-per-tick 10
;;
test-local-cluster)
_ cargo +"$rust_stable" build --release --bins ${V:+--verbose}

View File

@@ -23,10 +23,14 @@ if [[ -z $CI_TAG ]]; then
exit 1
fi
if [[ -z $CI_REPO_SLUG ]]; then
echo Error: CI_REPO_SLUG not defined
exit 1
fi
# Force CI_REPO_SLUG since sometimes
# BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG is not set correctly, causing the
# artifact upload to fail
CI_REPO_SLUG=solana-labs/solana
#if [[ -z $CI_REPO_SLUG ]]; then
# echo Error: CI_REPO_SLUG not defined
# exit 1
#fi
releaseId=$( \
curl -s "https://api.github.com/repos/$CI_REPO_SLUG/releases/tags/$CI_TAG" \
@@ -38,6 +42,7 @@ echo "Github release id for $CI_TAG is $releaseId"
for file in "$@"; do
echo "--- Uploading $file to tag $CI_TAG of $CI_REPO_SLUG"
curl \
--verbose \
--data-binary @"$file" \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/octet-stream" \

View File

@@ -1,8 +1,8 @@
[package]
name = "solana-clap-utils"
version = "1.2.0"
version = "1.3.2"
description = "Solana utilities for the clap"
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -11,9 +11,9 @@ edition = "2018"
[dependencies]
clap = "2.33.0"
rpassword = "4.0"
solana-remote-wallet = { path = "../remote-wallet", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
thiserror = "1.0.11"
solana-remote-wallet = { path = "../remote-wallet", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
thiserror = "1.0.20"
tiny-bip39 = "0.7.0"
url = "2.1.0"
chrono = "0.4"

View File

@@ -6,50 +6,86 @@ use solana_sdk::{
pubkey::Pubkey,
signature::{read_keypair_file, Signature},
};
use std::fmt::Display;
use std::str::FromStr;
fn is_parsable_generic<U, T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
U: FromStr,
U::Err: Display,
{
string
.as_ref()
.parse::<U>()
.map(|_| ())
.map_err(|err| format!("error parsing '{}': {}", string, err))
}
// Return an error if string cannot be parsed as type T.
// Takes a String to avoid second type parameter when used as a clap validator
pub fn is_parsable<T>(string: String) -> Result<(), String>
where
T: FromStr,
T::Err: Display,
{
is_parsable_generic::<T, String>(string)
}
// Return an error if a pubkey cannot be parsed.
pub fn is_pubkey(string: String) -> Result<(), String> {
match string.parse::<Pubkey>() {
Ok(_) => Ok(()),
Err(err) => Err(format!("{}", err)),
}
pub fn is_pubkey<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
is_parsable_generic::<Pubkey, _>(string)
}
// Return an error if a hash cannot be parsed.
pub fn is_hash(string: String) -> Result<(), String> {
match string.parse::<Hash>() {
Ok(_) => Ok(()),
Err(err) => Err(format!("{}", err)),
}
pub fn is_hash<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
is_parsable_generic::<Hash, _>(string)
}
// Return an error if a keypair file cannot be parsed.
pub fn is_keypair(string: String) -> Result<(), String> {
read_keypair_file(&string)
pub fn is_keypair<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
read_keypair_file(string.as_ref())
.map(|_| ())
.map_err(|err| format!("{}", err))
}
// Return an error if a keypair file cannot be parsed
pub fn is_keypair_or_ask_keyword(string: String) -> Result<(), String> {
if string.as_str() == ASK_KEYWORD {
pub fn is_keypair_or_ask_keyword<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
if string.as_ref() == ASK_KEYWORD {
return Ok(());
}
read_keypair_file(&string)
read_keypair_file(string.as_ref())
.map(|_| ())
.map_err(|err| format!("{}", err))
}
// Return an error if string cannot be parsed as pubkey string or keypair file location
pub fn is_pubkey_or_keypair(string: String) -> Result<(), String> {
is_pubkey(string.clone()).or_else(|_| is_keypair(string))
pub fn is_pubkey_or_keypair<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
is_pubkey(string.as_ref()).or_else(|_| is_keypair(string))
}
// Return an error if string cannot be parsed as a pubkey string, or a valid Signer that can
// produce a pubkey()
pub fn is_valid_pubkey(string: String) -> Result<(), String> {
match parse_keypair_path(&string) {
pub fn is_valid_pubkey<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
match parse_keypair_path(string.as_ref()) {
KeypairUrl::Filepath(path) => is_keypair(path),
_ => Ok(()),
}
@@ -63,13 +99,19 @@ pub fn is_valid_pubkey(string: String) -> Result<(), String> {
// when paired with an offline `--signer` argument to provide a Presigner (pubkey + signature).
// Clap validators can't check multiple fields at once, so the verification that a `--signer` is
// also provided and correct happens in parsing, not in validation.
pub fn is_valid_signer(string: String) -> Result<(), String> {
pub fn is_valid_signer<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
is_valid_pubkey(string)
}
// Return an error if string cannot be parsed as pubkey=signature string
pub fn is_pubkey_sig(string: String) -> Result<(), String> {
let mut signer = string.split('=');
pub fn is_pubkey_sig<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
let mut signer = string.as_ref().split('=');
match Pubkey::from_str(
signer
.next()
@@ -90,8 +132,11 @@ pub fn is_pubkey_sig(string: String) -> Result<(), String> {
}
// Return an error if a url cannot be parsed.
pub fn is_url(string: String) -> Result<(), String> {
match url::Url::parse(&string) {
pub fn is_url<T>(string: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
match url::Url::parse(string.as_ref()) {
Ok(url) => {
if url.has_host() {
Ok(())
@@ -103,20 +148,26 @@ pub fn is_url(string: String) -> Result<(), String> {
}
}
pub fn is_slot(slot: String) -> Result<(), String> {
slot.parse::<Slot>()
.map(|_| ())
.map_err(|e| format!("{}", e))
pub fn is_slot<T>(slot: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
is_parsable_generic::<Slot, _>(slot)
}
pub fn is_port(port: String) -> Result<(), String> {
port.parse::<u16>()
.map(|_| ())
.map_err(|e| format!("{}", e))
pub fn is_port<T>(port: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
is_parsable_generic::<u16, _>(port)
}
pub fn is_valid_percentage(percentage: String) -> Result<(), String> {
pub fn is_valid_percentage<T>(percentage: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
percentage
.as_ref()
.parse::<u8>()
.map_err(|e| {
format!(
@@ -136,8 +187,11 @@ pub fn is_valid_percentage(percentage: String) -> Result<(), String> {
})
}
pub fn is_amount(amount: String) -> Result<(), String> {
if amount.parse::<u64>().is_ok() || amount.parse::<f64>().is_ok() {
pub fn is_amount<T>(amount: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
if amount.as_ref().parse::<u64>().is_ok() || amount.as_ref().parse::<f64>().is_ok() {
Ok(())
} else {
Err(format!(
@@ -147,8 +201,14 @@ pub fn is_amount(amount: String) -> Result<(), String> {
}
}
pub fn is_amount_or_all(amount: String) -> Result<(), String> {
if amount.parse::<u64>().is_ok() || amount.parse::<f64>().is_ok() || amount == "ALL" {
pub fn is_amount_or_all<T>(amount: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
if amount.as_ref().parse::<u64>().is_ok()
|| amount.as_ref().parse::<f64>().is_ok()
|| amount.as_ref() == "ALL"
{
Ok(())
} else {
Err(format!(
@@ -158,14 +218,20 @@ pub fn is_amount_or_all(amount: String) -> Result<(), String> {
}
}
pub fn is_rfc3339_datetime(value: String) -> Result<(), String> {
DateTime::parse_from_rfc3339(&value)
pub fn is_rfc3339_datetime<T>(value: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
DateTime::parse_from_rfc3339(value.as_ref())
.map(|_| ())
.map_err(|e| format!("{}", e))
}
pub fn is_derivation(value: String) -> Result<(), String> {
let value = value.replace("'", "");
pub fn is_derivation<T>(value: T) -> Result<(), String>
where
T: AsRef<str> + Display,
{
let value = value.as_ref().replace("'", "");
let mut parts = value.split('/');
let account = parts.next().unwrap();
account
@@ -197,14 +263,14 @@ mod tests {
#[test]
fn test_is_derivation() {
assert_eq!(is_derivation("2".to_string()), Ok(()));
assert_eq!(is_derivation("0".to_string()), Ok(()));
assert_eq!(is_derivation("65537".to_string()), Ok(()));
assert_eq!(is_derivation("0/2".to_string()), Ok(()));
assert_eq!(is_derivation("0'/2'".to_string()), Ok(()));
assert!(is_derivation("a".to_string()).is_err());
assert!(is_derivation("4294967296".to_string()).is_err());
assert!(is_derivation("a/b".to_string()).is_err());
assert!(is_derivation("0/4294967296".to_string()).is_err());
assert_eq!(is_derivation("2"), Ok(()));
assert_eq!(is_derivation("0"), Ok(()));
assert_eq!(is_derivation("65537"), Ok(()));
assert_eq!(is_derivation("0/2"), Ok(()));
assert_eq!(is_derivation("0'/2'"), Ok(()));
assert!(is_derivation("a").is_err());
assert!(is_derivation("4294967296").is_err());
assert!(is_derivation("a/b").is_err());
assert!(is_derivation("0/4294967296").is_err());
}
}

View File

@@ -1,9 +1,9 @@
[package]
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
edition = "2018"
name = "solana-cli-config"
description = "Blockchain, Rebuilt for Scale"
version = "1.2.0"
version = "1.3.2"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -11,9 +11,9 @@ homepage = "https://solana.com/"
[dependencies]
dirs = "2.0.2"
lazy_static = "1.4.0"
serde = "1.0.110"
serde = "1.0.112"
serde_derive = "1.0.103"
serde_yaml = "0.8.12"
serde_yaml = "0.8.13"
url = "2.1.1"
[package.metadata.docs.rs]

View File

@@ -1,6 +1,6 @@
// Wallet settings that can be configured for long-term use
use serde_derive::{Deserialize, Serialize};
use std::io;
use std::{collections::HashMap, io, path::Path};
use url::Url;
lazy_static! {
@@ -17,6 +17,9 @@ pub struct Config {
pub json_rpc_url: String,
pub websocket_url: String,
pub keypair_path: String,
#[serde(default)]
pub address_labels: HashMap<String, String>,
}
impl Default for Config {
@@ -32,10 +35,17 @@ impl Default for Config {
// `Config::compute_websocket_url(&json_rpc_url)`
let websocket_url = "".to_string();
let mut address_labels = HashMap::new();
address_labels.insert(
"11111111111111111111111111111111".to_string(),
"System Program".to_string(),
);
Self {
json_rpc_url,
websocket_url,
keypair_path,
address_labels,
}
}
}
@@ -65,6 +75,24 @@ impl Config {
}
ws_url.to_string()
}
pub fn import_address_labels<P>(&mut self, filename: P) -> Result<(), io::Error>
where
P: AsRef<Path>,
{
let imports: HashMap<String, String> = crate::load_config_file(filename)?;
for (address, label) in imports.into_iter() {
self.address_labels.insert(address, label);
}
Ok(())
}
pub fn export_address_labels<P>(&self, filename: P) -> Result<(), io::Error>
where
P: AsRef<Path>,
{
crate::save_config_file(&self.address_labels, filename)
}
}
#[cfg(test)]

View File

@@ -1,54 +1,55 @@
[package]
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
edition = "2018"
name = "solana-cli"
description = "Blockchain, Rebuilt for Scale"
version = "1.2.0"
version = "1.3.2"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
[dependencies]
bincode = "1.2.1"
bincode = "1.3.1"
bs58 = "0.3.1"
chrono = { version = "0.4.11", features = ["serde"] }
clap = "2.33.1"
criterion-stats = "0.3.0"
ctrlc = { version = "3.1.4", features = ["termination"] }
console = "0.10.1"
ctrlc = { version = "3.1.5", features = ["termination"] }
console = "0.11.3"
dirs = "2.0.2"
log = "0.4.8"
Inflector = "0.11.4"
indicatif = "0.14.0"
humantime = "2.0.0"
indicatif = "0.15.0"
humantime = "2.0.1"
num-traits = "0.2"
pretty-hex = "0.1.1"
reqwest = { version = "0.10.4", default-features = false, features = ["blocking", "rustls-tls", "json"] }
serde = "1.0.110"
reqwest = { version = "0.10.6", default-features = false, features = ["blocking", "rustls-tls", "json"] }
serde = "1.0.112"
serde_derive = "1.0.103"
serde_json = "1.0.53"
solana-budget-program = { path = "../programs/budget", version = "1.2.0" }
solana-clap-utils = { path = "../clap-utils", version = "1.2.0" }
solana-cli-config = { path = "../cli-config", version = "1.2.0" }
solana-client = { path = "../client", version = "1.2.0" }
solana-config-program = { path = "../programs/config", version = "1.2.0" }
solana-faucet = { path = "../faucet", version = "1.2.0" }
solana-logger = { path = "../logger", version = "1.2.0" }
solana-net-utils = { path = "../net-utils", version = "1.2.0" }
solana-remote-wallet = { path = "../remote-wallet", version = "1.2.0" }
solana-runtime = { path = "../runtime", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
solana-stake-program = { path = "../programs/stake", version = "1.2.0" }
solana-transaction-status = { path = "../transaction-status", version = "1.2.0" }
solana-version = { path = "../version", version = "1.2.0" }
solana-vote-program = { path = "../programs/vote", version = "1.2.0" }
solana-vote-signer = { path = "../vote-signer", version = "1.2.0" }
thiserror = "1.0.19"
serde_json = "1.0.56"
solana-account-decoder = { path = "../account-decoder", version = "1.3.2" }
solana-budget-program = { path = "../programs/budget", version = "1.3.2" }
solana-clap-utils = { path = "../clap-utils", version = "1.3.2" }
solana-cli-config = { path = "../cli-config", version = "1.3.2" }
solana-client = { path = "../client", version = "1.3.2" }
solana-config-program = { path = "../programs/config", version = "1.3.2" }
solana-faucet = { path = "../faucet", version = "1.3.2" }
solana-logger = { path = "../logger", version = "1.3.2" }
solana-net-utils = { path = "../net-utils", version = "1.3.2" }
solana-remote-wallet = { path = "../remote-wallet", version = "1.3.2" }
solana-runtime = { path = "../runtime", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
solana-stake-program = { path = "../programs/stake", version = "1.3.2" }
solana-transaction-status = { path = "../transaction-status", version = "1.3.2" }
solana-version = { path = "../version", version = "1.3.2" }
solana-vote-program = { path = "../programs/vote", version = "1.3.2" }
solana-vote-signer = { path = "../vote-signer", version = "1.3.2" }
thiserror = "1.0.20"
url = "2.1.1"
[dev-dependencies]
solana-core = { path = "../core", version = "1.2.0" }
solana-budget-program = { path = "../programs/budget", version = "1.2.0" }
solana-core = { path = "../core", version = "1.3.2" }
solana-budget-program = { path = "../programs/budget", version = "1.3.2" }
tempfile = "3.1.0"
[[bin]]

View File

@@ -4,7 +4,8 @@ use solana_client::{
rpc_client::RpcClient,
};
use solana_sdk::{
fee_calculator::FeeCalculator, message::Message, native_token::lamports_to_sol, pubkey::Pubkey,
commitment_config::CommitmentConfig, fee_calculator::FeeCalculator, message::Message,
native_token::lamports_to_sol, pubkey::Pubkey,
};
pub fn check_account_for_fee(
@@ -16,14 +17,46 @@ pub fn check_account_for_fee(
check_account_for_multiple_fees(rpc_client, account_pubkey, fee_calculator, &[message])
}
pub fn check_account_for_fee_with_commitment(
rpc_client: &RpcClient,
account_pubkey: &Pubkey,
fee_calculator: &FeeCalculator,
message: &Message,
commitment: CommitmentConfig,
) -> Result<(), CliError> {
check_account_for_multiple_fees_with_commitment(
rpc_client,
account_pubkey,
fee_calculator,
&[message],
commitment,
)
}
pub fn check_account_for_multiple_fees(
rpc_client: &RpcClient,
account_pubkey: &Pubkey,
fee_calculator: &FeeCalculator,
messages: &[&Message],
) -> Result<(), CliError> {
check_account_for_multiple_fees_with_commitment(
rpc_client,
account_pubkey,
fee_calculator,
messages,
CommitmentConfig::default(),
)
}
pub fn check_account_for_multiple_fees_with_commitment(
rpc_client: &RpcClient,
account_pubkey: &Pubkey,
fee_calculator: &FeeCalculator,
messages: &[&Message],
commitment: CommitmentConfig,
) -> Result<(), CliError> {
let fee = calculate_fee(fee_calculator, messages);
if !check_account_for_balance(rpc_client, account_pubkey, fee)
if !check_account_for_balance_with_commitment(rpc_client, account_pubkey, fee, commitment)
.map_err(Into::<ClientError>::into)?
{
return Err(CliError::InsufficientFundsForFee(lamports_to_sol(fee)));
@@ -43,7 +76,23 @@ pub fn check_account_for_balance(
account_pubkey: &Pubkey,
balance: u64,
) -> ClientResult<bool> {
let lamports = rpc_client.get_balance(account_pubkey)?;
check_account_for_balance_with_commitment(
rpc_client,
account_pubkey,
balance,
CommitmentConfig::default(),
)
}
pub fn check_account_for_balance_with_commitment(
rpc_client: &RpcClient,
account_pubkey: &Pubkey,
balance: u64,
commitment: CommitmentConfig,
) -> ClientResult<bool> {
let lamports = rpc_client
.get_balance_with_commitment(account_pubkey, commitment)?
.value;
if lamports != 0 && lamports >= balance {
return Ok(true);
}
@@ -88,11 +137,11 @@ mod tests {
let pubkey0 = Pubkey::new(&[0; 32]);
let pubkey1 = Pubkey::new(&[1; 32]);
let ix0 = system_instruction::transfer(&pubkey0, &pubkey1, 1);
let message0 = Message::new(&[ix0]);
let message0 = Message::new(&[ix0], Some(&pubkey0));
let ix0 = system_instruction::transfer(&pubkey0, &pubkey1, 1);
let ix1 = system_instruction::transfer(&pubkey1, &pubkey0, 1);
let message1 = Message::new(&[ix0, ix1]);
let message1 = Message::new(&[ix0, ix1], Some(&pubkey0));
let mut mocks = HashMap::new();
mocks.insert(RpcRequest::GetBalance, account_balance_response.clone());
@@ -176,13 +225,13 @@ mod tests {
let pubkey0 = Pubkey::new(&[0; 32]);
let pubkey1 = Pubkey::new(&[1; 32]);
let ix0 = system_instruction::transfer(&pubkey0, &pubkey1, 1);
let message0 = Message::new(&[ix0]);
let message0 = Message::new(&[ix0], Some(&pubkey0));
assert_eq!(calculate_fee(&fee_calculator, &[&message0]), 1);
// Two messages, additive fees.
let ix0 = system_instruction::transfer(&pubkey0, &pubkey1, 1);
let ix1 = system_instruction::transfer(&pubkey1, &pubkey0, 1);
let message1 = Message::new(&[ix0, ix1]);
let message1 = Message::new(&[ix0, ix1], Some(&pubkey0));
assert_eq!(calculate_fee(&fee_calculator, &[&message0, &message1]), 3);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,7 @@
use crate::{cli::build_balance_message, display::writeln_name_value};
use crate::{
cli::build_balance_message,
display::{format_labeled_address, writeln_name_value},
};
use chrono::{DateTime, NaiveDateTime, SecondsFormat, Utc};
use console::{style, Emoji};
use inflector::cases::titlecase::to_title_case;
@@ -18,7 +21,11 @@ use solana_vote_program::{
authorized_voters::AuthorizedVoters,
vote_state::{BlockTimestamp, Lockout},
};
use std::{collections::BTreeMap, fmt, time::Duration};
use std::{
collections::{BTreeMap, HashMap},
fmt,
time::Duration,
};
static WARNING: Emoji = Emoji("⚠️", "!");
@@ -199,6 +206,11 @@ impl From<EpochInfo> for CliEpochInfo {
impl fmt::Display for CliEpochInfo {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
writeln!(f)?;
writeln_name_value(
f,
"Block height:",
&self.epoch_info.block_height.to_string(),
)?;
writeln_name_value(f, "Slot:", &self.epoch_info.absolute_slot.to_string())?;
writeln_name_value(f, "Epoch:", &self.epoch_info.epoch.to_string())?;
let start_slot = self.epoch_info.absolute_slot - self.epoch_info.slot_index;
@@ -247,6 +259,15 @@ fn slot_to_human_time(slot: Slot) -> String {
.to_string()
}
#[derive(Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CliValidatorsStakeByVersion {
pub current_validators: usize,
pub delinquent_validators: usize,
pub current_active_stake: u64,
pub delinquent_active_stake: u64,
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CliValidators {
@@ -255,6 +276,7 @@ pub struct CliValidators {
pub total_deliquent_stake: u64,
pub current_validators: Vec<CliValidator>,
pub delinquent_validators: Vec<CliValidator>,
pub stake_by_version: BTreeMap<String, CliValidatorsStakeByVersion>,
#[serde(skip_serializing)]
pub use_lamports_unit: bool,
}
@@ -278,7 +300,7 @@ impl fmt::Display for CliValidators {
writeln!(
f,
"{} {:<44} {:<44} {:>9}% {:>8} {:>10} {:>7} {}",
"{} {:<44} {:<44} {:>3}% {:>8} {:>10} {:>10} {:>17} {}",
if delinquent {
WARNING.to_string()
} else {
@@ -290,11 +312,12 @@ impl fmt::Display for CliValidators {
non_zero_or_dash(validator.last_vote),
non_zero_or_dash(validator.root_slot),
validator.credits,
validator.version,
if validator.activated_stake > 0 {
format!(
"{} ({:.2}%)",
build_balance_message(validator.activated_stake, use_lamports_unit, true),
100. * validator.activated_stake as f64 / total_active_stake as f64
100. * validator.activated_stake as f64 / total_active_stake as f64,
)
} else {
"-".into()
@@ -330,18 +353,41 @@ impl fmt::Display for CliValidators {
),
)?;
}
writeln!(f)?;
writeln!(f, "{}", style("Stake By Version:").bold())?;
for (version, info) in self.stake_by_version.iter() {
writeln!(
f,
"{:<16} - {:3} current validators ({:>5.2}%){}",
version,
info.current_validators,
100. * info.current_active_stake as f64 / self.total_active_stake as f64,
if info.delinquent_validators > 0 {
format!(
", {:3} delinquent validators ({:>5.2}%)",
info.delinquent_validators,
100. * info.delinquent_active_stake as f64 / self.total_active_stake as f64
)
} else {
"".to_string()
},
)?;
}
writeln!(f)?;
writeln!(
f,
"{}",
style(format!(
" {:<44} {:<44} {} {} {} {:>7} {}",
" {:<44} {:<38} {} {} {} {:>10} {:^17} {}",
"Identity Pubkey",
"Vote Account Pubkey",
"Commission",
"Last Vote",
"Root Block",
"Credits",
"Version",
"Active Stake",
))
.bold()
@@ -378,13 +424,19 @@ pub struct CliValidator {
pub root_slot: u64,
pub credits: u64,
pub activated_stake: u64,
pub version: String,
}
impl CliValidator {
pub fn new(vote_account: &RpcVoteAccountInfo, current_epoch: Epoch) -> Self {
pub fn new(
vote_account: &RpcVoteAccountInfo,
current_epoch: Epoch,
version: String,
address_labels: &HashMap<String, String>,
) -> Self {
Self {
identity_pubkey: vote_account.node_pubkey.to_string(),
vote_account_pubkey: vote_account.vote_pubkey.to_string(),
identity_pubkey: format_labeled_address(&vote_account.node_pubkey, address_labels),
vote_account_pubkey: format_labeled_address(&vote_account.vote_pubkey, address_labels),
commission: vote_account.commission,
last_vote: vote_account.last_vote,
root_slot: vote_account.root_slot,
@@ -400,6 +452,7 @@ impl CliValidator {
})
.unwrap_or(0),
activated_stake: vote_account.activated_stake,
version,
}
}
}
@@ -482,7 +535,7 @@ impl fmt::Display for CliKeyedStakeState {
#[serde(rename_all = "camelCase")]
pub struct CliStakeState {
pub stake_type: CliStakeType,
pub total_stake: u64,
pub account_balance: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub delegated_stake: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
@@ -497,6 +550,16 @@ pub struct CliStakeState {
pub lockup: Option<CliLockup>,
#[serde(skip_serializing)]
pub use_lamports_unit: bool,
#[serde(skip_serializing)]
pub current_epoch: Epoch,
#[serde(skip_serializing_if = "Option::is_none")]
pub rent_exempt_reserve: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_stake: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub activating_stake: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deactivating_stake: Option<u64>,
}
impl fmt::Display for CliStakeState {
@@ -506,71 +569,147 @@ impl fmt::Display for CliStakeState {
writeln!(f, "Withdraw Authority: {}", authorized.withdrawer)?;
Ok(())
}
fn show_lockup(f: &mut fmt::Formatter, lockup: &CliLockup) -> fmt::Result {
fn show_lockup(f: &mut fmt::Formatter, lockup: Option<&CliLockup>) -> fmt::Result {
if let Some(lockup) = lockup {
if lockup.unix_timestamp != UnixTimestamp::default() {
writeln!(
f,
"Lockup Timestamp: {} (UnixTimestamp: {})",
DateTime::<Utc>::from_utc(
NaiveDateTime::from_timestamp(lockup.unix_timestamp, 0),
Utc
)
.to_rfc3339_opts(SecondsFormat::Secs, true),
lockup.unix_timestamp
)?;
}
if lockup.epoch != Epoch::default() {
writeln!(f, "Lockup Epoch: {}", lockup.epoch)?;
}
writeln!(f, "Lockup Custodian: {}", lockup.custodian)?;
}
Ok(())
}
writeln!(
f,
"Balance: {}",
build_balance_message(self.account_balance, self.use_lamports_unit, true)
)?;
if let Some(rent_exempt_reserve) = self.rent_exempt_reserve {
writeln!(
f,
"Lockup Timestamp: {} (UnixTimestamp: {})",
DateTime::<Utc>::from_utc(
NaiveDateTime::from_timestamp(lockup.unix_timestamp, 0),
Utc
)
.to_rfc3339_opts(SecondsFormat::Secs, true),
lockup.unix_timestamp
"Rent Exempt Reserve: {}",
build_balance_message(rent_exempt_reserve, self.use_lamports_unit, true)
)?;
writeln!(f, "Lockup Epoch: {}", lockup.epoch)?;
writeln!(f, "Lockup Custodian: {}", lockup.custodian)?;
Ok(())
}
match self.stake_type {
CliStakeType::RewardsPool => writeln!(f, "Stake account is a rewards pool")?,
CliStakeType::Uninitialized => writeln!(f, "Stake account is uninitialized")?,
CliStakeType::Initialized => {
writeln!(
f,
"Total Stake: {}",
build_balance_message(self.total_stake, self.use_lamports_unit, true)
)?;
writeln!(f, "Stake account is undelegated")?;
show_authorized(f, self.authorized.as_ref().unwrap())?;
show_lockup(f, self.lockup.as_ref().unwrap())?;
show_lockup(f, self.lockup.as_ref())?;
}
CliStakeType::Stake => {
writeln!(
f,
"Total Stake: {}",
build_balance_message(self.total_stake, self.use_lamports_unit, true)
)?;
writeln!(
f,
"Delegated Stake: {}",
build_balance_message(
self.delegated_stake.unwrap(),
self.use_lamports_unit,
true
)
)?;
if let Some(delegated_vote_account_address) = &self.delegated_vote_account_address {
let show_delegation = {
self.active_stake.is_some()
|| self.activating_stake.is_some()
|| self.deactivating_stake.is_some()
|| self
.deactivation_epoch
.map(|de| de > self.current_epoch)
.unwrap_or(true)
};
if show_delegation {
let delegated_stake = self.delegated_stake.unwrap();
writeln!(
f,
"Delegated Vote Account Address: {}",
delegated_vote_account_address
)?;
}
writeln!(
f,
"Stake activates starting from epoch: {}",
self.activation_epoch.unwrap()
)?;
if let Some(deactivation_epoch) = self.deactivation_epoch {
writeln!(
f,
"Stake deactivates starting from epoch: {}",
deactivation_epoch
"Delegated Stake: {}",
build_balance_message(delegated_stake, self.use_lamports_unit, true)
)?;
if self
.deactivation_epoch
.map(|d| self.current_epoch <= d)
.unwrap_or(true)
{
let active_stake = self.active_stake.unwrap_or(0);
writeln!(
f,
"Active Stake: {}",
build_balance_message(active_stake, self.use_lamports_unit, true),
)?;
let activating_stake = self.activating_stake.or_else(|| {
if self.active_stake.is_none() {
Some(delegated_stake)
} else {
None
}
});
if let Some(activating_stake) = activating_stake {
writeln!(
f,
"Activating Stake: {}",
build_balance_message(
activating_stake,
self.use_lamports_unit,
true
),
)?;
writeln!(
f,
"Stake activates starting from epoch: {}",
self.activation_epoch.unwrap()
)?;
}
}
if let Some(deactivation_epoch) = self.deactivation_epoch {
if self.current_epoch > deactivation_epoch {
let deactivating_stake = self.deactivating_stake.or(self.active_stake);
if let Some(deactivating_stake) = deactivating_stake {
writeln!(
f,
"Inactive Stake: {}",
build_balance_message(
delegated_stake - deactivating_stake,
self.use_lamports_unit,
true
),
)?;
writeln!(
f,
"Deactivating Stake: {}",
build_balance_message(
deactivating_stake,
self.use_lamports_unit,
true
),
)?;
}
}
writeln!(
f,
"Stake deactivates starting from epoch: {}",
deactivation_epoch
)?;
}
if let Some(delegated_vote_account_address) =
&self.delegated_vote_account_address
{
writeln!(
f,
"Delegated Vote Account Address: {}",
delegated_vote_account_address
)?;
}
} else {
writeln!(f, "Stake account is undelegated")?;
}
show_authorized(f, self.authorized.as_ref().unwrap())?;
show_lockup(f, self.lockup.as_ref().unwrap())?;
show_lockup(f, self.lockup.as_ref())?;
}
}
Ok(())
@@ -900,6 +1039,7 @@ impl fmt::Display for CliSignOnlyData {
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CliSignature {
pub signature: String,
}
@@ -913,6 +1053,7 @@ impl fmt::Display for CliSignature {
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CliAccountBalances {
pub accounts: Vec<RpcAccountBalance>,
}
@@ -937,6 +1078,7 @@ impl fmt::Display for CliAccountBalances {
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CliSupply {
pub total: u64,
pub circulating: u64,
@@ -981,3 +1123,25 @@ impl fmt::Display for CliSupply {
Ok(())
}
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CliFees {
pub slot: Slot,
pub blockhash: String,
pub lamports_per_signature: u64,
pub last_valid_slot: Slot,
}
impl fmt::Display for CliFees {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
writeln_name_value(f, "Blockhash:", &self.blockhash)?;
writeln_name_value(
f,
"Lamports per signature:",
&self.lamports_per_signature.to_string(),
)?;
writeln_name_value(f, "Last valid slot:", &self.last_valid_slot.to_string())?;
Ok(())
}
}

View File

@@ -1,23 +1,18 @@
use crate::{
cli::{CliCommand, CliCommandInfo, CliConfig, CliError, ProcessResult},
cli_output::*,
display::println_name_value,
display::{format_labeled_address, new_spinner_progress_bar, println_name_value},
spend_utils::{resolve_spend_tx_and_check_account_balance, SpendAmount},
};
use clap::{value_t, value_t_or_exit, App, AppSettings, Arg, ArgMatches, SubCommand};
use console::{style, Emoji};
use indicatif::{ProgressBar, ProgressStyle};
use solana_clap_utils::{
commitment::{commitment_arg, COMMITMENT_ARG},
input_parsers::*,
input_validators::*,
keypair::signer_from_path,
commitment::commitment_arg, input_parsers::*, input_validators::*, keypair::signer_from_path,
};
use solana_client::{
pubsub_client::{PubsubClient, SlotInfoMessage},
rpc_client::RpcClient,
rpc_config::{RpcLargestAccountsConfig, RpcLargestAccountsFilter},
rpc_request::MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS_SLOT_RANGE,
};
use solana_remote_wallet::remote_wallet::RemoteWalletManager;
use solana_sdk::{
@@ -28,12 +23,17 @@ use solana_sdk::{
message::Message,
native_token::lamports_to_sol,
pubkey::{self, Pubkey},
signature::Signature,
system_instruction, system_program,
sysvar::{self, Sysvar},
sysvar::{
self,
stake_history::{self, StakeHistory},
Sysvar,
},
transaction::Transaction,
};
use std::{
collections::{HashMap, VecDeque},
collections::{BTreeMap, HashMap, VecDeque},
net::SocketAddr,
sync::{
atomic::{AtomicBool, Ordering},
@@ -115,6 +115,10 @@ impl ClusterQuerySubCommands for App<'_, '_> {
.alias("get-slot")
.arg(commitment_arg()),
)
.subcommand(
SubCommand::with_name("block-height").about("Get current block height")
.arg(commitment_arg()),
)
.subcommand(
SubCommand::with_name("epoch").about("Get current epoch")
.arg(commitment_arg()),
@@ -253,9 +257,8 @@ impl ClusterQuerySubCommands for App<'_, '_> {
)
.subcommand(
SubCommand::with_name("transaction-history")
.about("Show historical transactions affecting the given address, \
ordered based on the slot in which they were confirmed in \
from lowest to highest slot")
.about("Show historical transactions affecting the given address \
from newest to oldest")
.arg(
pubkey!(Arg::with_name("address")
.index(1)
@@ -263,26 +266,22 @@ impl ClusterQuerySubCommands for App<'_, '_> {
.required(true),
"Account address"),
)
.arg(
Arg::with_name("end_slot")
.takes_value(false)
.value_name("SLOT")
.index(2)
.validator(is_slot)
.help(
"Slot to start from [default: latest slot at maximum commitment]"
),
)
.arg(
Arg::with_name("limit")
.long("limit")
.takes_value(true)
.value_name("NUMBER OF SLOTS")
.value_name("LIMIT")
.validator(is_slot)
.help(
"Limit the search to this many slots"
),
),
.default_value("1000")
.help("Maximum number of transaction signatures to return"),
)
.arg(
Arg::with_name("before")
.long("before")
.value_name("TRANSACTION_SIGNATURE")
.takes_value(true)
.help("Start with the first signature older than this one"),
)
)
}
}
@@ -293,13 +292,11 @@ pub fn parse_catchup(
) -> Result<CliCommandInfo, CliError> {
let node_pubkey = pubkey_of_signer(matches, "node_pubkey", wallet_manager)?.unwrap();
let node_json_rpc_url = value_t!(matches, "node_json_rpc_url", String).ok();
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
let follow = matches.is_present("follow");
Ok(CliCommandInfo {
command: CliCommand::Catchup {
node_pubkey,
node_json_rpc_url,
commitment_config,
follow,
},
signers: vec![],
@@ -319,14 +316,12 @@ pub fn parse_cluster_ping(
None
};
let timeout = Duration::from_secs(value_t_or_exit!(matches, "timeout", u64));
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
Ok(CliCommandInfo {
command: CliCommand::Ping {
lamports,
interval,
count,
timeout,
commitment_config,
},
signers: vec![signer_from_path(
matches,
@@ -345,32 +340,35 @@ pub fn parse_get_block_time(matches: &ArgMatches<'_>) -> Result<CliCommandInfo,
})
}
pub fn parse_get_epoch_info(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
pub fn parse_get_epoch(_matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
Ok(CliCommandInfo {
command: CliCommand::GetEpochInfo { commitment_config },
command: CliCommand::GetEpoch,
signers: vec![],
})
}
pub fn parse_get_slot(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
pub fn parse_get_epoch_info(_matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
Ok(CliCommandInfo {
command: CliCommand::GetSlot { commitment_config },
command: CliCommand::GetEpochInfo,
signers: vec![],
})
}
pub fn parse_get_epoch(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
pub fn parse_get_slot(_matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
Ok(CliCommandInfo {
command: CliCommand::GetEpoch { commitment_config },
command: CliCommand::GetSlot,
signers: vec![],
})
}
pub fn parse_get_block_height(_matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
Ok(CliCommandInfo {
command: CliCommand::GetBlockHeight,
signers: vec![],
})
}
pub fn parse_largest_accounts(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
let filter = if matches.is_present("circulating") {
Some(RpcLargestAccountsFilter::Circulating)
} else if matches.is_present("non_circulating") {
@@ -379,38 +377,29 @@ pub fn parse_largest_accounts(matches: &ArgMatches<'_>) -> Result<CliCommandInfo
None
};
Ok(CliCommandInfo {
command: CliCommand::LargestAccounts {
commitment_config,
filter,
},
command: CliCommand::LargestAccounts { filter },
signers: vec![],
})
}
pub fn parse_supply(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
let print_accounts = matches.is_present("print_accounts");
Ok(CliCommandInfo {
command: CliCommand::Supply {
commitment_config,
print_accounts,
},
command: CliCommand::Supply { print_accounts },
signers: vec![],
})
}
pub fn parse_total_supply(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
pub fn parse_total_supply(_matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
Ok(CliCommandInfo {
command: CliCommand::TotalSupply { commitment_config },
command: CliCommand::TotalSupply,
signers: vec![],
})
}
pub fn parse_get_transaction_count(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
pub fn parse_get_transaction_count(_matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
Ok(CliCommandInfo {
command: CliCommand::GetTransactionCount { commitment_config },
command: CliCommand::GetTransactionCount,
signers: vec![],
})
}
@@ -434,13 +423,9 @@ pub fn parse_show_stakes(
pub fn parse_show_validators(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
let use_lamports_unit = matches.is_present("lamports");
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
Ok(CliCommandInfo {
command: CliCommand::ShowValidators {
use_lamports_unit,
commitment_config,
},
command: CliCommand::ShowValidators { use_lamports_unit },
signers: vec![],
})
}
@@ -450,33 +435,32 @@ pub fn parse_transaction_history(
wallet_manager: &mut Option<Arc<RemoteWalletManager>>,
) -> Result<CliCommandInfo, CliError> {
let address = pubkey_of_signer(matches, "address", wallet_manager)?.unwrap();
let end_slot = value_t!(matches, "end_slot", Slot).ok();
let slot_limit = value_t!(matches, "limit", u64).ok();
let before = match matches.value_of("before") {
Some(signature) => Some(
signature
.parse()
.map_err(|err| CliError::BadParameter(format!("Invalid signature: {}", err)))?,
),
None => None,
};
let limit = value_t_or_exit!(matches, "limit", usize);
Ok(CliCommandInfo {
command: CliCommand::TransactionHistory {
address,
end_slot,
slot_limit,
before,
limit,
},
signers: vec![],
})
}
/// Creates a new process bar for processing that will take an unknown amount of time
fn new_spinner_progress_bar() -> ProgressBar {
let progress_bar = ProgressBar::new(42);
progress_bar
.set_style(ProgressStyle::default_spinner().template("{spinner:.green} {wide_msg}"));
progress_bar.enable_steady_tick(100);
progress_bar
}
pub fn process_catchup(
rpc_client: &RpcClient,
config: &CliConfig,
node_pubkey: &Pubkey,
node_json_rpc_url: &Option<String>,
commitment_config: CommitmentConfig,
follow: bool,
) -> ProcessResult {
let sleep_interval = 5;
@@ -525,8 +509,8 @@ pub fn process_catchup(
let mut previous_rpc_slot = std::u64::MAX;
let mut previous_slot_distance = 0;
loop {
let rpc_slot = rpc_client.get_slot_with_commitment(commitment_config)?;
let node_slot = node_client.get_slot_with_commitment(commitment_config)?;
let rpc_slot = rpc_client.get_slot_with_commitment(config.commitment)?;
let node_slot = node_client.get_slot_with_commitment(config.commitment)?;
if !follow && node_slot > std::cmp::min(previous_rpc_slot, rpc_slot) {
progress_bar.finish_and_clear();
return Ok(format!(
@@ -597,13 +581,16 @@ pub fn process_cluster_version(rpc_client: &RpcClient) -> ProcessResult {
Ok(remote_version.solana_core)
}
pub fn process_fees(rpc_client: &RpcClient) -> ProcessResult {
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
Ok(format!(
"blockhash: {}\nlamports per signature: {}",
recent_blockhash, fee_calculator.lamports_per_signature
))
pub fn process_fees(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let result = rpc_client.get_recent_blockhash_with_commitment(CommitmentConfig::default())?;
let (recent_blockhash, fee_calculator, last_valid_slot) = result.value;
let fees = CliFees {
slot: result.context.slot,
blockhash: recent_blockhash.to_string(),
lamports_per_signature: fee_calculator.lamports_per_signature,
last_valid_slot,
};
Ok(config.output_format.formatted_string(&fees))
}
pub fn process_leader_schedule(rpc_client: &RpcClient) -> ProcessResult {
@@ -656,13 +643,14 @@ pub fn process_get_block_time(
Ok(config.output_format.formatted_string(&block_time))
}
pub fn process_get_epoch_info(
rpc_client: &RpcClient,
config: &CliConfig,
commitment_config: CommitmentConfig,
) -> ProcessResult {
pub fn process_get_epoch(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let epoch_info = rpc_client.get_epoch_info_with_commitment(config.commitment)?;
Ok(epoch_info.epoch.to_string())
}
pub fn process_get_epoch_info(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let epoch_info: CliEpochInfo = rpc_client
.get_epoch_info_with_commitment(commitment_config.clone())?
.get_epoch_info_with_commitment(config.commitment)?
.into();
Ok(config.output_format.formatted_string(&epoch_info))
}
@@ -672,20 +660,16 @@ pub fn process_get_genesis_hash(rpc_client: &RpcClient) -> ProcessResult {
Ok(genesis_hash.to_string())
}
pub fn process_get_slot(
rpc_client: &RpcClient,
commitment_config: CommitmentConfig,
) -> ProcessResult {
let slot = rpc_client.get_slot_with_commitment(commitment_config.clone())?;
pub fn process_get_slot(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let slot = rpc_client.get_slot_with_commitment(config.commitment)?;
Ok(slot.to_string())
}
pub fn process_get_epoch(
rpc_client: &RpcClient,
commitment_config: CommitmentConfig,
) -> ProcessResult {
let epoch_info = rpc_client.get_epoch_info_with_commitment(commitment_config.clone())?;
Ok(epoch_info.epoch.to_string())
pub fn process_get_block_height(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let epoch_info: CliEpochInfo = rpc_client
.get_epoch_info_with_commitment(config.commitment)?
.into();
Ok(epoch_info.epoch_info.block_height.to_string())
}
pub fn parse_show_block_production(matches: &ArgMatches<'_>) -> Result<CliCommandInfo, CliError> {
@@ -771,11 +755,12 @@ pub fn process_show_block_production(
let leader_schedule = leader_schedule.unwrap();
let mut leader_per_slot_index = Vec::new();
leader_per_slot_index.resize(total_slots, "?");
leader_per_slot_index.resize(total_slots, "?".to_string());
for (pubkey, leader_slots) in leader_schedule.iter() {
let pubkey = format_labeled_address(pubkey, &config.address_labels);
for slot_index in leader_slots.iter() {
if *slot_index >= start_slot_index && *slot_index <= end_slot_index {
leader_per_slot_index[*slot_index - start_slot_index] = pubkey;
leader_per_slot_index[*slot_index - start_slot_index] = pubkey.clone();
}
}
}
@@ -852,12 +837,11 @@ pub fn process_show_block_production(
pub fn process_largest_accounts(
rpc_client: &RpcClient,
config: &CliConfig,
commitment_config: CommitmentConfig,
filter: Option<RpcLargestAccountsFilter>,
) -> ProcessResult {
let accounts = rpc_client
.get_largest_accounts_with_config(RpcLargestAccountsConfig {
commitment: Some(commitment_config),
commitment: Some(config.commitment),
filter,
})?
.value;
@@ -868,29 +852,21 @@ pub fn process_largest_accounts(
pub fn process_supply(
rpc_client: &RpcClient,
config: &CliConfig,
commitment_config: CommitmentConfig,
print_accounts: bool,
) -> ProcessResult {
let supply_response = rpc_client.supply_with_commitment(commitment_config.clone())?;
let supply_response = rpc_client.supply_with_commitment(config.commitment)?;
let mut supply: CliSupply = supply_response.value.into();
supply.print_accounts = print_accounts;
Ok(config.output_format.formatted_string(&supply))
}
pub fn process_total_supply(
rpc_client: &RpcClient,
commitment_config: CommitmentConfig,
) -> ProcessResult {
let total_supply = rpc_client.total_supply_with_commitment(commitment_config.clone())?;
pub fn process_total_supply(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let total_supply = rpc_client.total_supply_with_commitment(config.commitment)?;
Ok(format!("{} SOL", lamports_to_sol(total_supply)))
}
pub fn process_get_transaction_count(
rpc_client: &RpcClient,
commitment_config: CommitmentConfig,
) -> ProcessResult {
let transaction_count =
rpc_client.get_transaction_count_with_commitment(commitment_config.clone())?;
pub fn process_get_transaction_count(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let transaction_count = rpc_client.get_transaction_count_with_commitment(config.commitment)?;
Ok(transaction_count.to_string())
}
@@ -901,7 +877,6 @@ pub fn process_ping(
interval: &Duration,
count: &Option<u64>,
timeout: &Duration,
commitment_config: CommitmentConfig,
) -> ProcessResult {
println_name_value("Source Account:", &config.signers[0].pubkey().to_string());
println!();
@@ -938,7 +913,7 @@ pub fn process_ping(
let build_message = |lamports| {
let ix = system_instruction::transfer(&config.signers[0].pubkey(), &to, lamports);
Message::new(&[ix])
Message::new(&[ix], Some(&config.signers[0].pubkey()))
};
let (message, _) = resolve_spend_tx_and_check_account_balance(
rpc_client,
@@ -947,6 +922,7 @@ pub fn process_ping(
&fee_calculator,
&config.signers[0].pubkey(),
build_message,
config.commitment,
)?;
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, blockhash)?;
@@ -955,10 +931,8 @@ pub fn process_ping(
Ok(signature) => {
let transaction_sent = Instant::now();
loop {
let signature_status = rpc_client.get_signature_status_with_commitment(
&signature,
commitment_config.clone(),
)?;
let signature_status = rpc_client
.get_signature_status_with_commitment(&signature, config.commitment)?;
let elapsed_time = Instant::now().duration_since(transaction_sent);
if let Some(transaction_status) = signature_status {
match transaction_status {
@@ -1133,7 +1107,7 @@ pub fn process_live_slots(url: &str) -> ProcessResult {
Ok("".to_string())
}
pub fn process_show_gossip(rpc_client: &RpcClient) -> ProcessResult {
pub fn process_show_gossip(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult {
let cluster_nodes = rpc_client.get_cluster_nodes()?;
fn format_port(addr: Option<SocketAddr>) -> String {
@@ -1142,26 +1116,27 @@ pub fn process_show_gossip(rpc_client: &RpcClient) -> ProcessResult {
}
let s: Vec<_> = cluster_nodes
.iter()
.into_iter()
.map(|node| {
format!(
"{:15} | {:44} | {:6} | {:5} | {:5}",
"{:15} | {:44} | {:6} | {:5} | {:5} | {}",
node.gossip
.map(|addr| addr.ip().to_string())
.unwrap_or_else(|| "none".to_string()),
node.pubkey,
format_labeled_address(&node.pubkey, &config.address_labels),
format_port(node.gossip),
format_port(node.tpu),
format_port(node.rpc),
node.version.unwrap_or_else(|| "unknown".to_string()),
)
})
.collect();
Ok(format!(
"IP Address | Node identifier \
| Gossip | TPU | RPC\n\
| Gossip | TPU | RPC | Version\n\
----------------+----------------------------------------------+\
--------+-------+-------\n\
--------+-------+-------+----------------\n\
{}\n\
Nodes: {}",
s.join("\n"),
@@ -1181,7 +1156,16 @@ pub fn process_show_stakes(
let progress_bar = new_spinner_progress_bar();
progress_bar.set_message("Fetching stake accounts...");
let all_stake_accounts = rpc_client.get_program_accounts(&solana_stake_program::id())?;
let stake_history_account = rpc_client.get_account(&stake_history::id())?;
progress_bar.finish_and_clear();
let clock_account = rpc_client.get_account(&sysvar::clock::id())?;
let stake_history = StakeHistory::from_account(&stake_history_account).ok_or_else(|| {
CliError::RpcRequestError("Failed to deserialize stake history".to_string())
})?;
let clock: Clock = Sysvar::from_account(&clock_account).ok_or_else(|| {
CliError::RpcRequestError("Failed to deserialize clock sysvar".to_string())
})?;
let mut stake_accounts: Vec<CliKeyedStakeState> = vec![];
for (stake_pubkey, stake_account) in all_stake_accounts {
@@ -1195,6 +1179,8 @@ pub fn process_show_stakes(
stake_account.lamports,
&stake_state,
use_lamports_unit,
&stake_history,
&clock,
),
});
}
@@ -1211,6 +1197,8 @@ pub fn process_show_stakes(
stake_account.lamports,
&stake_state,
use_lamports_unit,
&stake_history,
&clock,
),
});
}
@@ -1228,10 +1216,21 @@ pub fn process_show_validators(
rpc_client: &RpcClient,
config: &CliConfig,
use_lamports_unit: bool,
commitment_config: CommitmentConfig,
) -> ProcessResult {
let epoch_info = rpc_client.get_epoch_info_with_commitment(commitment_config)?;
let vote_accounts = rpc_client.get_vote_accounts_with_commitment(commitment_config)?;
let epoch_info = rpc_client.get_epoch_info_with_commitment(config.commitment)?;
let vote_accounts = rpc_client.get_vote_accounts_with_commitment(config.commitment)?;
let mut node_version = HashMap::new();
let unknown_version = "unknown".to_string();
for contact_info in rpc_client.get_cluster_nodes()? {
node_version.insert(
contact_info.pubkey,
contact_info
.version
.unwrap_or_else(|| unknown_version.clone()),
);
}
let total_active_stake = vote_accounts
.current
.iter()
@@ -1250,21 +1249,58 @@ pub fn process_show_validators(
current.sort_by(|a, b| b.activated_stake.cmp(&a.activated_stake));
let current_validators: Vec<CliValidator> = current
.iter()
.map(|vote_account| CliValidator::new(vote_account, epoch_info.epoch))
.map(|vote_account| {
CliValidator::new(
vote_account,
epoch_info.epoch,
node_version
.get(&vote_account.node_pubkey)
.unwrap_or(&unknown_version)
.clone(),
&config.address_labels,
)
})
.collect();
let mut delinquent = vote_accounts.delinquent;
delinquent.sort_by(|a, b| b.activated_stake.cmp(&a.activated_stake));
let delinquent_validators: Vec<CliValidator> = delinquent
.iter()
.map(|vote_account| CliValidator::new(vote_account, epoch_info.epoch))
.map(|vote_account| {
CliValidator::new(
vote_account,
epoch_info.epoch,
node_version
.get(&vote_account.node_pubkey)
.unwrap_or(&unknown_version)
.clone(),
&config.address_labels,
)
})
.collect();
let mut stake_by_version: BTreeMap<_, CliValidatorsStakeByVersion> = BTreeMap::new();
for validator in current_validators.iter() {
let mut entry = stake_by_version
.entry(validator.version.clone())
.or_default();
entry.current_validators += 1;
entry.current_active_stake += validator.activated_stake;
}
for validator in delinquent_validators.iter() {
let mut entry = stake_by_version
.entry(validator.version.clone())
.or_default();
entry.delinquent_validators += 1;
entry.delinquent_active_stake += validator.activated_stake;
}
let cli_validators = CliValidators {
total_active_stake,
total_current_stake,
total_deliquent_stake,
current_validators,
delinquent_validators,
stake_by_version,
use_lamports_unit,
};
Ok(config.output_format.formatted_string(&cli_validators))
@@ -1272,41 +1308,36 @@ pub fn process_show_validators(
pub fn process_transaction_history(
rpc_client: &RpcClient,
config: &CliConfig,
address: &Pubkey,
end_slot: Option<Slot>, // None == use latest slot
slot_limit: Option<u64>,
before: Option<Signature>,
limit: usize,
) -> ProcessResult {
let end_slot = {
if let Some(end_slot) = end_slot {
end_slot
let results = rpc_client.get_confirmed_signatures_for_address2_with_config(
address,
before,
Some(limit),
)?;
let transactions_found = format!("{} transactions found", results.len());
for result in results {
if config.verbose {
println!(
"{} [slot={} status={}] {}",
result.signature,
result.slot,
match result.err {
None => "Confirmed".to_string(),
Some(err) => format!("Failed: {:?}", err),
},
result.memo.unwrap_or_else(|| "".to_string()),
);
} else {
rpc_client.get_slot_with_commitment(CommitmentConfig::max())?
println!("{}", result.signature);
}
};
let mut start_slot = match slot_limit {
Some(slot_limit) => end_slot.saturating_sub(slot_limit),
None => rpc_client.minimum_ledger_slot()?,
};
println!(
"Transactions affecting {} within slots [{},{}]",
address, start_slot, end_slot
);
let mut transaction_count = 0;
while start_slot < end_slot {
let signatures = rpc_client.get_confirmed_signatures_for_address(
address,
start_slot,
(start_slot + MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS_SLOT_RANGE).min(end_slot),
)?;
for signature in &signatures {
println!("{}", signature);
}
transaction_count += signatures.len();
start_slot += MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS_SLOT_RANGE;
}
Ok(format!("{} transactions found", transaction_count))
Ok(transactions_found)
}
#[cfg(test)]
@@ -1372,15 +1403,24 @@ mod tests {
}
);
let test_get_epoch = test_commands
.clone()
.get_matches_from(vec!["test", "epoch"]);
assert_eq!(
parse_command(&test_get_epoch, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::GetEpoch,
signers: vec![],
}
);
let test_get_epoch_info = test_commands
.clone()
.get_matches_from(vec!["test", "epoch-info"]);
assert_eq!(
parse_command(&test_get_epoch_info, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::GetEpochInfo {
commitment_config: CommitmentConfig::recent(),
},
command: CliCommand::GetEpochInfo,
signers: vec![],
}
);
@@ -1400,22 +1440,7 @@ mod tests {
assert_eq!(
parse_command(&test_get_slot, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::GetSlot {
commitment_config: CommitmentConfig::recent(),
},
signers: vec![],
}
);
let test_get_epoch = test_commands
.clone()
.get_matches_from(vec!["test", "epoch"]);
assert_eq!(
parse_command(&test_get_epoch, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::GetEpoch {
commitment_config: CommitmentConfig::recent(),
},
command: CliCommand::GetSlot,
signers: vec![],
}
);
@@ -1426,9 +1451,7 @@ mod tests {
assert_eq!(
parse_command(&test_total_supply, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::TotalSupply {
commitment_config: CommitmentConfig::recent(),
},
command: CliCommand::TotalSupply,
signers: vec![],
}
);
@@ -1439,9 +1462,7 @@ mod tests {
assert_eq!(
parse_command(&test_transaction_count, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::GetTransactionCount {
commitment_config: CommitmentConfig::recent(),
},
command: CliCommand::GetTransactionCount,
signers: vec![],
}
);
@@ -1466,7 +1487,6 @@ mod tests {
interval: Duration::from_secs(1),
count: Some(2),
timeout: Duration::from_secs(3),
commitment_config: CommitmentConfig::max(),
},
signers: vec![default_keypair.into()],
}

View File

@@ -1,11 +1,12 @@
use crate::cli::SettingType;
use console::style;
use indicatif::{ProgressBar, ProgressStyle};
use solana_sdk::{
hash::Hash, native_token::lamports_to_sol, program_utils::limited_deserialize,
transaction::Transaction,
};
use solana_transaction_status::RpcTransactionStatusMeta;
use std::{fmt, io};
use solana_transaction_status::UiTransactionStatusMeta;
use std::{collections::HashMap, fmt, io};
// Pretty print a "name value"
pub fn println_name_value(name: &str, value: &str) {
@@ -26,6 +27,19 @@ pub fn writeln_name_value(f: &mut fmt::Formatter, name: &str, value: &str) -> fm
writeln!(f, "{} {}", style(name).bold(), styled_value)
}
pub fn format_labeled_address(pubkey: &str, address_labels: &HashMap<String, String>) -> String {
let label = address_labels.get(pubkey);
match label {
Some(label) => format!(
"{:.31} ({:.4}..{})",
label,
pubkey,
pubkey.split_at(pubkey.len() - 4).1
),
None => pubkey.to_string(),
}
}
pub fn println_name_value_or(name: &str, value: &str, setting_type: SettingType) {
let description = match setting_type {
SettingType::Explicit => "",
@@ -67,7 +81,7 @@ pub fn println_signers(
pub fn write_transaction<W: io::Write>(
w: &mut W,
transaction: &Transaction,
transaction_status: &Option<RpcTransactionStatusMeta>,
transaction_status: &Option<UiTransactionStatusMeta>,
prefix: &str,
) -> io::Result<()> {
let message = &transaction.message;
@@ -190,7 +204,7 @@ pub fn write_transaction<W: io::Write>(
pub fn println_transaction(
transaction: &Transaction,
transaction_status: &Option<RpcTransactionStatusMeta>,
transaction_status: &Option<UiTransactionStatusMeta>,
prefix: &str,
) {
let mut w = Vec::new();
@@ -200,3 +214,41 @@ pub fn println_transaction(
}
}
}
/// Creates a new process bar for processing that will take an unknown amount of time
pub fn new_spinner_progress_bar() -> ProgressBar {
let progress_bar = ProgressBar::new(42);
progress_bar
.set_style(ProgressStyle::default_spinner().template("{spinner:.green} {wide_msg}"));
progress_bar.enable_steady_tick(100);
progress_bar
}
#[cfg(test)]
mod test {
use super::*;
use solana_sdk::pubkey::Pubkey;
#[test]
fn test_format_labeled_address() {
let pubkey = Pubkey::default().to_string();
let mut address_labels = HashMap::new();
assert_eq!(format_labeled_address(&pubkey, &address_labels), pubkey);
address_labels.insert(pubkey.to_string(), "Default Address".to_string());
assert_eq!(
&format_labeled_address(&pubkey, &address_labels),
"Default Address (1111..1111)"
);
address_labels.insert(
pubkey.to_string(),
"abcdefghijklmnopqrstuvwxyz1234567890".to_string(),
);
assert_eq!(
&format_labeled_address(&pubkey, &address_labels),
"abcdefghijklmnopqrstuvwxyz12345 (1111..1111)"
);
}
}

View File

@@ -1,25 +1,43 @@
use clap::{crate_description, crate_name, AppSettings, Arg, ArgGroup, ArgMatches, SubCommand};
use clap::{
crate_description, crate_name, value_t_or_exit, AppSettings, Arg, ArgGroup, ArgMatches,
SubCommand,
};
use console::style;
use solana_clap_utils::{
input_validators::is_url, keypair::SKIP_SEED_PHRASE_VALIDATION_ARG, DisplayError,
commitment::COMMITMENT_ARG, input_parsers::commitment_of, input_validators::is_url,
keypair::SKIP_SEED_PHRASE_VALIDATION_ARG, DisplayError,
};
use solana_cli::{
cli::{app, parse_command, process_command, CliCommandInfo, CliConfig, CliSigners},
cli::{
app, parse_command, process_command, CliCommandInfo, CliConfig, CliSigners,
DEFAULT_RPC_TIMEOUT_SECONDS,
},
cli_output::OutputFormat,
display::{println_name_value, println_name_value_or},
};
use solana_cli_config::{Config, CONFIG_FILE};
use solana_client::rpc_config::RpcSendTransactionConfig;
use solana_remote_wallet::remote_wallet::RemoteWalletManager;
use std::{error, sync::Arc};
use std::{collections::HashMap, error, path::PathBuf, sync::Arc, time::Duration};
fn parse_settings(matches: &ArgMatches<'_>) -> Result<bool, Box<dyn error::Error>> {
let parse_args = match matches.subcommand() {
("config", Some(matches)) => match matches.subcommand() {
("get", Some(subcommand_matches)) => {
if let Some(config_file) = matches.value_of("config_file") {
let config = Config::load(config_file).unwrap_or_default();
("config", Some(matches)) => {
let config_file = match matches.value_of("config_file") {
None => {
println!(
"{} Either provide the `--config` arg or ensure home directory exists to use the default config location",
style("No config file found.").bold()
);
return Ok(false);
}
Some(config_file) => config_file,
};
let mut config = Config::load(config_file).unwrap_or_default();
match matches.subcommand() {
("get", Some(subcommand_matches)) => {
let (url_setting_type, json_rpc_url) =
CliConfig::compute_json_rpc_url_setting("", &config.json_rpc_url);
let (ws_setting_type, websocket_url) = CliConfig::compute_websocket_url_setting(
@@ -45,17 +63,8 @@ fn parse_settings(matches: &ArgMatches<'_>) -> Result<bool, Box<dyn error::Error
println_name_value_or("WebSocket URL:", &websocket_url, ws_setting_type);
println_name_value_or("Keypair Path:", &keypair_path, keypair_setting_type);
}
} else {
println!(
"{} Either provide the `--config` arg or ensure home directory exists to use the default config location",
style("No config file found.").bold()
);
}
false
}
("set", Some(subcommand_matches)) => {
if let Some(config_file) = matches.value_of("config_file") {
let mut config = Config::load(config_file).unwrap_or_default();
("set", Some(subcommand_matches)) => {
if let Some(url) = subcommand_matches.value_of("json_rpc_url") {
config.json_rpc_url = url.to_string();
// Revert to a computed `websocket_url` value when `json_rpc_url` is
@@ -68,6 +77,7 @@ fn parse_settings(matches: &ArgMatches<'_>) -> Result<bool, Box<dyn error::Error
if let Some(keypair) = subcommand_matches.value_of("keypair") {
config.keypair_path = keypair.to_string();
}
config.save(config_file)?;
let (url_setting_type, json_rpc_url) =
@@ -85,16 +95,22 @@ fn parse_settings(matches: &ArgMatches<'_>) -> Result<bool, Box<dyn error::Error
println_name_value_or("RPC URL:", &json_rpc_url, url_setting_type);
println_name_value_or("WebSocket URL:", &websocket_url, ws_setting_type);
println_name_value_or("Keypair Path:", &keypair_path, keypair_setting_type);
} else {
println!(
"{} Either provide the `--config` arg or ensure home directory exists to use the default config location",
style("No config file found.").bold()
);
}
false
("import-address-labels", Some(subcommand_matches)) => {
let filename = value_t_or_exit!(subcommand_matches, "filename", PathBuf);
config.import_address_labels(&filename)?;
config.save(config_file)?;
println!("Address labels imported from {:?}", filename);
}
("export-address-labels", Some(subcommand_matches)) => {
let filename = value_t_or_exit!(subcommand_matches, "filename", PathBuf);
config.export_address_labels(&filename)?;
println!("Address labels exported to {:?}", filename);
}
_ => unreachable!(),
}
_ => unreachable!(),
},
false
}
_ => true,
};
Ok(parse_args)
@@ -113,6 +129,10 @@ pub fn parse_args<'a>(
matches.value_of("json_rpc_url").unwrap_or(""),
&config.json_rpc_url,
);
let rpc_timeout = value_t_or_exit!(matches, "rpc_timeout", u64);
let rpc_timeout = Duration::from_secs(rpc_timeout);
let (_, websocket_url) = CliConfig::compute_websocket_url_setting(
matches.value_of("websocket_url").unwrap_or(""),
&config.websocket_url,
@@ -136,6 +156,18 @@ pub fn parse_args<'a>(
})
.unwrap_or(OutputFormat::Display);
let commitment = matches
.subcommand_name()
.and_then(|name| matches.subcommand_matches(name))
.and_then(|sub_matches| commitment_of(sub_matches, COMMITMENT_ARG.long))
.unwrap_or_default();
let address_labels = if matches.is_present("no_address_labels") {
HashMap::new()
} else {
config.address_labels
};
Ok((
CliConfig {
command,
@@ -144,8 +176,12 @@ pub fn parse_args<'a>(
signers: vec![],
keypair_path: default_signer_path,
rpc_client: None,
rpc_timeout,
verbose: matches.is_present("verbose"),
output_format,
commitment,
send_transaction_config: RpcSendTransactionConfig::default(),
address_labels,
},
signers,
))
@@ -207,6 +243,12 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.global(true)
.help("Show additional information"),
)
.arg(
Arg::with_name("no_address_labels")
.long("no-address-labels")
.global(true)
.help("Do not use address labels in the output"),
)
.arg(
Arg::with_name("output_format")
.long("output")
@@ -222,6 +264,16 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.global(true)
.help(SKIP_SEED_PHRASE_VALIDATION_ARG.help),
)
.arg(
Arg::with_name("rpc_timeout")
.long("rpc-timeout")
.value_name("SECONDS")
.takes_value(true)
.default_value(DEFAULT_RPC_TIMEOUT_SECONDS)
.global(true)
.hidden(true)
.help("Timeout value for RPC requests"),
)
.subcommand(
SubCommand::with_name("config")
.about("Solana command-line tool configuration settings")
@@ -248,6 +300,28 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.multiple(true)
.required(true),
),
)
.subcommand(
SubCommand::with_name("import-address-labels")
.about("Import a list of address labels")
.arg(
Arg::with_name("filename")
.index(1)
.value_name("FILENAME")
.takes_value(true)
.help("YAML file of address labels"),
),
)
.subcommand(
SubCommand::with_name("export-address-labels")
.about("Export the current address labels")
.arg(
Arg::with_name("filename")
.index(1)
.value_name("FILENAME")
.takes_value(true)
.help("YAML file to receive the current address labels"),
),
),
)
.get_matches();

View File

@@ -1,5 +1,5 @@
use crate::{
checks::{check_account_for_fee, check_unique_pubkeys},
checks::{check_account_for_fee_with_commitment, check_unique_pubkeys},
cli::{
generate_unique_signers, log_instruction_custom_error, CliCommand, CliCommandInfo,
CliConfig, CliError, ProcessResult, SignerIndex,
@@ -16,6 +16,7 @@ use solana_remote_wallet::remote_wallet::RemoteWalletManager;
use solana_sdk::{
account::Account,
account_utils::StateMut,
commitment_config::CommitmentConfig,
hash::Hash,
message::Message,
nonce::{
@@ -222,10 +223,23 @@ impl NonceSubCommands for App<'_, '_> {
pub fn get_account(
rpc_client: &RpcClient,
nonce_pubkey: &Pubkey,
) -> Result<Account, CliNonceError> {
get_account_with_commitment(rpc_client, nonce_pubkey, CommitmentConfig::default())
}
pub fn get_account_with_commitment(
rpc_client: &RpcClient,
nonce_pubkey: &Pubkey,
commitment: CommitmentConfig,
) -> Result<Account, CliNonceError> {
rpc_client
.get_account(nonce_pubkey)
.get_account_with_commitment(nonce_pubkey, commitment)
.map_err(|e| CliNonceError::Client(format!("{}", e)))
.and_then(|result| {
result.value.ok_or_else(|| {
CliNonceError::Client(format!("AccountNotFound: pubkey={}", nonce_pubkey))
})
})
.and_then(|a| match account_identity_ok(&a) {
Ok(()) => Ok(a),
Err(e) => Err(e),
@@ -433,21 +447,28 @@ pub fn process_authorize_nonce_account(
nonce_authority: SignerIndex,
new_authority: &Pubkey,
) -> ProcessResult {
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let nonce_authority = config.signers[nonce_authority];
let ix = authorize_nonce_account(nonce_account, &nonce_authority.pubkey(), new_authority);
let message = Message::new_with_payer(&[ix], Some(&config.signers[0].pubkey()));
let message = Message::new(&[ix], Some(&config.signers[0].pubkey()));
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&config.signers[0].pubkey(),
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<NonceError>(result, &config)
}
@@ -491,10 +512,12 @@ pub fn process_create_nonce_account(
lamports,
)
};
Message::new_with_payer(&ixs, Some(&config.signers[0].pubkey()))
Message::new(&ixs, Some(&config.signers[0].pubkey()))
};
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let (message, lamports) = resolve_spend_tx_and_check_account_balance(
rpc_client,
@@ -503,9 +526,12 @@ pub fn process_create_nonce_account(
&fee_calculator,
&config.signers[0].pubkey(),
build_message,
config.commitment,
)?;
if let Ok(nonce_account) = get_account(rpc_client, &nonce_account_address) {
if let Ok(nonce_account) =
get_account_with_commitment(rpc_client, &nonce_account_address, config.commitment)
{
let err_msg = if state_from_account(&nonce_account).is_ok() {
format!("Nonce account {} already exists", nonce_account_address)
} else {
@@ -528,12 +554,22 @@ pub fn process_create_nonce_account(
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<SystemError>(result, &config)
}
pub fn process_get_nonce(rpc_client: &RpcClient, nonce_account_pubkey: &Pubkey) -> ProcessResult {
match get_account(rpc_client, nonce_account_pubkey).and_then(|ref a| state_from_account(a))? {
pub fn process_get_nonce(
rpc_client: &RpcClient,
config: &CliConfig,
nonce_account_pubkey: &Pubkey,
) -> ProcessResult {
match get_account_with_commitment(rpc_client, nonce_account_pubkey, config.commitment)
.and_then(|ref a| state_from_account(a))?
{
State::Uninitialized => Ok("Nonce account is uninitialized".to_string()),
State::Initialized(ref data) => Ok(format!("{:?}", data.blockhash)),
}
@@ -550,7 +586,9 @@ pub fn process_new_nonce(
(&nonce_account, "nonce_account_pubkey".to_string()),
)?;
if rpc_client.get_account(&nonce_account).is_err() {
let nonce_account_check =
rpc_client.get_account_with_commitment(&nonce_account, config.commitment);
if nonce_account_check.is_err() || nonce_account_check.unwrap().value.is_none() {
return Err(CliError::BadParameter(
"Unable to create new nonce, no nonce account found".to_string(),
)
@@ -559,17 +597,24 @@ pub fn process_new_nonce(
let nonce_authority = config.signers[nonce_authority];
let ix = advance_nonce_account(&nonce_account, &nonce_authority.pubkey());
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let message = Message::new_with_payer(&[ix], Some(&config.signers[0].pubkey()));
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let message = Message::new(&[ix], Some(&config.signers[0].pubkey()));
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&config.signers[0].pubkey(),
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<SystemError>(result, &config)
}
@@ -579,7 +624,8 @@ pub fn process_show_nonce_account(
nonce_account_pubkey: &Pubkey,
use_lamports_unit: bool,
) -> ProcessResult {
let nonce_account = get_account(rpc_client, nonce_account_pubkey)?;
let nonce_account =
get_account_with_commitment(rpc_client, nonce_account_pubkey, config.commitment)?;
let print_account = |data: Option<&nonce::state::Data>| {
let mut nonce_account = CliNonceAccount {
balance: nonce_account.lamports,
@@ -610,7 +656,9 @@ pub fn process_withdraw_from_nonce_account(
destination_account_pubkey: &Pubkey,
lamports: u64,
) -> ProcessResult {
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let nonce_authority = config.signers[nonce_authority];
let ix = withdraw_nonce_account(
@@ -619,16 +667,21 @@ pub fn process_withdraw_from_nonce_account(
destination_account_pubkey,
lamports,
);
let message = Message::new_with_payer(&[ix], Some(&config.signers[0].pubkey()));
let message = Message::new(&[ix], Some(&config.signers[0].pubkey()));
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&config.signers[0].pubkey(),
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<NonceError>(result, &config)
}

View File

@@ -1,4 +1,5 @@
use super::*;
use solana_sdk::commitment_config::CommitmentConfig;
#[derive(Debug, PartialEq)]
pub enum Source {
@@ -10,14 +11,17 @@ impl Source {
pub fn get_blockhash_and_fee_calculator(
&self,
rpc_client: &RpcClient,
commitment: CommitmentConfig,
) -> Result<(Hash, FeeCalculator), Box<dyn std::error::Error>> {
match self {
Self::Cluster => {
let res = rpc_client.get_recent_blockhash()?;
Ok(res)
let res = rpc_client
.get_recent_blockhash_with_commitment(commitment)?
.value;
Ok((res.0, res.1))
}
Self::NonceAccount(ref pubkey) => {
let data = nonce::get_account(rpc_client, pubkey)
let data = nonce::get_account_with_commitment(rpc_client, pubkey, commitment)
.and_then(|ref a| nonce::data_from_account(a))?;
Ok((data.blockhash, data.fee_calculator))
}
@@ -28,23 +32,21 @@ impl Source {
&self,
rpc_client: &RpcClient,
blockhash: &Hash,
commitment: CommitmentConfig,
) -> Result<Option<FeeCalculator>, Box<dyn std::error::Error>> {
match self {
Self::Cluster => {
let res = rpc_client.get_fee_calculator_for_blockhash(blockhash)?;
let res = rpc_client
.get_fee_calculator_for_blockhash_with_commitment(blockhash, commitment)?
.value;
Ok(res)
}
Self::NonceAccount(ref pubkey) => {
let res = nonce::get_account(rpc_client, pubkey)
.and_then(|ref a| nonce::data_from_account(a))
.and_then(|d| {
if d.blockhash == *blockhash {
Ok(Some(d.fee_calculator))
} else {
Ok(None)
}
})?;
Ok(res)
let res = nonce::get_account_with_commitment(rpc_client, pubkey, commitment)?;
let res = nonce::data_from_account(&res)?;
Ok(Some(res)
.filter(|d| d.blockhash == *blockhash)
.map(|d| d.fee_calculator))
}
}
}
@@ -80,16 +82,19 @@ impl BlockhashQuery {
pub fn get_blockhash_and_fee_calculator(
&self,
rpc_client: &RpcClient,
commitment: CommitmentConfig,
) -> Result<(Hash, FeeCalculator), Box<dyn std::error::Error>> {
match self {
BlockhashQuery::None(hash) => Ok((*hash, FeeCalculator::default())),
BlockhashQuery::FeeCalculator(source, hash) => {
let fee_calculator = source
.get_fee_calculator(rpc_client, hash)?
.get_fee_calculator(rpc_client, hash, commitment)?
.ok_or(format!("Hash has expired {:?}", hash))?;
Ok((*hash, fee_calculator))
}
BlockhashQuery::All(source) => source.get_blockhash_and_fee_calculator(rpc_client),
BlockhashQuery::All(source) => {
source.get_blockhash_and_fee_calculator(rpc_client, commitment)
}
}
}
}
@@ -106,9 +111,10 @@ mod tests {
use crate::{nonce::nonce_arg, offline::blockhash_query::BlockhashQuery};
use clap::App;
use serde_json::{self, json, Value};
use solana_account_decoder::{UiAccount, UiAccountEncoding};
use solana_client::{
rpc_request::RpcRequest,
rpc_response::{Response, RpcAccount, RpcFeeCalculator, RpcResponseContext},
rpc_response::{Response, RpcFeeCalculator, RpcResponseContext},
};
use solana_sdk::{
account::Account, fee_calculator::FeeCalculator, hash::hash, nonce, system_program,
@@ -292,7 +298,7 @@ mod tests {
let rpc_client = RpcClient::new_mock_with_mocks("".to_string(), mocks);
assert_eq!(
BlockhashQuery::default()
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.unwrap(),
(rpc_blockhash, rpc_fee_calc.clone()),
);
@@ -308,7 +314,7 @@ mod tests {
let rpc_client = RpcClient::new_mock_with_mocks("".to_string(), mocks);
assert_eq!(
BlockhashQuery::FeeCalculator(Source::Cluster, test_blockhash)
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.unwrap(),
(test_blockhash, rpc_fee_calc),
);
@@ -320,13 +326,13 @@ mod tests {
let rpc_client = RpcClient::new_mock_with_mocks("".to_string(), mocks);
assert_eq!(
BlockhashQuery::None(test_blockhash)
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.unwrap(),
(test_blockhash, FeeCalculator::default()),
);
let rpc_client = RpcClient::new_mock("fails".to_string());
assert!(BlockhashQuery::default()
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.is_err());
let nonce_blockhash = Hash::new(&[2u8; 32]);
@@ -344,7 +350,13 @@ mod tests {
)
.unwrap();
let nonce_pubkey = Pubkey::new(&[4u8; 32]);
let rpc_nonce_account = RpcAccount::encode(nonce_account);
let rpc_nonce_account = UiAccount::encode(
&nonce_pubkey,
nonce_account,
UiAccountEncoding::Binary64,
None,
None,
);
let get_account_response = json!(Response {
context: RpcResponseContext { slot: 1 },
value: json!(Some(rpc_nonce_account)),
@@ -355,7 +367,7 @@ mod tests {
let rpc_client = RpcClient::new_mock_with_mocks("".to_string(), mocks);
assert_eq!(
BlockhashQuery::All(Source::NonceAccount(nonce_pubkey))
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.unwrap(),
(nonce_blockhash, nonce_fee_calc.clone()),
);
@@ -364,7 +376,7 @@ mod tests {
let rpc_client = RpcClient::new_mock_with_mocks("".to_string(), mocks);
assert_eq!(
BlockhashQuery::FeeCalculator(Source::NonceAccount(nonce_pubkey), nonce_blockhash)
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.unwrap(),
(nonce_blockhash, nonce_fee_calc),
);
@@ -373,7 +385,7 @@ mod tests {
let rpc_client = RpcClient::new_mock_with_mocks("".to_string(), mocks);
assert!(
BlockhashQuery::FeeCalculator(Source::NonceAccount(nonce_pubkey), test_blockhash)
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.is_err()
);
let mut mocks = HashMap::new();
@@ -381,14 +393,14 @@ mod tests {
let rpc_client = RpcClient::new_mock_with_mocks("".to_string(), mocks);
assert_eq!(
BlockhashQuery::None(nonce_blockhash)
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.unwrap(),
(nonce_blockhash, FeeCalculator::default()),
);
let rpc_client = RpcClient::new_mock("fails".to_string());
assert!(BlockhashQuery::All(Source::NonceAccount(nonce_pubkey))
.get_blockhash_and_fee_calculator(&rpc_client)
.get_blockhash_and_fee_calculator(&rpc_client, CommitmentConfig::default())
.is_err());
}
}

View File

@@ -1,12 +1,13 @@
use crate::{
checks::{calculate_fee, check_account_for_balance},
checks::{calculate_fee, check_account_for_balance_with_commitment},
cli::CliError,
};
use clap::ArgMatches;
use solana_clap_utils::{input_parsers::lamports_of_sol, offline::SIGN_ONLY_ARG};
use solana_client::rpc_client::RpcClient;
use solana_sdk::{
fee_calculator::FeeCalculator, message::Message, native_token::lamports_to_sol, pubkey::Pubkey,
commitment_config::CommitmentConfig, fee_calculator::FeeCalculator, message::Message,
native_token::lamports_to_sol, pubkey::Pubkey,
};
#[derive(Debug, PartialEq, Clone, Copy)]
@@ -49,6 +50,7 @@ pub fn resolve_spend_tx_and_check_account_balance<F>(
fee_calculator: &FeeCalculator,
from_pubkey: &Pubkey,
build_message: F,
commitment: CommitmentConfig,
) -> Result<(Message, u64), CliError>
where
F: Fn(u64) -> Message,
@@ -61,6 +63,7 @@ where
from_pubkey,
from_pubkey,
build_message,
commitment,
)
}
@@ -72,6 +75,7 @@ pub fn resolve_spend_tx_and_check_account_balances<F>(
from_pubkey: &Pubkey,
fee_pubkey: &Pubkey,
build_message: F,
commitment: CommitmentConfig,
) -> Result<(Message, u64), CliError>
where
F: Fn(u64) -> Message,
@@ -87,7 +91,9 @@ where
);
Ok((message, spend))
} else {
let from_balance = rpc_client.get_balance(&from_pubkey)?;
let from_balance = rpc_client
.get_balance_with_commitment(&from_pubkey, commitment)?
.value;
let (message, SpendAndFee { spend, fee }) = resolve_spend_message(
amount,
fee_calculator,
@@ -107,7 +113,8 @@ where
if from_balance < spend {
return Err(CliError::InsufficientFundsForSpend(lamports_to_sol(spend)));
}
if !check_account_for_balance(rpc_client, fee_pubkey, fee)? {
if !check_account_for_balance_with_commitment(rpc_client, fee_pubkey, fee, commitment)?
{
return Err(CliError::InsufficientFundsForFee(lamports_to_sol(fee)));
}
}

View File

@@ -1,25 +1,27 @@
use crate::{
checks::{check_account_for_fee, check_unique_pubkeys},
checks::{check_account_for_fee_with_commitment, check_unique_pubkeys},
cli::{
fee_payer_arg, generate_unique_signers, log_instruction_custom_error, nonce_authority_arg,
return_signers, CliCommand, CliCommandInfo, CliConfig, CliError, ProcessResult,
SignerIndex, FEE_PAYER_ARG,
},
cli_output::{CliStakeHistory, CliStakeHistoryEntry, CliStakeState, CliStakeType},
nonce::{check_nonce_account, nonce_arg, NONCE_ARG, NONCE_AUTHORITY_ARG},
nonce::{self, check_nonce_account, nonce_arg, NONCE_ARG, NONCE_AUTHORITY_ARG},
offline::{blockhash_query::BlockhashQuery, *},
spend_utils::{resolve_spend_tx_and_check_account_balances, SpendAmount},
};
use clap::{App, Arg, ArgGroup, ArgMatches, SubCommand};
use solana_clap_utils::{input_parsers::*, input_validators::*, offline::*, ArgConstant};
use solana_client::rpc_client::RpcClient;
use solana_client::{rpc_client::RpcClient, rpc_request::DELINQUENT_VALIDATOR_SLOT_DISTANCE};
use solana_remote_wallet::remote_wallet::RemoteWalletManager;
use solana_sdk::{
account_utils::StateMut,
clock::Clock,
message::Message,
pubkey::Pubkey,
system_instruction::SystemError,
sysvar::{
clock,
stake_history::{self, StakeHistory},
Sysvar,
},
@@ -264,6 +266,29 @@ impl StakeSubCommands for App<'_, '_> {
.arg(nonce_authority_arg())
.arg(fee_payer_arg())
)
.subcommand(
SubCommand::with_name("merge-stake")
.about("Merges one stake account into another")
.arg(
pubkey!(Arg::with_name("stake_account_pubkey")
.index(1)
.value_name("STAKE_ACCOUNT_ADDRESS")
.required(true),
"Stake account to merge into")
)
.arg(
pubkey!(Arg::with_name("source_stake_account_pubkey")
.index(2)
.value_name("SOURCE_STAKE_ACCOUNT_ADDRESS")
.required(true),
"Source stake account for the merge. If successful, this stake account will no longer exist after the merge")
)
.arg(stake_authority_arg())
.offline_args()
.arg(nonce_arg())
.arg(nonce_authority_arg())
.arg(fee_payer_arg())
)
.subcommand(
SubCommand::with_name("withdraw-stake")
.about("Withdraw the unstaked SOL from the stake account")
@@ -606,6 +631,47 @@ pub fn parse_split_stake(
})
}
pub fn parse_merge_stake(
matches: &ArgMatches<'_>,
default_signer_path: &str,
wallet_manager: &mut Option<Arc<RemoteWalletManager>>,
) -> Result<CliCommandInfo, CliError> {
let stake_account_pubkey =
pubkey_of_signer(matches, "stake_account_pubkey", wallet_manager)?.unwrap();
let source_stake_account_pubkey = pubkey_of(matches, "source_stake_account_pubkey").unwrap();
let sign_only = matches.is_present(SIGN_ONLY_ARG.name);
let blockhash_query = BlockhashQuery::new_from_matches(matches);
let nonce_account = pubkey_of(matches, NONCE_ARG.name);
let (stake_authority, stake_authority_pubkey) =
signer_of(matches, STAKE_AUTHORITY_ARG.name, wallet_manager)?;
let (nonce_authority, nonce_authority_pubkey) =
signer_of(matches, NONCE_AUTHORITY_ARG.name, wallet_manager)?;
let (fee_payer, fee_payer_pubkey) = signer_of(matches, FEE_PAYER_ARG.name, wallet_manager)?;
let mut bulk_signers = vec![stake_authority, fee_payer];
if nonce_account.is_some() {
bulk_signers.push(nonce_authority);
}
let signer_info =
generate_unique_signers(bulk_signers, matches, default_signer_path, wallet_manager)?;
Ok(CliCommandInfo {
command: CliCommand::MergeStake {
stake_account_pubkey,
source_stake_account_pubkey,
stake_authority: signer_info.index_of(stake_authority_pubkey).unwrap(),
sign_only,
blockhash_query,
nonce_account,
nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(),
fee_payer: signer_info.index_of(fee_payer_pubkey).unwrap(),
},
signers: signer_info.signers,
})
}
pub fn parse_stake_deactivate_stake(
matches: &ArgMatches<'_>,
default_signer_path: &str,
@@ -825,12 +891,12 @@ pub fn process_create_stake_account(
&nonce_authority.pubkey(),
)
} else {
Message::new_with_payer(&ixs, Some(&fee_payer.pubkey()))
Message::new(&ixs, Some(&fee_payer.pubkey()))
}
};
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client)?;
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let (message, lamports) = resolve_spend_tx_and_check_account_balances(
rpc_client,
@@ -840,6 +906,7 @@ pub fn process_create_stake_account(
&from.pubkey(),
&fee_payer.pubkey(),
build_message,
config.commitment,
)?;
if !sign_only {
@@ -867,7 +934,8 @@ pub fn process_create_stake_account(
}
if let Some(nonce_account) = &nonce_account {
let nonce_account = rpc_client.get_account(nonce_account)?;
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
}
@@ -878,7 +946,11 @@ pub fn process_create_stake_account(
return_signers(&tx, &config)
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<SystemError>(result, &config)
}
}
@@ -911,7 +983,7 @@ pub fn process_stake_authorize(
}
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client)?;
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let nonce_authority = config.signers[nonce_authority];
let fee_payer = config.signers[fee_payer];
@@ -924,7 +996,7 @@ pub fn process_stake_authorize(
&nonce_authority.pubkey(),
)
} else {
Message::new_with_payer(&ixs, Some(&fee_payer.pubkey()))
Message::new(&ixs, Some(&fee_payer.pubkey()))
};
let mut tx = Transaction::new_unsigned(message);
@@ -934,16 +1006,22 @@ pub fn process_stake_authorize(
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
if let Some(nonce_account) = &nonce_account {
let nonce_account = rpc_client.get_account(nonce_account)?;
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&tx.message.account_keys[0],
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<StakeError>(result, &config)
}
}
@@ -961,7 +1039,7 @@ pub fn process_deactivate_stake_account(
fee_payer: SignerIndex,
) -> ProcessResult {
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client)?;
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let stake_authority = config.signers[stake_authority];
let ixs = vec![stake_instruction::deactivate_stake(
stake_account_pubkey,
@@ -978,7 +1056,7 @@ pub fn process_deactivate_stake_account(
&nonce_authority.pubkey(),
)
} else {
Message::new_with_payer(&ixs, Some(&fee_payer.pubkey()))
Message::new(&ixs, Some(&fee_payer.pubkey()))
};
let mut tx = Transaction::new_unsigned(message);
@@ -988,16 +1066,22 @@ pub fn process_deactivate_stake_account(
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
if let Some(nonce_account) = &nonce_account {
let nonce_account = rpc_client.get_account(nonce_account)?;
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&tx.message.account_keys[0],
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<StakeError>(result, &config)
}
}
@@ -1018,7 +1102,7 @@ pub fn process_withdraw_stake(
fee_payer: SignerIndex,
) -> ProcessResult {
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client)?;
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let withdraw_authority = config.signers[withdraw_authority];
let custodian = custodian.map(|index| config.signers[index]);
@@ -1041,7 +1125,7 @@ pub fn process_withdraw_stake(
&nonce_authority.pubkey(),
)
} else {
Message::new_with_payer(&ixs, Some(&fee_payer.pubkey()))
Message::new(&ixs, Some(&fee_payer.pubkey()))
};
let mut tx = Transaction::new_unsigned(message);
@@ -1051,16 +1135,22 @@ pub fn process_withdraw_stake(
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
if let Some(nonce_account) = &nonce_account {
let nonce_account = rpc_client.get_account(nonce_account)?;
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&tx.message.account_keys[0],
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<SystemError>(result, &config)
}
}
@@ -1145,7 +1235,7 @@ pub fn process_split_stake(
}
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client)?;
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let ixs = if let Some(seed) = split_stake_account_seed {
stake_instruction::split_with_seed(
@@ -1175,7 +1265,7 @@ pub fn process_split_stake(
&nonce_authority.pubkey(),
)
} else {
Message::new_with_payer(&ixs, Some(&fee_payer.pubkey()))
Message::new(&ixs, Some(&fee_payer.pubkey()))
};
let mut tx = Transaction::new_unsigned(message);
@@ -1185,16 +1275,121 @@ pub fn process_split_stake(
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
if let Some(nonce_account) = &nonce_account {
let nonce_account = rpc_client.get_account(nonce_account)?;
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&tx.message.account_keys[0],
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<StakeError>(result, &config)
}
}
#[allow(clippy::too_many_arguments)]
pub fn process_merge_stake(
rpc_client: &RpcClient,
config: &CliConfig,
stake_account_pubkey: &Pubkey,
source_stake_account_pubkey: &Pubkey,
stake_authority: SignerIndex,
sign_only: bool,
blockhash_query: &BlockhashQuery,
nonce_account: Option<Pubkey>,
nonce_authority: SignerIndex,
fee_payer: SignerIndex,
) -> ProcessResult {
let fee_payer = config.signers[fee_payer];
check_unique_pubkeys(
(&fee_payer.pubkey(), "fee-payer keypair".to_string()),
(&stake_account_pubkey, "stake_account".to_string()),
)?;
check_unique_pubkeys(
(&fee_payer.pubkey(), "fee-payer keypair".to_string()),
(
&source_stake_account_pubkey,
"source_stake_account".to_string(),
),
)?;
check_unique_pubkeys(
(&stake_account_pubkey, "stake_account".to_string()),
(
&source_stake_account_pubkey,
"source_stake_account".to_string(),
),
)?;
let stake_authority = config.signers[stake_authority];
if !sign_only {
for stake_account_address in &[stake_account_pubkey, source_stake_account_pubkey] {
if let Ok(stake_account) = rpc_client.get_account(stake_account_address) {
if stake_account.owner != solana_stake_program::id() {
return Err(CliError::BadParameter(format!(
"Account {} is not a stake account",
stake_account_address
))
.into());
}
}
}
}
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let ixs = stake_instruction::merge(
&stake_account_pubkey,
&source_stake_account_pubkey,
&stake_authority.pubkey(),
);
let nonce_authority = config.signers[nonce_authority];
let message = if let Some(nonce_account) = &nonce_account {
Message::new_with_nonce(
ixs,
Some(&fee_payer.pubkey()),
nonce_account,
&nonce_authority.pubkey(),
)
} else {
Message::new(&ixs, Some(&fee_payer.pubkey()))
};
let mut tx = Transaction::new_unsigned(message);
if sign_only {
tx.try_partial_sign(&config.signers, recent_blockhash)?;
return_signers(&tx, &config)
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
if let Some(nonce_account) = &nonce_account {
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
check_account_for_fee_with_commitment(
rpc_client,
&tx.message.account_keys[0],
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<StakeError>(result, &config)
}
}
@@ -1213,7 +1408,7 @@ pub fn process_stake_set_lockup(
fee_payer: SignerIndex,
) -> ProcessResult {
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client)?;
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let custodian = config.signers[custodian];
let ixs = vec![stake_instruction::set_lockup(
@@ -1232,7 +1427,7 @@ pub fn process_stake_set_lockup(
&nonce_authority.pubkey(),
)
} else {
Message::new_with_payer(&ixs, Some(&fee_payer.pubkey()))
Message::new(&ixs, Some(&fee_payer.pubkey()))
};
let mut tx = Transaction::new_unsigned(message);
@@ -1242,69 +1437,119 @@ pub fn process_stake_set_lockup(
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
if let Some(nonce_account) = &nonce_account {
let nonce_account = rpc_client.get_account(nonce_account)?;
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&tx.message.account_keys[0],
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<StakeError>(result, &config)
}
}
fn u64_some_if_not_zero(n: u64) -> Option<u64> {
if n > 0 {
Some(n)
} else {
None
}
}
pub fn build_stake_state(
stake_lamports: u64,
account_balance: u64,
stake_state: &StakeState,
use_lamports_unit: bool,
stake_history: &StakeHistory,
clock: &Clock,
) -> CliStakeState {
match stake_state {
StakeState::Stake(
Meta {
authorized, lockup, ..
rent_exempt_reserve,
authorized,
lockup,
},
stake,
) => CliStakeState {
stake_type: CliStakeType::Stake,
total_stake: stake_lamports,
delegated_stake: Some(stake.delegation.stake),
delegated_vote_account_address: if stake.delegation.voter_pubkey != Pubkey::default() {
Some(stake.delegation.voter_pubkey.to_string())
) => {
let current_epoch = clock.epoch;
let (active_stake, activating_stake, deactivating_stake) = stake
.delegation
.stake_activating_and_deactivating(current_epoch, Some(stake_history));
let lockup = if lockup.is_in_force(clock, None) {
Some(lockup.into())
} else {
None
},
activation_epoch: Some(if stake.delegation.activation_epoch < std::u64::MAX {
stake.delegation.activation_epoch
} else {
0
}),
deactivation_epoch: if stake.delegation.deactivation_epoch < std::u64::MAX {
Some(stake.delegation.deactivation_epoch)
} else {
None
},
authorized: Some(authorized.into()),
lockup: Some(lockup.into()),
use_lamports_unit,
},
};
CliStakeState {
stake_type: CliStakeType::Stake,
account_balance,
delegated_stake: Some(stake.delegation.stake),
delegated_vote_account_address: if stake.delegation.voter_pubkey
!= Pubkey::default()
{
Some(stake.delegation.voter_pubkey.to_string())
} else {
None
},
activation_epoch: Some(if stake.delegation.activation_epoch < std::u64::MAX {
stake.delegation.activation_epoch
} else {
0
}),
deactivation_epoch: if stake.delegation.deactivation_epoch < std::u64::MAX {
Some(stake.delegation.deactivation_epoch)
} else {
None
},
authorized: Some(authorized.into()),
lockup,
use_lamports_unit,
current_epoch,
rent_exempt_reserve: Some(*rent_exempt_reserve),
active_stake: u64_some_if_not_zero(active_stake),
activating_stake: u64_some_if_not_zero(activating_stake),
deactivating_stake: u64_some_if_not_zero(deactivating_stake),
}
}
StakeState::RewardsPool => CliStakeState {
stake_type: CliStakeType::RewardsPool,
account_balance,
..CliStakeState::default()
},
StakeState::Uninitialized => CliStakeState {
account_balance,
..CliStakeState::default()
},
StakeState::Uninitialized => CliStakeState::default(),
StakeState::Initialized(Meta {
authorized, lockup, ..
}) => CliStakeState {
stake_type: CliStakeType::Initialized,
total_stake: stake_lamports,
authorized: Some(authorized.into()),
lockup: Some(lockup.into()),
use_lamports_unit,
..CliStakeState::default()
},
rent_exempt_reserve,
authorized,
lockup,
}) => {
let lockup = if lockup.is_in_force(clock, None) {
Some(lockup.into())
} else {
None
};
CliStakeState {
stake_type: CliStakeType::Initialized,
account_balance,
authorized: Some(authorized.into()),
lockup,
use_lamports_unit,
rent_exempt_reserve: Some(*rent_exempt_reserve),
..CliStakeState::default()
}
}
}
}
@@ -1324,7 +1569,23 @@ pub fn process_show_stake_account(
}
match stake_account.state() {
Ok(stake_state) => {
let state = build_stake_state(stake_account.lamports, &stake_state, use_lamports_unit);
let stake_history_account = rpc_client.get_account(&stake_history::id())?;
let stake_history =
StakeHistory::from_account(&stake_history_account).ok_or_else(|| {
CliError::RpcRequestError("Failed to deserialize stake history".to_string())
})?;
let clock_account = rpc_client.get_account(&clock::id())?;
let clock: Clock = Sysvar::from_account(&clock_account).ok_or_else(|| {
CliError::RpcRequestError("Failed to deserialize clock sysvar".to_string())
})?;
let state = build_stake_state(
stake_account.lamports,
&stake_state,
use_lamports_unit,
&stake_history,
&clock,
);
Ok(config.output_format.formatted_string(&state))
}
Err(err) => Err(CliError::RpcRequestError(format!(
@@ -1379,14 +1640,23 @@ pub fn process_delegate_stake(
if !sign_only {
// Sanity check the vote account to ensure it is attached to a validator that has recently
// voted at the tip of the ledger
let vote_account_data = rpc_client
.get_account_data(vote_account_pubkey)
let vote_account = rpc_client
.get_account_with_commitment(vote_account_pubkey, config.commitment)
.map_err(|_| {
CliError::RpcRequestError(format!(
"Vote account not found: {}",
vote_account_pubkey
))
})?;
let vote_account_data = if let Some(account) = vote_account.value {
account.data
} else {
return Err(CliError::RpcRequestError(format!(
"Vote account not found: {}",
vote_account_pubkey
))
.into());
};
let vote_state = VoteState::deserialize(&vote_account_data).map_err(|_| {
CliError::RpcRequestError(
@@ -1399,13 +1669,15 @@ pub fn process_delegate_stake(
"Unable to delegate. Vote account has no root slot".to_string(),
)),
Some(root_slot) => {
let slot = rpc_client.get_slot()?;
if root_slot + solana_sdk::clock::DEFAULT_SLOTS_PER_TURN < slot {
Err(CliError::BadParameter(
format!(
"Unable to delegate. Vote account root slot ({}) is too old, the current slot is {}", root_slot, slot
)
))
let min_root_slot = rpc_client
.get_slot()?
.saturating_sub(DELINQUENT_VALIDATOR_SLOT_DISTANCE);
if root_slot < min_root_slot {
Err(CliError::DynamicProgramError(format!(
"Unable to delegate. Vote account appears delinquent \
because its current root slot, {}, is less than {}",
root_slot, min_root_slot
)))
} else {
Ok(())
}
@@ -1422,7 +1694,7 @@ pub fn process_delegate_stake(
}
let (recent_blockhash, fee_calculator) =
blockhash_query.get_blockhash_and_fee_calculator(rpc_client)?;
blockhash_query.get_blockhash_and_fee_calculator(rpc_client, config.commitment)?;
let ixs = vec![stake_instruction::delegate_stake(
stake_account_pubkey,
@@ -1440,7 +1712,7 @@ pub fn process_delegate_stake(
&nonce_authority.pubkey(),
)
} else {
Message::new_with_payer(&ixs, Some(&fee_payer.pubkey()))
Message::new(&ixs, Some(&fee_payer.pubkey()))
};
let mut tx = Transaction::new_unsigned(message);
@@ -1450,16 +1722,22 @@ pub fn process_delegate_stake(
} else {
tx.try_sign(&config.signers, recent_blockhash)?;
if let Some(nonce_account) = &nonce_account {
let nonce_account = rpc_client.get_account(nonce_account)?;
let nonce_account =
nonce::get_account_with_commitment(rpc_client, nonce_account, config.commitment)?;
check_nonce_account(&nonce_account, &nonce_authority.pubkey(), &recent_blockhash)?;
}
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&tx.message.account_keys[0],
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<StakeError>(result, &config)
}
}
@@ -2878,5 +3156,34 @@ mod tests {
],
}
);
// Test MergeStake SubCommand
let (keypair_file, mut tmp_file) = make_tmp_file();
let stake_account_keypair = Keypair::new();
write_keypair(&stake_account_keypair, tmp_file.as_file_mut()).unwrap();
let source_stake_account_pubkey = Pubkey::new_rand();
let test_merge_stake_account = test_commands.clone().get_matches_from(vec![
"test",
"merge-stake",
&keypair_file,
&source_stake_account_pubkey.to_string(),
]);
assert_eq!(
parse_command(&test_merge_stake_account, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::MergeStake {
stake_account_pubkey: stake_account_keypair.pubkey(),
source_stake_account_pubkey,
stake_authority: 0,
sign_only: false,
blockhash_query: BlockhashQuery::default(),
nonce_account: None,
nonce_authority: 0,
fee_payer: 0,
},
signers: vec![read_keypair_file(&default_keypair_file).unwrap().into(),],
}
);
}
}

View File

@@ -1,10 +1,13 @@
use solana_client::rpc_client::RpcClient;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::{clock::DEFAULT_MS_PER_SLOT, commitment_config::CommitmentConfig, pubkey::Pubkey};
use std::{thread::sleep, time::Duration};
pub fn check_balance(expected_balance: u64, client: &RpcClient, pubkey: &Pubkey) {
pub fn check_recent_balance(expected_balance: u64, client: &RpcClient, pubkey: &Pubkey) {
(0..5).for_each(|tries| {
let balance = client.get_balance(pubkey).unwrap();
let balance = client
.get_balance_with_commitment(pubkey, CommitmentConfig::recent())
.unwrap()
.value;
if balance == expected_balance {
return;
}
@@ -14,3 +17,13 @@ pub fn check_balance(expected_balance: u64, client: &RpcClient, pubkey: &Pubkey)
sleep(Duration::from_millis(500));
});
}
pub fn check_ready(rpc_client: &RpcClient) {
while rpc_client
.get_slot_with_commitment(CommitmentConfig::recent())
.unwrap()
< 5
{
sleep(Duration::from_millis(DEFAULT_MS_PER_SLOT));
}
}

View File

@@ -6,9 +6,10 @@ use crate::{
use bincode::deserialize;
use clap::{App, AppSettings, Arg, ArgMatches, SubCommand};
use reqwest::blocking::Client;
use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};
use solana_account_decoder::validator_info::{
self, ValidatorInfo, MAX_LONG_FIELD_LENGTH, MAX_SHORT_FIELD_LENGTH,
};
use solana_clap_utils::{
input_parsers::pubkey_of,
input_validators::{is_pubkey, is_url},
@@ -27,23 +28,6 @@ use solana_sdk::{
};
use std::{error, sync::Arc};
pub const MAX_SHORT_FIELD_LENGTH: usize = 70;
pub const MAX_LONG_FIELD_LENGTH: usize = 300;
pub const MAX_VALIDATOR_INFO: u64 = 576;
solana_sdk::declare_id!("Va1idator1nfo111111111111111111111111111111");
#[derive(Debug, Deserialize, PartialEq, Serialize, Default)]
pub struct ValidatorInfo {
info: String,
}
impl ConfigState for ValidatorInfo {
fn max_space() -> u64 {
MAX_VALIDATOR_INFO
}
}
// Return an error if a validator details are longer than the max length.
pub fn check_details_length(string: String) -> Result<(), String> {
if string.len() > MAX_LONG_FIELD_LENGTH {
@@ -289,7 +273,7 @@ pub fn process_set_validator_info(
.iter()
.filter(|(_, account)| {
let key_list: ConfigKeys = deserialize(&account.data).map_err(|_| false).unwrap();
key_list.keys.contains(&(id(), false))
key_list.keys.contains(&(validator_info::id(), false))
})
.find(|(pubkey, account)| {
let (validator_pubkey, _) = parse_validator_info(&pubkey, &account).unwrap();
@@ -328,7 +312,10 @@ pub fn process_set_validator_info(
};
let build_message = |lamports| {
let keys = vec![(id(), false), (config.signers[0].pubkey(), true)];
let keys = vec![
(validator_info::id(), false),
(config.signers[0].pubkey(), true),
];
if balance == 0 {
println!(
"Publishing info for Validator {:?}",
@@ -346,7 +333,7 @@ pub fn process_set_validator_info(
keys,
&validator_info,
)]);
Message::new(&instructions)
Message::new(&instructions, Some(&config.signers[0].pubkey()))
} else {
println!(
"Updating Validator {:?} info at: {:?}",
@@ -359,7 +346,7 @@ pub fn process_set_validator_info(
keys,
&validator_info,
)];
Message::new_with_payer(&instructions, Some(&config.signers[0].pubkey()))
Message::new(&instructions, Some(&config.signers[0].pubkey()))
}
};
@@ -372,6 +359,7 @@ pub fn process_set_validator_info(
&fee_calculator,
&config.signers[0].pubkey(),
build_message,
config.commitment,
)?;
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&signers, recent_blockhash)?;
@@ -400,7 +388,7 @@ pub fn process_get_validator_info(
let key_list: ConfigKeys = deserialize(&validator_info_account.data)
.map_err(|_| false)
.unwrap();
key_list.keys.contains(&(id(), false))
key_list.keys.contains(&(validator_info::id(), false))
})
.collect()
};
@@ -502,7 +490,7 @@ mod tests {
#[test]
fn test_parse_validator_info() {
let pubkey = Pubkey::new_rand();
let keys = vec![(id(), false), (pubkey, true)];
let keys = vec![(validator_info::id(), false), (pubkey, true)];
let config = ConfigKeys { keys };
let mut info = Map::new();

View File

@@ -1,5 +1,5 @@
use crate::{
checks::{check_account_for_fee, check_unique_pubkeys},
checks::{check_account_for_fee_with_commitment, check_unique_pubkeys},
cli::{
generate_unique_signers, log_instruction_custom_error, CliCommand, CliCommandInfo,
CliConfig, CliError, ProcessResult, SignerIndex,
@@ -8,16 +8,13 @@ use crate::{
spend_utils::{resolve_spend_tx_and_check_account_balance, SpendAmount},
};
use clap::{value_t_or_exit, App, Arg, ArgMatches, SubCommand};
use solana_clap_utils::{
commitment::{commitment_arg, COMMITMENT_ARG},
input_parsers::*,
input_validators::*,
};
use solana_clap_utils::{commitment::commitment_arg, input_parsers::*, input_validators::*};
use solana_client::rpc_client::RpcClient;
use solana_remote_wallet::remote_wallet::RemoteWalletManager;
use solana_sdk::{
account::Account, commitment_config::CommitmentConfig, message::Message, pubkey::Pubkey,
system_instruction::SystemError, transaction::Transaction,
account::Account, commitment_config::CommitmentConfig, message::Message,
native_token::lamports_to_sol, pubkey::Pubkey, system_instruction::SystemError,
transaction::Transaction,
};
use solana_vote_program::{
vote_instruction::{self, withdraw, VoteError},
@@ -161,6 +158,35 @@ impl VoteSubCommands for App<'_, '_> {
.help("Authorized withdrawer keypair"),
)
)
.subcommand(
SubCommand::with_name("vote-update-commission")
.about("Update the vote account's commission")
.arg(
pubkey!(Arg::with_name("vote_account_pubkey")
.index(1)
.value_name("VOTE_ACCOUNT_ADDRESS")
.required(true),
"Vote account to update. "),
)
.arg(
Arg::with_name("commission")
.index(2)
.value_name("PERCENTAGE")
.takes_value(true)
.required(true)
.validator(is_valid_percentage)
.help("The new commission")
)
.arg(
Arg::with_name("authorized_withdrawer")
.index(3)
.value_name("AUTHORIZED_KEYPAIR")
.takes_value(true)
.required(true)
.validator(is_valid_signer)
.help("Authorized withdrawer keypair"),
)
)
.subcommand(
SubCommand::with_name("vote-account")
.about("Show the contents of a vote account")
@@ -203,8 +229,8 @@ impl VoteSubCommands for App<'_, '_> {
.value_name("AMOUNT")
.takes_value(true)
.required(true)
.validator(is_amount)
.help("The amount to withdraw, in SOL"),
.validator(is_amount_or_all)
.help("The amount to withdraw, in SOL; accepts keyword ALL"),
)
.arg(
Arg::with_name("authorized_withdrawer")
@@ -223,7 +249,7 @@ pub fn parse_create_vote_account(
default_signer_path: &str,
wallet_manager: &mut Option<Arc<RemoteWalletManager>>,
) -> Result<CliCommandInfo, CliError> {
let (vote_account, _) = signer_of(matches, "vote_account", wallet_manager)?;
let (vote_account, vote_account_pubkey) = signer_of(matches, "vote_account", wallet_manager)?;
let seed = matches.value_of("seed").map(|s| s.to_string());
let (identity_account, identity_pubkey) =
signer_of(matches, "identity_account", wallet_manager)?;
@@ -241,6 +267,7 @@ pub fn parse_create_vote_account(
Ok(CliCommandInfo {
command: CliCommand::CreateVoteAccount {
vote_account: signer_info.index_of(vote_account_pubkey).unwrap(),
seed,
identity_account: signer_info.index_of(identity_pubkey).unwrap(),
authorized_voter,
@@ -290,7 +317,8 @@ pub fn parse_vote_update_validator(
pubkey_of_signer(matches, "vote_account_pubkey", wallet_manager)?.unwrap();
let (new_identity_account, new_identity_pubkey) =
signer_of(matches, "new_identity_account", wallet_manager)?;
let (authorized_withdrawer, _) = signer_of(matches, "authorized_withdrawer", wallet_manager)?;
let (authorized_withdrawer, authorized_withdrawer_pubkey) =
signer_of(matches, "authorized_withdrawer", wallet_manager)?;
let payer_provided = None;
let signer_info = generate_unique_signers(
@@ -304,6 +332,36 @@ pub fn parse_vote_update_validator(
command: CliCommand::VoteUpdateValidator {
vote_account_pubkey,
new_identity_account: signer_info.index_of(new_identity_pubkey).unwrap(),
withdraw_authority: signer_info.index_of(authorized_withdrawer_pubkey).unwrap(),
},
signers: signer_info.signers,
})
}
pub fn parse_vote_update_commission(
matches: &ArgMatches<'_>,
default_signer_path: &str,
wallet_manager: &mut Option<Arc<RemoteWalletManager>>,
) -> Result<CliCommandInfo, CliError> {
let vote_account_pubkey =
pubkey_of_signer(matches, "vote_account_pubkey", wallet_manager)?.unwrap();
let (authorized_withdrawer, authorized_withdrawer_pubkey) =
signer_of(matches, "authorized_withdrawer", wallet_manager)?;
let commission = value_t_or_exit!(matches, "commission", u8);
let payer_provided = None;
let signer_info = generate_unique_signers(
vec![payer_provided, authorized_withdrawer],
matches,
default_signer_path,
wallet_manager,
)?;
Ok(CliCommandInfo {
command: CliCommand::VoteUpdateCommission {
vote_account_pubkey,
commission,
withdraw_authority: signer_info.index_of(authorized_withdrawer_pubkey).unwrap(),
},
signers: signer_info.signers,
})
@@ -316,12 +374,10 @@ pub fn parse_vote_get_account_command(
let vote_account_pubkey =
pubkey_of_signer(matches, "vote_account_pubkey", wallet_manager)?.unwrap();
let use_lamports_unit = matches.is_present("lamports");
let commitment_config = commitment_of(matches, COMMITMENT_ARG.long).unwrap();
Ok(CliCommandInfo {
command: CliCommand::ShowVoteAccount {
pubkey: vote_account_pubkey,
use_lamports_unit,
commitment_config,
},
signers: vec![],
})
@@ -336,7 +392,8 @@ pub fn parse_withdraw_from_vote_account(
pubkey_of_signer(matches, "vote_account_pubkey", wallet_manager)?.unwrap();
let destination_account_pubkey =
pubkey_of_signer(matches, "destination_account_pubkey", wallet_manager)?.unwrap();
let lamports = lamports_of_sol(matches, "amount").unwrap();
let withdraw_amount = SpendAmount::new_from_matches(matches, "amount");
let (withdraw_authority, withdraw_authority_pubkey) =
signer_of(matches, "authorized_withdrawer", wallet_manager)?;
@@ -353,7 +410,7 @@ pub fn parse_withdraw_from_vote_account(
vote_account_pubkey,
destination_account_pubkey,
withdraw_authority: signer_info.index_of(withdraw_authority_pubkey).unwrap(),
lamports,
withdraw_amount,
},
signers: signer_info.signers,
})
@@ -362,13 +419,14 @@ pub fn parse_withdraw_from_vote_account(
pub fn process_create_vote_account(
rpc_client: &RpcClient,
config: &CliConfig,
vote_account: SignerIndex,
seed: &Option<String>,
identity_account: SignerIndex,
authorized_voter: &Option<Pubkey>,
authorized_withdrawer: &Option<Pubkey>,
commission: u8,
) -> ProcessResult {
let vote_account = config.signers[1];
let vote_account = config.signers[vote_account];
let vote_account_pubkey = vote_account.pubkey();
let vote_account_address = if let Some(seed) = seed {
Pubkey::create_with_seed(&vote_account_pubkey, &seed, &solana_vote_program::id())?
@@ -417,22 +475,28 @@ pub fn process_create_vote_account(
lamports,
)
};
Message::new(&ixs)
Message::new(&ixs, Some(&config.signers[0].pubkey()))
};
if let Ok(vote_account) = rpc_client.get_account(&vote_account_address) {
let err_msg = if vote_account.owner == solana_vote_program::id() {
format!("Vote account {} already exists", vote_account_address)
} else {
format!(
"Account {} already exists and is not a vote account",
vote_account_address
)
};
return Err(CliError::BadParameter(err_msg).into());
if let Ok(response) =
rpc_client.get_account_with_commitment(&vote_account_address, config.commitment)
{
if let Some(vote_account) = response.value {
let err_msg = if vote_account.owner == solana_vote_program::id() {
format!("Vote account {} already exists", vote_account_address)
} else {
format!(
"Account {} already exists and is not a vote account",
vote_account_address
)
};
return Err(CliError::BadParameter(err_msg).into());
}
}
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let (message, _) = resolve_spend_tx_and_check_account_balance(
rpc_client,
@@ -441,10 +505,15 @@ pub fn process_create_vote_account(
&fee_calculator,
&config.signers[0].pubkey(),
build_message,
config.commitment,
)?;
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<SystemError>(result, &config)
}
@@ -467,7 +536,9 @@ pub fn process_vote_authorize(
(&authorized.pubkey(), "authorized_account".to_string()),
(new_authorized_pubkey, "new_authorized_pubkey".to_string()),
)?;
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let ixs = vec![vote_instruction::authorize(
vote_account_pubkey, // vote account to update
&authorized.pubkey(), // current authorized
@@ -475,16 +546,21 @@ pub fn process_vote_authorize(
vote_authorize, // vote or withdraw
)];
let message = Message::new_with_payer(&ixs, Some(&config.signers[0].pubkey()));
let message = Message::new(&ixs, Some(&config.signers[0].pubkey()));
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&config.signers[0].pubkey(),
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<VoteError>(result, &config)
}
@@ -493,31 +569,74 @@ pub fn process_vote_update_validator(
config: &CliConfig,
vote_account_pubkey: &Pubkey,
new_identity_account: SignerIndex,
withdraw_authority: SignerIndex,
) -> ProcessResult {
let authorized_withdrawer = config.signers[1];
let authorized_withdrawer = config.signers[withdraw_authority];
let new_identity_account = config.signers[new_identity_account];
let new_identity_pubkey = new_identity_account.pubkey();
check_unique_pubkeys(
(vote_account_pubkey, "vote_account_pubkey".to_string()),
(&new_identity_pubkey, "new_identity_account".to_string()),
)?;
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let ixs = vec![vote_instruction::update_validator_identity(
vote_account_pubkey,
&authorized_withdrawer.pubkey(),
&new_identity_pubkey,
)];
let message = Message::new_with_payer(&ixs, Some(&config.signers[0].pubkey()));
let message = Message::new(&ixs, Some(&config.signers[0].pubkey()));
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&config.signers[0].pubkey(),
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&tx);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<VoteError>(result, &config)
}
pub fn process_vote_update_commission(
rpc_client: &RpcClient,
config: &CliConfig,
vote_account_pubkey: &Pubkey,
commission: u8,
withdraw_authority: SignerIndex,
) -> ProcessResult {
let authorized_withdrawer = config.signers[withdraw_authority];
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let ixs = vec![vote_instruction::update_commission(
vote_account_pubkey,
&authorized_withdrawer.pubkey(),
commission,
)];
let message = Message::new(&ixs, Some(&config.signers[0].pubkey()));
let mut tx = Transaction::new_unsigned(message);
tx.try_sign(&config.signers, recent_blockhash)?;
check_account_for_fee_with_commitment(
rpc_client,
&config.signers[0].pubkey(),
&fee_calculator,
&tx.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&tx,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<VoteError>(result, &config)
}
@@ -554,10 +673,9 @@ pub fn process_show_vote_account(
config: &CliConfig,
vote_account_pubkey: &Pubkey,
use_lamports_unit: bool,
commitment_config: CommitmentConfig,
) -> ProcessResult {
let (vote_account, vote_state) =
get_vote_account(rpc_client, vote_account_pubkey, commitment_config)?;
get_vote_account(rpc_client, vote_account_pubkey, config.commitment)?;
let epoch_schedule = rpc_client.get_epoch_schedule()?;
@@ -600,12 +718,32 @@ pub fn process_withdraw_from_vote_account(
config: &CliConfig,
vote_account_pubkey: &Pubkey,
withdraw_authority: SignerIndex,
lamports: u64,
withdraw_amount: SpendAmount,
destination_account_pubkey: &Pubkey,
) -> ProcessResult {
let (recent_blockhash, fee_calculator) = rpc_client.get_recent_blockhash()?;
let (recent_blockhash, fee_calculator, _) = rpc_client
.get_recent_blockhash_with_commitment(config.commitment)?
.value;
let withdraw_authority = config.signers[withdraw_authority];
let current_balance = rpc_client
.get_balance_with_commitment(&vote_account_pubkey, config.commitment)?
.value;
let minimum_balance = rpc_client.get_minimum_balance_for_rent_exemption(VoteState::size_of())?;
let lamports = match withdraw_amount {
SpendAmount::All => current_balance.saturating_sub(minimum_balance),
SpendAmount::Some(withdraw_amount) => {
if current_balance.saturating_sub(withdraw_amount) < minimum_balance {
return Err(CliError::BadParameter(format!(
"Withdraw amount too large. The vote account balance must be at least {} SOL to remain rent exempt", lamports_to_sol(minimum_balance)
))
.into());
}
withdraw_amount
}
};
let ix = withdraw(
vote_account_pubkey,
&withdraw_authority.pubkey(),
@@ -613,16 +751,21 @@ pub fn process_withdraw_from_vote_account(
destination_account_pubkey,
);
let message = Message::new_with_payer(&[ix], Some(&config.signers[0].pubkey()));
let message = Message::new(&[ix], Some(&config.signers[0].pubkey()));
let mut transaction = Transaction::new_unsigned(message);
transaction.try_sign(&config.signers, recent_blockhash)?;
check_account_for_fee(
check_account_for_fee_with_commitment(
rpc_client,
&config.signers[0].pubkey(),
&fee_calculator,
&transaction.message,
config.commitment,
)?;
let result = rpc_client.send_and_confirm_transaction_with_spinner(&transaction);
let result = rpc_client.send_and_confirm_transaction_with_spinner_and_config(
&transaction,
config.commitment,
config.send_transaction_config,
);
log_instruction_custom_error::<VoteError>(result, &config)
}
@@ -716,6 +859,7 @@ mod tests {
parse_command(&test_create_vote_account, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::CreateVoteAccount {
vote_account: 1,
seed: None,
identity_account: 2,
authorized_voter: None,
@@ -744,6 +888,7 @@ mod tests {
parse_command(&test_create_vote_account2, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::CreateVoteAccount {
vote_account: 1,
seed: None,
identity_account: 2,
authorized_voter: None,
@@ -776,6 +921,7 @@ mod tests {
parse_command(&test_create_vote_account3, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::CreateVoteAccount {
vote_account: 1,
seed: None,
identity_account: 2,
authorized_voter: Some(authed),
@@ -806,6 +952,7 @@ mod tests {
parse_command(&test_create_vote_account4, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::CreateVoteAccount {
vote_account: 1,
seed: None,
identity_account: 2,
authorized_voter: None,
@@ -833,6 +980,7 @@ mod tests {
command: CliCommand::VoteUpdateValidator {
vote_account_pubkey: pubkey,
new_identity_account: 2,
withdraw_authority: 1,
},
signers: vec![
read_keypair_file(&default_keypair_file).unwrap().into(),
@@ -842,6 +990,28 @@ mod tests {
}
);
let test_update_commission = test_commands.clone().get_matches_from(vec![
"test",
"vote-update-commission",
&pubkey_string,
"42",
&keypair_file,
]);
assert_eq!(
parse_command(&test_update_commission, &default_keypair_file, &mut None).unwrap(),
CliCommandInfo {
command: CliCommand::VoteUpdateCommission {
vote_account_pubkey: pubkey,
commission: 42,
withdraw_authority: 1,
},
signers: vec![
read_keypair_file(&default_keypair_file).unwrap().into(),
Box::new(read_keypair_file(&keypair_file).unwrap()),
],
}
);
// Test WithdrawFromVoteAccount subcommand
let test_withdraw_from_vote_account = test_commands.clone().get_matches_from(vec![
"test",
@@ -862,7 +1032,33 @@ mod tests {
vote_account_pubkey: read_keypair_file(&keypair_file).unwrap().pubkey(),
destination_account_pubkey: pubkey,
withdraw_authority: 0,
lamports: 42_000_000_000
withdraw_amount: SpendAmount::Some(42_000_000_000),
},
signers: vec![read_keypair_file(&default_keypair_file).unwrap().into()],
}
);
// Test WithdrawFromVoteAccount subcommand
let test_withdraw_from_vote_account = test_commands.clone().get_matches_from(vec![
"test",
"withdraw-from-vote-account",
&keypair_file,
&pubkey_string,
"ALL",
]);
assert_eq!(
parse_command(
&test_withdraw_from_vote_account,
&default_keypair_file,
&mut None
)
.unwrap(),
CliCommandInfo {
command: CliCommand::WithdrawFromVoteAccount {
vote_account_pubkey: read_keypair_file(&keypair_file).unwrap().pubkey(),
destination_account_pubkey: pubkey,
withdraw_authority: 0,
withdraw_amount: SpendAmount::All,
},
signers: vec![read_keypair_file(&default_keypair_file).unwrap().into()],
}
@@ -893,7 +1089,7 @@ mod tests {
vote_account_pubkey: read_keypair_file(&keypair_file).unwrap().pubkey(),
destination_account_pubkey: pubkey,
withdraw_authority: 1,
lamports: 42_000_000_000
withdraw_amount: SpendAmount::Some(42_000_000_000),
},
signers: vec![
read_keypair_file(&default_keypair_file).unwrap().into(),

View File

@@ -3,7 +3,12 @@ use solana_cli::cli::{process_command, CliCommand, CliConfig};
use solana_client::rpc_client::RpcClient;
use solana_core::validator::TestValidator;
use solana_faucet::faucet::run_local_faucet;
use solana_sdk::{bpf_loader, pubkey::Pubkey, signature::Keypair};
use solana_sdk::{
bpf_loader,
commitment_config::CommitmentConfig,
pubkey::Pubkey,
signature::{Keypair, Signer},
};
use std::{
fs::{remove_dir_all, File},
io::Read,
@@ -43,19 +48,22 @@ fn test_cli_deploy_program() {
.get_minimum_balance_for_rent_exemption(program_data.len())
.unwrap();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
let keypair = Keypair::new();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.command = CliCommand::Airdrop {
faucet_host: None,
faucet_port: faucet_addr.port(),
pubkey: None,
lamports: minimum_balance_for_rent_exemption + 1, // min balance for rent exemption + leftover for tx processing
lamports: 3 * minimum_balance_for_rent_exemption, // min balance for rent exemption for two programs + leftover for tx processing
};
config.signers = vec![&keypair];
process_command(&config).unwrap();
config.command = CliCommand::Deploy(pathbuf.to_str().unwrap().to_string());
config.command = CliCommand::Deploy {
program_location: pathbuf.to_str().unwrap().to_string(),
address: None,
};
let response = process_command(&config);
let json: Value = serde_json::from_str(&response.unwrap()).unwrap();
@@ -67,16 +75,41 @@ fn test_cli_deploy_program() {
.as_str()
.unwrap();
let program_id = Pubkey::from_str(&program_id_str).unwrap();
let account = rpc_client.get_account(&program_id).unwrap();
assert_eq!(account.lamports, minimum_balance_for_rent_exemption);
assert_eq!(account.owner, bpf_loader::id());
assert_eq!(account.executable, true);
let account0 = rpc_client
.get_account_with_commitment(&program_id, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
assert_eq!(account0.lamports, minimum_balance_for_rent_exemption);
assert_eq!(account0.owner, bpf_loader::id());
assert_eq!(account0.executable, true);
let mut file = File::open(pathbuf.to_str().unwrap().to_string()).unwrap();
let mut elf = Vec::new();
file.read_to_end(&mut elf).unwrap();
assert_eq!(account.data, elf);
assert_eq!(account0.data, elf);
// Test custom address
let custom_address_keypair = Keypair::new();
config.signers = vec![&keypair, &custom_address_keypair];
config.command = CliCommand::Deploy {
program_location: pathbuf.to_str().unwrap().to_string(),
address: Some(1),
};
process_command(&config).unwrap();
let account1 = rpc_client
.get_account_with_commitment(&custom_address_keypair.pubkey(), CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
assert_eq!(account1.lamports, minimum_balance_for_rent_exemption);
assert_eq!(account1.owner, bpf_loader::id());
assert_eq!(account1.executable, true);
assert_eq!(account0.data, account1.data);
// Attempt to redeploy to the same address
process_command(&config).unwrap_err();
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();

View File

@@ -1,4 +1,3 @@
use solana_cli::test_utils::check_balance;
use solana_cli::{
cli::{process_command, request_and_confirm_airdrop, CliCommand, CliConfig},
cli_output::OutputFormat,
@@ -8,12 +7,14 @@ use solana_cli::{
parse_sign_only_reply_string,
},
spend_utils::SpendAmount,
test_utils::{check_ready, check_recent_balance},
};
use solana_client::rpc_client::RpcClient;
use solana_core::contact_info::ContactInfo;
use solana_core::validator::{TestValidator, TestValidatorOptions};
use solana_faucet::faucet::run_local_faucet;
use solana_sdk::{
commitment_config::CommitmentConfig,
hash::Hash,
pubkey::Pubkey,
signature::{keypair_from_seed, Keypair, Signer},
@@ -83,7 +84,7 @@ fn full_battery_tests(
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
let mut config_payer = CliConfig::default();
let mut config_payer = CliConfig::recent_for_tests();
config_payer.json_rpc_url = json_rpc_url.clone();
let payer = Keypair::new();
config_payer.signers = vec![&payer];
@@ -96,9 +97,9 @@ fn full_battery_tests(
&config_payer,
)
.unwrap();
check_balance(2000, &rpc_client, &config_payer.signers[0].pubkey());
check_recent_balance(2000, &rpc_client, &config_payer.signers[0].pubkey());
let mut config_nonce = CliConfig::default();
let mut config_nonce = CliConfig::recent_for_tests();
config_nonce.json_rpc_url = json_rpc_url;
let nonce_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
config_nonce.signers = vec![&nonce_keypair];
@@ -131,8 +132,8 @@ fn full_battery_tests(
};
process_command(&config_payer).unwrap();
check_balance(1000, &rpc_client, &config_payer.signers[0].pubkey());
check_balance(1000, &rpc_client, &nonce_account);
check_recent_balance(1000, &rpc_client, &config_payer.signers[0].pubkey());
check_recent_balance(1000, &rpc_client, &nonce_account);
// Get nonce
config_payer.signers.pop();
@@ -181,9 +182,9 @@ fn full_battery_tests(
lamports: 100,
};
process_command(&config_payer).unwrap();
check_balance(1000, &rpc_client, &config_payer.signers[0].pubkey());
check_balance(900, &rpc_client, &nonce_account);
check_balance(100, &rpc_client, &payee_pubkey);
check_recent_balance(1000, &rpc_client, &config_payer.signers[0].pubkey());
check_recent_balance(900, &rpc_client, &nonce_account);
check_recent_balance(100, &rpc_client, &payee_pubkey);
// Show nonce account
config_payer.command = CliCommand::ShowNonceAccount {
@@ -224,9 +225,9 @@ fn full_battery_tests(
lamports: 100,
};
process_command(&config_payer).unwrap();
check_balance(1000, &rpc_client, &config_payer.signers[0].pubkey());
check_balance(800, &rpc_client, &nonce_account);
check_balance(200, &rpc_client, &payee_pubkey);
check_recent_balance(1000, &rpc_client, &config_payer.signers[0].pubkey());
check_recent_balance(800, &rpc_client, &nonce_account);
check_recent_balance(200, &rpc_client, &payee_pubkey);
}
#[test]
@@ -250,7 +251,7 @@ fn test_create_account_with_seed() {
let offline_nonce_authority_signer = keypair_from_seed(&[1u8; 32]).unwrap();
let online_nonce_creator_signer = keypair_from_seed(&[2u8; 32]).unwrap();
let to_address = Pubkey::new(&[3u8; 32]);
let config = CliConfig::default();
let config = CliConfig::recent_for_tests();
// Setup accounts
let rpc_client = RpcClient::new_socket(leader_data.rpc);
@@ -270,9 +271,11 @@ fn test_create_account_with_seed() {
&config,
)
.unwrap();
check_balance(42, &rpc_client, &offline_nonce_authority_signer.pubkey());
check_balance(4242, &rpc_client, &online_nonce_creator_signer.pubkey());
check_balance(0, &rpc_client, &to_address);
check_recent_balance(42, &rpc_client, &offline_nonce_authority_signer.pubkey());
check_recent_balance(4242, &rpc_client, &online_nonce_creator_signer.pubkey());
check_recent_balance(0, &rpc_client, &to_address);
check_ready(&rpc_client);
// Create nonce account
let creator_pubkey = online_nonce_creator_signer.pubkey();
@@ -280,9 +283,9 @@ fn test_create_account_with_seed() {
let seed = authority_pubkey.to_string()[0..32].to_string();
let nonce_address =
Pubkey::create_with_seed(&creator_pubkey, &seed, &system_program::id()).unwrap();
check_balance(0, &rpc_client, &nonce_address);
check_recent_balance(0, &rpc_client, &nonce_address);
let mut creator_config = CliConfig::default();
let mut creator_config = CliConfig::recent_for_tests();
creator_config.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
creator_config.signers = vec![&online_nonce_creator_signer];
@@ -293,19 +296,20 @@ fn test_create_account_with_seed() {
amount: SpendAmount::Some(241),
};
process_command(&creator_config).unwrap();
check_balance(241, &rpc_client, &nonce_address);
check_balance(42, &rpc_client, &offline_nonce_authority_signer.pubkey());
check_balance(4000, &rpc_client, &online_nonce_creator_signer.pubkey());
check_balance(0, &rpc_client, &to_address);
check_recent_balance(241, &rpc_client, &nonce_address);
check_recent_balance(42, &rpc_client, &offline_nonce_authority_signer.pubkey());
check_recent_balance(4000, &rpc_client, &online_nonce_creator_signer.pubkey());
check_recent_balance(0, &rpc_client, &to_address);
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_address)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash =
nonce::get_account_with_commitment(&rpc_client, &nonce_address, CommitmentConfig::recent())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Test by creating transfer TX with nonce, fully offline
let mut authority_config = CliConfig::default();
let mut authority_config = CliConfig::recent_for_tests();
authority_config.json_rpc_url = String::default();
authority_config.signers = vec![&offline_nonce_authority_signer];
// Verify we cannot contact the cluster
@@ -329,7 +333,7 @@ fn test_create_account_with_seed() {
assert_eq!(sign_only.blockhash, nonce_hash);
// And submit it
let mut submit_config = CliConfig::default();
let mut submit_config = CliConfig::recent_for_tests();
submit_config.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
submit_config.signers = vec![&authority_presigner];
@@ -348,10 +352,10 @@ fn test_create_account_with_seed() {
fee_payer: 0,
};
process_command(&submit_config).unwrap();
check_balance(241, &rpc_client, &nonce_address);
check_balance(31, &rpc_client, &offline_nonce_authority_signer.pubkey());
check_balance(4000, &rpc_client, &online_nonce_creator_signer.pubkey());
check_balance(10, &rpc_client, &to_address);
check_recent_balance(241, &rpc_client, &nonce_address);
check_recent_balance(31, &rpc_client, &offline_nonce_authority_signer.pubkey());
check_recent_balance(4000, &rpc_client, &online_nonce_creator_signer.pubkey());
check_recent_balance(10, &rpc_client, &to_address);
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();

View File

@@ -1,6 +1,5 @@
use chrono::prelude::*;
use serde_json::Value;
use solana_cli::test_utils::check_balance;
use solana_cli::{
cli::{process_command, request_and_confirm_airdrop, CliCommand, CliConfig, PayCommand},
cli_output::OutputFormat,
@@ -10,11 +9,13 @@ use solana_cli::{
parse_sign_only_reply_string,
},
spend_utils::SpendAmount,
test_utils::check_recent_balance,
};
use solana_client::rpc_client::RpcClient;
use solana_core::validator::TestValidator;
use solana_faucet::faucet::run_local_faucet;
use solana_sdk::{
commitment_config::CommitmentConfig,
nonce::State as NonceState,
pubkey::Pubkey,
signature::{Keypair, Signer},
@@ -40,12 +41,12 @@ fn test_cli_timestamp_tx() {
let default_signer0 = Keypair::new();
let default_signer1 = Keypair::new();
let mut config_payer = CliConfig::default();
let mut config_payer = CliConfig::recent_for_tests();
config_payer.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config_payer.signers = vec![&default_signer0];
let mut config_witness = CliConfig::default();
let mut config_witness = CliConfig::recent_for_tests();
config_witness.json_rpc_url = config_payer.json_rpc_url.clone();
config_witness.signers = vec![&default_signer1];
@@ -62,7 +63,7 @@ fn test_cli_timestamp_tx() {
&config_witness,
)
.unwrap();
check_balance(50, &rpc_client, &config_payer.signers[0].pubkey());
check_recent_balance(50, &rpc_client, &config_payer.signers[0].pubkey());
request_and_confirm_airdrop(
&rpc_client,
@@ -92,17 +93,17 @@ fn test_cli_timestamp_tx() {
.expect("base58-encoded public key");
let process_id = Pubkey::new(&process_id_vec);
check_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_balance(10, &rpc_client, &process_id); // contract balance
check_balance(0, &rpc_client, &bob_pubkey); // recipient balance
check_recent_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_recent_balance(10, &rpc_client, &process_id); // contract balance
check_recent_balance(0, &rpc_client, &bob_pubkey); // recipient balance
// Sign transaction by config_witness
config_witness.command = CliCommand::TimeElapsed(bob_pubkey, process_id, dt);
process_command(&config_witness).unwrap();
check_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_balance(0, &rpc_client, &process_id); // contract balance
check_balance(10, &rpc_client, &bob_pubkey); // recipient balance
check_recent_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_recent_balance(0, &rpc_client, &process_id); // contract balance
check_recent_balance(10, &rpc_client, &bob_pubkey); // recipient balance
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();
@@ -127,12 +128,12 @@ fn test_cli_witness_tx() {
let default_signer0 = Keypair::new();
let default_signer1 = Keypair::new();
let mut config_payer = CliConfig::default();
let mut config_payer = CliConfig::recent_for_tests();
config_payer.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config_payer.signers = vec![&default_signer0];
let mut config_witness = CliConfig::default();
let mut config_witness = CliConfig::recent_for_tests();
config_witness.json_rpc_url = config_payer.json_rpc_url.clone();
config_witness.signers = vec![&default_signer1];
@@ -174,17 +175,17 @@ fn test_cli_witness_tx() {
.expect("base58-encoded public key");
let process_id = Pubkey::new(&process_id_vec);
check_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_balance(10, &rpc_client, &process_id); // contract balance
check_balance(0, &rpc_client, &bob_pubkey); // recipient balance
check_recent_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_recent_balance(10, &rpc_client, &process_id); // contract balance
check_recent_balance(0, &rpc_client, &bob_pubkey); // recipient balance
// Sign transaction by config_witness
config_witness.command = CliCommand::Witness(bob_pubkey, process_id);
process_command(&config_witness).unwrap();
check_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_balance(0, &rpc_client, &process_id); // contract balance
check_balance(10, &rpc_client, &bob_pubkey); // recipient balance
check_recent_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_recent_balance(0, &rpc_client, &process_id); // contract balance
check_recent_balance(10, &rpc_client, &bob_pubkey); // recipient balance
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();
@@ -209,12 +210,12 @@ fn test_cli_cancel_tx() {
let default_signer0 = Keypair::new();
let default_signer1 = Keypair::new();
let mut config_payer = CliConfig::default();
let mut config_payer = CliConfig::recent_for_tests();
config_payer.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config_payer.signers = vec![&default_signer0];
let mut config_witness = CliConfig::default();
let mut config_witness = CliConfig::recent_for_tests();
config_witness.json_rpc_url = config_payer.json_rpc_url.clone();
config_witness.signers = vec![&default_signer1];
@@ -249,17 +250,17 @@ fn test_cli_cancel_tx() {
.expect("base58-encoded public key");
let process_id = Pubkey::new(&process_id_vec);
check_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_balance(10, &rpc_client, &process_id); // contract balance
check_balance(0, &rpc_client, &bob_pubkey); // recipient balance
check_recent_balance(40, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_recent_balance(10, &rpc_client, &process_id); // contract balance
check_recent_balance(0, &rpc_client, &bob_pubkey); // recipient balance
// Sign transaction by config_witness
config_payer.command = CliCommand::Cancel(process_id);
process_command(&config_payer).unwrap();
check_balance(50, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_balance(0, &rpc_client, &process_id); // contract balance
check_balance(0, &rpc_client, &bob_pubkey); // recipient balance
check_recent_balance(50, &rpc_client, &config_payer.signers[0].pubkey()); // config_payer balance
check_recent_balance(0, &rpc_client, &process_id); // contract balance
check_recent_balance(0, &rpc_client, &bob_pubkey); // recipient balance
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();
@@ -284,11 +285,11 @@ fn test_offline_pay_tx() {
let default_signer = Keypair::new();
let default_offline_signer = Keypair::new();
let mut config_offline = CliConfig::default();
let mut config_offline = CliConfig::recent_for_tests();
config_offline.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config_offline.signers = vec![&default_offline_signer];
let mut config_online = CliConfig::default();
let mut config_online = CliConfig::recent_for_tests();
config_online.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config_online.signers = vec![&default_signer];
@@ -314,8 +315,8 @@ fn test_offline_pay_tx() {
&config_offline,
)
.unwrap();
check_balance(50, &rpc_client, &config_offline.signers[0].pubkey());
check_balance(50, &rpc_client, &config_online.signers[0].pubkey());
check_recent_balance(50, &rpc_client, &config_offline.signers[0].pubkey());
check_recent_balance(50, &rpc_client, &config_online.signers[0].pubkey());
let (blockhash, _) = rpc_client.get_recent_blockhash().unwrap();
config_offline.command = CliCommand::Pay(PayCommand {
@@ -328,9 +329,9 @@ fn test_offline_pay_tx() {
config_offline.output_format = OutputFormat::JsonCompact;
let sig_response = process_command(&config_offline).unwrap();
check_balance(50, &rpc_client, &config_offline.signers[0].pubkey());
check_balance(50, &rpc_client, &config_online.signers[0].pubkey());
check_balance(0, &rpc_client, &bob_pubkey);
check_recent_balance(50, &rpc_client, &config_offline.signers[0].pubkey());
check_recent_balance(50, &rpc_client, &config_online.signers[0].pubkey());
check_recent_balance(0, &rpc_client, &bob_pubkey);
let sign_only = parse_sign_only_reply_string(&sig_response);
assert!(sign_only.has_all_signers());
@@ -347,9 +348,9 @@ fn test_offline_pay_tx() {
});
process_command(&config_online).unwrap();
check_balance(40, &rpc_client, &config_offline.signers[0].pubkey());
check_balance(50, &rpc_client, &online_pubkey);
check_balance(10, &rpc_client, &bob_pubkey);
check_recent_balance(40, &rpc_client, &config_offline.signers[0].pubkey());
check_recent_balance(50, &rpc_client, &online_pubkey);
check_recent_balance(10, &rpc_client, &bob_pubkey);
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();
@@ -373,7 +374,7 @@ fn test_nonced_pay_tx() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let default_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
@@ -389,7 +390,7 @@ fn test_nonced_pay_tx() {
&config,
)
.unwrap();
check_balance(
check_recent_balance(
50 + minimum_nonce_balance,
&rpc_client,
&config.signers[0].pubkey(),
@@ -406,14 +407,18 @@ fn test_nonced_pay_tx() {
config.signers.push(&nonce_account);
process_command(&config).unwrap();
check_balance(50, &rpc_client, &config.signers[0].pubkey());
check_balance(minimum_nonce_balance, &rpc_client, &nonce_account.pubkey());
check_recent_balance(50, &rpc_client, &config.signers[0].pubkey());
check_recent_balance(minimum_nonce_balance, &rpc_client, &nonce_account.pubkey());
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let bob_pubkey = Pubkey::new_rand();
config.signers = vec![&default_signer];
@@ -429,14 +434,18 @@ fn test_nonced_pay_tx() {
});
process_command(&config).expect("failed to process pay command");
check_balance(40, &rpc_client, &config.signers[0].pubkey());
check_balance(10, &rpc_client, &bob_pubkey);
check_recent_balance(40, &rpc_client, &config.signers[0].pubkey());
check_recent_balance(10, &rpc_client, &bob_pubkey);
// Verify that nonce has been used
let nonce_hash2 = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash2 = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
assert_ne!(nonce_hash, nonce_hash2);
server.close().unwrap();

View File

@@ -2,7 +2,7 @@ use solana_cli::cli::{process_command, CliCommand, CliConfig};
use solana_client::rpc_client::RpcClient;
use solana_core::validator::TestValidator;
use solana_faucet::faucet::run_local_faucet;
use solana_sdk::signature::Keypair;
use solana_sdk::{commitment_config::CommitmentConfig, signature::Keypair};
use std::{fs::remove_dir_all, sync::mpsc::channel};
#[test]
@@ -18,7 +18,7 @@ fn test_cli_request_airdrop() {
run_local_faucet(alice, sender, None);
let faucet_addr = receiver.recv().unwrap();
let mut bob_config = CliConfig::default();
let mut bob_config = CliConfig::recent_for_tests();
bob_config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
bob_config.command = CliCommand::Airdrop {
faucet_host: None,
@@ -35,8 +35,9 @@ fn test_cli_request_airdrop() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let balance = rpc_client
.get_balance(&bob_config.signers[0].pubkey())
.unwrap();
.get_balance_with_commitment(&bob_config.signers[0].pubkey(), CommitmentConfig::recent())
.unwrap()
.value;
assert_eq!(balance, 50);
server.close().unwrap();

View File

@@ -1,4 +1,3 @@
use solana_cli::test_utils::check_balance;
use solana_cli::{
cli::{process_command, request_and_confirm_airdrop, CliCommand, CliConfig},
cli_output::OutputFormat,
@@ -8,12 +7,14 @@ use solana_cli::{
parse_sign_only_reply_string,
},
spend_utils::SpendAmount,
test_utils::{check_ready, check_recent_balance},
};
use solana_client::rpc_client::RpcClient;
use solana_core::validator::{TestValidator, TestValidatorOptions};
use solana_faucet::faucet::run_local_faucet;
use solana_sdk::{
account_utils::StateMut,
commitment_config::CommitmentConfig,
nonce::State as NonceState,
pubkey::Pubkey,
signature::{keypair_from_seed, Keypair, Signer},
@@ -40,7 +41,7 @@ fn test_stake_delegation_force() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let default_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
@@ -57,6 +58,7 @@ fn test_stake_delegation_force() {
let vote_keypair = Keypair::new();
config.signers = vec![&default_signer, &vote_keypair];
config.command = CliCommand::CreateVoteAccount {
vote_account: 1,
seed: None,
identity_account: 0,
authorized_voter: None,
@@ -136,7 +138,7 @@ fn test_seed_stake_delegation_and_deactivation() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let validator_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
let mut config_validator = CliConfig::default();
let mut config_validator = CliConfig::recent_for_tests();
config_validator.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config_validator.signers = vec![&validator_keypair];
@@ -149,7 +151,7 @@ fn test_seed_stake_delegation_and_deactivation() {
&config_validator,
)
.unwrap();
check_balance(100_000, &rpc_client, &config_validator.signers[0].pubkey());
check_recent_balance(100_000, &rpc_client, &config_validator.signers[0].pubkey());
let stake_address = Pubkey::create_with_seed(
&config_validator.signers[0].pubkey(),
@@ -181,7 +183,7 @@ fn test_seed_stake_delegation_and_deactivation() {
stake_account_pubkey: stake_address,
vote_account_pubkey: vote_pubkey,
stake_authority: 0,
force: false,
force: true,
sign_only: false,
blockhash_query: BlockhashQuery::default(),
nonce_account: None,
@@ -225,7 +227,7 @@ fn test_stake_delegation_and_deactivation() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let validator_keypair = Keypair::new();
let mut config_validator = CliConfig::default();
let mut config_validator = CliConfig::recent_for_tests();
config_validator.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config_validator.signers = vec![&validator_keypair];
@@ -240,7 +242,7 @@ fn test_stake_delegation_and_deactivation() {
&config_validator,
)
.unwrap();
check_balance(100_000, &rpc_client, &config_validator.signers[0].pubkey());
check_recent_balance(100_000, &rpc_client, &config_validator.signers[0].pubkey());
// Create stake account
config_validator.signers.push(&stake_keypair);
@@ -266,7 +268,7 @@ fn test_stake_delegation_and_deactivation() {
stake_account_pubkey: stake_keypair.pubkey(),
vote_account_pubkey: vote_pubkey,
stake_authority: 0,
force: false,
force: true,
sign_only: false,
blockhash_query: BlockhashQuery::default(),
nonce_account: None,
@@ -309,19 +311,19 @@ fn test_offline_stake_delegation_and_deactivation() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let mut config_validator = CliConfig::default();
let mut config_validator = CliConfig::recent_for_tests();
config_validator.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
let validator_keypair = Keypair::new();
config_validator.signers = vec![&validator_keypair];
let mut config_payer = CliConfig::default();
let mut config_payer = CliConfig::recent_for_tests();
config_payer.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
let stake_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
let mut config_offline = CliConfig::default();
let mut config_offline = CliConfig::recent_for_tests();
config_offline.json_rpc_url = String::default();
config_offline.command = CliCommand::ClusterVersion;
let offline_keypair = Keypair::new();
@@ -337,7 +339,7 @@ fn test_offline_stake_delegation_and_deactivation() {
&config_offline,
)
.unwrap();
check_balance(100_000, &rpc_client, &config_validator.signers[0].pubkey());
check_recent_balance(100_000, &rpc_client, &config_validator.signers[0].pubkey());
request_and_confirm_airdrop(
&rpc_client,
@@ -347,7 +349,7 @@ fn test_offline_stake_delegation_and_deactivation() {
&config_validator,
)
.unwrap();
check_balance(100_000, &rpc_client, &config_offline.signers[0].pubkey());
check_recent_balance(100_000, &rpc_client, &config_offline.signers[0].pubkey());
// Create stake account
config_validator.signers.push(&stake_keypair);
@@ -373,7 +375,7 @@ fn test_offline_stake_delegation_and_deactivation() {
stake_account_pubkey: stake_keypair.pubkey(),
vote_account_pubkey: vote_pubkey,
stake_authority: 0,
force: false,
force: true,
sign_only: true,
blockhash_query: BlockhashQuery::None(blockhash),
nonce_account: None,
@@ -392,7 +394,7 @@ fn test_offline_stake_delegation_and_deactivation() {
stake_account_pubkey: stake_keypair.pubkey(),
vote_account_pubkey: vote_pubkey,
stake_authority: 0,
force: false,
force: true,
sign_only: false,
blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash),
nonce_account: None,
@@ -453,7 +455,7 @@ fn test_nonced_stake_delegation_and_deactivation() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let config_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.signers = vec![&config_keypair];
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
@@ -501,10 +503,14 @@ fn test_nonced_stake_delegation_and_deactivation() {
process_command(&config).unwrap();
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Delegate stake
config.signers = vec![&config_keypair];
@@ -512,7 +518,7 @@ fn test_nonced_stake_delegation_and_deactivation() {
stake_account_pubkey: stake_keypair.pubkey(),
vote_account_pubkey: vote_pubkey,
stake_authority: 0,
force: false,
force: true,
sign_only: false,
blockhash_query: BlockhashQuery::FeeCalculator(
blockhash_query::Source::NonceAccount(nonce_account.pubkey()),
@@ -525,10 +531,14 @@ fn test_nonced_stake_delegation_and_deactivation() {
process_command(&config).unwrap();
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Deactivate stake
config.command = CliCommand::DeactivateStake {
@@ -567,7 +577,7 @@ fn test_stake_authorize() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let default_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
@@ -581,7 +591,7 @@ fn test_stake_authorize() {
.unwrap();
let offline_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
let mut config_offline = CliConfig::default();
let mut config_offline = CliConfig::recent_for_tests();
config_offline.signers = vec![&offline_keypair];
config_offline.json_rpc_url = String::default();
let offline_authority_pubkey = config_offline.signers[0].pubkey();
@@ -632,7 +642,11 @@ fn test_stake_authorize() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let current_authority = match stake_state {
StakeState::Initialized(meta) => meta.authorized.staker,
@@ -659,7 +673,11 @@ fn test_stake_authorize() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let (current_staker, current_withdrawer) = match stake_state {
StakeState::Initialized(meta) => (meta.authorized.staker, meta.authorized.withdrawer),
@@ -681,7 +699,11 @@ fn test_stake_authorize() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let current_authority = match stake_state {
StakeState::Initialized(meta) => meta.authorized.staker,
@@ -692,7 +714,10 @@ fn test_stake_authorize() {
// Offline assignment of new nonced stake authority
let nonced_authority = Keypair::new();
let nonced_authority_pubkey = nonced_authority.pubkey();
let (blockhash, _) = rpc_client.get_recent_blockhash().unwrap();
let (blockhash, _, _) = rpc_client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.unwrap()
.value;
config_offline.command = CliCommand::StakeAuthorize {
stake_account_pubkey,
new_authorizations: vec![(StakeAuthorize::Staker, nonced_authority_pubkey, 0)],
@@ -718,7 +743,11 @@ fn test_stake_authorize() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let current_authority = match stake_state {
StakeState::Initialized(meta) => meta.authorized.staker,
@@ -741,10 +770,14 @@ fn test_stake_authorize() {
process_command(&config).unwrap();
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Nonced assignment of new online stake authority
let online_authority = Keypair::new();
@@ -779,7 +812,11 @@ fn test_stake_authorize() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let current_authority = match stake_state {
StakeState::Initialized(meta) => meta.authorized.staker,
@@ -787,10 +824,14 @@ fn test_stake_authorize() {
};
assert_eq!(current_authority, online_authority_pubkey);
let new_nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let new_nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
assert_ne!(nonce_hash, new_nonce_hash);
server.close().unwrap();
@@ -821,18 +862,18 @@ fn test_stake_authorize_with_fee_payer() {
let default_signer = Keypair::new();
let default_pubkey = default_signer.pubkey();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
let payer_keypair = keypair_from_seed(&[0u8; 32]).unwrap();
let mut config_payer = CliConfig::default();
let mut config_payer = CliConfig::recent_for_tests();
config_payer.signers = vec![&payer_keypair];
config_payer.json_rpc_url =
format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
let payer_pubkey = config_payer.signers[0].pubkey();
let mut config_offline = CliConfig::default();
let mut config_offline = CliConfig::recent_for_tests();
let offline_signer = Keypair::new();
config_offline.signers = vec![&offline_signer];
config_offline.json_rpc_url = String::new();
@@ -843,15 +884,17 @@ fn test_stake_authorize_with_fee_payer() {
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &default_pubkey, 100_000, &config)
.unwrap();
check_balance(100_000, &rpc_client, &config.signers[0].pubkey());
check_recent_balance(100_000, &rpc_client, &config.signers[0].pubkey());
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &payer_pubkey, 100_000, &config)
.unwrap();
check_balance(100_000, &rpc_client, &payer_pubkey);
check_recent_balance(100_000, &rpc_client, &payer_pubkey);
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &offline_pubkey, 100_000, &config)
.unwrap();
check_balance(100_000, &rpc_client, &offline_pubkey);
check_recent_balance(100_000, &rpc_client, &offline_pubkey);
check_ready(&rpc_client);
// Create stake account, identity is authority
let stake_keypair = Keypair::new();
@@ -873,7 +916,7 @@ fn test_stake_authorize_with_fee_payer() {
};
process_command(&config).unwrap();
// `config` balance should be 50,000 - 1 stake account sig - 1 fee sig
check_balance(50_000 - SIG_FEE - SIG_FEE, &rpc_client, &default_pubkey);
check_recent_balance(50_000 - SIG_FEE - SIG_FEE, &rpc_client, &default_pubkey);
// Assign authority with separate fee payer
config.signers = vec![&default_signer, &payer_keypair];
@@ -888,13 +931,16 @@ fn test_stake_authorize_with_fee_payer() {
};
process_command(&config).unwrap();
// `config` balance has not changed, despite submitting the TX
check_balance(50_000 - SIG_FEE - SIG_FEE, &rpc_client, &default_pubkey);
check_recent_balance(50_000 - SIG_FEE - SIG_FEE, &rpc_client, &default_pubkey);
// `config_payer` however has paid `config`'s authority sig
// and `config_payer`'s fee sig
check_balance(100_000 - SIG_FEE - SIG_FEE, &rpc_client, &payer_pubkey);
check_recent_balance(100_000 - SIG_FEE - SIG_FEE, &rpc_client, &payer_pubkey);
// Assign authority with offline fee payer
let (blockhash, _) = rpc_client.get_recent_blockhash().unwrap();
let (blockhash, _, _) = rpc_client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.unwrap()
.value;
config_offline.command = CliCommand::StakeAuthorize {
stake_account_pubkey,
new_authorizations: vec![(StakeAuthorize::Staker, payer_pubkey, 0)],
@@ -921,10 +967,10 @@ fn test_stake_authorize_with_fee_payer() {
};
process_command(&config).unwrap();
// `config`'s balance again has not changed
check_balance(50_000 - SIG_FEE - SIG_FEE, &rpc_client, &default_pubkey);
check_recent_balance(50_000 - SIG_FEE - SIG_FEE, &rpc_client, &default_pubkey);
// `config_offline` however has paid 1 sig due to being both authority
// and fee payer
check_balance(100_000 - SIG_FEE, &rpc_client, &offline_pubkey);
check_recent_balance(100_000 - SIG_FEE, &rpc_client, &offline_pubkey);
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();
@@ -953,11 +999,11 @@ fn test_stake_split() {
let default_signer = Keypair::new();
let offline_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
let mut config_offline = CliConfig::default();
let mut config_offline = CliConfig::recent_for_tests();
config_offline.json_rpc_url = String::default();
config_offline.signers = vec![&offline_signer];
let offline_pubkey = config_offline.signers[0].pubkey();
@@ -973,11 +1019,11 @@ fn test_stake_split() {
&config,
)
.unwrap();
check_balance(500_000, &rpc_client, &config.signers[0].pubkey());
check_recent_balance(500_000, &rpc_client, &config.signers[0].pubkey());
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &offline_pubkey, 100_000, &config)
.unwrap();
check_balance(100_000, &rpc_client, &offline_pubkey);
check_recent_balance(100_000, &rpc_client, &offline_pubkey);
// Create stake account, identity is authority
let minimum_stake_balance = rpc_client
@@ -1001,7 +1047,7 @@ fn test_stake_split() {
from: 0,
};
process_command(&config).unwrap();
check_balance(
check_recent_balance(
10 * minimum_stake_balance,
&rpc_client,
&stake_account_pubkey,
@@ -1020,17 +1066,21 @@ fn test_stake_split() {
amount: SpendAmount::Some(minimum_nonce_balance),
};
process_command(&config).unwrap();
check_balance(minimum_nonce_balance, &rpc_client, &nonce_account.pubkey());
check_recent_balance(minimum_nonce_balance, &rpc_client, &nonce_account.pubkey());
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Nonced offline split
let split_account = keypair_from_seed(&[2u8; 32]).unwrap();
check_balance(0, &rpc_client, &split_account.pubkey());
check_recent_balance(0, &rpc_client, &split_account.pubkey());
config_offline.signers.push(&split_account);
config_offline.command = CliCommand::SplitStake {
stake_account_pubkey,
@@ -1066,12 +1116,12 @@ fn test_stake_split() {
fee_payer: 0,
};
process_command(&config).unwrap();
check_balance(
check_recent_balance(
8 * minimum_stake_balance,
&rpc_client,
&stake_account_pubkey,
);
check_balance(
check_recent_balance(
2 * minimum_stake_balance,
&rpc_client,
&split_account.pubkey(),
@@ -1104,11 +1154,11 @@ fn test_stake_set_lockup() {
let default_signer = Keypair::new();
let offline_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
let mut config_offline = CliConfig::default();
let mut config_offline = CliConfig::recent_for_tests();
config_offline.json_rpc_url = String::default();
config_offline.signers = vec![&offline_signer];
let offline_pubkey = config_offline.signers[0].pubkey();
@@ -1124,11 +1174,11 @@ fn test_stake_set_lockup() {
&config,
)
.unwrap();
check_balance(500_000, &rpc_client, &config.signers[0].pubkey());
check_recent_balance(500_000, &rpc_client, &config.signers[0].pubkey());
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &offline_pubkey, 100_000, &config)
.unwrap();
check_balance(100_000, &rpc_client, &offline_pubkey);
check_recent_balance(100_000, &rpc_client, &offline_pubkey);
// Create stake account, identity is authority
let minimum_stake_balance = rpc_client
@@ -1157,7 +1207,7 @@ fn test_stake_set_lockup() {
from: 0,
};
process_command(&config).unwrap();
check_balance(
check_recent_balance(
10 * minimum_stake_balance,
&rpc_client,
&stake_account_pubkey,
@@ -1181,7 +1231,11 @@ fn test_stake_set_lockup() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let current_lockup = match stake_state {
StakeState::Initialized(meta) => meta.lockup,
@@ -1232,7 +1286,11 @@ fn test_stake_set_lockup() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let current_lockup = match stake_state {
StakeState::Initialized(meta) => meta.lockup,
@@ -1277,13 +1335,17 @@ fn test_stake_set_lockup() {
amount: SpendAmount::Some(minimum_nonce_balance),
};
process_command(&config).unwrap();
check_balance(minimum_nonce_balance, &rpc_client, &nonce_account_pubkey);
check_recent_balance(minimum_nonce_balance, &rpc_client, &nonce_account_pubkey);
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Nonced offline set lockup
let lockup = LockupArgs {
@@ -1321,7 +1383,11 @@ fn test_stake_set_lockup() {
fee_payer: 0,
};
process_command(&config).unwrap();
let stake_account = rpc_client.get_account(&stake_account_pubkey).unwrap();
let stake_account = rpc_client
.get_account_with_commitment(&stake_account_pubkey, CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let stake_state: StakeState = stake_account.state().unwrap();
let current_lockup = match stake_state {
StakeState::Initialized(meta) => meta.lockup,
@@ -1355,12 +1421,12 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
let default_signer = keypair_from_seed(&[1u8; 32]).unwrap();
config.signers = vec![&default_signer];
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
let mut config_offline = CliConfig::default();
let mut config_offline = CliConfig::recent_for_tests();
let offline_signer = keypair_from_seed(&[2u8; 32]).unwrap();
config_offline.signers = vec![&offline_signer];
let offline_pubkey = config_offline.signers[0].pubkey();
@@ -1377,11 +1443,11 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
&config,
)
.unwrap();
check_balance(200_000, &rpc_client, &config.signers[0].pubkey());
check_recent_balance(200_000, &rpc_client, &config.signers[0].pubkey());
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &offline_pubkey, 100_000, &config)
.unwrap();
check_balance(100_000, &rpc_client, &offline_pubkey);
check_recent_balance(100_000, &rpc_client, &offline_pubkey);
// Create nonce account
let minimum_nonce_balance = rpc_client
@@ -1399,10 +1465,14 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
process_command(&config).unwrap();
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Create stake account offline
let stake_keypair = keypair_from_seed(&[4u8; 32]).unwrap();
@@ -1447,13 +1517,17 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
from: 0,
};
process_command(&config).unwrap();
check_balance(50_000, &rpc_client, &stake_pubkey);
check_recent_balance(50_000, &rpc_client, &stake_pubkey);
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Offline, nonced stake-withdraw
let recipient = keypair_from_seed(&[5u8; 32]).unwrap();
@@ -1491,13 +1565,17 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
fee_payer: 0,
};
process_command(&config).unwrap();
check_balance(42, &rpc_client, &recipient_pubkey);
check_recent_balance(42, &rpc_client, &recipient_pubkey);
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Create another stake account. This time with seed
let seed = "seedy";
@@ -1541,7 +1619,7 @@ fn test_offline_nonced_create_stake_account_and_withdraw() {
process_command(&config).unwrap();
let seed_address =
Pubkey::create_with_seed(&stake_pubkey, seed, &solana_stake_program::id()).unwrap();
check_balance(50_000, &rpc_client, &seed_address);
check_recent_balance(50_000, &rpc_client, &seed_address);
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();

View File

@@ -1,4 +1,3 @@
use solana_cli::test_utils::check_balance;
use solana_cli::{
cli::{process_command, request_and_confirm_airdrop, CliCommand, CliConfig},
cli_output::OutputFormat,
@@ -8,11 +7,13 @@ use solana_cli::{
parse_sign_only_reply_string,
},
spend_utils::SpendAmount,
test_utils::{check_ready, check_recent_balance},
};
use solana_client::rpc_client::RpcClient;
use solana_core::validator::{TestValidator, TestValidatorOptions};
use solana_faucet::faucet::run_local_faucet;
use solana_sdk::{
commitment_config::CommitmentConfig,
nonce::State as NonceState,
pubkey::Pubkey,
signature::{keypair_from_seed, Keypair, NullSigner, Signer},
@@ -42,7 +43,7 @@ fn test_transfer() {
let default_signer = Keypair::new();
let default_offline_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
@@ -51,8 +52,10 @@ fn test_transfer() {
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &sender_pubkey, 50_000, &config)
.unwrap();
check_balance(50_000, &rpc_client, &sender_pubkey);
check_balance(0, &rpc_client, &recipient_pubkey);
check_recent_balance(50_000, &rpc_client, &sender_pubkey);
check_recent_balance(0, &rpc_client, &recipient_pubkey);
check_ready(&rpc_client);
// Plain ole transfer
config.command = CliCommand::Transfer {
@@ -67,8 +70,8 @@ fn test_transfer() {
fee_payer: 0,
};
process_command(&config).unwrap();
check_balance(49_989, &rpc_client, &sender_pubkey);
check_balance(10, &rpc_client, &recipient_pubkey);
check_recent_balance(49_989, &rpc_client, &sender_pubkey);
check_recent_balance(10, &rpc_client, &recipient_pubkey);
// Plain ole transfer, failure due to InsufficientFundsForSpendAndFee
config.command = CliCommand::Transfer {
@@ -83,10 +86,10 @@ fn test_transfer() {
fee_payer: 0,
};
assert!(process_command(&config).is_err());
check_balance(49_989, &rpc_client, &sender_pubkey);
check_balance(10, &rpc_client, &recipient_pubkey);
check_recent_balance(49_989, &rpc_client, &sender_pubkey);
check_recent_balance(10, &rpc_client, &recipient_pubkey);
let mut offline = CliConfig::default();
let mut offline = CliConfig::recent_for_tests();
offline.json_rpc_url = String::default();
offline.signers = vec![&default_offline_signer];
// Verify we cannot contact the cluster
@@ -95,10 +98,13 @@ fn test_transfer() {
let offline_pubkey = offline.signers[0].pubkey();
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &offline_pubkey, 50, &config).unwrap();
check_balance(50, &rpc_client, &offline_pubkey);
check_recent_balance(50, &rpc_client, &offline_pubkey);
// Offline transfer
let (blockhash, _) = rpc_client.get_recent_blockhash().unwrap();
let (blockhash, _, _) = rpc_client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.unwrap()
.value;
offline.command = CliCommand::Transfer {
amount: SpendAmount::Some(10),
to: recipient_pubkey,
@@ -128,8 +134,8 @@ fn test_transfer() {
fee_payer: 0,
};
process_command(&config).unwrap();
check_balance(39, &rpc_client, &offline_pubkey);
check_balance(20, &rpc_client, &recipient_pubkey);
check_recent_balance(39, &rpc_client, &offline_pubkey);
check_recent_balance(20, &rpc_client, &recipient_pubkey);
// Create nonce account
let nonce_account = keypair_from_seed(&[3u8; 32]).unwrap();
@@ -144,13 +150,17 @@ fn test_transfer() {
amount: SpendAmount::Some(minimum_nonce_balance),
};
process_command(&config).unwrap();
check_balance(49_987 - minimum_nonce_balance, &rpc_client, &sender_pubkey);
check_recent_balance(49_987 - minimum_nonce_balance, &rpc_client, &sender_pubkey);
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Nonced transfer
config.signers = vec![&default_signer];
@@ -169,12 +179,16 @@ fn test_transfer() {
fee_payer: 0,
};
process_command(&config).unwrap();
check_balance(49_976 - minimum_nonce_balance, &rpc_client, &sender_pubkey);
check_balance(30, &rpc_client, &recipient_pubkey);
let new_nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
check_recent_balance(49_976 - minimum_nonce_balance, &rpc_client, &sender_pubkey);
check_recent_balance(30, &rpc_client, &recipient_pubkey);
let new_nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
assert_ne!(nonce_hash, new_nonce_hash);
// Assign nonce authority to offline
@@ -185,13 +199,17 @@ fn test_transfer() {
new_authority: offline_pubkey,
};
process_command(&config).unwrap();
check_balance(49_975 - minimum_nonce_balance, &rpc_client, &sender_pubkey);
check_recent_balance(49_975 - minimum_nonce_balance, &rpc_client, &sender_pubkey);
// Fetch nonce hash
let nonce_hash = nonce::get_account(&rpc_client, &nonce_account.pubkey())
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
let nonce_hash = nonce::get_account_with_commitment(
&rpc_client,
&nonce_account.pubkey(),
CommitmentConfig::recent(),
)
.and_then(|ref a| nonce::data_from_account(a))
.unwrap()
.blockhash;
// Offline, nonced transfer
offline.signers = vec![&default_offline_signer];
@@ -226,8 +244,8 @@ fn test_transfer() {
fee_payer: 0,
};
process_command(&config).unwrap();
check_balance(28, &rpc_client, &offline_pubkey);
check_balance(40, &rpc_client, &recipient_pubkey);
check_recent_balance(28, &rpc_client, &offline_pubkey);
check_recent_balance(40, &rpc_client, &recipient_pubkey);
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();
@@ -255,7 +273,7 @@ fn test_transfer_multisession_signing() {
let offline_from_signer = keypair_from_seed(&[2u8; 32]).unwrap();
let offline_fee_payer_signer = keypair_from_seed(&[3u8; 32]).unwrap();
let from_null_signer = NullSigner::new(&offline_from_signer.pubkey());
let config = CliConfig::default();
let config = CliConfig::recent_for_tests();
// Setup accounts
let rpc_client = RpcClient::new_socket(leader_data.rpc);
@@ -275,14 +293,19 @@ fn test_transfer_multisession_signing() {
&config,
)
.unwrap();
check_balance(43, &rpc_client, &offline_from_signer.pubkey());
check_balance(3, &rpc_client, &offline_fee_payer_signer.pubkey());
check_balance(0, &rpc_client, &to_pubkey);
check_recent_balance(43, &rpc_client, &offline_from_signer.pubkey());
check_recent_balance(3, &rpc_client, &offline_fee_payer_signer.pubkey());
check_recent_balance(0, &rpc_client, &to_pubkey);
let (blockhash, _) = rpc_client.get_recent_blockhash().unwrap();
check_ready(&rpc_client);
let (blockhash, _, _) = rpc_client
.get_recent_blockhash_with_commitment(CommitmentConfig::recent())
.unwrap()
.value;
// Offline fee-payer signs first
let mut fee_payer_config = CliConfig::default();
let mut fee_payer_config = CliConfig::recent_for_tests();
fee_payer_config.json_rpc_url = String::default();
fee_payer_config.signers = vec![&offline_fee_payer_signer, &from_null_signer];
// Verify we cannot contact the cluster
@@ -308,7 +331,7 @@ fn test_transfer_multisession_signing() {
.unwrap();
// Now the offline fund source
let mut from_config = CliConfig::default();
let mut from_config = CliConfig::recent_for_tests();
from_config.json_rpc_url = String::default();
from_config.signers = vec![&fee_payer_presigner, &offline_from_signer];
// Verify we cannot contact the cluster
@@ -334,7 +357,7 @@ fn test_transfer_multisession_signing() {
.unwrap();
// Finally submit to the cluster
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&fee_payer_presigner, &from_presigner];
config.command = CliCommand::Transfer {
@@ -350,9 +373,9 @@ fn test_transfer_multisession_signing() {
};
process_command(&config).unwrap();
check_balance(1, &rpc_client, &offline_from_signer.pubkey());
check_balance(1, &rpc_client, &offline_fee_payer_signer.pubkey());
check_balance(42, &rpc_client, &to_pubkey);
check_recent_balance(1, &rpc_client, &offline_from_signer.pubkey());
check_recent_balance(1, &rpc_client, &offline_fee_payer_signer.pubkey());
check_recent_balance(42, &rpc_client, &to_pubkey);
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();
@@ -380,7 +403,7 @@ fn test_transfer_all() {
let default_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
@@ -389,8 +412,10 @@ fn test_transfer_all() {
request_and_confirm_airdrop(&rpc_client, &faucet_addr, &sender_pubkey, 50_000, &config)
.unwrap();
check_balance(50_000, &rpc_client, &sender_pubkey);
check_balance(0, &rpc_client, &recipient_pubkey);
check_recent_balance(50_000, &rpc_client, &sender_pubkey);
check_recent_balance(0, &rpc_client, &recipient_pubkey);
check_ready(&rpc_client);
// Plain ole transfer
config.command = CliCommand::Transfer {
@@ -405,8 +430,8 @@ fn test_transfer_all() {
fee_payer: 0,
};
process_command(&config).unwrap();
check_balance(0, &rpc_client, &sender_pubkey);
check_balance(49_999, &rpc_client, &recipient_pubkey);
check_recent_balance(0, &rpc_client, &sender_pubkey);
check_recent_balance(49_999, &rpc_client, &recipient_pubkey);
server.close().unwrap();
remove_dir_all(ledger_path).unwrap();

View File

@@ -1,10 +1,15 @@
use solana_cli::cli::{process_command, request_and_confirm_airdrop, CliCommand, CliConfig};
use solana_cli::test_utils::check_balance;
use solana_cli::{
cli::{process_command, request_and_confirm_airdrop, CliCommand, CliConfig},
offline::{blockhash_query::BlockhashQuery, *},
spend_utils::SpendAmount,
test_utils::check_recent_balance,
};
use solana_client::rpc_client::RpcClient;
use solana_core::validator::TestValidator;
use solana_faucet::faucet::run_local_faucet;
use solana_sdk::{
account_utils::StateMut,
commitment_config::CommitmentConfig,
pubkey::Pubkey,
signature::{Keypair, Signer},
};
@@ -27,7 +32,7 @@ fn test_vote_authorize_and_withdraw() {
let rpc_client = RpcClient::new_socket(leader_data.rpc);
let default_signer = Keypair::new();
let mut config = CliConfig::default();
let mut config = CliConfig::recent_for_tests();
config.json_rpc_url = format!("http://{}:{}", leader_data.rpc.ip(), leader_data.rpc.port());
config.signers = vec![&default_signer];
@@ -45,6 +50,7 @@ fn test_vote_authorize_and_withdraw() {
let vote_account_pubkey = vote_account_keypair.pubkey();
config.signers = vec![&default_signer, &vote_account_keypair];
config.command = CliCommand::CreateVoteAccount {
vote_account: 1,
seed: None,
identity_account: 0,
authorized_voter: None,
@@ -53,7 +59,9 @@ fn test_vote_authorize_and_withdraw() {
};
process_command(&config).unwrap();
let vote_account = rpc_client
.get_account(&vote_account_keypair.pubkey())
.get_account_with_commitment(&vote_account_keypair.pubkey(), CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let vote_state: VoteStateVersions = vote_account.state().unwrap();
let authorized_withdrawer = vote_state.convert_to_current().authorized_withdrawer;
@@ -62,7 +70,24 @@ fn test_vote_authorize_and_withdraw() {
.get_minimum_balance_for_rent_exemption(VoteState::size_of())
.unwrap()
.max(1);
check_balance(expected_balance, &rpc_client, &vote_account_pubkey);
check_recent_balance(expected_balance, &rpc_client, &vote_account_pubkey);
// Transfer in some more SOL
config.signers = vec![&default_signer];
config.command = CliCommand::Transfer {
amount: SpendAmount::Some(1_000),
to: vote_account_pubkey,
from: 0,
sign_only: false,
no_wait: false,
blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster),
nonce_account: None,
nonce_authority: 0,
fee_payer: 0,
};
process_command(&config).unwrap();
let expected_balance = expected_balance + 1_000;
check_recent_balance(expected_balance, &rpc_client, &vote_account_pubkey);
// Authorize vote account withdrawal to another signer
let withdraw_authority = Keypair::new();
@@ -74,7 +99,9 @@ fn test_vote_authorize_and_withdraw() {
};
process_command(&config).unwrap();
let vote_account = rpc_client
.get_account(&vote_account_keypair.pubkey())
.get_account_with_commitment(&vote_account_keypair.pubkey(), CommitmentConfig::recent())
.unwrap()
.value
.unwrap();
let vote_state: VoteStateVersions = vote_account.state().unwrap();
let authorized_withdrawer = vote_state.convert_to_current().authorized_withdrawer;
@@ -86,12 +113,12 @@ fn test_vote_authorize_and_withdraw() {
config.command = CliCommand::WithdrawFromVoteAccount {
vote_account_pubkey,
withdraw_authority: 1,
lamports: 100,
withdraw_amount: SpendAmount::Some(100),
destination_account_pubkey: destination_account,
};
process_command(&config).unwrap();
check_balance(expected_balance - 100, &rpc_client, &vote_account_pubkey);
check_balance(100, &rpc_client, &destination_account);
check_recent_balance(expected_balance - 100, &rpc_client, &vote_account_pubkey);
check_recent_balance(100, &rpc_client, &destination_account);
// Re-assign validator identity
let new_identity_keypair = Keypair::new();
@@ -99,6 +126,7 @@ fn test_vote_authorize_and_withdraw() {
config.command = CliCommand::VoteUpdateValidator {
vote_account_pubkey,
new_identity_account: 2,
withdraw_authority: 1,
};
process_command(&config).unwrap();

View File

@@ -1,37 +1,38 @@
[package]
name = "solana-client"
version = "1.2.0"
version = "1.3.2"
description = "Solana Client"
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
homepage = "https://solana.com/"
license = "Apache-2.0"
edition = "2018"
[dependencies]
bincode = "1.2.1"
bincode = "1.3.1"
bs58 = "0.3.1"
indicatif = "0.14.0"
jsonrpc-core = "14.1.0"
indicatif = "0.15.0"
jsonrpc-core = "14.2.0"
log = "0.4.8"
rayon = "1.3.0"
reqwest = { version = "0.10.4", default-features = false, features = ["blocking", "rustls-tls", "json"] }
serde = "1.0.110"
rayon = "1.3.1"
reqwest = { version = "0.10.6", default-features = false, features = ["blocking", "rustls-tls", "json"] }
serde = "1.0.112"
serde_derive = "1.0.103"
serde_json = "1.0.53"
solana-transaction-status = { path = "../transaction-status", version = "1.2.0" }
solana-net-utils = { path = "../net-utils", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
solana-vote-program = { path = "../programs/vote", version = "1.2.0" }
serde_json = "1.0.56"
solana-account-decoder = { path = "../account-decoder", version = "1.3.2" }
solana-net-utils = { path = "../net-utils", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
solana-transaction-status = { path = "../transaction-status", version = "1.3.2" }
solana-vote-program = { path = "../programs/vote", version = "1.3.2" }
thiserror = "1.0"
tungstenite = "0.10.1"
url = "2.1.1"
[dev-dependencies]
assert_matches = "1.3.0"
jsonrpc-core = "14.1.0"
jsonrpc-http-server = "14.1.0"
solana-logger = { path = "../logger", version = "1.2.0" }
jsonrpc-core = "14.2.0"
jsonrpc-http-server = "14.2.0"
solana-logger = { path = "../logger", version = "1.3.2" }
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

View File

@@ -8,6 +8,7 @@ pub mod perf_utils;
pub mod pubsub_client;
pub mod rpc_client;
pub mod rpc_config;
pub mod rpc_filter;
pub mod rpc_request;
pub mod rpc_response;
pub mod rpc_sender;

View File

@@ -2,8 +2,12 @@ use crate::{
client_error::{ClientError, ClientErrorKind, Result as ClientResult},
http_sender::HttpSender,
mock_sender::{MockSender, Mocks},
rpc_config::RpcLargestAccountsConfig,
rpc_request::{RpcError, RpcRequest},
rpc_config::RpcAccountInfoConfig,
rpc_config::{
RpcGetConfirmedSignaturesForAddress2Config, RpcLargestAccountsConfig,
RpcSendTransactionConfig, RpcTokenAccountsFilter,
},
rpc_request::{RpcError, RpcRequest, TokenAccountsFilter},
rpc_response::*,
rpc_sender::RpcSender,
};
@@ -11,29 +15,32 @@ use bincode::serialize;
use indicatif::{ProgressBar, ProgressStyle};
use log::*;
use serde_json::{json, Value};
use solana_account_decoder::{
parse_token::UiTokenAmount,
UiAccount,
UiAccountData::{Binary, Binary64},
UiAccountEncoding,
};
use solana_sdk::{
account::Account,
clock::{
Slot, UnixTimestamp, DEFAULT_TICKS_PER_SECOND, DEFAULT_TICKS_PER_SLOT,
MAX_HASH_AGE_IN_SECONDS,
},
commitment_config::CommitmentConfig,
commitment_config::{CommitmentConfig, CommitmentLevel},
epoch_info::EpochInfo,
epoch_schedule::EpochSchedule,
fee_calculator::{FeeCalculator, FeeRateGovernor},
hash::Hash,
inflation::Inflation,
pubkey::Pubkey,
signature::Signature,
signers::Signers,
transaction::{self, Transaction},
};
use solana_transaction_status::{
ConfirmedBlock, ConfirmedTransaction, TransactionEncoding, TransactionStatus,
ConfirmedBlock, ConfirmedTransaction, TransactionStatus, UiTransactionEncoding,
};
use solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY;
use std::{
error,
net::SocketAddr,
thread::sleep,
time::{Duration, Instant},
@@ -54,6 +61,10 @@ impl RpcClient {
Self::new_sender(HttpSender::new(url))
}
pub fn new_with_timeout(url: String, timeout: Duration) -> Self {
Self::new_sender(HttpSender::new_with_timeout(url, timeout))
}
pub fn new_mock(url: String) -> Self {
Self::new_sender(MockSender::new(url))
}
@@ -68,7 +79,7 @@ impl RpcClient {
pub fn new_socket_with_timeout(addr: SocketAddr, timeout: Duration) -> Self {
let url = get_rpc_request_str(addr, false);
Self::new_sender(HttpSender::new_with_timeout(url, timeout))
Self::new_with_timeout(url, timeout)
}
pub fn confirm_transaction(&self, signature: &Signature) -> ClientResult<bool> {
@@ -95,10 +106,20 @@ impl RpcClient {
}
pub fn send_transaction(&self, transaction: &Transaction) -> ClientResult<Signature> {
self.send_transaction_with_config(transaction, RpcSendTransactionConfig::default())
}
pub fn send_transaction_with_config(
&self,
transaction: &Transaction,
config: RpcSendTransactionConfig,
) -> ClientResult<Signature> {
let serialized_encoded = bs58::encode(serialize(transaction).unwrap()).into_string();
let signature_base58_str: String =
self.send(RpcRequest::SendTransaction, json!([serialized_encoded]))?;
let signature_base58_str: String = self.send(
RpcRequest::SendTransaction,
json!([serialized_encoded, config]),
)?;
let signature = signature_base58_str
.parse::<Signature>()
@@ -122,7 +143,7 @@ impl RpcClient {
&self,
transaction: &Transaction,
sig_verify: bool,
) -> RpcResult<TransactionStatus> {
) -> RpcResult<RpcSimulateTransactionResult> {
let serialized_encoded = bs58::encode(serialize(transaction).unwrap()).into_string();
self.send(
RpcRequest::SimulateTransaction,
@@ -230,13 +251,13 @@ impl RpcClient {
}
pub fn get_confirmed_block(&self, slot: Slot) -> ClientResult<ConfirmedBlock> {
self.get_confirmed_block_with_encoding(slot, TransactionEncoding::Json)
self.get_confirmed_block_with_encoding(slot, UiTransactionEncoding::Json)
}
pub fn get_confirmed_block_with_encoding(
&self,
slot: Slot,
encoding: TransactionEncoding,
encoding: UiTransactionEncoding,
) -> ClientResult<ConfirmedBlock> {
self.send(RpcRequest::GetConfirmedBlock, json!([slot, encoding]))
}
@@ -274,10 +295,36 @@ impl RpcClient {
Ok(signatures)
}
pub fn get_confirmed_signatures_for_address2(
&self,
address: &Pubkey,
) -> ClientResult<Vec<RpcConfirmedTransactionStatusWithSignature>> {
self.get_confirmed_signatures_for_address2_with_config(address, None, None)
}
pub fn get_confirmed_signatures_for_address2_with_config(
&self,
address: &Pubkey,
before: Option<Signature>,
limit: Option<usize>,
) -> ClientResult<Vec<RpcConfirmedTransactionStatusWithSignature>> {
let config = RpcGetConfirmedSignaturesForAddress2Config {
before: before.map(|signature| signature.to_string()),
limit,
};
let result: Vec<RpcConfirmedTransactionStatusWithSignature> = self.send(
RpcRequest::GetConfirmedSignaturesForAddress2,
json!([address.to_string(), config]),
)?;
Ok(result)
}
pub fn get_confirmed_transaction(
&self,
signature: &Signature,
encoding: TransactionEncoding,
encoding: UiTransactionEncoding,
) -> ClientResult<ConfirmedTransaction> {
self.send(
RpcRequest::GetConfirmedTransaction,
@@ -346,8 +393,12 @@ impl RpcClient {
})
}
pub fn get_inflation(&self) -> ClientResult<Inflation> {
self.send(RpcRequest::GetInflation, Value::Null)
pub fn get_inflation_governor(&self) -> ClientResult<RpcInflationGovernor> {
self.send(RpcRequest::GetInflationGovernor, Value::Null)
}
pub fn get_inflation_rate(&self) -> ClientResult<RpcInflationRate> {
self.send(RpcRequest::GetInflationRate, Value::Null)
}
pub fn get_version(&self) -> ClientResult<RpcVersionInfo> {
@@ -403,107 +454,6 @@ impl RpcClient {
}
}
pub fn send_and_confirm_transactions_with_spinner<T: Signers>(
&self,
mut transactions: Vec<Transaction>,
signer_keys: &T,
) -> Result<(), Box<dyn error::Error>> {
let progress_bar = new_spinner_progress_bar();
let mut send_retries = 5;
loop {
let mut status_retries = 15;
// Send all transactions
let mut transactions_signatures = vec![];
let num_transactions = transactions.len();
for transaction in transactions {
if cfg!(not(test)) {
// Delay ~1 tick between write transactions in an attempt to reduce AccountInUse errors
// when all the write transactions modify the same program account (eg, deploying a
// new program)
sleep(Duration::from_millis(1000 / DEFAULT_TICKS_PER_SECOND));
}
let signature = self.send_transaction(&transaction).ok();
transactions_signatures.push((transaction, signature));
progress_bar.set_message(&format!(
"[{}/{}] Transactions sent",
transactions_signatures.len(),
num_transactions
));
}
// Collect statuses for all the transactions, drop those that are confirmed
while status_retries > 0 {
status_retries -= 1;
progress_bar.set_message(&format!(
"[{}/{}] Transactions confirmed",
num_transactions - transactions_signatures.len(),
num_transactions
));
if cfg!(not(test)) {
// Retry twice a second
sleep(Duration::from_millis(500));
}
transactions_signatures = transactions_signatures
.into_iter()
.filter(|(_transaction, signature)| {
if let Some(signature) = signature {
if let Ok(status) = self.get_signature_status(&signature) {
if self
.get_num_blocks_since_signature_confirmation(&signature)
.unwrap_or(0)
> 1
{
return false;
} else {
return match status {
None => true,
Some(result) => result.is_err(),
};
}
}
}
true
})
.collect();
if transactions_signatures.is_empty() {
return Ok(());
}
}
if send_retries == 0 {
return Err(RpcError::ForUser("Transactions failed".to_string()).into());
}
send_retries -= 1;
// Re-sign any failed transactions with a new blockhash and retry
let (blockhash, _fee_calculator) =
self.get_new_blockhash(&transactions_signatures[0].0.message().recent_blockhash)?;
transactions = vec![];
for (mut transaction, _) in transactions_signatures.into_iter() {
transaction.try_sign(signer_keys, blockhash)?;
transactions.push(transaction);
}
}
}
pub fn resign_transaction<T: Signers>(
&self,
tx: &mut Transaction,
signer_keys: &T,
) -> ClientResult<()> {
let (blockhash, _fee_calculator) =
self.get_new_blockhash(&tx.message().recent_blockhash)?;
tx.try_sign(signer_keys, blockhash)?;
Ok(())
}
pub fn get_account(&self, pubkey: &Pubkey) -> ClientResult<Account> {
self.get_account_with_commitment(pubkey, CommitmentConfig::default())?
.value
@@ -515,9 +465,14 @@ impl RpcClient {
pubkey: &Pubkey,
commitment_config: CommitmentConfig,
) -> RpcResult<Option<Account>> {
let config = RpcAccountInfoConfig {
encoding: Some(UiAccountEncoding::Binary64),
commitment: Some(commitment_config),
data_slice: None,
};
let response = self.sender.send(
RpcRequest::GetAccountInfo,
json!([pubkey.to_string(), commitment_config]),
json!([pubkey.to_string(), config]),
);
response
@@ -529,10 +484,19 @@ impl RpcClient {
}
let Response {
context,
value: rpc_account,
} = serde_json::from_value::<Response<Option<RpcAccount>>>(result_json)?;
value: mut rpc_account,
} = serde_json::from_value::<Response<Option<UiAccount>>>(result_json)?;
if let Some(ref mut account) = rpc_account {
if let Binary(_) = &account.data {
let tmp = Binary64(String::new());
match std::mem::replace(&mut account.data, tmp) {
Binary(new_data) => account.data = Binary64(new_data),
_ => panic!("should have gotten binary here."),
}
}
}
trace!("Response account {:?} {:?}", pubkey, rpc_account);
let account = rpc_account.and_then(|rpc_account| rpc_account.decode().ok());
let account = rpc_account.and_then(|rpc_account| rpc_account.decode());
Ok(Response {
context,
value: account,
@@ -588,17 +552,7 @@ impl RpcClient {
pub fn get_program_accounts(&self, pubkey: &Pubkey) -> ClientResult<Vec<(Pubkey, Account)>> {
let accounts: Vec<RpcKeyedAccount> =
self.send(RpcRequest::GetProgramAccounts, json!([pubkey.to_string()]))?;
let mut pubkey_accounts: Vec<(Pubkey, Account)> = Vec::new();
for RpcKeyedAccount { pubkey, account } in accounts.into_iter() {
let pubkey = pubkey.parse().map_err(|_| {
ClientError::new_with_request(
RpcError::ParseError("Pubkey".to_string()).into(),
RpcRequest::GetProgramAccounts,
)
})?;
pubkey_accounts.push((pubkey, account.decode().unwrap()));
}
Ok(pubkey_accounts)
parse_keyed_accounts(accounts, RpcRequest::GetProgramAccounts)
}
/// Request the transaction count.
@@ -614,26 +568,46 @@ impl RpcClient {
}
pub fn get_recent_blockhash(&self) -> ClientResult<(Hash, FeeCalculator)> {
Ok(self
let (blockhash, fee_calculator, _last_valid_slot) = self
.get_recent_blockhash_with_commitment(CommitmentConfig::default())?
.value)
.value;
Ok((blockhash, fee_calculator))
}
pub fn get_recent_blockhash_with_commitment(
&self,
commitment_config: CommitmentConfig,
) -> RpcResult<(Hash, FeeCalculator)> {
let Response {
) -> RpcResult<(Hash, FeeCalculator, Slot)> {
let (context, blockhash, fee_calculator, last_valid_slot) = if let Ok(Response {
context,
value:
RpcFees {
blockhash,
fee_calculator,
last_valid_slot,
},
}) =
self.send::<Response<RpcFees>>(RpcRequest::GetFees, json!([commitment_config]))
{
(context, blockhash, fee_calculator, last_valid_slot)
} else if let Ok(Response {
context,
value:
RpcBlockhashFeeCalculator {
blockhash,
fee_calculator,
},
} = self.send::<Response<RpcBlockhashFeeCalculator>>(
}) = self.send::<Response<RpcBlockhashFeeCalculator>>(
RpcRequest::GetRecentBlockhash,
json!([commitment_config]),
)?;
) {
(context, blockhash, fee_calculator, 0)
} else {
return Err(ClientError::new_with_request(
RpcError::ParseError("RpcBlockhashFeeCalculator or RpcFees".to_string()).into(),
RpcRequest::GetRecentBlockhash,
));
};
let blockhash = blockhash.parse().map_err(|_| {
ClientError::new_with_request(
@@ -643,7 +617,7 @@ impl RpcClient {
})?;
Ok(Response {
context,
value: (blockhash, fee_calculator),
value: (blockhash, fee_calculator, last_valid_slot),
})
}
@@ -651,12 +625,28 @@ impl RpcClient {
&self,
blockhash: &Hash,
) -> ClientResult<Option<FeeCalculator>> {
let Response { value, .. } = self.send::<Response<Option<RpcFeeCalculator>>>(
Ok(self
.get_fee_calculator_for_blockhash_with_commitment(
blockhash,
CommitmentConfig::default(),
)?
.value)
}
pub fn get_fee_calculator_for_blockhash_with_commitment(
&self,
blockhash: &Hash,
commitment_config: CommitmentConfig,
) -> RpcResult<Option<FeeCalculator>> {
let Response { context, value } = self.send::<Response<Option<RpcFeeCalculator>>>(
RpcRequest::GetFeeCalculatorForBlockhash,
json!([blockhash.to_string()]),
json!([blockhash.to_string(), commitment_config]),
)?;
Ok(value.map(|rf| rf.fee_calculator))
Ok(Response {
context,
value: value.map(|rf| rf.fee_calculator),
})
}
pub fn get_fee_rate_governor(&self) -> RpcResult<FeeRateGovernor> {
@@ -709,7 +699,119 @@ impl RpcClient {
Ok(hash)
}
pub fn poll_balance_with_timeout_and_commitment(
pub fn get_token_account_balance(&self, pubkey: &Pubkey) -> ClientResult<UiTokenAmount> {
Ok(self
.get_token_account_balance_with_commitment(pubkey, CommitmentConfig::default())?
.value)
}
pub fn get_token_account_balance_with_commitment(
&self,
pubkey: &Pubkey,
commitment_config: CommitmentConfig,
) -> RpcResult<UiTokenAmount> {
self.send(
RpcRequest::GetTokenAccountBalance,
json!([pubkey.to_string(), commitment_config]),
)
}
pub fn get_token_accounts_by_delegate(
&self,
delegate: &Pubkey,
token_account_filter: TokenAccountsFilter,
) -> ClientResult<Vec<RpcKeyedAccount>> {
Ok(self
.get_token_accounts_by_delegate_with_commitment(
delegate,
token_account_filter,
CommitmentConfig::default(),
)?
.value)
}
pub fn get_token_accounts_by_delegate_with_commitment(
&self,
delegate: &Pubkey,
token_account_filter: TokenAccountsFilter,
commitment_config: CommitmentConfig,
) -> RpcResult<Vec<RpcKeyedAccount>> {
let token_account_filter = match token_account_filter {
TokenAccountsFilter::Mint(mint) => RpcTokenAccountsFilter::Mint(mint.to_string()),
TokenAccountsFilter::ProgramId(program_id) => {
RpcTokenAccountsFilter::ProgramId(program_id.to_string())
}
};
let config = RpcAccountInfoConfig {
encoding: Some(UiAccountEncoding::JsonParsed),
commitment: Some(commitment_config),
data_slice: None,
};
self.send(
RpcRequest::GetTokenAccountsByOwner,
json!([delegate.to_string(), token_account_filter, config]),
)
}
pub fn get_token_accounts_by_owner(
&self,
owner: &Pubkey,
token_account_filter: TokenAccountsFilter,
) -> ClientResult<Vec<RpcKeyedAccount>> {
Ok(self
.get_token_accounts_by_owner_with_commitment(
owner,
token_account_filter,
CommitmentConfig::default(),
)?
.value)
}
pub fn get_token_accounts_by_owner_with_commitment(
&self,
owner: &Pubkey,
token_account_filter: TokenAccountsFilter,
commitment_config: CommitmentConfig,
) -> RpcResult<Vec<RpcKeyedAccount>> {
let token_account_filter = match token_account_filter {
TokenAccountsFilter::Mint(mint) => RpcTokenAccountsFilter::Mint(mint.to_string()),
TokenAccountsFilter::ProgramId(program_id) => {
RpcTokenAccountsFilter::ProgramId(program_id.to_string())
}
};
let config = RpcAccountInfoConfig {
encoding: Some(UiAccountEncoding::JsonParsed),
commitment: Some(commitment_config),
data_slice: None,
};
self.send(
RpcRequest::GetTokenAccountsByOwner,
json!([owner.to_string(), token_account_filter, config]),
)
}
pub fn get_token_supply(&self, mint: &Pubkey) -> ClientResult<UiTokenAmount> {
Ok(self
.get_token_supply_with_commitment(mint, CommitmentConfig::default())?
.value)
}
pub fn get_token_supply_with_commitment(
&self,
mint: &Pubkey,
commitment_config: CommitmentConfig,
) -> RpcResult<UiTokenAmount> {
self.send(
RpcRequest::GetTokenSupply,
json!([mint.to_string(), commitment_config]),
)
}
fn poll_balance_with_timeout_and_commitment(
&self,
pubkey: &Pubkey,
polling_frequency: &Duration,
@@ -718,7 +820,7 @@ impl RpcClient {
) -> ClientResult<u64> {
let now = Instant::now();
loop {
match self.get_balance_with_commitment(&pubkey, commitment_config.clone()) {
match self.get_balance_with_commitment(&pubkey, commitment_config) {
Ok(bal) => {
return Ok(bal.value);
}
@@ -753,8 +855,7 @@ impl RpcClient {
) -> Option<u64> {
const LAST: usize = 30;
for run in 0..LAST {
let balance_result =
self.poll_get_balance_with_commitment(pubkey, commitment_config.clone());
let balance_result = self.poll_get_balance_with_commitment(pubkey, commitment_config);
if expected_balance.is_none() {
return balance_result.ok();
}
@@ -788,7 +889,7 @@ impl RpcClient {
let now = Instant::now();
loop {
if let Ok(Some(_)) =
self.get_signature_status_with_commitment(&signature, commitment_config.clone())
self.get_signature_status_with_commitment(&signature, commitment_config)
{
break;
}
@@ -804,36 +905,6 @@ impl RpcClient {
Ok(())
}
/// Check a signature in the bank.
pub fn check_signature(&self, signature: &Signature) -> bool {
trace!("check_signature: {:?}", signature);
for _ in 0..30 {
let response =
self.confirm_transaction_with_commitment(signature, CommitmentConfig::recent());
match response {
Ok(Response {
value: signature_status,
..
}) => {
if signature_status {
trace!("Response found signature");
} else {
trace!("Response signature not found");
}
return signature_status;
}
Err(err) => {
debug!("check_signature request failed: {:?}", err);
}
};
sleep(Duration::from_millis(250));
}
panic!("Couldn't check signature of {}", signature);
}
/// Poll the server to confirm a transaction.
pub fn poll_for_signature_confirmation(
&self,
@@ -914,6 +985,35 @@ impl RpcClient {
&self,
transaction: &Transaction,
) -> ClientResult<Signature> {
self.send_and_confirm_transaction_with_spinner_and_config(
transaction,
CommitmentConfig::default(),
RpcSendTransactionConfig::default(),
)
}
pub fn send_and_confirm_transaction_with_spinner_and_commitment(
&self,
transaction: &Transaction,
commitment: CommitmentConfig,
) -> ClientResult<Signature> {
self.send_and_confirm_transaction_with_spinner_and_config(
transaction,
commitment,
RpcSendTransactionConfig::default(),
)
}
pub fn send_and_confirm_transaction_with_spinner_and_config(
&self,
transaction: &Transaction,
commitment: CommitmentConfig,
config: RpcSendTransactionConfig,
) -> ClientResult<Signature> {
let desired_confirmations = match commitment.commitment {
CommitmentLevel::Max | CommitmentLevel::Root => MAX_LOCKOUT_HISTORY + 1,
_ => 1,
};
let mut confirmations = 0;
let progress_bar = new_spinner_progress_bar();
@@ -922,13 +1022,11 @@ impl RpcClient {
let signature = loop {
progress_bar.set_message(&format!(
"[{}/{}] Finalizing transaction {}",
confirmations,
MAX_LOCKOUT_HISTORY + 1,
transaction.signatures[0],
confirmations, desired_confirmations, transaction.signatures[0],
));
let mut status_retries = 15;
let (signature, status) = loop {
let signature = self.send_transaction(transaction)?;
let signature = self.send_transaction_with_config(transaction, config)?;
// Get recent commitment in order to count confirmations for successful transactions
let status = self
@@ -978,17 +1076,30 @@ impl RpcClient {
};
let now = Instant::now();
loop {
// Return when default (max) commitment is reached
// Failed transactions have already been eliminated, `is_some` check is sufficient
if self.get_signature_status(&signature)?.is_some() {
progress_bar.set_message("Transaction confirmed");
progress_bar.finish_and_clear();
return Ok(signature);
match commitment.commitment {
CommitmentLevel::Max | CommitmentLevel::Root =>
// Return when default (max) commitment is reached
// Failed transactions have already been eliminated, `is_some` check is sufficient
{
if self.get_signature_status(&signature)?.is_some() {
progress_bar.set_message("Transaction confirmed");
progress_bar.finish_and_clear();
return Ok(signature);
}
}
_ => {
// Return when one confirmation has been reached
if confirmations >= desired_confirmations {
progress_bar.set_message("Transaction reached commitment");
progress_bar.finish_and_clear();
return Ok(signature);
}
}
}
progress_bar.set_message(&format!(
"[{}/{}] Finalizing transaction {}",
confirmations + 1,
MAX_LOCKOUT_HISTORY + 1,
desired_confirmations,
signature,
));
sleep(Duration::from_millis(500));
@@ -1039,6 +1150,31 @@ pub fn get_rpc_request_str(rpc_addr: SocketAddr, tls: bool) -> String {
}
}
fn parse_keyed_accounts(
accounts: Vec<RpcKeyedAccount>,
request: RpcRequest,
) -> ClientResult<Vec<(Pubkey, Account)>> {
let mut pubkey_accounts: Vec<(Pubkey, Account)> = Vec::new();
for RpcKeyedAccount { pubkey, account } in accounts.into_iter() {
let pubkey = pubkey.parse().map_err(|_| {
ClientError::new_with_request(
RpcError::ParseError("Pubkey".to_string()).into(),
request,
)
})?;
pubkey_accounts.push((
pubkey,
account.decode().ok_or_else(|| {
ClientError::new_with_request(
RpcError::ParseError("Account from rpc".to_string()).into(),
request,
)
})?,
));
}
Ok(pubkey_accounts)
}
#[cfg(test)]
mod tests {
use super::*;
@@ -1192,28 +1328,6 @@ mod tests {
}
}
#[test]
fn test_resign_transaction() {
let rpc_client = RpcClient::new_mock("succeeds".to_string());
let key = Keypair::new();
let to = Pubkey::new_rand();
let blockhash: Hash = "HUu3LwEzGRsUkuJS121jzkPJW39Kq62pXCTmTa1F9jDL"
.parse()
.unwrap();
let prev_tx = system_transaction::transfer(&key, &to, 50, blockhash);
let mut tx = system_transaction::transfer(&key, &to, 50, blockhash);
rpc_client.resign_transaction(&mut tx, &[&key]).unwrap();
assert_ne!(prev_tx, tx);
assert_ne!(prev_tx.signatures, tx.signatures);
assert_ne!(
prev_tx.message().recent_blockhash,
tx.message().recent_blockhash
);
}
#[test]
fn test_rpc_client_thread() {
let rpc_client = RpcClient::new_mock("succeeds".to_string());

View File

@@ -1,4 +1,6 @@
use solana_sdk::commitment_config::CommitmentConfig;
use crate::rpc_filter::RpcFilterType;
use solana_account_decoder::{UiAccountEncoding, UiDataSliceConfig};
use solana_sdk::{clock::Epoch, commitment_config::CommitmentConfig};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
@@ -6,7 +8,13 @@ pub struct RpcSignatureStatusConfig {
pub search_transaction_history: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[derive(Debug, Default, Clone, Copy, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpcSendTransactionConfig {
pub skip_preflight: bool,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpcSimulateTransactionConfig {
pub sig_verify: bool,
@@ -26,3 +34,42 @@ pub struct RpcLargestAccountsConfig {
pub commitment: Option<CommitmentConfig>,
pub filter: Option<RpcLargestAccountsFilter>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpcStakeConfig {
pub epoch: Option<Epoch>,
#[serde(flatten)]
pub commitment: Option<CommitmentConfig>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpcAccountInfoConfig {
pub encoding: Option<UiAccountEncoding>,
pub data_slice: Option<UiDataSliceConfig>,
#[serde(flatten)]
pub commitment: Option<CommitmentConfig>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpcProgramAccountsConfig {
pub filters: Option<Vec<RpcFilterType>>,
#[serde(flatten)]
pub account_config: RpcAccountInfoConfig,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum RpcTokenAccountsFilter {
Mint(String),
ProgramId(String),
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpcGetConfirmedSignaturesForAddress2Config {
pub before: Option<String>, // Signature as base-58 string
pub limit: Option<usize>,
}

143
client/src/rpc_filter.rs Normal file
View File

@@ -0,0 +1,143 @@
use thiserror::Error;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum RpcFilterType {
DataSize(u64),
Memcmp(Memcmp),
}
impl RpcFilterType {
pub fn verify(&self) -> Result<(), RpcFilterError> {
match self {
RpcFilterType::DataSize(_) => Ok(()),
RpcFilterType::Memcmp(compare) => {
let encoding = compare.encoding.as_ref().unwrap_or(&MemcmpEncoding::Binary);
match encoding {
MemcmpEncoding::Binary => {
let MemcmpEncodedBytes::Binary(bytes) = &compare.bytes;
bs58::decode(&bytes)
.into_vec()
.map(|_| ())
.map_err(|e| e.into())
}
}
}
}
}
}
#[derive(Error, Debug)]
pub enum RpcFilterError {
#[error("bs58 decode error")]
DecodeError(#[from] bs58::decode::Error),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum MemcmpEncoding {
Binary,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", untagged)]
pub enum MemcmpEncodedBytes {
Binary(String),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Memcmp {
/// Data offset to begin match
pub offset: usize,
/// Bytes, encoded with specified encoding, or default Binary
pub bytes: MemcmpEncodedBytes,
/// Optional encoding specification
pub encoding: Option<MemcmpEncoding>,
}
impl Memcmp {
pub fn bytes_match(&self, data: &[u8]) -> bool {
match &self.bytes {
MemcmpEncodedBytes::Binary(bytes) => {
let bytes = bs58::decode(bytes).into_vec();
if bytes.is_err() {
return false;
}
let bytes = bytes.unwrap();
if self.offset > data.len() {
return false;
}
if data[self.offset..].len() < bytes.len() {
return false;
}
data[self.offset..self.offset + bytes.len()] == bytes[..]
}
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_bytes_match() {
let data = vec![1, 2, 3, 4, 5];
// Exact match of data succeeds
assert!(Memcmp {
offset: 0,
bytes: MemcmpEncodedBytes::Binary(bs58::encode(vec![1, 2, 3, 4, 5]).into_string()),
encoding: None,
}
.bytes_match(&data));
// Partial match of data succeeds
assert!(Memcmp {
offset: 0,
bytes: MemcmpEncodedBytes::Binary(bs58::encode(vec![1, 2]).into_string()),
encoding: None,
}
.bytes_match(&data));
// Offset partial match of data succeeds
assert!(Memcmp {
offset: 2,
bytes: MemcmpEncodedBytes::Binary(bs58::encode(vec![3, 4]).into_string()),
encoding: None,
}
.bytes_match(&data));
// Incorrect partial match of data fails
assert!(!Memcmp {
offset: 0,
bytes: MemcmpEncodedBytes::Binary(bs58::encode(vec![2]).into_string()),
encoding: None,
}
.bytes_match(&data));
// Bytes overrun data fails
assert!(!Memcmp {
offset: 2,
bytes: MemcmpEncodedBytes::Binary(bs58::encode(vec![3, 4, 5, 6]).into_string()),
encoding: None,
}
.bytes_match(&data));
// Offset outside data fails
assert!(!Memcmp {
offset: 6,
bytes: MemcmpEncodedBytes::Binary(bs58::encode(vec![5]).into_string()),
encoding: None,
}
.bytes_match(&data));
// Invalid base-58 fails
assert!(!Memcmp {
offset: 0,
bytes: MemcmpEncodedBytes::Binary("III".to_string()),
encoding: None,
}
.bytes_match(&data));
}
}

View File

@@ -1,4 +1,5 @@
use serde_json::{json, Value};
use solana_sdk::pubkey::Pubkey;
use std::fmt;
use thiserror::Error;
@@ -13,18 +14,22 @@ pub enum RpcRequest {
GetConfirmedBlock,
GetConfirmedBlocks,
GetConfirmedSignaturesForAddress,
GetConfirmedSignaturesForAddress2,
GetConfirmedTransaction,
GetEpochInfo,
GetEpochSchedule,
GetGenesisHash,
GetIdentity,
GetInflation,
GetLargestAccounts,
GetLeaderSchedule,
GetProgramAccounts,
GetRecentBlockhash,
GetFeeCalculatorForBlockhash,
GetFeeRateGovernor,
GetFees,
GetGenesisHash,
GetIdentity,
GetInflationGovernor,
GetInflationRate,
GetLargestAccounts,
GetLeaderSchedule,
GetMinimumBalanceForRentExemption,
GetProgramAccounts,
GetRecentBlockhash,
GetSignatureStatuses,
GetSlot,
GetSlotLeader,
@@ -33,17 +38,20 @@ pub enum RpcRequest {
GetSlotsPerSegment,
GetStoragePubkeysForSlot,
GetSupply,
GetTokenAccountBalance,
GetTokenAccountsByDelegate,
GetTokenAccountsByOwner,
GetTokenSupply,
GetTotalSupply,
GetTransactionCount,
GetVersion,
GetVoteAccounts,
MinimumLedgerSlot,
RegisterNode,
RequestAirdrop,
SendTransaction,
SimulateTransaction,
SignVote,
GetMinimumBalanceForRentExemption,
MinimumLedgerSlot,
}
impl fmt::Display for RpcRequest {
@@ -58,18 +66,22 @@ impl fmt::Display for RpcRequest {
RpcRequest::GetConfirmedBlock => "getConfirmedBlock",
RpcRequest::GetConfirmedBlocks => "getConfirmedBlocks",
RpcRequest::GetConfirmedSignaturesForAddress => "getConfirmedSignaturesForAddress",
RpcRequest::GetConfirmedSignaturesForAddress2 => "getConfirmedSignaturesForAddress2",
RpcRequest::GetConfirmedTransaction => "getConfirmedTransaction",
RpcRequest::GetEpochInfo => "getEpochInfo",
RpcRequest::GetEpochSchedule => "getEpochSchedule",
RpcRequest::GetGenesisHash => "getGenesisHash",
RpcRequest::GetIdentity => "getIdentity",
RpcRequest::GetInflation => "getInflation",
RpcRequest::GetLargestAccounts => "getLargestAccounts",
RpcRequest::GetLeaderSchedule => "getLeaderSchedule",
RpcRequest::GetProgramAccounts => "getProgramAccounts",
RpcRequest::GetRecentBlockhash => "getRecentBlockhash",
RpcRequest::GetFeeCalculatorForBlockhash => "getFeeCalculatorForBlockhash",
RpcRequest::GetFeeRateGovernor => "getFeeRateGovernor",
RpcRequest::GetFees => "getFees",
RpcRequest::GetGenesisHash => "getGenesisHash",
RpcRequest::GetIdentity => "getIdentity",
RpcRequest::GetInflationGovernor => "getInflationGovernor",
RpcRequest::GetInflationRate => "getInflationRate",
RpcRequest::GetLargestAccounts => "getLargestAccounts",
RpcRequest::GetLeaderSchedule => "getLeaderSchedule",
RpcRequest::GetMinimumBalanceForRentExemption => "getMinimumBalanceForRentExemption",
RpcRequest::GetProgramAccounts => "getProgramAccounts",
RpcRequest::GetRecentBlockhash => "getRecentBlockhash",
RpcRequest::GetSignatureStatuses => "getSignatureStatuses",
RpcRequest::GetSlot => "getSlot",
RpcRequest::GetSlotLeader => "getSlotLeader",
@@ -78,17 +90,20 @@ impl fmt::Display for RpcRequest {
RpcRequest::GetSlotsPerSegment => "getSlotsPerSegment",
RpcRequest::GetStoragePubkeysForSlot => "getStoragePubkeysForSlot",
RpcRequest::GetSupply => "getSupply",
RpcRequest::GetTokenAccountBalance => "getTokenAccountBalance",
RpcRequest::GetTokenAccountsByDelegate => "getTokenAccountsByDelegate",
RpcRequest::GetTokenAccountsByOwner => "getTokenAccountsByOwner",
RpcRequest::GetTokenSupply => "getTokenSupply",
RpcRequest::GetTotalSupply => "getTotalSupply",
RpcRequest::GetTransactionCount => "getTransactionCount",
RpcRequest::GetVersion => "getVersion",
RpcRequest::GetVoteAccounts => "getVoteAccounts",
RpcRequest::MinimumLedgerSlot => "minimumLedgerSlot",
RpcRequest::RegisterNode => "registerNode",
RpcRequest::RequestAirdrop => "requestAirdrop",
RpcRequest::SendTransaction => "sendTransaction",
RpcRequest::SimulateTransaction => "simulateTransaction",
RpcRequest::SignVote => "signVote",
RpcRequest::GetMinimumBalanceForRentExemption => "getMinimumBalanceForRentExemption",
RpcRequest::MinimumLedgerSlot => "minimumLedgerSlot",
};
write!(f, "{}", method)
@@ -98,6 +113,11 @@ impl fmt::Display for RpcRequest {
pub const NUM_LARGEST_ACCOUNTS: usize = 20;
pub const MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS: usize = 256;
pub const MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS_SLOT_RANGE: u64 = 10_000;
pub const MAX_GET_CONFIRMED_BLOCKS_RANGE: u64 = 500_000;
pub const MAX_GET_CONFIRMED_SIGNATURES_FOR_ADDRESS2_LIMIT: usize = 1_000;
// Validators that are this number of slots behind are considered delinquent
pub const DELINQUENT_VALIDATOR_SLOT_DISTANCE: u64 = 128;
impl RpcRequest {
pub(crate) fn build_request_json(self, id: u64, params: Value) -> Value {
@@ -123,31 +143,34 @@ pub enum RpcError {
ForUser(String), /* "direct-to-user message" */
}
#[derive(Serialize, Deserialize)]
pub enum TokenAccountsFilter {
Mint(Pubkey),
ProgramId(Pubkey),
}
#[cfg(test)]
mod tests {
use super::*;
use crate::rpc_config::RpcTokenAccountsFilter;
use solana_sdk::commitment_config::{CommitmentConfig, CommitmentLevel};
#[test]
fn test_build_request_json() {
let test_request = RpcRequest::GetAccountInfo;
let addr = json!("deadbeefXjn8o3yroDHxUtKsZZgoy4GPkPPXfouKNHhx");
let request = test_request.build_request_json(1, json!([addr.clone()]));
let request = test_request.build_request_json(1, json!([addr]));
assert_eq!(request["method"], "getAccountInfo");
assert_eq!(request["params"], json!([addr]));
let test_request = RpcRequest::GetBalance;
let request = test_request.build_request_json(1, json!([addr.clone()]));
let request = test_request.build_request_json(1, json!([addr]));
assert_eq!(request["method"], "getBalance");
let test_request = RpcRequest::GetEpochInfo;
let request = test_request.build_request_json(1, Value::Null);
assert_eq!(request["method"], "getEpochInfo");
let test_request = RpcRequest::GetInflation;
let request = test_request.build_request_json(1, Value::Null);
assert_eq!(request["method"], "getInflation");
let test_request = RpcRequest::GetRecentBlockhash;
let request = test_request.build_request_json(1, Value::Null);
assert_eq!(request["method"], "getRecentBlockhash");
@@ -186,13 +209,23 @@ mod tests {
// Test request with CommitmentConfig and no params
let test_request = RpcRequest::GetRecentBlockhash;
let request = test_request.build_request_json(1, json!([commitment_config.clone()]));
let request = test_request.build_request_json(1, json!([commitment_config]));
assert_eq!(request["params"], json!([commitment_config.clone()]));
// Test request with CommitmentConfig and params
let test_request = RpcRequest::GetBalance;
let request =
test_request.build_request_json(1, json!([addr.clone(), commitment_config.clone()]));
let request = test_request.build_request_json(1, json!([addr, commitment_config]));
assert_eq!(request["params"], json!([addr, commitment_config]));
// Test request with CommitmentConfig and params
let test_request = RpcRequest::GetTokenAccountsByOwner;
let mint = Pubkey::new_rand();
let token_account_filter = RpcTokenAccountsFilter::Mint(mint.to_string());
let request = test_request
.build_request_json(1, json!([addr, token_account_filter, commitment_config]));
assert_eq!(
request["params"],
json!([addr, token_account_filter, commitment_config])
);
}
}

View File

@@ -1,12 +1,13 @@
use crate::{client_error, rpc_request::RpcError};
use crate::client_error;
use solana_account_decoder::{parse_token::UiTokenAmount, UiAccount};
use solana_sdk::{
account::Account,
clock::{Epoch, Slot},
fee_calculator::{FeeCalculator, FeeRateGovernor},
pubkey::Pubkey,
inflation::Inflation,
transaction::{Result, TransactionError},
};
use std::{collections::HashMap, net::SocketAddr, str::FromStr};
use solana_transaction_status::ConfirmedTransactionStatusWithSignature;
use std::{collections::HashMap, net::SocketAddr};
pub type RpcResult<T> = client_error::Result<Response<T>>;
@@ -35,6 +36,14 @@ pub struct RpcBlockhashFeeCalculator {
pub fee_calculator: FeeCalculator,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcFees {
pub blockhash: String,
pub fee_calculator: FeeCalculator,
pub last_valid_slot: Slot,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcFeeCalculator {
@@ -47,11 +56,42 @@ pub struct RpcFeeRateGovernor {
pub fee_rate_governor: FeeRateGovernor,
}
#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcInflationGovernor {
pub initial: f64,
pub terminal: f64,
pub taper: f64,
pub foundation: f64,
pub foundation_term: f64,
}
impl From<Inflation> for RpcInflationGovernor {
fn from(inflation: Inflation) -> Self {
Self {
initial: inflation.initial,
terminal: inflation.terminal,
taper: inflation.taper,
foundation: inflation.foundation,
foundation_term: inflation.foundation_term,
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcInflationRate {
pub total: f64,
pub validator: f64,
pub foundation: f64,
pub epoch: Epoch,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcKeyedAccount {
pub pubkey: String,
pub account: RpcAccount,
pub account: UiAccount,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
@@ -60,43 +100,6 @@ pub struct RpcSignatureResult {
pub err: Option<TransactionError>,
}
/// A duplicate representation of a Message for pretty JSON serialization
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcAccount {
pub lamports: u64,
pub data: String,
pub owner: String,
pub executable: bool,
pub rent_epoch: Epoch,
}
impl RpcAccount {
pub fn encode(account: Account) -> Self {
RpcAccount {
lamports: account.lamports,
data: bs58::encode(account.data.clone()).into_string(),
owner: account.owner.to_string(),
executable: account.executable,
rent_epoch: account.rent_epoch,
}
}
pub fn decode(&self) -> std::result::Result<Account, RpcError> {
Ok(Account {
lamports: self.lamports,
data: bs58::decode(self.data.clone()).into_vec().map_err(|_| {
RpcError::RpcRequestError("Could not parse encoded account data".to_string())
})?,
owner: Pubkey::from_str(&self.owner).map_err(|_| {
RpcError::RpcRequestError("Could not parse encoded account owner".to_string())
})?,
executable: self.executable,
rent_epoch: self.rent_epoch,
})
}
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct RpcContactInfo {
/// Pubkey of the node as a base-58 string
@@ -171,6 +174,13 @@ pub struct RpcSignatureConfirmation {
pub status: Result<()>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcSimulateTransactionResult {
pub err: Option<TransactionError>,
pub logs: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcStorageTurn {
@@ -193,3 +203,54 @@ pub struct RpcSupply {
pub non_circulating: u64,
pub non_circulating_accounts: Vec<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub enum StakeActivationState {
Activating,
Active,
Deactivating,
Inactive,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct RpcStakeActivation {
pub state: StakeActivationState,
pub active: u64,
pub inactive: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct RpcTokenAccountBalance {
pub address: String,
#[serde(flatten)]
pub amount: UiTokenAmount,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RpcConfirmedTransactionStatusWithSignature {
pub signature: String,
pub slot: Slot,
pub err: Option<TransactionError>,
pub memo: Option<String>,
}
impl From<ConfirmedTransactionStatusWithSignature> for RpcConfirmedTransactionStatusWithSignature {
fn from(value: ConfirmedTransactionStatusWithSignature) -> Self {
let ConfirmedTransactionStatusWithSignature {
signature,
slot,
err,
memo,
} = value;
Self {
signature: signature.to_string(),
slot,
err,
memo,
}
}
}

View File

@@ -9,7 +9,7 @@ use log::*;
use solana_sdk::{
account::Account,
client::{AsyncClient, Client, SyncClient},
clock::MAX_PROCESSING_AGE,
clock::{Slot, MAX_PROCESSING_AGE},
commitment_config::CommitmentConfig,
epoch_info::EpochInfo,
fee_calculator::{FeeCalculator, FeeRateGovernor},
@@ -254,37 +254,6 @@ impl ThinClient {
.into())
}
pub fn poll_balance_with_timeout_and_commitment(
&self,
pubkey: &Pubkey,
polling_frequency: &Duration,
timeout: &Duration,
commitment_config: CommitmentConfig,
) -> TransportResult<u64> {
self.rpc_client()
.poll_balance_with_timeout_and_commitment(
pubkey,
polling_frequency,
timeout,
commitment_config,
)
.map_err(|e| e.into())
}
pub fn poll_balance_with_timeout(
&self,
pubkey: &Pubkey,
polling_frequency: &Duration,
timeout: &Duration,
) -> TransportResult<u64> {
self.poll_balance_with_timeout_and_commitment(
pubkey,
polling_frequency,
timeout,
CommitmentConfig::default(),
)
}
pub fn poll_get_balance(&self, pubkey: &Pubkey) -> TransportResult<u64> {
self.poll_get_balance_with_commitment(pubkey, CommitmentConfig::default())
}
@@ -330,12 +299,6 @@ impl ThinClient {
.map_err(|e| e.into())
}
/// Check a signature in the bank. This method blocks
/// until the server sends a response.
pub fn check_signature(&self, signature: &Signature) -> bool {
self.rpc_client().check_signature(signature)
}
pub fn validator_exit(&self) -> TransportResult<bool> {
self.rpc_client().validator_exit().map_err(|e| e.into())
}
@@ -357,7 +320,7 @@ impl Client for ThinClient {
}
impl SyncClient for ThinClient {
fn send_message<T: Signers>(
fn send_and_confirm_message<T: Signers>(
&self,
keypairs: &T,
message: Message,
@@ -368,16 +331,16 @@ impl SyncClient for ThinClient {
Ok(signature)
}
fn send_instruction(
fn send_and_confirm_instruction(
&self,
keypair: &Keypair,
instruction: Instruction,
) -> TransportResult<Signature> {
let message = Message::new(&[instruction]);
self.send_message(&[keypair], message)
let message = Message::new(&[instruction], Some(&keypair.pubkey()));
self.send_and_confirm_message(&[keypair], message)
}
fn transfer(
fn transfer_and_confirm(
&self,
lamports: u64,
keypair: &Keypair,
@@ -385,7 +348,7 @@ impl SyncClient for ThinClient {
) -> TransportResult<Signature> {
let transfer_instruction =
system_instruction::transfer(&keypair.pubkey(), pubkey, lamports);
self.send_instruction(keypair, transfer_instruction)
self.send_and_confirm_instruction(keypair, transfer_instruction)
}
fn get_account_data(&self, pubkey: &Pubkey) -> TransportResult<Option<Vec<u8>>> {
@@ -427,13 +390,15 @@ impl SyncClient for ThinClient {
}
fn get_recent_blockhash(&self) -> TransportResult<(Hash, FeeCalculator)> {
self.get_recent_blockhash_with_commitment(CommitmentConfig::default())
let (blockhash, fee_calculator, _last_valid_slot) =
self.get_recent_blockhash_with_commitment(CommitmentConfig::default())?;
Ok((blockhash, fee_calculator))
}
fn get_recent_blockhash_with_commitment(
&self,
commitment_config: CommitmentConfig,
) -> TransportResult<(Hash, FeeCalculator)> {
) -> TransportResult<(Hash, FeeCalculator, Slot)> {
let index = self.optimizer.experiment();
let now = Instant::now();
let recent_blockhash =
@@ -441,7 +406,7 @@ impl SyncClient for ThinClient {
match recent_blockhash {
Ok(Response { value, .. }) => {
self.optimizer.report(index, duration_as_ms(&now.elapsed()));
Ok(value)
Ok((value.0, value.1, value.2))
}
Err(e) => {
self.optimizer.report(index, std::u64::MAX);
@@ -609,7 +574,7 @@ impl AsyncClient for ThinClient {
instruction: Instruction,
recent_blockhash: Hash,
) -> TransportResult<Signature> {
let message = Message::new(&[instruction]);
let message = Message::new(&[instruction], Some(&keypair.pubkey()));
self.async_send_message(&[keypair], message, recent_blockhash)
}
fn async_transfer(

View File

@@ -1,12 +1,12 @@
[package]
name = "solana-core"
description = "Blockchain, Rebuilt for Scale"
version = "1.2.0"
version = "1.3.2"
documentation = "https://docs.rs/solana"
homepage = "https://solana.com/"
readme = "../README.md"
repository = "https://github.com/solana-labs/solana"
authors = ["Solana Maintainers <maintainers@solana.com>"]
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
license = "Apache-2.0"
edition = "2018"
@@ -14,71 +14,81 @@ edition = "2018"
codecov = { repository = "solana-labs/solana", branch = "master", service = "github" }
[dependencies]
bincode = "1.2.1"
bincode = "1.3.1"
bv = { version = "0.11.1", features = ["serde"] }
bs58 = "0.3.1"
byteorder = "1.3.4"
chrono = { version = "0.4.11", features = ["serde"] }
core_affinity = "0.5.10"
crossbeam-channel = "0.4"
ed25519-dalek = "=1.0.0-pre.4"
fs_extra = "1.1.0"
flate2 = "1.0"
indexmap = "1.3"
indexmap = "1.4"
itertools = "0.9.0"
jsonrpc-core = "14.1.0"
jsonrpc-core-client = { version = "14.1.0", features = ["ws"] }
jsonrpc-derive = "14.1.0"
jsonrpc-http-server = "14.1.0"
jsonrpc-pubsub = "14.1.0"
jsonrpc-ws-server = "14.1.0"
jsonrpc-core = "14.2.0"
jsonrpc-core-client = { version = "14.2.0", features = ["ws"] }
jsonrpc-derive = "14.2.1"
jsonrpc-http-server = "14.2.0"
jsonrpc-pubsub = "14.2.0"
jsonrpc-ws-server = "14.2.0"
log = "0.4.8"
num_cpus = "1.13.0"
num-traits = "0.2"
rand = "0.7.0"
rand_chacha = "0.2.2"
rayon = "1.3.0"
regex = "1.3.7"
serde = "1.0.110"
raptorq = "1.4.2"
rayon = "1.3.1"
regex = "1.3.9"
serde = "1.0.112"
serde_derive = "1.0.103"
serde_json = "1.0.53"
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.2.0" }
solana-budget-program = { path = "../programs/budget", version = "1.2.0" }
solana-clap-utils = { path = "../clap-utils", version = "1.2.0" }
solana-client = { path = "../client", version = "1.2.0" }
solana-transaction-status = { path = "../transaction-status", version = "1.2.0" }
solana-faucet = { path = "../faucet", version = "1.2.0" }
ed25519-dalek = "=1.0.0-pre.3"
solana-ledger = { path = "../ledger", version = "1.2.0" }
solana-logger = { path = "../logger", version = "1.2.0" }
solana-merkle-tree = { path = "../merkle-tree", version = "1.2.0" }
solana-metrics = { path = "../metrics", version = "1.2.0" }
solana-measure = { path = "../measure", version = "1.2.0" }
solana-net-utils = { path = "../net-utils", version = "1.2.0" }
solana-perf = { path = "../perf", version = "1.2.0" }
solana-runtime = { path = "../runtime", version = "1.2.0" }
solana-sdk = { path = "../sdk", version = "1.2.0" }
solana-stake-program = { path = "../programs/stake", version = "1.2.0" }
solana-streamer = { path = "../streamer", version = "1.2.0" }
solana-version = { path = "../version", version = "1.2.0" }
solana-vote-program = { path = "../programs/vote", version = "1.2.0" }
solana-vote-signer = { path = "../vote-signer", version = "1.2.0" }
solana-sys-tuner = { path = "../sys-tuner", version = "1.2.0" }
serde_json = "1.0.56"
solana-account-decoder = { path = "../account-decoder", version = "1.3.2" }
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.3.2" }
solana-budget-program = { path = "../programs/budget", version = "1.3.2" }
solana-clap-utils = { path = "../clap-utils", version = "1.3.2" }
solana-client = { path = "../client", version = "1.3.2" }
solana-faucet = { path = "../faucet", version = "1.3.2" }
solana-genesis-programs = { path = "../genesis-programs", version = "1.3.2" }
solana-ledger = { path = "../ledger", version = "1.3.2" }
solana-logger = { path = "../logger", version = "1.3.2" }
solana-merkle-tree = { path = "../merkle-tree", version = "1.3.2" }
solana-metrics = { path = "../metrics", version = "1.3.2" }
solana-measure = { path = "../measure", version = "1.3.2" }
solana-net-utils = { path = "../net-utils", version = "1.3.2" }
solana-perf = { path = "../perf", version = "1.3.2" }
solana-runtime = { path = "../runtime", version = "1.3.2" }
solana-sdk = { path = "../sdk", version = "1.3.2" }
solana-sdk-macro-frozen-abi = { path = "../sdk/macro-frozen-abi", version = "1.3.2" }
solana-stake-program = { path = "../programs/stake", version = "1.3.2" }
solana-storage-bigtable = { path = "../storage-bigtable", version = "1.3.2" }
solana-streamer = { path = "../streamer", version = "1.3.2" }
solana-sys-tuner = { path = "../sys-tuner", version = "1.3.2" }
solana-transaction-status = { path = "../transaction-status", version = "1.3.2" }
solana-version = { path = "../version", version = "1.3.2" }
solana-vote-program = { path = "../programs/vote", version = "1.3.2" }
solana-vote-signer = { path = "../vote-signer", version = "1.3.2" }
spl-token-v1-0 = { package = "spl-token", version = "1.0.6", features = ["skip-no-mangle"] }
tempfile = "3.1.0"
thiserror = "1.0"
tokio = "0.1"
tokio-codec = "0.1"
tokio-fs = "0.1"
tokio-io = "0.1"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.2.0" }
tokio_01 = { version = "0.1", package = "tokio" }
tokio_fs_01 = { version = "0.1", package = "tokio-fs" }
tokio_io_01 = { version = "0.1", package = "tokio-io" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.3.2" }
tokio = { version = "0.2.22", features = ["full"] }
trees = "0.2.1"
[dev-dependencies]
base64 = "0.12.3"
matches = "0.1.6"
reqwest = { version = "0.10.4", default-features = false, features = ["blocking", "rustls-tls", "json"] }
reqwest = { version = "0.10.6", default-features = false, features = ["blocking", "rustls-tls", "json"] }
serial_test = "0.4.0"
serial_test_derive = "0.4.0"
systemstat = "0.1.5"
[build-dependencies]
rustc_version = "0.2"
[[bench]]
name = "banking_stage"

View File

@@ -19,6 +19,7 @@ use solana_perf::test_tx::test_tx;
use solana_runtime::bank::Bank;
use solana_sdk::genesis_config::GenesisConfig;
use solana_sdk::hash::Hash;
use solana_sdk::message::Message;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::Keypair;
use solana_sdk::signature::Signature;
@@ -72,6 +73,7 @@ fn bench_consume_buffered(bencher: &mut Bencher) {
let batch_len = batch.packets.len();
packets.push((batch, vec![0usize; batch_len]));
}
let (s, _r) = unbounded();
// This tests the performance of buffering packets.
// If the packet buffers are copied, performance will be poor.
bencher.iter(move || {
@@ -81,6 +83,7 @@ fn bench_consume_buffered(bencher: &mut Bencher) {
&mut packets,
10_000,
None,
&s,
);
});
@@ -109,7 +112,6 @@ fn make_accounts_txs(txes: usize, mint_keypair: &Keypair, hash: Hash) -> Vec<Tra
fn make_programs_txs(txes: usize, hash: Hash) -> Vec<Transaction> {
let progs = 4;
(0..txes)
.into_iter()
.map(|_| {
let mut instructions = vec![];
let from_key = Keypair::new();
@@ -117,9 +119,8 @@ fn make_programs_txs(txes: usize, hash: Hash) -> Vec<Transaction> {
let to_key = Pubkey::new_rand();
instructions.push(system_instruction::transfer(&from_key.pubkey(), &to_key, 1));
}
let mut new = Transaction::new_unsigned_instructions(&instructions);
new.sign(&[&from_key], hash);
new
let message = Message::new(&instructions, Some(&from_key.pubkey()));
Transaction::new(&[&from_key], message, hash)
})
.collect()
}
@@ -181,7 +182,7 @@ fn bench_banking(bencher: &mut Bencher, tx_type: TransactionType) {
assert!(r.is_ok(), "sanity parallel execution");
}
bank.clear_signatures();
let verified: Vec<_> = to_packets_chunked(&transactions.clone(), PACKETS_PER_BATCH);
let verified: Vec<_> = to_packets_chunked(&transactions, PACKETS_PER_BATCH);
let ledger_path = get_tmp_ledger_path!();
{
let blockstore = Arc::new(
@@ -191,12 +192,14 @@ fn bench_banking(bencher: &mut Bencher, tx_type: TransactionType) {
create_test_recorder(&bank, &blockstore, None);
let cluster_info = ClusterInfo::new_with_invalid_keypair(Node::new_localhost().info);
let cluster_info = Arc::new(cluster_info);
let (s, _r) = unbounded();
let _banking_stage = BankingStage::new(
&cluster_info,
&poh_recorder,
verified_receiver,
vote_receiver,
None,
s,
);
poh_recorder.lock().unwrap().set_bank(&bank);
@@ -207,7 +210,7 @@ fn bench_banking(bencher: &mut Bencher, tx_type: TransactionType) {
// If it is dropped before poh_service, then poh_service will error when
// calling send() on the channel.
let signal_receiver = Arc::new(signal_receiver);
let signal_receiver2 = signal_receiver.clone();
let signal_receiver2 = signal_receiver;
bencher.iter(move || {
let now = Instant::now();
let mut sent = 0;
@@ -262,7 +265,7 @@ fn simulate_process_entries(
mint_keypair: &Keypair,
mut tx_vector: Vec<Transaction>,
genesis_config: &GenesisConfig,
keypairs: &Vec<Keypair>,
keypairs: &[Keypair],
initial_lamports: u64,
num_accounts: usize,
) {
@@ -288,7 +291,7 @@ fn simulate_process_entries(
hash: next_hash(&bank.last_blockhash(), 1, &tx_vector),
transactions: tx_vector,
};
process_entries(&bank, &vec![entry], randomize_txs, None).unwrap();
process_entries(&bank, &[entry], randomize_txs, None, None).unwrap();
}
fn bench_process_entries(randomize_txs: bool, bencher: &mut Bencher) {

View File

@@ -1,6 +1,4 @@
#![feature(test)]
use rand;
extern crate solana_ledger;
extern crate test;

View File

@@ -3,6 +3,7 @@
extern crate test;
use rand::{thread_rng, Rng};
use solana_core::broadcast_stage::broadcast_metrics::TransmitShredsStats;
use solana_core::broadcast_stage::{broadcast_shreds, get_broadcast_peers};
use solana_core::cluster_info::{ClusterInfo, Node};
use solana_core::contact_info::ContactInfo;
@@ -21,7 +22,7 @@ fn broadcast_shreds_bench(bencher: &mut Bencher) {
solana_logger::setup();
let leader_pubkey = Pubkey::new_rand();
let leader_info = Node::new_localhost_with_pubkey(&leader_pubkey);
let cluster_info = ClusterInfo::new_with_invalid_keypair(leader_info.info.clone());
let cluster_info = ClusterInfo::new_with_invalid_keypair(leader_info.info);
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
const NUM_SHREDS: usize = 32;
@@ -36,7 +37,7 @@ fn broadcast_shreds_bench(bencher: &mut Bencher) {
}
let stakes = Arc::new(stakes);
let cluster_info = Arc::new(cluster_info);
let (peers, peers_and_stakes) = get_broadcast_peers(&cluster_info, Some(stakes.clone()));
let (peers, peers_and_stakes) = get_broadcast_peers(&cluster_info, Some(stakes));
let shreds = Arc::new(shreds);
let last_datapoint = Arc::new(AtomicU64::new(0));
bencher.iter(move || {
@@ -47,7 +48,7 @@ fn broadcast_shreds_bench(bencher: &mut Bencher) {
&peers_and_stakes,
&peers,
&last_datapoint,
&mut 0,
&mut TransmitShredsStats::default(),
)
.unwrap();
});

View File

@@ -12,9 +12,10 @@ const NUM_ENTRIES: usize = 800;
#[bench]
fn bench_poh_verify_ticks(bencher: &mut Bencher) {
solana_logger::setup();
let zero = Hash::default();
let mut cur_hash = hash(&zero.as_ref());
let start = *&cur_hash;
let start_hash = hash(&zero.as_ref());
let mut cur_hash = start_hash;
let mut ticks: Vec<Entry> = Vec::with_capacity(NUM_ENTRIES);
for _ in 0..NUM_ENTRIES {
@@ -22,15 +23,15 @@ fn bench_poh_verify_ticks(bencher: &mut Bencher) {
}
bencher.iter(|| {
ticks.verify(&start);
assert!(ticks.verify(&start_hash));
})
}
#[bench]
fn bench_poh_verify_transaction_entries(bencher: &mut Bencher) {
let zero = Hash::default();
let mut cur_hash = hash(&zero.as_ref());
let start = *&cur_hash;
let start_hash = hash(&zero.as_ref());
let mut cur_hash = start_hash;
let keypair1 = Keypair::new();
let pubkey1 = keypair1.pubkey();
@@ -42,6 +43,6 @@ fn bench_poh_verify_transaction_entries(bencher: &mut Bencher) {
}
bencher.iter(|| {
ticks.verify(&start);
assert!(ticks.verify(&start_hash));
})
}

Some files were not shown because too many files have changed in this diff Show More