Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal for supporting Blake2b #2024

Closed
wants to merge 145 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
230647f
Start new EIP
tjade273 Jun 30, 2016
585958c
Add abstract and specification
tjade273 Jun 30, 2016
ae2a9ef
Add specification and rationale
tjade273 Jul 11, 2016
2fed08b
Add rationale
tjade273 Jul 11, 2016
9044f99
Spelling fixes
tjade273 Jul 11, 2016
57f2504
Remove EIP number until assignment
tjade273 Jul 11, 2016
1649ded
Fix gas calculation
tjade273 Jul 11, 2016
bb26ea7
Remove INSIZE parameter, as it is unnecessary
tjade273 Jul 12, 2016
ebea49b
Start new EIP
tjade273 Jun 30, 2016
9c45bf9
Add abstract and specification
tjade273 Jun 30, 2016
f33bbe1
Add specification and rationale
tjade273 Jul 11, 2016
34f649e
Add rationale
tjade273 Jul 11, 2016
10004d4
Spelling fixes
tjade273 Jul 11, 2016
00da725
Remove EIP number until assignment
tjade273 Jul 11, 2016
8e59a8d
Fix gas calculation
tjade273 Jul 11, 2016
5798cb7
Remove INSIZE parameter, as it is unnecessary
tjade273 Jul 12, 2016
db85771
Expand motivation section, typo fixes
Sep 27, 2017
f4e2fd8
Add implementations in various languages
Oct 3, 2017
2d4ea31
Edit wording
Oct 4, 2017
e8117c6
Merge branch 'blake2b' of https://github.com/arcalinea/EIPs into arca…
tjade273 Oct 4, 2017
0afe99a
Merge branch 'arcalinea-blake2b'
tjade273 Oct 4, 2017
240cabc
Change the citation format in README to point to EIP-1
axic Apr 30, 2019
39f7c3f
Create eip-Funding-eth-1x.md
MadeofTin May 13, 2019
6003de7
Delete eip-Funding-eth-1x.md
MadeofTin May 13, 2019
ef115c1
Created initial File
MadeofTin May 13, 2019
36a7845
Renamed to eip-blake2b.md
MadeofTin May 13, 2019
ef02974
updated authors
MadeofTin May 13, 2019
0d659c3
Updated to Historic EIP Number
MadeofTin May 13, 2019
7354cb4
Number 2024
MadeofTin May 13, 2019
601cc35
Update eip-Blake2b.md
MadeofTin May 13, 2019
46babcb
Rename eip-Blake2b.md to eip-2024.md
MadeofTin May 13, 2019
c260a55
Update eip-2024.md
MadeofTin May 13, 2019
f592757
Update eip-2024.md
MadeofTin May 14, 2019
ebe1d11
Update eip-2024.md
MadeofTin May 14, 2019
719318b
Update eip-2024.md
MadeofTin May 14, 2019
072efb9
Update eip-2024.md
MadeofTin May 14, 2019
e403a10
Update eip-2024.md
MadeofTin May 14, 2019
e774c44
Update and rename eip-2024.md to eip-131.md
MadeofTin May 14, 2019
b4fcd68
Update eip-131.md
MadeofTin May 14, 2019
3671f14
Merge pull request #1 from tjade273/master
MadeofTin May 14, 2019
5e745da
Updated Formatting to current standards
MadeofTin May 14, 2019
9258414
Delete eip-131.md
MadeofTin May 14, 2019
8613c50
Rename eip-9.md to eip-131.md
MadeofTin May 14, 2019
ceaa653
Update eip-131.md
MadeofTin May 14, 2019
5fa430f
Update eip-131.md
MadeofTin May 14, 2019
e79b430
Update eip-131.md
MadeofTin May 14, 2019
285c6f7
Added a Gitter room in the "discussions to" field
MadeofTin May 14, 2019
53dfa16
EIP-2015: Wallet Update Chain Method (#2015)
pedrouid May 14, 2019
90d9ce6
Automatically merged updates to draft EIP(s) 1679 (#2034)
expede May 16, 2019
9ac83ee
Update eip-131.md
MadeofTin May 16, 2019
9d73b0b
updated backwards compatibility
MadeofTin May 16, 2019
9f5008e
Added References and carterpy as an Author
MadeofTin May 16, 2019
0ec6181
Automatically merged updates to draft EIP(s) 663 (#2038)
axic May 17, 2019
b55bd38
Automatically merged updates to draft EIP(s) 1679 (#2043)
AFDudley May 17, 2019
a1ff047
Automatically merged updates to draft EIP(s) 615 (#2044)
expede May 17, 2019
495062d
Added to EIP-1679 for Istanbul
MadeofTin May 17, 2019
9ed4e96
Calldata gas cost reduction (#2028)
bbrandtom May 18, 2019
5e6d488
Automatically merged updates to draft EIP(s) 1155 (#2049)
AC0DEM0NK3Y May 18, 2019
433a6ce
EIP-1965 Method to check if a chainID is valid at a specific block Nu…
wighawag May 19, 2019
af982f1
Run spelling checks on CI (#2040)
axic May 19, 2019
0fb666b
Automatically merged updates to draft EIP(s) 1679, 1965 (#2047)
wighawag May 19, 2019
b1dd057
Automatically merged updates to draft EIP(s) 1679 (#1990)
wighawag May 19, 2019
6f35f9f
Add special requirement for mentioning EVM instructions
axic Mar 8, 2019
c2eca1e
EIP-1710: URL Format for Web3 Browsers (#1710)
May 19, 2019
27b24eb
EIP 1523: Standard for storing insurance policies as extension of ERC…
christoph2806 May 20, 2019
6894462
Automatically merged updates to draft EIP(s) 2028 (#2052)
axic May 20, 2019
fe44e99
EC arithmetics and pairings with runtime definitions (#1962)
shamatar May 20, 2019
9531351
Automatically merged updates to draft EIP(s) 663 (#2056)
axic May 21, 2019
6366821
Mention that the header is also called "front matter" in EIP1 (#2037)
axic May 21, 2019
2015ea3
Add EIP-1474 as a requirement to RPC ERCs
axic May 21, 2019
d428749
Added additional references
MadeofTin May 21, 2019
7c10d58
Fix Wrong Input Length - ERC165 Example (#1640)
May 22, 2019
36d2992
Automatically merged updates to draft EIP(s) 1155 (#2063)
AC0DEM0NK3Y May 22, 2019
0755e0c
Automatically merged updates to draft EIP(s) 1155 (#2064)
AC0DEM0NK3Y May 23, 2019
f417718
State Rent change H placeholder EIP - fixed rent prepayment for all a…
AlexeyAkhunov May 23, 2019
d6dfa55
Fix author fields (#2065)
axic May 23, 2019
ae59591
Sane limits for certain EVM parameters (#1985)
axic May 23, 2019
f993edd
Reduced gas cost for static calls made to precompiles (#2046)
axic May 23, 2019
d2aa4ae
Add draft for ESO (extended state oracle) (#2014)
axic May 23, 2019
5996a13
Update eip-181.md
Arachnid May 23, 2019
4fe5a9a
Update eip-162.md
Arachnid May 23, 2019
ea827e8
State Rent Change A EIP placeholder - State counters contract (#2029)
AlexeyAkhunov May 23, 2019
656aeda
New Opcode to check if a chainID is part of the history of chainIDs (…
wighawag May 23, 2019
cef55f5
Automatically merged updates to draft EIP(s) 1679 (#2055)
wighawag May 23, 2019
d7db470
Copyright 107 (#2068)
wighawag May 23, 2019
ae038c8
Update eip-1679.md
MadeofTin May 24, 2019
dbf67d4
Automatically merged updates to draft EIP(s) 1155 (#2074)
AC0DEM0NK3Y May 24, 2019
e8098d2
State Rent change C draft EIP - Net contract storage size accounting …
AlexeyAkhunov May 24, 2019
fdf8508
State Rent change B placeholder EIP - net transaction counter (#2031)
AlexeyAkhunov May 24, 2019
1f7987f
Stateless Clients: Repricing SLOAD and SSTORE to pay for block proofs…
AlexeyAkhunov May 24, 2019
8b8d2ea
Automatically merged updates to draft EIP(s) 1679 (#2036)
AlexeyAkhunov May 24, 2019
e2f9ace
Automatically merged updates to draft EIP(s) 1930 (#2076)
wighawag May 24, 2019
734934e
Automatically merged updates to draft EIP(s) 1679 (#2042)
axic May 24, 2019
fc56b06
updated authors formating
MadeofTin May 24, 2019
3f181cb
Updated Formating
MadeofTin May 24, 2019
a573835
Automatically merged updates to draft EIP(s) 1418 (#2078)
fulldecent May 24, 2019
9af2a9b
Automatically merged updates to draft EIP(s) 1108 (#2067)
Shadowfiend May 24, 2019
4b676ff
Automatically merged updates to draft EIP(s) 1155 (#2083)
AC0DEM0NK3Y May 25, 2019
9fa08d1
Automatically merged updates to draft EIP(s) 1155 (#2084)
AC0DEM0NK3Y May 25, 2019
69217d8
Automatically merged updates to draft EIP(s) 1155 (#2085)
AC0DEM0NK3Y May 25, 2019
ae0c0d8
Automatically merged updates to draft EIP(s) 1930 (#2086)
wighawag May 25, 2019
9b1c22d
Automatically merged updates to draft EIP(s) 778 (#2087)
fjl May 27, 2019
638b740
Automatically merged updates to draft EIP(s) 1155 (#2088)
AC0DEM0NK3Y May 27, 2019
32b82ef
Automatically merged updates to draft EIP(s) 1155 (#2089)
AC0DEM0NK3Y May 28, 2019
622136a
Last call for ERC-1155 (#2091)
coinfork May 30, 2019
96e8093
add EIP for particle gas costs (#2045)
cdetrio May 30, 2019
186c1db
Clarified Specification
MadeofTin May 31, 2019
9084f86
Spelling
MadeofTin May 31, 2019
5b3345b
Removed metropolis block number from params
MadeofTin May 31, 2019
550fb10
Automatically merged updates to draft EIP(s) 1803 (#2093)
axic Jun 2, 2019
5b60eb6
Automatically merged updates to draft EIP(s) 1803, 663 (#2094)
axic Jun 2, 2019
36f02df
Automatically merged updates to draft EIP(s) 1193 (#2092)
nivida Jun 3, 2019
f1df387
Automatically merged updates to draft EIP(s) 1155 (#2096)
AC0DEM0NK3Y Jun 4, 2019
5a0665c
Automatically merged updates to draft EIP(s) 778 (#2097)
fjl Jun 4, 2019
9a35c0a
Automatically merged updates to draft EIP(s) 1155 (#2101)
AC0DEM0NK3Y Jun 5, 2019
e3c2db1
Automatically merged updates to draft EIP(s) 1261 (#2102)
bitcoinbrisbane Jun 6, 2019
95dfa34
fix typo: "as follows" (#2099)
PeterTheOne Jun 6, 2019
296ba62
EIP-2003 - EVMC modules for implementations of precompiled contracts …
chfast Jun 6, 2019
7b6925e
Automatically merged updates to draft EIP(s) 1261 (#2107)
bitcoinbrisbane Jun 7, 2019
193fdeb
Automatically merged updates to draft EIP(s) 1155 (#2108)
AC0DEM0NK3Y Jun 7, 2019
914c3ba
Automatically merged updates to draft EIP(s) 1155 (#2109)
AC0DEM0NK3Y Jun 7, 2019
4694622
Automatically merged updates to draft EIP(s) 1155 (#2110)
AC0DEM0NK3Y Jun 7, 2019
c873524
Automatically merged updates to draft EIP(s) 2003 (#2112)
chfast Jun 10, 2019
083129d
Automatically merged updates to draft EIP(s) 1155 (#2113)
AC0DEM0NK3Y Jun 12, 2019
9457546
Merge pull request #2058 from axic/rpc-updates
gcolvin Jun 12, 2019
63a04a1
Merge pull request #1968 from axic/eip1-opcodes
gcolvin Jun 12, 2019
4f239f0
Merge pull request #1983 from axic/readme-canonical
gcolvin Jun 12, 2019
d95612c
Automatically merged updates to draft EIP(s) 1155 (#2114)
coinfork Jun 12, 2019
db441bb
Automatically merged updates to draft EIP(s) 1155 (#2116)
AC0DEM0NK3Y Jun 13, 2019
9691bd6
Automatically merged updates to draft EIP(s) 1155 (#2117)
coinfork Jun 13, 2019
4ea97fa
Automatically merged updates to draft EIP(s) 1155 (#2118)
coinfork Jun 13, 2019
39d47ef
Automatically merged updates to draft EIP(s) 1155 (#2120)
AC0DEM0NK3Y Jun 14, 2019
89a8794
Brought issue #152 into the repo as a draft EIP.
mhluongo Jun 16, 2019
843d377
Make the draft EIP consistent with the template
mhluongo Jun 16, 2019
3bcce1d
Break backwards compatibility into its own section
mhluongo Jun 16, 2019
c3f4c68
Added notes about the in-progress implementation
mhluongo Jun 16, 2019
92916e1
Specify EIP-2046 as a requirement
mhluongo Jun 16, 2019
764ff73
Don't use ABI encoding for precompile
mhluongo Jun 20, 2019
15c3352
Add @pdyraga to the EIP authors.
mhluongo Jun 20, 2019
552e602
Remove less relevant EIP rationale
mhluongo Jun 20, 2019
5a29338
Use 0x09 as the precompile address
mhluongo Jun 20, 2019
5d203c4
Choosing an EIP number
mhluongo Jun 21, 2019
ad01be2
Merge branch 'Blake2b' into blake2b-f-precompile
MadeofTin Jun 24, 2019
02568c4
Merge branch 'Blake2b' of https://github.com/madeoftin/EIPs into Blake2b
MadeofTin Jun 24, 2019
487aea3
Added References
MadeofTin Jun 24, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 7 additions & 0 deletions .codespell-whitelist
@@ -0,0 +1,7 @@
uint
ith
mitre
readded
crate
developper
ist
2 changes: 2 additions & 0 deletions .travis-ci.sh
Expand Up @@ -24,4 +24,6 @@ elif [[ $TASK = 'eip-validator' ]]; then

FILES="$(ls EIPS/*.md | egrep "eip-[0-9]+.md")"
bundle exec eip_validator $FILES
elif [[ $TASK = 'codespell' ]]; then
codespell -q4 -I .codespell-whitelist eip-X.md EIPS/
fi
5 changes: 4 additions & 1 deletion .travis.yml
Expand Up @@ -10,7 +10,7 @@ cache:
- bundler
- directories:
- $TRAVIS_BUILD_DIR/tmp/.htmlproofer #https://github.com/gjtorikian/html-proofer/issues/381

- /usr/local/lib/python3.3/dist-packages/pip/

# Assume bundler is being used, therefore
# the `install` step will run `bundle install` by default.
Expand All @@ -29,6 +29,9 @@ matrix:
env: TASK='htmlproofer-external'
- rvm: 2.2.5
env: TASK='eip-validator'
- python: 3.3
env: TASK='codespell'
before_script: "sudo pip install urllib3[secure] && sudo pip install codespell"
allow_failures:
- rvm: 2.2.5
env: TASK='htmlproofer-external'
Expand Down
9 changes: 8 additions & 1 deletion EIPS/eip-1.md
Expand Up @@ -35,6 +35,13 @@ It is highly recommended that a single EIP contain a single key proposal or new

An EIP must meet certain minimum criteria. It must be a clear and complete description of the proposed enhancement. The enhancement must represent a net improvement. The proposed implementation, if applicable, must be solid and must not complicate the protocol unduly.

### Special requirements for Core EIPs

If a **Core** EIP mentions or proposes changes to the EVM (Ethereum Virtual Machine), it should refer to the instructions by their mnemonics and define the opcodes of those mnemonics at least once. A preferred way is the following:
```
REVERT (0xfe)
```

## EIP Work Flow

Parties involved in the process are you, the champion or *EIP author*, the [*EIP editors*](#eip-editors), and the [*Ethereum Core Developers*](https://github.com/ethereum/pm).
Expand Down Expand Up @@ -93,7 +100,7 @@ Image files should be included in a subdirectory of the `assets` folder for that

## EIP Header Preamble

Each EIP must begin with an RFC 822 style header preamble, preceded and followed by three hyphens (`---`). The headers must appear in the following order. Headers marked with "*" are optional and are described below. All other headers are required.
Each EIP must begin with an [RFC 822](https://www.ietf.org/rfc/rfc822.txt) style header preamble, preceded and followed by three hyphens (`---`). This header is also termed ["front matter" by Jekyll](https://jekyllrb.com/docs/front-matter/). The headers must appear in the following order. Headers marked with "*" are optional and are described below. All other headers are required.

` eip:` <EIP number> (this is determined by the EIP editor)

Expand Down
2 changes: 1 addition & 1 deletion EIPS/eip-100.md
@@ -1,7 +1,7 @@
---
eip: 100
title: Change difficulty adjustment to target mean block time including uncles
author: Vitalik Buterin
author: Vitalik Buterin (@vbuterin)
type: Standards Track
category: Core
status: Final
Expand Down
4 changes: 2 additions & 2 deletions EIPS/eip-1011.md
Expand Up @@ -183,7 +183,7 @@ def check_and_finalize_new_checkpoint(new_block):
db.last_finalized_block = finalized_hash
```

The new chain scoring rule queries the casper contract to find the highest justified epoch that meets the client's minimum deposit requirement (`NON_REVERT_MIN_DEPOSITS`). The `10**40` multiplier ensures that the justified epoch takes precendence over block mining difficulty. `total_difficulty` only serves as a tie breaker if the two blocks in question have an equivalent `highest_justified_epoch`.
The new chain scoring rule queries the casper contract to find the highest justified epoch that meets the client's minimum deposit requirement (`NON_REVERT_MIN_DEPOSITS`). The `10**40` multiplier ensures that the justified epoch takes precedence over block mining difficulty. `total_difficulty` only serves as a tie breaker if the two blocks in question have an equivalent `highest_justified_epoch`.

_Note_: If the client has no justified checkpoints, the contract returns `highest_justified_epoch` as `0` essentially reverting the fork choice rule to pure PoW.

Expand Down Expand Up @@ -379,7 +379,7 @@ Any call to this method fails prior to the end of the `WARM_UP_PERIOD`. Thus the
#### Issuance
A fixed amount of 1.25M ETH was chosen as `CASPER_BALANCE` to fund the casper contract. This gives the contract enough runway to operate for approximately 2 years (assuming ~10M ETH in validator deposits). Acting similarly to the "difficulty bomb", this "funding crunch" forces the network to hardfork in the relative near future to further fund the contract. This future hardfork is an opportunity to upgrade the contract and transition to full PoS.

The PoW block reward is reduced from 3.0 to 0.6 ETH/block over the course of approximately one year because the security of the chain is greatly shifted from PoW difficulty to PoS finality and because rewards are now issued to both validators and miners. Rewards are stepped down by 0.6 ETH/block every 3 months (`REWARD_STEPDOWN_BLOCK_COUNT`) to provide for a conservative transition period from full PoW to hybrid PoS/PoW. This gives validators time to become familiar with the new technology and begin logging on and also provides the network with more leeway in case of any unforseen issues. If any major issues do arise, the Ethereum network will still have substantial PoW security to rely upon while decisions are made and/or patches are deployed. See [here](https://gist.github.com/djrtwo/bc864c0d0a275170183803814b207b9a) for further analysis of the current PoW security and of the effect of PoW block reward reduction in the context of Hybrid Casper FFG.
The PoW block reward is reduced from 3.0 to 0.6 ETH/block over the course of approximately one year because the security of the chain is greatly shifted from PoW difficulty to PoS finality and because rewards are now issued to both validators and miners. Rewards are stepped down by 0.6 ETH/block every 3 months (`REWARD_STEPDOWN_BLOCK_COUNT`) to provide for a conservative transition period from full PoW to hybrid PoS/PoW. This gives validators time to become familiar with the new technology and begin logging on and also provides the network with more leeway in case of any unforeseen issues. If any major issues do arise, the Ethereum network will still have substantial PoW security to rely upon while decisions are made and/or patches are deployed. See [here](https://gist.github.com/djrtwo/bc864c0d0a275170183803814b207b9a) for further analysis of the current PoW security and of the effect of PoW block reward reduction in the context of Hybrid Casper FFG.

In addition to block rewards, miners now receive an issuance reward for including successful `vote` transactions into the block on time. This reward is equal to 1/8th that of the reward the validator receives for a successful `vote` transaction. Under optimal FFG conditions after group validator reward adjustments are made, miners receive approximately 1/5th of the total ETH issued by the Casper contract.

Expand Down
8 changes: 4 additions & 4 deletions EIPS/eip-1015.md
Expand Up @@ -12,7 +12,7 @@ created: 2018-04-20

## Simple Summary

This EIP changes the block reward step by instead of setting it to be hard coded on the clients and to be given to the miner/validator etherbase, it should instead go to an address decided by an on-chain contract, with hard limits on how it would be issued (six month lock-in; issuance can only decrease or be mantained, but not increase;). A decision method is suggested but not essential to the notion of this EIP. This would **not be a generic governance solution**, which is a much broader and harder topic, would **not** affect technical upgrade decisions or other hard forks, but seen as *a forum to attempt to prevent contentious hard forks* that can be solved with the issuance.
This EIP changes the block reward step by instead of setting it to be hard coded on the clients and to be given to the miner/validator etherbase, it should instead go to an address decided by an on-chain contract, with hard limits on how it would be issued (six month lock-in; issuance can only decrease or be maintained, but not increase;). A decision method is suggested but not essential to the notion of this EIP. This would **not be a generic governance solution**, which is a much broader and harder topic, would **not** affect technical upgrade decisions or other hard forks, but seen as *a forum to attempt to prevent contentious hard forks* that can be solved with the issuance.

## Summary
### Thesis: many controversial issues boil down to resources
Expand All @@ -24,7 +24,7 @@ Moving to PoS has been on the roadmap since day 0 for ethereum, along with a red

#### Issuance Cap at 120 Million

[EIP 960](https://github.com/ethereum/EIPs/issues/960), Vitalik's not so jokey april's fool has been taken seriously. It proposes the issuance to be slowly reduced until it reaches 120 million ether. One of the main counterpoints by Vlad can be simplified by [we don't know enough to know what that ether can be used for](https://medium.com/@Vlad_Zamfir/against-vitaliks-fixed-supply-eip-eip-960-18e182a7e5bd) and Vitalik's counterpoint is that [reducing emissions can be a way to reduce future abuse of these funds by finding a schelling point at 0](https://medium.com/@VitalikButerin/to-be-clear-im-not-necessarily-wedded-to-a-finite-supply-cap-a7aa48ab880c). Issuance has already been reduced once, from 5 ether to the current 3 ether per block. The main point of a hard cap is that a lot of people consider *not issuing* as having a positive contribution, that can outweight other actions. Burning ether is also a valid issuance decision.
[EIP 960](https://github.com/ethereum/EIPs/issues/960), Vitalik's not so jokey april's fool has been taken seriously. It proposes the issuance to be slowly reduced until it reaches 120 million ether. One of the main counterpoints by Vlad can be simplified by [we don't know enough to know what that ether can be used for](https://medium.com/@Vlad_Zamfir/against-vitaliks-fixed-supply-eip-eip-960-18e182a7e5bd) and Vitalik's counterpoint is that [reducing emissions can be a way to reduce future abuse of these funds by finding a schelling point at 0](https://medium.com/@VitalikButerin/to-be-clear-im-not-necessarily-wedded-to-a-finite-supply-cap-a7aa48ab880c). Issuance has already been reduced once, from 5 ether to the current 3 ether per block. The main point of a hard cap is that a lot of people consider *not issuing* as having a positive contribution, that can outweigh other actions. Burning ether is also a valid issuance decision.

#### Asics and advantadges of PoW

Expand Down Expand Up @@ -52,7 +52,7 @@ It's not meant to be a general governance contract. The contract **should NOT be

##### It cannot only decrease issuance, and once decreased it cannot be increased again

In order to reduce future abuse and uncertainity, **once issuance is reduced, it cannot be increased**. To prevent a single action reducing it to 0, the reduction is limited up to a percentage per time, so if the **decision assembly** is agressively to reduce issuance to zero, it would take a known number of years.
In order to reduce future abuse and uncertainty, **once issuance is reduced, it cannot be increased**. To prevent a single action reducing it to 0, the reduction is limited up to a percentage per time, so if the **decision assembly** is aggressively to reduce issuance to zero, it would take a known number of years.

##### Results are locked for six months

Expand Down Expand Up @@ -109,7 +109,7 @@ A lot of things are suggested in this EIP, so I would like to propose these ques

1. Do we want to have dynamically changing block rewards, instead of having them be hard coded in the protocol?
2. If the answer above is yes, then what would be the best governance process to decide it, and what sorts of limits would we want that governance contract to have?
3. If the answer is a multi-signalling contract, then what sorts of signals would we want, what sort of relative weight should they have and what would be the proccess to add and remove them?
3. If the answer is a multi-signalling contract, then what sorts of signals would we want, what sort of relative weight should they have and what would be the process to add and remove them?



Expand Down
6 changes: 3 additions & 3 deletions EIPS/eip-1057.md
Expand Up @@ -15,7 +15,7 @@ A new Proof-of-Work algorithm to replace Ethash that utilizes almost all parts o

## Abstract

ProgPoW is a proof-of-work algorithm designed to close the efficency gap available to specialized ASICs. It utilizes almost all parts of commodity hardware (GPUs), and comes pre-tuned for the most common hardware utilized in the Ethereum network.
ProgPoW is a proof-of-work algorithm designed to close the efficiency gap available to specialized ASICs. It utilizes almost all parts of commodity hardware (GPUs), and comes pre-tuned for the most common hardware utilized in the Ethereum network.

## Motivation

Expand Down Expand Up @@ -53,7 +53,7 @@ With the growth of large mining pools, the control of hashing power has been del

While the goal of “ASIC resistance” is valuable, the entire concept of “ASIC resistance” is a bit of a fallacy. CPUs and GPUs are themselves ASICs. Any algorithm that can run on a commodity ASIC (a CPU or GPU) by definition can have a customized ASIC created for it with slightly less functionality. Some algorithms are intentionally made to be “ASIC friendly” - where an ASIC implementation is drastically more efficient than the same algorithm running on general purpose hardware. The protection that this offers when the coin is unknown also makes it an attractive target for a dedicate mining ASIC company as soon as it becomes useful.

Therefore, ASIC resistance is: the efficiency difference of specilized hardware versus hardware that has a wider adoption and applicability. A smaller efficiency difference between custom vs general hardware mean higher resistance and a better algorithm. This efficiency difference is the proper metric to use when comparing the quality of PoW algorithms. Efficiency could mean absolute performance, performance per watt, or performance per dollar - they are all highly correlated. If a single entity creates and controls an ASIC that is drastically more efficient, they can gain 51% of the network hashrate and possibly stage an attack.
Therefore, ASIC resistance is: the efficiency difference of specialized hardware versus hardware that has a wider adoption and applicability. A smaller efficiency difference between custom vs general hardware mean higher resistance and a better algorithm. This efficiency difference is the proper metric to use when comparing the quality of PoW algorithms. Efficiency could mean absolute performance, performance per watt, or performance per dollar - they are all highly correlated. If a single entity creates and controls an ASIC that is drastically more efficient, they can gain 51% of the network hashrate and possibly stage an attack.

### Review of Existing PoW Algorithms

Expand Down Expand Up @@ -134,7 +134,7 @@ The random program changes every `PROGPOW_PERIOD` blocks to ensure the hardware

Sample code is written in C++, this should be kept in mind when evaluating the code in the specification.

All numerics are computed using unsinged 32 bit integers. Any overflows are trimmed off before proceeding to the next computation. Languages that use numerics not fixed to bit lenghts (such as Python and JavaScript) or that only use signed integers (such as Java) will need to keep their languages' quirks in mind. The extensive use of 32 bit data values aligns with modern GPUs internal data architectures.
All numerics are computed using unsigned 32 bit integers. Any overflows are trimmed off before proceeding to the next computation. Languages that use numerics not fixed to bit lengths (such as Python and JavaScript) or that only use signed integers (such as Java) will need to keep their languages' quirks in mind. The extensive use of 32 bit data values aligns with modern GPUs internal data architectures.

ProgPoW uses a 32-bit variant of **FNV1a** for merging data. The existing Ethash uses a similar vaiant of FNV1 for merging, but FNV1a provides better distribution properties.

Expand Down