Pages:
Author

Topic: Замусоривание блокчейна - page 2. (Read 997 times)

hero member
Activity: 714
Merit: 1298
как  я понимаю Full-RBF  позвоkяет заменить исходящую транзакцию транзакцией, в которой изменено буквально всё, адреса назначения, отправляемые суммы, платa майнерам, а не не только комиссия  как это позволено в opt-in RBF. Собственно поэтому и слово full.
Как я понимаю, full-rbf позволяет заменять транзакцию независимо от установки rbf-флага, то есть отменяет "финализирование" транзакции.

Да, это так выглядит со   стороны нод, которые приняли  Full-RBF полиси, т.е. для таких нод любая транзакция ( в не зависимости от того, просигнализировала ли она или не  не просигнализировала о своей готовности быть замененной на другую согласно BIP 125) имеет право быть замещена  с более высокой оплатой.
sr. member
Activity: 770
Merit: 305
Достаточно любопытно.
В глобальном мемпуле (я все-таки настроил себе скачивание всего и вся с mempool.space) достаточно много "неприоритетных цепочек"
Что такое "неприоритетная цепочка"? Это я только что сам такой термин придумал.
Вот транзакция:
https://mempool.space/ru/tx/a6443bd2580018d7e5293bbb3e7551cb6577cad6e98765406fb6bd5c7389b616
она же есть тут:
https://www.blockchain.com/explorer/transactions/btc/a6443bd2580018d7e5293bbb3e7551cb6577cad6e98765406fb6bd5c7389b616
Замечена две недели назад (хотя если она ребродкастилась -- то может быть она и полгода назад создана, а сайты имеют срок протухания две недели)

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

Даблспенднуть такую "цепочку" довольно легко (для её создателя, разумеется) - даблспендим её "голову", хвост сам отвалится.
Вот только зачем это было сделано? Две недели назад нормальный человек не стал бы отправлять с минимальной комиссией. Не стал бы и полгода назад. Зачем нам этот "навес", или можно сказать "андеррайдинг"?

Update:
Видимо, никто не чистит мемпул раз в две недели, как мне показалось
https://mempool.space/ru/tx/a4e1db454435e4e662aac6792184323e99ca902ccd1daf78d15832bb3ccc5318
Честно говорит -- семь месяцев назад
Эта же транзакция на другом сайте
https://www.blockchain.com/ru/explorer/transactions/btc/a4e1db454435e4e662aac6792184323e99ca902ccd1daf78d15832bb3ccc5318

sr. member
Activity: 770
Merit: 305
Сейчас уже не редкость - транзакция хоть и вылетает через две недели из большинства мемпулов, но вскоре кем-нибудь ребродкастится, и так по кругу, в этой фиче уже по сути и смысла нет.
В таком случае у давно запущенных нод мемпул должен на 99% совпадать
Но https://jochen-hoenicke.de/queue/#BTC,24h,count показывает 200к транзакций в мемпуле
А https://mempool.space/ru/docs/api/rest#get-mempool 220к (разница небольшая, но есть)
У меня локальный клиент, который я перезапускал вчера (и, кажется, при этом грохнул мемпул) сейчас показывает 71к транзакций
Ну что же... Придется терпеть пока не сравняюсь. Но я за NAT-ом сижу, я же обычный юзер, а не сервер с открытым портом. Долго буду ждать...
legendary
Activity: 1848
Merit: 2033
Crypto Swap Exchange
раньше, по-моему, у транзакций в мемпуле был срок годности. (Сейчас не знаю, есть ли. Может тоже есть. Но, допустим, другой.)
То есть проходит месяц-два-три... да фиг с ним, три дня транзакция не подтвердилась - нода её выкидывает из мемпула как мусор.
Раньше как раз три дня и было, блок-эксплорер blockchain.com, возможно, и до сих пор на три дня настроен (год-два назад такое замечал). А сейчас (последних лет 7-8, наверное) этот срок по умолчанию составляет две недели.
Quote
Возможно, были ноды которые изредка перепосылали свой мемпул соседям, но это была редкость скорее (если была).
Сейчас уже не редкость - транзакция хоть и вылетает через две недели из большинства мемпулов, но вскоре кем-нибудь ребродкастится, и так по кругу, в этой фиче уже по сути и смысла нет.
sr. member
Activity: 770
Merit: 305
тоже позволял заменить всё, вплоть до набора utxo
Здесь еще вот что может быть: раньше, по-моему, у транзакций в мемпуле был срок годности. (Сейчас не знаю, есть ли. Может тоже есть. Но, допустим, другой.)
То есть проходит месяц-два-три... да фиг с ним, три дня транзакция не подтвердилась - нода её выкидывает из мемпула как мусор. (В те времена еще без комиссий вообще можно было посылать при определенных условиях). И готова получить RBF. Возможно, были ноды которые изредка перепосылали свой мемпул соседям, но это была редкость скорее (если была). То есть через какое-то время про транзакцию помнил только кошелек-отправитель и там еще осталась в клиенте опция -walletbroadcast при запуске.

Сегодня просто так чистить свой мемпул пулам (каламбур, однако) не выгодно. Ну то есть разница копеечная, но кому это надо? Я тут решил покопаться в старых транзакциях, которые месяцами лежат в мемпуле неподтвержденными. У сайта mempool.space даже есть апи для скачивания мемпула по одной транзакции. Блин, сделали бы они запрос "дай мемпул целиком или хотя бы жирный его кусок", потому что 200 тысяч запросов к rest-api напрягут любой анти-ддос фильтр. Меня сегодня mempool.space уже два раза зобанил на час. А у всех обычных нод команда протокола "mempool" задизейблена по дефолту.
legendary
Activity: 1848
Merit: 2033
Crypto Swap Exchange
как  я понимаю Full-RBF  позвоkяет заменить исходящую транзакцию транзакцией, в которой изменено буквально всё, адреса назначения, отправляемые суммы, платa майнерам, а не не только комиссия  как это позволено в opt-in RBF. Собственно поэтому и слово full.
Как я понимаю, full-rbf позволяет заменять транзакцию независимо от установки rbf-флага, то есть отменяет "финализирование" транзакции. А тот opt-in rbf, с которым мы жили много лет, тоже позволял заменить всё, вплоть до набора utxo. Я даже когда-то здесь тему делал, как заменить транзакцию в Электруме (позже она стала неактуальной).
hero member
Activity: 714
Merit: 1298
Full-RBF сработал (я пока не вникал, как он работает, не знаю).

как  я понимаю Full-RBF  позвоkяет заменить исходящую транзакцию транзакцией, в которой изменено буквально всё, адреса назначения, отправляемые суммы, платa майнерам, а не не только комиссия  как это позволено в opt-in RBF. Собственно поэтому и слово full.

Интересно, что Full-RBF в виде эксклюзивной опции появилась ещё в версии 0.8.6, потом её убрали и возродили в 24.0.

legendary
Activity: 1848
Merit: 2033
Crypto Swap Exchange
Вы сейчас про какую транзакцию? На которую я ссылку дал или про ту, которую Вы рассказываете?
Я больше про свою. Но и ваша тоже под это подходит (если тут дело не в full-rbf).
Quote
В принципе, у разных версий клиентов могут быть разные полиси по пересылке транзакций.
Да, скорее всего дело было в том, что нода coinb.in (именно через этот сайт тогда делался даблспенд) имела не случайную связь с какими-то рандомными узлами, а непосредственно соединялась с нодами майнеров,
sr. member
Activity: 770
Merit: 305
но если немного подумать, то получается, что майнеру такая замена выгодна - из-за полного мемпула он наберет недостающие 0.009 другими транзакциями с хорошим feerate.
Именно так!
Quote
Но странно, что транзакция дошла до майнера.
Вы сейчас про какую транзакцию? На которую я ссылку дал или про ту, которую Вы рассказываете? Я пока думаю и курю сорцы. В принципе, у разных версий клиентов могут быть разные полиси по пересылке транзакций. А для пула выгоднее ловить как можно больше транзакций из сети. Конечно, разница там копеечная, но и копейка рубль бережет

