cardano-protocol-params
When to use
- •Fetching fresh protocol parameters
- •Understanding fee calculation inputs
- •Debugging min-UTxO or execution budget issues
- •Comparing params across networks
Operating rules (must follow)
- •Always fetch fresh params for the target network
- •Never assume mainnet params apply to testnets
- •Keep pparams.json with tx artifacts for reproducibility
Key parameters explained
Fee calculation
code
minFeeA: 44 # lovelace per byte minFeeB: 155381 # base fee in lovelace
Formula: fee = minFeeA * txSize + minFeeB
Min UTxO
code
coinsPerUTxOByte: 4310 # lovelace per byte of UTxO
Minimum ADA required = size of UTxO (including datum) × coinsPerUTxOByte
Execution units (Plutus)
code
maxTxExecutionUnits: steps: 10000000000 # CPU budget memory: 10000000 # Memory budget executionUnitPrices: priceSteps: 0.0000721 # lovelace per step priceMemory: 0.0577 # lovelace per memory unit
Reference scripts
code
minFeeRefScriptCostPerByte: 15 # Cost for using reference scripts
Workflow
Fetch parameters
bash
# Preprod cardano-cli conway query protocol-parameters \ --testnet-magic 1 \ --out-file pparams-preprod.json # Mainnet cardano-cli conway query protocol-parameters \ --mainnet \ --out-file pparams-mainnet.json
Extract key values
bash
# Using jq
cat pparams.json | jq '{
minFeeA: .txFeePerByte,
minFeeB: .txFeeFixed,
coinsPerUTxOByte: .utxoCostPerByte,
maxTxSize: .maxTxSize,
maxValSize: .maxValueSize
}'
Calculate min-UTxO for output
bash
# Approximate: base ~160 bytes + datum size # For simple ADA-only output: ~1 ADA minimum # For output with tokens: varies by token count/names
Examples
Example: Debug "UTxO too small" error
Problem: Transaction fails with min-UTxO error
Response:
bash
# 1. Fetch current params cardano-cli conway query protocol-parameters \ --testnet-magic 1 \ --out-file pparams.json # 2. Check coinsPerUTxOByte cat pparams.json | jq .utxoCostPerByte # Result: 4310 # 3. Estimate min-UTxO for your output # Simple ADA output: ~160 bytes × 4310 = ~690,000 lovelace # With inline datum: add datum size × 4310 # With tokens: add ~30 bytes per token # 4. Solution: increase output amount above minimum
Example: Estimate script execution cost
Problem: Need to budget for Plutus script
Response:
bash
# 1. Get execution prices
cat pparams.json | jq '{
priceSteps: .executionUnitPrices.priceSteps,
priceMemory: .executionUnitPrices.priceMemory
}'
# 2. If script uses 1M steps and 100K memory:
# Cost = (1000000 × 0.0000721) + (100000 × 0.0577)
# Cost = 72.1 + 5770 = 5842.1 lovelace (~0.006 ADA)
# 3. Add to base tx fee for total
Network magic reference
code
Mainnet: (no flag, use --mainnet) Preprod: --testnet-magic 1 Preview: --testnet-magic 2
Safety / key handling
- •Protocol params are public, no secrets involved
- •Always verify you're querying the intended network
- •Store pparams with tx artifacts for debugging
References
- •
shared/PRINCIPLES.md - •Cardano Protocol Parameters