Compatible versions
- Node: v0.2.0
Changelog
This is an important version as it supports the next coming version Upgrade ForkID5 and also known as Dragon_Fruit. This version offers
- Protect grpc input from invalid values
- Added several generalizations to the prover code:
-- When calling getCommittedPols, the number of committed pols is sent by getting that info from starkInfo.
-- CompressorCommitPolsStarks is now agnostic to the number of committed polynomials, which is specified by parameter.
-- ConstantPolsStarks is now agnostic to the number of constant polynomials.
-- ExecFile is now agnostic to the number of committed polynomials.
-- Proof2zkinStark, which is used to generate the zkin of the recursive2, is now generalized so the number of steps isn't fixed but sent by parameter - Supporting Goldilocks avx512
- Created LICENSE file
- Fixed README file
- Added new rapidSnark and ffiasm files for FFlonk optimizations
- Renamed StateDB to HashDB
- Only last state is now written to Database, deleting unrequired hashes/nodes before inserting them to Database.
- Created SMT::hashSaveZero() and SMT::hashSaveOne()
- Created Database::saveStateRoot() and call it from SMT
- Removed update from Database and HashDB
- Fixed: add multiWrite.Lock() to Database:dbSenderThread()
- Fixed program insertion in Database::sendData() query
- Call ctx.pHashDB->semiFlush() from FullTracer::onFinishTx(), in all forks
- Cache last EC points addition result
- New executor.proto: external request ID, effective gas price
- Fixed STOP missing opcode
- When exitProces() notify the rest of threads, not to start new activities
- Report evaluation counter in main SM executor logError method
- Upgrading number of threads for calcwitness
- Removed batches when calculating linear hashes since there is no intention of moving to GPU in a short period of time.
- Integrate E2E test into Github Actions (GHA) for continuous integration
- Created ForkID5 with new ROM
- Fixed Aggregator service test code to get final proof
- Read all rom.json constants
- Encoded FullTracer trace to save space (from release)
- Fixed OOC errors when no_counters=1 has been requested (from release)
- Deleted ctx.outLogs, which were unused
- Fixed DatabaseCache memory leak
- Implemented Unit Testing (UT)
- Replaced Tonelli-Shanks square root implementation by a power, given the prime mod 4 characteristics.
- Fixed depth in FullTracer ForkID5 (from release)
- Fixed FullTracer DELEGATECALL format not to include leading zeros
- Completed Optimizations on ECRecover: New implementation using Jacobian coordinates has been integrated in the different versions of Executors available. For the ROM-based executor, as intermediate results are needed, those are stored into an intermediate buffer and once the calculation is finished are converted from projective to affine coordinates in parallel.
- Added LOG_SMT_KEY_DETAILS to Main Executor
- Fixed FullTracer logs index to be sequential
- Updated testvectors/performance with new files including effective gas price byte
- Checked that pEntry→ifa_addr is not null in getIPAddress()
- Changed default value of config.dbReadRetryCounter to 10
- Logging executor input in a trace
- Fixed database connection management in exception catch
- Call multiWrite.acceptIntray() from Database::senderThread() to rescue the hashes from nodesIntray/programIntray
- Disabled Input.bUpdateMerkleTree by default, so that Prover.genBatchProof() does not write data in Database
- Integrated HashDBTest into UnitTest
- Fixed Database to search not only in cache, but also in multiWrite data
- Fixed DatabaseCache to clear dataSize when reset
- Updated state root instead of inserting; create it during initialization if database is empty
- New invalid RLP ROM error support
- Fixed ECRecover for case posUsed=-1 in native main executor code
Prover v2.0.0 config changes
-
Renamed Elements
-- bool runStateDBServer has been renamed to runHashDBServer
-- bool runStateDBTest has been renamed to runHashDBTest
-- uint16_t stateDBServerPort has been renamed to hashDBServerPort
-- string stateDBURL has been renamed to hashDBURL
-- uint64_t maxStateDBThreads has been renamed to maxHashDBThreads -
New elements that normally should not be used
-- bool runECRecoverTest;
-- bool runDatabaseCacheTest;
-- bool runUnitTest;
-- bool useMainExecC;
-- string dbCacheSynchURL;
-- uint64_t aggregatorClientMaxStreams; // Max number of streams, used to limit E2E test execution; if 0 then there is no limit -
Deleted elements, no longer supported
-
bool dbFlushInParallel;
-
New elements
-- bool dbMultiWriteSinglePosition; → it should be set to true
-- bool ECRecoverPrecalc; → it should be set to true
-- uint64_t ECRecoverPrecalcNThreads; → it should be set to 16