-
Notifications
You must be signed in to change notification settings - Fork 5.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rent Collection for Blockchain Data #755
Closed
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
--- | ||
eip: 755 | ||
title: Rent Collection for Blockchain Data | ||
author: Daniel A. Nagy <daniel@ethereum.org>, Zsolt Felfoldi <zsolt@ethereum.org> | ||
discussions-to: | ||
status: Draft | ||
type: Standards Track | ||
category: Core | ||
created: 2017-11-01 | ||
--- | ||
|
||
## Simple Summary | ||
Introducing a way to collect rent from accounts that is proportional | ||
to the cost that they impose on the network by storing a large state | ||
over a long period of time. | ||
|
||
## Abstract | ||
A new global parameter called `rent` similar to `gasLimit` that can be | ||
modified by miner vote is introduced. It is initialized at 0 and is | ||
assumed to have been zero before its introduction. The miner validating | ||
a particular block can increase rent in a bounded way at the cost of | ||
forfeiting a proportional part of the mining reward. Similarly, if | ||
`rent` is more than zero, one can decrease it in a bounded way and | ||
receive the same additional mining reward that would need to be | ||
forfeited to raise it back. | ||
|
||
With each new block, an account is chosen in a deterministically random | ||
fashion with a probability proportional to the amount of storage that | ||
they use. The current value of `rent` is subtracted from their balance | ||
and if the result is negative, the account gets removed from the state. | ||
Otherwise, account balance is updated by the result. | ||
|
||
## Motivation | ||
Currently, contracts storing a large state over a long period of time | ||
impose considerable cost on the network and do so for free, having | ||
insufficient incentives to keep their state small. This results in | ||
an unreasonable waste of a scarce resource. | ||
|
||
## Specification | ||
### TODO | ||
Both `rent` is available as readable environment to contracts. | ||
|
||
## Rationale | ||
The proposed rent control mechanism creates a *tragedy of commons* type | ||
coordination problem between miners, privatizing the costs of raising | ||
`rent` while the benefit is common and, conversely, privatizing the | ||
benefit of reducing `rent` while the cost is socialized. It is up to | ||
miners to coordinate through smart contracts; it is not part of the protocol. | ||
In general, this bias towards reducing the rent is intended to keep | ||
rent in check and make it difficult for miners to raise rent beyond | ||
the actual cost of storing the state. | ||
|
||
## Backwards Compatibility | ||
The fact that both `rent` is initialized as zero and assumed to have been | ||
zero before introducing the protocol change, the entire history of the | ||
blockchain is conforming to the rules introduces in this protocol change. | ||
Since miners are beneficiaries of the change, no difficulty is expected | ||
with acceptance by miners. | ||
|
||
## Test Cases | ||
### TODO | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. TODO |
||
|
||
## Implementation | ||
### TODO | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. TODO |
||
|
||
## Copyright | ||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO