diff --git a/tests/integration_tests/test_gas.py b/tests/integration_tests/test_gas.py new file mode 100644 index 00000000..ecdc8cf0 --- /dev/null +++ b/tests/integration_tests/test_gas.py @@ -0,0 +1,37 @@ +from .utils import ( + ADDRS, + CONTRACTS, + KEYS, + deploy_contract, + send_transaction, + w3_wait_for_new_blocks, +) + + +def test_equivalent_gas_consumption(geth, ethermint): + tx_value = 10 + + # send a transaction with geth + geth_gas_price = geth.w3.eth.gas_price + tx = {"to": ADDRS["community"], "value": tx_value, "gasPrice": geth_gas_price} + geth_reciept = send_transaction(geth.w3, tx, KEYS["validator"]) + + # send an equivalent transaction with ethermint + ethermint_gas_price = ethermint.w3.eth.gas_price + tx = {"to": ADDRS["community"], "value": tx_value, "gasPrice": ethermint_gas_price} + ethermint_reciept = send_transaction(ethermint.w3, tx, KEYS["validator"]) + + # ensure that the gasUsed is equivalent + assert geth_reciept.gasUsed == ethermint_reciept.gasUsed + + w3_wait_for_new_blocks(geth.w3, 5) + w3_wait_for_new_blocks(ethermint.w3, 5) + + # repeat the above process with contract deployment + _, geth_contract_reciept = deploy_contract( + geth.w3, + CONTRACTS["TestERC20A"]) + _, ethermint_contract_reciept = deploy_contract( + ethermint.w3, + CONTRACTS["TestERC20A"]) + assert geth_contract_reciept.gasUsed == ethermint_contract_reciept.gasUsed