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中可用!
关于
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