oasisprotocol / oasisprotocol/oasis-core
Incentives for Performance
@bennetyee is already working on this.
Since Apr 9, 2019.
- Dominant language
- Go
- Stars
- 369
- Forks
- 151
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 6
Description
We need to ensure that the resource providers are incentivized to improve their system performance.
Details
We want to be able to pay resource providers more when their machines work better in the Oasis network. We need to enumerate reasonable designs for how to make such incentives work, e.g., changing the gas rewards paid out based on the speed at which a node completes its task as a carrot in contrast to slashing for Byzantine behavior as a stick.
For example, in decentralized storage design, compute nodes need only to wait for F+1 nodes to acknowledge a store operation before proceeding, and storage nodes need not actually persist to disk (fdatasync) before sending the ack. However, storage node operators without UPS or similar mechanisms are exposed to the possibility of being slashed should their system crash in the time between sending the ack and the (eventual) writing of the store operation to persistent memory, and they would rationally change their code to not send the ack until after writing to persistent store.
There are other situations where we want to incentivize performance. To get faster compute nodes, for example, we should pay compute node operators more if their node finishes its batch quickly. It cannot be a committee-wide reward, since the slowest node will drag others down, and nodes may want to game the system in other ways, e.g., influence committee scheduler.
Linked Issues
- Design for rewarding storage nodes for faster response time (may be incorporated into storage probe?)
- Design for rewarding compute nodes for faster txn throughput
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.