anchor.diff:    finally
       Unlock;
     end;
  +end;
  +
  +class function TPCOperationsComp.LoadOperationBlockFromStream(AStream: TStream; var Asoob : Byte;
  +  var AOperationBlock: TOperationBlock): Boolean;
  +var Lraw : TBytes;
  +begin
  +  Result := False;
  +  AStream.Read(Asoob,1);
  +  if (Asoob in [2,3,4,5]) then begin
  +    if AStream.Read(AOperationBlock.protocol_version, Sizeof(AOperationBlock.protocol_version)) < 0 then Exit;
  +    AStream.Read(AOperationBlock.protocol_available, Sizeof(AOperationBlock.protocol_available));
  +  end else begin
  +    // We assume that protocol_version is 1 and protocol_available is 0
  +    AOperationBlock.protocol_version := 1;
  +    AOperationBlock.protocol_available := 0;
  +  end;
  +
  +  if AStream.Read(AOperationBlock.block, Sizeof(AOperationBlock.block))<=0 then exit;
  +
  +  if TStreamOp.ReadAnsiString(AStream, Lraw) < 0 then exit;
  +  AOperationBlock.account_key := TAccountComp.RawString2Accountkey(Lraw);
  +
  +  if AStream.Read(AOperationBlock.reward, Sizeof(AOperationBlock.reward)) < 0 then exit;
  +  if AStream.Read(AOperationBlock.fee, Sizeof(AOperationBlock.fee)) < 0 then exit;
  +  if AStream.Read(AOperationBlock.timestamp, Sizeof(AOperationBlock.timestamp)) < 0 then exit;
  +  if AStream.Read(AOperationBlock.compact_target, Sizeof(AOperationBlock.compact_target)) < 0 then exit;
  +  if AStream.Read(AOperationBlock.nonce, Sizeof(AOperationBlock.nonce)) < 0 then exit;
  +  if TStreamOp.ReadAnsiString(AStream, AOperationBlock.block_payload) < 0 then exit;
  +  if TStreamOp.ReadAnsiString(AStream, AOperationBlock.initial_safe_box_hash) < 0 then exit;
  +  if TStreamOp.ReadAnsiString(AStream, AOperationBlock.operations_hash) < 0 then exit;
  +  if TStreamOp.ReadAnsiString(AStream, AOperationBlock.proof_of_work) < 0 then exit;
  +  if AOperationBlock.protocol_version>=CT_PROTOCOL_5 then begin
  +    if TStreamOp.ReadAnsiString(AStream, AOperationBlock.previous_proof_of_work) < 0 then exit;
  +  end;
  +  Result := True;
   end;
   
   class function TPCOperationsComp.OperationBlockToText(const OperationBlock: TOperationBlock): String;
  
positive.code:       errors := 'Invalid protocol structure. Check application version!';
        exit;
      end;
      soob := 255;
      Stream.Read(soob,1);
      // About soob var:
      // In build prior to 1.0.4 soob only can have 2 values: 0 or 1
      // In build 1.0.4 soob can has 2 more values: 2 or 3
  
negative.code:     Property OperationBlock: TOperationBlock read FOperationBlock;
      Class Function OperationBlockToText(const OperationBlock: TOperationBlock) : String;
      Class Function SaveOperationBlockToStream(Const OperationBlock: TOperationBlock; Stream: TStream) : Boolean;
      class Function LoadOperationBlockFromStream(AStream : TStream; var Asoob : Byte; var AOperationBlock : TOperationBlock) : Boolean;
      Property AccountKey: TAccountKey read GetAccountKey write SetAccountKey;
      Property nonce: Cardinal read GetnOnce write SetnOnce;
      Property timestamp: Cardinal read Gettimestamp write Settimestamp;
  