Primary finding
publish-signal.sh always verifies TX against Base RPC, even when --chain is ethereum/polygon/solana
- bankr-signals/scripts/publish-signal.sh:75-95
The script accepts --chain base|ethereum|polygon|solana (per SKILL.md and signal-format.md). However, the TX hash verification step hard-codes RPC_URL to BASE_RPC_URL regardless of the --chain argument. A user submitting an Ethereum or Polygon TX hash will get verification against Base, which will almost always return null (TX not found). The code then prints a 'Warning: could not verify' but still publishes. For Solana the call would be meaningless as eth_getTransactionReceipt isn't a Solana RPC method. Worse, a failed Ethereum trade will silently be accepted because the receipt lookup on Base returns null instead of revealing status 0x0. This means failed trades from non-Base chains can be published as signals — exactly the failure the README claims is impossible ('You cannot publish a signal for a trade that didn't happen').
Recommendation
Switch on $CHAIN to choose the correct RPC URL (mirroring verify-trade.sh), or simply delegate verification to verify-trade.sh which already handles the chain selection. Treat 'cannot verify' as fatal rather than a warning, since the README/skill explicitly guarantees onchain verification.