Skip to content

Commit dccee9d

Browse files
feat: add NIF to use KZG functions (#780)
Co-authored-by: Tomás Grüner <47506558+MegaRedHand@users.noreply.github.com>
1 parent f3d6067 commit dccee9d

File tree

8 files changed

+4800
-0
lines changed

8 files changed

+4800
-0
lines changed

lib/kzg.ex

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
defmodule Kzg do
2+
@moduledoc """
3+
KZG functions
4+
"""
5+
use Rustler, otp_app: :lambda_ethereum_consensus, crate: "kzg_nif"
6+
7+
@spec blob_to_kzg_commitment(Types.blob()) :: {:ok, Types.kzg_commitment()} | {:error, binary()}
8+
def blob_to_kzg_commitment(_blob) do
9+
:erlang.nif_error(:nif_not_loaded)
10+
end
11+
12+
@spec compute_kzg_proof(Types.blob(), Types.bytes32()) ::
13+
{:ok, {Types.kzg_proof(), Types.bytes32()}} | {:error, binary()}
14+
def compute_kzg_proof(_blob, _z) do
15+
:erlang.nif_error(:nif_not_loaded)
16+
end
17+
18+
@spec verify_kzg_proof(
19+
Types.kzg_commitment(),
20+
Types.bytes32(),
21+
Types.bytes32(),
22+
Types.kzg_proof()
23+
) ::
24+
{:ok, boolean} | {:error, binary()}
25+
def verify_kzg_proof(_kzg_commitment, _z, _y, _kzg_proof) do
26+
:erlang.nif_error(:nif_not_loaded)
27+
end
28+
29+
@spec compute_blob_kzg_proof(Types.blob(), Types.kzg_commitment()) ::
30+
{:ok, Types.kzg_proof()} | {:error, binary()}
31+
def compute_blob_kzg_proof(_blob, _kzg_commitment) do
32+
:erlang.nif_error(:nif_not_loaded)
33+
end
34+
35+
@spec verify_blob_kzg_proof(Types.blob(), Types.kzg_commitment(), Types.kzg_proof()) ::
36+
{:ok, boolean} | {:error, binary()}
37+
def verify_blob_kzg_proof(_blob, _kzg_commitment, _kzg_proof) do
38+
:erlang.nif_error(:nif_not_loaded)
39+
end
40+
41+
@spec verify_blob_kzg_proof_batch(
42+
list(Types.blob()),
43+
list(Types.kzg_commitment()),
44+
list(Types.kzg_proof())
45+
) ::
46+
{:ok, boolean} | {:error, binary()}
47+
def verify_blob_kzg_proof_batch(_blobs, _kzg_commitments, _kzg_proofs) do
48+
:erlang.nif_error(:nif_not_loaded)
49+
end
50+
end

native/kzg_nif/.cargo/config.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[target.'cfg(target_os = "macos")']
2+
rustflags = [
3+
"-C", "link-arg=-undefined",
4+
"-C", "link-arg=dynamic_lookup",
5+
]

native/kzg_nif/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/target

native/kzg_nif/Cargo.lock

Lines changed: 268 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

native/kzg_nif/Cargo.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[package]
2+
name = "kzg_nif"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
[lib]
7+
name = "kzg_nif"
8+
path = "src/lib.rs"
9+
crate-type = ["cdylib"]
10+
11+
[dependencies]
12+
rustler = "0.31.0"
13+
c-kzg = "0.4.2"

0 commit comments

Comments
 (0)