Aeternity allows for the development of functional smart contracts. It does not support stateful programming. Instead, parties to the contract are responsible for maintaining the state of the program. They would then provide and confirm the state as part of the inputs for the contract.
This is in contrast to Ethereum’s insistence that stateful programming is important for blockchain applications. We can’t cover the difference between functional and state-based programming in this article. However, suffice it to say that state is an important component of building useful applications. Ethereum is working on the extremely difficult problem of state sharding, which, if solved, could render Aeternity much less attractive as a platform.
The project focuses on increasing the scalability of smart contracts and dapps. It accomplishes scaling by moving smart contracts off-chain. Instead of running on the blockchain, smart contracts on Aeternity run in private state channels between the parties involved in the contracts.