О чем речь? Транзакции в блокчейне – это передача информации между кошельками, в ходе которой может быть переведена криптовалюта от одного лица к другому. Несмотря на то, что электронные деньги считаются анонимными и безопасными, транзакции можно отследить и даже иногда отменить.
На что обратить внимание? У рассматриваемого механизма есть ряд особенностей, например, они могут зависнуть по разным причинам. Для решения данной проблемы есть способы как внутри блокчейна, так и вне его.
Материал опубликован исключительно в ознакомительных целях и не является инвестиционной рекомендацией.
Суть блокчейна
Блокчейном называется децентрализованная база данных, созданная для того, чтобы хранить последовательные блоки, имеющие набор параметров (дату создания, версию, лог предыдущих действий в сети). Если искать оффлайновый аналог такой структуры, то это будет железная цепь бесконечной длины, очень прочная и не допускающая замены звеньев или разрыва.
Технология блокчейн построена на следующих принципах:
- децентрализации;
- распределенности;
- прозрачности;
- безопасности;
- неизменности.
Цепочка в блокчейне подобна книге, в которую можно добавить новые страницы, но не куда попало, а только в конец, после всех имеющихся. Все, что написано, невозможно стереть, отредактировать, поменять местами.
Дописывание очередной страницы в такую книгу блокчейна осуществляется путем транзакций (не в смысле денежных переводов, а в смысле исполнения программного кода). У каждого блока, кроме основных параметров, есть и свои уникальные характеристики: хеши текущего и предыдущего блоков, перечень транзакций.
Один блок может содержать тысячи подобных записей. По мере того, как память блока подходит к концу, он закрывается, получает подпись, которая затем, в качестве «отпечатка» или хеша, попадает в следующий блок.
Хешем называется определенный набор символов, в котором зашифрован уникальный отпечаток. Хеши зависят от количества и видов транзакций, хранимых блоком в блокчейне.
Обработка транзакций в блокчейне обязательно подразумевает проверку хешей. Для закрытия блока системе необходимо подняться к последнему из хешей, чтобы подтвердить, что все прежние коды целостны и правильны.
Благодаря этим постоянным транзакциям исключается возможность самовольного добавления монет и отправки в сеть неверной информации: этот блок просто не пройдет проверку и не окажется в цепочке. Название указывает на то, что цепочка постоянно работает, формируя новые звенья.
Транзакции в блокчейне на примере биткоина
Биткоины невозможно потрогать, скомкать и положить в кошелек, как бумажную купюру или монету.
Строго говоря, биткоин не существует и в цифровом формате: это вовсе не отдельный файл, который можно записать на диск, и т. д.
Биткоин является информацией о транзакциях данных в блокчейне. А цепочка транзакций — это всего лишь депозитное хранилище, содержащее полную историю движения денег: даты переводов, суммы, адресаты, и т. д.
Биткоин можно кратко охарактеризовать как распределенную сеть адресов с постоянно меняющимся текущим балансом. В этой криптовалюте блокчейн — не данные об отдельных транзакциях, а совокупность блоков. То есть, кроме самих транзакций, это еще и удостоверяющие данные по ним. Блоки формируют майнеры, получающие оплату за это.
Есть три основных параметра у любой транзакции в блокчейне:
- адрес отправителя денег (вход);
- число монет в транзакции (сумма);
- адрес получателя перевода (выход).
Чтобы перевод средств был успешным, необходимо знать кошелек получателя и владеть секретным ключом, обеспечивающим доступ к собственному кошельку и используемым для “подписывания” транзакции. Никаких персональных данных о том, кто отправляет перевод, в них нет, и вам не придется их выдумывать и заполнять. И адрес получателя, и ключ представляют собой особым образом сгенерированные последовательности символов (цифр, букв) в блокчейн-транзакции. Ключ известен лишь владельцу кошелька, а адрес получателя — публичен и доступен для просмотра.
Отслеживание транзакции в блокчейне
Транзакция в блокчейне (на примере биткоина) может иметь два статуса:
- либо она не подтверждена и ожидает подтверждения;
- либо уже подтверждена и тогда включается в блокчейн.
Особенность биткоина в том, что можно отыскать любую совершенную когда-либо, даже очень давно, транзакцию.
Но можно отследить и недавнюю транзакцию и даже удостовериться в том, что она была подтверждена. Это делается очень просто:
Именно в блокчейне можно найти транзакцию биткоина в любой момент времени вне зависимости от давности совершения сделки.
- Ознакомиться с транзакциями внутри блокчейна биткоина можно на специальных сайтах, где в открытом доступе выложена вся эта информация. Даже нет необходимости регистрироваться для этого. Самые актуальные среди них — это Chain.so и Blockchain.info.
- Транзакции находятся в специальном разделе. Достаточно кликнуть на нужную вкладку.
- Ввести хеш транзакции в строку поиска. Хеш создается при проведении перевода биткоинов через любой кошелек.
- Посмотреть детали транзакции.
В этих данных будут присутствовать блоки транзакций. Фактически это число подтверждений, необходимых для того, чтобы совершилась сделка в блокчейне и транзакция была добавлена в цепочку. Количество блоков (от одного до шести, но иногда нужно и больше подтверждений) пропорционально сумме перевода.
Очевидно, что каждый такой блок потребует времени на создание. Эти затраты времени вполне оправданны, поскольку являются частью мер безопасности.
Неподтвержденная транзакция в блокчейне
Если транзакцию не подтвердили, она не будет включена в блок и не подлежит обработке.
Как правило, нужно как минимум одно подтверждение от майнеров, чтобы сделка считалась состоявшейся.
Транзакции в блокчейне не получают подтверждения по ряду причин:
- Не хватило времени. Обычно сеть обрабатывает новую транзакцию — добавляет ее в блок — в течение десяти минут как минимум.
- Не уплачена или уплачена не в полном объеме комиссия за перевод. У транзакций с низкой комиссией — низкий приоритет. А это значит, что и обрабатываться они будут несколько дольше.
- Перегруженность сети. У сети ограниченная пропускная способность, поэтому транзакции не получается подтверждать мгновенно, приходится ждать.
Как правило, достаточно просто подождать еще немного, чтобы транзакцию подтвердили все участники сети. Львиная доля транзакций в блокчейне совершается за день-два, не более.
Но в отдельных случаях, когда комиссия нулевая или очень маленькая, транзакции зависают в статусе “Не подтверждена” на неделю и дольше. В этом случае можно предпринять такие меры:
- Ускорение транзакции (об этом далее).
- Подождать еще: вдруг повезет и ее все-таки подтвердят.
- Применить метод CPFP (Child Pays for Parent): отправить еще немного монет с того же кошелька, но с более высокой комиссией. Тогда новая транзакция будет, с большой вероятностью, добавлена в блок вместе с первой.
- Попросить помощи у поставщика сервиса, хранящего криптовалюту.
Ускорение транзакций в блокчейне
Чтобы «подтолкнуть» зависший перевод, можно увеличить комиссию. Это делается так:
- На сайте blockchain.info или аналогичном проверить, присутствует ли транзакция в очереди.
- Выйти из кошелька. Перезапустить программу, добавив в командной строке команду «-zapwallettxes», удаляющую неподтвержденные транзакции.
- Завести новый платеж с более высокой комиссией.
Кроме того, для ускорения прохождения транзакции в блокчейне применяют алгоритм «ребенок платит за родителей» (Child Pays for Parent). Отправитель повышает комиссию.
Есть несколько способов сэкономить деньги при транзакциях:
- В одну транзакцию собрать несколько платежей (разным получателям).
- Воспользоваться сервисом типа BTC.com, чтобы определить, какое вознаграждение для майнеров оптимально, дабы не переборщить с комиссией.
- Попробовать поставить комиссию чуть ниже, чем официальная рекомендация.
Можно ли отменить транзакцию в блокчейне
Есть теоретическая возможность перенаправления или изменения транзакции, но лишь до момента, когда ее подтвердят майнеры. Как только она попадает в блок, она остается там навечно и хранится на каждом из полных узлов сети. Чтобы изменить такую транзакцию, уже записанную в блокчейн, надо будет переформировать все последующие блоки, который идут за ней.
Однако есть способ отмены транзакции. Обе стороны — и получатель, и отправитель — должны ввести свои пароли, чтобы сделка состоялась, и если получатель этого не сделает, то транзакция не произойдет — деньги вернутся отправителю обратно. Чтобы воспользоваться этой возможностью, надо совершать транзакции со специального кошелька либо вручную добавлять в них скрипт перед отправкой на одобрение.
Off-chain транзакции
Off-chain транзакции обрабатываются за пределами блокчейна. С помощью этих протоколов второго уровня можно обойти недостатки сети и делать платежи быстрее и дешевле.
Например, пользователи, договорившись между собой, открывают канал и меняются секретными ключами от кошельков. В период активности канала можно сколько угодно перекидывать цифровые деньги друг другу. Когда обе стороны готовы к окончанию сделки, канал просто закрывают. Данные о результатах расчетов вносятся в блокчейн.
Протоколы off-chain довольно многочисленны. Это, к примеру, Liquid Network, Lightning Network и т. д. Рассмотрим их поподробнее.
Lightning Network
Этот протокол второго уровня, который основан на блокчейне биткоина и позволяет проводить платежи на любые суммы недорого и быстро. Кроме того, с помощью Lightning Network можно меняться криптовалютой между блокчейнами, не ограничивая себя только биткоином (это называется cross-chain atomic swaps). Ждать помощи от посредников больше не придется. Поэтому данный протокол столь универсален и удобен.
Lightning Network является децентрализованной p2p-сетью. То есть, пользователи могут отправлять друг другу криптовалюту, блокируя ее на адресе, связанном с несколькими парами ключей, посредством транзакций финансирования. Можно повторять транзакции сколько угодно раз на адрес вне блокчейна, пока информация о балансах отправителя и получателя не попадет в блокчейн.
Liquid Network
С предыдущим off-chain протолоком его роднит то, что оба они основаны на биткоине и дают возможность сделок вне блокчейна, и при этом транзакции конфиденциальны и безопасны. Суммы, переводимые в той или иной транзакции, скрыты. Но есть и минус: эта сеть не децентрализована.
Практический пример. Пользователь А создает peg-in транзакцию, чтобы переслать один биткоин (1 BTC) пользователю Б. Этот биткоин привязывается сетью Liquid Network к Liquid (L-BTC), который является эквивалентом настоящего биткоина внутри сети. С помощью L-BTC можно делать переводы на любые суммы в Liquid Network, пока сделка не будет завершена. С этого момента все L-BTC обмениваются обратно на BTC (в пропорции 1:1).
Ethereum Plasma
У Эфира есть свой аналог Liquid Network, и это off-chain протокол Plasma Chain. Этот протокол независим от главного блокчейна Ethereum, поскольку сеть Plasma является дочерней. С помощью нее можно быстрее и экономнее переводить свопы, токены и т. д. за пределами сети Ethereum. В Plasma Chain предусмотрены алгоритмы независимой проверки транзакций, чтобы обеспечить их безопасность, и «fraud proofs».