1

https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/ :

This allows for a highly advanced light client protocol that allows light clients to easily make and get verifiable answers to many kinds of queries: ... Does this account exist?

The is handled by the state tree, but the way that it is computed is more complex. Here, we need to construct what can be called a Merkle state transition proof. Essentially, it is a proof which make the claim “if you run transaction T on the state with root S, the result will be a state with root S', with log L and output O”

When we start using geth or parity we can create unlimited number of accounts each having an unique address ex:'0xe427c111f968fe4ff6593a37454fdd9abf07c490'. As I understand if there is no transaction to this address, it will not show up on the state-tree.

[Q] If an account did not carried any transaction, hence it will now show up in the state tree. So how Ethereum could know that account actually exist which does now have any foot print on the state-tree?

[Q] In addition to that: hence each user can create unlimited number of accounts. If an user creates billions of accounts, and each will carry a non-stop transaction between each other. Does all account's information will be stored in the World-State? If yes, this may consume a lot of memory on the long run.

Thank you for your valuable time and help.

1

On Q1, you are correct that just "creating" an account in a client does not cause it to be tracked as part of the blockchain state. All you've done is take a private key and generate the address for it - this is completely offline and does not require any interaction with the blockchain. In this sense, all accounts already exist, but the blockchain tracks only those accounts for which there is at least one incoming transaction (and that haven't been self-destructed). If an account has no transactions, the blockchain does not need to "know" about it; when you make the first transaction into that account, then it is added into the blockchain state.

On Q2, in principle you are correct. In practice, to cause the blockchain to add an account to the state you need to send a transaction to it. This costs some gas, ideally enough gas to prevent anyone from spamming it. However, this was not always the case. In late summer 2016 an attacker took advantage of a cheap way to create accounts and did indeed spam the blockchain with "state bloat". These spam accounts were later cleared out of the blockchain state, and the account creation gas cost was repriced to discourage this kind of thing in future.

See EIP-150 for the opcode re-pricing to prevent this. Here's a detailed explanation of how the state-bloat attacks were carried out. Some discussion of the issue and the cleanup from Vitalik.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.