py-substrate-interface: scalecodec.exceptions.RemainingScaleBytesNotEmptyException

Just testing out a storage map retrieval call, encountered:

substrateinterface.base:DEBUG Connecting to ws://127.0.0.1:9944 ...
substrateinterface.base:DEBUG RPC request #1: "chain_getHead"
substrateinterface.base:DEBUG RPC request #2: "chain_getHeader"
substrateinterface.base:DEBUG RPC request #3: "chain_getRuntimeVersion"
substrateinterface.base:DEBUG RPC request #4: "state_getMetadata"
substrateinterface.base:DEBUG Retrieved metadata for 9 from Substrate node
substrateinterface.base:DEBUG RPC request #5: "state_getKeysPaged"
substrateinterface.base:DEBUG RPC request #6: "state_queryStorageAt"
Traceback (most recent call last):
  File "/home/wzli/projects/DecentralizedTaskAuction/bid_optimization/./substrate_test.py", line 33, in <module>
    contracts = substrate.query_map('Contracts', 'ContractInfoOf')
  File "/home/wzli/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 1319, in query_map
    item_value = self.decode_scale(
  File "/home/wzli/.local/lib/python3.9/site-packages/substrateinterface/base.py", line 2656, in decode_scale
    obj.decode()
  File "/home/wzli/.local/lib/python3.9/site-packages/scalecodec/base.py", line 390, in decode
    raise RemainingScaleBytesNotEmptyException('Current offset: {} / length: {}'.format(self.data.offset, self.data.length))
scalecodec.exceptions.RemainingScaleBytesNotEmptyException: Current offset: 100 / length: 116

Versions of stuff:

   Installed package `canvas-node v0.1.0 (https://github.com/paritytech/canvas-node.git?tag=v0.1.5#385c4cc8)` (executable `canvas`)


Requirement already satisfied: substrate-interface==0.12.5 in /home/wzli/.local/lib/python3.9/site-packages (from -r requirements.txt (line 1)) (0.12.5)
Requirement already satisfied: xxhash>=1.3.0 in /usr/local/lib64/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (1.3.0)
Requirement already satisfied: requests~=2.25.1 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (2.25.1)
Requirement already satisfied: py-sr25519-bindings~=0.1.2 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (0.1.2)
Requirement already satisfied: certifi>=2020.11.8 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (2020.12.5)
Requirement already satisfied: scalecodec~=0.10.76 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (0.10.77)
Requirement already satisfied: idna>=2.8 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (2.8)
Requirement already satisfied: py-ed25519-bindings~=0.1.2 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (0.1.2)
Requirement already satisfied: websocket-client~=0.58.0 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (0.58.0)
Requirement already satisfied: py-bip39-bindings~=0.1.6 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (0.1.6)
Requirement already satisfied: base58~=2.0.1 in /home/wzli/.local/lib/python3.9/site-packages (from substrate-interface==0.12.5->-r requirements.txt (line 1)) (2.0.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/wzli/.local/lib/python3.9/site-packages (from requests~=2.25.1->substrate-interface==0.12.5->-r requirements.txt (line 1)) (1.25.3)
Requirement already satisfied: chardet<5,>=3.0.2 in /usr/lib/python3.9/site-packages (from requests~=2.25.1->substrate-interface==0.12.5->-r requirements.txt (line 1)) (3.0.4)
Requirement already satisfied: more-itertools in /home/wzli/.local/lib/python3.9/site-packages (from scalecodec~=0.10.76->substrate-interface==0.12.5->-r requirements.txt (line 1)) (8.7.0)
Requirement already satisfied: six in /usr/lib/python3.9/site-packages (from websocket-client~=0.58.0->substrate-interface==0.12.5->-r requirements.txt (line 1)) (1.15.0)

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 2
  • Comments: 16 (7 by maintainers)

Most upvoted comments

@arjanz I found the issue regarding the opening post. It was because py-scalecodec was not updated to the type changes in pallets-contract v3.0, which is what the canvas node was using.

In particular, I was trying to query for ContractInfo type, which changed from: https://substrate.dev/rustdocs/v2.0.0/pallet_contracts/struct.RawAliveContractInfo.html to: https://substrate.dev/rustdocs/v3.0.0/pallet_contracts/struct.RawAliveContractInfo.html

So, I guess consider this a feature request? to support up-to-date contract-pallet and maybe some form of backwards compatibility?

Hey @arjanz it does indeed seem fixed now. Thank you. Is there by the way another channel I can reach you from time to time with questions? I tried kusama and polkadot discord and also twitter but no luck.