Как выбрать контекст хранилища для вызова диспетчера Starknet
Хеш класса и адрес контракта в Starknet обозначают разные объекты. При использовании library dispatcher для повторного применения кода функция может читать и менять хранилище вызывающего контракта.
Определите владельца состояния
Пусть A требуется записанный владелец B. Создайте contract dispatcher по адресу экземпляра B и вызовите геттер. Аналогичный library-вызов по хешу класса исполнится в контексте A и может прочитать раскладку хранилища A.
contract dispatcher → target address B → storage of B
library dispatcher → class hash H → storage context of caller A
Оба вызова способны успешно вернуть правдоподобные адреса. В тесте назначьте A и B заведомо разных владельцев. Сверяйте результат с ожидаемым экземпляром вместо проверки одного факта успеха.
Ограничьте выбор библиотечного кода
Код в контексте вызывающей стороны может менять её состояние. Проверяйте полномочия на настройку хеша класса и совместимость хранилища до library-вызова. Объявление класса не подтверждает пригодность кода для данного контракта. starknet.io The Cairo Programming Language