Palindrome Crypto Pay - Blockchain Escrow Payment Solution

Signatures (EIP-712)

createSignatureDeadline

async createSignatureDeadline(minutesFromNow: number = 10): Promise<bigint>

Creates a deadline timestamp for EIP-712 signatures. Uses the current block timestamp (not local time) to ensure accuracy across different time zones and client clocks.

Parameters

  • minutesFromNow: number – Minutes until signature expires (default: 10)

Returns

Promise<bigint> – Unix timestamp when signature expires

import { createPalindromeSDK } from '@/lib/createSDK';

const { sdk } = await connectAndInitSDK();

// Default: 10 minutes from now
const deadline10 = await sdk.createSignatureDeadline();
console.log("Expires in 10 min:", new Date(Number(deadline10) * 1000));

// Custom: 60 minutes (1 hour)
const deadline60 = await sdk.createSignatureDeadline(60);
console.log("Expires in 1 hour:", new Date(Number(deadline60) * 1000));

// Short: 5 minutes for quick operations
const deadline5 = await sdk.createSignatureDeadline(5);
console.log("Expires in 5 min:", new Date(Number(deadline5) * 1000));

Why Block Timestamp?

The deadline is calculated from the blockchain's block timestamp, not your local clock:

const block = await publicClient.getBlock();
const deadline = block.timestamp + (minutesFromNow * 60);

This ensures:

  • Consistent expiration across all users
  • No clock drift issues
  • Contract validation works correctly

Usage with Signatures

// Create deadline
const deadline = await sdk.createSignatureDeadline(60);

// Get nonce
const nonce = await sdk.getUserNonce(escrowId, userAddress);

// Sign with deadline
const signature = await sdk.signConfirmDelivery(
  walletClient,
  escrowId,
  deadline,
  nonce
);

// Check if still valid before submitting
if (!sdk.isSignatureDeadlineExpired(deadline)) {
  await sdk.confirmDeliverySigned(...);
}
OperationRecommendedWhy
Confirm Delivery60 minGives user time to review
Start Dispute60 minImportant action, needs time
Request Cancel30 minSimpler operation
Quick operations10 minDefault, secure

See alsoisSignatureDeadlineExpired() · getUserNonce()

Previous
signStartDispute