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

分散型SNS最新状況

kojira
November 22, 2023

 分散型SNS最新状況

kojira

November 22, 2023
Tweet

More Decks by kojira

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ u ෼ࢄܕ4/4ͱͷؔΘΓ u /PTUSͷษڧձΛΑΓԿ౓΋։࠵ u #MVFTLZΛ͔Β։࢝ u ʹੈքॳͷ#MVFTLZNFFUVQΛ։࠵ u

    Ҏޙ#MVFTLZͷษڧձ΋Կ౓΋։࠵ u /PTUSͰPQFOBJͷ(15Λ࢖ͬͨνϟοτϘοτΛମӡ༻ u /PTUSͷ૑࢝ऀΑΓ/PTUS΁ͷߩݙ͕ೝΊΒΕͯɺສTBUPTIJ #5$ Λ΋ Β͏ u /PTUSBTJBͱ͍͏ौ୩ͰߦΘΕͨਓن໛ͷΠϕϯτͰ u དྷ೔͍ͯͨ͠5XJUUFSͷ૑ۀऀͷδϟοΫɾυʔγʔͱϋά u /PTUSͷ೔ຊίϛϡχςΟʹ͍ͭͯొஃ
  2. #MVFTLZͷྺ࢙ u ೥ 5XJUUFS૑ۀऀͷδϟοΫɾυʔγʔ͕5XJUUFSͰ#MVFTLZߏ૝Λൃද u ೥݄ʹ5XJUUFS͔Β෼཭ͯ͠ެӹ--$ͱͳΓɺδΣΠɾάϥόʔ͕࠷ߴܦӦ੹೚ऀɺδϟοΫɾυʔγʔ͕औక໾ʹब೚ u ೥݄ ৽ͨʹൃද͞Εͨ5XJUUFSͷϒϩοΫνΣʔϯ෦໳ͱ#MVFTLZߏ૝ͱͷ࿈ܞΛܭը u

    ೥݄ ΠʔϩϯɾϚεΫͷਃ͠ग़Ͱ5XJUUFS͔Βສυϧ ໿ԯԁ ͷࢧԉ u ೥݄ "VUIFOUJDBUFE%BUB&YQFSJNFOU "%9 ͱͯ͠ϓϩτίϧͷॳظόʔδϣϯΛެ։ u ೥݄ ΠʔϩϯɾϚεΫͷ5XJUUFSങऩʹΑΓϒϩοΫνΣʔϯ෦໳ͷ੹೚ऀ͕ࣙ೚ u ೥݄ "51SPUPDPMʹվ໊ u ೥݄ J04൛ΞϓϦϦʔεɺট଴੍Ͱελʔτ u ೥݄ "OESPJE൛ΞϓϦϦʔε u ೥݄ ̍̌ສਓಥഁ🎉 u ೥݄ ̐̌ສਓಥഁ🎉 u ೥݄ γʔυϥ΢ϯυͰສυϧ ໿ԯԁ ௐୡ u ೥݄ ̑̌ສਓಥഁ🎉 u ೥݄̍̌̌ສਓಥഁ🎉 u ೥݄̎̌̌ສਓಥഁ🎉
  3. 1%4 #MVFTLZ "51SPUPDPM ͷߏ੒ #(4 "QQ7JFX 'FFE (FOFSBUPST "1* 1%4ΞΧ΢ϯτొ࿥

    ొ࿥ߋ৽௨஌ 1%4ͷΫϩʔϧ TUSFBN DVTUPNGFFET 1-$ %*%৘ใ %*%৘ใ ΞΧ΢ϯτ ৘ใ Πϯλʔωοτ͔Βͷ৘ใ λΠϜϥΠϯ౳ ࿈߹ ࣮૷த
  4. #MVFTLZ "51SPUPDPM ͷಛ௃ u 5XJUUFSͷਖ਼౰ͳޙܧʹͳΔ͸ͣͩͬͨ u ΫϩʔζυЌͰະ׬੒Ͱ͋Γɺট଴ίʔυ͕ඞཁ u ΦʔϓϯιʔεͰ͋Δ u

    *%ʹ%*% %FDFOUSBMJ[FE*EFOUJGJFS෼ࢄܕ*% Λར༻͍ͯ͠Δ u ϞσϨʔγϣϯʹΑΔ੗Έ෼͚΍ܯࠂ ηΫγϟϧɺ๫ྗɺϔΠτɺ εύϜɺͳΓ͢·͠౳ u ΦʔϓϯιʔεͳͷͰ͢ͰʹݸਓͰෳ਺ͷ1%4ཱ͕ͯΒΕ͍ͯΔ u ΧελϜϑΟʔυػೳ͕͋Δ ϑΟʔυͷத਎Λࣗ༝ʹ࡞੒Մೳ u ผͷ1%4΁ݸਓͷσʔλͱϑΥϩʔؔ܎Λͦͷ··Ҿͬӽ͕͠Մೳ ະ࣮ݱ u 1%4ͷ࿈߹ͷλΠϜϥΠϯ΍ݕࡧ ະ࣮ݱ ˞TBOECPY؀ڥͰ͸࣮ ݱ u %.ɺݤΞΧ΢ϯτ͕ͳ͍
  5. #MVFTLZͷࠓޙ u ࠓ݄຤ ݄຤ ʹϩάΠϯແ͠Ͱ౤ߘ͕දࣔͰ͖ΔΑ ͏ʹͳΔ༧ఆ (PPHMFʹJOEFY͞ΕΔʁ u དྷ೥ॳ಄ʹ࿈߹ػೳ͕ϦϦʔε͞ΕΔ༧ఆ u

    ͦͷޙɺ%.ػೳɺݕࡧػೳͷ޲্ͳͲ u ࠓޙɺট଴ίʔυ͸ͳ͘ͳΔͷ͔͸ෆ໌ u ·ͩ·ͩػೳ࣮૷தͷஈ֊ͰΏͬ͘Γͱ੒௕த
  6. #MVFTLZͷ·ͱΊ ओ؍ u ݐஙதͰະ׬੒Ͱ͸͋Δ͕ΞϓϦͷ׬੒౓͸ߴ͍ u 5XJUUFSॳظͷۭؾײ u ޿ࠂͷͳ͍շద͞ u ΧελϜϑΟʔυͷՄೳੑ

    ήʔϜϒοΫͳͲ΋࡞Β Ε͍ͯΔ u CPU͕ແྉͰࣗ༝ʹ࡞ΕΔ u 8FCΞϓϦ͸ଟ͍͕ɺ"OESPJEΞϓϦ͕खബͳͷͰ νϟϯε u 1SPUPDPMΛҰॹʹ࡞͍ͬͯ͘͜ͱ΋Մೳ u ট଴ίʔυ͕ඞཁͳํ͸͙͢౉ͤΔͷͰɺޙ΄Ͳ͓ਃ ͠෇͚͍ͩ͘͞
  7. u ೥ UIFGJBUKBGࢯʹΑΓ/PTUSϓϩτί ϧͷ։ൃ։࢝ u ೥݄δϟοΫɾυʔγʔʹΑΓ GJBUKBGࢯʹ#5$ ໿ສԁ ͷࢧԉ u

    ೥݄5XJUUFS͕ΞΧ΢ϯτౚ݁ࡇΓͷ ൃੜͷλΠϛϯάͰ/PTUSΛར༻ͨ͠4/4Ξ ϓϦ%BNVT͕ϦϦʔε͞Ε஫໨͞ΕΔ u ೥݄δϟοΫɾυʔγʔ͕͞Βʹ ສυϧ ໿̓ԯԁ ΛGJBUKBGࢯʹࢧԉ
  8. u /PUFTBOE0UIFS4UVGG5SBOTNJUUFECZ3FMBZTͷུ u 8FC4PDLFUΛ࢖͍ͬͯΔͨΊಈ࡞͕଎͍ u ಡΈํ͕෼ࢄ͍ͯ͠Δ ϊελʔɺϊετϥɺφελʔɺϊγϡτϥɺ ϊετΡϧͳͲ u /*1

    /PTUS*NQMFNFOUBUJPO1PTTJCJMJUJFT ͱݺ͹ΕΔϓϩτίϧ࢓༷ ʹΑͬͯ࡞ΒΕ͍ͯΔ u #*1 #JUDPJO*NQMFNFOUBUJPO1PTTJCJMJUJFT Λ౿ऻ u ൿີݤͱެ։ݤΛར༻ u ΞΧ΢ϯτͷ֓೦͕ͳ͘ɺൿີݤ͕ΞΧ΢ϯτͦͷ΋ͷɻൿີݤ͕࿙ ΕͨΒऴΘΓ u FWFOUΛൿີݤͰॺ໊͠ɺൿີݤͷॴ༗ऀ͕࡞੒ͨ͜͠ͱΛূ໌͢Δ u ෳ਺ͷϦϨʔʹFWFOUΛ౤ߘ͢Δ͜ͱͰ৑௕ੑΛ֬อ u ϏοτίΠφʔͷίϯςΩετ͕ೱ͍͕ϒϩοΫνΣʔϯͰ͸ͳ͍ u ؆୯ʹݴ͏ͱϒϩοΫνΣʔϯ͔ΒաڈࢀরͷνΣʔϯΛ֎͠ ͨ࢓૊Έ u ࿈ଓੑ͕อূ͞Εͳ͍ͷͰաڈ΍ະདྷʹ΋౤ߘ͕Մೳ u ୯Ұো֐఺͕ͳ͘ɺӬଓͷՄೳੑ͕͋Δ u -JHIUOJOHʹΑΔ౤͛મ͕Մೳ u ڧݻͳݕӾ଱ੑ͕͋Δ u ෼ࢄ͍ͯ͠ΔͨΊɺ࡟আ͕೉͍͠
  9. Relay 1 Relay 2 Relay 3 Relay 4 Relay 5

    Relay 6 user A user B user C
  10. Relay 1 Relay 2 Relay 3 Relay 4 Relay 5

    Relay 6 user A user B user C 全員の 投稿が⾒える user Cの 投稿が⾒えない user Aの 投稿が⾒えない
  11. NIP

  12. NIP-05 Mapping Nostr keys to DNS-based internet identifiers https://github.com/nostr-protocol/nips/blob/master/05.md ユーザーの公開鍵をDNSベースで紐づけて本⼈確認する仕組み

    kind 0のeventがユーザー情報になっているが、本⼈かどうか証明が難しいため、本⼈を証明する⽅法 のひとつとして⽤意されている(ドメインがコントロールできていれば本⼈だろうという前提) "kind":0, "content":"{ "name":"kojira", "nip05":"[email protected]", :(省略)
  13. /*1 u/*1ͷϒϥ΢β֦ு u $ISPNF޲͚ u OPTY IUUQTDISPNFHPPHMFDPNXFCTUPSFEFUBJMOPT YLQHFGDGNOBGKHQCMPNJIQHNFKKEBOKKQ u "MCZIUUQTHFUBMCZDPN

    u 'JSFGPY޲͚ u OPTYGPYIUUQTEJFHPHVSQFHVJDPNOPTYGPY u J04޲͚ u OPTUPSF IUUQTBQQTBQQMFDPNKQBQQOPTUPSFJE 
  14. FWFOU { "kind": 1, "pubkey": "b3e43e8cc7e6dff23a33d9213a3e912d895b1c3e4250240e0c99dbefe3068b5f", "created_at": 1698898789, "tags": [],

    "content": "テスト投稿", "id": "1674b37334c009104e4e420fc1374ccce3e7950251365ad4d490f4e95b989ed3", "sig": "2e8d0042e47028527df51c24a9346b156d3561d7a55ef982f0a7d8ab848e716eea29f becb5e574b51bbc6ab696e8909ec150a83e31dac6c60eca4d5cb0efa3c2" } イベントの種類 公開鍵 unixtime 内容 タグ event id シグネチャ event json
  15. $MJFOUT • %BNVTIUUQTEBNVTJP • J04ΫϥΠΞϯτɻڪΒ͘ੈքҰ࢖ΘΕ͍ͯΔΞϓϦɻདྷ೥"OESPJE൛ΛϦϦʔε ͢ΔΒ͍͠ • "NFUIZTUIUUQTHJUIVCDPNWJUPSQBNQMPOBBNFUIZTU • "OESPJEΫϥΠΞϯτɻػೳ͕࠷΋๛෋ɻߋ৽͕සൟɻ

    • OPTUUFSIUUQTOPTUUFSBQQ • ೔ຊࠃ࢈ΫϥΠΞϯτɻ೔ຊਓॳ৺ऀ͕࢖͍΍͍͢ • SBCCJUIUUQTTZVTVJTHJUIVCJPSBCCJU • ೔ຊ࢈ΫϥΠΞϯτɻϚϧνΧϥϜͷEFDLλΠϓɻͷ͢ഇਓ޲͚
  16. /PTUSͰͷࢲͷ։ൃ u /PTUJGZͱ͍͏/PTUSͷ౤ߘΛϑΟϧλͯ͠EJTDPSEʹ౤ ߘ͢ΔEJTDPSEͷCPU u /PTUSDIBOͱ͍͏ର࿩CPUγεςϜ ମՔಇத u /PTUS౤ߘͷίϚϯυͰCPUΛ৽ͨʹੜΉ͜ͱ͕Մೳ u

    XTTSLPKJSBJPͷϦϨʔΛՔಇத u ઌ೔%BNVTͷ೔ຊޠ޲͚ϦϨʔͱͯ͠૊Έࠐ·Ε·ͨ͠ u ຖ೔ΫΠζΛ࣮ࢪத u ਖ਼ղऀʹTBUPTIJΛ౤͛મ
  17. /PTUSͷࠓޙ u ੈքن໛ͷΦϑձ ʁ ͕൒೥ʹճ͘Β͍ͷϖʔεͰ։࠵͞Εͦ͏ u δϟοΫɾυʔγʔ͸/PTUS͸εʔύʔΞϓϦʹͳΔͱड़΂͍ͯΔ u Ұ౓ઃఆͯ͠͠·͑͹ϒϥ΢βͷϩάΠϯ͕0"VUIΑΓ΋؆୯ ௨৴͕ൃੜ͠ͳ͍

    u /PTUSΛόοΫΤϯυʹͯ͠IPTUJOH͢ΔαʔϏεɺϥΠϒ഑৴ɺνϟοτɺήʔϜͳͲ͕͋ΓɺͦΕ Ҏ֎ʹ΋ແݶͷՄೳੑ͕͋Δ u GJBUKBGΑΓ͢Ͱʹ೔ຊਓ໊ʹສTBUPTIJ͕ࢧԉ͞Ε͍ͯͯɺ0QFO4BUT͔Β΋೔ຊͷ/PTUS։ൃऀ ʹࢧԉ͞Ε͍ͯΔɻࠓޙ΋ͬͱ੝ΜʹͳΔ͜ͱ͕༧૝͞ΕΔ ೔ຊ͸Ϣʔβʔ਺Ґ u 0QFO4BUTͷࢧԉͰຊۀͷऩೖΛӽ͑ͨਓ΋