Commit Graph

31 Commits

Author SHA1 Message Date
George Kadianakis 296ba921c9 EIP4844: Handle barycentric evaluations at roots of unity 2023-01-16 17:51:50 +02:00
Dankrad Feist 4c573ff6b9 Add compute_kzg_proof to public methods 2023-01-01 14:04:56 -06:00
George Kadianakis 05c2eb8ace
Merge pull request #3159 from kevaundray/patch-3
EIP4844: Clarify that z should not be in the domain
2022-12-14 17:47:48 +02:00
kevaundray e467ab9556
clarify that z should not be in the domain 2022-12-14 11:01:40 +00:00
Hsiao-Wei Wang 2ac06c10d3
Update G2 trusted setup length to 65 2022-12-13 18:14:50 +08:00
George Kadianakis 23d3aeebba
EIP4844 precompile: Be strict when parsing field elements from network (#3138)
* EIP4844: bytes_to_bls_field() must not accept values >= BLS_MODULUS

bytes_to_bls_field() will be used in the precompile and hence it should error out when provided with malicious inputs.

* EIP4844: Add hash_to_bls_field() for use in compute_challenges()

The previous commit made bytes_to_bls_field() be strict about its inputs. However in compute_challenges() we are
dealing with Fiat-Shamir and hash outputs that could be innocuously higher than the modulus. For this reason we add the
hash_to_bls_field() helper for use in compute_challenges().

* EIP4844: Further use of bytes_to_bls_field() // Fix executable spec

Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-12-01 14:59:00 +02:00
Hsiao-Wei Wang b3a176689d
WIP. Fixing mypy errors 2022-11-28 21:01:41 +08:00
Roberto Bayardo a1e46d1ae4
EIP4844: Fix return value of compute_challenges (#3129)
Co-authored-by: George Kadianakis <desnacked@riseup.net>
2022-11-24 15:26:02 +02:00
kevaundray 3ec25a8755
Fix docstring for compute_powers and compute_challenges methods (#3130) 2022-11-24 15:11:46 +02:00
kevaundray f0ff15c14d
EIP4844: Refactor Fiat-Shamir logic to handle empty sidecars (#3093)
Additionally, it makes the Fiat-Shamir hashing logic more robust by making the challenges independent of each other. It also makes it more efficient to implement by moving both challenge computations to a single function needing a single transcript hash.

Co-authored-by: George Kadianakis <desnacked@riseup.net>
Co-authored-by: Dankrad Feist <mail@dankradfeist.de>
2022-11-23 16:52:47 +02:00
Ramana Kumar 19c8f21b63
Fix type annotation in verify_aggregate_kzg_proof 2022-11-19 09:17:11 +00:00
George Kadianakis a45627164d
Merge pull request #3097 from asn-d6/verify_kzg_proof_bytes_api
EIP4844: Refactor `verify_kzg_proof()` to receive bytes (used in precompile)
2022-11-18 20:01:18 +02:00
Hsiao-Wei Wang 438a7e55ea
Conver `roots_of_unity_brp` to integers 2022-11-18 03:20:25 +08:00
George Kadianakis fcac0b5c69 Clarify which functions are public and provided by the KZG library 2022-11-12 01:47:39 +02:00
George Kadianakis ff34006807 Refactor `verify_kzg_proof()` to receive bytes (used in precompile)
This way, client devs don't need to convert to field elements themselves, and the KZG library takes care fo it.
2022-11-12 01:47:39 +02:00
Hsiao-Wei Wang 544ae28721
Merge pull request #3016 from ethereum/gen_kzg_trusted_setups
Rework the testing KZG trusted setups presets
2022-11-07 22:29:54 +08:00
George Kadianakis b2d72a18f0 Fix type error in the inputs to hash_to_bls_field() 2022-11-03 18:13:36 +02:00
Hsiao-Wei Wang 5a0d84ed01
int casting to avoid underflow 2022-11-03 10:21:09 -05:00
George Kadianakis 86e15764ad
EIP4844: Update cryptography API (#3038)
This commit changes the public API of the KZG library to the following high-level API:

```
- verify_kzg_proof()
- compute_aggregate_kzg_proof()
- verify_aggregate_kzg_proof()
- blob_to_kzg_commitment()
```

compared to the previous much more low-level API:

```
- compute_powers()
- matrix_lincomb()
- lincomb()
- bytes_to_bls_field()
- evaluate_polynomial_in_evaluation_form()
- verify_kzg_proof()
- compute_kzg_proof()
```

This means that all the cryptographic logic (including Fiat-Shamir) is now isolated and hidden in the KZG library and the `validator.md` file ends up being significantly simplified, only calling high-level KZG functions.

Some additional things that this commit does:

- Moves all EIP4844 cryptography into polynomial-commitments.md
- Improves the Fiat-Shamir stack by removing the need for SSZ and by introducing simple domain separators

Co-authored-by: Kevaundray Wedderburn <kevtheappdev@gmail.com>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
Co-authored-by: Dankrad Feist <mail@dankradfeist.de>
2022-11-03 17:01:32 +02:00
Hsiao-Wei Wang 3552e2f6e8
Merge pull request #3018 from ethereum/bump-dep
Bump dep packages version and fix lint issues
2022-10-07 00:21:51 +08:00
Hsiao-Wei Wang 44424c4080
Bump dep packages version and fix lint issues 2022-09-28 12:38:21 +08:00
Ramana Kumar 9ac605cc5e
Fix incorrect comment
bit-reversal permutation is not idempotent
2022-09-27 12:13:56 +01:00
George Kadianakis d197ed1451 EIP4844: Introduce bytes_to_bls_field() helper
Improves separation between BLS cryptography and Ethereum SSZ logic.

Now the BLS library just implements bytes_to_bls_field(). Then hash_to_bls_field() does the Ethereum SSZ magic and
calls bytes_to_bls_field().
2022-09-26 19:01:01 +03:00
George Kadianakis f4ba8b55ee
EIP4844: Implement reverse bit ordering in KZG commitments
Co-authored-by: Dankrad Feist <mail@dankradfeist.de>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-09-26 16:39:16 +03:00
Dankrad Feist b35155005b
Rename matrix_lincomb to vector_lincomb and lincomb to g1_lincomb 2022-09-19 20:16:19 +01:00
George Kadianakis 5b9bf41de6 EIP-4844: Further improvements on the spec
- Move constants around
- Implement missing functions to make the spec executable

Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-07-13 13:13:30 +03:00
George Kadianakis 221f3687bd EIP-4844: Improve the cryptographic parts of the spec
- Move more code into polynomial-commitments.md
- Implement aggregated sidecar verification logic from PR #2915
- Rename `kzgs` to `kzg_commitments`

Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-07-13 13:12:31 +03:00
Hsiao-Wei Wang a3339c7b7f
PR suggestion from @Inphi 2022-06-25 00:13:20 +08:00
Hsiao-Wei Wang 0ab280d396
minor suggestions 2022-06-23 18:40:09 +08:00
George Kadianakis e7e520791d Use Python's pow() in bls_modular_inverse(). 2022-06-22 15:42:03 +03:00
George Kadianakis 534a9d1d95 Move EIP-4844 cryptography code to its own file 2022-06-22 15:42:03 +03:00