Как найти ошибку в порядке меток при вычислении ENS namehash

Запрос к резолверу для pay.team.eth раз за разом попадает мимо нужной записи. Для начала сравните последовательность родительских и дочерних узлов, которую использует ваш импортёр.

Пройдите путь от корня

Пример печатает условную трассу, без вычисления хеша. От корня берётся сначала eth, затем team и в конце pay. При реальном вычислении корень — 32 нулевых байта. На каждом шаге вычислите Keccak-256 от байтов родительского узла и присоединённого к ним Keccak-256 метки. Обращать символы внутри слова или склеивать текстовое представление hex нельзя.

const labels = "pay.team.eth".split(".");
let node = "root";
for (const label of labels.reverse()) {
  console.log(node, "+", label);
  node = label + "." + node;
}

Сравните первый расходящийся узел

До разбиения на метки нормализуйте полное имя совместимым с ENS нормализатором. Сверьте промежуточные значения для eth и team.eth с независимой реализацией. Если они совпали, проверьте UTF-8 последней метки после нормализации. Хеш одной метки описывает её байты, а namehash полного имени также зависит от родителя.

docs.ens.domains ENS name processing