All Projects → protolambda → go-kzg

protolambda / go-kzg

Licence: MIT license
FFT, data-recovery and KZG commitments, a.k.a. Kate commitments, in Go - *super experimental*

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to go-kzg

fftWater
Ocean simulation based on the paper of Jerry Tessendorf: Simulating Ocean Water
Stars: ✭ 20 (-41.18%)
Mutual labels:  fft
Chisel-FFT-generator
FFT generator using Chisel
Stars: ✭ 26 (-23.53%)
Mutual labels:  fft
dotfiles
Dotfiles of Coelacanthus
Stars: ✭ 17 (-50%)
Mutual labels:  kate
mkl fft
NumPy-based Python interface to Intel (R) MKL FFT functionality
Stars: ✭ 52 (+52.94%)
Mutual labels:  fft
ethereumapis
A collection of public Ethereum APIs.
Stars: ✭ 70 (+105.88%)
Mutual labels:  eth2
dsp-kit
A digital signal processing library in Javascript
Stars: ✭ 32 (-5.88%)
Mutual labels:  fft
beacon-APIs
Collection of RESTful APIs provided by Ethereum Beacon nodes
Stars: ✭ 209 (+514.71%)
Mutual labels:  eth2
FftSharp
A .NET Standard library for computing the Fast Fourier Transform (FFT) of real or complex data
Stars: ✭ 132 (+288.24%)
Mutual labels:  fft
btrfscue
Recover files from damaged BTRFS filesystems
Stars: ✭ 28 (-17.65%)
Mutual labels:  data-recovery
CCWT
Complex Continuous Wavelet Transform
Stars: ✭ 136 (+300%)
Mutual labels:  fft
galois
A performant NumPy extension for Galois fields and their applications
Stars: ✭ 106 (+211.76%)
Mutual labels:  ntt
ethmerge.com-content
Markdown formatted content for the ethmerge.com website.
Stars: ✭ 29 (-14.71%)
Mutual labels:  eth2
NMRI
2D Fourier Transform of Nuclear Magnetic Resonance Imaging raw data
Stars: ✭ 13 (-61.76%)
Mutual labels:  fft
AbstractFFTs.jl
A Julia framework for implementing FFTs
Stars: ✭ 72 (+111.76%)
Mutual labels:  fft
benchmarking-fft
choosing FFT library...
Stars: ✭ 74 (+117.65%)
Mutual labels:  fft
intel-mkl-src
Redistribute Intel MKL as a crate
Stars: ✭ 52 (+52.94%)
Mutual labels:  fft
fatx-tools
Data recovery tools for FATX drives (XBOX and XBOX 360).
Stars: ✭ 51 (+50%)
Mutual labels:  data-recovery
OceanFFT
OpenGL Demo: Simulating Ocean Waves with FFT
Stars: ✭ 60 (+76.47%)
Mutual labels:  fft
MCHE485---Mechanical-Vibrations
Code supporting MCHE485: Mechanical Vibrations at the Univsersity of Louisiana at Lafayette
Stars: ✭ 30 (-11.76%)
Mutual labels:  fft
BeaconChain.swift
Swift implementation of Ethereum 2.0 beacon chain
Stars: ✭ 41 (+20.59%)
Mutual labels:  eth2

KZG and FFT utils

This repo is super experimental.

This is an implementation in Go, initially aimed at chunkification and extension of data, and building/verifying KZG proofs for the output data. The KZG proofs, or Kate proofs, are built on top of BLS12-381.

Part of a low-latency data-availability sampling network prototype for Eth2 Phase 1. See https://github.com/protolambda/eth2-das

Code is based on:

Features:

  • (I)FFT on F_r
  • (I)FFT on G1
  • Specialized FFT for extension of F_r data
  • KZG
    • commitments
    • generate/verify proof for single point
    • generate/verify proofs for multiple points
    • generate/verify proofs for all points, using FK20
    • generate/verify proofs for ranges (cosets) of points, using FK20
  • Data recovery: given an arbitrary subset of data (at least half), recover the rest
  • Optimized for Data-availability usage
  • Change Bignum / BLS with build tags.

BLS

Currently supported BLS implementations: Herumi BLS and Kilic BLS (default).

Field elements (Fr)

The BLS curve order is used for the modulo math, different libraries could be used to provide this functionality. Note: some of these libraries do not have full BLS functionality, only Bignum / uint256. The KZG code will be excluded when compiling with a non-BLS build tag.

Build tag options:

  • (no build tags, default): Use Kilic BLS library. Previously used by bignum_kilic build tag. kilic/bls12-381
  • -tags bignum_hbls: use Herumi BLS library. herumi/bls-eth-go-binary
  • -tags bignum_hol256: Use the uint256 code that Geth uses, holiman/uint256
  • -tags bignum_pure: Use the native Go Bignum implementation.

Benchmarks

See BENCH.md for benchmarks of FFT, FFT in G1, FFT-extension, zero polynomials, and sample recovery.

License

MIT, see LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].