Skip to content
/ go-dep2p Public

DeP2P - P2P Networking Foundation (QUIC-first): NodeID identity, Realm isolation, NAT traversal & relay fallback, introspection diagnostics

License

Notifications You must be signed in to change notification settings

dep2p/go-dep2p

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

26 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

DeP2P โ€”โ€” ่ฎฉ P2P ่ฟžๆŽฅๅƒ่ฐƒ็”จๅ‡ฝๆ•ฐไธ€ๆ ท็ฎ€ๅ•

โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—    โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— 
โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•  โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—
โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—    โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•     โ–ˆโ–ˆโ–ˆโ•”โ•   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•
โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•”โ•โ•โ•    โ–ˆโ–ˆโ•”โ•โ•โ•โ•    โ–ˆโ–ˆโ–ˆโ•”โ•     โ–ˆโ–ˆโ•”โ•โ•โ•โ• 
โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘       โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•‘     
โ•šโ•โ•โ•โ•โ•โ•โ•   โ•šโ•โ•โ•โ•โ•โ•โ•  โ•šโ•โ•       โ•šโ•โ•โ•โ•โ•โ•โ•   โ•šโ•โ•     

็ฎ€ๆดใ€ๅฏ้ ใ€ๅฎ‰ๅ…จ็š„ P2P ็ฝ‘็ปœๅŸบ็ก€ๅบ“๏ผˆQUIC ไผ˜ๅ…ˆ๏ผ‰
NodeID ็›ด่ฟž + Realm ้š”็ฆป + NAT ็ฉฟ้€/ไธญ็ปงๅ›ž้€€๏ผŒๅผ€็ฎฑๅณ็”จ
่ฎฉๅŽปไธญๅฟƒๅŒ–ๅƒไบ’่”็ฝ‘ไธ€ๆ ท่‡ช็„ถ๏ผŒ่ฎฉ่ฟžๆŽฅๅƒ่ฐƒ็”จๅ‡ฝๆ•ฐไธ€ๆ ทไผ˜้›…

๐Ÿ“– English | ไธญๆ–‡

Go Version License Platform Status

๐Ÿ“Š ไปฃ็ ่ง„ๆจก๏ผš16.1 ไธ‡่กŒ Go ไปฃ็ ๏ผˆๆ€ป่กŒๆ•ฐ 25.0 ไธ‡๏ผŒๅซๆณจ้‡Š/็ฉบ่กŒ๏ผ‰


๐Ÿ“‘ ็›ฎๅฝ•


๐ŸŒŒ ๆ ธๅฟƒๆ„ฟๆ™ฏ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                                     โ”‚
โ”‚         ่ฎฉ P2P ๆˆไธบไธ–็•Œ็บงๅŸบ็ก€่ฎพๆ–ฝ๏ผš็ป™ไธ€ไธช NodeID๏ผŒๅฐฑ่ƒฝ่ทจ่ถŠ็ฝ‘็ปœ่พน็•Œ           โ”‚
โ”‚                                                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

NodeID = ๅ…ฌ้’ฅ่บซไปฝ๏ผˆBase58 ็ผ–็ ๏ผ‰ใ€‚็›ฎๆ ‡ๆ˜ฏโ€œๆŒ‰่บซไปฝ่ฟžๆŽฅโ€๏ผŒ่€Œไธๆ˜ฏโ€œๆŒ‰ IP/ๅŸŸๅ่ฟžๆŽฅโ€ใ€‚
Realm = ไธšๅŠก่พน็•Œ๏ผˆๅคš็งŸๆˆท/ๅคšๅบ”็”จ้š”็ฆป๏ผ‰ใ€‚ไธๅŒ Realm ็š„่Š‚็‚นไบ’ไธๅฏ่ง๏ผŒ้ฟๅ…็ฝ‘็ปœๆฑกๆŸ“ใ€‚

DeP2P ็š„ๆ„ฟๆ™ฏไธๆ˜ฏโ€œๅ†้€ ไธ€ไธช P2P ๅ่ฎฎ้›†ๅˆโ€๏ผŒ่€Œๆ˜ฏๆŠŠ็”Ÿไบงๅฏ็”จ็š„่ฟžๆŽฅ่ƒฝๅŠ›ๆ”ถๆ•›ๆˆไบบไบบๅฏ็”จใ€้šๅค„ๅฏ็”จใ€ๅฏ้ ๅฏๆŽง็š„ๅทฅ็จ‹ๅŸบๅบง๏ผš


๐ŸŒ  ๆ˜Ÿ่พฐๅคงๆตท

