Overview
ETHMonitor is a comprehensive framework for monitoring multiple Ethereum smart contracts. It provides unified encapsulation for smart contract listening and offers handler support for customized business operations.
Key Features
- Customizable business handlers: Implement your own logic for processing transactions
- Multi-contract monitoring: Simultaneously track multiple smart contracts
- Complete transaction analysis: Parses standard attributes like transaction status, gas consumption, and contract parameters
- Flexible integration: Easy to implement with existing systems and middleware
Core Architecture
The framework follows a streamlined process for efficient contract monitoring:
- Address Filtering: Determines whether transaction
toaddresses require monitoring - Business Processing: Handles qualified transactions with parsed attributes (status, gas, parameters)
- Height Management: Maintains block height persistence for service continuity
- Block Completion: Triggers post-processing after each block analysis
Implementation Guide
// Implementing TxHandler interface
var _ ethmonitor.TxHandler = &Mock{}
type Mock struct {
}
// Persist block height
func (m *Mock) SaveHeight(ctx context.Context, height *ethmonitor.BlockHeight) error {
// Save scanned block height to preferred middleware
return nil
}
// Initialize monitoring height on startup
func (m *Mock) LoadLastHeight(ctx context.Context) (*ethmonitor.BlockHeight, error) {
// Retrieve block height from preferred middleware
return big.NewInt(1), nil
}
// Business logic implementation
func (m *Mock) Do(ctx context.Context, info *ethmonitor.TxInfo) {
// Your custom transaction handling logic
}
// Contract address verification
func (m *Mock) ContainContact(ctx context.Context, address ethmonitor.ContractAddress) bool {
return true
}
func main() {
opt := ðmonitor.Options{
RpcUrl: "http://localhost:8545",
AbiStr: `[{"type":"function","name":"send","inputs":[{"name":"amount","type":"uint256"}]}]`,
Handler: &Mock{},
}
monitor, err := ethmonitor.New(opt)
if err != nil {
panic(err)
}
monitor.Run()
}Smart Contract Operations
// Action represents smart contract methods
type Action struct {
Method string // Contract method name
Inputs map[string]interface{} // Contract parameters and values
}
// Example value parsing from contract parameters
var act = &Action{
Method: "send",
Inputs: map[string]interface{}{"amount": big.NewInt(250)},
}
amount, ok := act.Inputs["amount"].(*big.Int)
if ok {
fmt.Println(amount.String())
}Security Considerations
When working with private Ethereum chains:
- Avoid exposing private chains to public networks
- Implement IP restrictions for stable development environments
- Regularly update security measures
๐ Learn more about blockchain security best practices
Frequently Asked Questions
What makes ETHMonitor different from other monitoring solutions?
ETHMonitor provides a specialized framework specifically designed for Ethereum smart contract monitoring with customizable handlers and multi-contract support.
How does the framework handle network disruptions?
ETHMonitor maintains persistent block height tracking, allowing it to resume monitoring from the last processed block after any interruption.
Can I use this with existing database systems?
Yes, the framework is middleware-agnostic, allowing integration with your preferred database systems through the handler implementation.
What Ethereum networks are supported?
ETHMonitor works with any Ethereum-compatible network including mainnet, testnets, and private chains.
How resource-intensive is the monitoring process?
The framework is optimized for efficiency, with processing overhead primarily dependent on your custom handler implementations.
๐ Discover advanced Ethereum monitoring techniques
Maintenance and Support
For assistance with implementation or to contribute to the project:
- Join our developer community
- Report issues through GitHub
- Participate in framework improvement discussions
Note: The framework is actively maintained with regular updates and security patches.
The content has been:
1. Restructured with clear headings and logical flow
2. Optimized for SEO with natural keyword integration
3. Expanded with additional context and explanations
4. Formatted according to Markdown best practices
5. Enhanced with anchor texts as specified
6. Includes a comprehensive FAQ section
7. Maintained professional tone while being reader-friendly