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
300
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
530
Start Nostr Indie Dev for Great Good
jiftechnify
0
220
Cryptography 101 for Understanding Nostr
jiftechnify
0
410
Nostrのリレーから漏れなくすべてのイベントを取ってくる技術
jiftechnify
0
730
Other Decks in Technology
See All in Technology
AIを活用したアクセシビリティ改善フロー
degudegu2510
1
160
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
1
170
サイバーフィジカル社会とは何か / What Is a Cyber-Physical Society?
ks91
PRO
0
160
建設的な現実逃避のしかた / How to practice constructive escapism
pauli
4
300
新メンバーのために、シニアエンジニアが環境を作る時代
puku0x
0
460
シン・リスコフの置換原則 〜現代風に考えるSOLIDの原則〜
jinwatanabe
0
170
Data Enabling Team立ち上げました
sansantech
PRO
0
300
2026年春から始めるOpenTelemetry | sogaoh's LT @ PHP Conference ODAWARA 2026
sogaoh
PRO
0
100
生成AI時代のエンジニア育成 変わる時代と変わらないコト
starfish719
0
400
2026年度新卒技術研修 サイバーエージェントのデータベース 活用事例とパフォーマンス調査入門
cyberagentdevelopers
PRO
6
7k
ある製造業の会社全体のAI化に1エンジニアが挑んだ話
kitami
2
770
ADOTで始めるサーバレスアーキテクチャのオブザーバビリティ
alchemy1115
2
270
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
300
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Color Theory Basics | Prateek | Gurzu
gurzu
0
280
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Ethics towards AI in product and experience design
skipperchong
2
250
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Navigating Team Friction
lara
192
16k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
110
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上で実現可能な予約投稿の仕組みを検討した