#ipfs #web3 #key-name #public-key #ipns

w3name

W3name服务的客户端库

5个版本

0.1.7 2022年9月23日
0.1.6 2022年9月23日
0.1.5 2022年9月23日
0.1.4 2022年9月21日
0.1.0 2022年9月19日

#5 in #key-name


用于 w3name-cli

MIT/Apache

43KB
742


W3name

动态网络的寻址。现在从Rust中可用!

关于

w3namecrate为w3name服务提供客户端库,该服务是实现IPNS去中心化命名协议的。

有关w3name的更多信息,请参阅主GitHub仓库

安装

w3namecrate添加到Cargo.toml

[dependencies]
w3name = "0.1.0"

本地依赖项

使用cargo安装,您需要Protocol Buffers编译器,并且protoc命令必须在您的$PATH上。已知版本3.20.2可以正常工作,其他3.x版本也可能可以正常工作。

如果您无法安装protoc,但是您有cmake,您可以将protoc-src功能设置为,这将构建protobuf编译器并在构建时从源代码构建。

您还需要perl,因为我们从源代码构建openssl,并且构建过程中需要perl

使用方法

有两种主要类型表示"名称"

  • Name用于获取和验证名称记录。它包含名称的公钥,但不包含私钥,因此不能用于发布记录。

  • WritableName用于对记录进行签名以发布。它包含私钥以及公钥。在WritableName实例上调用to_name()将返回一个只包含密钥对公钥一半的Name

创建WritableName

要创建一个新的名称,请使用WritableName::new(),这将生成一个新的密钥对。

您可以通过在 WritableName 实例上调用 keypair().to_protobuf_encoding() 来将此保存到磁盘,这将为您提供一种格式,该格式可由 WritableName::from_private_key() 接受的 Vec<u8>。请将密钥保存在安全的位置,因为它将允许持有人更新您发布的记录。

从字符串解析 Name

Name 是围绕公钥的包装器,当编码为字符串时,看起来像这样

k51qzi5uqu5dka3tmn6ipgsrq1u2bkuowdwlqcw0vibledypt1y9y5i8v8xwvu

此字符串是内容标识符(CID),其中包含公钥的字节。

您可以通过调用 Name::parse 将字符串表示形式转换为 Name 结构。

使用 W3NameClient 发布和解析名称

W3NameClient 结构提供了一种基于 reqwest 的 HTTP 客户端,用于与 w3name 服务交互。由于它使用 async reqwest 实现,因此您需要 tokio 运行时才能使用它。

有关使用客户端发布和解析名称的示例,请参阅 w3name-cli/src/main.rs

依赖关系

~16–34MB
~582K SLoC