accumulator

package
v1.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2021 License: Apache-2.0 Imports: 6 Imported by: 3

README

accumulator

import "github.com/coinbase/kryptology/pkg/accumulator"

Index

type Accumulator

Accumulator is a point

type Accumulator struct {
    // contains filtered or unexported fields
}
func (*Accumulator) Add
func (acc *Accumulator) Add(key *SecretKey, e Element) (*Accumulator, error)

Add accumulates a single element into the accumulator V' = (y + alpha) * V

func (*Accumulator) AddElements
func (acc *Accumulator) AddElements(key *SecretKey, m []Element) (*Accumulator, error)

AddElements accumulates a set of elements into the accumulator.

func (Accumulator) MarshalBinary
func (acc Accumulator) MarshalBinary() ([]byte, error)

MarshalBinary converts Accumulator to bytes

func (*Accumulator) New
func (acc *Accumulator) New(curve *curves.PairingCurve) (*Accumulator, error)

New creates a new accumulator.

func (*Accumulator) Remove
func (acc *Accumulator) Remove(key *SecretKey, e Element) (*Accumulator, error)

Remove removes a single element from accumulator if it exists V' = 1/(y+alpha) * V

func (*Accumulator) UnmarshalBinary
func (acc *Accumulator) UnmarshalBinary(data []byte) error

UnmarshalBinary sets Accumulator from bytes

func (*Accumulator) Update
func (acc *Accumulator) Update(key *SecretKey, additions []Element, deletions []Element) (*Accumulator, []Coefficient, error)

Update performs a batch addition and deletion as described on page 7, section 3 in https://eprint.iacr.org/2020/777.pdf

func (*Accumulator) WithElements
func (acc *Accumulator) WithElements(curve *curves.PairingCurve, key *SecretKey, m []Element) (*Accumulator, error)

WithElements initializes a new accumulator prefilled with entries Each member is assumed to be hashed V = prod(y + α) * V0, for all y∈ Y_V

type Coefficient

Coefficient is a point

type Coefficient curves.Point

type Delta

Delta contains values d and p, where d should be the division dA(y)/dD(y) on some value y p should be equal to 1/dD * <Gamma_y, Omega>

type Delta struct {
    // contains filtered or unexported fields
}
func (*Delta) MarshalBinary
func (d *Delta) MarshalBinary() ([]byte, error)

MarshalBinary converts Delta into bytes

func (*Delta) UnmarshalBinary
func (d *Delta) UnmarshalBinary(data []byte) error

UnmarshalBinary converts data into Delta

type Element

type Element curves.Scalar

type MembershipProof

MembershipProof contains values in the proof to be verified

type MembershipProof struct {
    // contains filtered or unexported fields
}
func (*MembershipProof) Finalize
func (mp *MembershipProof) Finalize(acc *Accumulator, pp *ProofParams, pk *PublicKey, challenge curves.Scalar) *MembershipProofFinal

Finalize computes values in the proof to be verified.

func (MembershipProof) MarshalBinary
func (mp MembershipProof) MarshalBinary() ([]byte, error)

MarshalBinary converts MembershipProof to bytes

func (*MembershipProof) UnmarshalBinary
func (mp *MembershipProof) UnmarshalBinary(data []byte) error

UnmarshalBinary converts bytes to MembershipProof

type MembershipProofCommitting

MembershipProofCommitting contains value computed in Proof of knowledge and Blinding phases as described in section 7 of https://eprint.iacr.org/2020/777.pdf

type MembershipProofCommitting struct {
    // contains filtered or unexported fields
}
func (*MembershipProofCommitting) GenProof
func (mpc *MembershipProofCommitting) GenProof(c curves.Scalar) *MembershipProof

GenProof computes the s values for Fiat-Shamir and return the actual proof to be sent to the verifier given the challenge c.

func (MembershipProofCommitting) GetChallengeBytes
func (mpc MembershipProofCommitting) GetChallengeBytes() []byte

GetChallenge returns bytes that need to be hashed for generating challenge. V || Ec || T_sigma || T_rho || R_E || R_sigma || R_rho || R_delta_sigma || R_delta_rho

func (*MembershipProofCommitting) New
func (mpc *MembershipProofCommitting) New(witness *MembershipWitness, acc *Accumulator, pp *ProofParams, pk *PublicKey) (*MembershipProofCommitting, error)

New initiates values of MembershipProofCommitting

type MembershipProofFinal

MembershipProofFinal contains values that are input to Fiat-Shamir Heuristic

