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

توصیه هایی کاربردی برای توسعه دهندگان زبان سالیدیتی (Solidity) در اتریوم!

نگارش:‌ایوب کریمی
19 مرداد 1398 - 22:30
در مقالات عمومی
زمان مطالعه: 2 دقیقه
0
سالیدیتی (Solidity) برای توسعه دهندگان

هر روز به طور متوسط ۲۰,۰۰۰ قرارداد هوشمند ایجاد می شود. تنها در نوامبر و دسامبر ۲۰۱۸ بیش از سه میلیون قرارداد هوشمند ایجاد شده است. گزارشی نشان می دهد که ۶۰ درصد از همه قرارداد های اتریوم هرگز مورد تعامل قرار نمی گیرند، کمتر از ۱۰ درصد قرارداد های ایجاد شده منحصر به فرد می باشند و در کمتر از ۱ درصد قرارداد ها کد منبع موجود است. گزارش دیگری نشان می دهد که بیش از ۲۵ درصد از همه قرارداد های هوشمند ایجاد شده به نوعی دارای باگ یا ایراد می باشند. در این مقاله مواردی ذکر می شود که به شما کمک می کند قرارداد های هوشمند بهتری بسازید.

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

Toggle
  • اصل K.I.S.S
  • استفاده مجدد
  • الگو های طراحی مهندسی نرم افزار
  • موارد آزمایشی
  • استفاده از ابزار های امنیتی
  • حملات شناخته شده و به روز رسانی ها
  • مستندات و رویه ها
  • بازبینی قرارداد
  • پاداش های باگ
  • آمادگی برای شکست
  • نتیجه گیری

اصل K.I.S.S

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

استفاده مجدد

لازم نیست که همه چیز را از ابتدا شروع کنید. کتابخانه ها و چارچوب هایی مانند truffle و OpenZeppelin از قبل به خوبی تست شده اند و این به شما در ساخت و طراحی مجزای منطق خود با استفاده از آنها کمک می کند. چیز هایی مانند ایجاد ژنراتور عدد تصادفی خود را انجام ندهید.

الگو های طراحی مهندسی نرم افزار

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

Proxy Delegate یک الگوی طراحی خاص است. این الگو به افراد کمک می کند که قرارداد خود را به صورت ایمن ارتقا دهند.

موارد آزمایشی

بهتر است از TDD (طراحی مبتنی بر تست و آزمایش) تبعیت شود و این یعنی موارد آزمایش قبل از نوشتن کد ایجاد شوند و موارد آزمایش مثبت و منفی پوشش داده شوند. همچنین سعی کنید که کد خود را بشکنید و اشتباه هایی منطقی پیدا کنید. می توانید از Solidity-Coverage برای ایجاد پوشش آزمایش استفاده کنید.

استفاده از ابزار های امنیتی

امنیت قرارداد هوشمند باید بالاترین اولویت باشد. باید همه مسیر های حمله را پیدا کنید. قرارداد هوشمند و توکن ERC-20 دارای سابقه ایراد یا باگ می باشند. شما می توانید همچنین به بررسی Ethernaut Puzzles بپردازید تا با مشهورترین مشکلات امنیتی آشنا شوید. شما همچنین باید مقاله ویتالیک بوترین را در زمینه امنیت قرارداد هوشمند بخوانید. ابزار های تحلیل امنیتی متن بازی هم موجود هستند که می توانید برای تحلیل قرارداد هوشمند خود مورد استفاده قرار دهید. به چند مورد از آنها در موارد زیر اشاره می شود.

تجسم

  • Surya: ابزاری کاربردی برای سیستم های قرارداد هوشمند است که تعدادی خروجی بصری و اطلاعات در مورد ساختار قرارداد ها را ارائه می دهد. همچنین تحقیق در مورد گراف دعوت عملکرد را پشتیبانی می کند.
  • Solgraph: یک گراف DOT ایجاد می کند که جریان کنترل عملکرد یک قرارداد سالیدیتی (Solidity) را مجسم می سازد و بر آسیب پذیری های امنیتی بالقوه تاکید می کند.
  • EVMLab: یک بسته ابزاری غنی برای تعامل با EVM است که شامل یک VM، Etherchain API و یک ردیاب پیگیری (trace-viewer) است.
  • Ethereum-graph-debugger: یک اشکال زدای گرافیکی EVM است که گراف جریان کنترل تمام برنامه را نمایش می دهد.

