Skip to content

Commit b362044

Browse files
chore(protocol): fix deployment scripts for Pacaya cleanup (#19315)
Co-authored-by: David <[email protected]>
1 parent 17346cf commit b362044

File tree

2 files changed

+73
-50
lines changed

2 files changed

+73
-50
lines changed

packages/protocol/script/layer1/based/DeployProtocolOnL1.s.sol

+72-50
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ contract DeployProtocolOnL1 is DeployCapability {
4646
uint24 constant PRECONF_COOLDOWN_WINDOW = 0 hours;
4747
uint24 constant DEVNET_COOLDOWN_WINDOW = 2 hours;
4848

49+
struct VerifierAddresses {
50+
address sgxGethVerifier;
51+
address opGethVerifier;
52+
address opRethVerifier;
53+
address sgxRethVerifier;
54+
address risc0RethVerifier;
55+
address sp1RethVerifier;
56+
}
57+
4958
modifier broadcast() {
5059
uint256 privateKey = vm.envUint("PRIVATE_KEY");
5160
require(privateKey != 0, "invalid private key");
@@ -71,15 +80,49 @@ contract DeployProtocolOnL1 is DeployCapability {
7180
(address rollupResolver, address proofVerifier) =
7281
deployRollupContracts(sharedResolver, contractOwner);
7382

83+
address taikoInboxAddr =
84+
IResolver(rollupResolver).resolve(uint64(block.chainid), LibStrings.B_TAIKO, false);
85+
// Deploy verifiers
86+
OpVerifier opImpl = new OpVerifier(rollupResolver);
87+
VerifierAddresses memory verifiers = deployVerifiers(
88+
contractOwner, rollupResolver, proofVerifier, taikoInboxAddr, address(opImpl)
89+
);
90+
if (vm.envBool("DUMMY_VERIFIERS")) {
91+
UUPSUpgradeable(proofVerifier).upgradeTo({
92+
newImplementation: address(
93+
new DevnetVerifier(
94+
taikoInboxAddr,
95+
verifiers.opGethVerifier,
96+
verifiers.opRethVerifier,
97+
address(0),
98+
verifiers.risc0RethVerifier,
99+
verifiers.sp1RethVerifier
100+
)
101+
)
102+
});
103+
} else {
104+
UUPSUpgradeable(proofVerifier).upgradeTo({
105+
newImplementation: address(
106+
new DevnetVerifier(
107+
taikoInboxAddr,
108+
verifiers.sgxGethVerifier,
109+
verifiers.opRethVerifier,
110+
verifiers.sgxRethVerifier,
111+
verifiers.risc0RethVerifier,
112+
verifiers.sp1RethVerifier
113+
)
114+
)
115+
});
116+
}
117+
118+
Ownable2StepUpgradeable(proofVerifier).transferOwnership(contractOwner);
74119
// ---------------------------------------------------------------
75120
// Signal service need to authorize the new rollup
76121
address signalServiceAddr = IResolver(sharedResolver).resolve(
77122
uint64(block.chainid), LibStrings.B_SIGNAL_SERVICE, false
78123
);
79124
SignalService signalService = SignalService(signalServiceAddr);
80125

81-
address taikoInboxAddr =
82-
IResolver(rollupResolver).resolve(uint64(block.chainid), LibStrings.B_TAIKO, false);
83126
TaikoInbox taikoInbox = TaikoInbox(payable(taikoInboxAddr));
84127

85128
if (vm.envAddress("SHARED_RESOLVER") == address(0)) {
@@ -363,28 +406,30 @@ contract DeployProtocolOnL1 is DeployCapability {
363406
address owner,
364407
address rollupResolver,
365408
address proofVerifier,
366-
address taikoInboxAddr
409+
address taikoInboxAddr,
410+
address opImplAddr
367411
)
368412
private
413+
returns (VerifierAddresses memory)
369414
{
415+
VerifierAddresses memory verifiers;
370416
// OP verifier
371-
address opVerifier = deployProxy({
417+
verifiers.opRethVerifier = deployProxy({
372418
name: "op_verifier",
373-
impl: address(new OpVerifier(rollupResolver)),
419+
impl: opImplAddr,
374420
data: abi.encodeCall(OpVerifier.init, (owner)),
375421
registerTo: rollupResolver
376422
});
377423

378424
// Other verifiers
379-
380425
// No need to proxy these, because they are 3rd party. If we want to modify, we simply
381426
// change the registerAddress("automata_dcap_attestation", address(attestation));
382427
SigVerifyLib sigVerifyLib = new SigVerifyLib(address(new P256Verifier()));
383428
PEMCertChainLib pemCertChainLib = new PEMCertChainLib();
384-
address automataDcapV3AttestationImpl = address(new AutomataDcapV3Attestation());
385429
// Log addresses for the user to register sgx instance
386430
console2.log("SigVerifyLib", address(sigVerifyLib));
387431
console2.log("PemCertChainLib", address(pemCertChainLib));
432+
address automataDcapV3AttestationImpl = address(new AutomataDcapV3Attestation());
388433
address automataProxy = deployProxy({
389434
name: "automata_dcap_attestation",
390435
impl: automataDcapV3AttestationImpl,
@@ -393,6 +438,24 @@ contract DeployProtocolOnL1 is DeployCapability {
393438
),
394439
registerTo: rollupResolver
395440
});
441+
uint64 l2ChainId = TaikoInbox(payable(taikoInboxAddr)).pacayaConfig().chainId;
442+
require(l2ChainId != block.chainid, "same chainid");
443+
444+
verifiers.sgxRethVerifier = deployProxy({
445+
name: "sgx_reth_verifier",
446+
impl: address(new SgxVerifier(l2ChainId, taikoInboxAddr, proofVerifier, automataProxy)),
447+
data: abi.encodeCall(SgxVerifier.init, owner),
448+
registerTo: rollupResolver
449+
});
450+
451+
(verifiers.risc0RethVerifier, verifiers.sp1RethVerifier) =
452+
deployZKVerifiers(owner, rollupResolver, l2ChainId);
453+
verifiers.opGethVerifier = deployProxy({
454+
name: "op_geth_verifier",
455+
impl: opImplAddr,
456+
data: abi.encodeCall(OpVerifier.init, (owner)),
457+
registerTo: rollupResolver
458+
});
396459
address sgxGethAutomataProxy = deployProxy({
397460
name: "sgx_geth_automata",
398461
impl: automataDcapV3AttestationImpl,
@@ -401,56 +464,15 @@ contract DeployProtocolOnL1 is DeployCapability {
401464
),
402465
registerTo: rollupResolver
403466
});
404-
405-
TaikoInbox taikoInbox = TaikoInbox(payable(taikoInboxAddr));
406-
uint64 l2ChainId = taikoInbox.pacayaConfig().chainId;
407-
require(l2ChainId != block.chainid, "same chainid");
408-
409-
address sgxRethVerifier = deployProxy({
410-
name: "sgx_reth_verifier",
411-
impl: address(new SgxVerifier(l2ChainId, taikoInboxAddr, proofVerifier, automataProxy)),
412-
data: abi.encodeCall(SgxVerifier.init, owner),
413-
registerTo: rollupResolver
414-
});
415-
address sgxGethVerifier = deployProxy({
467+
verifiers.sgxGethVerifier = deployProxy({
416468
name: "sgx_geth_verifier",
417469
impl: address(
418470
new SgxVerifier(l2ChainId, taikoInboxAddr, proofVerifier, sgxGethAutomataProxy)
419471
),
420472
data: abi.encodeCall(SgxVerifier.init, owner),
421473
registerTo: rollupResolver
422474
});
423-
424-
(address risc0RethVerifier, address sp1RethVerifier) =
425-
deployZKVerifiers(owner, rollupResolver, l2ChainId);
426-
if (vm.envBool("DUMMY_VERIFIERS")) {
427-
UUPSUpgradeable(proofVerifier).upgradeTo({
428-
newImplementation: address(
429-
new DevnetVerifier(
430-
taikoInboxAddr,
431-
opVerifier,
432-
opVerifier,
433-
address(0),
434-
risc0RethVerifier,
435-
sp1RethVerifier
436-
)
437-
)
438-
});
439-
} else {
440-
UUPSUpgradeable(proofVerifier).upgradeTo({
441-
newImplementation: address(
442-
new DevnetVerifier(
443-
taikoInboxAddr,
444-
sgxGethVerifier,
445-
opVerifier,
446-
sgxRethVerifier,
447-
risc0RethVerifier,
448-
sp1RethVerifier
449-
)
450-
)
451-
});
452-
}
453-
Ownable2StepUpgradeable(proofVerifier).transferOwnership(owner);
475+
return verifiers;
454476
}
455477

456478
function deployZKVerifiers(

packages/protocol/script/layer1/based/deploy_protocol_on_l1.sh

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ DEPLOY_PRECONF_CONTRACTS=true \
2121
PRECONF_INBOX=false \
2222
INCLUSION_WINDOW=24 \
2323
INCLUSION_FEE_IN_GWEI=100 \
24+
DUMMY_VERIFIERS=true \
2425
forge script ./script/layer1/based/DeployProtocolOnL1.s.sol:DeployProtocolOnL1 \
2526
--fork-url http://localhost:8545 \
2627
--broadcast \

0 commit comments

Comments
 (0)