From 42a8d6424d048724ec4d5a41ec9418cf50ec95d2 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Sun, 26 May 2024 10:22:49 +0200 Subject: [PATCH 1/5] Add correlation penalties EIP --- EIPS/eip-9999.md | 84 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 EIPS/eip-9999.md diff --git a/EIPS/eip-9999.md b/EIPS/eip-9999.md new file mode 100644 index 0000000000000..a1091b629a272 --- /dev/null +++ b/EIPS/eip-9999.md @@ -0,0 +1,84 @@ +--- +eip: +title: Anti-correlation attestation penalties +description: Adjust penalties for missed attestations based on in-slot correlation of missed attestation +author: dapplion (@dapplion), Toni Wahrstätter (@nero_eth), Vitalik Buterin (@vbuterin) +discussions-to: +status: Draft +type: Standards Track +category: Core +created: 2024-05-25 +--- + + +## Abstract + +The decentralization of the validator set is one of the most important properties of Ethereum for credible neutrality and censorship resistance. By adjusting penalties to foster decentralization, diversification and fault-tolerance, this EIP proposes to adjust penalties in a way that more diversified entities get lower penalties while entities with high correlations in their setup face more servere ones. + + +## Motivation + +As of now, during times of usual network operation, there are no economic incentives to diversify node operations through using multiple different nodes, geographical locations, clients, ISP providers, etc., except for reducing the risk of penalties affecting all validators simultaneously, thereby limiting the impact to only a fraction of them. + +Attestation penalties are currently agnostic to other participation actions. This proposal scales attestation penalties as a function of other participants' actions. The goal is to decrease the profitability of participants that exhibit correlated behavior. + + + +## Specification + +| Parameter | Value | +| - | - | +| `PENALTY_ADJUSTMENT_FACTOR` | `4096` | +| `MAX_PENALTY_FACTOR` | `4` | + + +Add a variable `NET_EXCESS_PENALTIES` to the beacon state. + +Let `penalty_factor` be determined through +``` +min( + (non_attesting_balance * PENALTY_ADJUSTMENT_FACTOR) // (NET_EXCESS_PENALTIES * total_active_balance + 1), + MAX_PENALTY_FACTOR +) +``` + +Let `NET_EXCESS_PENALTIES` be `max(1, NET_EXCESS_PENALTIES + penalty_factor) - 1` + + + +## Rationale + +### PENALTY_ADJUSTMENT_FACTOR + +This variable impacts the sensitivity of the `NET_EXCESS_PENALTIES`. + +Given stable participation, the `penalty_factor` is one. +If participation decreases, the `penalty_factor` will temporarily increase above one until `net_excess_penalties` catches up. +If participation increases, the `penalty_factor` will temporarily be zero until `net_excess_penalties` catches up. + +The `PENALTY_ADJUSTMENT_FACTOR` regulates how fast `net_excess_penalties` catches up. +In other words, the `PENALTY_ADJUSTMENT_FACTOR` determines the frequency that the penalty_factor is not one. + +A high `PENALTY_ADJUSTMENT_FACTOR` causes the `net_excess_penalties` to adjust slower. +A low `PENALTY_ADJUSTMENT_FACTOR` causes the `net_excess_penalties` to react more sensitive to changes in participation. + + +### `MAX_PENALTY_FACTOR` + +The `MAX_PENALTY_FACTOR` puts a ceiling onto the maximum factor with which the penalty for missed attestations is scaled to prevent overly harsh punishments. + + +## Backwards Compatibility + +This is a backwards incompatible adjustment of attestations rewards and penalties that requires a scheduled network upgrade. + + +## Security Considerations + +We acknowledge that splitting validator views can be leveraged as an attack to increase the `penalty_factor` for validators of consecutive slots with little risk for the proposer. +TBD. + +## Copyright + +Copyright and related rights waived via [CC0](../LICENSE.md). + From c369ae340f7530dfe374bba43f7195a6b2252ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toni=20Wahrst=C3=A4tter?= <51536394+nerolation@users.noreply.github.com> Date: Mon, 27 May 2024 22:17:22 +0200 Subject: [PATCH 2/5] EIP-7716: Add eip number --- EIPS/eip-9999.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/EIPS/eip-9999.md b/EIPS/eip-9999.md index a1091b629a272..07e8716d947d5 100644 --- a/EIPS/eip-9999.md +++ b/EIPS/eip-9999.md @@ -1,9 +1,9 @@ --- -eip: +eip: 7716 title: Anti-correlation attestation penalties description: Adjust penalties for missed attestations based on in-slot correlation of missed attestation -author: dapplion (@dapplion), Toni Wahrstätter (@nero_eth), Vitalik Buterin (@vbuterin) -discussions-to: +author: dapplion (@dapplion), Toni Wahrstätter (@nerolation), Vitalik Buterin (@vbuterin) +discussions-to: https://ethereum-magicians.org/t/eip-7716-anti-correlation-attestation-penalties/20137 status: Draft type: Standards Track category: Core From a0b3630eb7c75ae31f003afdca36c0a704d6bc6f Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 29 May 2024 01:15:50 +0300 Subject: [PATCH 3/5] rename file --- EIPS/{eip-9999.md => 7716.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename EIPS/{eip-9999.md => 7716.md} (100%) diff --git a/EIPS/eip-9999.md b/EIPS/7716.md similarity index 100% rename from EIPS/eip-9999.md rename to EIPS/7716.md From d46701c141dab5712b2e1e4cf66686cdd93e5b8b Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 29 May 2024 15:28:09 +0300 Subject: [PATCH 4/5] file name --- EIPS/{7716.md => eip-7716.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename EIPS/{7716.md => eip-7716.md} (100%) diff --git a/EIPS/7716.md b/EIPS/eip-7716.md similarity index 100% rename from EIPS/7716.md rename to EIPS/eip-7716.md From 6aaa8b6ef2907e251dc3474a29c210b4a7110433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toni=20Wahrst=C3=A4tter?= <51536394+nerolation@users.noreply.github.com> Date: Fri, 31 May 2024 16:00:03 +0200 Subject: [PATCH 5/5] EIP-7716: Fix linter error --- EIPS/eip-7716.md | 1 + 1 file changed, 1 insertion(+) diff --git a/EIPS/eip-7716.md b/EIPS/eip-7716.md index 07e8716d947d5..f95c237b53b73 100644 --- a/EIPS/eip-7716.md +++ b/EIPS/eip-7716.md @@ -35,6 +35,7 @@ Attestation penalties are currently agnostic to other participation actions. Thi Add a variable `NET_EXCESS_PENALTIES` to the beacon state. Let `penalty_factor` be determined through + ``` min( (non_attesting_balance * PENALTY_ADJUSTMENT_FACTOR) // (NET_EXCESS_PENALTIES * total_active_balance + 1),