Wpis z mikrobloga

Wyjaśnienie czym jest "pył" - "dust" w transakcjach.

@AntyBohater w tym wpisie zapytał dlaczego nie może wysłać z electrum żadnej transakcji poniżej 294 satoshi. Normalnie można każdą ilość BTC wysłać, nawet 1 satoshi. W tym przypadku jedynie nody electrum mają zabezpieczenie, żeby nie rozgłaszać takiej transakcji. Dlaczego? Bo taka transakcja nie ma sensu. Kiedy dostajemy na adres jakąś wpłatę to jest to jeden output na tym adresie. Nieistotne że przyjmiemy kilka wpłat na jeden adres i sumarycznie na tym adresie mamy większą ilość BTC. Każda wpłata na adres to jeden output. Co się dzieje kiedy wysyłamy coś z jakiegoś adresu? Bitcoiny są wysyłane z poprzednich wpłat, outputów na tym adresie. W transakcji musi być zawarty każdy oputput, skąd na naszym adresie mamy te BTC. Każdy taki output to dodatkowe dane do transakcji, przez co zwiększają jej wielkość a co za tym idzie również fee dla górników. Jeżeli minimalne fee za transakcję jest mniejsze niż wartość jednego inputu, to taka transakcja nie ma sensu. Kiedy ktoś kto otrzyma kilka satoshi, będzie chciał je wydać, będzie musiał dopłacić do tego fee. Kiedy fee przekroczy wartość outputu, wysłanie tych satoshi nie ma sensu, bo płacimy więcej fee za wysłanie tych kilku satoshi, niż wynosi ich wartość. Jak już wspomniałem, można taką transakcję wysłać. W tym przypadku po prostu serwery electrum dodały takie zabezpieczenie. @AntyBohater mógłby w electrum stworzyć transakcję nawet na 1 satoshi i ją podpisać. Zamiast rozgłaszać ją w electrum, mógłby ją rozgłosić w inny sposób, np. wkleić ją na https://blockstream.info/tx/push Wtedy by przeszła.

Wysyłanego pyłu nie ma sensu przyjmować (dla odbiorcy), bo zawsze zapłacisz więcej za jego wydanie. Powtarzam, nie ma znaczenia że na ten sam adres wpłacimy więcej BTC. Te BTC będą na tym samym adresie, ale będą pochodziły z różnych outputów, więc kiedy wyślemy BTC z tego adresu i zawrzemy w nim te kilka satoshi z danego outputu, to dopłacimy większe fee (które pobierze z drugiego outputu). Dlatego też np. Samourai Wallet ma opcję zaznaczenia pyłu "don't spent" żeby go nie wydawać. Wchodzimy w "Show unspent outputs". Pojawią nam się wszystkie outputy jakie mamy na wszystkich adresach portfela. Możemy w nim zaznaczyć dany output żeby nie zostawał nigdy wydawany (bo dopłacilibyśmy do tej wysyłki). Podobnie w Bitcoin Core jest możliwość zaznaczenia, aby nie wydawać pyłu. Jak widać deweloperzy electrum, sami nie pozwalają wysyłać takich transakcji, choć uważam że powinno być dokładniej wyjaśnione dlaczego nie pozwalają.

To może się wydawać niektórym ludziom trochę zawiłe i skomplikowane, więc żeby nie było niejasności wytłumaczę coś jeszcze. Kiedy wyślemy zbiorczą transakcję na jakiś adres z wielu inputów, robimy jeden output. Wtedy te BTC z powrotem scalają się w jedno (inaczej BTC tak by się dzieliły bez przerwy BTC na coraz mniejsze ilości).

Łopatologicznie: Każda transakcja na adresie odbiorcy generuje jeden output, nawet jak to jest transakcja zbiorcza z wielu inputów. Dlatego też nieraz warto sobie "sprzątać" portfel. Nawet jeżeli przyjmujemy ciągle na ten sam adres wiele wpłat to każda z transakcji przychodzących generuje nam jeden nowy output na tym adresie. Kiedy będziemy chcieli wszystko wydać, to zapłacimy dodatkowe fee od każdego outputu z takiego adresu, mimo że generujemy tylko jeden input (zbiorczy). Warto więc nieraz kiedy opłaty są bardzo niskie a mamy wiele wpłat, wysłać sobie na inny adres wszystkie BTC, zbierając je w jeden output na nowym adresie. Poruszyłem ten temat we wpisie o optymalizacji fee w Bitcoinie: https://steemit.com/polish/@cyberpunkbtc/jak-obliczyc-optymalne-fee-i-zmniejszyc-koszt-transakcji-bitcoina

#bitcoin #kryptowaluty #cybertag
Pobierz cyberpunkbtc - Wyjaśnienie czym jest "pył" - "dust" w transakcjach.

@AntyBohater w...
źródło: comment_SPF09diE2E5q0NS6FDlbGlXVt7DuMVdF.jpg
  • 5