Documentation ¶
Overview ¶
Package validator is a generated protocol buffer package.
It is generated from these files:
validator.proto
It has these top-level messages:
Validator
Index ¶
- Variables
- func Add(vs ReaderWriter, vsOther Iterable) (err error)
- func AddPower(vs ReaderWriter, id crypto.PublicKey, power *big.Int) error
- func Alter(vs Writer, vsOther Iterable) (err error)
- func Subtract(vs ReaderWriter, vsOther Iterable) (err error)
- func SubtractPower(vs ReaderWriter, id crypto.PublicKey, power *big.Int) error
- type Iterable
- type IterableReader
- type IterableReaderWriter
- type PersistedRing
- type Reader
- type ReaderWriter
- type Ring
- func (vc *Ring) AlterPower(id crypto.PublicKey, power *big.Int) (*big.Int, error)
- func (vc *Ring) Cum() *Set
- func (vc *Ring) CurrentSet() *Set
- func (vc *Ring) Equal(vwOther *Ring) bool
- func (vc *Ring) Flow(id crypto.PublicKey, power *big.Int) *big.Int
- func (vc *Ring) Head() *Set
- func (vc *Ring) MaxFlow() *big.Int
- func (vc *Ring) Next() *Set
- func (vc *Ring) OrderedBuckets() (delta, cum []*Set)
- func (vc *Ring) Persistable() PersistedRing
- func (vc *Ring) Power(id crypto.PublicKey) *big.Int
- func (vc *Ring) PowerAt(index int64, id crypto.PublicKey) *big.Int
- func (vc *Ring) PreviousSet() *Set
- func (vc *Ring) Resultant(index int64) *Set
- func (vc *Ring) Rotate() (totalPowerChange *big.Int, totalFlow *big.Int, err error)
- func (vc *Ring) Size() int64
- func (vc *Ring) String() string
- func (vc *Ring) TotalPower() *big.Int
- type Set
- func (vs *Set) AlterPower(id crypto.PublicKey, power *big.Int) (flow *big.Int, err error)
- func (vs *Set) ChangePower(id crypto.PublicKey, power *big.Int) *big.Int
- func (vs *Set) Count() int
- func (vs *Set) CountNonZero() int
- func (vs *Set) Equal(vsOther *Set) bool
- func (vs *Set) Iterate(iter func(id crypto.Addressable, power *big.Int) (stop bool)) (stopped bool)
- func (vs *Set) MaybePower(id crypto.PublicKey) *big.Int
- func (vs *Set) Power(id crypto.PublicKey) *big.Int
- func (vs *Set) String() string
- func (vs *Set) Strings() string
- func (vs *Set) TotalPower() *big.Int
- func (vs *Set) Validators() []*Validator
- type Validator
- func (*Validator) Descriptor() ([]byte, []int)
- func (v Validator) FillAddress()
- func (m *Validator) GetPower() uint64
- func (m *Validator) GetPublicKey() crypto.PublicKey
- func (m *Validator) Marshal() (dAtA []byte, err error)
- func (m *Validator) MarshalTo(dAtA []byte) (int, error)
- func (*Validator) ProtoMessage()
- func (m *Validator) Reset()
- func (m *Validator) Size() (n int)
- func (v Validator) String() string
- func (m *Validator) Unmarshal(dAtA []byte) error
- func (*Validator) XXX_MessageName() string
- type Writer
- type WriterFunc
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidLengthValidator = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowValidator = fmt.Errorf("proto: integer overflow") )
Functions ¶
func Subtract ¶
func Subtract(vs ReaderWriter, vsOther Iterable) (err error)
Subtracts vsOther from vs
func SubtractPower ¶
Types ¶
type IterableReader ¶
type IterableReaderWriter ¶
type IterableReaderWriter interface { ReaderWriter Iterable }
type PersistedRing ¶
type ReaderWriter ¶
type Ring ¶
type Ring struct {
// contains filtered or unexported fields
}
func UnpersistRing ¶
func UnpersistRing(pc PersistedRing) *Ring
func (*Ring) AlterPower ¶
Updates the current head bucket (accumulator) with some safety checks
func (*Ring) CurrentSet ¶
func (*Ring) Flow ¶
Returns the flow that would be induced by a validator change by comparing the head accumulater with the current set
func (*Ring) MaxFlow ¶
To ensure that in the maximum valildator shift at least one unit of validator power in the intersection of last block validators and this block validators must have at least one non-byzantine validator who can tell you if you've been lied to about the validator set So need at most ceiling((Total Power)/3) - 1, in integer division we have ceiling(X*p/q) = (p(X+1)-1)/q For p = 1 just X/q So we want (Total Power)/3 - 1
func (*Ring) OrderedBuckets ¶
Returns buckets in order head, previous, ...
func (*Ring) Persistable ¶
func (vc *Ring) Persistable() PersistedRing
func (*Ring) PowerAt ¶
Implement Reader Get power at index from the delta bucket then falling through to the cumulative
func (*Ring) PreviousSet ¶
func (*Ring) Rotate ¶
Advance the current head bucket to the next bucket and returns the change in total power between the previous bucket and the current head, and the total flow which is the sum of absolute values of all changes each validator's power after rotation the next head is a copy of the current head
func (*Ring) Size ¶
Get the number of buckets in the ring (use Current().Count() to get the current number of validators)
func (*Ring) TotalPower ¶
type Set ¶
type Set struct {
// contains filtered or unexported fields
}
A Validator multiset - can be used to capture the global state of validators or as an accumulator each block
func NewSet ¶
func NewSet() *Set
Create a new Validators which can act as an accumulator for validator power changes
func NewTrimSet ¶
func NewTrimSet() *Set
Like Set but removes entries when power is set to 0 this make Count() == CountNonZero() and prevents a set from leaking but does mean that a zero will not be iterated over when performing an update which is necessary in Ring
func UnpersistSet ¶
func (*Set) AlterPower ¶
Implements Writer, but will never error
func (*Set) ChangePower ¶
Add the power of a validator and returns the flow into that validator
func (*Set) CountNonZero ¶
func (*Set) MaybePower ¶
Returns the power of id but only if it is set
func (*Set) TotalPower ¶
func (*Set) Validators ¶
type Validator ¶
type Validator struct { Address *github_com_hyperledger_burrow_crypto.Address `protobuf:"bytes,1,opt,name=Address,proto3,customtype=github.com/hyperledger/burrow/crypto.Address" json:"Address,omitempty"` PublicKey crypto.PublicKey `protobuf:"bytes,2,opt,name=PublicKey" json:"PublicKey"` Power uint64 `protobuf:"varint,3,opt,name=Power,proto3" json:"Power,omitempty"` }
func (*Validator) Descriptor ¶
func (Validator) FillAddress ¶
func (v Validator) FillAddress()
func (*Validator) GetPublicKey ¶
func (*Validator) ProtoMessage ¶
func (*Validator) ProtoMessage()
func (*Validator) XXX_MessageName ¶
type WriterFunc ¶
func SyncWriter ¶
func SyncWriter(locker sync.Locker, writerFunc WriterFunc) WriterFunc