در پاسخ به سوال “قرارداد هوشمند چیست؟” می توان گفت قراردادها در دنیای ما همیشه وجود داشتند، از عصر غارنشینی که قراردادهای نانوشته ای برای تقسیم کار وجود داشت تا دنیای متمدن و مدرن امروز که براساس قراردادهای متنوعی اداره می شود.
در فضای بلاکچین به دلیل رسالتی که مارا برای هرچه غیرمتمرکزتر کردن و شفافتر کردن بخش های مختلف زندگی ما پیش میبرد، بخش قراردادها نیز حوزه ای شدند که با ادغام با بلاکچین بتوانند به شکل بهتری به کارشان ادامه دهند.
در این مقاله به تشریح مفهوم قرارداد هوشمند میپردازیم و نحوه عملکرد قرارداد هوشمند در بلاکچین را بررسی میکنیم. همچنین، انواع قرارداد هوشمند را نیز معرفی خواهیم کرد.
قرارداد هوشمند در بلاک چین چگونه کار میکند؟
قرار داد هوشمند یک قرارداد دیجیتال است که به صورت اتوماتیک و بدون نیاز به واسطه وناظری برای اجرا انجام میشود. این قراردادها بر اساس شرایطی که در آنها تعیین شدهاند، اقداماتی را انجام میدهند. قراردادهای هوشمند در بستر بلاکچین با استفاده از زبانهای برنامهنویسی خاصی مانند Solidity در شبکههای بلاکچینی مانند اتریوم پیادهسازی میشوند.
قراردادهای هوشمند به دقت و بدون هیچ تغییری قابل اجرا هستند و از هرگونه اطلاعاتی که در قرارداد تعبیه شدهاند، بر اساس شرایط قرارداد، اجرا میشوند. به عبارت دیگر، هرگونه تغییر یا اجرای قرارداد توسط طرفهای مشارکت کننده در شبکه باید با توافق جمعی در بلاکچین تایید شود.
قرارداد هوشمند و ارز دیجیتال
قرارداد های هوشمند در بلاک چین، ارزهای دیجیتال را قادر به انجام عملیات و تراکنشهای برنامهریزی شده میکنند. به عنوان مثال، با استفاده از قرارداد های هوشمند میتوان قراردادهایی را برای انتقال ارزها، تعیین قیمت، برگزاری حراجیها و حتی اجرای قراردادهای بیمه دیجیتال ایجاد کرد.
قراردادهای هوشمند به عنوان یک لایه برنامهنویسی برروی بلاکچین عمل میکنند و امکان برنامهنویسی یک ارز دیجیتال در بستر بلاکچین را فراهم میکنند. این قراردادها توسط طراحان و برنامهنویسان توسعه داده میشوند و در شبکه بلاکچین منتشر میشوند.
تفاوت ارزدیجیتال و قرارداد هوشمند
ارز دیجیتال (Cryptocurrency) و قرارداد هوشمند (Smart Contract) دو مفهوم متفاوت در زمینه بلاکچین هستند. در ادامه، تفاوت اصلی بین این دو را برای شما توضیح میدهم:
مفهوم ارز دیجیتال
ارز دیجیتال یا رمزارز به معنای دارایی دیجیتال است که مبتنی بر بلاکچین و تکنولوژی رمزنگاری ایجاد میشود. معروفترین نمونه از ارز دیجیتال بیتکوین Bitcoin است. ارزهای دیجیتال به عنوان واحدهای قابل مبادله استفاده میشوند و ارزش آنها معمولاً از طریق عرضه و تقاضا و تجارت بین کاربران تعیین میشود. به عنوان مثال، میتوانید ارز دیجیتال را برای خرید و فروش کالاها و خدمات استفاده کنید. ارز دیجیتالها قابل نقل و انتقال بین کیفهای دیجیتال هستند و معمولاً نیازی به تعریف قراردادهای خاص ندارند.
مفهوم قرارداد هوشمند
قرارداد هوشمند به معنای برنامههای قابل اجرا بر روی بلاکچین است که برای انجام عملیات و تعاملات مشخصی بین طرفین ایجاد میشوند. قرارداد هوشمند با استفاده از زبانهای برنامهنویسی خاصی مانند Solidity در بلاکچینهای مانند اتریوم Ethereum پیاده سازی میشوند. قرارداد هوشمند میتواند شرایط و قوانینی را تعریف کند و بر اساس آنها عملیاتی مانند انتقال دارایی یا اجرای توابع خاص را به صورت خودکار و بدون نیاز به واسطهگر یا سازمان مرکزی انجام دهد.
به عبارت دیگر، قرارداد هوشمند قابلیت اجرای قوانین و شرایط تعیین شده در آن را دارد و در صورت برقراری شرایط مورد نظر، عملیات مشخصی را انجام میدهد. قرارداد هوشمند میتواند در زمینههای مختلفی مانند انتقال داراییها، تسویه حسابها، نیروی کار هوشمند و غیره مورد استفاده قرار گیرد.
به طور کلی، ارز دیجیتال و قرارداد هوشمند دو مفهوم متفاوت هستند و در زمینههای مختلفی از تکنولوژی بلاکچین استفاده میشوند. ارز دیجیتال بیشتر بر روی مبادلات مالی تمرکز دارد، در حالی که قراردادهای هوشمند بیشتر برای اجرای خودکار عملیات و تعاملات مشخصی بین طرفین استفاده میشوند.
انواع استاندارد ها در قرارداد های هوشمند
استاندارد ERC-20: این استاندارد برای قراردادهای هوشمند توکنهای قابل تبدیل به ارزهای دیجیتال در بلاکچین Ethereum استفاده میشود. با استفاده از این استاندارد، توکنها میتوانند در کیفپولها و صرافی های مختلف معامله شوند.
استانداردERC-721: این استاندارد برای قراردادهای هوشمند ارزشهای قابل تبدیل غیرقابل تجزیه یا تقسیم توکن های غیرقابل تعویض در بلاکچین Ethereum استفاده میشود. این قراردادها، مانند تصاویر دیجیتال، نقاشیها، بازیهای اینترنتی و داراییهای دیگر را نمایندگی میکنند.
استاندارد BEP-20: این استاندارد برای قراردادهای هوشمند توکنهای قابل تبدیل به ارزهای دیجیتال در بستر Binance Smart Chain (BSC) استفاده میشود. این استاندارد نسبت به ERC-20 در Ethereum مشابه است.
استاندارد NEP-5: این استاندارد برای قراردادهای هوشمند در بلاکچین NEO استفاده میشود. با استفاده از این استاندارد، توکنها و قراردادهای هوشمند قابل اجرا در بستر NEO طراحی و پیادهسازی میشوند.
استاندارد TRC-20: این استاندارد برای قراردادهای هوشمند توکنهای قابل تبدیل به ارزهای دیجیتال در بلاکچین TRON استفاده میشود.
این تنها چند نمونه از استانداردهای قراردادهای هوشمند موجود در بلاکچین است. هر بلاکچین و پلتفرم دیجیتال میتواند استانداردها و موجودیتهای خاص خود را برای قراردادهای هوشمند داشته باشد. این استانداردها به توسعهدهندگان اجازه میدهند تا به راحتی قراردادهای هوشمند را طراحی و پیادهسازی کنند.
یک قرارداد هوشمند باهم بنویسیم
بطور کلی، قراردادهای هوشمند در بلاکچین با استفاده از قوانین و شرایطی که در کد برنامهریزی قرارداد تعریف شدهاند، عملیات مشخصی را انجام میدهند. برای مثال، فرض کنید یک قرارداد هوشمند برای انتقال داراییهای دیجیتال در بلاکچین اتریوم تعریف شده است. در این قرارداد، شرایط زیر تعیین شدهاند:
- شرط 1: فقط صاحبانی که موجودی کافی در حساب خود دارند، مجاز به انتقال دارایی هستند.
- شرط 2: تنها با تایید دو ماینر مستقل در شبکه، انتقال معتبر است.
- شرط 3: هزینهی تراکنش باید توسط فرستنده پرداخت شود.
حال فرض کنید آقای A میخواهد به آقای B مقداری اتر ETH انتقال دهد. در این صورت، فرآیند انتقال به شرح زیر اجرا میشود:
- آقای A تراکنشی را با مقدار اتر مدنظرش به آدرس آقای B و هزینه این تراکنش ایجاد میکند.
- تراکنش به قرارداد هوشمند ارسال میشود.
- قرارداد هوشمند شرایط قرارداد را بررسی میکند. اگر آقای A موجودی کافی در حساب خود داشته باشد ولی هزینه تراکنش را پرداخت نکرده باشد، تراکنش رد میشود.
- اگر آقای A موجودی کافی داشته باشد و هزینه تراکنش را پرداخت کرده باشد، قرارداد هوشمند به شرایط بعدی پیش میرود.
- قرارداد هوشمند تایید ماینرها را بررسی میکند. اگر دو ماینر مستقل تایید کرده باشند، عملیات انتقال اتر به آقای B رخ میدهد و تراکنش تکمیل میشود.
- تراکنش با تایید ماینرها در بلاکچین ثبت میشود و دارایی اتر مورد نظر به آقای B انتقال پیدا میکند.
به این ترتیب، با اجرای قرارداد هوشمند، انتقال دارایی از آقای A به آقای B با رعایت شرایط و قوانین تعریف شده در قرارداد صورت میگیرد. این فرآیند به صورت خودکار و بدون نیاز به واسطه یا سازمان مرکزی انجام می شود.
کد نویسی این قرارداد هوشمند در بلاکچین اتریوم به صورت زیر است:
“`solidity
pragma solidity ^0.8.0;
contract Token {
mapping(address => uint256) public balances;
function transfer(address _to, uint256 _value) public {
require(balances[msg.sender] >= _value, “Insufficient balance”);
require(_to != address(0), “Invalid address”);
balances[msg.sender] -= _value;
balances[_to] += _value;
}
}
“`
در این مثال، ما یک قرارداد هوشمند ساده با نام توکن (Token) داریم که امکان انتقال توکن بین کاربران را فراهم میکند. قرارداد شامل یک متغیر تایپ مپ mapping به نام balances است که برای هر آدرس کاربری موجودی توکن را نگهداری میکند.
تابع transfer به عنوان روشی برای انتقال توکن بین کاربران استفاده میشود. در ابتدا، تابع بررسی میکند که موجودی کاربر فرستنده کافی برای انتقال است یا خیر. سپس از وجهه امنیت، بررسی میکند که آدرس گیرنده معتبر است و نباید آدرس صفر باشد.
در صورتی که شرایط فوق برقرار باشند، انتقال توکن صورت میگیرد و موجودی فرستنده کاهش یافته و موجودی گیرنده افزایش مییابد.
این قرارداد هوشمند میتواند در بلاکچین اتریوم مستقر شود و کاربران با استفاده از تراکنشها، موجودی توکنها را به صورت خودکار و مبتنی بر قوانین قرارداد، منتقل کنند.
انواع زبان های برنامه نویسی قرارداد های هوشمند
Solidity :Solidity یک زبان برنامهنویسی قرارداد های هوشمند در بلاکچین اتریوم است. این زبان توسط توسعهدهندگان اتریوم برای توسعه قراردادهای هوشمند و اپلیکیشنهای اتریومی استفاده میشود. Solidity شباهتهایی به زبانهای برنامهنویسی مانند JavaScript و C++ دارد و برای توسعه قراردادهای هوشمند دارای امکاناتی مانند وراثت، متغیرها و توابع است.
Scilla :Scilla یک زبان برنامهنویسی برای قراردادهای هوشمند در بلاکچین Zilliqa است. این زبان با هدف افزایش امنیت و قابلیت اثبات ریاضی قراردادهای هوشمند طراحی شده است. Scilla از مفاهیمی مانند تعییننشانگرها stateful و قراردادهای هوشمند تعاملیinteractive smart contracts پشتیبانی میکند.
Cadence :Cadence یک زبان برنامهنویسی برای قراردادهای هوشمند در بلاکچین Flow است. بلاکچین Flow از سمت شرکت Dapper Labs توسعه داده شده است و برای اپلیکیشنهای NFT و بازیهای دیجیتال استفاده میشود. زبان Cadence برای توسعه قراردادهای هوشمند در این بلاکچین به کار میرود و تأکید بر امنیت و قابلیت تجربه کاربری است.
این موارد چند زبان برنامهنویسی رایج برای توسعه قراردادهای هوشمند در بلاکچین بودند. در انتخاب زبان برنامهنویسی برای توسعه قراردادهای هوشمند، باید توجه کنید که هر بلاکچین ممکن است از زبانهای مختلفی پشتیبانی کند.
زبان های برنامه نویسی متنوع و بیشتری نیز برای ایجاد یک قرارداد هوشمند وجود دارند.
سخن پایانی
در انتها ما دانستیم به طور خلاصه قراردادهای هوشمند در بلاکچین توانایی ایجاد قراردادهای قابل اجرا و بدون نیاز به واسطه را فراهم میکنند. این قراردادها به صورت خودکار و بر اساس شرایط تعیین شده در قرارداد اقدامات مشخصی را انجام میدهند. با استفاده از قراردادهای هوشمند، امکان ایجاد قراردادهای مالی، بیمه، خرید و فروش و سایر انواع قراردادها در بستر بلاکچین وجود دار.
در این مقاله سعی شد پاسخی درخور برای سوال هایی از قبیل، قرارداد های هوشمند چه هستند؟ نحوه کار قرارداد های هوشمند چیست؟ و دیگر سوالات مرتبطی که می تواند در ذهن های کنجکاو و به دنبال یادگیری شکل بگیرد، پاسخ دهیم.