Как проверить удалённого отправителя в получателе CCIP
Контракт назначения получил вызов от настроенного маршрутизатора. Для привилегированной команды этого мало: нужно также проверить отправителя и цепочку, из которой пришло сообщение.
Привяжите полномочия к паре значений
В обработчике прочитайте sourceChainSelector и декодируйте sender по формату адреса исходной сети. В примере используются условные селекторы и имена. У второго сообщения тот же отправитель, но другая сеть, поэтому проверка пары должна вернуть отказ. В рабочем коде храните селекторы без потери точности uint64.
const expected = { selector: 100n, sender: "bridge-A" };
for (const m of [{selector:100n,sender:"bridge-A"},{selector:101n,sender:"bridge-A"}])
console.log(m.selector === expected.selector && m.sender === expected.sender);
Проверьте оба пути отказа
Протестируйте прямой вызов от постороннего локального адреса и доставку через маршрутизатор от неизвестного удалённого отправителя. Первый тест проверяет ограничение маршрутизатора, второй — полномочия приложения. Для EVM сравнивайте декодированные адреса. EVM chain ID и селектор CCIP принадлежат разным пространствам идентификаторов: при подстановке одного вместо другого корректный трафик может перестать проходить.