блокчейн разработка приложений pdf

Блокчейн, Руководство для начинающих разработчиков, Сингхал Б., Дамеджа Г., Панда П.С., 2020

Блокчейн, Руководство для начинающих разработчиков, Сингхал Б., Дамеджа Г., Панда П.С., 2020.

Книга предназначена для изучения фундаментальных основ блокчейна и решения прикладных задач. С нуля изложены основы криптографии, устройство блокчейна и его основные компоненты: математика, криптография, теория игр. Изложены технические основы самых известных блокчейнов в мире — Bitcoin и Ethereum. Продемонстрировано, как можно запрограммировать блокчейн для разных вариантов использования, не ограничиваясь только криптовалютой. Рассмотрен процесс разработки кода для управления транзакциями на языках JavaScript и Solidity, показано, как самостоятельно создавать и размещать умные контракты. Продемонстрирован полный цикл разработки децентрализованного приложения (DApps).

блокчейн разработка приложений pdf. 126690. блокчейн разработка приложений pdf фото. блокчейн разработка приложений pdf-126690. картинка блокчейн разработка приложений pdf. картинка 126690.

Происхождение блокчейна.
Одним из первых переломных моментов цифровой истории стало появление в 1970-х годах протокола TCP/IP, на котором основан современный Интернет. До появления TCP/IP мы жили в эпоху коммутируемых каналов, которые нуждались в прямом физическом соединении между двумя устройствами.

Когда в начале 1990-х годов Интернет явился общественности в виде «сетевой паутины» World Wide Web (WWW), ему пришлось обеспечивать связь всех со всеми. Это связано с тем, что Интернет построен поверх открытого и децентрализованного протокола TCP/IP. Когда какие-либо новые технологии, особенно революционные, попадают на рынок, они либо умирают сами по себе, либо приобретают такое влияние, что становятся общепринятой нормой. Общество приспособилось к сетевой революции и по-своему воспользовалось возможностями, которые она предлагала. В результате сеть сформировалась, пожалуй, не совсем в том виде, как это было задумано. Она могла бы стать более открытой, доступной и равноправной. Однако многие новые технологии начали накладываться на существующие структуры, и к сегодняшнему дню Интернет стал таким, каков он есть, — более централизованным. Люди склонны привыкать к ограничениям технологии. Нынче они вполне довольны, если международный перевод средств занимает несколько дней, или обходится слишком дорого, или недостаточно надежен.

