تسلط بر بیت کوین ، چاپ دوم توسط آندریاس م. آنتونوپولوس

ساخت وبلاگ

با محاکمه رایگان 10 روزه O'Reilly ، به Mastering Bitcoin ، Edition 2 و 60K+ دیگر دسترسی پیدا کنید.

همچنین رویدادهای آنلاین زنده ، محتوای تعاملی ، مواد آماده سازی صدور گواهینامه و موارد دیگر وجود دارد.

فصل 4. کلیدها ، آدرس ها

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

معرفی

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

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

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

در بخش پرداخت معامله بیت کوین ، کلید عمومی گیرنده توسط اثر انگشت دیجیتالی آن ، به نام یک آدرس بیت کوین نشان داده شده است ، که به همان روشی که نام ذینفع در یک چک استفاده می شود استفاده می شود (یعنی "پرداخت به سفارش")بشردر بیشتر موارد ، یک آدرس بیت کوین از یک کلید عمومی تولید می شود و مطابقت دارد. با این حال ، همه آدرس های بیت کوین نشان دهنده کلیدهای عمومی نیست. آنها همچنین می توانند نماینده سایر ذینفعان مانند اسکریپت ها باشند ، همانطور که بعداً در این فصل خواهیم دید. به این ترتیب ، بیت کوین به صورت انتزاعی دریافت کننده وجوه را می دهد ، و مقصد معاملات را انعطاف پذیر می کند ، مشابه چک های کاغذی: یک ابزار پرداخت واحد که می تواند برای پرداخت به حساب افراد ، پرداخت به حساب شرکت ، پرداخت قبض یا پرداخت پول نقد استفاده شود. آدرس بیت کوین تنها بازنمایی کلیدهایی است که کاربران به طور معمول می بینند ، زیرا این بخشی است که آنها برای به اشتراک گذاشتن با جهان نیاز دارند.

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

رمزنگاری کلیدی عمومی و رمزنگاری

رمزنگاری کلیدی عمومی در دهه 1970 اختراع شد و بنیادی ریاضی برای امنیت رایانه و اطلاعات است.

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

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

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

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

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

کلیدهای خصوصی و عمومی

یک کیف پول بیت کوین شامل مجموعه ای از جفت های کلیدی است که هر یک از یک کلید خصوصی و یک کلید عمومی تشکیل شده است. کلید خصوصی (k) یک عدد است که معمولاً به طور تصادفی انتخاب می شود. از کلید خصوصی ، ما از ضرب منحنی بیضوی ، یک عملکرد رمزنگاری یک طرفه ، برای تولید یک کلید عمومی (K) استفاده می کنیم. از کلید عمومی (k) ، ما از یک عملکرد هش رمزنگاری یک طرفه برای تولید آدرس بیت کوین (A) استفاده می کنیم. در این بخش ، ما با تولید کلید خصوصی شروع خواهیم کرد ، به ریاضی منحنی بیضوی که برای تبدیل آن به یک کلید عمومی استفاده می شود ، نگاه خواهیم کرد و در آخر ، یک آدرس بیت کوین را از کلید عمومی تولید می کنیم. رابطه بین کلید خصوصی ، کلید عمومی و آدرس بیت کوین در شکل 4-1 نشان داده شده است.

privk_to_pubK_to_addressA

شکل 4-1. کلید خصوصی ، کلید عمومی و آدرس بیت کوین
چرا از رمزنگاری نامتقارن (کلیدهای عمومی/خصوصی) استفاده می کنیم؟

چرا رمزنگاری نامتقارن در بیت کوین استفاده می شود؟برای رمزگذاری (مخفی ساختن) تراکنش ها استفاده نمی شود. در عوض، ویژگی مفید رمزنگاری نامتقارن، توانایی تولید امضای دیجیتال است. یک کلید خصوصی را می توان روی اثر انگشت دیجیتال تراکنش اعمال کرد تا یک امضای عددی تولید کند. این امضا را فقط شخصی می‌تواند تولید کند که از کلید خصوصی مطلع باشد. با این حال، هر کسی که به کلید عمومی و اثر انگشت تراکنش دسترسی دارد، می‌تواند از آنها برای تأیید امضا استفاده کند. این ویژگی مفید رمزنگاری نامتقارن این امکان را برای هر کسی فراهم می‌کند که هر امضا را در هر تراکنش تأیید کند، در حالی که اطمینان حاصل می‌کند که فقط دارندگان کلیدهای خصوصی می‌توانند امضای معتبر تولید کنند.

کلیدهای خصوصی

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

کلید خصوصی بیت کوین فقط یک عدد است. شما می توانید کلیدهای خصوصی خود را به طور تصادفی با استفاده از یک سکه، مداد و کاغذ انتخاب کنید: یک سکه را 256 بار پرتاب کنید و ارقام باینری یک کلید خصوصی تصادفی را دارید که می توانید در کیف پول بیت کوین استفاده کنید. سپس کلید عمومی را می توان از کلید خصوصی تولید کرد.

ایجاد یک کلید خصوصی از یک عدد تصادفی

اولین و مهمترین مرحله در تولید کلیدها، یافتن منبع امن آنتروپی یا تصادفی است. ایجاد یک کلید بیت کوین اساساً مانند "انتخاب یک عدد بین 1 و 2 256" است. روش دقیقی که برای انتخاب آن عدد استفاده می کنید تا زمانی که قابل پیش بینی یا تکرار نباشد اهمیتی ندارد. نرم افزار بیت کوین از مولدهای اعداد تصادفی سیستم عامل برای تولید 256 بیت آنتروپی (تصادفی) استفاده می کند. معمولاً مولد اعداد تصادفی سیستم عامل توسط یک منبع تصادفی انسانی راه اندازی می شود، به همین دلیل ممکن است از شما خواسته شود که ماوس خود را برای چند ثانیه به اطراف بچرخانید.

