Powrót

3. Poziom zaawansowany

Ukończono: 0%
Kroki: 0/0
  1. 1. Co to jest Taproot?
  2. 2. Mosty blockchain – co to jest?
  3. 3. Czym jest Ethereum Plasma?
  4. 4. Co to jest Ethereum Casper?
  5. 5. Co to jest dowód Zk-SNARK i Zk-STARK
  6. 6. Co to jest Selfish Minning?
  7. 7. Czym jest spoofing na rynku kryptowalut?
  8. 8. Podpisy Schnorra - co to jest?
  9. 9. MimbleWimble
  10. 10. Cyfrowe prawo własności
  11. 11. Czym są ETFy?
  12. 12. Jak sprawdzić projekt kryptowalutowy – czyli tokenomia kryptowalut
  13. 13. Czym jest atak 51% na blockchain?
  14. 14. Czym jest i jak działa DAO? 
  15. 15. Zero-Knowledge Proof- protokół, który szanuje prywatność
  16. 16. Co to jest EOSREX?
  17. 17. Co to jest Proof of Elapsed Time- dowód upływającego czasu (PoET)?
  18. 18. Mirror Protocol – co to jest?
  19. 19. Aktywa syntetyczne
  20. 20. Jak stworzyć własny NFT?
  21. 21. Czym są likwidacje DeFI?
  22. 22. Nowy system tożsamości - Polygon ID
  23. 23. Fundacja Ethereum i protokół Scroll - czym są?
  24. 24. Czym jest bizantyjska tolerancja błędów?
  25. 25. Czym jest skalowalność technologii blockchain?
  26. 26. Interchain Security- nowy protokół Cosmos (Atom)
  27. 27. Coin Mixing vs. Coin Join - definicja, możliwości i zagrożenia
  28. 28. Czym jest Ethereum Virtual Machine MEV?
  29. 29. Co to są tokeny SoulBound SBD?
  30. 30. Co to jest Lido?
  31. 31. Czym są Threshold Signatures i jak działają?
  32. 32. Technologia blockchain i cyberataki
  33. 33. Skrypt Bitcoina - czym jest i co powinieneś wiedzieć na ten temat
  34. 34. Czym jest zkEVM i jakie są jego podstawowe cechy?
  35. 35. Czy poufne transakcje na blockchainie istnieją? Co to jest Confidential Transaction?
  36. 36. Algorytmiczne stablecoiny – wszystko, co powinieneś o nich wiedzieć
  37. 37. Polygon Zk Rollups - co powinieneś wiedzieć na jego temat?
  38. 38. Co to jest Infura Web3?
  39. 39. Mantle – skalowalność Ethereum L2 – jak działa?
  40. 40. Czym jest NEAR Rainbow Bridge?
  41. 41. Liquid Staking Ethereum i tokeny LSD. Co musisz wiedzieć na ten temat?
  42. 42. 10 najlepszych blockchainowych wyroczni. Jak działają? Czym się różnią?
  43. 43. Czym jest Web3.js i Ether.js? Jakie są między nimi podstawowe różnice?
  44. 44. Czym jest StarkWare i rekurencyjne dowody ważności
  45. 45. Quant Network: Skalowalność przyszłości
  46. 46. Polygon zkEVM - wszystko, co powinieneś wiedzieć
  47. 47. Co to jest Optimism (OP) i jak działają jego rollupy?
  48. 48. Czym są węzły RPC node i jak działają?
  49. 49. SEI Network: wszystko, co musisz wiedzieć o rozwiązaniu warstwy 1 dla DeFi
  50. 50. Rodzaje mechanizmów konsensusu Proof-of-Stake: DPoS, LPoS oraz BPoS
  51. 51. Bedrock: krzywa epileptyczna, która zapewnia bezpieczeństwo!
  52. 52. Czym jest Tendermint i jak działa?
  53. 53. Pantos: jak rozwiązać problem transferu tokenów miedzy blockchainami?
  54. 54. Czym jest szyfrowanie asymetryczne?
  55. 55. Funkcja Base-58 w kryptowalutach
  56. 56. Czym jest i jak działa protokół Nostr?
  57. 57. Czym jest i jak działa most XDAI Bridge?
  58. 58. Porównanie Solidity i Rust: Wybór języka programowania w ekosystemie blockchain.
  59. 59. Czym jest Real-Time Operating System (RTOS)?
  60. 60. Czym jest i jak działa Rinkeby Testnet Ethereum?
  61. 61. Czym jest szyfrowanie probabilistyczne?
  62. 62. Czym jest Pinata w Web 3? Wyjaśniamy!
  63. 63. Czym jest EIP-4337? Czy Ethereum Account Abstraction zmieni Web3 na zawsze?
  64. 64. Czym są audyty inteligentnych kontraktów? Jakie firmy się nim zajmują?
  65. 65. Jak działa portfel AirGapped?
  66. 66. Czym jest proto-danksharding (EIP-4844) na Ethereum?
  67. 67. Czym jest i jak działa zdecentralizowana pamięć masowa?
  68. 68. Jak odzyskać kryptowaluty wysłane na niewłaściwy adres lub sieć? Praktyczny poradnik!
  69. 69. Portfel MPC i Obliczenia Wielostronne: Innowacyjna technologia dla prywatności i bezpieczeństwa.
  70. 70. Podpis progowy w kryptografii: zaawansowana technika podpisywania!
  71. 71. Adres Vanity w kryptowalutach: czym jest i jaka jest jego charakterystyka?
  72. 72. Atak Ponownego Wejścia (Reentrancy Attack) na inteligentnych kontraktach: zagrożenie dla bezpieczeństwa blockchain!
  73. 73. Slither: statyczny analizator dla smart kontraktów!
  74. 74. Sandwich Attack w DeFi: wyjaśnienie i zagrożenia!
  75. 75. Blockchain RPC dla Web3: Kluczowa technologia w świecie zdecentralizowanych finansów!
  76. 76. Re-staking: Korzyści z ponownego delegowania środków w stakingu!
  77. 77. Base: Ewolucja transakcji kryptowalutowych dzięki rozwiązaniu warstwy 2 od Coinbase
  78. 78. IPFS: Nowa era zdecentralizowanego przechowywania danych
  79. 79. Typowe luki i zabezpieczenia mostów w technologii blockchain
  80. 80. JumpNet – nowy sidechain Ethereum
