Как проверить txid ethereum – (Ethereum)

Содержание

Транзакции Эфира: как проверить, особенности содержания

В blockchain Ethereum с каждой транзакции взимается комиссия, но не в ETH или Gwei, а в отдельных токенах — Gas. Эти сборы уходят на поддержание работоспособности сети. Сами транзакции представляют собой зашифрованные блоки, расшифровка которых дает конкретную информацию.

Содержание статьи:

Что это такое

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

  1. Передаваемая сумма.
  2. Сведения о получателе.
  3. Объем комиссионных сборов.
  4. Цифровая подпись.

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

Что такое Gas и как он рассчитывается

Gas — определенная денежная единица, обозначающая цену комиссии в ETH-транзакции. Стоимость Газа тесно коррелирована с количеством Эфириума, которое за него готовы отдать. Инициатор сделки сам фиксирует ограничение на использование Газа и его цену. На балансе отправителя обязательно должно быть нужное число Gas. Когда сделка завершена, неиспользуемый газ возвращается обратно на счет.

Все уплаченные за Gas средства обычно уходит на счета майнеров в роли награды за поддержку сети при помощи оборудования. Здесь есть тесная взаимосвязь: чем выше стоимость Газа, указанная отправителем, тем вероятнее майнер изберет эту сделку первой, поскольку процедура даст наибольшее вознаграждение.

Оплата за хранение данных

Гас используется в хранении информации. Суммарная стоимость хранения всегда прямо пропорциональна самому малому из используемых чисел, кратных 32 байтам.

Увеличение объема хранилища соответственно увеличивает и объемы базы данных о состояниях для всех узлов сети. Это стимулирует пользователей по возможности сокращать до минимума занимаемое место.

В чем заключается цель сбора комиссий

Ключевые операции в системе Эфира выполняются одновременно всеми узлами. Исполнение вычислений в EVM (virtual machine) — недешевое удовольствие. Смарт-контракты чаще применяются для повседневных задач, чем для выполнения сценариев высокой сложности. Комиссия способствует снижению нагрузки на систему.

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

Содержание транзакций и сообщений

К транзакциям система предъявляет определенные требования. Ее формат обязательно должен быть RLP. Имеется цифровая подпись отправителя. Данные в переводе и в аккаунте-отправителе не имеют расхождений. Только в этом случае перевод пройдет валидацию.

Сделки токена делятся на два вида и позволяют сети перебазироваться с одного состояния в другое:

  • создание контракта на передачу средств;
  • сообщение.

Компоненты, которые входят в транзакцию Эфириума независимо от ее разновидности:

  1. Nonce. Число сделанных отправителем переводов.
  2. gasPrice. Стоимость газа — сколько Эфира (точнее, его доли Wei) пользователь готов отдать за 1 Gas, служащий для выполнения данной сделки.
  3. gasLimit. Наибольшая сумма комиссии, который человек готов отдать за оплату транзакции.
  4. To. Корректный адрес криптокошелька получателя.
  5. value. Сколько Wei будет передано между контрагентами.
  6. v,r,s. Средства генерации цифровой подписи, позволяющей идентифицировать отправителя платежа Эфириум.

Если операция токена служит для создания контракта, в ней еще есть поле Init. Это фрагмент кода виртуальной машины. Используется только один раз, впоследствии пропускается.

Для сообщений имеется поле Data. Заполнять его не обязательно. Может использоваться, когда есть необходимость указать IP и доменное имя при регистрации домена в системе.

Блоки с информацией обо всех транзакциях блокчейна ETH

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

После подтверждения всех транзакций Эфириума блоки соединяются в blockhain.

Что такое оммеры и какова их функция

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

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

Что такое заголовок блока и каково его содержание

Параметр содержит в себе 15 элементов. Основные:

  • хеш заголовков от блока-родителя;
  • хеш перечня оммеров;
  • хеш корня дерева состояний;
  • адрес кошелька для получения комиссии за майнинг;
  • уровень сложности формируемого сейчас блока;
  • порядковый номер.

Операция Эфира тесно связана с деревом Меркла (или деревом хешей), применяющимся во многих криптовалютах. В заголовках блоков всегда есть три параметра корня — для транзакций Эфириума, для состояния и для квитанций.

Логи с информацией о транзакциях и сообщениях

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

Генерация квитанций о транзакциях и информация в них

Квитанции аналогичны чекам, которые выдают в магазине за покупки. Каждый перевод Эфира получает чек, куда входят основные сведения:

  • хеш транзакции;
  • хеш блока;
  • порядковый № блока;
  • сумма использованного Gas;
  • какие логи были сформированы в связи с данным переводом.

И другие подобные сведения.

Зависимость сложности блока и времени подтверждения транзакции

Трудность создания блока определяется по одному критерию — времени, затраченному на формирование. Самый первый (genesis block) имел сложность 131 072, все остальные рассчитывались по конкретной формуле. Заметив ускорение создания, сеть Эфириума автоматически поднимает сложность.

Параметр nonce находится в прямой корреляции со сложностью. Этот параметр и есть хеш, который нужно найти при майнинге. Чем выше сложность, тем дольше поиск решения. Регулируя параметр, протокол самостоятельно корректирует, насколько быстро будут подтверждаться блоки.

Как проходят транзакции в сети

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

