Skip to content

feat: ovault composer - #1583

Merged
shankars99 merged 7 commits into
feat/ovault-evmfrom
feat/ovault-composer
Jun 19, 2025
Merged

feat: ovault composer#1583
shankars99 merged 7 commits into
feat/ovault-evmfrom
feat/ovault-composer

Conversation

@shankars99

Copy link
Copy Markdown
Collaborator

OVault Composer that automates IERC4626::deposit() and IERC4626::redeem() operations on a LayerZero transaction.

Error handling

  1. Failed decode for a malformed lzCompose payload [can ONLY refund]
  2. Early exit when there the target OFT is not deployed on the dstEid network [can ONLY refund]
  3. Exit on slippage [can refund or retry with swap]
  4. Not enough msg.value to cover the layerzero fees. [can only retry]

Test Suite

  1. Unit tests for all failure states and passing states
  2. E2E test for a {A,B,C} submesh

Signed-off-by: shankar <shankar@layerzerolabs.org>
Signed-off-by: shankar <shankar@layerzerolabs.org>
Signed-off-by: shankar <shankar@layerzerolabs.org>
Signed-off-by: shankar <shankar@layerzerolabs.org>
Signed-off-by: shankar <shankar@layerzerolabs.org>
Signed-off-by: shankar <shankar@layerzerolabs.org>
Signed-off-by: shankar <shankar@layerzerolabs.org>
@shankars99
shankars99 merged commit 8795d05 into feat/ovault-evm Jun 19, 2025
6 of 8 checks passed
@shankars99
shankars99 deleted the feat/ovault-composer branch June 19, 2025 23:25
shankars99 added a commit that referenced this pull request Jul 20, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>
shankars99 added a commit that referenced this pull request Jul 20, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>
shankars99 added a commit that referenced this pull request Jul 25, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>