Lekcja 55 z 80

55. Funkcja Base-58 w kryptowalutach

Satoshi Nakamoto, twórca Bitcoina, zasługuje na uznanie z wielu powodów, a jednym z jego wyjątkowych osiągnięć jest system kodowania Base58. Dziś poświęcimy lekcję na omówienie tego zagadnienia.

Base-58 – definicja

Base-58 to grupa schematów kodowania binarnego na tekst, używana do reprezentowania dużych liczb całkowitych w postaci tekstu alfanumerycznego. W czasach, gdy Satoshi Nakamoto tworzył Bitcoina, istniejące wówczas systemy kodowania nie spełniały jego potrzeb. Z myślą o ułatwieniu konwersji często używanych elementów w Bitcoinie, takich jak klucze prywatne i adresy, Nakamoto wprowadził innowacyjne rozwiązanie w postaci Base-58.

Celem było stworzenie formatu, który umożliwiałby łatwą udostępnialność i użytkowanie kluczowych elementów w Bitcoinie. W efekcie tej innowacji inne kryptowaluty również zaczęły korzystać z Base-58, szczególnie w celu ułatwienia transakcji. Jednak zastosowanie tej technologii nie ogranicza się wyłącznie do obszaru kryptowalut. Base-58 znalazł swoje zastosowanie w różnych dziedzinach, obejmując klucze główne, adresy Ripple oraz krótkie adresy URL.

Jak działa Base-58?

Podstawa “Base” definiuje liczbę znaków używanych do reprezentowania danej liczby. Oto kilka przykładów:

  • Base-2 (system binarny) reprezentuje liczby za pomocą dwóch znaków: 0 i 1.
  • Base-10, znany jako system dziesiętny, używa 10 znaków (0-9).
  • Base-16, czyli system szesnastkowy, wykorzystuje 16 znaków: 0123456789abcdef.

