我一直在阅读文档,试图弄清楚如何在 QLDB 中提交事务,为此,CommitDigest
需要 a ,文档将其描述为:
指定要提交的事务的提交摘要。对于每个活动事务,必须传递提交摘要。如果在客户端计算的摘要与 QLDB 计算的摘要不匹配,QLDB 会验证 CommitDigest 并拒绝提交并返回错误。
所以 CommitDigest 必须被计算,但我不太确定在这个例子中它的计算需要什么:
// ** Start Session **
const startSessionResult = await qldbSession.sendCommand({
StartSession: {
LedgerName: ledgerName
}
}).promise(),
sessionToken = startSessionResult.StartSession!.SessionToken!;
// ** Start Transaction **
const startTransactionResult = await qldbSession.sendCommand({
StartTransaction: {},
SessionToken: sessionToken
}).promise(),
transactionId = startTransactionResult.StartTransaction!.TransactionId!;
// ** Insert Document **
const executeStatementResult = await qldbSession.sendCommand({
ExecuteStatement: {
TransactionId: transactionId,
Statement: `INSERT INTO sometable { 'id': 'abc123', 'userId': '123abc' }`
},
SessionToken: sessionToken
}).promise(),
documentId = getDocumentIdFromExecuteStateResult(executeStatementResult)
// ** Get Ledger Digest
const getDigestResult = await qldb.getDigest({
Name: ledgerName
}).promise(),
ledgerDigest = getDigestResult.Digest;
// ** Commit Transaction **
// ** **The API call in question** **
const commitTransactionResult = await qldbSession.sendCommand({
CommitTransaction: {
TransactionId: transactionId,
CommitDigest: `${commitDigest}` // <-- How to compute?
},
SessionToken: sessionToken
}).promise();
// *******************************
// ** End Session **
const endSession = await qldbSession.sendCommand({
EndSession: {},
SessionToken: sessionToken
}).promise();
CommitDigest
在CommitTransaction
api 调用中我需要散列什么?