Skip to content

Commit

Permalink
Merge pull request #3390 from TrueBlocks/improve-state-call-2
Browse files Browse the repository at this point in the history
Adds a few tests for allowing ens names where previously only hex add…
  • Loading branch information
tjayrush authored Nov 15, 2023
2 parents 228b88e + fc57e81 commit 70e07b9
Show file tree
Hide file tree
Showing 8 changed files with 128 additions and 4 deletions.
5 changes: 5 additions & 0 deletions src/apps/chifra/internal/state/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,10 +196,15 @@ func (opts *StateOptions) getCaches() (m map[string]bool) {
}

// EXISTING_CODE
var useThis = true

// cleanCall does some hacky string stuff to convert a call's ENS names to addresses. It could have been
// done with a regex, but I don't know how to do that in Go.
func cleanCall(call string) string {
ret := strings.Replace(strings.Trim(call, "'"), "'", "\"", -1)
if !useThis {
return ret
}
if strings.Contains(ret, ".eth") {
found := []string{}
stripped := strings.Replace(ret, "(", "|", -1)
Expand Down
12 changes: 8 additions & 4 deletions src/apps/chifra/pkg/parser/contract_argument_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
type ArgAddress base.Address

func (b *ArgAddress) Capture(values []string) error {
// fmt.Println("ArgAddress::Capture", values)
debug("ArgAddress::Capture", values)
*b = ArgAddress(base.HexToAddress(values[0]))
return nil
}
Expand All @@ -22,7 +22,7 @@ func (b *ArgAddress) Capture(values []string) error {
type ArgBool bool

func (b *ArgBool) Capture(values []string) error {
// fmt.Println("ArgBool::Capture", values)
debug("ArgBool::Capture", values)
*b = values[0] == "true"
return nil
}
Expand All @@ -35,7 +35,7 @@ type ArgHex struct {
}

func (h *ArgHex) Capture(values []string) error {
// fmt.Println("ArgHex::Capture", values)
debug("ArgHex::Capture", values)
hexLiteral := values[0]

if valid, _ := base.IsValidHex("", hexLiteral, 20); !valid {
Expand All @@ -56,7 +56,7 @@ type ArgNumber struct {
}

func (n *ArgNumber) Capture(values []string) error {
// fmt.Println("ArgNumber::Capture", values)
debug("ArgNumber::Capture", values)
literal := values[0]

// Atoi parses into `int` type, which is used by go-ethereum
Expand Down Expand Up @@ -126,3 +126,7 @@ func (n *ArgNumber) Convert(abiType *abi.Type) (any, error) {

return nil, fmt.Errorf("cannot convert %v to number", n.Interface())
}

func debug(name string, values []string) {
// fmt.Printf("%s%s: %v%s\n", colors.Green, name, values, colors.Off)
}
4 changes: 4 additions & 0 deletions src/dev_tools/testRunner/testCases/tools/getState.csv
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ on ,both ,fast ,state ,tools/getState ,contract_call_fail1 ,y
on ,both ,fast ,state ,tools/getState ,contract_call_fail2 ,y ,call = '12065fe0()' & addrs = 0xa4f29fc548856180f6b1e319ee4d86715875cce4 & blocks = 6523977-6540000:2000
on ,both ,fast ,state ,tools/getState ,contract_call_fail4 ,y ,call = '0x12065fe01()' & addrs = 0xa4f29fc548856180f6b1e319ee4d86715875cce4 & blocks = 6523977-6540000:2000
on ,both ,fast ,state ,tools/getState ,contract_call ,y ,call = '0x12065fe0()' & addrs = 0xa4f29fc548856180f6b1e319ee4d86715875cce4 & blocks = 6523977-6540000:2000
on ,api ,fast ,state ,tools/getState ,contract_call2_api ,y ,call = 'manifestHashMap(0xf503017d7baf7fbc0fff7492b751025c6a78179b,\"mainnet\")' & addrs = unchainedindex.eth & blocks = 14976122 & fmt = json
on ,cmd ,fast ,state ,tools/getState ,contract_call2_cmd ,y ,call = 'manifestHashMap(0xf503017d7baf7fbc0fff7492b751025c6a78179b,"mainnet")' & addrs = unchainedindex.eth & blocks = 14976122 & fmt = json
on ,api ,fast ,state ,tools/getState ,contract_call2_api_ens ,y ,call = 'manifestHashMap(trueblocks.eth,\"mainnet\")' & addrs = unchainedindex.eth & blocks = 14976122 & fmt = json
on ,cmd ,fast ,state ,tools/getState ,contract_call2_cmd_ens ,y ,call = 'manifestHashMap(trueblocks.eth,"mainnet")' & addrs = unchainedindex.eth & blocks = 14976122 & fmt = json
on ,both ,fast ,state ,tools/getState ,uniswap_factory_getPair ,n ,call = 0xe6a439050000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 & addrs = 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f & blocks = 10092000 & fmt = csv
on ,both ,fast ,state ,tools/getState ,uniswap_token0 ,y ,call = '0x0dfe1681()' & addrs = 0xbb2b8038a1640196fbe3e38816f3e67cba72d940 & blocks = 10092000
on ,both ,fast ,state ,tools/getState ,uniswap_token0_name ,n ,call = '0x06fdde03()' & addrs = 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 & blocks = 10092000 & fmt = txt
Expand Down
1 change: 1 addition & 0 deletions src/dev_tools/testRunner/testcase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -541,6 +541,7 @@ CTestCase::CTestCase(const string_q& line, uint32_t id) {
replaceAll(options, "& ", "&");
replaceAll(options, " @ ", "@");
replaceAll(options, "@ ", "@");
replaceAll(options, ",", ",");
}
}

Expand Down
29 changes: 29 additions & 0 deletions test/gold/tools/getState/api_tests/getState_contract_call2_api.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
state?call='manifestHashMap(0xf503017d7baf7fbc0fff7492b751025c6a78179b,\"mainnet\")'&addrs=unchainedindex.eth&blocks=14976122&fmt=json
{
"data": [
{
"address": "0x0c316b7042b419d07d343f2f4f5bd54ff731183d",
"blockNumber": 14976122,
"bytes": "000000000000000000000000f503017d7baf7fbc0fff7492b751025c6a78179b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076d61696e6e657400000000000000000000000000000000000000000000000000",
"callResult": {
"encoding": "0x7087e4bd",
"name": "manifestHashMap",
"outputs": {
"val_0": "QmessHj4WFWuo4qiF8c1tyY53QHewqj9iy7sa1RLH86TDw"
},
"signature": "manifestHashMap(address,string)"
},
"encoding": "0x7087e4bd"
}
],
"meta": {
"client": "0xdeadbeef",
"finalized": "0xdeadbeef",
"staging": "0xdeadbeef",
"ripe": "0xdeadbeef",
"unripe": "0xdeadbeef",
"chainId": 1,
"networkId": 1,
"chain": "mainnet"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
state?call='manifestHashMap(trueblocks.eth,\"mainnet\")'&addrs=unchainedindex.eth&blocks=14976122&fmt=json
{
"data": [
{
"address": "0x0c316b7042b419d07d343f2f4f5bd54ff731183d",
"blockNumber": 14976122,
"bytes": "000000000000000000000000f503017d7baf7fbc0fff7492b751025c6a78179b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076d61696e6e657400000000000000000000000000000000000000000000000000",
"callResult": {
"encoding": "0x7087e4bd",
"name": "manifestHashMap",
"outputs": {
"val_0": "QmessHj4WFWuo4qiF8c1tyY53QHewqj9iy7sa1RLH86TDw"
},
"signature": "manifestHashMap(address,string)"
},
"encoding": "0x7087e4bd"
}
],
"meta": {
"client": "0xdeadbeef",
"finalized": "0xdeadbeef",
"staging": "0xdeadbeef",
"ripe": "0xdeadbeef",
"unripe": "0xdeadbeef",
"chainId": 1,
"networkId": 1,
"chain": "mainnet"
}
}
26 changes: 26 additions & 0 deletions test/gold/tools/getState/getState_contract_call2_cmd.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
chifra state --call 'manifestHashMap(0xf503017d7baf7fbc0fff7492b751025c6a78179b,mainnet)' unchainedindex.eth 14976122 --fmt json
TEST[DATE|TIME] Addrs: [0x0c316b7042b419d07d343f2f4f5bd54ff731183d]
TEST[DATE|TIME] Blocks: [14976122]
TEST[DATE|TIME] Call: manifestHashMap(0xf503017d7baf7fbc0fff7492b751025c6a78179b,"mainnet")
TEST[DATE|TIME] Caps: cache,decache,ether
TEST[DATE|TIME] Format: json
ArgHex::Capture: [0xf503017d7baf7fbc0fff7492b751025c6a78179b]
ArgHex::Capture: [0xf503017d7baf7fbc0fff7492b751025c6a78179b]
{
"data": [
{
"address": "0x0c316b7042b419d07d343f2f4f5bd54ff731183d",
"blockNumber": 14976122,
"bytes": "000000000000000000000000f503017d7baf7fbc0fff7492b751025c6a78179b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076d61696e6e657400000000000000000000000000000000000000000000000000",
"callResult": {
"encoding": "0x7087e4bd",
"name": "manifestHashMap",
"outputs": {
"val_0": "QmessHj4WFWuo4qiF8c1tyY53QHewqj9iy7sa1RLH86TDw"
},
"signature": "manifestHashMap(address,string)"
},
"encoding": "0x7087e4bd"
}
]
}
26 changes: 26 additions & 0 deletions test/gold/tools/getState/getState_contract_call2_cmd_ens.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
chifra state --call 'manifestHashMap(trueblocks.eth,mainnet)' unchainedindex.eth 14976122 --fmt json
TEST[DATE|TIME] Addrs: [0x0c316b7042b419d07d343f2f4f5bd54ff731183d]
TEST[DATE|TIME] Blocks: [14976122]
TEST[DATE|TIME] Call: manifestHashMap(0xf503017d7baf7fbc0fff7492b751025c6a78179b,"mainnet")
TEST[DATE|TIME] Caps: cache,decache,ether
TEST[DATE|TIME] Format: json
ArgHex::Capture: [0xf503017d7baf7fbc0fff7492b751025c6a78179b]
ArgHex::Capture: [0xf503017d7baf7fbc0fff7492b751025c6a78179b]
{
"data": [
{
"address": "0x0c316b7042b419d07d343f2f4f5bd54ff731183d",
"blockNumber": 14976122,
"bytes": "000000000000000000000000f503017d7baf7fbc0fff7492b751025c6a78179b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076d61696e6e657400000000000000000000000000000000000000000000000000",
"callResult": {
"encoding": "0x7087e4bd",
"name": "manifestHashMap",
"outputs": {
"val_0": "QmessHj4WFWuo4qiF8c1tyY53QHewqj9iy7sa1RLH86TDw"
},
"signature": "manifestHashMap(address,string)"
},
"encoding": "0x7087e4bd"
}
]
}

0 comments on commit 70e07b9

Please sign in to comment.