I have been doing some digging into the system smart contracts and eosio core code, and I found context free actions. Can somebody please explain what the difference between a context free action and a normal action is?
In short: context free actions do not depend upon the blockchain state to perform validation
A context free action involves computations that depend only on transaction data. A primary example of such a computation is signature validation. Given only the transaction data and a signature we can compute the public key that signed the transaction. This computation is one of the most expensive individual computations a blockchain must perform. Because this computation is context free (doesn’t depend upon blockchain state), it can be performed in parallel.
Context free actions are like other user actions, except they lack access to the blockchain state to perform validation. This enables EOSIO to process all context free actions in parallel just like signature verification. More importantly, this enables generalized signature verification.