process

package
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2019 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const MaxHeaderRequestsAllowed = 10
View Source
const MetaBlockFinality = 1
View Source
const ShardBlockFinality = 1

Variables

View Source
var ErrAccountStateDirty = errors.New("accountState was dirty before starting to change")

ErrAccountStateDirty signals that the accounts were modified before starting the current modification

View Source
var ErrBoostrapFromStorage = errors.New("boostrap from storage has been failed")

ErrBoostrapFromStorage signals that boostrap from storage has been failed

View Source
var ErrContainerKeyAlreadyExists = errors.New("provided key already exists in container")

ErrContainerKeyAlreadyExists signals that an element was already set in the container's map

View Source
var ErrCouldNotDecodeUnderlyingBody = errors.New("could not decode InterceptedBlockBody to block.Body")

ErrCouldNotDecodeUnderlyingBody signals that an InterceptedBlockBody could not be decoded to a block.Body using type assertion

View Source
var ErrCrossShardMBWithoutConfirmationFromMeta = errors.New("cross shard miniblock with destination current shard is not confirmed by metachain")

ErrCrossShardMBWithoutConfirmationFromMeta signals that miniblock was not yet notarized by metachain

View Source
var ErrHeaderBodyMismatch = errors.New("body cannot be validated from header data")

ErrHeaderBodyMismatch signals that the header does not attest all data from the block

View Source
var ErrHeaderNotFinal = errors.New("header in metablock is not final")

ErrHeaderNotFinal signals that header is not final and it should be

View Source
var ErrHigherNonceInTransaction = errors.New("higher nonce in transaction")

ErrHigherNonceInTransaction signals the nonce in transaction is higher than the account's nonce

View Source
var ErrInsufficientFunds = errors.New("insufficient funds")

ErrInsufficientFunds signals the funds are insufficient

View Source
var ErrInvalidBlockBodyType = errors.New("invalid block body type")

ErrInvalidBlockBodyType signals that an operation has been attempted with an invalid block body type

View Source
var ErrInvalidBlockHash = errors.New("invalid block hash")

ErrInvalidBlockHash signals the hash of the block is not matching with the previous one

View Source
var ErrInvalidContainerKey = errors.New("element does not exist in container")

ErrInvalidContainerKey signals that an element does not exist in the container's map

View Source
var ErrInvalidDataInput = errors.New("data input is invalid to create key, value storage output")

ErrInvalidDataInput signals that the data input is invalid for parsing

View Source
var ErrInvalidRcvAddr = errors.New("invalid receiver address")

ErrInvalidRcvAddr signals that an operation has been attempted to or with an invalid receiver address

View Source
var ErrInvalidShardId = errors.New("invalid shard id")

ErrInvalidShardId signals that the shard id is invalid

View Source
var ErrInvalidSndAddr = errors.New("invalid sender address")

ErrInvalidSndAddr signals that an operation has been attempted to or with an invalid sender address

View Source
var ErrInvalidTxInPool = errors.New("invalid transaction in the transactions pool")

ErrInvalidTxInPool signals an invalid transaction in the transactions pool

View Source
var ErrLenMismatch = errors.New("lengths mismatch")

ErrLenMismatch signals that 2 or more slices have different lengths

View Source
var ErrLowShardHeaderRound = errors.New("shard header round is lower than last committed for this shard")

ErrLowShardHeaderRound signals that shard header round is too low for processing

View Source
var ErrLowerNonceInTransaction = errors.New("lower nonce in transaction")

ErrLowerNonceInTransaction signals the nonce in transaction is lower than the account's nonce

View Source
var ErrMarshalWithoutSuccess = errors.New("marshal without success")

ErrMarshalWithoutSuccess signals that marshal some data was not done with success

View Source
var ErrMetaBlockNotFinal = errors.New("cannot attest meta blocks finality")

ErrMetaBlockNotFinal signals that metablock is not final

View Source
var ErrMintAddressNotInThisShard = errors.New("mint address does not belong to current shard")

ErrMintAddressNotInThisShard signals that the mint address does not belong to current shard

