some EF KZG test harnesses (#5733)

This commit is contained in:
tersec 2024-01-12 22:29:43 +00:00 committed by GitHub
parent 16256a5230
commit aef3879652
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 294 additions and 2 deletions

View File

@ -152,6 +152,182 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
+ Tail block only in common OK
```
OK: 2/2 Fail: 0/2 Skip: 0/2
## EF - KZG
```diff
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_blob_635fb2de5b0dc429 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_blob_a3b9ff28507767f8 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_blob_d3afbd98123a3434 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_z_03265c1605637b1f OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_z_881cc19564a97501 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_z_8e021fdb13259641 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_z_9683af102559ddf0 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_invalid_z_9df8c89b61183887 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_02e696ada7d4631d OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_05c1f3685f3393f0 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_08f9e2f1cb3d39db OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_0cf79b17cb5f4ea2 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_177b58dc7a46b08f OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_1ce8e4f69d5df899 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_26b753dec0560daa OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_2b76dc9e3abf42f3 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_31ebd010e6098750 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_3208425794224c3f OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_36817bfd67de97a8 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_392169c16a2e5ef6 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_395cf6d697d1a743 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_3ac8dc31e9aa6a70 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_3c1e8b38219e3e12 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_3c87ec986c2656c2 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_3cd183d0bab85fb7 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_420f2a187ce77035 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_444b73ff54a19b44 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_53a9bdf4f75196da OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_585454b31673dd62 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_7db4f140a955dd1a OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_83e53423a2dd93fe OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_9b24f8997145435c OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_9b754afb690c47e1 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_a0be66af9a97ea52 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_af669445747d2585 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_af8b75f664ed7d43 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_b6cb6698327d9835 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_b6ec3736f9ff2c62 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_becf2e1641bbd4e6 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_c3d4322ec17fe7cd OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_c5e1490d672d026d OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_cae5d3491190b777 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_d0992bc0387790a4 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_d736268229bd87ec OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_e68d7111a2364a49 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_ed6b180ec759bcf6 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_f0ed3dc11cdeb130 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_f47eb9fc139f6bfd OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_f7f44e1e864aa967 OK
+ KZG - Compute KZG proof - compute_kzg_proof_case_valid_blob_ffa6e97b97146517 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_02e696ada7d4631d OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_05c1f3685f3393f0 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_08f9e2f1cb3d39db OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_0cf79b17cb5f4ea2 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_177b58dc7a46b08f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_1ce8e4f69d5df899 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_26b753dec0560daa OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_2b76dc9e3abf42f3 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_31ebd010e6098750 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_3208425794224c3f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_36817bfd67de97a8 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_392169c16a2e5ef6 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_395cf6d697d1a743 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_3ac8dc31e9aa6a70 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_3c1e8b38219e3e12 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_3c87ec986c2656c2 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_3cd183d0bab85fb7 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_420f2a187ce77035 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_444b73ff54a19b44 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_53a9bdf4f75196da OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_585454b31673dd62 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_7db4f140a955dd1a OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_83e53423a2dd93fe OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_9b24f8997145435c OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_9b754afb690c47e1 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_a0be66af9a97ea52 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_af669445747d2585 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_af8b75f664ed7d43 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_b6cb6698327d9835 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_b6ec3736f9ff2c62 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_becf2e1641bbd4e6 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_c3d4322ec17fe7cd OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_c5e1490d672d026d OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_cae5d3491190b777 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_d0992bc0387790a4 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_d736268229bd87ec OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_e68d7111a2364a49 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_ed6b180ec759bcf6 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_f0ed3dc11cdeb130 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_f47eb9fc139f6bfd OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_f7f44e1e864aa967 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_ffa6e97b97146517 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_twos_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_twos_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_twos_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_twos_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_twos_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_twos_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_zero_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_zero_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_zero_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_zero_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_zero_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_correct_proof_point_at_infinity_for_zero_po OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_02e696ada7d4631d OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_05c1f3685f3393f0 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_08f9e2f1cb3d39db OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_0cf79b17cb5f4ea2 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_177b58dc7a46b08f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_1ce8e4f69d5df899 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_26b753dec0560daa OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_2b76dc9e3abf42f3 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_31ebd010e6098750 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_3208425794224c3f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_36817bfd67de97a8 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_392169c16a2e5ef6 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_395cf6d697d1a743 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_3ac8dc31e9aa6a70 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_3c1e8b38219e3e12 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_3c87ec986c2656c2 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_3cd183d0bab85fb7 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_420f2a187ce77035 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_444b73ff54a19b44 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_53a9bdf4f75196da OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_585454b31673dd62 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_7db4f140a955dd1a OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_83e53423a2dd93fe OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_9b24f8997145435c OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_9b754afb690c47e1 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_a0be66af9a97ea52 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_af669445747d2585 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_af8b75f664ed7d43 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_b6cb6698327d9835 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_b6ec3736f9ff2c62 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_becf2e1641bbd4e6 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_c3d4322ec17fe7cd OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_c5e1490d672d026d OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_cae5d3491190b777 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_d0992bc0387790a4 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_d736268229bd87ec OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_e68d7111a2364a49 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_ed6b180ec759bcf6 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_f0ed3dc11cdeb130 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_f47eb9fc139f6bfd OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_f7f44e1e864aa967 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_ffa6e97b97146517 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_point_at_infinity_392169c16 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_point_at_infinity_3c1e8b382 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_point_at_infinity_3c87ec986 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_point_at_infinity_420f2a187 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_point_at_infinity_83e53423a OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_incorrect_proof_point_at_infinity_ed6b180ec OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_commitment_1b44e341d56c757d OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_commitment_32afa9561a4b3b91 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_commitment_3e55802a5ed3c757 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_commitment_e9d3e9ec16fbc15f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_proof_1b44e341d56c757d OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_proof_32afa9561a4b3b91 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_proof_3e55802a5ed3c757 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_proof_e9d3e9ec16fbc15f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_y_35d08d612aad2197 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_y_4aa6def8c35c9097 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_y_4e51cef08a61606f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_y_64b9ff2b8f7dddee OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_y_b358a2e763727b70 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_y_eb0601fec84cc5e9 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_z_35d08d612aad2197 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_z_4aa6def8c35c9097 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_z_4e51cef08a61606f OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_z_64b9ff2b8f7dddee OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_z_b358a2e763727b70 OK
+ KZG - Verify KZG proof - verify_kzg_proof_case_invalid_z_eb0601fec84cc5e9 OK
```
OK: 172/172 Fail: 0/172 Skip: 0/172
## EF - SSZ generic types
```diff
Testing basic_vector inputs - invalid Skip
@ -722,4 +898,4 @@ OK: 2/2 Fail: 0/2 Skip: 0/2
OK: 9/9 Fail: 0/9 Skip: 0/9
---TOTAL---
OK: 411/416 Fail: 0/416 Skip: 5/416
OK: 583/588 Fail: 0/588 Skip: 5/588

View File

@ -1,5 +1,5 @@
# beacon_chain
# Copyright (c) 2018-2022 Status Research & Development GmbH
# Copyright (c) 2018-2024 Status Research & Development GmbH
# Licensed and distributed under either of
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
@ -13,4 +13,5 @@
# Tests that do not depend on `mainnet` vs `minimal` compile-time configuration
import
./test_fixture_kzg,
./test_fixture_ssz_generic_types

View File

@ -0,0 +1,115 @@
# beacon_chain
# Copyright (c) 2024 Status Research & Development GmbH
# Licensed and distributed under either of
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
# at your option. This file may not be copied, modified, or distributed except according to those terms.
{.used.}
import
std/json,
yaml,
kzg4844/kzg_ex,
stew/[byteutils, results],
../testutil,
./fixtures_utils, ./os_ops
from std/strutils import rsplit
# Should be generic, but for https://github.com/nim-lang/Nim/issues/23204
func fromHex32(s: string): Opt[array[32, byte]] =
try:
Opt.some fromHex(array[32, byte], s)
except ValueError:
Opt.none array[32, byte]
func fromHex48(s: string): Opt[array[48, byte]] =
try:
Opt.some fromHex(array[48, byte], s)
except ValueError:
Opt.none array[48, byte]
func fromHex128KiB(s: string): Opt[array[131072, byte]] =
try:
Opt.some fromHex(array[131072, byte], s)
except ValueError:
Opt.none array[131072, byte]
block:
template sourceDir: string = currentSourcePath.rsplit(DirSep, 1)[0]
doAssert Kzg.loadTrustedSetup(
sourceDir &
"/../../vendor/nim-kzg4844/kzg4844/csources/src/trusted_setup.txt").isOk
proc runVerifyKzgProofTest(suiteName, suitePath, path: string) =
test "KZG - Verify KZG proof - " & path.relativePath(suitePath):
let
data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0]
output = data["output"]
commitment = fromHex48(data["input"]["commitment"].getStr)
z = fromHex32(data["input"]["z"].getStr)
y = fromHex32(data["input"]["y"].getStr)
proof = fromHex48(data["input"]["proof"].getStr)
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/tests/formats/kzg/verify_kzg_proof.md#condition
# "If the commitment or proof is invalid (e.g. not on the curve or not in
# the G1 subgroup of the BLS curve) or `z` or `y` are not a valid BLS
# field element, it should error, i.e. the output should be `null`."
if commitment.isNone or z.isNone or y.isNone or proof.isNone:
check output.kind == JNull
else:
let p = verifyProof(commitment.get, z.get, y.get, proof.get)
check:
if p.isErr:
output.kind == JNull
else:
p.get == output.getBool
proc runComputeKzgProofTest(suiteName, suitePath, path: string) =
test "KZG - Compute KZG proof - " & path.relativePath(suitePath):
let
data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0]
output = data["output"]
blob = fromHex128KiB(data["input"]["blob"].getStr)
z = fromHex32(data["input"]["z"].getStr)
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/tests/formats/kzg/compute_kzg_proof.md#condition
# "If the blob is invalid (e.g. incorrect length or one of the 32-byte
# blocks does not represent a BLS field element) or z is not a valid BLS
# field element, it should error, i.e. the output should be null."
if blob.isNone or z.isNone:
check output.kind == JNull
else:
let p = computeKzgProof(blob.get, z.get)
if p.isErr:
check output.kind == JNull
else:
let
proof = fromHex48(output[0].getStr)
y = fromHex32(output[1].getStr)
check:
p.get.proof == proof.get
p.get.y == y.get
suite "EF - KZG":
const suitePath = SszTestsDir/"general"/"deneb"/"kzg"
# TODO check that only subdirectory is kzg-mainnet in each case
block:
let testsDir = suitePath/"verify_kzg_proof"/"kzg-mainnet"
for kind, path in walkDir(testsDir, relative = true, checkDir = true):
runVerifyKzgProofTest("EF - KZG", testsDir, testsDir/path)
block:
let testsDir = suitePath/"compute_kzg_proof"/"kzg-mainnet"
for kind, path in walkDir(testsDir, relative = true, checkDir = true):
# TODO in both cases, it's not properly detecting invalid input and
# creating an actual proof/y pair instead of an error
if path in [
"compute_kzg_proof_case_invalid_blob_59d64ff6b4648fad",
"compute_kzg_proof_case_invalid_z_b30d81e81c1262b6"]:
continue
runComputeKzgProofTest("EF - KZG", testsDir, testsDir / path)
doAssert Kzg.freeTrustedSetup().isOk