denoland / denoland/celld

[experimental] replace static peer endpoints with signed identity tokens

Open
#135 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
4.6k
Forks
171
PR merge metrics
No merged PRs in 30d

Description

## summary
exploration to replace static peer endpoints with signed identity tokens as the primary peer endpoint selection method, while keeping the existing bucket-based ownership model intact.

## what changed
- added identity token and transport-hint fields to node lease metadata in
[crates/logic/lib.rs](https://github.com/maceip/celld-fabric/blob/main/crates/logic/lib.rs) and
[crates/celld/ownership_store.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/ownership_store.rs)
- added staged peer transport policy support:
- locator identity preference in
[crates/logic/lib.rs](https://github.com/maceip/celld-fabric/blob/main/crates/logic/lib.rs) and
[crates/celld/main.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/main.rs)
- relay token and alias preference in
[crates/logic/lib.rs](https://github.com/maceip/celld-fabric/blob/main/crates/logic/lib.rs),
[crates/celld/peer_transport.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/peer_transport.rs), and
[crates/celld/main.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/main.rs)
- quic capability url preference in
[crates/logic/lib.rs](https://github.com/maceip/celld-fabric/blob/main/crates/logic/lib.rs),
[crates/celld/peer_transport.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/peer_transport.rs), and
[crates/celld/main.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/main.rs)
- commitment lookup preference in
[crates/celld/peer_transport.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/peer_transport.rs) and
[crates/celld/main.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/main.rs)
- added peer transport resolver logic in core runtime and dispatch paths in
[crates/celld/peer_transport.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/peer_transport.rs) and
[crates/celld/main.rs](https://github.com/maceip/celld-fabric/blob/main/crates/celld/main.rs)
- documented staged behavior and new env vars in
[docs/README.md](https://github.com/maceip/celld-fabric/blob/main/docs/README.md)
- added a local-only fabric dev harness and deployable example projects in
[dev-harness/fabric/README.md](https://github.com/maceip/celld-fabric/blob/main/dev-harness/fabric/README.md),
[dev-harness/fabric/examples/README.md](https://github.com/maceip/celld-fabric/blob/main/dev-harness/fabric/examples/README.md), and
[dev-harness/fabric/examples](https://github.com/maceip/celld-fabric/blob/main/dev-harness/fabric/examples)
- updated the root readme to describe identity-based peer endpoint selection in
[README.md](https://github.com/maceip/celld-fabric/blob/main/README.md)
## why tho
reverse dns and static IPs (that we get for free from aws) are location labels, not identity: they can be reassigned, changed, or cached stale, so the same ip↔hostname pair can point to a different machine over time. TLS endpoint trust is tied to hostname/cert binding, so when addresses churn, host-based verification tracks routing details instead of a durable peer identity, increasing ambiguity in who is actually at the other end.

## rollout plan
- start with preferred modes that keep fallback behavior
- validate mixed-fleet behavior and failure handling
- move to stricter modes only after token coverage is complete

## notes
this is not a full network rewrite. it is a compatibility-first change to peer endpoint selection that reduces direct dependence on bare ip:port in the normal path. the beauty in using s3 for the control plane & universal façade was motivation in using DNS similarly

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the lease metadata in crates/logic/lib.rs and crates/celld/ownership_store.rs, then trace resolver and dispatch behavior through crates/celld/peer_transport.rs and crates/celld/main.rs. Use docs/README.md and the dev-harness/fabric examples to check the staged rollout, fallback behavior, mixed-fleet failure handling, and token coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
distributed-systems, networking, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.