types

package
v0.0.0-...-39cdb81 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: 20 Imported by: 0

Documentation

Overview

包类型包含与以太坊共识相关的数据类型。

Index

Constants

View Source
const (
	//BloomByteLength表示头日志Bloom中使用的字节数。
	BloomByteLength = 256

	//BloomBitLength表示在头日志Bloom中使用的位数。
	BloomBitLength = 8 * BloomByteLength
)
View Source
const (
	//ReceiptStatusFailed是执行失败时事务的状态代码。
	ReceiptStatusFailed = uint64(0)

	//ReceiptStatusSuccessful是执行成功时事务的状态代码。
	ReceiptStatusSuccessful = uint64(1)
)

Variables

View Source
var (
	EmptyRootHash  = DeriveSha(Transactions{})
	EmptyUncleHash = CalcUncleHash(nil)
)
View Source
var Bloom9 = bloom9
View Source
var (
	ErrInvalidChainId = errors.New("invalid chain id for signer")
)
View Source
var (
	ErrInvalidSig = errors.New("invalid transaction v, r, s values")
)

Functions

func BloomLookup

func BloomLookup(bin Bloom, topic bytesBacked) bool

func CalcUncleHash

func CalcUncleHash(uncles []*Header) common.Hash

func DeriveSha

func DeriveSha(list DerivableList) common.Hash

func LogsBloom

func LogsBloom(logs []*Log) *big.Int

func Number

func Number(b1, b2 *Block) bool

func Sender

func Sender(signer Signer, tx *Transaction) (common.Address, error)

sender返回使用secp256k1从签名(v,r,s)派生的地址 椭圆曲线及其推导失败或错误时的误差 签名。

发送方可以缓存地址,允许使用它而不管 签名方法。如果缓存的签名者 与当前调用中使用的签名者不匹配。

Types

type Block

type Block struct {

	//这些字段由包eth用于跟踪
	//对等块间中继。
	ReceivedAt   time.Time
	ReceivedFrom interface{}
	// contains filtered or unexported fields
}

块表示以太坊区块链中的整个块。

func NewBlock

func NewBlock(header *Header, txs []*Transaction, uncles []*Header, receipts []*Receipt) *Block

new block创建一个新块。复制输入数据, 对标题和字段值的更改不会影响 块。

头中txshash、unclehash、receipthash和bloom的值 被忽略并设置为从给定的TxS、Uncles派生的值 以及收据。

func NewBlockWithHeader

func NewBlockWithHeader(header *Header) *Block

newblockwithheader使用给定的头数据创建一个块。这个 标题数据被复制,更改为标题和字段值 不会影响程序块。

func (*Block) Bloom

func (b *Block) Bloom() Bloom

func (*Block) Body

func (b *Block) Body() *Body

body返回块的非头内容。

func (*Block) Coinbase

func (b *Block) Coinbase() common.Address

func (*Block) DecodeRLP

func (b *Block) DecodeRLP(s *rlp.Stream) error

decoderlp解码以太坊

func (*Block) DeprecatedTd

func (b *Block) DeprecatedTd() *big.Int

deprecatedtd是提取块的td的旧遗物。它在 仅用于方便将数据库从旧格式升级到 新建,之后应删除。不要使用!

func (*Block) Difficulty

func (b *Block) Difficulty() *big.Int

func (*Block) EncodeRLP

func (b *Block) EncodeRLP(w io.Writer) error

encoderlp将b序列化为ethereum rlp块格式。

func (*Block) Extra

func (b *Block) Extra() []byte

func (*Block) GasLimit

func (b *Block) GasLimit() uint64

func (*Block) GasUsed

func (b *Block) GasUsed() uint64

func (*Block) Hash

func (b *Block) Hash() common.Hash

hash返回b头的keccak256哈希。 哈希在第一次调用时计算,然后缓存。

func (*Block) Header

func (b *Block) Header() *Header

func (*Block) MixDigest

func (b *Block) MixDigest() common.Hash

func (*Block) Nonce

