صفر تا صد قراردادهای هوشمند با solidity
زبان Solidity در سال 2014 توسط Gavin Wood، Yuichi Hirai، Christian Reitwisner و Alex Beregszas معرفی شد Solidity .یک زبان برنامه نویسی شی گرا سطح بالا است که از زبان های برنامه نویسی JavaScript، Python و C++ الهام گرفته شده است. نمادهای این زبان مشابه نمادهای استفاده شده در زبان برنامه نویسی جاوا است. Solidity نیز متغیرها، کلاس ها و توابع خود را از جاوا گرفته است.
استفاده از یک زبان برنامه نویسی دقیق در صنعت ارزهای دیجیتال
از زبان برنامه نویسی Solidity برای ایجاد قرارداد هوشمند در بلاک چین اتریوم و انجام فعالیت های مرتبط در این شبکه استفاده می شود. قراردادهای هوشمند را می توان یک نوآوری بسیار مهم در انجام معاملات معتبر بدون دخالت اشخاص ثالث دانست. قرارداد هوشمند به سادگی یک پروتکل کامپیوتری است که در چندین بلاک چین پیادهسازی می شود. در این نوع قرارداد در صورت رعایت یک سری شرایط، دستورهای خاصی که توسط توسعه دهنده به آن داده می شود اجرا می شود. کلاس ها و کتابخانه های زیادی در سالیدیتی وجود دارد که می تواند به شما در توسعه قراردادهای هوشمند کمک کند.
ویژگی های منحصر به فرد این زبان که باعث ایجاد امنیت و شفافیت برای بلاک چین اتریوم شده است، کاربردهای دیگری نیز دارد. از دیگر کاربردهای این زبان می توان به امکان استفاده از آن در حراجی ها، حراج ها و فرآیندهای رای گیری اشاره کرد. همچنین جدا از نوشتن و ایجاد قراردادهای هوشمند در اتریوم، امکان توسعه و بهبود شبکه اتریوم را نیز ارائه می دهد. قراردادهای هوشمند از دو بخش متمایز و تخصصی داده و کد تشکیل شده و مستقیماً و بدون دخالت شخص ثالث با درج این زبان تخصصی ایجاد میشوند.
اگر بخواهیم به مهمترین کاربرد زبان Solidity بپردازیم، این زبان خاص باید با مشکل اتصال قسمت قبلی و بعدی شبکه بلاک چین به یکدیگر و سپس در نهایت به زنجیره مقابله کند. مجموعه ساخته شده است؛ با ایجاد چنین شبکه بلاک چینی، هیچ شانسی برای هک یا دستکاری تراکنش ها وجود نخواهد داشت.
از Solidity برای ایجاد قراردادهای هوشمند استفاده می شود که منطق تجاری را پیادهسازی می کند و مجموعه ای از سوابق تراکنش را در یک سیستم بلاک چین ایجاد می کند.
سالیدیتی ابزاری برای تولید کد در سطح ماشین و کامپایل آن در ماشین مجازی اتریوم (EVM) است، شباهت های زیادی با C و C++ دارد و یادگیری و درک آن بسیار آسان میباشد. به عنوان مثال، “main” در زبان C معادل “contract” در Solidity است همچنین این زبان مانند سایر زبان های برنامه نویسی، Solidity دارای متغیرها، توابع، کلاس ها، عملیات حسابی، تغییر رشته ها و خیلی مفاهیم دیگر است.
تکامل زبان برنامه نویسی Solidity
سالیدیتی یک زبان جدید و به سرعت در حال رشد است و در حال حاضر زبان اصلی اتریوم و سایر وب سایت های خصوصی است که روی پلتفرم های رقیب اجرا می شوند به عنوان مثال، Monax و Borough از Rail پرسرعت Tendermint برای رضایت استفاده می کنند.
سوئیفت یک اثبات مفهومی ایجاد کرده است که روی بورو Boro اجرا می شود و از Solidity استفاده می کند.
جامعه توسعه دهندگان اتریوم استانداردهایی را تعریف کرده است که نحوه استفاده از قراردادهای هوشمند Solidity برای ساخت برنامه های غیرمتمرکز روی اتریوم را کنترل می کند. برخی از آنها، که معمولا “توکن های استاندارد” نامیده می شوند، بسیار آشنا هستند در حالی که برخی دیگر کمتر آشنا هستند. در این قسمت چند مورد بیان شده است:
ERC-20: توکن استاندارد مثلی
ERC-721: استاندارد توکن بی نظیر
ERC-809: درک مفهوم محصولات “رقابتی” خیر کالایی که مصرف یک نفر مانع مصرف دیگری باشد مثلا رانندگی با ماشین رقابت محسوب می شود زیرا دو نفر نمی توانند همزمان با ماشین رانندگی کنند اما تماشای غروب خورشید اینطور نیست. این استاندارد توکن سطح اجاره را برای NFT های رقیب تعریف می کند و اجازه می دهد آنها را به سایر کاربران اجاره دهند.
ERC-864: مالکیت مشترک NFT ها را فعال می کند.
ERC-874: توکن های بی نظیری که به DAO ها اجازه می دهد تا به شرکت کنندگان قدرت رای دهند.
ماشین مجازی اتریوم ؟
ماشین مجازی اتریوم (EVM) زمان اجرا را برای قراردادهای هوشمند اتریوم فراهم می کند.
در ابتدا به تضمین امنیت و اجرای برنامه های غیرقابل اعتماد با استفاده از شبکه بین المللی گره های عمومی می پردازد.
ماشین مجازی اتریوم بر جلوگیری از حملات انکار سرویس و اطمینان از اینکه برنامهها به حالت دسترسی ندارند و بدون هیچ گونه تداخلی بین طرفین ارتباط برقرار میکنند، متمرکز است.
قراردادهای هوشمند چیست؟
اصطلاح قرارداد هوشمند برای اولین بار در سال 1994 ابداع شد و به ثبت قراردادها در قالب کد رایانه ای اشاره دارد. قرارداد زمانی نافذ می شود که شرایط مشخص شده محقق شود.
قراردادهای هوشمند بدون واسطه مانند بانک ها یا سایر موسسات، تراکنش های مستقل ایجاد می کنند. بیست و پنج سال پیش، فناوری برای پشتیبانی از این نوع کد وجود نداشت، بنابراین این ایده برای پیادهسازی آنقدر پیشرفته بود.
به لطف توسعه فناوری بلاک چین، اکنون امکان بستن قراردادهای هوشمند روی اتریوم و سایر بلاک چین ها وجود دارد. بیشتر از یک ارز دیجیتال، اتریوم یک پلتفرم توسعه مبتنی بر بلاک چین است که به سایر برنامه های مبتنی بر بلاک چین اجازه می دهد تا با استفاده از قراردادهای هوشمند روی آن ساخته شوند.
قرارداد هوشمند شامل چه مواردی میشود؟
دو طرف (افراد یا سازمان ها) با استفاده از کد رایانه موافقت می کنند.
با استفاده از زبان برنامه نویسی Solidity، قرارداد بر روی بلاک چین اتریوم اجرا می شود، به این معنی که تمام جزئیات قرارداد در یک دفتر کل ذخیره می شود.
هیچ یک از طرفین نمی توانند به تنهایی شرایط قرارداد را تغییر دهند.
تمامی تراکنشهای حاصل از قرارداد هوشمند به صورت خودکار و بدون واسطه انجام میشوند.
تمام تراکنش ها روی بلاک چین ثبت می شوند و برگشتناپذیر هستند.
در صورت عدم رعایت شرایط از پیش تعیین شده، تراکنش ها انجام نمی شود.
قراردادهای هوشمند با توانایی فناوری بلاک چین برای به خاطر سپردن تمام اطلاعات ممکن می شود و طرفین با مشکل اعتماد مواجه نمی شوند. طرفین درگیر، حتی مجبور نیستند به یکدیگر اعتماد کنند، زیرا توافق تنها زمانی بسته می شود که موارد توافق شده محقق شود.
انواع داده های زبان Solidity سالیدیتی
سالیدیتی از تمام داده های رایج موجود در سایر زبان های شی گرا پشتیبانی می کند، به عنوان مثال:
بولی Boolean – نوع داده Boolean بولی بسته به شرایط، در صورت صحیح بودن شرط، 1 و زمانی که نادرست است، 0 را برمی گرداند.
می توانید مقادیر صحیح را در Solidity به صورت علامت یا بدون علامت بسازید. Solidity همچنین از استثناهای زمان اجرا و کلمات کلیدی ‘uint8’ و ‘uint256’ پشتیبانی می کند.
رشته یک کلمه تک یا دوتایی می تواند نشان دهنده یک رشته باشد.
اعتبار سنجی قبل از اجرای کد قرارداد هوشمند، اعتباردهنده معمولاً درست بودن همه شرایط را بررسی می کند.
آرایه ها نیز نحوه برنامه نویسی Solidity مشابه سایر زبان های شی گرا است و از آرایه های یک بعدی و چند بعدی پشتیبانی می کند.
علاوه بر موارد فوق، زبان Solidity به توسعه دهندگان اجازه می دهد تا ساختارهای داده را با نوع شمارش enums، عملگرها و مقادیر هش نقشه برداری کنند تا مقادیر ذخیره شده در مکان های ذخیرهسازی خاص را بازیابی کنند.
ابزارهایی که توسعه دهندگان Solidity برای ایجاد قراردادهای هوشمند سازگار با Solidity استفاده می کنند:
Solgraph برای ایجاد نمودارهای DOT استفاده می شود که جریان کنترل عملیات قرارداد سالیدیتی را شبیه سازی می کند و آسیب پذیری های امنیتی را آشکار می کند.
Solidity REPL برای نوشتن کدهای خط فرمان در کنسول Solidity استفاده می شود.
EVM Lab ابزاری جامع که قادر به تعامل با ماشین مجازی اتریوم (EVM) است. این بسته شامل Etherchain API، trace viewer و ماشین مجازی است.
Evmdis کوتاه شده عبارت Ethereum Virtual Machine Disassembler، می تواند بایت کد را به صورت استاتیک تجزیه و تحلیل کند تا سطح بالاتری از انتزاع را نسبت به عملیات خام ماشین مجازی اتریوم ارائه دهد.
چگونگی استفاده از سالیدیتی در اتریوم
توانایی اتریوم برای پردازش سفارش های کدگذاری شده در Solidity چیزی است که آن را از سایر بلاک چین ها مانند بیت کوین متمایز می کند. بیت کوین فقط می تواند سفارش های مربوط به تراکنش های بیت کوین را پردازش کند، در حالی که Solidity به ماشین مجازی اتریوم اجازه می دهد تا سفارش های نامحدود را تفسیر کند.
هنگامی که یک برنامه نویس، قرارداد هوشمندی را در Solidity می نویسد، آن را از طریق کامپایلر اجرا می کند و آن را به دستورالعمل هایی تقسیم می کند که به صورت بایت کد نمایش داده می شوند. ماشین مجازی اتریوم می تواند یک بایت را بخواند و بر اساس آن عمل کند.
تولید بایت کد منجر به ظهور عنصر تعادل اقتصادی در فرآیند توسعه قراردادهای هوشمند می شود.تولید بایت کد به گاز اتریوم نیاز دارد که توسط خود کاربر پرداخت می شود.
اتریوم یک ماشین تورینگ کامل است. اساساً، هر کسی می تواند قرارداد هوشمند Solidity را برای انجام هر کاری روی پلتفرم برنامه ریزی کند. اما الزام سازنده به خرید مقدار کافی گاز این امکان را محدود می کند.
زبان های دیگری نیز وجود دارد که کامپایلرها می توانند روی بایت کد اجرا شوند، از جمله Serpent، Viper و Mutant. با این حال، همه آنها عملکرد یکسانی دارند، که عبارت است از کامپایل کدهای قابل خواندن توسط انسان در بایت کد برای اجرا توسط ماشین مجازی اتریوم.
تفاوت بین JavaScript، Solidity، Ethereum و Chaincode چیست؟
این سوالی است که اخیرا مطرح شده و در اینکه سؤال درست است شکی نیست! برای یک فرد با تجربه، موارد فوق ترکیبی از فناوری های مختلف به نظر می رسد که به طور تصادفی کنار هم قرار گرفته اند. مبتدیان در ابتدا به سختی می توانند تفاوت بین این عناوین را درک کنند.
اما بیایید به سؤال بالا پاسخ دهیم:
1-جاوا اسکریپت زبانی است که در طول زمان ترجمه می شود. این زبان برای برنامه ها و مرورگرهای فرانت اِند محبوب ترین است. اما برای برنامه هایی مانند NodeJS و Adobe Acrobat نیز کاربرد دارد.
2- سالیدیتی زبان سطح بالایی است. این زبان تا حدی پشت ECMAScript قرار دارد، به همین دلیل گفته می شود که شبیه جاوا اسکریپت است. اما شباهت بین این دو به اینجا ختم می شود. پایداری کامپایل می شود (تفسیر نمی شود) و معمولاً روی بلوک هایی کار می کند که ماشین مجازی اتریوم را درک می کنند. پس از کامپایل و استقرار، کد Solidity به عنوان یک قرارداد هوشمند عمل می کند و می تواند با آن تعامل داشته باشد.
3- اتریوم به دلیل پروتکل اتریوم معمولاً به عنوان بلاک چین شناخته می شود. بلاک چین اتریوم شبکه ای از گره ها است که بر اساس یک پروتکل خاص، به اصطلاح پروتکل اتریوم، بلوک ها را تولید و مبادله می کنند. تمام گره های شبکه باید این پروتکل را درک کنند.
4- Chaincode چِین کد مشابه قراردادهای هوشمند نوشته شده توسط Solidity است. اما در Hyperledger از کدهای زنجیره ای و در اتریوم از اصطلاح قراردادهای هوشمند استفاده می شود.
کاربردهای سالیدیتی چیست؟
در بخش های بعدی مهم ترین کاربردهای زبان برنامه نویسی Solidity مورد بحث قرار می گیرد.
رای دادن
انتخابات در حال حاضر با مشکلات متعددی از جمله دستکاری داده ها، رای دهندگان قلابی، دستکاری در دستگاه های رای گیری و تقلب در مراکز رای گیری دست و پنجه نرم می کند. قراردادهای هوشمند Solidity را می توان ایجاد و به کار گرفت تا فرآیند رای گیری شفاف و ساده شود.
حراج سرپوشیده
در مزایده عمومی افراد می توانند پیشنهادات یکدیگر را ببینند و این می تواند منجر به اختلاف و تقلب شود. Solidity با استفاده از قراردادهای هوشمند، حراج های خصوصی را راهاندازی می کند که در آن کاربران تا پایان حراج نمی توانند پیشنهادات یکدیگر را ببینند.
تامین مالی جمعی
تامین مالی جمعی با قراردادهای هوشمند می تواند مشکلاتی مانند هزینه های شخص ثالث و مدیریت داده ها را حل کند. قرارداد هوشمند سرمایه گذاری جمعی Solidity برای ایجاد اعتماد نیازی به یک سیستم متمرکز ندارد، بنابراین هزینه های اضافی را کاهش می دهد.
مزایای برنامهنویسی سالیدیتی
جدا از عملکرد، سیستم Solidity دارای بسیاری از ویژگی های دیگر است که آن را نسبت به سایر زبان های اتریوم برتری می دهد، همچنین علاوه بر انواع داده های پایه، برنامه نویسی Solidity از انواع داده های پیچیده و متغیرهای عضو نیز پشتیبانی می کند.، Power پروتکل اینترنت باینری (ABI) را برای حفاظت از نوع داده فراهم می کند. اگر کامپایلر یک نوع داده ناسازگار را در هر متغیری تشخیص دهد، یک کد باینری خطا می دهد.، استحکام به «مشخصات زبان طبیعی» اشاره دارد که برای تبدیل مشخصات کاربر محور به زبان قابل فهم ماشین استفاده می شود.
معایب برنامهنویسی سالیدیتی
ناسازگاری یک مزیت بزرگ است، اما در برخی موارد می تواند یک نقطه ضعف بزرگ باشد. به عنوان مثال، پس از امضای قرارداد، نمی توان آن را به روز کرد یا ویژگی های جدیدی اضافه کرد.
از آنجایی که اتریوم بر روی فناوری بلاک چین کار می کند، خود سیستم نمی تواند بدون عملکرد تراکنش داده ها را به سرعت جمعآوری و به روز کند. این کمبود می تواند با عواملی مانند داده های نوسان مانند نرخ ارز (فارکس) به یک مشکل بزرگ تبدیل شود.
بزرگترین نقطه ضعف Solidity عدم بلوغ آن است) در مقایسه با زبان های قدیمی مانند C یا جاوا (نکته منفی این خبر کمبود آزاردهنده کتابخانه و مرجع برای توسعه دهندگان و دشواری آموزش solidity برای مبتدیان است.
سخن پایانی
Solidity همچنان به عنوان زبان برنامه نویسی بزرگترین اکوسیستم در بلاک چین، اتریوم، خدمت می کند. علیرغم محدودیتهایی که دارد، زبان Solidity یک پایگاه توسعهدهنده فعال دارد که به بهروزرسانی کد خود و حفظ استانداردهای قرارداد هوشمند ادامه میدهد. به همین دلیل، می توان انتظار داشت که Solidity یکی از زبان های برنامه نویسی برای قراردادهای هوشمند باقی بماند.
برای یادگیری و دنبال کردن مطالب در حوزه آموزش سالیدیتی، بلاکچین و ارز دیجیتال، سایت توکن خان به آدرس https://tokenkhan.com/ را دنبال کنید.