TapeFoundry Docs
Docs menu

Architecture

Four contracts, each owning one piece of state. Nothing is custodial, and no contract can rewrite another's data.

The contract graph

ContractOwnsWho can write
Parts 0x9039e4cd6ceba37522382eb1ad8076ba38c975dcGate balances per addressAnyone who pays mintPrice
Processor 0x5a4eaff589c9e410260a61d658a893876710ba83Circuits: owner, netlist, gate countAnyone who holds the gates
Registry 0xb69215ce68792eca5672b49196868369555ea181Drawing hashes and edition numbersThe processor, through claim
Wrapper 0xB4A7B988B77Bd7b29E56F42229464a8dD72361bFTFD tokens and the original↔wrapped mappingAnyone who owns a raw circuit

One purchase, four state transitions

1  parts.mint(0, gates)              balance[you] += gates
2  processor.tapeout(netlist, …)     balance[you] -= gates
                                     circuits[id] = {owner, netlist, gates}
3  registry.claim(epoch, d, cpu, id) editions[cpu][id] = {epoch, d, n}
4  wrapper.wrap(epoch, d, cpu, id)   original[tfd] = {…}
                                     ownerOf(tfd) = you

Step 4 is optional. Steps 1–3 are the card; step 4 is a display layer for external marketplaces.

Why this decomposition

BoundaryWhat it buys
Parts separate from processorA failed tapeout leaves your gates intact instead of refunding them through a contract we wrote.
Processor separate from registryNumbering logic can change per series without touching the circuit data.
Registry separate from wrapperThe wrapper verifies against the registry, so a copied netlist cannot be wrapped as ours.
No routerNo moment where a contract we deployed holds user funds.

What is immutable, and where

Trust boundaries

The processor, parts and registry are deployed by the TapeOut protocol; we cannot upgrade them. The wrapper is ours. That asymmetry is deliberate: the parts that hold assets are not under our control, and the part that formats metadata is.

Reading the system without our frontend

Every state transition above is a standard contract call. Any wallet, script or other frontend can perform the same sequence; the site is a convenience, not a gatekeeper.