Skip to main content
glnc

COMMAND

Decode an Ethereum transaction from the terminal

glnc tx takes a transaction hash and prints a human summary: what the transaction did, which protocol routed it, the token movements observed in the receipt, and the gas cost in both gwei and USD. Works on the 8 EVM chains plus Solana. Bitcoin is intentionally out of scope.

Synopsis

glnc tx <hash> [--chain <name>] [--json]
glnc tx 0x02d15281...64fb94
glnc tx 0x... --chain arbitrum --json

If the hash exists on multiple chains, pass --chain to disambiguate. Otherwise glnc probes the supported chains in parallel and prints the first hit.

Example output

glnc tx 0x02d15281c5514a447192cc8d6140216050f8d3bf92efccd420b635274764fb94
✓ Multi-command swap
via Uniswap Universal Router on ⬢ ETHEREUM
Token movements:
− 40,000.000000 wXTM you → 0x5ADe…34F5
+ 77.797032 USDT 0x4C82…2cCA → you
─────────────────────────────────────
Hash 0x02d15281…64fb94
From 0x8cb3…94f6
To 0x4c82…2cca
Gas 542,564 × 0.32 gwei · $0.41

What gets decoded

Calldata decoding covers ERC-20, WETH, Uniswap V2 / V3 / Universal Router, plus the nested governance and treasury call patterns that move real money on mainnet:

Supported function selectors and call patterns.
FlagDescription
ERC-20transfer, approve, transferFrom
WETHdeposit, withdraw
Uniswap V2 RouterswapExact* and swap*ForExact variants for tokens, ETH, and tokens-for-ETH
Uniswap V3 SwapRouterexactInputSingle, exactOutputSingle, exactInput, exactOutput
Uniswap Universal Routerexecute, with V2 / V3 sub-command decoding
GovernorBravo / OZ Governorpropose, queue, execute (with inner call decoding)
OZ Timelockschedule, scheduleBatch, execute, executeBatch
SafeexecTransaction (inner data only; signatures are not treated as calldata)
Gnosis MultiSendPacked byte-walker with depth-3 recursion (Governor → Timelock → MultiSend → leaf)

Receipt logs are decoded for token movements: ERC-20 Transfer and Approval, WETH Deposit and Withdrawal. Movements show from the tx.from perspective. Internal hops between contracts are filtered out so the output reflects what the sender actually saw on their balance sheet.

Flags

Flags accepted by glnc tx.
FlagDescription
--chain <name>Query a single chain instead of probing all chains in parallel.
--jsonEmit the glnc.tx/v1 envelope on stdout.
--no-colorDisable ANSI colors. NO_COLOR env and --json also disable colors.
--verbose / -vShow full addresses instead of 0x….1234 short form.

JSON envelope

Under --json, tx emits a single glnc.tx/v1 document. The data block carries the decoded summary, an array of token movements, gas details, and the protocol identification; same shape across all EVM chains. See the JSON envelope reference.

glnc tx 0x02d15281... --json | jq '.data.movements'
[
{ "symbol": "wXTM", "amount": "-40000", "valueUsd": null },
{ "symbol": "USDT", "amount": "77.797032","valueUsd": 77.78 }
]