Korki z Bitcoina: standardowe ścieżki w drzewie BIP32 (Hierarchical Deterministic Wallet)

Weteran
Posty: 1488
Rejestracja: 15 czerwca 2011
Reputacja: 1215
Reputacja postu: 
60
Napiwki za post: 0 BTC

Korki z Bitcoina: standardowe ścieżki w drzewie BIP32 (Hierarchical Deterministic Wallet)

Postautor: qertoip » czwartek, 20 czerwca 2019, 21:48

Wprowadzenie

Rodzina standardów BIP32 określa jak jednym sekretem kontrolować:

- dowolną liczbę adresów w ramach portfela
- dowolną liczbę oddzielnych portfeli bitcoinowych
- dowolną liczbę niezależnych kryptowalut (!)

Innymi słowy wystarczy jeden sekret aby trzymać razem bitcoiny, ethery, xrp, litecoiny, bch, monero, dashe, zcashe, cardano, i 400 innych dziwadeł. W zasadzie wszystko co bazuje na kryptografii klucza publicznego do podpisywania transakcji.

BIP32 jest powszechnie wykorzystywany w portfelach desktop, mobilnych i sprzętowych. Warto też zrozumieć, że jest to technologia z warstwy aplikacyjnej a nie protokołu czy konsensusu. Żadna kryptowaluta nie zależy od BIP32.

BIP39 Mnemonic Code

BIP39 omawiam tylko dlatego, że jest używany razem z BIP32, choć w zasadzie nie jest związany.

BIP39 mówi jak angielskie słowa (to co macie jako backup) zamienić na liczbę. Określa też, jak te angielskie słowa powinny być wygenerowane przez portfel. Wewnętrznie używane są indeksy słów w słowniku. Istnieją ustandaryzowane słowniki w kilku językach.

Wynikiem jest jedna liczba o długości 512 bitów - "binary seed".

Standardowe ścieżki w drzewie BIP32

Poniżej rodzina standardów BIP32 w notacji UML.

A <|---- B - oznacza że B jest szczególnym przypadkiem (doprecyzowaniem) A.


                                                                 |------ BIP49
                                                                 |       SEGWIT-B/COMPATIBILITY
                                                                 |
                                       |------- BIP44 <|---------|------ BIP84
                                       |        COIN                       SEGWIT-NATIVE
                                       |
                                       |
BIP32 <|---------- BIP43   <|----------|------- BIP45
HDW                PURPOSE             |        MULTISIG
                                       |
                                       |
                                       |------- BIP47
                                       |        REUSABLE PAYMENT CODES
                                       |
                                       |
                                       |------- (inne egzotyczne)




