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
814 changes: 814 additions & 0 deletions broadcast/CreatePool.s.sol/8453/run-1764233242586.json

Large diffs are not rendered by default.

814 changes: 814 additions & 0 deletions broadcast/CreatePool.s.sol/8453/run-latest.json

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions broadcast/base.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
"SelfPeggingAssetBeacon": "0xF153ea88B267e4d81988f1963B97eD6dbD1795fD",
"WSPATokenBeacon": "0x1fDDf101d9451F2AEF5d13dE9b89425E42aB2e16",
"Zap": "0x711d36E282c54980b09eDc6d25786D0a9BE7F57F",
"weETHwstETHKeeper": "0x0c54c88a4c31D500180DaD1F4F40a895236c9357",
"weETHwstETHParameterRegistry": "0xf1177Fd859c6e980A8FE218C40eca06DfdEf5A68",
"weETHwstETHPool": "0x734216b675F9B0e5450832C1C4f1cF6a8321f42b",
"weETHwstETHRampAController": "0x1C47824843196E8C23BE6Eb289577FC4F8a22d19",
"weETHwstETHSPAToken": "0x9B82BC85Be99dfa7922b5A86A8334dF2046C998B",
"weETHwstETHWSPAToken": "0x9bFDBB3b2e676d1E63E78e36DCE71c44eD4F0b4C",
"weETHwstETH_tokenA_oracle": "0x969dC3aE15Eb2a2876Ba885Ae006F6cBCbd7ADea",
"weETHwstETH_tokenB_oracle": "0x031bd5F6Af5a9D1FF199432C758EE50B89718349"
"weETHwstETHKeeper": "0xF70E15a8E4F7219052d35f8187Be860eBe2Cb9D2",
"weETHwstETHParameterRegistry": "0x08DaC97488AbC2526C75E0d0844054Fa1C25774c",
"weETHwstETHPool": "0xc23550dE362dacB780971DAF210aaFB24E203A0D",
"weETHwstETHRampAController": "0x89901198007443A93Ff2CA6D1D426b95f6aF6679",
"weETHwstETHSPAToken": "0x5D181180B4d79957DCD21772936812599a1ECAb7",
"weETHwstETHWSPAToken": "0x8411cF677a0f5412D47860Ce611a2678A3C015c0",
"weETHwstETH_tokenA_oracle": "0xf5970dF8e00B6589F0BCC6299851aF9C8BAB5457",
"weETHwstETH_tokenB_oracle": "0x38154b30Fd0Df7DA2035184382763fEa31a888ec"
}
26 changes: 9 additions & 17 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,14 @@ wrap_comments = true
single_line_statement_blocks = "preserve"

[rpc_endpoints]
arbitrum = "https://arb1.arbitrum.io/rpc"
base = "https://mainnet.base.org"
mainnet = "https://ethereum.blockpi.network/v1/rpc/public"
optimism = "https://mainnet.optimism.io"
sepolia = "https://ethereum-sepolia.blockpi.network/v1/rpc/public"
basesepolia = "https://sepolia.base.org"
arbitrumsepolia = "https://sepolia-rollup.arbitrum.io/rpc"
opsepolia = "https://sepolia.optimism.io"
monadtestnet = "https://testnet-rpc.monad.xyz"
bera-bepolia = "https://bepolia.rpc.berachain.com"
hyper-testnet = "https://rpc.hyperliquid-testnet.xyz/evm"
mainnet = "${MAINNET_RPC}"
optimism = "${OPTIMISM_RPC}"
arbitrum = "${ARBITRUM_RPC}"
base = "${BASE_RPC}"

