<p>离子散列go不可用的理解是正确的</p>
<p>在计算哈希时,您可能需要检查以下几项:</p>
<ol>
<li>散列值与事务id的离子散列一起播种
从技术上讲,两个事务的最终散列永远不会相同</李>
<li>正如您所注意到的,哈希值是使用QLDB“dot”运算符更新的。
点运算符是QLDB合并散列值和定义散列值的方式
作为两个哈希值串联的哈希值,由
(有符号,小尾端)两个散列之间的字节比较。
参考号-
<a href="https://github.com/awslabs/amazon-qldb-driver-python/blob/39fecdf2ed0521ae1d19f342a4cab38846b96c9a/pyqldb/util/qldb_hash.py#L99" rel="nofollow noreferrer">https://github.com/awslabs/amazon-qldb-driver-python/blob/39fecdf2ed0521ae1d19f342a4cab38846b96c9a/pyqldb/util/qldb_hash.py#L99</a></li>
<li>哈希算法需要是SHA 256</李>
<li>在使用参数散列查询时,正确的实现是
离子散列
任何语句(其中可能包含任何PartiQL文本)
然后是作为参数传入的每个IonValue的IonHash
(与点运算符组合)</李>
</ol>
<p>从您的伪代码中我可以猜到您可能缺少1)和2)。更具体地说,我的意思是,伪代码表明哈希没有使用事务id作为种子,并且点运算符没有按正确的顺序应用于哈希</p>
<p>有关QLDB哈希计算的更多详细信息,请参阅Marc的答案-<a href="https://stackoverflow.com/questions/57937869/how-to-get-compute-commitdigest-when-committing-a-transaction-in-aws-qldb">How to get/compute CommitDigest when committing a transaction in AWS QLDB?</a></p>
<p>愿意在这方面进一步提供帮助</p>
<p>更新:</p>
<p>离子散列go现在可用-<a href="https://github.com/amzn/ion-hash-go" rel="nofollow noreferrer">https://github.com/amzn/ion-hash-go</a></p>
<p>还发布了与QLDB交互的go驱动程序-<a href="https://github.com/awslabs/amazon-qldb-driver-go" rel="nofollow noreferrer">https://github.com/awslabs/amazon-qldb-driver-go</a></p>
<p>它们目前都是测试版</p>