====== EIP 2930: Optional access lists ======
[[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:start| Return to Ethereum ERCs ]]
: **Note**: The following is an excerpt from the official Ethereum site. It is provided here as a convenience and is not authoritative. Refer to the original document as the authoritative reference.
Data sheet for Optional access lists
| Title | Optional access lists |
| EIP | 2930 |
| Requires |
* [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:2718]]
* [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:2929]]
|
| Author |
* Vitalik Buterin (@vbuterin),
* Martin Swende (@holiman)
|
| Status | final |
| Created | 2020-08-29 |
| Description | [[https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2930.md]] |
| Specification | [[https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2930.md#Specification]] |
| Category | Core |
===== Simple Summary =====
Adds a transaction type that contains an access list, a list of addresses, and storage keys that the transaction plans to access. Accesses outside the list are possible but become more expensive.
===== Abstract =====
We introduce a new [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:2718]] transaction type, with the format **''0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList, signatureYParity, signatureR, signatureS]''** ).
The **''accessList''** specifies a list of addresses and storage keys; these addresses and storage keys are added into the accessed_addresses and accessed_storage_keys global sets (introduced in [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:2929 | EIP-2929]]). A gas cost is charged, though at a discount relative to the cost of accessing outside the list.
===== Motivation =====
This EIP serves two functions:
- Mitigates contract breakage risks introduced by [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:2929 | EIP-2929]], as transactions could pre-specify and pre-pay for the accounts and storage slots that the transaction plans to access; as a result, in the actual execution, the SLOAD and EXT* opcodes would only cost 100 gas: low enough that it would not only prevent breakage due to that EIP but also "unstuck" any contracts that became stuck due to [[ dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:1884 | EIP 1884]].
- Introduces the access list format and the logic for handling the format. This logic can later be repurposed for many other purposes, including block-wide witnesses, use in ReGenesis, moving toward static state access over time, and more.
/**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
/* To add a discussion page to this page, comment out the line that says
~~DISCUSSION:off~~
*/
~~DISCUSSION:on|Outstanding Issues~~
~~DISCUSSION:off~~