anchor.diff:  implementation
   
   uses
  -  ULog, {$IFnDEF USE_ABSTRACTMEM} UAccountKeyStorage,{$ENDIF} math, UCommon, UPCOperationsBlockValidator;
  +  ULog, {$IFnDEF USE_ABSTRACTMEM} UAccountKeyStorage,{$ENDIF} math, UCommon, UPCOperationsBlockValidator, UPCTemporalFileStream;
  +
  +
  +{$IFDEF FPC}
  +  {$DEFINE USE_BIGBLOCKS_MEM_ON_DISK}
  +  // USE_BIGBLOCKS_MEM_ON_DISK directive is used in order to prevent a FreePascal issue with Heap allocation strategy that
  +  // reuses big blocks of disposed memory and fragments it, this causes that when a new big block of same size that previously
  +  // freeded mem is needed it will not reuse because has been fragmented...
  +  // Tested on FPC version 3.2.0 (2020-11-03) and order versions
  +  // Defragmention documented here: https://www.freepascal.org/docs-html/current/prog/progsu172.html
  +  // This issue is not detected on current Delphi memory manager (Tested on Delphi 10.3.2)
  +{$ENDIF}
  +
   
   { This function is for testing purpose only.
     Will check if Account Names are well assigned and stored }
  
positive.code:         //
          FPreviousSafeBox.FSubChains.Add(Self);
          //
          BufferBlocksHash.CopyFrom( Psnapshot^.oldBufferBlocksHash );
          FTotalBalance := Psnapshot^.oldTotalBalance;
          FTotalFee := Psnapshot^.oldTotalFee;
          FSafeBoxHash := Psnapshot^.oldSafeBoxHash;
  
negative.code:     newBlocks : TOrderedBlockAccountList; // Saves final blocks values on modified blocks
      namesDeleted : TOrderedRawList;
      namesAdded : TOrderedRawList;
      oldBufferBlocksHash: {$IFDEF USE_BIGBLOCKS_MEM_ON_DISK}TPCTemporalFileStream{$ELSE}TBytesBuffer{$ENDIF};
      oldTotalBalance: Int64;
      oldTotalFee: Int64;
      oldSafeBoxHash : TRawBytes;
  