V5 release - #810
Open
cyc60 wants to merge 77 commits into
Open
Conversation
* Add sub vaults registry * Fix test, refactor encoder * Refactor encoders * Cache sub_vaults_registry
* Add update redeemable positions command Signed-off-by: cyc60 <avsysoev60@gmail.com> * Cleanup Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update api client Signed-off-by: cyc60 <avsysoev60@gmail.com> * Check arbitrum balance, add min shares arg Signed-off-by: cyc60 <avsysoev60@gmail.com> * Check boosted shares via subgraph Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add vault proportions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add logs Signed-off-by: cyc60 <avsysoev60@gmail.com> * Small refactoring Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add API rate limits Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update comment Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename var Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix typo Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes #2 Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes #3 Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add merkle root Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add progress bar Signed-off-by: cyc60 <avsysoev60@gmail.com> * Simplify boosted filters Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fetch oseth from graph Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add OsTokenConverter Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Install multiproof Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rm OS_TOKEN_VAULT_CONTROLLER_CONTRACT_ADDRESS Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add integration test for update_redeemable_positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add integration test for update_redeemable_positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename package Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix IPFS mock Signed-off-by: cyc60 <avsysoev60@gmail.com> * Move log Signed-off-by: cyc60 <avsysoev60@gmail.com> * Copilot fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add arbitrum config Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add min_minted_shares filter Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update sortings Signed-off-by: cyc60 <avsysoev60@gmail.com> * Copilot fix Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update redeemer contract Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rm leaves sort Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update ABIs Signed-off-by: cyc60 <avsysoev60@gmail.com> * Skip debank for hoodi Signed-off-by: cyc60 <avsysoev60@gmail.com> * Unify API_SUPPORTED_CHAINS Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update command params Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add debank to API Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename vault shares Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename redeemable positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use multicall to fetch arb balances Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add positions sorting Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename vault shares Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Refactor graph_get_allocators (#658) --------- Signed-off-by: cyc60 <avsysoev60@gmail.com> Co-authored-by: Dmitri Tsumak <tsumak.dmitri@gmail.com> Co-authored-by: evgeny-stakewise <123374581+evgeny-stakewise@users.noreply.github.com>
* Add update redeemable positions command Signed-off-by: cyc60 <avsysoev60@gmail.com> * Cleanup Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update api client Signed-off-by: cyc60 <avsysoev60@gmail.com> * Check arbitrum balance, add min shares arg Signed-off-by: cyc60 <avsysoev60@gmail.com> * Check boosted shares via subgraph Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add vault proportions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add logs Signed-off-by: cyc60 <avsysoev60@gmail.com> * Small refactoring Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add API rate limits Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update comment Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename var Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix typo Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes #2 Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes #3 Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add merkle root Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add progress bar Signed-off-by: cyc60 <avsysoev60@gmail.com> * Simplify boosted filters Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fetch oseth from graph Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add OsTokenConverter Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Install multiproof Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rm OS_TOKEN_VAULT_CONTROLLER_CONTRACT_ADDRESS Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add integration test for update_redeemable_positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add integration test for update_redeemable_positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename package Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix IPFS mock Signed-off-by: cyc60 <avsysoev60@gmail.com> * Move log Signed-off-by: cyc60 <avsysoev60@gmail.com> * Copilot fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add withdrawals to cover redemption assets * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add arbitrum config Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add min_minted_shares filter Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update sortings Signed-off-by: cyc60 <avsysoev60@gmail.com> * Copilot fix Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests * Update redeemer contract Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rm leaves sort Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update ABIs Signed-off-by: cyc60 <avsysoev60@gmail.com> * Skip debank for hoodi Signed-off-by: cyc60 <avsysoev60@gmail.com> * Unify API_SUPPORTED_CHAINS Signed-off-by: cyc60 <avsysoev60@gmail.com> * Pass block number everywhere * Update command params Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add debank to API Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename vault shares Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename redeemable positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use multicall to fetch arb balances Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add positions sorting Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename vault shares Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename redeemable position -> os token position, cleanup after merge * Moved get_os_token_position_leaf_hash to method * Fix sub vaults registry * Rename sub_vaults_registry -> sub_vaults_registry_contract --------- Signed-off-by: cyc60 <avsysoev60@gmail.com> Co-authored-by: cyc60 <avsysoev60@gmail.com> Co-authored-by: Dmitri Tsumak <tsumak.dmitri@gmail.com>
* Bump sw-utils v0.12.10 * Import from sw-utils
…with META_VAULT_IDS (#681)
* Rename OsTokenPosition.amount to leaf_shares Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix tests Signed-off-by: cyc60 <avsysoev60@gmail.com> --------- Signed-off-by: cyc60 <avsysoev60@gmail.com>
Signed-off-by: cyc60 <avsysoev60@gmail.com> # Conflicts: # src/main.py
Signed-off-by: cyc60 <avsysoev60@gmail.com>
* Add update redeemable positions command Signed-off-by: cyc60 <avsysoev60@gmail.com> * Cleanup Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update api client Signed-off-by: cyc60 <avsysoev60@gmail.com> * Check arbitrum balance, add min shares arg Signed-off-by: cyc60 <avsysoev60@gmail.com> * Check boosted shares via subgraph Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add vault proportions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add logs Signed-off-by: cyc60 <avsysoev60@gmail.com> * Small refactoring Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add API rate limits Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update comment Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename var Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix typo Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes #2 Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes #3 Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add merkle root Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add progress bar Signed-off-by: cyc60 <avsysoev60@gmail.com> * Simplify boosted filters Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fetch oseth from graph Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add OsTokenConverter Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Install multiproof Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add process-redeemer command Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rm OS_TOKEN_VAULT_CONTROLLER_CONTRACT_ADDRESS Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add integration test for update_redeemable_positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add integration test for update_redeemable_positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename package Signed-off-by: cyc60 <avsysoev60@gmail.com> * Metavault handling Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add proofs Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix IPFS mock Signed-off-by: cyc60 <avsysoev60@gmail.com> * Move log Signed-off-by: cyc60 <avsysoev60@gmail.com> * Copilot fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add withdrawals to cover redemption assets * Add tests * Unify is_meta_vault Signed-off-by: cyc60 <avsysoev60@gmail.com> * Unify redeemable positions fetch Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix contract calls Signed-off-by: cyc60 <avsysoev60@gmail.com> * Check empty merkle root Signed-off-by: cyc60 <avsysoev60@gmail.com> * Skip empty positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Refactoring Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add interval option Signed-off-by: cyc60 <avsysoev60@gmail.com> * Remove unused options Signed-off-by: cyc60 <avsysoev60@gmail.com> * Split OsTokenPosition.redeemable_shares into available_shares and shares_to_redeem * Update tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use sw utils Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix redeemable_assets filter Signed-off-by: cyc60 <avsysoev60@gmail.com> * Extract fetch_harvest_params_by_vault from select_positions * Refactoring Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add get_multiple_harvest_params Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix nonce Signed-off-by: cyc60 <avsysoev60@gmail.com> * Refactor Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Refactor get_multiple_harvest_params Signed-off-by: cyc60 <avsysoev60@gmail.com> * Single _try_redeem_meta_vault call Signed-off-by: cyc60 <avsysoev60@gmail.com> * Refactoring Signed-off-by: cyc60 <avsysoev60@gmail.com> * Handle zero nonce Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes #1 Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add min-queued-assets option Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rm double comparison Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use IPFS ordering for positions Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use OsTokenRedeemer multicall Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix needed assets for meta vaults Signed-off-by: cyc60 <avsysoev60@gmail.com> * Handle nested metavaults (#685) * Handle nested metavaults Signed-off-by: cyc60 <avsysoev60@gmail.com> * Copilot fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update except Signed-off-by: cyc60 <avsysoev60@gmail.com> --------- Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename unprocessed_shares Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename deficit Signed-off-by: cyc60 <avsysoev60@gmail.com> * Fix test Signed-off-by: cyc60 <avsysoev60@gmail.com> --------- Signed-off-by: cyc60 <avsysoev60@gmail.com> Co-authored-by: Dmitri Tsumak <tsumak.dmitri@gmail.com> Co-authored-by: Evgeny Gusarov <evgeny@stakewise.io>
Signed-off-by: cyc60 <avsysoev60@gmail.com>
Signed-off-by: cyc60 <avsysoev60@gmail.com>
* Update-redeemable-positions: startup checks and remove no_confirm Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use finalized block Signed-off-by: cyc60 <avsysoev60@gmail.com> --------- Signed-off-by: cyc60 <avsysoev60@gmail.com>
* Fix trivy scan, process-redeemer desc, unity * Remove unify python3.10 pin, set vulture python3.12 * Pin unify to python3.12 * Set trivy db repo, default python3.12 for pre-commit
* Harvest meta vaults during process-redeemer Signed-off-by: cyc60 <avsysoev60@gmail.com> * Refresh harvest_params after meta vault harvest Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add help for --skip-harvest Signed-off-by: cyc60 <avsysoev60@gmail.com> * Recheck current_withdrawable Signed-off-by: cyc60 <avsysoev60@gmail.com> * Add test for --skip-harvest Signed-off-by: cyc60 <avsysoev60@gmail.com> * Rename is_meta_vault_state_update_required Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use single iteration for process-redeemer Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use multicall for state update Signed-off-by: cyc60 <avsysoev60@gmail.com> * Small fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Copilot fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Update tests Signed-off-by: cyc60 <avsysoev60@gmail.com> * Call process_exit_queue after redeem Signed-off-by: cyc60 <avsysoev60@gmail.com> * Wait for block sync before get_withdrawable_assets Signed-off-by: cyc60 <avsysoev60@gmail.com> * Skip deposit to sub vaults Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Review fixes Signed-off-by: cyc60 <avsysoev60@gmail.com> * Stop on ClaimDelayNotPassedException Signed-off-by: cyc60 <avsysoev60@gmail.com> * Pin block for graph_get_vaults Signed-off-by: cyc60 <avsysoev60@gmail.com> * Use chunks for batch_update_vault_state Signed-off-by: cyc60 <avsysoev60@gmail.com> --------- Signed-off-by: cyc60 <avsysoev60@gmail.com>
…tup (#760) * Add execution node and wallet balance checks to process-redeemer startup * Patch startup checks in process-redeemer tests
* Skip reverting positions instead of aborting redemption round * Update test for skip-on-failure redemption behavior
# Conflicts: # poetry.lock # src/meta_vault/tests/test_tasks.py # src/reward_splitter/tasks.py
* Restore update_vaults_state with batched multicall * Bump sw-utils v0.13.2 * Fix mypy * Exclude git deps from pip-audit requirements * Ignore pyo3 false positive in Trivy scan * Log vaults being state-updated in update_vaults_state * Improved loggign
Signed-off-by: cyc60 <avsysoev60@gmail.com>
Merged changes from master
# Conflicts: # src/common/contracts.py # src/withdrawals/tasks.py
* Handle contract custom errors in redemptions * Handle generic exceptions in redemptions execution * Include error details in redemptions error logs
Signed-off-by: cyc60 <avsysoev60@gmail.com> # Conflicts: # poetry.lock # src/config/settings.py # src/main.py # src/validators/execution.py
* Remove Arbitrum support from redemptions * Simplify API supported chains lookup
* Save redeemable positions to local file * Use get_current_timestamp for positions file name
* Cap redemptions by live osToken positions and lazily assign budget * Refresh osToken converter after harvest and haircut withdrawable cap * Address review nits in redeemer loop * Revert redeem loop changes * Cap aggregated redemption targets by live osToken positions * Cap assigned shares by live positions instead of leaf shares * Unify live shares naming * Simplify comments
* Subtract shares redeemed after the snapshot when building redeemable positions * Add unmatched boosted shares to kept shares across vaults * Harden window-redeemed-shares nonce and dust checks * Trim verbose comments * Revert "Harden window-redeemed-shares nonce and dust checks" This reverts commit 0aafd7b. * Revert "Subtract shares redeemed after the snapshot when building redeemable positions" This reverts commit eff0d59. * Flatten guard clause in _reduce_boosted_amount * Move vault position lookup into Allocator
* Cap redeem loop by owner's live osToken position * Inline live shares check into redeem_positions
* Track boosted shares on vault position instead of reducing minted shares * Rename shares vars for redeemable naming consistency * Store residual boosted shares on Allocator
* Unify merkle leaf encoding in PositionsMerkleTree * Share IPFS positions codec via OsTokenPosition.from_dict
* Move kept shares and vault split into Allocator * Drop allocators left without vault positions before kept shares lookup * Yield VaultSlice objects instead of tuples
* Drop dead assets_to_redeem assignment in redeem_positions * Add APIClient.for_network * Use itertools.batched and replace() in fetch_positions * Inline redemption assets chain and drop defaultdict return * Drop unused block_number param and document redeem_positions skips * Share make_position and make_tree test factories * Rename ApiClient build method Signed-off-by: cyc60 <avsysoev60@gmail.com> --------- Signed-off-by: cyc60 <avsysoev60@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Do not squash!