Skip to content

Commit 3342290

Browse files
authored
refactor: move BLS and KZG specific types to their specific modules (#1057)
1 parent 19e4bbd commit 3342290

File tree

3 files changed

+31
-26
lines changed

3 files changed

+31
-26
lines changed

lib/bls.ex

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,50 @@ defmodule Bls do
55
use Rustler, otp_app: :lambda_ethereum_consensus, crate: "bls_nif"
66

77
@type privkey() :: <<_::256>>
8+
@type pubkey :: <<_::384>>
9+
@type signature :: <<_::768>>
810

9-
@spec sign(privkey(), binary()) :: {:ok, Types.bls_signature()} | {:error, any()}
11+
@spec sign(privkey(), binary()) :: {:ok, signature()} | {:error, any()}
1012
def sign(_private_key, _message) do
1113
:erlang.nif_error(:nif_not_loaded)
1214
end
1315

14-
@spec aggregate([Types.bls_signature()]) :: {:ok, Types.bls_signature()} | {:error, any()}
16+
@spec aggregate([signature()]) :: {:ok, signature()} | {:error, any()}
1517
def aggregate(_signatures) do
1618
:erlang.nif_error(:nif_not_loaded)
1719
end
1820

19-
@spec verify(Types.bls_pubkey(), binary(), Types.bls_signature()) ::
21+
@spec verify(pubkey(), binary(), signature()) ::
2022
{:ok, boolean} | {:error, binary()}
2123
def verify(_public_key, _message, _signature) do
2224
:erlang.nif_error(:nif_not_loaded)
2325
end
2426

25-
@spec fast_aggregate_verify([Types.bls_pubkey()], binary(), Types.bls_signature()) ::
27+
@spec fast_aggregate_verify([pubkey()], binary(), signature()) ::
2628
{:ok, boolean} | {:error, binary()}
2729
def fast_aggregate_verify(_public_keys, _message, _signature) do
2830
:erlang.nif_error(:nif_not_loaded)
2931
end
3032

31-
@spec eth_fast_aggregate_verify([Types.bls_pubkey()], binary(), Types.bls_signature()) ::
33+
@spec eth_fast_aggregate_verify([pubkey()], binary(), signature()) ::
3234
{:ok, boolean} | {:error, binary()}
3335
def eth_fast_aggregate_verify(_public_keys, _message, _signature) do
3436
:erlang.nif_error(:nif_not_loaded)
3537
end
3638

37-
@spec aggregate_verify([Types.bls_pubkey()], [binary()], Types.bls_signature()) ::
39+
@spec aggregate_verify([pubkey()], [binary()], signature()) ::
3840
{:ok, boolean} | {:error, binary()}
3941
def aggregate_verify(_public_keys, _messages, _signature) do
4042
:erlang.nif_error(:nif_not_loaded)
4143
end
4244

43-
@spec eth_aggregate_pubkeys([Types.bls_pubkey()]) ::
44-
{:ok, Types.bls_pubkey()} | {:error, any()}
45+
@spec eth_aggregate_pubkeys([pubkey()]) ::
46+
{:ok, pubkey()} | {:error, any()}
4547
def eth_aggregate_pubkeys(_public_keys) do
4648
:erlang.nif_error(:nif_not_loaded)
4749
end
4850

49-
@spec key_validate(Types.bls_pubkey()) ::
51+
@spec key_validate(pubkey()) ::
5052
{:ok, boolean} | {:error, binary()}
5153
def key_validate(_public_key) do
5254
:erlang.nif_error(:nif_not_loaded)
@@ -56,7 +58,7 @@ defmodule Bls do
5658
@doc """
5759
Same as ``Bls.verify``, but treats errors as invalid signatures.
5860
"""
59-
@spec valid?(Types.bls_pubkey(), binary(), Types.bls_signature()) :: boolean()
61+
@spec valid?(pubkey(), binary(), signature()) :: boolean()
6062
def valid?(public_key, message, signature) do
6163
case Bls.verify(public_key, message, signature) do
6264
{:ok, bool} -> bool
@@ -68,7 +70,7 @@ defmodule Bls do
6870
@doc """
6971
Same as ``Bls.fast_aggregate_verify``, but treats errors as invalid signatures.
7072
"""
71-
@spec fast_aggregate_valid?([Types.bls_pubkey()], binary(), Types.bls_signature()) :: boolean()
73+
@spec fast_aggregate_valid?([pubkey()], binary(), signature()) :: boolean()
7274
def fast_aggregate_valid?(public_keys, message, signature) do
7375
case Bls.fast_aggregate_verify(public_keys, message, signature) do
7476
{:ok, bool} -> bool

lib/kzg.ex

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,47 @@ defmodule Kzg do
44
"""
55
use Rustler, otp_app: :lambda_ethereum_consensus, crate: "kzg_nif"
66

7-
@spec blob_to_kzg_commitment(Types.blob()) :: {:ok, Types.kzg_commitment()} | {:error, binary()}
7+
@type commitment :: <<_::384>>
8+
@type proof :: <<_::768>>
9+
10+
@spec blob_to_kzg_commitment(Types.blob()) :: {:ok, commitment()} | {:error, binary()}
811
def blob_to_kzg_commitment(_blob) do
912
:erlang.nif_error(:nif_not_loaded)
1013
end
1114

1215
@spec compute_kzg_proof(Types.blob(), Types.bytes32()) ::
13-
{:ok, {Types.kzg_proof(), Types.bytes32()}} | {:error, binary()}
16+
{:ok, {proof(), Types.bytes32()}} | {:error, binary()}
1417
def compute_kzg_proof(_blob, _z) do
1518
:erlang.nif_error(:nif_not_loaded)
1619
end
1720

1821
@spec verify_kzg_proof(
19-
Types.kzg_commitment(),
22+
commitment(),
2023
Types.bytes32(),
2124
Types.bytes32(),
22-
Types.kzg_proof()
25+
proof()
2326
) ::
2427
{:ok, boolean} | {:error, binary()}
2528
def verify_kzg_proof(_kzg_commitment, _z, _y, _kzg_proof) do
2629
:erlang.nif_error(:nif_not_loaded)
2730
end
2831

29-
@spec compute_blob_kzg_proof(Types.blob(), Types.kzg_commitment()) ::
30-
{:ok, Types.kzg_proof()} | {:error, binary()}
32+
@spec compute_blob_kzg_proof(Types.blob(), commitment()) ::
33+
{:ok, proof()} | {:error, binary()}
3134
def compute_blob_kzg_proof(_blob, _kzg_commitment) do
3235
:erlang.nif_error(:nif_not_loaded)
3336
end
3437

35-
@spec verify_blob_kzg_proof(Types.blob(), Types.kzg_commitment(), Types.kzg_proof()) ::
38+
@spec verify_blob_kzg_proof(Types.blob(), commitment(), proof()) ::
3639
{:ok, boolean} | {:error, binary()}
3740
def verify_blob_kzg_proof(_blob, _kzg_commitment, _kzg_proof) do
3841
:erlang.nif_error(:nif_not_loaded)
3942
end
4043

4144
@spec verify_blob_kzg_proof_batch(
4245
list(Types.blob()),
43-
list(Types.kzg_commitment()),
44-
list(Types.kzg_proof())
46+
list(commitment()),
47+
list(proof())
4548
) ::
4649
{:ok, boolean} | {:error, binary()}
4750
def verify_blob_kzg_proof_batch(_blobs, _kzg_commitments, _kzg_proofs) do
@@ -54,8 +57,8 @@ defmodule Kzg do
5457

5558
@spec blob_kzg_proof_batch_valid?(
5659
list(Types.blob()),
57-
list(Types.kzg_commitment()),
58-
list(Types.kzg_proof())
60+
list(commitment()),
61+
list(proof())
5962
) :: boolean()
6063
def blob_kzg_proof_batch_valid?(blobs, kzg_commitments, kzg_proofs) do
6164
case verify_blob_kzg_proof_batch(blobs, kzg_commitments, kzg_proofs) do

lib/types/types.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ defmodule Types do
3535
@type domain_type :: bytes4
3636
@type fork_digest :: bytes4
3737
@type domain :: bytes32
38-
@type bls_pubkey :: bytes48
39-
@type bls_signature :: bytes96
4038
@type participation_flags :: uint8
4139
# Max size: 2**30
4240
@type transaction :: binary
@@ -46,6 +44,8 @@ defmodule Types do
4644
@type blob_index :: uint64
4745
# Max size: BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_BLOB
4846
@type blob :: binary
49-
@type kzg_commitment :: bytes48
50-
@type kzg_proof :: bytes48
47+
@type kzg_commitment :: Kzg.commitment()
48+
@type kzg_proof :: Kzg.proof()
49+
@type bls_signature :: Bls.signature()
50+
@type bls_pubkey :: Bls.pubkey()
5151
end

0 commit comments

Comments
 (0)