Synthetic demo datademo

Every block, transaction, address and hash on this chain is generated from a fixed seed. None of them exists on any network, and none of these values can be looked up anywhere else. The execution trace is real — it is a recorded Noir program — but it is not the execution of the transaction it is published under.

Chain overview

demo

Head
102
Finalized
100
Blocks
4
Transactions
19

How far back this chain can be debugged

This chain's registry row states no historical reach, so this page claims none. Whether a particular transaction has a recording is stated on that transaction's own page, which is a fact about that transaction rather than a promise about the chain.

What this debugger can show

Each entry is one small Noir program. Open one to step through it — the source, the function names and the values are the program's own. The transaction it is published under is synthetic, like every other transaction on this chain.

values
Types and values
Every value kind the language has, brought into scope one line at a time. The subject is the Values pane: a reader stepping through should be able to name the type of every row they see.
valuesstepping 34 steps · 2 calls · transaction →
loops
Loops and iteration
Three loop shapes, chosen so the loop rail has iterations worth moving between and values that differ from one iteration to the next. A loop whose variables never change is a rail with nothing on it.
loop-railsteppingvalues 863 steps · 10 calls · transaction →
branches
Branches and conditions
Every `if` here is written so that both arms are reachable and the inputs decide, and each classifier is called more than once with values landing in different arms — so the same source line is marked taken on one visit and not-taken on another.
branch-markingstepping 54 steps · 9 calls · transaction →
calls
Calls and recursion
A call tree worth looking at rather than a flat list: direct recursion several frames deep, two functions calling each other, tree recursion that branches, and a helper reached from two different parents.
call-tracestepping 657 steps · 50 calls · transaction →
generics
Generics and traits
Source written once and executed several times over different types. A generic function has one body and many instantiations; a trait method has one name and many bodies. Both make "which code is running" a real question, and the call trace is where it is answered.
call-tracesteppingvalues 99 steps · 9 calls · transaction →
events
Program output and the event log
The stream of things the execution SAID, as distinct from the values it held. In this language that stream is `print`, `println` and format strings, and it is the only pane whose content a program author writes directly.
event-logloop-railstepping 124 steps · 7 calls · transaction →
constraints
Constraints, and an execution that fails one
What a recording looks like when the program does NOT finish. This is the case a zero-knowledge debugger exists for: a constraint did not hold, and the question is which one, on which values, reached from where. The recording ends at the failing assertion.
failureevent-logcall-tracestepping 71 steps · 5 calls · transaction →
limits
Bounds, limits and overflow
What happens at the EDGES of a type. In a circuit this is not a curiosity: an addition that overflows is a failed constraint, and the difference between wrapping and aborting is the difference between a proof and no proof.
valuessteppingloop-rail 101 steps · 6 calls · transaction →
mutation
Mutation over time
A value that CHANGES. Everything else in this tour shows values computed and bound once; this one shows the same binding holding a different value at a different time, which is the case a time-travelling debugger answers and a printout of the final state does not. The forms the recorder captures come first; the one it does not is last, alone and labelled.
valuessteppingbranch-marking 118 steps · 9 calls · transaction →

Latest blocks

HeightBlock hashTxsFinalityParent
1020x124f…9b8e2Unfinalized0x72e9…18ba
1010x72e9…18ba2Unfinalized0xd43d…508a
1000xd43d…508a6Finalized0x8084…1778
900x5516…93c39Finalized0x895f…4120

All blocks →

Latest transactions

DebugTx hashBlockFromTo / targetMethodFeeStatus
Generate trace0x27a6…9a6c102:00x37c4…79a20x3115…3e2b0x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x5c67…f8df102:10x01c8…d9320xc699…f6cb0x1a2b3c4d42000 / 100000 manaSucceeded
Debug0xb636…6359101:00x01c8…d9320x1b31…624c0x88000 / 200000 manaPartialprivate-part-succeeded-public-part-succeeded
Debug (divergent)0x0baa…4a96101:10x01c8…d9320xae27…671f0x1a2b3c4d42000 / 100000 manaSucceeded
Debug0xa459…9296100:00x37c4…79a20x6f1b…c4a50x1a2b3c4d42000 / 100000 manaSucceeded
Debug0xd663…912f100:10x01c8…d9320x9cef…e89c0x1a2b3c4d100000 / 100000 manaRevertedassert(did_survive_positive == true) — constraint not satisfied at src/main.nr:35
Debug0x1e82…836b100:20xc11f…d1d80x3171…872f0x1a2b3c4d42000 / 100000 manaSucceeded
Generate trace0xfc0f…f376100:30x18cd…06dc0x6f1b…c4a50x7f3e21c41874320 / 2000000 mana · 412800 / 500000 gas · 938114 / 1000000 gas · 6 / 8 slot · 24 / 64 countSucceeded
Not observable0x7975…1064100:40x37c4…79a20x6f1b…c4a50x1a2b3c4d42000 / 100000 manaSucceeded
No recorder0x2ff4…642c100:50x37c4…79a20x6f1b…c4a50x1a2b3c4d42000 / 100000 manaSucceeded
Debug0xc065…607590:00x8dad…805e0xe4d6…ed460x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x6de4…415490:10x9814…0d170xe744…90c90x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x84de…e3dd90:20x36e8…31100x78e9…8f930x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x7bc0…32b790:30x09d5…b0e20x9c09…af170x1a2b3c4d42000 / 100000 manaSucceeded
Debug0xa307…c75690:40x91bb…f8fe0x6162…dca70x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x4535…ec7590:50x1d5f…897e0x7786…f0110x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x4db8…b88d90:60x2661…c58d0xe94e…31c50x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x7848…a79990:70x7bf2…11fb0x20f0…00b70x1a2b3c4d42000 / 100000 manaSucceeded
Debug0x6449…211f90:80x38c5…31660x10eb…99e50x1a2b3c4d42000 / 100000 manaSucceeded

All transactions →

About this data

Synthetic demo data — Every block, transaction, address and hash on this chain is generated from a fixed seed. None of them exists on any network, and none of these values can be looked up anywhere else. The execution trace is real — it is a recorded Noir program — but it is not the execution of the transaction it is published under.