View Source
var ErrMissingBody = errors.New("missing body")

ErrMissingBody signals that body of the block is missing

View Source
var ErrMissingHashForHeaderNonce = errors.New("missing hash for header nonce")

ErrMissingHashForHeaderNonce signals that hash of the block is missing

View Source
var ErrMissingHeader = errors.New("missing header")

ErrMissingHeader signals that header of the block is missing

View Source
var ErrMissingTransaction = errors.New("missing transaction")

ErrMissingTransaction signals that one transaction is missing

View Source
var ErrNegativeValue = errors.New("negative value")

ErrNegativeValue signals that a negative value has been detected and it is not allowed

View Source
var ErrNilAccountsAdapter = errors.New("nil AccountsAdapter")

ErrNilAccountsAdapter defines the error when trying to use a nil AccountsAddapter

View Source
var ErrNilAddressContainer = errors.New("nil AddressContainer")

ErrNilAddressContainer signals that an operation has been attempted to or with a nil AddressContainer implementation

View Source
var ErrNilAddressConverter = errors.New("nil AddressConverter")

ErrNilAddressConverter signals that an operation has been attempted to or with a nil AddressConverter implementation

View Source
var ErrNilArgumentParser = errors.New("argument parser is nil")

ErrNilArgumentParser signals that the argument parser is nil

View Source
var ErrNilArguments = errors.New("smart contract arguments are nil")

ErrNilArguments signals that arguments from transactions data is nil

View Source
var ErrNilBalanceFromSC = errors.New("output balance from VM is nil")

ErrNilBalanceFromSC signals that balance is nil

View Source
var ErrNilBlockBody = errors.New("nil block body")

ErrNilBlockBody signals that an operation has been attempted to or with a nil block body

View Source
var ErrNilBlockBodyStorage = errors.New("nil block body storage")

ErrNilBlockBodyStorage signals that a nil block body storage has been provided

View Source
var ErrNilBlockChain = errors.New("nil block chain")

ErrNilBlockChain signals that an operation has been attempted to or with a nil blockchain

View Source
var ErrNilBlockExecutor = errors.New("nil BlockExecutor")

ErrNilBlockExecutor signals that an operation has been attempted to or with a nil BlockExecutor implementation

View Source
var ErrNilBlockHeader = errors.New("nil block header")

ErrNilBlockHeader signals that an operation has been attempted to or with a nil block header

View Source
var ErrNilBlocksTracker = errors.New("nil blocks tracker")

ErrNilBlocksTracker signals that a nil blocks tracker has been provided

View Source
var ErrNilBuffer = errors.New("provided byte buffer is nil")

ErrNilBuffer signals that a provided byte buffer is nil

View Source
var ErrNilCacher = errors.New("nil cacher")

ErrNilCacher signals that a nil cache has been provided

View Source
var ErrNilChronologyValidator = errors.New("provided chronology validator object is nil")

ErrNilChronologyValidator signals that a nil chronology validator has been provided

View Source
var ErrNilCode = errors.New("smart contract code is nil")

ErrNilCode signals that code from transaction data is nil

View Source
var ErrNilContainerElement = errors.New("element cannot be nil")

ErrNilContainerElement signals when trying to add a nil element in the container

View Source
var ErrNilDataPoolHolder = errors.New("nil data pool holder")

ErrNilDataPoolHolder signals that the data pool holder is nil

View Source
var ErrNilDataToProcess = errors.New("nil data to process")

ErrNilDataToProcess signals that nil data was provided

View Source
var ErrNilForkDetector = errors.New("nil fork detector")

ErrNilForkDetector signals that the fork detector is nil

View Source
var ErrNilFunction = errors.New("smart contract function is nil")

ErrNilFunction signals that function from transaction data is nil

View Source
var ErrNilHasher = errors.New("nil Hasher")

ErrNilHasher signals that an operation has been attempted to or with a nil hasher implementation

View Source
var ErrNilHaveTimeHandler = errors.New("nil have time handler")

ErrNilHaveTimeHandler signals that a nil have time handler func was provided

