Skip to content

Commit

Permalink
chore: update deployment scripts (#39)
Browse files Browse the repository at this point in the history
* chore: update deployment scripts

* chore: forge fmt

* chore: small updates
  • Loading branch information
PangZhi authored Aug 27, 2024
1 parent 6ee8229 commit 95df34a
Show file tree
Hide file tree
Showing 22 changed files with 13,082 additions and 60 deletions.
49 changes: 37 additions & 12 deletions script/AggregationDeployBase.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,51 @@ import "forge-std/Script.sol";
import "forge-std/StdJson.sol";
import { Strings } from "openzeppelin-contracts/contracts/utils/Strings.sol";

import { V1Claim2Verifier } from "../src/verifiers/v1/V1Claim2Verifier.sol";
import { V1Claim16Verifier } from "../src/verifiers/v1/V1Claim16Verifier.sol";
import { V1Claim32Verifier } from "../src/verifiers/v1/V1Claim32Verifier.sol";
import { V1Claim64Verifier } from "../src/verifiers/v1/V1Claim64Verifier.sol";
import { V1Claim128Verifier } from "../src/verifiers/v1/V1Claim128Verifier.sol";
import { V1Claim256Verifier } from "../src/verifiers/v1/V1Claim256Verifier.sol";

import { V2Claim2Verifier } from "../src/verifiers/v2/V2Claim2Verifier.sol";
import { V2Claim16Verifier } from "../src/verifiers/v2/V2Claim16Verifier.sol";
import { V2Claim32Verifier } from "../src/verifiers/v2/V2Claim32Verifier.sol";
import { V2Claim64Verifier } from "../src/verifiers/v2/V2Claim64Verifier.sol";
import { V2Claim128Verifier } from "../src/verifiers/v2/V2Claim128Verifier.sol";
import { V2Claim8192Verifier } from "../src/verifiers/v2/V2Claim8192Verifier.sol";

string constant DEPLOYED_ADDRESS_FILE = "script/config/deployed.json";
string constant QUERY_SCHEMA_FILE = "script/config/querySchema.json";

abstract contract AggregationDeployBase is Script {
function _getDeployedAddresses()
internal
view
returns (address queryAddress, address wldToken, address rootValidator, address grant)
{
function _getDeployedAddresses() internal view returns (address wldToken, address rootValidator, address grant) {
string memory deployedAddressesFile = vm.readFile(DEPLOYED_ADDRESS_FILE);
queryAddress = abi.decode(vm.parseJson(deployedAddressesFile, ".queryAddress"), (address));
wldToken = abi.decode(vm.parseJson(deployedAddressesFile, ".wldToken"), (address));
rootValidator = abi.decode(vm.parseJson(deployedAddressesFile, ".rootValidator"), (address));
grant = abi.decode(vm.parseJson(deployedAddressesFile, ".grant"), (address));
}

function _getQuerySchema(string memory version, uint256 maxNumClaims) internal view returns (bytes32 querySchema) {
string memory querySchemaFile = vm.readFile(QUERY_SCHEMA_FILE);
string memory path =
string.concat(string.concat(".", version), string.concat(".", Strings.toString(maxNumClaims)));
querySchema = abi.decode(vm.parseJson(querySchemaFile, path), (bytes32));
function _deployVerifier(string memory version, uint256 maxNumClaims) internal returns (address verifier) {
bytes32 versionHash = keccak256(abi.encodePacked(version));

if (versionHash == keccak256(abi.encodePacked("v1"))) {
if (maxNumClaims == 2) verifier = address(new V1Claim2Verifier());
else if (maxNumClaims == 16) verifier = address(new V1Claim16Verifier());
else if (maxNumClaims == 32) verifier = address(new V1Claim32Verifier());
else if (maxNumClaims == 64) verifier = address(new V1Claim64Verifier());
else if (maxNumClaims == 128) verifier = address(new V1Claim128Verifier());
else if (maxNumClaims == 256) verifier = address(new V1Claim256Verifier());
else revert("Invalid numClaims value");
} else if (versionHash == keccak256(abi.encodePacked("v2"))) {
if (maxNumClaims == 2) verifier = address(new V2Claim2Verifier());
else if (maxNumClaims == 16) verifier = address(new V2Claim16Verifier());
else if (maxNumClaims == 32) verifier = address(new V2Claim32Verifier());
else if (maxNumClaims == 64) verifier = address(new V2Claim64Verifier());
else if (maxNumClaims == 128) verifier = address(new V2Claim128Verifier());
else if (maxNumClaims == 8192) verifier = address(new V2Claim8192Verifier());
else revert("Invalid numClaims value");
} else {
revert("Invalid version");
}
}
}
File renamed without changes.
10 changes: 5 additions & 5 deletions script/DeployAggregationV1.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ pragma solidity 0.8.19;

import { WorldcoinAggregationV1 } from "../src/WorldcoinAggregationV1.sol";
import { IERC20 } from "../src/interfaces/IERC20.sol";
import { V1Claim2Verifier } from "../src/verifiers/V1Claim2Verifier.sol";

import { AggregationDeployBase } from "./AggregationDeployBase.s.sol";

Expand All @@ -16,11 +15,12 @@ contract DeployAggregationV1 is AggregationDeployBase {

bytes32 vKeyHash = 0x46e72119ce99272ddff09e0780b472fdc612ca799c245eea223b27e57a5f9cec;

(, address wldToken, address rootValidator, address grant) = _getDeployedAddresses();
(address wldToken, address rootValidator, address grant) = _getDeployedAddresses();

WorldcoinAggregationV1 worldcoinAggV1 = new WorldcoinAggregationV1(
vKeyHash, maxNumClaims, wldToken, rootValidator, grant, address(new V1Claim2Verifier()), address(0)
);
address verifier = _deployVerifier("v1", maxNumClaims);

WorldcoinAggregationV1 worldcoinAggV1 =
new WorldcoinAggregationV1(vKeyHash, maxNumClaims, wldToken, rootValidator, grant, verifier, address(0));

IERC20 wldTokenContract = IERC20(wldToken);
uint256 transferAmount = 100_000 * 10 ** 18;
Expand Down
19 changes: 9 additions & 10 deletions script/DeployAggregationV2.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,20 @@ contract DeployAggregationV2 is AggregationDeployBase {
function run(uint256 logMaxNumClaims) external {
vm.startBroadcast();

// uint64 sourceChainId = 11_155_111;
// bytes32 vKeyHash = 0x46e72119ce99272ddff09e0780b472fdc612ca799c245eea223b27e57a5f9cec;
bytes32 vKeyHash = 0x46e72119ce99272ddff09e0780b472fdc612ca799c245eea223b27e57a5f9cec;

// uint256 maxNumClaims = 2 ** logMaxNumClaims;
uint256 maxNumClaims = 2 ** logMaxNumClaims;

// bytes32 querySchema = _getQuerySchema("v2", maxNumClaims);
(address wldToken, address rootValidator, address grant) = _getDeployedAddresses();

// (address queryAddress, address wldToken, address rootValidator, address grant) = _getDeployedAddresses();
address verifier = _deployVerifier("v2", maxNumClaims);

// WorldcoinAggregationV2 worldcoinAggV2 =
// new WorldcoinAggregationV2(vKeyHash, logMaxNumClaims, wldToken, rootValidator, grant);
WorldcoinAggregationV2 worldcoinAggV2 =
new WorldcoinAggregationV2(vKeyHash, logMaxNumClaims, wldToken, rootValidator, grant, verifier, address(0));

// IERC20 wldTokenContract = IERC20(wldToken);
// uint256 transferAmount = 100_000 * 10 ** 18;
// wldTokenContract.transfer(address(worldcoinAggV2), transferAmount);
IERC20 wldTokenContract = IERC20(wldToken);
uint256 transferAmount = 100_000 * 10 ** 18;
wldTokenContract.transfer(address(worldcoinAggV2), transferAmount);

vm.stopBroadcast();
}
Expand Down
1 change: 0 additions & 1 deletion script/config/deployed.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{
"queryAddress": "0x9C9CF878f9Ba4422BDD73B55554F0A796411D5ed",
"wldToken": "0xe93D97b0Bd30bD61a9D02B0A471DbB329D5d1fd8",
"rootValidator": "0x9c06c3F1deecb530857127009EBE7d112ecd0E3F",
"grant": "0x5d1F6aDfff773A2146f1f3c947Ddad1945103DaC"
Expand Down
16 changes: 0 additions & 16 deletions script/config/querySchema.json

This file was deleted.

10 changes: 5 additions & 5 deletions script/config/v2client.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"8": "0x051e0aB85c4Dfb90270FD45c93628c7F0b7551e7",
"16": "0x3f88b9dc416ceadc36092673097ba456ba878cfb",
"32": "0x18c98598e77dBF52e897966b3b1980EB9195D496",
"64": "0x7400fA7E1da16D995EC5F8F717a61D974C02BfAc",
"128": "0x0CBb51Fd7fbfc36A342C3D35316B814C825EA552"
"16": "0x0725a6d62f7d9eC34197c57Bbc34B6657e251bf9",
"32": "0xDbef001fF19867075F02bB6Ee3D490235885AABA",
"64": "0x15C11FA9f87819020ec63997e7f1FcDeb71E2420",
"128": "0xE43aB117477b9976fE02198299D933fdaC80E319",
"8192": "0x708151E55a73bf359A1E0cC87Ff7D88c87Db9859"
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

contract Claim128Verifier {
contract V1Claim128Verifier {
fallback(bytes calldata) external returns (bytes memory) {
assembly ("memory-safe") {
// Enforce that Solidity memory layout is respected
Expand Down Expand Up @@ -42,7 +43,7 @@ contract Claim128Verifier {
mstore(0x200, mod(calldataload(0x160), f_q))
mstore(0x220, mod(calldataload(0x180), f_q))
mstore(0x240, mod(calldataload(0x1a0), f_q))
mstore(0x80, 1334342444677392067732471422449095960068262945487405663728914590857770165751)
mstore(0x80, 12539156402519065942152929369317526928626503019059017840615728598672903251921)

{
let x := calldataload(0x1c0)
Expand Down Expand Up @@ -1224,8 +1225,8 @@ contract Claim128Verifier {
mstore(0x4100, mload(0x4060))
mstore(0x4120, mload(0x4080))
success := and(eq(staticcall(gas(), 0x6, 0x40c0, 0x80, 0x40c0, 0x40), 1), success)
mstore(0x4140, 0x2865bab005504af145aa7158d50f8a3d11707f3ea6e2c30a59c7ad4ee11e7d5d)
mstore(0x4160, 0x28f288f7f51311aca9ab1e22b598ae6040daf6994ebd3907997973858c048f04)
mstore(0x4140, 0x2e2c62958327624f1e912d84cbcf289ef1b4827837d2770a2050d58805ff0ba5)
mstore(0x4160, 0x003f7e15335234a3c73cad4c8b72d3feaf4c22d3cf79e489a6cf294a13d09002)
mstore(0x4180, mload(0x3b00))
success := and(eq(staticcall(gas(), 0x7, 0x4140, 0x60, 0x4140, 0x40), 1), success)
mstore(0x41a0, mload(0x40c0))
Expand Down Expand Up @@ -1260,17 +1261,17 @@ contract Claim128Verifier {
mstore(0x4480, mload(0x43e0))
mstore(0x44a0, mload(0x4400))
success := and(eq(staticcall(gas(), 0x6, 0x4440, 0x80, 0x4440, 0x40), 1), success)
mstore(0x44c0, 0x24ef979492ed8193576e6d81eb216a669f207696c86216e9fdcb5fd786a7459e)
mstore(0x44e0, 0x27a677245c5454ceb99a18c54b98c0130a5f74987c865328058873489f532a0f)
mstore(0x44c0, 0x0023cf36ddddf5a021fe5ea2e28331c829d80e8b5ba4d4b8caacdced7ebbc7b2)
mstore(0x44e0, 0x1fc3721cef42bc6a7f47c43ed3a133f4bb9a9222dbf0e699806e49a43b74d4ab)
mstore(0x4500, mload(0x3b80))
success := and(eq(staticcall(gas(), 0x7, 0x44c0, 0x60, 0x44c0, 0x40), 1), success)
mstore(0x4520, mload(0x4440))
mstore(0x4540, mload(0x4460))
mstore(0x4560, mload(0x44c0))
mstore(0x4580, mload(0x44e0))
success := and(eq(staticcall(gas(), 0x6, 0x4520, 0x80, 0x4520, 0x40), 1), success)
mstore(0x45a0, 0x1351124068de36907f08f5499e8c8fc2d7edbbb2b4b7eb3a2e18e4798a3f20ed)
mstore(0x45c0, 0x0609506de6dc5f790c73a06291c55019b758000d23b7f5097c557fd82835d0e5)
mstore(0x45a0, 0x1b51ee2038735da053903a18c32e3bd3150d289f6b95fb0d2a22b510ee4426a8)
mstore(0x45c0, 0x27bfd563a8a95f1aefa028638fa0eb9a14cc3303cba0867808e6017707cc4ebc)
mstore(0x45e0, mload(0x3ba0))
success := and(eq(staticcall(gas(), 0x7, 0x45a0, 0x60, 0x45a0, 0x40), 1), success)
mstore(0x4600, mload(0x4520))
Expand Down
Loading

0 comments on commit 95df34a

Please sign in to comment.