For s in signed_hextx.split('80a0'): AttributeError: 'dict' object has no attribute 'split'

#1

Hi, I am currently working on my college project where I am using blockcerts on ethereum_ropsten network. After all the configuration, when I try to issue the cerificate it throws AttributeError: ‘dict’ object has no attribute ‘split’. When I dug down a bit more into the code, i found that there were no commands regarding conversion of signed_tx to signed_hextx. Can that be a reason for the error. Any help is appriciated.

Thanks in advance.
-Gaurav

#2

Do you have a stack trace and complete log that you could share? I haven’t seen this error myself with ethereum.

#3

Hi @aronning, sorry for responding late, my semester exams are going on :frowning: , here’s the complete log which I get in my terminal:

WARNING - Your app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
INFO - This run will try to issue on the ethereum_ropsten chain
INFO - Set cost constants to recommended_gas_price=20000000000.000000, recommended_gas_limit=25000.000000
INFO - Set cost constants to recommended_gas_price=20000000000.000000, recommended_gas_limit=25000.000000
INFO - Processing 1 certificates
INFO - Processing 1 certificates
INFO - Processing 1 certificates under work path=/etc/cert-issuer/work
INFO - Processing 1 certificates under work path=/etc/cert-issuer/work
INFO - Balance check succeeded: {'status': '1', 'message': 'OK', 'result': '1000000000000000000'}
INFO - Balance check succeeded: {'status': '1', 'message': 'OK', 'result': '1000000000000000000'}
INFO - Total cost will be 500000000000000 wei
INFO - Total cost will be 500000000000000 wei
INFO - Starting finalizable signer
INFO - Starting finalizable signer
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
INFO - Stopping finalizable signer
INFO - Stopping finalizable signer
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
INFO - here is the op_return_code data: c65c6184e3d5a945ddb5437e93ea312411fd33aa1def22b0746d6ecd4aa30f20
INFO - here is the op_return_code data: c65c6184e3d5a945ddb5437e93ea312411fd33aa1def22b0746d6ecd4aa30f20
INFO - Nonce check went correct: {'jsonrpc': '2.0', 'result': '0x0', 'id': 1}
INFO - Nonce check went correct: {'jsonrpc': '2.0', 'result': '0x0', 'id': 1}
INFO - Starting finalizable signer
INFO - Starting finalizable signer
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
INFO - Stopping finalizable signer
INFO - Stopping finalizable signer
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
WARNING - app is configured to skip the wifi check when the USB is plugged in. Read the documentation to ensure this is what you want, since this is less secure
INFO - signed Ethereum trx = {'error': True, 'message': AttributeError("can't set attribute",)}
INFO - signed Ethereum trx = {'error': True, 'message': AttributeError("can't set attribute",)}
INFO - verifying ethDataField value for transaction
INFO - verifying ethDataField value for transaction
Traceback (most recent call last):
  File "/usr/local/bin/cert-issuer", line 11, in <module>
sys.exit(cert_issuer_main())
  File "/usr/local/lib/python3.6/dist-packages/cert_issuer/__main__.py", line 17, in cert_issuer_main
issue_certificates.main(parsed_config)
  File "/usr/local/lib/python3.6/dist-packages/cert_issuer/issue_certificates.py", line 36, in main
return issue(app_config, certificate_batch_handler, transaction_handler)
  File "/usr/local/lib/python3.6/dist-packages/cert_issuer/issue_certificates.py", line 22, in issue
tx_id = issuer.issue(app_config.chain)
  File "/usr/local/lib/python3.6/dist-packages/cert_issuer/issuer.py", line 27, in issue
txid = self.transaction_handler.issue_transaction(blockchain_bytes)
  File "/usr/local/lib/python3.6/dist-packages/cert_issuer/blockchain_handlers/ethereum/transaction_handlers.py", line 61, in issue_transaction
self.verify_transaction(signed_tx, eth_data_field)
  File "/usr/local/lib/python3.6/dist-packages/cert_issuer/blockchain_handlers/ethereum/transaction_handlers.py", line 92, in verify_transaction
tx_utils.verify_eth_transaction(signed_tx, eth_data_field)
  File "/usr/local/lib/python3.6/dist-packages/cert_issuer/blockchain_handlers/ethereum/tx_utils.py", line 24, in verify_eth_transaction
for s in signed_hextx.split('80a0'):
AttributeError: 'dict' object has no attribute 'split'
#4

So it looks like this is the real reason for the error. The signed transaction had a problem getting generated correctly (and no error handling here) which causes the verifying ethDataField value for transaction to throw an error later on.

I’ve never seen this error before, wonder what could be wrong generating the transaction. Would you mind posting your config file?