eth_getLogs call selector supports blockHash parameter (#279)

This commit is contained in:
Vyacheslav
2023-08-12 11:15:56 +03:00
committed by GitHub
parent 6766779ddd
commit 6ff75f0e7c
2 changed files with 9 additions and 8 deletions

View File

@@ -116,12 +116,8 @@ class EthereumCallSelector(
return if (blockTag.startsWith("{") && list[pos] is Map<*, *>) {
val obj = list[pos] as Map<*, *>
when {
paramName != null -> {
return if (obj.containsKey(paramName)) {
blockSelectorByTag(obj[paramName].toString(), head)
} else {
Mono.empty()
}
paramName != null && obj.containsKey(paramName) -> {
return blockSelectorByTag(obj[paramName].toString(), head)
}
obj.containsKey("blockNumber") -> {
return blockSelectorByTag(obj["blockNumber"].toString(), head)
@@ -143,7 +139,7 @@ class EthereumCallSelector(
val minHeight: Long? = when (tag) {
"latest" -> head.getCurrentHeight()
"pending" -> null
"earliest" -> 0L // for earliest it doesn't nothing, we expect to have 0 block
"earliest" -> 0L // for earliest it does nothing, we expect to have 0 block
else -> if (tag.startsWith("0x") || tag.toLongOrNull() != null) {
return if (tag.length == 66) { // 32-byte hash is represented as 0x + 64 characters
blockByHash(tag)

View File

@@ -341,7 +341,11 @@ class EthereumCallSelectorSpec extends Specification {
def "Get height matcher for getLogs and eth_newFilter method"() {
setup:
def cache = Stub(Caches)
def cache = Mock(Caches) { caches ->
caches.getLastHeightByHash() >> Mock(HeightByHashMemCache) { memCache ->
memCache.read(BlockId.from("0xa29ddfc1b37d0b6d0c4a670fa54778656e890d8bbc1b3a6f7d913bc9eb5e03a1")) >> Mono.just(46208179L)
}
}
def callSelector = new EthereumCallSelector(cache)
def head = Mock(Head) {
_ * getCurrentHeight() >> 17654321L
@@ -361,6 +365,7 @@ class EthereumCallSelectorSpec extends Specification {
"eth_getLogs" | '[{"toBlock":"0xfbfe3b"}]' | 16514619L
"eth_getLogs" | '[{"toBlock":"latest"}]' | 17654321L
"eth_getLogs" | '[{"toBlock":"earliest"}]' | 0L
"eth_getLogs" | '[{"blockHash":"0xa29ddfc1b37d0b6d0c4a670fa54778656e890d8bbc1b3a6f7d913bc9eb5e03a1"}]' | 46208179L
"eth_newFilter" | '[{"toBlock":"0xfbfe2b", "toBlock":"0xfbfe3b"}]' | 16514619L
"eth_newFilter" | '[{"toBlock":"0xfbfe3b", "toBlock":"latest"}]' | 17654321L
"eth_newFilter" | '[{"toBlock":"0xfbfe3b", "toBlock":"earliest"}]' | 0L