Skip to content

Website: //twitter.com to https://x.com to reflect the platform's rebranding. #9540

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion EIPS/eip-2515.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
---

Check warning on line 1 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

preamble is missing header(s): `description`

warning[preamble-req]: preamble is missing header(s): `description` --> EIPS/eip-2515.md | | = help: see https://ethereum.github.io/eipw/preamble-req/

Check warning on line 1 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

preamble is missing header(s): `description`

warning[preamble-req]: preamble is missing header(s): `description` --> EIPS/eip-2515.md | | = help: see https://ethereum.github.io/eipw/preamble-req/
eip: 2515
title: Implement Difficulty Freeze
author: James Hancock (@madeoftin)
Expand All @@ -10,14 +10,14 @@
---


## Simple Summary

Check failure on line 13 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]

EIPS/eip-2515.md:13 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]

Check warning on line 13 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body has extra section(s)

warning[markdown-order-section]: body has extra section(s) --> EIPS/eip-2515.md | 13 | ## Simple Summary | ::: EIPS/eip-2515.md | 66 | ## Implementation | ::: EIPS/eip-2515.md | 81 | ## Economic Considerations | = help: see https://ethereum.github.io/eipw/markdown-order-section/

Check warning on line 13 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body has extra section(s)

warning[markdown-order-section]: body has extra section(s) --> EIPS/eip-2515.md | 13 | ## Simple Summary | ::: EIPS/eip-2515.md | 66 | ## Implementation | ::: EIPS/eip-2515.md | 81 | ## Economic Considerations | = help: see https://ethereum.github.io/eipw/markdown-order-section/

Check failure on line 13 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]

EIPS/eip-2515.md:13 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Simple Summary"]
The difficulty Freeze is an alternative to the Difficulty Bomb that is implemented within the protocols difficulty adjustment algorithm. The Difficulty Freeze begins at a certain block height, determined in advance, freezes the difficulty and increases by 1% after that block forever. This does not stop the chain, but it incentivizes devs to upgrade at a regular cadence and requires any chain split to address the difficulty freeze.

## Abstract

Check failure on line 16 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Abstract"]

EIPS/eip-2515.md:16 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Abstract"]

Check failure on line 16 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Abstract"]

EIPS/eip-2515.md:16 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Abstract"]
The difficulty Freeze is a mechanism that is easy to predict and model, and the pressures of missing it are more readily felt by the core developers and client maintainers. The client maintainers are also positioned as the group that is most able to respond to an incoming Difficulty Freeze. This combined with the predictability is more likely to lead to the timely diffusual of the bomb.


## Motivation

Check failure on line 20 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]

EIPS/eip-2515.md:20 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]

Check failure on line 20 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]

EIPS/eip-2515.md:20 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Motivation"]
The current difficulty bombs' effect on the Block Time Targeting mechanism is rather complex to model, and it has both appeared when it was not expected (Muir Glacier) and negatively affected miners when they are not the target (in the case of delaying forks due to technical difficulties). Miners are affected by a reduction in block rewards due to the increase in block time. Users are affected as a function of the usability of the chain is affected by increased block times. Both of these groups are unable on their own to address the difficulty bomb. In the case of the Difficulty Freeze, the consequences of missing it are more directly felt by the client maintainers and it is more predictiable and so knowing when to make the change is readily apparent.

## Specification
Expand Down Expand Up @@ -53,20 +53,20 @@

This approach would have the added benefit that updating the Difficulty Freeze is easier as it happens automatically at the time of every upgrade. The trade-off is that the logic for checking is more complex and would require further analysis and test cases to ensure no consensus bugs arise.

## Rationale

Check failure on line 56 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]

EIPS/eip-2515.md:56 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]

Check failure on line 56 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]

EIPS/eip-2515.md:56 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Rationale"]
Block height is very easy to predict and evaluate within the system. This removes the effect of the Difficulty Bomb on block time, simplifying the block time targeting mechanism. The addition of an increase in the difficulty was added after feedback that the game theory of the mechanism did not reliably result in .

https://twitter.com/quentinc137/status/1227110578235330562
https://x.com/quentinc137/status/1227110578235330562

Check warning on line 59 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

warning[markdown-rel-links]: non-relative link or image --> EIPS/eip-2515.md | 59 | https://x.com/quentinc137/status/1227110578235330562 | = help: see https://ethereum.github.io/eipw/markdown-rel-links/

Check warning on line 59 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

warning[markdown-rel-links]: non-relative link or image --> EIPS/eip-2515.md | 59 | https://x.com/quentinc137/status/1227110578235330562 | = help: see https://ethereum.github.io/eipw/markdown-rel-links/

