Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
1,765
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.44 KB | None | 0 0
  1. blocks_count=`ls | sort -n | grep -o '[0-9]*' | wc -l` # посчитать количество "блоков" с транзакциями
  2. errors=0 # задать переменную, считающую несоответствия
  3.  
  4. for ((file=1;file<=$blocks_count;file++)) # пройдёмся по всем файлам подряд
  5. do
  6.     if [ $file != 1 ]; then # первый не трогаем
  7.         hash_written=`tail -1 "$file.txt"` # читаем последнюю строку текущего файла
  8.         hash_calculated=`sha256sum $(($file-1)).txt | awk '{print $1}'` # считаем хэш предыдущего
  9.         if [ "$hash_written" != "$hash_calculated" ]; then # сравниваем
  10.             ((errors++)) # если хэши не равны, инкрементим переменную
  11.         fi
  12.     fi
  13. done
  14.  
  15. if [ $errors == 0 ]; then
  16.     final_hash=`tail -1 final.txt` # читаем финальный хэш
  17.     hash_calculated=`sha256sum $(($blocks_count)).txt | awk '{print $1}'` # считаем хэш последнего файла
  18.     if [ "$final_hash" == "$hash_calculated" ]; then # сравниваем, и если всё в порядке, рапортуем в stdout
  19.         echo "$blocks_count blocks"
  20.         echo "chain is flawless"
  21.         echo "final hash = $final_hash"
  22.     fi
  23. else
  24.     echo "chain is corrupted" # или ругаемся, если в цепи есть ошибки
  25. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement