اگر با بازار ارزهای دیجیتال آشنا باشید، حتما متوجه شدهاید که برای هر فعالیتی در یک شبکه بلاکچینی، نیاز به یک کیف پول دارید. اگر با شبکه اتریوم کار کرده باشید، احتمالا نام MetaMask را شنیدهاید؛ اما آیا با نحوه کارکرد متامسک نیز آشنا هستید؟ اگر قصد دارید در مورد نحوه عملکرد کیف پول متامسک، مفاهیم اساسی و زیربنایی آن، انواع ساختار کیف پولها، دستهبندی کیف پولها، نحوه اتصال متامسک به شبکه بلاکچینی و نحوه انجام یک تراکنش بیشتر بدانید، تا انتهای این مقاله با میهن بلاکچین همراه باشید.
آشنایی با نحوه کارکرد کیف پول متامسک
متامسک (MetaMask) در سال ۲۰۱۶ راهاندازی شد و از آن زمان تا به حال تعداد زیادی کاربر فعال را به سمت خود جذب کرده است؛ به طوری که در مارس ۲۰۲۲ (اسفند ۱۴۰۰) تعداد کاربران فعال کیف پول متامسک به ۳۰ میلیون کاربر رسیده است. اکثر کاربران متامسک از کشورهایی همچون ایالات متحده، فیلیپین، برزیل، آلمان و نیجریه هستند.
کیف پول MetaMask یکی از برنامههای ضروری برای کاربرانی است که از شبکه اتریوم استفاده میکنند؛ متامسک مانند دروازهای است که افراد زیادی برای استفاده از NFTها، بازیها و DAOها که بخشهای مهم وب ۳ هستند، به آن نیاز دارند. به همین دلیل میتوان کیف پولها را بخش اساسی و قلب اکوسیستم بلاکچین دانست.
قبل از توضیح در مورد نحوه کارکرد کیف پول متامسک، باید بدانید که کیف پولهای ارز دیجیتال خدمات متنوعی را به کاربران خود ارائه میدهند. به عنوان مثال خدمات و ویژگیهایی که کیف پول متامسک به کاربران خود ارائه میدهد، میتوان به موارد زیر اشاره کرد:
- مدیریت حساب (ساخت و ایمپورت حساب و اتصال به کیف پولهای سختافزاری).
- اتصال به شبکههای بلاکچین عمومی.
- امضای تراکنشها (انتقال و برقرار ارتباط با قراردادهای هوشمند).
- توانایی تنظیم هزینه کارمزد توسط کاربران.
- خرید کریپتو با ارز فیات (با استفاده از MoonPay، Transak، Wyre).
- سواپ توکنها.
- نمایش داراییها (توکنهای ERC20 و NFTها).
- نمایش تاریخچه تراکنشها و فعالیتها.
- ارتباط با برنامههای غیرمتمرکز (dApps).
اکنون زمان آن رسیده است که به بررسی عملکرد کیف پولها ارز دیجیتال و مخصوصا کیف پول متامسک بپردازیم. شاید عملکرد کیف پول ارز دیجیتال در نظر شما بسیار سخت و پیچیده باشد؛ اما باید بگوییم که در واقعیت، امروزه بیشتر کیف پولها، برنامههایی هستند که حول یک موضوع ساده و مرکزی ساخته شدهاند و این موضوع کلید عمومی و کلید خصوصی است.
اصول ابتدایی کیف پول متامسک
قبل از اینکه در مورد نحوه عملکرد متامسک صحبت کنیم، اجازه دهید ابتدا به برخی از مفاهیم اساسی که زیربنای آن هستند، بپردازیم. اولین مفهوم مربوط به حسابها (Accounts) میشود. حسابها هسته اولیه بلاکچین هستند. در اتریوم ۲ نوع حساب وجود دارد:
- حسابهای تحت مالکیت خارجی (Externally Owned Accounts)
- حسابهای قراردادی (Contract Accounts)
اگر بخواهیم هر حساب موجود در کیف پول ارز دیجیتال را تعریف کنیم، میتوان بهصورت ساده هر حساب را با یک کلید عمومی و یک کلید خصوصی تعریف کرد. کلید عمومی از کلید خصوصی مشتق شده است و تمام حسابهای موجود در بلاکچین بر اساس آدرسهایشان که همان کلیدهای عمومی هستند، مرتب میشوند.
شاید تا به حال متوجه شده باشید که کلید عمومی همان آدرسهای کیف پولها هستند و کلید خصوصی، وسیله یا ابزاری برای دسترسی به سرمایه داخل هر والت یا کیف پول است.
حال که در مورد حسابها اطلاعاتی را به دست آوردید، وقت آن رسیده است که در مورد ویژگی ۲ نوع حساب، یعنی حسابهای تحت مالکیت خارجی و حسابهای قراردادی بیشتر بدانیم.
حسابهای تحت مالکیت خارجی یا Externally Owned Accounts
از ویژگیهای اصلی حسابهای تحت مالکیت خارجی میتوان به موارد زیر اشاره کرد:
- توانایی نگهداری سرمایه یا دارایی را دارند (با توجه به مبنا قرار دادن اتریوم در این مقاله، این سرمایه را کوین اتر (ETH) در نظر میگیریم).
- این نوع حسابها میتوانند تراکنشهایی را ارسال کنند (ارسال و دریافت یا فعال کردن کد قرارداد هوشمند).
- توسط کلیدهای خصوصی کنترل میشوند.
- هیچگونه کد قرارداد هوشمندی ندارند.
حسابهای قرارداد یا Contract Accounts
از ویژگیهای اصلی حسابهای قرارداد نیز میتوان به موارد زیر اشاره کرد:
- این نوع حسابها یک قرارداد هوشمند با موجودی ETH هستند.
- دارای کد قرارداد هوشمند هستند.
- اجرای این کدها با تراکنشها یا پیامهای دریافتی از سایر قراردادها یا حسابهای خارجی آغاز میشود.
با توجه به این ویژگی، میتوان نتیجه گرفت که هر اقدامی در شبکه اتریوم، توسط یک حساب با مالکیت خارجی انجام میشود. شاید از خود بپرسید اگر این مقاله در مورد کیف پول است، چرا در مورد حسابها صحبت میکنیم؟ برای پاسخ به این سوال باید بگوییم که کیف پول چیزی جز یک برنامه برای مدیریت حساب نیست!
کیف پول ارز دیجیتال چیست؟
اگر همه لایههای متامسک را از بین ببریم و به عمق متامسک نفوذ کنیم، متوجه خواهیم شد که متامسک صرفا یک نرمافزار برای ذخیره و مدیریت کلیدهای عمومی و خصوصی کاربر است. هر کیف پول یک برنامه برای مدیریت کلیدهای عمومی و خصوصی و تعامل کاربران با شبکه بلاکچین است.
کاربران میتوانند بهوسیله کیف پول متامسک یا هر کیف پول دیگری، به راحتی انتقال ارزهای دیجیتال را از یک حساب به حساب دیگر انجام دهند، کلیدهای عمومی و خصوصی خود را مدیریت کنند و مانده توکنها یا کوینهای خود را مشاهده و ردیابی کنند. کیف پول به شما کمک میکند تراکنشها را امضا کنید؛ اما باید بدانید که هیچیک از این موارد بدون مدیریت کلیدهای عمومی و خصوصی اتفاق نمیافتد.
به کیف پولها میتوانید بهعنوان یک جاکلیدی نگاه کنید؛ کیف پولهای اتریوم یا هر ارز دیجیتال دیگری، وظیفه نگهداری کلیدهای کاربران را دارند و درون این ولتها در واقع هیچ توکن یا کوین واقعی وجود ندارند. دارایی که شما در کیف پول خود مشاهده میکنید، فقط یک انعکاس از میزان دارایی شماست که بر روی شبکه بلاکچین مورد نظر است.
به عبارت دیگر، ارزهای دیجیتال شما بر روی شبکه بلاکچین قرار دارد و کیف پولهایی مانند Metamask، وظیفه نمایش و دسترسی آسان کاربران به داراییشان را دارند. حال که بحث نحوه عملکرد کیف پولها داغ است، بهتر است در مورد انواع ساختار کیف پولها نیز کمی صحبت کنیم.
انواع ساختار کیف پولها
یکی از راههای دستهبندی کیف پولها، نحوه تولید کلیدها توسط آنهاست. در اصل دو نوع یا دو روش برای تولید کلید در کیف پولها وجود دارد:
- غیرقطعی یا NonDeterministic
- قطعی یا Deterministic
تمایز این دو روش بر اساس ارتباط کلیدها با یکدیگر به وجود میآید. کیف پولهای غیرقطعی دارای کلیدهایی هستند که توسط یک عدد تصادفی تولید میشوند و کلیدهای عمومی و خصوصی با یکدیگر مرتبط نیستند؛ به عبارتی، کلیدهای خصوصی بهصورت تصادفی و مستقل از کلید عمومی ساخته میشوند. بیشتر کیف پولها قدیمی اتریوم غیرقطعی بودهاند.
کیف پولهای قطعی دارای کلیدهایی هستند که توسط یک کلید اصلی تولید میشوند که به نام Seed یا عبارت بازیابی نیز شناخته میشود. در کیف پولهای قطعی، کلیدها به یکدیگر مرتبط هستند و همیشه میتوانند با همان سید تولید شوند. در حال حاضر کیف پولهای قطعی، والتهایی هستند که بیشتر با آن آشنا هستیم؛ زیرا این کیف پولها به عنوان یک استاندارد شناخته شده هستند و متامسک و تعداد زیادی از کیف پولها از این استاندارد استفاده میکنند. کیف پولهای قطعی نسبت به کیف پولهای غیرقطعی از نظر کاربرد و فناوری پیشرفتهتر هستند. اما Seed چیست؟
Seed فهرستی از کلمات انگلیسی (معمولا ۱۲ یا ۲۴ کلمه) است که برای بازیابی کلید خصوصی مورد استفاده قرار میگیرد. اگر تا به حال کیف پول متامسک یا دیگر ولتها را نصب کرده باشید، در زمان ساخت حساب به شما چند کلمه مختلف نمایش میدهد؛ این کلمات همان Seed هستند.
به این نکته توجه کنید که هر فردی به عبارات بازیابی یک کیف پول دسترسی داشته باشد، به دارایی داخل حسابهای درون این کیف پول دسترسی دارد؛ به همین دلیل است که توصیه میشود هرگز عبارت بازیابی خود را به اشتراک نگذارید و حتی آن را به شکل الکترونیکی ذخیره نکنید.
عبارت بازیابی برای تغییر کیف پول نیز کاربرد دارد و کاربر میتواند به راحتی همه کلیدها را در کیف پولهای مختلف جابهجا کند؛ برای درک بهتر این موضوع، بهتر است با یک مثال به توضیح این بخش بپردازیم.
فرض کنید یک حساب با دارایی مشخص در متامسک دارید؛ حال اگر بخواهید به دارایی خود در ولتهایی همچون Rainbow یا Argent دسترسی داشته باشید، میتوانید با تایپ این کلمات در بخش Import کیف پولهای Rainbow یا آرجنت، به کلیدهای عمومی و خصوصی خود دسترسی داشته باشید و همانطور که قبلا هم بیان شد، به وسیله این کلیدها میتوانید داراییهایتان را مدیریت کنید.
به این موضوع که کیف پول قطعی سطح بالاتری از فناوری و امنیت نسبت به کیف پول غیر قطعی دارد، اشاره کردیم؛ اما شاید سوالی که ذهن شما را درگیر خود کند این باشد که:
بهترین یا پیشرفتهترین شکل کیف پول قطعی کدام است؟
در پاسخ به این سوال بهتر است که بگوییم که پیشرفتهترین شکل کیف پول قطعی، کیف پول قطعی سلسله مراتبی (Hierarchical Deterministic (یا به اختصار HD)) است که بر اساس استاندارد BIP-32 بیت کوین ساخته شده است. این کیف پولها سلسله مراتبی نامیده میشوند؛ زیرا آنها دارای یک ساختار درختی هستند که در آن کلید والد (Parent key) میتواند مجموعهای از کلیدهای فرزند (Child Key) را به وجود آورد. همچنین میتواند یک سری دیگر از کلیدهای نوه (Grandchild Key) را نیز ایجاد کند.
چرا کیف پولهای سلسله مراتبی را بهترین کیف پول قطعی میدانیم؟
کیف پولهای سلسله مراتبی بهتر از انواع دیگر کیف پولهای قطعی هستند زیرا:
- ساختار درختی در این کیف پولها میتواند نمایانگر یک ساختار سازمانی باشد؛ این ساختار فرصت را برای سازماندهی بودجه و پرداختها فراهم میکند.
- کلیدهای عمومی را میتوان بدون دسترسی به کلیدهای خصوصی مربوطه تولید کرد.
باید توجه داشت که Seed که فهرستی از کلمات انگلیسی است، تنها یکی از راههای رمزگذاری کلید خصوصی است. این نوع رمز گذاری در حال حاضر به طور گسترده مورد استفاده قرار میگیرد؛ زیرا انواع دیگر نمایشها مانند رشته هگزادسیمال (رشتهای بهصورت اعداد ۰ تا ۹ و حروف a تا f) هنگام نوشتن روی کاغذ میتوانند منجر به نرخ خطای بالاتری شوند. در سطوح بالاتر، کلمات Seed از فرایندی تعریف شده توسط استاندارد BIP-39 تولید میشوند که توسط منبعی از اعداد تصادفی، تبدیل آن دادهها و سپس نگاشت آن به فهرستی از کلمات است. به زبان ساده کلمات سید اینگونه ساخته میشوند:
ابتدا توسط فرایندی تصادفی، یک مجموعه رشته عددی به صورت ۰ و ۱ ایجاد میشود. سپس این اعداد از سیستمی که از استاندارد BIP-39 پشتیبانی میکند، عبور کرده و تعدادی کلمه ساخته میشود؛ این کلمات همان عبارات سید هستند و نماینده همان اعداد باینری هستند. به لطف وجود چنین استانداردهایی، “قابلیت همکاری” در ولتها ایجاد میشود و به همین دلیل است که شما میتوانید کیف پولها را بهراحتی در ولتی دیگر ایمپورت کنید؛ البته باید دقت کنید که استاندارد کیف پول مورد نظر شما با کیف پول فعلی شما یکسان باشد؛ برای مثال، کیف پولهای متامسک، تراست ولت، اتمیک، گواردا و غیره، از استاندارد BIP39 پشتیبانی میکنند و شما میتوانید مثلا متامسک را در تراست ولت (یا برعکس) ایمپورت کنید.
در مورد دستهبندی کیف پولها بر اساس نحوه تولید کلیدها صحبت کردیم؛ اما میتوان کیف پولها را بر اساس نحوه استفاده نیز دسته بندی کرد که عبارتاند از:
- دسکتاپ: کیف پولهایی که بر روی سیستم رایانه شما نصب میشود. مانند: مای کریپتو (MyCrypto) و ناسیس سیف دسکتاپ (Gnosis Safe Desktop).
- مرورگر: کیف پولهایی که بر روی مرورگر به صورت افزونه یا اکستنشن نصب میشوند. مانند: متامسک (MetaMask)، مای اتر والت (MyEtherWallet) و Web3Auth.
- موبایل: کیف پولهایی که بر روی گوشی هوشمند نصب میشوند. مانند: کوین بیس والت (Coinbase Wallet)، کیف پول موبایل متامسک (MetaMask Mobile) و تراست والت (Trust Wallet).
- کیف پولهای سختافزاری: این کیف پولها کلیدهای کاربر را بر روی سختافزار ذخیره میکند. به همین دلیل این روش نگهداری، روشی امن برای دسترسی به وجوه شما در حالت آنلاین است؛ زیرا در این کیف پولها، کلید خصوصی هنگام امضا تراکنشها آشکار نمیشود. از کیفهای سختافزاری میتوان به لجر (Ledger)، ترزور (Trezor) و بیت باکس (Bitbox) اشاره کرد.
کیف پول قرارداد هوشمند
برخی از کیف پولها مانند آرجنت (Argent) و ناسیس سیف (Gnosis Safe) کیف پولهای قراردادی هوشمند هستند که شباهت زیادی به حسابهای قراردادی دارند که در ابتدای این مقاله توضیح دادیم.
این کیف پولها، از جایگزینی برای حسابهای دارای مالکیت خارجی استفاده میکنند و بر اساس قراردادهای هوشمند ساخته شدهاند. با توجه به ایجاد قرارداد هوشمند در این کیف پولها، شما امکان انجام فعالیتهای متنوعتر و بیشتری را دارید؛ این ولتها دارای ویژگیهایی مانند بازیابی حساب بدون عبارات سید، مسدود کردن خودکار انتقالهای خاص به قراردادهای غیرقابل اعتماد (قراردادهای مخرب که میتواند باعث هک شدن و غیره شود) و محدودیتهای انتقال و مسدود کردن حساب هستند. در تصویر زیر، چند نمونه کد از یک کیف پول قرارداد هوشمند بسیار ساده آمده است:
بررسی کیف پول متامسک
متامسک یک کیف پول ارز دیجیتال غیرحضانتی (Non-Custodial) است و این موضوع به معنی این است که هیچ شخص ثالثی کلیدهای خصوصی شما را نگهداری نمیکند. به همین دلیل متامسک هیچ دادهای را در مورد کیف پول کاربران ذخیره نمیکند و هر چیزی که میبینید، در مرورگر یا تلفن همراه شما ذخیره شده است و فقط شما هستید که دسترسی به کلید خصوصی خود دارید.
متامسک از ۳ روش مختلف برای محافظت از کیف پول کاربران خود استفاده میکند:
- عبارت بازیابی یا Seed: همانطور که قبلا اشاره شد، عبارات بازیابی، کلماتی هستند که بر اساس کلید خصوصی شما و به کمک توابع ریاضی ایجاد شده است. این کلمات زمانی که در یک ترتیب خاص قرار میگیرند، میتوانند تمام حسابهای موجود در کیف پول شما را بازیابی کنند. به یاد داشته باشید که یک کیف پول میتواند دارای حسابهای زیادی باشد؛ زیرا ولت شما زنجیرهکلیدی است که بسیاری از کلیدهای عمومی و خصوصی را در خود جای میدهد؛ زمانی که متامسک از طریق عبارات سید کیف پول شما را بازیابی میکند، ممکن است تنها حساب اول شما بازیابی شود، اما شما میتوانید مابقی حسابهای خود را نیز بههمین صورت دوباره بسازید؛ زیرا متامسک یک کیف پول قطعی است.
- کلیدهای خصوصی: هر حساب دارای کلید عمومی و خصوصی خود است. معمولا حسابها با آدرسشان که همان کلید عمومی است، دیده میشوند و از کلیدهای خصوصی میتوان برای وارد کردن دارایی آن حساب خاص (فقط آن حساب) به هر برنامه کیف پول دیگری استفاده کرد.
- رمز عبور: در متامسک و دیگر کیف پولها از رمز عبور برای ایمنسازی خود برنامه کیف پول استفاده میشود.
مقایسه کیف پولهای متامسک و کوین بیس
همانطور که در بخشهای قبلی بیان شد، متامسک یک کیف پول غیرحضانتی است که کلیدهای مربوط به حساب شما را ذخیره نمیکند، اما ولت صرافی کوین بیس یک کیف پول حضانتی (Custodial) است و عبارات بازیابی را به شما نمیدهد و خودش آنها را ذخیره میکند؛ بنابراین تفاوت اصلی این دو کیف پول این است که به جای اینکه شما کلیدهای خصوصی خود را نگه دارید، کوین بیس در واقع آنها را برای شما ذخیره و نگهداری میکند؛ بنابراین نمیتوانید مستقیما کیف پول Coinbase خود را اکسپورت کنید و داراییهای آن را در کیف پول دیگری مانند متامسک ایمپورت کنید.
توجه: کیف پول صرافی کوین بیس (Coinbase.com) یک کیف پول حضانتی است، اما کوین بیس والت (Coinbase Wallet) یک کیف پول غیرحضانتی است.
نحوه اتصال متامسک به شبکه بلاکچین
کیف پولهایی مانند متامسک، دروازهای برای ورود شما به شبکههای بلاکچین عمومی هستند؛ برای درک بهتر این موضوع بهتر است که کارکرد یک مرورگر وب را مثال بزنیم:
مرورگرهای وب نرمافزارهایی هستند که به ما امکان دسترسی به وب جهانی را میدهند؛ به این صورت که یک کاربر با وارد کردن آدرس URL، یک صفحه وب را درخواست میکند، مرورگر آن محتوا را از یک سرور دریافت کرده و آن را روی نمایشگر کاربر نمایش میدهد.
در واقع شما زمانی که یک آدرس را در مرورگر وارد میکنید، عملا از مرورگر میخواهید که به آن نقطه از بستر وب برود؛ در فضای وب ۳ نیز شما از کیف پول خود میخواهید که شما را به نقطه اتصال RPC برای دسترسی به نودهای بلاکچین عمومی متصل کند. به زبان ساده، متامسک شما را به شبکههای بلاکچین عمومی متصل میکند و به شما امکان میدهد دادههای موجود روی بلاکچین را بخوانید یا اطلاعاتی را روی آن بنویسید.
بلاکچین یک دفتر کل توزیع شده است که میتوان آن را نمایشگر حسابها و داراییها دانست؛ به عنوان مثال صفحه گستردهای را تصور کنید که در آن هر ردیف یک حساب (آدرس اتریوم) و هر ستون مقدار دارایی رمزنگاری است که در آن نگهداری میشود.
نحوه انجام یک تراکنش در متامسک
حال فرض کنید آلیس میخواهد ۱ اتر را برای باب بفرستد:
- آلیس کیف پول متامسک خود را باز میکند، آدرس کیف پول باب را وارد میکند و گزینه ارسال را انتخاب میکند.
- هنگامی که او بر روی گزینه ارسال کلیک میکند، در واقع از کلیدهای خصوصی خود برای امضای تراکنش استفاده کرده است.
- این تراکنش وارد یک حافظه محلی به نام ممپول (Mempool) میشود و سپس توسط نزدیکترین گره یا Node در شبکه اتریوم دریافت میشود.
- هنگام شروع این تراکنش، تراکنش آلیس و دیگر تراکنشها بر اساس تنظیمات میزان کارمزد پرداختی اولویتبندی میشوند و ماینرها بر اساس کارمزد به تایید تراکنشها میپردازند (تراکنشهایی که فی بالاتری پرداخت میکنند، زودتر تایید میشوند).
- پس از انتخاب شدن، تراکنش در سراسر نودهای شبکه منتشر میشود.
- پس از پردازش تراکنش، گرهها بررسی میکنند که آلیس اتر کافی برای خرج کردن قبل از انجام انتقال را دارد یا خیر.
- در نهایت، انتقال اتر (که صرفا اصلاح دفتر کل یا بلاکچین است) انجام میشود و ۱ ETH از موجودی آلیس کسر میشود و ۱ ETH به حساب باب افزوده میشود.
سوالات متداول (FAQ)
متامسک از عبارت بازیابی، کلید خصوصی و رمز عبور برای ایمن سازی کیف پول خود استفاده میکند. متامسک هیچ دادهای را ذخیره نمیکند و همه دادهها در مرورگر یا تلفن همراه شما ذخیره میشوند.
وقتی به متامسک متصل میشوید، از کیف پول خود میخواهید که شما را به RPC برای دسترسی به نودهای بلاکچین متصل کند و بدین صورت امکان خواندن دادههای موجود روی بلاکچین را خواهید داشت.
جمعبندی
در این مقاله سعی کردیم که شما را با نحوه کارکرد کیف پول متامسک آشنا کنیم؛ اما قبل از آشنایی با نحوه عملکرد متامسک