
قراردادهای هوشمند برنامههای کوچک کامپیوتری هستند که روی بلاکچین اجرا میشوند و دقیقاً همانطور که نوشته شدهاند عمل میکنند. بهجای یک قرارداد کاغذی که افراد باید آن را بررسی و اجرا کنند، یک قرارداد هوشمند با کد مشخص میکند که اگر X رخ دهد، Y انجام شود و بلاکچین تضمین میکند که این قانون بهطور قابل اعتماد اجرا شود. چون کد و نتایج قرارداد روی بلاکچین ذخیره میشوند، هر کسی میتواند ببیند چه اتفاقی افتاده و هیچ فردی نمیتواند بعد از اجرا قوانین را بهصورت مخفیانه تغییر دهد.
در اتریوم، اکثر قراردادهای هوشمند با زبان Solidity نوشته میشوند و توسط ماشین مجازی اتریوم (EVM) اجرا میشوند. ماشین مجازی اتریوم را میتوان مثل یک کامپیوتر جهانی تصور کرد که قوانین سختگیرانهای را دنبال میکند: تراکنشها را به ترتیب پردازش میکند، وضعیت مشترک را بهروزرسانی میکند و مطمئن میشود که هر گره در شبکه به همان نتیجه برسد. همین محیط اجرای مشترک است که کد را به یک توافق قابل اجرا و مقاوم در برابر دستکاری تبدیل میکند.
قراردادهای سنتی به افراد و واسطهها مثل دلالها، نمایندگان امانت و پردازشگرهای پرداخت وابسته هستند تا پول جابهجا شود یا مالکیت منتقل شود. این باعث صرف زمان، هزینه و ریسک خطای انسانی میشود. با قراردادهای هوشمند، منطق جایگزین واسطهها میشود: وقتی ورودیهای از قبل تعریفشده درست باشند، نتیجه بهطور خودکار اجرا میشود. این کار باعث میشود جریانهای ساده کسبوکار (مثل امانت، پرداختها و کنترل دسترسی) سریعتر، ارزانتر و شفافتر باشند.
مزایا فقط محدود به هزینه و سرعت نیستند. قراردادهای هوشمند امکان ممیزی دارند (هر مرحله روی بلاکچین ثبت میشود)، قابلیت ترکیب دارند (قراردادها میتوانند با هم ارتباط برقرار کنند) و دسترسپذیری دارند (هر کسی که کیف پول دارد میتواند با آنها تعامل کند، طبق قوانینی که تعیین کردهاید). برای تیمهایی که محصولات را عرضه میکنند، این ویژگیها به عملیات پشتیبانی تمیزتر و تجربههای کاربری جدیدی منجر میشوند که قبلاً عملی نبودند.
قراردادهای هوشمند درخشان میشوند وقتی قوانین واضح و دادهها قابل اعتماد باشند. در ادامه چند الگوی رایج آورده شده که میتوانید آنها را در اپلیکیشن یا کسبوکار خود به کار ببرید:
در هر لحظه، بلاکچین یک وضعیت واحد دارد (چه کسی چه چیزی را دارد، دادههای فعلی قراردادها و غیره). هر بلاک جدید، وضعیت قبلی را به همراه یک دسته تراکنش معتبر گرفته و یک وضعیت جدید محاسبه میکند. میتوانید این را به شکل یک تابع تصور کنید: وضعیت جدید = تابع(وضعیت قدیم، تراکنشها). هر گره اتریوم همان تابع را با همان ورودیها اجرا میکند؛ اگر یک گره مخالفت کند، شبکه آن را رد میکند. این روش باعث میشود قراردادهای هوشمند بدون نیاز به سرور مرکزی قابل اعتماد باقی بمانند.
وقتی یک قرارداد را فراخوانی میکنید، ماشین مجازی اتریوم (EVM) بایتکد آن را میخواند، هر دستور را مرحله به مرحله اجرا میکند و در صورت اجازه، دادهها را بهروز میکند (مثلاً اگر موجودی کافی داشتید و قوانین را رعایت کرده باشید). فراخوانهایی که فقط دادهها را مشاهده میکنند (view) یا کاملاً مستقل از وضعیت بلاکچین هستند و فقط محاسبات انجام میدهند (pure) وضعیت بلاکچین را تغییر نمیدهند. فراخوانهایی که وضعیت را تغییر میدهند باید توسط اعتبارسنجها در یک بلاک گنجانده شوند، به همین دلیل کمی منتظر میمانید و کارمزد پرداخت میکنید..
ترجمه دوستانه و روان: هر دستور در ماشین مجازی اتریوم (EVM) هزینهای به نام گس دارد. شما این هزینه را به ETH پرداخت میکنید تا اعتبارسنجها بابت انجام کار جبران شوند و از اسپم جلوگیری شود. هرچه عملکرد قرارداد هوشمند شما پیچیدهتر باشد (مثل حلقهها یا نوشتن دادهها در ذخیرهسازی)، به گس بیشتری نیاز دارد. زمانبندی هم مهم است: وقتی شبکه شلوغ است، قیمت گس افزایش مییابد چون کاربران بیشتری رقابت میکنند تا تراکنششان سریعتر پردازش شود.
برای کاربران، دو راه برای کنترل هزینه وجود دارد: انتخاب تأییدیهای کندتر (قیمت گس کمتر) برای صرفهجویی در هزینه، یا پرداخت بیشتر برای قرار گرفتن سریعتر تراکنش در بلاک. برای توسعهدهندگان، کنترل هزینه از طریق نوشتن کد کارآمد حاصل میشود: نوشتن دادهها در ذخیرهسازی را به حداقل برسانید، از حلقههای غیرضروری اجتناب کنید و از ساختارهای داده دوباره استفاده کنید. بهینهسازی گس فقط یک ریزتنظیم زودهنگام نیست؛ بلکه مستقیماً تجربه کاربری را تحت تأثیر قرار میدهد.