View Source
var ErrNilHeadersDataPool = errors.New("nil headers data pool")

ErrNilHeadersDataPool signals that a nil header pool has been provided

View Source
var ErrNilHeadersNonceHashStorage = errors.New("nil headers nonce hash storage")

ErrNilHeadersNonceHashStorage signals that a nil header nonce hash storage has been provided

View Source
var ErrNilHeadersNoncesDataPool = errors.New("nil headers nonces cache")

ErrNilHeadersNoncesDataPool signals that a nil header - nonce cache

View Source
var ErrNilHeadersStorage = errors.New("nil headers storage")

ErrNilHeadersStorage signals that a nil header storage has been provided

View Source
var ErrNilKeyGen = errors.New("nil key generator")

ErrNilKeyGen signals that an operation has been attempted to or with a nil single sign key generator

View Source
var ErrNilMarshalizer = errors.New("nil Marshalizer")

ErrNilMarshalizer signals that an operation has been attempted to or with a nil Marshalizer implementation

View Source
var ErrNilMessage = errors.New("nil message")

ErrNilMessage signals that a nil message has been received

View Source
var ErrNilMessenger = errors.New("nil Messenger")

ErrNilMessenger signals that a nil Messenger object was provided

View Source
var ErrNilMetaBlockHeader = errors.New("nil metablock header")

ErrNilMetaBlockHeader signals that an operation has been attempted to or with a nil metablock

View Source
var ErrNilMetaBlockPool = errors.New("nil meta block pool")

ErrNilMetaBlockPool signals that a nil meta blocks pool was used

View Source
var ErrNilMetachainHeadersDataPool = errors.New("nil metachain headers data pool")

ErrNilMetachainHeadersDataPool signals that a nil metachain header pool has been provided

View Source
var ErrNilMetachainHeadersNoncesDataPool = errors.New("nil metachain headers nonces cache")

ErrNilMetachainHeadersNoncesDataPool signals a nil metachain header - nonce cache

View Source
var ErrNilMetachainHeadersStorage = errors.New("nil metachain headers storage")

ErrNilMetachainHeadersStorage signals that a nil metachain header storage has been provided

View Source
var ErrNilMiniBlockHeaders = errors.New("nil mini block headers")

ErrNilMiniBlockHeaders signals that an operation has been attempted with a nil mini-block

View Source
var ErrNilMiniBlockPool = errors.New("nil mini block pool")

ErrNilMiniBlockPool signals that a nil mini blocks pool was used

View Source
var ErrNilMiniBlocks = errors.New("nil mini blocks")

ErrNilMiniBlocks signals that an operation has been attempted with a nil mini-block

View Source
var ErrNilMultiSigVerifier = errors.New("nil multi-signature verifier")

ErrNilMultiSigVerifier signals that a nil multi-signature verifier is used

View Source
var ErrNilPeerBlockBody = errors.New("nil block body")

ErrNilPeerBlockBody signals that an operation has been attempted to or with a nil block body

View Source
var ErrNilPoolsHolder = errors.New("nil pools holder")

ErrNilPoolsHolder signals that an operation has been attempted to or with a nil pools holder object

View Source
var ErrNilPrevRandSeed = errors.New("provided previous rand seed is nil")

ErrNilPrevRandSeed signals that a nil previous rand seed has been provided

View Source
var ErrNilPreviousBlockHash = errors.New("nil previous block header hash")

ErrNilPreviousBlockHash signals that a operation has been attempted with a nil previous block header hash

View Source
var ErrNilPubKeysBitmap = errors.New("nil public keys bitmap")

ErrNilPubKeysBitmap signals that a operation has been attempted with a nil public keys bitmap

View Source
var ErrNilPublicKey = errors.New("nil public key")

ErrNilPublicKey signals that a operation has been attempted with a nil public key

View Source
var ErrNilRandSeed = errors.New("provided rand seed is nil")

ErrNilRandSeed signals that a nil rand seed has been provided

View Source
var ErrNilRcvAddr = errors.New("nil receiver address")

