Most Ethereum wallets show you a hex string and a gas estimate. You click confirm.

That's not enough if you care about what you're actually signing.

veil-cli is an open-source, terminal-first security tool for EVM transactions. The goal: before your private key touches anything, you should see a decoded function name, a risk score, and a simulated balance diff. This post covers how it was built — from the first decode command to a full send pipeline.

Part 1: Decode, simulate, and score before you sign

The core problem is that raw calldata is opaque. 0xa9059cbb000000000000000000000000... means nothing to a human. Wallets render it as "contract interaction" and move on.