-
Notifications
You must be signed in to change notification settings - Fork 120
Expand file tree
/
Copy pathDeploySimplexPaymaster.s.sol
More file actions
57 lines (46 loc) · 2.7 KB
/
DeploySimplexPaymaster.s.sol
File metadata and controls
57 lines (46 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;
import "forge-std/Script.sol";
import "stringutils/strings.sol";
import {SimplexPaymaster, AggregatorV3Interface} from "../src/utils/SimplexPaymaster.sol";
import {BaseScript} from "./BaseScript.sol";
contract DeployScript is BaseScript {
using strings for *;
function deploy() internal override {
// ── Read from TOML config ────────────────────────────────────
address nativeOracleAddr = config.get("NATIVE_ORACLE").toAddress();
uint256 markupBps = vm.envOr("MARKUP_BPS", uint256(200)); // default 2%
address treasury = vm.envOr("TREASURY", admin); // default to owner
// ── Deploy SimplexPaymaster ──────────────────────────────────
SimplexPaymaster paymaster = new SimplexPaymaster{salt: salt}(
AggregatorV3Interface(nativeOracleAddr),
markupBps,
treasury,
admin
);
console.log("SimplexPaymaster deployed at:", address(paymaster));
console.log(" nativeOracle:", nativeOracleAddr);
console.log(" markupBps:", markupBps);
console.log(" treasury:", treasury);
console.log(" owner:", admin);
// ── Register tokens from config ──────────────────────────────
address usdcToken = config.get("USDC_TOKEN").toAddress();
address usdcOracle = config.get("USDC_ORACLE").toAddress();
address usdtToken = vm.envOr("USDT_TOKEN", address(0));
address usdtOracle = vm.envOr("USDT_ORACLE", address(0));
if (usdcToken != address(0) && usdcOracle != address(0)) {
paymaster.registerToken(usdcToken, AggregatorV3Interface(usdcOracle));
console.log(" Registered USDC:", usdcToken, "oracle:", usdcOracle);
}
if (usdtToken != address(0) && usdtOracle != address(0)) {
paymaster.registerToken(usdtToken, AggregatorV3Interface(usdtOracle));
console.log(" Registered USDT:", usdtToken, "oracle:", usdtOracle);
}
// ── Update config ────────────────────────────────────────────
config.set("SIMPLEX_PAYMASTER", address(paymaster));
console.log("");
console.log("=== IMPORTANT: Post-deployment steps ===");
console.log("1. Fund EntryPoint deposit for the paymaster:");
console.log(" cast send <ENTRY_POINT> \"depositTo(address)\" ", address(paymaster), " --value 0.01ether");
}
}