大家好,我正在通过 py-substrate-interface 提交外部信息。 ,但由于某种原因,我在遵循提到的示例 here 时不断收到错误。 我的代码如下:
def send_funds(self, destination, amount):
self.log.info("Sending {} DOT to {} ...".format(amount, destination.strip()))
substrate = self.create_substrate_instance(self.node_ws_port[0])
keypair = Keypair.create_from_mnemonic('level payment mom grape proof display cause engage erupt rain hair arm')
print(keypair)
call = substrate.compose_call(
call_module='Balances',
call_function='transfer',
call_params={
'dest': destination,
'value': ceil(amount * DOT)
}
)
try:
extrinsic = substrate.create_signed_extrinsic(call=call, keypair=keypair)
except Exception as e:
print(e)
try:
receipt = substrate.submit_extrinsic(extrinsic, wait_for_inclusion=True)
self.log.info("Extrinsic '{}' sent and included in block '{}'".format(receipt.extrinsic_hash, receipt.block_hash))
self.log.info("{} DOT sent to address: {}".format(amount, destination))
except SubstrateRequestException as e:
self.log.error("Failed to send: {}".format(e))
我在这里放置了一个 try 和 except block :
try:
extrinsic = substrate.create_signed_extrinsic(call=call, keypair=keypair)
except Exception as e:
print(e)
运行此代码块时出现以下错误:
No more bytes available (offset: 80 / length: 72)
如何解决这个问题。
最佳答案
大多数时候是RemainingScaleBytesNotEmptyException
被引发,它与类型注册表相关。在 Substrate 运行时(如 Kusama、Polkadot 等)中定义了特定类型,这些类型(尚未)在元数据中公开,因此库必须包含对这些类型的原语的分解。
故障排除的一些提示:
正在使用错误类型的注册表。大多数时候 py-substrate-interface 可以自动发现它正在与哪个链通信,因此只有
url
必须指定( https://github.com/polkascan/py-substrate-interface#autodiscover-mode )。但使用自定义运行时或开发属性,如type_registry_preset
和ss58_format
需要手动设置由于最近的运行时升级,本地类型注册表已过时,需要更新。这可以通过更新
py-scale-codec
来实现包,运行substrate.reload_type_registry()
函数或始终使用远程类型注册表use_remote_preset
kwarg(参见 https://github.com/polkascan/py-substrate-interface#keeping-type-registry-presets-up-to-date )开发自定义运行时时,可以将引入的类型添加到自定义 JSON 文件中,格式如 https://github.com/polkascan/py-scale-codec/blob/master/scalecodec/type_registry/rococo.json并在 init 期间提供(参见 https://github.com/polkascan/py-substrate-interface#substrate-node-template )
关于python - 为什么我不能从 py-substrate-interface 发送外部数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67054979/