Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Thinking about Feasibility of Scheduled Posts o...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
jiftechnify
April 12, 2023
Technology
320
0
Share
Thinking about Feasibility of Scheduled Posts on Nostr
Nostrにおける予約投稿の実現可能性を考える
jiftechnify
April 12, 2023
More Decks by jiftechnify
See All by jiftechnify
Functional Programming in Scala 第2版 読書のすゝめ
jiftechnify
1
770
Start Nostr Indie Dev for Great Good
jiftechnify
0
230
Cryptography 101 for Understanding Nostr
jiftechnify
0
420
Nostrのリレーから漏れなくすべてのイベントを取ってくる技術
jiftechnify
0
750
Other Decks in Technology
See All in Technology
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
0
110
Pythonでベイズモデリング
soogie
0
180
Harnessing the Power of Mocks and Stubs in PHPUnit / #laravellivejp
asumikam
0
570
Anthropic AIネイティブ・スタートアップ構築のプレイブック を理解する
nagatsu
0
180
TSKaigi 2026 - enumよ、さようなら
teamlab
PRO
3
540
JavaScript実装の自作プログラミング言語をTypeScript実装に移行した話
keisukeikeda
1
150
自作エディターをOSSにして分かった、一人に刺さる開発が世界を動かす理由
shinyasaita
1
390
データ分析基盤の信頼を支える視点と設計
yuki_saito
1
660
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
280
大規模環境でどのように監視を実現する?
yuobayashi
1
140
EdgeプロファイルでAWSアカウントを安全に使い分ける
jhashimoto
0
100
AIコーディングエージェントの活用で、コードは静かに肥大化した
yosukeshinoda
1
360
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Chasing Engaging Ingredients in Design
codingconduct
0
200
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Mind Mapping
helmedeiros
PRO
1
200
Thoughts on Productivity
jonyablonski
76
5.2k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Language of Interfaces
destraynor
162
26k
Amusing Abliteration
ianozsvald
1
180
Deep Space Network (abreviated)
tonyrice
0
150
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
130
How to make the Groovebox
asonas
2
2.2k
RailsConf 2023
tenderlove
30
1.4k
Transcript
Nostrにおける 予約投稿の実現可能性を考える Nostr勉強会 #2 かすてらふぃ @jiftechnify
自己紹介 かすてらふぃ NIP-05:
[email protected]
Website: c-stellar.net NostrのTLを遡るツール: Nosaray(のさらい) 作者
事の発端: #Zapan 毎週金・土曜日の 朝 6:00〜6:30 に #Zapan タグをつけて投稿し、 Zap(投げ銭)を送り合うイベント cf.
https://scrapbox.io/nostr/Zapan
朝 6:00 ~ 6:30
起きられない
予約投稿機能を求める声たち
そうだ 予約投稿、しよう。
手法1: CLIクライアントを指定時刻に実行 algia (https://github.com/mattn/algia) と at コマンドを組み合わせる # 次の金曜日の朝6 時に
'pura vida' と投稿 echo "algia post 'pura vida'" | at 06:00 Fri # 次の土曜日の朝6 時に ぽわ〜 と投稿 echo "algia powa" | at 06:00 Sat 長所: お手軽 短所: 指定時刻にPCが起動している必要がある コマンドラインに馴染みがない人には厳しいかも
手法2: created_at を未来に設定して投稿 Nostrのイベントには created_at (発行時刻) を好きに設定できる → created_at を未来の投稿したい時刻に設定すれば、予約投稿になる…?
結論: なるっちゃなるが不確実 リレーによって、 created_at が未来なイベントの扱いが異なる created_at が現在時刻から大きく離れたイベントを受け付けないリレーも cf. NIP-22 (https://scrapbox.io/nostr/NIP-22)
誰にでも使えて 確実に投稿できる 予約投稿システム 欲しい!
予約投稿システムの素朴な設計 1. 時刻を指定して、システムに投稿内容を登録 2. 指定時刻になったら、システムがイベントを送信 リレー 予約投稿システム サーバ 2. content:
"pura vida", created_at: < 現在時刻>, sig: ??? 予約投稿システム クライアント ユーザ 1. 「⾦曜朝6 時に "pura vida" と投稿」
署名はどうする? Nostrイベントには、投稿者の秘密鍵による署名を含める必要がある → 予約投稿システムがイベントを発行できるようにするには、 投稿者の秘密鍵をシステムに渡す必要がある…? そんなシステムを誰が使うだろうか? (いや、誰も使わない)
先に署名させておけばいいじゃない 投稿内容ではなく、署名済みのイベントをシステムに登録すれば上手くいく! 1. 指定時刻(未来)の created_at を設定した投稿イベントを生成 2. 生成したイベントに署名を行う 3. システムに署名済みのイベントを登録
4. 指定時刻になったら、システムが署名済みのイベントを送信 システムは、ひたすら登録されたデータをそのままリレーに送るだけ → 投稿者の秘密鍵を知らなくてもよい
リレー 予約投稿システム サーバ 4. 3. content: "pura vida", created_at: <
⾦曜朝6 時>, sig: < 投稿者による署名> 転送 予約投稿システム クライアント ユーザ content: "pura vida", created_at: < ⾦曜朝6 時> 1. 2. 署名 設計図解
実装は? Nostr It (https://nostrit.com/) 通信内容を覗いた感じ、おそらく今回説明した仕組みで動いている ハッシュタグ未対応 ハッシュタグ対応版を独自に実装したい(未完成 )
まとめ Nostr上で実現可能な予約投稿の仕組みを検討した