From 4afcd71df793dc39104e8707f3479677d85a86ef Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Wed, 27 Oct 2021 16:09:57 +0200 Subject: [PATCH 01/16] create EIP from template --- EIPS/eip-time-based-basefee.md | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 EIPS/eip-time-based-basefee.md diff --git a/EIPS/eip-time-based-basefee.md b/EIPS/eip-time-based-basefee.md new file mode 100644 index 00000000000000..2051775f0d27be --- /dev/null +++ b/EIPS/eip-time-based-basefee.md @@ -0,0 +1,46 @@ +--- +eip: +title: +description: +author: , FirstName (@GitHubUsername) and GitHubUsername (@GitHubUsername)> +discussions-to: +status: Draft +type: +category (*only required for Standards Track): +created: +requires (*optional): +replaces (*optional): +--- + +This is the suggested template for new EIPs. + +Note that an EIP number will be assigned by an editor. When opening a pull request to submit your EIP, please use an abbreviated title in the filename, `eip-draft_title_abbrev.md`. + +The title should be 44 characters or less. It should not repeat the EIP number in title, irrespective of the category. + +## Abstract +Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does. + +## Motivation +The motivation section should describe the "why" of this EIP. What problem does it solve? Why should someone want to implement this standard? What benefit does it provide to the Ethereum ecosystem? What use cases does this EIP address? + +## Specification +The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow competing, interoperable implementations for any of the current Ethereum platforms (go-ethereum, parity, cpp-ethereum, ethereumj, ethereumjs, and [others](https://github.com/ethereum/wiki/wiki/Clients)). + +## Rationale +The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other languages. + +## Backwards Compatibility +All EIPs that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity. The EIP must explain how the author proposes to deal with these incompatibilities. EIP submissions without a sufficient backwards compatibility treatise may be rejected outright. + +## Test Cases +Test cases for an implementation are mandatory for EIPs that are affecting consensus changes. If the test suite is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/eip-####/`. + +## Reference Implementation +An optional section that contains a reference/example implementation that people can use to assist in understanding or implementing this specification. If the implementation is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/eip-####/`. + +## Security Considerations +All EIPs must contain a section that discusses the security implications/considerations relevant to the proposed change. Include information that might be important for security discussions, surfaces risks and can be used throughout the life cycle of the proposal. E.g. include security-relevant design decisions, concerns, important discussions, implementation-specific guidance and pitfalls, an outline of threats and risks and how they are being addressed. EIP submissions missing the "Security Considerations" section will be rejected. An EIP cannot proceed to status "Final" without a Security Considerations discussion deemed sufficient by the reviewers. + +## Copyright +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). From 147556e8b4eb807daff7cf36e895cdd79ed5239d Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Wed, 27 Oct 2021 16:34:10 +0200 Subject: [PATCH 02/16] rename EIP and fill header --- ...d-basefee.md => eip-time_aware_basefee.md} | 24 +++++++------------ 1 file changed, 8 insertions(+), 16 deletions(-) rename EIPS/{eip-time-based-basefee.md => eip-time_aware_basefee.md} (60%) diff --git a/EIPS/eip-time-based-basefee.md b/EIPS/eip-time_aware_basefee.md similarity index 60% rename from EIPS/eip-time-based-basefee.md rename to EIPS/eip-time_aware_basefee.md index 2051775f0d27be..b8a9444b85842a 100644 --- a/EIPS/eip-time-based-basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -1,23 +1,15 @@ --- eip: -title: -description: -author: , FirstName (@GitHubUsername) and GitHubUsername (@GitHubUsername)> +title: Time-Aware Base Fee Calculation +description: Includes block time in the base fee calculation to target a stable throughput per time instead of per block. +author: Ansgar Dietrichs (@adietrichs) discussions-to: status: Draft -type: -category (*only required for Standards Track): -created: -requires (*optional): -replaces (*optional): +type: Standards Track +category: Core +created: 2021-10-27 --- -This is the suggested template for new EIPs. - -Note that an EIP number will be assigned by an editor. When opening a pull request to submit your EIP, please use an abbreviated title in the filename, `eip-draft_title_abbrev.md`. - -The title should be 44 characters or less. It should not repeat the EIP number in title, irrespective of the category. - ## Abstract Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does. @@ -34,10 +26,10 @@ The rationale fleshes out the specification by describing what motivated the des All EIPs that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity. The EIP must explain how the author proposes to deal with these incompatibilities. EIP submissions without a sufficient backwards compatibility treatise may be rejected outright. ## Test Cases -Test cases for an implementation are mandatory for EIPs that are affecting consensus changes. If the test suite is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/eip-####/`. +tbd ## Reference Implementation -An optional section that contains a reference/example implementation that people can use to assist in understanding or implementing this specification. If the implementation is too large to reasonably be included inline, then consider adding it as one or more files in `../assets/eip-####/`. +tbd ## Security Considerations All EIPs must contain a section that discusses the security implications/considerations relevant to the proposed change. Include information that might be important for security discussions, surfaces risks and can be used throughout the life cycle of the proposal. E.g. include security-relevant design decisions, concerns, important discussions, implementation-specific guidance and pitfalls, an outline of threats and risks and how they are being addressed. EIP submissions missing the "Security Considerations" section will be rejected. An EIP cannot proceed to status "Final" without a Security Considerations discussion deemed sufficient by the reviewers. From 454e21a8b7ba945bb49c65e2438b8d663c6be339 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Thu, 28 Oct 2021 14:49:06 +0200 Subject: [PATCH 03/16] add skeleton content --- EIPS/eip-time_aware_basefee.md | 124 +++++++++++++++++++++++++++++++-- 1 file changed, 119 insertions(+), 5 deletions(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index b8a9444b85842a..21e1a4084d8953 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -14,16 +14,129 @@ created: 2021-10-27 Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does. ## Motivation -The motivation section should describe the "why" of this EIP. What problem does it solve? Why should someone want to implement this standard? What benefit does it provide to the Ethereum ecosystem? What use cases does this EIP address? +- current EIP-1559 base fee adjustment: based on block gas usage +- in effect, control loop that targets stable throughput per block +- not ideal under PoW under two aspects: + - block time variability: + - block gas usage tries to measure demand at current base fee level, but gas usage is proportional to block time, introducing noise to the used signal + - block time variability => "incorrect" demand signals => "incorrect" base fee adjustments => increased base fee volatility + - reduced throughput during consensus issues: + - if chain forks, block times go up for a while, before difficulty is adjusted + - gas limit elasticity would give us the capability to compensate for this throughput reduction to some extent +- also not ideal under PoS: + - missed slots: + - while general block times become regular, occasionally slots are missed, doubling the block time for the next block (or more, if that slot is also missed) + - missed slots still send incorrect signal (demand looks 2x as high as it is), leading to base fee spikes after missed slots + - incentive to attack network via block proposer DOS, as each missed slot directly reduces network throughput + - consensus issues: + - worse than under PoW, as longer time for self-healing (several weeks for inactivity leaks as opposed to several hours for difficulty adjustments) + - gas limit elasticity would again give us the capability to compensate for this throughput reduction to some extent ## Specification -The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow competing, interoperable implementations for any of the current Ethereum platforms (go-ethereum, parity, cpp-ethereum, ethereumj, ethereumjs, and [others](https://github.com/ethereum/wiki/wiki/Clients)). +The relevant part of the pseudocode specification of EIP-1559 is: + +```python= +BASE_FEE_MAX_CHANGE_DENOMINATOR = 8 + + + + +parent_gas_target = self.parent(block).gas_limit // ELASTICITY_MULTIPLIER +parent_gas_limit = self.parent(block).gas_limit +parent_base_fee_per_gas = self.parent(block).base_fee_per_gas +parent_gas_used = self.parent(block).gas_used + +if parent_gas_used == parent_gas_target: + expected_base_fee_per_gas = parent_base_fee_per_gas +elif parent_gas_used > parent_gas_target: + gas_used_delta = parent_gas_used - parent_gas_target + base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta // parent_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1) + expected_base_fee_per_gas = parent_base_fee_per_gas + base_fee_per_gas_delta +else: + gas_used_delta = parent_gas_target - parent_gas_used + base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta // parent_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR + expected_base_fee_per_gas = parent_base_fee_per_gas - base_fee_per_gas_delta +``` + +This update would only require changes to lines (2, 3, 5), 6, 15, 19: + +```python= +BASE_FEE_MAX_CHANGE_DENOMINATOR = 8 +BLOCK_TIME_TARGET = 12 +BLOCK_TIME_CONSIDERATION_CAP = 23 + +parent_considered_block_time = min(self.parent(block).timestamp - self.parent(self.parent(block)).timestamp, BLOCK_TIME_CONSIDERATION_CAP) +parent_gas_target = self.parent(block).gas_limit * parent_considered_block_time // ELASTICITY_MULTIPLIER // BLOCK_TIME_TARGET +parent_gas_limit = self.parent(block).gas_limit +parent_base_fee_per_gas = self.parent(block).base_fee_per_gas +parent_gas_used = self.parent(block).gas_used + +if parent_gas_used == parent_gas_target: + expected_base_fee_per_gas = parent_base_fee_per_gas +elif parent_gas_used > parent_gas_target: + gas_used_delta = parent_gas_used - parent_gas_target + base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta * ELASTICITY_MULTIPLIER // parent_gas_limit // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1) + expected_base_fee_per_gas = parent_base_fee_per_gas + base_fee_per_gas_delta +else: + gas_used_delta = parent_gas_target - parent_gas_used + base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta * ELASTICITY_MULTIPLIER // parent_gas_limit // BASE_FEE_MAX_CHANGE_DENOMINATOR + expected_base_fee_per_gas = parent_base_fee_per_gas - base_fee_per_gas_delta +``` ## Rationale -The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other languages. + +### Design Choices + +- include block time in base fee adjustment: make "block gas target" proportional to block time +- results in control loop that targets stable throughput per time +- addresses problems listed above: + - reduces / removes base fee volatility inroduced by PoW block time variability + - reduces / removes base fee volatility inroduced by PoS missed slots + - reduces incentive to DOS block proposers + - reduces / removes impact of chain forks on throughput +- drawback: during demand spikes under PoS, missed slots can delay base fee increase + +#### Current EIP-1559 Update Rule + +$b_{n+1} = b_n * (1 + \frac{1}{8}\frac{g_n-G_n}{G_n})$, where: + +$b_n$ : base fee at block $n$\ +$\frac{1}{8}$ : maximum base fee change rate\ +$g_n$ : gas used by block $n$\ +$G_n$ : gas target for block $n$ + + +#### Block Time Based Update Rule + +$b_{n+1} = b_n * (1 + \frac{1}{8}\frac{g_n-G_n\frac{t_n}{T_n}}{G_n})$, where: + +$t_n$ : block time for block $n$, i.e. `block.timestamp - parent.timestamp`\ +$T_n$ : block time target + +#### Capped Block Time Based Update Rule + +In practice it is sensible to introduce an upper limit to the block time used by the update rule: + +- during chain forks, block gas targets above 50% reduce the ability to pick up on demand increases +- in the extreme, with 50%+ of proposers offline, the base fee could not increase at all +- fee market would revert to a first-price auction on top of the current base fee level +- base fee would even leak downwards due to small residual fee block space (<21k) +- alternative: bound block gas target to below elasticity limit + +$b_{n+1} = b_n * (1 + \frac{1}{8}\frac{g_n-G_n\frac{\text{min}(t_n, T_{\text{max}})}{T_n}}{G_n})$, where: + +$T_{\text{max}}$ : maximum block time to consider (e.g. 23s or 24s for PoS) + +### Future Changes + +- exponential base fee update + - more elegant properties + - slightly more involved change to include efficient deterministic exponentiation +- variable block gas limits (dependent on block times) + - feasible to the extent the bottleneck for block gas limits is state growth, not networking / computation ## Backwards Compatibility -All EIPs that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity. The EIP must explain how the author proposes to deal with these incompatibilities. EIP submissions without a sufficient backwards compatibility treatise may be rejected outright. +- only small adjustments to existing base fee calculation tooling ## Test Cases tbd @@ -32,7 +145,8 @@ tbd tbd ## Security Considerations -All EIPs must contain a section that discusses the security implications/considerations relevant to the proposed change. Include information that might be important for security discussions, surfaces risks and can be used throughout the life cycle of the proposal. E.g. include security-relevant design decisions, concerns, important discussions, implementation-specific guidance and pitfalls, an outline of threats and risks and how they are being addressed. EIP submissions missing the "Security Considerations" section will be rejected. An EIP cannot proceed to status "Final" without a Security Considerations discussion deemed sufficient by the reviewers. +- timestamp manipulation +- easier to suppress base fee increase => higher miner collaboration incentive ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). From ef829726d3fbc6176bcc799d11c0c582b238aa59 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Thu, 28 Oct 2021 15:04:46 +0200 Subject: [PATCH 04/16] update specification --- EIPS/eip-time_aware_basefee.md | 50 +++++++++------------------------- 1 file changed, 13 insertions(+), 37 deletions(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index 21e1a4084d8953..bf61c37573032b 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -7,7 +7,7 @@ discussions-to: status: Draft type: Standards Track category: Core -created: 2021-10-27 +created: 2021-10-28 --- ## Abstract @@ -33,53 +33,29 @@ Abstract is a multi-sentence (short paragraph) technical summary. This should be - gas limit elasticity would again give us the capability to compensate for this throughput reduction to some extent ## Specification -The relevant part of the pseudocode specification of EIP-1559 is: +Using the pseudocode language of [EIP-1559](https://eips.ethereum.org/EIPS/eip-1), the updated base fee calculation becomes: -```python= -BASE_FEE_MAX_CHANGE_DENOMINATOR = 8 - - - - -parent_gas_target = self.parent(block).gas_limit // ELASTICITY_MULTIPLIER -parent_gas_limit = self.parent(block).gas_limit -parent_base_fee_per_gas = self.parent(block).base_fee_per_gas -parent_gas_used = self.parent(block).gas_used - -if parent_gas_used == parent_gas_target: - expected_base_fee_per_gas = parent_base_fee_per_gas -elif parent_gas_used > parent_gas_target: - gas_used_delta = parent_gas_used - parent_gas_target - base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta // parent_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1) - expected_base_fee_per_gas = parent_base_fee_per_gas + base_fee_per_gas_delta -else: - gas_used_delta = parent_gas_target - parent_gas_used - base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta // parent_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR - expected_base_fee_per_gas = parent_base_fee_per_gas - base_fee_per_gas_delta -``` - -This update would only require changes to lines (2, 3, 5), 6, 15, 19: - -```python= +```python BASE_FEE_MAX_CHANGE_DENOMINATOR = 8 BLOCK_TIME_TARGET = 12 -BLOCK_TIME_CONSIDERATION_CAP = 23 +MAX_GAS_TARGET_PERCENT = 95 -parent_considered_block_time = min(self.parent(block).timestamp - self.parent(self.parent(block)).timestamp, BLOCK_TIME_CONSIDERATION_CAP) -parent_gas_target = self.parent(block).gas_limit * parent_considered_block_time // ELASTICITY_MULTIPLIER // BLOCK_TIME_TARGET parent_gas_limit = self.parent(block).gas_limit +parent_block_time = self.parent(block).timestamp - self.parent(self.parent(block)).timestamp +parent_base_gas_target = parent_gas_limit // ELASTICITY_MULTIPLIER +parent_adjusted_gas_target = min(parent_base_gas_target * parent_block_time // BLOCK_TIME_TARGET, parent_gas_limit * MAX_GAS_TARGET_PERCENT // 100) parent_base_fee_per_gas = self.parent(block).base_fee_per_gas parent_gas_used = self.parent(block).gas_used -if parent_gas_used == parent_gas_target: +if parent_gas_used == parent_adjusted_gas_target: expected_base_fee_per_gas = parent_base_fee_per_gas -elif parent_gas_used > parent_gas_target: - gas_used_delta = parent_gas_used - parent_gas_target - base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta * ELASTICITY_MULTIPLIER // parent_gas_limit // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1) +elif parent_gas_used > parent_adjusted_gas_target: + gas_used_delta = parent_gas_used - parent_adjusted_gas_target + base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta // parent_base_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1) expected_base_fee_per_gas = parent_base_fee_per_gas + base_fee_per_gas_delta else: - gas_used_delta = parent_gas_target - parent_gas_used - base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta * ELASTICITY_MULTIPLIER // parent_gas_limit // BASE_FEE_MAX_CHANGE_DENOMINATOR + gas_used_delta = parent_adjusted_gas_target - parent_gas_used + base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta // parent_base_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR expected_base_fee_per_gas = parent_base_fee_per_gas - base_fee_per_gas_delta ``` From 7fd162637fb54a5481235ee8b5d5d83e25495cfb Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Thu, 28 Oct 2021 15:06:12 +0200 Subject: [PATCH 05/16] fixed incorrect link --- EIPS/eip-time_aware_basefee.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index bf61c37573032b..919f87c9086bf5 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -33,7 +33,7 @@ Abstract is a multi-sentence (short paragraph) technical summary. This should be - gas limit elasticity would again give us the capability to compensate for this throughput reduction to some extent ## Specification -Using the pseudocode language of [EIP-1559](https://eips.ethereum.org/EIPS/eip-1), the updated base fee calculation becomes: +Using the pseudocode language of [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), the updated base fee calculation becomes: ```python BASE_FEE_MAX_CHANGE_DENOMINATOR = 8 From 8b703476b4f6f736542ae82c65e68684278b88b7 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Thu, 28 Oct 2021 15:10:44 +0200 Subject: [PATCH 06/16] updated specification to allign with EIP-1559 --- EIPS/eip-time_aware_basefee.md | 44 +++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index 919f87c9086bf5..2676f5ea7a2bba 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -36,27 +36,37 @@ Abstract is a multi-sentence (short paragraph) technical summary. This should be Using the pseudocode language of [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), the updated base fee calculation becomes: ```python +... + BASE_FEE_MAX_CHANGE_DENOMINATOR = 8 BLOCK_TIME_TARGET = 12 MAX_GAS_TARGET_PERCENT = 95 -parent_gas_limit = self.parent(block).gas_limit -parent_block_time = self.parent(block).timestamp - self.parent(self.parent(block)).timestamp -parent_base_gas_target = parent_gas_limit // ELASTICITY_MULTIPLIER -parent_adjusted_gas_target = min(parent_base_gas_target * parent_block_time // BLOCK_TIME_TARGET, parent_gas_limit * MAX_GAS_TARGET_PERCENT // 100) -parent_base_fee_per_gas = self.parent(block).base_fee_per_gas -parent_gas_used = self.parent(block).gas_used - -if parent_gas_used == parent_adjusted_gas_target: - expected_base_fee_per_gas = parent_base_fee_per_gas -elif parent_gas_used > parent_adjusted_gas_target: - gas_used_delta = parent_gas_used - parent_adjusted_gas_target - base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta // parent_base_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1) - expected_base_fee_per_gas = parent_base_fee_per_gas + base_fee_per_gas_delta -else: - gas_used_delta = parent_adjusted_gas_target - parent_gas_used - base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta // parent_base_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR - expected_base_fee_per_gas = parent_base_fee_per_gas - base_fee_per_gas_delta +class World(ABC): + def validate_block(self, block: Block) -> None: + parent_gas_limit = self.parent(block).gas_limit + parent_block_time = self.parent(block).timestamp - self.parent(self.parent(block)).timestamp + parent_base_gas_target = parent_gas_limit // ELASTICITY_MULTIPLIER + parent_adjusted_gas_target = min(parent_base_gas_target * parent_block_time // BLOCK_TIME_TARGET, parent_gas_limit * MAX_GAS_TARGET_PERCENT // 100) + parent_base_fee_per_gas = self.parent(block).base_fee_per_gas + parent_gas_used = self.parent(block).gas_used + + ... + + if parent_gas_used == parent_adjusted_gas_target: + expected_base_fee_per_gas = parent_base_fee_per_gas + elif parent_gas_used > parent_adjusted_gas_target: + gas_used_delta = parent_gas_used - parent_adjusted_gas_target + base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta // parent_base_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1) + expected_base_fee_per_gas = parent_base_fee_per_gas + base_fee_per_gas_delta + else: + gas_used_delta = parent_adjusted_gas_target - parent_gas_used + base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta // parent_base_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR + expected_base_fee_per_gas = parent_base_fee_per_gas - base_fee_per_gas_delta + + ... + + ... ``` ## Rationale From f4ec2426c3e1b24d66dc184920636da4856b80c1 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 02:49:45 +0200 Subject: [PATCH 07/16] added throughput graphs --- EIPS/eip-time_aware_basefee.md | 37 +++++----------------------------- 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index 2676f5ea7a2bba..813603dc7f83b9 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -33,7 +33,7 @@ Abstract is a multi-sentence (short paragraph) technical summary. This should be - gas limit elasticity would again give us the capability to compensate for this throughput reduction to some extent ## Specification -Using the pseudocode language of [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), the updated base fee calculation becomes: +Using the pseudocode language of [EIP-1559](/EIPS/eip-1559), the updated base fee calculation becomes: ```python ... @@ -82,44 +82,17 @@ class World(ABC): - reduces / removes impact of chain forks on throughput - drawback: during demand spikes under PoS, missed slots can delay base fee increase -#### Current EIP-1559 Update Rule +![](../assets/eip-time_aware_basefee/degradation.png) -$b_{n+1} = b_n * (1 + \frac{1}{8}\frac{g_n-G_n}{G_n})$, where: - -$b_n$ : base fee at block $n$\ -$\frac{1}{8}$ : maximum base fee change rate\ -$g_n$ : gas used by block $n$\ -$G_n$ : gas target for block $n$ - - -#### Block Time Based Update Rule - -$b_{n+1} = b_n * (1 + \frac{1}{8}\frac{g_n-G_n\frac{t_n}{T_n}}{G_n})$, where: - -$t_n$ : block time for block $n$, i.e. `block.timestamp - parent.timestamp`\ -$T_n$ : block time target - -#### Capped Block Time Based Update Rule - -In practice it is sensible to introduce an upper limit to the block time used by the update rule: - -- during chain forks, block gas targets above 50% reduce the ability to pick up on demand increases -- in the extreme, with 50%+ of proposers offline, the base fee could not increase at all -- fee market would revert to a first-price auction on top of the current base fee level -- base fee would even leak downwards due to small residual fee block space (<21k) -- alternative: bound block gas target to below elasticity limit - -$b_{n+1} = b_n * (1 + \frac{1}{8}\frac{g_n-G_n\frac{\text{min}(t_n, T_{\text{max}})}{T_n}}{G_n})$, where: +### Future Changes -$T_{\text{max}}$ : maximum block time to consider (e.g. 23s or 24s for PoS) +![](../assets/eip-time_aware_basefee/degradation_buffers.png) +![](../assets/eip-time_aware_basefee/degradation_elasticity.png) -### Future Changes - exponential base fee update - more elegant properties - slightly more involved change to include efficient deterministic exponentiation -- variable block gas limits (dependent on block times) - - feasible to the extent the bottleneck for block gas limits is state growth, not networking / computation ## Backwards Compatibility - only small adjustments to existing base fee calculation tooling From 66d561e79706203981db0c0acdcf6c7be8a0b5ad Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 02:53:48 +0200 Subject: [PATCH 08/16] add graph files --- EIPS/eip-time_aware_basefee.md | 2 +- assets/eip-time_aware_basefee/degradation.png | Bin 0 -> 71848 bytes .../degradation_buffers.png | Bin 0 -> 44213 bytes .../degradation_elasticity.png | Bin 0 -> 76286 bytes 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/eip-time_aware_basefee/degradation.png create mode 100644 assets/eip-time_aware_basefee/degradation_buffers.png create mode 100644 assets/eip-time_aware_basefee/degradation_elasticity.png diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index 813603dc7f83b9..37fad14b6f9421 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -33,7 +33,7 @@ Abstract is a multi-sentence (short paragraph) technical summary. This should be - gas limit elasticity would again give us the capability to compensate for this throughput reduction to some extent ## Specification -Using the pseudocode language of [EIP-1559](/EIPS/eip-1559), the updated base fee calculation becomes: +Using the pseudocode language of [EIP-1559](/EIPS/eip-1559.md), the updated base fee calculation becomes: ```python ... diff --git a/assets/eip-time_aware_basefee/degradation.png b/assets/eip-time_aware_basefee/degradation.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2262a7c8d858bf8b0c29939d8989aa93fa07c5 GIT binary patch literal 71848 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 literal 0 HcmV?d00001 diff --git a/assets/eip-time_aware_basefee/degradation_buffers.png b/assets/eip-time_aware_basefee/degradation_buffers.png new file mode 100644 index 0000000000000000000000000000000000000000..fd87694598e410fd7b89838e3a8345bfc3b7571a GIT binary patch literal 44213 zcmb@uWmr{Vw>7*G1!==g~HXbFZdV}L2& z7=PsAUz~79r>LFWfujKAEwUDlW}ISI;wREo_NJrN^?lV~eaDo0>x(@0AQ+x-hv@fu zQ4Zb?PUS`xOJt~}=>_jn(8J-8(tB zo&_`D5}{^pJW7)4j#pD-X52?;Q45RA{l4rAXGBW&pJCWz{R=TgjTNld1+|TpSC)5> z%)I;!6bp;j!C2(Zi|dPxNsW)r*^|p?Nn=(u0`&|+;8+kWekfW)AT%V|(<2C13x*Bidq#J_L4B}Fj7zi;?{Kro;e-n@hO{O6UIU!hlD6T?XUzkB%)g#17E`~*S# z&&?4${xc-si`4%N`Tz9g|NrYbTHG2;kjj%S_*I%NP2+B2LPZf3ILvb|x-=kU;5^sh zc<$<|8YSG>5rCfmoj@#+?QN8>+~(4~1n=WtTxO%xQ3Hd88hS`)XJ;@GFQL1;`-Bm5 zqw{ri(swYI^z>ZWf1GuT$F#fd>AX)j87i%xn3yJHpN%SU;o;$pri%teXd64~Z1*#1 zh)VxpzkTZ|o>RZO&XE-A@9!@x)BX1CTfGz*r9v!lQq5k)LI8KrDtix6x@Zfo({6qY7H|7Pxi~M-C!u; zsOduG7<4l6A3lrP2DfMZwEdVW4-XHq47!LAc6RpfLPF=~!@T7>z3=WW_q!uVMM_Fa z{?s*ytEmwxnNHr!xIRB#-(G_ON4Cs$bvqw!&tbHY7H7-#<2dbUjHe1#!Q5_cZvNgg zvzjgVD-~|dn>Tlkjg1v7Oi#xcj%WA!`G7C-bVfUx=uQ6YEd5J_sL?-rx&R2XZD{Uul z&qj=hjAAE^DzmDZrwWzNJJ2OcoGy)gk>5)nO^b?)cY!aehp4}t?Cguxx(XOR4-YOT zCMFx+-?^BqUjLH)0_W}78%eglz3o?7$*ifV3HBgC3>_C&*c%RIrrDjBfWxL`YAPD+ z;Pl0}=RV5fmEGL{@YWDqX06e50lnd7#pjX;Hy0#q8YW8hCKvY0y~*~uxp+7f+!Cuz z;g26bzJC3h+?t^2>CV{8%d4cUEL|W7>tL~d`rtI8-En&;DMPv1Y-Vul8+y6!0Eu8w;$Q_XN=NWZ;9?r=64^=miPAb&^f#GMvyWYPa)&s;i;&o>?}9) zV$-OQUvj9s-I6jJO|*1%`9@PKmzmD9@bU8_prBA!y74}oz#cb0^E5Rz&CJb3#KrwI zGNM@T3L*LQ>1C3*pSL$Gx6{SS$!dGn7A6sq#PL#NX?b~jd%Jh3cDJ;oq@+=u>3r2_ zwYmB~xqRQKD9op)r(gok=!OQa^6M>mTSa-I7H@d8u?!(Je0=@k@9hcK+Z_&| z9>+|=OJ+&aTW$PsyWPabWis#pV_xo0>kq~=XKj@_p6kW4numg8`1bAFKmzM=@;#=L zqhnm#YGL&G9Y;t=2s8D)*DIu+-d_4fbJB5>xrzYo?$D?`J1sh#SRPjnaI5aQIa~<| z311XEK_#X5*#=-`4r>8qH~YoS21^a>EG#VG#%LbEKu3#IITI5T!Kx;TROc@oKYjOk z@{gc+BiBoo;^L)LsJBpKsiUJqXS*j0hm6y5v{*lwU2nCC2zE5p{rRckW-Z9U$tfZx zM##W`d~|d)7@s|&rR8fht-AR4?=N?EcZ1(EW-s)Y1G`OjK4RzNM>`2JL39EU9ha6-+t-v}7k z*y!)yD;DYEvzXun1O(_3sx{BQxp_DrK5vC5DsjEHbGkY}XxZqEyj}4|+nFvV0;l(x zl+;JDTyHduA0CyE%fLwUb}zpehu!Ma;e53|h$y`*?(5K1u{v8fZPnJkbEUP&o0jC`kCs!<3{;yv++rugP7dxXM zNR&97YO$Ct{4(O{kD(=FWsO;F_X7sdm(1-P%WRBwdU{Hw-tKbpFCU_fWN$rYc?!h=S&ZsDwUzS?|yJH>sga$2o@X(>65QU7d!aoFPN z!BIt3RV=OA`TEGg*_qLB?9+u4cX)U>u-_PCc3Sl&lR2WHB+hOS-$L^9DJ8g0zt>JX zp00JeJYG%%H|@4DsQnrFnM$o87DSiGq$Jb5Gs$W*)$#jAi&Z`l8#;DIGr+lMULDNh zb26I$JDZAejgqJp&d?l$j5SvCGm=4T|0yji3j?1xZ)<#N7Do{S3 zISLyCgS@DyNEjrtzv<~8$8A7dm4##h=gnF=2U(ZAwzgKUI3Xpac<1s?df!x6H|x8g zV6@Y)`@^Y_jH0-BsC2pBptP<1Iv0k3RJLdw$ioz*G&Dz{d+#Jai^giyEdvt!)8Z=Lb*i4^9A|p>S|!C23=Gb0jK<^0h6$k(;fA4ag4f~B8Z3} zL)+Qe^??bJtIR**AI_IT&_#Phen97G=o@ACsA$d}-ny%I4&6@=OQvTHUY*BcUu?1vCIvnIP z7#c!y1dnv#Jo&=-*~f?x3+)tqb@gRwg2wf=wb!VqG`26k^{ytLx%EbiszYrxEJ{v3 zc~c>OQZEfARlZOOlFcKACSzyE0=c@nf`C=P2}pt8>snk~Jg{5qK!}KpG*{GDD!j^e z{R|5WD-!h{84kFwpoIk;hz~WjwW~)*L*XPs19zldot;w9AzV8E;8fjX9!}wv04axt zhGxfxV_|U-cqYl$yrxk5k0A6fEG#f=%Yh(;49B1M6mDPVx)8Fz|AB!a;^M-_X!4)H zj~}ni8!xehLh)MWX51+2eqjSsh~Q0$2I%=Z8*6C=Nz?&tXHpKV3{lLgH<| zWkK%g8Xu2*db~deh*lT}1MT+( z42E2wV8)m7hr37;Gn2vE7}`EOWgEhYGv0&EhNKLkuz1%rJY+ao3QYH>Tm86whkW`y zvz&tKGjNA3Z#142_2)ZmBDWi2u-M#5BQ^KO%lbR3$^A>4-7%ku3E3sLd(*v%Jny6= z0t5tv@87?3mCzp4FY*)=7J?A^RqC(wyg={!yy=v*1&|MilDYfA`TnZ6qdwmr)}N~| z97y7fY4wKZEitWW01!G?wVnmwxWbdi77epBSb8-^6 zpS!TyB6iKWkZ$#KHy_W~?T-@kCei2!t|$z@)Q@jAOvY?1j_hB$0CWz(-57u?5CAnL zF?;~ZDA%Rg=O)if5l`ZX>kA4B3J3|w0M3EA<1$fWE(f!R0m({T^X!Mq$p`w8j2i8?{08$d!EWH2)SzlR! zd`;nT9Wh`Mjc3Y}75S4+u2O6D$^+0xC}3e-cHy_QEH#V=cqe+FE(cgGbIN9aOyr+G zl6%||qM}UozctLvXw=;wZQ}}+rkk_V$p>QT*NgV0Ge$=$jTL~;>)Opc0gHj2V1@DY zkgWUlzfAMR%X!g&2u zTZ;pEnL@Ezh3S0sH*dJ`=;$s0eGErZJr&8RXrb{GSUSi7qWSWLH(-*AjZVzRP4`8+ zBQlQBKI}WFrfH^Po_8OEATlHkR1n`aJ;>|Zgw)l9JZ6} zMceCU=I7DT(c3{Xfrc5tVcN&WBA__WXo8%>{zw$8*FPjgceTyu<*QeVmiu$)5?tQ^ zcmjlO4P+J)kouq}wa3b?)AL4eIC-$e6LuCby``lkfY)j!QdeyECWy(&{VmtK!vFm7 z0NjZ8@j@mpt%A$;c2tNcuFKQ;uyT6Ds1gu_FfXqc+2Tn~%T^i*w&-5=Gnd9%}P&qZK#nEf~jsZB?IX9-6#Fd`m{iDW#J zVfrs6B?=Hw`+!0d1zj7sX;Z$Y2H@s@OG@Z;AMY-+vX`6Po5uiwf`VZvSUKy&R$n-$ zqa%e%6&{rflhdUu$@J9PBHspbMrTNaa<)Qi1I5x~);sHmxdU_i79 zc#DE~3J*2WO?q42U-(f*h1XL51ORAh9N^KZMt}RZH4u~XDDPEi89fd%piux-5jEXz z;mvyd%LSXUe0jpi=YJN?{LFf+^T z6(H6=y>rsQm){KIefo3#%OC#x9RyLz6M*d3XlUDDAsyY_evxDn4E9GVP#k zR{|7?u22FI;Cz<0wwu83p~;WQV8jE!SK(K3Z-IF7;p0ayu>EhavAY%2U462$NWs!$ z`rblC%culEGlAh~KRw(6dZVGQFEpIYeY+7UAv!I9xdjx2lk01J;7OU;*=uWSZD0WC zi^3>N)D*=)7B~mWSy*P~r-Fh4gYj$>BKHS+Abd!(^Kn7O;Qyn$t`P}>h5TRi+3!)r zWS$GKAR1_CeFV7h`cmm1R7}lf3rznL73C8a7B*YCObQ9)jEIeOSf-hx0m`dC{C=Ac z(#`GdPYA}QjFssOAX5v~K~+d#fOIWgJ-xN#WAi)07zlY^)<#LOx3~9yRN(Xox3FjQ z-k%@-ZvwHD?hhiURJ`^!eR}^31w}+)4LoiLT%kNAe+3u@{0gD#?CdPq{|xd#*)Hy~ z%F539c|4#K_$SqNTfV~3-3V>qs!&%VmdSLpA`}4Isp!M3?+WZaS!pZa6~(izpKSJM6IW+t>H(Zohc>d_R%PF#?bTZBtV*kax_Lu0Bwy)Vv`h zBXhJSg)G%3CgKCr>40*@t#tscbb%>AapGdVJy5-b08i){9%dC|1oSABfU^rqHGr}+ zTW3oNSWFZ(SjG1!W)R~+1Y@(^!vM})V>s)5vS2-Id3RyxC_@+_?D+0S7$G+RX+m*f zUjo}McE=q-F5aEY$A&DsUK1oICqDq;@Zxwm1<1T5dV{!EM~fmrFoA(;D!^ITQe3az z^YHML=|YXi3Yueq3FoOb-ck4W62nevq%in%SW$sj6-f)DNf}dQqvwF&Ol(xTYo+(5W(@R{_(*0Vx^?LD`Xl zz@jJ>iZbnwm$J9n*xBh_?`(kDD>{C-+?>+W^8<(tEtx+fg`+^_ARIW}$yS1Sncblh zs1iW+w65UyFJHcdym|Zfo0AgDd{WTL;wWXIY?2g?32`LLW_Ym$T(WR-CL+=KYVO(#aYP->N6<3}Z2k!{xBh!O7}<_KgblgfaTX_Y^ygogab4VlIT#4#!X&6y(0=gzid|51y#krN_ z6ezi}`=5#8L`8aecu0yWN@8xi*n4^E? zQkO^?kN&GPkW->!!us`(x^(K7W?pFnM+m8rY_@IfmD(3_-~B!H)(gV8J`^|%?^9a1 zSDmS>PsOa!F$)S8PTFxzIDwbsot@-&T7T0&{`G3J`mBvXlEm9~ zZS0<0u#(C#nQ`l7nj2|pct^3>6lG-lg?_LnFyrXIANNWpmrO(xaO_gH z<{AYX0r>hW=Nzx>IwvyUFL`d*wv+r(5N{mL(*cuN+D=Jpc;7tCS zEC{gmhMQqA^;*;p)3o$^v_Nr!jf**FcYi>%6q5PLmLzDW1S7=KX{{r}#nURzw6h`- z^7+W1f?+QzcR{Jz%=Bt@AzKWO=lQ`J=xVqjTTO%8pgIK9XKizH^QXnglwm-e#jg4J z_{`?duDbBd=>Ye^qE!p|Kt^0TJQ=1W%xP!jxF93nIh87AjRbZA_2O@p(4~Q9sdC zu_k4w{u=JQaG}ZEv?68>JI||C`7uaJ!|XTHU#o+SVa>xF1Fo6yL}^{A2;m_aIql>g z>PisMIvY99$#nO_2q_1hQRfQ3!eZ%~Z=~q+UXbk(X}n^kJ=}XX>{7O4&{6#z?4WHx zHQ-A*+BH8oQ|BdPYjFmjW3=*X@Mby-j!gmHbk3*Zq~|Y2S>^tx7a)s;W$u1_RVhn8V{~_9$HpRvNG!W0G0qVAHv$3%DGtA;rU})p zP?&UL1Yhg!I7T9mSl2KwUQDwf$^oG>a(z{p=5#j7UPAC%@l>wmSw&~>c(iZQ!xxGP zba#djbk27H+*WZNjJuzbe|C2*d3E1SWZD_ivU5@WqXOmay`AqsiLX^BL$50By zGUckV+1bS=AJ?^xfQFMcqyn|ZcpwBv0?qrR9gTOPqWBSn3>;=7jAuYY4M6RpHs+`7 zDI_*2NzCS=lJ*jS2xw#v3PPIvC%1k%t-hTR#sf`hK%L^bS%GzNaSx>+t&*lMuUwGM(6d>X?3uT@OET+|~w%?;29gDHRJF7x2e* zcaM7ZhLr?nOzQ(PoE0tq5#~De=~qRfoRuAO6Kb1cST*9V1ZRSh8uu7X={#AsUmPnM zyI)haS4?wgSui3K6GXM_K4M$bM8qcj&=UWMpoq|+-yQik@_Sm^9~r|OwkW&6s8Pxg z&7WCa%S$OAx<43kOlM}xh#A#Sd~P950!Wz4n~>gD1ug~%4eIerY1IH>OW+8>g|tN>YD-Y@$&W-D|81y8bsdFiyNR&^b8JC zU%SM!nDzlR^5od`^@hgv?jmnQ z_gxedM+3@R%g#a#3|-)_bz)>se&vIO9;UmCw(L~^n?DCYhu*9)1ggv8LO_Vt95 zARr;}7s{W58XKr-54aB$e@AmR<~k@eRBfL;D1G?Iy)A9U7Ma+Y_i6o5M;Z%Z*D-rO zUVB>n@2Ooyc2gMar7M2k@%q4l7>6MG}zoOJk!wui9%(gh38)(zN>}skIL%re0)Lf-bp(+v<)(+?%*xdA-sWPzapW;d?XQoam z_*UKx%T{s3hqCYVOq5S%{27=K*apgk$Pyv>|W zNuWl*v4QM@pb(T$pvk6EY%`*h-mqkdw&0&1v*8%h$=(2)> zUA$JX1AVk>9i3F#bfN>FD0sZbdlj?9c}mMCB$ubdeHGA%s*6?wbG&UgRSX3@2VVZ* zK#UPK>kcNCqW_z`REm4U^y0W{WgN#P!Fw>ndN)IhpI(1_*y`d;DpZxdYxQq?qBtct zgZm%tH-)ZB<9+#VAZhf#V_NK85gZc}n ztA7j^sSjB?c$XgQj2}%Jj&uIt8R#G(=H-P_OJI$Ip}zv|)l;4?j?ED~0OPC=Zup3r zD533cg6pg;!~QPin_76&gpF;(!LDR~QfTFZA>m4Jl)Ox>LId6O3`eX3k`#VG z{zAxMB!55})Gy$C%D>Eh@6>-2^{2J<+z|g~51lb-#l$~^Q`^kaW^}QC?4z0Sj69)J zQO_oW56CqRFW;fHb@F#L=WPp1Y|A6Pn0s$NIq%uHO@jUUT5YcXD5!qc))Lz?Zj0nn z!9G_Uz8UrRozGZDIRchZ5PX%1ZyR6P(?jG$r$`U4(}b+q^^CTI#MA4beP6G-(WB*| zQgd4>ips!b5?txVru>5vpjf^93M7{o8UjE2zvw7m=vF0*YxeJANS7fBi^(ibMvGT+ z@2GTp%QLG`xFcx>6o^U27DIG&aYCVWcP9u1@;&I)9z{d4- zBbHJQa+CO>a9f*j`}lhN+L1XeXD(<4gOPlZ`Ui6Jp{Yi@c*E+%1s8re$NGd1myAX) zja6ly%9NU!3u{BrPsywT&5o>PvT84QGdjVE8TrU###|F_KU47<|V!2DpTeK@TeDA7T;lNjd2v!8}s?>?^I zgd=VsTc-EZ@(AA!z#I1(tbE4x<5k&sS5sJW`kU4=s|SMqYUT}_v1nrWBZ2nEjvih?oimwm8krKWRyg~A_i=wSa0kk>!vSJ)sObhS9a=4~q#ubp3b!hULEPEP;*QZnBX zj|abcwK#n&9=>6K((&OU<#9s~YfYg$j!cl5FC$!}8v*Lxq!2^|kFehhZCZBSnPrC; zx-2QeTML``<=u~}COazg-b1$BhL}5El|I>f1uoyJP9-fb;Mg8>EJyZ?>ltLtkx-I- z>l(ja@2KGB{ZQ`!`$xrH`qwq)Dy}cVktG9c-|t&L&9uB4c@^8<<}Iv;K&H(@i4EgG%=7A>$sa-Y1^r+kz_jY?yoga)z5jp@GeA z6DKH)cB?qHnOr`YEUe~N{Ybr@c`}L{mOK12VuF3wasJPECIo(YEF(_NhR+W~p%UD> zP22*iTVd=%k{AZ3-#<{Ny#AXc`u_zRm%p1>Smh*lh( zI6hxf3KVaj#aP#H>7zobsFl|^UE^ovzS})nMZ+4eNgB&?F*dy?oYZ~B`riprzNQ1y}2zwo!ITT(kjPj#N-W= z<8JsaEl%Xy_U(HfeUS$&NMd2)`&pe&67amL#NHzMrZZpHl-KDuwzO8)y_aLkON*4J zao(XI8aJ``)p~znt5F<3Zj83lEBPNgLdh+on8KTJJVIY?Ks0tW#5@Aon(kF8bi4KO`lTCY;uG<4HyeT)M+C3`OLpQO7 zuT3ue7LJ9;i5Ch4{obJ)4E*7mM5BNYSV8vsV2263C|({**=)6ymcL zs@%ZO&(H2~@&Ra@aM121P=5Rb>QK#3cR`?B7td_$E1shbKp|-B1Qoy6K!{6VHD`I% zGR*s&2-qV7=uZS)*3dT2=ez0VST08f2q=E(fi_{#^OppAw5rS&`|^vM`alg<0CWT% z=kjdcD?<~SrO527&WHE5;VGyc<@+lC@)qX!#A2M(xE4G7u3C?N$!0MISQoXlc9ysk zXLhPk+7}~HtI_*@E1cw4=JM9kaBj0}Vn0LilSYLZ87U-=Buw}&wjF;>_Hyr1#pPOc z-N6$Vg-7PuTYET}9L{H1pJ?mhR5r2kaOYm!nu?0KEW;lW&7;<*bK<_anXs=6KkUG_ za5L%B83hGJpm@3*^uoy~f|BhnXqExZAfUGF4S?fAacH9>D824Y7lY!3v%zTkD_|2F zpsSb^Xx`4w>z6g%VMN2AQZrj=j18(0H8nLQZjVl&ZAUx4d!^O8cW`hMNK!En2kebE zC2v?q6b*Oh7gC6Pt2FQDlN`!LsEumo!_{?Gs@nq|j8}P-+#5W@p4q|rb_4Su1tFhaATc*+eaHw++nl2eeLRg z+@HvA-9tOne68M&i?T%I9=tv-;jJbCVoUGMrGl&xrsmtr65Enbhgzuf(MjMj0)IRv zlbMl&CeZQ*WKhtJ@&d@SGB>cf3dMw=_yR7p$zr{Eqk-r?%}exwgCl-n0q}=iFYz44 zMQF1NDDF^3xyNi&un?QI0u5A3vo-iYB{KInvOJ+EbZII>G#mSc+c!@8>`HJoCn`wp zglMN-*=5zpd6REumK>a2DDa>{JkM z>5tAy0|f|5)D1fDZ!!D2_}Wi<%+O4iHo-YBaSLWiYtrEy^`DoQhwxT_CXzEI6OCx?(l&Y~yuCC|uyezXhb5qorK(q%Ss zo>h2?shFiQC!m;TV;+L zz#bsVOP6FG=GK31o4gGI@S4e?i~Vt>Qpj}X&s-|1pZ8DB5uXL56Qg~PPga?Z-?lXI zYRxumU=U6cSe%taCGpGdfaZQeUsu^l@X!S)09mZIy(;H#0V3x_zPpb;S-`p>22Jb5&@#^C-oChi1*i$WLn{UPyKk0Qo zIh+wm!yn!Ewc#qE_|W^M-jl7YAhGwB?2_E1C)2-Cb3F0W1Qn`9*t&D)l;yYuGX~F4 zPaRCX)64K;$Gw=G8_v_?dUw-G++nn(ZqUvGso}B)kSUq(oN)4_X!nPdXL99vSQ;%u z4=Qm7HMF(w-Mcmq7+5xo6^QfI0hFxT9L$6R&3}2+7_{Utnk}$_+Il~Dx`EC4iVCzo zXn^(~Dy51a6pEm9j+Pvg!A!ylUw&CAPIadsQa63gmmy!uOA}(*k2dbq2bcX|=~Y9? z9_6k}ZIXIvfn$wxHvoSuD47U<|AbVo+(KLY9zNM^Bq*zDB`-DSCTp5j6e&qiEGIq_ zJM(<6PT_W|hZW~rd|$MT z$BuM!)T{VCovJtP_MztZ#q+#%D^qBy@GAnZMaMi_TaL-oT-=xx84Uk<7*4&GxJm_g zX`{5>ppjK-iwkG+Ah}dpjlQEV4>nt55WYvgxCOT}ZdG}j_3GuHF53j;G+m|BG8o7> z-9*;u5C<2B*PbB@y6xE4qHtbr7MEX^m!W7U5HW+59Lhe{R4q-|le8$VZOc}DRjhIdG|w=~B&7?_rBJCauRM|}J1Vs|~W z2Z{+gTo@1Tg(cPz{H^~@*1^+wHQpa?ZtG-Bcx($(G)Q=bl1(<+BSTzHY;rf$Uk1Jy z-Pe5lRHMUX`GON|hm9~^z+QKgSW($OWX0b8+>Y>kPOfM&HJOOP0j%Rl<;pR z&D-R`LGAy3%3S#cf4+4=o#a>9y;b68$DsP(wSv}2mMBHMj9I(Sui7UYrL(+Pm{s0S z(fgyenniK`!a=q;(4Vob9iEzv|8cEKb&1 zOY|2VfpM+E(T86uui>#;qo2PHP0C9=%a2@=oS5IXV3DwpM3*LXze^$v5zNvQ9jE_3 z5k{`CxOFt&eX9VMfq`L>caIagIo&qanv2A#CZJknoww)h9uhpcvQ!S<6)oUd?U9jcfyMN*ZzE9Fy(K)o~E)Fj>!VEBfPQX`|xTk1lodBSNGVK?=cP zM)~{+{c?t-iIIN}UduRd^_SM?VjA|Z*YA}TZOLI8(;}Xttxr7F)Z6msiBq{Tw%e!j zy88PC3h9!+ONTdm$x$TdpW|D%ZKsxxSbn&L&_3S2!)BmeI5lRw+Vk12Kh}tG4oH>h zhncB8qsj|lFFQpfhCbqX6jI-ad3;&WeO1lL_|IDGps*sb>F;1H5$fn>5cNX^Z?aZn znpIJv0<6O=>&`U+o4ohH%bQ)ynQlpZd+w(8`JsfFfnRVB^d9`Zen&UA zG_de%cYAa$=+$fSb}wARJ%JpXM$6LUOZl$?v^0#Q3m_dF9-f|@q=H_IL=IbF3PBJv z*4(U1%Qps#DrcXLhoD)MOc`lNb!c^P(+}ZZ3yJrr{;QNOvKIyB#QrOi>#sT2A%5Q4 zRV|4uC9WJhL6kOEtwXI;t}b6dp)OqhPZy;ui=PiqSU+~z z?74EVNlCi!e3>p1=sDB?{qNAuPte3xXLl$p9$MkSJ4RGJ27hw&ljy~1ZV!-;PKVf< zX6-^J68Rur3x_u)3b2IvyYh|-RG0VUziXRj}XS>C@37}1|UTfwt?&?lro zB}S+WiuRQtKDqB~bxMK>=;m=eGX+dHc5r#&gQ;z}g89&-~PB z{1Q8_O!Ax0$SmS4sAMwVOsGxbzylGUmvArW?ng|P=AQ_C?&gPO_Sd|Qw^LS=?J$mm zIKO#b0--!b^%LGdav}lGwnRVcdcUf);9%tSqy4py$EzfwN|0mE2d_6_|A5fTqwXBo zS-&QUQBpm2COECsF!B#qUP)|ICGP;^=A4?XYRqAo@}<)-^A$nCSKj2i@GyJ#V71Zl ziHtAfoMPRxbGKE)^<2lsG((B)OIXJd`iH*eruxbFi?2fj-Ry(PqKrx@20X)D35VJm z5*!rtSHbfF$xeG;#>U6N^CI^daw%tzrh+^HzjM9tO{x43COy=JDl)=TNEBaniryWv z9X^)_6tkp|k`%wI65L%#JLYq+gPEzpQHE_s^(jn|H&||QtGtg(B7S(-+h$L)yQ>)D=`nVoNEv6A1botzM_UzC8uJcGw)~T<6Z3VBA~~R&!*p(r7)Nv@;&z0J4_{q zcO!V!ul75!ACp0Z%$RJ;cUbr9A`E1Joy)JfszD%pb<1zU6nCOqf6x6j+cWl2FFf52 z=F~vYM@nXO7GWvUU?8P{mh%(PhzB|wB&4O^{rvfJV{`N8CRZO(+Sm(+>kaJRxdRvi znm~BVesGM~*)V~;P%(XvPB;*W;yNOq9f^tTG{cU^;_}+}V~Mq2atdBIM!^Tl;et_UU?%2hHQ z%(buQ&1bV$8r@+zbT}Iyg5N+JYS)NM%g4@?48*D$7iXznhu%Cvys;10wFF6bhcha@ zhK}1u#JWmfoR4X2N@_2+EZi@zO%>bm!ucV?X^aj1JoqtVdH%-0FyQ#Y@Z~nqcjdqR zQ9+K051djgJjDN*e|uIv&FfH9q%OV;t@d7>I+xNY()u+DiJ&NZ5}dML2Qke`tf!R5 z`_SXvJ0iBHyMhC5oi}e8{bwRl^&~SY1Ehol=gI|}ndgiygOsvl3ugWm%9URQhx<2n z1|z?lJwLyFc>2-2ODiDq9qxF0-I6GTbEq-JTAX+Lk^Oqfy66cNX}|T5-_h-#=A_?f zwhdl|6Ez81=*HT55N)VLVWDNhxwED-J z=c34fyRf)bBz1BLxR` z$MA?auV=I8gEXz=?wJe*=KG0ma?)vjaR(G(X92QTLGK`&fpiv7|`=tMw z(c<{)Q_X!h(slLz+tp$T87D;tlM~w7(2mfK>4b4M@eh%GaY*~vvOcSYV?}#ql z)(8%Z+VV}?qp`~((f);njW8^#Yc+wZpsy?oIAjk#|F+J~uHUt8le5eXFvkjZ-;4dk z^ohnyt~9p}>%S>wSDm=~2b!*oXRIipjiIk7JQu)Zj-TuGQS(O;GvW#mC@EWc^dycfI`%}=z_E2_6D=bQbxuNJDYclFT8Lb&)L(_#}KbO^Cw1b ztamEk58!{eL!>f8ZuN9z&`ae@)A$vl8JtW1!lRbhTG7^V()!wzsS8_q6TQNS#ICqO zz(}+~mgc`VN+eD4L{m=xD#YvuT5$w9#))wcEbcH@kA$BY=F@yz7M||nJDTyA3^E$? zB?a?sd5-A6Zxv4UH6}eFqP*NmDaDTuCRG2V$L`L%aP&IDbu{`zi|sOEVA6fS=ZGK@ zBXWvpqbyexw-v+gOJ~)P1{lVP&O1hJm7|q!OMhQY7V9X$xwye}$2`DFBZ5UNPlJApCq5e$A{xgGv* zBi=(tTf$@(Rw~!E;MTJ%5~jE22PT#M{7=J)nzOS#$H#%?ZPvTJu-{GfEoGlNd|Su1 zEc9-Tm*2^gV+0q_N0=Qgj%4Vsl?EIj&R-6=Wz97S*(Pv8ekV^`aqbk!l1pVK^0>x> zkJUf`pApcD3^nKD1?(W{Z#nU#Y;@Ugz42mNzZP!vgmgFjAGY2ys><~X`(1RWAPrJd z($XE$4T2yN(kK!ljdV-53X;+#AgFXoqk?ox2#Az~)R}AV{eRzc#yDU0aDU)gPuwx@ zIj`$CWzP6y-n5uE`l3D9Y%7XrZziz+wscHVZG&yyWVTzX!%k^#=XW&Iz7qc;;0f_P zJ2zgn9=ku1JNI2P3o^(`bn;YGG&GPVRL}!kI5}}sF`-zrgS$urh$El{co7>5K`uVh zJr)Kr{LL=$LS8=}qe%A=M3R|bOf?*p8AA#H!3m;zs z7_vaqLj`H-5O7TZssPOb{*ClVfzS)gr5U2GOh}zGxQZyLs8oN!U8lSkv05p5X6*Ju zc;U)53vD9LL3oS!O+%?lx(N?^YIKL^7hH@nhD4#5&%FMO%aXUAU}vG_YOGA)qPCWw zu_9hMKe3%nblv#!?Q4b2k+khyDf_Wa9tpyNYnhMROHM!SQh(Ru{3>yiRS=`9-VDQS zCwWf$VIIHt&x?sFb8Yam7HPjp3+7^)pQdjE<k>$7FB4@1s)jJ7~mi zx~eCaf_hPkx$ak&{^3Ln!;tzfI4Ho@-N5_PDf;0U#3M)`U=w6QNXQ+!e$8q!)RsUSO zX@E<9@NzI;E($ZiX~OaJ*)C?DOV=%-U><6bmb2+bJMDEe-G;CULkdp`W`c;?<%8{6$QR zTpw;84V*u}BpHaGvs@3uwsk-H(d>22rz2d@`AQXFC^59ATCX5@V8mW-OFd}Hjm^L{Wux8rMiD`Q>d!)hN7u( zrH(Gs*h>p-Ey&5(5>RI)o>7=wQlNi-R;jLLiyLxGu=f1?V*8hEoZ;;qGr~ZLo8zJ) zPn!*Bb&E4zy;@mXO0?n^5&|FEbub0=-M~Q{OxV5g?}0ZBG>?3>R8GIcFUm+X32=IB zge2qQ5CB$K6Xg*Q5b&K@(9GZqf-1`PDwwq4UO%J#POY`;-96q|UBQ)IjQUiU?HO8o z{19&)V*_uhF@5+Y z?}>E=9SK{NN+Ag_sZJ!J(!qY^aUb&kx!-;wT%JDd{PHCc1jRN;In_F-p#U8sDWVAl zGcaSg-I9-NvV54cR`#C0eEU9@G9L328Lhl;dDk@N-4Zhj4m&*Cv$Jy7t1RqMj^peI zu3htGo9N4Q)G!`(M;U%QJgeT=JL<3SRPt)v#X$dYlzf@M!-*uWg6ln!B+J@ZMD*6f zuf>u`ND*tTMA9dL&Ml|m;N1Wv9v#T=y1zsF02lXi||kp5a6JR*F^Crn}Plxc>w=S~!TSod|~KNC!94 zWetT+q%9H2pP4WZ$Z8$|00Pn;dvSJL1X6yMn>XKq2-G|FK_sfJL!PBs!)EzKSB#q0 zb(R9#{aI&rDia7l}`okxnS z*3DrHAEU3C*H^r#$h2JgFj|Lx@PDZ!dhtH!~u`DM{gIPdFzc`|Eii{gFRL>z|Q7G##;~)cl1zWC%l3llJ|Xf!gQw zWd>uJlgZ2Raj3XQykg3Zdf^6S|HexVBUfwW^8$_ZJ8^4WEQNwzPS_z6p=8J96jyCA#!9x{{$WZy5URpwH?b)Jo%( z8GMX33EFE zy;bZf`XY5BQp~q1pZk_`Pudggi=&VS-jM;=1M?9xSWi>OicRwEe|{&eFdNti$;Z*g zSGKeW>Tg-$nZou}7W@NN^R2;3_ZFw^I~Bbjt82k%8y|3(1r*l*E-HQW#uu~1YNl$8UJ8az8A8uYn@NnXr1{7_UIfY5-Sjcmveg=VEPAb8 zekiV*4&4k_F;_=tb&D}2QUb57Y_TSN!)sS3efC!_qT9H$3&K5WE}b*S=9K5; z=l16BrC=ZDkLY#by`(ps7uw}vAZq*b$?*wYGi$2ck5}MLEj6q_5`eNlfzJD%;0-Kb zu0W&E(A0E*I(tb;Ns>1*`c|AT`RO}ecX+|onIPqOQ)IR>5G z<`yfx38(v3RGehEExVVf+P>PPU$0Sq3}BD?8D&8KEm^N`9U)r1$=Me${FR_c;J3IRIX6o(47D&_y&HeT;06f+WbdXdoBT{<$OAYN@{UtbO9#4A;>iZW z;WVY$7}XwUSK{RNrYsy4fxc*5^%$-7IRc?&t(|{&60*;~M$i=FXMD3K?0ymBDzPJc zElxwW3iv+qkC4+-pR(5T?{n+-BYEmo6Zz^|JPEA4TSx!}WMBZmWm{ESSJwr!8&Daj z$Waj2TL%#@J55wKNqtflUYwybGWOi0=hB{CU97i%zO9P}vm3+Ha`nEoCJ1k7X3v=) zWn}DZwQsCe_RV)?f6!d}>TBmrC@uQ=y!L>~(2DX;v(`bc8252L!H2pP0s0CqbyoIh z6bm)n3CFQp2~Ul%ag;0{Cb2o(QM4Wk1sp|!RdYy)!jW*|RRP$B_q6y#zVcNlkQ<)) z>dy9O`11F;-}8DsF6W8&KD}JS3eJr9+)MMW_r6e*nm;!rB9e&T77Ib+L9gB#=IJNg zRyrNjLBu&VYnvJ*86X%H3BRJThk6x_@!Ivm=jHdYV)w05-0NP8dEIiYv*A~nh2uS0 z^C;Hl+!2p^7)#&y9Vj8=+q7 z_g>m#Z`_T+;hxjwAb*TQu-$Ax0`9>(7t%z>ocA2)A3LisXb{&$x|NJ*#4 zOG>Z41brRcpQb&GQdr(jsGY7Z@u=uHgsF;v+w)WRs$pj)_MOe4|}uU^prZE$<$ zcw$!(%-TER?2@r zZ|5>;btf*?E6w;~foW6GPntzKG^K<&e=9;lpMV7>?p1EX8z1`(lIOG8VGG%nM zT$u>W``82otKfTQC&N{GLD`NxW`GSC!pI!ZIv@+v0CDM){O3Nd#(8Wyk1T&LJ(vzJ zaOXxd#1Pzy-`a4;I5f?%aowoBMq4VYH^zk#w1&Ah=q%1a!%S1zV`|g!1!pYdFHUzd zZ-{)~d?AIZ_sd&hJo~dSt%}W>#eph?WieK)i^M;`8iT^;v3(D00BRssF9DVfu*tTk z>+zVGnfsc8|B{ra^P{?POH0#(j~krrNGv2iNgnpV=;n#-89B^;v_R)OShk)O(H|1u zTJW&{#3_G_mq^i8N9or@w>{80mYb`ad-D5;?Lqo*Z>r3ie$3JN`4C4^Y|N7Ne#+58 z!^pS$eoW5bn`mH?p2L-Qe5bSErjUb?3soONZVzmQx~GZWmqT|NS7g-R_wp z`a(*_b>vPPN_?e1-W{FQxsYEN!JH{BCFo(^>AZ)t(@WNN@N@(ZwNt@-b5y(Rc|TU6 zjBMG2z~52(#}VTl(g)Jwh2b*SF_SaXc*3}msVlgn-s!PG2H!CY*a9=CO2z!y(jcW& z{may=9X+VIA^0hQN>orA(b8o}fRqMgZ*1mxOIGeh6ue*wr=?e_V9YKSOpY>|d3yLt zQ*RUkXaKG*|3)!@EXAbQxs>AvljMxFzR_oPr*1Q>Uj?6?`tsitHkJxv-I6zHZh>UC;J8vdt#@jf>OL>A%rCR+~aQ5VwLLB1P(=W%$k6%1)yzU#zYU8n3{yfyI zWV!9*OhI>#IwKx(=a-Lc)h|nV;lGg8%`o0ItD?C(cW?UKC3K~Me*JeCWrlpiADtFf z>$e?$cU&G_wbC2TmW$%O8ergjojF!3>j1;CHN(FdzFI2;-6g^dyi>|OX8iA zivKL#koW5htr1o>98telesp?wtcYq- zj_C~f&iR>NtCLzoE;5by<)C6OK7}tHGb||tOE0q3Rr~*3FR~^m`nQD9YT5f#T`qFu z+4L6$?fURa!TBfbdK7nK92wN{%=jFb%iQ ze_Pg3W$HEl_nGgI;bJuVsnx&&b+i_48l$loa;iKPASA#LBCD|Rky=fp--qA&8Jm~; zB?A$^9?hPA=Wl*Pny1SS#F;}od0*e|-TO6|TP3329&PjvsDzSIQZ?1pZ530My-yVRg7WOk?)HZxL&CRZLO3OvkZKAy4lo^Qol>~n zv)Djrx~1TQTK)^wmFRMhSVUdq=BWm%g;~GbET?s>vlnZBc-bo(d&<3iwG{StNbD&C zybL%Dxv&x;X+rAhJScnsaRd}g4`6k~+&72;%jdo^Dko5x6VSGK@TYIJAx7gScj(C# zjB1U!=b5Q&JE)_uBR{<;wX}JdAVZO`PnK36xKXB4PI@?pp_F#z^*Lol|Kv|k)g-0K z!PFA{?0Bj|g?j$MdVLLt4O`gDcmN}TKdp0Uh=7?npXtIFU@+k6!ORkW)&XqD`bQIA zOZ3?g09#S(jwTm#T}B6D5Ju9Qug}$qU^xGvLaR@zn)cxX zo&cVXH>#|=$TiNb2IRTT^n54ZgQt_#}Znm`o(J$GPaJ0YT14?#H~mC z{Np3=wGQLmkN3_hW#d5M^8pUS?%p0F*e0Qz>gVrYd+h4zS!CUp1TsK*+z*HnR=iMR zCg*3xy1}?{Yxt&g9nBfm;3xxjjq+kN4Iy z34d=_T4?*cjdN`^vl#4oTJS@;>ZShO4N`1e^4IsVK3$<*jpnaBT!IN-yN=ZY|ZxMFpWS62bxOLL`cm$2{$$eny{QV3k}pBeDEBO_tV3heE^2 z^ARC;9~aNt>%H_s>`u-{Yufa*8RKZ!I`tBMpr17JTe0)leVq2dG`!?%#+Qh{B!xU7 z-ace=YwzW(p4<#O4Zpa^6lylpw*6QsTY1MRM{zIMY$Y9O*vb^J*#M6_pxju2>ZZ(_ z1N2X1(I1G3r)e-0*8hFro2}NVxR@e51Do1S)q;YHj*6%Z!!kWP>ZdMeWwy@tpB6{5 z+v=-x*{lniT#j?cBlO^ep!$*Q{n@r$a;8SG9Dm&N8tR{1p965iP-AmTWz!~bF5f*r z*-%ke&xdpp&=P>hklqaRqeru!Jc*D|i#2jyF8?xYctJN4(X5=MC(QEJM!@1OA0FYX z-$BsbKiS4B=%ulXf3@z7OK&+Xt?O`&1GRw8*UC3|+$f48OQ`rTl}uy@^YUgGd-fxs z$kIytWq=eJDO^O-EP!M6^GiM!fL>3|&IF-?OGqm!3lkSk3hlkU>#;2;peG`ekCg9h z?})6wXgXKmitlW}gV-n8~V?Dq#>d_KAT@!UO_JC_Kq^NUM% zWT9;ob%#FWjc>C{^~MhQr*CC?yz-`Tq*j#CW+iJ~XcT!zw5c7}{*6XHtU5mGe=GOQ zVbknIod#X!M1+9Tda8&-eDzbIjZ4Ae*rgu&$uS1^kpMzh_lhsKxyD~Clvbk5F@GiC zo~r$O{b#(@|GleB8i#wcW!FQfQ&AR+6dF!hc5m;MP&xDMAELC5=Rj6Zv)cdgDOQXj zXNsTx6^+_dnsvS%g40RB^(N0bzjrM@0W$_I#mG^0!W=l0z)sly{rgcNdqJen|Fi%{$Gf{0ASi|; zELqfGvTJB4v9q3Ic-n}_gT;n~a*>cvp;w^2JtF8>5*x) z#pjQ;1$LWWRj=t}{0**M3lZ5R(|$;HYcH(GGuLaVJSd+)hTn6D2z}e&oJ~ zs|F$An=0pp7B4R^myJ=zqu&eh00ji9Q+g7Fu>rbO<#c5-dmSDB#IPT^371_Tn#{lX zTuJLbgK%VSY{7dU?_>KyHcY;K;!n$(tq^yAia&yO=5In>r~wB%gs!2$IZIACoDek> zah|t^ERR8{K@=cY`Tb5@z~6C`6%HM|xk{>!gzYUl%Lbg$1&`^e*}M#}S;Lsc6O&kAUplr%I4K!+d((Kw8)FOKzNWkyI? z0D0eD+z&=QMnyTFliOkOX|I1At*~ql;v27;M?`BmFMhKBO(rT%L#74+?CkyZ$=A69 ziz`{pC0Df);wyhCi@Fy@rf8D&SPK$D>lS{yAx>nF#Pj_hefSL0uNf7>$xh{X3Q=(w zai>?hZu>y_WL0_Z9%YH~mj*&1wY5E$TRu{csZevv*YTCEF?{t^AQGoz z2sX4*==*U{cj>0g8FL2^_VmkRRjO zMKh$rH2oZJN}+1KyExC6+~L$|!+M%4|7i4WyNQgKJ5Mi9_fWLp{4w59x-nLp)HUs4 z?F?=-YP`Kl%s@zYfx8LC*Vh*r3&XM8`2AxlzExmp91nTh3XgUVxCPshm^PT9Gg}IS=sZfP#V;?^v*lK{3s@fD+CDM~00bFuE*k4(J@e5!{r0)np zE%HPIs;1Pj;V?K?PrYH9m4J%@{y$5?(+!x=EmxPm_x1>&w=q#eL}pXKe_ zw{`Ykg2xP~dStP6>oO>dji*0dznFiDW^ozx>d^dIc<7iUEtifJ{@nNAd^V^(lzI@q zsck@RShJM@sTvPegx)i69Q(3liL+v`C^8=Oyg{j}tNQ^3At<>ezkI1ysFs>db#e+6 zRf9@XG3^nF=jUEX${JuqvOhhjnpoN19s~s*m7py?0vHLvg06npjSJ}B%RjXH_(8;Z zeADhnC@asKWg$WpIC_hISbE37x3)<_?%{1nF!49!+_TxJMSD^4PGljbwYNHT#ld6m z8bXrcQf+R0A@5yXN(V_;aNWY`C>nSO7?5WLBs~ZE6lekeG<%AzDnup_s^@xThTKR@ zY0blKWF7_}UQ;trlZCDyZ4(nB%GH}NF{7>tgu)$dIGQ)3(_oz-cesiT7UT}s{z%u` z6IJl6oI(zSAe*G+2O%$7=~p=%bdyjjWR@S+pdn1%|0bwkTkk&zly6c;S%eot#b<$h zIdA&o{qz2Gp7j@A2=2bZVAR z_A&f%&X%ovVO7(HN`(g1thZke$7t=cRIL$vRN!T$g~+E0X)OjhUu`0EsQA8lic2(! zXQcyQ`yvsh25~I4ny(Hz!@21Jb{iPI*fmouVHx z&`DAgl$q%p8~Ul)h!=O=8(Yq*7*=exG#vO7ACO7#w*{|bo(>_0tG=R>` zqdj~D&OJe(Btn@z2!0*LP9D51G1M{Wv;g<_Fk9MR4FIR7d%X-C&_P1Ikhdxkk1;w= z0=6@HVnr`g&dT>U%YUtFx|T_1yyF(6OKS*?uxl%!KAa zV1Rm(H}R|Bh2o|K)WhrlzUGTDM>Nttk?Sfc)1&-1 z4aC$cdY`H`w^gL@m!|j0ZK9C2cP*nXrr#H4!WF#ikKSUkQs->ykUs0bbEqbC7J#di zp2!jQPk9rYabKMukNNxY!P~kA^jJXzy|x&^nH&#^S6h6B_kgFRw&VAHeBh- zoO)GwZEG$198z~_&@*Y@nma|yD z)BAyp{@5qV?pFpUYsla^70|L;9?Q;Mdjb2&oNaQF4U!94`I5 zgQQ4>2#O2Ga9A~gZvkTzaFO(h?VtN)OeYo>os7*t!<-iH5o8=XxXpl!>*c08N zh|n-|*n@usCmh{JZEMBB$1eaPGg7C8K`I}~#H3JWwavRelV zK^UI^Xm!$nfGehS@2_FELcJy)i=PFK2xqfFD&e`Y1f&w8qJqRdqohR9xJ(pmIlTx% z(-v|kwodocOD2E+!3>Kor7fE8xRUfF!$Hn;RFuUSr2L0~M!4E$;ChLyJhm=6Z43QS zQCWzp*2FT@b!-?WhW&}X90VV4XZ`Wq`ki~k#$v}J_-l(wRH->aoHyg5Zg^sa1Xj&|YBa0EP zXE>KZMNb*fzcXOm{S;z`M{_1SM$S3?NxwV-XG75Y;YxeWNPyy-Y#u6JMO{1u@Vjej zYWmEehXTKdh~3mX8z4O@s6m+{I^$*Kcl4u**pi^=m4@uyzJ628AY2STJ_^$wXS8j!iA8!*&COE441^w06n%rqcG#iBsKc{S zxySGHSqdK^r&M>d<3pRI7`fNURu-!Iksk>5E!oq5is>(n?T{B0J|K{RDtNl$JsTLFz&38Vi%~+jh3vPdv z*o$mu(F&;uwL=^zb~zlMKJ9a7{B`{3^MoA&f?%Yi3vi^67CQhR!8K+pNgPJSM59kB z1g-exF|~yx4f)CTS1bI(a{+%hai&s3Jn(8S2~7|b0r?&u9E)En2bn1s+|`Wpt1%ET zjm#rO&_m`;uTYKOd0z6Nl@;`Cu$gc220fiCaAE&htd==NU)DOfNO6i8?~3wgRmN!V z_O5<5(k^~TQ!K)?^_yGa#$W0;?k5@dB32NlswG`R&wN=r!@LMiJ@6Xg_<(G{1bMyf zOqn_pZX_8W&Vry`%KdDU?GE*su3FM>0#r>mLlq|SbvZ36&7VmZZ=O3w*$Z0Um1um5 zzTL0TdNHf&-;p*VoNH*ySiHIMi`+K`xRKb5dH(xLA1`-MU^^8Ec-NLeZ+l4t{)9XBuP5JD2V~edXH@ zBn340YOJQspxugfBXO7*q8z-sK+E#By#Pf(u}OVt3Xraw?u>D=E<8Id@c*-Hy?Kal z?3)I6ZqA=n7r_$*VuaNp7q6QSO3z4ko|1;~gizka(Hc3`6u2L0id+DINoxW9t)LAJ z8Ne-(y)*8C69dUphBgR;^Aq2`)v8$k`(9)Q#x^P6U*3}7QM4#FeAlGyw3$}pTdz2L zD`Mfw?`Cx;DSi5*!TpiT7*$*KF)CGeDr1sI@$ZtRnjcL76r6M~h@P zs@B3cc{*jRwPAG&Vcdu&Xi}yAduwx(lUxNBSEdpwlfM;`osj9^7tyP&d?Nz#7jtQp zEJERL^!##)^hUv51^mhvt=v5}rdVo;re(n7FMi2o2ej?#maFF!{ZSJM3h@rB^}j zPM)%l^~52}Y`mT+>&j*IoN6N^xo~fQjrbV`>PvYg(%ZBn{M5uB83_TLl-FSf|2-7SN>u4#8&jj`IjSJm&| zh{Ro2nth>G;43>?h7rVFq)^kJKo(|uKfuJ#kfKmHQ&CXFA{xKMW@GSi_3v?@7Ib<6#@l z>*;d%?A|QEpOex26*vq)s=YJ;69mXk`NVc;4n5tD# zz$mh{uYtY|79XiAR5IKbFJ7?Ue}4-pDC+5X``J1hoQNPGP2b9HE9fO2rOcj3Yrrgz zb(Y&MRLhyrEi*wkL-SQz!*ysqkU%_!W}na%4LHc02E~Xr=pYEaLm~I@^w+cy#C@Pn zE`${uIf3MZ+l+`%nR&r;kdPf&nI;qCnWk9wr;G0o4qeaP_P2STtSb|aUimd)%!1$? zYI%U^W`n{Wa9Zdky=39zApzP%4AKSARRt8edX8^lggFq=k}-@@cNf^{F$54m*dPN79-gn@Ug1O2Nf&FMV5Mqi9}U zUbZm<9i671pCkgf6$JxTf-qJCIGx@I@#IvLprkW&fAc-%fQ{qoqRodn2buo*#`KVp zI)V!k+U?`==!~cD-rn%Q#Qip;o)=PFl3u%kAhNB70wS~#a+s*3LqH3>JipU@Jx;jI zcd6XAJ;(yu?eD}sR~(mITFFV37waKpxb_kZgIP;`n$o2{RE0Z?nbi7mRn2#l^zy9B z6A*kd=ZD|4Z#zws$;ik+8$W3E&^J0T&Q~s?IS1?&?MGv|u3}-JgwHLhQ-9^usa35gqt&vX&?_u>B>}d@g2jxKfnOeIG z_6HwtLs|Te@WBr%R8ZuZ+wFAie)+0jU~TVU))xe#4%v#o=`AnN7CLgTf`i1i+*hK! zb#MxW34Zh7mWueA3;dyD`Q?d%kM3k^8(vhz2Jrqn;wRVOzOEco-&s2RHlZv|-Tpw^ z*TtQFGV%Ncrd2Iwl$Lf**#$49?Yvx(0E_h>g(STnhS0ERbxSl5H*7g<1~L@9tv8Tc zV#)&w27Y@@Y;h_4M<#K)Lzk56$x~VE#GF)W?-ZG8<%(_ z!QhK1yIZCNN0-`k2oe$j;R-|NZmB`yG*Vbn*!+8`%g9Lzk z9$7#5Jkh8^>jN(v+_2!P8K2$fHp*Y?#s5}GcCPN81c)Q12Qevlqcdka zJ8uvlir4*2J+b*>(xNuW{T6*%)*2P|1t7o#K&eyzSO|cnq(?6dWh@X4Cj?mWMy=B=4Ns0{W z%g&)neUxe|e39(yD=yn21=KT^kFTq~`T3kZ1-DPfp>@IJ^b+3!>bhk{RkqO0_O+C+ zp<^yAl#(kJmR)LB;`d(Ji(cJ`(?%Uhc%6N^jOG}Cy1G#G`Yze<<|_L$ssa}A-QH6F zq)d6#wkBw`btn0zW-&<0z!78xbZF>dl?-!{l#Y%YS=M0EPN@;G@_zHb14naOHWQ=J z%Bchw*{BCfhS+Fcm+RvC?+$L z3c3lg2ngsoBIg`yX?mTllZN&jPI#x;?#tKxLcsNzNt8Hq)a@|l z`$ZMWFUUv{Erig0S1I4ywi*7DAL0zjtN&bQBeYx4X|E3?Fq4h0%+Se+NmBAWGZ*Nt)ALIw;X5(qYt@?{uB-cP*8xYgIQWS8|qF=v9F)*F1FV_nWKgtiL_hLf(AMq zf3BIIo6Cas({8{Vr+AC>_y8n44!W@@E*VYFzko=iMo4H;&r9;cFq=_G;cPq3V>M^! z@e6Vv$5hkEn-?IL>YhCJ&auvehZlh!$=EnJmQZLxn!O=+iR^3!9jw@O^Axk+I76-w zB1t}w6WG1Kqo@dYdT2I$H|`H4z@aT*6W`y@<1BScc-2SMfQD^*+lrSaqs^po~^;G6YFf`|ssc(CEcx zV>EZe9s764<3_j+0zlw1?$W^zzBnrU9oI@Z6E@dknkonIs*nCG{4X-8;6Es zkg_xQ_`-&{bV_6G&D{8vR2xQ1W2b~y_%eT*^eHl;EDrpI_S~Idbkfq$7^IOgf|2#X zWeKU(nNkOWKeAiR(E=2S{Le0_e_s4w$w~=1@-*nX&>7`CZ3L#rp!?-g-oK}^XgTEu zex@+dsjp)c3zDiDidR3KHtdtt{ZVqTr3n2O*WqXh8d+$*7hO`~5cdnhGH(x_r%#_s zN=mww3;yGB683FwZIyxKa7RxMCLSIhR2`zBatCP>JucXX=te=dPTyT9;JiR^^T~(E zbU-P_!al7j=N_xK=x6omX_35|WQm=~g%17S(+)qD5|7@=Okn}LBganm` zT3A056?WlI|HSbon{KeHP zA%p&yO5Yl?2L7i7(9|SAx-4x5(p+P2F!@9)qWiA&SExPKZjIif`C9YrF=G0|^rdH@ zB5Kn=dm35XO zA#ww!utLaUY%~8v?Cj?2$0?ECyu_6roZsY9@3i%&6YCpost*7(L zK14Z3k^>Xe3ZW_B9TO93pnpJI69;DjOesVtT=9A1R7tgCicC3~0Bw^C8iSL}Y420? z_t^5uIX~?u+^}vJQdlH#)>!QjEzTPp7I<5qAxw;o8M(O$pqeNAYPXRHg(UG*_4BPR ziAVamBG?-E`$~#cX>ZX0QZTnQ>G4Ax_fM@w0>>!lXy9UEJAVAkZ?+!hGxTaWhd|>T z%n5NOCZF==$$pYI1jQ2F19>M0lP~{%Dw9?%YzwrZTy!Py=$1erjIruIf6{B)jl|gX z=mdNTFy8l|m-h{Rei9H3+|D#IG3oaVj*O(I>HOqlaUR2sKrlGVL|qt9Xktxz%N}j| z9Xeie!^7MtNIT(iBRcf__@3{J)kf}f4Cws8n0S7?>%|z_H`1DQRLpa2ViY6Y9OW8G zCL1IAO=qdNj2C62?5mTPW}aRW4$mbJk%Zk}7_^x+_o?s&SZSLM_|Jbk^GiNyW$-2X zqc{p3RZR!r)kd)-s_dRF#xwEFs04wOnj~{Jwa~E-M5Nm5|0BH*ekRvAfVpUWuA9JZr#MDrX z`#_3rcSvF`C*jJLsPsTa?voF8OY<({6EXJ?4f7WbYscZSbXBAszm8Y766w%E@el@0 zX|MJu%8Db`QCOJrdecHuQOo2na&`M%5A{f-qfY03S~i8`V$;UTHrP~`-wHIdjoA3P zus_Dvg^E4veIi5)RcrDuxr(0ypZo?s+d#d_!rLzEiuVwX4Gu zHkPAM{~hg9+7mmM!^tF>Z8jv9Gw`E72LwNu^(IcQizc=bU%!3Wc$Z|?s7YJb0-QfY;`i>bqLO@c*~0!T=z%w#ZTTo zvRe!*@wzL4#XsewV>^R`GZ5eT)It3-xj?vbe5$esu?iSqpbTqmC~@D7O^+$BNV{S_ z(3R#ZiRW7cwYpedFJ?~tLDdYxpSyaEyde8SdeFctFJ8_L(o#7==P7tye57hGFlYybYm%5rpa0C8wW+uTr35@(gqO zr3t3;KYyexAW@I{XkiDJ;=a1Ic~#q|Ej`_evp=PVbPItt@v8Q}kDS>ZqjQsmdg8=h zQBl_*NJ&VfewzL=xOePfWPfW_rP&XU!Rcy93^n9!zB+}Bef4#OOLH5Q9nouR`z}-! zMa9E{1COsaIJ+nWO3?YKjB0N2pG|O=<5Sj=qJ1+bd~82y_x#i>(PGe!5QDF3;e%n*_hVTF4+ zYzT|}?^dGO_f17QbH&7)YwNa!9ryfKZMzj`5` zoOcf)YZy$AVN~^h9^lv9tpN^+=Zd3_Nw40 zjD*O@&!&_j#QP*;QtmgFs| zSOlp44tdj*_N$K$jH|qU6KRr_X8GUaC8)4uNHn6Iznsc1|9IWGO7)Iz*mXy326yiz zYL;*lgVO1xGa_l5d;bg;Yn~K0suud6ctlu2Zqc0lwhuTR9sg|H-n5#$zXO5|-aoy2 zPOm7h|NG@*l)kH#Q?Fvh7SfiaJ6mqPPbMbCnLp{3NSIj5``$ra)bJzs7H|50ck;o0 zsaVcH1>W34fl4M$4jQ-K>)1Yp_{2W5ZX2NtGAGeR;f%;{$n^AU=O=#KmU%)1Ux4#X zQbD{g58HfQ9vOI6EXohePqx~lg#7cdnVt&dy}}AV{iJ|x(eW1Fl(SU+>bO_IQj{P> zBWT;5%~ay)Yq@`4!w2MR7;mK$_npkG`*_{zdr_X=uNRD#JPG4zIcmS6L&ZK>6j%Je z-$Gja?wxC~q{bMl8KnNS9wUTGy&hO7ma;W##(pwVN&j6}%=KMO*FMPu3&v!N;}XAH z>VrzhyHnMv){90n{`c)`>Jk_o6)7f5xLuajaBRD?<=*^!YN?-$ zKzx?^LY7J8fFJ$u^;GqJg{~8A;YXoQy5FX_ua#!;S;j1+bf5IljceQ7k9K_85%a%s zT3|PD^Tf9*4H4+DkkuoG=j{Ib0lKjhYn__*LCD^@OL1Q3&86_~2dtfzRcF0-yIgSk)6}AE*!6tFqMVsQmC5uSEQINaYEV;? z-~WEMOO2zqRQD2Q>(X*8Zd2_Zi`n^1t&WjtnAww%-?jlnA@glH|4xwCqK>y}j+_D} zOK&A4>c5~`r^$bIU=8ux#vQ!J7ZX0=ivLczw_*91SA>5;hfMhcU{fL3~LIS(pJY|YZa5PsypFZoLsV6#U{aY~8}0=u_#3s3L?(=Q(V$3^8dZu*esKvRc6236!n_b zXwt7cfzPIFuuI5WE^cFX+@SpLzF!?Zd4KX)))&$C&DJy!dby3(twlu^?_zg7+oL7dq8YV(sqiJiw$x;?CW! zFU1n>U-6c!e?^JHcOB5vDXXxN zJv=0r4QUUA8%2WPf6YwL@u$9dLlh>DA|WA>Tm$56=)&5%vI2MuIQ4w@dg|%9P7RSp zd~5@n)ZWK*7tF(jB3L3E|ym=FUe(q;* z_bv(osWt_*iAJ_06-4y#WfUMHgf7RM&(QfuNWQFWcYlwI#C{S*=74xoyjh8_7x_f= z<3sXJ#sls^Xd}nY!O@P#+k~K?pjdGNymAk}x&I&XzkjwOAbFM#S_>Bsj~=kGd@v*? zNi?RsdWeVK;M$?K)skRDhmNpjkyteJ5bpHuml9e>@uT#jXM``m-EenY{P1dm(ZEb5 z*7LwgH{UHR^@vv9C@xI#$lZ)2ZN}LQF9V{4@~L|!i(82;>~|$YtUQz%#~4@jK@8^4ezn^_wmm5v)zVwI8PN!k! zV;H=hJIe|fL&$jGLe_Yc|XXVXs-SNTbtiR{{LRH;QpA+?^ zUzo(S?Q}o1`WtozevR~qX8G%E#Z9lT72nP<;9m()x$cAzk*qo#a;JAc*D5kRVvXB& zmUh=G?r#Cn5i?3hOwM{d&wg<7U9D`f^IxO(&aB`=%gS!^pQVl3=DG&ve~oefMrDgM z8|lCIZksXJmbP(^$+KdO%7)9F?ses#ZMwfVGX^i*dbFAF+bf+3E=59gVPoeAMGy0{ zJZ<@jotb2y8n7Kt%^a5Ae3_|a>GN0XpX@)hA}?dv z(=huBbGBRoR%9G2==RUt-L<+iv?=MiL#Z8GkMOe@?z9(OyenJ1m9My4R+_%F2!8Qh zls`&vFmv6>IoC@|S9Uu7h`jQX_iwo>zAgK(^*ihD0bWiRO)jRv_g7i;WKM37 z4`|(A#>u#_J+h;|-0XHeEMjyt{9u}MX@>8Rf5*}dd1-85)AAT*zqUD&x`Zf@Bl5y*7R{s4<`)vP{BA977KTVp+DBf@M91}vZC4scw+bvg>Q4x1&F7D=+Ft2P zvq6t%zy9qW&7Dh^>T7OVdq%)V*N`LG&?@qTMDD*Y8=@&}S^JlB0LVu@{iZa2bV1Di7L%4`(l{OlnkO)1Zai+nSXWhTZQJ*Dpox{ z;KsRZdCv>_qtVrw)6|LFi$}n`sp*NI+Lvght?spgF0W0N-c3t5y5s3P-;#%WxGt+l zaXl`5RO0pTn|*AfKPmJ=@t`;L)3Ci$6RQ*XZ!8=r^T)5elif9`0;x>mL~?yb*;N*| z)#N7yg^+uKyo9cM#)>TMB+JbU%Tv=Mz9n(KY+lL0g^QBM&h~20azs)~+ilmeFEklP z==ouk(vAjwOscY5eA&>CzUNcDbjQ%G=p|)5==0>!NItK<;V%pPv@Dmf- z^}S>q^z%YQ{4R!yZ%I^yRJLiSGKC)3^^(p#-t3PqoDEdE)pc}2P&g(Fu3%2f;36Z1 zrnKyK{}fq1*`W0kBC^N}FJT$~c}eOZe>vN(1~1u?dm_BIG6rIoHt43BNx-4-ig85t zIS=?Su&L~Ls4w3%GN*-2*_4R^EYP2^@bJvGi{8;&PD|U3PR-euI;iq$?%#jlBrf>D zc_w0I$X!WRLf5#Snl|?oxi6Ud;juAD1jLqj+z>coW@mTv`SWsdtu!???XE@#g$zs% zQm>oq-ISSL1)He)>C!RAz!f9DgHT{q*3bwYy?*m%r7rG`JGP>Ne*Hd5QPzy8zx+_O zBJZ;4hM5wu3o^!O1tS!_Ish3J`0H2Q-q$oY;;WGxm4uM0!p3bQ!@uYQ&Z#H1=n(7} z>GSqx<>NaQZ!gNp!p9fs=STcqGTYo9o$>G_l)#i#R66_nLjXYn(l;nIHB}MI)yN3X zVofEv5B-t17_A`1)O-5-ZIDRg41o1@TR60)du{llOCS*5u~qBEC2u5y3=_ zA9YRq4lTOvhj?=#E4Z-WqW{}(c-drxp8Gx%Nzp?QRTOWM$nxyjXPxo4bw&iAqOma- zfl6e86&dH9|LkIF`uYCY({Ym`<|0ec4zx4sj!GgCW}0gZ&ClQM>gMK=&>1p&nBUF5 zrYbIWydgT9Wtp9wo%89_LHaZ9Lri5l1fQS&RyDLq_`bO{H8qVW#P0Kxk#OkKs+u0C zn0EZrQ`=)&LFHHzzMH2^=tHs`e3dEyvJiJ%@=pF_3raS~zx(d3 z1xa>Ad;5FkvERNqf#mQuTGE-hxup=zIjE~!G{Rfdn&&1Er7j8<%D&bjfZ@Z?P)o*d z=|0d$V~ZLf`iSu$77XpnqVEPR9Bk~1=-Eg-_k?aK^u#4m&{w*v*BR%KSbRUp$I11F zQJI^=cq^GAh0%79YfIA5{#El2!pB`KbGz=L|1LfCU6(=!;*=s8d2l7Z@ zBooS0oRu*m`*85m)6?tj>+m6clPIFhpeE1C&K~6ZXV8KaK_T%!;J;*sSh`gWb81Qo zS(r6~M9=#E#!Zd*VBi?#1~3PmiMN2gh=IT@*i&S=oFRzgx1!=5p)mN1(uu)7^bonU zskdz3zJ^fM(<8^pySl7#cLG3@M%Vz9wvD)eEJ-5MQ{T`~_+>$XnweSrxw+~7w-|Yd zbEBRC?YJ7yk#p{^iY-}cYHF;}lPz^b_M!YhKMW)5Vnr0nuaAe{0_|}^`~>iOf*Upj z%1H4Og2KXmiJ#gf9BSwY!HpZ=O4|bjCPzXyYFcAP}vI3VRjHVCel%J{JM2q^1;*%1Ocv3GwmHL#;A2 z9|%Z>q0t=(iqf1@?YsoipM^{@U!f;4DXF$@s2I&gvSEbeSE0(LhN(No!beG8e~qwC z;zbfMvt`ScSWzoXm#u(hi!g2*m}l)X^M&D3b9CGSHc_THEgEo?0eHo~VZ)o}@)G^Q zhm*|4$HzOrem!bp-{T4-nyBYm#gyF)%*hW%J?B{CDrkJYzN2xq)R?RQN<@DaMe+BEBKJ(#Zi|p`=KepeINO;O4`Si=g(vF6#Vc= z*Q{Ne0*i6EvKL?EiRpS9E)Y`*KC(CQ>--?-4KH_0{1NugyYh0ejM`^zb~Tg3n1C(= zpOF|4Wnk=}LRkVHY&o`Y+_;K0Fsy`E(E&EzUFY(H4?QzYE zm2kKu?K}4pqbmWrX&<|gi;G=~+kG}8Gdp`VhL97aUAh8+mMa_?8)GvtFks9~#7+wW zNfPV^JBNt*8Zf_dM68oq%jY#h<#y6fVg<0)VANuyQpEgJ`4k#P;YwWq_8X2{*Nfb!Hu%fKM| z91tym1qB7TPirVZ35tkBcJ6Yf!Wp&!Ha!J%eWXEw@LD(~r(>(6I2o-`ASx*@*8s^Y z>zXwiQ0(GrmD{{y2Rmk`*6{N3mb`zjCwZ#P%xkQCQ_8)2!7>WTn8w&Wm&C)(Z8B_j zs_o?#+~ZC_3W6dcBIpEPV%bzd{IO)%UXZP|2LV{E_%wpCEEYzn}e@OLK#{2 zuLR}-AfVlGsex_vYB;rvs8wd$GkyR5op&b7gF+z#l(XxFqSP@ka*4*XCfH}sLsJVB zdhi9K@l!E!7g#X5ZAQIGADi-9(qqil{o99?cqVVqy`FP#ImLvTa!3<0Mt-Zt90J6m zr!bos(eP@jivgCd1P<52XZmjW6dnnP=2CKVKiSRzGkZBErc5!ES4>8TUtFZQxtVkK zne9+&r!+bi-qm|R?Q_GLAn0#us4D5h!*aHHzju0y-k;9Lto<9VT*GIrL>6#@7^a?yxV($D_DY>dW`0mKGGju5V+l7b?{uLKFFS?b=0}Gmx@b zIXZ>{_6#e&f^dfLqWT85)|VcuPZj<_tt)gi?M1uJ?}B#U6?@$Jw8&45-f9S93$kd0 zqkkN5AEaSpEgHK>A} zo^pesRT#y`i#B+VAS!AaOYpZM?otB+_uJF-XTws*K5dtDe7_t-59E^On4BnRvmu_t z-D4i84oc{dl{@F@X@jx1(&@asymRB#QdSNQ@L{w+huire$UReOX90jVd@R;yCA97t zxx{-CKUKqLk!&RA2JXhNtXUHX0uE4tx5xk(77%Q~vOHl3; z17e?2P)1+y%892d=QWFT+kZe&$>Kg6GV0f0TA**6>` zw`&*sYGJLS@6Fj!adDw?o)gJf-N~GjXW(jZ(BO!Qk#|K!M+f0jLO2QtR7y#rV++fa zvQYk%P0Ah~dEl>O0q8?iyTR#c$;Xcd2-0e$t3Q1*OgArR>3LO{1gd6!;sTs1fPqFZ zewirB*CdJA1jF#99d8em{`t048p0>}}r}Zdd@} znTa3A#7`hD?&^)P_-Bq$5z~qo>@<2}9fZ~A=;l#B{f3y{ts^8U%iirW-Ku}UrUs^^c^u`VD z?%0{_nB_`!c6P?(C3~qD%CI0#G5Pvy221|9VB!WWXnuFrV~axb9H)<(IH27*c-<|% z2XDYeIPc#4?8Ikb5MODv4d+k)nHl@s_#U*J_4teDvk}+YyjdNe;R0fpdQcSB1LYod z?V5Yp^NZ_-+iCQc*=kh4c(ay=i2j*&*x;rz3TO4xsDAq5M$k^rWWMVf_LSQ)~tVMunh!O=O`3GdHK1F z+Uc3W$2JI0&-Evq&BTymp_ez_4^R2V-$$u1ez=nI8L|FB0|UFUCbVpv&z^le>DdZ% z9T*%;#!JO`R^U^hClq0!ouL{G-#XXnJ)I_WqSsXhnE(l-15w&C{I~>B(2(bPlnNAK zE8$e>3(T1lv>oCPo0>9UwA;doOq*x60ph?Zb&{vecitPuhL+^y$sc|dUQwY5RNG9{ z&hWjri?3}tgqpy4B$9%#G+^^F%CcSgDdUJ|<8NMBcRJuIRSXT+!oh{%yg<)k^pcH= zGU{@Up>=h-WB`x0%GBrfxnPh~a2M(&AjN+*JGP(9FF`RPwX7aHNI*KL1KOUh3YGL9ybs8uQ$w0lh1n5m`>NRUSTL2X(Vqt8Fj6c_ z%E1EOM@4#wLN9EQ}T->?|EKGcAFtK{tF*Q-P*UQ|hZpU_cuV zpDZOkozcg~rz!ue2z1)`rn9_e2JRnye`h6fg3(HmLNd2M^1{6so7AiE_n$w*zWX2` z0Ir%9V0%IYOMqZ3uiFUHt2hkS7zu_m4KaB{)+C--7BB0L#bV-=c0=H}1W%+6Lv;#r zLFJbPR4z_y+|>ib>+7X%lboaH0jKGVK5VXZ@E|MMg~I&gmtUtpIv7*&Z{AFY$y1g|)ZeNu@U_xlW(`o7NIiI4*UW78jm6k;$O*(sI$jyo z^JmHuyP}Tqcbk`90<3aov-Bu&3>j-^tVFy#3KkOix^8gDti_pOy!Mr~`*4w}s=E%^ zT}EI>6nXP)^!kj=EoN7-hB$qnTQFrG`Rrg--GJ8 SU3=~m_@kkwt(u{1>Hi-Qv*+_#d+*2n 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 Date: Fri, 29 Oct 2021 04:32:20 +0200 Subject: [PATCH 09/16] fill abstract and update motivation --- EIPS/eip-time_aware_basefee.md | 43 ++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index 37fad14b6f9421..b915b99a411fcd 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -11,26 +11,33 @@ created: 2021-10-28 --- ## Abstract -Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does. +This EIP proposes to modify the base fee calculation to take block times into account and target a stable throughput per time instead of per block. Its aim is to keep changes to the calculation to a minimum, only introducing a variable block gas target proportional to the block time. The EIP can in principle be applied to either a proof of work or a proof of stake chain, however the security implications for the proof of work case remain unexplored. ## Motivation -- current EIP-1559 base fee adjustment: based on block gas usage -- in effect, control loop that targets stable throughput per block -- not ideal under PoW under two aspects: - - block time variability: - - block gas usage tries to measure demand at current base fee level, but gas usage is proportional to block time, introducing noise to the used signal - - block time variability => "incorrect" demand signals => "incorrect" base fee adjustments => increased base fee volatility - - reduced throughput during consensus issues: - - if chain forks, block times go up for a while, before difficulty is adjusted - - gas limit elasticity would give us the capability to compensate for this throughput reduction to some extent -- also not ideal under PoS: - - missed slots: - - while general block times become regular, occasionally slots are missed, doubling the block time for the next block (or more, if that slot is also missed) - - missed slots still send incorrect signal (demand looks 2x as high as it is), leading to base fee spikes after missed slots - - incentive to attack network via block proposer DOS, as each missed slot directly reduces network throughput - - consensus issues: - - worse than under PoW, as longer time for self-healing (several weeks for inactivity leaks as opposed to several hours for difficulty adjustments) - - gas limit elasticity would again give us the capability to compensate for this throughput reduction to some extent + +The current base fee calculation uses the gas usage of a block as the signal to determine whether current demand for block space is too high (base fee should be lowered) or too high (base fee should be increased). This choice of signal is however flawed, as it does not take the block time into account. Generally speaking, a 20s block can be expected to be twice as full as a 10s block at the same demand level, and using the same gas target for both is accordingly incorrect. In practice, there are several undesirable consequences of this flawed signal: + +### Base Fee Volatility under Proof of Work + +Under proof of work (PoW), block times are stochastic, and for that reason there exists a large general block time variability. This variability contributes to the base fee volatility, where the base fee can be expected to oscillate around the equilibrium value even under perfectly stable demand. + +### Missed Slots + +Under proof of stake (PoS), block times are generally uniform (always 12s), but missed slots lead to individual blocks with increased block time (24s, 36s, ...). Under the current update rule, such missed slots will therefore result in perceived demand spikes and thus to small unwarranted base fee spikes. + +More importantly, these missed slots direcly reduce the overall throughput of the execution chain by one full block (full here meaning gas target). While the immediately following block can be expected to include the "delayed" transactions of the missed slot, the resulting base fee spike then results in subsequent under-full blocks, so that in the end the block space of the missed block is lost for the chain. + +This is particularly problematic, as it makes denial of service (DOS) attacks on block proposers a straight forward way of compromising overall chain performance. + +### Throughput Degradation During Consensus Issues + +A more severe version of individual missed slots can be caused by consensus issues that prevent a significant portion of block proposers from continuing to create blocks. This can be due to block proposers forking off (and creating blocks on their own fork), being unable to keep up with the current chain head for another reason, or simply being unable to create valid blocks. + +In all these situations, average block times go up significantly, causing chain throughput to fall by the same fraction. While this effect is already present under PoW, the self-healing mechanism of difficulty adjustments is relatively quick to kick in and restore normal block times. Under PoS on the other hand, the automatic self-healing mechanism can be extremely slow, with potentially up to a third of missed slots for several months, or several weeks of more than a third of missed slots. + +For all those reasons it would be desirable to target a stable throughput per time instead of per block, by taking block time into account during the base fee calculation. + +To maximize the chance of this EIP being included in the merge fork, the adjustments are kept to a minimum, with more involved changes discussed in the rationale section. ## Specification Using the pseudocode language of [EIP-1559](/EIPS/eip-1559.md), the updated base fee calculation becomes: From d4ca085a661985333ac48dfd940ddae373c23bf5 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 04:50:40 +0200 Subject: [PATCH 10/16] fill security considerations --- EIPS/eip-time_aware_basefee.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index b915b99a411fcd..969b5778b64b63 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -102,7 +102,8 @@ class World(ABC): - slightly more involved change to include efficient deterministic exponentiation ## Backwards Compatibility -- only small adjustments to existing base fee calculation tooling + +The EIP has minimal impact on backwards compatibility, only requiring updates to existing base fee calculation tooling. ## Test Cases tbd @@ -111,8 +112,19 @@ tbd tbd ## Security Considerations -- timestamp manipulation -- easier to suppress base fee increase => higher miner collaboration incentive + +### Timestamp Manipulation + +Under PoW, miners are in control over the timestamp field of their blocks. While there are some enforced limits to valid timestamps, implications regarding potential timestamp manipulation are nontrivial and remain unexplored for this EIP. + +Under PoS, each slot has a [fixed assigned timestamp](https://github.com/ethereum/consensus-specs/blob/v1.1.3/specs/merge/beacon-chain.md#process_execution_payload), rendering any timestamp manipulation by block proposers impossible. + +### Suppressing Base Fee Increases +As discussed in the rationale, a high value for `MAX_GAS_TARGET_PERCENT` during times of many offline block proposers results in a small remaining signal space for genuine demand increases that should result in base fee increases. This in turn decreases the cost for block proposers for suppresing these base fee increases, instead forcing the fallback to a first-price priority fee auction. + +While the arguments of incentive incompatibility for base fee suppression of the the base EIP-1559 case still apply here, with a decreasing cost of this individually irrational behavior the risk for overriding psychological factors becomes more significant. + +Even in such a case the system degradation would however be graceful, as it would only temporarily suspend the base fee burn. As soon as the missing block proposers would come back online, the system would return to its ordinary EIP-1559 equilibrium. ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). From 472017c7ee88b35312918ee0dca9dda1c6e0916d Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 05:52:30 +0200 Subject: [PATCH 11/16] fill rationale --- EIPS/eip-time_aware_basefee.md | 54 +++++++++++++----- assets/eip-time_aware_basefee/new_formula.png | Bin 0 -> 39114 bytes assets/eip-time_aware_basefee/old_formula.png | Bin 0 -> 38721 bytes 3 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 assets/eip-time_aware_basefee/new_formula.png create mode 100644 assets/eip-time_aware_basefee/old_formula.png diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index 969b5778b64b63..4b274115f9c263 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -78,28 +78,56 @@ class World(ABC): ## Rationale -### Design Choices +### Mechanism -- include block time in base fee adjustment: make "block gas target" proportional to block time -- results in control loop that targets stable throughput per time -- addresses problems listed above: - - reduces / removes base fee volatility inroduced by PoW block time variability - - reduces / removes base fee volatility inroduced by PoS missed slots - - reduces incentive to DOS block proposers - - reduces / removes impact of chain forks on throughput -- drawback: during demand spikes under PoS, missed slots can delay base fee increase +The proposed new base fee calculation only adjusts the block gas target by scaling it with the block time, capped at a maximum percent of the overall block gas limit: + +#### Current Base Fee Calculation + +![](../assets/eip-time_aware_basefee/old_formula.png) + +#### Proposed Base Fee Calculation + +![](../assets/eip-time_aware_basefee/new_formula.png) + +This new calculation thus targets a stable throughput per time instead of per block. + +### Limitations + +Under PoS, block time increases always come in multiples of full blocks (e.g. a single missed slot = 24s instead of 12s block time). This would already require a doubling of the block gas target even for a single missed slot. However, with the block elasticity currently set to 2, this target would be equal to the block gas limit, and thus is reduced slightly, according to the `MAX_GAS_TARGET_PERCENT` parameter. The reason for the existence of this parameter is twofold: + +- Ensure that the signal remains meaningful: A target equal to or greater than the gas limit could never be reached, so the base fee would always be reduced after a missed slot. +- Ensure that the base fee can still react to genuine demand increases: During times of many offline block proposers (and thus many missed slots), genuine demand increases still need a way to eventually result in a base fee increase, to avoid a fallback to a first-price priority fee auction. + +However, this means that even a single missed slot cannot be fully compensated. Even worse, any second or further sequential missed slot cannot be compensated at all, as the gas target is already at its max. This effect becomes more pronounced as the share of offline validators increases: ![](../assets/eip-time_aware_basefee/degradation.png) -### Future Changes +As can be observed, while this EIP does indeed increase the robustness of the network throughput in cases of offline validators, it does so imperfectly. Furthermore, there is a tradeoff effected by the `MAX_GAS_TARGET_PERCENT` parameter, with a higher value resulting in a higher network robustness, but a more impaired base fee adjustment mechanism during times of frequent missed slots. + +### Possible Extensions + +These limitations directly result from the design goal of a minimal change, to maximize chances of being included in the merge. There are natural ways of extending the EIP design to more effectively handle offline validators, at the expense of somewhat more extensive changes: + +#### Persistent Multi-Slot Buffer + +To be able to compensate multiple consecutive missed slots, a gas buffer could be introduced, that would allow the gas beyond the block elasticity to be carried forward to future blocks. To avoid long-run buffer accumulation that would delay a return to normal operations once block proposers are back online, a cap on the buffer would be added. Even for a relatively small buffer cap, the throughput robustness is significantly improved: ![](../assets/eip-time_aware_basefee/degradation_buffers.png) + +With an elasticity still at 2, there is no way of avoiding the eventual breakdown for more than 50% offline block proposers. + +The main implementation complexity for this approach comes from the introduction of the buffer as a new persistent field. To retain the ability for calculating base fees only based on headers, it would have to be added to the block header. + +#### Increased Block Elasticity + +In addition to the introduction of a buffer, increasing the block elasticity is another tool for increasing throughput robustness. The following diagram shows the effect of different elasticity levels, both in the presence and absence of a persistent buffer: + ![](../assets/eip-time_aware_basefee/degradation_elasticity.png) +Again, a clear positive effect can be observed. -- exponential base fee update - - more elegant properties - - slightly more involved change to include efficient deterministic exponentiation +The main additional complexity here would come from the increased peak load (networking, compute & disk access) of multiple sequential overfull blocks. Note though that PoS with its minimum block time of 12s significantly reduces worst case peak stress as compared to PoW. ## Backwards Compatibility diff --git a/assets/eip-time_aware_basefee/new_formula.png b/assets/eip-time_aware_basefee/new_formula.png new file mode 100644 index 0000000000000000000000000000000000000000..46934d36ce57363c3df1dee31c617abd607826dc GIT binary patch literal 39114 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

