* Add Boostrapping/Online modes
Add Boostrapping and Online modes to cryptarchia, including
relevant tests. The Boostrap mode uses the Genesis fc rule, while
Online uses Praos. Swtitching between the two rules is left to
the implementation and is specified in the public Notion as linked
in the comment
* Add explicit LIB
* prune forks
* cryptarchia: introduce Hash class
* cryptarchia: Coin renamed to Note
* cryptarchia: simplify mock leader proof
* cryptarchia: remove orphan proofs from block headers
* cryptarchia: maintain a single commitment set in ledger state
* cryptarchia: drop note evolution
* cryptarchia: drop MOCK_LEADER_VRF
* cryptarchia fix nonce contribution derivation
* cryptarchia: mk_chain only returns list now
* fixup
* cryptarchia: shorten test cases using mk_chain
* Modify and rename hash_commitment method. Now we just hash the column commitment itself.
* Fix calls
* Remove certificate from verifier
* Update verifier
* Fix tests
* Fix verifier imports
* Fix more imports
* Fix dispersal
* Fix more imports
* Fix missing parameter in dispersal
* Fix tests
* Full flow renaming
* Disperse encoded data in full flow test
* Make da verification indempotent (#118)
---------
Co-authored-by: Gusto <bacvinka@gmail.com>
Co-authored-by: gusto <bacv@users.noreply.github.com>
* cl: restructure cl into a workspace and integrate nullifier proof
* cl: get cl tests building again
* cl: cleanup commented out code
* cl: comment out the failing ptx tests for now.
* feat(cl/noir): provide an ergonomic Noir api for use within Python.
* Add a python wrapper over the bigger constraint
* Add the Bigger wrapper
* cl/noir: document the NargoConstraint wrapper api
* rewrite Bigger constraint as a dataclass
* WIP: Cl/executable spec (#93)
* wip: executable spec
* WIP: test_1_to_1_transfer
* hack: Vacous hash function
* crypto: make sure prf returns field elements, fix ECC math in pedcom
* hack(crypto): mock up a hash_to_curve implementation
* feat(cl/1to1_xfr): fungibility domain uses hash_to_curve
* cl: add type checking to InnerNote
* cl/ptx: get balance commitments working
* cl/noir: mv noir_constraint wrapper into cl/constraints/...
* cl/ptx-note-proofs: start data modelling input and outputs
* cl/ptx: 1-to-1 test is passing, but still, not quite finished
* cl: remove tx_output from 1-to-1 transfer
* cl: remove unused classes
* cl: testing the balance commitments
* wip: cl
* cl: split main.rs into crypto.rs and note.rs
* cl: split balance test
* cl: add nullifier module
* cl: partial_tx; input; output
* cl: output proof tests
* cl: partial transactions can now be built and verified
* drop python cl spec
* cl: test partial transaction balance commitment
* cl: reverse partial tx balance (inputs are neg, outputs are pos)
* cl: bundle of ptx
* cl: verify bundle isn't balanced with just one unbalanced partial tx
* cl: swap out ExtendedPoint for SubgroupPoint
* cl: integrate groth16 death constraint validation
* add risc0 zone
* refactor risc0 zone
* fix zone PoC
* Add separate bin for stark2snark conv
* cl: rename Note to NoteWitness
* cl: merkle proofs
* cl: merkle tree helper to pad elements
* cl: ptx root implemented via merkle roots over inputs and outputs
* cl: move from Commitment::from_witness to Witness::commit()
* cl: tests passing again
* cl: turn data model into library
* cl: partial tx can compute paths to inputs / outputs
* cl: begin integrating zone into cl data modal
* cl: integrate simple zone into CL data model
* cl: add missing cl patches
* cl: swap jubjub for accel k256
* cl: pre-compute balance unit point outside stark
* switch balance commitment to linear combination
* cl: pre-compute pederson blinding
* fix risc0 patching
* switch to curve25519-dalek
* cl: drop blake2; print prover time
---------
Co-authored-by: Giacomo Pasini <g.pasini98@gmail.com>
---------
Co-authored-by: Giacomo Pasini <g.pasini98@gmail.com>
* Kickstart fk20
* Implement i/fft from ethspecs
* Expand test to different sizes
* Implement toeplizt
* Finish implementing fk20
* Fix roots of unity generation
* Implement fft for g1 values
* Fix fk20 and tests
* Add len assertion in test
* Fix roots computations
* Fix test
* Fix imports
* Fmt
* Docs and format
* cryptarchia/relative-stake: failing test showing lack of inference
* implement stake-relativization spec
* test total stake inference in empty epoch
* move TestNode to test_common
* fix bug in Follower re-org logic
* improve orphan proof test coverage
* force orphans to already have been in one of the existing branches
* rename initial_inferred_total_stake ==> initial_total_stake
* add simple orphan import test
* Follower.unimported_orphans: ensure no orphans from same branch
* remove unnecessary LedgerState.slot
* cryptarchia: doc fixes
* factor out total stake inference
* docs for total stake inference
* rename total_stake to total_active_stake
* replace prints in cryptarchia with logging.logger
* Tests for da api full flow
* Fix test issues
* Da api ext tests (#85)
* Index store links blob to cert_id
* Tests for multiple indexes pointing to the same blob
* Test multiple indexes to the same blob in the full flow
* Update bytes_per_chunk to 31 bytes
---------
Co-authored-by: Daniel Sanchez Quiros <sanchez.quiros.daniel@gmail.com>
* Initial da_api spec structure
* Node definition for testing different actors in da api
* Connect zone, producer and da nodes in tests
* Remove da mock module
* Add da api module with flow tests
* Comments for read and write methods in BlobStore
* Fix nitpicks (formatting and typing)
---------
Co-authored-by: Daniel Sanchez Quiros <sanchez.quiros.daniel@gmail.com>
* Implement generator polynomial and rs encoding
* Implement encode/decode+test using fft. Non-working
* Use lagrange for interpolation
* Remove fft, use evaluations instead
* Move and rename kzg and rs test modules
* Update docs
* Added columns property to chunks matrix
Added test for columns
* Added chunkify and test
* Added compute row commitments
Added row commitments size test
* Fix poly from evaluations method
* Implement encode rows and test
* Update encode row test
* Implement compute row proofs (not working on extended data)
* Use same polynomials for commitment and proof creation after extend
* Fix polynomial from/to evaluations
* Use chunks for verification
* Refactor interpolate
* Implement chunks matrix transposed method
* Added compute column kzg commitments
* Use square size data for encoder tests
* Add column type to columns method
* Added compute columns aggregated commitment
Added aggregated commitment test
Fixed and expanded encode test
* Use sha3 for hashing
* Make encoder hashing method public
* Fill up verifier implementation
* Added verify column test
* Implement verier verify test
Fixed small issues
* Implement verier verify test
Extend verify test for all columns
* feat(cryptarchia/epoch-schedule): switch to 334 schedule (from 433)
* factor out common test config building code
* feat(cryptarchia): test_leader uses common test config object
* cryptarchia: update test_ledger_state_is_properly_updated_on_reorg
* cryptarchia: update test_epoch_transition test
* move to .tip() in tests instead of tip_id()
* cryptarchia: wrap long comments
* cryptarchia: move mk_block to test_common
* cryptarchia: move mk_genesis_state to test_common
* cryptarchia: refactor fork test to use mk_chain
* cryptarchia: fork choice rules tests use mk_chain helper
* cryptarchia: rename fork choice test suite to TestForkChoice
* cryptarchia: config.s is always 3k/f or 3*base_period_length
* cryptarchia: hardcode epoch schedule in specification
* un-hard code epoch sched. params + provide a v0.0.1 spec for params
* Implement generator polynomial and rs encoding
* Implement encode/decode+test using fft. Non-working
* Use lagrange for interpolation
* Remove fft, use evaluations instead
* Move and rename kzg and rs test modules
* Update docs
* Added columns property to chunks matrix
Added test for columns
* Added chunkify and test
* Added compute row commitments
Added row commitments size test
* Fix poly from evaluations method
* Implement encode rows and test
* Update encode row test
* Implement compute row proofs (not working on extended data)
* Use same polynomials for commitment and proof creation after extend
* Fix polynomial from/to evaluations
* Use chunks for verification
* Refactor interpolate
* Implement chunks matrix transposed method
* Added compute column kzg commitments
* Use square size data for encoder tests
* Add column type to columns method
* Added compute columns aggregated commitment
Added aggregated commitment test
Fixed and expanded encode test
* Use sha3 for hashing
* Implement generator polynomial and rs encoding
* Implement encode/decode+test using fft. Non-working
* Use lagrange for interpolation
* Remove fft, use evaluations instead
* Move and rename kzg and rs test modules
* Update docs
* Added polynomial class
* Added common types and constants
* Implement commitment and proof generation
* Added basic tests
* Use custom polynomial
* use evaluation form for building polynomial
* Use fast division on polynomials
* Fix poly operations
* Add non working verification
* Make verification work
* Expand verify test
* Cleanup imports
* Update deps
* Update common.py
added verify setup mechanism
* Added trusted setup, updated common to use gp generator and added setup verification test
* Added comments
---------
Co-authored-by: megonen <146561843+megonen@users.noreply.github.com>
* Added da encoder pipeline draft
* Remove unnecessary method
* Added verifier module and blob type
* Fill verifier skeleton
* Add comments on implementation, remove unnecessary intermediary method
* Added dispersal skeleton
* Added test modules for dispersal and verifier
* Added test modules for encoder, implemented basic test
* Added missing test cases
* Added missing calls to encode method
* Use single megabyte test in encoder
* Added basic testcases for dispersal
* Added basic testcases for verifier
* Remove duplicated column proofs from encoding schema
* Remove parameters from test functions in encoder
* Extract common types to common module
* Make test pass
* Remove node id dep from mixnet and fix columns access
* standardize endianness to "big"
* slot.encode()
* include coin nonce in leader election VRF
---------
Co-authored-by: David Rusu <davidrusu@Davids-MacBook-Pro.local>