جلسه ششم - ابزارهای برنامه نویسی قرارداد هوشمند

در جلسه ششم در زمینه ابزارهای برنامه نویسی قرارداد هوشمند صحبت میکنیم.

در شروع قرارداد fundMe را بررسی میکنیم و با مفهوم اوراکل ها آشنا میشیم. و قیمت اتریوم را با استفاده از chainlink دریافت میکنیم تا در قرارداد استفاده کنیم. در محیط ریمیکس روی تست نت دپلوی میکنیم و تراکنش ارسال میکنیم.

سپس در بخش بعد قرارداد را در محیط VsCode با استفاده از Hardhat در بلاکچین لوکال دپلوی میکنیم. و بعد با ثبت نام در Alchemy و استفاده از RPC-URL و API key که در اختیارمون میذاره روی تست نت هم قرارداد را دپلوی میکنیم. با hardhat deploy package هم آشنا میشیم.

با مفهوم mock آشنا میشیم و یاد میگیریم چطور از mock های Chainlink استفاده کنیم.

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

در بخش بعد قرارداد را در تست نت از طریق کد Verify میکنیم.

نگاهی به Custom Task در هاردهت میندازیم و در آخر با Hardhat Console آشنا میشیم.

از طریق لینک زیر به ویدئوی این جلسه دسترسی دارید:

[youtube]

از لینک زیر جهت دانلود اسلایدهای این جلسه استفاده کنید:
جلسه ششم.pdf (3.2 مگابایت)

13 پسندیده

هر چی تلاش کردم این سری نتونستم وصل شم مجبوریم بعدا اف لاین ببینیم

1 پسندیده

سلام ارور نات فوند.priceconverter در ریمیکس برای چی هست من نتو نستم کانترکت فاند می رو کامپایل کنم به خاطر این ارور.

از این لینک:

image
PriceConvertor رو هم کپی کنید تو ریمیکس.

2 پسندیده

كاش ادامه آموزش با ابزار ريميكس بود كه براي همه در دسترس است. البته درك ميكنم كه خيلي ابزار حرفه اي نيست ولي پس از تسلط نسبي بر مفاهيم مي شد ابزارهاي كارآمدي مثل هاردهت و… را به كار برد. سوالي كه پيش مياد اين است كه آيا پروژه نهايي رو ميشه با ريميكس نوشت يا خير؟

ببخشید من که js مثلا بلد نیستم و پایتون بلدم بایدداز brownie به جای هارد هت استفاده کنم درسته?
آموزشش رو شما جایی گذاشتین یا میشه از کجا پیدا کرد؟

وقتتون بخیر … من میخواستم با ویندوز یه شبکه خصوصی ران کنم که با این ارور مواجه شدم …باید چکارکنم Fatal: Failed to register the Ethereum service: ethash is only supported as a historical component of already merged networks . پس از مرج باید نود consensis رو هم ران کرد که کار کنه یا نه ؟؟؟

میتونین استفاده کنین. فقط ما آموزشش رو نداریم.

https://eth-brownie.readthedocs.io/en/stable/

ممنون وقت شما هم بخیر
لطفا سوال geth رو زیر جلسه مرتبط بپرسین.
این خطا هم ظاهرا دلیلش اینه که Ethash چون POW هست تو نسخه آخر غیر فعال شده.

ما در نهایت از شما کد و اجرای پروژه رو میخواییم. اگر تونستین با ریمیکس اینکارو انجام بدین انتخاب شماست.

1 پسندیده

