anchor.diff:    c : Cardinal;
     i : Integer;
     opRef : TOpReference;
  +  LRawAggregatedHashrate : TRawBytes;
   begin
     Result := false;
     if Not Connected then exit;
  
positive.code: 
  procedure TThreadGetNewBlockChainFromClient.BCExecute;
  Var i,j : Integer;
    maxWork : UInt64;
    candidates : TList<TNetConnection>;
    lop : TOperationBlock;
    nc : TNetConnection;
  begin
    if Not TNode.Node.UpdateBlockchain then Exit;
  
    // Search better candidates:
    candidates := TList<TNetConnection>.Create;
    try
      lop := CT_OperationBlock_NUL;
      TNetData.NetData.FMaxRemoteOperationBlock := CT_OperationBlock_NUL;
      // First round: Find by most work
      maxWork := 0;
      j := TNetData.NetData.ConnectionsCountAll;
      nc := Nil;
      for i := 0 to j - 1 do begin
        if TNetData.NetData.GetConnection(i,nc) then begin
          if (nc.FRemoteAccumulatedWork>maxWork) And (nc.FRemoteAccumulatedWork>TNode.Node.Bank.SafeBox.WorkSum) then begin
            maxWork := nc.FRemoteAccumulatedWork;
          end;
          // Preventing downloading
          if nc.FIsDownloadingBlocks then exit;
        end;
      end;
      if (maxWork>0) then begin
        for i := 0 to j - 1 do begin
          If TNetData.NetData.GetConnection(i,nc) then begin
            if (nc.FRemoteAccumulatedWork>=maxWork) then begin
              candidates.Add(nc);
              lop := nc.FRemoteOperationBlock;
            end;
          end;
        end;
      end;
      // Second round: Find by most height
      if candidates.Count=0 then begin
        for i := 0 to j - 1 do begin
          if (TNetData.NetData.GetConnection(i,nc)) then begin
            if (nc.FRemoteOperationBlock.block>=TNode.Node.Bank.BlocksCount) And
               (nc.FRemoteOperationBlock.block>=lop.block) then begin
               lop := nc.FRemoteOperationBlock;
            end;
          end;
        end;
        if (lop.block>0) then begin
          for i := 0 to j - 1 do begin
            If (TNetData.NetData.GetConnection(i,nc)) then begin
              if (nc.FRemoteOperationBlock.block>=lop.block) then begin
                 candidates.Add(nc);
              end;
            end;
          end;
        end;
  
negative.code: constructor TNetConnection.Create(AOwner: TComponent);
  begin
    inherited;
    FRemoteAggregatedHashrate := TBigNum.Create;
    FIsConnecting:=False;
    FIsDownloadingBlocks := false;
    FHasReceivedData := false;
  