Just some thoughts on a webring that could last for decades.
For extreme longevity…
- DNS registration is often the first thing go on a project
- The integral of the cost of a backend service with a nominal fixed cost is infinite.
- Countries can be disconnected from the internet for weeks or months (i.e. Iran)
- Administrative districts on isolated power grids may experience catastrophic shutdowns. (i.e. Texas)
- Even a backend service on owned power and hardware with redundant outbound connections would be contingent on the party maintaining it continuing to exist (i.e. 2qx)
One solution to unreliable service model is to instead define a protocol. We have a system for protocols.
For example …
A list of links (and names) that can fit in a 128 commitment lengths can be handled by a contract.
The list “owner” can hold a minting NFT. They could either share mutable tokens with interested sites, or just sell them for a nominal fee.
Anyone could write their record on the commitment and send it to a contract controlled by the minting NFT. If anyone posts malicious links, or a domain is taken over, the list admin can burn the NFT holding the record off the contract.
I believe a contract verifying that the first input is a minting baton is simply:
<authCategory> OP_0 OP_UTXOTOKENCATEGORY OP_SWAP OP_2 OP_CAT OP_EQUAL
Different lists could be created with different CashToken series, by changing the authenticating category. The linking software would just query the unspent transaction outputs off the contract, parse the NFT commitments and then pick a random, next or previous.
The linking software could support multiple federations of rings.
An identifier could be added to give all the webring P2S scripts the same prefix.
<PROTOCOL_IDENTIFIER>
<authCategory> OP_0 OP_UTXOTOKENCATEGORY OP_SWAP OP_2 OP_CAT OP_EQUAL
OP_NIP
For the NFT records held by the contract, there could be different kinds of commit records, denoted by shortcode prefix:
<"WM"><LIST_NAME><OWNER><DESCRIPTION>
<"WV"><VERSION>
<"W0"><SITE_NAME><OWNER><SITE_URL>
I’m just thinking out loud here about how to deploy the service we want as a protocol rather than a service.