Setup
Paima precompiles allow games to define specific addresses that are only part of the rollup, instead of belonging to any of the underlying chains (or users). You can think of these as namespaces for rollup-emitted events.
Notably, makes it much easier to query rollup information in the following two cases:
- ticks that trigger through the passage of time
- event logging for external
When using the templates, these can be defined in a precompiles/
directory
Definitions
All the precompiles for your application should be put into precompiles/src/index.ts
import { generatePrecompiles } from '@paima/sdk/precompiles';
export enum PrecompileNames {
GameTick = 'game-tick',
}
export const precompiles = generatePrecompiles(PrecompileNames);
Then, when registering timers or events under to trigger under this precompile, simply reference the precompile by name
createScheduledData(
`tick|${input.n + 1}`,
{ blockHeight: someBlockHeight },
{ precompile: precompiles[PrecompileNames.GameTick] }
)
When you compile your state machine, Paima will create a precompiles.cjs
file that contains all your precompile definitions necessary to create your rollup.