diff --git a/foundation/src/main/resources/chains.yaml b/foundation/src/main/resources/chains.yaml index b9de05b02..abc8e44d5 100644 --- a/foundation/src/main/resources/chains.yaml +++ b/foundation/src/main/resources/chains.yaml @@ -213,8 +213,6 @@ chain-settings: settings: expected-block-time: 2.7s allow-pruning-requirement: true - options: - disable-validation: true lags: syncing: 40 lagging: 20 @@ -240,8 +238,6 @@ chain-settings: settings: expected-block-time: 260ms allow-pruning-requirement: true - options: - disable-validation: true lags: syncing: 40 lagging: 20 @@ -358,7 +354,6 @@ chain-settings: allow-pruning-requirement: true options: validate-peers: false - validate-syncing: false lags: syncing: 10 lagging: 5 @@ -1271,7 +1266,6 @@ chain-settings: settings: options: validate-peers: false - validate-syncing: false fork-choice: quorum expected-block-time: 300ms lags: diff --git a/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJson.java b/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJson.java deleted file mode 100644 index ed6b3ffaa..000000000 --- a/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJson.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2016-2019 Igor Artamonov, All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.emeraldpay.dshackle.upstream.ethereum.json; - -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; - -@JsonDeserialize(using = SyncingJsonDeserializer.class) -@JsonSerialize(using = SyncingJsonSerializer.class) -public class SyncingJson { - - private boolean syncing; - - private Long startingBlock; - private Long currentBlock; - private Long highestBlock; - - public boolean isSyncing() { - return syncing; - } - - public void setSyncing(boolean syncing) { - this.syncing = syncing; - } - - public Long getStartingBlock() { - return startingBlock; - } - - public void setStartingBlock(Long startingBlock) { - this.startingBlock = startingBlock; - } - - public Long getCurrentBlock() { - return currentBlock; - } - - public void setCurrentBlock(Long currentBlock) { - this.currentBlock = currentBlock; - } - - public Long getHighestBlock() { - return highestBlock; - } - - public void setHighestBlock(Long highestBlock) { - this.highestBlock = highestBlock; - } -} diff --git a/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJsonDeserializer.java b/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJsonDeserializer.java deleted file mode 100644 index f146f7808..000000000 --- a/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJsonDeserializer.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2016-2019 Igor Artamonov, All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.emeraldpay.dshackle.upstream.ethereum.json; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; - -import java.io.IOException; - -public class SyncingJsonDeserializer extends EtherJsonDeserializer { - - @Override - public SyncingJson deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { - JsonNode node = jp.readValueAsTree(); - SyncingJson resp = new SyncingJson(); - if (node.isBoolean()) { - resp.setSyncing(node.asBoolean()); - } else { - resp.setSyncing(true); - resp.setStartingBlock(getLong(node, "startingBlock")); - resp.setCurrentBlock(getLong(node, "currentBlock")); - resp.setHighestBlock(getLong(node, "highestBlock")); - } - return resp; - } -} diff --git a/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJsonSerializer.java b/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJsonSerializer.java deleted file mode 100644 index 09e3d7d63..000000000 --- a/src/main/java/io/emeraldpay/dshackle/upstream/ethereum/json/SyncingJsonSerializer.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2016-2019 Igor Artamonov, All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.emeraldpay.dshackle.upstream.ethereum.json; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; - -import java.io.IOException; - -public class SyncingJsonSerializer extends EtherJsonSerializer { - - @Override - public void serialize(SyncingJson value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - if (value == null) { - gen.writeNull(); - } else if (value.isSyncing()) { - gen.writeStartObject(); - writeField(gen, "startingBlock", value.getStartingBlock()); - writeField(gen, "currentBlock", value.getCurrentBlock()); - writeField(gen, "highestBlock", value.getHighestBlock()); - gen.writeEndObject(); - } else { - gen.writeBoolean(false); - } - } -} diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt index c46fad378..204c35565 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/ethereum/EthereumUpstreamValidator.kt @@ -30,7 +30,6 @@ import io.emeraldpay.dshackle.upstream.UpstreamAvailability import io.emeraldpay.dshackle.upstream.ValidateUpstreamSettingsResult import io.emeraldpay.dshackle.upstream.ethereum.domain.Address import io.emeraldpay.dshackle.upstream.ethereum.hex.HexData -import io.emeraldpay.dshackle.upstream.ethereum.json.SyncingJson import io.emeraldpay.dshackle.upstream.ethereum.json.TransactionCallJson import io.emeraldpay.dshackle.upstream.rpcclient.ListParams import org.springframework.scheduling.concurrent.CustomizableThreadFactory @@ -58,7 +57,15 @@ open class EthereumUpstreamValidator @JvmOverloads constructor( override fun validateSyncingRequest(): ValidateSyncingRequest { return ValidateSyncingRequest( ChainRequest("eth_syncing", ListParams()), - ) { bytes -> objectMapper.readValue(bytes, SyncingJson::class.java).isSyncing } + ) { bytes -> + val raw = Global.objectMapper.readTree(bytes) + if (raw.isBoolean) { + raw.asBoolean() + } else { + log.warn("Received syncing object ${raw.toPrettyString()} for upstream ${upstream.getId()}") + true + } + } } override fun validatePeersRequest(): ValidatePeersRequest {