uIbvJ`O?os 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 literal 0 HcmV?d00001 From 0843d4079ec2ab942a1a79d61553de893e5fc13f Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 14:57:49 +0200 Subject: [PATCH 12/16] Apply suggestions from code review Co-authored-by: Sam Wilson <57262657+SamWilsn@users.noreply.github.com> Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com> --- EIPS/eip-time_aware_basefee.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-time_aware_basefee.md index 4b274115f9c263..17b3a64c550ec9 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-time_aware_basefee.md @@ -11,31 +11,31 @@ created: 2021-10-28 --- ## Abstract -This EIP proposes to modify the base fee calculation to take block times into account and target a stable throughput per time instead of per block. Its aim is to keep changes to the calculation to a minimum, only introducing a variable block gas target proportional to the block time. The EIP can in principle be applied to either a proof of work or a proof of stake chain, however the security implications for the proof of work case remain unexplored. +This EIP proposes accounting for time between blocks in the base fee calculation to target a stable throughput by time, instead of by block. Aiming to minimize changes to the calculation, it only introduces a variable block gas target proportional to the block time. The EIP can, in principle, be applied to either a Proof-of-Work or a Proof-of-Stake chain, however the security implications for the proof of work case remain unexplored. ## Motivation -The current base fee calculation uses the gas usage of a block as the signal to determine whether current demand for block space is too high (base fee should be lowered) or too high (base fee should be increased). This choice of signal is however flawed, as it does not take the block time into account. Generally speaking, a 20s block can be expected to be twice as full as a 10s block at the same demand level, and using the same gas target for both is accordingly incorrect. In practice, there are several undesirable consequences of this flawed signal: +The current base fee calculation chooses the gas usage of a block as the signal to determine whether demand for block space is too low (indicating that the base fee should be lowered) or too high (indicating that the base fee should be increased). While simple, this choice of signal has drawbacks: it does not take the block time into account. Assuming a relatively constant demand, a proposer constructing a block after 20 seconds will have transactions available with twice the gas of a proposer constructing a block after 10 seconds. Using the same gas target for both is accordingly sub-optimal. In practice, there are several undesirable consequences of this flawed signal: -### Base Fee Volatility under Proof of Work +### Base Fee Volatility Under Proof of Work -Under proof of work (PoW), block times are stochastic, and for that reason there exists a large general block time variability. This variability contributes to the base fee volatility, where the base fee can be expected to oscillate around the equilibrium value even under perfectly stable demand. +Under proof of work (PoW), block times are stochastic, and for that reason there exists large block time variability. This variability contributes to the base fee volatility, where the base fee can be expected to oscillate around the equilibrium value even under perfectly stable demand. ### Missed Slots -Under proof of stake (PoS), block times are generally uniform (always 12s), but missed slots lead to individual blocks with increased block time (24s, 36s, ...). Under the current update rule, such missed slots will therefore result in perceived demand spikes and thus to small unwarranted base fee spikes. +Under proof of stake (PoS), block times are ideally uniform (always 12s), but missed slots lead to individual blocks with increased block time (24s, 36s, ...). Such missed slots will result in the next block being overfull, and with the current update rule, signal a fake demand spike and thus cause a small unwarranted base fee spike. -More importantly, these missed slots direcly reduce the overall throughput of the execution chain by one full block (full here meaning gas target). While the immediately following block can be expected to include the "delayed" transactions of the missed slot, the resulting base fee spike then results in subsequent under-full blocks, so that in the end the block space of the missed block is lost for the chain. +More importantly, these missed slots directly reduce the overall throughput of the execution chain by the gas target of one block. While the next block can be expected to include the "delayed" transactions of the missed slot, the resulting base fee spike then results in some number of under-full blocks. In the end the block space of the missed slot is lost for the chain. -This is particularly problematic, as it makes denial of service (DOS) attacks on block proposers a straight forward way of compromising overall chain performance. +This is particularly problematic because a Denial-of-Service (DoS) attack on block proposers can cause them to miss slots, and compromises the overall chain performance. ### Throughput Degradation During Consensus Issues A more severe version of individual missed slots can be caused by consensus issues that prevent a significant portion of block proposers from continuing to create blocks. This can be due to block proposers forking off (and creating blocks on their own fork), being unable to keep up with the current chain head for another reason, or simply being unable to create valid blocks. -In all these situations, average block times go up significantly, causing chain throughput to fall by the same fraction. While this effect is already present under PoW, the self-healing mechanism of difficulty adjustments is relatively quick to kick in and restore normal block times. Under PoS on the other hand, the automatic self-healing mechanism can be extremely slow, with potentially up to a third of missed slots for several months, or several weeks of more than a third of missed slots. +In all these situations, average block times go up significantly, causing chain throughput to fall by the same fraction. While this effect is already present under PoW, the self-healing mechanism of difficulty adjustments is relatively quick to kick in and restore normal block times. On the other hand, under PoS the automatic self-healing mechanism can be extremely slow: potentially several months to return to normal with up to a third of slots missed, or several weeks if more than a third of slots are missed. -For all those reasons it would be desirable to target a stable throughput per time instead of per block, by taking block time into account during the base fee calculation. +For all these reasons, it would be desirable to target a stable throughput per time instead of per block, by taking block time into account during the base fee calculation. To maximize the chance of this EIP being included in the merge fork, the adjustments are kept to a minimum, with more involved changes discussed in the rationale section. @@ -94,12 +94,12 @@ This new calculation thus targets a stable throughput per time instead of per bl ### Limitations -Under PoS, block time increases always come in multiples of full blocks (e.g. a single missed slot = 24s instead of 12s block time). This would already require a doubling of the block gas target even for a single missed slot. However, with the block elasticity currently set to 2, this target would be equal to the block gas limit, and thus is reduced slightly, according to the `MAX_GAS_TARGET_PERCENT` parameter. The reason for the existence of this parameter is twofold: +Under PoS, block time increases always come in multiples of full blocks (e.g. a single missed slot = 24s instead of 12s block time). Accounting for this already requires doubling the block gas target, even for a single missed slot. However, with the block elasticity currently set to 2, this target would be equal to the block gas limit. Having the new target equal to the block gas limit is less than ideal, and thus is reduced slightly, according to the `MAX_GAS_TARGET_PERCENT` parameter. The reason for the existence of this parameter is twofold: - Ensure that the signal remains meaningful: A target equal to or greater than the gas limit could never be reached, so the base fee would always be reduced after a missed slot. - Ensure that the base fee can still react to genuine demand increases: During times of many offline block proposers (and thus many missed slots), genuine demand increases still need a way to eventually result in a base fee increase, to avoid a fallback to a first-price priority fee auction. -However, this means that even a single missed slot cannot be fully compensated. Even worse, any second or further sequential missed slot cannot be compensated at all, as the gas target is already at its max. This effect becomes more pronounced as the share of offline validators increases: +However, this means that even a single missed slot cannot be fully compensated. Even worse, any second or further sequential missed slot cannot be compensated for at all, as the gas target is already at its max. This effect becomes more pronounced as the share of offline validators increases: ![](../assets/eip-time_aware_basefee/degradation.png) From 65ebbb34725285b0daf03974ae9d943a8671c584 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 15:08:59 +0200 Subject: [PATCH 13/16] rename files using EIP number --- ...{eip-time_aware_basefee.md => eip-4396.md} | 22 +++++++++--------- .../degradation.png | Bin .../degradation_buffers.png | Bin .../degradation_elasticity.png | Bin .../new_formula.png | Bin .../old_formula.png | Bin 6 files changed, 11 insertions(+), 11 deletions(-) rename EIPS/{eip-time_aware_basefee.md => eip-4396.md} (94%) rename assets/{eip-time_aware_basefee => eip-4396}/degradation.png (100%) rename assets/{eip-time_aware_basefee => eip-4396}/degradation_buffers.png (100%) rename assets/{eip-time_aware_basefee => eip-4396}/degradation_elasticity.png (100%) rename assets/{eip-time_aware_basefee => eip-4396}/new_formula.png (100%) rename assets/{eip-time_aware_basefee => eip-4396}/old_formula.png (100%) diff --git a/EIPS/eip-time_aware_basefee.md b/EIPS/eip-4396.md similarity index 94% rename from EIPS/eip-time_aware_basefee.md rename to EIPS/eip-4396.md index 17b3a64c550ec9..ce70946db439e1 100644 --- a/EIPS/eip-time_aware_basefee.md +++ b/EIPS/eip-4396.md @@ -1,5 +1,5 @@ --- -eip: +eip: 4396 title: Time-Aware Base Fee Calculation description: Includes block time in the base fee calculation to target a stable throughput per time instead of per block. author: Ansgar Dietrichs (@adietrichs) @@ -11,21 +11,21 @@ created: 2021-10-28 --- ## Abstract -This EIP proposes accounting for time between blocks in the base fee calculation to target a stable throughput by time, instead of by block. Aiming to minimize changes to the calculation, it only introduces a variable block gas target proportional to the block time. The EIP can, in principle, be applied to either a Proof-of-Work or a Proof-of-Stake chain, however the security implications for the proof of work case remain unexplored. +This EIP proposes accounting for time between blocks in the base fee calculation to target a stable throughput by time, instead of by block. Aiming to minimize changes to the calculation, it only introduces a variable block gas target proportional to the block time. The EIP can, in principle, be applied to either a Proof-of-Work or a Proof-of-Stake chain, however the security implications for the Proof-of-Work case remain unexplored. ## Motivation The current base fee calculation chooses the gas usage of a block as the signal to determine whether demand for block space is too low (indicating that the base fee should be lowered) or too high (indicating that the base fee should be increased). While simple, this choice of signal has drawbacks: it does not take the block time into account. Assuming a relatively constant demand, a proposer constructing a block after 20 seconds will have transactions available with twice the gas of a proposer constructing a block after 10 seconds. Using the same gas target for both is accordingly sub-optimal. In practice, there are several undesirable consequences of this flawed signal: -### Base Fee Volatility Under Proof of Work +### Base Fee Volatility Under Proof-of-Work -Under proof of work (PoW), block times are stochastic, and for that reason there exists large block time variability. This variability contributes to the base fee volatility, where the base fee can be expected to oscillate around the equilibrium value even under perfectly stable demand. +Under Proof-of-Work (PoW), block times are stochastic, and for that reason there exists large block time variability. This variability contributes to the base fee volatility, where the base fee can be expected to oscillate around the equilibrium value even under perfectly stable demand. ### Missed Slots -Under proof of stake (PoS), block times are ideally uniform (always 12s), but missed slots lead to individual blocks with increased block time (24s, 36s, ...). Such missed slots will result in the next block being overfull, and with the current update rule, signal a fake demand spike and thus cause a small unwarranted base fee spike. +Under Proof-of-Stake (PoS), block times are ideally uniform (always 12s), but missed slots lead to individual blocks with increased block time (24s, 36s, ...). Such missed slots will result in the next block being overfull, and with the current update rule, signal a fake demand spike and thus cause a small unwarranted base fee spike. -More importantly, these missed slots directly reduce the overall throughput of the execution chain by the gas target of one block. While the next block can be expected to include the "delayed" transactions of the missed slot, the resulting base fee spike then results in some number of under-full blocks. In the end the block space of the missed slot is lost for the chain. +More importantly, these missed slots directly reduce the overall throughput of the execution chain by the gas target of one block. While the next block can be expected to include the "delayed" transactions of the missed slot, the resulting base fee spike then results in some number of under-full blocks. In the end the block space of the missed slot is lost for the chain. This is particularly problematic because a Denial-of-Service (DoS) attack on block proposers can cause them to miss slots, and compromises the overall chain performance. @@ -84,11 +84,11 @@ The proposed new base fee calculation only adjusts the block gas target by scali #### Current Base Fee Calculation -![](../assets/eip-time_aware_basefee/old_formula.png) +![](../assets/eip-4396/old_formula.png) #### Proposed Base Fee Calculation -![](../assets/eip-time_aware_basefee/new_formula.png) +![](../assets/eip-4396/new_formula.png) This new calculation thus targets a stable throughput per time instead of per block. @@ -101,7 +101,7 @@ Under PoS, block time increases always come in multiples of full blocks (e.g. a However, this means that even a single missed slot cannot be fully compensated. Even worse, any second or further sequential missed slot cannot be compensated for at all, as the gas target is already at its max. This effect becomes more pronounced as the share of offline validators increases: -![](../assets/eip-time_aware_basefee/degradation.png) +![](../assets/eip-4396/degradation.png) As can be observed, while this EIP does indeed increase the robustness of the network throughput in cases of offline validators, it does so imperfectly. Furthermore, there is a tradeoff effected by the `MAX_GAS_TARGET_PERCENT` parameter, with a higher value resulting in a higher network robustness, but a more impaired base fee adjustment mechanism during times of frequent missed slots. @@ -113,7 +113,7 @@ These limitations directly result from the design goal of a minimal change, to m To be able to compensate multiple consecutive missed slots, a gas buffer could be introduced, that would allow the gas beyond the block elasticity to be carried forward to future blocks. To avoid long-run buffer accumulation that would delay a return to normal operations once block proposers are back online, a cap on the buffer would be added. Even for a relatively small buffer cap, the throughput robustness is significantly improved: -![](../assets/eip-time_aware_basefee/degradation_buffers.png) +![](../assets/eip-4396/degradation_buffers.png) With an elasticity still at 2, there is no way of avoiding the eventual breakdown for more than 50% offline block proposers. @@ -123,7 +123,7 @@ The main implementation complexity for this approach comes from the introduction In addition to the introduction of a buffer, increasing the block elasticity is another tool for increasing throughput robustness. The following diagram shows the effect of different elasticity levels, both in the presence and absence of a persistent buffer: -![](../assets/eip-time_aware_basefee/degradation_elasticity.png) +![](../assets/eip-4396/degradation_elasticity.png) Again, a clear positive effect can be observed. diff --git a/assets/eip-time_aware_basefee/degradation.png b/assets/eip-4396/degradation.png similarity index 100% rename from assets/eip-time_aware_basefee/degradation.png rename to assets/eip-4396/degradation.png diff --git a/assets/eip-time_aware_basefee/degradation_buffers.png b/assets/eip-4396/degradation_buffers.png similarity index 100% rename from assets/eip-time_aware_basefee/degradation_buffers.png rename to assets/eip-4396/degradation_buffers.png diff --git a/assets/eip-time_aware_basefee/degradation_elasticity.png b/assets/eip-4396/degradation_elasticity.png similarity index 100% rename from assets/eip-time_aware_basefee/degradation_elasticity.png rename to assets/eip-4396/degradation_elasticity.png diff --git a/assets/eip-time_aware_basefee/new_formula.png b/assets/eip-4396/new_formula.png similarity index 100% rename from assets/eip-time_aware_basefee/new_formula.png rename to assets/eip-4396/new_formula.png diff --git a/assets/eip-time_aware_basefee/old_formula.png b/assets/eip-4396/old_formula.png similarity index 100% rename from assets/eip-time_aware_basefee/old_formula.png rename to assets/eip-4396/old_formula.png From 1ef159321bba302ddc94480f1477efcfc9199944 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 15:19:47 +0200 Subject: [PATCH 14/16] add eth-magicians link --- EIPS/eip-4396.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-4396.md b/EIPS/eip-4396.md index ce70946db439e1..5a65c0d4479b34 100644 --- a/EIPS/eip-4396.md +++ b/EIPS/eip-4396.md @@ -3,7 +3,7 @@ eip: 4396 title: Time-Aware Base Fee Calculation description: Includes block time in the base fee calculation to target a stable throughput per time instead of per block. author: Ansgar Dietrichs (@adietrichs) -discussions-to: +discussions-to: https://ethereum-magicians.org/t/eip-4396-time-aware-base-fee-calculation/7363 status: Draft type: Standards Track category: Core From 42fab6b8ecb91e191a9513d92cff7d8129fc2ce3 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Fri, 29 Oct 2021 15:21:46 +0200 Subject: [PATCH 15/16] update header description --- EIPS/eip-4396.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-4396.md b/EIPS/eip-4396.md index 5a65c0d4479b34..878c59910cc8b7 100644 --- a/EIPS/eip-4396.md +++ b/EIPS/eip-4396.md @@ -1,7 +1,7 @@ --- eip: 4396 title: Time-Aware Base Fee Calculation -description: Includes block time in the base fee calculation to target a stable throughput per time instead of per block. +description: Accounts for block time in the base fee calculation to target a stable throughput by time instead of by block. author: Ansgar Dietrichs (@adietrichs) discussions-to: https://ethereum-magicians.org/t/eip-4396-time-aware-base-fee-calculation/7363 status: Draft From 186f930697148e0eb2b526d9f16b06bf2e4ae605 Mon Sep 17 00:00:00 2001 From: lightclient <14004106+lightclient@users.noreply.github.com> Date: Fri, 29 Oct 2021 07:46:58 -0600 Subject: [PATCH 16/16] Update EIPS/eip-4396.md --- EIPS/eip-4396.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-4396.md b/EIPS/eip-4396.md index 878c59910cc8b7..1e348947efe3e3 100644 --- a/EIPS/eip-4396.md +++ b/EIPS/eip-4396.md @@ -40,7 +40,7 @@ For all these reasons, it would be desirable to target a stable throughput per t To maximize the chance of this EIP being included in the merge fork, the adjustments are kept to a minimum, with more involved changes discussed in the rationale section. ## Specification -Using the pseudocode language of [EIP-1559](/EIPS/eip-1559.md), the updated base fee calculation becomes: +Using the pseudocode language of [EIP-1559](./eip-1559.md), the updated base fee calculation becomes: ```python ...