Skip to content

Commit 8104cb6

Browse files
committed
merge
Signed-off-by: Sally MacFarlane <[email protected]>
2 parents c675c84 + 96f8545 commit 8104cb6

File tree

4 files changed

+32
-10
lines changed

4 files changed

+32
-10
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- Remove `--Xsnapsync-server-enabled` deprecated since 25.7.0. Use `--snapsync-server-enabled` instead.
99
- Remove `--Xsnapsync-synchronizer-pre-merge-headers-only-enabled` deprecated since 25.7.0. Use `--snapsync-synchronizer-pre-checkpoint-headers-only-enabled` instead.
1010
- Remove `--Xhistory-expiry-prune` deprecated since 25.7.0. Use `--history-expiry-prune` instead.
11+
- eth_createAccessList now returns success result if execution reverted [#9358](https://github.com/hyperledger/besu/pull/9358)
1112
- Return null result if block not found for `debug_accountAt`, `debug_setHead`, `eth_call`, `eth_getBlockReceipts`, `eth_getProof`, `eth_simulateV1`, `eth_getBalance`, `eth_getCode`, `eth_getStorageAt`, `eth_getTransactionCount` [#9303](https://github.com/hyperledger/besu/pull/9303)
1213

1314
### Upcoming Breaking Changes
@@ -18,6 +19,7 @@
1819
### Additions and Improvements
1920
- Update to vertx 4.5.22 [#9375](https://github.com/hyperledger/besu/pull/9375)
2021
- Add `opcodes` optional parameter to RPC methods: `debug_standardTraceBlockToFile`, `debug_standardTraceBadBlockToFile`, `debug_traceBlockByNumber`, `debug_traceBlockByHash`, `debug_traceTransaction`, `debug_traceBlock`, `debug_traceCall` for tracing specified opcodes [#9335](https://github.com/hyperledger/besu/pull/9335)
22+
- eth_createAccessList now returns success result if execution reverted [#9358](https://github.com/hyperledger/besu/pull/9358)
2123
- Return null result if block not found for `debug_accountAt`, `debug_setHead`, `eth_call`, `eth_getBlockReceipts`, `eth_getProof`, `eth_simulateV1`, `eth_getBalance`, `eth_getCode`, `eth_getStorageAt`, `eth_getTransactionCount` [#9303](https://github.com/hyperledger/besu/pull/9303)
2224

2325
### Bug fixes

ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthCreateAccessList.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private Object createResponse(
7777
final JsonRpcRequestContext requestContext, final AccessListSimulatorResult result) {
7878
return result
7979
.result()
80-
.map(createResponse(requestContext, result.tracer()))
80+
.map(createResponse(result.tracer()))
8181
.orElseGet(() -> errorResponse(requestContext, RpcErrorType.INTERNAL_ERROR));
8282
}
8383

@@ -99,11 +99,13 @@ private boolean shouldProcessWithAccessListOverride(
9999
}
100100

101101
private Function<TransactionSimulatorResult, Object> createResponse(
102-
final JsonRpcRequestContext request, final AccessListOperationTracer operationTracer) {
102+
final AccessListOperationTracer operationTracer) {
103+
// access list is created regardless, but include error message if result was not successful
103104
return result ->
104-
result.isSuccessful()
105-
? new CreateAccessListResult(operationTracer.getAccessList(), result.getGasEstimate())
106-
: errorResponse(request, result);
105+
new CreateAccessListResult(
106+
operationTracer.getAccessList(),
107+
result.getGasEstimate(),
108+
result.isSuccessful() ? Optional.empty() : Optional.of("execution reverted"));
107109
}
108110

109111
private AccessListSimulatorResult processTransactionWithAccessListOverride(

ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/CreateAccessListResult.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,27 @@
1818

1919
import java.util.Collection;
2020
import java.util.List;
21+
import java.util.Optional;
2122

2223
import com.fasterxml.jackson.annotation.JsonGetter;
24+
import com.fasterxml.jackson.annotation.JsonInclude;
2325

2426
public class CreateAccessListResult {
2527
List<AccessListEntry> accessListList;
2628
String gasUsed;
29+
Optional<String> errorMessage;
2730

2831
public CreateAccessListResult(final List<AccessListEntry> accessListEntries, final long gasUsed) {
32+
this(accessListEntries, gasUsed, Optional.empty());
33+
}
34+
35+
public CreateAccessListResult(
36+
final List<AccessListEntry> accessListEntries,
37+
final long gasUsed,
38+
final Optional<String> errorMessage) {
2939
this.accessListList = accessListEntries;
3040
this.gasUsed = Quantity.create(gasUsed);
41+
this.errorMessage = errorMessage;
3142
}
3243

3344
@JsonGetter(value = "accessList")
@@ -39,4 +50,10 @@ public Collection<AccessListEntry> getAccessList() {
3950
public String getGasUsed() {
4051
return gasUsed;
4152
}
53+
54+
@JsonGetter(value = "error")
55+
@JsonInclude(JsonInclude.Include.NON_ABSENT)
56+
public Optional<String> getErrorMessage() {
57+
return errorMessage;
58+
}
4259
}

ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthCreateAccessListTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.hyperledger.besu.datatypes.Wei;
2929
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequest;
3030
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext;
31-
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError;
3231
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorResponse;
3332
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse;
3433
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse;
@@ -194,14 +193,16 @@ public void shouldReturnErrorWhenWorldStateIsNotAvailable() {
194193
}
195194

196195
@Test
197-
public void shouldReturnErrorWhenTransactionReverted() {
196+
public void shouldReturnAccessListEvenWhenTransactionReverted() {
198197
final JsonRpcRequestContext request =
199198
ethCreateAccessListRequest(legacyTransactionCallParameter(Wei.ZERO));
200-
mockTransactionSimulatorResult(false, true, 1L, pendingBlockHeader);
199+
mockTransactionSimulatorResult(false, true, MIN_TX_GAS_COST, pendingBlockHeader);
201200

202-
final String errorReason = "0x00";
203201
final JsonRpcResponse expectedResponse =
204-
new JsonRpcErrorResponse(null, new JsonRpcError(RpcErrorType.REVERT_ERROR, errorReason));
202+
new JsonRpcSuccessResponse(
203+
null,
204+
new CreateAccessListResult(
205+
List.of(), MIN_TX_GAS_COST, Optional.of("execution reverted")));
205206

206207
assertThat(method.response(request)).usingRecursiveComparison().isEqualTo(expectedResponse);
207208
verify(transactionSimulator, times(2))

0 commit comments

Comments
 (0)