Skip to content

Commit 69b2d3a

Browse files
committed
Merge branch 'main' into fuzz-suite
2 parents e4c473a + 63e5c28 commit 69b2d3a

22 files changed

Lines changed: 1132 additions & 137 deletions

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export LINEA_RPC_URL=
1313
export OPTIMISM_RPC_URL=
1414
export PLUME_RPC_URL=
1515
export MANTRA_RPC_URL=
16+
export PLASMA_RPC_URL=
1617

1718
# Testnet RPC URLs
1819
export SEPOLIA_RPC_URL=
@@ -32,6 +33,7 @@ export HYPERLIQUID_VERIFIER_URL="https://api.etherscan.io/v2/api?chainid=999"
3233
export OPTIMISM_VERIFIER_URL="https://api.etherscan.io/v2/api?chainid=10"
3334
export PLUME_VERIFIER_URL="https://explorer.plume.org/api/"
3435
export MANTRA_VERIFIER_URL="https://blockscout.mantrascan.io/api/"
36+
export PLASMA_VERIFIER_URL=https://api.routescan.io/v2/network/mainnet/evm/9745/etherscan
3537

3638
export SEPOLIA_VERIFIER_URL="https://api.etherscan.io/v2/api?chainid=11155111"
3739
export APECHAIN_TESTNET_VERIFIER_URL="https://api.etherscan.io/v2/api?chainid=33111"

.lintstagedrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"*.{json,md,sol,yml}": [
33
"npm run prettier"
44
],
5-
"*.sol": [
5+
"{src,test}/**/*.sol": [
66
"npm run solhint"
77
]
88
}

