به خوبی شناخته شده است که قراردادهای هوشمند می توانند مشکل باشند. افراد غیر فنی بدون اطلاع قبلی در مورد کیفیت توکن و ایمنی توکی که می خرند ، وسوسه می شوند که یک رمز ERC20 را بر اساس سطح اعتیاد به مواد مخدر خریداری کنند.

Bitfinex ، یکی از بزرگترین مبادلات رمزنگاری در صنعت ، توکنی به نام LEO را منتشر کرده است. این رمز به نهاد کنترل کننده این امکان را می دهد تا توکن های جدید نامحدودی را چاپ یا ضرب کند ، همچنین به آنها امکان می دهد سکه های هر کس را حذف کنند ، از جمله در ارزهای متمرکز یا غیرمتمرکز ، ذخیره سازی گرم یا سرد ، کیف پول سخت افزاری یا نرم افزاری و / یا کاغذ یا کیف پول مغزی.

گول نخورید ، خرید ERC20 به این معنی نیست که دارایی شما واقعاً متعلق به شماست! این اولین بار نیست که چنین قرارداد هوشمندی را افشا می کنم. همین هفته گذشته ما گزارشی درباره قرارداد هوشمند مشابهی که اجازه عملکرد مشابه را می دهد در Cointelligence منتشر کردیم ، بررسی ما را در مورد WHEN Smart Contract بررسی کنید.

آیا قرارداد LEO ERC20 کلاهبرداری چند میلیارد دلاری و / یا تقلب را امکان پذیر می کند?

تصمیم گیری را به عهده خود شما می گذاریم ، اکنون بیایید در LEO Token غوطه ور شویم.

معرفی

LEO یک رمز ERC20 است که در 10 مه 2019 توسط iFinex Inc در اعلامیه آنها. شما می توانید پیدا کنید LEO Whitepaper اینجا. اگرچه ما نتوانستیم مخزن GitHub را پیدا کنیم ، کد قرارداد توکن آنها در Etherscan تأیید شد. ما برای آزمایش و استقرار یک نسخه از این رمز در Ropsten testnet از کد Etherscan تأیید شده برای LEO ، LeoController و TokenFactory استفاده کردیم.

نشانه LEO – رمز ERC20 که توسط Unus Sed Leo Limited ، یک شرکت تابعه از iFinex Inc صادر شده است.

کنترل کننده – قرارداد کنترل کننده مالک را قادر به انتقال ، تأیید ، صدور ، سوزاندن و تغییر کنترل کننده می کند. لطفاً توجه داشته باشید که اگرچه قرارداد “0xf17ebb3a24dc6d6b56d38adf0df499c1cd9e5672” در حال حاضر “LEO” ERC20 را “کنترل” می کند ، اما “کنترل کننده” می تواند توسط مالک به راحتی ارتقا یافته یا به هر نشانی تغییر یابد بنابراین می تواند تقریباً هر کاری را با رمز LEO انجام دهند..

قرارداد کنترل کننده LEO

قرارداد LEOController: مالک می تواند “کنترل کننده” قرارداد LEO ERC20 را تغییر دهدقرارداد کنترل LEOC مالک می تواند قرارداد کنترل کننده LEO ERC20 را تغییر دهد

کنترل کننده LEOC مالک قرارداد می تواند “کنترل کننده” را در هر زمان تغییر دهد و آن را روی هر آدرس کیف پول که کنترل می کنند تنظیم کند.

  • با فراخوانی عملکرد “upgradeController” در خط 698 و وارد کردن هر آدرس کیف پول مورد نظر خود.
  • پس از تأیید معامله فوق ، آدرس وارد شده به “کنترل کننده” جدید LEO ERC20 قرارداد تبدیل می شود.

قرارداد LEO: مالک می تواند نشانه های شما را بسوزاند و نشانه های جدید نامحدودی را ضرب کندقرارداد LEO مالک می تواند نشانه های شما را بسوزاند و نشانه های جدید نامحدودی را ضرب کند

چگونه مالک LEO می تواند نشانه های ضرب را برای همیشه حفظ کند?

همانطور که قبلا توضیح داده شد ، هنگامی که آدرس کنترل کننده به آدرس کیف پول (یا حتی یک قرارداد هوشمند جدید) تغییر می کند ، آنها می توانند به سادگی عملکرد “generateTokens” را در خط 460 فراخوانی کنند.

مولفه های

  • _owner → کیف پولی که نشانه های LEO تازه ضرب شده را دریافت می کند.
  • _amount amount مقدار نشانه هایی برای “چاپ” که به آدرس فوق می روند.

توجه داشته باشید – در لیست سفید LEO ذکر نشده است که حداکثر منبع رمز چیست و این قرارداد به آنها امکان می دهد که نشانه های LEO را ضرب کنند زیرا ما قادر به “چاپ” نشانه های چهارمیلیونی LEO در یک شبکه آزمایشی با استفاده از کد آنها هستیم.

چگونه مالک LEO می تواند نشانه های شخص دیگری را حذف کند?

