multicallBalanceOf method
Multicall of balanceOf, may not be in the same block unless multicall
is provided.
Implementation
Future<List<BigInt>> multicallBalanceOf(
List<String> addresses, [
Multicall? multicall,
]) async {
assert(addresses.isNotEmpty, 'address should not be empty');
if (multicall != null) {
final res = await multicall
.aggregate(Iterable<int>.generate(addresses.length).map(
(e) {
final functionSig = contract.interface.getSighash('balanceOf');
final argData =
abiCoder.encode(['address'], [addresses[e]]).substring(2);
return MulticallPayload(contract.address, functionSig + argData);
},
).toList());
return res.returnData.map((e) => BigInt.parse(e)).toList();
} else {
return Future.wait(Iterable<int>.generate(addresses.length)
.map((e) => balanceOf(addresses[e])));
}
}