Как запросить несколько балансов ERC-1155 одним вызовом

В одном контракте ERC-1155 могут находиться разные активы разных владельцев. Пакетный метод сопоставляет элементы двух входных массивов по позиции.

Составьте пары перед кодированием

Чтобы узнать балансы Алисы для ID 7 и 8 и Боба для ID 7, дважды укажите Алису в первом массиве. Закодируйте balanceOfBatch(address[],uint256[]) по ABI коллекции и вызовите на блоке снимка.

accounts = [Alice, Alice, Bob]
ids      = [7,     8,     7]

Если получен массив [3,0,9], у Алисы три единицы ID 7 и ноль единиц ID 8, у Боба девять единиц ID 7. Сохраните входные пары вместе с результатом, чтобы сортировка при выводе не перепутала владельцев.

Учитывайте границы коллекции

Длины массивов должны совпадать, а адреса владельцев должны быть ненулевыми. Группируйте запросы по сети и контракту. Актив с тем же номером в другом контракте имеет собственные балансы. eips.ethereum.org ERC-1155