585 Commits

Author SHA1 Message Date
Dmitriy Ryajov
a726075455
remove extraneous file 2024-02-19 13:33:35 -06:00
Dmitriy Ryajov
afe97514d4
update tests 2024-02-19 13:33:35 -06:00
Dmitriy Ryajov
5ec9269c05
moving circom params under prover command 2024-02-19 13:33:35 -06:00
Dmitriy Ryajov
ee36414046
Update deps (#67)
* update nim-presto

* update asynctest to latest

* upgrading deps
2024-02-19 13:33:35 -06:00
Mark Spanbroek
dccb487d70
Initial commit 2024-02-19 13:33:34 -06:00
Mark Spanbroek
6b301bddb6
Fix: simulateProofFailures option is not for validator 2024-02-19 13:33:34 -06:00
Eric
53f6eae9f6
format challenges in logs 2024-02-19 13:33:34 -06:00
Dmitriy Ryajov
e211b66305
fix nodes and tolerance to match expected params 2024-02-19 13:33:24 -06:00
Dmitriy Ryajov
78b7dc93dd
adding usefull traces 2024-02-19 13:33:24 -06:00
Eric
24affef5e6
Update cli integration tests 2024-02-19 13:33:08 -06:00
Dmitriy Ryajov
bb5c9d8bc0
misc 2024-02-19 13:33:08 -06:00
Dmitriy Ryajov
b0f54ab9ad
use nimOldCaseObjects switch for nim confutils compat 2024-02-19 13:33:07 -06:00
Dmitriy Ryajov
20b156d0ff
persistence is a command now 2024-02-19 13:33:07 -06:00
Dmitriy Ryajov
5b58a137b1
don't use ufcs 2024-02-19 13:33:07 -06:00
Dmitriy Ryajov
83c3aa07d2
use a real verifying contract address 2024-02-19 13:33:07 -06:00
Dmitriy Ryajov
9250b44afd
adding new required cli changes 2024-02-19 13:32:42 -06:00
Dmitriy Ryajov
1f7861b39a
misc renames 2024-02-19 13:32:40 -06:00
Dmitriy Ryajov
1b2ac806b1
return correct proof 2024-02-19 13:32:11 -06:00
Dmitriy Ryajov
f6e7f12c1a
merge rework-cli into node-wire-prover 2024-02-19 13:31:05 -06:00
Dmitriy Ryajov
96f7a99661
stricter case object checks 2024-02-19 13:31:05 -06:00
Dmitriy Ryajov
4deeed64ef
add circom params (temprorary) 2024-02-19 13:31:05 -06:00
Dmitriy Ryajov
e271875f6a
wire prover into node 2024-02-19 13:31:03 -06:00
Dmitriy Ryajov
6cbadc6079
check circom files extension 2024-02-19 13:29:35 -06:00
Dmitriy Ryajov
2e0f087389
rework cli to accept circuit params 2024-02-19 13:29:32 -06:00
Dmitriy Ryajov
9e13d2251a
Prover works with zkey (#711)
* rework backend to instantiate key at initialization

* add groth16 convertes for solidity

* prover taks num samples on construction

* add zkey file

* rework helpers

* rename types

* update tests

* reworked test helpers

* rename types

* rework test

* test all slots artifacts

* bump to latest version
2024-02-19 18:58:39 +00:00
Slava
6b86601597
ci: update actions to the latest major versions (#712)
* ci: update actions to the latest major versions

* ci: add OS to the integration tests logs name

* ci: add CPU and Nim version to the integration tests logs name

* ci: upload integrations tests logs only when they run
2024-02-19 18:55:49 +00:00
Dmitriy Ryajov
3e884430c1
Node use correct stores (#710)
* don't pass erasure

* use correct stores and construct erasure inside the node

* fix tests to match new constructor

* remove prover argument

* review commets

* revert failing on no-prover for now

* small cleanup

* comment out invalid proofs broken test
2024-02-19 10:12:10 -08:00
Eric
d70ab59004
refactor: multinode integration test refactor (#662)
* refactor multi node test suite

Refactor the multinode test suite into the marketplace test suite.

- Arbitrary number of nodes can be started with each test: clients, providers, validators
- Hardhat can also be started locally with each test, usually for the purpose of saving and inspecting its log file.
- Log files for all nodes can be persisted on disk, with configuration at the test-level
- Log files, if persisted (as specified in the test), will be persisted to a CI artifact
- Node config is specified at the test-level instead of the suite-level
- Node/Hardhat process starting/stopping is now async, and runs much faster
- Per-node config includes:
  - simulating proof failures
  - logging to file
  - log level
  - log topics
  - storage quota
  - debug (print logs to stdout)
- Tests find next available ports when starting nodes, as closing ports on Windows can lag
- Hardhat is no longer required to be running prior to starting the integration tests (as long as Hardhat is configured to run in the tests).
  - If Hardhat is already running, a snapshot will be taken and reverted before and after each test, respectively.
  - If Hardhat is not already running and configured to run at the test-level, a Hardhat process will be spawned and torn down before and after each test, respectively.

* additional logging for debug purposes

* address PR feedback

- fix spelling
- revert change from catching ProviderError to SignerError -- this should be handled more consistently in the Market abstraction, and will be handled in another PR.
- remove method label from raiseAssert
- remove unused import

* Use API instead of command exec to test for free port

Use chronos `createStreamServer` API to test for free port by binding localhost address and port. Use `ServerFlags.ReuseAddr` to enable reuse of same IP/Port on multiple test runs.

* clean up

* remove upraises annotations from tests

* Update tests to work with updated erasure coding slot sizes

* update dataset size, nodes, tolerance to match valid ec params

Integration tests now have valid dataset sizes (blocks), tolerances, and number of nodes, to work with valid ec params. These values are validated when requested storage.

Print the rest api failure message (via doAssert) when a rest api call fails (eg the rest api may validate some ec params).

All integration tests pass when the async `clock.now` changes are reverted.

* dont use async clock for now

* fix workflow

* move integration logs uplod to reusable

---------

Co-authored-by: Dmitriy Ryajov <dryajov@gmail.com>
2024-02-19 04:55:39 +00:00
Dmitriy Ryajov
0497114e44
Use correct blocks count in builder (#709) 2024-02-19 02:19:59 +00:00
Dmitriy Ryajov
3fce267352
Block and manifest as objects (#708)
* make block and manifest objects

* use unsafeAddr since block is an object type now

* make object var
2024-02-19 02:10:16 +00:00
Eric
61ec4275c8
Revert "remove call to waitFor from clock.now and make it async (#691)" (#707)
This reverts commit 591be9446a5cee1ce559c87e496fa4d7dab92924.
2024-02-16 22:12:16 +00:00
Slava
79af5c0e64
Fix Docker entrypoint NAT helper variables (#706)
Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com>
2024-02-15 13:57:50 +00:00
Dmitriy Ryajov
6fab252bf1
safer backend release (#701) 2024-02-10 23:17:11 +00:00
Slava
64e6a602fd
Install Rust during Docker builds (#703)
* Install Rust during Docker builds

Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com>

* Stop CI matrix on error

---------

Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com>
2024-02-10 17:48:40 +00:00
Dmitriy Ryajov
e23159b065
wire in circom backend (#698)
* wire in circom backend

* should contain leafs

* adding circom compad and circuits deps

* update windows build

* fix windows build

* improve test names

* move proving defaults to codextypes

* remove unnedded inmports and move defaults to codextypes

* capture error code on backend failure
2024-02-09 21:40:30 +00:00
Dmitriy Ryajov
825766eea0
Rework builder & sampler (#697)
* add proof initializer for poseidon2 and `$`

* fix padding and block selection

* fix sample selection and input construction

* fix sample selection & more descriptive names

* add concrete types for sampler & builder

* add missing digest calls

* use concrete types

* add sample test fixtures

* use concrete types and don't fetch dummy blocks
2024-02-08 02:27:11 +00:00
Dmitriy Ryajov
afec86b3cf
cleanup manifest and wire in strategy (#696) 2024-02-07 20:54:57 +00:00
Slava
1e957da109
CI update (#695)
* fix: update codecov action

* fix: remove nim v2 from Nim-matrix
2024-02-07 19:47:40 +00:00
Dmitriy Ryajov
2fc538337b
rework indexing strategy to use an enum (#694) 2024-02-07 11:13:27 -08:00
markspanbroek
2cf892c467
Smart contracts update: Groth16Proof instead of bytes (#683)
* Smart contracts update: Groth16Proof instead of bytes

* Use dummy verifier for now, until we can create ZK proofs

* Fix tests: submit proof only when slot is filled

* Submit dummy proofs for now

* More detailed log when proof submission failed

* Use dummy verifier for integration tests

For now at least

* Fix mistake in blanket renaming to ethProvider

* Update to latest codex-contracts-eth

* feat: zkey-hash from chain

* Fix zkeyHash

---------

Co-authored-by: Adam Uhlíř <adam@uhlir.dev>
2024-02-07 07:50:35 +01:00
Slava
403b9baf9f
Add Nim-matrix workflow to run on merge queue (#693)
* Add Nim-matrix workflow to run on merge queue

* Use reusable workflows for CI and Nim-matrix
2024-02-06 12:56:27 +02:00
Giuliano Mega
591be9446a
remove call to waitFor from clock.now and make it async (#691) 2024-02-05 08:36:28 -03:00
Slava
ca0660b07e
Use default short commit length for Codex revision (#690) 2024-01-30 19:58:55 +02:00
markspanbroek
fd3c566b25
update asynctest to 0.5.1 (#671)
* update asynctest to 0.5.0

Co-Authored-By: gmega <giuliano.mega@gmail.com>

* update remaining package imports

* add asynctest package wrapper

---------

Co-authored-by: gmega <giuliano.mega@gmail.com>
2024-01-29 17:03:51 -03:00
Slava
95a4484de0
fix: update codex help output (#687) 2024-01-29 19:31:29 +00:00
Slava
ae61c29b3f
ci: fix docker workflow after actions update (#689)
Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com>
2024-01-29 20:12:07 +02:00
Slava
34095461ae
ci: update actions to lates major versions (#688) 2024-01-29 17:21:52 +02:00
Ben Bierens
0b8811c98d
Debug/sampling (#681)
* Extra logging in sampler

* wip: Fixing sampling issue in padded slot cells

* Cleanup

* Restores tests
2024-01-25 15:34:38 -08:00
Eric
de88fd2c53
feat: create logging proxy (#663)
* implement a logging proxy

The logging proxy:
- prevents the need to import chronicles (as well as export except toJson),
- prevents the need to override `writeValue` or use or import nim-json-seralization elsewhere in the codebase, allowing for sole use of utils/json for de/serialization,
- and handles json formatting correctly in chronicles json sinks

* Rename logging -> logutils to avoid ambiguity with common names

* clean up

* add setProperty for JsonRecord, remove nim-json-serialization conflict

* Allow specifying textlines and json format separately

Not specifying a LogFormat will apply the formatting to both textlines and json sinks.

Specifying a LogFormat will apply the formatting to only that sink.

* remove unneeded usages of std/json

We only need to import utils/json instead of std/json

* move serialization from rest/json to utils/json so it can be shared

* fix NoColors ambiguity

Was causing unit tests to fail on Windows.

* Remove nre usage to fix Windows error

Windows was erroring with `could not load: pcre64.dll`. Instead of fixing that error, remove the pcre usage :)

* Add logutils module doc

* Shorten logutils.formatIt for `NBytes`

Both json and textlines formatIt were not needed, and could be combined into one formatIt

* remove debug integration test config

debug output and logformat of json for integration test logs

* Use ## module doc to support docgen

* bump nim-poseidon2 to export fromBytes

Before the changes in this branch, fromBytes was likely being resolved by nim-stew, or other dependency. With the changes in this branch, that dependency was removed and fromBytes could no longer be resolved. By exporting fromBytes from nim-poseidon, the correct resolution is now happening.

* fixes to get compiling after rebasing master

* Add support for Result types being logged using formatIt
2024-01-22 23:35:03 -08:00
Dmitriy Ryajov
72da534856
Wire sampler (#676)
* Setting up testfixture for proof datasampler

* Sets up calculating number of cells in a slot

* Sets up tests for bitwise modulo

* Implements cell index collection

* setting up slot blocks module

* Implements getting treeCID from slot

* implements getting slot blocks by index

* Implements out-of-range check for slot index

* cleanup

* Sets up getting sample from block

* Implements selecting a cell sample from a block

* Implements building a minitree for block cells

* Adds method to get dataset block index from slot block index

* It's running

* splits up indexing

* almost there

* Fixes test. Implementation is now functional

* Refactoring to object-oriented

* Cleanup

* Lining up output type with updated reference code.

* setting up

* Updates expected samples

* Updates proof checking test to match new format

* move builder to own dir

* move sampler to own dir

* fix paths

* various changes to add support for the sampler

* wip sampler implementation

* don't use upraises

* wip sampler integration

* misc

* move tests around

* Various fixes to select correct slot and block index

* removing old tests

* cleanup

* misc

fix tests that work with correct cell indices

* remove unused file

* fixup logging

* add logscope

* truncate entropy to 31 bytes, otherwise it might be > than mod

* forwar getCidAndProof to local store

* misc

* Adds missing test for initial-proving state

* reverting back to correct slot/block indexing

* fix tests for revert

* misc

* misc

---------

Co-authored-by: benbierens <thatbenbierens@gmail.com>
2024-01-17 11:24:34 -08:00