The deepest view into every transaction.
Step and rewind every instruction. See the full call trace at a glance — across many chains, VMs and languages.
aztec
Real Aztec mainnet data
aztec-testnet
Real Aztec testnet data
aztec-testnet-frames
Aztec testnet — live Noir call frames
demo
Synthetic demo data
Loopiterate_asteroidsline 4Iteration 1 of 8Iteration 2 of 8Iteration 3 of 8Iteration 4 of 8Iteration 5 of 8Iteration 6 of 8Iteration 7 of 8Iteration 8 of 812345678
Lines 20–44, centred on where the session is stopped.
20
} 21
22·
fn calculate_damage(initial_shield: Field, remaining_shield: Field, mass: Field) -> Field {initial_shield=10000remaining_shield=10000mass=100initial_shield=10000remaining_shield=10000mass=2000initial_shield=10000remaining_shield=9000mass=200 23
// Shields get exponentially less efficient 24
// At 100% shields 1 unit of mass will drain 1 point of energy 25
// At 50% shields 1 unit of mass will drain 50 points of energy 26·
let shield_pct = calculate_remaining_shield_pct(initial_shield, remaining_shield);shield_pct=100initial_shield=10000remaining_shield=10000shield_pct=100initial_shield=10000remaining_shield=10000shield_pct=90initial_shield=10000remaining_shield=9000 27·
let mut damage = 0;damage=0damage=0damage=0 28·
if(shield_pct == 100){shield_pct=100shield_pct=100shield_pct=90 29·⊘⊙
damage = mass * 1;damage:0→100mass=100damage:0→2000mass=2000 30
} 31·
else{▶32·⊘⊙
damage = mass * (100 - shield_pct);damage:0→2000mass=200shield_pct=90 33
} 34·
if(damage as u32 > remaining_shield as u32){damage=100remaining_shield=10000damage=2000remaining_shield=10000→100→2000 35
damage = remaining_shield; 36
} 37·
damage as Field 38
} 39
40·
fn calculate_shield_regeneration(initial_shield:Field, remaining_shield:Field, shield_regen_percentage: Field) -> Field{initial_shield=10000remaining_shield=9900shield_regen_percentage=10initial_shield=10000remaining_shield=8000shield_regen_percentage=10 41
// shields regain a percentage of the maxium capacity after each hit 42·
let mut regen = (initial_shield * shield_regen_percentage) / 100;regen=1000initial_shield=10000shield_regen_percentage=10regen=1000initial_shield=10000shield_regen_percentage=10 43·
if((remaining_shield + regen) as u32 > initial_shield as u32){remaining_shield=9900regen=1000initial_shield=10000remaining_shield=8000regen=1000initial_shield=10000→1000 44·⊘⊙
regen = initial_shield - remaining_shield;regen=1000initial_shield=10000remaining_shield=9900→100→call6iterate_asteroidsinitial_shield=10000, regen=10%
·output22----- iteration 0 -----stdout
◆write31shields[0]10000 → 9900
◇event58ShieldImpactiteration=0, damage=100
·output74Shield status 100% 10000stdout
◆write96shields[1]10000 → 8000
→call112calculate_damagemass=200
◇event121ShieldImpactiteration=2, damage=2000
FunctionCallsSelf ACIR opcodes
iterate_asteroids1986
main1107
calculate_damage2104
status_report196
calculate_remaining_shield_pct222
By function — self cost, callees excluded.Call order
FrameACIR opcodes
main:121,315
iterate_asteroids:11,208
calculate_damage:2263
calculate_remaining_shield_pct:4811
status_report:5396
calculate_damage:2263
calculate_remaining_shield_pct:4811
By call order.Self cost
initial_shield10000Field
remaining_shield9000Field
shield_regen_percentage10Field
masses[100, 2000, 200, 100, 100, 50, 50, 14][Field; 8]
masses[2]200Field
mass200Field
shield_pct90Field
damage2000Field
regeneration1000Field
i2u32
Synthetic demo dataStopped mid-execution at step 128 of 1,315.Open the full session