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
43KB
742 行
⁂
W3name
动态网络的寻址。现在从Rust中可用!
关于
w3name
crate为w3name服务提供客户端库,该服务是实现IPNS去中心化命名协议的。
有关w3name的更多信息,请参阅主GitHub仓库。
安装
将w3name
crate添加到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