Как работает блокчейн?

Как работает блокчейн? Блокчейн

Приложение, которое наглядно демонстрирует технологию блокчейн

Согласно Википедии, блокчейн это:

Распределенная база данных, которая используется для поддержания постоянно растущего списка записей, называемых блоками.

Звучит неплохо, но как это работает?

Чтобы проиллюстрировать принцип работы блокчейна, мы будем использовать интерфейс для командной строки с открытым исходным кодом под названием Blockchain CLI.

Также есть браузерная версию этого инструмента.

Установка интерфейса для командной строки.

Если вы до сих пор этого не сделали, установите Node.js.

После этого введите следующие команды в терминал:

npm install blockchain-cli -g
blockchain

Вы должны увидеть следующее:👋 Welcome to Blockchain CLI!и строку  blockchain → , готовую принимать команды.

Читайте: Как заработать на инвестициях в искусственный интеллект? Краудфандинг Daisy от компании EndoTech. Обзор и отзывы о смарт-контракте

Как выглядит блок на блокчейне?

Чтобы увидеть текущее состояние блокчейна, введите  blockchain или bc в терминал. Вы должны увидеть блок, похожий на тот, что изображен ниже:

Как выглядит блок на блокчейне
  • Index (Block #): каков номер текущего блока? (начальный блок имеет индекс 0)
  • Hash: показывает, является ли блок валидным
  • Timestamp: обозначает время, когда был добавлен блок
  • Data: показывает, какая информация хранится в блоке
  • Nonce: показывает, сколько повторений нужно совершить до обнаружения валидного блока

Начальный блок

Каждый блокчейн начинается с 🏆 Genesis Block.  Как вы увидите позже, каждый блок в блокчейне зависит от предыдущего. Поэтому начальный блок нужен для того, чтобы намайнить наш первый блок

Что происходит, когда майнится новый блок?

Давайте намайним наш первый блок. Введите mine mine freeCodeCamp♥︎ в терминал.

Блокчейн ищет индекс последнего блока и предыдущий хэш. В нашем случае последним блоком является Genesis Block.

  • Index: 0 + 1 = 1
  • Previous Hash: 0000018035a828da0…
  • Timestamp: время создания блока
  • Data: freeCodeCamp❤
  • Hash: ??
  • Nonce: ??

Как высчитывается хэш?

Хэш — это числовое значение фиксированной длины, являющееся уникальным идентификатором данных.

Чтобы вычислить хэш, берутся индекс, хэш предыдущего блока, время создания, данные блока и nonce

CryptoJS.SHA256(index + previousHash + timestamp + data + nonce)

Алгоритм SHA256 вычислит уникальный хэш для этих входных данных. Одинаковые входные данные всегда возвращают одинаковый хэш.

Заметили четыре ведущих нуля в хэше блока?

Четыре ведущих нуля — это минимальное требование для валидности хэша. Число требуемых ведущих нулей называется сложностью (difficulty).

function isValidHashDifficulty(hash, difficulty) {
  for (var i = 0, b = hash.length; i < b; i ++) {
      if (hash[i] !== '0') {
          break;
      }
  }
  return i >= difficulty;
}

Это также известно, как система Proof-of-Work.

Что такое nonce?

Nonce — это число, которое используется для нахождения валидного хэша.

let nonce = 0;
let hash;
let input;
while(!isValidHashDifficulty(hash)) {     
  nonce = nonce + 1;
  input = index + previousHash + timestamp + data + nonce;
  hash = CryptoJS.SHA256(input)
}

Nonce будет увеличиваться до тех пор, пока полученный хэш не станет валидным. В нашем случае, валидный хэш имеет как минимум четыре ведущих нуля. Процесс нахождения nonce, которое соотносится с валидным хэшем, называется майнинг.

По мере увеличения сложности, число возможных валидных хэшей снижается. При меньшем числе возможных валидных хэшей потребуется больше вычислительных мощностей для обнаружения хэша.

Почему блокчейн нельзя изменить?

Это имеет значение в силу того, что позволяет блокчейну оставаться неизменным.

Если мы имеем блокчейн A → B → C, и кто-нибудь захочет изменить данные в блоке А, произойдет следующее:

  1. Данные изменятся в блоке А
  2. Хэш блока А изменится, так как изменились данные, используемые для вычисления хэша
  3. Блок А перестанет быть валидным, так как в хэше больше нет четырех ведущих нулей
  4. Изменится хэш блока B, так как хэш блока А используется для вычисления хэша блока B
  5. Блок В станет невалидным, так как в его хэше больше не будет четырех ведущих нулей
  6. Хэш блока С изменится, так как хэш блока В используется для вычисления хэша блока С
  7. Блок С перестанет быть валибным, так как в нем не будет четырех ведущих нулей

Единственный способ изменить блокчейн — намайнить заново этот блок, а также все блоки после него. А так как всегда добавляются новые блоки, изменить блокчейн будет практически невозможно.

Надеюсь, этот туториал был полезен для вас!

Если вы хотите проверить веб-версию демо, можете перейти к http://blockchaindemo.io

Оцените статью
Добавить комментарий