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 關注
- 192 瀏覽
添加回答
舉報