ErrNilRcvAddr signals that an operation has been attempted to or with a nil receiver address

View Source
var ErrNilRequestHandler = errors.New("nil request handler")

ErrNilRequestHandler signals that a nil request handler interface was provided

View Source
var ErrNilRequestHeaderHandlerByNonce = errors.New("nil request header handler by nonce")

ErrNilRequestHeaderHandlerByNonce signals that a nil header request handler by nonce func was provided

View Source
var ErrNilResolverContainer = errors.New("nil resolver container")

ErrNilResolverContainer signals that a nil resolver container was provided

View Source
var ErrNilResolverSender = errors.New("nil resolver sender")

ErrNilResolverSender signals that a nil resolver sender object has been provided

View Source
var ErrNilRootHash = errors.New("root hash is nil")

ErrNilRootHash signals that an operation has been attempted with a nil root hash

View Source
var ErrNilRounder = errors.New("nil Rounder")

ErrNilRounder signals that an operation has been attempted to or with a nil Rounder implementation

View Source
var ErrNilSCDestAccount = errors.New("nil destination SC account")

ErrNilSCDestAccount signals that destination account is nil

View Source
var ErrNilScrDataPool = errors.New("smart contract result pool is nil")

ErrNilScrDataPool signals that smart contract pool is nil

View Source
var ErrNilScrStorage = errors.New("smart contract result storage is nil")

ErrNilScrStorage signals that smart contract storage is nil

View Source
var ErrNilShardCoordinator = errors.New("nil shard coordinator")

ErrNilShardCoordinator signals that an operation has been attempted to or with a nil shard coordinator

View Source
var ErrNilSignature = errors.New("nil signature")

ErrNilSignature signals that a operation has been attempted with a nil signature

View Source
var ErrNilSingleSigner = errors.New("nil single signer")

ErrNilSingleSigner signals that a nil single signer is used

View Source
var ErrNilSmartContractProcessor = errors.New("smart contract processor is nil")

ErrNilSmartContractProcessor signals that smart contract call executor is nil

View Source
var ErrNilSmartContractResult = errors.New("smart contract result is nil")

ErrNilSmartContractResult signals that the smart contract result is nil

View Source
var ErrNilSndAddr = errors.New("nil sender address")

ErrNilSndAddr signals that an operation has been attempted to or with a nil sender address

View Source
var ErrNilStorage = errors.New("nil storage")

ErrNilStorage signals that a nil storage has been provided

View Source
var ErrNilStore = errors.New("nil data storage service")

ErrNilStore signals that the provided storage service is nil

View Source
var ErrNilTemporaryAccountsHandler = errors.New("temporary accounts handler is nil")

ErrNilTemporaryAccountsHandler signals that temporary accounts handler is nil

View Source
var ErrNilTransaction = errors.New("nil transaction")

ErrNilTransaction signals that an operation has been attempted to or with a nil transaction

View Source
var ErrNilTransactionPool = errors.New("nil transaction pool")

ErrNilTransactionPool signals that a nil transaction pool was used

View Source
var ErrNilTxBlockBody = errors.New("nil tx block body")

ErrNilTxBlockBody signals that an operation has been attempted to or with a nil tx block body

View Source
var ErrNilTxDataPool = errors.New("nil transaction data pool")

ErrNilTxDataPool signals that a nil transaction pool has been provided

View Source
var ErrNilTxHash = errors.New("nil transaction hash")

ErrNilTxHash signals that an operation has been attempted with a nil hash

View Source
var ErrNilTxHashes = errors.New("nil transaction hashes")

ErrNilTxHashes signals that an operation has been atempted with nil transaction hashes

View Source
var ErrNilTxProcessor = errors.New("nil transactions processor")

ErrNilTxProcessor signals that a nil transactions processor was used

View Source
var ErrNilTxStorage = errors.New("nil transaction storage")

ErrNilTxStorage signals that a nil transaction storage has been provided

View Source
var ErrNilVMOutput = errors.New("nil vm output")

ErrNilVMOutput signals that vmoutput is nil

View Source
var ErrNilValue = errors.New("nil value")

