package types // Applications type Application interface { // Return application info Info() (info string) // Set application option (e.g. mode=mempool, mode=consensus) SetOption(key string, value string) (log string) // Append a tx AppendTx(tx []byte) Result // Validate a tx for the mempool CheckTx(tx []byte) Result // Query for state Query(query []byte) Result // Return the application Merkle root hash Commit() Result } // Some applications can choose to implement BlockchainAware type BlockchainAware interface { // Initialize blockchain // validators: genesis validators from TendermintCore InitChain(validators []*Validator) // Signals the beginning of a block BeginBlock(height uint64) // Signals the end of a block // diffs: changed validators from app to TendermintCore EndBlock(height uint64) (diffs []*Validator) }