-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
support for createAccessList #3086
Comments
At the time it was not supported in any nodes I tried it on. Do you have any examples of it working on INFURA or Alchemy now? |
Of course :) You can test by Alchemy. It isn't in document, but it supports. By sending This is json-rpc body for test. {
"method":"eth_createAccessList",
"params": [
{
"from": "0x0000000000000000000000000000000000000001",
"to": "0x2be5e8c109e2197D077D13A82dAead6a9b3433C5",
"data": "0xcae9ca51000000000000000000000000c4a11aaf6ea915ed7ac194161d2fc9384f15bff2000000000000000000000000000000000000000000000039c0885c3cdaeccc000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004000000000000000000000000056e465f654393fa48f007ed7346105c7195cee4300000000000000000000000039a13a796a3cd9f480c28259230d2ef0a7026033"
},
"pending"
],
"id":1,
"jsonrpc":"2.0"
} it returns like below. {
"jsonrpc": "2.0",
"id": 1,
"result": {
"accessList": [
{
"address": "0x56e465f654393fa48f007ed7346105c7195cee43",
"storageKeys": [
"0x0000000000000000000000000000000000000000000000000000000000000002",
"0x0000000000000000000000000000000000000000000000000000000000000003",
"0xefe4edd12afaf9d0df1308bccd25b316134b8b7e9d5dc80456660dd940653bc8",
"0xb45820386466a8e01597d6e1efaf8f11ba4467972de5ca6c1f8aa3544ac2888e",
"0xdfd283c4a34e8de29bc07af805b3667f5746d0442cb14f4f37d3c03083e0f0df",
"0x0b6fac705b1aacab15c916e75cdc725433f2eb42a1e3631dc34204d624fa5954",
"0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828",
"0x0000000000000000000000000000000000000000000000000000000000000004",
"0xec646dc6d4c93e86591cb8725f06e50158b413031b568ac64820b172699c5e86"
]
},
{
"address": "0x710936500ac59e8551331871cbad3d33d5e0d909",
"storageKeys": [
"0x0000000000000000000000000000000000000000000000000000000000000005",
"0x0000000000000000000000000000000000000000000000000000000000000004",
"0xc1f26453137327c2a2ff78e92170202e5076ee5e43826ec9b8eba1906a6a9113",
"0x000000000000000000000000000000000000000000000000000000000000000a"
]
},
{
"address": "0x39a13a796a3cd9f480c28259230d2ef0a7026033",
"storageKeys": [
"0x0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"address": "0x6fc20ca22e67aab397adb977f092245525f7aeef",
"storageKeys": [
"0x000000000000000000000000000000000000000000000000000000000000000a",
"0x000000000000000000000000000000000000000000000000000000000000000c",
"0x000000000000000000000000000000000000000000000000000000000000000d",
"0x1af71f306103cb287906d7605db78592676f824849578ba9c353b7ae6124f571",
"0xc1f26453137327c2a2ff78e92170202e5076ee5e43826ec9b8eba1906a6a9115",
"0xc1f26453137327c2a2ff78e92170202e5076ee5e43826ec9b8eba1906a6a9113",
"0xc1f26453137327c2a2ff78e92170202e5076ee5e43826ec9b8eba1906a6a9114",
"0x000000000000000000000000000000000000000000000000000000000000000f"
]
},
{
"address": "0xcf8b6843271bff848c707c143ccca4b6325e854e",
"storageKeys": [
"0x72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf",
"0x72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d0",
"0x000000000000000000000000000000000000000000000000000000000000000f",
"0x000000000000000000000000000000000000000000000000000000000000000a",
"0x000000000000000000000000000000000000000000000000000000000000000c",
"0x000000000000000000000000000000000000000000000000000000000000000d",
"0x1af71f306103cb287906d7605db78592676f824849578ba9c353b7ae6124f571",
"0x72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5d1"
]
},
{
"address": "0x85ca9f611c363065252ea9462c90743922767b55",
"storageKeys": [
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69b1",
"0x7dc88232ebe0ae6d18d0e2dcee8a74db82e814af197078f88be684ba5142c746",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69b0",
"0x020ce710971eace59270c3ed49d71d24bede9c03862696d2ba399e12c811e8ad",
"0x414201aa84770f4663c24f3bd43d38fe8d05d8e40b10cbdf4e51d2fefb023ac5",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69ac",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69af",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69b2",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69b3",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69b4",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69b5",
"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
"0x000000000000000000000000000000000000000000000000000000000000000f",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69ad",
"0xff5f91f0631625fc8731830e5809ae86c29a8096cd75e8c36e0b8978e93a69ae"
]
},
{
"address": "0x2be5e8c109e2197d077d13a82daead6a9b3433c5",
"storageKeys": [
"0x55ee4194132ce545daf749c35054fd31bdc9b252a26dd07032ea1ab096f70ab9",
"0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d",
"0xfcd201047cfacadd26d3a935a8c59e5e5a6d4c4ac6ba2eac61dbb8bffb48273b",
"0x0000000000000000000000000000000000000000000000000000000000000007"
]
},
{
"address": "0xc4a11aaf6ea915ed7ac194161d2fc9384f15bff2",
"storageKeys": [
"0x000000000000000000000000000000000000000000000000000000000000000a",
"0x0000000000000000000000000000000000000000000000000000000000000003",
"0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f",
"0x0000000000000000000000000000000000000000000000000000000000000008",
"0x021848d60c9b0964bd4b8333f226c3739cb52935e1cddece863426482881a346",
"0x5bc7e6e0f57427079be172bab0e1156129b10396bfe7a9534f75b3d9840f1644",
"0x1bf90da8867850ea82f59d299d537edc1366afe0d59a76b2dfbb35dcad558bab",
"0xfa2c07fb56eb4bdc4a13debe7fca735e802a86b3daf43e4ecb3e264c19517fb2",
"0x2adf98e1062af6c87ec98055eb6814dd1008ac078b405302ce5ff5826e29e97d"
]
},
{
"address": "0x03140e1e254a4840c4983b20267a5c391e3fdb19",
"storageKeys": []
},
{
"address": "0x10f5f22d53415ba10f0e3b0fb0999b2928f20822",
"storageKeys": []
},
{
"address": "0x0b3e174a2170083e770d5d4cf56774d221b7063e",
"storageKeys": [
"0xb0797f3f7c537a57ff12a32c3fbe25b0df09e3510e4041396e717f44f8c4285a"
]
},
{
"address": "0x970298189050abd4dc4f119ccae14ee145ad9371",
"storageKeys": [
"0x0000000000000000000000000000000000000000000000000000000000000003",
"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x1618681d376ee0c838fc4fbb5c7d0312014e16d111443fa59ad619b85ff4edc6",
"0x0000000000000000000000000000000000000000000000000000000000000005"
]
}
],
"gasUsed": "0x55112"
}
} Request TypeIt's same with https://github.com/ethereum/go-ethereum/blob/master/internal/ethapi/api.go#L1151
|
Cool cool. I’ll try it out and figure out the best way to add it to the API. We don’t want to include it by default (like we do for estimate gas, which is required) since the reads and writes may not be consistent, which could make transactions wildly more expensive as you would pre-pay for slots you end up not accessing. But maybe it makes sense in v6 to add a pseudo-property, like the planned |
You're right. Access lists are non-deterministic for some transactions. (such as transactions that executes different logic by block hash) In this case, including access list can be more expensive. It should be used for deterministic access list. Thanks :) |
Looking forward to this feature as well. @0xall in the meantime, you can still access the create list api using the low level ethers method |
I would be happy to help you with this, do you have an idea what the implementation should look like @ricmoo? |
Any update on this ? Happy to help. |
Describe the Feature
By EIP-2930, transaction containing an access list can reduce gas price. However, it's hard to determine what
accessList
should be passed when building a transaction. Fortunately, many geth nodes supporteth_createAccessList
rpc and this method createsaccessList
based on a given transaction.It's already issued before in #1364, but it's closed without supporting
eth_createAccessList
. ethers.js supports accessList in transaction param, but it doesn't supporteth_createAccessList
rpc to createaccessList
for the transaction.According to EIP-2930 - Rationale: Charging less for accesses in the access list, passing
accessList
to transaction is encouraged since it helps to pre-load data from database (such as by loading the data in parallel). It also helps to reduce gas consumption for transactions.RPC Documentation
https://geth.ethereum.org/docs/rpc/ns-eth#eth_createaccesslist
eth_createAccessList
is similar witheth_estimateGas
. It returns the estimated gas likeeth_estimateGas
, but it also returnsaccessList
for the transaction.Code Example
The text was updated successfully, but these errors were encountered: