# Introduction
Events are an import functionality to help developers confirm, check, and search for the specific status of the smart contract.
# Event Decoding
This section explains how to decode events and obtain the result from the transactionHistory database.
Solidity Event Example:
## Event Structure
Solidity uses LOG instruction to record event information in a transaction. The structure in protobuf is as follows:
Decoding Events Example
The smart contract ABI for the solidity smart contract above is:
The corresponding event ABI is:
Use `gettransactioninfobyid
` to get the transaction result:
Check along with ABI:
topics[0] is 69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de2. It is the result of keccak("event(address,uint256)").
topics[1] is 000000000000000000000000E552F6487585C2B58BC2C9BB4492BC1F17132CD0. It is the first indexed param (toAddress) with type address.
data is 0000000000000000000000000000000000000000000000000000000000000001. It is the param without being indexed (amount) with type uint256.
# Event Subscription Support
The Event Subscription supports event plug-ins, Kafka, and MongoDB plug-ins. Developers can customize their own plug-ins according to their own needs. It also supports subscription of chain data, such as block, transaction, contract log, contract event and so on. For transaction events, developers can retrieve information such as internal transactions, contract information, and so on. For contract events, developers could configure the contract addresses list or contract topic list to receive the specified events, and event subscription has low latency. The deployed Full Node receives event information immediately after the contract execution.
## Event Subscription Description
Event types that support subscriptions:
transactionTrigger: Transaction Event
blockTrigger: Block Event, triggered when the block is submitted.
contractLogTrigger: Smart Contract Log
contractEventTrigger: Smart Contract Event
The transaction information is represented by TransactionLogTrigger and includes the following parameters:
transactionId: transaction hash
blockHash
blockNunber
energyUsage
energyFee
originEnergyUsage
energyUsageTotal
The smart contract log object is represented by ContractLogTrigger and includes the following parameters:
transactionID
contractAddress
callerAddress
blockNumber
blockTimestamp
contractTopics: Solidity
data:Solidity
removed: True if the log has been deleted, false if the log is deleted
## Event Plugin
<a href="https://github.com/tronprotocol/Documentation/blob/master/English_Documentation/TRON_Event_Subscribe/eventplugin_deploy.md" target="_blank">Kafka Plugin</a>
<a href="https://github.com/tronprotocol/Documentation/blob/master/English_Documentation/TRON_Event_Subscribe/mongodb_deploy.md" target="_blank">mongodb Plugin</a>
## Tron-EventQuery
<a href="https://github.com/tronprotocol/Documentation/blob/master/English_Documentation/TRON_Event_Subscribe/tron-eventquery_deploy.md" target="_blank">Deploy</a>
<a href="https://github.com/tronprotocol/Documentation/blob/master/English_Documentation/TRON_Event_Subscribe/tron-eventquery.md" target="_blank">Tron Event Query Service</a>