## بازیابی کلید عمومی از امضا (Ethereum)

نکته: از آدرس به‌تنهایی نمی‌توان کلید عمومی را ساخت. باید یک امضا داشته باشی (مثلاً با MetaMask پیام را امضا کن).

یا

آدرس (اختیاری برای اعتبارسنجی) پیام (متنی که امضا می‌شود) I am proving ownership of this address at <?=new Date().toString()?>. امضا (hex 65 بایت — اگر با MetaMask امضا کنی این پر خواهد شد)
خروجی‌ها
Public Key (uncompressed, 0x04 + X + Y):

    —

Public Key (compressed, 0x02/0x03 + X):

    —

Recovered ETH address (raw, 0x + 40 hex):

    —

Address matches provided? —

توضیح فنی کوتاه: ما پیام را طبق استاندارد اتریوم (prefixed with "\x19Ethereum Signed Message:\n" + len) هش می‌کنیم، سپس از امضا (r,s,v) با ethers.utils.recoverPublicKey تابع `ethers.utils.recoverPublicKey` استفاده می‌کنیم که پابلیک‌کی را بازمی‌گرداند. آدرس از keccak256(publicKeyBytesWithout0x04)[12..] ساخته می‌شود.