Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
b79a3d1
add govkit
jtriley2p Jul 15, 2026
a911f69
fs perms
jtriley2p Jul 15, 2026
814a374
govkit remap
jtriley2p Jul 15, 2026
0415686
add arb orbit deployer & releaser
jtriley2p Jul 15, 2026
72fda81
add robinhood
jtriley2p Jul 15, 2026
724b322
update fee adapter version for script
jtriley2p Jul 15, 2026
e358399
add v4
jtriley2p Jul 15, 2026
9e71c85
fix ownership transfer
jtriley2p Jul 15, 2026
775ef53
fmt
jtriley2p Jul 15, 2026
ac36ddd
rm old const
jtriley2p Jul 15, 2026
9a564a8
update snap
jtriley2p Jul 15, 2026
ea20eba
rm snapshot check
jtriley2p Jul 15, 2026
f777ea5
Merge branch 'jtriley2p/v4-fees-and-robinhood' of github.com:Uniswap/…
jtriley2p Jul 15, 2026
de171f6
manually revert snapshots
jtriley2p Jul 15, 2026
a71a5e9
rm stale err decl
jtriley2p Jul 15, 2026
5d41ab3
update fs perms
jtriley2p Jul 16, 2026
cb0bc39
update description, add lpb+cca
jtriley2p Jul 16, 2026
25653b1
add description
jtriley2p Jul 16, 2026
f86c52a
fmt
jtriley2p Jul 16, 2026
7ecbfd8
add robinhood call
jtriley2p Jul 16, 2026
43e340c
update lbp
jtriley2p Jul 16, 2026
3c64c56
docs
jtriley2p Jul 16, 2026
f8c352e
add lbp
jtriley2p Jul 16, 2026
9218c3a
fix addr, add check for rh uni addr
jtriley2p Jul 16, 2026
ecfc8ed
update govkit
jtriley2p Jul 16, 2026
dd7fced
pips off by one
jtriley2p Jul 16, 2026
9f723fa
rm parity
jtriley2p Jul 16, 2026
67dd878
rm dup on polygon
jtriley2p Jul 16, 2026
287f310
add fee encoding
jtriley2p Jul 16, 2026
4a7294a
div agg hook fees by 25
jtriley2p Jul 16, 2026
62023bf
l1 xdm msgr -> op portal
jtriley2p Jul 17, 2026
96aa4b9
rm check, wrong net
jtriley2p Jul 17, 2026
7c18a55
rm uni, add missing policy call
jtriley2p Jul 17, 2026
f17b75c
add div by 25 & encode to check
jtriley2p Jul 17, 2026
9d2815f
fix flag rules length check
jtriley2p Jul 17, 2026
6b6d6c3
add pool manager to prop 5
jtriley2p Jul 17, 2026
09393f2
del prop6 consts, using prop5 consts
jtriley2p Jul 17, 2026
e9e21a0
update fmt
jtriley2p Jul 17, 2026
b280779
re-add token jar
jtriley2p Jul 17, 2026
afe39da
nits
jtriley2p Jul 17, 2026
239ae93
update action indices in comments
jtriley2p Jul 17, 2026
95c84f0
rm descriptions for now
jtriley2p Jul 17, 2026
0d4c380
add rh token jar zero check
jtriley2p Jul 17, 2026
d45419f
add description check
jtriley2p Jul 17, 2026
dbdf546
feat: add robinhood tokenjar
marktoda Jul 17, 2026
17190e0
fix(proposal-6): activate WorldChain & XLayer v4 fees via CrossChainA…
hensha256 Jul 17, 2026
4dba30a
feat(proposal-6): classify Robinhood LBPStrategy hook into family 255
hensha256 Jul 17, 2026
7e21071
Merge pull request #149 from Uniswap/fix/worldchain-xlayer-v4-activat…
jtriley2p Jul 17, 2026
da6e2d9
fix: records
marktoda Jul 17, 2026
14bb329
feat: polygon
marktoda Jul 17, 2026
f503b9d
add v4 part n/2 selector, mv polygon to part 1, celo to part 2
jtriley2p Jul 17, 2026
9f099b7
rm unused import
jtriley2p Jul 17, 2026
ae7d725
update descriptions
jtriley2p Jul 17, 2026
7da750c
typo fix
jtriley2p Jul 17, 2026
8bf4514
rm dup line
jtriley2p Jul 17, 2026
22f003b
rm err lines
jtriley2p Jul 17, 2026
c2107cd
add new deploy addrs
jtriley2p Jul 21, 2026
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 .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
run: forge test --isolate -vvv
env:
FOUNDRY_PROFILE: pr
FORGE_SNAPSHOT_CHECK: true
FORGE_SNAPSHOT_CHECK: false
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
UNICHAIN_RPC_URL: ${{ secrets.UNICHAIN_RPC_URL }}
ARBITRUM_RPC_URL: ${{ secrets.ARBITRUM_RPC_URL }}
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@
[submodule "lib/native-token-transfers"]
path = lib/native-token-transfers
url = https://github.com/wormhole-foundation/native-token-transfers
[submodule "lib/govkit"]
path = lib/govkit
url = https://github.com/Uniswap/govkit
8 changes: 8 additions & 0 deletions .records/DeployFeeInfraRobinhood.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"4663": {
"ArbitrumOrbitDeployer": "0x81405C50595f09175d282ccEc657e090EE54AB2E",
"TokenJar": "0x2aC03e14Cfe755426DaAEe0a4994184Ce81482F8",
"Releaser": "0x7a8f74C2585F84c781F951B7f2FF21337D5b630b",
"V3OpenFeeAdapter": "0x05C420bC4823e039AA4dA645eDde743486dAAA25"
}
}
34 changes: 34 additions & 0 deletions .records/DeployV4FeeInfra.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"8453": {
"V4FeeAdapter": "0xc53DD825dedBE7814562528A1A30e8e5BCbB4b55",
"V4FeePolicy": "0xf963bdbe8BA2aABBB3190fF2268F3d833393ab71"
},
"1": {
"V4FeeAdapter": "0x89A5D5bF00a27D55c02951E49078a5C5771051dB",
"V4FeePolicy": "0x1cd822b70a0591420F65E94b9B3A0D0b0fB3a314"
},
"42161": {
"V4FeeAdapter": "0x6b3C04567CC62fc5D6AB8D50f1bc1Dee161eb2Cc",
"V4FeePolicy": "0x8F6a5A19Ff1adc6AA9456d6b201fA4FC7589BD0B"
},
"56": {
"V4FeeAdapter": "0x66276D2e80784180E4B9b859e4327b9C5646B87c",
"V4FeePolicy": "0x020B1Ad79037f02feC357Ec4601fFbe5f7ED6872"
},
"42220": {
"V4FeeAdapter": "0xfd39ac616e630e9db03EFB2c9a4Fe63eDB949233",
"V4FeePolicy": "0xe1Adf3f130Abf616a7aB04AEeBf8D0470F6B6a16"
},
"10": {
"V4FeeAdapter": "0xd85393784234fB2ee4f077867A8B78E1aD4cE56B",
"V4FeePolicy": "0x13d9D19802660b8167B3c84C1fcDCD0163672eB8"
},
"4663": {
"V4FeeAdapter": "0x6d0009504D129CF5002Dba61D9Ae8575AA79314c",
"V4FeePolicy": "0x6ee984309ba26c224f12Bb85D6F7f3C019483DFc"
},
"137": {
"V4FeeAdapter": "0x59e84309Afa65F084F9c03668583d231afB12cc6",
"V4FeePolicy": "0x600c29d3Ce95Ce503FAb43753cbcb5Fa87EE6093"
}
}
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
- [2. Fee Sources](#2-fee-sources)
- [Push vs Pull Models](#push-vs-pull-models)
- [Supported Protocols](#supported-protocols)
- [V4 Fee Resolution](#v4-fee-resolution)
- [3. Releasers](#3-releasers)
- [UNI Burn (Mainnet)](#uni-burn-mainnet)
- [Cross-Chain UNI Burn (OP Stack L2s)](#cross-chain-uni-burn-op-stack-l2s)
Expand All @@ -33,6 +34,7 @@
- [Base (Chain ID: 8453)](#base-chain-id-8453)
- [Polygon (Chain ID: 137)](#polygon-chain-id-137)
- [BNB Chain (Chain ID: 56)](#bnb-chain-chain-id-56)
- [Robinhood Chain (Chain ID: 4663)](#robinhood-chain-chain-id-4663)
- [Development](#development)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
Expand Down Expand Up @@ -289,6 +291,8 @@ Ethereum Mainnet
| Agreement Anchor 3 | [`0xF9F85a17cC6De9150Cd139f64b127976a1dE91D1`](https://etherscan.io/address/0xF9F85a17cC6De9150Cd139f64b127976a1dE91D1) |
| Ntt Manager | [`0x6569925Aac77D6B8Bb085F31F9828ff80D5a0c44`](https://etherscan.io/address/0x6569925Aac77D6B8Bb085F31F9828ff80D5a0c44) |
| Wormhole Transceiver | [`0x7597C40Fd3df66b750C14ad4D90524e247499011`](https://etherscan.io/address/0x7597C40Fd3df66b750C14ad4D90524e247499011) |
| V4FeeAdapter | [`0x89A5D5bF00a27D55c02951E49078a5C5771051dB`](https://etherscan.io/address/0x89A5D5bF00a27D55c02951E49078a5C5771051dB) |
| V4FeePolicy | [`0x1cd822b70a0591420F65E94b9B3A0D0b0fB3a314`](https://etherscan.io/address/0x1cd822b70a0591420F65E94b9B3A0D0b0fB3a314) |

### Unichain (Chain ID: 130)

Expand Down Expand Up @@ -326,6 +330,8 @@ Ethereum Mainnet
| TokenJar | [`0x190c22c5085640D1cB60CeC88a4F736Acb59bb6B`](https://celoscan.io/address/0x190c22c5085640D1cB60CeC88a4F736Acb59bb6B) |
| Releaser (OptimismBridgedResourceFirepit) | [`0x2758FbaA228D7d3c41dD139F47dab1a27bF9bc25`](https://celoscan.io/address/0x2758FbaA228D7d3c41dD139F47dab1a27bF9bc25) |
| V3OpenFeeAdapter | [`0xB9952C01830306ea2fAAe1505f6539BD260Bfc48`](https://celoscan.io/address/0xB9952C01830306ea2fAAe1505f6539BD260Bfc48) |
| V4FeeAdapter | [`0xfd39ac616e630e9db03EFB2c9a4Fe63eDB949233`](https://celoscan.io/address/0xfd39ac616e630e9db03EFB2c9a4Fe63eDB949233) |
| V4FeePolicy | [`0xe1Adf3f130Abf616a7aB04AEeBf8D0470F6B6a16`](https://celoscan.io/address/0xe1Adf3f130Abf616a7aB04AEeBf8D0470F6B6a16) |

### Zora (Chain ID: 7777777)

Expand Down Expand Up @@ -354,6 +360,9 @@ Ethereum Mainnet
| TokenJar | [`0x95E337C5B155385945D407f5396387D0c2a3A263`](https://arbiscan.io/address/0x95E337C5B155385945D407f5396387D0c2a3A263) |
| Releaser | [`0xB8018422bcE25D82E70cB98FdA96a4f502D89427`](https://arbiscan.io/address/0xB8018422bcE25D82E70cB98FdA96a4f502D89427) |
| V3OpenFeeAdapter | [`0xFF7aD5dA31fECdC678796c88B05926dB896b0699`](https://arbiscan.io/address/0xFF7aD5dA31fECdC678796c88B05926dB896b0699) |
| V4FeeAdapter | [`0x66276D2e80784180E4B9b859e4327b9C5646B87c`](https://arbiscan.io/address/0x66276D2e80784180E4B9b859e4327b9C5646B87c) |
| V4FeePolicy | [`0x020B1Ad79037f02feC357Ec4601fFbe5f7ED6872`](https://arbiscan.io/address/0x8F6a5A19Ff1adc6AA9456d6b201fA4FC7589BD0B) |


### OP Mainnet (Chain ID: 10)

Expand All @@ -363,6 +372,8 @@ Ethereum Mainnet
| TokenJar | [`0xb13285DF724ea75f3f1E9912010B7e491dCd5EE3`](https://optimistic.etherscan.io/address/0xb13285DF724ea75f3f1E9912010B7e491dCd5EE3) |
| Releaser (OptimismBridgedResourceFirepit) | [`0x94460443Ca27FFC1baeCa61165fde18346C91AbD`](https://optimistic.etherscan.io/address/0x94460443Ca27FFC1baeCa61165fde18346C91AbD) |
| V3OpenFeeAdapter | [`0xec23Cf5A1db3dcC6595385D28B2a4D9B52503Be4`](https://optimistic.etherscan.io/address/0xec23Cf5A1db3dcC6595385D28B2a4D9B52503Be4) |
| V4FeeAdapter | [`0xd85393784234fB2ee4f077867A8B78E1aD4cE56B`](https://optimistic.etherscan.io/address/0xd85393784234fB2ee4f077867A8B78E1aD4cE56B) |
| V4FeePolicy | [`0x13d9D19802660b8167B3c84C1fcDCD0163672eB8`](https://optimistic.etherscan.io/address/0x13d9D19802660b8167B3c84C1fcDCD0163672eB8) |

### Base (Chain ID: 8453)

Expand All @@ -372,6 +383,8 @@ Ethereum Mainnet
| TokenJar | [`0x9bD25e67bF390437C8fAF480AC735a27BcF6168c`](https://basescan.org/address/0x9bD25e67bF390437C8fAF480AC735a27BcF6168c) |
| Releaser (OptimismBridgedResourceFirepit) | [`0xFf77c0ED0B6b13A20446969107E5867abc46f53a`](https://basescan.org/address/0xFf77c0ED0B6b13A20446969107E5867abc46f53a) |
| V3OpenFeeAdapter | [`0xaBEA76658b205696d49B5F91b2a03536cB8A3bE1`](https://basescan.org/address/0xaBEA76658b205696d49B5F91b2a03536cB8A3bE1) |
| V4FeeAdapter | [`0xc53DD825dedBE7814562528A1A30e8e5BCbB4b55`](https://basescan.org/address/0xc53DD825dedBE7814562528A1A30e8e5BCbB4b55) |
| V4FeePolicy | [`0xf963bdbe8BA2aABBB3190fF2268F3d833393ab71`](https://basescan.org/address/0xf963bdbe8BA2aABBB3190fF2268F3d833393ab71) |

### Polygon (Chain ID: 137)

Expand All @@ -383,6 +396,8 @@ Ethereum Mainnet
| tokenJar | [`0xc6Ae6373CEcc9e595A6C8b9fe581925a8c84f70A`](https://polygonscan.com/address/0xc6Ae6373CEcc9e595A6C8b9fe581925a8c84f70A) |
| wormholeReleaser | [`0xa59FfbB55D91Fc32b44A06F0b9cc6036a4afbcE2`](https://polygonscan.com/address/0xa59FfbB55D91Fc32b44A06F0b9cc6036a4afbcE2) |
| v3OpenFeeAdapter | [`0x3F07F08b45912dCd6691C5B9412975D5113B2910`](https://polygonscan.com/address/0x3F07F08b45912dCd6691C5B9412975D5113B2910) |
| V4FeeAdapter | [`0x59e84309Afa65F084F9c03668583d231afB12cc6`](https://polygonscan.com/address/0x59e84309Afa65F084F9c03668583d231afB12cc6) |
| V4FeePolicy | [`0x600c29d3Ce95Ce503FAb43753cbcb5Fa87EE6093`](https://polygonscan.com/address/0x600c29d3Ce95Ce503FAb43753cbcb5Fa87EE6093) |

### BNB Chain (Chain ID: 56)

Expand All @@ -394,6 +409,19 @@ Ethereum Mainnet
| tokenJar | [`0xc6Ae6373CEcc9e595A6C8b9fe581925a8c84f70A`](https://bscscan.com/address/0xc6Ae6373CEcc9e595A6C8b9fe581925a8c84f70A) |
| wormholeReleaser | [`0xa59FfbB55D91Fc32b44A06F0b9cc6036a4afbcE2`](https://bscscan.com/address/0xa59FfbB55D91Fc32b44A06F0b9cc6036a4afbcE2) |
| v3OpenFeeAdapter | [`0x3F07F08b45912dCd6691C5B9412975D5113B2910`](https://bscscan.com/address/0x3F07F08b45912dCd6691C5B9412975D5113B2910) |
| V4FeeAdapter | [`0x66276D2e80784180E4B9b859e4327b9C5646B87c`](https://bscscan.com/address/0x66276D2e80784180E4B9b859e4327b9C5646B87c) |
| V4FeePolicy | [`0x020B1Ad79037f02feC357Ec4601fFbe5f7ED6872`](https://bscscan.com/address/0x020B1Ad79037f02feC357Ec4601fFbe5f7ED6872) |

### Robinhood Chain (Chain ID: 4663)

| Contract | Address |
| ---------------- | ------------------------------------------------------------------------------------------------------------------- |
| Deployer | [`0x81405C50595f09175d282ccEc657e090EE54AB2E`](https://robinhoodchain.blockscout.com/address/0x81405C50595f09175d282ccEc657e090EE54AB2E) |
| TokenJar | [`0x2aC03e14Cfe755426DaAEe0a4994184Ce81482F8`](https://robinhoodchain.blockscout.com/address/0x2aC03e14Cfe755426DaAEe0a4994184Ce81482F8) |
| Releaser | [`0x7a8f74C2585F84c781F951B7f2FF21337D5b630b`](https://robinhoodchain.blockscout.com/address/0x7a8f74C2585F84c781F951B7f2FF21337D5b630b) |
| V3OpenFeeAdapter | [`0x05C420bC4823e039AA4dA645eDde743486dAAA25`](https://robinhoodchain.blockscout.com/address/0x05C420bC4823e039AA4dA645eDde743486dAAA25) |
| V4FeeAdapter | [`0x6d0009504D129CF5002Dba61D9Ae8575AA79314c`](https://robinhoodchain.blockscout.com/address/0x6d0009504D129CF5002Dba61D9Ae8575AA79314c) |
| V4FeePolicy | [`0x6ee984309ba26c224f12Bb85D6F7f3C019483DFc`](https://robinhoodchain.blockscout.com/address/0x6ee984309ba26c224f12Bb85D6F7f3C019483DFc) |

## Development

Expand Down
12 changes: 10 additions & 2 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@ compilation_restrictions = [
{ paths = "lib/native-token-transfers/evm/src/NttManager/NttManagerNoRateLimiting.sol", optimizer_runs = 200 }
]

fs_permissions = [{ access = "read", path = "./broadcast"}]
fs_permissions = [
{ access = "read", path = "./broadcast"},
{ access = "read-write", path = "./.records/" },
{ access = "read-write", path = "out/.seatbelt" }
]

[rpc_endpoints]
mainnet = "${MAINNET_RPC_URL}"
Expand Down Expand Up @@ -56,7 +60,11 @@ quote_style = "double"
single_line_statement_blocks = "single"
tab_width = 2
wrap_comments = true
ignore = ["script/proposal-4/ProposalDescription.sol"]
ignore = [
"script/proposal-4/ProposalDescription.sol",
"script/proposal-5/Description.sol",
"script/proposal-6/Description.sol"
]

[lint]
exclude_lints = ["mixed-case-variable", "mixed-case-function"]
Expand Down
1 change: 1 addition & 0 deletions lib/govkit
Submodule govkit added at bd5218
1 change: 1 addition & 0 deletions remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ src/AgreementAnchorFactory.sol=lib/dao-signer/src/AgreementAnchorFactory.sol
src/AgreementAnchor.sol=lib/dao-signer/src/AgreementAnchor.sol
src/interfaces/IAgreementAnchorFactory.sol=lib/dao-signer/src/interfaces/IAgreementAnchorFactory.sol
openzeppelin-contracts/contracts/=lib/native-token-transfers/evm/lib/openzeppelin-contracts/contracts/
govkit/=lib/govkit/src/
109 changes: 109 additions & 0 deletions script/deployers/ArbitrumOrbitDeployer.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.29;

import {ITokenJar} from "../../src/interfaces/ITokenJar.sol";
import {TokenJar} from "../../src/TokenJar.sol";
import {IReleaser} from "../../src/interfaces/IReleaser.sol";
import {IV3OpenFeeAdapter} from "../../src/interfaces/IV3OpenFeeAdapter.sol";
import {V3OpenFeeAdapter} from "../../src/feeAdapters/V3OpenFeeAdapter.sol";
import {IOwned} from "../../src/interfaces/base/IOwned.sol";
import {ArbitrumOrbitResourceFirepit} from "../../src/releasers/ArbitrumOrbitResourceFirepit.sol";

/// @title ArbitrumOrbitDeployer
/// @notice Deployer for TokenJar + ArbitrumOrbitResourceFirepit + V3OpenFeeAdapter on Arbitrum
/// Orbit chain
/// @dev Deploys and configures the fee collection system with Arbitrum Orbit-specific parameters.
/// The `_owner` parameter is expected to be the **aliased** L1 Timelock address.
/// Arbitrum aliases all L1->L2 messages from contracts at the protocol level — retryable
/// tickets via `Inbox.createRetryableTicket()` are the canonical messaging path and always
/// produce `msg.sender == aliasedAddress` on L2, satisfying the `onlyOwner` check.
/// Unlike OP Stack, there is no alternative un-aliased route for contracts on Arbitrum Orbit
/// chain.
contract ArbitrumOrbitDeployer {
error ZeroAddress();
error ZeroThreshold();

ITokenJar public immutable TOKEN_JAR;
IReleaser public immutable RELEASER;
IV3OpenFeeAdapter public immutable V3_OPEN_FEE_ADAPTER;

bytes32 public constant SALT_TOKEN_JAR = bytes32(uint256(1));
bytes32 public constant SALT_RELEASER = bytes32(uint256(2));
bytes32 public constant SALT_FEE_ADAPTER = bytes32(uint256(3));

// Protocol fee defaults — same as mainnet
uint8 constant DEFAULT_FEE_100 = 4 << 4 | 4; // 1/4 for 0.01% tier
uint8 constant DEFAULT_FEE_500 = 4 << 4 | 4; // 1/4 for 0.05% tier
uint8 constant DEFAULT_FEE_3000 = 6 << 4 | 6; // 1/6 for 0.30% tier
uint8 constant DEFAULT_FEE_10000 = 6 << 4 | 6; // 1/6 for 1.00% tier

/// @notice Deploys TokenJar, ArbitrumOrbitResourceFirepit, and V3OpenFeeAdapter
/// @param _resource The bridged UNI token address on Arbitrum Orbit chain (L2)
/// @param _l1Resource The UNI token address on Ethereum mainnet (L1)
/// @param _threshold The minimum UNI amount required per release
/// @param _owner The aliased owner address — must be the L1 Timelock address + 0x1111...1111
/// @param _v3Factory The Uniswap V3 Factory address on Arbitrum Orbit chain
constructor(
address _l2GatewayRouter,
address _resource,
address _l1Resource,
uint256 _threshold,
address _owner,
address _v3Factory
) {
require(_l2GatewayRouter != address(0), ZeroAddress());
require(_resource != address(0), ZeroAddress());
require(_l1Resource != address(0), ZeroAddress());
require(_threshold > 0, ZeroThreshold());
require(_owner != address(0), ZeroAddress());
require(_v3Factory != address(0), ZeroAddress());

/// 1. Deploy the TokenJar
TOKEN_JAR = new TokenJar{salt: SALT_TOKEN_JAR}();

/// 2. Deploy the Releaser
RELEASER = new ArbitrumOrbitResourceFirepit{salt: SALT_RELEASER}(
_l2GatewayRouter, _resource, _l1Resource, _threshold, address(TOKEN_JAR)
);

/// 3. Set the releaser on the token jar
TOKEN_JAR.setReleaser(address(RELEASER));

/// 4. Update the owner on the token jar
IOwned(address(TOKEN_JAR)).transferOwnership(_owner);

/// 5. Update the thresholdSetter on the releaser to the owner
RELEASER.setThresholdSetter(_owner);

/// 6. Update the owner on the releaser
IOwned(address(RELEASER)).transferOwnership(_owner);

/// 7. Deploy and configure V3OpenFeeAdapter
V3OpenFeeAdapter feeAdapter =
new V3OpenFeeAdapter{salt: SALT_FEE_ADAPTER}(_v3Factory, address(TOKEN_JAR));

// Configure fee tier defaults
feeAdapter.setFeeSetter(address(this));

// Set default fee (applied when no tier or pool override is set)
feeAdapter.setDefaultFee(DEFAULT_FEE_100);

// Set fee tier defaults
feeAdapter.setFeeTierDefault(100, DEFAULT_FEE_100);
feeAdapter.setFeeTierDefault(500, DEFAULT_FEE_500);
feeAdapter.setFeeTierDefault(3000, DEFAULT_FEE_3000);
feeAdapter.setFeeTierDefault(10_000, DEFAULT_FEE_10000);

// Store fee tiers
feeAdapter.storeFeeTier(100);
feeAdapter.storeFeeTier(500);
feeAdapter.storeFeeTier(3000);
feeAdapter.storeFeeTier(10_000);

// Transfer feeSetter and ownership to aliased Timelock
feeAdapter.setFeeSetter(_owner);
feeAdapter.transferOwnership(_owner);

V3_OPEN_FEE_ADAPTER = IV3OpenFeeAdapter(address(feeAdapter));
}
}
18 changes: 18 additions & 0 deletions script/proposal-5/Constants.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// SPDX-License-Identifier: AGPl-3.0-only
pragma solidity 0.8.29;

library Ethereum {
address constant RH_L1_ERC20_GATEWAY = 0x85001CC4867C5e1C22dA4B79BB8852B9e2a06da0;
address constant RH_INBOX = 0x1A07cc4BD17E0118BdB54D70990D2158AbAD7a2D;
}

library Robinhood {
uint256 constant CHAIN_ID = 4663;

address constant V2_FACTORY = 0x8bcEaA40B9AcdfAedF85AdF4FF01F5Ad6517937f;
address constant V3_FACTORY = 0x1f7d7550B1b028f7571E69A784071F0205FD2EfA;
address constant POOL_MANAGER = 0x8366a39CC670B4001A1121B8F6A443A643e40951;
address constant UNI = 0xF177d86a28b520e3E396E4F3B96cd8e72D7dabd8;
address constant L2_GATEWAY_ROUTER = 0x1E324B9316138CA9a73F960213621AD1aaf01B89;
address constant TOKEN_JAR = 0x2aC03e14Cfe755426DaAEe0a4994184Ce81482F8;
}
Loading
Loading