به طور دقیق تر ، کلید خصوصی می تواند هر عدد بین 0 و n - 1 شامل باشد ، جایی که n ثابت است (n = 1. 1578 * 10 77 ، کمی کمتر از 2 256) که به عنوان ترتیب منحنی بیضوی مورد استفاده در بیت کوین تعریف شده است (نگاه کنید به"رمزنگاری منحنی بیضوی توضیح داد"). برای ایجاد چنین کلید ، ما به طور تصادفی یک شماره 256 بیتی را انتخاب می کنیم و بررسی می کنیم که کمتر از N است. از نظر برنامه نویسی ، این معمولاً با تغذیه رشته های بزرگتر از بیت های تصادفی ، جمع آوری شده از یک منبع رمزنگاری ایمن از تصادفی ، به الگوریتم هش SHA256 ، که به راحتی تعداد 256 بیتی تولید می کند ، حاصل می شود. اگر نتیجه کمتر از N باشد ، ما یک کلید خصوصی مناسب داریم. در غیر این صورت ، ما به سادگی دوباره با یک شماره تصادفی دیگر سعی می کنیم.

هشدار

کد خود را برای ایجاد یک شماره تصادفی ننویسید یا از یک ژنراتور شماره تصادفی "ساده" که توسط زبان برنامه نویسی خود ارائه می شود استفاده کنید. از یک ژنراتور شماره شبه ساکتوگرافی (CSPRNG) با یک دانه از منبع آنتروپی کافی استفاده کنید. مستندات کتابخانه ژنراتور شماره تصادفی را که انتخاب می کنید مطالعه کنید تا مطمئن شوید که از نظر رمزنگاری ایمن است. اجرای صحیح CSPRNG برای امنیت کلیدها بسیار مهم است.

موارد زیر یک کلید خصوصی (K) به طور تصادفی تولید شده در قالب شش ضلعی (256 بیت به عنوان 64 رقم شش ضلعی ، هر 4 بیت) نشان داده شده است:

اندازه فضای کلید خصوصی بیت کوین ، (2 256) تعداد غیرقابل تحمل زیادی است. تقریباً 10 77 در اعشاری است. برای مقایسه ، تخمین زده می شود که جهان قابل مشاهده شامل 10 80 اتم باشد.

برای تولید یک کلید جدید با مشتری اصلی بیت کوین (به فصل 3 مراجعه کنید) ، از دستور getNewAddress استفاده کنید. به دلایل امنیتی فقط کلید عمومی را نشان می دهد ، نه کلید خصوصی. برای درخواست Bitcoind برای افشای کلید خصوصی ، از دستور dumpprivkey استفاده کنید. دستور dumpprivkey کلید خصوصی را در یک فرمت رمزگذاری شده BASE58 به نام قالب واردات کیف پول (WIF) نشان می دهد ، که ما در "قالب های کلید خصوصی" با جزئیات بیشتری بررسی خواهیم کرد. در اینجا نمونه ای از تولید و نمایش یک کلید خصوصی با استفاده از این دو دستور آورده شده است:

فرمان dumpprivkey کیف پول را باز می کند و کلید خصوصی را که توسط دستور getNewAddress تولید شده است ، استخراج می کند. برای بیت کوین امکان ندارد کلید خصوصی را از کلید عمومی بشناسد مگر اینکه هر دو در کیف پول ذخیره شوند.

دستور dumpprivkey یک کلید خصوصی از یک کلید عمومی ایجاد نمی کند ، زیرا این غیرممکن است. این دستور به سادگی کلید خصوصی را که قبلاً در کیف پول شناخته شده است ، آشکار می کند و توسط دستور getNewAddress تولید شده است.

همچنین می توانید از ابزار خط فرمان Bitcoin Explorer (به پیوست F مراجعه کنید) برای تولید و نمایش کلیدهای خصوصی با دستورات بذر ، EC-NEW و EC-to-WIF:

کلیدهای عمومی

کلید عمومی از کلید خصوصی با استفاده از ضرب منحنی بیضوی محاسبه می شود ، که غیرقابل برگشت است: K = K * G ، جایی که K کلید خصوصی است ، G یک نقطه ثابت به نام Generator Point است و K کلید عمومی است. عمل معکوس ، معروف به "یافتن لگاریتم گسسته"-محاسبه K اگر می دانید k به همان اندازه دشوار است که تمام مقادیر ممکن k را امتحان کنید ، یعنی یک جستجوی بی رحمانه. قبل از اینکه نحوه تولید یک کلید عمومی را از یک کلید خصوصی نشان دهیم ، بیایید با جزئیات بیشتری به رمزنگاری منحنی بیضوی نگاه کنیم.

ضرب منحنی بیضوی نوعی عملکردی است که رمزنگاران آن را یک عملکرد "درب تله" می نامند: انجام آن در یک جهت (ضرب) آسان است و انجام در جهت معکوس (تقسیم) غیرممکن است. صاحب کلید خصوصی می تواند به راحتی کلید عمومی را ایجاد کند و سپس آن را با جهان به اشتراک بگذارد و بداند که هیچ کس نمی تواند عملکرد را معکوس کند و کلید خصوصی را از کلید عمومی محاسبه کند. این ترفند ریاضی پایه و اساس امضاهای دیجیتالی فراموش نشدنی و ایمن است که مالکیت صندوق های بیت کوین را اثبات می کند.

