An Account uniquely identifies any entity actively participating in the IoTeX network: 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.
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:
which was obtained from the following public key:
Nonetheless, if you convert that public key using the Ethereum address format specification, you will get the following Ethereum address representation:
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.
IoTeX is an Ethereum-compatible smart contract platform, so in the same way as Ethereum two types of accounts are defined:
Externally owned accounts: 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 contract accounts: 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: