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