2 回答

TA贡献1805条经验 获得超10个赞
不确定这是否仍然有用,但亚马逊最近发布了 QLDB Go 驱动程序的预览版 ( https://github.com/awslabs/amazon-qldb-driver-go )。
它具有 Ion 和 Ion Hash 作为其依赖项,因此这应该使您在使用 QLDB 时更容易。

TA贡献1890条经验 获得超9个赞
ion-hash-go 不可用的理解是正确的。
在计算哈希时您可能需要检查几件事:
哈希值以交易 id 的离子哈希为种子。因此,从技术上讲,两个交易的最终哈希值永远不会相同。
正如您所注意到的,哈希值是使用 QLDB 的“点”运算符更新的。点运算符是 QLDB 合并散列值的方式,它被定义为两个散列连接的散列,按两个散列之间的(有符号,小端)字节比较排序。参考 - https://github.com/awslabs/amazon-qldb-driver-python/blob/39fecdf2ed0521ae1d19f342a4cab38846b96c9a/pyqldb/util/qldb_hash.py#L99
哈希算法需要是 SHA 256。
在使用参数进行散列查询时,正确的实现是获取任何语句的 ion 散列(可能包含其中的任何 PartiQL 文字),然后将每个 IonValue 的 IonHash 作为参数传入(结合点运算符)。
从您的伪代码中我可以猜到您可能缺少 1) 和 2)。更具体地说,我的意思是说伪表明哈希没有以事务 id 为种子,并且点运算符没有按正确的顺序应用于哈希。
有关 QLDB 哈希计算的更多详细信息,请参阅 Marc 的回答 -如何在 AWS QLDB 中提交事务时获取/计算 CommitDigest?
愿意进一步帮助。
更新:
Ion hash go 现在可用 - https://github.com/amzn/ion-hash-go
还发布了与 QLDB 交互的驱动程序 - https://github.com/awslabs/amazon-qldb-driver-go
他们俩目前都是测试版。
- 2 回答
- 0 关注
- 170 浏览
添加回答
举报