An Account uniquely identifies any entity actively participating in the IoTeX network, that can be a user, a device, an enterprise, or even software on the blockchain itself (a so-called smart contract). Each IoTeX account has a private key and a corresponding public key associated with it.
Account Address
As with other blockchain networks, following a specific set of transformations, the public key is usually transformed into a human-readable string, which is referred to as the address of the account,
IoTeX specifies an address format made of 41 characters, starting by io1... such that a typical address in the IoTeX blockchain looks like the one below:
Nonetheless, if you convert that public key using the Ethereum address format specification, you will get the following Ethereum address representation:
0x147e805c858840099190e208d7A04A74F2A0AAC8
Both the IoTeX address and the Ethereum address representations above refer to the same blockchain account because they represent the same public key. Check out the section Address Conversion to learn more about IoTeX and Ethereum address representations.
Address types
IoTeX is an Ethereum-compatible smart contract platform, so in the same way as Ethereum two types of accounts are defined:
Externallyownedaccounts: have a known private key associated with them (typically owned by people, enterprises, or IoT devices) and can initiate actions such as token transfers or contract calls
Smart contractaccounts: have no known private key associated, hence they cannot initiate actions, but they have "code" associated with them. The code of a smart-contract account is run each time a "contract call" action is sent to the smart-contract address by either an externally owned account or another smart contract.
Learn more about smart-contract accounts in the official Ethereum documentation:
Account Types, Gas, and Transactions — Ethereum Homestead 0.1 documentation