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

分散型SNS最新状況

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for kojira kojira
November 22, 2023

 分散型SNS最新状況

Avatar for kojira

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ͷࢧԉͰຊۀͷऩೖΛӽ͑ͨਓ΋