This app runs inside the BotSurf browser. Don't have it yet? Get the app or extension now!

Canary Deployment Tester for New Contract Versions

Developer Tools · All
0 installs · Verified BotGentz app
Launch App
Opens in BotSurf — nothing to install.
CategoryDeveloper Tools
PlatformAll
Pricing Free
Installs0
Download BotSurf to use — free
No account needed for free apps. Once BotSurf is open, find this app in Apps from the + menu.

About this app

WHAT IT DOES

Canary Deployment Tester for New Contract Versions lets you safely validate a new contract implementation before promoting it to production. You provide a baseline contract (the current live version) and a canary contract (the new version you want to test), along with a list of view functions and their expected return values. The tool calls each function on both contracts, compares the results against the expected values, and reports whether the canary behaves identically to the baseline. If all tests pass, the tool can optionally promote the canary by upgrading the proxy to point to the new implementation. This gives you confidence that your new contract version maintains the same external behavior as the old one, without risking user funds or contract state. It's ideal for upgradeable contracts where you need to verify that the new implementation doesn't introduce regressions before going live.

HOW TO USE

Connect your wallet to access the EVM network. Enter the baseline contract address (current live version) and the canary contract address (new version you want to test). Optionally, enter a proxy contract address if you want to promote the canary after testing. Define test functions in the format "functionName(paramTypes) → expectedValue", one per line—for example, "totalSupply() → 1000000" or "balanceOf(0x123...) → 500". Specify a deployer address or leave blank to use your connected wallet. Click "Prepare Canary Deployment Test." The tool verifies both contracts exist, then calls each test function on both contracts, comparing the results to the expected values. Results are displayed in a table showing the function, expected value, baseline result, canary result, and a pass/fail status. If all tests pass and a proxy is configured, a "Promote Canary to Live" button appears. Click it to send the upgradeTo transaction to the proxy.

THE REAL MECHANISM

The tool uses ethers.js to interact with the blockchain. For each test function, it builds an ethers.Interface from the function signature and encodes the call using encodeFunctionData. It sends an eth_call to both the baseline and canary addresses, then decodes the results using decodeFunctionResult. The tool compares each result to the expected value using strict string comparison after converting BigNumber values to strings. This approach ensures that the canary contract returns exactly the same values as the baseline for the functions you care about. If a proxy is provided, the tool constructs an upgradeTo transaction using the proxy's ABI (ERC1967 standard), estimates gas with a 20% buffer, and sends it using the wallet's signer. The tool waits for the transaction receipt and reports success or failure. All data is processed client-side with no external dependencies beyond the RPC provider.

WHAT IT CANNOT SEE

This tool cannot automatically detect if the canary contract behaves correctly beyond the user-defined checks you provide. It cannot simulate real user traffic or load—it only tests view functions in isolation. It cannot test non-view functions that require state changes or complex transaction flows. It cannot rollback automatically if the canary fails—rollback requires a separate manual upgrade transaction. It cannot validate storage layout compatibility between the old and new implementations—that is your responsibility. It cannot detect gas cost regressions without manual review—it does not measure or compare gas usage. It cannot verify that the canary contract was deployed with the correct constructor arguments. It cannot test events or error types emitted by the contracts. The tool assumes that the baseline contract is correct and that matching the baseline is the desired behavior.

PLEASE NOTE

Canary Deployment Tester works exclusively with Ethereum Virtual Machine (EVM) compatible chains including Ethereum, Goerli, Sepolia, Polygon, BSC, Arbitrum, Optimism, Avalanche, and others. It requires the baseline and canary contracts to be deployed and accessible via eth_call. If you use the promotion feature, it requires a proxy contract that follows the ERC1967 standard and a connected wallet with sufficient gas funds. All processing occurs client-side in your browser; no data is sent to any external server. The tool is free to use and does not require authentication. Use with caution—promoting a contract is an irreversible action if the new implementation is faulty.

Similar Apps

Log in to BotGentz

Suggest an App

Tell us what you'd find useful — if we build it, we'll email you the moment it's ready.