Skip to content

Commit

Permalink
Merge pull request #72 from 0xPolygonHermez/feature/batch-header
Browse files Browse the repository at this point in the history
globalExitRoot --> timestamp
  • Loading branch information
krlosMata authored Nov 17, 2022
2 parents 3c9f95d + 5f0af84 commit 8f92a1a
Show file tree
Hide file tree
Showing 11 changed files with 114 additions and 109 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@0xpolygonhermez/zkevm-commonjs",
"description": "Javascript library implementing common utilities for zkevm",
"version": "0.4.0.1",
"version": "0.5.0.0",
"main": "index.js",
"scripts": {
"setup": "npm i",
Expand Down Expand Up @@ -34,7 +34,7 @@
},
"homepage": "https://github.com/0xPolygonHermez/zkevm-commonjs#readme",
"devDependencies": {
"@0xpolygonhermez/contracts-zkevm": "github:0xPolygonHermez/zkevm-contracts#feature/addAribitraryData",
"@0xpolygonhermez/contracts-zkevm": "github:0xPolygonHermez/zkevm-contracts#develop",
"@ethersproject/abi": "^5.6.4",
"@nomiclabs/hardhat-ethers": "^2.1.0",
"@nomiclabs/hardhat-waffle": "^2.0.2",
Expand All @@ -48,8 +48,8 @@
},
"dependencies": {
"@ethereumjs/block": "^3.6.2",
"@polygon-hermez/common": "2.6.3",
"@ethereumjs/tx": "^3.4.0",
"@polygon-hermez/common": "2.6.3",
"@polygon-hermez/vm": "5.7.27",
"ethereumjs-util": "^7.1.4",
"ethers": "^5.5.4",
Expand Down
9 changes: 7 additions & 2 deletions src/processor.js
Original file line number Diff line number Diff line change
Expand Up @@ -184,12 +184,17 @@ module.exports = class Processor {

/**
* Set the global exit root in a specific storage slot of the globalExitRootManagerL2 for both vm and SMT
* Not store global exit root if it is zero
* This will be performed before process the transactions
*/
async _setGlobalExitRoot() {
if (Scalar.eq(smtUtils.h4toScalar(this.globalExitRoot), Scalar.e(0))) {
return;
}

const newStorageEntry = {};
const globalExitRootPos = ethers.utils.solidityKeccak256(['uint256', 'uint256'], [smtUtils.h4toString(this.globalExitRoot), Constants.GLOBAL_EXIT_ROOT_STORAGE_POS]);
newStorageEntry[globalExitRootPos] = this.newNumBatch;
newStorageEntry[globalExitRootPos] = this.timestamp;
this.currentStateRoot = await stateUtils.setContractStorage(
Constants.ADDRESS_GLOBAL_EXIT_ROOT_MANAGER_L2,
this.smt,
Expand All @@ -201,7 +206,7 @@ module.exports = class Processor {
await this.vm.stateManager.putContractStorage(
addressInstance,
toBuffer(globalExitRootPos),
toBuffer(this.newNumBatch),
toBuffer(this.timestamp),
);

// store data in internal DB
Expand Down
8 changes: 4 additions & 4 deletions test/block-info.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -317,19 +317,19 @@ describe('Block info tests', function () {
}

// Check global exit root
const batchNumVm = await zkEVMDB.vm.stateManager.getContractStorage(
const timestampVm = await zkEVMDB.vm.stateManager.getContractStorage(
addressInstanceGlobalExitRoot,
globalExitRootPosBuffer,
);
const batchNumSmt = (await stateUtils.getContractStorage(
const timestampSmt = (await stateUtils.getContractStorage(
Constants.ADDRESS_GLOBAL_EXIT_ROOT_MANAGER_L2,
zkEVMDB.smt,
zkEVMDB.stateRoot,
[globalExitRootPos],
))[Scalar.e(globalExitRootPos)];

expect(Scalar.fromString(batchNumVm.toString('hex'), 16)).to.equal(batchNumSmt);
expect(batchNumSmt).to.equal(Scalar.e(batch.newNumBatch));
expect(Scalar.fromString(timestampVm.toString('hex'), 16)).to.equal(timestampSmt);
expect(timestampSmt).to.equal(Scalar.e(batch.timestamp));

// Check through a call in the EVM
if (bridgeDeployed) {
Expand Down
48 changes: 24 additions & 24 deletions test/helpers/test-vectors/block-info/block-info-batches.json
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@
"rawTx": "0xf88a06843b9aca00830186a0941275fbb540c8efc58b812ba83b0d0b8b9917ae9880a4e9413d3800000000000000000000000000000000000000000000000000000000000000008207f4a098f56115cad149a409a86e7610863248799a31d80e87d46582d08a3c0933a40aa025455a74fa3ca2ada0bf39dac88a172d032583bfec15061f39184ef9f7012677"
}
],
"expectedNewRoot": "0xd88af05a70520c656807c1c5ff61e74f9e04d6dcf98a3a6eaddb82cf96a27a6f",
"expectedNewRoot": "0x501d72cea44b1406ab46940f722d3c1293b0f2428f46e1e82a5831398165520d",
"expectedNewLeafs": {
"0xae4bb80be56b819606589de61d5ec3b522eeb032": {
"balance": "0",
Expand Down Expand Up @@ -192,13 +192,13 @@
"nonce": "0",
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x07",
"0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "0x47282e4f91ff3f7bcc8a39735d20b86d01488eb8726b2218572088f9c7c195bf",
"0x8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a": "0x53dfc8e68e52b6f9dddfe0b7af8dbbe1d252316114c9ca38c4c4d1504ea9c020",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0xf1d5577c752f44551bb85797348646e75d0b8c1039978cdf91107b9c72ab07f0",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0x3835218e81c6e3bd9f5afc7631e287268675602cd6ee272fceff360d0c150cf0",
"0xdc686ec4a0ff239c70e7c7c36e8f853eced3bc8618f48d2b816da2a74311237e": "0xe5c7a860c01c6c1d2123c015be325f65eda6659904b5d6f723429d311ea4da55",
"0xe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c": "0x1719a7e74faad3cc4be0653c40f7e1a13ac9bd66e01167fdf1530cec966369e2",
"0xedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643": "0xaabc8126bea2271fab9af9b2f5301054099bb0dcce159fa75c5409fd0df3aa38"
"0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "0xf77f751aaeef4ba7bd7118b2b7c2fdac700cefe91a2e41d2aefc08f12e4644d0",
"0x8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a": "0x1b60038e083d5ec82468eb90f6f4868a620ad653651db25b959707ded65bf8a4",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0xc18eb9ea7e6dfc3cf833e81797701ec6fcebe074c766c76c10f3c6290b077742",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0xe184b4858698c58a98011fce9e154529073769c00c90a454ac6b51cbd195a665",
"0xdc686ec4a0ff239c70e7c7c36e8f853eced3bc8618f48d2b816da2a74311237e": "0x8158981ea08e4add7b0b558fa36033ae77fc2557e3635b58251979b3bb4a4d5c",
"0xe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c": "0x3fa550675342debd80beb0209d66c809e6e34a92a5791ee7422356ba312c7afa",
"0xedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643": "0x247cd6b9c3f9b06df7308f68d72b27f7a6ce5c484d4a8a5dd3fbfbc1e575b4df"
}
}
},
Expand Down Expand Up @@ -325,7 +325,7 @@
"rawTx": "0xf88a0d843b9aca00830186a0941275fbb540c8efc58b812ba83b0d0b8b9917ae9880a4e9413d3800000000000000000000000000000000000000000000000000000000000000018207f3a068ad61295298051fac15519066926aad57ed5af83b351e586a0fbe70006c4829a05695cc59543fd10d4af41a8a266aef5efd2d691abc356fc679c66e2545fd9ef6"
}
],
"expectedNewRoot": "0x06d2f9a844f954c857f7281c0a12163f0919d2def882ecf88d4c0d325be97cef",
"expectedNewRoot": "0x5a62e3d4a89fdae8794ec78ba1fc91db4778bff0286ecb4cee6fbe8f76544ab6",
"expectedNewLeafs": {
"0xae4bb80be56b819606589de61d5ec3b522eeb032": {
"balance": "0",
Expand All @@ -344,7 +344,7 @@
"0x0000000000000000000000000000000000000000000000000000000000000003": "0x0a",
"0x0000000000000000000000000000000000000000000000000000000000000005": "0x01c9c380",
"0x0000000000000000000000000000000000000000000000000000000000000006": "0x03e8",
"0x0000000000000000000000000000000000000000000000000000000000000001": "0xf1d5577c752f44551bb85797348646e75d0b8c1039978cdf91107b9c72ab07f0"
"0x0000000000000000000000000000000000000000000000000000000000000001": "0xc18eb9ea7e6dfc3cf833e81797701ec6fcebe074c766c76c10f3c6290b077742"
}
},
"0x617b3a3528f9cdd6630fd3301b9c8911f7bf063d": {
Expand All @@ -356,20 +356,20 @@
"nonce": "0",
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x0e",
"0x4db623e5c4870b62d3fc9b4e8f893a1a77627d75ab45d9ff7e56ba19564af99b": "0x0ef707d074037c4c7e727750352f7601af73643a648186eb061b5e99977e6bc5",
"0x57aaafa65c4e563d39fff90096a5fa76d42117f53d87ef870784e64d63a8a16b": "0x0b4f179363ed0b512d110b5e5675a0822edcf88ac2803a59da6bcfdc38a6cabf",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0xf1d5577c752f44551bb85797348646e75d0b8c1039978cdf91107b9c72ab07f0",
"0xfc80cd5fe514767bc6e66ec558e68a5429ea70b50fa6caa3b53fc9278e918632": "0x9c5bd5f8820b627b85e88569d39a9a190e8829be1b1ddb23f01f74329277b628",
"0x23bf72df16f8335be9a3eddfb5ef1c739b12847d13a384ec83f578699d38eb89": "0x5245244b80a88fcd94494e544a62f3e61e115a3f4a1511f905b980b81cc6a6d0",
"0x2a32391a76c35a36352b711f9152c0d0a340cd686850c8ef25fbb11c71b89e7b": "0x65252bd75475952605e6676cad142690837b66c28ea575ef8c383c6e858dbe27",
"0x74a5fbcb419ab7dbacbb2c92a4e163730f0da5c72b911deecf4f05a6b327d0a4": "0xedbf18deb6c96ad2e8735b2c9a778a4c6349f9092c89cbf4da090f7ce016cf7e",
"0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "0x47282e4f91ff3f7bcc8a39735d20b86d01488eb8726b2218572088f9c7c195bf",
"0x86b3fa87ee245373978e0d2d334dbde866c9b8b039036b87c5eb2fd89bcb6bab": "0x35700e7b8aeaa2e6275fa8e3ff70a435fd91a415255a9ad05e434234f819e4ef",
"0x8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a": "0x53dfc8e68e52b6f9dddfe0b7af8dbbe1d252316114c9ca38c4c4d1504ea9c020",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0x3835218e81c6e3bd9f5afc7631e287268675602cd6ee272fceff360d0c150cf0",
"0xdc686ec4a0ff239c70e7c7c36e8f853eced3bc8618f48d2b816da2a74311237e": "0xe5c7a860c01c6c1d2123c015be325f65eda6659904b5d6f723429d311ea4da55",
"0xe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c": "0x1719a7e74faad3cc4be0653c40f7e1a13ac9bd66e01167fdf1530cec966369e2",
"0xedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643": "0xaabc8126bea2271fab9af9b2f5301054099bb0dcce159fa75c5409fd0df3aa38"
"0x4db623e5c4870b62d3fc9b4e8f893a1a77627d75ab45d9ff7e56ba19564af99b": "0x68233a704e51770a8bc073b6089ebd51c77585bc2a487c22e67a042d36583469",
"0x57aaafa65c4e563d39fff90096a5fa76d42117f53d87ef870784e64d63a8a16b": "0x51a1d8b135406a44d476ebb9a36cbad1dd8c1ac8b03aa0ab7fbfedac2cc03df4",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0xc18eb9ea7e6dfc3cf833e81797701ec6fcebe074c766c76c10f3c6290b077742",
"0xfc80cd5fe514767bc6e66ec558e68a5429ea70b50fa6caa3b53fc9278e918632": "0x0f7dcf3ccdf59b48a4c4848d3a5e0031648b10be58cf0385e32b90b3a4db9c66",
"0x23bf72df16f8335be9a3eddfb5ef1c739b12847d13a384ec83f578699d38eb89": "0x24a321b1cb8aef1ab5546255b345440c7233add99ccf82e08628e18c613a3ba6",
"0x2a32391a76c35a36352b711f9152c0d0a340cd686850c8ef25fbb11c71b89e7b": "0x80079f96ba5ca87685ef22e1a3eed898546fe8f5c2da057bc70ebf465616eef7",
"0x74a5fbcb419ab7dbacbb2c92a4e163730f0da5c72b911deecf4f05a6b327d0a4": "0x631e222b8765a1e000ec527e0b6eab805fe71a03e774b06b96596fdea2ad9901",
"0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "0xf77f751aaeef4ba7bd7118b2b7c2fdac700cefe91a2e41d2aefc08f12e4644d0",
"0x86b3fa87ee245373978e0d2d334dbde866c9b8b039036b87c5eb2fd89bcb6bab": "0xbdd44421182ea92d4d53cab97872dc1d11596bd3f03694b9986fff4493e4fe11",
"0x8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a": "0x1b60038e083d5ec82468eb90f6f4868a620ad653651db25b959707ded65bf8a4",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0xe184b4858698c58a98011fce9e154529073769c00c90a454ac6b51cbd195a665",
"0xdc686ec4a0ff239c70e7c7c36e8f853eced3bc8618f48d2b816da2a74311237e": "0x8158981ea08e4add7b0b558fa36033ae77fc2557e3635b58251979b3bb4a4d5c",
"0xe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c": "0x3fa550675342debd80beb0209d66c809e6e34a92a5791ee7422356ba312c7afa",
"0xedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643": "0x247cd6b9c3f9b06df7308f68d72b27f7a6ce5c484d4a8a5dd3fbfbc1e575b4df"
}
},
"0x0000000000000000000000000000000000000000": {
Expand Down
16 changes: 8 additions & 8 deletions test/helpers/test-vectors/block-info/block-info.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,13 +136,13 @@
"rawTx": "0xf86a05843b9aca00830186a0941275fbb540c8efc58b812ba83b0d0b8b9917ae9880843408e4708207f4a0e255f868a61169a2330cb539671e1a66ee846bc06cc888ea8fcd7ae51cdc6294a00c6dec27e6f756dd84923bcebb1f85db125299c0b622eaa8d5722cb3dace239d"
}
],
"expectedNewRoot": "0x58a941f582fb380452692bc3899ca4c5369cf0ba526184b0dd16153fee8966f4",
"expectedNewRoot": "0x3c0e9fa45b407ee72bde35b1b36d6ba99b10d6d657075683e7a7259b18838ec7",
"expectedNewLeafs": {
"0xae4bb80be56b819606589de61d5ec3b522eeb032": {
"balance": "0",
"nonce": "0",
"storage": {
"0x53d3f126103a7f7d6245751d2392e0245bf71479d10a3c27a5b501ace6dde1b7": "0x01"
"0x53d3f126103a7f7d6245751d2392e0245bf71479d10a3c27a5b501ace6dde1b7": "0x73e6af6f"
},
"hashBytecode": "0x0000000000000000000000000000000000000000000000000000000000000000",
"bytecodeLength": 0
Expand Down Expand Up @@ -186,12 +186,12 @@
"nonce": "0",
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x06",
"0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "0x47282e4f91ff3f7bcc8a39735d20b86d01488eb8726b2218572088f9c7c195bf",
"0x8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a": "0x53dfc8e68e52b6f9dddfe0b7af8dbbe1d252316114c9ca38c4c4d1504ea9c020",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0xf1d5577c752f44551bb85797348646e75d0b8c1039978cdf91107b9c72ab07f0",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0x3835218e81c6e3bd9f5afc7631e287268675602cd6ee272fceff360d0c150cf0",
"0xe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c": "0x1719a7e74faad3cc4be0653c40f7e1a13ac9bd66e01167fdf1530cec966369e2",
"0xedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643": "0xaabc8126bea2271fab9af9b2f5301054099bb0dcce159fa75c5409fd0df3aa38"
"0x7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b": "0xf77f751aaeef4ba7bd7118b2b7c2fdac700cefe91a2e41d2aefc08f12e4644d0",
"0x8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a": "0x1b60038e083d5ec82468eb90f6f4868a620ad653651db25b959707ded65bf8a4",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0xc18eb9ea7e6dfc3cf833e81797701ec6fcebe074c766c76c10f3c6290b077742",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0xe184b4858698c58a98011fce9e154529073769c00c90a454ac6b51cbd195a665",
"0xe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c": "0x3fa550675342debd80beb0209d66c809e6e34a92a5791ee7422356ba312c7afa",
"0xedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643": "0x247cd6b9c3f9b06df7308f68d72b27f7a6ce5c484d4a8a5dd3fbfbc1e575b4df"
},
"hashBytecode": "0x0000000000000000000000000000000000000000000000000000000000000000",
"bytecodeLength": 0
Expand Down
8 changes: 4 additions & 4 deletions test/helpers/test-vectors/end-to-end/state-transition.json
Original file line number Diff line number Diff line change
Expand Up @@ -173,13 +173,13 @@
"rawTx": "0xf9012f0480831e8480949d98deabc42dd696deb9e40b4f1cab7ddbf55988880de0b6b3a7640000b8c40871e97100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c949254d682d8c9ad5682521675b8f43b102aec40000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000008207f4a0f212cb649f835d4f9c788d3a6733911b8aa02c6b63751f3b931fb062bd1942e4a052e73d8704862f4eb55646e7440dcf65f6e7ca424e38340ed8bcf24597c6865d"
}
],
"expectedNewRoot": "0x4e1b8957858dd0b62473b1964a3fdd1efa972832c13acde171b771b5473be008",
"expectedNewRoot": "0xe6df887aa885bec60e0f87b88b792ffa22702f18a725f43a9427d727601b4113",
"expectedNewLeafs": {
"0xae4bb80be56b819606589de61d5ec3b522eeb032": {
"balance": "0",
"nonce": "1",
"storage": {
"0xb7b9bfbed410c773a6625940b8d940fbc10059beab3c33131a2bd6f11a2b106c": "0x01",
"0xb7b9bfbed410c773a6625940b8d940fbc10059beab3c33131a2bd6f11a2b106c": "0x73e6af6f",
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988",
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x97c7c68e5f6062b69b69b7395dd8ca484a2266fb86d782bc0f094eb1b73f17ba"
},
Expand Down Expand Up @@ -274,8 +274,8 @@
"nonce": "0",
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x02",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0xe25751d467f409bc62bc9a63ebfc69dfc67cc441e5c003a2d7f684fdb446c761",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0xd9054846594d062cd439dd84fd0ca70439a67466e727031af1f8b01021346c9e"
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f": "0x8c2127702da72a56961189c5f8b1097116d1a963c05fb98719394dda1ead2cf0",
"0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f": "0x4e2090a3d95b2235a2e549d7439f3c6d216507982fa641d0b5ba8d5e1e81bec0"
},
"hashBytecode": "0x0000000000000000000000000000000000000000000000000000000000000000",
"bytecodeLength": 0
Expand Down
Loading

0 comments on commit 8f92a1a

Please sign in to comment.