feat: ovault composer (#1583)

Signed-off-by: shankar <shankar@layerzerolabs.org>

rename: ovault-composer-evm to ovault-evm (#1587)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault examples (#1588)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault example changes (#1590)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault cleanup #1 (#1594)

Signed-off-by: shankar <shankar@layerzerolabs.org>

audit patches + improvement (#1600)

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/improvements (#1603)

Signed-off-by: shankar <shankar@layerzerolabs.org>

example to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

virtual on _executeOVaultAction

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/source is hub (#1606)

Signed-off-by: shankar <shankar@layerzerolabs.org>

fix: deposit actions (#1610)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault - standardize event emitted during entry of failed state in lzCompose  (#1611)

Signed-off-by: shankar <shankar@layerzerolabs.org>

update to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-5: skip removeDust() on slippage check when dstEid=hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-9: token.safeTransfer(..args) instead of transfer

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-4: refuse msg.value on proxySend() when dstEid is the hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-12: remove duplicated safeERC20 import and library usage

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-13: initialize() for upgradeable

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-14: remove unused interface errors

Signed-off-by: shankar <shankar@layerzerolabs.org>

to match packages

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in retry()

Signed-off-by: shankar <shankar@layerzerolabs.org>

copy-pasta ERC4626 caution/warning from OpenZepplin on donation attack

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in constructor - IOFT.decimalConversionRate()

Signed-off-by: shankar <shankar@layerzerolabs.org>
shankars99 added a commit that referenced this pull request Jul 25, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>

feat: ovault composer (#1583)

Signed-off-by: shankar <shankar@layerzerolabs.org>

rename: ovault-composer-evm to ovault-evm (#1587)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault examples (#1588)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault example changes (#1590)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault cleanup #1 (#1594)

Signed-off-by: shankar <shankar@layerzerolabs.org>

audit patches + improvement (#1600)

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/improvements (#1603)

Signed-off-by: shankar <shankar@layerzerolabs.org>

example to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

virtual on _executeOVaultAction

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/source is hub (#1606)

Signed-off-by: shankar <shankar@layerzerolabs.org>

fix: deposit actions (#1610)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault - standardize event emitted during entry of failed state in lzCompose  (#1611)

Signed-off-by: shankar <shankar@layerzerolabs.org>

update to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-5: skip removeDust() on slippage check when dstEid=hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-9: token.safeTransfer(..args) instead of transfer

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-4: refuse msg.value on proxySend() when dstEid is the hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-12: remove duplicated safeERC20 import and library usage

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-13: initialize() for upgradeable

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-14: remove unused interface errors

Signed-off-by: shankar <shankar@layerzerolabs.org>

to match packages

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in retry()

Signed-off-by: shankar <shankar@layerzerolabs.org>

copy-pasta ERC4626 caution/warning from OpenZepplin on donation attack

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in constructor - IOFT.decimalConversionRate()

Signed-off-by: shankar <shankar@layerzerolabs.org>
shankars99 added a commit that referenced this pull request Aug 7, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>

feat: ovault composer (#1583)

Signed-off-by: shankar <shankar@layerzerolabs.org>

rename: ovault-composer-evm to ovault-evm (#1587)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault examples (#1588)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault example changes (#1590)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault cleanup #1 (#1594)

Signed-off-by: shankar <shankar@layerzerolabs.org>

audit patches + improvement (#1600)

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/improvements (#1603)

Signed-off-by: shankar <shankar@layerzerolabs.org>

example to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

virtual on _executeOVaultAction

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/source is hub (#1606)

Signed-off-by: shankar <shankar@layerzerolabs.org>

fix: deposit actions (#1610)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault - standardize event emitted during entry of failed state in lzCompose  (#1611)

Signed-off-by: shankar <shankar@layerzerolabs.org>

update to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-5: skip removeDust() on slippage check when dstEid=hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-9: token.safeTransfer(..args) instead of transfer

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-4: refuse msg.value on proxySend() when dstEid is the hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-12: remove duplicated safeERC20 import and library usage

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-13: initialize() for upgradeable

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-14: remove unused interface errors

Signed-off-by: shankar <shankar@layerzerolabs.org>

to match packages

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in retry()

Signed-off-by: shankar <shankar@layerzerolabs.org>

copy-pasta ERC4626 caution/warning from OpenZepplin on donation attack

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in constructor - IOFT.decimalConversionRate()

Signed-off-by: shankar <shankar@layerzerolabs.org>
St0rmBr3w pushed a commit that referenced this pull request Aug 7, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>

feat: ovault composer (#1583)

Signed-off-by: shankar <shankar@layerzerolabs.org>

rename: ovault-composer-evm to ovault-evm (#1587)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault examples (#1588)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault example changes (#1590)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault cleanup #1 (#1594)

Signed-off-by: shankar <shankar@layerzerolabs.org>

audit patches + improvement (#1600)

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/improvements (#1603)

Signed-off-by: shankar <shankar@layerzerolabs.org>

example to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

virtual on _executeOVaultAction

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/source is hub (#1606)

Signed-off-by: shankar <shankar@layerzerolabs.org>

fix: deposit actions (#1610)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault - standardize event emitted during entry of failed state in lzCompose  (#1611)

Signed-off-by: shankar <shankar@layerzerolabs.org>

update to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-5: skip removeDust() on slippage check when dstEid=hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-9: token.safeTransfer(..args) instead of transfer

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-4: refuse msg.value on proxySend() when dstEid is the hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-12: remove duplicated safeERC20 import and library usage

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-13: initialize() for upgradeable

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-14: remove unused interface errors

Signed-off-by: shankar <shankar@layerzerolabs.org>

to match packages

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in retry()

Signed-off-by: shankar <shankar@layerzerolabs.org>

copy-pasta ERC4626 caution/warning from OpenZepplin on donation attack

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in constructor - IOFT.decimalConversionRate()

Signed-off-by: shankar <shankar@layerzerolabs.org>
shankars99 added a commit that referenced this pull request Aug 8, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>

feat: ovault composer (#1583)

Signed-off-by: shankar <shankar@layerzerolabs.org>

rename: ovault-composer-evm to ovault-evm (#1587)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault examples (#1588)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault example changes (#1590)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault cleanup #1 (#1594)

Signed-off-by: shankar <shankar@layerzerolabs.org>

audit patches + improvement (#1600)

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/improvements (#1603)

Signed-off-by: shankar <shankar@layerzerolabs.org>

example to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

virtual on _executeOVaultAction

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/source is hub (#1606)

Signed-off-by: shankar <shankar@layerzerolabs.org>

fix: deposit actions (#1610)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault - standardize event emitted during entry of failed state in lzCompose  (#1611)

Signed-off-by: shankar <shankar@layerzerolabs.org>

update to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-5: skip removeDust() on slippage check when dstEid=hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-9: token.safeTransfer(..args) instead of transfer

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-4: refuse msg.value on proxySend() when dstEid is the hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-12: remove duplicated safeERC20 import and library usage

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-13: initialize() for upgradeable

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-14: remove unused interface errors

Signed-off-by: shankar <shankar@layerzerolabs.org>

to match packages

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in retry()

Signed-off-by: shankar <shankar@layerzerolabs.org>

copy-pasta ERC4626 caution/warning from OpenZepplin on donation attack

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in constructor - IOFT.decimalConversionRate()

Signed-off-by: shankar <shankar@layerzerolabs.org>
shankars99 added a commit that referenced this pull request Aug 9, 2025
Signed-off-by: shankar <shankar@layerzerolabs.org>

feat: ovault composer (#1583)

Signed-off-by: shankar <shankar@layerzerolabs.org>

rename: ovault-composer-evm to ovault-evm (#1587)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault examples (#1588)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault example changes (#1590)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault cleanup #1 (#1594)

Signed-off-by: shankar <shankar@layerzerolabs.org>

audit patches + improvement (#1600)

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/improvements (#1603)

Signed-off-by: shankar <shankar@layerzerolabs.org>

example to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

virtual on _executeOVaultAction

Signed-off-by: shankar <shankar@layerzerolabs.org>

Ovault/source is hub (#1606)

Signed-off-by: shankar <shankar@layerzerolabs.org>

fix: deposit actions (#1610)

Signed-off-by: shankar <shankar@layerzerolabs.org>

ovault - standardize event emitted during entry of failed state in lzCompose  (#1611)

Signed-off-by: shankar <shankar@layerzerolabs.org>

update to match package

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-5: skip removeDust() on slippage check when dstEid=hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-9: token.safeTransfer(..args) instead of transfer

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-4: refuse msg.value on proxySend() when dstEid is the hub

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-12: remove duplicated safeERC20 import and library usage

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-13: initialize() for upgradeable

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-14: remove unused interface errors

Signed-off-by: shankar <shankar@layerzerolabs.org>

to match packages

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in retry()

Signed-off-by: shankar <shankar@layerzerolabs.org>

copy-pasta ERC4626 caution/warning from OpenZepplin on donation attack

Signed-off-by: shankar <shankar@layerzerolabs.org>

issue-11: remove duplication in constructor - IOFT.decimalConversionRate()

Signed-off-by: shankar <shankar@layerzerolabs.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.

1 participant