in src/Transaction.ts [130:161]
private async _sendExecute(statement: string, parameters: any[]): Promise<ExecuteStatementResult> {
await this._hashLock.acquire();
try {
let statementHash: QldbHash = QldbHash.toQldbHash(statement);
const valueHolderList: ValueHolder[] = parameters.map((param: any) => {
let ionBinary: Uint8Array;
try {
ionBinary = dumpBinary(param);
} catch(e) {
e.message = `Failed to convert parameter ${String(param)} to Ion Binary: ${e.message}`;
throw e;
}
statementHash = statementHash.dot(QldbHash.toQldbHash(ionBinary));
const valueHolder: ValueHolder = {
IonBinary: ionBinary
};
return valueHolder;
});
this._txnHash = this._txnHash.dot(statementHash);
const result: ExecuteStatementResult = await this._communicator.executeStatement(
this._txnId,
statement,
valueHolderList
);
return result;
} finally {
this._hashLock.release();
}
}