Hi @bipin_bhandari, Frank has given you some great pointers here so I’ll mostly reinforce them:
Various limits on transactions will prevent you from processing 1 million objects in a single transaction, there are multiple limits that could contribute to that (number of input objects, number of commands, number of dynamic object loads, transaction size, etc) and it is difficult to know which one you will hit first without experimentation, but you will certainly hit one and need to chunk work up. Generally doing work on the order of 1000 objects is quite doable per transaction.
We do support handling vector<Receiving<T>> as a function parameter, but it is not supported as a transaction input, so to make a call to such a function, you would need to:
Create a PTB with many receiving inputs.
Call the MakeMoveVec transaction command to create the vector from those inputs.
Call the function passing the result of the MakeMoveVec
This could allow you to process more donations per transaction because you avoid hitting the limit on transaction commands and therefore probably also on overall transaction size.