diff --git a/script/README.md b/script/README.md index 28caf73..45be370 100644 --- a/script/README.md +++ b/script/README.md @@ -24,6 +24,12 @@ forge script script/deploy/DeployGateway.sol:DeployGateway \ --broadcast -vvvv \ --verify --verifier blockscout \ --verifier-url https://explorer.testnet3.goat.network/api/ + +forge script ./script/deploy/DeploySequencerSetPublisher.sol:DeploySequencerSetPublisher \ + --rpc-url goatTestnet \ + --broadcast -vvvv \ + --verify --verifier blockscout \ + --verifier-url https://explorer.testnet3.goat.network/api/ ``` Repeat the command with the appropriate script name (and `goatMainnet` when deploying to mainnet). Required environment variables grow as you progress: diff --git a/script/deploy/DeploySequencerSetPublisher.sol b/script/deploy/DeploySequencerSetPublisher.sol index 85bf38f..d179728 100644 --- a/script/deploy/DeploySequencerSetPublisher.sol +++ b/script/deploy/DeploySequencerSetPublisher.sol @@ -4,47 +4,18 @@ pragma solidity ^0.8.28; import {Script} from "forge-std/Script.sol"; import {console} from "forge-std/console.sol"; import {SequencerSetPublisher} from "../../src/SequencerSetPublisher.sol"; -import {MultiSigVerifier} from "../../src/MultiSigVerifier.sol"; contract DeploySequencerSetPublisher is Script { function run() external { - address initialOwner = vm.envAddress("OWNER"); - - address[] memory initPublishers = new address[](5); - initPublishers[0] = 0xcC1Bd124EA962Dd3e6f10F814FB6C4493CEA6d27; - initPublishers[1] = 0x0b71c9fc399e7FE424f3c22d872735F32550eC09; - initPublishers[2] = 0x55C55d24bBef5d79918270Af9366b97fC0C7AC7b; - initPublishers[3] = 0xeBBa6C3BE7Dc14FAeB1c2547cF43D4ad6aD46Ef4; - initPublishers[4] = 0xa0F88c27B535615A8D8808c6023986a540161021; - - bytes[] memory initPublisherBTCPubkeys = new bytes[](5); - initPublisherBTCPubkeys[ - 0 - ] = hex"031b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f"; - initPublisherBTCPubkeys[ - 1 - ] = hex"024d4b6cd1361032ca9bd2aeb9d900aa4d45d9ead80ac9423374c451a7254d0766"; - initPublisherBTCPubkeys[ - 2 - ] = hex"02531fe6068134503d2723133227c867ac8fa6c83c537e9a44c3c5bdbdcb1fe337"; - initPublisherBTCPubkeys[ - 3 - ] = hex"03462779ad4aad39514614751a71085f2f10e1c7a593e4e030efb5b8721ce55b0b"; - initPublisherBTCPubkeys[ - 4 - ] = hex"0362c0a046dacce86ddd0343c6d3c7c79c2208ba0d9c9cf24a6d046d21d21f90f7"; - - vm.startBroadcast(); - + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + address initialOwner = vm.addr(deployerPrivateKey); + console.log("current balance: ", initialOwner.balance); + vm.startBroadcast(deployerPrivateKey); SequencerSetPublisher publisher = new SequencerSetPublisher(); - // MultiSigVerifier multiSigVerifier = new MultiSigVerifier(); - publisher.initialize( initialOwner ); - vm.stopBroadcast(); - console.log("SequencerSetPublisher deployed at:", address(publisher)); } } diff --git a/src/SequencerSetPublisher.sol b/src/SequencerSetPublisher.sol index d5faccc..d426e33 100644 --- a/src/SequencerSetPublisher.sol +++ b/src/SequencerSetPublisher.sol @@ -48,6 +48,12 @@ contract SequencerSetPublisher is _hasWitness[goatHeight][pubkeyHash] = true; _sequencerSetUpdateWitnesses[goatHeight].push(witness); + + emit SequencerSetUpdateSubmitted( + goatHeight, + pubkeyHash, + witness.btcPubkey + ); } function getSequencerSetUpdateWitnesses( diff --git a/src/interfaces/ISequencerSetPublisher.sol b/src/interfaces/ISequencerSetPublisher.sol index c690f62..0e5a2ef 100644 --- a/src/interfaces/ISequencerSetPublisher.sol +++ b/src/interfaces/ISequencerSetPublisher.sol @@ -9,6 +9,12 @@ interface ISequencerSetPublisher { error InvalidPublicKeyX(); error ModexpFailed(); + event SequencerSetUpdateSubmitted( + uint256 indexed goatHeight, + bytes32 indexed btcPubkeyHash, + bytes btcPubkey + ); + struct SequencerSetUpdateWitness { bytes32 sigHash; bytes btcPubkey;