Add consolidationRequestContract in jsonGenesisConfig (#7647)

* Include consolidationRequestContract in jsonGenesisConfigOptions

Signed-off-by: gconnect <agatevureglory@gmail.com>

* Update changelog and ran spotlessApply

Signed-off-by: gconnect <agatevureglory@gmail.com>

* Rename consolidationRequestPredeployAddress to consolidationRequestContractAddress

Signed-off-by: gconnect <agatevureglory@gmail.com>

* Create request contract addresses class

Signed-off-by: gconnect <agatevureglory@gmail.com>

* Update method calls

Signed-off-by: gconnect <agatevureglory@gmail.com>

* Refactor RequestContractAddresses class and update method calls and test

Signed-off-by: gconnect <agatevureglory@gmail.com>

---------

Signed-off-by: gconnect <agatevureglory@gmail.com>
Co-authored-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net>
This commit is contained in:
Glory Agatevure
2024-09-24 06:06:16 +01:00
committed by GitHub
parent 4f07e76a6c
commit 04ba15aa92
10 changed files with 148 additions and 22 deletions

View File

@@ -539,4 +539,11 @@ public interface GenesisConfigOptions {
* @return the deposit address
*/
Optional<Address> getDepositContractAddress();
/**
* The consolidation request contract address
*
* @return the consolidation request contract address
*/
Optional<Address> getConsolidationRequestContractAddress();
}

View File

@@ -52,6 +52,8 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions {
private static final String WITHDRAWAL_REQUEST_CONTRACT_ADDRESS_KEY =
"withdrawalrequestcontractaddress";
private static final String DEPOSIT_CONTRACT_ADDRESS_KEY = "depositcontractaddress";
private static final String CONSOLIDATION_REQUEST_CONTRACT_ADDRESS_KEY =
"consolidationrequestcontractaddress";
private final ObjectNode configRoot;
private final Map<String, String> configOverrides = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
@@ -453,6 +455,13 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions {
return inputAddress.map(Address::fromHexString);
}
@Override
public Optional<Address> getConsolidationRequestContractAddress() {
Optional<String> inputAddress =
JsonUtil.getString(configRoot, CONSOLIDATION_REQUEST_CONTRACT_ADDRESS_KEY);
return inputAddress.map(Address::fromHexString);
}
@Override
public Map<String, Object> asMap() {
final ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
@@ -504,6 +513,8 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions {
getWithdrawalRequestContractAddress()
.ifPresent(l -> builder.put("withdrawalRequestContractAddress", l));
getDepositContractAddress().ifPresent(l -> builder.put("depositContractAddress", l));
getConsolidationRequestContractAddress()
.ifPresent(l -> builder.put("consolidationRequestContractAddress", l));
if (isClique()) {
builder.put("clique", getCliqueConfigOptions().asMap());

View File

@@ -467,6 +467,11 @@ public class StubGenesisConfigOptions implements GenesisConfigOptions, Cloneable
return Optional.empty();
}
@Override
public Optional<Address> getConsolidationRequestContractAddress() {
return Optional.empty();
}
/**
* Homestead block stub genesis config options.
*

View File

@@ -382,6 +382,33 @@ class GenesisConfigOptionsTest {
.containsValue(Address.ZERO);
}
@Test
void shouldGetConsolidationRequestContractAddress() {
final GenesisConfigOptions config =
fromConfigOptions(
singletonMap(
"consolidationRequestContractAddress",
"0x00000000219ab540356cbb839cbe05303d7705fa"));
assertThat(config.getConsolidationRequestContractAddress())
.hasValue(Address.fromHexString("0x00000000219ab540356cbb839cbe05303d7705fa"));
}
@Test
void shouldNotHaveConsolidationRequestContractAddressWhenEmpty() {
final GenesisConfigOptions config = fromConfigOptions(emptyMap());
assertThat(config.getConsolidationRequestContractAddress()).isEmpty();
}
@Test
void asMapIncludesConsolidationRequestContractAddress() {
final GenesisConfigOptions config =
fromConfigOptions(Map.of("consolidationRequestContractAddress", "0x0"));
assertThat(config.asMap())
.containsOnlyKeys("consolidationRequestContractAddress")
.containsValue(Address.ZERO);
}
private GenesisConfigOptions fromConfigOptions(final Map<String, Object> configOptions) {
final ObjectNode rootNode = JsonUtil.createEmptyObjectNode();
final ObjectNode options = JsonUtil.objectNodeFromMap(configOptions);