diff --git a/.env.example b/.env.example index 54e56ed..6320a16 100644 --- a/.env.example +++ b/.env.example @@ -1 +1 @@ -export SEPOLIA_RPC_URL="YOUR_SEPOLIA_RPC_URL" +export MAINNET_RPC_URL="YOUR_MAINNET_RPC_URL" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3702bde..fc3249e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ name: "CI" env: - SEPOLIA_RPC_URL: ${{ secrets.SEPOLIA_RPC_URL }} + MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }} FOUNDRY_PROFILE: "ci" on: diff --git a/airdrops/MerkleCreator.sol b/airdrops/MerkleCreator.sol index c3a37b6..711ac15 100644 --- a/airdrops/MerkleCreator.sol +++ b/airdrops/MerkleCreator.sol @@ -13,12 +13,12 @@ import { MerkleBase, MerkleLL, MerkleLT } from "@sablier/airdrops/src/types/Data /// @notice Example of how to create Merkle airdrop campaigns. /// @dev This code is referenced in the docs: https://docs.sablier.com/guides/airdrops/examples/create-campaign contract MerkleCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); // See https://docs.sablier.com/guides/lockup/deployments for all deployments - ISablierMerkleFactory public constant FACTORY = ISablierMerkleFactory(0x4ECd5A688b0365e61c1a764E8BF96A7C5dF5d35F); - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + ISablierMerkleFactory public constant FACTORY = ISablierMerkleFactory(0x71DD3Ca88E7564416E5C2E350090C12Bf8F6144a); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); function createMerkleInstant() public virtual returns (ISablierMerkleInstant merkleInstant) { // Declare the constructor parameter of MerkleBase. diff --git a/airdrops/MerkleCreator.t.sol b/airdrops/MerkleCreator.t.sol index 9251411..2cff116 100644 --- a/airdrops/MerkleCreator.t.sol +++ b/airdrops/MerkleCreator.t.sol @@ -15,8 +15,8 @@ contract MerkleCreatorTest is Test { address internal user; function setUp() public { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the Merkle creator merkleCreator = new MerkleCreator(); diff --git a/flow/FlowBatchable.sol b/flow/FlowBatchable.sol index e159816..1a8df15 100644 --- a/flow/FlowBatchable.sol +++ b/flow/FlowBatchable.sol @@ -10,9 +10,9 @@ import { Broker, ISablierFlow } from "@sablier/flow/src/interfaces/ISablierFlow. /// enables any possible combination of functions to be executed within a single transaction. /// @dev For some functions to work, `msg.sender` must have approved this contract to spend USDC. contract FlowBatchable { - // Sepolia addresses - IERC20 public constant USDC = IERC20(0xf08A50178dfcDe18524640EA6618a1f965821715); - ISablierFlow public constant FLOW = ISablierFlow(0x52ab22e769E31564E17D524b683264B65662A014); + // Mainnet addresses + IERC20 public constant USDC = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); + ISablierFlow public constant FLOW = ISablierFlow(0x3DF2AAEdE81D2F6b261F79047517713B8E844E04); /// @dev A function to adjust the rate per second and deposit into a stream in a single transaction. /// Note: The streamId's sender must be this contract, otherwise, the call will fail due to no authorization. diff --git a/flow/FlowBatchable.t.sol b/flow/FlowBatchable.t.sol index 05c112b..f6f0fe3 100644 --- a/flow/FlowBatchable.t.sol +++ b/flow/FlowBatchable.t.sol @@ -10,8 +10,8 @@ contract FlowBatchable_Test is Test { address internal user; function setUp() external { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the batchable contract batchable = new FlowBatchable(); diff --git a/flow/FlowStreamCreator.sol b/flow/FlowStreamCreator.sol index 1c3966a..8290c58 100644 --- a/flow/FlowStreamCreator.sol +++ b/flow/FlowStreamCreator.sol @@ -8,9 +8,9 @@ import { ISablierFlow } from "@sablier/flow/src/interfaces/ISablierFlow.sol"; import { FlowUtilities } from "./FlowUtilities.sol"; contract FlowStreamCreator { - // Sepolia addresses - IERC20 public constant USDC = IERC20(0xf08A50178dfcDe18524640EA6618a1f965821715); - ISablierFlow public constant FLOW = ISablierFlow(0x52ab22e769E31564E17D524b683264B65662A014); + // Mainnet addresses + IERC20 public constant USDC = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); + ISablierFlow public constant FLOW = ISablierFlow(0x3DF2AAEdE81D2F6b261F79047517713B8E844E04); // Create a stream that sends 1000 USDC per month. function createStream_1K_PerMonth() external returns (uint256 streamId) { diff --git a/flow/FlowStreamCreator.t.sol b/flow/FlowStreamCreator.t.sol index c361b07..4c46a26 100644 --- a/flow/FlowStreamCreator.t.sol +++ b/flow/FlowStreamCreator.t.sol @@ -10,8 +10,8 @@ contract FlowStreamCreator_Test is Test { address internal user; function setUp() external { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the FlowStreamCreator contract streamCreator = new FlowStreamCreator(); diff --git a/flow/FlowStreamManager.sol b/flow/FlowStreamManager.sol index a162cf3..c5eaf93 100644 --- a/flow/FlowStreamManager.sol +++ b/flow/FlowStreamManager.sol @@ -6,8 +6,8 @@ import { ud60x18 } from "@prb/math/src/UD60x18.sol"; import { Broker, ISablierFlow } from "@sablier/flow/src/interfaces/ISablierFlow.sol"; contract FlowStreamManager { - // Sepolia address - ISablierFlow public constant FLOW = ISablierFlow(0x52ab22e769E31564E17D524b683264B65662A014); + // Mainnet address + ISablierFlow public constant FLOW = ISablierFlow(0x3DF2AAEdE81D2F6b261F79047517713B8E844E04); function adjustRatePerSecond(uint256 streamId) external { FLOW.adjustRatePerSecond({ streamId: streamId, newRatePerSecond: ud21x18(0.0001e18) }); diff --git a/foundry.toml b/foundry.toml index d1e4edb..de033a9 100644 --- a/foundry.toml +++ b/foundry.toml @@ -32,4 +32,4 @@ tab_width = 4 wrap_comments = true [rpc_endpoints] -sepolia = "${SEPOLIA_RPC_URL}" +mainnet = "${MAINNET_RPC_URL}" diff --git a/lockup/BatchLDStreamCreator.sol b/lockup/BatchLDStreamCreator.sol index 433c111..8b75ee8 100644 --- a/lockup/BatchLDStreamCreator.sol +++ b/lockup/BatchLDStreamCreator.sol @@ -9,11 +9,11 @@ import { ISablierLockup } from "@sablier/lockup/src/interfaces/ISablierLockup.so import { BatchLockup, Broker, LockupDynamic } from "@sablier/lockup/src/types/DataTypes.sol"; contract BatchLDStreamCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); // See https://docs.sablier.com/guides/lockup/deployments for all deployments - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); - ISablierBatchLockup public constant BATCH_LOCKUP = ISablierBatchLockup(0xd4294579236eE290668c8FdaE9403c4F00D914f0); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); + ISablierBatchLockup public constant BATCH_LOCKUP = ISablierBatchLockup(0x3F6E8a8Cffe377c4649aCeB01e6F20c60fAA356c); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function batchCreateStreams(uint128 perStreamAmount) public returns (uint256[] memory streamIds) { diff --git a/lockup/BatchLLStreamCreator.sol b/lockup/BatchLLStreamCreator.sol index 48b747b..2566fbb 100644 --- a/lockup/BatchLLStreamCreator.sol +++ b/lockup/BatchLLStreamCreator.sol @@ -9,11 +9,11 @@ import { ISablierBatchLockup } from "@sablier/lockup/src/interfaces/ISablierBatc import { BatchLockup } from "@sablier/lockup/src/types/DataTypes.sol"; contract BatchLLStreamCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); // See https://docs.sablier.com/guides/lockup/deployments for all deployments - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); - ISablierBatchLockup public constant BATCH_LOCKUP = ISablierBatchLockup(0xd4294579236eE290668c8FdaE9403c4F00D914f0); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); + ISablierBatchLockup public constant BATCH_LOCKUP = ISablierBatchLockup(0x3F6E8a8Cffe377c4649aCeB01e6F20c60fAA356c); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function batchCreateStreams(uint128 perStreamAmount) public returns (uint256[] memory streamIds) { diff --git a/lockup/BatchLTStreamCreator.sol b/lockup/BatchLTStreamCreator.sol index af523dd..a48c5c4 100644 --- a/lockup/BatchLTStreamCreator.sol +++ b/lockup/BatchLTStreamCreator.sol @@ -8,11 +8,11 @@ import { ISablierLockup } from "@sablier/lockup/src/interfaces/ISablierLockup.so import { BatchLockup, Broker, LockupTranched } from "@sablier/lockup/src/types/DataTypes.sol"; contract BatchLTStreamCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); // See https://docs.sablier.com/guides/lockup/deployments for all deployments - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); - ISablierBatchLockup public constant BATCH_LOCKUP = ISablierBatchLockup(0xd4294579236eE290668c8FdaE9403c4F00D914f0); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); + ISablierBatchLockup public constant BATCH_LOCKUP = ISablierBatchLockup(0x3F6E8a8Cffe377c4649aCeB01e6F20c60fAA356c); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function batchCreateStreams(uint128 perStreamAmount) public returns (uint256[] memory streamIds) { diff --git a/lockup/BatchStreamCreator.t.sol b/lockup/BatchStreamCreator.t.sol index 2d80aaf..cfc49c5 100644 --- a/lockup/BatchStreamCreator.t.sol +++ b/lockup/BatchStreamCreator.t.sol @@ -16,8 +16,8 @@ contract BatchStreamCreatorTest is Test { address internal user; function setUp() public { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the stream creators dynamicCreator = new BatchLDStreamCreator(); diff --git a/lockup/LockupDynamicCurvesCreator.sol b/lockup/LockupDynamicCurvesCreator.sol index d87ff95..236e2e8 100644 --- a/lockup/LockupDynamicCurvesCreator.sol +++ b/lockup/LockupDynamicCurvesCreator.sol @@ -12,9 +12,9 @@ import { Broker, Lockup, LockupDynamic } from "@sablier/lockup/src/types/DataTyp /// https://docs.sablier.com/concepts/lockup/stream-shapes#lockup-dynamic /// Visualizing the curves while reviewing this code is recommended. The X axis will be assumed to represent "days". contract LockupDynamicCurvesCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function createStream_Exponential() external returns (uint256 streamId) { diff --git a/lockup/LockupDynamicCurvesCreator.t.sol b/lockup/LockupDynamicCurvesCreator.t.sol index 9d0e578..b3e943c 100644 --- a/lockup/LockupDynamicCurvesCreator.t.sol +++ b/lockup/LockupDynamicCurvesCreator.t.sol @@ -12,8 +12,8 @@ contract LockupDynamicCurvesCreatorTest is Test { address internal user; function setUp() public { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the stream creator creator = new LockupDynamicCurvesCreator(); diff --git a/lockup/LockupDynamicStreamCreator.sol b/lockup/LockupDynamicStreamCreator.sol index a9151c6..9ed1e10 100644 --- a/lockup/LockupDynamicStreamCreator.sol +++ b/lockup/LockupDynamicStreamCreator.sol @@ -11,9 +11,9 @@ import { Broker, Lockup, LockupDynamic } from "@sablier/lockup/src/types/DataTyp /// @dev This code is referenced in the docs: /// https://docs.sablier.com/guides/lockup/examples/create-stream/lockup-dynamic contract LockupDynamicStreamCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function createStream(uint128 amount0, uint128 amount1) public returns (uint256 streamId) { diff --git a/lockup/LockupLinearCurvesCreator.sol b/lockup/LockupLinearCurvesCreator.sol index a79d1ab..0b605aa 100644 --- a/lockup/LockupLinearCurvesCreator.sol +++ b/lockup/LockupLinearCurvesCreator.sol @@ -11,9 +11,9 @@ import { Broker, Lockup, LockupLinear } from "@sablier/lockup/src/types/DataType /// https://docs.sablier.com/concepts/lockup/stream-shapes#lockup-linear /// Visualizing the curves while reviewing this code is recommended. The X axis will be assumed to represent "days". contract LockupLinearCurvesCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function createStream_Linear() public returns (uint256 streamId) { diff --git a/lockup/LockupLinearCurvesCreator.t.sol b/lockup/LockupLinearCurvesCreator.t.sol index 70f0bae..9f2d529 100644 --- a/lockup/LockupLinearCurvesCreator.t.sol +++ b/lockup/LockupLinearCurvesCreator.t.sol @@ -12,8 +12,8 @@ contract LockupLinearCurvesCreatorTest is Test { address internal user; function setUp() public { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the stream creator creator = new LockupLinearCurvesCreator(); diff --git a/lockup/LockupLinearStreamCreator.sol b/lockup/LockupLinearStreamCreator.sol index 48e5a45..0589976 100644 --- a/lockup/LockupLinearStreamCreator.sol +++ b/lockup/LockupLinearStreamCreator.sol @@ -10,9 +10,9 @@ import { Broker, Lockup, LockupLinear } from "@sablier/lockup/src/types/DataType /// @dev This code is referenced in the docs: /// https://docs.sablier.com/guides/lockup/examples/create-stream/lockup-linear contract LockupLinearStreamCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function createStream(uint128 totalAmount) public returns (uint256 streamId) { diff --git a/lockup/LockupStreamCreator.t.sol b/lockup/LockupStreamCreator.t.sol index 64fe218..e1f54b5 100644 --- a/lockup/LockupStreamCreator.t.sol +++ b/lockup/LockupStreamCreator.t.sol @@ -16,8 +16,8 @@ contract LockupStreamCreatorTest is Test { address internal user; function setUp() public { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the stream creators dynamicCreator = new LockupDynamicStreamCreator(); diff --git a/lockup/LockupTranchedCurvesCreator.sol b/lockup/LockupTranchedCurvesCreator.sol index ae97371..ed8a96e 100644 --- a/lockup/LockupTranchedCurvesCreator.sol +++ b/lockup/LockupTranchedCurvesCreator.sol @@ -11,9 +11,9 @@ import { Broker, Lockup, LockupTranched } from "@sablier/lockup/src/types/DataTy /// https://docs.sablier.com/concepts/lockup/stream-shapes#lockup-tranched /// Visualizing the curves while reviewing this code is recommended. The X axis will be assumed to represent "days". contract LockupTranchedCurvesCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); function createStream_UnlockInSteps() external returns (uint256 streamId) { // Declare the total amount as 100 DAI diff --git a/lockup/LockupTranchedCurvesCreator.t.sol b/lockup/LockupTranchedCurvesCreator.t.sol index a074e8c..b039b2b 100644 --- a/lockup/LockupTranchedCurvesCreator.t.sol +++ b/lockup/LockupTranchedCurvesCreator.t.sol @@ -12,8 +12,8 @@ contract LockupTranchedCurvesCreatorTest is Test { address internal user; function setUp() public { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Deploy the stream creator creator = new LockupTranchedCurvesCreator(); diff --git a/lockup/LockupTranchedStreamCreator.sol b/lockup/LockupTranchedStreamCreator.sol index a0c21ee..97c042e 100644 --- a/lockup/LockupTranchedStreamCreator.sol +++ b/lockup/LockupTranchedStreamCreator.sol @@ -10,9 +10,9 @@ import { Broker, Lockup, LockupTranched } from "@sablier/lockup/src/types/DataTy /// @dev This code is referenced in the docs: /// https://docs.sablier.com/guides/lockup/examples/create-stream/lockup-tranched contract LockupTranchedStreamCreator { - // Sepolia addresses - IERC20 public constant DAI = IERC20(0x68194a729C2450ad26072b3D33ADaCbcef39D574); - ISablierLockup public constant LOCKUP = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + // Mainnet addresses + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); + ISablierLockup public constant LOCKUP = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); /// @dev For this function to work, the sender must have approved this dummy contract to spend DAI. function createStream(uint128 amount0, uint128 amount1) public returns (uint256 streamId) { diff --git a/lockup/StreamManagementWithHook.t.sol b/lockup/StreamManagementWithHook.t.sol index dde955f..d5d43bc 100644 --- a/lockup/StreamManagementWithHook.t.sol +++ b/lockup/StreamManagementWithHook.t.sol @@ -28,7 +28,7 @@ contract StreamManagementWithHookTest is Test { address internal sablierAdmin; function setUp() public { - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + vm.createSelectFork("mainnet"); // Create a test users alice = makeAddr("Alice"); diff --git a/lockup/tests/stake-sablier-nft-test/StakeSablierNFT.t.sol b/lockup/tests/stake-sablier-nft-test/StakeSablierNFT.t.sol index 26b5d1c..a539060 100644 --- a/lockup/tests/stake-sablier-nft-test/StakeSablierNFT.t.sol +++ b/lockup/tests/stake-sablier-nft-test/StakeSablierNFT.t.sol @@ -43,11 +43,11 @@ abstract contract StakeSablierNFT_Fork_Test is Test { event Staked(address indexed user, uint256 streamId); event Unstaked(address indexed user, uint256 streamId); - IERC20 public constant DAI = IERC20(0x776b6fC2eD15D6Bb5Fc32e0c89DE68683118c62A); - IERC20 public constant USDC = IERC20(0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238); + IERC20 public constant DAI = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); + IERC20 public constant USDC = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); // Get the latest deployment address from the docs: https://docs.sablier.com/guides/lockup/deployments. - ISablierLockup internal constant SABLIER = ISablierLockup(0xC2Da366fD67423b500cDF4712BdB41d0995b0794); + ISablierLockup internal constant SABLIER = ISablierLockup(0x7C01AA3783577E15fD7e272443D44B92d5b21056); // Set a stream ID to stake. uint256 internal stakingStreamId = 2; @@ -65,8 +65,8 @@ abstract contract StakeSablierNFT_Fork_Test is Test { Users internal users; function setUp() public { - // Fork Ethereum Sepolia - vm.createSelectFork({ urlOrAlias: "sepolia", blockNumber: 7_497_776 }); + // Fork Ethereum Mainnet + vm.createSelectFork("mainnet"); // Create users. users.admin = makeAddr("admin");