public bool TryAddBlockTransactions(UInt256 blockHash, IEnumerable<EncodedTx> blockTxes)
{
if (this.ContainsBlock(blockHash))
return false;
try
{
using (var handle = this.cursorCache.TakeItem())
{
var cursor = handle.Item;
using (var jetTx = cursor.jetSession.BeginTransaction())
{
var blockIndex = AddBlockIndex(cursor, blockHash);
var txIndex = 0;
foreach (var tx in blockTxes)
{
AddTransaction(blockIndex, txIndex, tx.Hash, tx.TxBytes.ToArray(), cursor);
txIndex++;
}
// increase block count
Api.EscrowUpdate(cursor.jetSession, cursor.globalsTableId, cursor.blockCountColumnId, +1);
jetTx.CommitLazy();
return true;
}
}
}
catch (EsentKeyDuplicateException)
{
return false;
}
}