Safety and Liveness
Safety and liveness are the two fundamental properties required for a distributed system to function correctly. Safety ensures that the system never reaches an incorrect state, meaning that bad things never happen, such as two different users spending the same coins.
Liveness ensures that the system makes progress, meaning that good things eventually happen, such as transactions being confirmed in a reasonable amount of time. In the context of blockchain, safety protects against fraud and double-spending, while liveness ensures that the network does not stall and remains usable.
Designing a protocol that balances both is a classic problem in computer science, as increasing one often impacts the other. These properties are the benchmarks against which the reliability and robustness of any consensus mechanism are measured.