ОГЛАВЛЕНИЕ.
Об авторах
О техническом рецензенте.
Благодарности.
Предисловие.
ГЛАВА 1. Знакомство с блокчейном.
1.1. Происхождение блокчейна.
1.2. Что такое блокчейн?.
Шаг 1.
Шаг 2.
Шаг 3.
1.3. Централизованные и децентрализованные системы.
1.3.1. Централизованные системы.
1.3.2. Децентрализованные системы.
1.4. Уровни блокчейна.
1.4.1. Прикладной уровень (application layer).
1.4.2. Уровень выполнения (execution layer).
1.4.3. Семантический уровень (semantic layer).
1.4.4. Уровень распространения (propagation layer).
1.4.5. Уровень консенсуса (consensus layer).
1.5. Почему блокчейн так важен?.
1.5.1. Ограничения централизованных систем.
1.5.2. Долго ли ждать блокчейн?.
1.6. Практическое применение блокчейна.
1.7. Заключение.
1.8. Рекомендуемые источники.
ГЛАВА 2. Как работает блокчейн?.
2.1. Фундаментальные основы блокчейна.
2.2. Криптография.
2.2.1. Криптография с симметричным ключом.
Принцип Керкгоффса и функция XOR.
Потоковое и блочное шифрование.
Одноразовый блокнот.
Стандарт шифрования данных DES.
Расширенный стандарт шифрования AES.
Расширение ключа AES.
Проблемы криптографии с симметричным ключом.
2.2.2. Криптографические хэш-функции.
Обзор различных хэш-функций.
SHA-2.
SHA-256 и SHA-512.
RIPEMD.
SHA-3.
Применение хэш-функций.
Примеры кода хэш-функций.
2.2.3. MAC и НМАС.
2.2.4. Криптография с асимметричным ключом.
RSA.
Алгоритм цифровой подписи DSA.
Криптография на эллиптических кривых.
Алгоритм ECDSA.
Примеры кода для криптографии с открытым ключом.
2.2.5. Обмен ключами по Диффи — Хеллману.
2.2.6. Открытый или закрытый ключ?.
2.3. Теория игр.
2.3.1. Равновесие по Нэшу.
2.3.2. Дилемма заключенного.
2.3.3. Проблема византийских генералов.
2.3.4. Игры с нулевой суммой.
2.3.5. Зачем изучать теорию игр?.
2.4. Информатика.
2.4.1. Хэш-указатель.
2.4.2. Дерево Меркла.
2.4.3. Сниппеты кода для дерева Меркла.
2.5. Обобщаем знания.
2.5.1. Свойства блокчейн-решений.
Неизменность.
Стойкость к подделке.
Демократичность.
Устойчивость к двойным расходам.
Согласованное состояние реестра.
Жизнестойкость.
Проверяемость.
2.5.2. Транзакции и блокчейн.
2.5.3. Механизмы распределенного консенсуса.
Доказательство работы (PoW).
Доказательство владения долей (PoS).
Алгоритм PBFT.
2.6. Применение блокчейна.
2.7. Масштабирование блокчейна.
2.7.1. Вычисления вне блокчейна.
2.7.2. Шардинг.
2.8. Заключение.
2.9. Рекомендуемые источники.
ГЛАВА 3. Как работает Bitcoin?
3.1. История денег.
3.2. Появление биткойна.
3.2.1. Что такое биткойн?.
3.2.2. Работа с биткойнами.
3.3. Блокчейн Bitcoin.
3.3.1. Структура блока.
Дерево Меркла.
Уровень сложности.
3.3.2. Блок генезиса.
3.4. Сеть Bitcoin.
3.4.1. Регистрация нового узла в сети.
3.4.2. Bitcoin-транзакции.
3.4.3. Консенсус и майнинг блоков.
3.4.4. Распространение блока.
3.5. Промежуточные итоги главы.
3.6. Скрипты Bitcoin.
3.6.1. Еще раз про транзакции в сети Bitcoin.
3.6.2. Скрипты.
3.7. Полные узлы или SPV?.
3.7.1. Полные узлы.
3.7.2. Упрощенная проверка транзакций.
3.8. Биткойн-кошельки.
3.9. Заключение.
3.10. Рекомендуемые источники.
ГЛАВА 4. Как работает Ethereum?.
4.1. От Bitcoin до Ethereum.
4.1.1. Ethereum как блокчейн нового поколения.
4.1.2. Философия блокчейна Ethereum.
4.2. Введение в блокчейн Ethereum.
4.2.1. Структура данных блокчейна Ethereum.
4.2.2. Счета Ethereum.
Преимущества концепции UTXO.
Преимущества концепции счетов.
Состояние счета.
4.2.3. Применение префиксного trie-дерева.
4.2.4. Дерево Меркла — Патриции.
4.2.5. RLP-кодирование.
4.2.6. Транзакция Ethereum и структура сообщения.
4.2.7. Функция перехода состояния Ethereum.
4.2.8. Газ и стоимость транзакции.
4.3. Умные контракты Ethereum.
4.3.1. Создание контракта.
4.4. Виртуальная машина Ethereum и выполнение кода.
4.5. Экосистема Ethereum.
4.5.1. Swarm.
4.5.2. Whisper.
4.5.3. Децентрализованное приложение (DApp).
4.5.4. Компоненты разработки.
4.6. Заключение.
4.7. Рекомендуемые источники.
ГЛАВА 5. Разработка блокчейн-приложений.
5.1. Децентрализованные приложения.
5.2. Создание блокчейн-приложений.
5.2.1. Программирование приложений Bitcoin и Ethereum.
5.2.2. Библиотеки и инструменты.
5.3. Взаимодействие с блокчейном Bitcoin.
5.3.1. Установка и инициализация библиотеки BitcoinJS в приложении node.js.
5.3.2. Создание пары ключей для отправителя и получателя.
5.3.3. Получение тестовых биткойнов.
5.3.4. Получение неизрасходованных остатков.
5.3.5. Подготовка биткойн-транзакции.
5.3.6. Подписание входных данных транзакции.
5.3.7. Создание НЕХ-кода транзакции.
5.3.8. Трансляция транзакции в сеть.
5.4. Программное взаимодействие с Ethereum — отправка транзакций.
5.4.1. Настройка библиотеки и подключения.
5.4.2. Настройка счетов Ethereum.
5.4.3. Получение тестового эфира на счет отправителя.
5.4.4. Подготовка транзакции Ethereum.
5.4.5. Подписание транзакции.
5.4.6. Отправка транзакции в сеть Ethereum.
5.5. Создание умного контракта Ethereum.
5.5.1. Подготовка.
5.5.2. Программируем умный контракт.
5.5.3. Получение сведений о контракте.
5.5.4. Развертывание контракта в сети Ethereum.
5.6. Вызов функций умного контракта.
5.6.1. Получение ссылки на смарт-контракт.
5.6.2. Вызываем функцию умного контракта.
5.7. Блокчейн с новой точки зрения.
5.8. Публичные и частные блокчейны.
5.9. Архитектура децентрализованных приложений.
5.9.1. Публичные и локальные узлы.
5.9.2. Децентрализованные приложения и серверы.
5.10. Заключение.
5.11. Рекомендуемые источники.
ГЛАВА 6. Разработка приложений Ethereum.
6.1. Децентрализованное приложение.
6.2. Настройка частной сети Ethereum.
6.2.1. Установка клиента GoEthereum.
6.2.2. Создание каталога данных geth.
6.2.3. Создание учетной записи geth.
6.2.4. Создание файла конфигурации genesis.json.
6.2.5. Запуск первого узла частной сети.
6.2.6. Запуск второго узла частной сети.
6.3. Создание умного контракта.
6.4. Развертывание умного контракта.
6.4.1. Настройка библиотеки web3 и подключения.
6.4.2. Развертывание контракта в частной сети.
6.5. Клиентское веб-приложение.
6.6. Заключение.
6.7. Рекомендуемые источники.
Приложение. Описание электронного архива.
Предметный указатель.

Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу

Источник

Книга «Децентрализованные приложения. Технология Blockchain в действии»

блокчейн разработка приложений pdf. 7936402294b7414b9c06c384353c7862. блокчейн разработка приложений pdf фото. блокчейн разработка приложений pdf-7936402294b7414b9c06c384353c7862. картинка блокчейн разработка приложений pdf. картинка 7936402294b7414b9c06c384353c7862.Технология Bitcoin показала, как можно использовать криптографически сохраненные записи, модель с ограниченными ресурсами, открытый исходный код и пиринговые сети для создания нового типа успешных приложений.

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

История появления децентрализованных приложений

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

Ответ прост: потому что этот путь проще и идеологически, и программно. Он оказался самым простым в реализации, и он работал. Один человек или группа оплачивали содержание сервера и получали прибыль от пользователей их программного обеспечения. Одними из первых популярных централизованных приложений стали MySpace и Yahoo. Более современные приложения, такие как Uber и Airbnb, децентрализуют отдельные сегменты бизнеса, предоставляя централизованное и доверенное хранилище данных. Они одними из первых позволили извлекать прибыль в разных сферах экономики. Их децентрализованная бизнес-модель предвещает появление еще более децентрализованных приложений.

На некотором этапе развития Всемирной паутины появился новый протокол, разработанный Брэмом Коэном, получивший название BitTorrent. Этот протокол был создан для решения проблемы длительности загрузки огромных медиафайлов через HTTP и как усовершенствование некоторых одноранговых (P2P) предшественников вроде Gnutella, Napster и Grokster. Проблема заключалась в том, что загрузка огромных файлов занимала очень продолжительное время, а с ростом Всемирной паутины увеличивались и размеры самих файлов. В то же время росла емкость жестких дисков и увеличивалось количество людей, подключенных к Интернету. BitTorrent решил проблему, превратив загружающих в раздающих.

