Skip to content

Commit 6f5f223

Browse files
chore: remove support for eth/67 (#9008)
* remove eth/67 capability Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> * fix naming Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> * changelog Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> * Fix mock test Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> * Fix tests Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> * fix tests Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> * Update CHANGELOG.md Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com> Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> --------- Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net> Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
1 parent 719659a commit 6f5f223

File tree

10 files changed

+59
-38
lines changed

10 files changed

+59
-38
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- Remove PoAMetricsService and IbftQueryService which have been deprecated since 2019 and are replaced by PoaQueryService and BftQueryService respectively [#8940](https://github.com/hyperledger/besu/pull/8940)
88
- Remove deprecated `Quantity.getValue` method (deprecated since 2019) [#8968](https://github.com/hyperledger/besu/pull/8968)
99
- Support for block creation on networks running a pre-Byzantium fork is removed, after being deprecated for a few months. If still running a pre-Byzantium network, it needs to be updated to continue to produce blocks [#9005](https://github.com/hyperledger/besu/pull/9005)
10+
- Remove support for Ethereum protocol version `eth/67`. [#9008](https://github.com/hyperledger/besu/pull/9008).
1011

1112
### Upcoming Breaking Changes
1213

app/src/test/java/org/hyperledger/besu/controller/AbstractBftBesuControllerBuilderTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ public void setup() throws JsonProcessingException {
137137
.when(synchronizerConfiguration.getBlockPropagationRange())
138138
.thenReturn(Range.closed(1L, 2L));
139139

140+
lenient()
141+
.when(ethProtocolConfiguration.getMaxEthCapability())
142+
.thenReturn(EthProtocolConfiguration.DEFAULT_MAX_CAPABILITY);
140143
setupBftGenesisConfig();
141144

142145
bftBesuControllerBuilder =

app/src/test/java/org/hyperledger/besu/controller/CliqueBesuControllerBuilderTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ public void setup() throws JsonProcessingException {
156156
.blockPeriodSeconds(1)
157157
.build());
158158

159+
lenient()
160+
.when(ethProtocolConfiguration.getMaxEthCapability())
161+
.thenReturn(EthProtocolConfiguration.DEFAULT_MAX_CAPABILITY);
162+
159163
final var jsonTransitions =
160164
(ObjectNode)
161165
objectMapper.readTree(

app/src/test/java/org/hyperledger/besu/controller/MergeBesuControllerBuilderTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,9 @@ public void setup() {
170170
.when(worldStateKeyValueStorage.updater())
171171
.thenReturn(mock(ForestWorldStateKeyValueStorage.Updater.class));
172172
lenient().when(miningConfiguration.getTargetGasLimit()).thenReturn(OptionalLong.empty());
173+
lenient()
174+
.when(ethProtocolConfiguration.getMaxEthCapability())
175+
.thenReturn(EthProtocolConfiguration.DEFAULT_MAX_CAPABILITY);
173176

174177
besuControllerBuilder = visitWithMockConfigs(new MergeBesuControllerBuilder());
175178
}

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,8 @@ public void returnsCorrectMethodName() {
4141
}
4242

4343
@Test
44-
public void shouldReturn67WhenMaxProtocolIsETH67() {
45-
46-
Capability capability = EthProtocol.ETH67;
44+
public void shouldReturn68WhenMaxProtocolIsETH68() {
45+
Capability capability = EthProtocol.ETH68;
4746
setupSupportedEthProtocols(capability);
4847
String expectedVersion = "0x" + Integer.toHexString(capability.getVersion());
4948
final JsonRpcRequestContext request = requestWithParams();
@@ -67,8 +66,8 @@ public void shouldReturnNullNoEthProtocolsSupported() {
6766
}
6867

6968
@Test
70-
public void shouldReturn67WhenMixedProtocolsSupported() {
71-
Capability capability = EthProtocol.ETH67;
69+
public void shouldReturn68WhenMixedProtocolsSupported() {
70+
Capability capability = EthProtocol.ETH68;
7271
setupSupportedEthProtocols(capability);
7372
String expectedVersion = "0x" + Integer.toHexString(capability.getVersion());
7473
supportedCapabilities.add(Capability.create("istanbul", 64));

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/EthProtocol.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ public class EthProtocol implements SubProtocol {
3030
public static final String NAME = "eth";
3131
private static final EthProtocol INSTANCE = new EthProtocol();
3232
public static final Capability ETH66 = Capability.create(NAME, EthProtocolVersion.V66);
33-
public static final Capability ETH67 = Capability.create(NAME, EthProtocolVersion.V67);
3433
public static final Capability ETH68 = Capability.create(NAME, EthProtocolVersion.V68);
3534
public static final Capability ETH69 = Capability.create(NAME, EthProtocolVersion.V69);
3635
public static final BitSet REQUEST_ID_MESSAGES;
@@ -68,7 +67,7 @@ public String getName() {
6867
@Override
6968
public int messageSpace(final int protocolVersion) {
7069
return switch (protocolVersion) {
71-
case EthProtocolVersion.V66, EthProtocolVersion.V67, EthProtocolVersion.V68 -> 17;
70+
case EthProtocolVersion.V66, EthProtocolVersion.V68 -> 17;
7271
case EthProtocolVersion.V69 -> 18;
7372
default -> 0;
7473
};

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/EthProtocolVersion.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
*/
2727
public class EthProtocolVersion {
2828
public static final int V66 = 66;
29-
public static final int V67 = 67;
3029
public static final int V68 = 68;
3130
public static final int V69 = 69;
3231

@@ -49,12 +48,8 @@ public class EthProtocolVersion {
4948
EthProtocolMessages.GET_POOLED_TRANSACTIONS,
5049
EthProtocolMessages.POOLED_TRANSACTIONS);
5150

52-
/**
53-
* eth/67 (EIP-4938, March 2022)
54-
*
55-
* <p>Version 67 removed the GetNodeData and NodeData messages.
56-
*/
57-
private static final List<Integer> eth67Messages =
51+
/** eth/68 */
52+
private static final List<Integer> eth68Messages =
5853
List.of(
5954
EthProtocolMessages.STATUS,
6055
EthProtocolMessages.NEW_BLOCK_HASHES,
@@ -102,9 +97,8 @@ public static List<Integer> getSupportedMessages(final int protocolVersion) {
10297
switch (protocolVersion) {
10398
case EthProtocolVersion.V66:
10499
return eth66Messages;
105-
case EthProtocolVersion.V67:
106100
case EthProtocolVersion.V68:
107-
return eth67Messages;
101+
return eth68Messages;
108102
case EthProtocolVersion.V69:
109103
return eth69Messages;
110104
default:

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManager.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,20 +176,24 @@ private List<Capability> calculateCapabilities(
176176
final SynchronizerConfiguration synchronizerConfiguration,
177177
final EthProtocolConfiguration ethProtocolConfiguration) {
178178
final List<Capability> capabilities = new ArrayList<>();
179-
capabilities.add(EthProtocol.ETH66);
180179

181-
// Version 67 removes the GetNodeData and NodeData
182-
// Fast sync depends on GetNodeData and NodeData
183-
// see https://eips.ethereum.org/EIPS/eip-4938
184-
if (!Objects.equals(SyncMode.FAST, synchronizerConfiguration.getSyncMode())) {
185-
capabilities.add(EthProtocol.ETH67);
180+
if (Objects.equals(SyncMode.FAST, synchronizerConfiguration.getSyncMode())) {
181+
// Version 67 removes the GetNodeData and NodeData
182+
// Fast sync depends on GetNodeData and NodeData
183+
// see https://eips.ethereum.org/EIPS/eip-4938
184+
capabilities.add(EthProtocol.ETH66);
185+
} else {
186186
capabilities.add(EthProtocol.ETH68);
187187
capabilities.add(EthProtocol.ETH69);
188188
}
189-
190189
capabilities.removeIf(cap -> cap.getVersion() > ethProtocolConfiguration.getMaxEthCapability());
191190
capabilities.removeIf(cap -> cap.getVersion() < ethProtocolConfiguration.getMinEthCapability());
192191

192+
if (capabilities.isEmpty()) {
193+
throw new IllegalStateException(
194+
"No supported Eth protocol capabilities found. "
195+
+ "Check the configuration for min and max Eth protocol versions.");
196+
}
193197
return Collections.unmodifiableList(capabilities);
194198
}
195199

ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTest.java

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public void handleMalformedRequestIdMessage() {
146146
// disconnect the peer gracefully
147147
final MessageData messageData = GetBlockHeadersMessage.create(1, 1, 0, false);
148148
final MockPeerConnection peer = setupPeer(ethManager, (cap, msg, conn) -> {});
149-
ethManager.processMessage(EthProtocol.ETH66, new DefaultMessage(peer, messageData));
149+
ethManager.processMessage(EthProtocol.ETH68, new DefaultMessage(peer, messageData));
150150
assertThat(peer.isDisconnected()).isTrue();
151151
}
152152
}
@@ -1302,11 +1302,11 @@ public void shouldRespectFlagForMaxCapability() {
13021302

13031303
// Test with max capability = 65. should respect flag
13041304
final EthProtocolConfiguration configuration =
1305-
EthProtocolConfiguration.builder().maxEthCapability(EthProtocolVersion.V67).build();
1305+
EthProtocolConfiguration.builder().maxEthCapability(EthProtocolVersion.V68).build();
13061306

1307-
assertHighestCapability(SyncMode.SNAP, EthProtocol.ETH67, configuration);
1308-
assertHighestCapability(SyncMode.FULL, EthProtocol.ETH67, configuration);
1309-
assertHighestCapability(SyncMode.CHECKPOINT, EthProtocol.ETH67, configuration);
1307+
assertHighestCapability(SyncMode.SNAP, EthProtocol.ETH68, configuration);
1308+
assertHighestCapability(SyncMode.FULL, EthProtocol.ETH68, configuration);
1309+
assertHighestCapability(SyncMode.CHECKPOINT, EthProtocol.ETH68, configuration);
13101310
/* Eth67 does not support fast sync, see EIP-4938 */
13111311
assertHighestCapability(SyncMode.FAST, EthProtocol.ETH66, configuration);
13121312
}
@@ -1316,28 +1316,42 @@ public void shouldRespectFlagForMinCapability() {
13161316

13171317
// If min cap = v67, should not contain v66
13181318
final EthProtocolConfiguration configuration =
1319-
EthProtocolConfiguration.builder().minEthCapability(EthProtocolVersion.V67).build();
1319+
EthProtocolConfiguration.builder().minEthCapability(EthProtocolVersion.V69).build();
13201320

13211321
final EthProtocolManager ethManager = createEthManager(SyncMode.SNAP, configuration);
13221322

1323-
assertThat(ethManager.getSupportedCapabilities()).contains(EthProtocol.ETH67);
1324-
assertThat(ethManager.getSupportedCapabilities()).doesNotContain(EthProtocol.ETH66);
1323+
assertThat(ethManager.getSupportedCapabilities()).contains(EthProtocol.ETH69);
1324+
assertThat(ethManager.getSupportedCapabilities()).doesNotContain(EthProtocol.ETH68);
13251325
}
13261326

13271327
@Test
13281328
public void shouldRespectProtocolForMaxCapabilityIfFlagGreaterThanProtocol() {
13291329

1330-
// Test with max capability = 67. should respect protocol
1330+
// Test with max capability = 68. should respect protocol
13311331
final EthProtocolConfiguration configuration =
1332-
EthProtocolConfiguration.builder().maxEthCapability(EthProtocolVersion.V67).build();
1332+
EthProtocolConfiguration.builder().maxEthCapability(EthProtocolVersion.V68).build();
13331333

1334-
assertHighestCapability(SyncMode.SNAP, EthProtocol.ETH67, configuration);
1335-
assertHighestCapability(SyncMode.FULL, EthProtocol.ETH67, configuration);
1336-
assertHighestCapability(SyncMode.CHECKPOINT, EthProtocol.ETH67, configuration);
1334+
assertHighestCapability(SyncMode.SNAP, EthProtocol.ETH68, configuration);
1335+
assertHighestCapability(SyncMode.FULL, EthProtocol.ETH68, configuration);
1336+
assertHighestCapability(SyncMode.CHECKPOINT, EthProtocol.ETH68, configuration);
13371337
/* Eth67 does not support fast sync, see EIP-4938 */
13381338
assertHighestCapability(SyncMode.FAST, EthProtocol.ETH66, configuration);
13391339
}
13401340

1341+
@Test
1342+
public void shouldThrowExceptionWhenNoCapabilities() {
1343+
final EthProtocolConfiguration configuration =
1344+
EthProtocolConfiguration.builder()
1345+
.minEthCapability(EthProtocolVersion.V69)
1346+
.maxEthCapability(EthProtocolVersion.V68)
1347+
.build();
1348+
1349+
assertThatThrownBy(() -> createEthManager(SyncMode.SNAP, configuration))
1350+
.isInstanceOf(IllegalStateException.class)
1351+
.hasMessageContaining(
1352+
"No supported Eth protocol capabilities found. Check the configuration for min and max Eth protocol versions.");
1353+
}
1354+
13411355
private void assertHighestCapability(final SyncMode syncMode, final Capability capability) {
13421356
assertHighestCapability(syncMode, capability, EthProtocolConfiguration.defaultConfig());
13431357
}

ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/NewPooledTransactionHashesMessageSenderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ public void setUp() {
7272
when(pendingTransactions.getTransactionByHash(any())).thenReturn(Optional.of(tx));
7373

7474
when(peer1.getConnection())
75-
.thenReturn(new MockPeerConnection(Set.of(EthProtocol.ETH67), (cap, msg, conn) -> {}));
75+
.thenReturn(new MockPeerConnection(Set.of(EthProtocol.ETH68), (cap, msg, conn) -> {}));
7676
when(peer2.getConnection())
77-
.thenReturn(new MockPeerConnection(Set.of(EthProtocol.ETH67), (cap, msg, conn) -> {}));
77+
.thenReturn(new MockPeerConnection(Set.of(EthProtocol.ETH68), (cap, msg, conn) -> {}));
7878
}
7979

8080
@Test

0 commit comments

Comments
 (0)