وب از 1 تا 3
خدا در ابتدا web1.0 را آفرید!!!!
در ابتدای پیدایش وب (که آن را با نام Web 1.0 می شناسیم) دنیای وبسایت ها تنها شامل لینک ها و داکیومنت هایی بود که میتوانستید به آنها دسترسی داشته باشید و آن ها را مطالعه کنید. در سال 2004 اما با معرفی Web 2.0 و ظهور فروشگاه های اینترنتی، فیسبوک، یوتیوب و توییتر به فراموشی سپرده شد. در این گذار از نسخه ی 1 به 2، از بین تمام وبسرویس های موجود تنها 3 شرکت باقی ماندند و همه چیز را در اختیار گرفتند:
- گوگل
- فیسبوک
- آمازون
تفاوت نسخه ی 2.0 و 1.0 در این بود که در نسخه ی 2.0 امکان ارتباط کاربر با وبسایت ها نیز وجود داشت و به این وبسایت ها، وب اپلیکیشن نیز گفته می شد. در این دوره تعداد کاربران اینترنت رشد به سزایی داشت و اینترنت به بخش اساسی زندگی روزمره ی ما تبدیل شد.
ما دیگر حتی ساده ترین کارهای خود مانند پیام دادن و خرید کردن را از طریق وب اپلیکیشن ها انجام میدهیم و خلاصه اینکه دنیا برایمان گلستان است (اگر افت ارزش ریال و زندگی در ایران را نادید بگیریم!)
در کنار نسخه ی 2.0 که در حال حاضر هنوز جای رشد و بهبود دارد و رو به پیشرفت است، با تکنولوژی جدیدی به نام Web 3.0 آشنا شدیم که وعده ی اینترنت غیر متمرکز ( Decentralized ) و امن را به ما داد!
ظهور Web 3
قرار است Web 3.0 به ما این امکان را بدهد تا اطلاعات و تراکنش های خود را بدون نیاز به یک سیستم واسط (مانند بانک یا سرویس ها اشتراک اطلاعات) به صورت غیر متمرکز پیاده سازی کنیم؛ در ادامه ی این مقاله به دنیای پیچیده ی Web 3.0 سری میزنیم و از رازهای آن پرده بر میداریم.
از بزرگ نمایی تا واقعیت
در ابتدا دو سوال مهم را مطرح می کنیم!
- آیا Web 3.0 بزرگنمایی شده؟
- آیا Web 3.0 ارزش یادگیری دارد؟
جواب هردو سوال بالا بله است!
هدف Web 3.0 بازگرداندن اینترنت و اطلاعات به دستان مردم و حذف کنترل شرکت های بزرگ بر روی اینترنت است، اما در عمل بیشتر مالکیت Web 3.0 در دستان چند شرکت سرمایه گذاری و شرکت های بزرگ دیگر است. مثلا در نمودار های زیر رنگ آبی پر رنگ میزان مالکیت مردم، رنگ سبز میزان مالکیت وعده داده شده در آینده به مردم، رنگ قرمز مالکیت اشخاص و سازمان های حقوقی، و رنگ خاکستری مالکیت توسعه دهندگان اصلی در شبکه های Web 3.0 است.
با در نظر گرفتن نمودار بالا آیا هنوز هم باید به غیر متمرکز ( Decentralized ) بودن بلاک چین ها و Web 3.0 ایمان داشت؟!
در کل علت فعلی توجه فراوان به Web 3.0 (و فرآورده های آن!) ترس از جاماندن ( Fear of missing out (FoMO) ) است. این ترس باعث شده که در مواجه با Web 3.0 ابتدا افراد دچار ترس از دست دادن فرصت شوند و سپس در یک اقدام وسواس گونه به مواجه با Web 3.0 بپردازند! به علت این رفتار مردم در مواجه با Web 3.0، دنیای Web 3.0 پر از کلاهبرداری و اتفاقات عجیب و غریب است.
نمودار های مختلف به ما سرعت رشد Web 3.0 نسبت به اینترنت را نشان میدهند؛ ولی این نمودارها احمقانه هستند، چرا که Web 3.0 بر روی اینترنت استوار است و عملا رشد Web 3.0 بخشی از رشد اینترنت فعلی است. Web 3.0 همیشه بخشی از اینترنت خواهد بود و هیچوقت از اینترنت بزرگتر نخواهد شد، اما این مسئله به معنی بی ارزش بودن یا بد بودن Web 3.0 نیست.
اپلیکیشن های غیر متمرکز (Dapp)
اولین چیزی که یک برنامه نویس بی سواد، کم سواد و یا یک کلاهبردار بلاکچین به شما میگوید این است:
برنامه های Decentralized از قبل تر از بلاک چین و web3 وجود داشتند و تکنولوژی Decentralized چیز تازه ای نیست. حتی برنامه های قدیمی تری مانند بیت تورنت تقریبا 100 میلیون کاربر فعال روزانه دارند که هیچ چیزی در دنیای web3 انقدر کاربر روزانه ندارد!
البته در کنار در نظر گرفتن این مسئله زمانی که شما قصد ایجاد یک اقتصاد یا شرکت در یک فعالیت اقتصادی را داشته باشید باید بتوانید به زبان پول هم صحبت کنید و در این صورت به خرید و هزینه کردن کریپتوکارنسی نیاز خواهید داشت. البته میتوانید به عنوان ماینر هم شروع به فعالیت کنید!
ماینر چیست؟
ماینر یک سیستم کامپیوتری است که تراکنش ها را بررسی و تایید و یا رد میکند و در کنار این مسئله سعی در پیدا کردن بلوک اصلی بعدی در شبکه ی بلاکچین می کند. درآمد ماینر بر اساس میزان مشارکت در بررسی تراکنش ها و موثر بودن آن در پیدایش بلوک اصلی محاسبه می شود.
نحوه ی عملکرد Dapp
اپلیکیشن های Dapp مبتنی بر بلاکچین عموما مانند اپلیکیشن های دیگر هستند با این تفاوت که شبکه ی بلاکچین آنها مجموعه ای از ماینرهاست که برای تمام دسته داده ها یک وضعیت واحد در نظر میگیرند.
قبل از مشاهده ی ساختار اپلیکیشن های Dapp بیاید ابتدا ساختار مرسوم فعلی اپلیکیشن ها را بررسی کنیم! در ساختار مرسوم شما یک برنامه را با استفاده از زبان یا فریم ورک مورد علاقه ی خود می نویسید و سپس آن را بر روی یک زیرساخت (سرور یا ابر) دیپلوی می کنید.
در Dapp ها هم تقریبا همین اتفاق می افتد اما باید با زبان برنامه نویسی مورد علاقه ی خود یک قرارداد هوشمند بنویسید و برنامه را به عنوان یک قرارداد هوشمند روی یک شبکه ی بلاکچین که میتواند قرارداد هوشمند شما را اجرا کند، دیپلوی کنید.
علاوه بر زبان هایی مانند پایتون، جاوااسکریپت، ++C و یا Rust که میتوانید با آنها قرارداد هوشمند بنویسید، یک زبان برنامه نویسی به نام Solidity نیز فقط برای همین کار وجود دارد.
احراز هویت کاربر
بر خلاف برنامه های مرسوم فعلی، در Dapp ها اطلاعات کاربر کاملا متعلق به خودش است و دیگر نیازی به ثبت نام در سایت شما و مدیریت توکن ها و سشن ها وجود ندارد. در Dapp ها احراز هویت کاربران از طریق کلید عمومی کیف پول خود آنها انجام می شود و برخی کیف پول ها امکان دسترسی به این کلید را از طریق مرورگر میدهند. این کلید صرفا برای دریافت دارایی استفاده می شود و با داشتن آن کسی نمی تواند اموال شما را به سرقت ببرد.
توکن یا NFT چیست؟
ارزهای دیجیتال FT (توکن های قابل تعویض یا fungible token) هستند و N در NFT به معنای Non (غیر) است. اما Token چیست؟
توکن چیست؟
به هر نوع دارایی دیجیتال Token گفته می شود. در صورتی که در یک شبکه ی بلاکچین یک توکن با یک توکن دیگر برابر باشد (همیشه 1 بیت کوین برابر با 1 بیت کوین است) به آن قابل تعویض گفته می شود و زمانی که برابر نباشد، غیر قابل تعویض یا NFT نام دارد.
در واقع NFT یک قرارداد هوشمند است که یک فایل را برابر با مقدار مشخصی از FT در یک شبکه قرار می دهد.
فرانت اند برنامه های Web3
در حقیقت بیشتر آنها شبیه برنامه های فرانت اند فعلی هستند!
البته فقط احراز هویت آنها فرق دارد که قبل تر توضیح دادیم. برای دسترسی به اطلاعات کیف پول هم کتابخانه های مختلفی وجود دارد (مانند web3.js یا ethers.js)
در فرانت اند این برنامه ها با چند مفهوم زیر سر و کار داریم:
- ارائه دهنده ی کیف پول یا Provider (مانند کیف پول Metamask)
- امضا کننده یا Signer (مثل User در برنامه های معمولی فرانت)
- قرارداد یا Contract (همان قرارداد هوشمند)
بک اند برنامه های Web3
بک اند Dapp ها ترکیبی از برنامه های مرسوم بک اند و قراردادهای هوشمند است. کتابخانه های زیادی نیز وجود دارند که اجازه ی استفاده از قرارداد های هوشمند در داخل فریم ورک های مورد علاقه ی ما را به ما میدهند. البته سرویس هایی نیز وجود دارند که به صورت خودکار برای ما قراردادهای هوشمند قابل کپی کردن در برنامه ی اصلی را آماده می کنند. معروف ترین این سرویس ها OpenZeplin است.
تست قرارداد هوشمند
کتابخانه هایی که امکان افزودن قراردادهای هوشمند را به ما میدهند، معمولا امکان تست کردن آن ها در localhost را فراهم می کنند؛ در واقع یک تعداد کاربر (کیف پول) غیر واقعی با دارایی های متفاوت (و متاسفانه غیر واقعی) ایجاد میکنند که بی صبرانه مایل هستند تا هر لحظه هزاران دلار را در برنامه ی شما هزینه کنند.
ذخیره سازی و فراخوانی داده ها
بلاک چین نسبت به سرویس های مرسوم فعلی بسیار بسیار بسیار بسیار ... کند است و بازهم نیاز به سرویس های ذخیره سازی (مثل دیتابیس و فضای ذخیره سازی) و Caching وجود دارد. البته سرویس های غیر متمرکزی نیز مانند IPFS وجود دارند که میتوانید آن را جایگزین Caching و فضای ذخیره سازی کنید و دیتابیس های زیادی نیز مانند OrbitDB نیز وجود دارند که بر پایه ی IPFS بنا شده اند و نیاز به دیتابیس های کلاسیک را رفع می کنند.
از کجا شروع کنیم!؟
برای شروع کار یک راه از بین دو راه زیر را انتخاب کنید و با آن پیش بروید!
- زبان Solidity را یاد بگیرید و به عنوان توسعه دهنده ی قرارداد هوشمند شروع به فعالیت کنید.
- پایتون یا جاوااسکریپت را یاد بگیرید و به سراغ فریم ورک های بک اند مرسوم آنها رفته، سپس اولین قراردادهای هوشمند خود را بر پایه ی همین زبان ها بنویسید و سپس Solidity را بیاموزید و به عنوان یک توسعه دهنده ی بک اند، مسلط به قرارداد های هوشمند در هر دو زمینه فرصت فعالیت داشته باشید.