128 Commits

Author SHA1 Message Date
Daniel Sanchez
c763d47339
feat: Implement subnetworks assignations algorithm (#130)
* 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
2025-07-11 09:48:57 +00:00
Giacomo Pasini
89dd2efacb
Fix LIB calculations with short chain (#128)
Fix LIB calculation where the chain is shorter than K
and add a regression test for this case
2025-06-05 12:21:19 +02:00
megonen
30ef110f24
Merge pull request #126 from logos-co/feature/v1.1-da-updates
Update DA encoder/verifier to v1.1
2025-06-04 18:01:06 +03:00
Daniel
cf88dde94e Fix changed calls in full flow 2025-06-04 15:51:11 +02:00
Daniel
71b9c6cc33 Fix test encoder combined polynomial call 2025-06-04 15:46:33 +02:00
Daniel
d18caed116 Fix prepare data 2025-06-04 15:44:15 +02:00
Daniel
6ec7ea135a More DaBlob to DaShare 2025-06-04 15:37:42 +02:00
Daniel
c3172895f4 More wrong imports 2025-06-04 15:26:57 +02:00
Daniel
85afceb5ad More wrong imports 2025-06-04 15:25:31 +02:00
Daniel
7c1b80d337 More wrong imports 2025-06-04 15:22:00 +02:00
Daniel
545ba05f34 fix wrong import on encoder 2025-06-04 15:21:04 +02:00
Daniel
8b800b0800 Add missing DaShare 2025-06-04 15:19:22 +02:00
Daniel
6e026f3a7e Refactor code and tests 2025-06-04 15:14:04 +02:00
mgonen
f735f514e6 Changes were done based on the feedback 2025-06-04 13:58:18 +03:00
Giacomo Pasini
3e495a136d
Add Boostrapping/Online modes (#127)
* 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
2025-06-02 10:49:39 +02:00
megonen
c2d5272408
Update da/verifier.py
Co-authored-by: Daniel Sanchez <sanchez.quiros.daniel@gmail.com>
2025-05-27 09:44:40 +03:00
megonen
2eaff7af0e
Update da/test_encoder.py
Co-authored-by: Daniel Sanchez <sanchez.quiros.daniel@gmail.com>
2025-05-27 09:44:31 +03:00
mgonen
2a37c7f0cc Update DA encoding/verifier to v1.1 2025-05-22 14:19:34 +03:00
mgonen
a4a473f438 Merge remote-tracking branch 'origin/feature/v1.1-da-updates' into feature/v1.1-da-updates
# Conflicts:
#	da/test_encoder.py
2025-05-22 13:42:39 +03:00
mgonen
fdce70a9bb Update DA encoding/verifier to v1.1 2025-05-22 13:41:45 +03:00
megonen
cce427f161
Update da/test_encoder.py
Co-authored-by: Daniel Sanchez <sanchez.quiros.daniel@gmail.com>
2025-05-22 11:07:46 +03:00
mgonen
82e5b4da7c Update DA encoding/verifier to v1.1 2025-05-21 13:17:05 +03:00
mgonen
5cb2f9223c Update DA encoding/verifier to v1.1 2025-05-20 13:45:53 +03:00
Youngjoon Lee
2c5c3860f0
fix(sync): backfill checkpoint chain down to the genesis (#123)
* fix(sync): backfill checkpoint chain proactively

* add comment

* rename fn

* update comment
2025-04-11 09:43:40 +09:00
davidrusu
dcdb419648
Cryptarchia/drop orphan proofs (#121)
* 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
2025-03-21 20:49:04 +04:00
Youngjoon Lee
f4b68f33cd
feat(cryptarchia): add cryptarchia v1 chain synchronization (#119) 2025-03-21 00:30:14 +09:00
Youngjoon Lee
4029eba8b5
build: pin python to 3.12 (not 3.13) due to outdated dependencies (#120) 2025-03-10 22:35:13 +09:00
davidrusu
5c64a0bd11
Cryptarchia: rework specification (#116)
* cryptarchia/ghost: prep for move to weight based fork choice

* cryptarchia/ghost: remove common_prefix_len helper

* cryptarchia/ghost: common_prefix_depth returns depth of both chains

* cryptarchia/ghost: fix chain density calculation

* cryptarchia/ghost: maxvalid_bg uses block ids rather than chains

* cryptarchia/ghost: unimported_orphans returns orphans w.r.t. to tip

* cryptarchia/ghost: remove redundant check

* cryptarchia/ghost: rewrite unimported_orphan w/ common_prefix_depths

* cryptarchia/ghost: validate_header w.r.t. block parent

* cryptachia/ghost: rewrite on_block to remove dependency on Chain

* cryptarchia/ghost: remove Chain abstraction

* cryptarchia/ghost: remove local / fork naming in common_prefix_depth

* cryptarchia/ghost: rewrite common_prefix_depth in terms of iter_chain

* cryptarchia/ghost: impl GHOST fork choice rule

* cryptarchia/ghost: integrate GHOST with maxvalid fork choice

* cryptarchia: remove unused imports

* cryptarchia: cleanup

* cryptarchia: cleanup

* cryptarchia: remove height from ledger state

* cryptachia/ghost: update fork choice rule comments

* cryptarchia: switch back to longest chain

* cryptarchia: update tests

* cryptarchia: remove debug log
2025-02-25 16:54:54 +04:00
Daniel Sanchez
3f3427ee9f
NomosDA spec v1 updates (#117)
* 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>
2025-01-29 10:42:53 +00:00
Daniel Sanchez
5434fcb315
Move eth-specs submodule to da (#111) 2024-07-22 07:44:36 +00:00
Alvatar
c9769a2b8b
Deprecate Carnot spec (#110)
Co-authored-by: Álvaro Castro-Castilla <alvatar@protonmail.com>
2024-07-19 17:12:43 +09:00
Alvatar
8917b976e6
Merge pull request #109 from logos-co/deprecate-old-mixnet
Mixnet: Deprecate old spec
2024-07-19 11:04:41 +03:00
Youngjoon Lee
0e834e0d05
revert import path changes 2024-07-19 16:26:12 +09:00
Youngjoon Lee
1b4a8609ba
use relative imports 2024-07-19 15:23:56 +09:00
Youngjoon Lee
bf41a367d0
update import paths and add __init__.py to make it testable 2024-07-19 13:37:06 +09:00
Youngjoon Lee
3bf199bd9f
Mixnet: Deprecate old spec 2024-07-19 13:13:37 +09:00
Alvatar
0f7e26d8fe
Merge pull request #108 from logos-co/drusu/move-cl-goas-to-nomos-pocs
Move cl/ and goas/ to nomos-pocs
2024-07-18 16:32:55 +03:00
David Rusu
ef07f2c75f move cl, goas to nomos-pocs 2024-07-18 14:25:53 +04:00
davidrusu
4d8a3dfb9c
CL: expand scope of nullifier proof to an "input proof" (#106)
* cl: nullifier proof -> input proof; add death_cm to input proof

* cl: add death_cm to cl::Input commitment

* cl/ledger: prove_input_nullifier -> prove_input
2024-07-16 18:34:26 +04:00
davidrusu
69c50316d6
cl/integrate risc0 (#103)
* 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.
2024-07-15 16:51:21 +04:00
davidrusu
3d2459052c
Cl: nullifier proof statement (#102)
* cl: nullifier proof

* cl: cli action to select proof type
2024-07-11 12:45:09 +04:00
davidrusu
2c7c483707
CL spec (#92)
* 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>
2024-07-09 17:10:32 +04:00
Daniel Sanchez
84130ba58a
Da: fk20 fixes (#96)
* Simplify ranges

* Fix and beautify code
2024-06-26 17:27:29 +02:00
Daniel Sanchez
422359acd7
Da: fk20 proof generation (#95)
* 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
2024-06-17 09:20:11 +02:00
gusto
c9b2c7c5c5
DA domain specific tag in bls (#94) 2024-05-27 12:38:18 +03:00
Daniel Sanchez
9390d481ba
Use blake2b for 31 bytes digests (#91) 2024-04-15 12:12:50 +02:00
Daniel Sanchez
8bb5160ff2
Fix rs encoding to fit with missing points (#90) 2024-04-09 07:55:17 +02:00
Daniel Sanchez
f29869c029
Remove indexing from dablob (#89)
Verifier resolves by syncing with state public keys
2024-03-25 11:30:44 +01:00
davidrusu
d2f6ad579a
Stake Relativization Specification + Fixes (#86)
* 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
2024-03-23 05:50:00 +04:00
gusto
53b8be7a05
DA Api Tests (#83)
* 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>
2024-03-22 13:01:13 +02:00