进一步解释了如何通过cleos传递的值。正如原帖中已经提到的,这一切都围绕着字节顺序。由于某种原因,该checksum256值以不同的endian返回到索引键类型所sha256期望的范围。
如果您checksum256在表中的行中返回以下hash():
7af12386a82b6337d6b1e4c6a1119e29bb03e6209aa03c70ed3efbb9b74a290c
它首先分为两部分(每边16个字节):
7af12386a82b6337d6b1e4c6a1119e29 bb03e6209aa03c70ed3efbb9b74a290c
然后使用第一部分作为示例,以2个字符(1个字节)块反转每个部分:
7af12386a82b6337d6b1e4c6a1119e29
7a f1 23 86 a8 2b 63 37 d6 b1 e4 c6 a1 11 9e 29
29 9e 11 a1 c6 e4 b1 d6 37 63 2b a8 86 23 f1 7a
然后连接两个反转部分以形成可以与sha256索引键类型一起使用的值:
299e11a1c6e4b1d637632ba88623f17a 0c294ab7b9fb3eed703ca09a20e603bb
最终结果:
299e11a1c6e4b1d637632ba88623f17a0c294ab7b9fb3eed703ca09a20e603bb
参考
https://eosio.stackexchange.com/questions/4116/how-to-use-checksum256-secondary-index-to-get-table-rows
https://github.com/EOSIO/eos/issues/6648
https://github.com/EOSIO/eos/pull/6591
版权属于:区块链中文技术社区 / 转载原创者
本文链接:https://bcskill.com/index.php/archives/754.html
相关技术文章仅限于相关区块链底层技术研究,禁止用于非法用途,后果自负!本站严格遵守一切相关法律政策!