Skip to content

Tools

Lifecycle visualizer

Teaching modelYou will be able to name every state a Tandem object can be in and every way it can get there.

Four statuses. Six transitions. Nothing else.

Object lifecycle

select a transition
no objectACTIVEsequence nCLOSEDREFUNDEDEXITEDNONCANONICALCREATEMARKROTATECLOSEREFUNDany other spend

Six transitions, and nothing else

A Tandem object has exactly four statuses and exactly six ways to move between them. There is no operation that removes a chapter, renumbers a sequence, merges two objects, splits one, or hands an object to a third party. Select a transition to see what it requires and what it changes.

Transitions from section 10 of the normative specification. Effects matchapplyStateTransition in src/protocol/state-engine.ts.

The two numbers that tell you what happened

Section titled “The two numbers that tell you what happened”

You can reconstruct an object’s ending from its final state alone, without reading a single transaction.

If the object is And the sequence Then it ended by
CLOSED one higher than the last chapter or rotation both parties agreeing
REFUNDED unchanged from its last operation either party broadcasting a refund both had signed, once the carrier was 52,560 blocks old
EXITED_NONCANONICAL unchanged from its last operation a spend that was not a valid operation
ACTIVE still advancing it has not

That is why the sequence rules are worth memorising. A close is a state transition and advances the sequence. Recovery and a non-canonical exit are terminations that record the sequence they found.

Being explicit about the absent operations is as useful as describing the present ones. There is no way to:

  • remove or renumber a chapter
  • merge two objects, split one, or fork one
  • transfer an object to a third party who was never one of the two keys
  • revive a terminal object, except by a reorganization that removes its terminal spend
  • add a third participant
  • change the carrier value, the founding window, or the recovery delay for one object

None of these are unimplemented features. The specification states that Tandem never combines, splits, or forks objects, and that no rule grants an administrator, coordinator, content host, indexer, wallet, or issuer authority to change keys, sequence, commitments, founding status, object status, roots, or supply.

0active
chapters
0
founding
yes
carrier
20,000 sats
key0
036b86a…48d410
key1
03c5a60…eba93d
address
bcrt1qztq6…shh5x7f

The record so far1 entry

CREATEseq 0

Both parties signed. The object exists at sequence 0 with no chapters yet.

This is a teaching model. It runs entirely in this page, builds no transaction, and touches no Bitcoin network. The rules it follows are the ones insrc/protocol/state-engine.ts.

For the same transitions stated in the specification’s own terms, including the exact counter definitions, read object lifecycle.