Documentation ¶
Overview ¶
包类型包含与以太坊共识相关的数据类型。
Index ¶
- Constants
- Variables
- func BloomLookup(bin Bloom, topic bytesBacked) bool
- func CalcUncleHash(uncles []*Header) common.Hash
- func DeriveSha(list DerivableList) common.Hash
- func LogsBloom(logs []*Log) *big.Int
- func Number(b1, b2 *Block) bool
- func Sender(signer Signer, tx *Transaction) (common.Address, error)
- type Block
- func (b *Block) Bloom() Bloom
- func (b *Block) Body() *Body
- func (b *Block) Coinbase() common.Address
- func (b *Block) DecodeRLP(s *rlp.Stream) error
- func (b *Block) DeprecatedTd() *big.Int
- func (b *Block) Difficulty() *big.Int
- func (b *Block) EncodeRLP(w io.Writer) error
- func (b *Block) Extra() []byte
- func (b *Block) GasLimit() uint64
- func (b *Block) GasUsed() uint64
- func (b *Block) Hash() common.Hash
- func (b *Block) Header() *Header
- func (b *Block) MixDigest() common.Hash
- func (b *Block) Nonce() uint64
- func (b *Block) Number() *big.Int
- func (b *Block) NumberU64() uint64
- func (b *Block) ParentHash() common.Hash
- func (b *Block) ReceiptHash() common.Hash
- func (b *Block) Root() common.Hash
- func (b *Block) Size() common.StorageSize
- func (b *Block) Time() *big.Int
- func (b *Block) Transaction(hash common.Hash) *Transaction
- func (b *Block) Transactions() Transactions
- func (b *Block) TxHash() common.Hash
- func (b *Block) UncleHash() common.Hash
- func (b *Block) Uncles() []*Header
- func (b *Block) WithBody(transactions []*Transaction, uncles []*Header) *Block
- func (b *Block) WithSeal(header *Header) *Block
- type BlockBy
- type BlockNonce
- type Blocks
- type Bloom
- func (b *Bloom) Add(d *big.Int)
- func (b Bloom) Big() *big.Int
- func (b Bloom) Bytes() []byte
- func (b Bloom) MarshalText() ([]byte, error)
- func (b *Bloom) SetBytes(d []byte)
- func (b Bloom) Test(test *big.Int) bool
- func (b Bloom) TestBytes(test []byte) bool
- func (b *Bloom) UnmarshalText(input []byte) error
- type Body
- type DerivableList
- type EIP155Signer
- type FrontierSigner
- type Header
- type HomesteadSigner
- type Log
- type LogForStorage
- type Message
- type Receipt
- type ReceiptForStorage
- type Receipts
- type Signer
- type StorageBlock
- type Transaction
- func NewContractCreation(nonce uint64, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction
- func NewTransaction(nonce uint64, to common.Address, amount *big.Int, gasLimit uint64, ...) *Transaction
- func SignTx(tx *Transaction, s Signer, prv *ecdsa.PrivateKey) (*Transaction, error)
- func (tx *Transaction) AsMessage(s Signer) (Message, error)
- func (tx *Transaction) ChainId() *big.Int
- func (tx *Transaction) CheckNonce() bool
- func (tx *Transaction) Cost() *big.Int
- func (tx *Transaction) Data() []byte
- func (tx *Transaction) DecodeRLP(s *rlp.Stream) error
- func (tx *Transaction) EncodeRLP(w io.Writer) error
- func (tx *Transaction) Gas() uint64
- func (tx *Transaction) GasPrice() *big.Int
- func (tx *Transaction) Hash() common.Hash
- func (tx *Transaction) MarshalJSON() ([]byte, error)
- func (tx *Transaction) Nonce() uint64
- func (tx *Transaction) Protected() bool
- func (tx *Transaction) RawSignatureValues() (*big.Int, *big.Int, *big.Int)
- func (tx *Transaction) Size() common.StorageSize
- func (tx *Transaction) To() *common.Address
- func (tx *Transaction) UnmarshalJSON(input []byte) error
- func (tx *Transaction) Value() *big.Int
- func (tx *Transaction) WithSignature(signer Signer, sig []byte) (*Transaction, error)
- type Transactions
- type TransactionsByPriceAndNonce
- type TxByNonce
- type TxByPrice
Constants ¶
const ( //BloomByteLength表示头日志Bloom中使用的字节数。 BloomByteLength = 256 //BloomBitLength表示在头日志Bloom中使用的位数。 BloomBitLength = 8 * BloomByteLength )
const ( //ReceiptStatusFailed是执行失败时事务的状态代码。 ReceiptStatusFailed = uint64(0) //ReceiptStatusSuccessful是执行成功时事务的状态代码。 ReceiptStatusSuccessful = uint64(1) )
Variables ¶
var ( EmptyRootHash = DeriveSha(Transactions{}) EmptyUncleHash = CalcUncleHash(nil) )
var Bloom9 = bloom9
var (
ErrInvalidChainId = errors.New("invalid chain id for signer")
)
var (
ErrInvalidSig = errors.New("invalid transaction v, r, s values")
)
Functions ¶
func BloomLookup ¶
func CalcUncleHash ¶
func DeriveSha ¶
func DeriveSha(list DerivableList) common.Hash
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 ¶
newblockwithheader使用给定的头数据创建一个块。这个 标题数据被复制,更改为标题和字段值 不会影响程序块。
func (*Block) DeprecatedTd ¶
deprecatedtd是提取块的td的旧遗物。它在 仅用于方便将数据库从旧格式升级到 新建,之后应删除。不要使用!
func (*Block) Difficulty ¶
func (*Block) ParentHash ¶
func (*Block) ReceiptHash ¶
func (*Block) Size ¶
func (b *Block) Size() common.StorageSize
SIZE返回块的真实RLP编码存储大小,可以通过编码 并返回它,或者返回以前缓存的值。
func (*Block) Transaction ¶
func (b *Block) Transaction(hash common.Hash) *Transaction
func (*Block) Transactions ¶
func (b *Block) Transactions() Transactions
type BlockNonce ¶
type BlockNonce [8]byte
blocknonce是一个64位哈希,它证明 混合哈希)进行了足够的计算 走出街区。
func (BlockNonce) MarshalText ¶
func (n BlockNonce) MarshalText() ([]byte, error)
marshalText将n编码为带0x前缀的十六进制字符串。
func (*BlockNonce) UnmarshalText ¶
func (n *BlockNonce) UnmarshalText(input []byte) error
UnmarshalText实现encoding.textUnmarshaller。
type Bloom ¶
type Bloom [BloomByteLength]byte
Bloom表示2048位Bloom过滤器。
func CreateBloom ¶
func (Bloom) MarshalText ¶
MarshalText将B编码为带0x前缀的十六进制字符串。
func (*Bloom) UnmarshalText ¶
将文本B取消标记为带0x前缀的十六进制字符串。
type Body ¶
type Body struct { Transactions []*Transaction Uncles []*Header }
Body是一个简单的(可变的、非安全的)数据容器,用于存储和移动 块的数据内容(事务和叔叔)在一起。
type DerivableList ¶
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 ¶
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 (*Header) Size ¶
func (h *Header) Size() common.StorageSize
SIZE返回所有内部内容使用的大致内存。它被使用 估计和限制各种缓存的内存消耗。
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) MarshalJSON ¶
func (*Log) UnmarshalJSON ¶
type LogForStorage ¶
type LogForStorage Log
logForStorage是一个围绕一个日志的包装器,它扁平化并解析 包含非共识字段的日志。
type Message ¶
type Message struct {
// contains filtered or unexported fields
}
消息是完全派生的事务并实现core.message
注意:在将来的公关中,这将被删除。
func NewMessage ¶
func (Message) CheckNonce ¶
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 ¶
NewReceipt创建一个准交易凭证,复制init字段。
func (*Receipt) Size ¶
func (r *Receipt) Size() common.StorageSize
SIZE返回所有内部内容使用的大致内存。它被使用 估计和限制各种缓存的内存消耗。
func (*Receipt) UnmarshalJSON ¶
取消标记JSON取消标记JSON。
type ReceiptForStorage ¶
type ReceiptForStorage Receipt
ReceiptForStorage是一个围绕收据的包装,它扁平化并解析 收据的全部内容,而不是最初的共识字段。
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 Transaction ¶
type Transaction struct {
// contains filtered or unexported fields
}
func NewContractCreation ¶
func NewTransaction ¶
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) CheckNonce ¶
func (tx *Transaction) CheckNonce() bool
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) MarshalJSON ¶
func (tx *Transaction) MarshalJSON() ([]byte, error)
marshaljson编码Web3 RPC事务格式。
func (*Transaction) Nonce ¶
func (tx *Transaction) Nonce() uint64
func (*Transaction) RawSignatureValues ¶
func (*Transaction) Size ¶
func (tx *Transaction) Size() common.StorageSize
SIZE返回事务的真正RLP编码存储大小,可以是 编码并返回它,或者返回以前缓存的值。
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 (Transactions) GetRlp ¶
func (s Transactions) GetRlp(i int) []byte
getrlp实现rlpable并返回rlp中s的第i个元素。
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 ¶
func (t *TransactionsByPriceAndNonce) Peek() *Transaction
Peek按价格返回下一个交易。
func (*TransactionsByPriceAndNonce) Pop ¶
func (t *TransactionsByPriceAndNonce) Pop()
pop删除最佳事务,*而不是*用下一个事务替换它 相同的帐户。当无法执行事务时应使用此选项 因此,所有后续的都应该从同一帐户中丢弃。
func (*TransactionsByPriceAndNonce) Shift ¶
func (t *TransactionsByPriceAndNonce) Shift()
SHIFT将当前的最佳标题替换为同一帐户中的下一个标题。
type TxByNonce ¶
type TxByNonce Transactions
txbynonce实现排序接口以允许对事务列表进行排序 在他们的眼前。这通常只适用于从 单一账户,否则一个非现金比较没有多大意义。