Different types of accounts in Ethereum wallets

There are two types of accounts that can be applied for Ethereum:

Externally Owned Accounts

This type of account has its own features such as having an ether balance, sending transactions (ether transfer or trigger contract code), being controlled by private keys and having no associated code.

Contract Accounts (Smart Contracts):

They also have some characteristics that are mutual with the previous on such as having an ether balance, having an associated code. The other features are like code execution is triggered by transactions or messages (calls) received from other contracts and when executed – perform operations of arbitrary complexity (Turing completeness) – manipulate its own persistent storage, i.e., can have its own permanent state – can call other contracts.

All action on the Ethereum block chain is set in motion by transactions fired from externally owned accounts. Every time a contract account receives a transaction, its code is executed as instructed by the input parameters sent as part of the transaction. The contract code is executed by the Ethereum Virtual Machine on each node participating in the network as part of their verification of new blocks.

This execution needs to be completely deterministic, its only context is the position of the block on the blockchain and all data available. The blocks on the blockchain represent units of time, the blockchain itself is a temporal dimension and represents the entire history of states at the discrete time points designated by the blocks on the chain.

Both account types have the ability to receive, hold and send ETH and tokens and interact with deployed smart contracts.

Key differences between the accounts:

The big difference between EOA and smart contract address is that EOA address has an associated private key to sign the transaction. So, in smart contract address does not have any private key. Smart contract address only can do is react to incoming transactions that execute some of the smart contract functions.

Externally-owned account has particular features such as creating an account which costs nothing and it can initiate transactions and finally transactions between externally-owned accounts can only be ETH/token transfers.

Contract accounts have some advantages and disadvantages over Externally Owned Accounts.

Mainly a Smart Contract is controlled by a code. It can only send transactions in response to receiving a transaction. Transactions from an external account to a contract account can trigger code which can execute many different actions, such as transferring tokens or even creating a new contract. Finally, when executed — perform operations of arbitrary complexity (Turing completeness) — manipulate its own persistent storage, i.e., can have its own permanent state — can call other contracts.

Contract accounts can also list incoming transactions. They, additionally, can be set up as Multisig Accounts. A Multisig Account can be structured such that it has a daily limit which you specify, and only if the daily limit is exceeded will multiple signatures be required.

Apart from that, creating a smart contract requires payment because network storage is being used. Another point is that an externally owned account can send message to other externally owned accounts or to other contract accounts by creating and signing a transaction using its private key. A message between two externally owned accounts is simply a value transfer. However, a message from an externally owned account to a contract account activates the contract account’s code, allowing it to perform various actions (e.g. transfer tokens, write to internal storage, mint new tokens, perform some calculation, create new contracts, etc.).

Unlike externally owned accounts, contract accounts can’t initiate new transactions on their own. Instead, contract accounts can only fire transactions in response to other transactions they have received (from an externally owned account or from another contract account).

All action on the Ethereum block chain is set in motion by transactions fired from externally owned accounts. Every time a contract account receives a transaction, its code is executed as instructed by the input parameters sent as part of the transaction. The contract code is executed by the Ethereum Virtual Machine on each node participating in the network as part of their verification of new blocks.

Although EOAs can be ideal since they are free of charge, they cannot meet all the requirements. First of all, since all the assets safety is dependent on the private key, loss or theft can endanger all your property. Secondly, multisig feature cannot be applied for EOAs. This is what the code takes care of.

Walliro is a smart contract wallet which provides all these features for its users.

Leave a Reply

Your email address will not be published. Required fields are marked *