Если вам требовался некоторый файл, вы могли загрузить его не из одного, а сразу из нескольких источников. Чем популярнее файл, тем больше пользователей загружало и, соответственно, раздавало его. А чем больше источников, тем быстрее осуществляется загрузка. Сидеры (seeders)1 вознаграждались более высокими скоростями загрузки, а личеры (leechers)2, напротив, наказывались ограничением скорости. Система передачи данных, организованная по принципу «ты — мне, я — тебе», доказала свою эффективность для распространения медиафайлов большого размера, таких как фильмы и записи телевизионных передач.

Протокол BitTorrent продолжает развиваться и для многих является основным способом загрузки огромных файлов, таких как игры или фильмы. Благодаря скорости, устойчивости и наличию механизма вознаграждения протокол BitTorrent лучше подходит для загрузки больших объемов данных, чем HTTP.

Тогда почему развитие Всемирной паутины не пошло по этому пути?

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

PopcornTime использует протокол BitTorrent для передачи потокового видео между пользователями в режиме реального времени, действуя подобно BitTorrent-клиенту Netflix. Это настоящий кошмар для американской ассоциации кинокомпаний (Motion Picture Association of America, MPAA). Никакой регулятор не способен установить свои ограничения, и теперь любой может получить свободный доступ к фильмам. PopcornTime оказался практичным децентрализованным приложением, действующим как децентрализованная версия Netflix. Создатели утверждают, что их приложение используется во всех странах и даже в двух странах, где нет Интернета. В PopcornTime отсутствует внутренняя конкуренция, и в нем не требуется поддержка децентрализованного консенсуса, поэтому нет необходимости использовать цепочки блоков. Это приложение просто передает потоковое видео, и тем самым обеспечивается его немалая ценность.

Целью разработки OpenBazaar было создание децентрализованной версии Ebay. В приложении OpenBazaar отсутствуют посредники, которые указывали бы продавцам, что они могут продавать, а что — нет, или взимали бы плату за услуги. Оно основано на протоколе BitTorrent, однако проблема заключается в том, что продавцы должны иметь собственные хранилища. Они вынуждены настраивать собственные серверы, чтобы пользователи могли видеть продаваемые товары. В идеале продавцы могли бы просто выгружать свою информацию в сеть, возможно, за небольшую плату, и избавиться от лишнего беспокойства. Но для этого необходима децентрализованная система заинтересованных хранителей (майнеров в терминологии Bitcoin), о которых подробнее рассказывается в главе 4. Для передачи данных в OpenBazaar используется протокол BitTorrent, а для расчетов — криптовалюта Bitcoin.

Приложение FireChat появилось в связи с известными событиями — демократическими протестами в Гонконге в 2014 году. Печально известный «Великий китайский файервол» (Great Firewall) блокирует доступ к продемократическим сайтам или к сайтам, распространяющим информацию, идущую вразрез с интересами китайского правительства. Протестующие боялись, что правительство попытается закрыть доступ к различным социальным сетям, чтобы лишить их общения посредством протокола HTTP. Поэтому они применяли FireChat, приложение, использующее новую возможность iOS 7 с названием Multipeer Connectivity (многосторонние соединения), позволяющую телефонам связываться друг с другом без посредников. Из-за отсутствия центральной точки отказа правительству пришлось бы вручную отключать каждый узел, что практически невозможно, поэтому протестующие могли уверенно общаться друг с другом.

Децентрализованный протест в лучшем его проявлении.

