میهن بلاکچین
  • اخبار
    • همه
    • رمزارز در ایران
    • اخبار بیت کوین
    • اخبار اتریوم
    • اخبار آلتکوین
    • اخبار بلاکچین
    • اخبار عمومی
    • اطلاعیه صرافی‌های داخلی
  • تحلیل
    • همه
    • تحلیل آنچین
    • تحلیل اقتصادی
    • تحلیل تکنیکال
    • تحلیل فاندامنتال
  • آموزش
    • همه
    • کریپتو پدیا
    • کریپتو کده
    • دیفای
    • سرمایه گذاری
    • آموزش همه صرافی های ارز دیجیتال
    • ترید
    • کیف پول
    • بازی
    • استخراج
    • NFT
    • مقالات عمومی
  • ایردراپ
  • هک و کلاهبرداری
  • قیمت ارزهای دیجیتال
  • ماشین حساب ارزهای دیجیتال
  • مقایسه قیمت در صرافی
  • نشان‌شده‌ها
No Result
مشاهده همه‌ی نتایج
  • اخبار
    • همه
    • رمزارز در ایران
    • اخبار بیت کوین
    • اخبار اتریوم
    • اخبار آلتکوین
    • اخبار بلاکچین
    • اخبار عمومی
    • اطلاعیه صرافی‌های داخلی
  • تحلیل
    • همه
    • تحلیل آنچین
    • تحلیل اقتصادی
    • تحلیل تکنیکال
    • تحلیل فاندامنتال
  • آموزش
    • همه
    • کریپتو پدیا
    • کریپتو کده
    • دیفای
    • سرمایه گذاری
    • آموزش همه صرافی های ارز دیجیتال
    • ترید
    • کیف پول
    • بازی
    • استخراج
    • NFT
    • مقالات عمومی
  • ایردراپ
  • هک و کلاهبرداری
  • قیمت ارزهای دیجیتال
  • ماشین حساب ارزهای دیجیتال
  • مقایسه قیمت در صرافی
  • نشان‌شده‌ها
No Result
مشاهده همه‌ی نتایج
میهن بلاکچین
No Result
مشاهده همه‌ی نتایج
میهن بلاکچین آموزش

آموزش نوشتن آزمایشی قراردادهای سالیدیتی با استفاده از ترافل

نگارش:‌مازیار نسیمی
27 اردیبهشت 1401 - 21:24
در آموزش
زمان مطالعه: 4 دقیقه
0
کدنویسی قراردادهای سالیدیتی با ترافل

در نگاه اول به نظر می‌رسد که چارچوب ترافل (Truffle) تماما برای نوشتن، اجرا و آزمایش قراردادها ایجاد شده است و این کارها را نیز به خوبی انجام می‌دهد. هرچند موارد دیگری نیز وجود دارد که با استفاده از چند نکته می‌توانید از ترافل (Truffle) برای نوشتن و اجرای آزمایشی بهره ببرید.

در این آموزش به سه نکته خاص خواهیم پرداخت:

۱. استفاده از صبر (await) و ناهمزمانی (async) در مقابل وعده ها (promise)

۲. ایجاد محیط مشترک برای انجام چندین آزمایش

۳. ضمیمه کردن آزمایش ها در سایر آزمایش ها

استفاده از این نکات می‌تواند به کاهش مقدار بسیار زیادی کپی کردن کد در آزمایش شما کمک کند و آزمایش های خواندنی تری بنویسید.

آنچه در این مطلب می‌خوانید

Toggle
  • استفاده از صبر (await) و ناهمزمانی (async) در مقابل وعده ها (promise)
  • ایجاد محیط مشترک برای انجام چندین آزمایش
  • ضمیمه کردن آزمایش ها در سایر آزمایش ها

استفاده از صبر (await) و ناهمزمانی (async) در مقابل وعده ها (promise)

ترافل (Truffle) همراه با چند آزمایش ارائه می‌شود و هر آزمایش شامل چندین سرفصل تکرارشونده است و از وعده ها استفاده می‌کند.

1

