Транзакции биткоинов и других криптовалют — как их провести, отследить и проверить

Здравствуйте, уважаемые читатели блога Goldbusinessnet.com. Слово «транзакция» применяется в нескольких областях, в каждой из которых оно имеет свой характерный смысловой оттенок.

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

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

Трансакции с биткоинами и другими криптомонетами

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

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

Ведь многие криптографические системы построены на базе первоисточников, которые прочно завоевали первую и вторую позицию: Bitcoin и Ethereum. Это касается и монет, соответственно BTC (биткоина) и ETH (эфира). Насколько эти платформы близки по популярности, настолько же различаются по внутреннему устройству. На них и сделаем основной акцент, тем самым затронув по касательной целые пласты крипто-валют, схожих по структуре с этими системами.

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

Общие особенности трансакций большинства крипто-монет

Итак, транзакции в пределах крипто-систем представляют из себя переводы средств. Этим они напоминают аналогичные банковские операции со стандартными валютами.

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

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

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

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

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

Адрес — своего рода «счет», на который пересылаются монеты. Это хеш публичного ключа, закодированный в Base58. При активации отправки цифровых коинов вы указываете адрес, на который намереваетесь их переводить, а для получения средств отдаете свой адрес отправителю. Но технически адрес не является полным аналогом банковского счета и рассматривается лишь как элемент цепочки транзакционных записей (подробности в этой публикации). С образцами пар «адрес-приватный ключ» для некоторых известных крипто-валют вы можете ознакомиться здесь.

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

Большинство популярных платформ базируются на алгоритмах консенсуса PoW (Proof-of-Work) и PoS (Proof-of-Stake). В первом случае создание блоков и подтверждение транзакций отдано на откуп юзерам, которые занимаются майнингом (добычей «виртуальных полезных ископаемых») и, соответственно, именуются майнерами. Во втором случае аналогичная задача возложена на плечи валидаторов, которые ее выполняют посредством стейкинга (англ. staking).

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

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

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

Естественно, в уже сформировавшихся популярных крипто-системах, которые, однако, не имеют достаточной пропускной способности, комиссионные сборы высоки.

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

Чтобы перевод криптовалюты был полностью легализован и получатель мог использовать полученные средства, чаще всего транзакцию нужно подтвердить неоднократно. Для этого она помещается в несколько последовательно созданных блоков. Такой механизм дает возможность минимизировать риск появления мошеннических операций, например, так называемой «двойной траты» (англ. «double spending»), когда отправленные монеты используются повторно.

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

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

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

Почему некоторые транзакции остаются неподтвержденными?

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

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

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

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

Размер комиссии при переводе криптовалют

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

