Ugrás a fő tartalomra
Change page

Ethereum számlák

Utolsó módosítás: @Satglow(opens in a new tab), 2023. augusztus 15.

Egy Ethereum számla egy olyan entitás, mely ether (ETH) egyenleggel rendelkezik és tranzakciókat tud indítani az Ethereumon. A számlák lehetnek felhasználók által irányítottak, vagy okos szerződésként telepítettek.

Előfeltételek

Ennek az oldalnak a jobb megértése érdekében javasoljuk, hogy először olvassa el a bevezetés az Ethereumba oldalunkat.

Számlatípusok

Az Ethereum két számlatípust kínál:

  • Externally owned account (EOA) – bárki irányíthatja a privát kulcsokkal
  • Szerződéses számla – egy okosszerződés, amelyet a hálózatra telepítettek és kód irányítja. Tudjon meg többet az okosszerződésekről

Mindkét számlatípus képes:

  • ETH és más tokenek fogadása, tartása és küldése
  • Interakcióba lépni a telepített okosszerződésekkel

Legfontosabb különbségek

Külső tulajdonú

  • Egy számla létrehozása nem kerül semmibe
  • Tranzakciókat indíthatsz
  • A külső tulajdonú számlák közötti tranzakciók csak ETH/token átutalások lehetnek
  • Egy kriptográfiai kulcspárból állnak: a nyilvános és a privát kulcs kontrollálja a számlával kapcsolatos ügyleteket

Szerződés

  • Egy számla létrehozása költséggel jár, mivel a hálózati tárhelyet használja
  • Csak úgy küldhet tranzakciókat ha az egy válasz egy bejövő tranzakcióra
  • A külső tulajdonú számláról szerződéses számlára küldött tranzakciók egy programkódot indítanak, amely sokféle parancsot tud végrehajtani, mint például token átutalása vagy akár új szerződés létrehozása
  • A szerződéses számláknak nincs privát kulcsuk. Ehelyett az okosszerződés logikája kontrollálja azokat

Egy számla közelebbről

Az Ethereum számláknak négy mezőjük van:

  • nonce – Egy számláló, amely az elküldött tranzakciók számát (külső tulajdonú számla) vagy a létrehozott szerződések számát (szerződéses számla) mutatja. Egy adott nonce segítségével csak egy tranzakció hajtható végre az adott számlára, így nem lehet újrajátszani a tranzakciót, így védve van az ilyen jellegű támadásoktól.
  • balance – A cím által birtokolt Wei-k száma. A Wei az ETH denominált egysége és 1e+18 Wei van egy ETH-ben.
  • codeHash – Ez a hash egy számla kódjára hivatkozik az Ethereum Virtuális Gépen (EVM). A szerződéses számlák olyan kódrészleteket tartalmaznak, amelyek különféle műveleteket tudnak végrehajtani. Ez az EVM-kód kerül végrehajtásra, ha a számla egy üzenethívást kap. A többi számlamezővel ellentétben ezt nem lehet megváltoztatni. Az összes ilyen kódrészletet az státuszadatbázis tartalmazza a megfelelő hashek alatt későbbi visszakeresés céljából. Ezt a hash-értéket nevezik codeHash-nek. Külső tulajdonú számláknál a codeHash mező egy üres sztring hash-e.
  • storageRoot – Néha úgy is hivatkoznak rá, mint tárhely-hash. Egy Merkle Patricia trie gyökér csomópontjához tartozó 256 bites hash, amely a számla tárhelyének tartalmát kódolja (256 bites integer értékek közötti leképzés), a fába kódolva, mint egy 256 bites integer kulcsok 256 bites Keccak hash-e és az RLP kódolású 256 bites integer értékek közötti leképzés. Ez a fa a számla tárolótartalmának hash-ét kódolja, és alapértelmezés szerint üres.

Egy diagram mely egy számla felépítését mutatja be Diagram átvéve az Ethereum EVM illusztrálva(opens in a new tab) anyagból

Külső tulajdonú számlák és kulcspárok

Egy számla egy kriptográfiai kulcspárból áll: egy publikusból és egy privátból. Segítenek bizonyítani, hogy a tranzakciót valóban a küldő írta alá és megelőzik a hamisítást. A privát kulcs az, amellyel aláírja a tranzakciókat, így felügyeletet biztosít a számlához tartozó pénz felett. Valójában sosem birtokolsz kriptovalutát, privát kulcsokat birtokolsz - a tőke mindvégig az Ethereum főkönyvében van.

Ez biztosítja azt, hogy rosszindulatú szereplők ne indíthassanak hamis tranzakciókat, mivel mindig azonosítani tudod a tranzakció küldőjének kilétét.

