Documentation ¶
Overview ¶
Package polybft implements PBFT consensus algorithm integration and bridge feature
Index ¶
- Constants
- Variables
- func Factory(params *consensus.Params) (consensus.Consensus, error)
- func ForkManagerFactory(forks *chain.Forks) error
- func ForkManagerInitialParamsFactory(config *chain.Chain) (*forkmanager.ForkParams, error)
- func GenesisPostHookFactory(config *chain.Chain, engineName string) func(txn *state.Transition) error
- func GetIbftExtraClean(extraRaw []byte) ([]byte, error)
- func NewStateProvider(transition *state.Transition) contract.Provider
- type BlockBuilder
- func (b *BlockBuilder) Block() *types.Block
- func (b *BlockBuilder) Build(handler func(h *types.Header)) (*types.FullBlock, error)
- func (b *BlockBuilder) Fill()
- func (b *BlockBuilder) GetState() *state.Transition
- func (b *BlockBuilder) Receipts() []*types.Receipt
- func (b *BlockBuilder) Reset() error
- func (b *BlockBuilder) WriteTx(tx *types.Transaction) error
- type BlockBuilderParams
- type BridgeConfig
- type BridgeTransport
- type BurnContractInfo
- type CheckpointData
- func (c *CheckpointData) Copy() *CheckpointData
- func (c *CheckpointData) Hash(chainID uint64, blockNumber uint64, blockHash types.Hash) (types.Hash, error)
- func (c *CheckpointData) MarshalRLPWith(ar *fastrlp.Arena) *fastrlp.Value
- func (c *CheckpointData) UnmarshalRLPWith(v *fastrlp.Value) error
- func (c *CheckpointData) Validate(parentCheckpoint *CheckpointData, currentValidators validator.AccountSet, ...) error
- func (c *CheckpointData) ValidateBasic(parentCheckpoint *CheckpointData) error
- type CheckpointManager
- type CheckpointStore
- type CommitmentMessageSigned
- func (cm *CommitmentMessageSigned) ContainsStateSync(stateSyncID uint64) bool
- func (cm *CommitmentMessageSigned) DecodeAbi(txData []byte) error
- func (cm *CommitmentMessageSigned) EncodeAbi() ([]byte, error)
- func (cm *CommitmentMessageSigned) Hash() (types.Hash, error)
- func (cm *CommitmentMessageSigned) VerifyStateSyncProof(proof []types.Hash, stateSync *contractsapi.StateSyncedEvent) error
- type EpochStore
- type ExitEvent
- type Extra
- func (i *Extra) MarshalRLPTo(dst []byte) []byte
- func (i *Extra) MarshalRLPWith(ar *fastrlp.Arena) *fastrlp.Value
- func (i *Extra) UnmarshalRLP(input []byte) error
- func (i *Extra) UnmarshalRLPWith(v *fastrlp.Value) error
- func (i *Extra) ValidateFinalizedData(header *types.Header, parent *types.Header, parents []*types.Header, ...) error
- func (i *Extra) ValidateParentSignatures(blockNumber uint64, consensusBackend polybftBackend, parents []*types.Header, ...) error
- type IBFTConsensusWrapper
- type MessageSignature
- type PendingCommitment
- type PolyBFTConfig
- type Polybft
- func (p *Polybft) Close() error
- func (p *Polybft) FilterExtra(extra []byte) ([]byte, error)
- func (p *Polybft) GetBlockCreator(h *types.Header) (types.Address, error)
- func (p *Polybft) GetBridgeProvider() consensus.BridgeDataProvider
- func (p *Polybft) GetSyncProgression() *progress.Progression
- func (p *Polybft) GetValidators(blockNumber uint64, parents []*types.Header) (validator.AccountSet, error)
- func (p *Polybft) Initialize() error
- func (p *Polybft) Multicast(msg *ibftProto.Message)
- func (p *Polybft) PreCommitState(block *types.Block, _ *state.Transition) error
- func (p *Polybft) ProcessHeaders(_ []*types.Header) error
- func (p *Polybft) Start() error
- func (p *Polybft) VerifyHeader(header *types.Header) error
- type PostBlockRequest
- type PostEpochRequest
- type PrioritizedValidator
- type ProposerCalculator
- type ProposerSnapshot
- type ProposerSnapshotStore
- type RewardsConfig
- type RootchainConfig
- type Runtime
- type Signature
- type StakeManager
- type StakeStore
- type State
- type StateSyncManager
- type StateSyncProof
- type StateSyncStore
- type SystemState
- type SystemStateImpl
- type TokenConfig
- type TransportMessage
- type ValidatorInfo
Constants ¶
const ( // ExtraVanity represents a fixed number of extra-data bytes reserved for proposer vanity ExtraVanity = 32 // ExtraSeal represents the fixed number of extra-data bytes reserved for proposer seal ExtraSeal = 65 )
const ConsensusName = "polybft"
Variables ¶
var PolyBFTMixDigest = types.StringToHash("adce6e5230abe012342a44e4e9b6d05997d6f015387ae0e59be924afc7ec70c1")
PolyBFTMixDigest represents a hash of "PolyBFT Mix" to identify whether the block is from PolyBFT consensus engine
Functions ¶
func ForkManagerFactory ¶
func ForkManagerInitialParamsFactory ¶
func ForkManagerInitialParamsFactory(config *chain.Chain) (*forkmanager.ForkParams, error)
func GenesisPostHookFactory ¶
func GetIbftExtraClean ¶
GetIbftExtraClean returns unmarshaled extra field from the passed in header, but without signatures for the given header (it only includes signatures for the parent block)
func NewStateProvider ¶
func NewStateProvider(transition *state.Transition) contract.Provider
NewStateProvider initializes EVM against given state and chain config and returns stateProvider instance which is an abstraction for smart contract calls
Types ¶
type BlockBuilder ¶
type BlockBuilder struct {
// contains filtered or unexported fields
}
func NewBlockBuilder ¶
func NewBlockBuilder(params *BlockBuilderParams) *BlockBuilder
func (*BlockBuilder) Block ¶
func (b *BlockBuilder) Block() *types.Block
Block returns the built block if nil, it is not built yet
func (*BlockBuilder) Fill ¶
func (b *BlockBuilder) Fill()
Fill fills the block with transactions from the txpool
func (*BlockBuilder) GetState ¶
func (b *BlockBuilder) GetState() *state.Transition
GetState returns Transition reference
func (*BlockBuilder) Receipts ¶
func (b *BlockBuilder) Receipts() []*types.Receipt
Receipts returns the collection of transaction receipts for given block
func (*BlockBuilder) Reset ¶
func (b *BlockBuilder) Reset() error
Init initializes block builder before adding transactions and actual block building
func (*BlockBuilder) WriteTx ¶
func (b *BlockBuilder) WriteTx(tx *types.Transaction) error
WriteTx applies given transaction to the state. If transaction apply fails, it reverts the saved snapshot.
type BlockBuilderParams ¶
type BlockBuilderParams struct { // Parent block Parent *types.Header // Executor Executor *state.Executor // Coinbase that is signing the block Coinbase types.Address // GasLimit is the gas limit for the block GasLimit uint64 // duration for one block BlockTime time.Duration // Logger Logger hcf.Logger // txPoolInterface implementation TxPool txPoolInterface // BaseFee is the base fee BaseFee uint64 }
BlockBuilderParams are fields for the block that cannot be changed
type BridgeConfig ¶
type BridgeConfig struct { StateSenderAddr types.Address `json:"stateSenderAddress"` CheckpointManagerAddr types.Address `json:"checkpointManagerAddress"` ExitHelperAddr types.Address `json:"exitHelperAddress"` RootERC20PredicateAddr types.Address `json:"erc20PredicateAddress"` ChildMintableERC20PredicateAddr types.Address `json:"erc20ChildMintablePredicateAddress"` RootNativeERC20Addr types.Address `json:"nativeERC20Address"` RootERC721PredicateAddr types.Address `json:"erc721PredicateAddress"` ChildMintableERC721PredicateAddr types.Address `json:"erc721ChildMintablePredicateAddress"` RootERC1155PredicateAddr types.Address `json:"erc1155PredicateAddress"` ChildMintableERC1155PredicateAddr types.Address `json:"erc1155ChildMintablePredicateAddress"` ChildERC20Addr types.Address `json:"childERC20Address"` ChildERC721Addr types.Address `json:"childERC721Address"` ChildERC1155Addr types.Address `json:"childERC1155Address"` CustomSupernetManagerAddr types.Address `json:"customSupernetManagerAddr"` StakeManagerAddr types.Address `json:"stakeManagerAddr"` // only populated if stake-manager-deploy command is executed, and used for e2e tests StakeTokenAddr types.Address `json:"stakeTokenAddr,omitempty"` BLSAddress types.Address `json:"blsAddr"` BN256G2Address types.Address `json:"bn256G2Addr"` JSONRPCEndpoint string `json:"jsonRPCEndpoint"` EventTrackerStartBlocks map[types.Address]uint64 `json:"eventTrackerStartBlocks"` }
BridgeConfig is the rootchain configuration, needed for bridging
type BridgeTransport ¶
type BridgeTransport interface {
Multicast(msg interface{})
}
BridgeTransport is an abstraction of network layer for a bridge
type BurnContractInfo ¶
type BurnContractInfo struct { BlockNumber uint64 Address types.Address DestinationAddress types.Address }
BurnContractInfo contains metadata for burn contract, which is part of EIP-1559 specification
type CheckpointData ¶
type CheckpointData struct { BlockRound uint64 EpochNumber uint64 CurrentValidatorsHash types.Hash NextValidatorsHash types.Hash EventRoot types.Hash }
CheckpointData represents data needed for checkpointing mechanism
func (*CheckpointData) Copy ¶
func (c *CheckpointData) Copy() *CheckpointData
Copy returns deep copy of CheckpointData instance
func (*CheckpointData) Hash ¶
func (c *CheckpointData) Hash(chainID uint64, blockNumber uint64, blockHash types.Hash) (types.Hash, error)
Hash calculates keccak256 hash of the CheckpointData. CheckpointData is ABI encoded and then hashed.
func (*CheckpointData) MarshalRLPWith ¶
func (c *CheckpointData) MarshalRLPWith(ar *fastrlp.Arena) *fastrlp.Value
MarshalRLPWith defines the marshal function implementation for CheckpointData
func (*CheckpointData) UnmarshalRLPWith ¶
func (c *CheckpointData) UnmarshalRLPWith(v *fastrlp.Value) error
UnmarshalRLPWith unmarshals CheckpointData object from the RLP format
func (*CheckpointData) Validate ¶
func (c *CheckpointData) Validate(parentCheckpoint *CheckpointData, currentValidators validator.AccountSet, nextValidators validator.AccountSet, exitRootHash types.Hash) error
Validate encapsulates validation logic for checkpoint data (with regards to current and next epoch validators)
func (*CheckpointData) ValidateBasic ¶
func (c *CheckpointData) ValidateBasic(parentCheckpoint *CheckpointData) error
ValidateBasic encapsulates basic validation logic for checkpoint data. It only checks epoch numbers validity and whether validators hashes are non-empty.
type CheckpointManager ¶
type CheckpointStore ¶
type CheckpointStore struct {
// contains filtered or unexported fields
}
Bolt DB schema:
exit events/ |--> (id+epoch+blockNumber) -> *ExitEvent (json marshalled) |--> (exitEventID) -> epochNumber |--> (lastProcessedBlockKey) -> block number
type CommitmentMessageSigned ¶
type CommitmentMessageSigned struct { Message *contractsapi.StateSyncCommitment AggSignature Signature PublicKeys [][]byte }
CommitmentMessageSigned encapsulates commitment message with aggregated signatures
func (*CommitmentMessageSigned) ContainsStateSync ¶
func (cm *CommitmentMessageSigned) ContainsStateSync(stateSyncID uint64) bool
ContainsStateSync checks if commitment contains given state sync event
func (*CommitmentMessageSigned) DecodeAbi ¶
func (cm *CommitmentMessageSigned) DecodeAbi(txData []byte) error
DecodeAbi contains logic for decoding given ABI data
func (*CommitmentMessageSigned) EncodeAbi ¶
func (cm *CommitmentMessageSigned) EncodeAbi() ([]byte, error)
EncodeAbi contains logic for encoding arbitrary data into ABI format
func (*CommitmentMessageSigned) Hash ¶
func (cm *CommitmentMessageSigned) Hash() (types.Hash, error)
Hash calculates hash value for commitment object.
func (*CommitmentMessageSigned) VerifyStateSyncProof ¶
func (cm *CommitmentMessageSigned) VerifyStateSyncProof(proof []types.Hash, stateSync *contractsapi.StateSyncedEvent) error
VerifyStateSyncProof validates given state sync proof against merkle tree root hash contained in the CommitmentMessage
type EpochStore ¶
type EpochStore struct {
// contains filtered or unexported fields
}
type ExitEvent ¶
type ExitEvent struct { *contractsapi.L2StateSyncedEvent // EpochNumber is the epoch number in which exit event was added EpochNumber uint64 `abi:"-"` // BlockNumber is the block in which exit event was added BlockNumber uint64 `abi:"-"` }
ExitEvent is an event emitted by Exit contract
type Extra ¶
type Extra struct { Validators *validator.ValidatorSetDelta Parent *Signature Committed *Signature Checkpoint *CheckpointData }
Extra defines the structure of the extra field for Istanbul
func GetIbftExtra ¶
GetIbftExtra returns the istanbul extra data field from the passed in header
func (*Extra) MarshalRLPTo ¶
MarshalRLPTo defines the marshal function wrapper for Extra
func (*Extra) MarshalRLPWith ¶
MarshalRLPWith defines the marshal function implementation for Extra
func (*Extra) UnmarshalRLP ¶
UnmarshalRLP defines the unmarshal function wrapper for Extra
func (*Extra) UnmarshalRLPWith ¶
UnmarshalRLPWith defines the unmarshal implementation for Extra
func (*Extra) ValidateFinalizedData ¶
func (i *Extra) ValidateFinalizedData(header *types.Header, parent *types.Header, parents []*types.Header, chainID uint64, consensusBackend polybftBackend, domain []byte, logger hclog.Logger) error
ValidateFinalizedData contains extra data validations for finalized headers
func (*Extra) ValidateParentSignatures ¶
func (i *Extra) ValidateParentSignatures(blockNumber uint64, consensusBackend polybftBackend, parents []*types.Header, parent *types.Header, parentExtra *Extra, chainID uint64, domain []byte, logger hclog.Logger) error
ValidateParentSignatures validates signatures for parent block
type IBFTConsensusWrapper ¶
IBFTConsensusWrapper is a convenience wrapper for the go-ibft package
type MessageSignature ¶
type MessageSignature struct { // Signer of the vote From string // Signature of the message Signature []byte }
MessageSignature encapsulates sender identifier and its signature
type PendingCommitment ¶
type PendingCommitment struct { *contractsapi.StateSyncCommitment MerkleTree *merkle.MerkleTree Epoch uint64 }
PendingCommitment holds merkle trie of bridge transactions accompanied by epoch number
func NewPendingCommitment ¶
func NewPendingCommitment(epoch uint64, stateSyncEvents []*contractsapi.StateSyncedEvent) (*PendingCommitment, error)
NewPendingCommitment creates a new commitment object
type PolyBFTConfig ¶
type PolyBFTConfig struct { // InitialValidatorSet are the genesis validators InitialValidatorSet []*validator.GenesisValidator `json:"initialValidatorSet"` // Bridge is the rootchain bridge configuration Bridge *BridgeConfig `json:"bridge"` // EpochSize is size of epoch EpochSize uint64 `json:"epochSize"` // EpochReward is assigned to validators for blocks sealing EpochReward uint64 `json:"epochReward"` // SprintSize is size of sprint SprintSize uint64 `json:"sprintSize"` // BlockTime is target frequency of blocks production BlockTime common.Duration `json:"blockTime"` // Governance is the initial governance address Governance types.Address `json:"governance"` // NativeTokenConfig defines name, symbol and decimal count of the native token NativeTokenConfig *TokenConfig `json:"nativeTokenConfig"` InitialTrieRoot types.Hash `json:"initialTrieRoot"` // SupernetID indicates ID of given supernet generated by stake manager contract SupernetID int64 `json:"supernetID"` // MinValidatorSetSize indicates the minimum size of validator set MinValidatorSetSize uint64 `json:"minValidatorSetSize"` // MaxValidatorSetSize indicates the maximum size of validator set MaxValidatorSetSize uint64 `json:"maxValidatorSetSize"` // RewardConfig defines rewards configuration RewardConfig *RewardsConfig `json:"rewardConfig"` // BlockTimeDrift defines the time slot in which a new block can be created BlockTimeDrift uint64 `json:"blockTimeDrift"` }
PolyBFTConfig is the configuration file for the Polybft consensus protocol.
func GetPolyBFTConfig ¶
func GetPolyBFTConfig(chainConfig *chain.Chain) (PolyBFTConfig, error)
GetPolyBFTConfig deserializes provided chain config and returns PolyBFTConfig
func LoadPolyBFTConfig ¶
func LoadPolyBFTConfig(chainConfigFile string) (PolyBFTConfig, error)
LoadPolyBFTConfig loads chain config from provided path and unmarshals PolyBFTConfig
func (*PolyBFTConfig) IsBridgeEnabled ¶
func (p *PolyBFTConfig) IsBridgeEnabled() bool
type Polybft ¶
type Polybft struct {
// contains filtered or unexported fields
}
func (*Polybft) FilterExtra ¶
GetBridgeProvider is an implementation of Consensus interface Filters extra data to not contain Committed field
func (*Polybft) GetBlockCreator ¶
GetBlockCreator retrieves the block creator (or signer) given the block header
func (*Polybft) GetBridgeProvider ¶
func (p *Polybft) GetBridgeProvider() consensus.BridgeDataProvider
GetBridgeProvider is an implementation of Consensus interface Returns an instance of BridgeDataProvider
func (*Polybft) GetSyncProgression ¶
func (p *Polybft) GetSyncProgression() *progress.Progression
GetSyncProgression retrieves the current sync progression, if any
func (*Polybft) GetValidators ¶
func (*Polybft) Initialize ¶
Initialize initializes the consensus (e.g. setup data)
func (*Polybft) PreCommitState ¶
PreCommitState a hook to be called before finalizing state transition on inserting block
func (*Polybft) ProcessHeaders ¶
ProcessHeaders updates the snapshot based on the verified headers
type PostBlockRequest ¶
type PostEpochRequest ¶
type PostEpochRequest struct { // NewEpochID is the id of the new epoch NewEpochID uint64 // FirstBlockOfEpoch is the number of the epoch beginning block FirstBlockOfEpoch uint64 // SystemState is the state of the governance smart contracts // after this block SystemState SystemState // ValidatorSet is the validator set for the new epoch ValidatorSet validator.ValidatorSet }
type PrioritizedValidator ¶
type PrioritizedValidator struct { Metadata *validator.ValidatorMetadata ProposerPriority *big.Int }
PrioritizedValidator holds ValidatorMetadata together with priority
type ProposerCalculator ¶
type ProposerCalculator struct {
// contains filtered or unexported fields
}
func NewProposerCalculator ¶
func NewProposerCalculator(config *runtimeConfig, logger hclog.Logger) (*ProposerCalculator, error)
NewProposerCalculator creates a new proposer calculator object
func NewProposerCalculatorFromSnapshot ¶
func NewProposerCalculatorFromSnapshot(pcs *ProposerSnapshot, config *runtimeConfig, logger hclog.Logger) *ProposerCalculator
NewProposerCalculator creates a new proposer calculator object
func (*ProposerCalculator) GetSnapshot ¶
func (pc *ProposerCalculator) GetSnapshot() (*ProposerSnapshot, bool)
Get copy of the proposers' snapshot
func (*ProposerCalculator) PostBlock ¶
func (pc *ProposerCalculator) PostBlock(req *PostBlockRequest) error
PostBlock is called on every insert of finalized block (either from consensus or syncer) It will update priorities and save the updated snapshot to db
type ProposerSnapshot ¶
type ProposerSnapshot struct { Height uint64 Round uint64 Proposer *PrioritizedValidator Validators []*PrioritizedValidator }
ProposerSnapshot represents snapshot of one proposer calculation
func NewProposerSnapshot ¶
func NewProposerSnapshot(height uint64, validators []*validator.ValidatorMetadata) *ProposerSnapshot
NewProposerSnapshot creates ProposerSnapshot with height and validators with all priorities set to zero
func NewProposerSnapshotFromState ¶
func NewProposerSnapshotFromState(config *runtimeConfig) (*ProposerSnapshot, error)
NewProposerSnapshotFromState create ProposerSnapshot from state if possible or from genesis block
func (*ProposerSnapshot) CalcProposer ¶
func (pcs *ProposerSnapshot) CalcProposer(round, height uint64) (types.Address, error)
CalcProposer calculates next proposer
func (*ProposerSnapshot) Copy ¶
func (pcs *ProposerSnapshot) Copy() *ProposerSnapshot
Copy Returns copy of current ProposerSnapshot object
func (*ProposerSnapshot) GetLatestProposer ¶
func (pcs *ProposerSnapshot) GetLatestProposer(round, height uint64) (types.Address, error)
GetLatestProposer returns latest calculated proposer if any
func (ProposerSnapshot) GetTotalVotingPower ¶
func (pcs ProposerSnapshot) GetTotalVotingPower() *big.Int
GetTotalVotingPower returns total voting power from all the validators
type ProposerSnapshotStore ¶
type ProposerSnapshotStore struct {
// contains filtered or unexported fields
}
type RewardsConfig ¶
type RewardsConfig struct { // TokenAddress is the address of reward token on child chain TokenAddress types.Address // WalletAddress is the address of reward wallet on child chain WalletAddress types.Address // WalletAmount is the amount of tokens in reward wallet WalletAmount *big.Int }
func (*RewardsConfig) MarshalJSON ¶
func (r *RewardsConfig) MarshalJSON() ([]byte, error)
func (*RewardsConfig) UnmarshalJSON ¶
func (r *RewardsConfig) UnmarshalJSON(data []byte) error
type RootchainConfig ¶
type RootchainConfig struct { JSONRPCAddr string StateSenderAddress types.Address CheckpointManagerAddress types.Address BLSAddress types.Address BN256G2Address types.Address ExitHelperAddress types.Address RootERC20PredicateAddress types.Address ChildMintableERC20PredicateAddress types.Address RootNativeERC20Address types.Address ChildERC20Address types.Address RootERC721PredicateAddress types.Address ChildMintableERC721PredicateAddress types.Address ChildERC721Address types.Address RootERC1155PredicateAddress types.Address ChildMintableERC1155PredicateAddress types.Address ChildERC1155Address types.Address CustomSupernetManagerAddress types.Address StakeManagerAddress types.Address StakeTokenAddress types.Address }
RootchainConfig contains rootchain metadata (such as JSON RPC endpoint and contract addresses)
func (*RootchainConfig) ToBridgeConfig ¶
func (r *RootchainConfig) ToBridgeConfig() *BridgeConfig
ToBridgeConfig creates BridgeConfig instance
type Signature ¶
Signature represents aggregated signatures of signers accompanied with a bitmap (in order to be able to determine identities of each signer)
func (*Signature) MarshalRLPWith ¶
MarshalRLPWith marshals Signature object into RLP format
func (*Signature) UnmarshalRLPWith ¶
UnmarshalRLPWith unmarshals Signature object from the RLP format
type StakeManager ¶
type StakeManager interface { PostBlock(req *PostBlockRequest) error PostEpoch(req *PostEpochRequest) error UpdateValidatorSet(epoch uint64, currentValidatorSet validator.AccountSet) (*validator.ValidatorSetDelta, error) }
StakeManager interface provides functions for handling stake change of validators and updating validator set based on changed stake
type StakeStore ¶
type StakeStore struct {
// contains filtered or unexported fields
}
type State ¶
type State struct { StateSyncStore *StateSyncStore CheckpointStore *CheckpointStore EpochStore *EpochStore ProposerSnapshotStore *ProposerSnapshotStore StakeStore *StakeStore // contains filtered or unexported fields }
State represents a persistence layer which persists consensus data off-chain
type StateSyncManager ¶
type StateSyncManager interface { Init() error Close() Commitment(blockNumber uint64) (*CommitmentMessageSigned, error) GetStateSyncProof(stateSyncID uint64) (types.Proof, error) PostBlock(req *PostBlockRequest) error PostEpoch(req *PostEpochRequest) error }
StateSyncManager is an interface that defines functions for state sync workflow
type StateSyncProof ¶
type StateSyncProof struct { Proof []types.Hash StateSync *contractsapi.StateSyncedEvent }
type StateSyncStore ¶
type StateSyncStore struct {
// contains filtered or unexported fields
}
type SystemState ¶
type SystemState interface { // GetEpoch retrieves current epoch number from the smart contract GetEpoch() (uint64, error) // GetNextCommittedIndex retrieves next committed bridge state sync index GetNextCommittedIndex() (uint64, error) }
SystemState is an interface to interact with the consensus system contracts in the chain
type SystemStateImpl ¶
type SystemStateImpl struct {
// contains filtered or unexported fields
}
SystemStateImpl is implementation of SystemState interface
func NewSystemState ¶
func NewSystemState(valSetAddr types.Address, stateRcvAddr types.Address, provider contract.Provider) *SystemStateImpl
NewSystemState initializes new instance of systemState which abstracts smart contracts functions
func (*SystemStateImpl) GetEpoch ¶
func (s *SystemStateImpl) GetEpoch() (uint64, error)
GetEpoch retrieves current epoch number from the smart contract
func (*SystemStateImpl) GetNextCommittedIndex ¶
func (s *SystemStateImpl) GetNextCommittedIndex() (uint64, error)
GetNextCommittedIndex retrieves next committed bridge state sync index
type TokenConfig ¶
type TokenConfig struct { Name string `json:"name"` Symbol string `json:"symbol"` Decimals uint8 `json:"decimals"` IsMintable bool `json:"isMintable"` Owner types.Address `json:"owner"` }
TokenConfig is the configuration of native token used by edge network
type TransportMessage ¶
type TransportMessage struct { // Hash is encoded data Hash []byte // Message signature Signature []byte // From is the address of the message signer From string // Number of epoch EpochNumber uint64 }
TransportMessage represents the payload which is gossiped across the network
type ValidatorInfo ¶
type ValidatorInfo struct { Address ethgo.Address `json:"address"` Stake *big.Int `json:"stake"` WithdrawableRewards *big.Int `json:"withdrawableRewards"` IsActive bool `json:"isActive"` IsWhitelisted bool `json:"isWhitelisted"` }
ValidatorInfo is data transfer object which holds validator information, provided by smart contract
Source Files ¶
- block_builder.go
- blockchain_wrapper.go
- checkpoint_manager.go
- consensus_metrics.go
- consensus_runtime.go
- contracts_initializer.go
- extra.go
- fsm.go
- handlers.go
- hash.go
- ibft_consensus.go
- polybft.go
- polybft_config.go
- proposer_calculator.go
- runtime_helpers.go
- stake_manager.go
- state.go
- state_event_getter.go
- state_stats.go
- state_store_checkpoint.go
- state_store_epoch.go
- state_store_proposer_snapshot.go
- state_store_stake.go
- state_store_state_sync.go
- state_sync_commitment.go
- state_sync_manager.go
- state_transaction.go
- system_state.go
- transport.go
- validators_snapshot.go