Source code for vertex_protocol.utils.nonce

from typing import Optional
from datetime import timezone, datetime, timedelta
import random


[docs]def gen_order_nonce( recv_time_ms: Optional[int] = None, random_int: Optional[int] = None, is_trigger_order: bool = False, ) -> int: """ Generates an order nonce based on a received timestamp and a random integer. Args: recv_time_ms (int, optional): Received timestamp in milliseconds. Defaults to the current time plus 90 seconds. random_int (int, optional): An integer for the nonce. Defaults to a random integer between 0 and 999. Returns: int: The generated order nonce. """ if recv_time_ms is None: recv_time_ms = int( (datetime.now(tz=timezone.utc) + timedelta(seconds=90)).timestamp() * 1000 ) if random_int is None: random_int = random.randint(0, 999) nonce = (recv_time_ms << 20) + random_int if is_trigger_order: nonce = nonce | (1 << 63) return nonce