Helps produce readable, predictable and testable code
Pure functions (given the same input always returns the same result and no side effects, or simply the function can be substituted by a lookup table like a mathematical function)
Referential transparency (any bound variable or subexpression can be replaced by it's value without changing the meaning of the program, regardless of the order in which they are evaluated)
Immutability (once a value is declared, it is unchangeable)
Functions as first class entities (functions can be passed as arguments, returned from other functions, stored in data structures and assigned to variables)
Higher order funtions (functions that takes functions as values or returns functions, like map, filter and reduce)
• Adding new transactions to Mempool • Validating transactions against the current State (sufficient sender balance) • Changing the state • Persisting transactions to disk • Calculating accounts balances by replaying all transactions since Genesis in a sequence
• Adding new transactions to Mempool • Validating transactions against the current State (sufficient sender balance) • Changing the state • Persisting transactions to disk • Calculating accounts balances by replaying all transactions since Genesis in a sequence