اگر شما مهندس نرم افزاری هستید که میخواهید توسعه بلاک چین اتریوم را شروع کنید، شناخت تمام ابزارها و فناوری های موجود در ابتدا میتواند بسیار سخت و طاقت فرسا باشد. در این مقاله قصد داریم به توضیحی در مورد بهترین ابزارهای توسعه موجود برای ایجاد برنامه های غیرمتمرکز و تعامل با بلاک چین اتریوم بپردازیم.
اصطلاحات بسیار زیادی نظیر کیف پول ها و مرورگرهای غیرمتمرکز، ترافل (Truffle)، گاناش (Ganache)، اینفورا (Infura)، پریتی (Parity) و گث (Geth) وجود دارند که میتوانند سردرگم کننده و مانعی در مسیر یادگیری بلاک چین باشند.
بنابراین تصمیم گرفتیم تا راهنمایی برای شما آماده کنیم که به معرفی و توضیح بسته ها و ابزارهای نرم افزاری میپردازد و عملکردهای هر کدام را به طور مختصر مرور میکند.
امیدواریم که این راهنما، دید بهتری از اکوسیستم اتریوم و نحوه قرارگیری بخش های مختلف این بلاک چین به شما بدهد و به یادگیری شما از این فناوری جدید و جالب سرعت ببخشد.
زبان برنامه نویسی سالیدیتی (Solidity)
سالیدیتی (Solidity) محبوب ترین زبان برنامه نویسی برای نوشتن قراردادهای هوشمند بر بستر بلاک چین اتریوم میباشد. سالیدیتی یکی از زبان های برنامه نویسی سطح بالا میباشد و هنگامی که کامپایل میشود، به بایت کدهای EVM (ماشین مجازی اتریوم) تبدیل میشوند. سالیدیتی شباهت بسیار زیادی با اکوسیستم جاوا دارد که در آن، زبان هایی نظیر اسکالا، گرووی، کلوژر و جی روبی، بایت کدهایی تولید میکنند که در JVM (ماشین مجازی جاوا) اجرا میشوند.
کامپایلر سالیدیتی Solc
کد سالیدیتی ممکن است شبیه جاوااسکریپت به نظر برسد اما هم چنان باید آن را کامپایل کنید. Solc مترجم کدها از زبان قراردادهای هوشمند سالیدیتی به بایت کد اتریوم است و حتی میتواند در خط فرمان و برای وظایف سریع و تایید آنی توسعه ها اجرا شود.
ریمیکس، IDE تحت مرورگر
ریمیکس برای دیباگینیگ (اشکال زدایی) بسیار مناسب است و به شما این امکان را میدهد تا قرارداد را مستقیما وارد مرورگر کنید و این امر بسیار سودمند است. باید تا زمانی از ریمیکس استفاده کنید که برنامه غیرمتمرکز شما بدون وجود هیچگونه باگی کامپایل شود. ۳ گزینه برای تعامل ریمیکس با بلاک چین ها از طریق مرورگر وجود دارد که عبارتند از:
- استفاده از ماشین مجازی جاوااسکریپت (JVM)
- وجود افزونه web3 (برای مثال افزونه متامسک برای مرورگر کروم)
- اتصال به ارائه دهنده web3 (همانند اینفورا)
ماشین مجازی جاوااسکریپت (JVM) روشی خوب برای شروع میباشد. JVM محدودیت گس ندارد، مقدار اتر نامحدود برای ۵ حساب ارائه میدهد و دیباگ آن بسیار سریعتر است.
مرورگر غیرمتمرکز میست (Mist)
میست (Mist) مرورگری برای برنامه های غیرمتمرکز است. این مرورگر همانند کروم و فایرفاکس میباشد اما برای برنامه های غیرمتمرکز است. میست هنوز از امنیت کاملی برخوردار نیست، بنابراین نباید با برنامه های غیرمتمرکز غیر مطمئن استفاده شود.
اتریوم والت
کیف پول اتریوم نسخه ای از میست (Mist) است اما فقط یک برنامه غیرمتمرکز اجرا میکند: اتریوم والت. میست و اتریوم والت فقط رابط کاربری میباشند، بنابراین هم چنان به هسته ای نیاز داریم تا ما را به بلاک چین اتریوم متصل کند. میتوان از میست برای ایجاد کیف پول، ذخیره سازی اتر، ارسال تراکنش ها، اجرای قراردادها و امور دیگر استفاده کرد.
متامسک (پلاگین مرورگر)
اگر در حال ایجاد برنامه غیرمتمرکزی هستید که کاربران از آن استفاده کنند، پس پشتیبانی از متامسک (MetaMask) یکی از نکاتی است که حتما باید وجود داشته باشد. میتوانید متامسک را به عنوان پلی در نظر بگیرید که به شما امکان میدهد تا در مرورگر خود و با استفاده از این افزونه و بدون اجرای نود کامل اتریوم به مشاهده اینترنت توزیع شده بپردازید.
متامسک برای کروم، فایرفاکس، اپرا و بریو در دسترس است و به کاربران امکان میدهد تا به طور ایمن به مدیریت حساب های اتریوم و کلیدهای خصوصی بپردازند و از این حساب ها برای تعامل با وبسایت هایی استفاده کنند که از web3.js بهره میبرند.
پس از نصب متامسک، مرورگر میتواند با تمام وبسایت هایی که با بلاک چین اتریوم ارتباط برقرار میکنند، تعامل داشته باشد.
نکته: متامسک از سرورهای اینفورا به عنوان ارائه دهنده Web3 استفاده میکند اما کاربران میتوانند ارائه دهنده مورد نظر خود را انتخاب کنند.
رابط کاربری web3.js
رابط کاربری web3.js چیست؟
رابط کاربری web3.js برای تعامل با بلاک چین استفاده میشود و کتابخانه جاوااسکریپتی است که برای تعامل با نود اتریوم از طریق برنامه غیرمتمرکز تحت وب قابل استفاده است. به یاد داشته باشید هر نود شبکه حاوی نسخه ای از بلاک چین میباشد. هنگامی که میخواهید عملکردی در قرارداد هوشمند فراخوانی کنید، باید از یکی از این نودها درخواست کنید و آدرس قرارداد هوشمند و عملکرد مورد نظر خود را به نود بگویید.
نودهای اتریوم با زبانی به اسم JSON-RPC صحبت میکنند که قابل خوانش توسط انسان نیست. خوشبختانه Web3.js این مشکل را پنهان میکند و رابط کاربری جاوااسکریپت آشناتری شبیه زیر ارائه میدهد.
MyTeam.methods.createRandomPerson("Vitalik Nakamoto").send({ from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", gas: "3000000" })
ابتدا با جاواسکرپیت حاوی Web3 در پروژه شروع میکنیم:
میتوانید Web3 را به پروژه اضافه کنید. یا میتوانید فایل js. را از گیت هاب دانلود کنید و در پروژه قرار دهید.
<script language=”javascript” type=”text/javascript” src=”web3.min.js”></script>
سپس میتوان با استفاده از ارائه دهنده Web3 با بلاک چین صحبت کنید:
تنظیم ارائه دهنده Web3 در web3.js به کد ما میگوید که با کدام نود باید صحبت کنیم تا خواندن و نوشتن را مدیریت کنیم. این امر تا حدودی مشابه با تنظیم URL سرور ریموت وب برای فراخوانی API در برنامه های اینترنتی سنتی است.
میتوانید نود اتریوم خود را به عنوان ارائه دهنده میزبانی کنید. هرچند سرویس شخص ثالثی وجود دارد که زندگی شما را آسانتر میکند، از اینرو به حفظ نود اتریوم خود یا همان اینفورا نیازی ندارید.
اینفورا (زیرساخت به عنوان سرویس یا IaaS)
اینفورا یک محصول IaaS است که به توسعه دهندگان، مجموعه ابزاری برای اتصال برنامه ها به شبکه اتریوم و سایر پلتفرم های غیرمتمرکز ارائه میدهد. متامسک، کریپتوکیتی ها، UJO و uPort از API های اینفورا برای اتصال برنامه های خود به شبکه اتریوم استفاده میکنند. اینفورا زیرساخت مورد نیاز برای مدیریت صعودهای کوتاه مدت و راهکارهای مقیاس پذیری بلندمدت ارائه میدهد. اینفورا شامل API با استفاده آسان و ابزارهای توسعه دهندگان برای دسترسی ایمن، مطمئن و مقیاس پذیر به اتریوم و IPFS میشود.
هم چنین میتوانید برای استفاده از اینفورا به عنوان ارائه دهنده Web3 به صورت زیر عمل کنید:
var web3 = new Web3(new Web3.providers.WebsocketProvider(“wss://mainnet.infura.io/ws”));
گث (Geth)؛ زبان برنامه نویسی گو – اتریوم
گث (Geth) کلاینت رسمی ارائه شده توسط بنیاد اتریوم است و با زبان برنامه نویسی گو (Go) نوشته شده است و کاربرد اصلی آن نیز متصل کردن شما به بلاک چین میباشد. گث هم چنین میتواند بلاک چین آزمایشی یا داخلی جدید ایجاد و قرارداد ایجاد کند، اتر استخراج کند و امور دیگری نیز انجام دهد. گث، کلاینت خط فرمان اصلی اتریوم است.
گث نقطه شروع ورود به اتریوم میباشد و قابلیت اجرا به عنوان نود کامل (به طور پیش فرض) نود بایگانی (ذخیره تمام وضعیت های گذشته) و نود سبک (دریافت زنده اطلاعات) را دارد.
سایر فرآیندها از گث میتوانند به عنوان درگاهی به شبکه اتریوم از طریق اندپوینت های JSON RPC بر بستر HTTP، وب سوکت و یا انتقال دهنده های IPC استفاده کنند. گث علاوه بر آنکه تمام قابلیت های میست را دارد، هم چنین دارای عملکردهای مهمی نظیر اندپوینت RPC برای اتصال به بلاک چین بر بستر HTTP میباشد. گث دارای ۳ بخش اصلی است که شناخت آنها از اهمیت بیشتری برخوردار است.
۱- کلاینت دائمون (Daemon): این کلاینت به سایر کلاینت های شبکه (نودها) متصل میشود و نسخه ای از بلاک چین را دانلود میکند. دائمون همواره با سایر نودها در ارتباط است تا نسخه بلاک چین خود را به روز نگه دارد. هم چنین قابلیت استخراج بلاک ها و افزودن تراکنش ها به بلاک چین را دارد، تراکنش های موجود در بلاک را تایید میکند و هم چنین تراکنش ها را اجرا میکند.
۲- کنسول گث: کنسول گث یک ابزار خط فرمان است که به شما امکان میدهد تا به نود در حال اجرای خود متصل شوید و اقدامات مختلفی نظیر ایجاد و مدیریت حساب ها، درخواست از بلاک چین، امضا و ثبت تراکنش ها در بلاک چین و غیره انجام دهید.
۳- مرورگر میست: همانطور که توضیح داده شد، میست یک برنامه رایانه ای است و برای ارتباط با نود شما استفاده میشود. تمام اقداماتی که با استفاده از کنسول گث انجام میدهید را میتوانید از طریق رابط کاربری گرافیکی (GUI) میست به دست آورید.
چارچوب ترافل (Truffle)
درست همانند چارچوبی که برای توسعه برنامه های تحت وب دارید، ترافل نیز محبوب ترین چارچوب مورد استفاده برای توسعه برنامه های غیرمتمرکز است. ترافل بسیاری از پیچیدگی های کامپایل کردن و اجرای قرارداد در بلاک چین را ساده میکند.
ترافل، استاندارد طلایی برای بلاک های در حال ایجاد شدن است تا برنامه های غیرمتمرکز بلاک چین را سریعا ایجاد، کامپایل، اجرا و آزمایش کنند. ترافل یک محیط توسعه، چارچوب آزمایش و کانال ارتباطی برای بلاک چین هایی است که از ماشین مجازی اتریوم استفاده میکنند. به عبارت دیگر، ترافل به شما کمک میکند تا قراردادهای هوشمند توسعه دهید، آنها را منتشر و آزمایش کنید.
ویژگی هایی که ترافل ارائه میدهد عبارتند از:
- مجموعه ای از قراردادهای هوشمند، اتصال و اجرای آنها.
- آزمایش خودکار قراردادها برای توسعه سریعتر آنها.
- چارچوب اجرای توسعه پذیر.
- اجرای نامحدود شبکه های خصوصی و عمومی.
- بسته مدیریتی با EthPM و NPM.
- کنسول تعاملی برای ارتباط مستقیم قراردادها.
- کانال ارتباطی قابل تنظیم.
هم چنین ترافل دارای بلاک چین شخصی میباشد که برای آزمایش میتوان از آن استفاده کرد.
این بلاک چین فقط در سیستم شما وجود دارد و با شبکه اصلی اتریوم تعامل برقرار نمیکند. میتوانید با استفاده از فرمان توسعه ترافل، این بلاک چین را ایجاد کنید و با آن تعامل داشته باشید. این امر، بلاک چین توسعه ای در پورت ۹۵۴۵ ایجاد خواهد کرد.
گاناش: بلاک چین آزمایشی شخصی
از آنجایی که نوشتن در بلاک چین با هزینه کردن اتر همراه است، آزمایش قراردادهای هوشمند در بلاک چین آزمایشی که در آن، اترهای آزمایشی هزینه میکنید ایده خوبی میتواند باشد.
اگرچه ترافل یک کنسول و بلاک چین شخصی دارای تمام ویژگی های مورد نیاز است، اما میتوانید از گاناش که برنامه رایانه ای است استفاده کنید تا بلاک چین شخصی خود را عرضه کنید. گاناش ابزاری است که یادگیری و شناخت آن برای کسانی که در حوزه اتریوم و بلاک چین تازه وارد میباشند آسانتر است، زیرا اطلاعات بسیار بیشتری را نمایش میدهد. تنها کار اضافه ای که باید انجام دهید این است که فایل تنظیمات ترافل را ویرایش کنید تا به صورت گاناش درآید.
گاناش برای سیستم عامل های ویندوز، مک و لینوکس در دسترس میباشد. قبلاً به گاناش، TestRPC میگفتند اما پس از ترکیب آن با مجموعه ترافل، به گاناش تغییر نام داد.
پریتی (Parity)؛ کلاینت نوشته شده با زبان برنامه نویسی Rust
پریتی (Parity) یکی از کلاینت های اتریوم است که با زبان برنامه نویسی سطح پایین راست (Rust) نوشته شده است.
پریتی یک کلاینت غیررسمی است و متعلق به شرکت پریتی است. این شرکت توسط دکتر گاوین وود، مدیر ارشد فنی سابق اتریوم تاسیس شده است. این کلاینت، روشی سریع و سبک برای اجرای نودهای اتریوم است. پریتی یک ارتقای چشمگیر از گث میباشد و کاملا از اول نوشته شده است و تاکید اصلی آن بر کارایی و راندمان میباشد. تمام واحدهای منطقی مهم آن ۱۰۰ درصد آزمایش شده اند، تمام API های عمومی ثبت شده اند و تمام کدهای آن توسط چندین نود مورد بررسی قرار گرفته اند.
زپلین (Zeppelin)؛ متن باز برای نوشتن قراردادهای هوشمند ایمن
اگر قرارداد هوشمندی مینویسید که با پول سایر کاربران سروکار دارد، باید مطمئن شوید که این قرارداد هوشمند کاملا ایمن است. زپلین (Zeppelin) کتابخانه ای برای نوشتن قراردادهای هوشمند است. اگر با ترافل کار کرده باشید که زپلین برای شما بسیار آسان تر خواهد بود.
فایل سیستم بین سیاره ای یا IPFS
فایل سیستم بین سیاره ای یا IPFS یک سیستم ذخیره سازی غیرمتمرکز است. این سیستم ارتباط مستقیم با اتریوم ندارد اما میتواند با اتریوم ترکیب شود. میتوانید شباهت ها و تفاوت های IPFS و سوارم (Swarm) را در آدرس زیر مطالعه کنید:
https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM
به طور خلاصه میتوان گفت که IPFS از لحاظ بلوغ کدی، مقیاس پذیری، پذیرش، وجود جامعه های مختلف و تعامل با جامعه های توسعه دهندگان بسیار پیشرفته تر است.
امیدواریم که از مطالعه این مقاله در خصوص بهترین ابزارهای توسعه موجود برای ایجاد برنامه های غیرمتمرکز و تعامل با بلاک چین اتریوم لذت برده باشید.