anchor.diff:  begin
     Result := (account1.EC_OpenSSL_NID=account2.EC_OpenSSL_NID) And
       (account1.x=account2.x) And (account1.y=account2.y);
  +end;
  +
  +class function TAccountComp.EqualAccounts(const account1, account2: TAccount): Boolean;
  +begin
  +  Result := (account1.account = account2.account)
  +          And (EqualAccountInfos(account1.accountInfo,account2.accountInfo))
  +          And (account1.balance = account2.balance)
  +          And (account1.updated_block = account2.updated_block)
  +          And (account1.n_operation = account2.n_operation)
  +          And (TBaseType.BinStrComp(account1.name,account2.name)=0)
  +          And (account1.account_type = account2.account_type)
  +          And (account1.previous_updated_block = account2.previous_updated_block);
  +end;
  +
  +class function TAccountComp.EqualOperationBlocks(const opBlock1, opBlock2: TOperationBlock): Boolean;
  +begin
  +  Result := (opBlock1.block = opBlock1.block)
  +          And (EqualAccountKeys(opBlock1.account_key,opBlock2.account_key))
  +          And (opBlock1.reward = opBlock2.reward)
  +          And (opBlock1.fee = opBlock2.fee)
  +          And (opBlock1.protocol_version = opBlock2.protocol_version)
  +          And (opBlock1.protocol_available = opBlock2.protocol_available)
  +          And (opBlock1.timestamp = opBlock2.timestamp)
  +          And (opBlock1.compact_target = opBlock2.compact_target)
  +          And (opBlock1.nonce = opBlock2.nonce)
  +          And (TBaseType.BinStrComp(opBlock1.block_payload,opBlock2.block_payload)=0)
  +          And (TBaseType.BinStrComp(opBlock1.initial_safe_box_hash,opBlock2.initial_safe_box_hash)=0)
  +          And (TBaseType.BinStrComp(opBlock1.operations_hash,opBlock2.operations_hash)=0)
  +          And (TBaseType.BinStrComp(opBlock1.proof_of_work,opBlock2.proof_of_work)=0);
  +end;
  +
  +class function TAccountComp.EqualBlockAccounts(const blockAccount1, blockAccount2: TBlockAccount): Boolean;
  +Var i : Integer;
  +begin
  +  Result := (EqualOperationBlocks(blockAccount1.blockchainInfo,blockAccount2.blockchainInfo))
  +          And (TBaseType.BinStrComp(blockAccount1.block_hash,blockAccount2.block_hash)=0)
  +          And (blockAccount1.accumulatedWork = blockAccount2.accumulatedWork);
  +  If Result then begin
  +    for i:=Low(blockAccount1.accounts) to High(blockAccount1.accounts) do begin
  +      Result := EqualAccounts(blockAccount1.accounts[i],blockAccount2.accounts[i]);
  +      If Not Result then Exit;
  +    end;
  +  end;
   end;
   
   
  
positive.code:       if Not Check_Safebox_Names_Consistency(Self,'CHAIN',errors) then begin
          if errors='' then Raise Exception.Create('Check_Safebox_Names_Consistency '+errors);
        end;
        {$ENDIF}
        TLog.NewLog(ltdebug,ClassName,Format('Check process end',[]));
      finally
  
negative.code:     Class Function IsAccountBlockedByProtocol(account_number, blocks_count : Cardinal) : Boolean;
      Class Function EqualAccountInfos(const accountInfo1,accountInfo2 : TAccountInfo) : Boolean;
      Class Function EqualAccountKeys(const account1,account2 : TAccountKey) : Boolean;
      Class Function EqualAccounts(const account1,account2 : TAccount) : Boolean;
      Class Function EqualOperationBlocks(const opBlock1,opBlock2 : TOperationBlock) : Boolean;
      Class Function EqualBlockAccounts(const blockAccount1,blockAccount2 : TBlockAccount) : Boolean;
      Class Function AccountNumberToAccountTxtNumber(account_number : Cardinal) : AnsiString;
      Class function AccountTxtNumberToAccountNumber(Const account_txt_number : AnsiString; var account_number : Cardinal) : Boolean;
      Class function FormatMoney(Money : Int64) : AnsiString;
  