В состав входят такие элементы:

  1. Уникальный адрес (присваивается для Ethereum).
  2. Электронная подпись. Наличие элемента свидетельствует о готовности проведения транзакции в отношении другого лица.
  3. Valua — показатель, свидетельствующий о количестве отправляемых Gwei. Многие площадки, работающие с Эфиром, автоматически конвертируют этот параметр в ETH.
  4. Лимит Газа (Gas Limit) — ограничение вычислений по определенной операции с ETH.
  5. Цена Газа (Gas Price) — комиссионный платеж пользователя за пересылку Эфира. В упрощенной форме одна единица Газа позволяет провести одну вычислительную операцию.

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

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

Любые сделки в сети Эфира запускаются наружными аккаунтами. После поступления операции в смарт-контракт происходит запуск заложенного алгоритма и передача данных. Работа выполняется с помощью виртуальной машины (EVM). Такое построение позволяет легко проверить судьбу перечисляемых монет.

Процесс перевода Эфира

Проверка Эфира требует знания особенностей и требований проведения транзакции. Базовые нормы:

  1. Сделка проводится в виде RLP.
  2. Обязательно наличие подписи стороны-отправителя.
  3. Число сделок, совершенных с одного аккаунта, равняется числу операций в «теле» транзакции.
  4. Размера комиссии (Газа) должно быть достаточно для проведения перевода. В общий объем горючего включается 21 000 Газ. Сюда входит комиссионная выплата для отправки сведений о платеже и дополнительные 32 000 Газа для реализации smart-контракта.
  5. На счету отправителя должна быть сумма, достаточная для перечисления авансового платежа. Размет выплаты равен Gas Limit*Gas Price. К этому произведению прибавляется общее число горючего, направляемого между сторонами.

При выполнении всех условий происходит подтверждение сделки. Общий алгоритм транзакции Эфира:

  1. Со счета отправителя стягивается аванс.
  2. Счетчик выполненных транзакций увеличивается на одну единицу.
  3. Рассчитывается остаточный объем Газа после вычета авансового платежа.
  4. Перечисление монет.
  5. Завершение перевода.
  6. Перевод стороне-отправителю неиспользованного Газа.
  7. Отправка Эфиров, расходованных на покупку горючего, майнеру в качестве оплаты за работу.

После прохождения этих этапов пользователь может проверить статус сделки и убедиться в проведении перевода.

При выполнении операции в криптосети Ethereum важно учесть следующее:

  • Газ Эфириум — комиссия, применяемая для проведения транзакций криптовалюты. Gas необходим для формирования смарт-контрактов и его внедрения в blockchain Ethereum. Выполнение этих сделок без перечисления определенной комиссии не получится. Выплаты осуществляются в специальных монетах Gas.
  • Размер комиссии при переводе Эфира зависит от объема Газа и стоимости, установленной за единицу горючего. Для проведения транзакции требуется 21 000 Gas. Для смарт-контрактов размер оплаты выше и выставляется персонально пользователем.
  • В Ethereum есть пул транзакций, поэтому пользователи вынуждены проверять ситуацию с переводом в случае задержки. В первую очередь обработке подлежат сделки с большей комиссией, а после них проводятся операции с меньшей стоимостью Газа. Это объясняется желанием майнеров получить максимальную прибыль от работы. Нормальную стоимость Gas легко проверить с помощью сайта ethgasstation.info.

  • Время выполнения операций в сети Эфира иногда затягивается. Прежде чем проверить перечисление ETH, важно выждать хотя бы один час. В случае большей задержки можно говорить о наличии проблемы. Нужно проверить информацию о сделке. Задержки возможны в случае загруженности сети или низкой комиссии.

Рассмотренной информации достаточно для понимания принципов транзакций в сети Эфира. В случае задержки перевода рекомендуется проверить состояние операции и по возможности отменить транзакцию во избежание зависания.

Как проверить отправку Эфира — лучшие способы

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

Как проверить перевод Ethereum на бирже

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

Чтобы проверить информацию, требуется сделать следующее (на примере binance.com):

  1. Наведение на секцию «Актив» в правом верхнем горизонтальном меню.
  2. Переход по ссылке «Протокол депозита и снятие наличных».
  3. Выбор проблемного перевода и уточнение полной информации. Пользователю доступен статус, название, количество переданной криптовалюты, ID и прочие сведения.

Если проверить сделку не удалось, существует альтернативный вариант — обратиться в техническую поддержку и попросить разъяснить причину задержки перечисления Эфира. Потребуется передать ID транзакции или хеш.

На других биржевых площадках принцип проверки аналогичен — достаточно перейти в историю и получить интересующие сведения.

Как проверить отправку  с помощью специальных сервисов

Чтобы отследить факт перечисления монет с бумажника Эфириум, можно использовать специальные сервисы:

  • Etherscan.io — удобная площадка для проверки статуса и остальной информации. Для получения результатов требуется указать номер блока, адрес, ID операции или другие сведения в правом верхнем окне. Далее система выдает данные о количестве денег на счету адреса, нахождении операции в пуле ожиданий, отправителе, сумме и времени выполнения. По статусу легко сделать вывод, проведена ли операция или находится в процессе. В первом случае указывается точное время перечисления средств и номер кошелька стороны-отправителя. Преимущества ресурса etherscan.io — отсутствие регистрации, удобство пользования, наличие дополнительной полезной информации. Недостаток заключается в наличии только двух языков — английского и китайского. Для решения проблемы используется встроенный переводчик.

  • Etherchain.org. Здесь легко проверить факт отправки Эфира посредством ввода в специальное поле номера блока или ID транзакции. После создания запроса система показывает номер блока, отправителя и получателя, число монет, размер комиссии и факт проведения. Сайт удобен в применении, но не имеет русскоязычного интерфейса. Разобраться с возможностями ресурса не составляет труда.

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

