Event sourcing stores state as a sequence of events (facts), and current state is rebuilt by replaying them into a projection. Benefits: audit trail, easy history, and time-travel/debugging. Trade-offs: higher complexity, event schema evolution, more moving parts (projections), and harder ad-hoc queries.
Expanding on the short answer — what usually matters in practice:
A tiny example (an explanation template):
// Example: discuss trade-offs for "event-sourcing:-what-is-it-and-what-are-the-main"
function explain() {
// Start from the core idea:
// Event sourcing stores state as a sequence of events (facts), and current state is rebuilt
}