Эта статья является введением в мою книгу. Первая часть книги доступна бесплатно на Kindle. Это тот же контент, что и бесплатная часть.

Английское издание



Японское издание



Введение

Эта книга представляет собой учебник по блокчейн-разработке для начинающих. В последнее время большое внимание привлекают технологии следующего поколения, такие как Web 3.0, DAO, Metaverse, NFT и Cryptocurrency. Блокчейн является одной из ключевых технологий, поддерживающих эти технологии. Поэтому спрос на знания блокчейна и опыт разработки растет с каждым годом. Многие люди почувствуют необходимость изучить технологию блокчейна.

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

Преимущества этого материала

Вот преимущества этого материала. Четыре пункта: «Легко понять даже новичкам», «Вы можете получить как навыки разработки, так и знания», «Вы можете получить общие знания в области ИТ» и «Вы можете опубликовать свой разработанный блокчейн в Интернете». Эти пункты превосходят общий учебный контент по блокчейну и материалы по программированию.

(1) Простота понимания даже для новичков

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

Чтобы понять блокчейн, вам нужно изучить три основных понятия. Это «Уникальная структура с множеством связанных блоков», «Сеть из нескольких блокчейнов, синхронизированных друг с другом» и «Безопасность для предотвращения подделки данных». Однако невозможно создать сетевую структуру из нескольких блокчейнов, не зная структуры одного блокчейна. Вы не можете узнать о безопасности для предотвращения подделки данных, не зная, как сеть блокчейна обменивается и синхронизирует данные. Если вы учите в неправильном порядке, это очень трудно понять.

Большинство книг, связанных с блокчейном, как правило, сосредоточены на технологиях безопасности блокчейна, таких как «Proof of Work», «Proof of Stake» и «Signatures and Verification with ECDSA». Это очень важные элементы, но многие новички могут не иметь необходимых знаний, и их может быть трудно понять. В этой книге мы будем учиться с основ, чтобы новички могли легко понять материал. Во-первых, будет разработан простой автономный блокчейн. Затем разработанный блокчейн будет реплицирован для создания сети, которая синхронизируется друг с другом. Наконец, мы разработаем дополнительные механизмы для повышения уровня безопасности.

(2) Вы можете получить как навыки развития, так и знания.

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

https://github.com/moyattodataman/blockchain/tree/main/

(3) Вы можете получить общие знания в области ИТ.

Третье преимущество заключается в том, что вы также получите общие знания в области ИТ, которые будут использоваться в блокчейне. В этом материале блокчейн-сервер построен с использованием FastAPI, одного из веб-фреймворков Python. HTTP-запросы и передача данных в формате JSON используются для механизма синхронизации блокчейна. В качестве мер по повышению безопасности мы используем криптографию с открытым ключом и технологию хеширования. Эти технологии также используются в различных системах, отличных от блокчейна. Это главное преимущество изучения блокчейна.

(4) Вы можете опубликовать свой разработанный блокчейн в Интернете.

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

Это правда, что большая часть технического понимания будет возможна, если система работает на вашем собственном ПК. Однако, если вы можете опубликовать свою работу в Интернете, вы сможете проверить, как она используется с точки зрения пользователя, и у вас будет чувство выполненного долга за то, что вы смогли опубликовать то, что разработали. Если вы хотите стать программистом, его также можно использовать в качестве портфолио для своих работодателей. В последние годы появляется все больше инструментов, позволяющих легко бесплатно публиковать свои работы в Интернете. В этом материале также объясняется, как опубликовать свой блокчейн в Интернете с помощью бесплатного облачного сервиса под названием Deta.

Рекомендовать этот материал кому

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

Рекомендуется для.

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

Не рекомендуется для.

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

Примечания перед покупкой

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

Кроме того, автор (это я) — японец. Я с трудом переводил его на английский. Некоторые части английского могут быть трудными для понимания. Я максимально отвечу на ваши вопросы. Тем не менее, пожалуйста, простите меня за то, что я потратил время на ответ при общении на английском языке.

Контакт

Если у вас есть какие-либо вопросы по материалам, пожалуйста, свяжитесь с нами через DM в Твиттере по адресу https://twitter.com/moyattodataman.

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

Оглавление

Introduction
0-1 Blockchain Development Flow
0-2 Goal image of Blockchain Application
0-3 [Preparation] JSON Viewer Settings
0-4 [Preparation] Install FastAPI and create Deta Account
Section 1  Development of Simple blockchain API server stand-alone
1-1 Overview of this Section
1-2 Frame of Blockchain API server
1-3 Transaction Pool Reference Function
1-4 Chain Reference Function
1-5 Transaction Registration Function
1-6 Block Generation Function
1-7 Deployment to Production Environment
Section 2  Building Blockchain Network
2-1 Overview of this Section
2-2 Transaction pools Synchronization
2-3 Chains Synchronization
2-4 Deployment to Production Environment
Section 3  Development of Mechanisms for Secure Blockchain
3-1 Overview of this Section
3-2 Secret and Public Key Generation Function
3-3 Signing and Verification Functions for Transaction
3-4 Retain Hash of previous Block
3-5 Proof of Work Implementation
3-6 Chain Verification Function during Chain Synchronization
3-7 Deployment to Production Environment
At the end

0–1 Процесс разработки блокчейна

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

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

Цель этой части

  • Разберитесь в общем потоке развития блокчейна в этом материале
  • Получите представление о том, как работают основы блокчейна и ключевые слова

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

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

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

Технология децентрализованной бухгалтерской книги используется для записи информации в DAO, NFT, смарт-контрактах и ​​криптовалютах. Технология блокчейн также незаменима в пространстве метавселенной, где будут использоваться эти технологии следующего поколения. Родился термин Web 3.0, общая концепция новой эры, и технология блокчейн пользуется большим спросом.