ErrNilValue signals the value is nil

View Source
var ErrNoNewMetablocks = errors.New("there is no new metablocks")

ErrNoNewMetablocks signals that no new metablocks are in the pool

View Source
var ErrNoSmartContractResultInMessage = errors.New("no smart contract result in message")

ErrNoSmartContractResultInMessage signals that message does not contain required data

View Source
var ErrNoSortedHdrsForShard = errors.New("no sorted headers in pool")

ErrNoSortedHdrsForShard signals that there are no sorted hdrs in pool

View Source
var ErrNoTransactionInMessage = errors.New("no transaction found in received message")

ErrNoTransactionInMessage signals that no transaction was found after parsing received p2p message

View Source
var ErrNoVM = errors.New("no VM (hook not set)")

ErrNoVM signals that no SCHandler has been set

View Source
var ErrNotImplementedBlockProcessingType = errors.New("not implemented block processing type")

ErrNotImplementedBlockProcessingType signals that a not supported block body type was found in header

View Source
var ErrNotarizedHdrsSliceIsNil = errors.New("notarized shard headers slice is nil")

ErrNotarizedHdrsSliceIsNil signals that the slice holding last notarized headers is nil

View Source
var ErrRandSeedMismatch = errors.New("random seeds do not match")

ErrRandSeedMismatch signals that random seeds are not equal

View Source
var ErrRollbackFromGenesis = errors.New("roll back from genesis is not supported")

ErrRollbackFromGenesis signals that a rollback from genesis is called

View Source
var ErrRootStateMissmatch = errors.New("root state does not match")

ErrRootStateMissmatch signals that persist some data was not done with success

View Source
var ErrShardIdMissmatch = errors.New("shard ID missmatch")

ErrShardIdMissmatch signals shard ID does not match expectations

View Source
var ErrStringSplitFailed = errors.New("data splitting into arguments and code/function failed")

ErrStringSplitFailed signals that data splitting into arguments and code failed

View Source
var ErrTimeIsOut = errors.New("time is out")

ErrTimeIsOut signals that time is out

View Source
var ErrTxNotFound = errors.New("transaction not found")

ErrTxNotFound signals that a transaction has not found

View Source
var ErrUnmarshalWithoutSuccess = errors.New("unmarshal without success")

ErrUnmarshalWithoutSuccess signals that unmarshal some data was not done with success

View Source
var ErrWrongNonceInBlock = errors.New("wrong nonce in block")

ErrWrongNonceInBlock signals the nonce in block is different than expected nonce

View Source
var ErrWrongNonceInVMOutput = errors.New("nonce invalid from SC run")

ErrWrongNonceInVMOutput signals that nonce in vm output is wrong

View Source
var ErrWrongTransaction = errors.New("invalid transaction")

ErrWrongTransaction signals that transaction is invalid

View Source
var ErrWrongTypeAssertion = errors.New("wrong type assertion")

ErrWrongTypeAssertion signals that an type assertion failed

View Source
var ErrWrongTypeInContainer = errors.New("wrong type of object inside container")

ErrWrongTypeInContainer signals that a wrong type of object was found in container

Functions

func EmptyChannel

func EmptyChannel(ch chan bool)

EmptyChannel empties the given channel

func GetMarshalizedHeaderFromStorage

func GetMarshalizedHeaderFromStorage(
	blockUnit dataRetriever.UnitType,
	hash []byte,
	marshalizer marshal.Marshalizer,
	storageService dataRetriever.StorageService,
) ([]byte, error)

GetMarshalizedHeaderFromStorage gets the marshalized header, which is associated with the given hash, from storage

func GetMetaHeader

func GetMetaHeader(
	hash []byte,
	cacher storage.Cacher,
	marshalizer marshal.Marshalizer,
	storageService dataRetriever.StorageService,
) (*block.MetaBlock, error)

GetMetaHeader gets the header, which is associated with the given hash, from pool or storage

func GetMetaHeaderFromPool

func GetMetaHeaderFromPool(
	hash []byte,
	cacher storage.Cacher,
) (*block.MetaBlock, error)

