نحوه ایجاد یک آدرس کیف پول اتریوم از طریق کلید خصوصی

در این مقاله با نحوه و مراحل ایجاد یک آدرس برای کیف پول اتریوم از طریق کلید خصوصی آشنا خواهید شد. در مقاله قبلی نحوه انجام این کار را برای کیف پول بیت کوین آموختید. ( چگونه از روی کلید خصوصی برای کیف پول بیت کوین آدرس بسازیم؟)

0 132

در اولین مقاله از این سری مقالات، ما یک کلید خصوصی بیت کوین ایجاد کردیم:

60cf347dbc59d31c1358c8e5cf5e45b822ab85b79cb32a9f3d98184779a9efc2

در اینجا ما از آن کلید برای دریافت آدرس عمومی و سپس آدرس کیف پول اتریوم از آن کلید خصوصی استفاده خواهیم کرد.

ایجاد آدرس کیف پول بیت کوین از کلید خصوصی کمی پیچیده است. در اینجا فرآیند ساده‌تر خواهد بود. ما باید یک تابع هش برای دریافت کلید عمومی و یک تابع هش دیگر برای دریافت آدرس اعمال کنیم.

کلید عمومی

اولین کاری که باید انجام دهیم این است که الگوریتم امضای دیجیتال مبتنی بر منحنی‌های ECDSA را بر کلید خصوصی خود اعمال کنیم. یک منحنی ECDSA، منحنی است که با معادله y² = x³ + ax + b با انتخاب a و b تعریف می‌شود. خانواده کاملی از چنین منحنی‌هایی که بطور گسترده‌‌ای شناخته و استفاده می‌شوند، وجود دارد. بیت کوین از منحنی secp256k1 استفاده می‌کند.

اتریوم از منحنی ECDSA یکسانی یعنی secp256k1 استفاده می‌کند، بنابراین فرآیند برای دریافت کلید عمومی در هر دو ارز دیجیتال یکسان است.

با اعمال ECDSA به کلید خصوصی، ما یک عدد صحیح 64 بایتی دریافت می‌کنیم، که دو عدد صحیح 32 بایتی است و نشان‌دهنده نقاطX و Yدر منحنی ECDSA بصورت بهم‌پیوسته است.

برای مثال، ما داریم:

در پایتون، چنین دیده می‌شود:

توجه: همانطور که در کد بالا می‌بینید، من از روشی در ماژول ecdsa استفاده کردم و کلید خصوصی را با استفاده از کدک‌ها (ecdsa) رمزگشایی کردم. این بیشتر به پایتون مربوط است و کمتر به خود الگوریتم ربط دارد، اما توضیح خواهم داد که ما در اینجا چه کاری انجام می‌دهیم تا از اختلال جلوگیری کنیم.

در پایتون حداقل دو رده وجود دارد که می‌تواند کلیدهای خصوصی و عمومی را نگه دارد: str و bytes. اولی رشته و دومی دسته‌بندی بایت است. روش‌های رمزنگاری در پایتون با دسته‌بندی بایت‌ها کار می‌کنند، آن را به عنوان ورودی دریافت می‌کنند و به عنوان نتیجه باز می‌گردانند.

حال، به این مثال کوتاه توجه کنید: یک رشته می‌گوید، 4f3c با دسته‌بندی بایت 4f3c برابر نیست. در عوض، آن با رده بایت با دو عنصر O< برابر است. و آن همان چیزی است که روش codecs.decode انجام می‌دهد: یک رشته را به دسته‌بندی بایت تبدیل می‌کند. آن با همه دست‌کاری‌های رمزنگاری که در این مقاله انجام خواهیم داد، یکسان خواهد بود.

آدرس کیف پول

وقتی که کلید عمومی را دریافت کردیم، می‌توانیم آدرس را حساب کنیم. حالا، بر خلاف بیت کوین، اتریوم دارای آدرس یکسانی در همه شبکه‌های آزمایشی و اصلی است. کاربران شبکه‌ای را تعیین می‌کنند که می‌خواهند بعدا در فرآیند ایجاد و امضای یک تراکنش از آن استفاده کنند.

برای ایجاد یک آدرس از کلید عمومی، تمام کاری که باید انجام دهیم این است که Keccak-256 را به کلید اعمال کنیم و سپس 20 بایت باقیمانده از نتیجه را برداریم. کار انجام شد. توابع هش دیگری احتیاج نیست، Base58 یا هیچ تبدیل دیگری لازم نیست. تنها کاری که باید انجام دهید این است که 0x را به ابتدای آدرس اضافه کنید.

کد پایتون اینجاست:

Checksum (مجموع مقابله‌ای)

حال، همانطور که به یاد دارید، بیت کوین Checksum را با هش کردن کلید عمومی و گرفتن 4 بایت اول نتیجه ایجاد می‌کند. این برای همه آدرس‌های بیت کوین صحیح است، بنابراین نمی‌توانید بدون اضافه کردن بایت‌های Checksum، آدرس معتبری دریافت کنید.

در اتریوم، کارها این چنین پیش نمی‌روند. در ابتدا، هیچ مکانیزم Checksum برای تایید اعتبار درستی کلید وجود نداشت. با این حال، در سال 2016، ویتالیک بوترین (Vitalik Buterin) یک مکانیزم Checksum معرفی کرد، که توسط کیف پول‌ها و تبادلات پذیرفته شده است.

اضافه کردن Checksum به آدرس کیف پول اتریوم باعث می‌شود تا به حروف بزرگ و کوچک حساس شود.

ابتدا باید هش Keccak-256 آدرس را دریافت کنید. توجه کنید که این آدرس باید بدون بخش 0x به تابع هش منتقل شود.

سپس، تمامی کاراکترهای آدرس ابتدایی را تکرار کنید. اگر تعداد بایت‌های iام هش بزرگتر یا مساوی با 8 باشد، کاراکتر iام آدرس را به حرف بزرگ تبدیل کنید، در غیر این‌صورت به‌صورت حرف کوچک باقی بماند.

در نهایت، 0x را به ابتدای نتیجه رشته اضافه کنید. اگر بزرگی یا کوچکی حرف را نادیده بگیرید، آدرس Checksum یکسان با اولی است. اما حروف بزرگ به هرکسی اجازه می‌دهد تا اعتبار قطعی آدرس را بررسی کند.

طرح کلی Checksum برای این طرح پیشنهادی چنین است:

یه طور میانگین، 15 بیت بررسی به ازای هر آدرس وجود خواهد داشت و احتمال خالصی که یک آدرس تولیدشده تصادفی، در صورتی که اشتباه تایپی به صورت تصادفی از بررسی عبور کند، 0.0247% است.

کد جهت اضافه کردن Checksum به آدرس اتریوم:

نتیجه‌گیری

همانطور که می‌بینید، ایجاد یک آدرس برای اتریوم بسیار ساده‌تر از بیت کوین است. تمام کاری که باید انجام دهیم این است که ECDSA را به کلید عمومی اعمال و سپس Keccak-256 را اعمال کنیم و در نهایت 20 کاراکتر باقی‌مانده آن هش را بگیریم.

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.