این مجموعه آزمایش ها اساسا کرافت (cruft یا کد بد طراحی شده، به صورت غیرضروری پیچیده یا ناخواسته) می‌باشند. در ادامه به این موضوع می‌پردازیم که اگر آزمایش با ناهمزمانی و صبر مجدد نوشته شود چگونه خواهد بود.

2

می‌توانید مشاهده کنید که با تبدیل تابع آزمایش به تابع ناهمزمانی و سپس صبر برای تمام مقادیر مورد نیاز تا چه حد می‌توان در کدنویسی صرفه جویی کرد. بنابراین نیازی به نوشتن توابع برای مدیریت هر وعده قرارداد ترافل (Truffle) نداریم.

صرفه جویی دیگری که می‌توان انجام داد، جمع بندی پاسخ های صبر در براکت ها و تبدیل مستقیم آنها از شی نوع BigNumber به اعداد جاوااسکریپت است. این امر با استفاده از دستور زیر انجام می‌شود:

3

هر uint256 بازگشته از سالیدیتی به جاوااسکریپت یک شی از نوع BigNumber است و قابل تبدیل به عدد یا رشته می‌باشد.

به گروه تلگرامی ما بپیوندید

ایجاد محیط مشترک برای انجام چندین آزمایش

ترفند مفید دیگر، ایجاد محیط مشترکی از متغیرهایی است که می‌خواهید در چندین آزمایش در چندین قرارداد استفاده کنید.

نحوه تنظیمات اولیه ترافل (Truffle) این موضوع را بلافاصله مشخص نمی‌کند و به بررسی دقیق تر برای یافتن رویکرد صحیح نیاز است.

ترافل (Truffle) اینگونه آزمایش را ایجاد می‌کند:

4

اکنون اگر می‌خواهید این آزمایش را در آزمایش دیگری به کار بگیرید، کار دشوار می‌شود. چگونه بسته ای از متغیرهایی که در این آزمایش ایجاد شده‌اند را به آزمایش دیگری انتقال می‌دهید.

در دستور زیر، اصلاح بر روی اجرای آزمایشی را مشاهده می‌کنیم که دارای اکسپورت یا انتقال می‌باشد و محیط JSON را در فایل جدیدی به اسم shared.js قرار می‌دهد:

5

اکنون تابع آزمایش بسیار خوبی داریم که ناهمزمان است و شامل شی محیطی با مثال قرارداد ما می‌باشد. این تابع اجرای قرارداد ترافل (Truffle) ما را به تاخیر می‌اندازد و می‌توانیم مثال مورد استفاده را داخل سایر قراردادها قرار دهیم:

6

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

7

هم چنین می‌توانید چندین متغیر دیگر در فایل shared.js قرار دهید. در آزمایش های قرارداد شما، صرفا از واگذاری برای متغیرها استفاده کنید. هم چنین برای آسانتر شدن کارها، متغیرها را در حوزه تابع اصلی اجرا کننده آزمایش حفظ کردیم تا تمام آزمایش ها به آن دسترسی داشته باشند.

چرا ورود متغیرهایی نظیر meta به قراردادهای MetaCoin در آزمایش های بدین گونه است؟ این امر، هر آزمایش را به شدت ساده می‌کند در غیر این صورت باید دستور زیر را فراخوانی کنید:

8

شاید بعضی افراد این موضوع را نپسندند اما این رویکرد تاکنون عملکرد خوبی داشته است.

 

ضمیمه کردن آزمایش ها در سایر آزمایش ها

این نکته اساسا مشابه با اصلاح تجزیه تابع اجرا کننده آزمایش از قرارداد ترافل (Truffle) موجود در shared.js‌ می‌باشد. برای MetaCoin این نکته به صورت زیر می‌باشد:

9

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

10

به خاطر داشته باشید که اجرا کننده واقعی قرارداد، ناهمزمان نیست:

11

هرچند تمام آزمایش شما می‌تواند به صورت زیر، ناهمزمان شود:

12

با استفاده از این نکات می‌توانید آزمایش های کوچکی بنویسید که منجر به قراردادهای هوشمند ایمن و بسیار خوبی شوند.

 

