Контакти

Транзакція не підтверджується, що робити. Час підтвердження Біткоїн-транзакції: скільки чекати? Що означає непідтверджена транзакція біткоін

Мережа біткоїну зростає, курс зростає і все частіше користувачі біткоїну стикаються з проблемою, коли біткоїн транзакція «зависає». Тобто. біткоїни начебто відправлені, але до адресата доходять через кілька днів у кращому випадку. А найчастіше буває так, що транзакція «погуляє» мережею і повернеться на гаманець. Це, до речі, теж один із позитивних варіантів розвитку подій.

Як я вже зазначив, зростання кількості транзакцій у мережі біткоїн призвело до того, що дуже багато транзакцій «висять» непідтвердженими по кілька днів. Причому навіть підвищена комісія не дасть гарантій того, що вашу транзакцію буде оброблено в заявлені кілька годин. Кількість непідтверджених транзакцій у мережі може сягати 200 000.

Основними причинами такої ситуації вважаються: атака мережі біткоїн і мала плата за транзакцію, і тоді манери просто не беруть її в обробку.

Перед тим як надіслати платіж раджу подивитися на завантаження мережі. Це можна зробити і. Там можна побачити рекомендовану ціну за один байт.

Але ж ви не потрапили б на цю статтю, якби не задалися питанням, яке я зробив заголовком. Отже, що робити, якщо транзакція зависла? Існує спеціальний сервіс для «проштовхування завислих» транзакцій.

Для цього потрібно отримати ХЕШ вашої транзакції (нижче наводжу приклад того, як це зробити на блокчейні):

Я навмисно не переписував, а скопіював інформацію з форуму. Там і так описано все у досить доступній формі. Якщо у вас виникнуть питання — ставте їх у коментах, розбиратимемося.

З кожним роком, якщо не місяцем, кількість транзакцій у мережі Біткоїна зростає. Це веде до переповнення блоків. А оскільки негайно включити всі транзакції в блокчейн неможливо, з майнерів, що не ввійшли в блок транзакцій, формується «пул пам'яті» (mempool) - свого роду «черга з транзакцій».

Зазвичай майнери вибирають транзакції з найвищими комісіями та включають їх у блоки першими. Транзакції з нижчими комісійними перебиваються високими і залишаються в пулах пам'яті майнерів до виявлення нового блоку. Якщо ж після знаходження блоку транзакцію, що чекає підтвердження, знову перебиває транзакція з вищою комісією, доводиться чекати наступного блоку, і так далі.

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

Що ж можна зробити, щоби транзакція не зависла?

При надсиланні транзакції

У перші роки існування Біткоіна більшість гаманців додавали вихідним транзакціям фіксовану комісію: зазвичай вона становила 0.1 мBTC (10 000 сатоші). Оскільки в блоках майнерів у будь-якому випадку був вільний простір, вони зазвичай включали ці транзакції до першого видобутого блоку (більшість транзакцій з низькими комісійними або зовсім без них також включалися до блоку).

У міру збільшення боротьби за простір блоку фіксованої плати в 0.1 мBTC для гарантованого включення транзакції в перший блок стало не вистачати. Її перебивали транзакції із вищими комісіями. І, незважаючи на те, що зрештою підтвердження отримували і транзакції з низькими комісійними, на це потрібен був час.

Спробувати підвищити комісію

Якщо ви хочете, щоб транзакція була підтверджена швидше, очевидним рішенням буде підвищення комісії.

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

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

Якщо ви бажаєте, щоб платіж пройшов у найближчих блоках, необхідно заплатити більш високу комісію. Для менш термінових платежів можна включати нижчі комісії, проте на їхнє підтвердження потрібно трохи більше часу.

Використовувати динамічні комісії

Більшість гаманців зараз працюють із динамічними комісіями. Залежно від даних, що одержуються з мережі Біткоіна, такі гаманці автоматично додають комісію, необхідну для включення транзакції до наступного блоку, або хоча б до одного з перших блоків.

Деякі гаманці також дозволяють обирати пріоритетні комісії. І знову вищі комісії сприяють швидкому підтвердженню транзакцій, а низькі вимагають часу.

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

Не бійтеся міняти гаманці

У разі переходу на новий гаманець вам необхідно буде переказати кошти зі старого гаманця. Якщо ви не поспішайте і не проти сплатити за це комісію, можна просто відправити кошти зі старого гаманця на новий через мережу Біткоїн.

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

Після відправлення транзакції

Якщо ви вже відправили транзакцію, і вона зависла, в деяких випадках можна спробувати перестрибнути чергу.

Функція Opt-In Replace-by-fee

Найпростіший спосіб змусити вашу транзакцію перестрибнути чергу - використання опції під назвою Opt-InReplace-by-Fee (Opt-InRBF). З її допомогою можна повторно відправити ту саму транзакцію, але з вищою комісією.

Без цієї функції, коли транзакція в мережі надсилається повторно з підвищеною комісією, мережа відкидає нову транзакцію. Вузли Біткоіна зазвичай відносять нову транзакцію до подвійної трати і тому приймають чи затримують її.

Однак, відправляючи транзакцію за допомогою Opt-InRBF, ви, по суті, повідомляєте мережі про можливість повторного відправлення цієї транзакції пізніше, але з більш високою комісією. В результаті більшість вузлів Біткоіна приймають нову транзакцію замість старої; таким чином, нова транзакція перестрибує чергу.

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

В даний час, функцію Opt-InRBF підтримують як мінімум два гаманці: Electrum та GreenAddress. В Bitcoin Core вона підтримується при обробці транзакцій, однак створювати власні RBF транзакції можна лише за допомогою сторонніх скриптів. Залежно від гаманця, може знадобитися оновлення Opt-InRBF у налаштуваннях меню до відправлення (першої) транзакції.

Child Pays for Parent (дитина платить за батька)

Якщо ваш гаманець не підтримує Opt-InRBF, все трохи ускладнюється.

