Merge reference/baseapp and spec/baseapp/WIP_abci_application.md
This commit is contained in:
parent
4afd53d81b
commit
bd982b1423
|
@ -61,3 +61,64 @@ persisted even when the following Handler processing logic fails.
|
||||||
It is possible that a malicious proposer may include a transaction in a block
|
It is possible that a malicious proposer may include a transaction in a block
|
||||||
that fails the AnteHandler. In this case, all state transitions for the
|
that fails the AnteHandler. In this case, all state transitions for the
|
||||||
offending transaction are discarded.
|
offending transaction are discarded.
|
||||||
|
|
||||||
|
|
||||||
|
## Other ABCI Messages
|
||||||
|
|
||||||
|
Besides `CheckTx` and `DeliverTx`, BaseApp handles the following ABCI messages.
|
||||||
|
|
||||||
|
### Info
|
||||||
|
TODO complete description
|
||||||
|
|
||||||
|
### SetOption
|
||||||
|
TODO complete description
|
||||||
|
|
||||||
|
### Query
|
||||||
|
TODO complete description
|
||||||
|
|
||||||
|
### InitChain
|
||||||
|
TODO complete description
|
||||||
|
|
||||||
|
During chain initialization InitChain runs the initialization logic directly on
|
||||||
|
the CommitMultiStore. The deliver and check states are initialized with the
|
||||||
|
ChainID.
|
||||||
|
|
||||||
|
Note that we do not commit after InitChain, so BeginBlock for block 1 starts
|
||||||
|
from the deliver state as initialized by InitChain.
|
||||||
|
|
||||||
|
### BeginBlock
|
||||||
|
TODO complete description
|
||||||
|
|
||||||
|
### EndBlock
|
||||||
|
TODO complete description
|
||||||
|
|
||||||
|
### Commit
|
||||||
|
TODO complete description
|
||||||
|
|
||||||
|
|
||||||
|
## Gas Management
|
||||||
|
|
||||||
|
### Gas: InitChain
|
||||||
|
|
||||||
|
During InitChain, the block gas meter is initialized with an infinite amount of
|
||||||
|
gas to run any genesis transactions.
|
||||||
|
|
||||||
|
Additionally, the InitChain request message includes ConsensusParams as
|
||||||
|
declared in the genesis.json file.
|
||||||
|
|
||||||
|
### Gas: BeginBlock
|
||||||
|
|
||||||
|
The block gas meter is reset during BeginBlock for the deliver state. If no
|
||||||
|
maximum block gas is set within baseapp then an infinite gas meter is set,
|
||||||
|
otherwise a gas meter with `ConsensusParam.BlockSize.MaxGas` is initialized.
|
||||||
|
|
||||||
|
### Gas: DeliverTx
|
||||||
|
|
||||||
|
Before the transaction logic is run, the `BlockGasMeter` is first checked to
|
||||||
|
see if any gas remains. If no gas remains, then `DeliverTx` immediately returns
|
||||||
|
an error.
|
||||||
|
|
||||||
|
After the transaction has been processed, the used gas (up to the transaction
|
||||||
|
gas limit) is deducted from the BlockGasMeter. If the remaining gas exceeds the
|
||||||
|
meter's limits, then DeliverTx returns an error and the transaction is not
|
||||||
|
committed.
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
# ABCI application
|
|
||||||
|
|
||||||
The `BaseApp` struct fulfills the tendermint-abci `Application` interface.
|
|
||||||
|
|
||||||
## Info
|
|
||||||
|
|
||||||
## SetOption
|
|
||||||
|
|
||||||
## Query
|
|
||||||
|
|
||||||
## CheckTx
|
|
||||||
|
|
||||||
## InitChain
|
|
||||||
TODO pseudo code
|
|
||||||
|
|
||||||
During chain initialization InitChain runs the initialization logic directly on
|
|
||||||
the CommitMultiStore. The deliver and check states are initialized with the
|
|
||||||
ChainID. Additionally the block gas meter is initialized with an infinite
|
|
||||||
amount of gas to run any genesis transactions.
|
|
||||||
|
|
||||||
Note that we do not `Commit` during `InitChain` however BeginBlock for block 1
|
|
||||||
starts from this deliverState.
|
|
||||||
|
|
||||||
|
|
||||||
## BeginBlock
|
|
||||||
TODO complete description & pseudo code
|
|
||||||
|
|
||||||
The block gas meter is reset within BeginBlock for the deliver state.
|
|
||||||
If no maximum block gas is set within baseapp then an infinite
|
|
||||||
gas meter is set, otherwise a gas meter with the baseapp `maximumBlockGas`
|
|
||||||
is initialized
|
|
||||||
|
|
||||||
## DeliverTx
|
|
||||||
TODO complete description & pseudo code
|
|
||||||
|
|
||||||
Before transaction logic is run, the `BlockGasMeter` is first checked for
|
|
||||||
remaining gas. If no gas remains, then `DeliverTx` immediately returns an error.
|
|
||||||
|
|
||||||
After the transaction has been processed the used gas is deducted from the
|
|
||||||
BlockGasMeter. If the remaining gas exceeds the meter's limits, then DeliverTx
|
|
||||||
returns an error and the transaction is not committed.
|
|
||||||
|
|
||||||
## EndBlock
|
|
||||||
|
|
||||||
## Commit
|
|
||||||
|
|
Loading…
Reference in New Issue