وقتی که از اکسپلوررهای (explorer) مختلف بلاک چین اتریوم (Ethereum) مانند Etherscan برای بررسی آدرس ها استفاده می شود، ممکن است با آدرس های معینی برخورد کنید که دارای تراکنش ها، تراکنش های داخلی و انتقال توکن می باشند. برای درک تفاوت این موارد، لازم است ابتدا مفهوم آدرس های داخلی و خارجی در بلاک چین اتریوم درک شود.
آدرس های خارجی و داخلی در شبکه اتریوم
دو نوع آدرس داخلی و خارجی در بلاک چین اتریوم وجود دارد. به آدرسی که توسط کاربر ایجاد می شود آدرس خارجی گفته می شود؛ زیرا این قبیل آدرس ها برای دسترسی به بلاک چین از خارج (از جهان کاربر) مورد استفاده قرار می گیرند. وقتی که یک قرارداد هوشمند (smart contract) در بلاک چین اتریوم اعمال می شود، یک آدرس داخلی ایجاد می شود که به عنوان اشاره گری به برنامه بلاک چینی در حال اجرا مورد استفاده قرار می گیرد.
می توان این قرارداد را از داخل و یا از خارج برای عملکردهای مورد نیاز هدف قرار داد؛ بنابراین یک قرارداد اعمال شده دیگر می تواند عملکردها را در قرارداد اعمال شده قبلی، فراخوانی کند.
توجه داشته باشید که همه تراکنش ها در بلاک چین اتریوم از اکانت های خارجی راه اندازی می شوند. حتی اگر یک قرارداد هوشمند قرار است قرارداد دیگری را فراخوانی کند و آن یکی هم به نوبه خود قرارداد دیگری را فراخوانی می کند، همان تراکنش اول باید توسط یک اکانت خارجی انجام شود. در حال حاضر، راه حلی برای فراخوانی اتوماتیک یک تراکنش از خارج وجود ندارد؛ اگرچه راهحلهای خاصی در دست بررسی هستند.
تفاوت اصلی بین اکانت های داخلی و خارجی در این است که آدرس های خارجی دارای کلید خصوصی هستند و می توانند در دسترس کاربران قرار گیرند. آدرس های داخلی را نمی توان مستقیما به عنوان یک کیف پول مورد دسترسی قرار داد و تنها می توان با فراخوانی عملکرد ها از آنها استفاده کرد.
انواع تراکنش
در اینجا لازم است که به بررسی انواع تراکنش ها در بلاک چین اتریوم بپردازیم. اجازه دهید این آدرس را مورد بررسی قرار دهیم.
این آدرس دارای چندین مدخل در تب Transactions است که بعضی از آنها خروجی و بعضی از آنها ورودی هستند. این تراکنش ها، تراکنش های خارجی هستند. در شکل می بینیم که این آدرس ۷ روز پیش مقدار ۵ اتر را از این آدرس و ۱۲ روز قبل نیز مقدار ۰.۲ اتر را از یک کیف پول بایننس (Binance) دریافت کرده است. اما اگر به جدید ترین فرستنده نگاه کنیم، تعدادی ورودی جالب دیگر را مشاهده خواهیم کرد.
از این آدرس، اتر برای افراد بیرون داده می شود اما این آدرس کار دیگری هم انجام داده است، آن در فروش عمومی ایاس (EOS) مشارکت کرده و توکن های ایاس را برداشت کرده است. اکثر این تراکنش ها هیچ اتری را نمی فرستند بلکه تنها عملکرد ها را فراخوانی می کنند. به عنوان مثال این تراکنش نشان می دهد که تقریبا نیم سال پیش، فرستنده عملکرد Claim را در قرارداد فروش عمومی ایاس فراخوانی کرده است. این باعث شده که ۳۱۲ توکن برای این فرد در عوض فرستاده شود.
جزئیات این تراکنش خیلی اهمیت ندارد. ما تنها به آن نگاه کرده ایم تا تب Transactions رابه درستی تعریف کنیم:
این تب همه تراکنش های آغاز شده توسط اکانت های خارجی را لیست کرده است و اهمیتی ندارد که چه کسی آنها را آغاز کرده باشد (گیرنده یا فرستنده).
حال بیایید به تب دوم از آدرس اولمان یعنی تب Internal Transactions نگاهی بیاندازیم.
توجه داشته باشید که همه آدرس ها این تب را نخواهند داشت. آن تنها وقتی موجود خواهد بود که یک تراکنش داخلی در واقع بر روی یک اکانت اتفاق بیافتد.
اجازه دهید به یکی از اینها نگاهی بیاندازیم، به عنوان مثال این یکی.
این پیشنهادی در سرویس دامنه ENS بوده است که به موجودیت ها اجازه می دهد که یک دامنه eth مانند bitfalls.eth ثبت کنند و افراد می توانند اتر را مستقیما به آن بفرستند. این تراکنش خودش را اینچنین توصیف می کند که: به قرارداد ENS-Registrar فرستاده شده است، بعدا ۰.۹۴ اتر را به آدرسی فرستاده که در ابتدا پیشنهاد مزایده را شکل داده است، و سپس قرارداد عملکرد نهایی شده را فراخوانی کرده است.
اما این چگونه می تواند یک تراکنش داخلی باشد در حالی که هنوز لازم است توسط یک تراکنش از یک اکانت خارجی راه اندازی شود؟ بله تراکنش آغاز کننده اولیه خارجی بوده است؛ اما این تراکنش خاص تنها یک تراکنش در زنجیره تراکنش ها است که در داخل بلاک چین اتریوم از قراردادی به قرارداد دیگر اتفاق افتاده است. از آنجا که قرارداد به طور خودکار اتر را پس فرستاده است، به عنوان یک تراکنش داخلی ثبت شده است؛ زیرا انتقال اتر نتیجه منطقی بوده که در قرارداد هوشمند ساخته شده است و توسط فردی از خارج فرستاده نشده است.
بنابراین تب Internal Transactions همه تراکنش های شروع شده توسط اکانت های داخلی را در نتیجه یک یا چند تراکنش قبل لیست می کند.
Token Transfers
سرانجام، تب Token Transfers موجود است.
عنوان این تب تا حدودی مفهوم خود را توضیح می دهد. انتقال های توکن، تراکنش هایی هستند که تنها و منحصرا به انتقال توکن می پردازند. توکن مورد بحث باید یک توکن ERC20 باشد و سپس اگر هدف تراکنش تنها انتقال توکن باشد، در اینجا لیست خواهد شد. در اینجا می توانیم مثالی از یک توکن-اسپم (spam-token) را مشاهده کنیم. ۱۵۰۰ توکن BOBx، هشت روز قبل به آدرس خاصی فرستاده شده است.
توکن اسپم یا ایردراپ (airdrop) روش خاصی برای ترویج یک پروژه ICO است. ایردراپ ها دریافت کننده را متعجب می کنند که این توکن ها از کجا آمده اند. از آنجا که آنها در گوگل به جستجوی پروژه می پردازند، میزان جستجوها رشد می یابد و بک لینک ها (backlinks) ایجاد می شوند. توجه داشته باشید که این کار تقریبا رایگان است و در مورد ساخت توکن خودتان بسیار جزئی می باشد. هزینه های بازاریابی برای چنین کاری تقریبا صفر است.
می توانیم ببینیم که این به راستی یک ایردراپ با آدرس های زیادی بوده که به عنوان گیرنده ها مورد هدف قرار گرفته است.
همچنین توجه داشته باشید که توکن ها از 0x00000...
.فرستاده شده اند. این چه مفهومی می تواند داشته باشد؟ چگونه یک آدرس تهی (null-address) می تواند ریشه و مبنا باشد؟ این در واقع بدین معنی است که این تراکنش اسپم، ریشه و مبنای توکن نیز بوده است. این توکن سریعا ساخته شده و در میان ۱۰۰ نفر توزیع شده است. در اینجا می توانید تعداد آدرس های تشکیل دهنده را با نگاه به Input Data بررسی کنید.
نتیجه گیری
حالا شما می دانید که چگونه به تعبیر انواع تراکنش در بلاک چین اتریوم و بر روی Etherscan بپردازید. و با درجه ای نزدیک به یقین می توانید بگویید که چه چیزی به چه کسی انتقال داده شده است، کی انتقال داده شده و از کجا انتقال داده شده است. همچنین می توانید هویت شروع کننده را نیز شناسایی کنید. این برای بررسی های آینده شما در مورد بلاک چین اتریوم مفید خواهد بود.