Closed drewstone closed 3 weeks ago
I've conducted thorough research on this topic, and I'm convinced that keeping them separate is a good approach. Here's what I've discovered:
keep in mind that neither of these solutions, even the original idea of making them separate) addresses access control issues. In fact, I firmly believe we don't need to resolve this problem, as it's not a concern for us. Slashing should be combined with reporting; Blueprint Manager will handle both. To slash an operator in a service instance, the caller to the slashing precompile should be the BlueprintManager contract, with the service instance ID and any slashing conditions as arguments.
2nd option seems good here. I do think the bulk of the work here (given blueprint developers can actually choose 1 or 2 and we are just leading them down a path) is actually to figure out how slashing should work.
I would aim to get the slashing precompile and logic spec'd out as well, since a Blueprint developer can choose to use routes 1 or 2 (since it doesn't require any runtime change).
Note, we should aim to not have slashing integrated until even after services are live. We simply need that work to begin. Proxy's seem like a good way to allow service instances to upgrade to contain slashing capabilities / reports.
Overview
We should have separate contracts for dealing with blueprints and service instances. This will likely help when dealing with slashing reports on a specific service instance. It will also allow us to store data related to service instances separate from the blueprint manager contract to keep that more lightweight.
Checklist