## Backwards Compatibility

Check failure on line 61 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]

EIPS/eip-2515.md:61 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]

Check failure on line 61 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]

EIPS/eip-2515.md:61 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Backwards Compatibility"]
No backward incompatibilities

## Test Cases

Check failure on line 64 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Test Cases"]

EIPS/eip-2515.md:64 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Test Cases"]

Check failure on line 64 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Test Cases"]

EIPS/eip-2515.md:64 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Test Cases"]
TBD
## Implementation

Check failure on line 66 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Implementation"]

EIPS/eip-2515.md:66 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Implementation"]

Check failure on line 66 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Above] [Context: "## Implementation"]

EIPS/eip-2515.md:66 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Above] [Context: "## Implementation"]

Check failure on line 66 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Implementation"]

EIPS/eip-2515.md:66 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Implementation"]

Check failure on line 66 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Above] [Context: "## Implementation"]

EIPS/eip-2515.md:66 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Above] [Context: "## Implementation"]
TBD

## Security Considerations

Check failure on line 69 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Security Considerations"]

EIPS/eip-2515.md:69 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Security Considerations"]

Check failure on line 69 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Security Considerations"]

EIPS/eip-2515.md:69 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Security Considerations"]
The effect of missing the Difficulty Freeze has a different impact than missing the Difficulty Bomb. At the point of a Difficulty freeze, the protocol is no longer able to adapt to changes in hash power on the network. This can lead to one of three scenarios.

- The Hash rate Increases:
Expand All @@ -84,5 +84,5 @@

It is also easy to predict when this change would happen, and stakeholders who are affected (Eth Holders) can keep client developers accountable by observing when the Difficulty Freeze is approaching and yell at them on twitter.

## Copyright

Check failure on line 87 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Copyright"]

EIPS/eip-2515.md:87 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Copyright"]

Check failure on line 87 in EIPS/eip-2515.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Copyright"]

EIPS/eip-2515.md:87 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Copyright"]
Copyright and related rights waived via [CC0](../LICENSE.md).
2 changes: 1 addition & 1 deletion EIPS/eip-908.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
created: 2018-03-01
---

## A reward for running a full node is deprecated, but the proposal for a reward for clients remains

Check warning on line 12 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body has extra section(s)

warning[markdown-order-section]: body has extra section(s) --> EIPS/eip-908.md | 12 | ## A reward for running a full node is deprecated, but the proposal for a reward for clients remains | ::: EIPS/eip-908.md | 16 | ## Simple Summary | ::: EIPS/eip-908.md | 116 | ## Implementation |

Check warning on line 12 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

body has extra section(s)

warning[markdown-order-section]: body has extra section(s) --> EIPS/eip-908.md | 12 | ## A reward for running a full node is deprecated, but the proposal for a reward for clients remains | ::: EIPS/eip-908.md | 16 | ## Simple Summary | ::: EIPS/eip-908.md | 116 | ## Implementation |

