Documentation
¶
Index ¶
- Constants
- Variables
- func CheckPartitionSystemIdentifiersUnique[T SystemDescriptionRecordGetter](records []T) error
- func GetMinQuorumThreshold(totalRootValidators uint32) uint32
- func NewValidatorTrustBase(publicKeyInfo []*PublicKeyInfo) (map[string]crypto.Verifier, error)
- func ValidatorInfoUnique(validators []*PublicKeyInfo) error
- type ConsensusParams
- type EvmPartitionParams
- type FeeCreditBill
- type GenesisPartitionRecord
- type GenesisRootRecord
- type MoneyPartitionParams
- type PartitionGenesis
- type PartitionNode
- type PartitionRecord
- func (x *PartitionRecord) GetPartitionNode(id string) *PartitionNode
- func (x *PartitionRecord) GetSystemDescriptionRecord() *SystemDescriptionRecord
- func (x *PartitionRecord) GetSystemIdentifier() []byte
- func (x *PartitionRecord) GetSystemIdentifierString() string
- func (x *PartitionRecord) IsValid() error
- type PublicKeyInfo
- type RootGenesis
- type SystemDescriptionRecord
- func (x *SystemDescriptionRecord) AddToHasher(hasher hash.Hash)
- func (x *SystemDescriptionRecord) GetSystemIdentifier() []byte
- func (x *SystemDescriptionRecord) GetSystemIdentifierString() string
- func (x *SystemDescriptionRecord) Hash(hashAlgorithm gocrypto.Hash) []byte
- func (x *SystemDescriptionRecord) IsValid() error
- type SystemDescriptionRecordGetter
Constants ¶
const ( MinBlockRateMs = 500 DefaultBlockRateMs = 900 MinConsensusTimeout = 2000 DefaultConsensusTimeout = 10000 )
const (
RootRound uint64 = 1
)
Variables ¶
var ( ErrGenesisPartitionRecordIsNil = errors.New("genesis partition record is nil") ErrNodesAreMissing = errors.New("nodes are missing") ErrVerifiersEmpty = errors.New("verifier list is empty") )
var ( ErrRootValidatorsSize = errors.New("registered root nodes do not match consensus total root nodes") ErrGenesisRootIssNil = errors.New("root genesis record is nil") ErrNoRootValidators = errors.New("root nodes not set") ErrConsensusIsNil = errors.New("consensus is nil") )
var ( ErrPartitionGenesisIsNil = errors.New("partition genesis is nil") ErrKeysAreMissing = errors.New("partition keys are missing") ErrMissingRootValidators = errors.New("missing root nodes") ErrPartitionUnicityCertificateIsNil = errors.New("partition unicity certificate is nil") )
var ( ErrPartitionNodeIsNil = errors.New("partition node is nil") ErrNodeIdentifierIsEmpty = errors.New("node identifier is empty") ErrSigningPublicKeyIsInvalid = errors.New("signing public key is invalid") ErrEncryptionPublicKeyIsInvalid = errors.New("encryption public key is invalid") )
var ( ErrValidatorPublicInfoIsEmpty = errors.New("public key info is empty") ErrPubKeyNodeIdentifierIsEmpty = errors.New("public key info node identifier is empty") ErrPubKeyInfoSigningKeyIsInvalid = errors.New("public key info singing key is invalid") ErrPubKeyInfoEncryptionIsInvalid = errors.New("public key info encryption key is invalid") )
var ( ErrConsensusParamsIsNil = errors.New("consensus record is nil") ErrInvalidNumberOfRootValidators = errors.New("invalid number of root nodes") ErrConsensusNotSigned = errors.New("consensus struct is not signed") ErrBlockRateTooSmall = errors.New("block rate too small") ErrUnknownHashAlgorithm = errors.New("unknown hash algorithm") ErrInvalidConsensusTimeout = errors.New("invalid consensus timeout") ErrSignerIsNil = errors.New("signer is nil") ErrRootValidatorInfoMissing = errors.New("missing root node public info") ErrConsensusIsNotSignedByAll = errors.New("consensus is not signed by all root nodes") )
var ( ErrRootGenesisIsNil = errors.New("root genesis is nil") ErrRootGenesisRecordIsNil = errors.New("root genesis record is nil") ErrVerifierIsNil = errors.New("verifier is nil") ErrPartitionsNotFound = errors.New("root genesis has no partitions records") )
var ( ErrSystemDescriptionIsNil = errors.New("system description record is nil") ErrT2TimeoutIsNil = errors.New("t2 timeout is zero") )
Functions ¶
func CheckPartitionSystemIdentifiersUnique ¶ added in v0.1.1
func CheckPartitionSystemIdentifiersUnique[T SystemDescriptionRecordGetter](records []T) error
func GetMinQuorumThreshold ¶ added in v0.1.1
GetMinQuorumThreshold calculates minimal quorum threshold from total number of validators
func NewValidatorTrustBase ¶ added in v0.1.1
func NewValidatorTrustBase(publicKeyInfo []*PublicKeyInfo) (map[string]crypto.Verifier, error)
NewValidatorTrustBase creates a verifier to node id map from public key info using the signing public key.
func ValidatorInfoUnique ¶ added in v0.1.1
func ValidatorInfoUnique(validators []*PublicKeyInfo) error
ValidatorInfoUnique checks for duplicates in the slice, makes sure that there are no validators that share the same id or public key. There is one exception, currently a validator can use the same key for encryption and signing.
Types ¶
type ConsensusParams ¶ added in v0.1.1
type ConsensusParams struct { TotalRootValidators uint32 `json:"total_root_validators,omitempty"` // Number of root validator nodes in the root cluster (1 in case of monolithic root chain) BlockRateMs uint32 `json:"block_rate_ms,omitempty"` // Block rate (round time t3 in monolithic root chain) ConsensusTimeoutMs uint32 `json:"consensus_timeout_ms,omitempty"` // Time to abandon proposal and vote for timeout (only used in distributed implementation) QuorumThreshold uint32 `json:"quorum_threshold,omitempty"` // Optionally define a different, higher quorum threshold (only used for distributed implementation) HashAlgorithm uint32 `json:"hash_algorithm,omitempty"` // Hash algorithm for UnicityTree calculation Signatures map[string][]byte `json:"signatures,omitempty"` // Signed hash of all fields excluding signatures // contains filtered or unexported fields }
func (*ConsensusParams) Bytes ¶ added in v0.1.1
func (x *ConsensusParams) Bytes() []byte
func (*ConsensusParams) IsValid ¶ added in v0.1.1
func (x *ConsensusParams) IsValid() error
type EvmPartitionParams ¶ added in v0.2.0
type FeeCreditBill ¶ added in v0.2.0
type GenesisPartitionRecord ¶
type GenesisPartitionRecord struct { Nodes []*PartitionNode `json:"nodes,omitempty"` Certificate *types.UnicityCertificate `json:"certificate,omitempty"` SystemDescriptionRecord *SystemDescriptionRecord `json:"system_description_record,omitempty"` // contains filtered or unexported fields }
func (*GenesisPartitionRecord) GetSystemDescriptionRecord ¶
func (x *GenesisPartitionRecord) GetSystemDescriptionRecord() *SystemDescriptionRecord
func (*GenesisPartitionRecord) GetSystemIdentifierString ¶
func (x *GenesisPartitionRecord) GetSystemIdentifierString() protocol.SystemIdentifier
type GenesisRootRecord ¶ added in v0.1.1
type GenesisRootRecord struct { RootValidators []*PublicKeyInfo `json:"root_validators,omitempty"` Consensus *ConsensusParams `json:"consensus,omitempty"` // contains filtered or unexported fields }
func (*GenesisRootRecord) FindPubKeyById ¶ added in v0.1.1
func (x *GenesisRootRecord) FindPubKeyById(id string) *PublicKeyInfo
FindPubKeyById returns matching PublicKeyInfo matching node id or nil if not found
func (*GenesisRootRecord) IsValid ¶ added in v0.1.1
func (x *GenesisRootRecord) IsValid() error
IsValid only validates Consensus structure and that it signed by the listed root nodes
func (*GenesisRootRecord) Verify ¶ added in v0.1.1
func (x *GenesisRootRecord) Verify() error
Verify calls IsValid and makes sure that consensus total number of validators matches number of registered root validators and number of signatures in consensus structure
type MoneyPartitionParams ¶
type MoneyPartitionParams struct { InitialBillValue uint64 DcMoneySupplyValue uint64 SystemDescriptionRecords []*SystemDescriptionRecord // contains filtered or unexported fields }
type PartitionGenesis ¶
type PartitionGenesis struct { SystemDescriptionRecord *SystemDescriptionRecord `json:"system_description_record,omitempty"` Certificate *types.UnicityCertificate `json:"certificate,omitempty"` RootValidators []*PublicKeyInfo `json:"root_validators,omitempty"` Keys []*PublicKeyInfo `json:"keys,omitempty"` Params []byte `json:"params,omitempty"` // contains filtered or unexported fields }
func (*PartitionGenesis) FindRootPubKeyInfoById ¶ added in v0.1.1
func (x *PartitionGenesis) FindRootPubKeyInfoById(id string) *PublicKeyInfo
type PartitionNode ¶
type PartitionNode struct { NodeIdentifier string `json:"node_identifier,omitempty"` SigningPublicKey []byte `json:"signing_public_key,omitempty"` EncryptionPublicKey []byte `json:"encryption_public_key,omitempty"` BlockCertificationRequest *certification.BlockCertificationRequest `json:"block_certification_request,omitempty"` T2Timeout uint32 `json:"t2timeout,omitempty"` Params []byte `json:"params,omitempty"` // contains filtered or unexported fields }
func (*PartitionNode) IsValid ¶
func (x *PartitionNode) IsValid() error
type PartitionRecord ¶
type PartitionRecord struct { SystemDescriptionRecord *SystemDescriptionRecord `json:"system_description_record,omitempty"` Validators []*PartitionNode `json:"validators,omitempty"` // contains filtered or unexported fields }
func (*PartitionRecord) GetPartitionNode ¶
func (x *PartitionRecord) GetPartitionNode(id string) *PartitionNode
func (*PartitionRecord) GetSystemDescriptionRecord ¶
func (x *PartitionRecord) GetSystemDescriptionRecord() *SystemDescriptionRecord
func (*PartitionRecord) GetSystemIdentifier ¶
func (x *PartitionRecord) GetSystemIdentifier() []byte
func (*PartitionRecord) GetSystemIdentifierString ¶
func (x *PartitionRecord) GetSystemIdentifierString() string
func (*PartitionRecord) IsValid ¶
func (x *PartitionRecord) IsValid() error
type PublicKeyInfo ¶
type PublicKeyInfo struct { NodeIdentifier string `json:"node_identifier,omitempty"` SigningPublicKey []byte `json:"signing_public_key,omitempty"` EncryptionPublicKey []byte `json:"encryption_public_key,omitempty"` // contains filtered or unexported fields }
func (*PublicKeyInfo) IsValid ¶ added in v0.1.1
func (x *PublicKeyInfo) IsValid() error
IsValid validates that all fields are correctly set and public keys are correct.
type RootGenesis ¶
type RootGenesis struct { Root *GenesisRootRecord `json:"root,omitempty"` Partitions []*GenesisPartitionRecord `json:"partitions,omitempty"` // contains filtered or unexported fields }
func (*RootGenesis) GetPartitionRecords ¶
func (x *RootGenesis) GetPartitionRecords() []*PartitionRecord
func (*RootGenesis) GetRoundHash ¶
func (x *RootGenesis) GetRoundHash() []byte
func (*RootGenesis) GetRoundNumber ¶
func (x *RootGenesis) GetRoundNumber() uint64
func (*RootGenesis) IsValid ¶
func (x *RootGenesis) IsValid() error
IsValid verifies that the genesis file is signed by the generator and that the public key is included
func (*RootGenesis) Verify ¶ added in v0.1.1
func (x *RootGenesis) Verify() error
Verify basically same as IsValid, but verifies that the consensus structure and UC Seals are signed by all root validators
type SystemDescriptionRecord ¶
type SystemDescriptionRecord struct { SystemIdentifier []byte `json:"system_identifier,omitempty"` T2Timeout uint32 `json:"t2timeout,omitempty"` FeeCreditBill *FeeCreditBill `json:"fee_credit_bill,omitempty"` // contains filtered or unexported fields }
func (*SystemDescriptionRecord) AddToHasher ¶
func (x *SystemDescriptionRecord) AddToHasher(hasher hash.Hash)
func (*SystemDescriptionRecord) GetSystemIdentifier ¶
func (x *SystemDescriptionRecord) GetSystemIdentifier() []byte
func (*SystemDescriptionRecord) GetSystemIdentifierString ¶
func (x *SystemDescriptionRecord) GetSystemIdentifierString() string
func (*SystemDescriptionRecord) Hash ¶
func (x *SystemDescriptionRecord) Hash(hashAlgorithm gocrypto.Hash) []byte
func (*SystemDescriptionRecord) IsValid ¶
func (x *SystemDescriptionRecord) IsValid() error
type SystemDescriptionRecordGetter ¶ added in v0.1.1
type SystemDescriptionRecordGetter interface {
GetSystemDescriptionRecord() *SystemDescriptionRecord
}