Suspected infinite recursion in jacobian
(Submitting as instructed on Gitter by @carver .)
- Version: eth-keys==0.2.0b3, eth-tester[py-evm]==0.1.0b33, py-evm=0.2.0a33
- Python: 3.6.6
- OS: linux (inside docker on osx)
What was wrong?
When running a transaction in our test suited, the following error showed up. The error appears like an infinite loop/recursion. It appears intermittently and I do not have solid way of reproducing it.
Please include any of the following that are applicable:
- The code which produced the error
- The full output of the error
tests/audit/test_audit.py:1255: in __send_done_message
{"from": self.__config.account}
tests/audit/test_audit.py:115: in __safe_transact
raise e
tests/audit/test_audit.py:111: in __safe_transact
return contract_entity.transact(tx_args)
/usr/lib/python3.6/site-packages/web3/contract.py:1034: in transact
**self.kwargs)
/usr/lib/python3.6/site-packages/web3/contract.py:1311: in transact_with_contract_function
txn_hash = web3.eth.sendTransaction(transact_transaction)
/usr/lib/python3.6/site-packages/web3/eth.py:244: in sendTransaction
[transaction],
/usr/lib/python3.6/site-packages/web3/manager.py:103: in request_blocking
response = self._make_request(method, params)
/usr/lib/python3.6/site-packages/web3/manager.py:86: in _make_request
return request_func(method, params)
/usr/lib/python3.6/site-packages/web3/middleware/gas_price_strategy.py:18: in middleware
return make_request(method, params)
/usr/lib/python3.6/site-packages/web3/middleware/formatting.py:21: in middleware
response = make_request(method, formatted_params)
/usr/lib/python3.6/site-packages/web3/middleware/attrdict.py:18: in middleware
response = make_request(method, params)
/usr/lib/python3.6/site-packages/web3/middleware/formatting.py:21: in middleware
response = make_request(method, formatted_params)
/usr/lib/python3.6/site-packages/web3/middleware/normalize_errors.py:9: in middleware
result = make_request(method, params)
/usr/lib/python3.6/site-packages/web3/middleware/validation.py:43: in middleware
return make_request(method, post_validated_params)
/usr/lib/python3.6/site-packages/web3/middleware/formatting.py:21: in middleware
response = make_request(method, formatted_params)
/usr/lib/python3.6/site-packages/web3/providers/eth_tester/middleware.py:320: in middleware
return make_request(method, [filled_transaction] + params[1:])
/usr/lib/python3.6/site-packages/web3/middleware/fixture.py:12: in middleware
return make_request(method, params)
/usr/lib/python3.6/site-packages/web3/middleware/formatting.py:21: in middleware
response = make_request(method, formatted_params)
/usr/lib/python3.6/site-packages/web3/providers/eth_tester/main.py:46: in make_request
response = delegator(self.ethereum_tester, params)
cytoolz/functoolz.pyx:232: in cytoolz.functoolz.curry.__call__
???
/usr/lib/python3.6/site-packages/web3/providers/eth_tester/defaults.py:36: in call_eth_tester
return getattr(eth_tester, fn_name)(*fn_args, **fn_kwargs)
/usr/lib/python3.6/site-packages/eth_tester/main.py:78: in func_wrapper
transaction_hash = func(self, *args, **kwargs)
/usr/lib/python3.6/site-packages/eth_tester/main.py:430: in send_transaction
return self._add_transaction_to_pending_block(transaction)
/usr/lib/python3.6/site-packages/eth_tester/main.py:473: in _add_transaction_to_pending_block
raw_transaction_hash = self.backend.send_transaction(raw_transaction)
/usr/lib/python3.6/site-packages/eth_tester/backends/pyevm/main.py:496: in send_transaction
self.chain.apply_transaction(signed_evm_transaction)
/usr/lib/python3.6/site-packages/eth/chains/base.py:841: in apply_transaction
new_header, receipt, computation = vm.apply_transaction(base_block.header, transaction)
/usr/lib/python3.6/site-packages/eth/vm/base.py:356: in apply_transaction
state_root, computation = self.state.apply_transaction(transaction)
/usr/lib/python3.6/site-packages/eth/vm/state.py:220: in apply_transaction
computation = self.execute_transaction(transaction)
/usr/lib/python3.6/site-packages/eth/vm/forks/frontier/state.py:189: in execute_transaction
return executor(transaction)
/usr/lib/python3.6/site-packages/eth/vm/state.py:268: in __call__
message = self.build_evm_message(valid_transaction)
/usr/lib/python3.6/site-packages/eth/vm/forks/frontier/state.py:52: in build_evm_message
self.vm_state.account_db.delta_balance(transaction.sender, -1 * gas_fee)
/usr/lib/python3.6/site-packages/eth/rlp/transactions.py:97: in sender
return self.get_sender()
/usr/lib/python3.6/site-packages/eth/vm/forks/frontier/transactions.py:63: in get_sender
return extract_transaction_sender(self)
/usr/lib/python3.6/site-packages/eth/utils/transactions.py:103: in extract_transaction_sender
public_key = signature.recover_public_key_from_msg(message)
/usr/lib/python3.6/site-packages/eth_keys/datatypes.py:376: in recover_public_key_from_msg
return self.recover_public_key_from_msg_hash(message_hash)
/usr/lib/python3.6/site-packages/eth_keys/datatypes.py:379: in recover_public_key_from_msg_hash
return self.backend.ecdsa_recover(message_hash, self)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/main.py:30: in ecdsa_recover
public_key_bytes = ecdsa_raw_recover(msg_hash, signature.vrs)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/ecdsa.py:135: in ecdsa_raw_recover
Q = jacobian_multiply(Qr, inv(r, N))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:78: in jacobian_multiply
return jacobian_double(jacobian_multiply(a, n // 2))
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:80: in jacobian_multiply
return jacobian_add(jacobian_double(jacobian_multiply(a, n // 2)), a)
/usr/lib/python3.6/site-packages/eth_keys/backends/native/jacobian.py:59: in jacobian_add
ny = (R * (U1H2 - nx) - S1 * H3) % P
/usr/lib/python3.6/site-packages/timeout_decorator/timeout_decorator.py:72: in handler
_raise_exception(timeout_exception, exception_message)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
exception = <class 'StopIteration'>, exception_message = None
def _raise_exception(exception, exception_message):
""" This function checks if a exception message is given.
If there is no exception message, the default behaviour is maintained.
If there is an exception message, the message is passed to the exception with the 'value' keyword.
"""
if exception_message is None:
> raise exception()
E StopIteration
/usr/lib/python3.6/site-packages/timeout_decorator/timeout_decorator.py:45: StopIteration
How can it be fixed?
I do not have an insight.
It would be really helpful if we could get the values from this section.
/usr/lib/python3.6/site-packages/eth_keys/backends/native/main.py:30: in ecdsa_recover
public_key_bytes = ecdsa_raw_recover(msg_hash, signature.vrs)
Specifically the msg_hash and signature.vrs values. This will let us confirm this bug in isolation.
Those values will likely not be available. They are dynamic and I cannot consistently reproduce the issue, so they are hard to get. I will try to run the tests whenever possible and report if I manage to retrieve them.
Recovering a signature is a feature that we already test on lots of random inputs, even on invalid signatures. See https://github.com/ethereum/eth-keys/blob/ce2aade354c77531babaa16669529082a7835f39/tests/backends/test_native_backend_against_coincurve.py
So it's going to be tricky for us to figure out this bug without the specific inputs. One thing we could do in the meantime is catch that StopIteration in eth-keys main and re-raise the exception with the message & signature. (also, should StopIteration be a timeout exception instead?)