Breaking Change Detector Between Versions
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
This tool detects breaking changes between two versions of a smart contract by comparing their ABIs, storage layouts, function signatures, and behavioral characteristics. It analyzes the old and new contract versions deployed on-chain, extracting verified source code and ABI data from block explorers, and identifies changes that could break compatibility with existing integrations. The detector flags function signature modifications (removed functions, parameter type changes, return value changes), storage layout alterations (variable reordering, new variables inserted before existing ones), and behavioral changes that violate expected contract assumptions (semantic shifts in business logic). Results are categorized by severity and presented with detailed explanations of how each change could affect dependent contracts, off-chain systems, and users. This is essential for developers managing contract upgrades, auditors assessing migration safety, and teams ensuring backward compatibility.
HOW TO USE
Connect your wallet (read-only, no transaction required) and select the target network. Enter the contract name and the addresses of both the old and new versions. Set the lookback blocks for usage pattern scanning. Click "detect breaking changes" and the tool will fetch source code and ABI data for both versions, compare function signatures, analyze storage layout differences, and assess behavioral changes. Results display a summary with change counts by category, detailed cards explaining each breaking change with severity indicators, and a table showing all detected changes. Use the report to identify upgrade risks, plan migration strategies, and communicate breaking changes to users and integrators.
TECHNICAL MECHANISM
The detector uses ethers.js v5.7.2 and block explorer APIs to perform a comprehensive multi-stage comparison analysis. First, it fetches verified source code and ABI data for both contract versions using eth_getCode to confirm deployment. The engine then parses both ABIs to extract function signatures, parameter types, return types, and visibility modifiers. It performs a line-by-line comparison of function signatures, flagging additions, removals, and modifications (type changes, order changes, return value changes). For storage layout analysis, the engine parses the source code to extract variable declarations and their order, comparing the storage layout between versions. Any change that shifts storage slot positions—such as inserting a new variable before existing ones—is flagged as a high-severity storage breaking change. Behavioral analysis uses pattern matching on source code diffs and change descriptions to identify semantic changes that could break assumptions (e.g., added fees, modified access controls, changed return values, altered state transition logic). Historical transaction logs are scanned to identify usage patterns of the old contract, providing context about which functions and integrations will be most affected by breaking changes. Each detected change is assigned a severity based on its potential impact: signature changes (high), storage layout changes (high), behavioral changes (medium), and documentation/comment changes (low).
WHAT IT CANNOT SEE
This tool cannot analyze contracts that are not verified on a block explorer for both versions, as ABI and source code are required for accurate comparison. It is limited by the RPC provider's rate limits and block range availability for historical log queries. It cannot detect breaking changes that involve changes to off-chain systems, external dependencies not reflected in the contract ABI, or changes to the contract's interaction with other contracts (e.g., calls to new external addresses) that are not captured in the ABI. The tool relies on the accuracy and completeness of source code verification and ABI data for both versions; incomplete verification may lead to missed differences. It cannot analyze contracts where storage layout is not preserved across versions, especially when using proxy patterns with complex inheritance. The detection is limited to the specific contract versions that are actually deployed on-chain—differences between source code versions that have not been deployed cannot be analyzed. It cannot detect semantic breaking changes that are not captured in the ABI or storage layout, such as subtle changes to business logic that break assumptions without changing function signatures or state variables. For example, a change in the formula for calculating interest rates or token prices could be a breaking change that is invisible to ABI comparison alone.
PLEASE NOTE
This is a read‑only analytics tool—it never submits transactions or signs anything. It is designed for EVM‑compatible chains and works best with verified contracts. The detection results are for informational and audit purposes only and should not be considered a complete guarantee of backward compatibility. Always combine the generated report with comprehensive integration testing, formal verification, and manual code review before deploying a new version. Some changes flagged as "breaking" may be acceptable if properly communicated and managed with appropriate migration strategies.