Skip to content

Commit 6f2f794

Browse files
committed
feat: configurable l1deposit test config
1 parent ed5e650 commit 6f2f794

9 files changed

+72
-15
lines changed

rollup-bridge-contracts/.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ GETH_WALLET_ADDRESS="0xc8d5559BA22d11B0845215a781ff4bF3CCa0EF89"
1212

1313
NIL_PRIVATE_KEY="0x4d47e8aed46e8b1bb4f4573f68ad43cade273d149b0c2942526ad5141c51b517"
1414
NIL_SMART_ACCOUNT_ADDRESS=
15+
DEPOSIT_RECIPIENT_PRIVATE_KEY="0xe4d6ddfd7479614249381d4bd240fa2408efc53dad5f7f31cb7ae7e5962fc1d0"
16+
NIL_FEE_REFUND_PRIVATE_KEY="0xe18382d8e3ada94004d5d3287cd1b0938cb56071b2e3295cbd3db577cfe03143"
1517
NIL_RPC_ENDPOINT="http://127.0.0.1:8529"
1618
NIL=0x0001111111111111111111111111111111111110
1719
RELAYER_RPC_URL="http://127.0.0.1:7777"

rollup-bridge-contracts/deploy/config/config-helper.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface L1Config {
1414

1515
export interface L1NetworkConfig {
1616
l1DeployerConfig: L1DeployerConfig;
17+
l1TestConfig: L1TestConfig;
1718
l1CommonContracts: L1CommonContracts;
1819
nilRollup: NilRollup;
1920
l1BridgeRouter: L1BridgeRouter;
@@ -23,6 +24,18 @@ export interface L1NetworkConfig {
2324
nilGasPriceOracle: NilGasPriceOracle;
2425
}
2526

27+
export interface L1TestConfig {
28+
ethDepositTestConfig: L1ETHDepositTestConfig;
29+
}
30+
31+
export interface L1ETHDepositTestConfig {
32+
ethAmount: number; // Amount of ETH to deposit on L1
33+
gasLimit: number;
34+
totalNativeAmount: number;
35+
userMaxFeePerGas: number;
36+
userMaxPriorityFeePerGas: number;
37+
}
38+
2639
export interface L1DeployerConfig {
2740
owner: string;
2841
admin: string;
@@ -279,6 +292,8 @@ export interface L2CommonConfig {
279292
owner: string;
280293
admin: string;
281294
relayer: string;
295+
depositRecipient: string;
296+
feeRefundRecipient: string;
282297
tokens: EnshrinedToken[];
283298
mockL1Bridge?: string; // Optional field to retain backward compatibility
284299
}
@@ -311,7 +326,6 @@ export interface L2BridgeMessengerConfig {
311326
l2BridgeMessengerImplementation: string;
312327
};
313328
l2BridgeMessengerDeployerConfig: {
314-
relayerAddress: string;
315329
messageExpiryDeltaValue: number;
316330
};
317331
}

rollup-bridge-contracts/deploy/config/l1-deployment-config.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
"admin": "",
77
"shardId": 1
88
},
9+
"l1TestConfig": {
10+
"ethAmount": 1000000000000,
11+
"gasLimit": 1000,
12+
"totalNativeAmount": 1200000000,
13+
"userMaxFeePerGas": 0,
14+
"userMaxPriorityFeePerGas": 0
15+
},
916
"l1CommonContracts": {
1017
"weth": ""
1118
},

rollup-bridge-contracts/deploy/config/nil-deployment-config.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
"l2CommonConfig": {
55
"owner": "",
66
"admin": "",
7+
"relayer": "",
8+
"depositRecipient": "",
9+
"feeRefundRecipient": "",
710
"tokens": [
811
{
912
"name": "USD Coin",

rollup-bridge-contracts/scripts/bridge-test/bridge-eth.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import * as path from 'path';
55
import {
66
loadL1NetworkConfig,
77
isValidAddress,
8+
loadNilNetworkConfig,
9+
L2NetworkConfig,
810
} from '../../deploy/config/config-helper';
911
import { bigIntReplacer, extractAndParseMessageSentEventLog, MessageSentEvent } from './get-messenger-events';
1012

@@ -34,13 +36,17 @@ export async function bridgeETH() {
3436
signer,
3537
) as Contract;
3638

37-
const l2DepositRecipient = "0x66bFaD51E02513C5B6bEfe1Acc9a31Cb6eE152F1";
38-
const l2FeeRefundAddress = "0x878f824Ffde85B7Bd6ad6c6Fd97275bb6724c55a";
39-
const eth_amount = 100;
40-
const gasLimit = 1000;
41-
const total_native_amount = 1200000000;
42-
const userMaxFeePerGas = 0;
43-
const userMaxPriorityFeePerGas = 0;
39+
40+
// save the nilMessageTree Address in the json config for l2
41+
const l2NetworkConfig: L2NetworkConfig = loadNilNetworkConfig("local");
42+
43+
const l2DepositRecipient = l2NetworkConfig.l2CommonConfig.depositRecipient;
44+
const l2FeeRefundAddress = l2NetworkConfig.l2CommonConfig.feeRefundRecipient;
45+
const eth_amount = config.l1TestConfig.ethDepositTestConfig.ethAmount;
46+
const gasLimit = config.l1TestConfig.ethDepositTestConfig.gasLimit;
47+
const total_native_amount = config.l1TestConfig.ethDepositTestConfig.totalNativeAmount;
48+
const userMaxFeePerGas = config.l1TestConfig.ethDepositTestConfig.userMaxFeePerGas;
49+
const userMaxPriorityFeePerGas = config.l1TestConfig.ethDepositTestConfig.userMaxPriorityFeePerGas;
4450

4551
console.log(`bridging ${eth_amount} (WEI) to recipient: ${l2DepositRecipient}`);
4652

rollup-bridge-contracts/task/clear-l2-deployments.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ task("clear-l2-deployments", "Clears L2DeploymentConfig entries in nil-deploymen
1414
config.l2CommonConfig.admin = "";
1515
config.l2CommonConfig.owner = "";
1616
config.l2CommonConfig.mockL1Bridge = "";
17+
config.l2CommonConfig.depositRecipient = "";
18+
config.l2CommonConfig.feeRefundRecipient = "";
1719

1820
// clear all deployed contract address under config
1921
config.l2BridgeMessengerConfig.l2BridgeMessengerContracts.l2BridgeMessengerImplementation = "";
2022
config.l2BridgeMessengerConfig.l2BridgeMessengerContracts.l2BridgeMessengerProxy = "";
2123
config.l2BridgeMessengerConfig.l2BridgeMessengerContracts.proxyAdmin = "";
22-
config.l2BridgeMessengerConfig.l2BridgeMessengerDeployerConfig.relayerAddress = "";
2324

2425
config.l2CommonConfig.mockL1Bridge = "";
2526

rollup-bridge-contracts/task/deploy-l2-bridge-messenger.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ task("deploy-l2-bridge-messenger", "Deploys L2BridgeMessenger contract on Nil Ch
4949

5050
validateAddress(l2NetworkConfig.l2CommonConfig.owner, "l2CommonConfig.owner");
5151
validateAddress(l2NetworkConfig.l2CommonConfig.admin, "l2CommonConfig.admin");
52-
validateAddress(
53-
l2NetworkConfig.l2BridgeMessengerConfig.l2BridgeMessengerDeployerConfig.relayerAddress,
54-
"l2BridgeMessengerDeployerConfig.relayerAddress"
55-
);
5652
validateAddress(
5753
l2NetworkConfig.nilMessageTreeConfig.nilMessageTreeContracts.nilMessageTreeImplementationAddress,
5854
"nilMessageTreeContracts.nilMessageTreeImplementationAddress"
@@ -95,7 +91,7 @@ task("deploy-l2-bridge-messenger", "Deploys L2BridgeMessenger contract on Nil Ch
9591
functionName: "initialize",
9692
args: [l2NetworkConfig.l2CommonConfig.owner,
9793
l2NetworkConfig.l2CommonConfig.admin,
98-
l2NetworkConfig.l2BridgeMessengerConfig.l2BridgeMessengerDeployerConfig.relayerAddress,
94+
l2NetworkConfig.l2CommonConfig.owner,
9995
l2NetworkConfig.nilMessageTreeConfig.nilMessageTreeContracts.nilMessageTreeImplementationAddress,
10096
l2NetworkConfig.l2BridgeMessengerConfig.l2BridgeMessengerDeployerConfig.messageExpiryDeltaValue],
10197
});

rollup-bridge-contracts/task/nil-smart-account.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,31 @@ export async function generateNilSmartAccount(networkName: string): Promise<Smar
7777
console.log("🆕 New Smart Account Generated:", smartAccount.address);
7878
}
7979

80+
//DEPOSIT_RECIPIENT_PRIVATE_KEY = "0xe4d6ddfd7479614249381d4bd240fa2408efc53dad5f7f31cb7ae7e5962fc1d0"
81+
const depositRecipientPrivateKey = process.env.DEPOSIT_RECIPIENT_PRIVATE_KEY as `0x${string}`;
82+
let signer = new LocalECDSAKeySigner({ privateKey: depositRecipientPrivateKey });
83+
const depositRecipientSmartAccount = new SmartAccountV1({
84+
signer,
85+
client,
86+
salt: BigInt(Math.floor(Math.random() * 10000)),
87+
shardId: 1,
88+
pubkey: signer.getPublicKey(),
89+
});
90+
const depositRecipientSmartAccountAddress = depositRecipientSmartAccount.address;
91+
console.log("🆕 New Smart Account Generated:", depositRecipientSmartAccountAddress);
92+
93+
94+
const nilFeeRefundAddressPrivateKey = process.env.NIL_FEE_REFUND_PRIVATE_KEY as `0x${string}`;
95+
signer = new LocalECDSAKeySigner({ privateKey: depositRecipientPrivateKey });
96+
const feeRefundSmartAccount = new SmartAccountV1({
97+
signer,
98+
client,
99+
salt: BigInt(Math.floor(Math.random() * 10000)),
100+
shardId: 1,
101+
pubkey: signer.getPublicKey(),
102+
});
103+
const feeRefundSmartAccountAddress = feeRefundSmartAccount.address;
104+
80105
const topUpFaucet = await faucetClient.topUp({
81106
smartAccountAddress: smartAccount.address,
82107
amount: convertEthToWei(0.1),
@@ -96,7 +121,8 @@ export async function generateNilSmartAccount(networkName: string): Promise<Smar
96121

97122
config.l2CommonConfig.owner = getCheckSummedAddress(smartAccountAddress);
98123
config.l2CommonConfig.admin = getCheckSummedAddress(smartAccountAddress);
99-
config.l2BridgeMessengerConfig.l2BridgeMessengerDeployerConfig.relayerAddress = getCheckSummedAddress(smartAccountAddress);
124+
config.l2CommonConfig.depositRecipient = getCheckSummedAddress(depositRecipientSmartAccountAddress);
125+
config.l2CommonConfig.feeRefundRecipient = getCheckSummedAddress(feeRefundSmartAccountAddress);
100126

101127
// Save the updated config
102128
saveNilNetworkConfig(networkName, config);

rollup-bridge-contracts/test_integration.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ curl -XPOST http://127.0.0.1:7777 -H "Content-Type: application/json" --data '{"
125125
echo "TODO: L2 contract deployment is not ready yet"
126126

127127
echo "Triggering L1 deposit event"
128+
129+
npx hardhat grant-relayer-role --networkname local
128130
npx hardhat run scripts/bridge-test/bridge-eth.ts --network geth
129131

130132
echo "TODO: ensure that event was received and processed by the L2 side"

0 commit comments

Comments
 (0)