forked from cerc-io/laconicd-deprecated
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
|
|
||
|
from web3 import Web3
|
||
|
|
||
|
from .expected_constants import (
|
||
|
EXPECTED_CALLTRACERS,
|
||
|
EXPECTED_CONTRACT_CREATE_TRACER,
|
||
|
EXPECTED_STRUCT_TRACER,
|
||
|
)
|
||
|
from .utils import (
|
||
|
ADDRS,
|
||
|
CONTRACTS,
|
||
|
KEYS,
|
||
|
deploy_contract,
|
||
|
send_transaction,
|
||
|
w3_wait_for_new_blocks,
|
||
|
)
|
||
|
|
||
|
|
||
|
def test_tracers(ethermint_rpc_ws):
|
||
|
w3: Web3 = ethermint_rpc_ws.w3
|
||
|
eth_rpc = w3.provider
|
||
|
gas_price = w3.eth.gas_price
|
||
|
tx = {"to": ADDRS["community"], "value": 100, "gasPrice": gas_price}
|
||
|
tx_hash = send_transaction(w3, tx, KEYS["validator"])["transactionHash"].hex()
|
||
|
|
||
|
tx_res = eth_rpc.make_request("debug_traceTransaction", [tx_hash])
|
||
|
assert tx_res["result"] == EXPECTED_STRUCT_TRACER, ""
|
||
|
|
||
|
tx_res = eth_rpc.make_request(
|
||
|
"debug_traceTransaction", [tx_hash, {"tracer": "callTracer"}]
|
||
|
)
|
||
|
assert tx_res["result"] == EXPECTED_CALLTRACERS, ""
|
||
|
|
||
|
tx_res = eth_rpc.make_request(
|
||
|
"debug_traceTransaction",
|
||
|
[tx_hash, {"tracer": "callTracer", "tracerConfig": "{'onlyTopCall':True}"}],
|
||
|
)
|
||
|
assert tx_res["result"] == EXPECTED_CALLTRACERS, ""
|
||
|
|
||
|
_, tx = deploy_contract(
|
||
|
w3,
|
||
|
CONTRACTS["TestERC20A"],
|
||
|
)
|
||
|
tx_hash = tx["transactionHash"].hex()
|
||
|
|
||
|
w3_wait_for_new_blocks(w3, 1)
|
||
|
|
||
|
tx_res = eth_rpc.make_request(
|
||
|
"debug_traceTransaction", [tx_hash, {"tracer": "callTracer"}]
|
||
|
)
|
||
|
tx_res["result"]["to"] = EXPECTED_CONTRACT_CREATE_TRACER["to"]
|
||
|
assert tx_res["result"] == EXPECTED_CONTRACT_CREATE_TRACER, ""
|