internal/ethapi: fix panic in accesslist creation (#23225)
* internal/ethapi: revert + fix properly in al tracer * internal/ethapi: use toMessage instead of creating new message * internal/ethapi: remove ineffassign * core: fix invalid unmarshalling, fix test Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
parent
3aea432b35
commit
2faf796d2a
@ -96,7 +96,7 @@ func (al accessList) equal(other accessList) bool {
|
|||||||
func (al accessList) accessList() types.AccessList {
|
func (al accessList) accessList() types.AccessList {
|
||||||
acl := make(types.AccessList, 0, len(al))
|
acl := make(types.AccessList, 0, len(al))
|
||||||
for addr, slots := range al {
|
for addr, slots := range al {
|
||||||
tuple := types.AccessTuple{Address: addr}
|
tuple := types.AccessTuple{Address: addr, StorageKeys: []common.Hash{}}
|
||||||
for slot := range slots {
|
for slot := range slots {
|
||||||
tuple.StorageKeys = append(tuple.StorageKeys, slot)
|
tuple.StorageKeys = append(tuple.StorageKeys, slot)
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ func testAccessList(t *testing.T, client *rpc.Client) {
|
|||||||
From: testAddr,
|
From: testAddr,
|
||||||
To: &common.Address{},
|
To: &common.Address{},
|
||||||
Gas: 21000,
|
Gas: 21000,
|
||||||
GasPrice: big.NewInt(1),
|
GasPrice: big.NewInt(765625000),
|
||||||
Value: big.NewInt(1),
|
Value: big.NewInt(1),
|
||||||
}
|
}
|
||||||
al, gas, vmErr, err := ec.CreateAccessList(context.Background(), msg)
|
al, gas, vmErr, err := ec.CreateAccessList(context.Background(), msg)
|
||||||
|
@ -1441,7 +1441,12 @@ func AccessList(ctx context.Context, b Backend, blockNrOrHash rpc.BlockNumberOrH
|
|||||||
}
|
}
|
||||||
// Copy the original db so we don't modify it
|
// Copy the original db so we don't modify it
|
||||||
statedb := db.Copy()
|
statedb := db.Copy()
|
||||||
msg := types.NewMessage(args.from(), args.To, uint64(*args.Nonce), args.Value.ToInt(), uint64(*args.Gas), args.GasPrice.ToInt(), big.NewInt(0), big.NewInt(0), args.data(), accessList, false)
|
// Set the accesslist to the last al
|
||||||
|
args.AccessList = &accessList
|
||||||
|
msg, err := args.ToMessage(b.RPCGasCap(), header.BaseFee)
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
// Apply the transaction with the access list tracer
|
// Apply the transaction with the access list tracer
|
||||||
tracer := vm.NewAccessListTracer(accessList, args.from(), to, precompiles)
|
tracer := vm.NewAccessListTracer(accessList, args.from(), to, precompiles)
|
||||||
|
Loading…
Reference in New Issue
Block a user