Вот как изменялась за последнее время средняя комиссионная плата за транзакции BTC и ETH (эти данные можно лицезреть на сайте https://bitinfocharts.com/):

Как видите, для транзакций биткоинов наблюдается пик, при котором стоимость перевода монет превысила 60 долларов. Для эфира тоже был свой максимум в отношении средней платы за одну транзакцию (почти 200 USD). Конечно, такие «скачки» не происходят на ровном месте, поскольку загруженность сети в том числе связана с конкретными глобальными или локальными событиями.

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

А вот та же информация касательно еще нескольких востребованных крипто-валют:

Ранее было упомянуто, что системы Bitcoin и Ethereum (а также их цифровые монеты), держат пальму первенства. Кроме того, вопрос определения оптимальной комиссии наиболее актуален именно для этих платформ. Потому и в данном аспекте чуть ниже сделаем на них упор.

Транзакции Bitcoin

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

В сети Биткоин в общем случае требуется не менее 6 подтверждений. Только после этого получатель получает доступ к поступившим средствам. Так как блоки создаются с интервалом 10 минут, то нетрудно подсчитать, что в идеальном варианте перевод BTC-коинов длиться примерно час. Стандартные BTC-кошельки настроены именно на этот классический вариант.

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

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

Понятие входов-выходов и UTXO

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

Вот как схематически выглядит фрагмент одной из таких транзакционных последовательностей по отношению к пользователю, который получил в результате входящей транзакции на адрес B определенное число монет и спустя некоторое время отослал их же на сторонний адрес (C):

Изображенную на картинке выше схему можно интерпретировать следующим образом:

  • Input (вход) — данные, которые содержат ссылку на предыдущую транзакцию по отправке монет, в результате которой поступили средства с A на B;
  • Amount (сумма), участвовавшая в транзакции (в нашем примере это 10 BTC);
  • Output (выход) — дальнейший перевод биткоинов с адреса B на адрес C, который займет свое место в цепи транзакций.

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

Взгляните еще раз на картинку выше. Сумма, пришедшая в результате входящей транзакции, является неделимой. Ее возможно отправить дальше только в полном объеме. Таким образом, вырисовывается такое важное понятие как неизрасходованный выход, или UTXO (Unspent Transaction Output). Скажем, вы получили на один из своих адресов в результате входящей транзакции 10 BTC, но пока никуда не отправили. Это и есть UTXO.

Для наглядности любой неизрасходованный выход вполне можно сравнить с денежной купюрой определенного номинала (например, 5, 10, 100 рублей и т.д.). Но, в отличие от фиатных валют, имеющих конечное количество различных номиналов, каждый UTXO представляет собой купюру абсолютно любого достоинства в зависимости от суммы поступивших биткоинов.

Общий баланс кошелька можно подсчитать, если сложить все непотраченные выходы:

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

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

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

В итоге суммарный баланс конкретного адреса (не кошелька) слагается из этих «частичек», которые являются неделимыми. Таким образом, по отношению к одному и тому же адресу может существовать несколько входов-выходов и, соответственно, UTXO. Вот как это выглядит:

Тогда в общем случае количество монет на кошельке будет определяться так:

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

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

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

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

Пример 1 (1 вход — 2 выхода). Допустим, есть один из адресов (напоминаю, что в кошельке их может быть несколько), на который ранее было получено 2 BTC. Вы желаете переслать своему другу 1 BTC. Но UTXO на такую сумму нет. Тогда трансакция формируется так: на адрес друга отправляется 2 BTC, а 1 BTC вернется на ваш кошелек. Причем, возможны 2 варианта:

Пример 2 (множество входов — 1 выход). Нужно отправить 17 биткоинов на один адрес. В кошельке есть несколько UTXO с 4, 5 и 8 BTC. В этом случае создается транзакция, в которой участвуют все нереализованные выходы, дающие искомую сумму (4 + 5 + 8 = 17).

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

Пример 3 (множество входов — 2 выхода). Усложним задачу из предыдущего примера и установим сумму для отправки в 15 BTC. В этом случае нет UTXO с необходимой суммой, путем сложения также не удастся ее собрать. Поэтому трансакция составляется следующим образом.

Складываются деньги, полученные на все три адреса (5 + 4 + 8 = 17), которые отправляются получателю на один адрес. А сдача в размере 2 BTC будет направлена на кошелек отправителя (на один из адресов, с которых произошла отправка монет либо на вновь созданный). Здесь может быть задействован один из 4 вариантов:

Возможно, короткий ролик о работе транзакций Биткоин вам тоже поможет понять суть:

Общий механизм построения транзакций в цепь

В свете дальнейшего углубления в тему важно напомнить о таком термине как «хэш» (hash), который постоянно встречается в мире крипто-валют, что неудивительно, если брать в расчет их природу. Хэш представляет из себя набор символов, получаемый в результате хеширования, то есть, преобразования массива данных одноименной функцией.

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

Чтобы яснее понять сущность транзакционных связей Bitcoin, обратимся к простой схеме, которая также объясняет логику применения открытых (public key) и закрытых (private key) ключей:

Допустим, что владелец монет C собирается перевести n-е число биткоинов пользователю D. Он получает от D его адрес в виде хэша открытого (публичного) ключа и формирует транзакцию, данные которой включают ссылку на хеш предыдущей транзакции TXID (перемещение BTC-коинов от B к C). Подобный механизм неразрывно связывает отдельные звенья цепи.

C подписывает транзакцию своим секретным ключом. Затем проверяется легитимность перевода монет (C → D) путем сопоставления подписи и public key владельца C. Ежели проверка проведена успешно, транзакция включается в очередной блок Bitcoin-блокчейна.

Закрытый и открытый ключи генерируются на основе ECDSA (ссылка для жаждущих «копать до руды», чтобы узнать подноготную этого алгоритма) и связаны между собой. Поэтому абсолютно любой участник сети (включая майнеров) может проверить, что подпись принадлежит именно C по его публичному ключу, который находится в составе данных прошлой транзакции (B → C), подписанной ее инициатором B, получившим до этого монеты от владельца A.

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

В описании выше дан лишь фрагмент транзакционной цепи, но этот цикл повторяется по всей ее длине. В соответствии с приведенной схемой пользователь D после соответствующего перевода средств от C будет иметь непотраченный выход UTXO (владеть монетами) до тех пор, пока не реализует его, то есть, не осуществит последующую транзакцию на какой-либо адрес.

Типы транзакций BTC

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

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

Script (скрипт) — особый язык программирования в системе Биткоин на основе стеков, который используется узлами (нодами) сети. С его помощью обеспечивается выполнение инструкций в виде операторов (или OP-кодов), которые определяют корректность проведения транзакций выполняя операции с различными элементами (публичными ключами, подписями и т.д.). Вот перечень некоторых OP-кодов, которые будут упомянуты далее:

  • OP_DUP дублирует элемент и добавляет дубликат в стек с тем, чтобы при осуществлении дальнейшей операции оригинал остался без изменений;
  • OP_HASH160 производит хеширование элемента два раза подряд: сначала при помощи алгоритма SHA-256, а полученный результат — посредством RIPEMD-160;
  • OP_EQUALVERIFY запускает действие двух операторов: OP_EQUAL и OP_VERIFY. Первый из них проверяет, идентичны ли два нужных элемента, а второй делает отметку о статусе транзакции (подлинная или недействительная);
  • OP_CHECKSIG проверяет подлинность подписи (signature) на основании публичного ключа;
  • OP_CHECKMULTISIG проверяет соответствие нескольких пар «signature — public key» в случае транзакции с множественными подписями (multisig).

Пара ScriptPubKey (скрипт блокировки) и Sigscript (скрипт разблокировки) участвует в цепи транзакций. Если провести доступную аналогию, то первый является замком, а второй — ключом.

Pay-to-Public-Key-Hash (P2PKH)

Формат транзакции в переводе на русский означает: «платить на хеш публичного ключа». Как мы уже знаем, преобразованный функцией хэширования и представленный в кодировке Base58 public key hash это не что иное как адрес. В P2PKH он всегда начинается с «1».

Допустим, пользователь C владеет UTXO, с которого он решает перевести BTC пользователю D, и получает от него адрес. Для активации перевода С должен разблокировать выход предыдущей транзакции, в ходе которой им были получены монеты от B. С этой целью C ставит подпись своим приватным ключом. Вся транзакция с входом и выходом, по-моему, довольно ясно отображена на нижеследующем рисунке, где, в частности, отмечена роль scriptPubkey и Sigscript:

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

Pay-to-Script-Hash (P2SH)

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

Правила сценария указываются в скрипте погашения (redeemScript). При формировании выхода отправитель указывает адрес получателя. Адрес в P2SH, который всегда начинается с цифры «3» — это, опять же, результат кодировки хеша скрипта в Base58 (redeemScript hash).

Итак, P2SH позволяет установить произвольные правила для открытия доступа к полученным средствам. На практике этот формат чаще всего встречается, когда используется мульти-подпись (multisignature, или, сокращенно, multisig).

Смысл заключается в том, что к адресу привязана не одна, а сразу несколько пар приватных и публичных ключей. Тогда Sigscript содержит [signature 1][signature 2]…[signature M] и redeemScript {[public key 1][public key 2]…[public key N] OP_CHECKMULTISIG} (причем N>M), где оператор OP_CHECKMULTISIG проверяет на легитимность определенное количество пар подписей и открытых ключей. Максимальное их число ограничено 15-ю.

Пример: группа из 3 человек, каждый из которых обладает своей парой «private key — public key», создает общий multisignature-адрес. Устанавливается сценарий, в котором условием для расходования монет является предоставление двух подписей, соответствующих любым двум из трех возможных публичных ключей (транзакция «P2SH 2-of-3 multisig»).

Виды нативных (native) segwit-транзакций

Уже было не раз отмечено, что по мере развития Bitcoin появляются самые разные обновления, призванные решать задачи, связанные с улучшением работы системы и устранением ее минусов.

К их числу относится технология Segregated Witness (SegWit). Она была внедрена в протокол в 2017 году с целью значительно повысить масштабируемость сети. Основная идея концепции заключалась в том, чтобы оптимизировать размещение транзакций в блоках блокчейна. В итоге повышается пропускная способность сети. Также использование сегвит-адресов при оформлении перевода монет дает отличную возможность сэкономить на комиссии.

P2WPKH и P2WSH, которые мы разберем в этом подразделе, называются нативными (native) сегвит-транзакциями, то есть, формирующимися изначально на основе Segregated Witness. Но есть и другие варианты транзакций, которые поддерживают SegWit, но не являются нативными.

Pay-to-Witness-Public-Key-Hash (P2WPKH)

Это продвинутая версия P2PKH с использованием SegWit. P2WPKH отличается от классического варианта тем, что данные доказательства владения крипто-монетами ([signature][public key]) выносятся в специальный раздел «Witness» (по-русски «Свидетель»). Кроме того, все адреса P2WPKH преобразуются из хэша публичного ключа с использованием нового формата Bech32, начинаются с префикса «bc1» и содержат 42 символа (цифры и буквы нижнего регистра).

При этом поле Sigscript остается пустым, а содержание ScriptPubKey выглядит уже совсем просто: [OP_0][public key hash]. Операторы хеширования, сравнения, оценки подлинности отсутствуют по той причине, что узлы сети (ноды) по длине хеша public key определяют характер транзакции и должным образом ее интерпретируют (механизм обработки тот же, что и в случае с P2PKH).

Pay-to-Witness-Script-Hash (P2WSH)

Это обновленный вариант P2SH, где также применяется технология SegWit и все данные Sigscript выносятся в раздел «Witness». Адреса P2WSH образуются на основе public key hash в формате Bech32 и тоже с префиксом «bc1». От адресов P2WPKH они отличаются лишь длиной (62 знака).

Вложенные (nested) сегвит-транзакции

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

Тем не менее, упомянутый недостаток можно компенсировать, так как плюсы нативных сегвит-транзакций могут быть реализованы непосредственно внутри P2SH. В итоге получаются P2SH-P2WPKH и P2SH-P2WSH форматы, для которых доступен раздел «Witness».

Как это происходит на практике? Пример: допустим, Иван планирует перевести Марии BTC, но не с сегвит-адреса. Однако Мария желает использовать SegWit для сокращения комиссионных расходов. Для этого она генерирует P2SH-адрес из хеша redeemScript (куда включена witness-программа) и дает Ивану. Этот адрес будет в обычном P2SH-формате, начинающемся с «3», и Иван без проблем отправит на него крипто-средства. В дальнейшем Мария сможет потратить образовавшийся UTXO при помощи сегвит-входа и соответствующего выхода.

Упомянутая witness-программа в случае P2SH-P2WPKH создается на основе хеша открытого ключа (public key hash), а при активации P2SH-P2WSH — на базе хешированного произвольного скрипта (Witness_Script hash). В последующей транзакции этот скрипт (он содержит условия разблокировки) будет помещен в раздел «Witness» наряду с другими данными.

Если Иван отправит BTC на адрес Марии, а она продолжит цепочку (где выход P2SH перетекает во вход P2WPKH/P2WSH) и отправит монеты, скажем, Петру, то содержание будет таким:

Тип транзакции P2SH-P2WPKH P2SH-P2WSH
Выходные данные предыдущей транзакции scriptPubKey_1:
OP_HASH160
[redeemScript_1 hash]
OP_EQUAL
scriptPubKey_1:
OP_HASH160
[redeemScript_1 hash]
OP_EQUAL
Вход (Input) SigScript redeemScript_1:
[public_key_1 hash]
redeemScript_1:
[Witness_Script hash]
Witness [signature_1][public_key_1] [Witness_data][Witness_Script]
Выход (Output) scriptPubKey_2:
OP_0 [public_key_2 hash]
scriptPubKey_2:
OP_0 [redeemScript_2 hash]

Здесь «scriptPubKey_1» — выходные данные при отправке крипто-монет BTC от Ивана Марии, а «scriptPubKey_2» — содержание выхода транзакции, направленной Петру от Марии. Также все параметры, отмеченные «1» связаны с Марией, а нумерованные «2» — с Петром.

Pay-to-Taproot (P2TR)

Этот вариант транзакций BTC, который, в принципе, уже действует, стал следствием очередного обновления системы Bitcoin (вышедшего под номером BIP-341) с говорящим названием Taproot (что в переводе на русский означает «стержневой корень»).

Эта технология связана с еще двумя важными нововведениями. К ним относятся схема подписей Шнорра, или Schnorr Signatures (BIP 340), пришедшая на смену ECDSA, и Tapscript (BIP 342), предназначенный для проверки скриптов и подписей Шнорра.

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

Итак, давайте акцентируем внимание на особенностях транзакций P2TR, опять же, не сильно углубляясь в тему. Для начала следует отметить, что при этом варианте используется SegWit-1 (рассмотренная выше версия Segregated Witness применительно к транзакциям была нулевой).

Адреса, которые начинаются с «bc1p…», генерируются по схеме кодирования Bech32m, которая является модифицированной вариацией Bech32 и устраняет некоторые ее уязвимости.

Кроме отмеченных выше преимуществ Pay-to-Taproot имеет еще один немаловажный плюс, а именно, повышенную функциональность, сочетая в себе положительные черты сразу 2 видов оплаты: Pay-to-Script-Hash (P2SH) и Pay-to-Public-Key (P2PK).

По отдельности каждый из них имеет существенные недостатки. Практическое использование P2SH, который мы разбирали выше, затруднено необходимостью обработки большого объема данных. P2PK (оплата на публичный ключ, а не на его хеш как в P2PKH) в самом начале был отменен Сатоши Накамото ввиду того, что не обеспечивал должной безопасности.

Однако в составе P2TR оба сценария работают достаточно эффективно, в том числе благодаря применению концепции MAST, созданной на базе дерева Меркла, которое дает возможность эффективно хранить транзакции в блоках и подтверждать их.

Для наглядности давайте взглянем на схему выхода P2TR, чтобы ухватить основную суть:

Подобная конструкция дает свободу выбора получателям самим выбирать условия для доступа к монетам (это важно, ведь отправителя большей частью не интересует, как будут потрачены BTC дальше). Это вполне может быть простая транзакция в стиле Pay-to-Public-Key или же несколько сценариев различной сложности, которые по сути являются смарт-контрактами.

Эксклюзивная «фишка» заключается в том, что открытый ключ Q, на который отправляются биткоины, на деле является совокупностью публичных ключей P и M.

Последний стоит отметить особо. Дело в том, что технология MAST обеспечивает формирование отдельных хэшей для каждого типа скрипта (сценария разблокировки монет) с их последующим внедрением в дерево Меркла, где и генерируется единый хеш, именуемый корнем Меркла (Merkle Root). Именно с этим корнем и связан public key M.

Функционал Pay-to-Taproot ориентирован на то, что все выходы, вне зависимости от выбранного сценария, выглядят одинаково. А это усиление приватности для всех пользователей сети.

Определение оптимальной комиссии для сети Биткоин

Итак, скорость транзакции того же биткоина зависит от размера комиссионных. Поэтому стоит задача выбрать такую сумму (и при этом не переплатить), чтобы обеспечить подтверждение операции по переводу средств, а значит, и ее гарантированное выполнение.

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

На страничке https://www.blockchain.com/explorer/charts/mempool-count присутствует диаграмма, которая отражает количество ожидающих очереди транзакций в мемпуле (Mempool Transaction Count) в любое время вплоть до настоящего момента. Существует также опция, позволяющая отобразить на графике тот или иной связанный параметр, скажем, рыночную цену биткоина в долларах на текущий момент (Market Price):

Также с помощью выпадающего списка есть возможность построить график и по другим близким характеристикам. Отразить, скажем, изменение средней комиссии (Fees Per Transaction), число подтвержденных транзакций за день (Confirmed Transactions Per Day) и т.д.

На еще одном специализированном ресурсе (https://bitaps.com/ru/) предоставляется весьма подробная информация по теме. А главное, здесь автоматически выводится рекомендуемая комиссия в реальном времени, которая обеспечит попадание транзакции в ближайший блок:

Ну и дана достаточно информативная диаграмма с распределением уровня комиссий:

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

Действует это и в отношении BItcoin. Однако, есть важный нюанс. Дело в том, что транзакции BTC имеют разный размер, измеряемый в байтах (сколько их в килобайте, мегабайте, гигабайте). Соответственно, одни транзакции занимают больше места в блоке, другие меньше. Поэтому и было принято решение установить комиссионные в сатошах за байт (s/Byte). Чем «объемнее» транзакция, тем она дороже обойдется. В общем, здесь все логично.

От чего же зависит размер конкретной транзакции? От степени ее сложности, другими словами, от количества участвующих в ней адресов. А точнее, от числа входов и выходов.

Взгляните на парочку скриншотов с веб-сайта Bitaps.com, расположенных выше. Рекомендуемая комиссия там указана в сатошах за виртуальный байт (s/vByte). Данная единица связана с понятием «виртуальный размер» (vsize). Оно было введено применительно ко всем видам транзакций после добавления адресов Segregated Witness (о них речь шла выше).

Использование SegWit-адресов позволяет значительно уменьшить виртуальный размер каждой транзакции, так как данные доказательства владения монетами выводятся в отдельном разделе witness data (или witness stack) вне основного блока. Это выгодно всем участникам сети.

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

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

vsize = 0,75 base_size + 0,25 total_size

Здесь base_size — размер транзакции без учета данных witness data, а total_size — суммарный реальный размер всех составляющих.

Обратимся к табличке, где для некоторых популярных форматов присутствуют данные по трем основным компонентам, которые учитываются при расчете размера транзакции: заголовок (Header), выход (Output), вход (Input). Witness data содержится в составе входных данных:

Type Header base_size Header total_size Output Input Input (witness)
P2PKH 10 Byte 10 Byte 34 Byte 148 Byte ——
P2SH-P2WPKH 10 Byte 12 Byte 32 Byte 64 Byte 108 Byte
P2WPKH 10 Byte 12 Byte 31 Byte 41 Byte 108 Byte
P2TR 10 Byte 12 Byte 43 Byte 41 Byte 66 Byte

В соответствии с этой информацией суммарный total_size вычисляется так:

total_size = Header total_size + Output + Input + Input (witness)

А базовый размер можно определить таким образом:

base_size = Header base_size +  Output + Input

Давайте для примера выберем парочку типов транзакций (скажем, P2PKH и P2WPKH), посчитаем, каков виртуальный размер для каждого случая и сравним их. Для начала разберем простейший вариант с 1 входом и 1 выходом. Совершенно очевидно, что в случае использования Legacy-адреса (P2PKH) нет составляющей witness и размер данных заголовка один и тот же, а потому:

vsize (P2PKH) = total_size = base_size = Header base_size (Header total_size) + Output + Input = 10 + 34 + 148 = 192 vByte

При тех же исходных данных транзакция с входом и выходом P2WPKH гораздо менее объемная:

vsize (P2WPKH) = 0.75 × base_size + 0.25 × total_size  = 0.75 × (10 + 31 + 41) + 0.25 × (12 + 31 + 41 + 108) = 0.75 × 82 + 0.25 × 192 = 61.5 + 48 = 109.5 vByte

Для удобства возьмем рекомендуемую комиссию, равную 3 s/vByte, и округлим значение виртуального размера транзакции P2WPKH до 110 vByte. Комиссии в первом и во втором случае будут кардинально отличаться (транзакция с участием SegWit-адресов стоит значительно меньше, в чем, собственно, и требовалось убедиться):

для P2PKH: 192 × 3 = 576 satoshi
для P2WPKH: 110 × 3 = 330 satoshi

Усложняем задачу. Попытаемся вычислить размер и комиссионные для обоих вариантов, ежели транзакция содержит 2 входа и 2 выхода. Сначала определим vsize, удвоив размеры входов и выходов, а также добавив размер заголовка, который является общим для всей транзакции:

vsize (P2PKH) = 10 + 2 × 34 +  2 × 148 = 374 vByte
vsize (P2WPKH) = (10 + 2 × 31 + 2 × 41) × 0.75 + (12 + 2 × 31 + 2 × 41 + 2 × 108) × 0.25 = 208.5

Тогда комиссионные сборы будут следующими:

для P2PKH: 374 × 3 = 1122 satoshi
для P2WPKH: 209 × 3 = 627 satoshi

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

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

https://bitcoinops.org/en/tools/calc-size/
https://jlopp.github.io/bitcoin-transaction-size-calculator/

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

Как отследить и проверить транзакции Bitcoin

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

Для системы Bitcoin посмотреть статус любой трансакции возможно на веб-сайте Blockchain.com (https://www.blockchain.com/ru/explorer/), интерфейс которого является мультиязычным (изменить язык можно из меню слева в самом низу), русский также доступен.

Если интересует конкретный перевод монет (например, совершенный вами), то после перехода по данной выше ссылке можете воспользоваться поиском введя в поисковое поле хеш, или, по-другому, TXID (идентификатор) транзакции:

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

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

Кстати, давайте продолжим изучение Bitcoin-транзакций на реальных примерах с Blockchain.com. Вот, скажем, образец простой транзакции с 1 входом (P2PKH) и 1 выходом (P2SH), где указана вся информация о ней (сколько подтверждений имеет, размер, уплаченная комиссия и т. д.):

Можете взглянуть на общий вид скриптов входа и выхода, а заодно вспомнить структурные особенности ScriptPubKey и Sigscript, о которых речь шла ранее:

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

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

75a2a1f3110bd072e49f3d78055325de85185f32

Добавим к нему префикс «00», контрольную сумму в конце «2a161a9f» и закодируем полученную строку с символами в любом онлайн-кодировщике (например, в этом):

Как видите, получился искомый результат.

Можете продолжить изыскания и проанализировать различные варианты. Для экономии времени используйте предоставленные ниже ссылки на транзакции некоторых типов:

Нюансы транзакций в Ethereum

Рассмотрев в общих чертах сущность транзакций в сети Ethereum, мы затронем по касательной целый пласт крипто-валют, схожих по структуре с этой системой.

Экосистема Ethereum наряду с Bitcoin занимает лидирующие позиции по популярности. Однако ее структура отличается, так как в ней действуют немного другие принципы и алгоритмы.

Глобальное отличие заключается в том, что система Эфириум изначально была задумана автором Виталиком Бутериным как многофункциональная платформа с возможностью реализации смарт-контрактов в отличие от разработки Сатоши Накамото, который создал исключительно платежную систему с одноименными цифровыми деньгами (кстати, в дальнейшем ситуация может измениться, поскольку платформа Bitcoin имеет все предпосылки для расширения функционала).

Смарт-контракт (англ. smart contract), по-другому интеллектуальный, или умный, контракт — сделка без посредников в цифровом формате между участниками сети. Реализуется силами программного обеспечения Ethereum и может быть успешно завершена только при соблюдении заранее установленных параметров и условий.

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

Сеть Эфириума, как и Биткоина, работает на базе блокчейна. До недавнего времени здесь также использовался алгоритм PoW (Proof-of-Work) и за формирование блоков (а значит, и за контроль проводимых транзакций) отвечали майнеры.

Однако в рамках глобального обновления системы до Ethereum 2.0 протокол PoW был заменен на Proof-of-Stake (PoS), который работает в майннете (основной сети) начиная с августа 2022 года. Теперь поддержку базовой системы осуществляют валидаторы посредством стейкинга.

Полный консенсус в сообществе найден не был, поэтому произошло отделение части Ethereum от основной сети с сохранением PoW-протокола и майнинга, в результате которого появилась новая монета ETH PoW (случился очередной форк). Впрочем, в мире крипты это нередкое явление.

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

Начнем с того, что состояние всей системы контролирует так называемая Виртуальная Машина Эфириума (EVM, или Ethereum Virtual Machine). На одном из этапов упомянутого обновления она будет заменена на продвинутый вариант — Ethereum WebAssembly (EWASM). Каждая транзакция вызывает изменение состояния Виртуальной Машины, которое моментально отражается на всех узлах (нодах) сети блокчейна, синхронизированных с EVM.

Внутренние и внешние адреса

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

Внешний аккаунт, или адрес (англ. External Owned Account, EOA) извне контролируется владельцем, имеющим связанную пару ключей (публичный и приватный). По своей сути — это аналог Bitcoin-адреса. Он также создается из хэша публичного ключа. Однако, на платформе Ethereum используется более мощный алгоритм хеширования SHA-3 (Keccak).

По структуре все внешние адреса имеют единый формат. Они выражены в шестнадцатеричном формате (включают цифры 0-9 и буквы A-F нижнего регистра), имеют 42 знака и префикс «0x». Но при этом программное обеспечение большинства кошельков, используемых для хранения и операций с эфирами, понимает адреса, которые отображаются как строчными так и заглавными буквами. Вот образец записи обоих вариантов одного и того же адреса:

0xdfd5293d8e347dfe59e90efd55b2956a1343963d
или
0XDFD5293D8E347DFE59E90EFD55B2956A1343963D

В Эфириуме, в отличие от Биткоина, нет понятия UTXO. Как раз тут термин «баланс адреса» имеет более близкую аналогию с банковским счетом. Но также как в Bitcoin, каждая отправка средств подписывается секретным ключом. Между внешними аккаунтами допустимы только транзакции с передачей монет ETH или сторонних токенов.

Внутренний адрес, или аккаунт (Contract account, CA) представляет из себя специальную учетную запись для реализации смарт-контрактов (это разновидность транзакций). Он имеет ту же структуру, что и внешний адрес (начинается с «0x»), но генерируется лишь при активации (развертывании) умного контракта, контролируется кодом и не требует наличия открытого и закрытого ключа. Можно сказать, что внутренний аккаунт управляет «сам собой» автоматически на основании параметров, установленных пользователями.

Замечу, что все без исключения транзакции, включая смарт-контракты, в блокчейне Эфириума активируются с внешних учетных записей. Вы сможете осуществить транзакцию со своего внешнего адреса на контрактный аккаунт (CA) и запустить код, который инициирует нужные функции из множества разнообразных вариантов, включая передачу монет или токенов. Есть даже возможность таким образом активировать smart contract, который вызовет формирование нового интеллектуального контракта. И такая цепочка может быть продолжена.

Рассмотренные нами особенности, а также отличия между внешними и внутренними адресами, резюмируем при помощи нижеследующего изображения:

Типы транзакций и понятие «gas»

Итак, выше мы выяснили, что представляют из себя внутренние и внешние адреса. Они являются важнейшей частью транзакций, которые разделяются на 3 основных типа:

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

Далее еще об одной значимой составляющей платформы Эфириум. Речь о понятии «gas» (газ). Любая операция в блокчейне изменяет состояние EVM и требует определенных вычислительных мощностей, которые выражаются в единицах газа. Фигурально выражаясь, gas служит «топливом» для поддержания функционирования всей системы.

Простая транзакция, связанная с переводом эфиров между пользователями (а точнее с отправкой монет с одного внешнего адреса на другой), потребляет минимум 21 000 единиц газа. Другие же транзакции, задействующие внутренние адреса, требуют намного большего количества газа, которое напрямую зависит от степени сложности исполняемого контракта.

Что надо знать о комиссионных в сети Эфириум

Размер комиссии майнерам (с недавнего времени валидаторам) в Ethereum более сложная штука, чем в Bitcoin, и сопряжен с некоторыми значениями, связанными с количеством потребляемых вычислительных ресурсов (то есть, газа). Причем, сначала действовала одна система, но с 2021 года в рамках обновления «London» начала действовать другая. Она была призвана устранить насущные проблемы, в том числе сделать комиссионные выплаты более предсказуемыми.

Давайте начнем с того, что было раньше. Изначально для расчета платы за транзакцию в сети Ethereum были введены два основных параметра:

  • Gas Limit — максимальное количество газа, которое готов потратить пользователь в целях осуществления транзакции (напомню, минимальный порог составляет 21 000). Это по сути ограничение, позволяющее защитить счета участников от полной растраты средств в случае возникновения форс-мажора в виде каких-то системных ошибок;
  • Gas Price — цена единицы газа, которую выбирает инициатор транзакции. Она выражается в одной из дробных единиц эфира, именуемых Gwei (у многих крипто-валют для удобства существует такое дробление). 1 ETH = 1 000 000 000 Gwei, или 1 Gwei = 0.000000001 ETH.

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

Величина полной комиссии для транзакции вычисляется по незатейливой формуле:

Fee = Gas Usage × Gas Price

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

Давайте теперь на основе этих данных разберем простой пример. Скажем, Иван решил перевести 1 эфир Марии и указал следующие параметры транзакции:

Gas Limit = 50 000
Gas Price = 10 Gwei (0.000000010 ETH)

В ходе операции было израсходовано стандартное количество газа (Gas Usage = 21 000). Исходя из этого комиссионные майнеру (валидатору), сформировавшему соответствующий блок, куда и вошла данная транзакция, составили 0.00021 ETH (21 0000 × 0.000000010). Таким образом, со счета Ивана было списано 1.00021 ETH (1 ETH Марии + комиссия).

Ну а далее поговорим о схеме начисления комиссии, которая действует на данный момент после внедрения EIP-1559 в рамках обновления «London». Для удобства приведу сначала новые параметры, которые используются в этой схеме наряду с традиционными:

Вase Fee — базовая комиссия для каждой транзакции. Ее величина зависит от базовой стоимости единицы газа (Base Gas Price) конкретного блока и количества использованного газа:

Вase Fee = Base Gas Price × Gas Usage

Базовая цена газа (но не Вase Fee, как указано в некоторых источниках, даже в официальных!) определяется на основе размера предыдущего блока, измеряемого в тех же газовых единицах. А размер любого блока в блокчейне Эфириума уменьшается или увеличивается в зависимости от числа входящих в него транзакций и порой отличается от целевого значения (15 млн. ед.). Если текущий block получается больше целевого, то базовая комиссия для всех транзакций, вошедших в следующий блок, повышается, в противном случае — снижается.

После формирования блока Вase fee «сжигается», то есть, соответствующая сумма ETH (Gwei) изымается из обращения. Поскольку протокол Ethereum, в отличие от Bitcoin, не предполагает окончания выпуска монет (ознакомьтесь с классификацией крипто-активов по типу эмиссии), то это один из продуктивных методов по снижению инфляции.

Priority Fee (приоритетная комиссия, или «чаевые»). Величина этой составляющей формируется с учетом того, какую цену за газ («Priority Gas Price») предлагает инициатор при простейшем переводе монет или запуске смарт-контракта. Приоритетная комиссия платится для того, чтобы стимулировать валидаторов активировать транзакцию (монеты базовой комиссии «сжигаются» и до них не доходят). И здесь размер «чаевых» вычисляется по несложной формуле:

Priority Fee = Priority Gas Price × Gas Usage

Таким образом плата за транзакцию (полная комиссия) определяется следующим образом:

Fee = Вase Fee + Priority Fee = (Base Gas Price + Priority Gas Price) × Gas Usage

Max Fee. Максимальные комиссионные, которые пользователи согласны платить за проведение транзакции. По аналогии с выше описанными видами комиссии Max Fee определяется так:

Max Fee = Max Gas Price × Gas Usage

Где «Max Gas Price» — максимальная цена единицы газа. Ее указывает инициатор операции.

Величина Max Fee должна превышать сумму «Вase Fee + Priority Fee», что логично. Ее важнейшая особенность заключается в том, что пользователь никоим образом не переплатит. Оплата за транзакцию всегда производится исключительно с учетом базовой комиссии и «чаевых». Разница между максимальной и реальной комиссией возвращается отправителю:

Refund = Max Fee - (Вase Fee + Priority Fee)

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

Еще одно важное замечание. Некоторые предоставленные параметры (Base Gas Price, Priority Gas Price, Max Gas Price) не являются официальными и указаны только для того, чтобы у вас не возникло путаницы между комиссионными и ценой за единицу газа. Официальные источники и кошельки с программным обеспечением обычно оперируют такими понятиями как «Вase Fee», «Priority Fee», «Max Fee». Имейте это ввиду.

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

Как видите, тут в режиме реального времени отображена базовая стоимость газа «Base», равная 13 Gwei (напомню, что комиссия на ее основе обязательна к оплате). А также даны три варианта приоритетной (1, 2 и 3 Gwei) и суммарной (14, 15, 16 Gwei) цены.

Именно величина Priority Price определяет, как быстро ваша транзакция попадет в сеть и будет подтверждена. На скриншоте выше запечатлен момент со значениями основных параметров. При оплате 15 Gwei (Low) за единицу потребленного газа транзакция будет совершена в течении 10 минут, 16 Gwei (Average) сразу сократят время ожидания до 3 минут, ну а если не жалко 18 Gwei (High), то операция займет всего 30 секунд.

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

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

Чуть ниже под заголовком «Estimated Cost of Transaction Actions» («Расчетная стоимость транзакционных действий») отображены часто встречающиеся более сложные типы транзакций (включая смарт-контракты) с разным содержанием, указанием Gas Limit и соответствующей им приблизительной величины комиссии (опять же, для наглядности в долларовом эквиваленте).

Подробности о транзакциях Ethereum из открытых источников

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

Вполне можно изучить и проанализировать записанные в блоки транзакции на том же веб-сайте Blockhain.com в отдельном разделе (https://www.blockchain.com/explorer/assets/eth). Но лучше использовать для этой цели родной ресурс платформы Ethereum (Etherscan). Тут связанную с транзакциями информацию несложно найти с помощью поиска, фильтров и отдельных разделов:

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

Далее рассмотрим пример активации смарт-контракта, связанного с децентрализованным протоколом Uniswap, созданным на базе платформы Ethereum и позволяющим автоматически обменивать крипто-валюты (в этом случае произошел обмен с участием монет RPL и MATIC):

Если объяснять детали этой операции простым языком, то можно сказать следующее. С внешнего адреса (0x3be034e4a0f9…), принадлежащего реальному пользователю, активирован конкретный smart-contract через соответствующий ему внутренний адрес (0xef1c6e67703c…). Посредством этого контракта реализован последовательный обмен (RPL → ETH и ETH → MATIC).

Посмотрите еще раз на выше находящийся скриншот. Обратите внимание на вкладку «Internal Txns» (ее не было, когда мы разбирали предыдущий пример с переводом монет ETH).

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

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

Сайты с данными транзакций других крипто-валют

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

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

Начну с мульти-обозревателя Crypto ID, где есть список почти двух сотен платформ:

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

Другой веб-сайт с подобным функционалом — Blockcypher.com. Правда, тут выбор не такой уж обширный. Кроме Bitcoin и Ethereum дана информация о блокчейнах Litecoin, Dogecoin и Dash. А вот отдельные официальные веб-ресурсы некоторых популярных криптовалютных платформ, на которых также возможно исследовать и изучать данные о транзакциях:

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

Как провести транзакцию крипто-монет на практике

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

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

К примеру, при использовании программных клиентов в большинстве случаев следует только заполнить пару-тройку полей, нажать требуемые кнопки и отрегулировать, обычно с помощью простого ползунка, величину комиссионных под свои «хотелки» (кошелек сам дает подсказку):

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

Инструкция по использованию надежного мультивалютного кошелька-обменника Matbea. С его помощью можно совершать разные операции сразу с целым рядом крипто-валют:

Обзор возможностей популярного онлайн-бумажника Blockchain com:

Целый вебинар по применению функционала Bitcoin-кошелька MyCelium Wallet — достойного варианта исключительно для адептов мобильных приложений:

Видео-рассказ еще об одном мультивалютном клиенте, а именно, о Coinomi, который имеет как десктопную (для Widows, MacOS и Linux) так и мобильную (для Android и iOS) версии:

Пожалуй, первым в ряду «легковесных холодных хранилищ» вполне можно считать BTC-клиент Electrum. О нем поведает информативный практикум от опытного пользователя:

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

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

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

Вот серия видео об одном из них, а именно, об аппарате Леджер:

А вот полный комплект роликов о его главном конкуренте, коим является Трезор:

На этом все. Если возникли какие-то вопросы по теме, задавайте их в комментариях. Всех благ!

Поделиться с друзьями
Игорь Горнов

Создатель и администратор сайта Goldbusinessnet.com. Участник нескольких успешных проектов и автор более 1000 статей о работе в интернете, создании сайтов, полезных программах и сервисах.

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

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Елена

    Спасибо огромное! После перелопачивания горы ресурсов, на которых поверхностно говорят об одном и том же, наконец-то нашла внятные разъяснения на отличном русском языке)) Пожалуйста, продолжайте!

    Ответить
    1. Игорь Горнов автор

      Спасибо, Елена. Такие комментарии ко многому обязывают.

      Ответить
  2. Алексей

    Спасибо вам огромное! Что доносите буквально по-полочкам до людей эту информацию, которая поможет понять новую цифровую эпоху, в это не простое для людей время…
    ✅Всего наилучшего вам и вашей команде

    Ответить
    1. Игорь Горнов автор

      Алексей, спасибо за добрые слова.

      Ответить
  3. Игорь Горнов автор

    Александр, спасибо за отзыв.

    Ответить
  4. Александр

    Отличная статья, транзакции крипты изложена от А до Я.

    Ответить