Documentation ¶
Overview ¶
包ENR实现EIP-778中定义的以太坊节点记录。节点记录保留 有关对等网络上节点的任意信息。节点信息是 存储在键/值对中。要在记录中存储和检索键/值,请使用条目 接口。
签名处理
在将记录传输到另一个节点之前,必须对它们进行签名。
解码记录不会检查其签名。使用来自的记录的代码 不受信任的源必须始终验证两件事:记录使用标识方案 被认为是安全的,并且根据声明的方案签名是有效的。
创建记录时,请设置所需条目并使用由提供的签名功能 要添加签名的标识方案。修改记录会使签名失效。
ENR包支持“secp256k1 keccak”身份方案。
Index ¶
- Constants
- Variables
- func IsNotFound(err error) bool
- 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) IdentityScheme() string
- func (r *Record) Load(e Entry) error
- func (r *Record) Seq() uint64
- func (r *Record) Set(e Entry)
- func (r *Record) SetSeq(s uint64)
- func (r *Record) SetSig(s IdentityScheme, sig []byte) error
- func (r *Record) VerifySignature(s IdentityScheme) error
- type SchemeMap
- type TCP
- type UDP
Constants ¶
View Source
const IDv4 = ID("v4") //默认标识方案
View Source
const SizeLimit = 300 //节点记录的最大编码大小(字节)
Variables ¶
View Source
var (
ErrInvalidSig = errors.New("invalid signature on node record")
)
Functions ¶
Types ¶
type Entry ¶
type Entry interface {
ENRKey() string
}
条目由已知的节点记录条目类型实现。
要定义要包含在节点记录中的新条目, 创建满足此接口的Go类型。类型应该 如果需要对值进行额外检查,还可以实现rlp.decoder。
type IdentityScheme ¶
标识方案能够验证记录签名和 派生节点地址。
type Record ¶
type Record struct {
// contains filtered or unexported fields
}
记录表示节点记录。零值是一个空记录。
func (*Record) AppendElements ¶
func (r *Record) AppendElements(list []interface{}) []interface{}
AppendElements将序列号和条目追加到给定切片。
func (*Record) IdentityScheme ¶
IdentityScheme返回记录中标识方案的名称。
func (*Record) Load ¶
LOAD检索键/值对的值。给定的项必须是指针,并且将 设置为记录中条目的值。
加载返回的错误被包装在keyError中。您可以区分解码错误 使用isNotFound函数来消除丢失的键。
func (*Record) SetSig ¶
func (r *Record) SetSig(s IdentityScheme, sig []byte) error
setsig设置记录签名。如果编码的记录较大,则返回错误 大于大小限制或根据传递的方案签名无效。
也可以使用setsig通过传递nil方案显式删除签名。 签名。
当方案或签名(但不是两者)都为零时,setsig会恐慌。
func (*Record) VerifySignature ¶
func (r *Record) VerifySignature(s IdentityScheme) error
VerifySignature检查记录是否使用给定的标识方案签名。
Click to show internal directories.
Click to hide internal directories.