Professional Documents
Culture Documents
Dissecting Ponzi Schemes On Ethereum Identification, Ananlysis
Dissecting Ponzi Schemes On Ethereum Identification, Ananlysis
آنالیز ،تأثیر
تهیه و تألیف:
Massimo Bartoletti, Salvatore Carta, Tiziana Cimoli, Roberto Saia
1
Proof-Of-Word
2
https://www.sec.gov/spotlight/enf-actions-ponzi.shtml
7
/ 8تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
این دلیل که تعداد آنها بهطور تصاعدی در تعداد سطوح این هرم رشد میکند .بنابراین،
کاربران در سطوح باالی هرم سود کسب خواهند کرد ،درحالیکه کسانی که در سطوح پایین
هستند ،سرمایه خود را از دست میدهند.
ً
علیرغم اینکه بسیاری از سرمایهگذاران کامال از ماهیت تقلبی بودن این طرحها و
همچنین غیرقانونی بودن آنها در بسیاری از کشورها آگاه هستند ،اما بازهم طرحهای پانزی
همچنان مبالغ قابل توجهی پول خود جذب میکنند .یک مطالعه اخیر [ ]6تخمین میزند که
طرحهای پانزی از طریق بیتکوین بیش از 7میلیون دالر در دوره زمانی سپتامبر 2013تا
3
سپتامبر 2014جمع آوری کردهاند.
طرحهای هوشمند پانزی :گسترش قراردادهای هوشمند ،بهعنوان مثال ،برنامههای
رایانهای که اجرای صحیح آنها بدون اتکا به یک مرجع معتبر بهطور خودکار اجباری میشوند
[ ،]7فرصتهای جدیدی را برای کالهبرداران ایجاد میکنند .در واقع ،اجرای طرحهای پانزی
بهعنوان قراردادهای هوشمند دارای چندین ویژگی جالب است:
مبتکر طرح پانزی می تواند ناشناس باقی بماند ،زیرا ایجاد قرارداد و برداشت پول از آن
نیازی به فاش کردن هویت وی را ندارد.
از آنجا که قراردادهای هوشمند "غیرقابل تغییر" و "غیر قابل توقف" هستند ،هیچ مرجع
مرکزی (به ویژه هیچ دادگاه قانونی) قادر به خاتمه دادن به اجرای طرح یا برگرداندن اثرات
آن برای بازپرداخت قربانیان نیست .این امر خصوصاً در مورد قراردادهای هوشمندی که بر
روی بالکچینهای غیرمجاز اجرا میشوند ،کنترل میشود که توسط شبکهی گره4های
همتابههمتا کنترل میشوند؛
سرمایه گذاران ممکن است بدلیل این واقعیت که کد قراردادهای هوشمند ،عمومی و
غیرقابلتغییر است و اجرای آن قراردادها بهطور خودکار اعمال میشوند ،به حس اعتمادپذیری
کاذب دست پیدا بکنند .این امر ممکن است سرمایهگذاران را به این باور برساند که مالک
طرح نمی تواند از پول آنها سوءاستفاده کند ،و اینکه این طرح برای همیشه اجرا میشود و
آنها برای به دست آوردن منافع اعالم شده احتمال منصفانهای میدهند.
همه این ویژگیها با ترکیبی از عواملی منجمله رشد پلتفرمهایی برای قراردادهای
هوشمند [ ]8امکان پذیر هستند که ناشناس بودن و پایداری قرارداد را بهعنوان اصلیترین
نقاط فروش تبلیغ میکنند؛ بعالوهی این واقعیت که این فناوریها بسیار جدید هستند و
هنوز هم در یک منطقه خاکستری 5از سیستمهای حقوقی زندگی میکنند [ 9و .]10
درک رفتار برنامههای "هوشمند" پانزی برای ایجاد سیاستهای مداخلهای مناسب بسیار
مهم است .برای این منظور ،باید جنبههای مختلف کالهبرداری را با پاسخ به چندین سوال
آنالیز کرد :چند قربانی درگیر شدهاند؟ چه مقدار پول سرمایهگذاری شده است؟ تکامل زمانی
و طول عمر یک طرح کالهبرداری چگونه هستند؟ چه نوع کاربرانی در این کالهبرداریها قرار
میگیرند؟ آیا میتوانیم ردپای طرحهای پانزی را در حین اجرای آنها یا حتی قبل از شروعشان
3این برآورد هم طرح های سنتی پانزی که پرداخت در بیتکوین می پذیرند را در نظر می گیرد و هم طرح هایی
که فقط با بیتکوین کار میکنند.
4
Node
5
یک وضعیت یا حوزه فعالیت بیمارگونه که براحتی با یک دسته یا مجموعه قوانین مطابقت ندارد.
بخش - 1مقدمه 9 /
نیز تشخیص بدهیم ؟ تحقیق در مورد این موارد به ایجاد اختالل در این نوع کالهبرداریها
کمک میکند.
مشارکتها؛ این مقاله اولین نظرسنجی جامع در مورد طرحهای پانزی در اتریوم [ ]11که
تاکنون برجستهترین بستر برای قراردادهای هوشمند است میباشد .ما یک مجموعه داده از
طرحهای پانزی میسازیم و آنها را از دیدگاههای مختلف آنالیز میکنیم .بهطور خاص،
مشارکتهای ما میتوانند به شرح زیر خالصه شوند:
مجموعهای از معیارها برای تعیین زمان اجرای یک طرح پانزی توسط یک قرارداد •
هوشمند .معیارهای ما درحالی که از عوامل خارجی مانند روش تبلیغاتی یا بازیسازی
طرح چشمپوشی میکنند ،تنها منطق اجرا شده توسط قرارداد برای جمعآوری و توزیع
پول را در نظر میگیرند.
یک دیتاست 6عمومی از طرحهای پانزی که در اتریوم مستقر شدهاند (،)goo.gl/CvdxBp •
منسجم با معیارهای طبقهبندی ما .این دیتاست با بررسی سورس کد قراردادها ساخته
میشود .ما از قراردادهایی شروع میکنیم که سورس کد آن بر روی جستجوگران بالکچین
موجود است که در میان آنها 138طرح پانزی را پیدا میکنیم .ما با جستجو درون
ً
قبال بالکچین بدنبال قراردادهایی که بایتکد آنها بسیار شبیه به قراردادی است که
بهعنوان پانزی طبقهبندی شده است ،این مجموعه را به 184طرح گسترش میدهیم.
موارد منفی کاذب 7نیز با بازرسی دستی کد دیکامپایل شدهی آنها کنار گذاشته میشوند.
یک ابزار 8منبعباز که همه تراکنشهای طرحهای پانزی درون دیتاست ما را از بالکچین •
اتریوم استخراج کرده ،تمامی تحرکات ورودی و خروجی پول را ضبط کرده ،و تحلیلهای
ارائه شده در این مقاله را محاسبه میکند.
آنالیزی از سورس کد قراردادهای درون مجموعهی ما (بخش ،4آناتومی طرحهای پانزی). •
ما در می یابیم که اکثر قراردادها از تعدادی الگوی مشترک برخوردارند و اینکه بسیاری از
آنها با تغییرات جزئی نسبت به دیگر موارد موجود بدست میآیند .ما یک طبقهبندی
تقریبی از طرحهای پانزی در نظر میگیریم که آنها را طبق الگوی استفاده شده برای توزیع
مجدد پرداختها طبقهبندی میکند .ما نشان میدهیم که طرحهای موجود در هر دسته
در توزیع عادالنه پول شکست میخورند .عالوه براین ،ما در قرارداد تحلیل شده ،چندین
آسیبپذیری امنیتی را مشاهده میکنیم که میتوانند توسط دشمنان برای سرقت پول
مورد سواستفاده قرار بگیرند.
اندازهگیری تأثیر اقتصادی طرحهای پانزی ،کمّ ی کردن مقدار کلی مبادله شده از طریق •
آن طرحها (بخش ،5تأثیر طرحهای پانزی).
اندازه گیری سود و زیان کاربران طرحهای پانزی (بخش .)6ما بر روی 10طرح برتر •
(آنهایی که بیشترین تعداد تراکنشها را دارند) ،با جالبترین ویژگیها (تعداد کاربران،
تراکنشها یا اتر ردوبدل شده) تمرکز میکنیم .در بیشتر موارد الگوی معمول طرحهای
6
مجموعه داده – Dataset
7
False Negatives
8
https://www.github.com/blockchain-unica/ethereum-ponzi
/ 10تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
ً
عمال تعداد کمی از کاربران سود زیادی کسب میکنند، پانزی را مشاهده میکنیم :یعنی
درحالیکه اکثر کاربران براحتی پول خود را از دست میدهند.
آنالیز رفتار زمانی طرحهای پانزی تحت دیدگاههای مختلف (بخش ،7تکامل در طول •
زمان) .ابتدا ،ما طول عمر طرحهای پانزی را بهعنوان یک شاخص مهم برای پیشبینی
زمان سقوط یک طرح بررسی میکنیم .سپس ،همبستگی بین جریان ورودی و خروجی
قراردادها در طول زمان را تحلیل میکنیم .در پایان نیز حجم ماهانه معامالت را اندازه
گیری میکنیم.
آنالیز نابرابری پرداختهای ورودی و خروجی طرح (بخش ،8اندازهگیری نابرابری •
پرداخت) .این شاخص ممکن است چگونگی انتخاب قربانیان توسط کالهبرداران را
نمایان کند :توزیع عادالنه پرداختها بدین معناست که این طرح توسط شمار زیادی از
قربانیانی که مقادیر کمی پول پرداخت میکنند تغذیه میشود .در عوض ،توزیع نابرابر
گاهاً بدین معناست که این طرح از شمار کوچکی از «ماهیهای بزرگ» که پول زیادی
سرمایهگذاری میکنند سود میبرد.
مجموعهای از دستورالعملها که کاربران میتوانند برای محافظت از خود در برابر طرحهای •
پانزی از آنها استفاده کنند (بخش ،9نتیجهگیری)
9
Consensus
بخش -2خالصه شرح اتریوم 11 /
متکی بر این واقعیت است که پیروی از پروتلک راحتتر از تالش برای حمله به آن است .در
واقع ،گرهها انگیزه های اقتصادی برای انجام صحیح تمام محاسبات مورد نیاز پروتلک دریافت
میکنند .اجرای قراردادها تا جاییکه و بهشرطی که دشمن قسمت زیادی از توان محاسباتی
شبکه را کنترل نکند به درستی تضمین شده است [.]13
قراردادها؛ بهطور خالصه ،قراردادها را میتوان بهعنوان اشیایی در زبانهای شیءگرا
مشاهده کرد که از زمینهها و توابع تشکیل شدهاند .یک کاربر میتواند با ارسال یک تراکنش
مناسب به گرههای اتریوم عملکردی را فراخوانی کند .تراکنش باید شامل هزینه تراکنش (برای
ماینرها) باشد ،و ممکن است شامل انتقال اتر از تماس گیرنده به قرارداد باشد.
شخصی
ِ پول
ِ ما قراردادها را از طریق یک مثال کوچک ( ،AWalletدر شلک )1که یک کیف
ً
مرتبط با یک مالک را پیاده سازی میکند ،نشان میدهیم .ما بهجای اینکه مستقیما آن را
بهعنوان بایتکد EVMکدنویسی کنیم ،از زبان سالیدیتی ،10یک زبان برنامه نویسی شبیه
جاوااسکریپت استفاده میکنیم که در بایتکد EVMکامپایل میشود [ .]14این قرارداد
میتواند اتر را از دیگر کاربران دریافت کند و مالـک آن میتواند (بخشی از) آن اتر را از طریق
تابع payبه سایر کاربران ارسال کند .هشتیبل outflow 11تمام addressهایی 12که به آنها
پول ارسال میکند را رکورد میکند و مبلغ لک انتقالیافته را به هرکدام از آنها مرتبط میسازد.
هشتیبل inflowتمام آدرسهایی که از آنها پول دریافت کرده است را رکورد میکند .تمام
اترهای دریافت شده توسط قرارداد نگهداری میشوند .مقدار آن بهطور خودکار در balance
ثبت میشود :این یک متغیر ویژه است که توسط برنامهنویس قابل تغییر نیست .هنگامیکه
یک قرارداد ،اتر دریافت میکند ،یک تابع خاص بدون نام که تابع fallbackنامیده میشود
را نیز اجرا میکند.
10
Solidity
11
)HashTable (Key:Value
12
آدرسها توالی 160بیتی هستند که بهطور منحصر بفرد قراردادها و کاربران را شناسایی میکنند
/ 12تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
13
است که هنگامیکه قرارداد ایجاد میشود فقط تابع AWalletدر خط 6یک سازنده
14
)1 weiرا از قرارداد یک بار اجرا میشود .تابع payهم مقدار =10-18 ETH( amount wei
به گیرنده میفرستد .در خط 9اگر تماس گیرنده (یعنی )msg.senderمالک نباشد ،یا اگر
مقدار دیگری از اتر ( )msg.valueبه اسناد ضمیمه بشود و به قرارداد منتقل بشود ،قرارداد
یک استثنا را ایجاد می کند .از آنجا که استثناءها عوارض جانبی را برمیگردانند ،این اتر به
تماس گیرنده (کسی که با این وجود دستمزد پردازش تراکنش را از دست میدهد) باز
میگردد .در خط ،10اگر مقدار مورد نیاز اتر در دسترس نباشد ،تماس خاتمه مییابد .در این
حالت ،نیازی به بازگشت وضعیت با یک استثناء وجود ندارد .در خط ،11قبل از انتقال اتر به
گیرنده ،قرارداد هم رجیستری outflowرا بروزرسانی میکند .تابع sendدر خط 12که برای
همین منظور استفاده شده است ،برخی از تناقضات و رفتارهای عجیب را نشان میدهد،
بهعنوان مثال اگر گیرنده ی اتر ،یک قرارداد باشد ،ممکن است این تابع با خطا مواجه شود
و خراب شود .هنگامیکه هیچ تابع دیگری فراخوانی نمیشود ،تابع fallbackدر خط 16با
دریافت اتر آغاز میشود .در این حالت ،تابع fallbackفقط رجیستری inflowرا بروزرسانی
می کند .در هر دو حالت ،هنگام دریافت اتر و هنگام ارسال ،مقدار لک اتر قرارداد ،که در متغیر
this.balanceذخیره شده است ،بهطور خودکار بروزسانی میشود.
در این بخش ما مجموعهای از معیارها را برای طبقهبندی قراردادها بهعنوان طرحهای پانزی
تعیین میکنیم .سپس روش خود را برای ساخت مجموعهای از طرحهای پانزی و برای
استخراج تراکنشهای مرتبط توصیف میکنیم.
13
Constructor
14
0.000000000000000001
بخش -3مجموعه طرحهای پانزی 13 /
کالهبرداریهایی که فقط از اتریوم بهعنوان وسیله پرداخت (یا فقط برای تبلیغات) استفاده
میکنند را رد میکند (و غیرمحتمل میشمارد) .این کالهبرداریها شامل برخی از برنامههای
سرمایه گذاری معروف "پر بازده" هستند که بسیاری از آنها در لیست سیاه گزارش شده توسط
BadBitcoin15گزارش شده است .ما تصمیم گرفتیم این نوع کالهبرداریها را از آنالیز خود
حذف کنیم زیرا بازیابی هرگونه اطالعات درباره آدرسهای اتریوم (در صورت وجود) که آنها
استفاده میکنند بندرت امکانپذیر است.
در شلک 2ما چهار شرط و الزام را برای تعیین اینکه آیا قرارداد یک طرح پانزی است یا
منحصرا بر اساس منطق پیادهسازیشده در قرارداد پیشنهاد میدهیم .وقتی قراردادیً خیر،
هر چهار الزام را برآورده میکند ،آن را بهعنوان یک طرح پانزی طبقه بندی میکنیم.
R1میخواهد بداند که قرارداد پول را به سرمایهگذاران یعنی کاربرانی که با ارسال مقداری
پول به قرارداد ،به آن پیوستها ند توزیع کند .این شرط هیچ محدودیتی بر منطق استفاده
شده برای توزیع پول ایجاد نمیکند ،بنابراین R1به تنهایی برای طبقهبندی قرارداد بهعنوان
پانزی کافی نیست :بهعنوان مثال ،بازیهای قمار ،قرعهکشیها ،بیمه و اوراق قرضه R1 ،را
متقاعد میکنند .با اینحال R1 ،قراردادهایی که چندین نوع دارایی در اختیار کاربران قرار
میدهند را رد میکند ،اما منطق توزیع آن داراییها را اجرا نمیکند :بلکه این داراییها از
طریق بازارهای خارجی مانند صرافیهای رمزارز مبادله میشوند .این مورد ،بهعنوان مثال ،در
بیشتر پیادهسازیهای توکنهای ]16[ ERC-20از طریق عرضه اولیه سکه ( )ICOرخ داده است
[.]17
R2میخواهد بداند که پول جمعآوری شده توسط قرارداد فقط از سمت سرمایهگذاران
آمده باشد .این شرط مواردی که در آنها پول توزیع شده به سرمایه گذاران از منابع خارجی
ً
مثال بانکی که بهره یک اوراق قرضه "هوشمند" را پرداخت میکند، تأمین میشود را رد میکند.
یا یک دالل شرطبندی که با استفاده از بودجه شخصی خود شرطبندیها را میپردازد.
R3میخواهد بداند هر سرمایهگذار مادامیکه سرمایهگذاران جدید پول را به قرارداد
بفرستند ،سود کسب میکند .همراه با دو مورد اول ،این بدان معنی است که کاربران فقط از
طریق سرمایهگذاری سایر کاربران سود کسب میکنند .توجه داشته باشید که بازیهای قمار،
شرطبندی و قرعهکشیها معیار R3را نقض میکنند :در آنجا ،حتی اگر جریان سرمایهگذاری
مداوم باشد ،یک کاربر بد شانس تضمین نمیکند که سود کسب کند (بهعنوان مثال ،امکانش
هست که وی همیشه بدشانس باشد و برنده نشود)
R4میخواهد بداند که با ورود یک نفر به طرح ،خطر از دست دادن سرمایهگذاری یک
نفر دیگر افزایش بیابد .این یک ویژگی برجسته طرحهای پانزی است که در دنیای واقعی نیز
وجود دارد :در یک زمان خاص ،یافتن سرمایهگذاران جدید دشوار میشود ،بنابراین دیگر هیچ
کس سود نمیبرد و این طرح سقوط میکند.
در مقایسه با تعریف کمیسیون بورس و اوراق بهادار ایاالت متحده از طرح پانزی که در
بخش 1ذکر شده است ،الزامات R1و R2با هم این واقعیت را نشان میدهند که یک طرح
پانزی "شامل پرداخت بازدهی ادعایی به سرمایهگذاران موجود از وجوهی است که توسط
سرمایهگذاران جدید ارائه میشود"؛ R3با این واقعیت مطابقت دارد که آنها "برای ادامه کار
15
https://badbitcoin.org/thebadlist/index.php
/ 14تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
نیاز به یک جریان مداوم پولی از سرمایه گذاران جدید دارند"؛ R4نیز به این معناست که
"آن طرحها ناگزیر سقوط میکنند؛ اغلب هم در مواردی که بکارگیری سرمایهگذاران جدید دشوار
میشود" .توجه داشته باشید که الزامات ما این واقعیت را درک نمیکنند که "سازماندهندگان
طرح پانزی اغلب با وعده سرمایهگذاری در فرصتهایی که ادعا میشود بازده باالیی دارند -
کمخطر یا بدون خطر -سرمایهگذاران جدید را وسوسه میکنند" .دلیل این امر این است که،
ً
منحصرا بر اساس منطق پیادهشده در قرارداد است ،در حالیکه از لحاظ طراحی ،الزامات ما
تبلیغات (برای جذب سرمایهگذاری در طرح پانزی) امری انسانی است و خارج از کد قرارداد
انجام میشود.
طرحهای پانزی در مقابل شبهپانزی .توجه داشته باشید که الزام R4برخی از قراردادها
که بعضاً بهعنوان برنامههای پانزی شناخته میشوند را منتفی میداند ،حتی اگر مکانیزم
پانزی برای توزیع سرمایهگذاری در قرارداد نیز هارد-کد 16نشده باشد .این یک "مورد تمثیلی"
از قراردادهایی است که بازارهای قابل جمعآوری رمزارز را پیادهسازی میکنند و نمونه بارز آن
نیز بازی CryptoKittiesنام دارد؛ یک بازی که در آن بازیکنان میتوانند گربههای مجازی را
تولید و معامله کنند که بهعنوان توکنهای ERC-721اجرا میشود .در واقع ،در اینجا الزام
R4نقض می شود ،زیرا یک کاربر خوش شانس ،صرفنظر از لحظه پیوستن به قرارداد ،ممکن
است یک گربه نادر را تولید کند و با فروش آن سود کسب کند.
بدالیل مشابه ،الزام R4بازی Fomo3Dکه گاهاً بهعنوان یک طرح پانزی از آن یاد
بازی قرعهکشی کار میکند که در آن ،در هر
ِ میشود را رد میکند Fomo3D .به عنوان یک
دور ،بازیکنان میتوانند برخی از "کلیدها" را خریداری کنند ،و آخرین خریدار در این مرحله
برنده یک جکپات 17است .هر زمان که یک کلید خریداری شد ،مهلت زمانی تا اتمام دور تمدید
میشود و درآمد حاصل از فروش کلید به دو قسمت تقسیم میشود :بخشی از آن به جکپات
اضافه میشود ،درحالیکه قسمت دیگر بین شرکتکنندگان در آن دور بازی تقسیم میشود.
مکانیزم قرعه کشی در این بازی ،زمان پیوستن کاربر به این طرح را از خطر از دست دادن
ً
نتیجتا این امر ،الزام R4را نقض میکند. سرمایه گذاریاش جدا میکند؛
الزام R4همچنین ،PoWH3Dیکی دیگر از طرحهای ادعایی پانزی را رد میکند.
PoWH3Dیک توکن و صرافی آن را پیادهسازی میکند :مکانیزم قرارداد اطمینان میدهد که
ارزش توکن هنگام خرید افراد رشد میکند و هنگام فروش کاهش مییابد .عالوهبراین ،معامله
هر توکن 10درصد هزینه دارد .سرمایهگذاران میتوانند از سه طریق درآمد کسب کنند :فروش
توکن گرانتر از قیمت خرید؛ دعوت از یک سرمایهگذار جدید برای خرید توکن (در این حالت،
آنها دستمزد دعوتنامه را دریافت میکنند)؛ و دریافت هزینههای پرداختشده توسط یک
سرمایهگذار (که بدون دعوتنامه آمده است) (این هزینهها بین تمام دارندگان توکن توزیع
میشود) .در اینجا الزام R4نقض میشود زیرا تاخیر در سرمایهگذاری ،بهعنوان مثال در یک
لزوما بمعنای افزایش خطر از دست دادن سرمایهگذاریهای یک شخص نیست، ً دوره رکود،
زیرا مکانیزم از پایین بودن ارزش توکنها مطمئن است.
16
کد اختصاصی ،صفتی در مورد روال یا برنامه ای که برای وضعیت خاصی طراحی شده و یا به جای دریافت
ورودی عمومی ،از ثابتهای توکار استفاده میکندHard Coded .
17
تمام پولها .پولهای روی هم انباشته شدهJackpot .
بخش -3مجموعه طرحهای پانزی 15 /
متذکر میشویم که ،حتی اگر در یک قراردادی صراحتاً مکانیزم پانزی اجرا نشود (که
بنابراین برخی از الزامات ما را نقض می کند) ،این امر ممکن است به طور بالقوه رفتاری را
القاء کند که از نزدیک با برنامه پانزی مشابه است .بهعنوان مثال CryptoKitties ،و طرفداران
آن باعث بوجود آمدن و رشد مجموعهای از مجموعههای-رمزارزی شدند که اغلب با "جنون
لگ الله "18مقایسه میشود .محبوبیت بسیار زیاد CryptoKittiesتقریباً باعث شلوغی شبکه
اتریوم در سال 2017شد .برخی از گربههای مجازی با قیمت بیش از 170هزار دالر فروخته
شدند و بازار نیز بیش از 12میلیون دالر از فروش گربههای مجازی را پردازش کرده است [.]18
18
یک حباب اقتصادی بزرگ در هلند مابین سالهای 1634تا سال 1637میالدیTulip Mania .
19
هنگامیکه ما برای اولین بار مجموعه خود را در سال 2017ایجاد کردیم ،هنوز امکان داشت همه قراردادها را با
سورسکد تأیید شده از طریق لینک https://etherscan.io/contractVerifiedلیست کرد .در حال حاضر ،فقط
500قرارداد آخر با منبع تأیید شده ذکر شده است .برای غلبه بر این محدودیت میتوان از تجزیه کننده بالکچین
مانند ]19[ BlockAPIبرای اسکن تمام معامالت موجود در بالکچین و گرفتن کد سالیدیتی آنها از Etherscan
استفاده کرد .برای قرارداد دارای آدرس xyzلینک https://etherscan.io/address/xyz#codeحاوی کد
سالیدیتی قرارداد است ،اگر توسط Etherscanتأیید شده است.
20
False Positive
21
فاصله لوناشتاین یا فاصله ویرایش در نظریه داده و علوم کامپیوتر متری برای محاسبه میزان تفاوت میان دو
رشته است .به عنوان مثال فاصله لوناشتاین بین " "kittenو " "sittingبرابر 3است – .فاصله عادی لوناشتاین:
Normalized Levenshtein distance
/ 16تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
میکنیم NLD .معیاری استاندارد برای سنجش تشابه بین دو رشته است .فاصله
غیرعادی لوناشتاین 22بین دو رشته ،تعداد کاراکتری را که باید برای تبدیل رشته اول
به رشته دوم تغییر بدهد را اندازهگیری میکند (بهعنوان مثال ،اختالف کاراکتر بین
واژگان " "Ponziو " "Bamzaiعدد 3است) .نسخه عادی خود یک معیار است و
مقدار آن یک عدد واقعی بین ( 0برابری کامل) و ( 1نابرابری کامل) است .بعد از
این محاسبات ،ما عدد 0.79را برای NLDبین دو قرارداد EVMکه به دلخواه از
بالکچین دانلود شدهاند تخمین میزنیم.
.2ما NLDرا بین قراردادهای موجود در نمونه اولیه خود و کلیه قراردادهای موجود
در بالکچین اتریوم محاسبه میکنیم .ما هر قراردادی با NLDکمتر از 0.35از برخی
از قراردادهای موجود در نمونه خود را بهعنوان یک طرح بالقوهی پانزی در نظر
میگیریم .دو مقدار 0.35و 0.79به اندازهای کافی با هم فاصله دارند که مطمئن
بشویم با موارد مثبت کاذب روبرو نشدهایم .این موارد قراردادهایی هستند که NLD
از نمونه اولیه آنها زیر 0.35است لکن طرحهای پانزی نیستند .این جستجو منجر
به یافتن 0طرح جدید احتمالی پانزی شد ،که در مجموعه اصلی 138قرارداد ما
گنجانده نشده است.
آنالین زبان سالیدیتی برای بایتکد EVMآن 0قرارداد یافت شده 23
ما از دیکامپایلر .3
در مرحله دوم استفاده میکنیم ،و کد سالیدیتی بدست آمده از دیکامپایل را با کد
طرح پانزی مربوطه که در فاز اول پیدا کردهایم ،به صورت دستی مقایسه میکنیم.
در 46مورد ،مطابقت اساسی بین کدهای قرارداد پیدا میکنیم ،بنابراین این
قراردادها را نیز به مجموعه خود اضافه میکنیم.
In Out In Out In Out Paying Paid First Last
DynamicPyramid 444 143 7 474 7 437 84 187 83 541 175 51 2016-02-23 2018-10-01
DianaEthereum-x1.8 288 168 5 307 5 303 61 166 61 266 129 84 2016-03-08 2018-05-17
Doubler2 395 161 4 858 4 825 26 376 26 220 211 68 2016-02-16 2018-11-22
ZeroPonzi 627 499 4 490 4 489 49 816 49 770 47 28 2016-04-04 2017-10-27
Doubler 156 57 3 073 3 073 31 292 35 927 92 17 2016-02-19 2018-06-26
Government 723 846 2 939 2 939 35 738 40 066 40 27 2016-03-08 2017-03-20
Rubixi 686 66 1 367 1 363 16 986 16 775 104 28 2016-03-14 2019-01-24
ProtectTheCastle2 890 1257 1 332 1 332 186 040 190 802 101 68 2016-03-20 2018-02-22
EthereumPyramid 978 339 986 917 5 044 5 290 327 125 2015-09-07 2018-04-11
)Total (184 schemes 18 925 9100 43 881 43 332 630 662 702 878 2378 1232 — —
در پایان ،ما به یک مجموعه داده از 184طرح پانزی میرسیم که آنها را در آدرس
goo.gl/CvdxBpدر دسترس قرار میدهیم (گزیدهای از این مجموعه در جدول 1در بخش
5هست) .ما تأکید میکنیم که مجموعه ما شامل همه طرحهای پانزی که طی سالهای
22
Non-normalized Levenshtein Distance
23
دیکامپایلر :ابزاری که کد اصلی نرمافزارها را با عملیات دیکامپایل نشان میدهد.
https://ethervm.io/decompile
بخش -4آناتومی طرحهای پانزی 17 /
گذشته در اتریوم منتشر شدهاند ،نیست .بهعنوان مثال ،قرارداد PonziUnlimited24آشکارا
یک طرح پانزی است ،اما تشخیص اینکه منطق آن مطابق با الزامات شلک 2است ،فوری
نیست؛ بنابراین ما آن را در مجموعه خود قرار نمیدهیم.25
:3.3استخراج معامالت
برای هر طرح پانزی در دیتاست ما ،تمام معامالت آن (چه خارجی و چه داخلی) را از بالکچین
اتریوم جمع میکنیم .بهطور خاصتری ،ما برای هر معامله دادههای زیر را ثبت میکنیم)1( :
تعداد بلوک ثبت شده؛ ( )2تاریخی که در بالکچین منتشر شده است؛ ( )3آدرس فرستنده؛
( )4آدرس گیرنده؛ ( )5مقدار اتر منتقل شده توسط معامله؛ ( )6یک مقدار بولین 26که ثبت
میکند آیا اجرای معامله منجر به خطا شده است یا نه )7( .یک مقدار بولین که خارجی یا
داخلی بودن معامله را نشان میدهد .اسکریپت هایی که برای این منظور توسعه دادهایم از
در آدرس و میکنند بهرهبرداری Etherscan نام به اتریوم توسعه API27های
github.com/blockchain-unica/ethereum-ponziدر دسترس هستند.
24
https://etherscan.io/address/0x582b2489710A4189AD558B6958641789587fCc27
25یک سوال مرتبط ،بدون پاسخی آسان ،تخمین تعداد لک طرحهای هوشمند پانزی در اتریوم است .آنالیز درون
مرجع شماره [ ]21تخمین میزند که 507طرح هوشمند پانزی ممکن است تا قبل از سپتامبر 2017در بالکچین
اتریوم ساخته شده باشند
26
این متغیرها میتوانند تنها دو مقدار درست ( )TRUEو غلط ( )FALSEیا 0و 1را در خود نگهداری کنند -
Boolean
27
https://etherscan.io/apis
28قطعه کدهای ارائه شده فرض بر نسخه v0.2.2کامپایلر سالیدیتی که در بیشتر قراردادهای مجموعه ما استفاده
میشود گذاشتهاند .اگرچه نسخه های جدیدتر سالیدیتی ،نحوهی اعالم توابع و مدیریت آرایه ها را تغییر میدهند،
اما این تغییرات در روح نمونههای ما تأثیر نمیگذارند.
/ 18تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
29
از ساختار داده درختی برای القای یک سفارش در بین کاربران طرحهای درختی-شلک
استفاده میکنند .هر زمان که یک کاربر به این طرح میپیوندد ،باید کاربر دیگری را بهعنوان
دعوتکننده نشان دهد که گره والد او میشود .اگر به هیچ دعوتکنندهای اشاره نشود ،آن
والد( ،یعنی مالک طرح) خود گره اصلی خواهد بود .در اکثر طرحها ،مبلغی که باید
سرمایهگذاری شود توسط کاربر انتخاب میشود و محدودیت کمتری برای آن وجود دارد .پول
کاربر جدید با این منطق در بین اجداد وی تقسیم میشود که هر چه یک جد (دو درجه
باالتر) به وی نزدیکتر باشد ،سهم آن جد بیشتر است .از آنجا که محدودیتی در تعداد
فرزندان یک گره وجود ندارد ،هرچه تعداد گرهها (و فرزندان) بیشتر باشد ،درآمد بیشتری
کسب خواهد کرد.
ما در شلک 3یک طرح اجدادی از این نوع را نشان میدهیم .برای پیوستن به این
طرح ،یک کاربر باید مقداری پول ارسال کند و باید یک دعوتکننده را نشان دهد که گره والد
ً
قبال حضور داشته او خواهد بود .اگر مقدار پول کاربر خیلی کم باشد ( خط ،)15یا اگر کاربر
باشد (خط ،)16یا اگر دعوتکننده وجود نداشته باشد (خط ،)17کاربر رد میشود .در غیر
اینصورت او را در درخت قرار میدهند (خط .)19پس از پیوستن کاربر ،سرمایهگذاری وی در
بین اجدادش تقسیم میشود (خطوط 25تا )29و در هر سطح نیز مقدار آن نصف میشود.
در این طرح ،یک کاربر نمیتواند میزان سود خود را پیشبینی کند :این به تعداد کاربرانی
که میتواند دعوت کند و میزان سرمایهگذاری آنها بستگی دارد .تنها کسی که تضمین میکند
سود میبرد گره ریشه درخت یعنی مالک طرح است؛ طرحهای Etheramidو
DynamicPyramidنمونههایی از این نوع طرحها هستند.
طرحهای زنجیرهای-شلک 30یک مورد خاص از طرحهای درختی-شلک که در آنها هر گره از
درخت دقیقاً یک فرزند دارد ،میباشد (بنابراین ترتیب ایجاد شده در بین کاربران خطی است).
ً
معموال سرمایهگذاری را در یک عامل ثابت ازپیشتعریفشده طرحهای موجود در این گروه
ضرب میکنند که برای همه کاربران برابر است .این طرح ،یکی پس از دیگری ،به ترتیب ورود
و بهطور کامل به کاربران پول پرداخت میکند :کلیه سرمایههای جدید تا بدست آوردن مبلغ
29
Tree-shaped Schemes
30
Chain-Shaped Schemes
بخش -4آناتومی طرحهای پانزی 19 /
مقرر جمع می شود .در آن لحظه ،قرارداد بازپرداخت را در یک حواله پس میفرستند و به
سراغ کاربر بعدی در زنجیره میرود .مبلغی که باید سرمایهگذاری شود میتواند ثابت یا آزاد
ً
معموال مالک قرارداد از هر سرمایهگذاری یک میزان باشد یا حد پایین تری داشته باشد.
کارمزد را برای خود حفظ میکند.
ما در شلک 4یک طرح زنجیرهای-شلک اجدادی نشان دادهایم ،که سرمایهگذاری هر کاربر
را دو برابر میکند .برای پیوستن به این طرح ،یک کاربر msg.amount ETHرا به قرارداد
میفرستد ،که از این رو تابع ( fallbackخط )14را آغاز میکند .این قرارداد به حداقل هزینه
1اتر نیاز دارد :اگر msg.amountکمتر از این حداقل باشد ،کاربر رد میشود (خط .)15در
غیر این صورت ،آدرس وی به آرایه اضافه میشود (خط ،)17و طول آرایه افزایش مییابد.31
مالک قرارداد 10درصد از مبلغ سرمایهگذاری را حفظ میکند (خط .)22با وجود بودجه
باقیمانده ،قرارداد سعی دارد تا پول کاربران قبلی را پس بدهد .اگر موجودی برای پرداخت به
کاربر در شاخص payingکافی باشد ،قرارداد 2برابر سرمایه کاربر را پرداخت میکند (خط .)25
پس از آن ،قرارداد تالش میکند تا به کاربر بعدی پرداخت کند و تا زمانی که موجودی کافی
نباشد ،به همین ترتیب ادامه میدهد.
در این طرح ،یک کاربر میتواند دقیقاً میزان سود خود را پیشبینی کند ،مشروط بر اینکه
این طرح همچنان ادامه داشته باشد .مبلغ متناسب با سرمایهگذاری وی میباشد .طرحهای
DianaEthereum ،Doublerو ZeroPonziنمونههایی از این نوع طرحها هستند.
طرحهای آبشاری :برای طرح سفارشدهی کاربر مشابه طرحهای زنجیرهای-شلک هستند
اما منطق توزیع پول آنها متفاوت است .هر سرمایهگذاری جدید در امتداد زنجیره
سرمایهگذاران ریخته میشود ،بهطوری که هر یک میتوانند سهم خود را بردارند .از آنجا که
این منطق این است که هر کس زودتر بیاید زودتر سرویس میگیرد و توزیع آن همیشه از
ً
احتماال کاربران بعدی در این زنجیره هیچوقت پول دریافت ابتدای زنجیره آغاز میشود،
نمیکنند.
ما در شلک 5یک طرح باستانی از این نوع با عوارض ورودی 1اتر (خط 10 ،)19درصد
کارمزد برای مالک (خط )24و یک پرداخت 6درصدی از سرمایههای کاربر در هر نوبت را نشان
میدهیم .منطق پرداخت از خط 27شروع میشود .اگر برای پرداخت به اولین کاربر در آرایه
31
در زبان سالیدیتی ،سایز dynamicarraysرا میتوان با تغییر دادن عضو lengthتغییر داد.
/ 20تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
موجودی قرارداد کافی باشد (در موقعیت ،)pos = 0در این صورت قرارداد میزان 6درصد از
سرمایه اصلی آن کاربر را به وی ارسال میکند (خطوط .)30-29پس از آن ،قرارداد سعی
میکند به کاربر بعدی در آرایه پرداخت کند و بههمین ترتیب تا زمانی که موجودی تمام
نشود ،ادامه مییابد .با سرمایهگذاری بعدی ،آرایه دوباره تکرار میشود و باز هم از اولین کاربر
شروع میشود.
برای اطمینان از اینکه همه کاربران پولی را (منسجم با الزام )R3دریافت میکنند،
سرمایهگذاری کاربران جدید باید متناسب با تعداد کاربران رشد کنند .طرحهای
TreasureChestو PiggyBankنمونههایی از این نوع طرحها هستند.
شلک - 3درخت پرداخت برای طرحی که پول سرمایهگذاری شده را دو برابر میکند و دقیقاً 1اتر از هر کاربر
میپذیرد .اولین اتر به مالک داده میشود.
طرحهای زنجیرهای-شلک :یک طرح زنجیرهای-شلک را در نظر بگیرید که پول دریافتی را
دو برابر میکند ،عوارض ورود را دقی ً
قا بمیزان 1اتر میپذیرد و به جز 1اتر اولیهی ارسال شده
به قرارداد ،هیچ هزینه دیگری را مجددا برای مالک ندارد .بگذارید فرض کنیم اولین کاربر
یعنی U1میزان 1اتر را ارسال میکند .پول او به مالک داده میشود ،و بدین ترتیب از قراردادی
که موجودی آن 0است حذف میشود .برای اینکه U1بتواند 1اتر خود به اضافه پول دیگری
که به وی وعده داده شده است را ببیند (از آنجا که قرارداد مبلغ سرمایهگذاری را دو برابر
میکند) ،باید منتظر دو کاربر دیگر یعنی U2و U3باشد که هر کدام از آنها با ارسال 1اتر به
طرح بپیوندند.
/ 22تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
در شلک ،7هر گره معرف یک کاربر است و فرزندان آن نیز کاربرانی هستند که برای
بازخرید سهم وی مورد نیاز هستند .بنابراین U2 ،باید منتظر بماند تا U1سهم خود را بازخرید
کند ،و سپس او باید منتظر U3و U4برای ارسال پول باشد (از این رو باید در لک منتظر 3
کاربر باشد) .کاربر U3که آخرین نفر در سطح خود میباشد ،باید صبر کند تا سطح بعدی که
در مجموع 4کاربر را به انتظار میکشد کامل بشود .بهطور کلی ،یک کاربر UKدر سطح iباید
صبر کند تا تمام آن کاربران سطح قبلی سهم خود را بازخرید کرده باشند ،و سپس باید منتظر
همه کاربران در سطح خود که قبل از او رسیدهاند بماند .اگر UKاولین گره در سطح iباشد،
باید منتظر بماند تا همه کاربران دیگر در سطح iبپیوندند ،بهعالوه دو نفر دیگر که برای
بازخرید سهم او مورد نیاز است .این به 2i – 1 + 2کاربر نیاز دارد .از آنجا که مقدار گرهها تا
سطح i - 1بهمقدار 2i – 1است و از آنجا که UKاولین نفر در سطح iهست ،ما میبینیم که
k = 2iو از این رو ،در بهترین حالت UK ،باید منتظر تعداد k + 1کاربر باشد .در عوض ،اگر
UKآخرین کاربر در سطح iباشد ،باید منتظر همه کاربران دیگر در سطح i + 1باشد .این امر
به تعداد 2i+1کاربر نیاز دارد .از آنجاکه ،k = 2i+1 - 1 ،در این مورد UKباید منتظر k + 1کاربر
باشد .بهعنوان مثال ،کاربری که در موقعیت 3به این طرح میپیوندد باید منتظر بماند 4
کاربر جدید بیایند و 4اتر سرمایهگذاری کنند تا بتواند سرمایه خود را دو برابر کند .در عوض،
یک کاربر در موقعیت 50باید منتظر 51کاربر جدید باشد.
اگرچه در این مثال ساده ،یک طرح بدون هزینه و یک مبلغ سرمایهگذاری ثابت برای هر
کاربر در نظر گرفته شده است ،اما مالحظات کلی در مورد احتماالت بازخرید سرمایهگذاری
افراد برای همه قراردادهای درون مجموعه ما صادق است .در قراردادی که هیچ محدودیتی
در میزان سرمایهگذاری فرد وجود ندارد ،یک سرمایهگذاری سنگین غیرمعمول میتواند باعث
شود که قرارداد در حالیکه پولها را جمع میکند برای مدت زمانی طوالنی ارسال پرداختها
را نیز متوقف کند و بدین سبب کاربران جدید را برای پیوستن به این طرح دلسرد میکند.
همچنین ،کارمزدهای باالتر مالک و عوامل باال تر ضریبدهی باعث کاهش سرعت جریان
میشود .بهطوریکه نتایج ما محدودیت کمتری به تعداد کاربران مورد انتظار داشته باشد.
بهعنوان مثال ،طرح زنجیرهای-شلک Doubler2مبلغ سرمایهگذاری شده را دو برابر میکند،
حداقل سرمایهگذاری بمیزان 1اتر درخواست میکند ،و 10درصد هزینه میگیرد .این قرارداد
فقط پول کاربر 68ام از 210کاربر را پرداخت کرده است .با نگاهی به معامالت آن ،میبینیم
که بیشترین حد عوارض بین 1تا 5اتر است ،اما گاهبهگاه عوارض باالتری نیز وجود دارد (تا
50اتر) که سیستم را برای تکمیل یک سطح بسیار کند میکنند.
طرحهای درختی-شلک :مالحظات مذکور در باال برای طرحهای درختی-شلک نیز بهعنوان
یک حد پایینتر در نظر گرفته میشوند ،زیرا با این واقعیت که کاربران جدید نمیتوانند همگی
از فرزندان یک گره خاص باشند ،سرعت آنها کاهش مییابد.
طرحهای آبشاری :یک طرح آبشاری با عوارض ثابت 1اتر و بدون هیچ هزینهای را در نظر
بگیرید که به هر کاربر 10درصد از مبلغ سرمایهگذاری شده را بدهد .برای هر سرمایهگذار جدید،
افراد قدیمی دارای 0.1اتر هستند :از این رو 10 ،کاربر جدید برای بازپرداخت سرمایه گذاری
وی و 10کاربر دیگر نیز برای دو برابر کردن سرمایهگذاری وی مورد نیاز است .توجه داشته
باشید که برای 10کاربر اول ،مبلغی که آنها میدهند بهطور کامل توزیع نشده است :یعنی
بخشی از قرارداد باقی مانده است .بااینحال ،پس از پیوستن دهمین سرمایهگذار به زنجیره،
بخش -4آناتومی طرحهای پانزی 23 /
پولی که او میدهد برای تقسیم شدن بین تمام کاربران کافی نیست :از آن لحظه به بعد،
قرارداد باید از بودجههای خود استفاده کند تا خال را پر کند .سرانجام ،این مبلغ نیز پایان
مییابد :با ادامه طرح ،مهم نیست که چه تعداد سرمایهگذار دیگر به آن طرح بپیوندند ،فقط
تضمین شده است که 10کاربر اول سهام را دریافت خواهند کند.
بنابراین ،برای اطمینان از اینکه هر فردی میتواند سرمایهگذاری خود را دو برابر کند ،باید
اطمینان حاصل کنیم که سرمایهگذاری روی همه کاربران پخش شده است .بگذارید اکنون
فرض کنیم که ،برای پیوستن به این طرح ،یک کاربر باید 0.1اتر ضربدر تعداد کاربران موجود
باشد .بنابراین کاربر اول 0اتر سرمایهگذاری میکند و کاربر یازدهم 1اتر سرمایهگذاری میکند.
با چنین قانونی ،اگر طرح شامل nکاربر باشد ،کاربر ( kthمثال کاربر بیستم) میزان )0.1(k – 1
اتر داده است درحالیکه ) 0.1(n – kاتر دریافت کرده است .هرچه تعداد کاربران افزایش
مییابد ،پول دریافتی نیز رشد میکند .بهعنوان مثال ،کاربر سوم که به این طرح میپیوندد
باید 0.2اتر سرمایهگذاری کند و بهمحض عضویت 4کاربر دیگر میزان 0.4اتر (دوبرابر
سرمایهاش) دریافت خواهد کرد .در عوض ،کاربر 50ام باید 4.9اتر عوارض بدهد و باید منتظر
98کاربر جدید بماند تا سرمایهگذاری وی دوبرابر گردد .با این وجود ،از آنجا که عوارض برای
هر سرمایهگذار جدید افزایش مییابد ،با ادامه طرح ،ورود به این طرح جذابیت کمتری دارد.
طرحهای واگذاری :در طرحهای واگذاری ،برای اینکه یک سرمایهگذار بتواند بازپرداخت را
دریافت کند ،کافی است منتظر بمانید تا یک کاربر دیگر به آن بپیوندد .بااینحال ،از آنجا که
عوارض دائماً افزایش مییابد ،با ادامه طرح ،ورود به این طرح جذابیت کمتری دارد.
بهطور کلی ،ما نشان دادهایم که الزامات R3و R4برای انواع طرحهایی که شناسایی
کردهایم وجود دارند :یعنی تضمین شده است که اگر هر سرمایهگذار پول کافی پس از آن
سرمایهگذاری کند ،درآمد کسب خواهد نمود لکن سرمایهگذاران بعدی بیشتر در خطر از دست
دادن سرمایه گذاری خود هستند.
:4.3موارد امنیتی
در این بخش ،چندین آسیبپذیری که در اجرای طرحهای پانزی مشاهده کردهایم را نشان
میدهیم؛ اینها آسیبپذیریهایی هستند که رفتار تبلیغاتی آن طرحها را تضعیف میکنند.
ما آسیبپذیریها را با توجه به تأثیرات خود سازماندهی خواهیم کرد :آنهایی که به
سرمایهگذاران آسیب میرسانند و آنهایی که به خود طرح آسیب میرسانند.
آسیبرسان به سرمایهگذاران :برخی از آسیبپذیریها به دلیل باگ کدنویسی هستند،
ً
کامال عمدی است :آنها ضمن اینکه برای صاحب طرح که در برخی موارد بهنظر میرسد
سودآور هستند ،به کاربران آسیب میرسانند .رایجترین آسیبپذیری ناشی از استفاده نادرست
ً
قبال در مراجع شماره 22و 23به موارد امنیتی آن اشاره شده است .اگر از sendاست که
یک sendبا خطا مواجه شود ،یک کد خطا را برمیگرداند :اگر یک قرارداد این خطا را بررسی
نکند ،نمیتواند متوجه بشود که مشکلی وجود داشته است .بنابراین ،در صورت بروز خطا در
زمان اجرای ( sendارسال پول) ،پول در قرارداد باقی میماند ،در حالیکه کاربر چیزی دریافت
نمیکند .قابل توجه است که اکثریت عمده قراردادهایی که ما آنالیز کردهایم ،بررسی نمیکنند
ببینند که انتقال اتر با موفقیت انجام شده است یا نه .کد آنها مشابه کد موجود در شلک
( 3خط ،)27شلک ( 4خط ، )22شلک ( 5خط )29و شلک ( 6خط )13میباشد .این
/ 24تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
آسیبپذیری حداقل از 11فوریه 2016زمانیکه صاحب طرح KingOfTheEtherThroneفهمید
32
که مقدار زیادی اتر در قرارداد او باقیمانده است شناخته شده است.
33
این طرح طبق باگ دیگری که به نفع مالک است ،در طرح PiggyBankوجود دارد.
تبلیغاتش یک طرح آبشاری است که در آن مالک 3درصد هزینه را نگه میدارد و هر کاربر با
هر بار ورود کاربر جدید به این طرح ٪3 ،از سرمایه خود را دریافت میکند .از این رو ،دستور
محاسبه هزینه مالک باید به شرح زیر باشد:
fees = amount/33
درحالیکه دستور واقعی استفاده شده در طرح PiggyBankکمی متفاوت است:
fees += amount/33
ً
کامال مشهود است اما قابل توجه است که :در واقع ،دستور دوم باعث این تفاوت
میشود که کارمزدها در هر سپرده رشد کنند و در نتیجه سهام مالک طرح برای هر سرمایهگذاری
بهطور پیوسته افزایش مییابد .در عمل ،کارمزدهای محاسبه شده برای سپرده هفتم بیش از
خود سپرده است .در کنار این ،متغیر سراسری مورد استفاده برای اسکن آرایه ( posدر شلک
)5برخالف خط 25ریست نشده است .از این رو ،در هر واریز ،تکرار فرایند از اولین کاربر به
کاربر آخر نمیرسد بلکه از آخرین نفر به خود آخرین نفر میرود .بدین سبب ،در هر واریز فقط
به یک کاربر و فقط یک بار پول پرداخت میشود .بهخصوص که به هم پیوستگی این دو باگ
منجر میشود (تقریباً) تمام پول سرمایهگذاری شده به مالک داده شود .اگر تنها باگ دوم
وجود داشت ،این قرارداد میتوانست مقدار زیادی اتر بازخریدنشدنی را جمع کند.
عالوه بر باگهای پنهان شده در کد ،خطرات دیگر برای کاربران ناشی از توابعی هستند
که به مالک امکان انجام کارهای ویژه را میدهد ،که میتواند قرارداد را از رفتار مورد انتظار
دور کند .یک مثال از این مورد در طرح DynamicPyramidوجود دارد که در آن مالک
میتواند نرخ بهره و همچنین سهام کارمزد خود را تغییر دهد (نگاه کنید به شلک ، 8سمت
راست) .موارد دیگر در طرحهای Doubler3و TheGameهستند که در آن مالک میتواند
تمام پول قرارداد را برداشت کند (نه تنها سهم خودش ،نگاه کنید به شلک ،9سمت چپ)،
و مبلغی که به سرمایهگذاران پس داده میشود را تخلیه کند .بعالوه ،برخی از طرحها دارای
تابع selfdestructهستند که فقط توسط مالک قابل فراخوانی است و قرارداد را فسخ میکند
(نگاه کنید به شلک ،9سمت راست) .وقتی این اتفاق میافتد ،سرمایهگذاران پول خود را از
دست میدهند.
آسیبرسان به طرح :حتی هنگامیکه دستورات sendبررسی میشوند ،یک عملکرد
نامناسب از مقدار برگشتی آنها میتواند نتیجه معکوس بدهد و میتواند طرح را در معرض
حمالت DDOSیا Blackmailingقرار بدهد .بهعنوان مثال( HYIP ،شلک 10را ببینید) ،یک
طرح آبشاری است که در آن سرمایهگذاران در یک آرایه ثبت میشوند و در پایان هر روز پول
به همه آنها پرداخت میشود .این طرح بررسی میکند تا ببیند که آیا هر دستور send
موفقیتآمیز بوده است یا نه :در صورت خطا ،یک استثنا را ایجاد میکند .بااینحال ،هرگونه
خطا در یکی از sendها (سطرهای 25و )31تمام انتقالهای اتر را برمیگرداند .خطاها ممکن
32
https://www.reddit.com/r/ethereum/comments/44h1m1/
33
https://www.reddit.com/r/ethereum/comments/4br0za/piggybank_earn_eth_forever/
بخش -4آناتومی طرحهای پانزی 25 /
است اتفاق بیفتند ،بهعنوان مثال ،بهدالیل زیر )1( :مجموعه سرمایهگذاران آنقدر طوالنی
میشوند که اسکن آنها منجر به اتمام گس برای پردازش میشود )2( .مانده قرارداد بهنوعی
و بهشکلی در وسط دستور ( forخط )28صفر میشود ،زیرا هنوز پول را به همه سرمایهگذاران
نپرداخته است )3( .یکی از سرمایهگذاران ،یک قرارداد است که fallbackآن یک خطا را
ایجاد میکند .با اکسپلویت کردن آخرین باگ ،یک مهاجم میتواند قراردادی را همراه با یک
34
را در fallbackایجاد کند که همیشه تابع throwرا انجام میدهد( .بهعنوان مثال ،مالوری
شلک 10ببینید) .قرارداد مهاجم مقدار ناچیزی از اتر را برای ورود به مجموعه سرمایهگذاران
به HYIPمیفرستد .هنگامی که HYIPسعی میکند بازپرداخت وی را برای او ارسال کند،
fallbackاستناد شده یک استثنا را ایجاد میکند .توجه داشته باشید که هیچ راهی برای
لغو مالوری از آرایه وجود ندارد ،بنابراین HYIPگیر کرده است و موجودی آن برای همیشه
فریز شده است .در این مرحله ،مهاجم میتواند از HYIPباجخواهی کرده و برای متوقف
کردن حمله ،درخواست پول کند (از طریق ،StopAttackخط )21
اگرچه عدم بررسی دستور sendبزرگترین باگ هست ،باگهای دیگری نیز وجود دارند
35
دارای یک باگ بدنام که بر قراردادها تأثیر میگذارند .بهعنوان مثال ،طرح Government
است که تاکنون فقط در آن قرارداد مشاهده شده است Government .یک طرح پانزی به
شلک زنجیرهای است که دارای یک تناقض است :عالوه بر روش معمول برای بازپرداخت پول
در صورت ادامه کار و سرمایهگذاری کاربران کافی ،آن کسی میتواند برنده تمام پولها بشود
(جکپات) که هیچکس بعد از او بهمدت 12ساعت سرمایهگذاری نکرده باشد .لیست کاربران
در یک آرایه نگهداری میشود و وقتی 12ساعت تمام شد ،آرایه پاک میشود .با اینحال،
دستوری که برای پاک کردن آرایه استفاده میشد ،مجبور بود هر یک از عناصر خود را اسکن
کند .در یک زمان خاص ،آرایه بهقدری رشد کرد که پاکسازی هر عنصر به گس زیادی -بیشتر
از حداکثر مجاز در هر معامله -نیاز داشت .از اینرو ،قرارداد گیر افتاد ،و برنده اصلی جکپات
نتوانست پول خود را مطالبه کند.
شلک - 4در سمت چپ ،رد ثبت نام و عدم بازگشت هزینه در طرح .Tomekaدر سمت راست ،عملکردی که
مالک طرح TheGameبرای تعیین ضریب و هزینه استفاده کرده است.
34
Mallory
35
در اینجا منظور تفکر دولتی هست که در انجمنهای اینترنتی با اسم " "GovernMentalو همچنین
" "PonziGovernMentalشناخته میشن.
/ 26تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
شلک -5در سمت چپ ،در حال تسویه و بازگرداندن تمام موجودی در طرح .EthVentures1در سمت راست،
یک تابع ختم قرارداد در طرح .TheGame
شلک -6در سمت چپ ،یک قطعه از کد ،HYIPکه یک طرح آسیبپذیر در برابر حمالت DDOSمیباشد .در
سمت راست ،کد حمله مربوطه به نام قرارداد مالوری.
باگ بعدی مربوط به عملکرد سازنده است ،که فقط یک بار در زمان ایجاد اجرا میشود
ً
(معموال برای آماده سازی مالک قرارداد همراه با آدرس msg.sanderارسال کننده اولین
تراکنش) .سازنده باید همان نام قرارداد را داشته باشد ،اما ما چهار قرارداد را پیدا کردیم که
نام اشتباهی دارند FirePonzi ،Rubixi ،GoodFellas :و .StackyGameشلک 11خالصهای
از دو مورد اول را نشان میدهد .در سمت چپ ،طرح Goodfellasتابعی به نام LittleCactus
(خط )5دارد که مالک را تعیین میکند و سپس هزینههای جمع آوری شده تا لحظه کنونی
(خط )11به مالک ارسال میشوند .در سمت راست ،طرح Rubixiتابعی به نام
( DynamicPyramidخط )5دارد که مالک را تعیین میکند (با نام ،)creatorو سپس یک
تابع CollectAllFeesوجود دارد که میتواند برای ارسال کارمزدها به مالک طرح فراخوانی
بشود (خط .)11اعطای نام اشتباه به تابعی که بهمعنای سازنده بودن است مضر است :این
بخش -5تاثیر طرحهای پانزی 27 /
ً
اصال صالحیت سازنده بودن را ندارد و هر کسی در هر زمانی میتواند آن را تابع در لک
فراخوانی کرده و آدرس مالک طرح را تغییر بدهد .هنگامی که کاربران باگ را کشف کردند،
برای کسب مالکیت و دریافت کارمزدها شروع به فراخوانی این توابع کردند.
برای خاتمه دادن به این لیست باگها ،ما یک ترفند ساده را نشان میدهیم که میتواند
برای خاموش کردن یک طرح زنجیرهای-شلک استفاده بشود .برای نشان دادن آنDoubler ،
که مقدار ضرب شده در عدد دو را پس میدهد در نظر میگیریم .برای انجام این حمله ،اسکار
ً
(مثال 100اتر) سرمایهگذاری کند .اسکار ابتدا 100اتر به قرارداد میفرستد باید مقدار زیادی اتر
36
با دریافت اسالت ،و سپس 100اتر اضافی (بهعالوه برخی کارمزدها) را نیز ارسال میکند.
دوم ،این طرح تمام 200اتر را به اسکار پس میدهد ،بنابراین او چیزی را از دست نمیدهد.
از آن لحظه به بعد ،تمام سرمایه گذاریهای بعدی برای بازپرداخت 100اتر دوم اسکار جمع
میشوند .اگر متوسط مبلغ سرمایهگذاری شده کمتر از 100اتر باشد ،برای بازپرداخت پول
اسکار به تعداد زیادی سرمایهگذار (و مدت زمانی طوالنی) نیاز است :از این رو ،این طرح
برای مدتی قادر به بازپرداخت پول سایر سرمایهگذاران نخواهد بود .از آنجا که موفقیت
ً
احتماال با اینگونه طرحها بر این اساس است که بازپرداختهای آنها سریعاً صورت میپذیرد،
این حمله ،کاربران و سرمایهگذاران این طرح را ترک میکنند .این حمله را میتوان در هر زمان
37
اگر این جهت بیانگیزه کردن کاربران برای پیوستن به یک طرح زنجیرهای-شلک انجام داد.
حمله در مراحل اولیه چرخه حیات طرح انجام بشود ،حمله با ضرر پولی ناچیزی با موفقیت
پایان مییابد.
36
براش تضمین ظرفیت ارسالها ،اسکار پول را از طریق یک قرارداد ارسال میکند.
37
تاآنجاکه ما میدانیم ،این حمله فقط بر روی قرارداد Quadruplerصورت پذیرفته است .برای مشاهده جزئیات
بیشتر مطالب etherscanو bitcointalkرا بخوانید.
/ 28تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
میدهیم .اطالعات کامل در مورد طرحهای پانزی جمع آوری شده ،از جمله آدرسهای منحصر
بهفرد آنها ،به صورت آنالین در آدرس goo.gl/CvdxBpگزارش شدهاند.
ستونهای جدول 1شامل تعداد معامالت ورودیوخروجی و ارزش کلی منتقل شده ،هم
در اتر و هم در دالر آمریکا (گرد شده به یک عدد صحیح) میباشد .برای تبدیل مقدار هر
بدست 38
معامله به دالر آمریکا ،از میانگین نرخ ارز روز معامله که از وبسایت etherscan.io
آمده استفاده میکنیم .ارزش منتقل شده از طریق یک معامله ،با توجه به خارجی یا داخلی
بودن معامله ،معنایی متفاوت دارد:
معامالت خارجی توسط کاربران برای فراخوانی توابع قرارداد ایجاد میشوند .این معامالت •
میتوانند برخی از اترها را از یک کاربر به قرارداد فراخوانی شده منتقل بکنند .از این رو،
قرارداد است. 39
این مقدار اتر ،بخشی از ورودی
معامالت داخلی دو نوع هستند :آنهایی که تحت نظارت خاصی به سمت قرارداد ارسال •
شدهاند ،و آنهایی که از سمت قرارداد ارسال شدهاند .اولین مورد زمانی اتفاق میافتد
که کاربر بهجای ارسال مستقیم پولش به یک طرح پانزی ،قرارداد دیگری را امضا بکند
(بهطور معمول ،یک قرارداد کیف پول) که از این رو مبلغ مرتبط با معامله بخشی از
ورودی قرارداد است .حالت دوم زمانی اتفاق میافتد که قرارداد یک بازپرداختی را برای
قرارداد 40
برخی از کاربران ارسال میکند :در این حالت ،مبلغ معامله بخشی از خروجی
است.
توجه داشته باشید که ،همانند منبع شماره 24برای طرحهای پانزی در بیتکوین ،در
اتریوم نیز نمیتوانیم سود کالهبرداران را بهطور دقیق تعیین کنیم .در واقع ،نحوه تعریف اینکه
چه کسی کالهبردار است مشخص نیست :البته که مالک قرارداد را میتوان مبدع کالهبرداری
دانست ،اما ممکن است او بیش از یک آدرس داشته باشد که از طریق آنها پول را بازخرید
میکند .از این رو ،ما نمیدانیم به چه شکلی پول ارسال شده برای کاربران قانونی را از پول
ارسال شده به کالهبرداران جدا کنیم .تقریباً لک سود کالهبرداران را میتوان به میزان لک
inflowمربوط به یک طرح دانست.
ستونهای " "paying usersو " "paid usersدر جدول 1به ترتیب تعداد کاربرانی که وارد
مثال آدرسهای مشخصی که پول را به قرارداد میفرستند) و تعداد آن ً این طرح شدهاند (
کاربرانی که از قرارداد پولی دریافت کردهاند را نشان میدهند.
ستونهای " "USDو " "ETHدر جدول 1اولین معیار تأثیر اقتصادی طرحهای پانزی بر
اتریوم را نشان میدهند .توجه داشته باشید که ETHبهعنوان یک واحد اندازه گیری بهتنهایی
قابل توجه نیست :در واقع ،همانطور که توسط نمودار در شلک 12نشان داده شده است نرخ
صرف از ETHبه USDبسیار بیثبات بوده است .بهطور کلی ،ما مشاهده میکنیم که طرحهای
پانزی موجود در لیست ما 630622دالر آمریکا را از 2378کاربر مجزا جمعآوری کردهاند.
درحالیکه تفاوت بین ETHورودی و خروجی هیچوقت منفی نیست (زیرا قراردادها نمیتوانند
ETHبیشتر از آنچه که دریافت میکنند را ارسال کنند) ،تفاوت بین USDورودی و خروجی
38
منبعhttps://etherscan.io/chart/etherprice :
39
inflow
40
outflow
بخش -5تاثیر طرحهای پانزی 29 /
میتواند منفی باشد .این یک تناقض نیست :همانطور که در شلک 12نشان داده شده است
میتوان با این واقعیت توضیح داد که نرخ صرف بین ETHو USDدر طول زمان متفاوت
بوده است.
شلک -8میانگین ماهیانه نرخ صرف اتر ( )ETHبه دالر آمریکا ()USD
41
ratio
42
دریافت کننده /تنظیم کننده
/ 30تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
Kind #Num ETH USD Users
In Out In Out Paying Paid %
Tree-shaped 4 410 400 1 429 1 416 161 83 51%
Chain-shaped 151 41 514 40 170 587 086 599 347 1967 968 48%
Waterfall 4 452 444 8 836 11 261 111 82 73%
Handover 4 486 483 2 618 3 124 97 63 64%
Other 21 1 017 933 30 693 87 728 42 36 85%
Total 184 43 881 43 332 630 662 702 878 2378 1232 51%
شلک -9میزان سود ( ETHمحور عمودی )Yدر هر کاربر (محور افقی )X
شلک -10تعداد کاربران گروهبندی شده بر اساس نسبت سود برای طرحهای Doubler2و .Etheramid1
برچسب 0یعنی هیچ وجهی دریافت نشده است .برای ،n > 0برچسب nیک نسبت بین ( n - 1سخت) و n
(مشمول) را نشان میدهد .برچسب ∞ کاربرانی را نشان میدهد که هرگز پولی ارسال نکردهاند.
Doubler2 Etheramid1
Invested Received Net Gain Ratio Invested Received Net Gain Ratio
شلک -11جزئیات 5کاربری که بیشترین سود را بخاطر Doubler2و Etheramid1کسب کردهاند .هر ردیف
نشاندهنده یک کاربر است .مقادیر به اتر هستند ،تا اولین رقم اعشاری غیر صفر درج شده است .اطالعات
ستونها شامل )1( :مقدار اتر ارسالی توسط کاربر به سمت قرارداد )2( .مقدار دریافتی وی )3( ،تفاوت بین
ستونهای 1و )4( ،2نسبت سود میباشند .نسبت کاربرانی که پولی ارسال نکردهاند با ∞ نشان داده میشود.
شلک -12زمان جریان ورودی (نقطه آبی) و جریان خروجی (قرمز) :در محور افقی ،زمان معامالت (روز-ماه)؛ در
محور عمودی ،مقدار اتر دریافتی/ارسالی( .برای تفسیر منابع با رنگ در این نمودار ،خواننده به نسخه وب این
مقاله ارجاع داده میشود).
شلک -13طول عمر طرحهای پانزی .در محور افقی ،تعداد قراردادها؛ در محور عمودی ،سنجش طول عمر آنها بر
مبنای تعداد روز.
:7.2طول عمر
اکنون ما درمورد طول عمر طرحهای پانزی در مجموعه خود مطالعه میکنیم .شلک 17با
خط آبی ،تعداد روز از اولین تا آخرین معامله ورودی یا خروجی قرارداد را بعنوان طول عمر
طرح نشان میدهد .ما میبینیم که تقریباً ٪60از طرحهای پانزی یک عمر نزدیک به 0روز
شدهاند و در بسیاری 43
دارند .اساساً ،این بدان معناست که آنها در بالکچین اتریوم مستقر
43
Deploy
بخش -7تکامل زمانی 35 /
از موارد در انجمنها یا وبسایتهای اختصاصی تبلیغ میشوند ،اما نتوانستهاند هیچ کاربری
را جذب کنند.
توجه داشته باشید که استفاده از آخرین معامله یک قرارداد برای اندازهگیری دوره فعالیت
واقعی آن ممکن است خیلی ناخوشایند باشد .در واقع ،نمودارهای کلی ما نشان میدهد که
طرحهای پانزی با تعداد زیادی از معامالت انجام شده در یک بازه زمانی کوتاه ،سپس یک
دوره معامالت جداگانه ،و در نهایت با عدم فعالیت مشخص میشوند.
شلک 18نشان میدهد که چه تعداد طرح پانزی در طول زمان ایجاد شده است .ما در
آوریل 2016با 91طرح جدید پانزی عمومی شاهد اوج گسترش این طرحها هستیم .پس از
این موج اول پیدایش طرحها ،با متوسط تقریباً 3طرح عمومی جدید در ماه ،اوضاع
حلوفصل شده است .در بخش ،9ما در مورد توضیحات احتمالی این سقوط آزاد ایجاد
طرحهای پانزی بحث میکنیم و بهویژه حدس میزنیم که بهجای ناپدید شدن ،آنها تحولی
داشتهاند که طبقهبندی آنها دشوارتر شدهاست.
:7.3حجم پرداختها
در این بخش نحوه عملکرد طرحهای پانزی در طول زمان را بررسی میکنیم .شلک 19حجم
روزانه پرداختها (با دالر آمریکا) از 184طرح پانزی درون مجموعه ما را نشان میدهد .محور
افقی نشاندهنده زمان است و محور عمودی حجم پول منتقل شده را نشان میدهد (دالر
آمریکا) .خطوط قرمز منقطع نشاندهنده پول ارسال شده توسط کاربران به طرحها است،
درحالیکه خط ممتد آبی نشان دهنده پول ارسال شده توسط این طرحها به کاربران است.
نمودار به وضوح تعادل بین جریان خروجی و ورودی را گزارش میکند ،بدان معنا که بیشتر
پول سرمایهگذاری شده در این طرحها در بین کاربران توزیع میشود .بااینحال ،همانطور که
ً
بعدا در بخش 8مورد بحث قرار گرفت ،توزیع پول از الگوی در بخش 6نشان داده شد و
نابرابری که مشخصهی طرحهای پانزی هستند پیروی میکند.
از شلک 19مشاهده میکنیم که بیشترین مقدار پول در دوره فوریه تا مه 2016با سه
اوج بین مارس و آوریل 2016مبادله شده است .قابل قبول است که سقوط فعالیت بعد از
آوریل 2016نتیجه افت مشابه در ایجاد طرحهای جدید پانزی است که در شلک 18مشهود
است.
ما اکنون حجم معامالت را به صورت نقطهای و بر روی یک نمونه از مطرحترین طرحها
اندازهگیری میکنیم .هر نمودار در شلک 20جریان پول (ورودی و خروجی) یک قرارداد جداگانه
را نشان میدهد :خطوط قرمز منقطع نشاندهنده پول ارسال شده به طرح (با دالر آمریکا)
است ،درحالیکه خطوط ممتد آبی نشاندهنده بازپرداختهای ارسال شده توسط طرح به
کاربران است .محور افقی نشانگر زمان است که ما لک پول ورودی/خروجی در هر روز را در
نظر میگیریم.
/ 36تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
شلک -16حجم پرداخت ورودی و خروجی طرحهای پانزی بر اساس زمان .در محور افقی ،تاریخ معامالت؛ در محور
افقی ،دالر ورودی به قراراد (خط ممتد آبی) و دالر خروجی از قرارداد (خط منقطع قرمز).
44
طرحهایی که فقط با پردازش بیتکوین کار میکنند.
/ 40تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
بخش -9نتیجهگیری
بالکچینها و قراردادهای هوشمند ممکن است واقعاً فناوریهای درهمگسیختهی بعدی
باشند که اغلب توسط رسانهها گزارش میشوند .با اینحال ،آنها همچنین میتوانند
فرصتهای جدیدی فرار مالیاتی را برای مجرمان و کالهبرداران فراهم کنند که میتوانند از
گمنامی و غیرمتمرکز بودن آنها بهره ببرند .در این مقاله ما طرحهای پانزی در شبکه اتریوم
بهعنوان گستردهترین بستر کنونی برای قراردادهای هوشمند را آنالیز کردیم .بهطورکلی ،دیدیم
که در 3سال اول عمر اتریوم ،آزمایشهای زیادی برای اجرای طرحهای پانزی بهعنوان
ً
کامال محدود قراردادهای هوشمند انجام شده است .اگرچه تأثیر اقتصادی این آزمایشات
بوده است ،زیرا آنها فقط بخش کوچکی از معامالت و ارزش بالکچین اتریوم را شامل
میشوند ،اما آنالیز ما این امکان را میدهد تا نتیجهگیری های مربوطه برای کاربران و مقامات
نظارتی که در زیر به صورت توصیه هایی خالصه شدهاند را انجام دهیم.
توصیه شماره :1تبلیغات را بررسی کنید .در طول فعالیت جمع آوری ،ما نحوه تبلیغ
طرحهای پانزی در وب را مطالعه کردهایم .در بسیاری از موارد ،طرحهای پانزی بهعنوان
برنامههای سرمایهگذاری "با بهره باال" ارائه میشوند که وعده بازدههای زیادی میدهند و از
اعالم هرگونه خطرات صرفنظر کنند .در برخی موارد دیگر ،آنها فقط بهعنوان "بازیهای
اجتماعی" تبلیغ میشوند ،اما یک عامل ثابت این است که بازی کردن شامل انتقال پول از
کاربر به قرارداد و جذب برخی سودها است .در بسیاری از موارد ،ما اختالفاتی بین تبلیغات و
شانس واقعی دریافت بازپرداخت پیدا کردهایم :مورد اخیر بهعنوان یک واقعیت ساده ارائه
شده است ،در حالی که در بخش 4نشان دادهایم که مغالطه در مکانیسم توزیع پول یا اجرای
/ 42تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
آن ممکن است مانع از دریافت بازپرداختهای مورد انتظار توسط کاربران بشود .بهعالوه،
ً
معموال تبلیغات اعالم نمیکنند که مالک قرارداد میتواند شرایط تبلیغ شده را اصالح کند؛
45
مثل افزایش کارمزدهای مالک یا از بین بردن.
بنابراین ،اولین توصیه ما برای کاربران بالقوه مطالعه دقیق تبلیغات است :اگر شرایط
ً
احتماال کالهبرداری است .از وبسایتهایی مانند بیش از حد جذاب بهنظر برسد،
46
یا انجمن گفتگو مانند ،BadBitcoinکه شامل لیست سیاه کالهبرداری مبتنی بر رمزارز
47
بخش "قمار :بازیهای مبتنی بر سرمایهگذاری" در Bitcointalk.orgاست ،باید قبل از ارسال
پول به یک قرارداد ،با آنها مشورت کنید .برای مقامات نظارتی ،توصیه ما نظارت بر وب برای
شناسایی تبلیغات مشکوک و ارائه لیستهای سیاه رسمی به جامعه است.
توصیه شماره :2کد قرارداد را آنالیز کنید .علیرغم اینکه یکی از نکات اصلی فروش
طرحهای "هوشمند" پانزی این است که تغییرناپذیری و اجرای غیرمتمرکز آنها را "معتبر"
میکند ،آنالیز ما در بخش 4چندین آسیبپذیری را نشان داده است که قابلیت اعتبار و
امانتداری آنها را از بین میبرد .برخی از این آسیبپذیریها به دلیل مهارتهای ضعیف در
برنامه نویسی ایجاد میشوند ،درحالیکه برخی دیگر به صورت عمدی بهنظر میرسند که باید
کاربران را برای پیوستن دلسرد کند .بااینحال ،برای انتقال احساس امنیت ،صاحبان قرارداد
خود را در پشت این شعار که کد در دسترس عموم است پناه میدهند؛ با این فرض که همه
افراد میتوانند آن کد را خوانده و قابلیت اطمینان آن را ارزیابی کنند .ازآنجاکه باگها اغلب
حتی توسط سازندگان خودشان نیز فراموش میشوند ،تصور آن دشوار است که یک کاربر
کامال بفهمد که این قرارداد واقعاً چه کاری انجام میدهد
ً عادی بتواند یک قرارداد را بخواند و
و چه آسیبهایی میتواند در پشت آن پنهان بشوند .متفاوت از آسیبپذیریهای مشهور که
]27[ DAOو کیف پول 28[ Parityو ]29را تحت تأثیر قرار داده و باعث خسارت پولی به
ارزش صدها میلیون دالر شدهاند ،این آسیبپذیریهای بحث شده در اینجا شامل قراردادهای
کوچکتر است :در واقع ،اکثر قراردادهای مجموعه ما در کمتر از 100خط کد زبان سالیدیتی
هستند (برای مقایسه ،کدهای DAOنزدیک به 1200خط بود).
برای مقابله با این آسیبپذیریها ،محققان شروع به توسعه ابزاری برای آنالیز خودکار
قراردادهای اتریوم کردهاند [ .]33–30 ، 23این ابزارها قادر به شناسایی چندین آسیبپذیری
مشترک هستند ،حتی اگر بهطورکلی کامل بودن تورینگ EVMو زبان سالیدیتی احراز تأییدیه
را غیرقابل اجرا کند .یک خط موازی از تحقیق ،توسعه زبانهای domain-specificبرای
ً
احتماال ،نه کامل تورینگ) هست که میتواند با کاهش فاصله بین قراردادهای هوشمند (
مشخصات قرارداد و اجرای آن ،به بهبود دقت تکنیکهای آنالیز کمک کند .چندین زبان
domain-specificبرای قراردادهای هوشمند ارائه شده است ،که پلتفرم اتریوم را هدف قرار
دادهاند .در میان آنها ]34[ FSolidM ،قراردادها را به صورت ماشین محدود تعریف میکند
45بهعنوان مثال ،تبلیغات EthStickفقط هشدار میدهد که " تنظیمات را میتوان تغییر داد تا با روندها سازگار
شد (اما فقط در محدودههای مشخص شده)" .در واقع ،از کد منبع آن میبینیم که فقط کارمزدها میتوانند
افزایش بیابند ،درحالیکه فاکتور ضریب پرداخت فقط میتواند کاهش یابد :این امر یعنی همه چیز به نفع مالک
است.
46
https://badbitcoin.org/thebadlist/.
47
https://bitcointalk.org/index.php?board=207.0
بخش -9نتیجهگیری 43 /
که میتواند به کد سالیدیتی ترجمه شود .کارهای منابع شماره 35و 37برای تعیین
قراردادهای مالی به سبک پیتون جونز و همکاران ،زبانهایی را توسعه میدهند.]38[ .
توصیه ما برای کاربران این است که حداقل از طریق این ابزار ،قراردادی که میخواهند
به آن بپیوندند و از آسیبپذیری مانند مواردی که در بخش 4بحث شده برخوردار نیست،
استفاده بکنند .گرچه این امر بهتنهایی ضامن عادالنه بودن طرح نیست ،اما میتواند بهعنوان
مثال تضمین کند که مالک قرارداد بهطور پنهانی وجوه را نمیدزدد .زبانهای domain-
specificممکن است امکان آنالیز پیچیدهتری را فراهم کنند ،که در حالت ایدهآل میتوانند
48
صحت توزیع وجوه بین کاربران را تأیید کنند.
توصیه شماره :3گزارش تراکنشها را آنالیز کنید .آنالیز ما در بخشهای 8-6نشان داده
است که ،علیرغم ویژگیهای فراوان ،بهنظر میرسد گزارش تراکنشهای طرحهای پانزی دارای
برخی الگوهای کلی است )1( :کاربرانی که هرگز وجهی را پس نگرفتند یا نسبت آنها بین 0و
1است )2( .اکثر طرحهای پانزی عمر نسبتاً کوتاهی دارند که شامل اوج فعالیت شدید و به
دنبال آن یک دوره رکود است )3( .ضرایب جینی پرداختهای طرحهای پانزی زیاد است
(بیش از ٪80در مجموعه ما) که به معنای نابرابری شدید در توزیع پول است .حتی اگر هیچ
یک از این ویژگیها بهتنهایی برای جدا کردن طرحهای پانزی از سایر قراردادها کافی بهنظر
نرسد ،این ویژگیها میتوانند برای آموزش طبقهبندیهایی که بهطور خودکار طرحهای پانزی
را تشخیص میدهند ،مورد استفاده قرار بگیرند .در این راستا ،برای کسب تجربه با یادگیری
استراتژیهای طبقهبندی طرحهای پانزی اتریوم ،از نسخه اولیه مجموعه داده ما در منابع 21
و 40استفاده شده است .ابزار طبقهبندی در منابع 21و 40از ویژگیهای ساده ثبت معامالت
(بهعنوان مثال ،تعداد پرداختها ،موجودی قرارداد ،نسبت سرمایهگذارانی که حداقل یک بار
پول دریافت کردهاند ،و غیره) و همچنین از ویژگیهای قرارداد ( EVMمانند تعداد وقوع
opcodeهای خاص) استفاده میکند .اندازهگیریهای انجام شده در منابع 21و 40نشان
میدهند که ویژگیهای کد از ویژگیهای معامله تبعیضآمیزتر هستند – بهنوعی ضدشهودی-
،زیرا بهنظر نمیرسد که ویژگیهای EVMدیدگاهی در مورد ماهیت قرارداد داشته باشند.
بااینحال ،این اختالف ممکن است بهدلیل سادهسازی بیش از حد در انتخاب ویژگیهای
معامله باشد :استفاده از ویژگیهای پیچیدهتر ،الهام گرفته از مواردی که در بخشهای 6و
7بحث شده است ،میتواند به بهبود دقت در انجام طبقهبندی کمک کند .تکنیکهای آنالیز
طرحهای پانزی در بیت کوین [ 41و ]42نشان میدهد که طبقهبندی خودکار طرحهای پانزی
از تاریخ معامالت بهتنهایی با دقت باالیی امکانپذیر است.
فعالیتهای آتی .طرحهای پانزی که در این مقاله ارائه دادهایم را میتوان اولین موج
کالهبرداری مبتنی بر اتریوم دانست .در نسخه مقدماتی این مقاله که در تاریخ 10مارس
492017بهصورت آنالین قرار دادیم ،ما موج دوم کالهبرداری را پیش بینی کرده بودیم:
«به احتمال زیاد در آینده تعدادی کمتر نسبت به موارد جمع آوری شده در این پژوهش،
قابل تشخیص خواهند بود .بهعنوان مثال ،آنها میتوانند بازاریابی چند سطحی ،فروش
48بهعنوان مثال BitML ،یک زبان انتزاعی برای قراردادهای بیتکوین است ،که از تأیید انصاف برای بازیهای قمار
مانند قرعه کشیهای چند نفره پشتیبانی میکند [.]39
49
https://arxiv.org/abs/1703.03779v1
/ 44تشریح طرحهای پانزی در اتریوم :شناسایی ،آنالیز ،تأثیر
توکنها و بازیها را برای تشخیص قراردادهای هوشمند پیچیده ترکیب کنند که طبقهبندی
صحیح آنها بهعنوان طرحهای پانزی یا سرمایهگذاریهای قانونی بسیار دشوار خواهد بود».
ما معتقدیم که این انتظار ممکن است با استفاده از عرضه اولیه سکه ( ،)ICOبهعنوان
ابزاری برای سرمایهگذاری گسترده مبتنی بر تجارت توکن رمزنگاری شده که از طریق آن بیش
از 3بیلیون دالر آمریکا در سال 2017جمع شده ،50و همچنین بازیهای جمعاوری رمزارز
مانند CryptoKittiesو طرفداران آن محقق شده است .فقدان مقررات خاص در اروپا و
ایاالت متحده و سختی کلی در نظارت و کنترل رمزارزهای غیرمتمرکز ،این طرحها را برای
کالهبرداران نیز جذاب کرده است :در واقع ،چندین ICOتوسط مقامات مالی بهعنوان طرحهای
پانزی افشا شدهاند و از بین رفته اند [ 43و .]44یک خط تحقیقاتی مرتبط برای فعالیتهای
آتی میتواند مطالعه این نوع طرحهای "شبه" پانزی باشد که اگرچه در برآوردهسازی الزاماتی
که در بخش 3مشخص کردهایم ،ناتوان هستند اما شباهتهای بسیاری با پانزیها دارند.
برخی از ویژگیها مانند نسبت سود که در طرحهای "خالص" پانزی اعمال میشوند برای
توصیف این "شبه" پانزیها مناسب بهنظر میرسند.
ضمیمه :A
مطالب تکمیلی مربوط به این مقاله را میتوانید به صورت آنالین در لینک زیر ببینید:
https://doi.org/10.1016/j.future.2019.08.014
منابع و مآخذ
[1] S. Nakamoto, Bitcoin: a Peer-To-Peer Electronic Cash System, 2008, https://bitcoin.org/bitcoin.pdf.
[2] J. Bonneau, A. Miller, J. Clark, A. Narayanan, J.A. Kroll, E.W. Felten, Sok: Research perspectives and
challenges for Bitcoin and cryptocurrencies, in: IEEE S & P, 2015, pp. 104–121,
http://dx.doi.org/10.1109/SP.2015.14 .
[3] T. Moore, The promise and perils of digital currencies, IJCIP 6 (3–4) (2013) 147–149,
http://dx.doi.org/10.1016/j.ijcip.2013.08.002 .
[4] M. Artzrouni, The mathematics of Ponzi schemes, Math. Social Sci. 58 (2) (2009) 190–201,
http://dx.doi.org/10.1016/j.mathsocsci.2009.05.003 .
[5] T. Moore, J. Han, R. Clayton, The postmodern Ponzi scheme: Empirical analysis of high-yield investment
programs, in: Financial Cryptography and Data Security, 2012, pp. 41–56, http://dx.doi.org/10.1007/978-3-642-
32946-3_4 .
[6] M. Vasek, T. Moore, There’s no free lunch, even using Bitcoin: Tracking the popularity and profits of virtual
currency scams, in: Financial Cryptography and Data Security, 2015, pp. 44–61, http://dx.doi.org/10.1007/978-3-
662-47854-7_4 .
)[7] N. Szabo, Formalizing and securing relationships on public networks, First Monday 2 (9) (1997
https://firstmonday.org/ojs/index.php/fm/article/view/548/
50
https://www.coinschedule.com/stats.html
45 / منابع و مآخذ
[8] P.L. Seijas, S. Thompson, D. McAdams, Scripting smart contracts for distributed ledger technology,
Cryptology ePrint Archive, Report 2016/1156, http://eprint.iacr.org/2016/1156 (2016)
[9] E.V. Murphy, M.M. Murphy, M.V. Seitzinger, Bitcoin: Questions, Answers, and Analysis of Legal Issues, Tech.
Rep., Congressional Research Service, 2015.
[10] A. Juels, A.E. Kosba, E. Shi, The ring of gyges: Investigating the future of criminal smart contracts, in: ACM
CCS, 2016, pp. 283–295, http://dx.doiorg/10.1145/2976749.2978362 .
[11] V. Buterin, Ethereum: A Next Generation Smart Contract and Decentralized Application Platform, 2013,
https://github.com/ethereum/wiki/wiki/White-Paper .
[12] G. Wood, Ethereum: A Secure Decentralised Generalised Transaction Ledger, 2014,
https://gavwood.com/paper.pdf
[13] A. Gervais, G.O. Karame, K. Wüst, V. Glykantzis, H. Ritzdorf, S. Capkun, On the security and performance of
proof of work blockchains, in: ACM CCS, 2016, pp. 3–16, http://dx.doi.org/10.1145/2976749.2978341
[14] Solidity documentation, https://solidity.readthedocs.io/en/v0.5.4/ (2019).
[15] I. Kaminska, It’s not just a Ponzi, it’s a ‘‘smart’’ Ponzi, Financial Times Alphaville
https://ftalphaville.ft.com/2017/06/01/2189634/its-notjust-a-ponzi-its-a smart-ponzi/ (2017).
[16] M. William, ERC-20 Tokens, Explained, Cointelegraph, https://cointelegraph.com/explained/erc-20-tokens-
explained (2018)
[17] S. Holoweiko, What is an ICO? Defining a Security on the Blockchain. Available at SSRN:
https://ssrn.com/abstract=3303447 (2018).
[18] J. Young, CryptoKitties Sales Hit $12 Million, Could be Ethereum’s Killer App After All,
https://cointelegraph.com/news/cryptokitties-sales-hit-12-million-could-be-ethereums-killer-app-after-all (2017).
[19] M. Bartoletti, S. Lande, L. Pompianu, A. Bracciali, A general framework for blockchain analytics, in: Proc. 1st
Workshop on Scalable and Resilient Infrastructures for Distributed Ledgers (SERIAL@Middleware), ACM, 2017,
pp. 7:1–7:6, http://dx.doi.org/10.1145/3152824.3152831
[20] L. Yujian, L. Bo, A normalized levenshtein distance metric, IEEE Trans. Pattern Anal. Mach. Intell. 29 (6)
(2007) 1091–1095, http://dx.doi.org/10.1109/TPAMI.2007.1078
[21] W. Chen, Z. Zheng, E.C. Ngai, P. Zheng, Y. Zhou, Exploiting blockchain data to detect smart Ponzi schemes
on Ethereum, IEEE Access 7 (2019) 37575–37586, http://dx.doi.org/10.1109/ACCESS.2019.2905769
[22] N. Atzei, M. Bartoletti, T. Cimoli, A survey of attacks on Ethereum smart contracts (SoK), in: Principles of
Security and Trust (POST), in: LNCS, vol. 10204, Springer, 2017, pp. 164–186, http://dx.doi.org/10.1007/978-3-
662-54455-6_8
[23] L. Luu, D.-H. Chu, H. Olickel, P. Saxena, A. Hobor, Making smart contracts smarter, in: ACM CCS, 2016,
http://eprint.iacr.org/2016/633
[24] M. Vasek, M. Thornton, T. Moore, Empirical analysis of denial-of-service attacks in the Bitcoin ecosystem, in:
Financial Cryptography and Data Security, 2014, pp. 57–71, http://dx.doi.org/10.1007/978-3-662-44774-1_5
[25] J. Brito, A. Castillo, Bitcoin: A Primer for Policymakers, Mercatus Center at George Mason University, 2013.
[26] T. Slattery, Taking a bit out of crime: Bitcoin and cross-border tax evasion, Brook. J. Int’l L. 39 (2014) 829.
[27] Understanding the DAO attack, http://www.coindesk.com/understandingdao-hack-journalists/
[28] Parity Wallet Security Alert, https://paritytech.io/blog/security-alert.html (July 2017).
[29] A Postmortem on the Parity Multi-Sig Library Self-Destruct, https://goo.gl/Kw3gXi (November 2017).
[30] I. Grishchenko, M. Maffei, C. Schneidewind, Foundations and tools for the static analysis of Ethereum smart
contracts, in: CAV, in: LNCS, vol. 10981, Springer, 2018, pp. 51–78, http://dx.doi.org/10.1007/978-3-319-96145-
3_4
[31] Mythril, https://github.com/ConsenSys/mythril (2018)
[32] S. Tikhomirov, E. Voskresenskaya, I. Ivanitskiy, R. Takhaviev, E. Marchenko, Y. Alexandrov, Smartcheck:
Static analysis of Ethereum smart contracts, in: IEEE/ACM International Workshop on Emerging Trends in
Software Engineering for Blockchain, 2018, pp. 9–16.
[33] P. Tsankov, A.M. Dan, D. Drachsler-Cohen, A. Gervais, F. Bünzli, M.T. Vechev, Securify: Practical security
analysis of smart contracts, in: ACM CCS, 2018, pp. 67–82, http://dx.doi.org/10.1145/3243734.3243780.
[34] A. Mavridou, A. Laszka, Designing secure ethereum smart contracts: A finite state machine-based approach,
in: Financial Cryptography and Data Security, 2018.
تأثیر، آنالیز، شناسایی: تشریح طرحهای پانزی در اتریوم/ 46
[35] A. Biryukov, D. Khovratovich, S. Tikhomirov, Findel: Secure derivative contracts for Ethereum, in: Financial
Cryptography Workshops, in: LNCS, vol. 10323, Springer, 2017, pp. 453–467, http://dx.doi.org/10.1007/978-3-
319-70278-0_28.
[36] B. Egelund-Müller, M. Elsman, F. Henglein, O. Ross, Automated execution of financial contracts on
blockchains, Bus. Inf. Syst. Eng. 59 (6) (2017) 457–467, http://dx.doi.org/10.1007/s12599-017-0507-z.
[37] P.L. Seijas, S.J. Thompson, Marlowe: Financial contracts on blockchain, in: ISoLA, in: LNCS, vol. 11247,
Springer, 2018, pp. 356–375, http://dx.doi.org/10.1007/978-3-030-03427-6_27.
[38] S.L.P. Jones, J. Eber, J. Seward, Composing contracts: an adventure in financial engineering, functional
pearl, in: International Conference on Functional Programming (ICFP), 2000, pp. 280–292,
http://dx.doi.org/10.1145/351240.351267.
[39] M. Bartoletti, R. Zunino, Verifying liquidity of Bitcoin contracts, in: Principles of Security and Trust, in: LNCS,
vol. 11426, Springer, 2019, pp.
222–247, http://dx.doi.org/10.1007/978-3-030-17138-4_10.
[40] W. Chen, Z. Zheng, J. Cui, E. Ngai, P. Zheng, Y. Zhou, Detecting Ponzi schemes on Ethereum: Towards
healthier blockchain technology, in: WWW, 2018, pp. 1409–1418, http://dx.doi.org/10.1145/3178876.3186046.
[41] M. Bartoletti, B. Pes, S. Serusi, Data mining for detecting Bitcoin Ponzi schemes, in: Crypto Valley
Conference on Blockchain Technology, IEEE,
2018, pp. 75–84, http://dx.doi.org/10.1109/CVCBT.2018.00014.
[42] K. Toyoda, T. Ohtsuki, P.T. Mathiopoulos, Identification of high yielding investment programs in bitcoin via
transactions pattern analysis, in: GLOBECOM, 2017, pp. 1–6, http://dx.doi.org/10.1109/GLOCOM.2017.8254420.
[43] L. Shin, $15 Million ICO Halted By SEC For Being Alleged Scam, 2017,
www.forbes.com/sites/laurashin/2017/12/04/15-million-ico-haltedby-sec-for-being-alleged-scam.
[44] D.A. Zetzsche, R.P. Buckley, D.W. Arner, L. Föhr, The ICO Gold Rush: It’s a scam, it’s a bubble, it’s a super
challenge for regulators, University of Luxembourg Law Working Paper No. 11/2017; UNSW Law Research Paper
No. 83; University of Hong Kong Faculty of Law Research Paper No. 2017/035. Available at SSRN:
https://ssrn.com/abstract=3072298 or http://dx.doi.org/10.2139/ssrn.3072298 (2017).