Przejdź do treści
Słownikethereumpodstawyportfeleadresy

Konto Ethereum

Onchainowa jednostka identyfikowana adresem, która może przechowywać ETH, mieć stan i wchodzić w interakcje ze smart kontraktami.

Dwa typy kont w Ethereum

Ethereum używa pojęcia konta inaczej niż bank albo aplikacja internetowa. Konto nie jest profilem użytkownika z loginem i hasłem. To obiekt w stanie sieci, widoczny pod publicznym adresem.

Są dwa podstawowe typy kont: externally owned account, czyli EOA, oraz konto kontraktowe. EOA jest kontrolowane przez klucz prywatny. Konto kontraktowe jest kontrolowane przez kod smart kontraktu.

Ten podział ma duże znaczenie, bo tylko EOA może samodzielnie rozpocząć zwykłą transakcję. Kontrakt wykonuje kod dopiero wtedy, gdy zostanie wywołany przez transakcję albo inny kontrakt.

EOA kontra konto kontraktowe

EOA
Konto kontrolowane przez klucz prywatny. To typowy adres użytkownika w portfelu.
Konto kontraktowe
Konto kontrolowane przez kod. Nie ma prywatnego klucza, który podpisuje transakcje.
Inicjowanie transakcji
Zwykłą transakcję inicjuje EOA. Kontrakt reaguje na wywołanie.
Logika działania
EOA ma prostą logikę: podpis kluczem. Kontrakt może mieć własne reguły zapisane w kodzie.
Przykład
MetaMask z prywatnym kluczem to EOA. Safe albo Uniswap Pool to konta kontraktowe.

Z czego składa się konto w Ethereum

Ethereum śledzi kilka elementów stanu konta. Części z nich użytkownik zwykle nie widzi w portfelu, ale wpływają na działanie transakcji.

  • nonce, czyli licznik używany między innymi do porządkowania transakcji i ochrony przed replay attack.
  • Saldo ETH, które pokazuje ilość natywnego aktywa przypisaną do konta.
  • Storage root, czyli odniesienie do pamięci kontraktu, jeśli konto jest smart kontraktem.
  • Code hash, czyli informację o kodzie konta. Dla EOA wskazuje pusty kod.

Jak adres wynika z klucza

W przypadku EOA prywatny klucz służy do wyprowadzenia klucza publicznego. Z klucza publicznego, przez funkcję hashującą, powstaje adres Ethereum.

To działa w jedną stronę. Z adresu nie da się odtworzyć klucza prywatnego. Dlatego możesz publicznie podawać adres do odbioru środków, ale nigdy nie możesz ujawniać seed phrase ani klucza prywatnego.

Portfel jest tylko aplikacją zarządzającą kluczem i pokazującą konto. Ten sam klucz możesz zaimportować do innej aplikacji portfelowej i nadal zobaczysz to samo konto onchain.

Praktyczne sytuacje

  • Importujesz seed phrase do innego portfela i widzisz ten sam adres, bo konto wynika z tego samego klucza.
  • Wysyłasz dwie transakcje z tym samym nonce i tylko jedna może zostać wykonana.
  • Wysyłasz ETH do kontraktu, który nie obsługuje takiej wpłaty, więc transakcja może się nie udać.
  • Używasz Safe, gdzie środki są na koncie kontraktowym, a reguły dostępu definiuje smart kontrakt.

Dlaczego account abstraction jest ważne

Klasyczne EOA jest proste, ale ma twarde ograniczenia. Jeden klucz kontroluje wszystko, a utrata klucza może oznaczać trwałą utratę dostępu.

Smart accounty próbują rozwiązać ten problem przez dodatkową logikę: wielu podpisujących, limity, social recovery, batching i sponsorowany gaz.

Dlatego konto Ethereum nie jest tylko technicznym szczegółem. To fundament tego, jak działa bezpieczeństwo portfela i UX całej sieci.

Najczęstsze błędne założenia

  • Konto nie jest tym samym co aplikacja portfelowa. Portfel tylko zarządza dostępem.
  • Nie każdy adres Ethereum jest zwykłym portfelem użytkownika. Część adresów to smart kontrakty.
  • Kontrakt nie ma prywatnego klucza w takim sensie jak EOA. Działa według kodu.
  • Wysłanie ETH do dowolnego kontraktu nie zawsze jest bezpieczne. Kontrakt musi obsługiwać taką wpłatę.
  • Adres zerowy nie jest normalnym odbiorcą. Środki wysłane na 0x0000000000000000000000000000000000000000 są praktycznie nie do odzyskania.

Utrata klucza do EOA zwykle oznacza utratę kontroli

Jeżeli konto jest zwykłym EOA, sieć nie ma funkcji resetu hasła. Kto ma klucz prywatny, kontroluje konto. Kto traci klucz, może stracić dostęp bez możliwości odzyskania środków.

Najczęstsze pytania

Nie. Konto to obiekt onchain widoczny pod adresem. Portfel to aplikacja, która zarządza kluczem i pozwala podpisywać transakcje z tego konta.

EOA jest kontrolowane przez klucz prywatny. Smart kontrakt jest kontrolowany przez kod. EOA może rozpocząć zwykłą transakcję, a kontrakt wykonuje logikę wtedy, gdy zostanie wywołany.

Tak. Jeśli zaimportujesz ten sam klucz prywatny albo seed phrase do innej aplikacji, uzyskasz dostęp do tego samego konta. Zmienia się aplikacja, nie konto onchain.

Nonce porządkuje transakcje z konta. Jeśli wcześniejsza transakcja z niższym nonce utknie, późniejsze mogą czekać, bo sieć musi wykonać je w odpowiedniej kolejności.