Мы подробно обсудим Lighthouse в главе 5, а пока отмечу, что это кошелек для Bitcoin с набором встроенных умных контрактов. Умные контракты помогают вкладывать деньги в определенные проекты, так же как, например, Kickstarter. Когда проект достигает своей цели, появляется возможность вернуть средства из кошелька Lighthouse проекта, собирающего средства. Вкладчик может в любой момент отозвать свой вклад без уведомления создателя проекта. Lighthouse — отличный пример использования существующей инфраструктуры Bitcoin для создания своего децентрализованного приложения. Lighthouse — это всего лишь пользовательский интерфейс с несколькими встроенными умными контрактами Bitcoin. Приложение работает, опираясь на круг пользователей Bitcoin. Оно открыто, полагается на поддержку децентрализованного консенсуса, не имеет центральной точки отказа, но использует не собственную валюту, а Bitcoin. Это очень полезное приложение, но оно не приносит коммерческой выгоды создателям.

Gems — это приложение-мессенджер, разработанное с целью создания более справедливой бизнес-модели, чем WhatsApp. Gems выпускает собственную валюту и позволяет рекламодателям платить пользователям напрямую за свои данные, без участия посредников, получающих свою долю. Пользователи тоже могут зарабатывать гемы, привлекая новых пользователей в сеть. Гемы — это метамонеты валюты Gems, основанной на Bitcoin, которые разработчики также получают за разработку и сопровождение программного обеспечения. Круг пользователей Gems постоянно расширяется, поэтому растет ценность валюты. Пользователи заинтересованы в расширении сети и получении дохода, как и разработчики. Gems можно рассматривать как пример долевого участия в развитии децентрализованного приложения. Его исходный код закрыт, поэтому у пользователей нет возможности убедиться в отсутствии единственной точки отказа. Gems — это коммерчески выгодное приложение, но, на мой взгляд, оно не обладает достаточным запасом надежности, чтобы выдержать конкуренцию с продуктами, отвечающими трем другим критериям.

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

Существует довольно много криптовалют, отвечающих всем четырем критериям, но криптовалюты не являются децентрализованными приложениями. Если говорить о децентрализованных социальных сетях, службах организации совместных поездок, поисковых движках, когда берется стек и децентрализуется, тогда ответ на заданный вопрос — нет. Однако это вполне возможно — необходимые технологии существуют, и как только появится что-то новое, многие разработчики устремятся на децентрализованную сторону, чтобы делать серьезные деньги для себя и своих пользователей. Давайте поговорим о некоторых из этих поддерживающих технологий.

Для Хаброжителей скидка 25% по купону — Applications

Источник

Блокчейн на JavaScript

В последнее время криптовалюты и блокчейн-технологии стали невероятно популярными. Сегодня я расскажу о моём подходе к созданию блокчейн-платформы на JavaScript с использованием всего 60 строк кода. Я — начинающий блокчейн-разработчик, поэтому если я в чём-то ошибаюсь — поправьте меня в комментариях.

блокчейн разработка приложений pdf. image loader. блокчейн разработка приложений pdf фото. блокчейн разработка приложений pdf-image loader. картинка блокчейн разработка приложений pdf. картинка image loader.

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

Прежде чем мы займёмся программированием — надо разобраться с тем, что такое блокчейн (blockchain, цепочка взаимосвязанных блоков). С технической точки зрения, в минимальном представлении, это всего лишь список объектов, содержащих некую информацию — вроде отметки времени, сведений о транзакциях, хешей. Эти данные должны быть иммутабельными и надёжно защищёнными от взлома. Современные платформы, вроде Ethereum, Cardano, Polkadot, обладают гораздо более широкими возможностями, чем просто хранение неких данных, но мы тут будем стремиться к простоте.

Подготовка среды разработки

Для этого проекта мы будем использовать Node.js, поэтому вам, если у вас эта платформа не установлена, понадобится её установить.

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

Создание блока

Как я уже сказал, блок — это просто объект, в котором хранится какая-то информация. Нам, следовательно, понадобится класс Block :

Вышеприведённый код даст нам то, что нужно. Но если вы хотите разобраться с тем, как именно он работает — взгляните на официальную документацию Node.js по классу Hash.

