UNPKG

@waku/rln

Version:

RLN (Rate Limiting Nullifier) implementation for Waku

40 lines (37 loc) 1.87 kB
import '../../../interfaces/dist/protocols.js'; import '../../../interfaces/dist/connection_manager.js'; import '../../../interfaces/dist/health_status.js'; import '../../../../node_modules/multiformats/dist/src/bases/base10.js'; import '../../../../node_modules/multiformats/dist/src/bases/base16.js'; import '../../../../node_modules/multiformats/dist/src/bases/base2.js'; import '../../../../node_modules/multiformats/dist/src/bases/base256emoji.js'; import '../../../../node_modules/multiformats/dist/src/bases/base32.js'; import '../../../../node_modules/multiformats/dist/src/bases/base36.js'; import '../../../../node_modules/multiformats/dist/src/bases/base58.js'; import '../../../../node_modules/multiformats/dist/src/bases/base64.js'; import '../../../../node_modules/multiformats/dist/src/bases/base8.js'; import '../../../../node_modules/multiformats/dist/src/bases/identity.js'; import '../../../../node_modules/multiformats/dist/src/codecs/json.js'; import { Logger } from '../../../utils/dist/logger.js'; const DefaultEpochUnitSeconds = 10; // the rln-relay epoch length in seconds const log = new Logger("waku:rln:epoch"); function dateToEpoch(timestamp, epochUnitSeconds = DefaultEpochUnitSeconds) { const time = timestamp.getTime(); const epoch = Math.floor(time / 1000 / epochUnitSeconds); log.info("generated epoch", epoch); return epoch; } function epochIntToBytes(epoch) { const bytes = new Uint8Array(32); const db = new DataView(bytes.buffer); db.setUint32(0, epoch, true); log.info("encoded epoch", epoch, bytes); return bytes; } function epochBytesToInt(bytes) { const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); const epoch = dv.getUint32(0, true); log.info("decoded epoch", epoch, bytes); return epoch; } export { dateToEpoch, epochBytesToInt, epochIntToBytes };