legendary
Activity: 1848
Merit: 2033
Crypto Swap Exchange
либо тут уже как-то недавно появившийся Full-RBF сработал (я пока не вникал, как он работает, не знаю).
Логика тут понятная: при любом RBF если мы увеличиваем feerate то транзакция с большей комиссией (в пересчете на размер) выгоднее майнерам и они возьмут её.
Ну да, логично. Как-то был свидетелем на форуме такой ситуации: скамер угнал сиды нескольких сотен лохов и одной транзакцией отправил эти utxo на свой адрес, комиссия за транзакцию была 0.01 btc; один из пострадавших пришел на форум за помощью и в итоге смог сделать успешный даблспенд своего utxo (дав шанс и остальным несчастным спасти свои монетки), заплатив комиссией всего 0.001 btc, feerate его транзакции был выше оригинальной. Я был уверен, что такой даблспенд не пройдет, что комиссия должна быть больше 0.01, но если немного подумать, то получается, что майнеру такая замена выгодна - из-за полного мемпула он наберет недостающие 0.009 другими транзакциями с хорошим feerate. Но странно, что транзакция дошла до майнера.
sr. member
Activity: 770
Merit: 305
либо тут уже как-то недавно появившийся Full-RBF сработал (я пока не вникал, как он работает, не знаю).
Логика тут понятная: при любом RBF если мы увеличиваем feerate то транзакция с большей комиссией (в пересчете на размер) выгоднее майнерам и они возьмут её. Все пляски пятилетней давности "вот эти транзакции можно вышибать другими, а вот эти нельзя" -- это всё какая-то гнилая идея была. Другое дело, что при пересчете "выгодности" надо принимать во внимание ещё CPFP -- то есть если транзакция А пытается RBF-нуть транзакцию Б, но к транзакции Б уже налипли богатенькие чайлды В1, B2 (бедненькие не считаются) -- то надо пересчитывать feerate c учетом её "descendants" (это английское слово нашёл в коде, не знаю что оно значит, я языками не особо владею)

Всякие константы в коде типа "как минимум на 1 сатоши за вбайт больше, а иначе нахер" -- это такая попытка разработчиков как-то снизить трафик в сети в случае злоумышленника, который пошлет свою транзакцию на 100 килобайт с минимальной комиссией, а потом каждую секунду будет посылать её копии, увеличивая комиссию (за счет уменьшения сдачи) на один сатоши. Ему это не будет стоить практически ничего, но вся сеть будет прилично нагружена верификацией и пересчетом.
legendary
Activity: 1848
Merit: 2033
Crypto Swap Exchange
Насколько я понимаю, никаких препятствий нет дабдспенднуть и один utxo, лишь бы абсолютное значение комиссии было больше, чем в  заменяемой транзакции (и более, чем на 1 сат/вб).
В порядке информации:
RBF работает и при меньшем увеличении комиссии. Точнее как? Иногда работает, иногда не работает.
Вот вам пример удачного RBF при увеличении на 0.2 сатоши за вбайт:
https://mempool.space/ru/tx/416cef876a24808fda3fdbf83d1de2f44aaa628aef15af0a46b521a2d52d6f82
Заменяемая транзакция тут вообще была без RBF-флага, так что здесь никакие rbf-условности даже не рассматривались. Видимо, заменяющая транзакция доехала до майнера каким-то блатным путем, либо тут уже как-то недавно появившийся Full-RBF сработал (я пока не вникал, как он работает, не знаю). Но я помню достаточно подобных даблспендов (почему-то в coinb.in они часто удавались, в отличие от, например, Электрума).
sr. member
Activity: 770
Merit: 305
Насколько я понимаю, никаких препятствий нет дабдспенднуть и один utxo, лишь бы абсолютное значение комиссии было больше, чем в  заменяемой транзакции (и более, чем на 1 сат/вб).
В порядке информации:
RBF работает и при меньшем увеличении комиссии. Точнее как? Иногда работает, иногда не работает.
Вот вам пример удачного RBF при увеличении на 0.2 сатоши за вбайт:
https://mempool.space/ru/tx/416cef876a24808fda3fdbf83d1de2f44aaa628aef15af0a46b521a2d52d6f82
С чем это связано -- я пока не могу сказать.
Возможно, клиент как-то коряво считает, возможно округление влияет, возможно сам mempool.space глючит.
В конце концов сайт-эксплорер блокчейна может принимать все транзакции для статистики и наглядного показа.
Да и в код клиента (даже если используется штатный клиент) никто не мешает залезть и поправить константу. Это не консенсусное правило.
Можно даже предположить, что у пула стоит ограничение feerate на транзакции и первую транзакцию он отбросил, а вторую решил взять.
Вот только какой долгой дорогой она к нему ехала?
sr. member
Activity: 770
Merit: 305
например, в 853690-м блоке текст 853690.bitmap. В чем смысл - я не знаю, но наверное он для кого-то есть
я не вполне уверен, что в транзакции содержится именно этот номер. Несмотря на очень щедрую комиссию, транзакция запущенная в сеть, может не попасть в ближайший блок. Скорее всего, это эксплорер которым пользуетесь Вы, если не может однозначно определить тип вложенных данных, просто показывает «чота в блоке таком-то»