func (b *Block) Nonce() uint64

func (*Block) Number

func (b *Block) Number() *big.Int

func (*Block) NumberU64

func (b *Block) NumberU64() uint64

func (*Block) ParentHash

func (b *Block) ParentHash() common.Hash

func (*Block) ReceiptHash

func (b *Block) ReceiptHash() common.Hash

func (*Block) Root

func (b *Block) Root() common.Hash

func (*Block) Size

func (b *Block) Size() common.StorageSize

SIZE返回块的真实RLP编码存储大小,可以通过编码 并返回它,或者返回以前缓存的值。

func (*Block) Time

func (b *Block) Time() *big.Int

func (*Block) Transaction

func (b *Block) Transaction(hash common.Hash) *Transaction

func (*Block) Transactions

func (b *Block) Transactions() Transactions

func (*Block) TxHash

func (b *Block) TxHash() common.Hash

func (*Block) UncleHash

func (b *Block) UncleHash() common.Hash

func (*Block) Uncles

func (b *Block) Uncles() []*Header

func (*Block) WithBody

func (b *Block) WithBody(transactions []*Transaction, uncles []*Header) *Block

WithBody返回具有给定事务和叔叔内容的新块。

func (*Block) WithSeal

func (b *Block) WithSeal(header *Header) *Block

WithSeal returns a new block with the data from b but the header replaced with 密封的那个。

type BlockBy

type BlockBy func(b1, b2 *Block) bool

func (BlockBy) Sort

func (self BlockBy) Sort(blocks Blocks)

type BlockNonce

type BlockNonce [8]byte

blocknonce是一个64位哈希,它证明 混合哈希)进行了足够的计算 走出街区。

func EncodeNonce

func EncodeNonce(i uint64) BlockNonce

encodenonce将给定的整数转换为块nonce。

func (BlockNonce) MarshalText

func (n BlockNonce) MarshalText() ([]byte, error)

marshalText将n编码为带0x前缀的十六进制字符串。

func (BlockNonce) Uint64

func (n BlockNonce) Uint64() uint64

uint64返回块nonce的整数值。

func (*BlockNonce) UnmarshalText

func (n *BlockNonce) UnmarshalText(input []byte) error

UnmarshalText实现encoding.textUnmarshaller。

type Blocks

type Blocks []*Block

type Bloom

type Bloom [BloomByteLength]byte

Bloom表示2048位Bloom过滤器。

func BytesToBloom

func BytesToBloom(b []byte) Bloom

bytestobloom将字节片转换为bloom过滤器。 如果B的尺寸不合适,就会恐慌。

func CreateBloom

func CreateBloom(receipts Receipts) Bloom

func (*Bloom) Add

func (b *Bloom) Add(d *big.Int)

向过滤器中添加d。将来调用test(d)将返回true。

func (Bloom) Big

func (b Bloom) Big() *big.Int

big将b转换为大整数。

func (Bloom) Bytes

func (b Bloom) Bytes() []byte

func (Bloom) MarshalText

func (b Bloom) MarshalText() ([]byte, error)

MarshalText将B编码为带0x前缀的十六进制字符串。

func (*Bloom) SetBytes

func (b *Bloom) SetBytes(d []byte)

StimeByb将B的内容设置为给定字节。 如果d的大小不合适,它会恐慌。

func (Bloom) Test

func (b Bloom) Test(test *big.Int) bool

func (Bloom) TestBytes

func (b Bloom) TestBytes(test []byte) bool

func (*Bloom) UnmarshalText

func (b *Bloom) UnmarshalText(input []byte) error

将文本B取消标记为带0x前缀的十六进制字符串。

type Body

type Body struct {
	Transactions []*Transaction
	Uncles       []*Header
}

Body是一个简单的(可变的、非安全的)数据容器,用于存储和移动 块的数据内容(事务和叔叔)在一起。

type DerivableList

type DerivableList interface {
	Len() int
	GetRlp(i int) []byte
}

type EIP155Signer

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

EIP155事务使用EIP155规则实现签名者。

