V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  nostr

v2ex.com/go/nostr

  •  
  •   Livid · 2023-02-09 11:41:55 +08:00 · 7995 次点击
    这是一个创建于 682 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Damus 及背后的 nostr-protocol 是很有意思的东西。去中心化概念的产品现在已经有不少了,但是这样的试图尽量简化协议的产品真不多。相比 Mastodon 的 ActivityPub / OAuth 的复杂度,nostr 真是要简单不少。

    于是建立这个节点用于整理 V2EX 上所有和 nostr 相关的讨论:

    https://www.v2ex.com/go/nostr

    将来会在产品层面提供更多和 nostr protocol 的集成。

    npub1jhvk57c748n0xf58m4htrcl4365twqd36umuu23qkla3c90q8tksekp745


    Decentralization 是一把好锤子,但不一定在所有场景都好用。协议和产品在设计时,需要在末日场景和日常场景之间做取舍。:)

    6 条回复    2023-02-09 17:48:26 +08:00
    Tenlp
        1
    Tenlp  
       2023-02-09 11:54:05 +08:00
    最近很多 nostr 的分享,感觉空闲的时候可以试试看了
    uiosun
        2
    uiosun  
       2023-02-09 13:02:24 +08:00
    Let me look that.

    康康站长在发什么东西
    jamosLi
        3
    jamosLi  
       2023-02-09 13:29:20 +08:00
    研究一下
    vacuitym
        4
    vacuitym  
       2023-02-09 13:40:40 +08:00
    类似长毛象吗,是我理解错了吗
    dawn009
        5
    dawn009  
       2023-02-09 15:11:39 +08:00   ❤️ 6
    同意。nostr 基础协议浅显易懂,一小段代码即可实现。

    ```
    import secp256k1
    import hashlib
    import json
    import time
    import websocket

    privkey = secp256k1.PrivateKey() #这里随机生成一个私钥,可以改成固定的
    pubkey_64hex = privkey.pubkey.serialize()[1:].hex()

    content = "Hello"
    created_at = int(time.time())
    kind = 1
    tags = []

    event_data = json.dumps([0, pubkey_64hex, created_at, kind, tags, content], separators=(',', ':'), ensure_ascii=False).encode()

    event_hash = hashlib.sha256(event_data).hexdigest()
    sig = privkey.schnorr_sign(bytes.fromhex(event_hash), bip340tag=None, raw=True).hex()

    event = {
    "id": event_hash,
    "pubkey": pubkey_64hex,
    "created_at": created_at,
    "kind": kind,
    "tags": tags,
    "content": content,
    "sig": sig
    }
    send_buf = json.dumps(["EVENT", event])

    print(f"Send: {send_buf}")
    ws = websocket.create_connection("wss://xxxxxx") #这里填写 Relay 的地址
    ws.send(send_buf)
    response = ws.recv()
    print(f"Response: {response}")
    ws.close()
    ```
    SeanDragon
        6
    SeanDragon  
       2023-02-09 17:48:26 +08:00
    准备研究研究
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   838 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:17 · PVG 05:17 · LAX 13:17 · JFK 16:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.