GolosChain / golos-python

Official Python Library for Golos Blockchain
MIT License
3 stars 4 forks source link

[0.16.4] Steem.transfer() semi-broken (TypeError: 'NoneType' object is not subscriptable) #3

Open bitphage opened 6 years ago

bitphage commented 6 years ago

Sometimes while performing Steem.transfer() I'm getting the following non-informative error message:

Traceback (most recent call last):
  File "./otkat.py", line 165, in main
    transfer(golos, conf['account'], voter, payout_rounded, memo)
  File "./otkat.py", line 34, in transfer
    steem_instance.transfer(to, amount, 'GBG', memo=memo, account=account)
  File "/home/vvk/devel/golos/otkat-py/venv/lib/python3.6/site-packages/steem/commit.py", line 607, in transfer
    return self.finalizeOp(op, account, "active")
  File "/home/vvk/devel/golos/otkat-py/venv/lib/python3.6/site-packages/steem/commit.py", line 119, in finalizeOp
    tx.appendOps(ops)
  File "/home/vvk/devel/golos/otkat-py/venv/lib/python3.6/site-packages/steem/transactionbuilder.py", line 42, in appendOps
    self.constructTx()
  File "/home/vvk/devel/golos/otkat-py/venv/lib/python3.6/site-packages/steem/transactionbuilder.py", line 84, in constructTx
    ref_block_num, ref_block_prefix = get_block_params(self.steemd)
  File "/home/vvk/devel/golos/otkat-py/venv/lib/python3.6/site-packages/steembase/transactions.py", line 332, in get_block_params
    ref_block_prefix = struct.unpack_from("<I", unhexlify(ref_block["previous"]), 4)[0]
TypeError: 'NoneType' object is not subscriptable

I think we need to investigate the root cause of such failures and provide a more clear error message to library users.

update 1

ref_block becomes None because steem.get_block() fails to retrieve block data:

ref_block = steem.get_block(props["head_block_number"] - 2)

golos nick: vvk

bitphage commented 6 years ago

This looks like a persistent problem introduced in https://github.com/steemit/steem-python/pull/18/files I reverted this change back to previous version originating from piston-lib and I not getting errors anymore.

zavod commented 6 years ago

Hello! Same issue, Any updates?

bitphage commented 6 years ago

Use https://github.com/bitfag/piston-lib/tree/golos-fixes Well-tested with 0.16.4.