Javascript 使用api.rpc.payment.QueryFeedDetails获取外部费用
我想使用Javascript 使用api.rpc.payment.QueryFeedDetails获取外部费用,javascript,substrate,polkadot-js,Javascript,Substrate,Polkadot Js,我想使用api.rpc.payment.QueryFeedDetailsapi调用()来获取关于底层区块链中特定外部资源的费用的信息 我正在使用以下代码执行此操作: const blockHash='0x8AD4960941190D155B22BF3C1C6AEACB4CDCFC87B519A87106BE7DFD342AE1D'; const{block}=await api.rpc.chain.getBlock(blockHash); const info=wait api.rpc.paym
api.rpc.payment.QueryFeedDetails
api调用()来获取关于底层区块链中特定外部资源的费用的信息
我正在使用以下代码执行此操作:
const blockHash='0x8AD4960941190D155B22BF3C1C6AEACB4CDCFC87B519A87106BE7DFD342AE1D';
const{block}=await api.rpc.chain.getBlock(blockHash);
const info=wait api.rpc.payment.queryfeedtails(block.extrinsics[1],blockHash);
log(JSON.stringify(info,null,2));
但我得到了一个错误:
2021-04-05 18:37:35 RPC-CORE: queryInfo(extrinsic: Bytes, at?: BlockHash): RuntimeDispatchInfo:: 1: Unable to query dispatch info.: Execution, ApiCould not convert parameter `uxt` between node and runtime: Invalid transaction version
Error: 1: Unable to query dispatch info.: Execution, ApiCould not convert parameter `uxt` between node and runtime: Invalid transaction version
at RpcCoder._checkError (/root/test/node_modules/@polkadot/rpc-provider/coder/index.cjs:84:13)
at RpcCoder.decodeResponse (/root/test/node_modules/@polkadot/rpc-provider/coder/index.cjs:47:10)
at WsProvider.value (/root/test/node_modules/@polkadot/rpc-provider/ws/index.cjs:231:90)
at W3CWebSocket.value [as onmessage] (/root/test/node_modules/@polkadot/rpc-provider/ws/index.cjs:211:153)
at W3CWebSocket._dispatchEvent [as dispatchEvent] (/root/test/node_modules/yaeti/lib/EventTarget.js:107:17)
at W3CWebSocket.onMessage (/root/test/node_modules/websocket/lib/W3CWebSocket.js:234:14)
at WebSocketConnection.<anonymous> (/root/test/node_modules/websocket/lib/W3CWebSocket.js:205:19)
at WebSocketConnection.emit (events.js:315:20)
at WebSocketConnection.processFrame (/root/test/node_modules/websocket/lib/WebSocketConnection.js:554:26)
at /root/test/node_modules/websocket/lib/WebSocketConnection.js:323:40
2021-04-05 18:37:35 RPC-CORE:queryInfo(外部:字节,在?:块散列):RuntimeDispatchInfo::1:无法查询调度信息:执行,ApiCould无法在节点和运行时之间转换参数“uxt”:事务版本无效
错误:1:无法查询分派信息。示例:执行,ApiCould无法在节点和运行时之间转换参数“uxt”:事务版本无效
在RpcCoder._checkError(/root/test/node_modules/@polkadt/rpc provider/coder/index.cjs:84:13)
在RpcCoder.decodesponse(/root/test/node_modules/@polkadt/rpc provider/coder/index.cjs:47:10)
位于WsProvider.value(/root/test/node_modules/@polkadt/rpc provider/ws/index.cjs:231:90)
在W3CWebSocket.value[as-onmessage](/root/test/node_modules/@polkadt/rpc provider/ws/index.cjs:211:153)
在W3CWebSocket._dispatchEvent[作为dispatchEvent](/root/test/node_modules/yaeti/lib/EventTarget.js:107:17)
在W3CWebSocket.onMessage(/root/test/node_modules/websocket/lib/W3CWebSocket.js:234:14)
在WebSocketConnection。(/root/test/node_modules/websocket/lib/W3CWebSocket.js:205:19)
在WebSocketConnection.emit(events.js:315:20)
在WebSocketConnection.processFrame(/root/test/node_modules/websocket/lib/WebSocketConnection.js:554:26)
at/root/test/node_modules/websocket/lib/WebSocketConnection.js:323:40
我做错了什么?基于@kiaenigma答案的完整工作片段:
const blockHash='0x8AD4960941190D155B22BF3C1C6AEACB4CDCFC87B519A87106BE7DFD342AE1D';
const{block}=await api.rpc.chain.getBlock(blockHash);
log('extrinsic:',JSON.stringify(block.extrinsics[1].toHuman(),null,2));
const queryFeeDetails=wait api.rpc.payment.queryFeeDetails(block.extrinsics[1].toHex(),blockHash);
log('QueryFeedDetails:',JSON.stringify(QueryFeedDetails.toHuman(),null,2));
const queryInfo=wait api.rpc.payment.queryInfo(block.extrinsics[1].toHex(),blockHash);
log('queryInfo:',JSON.stringify(queryInfo.toHuman(),null,2));
输出:
外在的:{
“isSigned”:是的,
“方法”:{
“args”:[
{
“Id”:“FJLFJeKagZ8xkDxH4AneGN9tRe9NZM65CZFdbnhVz6Whm2u”
},
“12.9452 KSM”
],
“方法”:“transferKeepAlive”,
“节”:“余额”
},
“时代”:{
“凡人时代”:{
“期间”:“1024”,
“阶段”:“559”
}
},
“暂时”:“15942”,
“签名”:“0x63866B9D4DD0A5B2240C3A864BF1184ED764FB02EECC950A0C480E1A887C3643EA3625960A1E4E808A3171684C173A3EB0991833EAF54B4A94367406334D08”,
“签字人”:{
“Id”:“HMFYPT1BTMI1T9QQS5WTUNJK93YNDNJHREZH6EMGNQVCHA”
},
提示:“0”
}
查询提要详细信息:{
“包含费”:{
“基本费用”:“166.6666µKSM”,
“lenFee”:“2.4666 mKSM”,
“调整重量费”:“243.0000磅/平方米”
}
}
查询信息:{
“重量”:“182428000”,
“类”:“正常”,
“partialFee”:“2.6333 mKSM”
}
“无法查询调度信息:执行,ApiCould不能在节点和运行时之间转换参数uxt
:无效事务版本”--您是否为尝试访问的端点使用了正确的api版本?您使用的是什么版本(节点、api等)?尝试更新?我认为这不是问题,因为我可以使用最新版本的堆栈在Kusama区块链上复制它:const blockHash='0x8AD4960941190D155B22BF3C1C1CAEACB4CDCFCC87B519A87106BE7DFD342AE1D';const{block}=await api.rpc.chain.getBlock(blockHash);const info=wait api.rpc.payment.queryfeedtails(block.extrinsics[1],blockHash);log(JSON.stringify(info,null,2))
tryapi.rpc.payment.queryfeedtails(block.extrinsics[1].toHex(),blockHash)代码>谢谢kiaenigma,它工作得很好!是的,NukeManDan,我修复了代码片段中的散列,你现在可以尝试使用kiaenigma修改和任何kusama块散列来获得tx费用。