-
Notifications
You must be signed in to change notification settings - Fork 5.3k
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
New Opcode to check if a chainID is part of the history of chainIDs #1959
Conversation
It is typically customary to copy the text of the proposal inside the original GitHub PR note above (which is currently the boilerplate when opening a new PR) |
Thanks @fubuloubu , I updated the note. |
Could this be merged in please @Arachnid @cdetrio @Souptacular @vbuterin @nicksavers @wanderer @gcolvin @axic ? |
While I haven't read all the messages and the entire rationale section, it seems that due to discussions this proposal seems not to be feasible and instead #1965 is preferred? If so, do you still want to merge this one here? |
While I personally believe EIP-1965 is better, I would leave this PR open for a little while as people might have other opinions. |
Can you please rebase or merge in master to have the spelling checker run on this? Also I suggest you add it to 1679 in this PR if you want to propose it for Istanbul. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is missing some of the sections, such as
- Simple Summary
- Test Cases
- Implementation
It is also failing on the spelling checker:
EIPS/eip-1959.md:33: oposite ==> opposite
EIPS/eip-1959.md:37: immediatly ==> immediately
EIPS/eip-1959.md:64: Similary ==> Similarly
EIPS/eip-1959.md:64: separatly ==> separately
I think this is fine according to EIP-1 now. (The specification could be improved later on.) |
* Automatically merged updates to draft EIP(s) 1898 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679, 233 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Minor updates to EIP-1319 (ethereum#1966) * EIP-1895: Support for an Elliptic Curve Cycle (ethereum#1895) * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Scalable Rewards (ethereum#1973) * added EIP * spacing * reorder * reorder * formats * <> brackets * edit * eip number * renaminng * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP-1559: Fee market change for ETH 1.0 chain (ethereum#1943) * Automatically merged updates to draft EIP(s) 1884 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Fix authors and type-fields in eip-1559.md (ethereum#1974) * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1344 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 777 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Remove obsolete layer field (ethereum#1978) * Document eip_validator and eip-automerger (ethereum#1977) * EIP-1803: Rename opcodes for clarity (ethereum#1803) * Change the citation format in README to point to EIP-1 * Automatically merged updates to draft EIP(s) 1679, 1803 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP-1057 Update progpow test-vectors (ethereum#1855) * Add editors * Automatically merged updates to draft EIP(s) 1155 (ethereum#1993) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#1995) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP-1775 - App Keys, application specific wallet accounts (ethereum#1775) * Automatically merged updates to draft EIP(s) 1155 (ethereum#1997) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#1998) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 777 (ethereum#1945) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * ERC777: Move to final (ethereum#1999) * Automatically merged updates to draft EIP(s) 1108 (ethereum#1987) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Fix typos (ethereum#1899) * Fixed typos and grammar (ethereum#1847) * Automatically merged updates to draft EIP(s) 1679 (ethereum#1988) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1344 (ethereum#2004) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1108 (ethereum#2005) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2006) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2007) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2008) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * fix github pull request links (ethereum#2000) * Automatically merged updates to draft EIP(s) 1679 (ethereum#1830) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2011) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2012) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2013) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Re-order EIP categories (ethereum#1989) * Automatically merged updates to draft EIP(s) 1679 (ethereum#2016) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2017) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2023) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Call strict gas (ethereum#1950) * CALL with strict gas * fix date * 1930 * update with explicit code change * add link to discussion * update * fix link * EIP-2015: Wallet Update Chain Method (ethereum#2015) * Create eip-2015.md * Include JSON RPC method in title * add requires 155 * update nativeCurrency field for wallet_updateChain * EIP-2015 format review changes * Update EIP-2015 discussions-to link * Automatically merged updates to draft EIP(s) 1679 (ethereum#2034) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 663 (ethereum#2038) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 (ethereum#2043) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 615 (ethereum#2044) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Calldata gas cost reduction (ethereum#2028) * Calldata gas cost reduction Added a draft of EIP to reduce the gas cost of Calldata * changed name to 2028 * Added EIP-2028 to meta eip-1679 * Added discussion url * edited 'motivation' & 'specification' Edited motivation to increase readability. Edited specification to clarify terms. * Automatically merged updates to draft EIP(s) 1155 (ethereum#2049) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP-1965 Method to check if a chainID is valid at a specific block Number (ethereum#1965) * Run spelling checks on CI (ethereum#2040) * Automatically merged updates to draft EIP(s) 1679, 1965 (ethereum#2047) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 (ethereum#1990) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Add special requirement for mentioning EVM instructions * EIP-1710: URL Format for Web3 Browsers (ethereum#1710) * EIP 1523: Standard for storing insurance policies as extension of ERC-721 token (ethereum#1512) * Automatically merged updates to draft EIP(s) 2028 (ethereum#2052) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EC arithmetics and pairings with runtime definitions (ethereum#1962) * Automatically merged updates to draft EIP(s) 663 (ethereum#2056) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Mention that the header is also called "front matter" in EIP1 (ethereum#2037) * Add EIP-1474 as a requirement to RPC ERCs * Fix Wrong Input Length - ERC165 Example (ethereum#1640) * Wrong input size - noThrowCall ERC165 Input should be 36 bytes (4 signature bytes + 32 bytes parameter) Solidity 5 validates the length of msg.data, reverting on the 32 bytes input, all contracts using the broken 'doesContractImplementInterface' will not be able to read an ERC165 implementation targetting Solidity 5. A legacy-compatible strategy should be defined to make all the "ERC165 readers" sending a 32 bytes sized data compatible with ERC165 contracts compiled targeting this new version of the compiler. A possible solution could be to add a keyword on Solidity to disable the validation of the calldata length. * Add version history section to EIP165 * EIP 1640 -> PR 1640 * Automatically merged updates to draft EIP(s) 1155 (ethereum#2063) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2064) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * State Rent change H placeholder EIP - fixed rent prepayment for all accounts (ethereum#2026) * Fix author fields (ethereum#2065) * Sane limits for certain EVM parameters (ethereum#1985) * sane * some clarifications * remove cruft * some clarifications * propose spec changes * limit the scope to EVM only * more rationale * group affected opcodes by ranges * Rename to EIP-1985 * Add discussion URL to EIP-1985 * Include a reference to EIP106 * Add more rationale * fix typo * Remove unfounded worry * mention timestamp being 64-bit value in Aleth * resolved an TODO item as Rationale entry * Reduced gas cost for static calls made to precompiles (ethereum#2046) * Reduced gas cost for static calls made to precompiles * Rename to EIP-2046 * Add discussion URL * Add 2046 to Istanbul * Fix header * Add draft for ESO (extended state oracle) (ethereum#2014) * Add draft for ESO (extended state oracle) * Add mention of revert to ESO * Add EIP-2014 number and rename file * Add reference to EIP-1959 and EIP-1965 * Add discussions-to URL * Update eip-181.md * Update eip-162.md * State Rent Change A EIP placeholder - State counters contract (ethereum#2029) * Create eip-StateRentACountersContract.md * Update eip-StateRentACountersContract.md * Rename eip-StateRentACountersContract.md to eip-2029.md * Update eip-2029.md * Update eip-2029.md * Fix typos * Make EIP-2014 into a proper link * New Opcode to check if a chainID is part of the history of chainIDs (ethereum#1959) * Automatically merged updates to draft EIP(s) 1679 (ethereum#2055) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Copyright 107 (ethereum#2068) * add copyrights for 107 * use github username * Automatically merged updates to draft EIP(s) 1155 (ethereum#2074) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * State Rent change C draft EIP - Net contract storage size accounting (ethereum#2027) * State Rent change C draft EIP * Update eip-draft_StateRentCnetContractSizes.md * Update eip-draft_StateRentCnetContractSizes.md * Rename eip-draft_StateRentCnetContractSizes.md to eip-2027.md * Update eip-2027.md * Update eip-2027.md * Update eip-2027.md * Quote "block C" properly * Update eip-2027.md * State Rent change B placeholder EIP - net transaction counter (ethereum#2031) * Create eip-draft_StateRentBNetTransactionCounter.md * Update and rename eip-draft_StateRentBNetTransactionCounter.md to eip-2031.md * Update eip-2031.md * Update eip-2031.md * Update eip-2031.md * Fix some typos * Use canonical link to EIP-2029 * Update eip-2031.md * Update eip-2031.md * Stateless Clients: Repricing SLOAD and SSTORE to pay for block proofs (ethereum#2035) * Create eip-draft_StatelessClientGasRepricing.md * Update and rename eip-draft_StatelessClientGasRepricing.md to eip-2035.md * Update eip-2035.md * Update eip-2035.md * Update eip-2035.md * Update eip-2035.md * Update eip-2035.md * Update eip-2035.md * Fix typos * Use canonical links to other EIPs * Update eip-2035.md * Fix link to EIP-2028 * Automatically merged updates to draft EIP(s) 1679 (ethereum#2036) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1930 (ethereum#2076) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1679 (ethereum#2042) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1418 (ethereum#2078) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1108 (ethereum#2067) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2083) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2084) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2085) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1930 (ethereum#2086) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 778 (ethereum#2087) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2088) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2089) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Last call for ERC-1155 (ethereum#2091) * add EIP for particle gas costs (ethereum#2045) * add EIP for fractional gas costs * use EIP number 2045, add references, discussion-to * add EIP-2045 to Istanbul * Formatting * Add ewasm to rationale * Clarify cost reduction examples * Clarify the increase of particles * link to eip-2035, edit for clarity * add reference to eip-2035 * add axic as author * rename title to "particle gas costs", edit ewasm section * fix header * Automatically merged updates to draft EIP(s) 1803 (ethereum#2093) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1803, 663 (ethereum#2094) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1193 (ethereum#2092) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2096) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 778 (ethereum#2097) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2101) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1261 (ethereum#2102) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * fix typo: "as follows" (ethereum#2099) see: https://ell.stackexchange.com/a/31673 * EIP-2003 - EVMC modules for implementations of precompiled contracts (ethereum#2003) * Automatically merged updates to draft EIP(s) 1261 (ethereum#2107) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2108) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2109) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2110) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 2003 (ethereum#2112) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2113) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2114) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2116) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2117) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2118) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1155 (ethereum#2120) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * ERC-1155 Final Status (ethereum#2122) * Automatically merged updates to draft EIP(s) 1344 (ethereum#2079) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Propose to move EIP-695 to last call status (ethereum#1566) * Propose to move EIP-695 to last call status * Add a discussion link * Formatting fix * Fix @sorpaas handle in author field * Use EIP155 formatting for `CHAIN_ID` * Formatting fix for "chain ID" The document had places where we use lowercase "id" and uppercase "ID". This unify them to use uppercase "ID". * Update eip-695.md * Move EIP-695 to Last Call status and add 155 requirement (ethereum#2128) * Update eip-1577.md (ethereum#1670) * Automatically merged updates to draft EIP(s) 1702 (ethereum#2130) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1702 (ethereum#2131) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 695 (ethereum#2133) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1202 (ethereum#2134) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1702 (ethereum#2140) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1702 (ethereum#2141) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Funding ETH1.X through a Developer Block Reward for 18 Months (ethereum#2025) * Automatically merged updates to draft EIP(s) 1702 (ethereum#2149) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP 747: wallet_watchAsset (ethereum#1426) * Initial draft * Add eip-747: watchToken * Update discussion link * Update eip-747 to watchAsset * Add image specification and examples EIP747 * Add asset type error * Respond to feedback * Depends on 1474 * Correct type to standards track * Correct spelling * Add eip images locally (ethereum#2150) * Automatically merged updates to draft EIP(s) 823 (ethereum#2151) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1193 (ethereum#2057) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * ERC-1948: Non-fungible Data Token (ethereum#1948) * first draft * remove boilerplate * fix indentations * typos * ethereum code highlights * moved file to id * syntax * naming * link to erc721 * make interface an interface * typo * better comments * Automatically merged updates to draft EIP(s) 1679, 233 (ethereum#2081) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1702 (ethereum#2152) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Introduced Abandoned status in EIP-1 (ethereum#2051) * Introduced Abandoned status in EIP-1 * Fix typo * EIP-1967: Standard Proxy Storage Slots (ethereum#1967) * Proxy storage slots EIP * Apply suggestions from code review Co-Authored-By: spalladino <[email protected]> * Add reference to vyper storage slots * Fix links to EIPs Co-Authored-By: spalladino <[email protected]> * Apply suggestions from code review Co-Authored-By: spalladino <[email protected]> * Applied suggestions by elopio and nventuro * Add discussions-to * Add EIP number * Rename eip file * Fix type attribute * Use zOS independent hash preimage * Implement suggestion by axic * Automatically merged updates to draft EIP(s) 1474 (ethereum#2155) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1613 (ethereum#2163) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1066 (ethereum#2164) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Mark EIP-158 proper superseded and not replaced (ethereum#2160) * Update eip_validator to 0.8.2 (ethereum#2161) * Fix Markdown formatting in EIP-1186 * Update eip_validator to 0.8.2 * Abandone EIP-1355 "Ethash 1a" (ethereum#1785) * Add information EIP: Common Prometheus metrics (ethereum#2159) * Add common metrics EIP. * Fix spelling error. * Assign EIP number, added more information on what Prometheus does. * Add link to prometheus website for further info. * Fix link. * Fix discussion link. * Switch to standards track - interface instead of informational. * Add motivation. * superseded-by EIP 1 (ethereum#2165) * Automatically merged updates to draft EIP(s) 1702 (ethereum#2167) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP-1753 - Define a smart contract interface for permits and licences (ethereum#1753) * First draft * Update eip-x.md * Update eip-x.md * Update eip-x.md * Update eip-x.md * Update eip-x.md * Update eip-x.md * Update eip-x.md * Update eip-x.md * Update authors * Update eip-x.md * Rename eip md * Rollback * Rename md * Add copyright * WIP: Re adding specificaiton * Update example solidity * Update eip-1753.md * Update eip-1753.md * Update eip-1753.md * Update eip-1753.md * Update eip-1753.md * Update eip-1753.md * Do not touch eip-X * Fix typo * EIP-1895: Improvements (ethereum#2153) * EIP-1895: Better constants and address range description Address @Arachnid's comments about presenting constants and how an address value is limited. * EIP-1985: Fix a typo * EIP-1985: Use "instructions" instead of "opcodes" * eip-225: mark as final (ethereum#1954) * set EIP875 to last call and correct errors (ethereum#1549) * Automatically merged updates to draft EIP(s) 1571 (ethereum#2168) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 999 (ethereum#2170) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 2159 (ethereum#2174) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1884 (ethereum#2175) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 2028 (ethereum#2176) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP-1901: Add OpenRPC Service Discovery To JSON-RPC Services (ethereum#1901) * EIP-????: Add OpenRPC Service Discovery To JSON-RPC Services * fix: * fix(openrpc): add openrpc.json to eip assets * fix(openrpc): reference eip asset * Update EIPS/eip-1901.md - document link * Delete openrpc.json * Update eip-1901: move link to spec to top * fix(1901): preamble + author github usernames * fix(1901): add copyright info * fix(1901): add link to eth json rpc spec * fix(1901): type and category in preamble + spelling * fix(1901): motivation section and use vendored assets * fix(1901): add link to multi-geth OpenRPC discovery * fix(1901): change ordering + small fixes * fix(1901): typo * Automatically merged updates to draft EIP(s) 1108 (ethereum#2177) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * Automatically merged updates to draft EIP(s) 1102 (ethereum#2178) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing * EIP-1900 Decentralized Type System for EVM (ethereum#1900) * Automatically merged updates to draft EIP(s) 1884 (ethereum#2180) Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing
eip: 1959
title: Method to check if a chainID is part of the history of chainIDs
author: Ronan Sandford (@wighawag)
category: Core
type: Standards Track
discussions-to: https://ethereum-magicians.org/t/eip-1959-valid-chainid-opcode/3170
status: Draft
created: 2019-04-20
requires: 155
Abstract
This EIP adds an opcode that returns whether the specific number passed in has been a valid chainID (EIP-155 unique identifier) in the history of the chain (including the current chainID).
Motivation
EIP-155 proposes to use the chain ID to prevent replay attacks between different chains. It would be a great benefit to have the same possibility inside smart contracts when handling signatures, especially for Layer 2 signature schemes using EIP-712.
EIP-1344 is attempting to solve this by giving smart contract access to the tip of the chainID history. This is insuficient as such value is changing. Hence why EIP-1344 describes a contract based solution to work around the problem. It would be better to solve it in a simpler, cheaper and safer manner, removing the potential risk of misuse present in EIP-1344.
Specification
Adds a new opcode
VALID_CHAINID
at 0x46, which uses 1 stack argument : a 32 bytes value that represent the chainID to test. It will push0x1
onto the stack if the uint256 value is part of the history (since genesis) of chainIDs of that chain,0x0
otherwise.The operation costs
G_blockhash
to execute.The cost of the operation might need to be adjusted later as the number of chainID in the history of the chain grows.
Note though that the alternative to keep track of old chainID is to implement a smart contract based caching solution as EIP-1344 proposes comes with an overall higher gas cost. As such the gas cost is simply a necessary cost for the feature.
Rationale
The only approach available today is to specify the chain ID at compile time. Using this approach will result in problems after a contentious hardfork as the contract can't accept message signed with a new chainID.
The approach proposed by EIP-1344 is to give access to the latest chainID. This is in itself not sufficient and pose the oposite of the problem mentioned above since as soon as a hardfork that change the chainID happens, every L2 messages signed as per EIP-712 (with the previous chainID) will fails to be accepted by the contracts after the fork.
That's why in the rationale of EIP-1344 it is mentioned that users need to implement/use a mechanism to verify the validity of past chainID via a trustless cache implemented via smart contract.
While this works (except for a temporary gap where the immediatly previous chainID is not considered valid), this is actually a required procedure for all contracts that want to accept L2 messages since without it, messages signed before an hardfork that updated the chainID would be rejected. In other words, EIP-1344 expose such risk and it is easy for contract to not consider it by simply checking
chainID == CHAIN_ID()
without considering past chainIDs.Indeed letting contracts access the latest chainID for L2 message verification is dangerous. The latest chainID is only the tip of the chainID history. As a changing value, the latest chainID is thus not appropriate to ensure the validity of L2 messages.
Users signing off-chain messages expect their messages to be valid from the time of signing and do not expect these message to be affected by a future hardfork. If the contract use the latest chainID as is for verification, the messages would be invalid as soon as a hardfork that update the chainID happens. For some applications, this will require users to resubmit a new message (think meta transaction), causing them potential loss (or some incovenience during the hardfork transition), but for some other applications (think state channel) the whole off-chain state become innaccessible, resulting in potentially disastrous situations.
In other words, we should consider all off-chain messages (with valid chainID) as part of the chain's offchain state. The opcode proposed here, offer smart contracts a simple and safe method to ensure that the offchain state stay valid across fork.
As for replay protection, the idea of considering all of the off-chain messages signed with valid chainID as part of the chain's offchain-state means that all of these off-chain messages can be reused on the different forks which share a common chainID history (up to where they differ). This is actually an important feature since as mentioned, users expect their signed messages to be valid from the time of signing. From that time onwards these messages should be considered as part of the chain's offchain state. A hardfork should not thus render them invalid. This is similar to how the previous on-chain state is shared between 2 hardforks.
The wallets will make sure that at any time, a signing message request use the latest chainID of the chain being used. This prevent replay attack onto chain that have different chainID histories (they would not have the same latest chainID).
Now it is argued in the EIP1344 discussion that when a contentious hardfork happen and one side of the fork decide to not update its chainID, that side of the chain would be vulnerable to replays since users will keep signing with a chainID that is also valid in the chain that forked. An issue also present in EIP-1344.
This is simply a natural consequence of using chainID as the only anti-replay information for L2 messages. But this can indeed be an issue if the hardfork is created by a small minority. In that case if the majority ignore the fork and do not update its chainID, then all new message from the majority chain (until they update their chainID) can be replayed on the minority-led hardfork since the majority's current chainID is also part of the minority-led fork's chainID history.
To fix this, every message could specify the block number representing the time it was signed. The contract could then verify that chainID specified as part of that message was valid at that particular block.
While EIP-1344 can't do that accurately as the caching system might leave a gap, this proposal can solve it if it is modified to return the blockNumber at which a chainID become invalid. Unfortunately, this would be easy for contracts to not perform that check. And since it suffice of only one important applications to not follow this procedure to put the minority-led fork at a disadvantage, this would fail to achieve the desired goal of protecting the minority-led fork from replay.
Since a minority-led fork ignored by the majority means that the majority will not keep track of the messages to be submitted (state channel, ...), if such fork get traction later, this would be at the expense of majority users who were not aware of it. As such this proposal assume that minority-led fork will not get traction later and thus do not require to be protected.
Backwards Compatibility
This EIP is fully backwards compatible with all chains which implement EIP-155 chain ID domain separator for transaction signing. Existing contract are not affected.
Similary to EIP-1344, it might be beneficial to update EIP-712 (still in Draft) to deal with chainID separatly from the domain separator. Indeed since chainID is expected to change, if the domain separator include chainID, it would have to be dynamically computed. A caching mechanism could be used by smart contract instead though.
References
This was previously suggested as part of EIP1344 discussion.
Copyright
Copyright and related rights waived via CC0.