نحوه ساخت کیف پول رمزنگاری

ساخت وبلاگ

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

مدیریت وجوه ریسک دارد و هدف از این مقاله فقط توضیح مفاهیم فنی در پشت نرم افزار Crypto Wallet است. بسیار توصیه می شود که از یک کیف پول از قبل تنظیم شده با یک کد کد منبع باز و حسابرسی مانند Metamask ، Ledger یا Argent استفاده کنید.

شروع شدن

برای هدف از این نسخه ی نمایشی ، ما یک برنامه ساده Node. js ایجاد خواهیم کرد و از کتابخانه های اتریوم-کریپتگرافی و Ethers. js استفاده خواهیم کرد. با ایجاد یک پوشه خالی جدید به نام My-Crypto-Wallet شروع کنید و به آن بروید. سپس یک پروژه جدید ایجاد کرده و با تایپ کردن وابستگی های لازم را نصب کنید:

برای دنبال کردن ، مثال کامل کار واقع در مخزن Caintlink Smart Proplactions را در زیر پوشه کیف پول Crypto My بررسی کنید.

این همه رمزنگاری است

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

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

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

یک فایل جدید JavaScript را در داخل پروژه خود ایجاد کنید و آن را 01_newAccount. js نامگذاری کنید. بیایید یک تابع ایجاد کنیم تا یک mnemonic تولید شود. پیشنهاد بهبود بیت کوین 39 یا BIP-39 به طور خلاصه ، مشخصاتی برای تولید عبارات Mnemonic یا بذر است. این کار با یک عدد تصادفی ، معروف به آنتروپی شروع می شود ، که نیاز به چند برابر 32 بیت (قدرت ٪ 32 == 0) و بین 128 و 256 بیت طول دارد. آنتروپی 128 بیت به طول یک mnemonic متشکل از 12 کلمه تولید می کند ، در حالی که یک آنتروپی به طول 256 بیت یک منمونیک 24 کلمه تولید می کند. هرچه آنتروپی بزرگتر باشد ، کلمات mnemonic بیشتر تولید می شود و امنیت کیف پول شما بیشتر می شود.

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

BIP-32 مشخصاتی برای ایجاد کیف پول های قطعی سلسله مراتبی (HD) است که در آن می توان از یک کلید واحد برای تولید یک درخت کامل از جفت های کلیدی استفاده کرد. این کلید منفرد به عنوان ریشه درخت عمل می کند و همیشه با همان ترکیب کلمات ، که به عنوان منمونیک یا عبارت بذر نیز شناخته می شود ، تولید می شود. کلید اصلی در واقع تمام کلیدهای خصوصی دیگر را برای حساب ها ایجاد می کند و همه آنها را می توان با این کلید ریشه تک ترمیم کرد. از آنجا که برای انسان راحت تر می تواند مجموعه ای از 12 یا 24 کلمه را به جای یک جریان پیچیده از اعداد و شخصیت های تصادفی به یاد بیاورد ، ما تمایل داریم بگوییم که یک عبارت بذر یک کیف پول را بازیابی می کند ، هنگامی که در واقعیت برای تولید یک کلید ریشه استفاده می شود که می تواند پس از آنیک درخت کلیدهای خصوصی را استخراج کنید.

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

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

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

برای محاسبه آدرس از کلید عمومی ، ما باید الگوریتم هشی Keccak-256 را در کلید عمومی اعمال کنیم و آخرین (حداقل) 20 بایت نتیجه را بگیریم.

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

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

برنامه قبلی یک کیف پول جدید ایجاد می کند. اگر می خواهید آن را با استفاده از mnemonic خود بازیابی کنید ، پرونده جدید ایجاد کنید ، آن را 02_restorewallet. js نامگذاری کنید و کد زیر را بچسبانید:

برای اجرای آن ، گره 02_restorewallet. js و عبارت بذر خود را تایپ کنید.

تفاوت بین کیف پول های گرم و سرد

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

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

برای هدف از این نسخه ی نمایشی ، کلیدهای خود را در یک سیستم فایل در دستگاه شما ذخیره خواهیم کرد. این عملکرد را به پرونده های 01_newAccount. js و 02_restorewallet. js اضافه کنید:

معامله کردن

سرانجام ، اجازه دهید عملکردی برای ارسال سکه های بومی ایجاد کنیم. برای انجام این کار ، ابتدا باید کلید خصوصی حساب خود را از سیستم پرونده خود بخوانیم. سپس ما باید یک شیء کیف پول ethers. js ایجاد کنیم تا کلید و ارائه دهنده خصوصی را به عنوان استدلال منتقل کنیم. ما شبکه را سخت می کنیم تا یک Testnet Goerli باشد ، اما شما بدیهی است که می توانید آن را گسترش داده و با عبور URL برای یک نمونه مشتری محلی blockchain یا یک ارائه دهنده خدمات گره مانند Infura یا Alchemy ، اشیاء ارائه دهنده خود را ایجاد کنید. در مرحله بعد ، ما باید آدرس گیرنده و مبلغ GETH را برای ارسال منتقل کنیم. و سرانجام ، ما یک شیء معامله ایجاد خواهیم کرد و آن را به شبکه پخش می کنیم.

یک فایل جدید به نام 03_send. js ایجاد کنید و کد زیر را بچسبانید.

خلاصه

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

در این مقاله ، شما آموخته اید که چگونه یک کیف پول رمزنگاری اساسی را با استفاده از node. js ، اتریوم-کریپتگرافی و ethers. js تهیه کنید. اگرچه این یک آموزش جالب مهندسی بود ، اما توصیه می شود به جای ایجاد خود از ابتدا ، از راه حل های کیف پول آزمایش شده و اثبات شده استفاده کنید.

برای کسب اطلاعات بیشتر ، به عنوان نمونه های مخزن Smart Contract به ChainLink بروید و شروع به آزمایش با این و پروژه های مثال دیگری کنید.

با مراجعه به jusic. link یا خواندن اسناد در docs. chain. link در مورد chainlink بیشتر بدانید. برای بحث در مورد ادغام ، به یک متخصص مراجعه کنید.

آنالیز فاندامنتال...
ما را در سایت آنالیز فاندامنتال دنبال می کنید

برچسب : نویسنده : اسماعیل داورفر بازدید : <-PostHit-> تاريخ : سه شنبه 1 فروردين 1402 ساعت: 22:45