{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

Взгляд венчурного инвестора на Блокчейн | 04: Как устроен Блокчейн

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

Для того, чтобы суметь выбрать «the next big thing» в мире крипто-экономики, нужно понимать, как устроена сама технология, иначе легко пасть жертвой жуликов. В этом посте я на пальцах расскажу о том, как устроена технология Блокчейн, следующий пост будет про майнинг. Эта часть блога технически непростая, но я убежден, что понимание технологии на таком уровне необходимо для успешного инвестирования в долгосрочной перспективе.

Напомню, какими свойствами должен обладать Блокчейн:

  • Прозрачность: должен быть открыт и прозрачен для всех

  • Неизменность: никто не может изменить то, что уже записано в Блокчейне

  • First-in-first-out: сообщения, полученные сетью, сохраняются по принципу «раньше получено – раньше записано». Таким образом устраняется проблема дупликации сообщений (Double spending)

Как выглядит блок

Блокчейн (block-chain), как следует из названия – это цепочка блоков. Блок – это буквально большой текстовый файл с определенной структурой. Эта структура включает следующие обязательные поля:

  • Номер блока: просто последовательный номер в цепочке. Например, последний номер блока в сети Bitcoin на момент написания этого поста – 708160.

  • Дата включения блока: точное время включения блока в цепочку.

  • Ссылка на предыдущий блок: показан хэш предыдущего блока – длинное число вида 0x3bb…7ec.

  • Вспомогательная информация: системная информация, зависит от конкретного Блокчейна. Например, это может быть сложность сети, размер блока в байтах, число транзакций в блоке и т.д.

  • Nonce: это число от 0 до примерно 4 миллиардов (0..232-1), оно нужно для майнинга, мы вернемся к этому числу позже.

  • Контент: содержимое самого блока – это может быть что угодно, например, фраза «Боб любит Алису» либо ссылка на картинку из Интернета. Это полностью зависит от конкретного Блокчейна и от ваших целей. Например, в блокчейне Биткоина записываются транзакции передачи биткоинов между участниками сети.
  • Хэш блока: это хэш, взятый от всего содержимого нашего блока – текстового файла от начала и до этого момента, длинное число вида 0x8b2…e8b.

Как блоки соединяются в цепочку

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

Каждый в отдельности участник сети формирует из вашего сообщения блок, добавляя туда порядковый номер (теперь уже №708161), ссылку на хэш блока №708160 и так далее. После этого каждый участник сети пробует решить сложную криптографическую задачу, привязанную конкретно к вашему блоку. Я объясню, что это за задача такая, в посте про майнинг, пока же просто поверьте мне на слово. Задача сама по себе имеет вероятностный характер, но чем больше сил он тратит на ее решение, тем больше шанс, что именно он ее решит.

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

Результат – фраза «Боб любит Алису» добавлена в Блокчейн, а победивший участник получил от сети вознаграждение за успешно решенную задачу. Вознаграждение выплачивается в виде заново созданных монет (например, Биткоинов), а также за счет транзакционной оплаты, которую можете предложить вы (Tx fee).

Это будет выглядеть так:

Я использую цепочку сверху и прикрепляю справа новый блок

Процесс решения такой криптографической задачи называется Майнингом. Сложность этой задачи варьируется автоматически в зависимости от того, как быстро майнерам удалось решить такую задачу в прошлом блоке. Например, в блокчейне Биткоина сложность выставляется так, чтобы на решение одной задачи у майнеров уходило в среднем 10 минут. А в блокчейне Эфира так, чтобы решение одной задачи занимало в среднем 15 секунд.

Кстати, вы можете проверить, насколько точно выполняется это правило: если на момент написания поста в сети было 708 160 блоков и на формирование каждого из них должно было уходить в среднем 10 минут, то сколько лет Блокчейну? Должно быть около 13 лет. Также можно посмотреть на график со средним временем майнинга блоков за всю историю блокчейна Биткоина.

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

0
6 комментариев
Написать комментарий...
Igor Mozgalov

А как происходит добавление нескольких сообщений в блок? В примере статьи сразу после отправки сообщения все участники сети создают блок и начинают считать задачу. Но что если кто-то другой отправит ещё одно сообщение до того как задача решена? Все добавят сообщение в существующий блок и начнут решать задачу заново?

Ответить
Развернуть ветку
Егор Абрамов
Автор

Спасибо за вопрос. В реальности это происходит так:
1) Есть общий список сообщений, который называется MemPool. Он доступен всем майнерам. В него добавляются все новые сообщения и из него майнеры берут сообщения для добавления в блок. В частности, в блокчейне Биткоина там находятся транзакции.
2) В среднем в каждый момент времени в MemPool есть 2-4 тыс. неподтвержденных транзакций (но может быть и 10+ тыс). Вот например динамика размера MemPool для биткоина: https://www.blockchain.com/charts/mempool-count
3) Когда майнер формирует новый блок он вставляет туда столько транзакций из MemPool, сколько может вместить блок. Потому что эти транзакции платят Transaction fee и майнеру выгодно их туда напихать. но размер блока ограничен 1 MB или примерно 3-4 тыс транзакций.
4) Майнер начинает решать свою задачу с такой структурой блока. Если решил - то все, транзакции в блоке и считаются подтвержденными.
5) Подтвержденные транзакции удаляются из MemPool

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

Ответить
Развернуть ветку
Kraizmer Segregation

Ты лучше расскажи какая от всего этого польза. Конкретный пример приведи полезной работы

Ответить
Развернуть ветку
Егор Абрамов
Автор

Я про это обязательно расскажу в более поздних постах. Вот например некоторые вопросы, которые я собираюсь подсветить:
* В чем фундаментальная инновация экономики Блокчейна?
* В чем отличие между развитием обычного и крипто стартапа?
* Токены нужны только для фандрейзинга? Три причины, почему нет.
* Почему Блокчейн ломает привычные нам сетевые эффекты.
* Реальные задачи бизнеса, которые нельзя было решить до появления Блокчейна
* Какие уже есть "Killer use cases"

Но чтобы рассуждать на эти темы нужна некоторая технологическая база - поэтому я описывают базовые элементы. Мне кажется что многие люди знают те или иные аспекты технологии, но целостная картина есть не у всех. Как только этих элементов будет достаточно, я просто буду на них ссылаться при разборе более сложных концептов.

Ответить
Развернуть ветку
Алексей Зиборов

Знать бы еще, что такое токен. ТОчнее понимать)

Ответить
Развернуть ветку
Егор Абрамов
Автор

Про это будет. Вы совешенно точно уловили мою мысль "знать не равно понимать". Чтобы "узнать", достаточно почитать статью на Википедии или много других статей в Интернете. А чтобы "понять", нужно пройтись по цепочке Технология Блокчейн > Протокол Ethereum > Смарт контракты > Токен, как частный вид смарт контракта.
Это я как раз и хочу сделать :)

Ответить
Развернуть ветку
3 комментария
Раскрывать всегда