Kurs8530

 

Mechanzm reszty a backup portfela

 

resztabig

 

Mechanizm reszty został stworzony dla zwiększenia anonimowości transakcji. Ponieważ ilość dostępnych adresów jest niemal nieograniczona, każda transakcja może odbywać się na nowym adresie. Ponadto, adresy z których nie zostały jeszcze nigdy wydane środki są dodatkowo zabezpieczane ponieważ nie jest znany ich klucz publiczny.

 

Działanie systemu reszty przebiega podobnie, jak wydawanie reszty w sklepie. Powiedzmy, że mamy do zapłaty 5zł, a mamy w portfelu banknot 10zł. Wyciągamy banknot z przegródki, a otrzymaną monetę wkładamy do kieszonki w portfelu.

 

Tak samo działa mechanizm reszty w sieci Bitcoin. Niewydana część wejścia (input) wraca do naszego portfela na nowy adres. Poza przypadkiem, gdy wydajemy dokładnie taką kwotę jaką mamy na wejściu, transakcja ma dwa wyjścia (outputs) - jedno jest adresem na który płacimy, a drugie jest naszym nowym adresem w portfelu na który wraca reszta.

 

Bitcoin Core (Oryginalny portfel Bitocoin) domyślnie generuje pulę 100 adresów (keypool), z czego widzimy tylko jeden. Każde wysłanie środków powoduje użycie kolejnego "nowego" adresu z puli jako reszty. Core nie podaje nam tego adresu bezpośrednio, sumując po prostu wszystkie wolne wejścia jako stan portfela. Jest to dokładna analogia posiadania gotówki w portfelu w różnych przegródkach/kieszonkach. Adresy z tej puli też są wykorzystywane gdy zażyczymy sobie nowy adres do otrzymywania środków. Wtedy Core nam go pokaże.

 

Backup portfela w Core starcza domyślnie na około 100 transakcji wychodzących (kiedy my wysyłamy środki, otrzymywać możemy dowolną ilość razy). Możemy oczywiście zwiększyć pulę adresów, aby backup starczył na dłużej. Należy tylko pamiętać, że poprawną kolejnością jest najpierw zaszyfrowanie portfela a później zwiększenie puli adresów. Szyfrowanie portfela powoduje bowiem zaszyfrowanie tylko używanych adresów a "wolne" są kasowane i w zaszyfrowanym portfelu tworzona jest nowa pula). Możemy więc przez przypadek bezpowrotnie pozbawić się części środków. Warto zrobić backup przed takimi operacjami.

 

Niektóre portfele (np. multibit czy mycelium) używają tylko jednego adresu. To znaczy, że reszta z transakcji wraca na ten sam adres z którego została ona wysłana. Potrzebujemy tylko backup jednego adresu bo wszystkie środki ciągle na nim są.

 

Nieco inaczej wygląda to w nowych portfelach z serii "HD". Portfele te generują kolejne adresy deterministycznie (tzn. można wielokrotnie powtarzać generowanie i kolejne wyniki będą zawsze takie same) i jako backup wystarczy nam tylko tzw. "seed" czyli ciąg znaków (słowa, liczby - zależy od portfela) użyty do wygenerowania pierwszego adresu. W portfelach tych nie dość, że reszta wraca na kolejny adres, to za każdym razem gdy chcemy otrzymać środki podawany nam jest kolejny nowy adres. Oczywiście nic nie stoi na przeszkodzie, żeby otrzymać wpłatę na którykolwiek z wcześniejszych adresów - one nadal są w portfelu i nic nam nie zginie. Jeżeli mamy osobę z którą przeprowadzamy transakcje wielokrotnie możemy podać mu jeden adres, nie musimy za każdym razem przekazywać nowego.

 

Zwiększenie anonimowości transakcji powstaje przez utrudnienie w analizie przepływu środków. Gdy za każdym razem używamy nowego adresu i gdy reszta zawsze wraca na nowy adres, określenie że

dane adresy są wykorzystywane przez daną osobę jest utrudnione, a na pewnym poziomie wręcz niemożliwe.

 

Kilka komend z konsoli Bitcoin Core któremogą okazać się pomocne przy ustaleniu czy potrzebujesz nowej kopii portfela oraz przy tworzeniu kopi portfela :

 

getinfo - podstawowe informacje o zawartości portfela i stanie Twojego węzła:

