• Zeke Mostov's avatar
    Nomination Pools (#10694) · 247f33dc
    Zeke Mostov authored
    
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * Add admin roles and make some calls permissionless
    
    * Destroy pool in withdraw unbonded
    
    * Add docs on pool admin
    
    * Fixup tests
    
    * Test unbond_other permissionless scenarios
    
    * Test withdraw unbonded permissionless
    
    * Test only can join open pools
    
    * Move unsafe set state to mock
    
    * Test: nominate_works
    
    * Add bounds: MinJoinBond, MinCreateBond, MaxPools
    
    * Test MinCreateBond, MinJoinBond, MaxPools
    
    * Add post checks to tests
    
    * Remove some TODOs
    
    * Setup weight infrastructure
    
    * Benchmark claim_payout
    
    * Benchmark create
    
    * Benchmark nominate
    
    * Benchmark join
    
    * Benchmark unbond_other
    
    * Refactor join benchmark to use scenario setup
    
    * Clean up and address warnings
    
    * Basic withdraw unbonded benchmarks
    
    * Refactor nominate benchmark
    
    * Refactor claim payout
    
    * Add feature sp-staking/runtime-benchmarks
    
    * Get node runtime to compile
    
    * Get node to run
    
    * Make claim_payout bench work with node
    
    * Make pool_withdraw_unbonded bench work with node
    
    * Make withdraw_unbonded_other work with node runtime'
    
    * Make create benchmark work with node
    
    * Make nominate benchmark work with node runtime
    
    * WiP new benchmark crate
    
    * Implement initial mock for benchmarks
    
    * Establish benchmark setup logic
    
    * Get claim payout and nominate benchmarks working
    
    * Remove pool bench utils; make struct fields pub insteaad
    
    * Get more benchmarks to work; trim interface trait
    
    * Some more top level docs
    
    * Finish tranistion benchmarks to crate
    
    * Hook up benchmark pallet to node runtime
    
    * Get benches to work with node runtime
    
    * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_nomination_pools --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/nomination-pools/src/weights.rs --template=./.maintain/frame-weight-template.hbs
    
    * Benchmark withdraw_unbonded_other_kill
    
    * Delete old benchmarking files
    
    * Refunds for withdraw_unbonded
    
    * Remove some TODOs
    
    * 'Don't return an option for the current_era'
    
    * Streamline extrinsic docs
    
    * small docs tweaks
    
    * Refactor ledger::slash
    
    * Add on_slash impl for nomination pools
    
    * slash refactor wip
    
    * WIP slash working
    
    * DRY Ledger::stash
    
    * Fix slash saturation
    
    * Remove unused param from slash
    
    * Docs and warnings
    
    * Test ledger::slash
    
    * save progress
    
    * Introduce counter for delegators
    
    * Add tests for max delegator errors
    
    * Reproducible account ids
    
    * Adapt tests to new account id format
    
    * Simplify create_accounts api
    
    * Fix staking tests
    
    * Save PerBill slash impl before removing
    
    * Rever ledger slash test
    
    * Get node runtime to work
    
    * Organize sub pools by unbond era, not curren era
    
    * staking: Proportional ledger slashing
    
    * Some comment cleanup
    
    * Add more test post checks
    
    * Update frame/staking/src/pallet/mod.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * Tests: account for storing unbond era
    
    * Improve docs for staking interface
    
    * Add events Created, Destroyed
    
    * withdraw_unbonded: Remove useless withdraw dust check
    
    * Test: withdraw_unbonded_other_handles_faulty_sub_pool_accounting
    
    * Add extrinsics: set_state_other, set_metadata
    
    * Test: set_state_other_works
    
    * Test: set_metadata_works
    
    * Add benchmarks for set_state_other, set_metadata
    
    * Fix benchmarks
    
    * Add weight info for new extrinsics
    
    * Some feedback
    
    * duo feedback
    
    * Incorporate some more feedback
    
    * integrate more kian feedback
    
    * integrate more kian feedback
    
    * More improvements
    
    * Add destroying_mul
    
    * Make do_reward_payout take refs
    
    * Remove some TODOs
    
    * Add test for saturating
    
    * feedback
    
    * Fix join test
    
    * use `inner` for nested types in nomination pools (#11030)
    
    * Use nested inner type for pool
    
    * make tests and benchmarks work
    
    * remove feat
    
    * all tests work now
    
    * fix node-runtime
    
    * nomination-pools: update benches for new account format (#11033)
    
    * Update benches to new account format
    
    * More sensible seeds
    
    * bring back rward account sanity check
    
    * Comment
    
    * Add extrinsic set_configs (#11038)
    
    * Better sanity checks for nomination pools  (#11042)
    
    * new sanity checks, few other changes
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * nomination-pools: Fix state event regression + benches (#11045)
    
    * new sanity checks, few other changes
    
    * Fix benches, improve sanity check
    
    * Remove useless clear storage in benchmarking
    
    * Set state
    
    * Save
    
    * Doc
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarkianenigma <[email protected]>
    
    * FMT
    
    * Try fill in all staking configs
    
    * Fix build
    
    * More changes to nomination pools (#11050)
    
    * new sanity checks, few other changes
    
    * some last touches as a whole
    
    * Apply suggestions from code review
    
    * Remove redundant event
    
    * Improve unbond_other error handling
    
    * Remove comment
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    Co-authored-by: default avataremostov <[email protected]>
    
    * Remove sanity module and some TODOs
    
    * round of feedback and imp from kian
    
    * Add TODO for ED QoL at reward pool creation
    
    * Make sure reward pool never gets dusted
    
    * Improve error type
    
    * demonstrate per_thing usage
    
    * Update sanity check & fix create_works
    
    * Improve test ext pool creation & fix some more tests
    
    * Try revert
    
    * Revert "Try revert"
    
    This reverts commit c044c94730e1a370eecd8f5b2c4f632835913063.
    
    * Revert "Improve test ext pool creation & fix some more tests"
    
    This reverts commit 1e862a64a7423479260c6e5ad1bd4c8c95651f3a.
    
    * Revert "Update sanity check & fix create_works"
    
    This reverts commit 568a7b727687e4d585e2796afc638df97b83c632.
    
    Roll back reward account funding
    
    * Revert "Improve error type"
    
    This reverts commit 4b993ee601a037e7a44e4a49bbfd60cf45b38b78.
    
    * Revert "Make sure reward pool never gets dusted"
    
    This reverts commit e7a3eb45bdfd156d3f6d94d194e988032ebbc593.
    
    revert
    
    * Update some tests
    
    * FMT
    
    * Test that era offset works correctly
    
    * Update mocks
    
    * Remove unnescary docs
    
    * Doc updates
    
    * Update calculate_delegator_payout_works_with_a_pool_of_1
    
    * Fix test: claim_payout_works
    
    * do_reward_payout_correctly_sets_pool_state_to_destroying
    
    * Remove test do_reward_payout_errors_correctly
    
    * Fix test: do_reward_payout_works
    
    * Fix test: create_errors_correctly
    
    * Fix test: create works
    
    * Fix test: unbond_other_of_3_works
    
    * Ensure that ED is transferred into reward pool upon creation
    
    * WIP pool lifecycle test
    
    * Fix benchmarks
    
    * Add sanity check for ED + reward pools
    
    * `bond_extra` for nomination pools (#11100)
    
    * bond_extra for nomination pools
    
    * Update frame/nomination-pools/src/lib.rs
    
    * Update frame/nomination-pools/src/lib.rs
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * add benchmarks
    
    * remove the min logic of bond_extra
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * FMT
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * make it compile end to end
    
    * Update some type viz
    
    * Update kick terminology
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    * Cache bonded account when creating pool
    
    * Add bond extra weight stuff
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * Update docs for pool withdraw unbonded
    
    * Update docs for unbond
    
    * Improve Doc
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Update frame/nomination-pools/Cargo.toml
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Improve Docs
    
    * Some docs improvements
    
    * fmt
    
    * Remove unlock_era
    
    * Fix accidental frame-support regression
    
    * Fix issue with transactions in tests
    
    * Fix doc links
    
    * Make sure result in test is used
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Fix can toggle state
    
    * Account for new_funds in ok to be open
    
    * Update docs: ok_to_withdraw_unbonded_other_with
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Remove some staking comments
    
    * Rename SubPoolsWithEra to UnbondingPoolsWithEra
    
    * Use validators length for benchmarks
    
    * Use metadata length for benchmarks
    
    * Remove debug assert eq
    
    * docs
    
    * Fix test: withdraw_unbonded_other_errors_correctly
    
    * Fix check for having enough balance to create the pool
    
    * Bond event for pool creation
    
    * Ok to be open
    
    * FMT
    
    * Remove _other postfix
    
    * Update frame/staking/src/lib.rs
    
    * Adjust tests to account for only remove when < ED
    
    * Remove stale TODOs
    
    * Remove dupe test
    
    * Fix build
    
    * Make sure to convert to u256 so we don't saturate
    
    * Refund depositor with reward pool fee
    
    * FMT
    
    * Remove reachable defensive
    
    * Use compact encoding for relevant extrinsics
    
    * Remove unnescary make_free_be for cleaning reward account
    
    * Add not to maintainers for reward account accounting
    
    * Remove note to maintainers from public doc
    
    * Make sure all configs have currency balance
    
    * Avoid saturation in balance_to_unbond
    
    * Partial Unbonding for Nomination Pools (#11212)
    
    * first draft of partial unbonding for pools
    
    * remove option
    
    * Add some more tests and fix issues
    
    * Fix all tests
    
    * simplify some tests
    
    * Update frame/nomination-pools/src/mock.rs
    
    * remove clone
    
    * rename to delegator_unbonding_eras
    
    * Update frame/nomination-pools/src/tests.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Update frame/nomination-pools/src/tests.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Update frame/nomination-pools/src/tests.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * remove pub
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * undo
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * leftovers
    
    * fix invariant
    
    * Fix the depositor assumption
    
    * round of self-review
    
    * little bit more cleanup
    
    * Update frame/nomination-pools/src/mock.rs
    
    * Apply suggestions from code review
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Fix interpretation of MinCreateBond
    
    * controvesial refactor
    
    * rename
    
    * make everything build
    
    * add TODO about killing the reward account
    
    * Update frame/nomination-pools/src/lib.rs
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Update frame/nomination-pools/src/lib.rs
    
    * last self-review
    
    Co-authored-by: default avatarZeke Mostov <[email protected]>
    
    * Update Cargo.lock
    
    * Rename Delegator to PoolMember
    
    * fmt
    
    * Get runtime to build with runtime-benchmarks feature
    
    * Update Cargo.lock
    
    * Fix asserts to work in more scenarios
    
    * gte not gt
    
    * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_nomination_pools --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/nomination-pools/src/weights.rs --template=./.maintain/frame-weight-template.hbs
    
    * Update frame/staking/src/mock.rs
    
    * Update frame/nomination-pools/src/lib.rs
    
    * Update frame/staking/src/slashing.rs
    
    * Apply suggestions from code review
    
    * fmt
    
    * Fix some tests
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    Co-authored-by: default avatarParity Bot <[email protected]>
    Co-authored-by: default avatarkianenigma <[email protected]>
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    Co-authored-by: default avatarShawn Tabrizi <[email protected]>
    247f33dc