Skip to content
Merged
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
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ VEDA_ADAPTER_OWNER_ADDRESS=
VEDA_BORING_VAULT_ADDRESS=
VEDA_TELLER_ADDRESS=
VEDA_DEPOSIT_TOKEN_ADDRESS=
VAULT_MIGRATION_HELPER_OWNER_ADDRESS=
BASE_VEDA_ADAPTER_ADDRESS=
PREMIUM_VEDA_ADAPTER_ADDRESS=

# Required for verifying contracts
ETHERSCAN_API_KEY=
Expand Down
File renamed without changes.
Binary file added audits/cyfrin/cyfrin-10-26-2.pdf
Binary file not shown.

Large diffs are not rendered by default.

68 changes: 68 additions & 0 deletions broadcast/DeployVaultMigrationHelper.s.sol/143/run-latest.json

Large diffs are not rendered by default.

43 changes: 43 additions & 0 deletions script/DeployVaultMigrationHelper.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// 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 { VaultMigrationHelper } from "../src/helpers/VaultMigrationHelper.sol";

/**
* @title DeployVaultMigrationHelper
* @notice Deploys VaultMigrationHelper deterministically with CREATE2.
* @dev Fill the required variables in the .env file
* @dev run the script with:
* forge script script/DeployVaultMigrationHelper.s.sol --rpc-url <your_rpc_url> --private-key $PRIVATE_KEY --broadcast
*/
contract DeployVaultMigrationHelper is Script {
bytes32 internal salt;
address internal owner;
address internal baseAdapter;
address internal premiumAdapter;

function setUp() public {
salt = bytes32(abi.encodePacked(vm.envString("SALT")));
owner = vm.envAddress("VAULT_MIGRATION_HELPER_OWNER_ADDRESS");
baseAdapter = vm.envAddress("BASE_VEDA_ADAPTER_ADDRESS");
premiumAdapter = vm.envAddress("PREMIUM_VEDA_ADAPTER_ADDRESS");

console2.log("~~~");
console2.log("Owner: %s", owner);
console2.log("BaseAdapter: %s", baseAdapter);
console2.log("PremiumAdapter: %s", premiumAdapter);
console2.log("Salt:");
console2.logBytes32(salt);
}

function run() public {
vm.startBroadcast();
address deployed = address(new VaultMigrationHelper{ salt: salt }(owner, baseAdapter, premiumAdapter));
vm.stopBroadcast();

console2.log("VaultMigrationHelper: %s", deployed);
}
}
560 changes: 560 additions & 0 deletions src/helpers/VaultMigrationHelper.sol

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions src/helpers/interfaces/IComplianceVedaTeller.sol
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,20 @@ interface IComplianceVedaTeller {
)
external
returns (uint256 assetsOut);

/**
* @notice RolesAuthority used to check compliance-signer and transfer-allowlist roles.
*/
function authority() external view returns (address);

/**
* @notice Role ID that a recovered compliance signer must hold, or 255 to disable Teller checks.
* @dev `VaultMigrationHelper.premiumTransfer` reverts when this value is 255.
*/
function complianceSignerRole() external view returns (uint8);

/**
* @notice Maximum seconds a compliance deadline may extend beyond `block.timestamp`, or 0 for no cap.
*/
function complianceWindow() external view returns (uint96);
}
10 changes: 10 additions & 0 deletions src/helpers/interfaces/IRolesAuthority.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: MIT AND Apache-2.0
pragma solidity 0.8.23;

/**
* @title IRolesAuthority
* @notice Minimal interface for Solmate-style RolesAuthority role checks used by Veda tellers.
*/
interface IRolesAuthority {
function doesUserHaveRole(address user, uint8 role) external view returns (bool);
}
1,395 changes: 1,395 additions & 0 deletions test/helpers/VaultMigrationHelper.t.sol

Large diffs are not rendered by default.

Loading