Documentation
¶
Index ¶
Constants ¶
View Source
const ExecuteTxFlag = false // set to false when benchmark test
View Source
const GenerateTxFlag = true
View Source
const PreserveTxFlag = true // set to true when benchmark test
View Source
const VoteBatchFlag = false // set to false to prevent voting on batch
Variables ¶
View Source
var DefaultConfig = Config{ BatchTxLimit: 200, BlockBatchLimit: -1, VoteBatchLimit: -1, TxWaitTime: 1 * time.Second, BatchWaitTime: 3 * time.Second, ProposeTimeout: 2 * time.Second, BlockDelay: 1 * time.Second, ViewWidth: 60 * time.Second, LeaderTimeout: 20 * time.Second, BenchmarkPath: "", }
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { ChainID int64 // maximum tx count in a batch BatchTxLimit int // maximum batch count in a block BlockBatchLimit int // batch count in a batch vote VoteBatchLimit int // block creation delay if no transactions in the pool TxWaitTime time.Duration // maximum delay the leader waits for voting on a batch BatchWaitTime time.Duration // duration to wait to propose next block if leader cannot create qc ProposeTimeout time.Duration // minimum delay between each block (i.e, it can define maximum block rate) BlockDelay time.Duration // view duration for a leader ViewWidth time.Duration // leader must create next qc within this duration LeaderTimeout time.Duration // path to save the benchmark log of the consensus algorithm (it will not be saved if blank) BenchmarkPath string }
type Execution ¶
type Execution interface { Execute(blk *core.Block, txs []*core.Transaction) (*core.BlockCommit, []*core.TxCommit) MockExecute(blk *core.Block) (*core.BlockCommit, []*core.TxCommit) }
type MsgService ¶
type MsgService interface { BroadcastProposal(blk *core.Block) error BroadcastBatch(batch *core.Batch) error BroadcastNewView(qc *core.QuorumCert) error SendBatch(pubKey *core.PublicKey, batch *core.Batch) error SendVote(pubKey *core.PublicKey, vote *core.Vote) error SendBatchVote(pubKey *core.PublicKey, vote *core.BatchVote) error RequestBlock(pubKey *core.PublicKey, hash []byte) (*core.Block, error) RequestBlockByHeight(pubKey *core.PublicKey, height uint64) (*core.Block, error) SendNewView(pubKey *core.PublicKey, qc *core.QuorumCert) error SubscribeBatch(buffer int) *emitter.Subscription SubscribeProposal(buffer int) *emitter.Subscription SubscribeVote(buffer int) *emitter.Subscription SubscribeBatchVote(buffer int) *emitter.Subscription SubscribeNewView(buffer int) *emitter.Subscription }
type Resources ¶
type Resources struct { Signer core.Signer VldStore core.ValidatorStore Storage Storage MsgSvc MsgService Host *p2p.Host TxPool TxPool Execution Execution }
type Status ¶
type Status struct { StartTime int64 // committed tx count since node is up CommittedTxCount int BlockPoolSize int QCPoolSize int // start timestamp of current view ViewStart int64 // set to true when current view timeout // set to false once the view leader created the first qc PendingViewChange bool LeaderIndex int // hotstuff state (block heights) BVote uint64 BLock uint64 BExec uint64 BLeaf uint64 QCHigh uint64 }
type TxPool ¶
type TxPool interface { SubmitTx(tx *core.Transaction) error StoreTxs(txs *core.TxList) error StorePendingTxs(txs *core.TxList) error PopTxsFromQueue(max int) []*core.Transaction GetTxsFromQueue(max int) []*core.Transaction SetTxsPending(hashes [][]byte) GetTxsToExecute(hashes [][]byte) ([]*core.Transaction, [][]byte) RemoveTxs(hashes [][]byte) PutTxsToQueue(hashes [][]byte) SyncTxs(peer *core.PublicKey, hashes [][]byte) error GetTx(hash []byte) *core.Transaction GetStatus() txpool.Status GetTxStatus(hash []byte) txpool.TxStatus }
Click to show internal directories.
Click to hide internal directories.