Event JSON
{
"id": "f70cfa4ddb76db592c2674b6bea4fc0a46622c8918a8b82f70ecc867342ab055",
"pubkey": "d91191e30e00444b942c0e82cad470b32af171764c2275bee0bd99377efd4075",
"created_at": 1690366499,
"kind": 1,
"tags": [
[
"e",
"1bf16cac62588cfd7e3c336b8548fa49a09627f03dbf06c7a4fee27bc01972c8",
"",
"root"
],
[
"e",
"f5c181d06d815881ac441037afcfbf6c0f0aba1e67dd123435bc0c5811a04340",
"",
"reply"
],
[
"title",
"Problem: paid relays are difficult to run"
],
[
"description",
"Nostr is increasingly relying on paid relays, but they are expensive to run and difficult to scale.\n\nThe skill set required to manage paid relays is considerably diverse, covering many differing fields of expertise.\n\nThe work of relay operators is often duplicated by other operators, making the overall economics less efficient than it could be.\n\nThe risk of doing all of this needs to be taken by a single person, and the only real way to spread this risk out at the moment is to create some kind of centrally planned business structure.\n\n### Possible Solution:\nDeploy a Rocket to manage a set of paid relays.\n\nSeparate out the different skills involved in running a paid relay such that there are more people available because the required skill set is narrower.\n\nDevelopers can focus on incrementally solving problems to improve the relay software.\n\nDevops guys can focus on devops stuff.\n\nFrontend guys can focus on making it easy for users to subscribe.\n\nEveryone who's solving problems in the critical path becomes a merit holder, as is standard behaviour under the nostrocket protocol.\n\nPayment for subscribing to the paid relay set goes directly to merit holders in proportion to their merits, as is standard under the non-custodial nostrocket protocol.\n\n### How this might work\n\nThis would start with a single relay, deployed by this Rocket's first contributor.\n\nProblem: there is no relay deployed under this Rocket.\nSolution: first contributor deploys an instance of the Rocket's relay (probably just nostr-rs-relay with a grpc management layer).\n\nThe relay subscribes to the Nostrocket state to get a list of allowed pubkeys (people who have paid this \"relay\" Rocket).\n\nThe first contributor submits a merit requests for the cost of the VPS and his time (and approves it himself).\n\nWhen there's a problem that falls outside of his domain of expertise or outside his time constraints (e.g. perhaps something to do with the relay implementation), he logs a problem in the relay Rocket's branch of the problem tracker.\n\nIf he was fair and reasonable with his first merit request, then perhaps someone with the required skill set will send a patch to resolve the problem, and then submit a merit request for this. If the first contributor approves the solution, this second contributor now has merits to vote on subsequent merit requests. By definition, both parties completely agree that the number of merits each now holds are in direct proportion to the value of the work they did to contribute to this paid relay rocket.\n\nWhen users pay to join the relay, the payments round-robin between these two merit holders, weighted by the percentage of merits they hold. This makes payments to the set of merit holders non-custodial and eventually-consisitent with the \"cap table\" of this rocket. This is standard behaviour for all payments for products/services created through Nostrocket.\n\nNow when there's a problem that is in neither of these two contributors field of expertise, perhaps someone else will contribute. And the process continues.\n\nIf there's a problem with spam, this probably something that can be improved upon with a patch from a developer.\n\nIf users are having trouble subscribing because the web interface sux, a frontend guy can solve that with a patch.\n\n### Architecture of the relay set\nThe architecture of the relay set would probably be something like this:\nRelays forward all incoming events that they haven't seen before to all the other relays in the set, so that new events can then be seen on any relay in the set.\nPaid users only need to connect to a single relay in the set.\nThey should connect to whichever one is fastest for them. Would be pretty easy to make a simple PWA to find the fastest one.\n\nIf there are not enough relay deployments available to handle the number of paid users, that's simply a problem to solve. It could be solved by the first contributor if they have the time and inclination administer a second instance, or it could be solved by anyone else, by deploying a new instance of the same relay software.\n\nSince each relay instance can be run by different people, there's redundancy not only in terms of technical aspects but also social aspects.\n\nIf a relay operator doesn't comply with the protocol (perhaps they take payments directly instead of through the official channels), then the merit holders would probably vote to remove them from the set, and deny all further merit requests by them. This would also be the case if they are unable to continue solving the original problem (making a relay available). Shouldn't be too hard to write a script to solve the problem of validating uptime and speed standards.\n\nAnyway, just an idea."
],
[
"op",
"nostrocket.problem.create"
],
[
"r",
"4cd78ee967b974b4d5cf4783071485ff89d28a3642caf471523cd71d38e59cec"
]
],
"content": "Problem: paid relays are difficult to run\n\nNostr is increasingly relying on paid relays, but they are expensive to run and difficult to scale.\n\nThe skill set required to manage paid relays is considerably diverse, covering many differing fields of expertise.\n\nThe work of relay operators is often duplicated by other operators, making the overall economics less efficient than it could be.\n\nThe risk of doing all of this needs to be taken by a single person, and the only real way to spread this risk out at the moment is to create some kind of centrally planned business structure.\n\n### Possible Solution:\nDeploy a Rocket to manage a set of paid relays.\n\nSeparate out the different skills involved in running a paid relay such that there are more people available because the required skill set is narrower.\n\nDevelopers can focus on incrementally solving problems to improve the relay software.\n\nDevops guys can focus on devops stuff.\n\nFrontend guys can focus on making it easy for users to subscribe.\n\nEveryone who's solving problems in the critical path becomes a merit holder, as is standard behaviour under the nostrocket protocol.\n\nPayment for subscribing to the paid relay set goes directly to merit holders in proportion to their merits, as is standard under the non-custodial nostrocket protocol.\n\n### How this might work\n\nThis would start with a single relay, deployed by this Rocket's first contributor.\n\nProblem: there is no relay deployed under this Rocket.\nSolution: first contributor deploys an instance of the Rocket's relay (probably just nostr-rs-relay with a grpc management layer).\n\nThe relay subscribes to the Nostrocket state to get a list of allowed pubkeys (people who have paid this \"relay\" Rocket).\n\nThe first contributor submits a merit requests for the cost of the VPS and his time (and approves it himself).\n\nWhen there's a problem that falls outside of his domain of expertise or outside his time constraints (e.g. perhaps something to do with the relay implementation), he logs a problem in the relay Rocket's branch of the problem tracker.\n\nIf he was fair and reasonable with his first merit request, then perhaps someone with the required skill set will send a patch to resolve the problem, and then submit a merit request for this. If the first contributor approves the solution, this second contributor now has merits to vote on subsequent merit requests. By definition, both parties completely agree that the number of merits each now holds are in direct proportion to the value of the work they did to contribute to this paid relay rocket.\n\nWhen users pay to join the relay, the payments round-robin between these two merit holders, weighted by the percentage of merits they hold. This makes payments to the set of merit holders non-custodial and eventually-consisitent with the \"cap table\" of this rocket. This is standard behaviour for all payments for products/services created through Nostrocket.\n\nNow when there's a problem that is in neither of these two contributors field of expertise, perhaps someone else will contribute. And the process continues.\n\nIf there's a problem with spam, this probably something that can be improved upon with a patch from a developer.\n\nIf users are having trouble subscribing because the web interface sux, a frontend guy can solve that with a patch.\n\n### Architecture of the relay set\nThe architecture of the relay set would probably be something like this:\nRelays forward all incoming events that they haven't seen before to all the other relays in the set, so that new events can then be seen on any relay in the set.\nPaid users only need to connect to a single relay in the set.\nThey should connect to whichever one is fastest for them. Would be pretty easy to make a simple PWA to find the fastest one.\n\nIf there are not enough relay deployments available to handle the number of paid users, that's simply a problem to solve. It could be solved by the first contributor if they have the time and inclination administer a second instance, or it could be solved by anyone else, by deploying a new instance of the same relay software.\n\nSince each relay instance can be run by different people, there's redundancy not only in terms of technical aspects but also social aspects.\n\nIf a relay operator doesn't comply with the protocol (perhaps they take payments directly instead of through the official channels), then the merit holders would probably vote to remove them from the set, and deny all further merit requests by them. This would also be the case if they are unable to continue solving the original problem (making a relay available). Shouldn't be too hard to write a script to solve the problem of validating uptime and speed standards.\n\nAnyway, just an idea.",
"sig": "5db57e33a30035f242b72a6432794d28ae3074d86d72160ab503092660fd5c7a508afcee3739ad9be2af5acc9b79be46f091021b50ad11d5613e519f579a4ab3"
}