executeYieldTransaction is the method the Dynamic SDK calls when depositToYieldVault, withdrawFromYieldVault, or claimYieldRewards need your wallet to sign and broadcast an Earn vault transaction. If your WalletProvider does not implement it, the user can connect, sign messages, and even execute swaps — but calling any Earn action throws a WalletProviderMethodUnavailableError.
Earn vault actions are EVM-only today.
executeYieldTransaction is only
implemented by Dynamic’s built-in EVM wallet provider — a custom
WalletProvider only needs this method if it also targets EVM chains.What executeYieldTransaction receives
The method receives asigningPayload and a walletAccount, and must return { transactionHash }. Unlike executeSwapTransaction, there’s no optional approvalTransactionHash on the result — only the final transaction hash.
signingPayload—{ chainId, chainName, evmTransaction, evmApproval? }.evmApprovalis present only when the wallet’s current ERC-20 allowance for the vault is short of the action’s amount, and must be signed and sent beforeevmTransaction. OnlydepositToYieldVaultcan produce anevmApproval—withdrawFromYieldVaultandclaimYieldRewardsredeem shares or rewards the wallet already holds, so they never require one.walletAccount— the connected account that should sign.
High-level implementation
AddexecuteYieldTransaction to your WalletProvider:
- Signing and sending
evmApprovalfirst, when present, and callingonStepChange('approval')beforehand. - Signing and sending
evmTransaction, and callingonStepChange('transaction')beforehand. - Ensuring the user is on the correct network (the SDK calls
ensureCorrectActiveNetworkbeforeexecuteYieldTransaction, but you can validate again). - Returning the on-chain transaction hash of
evmTransaction— not the approval’s hash.
Use the wallet for Earn
WithexecuteYieldTransaction implemented, a consumer calls the Earn functions directly — each fetches a signing payload from the Dynamic API, then delegates signing to your provider’s executeYieldTransaction:
depositToYieldVault, withdrawFromYieldVault, and claimYieldRewards all resolve the vault’s contract address and asset decimals server-side, then call your provider’s executeYieldTransaction with the resulting signingPayload. The only wallet-specific work is inside executeYieldTransaction; everything else is handled by the Dynamic SDK.
Related
- Build a WalletProvider
- Add swap capabilities - The equivalent method for swaps and Flow
depositToYieldVaultwithdrawFromYieldVaultclaimYieldRewards