Как декодировать конфигурацию пользователя Aave v3 по ID резерва
Пул хранит признаки заимствования и залога парами бит. Если взять текущую позицию токена в списке вместо присвоенного reserve ID, можно без ошибки запроса приписать залог другому активу.
Привяжите пару бит к реальному резерву
На одном блоке получите id резерва и конфигурацию пользователя. В эталонной раскладке v3 бит заимствования расположен по индексу 2 умножить на id, следующий бит обозначает залог. В примере для резерва три установлен только залог.
reserve ID = 3
borrow flag = bit 6
collateral flag = bit 7
user word = 0x80 → collateral set, borrowing clear for ID 3
Для нескольких активов сопоставьте ненулевые пары с базовыми активами по таблице ID пула. Сохраняйте пропуски удалённых или недоступных резервов и не перенумеровывайте фильтрованный список.
Отделите конфигурацию от количества
В bitmap нет размера долга или баланса. Для объёма позиции отдельно прочитайте aToken и долг. В ключах кэша храните сеть и адрес пула: ID три в другом рынке может обозначать другой актив. github.com UserConfiguration.sol