Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement moving funds commitment submission #3733

Closed
6 tasks done
lukasz-zimnoch opened this issue Nov 6, 2023 · 0 comments
Closed
6 tasks done

Implement moving funds commitment submission #3733

lukasz-zimnoch opened this issue Nov 6, 2023 · 0 comments
Assignees

Comments

@lukasz-zimnoch
Copy link
Member

lukasz-zimnoch commented Nov 6, 2023

This issue is about implementing the moving funds commitment mechanism in the client. Long story short, wallet signers must agree on where funds should be sent to and submit such a commitment to the Bridge. The Bridge enforces a specific number of target wallets that must be chosen. The moving funds wallet should always start picking from the latest wallet and go backward. How wallet signers agree on the commitment should be discussed and decided upon implementation.

Tasks

Preview Give feedback
  1. ⛓️ solidity
    tomaszslabon
  2. ⛓️ solidity
    tomaszslabon
  3. ⛓️ solidity
    tomaszslabon
  4. 📟 client
    tomaszslabon
  5. 📟 client
    tomaszslabon
  6. ⛓️ solidity
    tomaszslabon
lukasz-zimnoch added a commit to keep-network/tbtc-v2 that referenced this issue Dec 21, 2023
#Refs: keep-network/keep-core#3733.

This PR adds moving funds proposal validation to the wallet proposal
validator smart contract.
The validation performs several checks:
- the source wallet's state must be MovingFunds,
- the source wallet's commitment hash must be submitted,
- the target wallets from the proposal must match the submitted
commitment hash,
- the proposed fee must be greater than zero,
- the transaction proposed fee must not exceed the maximum fee.
lukasz-zimnoch added a commit to keep-network/tbtc-v2 that referenced this issue Dec 22, 2023
Refs: keep-network/keep-core#3733

This PR is a follow-up to
#757.
The following checks were added:
- source wallet must be positive,
- source wallet BTC balance must be equal to or greater than the
`movingFundsDustThreshold` parameter.
lukasz-zimnoch added a commit to keep-network/tbtc-v2 that referenced this issue Jan 9, 2024
#Refs: keep-network/keep-core#3733.
#Depends on: #757.

This PR adds moved funds sweep proposal validation to the wallet
proposal validator smart contract.
lukasz-zimnoch added a commit that referenced this issue Feb 8, 2024
#Refs: #3733.

This PR introduces functionalities that enable a wallet to submit a
moving funds commitment. These functionalities have been incorporated
into the `tbtcpg` package through the creation and execution of a
`MovingFundsTask`.
They were implemented in the same manner as other procedures such as
deposit sweeps and redemptions.

The task results in a moving funds proposal, which is needed for
generating the Bitcoin transaction that transfer funds between wallets.
Usually, this process will also involve submitting the moving funds
commitment transaction to the `Bridge`. This submission step may be
skipped if the commitment has already been submitted, which can occur if
a previously initiated moving funds procedure was interrupted
post-commitment submission and still needs completion.

Executing a moving funds task consists of several key steps:
1) Verifying the eligibility of the wallet for moving funds, involving
checks on the wallet's state and balance.
2) Preparing the target wallets, which includes either creating a new
list of wallets or retrieving an existing list from a previous,
interrupted moving funds procedure.
3) Submitting the moving funds transaction to the Bridge, unless it has
already been submitted.
4) Creating and validating the moving funds proposal, a process that
involves estimating the Bitcoin transaction fee.

Upon completion of the moving funds task, all necessary prerequisites
for the Bitcoin moving funds transaction should be satisfied.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants