You can force-produce blocks using the produceBlocks
helper to achieve an arbitrary block height. This is especially useful when you want to do some testing regarding transaction maturity.
using launched = await launchTestNode();
const { provider } = launched;
const block = await provider.getBlock('latest');
if (!block) {
throw new Error('No latest block');
}
const { time: timeLastBlockProduced } = block;
const producedBlockHeight = await provider.produceBlocks(3);
const producedBlock = await provider.getBlock(producedBlockHeight.toNumber());
const oldest = DateTime.fromTai64(timeLastBlockProduced);
const newest = DateTime.fromTai64(producedBlock!.time);
// newest >= oldest
You can also produce blocks with a custom block time using the produceBlocks
helper by specifying the second optional parameter.
using launched = await launchTestNode();
const { provider } = launched;
const latestBlock = await provider.getBlock('latest');
if (!latestBlock) {
throw new Error('No latest block');
}
const latestBlockTimestamp = DateTime.fromTai64(latestBlock.time).toUnixMilliseconds();
const newBlockHeight = await provider.produceBlocks(3, latestBlockTimestamp + 1000);