BIP32 definiuje jak powtarzalnie obliczyć drzewo liczb z jednej liczby. W praktyce jako tą źródłową liczbę używa się "binary seed" z BIP39. BIP32 nie definiuje natomiast co oznaczają poszczególne gałęzie i węzły w drzewie. Korzeń tego drzewa (master node) oznacza się literką m/. Widząc m/* wiemy, że chodzi o rodzinę standardów BIP32.

BIP43 definiuje, że pierwszy poziom powinien określać przeznaczenie/cel drzewa. W praktyce pierwszy poziom to numerek standardu. Na przykład drzewo m/44'/* ma być zgodne z BIP44.

BIP44 definiuje, że drugi poziom określa kryptowalutę. Dzięki temu jednym sekretem możemy pośrednio kontrolować wiele kryptowalut. Na przykład m/44'/0'/* to Bitcoin (0) natomiast m/44'/128'/* to Monero (128). Kryptowaluty mają przypisane konkretne numerki zgodnie z tabelą SLIP44 towarzyszącą BIP44. Trzeci poziom to "account", dzięki czemu możemy mieć kilka niezależnych portfeli tej samej kryptowaluty. Na przykład m/44'/2'/0'/* to pierwszy (0) portfel Litecoina (2).

BIP49 działa jak BIP44 plus określa, że to portfel z adresami segwitowymi w starej formie (P2WPKH-nested-in-P2SH). Rozróżnienie wprowadzono tylko po to, żeby lepiej obsłużyć sytuację, gdy użytkownik zaimportował portfel "segwitowy" do portfela klasycznego. Na przykład m/49'/0'/0'/* to pierwszy bitcoinowy portfel segwit z adresami kompatybilnymi wstecz.

BIP84 działa jak BIP44 plus określa, że to portfel z natywnymi adresami segwitowymi BECH32 (P2WPKH). Rozróżnienie z tego samego powodu co powyżej.

BIP45 definiuje klasyczny (P2SH) mutlisig ale tylko dla Bitcoina. Nie jest kompatybilny z wielowalutowością BIP44 bo powstał zbyt wcześnie.

BIP47 definiuje coś podobnego do stealth addresses. Stały adres na który można przyjmować płatności czy dotacje bez utraty prywatności. Zaimplementowane przez Samourai Wallet jako https://paynym.is/ Niestety standard dostał słabe opinie reviewerów i nie zyskał popularności.

Zalecenia praktyczne

Teoretycznie wszystko to powinno być wykrywane i obsługiwane automatycznie przez dojrzałe portfele HD - a przynajmniej przez ten sam portfel, którego oryginalnie używaliśmy.

Najlepiej jednak załączyć do backupu listę ścieżek (derivation paths) jakie wykorzystaliśmy. Ta informacja zawsze jest gdzieś dostępna. Będzie jedna ścieżka per końcowy portfel.

Dzięki temu nawet jeśli użyliśmy czegoś egzotycznego + portfel znikł z rynku + standardy się zmieniły - znajdziemy sposób na "odnalezienie" środków w drzewie.

Ścieżki nie są tajne. Można je trzymać w dowolny sposób.
We only have one shot at making digital scarcity experiment work. If Bitcoin fails within a timeframe relevant for a human, then digital scarcity claim gets falsified. Like it or not, Bitcoin must succeed for your coin to succeed.

Początkujący
Posty: 302
Rejestracja: 20 maja 2018
Reputacja: 102
Reputacja postu: 
0
Napiwki za post: 0 BTC
Napiwki: https://tippin.me/@Hegemon1995

Korki z Bitcoina: standardowe ścieżki w drzewie BIP32 (Hierarchical Deterministic Wallet)

Postautor: randomowy świeżak » czwartek, 20 czerwca 2019, 22:21

@qertoip czy zechciał byś napisać podobny tekst o segwicie ? Chodzi mi o to że jest tutaj dużo przeciwników tej tech i fajnie byłoby usłyszeć opinię osoby, która potrafi to rozłożyć na czynniki pierwsze w sposób przystępny dla kowalskiego :)

Weteran
Posty: 1602
Rejestracja: 7 listopada 2013
Reputacja: 775
Reputacja postu: 
0
Napiwki za post: 0 BTC

Korki z Bitcoina: standardowe ścieżki w drzewie BIP32 (Hierarchical Deterministic Wallet)

Postautor: redbog » czwartek, 20 czerwca 2019, 22:46

@randomowy świeżak Tutaj masz ciekawy artykuł o SW z dawnych czasów kiedy na bitcoin.pl pojawiały się jeszcze wartościowe artykuły https://bitcoin.pl/segregated-witness-p ... coin-core/

Początkujący
Posty: 302
Rejestracja: 20 maja 2018
Reputacja: 102
Reputacja postu: 
0
Napiwki za post: 0 BTC
Napiwki: https://tippin.me/@Hegemon1995

Korki z Bitcoina: standardowe ścieżki w drzewie BIP32 (Hierarchical Deterministic Wallet)

Postautor: randomowy świeżak » czwartek, 20 czerwca 2019, 22:50

@redbog dzięki, musiało mi to gdzieś umknąć

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

Korki z Bitcoina: standardowe ścieżki w drzewie BIP32 (Hierarchical Deterministic Wallet)

Postautor: rav3n_pl » piątek, 21 czerwca 2019, 09:03

qertoip pisze: czwartek, 20 czerwca 2019, 21:48BIP47
W sumie sama technika zaciemniana jest fajna, tylko obie strony transakcji znają ostateczny adres wpłaty.
Odbierający podaje xpuba ale nic na adresy z niego wygenerowane nie wpływa xD
Faktycznie problematyczne jest ustalanie przez obie strony parametrów, ale nie widzę oprócz tego jakichś dziwactw które miałyby przeszkadzać.
https://github.com/bitcoin/bips/blob/ma ... .mediawiki
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

Wróć do „Bitcoin”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 21 gości