type MembershipProofFinal struct {
    // contains filtered or unexported fields
}
func (MembershipProofFinal) GetChallenge
func (m MembershipProofFinal) GetChallenge(curve *curves.PairingCurve) curves.Scalar

GetChallenge computes Fiat-Shamir Heuristic taking input values of MembershipProofFinal

type MembershipWitness

MembershipWitness contains the witness c and the value y respect to the accumulator state.

type MembershipWitness struct {
    // contains filtered or unexported fields
}
func (*MembershipWitness) ApplyDelta
func (mw *MembershipWitness) ApplyDelta(delta *Delta) (*MembershipWitness, error)

ApplyDelta returns C' = dA(y)/dD(y)*C + 1/dD(y) * <Gamma_y, Omega> according to the witness update protocol described in section 4 of https://eprint.iacr.org/2020/777.pdf

func (*MembershipWitness) BatchUpdate
func (mw *MembershipWitness) BatchUpdate(additions []Element, deletions []Element, coefficients []Coefficient) (*MembershipWitness, error)

BatchUpdate performs batch update as described in section 4

func (MembershipWitness) MarshalBinary
func (mw MembershipWitness) MarshalBinary() ([]byte, error)

MarshalBinary converts a membership witness to bytes

func (*MembershipWitness) MultiBatchUpdate
func (mw *MembershipWitness) MultiBatchUpdate(A [][]Element, D [][]Element, C [][]Coefficient) (*MembershipWitness, error)

MultiBatchUpdate performs multi-batch update using epoch as described in section 4.2

func (*MembershipWitness) New
func (mw *MembershipWitness) New(y Element, acc *Accumulator, sk *SecretKey) (*MembershipWitness, error)

New creates a new membership witness

func (*MembershipWitness) UnmarshalBinary
func (mw *MembershipWitness) UnmarshalBinary(data []byte) error

UnmarshalBinary converts bytes into MembershipWitness

func (MembershipWitness) Verify
func (mw MembershipWitness) Verify(pk *PublicKey, acc *Accumulator) error

Verify the MembershipWitness mw is a valid witness as per section 4 in <https://eprint.iacr.org/2020/777>

type ProofParams

ProofParams contains four distinct public generators of G1 - X, Y, Z

type ProofParams struct {
    // contains filtered or unexported fields
}
func (*ProofParams) MarshalBinary
func (p *ProofParams) MarshalBinary() ([]byte, error)

MarshalBinary converts ProofParams to bytes

func (*ProofParams) New
func (p *ProofParams) New(curve *curves.PairingCurve, pk *PublicKey, entropy []byte) (*ProofParams, error)

New samples X, Y, Z, K

func (*ProofParams) UnmarshalBinary
func (p *ProofParams) UnmarshalBinary(data []byte) error

UnmarshalBinary converts bytes to ProofParams

type PublicKey

PublicKey is the public key of accumulator, it should be sk * generator of G2

type PublicKey struct {
    // contains filtered or unexported fields
}
func (PublicKey) MarshalBinary
func (pk PublicKey) MarshalBinary() ([]byte, error)

MarshalBinary converts PublicKey to bytes

func (*PublicKey) UnmarshalBinary
func (pk *PublicKey) UnmarshalBinary(data []byte) error

UnmarshalBinary sets PublicKey from bytes

type SecretKey

SecretKey is the secret alpha only held by the accumulator manager.

type SecretKey struct {
    // contains filtered or unexported fields
}
func (SecretKey) BatchAdditions
func (sk SecretKey) BatchAdditions(additions []Element) (Element, error)

BatchAdditions computes product(y + sk) for y in additions and output the product

func (SecretKey) BatchDeletions
func (sk SecretKey) BatchDeletions(deletions []Element) (Element, error)

BatchDeletions computes 1/product(y + sk) for y in deletions and output it

func (SecretKey) CreateCoefficients
func (sk SecretKey) CreateCoefficients(additions []Element, deletions []Element) ([]Element, error)

CreateCoefficients creates the Batch Polynomial coefficients See page 7 of https://eprint.iacr.org/2020/777.pdf

func (SecretKey) GetPublicKey
func (sk SecretKey) GetPublicKey(curve *curves.PairingCurve) (*PublicKey, error)

GetPublicKey creates a public key from SecretKey sk

func (SecretKey) MarshalBinary
func (sk SecretKey) MarshalBinary() ([]byte, error)

MarshalBinary converts SecretKey to bytes

