8000 pyClient: zeth mix, Invalid address format · Issue #165 · clearmatics/zeth · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
pyClient: zeth mix, Invalid address format #165
Closed
@Shirikatsu

Description

@Shirikatsu

While adding ethereum addresses as part of the flow, if checksum addresses are not used, a web3 formatting error is shown:

$ zeth mix --out ba210eef0a99e98b7930896ae38c93e21dd5eba1ae298de818fd56dcd09fc8b8:22ea0dcb0c86a74faa4246a5e45689bf10c22725653973d87e0297994d2bd11e,10 --vin 10
vin = 10
vout = 0
-------------- Get the proof --------------
PROOF GEN ROUND TRIP: 20.38115882873535 seconds
Traceback (most recent call last):
  File "/home/cc/Repositories/zeth/pyClient/env/bin/zeth", line 6, in <module>
    exec(compile(open(__file__).read(), __file__, 'exec'))
  File "/home/cc/Repositories/zeth/pyClient/commands/zeth", line 100, in <module>
    zeth()  # pylint: disable=no-value-for-parameter
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/cc/Repositories/zeth/pyClient/commands/zeth_mix.py", line 80, in mix
    tx_value)
  File "/home/cc/Repositories/zeth/pyClient/zeth/joinsplit.py", line 568, in joinsplit
    constants.DEFAULT_MIX_GAS_WEI)
  File "/home/cc/Repositories/zeth/pyClient/zeth/joinsplit.py", line 592, in mix
    self._zksnark)
  File "/home/cc/Repositories/zeth/pyClient/zeth/contracts.py", line 195, in mix
    ).transact({'from': sender_address, 'value': wei_pub_value, 'gas': call_gas})
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/contract.py", line 1151, in transact
    **self.kwargs
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/contract.py", line 1454, in transact_with_contract_function
    txn_hash = web3.eth.sendTransaction(transact_transaction)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/eth.py", line 268, in sendTransaction
    [transaction],
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/manager.py", line 109, in request_blocking
    response = self._make_request(method, params)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/manager.py", line 92, in _make_request
    return request_func(method, params)
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/formatting.py", line 50, in apply_formatters
    response = make_request(method, params)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/gas_price_strategy.py", line 18, in middleware
    return make_request(method, params)
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/formatting.py", line 48, in apply_formatters
    response = make_request(method, formatted_params)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/attrdict.py", line 18, in middleware
    response = make_request(method, params)
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/formatting.py", line 48, in apply_formatters
    response = make_request(method, formatted_params)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/normalize_errors.py", line 9, in middleware
    result = make_request(method, params)
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/formatting.py", line 48, in apply_formatters
    response = make_request(method, formatted_params)
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/middleware/formatting.py", line 47, in apply_formatters
    formatted_params = formatter(params)
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/eth_utils/functional.py", line 46, in inner
    return callback(fn(*args, **kwargs))
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/formatters.py", line 41, in apply_formatter_at_index
    yield formatter(item)
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/rpc_abi.py", line 69, in apply_abi_formatters_to_dict
    [data[field] for field in fields],
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/abi.py", line 442, in map_abi_data
    return pipe(data, *pipeline)
  File "cytoolz/functoolz.pyx", line 589, in cytoolz.functoolz.pipe
  File "cytoolz/functoolz.pyx", line 565, in cytoolz.functoolz.c_pipe
  File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/abi.py", line 474, in data_tree_map
    return recursive_map(map_to_typed_data, data_tree)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/decorators.py", line 35, in wrapped
    wrapped_val = to_wrap(*args)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/formatters.py", line 115, in recursive_map
    items_mapped = map_collection(recurse, data)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/formatters.py", line 102, in map_collection
    return datatype(map(func, collection))
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/formatters.py", line 114, in recurse
    return recursive_map(func, item)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/decorators.py", line 35, in wrapped
    wrapped_val = to_wrap(*args)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/formatters.py", line 116, in recursive_map
    return func(items_mapped)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/abi.py", line 471, in map_to_typed_data
    return ABITypedData(func(*elements))
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/normalizers.py", line 50, in wrapper
    modified = to_wrap(abi_type, data)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/normalizers.py", line 129, in abi_address_to_hex
    validate_address(data)
  File "/home/cc/Repositories/zeth/pyClient/env/lib/python3.7/site-packages/web3/utils/validation.py", line 163, in validate_address
    value,
web3.exceptions.InvalidAddress: ('Web3.py only accepts checksum addresses. The software that gave you this non-checksum address should be considered unsafe, please file it as a bug on their platform. Try using an ENS name instead. Or, if you must accept lower safety, use Web3.toChecksumAddress(lower_case_address).', '0x3d7ca5d783ce27f660b663bf3e51753ea4065c0b')

Example:

echo 0x3d7ca5d783ce27f660b663bf3e51753ea4065c0b > eth-address causes mix to fail.

echo 0x3d7Ca5d783CE27F660B663bF3e51753eA4065c0B > eth-address causes mix to succeed.

Suggestion

Add an additional line during address parsing that converts the address to checksum address:

from web3 import Web3

Web3.toChecksumAddress("0x3d7ca5d783ce27f660b663bf3e51753ea4065c0b")
>>> '0x3d7Ca5d783CE27F660B663bF3e51753eA4065c0B'

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingwalletTask related to the wallet implementation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    0