the grid is a virtual space in 2 dimensions (x, y).
there's no on-chain representation of the grid
coordinates on each dimension are discrete (integer values)
the coordinates (0, 0) are considered the center of the grid
Ship
a ship is identified by a Cardano native asset token of a specific policy id. We call this class of token ShipToken.
the UTxO that holds the ShipToken defines the state of the ship. We call this class of UTxOs ShipState.
the datum of the ShipState UTxO contains information about current coordinates and available fuel.
all ShipState UTxOs belong to a script address that constraints changes that can be applies to the state. We call this script SpaceTimeScript.
Pilot
the pilot is a Cardano native token from a particular policy id that is locked in an address managed by the participant. We call this class of token PilotToken.
the goal of this token is to ensure that changes to the ShipState are triggered by the rightful owner of the ship.
the pilot token needs to be present in any of the inputs of a transaction that progresses the state of the ship.
Fuel Pellet
a fuel pellet is freely available source of fuel tokens that are located at a fixed position in the grid.
a fuel pellet is represented by a UTxO that contains any amount of FuelToken and is locked at a specific script address. We call this class of UTxO PelletState
the datum of a PelletState defines the position of the pellet within the grid.
the amount of fuel tokens in the PelletState represents the available fuel.
Asteria
Asteria is an asteroid located at the center of the grid that represents the end goal of the challenge.
Asteria is represented by an UTxO that called AsteriaUtxo.
This UTxO will hold the aggregated rewards of the challenge.
This UTxO holds a datum with a counter that controls a sequence used to enforce ship uniqueness.