Clarify AnteHandler and MsgHandler

This commit is contained in:
Adrian Brink 2018-02-21 20:16:22 +01:00 committed by GitHub
parent 8ccf055ca1
commit 5c2758b8df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 4 deletions

View File

@ -17,10 +17,14 @@ stores they're given the key for. The BaseApp ensures all stores are properly lo
One mounted store is considered the "main" - it holds the latest block header, from which we can find and load the
most recent state.
BaseApp distinguishes between two handler types - the `AnteHandler` and the `Handler`.
The former is a stateful validity check (eg. checking nonce and sufficient balance),
the later the full state transition function. Only AnteHandler runs during CheckTx,
while both run in DeliverTx.
BaseApp distinguishes between two handler types - the `AnteHandler` and the `MsgHandler`.
The former is a global validity check (checking nonces, sigs and sufficient balances to pay fees,
e.g. things that apply to all transaction from all modules), the later is the full state transition function.
During CheckTx the state transition function is only applied to the checkTxState and should return
before any expensive state transitions are run (this is up to each developer). It also needs to return the estimated
gas cost.
During DeliverTx the state transition function is applied to the blockchain state and the transactions
need to be fully executed.
BaseApp is responsible for managing the context passed into handlers -
it makes the block header available and provides the right stores for CheckTx and DeliverTx.