На данном этапе работы у нас должно получиться нечто вроде следующего кода:

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

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

Блокчейн

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

Ещё нам необходим так называемый первичный блок (genesis block), который, с технической точки зрения, представляет собой всего лишь самый первый блок:

И я, для удобства, создал функцию, которая выдаёт самый последний блок:

Теперь нам нужен механизм добавления блоков в блокчейн:

Проверка блокчейна

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

Алгоритм доказательства выполнения работы

Подобная система направлена на то, чтобы значительно увеличить объём работ, необходимых для создания нового блока. Если нужно модифицировать некий блок — понадобится выполнить работу, необходимую для создания этого блока и всех блоков, которые идут за ним. Это требует поиска значений, которые, после хеширования, дают результат, начинающийся с определённого количества нулевых битов. Речь идёт о так называемом значении nonce (number that can only be used once — число, которое может быть использовано один раз), а количество нулевых битов в начале такого числа известно как «сложность». По мере увеличения сложности задача добычи (майнинга, mining) нового блока становится всё сложнее и сложнее. Это позволяет предотвратить модификацию предыдущих блоков, так как тому, кто хотел бы модифицировать некий блок, пришлось бы выполнить работу, необходимую для создания этого блока и всех блоков, которые идут за ним. А это практически невозможно.

Реализовать эту систему можно, добавив в класс Block метод mine и свойство nonce :

Из-за того, что даже маленькое изменение данных блока ведёт к появлению совершенно нового хеша, мы просто снова и снова инкрементируем nonce до тех пор, пока хеш не окажется таким, как нам нужно.

(Учтите, что Bitcoin и другие блокчейн-системы используют другой способ настройки сложности, но мы тут, как уже говорилось, стремимся к простоте.)

Вернёмся к классу Blockchain и создадим в нём свойство для хранения сложности — difficulty :

В него записано число 1, оно должно меняться в зависимости от количества добытых блоков.

Нам надо отредактировать и код метода addBlock класса Blockchain :

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

Примечание

Я использовал для этого блокчейна PoW-систему из-за стремления к простоте. Большинство современных блокчейнов используют гораздо лучшую систему, основанную на механизме консенсуса «доказательство доли владения» (Proof-of-Stake, PoS), или одну из многих усовершенствованных систем такого типа.

Тестирование блокчейна!

Сначала экспортируем необходимые классы:

Импортируем их в index.js и приступим к испытанию:

Запуск системы должен выглядеть примерно так:

блокчейн разработка приложений pdf. image loader. блокчейн разработка приложений pdf фото. блокчейн разработка приложений pdf-image loader. картинка блокчейн разработка приложений pdf. картинка image loader.

Первый блок — это первичный блок, а второй — это тот блок, который мы добавили в блокчейн.

Дополнение: сложность и время блока

▍Время блока

Время блока (block time) — это константное значение, которое представляет собой приблизительное время, необходимое на добавление блока в блокчейн. Платформа Bitcoin, например, имеет время блока, равное 10 минутам, а время блока Ethereum равняется 13 секундам.

▍Формула сложности Bitcoin

Сложность Bitcoin меняется после добычи каждых 2016 блоков. Для вычисления сложности используется следующая формула:

Теперь займёмся программированием!

Просто для примера я создам собственную систему: сложность будет увеличиваться на 1 если время блока меньше, чем реальное время, за которое был добыт блок. В противном случае она будет уменьшаться на 1.

▍Важное примечание

Можете, правда, создать и собственную формулу. Но при этом нужно ориентироваться на безопасность и на хорошую производительность решения.

Итоги

Вот исходный код моего проекта на GitHub.

Хочу сказать, что многое узнал о блокчейне из материалов YouTube-канала Simply Explained. Я не написал бы эту статью, если бы не серия учебных видео по блокчейну с этого канала. Я, кроме того, почерпнул кое-что из этой статьи. Рекомендую эти материалы всем, кому интересна тема блокчейна.

Доводилось ли вам пользоваться блокчейн-технологиями?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *