diff --git a/src/contracts/QUtil.h b/src/contracts/QUtil.h index f8808115..f30d16ea 100644 --- a/src/contracts/QUtil.h +++ b/src/contracts/QUtil.h @@ -1578,6 +1578,37 @@ struct QUTIL : public ContractBase LOG_INFO(locals.log); } + /**************************************/ + /* GET BALANCE BULK REQUEST */ + /**************************************/ + + struct GetBalances16_input + { + Array publicKeys; + }; + + struct GetBalances16_output + { + Array balances; + }; + + struct GetBalances16_locals + { + Entity entity; + uint32 i; + }; + + PUBLIC_FUNCTION_WITH_LOCALS(GetBalances16) + { + for (locals.i = 0; locals.i < input.publicKeys.capacity(); ++locals.i) + { + if (qpi.getEntity(input.publicKeys.get(locals.i), locals.entity)) + { + output.balances.set(locals.i, locals.entity.incomingAmount - locals.entity.outgoingAmount); + } + } + } + /**************************************/ /* SHAREHOLDER PROPOSALS */ /**************************************/ @@ -1617,6 +1648,7 @@ struct QUTIL : public ContractBase REGISTER_USER_FUNCTION(GetPollInfo, 6); REGISTER_USER_FUNCTION(GetFees, 7); REGISTER_USER_FUNCTION(QueryFeeReserve, 8); + REGISTER_USER_FUNCTION(GetBalances16, 9); REGISTER_USER_PROCEDURE(SendToManyV1, 1); REGISTER_USER_PROCEDURE(BurnQubic, 2);