DeP2P ็š„็›ฎๆ ‡ๆ˜ฏๆˆไธบ Web3 ไธŽ็Žฐๅฎžไธ–็•Œ็š„็ฝ‘็ปœๅบ•ๅบงใ€‚ๆˆ‘ไปฌๆƒณ่ฎฉ่ฟžๆŽฅ็š„่พน็•Œๆถˆๅคฑ๏ผŒ่ฎฉ็ณป็ปŸ่ทจ่ถŠไบ‘ใ€่พนใ€็ซฏใ€้“พไธŽๅ…จ็ƒ็ฝ‘็ปœ๏ผš

  • ๅŽปไธญๅฟƒๅŒ–ๅบ”็”จ๏ผš่ฎฉๆฏไธชๅบ”็”จ้ƒฝ่ƒฝๆ‹ฅๆœ‰่‡ชๅทฑ็š„็งๅŸŸ็ฝ‘็ปœไธŽๅ…จ็ƒๅฏ่พพๆ€ง
  • AI ไธŽ Agent ็ฝ‘็ปœ๏ผš่ฎฉๆ™บ่ƒฝไฝ“ไน‹้—ดๅƒๅ‡ฝๆ•ฐ่ฐƒ็”จไธ€ๆ ทไบ’่”ไธŽๅไฝœ
  • ่พน็ผ˜ไธŽ IoT๏ผšๅœจไธ็จณๅฎš็ฝ‘็ปœไธญไฟๆŒโ€œๅฏ่พพใ€ๅฏๆŽงใ€ๅฏ่งฃ้‡Šโ€
  • ่ทจๅœฐๅŸŸๅไฝœ๏ผšๅคšๅ›ฝๅฎถใ€ๅคš็ฝ‘็ปœใ€ๅคš่ฟ่ฅๅ•†็š„็จณๅฎšไบ’่”
  • ๅผ€ๆ”พๅŸบ็ก€่ฎพๆ–ฝ๏ผš่ฎฉๆฏไธช่Š‚็‚นๆ—ขๆ˜ฏ็”จๆˆทไนŸๆ˜ฏ็ฝ‘็ปœ็š„ไธ€้ƒจๅˆ†

ๆˆ‘ไปฌ็›ธไฟก๏ผŒๆœชๆฅ็š„็ฝ‘็ปœไธๆ˜ฏโ€œๆ›ดๅคšๆœๅŠกๅ™จโ€๏ผŒ่€Œๆ˜ฏโ€œๆ›ดๅคš่Š‚็‚นโ€ใ€‚DeP2P ่ฆๅš็š„๏ผŒๆ˜ฏ่ฎฉๆฏไธช่Š‚็‚น้ƒฝๆˆไธบไธ–็•Œ็š„ไธ€้ƒจๅˆ†ใ€‚


๐Ÿ†š ไธบไป€ไนˆ้€‰ๆ‹ฉ DeP2P๏ผŸ

ไผ ็ปŸ P2P ๅบ“็š„ 5 ๅคง็—›็‚น

็—›็‚น ไผ ็ปŸๆ–นๆกˆ DeP2P ๆ–นๆกˆ
ไธŠๆ‰‹้šพ ๆ‹ผ่ฃ…ไธ€ๅ †ๅบ•ๅฑ‚็ป„ไปถ๏ผŒ่‡ชๅทฑๆŽฅ็บฟ ไธ‰ๆญฅ็›ด่พพ๏ผšๅฏๅŠจ โ†’ ๅŠ ๅ…ฅ็ฝ‘็ปœ โ†’ ๅ‘ๆถˆๆฏ
็ฝ‘็ปœไนฑ ่ทฏ็”ฑ่กจๅ……ๆปกไธ็›ธๅ…ณ่Š‚็‚น ไธšๅŠก้š”็ฆป๏ผšๅช็œ‹่งโ€œ่‡ชๅทฑไบบโ€
ๅฏๅŠจๆ…ข ้œ€่‡ชๅปบๆ‰€ๆœ‰ๅŸบ็ก€่ฎพๆ–ฝ ๅผ€็ฎฑๅณ็”จ๏ผšๆƒๅจ็›ฎๅฝ• + ็›ด่ฟžๅ…ฅๅฃ
็Šถๆ€็›ฒ ไธ็Ÿฅ้“่ฐๅœจ็บฟใ€่ฐๆމ็บฟใ€่ฐไธ็จณๅฎš ๅฎžๆ—ถๆ„Ÿ็Ÿฅ๏ผš็ง’็บงๆฃ€ๆต‹ + ๆ™บ่ƒฝๅˆคๅฎš
่ต„ๆบ็ˆ† ่ฟžๆŽฅๆ•ฐๆšดๆถจ๏ผŒ่ต„ๆบ่€—ๅฐฝ ๆ™บ่ƒฝ็ฎกๆŽง๏ผš่‡ชๅŠจ่ฃๅ‰ช + ้‡่ฆไฟๆŠค

ไธŽๅ…ถไป– P2P ๅบ“ๅฏนๆฏ”