Отмена транзакции

При желании участники криптовалютной сети вправе не только проверить, но и отменить перевод Эфира. Такое действие необходимо при зависании операции из-за перегрузки или небольшой комиссии (Газа). При подобных обстоятельствах лучше решение — отменить перевод, увеличить Gas и провести сделку снова.

Пример отмены операции с помощью Ethereum Wallet:

  1. Переход к строке From Address.
  2. Указание номера бумажника (с которого отправлялся ETH). Важно правильно прописать адрес и проверить корректность строки.
  3. Внесение сведений в строчку To Address. В этой графе указывается любой номер бумажника (к примеру, адрес дополнительного хранилища на Ethereum Wallet).
  4. Заполнение графы Value. Здесь указывается сумма для перечисления другому пользователю. В графе прописывается ноль, но даже при указании такой цифры придется заплатить небольшой объем Газа (комиссии) за транзакцию.
  5. Указание цены Газа (сумма прописывается в единицах измерения Gwei).
  6. Прописывание параметра отменяемого перевода в графе Nonce. Если ошибиться с номером, отменить сделку не получится. Комиссия расходуется впустую, пользователь просто потеряет деньги.
  7. Ожидание отмены прошлого перевода (до пяти минут).

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

Вконтакте

Facebook

Twitter

Google+

LiveJournal

Одноклассники

Мой мир

E-mail

cryptonyka.com

Как проверить транзакцию эфира через Etherscan

Что делать, если транзакция эфира выполнена, а на кошельке все еще нет поступления криптовалюты? Развеять сомнения в том, произошла финансовая операция или нет, а также выяснить, почему она задерживается, можно через специальный сервис. Рассмотрим, как происходит эта процедура.

Сервис для проверки транзакции эфира Etherscan

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

  • баланс интересующего эфириум адреса;
  • попала транзакция в блокчейн либо в пул ожидания;
  • какая сумма придет на кошелек;
  • от кого произошла оплата;
  • когда выполнена операция.

Чтобы отследить эти сведения, открывают главную страницу сайта etherscan.io. В строке поиска вводят нужный эфириум адрес и кликают по кнопке «Go».

На открывшейся странице в общих данных можно узнать общий баланс в криптовалюте эфириум на счету указанного кошелька. Здесь же сразу видно, во сколько эта сумма оценивается в долларах США. Ниже представлена вся история операций по этому эфириум адресу. Она состоит из перечня TxHash, то есть ID транзакций, через который становится возможным найти каждую операцию в цепочке Ethereum. Кликают на ссылку с нужным хеш-кодом.

На открывшейся странице выводится полная информация по выбранной транзакции в режиме реального времени.

Здесь можно увидеть:

  • статус операции – завершена или в процессе;
  • номер блока;
  • когда произведена транзакция;
  • с какого кошелька и кому отправлена оплата;
  • сумма перевода.

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

Видео

kak-popolnit.ru

Что такое TXID транзакции, для чего они нужны, возможные проблемы

Проведение операций в сети блокчейн – довольно сложный процесс, на первый взгляд.

Большую роль в нем играет TXID транзакции или идентификатор.

В статье подробно описано проведение сделок в сети, присвоение txid, а также решение вопросов с отсутствием идентификатора в блокчейне.

Содержание:

Отправка криптовалюты с кошелька на кошелек

Сама процедура начала транзакции выглядит довольно просто.

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

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

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

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

В первую очередь, необходимо понимать, что биткоинов физически нет.

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

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

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

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

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

Операции между пользователями по переводу выглядят следующим образом:

  • Адрес отправителя криптовалюты (Input).
  • Количество единиц.
  • Адрес получателя криптовалюты (Output).

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

Итак, для того, чтобы отправить определенную сумму другому пользователю, вводим адрес получателя и закрытый ключ. Txid записывается сразу, в виде маркера транзакции, как только он поступает в сеть. Генерируется случайно и представляет собой последовательность из букв и цифр размером в 64 символа. Приватный ключ также представляет собой последовательность из букв и цифр, но в отличие от TXiD, его не следует раскрывать, так как это даст возможность получить доступ к вашему кошельку.Вся информация (кроме приватного ключа) отправляет в сеть, где она проверяется майнерами. Они же проводят размещение транзакции в одном из последующих блоков и только после этого криптосделку можно считать подтвержденной.

перейти к содержанию ↑

Время подтверждения транзакции

Все операции в сети блокчейн проводятся не в автоматическом режиме. Подтверждение осуществляется майнерами.

Соответственно, для подтверждения сделок потребуется определенное время. В среднем, каждый новый блок появляется раз в 10 минут.

Это минимальное время, за которое может пройти операция в сети биткоина.

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

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

перейти к содержанию ↑

Проверка криптотранзакции в блокчейне

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

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

Отследить перевод можно на сайтах blockchain.info и Chain.so. Здесь и понадобится txid или хэш операции.

Его нужно вести в поисковую строку одного из перечисленных сайтов.

Здесь можно получить информацию о самом криптопереводе, а также количестве подтверждений.

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

перейти к содержанию ↑

Как найти идентификатор транзакции

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

Но далеко не все начинающие пользователи знают, как узнать идентификатор. Предлагаем небольшую инструкцию.

Для этого необходимо зайти в blockchain.info и в поисковике ввести адрес отправления (то есть Input).

