Проверить транзакцию по Эфириум Классик (ETC)
Одной из особенностей криптовалют является полная анонимность пользователей. Это означает, что для проведения транзакций вам не требуется паспортных данных, проходить процедуры идентификаций и так далее. Многие считают, что проверить транзакцию ETC или другой крипты невозможно. Однако, это не так. Анонимность касается только личных данных пользователя, а не всей сети.
Хоть цепочка блоков с данными и закодирована, все же довольно легко и быстро можно проверить свой перевод. В случаях каких-либо задержек или проблем вы можете проверить транзакцию, узнать, на каком этапе она находится, и проследить ее до самого конца.
Содержание страницы
Что такое транзакция
Транзакция – это процесс передачи эфириумов в блокчейне. После занесения хеша в новый блок и его проверки майнерами, транзакция прописывается в блокчейне и считается успешной. Особенностью является то, что каждый имеет возможность просмотреть историю всех транзакций, которые произошли раньше, однако личные данные владельца кошелька не отображаются.
Запись всех проведенных транзакций содержится в блокчейне. Каждый новый блок включает в себя информацию всех транзакций из предыдущего — она содержит ссылки на предыдущие транзакции и ассоциирует определённое количество ЕТС с одним или несколькими публичными ключами (адресами). Поэтому история проведенных операций легкодоступная для всех пользователей.
Читайте также: Bitcoin — это новое золото
Как отследить транзакцию
Для того, чтобы отслеживать транзакции Эфириум Классик существуют специализированные сайты, к которым можно отнести сервис gastracker.io. С его помощью можно с лёгкостью отследить любой перевод. Для этого можно использовать:
- Номер Блока – номер блока с транзакцией.
- Block Hash.
- Tx Hash – идентификатор или уникальный номер транзакции.
- Address – адрес кошелька, с которого или на который произведен перевод.
По любому из этих идентификаторов вы сможете найти информацию о перечислениях токенов. Проверка транзакции выполняется в два этапа:
- Переходите на сайт указанный выше или другой аналогичный сервис.
- Вводите в поисковую строку один из вышеперечисленных идентификаторов и жмете «Enter».
После этого сайт выдаст полную информацию о ваших переводах. Сразу стоит отметить, что подобных сайтов, которые выполняют отслеживание криптовалют, в том числе и Ethereum Classic, довольно много и нет никакой сложности, найти один из них. Так же важно упомянуть, что некоторые подобные сервисы позволяют отслеживать передвижения крипты по сумме в криптовалюте или долларах. Однако работа таких сервисов весьма сомнительна.
Как правило, для подобных целей чаще всего используется Tx Hash (код транзакции) или номер кошелька, с которого были перечислены средства. Если вы не знаете, где и как посмотреть код перевода, то есть уникальный способ для всех:
- Переходите на сайт etherscan.io.
- В поисковой строке (правая верхняя часть экрана) вводите адрес своего ETC счета и жмете «Поиск» или «Enter».
- Ниже система выдаст подробную информацию обо всех переводах и зачислениях, связанных с вашим кошельком.
Читайте также: Обзор криптовалюты Bitcoin Gold
Вам остается просто найти нужный перевод и посмотреть информацию о нем. В частности, вас будет интересовать колонка «TxHash», в которой и отображается тот самый код транзакции. Нажимаете на него, чтобы открыть более подробную информацию. Стоит сказать, что таким же способов вы сможете проверить и баланс своего кошелька Эфир Классик, в случае такой необходимости.
Скорость транзакций
Еще один немаловажный вопрос – сколько времени занимает процедура перечисления криптовалюты. На сегодняшний день, как показывает практика, время транзакции может составлять от 20 минут до 1 часа. Однако, в некоторых случаях могут быть и более продолжительные задержки. На это могут повлиять следующие факторы:
Загруженность сети Etherium Classic – здесь важно учитывать, что количество переводов токенов растет с каждым месяцем. Поэтому загруженность сети постоянно увеличивается, и вместе с этим растет и время, которое требуется для проверки и подтверждения перевода. Помимо этого, в сети могут случаться всплески, когда среднее количество перемещений токенов в одном блоке увеличивается, в результате чего размер блока увеличивается, превышая критическую отметку.
Низкие комиссии – это так же важный фактор, который влияет на то, сколько времени идет перевод. Дело в том, что первыми валидацию проходят пользователи, имеющие большое вознаграждение (так называемые майнеры). В этом случае, при сильной экономии, срок подтверждения перевода может затянуться от одного до нескольких дней.
Волатильность криптовалюты – скачки стоимости коинов, в данном случае ETC.
Читайте также: Полный обзор по криптобирже Poloniex
Все это влияет на время перевода. Однако, существуют методы ускорения транзакций:
Повышение размера комиссии для «старателей» (майнеров).
Повышение объема средств, которые вы переводите – чем выше сумма, тем приоритетнее перевод (то есть, он будет обрабатываться в первых рядах).
Использование площадок, на которых покупатели и продавцы сохраняют свои ключи. В этом случае подтверждения транзакций будут происходить в пределах выбранной площадки, а не в общей сети. Найти такие площадки, которые будут поддерживать работу с ETC довольно просто.
Использование кошельков, поддерживающих функции мультиподписи.
О подтверждении транзакции
Подтверждением транзакции является процесс, при котором произведенный перевод и информация о нем включается в состав найденного блока. При этом 1 найденный блок равен одному подтверждению. Если говорить простыми словами, то при переводе коинов вы создаете заявку, в которой подтверждается направление и количество передаваемых токенов. Вся эта информация собирается в следующие блоки, из которых и состоит цепочка (Blockchain).
Стоит отметить, что для подтверждения перевода нужно открыть как минимум 6 блоков. Это объясняется тем, что такую систему крайне сложно взломать. Для этого потребуется система, которая обеспечит 10% от хешрейта всей сети. А такое оборудование будет иметь стоимость миллионов долларов. При этом отследить транзакцию довольно легко. Причем вы можете получить подробную информацию о том, на какой стадии она находится в данный момент. Для этого вам потребуется ваш идентификатор (номер кошелька, с которого был произведен перевод).
Читайте также: Введение в мир криптовалют
Исходя из всего вышесказанного, можно сделать вывод, что помимо всего прочего, современные криптосети имеют довольно высокий уровень защиты. Хотя, если разработчики поспешат выпустить в виртуальный мир сырой продукт, то найдутся такие умельцы, которые смогут найти изъян и обратить его в свою пользу. Доверять следует только проверенным
Как проверить скорость и время транзакции Ethereum
Все транзакции в блокчейне Эфириум сопровождаются комиссионными платежами, величина которых зависит от текущей нагрузки на сеть.
За каждое вычисление, выполняемое в сети Эфириума в результате транзакции, взимается комиссия, для обеспечения вознаграждения за поддержание сети (майнинг и хранение данных блокчейна).
Эта комиссия выплачивается в единицах стоимости, называемых «газом» (gas).
Что такое транзакция в блокчейне Ethereum?
Блокчейн – это криптографически безопасная транзакционная одноэлементная система с общим состоянием. Далеко не самое простое определение, не так ли? Давайте разобьем каждую составляющую этого определения на отдельные части.
«Криптографически безопасный» означает, что безопасность криптовалюты обеспечивается сложными математическими алгоритмами, которые практически невозможно обойти.
Защита, выстроенная с помощью данных алгоритмов, представляет собой подобие файрвола: благодаря используемым алгоритмам обход системы безопасности практически невозможен (например, невозможно создание поддельных транзакций, уничтожение транзакций и т. д.).
«Транзакционная одноэлементная система» означает, что существует только одно заданное состояние системы, благодаря которому происходят все транзакции, создаваемые в данной системе. Другими словами, для данной системы предусмотрено только одно состояние, которое является единственно верным.
«С общим состоянием» означает, что состояние, заданное в системе, является общим и открытым для всех.
Таким образом, в платформе Эфириум реализуется приведенная выше парадигма блокчейна.
Газ и комиссии сети
Итак, вы готовы создать транзакцию, например, сделав перевод эфира другому участнику сети, но перед вами возник обсуждаемый нами параметр – лимит газа (GAZ LIMIT). Как правильно его задать, чтобы не переплатить, и чтобы транзакция выполнилась?
Напомним, что все транзакции в эфириуме измеряются газом пропорционально затратам на своё вычисление. Чем больше процессорного времени потребуется на выполнение кода транзакции, тем больше газа она будет стоить.
С другой стороны, нет такой расчётной единицы как газ. Это единица условная и пользователи платят за неё стоимость, которую сами и устанавливают, манипулируя ценой газа при отправке в сеть очередной транзакции. Вторым параметром, доступным для управления пользователей при создании транзакции является предел газа.
Он показывает, какой объём вычислений пользователь готов оплатить в рамках запускаемой транзакции. Разберём оба параметра по-отдельности.
GAZ LIMIT
Предел газа, это сколько примерно вы готовы потратить в самом худшем для вас случае, когда транзакция написана криво и потребляет комиссии больше положенного. Стандартный перевод эфира или любого токена сопровождается съеданием стандартного объёма газа. Криво написанный перевод токена может потребовать больше, но больше в разумных пределах.
Если перевод токена требует намного больше газа, то зачем вам связываться с таким токеном, который изначально был некачественно написан… Но вместе с тем, любая функция смарт контракта может быть написана таким образом, что её выполнение будет длиться очень долго, или даже бесконечно.
Соответственно, такие функции будут потреблять очень много газа в разрешённых параметром GAZ LIMIT пределах (или даже весь газ в случае если не насытятся пределами).
Таким образом, если вы укажете меньший предел газа, чем потребуется для выполнения данной транзакции, то просто лишитесь комиссии за указанный объём газа. Если укажите намного больше, то получите “сдачу” обратно, при условии, что транзакция вложилась в ваш лимит.
Ну а если вы указали большой предел газа, а транзакция оказалась неправильно написанной и затребовала весь разрешённый газ за своё выполнение, то вы лишитесь всех тех ETH, которые стоят за GAZ в соответствие с вашей ценой газа.
GAZ PRICE
Данный параметр регулирует цену за единицу газа. Задаёт его пользователь при запуске транзакции в регулируемых виртуальной машиной пределах. По сути, увеличение цены газа предлагает майнерам большую стоимость за проверку вашей транзакции.
Если сеть загружена, это должно ускорить процесс майнинга. Если сеть не штормит очередное громкое ICO, то можно оставлять параметр на минимальном уровне, ваша транзакция итак найдёт один из ближайших блоков.
Лучший способ сэкономить на стоимости транзакции, это уменьшение стоимости единицы газа. Лимит газа лучше оставлять на предложенном системой уровне, если изменение не рекомендовано поставщиком смарт контракта.
Плата за хранение данных
Газ используется для оплаты не только вычислительных действий, но и хранения данных. Общая плата за хранение пропорциональна наименьшему использованному кратному 32 байтам числу.
В комиссии за хранение данных есть свои нюансы. Например, поскольку увеличение размера хранилища увеличивает размер базы данных состояний для всех нод, то для пользователей сети предусмотрен стимул к сокращению количества хранимых данных до необходимого минимума.
Поэтому, если транзакция инициирует выполнение действия, в результате которого объём занимаемого хранилища сокращается, то комиссия за выполнение этой операции не взимается, ПЛЮС производится возврат средств за освобождённый объём.
В чём заключается цель сбора комиссий?
Важным аспектом работы Эфириума является то, что любая операция, которая выполняется сетью, также одновременно выполняется каждым полным узлом. Тем не менее, все шаги, связанные с вычислением на виртуальной машине Эфириума, очень дорого стоят.
Таким образом, для решения простых задач (например, запуска простой бизнес-логики, проверки подписей, а также иных операций, связанных с криптовалютой) могут вполне сгодиться смарт-контракты Эфириума, в отличие от тех случаев, когда требуется выполнение других, более сложных, задач: хранение файлов или электронной почты, а также выполнение задач из области машинного обучения, которые могут вызывать чрезмерную загрузку сети. Введение оплаты предотвращает действия пользователей, направленные на излишнюю загрузку сети.
В Эфириуме используется полный по Тьюрингу язык. Если вкратце: машина Тьюринга – это машина, имитирующая любой компьютерный алгоритм. Для тех, кто впервые слышит о машине Тьюринга, предлагаю прочитать эту и вот эту статьи. Благодаря такой особенности в Эфириуме появляется возможность использовать циклы, и это делает его восприимчивым к проблеме остановки – проблеме, в случае возникновения которой, вы не можете определить, будет ли программа функционировать бесконечно или нет.
Например, в том случае если бы в Эфириуме не была бы предусмотрена система оплаты, то злоумышленники могли бы попытаться сорвать работу сети, выполнив бесконечный цикл внутри транзакции, при этом не понеся каких-либо убытков. Таким образом, система оплаты была введена именно для ее защиты от преднамеренных атак.
Вполне вероятно, что вы подумаете: «А я-то тут причем? Зачем я буду платить за использование хранилища?» Ну, что вам сказать, вся сеть Эфириума берет на себя плату как за вычисления, так и за использования хранилища…как-то так.
Перевод ETH с одного кошелька на другой
Чтобы отправить эфир на другой Ethereum кошелек, нужно перейти во вкладку «Перевести эфир». Там снова откройте свой Эфириум кошелек и введите к нему пароль. Далее введите адрес эфириум кошелька, на который хотите выслать эфир, количество эфира, размер лимита газа (комиссия, которая своим размером напоминает сатоши в биткоине, чем комиссия больше, тем быстрее пройдет транзакция) и нажмите «Сформировать транзакцию». После этого подтвердите желание совершить перевод ETH на другой кошелек.
А можно вообще не платить?
Так что мы собрали небольшую табличку пулов по Эфиру с указанием комиссии и минимальной выплаты.
- Ссылка Комиссия Мин. Выплата
- 2Miners 1% 0.1 ETH
- Ethermine.org 1% 0.05 Eth
- Ethpool.org 1% 0,1 Eth
- Nanopool.org 1% 0.2 Eth
- Ethereumpool.co 1% 0,1 Eth
- Suprnova.cc 1% 0.001 Eth
- www2.coinmine.pl/eth 1% 0.001 Eth
- miningpoolhub.com 0.90% 0.01 Eth
- eth.minepools.ru 0.50% 0.2 Eth
- mole-pool.net 0% 0.5 Eth
- alpereum.ch 0.20% 0.05 Eth
- digger.ws 1% 0.2 Eth
- eth.pp.ua 1% 0,1 Eth
Ethermine.org лучший пул, все понятно и не надо регистрироваться. Вообще мне кажется не стоит доверять тем пулам, которые просят от Вас регистрацию.
Подробнее читайте в статье: Пулы для майнинга Эфириума
Содержание транзакций и сообщений
Эфириум является автоматом на основе транзакций. Другими словами, транзакции, происходящие между разными учетными записями, – это то, что перемещает глобальное состояние Эфириума из одного состояния в другое.
В самом основном смысле транзакция представляет собой криптографически подписанную часть инструкции, которая генерируется внешней учетной записью, сериализована и затем передается блочной цепочке. Существует два типа транзакций: призывы к сообщениям и создание контрактов т. е. транзакции, которые создают новые контракты Эфириум.
Все транзакции содержат следующие компоненты, независимо от их типа:
- nonce:количество транзакций, отправленных отправителем;
- gasPrice: количество Вэй, которое отправитель готов заплатить за единицу газа, необходимого для совершения сделки;
- gasLimit: максимальный объем газа, который отправитель желает заплатить за выполнение этой транзакции. Эта сумма устанавливается и оплачивается заранее, прежде чем какие-либо вычисления будут выполнены;
- to: адрес получателя. В транзакции, создающей контракт, адрес учетной записи контракта еще не существует, и поэтому используется пустое значение;
- value: количество Вэй, которое должно быть передано от отправителя получателю. В транзакции, создающей контракт, эта величина служит стартовым балансом на вновь созданной учетной записи;
- v, r, s: используется для создания сигнатуры, которая идентифицирует отправителя транзакции;
- init (существует только для транзакций, создающих контракт): фрагмент кода EVM, который используется для инициализации новой учетной записи контракта. init запускается только один раз, а затем отбрасывается. Когда init запускается сначала, он возвращает тело кода учетной записи, который является частью кода, который постоянно связан с учетной записью контракта;
- data (необязательное поле, которое существует только для вызовов сообщений): входные данные (то есть параметры) вызова сообщения. Например, если интеллектуальный контракт служит службой регистрации домена, вызов этого контракта может ожидать поля ввода, такие как домен и IP-адрес.
19-Ethereum-ICO-Cryogen-Blockchain.png В разделе «Учетные записи» мы узнали, что транзакции – как вызовы сообщений, так и транзакции по заключению договоров – всегда инициируются внешними учетными записями и передаются блочной цепочке. Еще один способ подумать о том, что транзакции – это то, что соединяет внешний мир с внутренним состоянием Эфириума.
20-Ethereum-ICO-Cryogen-Blockchain.png Но это не означает, что контракты не могут разговаривать с другими контрактами. Контракты, которые существуют в глобальном масштабе государства Эфириума, могут разговаривать с другими контрактами в том же объеме. То, как они это делают, – это «сообщения» или «внутренние транзакции» для других контрактов.
Мы можем думать о сообщениях или внутренних транзакциях как о схожих с транзакциями, при этом большая разница в том, что они НЕ генерируются внешними учетными записями. Вместо этого они создаются контрактами. Это виртуальные объекты, которые, в отличие от транзакций, не сериализуются и существуют только в среде исполнения Эфириума.
Когда один контракт отправляет внутреннюю транзакцию в другой контракт, выполняется соответствующий код, который существует на учетной записи контракта получателя.
21-Ethereum-ICO-Cryogen-Blockchain.png Важно отметить, что внутренние транзакции или сообщения не содержат gasLimit. Это связано с тем, что предел газа определяется внешним создателем исходной транзакции (т. Е. Какой-либо внешней учетной записи). Ограничение на газ, которое внешние учетные записи должны быть достаточно высокими для осуществления транзакции, включая любые подзадачи, которые происходят в результате этой транзакции, такие как сообщения от договора к контракту.
Если в цепочке транзакций и сообщений конкретное выполнение сообщения заканчивается газом, то выполнение этого сообщения будет возвращено вместе с любыми последующими сообщениями, вызванными исполнением. Однако выполнение родителя не нужно возвращать.
Блоки с информацией о всех транзакциях блокчейна Ethereum
Блоки являются основными строительными элементами блокчейна. Блоки Эфириум состоят из различных компонентов, которые описываются так:
- Заголовок блока;
- Список транзакций;
- Список заголовков Дядюшек (Ommers или Uncles).
Список транзакций — это просто некий перечень всех транзакций, включённых в данный блок. Кроме того, этот в данный блок также включается текущий список Дядюшек. Наиболее важной и сложной частью является собственно заголовок блока, который и обсуждается здесь.
- Заголовок блока
Заголовки блока являются наиболее критически важными и самыми подробными компонентами блока Эфириум. Такой заголовок содержит значимую информацию, которая детализируется в последующих разделах.
- Родительский хэш
Это 256- битный хэш Кечак (Keccak) заголовка блока родителя (предыдущего блока).
Здесь содержится 256- битный хэш Кечак всего списка блоков Дядюшек (Ommers, Uncles), включаемых в анный блок.
- Выгодополучатель
Поле Выгодополучателя (Beneficiary) содержит значение 160- битного адреса того получателя, который желает получить вознаграждение за майнинг, когда данный блок будет успешно добыт.
- Корень состояния
Поле Корня состояния (State root) содержит значение 256- битного хэна Кечак узла корня данного древа состояния. Он вычисляется после того как все транзакции были осуществлены и финализированы.
- Корень транзакций
Значением Корня транзакций (Transactions root) является 256- битный хэш Кечак узла корня данного древа транзакции. Древо транзакции представляет полный список транзакций, включённых в этот блок.
- Корень квитанций
Значением Корня квитанций (Receipts root) являются 256 бит хэша Кечак узла корня имеющегося древа квитанций транзакции. Это древо состоит из квитанций всех транзакций, включённых в данный блок. Квитанции транзакции вырабатываются после осуществления каждой транзакции и содержат полезную информацию по завершению транзакции (post- transaction). Дополнительные свеления о квитанциях транзакции предоставлены в следующем разделе.
Журналы bloom являются bloom фильтром, который составляется из всех адресов зарегистрировавшихся и тем журналов от определённой записи журнала каждой квитанции транзакции вложенного списка транзакций в данном блоке. Ведение журнала подробно объясняется в следующем разделе.
Это уровень сложности (difficulty) текущего блока.
Общее число (number) всех предыдущих блоков; самым первым порождающим является блок ноль.
Это поле содержит то значение, которое представляет установленную величину предела значения потребления газа на блок.
- Использованный газ
Это поле содержит общее потребление газа всеми включёнными в этот блок транзакциями.
- Временной штамп
Временной штамп (Timestamp) является значением эпохи времени Unix общего времени инициализации блока.
- Дополнительные данные
Поле Дополнительных данных (Extra data) может применяться для хранения произвольных данных, относящихся к данному блоку.
- Смешанный хэш
Поле Смешанного хэша (Mixhash) содержит 256- битный хэш, который после соединения с Данным временем (nonce) применяется для подтверждения того, что на создание данного блока были затрачены адекватные вычислительные усилия.
Данное время (nonce) это 64- битный хэш (некое число), которое используется, в комбинации со значением поля mixhash, для удостоверения того, что для создания данного блока были потрачены достаточные вычислительные усилия.
Следующий рисунок отображает подробную структуру всего блока и заголовка блока:
Порождающий блок (genesis block) может слегка отличаться в зависимости от тех данных, и того способа, которым он был создан из обычного блока. Он содержит 15 элементов, которые описываются здесь.
- Квитанции транзакций
Квитанции транзакции применяются как механизм для хранения полученного состояния после исполнения некоторой транзакции. Другими словами, эти структуры используются для записи выхода исполнения определённой транзакции. Они производятся после исполнения каждой транзакции. Все квитанции сохраняются в некотором индексированном ключами древе. Хэш (256- битный Кечак) корня этого древа помещается в имеющийся заголовок блока в качестве основного корня квитанций. Он составляется из представленных здесь четырёх элементов.
- Состояние после транзакции
Данный элемент (post-transaction state) является структурой древа, которая содержит значение состояния после исполнения определённой транзакции. Он кодируется как некий массив байт.
- Использованный газ
Этот элемент представляет общее количество газа, задействованное в том блоке, который содержит данную квитанцию транзакции. Это значение берётся непосредственно сразу после завершения исполнения данной транзакции. Общий объём использованного газа ожидается не отрицательным числом.
- Набор журналов регистрации
Данное поле отображает весь набор регистрационных записей, созданных в результате исполнения транзакции. Записи регистрации содержат определённый одрес регистрирующего, последовательность регистрируемых тем и собственно регистрируемые данные.
Фильтр bloom создаётся из той информации, которая содержится в имеющемся наборе регистрируемых записей, которые обсуждались ранее. протокольная запись уменьшается до хэша в 256 байт, который затем встраивается в имеющийся заголовок блока как текущая запись bloom.
Запись регистрации состоит из определённого адреса регистрируемого и тем регистрации, а также протоколируемых данных. Регистрационные темы кодируются как последовательности структур из 32 байт. Протоколируемые данные делаются несколькими байтами данных.
Эт
Как работает Эфириум? (Часть 2: газ и комиссии сети, транзакции, блоки)
Очень многие знают о существовании блокчейна Эфириума, но значительно меньше людей понимают, что это такое. В последнее время Эфириум часто упоминался в СМИ и даже фигурировал на обложках некоторых крупных журналов.
Так что же такое Эфириум?
(Продолжение. Первую часть статьи читайте здесь.)
Газ и комиссии сети
Ещё одно важное для Эфириума понятие – это комиссионные платежи. За каждое вычисление, выполняемое в сети Эфириума в результате транзакции, взимается комиссия – ничто не происходит бесплатно! Эта комиссия выплачивается в единицах стоимости, называемых «газом».
Газ – это единица, используемая для обозначения размера комиссии за определённое вычислительное действие. Цена газа представляет собой то количество эфиров, которое вы готовы потратить на каждую единицу газа. Она измеряется в «Gwei». «Wei» – это наименьшая единица эфира, 1 эфир = 1⁰¹⁸ Wei. Один Gwei равен 1 000 000 000 Wei.
Для каждой транзакции отправитель устанавливает лимит газа и цену газа. Произведение цены газа и лимита газа даёт максимальное количество Wei, которое отправитель готов заплатить за выполнение транзакции.
Предположим, что отправитель устанавливает лимит газа 50 000, а цену газа 20 Gwei. Это означает, что отправитель готов потратить на выполнение этой транзакции не более чем 50 000 x 20 Gwei = 1 000 000 000 000 000 Wei = 0,001 эфира.
Запомните, что лимит газа представляет собой максимальное количество газа, которое отправитель готов оплатить. При этом, на счету отправителя должно находиться достаточное для оплаты максимального количества газа количество эфиров. После выполнения транзакции эквивалент любого количества неиспользованного газа возвращается на счёт отправителя в эфирах, будучи обменянным по первоначальной ставке.
Если отправитель не предоставляет необходимого для выполнения транзакции количества газа и оно исчерпывается в процессе её выполнения, то такая транзакция признаётся недействительной. В этом случае выполнение транзакции прерывается, любые произведённые ею изменения в состоянии сети отменяются и Эфириум возвращается в состояние, в котором он находился перед началом транзакции – как если бы её вовсе не было. Поскольку к тому моменту, как отпущенное на транзакцию количество газа было исчерпано, машина уже затратила ресурсы на выполнение вычислений, логично, что в этом случае плата за газ отправителю транзакции не возвращается.
Куда именно уходит плата за газ? Все средства, уплачиваемые за газ отправителем транзакции, отправляются на адрес выгодоприобретателя (обычно это адрес майнера).Поскольку для обеспечения необходимых вычислений и подтверждения транзакций майнеры прикладывают определённые усилия, они получают плату за газ в качестве вознаграждения за потраченные ресурсы.
Как правило, чем выше цена газа, которую отправитель готов заплатить, тем большее вознаграждение получит майнер за выполнение транзакции, и следовательно, тем выше вероятность того, что майнер выберет именно эту транзакцию. Таким образом, майнеры могут выбирать, какие транзакции они хотят подтвердить либо проигнорировать. Для того чтобы помочь отправителю понять, какую стоимость газа ему следует установить, у майнеров есть возможность сообщить публично о минимальной цене газа, при которой они будут выполнять транзакции.
Плата за хранение данных
Газ используется для оплаты не только вычислительных действий, но и хранения данных. Общая плата за хранение пропорциональна наименьшему использованному кратному 32 байтам числу.
В комиссии за хранение данных есть свои нюансы. Например, поскольку увеличение размера хранилища увеличивает размер базы данных состояний для всех нод, то для пользователей сети предусмотрен стимул к сокращению количества хранимых данных до необходимого минимума. Поэтому, если транзакция инициирует выполнение действия, в результате которого объём занимаемого хранилища сокращается, то комиссия за выполнение этой операции не взимается, ПЛЮС производится возврат средств за освобождённый объём.
В чём заключается цель сбора комиссий?
Один из важных аспектов работы Эфириума заключается в том, что каждая операция в сети выполняется одновременно всеми полными нодами. Однако выполнение вычислительных действий в виртуальной машине Эфириума стоит очень дорого. Таким образом, смарт-контракты Эфириума больше подходят для решения простых задач, таких, как реализация простой бизнес-логики или проверки цифровой подписи и других криптографических объектов, чем для реализации более сложных сценариев, как хранение файлов, email или машинного обучения, которые могут послужить источником высокой нагрузки на сеть. Комиссионные платежи помогают предотвратить чрезмерную нагрузку на сеть.
Эфириум – Тьюринг-полный язык программирования. (Вкратце, машина Тьюринга может симулировать любой алгоритм работы вычислительной машины. Те, кто не имеет представления о машинах Тьюринга, могут ознакомиться с этой и этой статьями.) Это позволяет использовать циклы и делает Эфириум подверженным проблеме остановки, когда вы не можете определить, будет ли программа продолжать выполняться бесконечно. Если бы в сети не было комиссионных платежей, злоумышленник легко мог бы нарушить работу сети, без каких-либо последствий инициировав посредством транзакции выполнение бесконечного цикла вычислительных действий. Таким образом, комиссии также защищают сеть от преднамеренных атак.
Вы можете подумать: «Но почему мы должны платить ещё и за хранение данных?» Что ж, точно так же, как и выполнение вычислений, хранение данных в Эфириуме имеет свою стоимость, которую сеть должна взять на себя.
Транзакция и сообщения
Мы уже говорили о том, что Эфириум представляет собой машину состояний, функционирующую посредством транзакций. Иными словами, именно различные счета инициируют переход Эфириума из одного глобального состояния в другое.
В самом базовом смысле, транзакция является частью команды с криптографической подписью, которая генерируется счётом внешнего владельца, сериализуется и затем передаётся в блокчейн.
Есть два типа транзакций: сообщения и транзакции создания контрактов.
Все транзакции, независимо от их типа, включают в себя следующие компоненты:
- nonce: количество транзакций, совершённых отправителем.
- gasPrice: количество Wei, которое отправитель готов заплатить за единицу газа, необходимого для выполнения транзакции.
- gasLimit: максимальное количество газа, которое отправитель готов заплатить за выполнение этой транзакции. Это количество устанавливается и оплачивается заранее, до того, как будут выполнены какие-либо вычисления.
- to: адрес получателя. В случае транзакции создания контракта адрес контракта ещё не существует, поэтому используется пустое значение.
- value: количество Wei, которое должно быть передано от отправителя получателю. В транзакции создания контракта, эта сумма будет являться стартовым балансом создаваемого счёта контракта.
- v, r, s: используется для генерирования подписи, идентифицирующей отправителя транзакции.
- init (только в транзакциях создания контракта): Фрагмент кода EVM, который используется для создания нового счёта контракта. Команда init выполняется только один раз, после чего игнорируется. При первом выполнении init возвращает тело кода счёта, которое является частью кода, постоянно ассоциированного со счётом контракта.
- data (необязательное поле, только для сообщений): входные данные (т.е. параметры) сообщения. Например, если смарт-контракт выполняет роль сервиса регистрации доменных имён, то он может ожидать получения таких входных данных, как доменное имя и IP-адрес.
В разделе «Счета (аккаунты)» мы узнали, что транзакции – как сообщения, так и транзакции создания контрактов – всегда инициируются счетами внешних владельцев и передаются в блокчейн. Можно сказать, что транзакции являются своего рода мостами между внешним миром и внутренним состоянием Эфириума.
Однако это не означает, что контракты не могут взаимодействовать друг с другом. Контракты, существующие в глобальной области действия состояния Эфириума, могут взаимодействовать с контрактами внутри этой же области действия. Они делают это посредством «сообщений» или «внутренних транзакций» в адрес других контрактов.Можно сказать, что сообщения или внутренние транзакции схожи с обычными транзакциями, но отличаются тем, что они НЕ генерируются счетами внешних владельцев. Их генерируют контракты. Это виртуальные объекты, которые, в отличие от транзакций, никогда не сериализуются и существуют только в среде выполнения Эфириума.
Когда один контракт отправляет внутреннюю транзакцию на адрес счёта другого контракта, выполняется соответствующий код, прописанный в контракте-получателе.
Важно отметить, что внутренние транзакции или сообщения не имеют параметра gasLimit.Это связано с тем, что лимит газа определяется внешним создателем исходной транзакции (со счёта внешнего владельца). Лимит газа, устанавливаемый счётом внешнего владельца, должен быть достаточным для выполнения транзакции, включая любые подзадачи – как, например, сообщения между счетами контрактов, – которые могут быть ею инициированы. Если в цепочке транзакций и сообщений при выполнении отдельного сообщения был исчерпан лимит газа, то передача этого и всех следующих за ним сообщений, связанных с этой транзакцией, будет отменена. Однако отменять выполнение родительской транзакции необходимости нет.
Блоки
Все транзакции объединяются в «блоки.» Блокчейн содержит множество таких блоков, соединённых в цепочку.
В Эфириуме блок состоит из:
- заголовка блока;
- информации о группе транзакций, включённых в этот блок;
- набора заголовков других блоков для оммеров текущего блока.
Что такое «оммеры»?
Оммер (ommer) – это блок, чей родительский блок тождественен родительскому блоку родительского блока текущего блока. Давайте рассмотрим, для чего оммеры используются и почему в блоки включаются заголовки оммеров.
Эфириум построен таким образом, что интервал между блоками в нём значительно меньше (~15 секунд), чем в других блокчейнах и, например, в Биткоине (~10 минут). Это позволяет ускорить процесс обработки транзакций. Однако один из недостатков короткого интервала между блоками заключается в том, что майнеры находят больше конкурирующих блоков. Эти конкурирующие блоки называют ещё потерянными, «орфанными» или просто «орфанами» (от англ. orphan) – то есть намайненными блоками, не включёнными в основную цепочку.
Оммеры нужны для того, чтобы майнеры могли получить вознаграждение за включение в блокчейн таких орфанов. Оммеры, включаемые майнерами в блокчейн, должны быть «действительными», то есть быть сформированными не более чем в шестом поколении от настоящего блока. После шести дочерних блоков, ссылаться на устаревшие орфаны больше нельзя (так как запись в блокчейн более старых транзакций заметно усложнит процессы сети).
За подтверждение оммеров майнеры получают меньшее вознаграждение, чем за полный блок. Тем не менее определённый стимул для майнеров включать в блокчейн такие орфаны и получать за это вознаграждение существует.
Заголовок блока
Давайте ненадолго вернёмся к блокам. Мы уже упоминали, что у каждого блока есть заголовок, но что именно он из себя представляет?
Заголовок блока состоит из части его содержимого и включает:
- parentHash: хэш заголовка родительского блока (с его помощью набор блоков организуется в «цепочку»)
- ommersHash: хэш списка оммеров текущего блока
- beneficiary: адрес счёта, на который перечисляется комиссия за майнинг этого блока
- stateRoot: хэш корневого узла trie-дерева состояний (ранее мы уже узнали, trie-дерево состояний хранится в заголовке и упрощает для лёгких клиентов верификацию чего-либо помимо состояния)
- transactionRoot: хэш корневого узла trie-дерева, который содержит все транзакции, включённые в этот блок
- receiptsRoot: хэш корневого узла trie-дерева, содержащий квитанции обо всех транзакциях, включённых в этот блок
- logsBloom: фильтр Блума (структура данных), состоящий из лога информации
- difficulty: уровень сложности данного блока
- number: порядковый номер текущего блока (генезисный блок имеет нулевой номер; номер каждого последующего блока увеличивается на единицу)
- gasLimit: текущий лимит газа, расходуемого на блок
- gasUsed: общее количество газа, использованного на выполнение транзакций в данном блоке
- timestamp: UNIX-метка времени для создания данного блока
- extraData: дополнительные данные, относящиеся к этому блоку
- mixHash: хэш, который, в сочетании с nonce, служит подтверждением того, что для данного блока было выполнено достаточное количество вычислительных операций
- nonce: хэш, который, в сочетании с mixHash, служит подтверждением того, что для данного блока было выполнено достаточное количество вычислительных операций
Обратите внимание, что заголовок каждого блока содержит три trie-структуры для:
- состояния (stateRoot)
- транзакций (transactionsRoot)
- квитанций (receiptsRoot)
Эти trie-структуры – не что иное, как patricia-деревья Меркла, о которых мы говорили ранее.
Кроме того, в приведённых выше описаниях тоже было несколько терминов, значение которых стоит прояснить. Давайте остановимся на них подробнее.
Логи
Эфириум ведёт логи для того, чтобы можно было отслеживать различные транзакции и сообщения. При выполнении каждой транзакции генерируется лог.
Логи содержат следующую информацию:
- адрес счёта регистратора лога,
- ряд тем, представляющих различные действий, произведённых в связи с выполнением данной транзакции, и
Как проверить транзакцию в блокчейн: проверка, способы ускорить
В 2017 году курс Биткоина и других криптовалют увеличился в 10–20 раз — вырос интерес к цифровым деньгам. Все больше людей вкладывают наличные в коины, хранят их в кошельках и проводят транзакции. Высокий ажиотаж способствует росту нагрузки и повышению времени переводов из-за перегруженности блокчейн, поэтому проверка транзакции иногда необходима.
Содержание статьи:
Что такое транзакции в сети BTC
Блоки блокчейн — элементы криптовалютной сети, хранящие сведения о произошедших событиях (в случае с криптовалютой — о проведенных транзакциях). Информация в новом блоке ссылается на сведения в прошлом узле, поэтому элементы цепи взаимосвязаны друг с другом и защищены от постороннего вмешательства.
Транзакции в blockchain обеспечивают создание блоков. С ростом спроса на цифровые деньги число переводов увеличилось, а количество сделок, вмещающихся в элемент цепи, меняется в небольшом диапазоне. При добыче криптовалюты в состав блоков включаются приоритетные сделки, имеющие больший размер комиссионных и объем. Небольшие операции формируют очередь и выжидают своего часа. По факту создания нового элемента блокчейн майнеры получают вознаграждение в размере 12,5 коина (на 1 декабря 2018 года).
В переводе фиксируются следующие сведения: номер кошелька отправителя, размер суммы, адрес бумажника получателя. Проверить информацию можно в любой момент. Требуется зайти на специальный сервис и ввести номер сделки. Система выдает сведения о времени и сумме перевода, размере комиссии и прочие данные.
Цепочка блокчейн отличается отсутствием единого центра управления. История операций одновременно находится на сотнях тысяч ПК пользователей и регулярно обновляется. Зачисление денег на бумажник происходит после валидации (проверки) операции другими пользователями (майнерами). Скорость перечисления средств зависит от многих параметров и достигает от 10 и более минут.
Для проведения транзакции в сети блокчейн требуются два ключа:
- Приватный — подтверждает принадлежность отправляемых монет владельцу, обеспечивает перевод денег.
- Общедоступный — показывает путь для зачисления монет. Это адрес кошелька, принимающего коины.
Транзакция имеет следующий алгоритм:
- Отправитель с private key направляет определенное число монет другому пользователю.
- Информация об операции идет в блокчейн.
- Созданный блок добавляется к общей цепочке с информацией о переводе.
- Участники сети проверяют валидность.
- Сделка подтверждается через 2–6 блоков (для цепи блокчейн).
- Деньги зачисляются на бумажник получателю.
При корректном указании сведений транзакция занимает минимум времени (от 20 минут), но так происходит не всегда.
От чего зависит время транзакции
Особенность сети blockchain исключает быстрое проведение операций в сети (вне зависимости от размера и количества сделок). Причина — необходимость проверки перевода на факт валидности. В цепи блокчейн Биткоина на создание одного блока идет 10–15 минут. В среднем элемент цепи признается системой через шесть блоков, поэтому оптимальное время сделки в блокчейн — около часа.
В сети Биткоинов есть ряд факторов, влияющих на транзакции Биткоин:
- Размер операции. При переводе небольшой суммы для проведения транзакции достаточно одного–двух блоков, поэтому сделка проходит быстрее. При большой загрузке блокчейн предпочтение майнеров отдается более крупным переводам средств, поэтому мелкие операции могут зависать.
- Волатильность. По графику курсовой цены легко сделать вывод о сильных колебаниях цены криптовалюты. Это свидетельствует о загруженности сети и большом числе игроков (инвесторов, трейдеров). На 30 ноября 2018 года среднее число операций в сутки достигало 250 тысяч. Участников рынка привлекают волатильные рынки, позволяющие заработать на разнице курсов. Во избежание зависаний транзакций рекомендуется проводить операции в цепи блокчейн в периоды флетов (затишья).
- Размер комиссии. Многие участники при проведении сделок в сети блокчейн экономят и устанавливают низкий комиссионный платеж. В результате транзакция зависает, ведь майнеры выбирают переводы с большим размером комиссии. Для быстрого перечисления монет рекомендуется ставить вознаграждение выше среднего. 30 ноября 2018 года средний комиссионный платеж составил 67 центов. От этого показателя стоит отталкиваться при выборе размера вознаграждения.
Если пожадничать и поставить низкий параметр, высока вероятность задержки транзакции. С другой стороны, не стоит завышать комиссию, ведь деньги улетят на ветер. Для поиска подходящего значения используется отслеживание оптимальной платы с помощью специальных сайтов.
По словам опытных участников блокчейн-сети, главная причина задержек — неправильный выбор комиссионного платежа и проведение транзакции в часы пик. Многие хранилища BTC предлагают рекомендуемый платеж, на который ориентируются при переводе монет.
Величина комиссии не зависит от размера переводимой суммы. В практике встречаются случаи, когда перевод одного BTC выгоднее транзакции с 0,01 BTC. Объем операции зависит от количества взаимосвязанных переводов. Так, Свете пришел один Биткоин от Евгения, Коли и Тараса. Далее эта монета идет Александру. В проведении сделки участвуют три адреса, поэтому увеличивается объем.
Факторы, влияющие на скорость операции, имеют косвенный характер. Главная проблема блокчейн Биткоина — небольшая величина блока (около одного мегабайта). В среднем транзакция занимает 500–600 байт. Один элемент цепочки вмещает около двух тысяч переводов. Время на создание одного блока — в среднем 10 минут. На 1 декабря 2018 года параметр немного выше — около 15 минут.
Место в блоке ограничено, поэтому с повышением числа запросов сеть не справляется с нагрузкой. Это приводит к задержкам в проведении транзакции. В 2017 году планировалось увеличение блока до 2 МБ с помощью технологии SegWit, но реализовать проект так и не удалось.
Как проверить транзакцию
Если пользователь отправил монеты другому человеку, а через час токены не дошли до адресата, лучше проверить транзакцию. Существуют специальные сервисы, позволяющие отследить путь перевода и получить необходимые сведения. Наиболее востребованные сервисы:
- Blockchain.com/ru/explorer — площадка с удобной навигацией и привлекательным дизайном. Для получения сведений требуется ввести адрес бумажника, номер транзакции, хеш или блок.
После указания номера сделки система выдает время ее получения, размер, награду за блок и объем перевода.
- Btc.com — не менее популярный сервис, позволяющий отследить транзакцию в цепочке блокчейн. Для получения сведений в правом верхнем окне указывается номер перевода, блок или адрес.
После внесения сведений сервис выдает размер блока, подтверждение, время проведения, размер транзакции, оплаченную комиссию и иные сведения.
- Blockexplorer.com — удобный проводник транзакций блокчейн с хорошим функционалом. Окно для ввода информации о переводе находится слева вверху.
Результат выводится в виде небольшой таблицы с ограниченным объемом данных. Пользователям доступны размер, время перевода и ряд других сведений.
- Etherscan.io — площадка для проверки транзакций в сети Эфириум. Сайт отличается большим функционалом, удобным отображением необходимых сведений, бесплатностью применения.
После ввода информации система выдает размер блока, отправителя и получателя, лимит и цену Газа, другие данные.
Указанных площадок достаточно для получения полной информации о транзакциях в блокчейне Биткоина, Эфириума и ряда других криптовалют.
Подтвержденные и неподтвержденные транзакции
Для понимания принципов работы сервисов важно знать разницу между двумя типами транзакций в сети блокчейн:
- Подтвержденные — переводы, включенные в блок после валидации майнерами.
- Неподтвержденные — операции, не включенные в новый элемент цепи (к примеру, из-за большой загрузки, низкой комиссии или некорректности).
Число подтверждений колеблется в диапазоне от одного до шести (в зависимости от числа отправляемых Биткоинов). От этого фактора зависит время проведения транзакции. К примеру, если при осуществлении транзакции требуется одно подтверждение, через десять минут деньги будут на кошельке получателя. Для шести блоков время операции занимает от часа и больше.
Неподтвержденная транзакция в блокчейн — сделка, находящаяся в подвешенном состоянии. Владелец отправил деньги получателю, но средства не дошли из-за отсутствия необходимого числа подтверждений. Распространенная причина — низкая комиссия на фоне повышенной загрузки сети. В такой ситуации есть два пути — ждать проведения транзакции или ускорить проведение операции.
Как ускорить транзакцию Биткоин — способы
Если проверка показала зависание операции в блокчейне, стоит протолкнуть транзакцию. Применяется ряд вариантов.
Двойное расходование
Распространенный вариант «проталкивания» транзакции в блокчейн — Double Spending. Суть методики заключается в повторном проведении операции, но с измененными параметрами. Пользователи увеличивают сумму или величину комиссии. Риск одновременного проведения обеих сделок исключен. При наличии двух операций система исполняет операцию с лучшими условиями. Единственная опасность — возможное разветвление сети, поэтому к использованию инструмента важно подойти с ответственностью.
Алгоритм опции двойного расходования (для кошелька Bitcoin Core):
- Проверка состояния транзакции. Надпись Unconfirmed transaction свидетельствует о зависании операции.
- Закрытие бумажника и указание в командной строчке слова zapwallettxes.
- Ожидание пуска кошелька. После загрузки бумажника незавершенные операции удаляются, но в сети блокчейн информация еще остается.
- Перечисление коинов с новыми параметрами (меняют сумму и размер комиссии). Во избежание случайного исполнения двух транзакций параметры должны быть максимально приближены друг к другу. К примеру, рекомендуется поставить аналогичный объем входа (сведения доступны в секции Input кошелька). Что касается суммы и комиссии, их желательно увеличить.
- Заполнение полей по принципу стандартного перевода.
- Завершение транзакции (проходит в более сжатые сроки).
Во многих случаях указанного метода достаточно для ускорения операции при зависании.
«Ребенок платит за родителя»
Следующий метод — CPFP. Недостаток заключается в необходимости оплаты и поддержке опции ограниченным числом пулов. Принцип ускорения — создание новой операции в блокчейн с использованием старого выхода. Монеты перечисляются по любому из адресов.
Пример ускорения с помощью Bitcoin Core:
- Переход к настройкам и изменению параметров.
- Вход в секцию кошелька и включение управления входами. Пользователь разрешает расходовать неподтвержденную сдачу. Если необходимые функции выставлены, ничего менять не требуется.
- Закрытие окна и отправка монет.
- Переход в секцию входов и выбор интересующей операции (легко распознать по количеству переданных коинов).
- Указание адреса получателя и подтверждение.
- Установка размера перевода возле команды, требующей вычета комиссии из суммы.
- Указание комиссионного платежа за один килобайт. Вычет комиссии осуществляется с двух операций.
Такой способ ускорения применяется редко из-за низкой поддержки пулами и дополнительных расходов на комиссию.
Изменение комиссии
Многие кошельки отражают рекомендуемый платеж и позволяют динамически менять показатель. При проведении транзакции хранилище показывает оптимальную плату с учетом текущей загрузки сети блокчейн. От величины комиссии зависит приоритетность операции. Если установлена высокая премия, а сделка зависает, это свидетельствует о проблемах с кошельком. Рекомендуется установить новый бумажник или обновить установленное хранилище.
Replace by fee (RBF)
Суть операции подразумевает увеличение комиссии для отправленной транзакции в блокчейн, но зависшей в сети. Отсутствие функции в кошельке приводит к отказу в приеме второго перевода. Суть заключается в добавлении комиссионного платежа для повышения скорости проведения транзакции.
Опасность — вероятность блокировки перевода из-за подозрения на двойное расходование монет. Включение функции RBF в кошельке исключает риск. Опция поддерживается многими бумажниками: Green Address, Electrum и так далее. Для применения требуется перейти в хранилище и подключить функцию.
Прочие методы
Для ускорения транзакции в цепи блокчейн можно использовать еще ряд путей:
- Использование специальных площадок, обеспечивающих более быстрое проведение операции. Как вариант — Coinbase: пользователи проводят переводы в сети почти без задержек по времени.
- Применение мультиподписи. При переводов часто применяется мультиподпись, обеспечивающая быстрое проведение операции. Инструмент применяется многими бумажниками, к примеру, Green Address.
- Использование сайтов, имеющих максимальный уровень доверия. Особенность площадок заключается в раскрытии сведений об участниках, поэтому подтверждение в блокчейн проходит быстрее. Недостаток — нежелание пользователей раскрывать личность.
- Увеличение размера операции. При большой загрузке сети пользователи предпочитают сделки с большим числом коинов. Повышение размера транзакции способствует ускорению перевода.
- Откат. Неподтвержденную сделку можно вернуть, к примеру, в бумажнике Bitcoin Core.
Способов ускорить транзакцию блокчейн достаточно, но из приведенных вариантов наиболее популярные пути — RBF и Double Spending.
Комиссии за транзакции в сети
Преимущество блокчейна Bitcoin заключается в возможности установки комиссии. Пользователь ориентируется на текущую загрузку и выставляет подходящий параметр. От размера установленной премии зависит скорость проведения операции.
При выборе размера комиссии можно ориентироваться на ряд сервисов:
- Bitinfocharts.com/ru/comparison/bitcoin-transactionfees.html. Указывается средний размер премии за прошедшие сутки. На 30 ноября 2018 года показатель равен 67 центам. Это средний параметр, поэтому ориентироваться на число не очень удобно.
- Btc.com/stats/unconfirmed-tx — более продвинутая площадка, отражающая рекомендуемую комиссию на текущий момент и с учетом текущей загрузки блокчейн.
В идеале рекомендуется оценить оба параметра, а после принять оптимальное решение по размеру премии для майнеров.
Какую комиссию ставить во избежание зависания транзакции
Более удобный сервис для определения размера комиссионного платежа — btc.com/stats/unconfirmed-tx.
На момент написания статьи (1 декабря 2018 года) система рекомендует комиссию в размере 0,0005 Биткоина. Чтобы определить время проведения транзакции в блокчейн, стоит опуститься ниже и посмотреть на приведенную таблицу.
Легко сделать вывод, сколько по времени занимает транзакция в сети при выставлении того или иного комиссионного платежа. Полученной информации достаточно для принятия решения об оптимальной комиссии в блокчейн на момент совершения перевода.
Во избежание зависания транзакций стоит обратить внимание на график (Mempool Size). По информации легко сделать вывод о загрузке сети. Во избежание задержек лучше проводить перевод в периоды минимального числа сделок.
Как проводить анонимные транзакции в сети Bitcoin
Многих пользователей не устраивает уровень анонимности, которую обеспечивает криптовалютная сеть Bitcoin. В такой ситуации можно использовать дополнительные методы, обеспечивающие лучшую конфиденциальность. Популярные варианты:
- Blender.io — сервис, обеспечивающий полную анонимность транзакций с Биткоином в сети блокчейн. Плюсы площадки: низкая комиссия (от 0,5 до 3 %), отсутствие JS, перемешивание с помощью обновленных алгоритмов, удобный и доступный дизайн. Участник сети вправе самостоятельно поставить сумму и время проведения транзакции. Пользователям доступен код микширования, гарантирующий отсутствие смешивания старых и новых операций. Для анонимизации перевода требуется ввести адрес получателя монет, задержку микширования, комиссию и код. После можно приступать к смешиванию.
- Вarkwallet.is — адрес, по которому доступен специальный бумажник, обеспечивающий конфиденциальность проведения операций в сети блокчейн. Разработчиками выступают А. Тааки и К. Уилсон. Особенность заключается в улучшенной защите идентификаторов владельцев хранилищ. В процессе проведения операции система комбинирует сведения с синхронных переводов разных участников. Понять, какой перевод и к кому относится, почти нереально. Впоследствии разработчики планируют объединить большее число участников для более эффективного шифрования.
Плюс сервиса — дополнительная защита и для получателей. Речь идет о stels-адресах, направляемых на email получателя. После получения определенных сведений на почтовый ящик человек сможет получить транзакцию.
- Zerocoin.org — проект, решающий проблему со слабой конфиденциальностью блокчейна Биткоин. Суть сервиса заключается в шифровании сведений. Площадка обеспечивает максимальный уровень анонимности (даже больший, чем другие варианты). Первоначально проект работал в виде дополнения к Биткоину, но широкой популярности не получил. Сегодня применяется только для обеспечения анонимности платежей.
- Интеграция с Тором. Для шифрования транзакций в блокчейн все чаще применяется Тор. Это мощный инструмент, применяемый многими сервисами, в том числе blockchain.com. Сегодня появляются новые приложения, интегрируемые в браузер, обеспечивающий дополнительную анонимность. Сегодня интеграция доступна для бумажников Hive или Multibit.
Судя по прогнозу на 2019 год, технология блокчейн имеет хорошие перспективы. Только за 2018 год появилось большое количество компаний, осознавших плюсы и возможности новой технологии. Каждый месяц появляются новые ICO на блокчейн, которые проводят AirDrop, привлекая пользователей к проектам. Что касается транзакций, в случае с Биткоин проблема сохраняется, а разработчики принимают усилия для решения. Пока участники вынуждены подстраиваться под текущие требования, проверять транзакции и выставлять необходимую комиссию в системе блокчейн. Приведенные рекомендации помогают избежать или устранить имеющиеся задержки.
Как сэкономить на комиссии и времени при транзакциях эфира (ETH)
Когда вы переводите криптовалюту с одного адреса на другой, вам необходимо заплатить комиссию за перевод. С такими монетами, как биткоин, комиссия оплачивается в зависимости от объёма данных, которые должны быть включены в блок транзакции, это единая комиссия за каждый килобайт данных, которые вы контролируете. Увеличение комиссии может привести к более быстрому включению вашей транзакции в блок и к более быстрой её обработке, чтобы монеты перешли на новый адрес. Уменьшение комиссии с рекомендуемой суммы обычно приводит к увеличению времени подтверждения транзакции, но если ваша комиссия слишком мала, транзакция никогда не произойдет. Если комиссия слишком низкая и транзакция занимает слишком много времени подтверждения, то вы можете попытаться отменить неподтвержденные биткоин транзакции, например, если использовали локальный кошелек Bitcoin Core.
В эфириуме (ETH) всё работает немного по-другому, хотя общий принцип оплаты комиссии за транзакции практически не изменился. Когда вы отправляете токены, то взаимодействуете со смарт-контрактами, а далее вам нужно заплатить комиссию в газ, хотя комиссия в сети эфириум фактически оплачивается любом случае. В эфириуме вы всегда платите комиссию, даже если ваше взаимодействие с блокчейном не увенчалось успехом или, наоборот, была успешной. Вот пример: если вы отправляете эфир на смарт-контракт и делаете это с недостаточным количеством газа, то монеты не будут отправляться, но вам все равно придется заплатить комиссию, и она будет вычитаться из вашего баланса. Для сравнения — у биткоина неудачная транзакция не приведёт к тому, что вам повторно нужно платить комиссию за транзакции.
Общая сумма транзакции (TX), которую вы должны заплатить в эфириуме, рассчитывается путем умножения газового лимита (Gas Limit) на цену газа (Gas Price), которую вы хотите использовать для транзакции, и вы обычно контролируете эти два значения. Но в большинстве случаев вы меняете газовый лимит — максимальный объём газа, который вы готовы заплатить за транзакцию. Обычно вы устанавливаете его выше, поскольку будете платить только необходимую сумму, а не максимум, который вы заявили. Второй компонент, Gas Price обычно устанавливается в размере 21 Gwei для обеспечения быстрой транзакции, но иногда это может быть слишком много или слишком мало. Когда работает большое ICO или даже происходят несколько мелких, или просто много транзакций блокчейне эфириума, то вам может потребоваться увеличить цену на газ, чтобы не ожидать несколько часов до завершения вашей транзакции. Однако в то же время, когда сеть не загружена, вы можете значительно снизить цену газа до уровня, при котором вы всё равно получите довольно быструю транзакцию при гораздо более низкой стоимости. Помните, что общая комиссия за транзакцию оплачивается в эфире, когда вы умножаете лимит газа на цену газа, и с вас возьмут только фактически использованный газ, а не весь максимум, который вы готовы потратить.
Поэтому очень важно иметь возможность легко отслеживать, что происходит в настоящее время в сети эфириума, и какова минимальная цена на газ, которую вы можете использовать для совершения относительно быстрой транзакции. Например, популярный сервис MyEtherWallet ставит цену на газ по умолчанию в 21 Gwei, и большинство людей не меняет её, так как она чаще всего обеспечивает относительно быстрое выполнение транзакций. Ситуацию можно проверить с помощью такой услуги, как ETH Gas Station. Если вы приготовились совершить транзакцию в сети эфириума, вы можете получить более полное представление о том, какую цену газа использовать, чтобы получить удовлетворительные результаты.
Нужно помнить, что от цены газа, а не газового лимита, зависит скорость выполнения транзакции. Газовый лимит нужен для того, чтобы убедиться, что вы не израсходовали больше, чем вы готовы платить. Окончательная комиссия за транзакция (Gas Limit * Gas Price) не гарантирует быстрое время её обработки при очень высоком газовом лимите, и важным фактором для более быстрой обработки вашей транзакции является цена газа — при условии, что у вас достаточно газового лимита для взаимодействия с блокчейном эфириума. Обратите внимание, что есть моменты, когда вы можете легко обойтись 1 Gwei цены газа и транзакция может быть выполнена за несколько минут. Хотя в трудные времена вам часто приходится использовать от 20 до 50 Gwei газовой цены. Но если — выше, то это обычно необоснованно, и рекомендуется немного подождать, пока ситуация успокоится. Поэтому будьте осторожны и не тратьте больше средств, чем вам нужно, и если быстрая проверка на полезном веб-сайте поможет вам сэкономить некоторое количество эфира, то почему бы не воспользоваться.
Хотите больше новостей? Facebook. Быстрее всех? Telegram и Twitter. Подписывайтесь!
Как специалистам ISE удалось обраружить адрес «блокчейн-бандита» на 44 747 ETH
Как мы сообщали ранее, спцециалисты по кибербезопасности из компании Independent Security Evaluators (ISE) обнаружили 732 уязвимых закрытых ключа, которые подписали 49 060 транзакций в блокчейне эфириума. В ходе исследования было обнаружено, что средства с этих уязвимых адресов были отправлены на адрес, принадлежащей хакеру (или группе хакеров), которые проводят активную кампанию по компрометации закрытых ключей с целью получения этих средств. Ниже более подробная историю того, как исследователям удалось обраружить «блокчейн-бандита» (они его так назвали).
Блокчейны — это открытые реестры транзакций, верифицируемые с помощью открытых и закрытых ключей для подтверждения права владения данными транзакций. В настоящее время в блокчейне эфириума есть 345 млн. транзакций, которые были созданы 47 млн. пар ключей.
Вероятность генерации закрытого ключа, уже используемого в блокчейне, составляет около 1 на 2 в 256 степени (то есть на практике невозможно). Чтобы покрыть только 1% возможных комбинаций ключей — даже если использовать вычислительные ресурсы, позволяющие генерировать 100 триллионов ключей в секунду — потребовалось бы несколько лет. Однако вместо попыток полного перебора закрытых ключей специалисты ISE разработали способы обнаружения ключей, которые могли быть сгенерированы с уязвимостями в коде и/или генераторе случайных чисел. В следующих разделах описано, как генерируется адреса в эфириуме, а также подход ISE к обнаружению закрытых ключей, которые были сгенерированы c этими уязвимостями.
Закрытые ключи эфириума
Проект эфириум использует криптографию на основе эллиптических кривых для генерации пары открытых/закрытых ключей. 256-битный закрытый ключ используется для вычисления точки на кривой secp256k1 для генерации открытого ключа. Затем открытый ключ хешируется с помощью алгоритма keccak256. Этот хеш усекается 160 бит, чтобы получить публичный адрес. Адрес эфириума не может быть реверсирован или использован каким-либо другим образом для получения закрытого ключа, который использовался для его генерации.
Учитывая случайно сгенерированный закрытый ключ, то есть в пределах допустимого диапазона от одного до максимального значения, определенного кривой secp256k1, мы можем получить открытый адрес, взяв самые правые 160 бит хеша открытого ключа keccack256. На рисунке ниже показан процесс для получения адреса эфириума из случайно сгенерированного 256-битного закрытого ключа.
Зная этот алгоритм, цель нашего исследования состояла в том, чтобы найти адреса эфириума, которые могли быть сгенерированы уязвимой реализацией алгоритма, или которые были верно получены, но из неслучайных закрытых ключей.
Блокчейн эфириума позволяет любому запрашивать адрес для получения информации о нём. Это делается путем запроса в ноду эфириума, которая может быть запущена локально или удаленно. Несколько онлайн-сервисов предоставляют базовые данные о адресах — к примеру, Etherscan, который может использоваться для запроса публичного адреса эфириума из приведенного выше примера: A99FDD90FF61DD08CF049155D18E086F7806641B. Можно найти этот адрес на Etherscan и увидеть, что адрес получил 0 транзакций.
Учитывая, что почти 50 млн. публичных адресов эфириума подписывали транзакции, вполне вероятно, что мы можем столкнуться со слабыми или неслучайными ключами из-за нескольких возможных факторов. Одним из наиболее очевидных является усечение ключа. То есть, когда генерируется случайный 256-битный закрытый ключ, но используется только небольшое подмножество из-за кодирования/компилятора/фреймворка или других неизвестных ошибок. Возьмем, к примеру, 256-битный закрытый ключ со значением:
- 0x47579DA2BEA463533DBFAD6FCF8E90876C2FE9760DC1162ACC4059EE37BDDB5C
Если обрезать до 32 бит, получится следующий ключ:
- 0x0000000000000000000000000000000000000000000000000000000037BDDB5C
В эксперименте мы выбрали закрытый ключ, равный 1, только по той причине, что он является нижней границей возможного закрытого ключа для secp256k1. Таким образом, мы используем закрытый ключ
- 0x0000000000000000000000000000000000000000000000000000000000000001
для получения публичного адреса 0x7e5f4552091a69125d5dfcb7b8c2659029395bdf.
Как говорилось ранее, крайне маловероятно то, что два пользователя эфириума сгенерируют один и тот же закрытый ключ — при условии, что по крайней мере один пользователь генерирует его случайным образом. Не имеет значения, исследуем ли мы ключи полным перебором, начиная от нижних или верхних значений, или ключей, которые используют цифры числа «пи», случайно сгенерированных и т. д. — в любом случае не должно быть совпадений со случайно сгенерированным ключом другого пользователя эфириума.
Мы обнаружили, что адрес, полученный из закрытого ключа 0x01, имеет 679 транзакций (хотя в настоящее время на этом адресе эфир не хранится). Мы можем предположить, что закрытый ключ 0x01 было выбран специально или из-за ошибки. Следующие разделы детализируют наш поиск, чтобы понять и изучить, как широко распространено создание слабых ключей в блокчейне эфириума.
Метод исследования
Целью нашего исследования был поиск адресов эфириума, основанных на использовании слабых ключей, и изучение того, как эти адреса используются. Хотя маловероятно, что слабый ключ когда-либо будет сгенерирован при использовании правильного алгоритма, мы предположили, что слабые закрытые ключи могут генерироваться из-за ошибок кода или ошибок операционной системы, устройства и среды выполнения, и что эти проблемы общие. Помимо усечения ключей, есть несколько других распространенных ошибок, которые могут ослабить 256-битные ключи:
- Ошибки логики кода;
- Ошибки энтропии;
- Случайные ошибки устройства;
- Плохо обработанные исключения;
- Ошибки памяти;
- Повреждение памяти;
- Компрометация вредоносным ПО.
Конечно же, из-за ограниченных вычислительных ресурсов не представляется возможным перебрать все ключи эфириума, поэтому мы сосредоточились на более достижимых целях: переборе ключей, которые появляются в 32-битном подмножестве 256-битного закрытого ключа. Это 4 294 967 295 закрытых ключей, для которых нам потребуется вычислить соответствующий публичный адрес эфириума и найти его в блокчейне.
Для массового сканирования потенциальных адресов эфириума нецелесообразно (и даже неправильно с точки зрения использования ресурсов) делать запросы в такие онлайн-сервисы как Etherscan. Вместо этого мы сгенерировали хеш-карту всех публичных адресов эфириума. На локальном ноутбуке среднего класса это позволяет генерировать примерно 15 000 ключей в секунду.
Мы сфокусировались на восьми 32-битных подмножествах в 256-битном пространстве ключей, чтобы найти используемые адреса эфириума, которые были получены из слабых закрытых ключей. Чтобы проиллюстрировать области, которые мы отсканировали, на иллюстрации ниже показано каждое подмножество, которое мы определили.
Группа А
0000000000000000000000000000000000000000000000000000000000000001 до
00000000000000000000000000000000000000000000000000000000FFFFFFFF
Группа Б
0000000000000000000000000000000000000000000000000000000100000000 до
000000000000000000000000000000000000000000000000FFFFFFFF00000000
Группа С
0000000000000000000000000000000000000000000000010000000000000000 до
0000000000000000000000000000000000000000FFFFFFFF0000000000000000
Группа D
0000000000000000000000000000000000000001000000000000000000000000 до
00000000000000000000000000000000FFFFFFFF000000000000000000000000
Группа Е
0000000000000000000000000000000100000000000000000000000000000000 до
000000000000000000000000FFFFFFFF00000000000000000000000000000000
Группа F
0000000000000000000000010000000000000000000000000000000000000000 до
0000000000000000FFFFFFFF0000000000000000000000000000000000000000
Группа G
0000000000000000000000000000000000000000000000000000000000000000 до
00000000FFFFFFFF000000000000000000000000000000000000000000000000
Группа Н
0000000100000000000000000000000000000000000000000000000000000000 до FFFFFFFF00000000000000000000000000000000000000000000000000000000
Вышеуказанные диапазоны пространства ключей, хотя и составляют очень малую часть пространства 256-битных ключей, представляют собой некоторые области, в которых могут существовать слабые закрытые ключи из-за ошибок или других факторов, влияющих на случайность 256-битного ключа. В следующем разделе представлены наши результаты для каждого из восьми диапазонов.
Результаты
Мы обнаружили 49 060 транзакций на общую сумму 32 ETH, распределенных по 732 открытым ключам, для которых мы нашли закрытый ключ. Текущее балансы по этим ключам составляли 0 ETH, однако эти балансы непостоянны, поскольку на адреса периодически поступает эфир.
Большинство ключей было обнаружено в группе A — 464 секретных ключа. Общая стоимость транзакций с использованием этих слабых закрытых ключей составила 28,9456 ETH (при текущем балансе 0 ETH). Интересно, что один ключ в группе B имел исходящую транзакцию на адрес, который в настоящее время содержит 44 744 ETH (подробнее об этом ниже).
К счастью, использование слабых закрытых ключей не является широко распространенной проблемой. Однако было удивительно встретить 732 активных ключа, к которым мы могли получить доступ. Также нас удивил большой совокупный объем транзакций.
Общее время вычислений для сканирования 8 групп на 256-битном пространстве ключей через 32-битные окна составило около 128 часов работы ЦП на группу (всего 1024 часа). К счастью, эту задачу можно выполнять параллельно, и мы смогли разделить все 8 групп и отсканировать их за 8 часов. Таким образом, можно проводить периодические проверки для выявления новых слабых закрытых ключей.
Blockchainbandit
Как мы упоминали выше, при сканировании была обнаружена исходящая транзакция на адрес 0x957cd4ff9b3894fc78b5134a8dc72b032ffbc464. Мы его называем «блокчейн-бандит» (blockchainbandit). После беглого изучения этой транзакции мы обнаружили, что адрес назначения принадлежит какому-либо человеку или группе, которая проводит активные кампании для компрометации/сбора закрытых ключей — сейчас на балансе находится 44 747 ETH ($7 400 000). Блокчейн-бандиту удалось собрать столько эфира за счёт 5487 транзакций.
Мы хотели посмотреть, как быстро блокчейн-бандит забирает средства, поэтому направили $1 в эфире на адрес, закрытый ключ которого он должен знать — 0x0000000000000000000000000000000000000000000000000a00000000000000, который представлен следующим публичным адресом: 0x4c636a08fdf3692a9bca111e8a7f4a0e28eb4457. Бандит мгновенно отправил транзакцию с этого адреса на свой.
Проводя дополнительные исследования с целью понять, почему и как генерируются эти слабые ключи, мы также столкнулись с проблемой в кошельке Parity.
Кошелёк Parity с пустым сидом
Адрес 0x00a329c0648769a73afac7f9381e08fb43dbea72 получен из закрытого ключа 0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7, который генерируется их пустого сида (“ ”) при использовании кошелька Parity. По этому адресу было совершено 13 409 транзакций и передано 5215,586 ETH. Этот адрес очень активый — на приведенном ниже рисунке показано ежемесячное количество транзакций (адрес впервые был использован в блокчейне эфириума в марте 2017 года):
Заключение
В связи с растущей популярностью криптовалют в сочетании с довольно успешными хакерскими кампаниями мы вынуждены сделать вывод, что количество целевых атак на любые системы, работающие с закрытыми ключами, в будущем будет только расти. Разработчики ПО, которые взаимодействуют с очень ценными закрытыми ключами, должны знать о всех принципах всесторонней защиты от существующих угроз и использовать инновационные меры для противодействия угрозам в будущем.
Любая реализация, которая использует генерацию открытого ключа на основе ECDSA (Bitcoin, Waves, Ripple, ZCash, Monero и др.) или аналогичных криптографических алгоритмов, должна быть проверена на наличие ошибок генерации ключа.
транзакций | ethereum.org
Транзакции — это криптографически подписанные инструкции от учетных записей. Учетная запись инициирует транзакцию для обновления состояния сети Ethereum. Самая простая транзакция — перевод ETH с одной учетной записи на другую.
Чтобы помочь вам лучше понять эту страницу, мы рекомендуем сначала прочитать Учетные записи и наше введение в Ethereum.
Транзакция Ethereum относится к действию, инициированному внешней учетной записью, другими словами, учетной записью, управляемой человеком, а не контрактом.Например, если Боб отправляет Алисе 1 ETH, счет Боба должен быть дебетован, а счет Алисы — кредитован. Это действие по изменению состояния происходит внутри транзакции.
Транзакции, которые изменяют состояние EVM, должны транслироваться по всей сети. Любой узел может транслировать запрос на выполнение транзакции в EVM; после этого майнер выполнит транзакцию и распространит полученное изменение состояния на остальную часть сети.
Транзакции требуют комиссии и должны быть добыты, чтобы стать действительными.Чтобы упростить этот обзор, мы рассмотрим плату за газ и майнинг в другом месте.
Отправленная транзакция включает в себя следующую информацию:
-
получатель
— адрес получения (если внешний аккаунт, транзакция будет передавать стоимость. Если контрактный счет, транзакция выполнит код контракта) -
подпись
— идентификатор отправителя. Он генерируется, когда закрытый ключ отправителя подписывает транзакцию и подтверждает, что отправитель авторизовал эту транзакцию -
значение
— сумма ETH для перевода от отправителя к получателю (в WEI, деноминация ETH) -
данные
— необязательно поле для включения произвольных данных -
gasLimit
— максимальное количество единиц газа, которое может быть использовано транзакцией.Единицы газа представляют собой этапы вычислений. -
gasPrice
— комиссия, которую отправитель платит за единицу газа
Gas — это ссылка на вычисления, необходимые для обработки транзакции майнером. Пользователи должны платить за это вычисление. gasLimit
и gasPrice
определяют максимальную комиссию за транзакцию, выплачиваемую майнеру. Подробнее о газе.
Объект транзакции будет выглядеть примерно так:
1 {
2 от: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
3 до: "0xac03bb73baff3a9d20002000ec03bb3b3a9d4000e1085301000" 200 ",
6 nonce:" 0 ",
7 значение:" 10000000000 ",
8}
9
Копировать
Но объект транзакции должен быть подписан с использованием закрытого ключа отправителя.Это доказывает, что транзакция могла исходить только от отправителя и не была отправлена обманным путем.
Клиент Ethereum, такой как Geth, будет обрабатывать этот процесс подписи.
Пример вызова JSON-RPC:
1 {
2 "id": 2,
3 "jsonrpc": "2.0",
4 "method": "account_signTransaction",
5 "params" : [
6 {
7 "от": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
8 "газ": "0x55555",
9 "gasPrice": "0x12d342",
"входная цена": "0x12d342",11 «nonce»: «0x0»,
12 «to»: «0x07a565b7ed7d7a678680a4c162885bedbb695fe0»,
13 «значение»: «0x1234»
14}
0002 15] 160003Пример ответа:
Параметры командной строки | Go Ethereum
$ geth --help НАЗВАНИЕ: geth - интерфейс командной строки go-ethereum Авторские права 2013-2019 Авторы go-ethereum ПРИМЕНЕНИЕ: geth [параметры] команда [параметры команды] [аргументы...] ВЕРСИЯ: 1.9.19-стабильный-3e064192 КОМАНДЫ: аккаунт Управление аккаунтами прикрепить Запустить интерактивную среду JavaScript (подключиться к узлу) console Запустите интерактивную среду JavaScript copydb Создать локальную цепочку из целевой папки chaindata дамп Дамп определенного блока из хранилища dumpconfig Показать значения конфигурации dumpgenesis Сохраняет конфигурацию JSON блока генезиса в стандартный вывод экспорт Экспорт блокчейна в файл export-preimages Экспорт базы данных прообразов в поток RLP import Импортировать файл блокчейна import-preimages Импортировать базу данных прообразов из потока RLP init Bootstrap и инициализируйте новый блок генезиса inspect Проверить размер хранилища для каждого типа данных в базе данных js Выполнить указанные файлы JavaScript лицензия Показать информацию о лицензии makecache Создать кеш проверки ethash (для тестирования) makedag Создать DAG для майнинга ethash (для тестирования) удаленоb Удалить блокчейн и базы данных состояний retesteth Запускает geth в режиме retesteth show-deprecated-flags Показать устаревшие флаги версия Распечатать номера версий кошелек Управление предпродажными кошельками Ethereum help, h Показывает список команд или справку для одной команды ОПЦИИ ETHEREUM: --config значение файл конфигурации TOML --datadir value Каталог данных для баз данных и хранилища ключей (по умолчанию: "~ /.ethereum ") --datadir.ancient value Каталог данных для древних сегментов цепи (по умолчанию = внутри chaindata) --keystore значение Каталог для хранилища ключей (по умолчанию = внутри datadir) --nousb Отключает мониторинг аппаратных USB-кошельков и управление ими. --pcscdpath value Путь к файлу сокета демона смарт-карты (pcscd) (по умолчанию: "/run/pcscd/pcscd.comm") --networkid значение Идентификатор сети (целое число, 1 = Frontier, 3 = Ropsten, 4 = Rinkeby, 5 = Görli) (по умолчанию: 1) --goerli Görli network: предварительно настроенная тестовая сеть с подтверждением полномочий --rinkeby Rinkeby network: предварительно настроенная тестовая сеть для проверки полномочий --yolov1 Сеть YOLOv1: предварительно настроенная краткосрочная тестовая сеть с подтверждением полномочий.--ropsten Ropsten network: предварительно настроенная тестовая сеть для проверки работоспособности --syncmode значение Режим синхронизации цепочки блоков («быстрый», «полный» или «легкий») (по умолчанию: быстрый) --exitwhensynced Выход после завершения синхронизации блоков --gcmode значение Режим сборки мусора блокчейна ("полный", "архивный") (по умолчанию: "полный") --txlookuplimit value Число последних блоков для поддержки индексации транзакций по хешу (по умолчанию = индексировать все блоки) (по умолчанию: 0) --ethstats value URL отчета службы ethstats (nodename: secret @ host: port) --identity value Имя настраиваемого узла --lightkdf Уменьшить использование ОЗУ и ЦП при выводе ключей за счет силы KDF --whitelist значение Сопоставление номеров блоков с хешем, разделенных запятыми (
= ) ЛЕГКИЕ ВАРИАНТЫ КЛИЕНТА: --легкий.serve value Максимальный процент времени, разрешенный для обслуживания запросов LES (многопоточная обработка допускает значения более 100) (по умолчанию: 0) --light.ingress значение Ограничение входящей полосы пропускания для обслуживания легких клиентов (килобайт / сек, 0 = без ограничений) (по умолчанию: 0) --light.egress value Типы счетов, газ и транзакции - документация Ethereum Homestead 0.1
Это различие может быть устранено в Serenity.
Внешние счета (EOA)
Счет под внешним контролем
- имеет эфирный баланс,
- может отправлять транзакции (передача эфира или запускать код контракта),
- управляется приватными ключами,
- не имеет связанного кода.
Контрактные счета
Договор
- имеет эфирный баланс,
- имеет связанный код
- запускается транзакциями или сообщениями (вызовами), полученными от других контрактов.
- при исполнении
- выполнять операции произвольной сложности (полнота по Тьюрингу)
- управлять собственным постоянным хранилищем, т.е. может иметь собственное постоянное состояние
- можно позвонить по другим договорам
Выполнение кода
Все действия в цепочке блоков Ethereum запускаются транзакциями, запущенными из внешних аккаунтов.Каждый раз, когда контрактный счет получает транзакцию, ее код выполняется в соответствии с инструкциями входных параметров, отправленных как часть транзакции. Код контракта выполняется виртуальной машиной Ethereum на каждом узле, участвующем в сети, как часть проверки новых блоков.
Это выполнение должно быть полностью детерминированным, его единственный контекст - это позиция блока в цепочке блоков и все доступные данные.
Блоки в цепочке блоков представляют собой единицы времени, сама цепочка блоков является временным измерением и представляет всю историю состояний в дискретные моменты времени, обозначенные блоками в цепочке.
Все балансы и стоимости эфира выражены в единицах wei: 1 эфир равен 1e18 wei.
Примечание
«Контракты» в Ethereum не следует рассматривать как нечто, что должно «выполняться» или «выполняться»; скорее, они больше похожи на «автономных агентов», которые живут внутри исполнительной среды Ethereum, всегда выполняя определенный фрагмент кода, когда «высовываются» сообщением или транзакцией, и имеют прямой контроль над своим собственным эфирным балансом и собственным ключом / хранилище значений для хранения их постоянного состояния.
Ethereum: как рассчитываются транзакционные издержки
Эта статья о транзакционных издержках Ethereum изначально была опубликована на веб-сайте Bruno's Bitfalls и воспроизводится здесь с разрешения.
Комиссия за отправку биткойн-транзакции пропорциональна ее размеру. Чем больше входов и выходов, тем дороже. Добавьте к этому фактор незавершенных транзакций, и комиссии за транзакции могут резко возрасти только на основе этих двух факторов.
Рекомендуется прочитать следующие материалы, прежде чем углубляться в остальную часть этого сообщения, чтобы лучше понимать терминологию, которую мы будем упоминать.
Также могут пригодиться базовые знания терминов программирования (переменных, циклов).
С Ethereum, учитывая, что мы говорим о языке программирования в протоколе, можно быть очень требовательным с точки зрения вычислений с очень небольшим количеством текста или кода (что было бы очень дешево в версии BTC). Давайте посмотрим на этот цикл, например:
при этом (i ++ <1000) {
j = j + i;
}
Этот цикл означает, что «пока i
меньше 1000, увеличивайте его на 1, а затем просуммируйте i
и j
и запишите результат в j
, затем повторите все снова.Этот цикл будет выполняться 1000 раз, если i
равен 0, или больше, если это отрицательное число.
Чтобы справедливо оплатить эти вычислительные затраты - поскольку они должны выполняться на всех машинах майнеров одновременно, и они тратят на это свои ресурсы и время, была введена концепция gas . Газ используется для оплаты выполнения этих так называемых смарт-контрактов (программ Ethereum) внутри EVM. Например, i
+ j
выше - это операция суммирования, которая стоит 3 единицы газа при каждом ее выполнении, поэтому 3000 единиц газа при выполнении 1000 раз.
Чтобы правильно объяснить gas , давайте сначала рассмотрим EVM .
EVM
EVM означает Виртуальная машина Ethereum . Но что такое виртуальная машина?
Виртуальная машина
Виртуальная машина - это программа, работающая на определенном компьютере, которая содержит другую операционную систему, полностью инкапсулированную внутри основного. Например, виртуальная машина позволяет запускать Windows внутри Linux, Linux внутри Windows, Windows на macOS, как на изображении ниже, или любую другую комбинацию.
Мы используем виртуальные машины, чтобы отделить среду, в которой мы повседневно пользуемся компьютером, от среды, в которой мы работаем или программируем. Это позволяет нам сдерживать вирусы (у них нет возможности проникнуть в виртуальную машину и добраться до основной операционной системы. ), помогает предотвратить сбои нашей основной операционной системы из-за бесконечных циклов и предотвращает повреждения жесткого диска, такие как печально известная программа-вымогатель WannaCry. Кроме того, виртуальные машины позволяют нам использовать игры для Windows, например, в Linux или позволяют легко программировать в разных версиях среды одного и того же языка программирования, не смешивая их.
EVM
Виртуальная машина Ethereum встроена в программное обеспечение, работающее по протоколу Ethereum. Он выполняет смарт-контракты - программы Ethereum, написанные на языке Solidity. EVM содержится в полных узлах сети Ethereum, внутри которых он выполняет эти программы, написанные пользователем Ethereum.
Любой майнер Ethereum одновременно выполняет код смарт-контракта. Это означает, что программы Ethereum (dapps - децентрализованные приложения) выполняются на всех компьютерах одновременно (децентрализованно).
Однако выполнение этих программ не является бесплатным. Майнеры тратят на это свое собственное электричество, время и оборудование. Чтобы заплатить им за их усилия по выполнению компьютерных инструкций (например, «сохранить значение 5 в переменной X»), была введена концепция gas .
Газ, эфир и GWei
Газ - это единица стоимости для конкретной операции, которую компьютер должен выполнить, и он выполняет эту инструкцию, когда мы транслируем транзакцию, содержащую программу Ethereum, для запуска dapp .Например, сложение двух чисел стоит 3 газа. Их умножение стоит 5 единиц газа. Хранение 256-битного слова в блокчейне стоит 20000 единиц газа, а это означает, что хранение 1 КБ данных стоит 640000 единиц газа.
Так же, как в долларах США есть центы, у эфира также есть своя основная единица: вэй. Если взять за базовую единицу эфира вэй, то получится следующая таблица определений:
шт. | вэй |
---|---|
вес | 1 |
квэй / ада / фемтотетер | 1.000 |
mwei / баббидж / пикоэфир | 1.000.000 |
gwei / шеннон / наноэфир / нано | 1.000.000.000 |
сабо / микроэфир / микро | 1.000.000.000.000 |
финни / миллиэры / милли | 1.000.000.000.000.000 |
эфир | 1.000.000.000.000.000.000 |
Совет: используйте этот конвертер для преобразования единиц эфира.
Согласно этому информационному сайту, текущая средняя цена на газ составляет 10 Гвэй (10 гигавэй). Поскольку 1 Гвэй составляет одну миллиардную часть эфира, вышеупомянутая стоимость хранения слова размером 1 Кбайт составляет 640000 * 10, что составляет 6,4 миллиона Гвэй. Это составляет 0,0064 eth, что при цене 450 долларов за эфир составляет около 2,88 доллара.
Текст от начала приведенной выше таблицы до >> этот конкретный маркер <<
составляет около 1 КБ. Таким образом, хранение этого небольшого фрагмента текста в блокчейне на самом деле стоит 2 доллара.88. Однако это всего лишь стоимость хранения! В нашем смарт-контракте также может быть некоторая логика, такая как суммирование или умножение, а затем сохранение чисел или триггеры, которые активируются на конкретном добытом блоке и т. Д. Очевидно, хранение данных в самой цепочке блоков невероятно дорого. Хранение лучше использовать в BigchainDB или IPFS, тогда как блокчейн - лучшее решение для глобальной обработки и проверки этих данных.
Почему газ?
Почему платить напрямую за газ, а не эфир?
Все цены на газ для всех возможных операций, которые может выполнять EVM, жестко запрограммированы в протоколе Ethereum и в клиентах (программах), которые мы подключаемся к нему, например Geth, Eth, Parity и т. Д.Если код перечислял их в эфире, то нам приходилось бы обновлять код каждый раз, когда значение эфира колебалось, чтобы поддерживать стоимость вычислительных усилий в нормальном диапазоне и поддерживать работоспособность системы, что, очевидно, неприемлемо.
Добавляя слой gas к затратам и оплачивая газ с помощью GWei, мы получаем возможность изменить количество газа, которое будет использоваться в транзакции, и сумму денег для оплаты. Это полностью под нашим контролем, без нарушения баланса системы.
Это приводит нас к нашему последнему разделу.
Предел / Стоимость в сравнении с ценой
Лимит газа - это максимальная сумма газа, которую мы готовы потратить на транзакцию. Большинство программ, которые мы используем для трансляции транзакций Ethereum, имеют возможность автоматически оценивать количество газа, которое потребуется для выполнения функции. Обычно он сразу же подсказывает фигуру. Например, для простых денежных транзакций A-> B обычно требуется всего 21000 газа. Более сложные, которые вызывают определенные функции смарт-контрактов, могут привести к сотням тысяч или даже миллионам газа.Израсходованное количество газа называется стоимостью газа .
Мы, как пользователь, можем изменить количество газа, которое мы хотим потратить на транзакцию, и уменьшить его, но если в транзакции заканчивается газ во время выполнения, мы теряем отправленный газ. Он был потрачен, и транзакция отклонено. С другой стороны, если мы доставляем больше газа, чем необходимо, остаток возвращается нам. Следовательно, всегда лучше отправить больше газа, чем может потребоваться для выполнения транзакции.
Стоимость газа - цена в ГВэй за единицу газа.
Таким образом, общая стоимость транзакции Ethereum - это фактически количество необходимого газа, умноженное на цену в ГВэй за единицу газа. Это максимальная комиссия за транзакцию , которую мы будем платить; Любой дополнительный газ возвращается, поэтому сборы часто сильно завышаются.
Давайте посмотрим на пример.
На изображении выше мы выполняем транзакцию, для которой, из-за ее сложности, потребуется 135963 газа. Максимальная комиссия за транзакцию при цене 25 Гвэй составляет 1 доллар США.57, что тривиально, если посмотреть на общую сумму, которую мы отправляем (0,38 eth = 178 долларов США). Если мы повысим цену на газ до 250 ГВт, сделка станет пропорционально дороже:
Более высокая комиссия за транзакцию фактически побуждает майнеров обрабатывать нашу транзакцию раньше других в очереди, тем самым ускоряя выполнение. Если мы не торопимся, мы можем оставить цену на газ равной ее начальному значению, а подтверждение транзакции не должно занять более 10 минут. Но если мы торопимся и хотим, чтобы это было сделано в считанные секунды (например, если мы имеем дело с аукционом), легко поднять цену на бензин и пожертвовать некоторыми деньгами ради гарантии успеха.
Заключение
Газ - это единица работы, затрачиваемая на одну вычислительную операцию в виртуальной машине Ethereum. Он оплачивается эфиром, токеном протокола Ethereum, и каждая вычислительная операция требует разной стоимости газа. Цена на газ (в Гвэй или 1 миллиардную долю эфира) варьируется в зависимости от загруженности сети и предпочтений пользователя в отношении быстрого подтверждения.
Для смарт-контракта, который мы хотим развернуть в сети Ethereum, важны два условия: лимит газа и цена на газ.Лимит газа - это максимальное количество газа, которое мы готовы потратить на выполнение транзакции. Фактически необходимое количество газа (известное только после выполнения транзакции) называется стоимостью газа . Цена на газ - это цена за единицу газа, выраженная в Гвэй (или миллиардных долях эфира). Общая стоимость транзакции будет произведением стоимости газа и цены на газ, а максимальная комиссия за транзакцию будет произведением лимита газа и цены на газ. Разница возвращается отправителю транзакции, чтобы система оставалась справедливой и работоспособной.
транзакций Ethereum - EthHub
перейти к содержанию
EthHub
Сделки
Введите, чтобы начать поиск
ethhub-io / ethhub
Дом
Основы Ethereum
Дорожная карта Ethereum
Использование Ethereum
Экосистема Ethereum
Гиды
Ethereum FAQ
Другие
Глоссарий
Языки
EthHub
ethhub-io / ethhub
Дом
Как «отменить» отложенные транзакции Ethereum?
Транзакция в блокчейне Ethereum не так сложна, как вы думаете.Вам нужно знать несколько вещей, чтобы убедиться, что транзакция, которую вы совершаете, будет успешно завершена.
1. Плата за газ
Существует множество примеров того, как объяснить « Газ F ee ». «Плата за газ», или обычно называемая «комиссией за транзакцию», представляет собой небольшой стимул или комиссию, которая выплачивается майнерам за включение вашей транзакции в блокчейн Ethereum. Единица «Плата за газ» называется Gwei, а 1 Gwei эквивалентна 0.000000001 Эфир.
Мы рассчитываем, сколько газа нужно заплатить за транзакцию, умножая « Цена на газ » на « Используемый газ ». Не путайте «Используемый газ» с « Лимит газа ». «Используемый газ» - это общий объем газа, использованный в транзакции, а «Лимит газа» - это максимальное количество газа, которое транзакция может использовать отправителю.
С одного адреса Ethereum на другой адрес Ethereum газ, необходимый для отправки ETH, составляет , ровно 21000 gas.Таким образом, при отправке ETH на другой адрес Ethereum (вместо адреса контракта) достаточно 21000 единиц газа. При цене на газ в 20 Gwei общая плата за газ, уплачиваемая за конкретную транзакцию выше, составит:
21000 gas x 20 Gwei = 420000 Gwei = 0,00042 ETH
Газ, используемый для выполнения контракта, отличается от одного контракт с другим. Рекомендуется проверять предыдущие транзакции с адреса контракта и ожидать немного большего при установке лимита газа во время транзакции, связанной с контрактом.
2. Перегрузка сети
Перегрузка сети играет важную роль в размере платы за газ, которую пользователи должны будут платить, и в скорости транзакции. Незавершенные транзакции в сети Ethereum определяют, насколько загружена сеть. Чем более загружена сеть, тем выше цены на газ, которые пользователи должны будут платить для защиты своих транзакций в блокчейне.
Майнеры будут отдавать предпочтение транзакциям с более высокой ценой на газ, таким образом, включая транзакции, которые платят более высокую цену за газ, а затем транзакции с более низкой ценой на газ.Ethereum Gas Price Tracker - это простой инструмент, который помогает пользователям определять безопасную и рекомендованную цену на газ для использования при выполнении транзакции в определенный момент времени. Трекер цен на газ также дает оценку времени, необходимого для включения транзакции в блокчейн при заданной цене на газ.
3. Одноразовый номер
Одноразовый номер - это номер транзакции на адрес отправителя. Каждая транзакция с адреса нумеруется последовательно, начиная с 0 для первой транзакции.Например, если одноразовый номер транзакции равен 10, это 11-я транзакция, отправленная с адреса отправителя.
Одноразовый номер необходимо учитывать, особенно если вы выполняете несколько транзакций с использованием одного и того же адреса. Сеть Ethereum работает таким образом, что транзакция с более низким значением nonce будет обрабатываться первой перед любой другой, поэтому, если у вас есть проблема с более ранней транзакцией, последующая транзакция не будет включена в блокчейн до тех пор, пока транзакция с более низким значением nonce успешно включен.
Заменить транзакцию в цепочке блоков немного сложно.
Для начала немного контекста. Принцип работы майнеров заключается в том, что они отдают приоритет транзакциям, которые платят более высокую плату за газ. Когда вы отправляете транзакцию в Ethereum, она отправляется в «пул ожидающих транзакций», и транзакция, которую вы только что отправили, находится там, ожидая, пока майнеры включат ее в цепочку блоков.
Майнеры будут «выбирать» транзакции, которые оплачивают более высокую плату за газ, оставляя транзакции с низкими комиссиями за газ в конце очереди.Здесь ваша транзакция может зависнуть, и в разгар перегрузки сети (см. Выше) ваша транзакция может занять некоторое время, чтобы быть включенной, поскольку в пул добавляется больше транзакций, предлагающих более высокие комиссии за газ, чем ваша транзакция.
Помните одноразовый номер? (см. выше)
Уловка для «отмены» вашей отложенной транзакции заключается в замене транзакции другой транзакцией 0 ETH с более высокой комиссией за газ, отправив вам тот же одноразовый номер, что и ожидающая транзакция.
Как определить одноразовый номер незавершенной транзакции? Посмотрите на Etherscan: D Найдите свой хэш транзакции (txhash) на Etherscan и найдите свой одноразовый номер для ожидающей транзакции ниже.
Интерфейсы некоторых кошельков предоставят вам расширенную настройку , где вы можете установить более высокую плату за газ и изменить одноразовый номер транзакции.
Статьи поддержки кошелька об ускорении / замене / отмене транзакций:
Если вы хотите добавить ссылку на то, как ускорить или отменить транзакцию вашего поставщика кошелька, пожалуйста, свяжитесь с нами здесь.
Принимая во внимание все вышеизложенное, перед инициированием любой транзакции в блокчейне Ethereum пользователям рекомендуется:
- Проверить состояние перегрузки сети
- Определить удобную цену на газ, необходимую для транзакции
- Убедитесь, что нет ожидающих транзакций с отправляющего адреса
.
Добавить комментарий