func NewEIP155Signer

func NewEIP155Signer(chainId *big.Int) EIP155Signer

func (EIP155Signer) Equal

func (s EIP155Signer) Equal(s2 Signer) bool

func (EIP155Signer) Hash

func (s EIP155Signer) Hash(tx *Transaction) common.Hash

hash返回发送方要签名的哈希。 它不能唯一标识事务。

func (EIP155Signer) Sender

func (s EIP155Signer) Sender(tx *Transaction) (common.Address, error)

func (EIP155Signer) SignatureValues

func (s EIP155Signer) SignatureValues(tx *Transaction, sig []byte) (R, S, V *big.Int, err error)

SignatureValues返回签名值。这个签名 需要采用[R V]格式,其中V为0或1。

type FrontierSigner

type FrontierSigner struct{}

func (FrontierSigner) Equal

func (s FrontierSigner) Equal(s2 Signer) bool

func (FrontierSigner) Hash

func (fs FrontierSigner) Hash(tx *Transaction) common.Hash

hash返回发送方要签名的哈希。 它不能唯一标识事务。

func (FrontierSigner) Sender

func (fs FrontierSigner) Sender(tx *Transaction) (common.Address, error)

func (FrontierSigner) SignatureValues

func (fs FrontierSigner) SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error)

SignatureValues返回签名值。这个签名 需要采用[R V]格式,其中V为0或1。

type Header struct {
	ParentHash  common.Hash    `json:"parentHash"       gencodec:"required"`
	UncleHash   common.Hash    `json:"sha3Uncles"       gencodec:"required"`
	Coinbase    common.Address `json:"miner"            gencodec:"required"`
	Root        common.Hash    `json:"stateRoot"        gencodec:"required"`
	TxHash      common.Hash    `json:"transactionsRoot" gencodec:"required"`
	ReceiptHash common.Hash    `json:"receiptsRoot"     gencodec:"required"`
	Bloom       Bloom          `json:"logsBloom"        gencodec:"required"`
	Difficulty  *big.Int       `json:"difficulty"       gencodec:"required"`
	Number      *big.Int       `json:"number"           gencodec:"required"`
	GasLimit    uint64         `json:"gasLimit"         gencodec:"required"`
	GasUsed     uint64         `json:"gasUsed"          gencodec:"required"`
	Time        *big.Int       `json:"timestamp"        gencodec:"required"`
	Extra       []byte         `json:"extraData"        gencodec:"required"`
	MixDigest   common.Hash    `json:"mixHash"`
	Nonce       BlockNonce     `json:"nonce"`
}

header表示以太坊区块链中的区块头。

func CopyHeader

func CopyHeader(h *Header) *Header

copy header创建块头的深度副本,以防止 修改头变量。

func (*Header) Hash

func (h *Header) Hash() common.Hash

hash返回头的块hash,它只是其 RLP编码。

func (Header) MarshalJSON

func (h Header) MarshalJSON() ([]byte, error)

marshaljson封送为json。

func (*Header) Size

func (h *Header) Size() common.StorageSize

SIZE返回所有内部内容使用的大致内存。它被使用 估计和限制各种缓存的内存消耗。

func (*Header) UnmarshalJSON

func (h *Header) UnmarshalJSON(input []byte) error

取消标记JSON取消标记JSON。

type HomesteadSigner

type HomesteadSigner struct{ FrontierSigner }

HomeSteadTransaction使用 宅基地规则。

func (HomesteadSigner) Equal

func (s HomesteadSigner) Equal(s2 Signer) bool

func (HomesteadSigner) Sender

func (hs HomesteadSigner) Sender(tx *Transaction) (common.Address, error)

func (HomesteadSigner) SignatureValues

func (hs HomesteadSigner) SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error)

SignatureValues返回签名值。这个签名 需要采用[R V]格式,其中V为0或1。

type Log

