با پیشرفت فناوری بلاکچین و گسترش کاربردهای آن، روزبهروز به تعداد افراد علاقهمند به ارزهای دیجیتال بیشتر میشود. با وجود این یک اصطلاح وجود دارد که ممکن است هنوز به طور کامل آن را درک نکرده باشید. تراکنش یکی از اساسیترین قسمتها در بلاکچین است که حتی اگر با کلیات آن آشنا باشید، آگاهی از جزییات آن خالی از لطف نیست. در این مقاله همراه میهن بلاکچین باشید تا از جزئیات تراکنش در بلاک چین باخبر شوید. این آشنایی به شما کمک میکند تا هم دانش خود در این زمینه را بیشتر کنید و هم در شرایطی که مشکلی پیشآمده است بهتر تصمیم بگیرید.
هر تراکنش چه ماهیتی دارد؟
زمانی که صحبت از تراکنش در یک شبکه بلاکچین عمومی میکنیم، معمولاً منظور ما تعاملی است که بین دو آدرس اتفاق میافتد. بهعبارتدیگر، توکن (چه مثلی و چه بیهمتا) یا هر نوع دارایی رمزنگاری شده دیگر (مانند ارزهای دیجیتال) از یک آدرس به آدرس دیگر منتقل میشوند. همچنین معاملات داخلی هم نوعی تراکنش محسوب میشود که در واقع تعاملی بین قراردادهای هوشمند است. این اصطلاح تا حد زیادی خارج از سرفصلهای این مقاله است و از توضیح بیشتر صرفنظر میکنیم.
بهوضوح در این شرایط هیچ چیزی بهصورت فیزیکی از جایی بهجای دیگر ارسال نمیشود. یک شبکه مانند اتریوم که از قرارداد هوشمند پشتیبانی میکند، مؤلفههای زیادی دارد. با وجود این، بخش اصلی و به نوعی ستون فقرات چنین سیستمی وجود دفتر کل توزیعشده (Distributed Ledger) است اما منظور از این اصطلاح چیست؟ تصور کنید یک برگه یا صفحه گسترده در اختیار داشته باشیم و در یک طرف آن تمامی آدرسهای کیف پول اتریوم قرار گرفته باشند. هر کدام از این آدرسها نیز به ازای هر نوع ارز دیجیتالی که در خود نگهداری میکنند یک ستون داشته باشند.
برای توضیح بیشتر از یک مثال استفاده میکنیم. فرض کنید فرد اول قصد دارد در یک تراکنش مبلغی را برای فرد دوم ارسال کند. فرد اول ۱.۳۶ اتر (ETH) در حساب خود دارد و میخواهید ۰.۵ آن را برای فرد دوم بفرستد. برای این کار فرد اول ابتدا کیف پول متامسک (MetaMask) خود را باز کرده و آدرس فرد دوم را وارد میکند. سپس پارامترهای مختلف گس شبکه (gas) را بر اساس شرایط خود تنظیم و سپس روی ارسال کلیک میکند.
بررسی آناتومی تراکنش پس از درخواست
جزئیات تراکنش بلاک چین پس از ثبت درخواست اهمیت پیدا میکند. در این شرایط تراکنش وارد شرایطی به نام حالت نگهداری موقت محلی شده که آن را با نام استخر حافظه محلی [ممپول] (local memory pool یا local mempool) میشناسند. سپس تراکنش توسط نزدیکترین گره یا نود (Node) در شبکه انتخاب میشود.
بر اساس شرایط گس که توسط فرد اول تعیین شده است، تراکنش فرد فرستنده اولویتبندی میشود (هر چه ارسالکننده مبلغ بیشتری به ازای هر واحد گس بپردازد تراکنش او نیز سریعتر انجام میشود). همچنین تراکنش او در گرههای دیگر شبکه نیز منتشر میشود.
کار نودها تأیید کردن این است که فرد اول یعنی فرستنده، اتر لازم را برای مصرف کردن در اختیار داشته باشد و در واقع با تأیید آنها تراکنش انجام شود. در این شرایط دفتر کل ۰.۵ اتر از موجودی فرد اول کسر میکند و ۰.۵ اتر به موجودی فرد دوم اضافه میکند.
در این شرایط اتر درون شبکه جابهجا نمیشود. انجام تراکنش مانند این نیست که فرد اول با کامپیوتر خود ایمیلی برای فرد دوم ارسال کند و این ایمیل وارد کیف پول متامسک گیرنده یا هر چیزی مانند آن شود. فرد ارسالکننده درخواستی از طریق کلید خصوصی کیف پول متامسک برای شبکه ارسال کرد تا حساب خود را بدهکار و حساب گیرنده را بستانکار کند. بعد از انجام فرایند تأیید که در پروتکلهای شبکه برنامهنویسی شده، تراکنش انجام میشود. تمام اتفاقی که در یک تراکنش اتفاق میافتد و بیشتر جزئیات تراکنش بلاک چین همین است. درخواستی برای دفتر کل ارسال میشود تا یک دارایی را مجدد بین دو آدرس تخصیص دهد و از یکی برای دیگری ارسال کند.
وقتی شرایط به هم میریزد چه کنیم؟
شرایط میتواند به دلایل بسیاری به هم بریزد که عمدهترین دلیل ماهیت نرمافزاری فرایند تراکنش است. ممکن است کیف پول متامسک باگ داشته باشد یا یکی از تنظیمات شبکهای که میخواهید از آن استفاده کنید بهاشتباه تنظیم شود. همچنین ممکن است خطای اتصال به وجود آمده باشد.
یکی از مشکلات رایج این است که کاربر میخواهد برای تراکنش خود هزینه کمتری بپردازد و مقدار گس (در این جا گس فی یا gas fee) را در حد پایین قرار میدهد. در برخی شرایط که شبکه شلوغ است، در هیچ بلوکی فضا برای چنین تراکنش ارزانی وجود ندارد و ممکن است مدت زیادی هم به همین شکل باقی بماند. در این شرایط تراکنش قدیمی شده و باید توسط کاربر لغو شود.
اگر یک تراکنش ارسال در کیف پول متامسک انجام داده باشید و به طور کامل تأیید نشده باشد، وضعیت آن در کیف پول بهصورت در حال انتظار یا Pending است. اگر تراکنش ارسالی دارید و انجام نمیشود، عمدهترین دلیل آن نبود گس یا کارمزد کافی است.
بهعبارت دیگر، تراکنش هزینهای از جنس گس دارد که وقتی در قیمت گس (gas price) ضرب میشود مقدار بهدستآمده بر اساس ارز اصلی شبکه (در این شرایط اتر) است. اگر این مقدار بیشتر از مقداری است که شما در کیف پول خود دارید تراکنش انجام نمیشود.
عوامل تاثیرگذار در لغو تراکنش
انجام نشدن تراکنش به دلایل مختلفی ممکن است رخ دهد اما یکی از مهمترین جزئیات تراکنش بلاک چین که باید در نظر بگیرید، نوع تراکنشی است که میخواهید انجام دهید. ضرب کردن یا Mint یک NFT (توکن بیهمتا) در شرایط اوج ترافیک شبکه هزینه زیادی دارد. اگر قصد دارید یک تراکنش جدید یا آزمایشی انجام دهید بهتر است قبل از اینکه هزینههای واقعی شبکه را بپردازید این تراکنش را در یک شبکه آزمایشی امتحان کنید.
یکی دیگر از مشکلات این است که کاربران از سمت دیگر زیادهروی کنند. در این شرایط کاربر برای اینکه تا جای ممکن صرفهجویی کند مقدار گس را بهصورت دستی تغییر میدهد. این مقدار آنقدر کم است که تراکنش توسط هیچکدام از گرهها انتخاب نشده و در هیچ بلوکی قرار نمیگیرد.
در این حالت تراکنش برای چند روز در حالت انتظار قرار میگیرد تا جایی که قدیمی شده و سپس برگردانده میشود. منظور این است که شبکه طوری با این تراکنش برخورد میکند که گویا هرگز اتفاق نیفتاده است و سپس باطل میشود.
به توکنهای خود توجه داشته باشید
اگر مدل ذهنی شما از تراکنش بر این تصور استوار است که مبالغ از کیف پولی به کیف پول مقصد ارسال میشوند، لازم نیست آن را تغییر دهید چرا که در بسیاری از موارد تجربه روزمره شما مشابه همین تصور است و متخصصان تجربه کاربری (UX) در وب 3 (Web 3) تلاش میکنند تا جای ممکن تجربه شما بدون مشکل و بینیاز به توجه به زیرساختها شکل گیرد. با این حال در شرایطی که اوضاع پیچیده میشود دفتر کل و روش کار آن را در ذهن خود داشته باشید.
نتیجهگیری جزئیات تراکنش بلاک چین
در این مقاله درباره جزئیات تراکنش بلاک چین توضیح داده شد و بررسی کردیم که یک تراکنش به چه صورت انجام میشود. تراکنش شامل ارسال دارایی دیجیتال از یک آدرس به آدرس دیگر است که پس از تأیید، موجودی دو آدرس در دفتر کل توزیعشده تغییر میکند. ممکن است در انجام تراکنش مشکل ایجاد شود به همین دلیل لازم است به نکاتی که توضیح داده شد توجه داشته باشید.