ایران اکسچنج

 قرارداد هوشمند چیست؟ نحوه کار Smart Contract، کاربردها و ریسک‌ها

قرارداد هوشمند چیست؟ نحوه کار Smart Contract، کاربردها و ریسک‌ها

فائزه سوری
زمان تقریبی مطالعه: 8 دقیقه
فهرست عناوین

قرارداد هوشمند یا Smart Contract برنامه‌ای است که روی یک شبکه بلاکچینی قابل برنامه‌ریزی اجرا می‌شود و شامل مجموعه‌ای از Functionها و State است. کاربر یا قرارداد دیگری می‌تواند با ارسال Transaction یا Message Call Function مشخصی را فراخوانی کند و شبکه نتیجه اجرای آن را طبق Rules یکسان اعتبارسنجی کند.

در Ethereum، Smart Contract در یک Address مشخص قرار دارد و Code و State آن توسط Ethereum Virtual Machine یا EVM پردازش می‌شود. Ethereum.org نیز Smart Contract را برنامه‌ای تعریف می‌کند که روی Blockchain اجرا می‌شود و از Code و Data تشکیل شده است. معرفی رسمی Smart Contract در Ethereum.org

عنوان «قرارداد» ممکن است این تصور را ایجاد کند که هر Smart Contract الزاماً یک قرارداد حقوقی قابل اجرا در دادگاه است؛ چنین برداشتی درست نیست. Smart Contract در اصل کد اجرایی است و آثار حقوقی یک توافق به قانون، موضوع قرارداد، هویت طرفین و حوزه قضایی مربوط بستگی دارد.

قرارداد هوشمند چیست؟

Smart Contract برنامه‌ای است که پس از Deploy شدن می‌تواند Logic مشخصی را در پاسخ به Transaction یا Call اجرا کند. برای مثال Contract می‌تواند بررسی کند آیا فرستنده مجوز لازم را دارد، مقدار کافی Token در اختیار او هست، Deadline نگذشته یا شرط دیگری برقرار است؛ سپس State را تغییر دهد یا Transaction را Revert کند.

تشبیه ساده «اگر X رخ داد، Y را انجام بده» برای شروع مفید است، اما Smart Contractهای واقعی می‌توانند State، Access Control، چند Contract دیگر، Token Standard و منطق پیچیده‌تری داشته باشند. برای درک زیرساختی که State و Transaction را ثبت می‌کند، مقاله بلاکچین چیست؟ مکمل این بخش است.

ایده Smart Contract از کجا آمد؟

اصطلاح Smart Contract پیش از ظهور Bitcoin و Ethereum مطرح شده بود. Nick Szabo در سال ۱۹۹۴ Smart Contract را یک computerized transaction protocol برای اجرای شرایط یک توافق توصیف کرد. متن Smart Contracts نوشته Nick Szabo در ۱۹۹۴

آنچه Blockchainهای قابل برنامه‌ریزی بعدها اضافه کردند، اجرای قابل Verify این Logic در یک State Machine توزیع‌شده بود؛ به‌طوری که چند Node مستقل بتوانند به نتیجه یکسان برسند.

Smart Contract چگونه کار می‌کند؟

  1. نوشتن Code: توسعه‌دهنده Contract را با زبانی مانند Solidity یا Vyper می‌نویسد.
  2. Compile :  سورس کدها به Bytecode قابل اجرای EVM تبدیل می‌شود.
  3. Deploy:  بایت کدها با یک Transaction روی شبکه Deploy می‌شود و Contract Address ایجاد می‌شود.
  4. Interaction: کاربر یا Contract دیگر Function را Call می‌کند.
  5. Execution: نودهای شبکه همان Logic را طبق State و Input یکسان اجرا/اعتبارسنجی می‌کنند.
  6. State Update: اگر Transaction معتبر و Execution موفق باشد، State جدید در Blockchain ثبت می‌شود.

در Ethereum، EVM محیط اجرای این Bytecode است. جزئیات این State Machine در مقاله ماشین مجازی اتریوم چیست؟ توضیح داده شده است.

Ethereum.org نیز Contract را مجموعه‌ای از Data و Function می‌داند که در Address مشخص قرار دارد و در پاسخ به Transaction اجرا می‌شود. ساختار Smart Contract در Ethereum.org

آیا Smart Contract واقعاً «خوداجرا» است؟

عبارت Self-executing گاهی گمراه‌کننده است. Contract معمولاً خودبه‌خود و بدون Trigger از خواب بیدار نمی‌شود. Function آن باید با Transaction، Call یا سازوکار Automation بیرونی فراخوانی شود.

برای مثال اگر Contract باید «در ساعت ۱۲ پرداخت انجام دهد»، خود Blockchain به‌تنهایی یک Cron Job داخلی عمومی نیست که در آن ساعت Function را Call کند. معمولاً یک Actor یا Automation Service باید Transaction لازم را ارسال کند، سپس Contract شرط زمان را بررسی می‌کند.

بنابراین ویژگی صحیح‌تر Smart Contract، اجرای Deterministic Rules پس از دریافت Trigger معتبر است، نه اجرای خودکار بدون هیچ عامل آغازکننده.

Gas در قرارداد هوشمند چیست؟

اجرای Code روی Ethereum منابع محاسباتی مصرف می‌کند. Gas واحد اندازه‌گیری این Computational Effort است و Operationهای پیچیده‌تر معمولاً Gas بیشتری نسبت به یک انتقال ساده مصرف می‌کنند.

Gas علاوه بر قیمت‌گذاری منابع، از اجرای نامحدود Computation و Spam جلوگیری می‌کند. حتی Transaction ناموفق نیز ممکن است Gas مصرف کند، چون Nodeها برای اجرای آن منابع صرف کرده‌اند.  راهنمای رسمی Gas در Ethereum  بنابراین Contract «رایگان» اجرا نمی‌شود و هزینه Execution یکی از محدودیت‌های مهم طراحی Applicationهای Onchain است.

آیا قرارداد هوشمند نیاز به اعتماد را حذف می‌کند؟

Smart Contract می‌تواند نیاز به اعتماد به یک Operator برای اجرای Rules مشخص را کاهش دهد، چون Code و State Onchain قابل Verify هستند. اما «حذف کامل اعتماد» ادعای درستی نیست.

اعتماد ممکن است به بخش‌های دیگری منتقل شود:

  • درست‌بودن Code و نبود Bug؛
  • Admin Key یا Upgrade Authority؛
  • Oracle و داده خارجی؛
  • Bridge یا Custodian؛
  • Frontend و RPC Provider؛
  • قانون و اجرای حقوقی در تعاملات دنیای واقعی.

آیا Smart Contract بعد از Deploy قابل تغییر است؟

Code یک Contract معمولی که در یک Address Deploy شده، به‌صورت مستقیم قابل ویرایش نیست. اما این به معنی «تمام Smart Contractها برای همیشه غیرقابل تغییرند» نیست.

توسعه‌دهندگان می‌توانند از چند معماری استفاده کنند:

  • Migration: Contract جدید Deploy و State/کاربران به نسخه جدید منتقل شوند.
  • Proxy Pattern: Address ثابت به Logic Contract قابل جایگزینی Delegate شود.
  • Modular architecture: Contract اصلی از Moduleهای قابل تغییر استفاده کند.

Ethereum.org نیز توضیح می‌دهد Code در Address Deploy‌شده Immutable است، اما Proxy و Migration امکان تغییر Logic اجرایی را فراهم می‌کنند. این قابلیت در عوض Trust Assumption جدیدی درباره Upgrade Authority ایجاد می‌کند. راهنمای Upgrade قراردادهای هوشمند

Oracle چیست و چرا Smart Contract به آن نیاز دارد؟

Smart Contract نمی‌تواند به‌طور مستقیم Website، API، قیمت بازار، وضعیت آب‌وهوا یا سند دنیای واقعی را از اینترنت بخواند. Ethereum این محدودیت را عمداً برای حفظ Consensus دارد.

Oracle سازوکاری است که داده Offchain را به شکلی قابل استفاده برای Contract وارد می‌کند. اما Oracle Problem از بین نمی‌رود: Contract فقط می‌تواند داده‌ای را پردازش کند که به آن داده شده و صحت واقعیت بیرونی را به‌طور مستقل «بداند».

Ethereum.org نیز تصریح می‌کند Smart Contract به تنهایی نمی‌تواند داده رویدادهای دنیای واقعی را Retrieve کند و برای این کار به Oracle نیاز دارد. راهنمای رسمی Oracle در Ethereum.org

آیا Smart Contract همان قرارداد حقوقی است؟

نه لزوماً. Smart Contract یک Software Program است. ممکن است بخشی از یک توافق حقوقی را اجرا کند، اما اینکه Code به‌تنهایی یک قرارداد الزام‌آور حقوقی محسوب شود به قانون قابل اعمال، قصد طرفین، شرایط قرارداد و الزامات شکلی بستگی دارد.

برای مثال انتقال یک Token می‌تواند در Blockchain قطعی باشد، اما اینکه همان انتقال مالکیت قانونی یک ملک فیزیکی را منتقل کند نیازمند سازگاری با نظام ثبت و قوانین مربوط به آن دارایی است.

مزایای قرارداد هوشمند چیست؟

  • اجرای قابل Verify:  و Rules Onchain  و State قابل بررسی عمومی یا مستقل‌اند.
  • Automation: پس از Trigger، Logic می‌تواند بدون پردازش دستی یک Operator اجرا شود.
  • Composability: قرارداها می‌توانند Contractهای دیگر را Call کنند و روی Protocolهای موجود ساخته شوند.
  • Permissionless interaction: در Contract عمومی و بدون Access Restriction، کاربر می‌تواند مستقیماً با Protocol تعامل کند.
  • Shared state: چند Application می‌توانند State مشترک Onchain را بخوانند یا طبق Rules تغییر دهند.

این مزایا مطلق نیستند؛ یک Contract ممکن است Admin Key، Whitelist یا Upgrade Control داشته باشد و در نتیجه سطح Permissionlessness و Decentralization آن با Contract دیگر متفاوت باشد.

ریسک‌ها و چالش‌های Smart Contract چیست؟

  • Bug و Logic Error: کد اشتباه می‌تواند دارایی یا State را در معرض آسیب قرار دهد.
  • Access Control:  حالتهای حساس بدون Permission مناسب می‌تواند سوءاستفاده شود.
  • Reentrancy و Interaction Risk: تماس به Contractهای دیگر می‌تواند مسیر اجرای پیش‌بینی‌نشده ایجاد کند.
  • Oracle Risk: داده اشتباه یا دستکاری‌شده می‌تواند نتیجه Contract را خراب کند.
  • Upgrade Risk: ادمین یا Governance دارای اختیار Upgrade می‌تواند Logic آینده را تغییر دهد.
  • Gas / DoS Risk: طراحی پرهزینه یا Loop/State بزرگ می‌تواند Execution را غیرعملی کند.
  • Frontend و Signing Risk: حتی Contract امن می‌تواند از طریق Interface جعلی یا Signature فریبنده مورد سوءاستفاده قرار گیرد.

Ethereum.org نیز Smart Contract Security را موضوعی جدی می‌داند و روی Access Control، Testing، Recovery Plan و Upgrade Security تأکید می‌کند. راهنمای امنیت Smart Contract در Ethereum

آیا اطلاعات قرارداد هوشمند رمزگذاری و خصوصی هستند؟

خیر، نه به‌طور پیش‌فرض. در Blockchain عمومی مانند Ethereum، Code، Storage و Transaction Data بسیاری از Contractها قابل مشاهده یا قابل استخراج از State عمومی هستند.

Hashing، Signature و Cryptography به معنی «Encrypted بودن تمام داده Onchain» نیست. اگر Application به Confidentiality نیاز دارد باید معماری جداگانه‌ای برای Privacy طراحی کند.

کاربر چگونه با Smart Contract تعامل می‌کند؟

تعامل دو حالت کلی دارد:

Read

خواندن State بدون تغییر Blockchain معمولاً از طریق RPC انجام می‌شود و به Transaction Onchain یا Gas پرداختی کاربر نیاز ندارد.

Write

تغییر State نیازمند Transaction معتبر است. کاربر Transaction را Sign می‌کند، شبکه آن را اجرا می‌کند و در صورت موفقیت State جدید ثبت می‌شود.

Ethereum.org نیز Read و Write را از هم تفکیک می‌کند: Readها State را تغییر نمی‌دهند، در حالی که Write عملیات State-changing و نیازمند Transaction است. راهنمای تعامل با Smart Contract

رابطه Smart Contract و DApp چیست؟

Smart Contract معمولاً Backend Onchain یک DApp است، اما DApp اجزای دیگری مثل Frontend، Wallet Integration، RPC، Indexer یا Oracle نیز دارد. برای شناخت معماری کامل Application، مقاله DApp چیست؟ را مطالعه کنید.

آیا Bitcoin هم قرارداد هوشمند دارد؟

بله، اما مدل برنامه‌پذیری Bitcoin با EVM متفاوت است. Bitcoin Script برای Spending Conditionهایی مثل Multisig، Timelock، Hashlock و Taproot Script Path استفاده می‌شود و General-purpose VM مشابه Ethereum نیست. برای جلوگیری از Cannibalization، جزئیات فنی این موضوع در مقاله مستقل قرارداد هوشمند بیت‌کوین چیست؟ قرار دارد.

