Skip to content

Commit

Permalink
fix(taiko-client): fix the workflow to get proof_verifier (#18936)
Browse files Browse the repository at this point in the history
Co-authored-by: Gavin “yoghurt” Yu <[email protected]>
Co-authored-by: YoGhurt111 <[email protected]>
Co-authored-by: David <[email protected]>
  • Loading branch information
4 people authored Feb 15, 2025
1 parent 245b7ce commit 0d97116
Show file tree
Hide file tree
Showing 8 changed files with 377 additions and 58 deletions.
26 changes: 13 additions & 13 deletions packages/protocol/script/layer1/based/DeployProtocolOnL1.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,16 @@ contract DeployProtocolOnL1 is DeployCapability {
copyRegister(rollupResolver, _sharedResolver, "signal_service");
copyRegister(rollupResolver, _sharedResolver, "bridge");

// Proof verifier
address proofVerifier = deployProxy({
name: "proof_verifier",
impl: address(
new DevnetVerifier(address(0), address(0), address(0), address(0), address(0))
),
data: abi.encodeCall(ComposeVerifier.init, (address(0))),
registerTo: rollupResolver
});

// OP verifier
address opVerifier = deployProxy({
name: "op_verifier",
Expand All @@ -268,7 +278,7 @@ contract DeployProtocolOnL1 is DeployCapability {
impl: address(
new MainnetInbox(
address(0),
opVerifier,
proofVerifier,
IResolver(_sharedResolver).resolve(uint64(block.chainid), "bond_token", false),
IResolver(_sharedResolver).resolve(uint64(block.chainid), "signal_service", false)
)
Expand All @@ -281,7 +291,7 @@ contract DeployProtocolOnL1 is DeployCapability {
oldFork = address(
new DevnetInbox(
address(0),
opVerifier,
proofVerifier,
IResolver(_sharedResolver).resolve(uint64(block.chainid), "bond_token", false),
IResolver(_sharedResolver).resolve(
uint64(block.chainid), "signal_service", false
Expand All @@ -292,7 +302,7 @@ contract DeployProtocolOnL1 is DeployCapability {
address newFork = address(
new DevnetInbox(
address(0),
opVerifier,
proofVerifier,
IResolver(_sharedResolver).resolve(uint64(block.chainid), "bond_token", false),
IResolver(_sharedResolver).resolve(uint64(block.chainid), "signal_service", false)
)
Expand All @@ -314,14 +324,6 @@ contract DeployProtocolOnL1 is DeployCapability {

// Other verifiers
// Initializable the proxy for proofVerifier to get the contract address at first.
address proofVerifier = deployProxy({
name: "proof_verifier",
impl: address(
new DevnetVerifier(taikoInboxAddr, address(0), address(0), address(0), address(0))
),
data: abi.encodeCall(ComposeVerifier.init, (address(0))),
registerTo: rollupResolver
});
address sgxVerifier =
deploySgxVerifier(owner, rollupResolver, l2ChainId, address(taikoInbox), proofVerifier);

Expand All @@ -333,8 +335,6 @@ contract DeployProtocolOnL1 is DeployCapability {
new DevnetVerifier(taikoInboxAddr, opVerifier, sgxVerifier, risc0Verifier, sp1Verifier)
)
});
ComposeVerifier(proofVerifier).transferOwnership(owner);
console2.log("** proofVerifier ownership transferred to:", owner);

// Prover set
deployProxy({
Expand Down
60 changes: 44 additions & 16 deletions packages/protocol/script/layer1/devnet/UpgradeDevnetPacayaL1.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
pragma solidity ^0.8.24;

import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
import "@risc0/contracts/groth16/RiscZeroGroth16Verifier.sol";
import { SP1Verifier as SuccinctVerifier } from
"@sp1-contracts/src/v4.0.0-rc.3/SP1VerifierPlonk.sol";
import "@p256-verifier/contracts/P256Verifier.sol";
import "test/shared/DeployCapability.sol";
import "src/shared/bridge/Bridge.sol";
import "src/shared/common/DefaultResolver.sol";
Expand All @@ -21,6 +25,9 @@ import "src/layer1/fork-router/PacayaForkRouter.sol";
import "src/layer1/verifiers/compose/ComposeVerifier.sol";
import "src/layer1/devnet/verifiers/DevnetVerifier.sol";
import "src/layer1/devnet/DevnetInbox.sol";
import "src/layer1/automata-attestation/AutomataDcapV3Attestation.sol";
import "src/layer1/automata-attestation/lib/PEMCertChainLib.sol";
import "src/layer1/automata-attestation/utils/SigVerifyLib.sol";

contract UpgradeDevnetPacayaL1 is DeployCapability {
uint256 public privateKey = vm.envUint("PRIVATE_KEY");
Expand Down Expand Up @@ -102,6 +109,16 @@ contract UpgradeDevnetPacayaL1 is DeployCapability {
copyRegister(rollupResolver, sharedResolver, "signal_service");
copyRegister(rollupResolver, sharedResolver, "bridge");

// Proof verifier
address proofVerifier = deployProxy({
name: "proof_verifier",
impl: address(
new DevnetVerifier(address(0), address(0), address(0), address(0), address(0))
),
data: abi.encodeCall(ComposeVerifier.init, (address(0))),
registerTo: rollupResolver
});

// OP verifier
address opVerifier = deployProxy({
name: "op_verifier",
Expand All @@ -112,7 +129,7 @@ contract UpgradeDevnetPacayaL1 is DeployCapability {

// TaikoInbox
address newFork =
address(new DevnetInbox(address(0), opVerifier, taikoToken, signalService));
address(new DevnetInbox(address(0), proofVerifier, taikoToken, signalService));
UUPSUpgradeable(taikoInbox).upgradeTo(address(new PacayaForkRouter(oldFork, newFork)));
register(rollupResolver, "taiko", taikoInbox);

Expand All @@ -125,28 +142,39 @@ contract UpgradeDevnetPacayaL1 is DeployCapability {
require(l2ChainId != block.chainid, "same chainid");

// Other verifiers
address proofVerifier = address(
new ERC1967Proxy(
address(
new DevnetVerifier(taikoInbox, address(0), address(0), address(0), address(0))
),
abi.encodeCall(ComposeVerifier.init, (address(0)))
)
);
address automataDcapAttestation = address(0); // not used!
P256Verifier p256Verifier = new P256Verifier();
SigVerifyLib sigVerifyLib = new SigVerifyLib(address(p256Verifier));
PEMCertChainLib pemCertChainLib = new PEMCertChainLib();
address automataDcapV3AttestationImpl = address(new AutomataDcapV3Attestation());

address automataProxy = deployProxy({
name: "automata_dcap_attestation",
impl: automataDcapV3AttestationImpl,
data: abi.encodeCall(
AutomataDcapV3Attestation.init,
(address(0), address(sigVerifyLib), address(pemCertChainLib))
),
registerTo: rollupResolver
});
UUPSUpgradeable(sgxVerifier).upgradeTo(
address(new SgxVerifier(l2ChainId, taikoInbox, proofVerifier, automataDcapAttestation))
address(new SgxVerifier(l2ChainId, taikoInbox, proofVerifier, automataProxy))
);

register(rollupResolver, "sgx_verifier", sgxVerifier);
address risc0Groth16Verifier = address(0); // TODO

// Deploy r0 groth16 verifier
RiscZeroGroth16Verifier risc0Groth16Verifier =
new RiscZeroGroth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID);
register(rollupResolver, "risc0_groth16_verifier", address(risc0Groth16Verifier));
UUPSUpgradeable(risc0Verifier).upgradeTo(
address(new Risc0Verifier(l2ChainId, risc0Groth16Verifier))
address(new Risc0Verifier(l2ChainId, address(risc0Groth16Verifier)))
);
register(rollupResolver, "risc0_verifier", risc0Verifier);
address sp1RemoteVerifier = address(0); // TODO

// Deploy sp1 plonk verifier
SuccinctVerifier sp1RemoteVerifier = new SuccinctVerifier();
register(rollupResolver, "sp1_remote_verifier", address(sp1RemoteVerifier));
UUPSUpgradeable(sp1Verifier).upgradeTo(
address(new SP1Verifier(l2ChainId, sp1RemoteVerifier))
address(new SP1Verifier(l2ChainId, address(sp1RemoteVerifier)))
);
register(rollupResolver, "sp1_verifier", sp1Verifier);

Expand Down
2 changes: 1 addition & 1 deletion packages/taiko-client/bindings/pacaya/.githead
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2fe0c87028772a11bf47870e4667cb2a4fd27bab
2be4b799893cb2bf683d47e08f11d1f41c7da52e
Loading

0 comments on commit 0d97116

Please sign in to comment.