انجمن توسعه قرارداد هوشمند

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

سلام
تا جایی که من میدونم، وقتی میخواییم یه قرارداد هوشمند رو توی شبکه اتریوم دیپلوی کنیم، قراردادی که نوشتیم رو کامپایل میکنیم و بایت کد ایجاد شده رو میزاریم توی دیتا تراکنش و دریافت کننده تراکنش هم میزاریم روی آدرس صفر (0x0000000000000000000000000000000000000000) و تراکنش رو سابمیت میکنیم و بعد از ماین شدن تراکنش آدرسی که قرار داد در اون دیپلوی شده رو میفهمیم

حالا این قرار داد که مربوط به openGSN هستش آدرس قرار داد های تست‌نت و مین‌نتش یکی هستش
سوالی که دارم اینه :point_down: :
Screenshot from 2021-02-18 14-48-33

انقدر سعی تلاش کرده که تونسته همیچن کاری بکنه ( که بعید میدونم)؟
یا روش خاصی داره انجام همیچین کاری ؟

قرارداد ها :
تست نت(kovan):

مین نت:

مستندات مربوط به openGSN :
https://docs.opengsn.org/faq/general.html#why-are-eth-deposits-in-relayhub-required

3 Likes

برخلاف تصور من آدرس های قرارداد های هوشمند از تابعی رندوم وابسته به زمان محاسبه نمیشه
بلکه آدرس قرارداد های هوشمند از ترکیب آدرس فرستنده تراکنش به علاوه nonce اون آدرس محاسبه میشه

و اگه آدرس فرستنده و nonce آدرس در دوشبکه یکسان باشه آدرس قرارداد هوشمند هم یکی میشه

addresses - How is the address of an Ethereum contract computed? - Ethereum Stack Exchange.

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

(فرض کنید ما یه قرارداد هوشمند داشته باشیم که کارش دیپلوی قرارداد های هوشمند دیگه باشه و لاجیک اون قرارداد هوشمندی که دیپلوی شده توسط قرارداد هوشمند اولیه این باشه که در ابتدا حتما باید 0 تا اتر داشته باشه ؛ این جاست که هکر یا هر کس دیگه ای با هر منظوری میتونه سیستم رو خراب کنه. چطوری ؟ آدرس قرارداد هوشمند اولیه رو داره و میتونه nonce اون آدرس رو هم پیدا کنه و اینطوری میتونه آدرس قرارداد های هوشمندی که قراره تو آینده دیپلوی بشن توسط این قرارداد هوشمند رو محاسبه کنه و از قبل بهشون اتر واریز کنه ، این طوری لاجیک قرارداد هوشمندی که قراره دیپلوی بشه رو شکونده(منطقش این بود که حتما باید در ابتدا صفر تا اتر داشته باشه))

2 Likes

دقیقا برای جلوگیری از این نوع attack هست که میگن نباید منطق قرارداد ها وابسته بالانس قرارداد باشه
این لینک خیلی جامع هست برای Smart Contract Weakness Classification که این هم یکی از مواردش هست:

1 Likes

:ok_hand: :ok_hand: :raised_hand:
ممنون، خیلی سند مفید و با کاربردی هستش

1 Likes