GetMetaHeaderFromPool gets the header, which is associated with the given hash, from pool

func GetMetaHeaderFromStorage

func GetMetaHeaderFromStorage(
	hash []byte,
	marshalizer marshal.Marshalizer,
	storageService dataRetriever.StorageService,
) (*block.MetaBlock, error)

GetMetaHeaderFromStorage gets the header, which is associated with the given hash, from storage

func GetShardHeader

func GetShardHeader(
	hash []byte,
	cacher storage.Cacher,
	marshalizer marshal.Marshalizer,
	storageService dataRetriever.StorageService,
) (*block.Header, error)

GetShardHeader gets the header, which is associated with the given hash, from pool or storage

func GetShardHeaderFromPool

func GetShardHeaderFromPool(
	hash []byte,
	cacher storage.Cacher,
) (*block.Header, error)

GetShardHeaderFromPool gets the header, which is associated with the given hash, from pool

func GetShardHeaderFromStorage

func GetShardHeaderFromStorage(
	hash []byte,
	marshalizer marshal.Marshalizer,
	storageService dataRetriever.StorageService,
) (*block.Header, error)

GetShardHeaderFromStorage gets the header, which is associated with the given hash, from storage

func ShardCacherIdentifier

func ShardCacherIdentifier(senderShardId uint32, destinationShardId uint32) string

ShardCacherIdentifier generates a string identifier between 2 shards

Types

type ArgumentsParser

type ArgumentsParser interface {
	GetArguments() ([]*big.Int, error)
	GetCode() ([]byte, error)
	GetFunction() (string, error)
	ParseData(data []byte) error

	CreateDataFromStorageUpdate(storageUpdates []*vmcommon.StorageUpdate) []byte
	GetStorageUpdates(data []byte) ([]*vmcommon.StorageUpdate, error)
}

ArgumentsParser defines the functionality to parse transaction data into arguments and code for smart contracts

type BlockHeaderState

type BlockHeaderState int

BlockHeaderState specifies which is the state of the block header received

const (
	// BHReceived defines ID of a received block header
	BHReceived BlockHeaderState = iota
	// BHProcessed defines ID of a processed block header
	BHProcessed
	// BHProposed defines ID of a proposed block header
	BHProposed
)

type BlockProcessor

type BlockProcessor interface {
	ProcessBlock(blockChain data.ChainHandler, header data.HeaderHandler, body data.BodyHandler, haveTime func() time.Duration) error
	CommitBlock(blockChain data.ChainHandler, header data.HeaderHandler, body data.BodyHandler) error
	RevertAccountState()
	CreateBlockBody(round uint32, haveTime func() bool) (data.BodyHandler, error)
	RestoreBlockIntoPools(header data.HeaderHandler, body data.BodyHandler) error
	CreateBlockHeader(body data.BodyHandler, round uint32, haveTime func() bool) (data.HeaderHandler, error)
	MarshalizedDataToBroadcast(header data.HeaderHandler, body data.BodyHandler) (map[uint32][]byte, map[uint32][][]byte, error)
	DecodeBlockBody(dta []byte) data.BodyHandler
	DecodeBlockHeader(dta []byte) data.HeaderHandler
	SetLastNotarizedHdr(shardId uint32, processedHdr data.HeaderHandler)
}

BlockProcessor is the main interface for block execution engine

type BlocksTracker added in v1.0.3

type BlocksTracker interface {
	UnnotarisedBlocks() []data.HeaderHandler
	RemoveNotarisedBlocks(headerHandler data.HeaderHandler) error
	AddBlock(headerHandler data.HeaderHandler)
	SetBlockBroadcastRound(nonce uint64, round int32)
	BlockBroadcastRound(nonce uint64) int32
}

BlocksTracker defines the functionality to track all the notarised blocks

type Bootstrapper

type Bootstrapper interface {
	AddSyncStateListener(func(bool))
	ShouldSync() bool
	StopSync()
	StartSync()
}

Bootstrapper is an interface that defines the behaviour of a struct that is able to synchronize the node

