Я читал документы, пытаясь понять, как зафиксировать транзакцию в QLDB, и для этого требуется CommitDigest
, и документы описывают это как:
Указывает дайджест фиксации транзакции, которую нужно зафиксировать. Для каждой активной транзакции должен быть передан дайджест фиксации. QLDB проверяет CommitDigest и отклоняет фиксацию с ошибкой, если дайджест, вычисленный на клиенте, не соответствует дайджесту, вычисленному QLDB.
Таким образом, 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
в вызове API CommitTransaction
?