Затем открывается окно со всеми транзакциями, которые относятся к этому адресу, начиная от самых последних.

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

Идентификатор будет отображаться над данными о транзакции в сером поле. Щелкнув по ссылке TXID, пользователь может увидеть всю информацию о сделке.

перейти к содержанию ↑

TXID — Транзакции с многократным выводом

В некоторых случаях, под одним и тем же идентификатором может идти несколько транзакций.

Они также называются криптотранзакциями с многократным выводом.

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

перейти к содержанию ↑

Что делать, если биткоин-транзакция не имеет подтверждений

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

В этом случае, рекомендуется выполнить следующие действия:

  • Подождать. Иногда сделка может проводиться в течение нескольких дней. Если после этого ничего не происходит, необходимо предпринимать определенные шаги.
  • Иногда переводы могут задерживаться из-за низкой комиссии. В этом случае, рекомендуется подождать, пока на транзу обратят внимание майнеры или изменить размер комиссии.
  • Если заявка на перевод создавалась без комиссии, она может вообще не пройти.
  • В случае, если биткоин-транзакция задерживается по причине перегрузки сети, отправитель может попытаться провести так называемый double-spending. Иногда это помогает операции начать хоть какое-то движение.
  • Использование ускорителей.
перейти к содержанию ↑

Отмена неподтвержденных транзакций

С ростом нагрузки на сеть, неподтвержденные транзакции стали нормальным явлением.

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

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

Во втором случае стоит подождать.

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

Для этого необходимо выполнить следующие шаги:

  • Перейти в кошелек и убедиться в том, что средства еще не списаны с баланса.
  • В случае, если транзакция все еще остается неподтвержденной, необходимо перейти в отладочную панель кошелька и выбрать «Консоль».
  • В случае с зашифрованным счетом, необходимо получить к нему доступ.
  • На адрес создается неформальный ключ dumpprivkey и адрес получателя. Далее, нужно скопировать строчку.
  • Далее — выйти из кабинета пользователя и переименовать кошелек или переместить его в другое место.
  • Перезапуск клиента, создающего новое хранилище. После этого, зайти в консоль и набрать importprivkey и добавить ключи, созданные ранее.
  • Как только операция завершиться, в кошельке появятся старые данные. Это и будет показателем успеха всех манипуляций.

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

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

5 (100%) 1 голос(ов)

bitgid.com

Как посмотреть баланс и транзакции Эфириума

В этом небольшом мануале мы покажем вам как можно проверить свой баланс в командной строке, как конвертировать между всеми различными значениями Ether, такими как базовый блок Wei и как сделать свою первую транзакцию. Итак, после того, как вы настроили ваш шахтера через запуск Гет программы и Ethminer, нужно открыть третье окно командной строки.

  1. Шаг 1. Это можно сделать щелкнув правой кнопкой мыши на командной строке на панели задач внизу экрана, а затем щелкнуть по командной строке, которая появляется в верхней части меню. Теперь должно быть открыто третье командное приглашение.
  2. Шаг 2: Теперь вам нужно сообщить эту командную подсказку, куда нужно вставать и запускаться. Обычно открывается окно командной строки, просматривающее ваш профиль пользователя. Если это так — нужно сообщить командной строке о том, куда вы установили geth. В нашем руководстве мы установили его прямо на диск C, поэтому нужно сообщить командной строке, чтобы вернуться на C-диск, который мы делаем, введя «cd C: \» и нажав enter.
  3. Шаг 3: Затем нужно сообщить командной строке о том, что делать. В этом случае нужно сказать, чтобы он приложил к Гефу.

Итак все, что вы вводите, это «geth attach» — это должно выглядеть так: «C: /> geth attach» — и затем нажмите enter. У вас теперь есть консоль и работает — разговаривая с geth — так что вы можете начать задавать ей вопросы или говорить ей делать что-то. Помните, что для «geth attach» для работы вам нужно иметь другое окно командной строки, запущенное с «geth -rpc».

Если вы хотите узнать свой адрес, введите «eth.coinbase». Это должно выглядеть так: «C: /> eth.coinbase». Нажмите enter и увидите, что ваш адрес отображается — длинная строка (набор символов и цифр).

Если вы хотите проверить свой баланс, вы можете просто ввести эту команду здесь «eth.getBalance (eth.coinbase)» и нажать enter. Удостоверьтесь,что вы капитализировали B в «балансе», а также помните, что это дает вам баланс в Вэй — одном из наименьших наименований эфира — точно так же, как сатоши в биткойне и центов в долларах.

Узнать баланс Эфириума

Если вы хотите проверить свой баланс в «Эфире», вам нужно ввести следующий код: «web3.fromWei (eth.getBalance (eth.coinbase), «эфир»)» и нажмите enter, а также в других наименованиях Ether просто измените конец предложения, чтобы включить деноминацию, в которую вы хотите конвертировать. Итак, если вы хотите конвертировать в финни или Шеннон, следуйте этим двум командам здесь: «web3.fromWei (eth.getBalance (eth.coinbase), «finney»)» или «web3.fromWei (eth.getBalance (eth.coinbase)», Shannon «)» . Не забудьте заглавные буквы B в бит getBalance и если вы хотите узнать больше о существующих опциях.


Если вы хотите отправить транзакцию из своего типа адреса в следующей команде:

Eth.sendTransaction ({from: eth.coinbase, to: «0x154230ed91d1e711e56b9c0f88b5ba5fd2b0503f», значение: web3.toWei (1, «эфир»), газ: 22000, газ Цена: web3.toWei (45, «Шеннон»), данные: web3 .toHex ( ‘ZeroCool’)})

