Rising Tide Developers
Concepts

On-chain Lifecycle

The full on-chain lifecycle of a smart product - from contract deployment through mint, transfer, burn, and settlement.

Every smart product goes through a series of on-chain transactions. This page covers each phase and the Chainhook events they trigger.

your app
rt-api
Stacks
POST /api/contracts/generate
creator initiates deploy
Clarity source
deploy tx (signed)
DEPLOY confirmed
contractAddress set, status PUBLISHED
mint tx (signed)
collector mints
MINT confirmed
ProductInstance created, currentInstances++
transfer tx
owner transfers
TRANSFER confirmed
ownerAddress updated
burn tx
owner burns
BURN confirmed
burnedAt set, currentInstances--

1. Deploy (DRAFT -> PUBLISHED)

The creator signs a contract deployment transaction. Once confirmed:

  • A DEPLOY Chainhook fires
  • SmartProduct.contractAddress is set
  • SmartProduct.status moves to PUBLISHED

Initiated via POST /api/contracts/generate (returns Clarity source for signing).

2. Mint (instance created)

A collector signs a mint transaction. Once confirmed:

  • A MINT Chainhook fires
  • A new ProductInstance is created with the next instanceNumber
  • SmartProduct.currentInstances increments

3. Transfer (ownership change)

The current owner signs a transfer transaction. Once confirmed:

  • A TRANSFER Chainhook fires
  • ProductInstance.ownerAddress is updated

4. Burn (destruction)

The owner signs a burn transaction. Once confirmed:

  • A BURN Chainhook fires
  • ProductInstance.burnedAt is set (with burnTxId)
  • SmartProduct.currentInstances is decremented

There is no BURNED product status - a burn is recorded on the instance via burnedAt. Burned instances cannot be restored (a reorg that drops the burn tx is the only path back, handled by the reorg sweep).

5. Lock (PREDICTION only)

A lock transaction signals finalization. Once confirmed:

  • A LOCK Chainhook fires
  • SmartProduct.status moves to LOCKED
  • No new mints are accepted

6. Settle (PREDICTION only)

Results are submitted on-chain. Once confirmed:

  • A SETTLE Chainhook fires
  • SmartProduct.status moves to SETTLED
  • Prize claims become available

7. Archive

A manual API action. No on-chain transaction required. Sets SmartProduct.status to ARCHIVED.

Transaction signing

A user's transactions are sent from their own wallet. A bring-your-own wallet signs in the browser. For a hosted account (Google or X sign-in) the server signs on the user's behalf with its own authorization key on that wallet; the routes that sign for a user check their session first. A few protocol actions, such as posting results for a tournament settled by an outside count, are signed by the protocol's own wallet. The SDK provides helpers that construct the correct Clarity function call.