صفحه تراکنش در اکسپلورر بلوک شبیه دیواری از فیلدهای فنی است. این مقاله هر فیلد را یکییکی توضیح میدهد تا بتوانید به پرسشهای ساده پاسخ دهید: آیا انجام شد، چه کسی پرداخت کرد، چقدر هزینه داشت و چه کاری کرد؟
مثالها ابتدا زنجیرههای به سبک اتریوم (اتریوم، آربیتروم، بیس، اپتیمیزم، پالیگان) را دنبال میکنند. بخشهای بعدی تفاوت بیتکوین و سولانا را نشان میدهند.
چگونه صفحه تراکنش را باز کنیم
میتوانید تراکنش را به سه روش پیدا کنید.
- هش آن را در کادر جستجوی بالای صفحه بچسبانید. هش همان شناسه بلند است که در زنجیرههای EVM با 0x شروع میشود.
- روی تراکنشی در یک بلوک کلیک کنید. زنجیرهای را از صفحه زندهاش باز کنید، مثلاً بیس، و روی کاشی یک بلوک کلیک کنید.
- از آدرس مستقیم
/chain/<id>/tx/<hash>استفاده کنید، که<id>شماره زنجیرهای است که در آدرس سایت آن زنجیره دیده میشود.
صفحههای بلوک و آدرس به همین شکل کار میکنند. جستجوی بالای صفحه شماره بلوک یا آدرس را هم میپذیرد.
فیلدها، یکییکی
هش تراکنش (Transaction hash)
شناسه یکتای تراکنش. هر کس هش را داشته باشد همان رکورد را پیدا میکند. دو تراکنش متفاوت هرگز هش یکسان ندارند.
وضعیت (Status)
معمولاً Success (موفق)، Failed (ناموفق) یا Pending (در انتظار). Success یعنی تراکنش اجرا شد و تغییراتش اعمال شد. Failed یعنی در بلوکی گنجانده شد اما عملش رد شد، مثلاً به دلیل گس کم یا قاعدهای در قرارداد. Pending یعنی منتظر است و هنوز در بلوکی نیست.
تراکنش ناموفق هم کارمزد میپردازد. شبکه برای امتحان آن کار کرده است، پس برای گسی که تا نقطه شکست مصرف شده میپردازید. چیز دیگری تغییر نمیکند: توکنها یا سکههایی که میخواستید بفرستید نزد شما میمانند.
بلوک و زمان (Block and timestamp)
بلوک شماره بلوکی است که تراکنش را در خود دارد. زمان (timestamp) زمان آن بلوک است. بسیاری از صفحهها تعداد تأییدیهها را هم نشان میدهند، یعنی چند بلوک پس از آن آمده است. قطعیت و تأییدیهها را ببینید.
فرستنده و گیرنده (From and to)
From آدرسی است که امضا کرد و پرداخت. To آدرسی است که فراخوانی را دریافت کرد. اگر آدرس «to» کیف پول عادی باشد، انتقال ساده است. اگر قرارداد هوشمند باشد، تراکنش یک فراخوانی قرارداد است و «to» خود قرارداد است، نه شخصی که در نهایت توکنها را میگیرد.
مقدار (Value)
مقدار سکه بومی (ETH در اتریوم) که همراه تراکنش فرستاده شده. برای انتقال توکن مثل USDC، مقدار اغلب 0 ETH است، چون توکنها داخل قرارداد توکن جابهجا میشوند. مقدار واقعی در بخش انتقال توکن است.
کارمزد تراکنش (Transaction fee)
مجموع پرداختشده، به سکه بومی و اغلب به دلار. برابر گس مصرفشده ضرب در قیمت گس است. در زنجیرههای لایه 2، کارمزد میتواند کارمزد داده برای ارسال به اتریوم را هم شامل شود. گس و کارمزدها هر بخش را پوشش میدهد.
سقف گس، گس مصرفشده و قیمت گس (Gas limit, gas used, gas price)
- سقف گس (Gas limit): بیشترین کاری که فرستنده اجازه داد.
- گس مصرفشده (Gas used): کاری که واقعاً مصرف شد. برای این میپردازید، نه برای سقف.
- قیمت گس (Gas price): قیمت هر واحد، بر حسب gwei. صفحههای جدیدتر آن را به کارمزد پایه، کارمزد اولویت و کارمزد حداکثر تقسیم میکنند.
انتقال ساده ETH دقیقاً 21,000 گس مصرف میکند. انتقال توکن یا سواپ بیشتر.
نانس (Nonce)
شمارنده تراکنشهای فرستنده. نخستین تراکنش یک آدرس نانس 0 دارد، بعدی نانس 1 و همینطور ادامه. تراکنشها باید به ترتیب گنجانده شوند، پس یک تراکنش گیرکرده میتواند تراکنشهای بعدی را مسدود کند. استفاده دوباره از یک نانس با کارمزد بالاتر روشی است که کیف پول تراکنش در انتظار را جایگزین یا لغو میکند.
داده ورودی (Input data)
داده خامی که به قرارداد فرستاده میشود. برای انتقال ساده خالی است. برای فراخوانی قرارداد با کد کوتاهی شروع میشود که نام تابع را مشخص میکند و آرگومانهایش پس از آن میآیند. اکسپلوررها اغلب آن را به شکلی خوانا رمزگشایی میکنند، مثل «transfer» با یک گیرنده و یک مقدار.
لاگها و رویدادها (Logs and events)
وقتی قراردادی اجرا میشود میتواند رویدادهایی به نام لاگ ثبت کند. قراردادهای توکن هر بار که توکنها جابهجا میشوند رویداد «Transfer» صادر میکنند. اپلیکیشنها و اکسپلوررها این لاگها را میخوانند تا فعالیت را نشان دهند. لاگها مدرک خوبی از کاری هستند که قرارداد کرده است.
انتقالهای توکن (Token transfers)
خلاصهای دوستانهتر که از لاگها ساخته میشود: کدام توکنها، از کدام آدرس، به کدام آدرس و به چه تعداد جابهجا شدند. وقتی پرداختی را بررسی میکنید، این بخش را بخوانید.
یک مثال کاربردی: 25 USDC در بیس دریافت کردید
تصور کنید دوستی میگوید 25 USDC در بیس برایتان فرستاده و هش تراکنش را میدهد. آن را در بیس با جستجوی بالای صفحه مییابید. صفحه چه نشان میدهد؟
- وضعیت: Success. انتقال اجرا شد.
- بلوک و زمان: شماره بلوک و زمانی کمی پیش، با چند تأییدیه.
- From: آدرس دوستتان. To: قرارداد توکن USDC، نه آدرس شما. این برای انتقال توکن عادی است.
- مقدار: 0 ETH، چون ETHای جابهجا نشده.
- انتقالهای توکن: یک خط که 25 USDC را از آدرس دوستتان به آدرس شما نشان میدهد. این همان خطی است که اهمیت دارد.
- کارمزد تراکنش: مبلغ بسیار کوچکی که دوستتان به ETH پرداخته و چون بیس لایه 2 است کارمزد داده L1 را هم شامل میشود.
- داده ورودی: فراخوانی «transfer» به قرارداد با آدرس شما و مقداری بر حسب کوچکترین واحد توکن (25 USDC بهصورت 25,000,000 نوشته میشود، چون USDC شش رقم اعشار دارد).
اگر خط انتقال توکن آدرس شما و 25 USDC را نشان دهد، پول را گرفتهاید. اگر آدرس قرارداد USDC متفاوتی میبینید، مراقب باشید، چون توکنهای جعلی میتوانند همان نام را داشته باشند. استیبلکوینها را ببینید.
در انتظار و تأییدشده
تراکنش در انتظار (pending) پخش شده اما در بلوکی گنجانده نشده است. اگر کارمزد کم باشد ممکن است منتظر بماند. وقتی گنجانده شد تأییدشده (confirmed) است و با بلوکهای بیشتر روی آن، اتکا به آن امنتر میشود. داستان کامل در قطعیت و تأییدیهها است.
تفاوت بیتکوین
بیتکوین به معنای اتریومی حساب یا موجودی ندارد. تراکنش ورودیها را خرج میکند و خروجیها را میسازد. ورودی به خروجی قبلی اشاره میکند که خرجش میکنید. خروجی میگوید چه مقدار به کدام آدرس میرود.
ورودی را باید کامل خرج کرد. اگر سکهای به ارزش 0.5 BTC دارید و 0.1 BTC میپردازید، تراکنش یک خروجی 0.1 BTC برای گیرنده و یک خروجی باقیمانده (change output) با نزدیک 0.4 BTC به خودتان دارد. تفاوت کوچک میان ورودیها و خروجیها کارمزد است. گس، نانس و داده ورودی از همان نوع وجود ندارد. ممپول و کارمزدهای بیتکوین و بیتکوین را ببینید.
تفاوت سولانا
تراکنش سولانا با امضا (signature) مشخص میشود که نقش شناسه آن را دارد. فهرستی از دستورالعملها (instructions) دارد که هر کدام یک برنامه (program، واژه سولانا برای قرارداد هوشمند) را فرا میخوانند. یک تراکنش میتواند چند دستورالعمل داشته باشد، مثلاً «ساخت حساب توکن» و سپس «انتقال». صفحه کارمزد، واحدهای محاسباتی (compute units) مصرفشده و نتیجه هر دستورالعمل را نشان میدهد. کارمزد اولویت سولانا و سولانا را ببینید.
پرسشهای متداول
هش تراکنش چیست؟
شناسه یکتای تراکنش است. با آن تراکنش را در اکسپلورر بلوک جستجو میکنید.
چرا تراکنش ناموفق من هم کارمزد داشت؟
شبکه برای امتحان آن کار کرده است، پس گس مصرفشده کسر میشود، هرچند عمل رد شد. سکهها و توکنهای شما همان جایی که بودند میمانند.
چرا آدرس «to» قرارداد را نشان میدهد و نه گیرنده را؟
برای انتقال توکن، قرارداد توکن را فرا میخوانید که سپس موجودیها را بهروز میکند. گیرنده در بخش انتقالهای توکن و در داده ورودی دیده میشود.
تراکنش در انتظار یعنی چه؟
پخش شده اما هنوز در بلوکی نیست. معمولاً به کارمزد بالاتر نیاز دارد یا فقط کمی صبر لازم است.
نانس چیست؟
شمارندهای است که نشان میدهد یک آدرس چند تراکنش فرستاده است. تراکنشها را مرتب نگه میدارد و از استفاده دوباره یک تراکنش جلوگیری میکند.