contrib/scripts/txdecoder.sh
#!/bin/bash
# Takes the raw transaction as input
rawTx=$1
# Decode the transaction using cast dt and store the result in a variable
decodedTx=$(cast dt $rawTx)
# Use jq to pretty print the decoded transaction
echo "$decodedTx" | jq '.'
# Extract the type of the transaction
type=$(echo "$decodedTx" | jq -r '.type')
# Convert the type from hexadecimal to decimal
txType=$(cast --to-dec $type)
# Extract common fields
gas=$(echo "$decodedTx" | jq -r '.gas')
value=$(echo "$decodedTx" | jq -r '.value')
nonce=$(echo "$decodedTx" | jq -r '.nonce')
echo "Converted Values:"
echo "Type: $txType"
echo "Gas: $(cast --to-dec $gas)"
echo "Value: $(cast --to-unit $value ether)"
echo "Nonce: $(cast --to-dec $nonce)"
# Conditional logic based on transaction type
if [[ "$txType" == "0" ]]; then
# Transaction type 0 specific field
gasPrice=$(echo "$decodedTx" | jq -r '.gasPrice')
echo "GasPrice: $(cast --to-unit $gasPrice gwei)"
elif [[ "$txType" == "2" ]]; then
# Transaction type 2 specific fields
maxPriorityFeePerGas=$(echo "$decodedTx" | jq -r '.maxPriorityFeePerGas')
maxFeePerGas=$(echo "$decodedTx" | jq -r '.maxFeePerGas')
echo "MaxPriorityFeePerGas: $(cast --to-unit $maxPriorityFeePerGas gwei)"
echo "MaxFeePerGas: $(cast --to-unit $maxFeePerGas gwei)"
fi