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

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

کیف پول دقیقاً چه کاری می‌کند؟

کیف پول نرم‌افزار یا دستگاهی است که سه کار انجام می‌دهد:

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

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

کلید خصوصی، کلید عمومی و آدرس؛ سه لایه یک هویت

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

کلید خصوصی: یک عدد تصادفی بسیار بزرگ

کلید خصوصی در بیت‌کوین و اتریوم یک عدد ۲۵۶ بیتی است. اگر آن را در مبنای شانزده بنویسید، ۶۴ کاراکتر از ۰ تا ۹ و A تا F می‌شود؛ چیزی شبیه این (این نمونه ساختگی است، هیچ‌وقت از کلیدی که جایی منتشر شده استفاده نکنید):

`e9873d79c6d87dc0fb6a5778633389f4453213303da61f20bd67fc233aa33262`

تعداد کلیدهای ممکن نزدیک به ۲ به توان ۲۵۶ است؛ عددی حدود ۷۸ رقمی. امنیت کل سیستم به همین بزرگی تکیه دارد: وقتی کلید واقعاً تصادفی ساخته شود، احتمال اینکه کس دیگری تصادفاً به همان عدد برسد آن‌قدر کم است که در عمل صفر حساب می‌شود. نقطه ضعف واقعی، عدد نیست؛ جایی است که آن را نگه می‌دارید.

کلید عمومی: از خصوصی ساخته می‌شود، برعکسش نه

کلید عمومی با یک عملیات ریاضی روی منحنی بیضوی از کلید خصوصی به دست می‌آید. بیت‌کوین و اتریوم هر دو از منحنی‌ای به نام secp256k1 و الگوریتم امضای ECDSA استفاده می‌کنند. ویژگی مهم این عملیات یک‌طرفه بودن آن است: از کلید خصوصی می‌شود کلید عمومی ساخت، اما از کلید عمومی نمی‌شود به کلید خصوصی رسید. برای همین کلید عمومی را بدون نگرانی می‌شود در اختیار شبکه گذاشت.

آدرس: خلاصه کوتاه کلید عمومی

آدرس همان چیزی است که برای دریافت رمزارز به دیگران می‌دهید. در اتریوم، کلید عمومی را با تابع Keccak-256 هش می‌کنند، ۲۰ بایت آخرش را برمی‌دارند و `0x` را اولش می‌گذارند. نتیجه یک آدرس ۴۲ کاراکتری است: ۴۰ کاراکتر مبنای شانزده به‌علاوه `0x`. شبکه‌های دیگر فرمول خودشان را دارند و به همین دلیل آدرس بیت‌کوین، ترون و اتریوم شکل‌های متفاوتی دارند. اگر می‌خواهید بدانید این شکل‌ها چطور از هم تشخیص داده می‌شوند، راهنمای آدرس کیف پول را ببینید.

امضای دیجیتال: کلید خصوصی چطور کار می‌کند بدون اینکه لو برود

مهم‌ترین نکته این بخش این است که کلید خصوصی هیچ‌وقت برای شبکه فرستاده نمی‌شود. چیزی که فرستاده می‌شود «امضا»ست.

فرض کنید می‌خواهید ۱۰ تتر برای دوستتان بفرستید. اتفاقی که پشت صحنه می‌افتد تقریباً این است:

  1. کیف پول یک پیام می‌سازد: از این آدرس، این مقدار، به آن آدرس، با این کارمزد.
  2. این پیام با کلید خصوصی امضا می‌شود. خروجی یک عدد است که فقط کسی که کلید را دارد می‌تواند برای همین پیام بسازد.
  3. تراکنش و امضا به شبکه فرستاده می‌شوند.
  4. نودهای شبکه با کلید عمومی بررسی می‌کنند که امضا با این پیام و این آدرس جور است. در اتریوم حتی کلید عمومی از خود امضا بیرون کشیده می‌شود تا معلوم شود فرستنده کیست.

