mirror of
https://github.com/status-im/EIPs.git
synced 2025-01-27 23:26:03 +00:00
Automatically merged updates to draft EIP(s) 908
Hi, I'm a bot! This change was automatically merged because: - It only modifies existing draft EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing
This commit is contained in:
parent
ec9d2cbe4f
commit
97e235d0ba
@ -11,7 +11,7 @@ created: 2018-03-01
|
||||
|
||||
## A reward for running a full node is deprecated, but the proposal for a reward for clients remains
|
||||
|
||||
While Casper validators are incentivized to validate transactions, there are still no incentives for relaying blocks and storing data (which includes state). Note also that [Rocket Pool](https://github.com/rocket-pool/rocketpool) is under development and is planned to be a pool for Casper. In light of these two points, perhaps a more appropriate approach to generally rewarding clients would be to incentivize bandwidth (relaying and downloading), storage and I/O (while computation is already incentivized with gas for miners and will be for proposers under sharding and Casper). Note also that notaries will be incentivized to download collations under sharding.
|
||||
While Casper validators are incentivized to validate transactions, there are still no incentives for relaying blocks and storing data (which includes state). Note also that [Rocket Pool](https://github.com/rocket-pool/rocketpool) is under development and is planned to be a pool for Casper. In light of these two points, perhaps a more appropriate approach to generally rewarding clients would be to incentivize bandwidth (relaying and downloading), storage and I/O (while computation is already incentivized with gas for miners and will be for proposers under sharding and Casper). Note also that notaries will be incentivized to download collations under sharding. Most mentions of a full node, including where not struck out, may be ignored. Given that it looks like Casper FFG will be implemented soon, to minimize undue complexity to the protocol, incentivizing validation in the mean time may be considered not worthwhile.
|
||||
|
||||
## Simple Summary
|
||||
When each transaction is validated, give a reward to clients for developing the client ~~and provide a reward to full nodes for validating the transaction.~~
|
||||
@ -43,13 +43,13 @@ Not providing incentives for clients is an issue now as there is less incentive
|
||||
Note that with a supply cap (as in [EIP 960](https://github.com/ethereum/EIPs/issues/960), the issuance can be prevented from increasing indefinitely. Alternatively, it could at least be reduced (still potentially but not necessarily to zero, or to the same rate at which Ether is burnt when slashing participants, such as validators under a Casper PoS scheme or notaries under a sharding scheme), e.g. by hard forks, or as per [EIP 1015](http://eips.ethereum.org/EIPS/eip-1015), an on-chain contract governed by a decision assembly that gets signalling from other contracts that represent some set of stakeholders.
|
||||
|
||||
## Specification
|
||||
Add a new field to each block called `PrevBlockVerifications`, which is an arbitrary, unlimited size byte array. When a client verifies that a previous block is [valid](https://ethereum.github.io/yellowpaper/paper.pdf#subsubsection.4.3.2), the client appends a user agent to PrevBlockVerifications. The user agent is a vector with the blockhash of the block that is validated, the index of a client address in an access list (details are below) and the address of the verifying full node.
|
||||
Add a new field to each block called `PrevBlockVerifications`, which is an arbitrary, unlimited size byte array. When a client verifies that a previous block is [valid](https://ethereum.github.io/yellowpaper/paper.pdf#subsubsection.4.3.2), the client appends a user agent to PrevBlockVerifications. The user agent is a vector with the blockhash of the block that is validated, and the index of a client address in an access list (details are below)~~and the address of the verifying full node~~.
|
||||
|
||||
To ensure that the verification of the transaction is valid, the vector could contain a field for a zk-SNARK, or you could have Truebit interactive verification of the verification. The client address could be inserted by the client and verified that it is the same as a read-only constant in the client's storage, and the full node address could also be read in a more user-friendly way (e.g. a GUI or command line prompt).
|
||||
~~To ensure that the verification of the transaction is valid, the vector could contain a field for a zk-SNARK, or you could have Truebit interactive verification of the verification. The client address could be inserted by the client and verified that it is the same as a read-only constant in the client's storage, and the full node address could also be read in a more user-friendly way (e.g. a GUI or command line prompt).
|
||||
|
||||
To prevent the miner getting a double-dose of transaction fees, `assert` that the full node validator address is not the same as the miner's address.
|
||||
~~To prevent the miner getting a double-dose of transaction fees, `assert` that the full node validator address is not the same as the miner's address. ~~
|
||||
|
||||
Send 0.000002852 ETH to the verifying full node and 0.15 ETH to the client (see the rationale below), when the block is processed. The amounts could include a proportion of transaction fees (while the miner would then receive less), which would reduce newly issued ETH. These amounts are specified in new `VerifierReward` and `ClientReward` fields in the block.
|
||||
Send ~~0.000002852 ETH to the verifying full node and ~~0.15 ETH to the client (see the rationale below), when the block is processed. The amounts could include a proportion of transaction fees (while the miner would then receive less), which would reduce newly issued ETH. These amounts are specified in new ~~`VerifierReward` and ~~`ClientReward` fields in the block.
|
||||
|
||||
### More details on the access list
|
||||
|
||||
@ -67,31 +67,27 @@ In order to only incentivize verifying recent blocks, assert that the block numb
|
||||
|
||||
### A rough qualitative analysis of fees
|
||||
|
||||
Let us assume that all but the last 400 blocks are valid (this provides room for [consensus bugs](https://blog.ethereum.org/2016/11/25/security-alert-11242016-consensus-bug-geth-v1-4-19-v1-5-2/)). If this assumption is correct, then there is no additional value for all but the last 400 blocks to be verified. However, for a full state node to do a full sync, it must verify all the previous blocks. On the other hand, a full node can do a [fast](https://ethereum.stackexchange.com/questions/1161/what-is-geths-fast-sync-and-why-is-it-faster) or [warp](https://ethereum.stackexchange.com/questions/9991/what-is-paritys-warp-sync-and-why-is-it-faster-than-geth-fast) sync and verify blocks from there, while if it is able to do a full sync then it will also be able to mine, thus will be incentivised for that (although, whether the cost of storing the full state is fully incentivised is questionable). Let us not consider incentivizing the cost of downloading, for simplicity. Thus, let us consider to only incentivize fast or warp syncing nodes verifying recent blocks, which is why the assert exists to check that a verified block is less than 400 blocks ago.
|
||||
~~Let us assume that all but the last 400 blocks are valid (this provides room for [consensus bugs](https://blog.ethereum.org/2016/11/25/security-alert-11242016-consensus-bug-geth-v1-4-19-v1-5-2/)). If this assumption is correct, then there is no additional value for all but the last 400 blocks to be verified. However, for a full state node to do a full sync, it must verify all the previous blocks. On the other hand, a full node can do a [fast](https://ethereum.stackexchange.com/questions/1161/what-is-geths-fast-sync-and-why-is-it-faster) or [warp](https://ethereum.stackexchange.com/questions/9991/what-is-paritys-warp-sync-and-why-is-it-faster-than-geth-fast) sync and verify blocks from there, while if it is able to do a full sync then it will also be able to mine, thus will be incentivised for that (although, whether the cost of storing the full state is fully incentivised is questionable). Let us not consider incentivizing the cost of downloading, for simplicity. Thus, let us consider to only incentivize fast or warp syncing nodes verifying recent blocks, which is why the assert exists to check that a verified block is less than 400 blocks ago.~~
|
||||
|
||||
Suppose that 0.001 ETH is set for verifier rewards and 0.001 ETH for client rewards. Given an [average block rate of 15 s](https://etherscan.io/chart/blocktime), that's 2103840 blocks per year. So a verifier would be compensated ~2104 ETH per year. Now note that to warp sync not just any computer will do the job, one at the higher end is probably needed. So assuming that one doesn't already have a high end computer, or perhaps preferring to use a separate one to not impact performance for other uses. (The author is unable to finish warp syncing with Parity on his Intel Core i3-2130 desktop with 7.5 GiB of memory and a 120 GB INTEL SSDSC2CT120A3 SSD, nor on his Intel Core i5 laptop with 3.7 GB of memory and a 320 GB ST9320423AS HDD.)
|
||||
~~Suppose that 0.001 ETH is set for verifier rewards and 0.001 ETH for client rewards. Given an [average block rate of 15 s](https://etherscan.io/chart/blocktime), that's 2103840 blocks per year. So a verifier would be compensated ~2104 ETH per year. Now note that to warp sync not just any computer will do the job, one at the higher end is probably needed. So assuming that one doesn't already have a high end computer, or perhaps preferring to use a separate one to not impact performance for other uses. (The author is unable to finish warp syncing with Parity on his Intel Core i3-2130 desktop with 7.5 GiB of memory and a 120 GB INTEL SSDSC2CT120A3 SSD, nor on his Intel Core i5 laptop with 3.7 GB of memory and a 320 GB ST9320423AS HDD.)~~
|
||||
|
||||
Costs:
|
||||
~~Costs:~~
|
||||
|
||||
- capital cost of a high-end computer: [$500](https://www.ebay.com.au/itm/Intel-NUC-Kit-NUC7I7BNH-Mini-Computer-Desktop-PC-Barebone-Core-i7-M-2-USB-Type-C/232361857936?hash=item3619d89390:g:~6oAAOSwn55a581Y)–[$4000](https://www.ebay.com.au/sch/PC-Desktops-All-In-Ones/179/i.html?_from=R40&_nkw=AMD+threadripper+16+core)
|
||||
~~- capital cost of a high-end computer: [$500](https://www.ebay.com.au/itm/Intel-NUC-Kit-NUC7I7BNH-Mini-Computer-Desktop-PC-Barebone-Core-i7-M-2-USB-Type-C/232361857936?hash=item3619d89390:g:~6oAAOSwn55a581Y)–[$4000](https://www.ebay.com.au/sch/PC-Desktops-All-In-Ones/179/i.html?_from=R40&_nkw=AMD+threadripper+16+core)
|
||||
- electricity: [$45.55 per year](https://news.bitcoin.com/cost-full-bitcoin-node/)<!--assume [25-45 c/kWh](https://www.canstarblue.com.au/energy/electricity/electricity-costs-kwh/).-->
|
||||
- internet (this could be not accounted for since a user may have unlimited internet anyway, so there is no marginal cost for using the internet more) [$0–$55 per month](https://news.bitcoin.com/cost-full-bitcoin-node/). $0–710/year.
|
||||
- human cost: assume $200/year.
|
||||
- total operating cost = $250-960 per year.
|
||||
- total operating cost = $250-960 per year.~~
|
||||
|
||||
Assume an average price of ETH from $500–2000 USD/ETH.
|
||||
~~Assume an average price of ETH from $500–2000 USD/ETH. ssume that the computer lasts for 5 years. eglect the effect of inflation, opportunity cost and electricity prices increasing for simplicity.
|
||||
|
||||
Assume that the computer lasts for 5 years.
|
||||
~~Simple Payback Time (best case) = `$500 / (2000 USD/ETH * 2104 ETH/year- 250 $/year)` = 0.001 years~~
|
||||
|
||||
Neglect the effect of inflation, opportunity cost and electricity prices increasing for simplicity.
|
||||
~~Clearly this is too short of a SPT. Let's assume that we aim for a SPT of 2 years, leaving 3 years to get surplus returns on investment. Now let us assume a scenario that more approaches worst case.~~
|
||||
|
||||
Simple Payback Time (best case) = `$500 / (2000 USD/ETH * 2104 ETH/year- 250 $/year)` = 0.001 years
|
||||
~~Simple Payback Time (more worse case) = `$4000/(6 ETH/year * $500/ETH - $960/year)` = ~ 2 years~~
|
||||
|
||||
Clearly this is too short of a SPT. Let's assume that we aim for a SPT of 2 years, leaving 3 years to get surplus returns on investment. Now let us assume a scenario that more approaches worst case.
|
||||
|
||||
Simple Payback Time (more worse case) = `$4000/(6 ETH/year * $500/ETH - $960/year)` = ~ 2 years
|
||||
|
||||
Thus, the reward for each block becomes `6 ETH year/(1 block / 15 s * 60 s / min * 60 min/ h * 24 h/d * 365.25 d/a = 6/(1/15*3600*24*365.25) = 0.000002852 ETH / block`.
|
||||
~~Thus, the reward for each block becomes `6 ETH year/(1 block / 15 s * 60 s / min * 60 min/ h * 24 h/d * 365.25 d/a = 6/(1/15*3600*24*365.25) = 0.000002852 ETH / block`.~~
|
||||
|
||||
As of May 4 2018, there are [16428 nodes](https://web.archive.org/web/20180504051128/https://ethernodes.org/network/1). Assume that an annual cost for an average client developer organisation is $1 million per annum. Projecting forward (and noting that the number of nodes should increase substantially if this EIP was implemented, thus aiding Ethereum's goal of decentralizing everything) assume that there are 10 clients. Thus let us assume that the number of nodes doubles to 30000 nodes within 5 years (this assumption is probably conservative, even if it is forward looking). Assume for simplicity that the costs of a client are entirely covered by this block reward.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user