Mervespm / CrossBorderPaymentSystem

Blockchain Based Cross Border Payment System Using Hyperledger Fabric
Apache License 2.0
9 stars 0 forks source link

What about adding a function/functions for checking per transaction limits or daily transaction limits? #2

Closed lu-jumba closed 2 months ago

lu-jumba commented 2 months ago

Cross boarder money transfer usually involves limits regarding how much you can send in a single transaction and how much you can send in a single day. So, I was thinking may be you could add a function to restrict transactions based on per transaction limits and per day limits: something like this (I am still learning & I would love to learn how this can be implemented in the blockchain ):

func checkDailyTransactionLimits(amount float64) bool { dto := struct { TotalAmount float64 json:"total_amount" LastDate time.Time json:"last_date" }{}

// Initialize daily transaction tracker
dailyTransaction := DailyTransaction{
    TotalAmount: dto.TotalAmount,
    LastDate:    dto.LastDate,
}

// Check each transaction
amount = transaction.Amount
date := transaction.Date

if amount > 3000.0 {
    fmt.Printf("Transaction of $%.2f exceeds maximum allowed amount of $3000\n per transaction ", amount)
    return false
}

// Check if the transaction is made on the same day

if !isSameDay(date, dailyTransaction.LastDate) {
    // Reset daily transaction amount if it's a new day
    dailyTransaction.TotalAmount = 0
}

// Check if the total amount for the day exceeds $6000
if dailyTransaction.TotalAmount+amount > 6000.0 {
    fmt.Printf("Daily transaction limit exceeded. Cannot process transaction of $%.2f\n", amount)
    return false
}

// Process the transaction

fmt.Printf("Transaction of $%.2f processed successfully\n", amount)

// Update daily transaction amount

dailyTransaction.TotalAmount += amount
dailyTransaction.LastDate = date

return true

}

// Function to check if two timestamps are on the same day func isSameDay(time1, time2 time.Time) bool { return time1.Year() == time2.Year() && time1.Month() == time2.Month() && time1.Day() == time2.Day() }

Mervespm commented 2 months ago

Thanks for your suggestion! Adding limits on how much can be sent in one transaction and per day is a great idea, especially for cross-border transfers.