* Implement subnetworks assignations algorithm with tests
* Remove main block
* Make shrinking work
* Fix tests, add random increasing decreasing test
* Adapt docs
* Reorg functions
* Cleanup
* Typos
* Add randomness to balance subnetworks
* Fit tests and adapt documentation
* Define shuffling
* Naming fixed
* Raise error on too small network
* 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>