While Casper validators are incentivized to validate transactions, there are still no incentives for relaying blocks and storing data (which includes state). This paper is more a high-level analysis and discussion rather than attempting to provide a concrete solution. [Pocket Network](https://www.pokt.network/) is a separate blockchain being designed as of Sept 2018 that incentivises relaying transactions, that is intended to be compatible with other blockchains. Note also that [Rocket Pool](https://github.com/rocket-pool/rocketpool) is under development and is planned to be a pool for Casper, which will help to incentivise running a full node. Another alternative is [VIPnode](https://github.com/vipnode/vipnode.org) which charges fees to light clients for full nodes that serve them. In light of these solutions being developed, 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. Outdated (Casper FFG will be implemented with Ethereum 2.0 with sharding: [shasper](https://notes.ethereum.org/SCIg8AH5SA-O4C1G1LYZHQ#)): 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. For a previous version of the proposal containing a proposal for rewarding a full node, refer to [here](https://github.com/ethereum/EIPs/commit/97e235d0ba4a88b4ce29834aa2b94107b8d91e12#diff-9a43a8739b5a9e1dec427324cb264921).

Check warning on line 14 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

warning[markdown-rel-links]: non-relative link or image --> EIPS/eip-908.md | 14 | While Casper validators are incentivized to validate transactions, there are still no incentives for relaying blocks and storing dat... |

Check warning on line 14 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

non-relative link or image

warning[markdown-rel-links]: non-relative link or image --> EIPS/eip-908.md | 14 | While Casper validators are incentivized to validate transactions, there are still no incentives for relaying blocks and storing dat... |

## Simple Summary
When each transaction is validated, give a reward to clients for developing the client.
Expand All @@ -22,11 +22,11 @@
Reward mechanisms that are external to being built in to the protocol are beyond the scope of this EIP. Such extra-protocol reward methods include state channel payments for extra services such as light client servers providing faster information such as receipts; state channel payments for buying state reads from full nodes; archival services (which is only applicable to future proposed versions of Ethereum with stateless clients); and tokens for the client and running full nodes.

## Motivation
Currently there is a lack of incentives for anyone to run a full node, while joining a mining pool is not really economical if one has to purchase a mining rig (several GPUs) now, since there is unlikely to be a return on investment by the time that Ethereum transitions to hybrid Proof-of-Work/Proof-of-Stake with [Casper FFG](./eip-1011.md), then full PoS with [CBC Casper](https://github.com/ethereum/research/blob/master/papers/CasperTFG/CasperTFG.pdf).

Check warning on line 25 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

proposal `eip-1011.md` is not stable enough for a `status` of `Withdrawn`

warning[markdown-link-status]: proposal `eip-1011.md` is not stable enough for a `status` of `Withdrawn` --> EIPS/eip-908.md | 25 | Currently there is a lack of incentives for anyone to run a full node, while joining a mining pool is not really economical if one h... | = help: because of this link, this proposal's `status` must be one of: `Draft`, `Stagnant` = help: see https://ethereum.github.io/eipw/markdown-link-status/

Check warning on line 25 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

proposal `eip-1011.md` is not stable enough for a `status` of `Withdrawn`

warning[markdown-link-status]: proposal `eip-1011.md` is not stable enough for a `status` of `Withdrawn` --> EIPS/eip-908.md | 25 | Currently there is a lack of incentives for anyone to run a full node, while joining a mining pool is not really economical if one h... | = help: because of this link, this proposal's `status` must be one of: `Draft`, `Stagnant` = help: see https://ethereum.github.io/eipw/markdown-link-status/

Additionally, providing a reward for clients gives a revenue stream that is independent of state channels or other layer 2 mechanisms, which are less secure, although this insecurity can be offset by mechanisms such as insurance, bonded payments and time locks. Rationalising that investors may invest in a client because it is an enabler for the Ethereum ecosystem (and thus opening up investment opportunities) may not scale very well, and it seems that it is more sustainable to monetize the client as part of the service(s) that it provides.

While it may be argued that the funds raised by the Ethereum pre-mine (the pre-ICO and the ICO) can be used to fund client development, that argument is questionable, since Parity is VC-funded, and other clients such as Prysmatic Labs [1](https://medium.com/@XYOracleNetwork?source=search_post), [2](https://twitter.com/prylabs/status/996391036753666050), [3](https://medium.com/prysmatic-labs/biweekly-development-update-2-d29d0c91e7d0) and [exthereum](https://medium.com/compound-finance/introducing-exthereum-the-newest-ethereum-client-7a5e30d4d6aa) have received funding from other parties, whereas perhaps they would not have needed to do so if there was sufficient funding from the Ethereum pre-mine funds. [Drops of Diamond](https://github.com/Drops-of-Diamond/diamond_drops) is yet to receive any funding.
While it may be argued that the funds raised by the Ethereum pre-mine (the pre-ICO and the ICO) can be used to fund client development, that argument is questionable, since Parity is VC-funded, and other clients such as Prysmatic Labs [1](https://medium.com/@XYOracleNetwork?source=search_post), [2](https://x.com/prylabs/status/996391036753666050), [3](https://medium.com/prysmatic-labs/biweekly-development-update-2-d29d0c91e7d0) and [exthereum](https://medium.com/compound-finance/introducing-exthereum-the-newest-ethereum-client-7a5e30d4d6aa) have received funding from other parties, whereas perhaps they would not have needed to do so if there was sufficient funding from the Ethereum pre-mine funds. [Drops of Diamond](https://github.com/Drops-of-Diamond/diamond_drops) is yet to receive any funding.

Incentivizing client development would more directly incentivize resource provision in the protocol, preventing a tragedy of the commons, where there is an extreme lack of supply and excess demand, leading to the protocol being unusable.

Expand All @@ -40,7 +40,7 @@

Not providing incentives for clients is an issue now as there is less incentive to build a client that aligns with the needs of users, funds need to be raised externally to the protocol to fund client development, which is not as decentralized. If only a smaller subset is able to fund client development, such as VCs, angel investors and institutional investors, that may not align well with the interests of all current and potential stakeholders of Ethereum (which includes future stakeholders). Ostensibly, one of the goals of Ethereum is to decentralize everything, including wealth, or in other words, to improve wealth equality. Not providing incentives for full nodes validating transactions may not seem like as much of an issue now, but not doing so could hinder the growth of the protocol. Of course, incentives aren't enough, it also needs to be technically decentralized so that it is ideally possible for a low-end mainstream computer or perhaps even a mobile or embedded IoT device to be a verifying full node, or at least to be able to help with securing the network if it is deemed impractical for them to be a full node.

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](./eip-1015.md), an on-chain contract governed by a decision assembly that gets signalling from other contracts that represent some set of stakeholders.

Check warning on line 43 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

unable to read file `eip-960.md`: Io

warning[markdown-refs]: unable to read file `eip-960.md`: Io --> EIPS/eip-908.md | 43 | Note that with a supply cap (as in [EIP-960](https://github.com/ethereum/EIPs/issues/960), the issuance can be prevented from increa... | = help: see https://ethereum.github.io/eipw/markdown-refs/

Check warning on line 43 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn`

warning[markdown-link-status]: proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn` --> EIPS/eip-908.md | 43 | Note that with a supply cap (as in [EIP-960](https://github.com/ethereum/EIPs/issues/960), the issuance can be prevented from increa... | = help: because of this link, this proposal's `status` must be one of: `Draft`, `Stagnant`

Check warning on line 43 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

unable to read file `eip-960.md`: Io

warning[markdown-refs]: unable to read file `eip-960.md`: Io --> EIPS/eip-908.md | 43 | Note that with a supply cap (as in [EIP-960](https://github.com/ethereum/EIPs/issues/960), the issuance can be prevented from increa... | = help: see https://ethereum.github.io/eipw/markdown-refs/

Check warning on line 43 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn`

warning[markdown-link-status]: proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn` --> EIPS/eip-908.md | 43 | Note that with a supply cap (as in [EIP-960](https://github.com/ethereum/EIPs/issues/960), the issuance can be prevented from increa... | = help: because of this link, this proposal's `status` must be one of: `Draft`, `Stagnant`

## 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 via an opcode in a transaction, PREV_BLOCK_VERIF. The user agent is a vector with the immutable fields: the blockhash of the block that is validated, and the index of a client address in an access list (details are below). A miner validates a transaction before including it in a block, however they are not able to change these fields of the vector because they're immutable.
Expand All @@ -55,7 +55,7 @@

### More details on the access list

The access list prevents anyone inserting any address to the first element of the vector, where there may be a way to prevent censorship and centralization of authority of who decides to register new addresses in the list, e.g. on-chain governance with signalling (possibly similar to [EIP-1015](./eip-1015.md), which also specifies an alternative way of sending funds) or a layer 2 proof of authority network where new addresses can be added via a smart contract. Note that there may be serious drawbacks to implementing either of these listed examples. There is a refutation of [on-chain governance](https://medium.com/@Vlad_Zamfir/against-on-chain-governance-a4ceacd040ca) as well as of [plutocracy](https://vitalik.ca/general/2018/03/28/plutocracy.html). [Proof of Authority](https://en.wikipedia.org/wiki/Proof-of-authority) isn't suitable for a public network since it doesn't distribute trust well. However, using signalling in layer 2 contracts is more acceptable, but Vlad Zamfir argues that using that to influence outcomes in the protocol can disenfranchise miners from being necessary participants in the governance process. Thus, in light of these counterpoints, having an access list may not be suitable until a decentralized, trustless way of maintaining it is implemented and ideally accepted by the majority of a random sample that represents the population of Ethereum users.

Check warning on line 58 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn`

warning[markdown-link-status]: proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn` --> EIPS/eip-908.md | 58 | The access list prevents anyone inserting any address to the first element of the vector, where there may be a way to prevent censor... | = help: because of this link, this proposal's `status` must be one of: `Draft`, `Stagnant`

Check warning on line 58 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn`

warning[markdown-link-status]: proposal `eip-1015.md` is not stable enough for a `status` of `Withdrawn` --> EIPS/eip-908.md | 58 | The access list prevents anyone inserting any address to the first element of the vector, where there may be a way to prevent censor... | = help: because of this link, this proposal's `status` must be one of: `Draft`, `Stagnant`

However, another alternative to managing the access list would be to have decentralized verification that the address produced from querying an index in the access list does correspond to that of a "legitimate" client. Part of this verification would involve checking that there is a client that claims that this address is owned by them, that they are happy to receive funds in this manner and agree or arranged to putting the address in the access list, and that the client passes all tests in the [Ethereum test suite](https://github.com/ethereum/tests). However, this last proviso would then preclude new clients being funded from the start of development, although such would-be clients would not be able to receive funds in-protocol until they implement the client anyway (as an aside, they could raise funds in various ways—a DAII, pronounced die-yee, is recommended, while a platform for DAIIs is under development by [Dogezer](https://dogezer.com/)). All of this could be done off-chain, and if anyone found that some address in the access list was not legitimate, then they could challenge that address with a proof of illegitimacy, and the participant that submitted the address to the access list could be slashed (while they must hold a deposit in order to register and keep an address in the access list).

Expand All @@ -79,7 +79,7 @@

Suppose that we use a block reward of 0.15 ETH for clients.

<!--There are more than 5552465 blocks and counting. With a reward of 0.001 ETH for each block, a full state node that verified every block would receive 5552.465 ETH. However, the difficulty of verifying blocks increases over time, so-->

Check warning on line 82 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

HTML comments are only allowed while `status` is one of: `Draft`, `Withdrawn`

warning[markdown-html-comments]: HTML comments are only allowed while `status` is one of: `Draft`, `Withdrawn` --> EIPS/eip-908.md | 82 | <!--There are more than 5552465 blocks and counting. With a reward of 0.001 ETH for each block, a full state node that verified ever... | = help: see https://ethereum.github.io/eipw/markdown-html-comments/

Check warning on line 82 in EIPS/eip-908.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

HTML comments are only allowed while `status` is one of: `Draft`, `Withdrawn`

warning[markdown-html-comments]: HTML comments are only allowed while `status` is one of: `Draft`, `Withdrawn` --> EIPS/eip-908.md | 82 | <!--There are more than 5552465 blocks and counting. With a reward of 0.001 ETH for each block, a full state node that verified ever... | = help: see https://ethereum.github.io/eipw/markdown-html-comments/

### More rationale (outdated by above)

Expand Down
2 changes: 1 addition & 1 deletion EIPS/eip-969.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ such in ethash. That said, a more invasive hash algorithm change could be consid

One suggestion has been [MurmurHash3](https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp).

[Other suggestions have been made](https://twitter.com/el33th4xor/status/981292363627810818):
[Other suggestions have been made](https://x.com/el33th4xor/status/981292363627810818):
[Argon2](https://github.com/P-H-C/phc-winner-argon2),
[Equihash](https://blog.z.cash/why-equihash/) of Zcash fame, and
[Balloon Hashing](https://crypto.stanford.edu/balloon/).
Expand Down
2 changes: 1 addition & 1 deletion _includes/social.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
{%- if site.linkedin_username -%}<li><a href="https://www.linkedin.com/in/{{ site.linkedin_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#linkedin' | relative_url }}"></use></svg> <span class="username">{{ site.linkedin_username| escape }}</span></a></li>{%- endif -%}
{%- if site.pinterest_username -%}<li><a href="https://www.pinterest.com/{{ site.pinterest_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#pinterest' | relative_url }}"></use></svg> <span class="username">{{ site.pinterest_username| escape }}</span></a></li>{%- endif -%}
{%- for mst in site.mastodon -%}{%- if mst.username and mst.instance -%}<li><a href="https://{{ mst.instance| cgi_escape | escape}}/@{{mst.username}}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#mastodon' | relative_url }}"></use></svg> <span class="username">{{ mst.username|escape }}</span></a></li>{%- endif -%}{%- endfor -%}
{%- if site.twitter_username -%}<li><a href="https://twitter.com/{{ site.twitter_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#twitter' | relative_url }}"></use></svg> <span class="username">{{ site.twitter_username| escape }}</span></a></li>{%- endif -%}
{%- if site.twitter_username -%}<li><a href="https://x.com/{{ site.twitter_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#twitter' | relative_url }}"></use></svg> <span class="username">{{ site.twitter_username| escape }}</span></a></li>{%- endif -%}
{%- if site.youtube_username -%}<li><a href="https://youtube.com/{{ site.youtube_username| cgi_escape | escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#youtube' | relative_url }}"></use></svg> <span class="username">{{ site.youtube_username| escape }}</span></a></li>{%- endif -%}
{%- if site.googleplus_username -%}<li><a href="https://plus.google.com/{{ site.googleplus_username| escape }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#googleplus' | relative_url }}"></use></svg> <span class="username">{{ site.googleplus_username| escape }}</span></a></li>{%- endif -%}
{%- if site.rss -%}<li><a href="{{ 'feed.xml' | relative_url }}"><svg class="svg-icon"><use xlink:href="{{ '/assets/minima-social-icons.svg#rss' | relative_url }}"></use></svg> <span>{{ site.rss | escape }}</span></a></li>{%- endif -%}
Expand Down
Loading