# Imports
from substrateinterface import SubstrateInterface
# Construct the API provider
ws_provider = SubstrateInterface(
url="wss://wss.api.moonbase.moonbeam.network",
)
# Retrieve the latest block
block = ws_provider.get_block()
Trace back:
Traceback (most recent call last):
File "/Users/henryduong/Documents/workspace/pysubstrateinterface/offlinesigning.py", line 10, in
block = ws_provider.get_block()
File "/usr/local/lib/python3.9/site-packages/substrateinterface/base.py", line 2375, in get_block
return self.__get_block_handler(
File "/usr/local/lib/python3.9/site-packages/substrateinterface/utils/caching.py", line 36, in wrapper
return cached_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/substrateinterface/base.py", line 2334, in __get_block_handler
return decode_block(response['result']['block'], block_data_hash=block_hash)
File "/usr/local/lib/python3.9/site-packages/substrateinterface/base.py", line 2244, in decode_block
extrinsic_decoder.decode()
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 2363, in process
self.value_object.update(self.process_type('Inherent', metadata=self.metadata).value_object)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 468, in process
field_obj = self.process_type(data_type, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 1285, in process
call_obj = self.process_type(call_type_string, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 1026, in process
result_obj = self.process_type(enum_type_mapping[1], metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 468, in process
field_obj = self.process_type(data_type, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 468, in process
field_obj = self.process_type(data_type, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 782, in process
if self.runtime_config.get_decoder_class(self.sub_type) is U8:
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 95, in get_decoder_class
if type_string.strip() == '':
AttributeError: 'NoneType' object has no attribute 'strip'
get_chain_block and get_block_header do work, so it's probably related to decoding custom types.
Would be awesome if Moonbeam types can be supported and the decoded get block methods can work with it.
Reproduction code:
Trace back:
Traceback (most recent call last): File "/Users/henryduong/Documents/workspace/pysubstrateinterface/offlinesigning.py", line 10, in
block = ws_provider.get_block()
File "/usr/local/lib/python3.9/site-packages/substrateinterface/base.py", line 2375, in get_block
return self.__get_block_handler(
File "/usr/local/lib/python3.9/site-packages/substrateinterface/utils/caching.py", line 36, in wrapper
return cached_func(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/substrateinterface/base.py", line 2334, in __get_block_handler
return decode_block(response['result']['block'], block_data_hash=block_hash)
File "/usr/local/lib/python3.9/site-packages/substrateinterface/base.py", line 2244, in decode_block
extrinsic_decoder.decode()
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 2363, in process
self.value_object.update(self.process_type('Inherent', metadata=self.metadata).value_object)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 468, in process
field_obj = self.process_type(data_type, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 1285, in process
call_obj = self.process_type(call_type_string, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 1026, in process
result_obj = self.process_type(enum_type_mapping[1], metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 468, in process
field_obj = self.process_type(data_type, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 468, in process
field_obj = self.process_type(data_type, metadata=self.metadata)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 749, in process_type
obj.decode(check_remaining=False)
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 666, in decode
self.value_serialized = self.process()
File "/usr/local/lib/python3.9/site-packages/scalecodec/types.py", line 782, in process
if self.runtime_config.get_decoder_class(self.sub_type) is U8:
File "/usr/local/lib/python3.9/site-packages/scalecodec/base.py", line 95, in get_decoder_class
if type_string.strip() == '':
AttributeError: 'NoneType' object has no attribute 'strip'
get_chain_block
andget_block_header
do work, so it's probably related to decoding custom types.Would be awesome if Moonbeam types can be supported and the decoded get block methods can work with it.
Here is our types bundle: https://www.npmjs.com/package/moonbeam-types-bundle
You should be able to output it as a JSON file as well.