سلام و درود.وقت بخیر
در جلسه ی 6 ساعت 01:03:45 ؛استاد فایلی به نام fund.js رو از پروژه ی اصلی (دانلود شده از گیت هاب) کپی کردن(لازم به ذکره فایل fund.js که برای من اومده یکم متفاوته و توضیحات رو که با // اومدن نداره) و در پوشه ی مشابه برنامه ای که قراره دیپلوی بشه قرار دادن.بعد یه قسمتش رو سلکت کردن و با چیزی که مشخص نیست از کجا کپی کرده بودن جایگزین کردن.
اون چیزی که جایگزین کردید از کجا اومد؟ما هم دسترسی داریم یا باید دستی تایپش کنیم؟
اصلا چرا تغییر کرد؟

1 پسندیده

سلام وقت بخیر دوستان من برای نصب هاردهت بر روی مک بوک به مشکل برخوردم کسی میتونه کمک کنه؟

1 پسندیده

سلام و عرض ادب خدمت اساتید گرامی خدا قوت💙
ما نهایتا ملزم به استفاده از هاردهت هستیم ولی سوالم اینه که برای استفاده از هاردهت به چه میزان و در چه سطحی باید JS‌ رو یادبگیریم و درش عمیق بشیم؟ رودمپ پیشنهادی ای دارید؟
پیشاپیش ممنونم از پاسخگویی تون.

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

من که دستی تایپش کردم و دیپلوی شد.

سلام وقت شما هم بخیر.
فک میکردم گفتم که تغییر دادم اونو.
کد دپلوی اون فایل رو تو توضیحات گذاشتم و فقط به ساده ترین شکل نوشتم دپلوی رو فک کنم کلا هم چهار خط بود برا همین شیر نکردم.

const FundMeFactory = await ethers.getContractFactory("FundMe")
  console.log("Deploying contract...")
  const fundMe = await FundMeFactory.deploy("0x694AA1769357215DE4FAC081bf1f309aDC325306")
  await fundMe.deployed()
  console.log(`Deployed contract to: ${fundMe.address}`)
1 پسندیده

سلام وقت شما هم بخیر
لطفا مراحل نصبتون رو اینجا بنویسین
و خطا رو کپی کنین
لازم باشه اسکرین شات بذارین
که بتونیم کمکتون کنیم

1 پسندیده

سلام ممنونم
ملزم که شاید نه لزوما
اگه با زبان دیگه ای راحت هستین میتونین چک کنین ببینین ابزاری داره یا نه. فقط یادگیری طرز استفاده ش با خودتون میشه.
لزومی نداره خیلی حرفه ای جاوااسکریپت بلد باشین. درگیر جزییات غیر ضروری نشین.
کدی که میبینین و متوجه نمیشین رو دستور به دستور چک کنین تا مثلا کل یه فایل تست یا دپلوی رو درک کنین.
هرجا لازمه کاری انجام بدین و نمیدونین به چه شکل هست باز جستجو کنین و راه حل رو پیدا کنین. کم کم راحت خواهید شد با کد.
همین که متوجه کد بشین و بتونین در جهت استفاده خودتون تغییرات لازم رو بدین حداقل برای انجام پروژه فک کنم کافیه.

1 پسندیده

گفتید که تغییر دادید.
ولی اصلا چرا تغییر کرد و چه اتفاقی توی قبلی افتاده بود؟چرا همون رو نمیشد دیپلوی کرد؟
“0x694AA1769357215DE4FAC081bf1f309aDC325306” این دقیقا چیه؟ازکجا و چطوری بدست اوردیدش؟
با مطالبی که تا الان یاد گرفته بودیم؛باید خودمون میتونستیم تشخیص بدیم که اینجا این کد بایدجایگزین بشه؟
نیاز بود این کار رو هم با شما مرحله به مرحله انجام بدیم؟

با روندی که میخواستم آموزش بدم تطبیق نداشت.
به این دلیل که اون کدی که تو خود فایله, داره از هاردهت دپلوی پکیج استفاده میکنه.
و لازمه قبلش این خط رو هم اضافه کنین که کار کنه:

await deployments.fixture("all");

من میخواستم نشون بدم بدون اینکه بخواین پکیج دپلوی رو نصب کنین چطور میتونین یک قرارداد رو دپلوی کنین.
هرچند تو این مورد خاص بدون ماک رو لوکال کار نمیکنه ولی رو تست نت اوکی بود.
اون آدرس هم آدرس priceFeed رو تست نته, بصورت هاردکد که پارامتر ورودی سازنده قراردادمونه.

1 پسندیده

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


.

و همچنین اضافه کنم که با اینکه توی کانفیگ ورژن کامپایلر رو یدونه 0.6.0 و یدونه 0.8.19 انتخاب کردم، باز هم به این ورژن هام گیر میده… :slight_smile: :


و این

.
این هم فایل کانفیگ:


.
پیشاپیش بسیار سپاسگذارم :pray: