جلسه ششم (اسلاید‌ها و بقیه منابع)

سلام من وقتی کد arraye رو میزنم کامپایل کنه بهم خطا میده اینا چیه؟

برای دریافت جوابتون میتونید به این لینک مراجعه کنید

2 پسندیده

به ترتیب تعریف متغیرها, تعداد و شماره slot که اشغال میکنه دقت کنید:
یادتون باشه برای slot ها gas پرداخت میکنید.
(یه حالت) دو تا 8 بیت میتونن تو یه slot ذخیره بشن. 256 دیگه جا نمیشه میره slot بعد.
uint8 a => slot 0
uint8 b => slot 0
uint256 c => slot 1

(یه حالت دیگه) این یکی سه تا slot اشغال میکنه. بعد ذخیره 8 بیت تو slot اول دیگه جا برا 256 تا نیست میره slot بعدی. و حالا که دومی هم پر شده متغیر بعدی تو slot سوم ذخیره میشه.

uint8 a => slot 0
uint256 c => slot 1
uint8 b => slot 2

5 پسندیده

سلام
تعریف اسلات چی هست ؟
چیزی که من متوجه شدم یه حافظه 256 بیتی درسته ؟
هر قیمت توکن به صورت پیشفرض تا 16 تا اعشار داره حالا مثلا اعداد قبل اعشار رو هم حداکثر 6 تا در نظر بگیریم می تونیم برای هر uint , بیستو دو بیت در نظر بگیریم ؟ مثلا این حرکت میتونه تاثیر خوبی اصلا روی صرفه جویی gas بزاره ؟کلا این سوال آخر رو برای این پرسیدم چون تا اینجایی که جلو رفتیم کمتر به متغیر 256 بیتی بر خوردیم ولی بیشتر این کد هایی که دیدیم uint خالی بوده بهتر نیست برای صرفه جویی این عدد مشخص شه ؟ یا اصلا تاثیر زیادی رو gas نداره ؟

سلام,
بله اسلات حافظه Storage
EVM (ماشین مجازی اتریوم) از 256 بیت به عنوان word size استفاده می کنه.

میتونین برای توکن خودتون هر نوعی خواستید استفاده کنید.
اما اگر از استاندارد ERC20 میخوایین استفاده کنید باید از نوع تعیین شده تبعیت کنین که ارسال توکن شما برای بقیه و برعکس مشکل ساز نباشه.
یا اگر میخواین تعریف خودتونو داشته باشین اگر لازمه با conversion های مناسب این قضیه رو کنترل کنید.

5 پسندیده

سلام
تو سایت solidity-by-example پیشنهاد کرده از call برای ارسال اتر استفاده بشه اما من تو کتاب building ETH dapps خوندم به دلایل امنیتی send و call رو کلا رد کرده. می شه توضیح بدید الان از جه روشی باید استفاده کرد؟
مرسی

بین send و transfer پیشنهاد میشه از ترنسفر استفاده شه ولی بین call و transfer این طوری که تو پروژه ها دیدم بهتره از call استفاده شه چون call و transfer می تونن هر کدوم به نوبه خودش مشکل ساز بشه( تو جلسه ای که مربوط به امنیت بود بش پرداخته شده) ولی مشکل call رو میشه از reentrancyguard اپن زپلین استفاده کرد ولی مشکل ترنسفر حلش دردسر داره

1 پسندیده

سلام.وقت بخیر.ببخشید من کد آرایه سایت solidity-by-example رو داخل remix گذاشتم.کدبه درستی کامپایل میشه.اما بعد از دیپلوی مقدار دهی های ارایه صورت نمیگیره و وقتی در قسمت دیپلوی شده روی ارایه کلیک میکنم در قسمت log ارور :
Error encoding arguments: Error: invalid BigNumber string (argument=“value”, value="", code=INVALID_ARGUMENT, version=bignumber/5.5.0)
رو نمایش میده


ایراد کار از گجاست؟