Как выбрать и сравнить элементы строк в js из текстового файла

Рейтинг: 0Ответов: 0Опубликовано: 13.06.2023

нужно сравнить хэши блоков, которые записаны в текстовом файле в виде:

Block ID: 1
Timestamp: 2023-06-11 10:00:00
Previous Block Hash: c46ab9e5e5f098ebb592761f28207df1b7195d530bf84e130b8bd88567d22c51
Block Hash: 995c48bde94e28821549b0f154b0e49b2c238f43fdb5c9553c2725061fe4e2a7

Block ID: 2
Timestamp: 13.06.2023, 15:56:39
Previous Block Hash: 995c48bde94e28821549b0f154b0e49b2c238f43fdb5c9553c2725061fe4e2a7
Block Hash: 0000b47ac01b041fa34aaa79e4b31ad99fa16b9da422806b38e1ffe9135f8e9f

Block ID: 3
Timestamp: 13.06.2023, 16:25:06
Previous Block Hash: 0000b47ac01b041fa34aaa79e4b31ad99fa16b9da422806b38e1ffe9135f8e9f
Block Hash: 000f88b0f28699a71cbfd3fa069d30c6a51ab0ff4ea7aec9caa346fd05e7d938

для этого нужно правильно написать:

        const previousBlockHashLine = blocks[i].match(/Previous Block Hash: ([^\n]+)/);
        const previousBlockHash = previousBlockHashLine[1];

        const currentBlockHashLine = blocks[i - 1].match(/Block Hash: ([^\n]+)/);
        const currentBlockHash = currentBlockHashLine[1];

в функции:

function checkDataDoTransaction(from, to, amount) {
  if (typeof from === 'string' && typeof to === 'string' && typeof amount === 'number') {
    // Чтение файла
    const fileContent = fs.readFileSync('block_data.txt', 'utf-8');
    // Разделение содержимого файла на блоки
    const blocks = fileContent.split('\n\n');
    // Подсчет количества блоков
    const blockCount = blocks.length;

    if (blockCount >= 2) {
      // Счетчик несоответствующих хэшей
      let mismatchCount = 0;

      for (let i = 1; i < blockCount; i++) {
        const previousBlockHashLine = blocks[i].match(/Previous Block Hash: ([^\n]+)/);
        const previousBlockHash = previousBlockHashLine[1];
      
        const currentBlockHashLine = blocks[i - 1].match(/Block Hash: ([^\n]+)/);
        const currentBlockHash = currentBlockHashLine[1];
      
        if (previousBlockHash !== currentBlockHash) {
          mismatchCount++;
          console.log('not a true hash ' + i);
          return;
        }
      }

      if (mismatchCount === 0) {
        const result = transaction(from, to, amount);
        // выполнение другого кода, если хеши верные
      }
    } else {
      const result = transaction(from, to, amount);
      // выполнение другого кода, если меньше двух блоков
    }
  } else if (from === '' || to === '' || isNaN(amount)) {
    console.log("error: bad data-type!!!");
    return;
  } else {
    console.log("bad data-type");
    return;
  }
}

Ответы

Ответов пока нет.