Best Solidity examples and developer notes
Tips & Tricks
- سيتم تحديث Ethereum بشكل متكرر حتى بناء مستقر.لذا توقع أفضل الممارسات الجديدة والنظر الأمني بين الحين والآخر.
- سيكون الرمز الخاص بك يحتوي على أخطاء وكن مستعدًا للتعامل معها.استخدم تقنيات مثل إيقاف العقد والحد من الاستخدام.
- الحفاظ على عقدك بسيط ومعيار.
- استفد من المكتبات حتى تتمكن من إعادة استخدام التعليمات البرمجية وتحديثها.
- حاول استخدام الأدوات والمكتبات المتاحة بالفعل وتحديثها بشكل ضئيلة.
- لا تحاول أبدًا تخزين وتنفيذ كل شيء في صلابة.استخدمه حيث يلزم اللامركزية.
External calls
تجنب استخدام المكالمات الخارجية كلما كان ذلك ممكنًا.يمكن أن تؤدي المكالمات إلى الكود غير الموثوق إلى عيب أمني.عند استخدام مكالمات العقد الخارجية ، افترض أن الكود غير الآمن قد يتم تنفيذه.حتى إذا لم يكن العقد ضارًا ، فيمكن تنفيذ رمز ضار من خلال أي عقود يستدعيها.
استخدم المكالمات الخارجية في الجزء السفلي من الوظيفة لأنها ستقوم بإعادة توجيه جميع الغاز إلى الترفيه.
Use <address>.call.gas(gasAmount)()
to limit sending gas to external calls.
Sending transaction from contracts
<address>.send()
and <address>.transfer()
are considered safe. It has a limited gas of 2300
which is low for any task except for an event.
<address>.transfer()
will revert the transaction and <address>.send()
will return false. Use it based on requirement.
Error handling
ستعود بعض الوظائف كاذبة إذا فشلت.تأكد من التعامل مع احتمال أن تفشل المكالمة ، عن طريق التحقق من قيمة الإرجاع.
call
, callcode
, delegatecall
, send
are some functions that return false
on failure.
|
|
Using access modifiers
استخدم معدلات الوصول بشكل صريح. Using external
for external only function will reduce gas.
|
|
Make use of function modifiers
استخدم المعدلات لتقييد الوصول إلى الوظائف.تجنب الوصول غير المصرح به لجميع الوظائف. You should use msg.sender
over tx.origin
for authorization.
|
|
Upgrading contracts
ßß
Use delegatecall
in a proxy contract for upgrading contracts overtime.