Substrate节点中Alice账户余额查询及存储位置疑问
问题解答
- 标准Substrate
pallet_balances模块(polkadot-v0.9.24分支)中,账户余额**必然存储在("Balances", "Account", AccountId)**这个存储项中,不存在其他默认存储位置。 - 你遇到的"Accounts标签页能看到余额,但ChainState查询不到"的情况,大概率是查询操作的参数有误,常见原因包括:
- AccountId格式错误:查询时需使用对应链的SS58前缀地址(本地开发链默认前缀为42),若输入了其他前缀的地址(如Polkadot主网的前缀0),会导致查询不到对应存储项。
- 存储项选择错误:确认在ChainState中选择的是
Balances模块下的Account项,而非System模块的同名存储项(System的Account仅存储账户nonce等元数据,不含余额)。 - 稀疏存储特性误解:Substrate采用稀疏存储,仅当账户的
AccountData(包含free、reserved、frozen余额等)偏离默认值时才会被实际存储。但Accounts标签页能显示余额,说明该账户的AccountData非默认值,必然存在于存储中。
- 快速验证方法:在Polkadot JS Apps的Accounts标签页中,点击Alice账户的「复制地址」按钮,直接粘贴到ChainState的AccountId输入框中再执行查询,即可看到对应的
AccountData。
内容的提问来源于stack exchange,提问作者ivanceras
相关产品推荐
相关产品推荐

