Esempio n. 1
0
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()}'