Мало кто спрашивал меня, можем ли мы создать приложение BlockChain с помощью JavaScript, и, конечно же, есть ресурсы для создания такого приложения. В настоящее время люди сходят с ума, услышав, что кто-то работает над BlockChain, и позвольте мне сказать вам, что это не так уж и сложно. Это как обычный проект, но с большим набором правил, которым нужно следовать, и если вы не ошиблись, то вуаля, вы впереди с BlockChain.

Что такое блокчейн?

Блокчейн - это набор цепочек блоков, объединяющий создание информации об определенных транзакциях или серии шагов. Например, всякий раз, когда вы совершаете какую-либо банковскую транзакцию, либо вносите деньги, либо снимаете их, вы выполняете действие, основанное на вашей последней сумме, хранящейся в банке, и когда кто-либо делает ее доступной в Интернете, она должна иметь некоторую связь с предыдущим блоком.

Ооо, Слишком много разговоров, но для любого разработчика, такого как мы с вами, как бы мы разобрались в этой ситуации и создали приложение на ее основе. Вот демонстрация того, как блок будет подключен.

Подобно блок-схеме, мы собираемся создать приложение, чтобы продемонстрировать то же самое.

Давайте построим блок

Мы собираемся использовать то же репо, которое мы использовали в нескольких последних статьях, здесь - ссылка на репо. Вы можете найти весь код в ветке блокчейн. Вы можете включить сервер, запустив npm run dev / node index.

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

Здесь, в первой строке, мы импортируем пакет для обработки шифрования за нас. Команда ниже выполнит задание по установке пакета за нас.

npm i crypto-js

Давайте поговорим о созданном нами классе,

здесь у нас есть несколько параметров при создании объекта, то есть индекс, временная метка, транзакция и предшествующий хэш.

index - присвоить блоку уникальный идентификатор и извлечь блок по индексу для любой необходимой нам структуры данных.

timestamp должен указать время создания для конкретного блока, поскольку блок не может быть обновлен, нас не беспокоит updateAt timestamp этого.

transaction - это фактические данные, которые необходимо заблокировать. Например, общее количество сотрудников, общая сумма или данные отправителя и т. Д.

precedingHash - это поле, которое будет заботиться о соединении между предыдущим блоком и текущим блоком, как показано на диаграмме.

hash - это поле, которое будет работать вместе с precedingHash, чтобы гарантировать, что мы находимся на правильном пути соединения.

и, наконец, есть функция computeHash, которая вычислит для нас хеш, используя алгоритм SHA256. Алгоритм возьмет все данные, чтобы гарантировать уникальность сгенерированного нами хэш-кода.

Теперь, когда мы создали наш блок, перейдем к цепочке.

Создать цепочку

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

Это более серьезная проблема, но я буду вести вас по пути.

Во-первых, мы создали пустой конструктор для инициализации нескольких полей для нас, включая id [чтобы дать идентификатор], name [чтобы дать классное имя блоку], blockchain [фактическое поле, которое обрабатывает все блоки] и последнее. трудность [Получить доказательство работы].

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

Затем мы создали create(), который принимает несколько параметров

name - дать имя из API

id - предоставить идентификатор из API

и genesis, чтобы дать первоначальному генезису значение

тогда у нас есть obtainLatestBlock(), чтобы предоставить нам последний блок, введенный в цепочку, который поможет нам получить хэш последнего блока, и мы назначим его новому элементу в цепочке.

И самый важный метод - это addNewBlock() добавить новый блок в нашу цепочку, метод примет элемент блока в качестве параметра. Сначала мы получим последний хэш блокчейна и добавим его в precedingHash для него, затем мы создадим новый хеш и назначим его хешу, мы можем пропустить этот шаг, поскольку мы уже добавили его в конструктор объекта блока. Но как только этот метод запустится, он продолжит продвигать элементы в нашу блочную экосистему.

И, наконец, у нас есть checkChainValidity(), который мы не собираемся использовать, но он полезен для проверки блока.

Добавить контроллер и маршрут

Мы добавим 3 маршрута,

создать блокчейн,

POST - /api/blockchain

получить блокчейн,

GET - /api/blockchain

чтобы добавить нового потомка в цепочку,

POST - /api/blockchain/append

Давайте создадим для него файл контроллера,

Сначала мы импортируем оба созданных класса: Block и BlockChain. После этого мы создали контроллер с именем FlippingCoin, вы можете называть его как хотите. Но дело в том, что нам нужно сосредоточиться на 3 методах:

  1. createNewChain
  2. appendNewChild
  3. getChain

Перед этим мы создали глобальный объект, ссылающийся на цепочку, вы также можете подключить базу данных или какой-то обработчик данных для хранения данных. Пока что для простоты я пропущу часть, посвященную хранению данных. Помимо этих 3, мы должны проверить метод, чтобы проверить, имеет ли цепочка правильный формат данных для создания или нет.

Теперь мы вызываем соответствующие методы, чтобы все заработало.

Теперь давайте добавим маршруты, как показано ниже.

Здесь мы стараемся сопоставить методы с правильным маршрутом.

Давай проверим

Перейдем к маршруту POST - / api / blockchain

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

Перейдем к маршруту POST - / api / blockchain / append

Что добавит блок в цепочку при передаче в него данных транзакции.

И наконец, давайте перейдем к маршруту GET - / api / blockchain /, чтобы проверить, обновились ли данные.

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

Заключение

На этом я завершаю эту статью. Мы рассмотрели основные моменты использования и основы хеширования. Отсюда вы можете создавать вещи, добавляя к ней базу данных, роли в права и многое другое.

Спасибо за вашу поддержку, чтобы дочитать до этого момента. Удачного дня.

Больше контента на plainenglish.io