51 个版本 (32 个重大变化)

新版本 0.34.0 2024年8月15日
0.33.0 2024年7月16日
0.32.1 2024年6月17日
0.29.1 2024年3月31日
0.5.1 2022年11月14日

#78网页编程

Download history 706/week @ 2024-04-27 1119/week @ 2024-05-04 1339/week @ 2024-05-11 1689/week @ 2024-05-18 1088/week @ 2024-05-25 1232/week @ 2024-06-01 1026/week @ 2024-06-08 1097/week @ 2024-06-15 1067/week @ 2024-06-22 792/week @ 2024-06-29 790/week @ 2024-07-06 1240/week @ 2024-07-13 956/week @ 2024-07-20 927/week @ 2024-07-27 781/week @ 2024-08-03 949/week @ 2024-08-10

每月 3,743 次下载
用于 48 个 Crates (30 直接使用)

MIT 许可证

700KB
17K SLoC

Nostr

crates.io crates.io - Downloads Documentation CI MIT

描述

Rust 实现的 Nostr 协议。

你可能还感兴趣

入门

use nostr::prelude::*;

fn main() -> Result<()> {
    // Generate new random keys
    let my_keys = Keys::generate();

    // Or use your already existing (from hex or bech32)
    let my_keys = Keys::parse("hex-or-bech32-secret-key")?;

    // Show bech32 public key
    let bech32_pubkey: String = my_keys.public_key().to_bech32()?;
    println!("Bech32 PubKey: {}", bech32_pubkey);

    let metadata = Metadata::new()
        .name("username")
        .display_name("My Username")
        .about("Description")
        .picture(Url::parse("https://example.com/avatar.png")?)
        .banner(Url::parse("https://example.com/banner.png")?)
        .nip05("[email protected]")
        .lud16("[email protected]")
        .custom_field("custom_field", "my value");

    let event: Event = EventBuilder::metadata(&metadata).to_event(&my_keys)?;

    // New text note
    let event: Event = EventBuilder::text_note("Hello from rust-nostr", []).to_event(&my_keys)?;

    // New POW text note
    let event: Event = EventBuilder::text_note("My first POW text note from rust-nostr", []).to_pow_event(&my_keys, 20)?;

    // Convert client nessage to JSON
    let json = ClientMessage::event(event).as_json();
    println!("{json}");

    Ok(())
}

更多示例可以在 examples/ 目录中找到。

WASM

这个 crate 支持 wasm32 目标。

在 macOS 上您需要安装 llvm

brew install llvm
LLVM_PATH=$(brew --prefix llvm)
AR="${LLVM_PATH}/bin/llvm-ar" CC="${LLVM_PATH}/bin/clang" cargo build --target wasm32-unknown-unknown

注意:当前 nip03 功能不支持 WASM。

嵌入式

这个 crate 支持 no_std 环境。

检查 embedded/ 目录中的示例。

包功能标志

以下包功能标志可用

功能 默认 描述
std 启用 std
alloc no_std 环境中使用此库需要
all-nips 启用所有 NIPs
nip03 启用 NIP-03: 事件的开源时间戳证明
nip04 启用 NIP-04: 加密直接消息
nip05 启用 NIP-05: 将 Nostr 密钥映射到基于 DNS 的互联网标识符
nip06 启用 NIP-06: 从助记词种子短语进行基本密钥推导
nip07 启用 NIP-07: window.nostr 功能用于网页浏览器 (仅适用于 wasm32!)
nip11 启用 NIP-11: 中继信息文档
nip44 启用 NIP-44: 加密有效载荷(版本化)
nip46 启用 NIP-46: Nostr Connect
nip47 启用 NIP-47: Nostr 钱包连接
nip49 启用 NIP-49:私钥加密
nip57 启用 NIP-57:Zaps
nip59 启用 NIP-59:礼品包装

支持的 NIPs

支持 NIP
01 - 基本协议流程描述
02 - 关注列表
03 - 事件 OpenTimestamps 认证
04 - 加密直接消息
05 - 将 Nostr 密钥映射到基于 DNS 的互联网 ID
06 - 从助记词种子短语的基本密钥派生
07 - window.nostr 用于网页浏览器的功能
09 - 事件删除
10 - 在文本事件中使用 ep 标签
11 - 中继信息文档
13 - 工作量证明
14 - 文本事件中的主题标签
15 - Nostr 市场交易
17 - 私密直接消息
18 - 转发
19 - bech32 编码的实体
21 - URI 方案
23 - 长格式内容
24 - 额外元数据字段和标签
25 - 反应
26 - 委托事件签名
27 - 文本笔记引用
28 - 公共聊天
29 - 基于中继的群组
30 - 自定义表情
31 - 处理未知事件
32 - 标签
34 - git 东西
35 - 种子文件
36 - 敏感内容
38 - 用户状态
39 - 配置文件中的外部身份
40 - 过期时间戳
42 - 客户端对中继的认证
44 - 加密的有效负载(版本化)
45 - 事件计数
46 - Nostr Connect
47 - 钱包连接
48 - 代理标签
49 - 私钥加密
50 - 搜索功能
51 - 列表
52 - 日历事件
53 - 实时活动
54 - 维基
- 55 - 安卓签名应用
56 - 报告
57 - 晶电 Zaps
58 - 徽章
59 - 礼品包装
65 - 中继列表元数据
70 - 受保护的事件
71 - 视频事件
72 - 管理社区
75 - Zap 目标
78 - 任意自定义应用程序数据
89 - 推荐的应用程序处理器
90 - 数据售货机
92 - 媒体附件
94 - 文件元数据
96 - HTTP 文件存储集成
98 - HTTP 认证
99 - 分类列表

状态

这个库处于 alpha 状态,已实现的功能通常可以工作,但 API 将会以破坏性的方式改变。

捐赠

rust-nostr 是免费和开源的。这意味着我们通过销售它不赚取任何收入。相反,我们依赖您的财务支持。如果您积极使用任何 rust-nostr 库/软件/服务,那么请捐赠

许可证

本项目采用 MIT 软件许可协议分发 - 有关详细信息,请参阅LICENSE 文件

依赖关系

~8–22MB
~278K SLoC