Skip to content

Commit 40cfc80

Browse files
fab-10macfarla
andauthored
New RPC methods miner_setExtraData and miner_getExtraData (#7078)
* New RPC methods to set and get block extra data Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net> * Remove redundant methods to set the extra data Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net> * miner_getExtraData unit tests Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net> * Add CHANGELOG Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net> * Apply suggestions from code review Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com> Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net> --------- Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net> Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
1 parent b4b6adc commit 40cfc80

File tree

20 files changed

+291
-73
lines changed

20 files changed

+291
-73
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
- Update Gradle to 7.6.4 [#7030](https://github.com/hyperledger/besu/pull/7030)
4949
- Remove deprecated Goerli testnet [#7049](https://github.com/hyperledger/besu/pull/7049)
5050
- Default bonsai to use full-flat db and code-storage-by-code-hash [#6984](https://github.com/hyperledger/besu/pull/6894)
51+
- New RPC methods miner_setExtraData and miner_getExtraData [#7078](https://github.com/hyperledger/besu/pull/7078)
5152

5253
### Bug fixes
5354
- Fix txpool dump/restore race condition [#6665](https://github.com/hyperledger/besu/pull/6665)

besu/src/main/java/org/hyperledger/besu/chainimport/JsonBlockImporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ private void setOptionalFields(
136136
// For simplicity only set these for PoW consensus algorithms.
137137
// Other consensus algorithms use these fields for special purposes or ignore them.
138138
miner.setCoinbase(blockData.getCoinbase().orElse(Address.ZERO));
139-
miner.setExtraData(blockData.getExtraData().orElse(Bytes.EMPTY));
139+
controller.getMiningParameters().setExtraData(blockData.getExtraData().orElse(Bytes.EMPTY));
140140
} else if (blockData.getCoinbase().isPresent() || blockData.getExtraData().isPresent()) {
141141
// Fail if these fields are set for non-ethash chains
142142
final Stream.Builder<String> fields = Stream.builder();

consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueMinerExecutorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ public void shouldUseLatestVanityData() {
200200
null,
201201
ethScheduler);
202202

203-
executor.setExtraData(modifiedVanityData);
203+
miningParameters.setExtraData(modifiedVanityData);
204204
final Bytes extraDataBytes = executor.calculateExtraData(blockHeaderBuilder.buildHeader());
205205

206206
final CliqueExtraData cliqueExtraData =

consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingMiningCoordinator.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import java.util.concurrent.CompletableFuture;
3030

3131
import com.google.common.annotations.VisibleForTesting;
32-
import org.apache.tuweni.bytes.Bytes;
3332
import org.slf4j.Logger;
3433
import org.slf4j.LoggerFactory;
3534

@@ -108,11 +107,6 @@ public Wei getMinPriorityFeePerGas() {
108107
return activeMiningCoordinator.getMinPriorityFeePerGas();
109108
}
110109

111-
@Override
112-
public void setExtraData(final Bytes extraData) {
113-
activeMiningCoordinator.setExtraData(extraData);
114-
}
115-
116110
@Override
117111
public Optional<Address> getCoinbase() {
118112
return activeMiningCoordinator.getCoinbase();

consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,16 +124,6 @@ public BlockCreator create(final BlockHeader parentHeader, final int round) {
124124
ethScheduler);
125125
}
126126

127-
/**
128-
* Sets extra data.
129-
*
130-
* @param extraData the extra data
131-
*/
132-
public void setExtraData(final Bytes extraData) {
133-
134-
miningParameters.setExtraData(extraData.copy());
135-
}
136-
137127
/**
138128
* Sets min transaction gas price.
139129
*

consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftMiningCoordinator.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import java.util.Optional;
3434
import java.util.concurrent.atomic.AtomicReference;
3535

36-
import org.apache.tuweni.bytes.Bytes;
3736
import org.slf4j.Logger;
3837
import org.slf4j.LoggerFactory;
3938

@@ -154,11 +153,6 @@ public Wei getMinPriorityFeePerGas() {
154153
return blockCreatorFactory.getMinPriorityFeePerGas();
155154
}
156155

157-
@Override
158-
public void setExtraData(final Bytes extraData) {
159-
blockCreatorFactory.setExtraData(extraData);
160-
}
161-
162156
@Override
163157
public Optional<Address> getCoinbase() {
164158
return Optional.of(blockCreatorFactory.getLocalAddress());

consensus/common/src/test/java/org/hyperledger/besu/consensus/common/MigratingMiningCoordinatorTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import java.util.List;
4141
import java.util.function.Consumer;
4242

43-
import org.apache.tuweni.bytes.Bytes;
4443
import org.junit.jupiter.api.BeforeEach;
4544
import org.junit.jupiter.api.Test;
4645
import org.junit.jupiter.api.extension.ExtendWith;
@@ -162,11 +161,6 @@ public void delegatesToActiveMiningCoordinator() {
162161
coordinator2,
163162
coordinator1);
164163

165-
verifyDelegation(
166-
c -> c.setExtraData(Bytes.EMPTY), GENESIS_BLOCK_NUMBER, coordinator1, coordinator2);
167-
verifyDelegation(
168-
c -> c.setExtraData(Bytes.EMPTY), MIGRATION_BLOCK_NUMBER, coordinator2, coordinator1);
169-
170164
verifyDelegation(
171165
MiningCoordinator::getCoinbase, GENESIS_BLOCK_NUMBER, coordinator1, coordinator2);
172166
verifyDelegation(

consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftMiningCoordinatorTest.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import java.util.Collections;
3636
import java.util.concurrent.TimeUnit;
3737

38-
import org.apache.tuweni.bytes.Bytes;
3938
import org.junit.jupiter.api.BeforeEach;
4039
import org.junit.jupiter.api.Test;
4140
import org.junit.jupiter.api.extension.ExtendWith;
@@ -89,13 +88,6 @@ public void getsMinTransactionGasPrice() {
8988
assertThat(bftMiningCoordinator.getMinTransactionGasPrice()).isEqualTo(minGasPrice);
9089
}
9190

92-
@Test
93-
public void setsTheExtraData() {
94-
final Bytes extraData = Bytes.fromHexStringLenient("0x1234");
95-
bftMiningCoordinator.setExtraData(extraData);
96-
verify(bftBlockCreatorFactory).setExtraData(extraData);
97-
}
98-
9991
@Test
10092
public void addsNewChainHeadEventWhenNewCanonicalHeadBlockEventReceived() throws Exception {
10193
BlockAddedEvent headAdvancement =

consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinator.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
import java.util.function.Supplier;
6262

6363
import com.google.common.annotations.VisibleForTesting;
64-
import org.apache.tuweni.bytes.Bytes;
6564
import org.apache.tuweni.bytes.Bytes32;
6665
import org.slf4j.Logger;
6766
import org.slf4j.LoggerFactory;
@@ -225,11 +224,6 @@ public Wei getMinPriorityFeePerGas() {
225224
return miningParameters.getMinPriorityFeePerGas();
226225
}
227226

228-
@Override
229-
public void setExtraData(final Bytes extraData) {
230-
this.miningParameters.setExtraData(extraData);
231-
}
232-
233227
@Override
234228
public Optional<Address> getCoinbase() {
235229
return miningParameters.getCoinbase();

consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/blockcreation/TransitionCoordinator.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import java.util.Optional;
3434
import java.util.concurrent.CompletableFuture;
3535

36-
import org.apache.tuweni.bytes.Bytes;
3736
import org.apache.tuweni.bytes.Bytes32;
3837

3938
/** The Transition coordinator. */
@@ -107,12 +106,6 @@ public Wei getMinPriorityFeePerGas() {
107106
return dispatchFunctionAccordingToMergeState(MiningCoordinator::getMinPriorityFeePerGas);
108107
}
109108

110-
@Override
111-
public void setExtraData(final Bytes extraData) {
112-
miningCoordinator.setExtraData(extraData);
113-
mergeCoordinator.setExtraData(extraData);
114-
}
115-
116109
@Override
117110
public Optional<Address> getCoinbase() {
118111
return dispatchFunctionAccordingToMergeState(MiningCoordinator::getCoinbase);

0 commit comments

Comments
 (0)