1.3 KiB
1.3 KiB
Messages
TODO make this file conform to typical messages spec
Handlers
The auth module presently has no transaction handlers of its own, but does expose
the special AnteHandler
, used for performing basic validity checks on a transaction,
such that it could be thrown out of the mempool. Note that the ante handler is called on
CheckTx
, but also on DeliverTx
, as Tendermint proposers presently have the ability
to include in their proposed block transactions which fail CheckTx
.
Ante Handler
anteHandler(ak AccountKeeper, fck FeeCollectionKeeper, tx sdk.Tx)
if !tx.(StdTx)
fail with "not a StdTx"
if isCheckTx and tx.Fee < config.SubjectiveMinimumFee
fail with "insufficient fee for mempool inclusion"
if tx.ValidateBasic() != nil
fail with "tx failed ValidateBasic"
if tx.Fee > 0
account = GetAccount(tx.GetSigners()[0])
coins := acount.GetCoins()
if coins < tx.Fee
fail with "insufficient fee to pay for transaction"
account.SetCoins(coins - tx.Fee)
fck.AddCollectedFees(tx.Fee)
for index, signature in tx.GetSignatures()
account = GetAccount(tx.GetSigners()[index])
bytesToSign := StdSignBytes(chainID, acc.GetAccountNumber(),
acc.GetSequence(), tx.Fee, tx.Msgs, tx.Memo)
if !signature.Verify(bytesToSign)
fail with "invalid signature"
return