قرارداد هوشمند چه کاربردهایی دارد؟

  • Token: تعریف Ruleهای انتقال، Mint، Burn یا Permission.
  • خدمات مالی Onchain: وام‌دهی، Settlement و مدیریت Collateral.
  • Marketplace: اجرای Rules معامله Assetهای دیجیتال.
  • Governance:  و Proposal و Vote Treasury Ruleها.
  • Escrow: آزادسازی Asset بر اساس Conditions مشخص.
  • Gaming: مالکیت یا Ruleهای Assetهای Onchain.
  • Identity / Credential: مدیریت Attestation یا Permissionهای قابل Verify.

کاربردهایی مانند خرید ملک، بیمه یا زنجیره تأمین ممکن‌اند، اما اتصال آن‌ها به دنیای واقعی معمولاً به Oracle، هویت، Custody و چارچوب حقوقی نیاز دارد. Blockchain نمی‌تواند مالکیت قانونی یک دارایی فیزیکی را صرفاً با اجرای Code ایجاد کند، مگر نظام حقوقی مربوط آن را به رسمیت بشناسد.

قبل از تعامل با یک Smart Contract چه چیزهایی را بررسی کنیم؟

  1. Contract Address: مطمئن شوید Address و Network صحیح است.
  2. Source Verification: در صورت امکان Source Code و Bytecode verified را بررسی کنید.
  3. Permissions: Approval و Accessهای درخواستی را بخوانید.
  4. Upgradeability: Contract Proxy است؟ چه کسی حق Upgrade دارد؟
  5. Admin Keys: آیا Owner می‌تواند Pause، Mint یا Asset را منتقل کند؟
  6. Oracle/Bridge Dependencies: Contract به چه سیستم‌های خارجی وابسته است؟
  7. Audit: Audit مفید است اما تضمین نبود Bug نیست.

جمع‌بندی؛ Smart Contract کد قابل Verify است، نه قرارداد جادویی بدون ریسک

قرارداد هوشمند مجموعه‌ای از Code و State است که روی Blockchain قابل برنامه‌ریزی اجرا می‌شود. کاربران با Transaction یا Call آن را Trigger می‌کنند و Nodeها نتیجه را طبق قواعد مشترک اعتبارسنجی می‌کنند.

مهم‌ترین مزیت Smart Contract، اجرای قابل Verify و Composable Logic است؛ اما Bug، Gas، Oracle، Admin Key، Upgradeability و محدودیت‌های حقوقی همچنان وجود دارند. بنابراین «بدون اعتماد»، «هک‌ناپذیر»، «کاملاً تغییرناپذیر» یا «جایگزین قطعی واسطه‌های حقوقی» توصیف‌های مناسبی برای این فناوری نیستند.

مقالات مرتبط

سوالات متداول

Smart Contract چیست؟

برنامه‌ای Onchain است که Code و State دارد و در پاسخ به Transaction یا Call، Logic تعریف‌شده را اجرا می‌کند.

آیا Smart Contract خودش بدون Transaction اجرا می‌شود؟

معمولاً خیر. Contract برای اجرای Function به Trigger نیاز دارد؛ Trigger می‌تواند کاربر، Contract دیگر یا Automation بیرونی باشد.

آیا Contract بعد از Deploy قابل تغییر است؟

Code یک Contract عادی در همان Address قابل ویرایش مستقیم نیست، اما Migration و Proxy Pattern می‌توانند Logic مورد استفاده کاربران را Upgrade کنند.

آیا Smart Contract قابل هک نیست؟

خیر. Bug، Access Control اشتباه، Oracle Manipulation، Upgrade Key و Interaction با Contractهای دیگر همگی می‌توانند ریسک ایجاد کنند.

آیا تمام اطلاعات Smart Contract خصوصی است؟

خیر. در Public Blockchain بسیاری از Codeها، Stateها و Transactionها قابل مشاهده‌اند.

آیا Smart Contract به اینترنت دسترسی دارد؟

مستقیم خیر. برای داده Offchain معمولاً به Oracle یا سازوکار خارجی نیاز است.

آیا Smart Contract جای قرارداد حقوقی را می‌گیرد؟

نه به‌صورت عمومی. Code می‌تواند اجرای بخشی از توافق را Automation کند، اما اعتبار حقوقی به قانون و شرایط قرارداد بستگی دارد.