็ปดๅบฆ libp2p iroh DeP2P
API ็ฎ€ๆดๆ€ง โš ๏ธ ้…็ฝฎๅคๆ‚ โš ๏ธ ๆฆ‚ๅฟต่พƒๅคš โœ… ๆž็ฎ€ API
ไธšๅŠก้š”็ฆป โŒ ๆ— ๅŽŸ็”Ÿๆ”ฏๆŒ โš ๏ธ ้œ€ๆ‰‹ๅŠจๅฎž็Žฐ โœ… Realm ้š”็ฆป
่ฟžๆŽฅๅฏ้ ๆ€ง โš ๏ธ ้œ€ๆ‰‹ๅŠจ้…็ฝฎ โš ๏ธ ้œ€ๆ‰‹ๅŠจ้…็ฝฎ โœ… ่‡ชๅŠจๅ›ž้€€
ๆ–ญๅผ€ๆฃ€ๆต‹ โš ๏ธ ้œ€่‡ช่กŒๅฎž็Žฐ โš ๏ธ ้œ€่‡ช่กŒๅฎž็Žฐ โœ… ๅคšๅฑ‚ๆฃ€ๆต‹+่ง่ฏไบบ
้›ถ้…็ฝฎๅฏๅŠจ โŒ ้œ€่ฆ้…็ฝฎ โš ๏ธ ้œ€่ฆ้…็ฝฎ โœ… ๅผ€็ฎฑๅณ็”จ

โœจ ๆ ธๅฟƒ็‰นๆ€ง

็‰นๆ€ง ่ฏดๆ˜Ž
ๆž็ฎ€ API ไธ€่กŒไปฃ็ ๅ‘ๆถˆๆฏ๏ผŒๆ— ้œ€้…็ฝฎๅคๆ‚็ป„ไปถ
่บซไปฝไผ˜ๅ…ˆ ่ฟžๆŽฅ็›ฎๆ ‡ๆ˜ฏ NodeID๏ผˆๅ…ฌ้’ฅ๏ผ‰๏ผŒ่€Œ้ž IP ๅœฐๅ€
Realm ้š”็ฆป ไธšๅŠก็ฝ‘็ปœ็‹ฌ็ซ‹๏ผŒ้ฟๅ…่Š‚็‚นๆฑกๆŸ“
ๆ™บ่ƒฝ่ฟžๆŽฅ ่‡ชๅŠจ NAT ็ฉฟ้€ใ€ๅœฐๅ€ๅ‘็Žฐใ€้€ๆ˜Žไธญ็ปงๅ›ž้€€
ๅคšๅฑ‚ๆ–ญๅผ€ๆฃ€ๆต‹ QUIC ๅฟƒ่ทณ + ้‡่ฟžๅฎฝ้™ + ่ง่ฏไบบๆœบๅˆถ + ้œ‡่กๆŠ‘ๅˆถ
ๆƒๅจ็›ฎๅฝ•ๅ‘็Žฐ ๆƒๅจ็›ฎๅฝ•ไฟ่ฏโ€œๆ‰พๅพ—ๅˆฐโ€๏ผŒ็ผ“ๅญ˜ๅŠ ้€Ÿ่ฎฉโ€œๆ›ดๅฟซโ€
่ฟžๆŽฅ็ฎก็† ๆฐดไฝ็บฟๆŽงๅˆถ + ้‡่ฆ่ฟžๆŽฅไฟๆŠค + ่‡ชๅŠจ่ฃๅ‰ช
QUIC ไผ˜ๅ…ˆ ็Žฐไปฃไผ ่พ“ๅ่ฎฎ๏ผŒๅ†…็ฝฎๅŠ ๅฏ†ๅ’Œๅคš่ทฏๅค็”จ
้›ถ้…็ฝฎๅฏๅŠจ ๅˆ็†้ป˜่ฎคๅ€ผ๏ผŒๅผ€็ฎฑๅณ็”จ

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

็ณป็ปŸ่ฆๆฑ‚

  • Go: 1.21+
  • Git: ็”จไบŽ็‰ˆๆœฌๆŽงๅˆถ

ๅฎ‰่ฃ…

go get github.com/dep2p/go-dep2p

30 ็ง’ไธŠๆ‰‹๏ผšไธ‰ๆญฅ่ตฐๆต็จ‹

package main

import (
    "context"
    "fmt"
    "log"
    
    "github.com/dep2p/go-dep2p"
    "github.com/dep2p/go-dep2p/pkg/types"
)

