Discovery is important. but other specifications and implementations might have problems with initialization.
Like how are you going to find planets when you have no idea how to access a planet's computer address
and by computer address i mean all methods a computer can identify each-other, like ip and domains (dns).
this document written on is Semantic version 0.0.1. this document is self-published independently.
While you use the web like a regular person, you might not have any idea how Decentralized systems work. Decentralized means without a central authority, by usually it is an "almost". while ANTRequest's Specifications are also an "almost". i try to lessen the impact of ANTRequest's eventul disappearance by promoting "Fork Build Deploy" as seen in the Philosophy section of the Foundation.
But you cant have a Decentralized Network without having a Network, and you cant have a Network without finding
other Nodes. planetpeer.json solves the "find more Planets
using a starting point". but you might not have a starting point, that is the bootstrapping problem
how to find your first planet when you have none.
planetpeer.jsonA planetpeer.json is a JSON file that MUST be accessible at
https://{domain}
where /Favicond_/planetpeer.json{domain} is the planet's domain. a planetpeer.json
MUST follow these rules too
planetpeer.json Root MUST be an object.
planetpeer.json Root MUST contain the key
"PlanetaryPeers", it MUST be an array, even if empty.
"PlanetaryPeers" MUST contain Planetary Peer objects.
planetpeer.json MUST be valid JSON and SHOULD be sent with
appliaction/json.
In a normal Decentralized system, there are only peers, almost no servers , but in the ANTRequest Specification ecosystem Servers (called Planets) are an important part of the ecosystem, where Peer means Edges, Planetary Peer means Peers as Planets.
To Support a Decentralized Network, Planets are recommended to have as many Planetary Peers as possible as they wish. Planetary Peer object's structure is at follows. (the Field description MUST be followed, if you do not wish to implement a field, do not include it in the JSON)
| Field Name | Field Type | Required | Field Description |
|---|---|---|---|
Origin
| string | MUST | the plate's Origin, in the format of the Origin Header, Ports and Plain HTTP schemes MUST not be listed at all. |
LastFetched
| string | MAY | When the current planet Last Fetched the planet's planet.json in the RFC 3339 Format.
|
You MUST add the URL https://antrequest.nl/standard/PlanetPeer/0.0.1/ with "main" set to
true. if planetpeer.json is supported "planetpeerjson" MUST be set to
true also. like so.
{
"compat": {
"https://antrequest.nl/standard/PlanetSpec/0.1.0/": {
"main": true
},
"https://antrequest.nl/standard/PlanetPeer/0.0.1/": {
"main": true,
"planetpeer_json": true
}
}
}