type Checker

type Checker interface {
	// IntegrityAndValidity does both validity and integrity checks on the data structure
	IntegrityAndValidity(coordinator sharding.Coordinator) error
	// Integrity checks only the integrity of the data
	Integrity(coordinator sharding.Coordinator) error
}

Checker provides functionality to checks the integrity and validity of a data structure

type ChronologyValidator added in v1.0.3

type ChronologyValidator interface {
	ValidateReceivedBlock(shardID uint32, epoch uint32, nonce uint64, round uint32) error
}

ChronologyValidator defines the functionality needed to validate a received header block (shard or metachain) from chronology point of view

type DataPacker

type DataPacker interface {
	PackDataInChunks(data [][]byte, limit int) ([][]byte, error)
}

DataPacker can split a large slice of byte slices in smaller packets

type ForkDetector

type ForkDetector interface {
	AddHeader(header data.HeaderHandler, hash []byte, state BlockHeaderState) error
	RemoveHeaders(nonce uint64, hash []byte)
	CheckFork() (bool, uint64)
	GetHighestFinalBlockNonce() uint64
	ProbableHighestNonce() uint64
}

ForkDetector is an interface that defines the behaviour of a struct that is able to detect forks

type HashAccesser

type HashAccesser interface {
	SetHash([]byte)
	Hash() []byte
}

HashAccesser interface provides functionality over hashable objects

type InterceptedBlockBody added in v1.0.3

type InterceptedBlockBody interface {
	Checker
	HashAccesser
	GetUnderlyingObject() interface{}
}

InterceptedBlockBody interface provides functionality over intercepted blocks

type Interceptor

type Interceptor interface {
	ProcessReceivedMessage(message p2p.MessageP2P) error
}

Interceptor defines what a data interceptor should do It should also adhere to the p2p.MessageProcessor interface so it can wire to a p2p.Messenger

type InterceptorsContainer

type InterceptorsContainer interface {
	Get(key string) (Interceptor, error)
	Add(key string, val Interceptor) error
	AddMultiple(keys []string, interceptors []Interceptor) error
	Replace(key string, val Interceptor) error
	Remove(key string)
	Len() int
}

InterceptorsContainer defines an interceptors holder data type with basic functionality

type InterceptorsContainerFactory

type InterceptorsContainerFactory interface {
	Create() (InterceptorsContainer, error)
}

InterceptorsContainerFactory defines the functionality to create an interceptors container

type MessageHandler added in v1.0.3

type MessageHandler interface {
	ConnectedPeersOnTopic(topic string) []p2p.PeerID
	SendToConnectedPeer(topic string, buff []byte, peerID p2p.PeerID) error
}

MessageHandler defines the functionality needed by structs to send data to other peers

type PreProcessor

type PreProcessor interface {
	CreateBlockStarted()
	IsDataPrepared(requestedTxs int, haveTime func() time.Duration) error

	RemoveTxBlockFromPools(body block.Body, miniBlockPool storage.Cacher) error
	RestoreTxBlockIntoPools(body block.Body, miniBlockHashes map[int][]byte, miniBlockPool storage.Cacher) (int, error)
	SaveTxBlockToStorage(body block.Body) error

	ProcessBlockTransactions(body block.Body, round uint32, haveTime func() time.Duration) error
	RequestBlockTransactions(body block.Body) int

	CreateMarshalizedData(txHashes [][]byte) ([][]byte, error)

	RequestTransactionsForMiniBlock(mb block.MiniBlock) int
	ProcessMiniBlock(miniBlock *block.MiniBlock, haveTime func() bool, round uint32) error
	CreateAndProcessMiniBlock(sndShardId, dstShardId uint32, spaceRemained int, haveTime func() bool, round uint32) (*block.MiniBlock, error)

	GetAllCurrentUsedTxs() map[string]*transaction.Transaction
}

type RequestHandler

type RequestHandler interface {
	RequestHeaderByNonce(shardId uint32, nonce uint64)
	RequestTransaction(shardId uint32, txHashes [][]byte)
	RequestSmartContractResults(destShardID uint32, scrHashes [][]byte)
	RequestMiniBlock(shardId uint32, miniblockHash []byte)
	RequestHeader(shardId uint32, hash []byte)
}