رمزنگاری منحنی بیضوی توضیح داد

رمزنگاری منحنی بیضوی نوعی رمزنگاری کلید نامتقارن یا عمومی است که بر اساس مشکل لگاریتم گسسته گسسته است که با افزودن و ضرب در نقاط منحنی بیضوی بیان شده است.

شکل 4-2 نمونه ای از منحنی بیضوی است ، مشابه آنچه که توسط بیت کوین استفاده می شود.

ecc-curve

شکل 4-2. یک منحنی بیضوی

بیت کوین از یک منحنی بیضوی خاص و مجموعه ای از ثابت های ریاضی استفاده می کند ، همانطور که در استانداردی به نام SECP256K1 تعریف شده است ، که توسط انستیتوی ملی استاندارد و فناوری (NIST) تأسیس شده است. منحنی SECP256K1 با عملکرد زیر تعریف شده است ، که یک منحنی بیضوی تولید می کند:

y squared equals left-parenthesis x cubed plus 7 right-parenthesis over left-parenthesis double-struck upper F Subscript p Baseline right-parenthesis

y squared mod p equals left-parenthesis x cubed plus 7 right-parenthesis mod p

Mod P (Modulo Prime Number P) نشان می دهد که این منحنی بیش از یک قسمت محدود از Prime Order P است که به صورت آن نیز نوشته شده است ، جایی که P = 2 256 - 2 32 - 2 9 - 2 8 - 2 7 - 2 6 - 2 4- 1 ، تعداد اصلی بسیار زیاد.

از آنجا که این منحنی به جای بیش از اعداد واقعی ، بر روی یک میدان محدود از مرتبه اصلی تعریف شده است ، به نظر می رسد مانند الگویی از نقاط پراکنده در دو بعد ، و این باعث می شود تجسم دشوار باشد. با این حال ، ریاضی با یک منحنی بیضوی نسبت به اعداد واقعی یکسان است. به عنوان نمونه ، شکل 4-3 همان منحنی بیضوی یکسان را در یک میدان محدود بسیار کوچکتر از Prime Order 17 نشان می دهد ، و الگویی از نقاط را در یک شبکه نشان می دهد. منحنی بیضوی بیت کوین SECP256K1 را می توان به عنوان یک الگوی بسیار پیچیده تر از نقاط در یک شبکه غیرقابل تحمل بزرگ تصور کرد.

ecc-over-F17-math

شکل 4-3. رمزنگاری منحنی بیضوی: تجسم یک منحنی بیضوی بر روی f (p) ، با p = 17

به عنوان مثال ، موارد زیر یک نقطه P با مختصات (x ، y) است که یک نقطه در منحنی SECP256K1 است:

مثال 4-1 نشان می دهد که چگونه می توانید این کار را با استفاده از پایتون بررسی کنید:

مثال 4-1. با استفاده از پایتون برای تأیید اینکه این نکته روی منحنی بیضوی است

در ریاضی منحنی بیضوی ، نقطه ای به نام "نقطه در بی نهایت" وجود دارد که علاوه بر این با نقش صفر مطابقت دارد. در رایانه ها ، گاهی اوقات توسط x = y = 0 نشان داده می شود (که معادله منحنی بیضوی را برآورده نمی کند ، اما این یک مورد جداگانه آسان است که می توان آن را بررسی کرد).

همچنین یک اپراتور + به نام "افزودنی" وجود دارد که برخی از خواص مشابه با افزودن سنتی از اعداد واقعی که کودکان مدرسه ای یاد می گیرند ، دارد. با توجه به دو امتیاز P1و ص2روی منحنی بیضوی ، یک امتیاز سوم وجود دارد3 = P1 + P2، همچنین روی منحنی بیضوی.

از نظر هندسی ، این نقطه سوم P3با ترسیم خط بین P محاسبه می شود1و ص2بشراین خط منحنی بیضوی را دقیقاً در یک مکان اضافی تقاطع می کند. با این نکته تماس بگیرید3'= (x ، y). سپس در محور x بازتاب دهید تا P را بدست آورید3= (x ، y).

چند مورد خاص وجود دارد که نیاز به "نقطه در بی نهایت" را توضیح می دهد.

اگر p1و ص2همان نکته ، خط "بین" P1و ص2باید در این مرحله p گسترش یابد تا مماس در منحنی باشد1بشراین مماس دقیقاً در یک نقطه جدید منحنی را تقاطع می کند. برای تعیین شیب خط مماس می توانید از تکنیک های حساب استفاده کنید. این تکنیک ها با کنجکاوی کار می کنند ، حتی اگر ما با دو مختصات عدد صحیح ، علاقه خود را به نقاط منحنی محدود می کنیم!

در بعضی موارد (یعنی اگر P1و ص2مقادیر X یکسانی اما مقادیر مختلف Y را داشته باشید) ، خط مماس دقیقاً عمودی خواهد بود ، در این حالت p3 = "نقطه در بی نهایت".

اگر p1"نقطه در بی نهایت" ، سپس p1 + P2 = P2بشربه همین ترتیب ، اگر P2نقطه ای از بی نهایت است ، سپس p1 + P2 = P1بشراین نشان می دهد که چگونه نقطه در Infinity نقش صفر را ایفا می کند.

به نظر می رسد که + انجمنی است ، به این معنی که (a + b) + c = a + (b + c). این بدان معنی است که ما می توانیم یک + B + C را بدون پرانتز و بدون ابهام بنویسیم.

اکنون که علاوه بر این تعریف کرده ایم ، می توانیم ضرب را به روش استاندارد تعریف کنیم که علاوه بر این گسترش می یابد. برای یک نقطه P بر روی منحنی بیضوی ، اگر K یک عدد کامل باشد ، سپس KP = P + P + P +… + P (K). توجه داشته باشید که K در این حالت گاهی به طور گیج کننده ای "نماینده" خوانده می شود.

ایجاد یک کلید عمومی

با شروع یک کلید خصوصی به شکل یک عدد k به طور تصادفی تولید شده ، ما آن را با یک نقطه از پیش تعیین شده روی منحنی به نام نقطه ژنراتور G ضرب می کنیم تا نقطه دیگری را در جایی دیگر روی منحنی تولید کنیم ، که کلید عمومی مربوطه K است. نقطه ژنراتور به عنوان بخشی از استاندارد SECP256K1 مشخص شده است و همیشه برای همه کلیدهای بیت کوین یکسان است:

upper K equals k asterisk upper G

جایی که K کلید خصوصی است ، G نقطه ژنراتور است و K کلید عمومی حاصل است ، یک نقطه روی منحنی. از آنجا که نقطه ژنراتور همیشه برای همه کاربران بیت کوین یکسان است ، یک کلید خصوصی k ضرب شده با G همیشه منجر به همان کلید عمومی k خواهد شد. رابطه بین k و k ثابت است ، اما فقط از یک جهت ، از k تا k قابل محاسبه است. به همین دلیل است که یک آدرس بیت کوین (مشتق شده از k) با هر کسی به اشتراک گذاشته می شود و کلید خصوصی کاربر (K) را فاش نمی کند.

یک کلید خصوصی را می توان به یک کلید عمومی تبدیل کرد ، اما یک کلید عمومی را نمی توان به یک کلید خصوصی تبدیل کرد زیرا ریاضی فقط به یک روش کار می کند.

با اجرای ضرب منحنی بیضوی ، کلید خصوصی K را که قبلاً تولید شده است ، می گیریم و آن را با نقطه ژنراتور G چند برابر می کنیم تا کلید عمومی K را پیدا کنیم:

کلید عمومی K به عنوان یک نقطه k = (x ، y) تعریف شده است:

برای تجسم ضرب یک نقطه با یک عدد صحیح ، ما از منحنی بیضوی ساده تر بر روی اعداد واقعی استفاده خواهیم کرد - به یاد داشته باشید ، ریاضی یکسان است. هدف ما پیدا کردن چند کیلوگرم نقطه ژنراتور G است که همان اضافه کردن G به خودش است ، K Times در یک ردیف. در منحنی های بیضوی ، اضافه کردن یک نکته به خود ، معادل ترسیم یک خط مماس بر روی نقطه و یافتن جایی است که مجدداً منحنی را در آن قرار می دهد ، سپس آن نقطه را روی محور x بازتاب می دهد.

شکل 4-4 روند استخراج G ، 2G ، 4G را به عنوان یک عمل هندسی روی منحنی نشان می دهد.

بیشتر پیاده سازی های بیت کوین از کتابخانه رمزنگاری OpenSSL برای انجام ریاضیات منحنی بیضوی استفاده می کنند. به عنوان مثال ، برای استخراج کلید عمومی ، از تابع EC_POINT_MUL () استفاده می شود.

ecc_illustrated

شکل 4-4. رمزنگاری منحنی بیضوی: تجسم ضرب یک نقطه g توسط یک عدد صحیح k بر روی منحنی بیضوی

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

یک آدرس بیت کوین مجموعه ای از رقم ها و شخصیت هایی است که می تواند با هر کسی که می خواهد برای شما پول بفرستد به اشتراک گذاشته شود. آدرس های تولید شده از کلیدهای عمومی شامل مجموعه ای از اعداد و حروف است که از رقم "1." شروع می شوددر اینجا نمونه ای از آدرس بیت کوین وجود دارد:

آدرس بیت کوین همان چیزی است که معمولاً در یک معامله به عنوان "گیرنده" وجوه ظاهر می شود. اگر یک معامله بیت کوین را با یک چک کاغذ مقایسه کنیم ، آدرس بیت کوین ذینفع است ، این همان چیزی است که ما پس از "پرداخت به سفارش" روی خط می نویسیم. در مورد بررسی مقاله ، این ذینفع گاهی می تواند نام دارنده حساب بانکی باشد ، اما همچنین می تواند شرکت ها ، موسسات یا حتی پول نقد را نیز در بر بگیرد. از آنجا که چک های کاغذی نیازی به مشخص کردن یک حساب کاربری ندارند ، بلکه از یک نام انتزاعی به عنوان گیرنده وجوه استفاده می کنند ، آنها ابزارهای پرداخت بسیار انعطاف پذیر هستند. معاملات بیت کوین از انتزاع مشابهی ، آدرس بیت کوین استفاده می کند تا آنها را بسیار انعطاف پذیر کند. یک آدرس بیت کوین می تواند صاحب یک جفت کلید خصوصی/عمومی باشد ، یا می تواند چیز دیگری مانند اسکریپت پرداخت را نشان دهد ، همانطور که در "پرداخت به اسکریپت-هاش (P2SH)" خواهیم دید. در حال حاضر ، بیایید مورد ساده ، یک آدرس بیت کوین را که نشان دهنده و از آن است ، یک کلید عمومی را بررسی کنیم.

