@@ -41,7 +41,7 @@ class AggregatedCallMethods(
|
|||||||
override fun getQuorumFor(method: String): CallQuorum {
|
override fun getQuorumFor(method: String): CallQuorum {
|
||||||
return delegates.find {
|
return delegates.find {
|
||||||
it.isAllowed(method) || it.isHardcoded(method)
|
it.isAllowed(method) || it.isHardcoded(method)
|
||||||
}?.getQuorumFor(method) ?: throw IllegalStateException("No quorum for $method")
|
}?.getQuorumFor(method) ?: throw IllegalStateException("No executor delegate for $method")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ class DefaultEthereumMethods(
|
|||||||
"eth_coinbase",
|
"eth_coinbase",
|
||||||
"eth_mining",
|
"eth_mining",
|
||||||
"eth_hashrate",
|
"eth_hashrate",
|
||||||
"eth_accounts"
|
"eth_accounts",
|
||||||
|
"eth_chainId"
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun getQuorumFor(method: String): CallQuorum {
|
override fun getQuorumFor(method: String): CallQuorum {
|
||||||
@@ -125,6 +126,23 @@ class DefaultEthereumMethods(
|
|||||||
else -> throw RpcException(-32602, "Invalid chain")
|
else -> throw RpcException(-32602, "Invalid chain")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
"eth_chainId" -> {
|
||||||
|
when {
|
||||||
|
Chain.ETHEREUM == chain -> {
|
||||||
|
"0x0"
|
||||||
|
}
|
||||||
|
Chain.ETHEREUM_CLASSIC == chain -> {
|
||||||
|
"0x3d"
|
||||||
|
}
|
||||||
|
Chain.TESTNET_MORDEN == chain -> {
|
||||||
|
"0x3c"
|
||||||
|
}
|
||||||
|
Chain.TESTNET_KOVAN == chain -> {
|
||||||
|
"0x2a"
|
||||||
|
}
|
||||||
|
else -> throw RpcException(-32602, "Invalid chain")
|
||||||
|
}
|
||||||
|
}
|
||||||
"net_peerCount" -> {
|
"net_peerCount" -> {
|
||||||
"\"0x2a\""
|
"\"0x2a\""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package io.emeraldpay.dshackle.upstream.calls
|
||||||
|
|
||||||
|
import io.emeraldpay.grpc.Chain
|
||||||
|
import spock.lang.Specification
|
||||||
|
|
||||||
|
class DefaultEthereumMethodsSpec extends Specification {
|
||||||
|
|
||||||
|
def "eth_chainId is hardcoded"() {
|
||||||
|
setup:
|
||||||
|
def methods = new DefaultEthereumMethods(Chain.ETHEREUM)
|
||||||
|
when:
|
||||||
|
def act = methods.isHardcoded("eth_chainId")
|
||||||
|
then:
|
||||||
|
act
|
||||||
|
}
|
||||||
|
|
||||||
|
def "Provides hardcoded correct chainId"() {
|
||||||
|
expect:
|
||||||
|
new String(new DefaultEthereumMethods(chain).executeHardcoded("eth_chainId")) == id
|
||||||
|
where:
|
||||||
|
chain | id
|
||||||
|
Chain.ETHEREUM | "0x0"
|
||||||
|
Chain.ETHEREUM_CLASSIC | "0x3d"
|
||||||
|
Chain.TESTNET_KOVAN | "0x2a"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user