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=