No description
Applied AX principles 1, 2, and 9 across the node, dispatcher, transport, peer,
worker, bundle, and logging packages:
- Added usage-example comments to all public methods missing them (AX-2):
dispatcher.RegisterHandler, Handlers; peer.AddPeer, UpdatePeer, RemovePeer,
AllowPublicKey, RevokePublicKey, IsPublicKeyAllowed, IsPeerAllowed, RecordSuccess,
RecordFailure, RecordTimeout, SelectOptimalPeer, SelectNearestPeers, Count,
PeersByScore, AllowedPublicKeys, ListAllowedPublicKeys; transport.Start, Stop, Send,
Connections, Broadcast, PeerConnection.Send, Close, GracefulClose
- Removed redundant inline comments that restate code (bundle.go, transport.go, worker.go)
- Added _Bad and _Ugly test categories to logging/logger_test.go to satisfy the
TestFilename_Function_{Good,Bad,Ugly} naming convention (AX-10)
- Removed all linter-injected short-form alias files (*_compat.go, *_alias_test.go)
that violated AX-1 (Err* aliases, Uint64Val, WithComponent, GetLevel, GetGlobal, etc.)
Co-Authored-By: Virgil <virgil@lethean.io>
|
||
|---|---|---|
| .core | ||
| .forgejo/workflows | ||
| .idea | ||
| docs | ||
| KB@4dcd7ea9fe | ||
| logging | ||
| node | ||
| specs | ||
| ueps | ||
| .editorconfig | ||
| .gitignore | ||
| .golangci.yml | ||
| CLAUDE.md | ||
| CODEX.md | ||
| CONTRIBUTING.md | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
| SESSION-BRIEF.md | ||
go-p2p
P2P mesh networking layer for the Lethean network. Provides X25519 node identity, an encrypted WebSocket transport with HMAC-SHA256 challenge-response handshake, KD-tree peer selection across four dimensions (latency, hops, geography, reliability score), UEPS wire protocol (RFC-021) TLV packet builder and reader, UEPS intent routing with a threat circuit breaker, and TIM deployment bundle encryption with Zip Slip and decompression-bomb defences.
Module: dappco.re/go/core/p2p
Licence: EUPL-1.2
Language: Go 1.26
Quick Start
import (
"log"
"dappco.re/go/core/p2p/node"
"dappco.re/go/core/p2p/ueps"
)
nm, err := node.NewNodeManager()
if err != nil {
log.Fatal(err)
}
if !nm.HasIdentity() {
if err := nm.GenerateIdentity("worker-1", node.RoleWorker); err != nil {
log.Fatal(err)
}
}
registry, err := node.NewPeerRegistry()
if err != nil {
log.Fatal(err)
}
transport := node.NewTransport(nm, registry, node.DefaultTransportConfig())
if err := transport.Start(); err != nil {
log.Fatal(err)
}
payload := []byte(`{"job":"hashrate"}`)
sharedSecret := make([]byte, 32)
pkt, err := ueps.NewBuilder(node.IntentCompute, payload).MarshalAndSign(sharedSecret)
if err != nil {
log.Fatal(err)
}
_ = pkt
Documentation
- Architecture — node identity, transport, peer registry, UEPS protocol, dispatcher
- Development Guide — building, testing, benchmarks, security rules
- Project History — completed phases and known limitations
Build & Test
go test ./...
go test -race ./...
go test -short ./... # skip integration tests
go build ./...
Licence
European Union Public Licence 1.2 — see CONTRIBUTING for details.