تگ: اتریومتکنولوژی بلاک چینزبان برنامه نویسیسالیدیتی
اشتراک‌گذاریتوئیت

نوشته‌های مشابه

فیچر تحلیل اتر و بیت
تحلیل فاندامنتال

کاهش شدید توییت‌های بیت کوین و اتریوم؛ آیا سرمایه‌گذاران خرد از بازار خارج شده‌اند؟

23 تیر 1405 - 13:00
18
فیچر آپدیت هفتگی
تحلیل فاندامنتال

نبض هفتگی بازار کریپتو؛ از اخبار مهم تا رویدادهای پیش‌روی هفته سوم تیر

22 تیر 1405 - 09:00
31
بازارسازهای خودکار اختصاصی؛ انقلاب زیرساختی در معاملات آنچین
مقالات عمومی

بازارسازهای خودکار اختصاصی؛ انقلاب زیرساختی در معاملات آنچین

20 تیر 1405 - 12:00
28
فیچر بازار سهام
اخبار بلاکچین

تب خرید سهام اسپیس‌ایکس بازار را منفجر کرد؛ رکورد معاملات سهام توکنیزه‌شده شکسته شد!

18 تیر 1405 - 19:00
48
شبکه بیس چیست
اخبار بلاکچین

استاندارد B20 روی شبکه بیس فعال می‌شود؛ گامی تازه برای صدور استیبل کوین و دارایی‌های توکنیزه‌شده

17 تیر 1405 - 19:00
18
هاسکینسون EUTXO کاردانو Cardano
اخبار آلتکوین

هاسکینسون: اتریوم در حال کپی کردن نوآوری کاردانو است، اما حتی نامش را هم نمی‌آورد

17 تیر 1405 - 18:00
42
اشتراک
اطلاع از
0 دیدگاه
جدید ترین
قدیمی ترین محبوب ترین
Inline Feedbacks
View all comments

آموزش

استیبل کوین‌ها
سرمایه گذاری

آیا استیبل‌کوین قانون‌مند برای کاربر ایرانی امن‌تر است؟ مقایسه ریسک USDT و USDC

20 تیر 1405 - 20:00
113
معاملات ایجنتی (Agentic Trading) و خطرات واگذاری معاملات ارز دیجیتال به ایجنت‌های هوش مصنوعی
مقالات عمومی

معاملات ایجنتی (Agentic Trading) و خطرات واگذاری معاملات ارز دیجیتال به ایجنت‌های هوش مصنوعی

20 تیر 1405 - 16:00
43
بازارسازهای خودکار اختصاصی؛ انقلاب زیرساختی در معاملات آنچین
مقالات عمومی

بازارسازهای خودکار اختصاصی؛ انقلاب زیرساختی در معاملات آنچین

20 تیر 1405 - 12:00
28
چگونه عرضه‌های عمومی، شرکت‌های کریپتویی را تغییر می‌دهند
مقالات عمومی

چگونه عرضه‌های عمومی، شرکت‌های کریپتویی را تغییر می‌دهند

19 تیر 1405 - 20:00
22
اسپیس‌ایکس (SpaceX)، هوش مصنوعی (AI)، ریپل (XRP) و چرخه زیرساخت‌های نوظهور: چرا انتقال ثروت بعدی ممکن است متفاوت باشد؟
مقالات عمومی

اسپیس‌ایکس (SpaceX)، هوش مصنوعی (AI)، ریپل (XRP) و چرخه زیرساخت‌های نوظهور: چرا انتقال ثروت بعدی ممکن است متفاوت باشد؟

19 تیر 1405 - 16:00
78
چگونه قبل از ۳۰ سالگی از نظر مالی جلو بیفتیم؟ ۱۱ توصیه طلایی که آینده شما را متحول می‌کند
مقالات عمومی

چگونه قبل از ۳۰ سالگی از نظر مالی جلو بیفتیم؟ ۱۱ توصیه طلایی که آینده شما را متحول می‌کند

19 تیر 1405 - 12:00
196

پیشنهاد سردبیر

