Как проверить удалённого отправителя в получателе 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 принадлежат разным пространствам идентификаторов: при подстановке одного вместо другого корректный трафик может перестать проходить.

docs.chain.link CCIP EVM receiver