تحلیل استاتیک و دینامیک

  • Mythril Classic: یک تحلیلگر امنیتی متن باز برای کد سالیدیتی (Solidity) و قرارداد های هوشمند روی زنجیره است.
  • Mythril Platform: یک پلتفرم SaaS است که به هر فردی اجازه می دهد که به ساختن ابزار های امنیتی هدفمند بپردازد.
  • Slither: یک چارچوب تحلیلی استاتیک به همراه اکتشافگرانی برای بسیاری از مشکلات رایج سالیدیتی است. این ابزار دارای قابلیت های ردیابی ارزش و عیب است و به زبان پایتون نوشته شده است.
  • Echidna: تنها فازر (fuzzer) موجود برای نرم افزار اتریوم است. این ابزار از تست خصوصیات برای ایجاد ورودی های بدخواه که قرارداد هوشمند را متلاشی می کنند، استفاده می نماید.
  • Manticore: یک ابزار تحلیل باینری دینامیک با پشتیبانی EVM است.
  • Oyente: به تحلیل کد اتریوم برای پیدا کردن آسیب پذیری های رایج می پردازد.
  • Securify: تحلیلگر استاتیک آنلاین کاملا اتوماتیک برای قرارداد های هوشمند می باشد که یک گزارش امنیتی را بر اساس الگو های آسیب پذیری فراهم می آورد.
  • SmartCheck: ابزار تحلیل استاتیک کد منبع Solidity برای آسیب پذیری های امنیتی و انجام بهترین اقدامات ممکن است.
  • Octopus: ابزار تحلیل امنیتی برای قرارداد های هوشمند بلاک چینی با پشتیبانی از EVM و e) WASM) می باشد.

حملات شناخته شده و به روز رسانی ها

همیشه خودتان را با حملات شناخته شده و آپدیت های سالیدیتی (Solidity) به روز نگه دارید. آپدیت های برجسته سالیدیتی ممکن است تغییرات برجسته ای به دنبال داشته باشد. در این لینک می توانید لیستی از حملات شناخته شده قرارداد هوشمند را مشاهده نمایید.

وقتی که یک توکن ERC-20 را توسعه می دهید، چند چیز اساسی وجود دارد که باید مورد توجه قرار دهید:

  • مراقب حملات پیشرو (front-running) در ERC-20 باشید.
  • از انتقال توکن ها به آدرس 0x0 جلوگیری کنید.
  • از انتقال توکن ها به آدرس تماس جلوگیری کنید.

استاندارد های اتریوم بهتری مانند ERC-223 و ERC-777 وجود دارند که به عنوان جایگزین ERC-20 می توان مورد استفاده قرار داد. همچنین EIP های امنیتی مهم هستند و باید مراقب آنها بود، هم برای درک اینکه EVM چگونه کار می کند و یا برای اطلاع از بهترین اقدامات در زمان توسعه یک سیستم قرارداد هوشمند مناسب می باشند.

توسعه دهنده بلاک چین

مستندات و رویه ها

وقتی که کد شما قابلیت سر و کار داشتن با میلیون ها دلار پول را دارد، مستندات اقدامی حائز اهمیت می باشد. مستندات به مشارکت کنندگان داخلی و خارجی، بازرسان و بازدید کنندگان مستقل کمک می کند تا قرارداد های شما را درک کنند.

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

بازبینی قرارداد

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

پاداش های باگ

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

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

در این زمینه می توانید برنامه پروژه 0x را مورد بررسی قرار دهید.

آمادگی برای شکست

در جایی که کد وجود دارد، احتمال وجود باگ هم هست. وقتی که نوبت به قرارداد های هوشمند می رسد، یک طرح جامع برای بدترین سناریو ها ایجاد نمایید. Alan J. Perlis می گوید:

دو روش برای نوشتن برنامه های عاری از خطا وجود دارد که تنها سومی آنها کار می کند!

توصیه های زیر می توانند به شما در ایجاد چنین طرحی برای توکن خود کمک کنند:

  • یک قطع کننده مدار (circuit breaker) به قرارداد هوشمند خود اضافه کنید که همه انواع تراکنش ها را متوقف نمایند.
  • طرحی برای ارتقای قرارداد، ترمیم باگ و بهبودی ها ایجاد نمایید.
  • یک کانال ارتباطی و راهنمای مناسب برای سیاست افشای اطلاعات ایجاد نمایید.
  • تاثیر باگ ها و ریسک پول را به حداقل برسانید. برای زمان ضرر برنامه داشته باشید تا به آن متوسل شوید. از جمله این برنامه ها می توان به بیمه، صندوق جریمه و غیره اشاره کرد.

نتیجه گیری

