NEAR RPC API View Contract State Changes返回Base64解码问题求助
NEAR RPC View Contract State Changes接口返回数据解码问题
我在使用NEAR RPC API获取链上数据时,调用了EXPERIMENTAL_changes接口(对应合约状态变更查询功能),但解析返回的Base64格式响应值时遇到了问题,寻求解决指导。
请求参数
我的调用请求如下:
{ "jsonrpc": "2.0", "id": "1", "method": "EXPERIMENTAL_changes", "params": { "changes_type": "data_changes", "block_id": 112414444, "account_ids": ["token.lonkingnearbackto2024.near"], "key_prefix_base64": "" } }
返回响应片段
接口返回的JSON响应片段:
{'cause': {'type': 'receipt_processing', 'receipt_hash': '7dAQnvkPUzgUHpRdm4BMTDaiFLYx5ckSjBZjKH1LYcqg'}, 'type': 'data_update', 'change': {'account_id': 'token.lonkingnearbackto2024.near', 'key_base64': 'YRMAAAB2Mi5yZWYtZmluYW5jZS5uZWFy', 'value_base64': 'YQ9Ya4aIcxgAAAAAAAAAAA=='}}
我的解析结果与问题
我用Python解析后得到以下内容:
key: YRMAAAB2Mi5yZWYtZmluYW5jZS5uZWFy value: YQ9Ya4aIcxgAAAAAAAAAAA== key in binary: b'a\x13\x00\x00\x00v2.ref-finance.near' value in binary: b'a\x0fXk\x86\x88s\x18\x00\x00\x00\x00\x00\x00\x00\x00' key decoded (utf-8): av2.ref-finance.near value decoded (utf-8): aXk��s
这次调用本应捕获Ref Finance上的一笔swap交易,av2.ref-finance.near这个key值逻辑上是正确的,但前面多了一个未知的a;同时value_decoded显示为乱码。我尝试过utf-8、ascii等多种解码方式都无法得到可读结果,了解到Borsh但不确定是否适用,想请教:
- 我的解码方式哪里出错了?
- 是否需要使用Borsh解码这些二进制数据?
- 这些二进制数据到底代表什么?是JSON对象吗?
我的解析代码
生成上述结果的Python代码:
key_base64 = i['change']['key_base64'] value_base64 = i['change']['value_base64'] print(i) print("key: ", key_base64) print("value: ", value_base64) key_binaries = base64.b64decode(key_base64) value_binaries = base64.b64decode(value_base64) print("key binary: ", key_binaries) print("value binary: ", value_binaries) key_decoded = key_binaries.decode('utf-8', errors='replace') value_decoded = value_binaries.decode('utf-8', errors='replace')
内容的提问来源于stack exchange,提问作者b_swiz
相关产品推荐
相关产品推荐

