Press "Enter" to skip to content

Як працюють комісії за транзакції в мережі Bitcoin? Докладний розбір

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

Крім того, з’ясуємо, як саме оновлення Segregated Witness сприяє зниженню вартості транзакцій. А в якості бонусу поділимося думками з приводу того, як дружба з майнерами знижує комісії до нуля і до чого така тенденція може призвести в майбутньому. Отже, приступимо.

Навігація по матеріалу:

  • 1 Час повного підтвердження транзакції
  • 2 Обмеженість пропускної здатності
  • 3 Роль комісій
  • 4 Волатильність ціни запису
  • 5 Рішення проблеми з волатильністю комісій
  • 6 Підвищення комісії після відправки транзакції
  • 7 Як допомагає Segregated Witness
  • 8 Варіант з одним-майнером
  • 9 Варіант з токенизацией місця

Час повного підтвердження транзакції

Важливо відрізняти процес обробки транзакцій (verification) від процесу їх підтвердження (confirmation). У мережі Bitcoin транзакції обробляються практично миттєво, а підтверджуються – цілу годину.

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

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

Как работают комиссии за транзакции в сети Bitcoin? Подробный разбор

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

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

Обмеженість пропускної здатності

З зростанням популярності Биткоина значно збільшився потік нових транзакцій у мережі. Відомо, що розмір блоку визначений правилами протоколу і суворо обмежений. У Биткоине максимальний розмір блоку становить 1 MB, отже, пропускна здатність обмежена (1.7 KB/s). Якщо потік нових транзакцій перевищить пропускну спроможність, то не всі з них будуть оброблені. І такі ситуації трапляються нерідко.

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

Роль комісій

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

Как работают комиссии за транзакции в сети Bitcoin? Подробный разбор

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

Ще одна важлива задача, яку вирішує механізм комісій, – це “трагедія громад”. У контексті Биткоина мається на увазі захист від спаму транзакціями. Наявність обов’язкових комісій означає, що зловмиснику дорого обійдеться протягом тривалого часу засмічувати мережа фейковими транзакціями, якщо у нього будуть такі наміри.

Волатильність ціни запису

Користувачі мережі Биткоин час від часу стикаються з незвично високою волатильністю комісій. Наприклад, у 2017 році усереднена ціна запису одного байта даних в блокчейн Биткоина коливалася в діапазоні від 1 до 500 satoshi. А чергу непідтверджених транзакцій варіювалася від декількох KiB до десятків і навіть сотень, MiB.

З причини того, що ціна на запис даних може різко зміниться, користувачі змушені конкурувати один з одним майже наосліп. Це обумовлено тим, що фактично транзакція буде підтверджена в середньому протягом 8 хвилин, тоді як комісію за обробку потрібно встановити ще до її підписання. Тому питання правильно встановленої комісії все одно залишається актуальним, тому що всі хочуть швидкого підтвердження своїх транзакцій з мінімальними витратами. Природно, платити більше 50 USD за типову транзакцію – не кращий варіант, особливо, коли можна заощадити до 90% цієї суми, якщо грамотно розрахувати комісію.

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

Рішення проблеми з волатильністю комісій

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

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

transaction fee = transaction size * byte price

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

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

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

Зазначимо, що протокол Биткоин досить гнучкий і відносно комісій. Наприклад, є два покращення протоколу: replace-by-fee та child-pays-for-parent, – які дозволяють підвищити комісію вже сформованої і відправленої транзакції. На жаль, дуже небагато гаманці реалізують цю функціональність для зручності користувачів, хоча з часом їх стає більше.

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

Як допомагає Segregated Witness

Одним із змін протоколу, яке внесло оновлення Segregated Witness, є введення нового формату транзакції і її ваги (transaction weight). До появи Segregated Witness при розрахунку комісії зазвичай враховували тільки розмір транзакції. Тепер важливими є і розмір, транзакції і її вага.

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

weight = base size * 3 + total size

У цьому випадку base size – розмір транзакції без урахування розміру witness data. Як можна здогадатися, будь-які дані, які включаються в witness data, вимагають в 4 рази меншою комісії, ніж інші дані транзакції. Подібний підхід дозволяє майнер биткоина визначити більш вигідну транзакцію у відношенні зайнятого в блоці місця і одержуваного винагороди.

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

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

Как работают комиссии за транзакции в сети Bitcoin? Подробный разбор

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

Варіант з одним-майнером

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

Как работают комиссии за транзакции в сети Bitcoin? Подробный разбор

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

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

Варіант з токенизацией місця

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

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

На практиці будь-досить великий майнинговый пул може вести свою кампанію з метою підвищення прибутковості і використовувати для цього прості механізми, наприклад:

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

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

Ймовірно, в майбутньому ми побачимо безліч різних способів сплатити запис в “саму надійну базу даних на Землі”. Враховуючи інтерес багатьох сервісів і додатків до властивостям цієї бази даних, вже давно існують сторонні рішення по додаванню в блокчейн Биткоина довільних даних з метою їх надійної “фіксації” (timestamping). Але такі рішення погано вписуються в екосистему додатків, а розробникам складно їх монетизувати.

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


Be First to Comment

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*

code