laconicd-deprecated/tests/integration_tests/test_gas.py

63 lines
2.4 KiB
Python
Raw Normal View History

from .utils import ADDRS, CONTRACTS, KEYS, deploy_contract, send_transaction
2022-11-18 06:19:25 +00:00
def test_gas_eth_tx(geth, ethermint):
2022-11-18 06:19:25 +00:00
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_receipt = send_transaction(geth.w3, tx, KEYS["validator"])
2022-11-18 06:19:25 +00:00
# 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_receipt = send_transaction(ethermint.w3, tx, KEYS["validator"])
2022-11-18 06:19:25 +00:00
# ensure that the gasUsed is equivalent
assert geth_receipt.gasUsed == ethermint_receipt.gasUsed
2022-11-18 06:19:25 +00:00
def test_gas_deployment(geth, ethermint):
# deploy an identical contract on geth and ethermint
# ensure that the gasUsed is equivalent
_, geth_contract_receipt = deploy_contract(
2022-11-18 06:19:25 +00:00
geth.w3,
CONTRACTS["TestERC20A"])
_, ethermint_contract_receipt = deploy_contract(
2022-11-18 06:19:25 +00:00
ethermint.w3,
CONTRACTS["TestERC20A"])
assert geth_contract_receipt.gasUsed == ethermint_contract_receipt.gasUsed
def test_gas_call(geth, ethermint):
function_input = 10
# deploy an identical contract on geth and ethermint
# ensure that the contract has a function which consumes non-trivial gas
geth_contract, _ = deploy_contract(
geth.w3,
CONTRACTS["BurnGas"])
ethermint_contract, _ = deploy_contract(
ethermint.w3,
CONTRACTS["BurnGas"])
# call the contract and get tx receipt for geth
geth_gas_price = geth.w3.eth.gas_price
geth_txhash = (geth_contract.functions
.burnGas(function_input)
.transact({'from': ADDRS["validator"], "gasPrice": geth_gas_price}))
geth_call_receipt = geth.w3.eth.wait_for_transaction_receipt(geth_txhash)
# repeat the above for ethermint
ethermint_gas_price = ethermint.w3.eth.gas_price
ethermint_txhash = (ethermint_contract.functions
.burnGas(function_input)
.transact({'from': ADDRS["validator"],
"gasPrice": ethermint_gas_price}))
ethermint_call_receipt = (ethermint.w3.
eth.wait_for_transaction_receipt(ethermint_txhash))
# ensure that the gasUsed is equivalent
assert geth_call_receipt.gasUsed == ethermint_call_receipt.gasUsed