Skip to content

Commit ac2c31c

Browse files
committed
deploy EonKeyPublish contract in AddKeyerSet.gnosh.s.sol
1 parent e733273 commit ac2c31c

File tree

1 file changed

+64
-49
lines changed

1 file changed

+64
-49
lines changed

script/AddKeyperSet.gnosh.s.sol

Lines changed: 64 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,82 @@
11
// SPDX-License-Identifier: MIT
2-
pragma solidity ^0.8.20;
2+
pragma solidity ^0.8.22;
33

4-
import "forge-std/Test.sol";
54
import "forge-std/Script.sol";
6-
import "../src/common/KeyperSet.sol";
7-
import "../src/common/KeyperSetManager.sol";
5+
import {KeyperSet} from "../src/common/KeyperSet.sol";
6+
import {KeyperSetManager} from "../src/common/KeyperSetManager.sol";
7+
import {KeyBroadcastContract} from "../src/common/KeyBroadcastContract.sol";
8+
import {EonKeyPublish} from "../src/common/EonKeyPublish.sol";
89

9-
contract AddKeyperSet is Script, Test {
10-
function run() external {
11-
uint256 deployKey = vm.envUint("DEPLOY_KEY");
12-
address deployerAddress = vm.addr(deployKey);
13-
console.log("Deployer:", deployerAddress);
10+
error ActivationDeltaTooLow();
11+
error ThresholdExceedsKeyperSetSize(uint256 threshold, uint256 keyperSetSize);
12+
error UnexpectedKeyperSet(
13+
uint256 index,
14+
address expectedKeyperSet,
15+
address actualKeyperSet
16+
);
1417

15-
address ksmAddress = vm.envAddress("KEYPER_SET_MANAGER");
16-
address[] memory keypers = vm.envAddress("KEYPER_ADDRESSES", ",");
17-
uint256 threshold = vm.envUint("THRESHOLD");
18-
uint256 activationBlockNumber = vm.envUint("ACTIVATION_BLOCK_NUMBER");
19-
uint256 activationBlockDelta = vm.envUint("ACTIVATION_BLOCK_DELTA");
20-
address key_broadcaster = vm.envAddress("KEY_BROADCASTER");
18+
contract AddKeyperSet is Script {
19+
function run() public {
20+
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
21+
address deployerAddress = vm.addr(deployerPrivateKey);
22+
console.log("deployer:", deployerAddress);
23+
vm.startBroadcast(deployerPrivateKey);
2124

22-
uint32 size;
23-
assembly {
24-
size := extcodesize(ksmAddress)
25+
uint256 activationDelta = vm.envOr("ACTIVATION_DELTA", uint256(1));
26+
if (activationDelta < 1) {
27+
revert ActivationDeltaTooLow();
2528
}
26-
require(size > 0, "no contract deployed at given keyper set address");
27-
require(keypers.length > 0, "given keyper set is empty");
28-
require(
29-
threshold <= keypers.length,
30-
"threshold exceeds keyper set size"
29+
30+
address keyperSetManagerAddress = vm.envAddress(
31+
"KEYPERSETMANAGER_ADDRESS"
3132
);
32-
require(
33-
activationBlockNumber > 0 || activationBlockDelta > 0,
34-
"neither activation block number nor delta is given"
33+
KeyperSetManager keyperSetManager = KeyperSetManager(
34+
keyperSetManagerAddress
3535
);
36-
require(
37-
activationBlockNumber == 0 || activationBlockDelta == 0,
38-
"both activation block number and delta is given"
36+
37+
address keyBroadcastContractAddress = vm.envAddress(
38+
"KEYBROADCAST_ADDRESS"
3939
);
40-
require(
41-
key_broadcaster != address(0),
42-
"key broadcaster is zero address"
40+
KeyBroadcastContract keyBroadcastContract = KeyBroadcastContract(
41+
keyBroadcastContractAddress
4342
);
4443

45-
if (activationBlockDelta > 0) {
46-
activationBlockNumber = block.number + activationBlockDelta;
44+
address[] memory keypers = vm.envAddress("KEYPER_ADDRESSES", ",");
45+
uint256 threshold = vm.envUint("THRESHOLD");
46+
if (threshold > keypers.length) {
47+
revert ThresholdExceedsKeyperSetSize(threshold, keypers.length);
4748
}
4849

49-
vm.startBroadcast(deployKey);
50-
KeyperSet ks = new KeyperSet();
51-
ks.addMembers(keypers);
52-
ks.setThreshold(uint64(threshold));
53-
ks.setPublisher(key_broadcaster);
54-
ks.setFinalized();
50+
uint64 keyperSetIndex = keyperSetManager.getNumKeyperSets();
51+
KeyperSet keyperSet = new KeyperSet();
52+
EonKeyPublish eonKeyPublish = new EonKeyPublish(
53+
address(keyperSet),
54+
address(keyBroadcastContract),
55+
keyperSetIndex
56+
);
57+
keyperSet.addMembers(keypers);
58+
keyperSet.setThreshold(uint64(threshold));
59+
keyperSet.setPublisher(address(eonKeyPublish));
60+
keyperSet.setFinalized();
61+
console.log("keyperSet:", address(keyperSet));
62+
console.log("eonKeyPublish:", address(eonKeyPublish));
5563

56-
KeyperSetManager ksm = KeyperSetManager(ksmAddress);
57-
ksm.addKeyperSet(uint64(activationBlockNumber), address(ks));
58-
uint256 index = ksm.getNumKeyperSets() - 1;
59-
vm.stopBroadcast();
64+
uint64 activationBlock = uint64(block.number + activationDelta);
65+
keyperSetManager.addKeyperSet(activationBlock, address(keyperSet));
66+
console.log("activationBlock:", activationBlock);
67+
console.log("keyperSetIndex:", keyperSetIndex);
68+
69+
address actualKeyperSet = keyperSetManager.getKeyperSetAddress(
70+
keyperSetIndex
71+
);
72+
if (actualKeyperSet != address(keyperSet)) {
73+
revert UnexpectedKeyperSet(
74+
keyperSetIndex,
75+
address(keyperSet),
76+
actualKeyperSet
77+
);
78+
}
6079

61-
console.log("Keyper set added at index", index);
62-
console.log("Index:", index);
63-
console.log("Num members:", keypers.length);
64-
console.log("Threshold:", threshold);
65-
console.log("Activation block number:", activationBlockNumber);
80+
vm.stopBroadcast();
6681
}
6782
}

0 commit comments

Comments
 (0)