Skip to content

Commit 9857889

Browse files
Merge branch 'ethereum:master' into master
2 parents f4e8302 + 7cb35d3 commit 9857889

File tree

158 files changed

+11870
-921
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

158 files changed

+11870
-921
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
save-pr:
1818
name: Save PR Number
1919
runs-on: ubuntu-latest
20-
20+
2121
steps:
2222
- name: Save PR number
2323
env:
@@ -38,7 +38,7 @@ jobs:
3838

3939
htmlproofer:
4040
name: HTMLProofer
41-
runs-on: ubuntu-20.04
41+
runs-on: ubuntu-24.04
4242

4343
steps:
4444
- name: Checkout EIPs
@@ -65,7 +65,7 @@ jobs:
6565
cd $GITHUB_WORKSPACE
6666
rm -rf ERCs
6767
- name: Setup Ruby
68-
uses: ruby/setup-ruby@f26937343756480a8cb3ae1f623b9c8d89ed6984 # v1.196.0
68+
uses: ruby/setup-ruby@fb404b9557c186e349162b0d8efb06e2bc36edea # v1.232.0
6969
with:
7070
ruby-version: '3.1' # Not needed with a .ruby-version file
7171
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
@@ -74,7 +74,7 @@ jobs:
7474
run: bundle exec jekyll build
7575
env:
7676
JEKYLL_ENV: production
77-
77+
7878
- name: Build Website
7979
run: |
8080
bundle exec jekyll doctor
@@ -88,11 +88,11 @@ jobs:
8888
link-check:
8989
name: Link Check
9090
runs-on: ubuntu-latest
91-
91+
9292
steps:
9393
- name: Checkout EIP Repository
9494
uses: actions/checkout@47fbe2df0ad0e27efb67a70beac3555f192b062f
95-
95+
9696
- name: Link Checker
9797
uses: gaurav-nelson/github-action-markdown-link-check@d53a906aa6b22b8979d33bc86170567e619495ec
9898
with:

.github/workflows/jekyll.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
runs-on: ubuntu-latest
3333
steps:
3434
- name: Checkout
35-
uses: actions/checkout@v3
35+
uses: actions/checkout@v4
3636
- name: Setup Ruby
3737
uses: ruby/setup-ruby@f26937343756480a8cb3ae1f623b9c8d89ed6984 # v1.196.0
3838
with:
@@ -41,7 +41,7 @@ jobs:
4141
cache-version: 0 # Increment this number if you need to re-download cached gems
4242
- name: Setup Pages
4343
id: pages
44-
uses: actions/configure-pages@v3
44+
uses: actions/configure-pages@v5
4545
- name: Build with Jekyll
4646
# Outputs to the './_site' directory by default
4747
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"

ERCS/erc-1123.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,7 +1200,7 @@ To reference a contract type from a dependency, use the format
12001200
- The `<package-name>` value **must** be present in the keys of the
12011201
`build_dependencies` of this Package.
12021202

