Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion deployments/11155111-dev-no-nitro.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"SystemConfigGlobal":"0xf8293c0f3a36A746B559a1a51870339B20F60945","TEEVerifier":"0x82453dA61B397EE366fB2129502de9c216480aB6","DisputeGameFactory":"0xfEa8Cb315F75d838b6c76ae336a9255f81df0D50","AnchorStateRegistry":"0x556BD554854504BE2F2023F6531D25eF6f6Fe77D","DelayedWETH":"0xb1FB7f05711d2270cD658448562A29E8c5C95E9E","AggregateVerifier":"0xeeF18F1640fa79f919799B5D629908909e715f97"}
{"TEEProverRegistry":"0x8897f8E1379C7548caE146e0ee26f6b1108A8570","TEEVerifier":"0xB319EA8fAac05BB01ABcce3671BC66c5A1f9A077","DisputeGameFactory":"0xF2e2f5F97e1aE0899924bE4Dd1D1795052Ea7551","AnchorStateRegistry":"0x59C17E560057A1cF2327E6Be35b070E46e4EC8b4","DelayedWETH":"0xD455276eF429eE495d91567BF3e78066bdfAc2b8","AggregateVerifier":"0x3EE78cfac34D7Cbe49D35B901B354272d2084951"}
2 changes: 1 addition & 1 deletion scripts/deploy/Deploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ contract Deploy is Deployer {
artifacts.save("PreimageOracle", address(dio.preimageOracleSingleton));
artifacts.save("PermissionedDisputeGame", address(dio.permissionedDisputeGameV2Impl));
artifacts.save("AggregateVerifier", address(dio.aggregateVerifierImpl));
artifacts.save("SystemConfigGlobal", address(dio.systemConfigGlobalImpl));
artifacts.save("TEEProverRegistry", address(dio.teeProverRegistryImpl));

// Get a contract set from the implementation addresses which were just deployed.
Types.ContractSet memory impls = ChainAssertions.dioToContractSet(dio);
Expand Down
10 changes: 5 additions & 5 deletions scripts/deploy/DeployImplementations.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ import { DevFeatures } from "src/libraries/DevFeatures.sol";
import {
INitroEnclaveVerifier
} from "lib/aws-nitro-enclave-attestation/contracts/src/interfaces/INitroEnclaveVerifier.sol";
import { SystemConfigGlobal } from "src/multiproof/tee/SystemConfigGlobal.sol";
import { TEEProverRegistry } from "src/multiproof/tee/TEEProverRegistry.sol";
import { MockVerifier } from "src/multiproof/mocks/MockVerifier.sol";
import { TEEVerifier } from "src/multiproof/tee/TEEVerifier.sol";
import { AggregateVerifier } from "src/multiproof/AggregateVerifier.sol";
Expand Down Expand Up @@ -114,7 +114,7 @@ contract DeployImplementations is Script {
ISuperFaultDisputeGame superFaultDisputeGameImpl;
ISuperPermissionedDisputeGame superPermissionedDisputeGameImpl;
IVerifier aggregateVerifierImpl;
SystemConfigGlobal systemConfigGlobalImpl;
TEEProverRegistry teeProverRegistryImpl;
}

bytes32 internal _salt = DeployUtils.DEFAULT_SALT;
Expand Down Expand Up @@ -721,9 +721,9 @@ contract DeployImplementations is Script {

address teeVerifierImpl;
{
SystemConfigGlobal scgImpl = new SystemConfigGlobal(INitroEnclaveVerifier(_input.nitroEnclaveVerifier));
vm.label(address(scgImpl), "SystemConfigGlobalImpl");
_output.systemConfigGlobalImpl = scgImpl;
TEEProverRegistry scgImpl = new TEEProverRegistry(INitroEnclaveVerifier(_input.nitroEnclaveVerifier));
vm.label(address(scgImpl), "TEEProverRegistryImpl");
_output.teeProverRegistryImpl = scgImpl;
teeVerifierImpl = address(new TEEVerifier(scgImpl, _output.anchorStateRegistryImpl));
}

Expand Down
50 changes: 25 additions & 25 deletions scripts/multiproof/DeployDevNoNitro.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ pragma solidity 0.8.15;
* DEPLOYMENT TYPE: DEV (NO NITRO)
* ══════════════════════════════════════════════════════════════════════════════════
*
* This script deploys infrastructure using DevSystemConfigGlobal, which BYPASSES
* This script deploys infrastructure using DevTEEProverRegistry, which BYPASSES
* AWS Nitro attestation validation. Signers can be registered with a simple call
* to addDevSigner() without needing a real Nitro enclave or attestation document.
*
Expand All @@ -28,7 +28,7 @@ pragma solidity 0.8.15;
*
* After deployment, register a signer with a single call:
*
* cast send $SYSTEM_CONFIG_GLOBAL \
* cast send $TEE_PROVER_REGISTRY \
* "addDevSigner(address,bytes32)" $SIGNER_ADDRESS $TEE_IMAGE_HASH \
* --private-key $OWNER_KEY --rpc-url $RPC_URL
*
Expand All @@ -38,14 +38,14 @@ pragma solidity 0.8.15;
* COMPARISON WITH DeployDevWithNitro
* ─────────────────────────────────────────────────────────────────────────────────
*
* | Feature | DeployDevNoNitro | DeployDevWithNitro |
* |----------------------------|----------------------|------------------------|
* | SystemConfigGlobal | DevSystemConfigGlobal | SystemConfigGlobal |
* | Signer registration | addDevSigner() | registerSigner() |
* | Requires Nitro enclave | No | Yes |
* | Validates attestation (ZK) | No | Yes |
* | PCR0 pre-registration | No | Yes |
* | Attestation freshness | N/A | < 60 minutes |
* | Feature | DeployDevNoNitro | DeployDevWithNitro |
* |----------------------------|------------------------|------------------------|
* | TEEProverRegistry | DevTEEProverRegistry | TEEProverRegistry |
* | Signer registration | addDevSigner() | registerSigner() |
* | Requires Nitro enclave | No | Yes |
* | Validates attestation (ZK) | No | Yes |
* | PCR0 pre-registration | No | Yes |
* | Attestation freshness | N/A | < 60 minutes |
*
* Both scripts use mocks for AnchorStateRegistry, DelayedWETH, and ZK Verifier.
*
Expand All @@ -71,8 +71,8 @@ import { DeployUtils } from "scripts/libraries/DeployUtils.sol";
import { AggregateVerifier } from "src/multiproof/AggregateVerifier.sol";
import { IVerifier } from "interfaces/multiproof/IVerifier.sol";
import { MockVerifier } from "src/multiproof/mocks/MockVerifier.sol";
import { DevSystemConfigGlobal } from "src/multiproof/mocks/MockDevSystemConfigGlobal.sol";
import { SystemConfigGlobal } from "src/multiproof/tee/SystemConfigGlobal.sol";
import { DevTEEProverRegistry } from "src/multiproof/mocks/MockDevTEEProverRegistry.sol";
import { TEEProverRegistry } from "src/multiproof/tee/TEEProverRegistry.sol";
import { TEEVerifier } from "src/multiproof/tee/TEEVerifier.sol";

import { MinimalProxyAdmin } from "./mocks/MinimalProxyAdmin.sol";
Expand All @@ -81,7 +81,7 @@ import { MockDelayedWETH } from "./mocks/MockDelayedWETH.sol";

/// @title DeployDevNoNitro
/// @notice Development deployment WITHOUT AWS Nitro attestation validation.
/// @dev Uses DevSystemConfigGlobal which allows addDevSigner() to bypass attestation.
/// @dev Uses DevTEEProverRegistry which allows addDevSigner() to bypass attestation.
contract DeployDevNoNitro is Script {
/// @notice Constant from Optimism's Constants.sol - the storage slot for proxy admin.
bytes32 internal constant PROXY_OWNER_ADDRESS = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
Expand All @@ -95,7 +95,7 @@ contract DeployDevNoNitro is Script {
DeployConfig(address(uint160(uint256(keccak256(abi.encode("optimism.deployconfig"))))));

// Deployed addresses
address public systemConfigGlobalProxy;
address public teeProverRegistryProxy;
address public teeVerifier;
address public disputeGameFactory;
address public mockAnchorRegistry;
Expand All @@ -116,7 +116,7 @@ contract DeployDevNoNitro is Script {
console.log("TEE Proposer:", cfg.teeProposer());
console.log("Game Type:", cfg.multiproofGameType());
console.log("");
console.log("NOTE: Using DevSystemConfigGlobal - NO attestation required.");
console.log("NOTE: Using DevTEEProverRegistry - NO attestation required.");

vm.startBroadcast();

Expand All @@ -132,22 +132,22 @@ contract DeployDevNoNitro is Script {
}

function _deployTEEContracts(address owner) internal {
address scgImpl = address(new DevSystemConfigGlobal(INitroEnclaveVerifier(address(0))));
systemConfigGlobalProxy = address(
address scgImpl = address(new DevTEEProverRegistry(INitroEnclaveVerifier(address(0))));
teeProverRegistryProxy = address(
new TransparentUpgradeableProxy(
scgImpl, address(0xdead), abi.encodeCall(SystemConfigGlobal.initialize, (owner, owner))
scgImpl, address(0xdead), abi.encodeCall(TEEProverRegistry.initialize, (owner, owner))
)
);
console.log("DevSystemConfigGlobal:", systemConfigGlobalProxy);
console.log("DevTEEProverRegistry:", teeProverRegistryProxy);

teeVerifier = address(
new TEEVerifier(SystemConfigGlobal(systemConfigGlobalProxy), IAnchorStateRegistry(mockAnchorRegistry))
new TEEVerifier(TEEProverRegistry(teeProverRegistryProxy), IAnchorStateRegistry(mockAnchorRegistry))
);
console.log("TEEVerifier:", teeVerifier);
}

function _registerProposer(address teeProposer) internal {
SystemConfigGlobal(systemConfigGlobalProxy).setProposer(teeProposer, true);
TEEProverRegistry(teeProverRegistryProxy).setProposer(teeProposer, true);
console.log("Registered TEE proposer:", teeProposer);
}

Expand Down Expand Up @@ -209,7 +209,7 @@ contract DeployDevNoNitro is Script {
console.log(" DEV DEPLOYMENT COMPLETE (NO NITRO)");
console.log("========================================");
console.log("\nTEE Contracts:");
console.log(" DevSystemConfigGlobal:", systemConfigGlobalProxy);
console.log(" DevTEEProverRegistry:", teeProverRegistryProxy);
console.log(" TEEVerifier:", teeVerifier);
console.log("\nInfrastructure:");
console.log(" DisputeGameFactory:", disputeGameFactory);
Expand All @@ -222,7 +222,7 @@ contract DeployDevNoNitro is Script {
console.log(" Config Hash:", vm.toString(cfg.multiproofConfigHash()));
console.log("========================================");
console.log("\n>>> NEXT STEP - Register dev signer (NO ATTESTATION NEEDED) <<<");
console.log("\ncast send", systemConfigGlobalProxy);
console.log("\ncast send", teeProverRegistryProxy);
console.log(' "addDevSigner(address,bytes32)" <SIGNER_ADDRESS>');
console.log(" ", vm.toString(cfg.teeImageHash()));
console.log(" --private-key <OWNER_KEY> --rpc-url <RPC>");
Expand All @@ -232,8 +232,8 @@ contract DeployDevNoNitro is Script {
function _writeOutput() internal {
string memory outPath = string.concat("deployments/", vm.toString(block.chainid), "-dev-no-nitro.json");
string memory output = string.concat(
'{"SystemConfigGlobal":"',
vm.toString(systemConfigGlobalProxy),
'{"TEEProverRegistry":"',
vm.toString(teeProverRegistryProxy),
'","TEEVerifier":"',
vm.toString(teeVerifier),
'","DisputeGameFactory":"',
Expand Down
Loading
Loading