Skip to content

Commit

Permalink
udpate tests-vectors review
Browse files Browse the repository at this point in the history
  • Loading branch information
laisolizq authored and ignasirv committed Feb 26, 2025
1 parent d11d0c5 commit 088af5b
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 164 deletions.
102 changes: 41 additions & 61 deletions test/src/aggchain-ECDSA.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,36 +28,26 @@ describe("Test vectors aggchain ECDSA", () => {
let initializeBytesAggchainV0: string;
let initializeBytesAggchainV1: string;
let aggchainParams: string;
let aggchainSelectors: string[] = [];
let aggchainData: string[] = [];
let aggchainHash: string[] = [];
let aggchainSelectors: string;
let finalAggchainVKeySelector: string;
let aggchainData: string;
let aggchainHash: string;

const data = dataECDSA[i].input;

it(`generate id: ${i}`, async function () {
// load signers
[vKeyManager, admin] = await ethers.getSigners();

if (data.aggchainVKeySelectors.length !== data.ownedAggchainVkeys.length) {
throw new Error("aggchainVKeySelectors and ownedAggchainVkeys must have the same length");
}
finalAggchainVKeySelector = utilsCommon.getFinalAggchainVKeySelectorFromType(
data.initAggchainVKeySelector,
utilsECDSA.AGGCHAIN_TYPE_SELECTOR_ECDSA
)

if (data.aggchainVKeySelectors.length !== 0) {
for (let j = 0; j < data.aggchainVKeySelectors.length; j++) {
// get final aggchainSelector
aggchainSelectors.push(
utilsCommon.getFinalAggchainVKeySelectorFromType(
data?.aggchainVKeySelectors[j],
utilsECDSA.AGGCHAIN_TYPE_SELECTOR_ECDSA
)
);

// check final aggchainSelector
expect(aggchainSelectors[j]).to.be.equal(
`${data.aggchainVKeySelectors[j]}${utilsECDSA.AGGCHAIN_TYPE_SELECTOR_ECDSA.slice(2)}`
);
}
}
// check final aggchainSelector
expect(finalAggchainVKeySelector).to.be.equal(
`${data.initAggchainVKeySelector}${utilsECDSA.AGGCHAIN_TYPE_SELECTOR_ECDSA.slice(2)}`
);

// deploy aggchain
// create aggchainECDSA implementation
Expand All @@ -78,8 +68,8 @@ describe("Test vectors aggchain ECDSA", () => {
// encode initializeBytesAggchain
initializeBytesAggchainV0 = utilsECDSA.encodeInitializeBytesAggchainECDSAv0(
data.useDefaultGateway,
data.ownedAggchainVkeys,
aggchainSelectors,
data.initOwnedAggchainVKey,
data.initAggchainVKeySelector,
vKeyManager.address,
admin.address,
data.trustedSequencer,
Expand All @@ -102,12 +92,9 @@ describe("Test vectors aggchain ECDSA", () => {
expect(await aggchainECDSAContract.trustedSequencerURL()).to.be.equal(data.trustedSequencerURL);
expect(await aggchainECDSAContract.networkName()).to.be.equal(data.networkName);
expect(await aggchainECDSAContract.gasTokenAddress()).to.be.equal(data.gasTokenAddress);

for (let j = 0; j < aggchainSelectors.length; j++) {
expect(await aggchainECDSAContract.ownedAggchainVKeys(aggchainSelectors[j])).to.be.equal(
data.ownedAggchainVkeys[j]
);
}
expect(await aggchainECDSAContract.ownedAggchainVKeys(finalAggchainVKeySelector)).to.be.equal(
data.initOwnedAggchainVKey
);

// encode aggchainParams
aggchainParams = utilsECDSA.computeHashAggchainParamsECDSA(data.trustedSequencer);
Expand All @@ -119,25 +106,21 @@ describe("Test vectors aggchain ECDSA", () => {
.withArgs(false);
}

for (let j = 0; j < aggchainSelectors.length; j++) {
// encode aggchainData
aggchainData.push(utilsECDSA.encodeAggchainDataECDSA(data.aggchainVKeySelectors[j], data.newStateRoot));
// get aggchainHash
aggchainHash.push(
utilsCommon.computeAggchainHash(
utilsCommon.AggchainType.GENERIC,
data.ownedAggchainVkeys[j],
aggchainParams
)
);
// get aggchainHash from contract
const aggchainHashContract = await aggchainECDSAContract.getAggchainHash(aggchainData[j], {
gasPrice: 0,
});
// check aggchainHash === aggchainHash from contract
// with this check we can be sure that the aggchainParams & aggchainHash works correctly
expect(aggchainHash[j]).to.be.equal(aggchainHashContract);
}
// encode aggchainData
aggchainData = utilsECDSA.encodeAggchainDataECDSA(data.initAggchainVKeySelector, data.newStateRoot);
// get aggchainHash
aggchainHash = utilsCommon.computeAggchainHash(
utilsCommon.AggchainType.GENERIC,
data.initOwnedAggchainVKey,
aggchainParams
);
// get aggchainHash from contract
const aggchainHashContract = await aggchainECDSAContract.getAggchainHash(aggchainData, {
gasPrice: 0,
});
// check aggchainHash === aggchainHash from contract
// with this check we can be sure that the aggchainParams & aggchainHash works correctly
expect(aggchainHash).to.be.equal(aggchainHashContract);

// reinitialize using rollup manager & initializeBytesAggchainECDSAv1

Expand Down Expand Up @@ -187,8 +170,8 @@ describe("Test vectors aggchain ECDSA", () => {
// encode initializeBytesAggchain version 1
initializeBytesAggchainV1 = utilsECDSA.encodeInitializeBytesAggchainECDSAv1(
data.useDefaultGateway,
data.ownedAggchainVkeys,
aggchainSelectors,
data.initOwnedAggchainVKey,
data.initAggchainVKeySelector,
vKeyManager.address
);

Expand All @@ -201,12 +184,9 @@ describe("Test vectors aggchain ECDSA", () => {
expect(await aggchainECDSAContract.trustedSequencerURL()).to.be.equal(data.trustedSequencerURL);
expect(await aggchainECDSAContract.networkName()).to.be.equal(data.networkName);
expect(await aggchainECDSAContract.gasTokenAddress()).to.be.equal(data.gasTokenAddress);

for (let j = 0; j < aggchainSelectors.length; j++) {
expect(await aggchainECDSAContract.ownedAggchainVKeys(aggchainSelectors[j])).to.be.equal(
data.ownedAggchainVkeys[j]
);
}
expect(await aggchainECDSAContract.ownedAggchainVKeys(finalAggchainVKeySelector)).to.be.equal(
data.initOwnedAggchainVKey
);

// add data to test-vector
if (update) {
Expand All @@ -217,8 +197,8 @@ describe("Test vectors aggchain ECDSA", () => {
dataECDSA[i].output.initializeBytesAggchainV0 = initializeBytesAggchainV0;
dataECDSA[i].output.initializeBytesAggchainV1 = initializeBytesAggchainV1;
dataECDSA[i].output.aggchainData = aggchainData;
dataECDSA[i].output.aggchainSelectors = aggchainSelectors;
dataECDSA[i].output.aggchainHashes = aggchainHash;
dataECDSA[i].output.finalAggchainVKeySelector = finalAggchainVKeySelector;
dataECDSA[i].output.aggchainHash = aggchainHash;
dataECDSA[i].output.aggchainParams = aggchainParams;

console.log(`Writing data to test-vector: ${i}. Path: ${pathTestVector}`);
Expand All @@ -229,8 +209,8 @@ describe("Test vectors aggchain ECDSA", () => {
expect(dataECDSA[i].output.initializeBytesAggchainV0).to.be.equal(initializeBytesAggchainV0);
expect(dataECDSA[i].output.initializeBytesAggchainV1).to.be.equal(initializeBytesAggchainV1);
expect(dataECDSA[i].output.aggchainData).to.be.deep.equal(aggchainData);
expect(dataECDSA[i].output.aggchainSelectors).to.be.deep.equal(aggchainSelectors);
expect(dataECDSA[i].output.aggchainHashes).to.be.deep.equal(aggchainHash);
expect(dataECDSA[i].output.finalAggchainVKeySelector).to.be.deep.equal(finalAggchainVKeySelector);
expect(dataECDSA[i].output.aggchainHash).to.be.deep.equal(aggchainHash);
expect(dataECDSA[i].output.aggchainParams).to.be.equal(aggchainParams);
}
});
Expand Down
8 changes: 4 additions & 4 deletions test/src/aggchain-utils-ECDSA.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ describe("Test vectors aggchain ECDSA utils", () => {
const testVector = aggchainInitBytesV0[i].input;
const initBytesAggchainECDSAv0 = utilsECDSA.encodeInitializeBytesAggchainECDSAv0(
testVector.useDefaultGateway,
testVector.ownedAggchainVkeys,
testVector.aggchainVKeySelectors,
testVector.initOwnedAggchainVKey,
testVector.initAggchainVKeySelector,
testVector.vKeyManager,
testVector.admin,
testVector.trustedSequencer,
Expand All @@ -66,8 +66,8 @@ describe("Test vectors aggchain ECDSA utils", () => {
const testVector = aggchainInitBytesV1[i].input;
const initBytesAggchainECDSAv1 = utilsECDSA.encodeInitializeBytesAggchainECDSAv1(
testVector.useDefaultGateway,
testVector.ownedAggchainVkeys,
testVector.aggchainVKeySelectors,
testVector.initOwnedAggchainVKey,
testVector.initAggchainVKeySelector,
testVector.vKeyManager
);
if (update) {
Expand Down
24 changes: 15 additions & 9 deletions test/src/aggchain-utils.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {ethers} from "hardhat";
import {ethers, upgrades} from "hardhat";
import {expect} from "chai";
import fs = require("fs");
import path = require("path");
Expand Down Expand Up @@ -41,14 +41,20 @@ describe("Test vectors aggchain common utils", () => {
testVector.aggchainType
);
if (update) {
const AggchainBaseMockFactory = await ethers.getContractFactory("AggchainBase");
const aggchainContract = await AggchainBaseMockFactory.deploy(
"0xA00000000000000000000000000000000000000A",
"0xB00000000000000000000000000000000000000B",
"0xC00000000000000000000000000000000000000C",
"0xD00000000000000000000000000000000000000D",
"0xE00000000000000000000000000000000000000E"
);
const aggchainECDSAFactory = await ethers.getContractFactory("AggchainECDSA");
const aggchainContract = await upgrades.deployProxy(aggchainECDSAFactory, [], {
initializer: false,
constructorArgs: [
"0xA00000000000000000000000000000000000000A",
"0xB00000000000000000000000000000000000000B",
"0xC00000000000000000000000000000000000000C",
"0xD00000000000000000000000000000000000000D",
"0xE00000000000000000000000000000000000000E"
],
unsafeAllow: ["constructor", "state-variable-immutable"],
});
await aggchainContract.waitForDeployment();

finalAggchainSelectorTestVectors[i].output = {};
finalAggchainSelectorTestVectors[i].output.finalAggchainVKeySelector =
await aggchainContract.getFinalAggchainVKeySelectorFromType(
Expand Down
Loading

0 comments on commit 088af5b

Please sign in to comment.