Something went wrong. Try again.
better peer-to-peer file sharing
Something went wrong. Try again.
Commits 23
chore: s/client/peer/g
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
chore: fix CID type in example resource
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
chore: fix heading levels
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
docs: add note about lack of records
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
docs: add lexicons to README
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
docs: add prev to list of metadata fields
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
chore: add LICENSE
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
docs: name-drop atproto
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
docs: update README
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
refactor: change peer location to URI string
Signed-off-by: Maxwell S. Fritz <git@mfzx.net>
README.md
peer.internal #
better peer-to-peer file sharing inspired by atproto
features #
- anonymous (peers are identified by public key)
- extensible (peers ignore unsupported fields)
- less overhead than bittorrent (metadata and file verification)
- more expressive torrent metadata (
categories,content-language,prev,screenshots, etc.)
soon #
- mark certain fields as critical
- transport protocol (considering libp2p)
- actual specifications
- actual code
- DHT support
- a real domain name
lexicons #
records #
the intent is to define as few records as possible, since public broadcast of events or ranges is inadvisable.
objects #
- internal.peer.to.peer: A container for a peer's identity and network location. An optional value indicating the peer's current progress for a related topic MAY be included.
- internal.peer.event: An ephemeral event representing an update to a peer's status, identity, and network location, in relation to a specific topic.
- internal.peer.range: A specific range of bytes from a related topic. The actual bytes in the range MAY be included, and the associated BLAKE3 proof MUST be included with it.
tokens #
- internal.peer.exchange: One of the keys utilized in the header of peer.internal torrent files, indicates that the corresponding value is an array of "active peers".
- internal.peer.exchange.closed: Used to indicate that the signalling peer will decline incoming requests for bytes.
- internal.peer.exchange.open: Used to indicate that the signalling peer will accept incoming requests for bytes.
- internal.peer.tracker: One of the keys utilized in the header of peer.internal torrent files, indicates that the corresponding value is an array of "trackers".
- internal.peer.tracker.started: Used to indicate that the signalling peer has started receiving bytes.
- internal.peer.tracker.stopped: Used to indicate that the signalling peer has temporarily stopped receiving bytes.
- internal.peer.tracker.completed: Used to indicate that the signalling peer has finished receiving bytes.
queries #
- internal.peer.requestEvents: Request a list of events matching a specific kind and/or topic from another peer.
- internal.peer.requestRanges: Request a set of non-overlapping ranges from another peer.
procedures #
- internal.peer.publishEvent: Publish a signed event to another peer.
- internal.peer.publishRange: Publish a content-addressed range of bytes and the associated BLAKE3 proof to another peer.