Skip to content

Commit bb1814c

Browse files
committed
update scripts, add restaking validator script
1 parent 170cf42 commit bb1814c

File tree

4 files changed

+84
-2
lines changed

4 files changed

+84
-2
lines changed

script/CustomExternalCallNonRestakingValidators.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ interface IBeaconDepositContract {
1818
) external payable;
1919
}
2020

21-
// forge script script/CustomExternalCallNonRestakingValidators.s.sol:CustomExternalCallNonRestakingValidators --rpc-url=$HOLESKY_RPC_URL --account institutional-deployer-testnet -vvvv --sig "run(address,string)" 0x205A6BCF458a40E1a30a000166c793Ec54b0d9D5 1
21+
// forge script script/CustomExternalCallNonRestakingValidators.s.sol:CustomExternalCallNonRestakingValidators --rpc-url=$HOLESKY_RPC_URL --account institutional-deployer-testnet -vvvv --sig "run(address,string)" 0x205A6BCF458a40E1a30a000166c793Ec54b0d9D5 example
2222
// add --broadcast to broadcast the transaction
2323
contract CustomExternalCallNonRestakingValidators is Script {
2424
using stdJson for string;

script/StartNoRestakingValidators.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ interface IInstitutionalVault {
1313
) external;
1414
}
1515

16-
// forge script script/StartRestakingValidators.s.sol:StartRestakingValidators --rpc-url=$HOLESKY_RPC_URL --account institutional-deployer-testnet -vvvv --sig "run(address,string)" 0x205A6BCF458a40E1a30a000166c793Ec54b0d9D5 1
16+
// forge script script/StartRestakingValidators.s.sol:StartRestakingValidators --rpc-url=$HOLESKY_RPC_URL --account institutional-deployer-testnet -vvvv --sig "run(address,string)" 0x205A6BCF458a40E1a30a000166c793Ec54b0d9D5 example
1717
// add --broadcast to broadcast the transaction
1818
contract StartNoRestakingValidators is Script {
1919
using stdJson for string;
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// SPDX-License-Identifier: GPL-3.0
2+
pragma solidity >=0.8.0 <0.9.0;
3+
4+
import {Script} from "forge-std/Script.sol";
5+
import {stdJson} from "forge-std/StdJson.sol";
6+
import {console} from "forge-std/console.sol";
7+
8+
interface IInstitutionalVault {
9+
function startRestakingValidators(
10+
bytes[] calldata pubKeys,
11+
bytes[] calldata signatures,
12+
bytes32[] calldata depositDataRoots
13+
) external;
14+
}
15+
16+
// forge script script/StartRestakingValidators.s.sol:StartRestakingValidators --rpc-url=$HOLESKY_RPC_URL --account institutional-deployer-testnet -vvvv --sig "run(address,string)" 0x205A6BCF458a40E1a30a000166c793Ec54b0d9D5 example
17+
// add --broadcast to broadcast the transaction
18+
contract StartRestakingValidators is Script {
19+
using stdJson for string;
20+
21+
// Expected file to have the format of test/validator-keys/no_restaking_validator_keys_holesky/deposit_data-1736424571.json
22+
// That is generated using the deposit-cli -> https://github.com/ethereum/staking-deposit-cli
23+
24+
struct DepositData {
25+
ValidatorDepositData[] validatorDepositData;
26+
}
27+
28+
// Struct needs to be ordered alphabetically, see foundry docs for more info
29+
struct ValidatorDepositData {
30+
uint256 amount;
31+
string deposit_cli_version;
32+
string deposit_data_root;
33+
string deposit_message_root;
34+
string fork_version;
35+
string network_name;
36+
string pubkey;
37+
string signature;
38+
string withdrawal_credentials;
39+
}
40+
41+
function run(address payable institutionalVaultProxy, string calldata depositFileName) public {
42+
vm.startBroadcast();
43+
44+
string memory root = vm.projectRoot();
45+
string memory path =
46+
string.concat(root, "/validator_deposit_data/restaking_validators/", depositFileName, ".json");
47+
48+
console.log("Path:", path);
49+
50+
string memory fileContent = vm.readFile(path);
51+
bytes memory rawJson = vm.parseJson(fileContent);
52+
53+
ValidatorDepositData[] memory depositData = abi.decode(rawJson, (ValidatorDepositData[]));
54+
55+
bytes[] memory pubKeys = new bytes[](depositData.length);
56+
bytes[] memory signatures = new bytes[](depositData.length);
57+
bytes32[] memory depositDataRoots = new bytes32[](depositData.length);
58+
59+
for (uint256 i = 0; i < depositData.length; i++) {
60+
pubKeys[i] = vm.parseBytes(depositData[i].pubkey);
61+
signatures[i] = vm.parseBytes(depositData[i].signature);
62+
depositDataRoots[i] = vm.parseBytes32(depositData[i].deposit_data_root);
63+
}
64+
65+
IInstitutionalVault(institutionalVaultProxy).startRestakingValidators(pubKeys, signatures, depositDataRoots);
66+
67+
vm.stopBroadcast();
68+
}
69+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[
2+
{
3+
"pubkey": "a5d3ac6285f1433076b93cfe38fc758bbcdb704f745d797239cd8ea4c5710d8cf34a0cf2849748c327006832391fdd47",
4+
"withdrawal_credentials": "0100000000000000000000003c7f21bddc6c23394e1058029880774d06d7071c",
5+
"amount": 32000000000,
6+
"signature": "b53f17ae9383793cd15218bd5805d392bb4d5890de53ffedb44795f7580d851da49d714237c6b26b4a90cf0d65a255d51401f4cfe8ca05b84607dbfb65fec42a6b75e84336f7fb7fd0bec0f1e15e00057a8886decff09f9a1fbc4f35a42f1a37",
7+
"deposit_message_root": "686825e9862d9fb3adeae16ab1d167b67257baa52c333eacf1c968cc107eeb32",
8+
"deposit_data_root": "eae2fbac19aeb3513254c29af3e6d520cf4cd228591d01a8b3f9265462ffd584",
9+
"fork_version": "01017000",
10+
"network_name": "holesky",
11+
"deposit_cli_version": "2.8.0"
12+
}
13+
]

0 commit comments

Comments
 (0)