Documentation ¶
Overview ¶
Package pbft
@author: xwc1125
Package pbft ¶
@author: xwc1125
Package pbft ¶
@author: xwc1125
Package pbft ¶
@author: xwc1125
Package pbft ¶
@author: xwc1125
Package pbft ¶
@author: xwc1125
Package pbft ¶
@author: xwc1125
Package pbft ¶
@author: xwc1125
Index ¶
- func NewConsensus(rootCtx context.Context, opts ...option) (protocol.Consensus, error)
- func WithBlockReader(blockReader protocol.BlockReader) option
- func WithBroadcaster(broadcaster protocol.Broadcaster) option
- func WithConfig(config protocol.Config) option
- func WithDatabaseReader(dbReader protocol.DatabaseReader) option
- func WithKVDB(db kvstore.Database) option
- func WithNodeKey(nodeKey protocol.NodeKey) option
- type API
- type ConsensusData
- type ManagementVote
- type Snapshot
- type Tally
- type ValidatorVote
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewConsensus ¶
NewConsensus 创建pbft
func WithBlockReader ¶
func WithBlockReader(blockReader protocol.BlockReader) option
func WithBroadcaster ¶
func WithBroadcaster(broadcaster protocol.Broadcaster) option
func WithConfig ¶
func WithDatabaseReader ¶
func WithDatabaseReader(dbReader protocol.DatabaseReader) option
func WithNodeKey ¶
Types ¶
type API ¶
type API struct {
// contains filtered or unexported fields
}
API api对象
func (*API) GetSnapshot ¶
func (api *API) GetSnapshot(number *rpc.BlockNumber) (*Snapshot, error)
type ConsensusData ¶
type ConsensusData struct { CommittedSeal []*signature.SignResult Managers []types.Address // 管理员地址 Validators []string // 验证者地址 MVote *ManagementVote `rlp:"nil"` VVote *ValidatorVote `rlp:"nil"` }
ConsensusData 区块头中的共识数据 [注意]在创世文件中,初始化的managers和Validators放在hashmap中, 需要解析创世的内容
func (*ConsensusData) Deserialize ¶
func (c *ConsensusData) Deserialize(d []byte) error
func (*ConsensusData) FromConsensus ¶
func (c *ConsensusData) FromConsensus(consensus *models.Consensus) error
func (*ConsensusData) Serialize ¶
func (c *ConsensusData) Serialize() ([]byte, error)
func (ConsensusData) ToConsensus ¶
func (c ConsensusData) ToConsensus() (*models.Consensus, error)
type ManagementVote ¶
type ManagementVote struct { Manager types.Address `json:"manager"` // 此次投票的授权validator Candidate types.Address `json:"candidate"` // 需被投票的候选人地址 Authorize bool `json:"authorize"` // 是否投票候选人 DeadlineHeight *big.Int `json:"deadline"` // 截止到某个区块前投票有效 Signature []byte `json:"signature"` // 签名数据 }
ManagementVote 管理员添加删除投票
type Snapshot ¶
type Snapshot struct { Epoch uint64 // 需要检测和重新投票的区块个数 Height uint64 // 创建快照的块高 Hash types.Hash // 创建快照的块hash ValSet pbftProtocol.ValidatorSet // 快照对应的验证者集合 // contains filtered or unexported fields }
Snapshot 快照
func (*Snapshot) UnmarshalJSON ¶
UnmarshalJSON 反序列化
type Tally ¶
type Tally struct { Authorize bool `json:"authorize"` // 是授权还是剔除的投票 Votes int `json:"votes"` // 投赞成票数 }
Tally 简单的计票方法 保存当前的投票分数。 反对该提案的选票不予统计,这等于不投票。
type ValidatorVote ¶
type ValidatorVote struct { Manager types.Address `json:"manager"` // 此次投票的授权validator Validator string `json:"validator"` // 需被投票的验证者地址 Authorize bool `json:"authorize"` // 是否投票验证者 DeadlineHeight *big.Int `json:"deadline"` // 截止到某个区块前投票有效 Signature []byte `json:"signature"` // 签名数据 }
ValidatorVote 节点验证者添加删除投票
Source Files ¶
Click to show internal directories.
Click to hide internal directories.