Documentation ¶
Index ¶
Constants ¶
const ( // DefaultRecordLifetime IPNS记录在ValidityType为0时的有效期 // 此默认值旨在匹配Amino DHT的记录过期窗口 DefaultRecordLifetime = 48 * time.Hour // DefaultRecordTTL 指定记录在再次检查更新之前可以从缓存返回的时间 // 此TTL的功能类似于DNS记录的TTL,这里的默认值是在更快的更新和利用各种类型的缓存之间的权衡 DefaultRecordTTL = 1 * time.Hour )
const MaxRecordSize int = 10 << (10 * 1)
MaxRecordSize 是IPNS记录的大小限制
const (
// NamespacePrefix 是 IPNS 命名空间的前缀
NamespacePrefix = "/ipns/"
)
Variables ¶
var ErrDataMissing = errors.New("记录缺少dag-cbor数据字段")
ErrDataMissing 当IPNS[记录]缺少数据字段时返回此错误
var ErrExpiredRecord = errors.New("记录已过期")
ErrExpiredRecord 当IPNS[记录]因过期而无效时返回此错误
var ErrInvalidName = errors.New("名称无效")
ErrInvalidName 当IPNS[名称]无效时返回此错误
var ErrInvalidPath = errors.New("值不是有效的内容路径")
ErrInvalidPath 当IPNS[记录]具有无效路径时返回此错误
var ErrInvalidPublicKey = errors.New("公钥无效")
ErrInvalidPublicKey 当IPNS[记录]具有无效的公钥时返回此错误
var ErrInvalidRecord = errors.New("记录格式错误")
ErrInvalidRecord 当IPNS[记录]格式错误时返回此错误
var ErrInvalidValidity = errors.New("记录包含无效的有效性")
ErrInvalidValidity 当IPNS[记录]具有已知的有效性类型但值无效时返回此错误
var ErrPublicKeyMismatch = errors.New("记录公钥与预期的公钥不匹配")
ErrPublicKeyMismatch 当IPNS[记录]中嵌入的公钥与预期的公钥不匹配时返回此错误
var ErrPublicKeyNotFound = errors.New("找不到公钥")
ErrPublicKeyNotFound 当找不到公钥时返回此错误
var ErrRecordSize = errors.New("记录超过允许的大小限制")
ErrRecordSize 当IPNS[记录]超过最大大小时返回此错误
var ErrSignature = errors.New("签名验证失败")
ErrSignature 当IPNS[记录]签名验证失败时返回此错误
var ErrUnrecognizedValidity = errors.New("记录包含无法识别的有效性类型")
ErrUnrecognizedValidity 当IPNS[记录]包含未知的有效性类型时返回此错误
Functions ¶
func ExtractPublicKey ¶
ExtractPublicKey 从 IPNS 记录中提取与给定名称匹配的公钥(如果可能)。
参数:
- rec: *Record IPNS 记录
- name: Name 名称
返回值:
- ic.PubKey: 提取的公钥
- error: 错误信息
func MarshalRecord ¶
MarshalRecord 将给定的 IPNS 记录编码为 Protobuf 序列化格式。
参数:
- rec: *Record 要序列化的记录
返回值:
- []byte: 序列化后的数据
- error: 错误信息
func Validate ¶
Validate 根据给定的公钥验证 IPNS Record,遵循 Record 验证规范 参数:
- rec: *Record IPNS记录
- pk: ic.PubKey 公钥
返回值:
- error 错误信息
func ValidateWithName ¶
ValidateWithName 使用给定的 Name 验证 IPNS Record 参数:
- rec: *Record IPNS记录
- name: Name IPNS名称
返回值:
- error 错误信息
Types ¶
type Name ¶
type Name struct {
// contains filtered or unexported fields
}
Name 表示根据 IPNS 名称规范序列化的公钥的多重哈希值
参考: - 多重哈希: https://multiformats.io/multihash/ - IPNS 名称: https://specs.ipfs.tech/ipns/ipns-record/#ipns-name
func NameFromCid ¶
NameFromCid 从给定的 CID 创建 IPNS 名称
参数:
- c: cid.Cid 内容标识符
返回值:
- Name IPNS 名称对象
- error 错误信息
func NameFromPeer ¶
NameFromPeer 从给定的对等节点 ID 创建 IPNS 名称
参数:
- pid: peer.ID 对等节点 ID
返回值:
- Name IPNS 名称对象
func NameFromRoutingKey ¶
NameFromRoutingKey 从给定的路由键表示形式创建 IPNS 名称。更多信息请参见 Name.RoutingKey
参数:
- data: []byte 路由键数据
返回值:
- Name IPNS 名称对象
- error 错误信息
func NameFromString ¶
NameFromString 从给定的字符串表示形式创建 IPNS 名称
参数:
- str: string IPNS 名称的字符串表示
返回值:
- Name IPNS 名称对象
- error 错误信息
func (Name) Cid ¶
func (n Name) Cid() cid.Cid
Cid 将 IPNS 名称编码为公钥的 CID 如果 IPNS 名称无效(例如为空),将返回未定义的 CID
返回值:
- cid.Cid 内容标识符
func (Name) MarshalJSON ¶
MarshalJSON 实现 json.Marshaler 接口 IPNS 名称将使用 Name.String 序列化为字符串
返回值:
- []byte JSON 数据
- error 错误信息
func (Name) RoutingKey ¶
RoutingKey 返回给定 IPNS 名称的二进制路由键。注意,此函数仅用于路由目的。 此函数的输出是二进制的,不可读。如需人类可读的字符串,请参见 Name.Key。
返回值:
- []byte 路由键数据
func (Name) String ¶
String 返回人类可读的 IPNS 名称,使用 libp2p-key 多重编解码器 (0x72) 和不区分大小写的 Base36 编码为 CIDv1
返回值:
- string IPNS 名称的字符串表示
func (*Name) UnmarshalJSON ¶
UnmarshalJSON 实现 json.Unmarshaler 接口。IPNS 名称将通过 NameFromString 从字符串解析
参数:
- b: []byte JSON 数据
返回值:
- error 错误信息
type Option ¶
type Option func(*options)
func WithV1Compatibility ¶
WithV1Compatibility 设置是否兼容 V1 版本。
参数:
- compatible: bool 是否兼容
返回值:
- Option: 选项函数
type Record ¶
type Record struct {
// contains filtered or unexported fields
}
Record 表示一个 IPNS 记录。
func NewRecord ¶
func NewRecord(sk ic.PrivKey, value path.Path, seq uint64, eol time.Time, ttl time.Duration, opts ...Option) (*Record, error)
NewRecord 创建一个新的 IPNS 记录并使用给定的私钥签名。 默认情况下,我们会为那些对等点 ID 不编码公钥的密钥类型(如 RSA 和 ECDSA)嵌入公钥。这可以通过 WithPublicKey 选项更改。 此外,默认情况下会创建兼容 V1 的记录。
参数:
- sk: ic.PrivKey 私钥
- value: path.Path 路径值
- seq: uint64 序列号
- eol: time.Time 过期时间
- ttl: time.Duration 生存时间
- opts: ...Option 选项列表
返回值:
- *Record: 创建的记录
- error: 错误信息
func UnmarshalRecord ¶
UnmarshalRecord 将 Protobuf 序列化的 IPNS 记录解析为可用的 Record 结构体。 请注意,此函数不执行记录的完整验证。要进行验证请使用 Validate。
参数:
- data: []byte 序列化的记录数据
返回值:
- *Record: 解析后的记录
- error: 错误信息
func (*Record) Validity ¶
Validity 返回 IPNS 记录的有效期。如果记录的有效性类型不是 EOL,此函数返回 ErrUnrecognizedValidity。 否则,如果无法解析 EOL,则返回错误。
返回值:
- time.Time: 有效期时间
- error: 错误信息
func (*Record) ValidityType ¶
func (rec *Record) ValidityType() (ValidityType, error)
ValidityType 返回记录的有效性类型。
返回值:
- ValidityType: 有效性类型
- error: 错误信息
type Validator ¶
Validator 是一个满足 Libp2p record.Validator 接口的 IPNS 记录验证器
type ValidityType ¶
type ValidityType int64
const ValidityEOL ValidityType = 0
ValidityEOL 表示"此记录在{Validity}之前有效"。这是目前唯一支持的有效性类型。