clique

package
v0.0.0-...-f8b7a73 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 2019 License: GPL-3.0 Imports: 23 Imported by: 0

Documentation

Overview

包裹集团实施权威证明共识引擎。

Index

Constants

This section is empty.

Variables

View Source
var (

	//如果块的时间戳低于,则返回errInvalidTimestamp
	//上一个块的时间戳+最小块周期。
	ErrInvalidTimestamp = errors.New("invalid timestamp")
)

将块标记为无效的各种错误消息。这些应该是私人的 防止在 代码库,如果引擎被换出,则固有的中断。请把普通 共识包中的错误类型。

Functions

func CalcDifficulty

func CalcDifficulty(snap *Snapshot, signer common.Address) *big.Int

计算难度是难度调整算法。它又回到了困难中 一个新的块应该基于链中以前的块和 当前签名者。

Types

type API

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

API是面向用户的RPC API,允许控制签名者和投票 权力证明计划的机制。

func (*API) Discard

func (api *API) Discard(address common.Address)

Discard删除当前正在运行的建议,阻止签名者强制转换 进一步投票(赞成或反对)。

func (*API) GetSigners

func (api *API) GetSigners(number *rpc.BlockNumber) ([]common.Address, error)

GetSigners检索指定块上的授权签名者列表。

func (*API) GetSignersAtHash

func (api *API) GetSignersAtHash(hash common.Hash) ([]common.Address, error)

getsignersathash检索指定块上的授权签名者列表。

func (*API) GetSnapshot

func (api *API) GetSnapshot(number *rpc.BlockNumber) (*Snapshot, error)

GetSnapshot检索给定块的状态快照。

func (*API) GetSnapshotAtHash

func (api *API) GetSnapshotAtHash(hash common.Hash) (*Snapshot, error)

GetSnapshotatHash检索给定块的状态快照。

func (*API) Proposals

func (api *API) Proposals() map[common.Address]bool

建议返回节点尝试维护和投票的当前建议。

func (*API) Propose

func (api *API) Propose(address common.Address, auth bool)

Propose注入一个新的授权建议,签名者将尝试 推开。

type Clique

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

集团是权威的证明,共识引擎建议支持 Ropsten攻击后的以太坊测试网。

func New

func New(config *params.CliqueConfig, db ethdb.Database) *Clique

新创建的集团权威证明共识引擎 签名者设置为用户提供的签名者。

func (*Clique) APIs

func (c *Clique) APIs(chain consensus.ChainReader) []rpc.API

API实现共识引擎,返回面向用户的RPC API以允许 控制签名者投票。

func (*Clique) Author

func (c *Clique) Author(header *types.Header) (common.Address, error)

作者实现共识引擎,返回以太坊地址恢复 从标题的额外数据部分的签名。

func (*Clique) Authorize

func (c *Clique) Authorize(signer common.Address, signFn SignerFn)

authorize向共识引擎注入一个私钥以创建新的块 用。

func (*Clique) CalcDifficulty

func (c *Clique) CalcDifficulty(chain consensus.ChainReader, time uint64, parent *types.Header) *big.Int

计算难度是难度调整算法。它又回到了困难中 一个新的块应该基于链中以前的块和 当前签名者。

func (*Clique) Close

func (c *Clique) Close() error

CLOSE实现共识引擎。这是一个没有背景线的小集团的noop。

func (*Clique) Finalize

func (c *Clique) Finalize(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts []*types.Receipt) (*types.Block, error)

完成执行共识。引擎,确保没有设置叔叔,也没有阻止 奖励,并返回最后一个块。

func (*Clique) Prepare

func (c *Clique) Prepare(chain consensus.ChainReader, header *types.Header) error

准备执行共识。引擎,准备 用于在顶部运行事务的标题。

func (*Clique) Seal

func (c *Clique) Seal(chain consensus.ChainReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error

seal实现共识。引擎,试图创建一个密封块使用 本地签名凭据。

func (*Clique) SealHash

func (c *Clique) SealHash(header *types.Header) common.Hash

sealHash返回块在被密封之前的哈希。

func (*Clique) VerifyHeader

func (c *Clique) VerifyHeader(chain consensus.ChainReader, header *types.Header, seal bool) error

verifyheader检查头是否符合共识规则。

func (*Clique) VerifyHeaders

func (c *Clique) VerifyHeaders(chain consensus.ChainReader, headers []*types.Header, seals []bool) (chan<- struct{}, <-chan error)

VerifyHeaders类似于VerifyHeader,但会验证一批头。这个 方法返回一个退出通道以中止操作,并返回一个结果通道以 检索异步验证(顺序是输入切片的顺序)。

func (*Clique) VerifySeal

func (c *Clique) VerifySeal(chain consensus.ChainReader, header *types.Header) error

验证seal是否执行consension.engine,检查签名是否包含 头部满足共识协议要求。

func (*Clique) VerifyUncles

func (c *Clique) VerifyUncles(chain consensus.ChainReader, block *types.Block) error

verifyuncles实现converse.engine,始终返回任何 因为这个共识机制不允许叔叔。

type SignerFn

type SignerFn func(accounts.Account, []byte) ([]byte, error)

signerfn是一个签名者回调函数,用于请求哈希由 备用账户。

type Snapshot

type Snapshot struct {
	Number  uint64                      `json:"number"`  //创建快照的块号
	Hash    common.Hash                 `json:"hash"`    //创建快照的块哈希
	Signers map[common.Address]struct{} `json:"signers"` //此时的授权签名人集合
	Recents map[uint64]common.Address   `json:"recents"` //垃圾邮件保护的最近签名者集
	Votes   []*Vote                     `json:"votes"`   //按时间顺序投票的名单
	Tally   map[common.Address]Tally    `json:"tally"`   //当前投票计数以避免重新计算
	// contains filtered or unexported fields
}

快照是在给定时间点上投票的授权状态。

type Tally

type Tally struct {
	Authorize bool `json:"authorize"` //投票是授权还是踢某人
	Votes     int  `json:"votes"`     //到目前为止想要通过提案的票数
}

计票是一种简单的计票方式,用来保持当前的计票结果。投票赞成 反对这项提议并不算在内,因为它等同于不投票。

type Vote

type Vote struct {
	Signer    common.Address `json:"signer"`    //投票的授权签署人
	Block     uint64         `json:"block"`     //投票所投的区号(过期旧票)
	Address   common.Address `json:"address"`   //正在投票更改其授权的帐户
	Authorize bool           `json:"authorize"` //是否授权或取消对投票帐户的授权
}

投票代表授权签名人修改 授权列表。

Jump to

Keyboard shortcuts

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