آدرس بیت کوین با استفاده از هشنگ رمزنگاری یک طرفه از کلید عمومی گرفته می شود."الگوریتم هشدار" یا به سادگی "الگوریتم هش" یک عملکرد یک طرفه است که اثر انگشت یا "هش" از یک ورودی به اندازه دلخواه را تولید می کند. توابع هش رمزنگاری به طور گسترده در بیت کوین مورد استفاده قرار می گیرد: در آدرس های بیت کوین ، در آدرس های اسکریپت و در الگوریتم اثبات معدن کار. الگوریتم های مورد استفاده برای ایجاد آدرس بیت کوین از یک کلید عمومی عبارتند از: الگوریتم هش ایمن (SHA) و پیام ارزیابی اولیه یکپارچگی Race Digest (RIPEMD) ، به طور خاص SHA256 و RIPEMD160.

با شروع کلید عمومی K ، ما هش SHA256 را محاسبه می کنیم و سپس هش RIPEMD160 نتیجه را محاسبه می کنیم و یک شماره 160 بیتی (20 بایت) تولید می کنیم:

upper A equals upper R upper I upper P upper E upper M upper D Baseline 160 left-parenthesis upper S upper H upper A Baseline 256 left-parenthesis upper K right-parenthesis right-parenthesis

جایی که K کلید عمومی است و A آدرس بیت کوین حاصل است.

یک آدرس بیت کوین با یک کلید عمومی یکسان نیست. آدرس های بیت کوین با استفاده از یک عملکرد یک طرفه از یک کلید عمومی گرفته می شوند.

آدرس های بیت کوین تقریباً همیشه به عنوان "Base58Check" رمزگذاری می شوند (به "رمزگذاری Base58 و Base58Check" مراجعه کنید) ، که از 58 کاراکتر (یک سیستم شماره Base58) و یک چک برای کمک به خوانایی انسان ، جلوگیری از ابهام و محافظت در برابر خطاها در رونویسی آدرس و ورود استفاده می کند. بشرBase58Check همچنین در بسیاری از روشهای دیگر در بیت کوین استفاده می شود ، هر زمان که نیاز به کاربر برای خواندن و رونویسی صحیح یک شماره ، مانند آدرس بیت کوین ، یک کلید خصوصی ، یک کلید رمزگذاری شده یا هش اسکریپت وجود دارد. در بخش بعدی مکانیک رمزگذاری و رمزگشایی Base58Check و بازنمودهای حاصل را بررسی خواهیم کرد. شکل 4-5 تبدیل یک کلید عمومی به یک آدرس بیت کوین را نشان می دهد.

pubkey_to_address

شکل 4-5. کلید عمومی آدرس بیت کوین: تبدیل یک کلید عمومی به آدرس بیت کوین

رمزگذاری BASE58 و BASE58CHECK

به منظور نشان دادن اعداد طولانی به روشی جمع و جور ، با استفاده از نمادهای کمتری ، بسیاری از سیستم های رایانه ای از بازنمایی های مختلط و با پایه (یا radix) بالاتر از 10 استفاده می کنند. به عنوان مثال ، در حالی که سیستم اعشاری سنتی از 10 عدد 0 تا 9 استفاده می کند. سیستم شش ضلعی از 16 استفاده می کند ، با حروف A از طریق F به عنوان شش نماد اضافی. تعدادی که در قالب شش ضلعی نشان داده شده است کوتاهتر از بازنمایی اعشاری معادل است. نمایندگی حتی جمع و جور ، Base64 از 26 حرف کوچک ، 26 حرف بزرگ ، 10 عدد و 2 کاراکتر دیگر مانند " +" و "/" برای انتقال داده های باینری از طریق رسانه های مبتنی بر متن مانند ایمیل استفاده می کند. Base64 بیشتر برای اضافه کردن پیوست های باینری به ایمیل استفاده می شود. Base58 یک قالب رمزگذاری باینری مبتنی بر متن است که برای استفاده در بیت کوین ساخته شده و در بسیاری از ارزهای رمزنگاری شده استفاده می شود. این تعادل بین بازنمایی جمع و جور ، خوانایی و تشخیص خطا و پیشگیری وجود دارد. Base58 زیر مجموعه ای از Base64 است ، با استفاده از حروف و اعداد حداکثر و کوچک ، اما حذف برخی از شخصیت هایی که غالباً برای یکدیگر اشتباه می شوند و هنگام نمایش در قلم های خاص می توانند یکسان باشند. به طور خاص ، Base58 Base64 بدون 0 (شماره صفر) ، O (سرمایه O) ، L (پایین L) ، I (سرمایه I) و نمادهای " +" و "/" است. یا به عبارت ساده تر ، این مجموعه ای از حروف و اعداد کوچک و بزرگ بدون چهار (0 ، O ، L ، I) است که فقط ذکر شده است. مثال 4-2 الفبای کامل Base58 را نشان می دهد.

مثال 4-2. الفبای پایه بیت کوین

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

برای تبدیل داده ها (یک عدد) به یک فرمت Base58Check ، ابتدا پیشوند را به داده ها به نام "نسخه بایت" اضافه می کنیم که به راحتی نوع داده های رمزگذاری شده را شناسایی می کند. به عنوان مثال ، در مورد آدرس بیت کوین ، پیشوند صفر است (0x00 در هگز) ، در حالی که پیشوند مورد استفاده در هنگام رمزگذاری یک کلید خصوصی 128 (0x80 در هگز) است. لیستی از پیشوندهای نسخه مشترک در جدول 4-1 نشان داده شده است.

