Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nostr × C#

Nostr × C#

2024/4/27 C#パフォーマンス勉強会 LT


April 27, 2024

More Decks by Hakkadaikon

Other Decks in Programming


  1. Self Introduction 1/4 発火大根(二十日大根/Hackathonなどのもじり) 職業 - インフラエンジニア(コードも書きます) 主な活動コミュニティ - 四谷ラボ

    (分散SNSのLT会, イベント運営, 技術書典向け書籍への寄稿) - vim-jp (LT) - C#読書会 (2週間~月1でモブプロ会参加)
  2. Self Introduction 2/4 色々やってます。 主に四谷ラボの名前を借りてます。 ▪登壇 2023/8/3 [四谷ラボ] Nostr勉強会 #3

    LT 2023/9/2 [四谷ラボ] Bluesky勉強会 #2 企画/司会/LT 2023/12/8 [四谷ラボ] 新時代の分散型SNS勉強会 運営 2023/12/13 [ゴリラ.vim] ゴリラ.vim #29 LT 2024/2/10 [ゴリラ.vim/四谷ラボ] ゴリラ.vim #30 企画/ライブコーディング 2024/2/21 [四谷ラボ] Bluesky勉強会 #3 LT 2024/4/13 [四谷ラボ] Bluesky meetup #2 運営 ▪本(技術同人誌) 2024/11/12 技術書典15 Hello Nostr! Yo Bluesky! 分散SNSの最前線 2記事寄稿 -> 刺され!技術書アワード 優秀賞 受賞 2024/05/26 技術書典16 1記事寄稿 (New!)
  3. Self Introduction 4/4 2024/5/26 技術書典16 Hello! Nostr, Yo! Bluesky2 最先端分散型SNSの愉快な仲間たち

    Nostr/Bluesky/Concurrent の技術記事や漫画を掲載! 寄稿記事 最速のリレーを目指して ~C++リレー開発奮闘記~
  4. What is Nostr? Notes and Other Stuff Transmitted by Relays

    直訳 リレーによって送信される メモやその他のもの
  5. Architecture A B C A,B ユーザー1 ユーザー2 ユーザー3 ユーザー4 A,C

    B A,C ユーザー2, ユーザー4 -> ユーザー3の投稿が見れない
  6. Event(リレーが保存するデータ) { "id": <32-bytes lowercase hex-encoded sha256 of the serialized

    event data>, "pubkey": <32-bytes lowercase hex-encoded public key of the event creator>, "created_at": <unix timestamp in seconds>, "kind": <integer between 0 and 65535>, "tags": [ [<arbitrary string>...], // ... ], "content": <arbitrary string>, "sig": <64-bytes lowercase hex of the signature of the sha256 hash of the serialized event data, which is the s the "id" field> } 全てのEventがこの構造 (シンプル!) id / pubkey / created_at / kind / tags / content / sig
  7. Event(リレーが保存するデータ) { "content": "おはのっす", "kind": 1, "created_at": 1714169554, "id": "c548e55df56a6ddb3e57a08c3a8c58334ff213ec806faa766ef17c3bef5ff6d6",

    "sig": "7648b8d6ba10034d12361bfc1d3125d84104b59b4fca5175eb6e6980a09e404daa7cfa1c2 614ad8f581da0999d78fb49aadc067bf9d8a73d1bb720a0e1", "tags": [], "pubkey": "101b30ee88c27a13de68bf7c8c06368ea3e3e837641595c18675677d18a46a } 4/27の投稿
  8. REQ(クライアントのEvent問い合わせ・開始) { "ids": <a list of event ids>, "authors": <a

    list of lowercase pubkeys, the pubkey of an event must be one of these>, "kinds": <a list of a kind numbers>, "since": <an integer unix timestamp in seconds, events must be newer than this to pass>, "until": <an integer unix timestamp in seconds, events must be older than this to pass>, "limit": <maximum number of events relays SHOULD return in the initial query> } 全てのREQがこの構造 ids / authors / kinds / since / until / limit