Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ ARBITRUM_NOVA_RPC_URL=https://nova.arbitrum.io/rpc
SEI_RPC_URL=https://evm-rpc.sei-apis.com
INK_RPC_URL=https://rpc-gel.inkonchain.com
SONIC_RPC_URL=https://rpc.soniclabs.com
MONAD_RPC_URL=https://rpc.monad.xyz
MONAD_RPC_URL=https://monad-mainnet.infura.io/v3/${RPC_API_KEY}
MEGA_ETH_RPC_URL=
RONIN_RPC_URL=https://api.roninchain.com/rpc
TEMPO_RPC_URL=https://rpc.tempo.xyz
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,5 @@ jobs:
env:
LINEA_RPC_URL: ${{ secrets.LINEA_RPC_URL }}
ARBITRUM_RPC_URL: ${{ secrets.ARBITRUM_RPC_URL }}
MONAD_RPC_URL: ${{ secrets.MONAD_RPC_URL }}
RPC_API_KEY: ${{ secrets.RPC_API_KEY }}
59 changes: 59 additions & 0 deletions script/DeployComplianceVedaAdapter.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// SPDX-License-Identifier: MIT AND Apache-2.0
pragma solidity 0.8.23;

import "forge-std/Script.sol";
import { console2 } from "forge-std/console2.sol";

import { ComplianceVedaAdapter } from "../src/helpers/ComplianceVedaAdapter.sol";

/**
* @title DeployComplianceVedaAdapter
* @notice Deploys ComplianceVedaAdapter deterministically with CREATE2.
* @dev Run with:
* forge script script/DeployComplianceVedaAdapter.s.sol --rpc-url <rpc_url> --private-key $PRIVATE_KEY --broadcast
* Monad simulations may require --skip-simulation because its mUSD contract uses post-London opcodes.
*/
contract DeployComplianceVedaAdapter is Script {
bytes32 internal salt;
address internal vedaAdapterOwner;
address internal delegationManager;
address internal boringVault;
address internal vedaTeller;
address internal depositToken;

function setUp() public {
salt = bytes32(abi.encodePacked(vm.envString("SALT")));
vedaAdapterOwner = vm.envAddress("VEDA_ADAPTER_OWNER_ADDRESS");
delegationManager = vm.envAddress("DELEGATION_MANAGER_ADDRESS");
boringVault = vm.envAddress("VEDA_BORING_VAULT_ADDRESS");
vedaTeller = vm.envAddress("VEDA_TELLER_ADDRESS");
depositToken = vm.envAddress("VEDA_DEPOSIT_TOKEN_ADDRESS");

console2.log("~~~");
console2.log("Owner: %s", vedaAdapterOwner);
console2.log("DelegationManager: %s", delegationManager);
console2.log("BoringVault: %s", boringVault);
console2.log("VedaTeller: %s", vedaTeller);
console2.log("DepositToken: %s", depositToken);
console2.log("Salt:");
console2.logBytes32(salt);
}

function run() public {
vm.startBroadcast();

// Foundry's fork mode cannot interact with mUSD on Monad (NotActivated in revm).
// Mock the approve call so simulation passes; the real broadcast executes the
// actual constructor on-chain where the token works correctly.
// vm.mockCall(depositToken, abi.encodeWithSelector(bytes4(keccak256("approve(address,uint256)"))), abi.encode(true));

address deployed = address(
new ComplianceVedaAdapter{ salt: salt }(vedaAdapterOwner, delegationManager, boringVault, vedaTeller, depositToken)
);

vm.stopBroadcast();
console2.log("ComplianceVedaAdapter: %s", deployed);

// vm.clearMockedCalls();
}
}
Loading
Loading