В нескольких последних сообщениях я рассказывал о реализации Blockchain в iOS с помощью Swift. Многие люди писали мне по электронной почте и спрашивали о реализации блокчейна Javascript. В этом посте показано, как реализовать основной движок цепочки блоков в Javascript с помощью Node.
Создание моделей
Первым шагом является определение моделей, связанных с объектами предметной области, представленными в цепочке блоков. Эти модели состоят из следующего:
Транзакция: транзакция представляет собой передачу стоимости. Это могут быть деньги, товары, медицинские карты и т. Д.
Блок: майнер добывает блок, который позже заполняется транзакциями и добавляется в цепочку блоков.
Блокчейн: блокчейн представляет собой связанный список блоков. Блокчейн неизменяем, что означает, что после добавления блока в цепочку блоков его нельзя изменить.
После того, как наши базовые модели созданы, мы можем перейти к реализации основных функций блокчейна.
Внедрение ядра цепочки блоков
Мы начнем с того, что позволим нашим блокам добавлять транзакции. Это делается путем добавления функции addTransaction к классу Block, как показано ниже:
Блок добывается на основе его ключа, который включает следующие свойства:
index: текущий индекс блока в цепочке блоков.
previousHash: хэш предыдущего блока в цепочке блоков.
хеш: текущий хеш блока.
nonce: магическое число, которое увеличивается, чтобы найти секретный хэш, который используется для подписи блока.
транзакции: список транзакций, добавленных в блок.
Ключевое свойство - это свойство-получатель в классе Block, как показано ниже:
Далее мы перейдем к классу Blockchain. Ниже вы можете найти полную реализацию класса Blockchain.
Чтобы сгенерировать хеш SHA256, мы воспользуемся помощью из пакета узлов js-sha256 ». Вы можете установить пакет, выполнив следующую команду:
npm install js-sha256
Вот и все!
Давайте продолжим и протестируем нашу цепочку блоков, добавив несколько транзакций.
Мы инициализируем блокчейн, передавая genesisBlock. В мире биткойнов блок генезиса содержит награды для майнеров. Затем мы добыли несколько блоков, используя функцию getNextBlock цепочки блоков. После того, как блоки добыты, мы добавляем транзакции в блок и добавляем их в цепочку блоков.
На видео показано, как работает блокчейн:
Исходный код:
Вы можете скачать исходный код здесь.
Рекомендуемая литература:
Приятного вам программирования!