در مرحله بعد ، ما چک "Double-Sha" را محاسبه می کنیم ، به این معنی که ما دو بار الگوریتم Hash-Hash SHA256 را دو بار در نتیجه قبلی (پیشوند و داده) اعمال می کنیم:

از هش 32 بایت (هش-هاش) حاصل ، ما فقط چهار بایت اول را می گیریم. این چهار بایت به عنوان کد بررسی خطا یا چک کار می کنند. چک تا پایان به هم پیوسته (ضمیمه شده) است.

نتیجه از سه مورد تشکیل شده است: پیشوند ، داده ها و چک. این نتیجه با استفاده از الفبای Base58 که قبلاً شرح داده شده رمزگذاری شده است. شکل 4-6 روند رمزگذاری Base58Check را نشان می دهد.

Base58CheckEncoding

شکل 4-6. رمزگذاری BASE58CHECK: یک فرمت Base58 ، نسخه و فرمت شده برای رمزگذاری داده های بیت کوین به طور واضح

در بیت کوین ، بسیاری از داده های ارائه شده به کاربر ، Base58Check-Enceded است تا آن را جمع و جور ، خواندن آسان و تشخیص آسان خطاها کند. پیشوند نسخه در رمزگذاری Base58Check برای ایجاد قالبهای قابل تشخیص به راحتی استفاده می شود ، که هنگام رمزگذاری در Base58 شامل شخصیت های خاص در ابتدای بار رمزگذاری شده Base58Check است. این شخصیت ها شناسایی نوع داده های رمزگذاری شده و نحوه استفاده از آن را برای انسان آسان می کند. این همان چیزی است که به عنوان مثال ، یک آدرس بیت کوین رمزگذاری شده Base58Check را که با 1 از WIF کلید خصوصی رمزگذاری شده Base58Check شروع می شود ، متمایز می کند که با یک 5. پیشوند نسخه نمونه و شخصیت های BASE58 حاصل در جدول 4-1 نشان داده شده است.

آدرس TestNet بیت کوین

Wif کلید خصوصی

کلید خصوصی رمزگذاری شده BIP-38

BIP-32 کلید عمومی گسترده

قالبهای کلیدی

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

قالب های کلید خصوصی

کلید خصوصی را می توان در تعدادی از قالب های مختلف نشان داد که همه آنها با همان شماره 256 بیتی مطابقت دارند. جدول 4-2 سه قالب مشترک را نشان می دهد که برای نشان دادن کلیدهای خصوصی استفاده می شود. از قالب های مختلف در شرایط مختلف استفاده می شود. قالبهای باینری hexadecimal و خام در داخل در نرم افزار استفاده می شود و بندرت به کاربران نشان داده می شود. WIF برای واردات/صادرات کلیدها بین کیف پول و اغلب در بازنمایی کد QR (بارکد) از کلیدهای خصوصی استفاده می شود.

64 رقم شش ضلعی

رمزگذاری BASE58CHECK: BASE58 با پیشوند نسخه چک 128- و 32 بیتی

همانطور که در بالا ، با پسوند اضافه شده 0x01 قبل از رمزگذاری

جدول 4-3 کلید خصوصی تولید شده در این سه قالب را نشان می دهد.

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

ما از دستور wif-to-ec از Bitcoin Explorer استفاده می کنیم (به پیوست F مراجعه کنید) تا نشان دهیم که هر دو کلید WIF یک کلید خصوصی را نشان می دهند:

رمزگشایی از Base58Check

دستورات Bitcoin Explorer (به پیوست F مراجعه کنید) نوشتن اسکریپت های پوسته و "لوله های" خط فرمان را که کلیدها ، آدرس ها و معاملات بیت کوین را دستکاری می کنند ، آسان می کند. می توانید از Bitcoin Explorer برای رمزگشایی قالب Base58Check در خط فرمان استفاده کنید.

ما از دستور Base58Check-decode برای رمزگشایی کلید فشرده نشده استفاده می کنیم:

نتیجه حاوی کلید به عنوان Payload ، پیشوند نسخه WIF 128 و یک چک است.

توجه کنید که "بار" کلید فشرده شده با پسوند 01 ضمیمه می شود ، و این نشان می دهد که کلید عمومی مشتق شده فشرده می شود:

رمزگذاری از hex به base58check

برای رمزگذاری در Base58Check (برعکس دستور قبلی) ، ما از دستور Base58Check-ENCODE از Bitcoin Explorer استفاده می کنیم (به پیوست F مراجعه کنید) و کلید خصوصی HEX را ارائه می دهیم ، و به دنبال آن پیشوند نسخه WIF 128:

رمزگذاری از hex (کلید فشرده شده) به Base58Check

برای رمزگذاری در Base58Check به عنوان یک کلید خصوصی "فشرده شده" (به "کلیدهای خصوصی فشرده شده" مراجعه کنید) ، ما پسوند 01 را به کلید hex اضافه می کنیم و سپس مانند بخش قبل رمزگذاری می کنیم:

قالب تحت فشار WIF با "K." شروع می شوداین نشان می دهد که کلید خصوصی در داخل دارای پسوند "01" است و فقط برای تولید کلیدهای عمومی فشرده استفاده می شود (به "کلیدهای عمومی فشرده" مراجعه کنید).

قالب های کلیدی عمومی

کلیدهای عمومی نیز به روش های مختلف ، معمولاً به عنوان کلیدهای عمومی فشرده یا فشرده ارائه می شوند.

