Closed philippb90 closed 1 year ago
Chopsticks does not support most RPC calls. However, substrate interface uses RPCs such as chain_getHead making it incompatible with chopsticks.
chain_getHead
E.g. running the following code:
from substrateinterface import SubstrateInterface wss = "ws://localhost:8000" substrate = SubstrateInterface(url=wss) substrate.query( "System", "Account", ["15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5"] )
fails with:
--------------------------------------------------------------------------- SubstrateRequestException Traceback (most recent call last) Cell In[4], line 2 1 # %% ----> 2 substrate.query( 3 "System", 4 "Account", 5 ["15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5"] 6 ) File ~/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py:1404, in SubstrateInterface.query(self, module, storage_function, params, block_hash, subscription_handler, raw_storage_key) [1401](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=1400) raise ValueError("Subscriptions can only be registered for current state; block_hash cannot be set") [1402](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=1401) else: [1403](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=1402) # Retrieve chain tip -> [1404](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=1403) block_hash = self.get_chain_head() [1406](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=1405) if params is None: [1407](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=1406) params = [] File ~/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py:889, in SubstrateInterface.get_chain_head(self) [881](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=880) def get_chain_head(self): [882](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=881) """ [883](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=882) A pass-though to existing JSONRPC method `chain_getHead` [884](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=883) (...) [887](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=886) ... [762](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=761) if callable(result_handler): [763](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=762) [764](file:///home/philipp/Programs/repos/work/collateralization_analysis/venv/lib64/python3.10/site-packages/substrateinterface/base.py?line=763) # Set subscription ID and only listen to messages containing this ID SubstrateRequestException: {'code': -32601, 'message': 'Method not found: chain_getHead'}
Should work with new release: https://github.com/polkascan/py-substrate-interface/releases/tag/v1.6.1
Chopsticks does not support most RPC calls. However, substrate interface uses RPCs such as
chain_getHead
making it incompatible with chopsticks.E.g. running the following code:
fails with: