در این مقاله
- چرا اتریوم فقط یک ارز دیجیتال نیست؟
- قرارداد هوشمند دقیقاً چیست؟
- یک تراکنش چگونه قرارداد را اجرا میکند؟
- گس، کارمزد و نقش ETH
- مثال عملی: قرارداد امانی چه میکند؟
- قاعده اجرا میشود، نه داوری
- کاربردها و تفاوتهای مهم را چطور بشناسید؟
- محدودیتها و اشتباهات رایج کداماند؟
- چکلیست نهایی: چه چیزهایی را باید به خاطر بسپارید؟
- بعد از این مقاله چه بخوانید؟
خلاصه در ۳۰ ثانیه
- اتریوم شبکهای برای اجرای برنامههاست و ETH دارایی بومی آن است.
- قرارداد هوشمند برنامهای روی بلاکچین است که با تراکنش اجرا میشود.
- گس میزان محاسبات اجرای تراکنش را میسنجد و کارمزد با ETH پرداخت میشود.
- قواعد قرارداد فقط همان شرطهایی را اجرا میکنند که در برنامه تعریف شدهاند.
- پیش از تعامل، شبکه، نشانی قرارداد، مقدار و کارمزد را بررسی کنید.
چرا اتریوم فقط یک ارز دیجیتال نیست؟
اگر با بلاکچین و بیتکوین آشنا باشید، میدانید بلاکچین راهی برای ثبت و تأیید تراکنشها میان شرکتکنندگان شبکه است. بیتکوین برای انتقال و نگهداری دارایی دیجیتال طراحی شده است. اتریوم هم دارایی دیجیتال دارد، اما هدف شبکهاش فقط جابهجایی پول نیست. این فرق در نقشهاست، نه اینکه یکی جای دیگری را بگیرد.
اتریوم را شبکهای برای اجرای برنامههای عمومی در نظر بگیرید؛ برنامههایی که قواعدشان روی شبکه ثبت و اجرا میشود. اتر، با نماد ETH، دارایی بومی این شبکه است و با خود شبکه فرق دارد. در تصویر بالا این تفاوت را ببینید: اتریوم بستر اجراست و ETH داراییای است که درون آن به کار میرود.

یک پرسش کاربردی
چطور برنامهای میتواند شرطی را دنبال کند، بدون اینکه کسی هر مرحله را دستی اجرا کند؟ پاسخ به برنامهای مربوط است که روی شبکه اجرا میشود و با تراکنش فراخوانی میشود. سازوکارش را در بخشهای بعدی میبینید.
این برنامهها را قرارداد هوشمند مینامند، اما نامشان گمراهکننده است: قرارداد هوشمند قرارداد حقوقی یا توافق انسانی نیست؛ کدی است که قواعد مشخصی را اجرا میکند. برای تشخیصش ببینید برنامه روی شبکه اجرا میشود و با تراکنش فراخوانی میشود یا نه. سپس شبکه و نشانی قرارداد را با اطلاعات رسمی همان برنامه تطبیق دهید.
در ادامه اول تعریف قرارداد هوشمند را روشن میکنیم، بعد سازوکار اجرای آن با تراکنش را میبینیم و کارمزد را بر پایهی گس مصرفشده و هزینهی هر واحد گس میسنجیم. سپس یک مثال عملی را دنبال میکنیم و با چکلیست پایانی، معیارهای بررسی قرارداد و تأیید تراکنش را مرور میکنیم.
قرارداد هوشمند دقیقاً چیست؟
قرارداد هوشمند برنامهای است که روی شبکهٔ اتریوم مستقر میشود و کد آن با فراخوانی اجرا میشود. تغییر وضعیت قرارداد به تراکنش نیاز دارد؛ اما خواندن اطلاعات یا اجرای تابع فقطخواندنی بدون ثبت تراکنش انجام میشود. برای تشخیص قرارداد، ببینید برنامه روی شبکه اجرا میشود و تغییر وضعیتش به تراکنش نیاز دارد.
«هوشمند» در این نام یعنی فهم انسانی یا هوشمندی مستقل نیست. کد فقط قواعدی را اجرا میکند که از پیش در آن تعریف شدهاند؛ قرارداد نیت شما را نمیفهمد و بیرون از قواعدش قضاوت نمیکند. نتیجه به ورودی و شرایطی بستگی دارد که برنامه برای اجرا بررسی میکند.
نشانی قرارداد با نشانی حساب کاربر فرق دارد. حساب کاربر دارایی نگه میدارد و تراکنش امضا میکند؛ قرارداد هم نشانی مخصوص خود دارد و کد و وضعیت خودش را نگه میدارد. وضعیت، اطلاعاتی است که برنامه ثبت میکند و اجرای بعدی روی آن ادامه مییابد؛ برای نمونه، ثبت اینکه یک درخواست قبلاً پذیرفته شده است.
اجزای پایهٔ اجرا
برای دنبالکردن سازوکار، چهار جزء را بهترتیب ببینید: ورودی اطلاعاتی است که به برنامه میرسد؛ شرط مشخص میکند اجرای یک کار مجاز است یا نه؛ تغییر وضعیت اطلاعات ذخیرهشدهٔ قرارداد را بهروز میکند؛ و خروجی نتیجهٔ قابل مشاهدهٔ اجراست، مثل وضعیت تازه یا رویدادی که ثبت شده است.
برای نمونه، در قرارداد ثبتنام، ورودی میتواند درخواست کاربر باشد، شرط بررسی میکند فرم کامل است، تغییر وضعیت درخواست را ثبت میکند و خروجی نتیجهٔ اجرا را نشان میدهد. این مثال فقط اجزای پایه را روشن میکند؛ سازوکار قرارداد امانی در بخش مربوط به همان مثال توضیح داده میشود.
تفاوت با پرداخت ساده
در پرداخت ساده، فرستنده ETH را به نشانی گیرنده میفرستد؛ اتریوم شبکه است و ETH دارایی بومی آن است. فراخوانی قرارداد، در مقابل، کد برنامه را اجرا میکند تا ورودی و شرطهایش را بررسی کند و در صورت لزوم وضعیت را تغییر دهد. پیش از تعامل، ببینید کار شما فقط انتقال ETH است یا اجرای قواعد یک برنامه؛ سپس شبکه و نشانی قرارداد را با اطلاعات رسمی همان برنامه تطبیق دهید.
یک تراکنش چگونه قرارداد را اجرا میکند؟
برای اجرای یک قابلیت، کیف پول شما تراکنشی به نشانی قرارداد میفرستد. این تراکنش مشخص میکند کدام تابع فراخوانی شود و چه اطلاعاتی به آن داده شود. گرههای شبکه تراکنش را بررسی و محاسبات قرارداد را اجرا میکنند تا به نتیجهای یکسان برسند. پس از ثبت تراکنش در شبکه، نتیجهٔ اجرای آن در وضعیت اتریوم بازتاب پیدا میکند. ([ethereum.org](https://ethereum.org/developers/docs/transactions?utm_source=openai))

در تصویر بالا، مسیر از ارسال تراکنش تا اجرای برنامه و ثبت نتیجه نشان داده شده است. اجرای قرارداد در ماشین مجازی اتریوم (EVM) انجام میشود؛ محیطی که همهٔ گرههای اتریوم برای پردازش کد قرارداد به کار میبرند. به همین دلیل قرارداد فقط روی رایانهٔ یک کاربر اجرا نمیشود؛ گرههای شبکه آن را طبق قواعد اتریوم بازتولید میکنند. ([ethereum.org](https://ethereum.org/developers/docs/evm?utm_source=openai))
گس، کارمزد و نقش ETH
گس واحد سنجش کار محاسباتی است: هرچه اجرای یک تراکنش عملیات بیشتری انجام دهد، گس بیشتری مصرف میکند. کارمزد از حاصلضرب گس مصرفشده در هزینهٔ هر واحد گس به دست میآید. در هر فراخوانی، کارمزد را با همین دو مقدار بسنجید. در تعامل معمولی، کارمزد با اتر (ETH) پرداخت میشود؛ اما ETH بهخودیخود منطق شرطها و دستورهای قرارداد نیست. اتریوم شبکه است و ETH دارایی بومی آن. ([ethereum.org](https://ethereum.org/developers/docs/gas/?utm_source=openai))
برای نمونه، اگر اجرای تابع بهدلیل برقرارنبودن شرط قرارداد ناموفق شود، محاسباتی که تا آن نقطه انجام شدهاند همچنان گس مصرف میکنند و کارمزد دارند. بازگرداندن تغییرات قرارداد کارمزد را حذف نمیکند. توجه: پیش از تأیید تراکنش، نام شبکه، نشانی مقصد، مقدار و کارمزد نمایشدادهشده را بررسی کنید. ([ethereum.org](https://ethereum.org/developers/docs/gas/?utm_source=openai))
انتشار با فراخوانی فرق دارد
انتشار قرارداد تراکنشی است که کد قرارداد را به شبکه میفرستد تا قرارداد ساخته شود؛ این کار هم گس مصرف میکند. فراخوانیهای بعدی به همان قراردادِ منتشرشده میرسند و یکی از قابلیتهای آن را اجرا میکنند. پیش از تعامل، شبکه و نشانی قرارداد را با اطلاعات رسمی همان برنامه تطبیق دهید. ([ethereum.org](https://ethereum.org/developers/docs/smart-contracts/deploying/?utm_source=openai))
مثال عملی: قرارداد امانی چه میکند؟
فرض کنید خریدار ۳ ETH را به قرارداد امانی میفرستد؛ این فقط یک مثال فرضی است. قرارداد دارایی را نگه میدارد و فقط بعد از ثبت تأیید تحویل، آن را برای گیرنده میفرستد. پس شرط آزادسازی دقیقاً «ثبت تأیید تحویل» است، نه برداشت کلی از تحویل کالا.
قاعده و محاسبهٔ آزادسازی
قاعده را میتوان با یک شاخص ساده نوشت: مقدار آزادشده = مقدار سپرده × شاخص تأیید. این شاخص فقط دو حالت دارد: اگر تأیید تحویل ثبت شده باشد، مقدارش ۱ است؛ اگر ثبت نشده باشد، ۰ است. بدون تأیید، آزادسازی صفر میماند و دارایی در قرارداد باقی میماند.
در این مثال، تأیید تحویل ثبت شده است. محاسبه اینطور میشود: ۳ × ۱ = ۳ ETH. در نتیجه، قرارداد همان ۳ ETH سپردهشده را به گیرنده میفرستد. مقدار آزادشده از قاعدهٔ قرارداد میآید، نه از تصمیم موردی یا مذاکرهٔ تازه بین خریدار و گیرنده.

در تصویر بالا، مسیر دارایی از سپرده تا آزادسازی بعد از برقرارشدن شرط دیده میشود. اگر تأیید ثبت نشود، این مسیر متوقف میماند و دارایی در امانت باقی میماند؛ این بهتنهایی مشخص نمیکند چه زمانی یا چطور میتوان آن را پس گرفت. قرارداد فقط رویدادی را بررسی میکند که برایش تعریف و ثبت شده؛ پس ثبت تأیید به معنای ارزیابی مستقل کالا نیست.
قاعده اجرا میشود، نه داوری
قرارداد قاعدهٔ ازپیشنوشتهشده را اجرا میکند، اما دربارهٔ کیفیت واقعی کالا داوری نمیکند. برای نمونه، ثبت تأیید بهخودیخود نشان نمیدهد کالا سالم، مطابق سفارش یا از نظر خریدار قابلقبول بوده است. اگر این جزئیات اهمیت دارند، باید در سازوکار قرارداد و روش ثبت شرطها جای مشخص داشته باشند.
مهلت و بازگشت را مشخص کنید
امانتداری به تعریف و ثبت درست شرطهای روشن و قابلآزمایش وابسته است؛ مثلاً مشخص کنید تأیید را چه کسی و چگونه ثبت میکند. قرارداد واقعی باید تکلیف مهلت، اختلاف و بازگشت دارایی را هم روشن کند؛ وگرنه نبود مهلت یا مسیر بازگشت ممکن است دارایی را برای همیشه قفل کند.
کاربردها و تفاوتهای مهم را چطور بشناسید؟
قرارداد هوشمند یعنی قواعد برنامه روی شبکه اجرا میشوند و کاربران با تراکنش آن را فراخوانی میکنند. کاربردها متنوعاند: پرداخت برنامهپذیر پس از برآوردهشدن شرطی پول میفرستد؛ قرارداد توکن، صدور یا انتقال دارایی دیجیتال را مدیریت میکند؛ برنامهٔ مالی طبق قواعد خودش وامدهی یا مبادله انجام میدهد؛ و در بازی، مالکیت یا جابهجایی داراییهای درونبازی را ثبت میکند. اتریوم شبکه است و ETH دارایی بومی آن؛ توکنهای ساختهشده روی شبکه لزوماً ETH نیستند.
| کاربرد | نمونهٔ کار قرارداد | اطلاعات ورودی لازم |
|---|---|---|
| پرداخت برنامهپذیر | ارسال مبلغ پس از ثبت شرط پرداخت | نشانی فرستنده و گیرنده، مبلغ، وضعیت شرط |
| توکن | ثبت انتقال توکن میان دو نشانی | نشانی مبدأ و مقصد، مقدار انتقال |
| برنامهٔ مالی | محاسبهٔ سهم هر طرف از یک مبادله | مقدارهای سپردهشده، نوع دارایی، درخواست مبادله |
| بازی | ثبت انتقال یک دارایی درونبازی | شناسهٔ دارایی، نشانی مالک فعلی و گیرنده |
در سامانهٔ سنتی، قواعد روی سرور یا در فرایندهای یک نهاد اجرا میشوند؛ کاربر برای دیدن یا تغییر وضعیت به همان سامانه وابسته است. در قرارداد هوشمند، قواعد روی شبکه اجرا میشوند و تراکنشها و وضعیت ثبتشده برای همه قابل بررسیاند، هرچند خواندن کد بهتنهایی فهم کارش را ساده نمیکند. تغییرپذیری برنامه هم به طراحی آن بستگی دارد: بعضی قراردادها تغییرپذیرند و بعضی پس از استقرار مسیر سادهای برای تغییر ندارند. پیش از تعامل، شبکه و نشانی قرارداد را حتماً با اطلاعات رسمی همان برنامه تطبیق دهید.
قرارداد جهان واقعی را نمیبیند
قرارداد فقط به اطلاعاتی دسترسی دارد که در شبکه ثبت شده یا از یک منبع بیرونی به آن رسیده باشد؛ خودش رویدادهای بیرون از شبکه را نمیبیند. مثلاً اعلام قیمت یا تأیید یک رویداد واقعی باید از منبعی به قرارداد برسد، و اعتبار همان منبع هم باید جداگانه بررسی شود.
سالیدیتی زبان رایج توسعهٔ قرارداد در اتریوم است و وایپر گزینهای دیگر با طراحی متفاوت است؛ همینقدر که نامشان را بشناسید کافی است. اتصال چند قرارداد میتواند قابلیت تازهای بسازد؛ مثلاً قرارداد توکن به یک برنامهٔ مالی وصل شود تا دارایی در آن استفاده شود. اما هر اتصال، وابستگی تازهای به قواعد، دسترسپذیری و امنیت قراردادهای دیگر میسازد. برای ارزیابی، وجود کد قابلبررسی، توضیح سازوکار، و سابقهٔ بازبینی امنیتی را جداگانه بسنجید.
محدودیتها و اشتباهات رایج کداماند؟
دقت اجرا، خطاها و هزینه
اجرای دقیق کد فقط نشان میدهد قرارداد دستورهای نوشتهشده را اجرا کرده است؛ نه اینکه طراحی یا اطلاعات ورودی درست بوده. اگر شرطها ناقص باشند یا اطلاعات نادرست وارد شود، اجرای بیخطا هم میتواند به نتیجهای ناخواسته برسد. کد قابلبررسی، توضیح سازوکار و سابقهٔ بازبینی امنیتی را جداگانه بسنجید.
سه نوع مشکل را از هم تشخیص دهید: خطای قرارداد از منطق یا کد آن میآید؛ خطای برنامهٔ کاربر از رابط یا اطلاعاتی است که برنامه برای تراکنش آماده میکند؛ و خطای شبکه یا نشانی وقتی رخ میدهد که شبکهٔ نادرست را انتخاب کنید یا مقصد با اطلاعات رسمی برنامه نخواند. برای تشخیص قرارداد هوشمند، بررسی کنید برنامه روی شبکه اجرا میشود و با تراکنش فراخوانی میشود.
کارمزد هر فراخوانی قرارداد مبلغ ثابتی نیست. آن را از حاصلضرب گس مصرفشده در هزینهٔ هر واحد گس بسنجید؛ مقدار محاسبات و وضعیت شبکه این دو مؤلفه را تغییر میدهند. اتریوم نام شبکه است و ETH دارایی بومی آن؛ ETH نه خود شبکه است و نه معادل همهٔ قراردادها و برنامههای روی آن.
پیش از تأیید، این موارد را بررسی کنید
- شبکهٔ انتخابشده با شبکهٔ موردنیاز برنامه یکی باشد.
- نشانی قرارداد را با اطلاعات رسمی همان برنامه تطبیق دهید.
- هدف تراکنش و کاری را که قرارداد انجام میدهد، روشن کنید.
- مقدار ارسالی را بررسی کنید؛ مثال امانیِ بخش پیشین را با جزئیات اینجا دوباره محاسبه نکنید.
- کارمزد نمایشدادهشده را با گس مصرفی و هزینهٔ هر واحد گس بسنجید.
- توضیح رسمی برنامه را بخوانید و نام شبکه، نشانی مقصد، مقدار و کارمزد را پیش از تأیید دوباره وارسی کنید.
پیش از تعامل مکث کنید
تراکنشها و قراردادها ریسک فنی و عملی دارند. پیش از تعامل، منابع رسمی برنامه و جزئیات تراکنش را بررسی کنید؛ بهویژه شبکه، نشانی مقصد و کاری که قرارداد انجام میدهد.
چکلیست نهایی: چه چیزهایی را باید به خاطر بسپارید؟
برای تشخیص قرارداد هوشمند، ببینید با برنامهای روی شبکه روبهرو هستید یا نه: کدش روی شبکه اجرا میشود و با تراکنش فراخوانی میشود. قرارداد شخص یا داور مستقل نیست؛ فقط قواعدی را اجرا میکند که در برنامه تعریف شدهاند. برای نمونهی امانی، به شرط آزادسازیای که پیشتر بررسی شد ارجاع بدهید و آن را از نو حل نکنید.
پیش از تأیید، این موارد را بررسی کنید
- نام شبکه را با اطلاعات رسمی همان برنامه تطبیق دهید؛ اتریوم شبکه است و ETH دارایی بومی آن، پس انتخاب ETH بهتنهایی شبکه را مشخص نمیکند.
- نشانی مقصد را با نشانی منتشرشده در مرجع رسمی پروژه حرفبهحرف مقایسه کنید. به نشانیای که فقط در پیام یا صفحهای ناشناس دیدهاید اعتماد نکنید.
- نام تابعی را که تراکنش فراخوانی میکند بخوانید و بررسی کنید چه وضعیتی در قرارداد تغییر میکند؛ برای نمونه، تأیید مجوز خرجکردن با انتقال دارایی یکی نیست.
- مقدار دارایی و کارمزد پیشنهادی را در کیف پول بخوانید. کارمزد هر فراخوانی را با مقدار گس مصرفشده و هزینهی هر واحد گس بسنجید.
مرور سریع
برای مرور، یک جمله برای هر اصطلاح بنویسید: اتریوم شبکهای برای اجرای برنامههاست؛ ETH دارایی بومی همین شبکه است؛ قرارداد هوشمند برنامهای روی شبکه است که با تراکنش فراخوانی میشود؛ گس معیار کارِ محاسباتی اجرای تراکنش است و کارمزد از گس مصرفشده و هزینهی هر واحد گس بهدست میآید.
این چهار جمله را با صدای بلند بگویید و چکلیست را روی صفحهی تأیید یک تراکنش تمرین کنید. پیش از امضا، شبکه، نشانی مقصد، تابع، مقدار و کارمزد باید روشن باشند.
بعد از این مقاله چه بخوانید؟
اتریوم شبکهای است که برنامههای قراردادی روی آن اجرا میشوند و با تراکنش فراخوانی میکنند. ETH دارایی بومی همین شبکه است، نه خود شبکه. این تفاوت را بهخاطر بسپارید تا اجرای قرارداد را با دارایی پرداخت کارمزد یا انتقال ارزش اشتباه نگیرید. برای مرور مثال امانی، به بخش مربوط برگردید؛ شرط آزادسازی باید روشن و قابلآزمایش باشد.
دو مسیر برای ادامهٔ یادگیری
مقالهٔ بعدی مسیر، «اثبات کار و اثبات سهام»، سازوکارهای اجماع را معرفی میکند؛ یعنی روشهایی که شبکه برای هماهنگشدن و تأیید وضعیت خود به کار میبرد. بعد «کیف پول: گرم، سرد و سختافزاری» را بخوانید تا با نگهداری دارایی و امضای تراکنش آشنا شوید. این دو مقاله نشان میدهند اجرای قرارداد چگونه به سازوکار شبکه و اقدام کاربر از طریق کیف پول وصل میشود.
تمرین پیش از تعامل آزمایشی
از صفحهٔ رسمی همان برنامه، نام شبکه، نشانی قرارداد، عملکردی که میخواهید فراخوانی کنید، و کارمزد را بررسی کنید. نشانی و شبکه را با اطلاعات رسمی تطبیق دهید و کارمزد را بر پایهٔ گس مصرفشده و هزینهٔ هر واحد گس بسنجید. پیش از تأیید تراکنش، نام شبکه، نشانی مقصد، مقدار و کارمزد نمایشدادهشده را دوباره بخوانید.
برای ارزیابی قرارداد، سه مورد را جدا بررسی کنید: آیا کدش قابلبررسی است، سازوکارش روشن توضیح داده شده، و سابقهٔ بازبینی امنیتی دارد؟ وجود فقط یکی از اینها پاسخ دو مورد دیگر را نمیدهد. در این تمرین نیازی به پیوند یا ابزار دیگر نیست؛ همان صفحهٔ رسمی برنامهای که خودتان انتخاب کردهاید کافی است.
پرسشهای پرتکرار
اتریوم چیست؟
اتریوم شبکهای بلاکچینی برای ثبت تراکنشها و اجرای برنامههاست. ETH دارایی بومی این شبکه است و با خود شبکه یکی نیست.
قرارداد هوشمند چیست؟
قرارداد هوشمند برنامهای است که روی شبکهٔ اتریوم مستقر میشود و با تراکنش اجرا میشود. قواعد آن در کد تعریف شدهاند.
آیا قرارداد هوشمند خودش تصمیم میگیرد؟
خیر. قرارداد شرطهایی را اجرا میکند که در برنامه تعریف شدهاند. برای اطلاعات بیرون از شبکه، به ورودی یا منبع بیرونی نیاز دارد.
کارمزد گس چیست و با چه چیزی پرداخت میشود؟
گس مقدار محاسبات لازم برای اجرای تراکنش را اندازه میگیرد. کارمزد با ETH پرداخت میشود و مقدار آن به گس مصرفشده و هزینهٔ هر واحد گس بستگی دارد.
آیا برای استفاده از قرارداد هوشمند باید برنامهنویسی بلد باشم؟
نه. کاربران میتوانند از راه برنامههای کاربردی با قراردادها تعامل کنند. بااینحال، پیش از تأیید تراکنش باید شبکه، نشانی مقصد، عملکرد و کارمزد را بررسی کنند.
آیا قرارداد هوشمند خطاناپذیر است؟
خیر. قرارداد قواعد نوشتهشده را اجرا میکند، اما طراحی، پیادهسازی یا ورودی آن میتواند مشکل داشته باشد. بررسی کد و توضیحات رسمی برنامه به شناخت بهتر ریسکها کمک میکند.
منابع
این مقاله آموزشی است و توصیهی سرمایهگذاری یا سیگنال خرید و فروش نیست. معامله در بازارهای مالی ریسک دارد و مسئولیت تصمیمها با خود شماست.
اشتباهی دیدید؟ از صفحهی تماس با ما خبر بدهید تا بررسی و اصلاح شود.