همانطور که قبلاً دیدیم ، کلید عمومی نقطه ای از منحنی بیضوی متشکل از یک جفت مختصات (x ، y) است. معمولاً با پیشوند 04 و به دنبال آن دو شماره 256 بیتی ارائه می شود: یکی برای مختصات x از نقطه ، دیگری برای مختصات Y. از پیشوند 04 برای تمایز کلیدهای عمومی فشرده نشده از کلیدهای عمومی فشرده شده که با 02 یا 03 شروع می شود ، استفاده می شود.

در اینجا کلید عمومی تولید شده توسط کلید خصوصی که قبلاً ایجاد کردیم ، به عنوان مختصات X و Y نشان داده شده است:

در اینجا همان کلید عمومی به عنوان یک شماره 520 بیتی (130 رقم هگز) با پیشوند 04 و به دنبال آن مختصات x و سپس y نشان داده شده است ، به عنوان 04 x y:

کلیدهای عمومی فشرده

کلیدهای عمومی فشرده شده برای کاهش اندازه معاملات به بیت کوین معرفی شدند و فضای دیسک را روی گره هایی که پایگاه داده blockchain بیت کوین را ذخیره می کنند ، حفظ کنند. بیشتر معاملات شامل کلید عمومی است که برای تأیید اعتبار مالک و خرج کردن بیت کوین لازم است. هر کلید عمومی به 520 بیت (پیشوند + x + y) نیاز دارد ، که در صورت ضرب در چند صد معاملات در هر بلوک یا ده ها هزار معامله در روز ، مقدار قابل توجهی از داده ها را به blockchain اضافه می کند.

همانطور که در بخش "کلیدهای عمومی" دیدیم ، یک کلید عمومی یک نقطه (x ، y) در منحنی بیضوی است. از آنجا که منحنی یک عملکرد ریاضی را بیان می کند ، یک نقطه روی منحنی یک راه حل برای معادله است و بنابراین ، اگر مختصات X را بشناسیم می توانیم با حل معادله y 2 mod p = (x 3 + 7) مختصات y را محاسبه کنیم. mod p. این امر به ما امکان می دهد فقط مختصات X از نقطه کلید عمومی را ذخیره کنیم ، مختصات Y را حذف کرده و اندازه کلید و فضای مورد نیاز برای ذخیره آن را با 256 بیت کاهش دهیم. کاهش تقریباً 50 درصدی در هر معامله ، داده های زیادی را که در طول زمان ذخیره می شوند ، می افزاید!

در حالی که کلیدهای عمومی فشرده نشده دارای پیشوند 04 هستند ، کلیدهای عمومی فشرده شده با پیشوند 02 یا 03 شروع می شوند. بیایید ببینیم که چرا دو پیشوند ممکن وجود دارد: زیرا سمت چپ معادله Y 2 است ، محلول y یک ریشه مربع است که می تواند یک مقدار مثبت یا منفی داشته باشد. از لحاظ بصری ، این بدان معنی است که مختصات حاصل از آن می تواند بالاتر یا زیر محور x باشد. همانطور که از نمودار منحنی بیضوی در شکل 4-2 مشاهده می کنید ، منحنی متقارن است ، به این معنی که توسط محور x مانند یک آینه منعکس می شود. بنابراین ، در حالی که می توانیم مختصات Y را حذف کنیم ، باید علامت y (مثبت یا منفی) را ذخیره کنیم. یا به عبارت دیگر ، ما باید به خاطر داشته باشیم که اگر بالاتر یا پایین تر از محور X باشد زیرا هر یک از این گزینه ها یک نقطه متفاوت و یک کلید عمومی متفاوت را نشان می دهد. هنگام محاسبه منحنی بیضوی در حسابی باینری در قسمت محدود مرتبه P Prime P ، مختصات Y یکنواخت یا عجیب است ، که مطابق با علائم مثبت/منفی است که قبلاً توضیح داده شد. بنابراین ، برای تمایز بین دو مقدار احتمالی y ، ما یک کلید عمومی فشرده شده را با پیشوند 02 ذخیره می کنیم اگر y یکنواخت باشد ، و 03 اگر عجیب باشد ، اجازه می دهد تا نرم افزار به درستی مختصات Y را از مختصات x استنباط کند و از هم جدا شودکلید عمومی مختصات کامل نکته. فشرده سازی کلیدی عمومی در شکل 4-7 نشان داده شده است.

در اینجا همان کلید عمومی تولید شده که قبلاً تولید شده است ، به عنوان یک کلید عمومی فشرده شده در 264 بیت (66 رقم هگز) ذخیره شده است با پیشوند 03 که نشان می دهد مختصات y عجیب است:

این کلید عمومی فشرده با همان کلید خصوصی مطابقت دارد ، به این معنی که از همان کلید خصوصی تولید می شود. با این حال ، به نظر می رسد متفاوت از کلید عمومی فشرده نشده است. مهمتر از همه ، اگر این کلید عمومی فشرده شده را با استفاده از عملکرد دوتایی (RIPEMD160 (SHA256 (k))) به آدرس بیت کوین تبدیل کنیم ، این یک آدرس بیت کوین متفاوت تولید می کند. این می تواند گیج کننده باشد ، زیرا این بدان معنی است که یک کلید خصوصی واحد می تواند یک کلید عمومی را که در دو قالب مختلف (فشرده و فشرده نشده) بیان شده است که دو آدرس مختلف بیت کوین تولید می کند ، تولید کند. با این حال ، کلید خصوصی برای هر دو آدرس بیت کوین یکسان است.

pubkey_compression

شکل 4-7. فشرده سازی کلیدی عمومی

کلیدهای عمومی فشرده شده به تدریج به پیش فرض در بین مشتریان بیت کوین تبدیل می شوند ، که تأثیر قابل توجهی در کاهش اندازه معاملات و در نتیجه blockchain دارد. با این حال ، همه مشتری ها هنوز از کلیدهای عمومی فشرده پشتیبانی نمی کنند. مشتری های جدیدتر که از کلیدهای عمومی فشرده پشتیبانی می کنند ، باید معاملات مشتری های مسن را که از کلیدهای عمومی فشرده پشتیبانی نمی کنند ، حساب کنند. این امر به ویژه در مواردی مهم است که یک برنامه کیف پول واردات کلیدهای خصوصی را از یک برنامه دیگر کیف پول بیت کوین وارد می کند ، زیرا کیف پول جدید برای یافتن معاملات مربوط به این کلیدهای وارداتی نیاز به اسکن blockchain دارد. کدام آدرس های بیت کوین باید کیف پول بیت کوین را برای آن اسکن کند؟آدرس های بیت کوین تولید شده توسط کلیدهای عمومی فشرده یا آدرس های بیت کوین تولید شده توسط کلیدهای عمومی فشرده؟هر دو آدرس بیت کوین معتبر هستند و توسط کلید خصوصی قابل امضا هستند ، اما آدرس های مختلفی هستند!

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

کلیدهای خصوصی فشرده

از قضا ، اصطلاح "کلید خصوصی فشرده" یک نادرست است ، زیرا هنگامی که یک کلید خصوصی به عنوان فشرده WIF صادر می شود ، در واقع یک بایت طولانی تر از یک کلید خصوصی "فشرده" است. دلیل این امر این است که کلید خصوصی دارای پسوند یک بایت اضافه شده است (به عنوان 01 در HEX در جدول 4-4 نشان داده شده است) ، که نشان می دهد کلید خصوصی از یک کیف پول جدیدتر است و فقط باید برای تولید کلیدهای عمومی فشرده استفاده شود. کلیدهای خصوصی خود فشرده نیستند و نمی توانند فشرده شوند. اصطلاح "کلید خصوصی فشرده" واقعاً به معنای "کلید خصوصی است که فقط کلیدهای عمومی فشرده شده از آن حاصل می شود" ، در حالی که "کلید خصوصی فشرده نشده" واقعاً به معنای "کلید خصوصی است که فقط کلیدهای عمومی فشرده نشده از آن استفاده می شود."شما فقط باید از قالب صادرات به عنوان "WIF فشرده شده" یا "WIF" استفاده کنید و از خود کلید خصوصی به عنوان "فشرده" یاد نکنید تا از سردرگمی بیشتر جلوگیری شود < pan> از قضا ، اصطلاح "کلید خصوصی فشرده" یک نادرست است ،زیرا وقتی یک کلید خصوصی به عنوان فشرده WIF صادر می شود ، در واقع یک بایت طولانی تر از یک کلید خصوصی "فشرده" است. دلیل این امر این است که کلید خصوصی دارای پسوند یک بایت اضافه شده است (به عنوان 01 در HEX در جدول 4-4 نشان داده شده است) ، که نشان می دهد کلید خصوصی از یک کیف پول جدیدتر است و فقط باید برای تولید کلیدهای عمومی فشرده استفاده شود. کلیدهای خصوصی خود فشرده نیستند و نمی توانند فشرده شوند. اصطلاح "کلید خصوصی فشرده" واقعاً به معنای "کلید خصوصی است که فقط کلیدهای عمومی فشرده شده از آن حاصل می شود" ، در حالی که "کلید خصوصی فشرده نشده" واقعاً به معنای "کلید خصوصی است که فقط کلیدهای عمومی فشرده نشده از آن استفاده می شود."شما فقط باید از قالب صادرات به عنوان "WIF فشرده شده" یا "WIF" یاد کنید و از خود کلید خصوصی به عنوان "فشرده" یاد نکنید تا از سردرگم بیشتر جلوگیری شود ، اصطلاح "کلید خصوصی فشرده" یک نادرست است ، زیرا وقتی یک خصوصی استکلید به عنوان فشرده سازی WIF صادر می شود ، در واقع یک بایت طولانی تر از یک کلید خصوصی "فشرده نشده" است. دلیل این امر این است که کلید خصوصی دارای پسوند یک بایت اضافه شده است (به عنوان 01 در HEX در جدول 4-4 نشان داده شده است) ، که نشان می دهد کلید خصوصی از یک کیف پول جدیدتر است و فقط باید برای تولید کلیدهای عمومی فشرده استفاده شود. کلیدهای خصوصی خود فشرده نیستند و نمی توانند فشرده شوند. اصطلاح "کلید خصوصی فشرده" واقعاً به معنای "کلید خصوصی است که فقط کلیدهای عمومی فشرده شده از آن حاصل می شود" ، در حالی که "کلید خصوصی فشرده نشده" واقعاً به معنای "کلید خصوصی است که فقط کلیدهای عمومی فشرده نشده از آن استفاده می شود."شما فقط باید از قالب صادرات به عنوان "WIF فشرده شده" یا "WIF" استفاده کنید و برای جلوگیری از سردرگمی بیشتر به خود کلید خصوصی به عنوان "فشرده" مراجعه نکنید.

معامله ارز ماتیک...
ما را در سایت معامله ارز ماتیک دنبال می کنید

برچسب : نویسنده : لیلا حاتمی بازدید : 48 تاريخ : دوشنبه 7 فروردين 1402 ساعت: 18:12