کیف پول HD چیست؟ هر آنچه که باید در مورد کیف پول اچ دی بدانید!
تاریخ انتشار: 29 مرداد 1401 | آخرین بهروزرسانی: 3 بهمن 1402
زمان مطالعه:
9 دقیقه
کیف پولهای اچ دی «HD» نمونهای از کیف پولهای دیجیتالی است که برای نگهداری ارزهای یجیتال مورد استفاده قرار میگیرد، اما با سایر کیف پولهای ارزهای دیجیتال تفاوت دارد و این تفاوت به تولید کلیدهای عمومی و خصوصی در این کیف پولها مربوط میشود.
در ادامه ضمن ارائه توضیحات بیشتر در مورد کیف پول اچ دی، شیوه تولید کلید در آنها را بررسی خواهیم کرد. سپس به شما خواهیم گفت که کدام کیف پولهای نرمافزاری و سختافزاری موجود از نوع اچ دی هستند.
پس اگر شما نیز عنوان کیف پول HD را شنیدهاید و میخواهید بیشتر درباره آن بدانید، با ما همراه شوید.
کیف پول اچ دی چیست و چه تفاوتی با سایر کیف پولها دارد؟
کیف پول اچ دی به کیف پولهای قطعی سلسله مراتبی گفته میشود. این نوع کیف پولها، کلیدها و آدرسهای خود را از یک منبع تولید میکنند. در وصف قابلیتهای این نوع کیف پولها میتوان گفت:
قطعی یا دترمینستک «Deterministic» به این معنی است که کلیدها و آدرسها همیشه در هر زمان به یک شکل تولید میشوند.
سلسله مراتبی یا هایراتکل «Hierarchical» به این معنی است که کلیدها و آدرسها را میتوان در یک ساختار درختی سازماندهی کرد.
اما بهترین نکته در مورد کیف پول اچ دی که آن را از سایر کیف پولها متمایز میکند این است که در این کیف پولها میتوانید کلیدهای عمومی جدید را بدون دانستن کلیدهای خصوصی آنها تولید کنید. در سایر کیف پولها، کلیدهای عمومی و خصوصی ثابت هستند و به صورت دو رشته کد جداگانه به کاربر ارائه میشود.
کلید عمومی برای دریافت ارزهای دیجیتال و کلید خصوصیهم برای ارسال ارزهای دیجیتال مورد استفاده قرار میگیرد. حالا در کیف پول اچ دی میتوان از روی یک کلید عمومی، کلیدهای عمومی دیگری را تولید کرد!
چرا از کیف پول HD استفاده کنیم؟
طبیعتاً این سؤال برای کاربران ایجاد میشود که چرا باید از کیف پول اچ دی استفاده کنند، در حالیکه انواع کیف پولهای متفاوت وجود دارد. به همین خاطر برای این که بدانید چرا باید از این کیف پولها استفاده کرد، به موارد زیر دقت نمایید:
پشتیبانگیری تکی «Single Backup»
در یک کیف پول اولیه، هر بار که می خواستید مقداری بیت کوین دریافت کنید، جفت کلید خصوصی و کلید عمومی را به طور مستقل تولید می کنید. این کار کاملاً خوب است، اما به این معنی است که هر بار که پرداخت جدیدی دریافت میکنید، باید از کیف پول خود نسخه پشتیبان تهیه کنید.
اما با یک کیف پول قطعی سلسله مراتبی، میتوانید از یک کلمه بازیابی «Seed» برای ایجاد یک کلید خصوصی اصلی استفاده کنید؛ همچنین میتوانید از آن برای تولید میلیاردها کلید خصوصی «کودک» و کلید عمومی استفاده کنید.
بنابراین اکنون تنها چیزی که برای تهیه نسخه پشتیبان نیاز دارید، «Seed» است، زیرا کلید خصوصی اصلی که از آن ایجاد میکنید، همیشه کلیدهای کیف پول شما را به همان شیوه (به طور قطعی) تولید میکند.
سازماندهی «Organization»
نکته جالب دیگر در مورد کیف پولهای قطعی سلسله مراتبی، بخش سلسله مراتبی است.
هر کلید فرزند در کیف پول همچنین میتواند کلیدهای خود را ایجاد کند، به این معنی که میتوانید یک ساختار درختی (یا سلسله مراتب) برای سازماندهی کلیدهای کیف خود ایجاد کنید. برای مثال، میتوانید از قسمتهای مختلف درخت برای «حسابهای» مختلف استفاده کنید.
تولید کلیدهای عمومی بهصورت مستقل «Generating Public keys independently»
اما نکته جالب در مورد کلید خصوصی اصلی این است که دارای یک کلید عمومی اصلی متناظر است و این میتواند همان کلیدهای عمومی فرزند را بدون اطلاع از کلیدهای خصوصی تولید کند.
بنابراین میتوانید کلید عمومی اصلی را به رایانه دیگری (به عنوان مثال، سرور فروشگاه اینترنتی) برای ایجاد آدرسهای دریافتی جدید بفرستید، بدون اینکه نگران دزدیده شدن کلیدهای خصوصی در صورت هک شدن سرور باشید.
این برای مواردی مانند کیف پولهای سختافزاری که میخواهید کلیدهای خصوصی خود را روی یک دستگاه امن نگه دارید، مفید است، اما همچنین میخواهید آدرسهای جدیدی را در رایانه دیگری برای دریافت پرداختها ایجاد کنید. این ممکن است جادویی به نظر برسد، اما فقط ریاضیات است.
کیف پولهای HD چگونه کار میکنند؟
چگونگی کارکرد انواع کیف پول اچ دی را میتوان در تولید کلیدهای عمومی و خصوصی از طریق مفاهیم زیر بررسی کرد:
سیید «Seed»
برای راهاندازی یک کیف پول HD باید 64 بایت تصادفی تولید کنید که ما از آنها به عنوان پایه استفاده خواهیم کرد که به آن سیید گفته میشود.
برای تهیه کیف پول HD، میتوانیم از یک جمله یادگاری کاربرپسندتر استفاده کنیم. به عنوان مثال، کلمه بازیابی بالا از جمله یادگاری زیر ایجاد شده است:
کلمات یادگاری: مبادله – ورود – ریون – دعوت – اجاق گاز – ادعای سرعت – کلیک – توپ – باز – کردن – قفل – نیروی – بی توجهی
جمله یادگاری «Mnemonic Ssentence»، کد یادگاری «Mnemonic Code»، عبارات بازیابی«Seed Phrase» راهی برای نمایش یک عدد بزرگ به صورت تصادفی به عنوان دنبالهای از کلمات است که ذخیره آن را برای انسان آسانتر میکند.
سپس از این کلمات برای ایجاد سیید استفاده میشود که میتواند برای تولید کلیدهای توسعه یافته در یک کیف پول قطعی سلسله مراتبی استفاده شود. (به عبارت دیگر، کیف پول شما باید از یک عدد تصادفی بزرگ برای تولید همه کلیدها و آدرسهای شما استفاده کند؛ بنابراین یک جمله یادگاری راهی مناسب برای ذخیره این عدد بزرگ را در اختیار ما میگذارد!)
برای دریافت اطلاعات بیشتر درباره ساختار کلمات یادگاری و چگونگی ذخیره کدها به واسطهی آنها میتوانید به صفحه – https://learnmeabitcoin.com/technical/mnemonic – مراجعه نمایید.
کلید خصوصی اصلی «Master Private Key»
کلید اصلی «Master Key» با قرار دادن دانه از طریق یک تابع هش (بهنام HMAC) برای تولید مجموعهای دیگر از 64 بایت ایجاد میشود.
ما از این 64 بایت برای ایجاد کلید خصوصی توسعه یافته اصلی خود استفاده میکنیم که:
32 بایت اول کلید خصوصی است
32 بایت آخر کد زنجیرهای است
کد زنجیرهای فقط 32 بایت اضافی است که با کلید خصوصی جفت میکنیم تا چیزی را ایجاد کنیم که آن را کلید توسعه یافته مینامیم. اما چرا دانه را هش میکنیم؟ ما میتوانیم مستقیماً از دانه 64 بایتی برای ایجاد کلید خصوصی توسعهیافته اصلی استفاده کنیم.
با این حال، کلیدهای توسعه یافته فرزند آینده با استفاده از تابع HMAC ایجاد میشوند، بنابراین خوب است که با نحوه ایجاد هر دو سازگار باشیم.
کلیدهای خصوصی کودک از یک کلید خصوصی توسعه یافته با قرار دادن محتویات آن (کلید خصوصی و کد زنجیره ای) از طریق عملکرد HMAC تولید میشوند. ما همچنین هر بار یک عدد شاخص اضافه میکنیم که به ما امکان میدهد چندین کلید فرزند را از یک کلید اصلی ایجاد کنیم.
(البته با تغییر ایندکس، نتیجهای کاملاً متفاوت از تابع هش دریافت میشود!) بنابراین اساساً کلیدهای خصوصی جدید با هش کردن کلید خصوصی توسعهیافته اصلی با یک شماره فهرست تولید میشوند.
جالب است بدانید که یک کلید توسعه یافته میتواند 2,147,483,648 از این کودکان را ایجاد کند!!
کلیدهای کودک (پیشرفته) «Child Keys (Advanced)»
حالا این قسمت سرگرم کننده است. اگر بخواهیم یک کلید خصوصی توسعه یافته برای ایجاد کلیدهای خصوصی فرزند و کلیدهای عمومی بخواهیم، اما همچنین یک کلید عمومی توسعه یافته متناظر برای آن بخواهیم که بتواند همان کلیدهای عمومی فرزند را ایجاد کند؟
از پیوند بلاکچین و هوش مصنوعی، به پول میرسیم؟
جوابت تو شماره ۱۴ ماهنامه دامیننسه!
کلید عمومی توسعه یافته
خوب اول از همه باید کلید عمومی توسعه یافته را بسازیم. این فقط کلید عمومی از کلید خصوصی توسعه یافته، همراه با همان زنجیره است
کودکان کلید خصوصی توسعه یافته «Extended Private Key Children»
کلید خصوصی توسعه یافته اصلی با قرار دادن محتویات کلید عمومی توسعه یافته مربوطه از طریق عملکرد HMAC و افزودن نتیجه به کلید خصوصی اصلی، کلیدهای خصوصی کودک را ایجاد میکند.
کودکان کلید عمومی گسترده «Extended Public Key Children»
کلید عمومی توسعه یافته اصلی با قرار دادن محتویات آن از طریق عملکرد HMAC و افزودن نتیجه به کلیدهای عمومی اصلی، کلیدهای عمومی فرزند جدیدی ایجاد میکند.
و از آنجایی که کلید خصوصی اصلی و کلیدهای عمومی به همان میزان تنظیم شدهاند، کلیدهای خصوصی فرزند و کلیدهای عمومی جدید مطابقت دارند.
یک کلید توسعه یافته میتواند 2,147,483,648 از این کودکان را ایجاد کند. بنابراین یک کلید توسعه یافته میتواند 4294967296 کودک را در مجموع مشتق کند (2،147،483،648 پیشرفته و 2،147،483،648 پایه).
چرا کلیدها را با کد زنجیرهای گسترش میدهیم؟
با افزودن یک کد زنجیرهای به یک کلید، به این معنی است که کلیدهای فرزند تنها از کلید مشتق نشدهاند. به عنوان مثال، ما ممکن است از یکی از کلیدهای عمومی در درخت برای دریافت پرداخت استفاده کنیم که آن را در بلاکچین قابل مشاهده میکند. اگر از کدهای زنجیرهای استفاده نمیکردیم، هر کسی میتوانست این کلید عمومی را بگیرد و همه فرزندان را برای آن استخراج کند.
اما با استفاده از کدهای زنجیرهای (که به بلاکچین ضربه نمیزند)، افراد دیگر نمیتوانند فرزندان را از کلید عمومی استخراج کنند.
بنابراین به عبارت دیگر، کد زنجیرهای برخی از دادههای مخفی اضافی است که فرزندان یک کلید را از استخراج محافظت میکند. به یاد داشته باشید هنگامی که یک کلید معمولی را با یک کد زنجیرهای اضافی جفت میکنیم، به آن به عنوان «کلید توسعه یافته» اشاره میکنیم.
آیا کلیدهای کیف پول HD متصل هستند؟
خیر، شما نمیدانید که هر دو کلید عمومی (یا آدرس) در درخت بخشی از یک کیف پول اچ دی هستند (یعنی از همان کلید توسعه یافته اصلی مشتق شدهاند).
حتی اگر کلیدهای فرزند به روشی خاص از کلید توسعه یافته اصلی مشتق شدهاند، خود کلیدهای عمومی واقعی هیچ شباهتی به یکدیگر ندارند. گویی آنها کاملاً مستقل تولید شدهاند!
آیا کلیدهای کیف پول HD ایمن هستند؟
بله، همه کلیدهای خصوصی و کلیدهای عمومی که از کیف پول HD دریافت میکنید به همان اندازه ایمن هستند که گویی آنها را به روش سنتی تولید کردهاید. با این حال، کلیدهای توسعه یافته استفاده شده باید بیشتر ایمن نگهداشته شوند، زیرا هر کسی که به آنها دسترسی دارد میتواند همه فرزندان خود را استخراج کند.
برای مثال، اگر کلید عمومی توسعهیافته اصلی خود را فاش کنید، افراد دیگر میتوانند آدرسهای موجود در کیف پول شما را پیدا کنند. آنها نمیتوانند چیزی را بدزدند زیرا نمیتوانند کلیدهای خصوصی را تولید کنند، اما همچنان میتوانند ببینند که شما چقدر بیتکوین دارید؟!
اما علاوهبر این، نشت یک کلید عمومی توسعهیافته اصلی و هر کلید خصوصی فرزند به کسی اجازه میدهد تا کلید خصوصی توسعهیافته اصلی را محاسبه کند. اگر بتوانند این کار را انجام دهند، میتوانند تمام کلیدهای خصوصی کیف پول را تولید کنند:
بنابراین به طور خلاصه، سعی کنید کلید عمومی توسعه یافته اصلی خود را فاش نکنید. اگر این کار را انجام دهید، افراد دیگر میتوانند تمام آدرسهای موجود در کیف پول شما را پیدا کنند.
اما اگر بخواهید یک کلید خصوصی کودک را نیز فاش کنید، به همان اندازه بد است که کلید خصوصی توسعه یافته اصلی را فاش کنید.
چه کسی ایده کیف پول HD را مطرح کرد؟
گرگوری ماکسول «Gregory Maxwell» با این ایده اولیه روبرو شد که میتوانید کلیدهای عمومی را تغییر دهید تا کلیدهای عمومی جدید را بدون دانستن کلیدهای خصوصی آنها به دست آورید.
مشهورترین کیف پولهای HD کدامند؟
اکثر کیف پولهای مدرن (از سال 2013) بهصورت اچ دی ارائه شدهاند. چند نمونه محبوب آنها عبارتند از: