Description
Extend the Earn product (introduced in Phase 1 for Starknet) to EVM chain wallets. Users on EVM chains can tap Earn from their current wallet view and have Noblocks bridge their USDC to Starknet and deposit it into Vesu in a single flow.
Phase 2 covers 7 of 8 EVM chains for USDC: Base, Arbitrum, Polygon, BNB, Celo, Scroll, Ethereum. Lisk is excluded (LayerSwap does not cover Lisk for USDC).
The user signs one transaction on the source chain, and in the background:
Bridge USDC to Starknet via LayerSwap.
Deposit into Vesu (gasless via the AVNU paymaster).
The deposit confirmation states transparently: "Your USDC will be bridged to Vesu on Starknet · ~ETA min · gasless."
Position display mirrors Noblocks' existing per-chain pattern:
Position card lives on the wallet view the user deposited from. Deposit from Base → position shows on Base only, not on Arbitrum or Polygon.
Withdrawals return funds to the source chain.
EVM-sourced earnings are aggregated into the EVM total at the top of the wallet (since EVM addresses are shared via Privy — show liquid + deposited position).
Position card always shows a small "lives on Vesu pool, Starknet" disclosure.
Pre-requisite: Phase 1 (Starknet-only Earn) must be live and validated before Phase 2 begins.
User Story
As a Noblocks user on an EVM chain (Base, Arbitrum, Polygon, BNB, Celo, Scroll, or Ethereum),
I want to tap Earn from my current wallet view and have Noblocks bridge and deposit my USDC into Vesu on Starknet for me,
So that I can earn yield without manually bridging or switching networks.
Acceptance Criteria
-
GIVEN a user is on a supported EVM chain wallet view (Base, Arbitrum, Polygon, BNB, Celo, Scroll, Ethereum)
WHEN they look at the wallet actions
THEN an "Earn" button is available, following the same pattern as Fund and Transfer.
-
GIVEN a user taps Earn from an EVM chain wallet
WHEN they review the deposit
THEN the UI states "Your USDC will be bridged to Vesu on Starknet · ~ETA min · gasless."
-
GIVEN a user confirms an EVM-sourced Earn deposit
WHEN they sign one transaction on the source chain
THEN USDC is bridged to Starknet via LayerSwap and deposited into Vesu (gasless via AVNU paymaster) in the background.
-
GIVEN a user has an EVM-sourced Earn position
WHEN they view the wallet for the source chain (e.g., Base)
THEN the position card appears on that wallet view only, not on the other EVM chain views.
-
GIVEN a user has an EVM-sourced Earn position
WHEN they initiate a withdrawal
THEN the funds are returned to the source chain they originally deposited from.
-
GIVEN a user has Earn positions sourced from EVM chains
WHEN they view the EVM total at the top of the wallet
THEN the total aggregates liquid USDC and the deposited Earn position across EVM chains.
-
GIVEN any active EVM-sourced Earn position
WHEN the position card is displayed
THEN it includes the "lives on Vesu pool, Starknet" disclosure.
-
GIVEN a user is on the Lisk wallet view
WHEN they look at the wallet actions
THEN Earn is not available for Lisk.
Tech Details
- Surface Earn on EVM chain wallet views (Base, Arbitrum, Polygon, BNB, Celo, Scroll, Ethereum) — same pattern as Fund and Transfer.
- Integrate LayerSwap to bridge USDC from the source EVM chain to Starknet.
- Trigger Vesu deposit on Starknet (gasless via AVNU paymaster) after the bridge completes.
- Implement the deposit confirmation copy: "Your USDC will be bridged to Vesu on Starknet · ~ETA min · gasless."
- Pin position cards to the source chain wallet view (deposit from Base → position on Base only).
- Withdrawals route funds back to the source chain.
- Aggregate EVM-sourced Earn earnings into the EVM wallet total (liquid + deposited), leveraging Privy's shared EVM address.
- Show the "lives on Vesu pool, Starknet" disclosure on every position card.
- Exclude Lisk from Phase 2.
Notes/Assumptions
- Phase 1 (Starknet-only Earn) is a prerequisite and must be live and validated before Phase 2 begins.
- Funds are physically held in Vesu's lending pool on Starknet, regardless of source chain. The position card discloses this.
- EVM addresses are shared across EVM chains via Privy, which is why EVM-sourced Earn earnings can be aggregated into a single EVM total.
Lisk is excluded from Phase 2 because LayerSwap does not cover Lisk for USDC.
Open Questions
- What is the target ETA value (in minutes) shown in the deposit confirmation copy? Is it dynamic per source chain or a static estimate?
- What is the recovery/refund path if the LayerSwap bridge succeeds but the Vesu deposit fails (or vice versa)?
- How are yield rates (APY) displayed on EVM chain wallet views?
- Will Phase 2 be gated behind a feature flag at launch?
- What is the success criteria for moving from Phase 1 to Phase 2 (volume, error rate, time in market)?
Description
Extend the Earn product (introduced in Phase 1 for Starknet) to EVM chain wallets. Users on EVM chains can tap Earn from their current wallet view and have Noblocks bridge their USDC to Starknet and deposit it into Vesu in a single flow.
Phase 2 covers 7 of 8 EVM chains for USDC: Base, Arbitrum, Polygon, BNB, Celo, Scroll, Ethereum. Lisk is excluded (LayerSwap does not cover Lisk for USDC).
The user signs one transaction on the source chain, and in the background:
Bridge USDC to Starknet via LayerSwap.
Deposit into Vesu (gasless via the AVNU paymaster).
The deposit confirmation states transparently: "Your USDC will be bridged to Vesu on Starknet · ~ETA min · gasless."
Position display mirrors Noblocks' existing per-chain pattern:
Position card lives on the wallet view the user deposited from. Deposit from Base → position shows on Base only, not on Arbitrum or Polygon.
Withdrawals return funds to the source chain.
EVM-sourced earnings are aggregated into the EVM total at the top of the wallet (since EVM addresses are shared via Privy — show liquid + deposited position).
Position card always shows a small "lives on Vesu pool, Starknet" disclosure.
Pre-requisite: Phase 1 (Starknet-only Earn) must be live and validated before Phase 2 begins.
User Story
As a Noblocks user on an EVM chain (Base, Arbitrum, Polygon, BNB, Celo, Scroll, or Ethereum),
I want to tap Earn from my current wallet view and have Noblocks bridge and deposit my USDC into Vesu on Starknet for me,
So that I can earn yield without manually bridging or switching networks.
Acceptance Criteria
GIVEN a user is on a supported EVM chain wallet view (Base, Arbitrum, Polygon, BNB, Celo, Scroll, Ethereum)
WHEN they look at the wallet actions
THEN an "Earn" button is available, following the same pattern as Fund and Transfer.
GIVEN a user taps Earn from an EVM chain wallet
WHEN they review the deposit
THEN the UI states "Your USDC will be bridged to Vesu on Starknet · ~ETA min · gasless."
GIVEN a user confirms an EVM-sourced Earn deposit
WHEN they sign one transaction on the source chain
THEN USDC is bridged to Starknet via LayerSwap and deposited into Vesu (gasless via AVNU paymaster) in the background.
GIVEN a user has an EVM-sourced Earn position
WHEN they view the wallet for the source chain (e.g., Base)
THEN the position card appears on that wallet view only, not on the other EVM chain views.
GIVEN a user has an EVM-sourced Earn position
WHEN they initiate a withdrawal
THEN the funds are returned to the source chain they originally deposited from.
GIVEN a user has Earn positions sourced from EVM chains
WHEN they view the EVM total at the top of the wallet
THEN the total aggregates liquid USDC and the deposited Earn position across EVM chains.
GIVEN any active EVM-sourced Earn position
WHEN the position card is displayed
THEN it includes the "lives on Vesu pool, Starknet" disclosure.
GIVEN a user is on the Lisk wallet view
WHEN they look at the wallet actions
THEN Earn is not available for Lisk.
Tech Details
Notes/Assumptions
Lisk is excluded from Phase 2 because LayerSwap does not cover Lisk for USDC.
Open Questions