type Log struct {
	//共识领域:
	//产生事件的合同的地址
	Address common.Address `json:"address" gencodec:"required"`
	//合同提供的主题列表。
	Topics []common.Hash `json:"topics" gencodec:"required"`
	//由合同提供,通常为ABI编码
	Data []byte `json:"data" gencodec:"required"`

	//派生字段。这些字段由节点填充
	//但没有达成共识。
	//包含事务的块
	BlockNumber uint64 `json:"blockNumber"`
	//事务的哈希
	TxHash common.Hash `json:"transactionHash" gencodec:"required"`
	//块中事务的索引
	TxIndex uint `json:"transactionIndex" gencodec:"required"`
	//包含事务的块的哈希
	BlockHash common.Hash `json:"blockHash"`
	//块中日志的索引
	Index uint `json:"logIndex" gencodec:"required"`

	//如果由于链重组而还原此日志,则删除的字段为真。
	//如果通过筛选查询接收日志,则必须注意此字段。
	Removed bool `json:"removed"`
}

日志表示合同日志事件。这些事件由日志操作码生成,并且 由节点存储/索引。

func (*Log) DecodeRLP

func (l *Log) DecodeRLP(s *rlp.Stream) error

decoderlp实现rlp.decoder。

func (*Log) EncodeRLP

func (l *Log) EncodeRLP(w io.Writer) error

encoderlp实现rlp.encoder。

func (Log) MarshalJSON

func (l Log) MarshalJSON() ([]byte, error)

func (*Log) UnmarshalJSON

func (l *Log) UnmarshalJSON(input []byte) error

type LogForStorage

type LogForStorage Log

logForStorage是一个围绕一个日志的包装器,它扁平化并解析 包含非共识字段的日志。

func (*LogForStorage) DecodeRLP

func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error

decoderlp实现rlp.decoder。

func (*LogForStorage) EncodeRLP

func (l *LogForStorage) EncodeRLP(w io.Writer) error

encoderlp实现rlp.encoder。

type Message

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

消息是完全派生的事务并实现core.message

注意:在将来的公关中,这将被删除。

func NewMessage

func NewMessage(from common.Address, to *common.Address, nonce uint64, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte, checkNonce bool) Message

func (Message) CheckNonce

func (m Message) CheckNonce() bool

func (Message) Data

func (m Message) Data() []byte

func (Message) From

func (m Message) From() common.Address

func (Message) Gas

func (m Message) Gas() uint64

func (Message) GasPrice

func (m Message) GasPrice() *big.Int

func (Message) Nonce

func (m Message) Nonce() uint64

func (Message) To

func (m Message) To() *common.Address

func (Message) Value

func (m Message) Value() *big.Int

type Receipt

type Receipt struct {
	//共识领域
	PostState         []byte `json:"root"`
	Status            uint64 `json:"status"`
	CumulativeGasUsed uint64 `json:"cumulativeGasUsed" gencodec:"required"`
	Bloom             Bloom  `json:"logsBloom"         gencodec:"required"`
	Logs              []*Log `json:"logs"              gencodec:"required"`

	//实现字段(不要重新排序!)
	TxHash          common.Hash    `json:"transactionHash" gencodec:"required"`
	ContractAddress common.Address `json:"contractAddress"`
	GasUsed         uint64         `json:"gasUsed" gencodec:"required"`
}

收据表示交易的结果。

func NewReceipt

func NewReceipt(root []byte, failed bool, cumulativeGasUsed uint64) *Receipt

NewReceipt创建一个准交易凭证,复制init字段。

func (*Receipt) DecodeRLP

func (r *Receipt) DecodeRLP(s *rlp.Stream) error

decoderlp实现rlp.decoder,并加载收据的共识字段 来自RLP流。

func (*Receipt) EncodeRLP

func (r *Receipt) EncodeRLP(w io.Writer) error

encoderlp实现rlp.encoder,并扁平收据的共识字段 进入RLP流。如果不存在后置状态,则假定为拜占庭分叉。

func (Receipt) MarshalJSON

func (r Receipt) MarshalJSON() ([]byte, error)

marshaljson封送为json。

func (*Receipt) Size

