Event Sourcing allows you to store all the domain events that affect an entity, and replay these events to restore the object’s state.
The fundamental idea of Event Sourcing is that of ensuring every change to the state of an application is captured in an event object, and that these event objects are themselves stored in the sequence they were applied for the same lifetime as the application state itself.