Open
Description
Today, the account actor is a special-case actor in multiple ways:
- It is created implicitly by the VM when a value transfer occurs to an inexistent key address.
- It can hold no logic.
- It only contains one item of state (public key address), and the placement of this data in that location is questionable, because it forces the state tree to deserialize and understand a concrete actor state to resolve an ID address to a key address.
- Unlike all other actors, it is externally owned and controlled through its own private key.
- It has never changed (a side effect of having no logic associated with it).
- All calls to it are infallible.
- (Currently) it is the only valid origin for chain messages.
In a nutshell, accounts today are modelled as actors, although in practice they are treated as special entities. We are currently in the worst of both worlds:
- Accounts aren't abstracted away entirely.
- Accounts aren't non-actor entities.
Given that FVM is the main propeller of VM design iteration, we should initiate a discussion of where we want to go.
Precedents in Ethereum:
- Since inception, there is a disctintion between EOA (externally-owned accounts) and contracts (i.e. actors).
- An EIP has been filed to fully abstract accounts: https://eips.ethereum.org/EIPS/eip-2938.