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