I created an Ethereum node (geth) and this automatically created an Ethereum account. Is this account an Ethereum wallet? I then created 2 other accounts using personal.newAccount() command. Are these accounts or wallets?
Thank you
Terminology is not strict enough, but in geth
word account
is used for so called externally owned accounts, i.e. Ethereum addresses derived from public keys (address is basically last 20 bytes from keccak256 hash of 64-byte uncompressed public key). Such address may be a transaction origin, i.e. Ethereum transactions may be published from such addresses, signed by a private key that corresponds to a public key the address was derived from.
In contrast, word wallet
is often used for smart contract that is able to execute arbitrary Ethereum transactions when told to do so by wallet's owner. Here owner is another Ethereum address that is eligible to issue orders to the wallet. Usually, wallet allows its owner to transfer ownership to another address, which allows owner of the wallet to change private key without changing wallet's address and without transferring any assets.
Both, accounts and wallets may receive, store, and send Ether and tokens. Both may control smart contracts.
Account is controlled by private key, and there is no way to change private key (e.g. when suspected to be compromised) without changing address and transferring all the assets from old address to the new one. New accounts may be created for free. Account may be used to deploy smart contracts.
Wallet is controlled by another Ethereum address, that could be account, another wallet, or arbitrary smart contract. It is possible to change controlling address without changing wallet's address. Wallets creation requires some fee to be paid. While it is possible to design wallet smart contract that is able to deploy new smart contracts, common implementation usually does not have such feature.
geth account new
vs above way is the same? But i don't understand if it can be called wallet, so what's keystore created from this goethereumbook.org/en/keystore ? A keystore is a file containing an encrypted wallet private key.
, so technically a keystore is a wallet with encrypted private key? I see the command geth account new
, it generated keystore and store them in the data dir, are they the same?
Commented
Jun 12, 2019 at 20:44
get account new
does not require network connection, if this is what you are asking for.
Commented
Jun 13, 2019 at 10:15
There are two types of Ethereum accounts:
The 1st type is used only for transferring Ether to and from.
The 2nd type is used also in order to implement desired functionality.
What you refer to as wallet is most likely the 1st type, which means that in your question, the terms wallet and account are equivalent.
In both types, the address of an account is a hexadecimal string of 40 characters.
However, in opposed to externally-owned accounts, a smart-contract account doesn’t have a known private key when created, because the address of an externally-owned account is generated from its private key, while the address of a smart-contract is generated by hashing the address of the account used for deploying it.
In order to allow transferring Ether to a smart-contract account, the author of this smart-contract must implement function() external payable
(aka the fallback function).
In order to allow transferring Ether from a smart-contract account, the author of this smart-contract must implement a function which does it (in opposed to an externally-owned account, where you "only" need the private key).
To put it simple:
In order to interact with ethereum network (blockchain) you need an account. This is an externally-owned account as @goodvibration explained. That account consists of public and private key-pair. Your ethereum address is basically part of your public key and you use your private key to sign transactions in order for them to be executed on chain.
The wallet is more of a way you store your key-pair(s). You can keep your key-pair on some server (commonly referred as hot wallet), on your PC (just what you did when you created account via geth) that is cold wallet, then you can keep it on piece of paper, carved in the wood...you also have something called HD wallet...and it goes on. Some wallets just keep your key-pairs while some other provide features like signing transaction, exchange...etc.
So in your case geth acts as, sort of, a wallet.
Hope I hit the point of your dilemma :)
geth account new
can be executed locally.
Commented
Jun 12, 2019 at 14:19