آدرس های بیت کوین

آدرس بیت کوین هشی از کلید عمومی منحنی بیضوی است. شکل 1 مراحل تشکیل یک آدرس بیت کوین را از کلید عمومی نشان می دهد. بیت کوین از لایه سوکت امن باز برای انجام رمزنگاری منحنی بیضوی استفاده می کند. لایه سوکت امن باز، نقاط را بر روی منحنی بیضوی با ۶۵ بایت ارایه می کند.

شكل 1. تولید آدرس

بیت کوین از منحنی بیضوی با طول ۲۵۶ بیت استفاده می کند؛ بنابراین هر مختصاتی ۲۵۶ بیت یا ۳۲ بایت فضا اشغال می کند. یک نقطه غیر فشرده، در مجموع ۶۵ بایت- ۱ بایت برای نوع و ۳۲ بایت برای هر یک از دو مختصات- مصرف می کند.

گام بعدی در شکل 1، انجام هش خروجی لایه سوکت امن باز از نقطه منحنی بیضوی، ابتدا با استفاده از تابع هش اس.اچ.ای 256 و سپس با تابع هش آر.آی.پی.ای.ام.دی 160 است. تابع هش اول یعنی اس.اچ.ای 256 اقدام به تولید رشته هش ۲۵۶ بیتی می کند. تابع هش دوم اقدام به تولید رشته هش ۱۶۰ بینی می کند.

ساتوشی از هش دوم به منظور کاهش حجم آدرس استفاده کرده است. انجام تراکنش ها به صورت کوچک تر در حالی که این کاهش اندازه معقول بوده و باعث به وجود آمدن محدوده تصادم نشود، از اهداف طراحی بوده است.

در نهایت، جمع کنترلی از نتیجه هش آر.آی.پی.ای.ام.دی ۱۶۰ به صورت دوبار استفاده از تابع هش اس.اچ.ای محاسبه می شود. فقط ۴ بایت اول هش ها به عنوان جمع کنترلی نگه داری می شود. هدف از جمع کنترلی، شبیه به هدف بررسی ارقام در حساب های بانکی یا کارت های اعتباری برای جلوگیری از اشتباهات رایج است که وجوه به آدرس اشتباه دیگری ارسال نشود. نرم افزار کیف پول بیت کوین، چک جمع کنترلی آدرس را قبل از ارسال وجوه به آن آدرس انجام می دهد. اگر رقمی از یک آدرس بیت کوین به اشتباه تایپ یا کپی شده باشد، کیف پول خطا خواهد گرفت و از ارسال وجوه به آدرس مزبور جلوگیری خواهد کرد. ارسال وجوه به آدرسی که به یک کلید خصوصی شناخته شده مرتبط نباشد، باعث می شود آن وجه قابل دسترس نبوده و بنابراین می تواند از دست رفته تلقی شود.

در قدم بعدی ایجاد یک آدرس بیت کوین، یک رشته بایت که در پایه ۵۸ کدگذاری می شود، آماده می گردد. این رشته بایت با بایتی که نشان دهنده نوع آدرس است شروع شده و در پی آن ۲۰ بایت که نتیجه هش آر.آی.پی.ای.ام.دی ۱۶۰ هستند و در پایان، با ۴ بایت جمع کنترلی خاتمه می یابد. مقدار بایت های نوع آدرس، آغاز آدرس را برای کدگذاری پایه ۵۸ برای بار اول مشخص می کند. نوع آدرس می تواند مقادیر زیر را داشته باشد:

  • . (دهدهی)
    برای آدرس کلید عمومی در شبکه اصلی. نتیجه آن، آدرس کدگذاری شده ای است که با ۱ شروع می شود.
  • 5 (دهدهی)
    برای آدرس های پردازه ای در شبکه اصلی. نتیجه آن، آدرس کدگذاری شده ای است که با ۳ شروع می شود.
  • ۱۱۱ (دهدهی)
    برای آدرس کلید عمومی در تست نت.
  • ۱۹۶ (دهدهی)
    برای آدرس پردازه در تست نت. نتیجه آن، آدرس کدگذاری شده ای است که با ۲ شروع می شود.

آخرین مرحله از پروسه رمزگذاری با کد نویسی بر پایه ۵۸ است. کدگذاری بر پایه ۵۸، الگوریتم کدگزاری باینری به متن است و داده های باینری را به فرمت متن ترجمه می کند. کدگذاری بر پایه ۵۸ مشابه کدگذاری با پایه ۶۴ است. کدگذاری با پایه ۶۴ از کاراکترهای گوناگونی استفاده می کند. این روش از ابهامات جلوگیری می کند. جهت کدگذاری یک بایت، رشته آن به یک عدد صحیح بزرگ ترجمه شده و به صورت متوالی به ۵۸ تقسیم می شود. باقی مانده هر مرحله از تقسیم به عنوان یک کاراکتر کدگذاری می شود. همه نتایج روش مزبور، آدرس بیت کوین است که بین ۲۷ و ۳۴ حرف طول دارد. این مهم است که توجه داشته باشید کاراکترها در یک آدرس، حساس به متن هستند.

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

منبع: کتاب راهنمای بیت کوین نوشته پدرو فرانکو