@exromany/lido-csm-sdk
Version:
[](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [](h
34 lines • 1.5 kB
JavaScript
/**
* Safety buffer in blocks for slot-to-block estimation (~33 hours at 12s/block).
* Accounts for missed slots and clock drift when querying events by estimated block range.
*/
export const ESTIMATED_BLOCK_GAP = 10000n;
export const slotToTimestamp = (slot, { secondsPerSlot, genesisTime, }) => {
return Number(BigInt(slot) * secondsPerSlot + genesisTime);
};
export const timestampToSlot = (timestamp, { genesisTime, secondsPerSlot, }) => {
return (BigInt(timestamp) - genesisTime) / secondsPerSlot;
};
export const slotToEpoch = (slot, { slotsPerEpoch }) => {
return BigInt(slot) / slotsPerEpoch;
};
export const epochToSlot = (epoch, { slotsPerEpoch }) => {
return BigInt(epoch) * slotsPerEpoch;
};
export const epochToTimestamp = (epoch, config) => {
const slot = epochToSlot(epoch, config);
return slotToTimestamp(slot, config);
};
export const getSlotsPerFrame = ({ epochsPerFrame, slotsPerEpoch, }) => {
return epochsPerFrame * slotsPerEpoch;
};
export const getFrameDuration = ({ epochsPerFrame, slotsPerEpoch, secondsPerSlot, }) => {
return Number(epochsPerFrame * slotsPerEpoch * secondsPerSlot);
};
export const slotToApproximateBlockNumber = (slot, config, currentBlock) => {
const targetTimestamp = slotToTimestamp(slot, config);
const timeDiff = currentBlock.timestamp - BigInt(targetTimestamp);
const blockOffset = timeDiff / config.secondsPerSlot;
return currentBlock.number - blockOffset;
};
//# sourceMappingURL=utils.js.map