Вопрос, собственно в другом. Я повторю: есть ли какое-то «активное» использование этих инскрипшенов? «Пассивное использование» — это владеть и в часы депрессии пересчитывать на сайте в интернете сколько у тебя фантиков. При этом подрачивая. «Активное использование» — это обменивать, торговать или хотя бы обсуждать с такими же балбесами
legendary
Activity: 1848
Merit: 2033
Crypto Swap Exchange
Теперь раз в 10 минут (не по времени, а по появлению нового блока в сети) появляется транзакция, которая переводит по одному выходу на другой адрес
и содержит в себе текст вида номер_блока.bitmap, то есть, например, в 853690-м блоке текст 853690.bitmap. В чем смысл - я не знаю, но наверное он для кого-то есть ).
Quote
В момент, когда я пишу эти строки уже примерно половина из 2000 выходов переведена
Например на адресе https://mempool.space/ru/address/bc1qrvuhj7adkdpjjnkaxac4es7vt3zvcasg5wk2n8 уже набралось 752 входа по 294 сатоши
Каким-то образом консолидировать эту пыль в обозримое время не удастся.
Почему не удастся? Ее можно хоть сейчас консолидировать, как раз этих 294 сат хватит на комиссию 4 с хвостиком сат/вб.
sr. member
Activity: 770
Merit: 305
А расскажите мне для чего люди делают эти инскрипшены?
Может на этом какие-то бизнесы и сервисы строятся?
Типа "заплати сто рублей и мы твои данные запихнем в блокчейн"
Или какая-то биржа по обмену этими фантиками?

Я объясню почему я заинтересовался этим.
Допустим, возьмем вот эту транзакцию от 16 июля:
https://mempool.space/ru/tx/ba2d8de3de84d6a103c3981676ec667056513d8308e9e957d3a54372c9e1b3cc
Кто-то рассыпал ‎0,11478759 btc на 2000 адресов по 2500 сатоши
Теперь раз в 10 минут (не по времени, а по появлению нового блока в сети) появляется транзакция, которая переводит по одному выходу на другой адрес
В момент, когда я пишу эти строки уже примерно половина из 2000 выходов переведена
Например на адресе https://mempool.space/ru/address/bc1qrvuhj7adkdpjjnkaxac4es7vt3zvcasg5wk2n8 уже набралось 752 входа по 294 сатоши
Каким-то образом консолидировать эту пыль в обозримое время не удастся.

Я не понимаю в чем смысл? Потратить из своего кармана несколько тысяч баксов и увеличить при этом базу данных Биткойна на 2000 utxo? Чтобы что? Чтобы в какой-то рейтинг на каком-то сайте попасть? Как "самый большой дурак с самым большим количеством фантиков"?

