
Overview
The debugging page is dedicated to key operational and troubleshooting details for Reactive Network and beyond. Use it as a quick reference when setting up or troubleshooting your deployments.
Callback Structure
Callbacks must include at least one argument — the first slot must always be left for an RVM address. Omitting it will cause the call to fail. Reactive automatically overwrites the first 160 bits of the payload with the relevant RVM ID (the deployer’s address).
Callback payload example:
bytes memory payload = abi.encodeWithSignature(
"stop(address,address,address,bool,uint256,uint256)",
address(0),
pair,
client,
token0,
coefficient,
threshold
);
emit Callback(chain_id, stop_order, CALLBACK_GAS_LIMIT, payload);
Contract Inactive
If you see Contract Status: Inactive on Reactscan, it means the contract doesn’t have enough funds to cover gas for reactive transactions. Both destination and reactive contracts must hold sufficient balance to stay active.

You can either fund the relevant contract on deployment:
forge create --broadcast --rpc-url $RPC_URL --private-key $PRIVATE_KEY $CONTRACT_PATH --value $VALUE --constructor-args $ARG1 $ARG2 ...
Or transfer funds manually after deployment, calling coverDebt() afterward:
cast send $CONTRACT_ADDR --rpc-url $RPC_URL --private-key $PRIVATE_KEY --value $VALUE
cast send --rpc-url $RPC_URL --private-key $PRIVATE_KEY $CONTRACT_ADDR "coverDebt()"
You can verify a contract’s balance anytime on Reactscan or via Foundry cast command:
cast balance $CONTRACT_ADDR --rpc-url $RPC_URL
To check the outstanding debt, query the relevant proxy contract (0x0000000000000000000000000000000000fffFfF on Reactive):
cast call $PROXY_ADDR "debts(address)" $CONTRACT_ADDR --rpc-url $RPC_URL | cast to-dec
Faucet Issue
If you’ve sent SepETH to the Reactive Faucet at 0x9b9BB25f1A81078C544C829c5EB7822d747Cf434 but haven’t received REACT within a few minutes, the faucet may be experiencing a temporary issue. Report it in our General Telegram channel. You will receive your test REACT once the issue is resolved.
The current exchange rate is 0.1 SepETH = 10 REACT. You can request REACT manually using MetaMask or Foundry cast command:
cast send 0x9b9BB25f1A81078C544C829c5EB7822d747Cf434 --rpc-url $SEPOLIA_RPC --private-key $SEPOLIA_PRIVATE_KEY "request(address)" $CONTRACT_ADDR --value 0.1ether
Nonce & Gas Price Issue
When encountering the Replacement transaction underpriced error, it means a new transaction is trying to replace a pending one with an equal or lower gas price. To fix this, first check your current nonce:
cast nonce --rpc-url $REACTIVE_RPC $CONTRACT_ADDR
Then resend the transaction with the same nonce, but specify higher gas prices using the --priority-gas-price and --gas-price flags:
cast send --rpc-url $REACTIVE_RPC --private-key $PRIVATE_KEY --priority-gas-price $VALUE --gas-price $VALUE --nonce $VALUE $CONTRACT_ADDR …
MetaMask Smart Transactions Issue
When trying to perform a transaction on Reactive Network, a bridge transfer or faucet claim, MetaMask may show a message like Smart Transaction interrupted — this transaction was going to fail or the transaction may never appear on-chain.
MetaMask has a feature called Smart Transactions, which routes transactions through a special “smart address” instead of your regular wallet address. These smart contracts are not deployed on the Reactive Network, so any operations relying on direct wallet transactions (like our bridge or faucet) will fail.
You will need to disable Smart Transactions in MetaMask:
- Open MetaMask.
- Tap the menu icon (☰) in the top-right corner.
- Go to Settings → Advanced.
- Find Smart Transactions.
- Toggle it OFF.
After this, your transactions will go through the regular route and should work correctly.