Documentation ¶
Overview ¶
Package insolar contains common definitions used by other modules.
Index ¶
- Constants
- Variables
- func Deserialize(data []byte, to interface{}) error
- func MustDeserialize(data []byte, to interface{})
- func MustSerialize(o interface{}) []byte
- func Serialize(o interface{}) ([]byte, error)
- type APIRunner
- type Arguments
- type AuthorizationCertificate
- type CallMode
- type Certificate
- type CertificateGetter
- type CertificateManager
- type ContractConstructor
- type ContractConstructors
- type ContractMethod
- type ContractMethods
- type ContractRequester
- type ContractWrapper
- type CryptographyService
- type DiscoveryNode
- type DiscoveryNodeRegister
- type DynamicRole
- type Entropy
- func (entropy Entropy) Compare(other Entropy) int
- func (entropy Entropy) Equal(other Entropy) bool
- func (entropy Entropy) Marshal() ([]byte, error)
- func (entropy Entropy) MarshalTo(data []byte) (int, error)
- func (entropy Entropy) Size() int
- func (entropy *Entropy) Unmarshal(data []byte) error
- func (entropy *Entropy) UnmarshalJSON(data []byte) error
- type GenesisContractState
- type GenesisContractsConfig
- type GenesisHeavyConfig
- type GlobuleID
- type Hasher
- type HealthChecker
- type ID
- type JetID
- func (id *JetID) DebugString() string
- func (id JetID) Depth() uint8
- func (id *JetID) Equal(other JetID) bool
- func (id JetID) IsEmpty() bool
- func (id *JetID) IsValid() bool
- func (id JetID) Marshal() ([]byte, error)
- func (id *JetID) MarshalTo(data []byte) (n int, err error)
- func (id JetID) Prefix() []byte
- func (id *JetID) Size() int
- func (id *JetID) Unmarshal(data []byte) error
- type JetIDCollection
- type KeyProcessor
- type KeyStore
- type LeaveApproved
- type Leaver
- type LogFormat
- type LogLevel
- type Logger
- type LogicCallContext
- type LogicRunner
- type MachineLogicExecutor
- type MachineType
- type Message
- type MessageSignature
- type MessageType
- type NetworkNode
- type NetworkState
- type NetworkStatus
- type Node
- type NodeMeta
- type NodeState
- type Parcel
- type Payload
- type PendingState
- type PlatformCryptographyScheme
- type Power
- type Pulse
- type PulseDistributor
- type PulseManager
- type PulseNumber
- type PulseRange
- type PulseSenderConfirmation
- type Reference
- type Reply
- type ReplyType
- type ShortNodeID
- type Signature
- type Signer
- type StaticRole
- type StatusReply
- type TerminationHandler
- type Verifier
Constants ¶
const ( // GenesisNameRootDomain is the name of root domain contract for genesis record. GenesisNameRootDomain = "rootdomain" // GenesisNameNodeDomain is the name of node domain contract for genesis record. GenesisNameNodeDomain = "nodedomain" // GenesisNameNodeRecord is the name of node contract for genesis record. GenesisNameNodeRecord = "noderecord" // GenesisNameMember is the name of member contract for genesis record. GenesisNameMember = "member" // GenesisNameWallet is the name of wallet contract for genesis record. GenesisNameWallet = "wallet" // GenesisNameAccount is the name of wallet contract for genesis record. GenesisNameAccount = "account" // GenesisNameDeposit is the name of deposit contract for genesis record. GenesisNameDeposit = "deposit" // GenesisNameCostCenter is the name of cost center contract for genesis record. GenesisNameCostCenter = "costcenter" // GenesisNameMigrationAdmin is the name of migration admin contract for genesis record. GenesisNameMigrationAdmin = "migrationadmin" // GenesisNameMigrationAdmin is the name of migration daemon contract,which is associated with MigrationDaemonMember for genesis record. GenesisNameMigrationDaemon = "migrationdaemon" // GenesisNamePKShard is the name of public key shard contract for genesis record. GenesisNamePKShard = "pkshard" // GenesisNameMigrationShard is the name of migration address shard contract for genesis record. GenesisNameMigrationShard = "migrationshard" GenesisNameRootMember = "root" + GenesisNameMember GenesisNameRootWallet = "root" + GenesisNameWallet GenesisNameRootAccount = "root" + GenesisNameAccount GenesisNameMigrationAdminMember = "migration" + GenesisNameMember GenesisNameMigrationAdminWallet = "migration" + GenesisNameWallet GenesisNameMigrationAdminAccount = "migration" + GenesisNameAccount GenesisNameMigrationAdminDeposit = "migration" + GenesisNameDeposit GenesisNameFeeMember = "fee" + GenesisNameMember GenesisNameFeeWallet = "fee" + GenesisNameWallet GenesisNameFeeAccount = "fee" + GenesisNameAccount GenesisNameEnterpriseMember = "enterprise" + GenesisNameMember GenesisNameEnterpriseWallet = "enterprise" + GenesisNameWallet GenesisNameEnterpriseAccount = "enterprise" + GenesisNameAccount GenesisNameEnterpriseDeposit = "enterprise" + GenesisNameDeposit GenesisAmountMigrationDaemonMembers = 10 GenesisAmountActiveMigrationDaemonMembers = 3 GenesisAmountPublicKeyShards = 10 GenesisAmountMigrationAddressShards = 10 GenesisAmountNetworkIncentivesMembers = 40 GenesisAmountApplicationIncentivesMembers = 40 GenesisAmountFoundationMembers = 14 DefaultDistributionAmount = "10000000000000000000" )
const ( // JetSize is a Jet's size (depth+prefix). JetSize = RecordIDSize - PulseNumberSize // JetPrefixSize is a Jet's prefix size. JetPrefixSize = JetSize - 1 // JetMaximumDepth is a Jet's maximum depth (maximum offset in bits). JetMaximumDepth = JetPrefixSize*8 - 1 // JetDepthPosition is an position where depth of jet id is located JetDepthPosition = 0 // JetPrefixOffset is an offset where prefix starts in jet id. JetPrefixOffset = JetDepthPosition + 1 )
const ( StaticRoleUnknown = StaticRole(iota) StaticRoleVirtual StaticRoleHeavyMaterial StaticRoleLightMaterial )
const ( // PulseNumberSize is alias that was left for compatibility PulseNumberSize = pulse.NumberSize // EntropySize declares the number of bytes in the pulse entropy EntropySize = 64 // OriginIDSize declares the number of bytes in the origin id OriginIDSize = 16 )
const ( InvalidPulseEpoch int = 0 EphemeralPulseEpoch = InvalidPulseEpoch + 1 )
const ( // RecordHashSize is a record hash size. We use 224-bit SHA-3 hash (28 bytes). RecordHashSize = 28 // RecordIDSize is relative record address. RecordIDSize = PulseNumberSize + RecordHashSize // RecordHashOffset is a offset where hash bytes starts in ID. RecordHashOffset = PulseNumberSize // RecordRefSize is absolute records address (including domain ID). RecordRefSize = RecordIDSize * 2 // RecordRefIDSeparator is character that separates ID from DomainID in serialized Reference. RecordRefIDSeparator = "." )
const ( // DynamicRoleUndefined is used for special cases. DynamicRoleUndefined = DynamicRole(iota) // DynamicRoleVirtualExecutor is responsible for current pulse CPU operations. DynamicRoleVirtualExecutor // DynamicRoleVirtualValidator is responsible for previous pulse CPU operations. DynamicRoleVirtualValidator // DynamicRoleLightExecutor is responsible for current pulse Disk operations. DynamicRoleLightExecutor // DynamicRoleLightValidator is responsible for previous pulse Disk operations. DynamicRoleLightValidator // DynamicRoleHeavyExecutor is responsible for permanent Disk operations. DynamicRoleHeavyExecutor )
const (
ShortNodeIDSize = 4
)
Variables ¶
var ( // ErrUnknown is returned when error type cannot be defined. ErrUnknown = errors.New("unknown error") // ErrDeactivated is returned when requested object is deactivated. ErrDeactivated = errors.New("object is deactivated") // ErrStateNotAvailable is returned when requested object is deactivated. ErrStateNotAvailable = errors.New("object state is not available") // ErrHotDataTimeout is returned when no hot data received for a specific jet ErrHotDataTimeout = errors.New("requests were abandoned due to hot-data timeout") // ErrNoPendingRequest is returned when there are no pending requests on current LME ErrNoPendingRequest = errors.New("no pending requests are available") // ErrNotFound is returned when something not found ErrNotFound = errors.New("not found") // ErrTooManyPendingRequests is returned when a limit of pending requests has been reached on a current LME ErrTooManyPendingRequests = errors.New("the limit of pending requests count has been reached") )
var AllStaticRoles = []StaticRole{ StaticRoleVirtual, StaticRoleLightMaterial, StaticRoleHeavyMaterial, }
AllStaticRoles is an array of all possible StaticRoles.
var EphemeralPulse = &Pulse{ PulseNumber: pulse.MinTimePulse, Entropy: [EntropySize]byte{}, EpochPulseNumber: EphemeralPulseEpoch, PulseTimestamp: pulse.UnixTimeOfMinTimePulse, }
EphemeralPulse is used for discovery network bootstrap
var GenesisNameApplicationIncentivesAccounts = func() (result [GenesisAmountApplicationIncentivesMembers]string) { for i := 0; i < GenesisAmountApplicationIncentivesMembers; i++ { result[i] = "application_incentives_" + strconv.Itoa(i) + "_" + GenesisNameAccount } return }()
var GenesisNameApplicationIncentivesDeposits = func() (result [GenesisAmountApplicationIncentivesMembers]string) { for i := 0; i < GenesisAmountApplicationIncentivesMembers; i++ { result[i] = "application_incentives_" + strconv.Itoa(i) + "_" + GenesisNameDeposit } return }()
var GenesisNameApplicationIncentivesMembers = func() (result [GenesisAmountApplicationIncentivesMembers]string) { for i := 0; i < GenesisAmountApplicationIncentivesMembers; i++ { result[i] = "application_incentives_" + strconv.Itoa(i) + "_" + GenesisNameMember } return }()
var GenesisNameApplicationIncentivesWallets = func() (result [GenesisAmountApplicationIncentivesMembers]string) { for i := 0; i < GenesisAmountApplicationIncentivesMembers; i++ { result[i] = "application_incentives_" + strconv.Itoa(i) + "_" + GenesisNameWallet } return }()
var GenesisNameFoundationAccounts = func() (result [GenesisAmountFoundationMembers]string) { for i := 0; i < GenesisAmountFoundationMembers; i++ { result[i] = "foundation_" + strconv.Itoa(i) + "_" + GenesisNameAccount } return }()
var GenesisNameFoundationDeposits = func() (result [GenesisAmountFoundationMembers]string) { for i := 0; i < GenesisAmountFoundationMembers; i++ { result[i] = "foundation_" + strconv.Itoa(i) + "_" + GenesisNameDeposit } return }()
var GenesisNameFoundationMembers = func() (result [GenesisAmountFoundationMembers]string) { for i := 0; i < GenesisAmountFoundationMembers; i++ { result[i] = "foundation_" + strconv.Itoa(i) + "_" + GenesisNameMember } return }()
var GenesisNameFoundationWallets = func() (result [GenesisAmountFoundationMembers]string) { for i := 0; i < GenesisAmountFoundationMembers; i++ { result[i] = "foundation_" + strconv.Itoa(i) + "_" + GenesisNameWallet } return }()
var GenesisNameMigrationAddressShards = func() (result [GenesisAmountMigrationAddressShards]string) { for i := 0; i < GenesisAmountMigrationAddressShards; i++ { result[i] = GenesisNameMigrationShard + "_" + strconv.Itoa(i) } return }()
var GenesisNameMigrationDaemonMembers = func() (result [GenesisAmountMigrationDaemonMembers]string) { for i := 0; i < GenesisAmountMigrationDaemonMembers; i++ { result[i] = "migration_daemon_" + strconv.Itoa(i) + "_" + GenesisNameMember } return }()
var GenesisNameMigrationDaemons = func() (result [GenesisAmountMigrationDaemonMembers]string) { for i := 0; i < GenesisAmountMigrationDaemonMembers; i++ { result[i] = GenesisNameMigrationDaemon + "_" + strconv.Itoa(i) } return }()
var GenesisNameNetworkIncentivesAccounts = func() (result [GenesisAmountNetworkIncentivesMembers]string) { for i := 0; i < GenesisAmountNetworkIncentivesMembers; i++ { result[i] = "network_incentives_" + strconv.Itoa(i) + "_" + GenesisNameAccount } return }()
var GenesisNameNetworkIncentivesDeposits = func() (result [GenesisAmountNetworkIncentivesMembers]string) { for i := 0; i < GenesisAmountNetworkIncentivesMembers; i++ { result[i] = "network_incentives_" + strconv.Itoa(i) + "_" + GenesisNameDeposit } return }()
var GenesisNameNetworkIncentivesMembers = func() (result [GenesisAmountNetworkIncentivesMembers]string) { for i := 0; i < GenesisAmountNetworkIncentivesMembers; i++ { result[i] = "network_incentives_" + strconv.Itoa(i) + "_" + GenesisNameMember } return }()
var GenesisNameNetworkIncentivesWallets = func() (result [GenesisAmountNetworkIncentivesMembers]string) { for i := 0; i < GenesisAmountNetworkIncentivesMembers; i++ { result[i] = "network_incentives_" + strconv.Itoa(i) + "_" + GenesisNameWallet } return }()
var GenesisNamePublicKeyShards = func() (result [GenesisAmountPublicKeyShards]string) { for i := 0; i < GenesisAmountPublicKeyShards; i++ { result[i] = GenesisNamePKShard + "_" + strconv.Itoa(i) } return }()
var GenesisPulse = &Pulse{ PulseNumber: pulse.MinTimePulse, Entropy: [EntropySize]byte{}, EpochPulseNumber: pulse.MinTimePulse, PulseTimestamp: pulse.UnixTimeOfMinTimePulse, }
GenesisPulse is a first pulse for the system because first 2 bits of pulse number and first 65536 pulses a are used by system needs and pulse numbers are related to the seconds of Unix time for calculation pulse numbers we use the formula = unix.Now() - firstPulseDate + 65536
var GenesisRecord genesisBinary = []byte{0xAC}
GenesisRecord is initial chain record.
var RootModule = "github.com/insolar/insolar"
var ZeroJetID = *NewJetID(0, nil)
ZeroJetID is value of an empty Jet ID
Functions ¶
func Deserialize ¶
Deserialize deserializes data to specific interface
func MustDeserialize ¶
func MustDeserialize(data []byte, to interface{})
MustDeserialize deserializes data to specific interface, panics on error.
func MustSerialize ¶
func MustSerialize(o interface{}) []byte
MustSerialize serializes interface, panics on error.
Types ¶
type Arguments ¶
type Arguments []byte
Arguments is a dedicated type for arguments, that represented as binary cbored blob
func (*Arguments) MarshalJSON ¶
MarshalJSON uncbor Arguments slice recursively
type AuthorizationCertificate ¶
type AuthorizationCertificate interface { NodeMeta GetRole() StaticRole SerializeNodePart() []byte GetDiscoverySigns() map[Reference][]byte }
AuthorizationCertificate interface provides methods to manage info about node from it certificate
type Certificate ¶
type Certificate interface { AuthorizationCertificate GetRootDomainReference() *Reference GetDiscoveryNodes() []DiscoveryNode GetMajorityRule() int GetMinRoles() (virtual uint, heavyMaterial uint, lightMaterial uint) }
Certificate interface provides methods to manage keys
type CertificateGetter ¶
type CertificateGetter interface { // GetState returns our current thoughs about whole network GetCert(context.Context, *Reference) (Certificate, error) }
type CertificateManager ¶
type CertificateManager interface {
GetCertificate() Certificate
}
CertificateManager interface provides methods to manage nodes certificate
type ContractConstructor ¶
ContractConstructor is a typedef of typical contract constructor
type ContractConstructors ¶
type ContractConstructors map[string]ContractConstructor
ContractConstructors maps name to contract constructor
type ContractMethod ¶
ContractConstructor is a typedef for wrapper contract header
type ContractMethods ¶
type ContractMethods map[string]ContractMethod
ContractMethods maps name to contract method
type ContractRequester ¶
type ContractRequester interface { SendRequest(ctx context.Context, msg Payload) (Reply, *Reference, error) Call(ctx context.Context, ref *Reference, method string, argsIn []interface{}, pulse PulseNumber) (Reply, *Reference, error) }
ContractRequester is the global contract requester handler. Other system parts communicate with contract requester through it.
type ContractWrapper ¶
type ContractWrapper struct { GetCode ContractMethod GetPrototype ContractMethod Methods ContractMethods Constructors ContractConstructors }
ContractWrapper stores all needed about contract wrapper (it's methods/constructors)
type CryptographyService ¶
type DiscoveryNode ¶
type DiscoveryNode interface { NodeMeta GetRole() StaticRole GetHost() string }
type DiscoveryNodeRegister ¶
DiscoveryNodeRegister carries data required for registering discovery node via genesis.
type DynamicRole ¶
type DynamicRole int
DynamicRole is number representing a node role.
func (DynamicRole) IsVirtualRole ¶
func (r DynamicRole) IsVirtualRole() bool
IsVirtualRole checks if node role is virtual (validator or executor).
func (DynamicRole) String ¶
func (i DynamicRole) String() string
type Entropy ¶
type Entropy [EntropySize]byte
Entropy is 64 random bytes used in every pseudo-random calculations.
func (*Entropy) UnmarshalJSON ¶
type GenesisContractState ¶
GenesisContractState carries data required for contract object creation via genesis.
type GenesisContractsConfig ¶
type GenesisContractsConfig struct { RootBalance string MDBalance string RootPublicKey string FeePublicKey string FundsAndEnterprisePublicKey string MigrationAdminPublicKey string MigrationDaemonPublicKeys []string VestingPeriodInPulses int64 LoсkupPeriodInPulses int64 VestingStepInPulses int64 MigrationAddresses [GenesisAmountMigrationAddressShards][]string NetworkIncentivesPublicKeys []string ApplicationIncentivesPublicKeys []string FoundationPublicKeys []string }
GenesisContractsConfig carries data required for contract object initialization via genesis.
type GenesisHeavyConfig ¶
type GenesisHeavyConfig struct { // DiscoveryNodes is the list with discovery node info. DiscoveryNodes []DiscoveryNodeRegister ContractsConfig GenesisContractsConfig // Skip is flag for skipping genesis on heavy node. Useful for some test cases. Skip bool }
GenesisHeavyConfig carries data required for initial genesis on heavy node.
type HealthChecker ¶
type HealthChecker interface { // IsAlive returns true if todo: fix requirements IsAlive() bool }
HealthChecker interface provides method to check network health
type ID ¶
ID is a unified record ID
func NewEmptyID ¶
func NewEmptyID() *ID
func NewIDFromBase58 ¶
NewIDFromBase58 deserializes ID from base58 encoded string
type JetID ¶
type JetID ID
JetID should be used, when id is a jetID
func (*JetID) DebugString ¶
DebugString prints JetID in human readable form.
type JetIDCollection ¶
type JetIDCollection []JetID
func (JetIDCollection) DebugString ¶
func (ids JetIDCollection) DebugString() string
type KeyProcessor ¶
type KeyProcessor interface { GeneratePrivateKey() (crypto.PrivateKey, error) ExtractPublicKey(crypto.PrivateKey) crypto.PublicKey ExportPublicKeyPEM(crypto.PublicKey) ([]byte, error) ImportPublicKeyPEM([]byte) (crypto.PublicKey, error) ExportPrivateKeyPEM(crypto.PrivateKey) ([]byte, error) ImportPrivateKeyPEM([]byte) (crypto.PrivateKey, error) ExportPublicKeyBinary(crypto.PublicKey) ([]byte, error) ImportPublicKeyBinary([]byte) (crypto.PublicKey, error) }
type LeaveApproved ¶
type LeaveApproved struct{}
type Leaver ¶
type Leaver interface { // Leave notify other nodes that this node want to leave and doesn't want to receive new tasks Leave(ctx context.Context, ETA PulseNumber) }
type LogLevel ¶
type LogLevel uint8
full copy of zerolog functions to work with logging level needed to support logging level in packet
NoLevel means it should be ignored
func ParseLevel ¶
type Logger ¶
type Logger interface { // WithLevel sets log level. WithLevel(string) (Logger, error) // WithLevelNumber sets log level with number WithLevelNumber(level LogLevel) (Logger, error) // WithFormat sets logger output format WithFormat(format LogFormat) (Logger, error) // WithCaller switch on/off 'caller' field computation. WithCaller(flag bool) Logger // WithSkipFrameCount changes skipFrameCount by delta value (it can be negative). WithSkipFrameCount(delta int) Logger // WithFuncName switch on/off 'func' field computation. WithFuncName(flag bool) Logger // Debug logs a message at level Debug. Debug(...interface{}) // Debugf formatted logs a message at level Debug. Debugf(string, ...interface{}) // Info logs a message at level Info. Info(...interface{}) // Infof formatted logs a message at level Info. Infof(string, ...interface{}) // Warn logs a message at level Warn. Warn(...interface{}) // Warnf logs a message at level Warn. Warnf(string, ...interface{}) // Error logs a message at level Error. Error(...interface{}) // Errorf logs a message at level Error. Errorf(string, ...interface{}) // Fatal logs a message at level Fatal and than call os.exit(). Fatal(...interface{}) // Fatalf formatted logs a message at level Fatal and than call os.exit(). Fatalf(string, ...interface{}) // Panic logs a message at level Panic and than call panic(). Panic(...interface{}) // Panicf formatted logs a message at level Panic and than call panic(). Panicf(string, ...interface{}) // SetOutput sets the output destination for the logger. WithOutput(w io.Writer) Logger // WithFields return copy of Logger with predefined fields. WithFields(map[string]interface{}) Logger // WithField return copy of Logger with predefined single field. WithField(string, interface{}) Logger // Is returns if passed log level equal current log level Is(level LogLevel) bool }
Logger is the interface for loggers used in the Insolar components.
type LogicCallContext ¶
type LogicCallContext struct { Mode CallMode // either "execution" or "validation" Request *Reference // reference of incoming request record Callee *Reference // Contract that is called Parent *Reference // Parent of the callee Prototype *Reference // Prototype (base class) of the callee Code *Reference // Code reference of the callee Caller *Reference // Contract that made the call CallerPrototype *Reference // Prototype (base class) of the caller TraceID string // trace mark for Jaegar and friends }
LogicCallContext is a context of contract execution. Everything that is required to implement foundation functions. This struct shouldn't be used in core components.
type LogicRunner ¶
type LogicRunner interface { LRI() OnPulse(context.Context, Pulse, Pulse) error AddUnwantedResponse(ctx context.Context, msg Payload) error }
LogicRunner is an interface that should satisfy logic executor
type MachineLogicExecutor ¶
type MachineLogicExecutor interface { CallMethod( ctx context.Context, callContext *LogicCallContext, code Reference, data []byte, method string, args Arguments, ) ( newObjectState []byte, methodResults Arguments, err error, ) CallConstructor( ctx context.Context, callContext *LogicCallContext, code Reference, name string, args Arguments, ) ( objectState []byte, result Arguments, err error, ) }
MachineLogicExecutor is an interface for implementers of one particular machine type
type MachineType ¶
type MachineType int
MachineType is a type of virtual machine
const ( MachineTypeNotExist = 0 MachineTypeBuiltin MachineType = iota + 1 MachineTypeGoPlugin MachineTypesLastID )
Real constants of MachineType
func (MachineType) Equal ¶
func (m MachineType) Equal(other MachineType) bool
type Message ¶
type Message interface { // Type returns message type. Type() MessageType // GetCaller returns initiator of this event. GetCaller() *Reference // DefaultTarget returns of target of this event. DefaultTarget() *Reference // DefaultRole returns role for this event DefaultRole() DynamicRole // AllowedSenderObjectAndRole extracts information from message // verify sender required to 's "caller" for sender // verification purpose. If nil then check of sender's role is not // provided by the message bus AllowedSenderObjectAndRole() (*Reference, DynamicRole) }
Message is a routable packet, ATM just a method call
type MessageSignature ¶
type NetworkNode ¶
type NetworkNode interface { // ID is the unique identifier of the node ID() Reference // ShortID get short ID of node ShortID() ShortNodeID // Role is the candidate Role for the node Role() StaticRole // PublicKey is the public key of the node PublicKey() crypto.PublicKey // Address is the network address of the node Address() string // GetGlobuleID returns node current globule id GetGlobuleID() GlobuleID // Version of node software Version() string // LeavingETA is pulse number, after which node leave LeavingETA() PulseNumber // GetState get state of the node GetState() NodeState // GetPower get power of node GetPower() Power }
type NetworkState ¶
type NetworkState int
NetworkState type for bootstrapping process
const ( // NoNetworkState state means that nodes doesn`t match majority_rule NoNetworkState NetworkState = iota JoinerBootstrap WaitConsensus WaitMajority WaitMinRoles WaitPulsar CompleteNetworkState )
func (NetworkState) String ¶
func (i NetworkState) String() string
type NetworkStatus ¶
type NetworkStatus interface {
GetNetworkStatus() StatusReply
}
type NodeState ¶
type NodeState uint8
NodeState is the state of the node
const ( // NodeUndefined node started but is not connected to network yet NodeUndefined NodeState = iota // NodeJoining node is in first pulse of discovery bootstrap or is joining to a bootstrapped network NodeJoining // NodeReady node is connected to network NodeReady // NodeLeaving node is about to leave network NodeLeaving )
type Parcel ¶
type Parcel interface { Message MessageSignature Message() Message Context(context.Context) context.Context Pulse() PulseNumber }
Parcel by senders private key.
type PendingState ¶
type PendingState int
PendingState is a state of execution for each object
const ( PendingUnknown PendingState = iota // PendingUnknown signalizes that we don't know about execution state NotPending // NotPending means that we know that this task is not executed by another VE InPending // InPending means that we know that method on object is executed by another VE )
func (PendingState) Equal ¶
func (s PendingState) Equal(other PendingState) bool
type PlatformCryptographyScheme ¶
type PlatformCryptographyScheme interface { PublicKeySize() int SignatureSize() int ReferenceHashSize() int IntegrityHashSize() int ReferenceHasher() Hasher IntegrityHasher() Hasher DataSigner(crypto.PrivateKey, Hasher) Signer DigestSigner(key crypto.PrivateKey) Signer DataVerifier(crypto.PublicKey, Hasher) Verifier DigestVerifier(crypto.PublicKey) Verifier }
type Pulse ¶
type Pulse struct { PulseNumber PulseNumber PrevPulseNumber PulseNumber NextPulseNumber PulseNumber PulseTimestamp int64 EpochPulseNumber int OriginID [OriginIDSize]byte Entropy Entropy Signs map[string]PulseSenderConfirmation }
Pulse is base data structure for a pulse.
type PulseDistributor ¶
type PulseDistributor interface { // Distribute distributes a pulse across the network. Distribute(context.Context, Pulse) }
PulseDistributor is interface for pulse distribution.
type PulseManager ¶
type PulseManager interface { // Set set's new pulse and closes current jet drop. If dry is true, nothing will be saved to storage. Set(ctx context.Context, pulse Pulse) error }
PulseManager provides Ledger's methods related to Pulse.
type PulseNumber ¶
PulseNumber is a sequential number of Pulse. Upper 2 bits are reserved for use in references (scope), must be zero otherwise. Valid Absolute PulseNumber must be >65536. If PulseNumber <65536 it is a relative PulseNumber
func NewPulseNumber ¶
func NewPulseNumber(buf []byte) PulseNumber
NewPulseNumber creates pulse number from bytes.
func NewPulseNumberFromStr ¶
func NewPulseNumberFromStr(pn string) (PulseNumber, error)
type PulseRange ¶
type PulseRange struct { Begin PulseNumber End PulseNumber }
PulseRange represents range of pulses.
func (*PulseRange) String ¶
func (pr *PulseRange) String() string
type PulseSenderConfirmation ¶
type PulseSenderConfirmation struct { PulseNumber PulseNumber ChosenPublicKey string Entropy Entropy Signature []byte }
PulseSenderConfirmation contains confirmations of the pulse from other pulsars Because the system is using BFT for consensus between pulsars, because of it All pulsar send to the chosen pulsar their confirmations Every node in the network can verify the signatures
type Reference ¶
Reference is a unified record reference
func NewEmptyReference ¶
func NewEmptyReference() *Reference
NewEmptyReference returns empty Reference.
func NewGlobalReference ¶
func NewRecordReference ¶ added in v0.9.1
func NewReference ¶
NewReference returns Reference composed from domain and record.
func NewReferenceFromBase58 ¶
NewReferenceFromBase58 deserializes reference from base58 encoded string
func NewReferenceFromBytes ¶
NewReferenceFromBytes : After CBOR Marshal/Unmarshal Ref can be converted to byte slice, this converts it back
type Reply ¶
type Reply interface { // Type returns message type. Type() ReplyType }
Reply for an `Message`
type ShortNodeID ¶
type ShortNodeID uint32 // ZERO is RESERVED
ShortNodeID is the shortened ID of node that is unique inside the globe
const AbsentShortNodeID ShortNodeID = 0
func (ShortNodeID) Equal ¶
func (v ShortNodeID) Equal(other ShortNodeID) bool
func (ShortNodeID) IsAbsent ¶
func (v ShortNodeID) IsAbsent() bool
type Signature ¶
type Signature struct {
// contains filtered or unexported fields
}
func SignatureFromBytes ¶
type StaticRole ¶
type StaticRole uint32
StaticRole holds role of node.
func GetStaticRoleFromString ¶
func GetStaticRoleFromString(role string) StaticRole
GetStaticRoleFromString converts role from string to StaticRole.
func (StaticRole) String ¶
func (nr StaticRole) String() string
type StatusReply ¶
type StatusReply struct { NetworkState NetworkState Origin NetworkNode ActiveListSize int WorkingListSize int // Nodes from active list Nodes []NetworkNode // Pulse from network pulse storage Pulse Pulse Version string Timestamp time.Time // node start timestamp for uptime duration StartTime time.Time }
type TerminationHandler ¶
type TerminationHandler interface { // Leave locks until network accept leaving claim Leave(context.Context, PulseNumber) OnLeaveApproved(context.Context) // Abort forces to stop all node components Abort(reason string) // Terminating is an accessor Terminating() bool }
TerminationHandler handles such node events as graceful stop, abort, etc.
Source Files ¶
- apirunner.go
- certificate.go
- contractrequester.go
- cryptography.go
- doc.go
- dynamicrole_string.go
- errors.go
- genesis.go
- insolar.go
- jet.go
- keystore.go
- logger.go
- messagebus.go
- network.go
- networkstate_string.go
- node.go
- nodenetwork.go
- noderole.go
- nodestate_string.go
- platformpolicy.go
- pulse.go
- record.go
- role.go
- serialization.go
- termination_handler.go
- vm.go
Directories ¶
Path | Synopsis |
---|---|
Package backoff provides an exponential-backoff implementation.
|
Package backoff provides an exponential-backoff implementation. |
Package gen contains functions for generating random base insolar types.
|
Package gen contains functions for generating random base insolar types. |
Package jet provides objects and interfaces for working with Jet objects.
|
Package jet provides objects and interfaces for working with Jet objects. |
Package jetcoordinator is responsible for all jet manipulations.
|
Package jetcoordinator is responsible for all jet manipulations. |
Package node contains node storage
|
Package node contains node storage |
Package Pulse contains Pulse storage.
|
Package Pulse contains Pulse storage. |
Package reply represents responses to messages of the messagebus
|
Package reply represents responses to messages of the messagebus |
Package db contains primitives for storing and indexing data.
|
Package db contains primitives for storing and indexing data. |