در سال های اخیر توجه زیادی به ارز های دیجیتال و مبحث Web 3 شده است که توانسته افراد زیادی را به خود جذب کند. اگرچه این مقاله گنجایش توضیح وب 3 را ندارد، اما در ادامه به مبحث بلاکچین و رمز ارز ها خواهیم پرداخت که چگونه باعث ایجاد تحولی عظیم در اقتصاد و اینترنت خواهند شد.
محیط متمرکز و غیر متمرکز چیست؟
در دنیای اینترنت امروزی، شرکت های بزرگی چون گوگل و متا به حجم زیادی از کاربران دست یافته اند که در ازای اطلاعات به کاربران خود خدمات رایگان ارائه میدهند. برای مثال شما در ازای استفاده از واتساپ اطلاعاتی از جمله گفتگو ها، موقعیت مکانی و... را با شرکت متا به اشتراک میگذارید. این اطلاعات به سایر شرکت ها فروخته میشوند و برای کار هایی مثل تبلیغات هدفمند استفاده میشوند.
هرچند افراد زیادی وجود دارند که مادامی که این خدمات را دریافت کنند اهمیتی به این موضوع نمیدهند و یا حتی اطلاعی از آن ندارند. در هر صورت این کار تا حدودی نقض حریم خصوصی کاربران محسوب میشود و بسیاری از افراد مخالف این کار هستند.
در محیط های غیر متمرکز وظیفه نگهداری اطلاعات بر عهده کاربران است و کاربران تصمیم میگیرند که چه اطلاعاتی را با برنامه ها به اشتراک بگذارند که در ادامه بیشتر درمورد آن توضیح داده خواهد شد.
نحوه کار برنامه های متمرکز
درحال حاضر برنامه هایی که استفاده میکنیم، مثل وبسایت ها، پیام رسان ها و شبکه های مجازی برنامه های متمرکز هستند. برای مثال شما این وبسایت را در نظر بگیرید؛ شما درحال مطالعه یک مقاله هستید که این مقاله در سرور آماتریس ذخیره شده است و برای مطالعه آن بایستی به این سرور یک درخواست ارسال کنید و سپس مقاله را دریافت کنید. حال این امکان وجود دارد که این وبسایت تعاملات شما با این سایت را بررسی و ضبط کند.
با این کار میتوان اطلاعاتی از شما جمع آوری کرد، برای مثال اینکه از چه کشور و یا چه استانی درحال مطالعه این وبلاگ هستید، به چه مقالاتی بیشتر علاقه دارید و در چه ساعاتی این مقالات را مطالعه میکنید. با این اطلاعات میتوان با توجه به علایق و موقعیت مکانی شما تبلیغاتی به صورت هدفمند نمایش داد.
اگر این کار به درستی انجام شود، نه تنها باعث نقض حریم خصوصی کاربران نخواهد شد، بلکه کمک خواهد کرد برای کاربران تجربه بهتری ایجاد شود. اما همیشه این شرایط برقرار نیست و همیشه اطلاعات شما محدود نیست. برای مثال در شبکه های مجازی اطلاعات بسیار با اهمیت و در حجم انبوه به اشتراک گذاشته میشود که گاهی اوقات باعث به خطر افتادن حریم خصوصی میشود.
تصویر بالا یک شبکه متمرکز را نشان میدهد که در آن تمام کاربران به یک سرور متصل میشوند و تمامی درخواست ها توسط همان سرور مدیریت میشوند. این سرور توسط یک سازمان یا شخص مدیریت میشود و به این معنی است که هیچ شخص یا سازمان دیگری هیچ دسترسی به اطلاعات و نحوه مدیریت آنها ندارد.
برنامه های غیر متمرکز چگونه کار میکنند؟
برنامه های غیر متمرکز (Decentralized) بدون یک شرکت یا سازمان واحد کار میکنند، یعنی تصمیم گیری و اجرای برنامه را بین افراد مختلف (کامپیوتر ها) تقسیم میکند. پیش از ادامه این مبحث، دانستن مفاهیم کلیدی زیر لازم است:
- گره یا Node: دستگاه یا کامپیوتر های مجزایی هستند که با اشتراک گذاری منابع خود مثل قدرت پردازش و فضای ذخیره سازی، به پیشرفت هدف شبکه کمک میکنند.
- ارتباط و تبادل اطلاعات: node های موجود در شبکه به کمک پروتکل های شناخته شده مثل HTTP و TCP با یکدیگر ارتباط برقرار میکنند.
- همروندی یا Concurrency: کامپیوتر های موجود در شبکه گاها به صورت همزمان روی یک عملیات کار میکنند که این اتفاق به وسیله چندین node مجزا اتفاق میافتد.
- تحمل پذیری خطا یا Fault tolerance: سیستم های توزیع شده در شبکه به گونهای کار میکنند که درصورت از دسترس خارج شدن یکی از کامپیوتر ها (node) همچنان با توزیع عملیات ها بین سایر کامپیوتر های موجود به عملکرد خود ادامه دهد.
- مقیاس پذیری: به این معنی است که با اضافه کردن node های اضافه به شبکه میتوان بار شبکه را کمتر کرد و سرعت شبکه را افزایش داد.
در یک شبکه غیر متمرکز مسئولیت نگهداری منابع و پیشبرد هدف شبکه در میان تمامی کاربران شبکه یا همان Node ها توزیع میشود. با این کار علاوه بر کاهش هزینه ها، باعث افزایش عملکرد شبکه نیز میشود، چرا که تمامی افراد حاضر بخش کوچکی از وظایف را انجام میدهند و در برخی مواقع پاداشی برای این کار به کاربران تعلق میگیرد!
در یک برنامه غیر متمرکز، تمامی Node ها امکان حضور در شبکه را به طور یکسان دارند، یعنی کنترل شبکه به دست یک یا چند نفر از افراد نیست، بلکه همه افراد سهم یکسانی از شبکه را دارند. همچنین درصورت از دسترس خارج شدن یکی از Node ها سایر افراد حاضر در شبکه به فعالیت خود ادامه میدهند و تاثیری در شبکه نخواهد داشت.
ارز های دیجیتال در مقابل پول بدون پشتوانه (Fiat)
ارز های دیجیتال (Crypto currency) به عنوان واحد پولی مطمئن و ایمن شناخته شدهاند، چرا که تراکنش ها و مراودات مالی قابل ردیابی نیستند و نمیتوان مشخص کرد که چه کسی تراکنش مورد نظر را انجام داده است. البته منظور از غیر قابل ردیابی این است که هویت شخص نامعلوم است اما همچنان اطلاعات تراکنش مثل مبلغ تراکنش، آدرس فرستنده و گیرنده و... قابل رهگیری خواهد بود.
در اقتصاد رایج فعلی، کشور ها با چاپ پول ارز مورد نظر خود را توزیع و پخش میکنند و به کمک پشتوانه هایی مثل طلا و ارز آنها را ارزش گذاری میکنند. این کار باعث میشود امکان چاپ بیش از حد پول وجود نداشته باشد.
اما در بانکداری متمرکز اطلاعات حساب ها و تراکنش ها در دیتابیس بانک ثبت و نگهداری میشوند. گاهی اوقات این امر باعث میشود امکان توزیع پول بدون پشتوانه راحت تر و کم هزینه تر شود که به اقتصاد ضربه بزرگی وارد میکند. همچنین ایراد دیگر این سیستم، این است که رویت و کنترل حساب های بانکی توسط دولت ها قابل انجام میشود.
سوال بزرگی که در این میان پیش میآید این است که اگر ارز های دیجیتال به صورت یک فایل دیجیتالی قابل ذخیره سازی هستند، پس میتوان آن را با کپی کردن به مقدار دلخواه رساند؟ و یا اینکه چگونه یک ارز غیر فیزیکی و بدون پشتوانه میتواند دارای ارزش بسیاری باشد؟ در ادامه جواب این سوال و راجع به نحوه کار ارز های دیجیتال بیشتر توضیح داده خواهد شد.
تراکنش (Transaction) و لجر ها (Ledger)
لجر ها که عموما تحت عنوان کیف پول های سخت افزاری شناخته میشوند، پایگاه داده ای از تراکنش هایی هستند که در یک شبکه اتفاق افتاده اند. پیش از ورود به مبحث اصلی، دانستن این مباحث کلیدی مفید است:
- ثبت تراکنش ها: تمام اطلاعات تراکنش، از جمله مبلغ تراکنش، آدرس فرستنده، آدرس گیرنده و... به صورت کاملا غیر متمرکز در بین تمامی Node های یک شبکه توزیع و ثبت میشود.
- تغییرناپذیری: پس از انجام و ثبت یک تراکنش در شبکه، امکان تغییر آن وجود نخواهد داشت که باعث افزایش امنیت و پایداری تراکنش ها میشود.
- غیر متمرکز: همانطور که گفته شد، تراکنش ها به صورت کاملا غیر متمرکز و در بین تمامی افراد حاضر در شبکه توزیع میشود که موجب پایداری تراکنش ها میشود، چرا که درصورت از دست دادن اطلاعات تراکنش توسط برخی از افراد حاضر در شبکه، همچنان سایر حاضرین اطلاعات تراکنش را ذخیره کرده اند.
- شفافیت: تمامی تراکنش ها توسط تمامی Node های یک شبکه قابل رویت است که به این معناست که هیچ یک از افراد نمیتوانند اطلاعات یک تراکنش را دست کاری کنند و سایر افراد متوجه آن نشوند.
فرض کنید میخواهیم یک سیستم پرداخت به کمک یک شبکه غیر متمرکز پیاده سازی کنیم. در این شبکه 4 نفر با نام های مهسا، حسین، رضا و امید حضور دارند که به طور مساوی 50 واحد (برای مثال دلار) برای هر فرد در نظر گرفتهایم.
در این شبکه هر چهار Node با یکدیگر در ارتباط هستند و درصورت انجام هرگونه مراوده مالی بقیه افراد متوجه آن خواهند شد. امید میخواهد 10 دلار برای رضا واریز کند، پس نیاز است یک تراکنش به مقصد رضا و به مبلغ 10 دلار ایجاد کند:
پس از اینکه امید تراکنش خود را ایجاد کرد، لازم است آن را برای تمامی افراد حاضر ارسال کند. همه آنها میدانند که امید درحال حاضر 50 دلار در شبکه سهیم است و میخواهد مبلغ 10 دلار را برای رضا ارسال کند، از این جهت تراکنش امید کاملا معتبر و قابل انجام است. این تراکنش در میان تمام node های حاضر در شبکه توزیع و ثبت میشود که به آن یک Transaction record میگوییم.
پس از تایید تراکنش همه Node های حاضر در شبکه آن رکورد را ذخیره و نگهداری میکنند، اینگونه در آینده متوجه خواهند شد که چه تراکنش هایی در شبکه صورت گرفته است. حالا رضا میخواهد مبلغ 50 دلار برای مهسا ارسال کند. ابتدا نیاز است یه یک تراکنش جدید ایجاد کند، سپس آن تراکنش را برای سایرین ارسال کند تا آنها آن را تایید کند. پس از ارسال این تراکنش توسط رضا، سایر حاضرین شبکه، رکورد مربوط به تراکنش قبلی او را بررسی میکنند و متوجه میشوند که امید 10 دلار از موجودی خود را قبلا استفاده کرده است و تنها 40 دلار در حساب او باقی مانده است. پس تراکنش ایجاد شده توسط همه افراد رد و تراکنش انجام نمیشود:
درواقع تراکنش ها به تایید افراد حاضر در شبکه بستگی دارند. پس آیا میتوان با جمع آوری تایید اقلیت یک تراکنش غیر معتبر را تایید کرد؟ خیر، با جمع آوری تایید اقلیت Node های موجود در شبکه (منظور از اقلیت تایید بیش از 50 درصد افراد است) میتوان تراکنش های غیر معتبر را تایید کرد که باعث آسیب به یکپارچگی شبکه شود اما با توجه ساختار بلاکچین و روش های اعتبار سنجی این اتفاق نخواهد افتاد که در ادامه بیشتر درمورد آن توضیح خواهیم داد.
چطور میتوان به افراد حاضر در شبکه اعتماد کرد؟
همانطور که در مثال قبل گفته شد، تمامی تراکنش ها توسط Node های حاضر در شبکه انجام میشود، پس این امکان وجود دارد که تراکنش ها به درستی صحت سنجی نشوند. از آن گذشته چرا این افراد باید هزینه و وقت خود را برای تایید تراکنش افراد دیگر بگذارند؟ برای صحت سنجی تراکنش ها از الگوریتم های اثبات استفاده میکنیم که به دو مورد از آنها اشاره خواهیم کرد:
۱. Proof of Work یا PoW
اثبات کار یا PoW الگوریتمی است که در آن تعدادی از node ها با انجام عملیات های ریاضی پیچیده و سنگین مطمئن میشوند که تراکنش های انجام شده مورد تایید هستند و درصورت نامعتبر بودن، از ورود آنها به بلاکچین جلوگیری میکند. این فرآیند به نیروی محاسباتی و کامپیوتر های قدرتمندی نیاز دارد که برخی از این کامپیوتر ها ماینر ها هستند. ماینر ها به کمک حل این محاسبات، عملیات اعتبار سنجی بلاک ها را انجام میدهند و اولین ماینری که بتواند یک بلاک جدید و معتبر را کشف کند، پاداشی به عنوان انجام کارخود دریافت میکند.
2. Proof of Stake یا PoS
در روش قبل ماینر ها به مقدار زیادی برق نیاز دارند که گاها هزینه بر و زیان آور است، اما در روش اثبات سهام یا PoS هر Node با قرار دادن مقدار دلخواهی از سهام خود در آن شبکه به عنوان اعتبار سنج (Validator) یا بیکر (Baker) شناخته میشوند. این اعتبار سنج ها به صورت تصادفی انتخاب میشوند که بلاک مورد نظر را اعتبار سنجی و تایید کنند و در ازای آن پاداشی دریافت کنند و درصورت اشتباه بخشی از سهام خود را از دست خواهند داد. با اینکه این افراد به صورت تصادفی از بین سهام داران انتخاب میشود، اما با داشتن سهام بیشتر احتمال انتخاب شدن آن اعتبارسنج بیشتر خواهد بود.
الگوریتم SHA256 چیست و چه کاربردی دارد؟
SHA یا Secure Hash Algorithm که گاها به صورت شا 256 نیز تلفظ میشود، یک الگوریتم هشینگ (Hashing) است که شیوه ای برای رمزگذاری یک طرفه است. یعنی به کمک آن میتوان یک عبارت را رمزگذاری کرد بدون آنگه امکان رمزگشایی آن وجود داشته باشد.
در این الگوریتم عبارت وارد شده به یک عبارت 256 بیتی تبدیل میشود. مهم نیست که عبارت ورودی چه چیزی باشد، خروجی آن همیشه 256 بیت خواهد بود. برای مثال اگر شما عبارت X را با کمک این الگوریتم هش کنید، حتی با هزار تلاش پی در پی همچنان نتیجه یکسان دریافت خواهید کرد. در مثال زیر چندین عبارت هش شده که هش آن به صورت یک رشته کد هگز با طول 64 کاراکتر نوشته شده است:
چه اطلاعاتی در یک تراکنش ذخیره میشود؟
محتویات دقیق یک تراکنش به نحوه طراحی شبکه و نوع تراکنش ها بستگی دارد، اما یک transaction عموما شامل این موارد میشود:
- آدرس فرستنده و گیرنده: آدرس منحصر به فرد، که مشخص میکند فرستنده و گیرنده در کجای شبکه قرار دارند.
- مقدار تراکنش: مقدار یا مبلغ تراکنش مشخص میکند که چه مقدار از سهم فرستنده به سهم گیرنده منتقل خواهد شد.
- زمان و تاریخ تراکنش: مهر زمانی (timestamp) مربوط به زمان انجام تراکنش که معمولا به صورت مهر زمانی Epoch است که در سیستم عامل های Unix مورد استفاده قرار میگیرد.
- کارمزد تراکنش (Fee): مقدار کارمزدی است که به افرادی که اعتبار سنجی تراکنش را انجام داده اند پرداخت میشود.
- کد تراکنش: هش تراکنش یا Transaction hash یا TX hash که یک عبارت منحصر به فرد برای هر تراکنش است (در ادامه توضیح داده خواهد شد).
در نهایت، اگر امید 50 دلار به حساب مهسا واریز کند، تراکنش آن به اینصورت خواهد بود:
در ابتدا آدرس فرستنده و گیرنده نوشته شده است که در هر شبکه متفاوت است و به صورت حروف کاملا تصادفی و منحصر به فرد ایجاد شده است. در قسمت دیگر مبلغ تراکنش (Amount) وجود دارد که مبلغ مورد نظر برای انتقال است. فی شبکه نیز مربوط به کارمزد صحت سنجی و تایید تراکنش است که به ماینری که تراکنش را تایید کرده است تعلق میگیرد.
مهر زمانی یا timestamp زمان انجام تراکنش است. مهر زمانی به صورت یک عدد نمایش داده میشود که بیانگر ثانیه های گذشته شده از تاریخ 1 ژانویه 1970 ساعت 00:00:00 به وقت گرینویچ است. این فرم زمانی با نام Epoch timestamp نیز شناخته میشود.
در هش تراکنش یا همان TX hash تمامی اطلاعات تراکنش (مثل آدرس فرستنده و...) با کمک الگوریتم SHA-256 هش و در همان تراکنش ذخیره میشود.
بلاکچین (Blockchain) چیست؟
در بخش های قبلی درمورد روش اثبات PoW توضیح داده شد که در آن ماینر ها تراکنش های انجام شده را مورد بررسی قرار میدهند. حال پس از تایید تراکنش ها آنها را به صورت دسته بندی شده در یک بلاک (Block) قرار میدهند. یک بلاک شامل اطلاعاتی مثل مهر زمانی، لیست تراکنش ها، هش بلاک و... هستند که اطلاعاتی درمورد آن بلاک را نشان میدهند که در هدر (header) بلاک ذخیره میشوند.
ماینر ها با جمع آوری لیستی از تراکنش ها و قرار دادن آنها در بلاک معادلات ریاضی پیچیده ای را انجام میدهند تا به نتیجه دلخواه برسند. یکی از اطلاعات کلیدی در بلاک، عبارت nonce است. این عبارت یک کلید منحصر به فرد است که کمک میکند عبارت Hash آن بلاک به نتیجه مطلوب برسد. عبارت مطلوب یک هش در بلاک، با تعدادی صفر شروع میشود که تعداد این صفر ها به سطح پیچیدگی شبکه در لحظه بستگی دارند و با تغییر مکرر nonce میتوان به هش مورد نظر دست یافت.
عبارت دیگری در هدر تحت عنوان Previous Hash یا هش قبلی وجود دارد که به هش بلاک قبلی اشاره میکند. با این کار اگر در یک بلاک تغییری رخ دهد هش آن تغییر میکند و Previous Hash در بلاک بعدی نیز نامعتبر خواهد بود. در ادامه هش آن بلاک نیز نامعتبر و در نتیجه کل بلاکچین نامعتبر خواهد بود که به این معناست که بلاک ها پس از تایید و ثبت نهایی قابل تغییر نخواهند بود. به مجموعه این بلاک ها بلاکچین (Blockchain) گفته میشود که تاریخچه تمامی تراکنش های انجام شده در آنها وجود دارد.
لجر (Ledger) چیست؟
یک لجر یک دیتابیس از تراکنش های ثبت شده در بلاکچین است. یک لجر شامل تمام اطلاعاتی است که مجموعه تراکنش ها نیاز دارند، از جمله شناسه تراکنش، آدرس فرستنده و گیرنده، مبلغ تراکنش ها، کارمزد پرداخت شده به ماینر ها و یا اعتبار سنج ها، امضای دیجیتال و... به عبارت دیگر به مجموعه بلاک های موجود در یک شبکه لجر یا Ledger میگوییم.
لجر سخت افزاری نوعی از کیف پول های سخت افزاری هستند که به شما امکان ذخیره لجر ها را به صورت فیزیکی و بر روی یک درایو سخت افزاری میدهند.
ماین کردن (Mining) چیست؟
ماین کردن به روند اعتبار سنجی تراکنش های انجام شده گفته میشود که Node های شبکه با اعتبار سنجی تراکنش ها کارمزد خود را دریافت میکنند. به این فرآیند ماین کردن گفته میشود که معمولا توسط کامپیوتر های قدرتمند انجام میشود که به آنها ماینر (Miner) نیز گفته میشود. هرچه ماینر بتواند سریع تر تراکنش انجام شده را اعتبار سنجی کند و آنها را در یک بلاک قرار دهد و یک بلاک جدید به شبکه اضاف کند، زود تر از سایرین ماینر ها در شبکه پاداش را دریافت میکند و در نتیجه درآمد بیشتری نیز خواهد داشت.
چگونه بلاکچین در روش های پرداختی تحول ایجاد خواهند کرد؟
ارز های دیجیتال به صورت کاملا ناشناس منتقل میشوند، که یعنی هر شخص در هر کجای دنیا بدون نیاز به واسط و صرافی های متعدد میتواند ارز مورد نظر خود را منتقل کند. این کار باعث یکپارچه شدن سیستم های پرداختی میشود که میتواند تحول عظیمی ایجاد کند.
همچنین به کمک تکنولوژی هایی مثل Smart contract میتوان قرارداد های هوشمند و الکترونیکی تنظیم کرد تا بدون نیاز به واسط، قرارداد های مختلفی ایجاد کرد و پس از پایان قرارداد هزینه ها پرداخت شوند که این امکان را فراهم میکند تا تنها با پرداخت مبلغ ناچیزی به واسط، معاملات خود را انجام دهیم.
بلاکچین چه تاثیری در اینترنت خواهد داشت؟
با توجه به مزایا و قدرت بالای این تکنولوژی، میتوان برنامه های غیر متمرکز ایجاد کرد. این برنامه ها به حفظ حریم خصوصی کاربران و حفظ منابع کمک بسیاری خواهد کرد. نسخه وب 3 یا همان Web 3.0 یکی از این تحولات عظیم در دنیای اینترنت است که به تجربه اینترنت آزاد توسط کاربران کمک زیادی خواهد کرد.
جمع بندی
در این مقاله به توضیح مفاهیم کلی درمورد تکنولوژی بلاکچین و شبکه های متمرکز و غیرمتمرکز پرداختیم. اگرچه برای توضیح این مفاهیم به زبان ساده ممکن است برخی از مطالب گفته شده کمی از مفهوم اصلی دور شده باشند اما در آینده سعی خواهیم کرد مطالب بیشتری درمورد شبکه های غیر متمرکز و وب 3 منتشر کنیم.