Ethereum blockchain: что это, размер, где хранится
Что такое блокчейн для Эфириума — ключевые характеристики сети, размер базы данных, принцип самостоятельного создания blockchain на Ethereum.
- Ethereum blockchain: что это простыми словами
Ethereum blockchain: что это простыми словами
Если говорить максимально коротко, то блокчейн Ethereum — это площадка для создания децентрализованных онлайн-сервисов, функционирующих на основе умных контрактов. Также данную платформу можно назвать единой децентрализованной виртуальной машиной.
Внутри системы ходит одноименная криптовалюта Эфириум или Эфир. Работа сети базируется на 3-х фундаментальных принципах:
-
Наличие криптографической защиты — это значит, что внутренняя валюта создается на основе сложных математических алгоритмов, которые крайне трудно взломать.
На сегодняшний день блокчейн для Эфириума состоит из тысяч транзакций, сгруппированных в блоки. Каждый новый элемент сети связан с предыдущим, за счет чего формируется цепочка. Любой блок имеет свой номер; они все идут в строгой последовательности. Несмотря на то, что данные сети являются открытыми, их нельзя менять или что-то удалять из базы.
Как было сказано чуть выше, весь жизненный цикл Ethereum blockchain основан на постоянном изменении состояния. Чтобы такие изменения проводились, в системе должны присутствовать действительные транзакции. Переводы получают статус действительных после прохождения валидации, являющейся частью майнинга. Майнинг в сети Эфира — это процесс создания новых блоков транзакций, который выполняется за счет вычислительных мощностей сотен компьютеров (или узлов).
По сути, каждый майнер претендует на формирование и проверку нового элемента блокчейна. Тысячи пользователей во всем мире безостановочно генерируют и утверждают блоки. При записи нового элемента blockchain каждый майнер даёт математическое доказательство того, что блок сформирован и включает в себя только действительные переводы. Этот алгоритм получил название Proof-of-Work (то есть доказательство выполненной работы). За каждый подтвержденный блок «шахтеры» получают вознаграждение в виде определенного количества монет Эфириума.
Поскольку сегодня для формирования новых элементов сети требуются колоссальные мощности, пользователи практически не майнят поодиночке. Они объединяются в пулы и совместно работают над формированием одного блока. После создания нового компонента награда распределяется между всеми участниками процесса. Её размер напрямую зависит от вклада конкретного пользователя в создание блока.
По состоянию на 21.08.2018 блокчейн Эфира имеет такие ключевые показатели:
-
Общий хешрейт сети — 282.395 Thash/s.
Адреса Эфириум блокчейна: как взаимодействуют аккаунты внутри площадки
Помимо блоков транзакций, сеть Эфириума содержит в себе множество крохотных объектов, способных взаимодействовать друг с другом, обмениваясь сообщениями. Эти объекты называются счетами. Каждый конкретный счет имеет определенное состояние, а также 20-битный адрес. Адрес же является 160-битным идентификатором, применяемым для выявления того или иного счета.
Все профили блокчейна Эфириума разделены на 2 категории:
-
Счета внешних владельцев, управление которыми осуществляется с помощью приватных ключей. Объекты, относящиеся к данной категории, не имеют уникального программного кода.
Помимо этого, контракты не могут сами запрашивать транзакцию. Они способны пересылать какие-то активы только в ответ на входящий перевод. Отсюда следует вывод, что активность в блокчейне Ethereum основывается на переводах, которые инициируют профили внешних владельцев.
При работе на рассматриваемой платформе очень важно уметь анализировать состояние счета. Об этом мы поговорим далее.
Из чего состоит счет в системе Эфириум?
Состояние счета в блокчейне Эфира всегда включает 4 элемента:
-
Nonce. В случае со счетами внешних владельцев это количество переводов, осуществленных с конкретного аккаунта. Во втором случае данная графа указывает численность контрактов, созданных тем или иным профилем.
Экосистема платформы: где хранится блокчейн Ethereum
Выше мы упоминали такое понятие, как дерево Меркла. Так вот, это двоичная иерархическая структура данных, в которой хранятся все сопоставления адресов и счетов. Дерево Меркла включает 3 вида узлов (или нод):
-
Конечные узлы — находятся внизу иерархической структуры. В них содержатся базовые сведения.
- Сведения, подлежащие сохранению, разделяются на блоки.
- Сформированные блоки, в свою очередь, разделяются на сегменты.
- Система берёт хеш каждого сегмента, и операция повторяется.
- Система собирает хеш сегментов до того момента, пока не останется лишь корневой хеш.
В системе Ethereum ключ показывается между адресами и относящимися к ним счетами. Эти ключи мы уже упоминали ранее: Nonce, Balance, StorageRoot, CodeHash. Помимо этого, в двоичном дереве Меркла хранятся транзакции и квитанции. Если говорить точнее, то в каждом блоке присутствует свой заголовок, в котором располагается корневой хеш древа состояний, переводов и квитанций (то есть, мы имеем 3 разные структуры в одном блоке).
Использование деревьев Меркла для хранения информации в сети Эфириум крайне полезно и практично. Дело в том, что функционирование платформы обеспечивают сотни отдельных узлов (или нод). Эти ноды делятся на 2 группы: полные и легкие. Полные архивные узлы загружают весь блокчейн Эфириума, содержащий подробную информацию по каждой отдельной транзакции. Зачастую, полными нодами являются майнеры, генерирующие новые блоки и гарантирующие работу площадки. Однако вся база данных Ethereum весит крайне много (667,10 Гб). Более того, она безостановочно расширяется, что может доставить пользователю проблемы в будущем.
На этом фоне более привлекательной альтернативой кажутся легкие ноды. Они загружают только заголовки блоков без полной информации о переводах. А поскольку каждый заголовок содержит хеш трех деревьев (состояния, транзакций и квитанций), можно создавать и получать ответы, которые касаются баланса, переводов, событий в сети и так далее.
Нельзя не упомянуть и о том, что принцип работы дерева Меркла оберегает блоки от внедрения поддельных транзакций. Дело в том, что хеширование в иерархической структуре распространяется вверх. Если злоумышленник внесет изменения в узел, находящийся внизу, он спровоцирует цепную реакцию. Сначала изменится хеш первого нода, находящегося выше, потом хеш узла, расположенного ещё выше. В итоге поменяется хеш корневого узла, что недопустимо. Проверяя всю цепочку хеширования, можно выявить, какой элемент дерева имеет некорректное расположение в иерархической структуре.
Как создать свой blockchain на Ethereum: подробная инструкция
Поняв принцип работы системы Эфириума, можно создать свой приватный блокчейн для локальной сети. Далее мы узнаем, как это делается.
Прежде всего, необходимо скачать клиент под названием Geth. Этот клиент является одним из вариантов реализации протокола Ethereum. Это лицензированное приложение, так что никаких проблем с ним не будет. Geth можно загрузить в качестве отдельной программы или в виде библиотеки для интеграции в проекты на Android либо iOS.
Установочный файл можно скачать, перейдя по ссылке ethereum.github.io/go-ethereum/downloads/. Там будут версии для Windows, MacOS и Linux. Инсталляция клиента на Windows проходит стандартно. Чтобы поставить Geth на MacOS, необходимо использовать менеджер пакетов Homebrew. В нем нужно ввести такие команды:
Инсталляция клиента на Linux также требует введения определенных команд через терминал. Они представлены ниже:
Далее нужно создать аккаунт майнера. Таким образом, мы сгенерируем приватный и публичный идентификатор, а также установим пароль для их защиты. В качестве примера мы рассмотрим создание профиля на MacOS через менеджер пакетов Homebrew. Нам нужно ввести следующую команду: geth account new —datadir /path/to/data/dir. В конце прописан адрес, по которому будут храниться наши ключи.
После этого переходим к самому интересному — созданию первого генезисного блока. Команда для генерирования первого элемента нашей приватной сети указана ниже:
В этой команде для нас наибольшую важность представляют 2 значения:
- datadir — адрес, по которому будут располагаться ключи;
- init — начало создания первого блока с именем genesis.json.
Прописанные в коде команды имеют следующие значения:
-
chainid — гарантирует обмен информацией в сети Ethereum без использования блокчейна Ethereum Classic, а также тестовой сети Morden.
При активации майнинга важную роль играют следующие значения:
-
networkid — сетевой идентификатор приватного блокчейна Эфириум.
После подключения консоли Geth можно просматривать все аккаунты приватного блокчейна Эфириума, а также следить за их балансом. В этом вам помогут следующие 2 команды:
Ну что же, мы рассмотрели всю технологию блокчейна Эфириума, узнали, как она работает, и даже углубились в вопрос создания своей приватной сети. Конечно, полностью понять принцип функционирования не так просто. Но если вам удастся сделать это, вы сможете создавать на его основе свои проекты и, быть может, открывать перспективные стартапы.
Whats is the Ethereum blockchain size?
I downloaded the blockchain with geth in fast mode the weight is 14Go, but i can see on https://etherscan.io/chart2/chaindatasizefast that it is in geth fast mode around 60Go. What size is correct ?
On another site we can see that the full ethereum weight is around 387Go https://bitinfocharts.com/ethereum/ Is this the current Ethereum chain size ?
I am talking about the folder /chaindata not the other folders containing DAG
1 Answer 1
You can now use chainstats, a page made by Chainstack, a blockchain infrastructure provider (full disclosure, I’m a dev advocate at Chainstack and worked on this page).
This app displays the current size of all the public network Chainstack support based on the Protocol, node type (full or archive), and blockchain client.
It is automatically updated when the size changes in the resources required by the servers.
-
The Overflow Blog
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.10.19.43685
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Биткоин и эфир: сравнение размера блокчейнов
Аннотация. В этой статье мы сделаем попытку сравнить размер блокчейнов биткоина и эфириума и объем памяти, необходимый для хранения их данных. Как ни странно, но блокчейн биткоина по размеру превосходит блокчейн эфира. Впрочем, это скоро изменится — размер блокчейна Ethereum стремительно растет, и эфир уже в ближайшее время обгонит биткоин по этому показателю. С другой стороны, эта метрика не особенно полезна, ведь для получения практически полезной информации о сети Ethereum необходимо выполнить значительно больше вычислений и сгенерировать гораздо больше данных.
Обзор
Биткоин-журналист и автор подкаста Питер Маккормак недавно сравнил в Твиттере объем места на диске, необходимый для хранения полного узла биткоина и полного узла эфира. Ведущий разработчик реализации Geth для Ethereum Питер Силаджи ретвитнул сообщение, добавив другое сравнение.
The #Ethereum *chain* is 175GB as of today, which is enough to recreate *anything* that *ever* happened since genesis.
To validate a new block, you need the result of executing all previous blocks first – the head state. That's 130GB as of today.
На сегодняшний день *блокчейн* #Ethereum весит 175 ГБ — этого достаточно для воссоздания *всех* данных за *всю историю* существования сети с момента ее появления.
Чтобы подтвердить новый блок, нужен результат исполнения всех предыдущих блоков — данные «головного» состояния (head state). На сегодняшний день они весят 130 ГБ.
Это весь объем данных, *нужный* узлу. https://t.co/n2ig7ObV7i
Первый вопрос, который вызывает это заявление, — как блокчейн эфира может быть таким маленьким, всего 175 ГБ? В конце концов, объем транзакций в сети Ethereum выше, чем в сети биткоина. Кроме того, за последние месяцы эфир превратился в настоящего монстра — из-за активности, связанной с Defi и NFT, спрос на него многократно возрос. Довольно странно, что все эти данные занимают всего несколько сотен гигабайтов. Особенно если учесть, что почти любое действие пользователя в сети Ethereum требует цифровой подписи, которая довольно много весит.
Таким образом, в настоящее время эфир генерирует гораздо больше данных, чем биткоин, но, как показывает график ниже, у последнего все еще больше совокупных данных блокчейна. С 2015 по 2018 год блокчейн биткоина рос быстрее, чем блокчейн эфира; с 2018 по 2020 год они росли почти одинаковыми темпами. Наконец, с конца 2020 года темпы роста блокчейна эфира еще больше ускорились, и сейчас они намного выше, чем у биткоина. Похоже, по суммарному размеру блокчейна эфир вскоре догонит и намного перегонит биткоин. Довольно неожиданно, что блокчейн эфира весит меньше, чем блокчейн биткоина, но этот факт вызывает удивление потому, что мы думаем только о современной сети эфира и забываем, каким маленьким и незначительным он был еще несколько лет назад.
Размер блокчейна (ГБ)
Источник: BitMEX Research
В обоих случаях (и у биткоина, и у эфира) общий размер блокчейна на графике выше содержит все данные о транзакциях, то есть все данные, которые необходимо загрузить для полной синхронизации и проверки блокчейна. Сюда входят все цифровые подписи, подтверждающие каждую транзакцию. В случае Ethereum и Geth мы проверили включение подписей в общий объем данных, отключив наш узел Geth от интернета и успешно получив цифровые подписи для транзакций разного типа, включая транзакции 2016 и 2017 годов. Данные блокчейна Ethereum также содержат весь программный код, необходимый для реализации каждого смарт-контракта, и мы также проверили наличие этого кода на нашем локальном компьютере с несколькими сотнями ГБ памяти.
А откуда взялся блокчейн эфира объемом 9 ТБ?
Что касается утверждения о блокчейне весом 9 ТБ, то оно, скорее всего, возникло на сайте Etherscan:
Этот набор данных представляет собой так называемый «узел архивации». Насколько можно судить, такой большой объем данных связан с тем, что узел хранит и индексирует результаты сохраненных исторических состояний сети. Все эти результаты можно получить на основе и меньшего набора данных блокчейна. Можно сказать, что этот набор данных объемом 9 ТБ — это объем данных, необходимых для отслеживания и проверки движения средств в любой момент времени после появления блокчейна эфира. В этом смысле это довольно интересная метрика.
При поиске хэша последней транзакции на нашем узле Geth без функции архивации с помощью следующей команды мы получили успешный результат:
Но если мы попробуем выполнить ту же команду для более старой транзакции, то получим результат «null» — предположительно потому, что транзакция не проиндексирована. Однако мы все еще можем получить данные из старых транзакций, указав в запросе их позицию в определенном блоке.
eth.getTransactionFromBlock(«Номер блока», «Индекс транзакции»)
Эта команда дает успешный результат даже при поиске очень старых транзакций Ethereum, если использовать узел без функции архивации с объемом хранения всего несколько сотен ГБ. При этом также отображается подпись транзакции. По состоянию на 21 ноября 2021 года наш узел Geth хранит 528 ГБ данных в каталоге chaindata. Из них 267 ГБ находится в папке «ancient» — то есть данных, относящихся к старым блокам.
Набор данных UTXO в сети биткоина и данные головного состояния в блокчейне эфира: сравнение
Следующий вопрос, который возникает после комментария Питера Силаджи о том, что данные головного состояния Ethereum весят 130 ГБ. Мы получили несколько вопросов о том, почему так много, ведь набор данных UTXO (неизрасходованных выходов биткоина), своего рода эквивалент/аналог этой метрики в сети биткоина, весит гораздо меньше. Последний блок и головное состояние или набор данных UTXO — все, что нужно узлу для оценки достоверности входящего блока, в случае эфира и биткоина соответственно.
На момент написания этой статьи набор данных UTXO биткоина содержал около 76 млн выходов и занимал 4,6 ГБ на диске. Bitcoin Core поддерживает «отсечку» блокчейна, при которой узел может игнорировать старые данные блокчейна и сохранять только самые последние транзакции плюс набор данных UTXO. Это означает, что для полной проверки всего блокчейна биткоина и подлинности новых блоков нужно менее 10 ГБ на диске. Это довольно интересная функция, которая обеспечивает высокую эффективность блокчейна. Например, 4,6 ГБ — это всего лишь около 1,2% от общего размера блокчейна биткоина.
С эфиром все не так радужно. Если использовать цифры, приведенные Питером, придем к выводу, что набор данных головного состояния в блокчейне эфириума весит 130 ГБ, т.е. около 43% от размера блокчейна, — это гораздо больше, чем 1,2% у биткоина. В Ethereum тоже есть старые транзакции и счета, так почему их нельзя отсечь — по крайней мере, теоретически? Это позволит значительно снизить требования к дисковому пространству. Справедливости ради следует отметить, что, насколько нам известно, разработчики Ethereum не пытались улучшить этот аспект, поскольку у них были другие приоритеты, но даже если бы они попытались это сделать, они вряд ли достигли бы такого результата, как у биткоина.
Цепочка состояний Ethereum
На каждом узле в системе Ethereum хранятся два основных типа баз данных: блокчейн (все транзакции плюс заголовки блоков) и данные состояния. Состояние вычисляется на основе истории транзакций и содержит: все балансы счетов в системе эфира, объем данных, связанный с каждым реализованным смарт-контрактом Ethereum, и nonce-значения счетов. Состояние обновляется и вычисляется после каждого блока на основе предыдущего состояния и новых транзакций в блоке. Хеш корня Меркла состояния включается в заголовок каждого блока, обеспечивая консенсус в отношении состояния сети. Данные о состоянии продолжают увеличиваться по мере развития системы эфира, и, как упоминалось выше, размер данных последнего состояния сопоставим с размером самого блокчейна. Если бы узел хранил данные состояния для каждого блока в полном объеме, это был бы гигантский объем данных — возможно, значительно превышающий даже объем узла с функций архивации данных (9 ТБ).
Каждая отдельная транзакция в сети Ethereum может оказать как очень незначительное, так и значительное влияние на состояние. Так, «обычная» транзакция (отправка эфира с одного адреса на другой) минимально повлияет на состояние. Транзакция, которую не удалось завершить из-за нехватки газа, также будет иметь минимальное влияние на состояние. При этом транзакции других типов, которые могут оставить небольшой след данных в блокчейне, могут сильно повлиять на состояние — например, транзакция может взаимодействовать со смарт-контрактом, что может изменить баланс нескольких счетов. Если бы блокчейн эфира содержал только транзакции, минимально влияющие на состояние, то размер данных состояния был бы намного меньше, и мы могли бы приблизиться к уровню эффективности c1%, как в наборе данных UTXO биткоина.
В этом и заключается ключевое различие между транзакциями с биткоином и с эфиром. Просто взглянув на транзакцию в сети биткоина, можно определить, насколько она влияет на состояние сети, и понять, что происходит. В сети эфира это невозможно; здесь получить представление о транзакции можно, только вычислив состояние всей сети.
Тут можно подумать: «Ладно, значит, система эфира работает иначе, чем система биткоина — в том смысле, что в ней нет четкой связи или зависимости между размером данных состояния сети и количеством транзакций, но принципы отсечки данных все равно можно было бы применить. Почему старые, неиспользуемые или недействительные части данных состояния нельзя отсечь и исключить из данных головного состояния?» Но Ethereum так не работает. В системе нет механизма закрытия или завершения реализованных смарт-контрактов, они продолжают существовать вечно, даже если больше не используются. Один из аспектов основной идеи эфира в том, что это единая интерактивная система, в которой контракты носят составной характер. Любой аккаунт может в любой момент взаимодействовать с любым смарт-контрактом или любой частью данных состояния. Поэтому для подтверждения нового блока узел должен иметь данные об актуальном состоянии всех смарт-контрактов и всей системы. Поэтому при уменьшении размера головного состояния возможны лишь ограниченная обрезка или повышение эффективности. Поэтому размер данных головного состояния, скорее всего, со временем будет только расти.
Заключение
Сравнивать размер блокчейнов эфира и биткоина не всегда целесообразно. Блокчейн биткоина содержит достаточно информации, чтобы рассказать все, что нужно знать о сети биткоина. А вот блокчейна эфириума самого по себе отнюдь не достаточно для того, чтобы определить состояние сети; для этого необходимо вычислять и хранить гораздо больше данных — иначе вы не будете знать, что на самом деле представляют собой многие транзакции. Но справедливости ради следует отметить, что определенное сравнение объема данных блокчейнов имеет смысл — а именно сравнение минимального объема данных, который необходимо загрузить для первоначальной синхронизации. По этому показателю наши монеты довольно близки, и эфир вот-вот или обойдет биткоин, или уступит ему лидерство — все зависит от того, как на это посмотреть.
Ethereum Blockchain Images
The idea behind this little backup service is that you can simply unpack these images and don’t need to wait for blockchain synchronisation. The images are prepared regularly and only the last one is kept.
We wrote a straightforward ‘cron’ backup scripts. You can help us improve the solution. The source code is available here: https://github.com/ChainCloud/BlockchainBackupScripts
Please pay attention to details regarding — fast option. You can download the blockchain using geth’s —fast option. We have 2 images that were created with this option. The blockchain is much smaller in this case. From the original documentation:
This —— fast flag enables fast syncing through state downloads rather than downloading the full block data. This will also reduce the size of your blockchain dramatically. NOTE: — fast can only be run if you are syncing your blockchain from scratch and only the first time you download the blockchain for security reasons.
Blockchain sizes
Current Ethereum blockchain data size: 70+ GB
Current Ethereum Ropsten blockchain data size: 1.2 GB
Current Ethereum (fast) blockchain data size: 11 GB
Current Ethereum Ropsten (fast) blockchain data size: 760 MB
We hope that this free service will help you. And please test it) We are still in beta.
Feel free to write us here or in our Slack channel if you have any comments or suggestions.