1203-
- The `<contract-alias>` value **must** be be a valid [Contract
1203+
- The `<contract-alias>` value **must** be a valid [Contract
12041204
Alias](#term-contract-alias).
12051205

12061206
- The resolved package for `<package-name>` must contain the
@@ -1697,7 +1697,7 @@ Example:
16971697
...
16981698
}
16991699

1700-
A deployed instance of the `Wallet` contract would be of of type
1700+
A deployed instance of the `Wallet` contract would be of type
17011701
`Wallet`.
17021702

17031703

ERCS/erc-1581.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ category: ERC
1010
created: 2018-11-13
1111
---
1212
## Abstract
13-
BIP32 defines a way to generate hierarchical trees of keys which can be derived from a common master key. BIP32 and [BIP44](https://https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) defines the usage of these keys as wallets. In this EIP we describe the usage of such keys outside the scope of the blockchain defining a logical tree for key usage which can coexist (and thus share the same master) with existing BIP44 compatible wallets.
13+
BIP32 defines a way to generate hierarchical trees of keys which can be derived from a common master key. BIP32 and [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) defines the usage of these keys as wallets. In this EIP we describe the usage of such keys outside the scope of the blockchain defining a logical tree for key usage which can coexist (and thus share the same master) with existing BIP44 compatible wallets.
1414

1515
## Motivation
1616
Applications interacting with the blockchain often make use of additional, non-blockchain technologies to perform the task they are designed for. For privacy and security sensitive mechanisms, sets of keys are needed. Reusing keys used for wallets can prove to be insecure, while keeping completely independent keys make backup and migration of the full set of credentials more complex. Defining a separate (from BIP44 compliant wallets) derivation branch allows combining the security of independent keys with the convenience of having a single piece of information which needs to be backup or migrated.

ERCS/erc-223.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ This standard sticks to the push transaction model where the transfer of assets
142142

143143
This standard introduces the ability to correct user errors by allowing to handle ANY transactions on the recipients side and reject incorrect or improper transfers. This tokens utilize ONE transferring method for both types of interactions with contracts and externally owned addresses which can simplify the user experience and allow to avoid possible user mistakes.
144144

145-
One downside of the commonly used [ERC-20](./eip-20.md) standard that ERC-223 is intended to solve is that [ERC-20](./eip-20.md) implements two methods of token transferring: (1) `transfer` function and (2) `approve + transferFrom` pattern. Transfer function of [ERC-20](./eip-20.md) standard does not notify the receiver and therefore if any tokens are sent to a contract with the `transfer` function then the receiver will not recognize this transfer and the tokens can become stuck in the receivers address without any possibility of recovering them. [ERC-20](./eip-20.md) standard places the burden of determining the transferring method on the user and if the incorrect method is chosen the user can lose the transferred tokens. ERC-223 automatically determines the transferring method, preventing the user from losing tokens due to chosing wrong method.
145+
One downside of the commonly used [ERC-20](./eip-20.md) standard that ERC-223 is intended to solve is that [ERC-20](./eip-20.md) implements two methods of token transferring: (1) `transfer` function and (2) `approve + transferFrom` pattern. Transfer function of [ERC-20](./eip-20.md) standard does not notify the receiver and therefore if any tokens are sent to a contract with the `transfer` function then the receiver will not recognize this transfer and the tokens can become stuck in the receivers address without any possibility of recovering them. [ERC-20](./eip-20.md) standard places the burden of determining the transferring method on the user and if the incorrect method is chosen the user can lose the transferred tokens. ERC-223 automatically determines the transferring method, preventing the user from losing tokens due to choosing wrong method.
146146

147147
ERC-223 is intended to simplify the interaction with contracts that are intended to work with tokens. ERC-223 utilizes a "deposit" pattern, similar to that of plain Ether. An ERC-223 deposit to a contract is a simple call of the `transfer` function. This is one transaction as opposed to two step process of `approve + transferFrom` depositing.
148148

ERCS/erc-3009.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ library EIP712 {
521521
}
522522
```
523523

524-
A fully working implementation of EIP-3009 can be found in [this repository](https://github.com/CoinbaseStablecoin/eip-3009/blob/master/contracts/lib/EIP3009.sol). The repository also includes [an implementation of EIP-2612](https://github.com/CoinbaseStablecoin/eip-3009/blob/master/contracts/lib/EI32612.sol) that uses the EIP-712 library code presented above.
524+
A fully working implementation of EIP-3009 can be found in [this repository](../assets/eip-3009/EIP3009.sol). The repository also includes [an implementation of EIP-2612](../assets/eip-3009/EIP2612.sol) that uses the EIP-712 library code presented above.
525525

526526
## Security Considerations
527527

ERCS/erc-4337.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -432,15 +432,19 @@ as it depends on non-permanent network properties such as operation and data gas
432432
However, the requirement is for the estimated value to be sufficient to cover the following costs:
433433

434434
* Base bundle transaction cost. On Ethereum, `21000` gas divided by the number of `UserOperations`.
435-
* The calldata gas cost related to the `UserOperation`.
435+
* The calldata gas cost related to the `UserOperation` as defined in [EIP-2028](./eip-2028.md).
436436
* Static `EntryPoint` contract code execution.
437437
* Static memory cost when loading the fixed size fields of the `UserOperation` into EVM memory
438438
* Memory cost (including expansion cost) due to context returned by paymaster `validatePaymasterUserOp` function, if relevant.
439439
* External call to the `innerHandleOp()` function which is a major part of the `EntryPoint` implementation.
440440
Note that this value is not static and depends on the `UserOperation`'s position in the bundle.
441-
* EIP-7702 authorization cost, if any.
441+
* [EIP-7702] authorization cost, if any.
442+
* [EIP-7623](./eip-7623.md) calldata floor price increase is estimated as follows:
443+
* Apply the new formula for `tx.gasUsed`, replacing the `execution_gas_used` value with an estimate for value made for this UserOperation.
444+
* The estimate is calculated as a sum of all verification gas used during simulation (account creation, validation and paymaster validation) and 10% of the sum of execution and `postOp` gas limit.
442445

443446
The bundler MUST require a slack in `PreVerificationGas` value, to accommodate memory expansion costs in the future bundle, and the expected position of the `UserOperation` in it.
447+
444448
### Alternative Mempools
445449

446450
The simulation rules above are strict and prevent the ability of paymasters to grief the system.
@@ -487,8 +491,6 @@ for the `handleOps` validation in its entirety as for individual `UserOperations
487491
Otherwise, attackers may be able to use the banned opcodes to detect running on-chain and trigger a `FailedOp` revert.
488492

489493
When a bundler includes a bundle in a block it must ensure that earlier transactions in the block don't make any `UserOperation` fail.
490-
It SHOULD either use an "access lists" parameter as defined in [EIP-2930](./eip-2930) to prevent conflicts,
491-
or place the bundle as the first transaction in the block.
492494

493495

494496
### Error codes.
@@ -601,7 +603,7 @@ All `paymaster` contracts MUST check that all calls to the `validatePaymasterUse
601603

602604
### Aggregator contracts
603605

604-
All `paymaster` contracts MUST check that all calls to the `validateSignatures()` function originates from the `EntryPoint`.
606+
All `aggregator` contracts MUST check that all calls to the `validateSignatures()` function originates from the `EntryPoint`.
605607

606608
### EIP-7702 delegated Smart Contract Accounts
607609

ERCS/erc-4361.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ title: Sign-In with Ethereum
44
description: Off-chain authentication for Ethereum accounts to establish sessions.
55
author: Wayne Chang (@wyc), Gregory Rocco (@obstropolos), Brantly Millegan (@brantlymillegan), Nick Johnson (@Arachnid), Oliver Terbu (@awoie)
66
discussions-to: https://ethereum-magicians.org/t/eip-4361-sign-in-with-ethereum/7263
7-
status: Review
7+
status: Last Call
8+
last-call-deadline: 2025-07-29
89
type: Standards Track
910
category: ERC
1011
created: 2021-10-11
@@ -38,7 +39,7 @@ Sign-In with Ethereum (SIWE) works as follows:
3839

3940
#### ABNF Message Format
4041

41-
A SIWE Message MUST conform with the following Augmented Backus–Naur Form (ABNF, RFC 5234) expression (note that `%s` denotes case sensitivity for a string term, as per RFC 7405).
42+
A SIWE Message MUST conform with the following Augmented Backus–Naur Form (ABNF, [RFC 5234](https://www.rfc-editor.org/rfc/rfc5234)) expression (note that `%s` denotes case sensitivity for a string term, as per [RFC 7405](https://www.rfc-editor.org/rfc/rfc7405)).
4243

4344
```abnf
4445
sign-in-with-ethereum =
@@ -116,9 +117,9 @@ This specification defines the following SIWE Message fields that can be parsed
116117
- `version` REQUIRED. The current version of the SIWE Message, which MUST be `1` for this specification.
117118
- `chain-id` REQUIRED. The [EIP-155](./eip-155.md) Chain ID to which the session is bound, and the network where Contract Accounts MUST be resolved.
118119
- `nonce` REQUIRED. A random string typically chosen by the relying party and used to prevent replay attacks, at least 8 alphanumeric characters.
119-
- `issued-at` REQUIRED. The time when the message was generated, typically the current time. Its value MUST be an ISO 8601 datetime string.
120-
- `expiration-time` OPTIONAL. The time when the signed authentication message is no longer valid. Its value MUST be an ISO 8601 datetime string.
121-
- `not-before` OPTIONAL. The time when the signed authentication message will become valid. Its value MUST be an ISO 8601 datetime string.
120+
- `issued-at` REQUIRED. The time when the message was generated, typically the current time. Its value MUST be an [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) datetime string.
121+
- `expiration-time` OPTIONAL. The time when the signed authentication message is no longer valid. Its value MUST be an [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) datetime string.
122+
- `not-before` OPTIONAL. The time when the signed authentication message will become valid. Its value MUST be an [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) datetime string.
122123
- `request-id` OPTIONAL. A system-specific identifier that MAY be used to uniquely refer to the sign-in request.
123124
- `resources` OPTIONAL. A list of information or references to information the user wishes to have resolved as part of authentication by the relying party. Every resource MUST be an RFC 3986 URI separated by `"\n- "` where `\n` is the byte `0x0a`.
124125

ERCS/erc-5516.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
3636

3737
**Smart contracts implementing this EIP MUST implement all of the functions in the `EIP-5516` interface.**
3838

39-
**Smart contracts implementing this EIP MUST implement the [EIP-165](./eip-165.md) `supportsInterface` function and and MUST return the constant value `true` if `0x8314f22b` is passed through the `interfaceID` argument. They also MUST implement the [EIP-1155](./eip-1155.md) Interface and MUST return the constant value `true` if `0xd9b67a26` is passed through the `interfaceID` argument. Furthermore, they MUST implement the [EIP-1155](./eip-1155.md) Metadata interface, and MUST return the constant value `true` if `0x0e89341c` is passed through the `interfaceID` argument.**
39+
**Smart contracts implementing this EIP MUST implement the [EIP-165](./eip-165.md) `supportsInterface` function and MUST return the constant value `true` if `0x8314f22b` is passed through the `interfaceID` argument. They also MUST implement the [EIP-1155](./eip-1155.md) Interface and MUST return the constant value `true` if `0xd9b67a26` is passed through the `interfaceID` argument. Furthermore, they MUST implement the [EIP-1155](./eip-1155.md) Metadata interface, and MUST return the constant value `true` if `0x0e89341c` is passed through the `interfaceID` argument.**
4040

4141
_See [EIP-1155](./eip-1155.md#specification)_
4242

ERCS/erc-5559.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
eip: 5559
3-
title: "Cross Chain Write Deferral Protocol"
3+
title: Cross Chain Write Deferral Protocol
44
description: The cross chain write deferral protocol provides a mechanism to defer the storage & resolution of mutations to off-chain handlers
55
author: Paul Gauvreau (@0xpaulio), Nick Johnson (@arachnid)
66
discussions-to: https://ethereum-magicians.org/t/eip-cross-chain-write-deferral-protocol/10576

0 commit comments

Comments
 (0)