I am currently having a hard time finding actual reliable concrete sources for an answer to the question what information exactly is stored on the ledger and what is not.
Specifically, Ethereum knows Externally Owned Accounts (EOAs) and Contract Accounts. Now: When I create a new account, what is stored where and when?
As far as I understand, I create my account as a "wallet" locally (e.g. using geth account new
). Within this wallet, all information needed (i.e. my keypair etc) is stored locally.
Still, if I am to send Ether from my account to another, I will need to sign the respective transaction using my private key. Accordingly, any miner will need to verify said transaction's signature using my public key (as stated in the yellow paper in Section 6), which hence needs to be published somehow.
The Ethereum yellow paper states that an account's state is "not stored on the blockchain" but is stored in the "state database", which is (as far as I understand) computed by every node from the history of transactions. Still, I cant find any mention of where an account's associated keypair is stored. Can't be only in my local wallet...
Hence the question(s): - How is a wallets public key published in the Ethereum network? - How do I retrieve the public key for an account? - What data for an account is actually written to the ledger and when?
Can anyone point me to the solution of this?