Простая версия для этого без каких-либо дополнительных полей:

Eth.sendTransaction ({from: eth.coinbase, to: «0x154230ed91d1e711e56b9c0f88b5ba5fd2b0503f», значение: web3.toWei (1, «ether»)})

Давайте немного сломаем это, чтобы вы могли понять, что означает каждый бит:

Eth.sendTransaction означает, что вы говорите geth, чтобы отправить транзакцию.

({From: eth.coinbase, — вы говорите гету, чтобы взять эфир с вашего адреса — coinbase просто означает ваш собственный адрес.

To: «0x154230ed91d1e711e56b9c0f88b5ba5fd2b0503f», — означает адрес, по которому вы отправляете эфир.

Value: web3.toWei (1, «ether») — это значение, которое вы отправляете, — вы можете изменить значение 1 на другие наименования эфира, пока вы меняете вторую часть скобок на срок номинала, который вы отправили.

Газ: 22000, газЦена: web3.toWei (45, «Шеннон»), — дополнительно — это показывает, сколько газа вы хотите заплатить за транзакцию. Газ — это механизм ценообразования для транзакции, в конечном счете Эфир и контролируется тем, сколько людей хочет использовать сеть в то время. Если вы не включаете газ, он будет использовать текущую сетевую настройку по умолчанию.

Data: web3.toHex (‘ZeroCool’)}) — дополнительно — это тэг транзакции — точно так же, как вы делаете банковский перевод. Вы можете разместить столько символов, сколько хотите, но чем больше число символов, тем больше газа будет стоить для обработки транзакции.

Теперь вы узнали как сделать транзакцию, с которой вы можете начать перенос своего эфира на биржу, например Kraken, EXMO или Poloniex, чтобы начать торговлю Эфириумом.

Лучшие биржи криптовалют 2017-2018 года

1ethereum.ru

Сканеры для проверки транзакций в сети Ethereum

 Поиск транзакций по номеру своего кошелька — востребованный и актуальный вопрос. Транзакции зачастую идут долго и отслеживание их состояния успокаивает нервы лучше любой пилюльки.  Для отслеживания существуют простые и понятные сервисы под названием Blockchain Explorers.  Это очень важные инструменты для любой криптовалюты, которые позволяют отслеживать транзакции и диагностировать возможные проблемы, когда вы отправляете монеты или должны их получить. А также с их помощью, вы так же можете следить за последними разгаданными в сети блоками, сложностью сети и другой полезной статистической информацией.

Сеть Ethereum обзавелась уже несколькими сервисами Blockchain Explorers. Это достаточно удобно и для тех, кто добывает данную криптовалюту, занимаясь майнингом и для тех, кто просто интересуется состоянием сети Ethereum.

Представляем вашему вниманию небольшую подборку блокчейн сервисов сети Ethereum (ETH). Выбирайте для себя самый удобный с вашей точки зрения и пользуйтесь на здоровье.

Список Ethereum Blockchain Explorers

  • Etherchain
  • Etherscan
  • Ethercamp

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

Etherchain

Etherscan

Ethercamp

 

crypinfo.ru

что происходит на узлах, которые не занимаются добычей, и что с ними будет дальше? / Habr


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

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

Предполагается, что Вы уже знакомы с основными принципами работы этих систем. Если какие-то термины окажутся не совсем понятными, их объяснение можно найти в книге Mastering Bitcoin Андреаса Антонопулоса (в сети можно найти перевод на русский язык), и в статье о принципах работы Ethereum на Geektimes.

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


  • Данные хранятся в единой цепочке блоков. В течение коротких промежутков времени на конце цепочки может возникать несколько ветвей (fork). Но впоследствии только одна из ветвей может быть признана действительной.
  • Данные хранятся децентрализовано, все узлы равноправны и независимы. У системы нет единого владельца, который может самостоятельно управлять ею. Какие-либо изменения в системе могут произойти только в том случае, если большинство узлов примут эти изменения.
  • У всех пользователей есть возможность просматривать любые хранимые в системе данные и проверять на их основе корректность добавления блоков, а, следовательно, и корректность самих данных.

В современных системах транзакции осуществляются значительно медленнее по сравнению с обычными платёжными системами. Наиболее популярные на сегодняшний день системы, в первую очередь, Bitcoin и Ethereum построены на использовании принципа доказательства работы (proof-of-work). Для подтверждения транзакции в таких системах требуется сначала дождаться, пока транзакция пройдёт очередь на добавление и будет зафиксирована в очередном блоке. Затем нужно ещё подождать некоторое время, в течение которого будет выполнен объём вычислительной работы, достаточный для гарантии того, что уже никто не сможет повторить эту работу самостоятельно с целью модификации добавленных данных. В системе Bitcoin обычно транзакция считается подтверждённой после добавления 6 блоков после блока, содержащего соответствующую транзакцию. Этот процесс занимает примерно один час. Что касается Ethereum, то здесь единого мнения относительно надёжного подтверждения нет: некоторые кошельки могут ждать подтверждения 5 блоков (около минуты), в то время как отдельные биржи могут требовать добавления нескольких сотен блоков для подтверждения.

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