Ha Alice ethert szeretne küldeni a számlájáról Bob számlájára, akkor Alice-nek egy tranzakció kérelmet kell készítenie és elküldeni a hálózatra hitelesítésre. Az Ethereum publikus kulcs kriptográfiája biztosítja, hogy Alice be tudja bizonyítani, hogy ő volt aki elindította a tranzakciós kérelmet. Kriptográfiai mechanizmusok nélkül egy kártékony ellenség, Eve, egyszerűen elküldhetne egy kérelmet, mely úgy néz ki, mint „küldj 5 ETH-t Alice számlájáról Eve számlájára” és senki sem tudná bebizonyítani, hogy ez nem Alice-től származik.

Számla létrehozása

Amikor szeretne létrehozni egy számlát, akkor a legtöbb könyvtár generál egy véletlenszerű privát kulcsot.

Egy privát kulcs 64 hexadecimális karakterből áll, és jelszóval lehet titkosítani.

Példa:

fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f

A nyilvános kulcsot a privát kulcsból generálják az Elliptic Curve Digital Signature Algorithm(opens in a new tab) segítségével. A számla publikus címét úgy lehet megkapni, ha elvesszük a legutolsó 20 bájtot a Keccak-256 hash nyilvános kulcsából és hozzáadunk egy 0x előtagot az elejére.

A következő példa megmutatja, hogyan lehet a Clef(opens in a new tab) nevű aláíró eszközzel egy új számlát létrehozni. A Clef egy számlakezelő és -aláíró eszköz, amely az Ethereum klienssel, a Geth-szel(opens in a new tab) van egybecsomagolva. A clef newaccount parancs egy új kulcspárt hoz létre, és egy titkosított kulcstárolóba menti el.

1> clef newaccount --keystore <path>
2
3Please enter a password for the new account to be created:
4> <password>
5
6------------
7INFO [10-28|16:19:09.156] Your new key was generated address=0x5e97870f263700f46aa00d967821199b9bc5a120
8WARN [10-28|16:19:09.306] Please backup your key file path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a120
9WARN [10-28|16:19:09.306] Please remember your password!
10Generated account 0x5e97870f263700f46aa00d967821199b9bc5a120
Összes megjelenítése

Geth-dokumentáció(opens in a new tab)

Lehetséges új publikus kulcsokat származtatni a privát kulcsodból, de nem tudsz publikus kulcsokból privát kulcsot származtatni. Ez azt jelenti, hogy létfontosságú a privát kulcs biztonságban tartása, és ahogy a neve is sugallja: PRIVÁT.

Egy privát kulcsra van szükséged, hogy üzeneteket és tranzakciókat tudj aláírni, mely egy aláírást hoz létre. Ezáltal mások az aláírásodból leszármaztathatják a publikus kulcsodat, amely az üzenet feladójának kilétét bizonyítja. Az alkalmazásodban használhatsz egy javascript könyvtárat, hogy tranzakciókat küldj a hálózatra.

Szerződéses számlák

A szerződéses számláknak szintén egy 42 karakterből álló hexadecimális címük van:

Példa:

0x06012c8cf97bead5deae237070f9587f8e7a266d

Ez a szerződés cím általában akkor jön létre, amikor egy szerződést feltelepítenek az Ethereum blokkláncra. A cím a készítő címéből és az erről a címről küldött tranzakciók számából („nonce”) származik.

Validátorkulcsok

Az Ethereumon létezik egy másik típusú kulcs is, amelyet a proof-of-work-alapú konszenzusról a proof-of-stake-alapúra való átálláskor vezettek be. Ezek a BLS kulcsok, amelyek a validátorokat azonosítják. Hatékonyan aggregálhatók, hogy a hálózatnak kevesebb sávszélességre legyen szüksége a konszenzus elérésekor. Ezen kulcsaggregáció nélkül a validátor minimális letétének sokkal nagyobbnak kellene lennie.

Bővebben a validátorkulcsokról.

Megjegyzés a tárcákkal kapcsolatban

A számla nem egyenlő a tárcával. A számla az a kulcspár, amely a felhasználó Ethereum számlájához tartozik. A tárca egy olyan interfész vagy alkalmazás, amely lehetővé teszi az Ethereum számlával való interakciót.

Vizuális bemutató

Nézze meg, ahogy Austin elmagyarázza a hash funkciót és a kulcspárokat.

További olvasnivaló

Van olyan közösségi erőforrása, amely segített Önnek? Szerkessze ezt az oldalt, és adja hozzá!

Hasznosnak találta a cikket?