{
   "version" : 99900, <- wersja Twojego węzła (tu akurat świeży git)
   "protocolversion" : 70002, <- wersja protokołu transmisji danych
   "walletversion" : 60000, <- wersja pliku portfela
   "balance" : 0.00042833, <- stan konta
   "blocks" : 329584, <- ilość ściągniętych bloków
   "timeoffset" : -1, <- różnica czasu Twojego wezła w stosunku do innych podłączonych
   "connections" : 9, <- ilość połączeń
   "proxy" : "", <- dane proxy (jeżeli używasz)
   "difficulty" : 39603666252.41841125, <- aktualna trudność
   "testnet" : false, <- czy jesteś w głównej sieci czy na testnecie
   "keypoololdest" : 1412713537, <- znacznik czasowy (unix timestamp) najstarszego wolnego klucza
   "keypoolsize" : 101, <- ilość adresów zapasowych
   "paytxfee" : 0.00000000, <- domyślna opłata za wysyłanie transakcji
   "relayfee" : 0.00001000, <- minimalna opłata w transakcji przekazywanej dalej
   "errors" : "" <- błędy
}

 

 

Najbardziej interesuje nas keypoololdest i keypoolsize. Jeżeli po przeliczeniu timestampa na normalną datę okaże się, że nasz ostatni backup jest starszy, to znaczy że musimy wykonać kolejny backup. Jeżeli widzimy że keypool jest mały (kilka adresów) powinniśmy zrobić backup, zwiększyć keypool i ponownie zrobić backup. Ten drugi backup (po powiększeniu) zapisujemy w bezpiecznym miejscu.

 

listaddressgroupings - wyświetla używane adresy pogrupowane pod każdy opis. To znaczy, że widzimy tu które adresy są kolejnymi adresami reszt z transakcji.

 

listunspent - wyświetla wszystkie niewydane wejścia w portfelu:

{
       "txid" : "084f072b9a5360e610ded9a9b304b02b596c24deefa9d6d3bff9365e4f0ad08a", <- id transakcji
       "vout" : 105, <- output z danej transakcji
       "address" : "1Rav3nkMayCijuhzcYemMiPYsvcaiwHni", <- na jaki adres weszła wypłata
       "scriptPubKey" : "76a91404a64b284e421191e1fcbd50bbf34f755f01b06588ac", <- suma kontolna
       "amount" : 0.00001023, <- wartość wejścia
       "confirmations" : 23950, <- ilość potwierdzeń
       "spendable" : true <- czy można wydać
   }


Suma wartości z listunspent powinna się pokrywać z wartością z getinfo. Jeżeli tak nie jest, oznacza to najczęściej niepotwierdzoną transakcję w portfelu. Jeżeli kopiemy w P2Pool lub solo może to oznaczać transakcję wydobycia która jeszcze nie dojrzała (ang. inmature).

 

backupwallet [nazwa pliku] - zapisanie bieżącej kopii portfela w nowym pliku.

 

keypoolrefill [ilość] - wypełnienie zapasowych adresów do podanej ilości. Zawsze zrób backup walleta przed użyciem tej funkcji, bo jeżeli np. zabraknie prądu czy zawiesi się komputer to portfel będzie uszkodzony. Wypełnianie 100 adresów trwa kilka sekund, większe ilości odpowiednio dłużej.

 

getnewaddress ["nazwa"] - wybranie kolejnego adresu z puli i zapisanie go pod podaną nazwą

 

encryptwallet "hasło" - zabezpieczenie portfela hasłem. To może potrwać nawet kilka minut (w zależności od wielkości portfela), pamiętaj o zrobieniu kopii przed jego zaszyfrowaniem. Adresy które nie są używane (nie mają żadnych wejść) ani nie są oznaczone po nazwie (jako nowe adresy do odbierania poleceniem getnewaddress) NIE są zachowywane a pula nowych adresów jest odnawiana na domyślną ilość nowymi adresami już w formie zaszyfrowanej.

 

walletpassphrase ["hasło"] [czas] - odblokowuje portfel na podaną ilość sekund umożliwiając wysyłanie środków czy też zapisanie klucza prywatnego dla adresu

 

walletpassphrasechange [stare hasło] [nowe hasło] - zmienia hasło do portfela

 

Portal bitcoin.pl nie ponosi odpowiedzialności z tytułu ewentualnych szkód jakie powstały w wyniku wykorzystania danych zawartych na łamach serwisu.