anchor.diff:    FLock.Release;
   end;
   
  -function TPCSafeBox.LoadSafeBoxFromStream(Stream : TStream; checkAll : Boolean; checkSafeboxHash : TRawBytes; progressNotify : TProgressNotify; var LastReadBlock : TBlockAccount; var errors : AnsiString) : Boolean;
  +function TPCSafeBox.LoadSafeBoxFromStream(Stream : TStream; checkAll : Boolean; checkSafeboxHash : TRawBytes; progressNotify : TProgressNotify; previousCheckedSafebox : TPCSafebox; var LastReadBlock : TBlockAccount; var errors : AnsiString) : Boolean;
   Var
     iblock,iacc : Cardinal;
     s : AnsiString;
  
positive.code:     Class Function CalcBlockHash(const block : TBlockAccount; useProtocol2Method : Boolean):TRawBytes;
      Class Function BlockAccountToText(Const block : TBlockAccount):AnsiString;
      Function LoadSafeBoxFromStream(Stream : TStream; checkAll : Boolean; var LastReadBlock : TBlockAccount; var errors : AnsiString) : Boolean; overload;
      Function LoadSafeBoxFromStream(Stream : TStream; checkAll : Boolean; checkSafeboxHash : TRawBytes; progressNotify : TProgressNotify; var LastReadBlock : TBlockAccount; var errors : AnsiString) : Boolean; overload;
      Class Function LoadSafeBoxStreamHeader(Stream : TStream; var sbHeader : TPCSafeBoxHeader) : Boolean;
      Class Function SaveSafeBoxStreamHeader(Stream : TStream; protocol : Word; OffsetStartBlock, OffsetEndBlock, CurrentSafeBoxBlocksCount : Cardinal) : Boolean;
      Class Function MustSafeBoxBeSaved(BlocksCount : Cardinal) : Boolean;
  
negative.code:       FBlockAccountsList.Capacity := sbHeader.blockscount;
        FBufferBlocksHash.SetLength(sbHeader.blocksCount*32);
        errors := 'Corrupted stream';
        do_check_blockchain_info := Not Assigned(previousCheckedSafebox);
        for iblock := 0 to sbHeader.blockscount-1 do begin
          if (Assigned(progressNotify)) and ((TPlatform.GetElapsedMilliseconds(tc)>=500)) then begin
            tc := TPlatform.GetTickCount;
  