В нескольких последних сообщениях я рассказывал о реализации Blockchain в iOS с помощью Swift. Многие люди писали мне по электронной почте и спрашивали о реализации блокчейна Javascript. В этом посте показано, как реализовать основной движок цепочки блоков в Javascript с помощью Node.

Создание моделей

Первым шагом является определение моделей, связанных с объектами предметной области, представленными в цепочке блоков. Эти модели состоят из следующего:

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

Блок: майнер добывает блок, который позже заполняется транзакциями и добавляется в цепочку блоков.

Блокчейн: блокчейн представляет собой связанный список блоков. Блокчейн неизменяем, что означает, что после добавления блока в цепочку блоков его нельзя изменить.

После того, как наши базовые модели созданы, мы можем перейти к реализации основных функций блокчейна.

Внедрение ядра цепочки блоков

Мы начнем с того, что позволим нашим блокам добавлять транзакции. Это делается путем добавления функции addTransaction к классу Block, как показано ниже:

Блок добывается на основе его ключа, который включает следующие свойства:

index: текущий индекс блока в цепочке блоков.

previousHash: хэш предыдущего блока в цепочке блоков.

хеш: текущий хеш блока.

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

транзакции: список транзакций, добавленных в блок.

Ключевое свойство - это свойство-получатель в классе Block, как показано ниже:

Далее мы перейдем к классу Blockchain. Ниже вы можете найти полную реализацию класса Blockchain.

Чтобы сгенерировать хеш SHA256, мы воспользуемся помощью из пакета узлов js-sha256 ». Вы можете установить пакет, выполнив следующую команду:

npm install js-sha256

Вот и все!

Давайте продолжим и протестируем нашу цепочку блоков, добавив несколько транзакций.

Мы инициализируем блокчейн, передавая genesisBlock. В мире биткойнов блок генезиса содержит награды для майнеров. Затем мы добыли несколько блоков, используя функцию getNextBlock цепочки блоков. После того, как блоки добыты, мы добавляем транзакции в блок и добавляем их в цепочку блоков.

На видео показано, как работает блокчейн:

Исходный код:

Вы можете скачать исходный код здесь.

Рекомендуемая литература:

Приятного вам программирования!