امضا به همان پیام گره خورده است. اگر کسی در مسیر مبلغ را از ۱۰ به ۱۰۰ یا آدرس گیرنده را عوض کند، امضا دیگر با پیام جور نیست و شبکه تراکنش را رد می‌کند. پس کسی که تراکنش‌های قبلی شما را روی بلاک‌چین می‌بیند، با داشتن امضاهای قدیمی هم نمی‌تواند تراکنش تازه‌ای به اسم شما بسازد.

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

عبارت بازیابی از کجا می‌آید و چرا یکی برای همه‌چیز کافی است؟

بیشتر کیف پول‌های امروزی به‌جای نشان دادن یک کلید ۶۴ کاراکتری، ۱۲ یا ۲۴ کلمه انگلیسی به شما می‌دهند. این کلمه‌ها عبارت بازیابی (Seed Phrase یا Recovery Phrase) هستند و طبق استانداردی به نام BIP-39 ساخته می‌شوند.

از عدد تصادفی تا ۱۲ کلمه

کیف پول اول یک عدد تصادفی ۱۲۸ بیتی می‌سازد. چند بیت کنترلی (checksum) به آن اضافه می‌کند و کل آن را به تکه‌های ۱۱ بیتی می‌شکند. هر تکه ۱۱ بیتی یکی از ۲۰۴۸ کلمه یک فهرست ثابت را انتخاب می‌کند. حساب ساده‌اش این است:

  • ۱۲ کلمه × ۱۱ بیت = ۱۳۲ بیت = ۱۲۸ بیت تصادفی + ۴ بیت کنترلی
  • ۲۴ کلمه × ۱۱ بیت = ۲۶۴ بیت = ۲۵۶ بیت تصادفی + ۸ بیت کنترلی

همین بیت‌های کنترلی توضیح می‌دهند که چرا اگر یک کلمه را اشتباه بنویسید، بیشتر کیف پول‌ها همان اول می‌گویند عبارت نامعتبر است. در عبارت ۱۲ کلمه‌ای، از هر ۱۶ ترکیب تصادفی کلمه‌ها فقط یکی بیت‌های کنترلی درستی دارد.

از کلمه‌ها تا هزاران کلید

کلمه‌ها خودشان کلید خصوصی نیستند. کیف پول آن‌ها را از تابعی به نام PBKDF2 با ۲۰۴۸ دور تکرار عبور می‌دهد و یک «بذر» (seed) ۵۱۲ بیتی می‌سازد. از این بذر، طبق استاندارد BIP-32، یک درخت کامل از کلیدها ساخته می‌شود: کلید اصلی، از آن کلید هر حساب، و از هر حساب کلید هر آدرس.

این ساختار را «کیف پول سلسله‌مراتبی» یا HD Wallet می‌گویند و فایده بزرگش این است که فقط یک بار پشتیبان‌گیری لازم دارد. ده‌ها آدرس در چند شبکه مختلف دارید، اما همه از همان ۱۲ کلمه دوباره ساخته می‌شوند. روی دیگر همین سکه: هر کس آن ۱۲ کلمه را داشته باشد، به همه آن آدرس‌ها دسترسی دارد، نه فقط یکی.

مسیر مشتق: چرا گاهی با همان کلمه‌ها موجودی صفر می‌بینید

کیف پول برای رسیدن از بذر به یک آدرس مشخص، یک «مسیر» را دنبال می‌کند. استاندارد رایج BIP-44 این مسیر را این‌طور تعریف کرده است:

`m / purpose' / coin_type' / account' / change / address_index`

بخش `coin_type` مشخص می‌کند کلید مال کدام شبکه است و `account` و `address_index` شماره حساب و آدرس را تعیین می‌کنند. اگر عبارت بازیابی را در کیف پول دیگری وارد کنید و موجودی صفر ببینید، همیشه به معنی دزدیده شدن دارایی نیست؛ شاید آن کیف پول مسیر دیگری را دنبال می‌کند یا شبکه موردنظر را اضافه نکرده‌اید. قبل از هر نتیجه‌گیری، شبکه و حساب درست را در تنظیمات کیف پول بررسی کنید.

رمز اضافه یا «کلمه بیست‌وپنجم»

BIP-39 اجازه می‌دهد علاوه بر کلمه‌ها یک passphrase هم تعیین کنید. این رمز در ساختن بذر دخالت دارد و هر passphrase یک کیف پول کاملاً متفاوت و معتبر می‌سازد. یعنی اگر کسی ۱۲ کلمه شما را پیدا کند اما رمز اضافه را نداشته باشد، به کیف پول اصلی نمی‌رسد. روی دیگرش خطرناک‌تر است: اگر خودتان این رمز را فراموش کنید، هیچ پیام خطایی نمی‌بینید. کیف پول یک کیف پول خالی دیگر باز می‌کند و راهی برای برگرداندن کیف پول اصلی وجود ندارد. این قابلیت برای کسی مناسب است که مطمئن است هر دو را جداگانه و درست نگه می‌دارد.

چه چیزی را می‌شود به دیگران داد؟

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

چیزی که از شما می‌خواهند

با آن چه می‌شود کرد

می‌شود داد؟

آدرس کیف پول

برایتان رمزارز بفرستند و تراکنش‌های همان آدرس را ببینند

بله، برای دریافت پول

کلید عمومی گسترش‌یافته (xpub)

همه آدرس‌ها و کل تاریخچه دریافت و پرداخت آن حساب را ببینند

فقط به سرویس یا حسابرسی که واقعاً لازمش دارد

کلید خصوصی یک آدرس

همه موجودی آن آدرس را خرج کنند

هرگز

عبارت بازیابی ۱۲ یا ۲۴ کلمه‌ای

کل کیف پول و همه آدرس‌هایش در همه شبکه‌ها را خالی کنند

هرگز، به هیچ دلیلی

passphrase

همراه عبارت بازیابی، کیف پول اصلی را باز کنند

هرگز

درباره xpub یک نکته فنی هست که کمتر گفته می‌شود. طبق BIP-32، اگر کسی xpub یک حساب و فقط کلید خصوصی یکی از آدرس‌های معمولی (non-hardened) زیر آن را داشته باشد، می‌تواند کلید خصوصی کل آن حساب را بسازد. پس xpub را هم بی‌دلیل منتشر نکنید؛ لو رفتنش حداقل حریم خصوصی شما را از بین می‌برد.

کیف پول امانی و غیرامانی: کلید دست کیست؟

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


کیف پول غیرامانی (Self-custody)

کیف پول امانی (Custodial)

کلید خصوصی دست کیست؟

دست شما

دست سرویس‌دهنده

راه ورود

عبارت بازیابی

نام کاربری، رمز عبور و ورود دومرحله‌ای

اگر دسترسی را از دست بدهید

بدون عبارت بازیابی هیچ راه برگشتی نیست

از راه‌های معمول بازیابی حساب

ریسک اصلی

گم شدن یا لو رفتن عبارت بازیابی

لو رفتن حساب، یا مشکل مالی و محدودیت‌های خود سرویس

ethereum.org هر دو طرف را صادقانه گفته است: در کیف پول شخصی «پشتیبانی مشتری وجود ندارد» و نگهداری کلید مسئولیت خود شماست. در صرافی می‌شود حساب را به روش معمول بازیابی کرد، اما در عوض به آن صرافی اعتماد کرده‌اید.

سواپ‌ولت هم حساب امانی است؛ یعنی کلیدها دست سرویس است و شما با حساب کاربری وارد می‌شوید. در این مدل، امنیت شما به امنیت حسابتان بستگی دارد، پس ورود دومرحله‌ای را فعال کنید و گاهی دستگاه‌های متصل به حساب را مرور کنید. انتقال بین دو حساب در یک سرویس امانی هم معمولاً روی بلاک‌چین ثبت نمی‌شود؛ فرقش با برداشت روی شبکه را در مقاله انتقال داخلی و انتقال روی بلاک‌چین توضیح داده‌ایم.

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

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

این دسته‌بندی‌ها هم در اصل درباره یک سؤال‌اند: کلید خصوصی کجا زندگی می‌کند و چقدر به اینترنت نزدیک است؟

  • کیف پول گرم: اپلیکیشن موبایل، افزونه مرورگر یا نرم‌افزار دسکتاپ. کلید روی دستگاهی است که به اینترنت وصل است. راحت است، اما اگر گوشی یا کامپیوتر آلوده شود، کلید هم در خطر است.
  • کیف پول سخت‌افزاری: دستگاه کوچکی که کلید را داخل خودش نگه می‌دارد و امضا را همان‌جا انجام می‌دهد. کامپیوتر فقط تراکنش را برای امضا می‌فرستد و امضا را پس می‌گیرد. به گفته ethereum.org، در این روش کلید خصوصی هیچ‌وقت به اینترنت نمی‌رسد.
  • کیف پول سرد به هر روشی گفته می‌شود که کلید را کاملاً آفلاین نگه دارد؛ کیف پول سخت‌افزاری یا کیف پول کاغذی از این دسته‌اند.

قاعده ساده‌ای که به کار می‌آید: هر چه مبلغ بزرگ‌تر است و کمتر لازمش دارید، کلیدش باید دورتر از اینترنت باشد.

اشتباه‌هایی که کلید را لو می‌دهند

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

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

یک روش عملی برای نگهداری عبارت بازیابی

اگر یک کیف پول غیرامانی ساخته‌اید، این کار را همان روز اول انجام دهید، نه وقتی موجودی‌اش زیاد شد:

  1. کلمه‌ها را به ترتیب و با شماره روی کاغذ بنویسید. املای هر کلمه را دوباره با صفحه کیف پول مقایسه کنید.
  2. یک نسخه دوم تهیه کنید و در جای دیگری نگه دارید، تا یک آتش‌سوزی یا جابه‌جایی خانه هر دو را از بین نبرد.
  3. برای مبلغ‌های بزرگ، به کاغذ اکتفا نکنید. صفحه‌های فلزی مخصوص نوشتن عبارت بازیابی در برابر آب و آتش مقاوم‌ترند.
  4. قبل از اینکه مبلغ قابل‌توجهی واریز کنید، یک بار بازیابی را امتحان کنید: کیف پول را روی دستگاه دیگری با همان کلمه‌ها باز کنید و ببینید همان آدرس ساخته می‌شود.
  5. یک مبلغ کم بفرستید و مطمئن شوید رسیده، بعد مبلغ اصلی را منتقل کنید.
  6. اگر کسی غیر از خودتان باید در شرایط اضطراری به این دارایی برسد، از قبل برایش بنویسید که کلمه‌ها کجاست و با آن‌ها چه باید بکند.

پرسش‌های رایج

اگر گوشی‌ام گم شود، دارایی‌ام از بین می‌رود؟

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

فرق کلید خصوصی و عبارت بازیابی چیست؟

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

آیا کسی می‌تواند کلید خصوصی مرا حدس بزند؟

اگر کلید را یک کیف پول معتبر به‌صورت تصادفی ساخته باشد، نه. تعداد کلیدهای ممکن حدود ۲ به توان ۲۵۶ است. خطر وقتی واقعی می‌شود که کلید را خودتان از روی یک جمله، تاریخ تولد یا کلمه‌های دلخواه ساخته باشید؛ چنین کلیدهایی قابل حدس زدن‌اند.

یک عبارت بازیابی برای چند شبکه کار می‌کند؟

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

می‌توانم عبارت بازیابی را به فارسی یا با کلمه‌های خودم بنویسم؟

کلمه‌ها باید دقیقاً همان کلمه‌های فهرست استاندارد باشند. اگر ترجمه یا جایگزینشان کنید، کیف پول نمی‌تواند آن‌ها را بخواند. بهتر است همان کلمه‌های انگلیسی را با املای کامل و شماره ترتیب بنویسید.

در سواپ‌ولت عبارت بازیابی دارم؟

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