func (r *Receipt) Size() common.StorageSize

SIZE返回所有内部内容使用的大致内存。它被使用 估计和限制各种缓存的内存消耗。

func (*Receipt) UnmarshalJSON

func (r *Receipt) UnmarshalJSON(input []byte) error

取消标记JSON取消标记JSON。

type ReceiptForStorage

type ReceiptForStorage Receipt

ReceiptForStorage是一个围绕收据的包装,它扁平化并解析 收据的全部内容,而不是最初的共识字段。

func (*ReceiptForStorage) DecodeRLP

func (r *ReceiptForStorage) DecodeRLP(s *rlp.Stream) error

decoderlp实现rlp.decoder,并加载共识和实现 来自RLP流的收据字段。

func (*ReceiptForStorage) EncodeRLP

func (r *ReceiptForStorage) EncodeRLP(w io.Writer) error

encoderlp实现rlp.encoder,并平展收据的所有内容字段 进入RLP流。

type Receipts

type Receipts []*Receipt

Receipts是一个围绕收据数组的包装器,用于实现可派生列表。

func (Receipts) GetRlp

func (r Receipts) GetRlp(i int) []byte

getrlp返回列表中一个收据的rlp编码。

func (Receipts) Len

func (r Receipts) Len() int

Len返回此列表中的收货数量。

type Signer

type Signer interface {
	//发送方返回事务的发送方地址。
	Sender(tx *Transaction) (common.Address, error)
	//signatureValues返回与
	//签名。
	SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error)
	//哈希返回要签名的哈希。
	Hash(tx *Transaction) common.Hash
	//如果给定的签名者与接收者相同,则equal返回true。
	Equal(Signer) bool
}

签名者封装事务签名处理。请注意,此接口不是 稳定的API,可以随时更改以适应新的协议规则。

func MakeSigner

func MakeSigner(config *params.ChainConfig, blockNumber *big.Int) Signer

MakeSigner根据给定的链配置和块号返回一个签名者。

type StorageBlock

type StorageBlock Block

[被ETH/63弃用] 存储块定义存储在 状态数据库。存储块编码包含 否则需要重新计算。

func (*StorageBlock) DecodeRLP

func (b *StorageBlock) DecodeRLP(s *rlp.Stream) error

[被ETH/63弃用]

type Transaction

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

func NewContractCreation