عملکرد “shkatërTokens” در 477 کیف پول کنترل کننده LEO را قادر میسازد تا نشانه های LEO هرکسی را بسوزاند ، از جمله شامل موارد موجود در تبادل متمرکز یا غیرمتمرکز ، کیف پول سخت افزاری یا نرم افزاری ، ذخیره سازی گرم یا سرد و یا کاغذ یا مغز نیست. کیف پول. مهم نیست که سکه های شما کجاست ، اگر بخواهند می توانند سکه های شما را حذف کنند. به همین سادگی.

مولفه های

  • _owner → کیف پولی که نشانه های موجود LEO از آن سوزانده می شود.
  • _amount amount مقدار علامت هایی برای حذف “از آدرس کیف پول فوق الذکر”.

شواهد بیشتر

ما دقیقاً همان کد را برای رمز ، کنترل کننده و کارخانه LEO ERC20 کپی کردیم تا قرارداد زیر را در این کشور مستقر کنیم Ropsten testnet.

کیف پول / آدرس ها

  • آدرس ارسال کننده: 0x58FA58089956c5cba21d9f61434B1902F8121b32
  • آدرس تولید شده به طور تصادفی: 0xada183F6Ff6E7805EE5bDA701d40958858FeE548

ابتدا کنترلر را از آدرس Sender به یک کپی از “LEOController” تغییر دادیم تا ببینیم آیا با استفاده از عملکرد “upgradeController” می توانیم دوباره کنترلر را به آدرس Sender تغییر دهیم یا خیر..

مراحل

  • کارخانه توکن مستقر شده
  • نشانه LEO مستقر شده
  • کنترل کننده LEOC مستقر شده
  • بررسی کنید که چه کسی واقعاً “کنترل کننده” در قرارداد رمز LEO است: 0x58FA58089956c5cba21d9f61434B1902F8121b32.
  • کنترل کننده را با استفاده از عملکرد “changeController” در قرارداد LEO به قبلی مستقر شده تغییر دهید قرارداد “LEOController”
  • تأیید شد که کنترلر در واقع به آدرس قرارداد هوشمند تغییر کرده است.

در این مرحله ، قرارداد testo LEO ما از روش های زیر دقیقاً مشابه قرارداد LEO ERC20 است

اکنون ، ما در حال تلاش برای تعیین موارد زیر هستیم:

  • اگر با تغییر دادن کنترل کننده بتوانیم نشانه های LEO شخص دیگری را بسوزانیم یا از بین ببریم.
  • اگر بتوانیم مقدار زیادی دیوانه وار رمز LEO صادر کنیم تا ببینیم آیا درپوش وجود دارد.

مراحل

  • اگرچه ، در این مرحله ، ما می دانستیم که برای مالک امکان تغییر کنترل کننده در قرارداد “LEO” با استفاده از عملکرد “changeController” وجود ندارد ، ما هنوز عمداً آن معامله را ارسال کردیم تا برگردد یا شکست بخورد. ناموفق
  • ما به قرارداد “LEOController” رفتیم و از عملکرد “upgradeController” برای تغییر کنترل کننده قرارداد هوشمند کنترل شده ، یعنی LEO ، به آدرس Sender استفاده کردیم.. موفق شد

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

صدور رمز

از آنجایی که فرستنده دوباره کنترل کننده قرارداد LEO است ، می تواند به توابع قرارداد LEO “generateTokens” و “DestructionTokens” دسترسی پیدا کند. ما یک آدرس کیف پول تصادفی ایجاد کرده ایم “0xada183F6Ff6E7805EE5bDA701d40958858FeE548” برای ارسال برخی از جنون ها مقدار عظیمی از نشانه های LEO 1،000،000،000،000،000،000،000،000،000،000،000،000،000،000 (یک میلیارد دلاری) LEO منتقل شده است.

سوزاندن نشانه ها

ما می خواستیم تعیین کنیم که آیا ما (فرستنده) می توانیم نشانه ها را از آدرس تصادفی حذف کنیم یا از بین ببریم 0xada183F6Ff6E7805EE5bDA701d40958858FeE548 ما قبلا تولید کردیم.

در معامله فوق ، ما با موفقیت 10،000،000،000 (ده میلیارد) نشانه از کیف پول شخص دیگری یا نشانی که ما متعلق به آن نیستیم را سوزاندیم / حذف کردیم / از بین بردیم.

شما می توانید ببینید که آدرس “0xada183F6Ff6E7805EE5bDA701d40958858FeE548” در حال حاضر دارای یک تعادل از 999،999،999،999،999،999،999،999،990،000،000،000 (999 دسیلیون، 999 عدد یک با 54 صفر، 999 octillion به، 999 سپتیلیون، 999 عدد یک با 21 صفر ، نهصد و نود و نه کوینتیلیون ، نهصد و نود و نه کوادریلیون ، نهصد و نود و نه تریلیون ، نهصد و نود میلیارد) testnet LEO توکن فقط.

