MultiVM Smart Contract
Details are provisional and may be updated during development.
When to Choose Which VM
Use Case
Recommended VM
Technical Reason
// contracts/MyDeFiProtocol.sol - Your existing contract
pragma solidity ^0.8.19;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol";
contract MyDeFiProtocol {
ISwapRouter public immutable swapRouter;
constructor(address _swapRouter) {
swapRouter = ISwapRouter(_swapRouter);
}
function swapTokens(
address tokenIn,
address tokenOut,
uint256 amountIn,
uint256 amountOutMinimum
) external returns (uint256 amountOut) {
// Your existing DeFi logic - works identically
// All OpenZeppelin contracts work as-is
// All Uniswap integrations work as-is
ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({
tokenIn: tokenIn,
tokenOut: tokenOut,
fee: 3000,
recipient: msg.sender,
deadline: block.timestamp + 300,
amountIn: amountIn,
amountOutMinimum: amountOutMinimum,
sqrtPriceLimitX96: 0
});
amountOut = swapRouter.exactInputSingle(params);
}
}SVM Deployment Guide
Your First MultiVM dApp
Hybrid Architecture Pattern
Migration Guide
From Ethereum to Arichain
From Solana to Arichain
Last updated