فیچر بازار سهام

وال‌استریت فقط برای آمریکایی‌ها نیست؛ قبل از خرید اپل، انویدیا یا S&P 500 این راهنما را بخوانید

16 تیر 1405 - 17:00
134

روزهای قرمز بازار؛ قربانی ترس می‌شوید یا استراتژی‌تان را تغییر می‌دهید؟

تحریم صرافی های ایرانی و ریسک حضانتی؛ دارایی‌هایمان واقعاً در خطر است؟

گزارش ویژه: اکسکوینو چگونه از اختلالی ادعایی به بحرانی سیستمی رسید؟ کالبدشکافی ورشکستگی پنهان در فین‌تک ایران

۵ گام طلایی برای ردیابی کیف پول‌ نهنگ‌ها و به دست آوردن سرمایه میلیون دلاری

«برای آنچه نیاز دارید، چه بهایی می‌پردازید؟» صورت‌مسئله تازه اقتصاد جهانی و ایران

  • خانه
  • قیمت ارز
  • صرافی ها
  • ماشین حساب
No Result
مشاهده همه‌ی نتایج
  • اخبار
    • همه
    • رمزارز در ایران
    • اخبار بیت کوین
    • اخبار اتریوم
    • اخبار آلتکوین
    • اخبار بلاکچین
    • اخبار عمومی
    • اطلاعیه صرافی‌های داخلی
  • تحلیل
    • همه
    • تحلیل آنچین
    • تحلیل اقتصادی
    • تحلیل تکنیکال
    • تحلیل فاندامنتال
  • آموزش
    • همه
    • کریپتو پدیا
    • کریپتو کده
    • دیفای
    • سرمایه گذاری
    • آموزش همه صرافی های ارز دیجیتال
    • ترید
    • کیف پول
    • بازی
    • استخراج
    • NFT
    • مقالات عمومی
  • ایردراپ
  • هک و کلاهبرداری
  • قیمت ارزهای دیجیتال
  • ماشین حساب ارزهای دیجیتال
  • مقایسه قیمت در صرافی
  • نشان‌شده‌ها

© 2025 - تمامی حقوق مادی و معنوی این وبسایت نزد میهن بلاکچین محفوظ است

سرویس‌ها
لیست قیمت ارزهای دیجیتال مقایسه قیمت صرافی‌ها مقایسه ویژگی صرافی‌ها ماشین حساب ارزهای دیجیتال مقایسه رمزارز‌ها
خبر و آموزش
اخبار آموزش ویدیو پیشنهاد سردبیر
میهن بلاکچین
درباره ما ارتباط با ما تبلیغات و همکاری تجاری قوانین و مقررات سیاست های حریم خصوصی فرصت های شغلی
تگ‌های پربازدید
قانون گذاری سرمایه‌ گذاری افراد معروف صرافی ارز دیجیتال دوج‌کوین بیت‌کوین استیبل کوین رمزارز در ایران پیش بینی بازار تکنولوژی بلاک چین اتریوم ‌کاردانو شیبا هک و کلاهبرداری
سرویس‌ها
لیست قیمت ارزهای دیجیتال مقایسه قیمت صرافی‌ها مقایسه ویژگی صرافی‌ها ماشین حساب ارزهای دیجیتال مقایسه رمزارز‌ها
خبر و آموزش
اخبار آموزش ویدیو پیشنهاد سردبیر
میهن بلاکچین
درباره ما ارتباط با ما تبلیغات و همکاری تجاری قوانین و مقررات سیاست های حریم خصوصی فرصت های شغلی
تگ‌های پربازدید
قانون گذاری سرمایه‌ گذاری افراد معروف صرافی ارز دیجیتال دوج‌کوین بیت‌کوین استیبل کوین رمزارز در ایران پیش بینی بازار تکنولوژی بلاک چین اتریوم ‌کاردانو شیبا هک و کلاهبرداری
میهن بلاکچین دست در دست، بی‌نهایت برای میهن

© 2026 - تمامی حقوق مادی و معنوی این وبسایت نزد میهن بلاکچین محفوظ است.