consensus

package
v0.0.0-...-92cc422 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2019 License: GPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

套餐共识实现不同的以太坊共识引擎。

Index

Constants

This section is empty.

Variables

View Source
var (
	//当验证块需要祖先时返回errUnknownancestor
	//这是未知的。
	ErrUnknownAncestor = errors.New("unknown ancestor")

	//验证块需要祖先时返回errprunedancestor
	//这是已知的,但其状态不可用。
	ErrPrunedAncestor = errors.New("pruned ancestor")

	//当块的时间戳在将来时,根据
	//到当前节点。
	ErrFutureBlock = errors.New("block in the future")

	//如果块的编号不等于其父块的编号,则返回errInvalidNumber。
	//加一。
	ErrInvalidNumber = errors.New("invalid block number")
)

Functions

This section is empty.

Types

type ChainReader

type ChainReader interface {
	//config检索区块链的链配置。
	Config() *params.ChainConfig
	//当前头从本地链中检索当前头。
	CurrentHeader() *types.Header
	//GetHeader按哈希和数字从数据库中检索块头。
	GetHeader(hash common.Hash, number uint64) *types.Header
	//GetHeaderByNumber按编号从数据库中检索块头。
	GetHeaderByNumber(number uint64) *types.Header
	//GetHeaderByHash通过其哈希从数据库中检索块头。
	GetHeaderByHash(hash common.Hash) *types.Header
	//GetBlock按哈希和数字从数据库中检索块。
	GetBlock(hash common.Hash, number uint64) *types.Block
}

ChainReader定义访问本地

type Engine

type Engine interface {
	//作者检索创建给定帐户的以太坊地址
	//块,如果达成一致,则可能不同于标题的coinbase
	//引擎基于签名。
	Author(header *types.Header) (common.Address, error)

	//验证标题检查标题是否符合
	//给定发动机。可在此处选择或明确地验证密封件。
	//通过VerifySeal方法。
	//verifyheader(链式读卡器,header*types.header,seal bool)错误
	VerifyHeader(chain ChainReader, header *types.Header, seal bool, interval uint64) error
	//VerifyHeaders类似于VerifyHeader,但会验证一批头
	//同时地。该方法返回退出通道以中止操作,并且
	//用于检索异步验证的结果通道(顺序为
	//输入切片)。
	//verifyheaders(chain chainreader,headers[]*types.header,seals[]bool,blockinterval uint64)(chan<-struct,<-chan error)
	VerifyHeaders(chain ChainReader, headers []*types.Header, seals []bool) (chan<- struct{}, <-chan error)

	//验证叔父验证给定区块的叔父是否符合共识
	//给定引擎的规则。
	VerifyUncles(chain ChainReader, block *types.Block) error

	//根据
	//给定引擎的共识规则。
	//verifyseal(链条阅读器,header*types.header)错误
	VerifySeal(chain ChainReader, header *types.Header, genesisheader *types.Header) error

	//Prepare根据
	//特定引擎的规则。更改是以内联方式执行的。
	Prepare(chain ChainReader, header *types.Header) error

	//Finalize运行任何交易后状态修改(例如块奖励)
	//组装最后一块。
	//注意:块头和状态数据库可能会更新以反映
	//在最终确定时达成共识的规则(例如集体奖励)。
	Finalize(chain ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction,
		uncles []*types.Header, receipts []*types.Receipt, dposContext *types.DposContext) (*types.Block, error)

	//Seal使用本地矿工的
	//密封顶部。
	Seal(chain ChainReader, block *types.Block, stop <-chan struct{}) (*types.Block, error)

	//计算难度是难度调整算法。它又回到了困难中
	//一个新的街区应该有。
	CalcDifficulty(chain ChainReader, time uint64, parent *types.Header) *big.Int

	//API返回此共识引擎提供的RPC API。
	APIs(chain ChainReader) []rpc.API

	//CLOSE终止由共识引擎维护的任何后台线程。
	Close() error
}

引擎是一个算法不可知的共识引擎。

type PoW

type PoW interface {
	Engine

	//hashRate返回POW共识引擎的当前挖掘hashRate。
	Hashrate() float64
}

POW是基于工作证明的共识引擎。

Directories

Path Synopsis
包裹集团实施权威证明共识引擎。
包裹集团实施权威证明共识引擎。
此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

Jump to

Keyboard shortcuts

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