Skip to content

fix(svm): L-01 create new vault on deposit if needed #957

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

Conversation

Reinis-FRP
Copy link
Contributor

@Reinis-FRP Reinis-FRP commented Apr 16, 2025

OZ identified following issue:

Pull request #939 removes route-enabling functionality in the SVM Spoke, allowing depositors to provide any input token for any destination chain, not only those with the route enabled. Previously, when a route was enabled, the Associated Token Account (ATA) of the vault for user deposits would be created. The DisabledRoute error would also be generated if a user tried to deposit to a disabled route. Since, by this point, all routes would be enabled, a user may try to submit a deposit where the vault ATA has not been initialized. This will cause the deposit transaction to fail without a descriptive error message.

Thus, if the vault has not been created, the depositor would have to initialize the PDA themselves, for example, using the createVault.ts script. However, this is not a simple process for the majority of users and it may be unclear why the deposit failed. This could cause users to abandon their deposit attempt and consider alternative bridging solutions. A more straightforward solution would be to initialize the vault during deposit using the init_if_needed flag as was previously done when the admin enabled a route.

Consider adding the init_if_needed flag or clearly documenting the desired vault creation process within the docstring for the deposit function.

This PR addresses the issue by adding the init_if_needed flag to the vault account in the deposit method.

Copy link

linear bot commented Apr 16, 2025

Reinis-FRP and others added 3 commits April 16, 2025 10:33
…-vault-initialization-process

Signed-off-by: Reinis Martinsons <[email protected]>
Signed-off-by: Reinis Martinsons <[email protected]>
* fix(svm): pin rust toolchain for solana

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>
@Reinis-FRP Reinis-FRP marked this pull request as ready for review April 17, 2025 12:53
Copy link
Contributor

@md0x md0x left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

…-vault-initialization-process

Signed-off-by: Reinis Martinsons <[email protected]>
@Reinis-FRP Reinis-FRP merged commit 3b8cf77 into solana-march-audit-2 Apr 23, 2025
9 checks passed
@Reinis-FRP Reinis-FRP deleted the reinis/acx-4022-l-01-unclear-vault-initialization-process branch April 23, 2025 18:49
Reinis-FRP added a commit that referenced this pull request May 21, 2025
* feat(svm): remove enabled deposit route check (#939)

* feat(svm): remove enabled deposit route check

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: remove create_vault ix

Signed-off-by: Reinis Martinsons <[email protected]>

* Update scripts/svm/simpleDeposit.ts

Co-authored-by: Chris Maree <[email protected]>

* fix: update comment

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>
Co-authored-by: Chris Maree <[email protected]>

* feat(svm): test native sol deposits (#942)

* feat(svm): test native sol deposits

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: merge issues

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>

* fix(svm): pin rust toolchain for solana (#960) (#961)

* fix(svm): pin rust toolchain for solana



* fix: add local toolchain



* fix: add rustfmt to nightly



* fix: pin nightly in lint scripts



---------

Signed-off-by: Reinis Martinsons <[email protected]>

* fix(svm): M-01 Deposit Tokens Transferred from Depositor Token Account Instead of Signer (#971)

* fix(svm): M-01 Deposit Tokens Transfers

Signed-off-by: Pablo Maldonado <[email protected]>

* feat: use unchecked account

Signed-off-by: Pablo Maldonado <[email protected]>

* feat: remove system acc

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: deposit tests

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: fill tests

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: rename and comments

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: across plus

Signed-off-by: Pablo Maldonado <[email protected]>

* fix(svm): pin rust toolchain for solana (#960)

* fix(svm): pin rust toolchain for solana

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>

* refactor: rename and organize function

Signed-off-by: Pablo Maldonado <[email protected]>

* feat: update deposit delegate seed

Signed-off-by: Pablo Maldonado <[email protected]>

* feat: use relay_hash from function arguments

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: heap memory error

Signed-off-by: Pablo Maldonado <[email protected]>

* fix

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: cleanup

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: deposit checks

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: fill tests

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: fill relay delagate

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: fill

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: simplify

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: cleanup

Signed-off-by: Pablo Maldonado <[email protected]>

* test: update fill tests

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: comments

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: scripts

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: make seed structs private

Signed-off-by: Pablo Maldonado <[email protected]>

* feat: add missing params to deposit hashes

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: simplify

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: delegate utils

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: anchor serialize

Signed-off-by: Pablo Maldonado <[email protected]>

* refactor: reuse helper deriveSeedHash

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: move paused fills check in handler

Signed-off-by: Reinis Martinsons <[email protected]>

* feat: improvements

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: remove program_id from transfer_from params

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: fill import

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: tests

Signed-off-by: Pablo Maldonado <[email protected]>

---------

Signed-off-by: Pablo Maldonado <[email protected]>
Signed-off-by: Reinis Martinsons <[email protected]>
Signed-off-by: Pablo Maldonado <[email protected]>
Co-authored-by: Reinis Martinsons <[email protected]>
Co-authored-by: Reinis Martinsons <[email protected]>

* fix(svm): N-01 remove v3 from remaining functions and comments (#964)

Signed-off-by: Reinis Martinsons <[email protected]>

* fix(svm): L-01 create new vault on deposit if needed (#957)

* fix(svm): L-01 create new vault on deposit if needed

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: use stable toolchain in ci

Signed-off-by: Reinis Martinsons <[email protected]>

* fix(svm): pin rust toolchain for solana (#960)

* fix(svm): pin rust toolchain for solana

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>

* fix(svm): N-02 clarify documentation (#963)

Signed-off-by: Reinis Martinsons <[email protected]>

* fix(svm): N-03 use consistent variable names in the instruction constraint (#962)

* fix(svm): pin rust toolchain for solana (#960)

* fix(svm): pin rust toolchain for solana

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>

* fix(svm): N-03 use consistent variable names in the instruction constraint

Signed-off-by: Reinis Martinsons <[email protected]>

* fix: restore relay_hash naming in FillRelay context

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>

* feat: update toolchain

Signed-off-by: Pablo Maldonado <[email protected]>

* feat: update toolchain bis

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: delete old scripts

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: across plus codama test

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: fill test codama

Signed-off-by: Pablo Maldonado <[email protected]>

* feat: bump version

Signed-off-by: Pablo Maldonado <[email protected]>

* fix: bump version

Signed-off-by: Reinis Martinsons <[email protected]>

---------

Signed-off-by: Reinis Martinsons <[email protected]>
Signed-off-by: Pablo Maldonado <[email protected]>
Signed-off-by: Pablo Maldonado <[email protected]>
Co-authored-by: Reinis Martinsons <[email protected]>
Co-authored-by: Chris Maree <[email protected]>
Co-authored-by: Reinis Martinsons <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants