dkg

package
v1.21.0 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ThresholdSigner

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

ThresholdSigner is created from GJKR group Member when DKG protocol completed successfully and each group member is ready to sign. ThresholdSigner contains its own private key share of group public key that should never be publicly revealed. It also contains group's public key and ID of GJKR Member represented by this ThresholdSigner instance.

func ExecuteDKG

func ExecuteDKG(
	logger log.StandardLogger,
	seed *big.Int,
	memberIndex group.MemberIndex,
	startBlockHeight uint64,
	beaconChain beaconchain.Interface,
	channel net.BroadcastChannel,
	membershipValidator *group.MembershipValidator,
	selectedOperators []chain.Address,
) (*ThresholdSigner, error)

ExecuteDKG runs the full distributed key generation lifecycle.

func NewThresholdSigner

func NewThresholdSigner(
	memberIndex group.MemberIndex,
	groupPublicKey *bn256.G2,
	groupPrivateKeyShare *big.Int,
	groupPublicKeyShares map[group.MemberIndex]*bn256.G2,
	groupOperators []chain.Address,
) *ThresholdSigner

NewThresholdSigner returns a new ThresholdSigner

func (*ThresholdSigner) CalculateSignatureShare

func (ts *ThresholdSigner) CalculateSignatureShare(message *bn256.G1) *bn256.G1

CalculateSignatureShare takes the message and calculates signer's signature share over that message.

func (*ThresholdSigner) CompleteSignature

func (ts *ThresholdSigner) CompleteSignature(
	signatureShares []*bls.SignatureShare,
	honestThreshold int,
) (*bn256.G1, error)

CompleteSignature accepts signature shares from all group threshold signers and produces a final group signature from them. Input slice should contain signature of the current signer as well. We parameterize the threshold (number of honest members we require), as we recover a threshold signature, not an aggregate signature (one which would require all members).

func (*ThresholdSigner) GroupOperators

func (ts *ThresholdSigner) GroupOperators() []chain.Address

GroupOperators returns operators being members of the group.

func (*ThresholdSigner) GroupPublicKeyBytes

func (ts *ThresholdSigner) GroupPublicKeyBytes() []byte

GroupPublicKeyBytes returns group public key bytes in an uncompressed form.

func (*ThresholdSigner) GroupPublicKeyBytesCompressed

func (ts *ThresholdSigner) GroupPublicKeyBytesCompressed() []byte

GroupPublicKeyBytesCompressed returns group public key bytes in a compressed form.

func (*ThresholdSigner) GroupPublicKeyShares

func (ts *ThresholdSigner) GroupPublicKeyShares() map[group.MemberIndex]*bn256.G2

GroupPublicKeyShares returns group public key shares for each individual member of the group.

func (*ThresholdSigner) Marshal

func (ts *ThresholdSigner) Marshal() ([]byte, error)

Marshal converts ThresholdSigner to byte array.

func (*ThresholdSigner) MemberID

func (ts *ThresholdSigner) MemberID() group.MemberIndex

MemberID returns GJKR MemberID represented by this ThresholdSigner.

func (*ThresholdSigner) Unmarshal

func (ts *ThresholdSigner) Unmarshal(bytes []byte) error

Unmarshal converts a byte array back to ThresholdSigner.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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