Base-58, podobnie jak poprzednie, używa 58 znaków. W swoim zakresie zawiera wszystkie znaki alfanumeryczne (0-9, a-z, A-Z), z pewnymi wyjątkami, takimi jak zera, wielkie litery i (I) oraz o (O), mała litera l oraz symbole + i /. Base-58 ma na celu reprezentowanie dużych liczb w krótkim formacie, unikając jednocześnie łatwo mylonych znaków.

Liczby zakodowane w Base-58 zajmują około 56.7% rozmiaru liczb dziesiętnych. Wyeliminowanie wizualnie podobnych znaków pomaga zminimalizować ryzyko błędów ludzkich podczas przepisywania czy odczytywania.

Base-58 znalazł zastosowanie w różnych dziedzinach, w tym w technologii blockchain, kryptowalutach oraz w wielu innych aplikacjach. Jego popularność wynika z umiejętności reprezentowania dużych liczb w zwięzłym formacie, jednocześnie redukując potencjalne błędy w interpretacji znaków.

Base-58 a kryptowaluty

Istnieje wiele wariantów Base-58 obecnie w użyciu. Najprostsze z nich zmieniają jedynie alfabet (często poprzez zmianę kolejności liter). Przykładem może być Ripple, które w swoim kodowaniu używa znaków, wydających się niemal losowe. Jednakże, zostały one dobrane w taki sposób, że pierwsze znaki ważnych sekwencji zawsze zawierają wspólną, znaczącą literę.

Innym przykładem jest Monero. Ta kryptowaluta koduje długie sekwencje w krótkie, 8-bajtowe bloki danych, co pozwala na deterministyczny rozmiar danych. Sam adres Monero ma długość 69 bajtów. Dzięki zastosowaniu kodowania blokowego i określonego schematu wypełniania, adresy Monero po zakodowaniu zawsze będą miały stałą długość 95 znaków.

Sumy kontrolne

W przypadku Base-58 istotnym elementem są sumy kontrolne, z których istnieją trzy różne schematy. Bitcoin wprowadził Base58Check, który pozwala na dodanie do danych prefiksu, będącego pojedynczym bajtem (technicznie nie jest to wymagane). Ten prefiks, razem z danymi, jest poddawany procesowi haszowania SHA256. Następnie otrzymany wynik przechodzi przez kolejne haszowanie SHA256, a pierwsze cztery znaki używane są jako suma kontrolna.

Inny przykład to schemat Base58Check wprowadzony przez Avalanche, który eliminuje drugie przejście przez SHA256.

Substrate SDK dla Polkadot wprowadza format adresu SS58, który korzysta z implikowanego algorytmu sumy kontrolnej opartego na Base58Check, ale z pewnymi istotnymi różnicami, takimi jak użycie Blake2 zamiast SHA2 dla funkcji haszowania kryptograficznego.

Warto zaznaczyć, że rozmiar sumy kontrolnej może wynosić od jednego do ośmiu bajtów, zależnie od używanego formatu adresu. Implementacja biblioteki Base-58 stanowi wyzwanie ze względu na konieczność manipulacji bardzo dużymi liczbami w procesie kodowania.

Wady Base-58:

  1. Wolne kodowanie: Kodowanie tekstowe w Base-58 wymaga wykonywania operacji podziału, co jest czasochłonne w porównaniu do operacji w innych systemach kodowania, takich jak Base64.
  2. Złożoność kodu: Implementacja kodowania Base-58 wymaga skomplikowanego konwertera zmieniającego bazę. Dodatkowo, wymaga to obsługi bibliotek liczb całkowitych o wysokiej precyzji.
  3. Mała użyteczność dla większych danych: Base-58 jest użyteczne głównie dla krótkich fragmentów tekstu, takich jak adresy portfeli Bitcoin. Dla większych danych może być praktycznie nieużyteczne.

Mimo tych wad, Base-58 ułatwia korzystanie z Bitcoina, przekształcając dane źródłowe adresu w format łatwy do odczytania. Na przykład, klucz ECDSA jest konwertowany na czytelny adres Bitcoinowy, składający się z 20 znaków. Base-58 jest również używane w kluczach prywatnych, co zwiększa użyteczność w kontekście kryptowalut.

Podsumowanie

Mimo istniejących wad, funkcja Base-58 jest niezwykle użyteczna. Nie tylko znajduje zastosowanie w branży kryptowalut, ale również w innych sektorach związanych ze zdecentralizowaną technologią.