solana/scripts
Greg Fitzgerald e09f517094
Add solana-tokens (#10011)
* Initial commit

* Execute transfers

* Refactor for testing

* Cleanup readme

* Rewrite

* Cleanup

* Cleanup

* Cleanup client

* Use a Null Client to move prints closer to where messages are sent

* Upgrade Solana

* Move core functionality into its own module

* Handle transaction errors

* Merge allocations

* Fixes

* Cleanup readme

* Fix markdown

* Add example input

* Add integration test - currently fails

* Add integration test

* Add metrics

* Use RpcClient in dry-run, just don't send messages

* More metrics

* Fix dry run with no keys

* Only require one approval if fee-payer is the sender keypair

* Fix bugs

* Don't create the transaction log if nothing to put into it;
  otherwise the next innvocation won't add the header

* Apply previous transactions to allocations with matching recipients

* Bail out of any account already has a balance

* Polish

* Add new 'balances' command

* 9 decimal places

* Add missing file

* Better dry-run; keypair options now optional

* Change field name from 'bid' to 'accepted'

Also, tolerate precision change from 2 decimal places to 4

* Write to transaction log immediately

* Rename allocations_csv to bids_csv

So that we can bypass bids_csv with an allocations CSV file

* Upgrade Solana

* Remove faucet from integration test

* Cleaner integration test

Won't work until this lands and is released:

https://github.com/solana-labs/solana/pull/9717

* Update README

* Add TravicCI script to build and test (#1)

* Add distribute-stake command (#2)

* Distribute -> DistributeTokens (#3)

* Cache cargo deps (#4)

* Add docs (#5)

* Switch to latest Solana 1.1 release (#7)

* distribute -> distribute-tokens (#9)

* Switch from CSV to a pickledb database (#8)

* Switch from CSV to a pickledb database

* Allow PickleDb errors to bubble up

* Dedup

* Hoist db

* Add finalized field to TransactionInfo

* Don't allow RPC client to resign transactions

* Remove dead code

* Use transport::Result

* Record unconfirmed transaction

* Fix: separate stake account per allocation

* Catch transport errors

* Panic if we attempt to replay a transaction that hasn't been finalized

* Attempt to fix CI

PickleDb isn't calling flush() or close() after writing to files.
No issue on MacOS, but looks racy in CI.

* Revert "Attempt to fix CI"

This reverts commit 1632394f636c54402b3578120e8817dd1660e19b.

* Poll for signature before returning

* Add --sol-for-fees option for stake distributions

* Add --allocations-csv option (#14)

* Add allocations-csv option

* Add tests or GTFO

* Apply review feedback

* apply feedback

* Add read_allocations function

* Update arg_parser.rs

* Fix balances command (#17)

* Fix balances command

* Fix readme

* Add --force to transfer to non-empty accounts (#18)

* Add --no-wait (#16)

* Add ThinClient methods to implement --no-wait

* Plumb --no-wait through

No tests yet

* Check transaction status on startup

* Easier to test

* Wait until transaction is finalized before checking if it failed with an error

It's possible that a minority fork thinks it failed.

* Add unit tests

* Remove dead code and rustfmt

* Don't flush database to file if doing a dry-run

* Continue when transactions not yet finalized (#20)

If those transactions are dropped, the next run will execute them.

* Return the number of confirmations (#21)

* Add read_allocations() unit-test (#22)

Delete the copy-pasted top-level test.

Fixes #19

* Add a CSV printer (#23)

* Remove all the copypasta (#24)

* Move resolve_distribute_stake_args into its own function

* Add stake args to token args

* Unify option names

* Move Command::DistributeStake into DistributeTokens

* Remove process_distribute_stake

* Only unique signers

* Use sender keypair to fund new fee-payer accounts

* Unify distribute_tokens and distribute_stake

* Rename print-database command to transaction-log (#25)

* Send all transactions as quickly as possible, then wait (#26)

* Send all transactions as quickly as possible, then wait

* Exit when finalized or blockhashes have expired

* Don't need blockhash in the CSV output

* Better types

CSV library was choking on Pubkey as a type. PickleDb doesn't have that problem.

* Resend if blockhash has not expired

* Attempt to fix CI

* Move log to stderr

* Add constructor, tuck away client (#30)

* Add constructor, tuck away client

* Fix unwrap() caught by CI

* Fix optional option flagged as required

* Bunch of cleanup (#31)

* Remove untested --no-wait feature

* Make --transactions-db an option, not an arg

So that in the future, we can make it optional

* Remove more untested features

Too many false positives in that santity check.  Use --dry-run
instead.

* Add dry-run mode to ThinClient

* Cleaner dry-run

* Make key parameters required

Just don't use them in --dry-run

* Add option to write the transaction log

--dry-run doesn't write to the database. Use this option if you
want a copy of the transaction log before the final run.

* Revert --transaction-log addition

Implement #27 first

* Fix CI

* Update readme

* Fix CI in copypasta

* Sort transaction log by finalized date (#33)

* Make --transaction-db option implicit (#34)

* Move db functionality into its own module (#35)

* Move db functionality into its own module

* Rename tokens module to commands

* Version bump

* Upgrade Solana

* Add solana-tokens to build

* Remove Cargo.lock

* Remove vscode file

* Remove TravisCI build script

* Install solana-tokens

Co-authored-by: Dan Albert <dan@solana.com>
2020-05-13 08:36:30 -06:00
..
src Update to rust 1.40.0 (#7572) 2019-12-19 23:27:54 -08:00
Cargo.toml Bump serde from 1.0.106 to 1.0.110 (#9964) 2020-05-10 16:24:25 -07:00
cargo-for-all-lock-files.sh Reenable move lock files (#9844) 2020-05-01 17:12:51 -07:00
cargo-install-all.sh Add solana-tokens (#10011) 2020-05-13 08:36:30 -06:00
configure-metrics.sh Add support for local metric collection/viewing (#4170) 2019-05-06 16:44:06 -07:00
coverage.sh Fail coverage faster in CI 2020-04-13 21:10:09 -07:00
fd-monitor.sh Add open file descriptor monitoring (#5655) 2019-08-26 15:17:19 -07:00
iftop-postprocess.sh Map all private IP to public IP for log-analyzer (#6907) 2019-11-12 15:48:46 -08:00
iftop.sh Fix limited iftop output and failure to stop iftop (#6723) 2019-11-04 18:12:07 -08:00
increment-cargo-version.sh Properly escape current version (#8686) 2020-03-06 14:36:01 -07:00
metrics-write-datapoint.sh Fix date formatting to work on Mac OS (#6214) 2019-10-02 14:44:52 -07:00
net-shaper.sh Fix partition setup (#9386) 2020-04-09 01:57:18 -07:00
net-stats.sh set -e shuffling 2018-11-11 16:24:36 -08:00
netem.sh Apply netem packet rules to only UDP traffic (#6754) 2019-11-05 18:34:04 -08:00
oom-monitor.sh earlyoom: Stop using unsupported -k option (#4096) 2019-05-01 11:29:02 -07:00
oom-score-adj.sh
perf-plot.py
perf-stats.py
set-log-filter.sh Validator log filter may now be reconfigured at runtime (#5473) 2019-08-10 22:54:46 -07:00
solana-install-deploy.sh Drop :8899 port from http://devnet.solana.com references 2020-03-13 16:00:54 -07:00
solana-install-update-manifest-keypair.sh Fund solana-install deployments from the mint keypair to avoid airdrops (#4997) 2019-07-09 16:45:28 -07:00
system-stats.sh Add gpu resource usage tracking (#7075) 2019-11-21 08:33:02 -08:00
ulimit-n.sh add epoch_schedule sysvar (#6256) 2019-10-08 22:34:26 -07:00
wallet-sanity.sh Write wallet key to explicit file 2020-04-16 13:34:19 -07:00