func (*SecretKey) New
func (sk *SecretKey) New(curve *curves.PairingCurve, seed []byte) (*SecretKey, error)

New creates a new secret key from the seed.

func (*SecretKey) UnmarshalBinary
func (sk *SecretKey) UnmarshalBinary(data []byte) error

UnmarshalBinary sets SecretKey from bytes

Generated by gomarkdoc

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Accumulator

type Accumulator struct {
	// contains filtered or unexported fields
}

Accumulator is a point

func (*Accumulator) Add

func (acc *Accumulator) Add(key *SecretKey, e Element) (*Accumulator, error)

Add accumulates a single element into the accumulator V' = (y + alpha) * V

func (*Accumulator) AddElements

func (acc *Accumulator) AddElements(key *SecretKey, m []Element) (*Accumulator, error)

AddElements accumulates a set of elements into the accumulator.

func (Accumulator) MarshalBinary

func (acc Accumulator) MarshalBinary() ([]byte, error)

MarshalBinary converts Accumulator to bytes

func (*Accumulator) New

func (acc *Accumulator) New(curve *curves.PairingCurve) (*Accumulator, error)

New creates a new accumulator.

func (*Accumulator) Remove

func (acc *Accumulator) Remove(key *SecretKey, e Element) (*Accumulator, error)

Remove removes a single element from accumulator if it exists V' = 1/(y+alpha) * V

func (*Accumulator) UnmarshalBinary

func (acc *Accumulator) UnmarshalBinary(data []byte) error

UnmarshalBinary sets Accumulator from bytes

func (*Accumulator) Update

func (acc *Accumulator) Update(key *SecretKey, additions []Element, deletions []Element) (*Accumulator, []Coefficient, error)

Update performs a batch addition and deletion as described on page 7, section 3 in https://eprint.iacr.org/2020/777.pdf

func (*Accumulator) WithElements

func (acc *Accumulator) WithElements(curve *curves.PairingCurve, key *SecretKey, m []Element) (*Accumulator, error)

WithElements initializes a new accumulator prefilled with entries Each member is assumed to be hashed V = prod(y + α) * V0, for all y∈ Y_V

type Coefficient

type Coefficient curves.Point

Coefficient is a point

type Delta

type Delta struct {
	// contains filtered or unexported fields
}

Delta contains values d and p, where d should be the division dA(y)/dD(y) on some value y p should be equal to 1/dD * <Gamma_y, Omega>

func (*Delta) MarshalBinary

func (d *Delta) MarshalBinary() ([]byte, error)

MarshalBinary converts Delta into bytes

func (*Delta) UnmarshalBinary

func (d *Delta) UnmarshalBinary(data []byte) error

UnmarshalBinary converts data into Delta

type Element

type Element curves.Scalar

type MembershipProof

type MembershipProof struct {
	// contains filtered or unexported fields
}

MembershipProof contains values in the proof to be verified

func (*MembershipProof) Finalize

func (mp *MembershipProof) Finalize(acc *Accumulator, pp *ProofParams, pk *PublicKey, challenge curves.Scalar) *MembershipProofFinal

Finalize computes values in the proof to be verified.

func (MembershipProof) MarshalBinary

func (mp MembershipProof) MarshalBinary() ([]byte, error)

MarshalBinary converts MembershipProof to bytes

func (*MembershipProof) UnmarshalBinary

func (mp *MembershipProof) UnmarshalBinary(data []byte) error

UnmarshalBinary converts bytes to MembershipProof

type MembershipProofCommitting

type MembershipProofCommitting struct {
	// contains filtered or unexported fields
}

MembershipProofCommitting contains value computed in Proof of knowledge and Blinding phases as described in section 7 of https://eprint.iacr.org/2020/777.pdf

func (*MembershipProofCommitting) GenProof

GenProof computes the s values for Fiat-Shamir and return the actual proof to be sent to the verifier given the challenge c.

func (MembershipProofCommitting) GetChallengeBytes

func (mpc MembershipProofCommitting) GetChallengeBytes() []byte

GetChallenge returns bytes that need to be hashed for generating challenge. V || Ec || T_sigma || T_rho || R_E || R_sigma || R_rho || R_delta_sigma || R_delta_rho

func (*MembershipProofCommitting) New

New initiates values of MembershipProofCommitting

type MembershipProofFinal

type MembershipProofFinal struct {
	// contains filtered or unexported fields
}

MembershipProofFinal contains values that are input to Fiat-Shamir Heuristic

func (MembershipProofFinal) GetChallenge