Почему блокчейн устойчив к взлому? Как распределяются данные? Эти вопросы часто не будут ясны из концептуальных рисунков или поверхностных описаний технических характеристик. Этот материал призван обеспечить более глубокое понимание технологии блокчейна посредством разработки программ.

Раздел 1: Разработка простого автономного сервера API блокчейна

Чтобы понять базовую структуру блокчейна, в Разделе 1 создается простой автономный сервер API блокчейна; API-сервером, что означает удобный сервер, к которому можно получить доступ извне. В частности, мы создадим сервер API, который хранит данные блокчейна и позволяет вводить или выводить данные через HTTP-запросы.

Чтобы создать сервер API блокчейна, вы должны сначала понять четыре компонента, из которых состоят данные блокчейна: Транзакция, Блок, Цепь и >Пул транзакций.

Самый маленький компонент называется Транзакция. Набор из нескольких транзакций называется Блок, а несколько блоков — Цепочка. Пул транзакций — это временный пул транзакций.

Сделка

Наименьшая составная единица блокчейна, транзакция, представляет собой данные, которые записывают одну транзакцию. Обычно он содержит дату и время транзакции, информацию о стороне (с кем выполняется транзакция), а также числовую и текстовую информацию о транзакции. Подписи подробно описаны и реализованы в Разделе 3.

Элементы транзакции и пример данных

Блокировать

Группа из нескольких транзакций называется блоком. Часть информации о транзакциях хранится в блоке, и за счет расширения цепочки связанных блоков большой объем информации о транзакциях записывается в блокчейн.

Блок содержит не только информацию о транзакции, но и хешированные значения одного предыдущего блока. Это один из механизмов, используемых для предотвращения подделки информации в блокчейне. Если в процессе генерации блока используется алгоритм, называемый Proof of Work, блок также содержит числовую информацию, называемую nonce. Хэширование и одноразовый номер подробно объясняются и реализуются в разделе 3.

Элементы блока и пример данных

Цепь

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

Элементы цепочки и примеры данных

Пул транзакций

Когда происходит транзакция, она сначала сохраняется в пуле транзакций. Транзакции не сразу фиксируются в блоке. Они хранятся в пуле транзакций в течение периода, предшествующего началу генерации блока, и одновременно в блоке хранится одна или несколько транзакций. В Биткойне новое поколение блоков называется «майнинг».

Пример структуры пула транзакций

Раздел 2: Создание сети блокчейн

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

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

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

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

Раздел 3: Разработка механизмов для безопасного блокчейна

Разделы 1 и 2 предоставляют механизм для API-сервера блокчейна для сбора и хранения информации о транзакциях и синхронизации ее по сети. Однако фактическая работа блокчейна требует высокого уровня безопасности для предотвращения подделки данных.

Раздел 3 реализует технологии, обеспечивающие безопасность блокчейна, такие как подпись и проверка транзакций, хеширование предыдущих блоков, Proof-of-Work и проверка во время транзакции и синхронизации блокчейна.

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

Подписание и проверка транзакций

Например, при покупке роскошных часов за 1 000 000 долларов с помощью кредитной карты владелец карты создает информацию о транзакции, чтобы заплатить 1 000 000 долларов магазину часов, и подписывает эту транзакцию своим именем. Точно так же в блокчейне создатель транзакции создает данные подписи из транзакции, используя секретный ключ, которым владеет только создатель, и добавляет их в транзакцию. Эти данные подписи называются Подпись.

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

Сохранить хэш предыдущего блока

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

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

Доказательство работы

Даже с мерами безопасности, обеспечиваемыми механизмом хэширования предыдущего блока, бывают случаи, когда фальсификация не может быть обнаружена. Это тот случай, когда подделывается информация о конкретном блоке, а все блоки после подделанного блока перестраиваются и перезаписываются все хеш-значения. Чтобы предотвратить это вмешательство, используется механизм под названием «Proof of Work», который намеренно затрудняет создание блоков.

Proof of Work — это механизм, который позволяет блоку хранить числовую информацию, называемую одноразовым номером, которую можно получить, только выполнив задачу. Поскольку для выполнения задачи требуется много вычислений, этот механизм продлевает время блока. Как правило, «транзакции, хеш и одноразовые данные в блоке хэшируются вместе, и все первые X цифр значения равны нулям». принимается.

Значение, полученное путем хеширования, трудно предсказать с математической точки зрения. При создании нового блока хэширование повторяется путем изменения одноразового номера, начиная с 0 и увеличивая его на 1. Тот одноразовый номер, когда все первые X цифр хэшированного значения равны нулю, должен быть сохранен в новом блоке. Чтобы вычислить одноразовый номер, необходимо выполнить огромное количество вычислений хеширования, а генерация блоков занимает много времени.

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

Сервер API блокчейна проверяет одноразовый номер всех блоков при синхронизации цепочек с другими серверами API блокчейна. Хотя вычисление одноразового номера требует очень больших вычислительных затрат, одного вычисления хеширования на блок достаточно, чтобы убедиться, что одноразовый номер правильный. Эта асимметрия лежит в основе безопасности блокчейна.

Проверка длины цепи

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

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

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

Краткое содержание

В этой части материала объясняется общий поток развития блокчейна, а также основные ключевые слова и знания о безопасности блокчейна, которые являются необходимыми условиями для его понимания. С Раздела 1 вы начнете разработку блокчейна. Давайте углубим ваше понимание блокчейна посредством создания программного кода.

Пожалуйста, прочтите следующую область на Kindle.

Английское издание



Японское издание