Как выбрать контекст хранилища для вызова диспетчера 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