API Documentation

Core Components

OnChainTransferValidator

Main service for validating blockchain transactions across multiple chains.

Methods

processValidation(transfer: Transfer, contractParams?: ContractParams): Promise<void>

Processes and validates a transaction with retry mechanism.

const validator = new OnChainTransferValidator();
await validator.processValidation(transfer, contractParams);
validateTransfer(transfer: Transfer, contractParams?: ContractParams): Promise<ValidationResult>

Validates a transaction based on the chain type.

const result = await validator.validateTransfer(transfer, contractParams);

MessagingController

Handles incoming validation requests through message queue.

Methods

validateTransaction(@Payload() toValidate: ToValidate, @Ctx() context: RmqContext)

Handles validation requests from message queue.

@EventPattern(QUEUES.ONCHAIN_TO_VALIDATE)
async validateTransaction(toValidate: ToValidate, context: RmqContext)

Types

Transfer Interface

interface Transfer {
  chainId: number;
  txHash: string;
  buyerAddress: string;
  tokenAmount: number;
  tokenName: string;
  signature?: string;
  blockHash?: string;
}

ContractParams Interface

interface ContractParams {
  buyerEmail: string;
  purchaseCounter?: number;
}

ValidationResult Interface

interface ValidationResult {
  isValid: boolean;
  message?: string;
  details?: any;
}

Chain-Specific Validation

Solana

const result = await solanaCardContractService.validateBuyerPDA({
  signature,
  buyerAddress,
  amount,
  purchaseCounter,
  receiverEmail
});

EVM (Ethereum, Binance, Base)

const result = await evmCardContractService.validateBuyerPDA({
  chainId,
  signature,
  buyerAddress,
  amount,
  receiverEmail
});

Error Handling

The system implements automatic retries for transactions that are not yet ready:

try {
  await validator.processValidation(transfer, contractParams);
} catch (error) {
  if (error instanceof TransactionNotReadyError) {
    // Will automatically retry
  } else {
    // Will emit validation complete event with error
  }
}

Events

The system emits events on validation completion:

VALIDATION_COMPLETE_EVENT {
  transfer: Transfer;
  result: ValidationResult;
  status: 'valid' | 'invalid';
  error: string | null;
  state: 'completed';
}

Configuration

Environment variables required for different chains:

SOLANA_RPC_URL=
ETH_RPC_URL=
BSC_RPC_URL=
TRON_RPC_URL=
SUI_RPC_URL=
TON_RPC_URL=

results matching ""

    No results matching ""