func main() {
    ctx := context.Background()
    
    // Step 1: ๅˆ›ๅปบๅนถๅฏๅŠจ่Š‚็‚น๏ผˆ็ณป็ปŸๅฑ‚่‡ชๅŠจๅฐฑ็ปช๏ผ‰
    node, err := dep2p.New(ctx, dep2p.WithPreset(dep2p.PresetDesktop))
    if err != nil {
        log.Fatalf("ๅˆ›ๅปบ่Š‚็‚นๅคฑ่ดฅ: %v", err)
    }
    if err := node.Start(ctx); err != nil {
        log.Fatalf("ๅฏๅŠจ่Š‚็‚นๅคฑ่ดฅ: %v", err)
    }
    defer node.Close()
    
    fmt.Printf("่Š‚็‚น ID: %s\n", node.ID())
    
    // Step 2: ๅŠ ๅ…ฅไธšๅŠก็ฝ‘็ปœ๏ผˆๅฟ…้กป๏ผ๏ผ‰
    realm, err := node.Realm("my-first-realm")
    if err != nil {
        log.Fatalf("่Žทๅ– Realm ๅคฑ่ดฅ: %v", err)
    }
    if err := realm.Join(ctx); err != nil {
        log.Fatalf("ๅŠ ๅ…ฅ Realm ๅคฑ่ดฅ: %v", err)
    }
    
    // Step 3: ไฝฟ็”จไธšๅŠก API
    messaging := realm.Messaging()
    // messaging.Send(ctx, peerID, "/my/protocol/1.0", []byte("Hello!"))
    
    fmt.Println("่Š‚็‚นๅทฒๅฐฑ็ปช๏ผŒๅฏไปฅๅผ€ๅง‹้€šไฟก๏ผ")
}

่ฟ™ๅฐฑๆ˜ฏ DeP2P ็š„็ฎ€ๆดๆ€ง๏ผš

  • โœ… 3 ่กŒไปฃ็ ๅปบ็ซ‹่ฟžๆŽฅ๏ผšๅฏๅŠจ่Š‚็‚น โ†’ ๅŠ ๅ…ฅ Realm โ†’ ๅ‘้€ๆถˆๆฏ
  • โœ… ่‡ชๅŠจๅค„็†ๅคๆ‚็ป†่Š‚๏ผšNAT ็ฉฟ้€ใ€ๅœฐๅ€ๅ‘็Žฐใ€ไธญ็ปงๅ›ž้€€
  • โœ… ่บซไปฝไผ˜ๅ…ˆ๏ผšๅช้œ€ NodeID๏ผŒๆ— ้œ€ๅ…ณๅฟƒ IP ๅœฐๅ€

ไบ‘ๆœๅŠกๅ™จ้ƒจ็ฝฒ

ไบ‘ๆœๅŠกๅ™จๅœบๆ™ฏๆŽจ่้…็ฝฎ๏ผš

// ไบ‘ๆœๅŠกๅ™จ๏ผšไฝฟ็”จ known_peers ็›ด่ฟž + ไฟกไปป STUN ๅœฐๅ€
node, err := dep2p.New(ctx,
    dep2p.WithPreset(dep2p.PresetServer),
    dep2p.WithKnownPeers([]dep2p.KnownPeer{
        {PeerID: "12D3KooW...", Addrs: []string{"/ip4/1.2.3.4/udp/4001/quic-v1"}},
    }),
    dep2p.WithTrustSTUNAddresses(true),  // ่ทณ่ฟ‡ๅ…ฅ็ซ™้ชŒ่ฏ๏ผŒๅŠ ้€ŸๅฏๅŠจ
)
if err != nil {
    log.Fatalf("ๅˆ›ๅปบ่Š‚็‚นๅคฑ่ดฅ: %v", err)
}
if err := node.Start(ctx); err != nil {
    log.Fatalf("ๅฏๅŠจ่Š‚็‚นๅคฑ่ดฅ: %v", err)
}

๐Ÿ“– ่ฏฆ็ป†้…็ฝฎ๏ผš้…็ฝฎๆŒ‡ๅ—

ๆ›ดๅคš็คบไพ‹

็คบไพ‹ ้šพๅบฆ ่ฏดๆ˜Ž
ๅŸบ็ก€็คบไพ‹ โญ ๆœ€็ฎ€ๅ•็š„่Š‚็‚นๅˆ›ๅปบ
Echo ็คบไพ‹ โญโญ ๅญฆไน ๆต้€šไฟก
Chat ็คบไพ‹ โญโญโญ ๅฑ€ๅŸŸ็ฝ‘่Šๅคฉๅบ”็”จ
Chat Public โญโญโญโญ ๅ…ฌ็ฝ‘ไธ‰่Š‚็‚น่Šๅคฉ
Relay ็คบไพ‹ โญโญโญโญ NAT ็ฉฟ้€ไธŽไธญ็ปง

๐Ÿ—๏ธ ๆŠ€ๆœฏๆžถๆž„

ไธ‰ๅฑ‚ๆžถๆž„

