Хоча ми знаємо , що підписання транзакцій із занадто великою кількістю UTXO може спричинити збої пристрою, це загальне твердження все ще залишає деякі запитання: чи існує певна кількість UTXO, яка призведе до збою апаратного гаманця під час підписання? Чи можуть певні UTXO викликати більше труднощів, ніж інші?
Досліджуючи відповіді на такі запитання, я виявив, що час і зусилля, необхідні апаратному гаманцю для підписання транзакції, не залежать лише від кількості надісланих UTXO та кількості адрес отримання. Це також залежить від подібних деталей щодо попередніх транзакцій, з яких походить кожен UTXO, феномен, який я називаю «масою підписання». Мені не відомі інші публікації, які б згадували цю концепцію.
Іншими словами, UTXO з більшою масою підпису (пояснено більш детально нижче) може бути складніше підписати, ніж інші. Незважаючи на те, що два UTXO можуть використовувати однаковий обсяг даних у блокчейні, одному може знадобитися значно більше обробки для підписання за допомогою апаратного гаманця.
Цей факт поширюється за межі типів адрес і багатопідписних кворумів; Для підпису одного UTXO на адресі 2 із 3 із кількома підписами може знадобитися значно більше зусиль, ніж для підпису іншого UTXO на тій самій адресі (або еквівалентній адресі, навіть якщо суми біткойнів і адреси призначення однакові).
Щоб зрозуміти, чому два схожі на вигляд UTXO можуть мати різко різну масу підпису, вам потрібно зрозуміти, який обхідний метод апаратні гаманці використовують для перевірки введених сум без підключення до Інтернету та як складність транзакцій може відрізнятися для різних методів отримання біткойнів на ваш гаманець.
Для будь-якої біткойн-транзакції важлива перевірка суми введених даних; інакше великі суми ваших біткойнів можуть випадково бути виплачені майнерам. чому Оскільки комісія, яку беруть майнери, не вказана явно _в транзакції, а розраховується _неявно шляхом віднімання вартості виходів із вартості вхідних даних. Тому, якщо є велика різниця між двома числами, стягнена плата також буде великою.
Наприклад, якщо у вас були UTXO на загальну суму 0,8 BTC і ви використали їх, щоб відправити кудись 0,3 BTC, якщо ви не надіслали решту ~0,5 BTC назад собі як здачу, майнер блоку тепер може вимагати 0,5 BTC як частину своїх зароблених гонорарів.
Не переживай! Усі сучасні та шановані біткойн-інструменти включають автоматичні механізми безпеки, тому зробити цю помилку буде досить важко (якщо не неможливо). Процес може бути таким же простим, як пошук у блокчейні для перевірки кількості вхідних даних, а потім порівняння їх загальної суми з сумою вибраних виходів, щоб визначити, чи є плата розумною.
Але, звісно, апаратні гаманці розроблені для роботи незалежно від Інтернету, що особливо очевидно для пристроїв з повітряним розривом. Без Інтернету або підключення до вузла блокчейн неможливо спостерігати. Тому більшість апаратних гаманців повинні використовувати альтернативний, обхідний метод для перевірки введених сум. По суті, пристрій має не лише імпортувати інформацію, що описує транзакцію, яку він підписуватиме, але також має імпортувати історію того, звідки надійшло кожне введення.
Іншими словами, для кожного UTXO, який переміщується, пристрій захоче ще раз перевірити деталі транзакції безпосередньо перед тим, що призвело до створення цього UTXO. Якби ця транзакція була складною, вона передбачала б імпортування додаткових даних, що відображалося б у розмірі файлу PSBT. Давайте розглянемо складність транзакції.
Більшість людей отримують біткойни на свій гаманець одним із трьох способів: з біржі, з майнінг-пулу або безпосередньо від іншої особи в одноранговій транзакції (P2P). Однорангові транзакції зазвичай містять дуже низьку складність, і кінцеві UTXO матимуть відносно невелику масу підписів.
Однак біржі та майнінг-пули, як правило, розподіляють кошти пакетами, надсилаючи біткойни багатьом людям одночасно в рамках однієї транзакції. Ці транзакції складніші, і отримані UTXO матимуть більшу масу підписів.
Я дослідив тенденції розповсюдження для кількох популярних в Америці майнінг-пулів і бірж, і мої висновки представлені на діаграмі нижче. Кількість вихідних даних вказує на кількість людей, які зазвичай надсилають біткойни в рамках кожного розподілу. Більше число означає більшу складність транзакції та більш значне масове навантаження для одержувачів.
Ці цифри є приблизними на момент написання статті та можуть змінюватися відповідно до того, як кожен пул або біржа виконує розподіл у майбутньому.
Зауважте, що дистрибутиви майнінг-пулів зазвичай більші, ніж біржі, і деякі майнінг-пули, такі як F2Pool, використовують надзвичайно великі дистрибутиви. Отже, якщо ви отримуєте UTXO безпосередньо з виплати F2Pool, цей UTXO, швидше за все, спричинить труднощі з підписанням певних апаратних гаманців.
У 2017 році стався сегрегований софтфорк-свідок, і процес підписання транзакцій SegWit був змінений. Було введено вимогу включати введені суми в дані, які користувачі підтверджують підписом. У результаті вважалося, що будь-які спроби змусити користувача або пристрій ненавмисно підписати транзакцію з абсурдно високими комісіями будуть запобігти. Більшість виробників апаратних гаманців діяли відповідно, видаливши перевірки безпеки введення суми та спростивши процес підписання для транзакцій SegWit.
Однак у середині 2020 року в BIP 143 було виявленовразливість, що спонукало багатьох виробників апаратних гаманців знову запровадити перевірку безпеки вхідних сум для транзакцій SegWit. На момент написання статті перевірки безпеки введеної суми залишаються звичайним процесом під час підпису апаратного гаманця. У спільноті ведеться певна дискусія щодо майбутніх змін, які могли б ефективніше усунути потребу у перевірці безпеки вхідних сум, наприклад, зробити явні комісії в кожній транзакції, а не приховані.
Варіації в масовому підписанні означають, що коли ви намагаєтеся вивести біткойни зі свого холодного гаманця самостійної опіки, є певне відношення до того, як ви взагалі отримали біткойни. Методи, які ви використовуєте для придбання біткойнів, можуть створити відмінності, коли прийде час затверджувати перекази.
Якщо у вас є UTXO, який було переміщено з іншого гаманця, яким ви керуєте, або отримано від однорангової транзакції, швидше за все, транзакція була відносно простою. UTXO матиме меншу масу підпису, і його легше підписати під час майбутніх витрат. З іншого боку, якщо ви отримали UTXO безпосередньо з майнінгового пулу або особливо майнінгового пулу, який розповсюджує дуже великі розміри (як показано на попередній діаграмі), ви можете очікувати, що UTXO буде важче підписати.
На щастя, якщо ваш апаратний гаманець не може підписати через те, що ви намагаєтеся перемістити занадто багато UTXO великої маси одночасно, це не означає, що ваш біткойн застряг назавжди. Швидке та просте рішення — розбити транзакцію на кілька транзакцій, переміщуючи ваші біткойни частинами. Кожен фрагмент міститиме лише частину даних, і ваш пристрій, швидше за все, успішно створить підпис.
Інша стратегія полягає в тому, щоб у першу чергу запобігти помилкам підписання, контролюючи кількість UTXO, які ви тримаєте, і масу підпису цих UTXO. Хоча ви не можете змінити спосіб розподілу коштів майнінг-пулами та біржами, важливо пам’ятати, що маса підпису UTXO визначається транзакцією безпосередньо перед нею, а не історією транзакцій до неї. Це означає, що ви можете отримати UTXO з майнінг-пулу та негайно перенести його на інший гаманець або адресу, яку ви контролюєте, імітуючи однорангову транзакцію. Отриманий UTXO за новою адресою матиме малу масу підпису, а не велику.
Важливо підкреслити, що масове підписання впливає лише на час і зусилля, необхідні апаратному гаманцю для підписання транзакції, а не на мережеву плату, яку ви сплачуєте. Це пояснюється тим, що масове підписання актуальне лише під час процесу підписання та не призведе до того, що ваша транзакція буде займати більше даних у блокчейні.
Це означає, що ви не обов’язково будете платити більше комісій за транзакції, якщо отримаєте біткойни з майнінгового пулу, такого як F2Pool, а також не зменшаться комісії за транзакції, якщо вибрати послугу, яка використовує менше виходів для їх розподілу.
Хоча ми знаємо , що підписання транзакцій із занадто великою кількістю UTXO може спричинити збої пристрою, це загальне твердження все ще залишає деякі запитання: чи існує певна кількість UTXO, яка призведе до збою апаратного гаманця під час підписання? Чи можуть певні UTXO викликати більше труднощів, ніж інші?
Досліджуючи відповіді на такі запитання, я виявив, що час і зусилля, необхідні апаратному гаманцю для підписання транзакції, не залежать лише від кількості надісланих UTXO та кількості адрес отримання. Це також залежить від подібних деталей щодо попередніх транзакцій, з яких походить кожен UTXO, феномен, який я називаю «масою підписання». Мені не відомі інші публікації, які б згадували цю концепцію.
Іншими словами, UTXO з більшою масою підпису (пояснено більш детально нижче) може бути складніше підписати, ніж інші. Незважаючи на те, що два UTXO можуть використовувати однаковий обсяг даних у блокчейні, одному може знадобитися значно більше обробки для підписання за допомогою апаратного гаманця.
Цей факт поширюється за межі типів адрес і багатопідписних кворумів; Для підпису одного UTXO на адресі 2 із 3 із кількома підписами може знадобитися значно більше зусиль, ніж для підпису іншого UTXO на тій самій адресі (або еквівалентній адресі, навіть якщо суми біткойнів і адреси призначення однакові).
Щоб зрозуміти, чому два схожі на вигляд UTXO можуть мати різко різну масу підпису, вам потрібно зрозуміти, який обхідний метод апаратні гаманці використовують для перевірки введених сум без підключення до Інтернету та як складність транзакцій може відрізнятися для різних методів отримання біткойнів на ваш гаманець.
Для будь-якої біткойн-транзакції важлива перевірка суми введених даних; інакше великі суми ваших біткойнів можуть випадково бути виплачені майнерам. чому Оскільки комісія, яку беруть майнери, не вказана явно _в транзакції, а розраховується _неявно шляхом віднімання вартості виходів із вартості вхідних даних. Тому, якщо є велика різниця між двома числами, стягнена плата також буде великою.
Наприклад, якщо у вас були UTXO на загальну суму 0,8 BTC і ви використали їх, щоб відправити кудись 0,3 BTC, якщо ви не надіслали решту ~0,5 BTC назад собі як здачу, майнер блоку тепер може вимагати 0,5 BTC як частину своїх зароблених гонорарів.
Не переживай! Усі сучасні та шановані біткойн-інструменти включають автоматичні механізми безпеки, тому зробити цю помилку буде досить важко (якщо не неможливо). Процес може бути таким же простим, як пошук у блокчейні для перевірки кількості вхідних даних, а потім порівняння їх загальної суми з сумою вибраних виходів, щоб визначити, чи є плата розумною.
Але, звісно, апаратні гаманці розроблені для роботи незалежно від Інтернету, що особливо очевидно для пристроїв з повітряним розривом. Без Інтернету або підключення до вузла блокчейн неможливо спостерігати. Тому більшість апаратних гаманців повинні використовувати альтернативний, обхідний метод для перевірки введених сум. По суті, пристрій має не лише імпортувати інформацію, що описує транзакцію, яку він підписуватиме, але також має імпортувати історію того, звідки надійшло кожне введення.
Іншими словами, для кожного UTXO, який переміщується, пристрій захоче ще раз перевірити деталі транзакції безпосередньо перед тим, що призвело до створення цього UTXO. Якби ця транзакція була складною, вона передбачала б імпортування додаткових даних, що відображалося б у розмірі файлу PSBT. Давайте розглянемо складність транзакції.
Більшість людей отримують біткойни на свій гаманець одним із трьох способів: з біржі, з майнінг-пулу або безпосередньо від іншої особи в одноранговій транзакції (P2P). Однорангові транзакції зазвичай містять дуже низьку складність, і кінцеві UTXO матимуть відносно невелику масу підписів.
Однак біржі та майнінг-пули, як правило, розподіляють кошти пакетами, надсилаючи біткойни багатьом людям одночасно в рамках однієї транзакції. Ці транзакції складніші, і отримані UTXO матимуть більшу масу підписів.
Я дослідив тенденції розповсюдження для кількох популярних в Америці майнінг-пулів і бірж, і мої висновки представлені на діаграмі нижче. Кількість вихідних даних вказує на кількість людей, які зазвичай надсилають біткойни в рамках кожного розподілу. Більше число означає більшу складність транзакції та більш значне масове навантаження для одержувачів.
Ці цифри є приблизними на момент написання статті та можуть змінюватися відповідно до того, як кожен пул або біржа виконує розподіл у майбутньому.
Зауважте, що дистрибутиви майнінг-пулів зазвичай більші, ніж біржі, і деякі майнінг-пули, такі як F2Pool, використовують надзвичайно великі дистрибутиви. Отже, якщо ви отримуєте UTXO безпосередньо з виплати F2Pool, цей UTXO, швидше за все, спричинить труднощі з підписанням певних апаратних гаманців.
У 2017 році стався сегрегований софтфорк-свідок, і процес підписання транзакцій SegWit був змінений. Було введено вимогу включати введені суми в дані, які користувачі підтверджують підписом. У результаті вважалося, що будь-які спроби змусити користувача або пристрій ненавмисно підписати транзакцію з абсурдно високими комісіями будуть запобігти. Більшість виробників апаратних гаманців діяли відповідно, видаливши перевірки безпеки введення суми та спростивши процес підписання для транзакцій SegWit.
Однак у середині 2020 року в BIP 143 було виявленовразливість, що спонукало багатьох виробників апаратних гаманців знову запровадити перевірку безпеки вхідних сум для транзакцій SegWit. На момент написання статті перевірки безпеки введеної суми залишаються звичайним процесом під час підпису апаратного гаманця. У спільноті ведеться певна дискусія щодо майбутніх змін, які могли б ефективніше усунути потребу у перевірці безпеки вхідних сум, наприклад, зробити явні комісії в кожній транзакції, а не приховані.
Варіації в масовому підписанні означають, що коли ви намагаєтеся вивести біткойни зі свого холодного гаманця самостійної опіки, є певне відношення до того, як ви взагалі отримали біткойни. Методи, які ви використовуєте для придбання біткойнів, можуть створити відмінності, коли прийде час затверджувати перекази.
Якщо у вас є UTXO, який було переміщено з іншого гаманця, яким ви керуєте, або отримано від однорангової транзакції, швидше за все, транзакція була відносно простою. UTXO матиме меншу масу підпису, і його легше підписати під час майбутніх витрат. З іншого боку, якщо ви отримали UTXO безпосередньо з майнінгового пулу або особливо майнінгового пулу, який розповсюджує дуже великі розміри (як показано на попередній діаграмі), ви можете очікувати, що UTXO буде важче підписати.
На щастя, якщо ваш апаратний гаманець не може підписати через те, що ви намагаєтеся перемістити занадто багато UTXO великої маси одночасно, це не означає, що ваш біткойн застряг назавжди. Швидке та просте рішення — розбити транзакцію на кілька транзакцій, переміщуючи ваші біткойни частинами. Кожен фрагмент міститиме лише частину даних, і ваш пристрій, швидше за все, успішно створить підпис.
Інша стратегія полягає в тому, щоб у першу чергу запобігти помилкам підписання, контролюючи кількість UTXO, які ви тримаєте, і масу підпису цих UTXO. Хоча ви не можете змінити спосіб розподілу коштів майнінг-пулами та біржами, важливо пам’ятати, що маса підпису UTXO визначається транзакцією безпосередньо перед нею, а не історією транзакцій до неї. Це означає, що ви можете отримати UTXO з майнінг-пулу та негайно перенести його на інший гаманець або адресу, яку ви контролюєте, імітуючи однорангову транзакцію. Отриманий UTXO за новою адресою матиме малу масу підпису, а не велику.
Важливо підкреслити, що масове підписання впливає лише на час і зусилля, необхідні апаратному гаманцю для підписання транзакції, а не на мережеву плату, яку ви сплачуєте. Це пояснюється тим, що масове підписання актуальне лише під час процесу підписання та не призведе до того, що ваша транзакція буде займати більше даних у блокчейні.
Це означає, що ви не обов’язково будете платити більше комісій за транзакції, якщо отримаєте біткойни з майнінгового пулу, такого як F2Pool, а також не зменшаться комісії за транзакції, якщо вибрати послугу, яка використовує менше виходів для їх розподілу.