Для совершения небольших покупок, ввиду низких рисков продавца, часто не требуется ждать подтверждения. Достаточно информации о том, что транзакция попала в сеть и добавлена в очередь. Но, если рассматривать систему в целом, основным элементом, ограничивающим производительность сети, по-прежнему остаётся добыча (mining) блоков, поскольку все отправленные транзакции всё равно рано или поздно должны быть добавлены в блоки. Сложность добычи не имеет под собой реальных физических оснований, а задаётся искусственно, чтобы обеспечить необходимое количество работы для надёжного подтверждения. В системе Bitcoin сложность добычи подбирается таким образом, чтобы среднее время добавления нового блока составляло приблизительно 10 минут. Если блоки начинают добываться быстрее, сложность увеличивается, если дольше — снижается. Частота добавления блоков в Ethereum выше – новый блок добавляется примерно каждые 15 секунд.

При необходимости частоту добавления новых блоков можно повысить, снизив сложность добычи, или же вообще отказаться от процесса добычи, переключив систему на работу в соответствии с принципом доказательства доли владения (proof-of-stake). Однако и в том и в другом случае вероятность одновременного нахождения новых блоков возрастёт, что приведёт к росту числа ветвлений цепи (fork) и соответствующим неудобствам. Критическим временем добавления блока здесь будет являться время, соответствующее характерному времени распространения блока по сети. После превышения данного порога майнеры слишком часто будут получать информацию о новом добытом блоке уже после того, как добудут его сами (возможно, включив в него другой набор транзакций) и отправят в сеть. Таким образом, добавление почти каждого блока будет сопровождаться ветвлением, что сделает невозможным нормальное функционирование сети. Время распространения данных по сети между разными континентами можно грубо оценить величиной 100 мс. Таким образом, скорость добавления блоков в Bitcoin можно повысить не более чем в , а в Ethereum – в .


Повышать число обрабатываемых транзакций можно не только за счёт увеличения частоты добычи новых блоков, но и за счёт увеличения их размера. В этом случае рано или поздно также появятся определённые ограничения. Одним из наиболее простых ограничений является количество используемого дискового пространства. Работа с данными в Bitcoin и Ethereum устроена по-разному, поэтому рассматривать их имеет смысл отдельно друг от друга.


Bitcoin

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

Рисунок 1. В блокчейне Bitcoin не хранится информация о текущем состоянии счетов, только информация о списании и зачислении средств в рамках конкретных транзакций. Чтобы узнать текущий баланс, нужно просуммировать все транзакции с непотраченными выходами.

На данный момент размер блокчейна Bitcoin превышает 150 Гбайт и увеличивается со скоростью примерно 50 Гбайт/год. Стоит отметить, что этот рост связан не столько с приходом новых пользователей, сколько с совершением транзакций уже существующими пользователями. Поскольку каждый день в хранилище добавляется информация о новых транзакциях, и при этом информация о старых транзакциях не удаляется, объём базы будет только расти.

Рисунок 2. Зависимость размера блокчкйна Bitcoin от времени. Источник: blockchain.info.

Далеко не все пользователи готовы выделить на своём персональном компьютере несколько сотен гигабайт дискового пространства для хранения блокчейна. Нужно учесть, что это не просто файлы, хранящиеся на диске, а база данных, которая при добавлении новых блоков осуществляет перестроение части данных для обеспечения эффективности их хранения. В клиентах Bitcoin чаще всего используется NoSQL база LevelDB, построенная на LSM деревьях.

Проверку транзакций можно оптимизировать за счёт использования отдельной базы транзакций с непотраченными выходами (UTXO), так как именно эти данные представляют наибольший интерес. Теоретически, проверив подлинность UTXO, информацию о старых транзакциях из общей базы можно удалить с целью оптимизации. Однако оставшаяся база данных всё равно займёт не один гигабайт дискового пространства. Интенсивность обращений к диску при этом уменьшится незначительно. Размер базы, конечно, будет на порядок меньше, но помимо добавления транзакций в этом случае появятся и удаления UTXO с закрывшимися выходами. Таким образом, поддержание так называемого полного узла сети вызывает определённые неудобства у обычных пользователей. Есть мнение, что значительная часть полных узлов Bitcoin уже сейчас размещена в дата-центрах.

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


Ethereum

В Ethereum есть понятие состояния (state) аккаунта, которое включает в себя состояние счёта. В блокчейне хранятся изменения таких состояний. Узлы Ethereum хранят актуальные состояния аккаунтов и при получении новых блоков применяют изменения к имеющимся состояниям, поддерживая тем самым их актуальность. Для обеспечения надёжности хранить старые состояния не требуется, достаточно последнего актуального состояния и уверенности в том, что оно корректно. Благодаря этому в Ethereum не два а три типа узлов:


  • Архивные узлы. Такие узлы последовательно обрабатывают все транзакции, хранят всю историю состояний и позволяют в любой момент воссоздать всю историю операций, в частности, историю выполненя «умных» контрактов. Такие узлы используются, как правило, для отладки и статистического анализа. Также они могут потребоваться для объяснения и обоснования действий, произошедших в результате вызовов «умных» контрактов. Кроме того, наличие полной базы данных требуется для осуществления добычи.
  • Полные узлы. Полные узлы также выполняют все поступающие транзакции, но хранят лишь актуальные состояния и не хранят всю историю выполнения операций. С помощью таких узлов можно безопасно осуществлять переводы (есть гарантия того, что имеющаяся информация о балансе других участников сделки является достоверной), но нет возможности просматривать историю операций. Такие узлы разумно использовать на стационарных ПК для осуществления переводов.
  • Лёгкие узлы. Аналогично лёгким узлам Bitcoin такие узлы хранят минимальный набор информации и по мере необходимости запрашивают данные из сети. Использование таких узлов не является полностью безопасным. Зато узлы такого типа предъявляют значительно более низкие требования к компьютерам пользователей и могут работать на мобильных устройствах.

