Documentation ¶
Overview ¶
Package pvss implements a PVSS backed commit-reveal scheme loosely based on the Scalable Randomness Attested by Public Entities protocol by Casudo and David.
In practice this implementation omits the things that make SCRAPE scalable/fast, and is just a consensus backed PVSS based beacon. The differences are as follows:
The coding theory based share verification mechanism is not implemented. The check is as in Schoenmakers' paper. This could be added at a future date for a performance gain.
The commit/reveal based fast path that skips having to recover each participant's secret if they submitted a protocol level reveal is omitted. It is possible to game the system by publishing shares for one secret and a commitment for another secret, and then choosing to reveal or not after everyone else has revealed. While this behavior is detectable, it either involves having to recover the secret from the shares anyway rendering the optimization moot, or having a userbase that understands that slashing is integral to the security of the system.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CommitState ¶
type CommitState struct { Commit *Commit `json:"commit"` }
CommitState is a PVSS commit and the corresponding decrypted share, if any.
type Point ¶
type Point struct {
// contains filtered or unexported fields
}
Point is an elliptic curve point.
func (Point) MarshalBinary ¶
MarshalBinary implements the encoding.BinaryMarshaler interface.
func (*Point) MarshalText ¶
MarshalText encodes a point into text form.
func (*Point) UnmarshalBinary ¶
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface.
func (*Point) UnmarshalText ¶
UnmarshalText decodes a text marshaled point.
type PubVerShare ¶
type PubVerShare struct {}
PubVerShare is a public verifiable share (`pvss.PubVerShare`)
type Scalar ¶
type Scalar struct {
// contains filtered or unexported fields
}
Scalar is a scalar.
func (Scalar) MarshalBinary ¶
MarshalBinary implements the encoding.BinaryMarshaler interface.
func (*Scalar) UnmarshalBinary ¶
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface.