From 3cc063a2d692bb7a94645f7438bfac46017dfdb9 Mon Sep 17 00:00:00 2001 From: rakita Date: Mon, 22 Jul 2024 13:12:23 +0200 Subject: [PATCH 1/9] chore(eip7702): Add decoding limits for AuthList items --- EIPS/eip-7702.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 6db16091f9251..717a93e929f6c 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -43,6 +43,12 @@ rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, dest authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...] ``` +Transaction is considered invalid if authorization list items can't be decoded as: +* `chain_id` and `nonce`: u64 number. +* `address`: 20 bytes array. +* `y_parity`: single byte. +* `r` and `s`: 32 bytes array. + The fields `chain_id`, `nonce`, `max_priority_fee_per_gas`, `max_fee_per_gas`, `gas_limit`, `destination`, `value`, `data`, and `access_list` of the outer transaction follow the same semantics as [EIP-1559](./eip-1559.md). The `authorization_list` is a list of tuples that store the address to code which the signer desires to execute in the context of their EOA. From 888d6a062a2a7efe247c5114692f2c32d2112a94 Mon Sep 17 00:00:00 2001 From: rakita Date: Mon, 22 Jul 2024 13:29:25 +0200 Subject: [PATCH 2/9] Add blank line before list --- EIPS/eip-7702.md | 1 + 1 file changed, 1 insertion(+) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 717a93e929f6c..8de06c80f3c6d 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -44,6 +44,7 @@ authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...] ``` Transaction is considered invalid if authorization list items can't be decoded as: + * `chain_id` and `nonce`: u64 number. * `address`: 20 bytes array. * `y_parity`: single byte. From 19424dd1efd6240fe50f731a59481df5160a6cad Mon Sep 17 00:00:00 2001 From: rakita Date: Mon, 22 Jul 2024 15:14:26 +0200 Subject: [PATCH 3/9] update signature limits --- EIPS/eip-7702.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 8de06c80f3c6d..66b1734f06261 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -8,7 +8,7 @@ status: Review type: Standards Track category: Core created: 2024-05-07 -requires: 2718, 2929, 2930, 3541, 3607 +requires: 2718, 2929, 2930, 3541, 3607, 2 --- ## Abstract @@ -47,8 +47,9 @@ Transaction is considered invalid if authorization list items can't be decoded a * `chain_id` and `nonce`: u64 number. * `address`: 20 bytes array. -* `y_parity`: single byte. +* `y_parity`: single byte with values 0 or 1. * `r` and `s`: 32 bytes array. +* and `s`-value is greater than `secp256k1n/2`, specified in [EIP-2](./eip-2.md). The fields `chain_id`, `nonce`, `max_priority_fee_per_gas`, `max_fee_per_gas`, `gas_limit`, `destination`, `value`, `data`, and `access_list` of the outer transaction follow the same semantics as [EIP-1559](./eip-1559.md). From 91a0d916d14382cf6fbb25be1e47f6e56fe36284 Mon Sep 17 00:00:00 2001 From: rakita Date: Mon, 22 Jul 2024 15:16:24 +0200 Subject: [PATCH 4/9] sort --- EIPS/eip-7702.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 66b1734f06261..369a1298a276d 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -8,7 +8,7 @@ status: Review type: Standards Track category: Core created: 2024-05-07 -requires: 2718, 2929, 2930, 3541, 3607, 2 +requires: 2, 2718, 2929, 2930, 3541, 3607 --- ## Abstract From 51e010bafe2275c132400c8d6189bcfcc363fe24 Mon Sep 17 00:00:00 2001 From: rakita Date: Mon, 22 Jul 2024 15:17:13 +0200 Subject: [PATCH 5/9] Update EIPS/eip-7702.md --- EIPS/eip-7702.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 369a1298a276d..c17272a4b3dc3 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -49,7 +49,7 @@ Transaction is considered invalid if authorization list items can't be decoded a * `address`: 20 bytes array. * `y_parity`: single byte with values 0 or 1. * `r` and `s`: 32 bytes array. -* and `s`-value is greater than `secp256k1n/2`, specified in [EIP-2](./eip-2.md). +* and `s`-value is greater than `secp256k1n/2`, as specified in [EIP-2](./eip-2.md). The fields `chain_id`, `nonce`, `max_priority_fee_per_gas`, `max_fee_per_gas`, `gas_limit`, `destination`, `value`, `data`, and `access_list` of the outer transaction follow the same semantics as [EIP-1559](./eip-1559.md). From f40116946fdc83fdd3e9ae2eca359f06959d83ef Mon Sep 17 00:00:00 2001 From: rakita Date: Mon, 22 Jul 2024 15:27:37 +0200 Subject: [PATCH 6/9] reword --- EIPS/eip-7702.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 369a1298a276d..4c6124f6734c4 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -45,11 +45,11 @@ authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...] Transaction is considered invalid if authorization list items can't be decoded as: -* `chain_id` and `nonce`: u64 number. +* `chain_id` and `nonce`: unsigned 64-bit integer. * `address`: 20 bytes array. -* `y_parity`: single byte with values 0 or 1. -* `r` and `s`: 32 bytes array. -* and `s`-value is greater than `secp256k1n/2`, specified in [EIP-2](./eip-2.md). +* `y_parity`: Value 0 or 1. +* `r`: 32 bytes array. +* `s`: 32 bytes array and value less or equal than `secp256k1n/2`, specified in [EIP-2](./eip-2.md). The fields `chain_id`, `nonce`, `max_priority_fee_per_gas`, `max_fee_per_gas`, `gas_limit`, `destination`, `value`, `data`, and `access_list` of the outer transaction follow the same semantics as [EIP-1559](./eip-1559.md). From 3d3ffcae95071f6e5bd02edff87a927ece1b0722 Mon Sep 17 00:00:00 2001 From: rakita Date: Fri, 2 Aug 2024 12:00:27 +0200 Subject: [PATCH 7/9] Update EIPS/eip-7702.md --- EIPS/eip-7702.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 4c6124f6734c4..6d7f33fe58e30 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -45,7 +45,8 @@ authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...] Transaction is considered invalid if authorization list items can't be decoded as: -* `chain_id` and `nonce`: unsigned 64-bit integer. +* `chain_id`: unsigned 256-bit integer. +* `nonce`: unsigned 64-bit integer. * `address`: 20 bytes array. * `y_parity`: Value 0 or 1. * `r`: 32 bytes array. From 7436c33118f38a3d08710732bba95d206327fd81 Mon Sep 17 00:00:00 2001 From: rakita Date: Fri, 2 Aug 2024 14:27:05 +0200 Subject: [PATCH 8/9] Update EIPS/eip-7702.md --- EIPS/eip-7702.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 7ec9df6281c2d..09e9706865c5d 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -51,7 +51,7 @@ Transaction is considered invalid if authorization list items can't be decoded a * `address`: 20 bytes array. * `y_parity`: Value 0 or 1. * `r`: 32 bytes array. -* `s`: 32 bytes array and value less or equal than `secp256k1n/2`, specified in [EIP-2](./eip-2.md). +* `s`: unsigned 256-bit integer and value less or equal than `secp256k1n/2`, specified in [EIP-2](./eip-2.md). The fields `chain_id`, `nonce`, `max_priority_fee_per_gas`, `max_fee_per_gas`, `gas_limit`, `destination`, `value`, `data`, and `access_list` of the outer transaction follow the same semantics as [EIP-4844](./eip-4844.md). *Note, this means a null destination is not valid.* From bd321fe6eef7fce5147424cd608b7fc91e550a7e Mon Sep 17 00:00:00 2001 From: rakita Date: Fri, 2 Aug 2024 14:27:40 +0200 Subject: [PATCH 9/9] Update EIPS/eip-7702.md --- EIPS/eip-7702.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-7702.md b/EIPS/eip-7702.md index 09e9706865c5d..af26bf2d62e39 100644 --- a/EIPS/eip-7702.md +++ b/EIPS/eip-7702.md @@ -50,7 +50,7 @@ Transaction is considered invalid if authorization list items can't be decoded a * `nonce`: unsigned 64-bit integer. * `address`: 20 bytes array. * `y_parity`: Value 0 or 1. -* `r`: 32 bytes array. +* `r`: unsigned 256-bit integer. * `s`: unsigned 256-bit integer and value less or equal than `secp256k1n/2`, specified in [EIP-2](./eip-2.md). The fields `chain_id`, `nonce`, `max_priority_fee_per_gas`, `max_fee_per_gas`, `gas_limit`, `destination`, `value`, `data`, and `access_list` of the outer transaction follow the same semantics as [EIP-4844](./eip-4844.md). *Note, this means a null destination is not valid.*