Более подробная информация о видах синхронизации приведена в статье на dev.to.

Проблемы архивных узлов Ethereum аналогичны проблемам полных узлов Bitcoin: размер базы данных исчисляется сотнями гигабайт и, если темп роста количества данных сохранится, то уже до конца 2018 года полная база данных перестанет помещаться на одном стандартном жёстком диске или твердотельном накопителе.

Рисунок 3. Зависимость размера блокчейна Ethereum от времени (для сравнения также приведена зависимость для Bitcoin). Источник: daniel.net.nz.

Но, как уже упоминалось выше, для безопасного проведения транзакций достаточно полного Ethereum узла с «обстриженной» базой данных, которая на данный момент занимает «всего» 40 Гбайт.

Рисунок 4. Зависимость размера базы данных полного узла Ethereum от времени. Источник: etherscan.io.

Однако на практике не всё оказывается так просто. В результате экспериментов с одной из наиболее популярных реализаций клиента Ethereum – Geth (Go Ethereum), — в январе 2018 года оказалось, что примерно за две недели работы клиента размер базы данных увеличился с 40 Гбайт до 80 Гбайт. Дальнейшее исследование показало, что после завершения синхронизации базы данный клиент переходит в режим архивного узла. То есть из базы данных не удаляется информация об устаревших состояниях аккаунтов, что приводит к увеличению размера базы, который относительно быстро может превысить несколько сотен гигабайт (см. рисунок 3). Разработчики о проблеме знают, но тикет закрыт почти полгода назад без принятия каких-либо мер по решению проблемы. Единственная практическая рекомендация заключается в следующем: удалить базу данных и загрузить её заново в режиме «быстрой» синхронизации (может занять несколько дней). В этом случае загруженная база, действительно, окажется меньше, но после завершения синхронизации клиент опять переключится в режим полной синхронизации и размер базы данных опять начнёт быстро увеличиваться.

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


Как известно, Ethereum – это не только средство для осуществления платежей, но и распределённая виртуальная машина, позволяющая выполнять «умные» контракты. Такие контракты являются простыми программами, исполняемыми на специальной виртуальной машине. С учётом того, что каждый полный или архивный узел должен последовательно выполнить все поступающие вызовы таких контрактов, разумно предположить, что дальнейшее развитие Ethereum ограниченно именно возможностями современных компьютеров по обработке большого числа вызовов таких контрактов.

Рисунок 5. Зависимость количества транзакций в одном блоке блокчейна Ethereum от времени (скорость добавления блоков практически постоянна и равна примерно четырём блокам в минуту).

Оценить рост вычислительной сложности обработки «умных» контрактов можно, загрузив полную базу данных. Среди прочего в полной базе хранится код всех контрактов, полная история их состояний и аргументы, с которыми они вызывались. Всё это позволяет повторно воспроизвести все вызовы контрактов и получить трассы их выполнения в операциях виртуальной машины Ethereum (EVM – Ethereum Virtual Machine). Список используемых команд можно посмотреть, например, на GitHub.

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

Рисунок 6. Зависимость количества вызовов операции вычисления хеш-функции sha3 в контрактах Ethereum от времени.

Рисунок 7. Зависимость количества вызовов различных операций обращения к памяти в контрактах Ethereum от времени.

Рисунок 8. Зависимость количества системных вызовов в контрактах Ethereum от времени.

Как видно из графиков, на данный момент виртуальная машина Ethereum для своей работы не требует большого количества ресурсов: за секунду осуществляется вычисление примерно ста хеш-функций (с учётом скорости добычи в 4 блока в минуту), несколько сотен доступов в память различного вида и порядка 10 системных вызовов. Даже если учесть десятикратный рост в течение года, проблемы с хранением данных, возникнут гораздо раньше (см. предыдущие разделы).


Несмотря на то, что виртуальная машина Ethereum не должна потреблять много ресурсов в процессе своей работы, клиент Geth почти полностью загружает ЦП и достаточно активно использует память и жёсткий диск. База данных Ethereum содержит значительное число записей, поэтому, возможно, для работы с ней требуется достаточно много ресурсов. Можно грубо оценить частоту обращений к диску. При выполнении транзакции нужно проверить, что средства отправителя зафиксированы в блокчейне. Для этого нужно совершить поиск в базе данных на диске. С учётом логарифмического времени поиска и накладных расходов, связанных со структурой LSM деревьев, одну операцию поиска в базе можно оценить как 100 случайных обращений к диску. В каждом блоке содержится приблизительно 100 транзакций (см. предыдущий раздел). В минуту добавляется приблизительно 4 блока. Таким образом, только для проверки транзакций в минуту нужно совершить случайных обращений к диску.

Для проверки этой оценки и выявления наиболее сложной с вычислительной точки зрения части клиента было проведено его профилирование с помощью предусмотренной разработчиками функции записи трассы выполнения. Для анализа записанной трассы использовались стандартные средства языка go (go tool trace).

На диаграмме ниже приведены результаты измерения времени работы различных горутин (аналог потоков в языке go) в процессе работы клиента Geth после завершения полной синхронизации. Измерения проводились в течение 60 секунд.

Рисунок 9. Время выполнения 10 наиболее требовательных к ресурсам горутин клиента Geth после завершения полной синхронизации в случае размещения базы данных на жёстком диске. Время измерения – 1 минута.

Из диаграммы видно, что большую часть времени занимает работа загрузчика, который должен импортировать блоки, проверять транзакции, выполнять соответствующие вызовы контрактов с использованием виртуальной машины и обновлять соответствующие состояния в базе данных. В силу небольшого количества данных (4 блока приблизительно по 100 транзакций в минуту), сама загрузка не должна занимать много времени. Работа виртуальной машины, как оказалось, тоже. Более подробный анализ профиля показал, что за время измерения (1 минута) было совершено около 100 000 системных вызовов, большая часть которых представляет собой обращения к файлам базы данных LevelDB, которые располагались на жёстком диске (то есть оценка, приведённая выше, оказалась верной). Таким образом, среднее время между соседними обращениями к файлам составляет , что по порядку величины сопоставимо со временем случайного доступа к жёсткому диску. Исходя из этого, можно сделать вывод о том, что обращения к диску и являются в данном случае наиболее узким местом. Это предположение имеет и экспериментальное подтверждение в виде стабильно высокой загрузки диска в процессе работы клиента.

Ситуация с rpc.ServerRequest (задача, которая заняла второе место по времени выполнения) аналогичная – достаточно большое число системных вызовов, в момент совершения которых верхняя часть стека имеет вид:

syscall.Pread:1372
os.(*File).pread:238
os.(*File).ReadAt:120
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/table.(*Reader).readRawBlock:564
github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/table.(*Reader).readFilterBlock:653
* * *

На третьем месте по времени выполнения находится обслуживание базы данных – leveldb.tCompaction. Далее следуют накладные расходы, связанные со сборкой мусора в языке go. Выполнение остальных горутин занимает пренебрежимо мало времени.

Таким образом, в случае хранения полной базы на жёстком диске (не SSD), ограничивающим фактором является работа базы данных, а точнее файловый ввод-вывод. Поэтому для обеспечения эффективной работы полного узла рекомендуется использовать твердотельные накопители, которые теоретически могут ускорить работу базы данных на 2-3 порядка. Дополнительно снизить нагрузку на базу данных можно путём использования быстрой синхронизации. В этом случае размер базы данных должен быть на порядок меньше (десятки гигабайт вместо сотен), поэтому обновление данных в такой базе должно осуществляться быстрее, в том числе и за счёт меньшего количества обращений к жёсткому диску. Результаты профилирования клиента Geth в процессе добавления блоков после быстрой синхронизации в условиях размещения базы на SSD приведены на диаграмме ниже. Измерения проводились в течение 10 минут.

Рисунок 10. Время выполнения 10 наиболее требовательных к ресурсам горутин в клиенте Geth после завершения быстрой синхронизации в случае размещения базы данных на твердотельном накопителе. Время измерения – 10 минут.

В результате профилирования оказалось, что больше всего времени занимает выполнение горутины miner.(*worker).update. На первый взгляд результаты кажутся удивительными, поскольку перед запуском профилирования добыча была отключена путём явного вызова соответствующей функции API. Более детальный анализ результатов профилирования и просмотра исходного кода Geth показал, что, не смотря на отключенную добычу, майнер продолжает обрабатывать поступающие транзакции и добавлять их в свою базу данных. Таким образом, реальной добычи здесь нет, и большая часть работы майнера сводится к работе с базой данных и системным вызовам для обращения к соответствующим файлам.

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

Интересно, что хеширование (горутина (*hasher).hashChildren) в среднем занимает в 30 раз меньше времени, чем работа с базой данных транзакций майнера. При этом, если майнер всё время работает в рамках одной горутины, то для вычисления хешей горутины каждый раз создаются и уничтожаются со всеми сопутствующими накладными расходами. В секунду создаётся и уничтожается несколько сотен таких горутин. Таким образом, в случае ускорения базы данных и увеличения количества добавляемых транзакций, вычисление хеш-функций, вероятно, станет одним из основных узких мест.

Хеширование используется не только для подтверждения и проверки блоков в системах, основанных на принципе подтверждения работой (proof-of-work), но и лежит в основе хранения данных в блоках и проверки их целостности. Поэтому проблема вычисления хеш-функций возникнет и в системах, основанных на доказательстве доли владения (proof-of-stake). Решением данной проблемы может стать использование ускорителей, которые могут быть построены как на основе видеокарт общего назначения, так и на основе специализированных сопроцессоров или микросхем, которые уже сегодня применяются для добычи в системе Bitcoin.


Если не учитывать процесс добычи, как искусственно созданные сложности, наиболее узким местом с точки зрения производительности в современных блокчейн системах являются базы данных. Если темпы роста количества совершаемых транзакций не снизятся, то, вероятно, уже до конца 2018 года полные цепочки блоков наиболее популярных блокчейн систем перестанут помещаться на один жёсткий диск. В одном из наиболее популярных клиентов системы Ethereum до сих пор нет нормальной поддержки полного узла в режиме «подстриженных» деревьев (pruned mode). В системе Bitcoin такие режимы явным образом не предусмотрены.

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

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

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

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

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



  1. Andreas M. Antonopoulos. Mastering Bitcoin.
  2. Preethi Kasireddy. How does Ethereum work, anyway? (перевод)
  3. The Role of Bitcoin Nodes: Do Full Nodes Running in Data Centers Benefit the Bitcoin Network?
  4. The Ethereum-blockchain size will not exceed 1TB anytime soon.

habr.com

Обновлено: 11.07.2019 — 21:52

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

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