Commit Graph

75 Commits

Author SHA1 Message Date
gusto b1e13f79c5
Initial DA API Spec structure (#72)
* 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>
2024-03-15 12:37:56 +02:00
Daniel Sanchez 0e142c0888
Added verification to certificate (#82)
* Added verification method to certificate

* Update da/common.py

typo short -> sort

Co-authored-by: gusto <bacv@users.noreply.github.com>

* Fix test imports

* Added verification comment

---------

Co-authored-by: gusto <bacv@users.noreply.github.com>
2024-03-15 11:34:43 +01:00
Daniel Sanchez bd964e7b27
Threshold bitfield on certificate (#81)
* Added threshold bitfield to certificate

* Short nodes_ids and public_keys
2024-03-14 12:20:46 +01:00
Daniel Sanchez 8c34f8a39e
Da Dispersal (#80)
* Added common bls types

* Added verifier attestation build

* Implement verification and aggregation in dispersal

* Added certificate building tests

* Added dispersal test
2024-03-13 14:59:27 +01:00
Daniel Sanchez 7ffb7cc7ed
Da verifier protocol (#78)
* 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
2024-03-11 10:01:34 +01:00
davidrusu 2d3f463bb7
cryptarchia: Update epoch stabilization schedule to 334 (from 433) (#79)
* 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
2024-03-09 17:34:08 +04:00
Daniel Sanchez cf899d2384
Da encoding protocol (#76)
* 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
2024-03-08 14:16:14 +01:00
Daniel Sanchez 09c9b7e4ec
Da rs core (#75)
* 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
2024-03-05 16:53:14 +01:00
Daniel Sanchez d15eaa2d98
KZG core functionality (#73)
* 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>
2024-02-27 17:49:27 +01:00
Daniel Sanchez 9a54d90d14
Da specs main structure (#70)
* 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
2024-02-12 15:35:23 +01:00
Daniel Sanchez bcde60a97f
Arkworks dependency utility script (#71)
* Added install script for building in arm64 in osx arkworks bls dep

* Added install script for building in arm64 in osx arkworks bls dep
2024-02-11 23:15:15 +01:00
Giacomo Pasini 495e0c119a
Add orphan proofs validation (#69)
* Add orphan proofs validation

* Update cryptarchia/cryptarchia.py

Co-authored-by: davidrusu <davidrusu.me@gmail.com>

---------

Co-authored-by: davidrusu <davidrusu.me@gmail.com>
2024-02-09 15:12:12 +01:00
Youngjoon Lee 5dd7b2730a
Embed Robustness into `mixnet.py` (#61) 2024-02-08 15:39:50 +09:00
davidrusu cde1e92c9e
Leader VRF uses coin nonce as well as sk (#68)
* standardize endianness to "big"

* slot.encode()

* include coin nonce in leader election VRF

---------

Co-authored-by: David Rusu <davidrusu@Davids-MacBook-Pro.local>
2024-02-07 18:28:36 +04:00
Giacomo Pasini 6f05392693
Add slot contribution to nonce (#67) 2024-02-07 12:31:31 +01:00
davidrusu 0c447881ca
Merge pull request #65 from logos-co/evolve-leader-coin
Spec. Leader Coin Evolution
2024-02-07 01:53:26 +04:00
David Rusu 2a9ec4bc86 distinguish thew two commitments in the leader prf abnf 2024-02-06 22:21:16 +04:00
David Rusu bddaa40d63 test coin minting and stake stabilizing 2024-02-06 22:19:08 +04:00
David Rusu 3f681fc51f update block id spec; typo 2024-02-06 20:19:30 +04:00
David Rusu 5c3de9ab84 implement support for leader-proofs generated from evolved coins 2024-02-06 20:07:26 +04:00
Giacomo Pasini 8a82517fdd
Add nonce specification (#64)
* Add nonce specification

* tweak nonce definition
2024-02-06 16:37:49 +01:00
David Rusu eebf439a30 feat(leader_coin): add nonce and coin.evolve() api 2024-02-06 19:31:34 +04:00
Giacomo Pasini c1e12d6ce8
Add epoch transition to spec (#63)
* Add epoch transition to spec

* add tests

* Add block to fork after validation

* Add configs for steps inside an epoch

* rename get_last_valid_state to state_at_slot_beginning
2024-02-06 14:38:20 +01:00
Youngjoon Lee fe7d47caee
Mixnet: integrate all the pieces together (#57) 2024-02-05 09:04:02 +01:00
Youngjoon Lee b1ffb4d62d
Mixnet: topology update (#56) 2024-02-05 07:47:36 +01:00
davidrusu d7b5e0b529
Merge pull request #62 from logos-co/epoch-state-spec
Follower maintains ledger state as it follows the blockchain
2024-02-02 13:29:41 +04:00
David Rusu 9f6b9eb242 Specify mock-leader-proof in message spec 2024-02-02 01:16:14 +04:00
David Rusu 9345af0614 test ledger state is properly updated on re-org 2024-02-01 21:33:37 +04:00
David Rusu 62ea40ba5e address CR 2024-02-01 20:25:49 +04:00
David Rusu 45bddc0e21 Follower maintains ledger state as it follows the chain 2024-02-01 15:08:50 +04:00
David Rusu 7d8e4d72d9 setup for ledger state update 2024-02-01 15:08:50 +04:00
David Rusu 66239b3913 checkpoint work on ledger-state 2024-02-01 15:08:50 +04:00
Giacomo Pasini 734b038c50
Add header id and message format specification (#52)
* Create messages.abnf

* add missing block rule

* Add content id to header message

* add header id definition + implementation in python

* address review comments
2024-01-31 23:09:03 +01:00
Daniel Sanchez 0f6bcf11b1
Add eth-specs submodule (#60)
* Added eth specs submodule

* Rename to eth-specs instead

* Added install script for ethspecs module

* Use python and pip instead of 3

* Load eth-specs in ci

* Add checkout submodules to ci

* Make install script executable

* Added missing install command in script

* Added missing submodule

* Move to eth-specs for building
2024-01-31 09:53:04 +01:00
Daniel Sanchez 7df4f9556f
Specify shuffling algorithm (#37) 2024-01-31 09:33:44 +01:00
Daniel Sanchez ff09cf8bb8
Sort committees before hashing (#36) 2024-01-31 09:33:13 +01:00
Youngjoon Lee 1d3bf3c6d8
Clarify Cryptarchia slot calcuation (#59) 2024-01-30 11:57:54 +01:00
Giacomo Pasini 45c303ef14
Add fork choice rule (#58)
* add fork choice rule

* add comments explaining k and s

* add tests

* fix test import
2024-01-29 14:29:56 +01:00
davidrusu a587e3a164
Merge pull request #54 from logos-co/cryptarchia
Cryptarchia specs
2024-01-26 16:31:25 +04:00
davidrusu 0c4bfa4d03
Merge branch 'master' into cryptarchia 2024-01-26 00:14:22 +04:00
davidrusu 8c43b68c35
Merge pull request #55 from logos-co/cryptarchia-leader-lottery
feat(lottery): spec out basic leader slot check
2024-01-25 16:30:14 +04:00
David Rusu 94f97caab0 rename EpochState.stake_distribution() to EpochState.total_stake() 2024-01-25 15:26:54 +04:00
David Rusu 1420117e9a rename LedgerState.head to LedgerState.block 2024-01-25 14:25:37 +04:00
Youngjoon Lee ebc069b112
Mixnet: Refactor with asyncio (#53) 2024-01-25 18:04:55 +09:00
David Rusu b8966762e0 feat(lottery): spec out basic leader slot check 2024-01-25 02:04:35 +04:00
Giacomo Pasini c4c52fbff4
TMP 2024-01-24 12:52:30 +01:00
Youngjoon Lee 30d52791c3
Mixnet: mix client emission (#50) 2024-01-23 10:46:00 +09:00
Youngjoon Lee d963d6cb51
Mixnet: Packet delay in mix node (#49) 2024-01-23 10:29:14 +09:00
Youngjoon Lee 1fc319de9e
Mixnet: Sphinx packet builder for mix clients (#47) 2024-01-15 15:17:35 +09:00
Youngjoon Lee 2263327320
Use Python 3.12 and install setuptools (#48) 2024-01-12 19:27:09 +09:00