[etherscan]
arbitrumsepolia = { key = "${ETHERSCAN_ARBITRUM_KEY}", chain = 421614 }
basesepolia = { key = "${ETHERSCAN_BASE_KEY}", chain = 84532 }
opsepolia = { key = "${ETHERSCAN_OP_KEY}", chain = 11155420 }
arbitrum = { key = "${ETHERSCAN_ARBITRUM_KEY}", chain = 42161 }
base = { key = "${ETHERSCAN_BASE_KEY}", chain = 8453 }
optimism = { key = "${ETHERSCAN_OP_KEY}", chain = 10 }
mainnet = { key = "${ETHERSCAN_V2_KEY}", chain = 1 }
arbitrum = { key = "${ETHERSCAN_V2_KEY}", chain = 42161 }
optimism = { key = "${ETHERSCAN_V2_KEY}", chain = 10 }
base = { key = "${ETHERSCAN_V2_KEY}", chain = 8453 }
basesepolia = { key = "${ETHERSCAN_V2_KEY}", chain = 84532 }
51 changes: 18 additions & 33 deletions script/base/ChainConfig.sol
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ contract ChainConfig is Script {
// Track current network and environment for config loading
string internal currentNetwork;
string internal currentEnvironment;
string internal currentVersion = "1.0.1";

/**
* @notice Load chain configuration from JSON file
Expand All @@ -96,22 +97,22 @@ contract ChainConfig is Script {
currentNetwork = networkName;
currentEnvironment = environment;

string memory chainPath = string.concat("./script/configs/chains/", environment, "/", networkName, ".json");
string memory chainPath = string.concat("./script/configs/", networkName, ".json");
string memory chainJson = vm.readFile(chainPath);

// Load basic chain data
chainData.chainId = chainJson.readUint(".chainId");
chainData.name = chainJson.readString(".name");
chainData.rpcUrl = chainJson.readString(".rpcUrl");
string memory basePath = string.concat(".versions.", currentVersion);

// Load sequencer if exists (only for L2s)
if (vm.keyExists(chainJson, ".oracles.sequencer")) {
chainData.sequencer = chainJson.readAddress(".oracles.sequencer");
chainData.chainId = chainJson.readUint(string.concat(basePath, ".chainId"));
chainData.name = chainJson.readString(string.concat(basePath, ".name"));
chainData.rpcUrl = chainJson.readString(string.concat(basePath, ".rpcUrl"));

if (vm.keyExists(chainJson, string.concat(basePath, ".oracles.sequencer"))) {
chainData.sequencer = chainJson.readAddress(string.concat(basePath, ".oracles.sequencer"));
} else {
chainData.sequencer = address(0);
}

console2.log("Loaded config for:", networkName);
console2.log("Loaded config for:", networkName, "version:", currentVersion);
console2.log("Loaded chain ID:", chainData.chainId);
}

Expand All @@ -126,15 +127,12 @@ contract ChainConfig is Script {
return chainData.tokens[tokenKey];
}

// Load from JSON
string memory chainPath =
string.concat("./script/configs/chains/", currentEnvironment, "/", currentNetwork, ".json");
string memory chainPath = string.concat("./script/configs/", currentNetwork, ".json");
string memory chainJson = vm.readFile(chainPath);
string memory tokenPath = string.concat(".tokens.", tokenKey);
string memory tokenPath = string.concat(".versions.", currentVersion, ".tokens.", tokenKey);

address tokenAddress = chainJson.readAddress(tokenPath);
chainData.tokens[tokenKey] = tokenAddress;

return tokenAddress;
}

Expand All @@ -143,12 +141,11 @@ contract ChainConfig is Script {
* @return Factory defaults for this chain
*/
function loadFactoryDefaults() internal view returns (FactoryDefaults memory) {
string memory chainPath =
string.concat("./script/configs/chains/", currentEnvironment, "/", currentNetwork, ".json");
string memory chainPath = string.concat("./script/configs/", currentNetwork, ".json");
string memory chainJson = vm.readFile(chainPath);

FactoryDefaults memory defaults;
string memory basePath = ".factoryDefaults";
string memory basePath = string.concat(".versions.", currentVersion, ".factoryDefaults");

defaults.mintFee = chainJson.readUint(string.concat(basePath, ".mintFee"));
defaults.swapFee = chainJson.readUint(string.concat(basePath, ".swapFee"));
Expand All @@ -168,13 +165,13 @@ contract ChainConfig is Script {
* @param environment The environment ("mainnet" or "testnet")
*/
function loadPoolConfigs(string memory networkName, string memory environment) internal {
string memory poolPath = string.concat("./script/configs/pools/", environment, "/", networkName, "-pools.json");
string memory poolPath = string.concat("./script/configs/", networkName, ".json");
string memory poolJson = vm.readFile(poolPath);

// Load pools by iterating until we hit an error
uint256 i = 0;
while (true) {
string memory basePath = string.concat(".pools[", vm.toString(i), "]");
string memory basePath = string.concat(".versions.", currentVersion, ".pools[", vm.toString(i), "]");

// Check if this index exists
if (!vm.keyExists(poolJson, string.concat(basePath, ".name"))) {
Expand All @@ -190,6 +187,7 @@ contract ChainConfig is Script {
// Load oracle configurations (optional - only for Oracle token types)
pool.tokenAOracle = _loadOracleConfig(poolJson, string.concat(basePath, ".tokenAOracle"));
pool.tokenBOracle = _loadOracleConfig(poolJson, string.concat(basePath, ".tokenBOracle"));

pool.enabled = poolJson.readBool(string.concat(basePath, ".enabled"));
pool.description = poolJson.readString(string.concat(basePath, ".description"));

Expand Down Expand Up @@ -279,20 +277,7 @@ contract ChainConfig is Script {
}

/**
* @notice Helper to get array length from JSON bytes
*/
function _getArrayLength(bytes memory data) private pure returns (uint256) {
// Decode as a dynamic array to get length
// The first 32 bytes contain the array length
uint256 len;
assembly {
len := mload(add(data, 0x20))
}
return len;
}

/**
* @notice Get configured chain ID from loaded config
* View helpers
*/
function getConfiguredChainId() internal view returns (uint256) {
return chainData.chainId;
Expand Down
64 changes: 64 additions & 0 deletions script/configs/base-mainnet.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"protocol": "tapio",
"versions": {
"1.0.1": {
"chainId": 8453,
"name": "Base",
"rpcUrl": "https://mainnet.base.org",
"tokens": {
"usdc": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"usdt": "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2",
"weth": "0x4200000000000000000000000000000000000006",
"weeth": "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A",
"wsteth": "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"
},
"factoryDefaults": {
"mintFee": 0,
"swapFee": 5000000,
"redeemFee": 0,
"offPegFeeMultiplier": 10000000000,
"A": 100,
"minRampTime": 1800,
"exchangeRateFeeFactor": 0,
"bufferPercent": 1000000000
},
"oracles": {
"sequencer": "0xBCF85224fc0756B9Fa45aA7892530B47e10b6433"
},
"pools": [
{
"name": "weETHwstETH",
"description": "WEETH/WSTETH ETH Pool",
"enabled": true,
"tokenA": "weeth",
"tokenB": "wsteth",
"tokenAType": "Oracle",
"tokenBType": "Oracle",
"tokenAOracle": {
"type": "chainlink",
"feeds": [{ "feed": "0x35e9D7001819Ea3B39Da906aE6b06A62cfe2c181", "heartbeat": "84600", "decimals": "18" }]
},
"tokenBOracle": {
"type": "chainlink",
"feeds": [{ "feed": "0xB88BAc61a4Ca37C43a3725912B1f472c9A5bc061", "heartbeat": "84600", "decimals": "18" }]
},
"spa": {
"mintFee": 0,
"swapFee": 5000000,
"redeemFee": 0,
"offPegFeeMultiplier": 10000000000,
"A": 100,
"minRampTime": 1800,
"exchangeRateFeeFactor": 0,
"bufferPercent": 1000000000
},
"initialMint": {
"enabled": true,
"amountTokenA": "10000000000000",
"amountTokenB": "10000000000000"
}
}
]
}
}
}
4 changes: 2 additions & 2 deletions script/configs/pools/mainnet/base-pools.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
"tokenBType": "Oracle",
"tokenAOracle": {
"type": "chainlink",
"feeds": [{ "feed": "0xFC1415403EbB0c693f9a7844b92aD2Ff24775C65", "heartbeat": "84600", "decimals": "18" }]
"feeds": [{ "feed": "0x35e9D7001819Ea3B39Da906aE6b06A62cfe2c181", "heartbeat": "84600", "decimals": "18" }]
},
"tokenBOracle": {
"type": "chainlink",
"feeds": [{ "feed": "0x43a5C292A453A3bF3606fa856197f09D7B74251a", "heartbeat": "84600", "decimals": "18" }]
"feeds": [{ "feed": "0xB88BAc61a4Ca37C43a3725912B1f472c9A5bc061", "heartbeat": "84600", "decimals": "18" }]
},
"spa": {
"mintFee": 0,
Expand Down
Loading