RequestHandler defines the methods through which request to data can be made

type RequiredDataPool

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

RequiredDataPool represents a structure that can hold a list of required data. Any time one of the expected hash value is received, the associated bit in the receivedBitmap property is set to 1. All of the data is considered received when the ones count of the received bitmap is equal to the expected data length

func (*RequiredDataPool) ExpectedData

func (rh *RequiredDataPool) ExpectedData() [][]byte

ExpectedData returns the RequiredDataPool's expected data

func (*RequiredDataPool) ReceivedAll

func (rh *RequiredDataPool) ReceivedAll() bool

ReceivedAll will return true if the count of ones in the bitmap is greater or equal to the expected data length

func (*RequiredDataPool) SetHashes

func (rh *RequiredDataPool) SetHashes(hashes [][]byte)

SetHashes sets the expected data to the passed hashes parameter. The bitmap is also reset and adapted to the length of the new expected data

func (*RequiredDataPool) SetReceivedHash

func (rh *RequiredDataPool) SetReceivedHash(hash []byte)

SetReceivedHash finds the hash in the expected values and sets the appropriate bit to 1. Nothing will happen if the hash is not actually expected

type SigVerifier

type SigVerifier interface {
	VerifySig() error
}

SigVerifier provides functionality to verify a signature of a signed data structure that holds also the verifying parameters

type SignedDataValidator

type SignedDataValidator interface {
	SigVerifier
	Checker
}

SignedDataValidator provides functionality to check the validity and signature of a data structure

type SmartContractProcessor

type SmartContractProcessor interface {
	ComputeTransactionType(tx *transaction.Transaction) (TransactionType, error)
	ExecuteSmartContractTransaction(tx *transaction.Transaction, acntSrc, acntDst state.AccountHandler, round uint32) ([]*smartContractResult.SmartContractResult, error)
	DeploySmartContract(tx *transaction.Transaction, acntSrc state.AccountHandler, round uint32) ([]*smartContractResult.SmartContractResult, error)
	ProcessSmartContractResult(scr *smartContractResult.SmartContractResult) error
}

SmartContractProcessor is the main interface for the smart contract caller engine

type TemporaryAccountsHandler

type TemporaryAccountsHandler interface {
	AddTempAccount(address []byte, balance *big.Int, nonce uint64)
	CleanTempAccounts()
	TempAccount(address []byte) state.AccountHandler
}

TemporaryAccountsHandler defines the functionality to create temporary accounts and pass to VM. This holder will contain usually one account from shard X that calls a SC in shard Y so when executing the code in shard Y, this impl will hold an ephemeral copy of the sender account from shard X

type TopicHandler

type TopicHandler interface {
	HasTopic(name string) bool
	CreateTopic(name string, createChannelForTopic bool) error
	RegisterMessageProcessor(topic string, handler p2p.MessageProcessor) error
}

TopicHandler defines the functionality needed by structs to manage topics and message processors

type TopicMessageHandler added in v1.0.3

type TopicMessageHandler interface {
	MessageHandler
	TopicHandler
}

TopicMessageHandler defines the functionality needed by structs to manage topics, message processors and to send data to other peers

type TransactionProcessor

type TransactionProcessor interface {
	ProcessTransaction(transaction *transaction.Transaction, round uint32) ([]*smartContractResult.SmartContractResult, error)
	ProcessSmartContractResult(scr *smartContractResult.SmartContractResult) error
}

TransactionProcessor is the main interface for transaction execution engine

type TransactionType

type TransactionType int

TransactionType specifies the type of the transaction

const (
	// MoveBalance defines ID of a payment transaction - moving balances
	MoveBalance TransactionType = iota
	// SCDeployment defines ID of a transaction to store a smart contract
	SCDeployment
	// SCInvoking defines ID of a transaction of type smart contract call
	SCInvoking
)

Jump to

Keyboard shortcuts

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