Commit Graph

330 Commits

Author SHA1 Message Date
Alexander Ray d158bb150c
stake_pool: fix wrong available_for_withdrawal_wo_fee calculation (#2900)
* - fix wrong available_for_withdrawal_wo_fee calculation by prepare_withdraw_accounts

* - fix formatting

* - refactor

* - fix sub issue
2022-02-15 21:45:32 +01:00
Jon Cinque 4dbb4a5bb4
stake-pool-py: Add more waits to solidify tests (#2882) 2022-02-07 22:26:23 +01:00
Jon Cinque 37ba32f7c8
stake-pool-cli: Fix mismatched output fields (#2846) 2022-01-31 20:15:28 +01:00
Jon Cinque 32e77fb390
stake-pool-js: Bump version for release (#2832) 2022-01-29 00:39:28 +01:00
Kabir R b63d368b79
Add stake-pool browser build commands and documentation (#2804)
* Add browser build commands and documentation

* Improve rollup configuration

* Remove unused external import from rollup configuration

* Move from Babel to Typescript plugin

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2022-01-28 19:15:51 +01:00
Jon Cinque c781067b2b
stake-pool-cli: Use old ATA creation instruction (#2819) 2022-01-27 17:50:22 +01:00
Michael Vines 6d62ea6cc7 Drop _program_id 2022-01-24 17:41:47 -08:00
Tyera Eulberg 83c3ffad25
Bump solana crates to v1.9.5 (#2780)
* Bump solana crates to v1.9.5

* Update sol_set_return_data type signature and un-ignore test
2022-01-21 22:52:10 -07:00
Jon Cinque 8ee35d74c1
stake-pool-cli / token-lending-cli: Sign after balance check (#2773) 2022-01-22 01:11:58 +01:00
Jon Cinque 78e7a9538e
associated-token-account: Bump dependent token version to 3.3 (#2766)
* associated-token-account: Bump dependent token version to 3.3

* Fix uses of deprecated instruction
2022-01-21 11:01:06 +01:00
Jon Cinque 81f50127f1
token: Bump version to 3.3.0 (#2765) 2022-01-21 01:47:02 +01:00
Jon Cinque 2e03106ae0
stake-pool-cli: Sign messages before checking fee (#2759) 2022-01-20 14:36:19 +01:00
Jon Cinque 2d770628ef
stake-pool-cli: Add best practices for fees, prevent zero fees (#2670)
* stake-pool-cli: Add best practices for fees, prevent zero fees

* Address feedback
2022-01-11 01:24:16 +01:00
Tyera Eulberg f4e0cae144
Fix up helper to create rent-exempt accounts (#2720) 2022-01-08 15:51:17 -07:00
Dmitri Makarov 65b49073f4
Decrease the stake pool size due to the new mem op syscall base cost (#2705) 2022-01-05 14:26:13 -08:00
Jon Cinque f5f062e1b0
stake-pool-js: Prepare package for release (#2681)
* stake-pool-js: Prepare package for release

* Upgrade node version for new npm

* Regenerate package-lock.json

* Update README, fix build to remove test files
2021-12-30 12:55:09 -05:00
Jon Cinque 6ee008d256
Update SDK to 1.9.2, fix warnings (#2674)
* Update SDK to 1.9.2, fix warnings

* Upgrade honggfuzz

* Use `get_latest_blockhash` correctly
2021-12-28 23:02:47 -05:00
Alexander Ray cd8d79a2b4
[stake-pool] js: web3 stake pool bindings (#2604)
* - add stake-pool-web3-bindings (preview)

* - update readme

* - add tests

* - remove package-lock from foreign project

* - revert changes from foreign project

* - review improvenments

* - refactor regarding review suggestions

* - fix test
- fix readme

* Update stake-pool/js/src/instructions.ts

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* - add withdraw authority as optional parameter

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2021-12-23 13:34:02 -05:00
Jon Cinque 1f4b65153f
Update tests to prepare for `BanksClientError` (#2657)
* Update tests to prepare for `BanksClientError`

* Remove import from record tests
2021-12-23 13:08:06 -05:00
Jon Cinque 8c9f8a0088
stake-pool: Reduce maximum pool size (#2654)
* stake-pool: Reduce huge pool size in tests

* stake-pool: Reduce supported maximum size
2021-12-21 13:10:12 +01:00
Jon Cinque 5aa3b98f2c
stake-pool-cli: Add next fees in verbose mode, fix mapping (#2645) 2021-12-16 14:46:01 +01:00
Jon Cinque ba08b6e662
stake-pool: Mint extra reserve lamports as pool tokens on init (#2636)
* stake-pool: Mint extra reserve lamports as pool tokens on init

* Wait more aggressively in py test

* Simplify test
2021-12-14 18:45:15 +01:00
Jon Cinque 9bda73f37c
stake-pool-cli: Add `deposit-all-stake` command (#2614)
* stake-pool-cli: Add `deposit-all-stake` command

* Improve py test
2021-12-14 02:25:37 +01:00
Jon Cinque d5ac6b883b
stake-pool-py: Add simple rebalance bot (#2630)
* stake-pool-py: Add simple rebalance bot

* Fixup test

* Refactor flaky tests

* Create vote earlier in test

* Duplicate create_vote call causes stall

* Wait more aggressively
2021-12-13 13:17:07 +01:00
Michael Vines 1a0155e34b Update to Rust 1.57.0 2021-12-09 23:56:47 -08:00
Jon Cinque a7888861da
stake-pool-py: Create and deserialize stake pools (#2557)
* stake-pool-py: Create and deserialize stake pools with CI

* Add ability to add / remove validators

* Add vote init instruction for cleaner tests

* Fixup CI

* Add deposit / withdraw sol

* Add update instructions

* Add increase / decrease stake

* Add deposit / withdraw stake
2021-12-10 00:43:25 +01:00
Jon Cinque c24bc966f1
stake-pool-cli: Update input parser to work with ledgers (#2613)
* stake-pool-cli: Update input parser to work with ledgers

* fmt
2021-12-03 01:55:18 +01:00
Jon Cinque 688ee423ed
stake-pool-cli: Fix vote account address in details (#2585) 2021-11-16 21:30:10 +01:00
JulI0-concerto cd63580b79
Implement multiple output format for spl-stake-pool list-all (#2558)
* Implement json output formats for spl-stake-pool list-all

* Implement --output json or json-compact or display in list-all cmd

* cleanup: use destructuring instead of tuple

* Fix related to PR comments

* Add json and json-compact output for list command

* implement list command display with Display and VerboseDisplay

* make CliStakePool->details optional

* cleanup use

* Update stake-pool/cli/src/main.rs

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

* Update stake-pool/cli/src/main.rs

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

* clippished

* fix use

* fix fmt issue

Co-authored-by: Julien Piccaluga <julien.piccaluga@kudelskisecurity.com>
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
2021-11-10 13:06:14 -07:00
Jon Cinque 75ddd9bb22
stake-pool-docs: Rearrange docs, add quickstart guide (#2561)
* stake-pool-docs: Rearrange docs, add quickstart guide

* Rearrange doc sidebar
2021-11-06 12:48:11 +00:00
Jon Cinque 8aef395901
stake-pool: Bump CLI and program version to 0.6.3 (#2555) 2021-11-02 22:15:33 +01:00
Jon Cinque 01765b9953
stake-pool: Reduce wait for active stake merges (#2553)
* stake-pool: Reduce wait to one epoch for active merges

* Remove stake_program references

* Remove credits observed point from docs
2021-11-01 15:14:49 +01:00
Alexander Ray 287c3bedaf
stake-pool-cli: Fix prepare_withdraw_accounts issues (#2548)
* - fix prepare_withdraw_accounts issues

* - use reverse fee as workaround for withdraw issue
2021-10-26 23:13:59 +02:00
Jon Cinque cd3f5ae9fe
stake-pool: Add test for withdrawing all, with fee (#2550) 2021-10-26 22:50:16 +02:00
Jon Cinque 8be3ba819c
stake-pool-docs: Add the published audits (#2546) 2021-10-26 22:30:16 +02:00
Jon Cinque 756696ee8e
stake-pool-cli: Add validator list argument to create (#2545)
People want to know more about the validator list, but there isn't too
much info provided.

* Include the validator list as an optional parameter to pool creation
* Print out the address during creation
* Always print out the address during `list`
* Add docs about it
2021-10-25 23:13:58 +02:00
Michael Vines fca9836a2c Avoid MemcmpEncodedBytes::Binary 2021-10-20 22:52:19 -07:00
Michael Vines 9acb082dc3 Upgrade to Solana v1.8.1 2021-10-20 22:52:19 -07:00
Jon Cinque 4ab60e6794
stake-pool: Also set the sol deposit authority on init (#2532) 2021-10-20 01:45:00 +02:00
Jon Cinque 675d65b965
stake-pool-cli: Add more docs around scripts (#2531) 2021-10-20 01:29:00 +02:00
Jon Cinque 203db7bc3f
stake-pool-cli: Improve deposit and withdraw UX (#2530) 2021-10-19 23:30:41 +02:00
Jon Cinque c5e7ae736e
stake-pool: Add comment to validator stake info field (#2527) 2021-10-19 17:19:10 +02:00
Jon Cinque 1a48523a80
stake-pool: Remove copied stake program code (mostly) (#2526)
* stake-pool: Remove (mostly) the copied stake program

* Remove references to stake_program in CLI
2021-10-19 16:48:56 +02:00
Jon Cinque f95e390dd4
stake-pool: Clarify stake deposit fee (#2520) 2021-10-19 12:26:50 +02:00
Jon Cinque 3b48fa09d3
stake-pool: Cleanup documentation in code (#2525) 2021-10-19 01:50:35 +02:00
Jon Cinque 4658815e9f
stake-pool: Force pools to only use the SPL token program (#2521) 2021-10-19 01:39:57 +02:00
Jon Cinque 7f0278caa8
stake-pool: Add checked math to big vec calc (#2524) 2021-10-19 00:46:49 +02:00
Jon Cinque f97c61a9ed
stake-pool: Initialize all pool fields explicitly (#2523) 2021-10-19 00:46:39 +02:00
Jon Cinque 50b5597fcf
stake-pool: Improve error when overdrawing on decrease (#2522) 2021-10-19 00:45:46 +02:00
Alexander Ray 671590dd05
- reimplement prepare_withdraw_accounts according to the documentation (#2513)
* - reimplement prepare_withdraw_accounts according to the docu

* - add preferred withdraw validator

* - fix clippy issues

* - fix styling
2021-10-15 22:35:44 +02:00
Michael Vines 12732f8d5a Upgrade to Solana 1.8.0 2021-10-12 09:40:06 -07:00
Jon Cinque b8cc6fa12c
stake-pool-cli: Fix funding authority flag name (#2500) 2021-10-12 00:04:35 -04:00
Jon Cinque 13375afff2
stake-pool: Add last epoch values for APR calculation (#2491)
* stake-pool: Add last epoch values for APR calculation

* Bump versions for release
2021-10-07 00:01:15 -04:00
Jon Cinque 3d52925865
stake-pool: Bump version for 0.6.0 release (#2487) 2021-10-06 00:11:20 -04:00
Jon Cinque b80c10f406
stake-pool: Add withdraw-sol command + CLI + docs (#2475)
* stake-pool: plumb sol withdraw fee and authority

* Add sol withdraw instruction and processor

* Cleanup sysvar usage

* Fix stack size violation

* Add tests

* Add CLI support

* Add docs for new command

* Integrate review feedback
2021-10-05 22:44:03 -04:00
Jon Cinque 5337a4f17f
stake-pool: Use `matches!` to allow for fix in underlying error (#2453) 2021-09-26 23:58:30 +02:00
Jon Cinque 006c410534
stake-pool-cli: Update minimum balance to be correct (#2449) 2021-09-24 01:46:37 +02:00
Jon Cinque d8b8aae4f5
stake-pool: Update docs and help messages (#2435)
* stake-pool: Update docs and help messages

* Integrate review feedback
2021-09-23 23:42:25 +02:00
Alexander Ray 11a36d9bd1
- fix "attempt to subtract with overflow" issue (#2445)
* - fix "attempt to subtract with overflow" issue

* Update stake-pool/cli/src/main.rs

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* Update stake-pool/cli/src/main.rs

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* - run cargo fmt on it

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2021-09-22 21:53:32 +02:00
dependabot[bot] a036953d12
build(deps): bump serde_json from 1.0.67 to 1.0.68 (#2416)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.67 to 1.0.68.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.67...v1.0.68)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-15 11:17:56 +00:00
Han Yang 30406eea40
stake-pool: cli fix remove-vsa bug (#2404)
* fix remove-vsa bug: join instructions

* missed &

* pls squash this merge
2021-09-13 14:39:22 +02:00
Jon Cinque 864b7eff0b
stake-pool-cli: Fix sol deposit for private pool (#2399)
* stake-pool-cli: Fix sol deposit for private pool

* cargo fmt
2021-09-10 01:27:43 +02:00
Jon Cinque 562fd6d97f
stake-pool: Bump versions and update id for deployment (#2384) 2021-09-08 13:00:32 +02:00
Jon Cinque 87a5c79347
stake-pool: Reduce minimum stake per validator to 0.001 SOL (#2373)
* stake-pool: Reduce minimum stake per validator to 0.01 SOL

* Lower the limit to 0.001 SOL
2021-09-08 02:10:31 +02:00
Jon Cinque 87b74cfa4c
stake-pool: Combine create stake and add validator (#2371) 2021-09-03 00:54:51 +02:00
Jon Cinque fc0d6a2db7
stake-pool: Split from stake account during removal (#2367)
If the stake pool gives over the validator stake account to the staker,
they may keep it and make it impossible to re-add that validator in the
future.

Split the whole amount into a new stake account on removal.
2021-09-02 01:38:16 +02:00
dependabot[bot] 3fcfb999d1
build(deps): bump serde from 1.0.129 to 1.0.130 (#2361)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.129 to 1.0.130.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.129...v1.0.130)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-31 11:13:17 +00:00
Michael Vines 4406265d4a Upgrade to Solana 1.7.11 2021-08-30 12:41:08 -07:00
dependabot[bot] 7ef3509f51
build(deps): bump serde_json from 1.0.66 to 1.0.67 (#2351)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.66 to 1.0.67.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.66...v1.0.67)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-30 11:32:19 +00:00
dependabot[bot] 1f97833cdd
build(deps): bump serde from 1.0.128 to 1.0.129 (#2322)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.128 to 1.0.129.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.128...v1.0.129)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-24 11:17:42 +00:00
dependabot[bot] 4b7898cb2b
build(deps): bump serde from 1.0.127 to 1.0.128 (#2318)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.127 to 1.0.128.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.127...v1.0.128)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-23 11:29:51 +00:00
Jon Cinque 7c8e65292a
stake-pool: Add seed for transient stake account (#2304)
* stake-pool: Add seed for transient stake account

* Use new functions in CLI

* Put back transient stake seed prefix
2021-08-20 14:15:02 -04:00
jon-chuang 25cc0cffc5
stake-pool: seed suffix to allow creating & discarding multiple transient stake accs (#2298)
* seed suffix to allow creating & discarding multiple transient stake accs

* "suffix"

* fix tests, memcmp and len, reorder struct fields

* remove proptest
2021-08-20 01:14:42 -04:00
Jon Cinque 9799fa1355
stake-pool-cli: Add `list-all` instruction (#2296)
* stake-pool-cli: Add "list-all" command to see all pools

* Cleanup output for withdraw
2021-08-18 00:59:11 -04:00
jon-chuang 4b0f59e9c6
Use stake pool's declared token ID rather than hard-coded (#2286)
* fix

* tests use hard-coded `&spl_token::id()` - fine since we need a baseline

* use spl_token::id
2021-08-17 16:36:32 -04:00
jon-chuang e168a5db92
stake-pool: skip manager fee if invalid account, check new manager fee owned by `spl_token` (#2277)
* fix

* add check if new manager fee is spl token program

* Convert manager fee info check to fail only inside `Result` box

* update also checks validity of manager fee info

* clippy
2021-08-17 16:32:47 -04:00
jon-chuang 494ef1d54e
stake-pool: `DepositStake` only issues tokens for `delegation.stake` + `min(undelegated_stake_rent, additional_lamports)` (#2270)
* charge fees for `sol_deposit_lamports` in `DepositStake` separately

* do not add extra lamports beyond rent

* change name: `additional_lamports`

* fix: put `meta_exempt_reserve` limit on additional lamports instead

* debugging tools

* saturating_add

* make rent quota conditional

* eagerly update total_stake_lamports

* fix tests to reflect increase in `total_staked_lamports`
2021-08-17 16:27:50 -04:00
Han Yang 85f81ae45c
fix stake-pool: preferred validator can be set to validator not part of the pool (#2272)
* deny set preferred validator if validator is about to be removed, add tests

* fix copy paste error

* only allow Active validators to be set to preferred validator

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2021-08-17 16:02:02 -04:00
dependabot[bot] 6900c7815f
build(deps): bump num_enum from 0.5.3 to 0.5.4 (#2293)
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.5.3 to 0.5.4.
- [Release notes](https://github.com/illicitonion/num_enum/releases)
- [Commits](https://github.com/illicitonion/num_enum/compare/0.5.3...0.5.4)

---
updated-dependencies:
- dependency-name: num_enum
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-17 11:15:31 +00:00
Jon Cinque b4b9763a00
stake-pool: Cleanup comments and rename functions (#2283) 2021-08-14 01:15:50 -04:00
jon-chuang 05325a511d
fix (#2278) 2021-08-14 00:30:37 -04:00
Han Yang 11a5551446
fix: stake-pool require signature in SetManager (#2273)
* add check for new_manager's signature in SetManager

* cli arg edit
2021-08-14 00:16:43 -04:00
jon-chuang 974541c158
stake-pool: Update fee changes only once per epoch (#2269)
* fix

* test for withdrawal fee

* merge conflict changes
2021-08-14 00:09:33 -04:00
Jon Cinque c0be064278
stake-pool: Address a few points post-liquid staking (#2252) 2021-08-11 01:33:06 -04:00
jon-chuang 87d88bd078
Stake pool/liquid deposits (rebased on new master) (#2141)
* rename staking instructions

* modify DepositStake te to include manager fees and referrer, continue _stake refactor, referral fees WIP

* initialize with fees, fee application, checks

* inline functions

* temporarily substitute u8 for bool until borsh gets it's * straight

* set deposit fee

* apply deposit and referral fee to liquid deposit_sol too

* add set-deposit-fee, unify cli interface

* set-referral-fee

* full feature set for liquid deposits (?)

* add tests/set_referral_fee.rs

* fix missing serialization in process_set_referral_fee

* remove duplicated test case in tests/set_withdrawal_fee.rs

* tests WIP, numbers dont add up after non-zero deposit fee

* fix error, fix tests

* deposit_sol tests. Requires additional changes to work properly

* simplify deposit_sol tests, add referral fee tests for deposit and deposit_sol

* add `sol_deposit_authority`.

* split deposit_sol() & deposit_sol_with_authority(), cli sol_deposit --from, minor cleanup

* cli deposit-sol from argument should take keypair instead

* commands: set-sol-deposit-authority, show

* cli: pretty print stake pool struct

* chore: comments/naming

* fmt, clippy

* add args for `create-pool`

* mistake in the cli

* `system_prog` is `read_only`, require sig from `stake_deposit_auth`

* change deposit-sol-authority arg to optional acount, rename instruction::withdraw->withdraw_stake, remove unnecesary sys_prog arg for withdraw_stake

* resolve simple nits and suggestions

* cli: change default referrer to user's token receiver account instead of pool manager

* cli: remove show command, add fees to list command, rename pool -> epoch

* update tests for removed unnecessary referral fee account owner check and deposit sol

* cli changes: create ephemeral account for deposit_sol

* specify pool token type for account info name

* add check for manager fee acc in deposit_sol

* Apply suggestions from code review

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* fix non-rebased bug

* SetDepositStakeAuthority

* refactor + tests + cli

* fmt

* clippy

* remove unnecessary comment

* ASK keyword

* unset deposit auth

* combine set fee instructions

* clippy

* applying suggestions

* apply out-of-date check only for FeeTypes that need it

* add fee + user = new tokens check

* Fix test

* Unify `SetDepositAuthority` instruction

* fmt

Co-authored-by: dhy1996 <dhy1996@live.com.sg>
Co-authored-by: Jesse Y. Cho <f8122dac91@gmail.com>
Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2021-08-11 00:15:45 -04:00
Jon Cinque 0d8a248786
stake-pool: Fix zero withdraw calculation (#2251) 2021-08-10 15:56:20 -04:00
Jon Cinque f7384c1fb3
stake-pool: Make it impossible to leech value (#2218) 2021-08-05 10:25:37 -04:00
dependabot[bot] 488af86a78
build(deps): bump num_enum from 0.5.2 to 0.5.3 (#2207)
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.5.2 to 0.5.3.
- [Release notes](https://github.com/illicitonion/num_enum/releases)
- [Commits](https://github.com/illicitonion/num_enum/compare/0.5.2...0.5.3)

---
updated-dependencies:
- dependency-name: num_enum
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-03 11:16:44 +00:00
dependabot[bot] e6a7c0080b
build(deps): bump serde from 1.0.126 to 1.0.127 (#2200)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.126 to 1.0.127.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.126...v1.0.127)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-02 11:15:36 +00:00
dependabot[bot] 4406ffc5b9
build(deps): bump serde_json from 1.0.65 to 1.0.66 (#2187)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.65 to 1.0.66.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.65...v1.0.66)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-30 11:13:27 +00:00
Jon Cinque 2414022606
stake-pool: Don't assess withdrawal fee from fee account (#2180) 2021-07-29 17:56:50 -04:00
Jon Cinque 146b1fa2fe
stake-pool-cli: Fixup help message for decrease-validator-stake (#2179) 2021-07-29 14:40:02 -04:00
dependabot[bot] 6de07fe2c4
build(deps): bump serde_json from 1.0.64 to 1.0.65 (#2160)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.64 to 1.0.65.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.64...v1.0.65)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-29 11:47:23 +00:00
jon-chuang e9e4d36211
Stake pool/withdrawal fee (#2107)
* stake-pool: Add new fee fields for liquid staking and arbitrage

* incorporate withdrawal fee to withdrawal instruction, refactor calculating fees into Fee method

* update withdraw instruction to take manager fee account, revert divide by 0 edge-case removal

* initialize with withdrawal fee, modify integration tests to incorporate withdrawal fee

* extra safety check, prevent divide by 0

* patch Initialize for other tests

* decrease HUGE_POOL_SIZE to fit compute budget

* set_withdrawal_fee, initialize conditions

* Handle current withdrawal fee = 0 case

* add tests for withdrawal fees

* baseline fee increase is explicit constant

* withdrawal_fee for cli for initialize

* fmt, fix cli

* obey clippy

* clean up cli, add increase from 0 tests.

* add cli: set-withdraw-fee

* apply suggestions for code review

* remove 1_000_000 denom limit

* remove denom limit tests, inline, checked muls

* apply suggestions for code review

* referral fee

* tests: use local copy to calculate_withdrawal_fee instead of fetching from chain

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
Co-authored-by: dhy1996 <dhy1996@live.com.sg>
2021-07-25 20:08:16 -04:00
Tyera Eulberg 30fccebdc6
Bump solana crates (#2139) 2021-07-23 16:47:06 +00:00
dependabot[bot] 2556d163ae
build(deps): bump num_enum from 0.5.1 to 0.5.2 (#2119)
Bumps [num_enum](https://github.com/illicitonion/num_enum) from 0.5.1 to 0.5.2.
- [Release notes](https://github.com/illicitonion/num_enum/releases)
- [Commits](https://github.com/illicitonion/num_enum/compare/0.5.1...0.5.2)

---
updated-dependencies:
- dependency-name: num_enum
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-20 23:02:28 +00:00
Jon Cinque ddc029e14d
token: Bump to 3.2.0 everywhere (#2116) 2021-07-20 23:40:32 +02:00
Jon Cinque 5159608d03
stake-pool: Update pool token supply on update, in case of burns (#2108) 2021-07-20 00:36:08 +02:00
Jon Cinque f9c7932f03
stake-pool-cli: Integrate user feedback (#2100)
* Add ATA for pool fee account and more pool info

* stake-pool-cli: Integrate user feedback

* Add more output for `list` command, `-v` gives more info
* Default to the manager's associated token account when creating a pool
2021-07-17 21:11:53 +02:00
Brian Anderson 8fbb54bf5f
Eliminate doc warnings (#2058)
* Add URL autolinks to docs in spl-math

* Autolink URLs in doc comments

* Surround 'account references' doc items with code spans to avoid warnings
2021-07-15 17:58:37 -05:00
Jack May df480b9795
Breakup stake-pool update test transactions (#2084)
* Breakup stake-pool update test transactions

* nudge
2021-07-14 10:26:31 -07:00
Jon Cinque 02397e9152
stake-pool: Add check for delegation stake in add / remove (#2076) 2021-07-13 20:11:39 +02:00
Jon Cinque 151eef0696
Convert `checked_add` to `saturating_add` to fix downstream build (#2055) 2021-07-12 12:50:28 +02:00
Jon Cinque 054d61c6b2
stake-pool: Increase version for crate release, update program id (#2059) 2021-07-10 00:24:24 +02:00
Jon Cinque f35ca3c48c
stake-pool-cli: Address feedback (#2057)
* Fix signer parameters (staker, manager, depositor, fee-payer, and
  token-owner)
* On deposit / withdraw / add / remove validator, show the validator
  stake account and where the stake is going to
2021-07-09 23:56:41 +02:00
Jon Cinque 99a6e95106
stake-pool: Optimizations for 4k validators (#2041)
* In-place serde

* Add cleanup instruction

* Add BigVec tests, clarify lifetimes
2021-07-08 22:50:28 +02:00
Tyera Eulberg 0acc8c8bad
Bump solana and borsh crates (#2015) 2021-07-02 16:53:41 +00:00
dependabot[bot] b565332024
build(deps): bump serde from 1.0.125 to 1.0.126 (#2008)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.125 to 1.0.126.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.125...v1.0.126)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-01 11:57:51 +00:00
dependabot[bot] 2cb2129527
build(deps): bump proptest from 0.10.1 to 1.0.0 (#2007)
Bumps [proptest](https://github.com/altsysrq/proptest) from 0.10.1 to 1.0.0.
- [Release notes](https://github.com/altsysrq/proptest/releases)
- [Changelog](https://github.com/AltSysrq/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/altsysrq/proptest/compare/v0.10.1...1.0.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-01 11:44:21 +00:00
Jon Cinque 8f2c8fa6c8
stake-pool-cli: Add small optimizations for updating faster (#1995)
* stake-pool-cli: Add small optimizations for updating faster

* Cargo fmt

* Light refactor

* Refactor transaction creation / checking

* Rename function
2021-06-30 12:59:23 +02:00
Jon Cinque 66d28b41ff
stake-pool: Add helper scripts for setting up a pool (#1994) 2021-06-29 23:11:08 +02:00
Jon Cinque ac2f9e09a4
stake-pool: Fixup accounting on increase transient account (#1985) 2021-06-29 00:51:54 +02:00
Jon Cinque edf07b1f69
stake-pool: Update version for crate publish (#1967)
Finalize the stake pool struct for when a lockup will eventually be
present.
2021-06-25 21:34:48 +00:00
Jon Cinque 21f8af34e7
Update all solana dependencies to 1.7.3, fix issues (#1958)
* Update all dependencies to 1.7.3, fix issues

* Remove esm from mocha

* Fix missed token test

* Also update rust version

* token-swap: update tolerance on sim test

* Run `cargo clippy --fix` for needless_borrow errors

* Rerun cargo fmt
2021-06-25 00:39:08 +02:00
Jon Cinque 6c9ca0d83d
stake-pool: Use `delegation.stake` for accounting (#1934)
* stake-pool: Use `delegation.stake` for accounting

* Clippy

* Improve test and remove spl-math dependency

* Address smaller review comments

* Fix calculation, improve tests

* Clippy

* Remove esm from mocha

* Revert "Remove esm from mocha"

This reverts commit c0f25ab543c808a1daf3474df4ef851bc994fc6c.
2021-06-24 20:30:59 +02:00
Lieu Zheng Hong 346075743e
stake-pool: Stake pool deserializer (#1656)
* first commit

* add schema for stakepool accounts

* got imports working

* add typescript support

* fix schema

* Change to use PublicKey type

* change to camelCase instead

* add type annotations to typescript classes

* add readme

* Add prettier linting

* add instructions to run

* add test section

* prettier clean up schema.ts

* convert index.js to index.ts

* actually use decode method available in Assignable

* rename stakepoolaccount so i can have a wrapper class

* add new class StakePool and change return type of getStakePoolAccounts

* remove extraneous .js files

* update schema to incorporate jon's comments

* remove unnecessary comments

* add helper functions to get individual accounts; cleaned up code

* add Fee, change denominator/numerator to BN

* Add enums so we can check what type an accountType is

* Remove name and ticker in StakePool class

* fix borshjs import

* change outdir to dist/ folder

* Edit package.json

* add toBuffer for schema.PublicKey

* add exports and default exports to index.ts

* fix trailing comma on tsconfig.json

* get mocha test harness working with ts-node, ts-mocha, esm

* fix borsh import

* clean up imports

* add working test script

* remove unneeded borshjs import

* add unit tests for both decodes (WIP)

* no need to console.log in testOnDevnet since we now have a test suite

* Add tests for ValidatorListAccount.decode

* add schema.decode.StakePoolAccount test

* Finish up

* reduce dependencies in package.json

* Add lint command to package.json

* Lint with prettier

* Update README.md with new commands

* Write explanatory comments in index.js

* Small linting change

* feat: introduce new borshjs deserializeUnchecked import

* lint: npm lint

* refactor: upgrade web3js version

* refactor: refactor type names

* refactor: npm run lint

* refactor: improve tsconfig.json

* feat: add declaration and declarationMap to tsconfig.json

* feat: allow getStakePoolAccounts to more robustly handle errors

* Update stake-pool/js/.gitignore

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* Update stake-pool/js/package.json

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* Update stake-pool/js/package.json

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* Update stake-pool/js/package.json

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* Update stake-pool/js/package.json

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* refactor: modify `constructStakePoolSchema` to mutate in place

* lint: remove webpack.config.js

* lint: npm run lint

* lint: add comments above index.ts

* lint: lowercase schema

* feat: add full deserialization test

* Update stake-pool/js/package.json

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>

* refactor: remove try-catch block in getStakePoolAccounts

* lint: lint

* refactor: use web3js pubkey

* refactor: move integration tests to separate file

* refactor: change test.js to do encode-decode loop

Co-authored-by: Jon Cinque <jon.cinque@gmail.com>
2021-06-23 14:18:45 +02:00
Jon Cinque 702f1478e8
stake-pool: Split transient stake account creation (#1950) 2021-06-22 21:45:47 +00:00
Jon Cinque de693dc219
stake-pool: Fail initializing if mint has a freeze authority (#1949) 2021-06-22 21:38:08 +00:00
Jon Cinque a081c2859b
stake-pool: Wait to apply new fee (#1922)
* Add `next_epoch_fee` field and fix serde

* Only update fee after the epoch is passed

* Update docs
2021-06-15 23:40:14 +00:00
Tyera Eulberg e28af24443 Bump solana version 2021-06-14 16:02:27 -06:00
Jon Cinque ddf9efa330
stake-pool: Add ability to withdraw from transient stakes (#1890)
* stake-pool: Add ability to withdraw from transient stakes

It's possible for a very malicious pool staker to constantly increase /
decrease the stake on validators, making it impossible for people to get
their SOL out.

Update the accounting to know how much of the stake is active and how
much is transient and allow users to withdraw from transient accounts,
but only if there's no more active stake.

* Remove mut ickiness
2021-06-11 20:50:59 +00:00
Jon Cinque 329f9c0912
stake-pool: Add explicit ownership checks (#1868) 2021-06-04 21:45:49 +00:00
Jon Cinque ba99e44bff
stake-pool: Add reserve stake check on update pool balance (#1866) 2021-06-04 23:08:32 +02:00
Jon Cinque 454c75c711
stake-pool: Document writability of validator list (#1867) 2021-06-04 22:15:39 +02:00
Jon Cinque 450b2d511a
stake-pool: Add preferred deposit / withdraw validator accounts (#1831)
* stake-pool: Add set preferred validator instruction

* Add functionality for using the preferred deposit / withdraw

* Add CLI support
2021-06-01 12:45:27 +02:00
Jon Cinque b310c2a163
stake-pool: Add program_id to all instruction ctors (#1814) 2021-05-28 11:46:57 +02:00
Michael Vines ed0389f708 Add forward compatibility with solana-client 1.6.10 2021-05-22 00:00:33 -07:00
Jon Cinque ea98e6bf73
stake-pool: Fix fee calculation (#1764)
* stake-pool: Fix fee calculation

* Remove unwraps, widen one more calc
2021-05-20 11:53:06 +00:00
Jon Cinque d4bbdf8224
stake-pool-cli: Bump version for release (#1713)
* stake-pool-cli: Bump version for release

* Update lock file
2021-05-12 13:20:48 +00:00
Jon Cinque 731bb6f57a
stake-pool: Bump version for release (#1707) 2021-05-11 21:46:49 +00:00
Jon Cinque cebb3176b2
stake-pool: Add helper instruction creators for stake pool integration (#1706)
* stake-pool: Add more instructions for easier usage

* Add extra check (shouldn't be necessary, but who knows?)
2021-05-11 20:48:58 +00:00
Jon Cinque d68608c440
stake-pool: Re-enable tests, avoid warping so much (#1687) 2021-05-10 12:33:56 +00:00
jordansexton f0b1cec4d8 stake-pool: minor typo fix 2021-05-07 13:50:35 -05:00
Trent Nelson 1f36ca301b Bump solana crates to v1.6.7 2021-05-05 04:39:49 +00:00
Jon Cinque 3dd6767297
stake-pool: Update versions for crate deployment (#1657) 2021-05-03 20:50:49 +00:00
Jon Cinque 9c63bc0b06
stake-pool-cli: All sorts of fixes (#1650)
While going back through the docs, I ended up doing a lot of the stake
pool CLI items:

* Deposit / withdraw command: Use associated token account by default
* Create command: Allow passing the stake pool and mint keypair (useful
  for testing)
* Create command: Split the transaction for pool creation (required to get under the
  transaction size limit)
* Add / remove validator command: take a validator vote account rather than stake
  account, which makes integration from outside tools a lot simpler
* Update command: add a `--force` flag to force the update
* Update command: add a `--no-merge` flag to not merge while updating
  (useful to allow the pool to work, even if the transient stake
  accounts are unmergeable)
* Withdraw: Add `--use-reserve` flag to withdraw from reserve
* Withdraw: Add `--vote-account` arg to specify which validator to
  withdraw from
2021-05-03 11:47:24 +02:00
Jon Cinque 11e207cc85
stake-pool: Add user transfer authority on withdraw (#1640)
The stake pool expects pool tokens to be delegated to the withdraw
authority before performing a withdrawal. If a user delegates too many
tokens to the withdraw authority, anyone else can take the rest of their
tokens by doing their own withdrawal.

Delegate pool tokens to an ephemeral keypair and sign with that.
2021-04-27 12:53:46 +00:00
Jon Cinque 14bdbdc3ac
stake-pool: Add ability to remove a validator that has deactivating transient stake (#1624)
* Add status enum

* Add ability to remove validator with transient stake

* Only account validator stake if active

* Fix merge conflicts
2021-04-27 13:24:39 +02:00
Jon Cinque 61a53abf6f
stake-pool: Add ability to withdraw from reserve if no stake available (#1627) 2021-04-23 23:55:16 +02:00
Michael Vines 1e47030549 Update SPL to Solana v1.6.6 2021-04-23 13:39:51 -07:00
Jon Cinque c149b0a46e
stake-pool: Add depositor key on init, required on deposit (#1616)
* stake-pool: Add depositor key on init, required on deposit

Some stake pools need to be private, and not allow outside depositors.

Enhance the existing deposit authority in the stake pool be configurable
on initialization, and then require its signature on deposit.

The existing deposit authority is a program address, making deposits
permissionless. This allows a pool creator to set their own deposit_authority on
initialization. In a great turn of events, almost everything else works
the same way!

Here's the current workflow for deposit, where the user calls
stake_program::authorize and stake_pool::deposit in the same
transaction:

* stake_program::authorize assigns staker and withdraw authority to the
  stake pool deposit authority
* stake_pool::deposit
    - uses the deposit authority to assign authority on the deposited
  stake account to the stake pool withdraw authority
    - uses the withdraw authority to merge the deposited stake into the validator stake

The deposit authority must "sign" the transaction in order to reassign
authority to the withdraw authority. Currently, as a program address, it
can just do that. With this change, if the deposit authority is set
during initialization, then that deposit authority must sign the
instruction.

There's also a little update for ease-of-use to always do the
stake_program::authorize in the same transaction as stake_pool::deposit.
This way, in case someone tries to deposit into a forbidden stake pool, the
whole transaction will bail and their stake will stay as theirs.

* Address review feedback

* Fix rebase issues
2021-04-22 21:34:41 +02:00
Jon Cinque 804a61e558
stake-pool: Increase lower limit for increase-validator-stake (#1620)
* stake-pool: Increase lower limit for increase-validator-stake

* Update test amounts in line with limit
2021-04-22 20:49:30 +02:00
Jon Cinque 3613ffe3b0
hotfix: ignore tests that break with tip of 1.6 (#1622) 2021-04-22 12:30:47 +00:00
Jon Cinque 08c4cb530a
stake-pool-cli: Add increase / decrease validator stake (#1619) 2021-04-22 00:20:35 +00:00
Jon Cinque fdba05714d
stake-pool: Add merging transient stakes in update (#1618)
* Add check for transient stake account activation on removal

* Add proper merging logic during update

* Format + clippy

* Add max possible validators

* Disallow removal for any transient stake state

* Reduce number of accounts for BPF instruction usage
2021-04-22 01:41:15 +02:00
Jon Cinque 53c86493e6
stake-pool: Add reserve stake and decrease / increase validator stake instruction (#1617)
* Add reserve stake account

* Add decrease validator stake instruction

* Cargo fmt

* Add increase instruction

* Add more increase tests

* Fix set fee tests

* Fix clippy in tests

* Add test-bpf feature to increase / decrease tests
2021-04-21 22:20:27 +02:00
Jon Cinque 40ebfc6917
stake-pool: Set fee (#1604)
* stake-pool: Add set_fee instruction

* Add more tests

* Add set-fee CLI instruction

* Update documentation

* Cargo fmt

* Re-format

* Fix clippy
2021-04-21 14:20:55 +02:00
Jon Cinque 30671aa5b3
stake-pool: Rework add / remove validator to not use pool tokens (#1581)
* Rework remove

* Add tests

* Transition to checked math

* Update CLI for new types / instructions

* Cargo fmt

* Rename voter_pubkey -> vote_account_address

* Remove max check

* Update validator balance test
2021-04-21 13:06:43 +02:00
Jon Cinque 71e5e556c4
stake-pool: Assess fee as a percentage of rewards (#1597)
* stake-pool: Collect fee every epoch as proportion of rewards

* Add more complete tests

* Update docs
2021-04-15 12:10:17 +02:00
Jon Cinque 2b3f71ead5
stake-pool: Add rebalancing instruction interface (#1563)
* stake-pool: Add rebalancing instruction interface

* Address feedback

* Rename again

* Ignore rustdoc code
2021-04-09 12:32:21 +02:00