.solhint.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
{
22
"extends": ["solhint:recommended"],
3-
"plugins": ["prettier"],
43
"rules": {
5-
"prettier/prettier": "error",
64
"code-complexity": ["warn", 10],
75
"compiler-version": ["warn", "0.8.26"],
86
"comprehensive-interface": "off",

Makefile

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,21 @@
55
# dapp deps
66
update:; forge update
77

8+
# Default to actual deployment (not simulation)
9+
DRY_RUN ?= false
10+
11+
# Conditionally set broadcast and verify flags
12+
ifeq ($(DRY_RUN),true)
13+
BROADCAST_FLAGS =
14+
BROADCAST_ONLY_FLAGS =
15+
else
16+
BROADCAST_FLAGS = --broadcast --verify
17+
BROADCAST_ONLY_FLAGS = --broadcast
18+
endif
19+
820
# Deployment helpers
9-
deploy-local :; FOUNDRY_PROFILE=production forge script script/Deploy.s.sol --rpc-url localhost --broadcast -v
10-
deploy-sepolia :; FOUNDRY_PROFILE=production forge script script/Deploy.s.sol --rpc-url sepolia --broadcast -vvv
21+
deploy-local :; FOUNDRY_PROFILE=production forge script script/Deploy.s.sol --rpc-url localhost $(BROADCAST_ONLY_FLAGS) -v
22+
deploy-sepolia :; FOUNDRY_PROFILE=production forge script script/Deploy.s.sol --rpc-url sepolia $(BROADCAST_ONLY_FLAGS) -vvv
1123

1224
# Run slither
1325
slither :; FOUNDRY_PROFILE=production forge build --build-info --skip '*/test/**' --skip '*/script/**' --force && slither --compile-force-framework foundry --ignore-compile --sarif results.sarif --config-file slither.config.json .
@@ -42,13 +54,18 @@ sizes:
4254
clean:
4355
forge clean && rm -rf ./abi && rm -rf ./bytecode && rm -rf ./types
4456

57+
#
58+
#
59+
# DEPLOY
60+
#
61+
#
4562

4663
deploy-yield-to-one:
4764
FOUNDRY_PROFILE=production PRIVATE_KEY=$(PRIVATE_KEY) EXTENSION_NAME=$(EXTENSION_NAME) \
4865
forge script script/deploy/DeployYieldToOne.s.sol:DeployYieldToOne \
4966
--rpc-url $(RPC_URL) \
5067
--private-key $(PRIVATE_KEY) \
51-
--skip test --slow --non-interactive --broadcast --verify
68+
--skip test --slow --non-interactive $(BROADCAST_FLAGS)
5269

5370
deploy-yield-to-one-sepolia: RPC_URL=$(SEPOLIA_RPC_URL)
5471
deploy-yield-to-one-sepolia: deploy-yield-to-one
@@ -58,7 +75,7 @@ deploy-yield-to-all:
5875
forge script script/deploy/DeployYieldToAllWithFee.s.sol:DeployYieldToAllWithFee \
5976
--rpc-url $(RPC_URL) \
6077
--private-key $(PRIVATE_KEY) \
61-
--skip test --slow --non-interactive --broadcast --verify
78+
--skip test --slow --non-interactive $(BROADCAST_FLAGS)
6279

6380
deploy-yield-to-all-sepolia: RPC_URL=$(SEPOLIA_RPC_URL)
6481
deploy-yield-to-all-sepolia: deploy-yield-to-all
@@ -68,7 +85,7 @@ deploy-m-earner-manager:
6885
forge script script/deploy/DeployMEarnerManager.s.sol:DeployMEarnerManager \
6986
--private-key $(PRIVATE_KEY) \
7087
--rpc-url $(RPC_URL) \
71-
--skip test --slow --non-interactive --broadcast --verify
88+
--skip test --slow --non-interactive $(BROADCAST_FLAGS)
7289

7390
deploy-m-earner-manager-sepolia: RPC_URL=$(SEPOLIA_RPC_URL)
7491
deploy-m-earner-manager-sepolia: deploy-m-earner-manager
@@ -78,7 +95,7 @@ deploy-jmi-extension:
7895
forge script script/deploy/DeployJMIExtension.s.sol:DeployJMIExtension \
7996
--rpc-url $(RPC_URL) \
8097
--private-key $(PRIVATE_KEY) \
81-
--skip test --slow --non-interactive --broadcast --verify
98+
--skip test --slow --non-interactive $(BROADCAST_FLAGS)
8299

83100
deploy-jmi-extension-sepolia: RPC_URL=$(SEPOLIA_RPC_URL)
84101
deploy-jmi-extension-sepolia: deploy-jmi-extension
@@ -89,7 +106,7 @@ deploy-swap-adapter:
89106
--rpc-url $(RPC_URL) \
90107
--private-key $(PRIVATE_KEY) \
91108
--skip test --slow --non-interactive \
92-
--broadcast --verify --verifier ${VERIFIER} --verifier-url ${VERIFIER_URL}
109+
$(BROADCAST_FLAGS) --verifier ${VERIFIER} --verifier-url ${VERIFIER_URL}
93110

94111
deploy-swap-adapter-local: RPC_URL=$(LOCALHOST_RPC_URL)
95112
deploy-swap-adapter-local: deploy-swap-adapter
@@ -120,7 +137,7 @@ deploy-swap-facility:
120137
--rpc-url $(RPC_URL) \
121138
--private-key $(PRIVATE_KEY) \
122139
--skip test --slow --non-interactive -v \
123-
--broadcast --verify --verifier ${VERIFIER} --verifier-url ${VERIFIER_URL}
140+
$(BROADCAST_FLAGS) --verifier ${VERIFIER} --verifier-url ${VERIFIER_URL}
124141

125142
deploy-swap-facility-local: RPC_URL=$(LOCALHOST_RPC_URL)
126143
deploy-swap-facility-local: deploy-swap-facility
@@ -205,32 +222,57 @@ deploy-swap-facility-soneium: VERIFIER="blockscout"
205222
deploy-swap-facility-soneium: VERIFIER_URL=${SONEIUM_VERIFIER_URL}
206223
deploy-swap-facility-soneium: deploy-swap-facility
207224

225+
deploy-swap-facility-plasma: RPC_URL=$(PLASMA_RPC_URL)
226+
deploy-swap-facility-plasma: VERIFIER="custom"
227+
deploy-swap-facility-plasma: VERIFIER_URL=${PLASMA_VERIFIER_URL}
228+
deploy-swap-facility-plasma: deploy-swap-facility
229+
230+
#
231+
#
232+
# UPGRADE
233+
#
234+
#
235+
208236
upgrade-swap-facility:
209237
FOUNDRY_PROFILE=production PRIVATE_KEY=$(PRIVATE_KEY) PAUSER=$(PAUSER) \
210238
forge script script/upgrade/UpgradeSwapFacility.s.sol:UpgradeSwapFacility \
211239
--rpc-url $(RPC_URL) \
212240
--private-key $(PRIVATE_KEY) \
213-
--skip test --slow --non-interactive --broadcast --verify
241+
--skip test --slow --non-interactive $(BROADCAST_FLAGS)
214242

215243
upgrade-swap-facility-sepolia: RPC_URL=$(SEPOLIA_RPC_URL)
216244
upgrade-swap-facility-sepolia: upgrade-swap-facility
217245

246+
# This upgrade is strictly specific to Sepolia as it caters to an old SwapFacility deployment
247+
upgrade-old-swap-facility:
248+
FOUNDRY_PROFILE=production PRIVATE_KEY=$(PRIVATE_KEY) \
249+
forge script script/upgrade/UpgradeOldSwapFacility.s.sol:UpgradeOldSwapFacility \
250+
--rpc-url $(SEPOLIA_RPC_URL) \
251+
--private-key $(PRIVATE_KEY) \
252+
--skip test --slow --non-interactive $(BROADCAST_FLAGS)
253+
218254
upgrade-jmi-extension:
219-
FOUNDRY_PROFILE=production PRIVATE_KEY=$(PRIVATE_KEY) EXTENSION_NAME=$(EXTENSION_NAME) \
220-
forge script script/upgrade/jmi/UpgradeJMIExtension.s.sol:UpgradeJMIExtension \
255+
FOUNDRY_PROFILE=production PRIVATE_KEY=$(PRIVATE_KEY) EXTENSION_ADDRESS=$(EXTENSION_ADDRESS) \
256+
forge script script/upgrade/UpgradeJMIExtension.s.sol:UpgradeJMIExtension \
221257
--rpc-url $(RPC_URL) \
222258
--private-key $(PRIVATE_KEY) \
223-
--skip test --slow --non-interactive --broadcast --verify
259+
--skip test --slow --non-interactive $(BROADCAST_FLAGS)
224260

225261
upgrade-jmi-extension-sepolia: RPC_URL=$(SEPOLIA_RPC_URL)
226262
upgrade-jmi-extension-sepolia: upgrade-jmi-extension
227263

264+
#
265+
#
266+
# PROPOSE (via Multisig)
267+
#
268+
#
269+
228270
propose-transfer-swap-facility-owner:
229271
FOUNDRY_PROFILE=production PRIVATE_KEY=$(PRIVATE_KEY) \
230272
forge script script/ProposeTransferSwapFacilityOwner.s.sol:ProposeTransferSwapFacilityOwner \
231273
--rpc-url $(RPC_URL) \
232274
--private-key $(PRIVATE_KEY) \
233-
--skip test --slow --non-interactive --broadcast
275+
--skip test --slow --non-interactive $(BROADCAST_ONLY_FLAGS)
234276

235277
propose-transfer-swap-facility-owner-sepolia: RPC_URL=$(SEPOLIA_RPC_URL)
236278
propose-transfer-swap-facility-owner-sepolia: propose-transfer-swap-facility-owner
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
{
2+
"transactions": [
3+
{
4+
"hash": "0xd6d438bc4ccd5ee444af8cff46beb9b9be9613d60b86c913e2620df96de30d78",
5+
"transactionType": "CALL",
6+
"contractName": null,
7+
"contractAddress": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
8+
"function": "grantRole(bytes32,address)",
9+
"arguments": [
10+
"0xafa8499804819c4de3fc4b1a2e9723737c59b02467b5c043939709ac9f066b43",
11+
"0x36f586A30502AE3afb555b8aA4dCc05d233c2ecE"
12+
],
13+
"transaction": {
14+
"from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb",
15+
"to": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
16+
"gas": "0x13028",
17+
"value": "0x0",
18+
"input": "0x2f2ff15dafa8499804819c4de3fc4b1a2e9723737c59b02467b5c043939709ac9f066b4300000000000000000000000036f586a30502ae3afb555b8aa4dcc05d233c2ece",
19+
"nonce": "0x32",
20+
"chainId": "0x2611"
21+
},
22+
"additionalContracts": [],
23+
"isFixedGasLimit": false
24+
},
25+
{
26+
"hash": "0xc66cb29ce326411913ee6546c2a3c215faefbc50f99553c9abb51c0152addc9b",
27+
"transactionType": "CALL",
28+
"contractName": null,
29+
"contractAddress": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
30+
"function": "setTrustedRouter(address,bool)",
31+
"arguments": ["0x36f586A30502AE3afb555b8aA4dCc05d233c2ecE", "true"],
32+
"transaction": {
33+
"from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb",
34+
"to": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
35+
"gas": "0x11f30",
36+
"value": "0x0",
37+
"input": "0xc64f535100000000000000000000000036f586a30502ae3afb555b8aa4dcc05d233c2ece0000000000000000000000000000000000000000000000000000000000000001",
38+
"nonce": "0x33",
39+
"chainId": "0x2611"
40+
},
41+
"additionalContracts": [],
42+
"isFixedGasLimit": false
43+
}
44+
],
45+
"receipts": [
46+
{
47+
"status": "0x1",
48+
"cumulativeGasUsed": "0x838a01",
49+
"logs": [
50+
{
51+
"address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
52+
"topics": [
53+
"0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
54+
"0xafa8499804819c4de3fc4b1a2e9723737c59b02467b5c043939709ac9f066b43",
55+
"0x00000000000000000000000036f586a30502ae3afb555b8aa4dcc05d233c2ece",
56+
"0x000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb"
57+
],
58+
"data": "0x",
59+
"blockHash": "0xcb615e62414e09b6680552382cb92a6ee553ed28d2623994310e4d142114c52d",
60+
"blockNumber": "0x86e1c0",
61+
"blockTimestamp": "0x693f842f",
62+
"transactionHash": "0xd6d438bc4ccd5ee444af8cff46beb9b9be9613d60b86c913e2620df96de30d78",
63+
"transactionIndex": "0x6",
64+
"logIndex": "0x1",
65+
"removed": false
66+
}
67+
],
68+
"logsBloom": "0x00000004100000000000000000000000000000000000000400000000040000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080010000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000001400000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000004000000000000000000",
69+
"type": "0x2",
70+
"transactionHash": "0xd6d438bc4ccd5ee444af8cff46beb9b9be9613d60b86c913e2620df96de30d78",
71+
"transactionIndex": "0x6",
72+
"blockHash": "0xcb615e62414e09b6680552382cb92a6ee553ed28d2623994310e4d142114c52d",
73+
"blockNumber": "0x86e1c0",
74+
"gasUsed": "0xdc35",
75+
"effectiveGasPrice": "0x239c",
76+
"from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb",
77+
"to": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
78+
"contractAddress": null
79+
},
80+
{
81+
"status": "0x1",
82+
"cumulativeGasUsed": "0x8459ed",
83+
"logs": [
84+
{
85+
"address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
86+
"topics": [
87+
"0xf03b9904b8234e041267377d7a55ddb345d1ee737d0116a2e621e3a5fad07a7d",
88+
"0x00000000000000000000000036f586a30502ae3afb555b8aa4dcc05d233c2ece"
89+
],
90+
"data": "0x0000000000000000000000000000000000000000000000000000000000000001",
91+
"blockHash": "0xcb615e62414e09b6680552382cb92a6ee553ed28d2623994310e4d142114c52d",
92+
"blockNumber": "0x86e1c0",
93+
"blockTimestamp": "0x693f842f",
94+
"transactionHash": "0xc66cb29ce326411913ee6546c2a3c215faefbc50f99553c9abb51c0152addc9b",
95+
"transactionIndex": "0x7",
96+
"logIndex": "0x2",
97+
"removed": false
98+
}
99+
],
100+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000040000000000000400000008000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000001000000000000000000004000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000",
101+
"type": "0x2",
102+
"transactionHash": "0xc66cb29ce326411913ee6546c2a3c215faefbc50f99553c9abb51c0152addc9b",
103+
"transactionIndex": "0x7",
104+
"blockHash": "0xcb615e62414e09b6680552382cb92a6ee553ed28d2623994310e4d142114c52d",
105+
"blockNumber": "0x86e1c0",
106+
"gasUsed": "0xcfec",
107+
"effectiveGasPrice": "0x239c",
108+
"from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb",
109+
"to": "0xb6807116b3b1b321a390594e31ecd6e0076f6278",
110+
"contractAddress": null
111+
}
112+
],
113+
"libraries": [],
114+
"pending": [],
115+
"returns": {},
116+
"timestamp": 1765770288165,
117+
"chain": 9745,
118+
"commit": "7adf945"
119+
}

0 commit comments

Comments
 (0)