func validateInput(acc *acm.Account, signBytes []byte, in *types.TxInput) (err error) { // Check TxInput basic if err := in.ValidateBasic(); err != nil { return err } // Check signatures if !acc.PubKey.VerifyBytes(signBytes, in.Signature) { return types.ErrTxInvalidSignature } // Check sequences if acc.Sequence+1 != in.Sequence { return types.ErrTxInvalidSequence{ Got: in.Sequence, Expected: acc.Sequence + 1, } } // Check amount if acc.Balance < in.Amount { return types.ErrTxInsufficientFunds } return nil }