Documentation ¶
Overview ¶
包ENR实现EIP-778中定义的以太坊节点记录。节点记录保留 有关对等网络上节点的任意信息。
记录包含命名键。要在记录中存储和检索键/值,请使用条目 接口。
在将记录传输到另一个节点之前,必须对它们进行签名。解码记录验证 它的签名。创建记录时,设置所需条目,然后调用sign添加 签名。修改记录会使签名失效。
ENR包支持“secp256k1 keccak”身份方案。
Index ¶
- Constants
- func IsNotFound(err error) bool
- func RegisterIdentityScheme(name string, scheme IdentityScheme)
- func SignV4(r *Record, privkey *ecdsa.PrivateKey) error
- type Entry
- type ID
- type IP
- type IdentityScheme
- type KeyError
- type Record
- func (r *Record) AppendElements(list []interface{}) []interface{}
- func (r *Record) DecodeRLP(s *rlp.Stream) error
- func (r Record) EncodeRLP(w io.Writer) error
- func (r *Record) Load(e Entry) error
- func (r *Record) NodeAddr() []byte
- func (r *Record) Seq() uint64
- func (r *Record) Set(e Entry)
- func (r *Record) SetSeq(s uint64)
- func (r *Record) SetSig(idscheme string, sig []byte) error
- func (r *Record) Signed() bool
- type Secp256k1
- type TCP
- type UDP
Constants ¶
View Source
const IDv4 = ID("v4") //默认标识方案
View Source
const SizeLimit = 300 //节点记录的最大编码大小(字节)
Variables ¶
This section is empty.
Functions ¶
func RegisterIdentityScheme ¶
func RegisterIdentityScheme(name string, scheme IdentityScheme)
RegisterIdentityScheme向全局注册表添加标识方案。
Types ¶
type Entry ¶
type Entry interface {
ENRKey() string
}
条目由已知的节点记录条目类型实现。
要定义要包含在节点记录中的新条目, 创建满足此接口的Go类型。类型应该 如果需要对值进行额外检查,还可以实现rlp.decoder。
type IdentityScheme ¶
标识方案能够验证记录签名和 派生节点地址。
func FindIdentityScheme ¶
func FindIdentityScheme(name string) IdentityScheme
findidentityScheme将名称解析为全局注册表中的标识方案。
type Record ¶
type Record struct {
// contains filtered or unexported fields
}
记录表示节点记录。零值是一个空记录。
func (*Record) AppendElements ¶
func (r *Record) AppendElements(list []interface{}) []interface{}
AppendElements将序列号和条目追加到给定切片。
func (*Record) Load ¶
LOAD检索键/值对的值。给定的项必须是指针,并且将 设置为记录中条目的值。
加载返回的错误被包装在keyError中。您可以区分解码错误 使用isNotFound函数来消除丢失的键。
type Secp256k1 ¶
secp256k1是保存公钥的“secp256k1”密钥。
Click to show internal directories.
Click to hide internal directories.