Issue signing large transactions
Closed this issue · 2 comments
Recently saw an issue signing a large contract transaction. Haven't had the chance to dig into it too far but wanted to document it for reference.
This is the encoded tx:
0xf907308084b2d05e00835b8d808080b90721608060405234801561001057600080fd5b506040516020806107018339810180604052602081101561003057600080fd5b5051610045338264010000000061004b810204565b5061011c565b600160a060020a038216151561006057600080fd5b60025461007a908264010000000061059161010382021704565b600255600160a060020a0382166000908152602081905260409020546100ad908264010000000061059161010382021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101561011557600080fd5b9392505050565b6105d68061012b6000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161007857806370a0823114610166578063a457c2d71461018c578063a9059cbb146101b8578063dd62ed3e146101e4576100a5565b8063095ea7b3146100aa57806318160ddd146100ea57806323b872dd14610104578063395093511461013a575b600080fd5b6100d6600480360360408110156100c057600080fd5b50600160a060020a038135169060200135610212565b604080519115158252519081900360200190f35b6100f2610290565b60408051918252519081900360200190f35b6100d66004803603606081101561011a57600080fd5b50600160a060020a03813581169160208101359091169060400135610296565b6100d66004803603604081101561015057600080fd5b50600160a060020a038135169060200135610333565b6100f26004803603602081101561017c57600080fd5b5035600160a060020a03166103e3565b6100d6600480360360408110156101a257600080fd5b50600160a060020a0381351690602001356103fe565b6100d6600480360360408110156101ce57600080fd5b50600160a060020a038135169060200135610449565b6100f2600480360360408110156101fa57600080fd5b50600160a060020a038135811691602001351661045f565b6000600160a060020a038316151561022957600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600160a060020a03831660009081526001602090815260408083203384529091528120548211156102c657600080fd5b600160a060020a03841660009081526001602090815260408083203384529091529020546102fa908363ffffffff61048a16565b600160a060020a038516600090815260016020908152604080832033845290915290205561032984848461049f565b5060019392505050565b6000600160a060020a038316151561034a57600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461037e908363ffffffff61059116565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a031660009081526020819052604090205490565b6000600160a060020a038316151561041557600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461037e908363ffffffff61048a16565b600061045633848461049f565b50600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b60008282111561049957600080fd5b50900390565b600160a060020a0383166000908152602081905260409020548111156104c457600080fd5b600160a060020a03821615156104d957600080fd5b600160a060020a038316600090815260208190526040902054610502908263ffffffff61048a16565b600160a060020a038085166000908152602081905260408082209390935590841681522054610537908263ffffffff61059116565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828201838110156105a357600080fd5b939250505056fea165627a7a72305820c1007c25cbb2c51d6c0aa6c7962374874a574895dffe42ae6eef70e4009c2c60002900000000000000000000000000000000000000000000003635c9adc5dea00000
This tx was assembled by web3.py using solidbyte and the LedgerSignerMiddleware
.
Traceback (most recent call last):
File "/home/mike/dev/solidbyte/solidbyte/deploy/objects.py", line 372, in deployed
return self._deploy(*args, **kwargs)
File "/home/mike/dev/solidbyte/solidbyte/deploy/objects.py", line 595, in _deploy
deploy_txhash = self._transact(deploy_tx)
File "/home/mike/dev/solidbyte/solidbyte/deploy/objects.py", line 492, in _transact
signed_tx = ledgereth.sign_transaction(ledger_tx, sender_path=ledger_account.path)
File "/home/mike/dev/ledger-eth-lib/ledgereth/transactions.py", line 61, in sign_transaction
raise Exception('Invalid response from Ledger')
Exception: Invalid response from Ledger
Traceback (most recent call last):
File "/home/mike/.venvs/solidbyte/bin/sb", line 11, in <module>
load_entry_point('solidbyte', 'console_scripts', 'sb')()
File "/home/mike/dev/solidbyte/solidbyte/cli/handler.py", line 86, in main
IMPORTED_MODULES[args.command].main(parser_args=args)
File "/home/mike/dev/solidbyte/solidbyte/cli/deploy.py", line 55, in main
deployer.deploy()
File "/home/mike/dev/solidbyte/solidbyte/deploy/__init__.py", line 226, in deploy
self._execute_deploy_scripts()
File "/home/mike/dev/solidbyte/solidbyte/deploy/__init__.py", line 310, in _execute_deploy_scripts
retval = script.main(**script_kwargs)
File "/home/mike/dev/erc20-project/deploy/deploy_main.py", line 38, in main
web3_contract_instance = token.deployed(initialSupply=initial_supply)
File "/home/mike/dev/solidbyte/solidbyte/deploy/objects.py", line 375, in deployed
raise e
File "/home/mike/dev/solidbyte/solidbyte/deploy/objects.py", line 372, in deployed
return self._deploy(*args, **kwargs)
File "/home/mike/dev/solidbyte/solidbyte/deploy/objects.py", line 595, in _deploy
deploy_txhash = self._transact(deploy_tx)
File "/home/mike/dev/solidbyte/solidbyte/deploy/objects.py", line 492, in _transact
signed_tx = ledgereth.sign_transaction(ledger_tx, sender_path=ledger_account.path)
File "/home/mike/dev/ledger-eth-lib/ledgereth/transactions.py", line 61, in sign_transaction
raise Exception('Invalid response from Ledger')
Exception: Invalid response from Ledger
The ledger is responding with 9000
as if it was expecting further data(ledgerblue lib is returning an empty bytearray). I'm inferring that the ledger doesn't see this as a properly formatted transaction. I have not yet verified this rlp decodes properly yet. Could be as simple as a missing or extra field.
This may not actually be an issue, but need to explore testing signing transaction deployments.
The example tx is improperly encoded. However, there was an issue with large transactions and that's been fixed in PR #22.