مقایسه قراردادها

LEO اصلی تست نت تفاوت
MiniMeTokenFactory اصلی تست نت تفاوت
کنترل کننده LEOC اصلی تست نت تفاوت

TLDR: این چگونه بر من تأثیر می گذارد?

پائولو آردوینو ، CTO Bitfinex, به توییت ما پاسخ داد که این موضوع را به طور خلاصه بیان می کند ، بیان می کند:

“به دلایل امنیتی و اثبات آینده ، ما توانایی ارتقا قرارداد Token را نیز داریم. این واقعاً یک ویژگی کلیدی برای قراردادی است که ممکن است سالها عمر کند. استفاده از نشانه های بیشتر برای Finex منطقی نیست … مانند شلیک به پای ما. “

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

حالا بیایید به کار خود برگردیم! خوب یادداشت کنید که قراردادهای هوشمند به گونه ای طراحی شده اند که قابل اعتماد نیستند. Bitfinex در اینجا با قرار دادن درب پشتی ، که به آنها بلیط تقلب در هر زمان که لازم است ، با برتری ناعادلانه نسبت به افرادی مانند من و شما ، اعتماد را سلب می کند. به طور مکرر در کل این مقاله ، تنها واقعیتی که ما به آن اشاره کردیم توانایی آنها در ضرب هر تعداد (یا نامحدود) سکه LEO به تشخیص خود و حذف هر سکه کیف پول است ، اکنون یا در آینده.

برای خلاصه و ساده سازی همه موارد برای خوانندگان غیرفنی خود ، توانایی ارتقا contract قرارداد هوشمند را انکار یا زیر سوال نمی بریم. مسئله در اینجا فنی نیست بلکه فلسفی است. اگر مشکلی ندارید که Bitfinex قادر به انجام کاری باشد که آنها با LEO می توانند انجام دهند ، ما این را نیز درک می کنیم و به دیدگاه شما احترام می گذاریم. اما برای ما ، LEO با روح و فلسفه بلاکچین خوب بازی نمی کند زیرا آنها می توانند اصطلاحات را القا کنند. همچنین ، براساس درک ناقص و فروتنانه ما ، یک ارز رمزنگاری شده:

  • باید برای همه باز باشد. شما می توانید بروید و بروید که شما می خواهید. ✓
  • باید منصفانه باشد هیچ کس نباید هیچ مزیت ناعادلانه ای نسبت به شخص دیگری داشته باشد. ✘
  • باید فراگیر باشد. نباید به کسی محدود شود ، صرف نظر از اینکه چه گفته یا چه کرده یا از کجا آمده است ، در عوض نسبت به "که" آنها هستند یا "چی" آنها ممکن است تبدیل شوند. ✘
  • اگر بدون سانسور نباشد باید مقاوم در برابر سانسور باشد. هیچ کس نباید از استفاده یا دسترسی به ویژگی در هر زمان مشخص جلوگیری کند. وقتی نوبت به شبکه بلاکچین می رسد (در این مورد قرارداد هوشمند) ، حتی با بازیگران بد مانند کلاهبرداران ، هکرها و کلاهبرداران نیز باید به روشی بدون سانسور – از جمله ، به طور یکسان ، آشکار و منصفانه – رفتار شود. اگر نمی توانید بازیگران بد در بیت کوین را سانسور کنید ، چرا باید بتوانید این کار را در LEO انجام دهید؟ “قابلیت ارتقا” “توانایی” اصطلاحات را توجیه نمی کند. ✘
  • باید تغییرناپذیر باشد. هر اتفاقی که افتاده است باید برای همیشه در آنجا بماند تا هر کسی و همه اعتبار سنجی ، موافقت یا مخالفت کنند. ✓
  • شبکه باید غیرمتمرکز باشد. نباید هیچ نهاد مرکزی وجود داشته باشد که بتواند شرایطی را که باید اتفاق بیفتد حکم کند. حتی اگر شبکه Ethereum غیرمتمرکز باشد ، قرارداد رمز LEO به این دلیل نیست که آنها می توانند شرایط را تعیین کنند. ✘
  • باید توزیع شود. همه باید بتوانند تاریخچه شبکه را بدست آورند و صحت داده ها را تأیید کنند. ✓

مردم به بلاکچین اعتماد دارند زیرا بی اعتماد است. قابل اعتماد بودن ماهیت بلاکچین باعث شده افرادی مثل من و شما به این فناوری شگفت انگیز علاقه مند شوند.

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

سرانجام ، این بحث می تواند در محافل باشد زیرا Bitfinex معتقد است که آنها به “قابلیت ارتقا” نیاز دارند (آیا واقعاً؟) و ما این واقعیت را نمی پذیریم که سکه شخص دیگری را می توان حذف کرد حتی اگر آن مال ما نباشد. بدینوسیله پرونده خود را به شما خواننده شگفت انگیز خود سپردیم تا تصمیم خود را بگیرید و ببینید آیا می خواهید به قرارداد LEO ERC20 اعتماد کنید.