Тут на допомогу може прийти функція ChildPaysforParent (CPFP). Застосовуючи CPFP, майнери не обов'язково обирають транзакції з найвищими комісіями, а навпаки, вибирають комплект транзакцій із комбінованими комісіями.

Якщо не вдаватися до технічних деталей, більшість вихідних транзакцій не тільки відправляють біткоїни одержувачу, але й повертають «здачу». Цю здачу можна витратити на наступну транзакцію.

Деякі гаманці дозволяють витрачати цю здачу ще до підтвердження транзакції, тобто ви можете надіслати собі здачу новою транзакцією. Цього разу не забудьте включити досить велику комісію, яка компенсує оригінальну транзакцію з низькою комісією. Майнер повинен забрати весь комплект транзакцій та підтвердити їх усі одночасно.

Якщо ваш гаманець не дозволяє вибрати, які саме входи витратити, тобто ви не можете витратити саме непідтверджене здавання, можна спробувати витратити всі кошти в гаманці - в них має увійти здавання.

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

Інші варіанти

Якщо немає можливості застосувати Opt-InRBF або CPFP, технічно можна спробувати надіслати оригінальну транзакцію з вищою комісією. Зазвичай це називають full replace-by-fee, і деякі майнери таку можливість допускають. Хоча публічні гаманці поки що цю опцію не підтримують.

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

З боку одержувача

Звичайно, транзакція, що зависла, представляє проблему і в тому випадку, якщо ви її одержувач.

Якщо ваш гаманець дозволяє витрачати непідтверджені транзакції, це також можна вирішити за допомогою CPFP. Аналогічно описаному раніше, ви можете повторно витратити непідтверджені вхідні біткоїни самостійно, включивши комісію, досить високу для компенсації спочатку низької транзакції. Якщо нової комісії буде достатньо, її буде підтверджено у найближчих блоках.