همیشه قرارداد هوشمند خود را برای استفاده از gas بهینه کنید. پیشگیری بهتر از درمان است؛ همیشه برای هر شرایطی که ممکن است روی دهد برنامه داشته باشید. در مورد قراردادهای هوشمند، این پول واقعی است که در گرو قرار دارد، پس به عنوان برنامه نویس باید بسیار مواظب باشید. همیشه در جریان آخرین تغییرات زبان سالیدیتی (Solidity)، کامپایلر و حملات شناخته شده در اکوسیستم باشید. با بلاک چین اتریوم، ماهیت هر چیزی عمومی می شود و در این میان به بلوغ حال حاضر این اکوسیستم توجه داشته باشید و مواظب باشید که چیزی در اثر اعتماد به نفس بیش از حد فدا نشود. پس به ساخت، آزمایش، برنامه ریزی و دنبال کردن فرآیند هایی بپردازید که آسیب پذیری های احتمالی را در قرارداد هوشمند شما کم می کنند. هوشمندانه به کدگذاری بپردازید.

تگ: اتریومقرارداد هوشمند
اشتراک‌گذاریتوئیت

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

چرا اتریوم برای من شکست خورد؛ اعترافات صادقانه یکی از اعضای تیم گت (Geth)
اخبار اتریوم

چرا اتریوم برای من شکست خورد؛ اعترافات صادقانه یکی از اعضای تیم گت (Geth)

4 آبان 1404 - 22:00
167
Vitalik Buterin
اخبار عمومی

بوترین: ۵۱٪ کافی نیست؛ ریاضی بر اجماع برتری دارد

4 آبان 1404 - 12:00
136
فیچر اتریوم
اخبار اتریوم

نهنگ‌های اتریوم دوباره به حرکت درآمده‌اند؛ بازگشت اعتماد به دومین شبکه بازار؟

4 آبان 1404 - 11:00
68
فیچر تحلیل اتر و بیت
تحلیل تکنیکال

تحلیل تکنیکال بیت کوین (BTC) و اتریوم (ETH)؛ ۴ آبان ۱۴۰۴

4 آبان 1404 - 09:00
180
فیچر اتریوم
اخبار اتریوم

اتریوم در آستانه بزرگ‌ترین تحول بنیادین خود؛ فاز نهایی ارتقای فیوساکا آغاز شد

30 مهر 1404 - 16:00
111
فیچر تحلیل اتر و بیت
تحلیل تکنیکال

تحلیل تکنیکال قیمت بیت کوین و اتریوم؛ ۳۰ مهر ۱۴۰۴

30 مهر 1404 - 09:00
300
اشتراک
اطلاع از
0 دیدگاه
جدید ترین
قدیمی ترین محبوب ترین
Inline Feedbacks
View all comments

آموزش

فیچر بروز رسانی تحلیل قیمت توکن صرافی ها
مقالات عمومی

گزارش صرافی‌های کریپتو در سه‌ماهه سوم ۲۰۲۵

2 آبان 1404 - 22:00
87
فیچر تحلیل تکنیکال ارزهای دیجیتال
ترید

چگونه در سال ۲۰۲۵، حتی اگر تازه‌کار باشید نمودارهای ارز دیجیتال را بخوانید؟

2 آبان 1404 - 20:00
1927
فیچر ریکال
کریپتو کده

ریکال (Recall) چیست؟ بازار غیرمتمرکز مهارت‌های هوش مصنوعی

2 آبان 1404 - 12:00
112
فیچر عرضه اولیه
مقالات عمومی

معرفی ۴ لانچ‌پد عمومی؛ آیا پلتفرم‌های مدرن تب ICOهای ۲۰۱۷ را زنده می‌کنند؟

1 آبان 1404 - 22:00
117
فیچر براچین
مقالات عمومی

لایه اعتبار (Bend) براچین چیست؟ لایه‌ای که اقتصاد شبکه را به حرکت در می‌آورد

30 مهر 1404 - 22:00
55
فیچر برویس
کریپتو پدیا

بریویس (Brevis) چیست؟ تحقق رویای ۱۰ هزار TPS اتریوم با موتور محاسباتی بریویس

29 مهر 1404 - 22:00
88

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

تاخیر برداشت در اکسکوینو

بررسی مشکلات تاخیر برداشت ریالی و رمزارزی در صرافی اکسکوینو؛ دلایل، پیامدها و راهکارها

5 مرداد 1404 - 17:00
8346

کلاهبرداری با کیف پول چند امضایی چیست و چگونه از آن در امان بمانیم؟

حمله انتقال صفر (Zero-Transfer)؛ راهنمای کامل شناسایی و مقابله با تهدید کیف پول‌های رمزارزی

تاثیر تصویب قانون GENIUS بر ریسک فریز و مسدود شدن دارایی‌های تتر ایرانی‌ها؛ چه باید کرد؟

اشتباه ۶۰ هزار دلاری کاربر بیت کوین در پرداخت کارمزد؛ مراقب باشید این اشتباه را تکرار نکنید!

تسلیم یا کاپیتولاسیون (Capitulation) در کریپتو چیست؟ نشانه ترس یا فرصتی برای ورود به بازار؟

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

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

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

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