def contract_call(ctx, deploy_descriptor, function, params, return_type): try: with open(deploy_descriptor) as fp: contract = json.load(fp) source = contract.get('source') bytecode = contract.get('bytecode') address = contract.get('address') kp, _ = _keypair() contract = Contract(source, bytecode=bytecode, address=address, client=_epoch_cli()) result = contract.tx_call(kp, function, params, gas=40000000) _pp([ ('Contract address', contract.address), ('Gas price', result.gas_price), ('Gas used', result.gas_used), ('Return value (encoded)', result.return_value), ]) if result.return_type == 'ok': value, remote_type = contract.decode_data( result.return_value, return_type) _pp([ ('Return value', value), ('Return remote type', remote_type), ]) pass except Exception as e: print(e)
def test_sophia_contract_tx_call(): contract = Contract(aer_identity_contract, Contract.SOPHIA) address, tx = contract.tx_create_wait(KEYPAIR, gas=1000) print("contract: ", address) print("tx contract: ", tx) result = contract.tx_call(address, KEYPAIR, 'main', '42') assert result is not None assert result.return_type == 'ok' assert result.return_value.lower() == f'0x{hex(42)[2:].zfill(64).lower()}'