Єдиний додатковий варіант – запитати відправника, чи використав він Opt-InRBF. У такому разі він зможе повторно надіслати транзакцію з вищою комісією.

  • Платіжні системи
  • Волею доль довелося мати справу з криптовалютами. Не те що щільно працюю з ними, але іноді то відправлю монетки, то отримаю. Скажімо, потроху промацую нову сферу зсередини.

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

    Почну з того, що пост місцями пронизаний здогадами щодо того, що відбувається. Десь я можу помилятися. Об'єктивні поправки та доповнення лише вітаються.

    Трохи про термінологію.

    • Гаманцем називатиму файл wallet.dat.
    • Публічний ключ (адреса, на яку перераховуються кошти, наприклад) часом теж зручніше назвати гаманцем, але, щоб уникнути плутанини, нехай він буде просто номером рахунку.
    • Комісія – Transaction Fee. Називати цю штуку комісією, я вважаю, не зовсім правильно, але це найзвичніший і не ріжучий слух варіант, тому нехай буде комісією.
    • Розмір транзакції - розмір блоку даних, де міститься вся інформація про транзакції.
    До всієї цієї криптовалютної кухні я спочатку підійшов як типовий користувач - не особливо вникаючи в систему. Встановив, запустив, працює – і гаразд. Іноді при спробі надіслати кудись кошти клієнт видавав повідомлення на кшталт « Розмір транзакції дуже великий, не можна просто взяти і надіслати її. Але ви можете додати комісію у розмірі N, і тоді все буде гаразд- я погоджувався з додаванням комісії, і все справді було добре.

    Здавалося б, якщо мене просять додатково заплатити, коли це потрібно, значить я і платитиму, коли попросять (якщо комісія влаштовуватиме). Це було головною помилкою.

    Роблю черговий переказ на суму значно більшу, ніж зазвичай. Кошти з рахунку йдуть, пропозиції заплатити комісію не було... Нічого. До отримувача кошти не доходять, статус транзакції "0/Не підтверджено". І таку картину я спостерігав більше тижня, принагідно перегугуючи та перечитуючи інтернети у пошуках інформації щодо вирішення подібної проблеми. Причому шукав і для конкретної криптовалюти, і загалом для всіх – проблем купа, рішення немає.

    А що ж це за комісія? Ідея в тому, що транзакції можуть відбуватися без комісії, але лише у разі дотримання деяких умов:

    • Розмір транзакції повинен бути не більшим за певну величину.
    • Сума, що перекладається, повинна бути більшою за якийсь поріг.
    • Транзакція повинна мати достатній пріоритет.
    Якщо перші два пункти більш-менш зрозумілі (конкретні величини наводити не став, гадаю, вони можуть змінюватись від форка до форка), то в третьому вся загвоздка. Грубо кажучи, транзакції під час створення потрапляють у чергу, відсортовані за пріоритетом. При генерації чергового блоку до нього включаються транзакції з комісією (яка йде в нагороду тому, хто знайшов блок), а також транзакції без комісії з найвищим пріоритетом.

    Сам пріоритет прямо залежить від обсягу переказуваних коштів і від числа їх підтверджень (чим довше саме ці гроші лежали у вас на рахунку, тим більше має бути пріоритет, по суті) і залежить від розміру транзакції. Таким чином, при невдалому збігу обставин транзакція без комісії може опинитися в непідтвердженому стані, з яким я і зіткнувся.

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

    • Зачекайте добу-дві, вашу транзакцію включать до чергового блоку.
    • Зачекайте добу-дві, програмі-клієнту набридне чекати, і вона сама скасує транзакцію.
    • Завантажте знову весь ланцюжок блоків.
    • Запустіть клієнт з якимсь чарівним ключем (-rescan/-reindex/-salvagewallet).
    Чекав я більше тижня. У жодний блок транзакцію не включили. Навіть після повторних відправлень через sendrawtransaction. Блокчейн казав, що про ту транзакцію нічого не знає, і на рахунку лежать ті самі засоби, нікуди вони не пішли. І тільки клієнт стояв на своєму: «Я транзакцію відправив далі як хочеш. Вже витраченими грошима розпоряджатися не дозволю».

    Отже, у чому суть проблеми? Транзакція не потрапила до блоку і вже не потрапить. У гаманці зберігається інформація про те, що транзакція загалом була, тому кошти, які мали з нею вирушити, недоступні для використання. Можливо, ще через якийсь час транзакція буде скасована, з цього приводу у мене кілька припущень:

    • Залежить від валюти, десь швидко скасовується, десь треба чекати довго.
    • Баг конкретного клієнта.
    • Інформація про скасування неправильна.
    У будь-якому випадку, тиждень – це досить великий термін. Якщо за цей час не пройшло саме, то є підстави вважати, що й не минеться.

    Як нормальна людина, після того, як усе вже зламалося, я пішов читати мануали. Спроба повторити транзакцію із включенням до неї комісії зазнала фіаско. Зате нескінченні стрибки за посиланнями між форумами (у видачі гугла нічого не знайшлося) довели мене до якогось посту, де і знайшлася слушна підказка. На жаль, тепер знайти цю посаду не вдається, навіть не знаю, що був за форум. Гадаю, якийсь околобиткойновий.

    Рішення описуватиму на прикладі клієнта, найбільш поширеного для форків, відомого як Satoshi Client. Наскільки розумію, воно можна застосувати і до інших клієнтів, але, можливо, зі своїми нюансами.

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

    Отже, якщо транзакція зависла і не має підтверджень:

    1. Виявіть терпіння. Не піднімайте одразу паніку. Зачекайте пару днів, раптом і справді пройде.
    2. Перевірте, чи транзакція зависла. Зайдіть в Block Explorer (зазвичай гуглиться за запитом «blockchain %назвакриптовалюти%») і перевірте, що про транзакцію, що зависла, там нічого не знають, а на рахунку гроші насправді є.
    3. Перейдіть в налагоджувальну консоль (Допомога - Вікно налагодження - Консоль)
    4. Якщо гаманець зашифрований (він же зашифрований?), то спочатку необхідно отримати доступ, використовуючи команду walletpassphrase .
    5. Тепер необхідно отримати приватний ключ від потрібного рахунку. dumpprivkey
      . Замість
      Необхідно підставити громадський номер рахунку, у якому лежать заблоковані гроші. У відповідь отримайте приватний ключ цього рахунку. Його потрібно кудись скопіювати, він ще знадобиться. Якщо кошти на транзакції бралися з кількох рахунків, те й імпортувати треба їх усі. І так, ніколи не зберігайте приватні ключі у доступному для будь-кого місці. Знання ключа дає повний доступ до відповідного рахунку.
      Зверніть також увагу на те, що на кожну команду в консолі налагодження приходить відповідь. Він може бути порожнім, але є завжди. Пізніше буде зрозуміло, до чого це я.
    6. Закрийте клієнта і видаліть гаманець. Розташування гаманця (wallet.dat) залежить від конкретного клієнта та ОС. Звичайно, зовсім видаляти його не варто, краще перейменувати або перемістити в надійне місце.
    7. Запустіть клієнт знову. Створиться новий гаманець. У нього необхідно імпортувати отриманий ключ (ключі). Йдемо у налагоджувальну консоль і пишемо importprivkey . Імпорт може здійснюватися досить довго. Дозвольте йому завершитись - дочекайтеся отримання відповіді на команду.
    8. У новому гаманці має з'явитися рахунок із реальним його станом. Для надійності можна перезапустити клієнт із ключем -rescan, але, гадаю, це вже зайве. Раніше заблоковані засоби знову доступні для відправки, надсилайте їх заново, цього разу не забудьте включити комісію. ( є важливі доповнення з цього пункту в upd3)
    9. Якщо на старому гаманці залишилися інші важливі рахунки, що використовуються, можна знову повернутися до нього.
    Таким нехитрим чином вдалося повернути криптомонетки. Хоча я вже й почав думати, що вони зовсім втрачені. Загалом не сподівайтеся на диво, перед використанням нового клієнта переконайтеся, що комісія завжди включена. Рекомендований розмір комісії, думаю, краще шукати на ресурсах, присвячених використаній криптовалюті.

    Upd:Необхідність описаної операції залежить від використовуваного клієнта (бо у багатьох криптовалют по одному клієнту, те й від використовувані валюти). Схоже, у деяких випадках інформація про транзакцію записується не у файл гаманця, а лише у локальний ланцюжок блоків. При такому розкладі може допомогти видалити наявний ланцюжок або запустити клієнта з ключами.

    Upd2:Значно спростити описаний процес перенесення рахунків новий гаманець може ключ -salwagewallet, вже згаданий раніше. При запуску клієнта з цим ключем створюється новий wallet.dat, в який імпортуються всі рахунки зі старого, а історія транзакцій до нього береться з блоків ланцюжка (за опис спасибі). На жаль, запуск із цим ключем реалізований не у всіх клієнтах.

    Upd3:Якщо після імпорту перерахувати не всю суму, що є на рахунку, то частина коштів (здача від виходів, що використовуються) буде перерахована на інший рахунок нового гаманця. Зважайте на це, якщо плануєте повернутися до старого гаманця:

    • Імпортувавши рахунок у новий гаманець, переведіть усі кошти з нього на інший власний рахунок, поверніться до старого гаманця і після цього вже розпоряджайте повернутими коштами.
    • Після транзакції з нового гаманця визначте, на який рахунок впала здача, і імпортуйте цей рахунок у старий гаманець.


    Непідтверджена транзакція Біткоїн - угода в криптовалютній мережі, яка після ініціації не отримала місце в черговому блоці ланцюжка. Число операцій з Bitcoin зростає, тому при заповненні елементів блокупотоку з'являється конкуренція. Розмір блоку залишається постійним і становить лише 1000 Кб (1 Мб). Не дивно, що у криптомережі все частіше виникають затримки, що розтягуються на 5–7 годин та більше.

    Такі ситуації створюють труднощі для людей, які планували швидко переказати гроші, але зіткнулися з непередбаченою паузою у транзакції. Що робити? Як вчинити, якщо платіж завис? У чому особливості кожного методу? Ці та інші нюанси розглянемо нижче.

    Чому може зависнути транзакція Біткоїна?

    Час відправлення криптовалюти іншому користувачеві залежить від низки факторів - завантаженості мережі на момент переказу, розміру встановленої, обсягу угоди, а також пріоритету платежу. Щоб уточнити час, що залишився для підтвердження (хоча б орієнтовно), можна зайти на спеціальний сервіс (наприклад, blockchain.info), після чого вказати термін пошуку ID операції.

    Причин, чому не підтверджується транзакція Біткоїна, безліч:

    1. Угода витісняється з блоку іншою операцією, яка має пріоритет. Це можливо, коли розмір елемента ланцюга підходить до граничного параметра, а переклад учасника мережі виявився останнім.
    2. Закінчується час «життя» платежу, який дорівнює 72 годинам.
    3. З'являється конфлікт між поточною операцією та іншою угодою, яка раніше була підтверджена.
    4. Платіж замінюється відправником на інший платіж.
    Операція, яка «видавлена» з блоку, може повернутися в сховище відправника (при отриманні статусу транзакції, що не відбулася) або зависнути. Іноді платіж прямує гаманцем знову і знову. У такій ситуації гроші «заморожуються» і застосувати їх не вдасться. У гаманці з'являється інформація наступного змісту Status:0/unconfirmed, in memory pool.

    Остання ситуація відбувається рідко. Як правило, після закінчення 3-ї доби гроші повертаються на сховище відправника. Це відбувається у випадку, якщо людина відправила невелику суму і виставила надто низьку або нульову комісію.

    Що робити, якщо зависла транзакція Bitcoin – всі варіанти


    Зростання попиту на Біткоїна і затримки з підтвердженням транзакцій призвели до нового етапу обговорень проблем з мастштабуемістю Біткоїна. Поточного розміру блоку 1 Мб недостатньо, щоб покрити потреби користувачів, які щодня здійснюють мільйони перекладів. Якщо виходити з того, що середній обсяг операції дорівнює 0,5 Кб, в один блок вміщується 2000 угод, а реальних запитів у десятки разів більше. Як наслідок, у черговий вузол «пробиваються» великі платежі з високою комісією, а решта висить у статусі непідтверджених і чекає на свою чергу. Нижче розглянемо, як діяти у ситуації, якщо зависла транзакція Біткоїна.

    Дочекатися проведення операції

    Якщо час терпить, можна не форсувати події та просто почекати. Поширена причина затримки пов'язана із завантаженням мережі та обмеженою кількістю майнерів, що займаються формуванням чергового блоку. Якщо мережа не відрізняється високою волатильністю та не перевантажена, причиною може бути низька комісія. Дізнатися про оптимальну премію можна за посиланням btc.com/stats/unconfirmed-tx. На 11 квітня 2018 року рекомендований розмір платежу дорівнює 0,00001 Біткоїн за 1 Кб. Отже, під час проведення транзакції обсягом 500 Кб комісія має становити щонайменше 0,0005 BTC.

    Заміна розміру премії (Replace by fee)

    Можна замінити комісії. Така можливість доступна для відправника коштів. Офіційна назва опції – Replace by fee (RBF). За її відсутності повторний переклад не пройде перевірку і буде відкинуто блокчейном. Це з тим, що подвійна витрата тих самих коштів заборонена. Включення розглянутої настройки інформує систему про те, що угода коректна.

    Суть функції проста. Відомо, що платежі з меншою комісією проходять довше, ніж угоди, за які призначено вищу премію. Якщо користувач збільшить винагороду, транзакція пересунеться по черзі і буде проведена однією з перших. Така особливість має назву «вибіркова заміна комісії» (Replace by fee). Сутність у тому, що операція не змінюється – просто до неї додаються додаткові комісійні.

    Під час проведення такої маніпуляції важливо бути уважним, адже система може сприйняти дію з позиції подвійного витрачання та заблокувати проведення платежу. Якщо ж застосувати опцію RBF, брак транзакції виключено. При включенні функції мережа бачить операцію, яка має велику комісію, після чого угода переміщується вперед по черзі і скоріш виконується.

    Наявність такої опції ще не дає гарантії швидкого проведення перекладу, адже це залежить від майнерів, які формують блоки. Причина в тому, що не всі учасники мережі працюють із Replace by fee. Крім того, RBF є актуальною не для всіх гаманців. Сьогодні вона підтримується гаманцями Електрум та ГрінАдрес. Що стосується Bitcoin Core, то така функція доступна при включенні додаткових скриптів.

    Щоб активувати опцію, достатньо зайти в гаманець та активувати опцію Replace by fee. Як правило, цього достатньо для прискорення перекладу та виключення його зависання у мережі.

    Прискорювачі

    Непідтверджені транзакції Bitcoin можна проштовхнути за допомогою спеціальних прискорювачів. Один з варіантів – майнінговий пул viaBTC, що дозволяє знизити час проведення перекладу. Незважаючи на порівняльну «молодість», сервіс заслужив популярність у широких колах і часто застосовується для прискорення угод, що зависли, в криптовалютній мережі. Якщо транзакція не надходить одержувачу протягом доби та більше, допомога такого пулу буде корисною.

    Недоліки viaBTC для прискорення транзакції Bitcoin:

    1. Сервіс складний в управлінні, тому перед застосуванням варто згаяти час на розгляд його можливостей.
    2. Програма працює з невеликою кількістю транзакцій, що призводить до періодичних зависань у процесі застосування. Насправді прискорювач обробляє кілька угод протягом 60 хвилин, що обмежує його можливості.
    3. Зайти в пул вдається не завжди. Наприклад, 11 квітня 2018 року із цим виникли проблеми. Система просить увійти на сторінку пізніше.
    4. У майбутньому послуги майданчика стягуватиметься комісія, яка залежить від розміру транзакції.
    Для запуску прискорювача потрібно ID операції, а також введення каптчі. Сервіс вивчає введені відомості та ставить переклад у чергу. Якщо транзакція відзначена сервісом, вона переноситься до блоку, отриманого пулом.

    Альтернативою для розглянутого сайту є пул AntPool. Крім того, в Інтернеті можна знайти ресурси-агрегатори (наприклад, perenosi.com), розробляються боти-прискорювачі для месенджера телеграм (приклад @FastTXbot).

    Подвійне витрачання (Double Spending)

    Якщо зависла транзакція Bitcoin, можна застосувати ще одну методику – вдруге передати гроші тим самим сервісом. Наприклад, учасник мережі бачить, що платіж не проходить протягом тривалого часу і перебуває у підвішеному вигляді. Тут можна скористатись особливостями блоккау - проведенням відразу декількох операцій.

    Суть у цьому, що перевірка обсягу коштів у рахунку проводиться у певний час. Якщо перший переклад виявився неуспішним, відправник має право змінити деякі параметри, наприклад, збільшити розмір премії та провести платіж знову. Переживати, що обидві операції пройдуть, не варто. За правилами криптовалютної мережі під час відправки однієї й тієї ж активу проводиться угода, має більш вигідні умови учасників мережі (майнерів). Інші аналоги знищуються. Єдиний ризик – розгалуження ланцюга, тому до застосування налаштування Double Spending варто підходити з обережністю.

    Розглянемо, що потрібно зробити застосування методики з прикладу Bitcoin Core. Зазначимо, що з інших гаманців підхід залишається аналогічним. Різниця може у найменуванні команд, а загальна послідовність не змінюється. Алгоритм такий:

    1. Готуємось до проведення Double Spending.Для цього важливо переконатись, що транзакція зависла. Трапляється, коли угода підтверджена, але з різних причин не доходить до адресата. Для перевірки рекомендується використовувати цей сайт blockchain.info. Якщо напроти угоди є фраза "unconfirmed transaction", переходимо до подальших кроків. Крім того, можна звернути увагу на час проведення правочину, але він орієнтовний.
    2. Закриваємо програму-сховище Біткоїн, після чого в командному рядку вводимо слово "zapwallettxes". Інші варіанти команд використовувати заборонено, адже можливе випадкове видалення ключа та втрата доступу до грошей.
    3. Очікуємо на запуск гаманця.Після пуску в ньому вже не буде транзакцій, що зависли. Але не варто радіти заздалегідь, адже в криптовалютній мережі вони ще збережені. До речі, користувачі Bitcoin Core старої версії 0.14 повинні змінити ім'я або надіслати документ mempool.dat в іншу папку, після чого заходити до програми.
    4. Проводимо нову угоду із зазначенням вищої комісії.Пам'ятайте, що ризик підтвердження колишньої угоди через якийсь час залишається. Щоб виключити таку ситуацію, у новому платежі важливо вказувати параметри, що максимально схожі на проведену раніше (неуспішну) операцію. У такому разі система не дозволить їй виконатись. Наприклад, важливо прописати ідентичний розмір входу Bitcoin (знайти необхідний параметр можна у розділі inputs). Щодо розміру угоди, його можна збільшити для прискорення переказу.
    5. Заповнюємо необхідні поляза звичним планом (як у проведенні стандартної транзакції).
    6. Очікуємо завершення операції, яка має пройти швидше.

    CPFP

    Популярний метод «проштовхування» платежу – Child Pays for Parent. Він підходить у ситуації, коли застосовуване сховище не дозволяє включити розглянуту вище опцію RBF. Мінус способу в тому, що за нього доведеться платити. Крім того, лише невелика кількість пулів підтримує застосування CPFP. Для «просування» угоди, з якою виникли труднощі, необхідно використати будь-який із виходів транзакції. Важливо, щоб суми на рахунку було достатньо проведення двох операцій.

    Суть у цьому, що відправник формує ще один переклад із застосуванням виходу оформлення нової транзакції. Відправлення Біткоінов може здійснюватися на будь-яку адресу. Головне - використовувати решту із завислого платежу. Не менш важливий нюанс – розмір комісійної виплати, який має прописуватися одразу для двох операцій.

    Розглянемо застосування цього методу на прикладі гаманця Bitcoin Core. Вихідна умова – транзакція розміром 0,095 Біткоінов. Алгоритм такий:

    1. Переходимо до розділу налаштувань і вибираємо кнопку параметрів.
    2. Входимо в підкатегорію «Гаманець» та включаємо управління входами (встановлюється позначка у спеціальному полі). Тут же ставимо позначку, дозволивши витрачати непідтверджену здачу. Бувають ситуації, коли згадані галочки вже встановлені (у разі нічого не міняємо).
    3. Закриваємо вікно і тиснемо кнопку відправки.
    4. Переходимо в розділ входів і ставимо позначку навпроти суми, що цікавить (у нашому випадку 0,095 BTC).
    5. Вказуємо адресу сторони, що отримує, після чого схвалюємо дії, натискаючи на кнопку «ОК».
    6. Ставимо число 0,095 і тиснемо на позначку проти команди «Відняти комісію із суми». Тут же відзначаємо вибірковий комісійний платіж за кілобайт. Важливо, що премія обчислюється з розрахунку проведення двох угод. Обчислення здійснюється в такий спосіб. Спочатку величина колишньої операції поділяється на розмір нового платежу. До отриманого числа додається одиниця, а результат множиться на оптимальну комісію за 1 Кб.
    Як зазначалося, не всі пули працюють із цією схемою, але за наявності такої опції варто їй скористатися.

    Динамічна зміна комісії

    Одна з причин, чому підтверджується транзакція Bitcoin - низька комісія. Щоб змінити ситуацію на свою користь, можна провести динамічну зміну цього параметра через гаманець. Для цього гаманець повинен підтримувати таку функцію. Суть спеціальних сховищ у тому, що вони автоматично вважають оптимальний розмір винагороди, за якого операція в криптовалютній мережі проходить швидше. Якщо власник гаманця погоджується із запропонованим параметром, угода без затримок включається до чергового блоку.

    Динамічна правка комісії дозволяє вирахувати пріоритет угоди. Тут підхід простий. Чим більша премія, тим вища пріоритетність. Розглянуте правило є особливо актуальним у періоди максимального завантаження мережі. Якщо користувач вказав високу винагороду, а транзакція все одно зависає, це вимагає термінових дій. Часто проблема пов'язана із застосуванням старих версій гаманців для Bitcoin. У такому разі є два шляхи – оновити існуючий або встановити новий гаманець.

    Відкат непідтвердженої транзакції

    Ще один спосіб вирішити проблему із зависанням – скасувати транзакцію Bitcoin. Наприклад, у випадку з Bitcoin Core потрібно зробити таке:

    1. Переконуємось через сайт blockchain, що угода не підтверджена.
    2. Входимо в гаманець, а далі в розділ налагодження, для чого переходимо по дорозі «допомога, вікно налагодження і консоль». Якщо гаманець шифрований, він потребує доступу. Для цього вводиться команда walletpassphrase< passphrase >.
    3. Отримуємо персональний ключ від необхідної адреси. Для цього вказуємо фразу dumpprivkey< address >. Слово у фігурних дужках міняємо на адресу, використану для проведення транзакції. Отриманий ключ потрібно копіювати в окреме місце. У випадку з груповою операцією, коли Bitcoin відправлялися з декількох облікових записів, потрібні ключі для кожного з них. Наявність під рукою цих даних відкриває доступ до рахунку.
    4. Закриваємо кабінет та видаляємо гаманець. Єдине, що варто зберегти – wallet.dat. Цей файл рекомендується заздалегідь перейменувати та перемістити в іншу папку.
    5. Перезапускаємо програму, і чекаємо на створення нового гаманця. Вставляємо в нього отримані ключі, переходимо в панель налагодження і прописуємо importprivkey< privkey >. Перенесення відомостей займає певний час. Важливо, щоб процес не переривався.
    6. Перевіряємо рахунок. Завислі операції видаляються, а блоковані гроші доступні для перерахування. Тепер можна знову оформляти транзакцію, але вже з вищою комісією.
    Розглянутий метод не дає результату у разі застосування хмарного сховища щодо перекладу.

    Як захиститись від непідтверджених транзакцій Біткоїн?


    Щоб убезпечити себе від проблем із транзакціями Bitcoin, що зависли в майбутньому, потрібно зробити наступне:
    1. Відразу виставлятиме оптимальну премію за проведення транзакції. Бажання заощадити може вилитися в тривалі витрати на очікування підтвердження операції. Відразу визначтеся, що важливіше – швидкість чи економія.
    2. Перед проведенням транзакції важливо включити опцію RBF, яку згадувалося вище. Далі під час проведення операцій через гаманець рекомендується робити позначки Replaceable. Але варто переконатись, що гаманцем підтримується така опція.
    Якщо виставлено адекватну комісію, але транзакція все одно зависла, не діяти не можна. У такому разі високий ризик зависання переведення на тривалий час. Щоб вирішити проблему, стануть у нагоді методи, які розглянуті у статті. Головне - не панікувати, адже затримка операції є звичайною справою у криптовалютній мережі Біткоїн. Спочатку потрібно розібратися з причиною появи проблеми, а вже потім приступати до її вирішення. Як правило, допомагає прискорювач або подвійна витрата. Але краще не допускати таких затримок та одразу виставляти актуальну комісію.

    Що робити, якщо зависла транзакція Bitcoin, дивіться у наступному відео:

    13.02.201717:21


    Борис Оболікшто
    експерт

    Приємно почуватися скидувачем міфів, і спокуса зайняти таку позицію завжди велика. Щоб не піддатися йому, відразу зауважу, що описані нижче події трапляються рідко і не повинні бути спростуванням усталених уявлень про те, що біткоін - надійний платіжний інструмент, а біткоін-транзакція (переведення цього цифрового грошика) - швидка і проста операція. Тим не менш, для більшості користувачів біткоін-сервісів платіж, що «завис», виявиться несподіваним і, можливо, лякаючим. Тому повторюся: випадок нетиповий, але не унікальний. І дуже яскраво демонструючий, з одного боку, користь від розуміння основ роботи криптовалют (як, втім, і будь-якої технології), а з іншого - неготовність існуючої інфраструктури до роботи з блокчейном.

    Завислі Bitcoin-платежі: як це відбувається? Фото: mmgp.ru

    Отже, історія наша почалася з банального бажання мого знайомого поповнити рахунок мобільного телефону за допомогою біткоін-сервісу, для цього і призначеного (ТАК! вас є непустий биткоин-гаманець). Також раніше ми розповідали, зокрема за допомогою мобільного додатка.

    Отже, йшли останні дні серпня 2016 року, було жарко і… Ну не знаю, нехай виною всьому буде 30+ градусів, комп'ютер, що перегрівся, і мозок, що плавиться від спеки. Все одно більш виразних причин, які явно пояснюють ексцес, я поки не знайшов.

    Скриншот 1. Щоб поповнити рахунок біткоінами, потрібно всього кілька кліків

    Поповнити рахунок просто: заходиш на сайт сервісу, вводиш свій номер телефону, вибираєш суму поповнення рахунку та отримуєш адресу для перекладу BTC-шек зі свого гаманця сервіс-провайдеру (див. скріншот 1). Якщо гаманець на мобільному пристрої, то ще простіше: QR-код допоможе швидко передати всі параметри та виконати оплату. Зазвичай так і відбувається: ви наводите камеру на QR-код, гаманець формує транзакцію і виконує оплату. Але того разу щось пішло не так… Ні-ні, читачу, немає причин хвилюватися – все добре скінчилося, але не забігатимемо вперед.

    Отже, з погляду користувача все як завжди: гаманець (це був Bitcoin Core - найтрадиційніший з можливих) сформував транзакцію, відправив її в мережу і… І нічого не сталося. Не прийшло підтвердження перекладу, що надходить зазвичай хвилин через п'ять-п'ятнадцять (рідше - через півгодини-годину). І наступного дня гаманець повідомляв про статус транзакції невтішне: Status: 0/unconfirmed, in memory pool (Статус: непідтверджена, в пулі). Як напевно знає читач, транзакції в биткоине безвідкличні, тобто немає способу їх скасувати, гроші, що перераховуються з гаманця, пішли, а до одержувача не дійшли. Зависли, і тепер у гаманці їх немає, і рахунок мобільного не поповнено.

    Ситуація «завислої» біткоін-транзакції не унікальна, навіть російською мовою Google дає тисячі посилань на запит «завислі біткоін транзакції» (у видачі за запитом «Bitcoin Transaction Pending» кілька сотень тисяч позицій, широке обговорення транзакцій, що зависли) російською. Постараємося розібратися, що сталося, але для цього нам потрібне докладніше уявлення про те, як відбуваються транзакції, ніж натиснув кнопку - і ОК.

    Не дублюватиму розповідь про те, як влаштований біткоїн (можна прочитати ), зупинимося тільки на процесі виконання транзакції. Ваш біткоін-додаток, запитавши з якого гаманця, скільки і кому ви перекладаєте, сформує та відправляє в мережу запит на транзакцію, яка описує все перераховане у належному форматі. Транзакція потрапить у пул (memory pool - mempool) і там чекатиме майнера, який помістить її в блок. Коли блок із цією транзакцією потрапить до блокчейну, переклад завершиться. Як пам'ятає читач, блокчейн складається не з окремих транзакцій, а з блоків, тобто наборів транзакцій та даних, що їх засвідчують. Блоки формують майнери, які отримують це два види винагород: плату за блок (зараз це 12,5 BTC) і комісію за транзакції, включені в блок.

    Майнери змагаються за цю плату, тому створити блок завжди намагаються одночасно кілька майнерів. Хтось виявляється успішнішим і робить це раніше, отримуючи винагороду, іншим доводиться лише сподіватися на удачу в майбутньому. Зрозуміло, можлива ситуація, коли кілька майнерів створюють свої блоки майже одночасно (блоки, зазвичай, не однакові, оскільки майнери включають у них ті чи інші транзакції з пулу на власний розсуд). Винагорода дістанеться одному з майнерів - тому, чий блок продовжить ланцюг (тобто після нього з'явиться наступний блок і т.д.), блок (або навіть невеликий ланцюжок блоків), що залишився, не отримавши продовження, «помре».

    Але поки повернемося до пулу – місця, де «живуть» транзакції, ще не підтверджені та не відкинуті (детальніше). Майнери відбирають із пулу транзакції, намагаючись сформувати з них блоки. Так як розмір блоку обмежений, то блок найчастіше відбирається лише частина транзакцій з пулу (зараз, коли я пишу ці рядки, в пулі майже 41 тисяча непідтверджених транзакцій, що займають більше 42 МБ - зрозуміло, що їх все не помістити в один блок) . Якщо ми простежимо долю типової транзакції, то побачимо фази її життя (див. скріншоти 2 та 3).

    Скріншот 2. Транзакція з'явилася у пулі

    Скріншот 3. Транзакція підтверджена та з'явилася у блокчейні

    Підтвердження - типова, але не єдина можлива доля транзакції, що потрапила до пулу. У нормальних умовах транзакції залишають пул одним із наступних способів:

    • Коли транзакція включається до блоку (підтверджується);
    • Коли транзакція або одне з її джерел починає конфліктувати з іншою вже підтвердженою транзакцією (гроші джерела витратили раніше, ніж настала черга транзакції);
    • Коли транзакція має найменший пріоритет у пулі, пул досяг максимально допустимого розміру і до нього додається транзакція з вищим пріоритетом (витіснення);
    • Коли транзакція помирає за тайм-аут (за замовчуванням через 72 години);
    • Коли транзакція замінюється (це відносно нова можливість, ми її обговоримо пізніше).

    Нашій транзакції не пощастило: чи то рука здригнулася під час відправлення оплати, чи ще якась непередбаченість трапилася, але в транзакції, яка пішла в пул, виявилася нульова комісія (fee). Тут потрібне пояснення. Формально протокол біткоїн-мережі не вимагає комісії. Коли біткоїн тільки-но з'явився, були можливі безкоштовні транзакції (на жаль, не всі стежать за змінами, і досі іноді можна почути від неофітів, що переклади біткоїну безкоштовні).

    Коли технологія стала популярною і темп появи транзакцій зріс, виникло кілька причин появи плати за транзакцію (transaction fee). По-перше, щоб позбавитися спаму - безглуздих транзакцій, що породжуються зловмисниками, що атакують ресурси спільноти, або помилками невмілих розробників. По-друге, необхідністю ранжувати транзакції, щоб дати можливість користувачам прискорити проходження своїх платежів. У транзакцій з нульовою комісією трохи шансів потрапити в блок і стати підтвердженим у наш час, коли запитів на транзакції більш ніж достатньо. Тому доля нашої транзакції мала бути незавидною: померти по таймууту або витіснитись з пулу.

    Залежно від того, яким гаманцем ви користуєтесь, звичайна доля «убитої» транзакції може бути різною. Наприклад, транзакція може бути оголошена такою, що не відбулася, і невідправлені кошти знову з'являться в гаманці. Але можлива й повторна спроба гаманця відправити транзакцію на виконання у пул. У такому разі транзакція «відродиться» в пулі і висітиме там, періодично відновлюючись, необмежено довго. У разі ваші кошти виявляються замороженими: вони недоступні ні вам, ні одержувачу. Саме такий випадок найчастіше описують користувачі, що зіткнулися з завислими транзакціями (див. наприклад, замітку про експерименти з нульовою комісією). На перший погляд, саме з такою ситуацією і зіткнувся мій знайомий - гаманець наполегливо повідомляє все те саме: Status: 0/unconfirmed, in memory pool.

    В описаних випадках (див., зокрема, посилання вище), завислі кошти вдається повернути в гаманець, використовуючи спеціальні ключі перезавантаження або перезавантаживши програму з нуля (в останньому випадку блокчейн завантажується знову шляхом запитів до мережі, тобто транзакції, що не потрапили в нього) проігноровані, і кошти повернуться до гаманця). Процедура повного перезавантаження клопітка і може займати дуже багато часу (не жарт - перезавантажити більше 100 ГБ даних блокчейна), проте мій знайомий виконав її. І нічого доброго не побачив. Навіть за кілька місяців популярний сервіс аналізу блокчейна blockchain.info повідомляв: «Transaction rejected by our node. Reason: Fee is too low / Not sufficient priority» («Транзакція відкинута нашим вузлом. Причина: Комісія надто мала / Недостатній пріоритет»). Тобто, транзакцію, як і раніше, бачив, але виконувати її відмовлявся. Сумна ситуація.

    Але нам пощастило! 21 січня справа дійшла до нашої транзакції, і вона (ура!) Виконалася. І в описі транзакції видно, що було незвичним. Розглянемо скріншот 4.

    Скріншот 4. "Наша" транзакція підтверджена!

    Крім нульової комісії (Fees), транзакція відрізняється від показаної на третьому скріншоті ще й полем Lock Time. Цей параметр транзакції показує, з якого блоку майнери можуть включати блок транзакцію. Багато гаманці ставлять 0, дозволяючи вмикати негайно. А гаманець Bitcoin Core, що по праву першозасновника вважає себе зобов'язаним стежити за безпекою всієї біткоін-мережі, встановлює значення найближчого генерованого блоку, що перешкоджає можливості зловмиснику атакувати мережу, вибудовуючи з пізніх транзакцій гілку, що конкурує з вже існуючими блоками. Але блок 427560 виявився тим рідкісним блоком, який придбав конкурента. Два майнери майже одночасно, з відзнакою менше двох секунд, згенерували блоки з таким номером (правильніше говорити «такої висоти» - порядковий номер блоку в блокчейні називають висотою).

    Блоки, які породжували точки розгалуження, відображає, наприклад, Blockchain.info

    Ймовірно, це рідкісне поєднання: прив'язка до роздвоєного блоку і нульова комісія породили ситуацію, через яку наша транзакція надовго зависла в пулі. На щастя, все закінчилося добре: транзакція виконалася, і рахунок мобільного було поповнено. Проте, що сталося, на мій погляд, гарна нагода поговорити про те, наскільки перспективними є платежі в біткоїні.

    З одного боку, у міру зростання інтересу до технології та кількості активних гаманців, зростає кількість запитів на транзакції, а значить і конкуренція за підтвердження транзакцій (тобто виконання платежів). З іншого боку – ситуація покращується тому, що нові гаманці підтримують динамічне завдання комісії залежно від наповненості пулу. А розробники вводять нові можливості, зокрема, можливість збільшити комісію для вже відправленої в пул, але транзакції, що ніяк не підтверджується (функція Opt-In Replace-by-fee (RBF)). Звичайно, нові можливості з'являються не відразу і не у всіх гаманцях, що змушує користувачів стежити за ситуацією, можливо, уважніше, ніж хотілося б. Можна порадити, зокрема, переклад щодо свіжої замітки "Що робити, якщо "зависла" транзакція в мережі Біткоїна?"

    Сервіс підтримки користувачів міг би стати ще одним фактором, що стимулює поширення біткоін-платежів. Але поки що порятунок потопаючих справу рук… Нехай не лише самих потопаючих, але ще й ентузіастів, які нагадують на форумах що робити. Однак хотілося б бачити постійно діючі сервіси/гарячі лінії, нехай хоча б на рівні оголошень на стовпах: «Настрою біткоін-платежі, допоможу повернути транзакції, що зависли». Зрозуміло, тут є проблема: поки платежів небагато, сервіс не може бути рентабельним, поки сервісу немає - важко розраховувати на вибухове зростання числа платежів (до речі, зростання мало б створювати і сервіси-надбудови, що дозволяють виконувати кліринг платежів між учасниками сервісу, знижуючи навантаження на блокчейн).

    Ще одне питання стосується не технології, а права. Якщо транзакція може відбуватися досить довго, а волатильність біткоїна немаленька, то потрібні правила, оскільки звичні «три банківські дні» перестають відповідати нашим уявленням про справедливість. У прикладі, на якому ми розглядали завислий платіж, кошти були зараховані за курсом на момент створення транзакції. Але з моменту транзакції курс біткоїну зріс у півтора рази! Ок, мій приятель, що зачекався перекладу, був радий і цьому. Але навряд чи такі ризики є прийнятними для масових платежів. Насилу уявляю собі і зворотну ситуацію, коли транзакція, що прийшла на третій день, втратила помітну частину вартості. Можливо, ситуацію поправила б страховка біткоін-платежів? Але про такі послуги я не чув.

    Іншими словами: технологічна готовність до впровадження криптовалют на сьогодні набагато вища, ніж інфраструктурна. Почасти поліпшенню ситуації може сприяти кожен, хто включився у освоєння криптовалют. А поки що від усіх ентузіастів потрібно не втрачати пильності і не випускати з уваги зміни, що відбуваються.



    Сподобалась стаття? Поділіться їй