Небольшие правки в первой части и программа для связки пары ключей для подписи и домена(имени).
1. Исправление первой части
Я предожил использовать резолвинг имени на хеш для проверки принадлежности ключей домену. "Aккаунтом в эфире можно считать пару публичного и приватного ключей ECDSA, а хеш публичного ключа это адрес аккаунта". "Из сигнатуры и хеша данных мы получаем публичный ключ, считаем хеш публичного ключа и сравниваем его с тем хешем который получили из ENS для ens.eth." Но в данном случае несколько юзеров могут настроить резолвинг своих имен на хеш нашего публичного ключа. Это решается обратным резолвингом, т.е. ip адрес на домен как в DNS. Будет связка один хеш - одно имя. Но если несколько имен могут резолвится на один хеш, то что тогда возвращать? В ENS есть понятия резолвинга имени на хеш и владением имени - т.е. тот адрес, который решает на какой хеш резолвится домен. Алиса может быть владельцем домена example.eth, но получим мы адрес Боба при вводе example.eth в кошельке при переводе(потому что так решила Алиса и она может это изменить).
У Алисы есть primary name. Primary name ссылается только на адрес, который влаеет этим доменом и именно это имя будет возвращено при обратном резолвинге.
2. Proof-of-Concept
В качестве примера написал небольшую программу(github) для подписи и проверки сигнатуры. На главной - описание того, что делает эта программа и 2 кнопки - sign(подпись) и check(проверка подписи).
Sign - несколько полей ввода, Private Key or Mnemonic - приватный ключ для шифрования хеша файла, т.е. подписи(проверял только приватный ключ). File path - путь до файла, который подписывваем, Signature - в это поле выводится сама подпись(или сигнатура).
Check - также несколько полей ввода, URL Ethereum node - адрес ноды, можно указать публичную ноду Ethereum(через нее запрашивается имя через обратный резолвинг), Domain - домен, подпись которого хотим проверить(будет сравниваться запрашиваемый домен с тем, который указали). File path - путь до файла, подпись которого проверяем. Signature - сама подпись. Возможно стоило бы добавить вывод домена, который подписал этот файл, если не известно имя подписавшего(думаю добавлю позже).
3. Заключение
Можете проверить подписи txt файлов с сообщениями one и two. Подписи файлов:
aa2172e851c1a0fa3a8fe32ca804df52bc1d0d124fe4a88cbbc195b84105b4bf7543f0758c4acbafa74915100ab4bb229ad4c3e662cf08fa68e3dda0bfb9486c00
ba6a7d07f05a026664d27ec60864cc192c71f3b9aa30df059c8b0f670d2d64ca27498e79347f21dc5fcc79ae838794bd417906514d94887e3931d9d3fb0a16f200
Домен, который подписал - signature-escrow-test.eth. Публичную ноду ethereum может предоставить infura.
Katenk_aa
дайте ссылочку на гит пж
valli0x Автор
https://github.com/valli0x/ens-sig