DeP2P ้‡‡็”จไธ‰ๅฑ‚ๆžถๆž„่ฎพ่ฎก๏ผŒๆธ…ๆ™ฐๅˆ†็ฆป็ณป็ปŸๅŸบ็ก€ใ€ไธšๅŠก้š”็ฆปๅ’Œๅบ”็”จๅ่ฎฎ๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Layer 3: ๅบ”็”จๅ่ฎฎๅฑ‚                                                  โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
โ”‚  โ€ข Messaging / PubSub / Discovery / Streams                         โ”‚
โ”‚  โ€ข ๅ่ฎฎๅ‰็ผ€: /dep2p/app/*                                            โ”‚
โ”‚  โ€ข [!] ๅฟ…้กปๅŠ ๅ…ฅ Realm ๅŽๆ‰่ƒฝไฝฟ็”จ                                       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Layer 2: Realm ๅฑ‚๏ผˆไธšๅŠก้š”็ฆป๏ผ‰                                        โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
โ”‚  โ€ข ไธšๅŠก้š”็ฆปใ€ๆˆๅ‘˜็ฎก็†ใ€ๅ‡†ๅ…ฅๆŽงๅˆถ๏ผˆPSK ่ฎค่ฏ๏ผ‰                               โ”‚
โ”‚  โ€ข ๅ่ฎฎๅ‰็ผ€: /dep2p/realm/*                                          โ”‚
โ”‚  โ€ข [*] ็”จๆˆทๆ˜พๅผๅŠ ๅ…ฅ๏ผŒไธฅๆ ผๅ• Realm                                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Layer 1: ็ณป็ปŸๅŸบ็ก€ๅฑ‚                                                 โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
โ”‚  โ€ข Transport / Security / DHT / Relay / NAT / Bootstrap             โ”‚
โ”‚  โ€ข ๅ่ฎฎๅ‰็ผ€: /dep2p/sys/*                                            โ”‚
โ”‚  โ€ข [~] ่Š‚็‚นๅฏๅŠจ่‡ชๅŠจๅฐฑ็ปช๏ผŒ็”จๆˆทๆ— ๆ„Ÿ็Ÿฅ                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
ๅฑ‚ ่Œ่ดฃ ็‰น็‚น
Layer 3 ๆไพ›ไธšๅŠก้€šไฟก่ƒฝๅŠ› ๅฟ…้กปๅ…ˆๅŠ ๅ…ฅ Realm ๆ‰่ƒฝไฝฟ็”จ
Layer 2 ไธšๅŠก้š”็ฆปๅ’Œๆˆๅ‘˜็ฎก็† ็”จๆˆทๆ˜พๅผๅŠ ๅ…ฅ๏ผŒPSK ่ฎค่ฏ
Layer 1 P2P ็ฝ‘็ปœๅŸบ็ก€่ฎพๆ–ฝ ่Š‚็‚นๅฏๅŠจ่‡ชๅŠจๅฐฑ็ปช๏ผŒ็”จๆˆทๆ— ๆ„Ÿ็Ÿฅ

่ฎพ่ฎก็›ฎๆ ‡

ไผ˜ๅ…ˆ็บง ็›ฎๆ ‡ ้ชŒๆ”ถๆ ‡ๅ‡†
P0 ๆ ธๅฟƒ ็ฎ€ๆดๆ€ง 3 ่กŒไปฃ็ ๅปบ็ซ‹่ฟžๆŽฅ
P0 ๆ ธๅฟƒ ๅฏ้ ๆ€ง 95%+ ่ฟžๆŽฅๆˆๅŠŸ็އ๏ผˆ็›ด่ฟžโ†’ๆ‰“ๆดžโ†’ไธญ็ปง๏ผ‰
P1 ้‡่ฆ ๅฎ‰ๅ…จๆ€ง ็ซฏๅˆฐ็ซฏๅŠ ๅฏ†๏ผŒ่บซไปฝไธๅฏไผช้€ 
P1 ้‡่ฆ ๆจกๅ—ๅŒ– ๅ„ๆจกๅ—ๅฏ็‹ฌ็ซ‹ๆต‹่ฏ•ๅ’Œๆ›ฟๆข

๐Ÿ“– ่ฏฆ็ป†ๆžถๆž„๏ผšๆžถๆž„ๆ€ป่งˆ | ๆžถๆž„ๅ†ณ็ญ–่ฎฐๅฝ•


๐Ÿ’Ž ๅ•†ไธšไปทๅ€ผ๏ผšWeb3 ๅŸบ็ก€่ฎพๆ–ฝ็š„็ฝ‘็ปœๅฑ‚

DeP2P ไธไป…ๆ˜ฏไธ€ไธช P2P ๅบ“๏ผŒๆ›ดๆ˜ฏ Web3 ๅŸบ็ก€่ฎพๆ–ฝ็š„ๆ ธๅฟƒ็ฝ‘็ปœๅฑ‚ใ€‚

ไธ‰ๅคงๆ ธๅฟƒๅœบๆ™ฏ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    DeP2P ๅ•†ไธšไปทๅ€ผๅฎšไฝ                                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                     โ”‚
โ”‚  ๐Ÿ”— ๅŒบๅ—้“พ็ฝ‘็ปœ                                                       โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                     โ”‚
โ”‚  โ€ข ไบคๆ˜“ๅนฟๆ’ญ๏ผˆPubSub + Gossip๏ผ‰                                        โ”‚
โ”‚  โ€ข ๅŒบๅ—ๅŒๆญฅ๏ผˆๅคšๆบๅนถ่กŒ + ๆ–ญ็‚น็ปญไผ ๏ผ‰                                      โ”‚
โ”‚  โ€ข ๅ…ฑ่ฏ†้€šไฟก๏ผˆไฝŽๅปถ่ฟŸ็›ด่ฟž + ไธญ็ปงๅ›ž้€€๏ผ‰                                     โ”‚
โ”‚  โ€ข ็ฝ‘็ปœ้š”็ฆป๏ผˆไธป็ฝ‘/ๆต‹่ฏ•็ฝ‘ Realm ๅˆ†็ฆป๏ผ‰                                   โ”‚
โ”‚                                                                     โ”‚
โ”‚  ๐Ÿ’พ ๅŽปไธญๅฟƒๅŒ–ๅญ˜ๅ‚จ                                                      โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                     โ”‚
โ”‚  โ€ข ๆ–‡ไปถๅˆ†ๅ— โ†’ ๅ†…ๅฎนๅฏปๅ€๏ผˆDHT๏ผ‰                                          โ”‚
โ”‚  โ€ข ๅคšๆบไธ‹่ฝฝ โ†’ ๆ–ญ็‚น็ปญไผ                                                 โ”‚
โ”‚  โ€ข Merkle Proof ๅฎŒๆ•ดๆ€งๆ ก้ชŒ                                           โ”‚
โ”‚                                                                    โ”‚
โ”‚  ๐Ÿ“ก PCDN ๅ†…ๅฎนๅˆ†ๅ‘                                                   โ”‚
โ”‚  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                    โ”‚
โ”‚  โ€ข ่ฝฏไปถไธ‹่ฝฝ๏ผˆP2P ๆ”ถ็›Šๆž้ซ˜๏ผ‰                                           โ”‚
โ”‚  โ€ข ้™ๆ€็ซ™็‚น๏ผˆWeb3 DApp ๅ‰็ซฏ๏ผ‰                                        โ”‚
โ”‚  โ€ข ่ง†้ข‘็‚นๆ’ญ๏ผˆHLS/DASH ๅˆ†็‰‡ๅŠ ้€Ÿ๏ผ‰                                      โ”‚
โ”‚  โ€ข ็›ดๆ’ญ๏ผˆPubSub + ๆ ‘็Šถๆ‹“ๆ‰‘๏ผ‰                                          โ”‚
โ”‚                                                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

PCDN ๅ››ๅคงๅฝขๆ€

ๅฝขๆ€ ็‰น็‚น P2P ๆ”ถ็›Š DeP2P ๆ–นๆกˆ
่ฝฏไปถไธ‹่ฝฝ ๅคงๆ–‡ไปถใ€ๅผบไธ€่‡ดๆ€ง โญโญโญ ๆž้ซ˜ ๅ—ไบคๆข + ๅคšๆบๅนถ่กŒ
้™ๆ€็ซ™็‚น ็‰ˆๆœฌๅŒ–ใ€้ฆ–ๅฑๆ•ๆ„Ÿ โญโญ ไธญ็ญ‰ Manifest + Merkle
่ง†้ข‘็‚นๆ’ญ ๅˆ†็‰‡ใ€็ƒญ็‚น่š้›† โญโญโญ ้ซ˜ ๅˆ†็‰‡็ดขๅผ• + ้ข„ๅŠ ่ฝฝ
็›ดๆ’ญ ่ถ…ไฝŽๅปถ่ฟŸใ€ๅฎžๆ—ถๆ‰‡ๅ‡บ โญโญโญ ้ซ˜ PubSub + ๆ ‘็Šถๆ‹“ๆ‰‘

ๅ•†ไธšๆจกๅผๆ”ฏๆ’‘

ๅ•†ไธšๆจกๅผ DeP2P ๆไพ›็š„่ƒฝๅŠ›
ๅธฆๅฎฝๆฟ€ๅŠฑ ไธŠไผ /ไธ‹่ฝฝๅญ—่Š‚ๆ•ฐ่ฎก้‡๏ผŒไธบ Token ๆฟ€ๅŠฑๆไพ›ๆ•ฐๆฎๅŸบ็ก€
ๅญ˜ๅ‚จๆฟ€ๅŠฑ ๅ†…ๅฎน็ดขๅผ•ๅ่ฎฎ๏ผŒ่ฏๆ˜Ž"ๆˆ‘ๅญ˜ๅ‚จไบ†ๅ“ชไบ›ๆ•ฐๆฎ"
CDN ๆˆๆœฌไผ˜ๅŒ– P2P ๅˆ†ๆต๏ผŒ้™ไฝŽ Origin/CDN ๅธฆๅฎฝๆˆๆœฌ
ๅŽปไธญๅฟƒๅŒ–ๆ‰˜็ฎก ้™ๆ€็ซ™็‚น P2P ๅˆ†ๅ‘๏ผŒๆ— ้œ€ไธญๅฟƒๅŒ–ๆœๅŠกๅ™จ

ๆŽจ่่ฝๅœฐ่ทฏๅพ„

้˜ถๆฎต ็›ฎๆ ‡ ่ฏดๆ˜Ž
Phase 1 ่ฝฏไปถไธ‹่ฝฝ ๆœ€ๆ˜“้ชŒ่ฏ P2P ๆ”ถ็›Š๏ผŒๆŠ€ๆœฏ็ฑปไผผ BitTorrent
Phase 2 ้™ๆ€็ซ™็‚น Manifest + Chunk๏ผŒๅฏนๆŽฅ Web3 ็ซ™็‚นๅ่ฎฎ
Phase 3 ่ง†้ข‘็‚นๆ’ญ ๅขžๅŠ ๅˆ†็‰‡็ƒญๅบฆใ€้ข„ๅŠ ่ฝฝ็ญ–็•ฅ
Phase 4 ็›ดๆ’ญ PubSub + ๆ ‘็Šถๆ‹“ๆ‰‘ + ไธฅๆ ผๅปถ่ฟŸๆŽงๅˆถ

๐ŸŒŸ ้€‚็”จๅœบๆ™ฏ

ๆŽจ่ๅœบๆ™ฏ

ๅœบๆ™ฏ DeP2P ไผ˜ๅŠฟ
ๅŒบๅ—้“พ / DeFi Realm ้š”็ฆป + ่Š‚็‚นๅ‘็Žฐ + ไบคๆ˜“ๅนฟๆ’ญ
้“พๆธธ / GameFi ไฝŽๅปถ่ฟŸ + ไธšๅŠก้š”็ฆป + ็Šถๆ€ๅŒๆญฅ
ๅŽปไธญๅฟƒๅŒ–ๅญ˜ๅ‚จ ๅคšๆบไธ‹่ฝฝ + ๅ†…ๅฎนๅฏปๅ€ + ๆ–ญ็‚น็ปญไผ 
ๅณๆ—ถ้€š่ฎฏ ็ฎ€ๅ• API + ๅฏ้ ไผ ่พ“ + ็ซฏๅˆฐ็ซฏๅŠ ๅฏ†
ๅๅŒ็ผ–่พ‘ ๅฎžๆ—ถๅŒๆญฅ + ๅ†ฒ็ช่งฃๅ†ณ + ็ฆป็บฟๆ”ฏๆŒ

้€‚็”จๆ€ง่ฏ„ไผฐ

่ฏ„ไผฐ ๅœบๆ™ฏ ่ฏดๆ˜Ž
โœ… ้žๅธธ้€‚ๅˆ ๅŒบๅ—้“พใ€ๅˆ†ๅธƒๅผๅญ˜ๅ‚จใ€ๅณๆ—ถ้€š่ฎฏใ€ๅๅŒ็ผ–่พ‘ DeP2P ๆ ธๅฟƒ่ฎพ่ฎก็›ฎๆ ‡
โš ๏ธ ้ƒจๅˆ†้€‚ๅˆ ่ง†้ข‘็‚นๆ’ญใ€็‰ฉ่”็ฝ‘ ๅปถ่ฟŸๅฏๆŽฅๅ—๏ผŒ้œ€่ฏ„ไผฐ่ต„ๆบๅ ็”จ
โŒ ไธ้€‚ๅˆ ่ถ…ไฝŽๅปถ่ฟŸ็›ดๆ’ญ(<100ms)ใ€ๅฎžๆ—ถ่ง†้ข‘ไผš่ฎฎใ€ไบ‘ๆธธๆˆ ้œ€่ฆไธๅฏ้ ไผ ่พ“๏ผˆWebRTC๏ผ‰

๐Ÿ“‹ ๆ–‡ๆกฃไธŽ่ต„ๆบ

่ต„ๆบ ่ฏดๆ˜Ž
๐Ÿ“– ๆ–‡ๆกฃไธญๅฟƒ ๅฎŒๆ•ด็š„ไธญๆ–‡ๆ–‡ๆกฃ๏ผŒๅŒ…ๅซๆ•™็จ‹ใ€ๆฆ‚ๅฟตใ€API ๅ‚่€ƒ
๐ŸŽฏ 5 ๅˆ†้’ŸไธŠๆ‰‹ ไปŽ้›ถๅผ€ๅง‹็š„ๅฟซ้€Ÿๅ…ฅ้—จๆ•™็จ‹
๐Ÿ’ก ็คบไพ‹ไปฃ็  ไปŽ็ฎ€ๅ•ๅˆฐๅคๆ‚็š„ๅฎŒๆ•ด็คบไพ‹
โš™๏ธ ้…็ฝฎๆŒ‡ๅ— ้ข„่ฎพ้…็ฝฎใ€่ฟžๆŽฅๆ€งไผ˜ๅŒ–ใ€้ƒจ็ฝฒๅปบ่ฎฎ
๐Ÿ—๏ธ ่ฎพ่ฎกๆ–‡ๆกฃ ๆžถๆž„ๅ†ณ็ญ–ใ€ๅ่ฎฎ่ง„่Œƒ๏ผˆ็ป™่ดก็Œฎ่€…๏ผ‰

๐Ÿค ่ดก็ŒฎไธŽ็คพๅŒบ

ๆˆ‘ไปฌๆฌข่ฟŽ็คพๅŒบ่ดก็Œฎ๏ผ

ๅฟซ้€Ÿๅผ€ๅง‹่ดก็Œฎ

# 1. Fork ๅนถๅ…‹้š†ไป“ๅบ“
git clone https://github.com/your-username/go-dep2p.git

# 2. ่ฎพ็ฝฎๅผ€ๅ‘็Žฏๅขƒ
cd go-dep2p
go mod tidy

# 3. ่ฟ่กŒๆต‹่ฏ•
go test ./...

# 4. ๆไบคๅ˜ๆ›ด
git commit -S -m "feat: your contribution"
git push origin your-branch

่Žทๅ–ๅธฎๅŠฉ

ๆธ ้“ ็”จ้€”
GitHub Issues Bug ๆŠฅๅ‘Šใ€ๅŠŸ่ƒฝ่ฏทๆฑ‚
GitHub Discussions ้—ฎ้ข˜่ฎจ่ฎบใ€ไฝฟ็”จๅธฎๅŠฉ
่ดก็ŒฎๆŒ‡ๅ— ๅฆ‚ไฝ•ๅ‚ไธŽ่ดก็Œฎ

๐Ÿ”ง ๅธธ่ง้—ฎ้ข˜

่Š‚็‚นๅฏๅŠจๅคฑ่ดฅ

ๅธธ่งๅŽŸๅ› ๏ผš็ซฏๅฃ่ขซๅ ็”จ

# ๆฃ€ๆŸฅ็ซฏๅฃๅ ็”จ
netstat -tulpn | grep :4001

# ่งฃๅ†ณๆ–นๆกˆ๏ผšไฝฟ็”จ่‡ชๅŠจๅˆ†้…็ซฏๅฃ๏ผˆไธๆŒ‡ๅฎš WithListenPort๏ผ‰
node, _ := dep2p.New(ctx, dep2p.WithPreset(dep2p.PresetDesktop))
_ = node.Start(ctx)
ErrNotMember ้”™่ฏฏ

ๅŽŸๅ› ๏ผšๆœชๅŠ ๅ…ฅ Realm ๅฐฑ่ฐƒ็”จไธšๅŠก API

// โŒ ้”™่ฏฏ๏ผšๆœชๅŠ ๅ…ฅ Realm ๅฐฑ่ฐƒ็”จไธšๅŠก API
// err == ErrNotMember

// โœ… ๆญฃ็กฎ๏ผšๅ…ˆ่Žทๅ– Realm ๅนถๅŠ ๅ…ฅ
realm, _ := node.Realm("my-realm")
_ = realm.Join(ctx)
err := realm.Messaging().Send(ctx, peerID, "/my/protocol/1.0", data)
่ฟžๆŽฅ่ถ…ๆ—ถ

ๅฏ่ƒฝๅŽŸๅ› ๏ผš

  1. ้˜ฒ็ซๅข™้˜ปๆญข่ฟžๆŽฅ
  2. NAT ็ฉฟ้€ๅคฑ่ดฅ
  3. ๅœฐๅ€ๆ ผๅผไธๆญฃ็กฎ

่งฃๅ†ณๆ–นๆกˆ๏ผš

  • ๆฃ€ๆŸฅ็ฝ‘็ปœๅ’Œ้˜ฒ็ซๅข™่ฎพ็ฝฎ
  • ๅฏ็”จ Relay ๆœๅŠก
  • ไฝฟ็”จ ShareableAddrs() ่Žทๅ–ๅฎŒๆ•ดๅœฐๅ€

๐Ÿ“– ่ฏฆ็ป†ๆŽ’้šœ๏ผšๆ•…้šœๆŽ’ๆŸฅ | ้”™่ฏฏ็ ๅ‚่€ƒ


๐Ÿ“„ ่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎๅŸบไบŽ MIT ่ฎธๅฏ่ฏๅผ€ๆบ - ่ฏฆ่ง LICENSE ๆ–‡ไปถใ€‚


่ฎฉ P2P ่ฟžๆŽฅๅƒ่ฐƒ็”จๅ‡ฝๆ•ฐไธ€ๆ ท็ฎ€ๅ•

ๅฟซ้€Ÿๅผ€ๅง‹ โ€ข ๆ–‡ๆกฃไธญๅฟƒ โ€ข ่ฎพ่ฎกๆ–‡ๆกฃ

Made with โค๏ธ by the DeP2P Team

About

DeP2P - P2P Networking Foundation (QUIC-first): NodeID identity, Realm isolation, NAT traversal & relay fallback, introspection diagnostics

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published