func NewContractCreation(nonce uint64, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction

func NewTransaction

func NewTransaction(nonce uint64, to common.Address, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction

func SignTx

func SignTx(tx *Transaction, s Signer, prv *ecdsa.PrivateKey) (*Transaction, error)

signtx使用给定的签名者和私钥对事务进行签名

func (*Transaction) AsMessage

func (tx *Transaction) AsMessage(s Signer) (Message, error)

as message将事务作为core.message返回。

asmessage要求签名者派生发件人。

将消息重命名为不那么武断的内容?

func (*Transaction) ChainId

func (tx *Transaction) ChainId() *big.Int

chainID返回为此事务签名的链ID(如果有)

func (*Transaction) CheckNonce

func (tx *Transaction) CheckNonce() bool

func (*Transaction) Cost

func (tx *Transaction) Cost() *big.Int

成本回报金额+喘息*气限。

func (*Transaction) Data

func (tx *Transaction) Data() []byte

func (*Transaction) DecodeRLP

func (tx *Transaction) DecodeRLP(s *rlp.Stream) error

decoderlp实现rlp.解码器

func (*Transaction) EncodeRLP

func (tx *Transaction) EncodeRLP(w io.Writer) error

encoderlp实现rlp.encoder

func (*Transaction) Gas

func (tx *Transaction) Gas() uint64

func (*Transaction) GasPrice

func (tx *Transaction) GasPrice() *big.Int

func (*Transaction) Hash

func (tx *Transaction) Hash() common.Hash

hash散列tx的rlp编码。 它唯一地标识事务。

func (*Transaction) MarshalJSON

func (tx *Transaction) MarshalJSON() ([]byte, error)

marshaljson编码Web3 RPC事务格式。

func (*Transaction) Nonce

func (tx *Transaction) Nonce() uint64

func (*Transaction) Protected

func (tx *Transaction) Protected() bool

protected返回事务是否受到重播保护。

func (*Transaction) RawSignatureValues

func (tx *Transaction) RawSignatureValues() (*big.Int, *big.Int, *big.Int)

func (*Transaction) Size

func (tx *Transaction) Size() common.StorageSize

SIZE返回事务的真正RLP编码存储大小,可以是 编码并返回它,或者返回以前缓存的值。

func (*Transaction) To

func (tx *Transaction) To() *common.Address

返回事务的收件人地址。 如果交易是合同创建,则返回零。

func (*Transaction) UnmarshalJSON

func (tx *Transaction) UnmarshalJSON(input []byte) error

unmashaljson解码Web3 RPC事务格式。

func (*Transaction) Value

func (tx *Transaction) Value() *big.Int

func (*Transaction) WithSignature

func (tx *Transaction) WithSignature(signer Signer, sig []byte) (*Transaction, error)

WithSignature返回具有给定签名的新事务。 此签名必须采用[R V]格式,其中V为0或1。

type Transactions

type Transactions []*Transaction

事务是用于基本排序的事务切片类型。

func TxDifference

func TxDifference(a, b Transactions) Transactions

txdifference返回一个新集合,即A和B之间的差。

func (Transactions) GetRlp

func (s Transactions) GetRlp(i int) []byte

getrlp实现rlpable并返回rlp中s的第i个元素。

func (Transactions) Len

func (s Transactions) Len() int

len返回s的长度。

func (Transactions) Swap

func (s Transactions) Swap(i, j int)

交换交换s中的i'th和j'th元素。

type TransactionsByPriceAndNonce

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

TransactionsByPriceAndOnce表示一组可以返回的事务 按利润最大化排序的交易,同时支持删除 不可执行帐户的整批事务。

func NewTransactionsByPriceAndNonce

func NewTransactionsByPriceAndNonce(signer Signer, txs map[common.Address]Transactions) *TransactionsByPriceAndNonce

newTransactionByPriceAndOnce创建一个可以检索 以不兑现的方式对交易进行价格排序。

注意,输入映射是重新拥有的,因此调用方不应再与 如果在提供给构造函数之后。

func (*TransactionsByPriceAndNonce) Peek

Peek按价格返回下一个交易。

func (*TransactionsByPriceAndNonce) Pop

func (t *TransactionsByPriceAndNonce) Pop()

pop删除最佳事务,*而不是*用下一个事务替换它 相同的帐户。当无法执行事务时应使用此选项 因此,所有后续的都应该从同一帐户中丢弃。

func (*TransactionsByPriceAndNonce) Shift

func (t *TransactionsByPriceAndNonce) Shift()

SHIFT将当前的最佳标题替换为同一帐户中的下一个标题。

type TxByNonce

type TxByNonce Transactions

txbynonce实现排序接口以允许对事务列表进行排序 在他们的眼前。这通常只适用于从 单一账户,否则一个非现金比较没有多大意义。

func (TxByNonce) Len

func (s TxByNonce) Len() int

func (TxByNonce) Less

func (s TxByNonce) Less(i, j int) bool

func (TxByNonce) Swap

func (s TxByNonce) Swap(i, j int)

type TxByPrice

type TxByPrice Transactions

txbyprice同时实现了sort和heap接口,使其非常有用 对于所有一次性排序以及单独添加和删除元素。

func (TxByPrice) Len

func (s TxByPrice) Len() int

func (TxByPrice) Less

func (s TxByPrice) Less(i, j int) bool

func (*TxByPrice) Pop

func (s *TxByPrice) Pop() interface{}

func (*TxByPrice) Push

func (s *TxByPrice) Push(x interface{})

func (TxByPrice) Swap

func (s TxByPrice) Swap(i, j int)

Jump to

Keyboard shortcuts

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