Ну я понимаю, были какие-то сервисы которые вставляли свои данные в блокчейн, чтобы "сохранилось на века". Но это-то зачем?
legendary
Activity: 2317
Merit: 2318
А давно в клиенте запретили importprivkey в "кошельки нового формата"?
Кошелёк нового формата - дескрипторный, в него можно импортировать только дескрипторы. А уже в дескриптор можно засунуть всё что угодно, в том числе, приватный ключ. Пример. 
sr. member
Activity: 770
Merit: 305
А давно в клиенте запретили importprivkey в "кошельки нового формата"?
Логику разработчиков понять можно, там и так адище в коде, ведь как раз формат кошелька не менялся очень давно.
Я-то в принципе, разберусь и без кошелька
Но что-то мало криков в интернете вижу на тему "а как же мы будем жить теперь, у нас приватные ключи хранились на бумажке в сейфе!"
sr. member
Activity: 770
Merit: 305
Почему так не делают? И есть ли эффективные методы противодействия таким злоупотреблениям?
Потому что договориться не могут.
А если бы они смогли бы -- то вы бы этого не заметили. И сеть бы этого не заметила. Это заметил бы админ пострадавшего пула, типа его десять блоков подряд не вошли в основную цепочку.
Кстати. По-моему как раз в момент введения p2sh это и происходило. Тогда еще мой любимый bc.i хранил какое-то время орфан-блоки.
Сеть постоянно орфанила какого-то одинокого майнера, который проебал момент апгрейда, брал в свой блок транзакцию которая лично ему казалась валидной, но для 51% сети была невалидной. И вот эту транзакцию bc.i показывал как "включенная в блок такой-то, такой-то, такой-то". А все эти блоки были орфанами.
Сейчас мы и эту транзакцию не найдем и адрес не вспомним. Если он был создан после принятия bip-16 - то с него нет выводов , но он ничем не выделяется среди других адресов. Ребят, десять лет прошло. В памяти смутные события только.
sr. member
Activity: 770
Merit: 305
Тем не менее, реально был ли такой прецедент, чтобы выход стало невозможно потратить после изменений правил (не полиси)? И вообще, правила когда-нибудь менялись без соблюдения обратной совместимости? До сих пор я был уверен, что нет, но может вы откроете мне глаза ).
А для вас так важно "правила или полиси" мешают вам потратить ваши сатошики?
Вам не похуй от кого получать пиздюлей - от росгвардии или от полиции?
Когда вам банк блокирует карту -- какая в моменте разница это сделано по закону принятому думой или по воле менеджера отдела финмониторинга?
Конечно, разработчики биткойна всегда придерживались либертарианских идей.
Никаких "а давайте заблокируем в коде вот этот адрес мошенника" у них не было (а в эфириуме было).
Но код приходилось причесывать. Потому что какие-то вещи в оригинальном варианте были корявые и багнутые.
Много проблем было с кодом OP_CHECKMULTISIG - в реализации изначально была бага, что при выполнении команды брался один лишний элемент из стека.
Он до сих пор берется. Поэтому redeem-скрипт при мультисиге всегда начинается с OP_0 -- это теперь обязательное требование, потому что иначе половина транзакций P2SH была бы подвержена проблеме malleability

Кое-какие вещи сделали более жесткими, например в оригинальном клиенте публичный ключ и подпись просто "скармливались" в OpenSSL библиотеку как в черный ящик. Функция вернула 1 - окей, сигнатура валидна. Функция вернула 0 - невалидна. Зависимость от такого поведения могла точно привести к форку - если бы у половины клиентов была бы одна версия OpenSSL, а у половины другая, где разработчики (ни сном ни духом не слышавшие о биткойне) что-то бы поменяли.
Так вот. В какой-то момент стандартизовали правило: публичный ключ должен быть 33 байта и начинаться только с 02/03 ну или 65 байтов и начинаться с 04.
Всё остальное - идет лесом. В результате 33iPUoNLd53AuRunuwUqDDa4nwaaxGHwQu стал навеки невыводимым. Не помню что я там экспериментировал, наверное казино какое-то облапошивал. Пока они считали, что транзакция с этого адреса валидна и скоро попадет в блок, я успевал отправить даблспенд других выходов. Если же ставка выигрывала -- надо было просто терпеливо сидеть и ждать майнера который тоже еще не перешел на новую версию софта
Pages:
Jump to: