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.

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>
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 <reinis@umaproject.org>
Signed-off-by: Reinis Martinsons <reinis@umaproject.org>
* fix(svm): pin rust toolchain for solana

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>
@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 <reinis@umaproject.org>
@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 <reinis@umaproject.org>

* fix: remove create_vault ix

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* Update scripts/svm/simpleDeposit.ts

Co-authored-by: Chris Maree <christopher.maree@gmail.com>

* fix: update comment

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>
Co-authored-by: Chris Maree <christopher.maree@gmail.com>

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

* feat(svm): test native sol deposits

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: merge issues

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* 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 <reinis@umaproject.org>

* 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 <pablo@umaproject.org>

* feat: use unchecked account

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* feat: remove system acc

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: deposit tests

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: fill tests

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* refactor: rename and comments

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: across plus

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

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

* fix(svm): pin rust toolchain for solana

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* refactor: rename and organize function

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* feat: update deposit delegate seed

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* feat: use relay_hash from function arguments

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: heap memory error

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* refactor: cleanup

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: deposit checks

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: fill tests

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: fill relay delagate

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>

* fix: fill

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: simplify

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: cleanup

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* test: update fill tests

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: comments

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: scripts

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: make seed structs private

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* feat: add missing params to deposit hashes

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: simplify

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: delegate utils

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: anchor serialize

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* refactor: reuse helper deriveSeedHash

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: move paused fills check in handler

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* feat: improvements

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: remove program_id from transfer_from params

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: fill import

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: tests

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

---------

Signed-off-by: Pablo Maldonado <pablo@umaproject.org>
Signed-off-by: Reinis Martinsons <reinis@umaproject.org>
Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>
Co-authored-by: Reinis Martinsons <77973553+Reinis-FRP@users.noreply.github.com>
Co-authored-by: Reinis Martinsons <reinis@umaproject.org>

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

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* 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 <reinis@umaproject.org>

* fix: use stable toolchain in ci

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

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

* fix(svm): pin rust toolchain for solana

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

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

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* 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 <reinis@umaproject.org>

* fix: add local toolchain

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: add rustfmt to nightly

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: pin nightly in lint scripts

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

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

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* fix: restore relay_hash naming in FillRelay context

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

* feat: update toolchain

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* feat: update toolchain bis

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: delete old scripts

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: across plus codama test

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: fill test codama

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* feat: bump version

Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

* fix: bump version

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

---------

Signed-off-by: Reinis Martinsons <reinis@umaproject.org>
Signed-off-by: Pablo Maldonado <pablo@umaproject.org>
Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>
Co-authored-by: Reinis Martinsons <77973553+Reinis-FRP@users.noreply.github.com>
Co-authored-by: Chris Maree <christopher.maree@gmail.com>
Co-authored-by: Reinis Martinsons <reinis@umaproject.org>
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