func (m MembershipProofFinal) GetChallenge(curve *curves.PairingCurve) curves.Scalar

GetChallenge computes Fiat-Shamir Heuristic taking input values of MembershipProofFinal

type MembershipWitness

type MembershipWitness struct {
	// contains filtered or unexported fields
}

MembershipWitness contains the witness c and the value y respect to the accumulator state.

func (*MembershipWitness) ApplyDelta

func (mw *MembershipWitness) ApplyDelta(delta *Delta) (*MembershipWitness, error)

ApplyDelta returns C' = dA(y)/dD(y)*C + 1/dD(y) * <Gamma_y, Omega> according to the witness update protocol described in section 4 of https://eprint.iacr.org/2020/777.pdf

func (*MembershipWitness) BatchUpdate

func (mw *MembershipWitness) BatchUpdate(additions []Element, deletions []Element, coefficients []Coefficient) (*MembershipWitness, error)

BatchUpdate performs batch update as described in section 4

func (MembershipWitness) MarshalBinary

func (mw MembershipWitness) MarshalBinary() ([]byte, error)

MarshalBinary converts a membership witness to bytes

func (*MembershipWitness) MultiBatchUpdate

func (mw *MembershipWitness) MultiBatchUpdate(A [][]Element, D [][]Element, C [][]Coefficient) (*MembershipWitness, error)

MultiBatchUpdate performs multi-batch update using epoch as described in section 4.2

func (*MembershipWitness) New

New creates a new membership witness

func (*MembershipWitness) UnmarshalBinary

func (mw *MembershipWitness) UnmarshalBinary(data []byte) error

UnmarshalBinary converts bytes into MembershipWitness

func (MembershipWitness) Verify

func (mw MembershipWitness) Verify(pk *PublicKey, acc *Accumulator) error

Verify the MembershipWitness mw is a valid witness as per section 4 in <https://eprint.iacr.org/2020/777>

type ProofParams

type ProofParams struct {
	// contains filtered or unexported fields
}

ProofParams contains four distinct public generators of G1 - X, Y, Z

func (*ProofParams) MarshalBinary

func (p *ProofParams) MarshalBinary() ([]byte, error)

MarshalBinary converts ProofParams to bytes

func (*ProofParams) New

func (p *ProofParams) New(curve *curves.PairingCurve, pk *PublicKey, entropy []byte) (*ProofParams, error)

New samples X, Y, Z, K

func (*ProofParams) UnmarshalBinary

func (p *ProofParams) UnmarshalBinary(data []byte) error

UnmarshalBinary converts bytes to ProofParams

type PublicKey

type PublicKey struct {
	// contains filtered or unexported fields
}

PublicKey is the public key of accumulator, it should be sk * generator of G2

func (PublicKey) MarshalBinary

func (pk PublicKey) MarshalBinary() ([]byte, error)

MarshalBinary converts PublicKey to bytes

func (*PublicKey) UnmarshalBinary

func (pk *PublicKey) UnmarshalBinary(data []byte) error

UnmarshalBinary sets PublicKey from bytes

type SecretKey

type SecretKey struct {
	// contains filtered or unexported fields
}

SecretKey is the secret alpha only held by the accumulator manager.

func (SecretKey) BatchAdditions

func (sk SecretKey) BatchAdditions(additions []Element) (Element, error)

BatchAdditions computes product(y + sk) for y in additions and output the product

func (SecretKey) BatchDeletions

func (sk SecretKey) BatchDeletions(deletions []Element) (Element, error)

BatchDeletions computes 1/product(y + sk) for y in deletions and output it

func (SecretKey) CreateCoefficients

func (sk SecretKey) CreateCoefficients(additions []Element, deletions []Element) ([]Element, error)

CreateCoefficients creates the Batch Polynomial coefficients See page 7 of https://eprint.iacr.org/2020/777.pdf

func (SecretKey) GetPublicKey

func (sk SecretKey) GetPublicKey(curve *curves.PairingCurve) (*PublicKey, error)

GetPublicKey creates a public key from SecretKey sk

func (SecretKey) MarshalBinary

func (sk SecretKey) MarshalBinary() ([]byte, error)

MarshalBinary converts SecretKey to bytes

func (*SecretKey) New

func (sk *SecretKey) New(curve *curves.PairingCurve, seed []byte) (*SecretKey, error)

New creates a new secret key from the seed.

func (*SecretKey) UnmarshalBinary

func (sk *SecretKey) UnmarshalBinary(data []byte) error

UnmarshalBinary sets SecretKey from bytes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL