در این بخش از مقاله قرار است به طور مفید الگو Pull over Push در کریپتو را مورد بررسی قرار دهیم و به شما بگوییم که این الگو چیست و چه کاربردی دارد. این که خیلی با الگوی مورد نظر آشنایی ندارید، چیز غیر طبیعی نیست زیرا به غیر از شما بسیاری دیگر از سرمایه گذاران حرفهای در زمینه ارز دیجیتال نیز به خوبی این الگو را نمیشناسند.
بنابراین اگر میخواهید اطلاعات جامعی در مورد Pull over Push کسب نمایید و در سرمایه گذاری ارزهای دیجیتال نیز موفقیتهای بیشتری به دست آورید، توصیه میکنیم تا انتهای مقاله همراه ما بمانید و موارد مهمی که ذکر میشود را هم نادیده نگیرید.
آشنایی با ارز دیجیتال اتریوم
قبل از معرفی الگو Pull over Push بهتر است به خوبی با ارز دیجیتال اتریوم آشنایی شوید و بدانید که این ارز چیست و چه ویژگیهایی دارد. اتریوم در واقع یک شبکه مبتنی بر بلاک چین بوده که اعلب برای اجرای برنامههای غیرمتمرکز و همچنین قراردادهای هوشمند بدون واسطه از آن بهره میگیرند.
این پلتفرم دارای مرورگر، سیستم پرداخت و برنامه نویسی مخصوص به خود بوده و هیچ کنترل کننده واحد یا مرکزی هم ندارد. جالب است بدانید در این ارز دیجیتال خبری از ثبت دادهها بر روی یک سرور مرکزی به شکل محرمانه نیست و تمام اطلاعات موجود در شبکه به طور کامل بین گره یا نودها توزیع میشوند. هر گره نیز یک کپی از تمام دادههای بلاک چین را در اختیار گرفته است.
اتریوم شبکهای کاملاً خود مختار بوده و نحوه معامله آن کار بسیار راحتی است. در واقع هر شخص با ایجاد یک حساب در صرافی امن و مطمئن، میتواند به سادگی این ارز محبوب را معامله نماید. دقت داشته باشید به علت عدم حضور شخص ثالث جهت نظارت و مدیریت بر روی آن، دادههای شبکه تحت هیچ شرایطی قابل حذف یا تغییر نیستند و کوچک ترین تغییر در آن باید به تأیید تمام اعضا برسد.
پخش اطلاعات بین تمام کاربران، امکان هرگونه تقلب را در این سیستم از بین برده و از این رو افراد میتوانند با خیالی آسودهتر به سرمایه گذاری در آن مشغول شوند. همچنین بهتر است بدانید عدم تجمیع دادهها، احتمال سرقت اطلاعات و هک شدن کاربران را بسیار کاهش میدهد.
معرفی الگو Pull over Push
حال که تا حدودی با ارز اتریوم آشنا شدید، بهتر بدانید معمولا ارسال کردن اتر به یک آدرس دیگر در شبکه اتریوم شامل تماس خارجی با نهاد دریافت کننده بوده اما گاهی اوقات ممکن است این تماس به دلایل مختلفی با شکست مواجه شود.
دقت داشته باشید اگر آدرس دریافت کننده اتر در قالب یک قرارداد مشخص باشد، میتواند خیلی راحت اقدام به پیاده سازی نوعی تابع بازگشتی نماید که بعد از فراخوانی نیز امکان ایجاد یک استثنا وجود دارد. یکی دیگر از مهم ترین دلایلی که میتواند موجب خرابی این تماس شود، تمام شدن گس است. تمام شدن گس معمولا زمانی رخ میدهد که در فراخوانی تک تابعی، اکثر تماسهای خارجی صورت نگیرد.
در خصوص الگو Pull over Push بهتر است بدانید زمانی که آدرس مورد نظر از طریق روش انتقال نتواند اتر دریافت کند و جایگاه بالاترین پیشنهاد را نیز از آن خود کند، قرارداد در یک وضعیت غیر قابل حل قرار میگیرد. هر تلاش تازه جهت ارائه پیشنهاد بیش از حد به بالاترین پیشنهاد فعلی نیز ایجاد استثنا و انتقال اتر در خط 10 را به دنبال دارد. از این رو جهت رهبر فعلی، پیشنهاد بسیار غیر ممکن خواهد شد.
حین تلاش برای ارسال کردن اتر به چند گیرنده مختلف با یک فراخوانی تابع، مشکل دیگری هم ممکن است ایجاد شود. یعنی تنها باید یک نمونه از انتقالهای مورد نظر به صورت ناموفق باشد، تا بتوان بدون مشکل اقدام به برگرداندن تمام انتقالهایی کرد که قبلاً اتفاق افتادهاند.
نوعی تکنیک خاص برای این که بتوان خیلی راحت بر این محدودیتها غلبه کرد، وجود دارد که کاربران میتوانند با کمک آن اقدام به ایزوله نمودن هر تماس خارجی کنند و همچنین خطر شکست از قرارداد به کاربر را انتقال دهند. با توجه به این که که نقل و انتقالات به صورت جدا هستند، هیچ انتقال یا منطق قرارداد دیگری نباید به اجرای موفقیت آمیز آن متکی باشد.
دقت داشته باشید با عضویت در پرمیوم تریدینگ میتوانید خیلی راحت تمام دانش و مهارت لازم در خصوص سرمایه گذاری ارزهای دیجیتال و ترید را فراگیرید و به راحتی سود عالی کسب نمایید.
بنابراین اگر علاقمند به یادگیری چیزهای جدید در مورد سرمایه گذاری ارزهای دیجیتال هستید و میخواهید از تازه ترین خبرهای دنیا نیز مطلع باشید، بهتر است در اسرع وقت اقدام به عضویت در آن کنید.
الگو Pull over Push کاربردهای مختلفی دارد که هر کاربر با توجه به نیازهای مختلف خود میتواند از مزایای آن بهره بگیرد.
رایج ترین کاربردهای شناخته شده الگو Pull over Push
از جمله نمونههای محبوب و پرطرفدار استفاده از الگو Pull over Push میتوان قرارداد PullPayment را نام برد. این قرار داد توسط OpenZeppelin انجام شده و الگو در آن به صورت کلی پیاده سازی خواهد شد. پیاده سازی تخصصیتر خیلی راحت میتوان در قرار دادی به نام BlockParty پیدا کرد.
این قرارداد اغلب برای مدیریت سپرده حضور و غیاب جهت رویدادهای رایگان به کار برده میشود و کاربران فقط با حضور داشتن در رویدادی که قبلا اقدام به ثبت نام در آن کردهاند، میتوانند سپرده خود را پس بگیرند. شرکت کنندگان میتوانند بعد از این که صاحب اصلی قرارداد در بیشتر نمونههای برگزار کننده رویداد، حضور داشتن آنها را از طریق تراکنش حاوی آدرس اتریومشان تایید کرد، درخواست خود را جهت انصراف ارسال نمایند.
نتایج استفاده از الگو Pull over Push
استفاده کردن از الگو Pull over Push به طور کلی دارای یکسری مزایا و معایب مختلف بوده که هر کسی بهتر است به خوبی آنها را بشناسد و همچنین نتایج استفاده از این الگو را مورد بررسی قرار دهد. مثلا این الگو جهت کاهش برخی مشکلات که با Solidity حین ارسال کردن اتر ایجاد میشود، بسیار مؤثر بوده و افرادی که اغلب اوقات به صورت همزمان چندین انتقال را انجام میدهند، میتوانند به سادگی از قابلیت الگو بهره ببرند.
در اصل یک انتقال ناموفق منجر به باز گرداندن عملیاتهای موفق نخواهد شد زیرا در این الگو، جدا سازی عملکرد انتقال مستعد مشکل و خطا به وجود آمده است. یکی دیگر از دلایل محبوبیت و استفاده از Pull over Push، اطمینان از دریافت کردن اتر بوده چون تشخیص این موضوع بر عهده کاربر درخواست کننده است.
از جمله معایب یا پیامدهای منفی این الگو نیز میتوان مراحل اضافی مورد نیاز جهت انجام تراکنشها را نام برد. تعامل برقرار کردن با قراردادی خاص که به جای پرداختهای فشاری از کشش بهره میگیرد، کاربران را ملزم مینماید تا تراکنش درخواست کننده برداشت که به نوعی یک تراکنش اضافی بوده را ارسال کند. در نتیجه این امر هزینههای تراکنش بالاتر و همچنین نیازهای گس بیشتر را به دنبال خواهد داشت که موجب آسیب رسیدن به تجربه کاربر میشود.
دقت داشته باشید کاربران کم تجربه نباید با یک قرارداد هوشمند بیش از اندازه تعامل برقرار کنند زیرا امکان دارد در معرض اشتباه قرار بگیرند. بهتر است بیشتر زمانی از الگو Pull over Push استفاده کنید که تمام شرکت کنندگان جهت برداشت وجوه، دارای انگیزه بسیار قوی باشند.
برای مثال در گزارش یکی از صاحبان این قراردادهای هوشمند، بیشتر از 10% کاربران وجوه خود را از قرارداد در 7 روزی که فرصت داشتهاند برداشت نکردهاند. در غیر این صورت امکان دارد کاربران اصلاً از قرارداد استفادهای نکنند و فقط یک رقیب مشخص را در نظر بگیرند.
البته اگر انصراف خیلی ارزشی نداشته باشد و بسیار سخت یا پیچیده باشد میتوانید استفاده از الگوی محبوب Pull over Push را به عنوان نوعی معامله امن و راحت برای کاربران در نظر بگیرید. پیش از اجرای الگوی مورد نظر نیز لازم است قابل مدیریت بودن کاهش تجربه کاربر را به خوبی ارزیابی کنید و مطمئن شوید که برای رد هر نوع مشکل یا آسیب پذیری، استفاده هوشمندانه از این الگو کافی است.
ناگفته نماند که از الگوی نام برده شده میتوان در مدیریت چند انتقال اتر با کمک یک فراخوانی تابع، برداشت راحت اتر و همچنین دوری از ریسک مربوط به انتقال دادن اتر نیز استفاده کرد.
این الگوی محبوب با اعضای مختلفی همکاری میکند.
شرکت کنندگان الگو Pull over Push
لازم است بدانید که این الگو از 3 شرکت کننده تشکیل شده و در آن اول از هر چیزی نهاد مسئول شروع کردن انتقال یا همان صاحب قرارداد، فرآیند را شروع میکند. دومین شرکت کننده قرارداد هوشمند، مسئولیت پیگیری تمام ماندهها را برعهده دارد. سومین شرکت کننده نیز گیرنده بوده که فقط وجوه خود را از طریق تراکنش دریافت نمینماید و به صورت فعالانه درخواست برداشت میکند تا فرآیند مورد نظر را از منطق دیگر پرداخت و همچنین قرارداد جدا نماید.
طریقه پیاده سازی الگو
به طور معمول برای جدا کردن تمام تماسهای خارجی از همدیگر و همچنین منطق قرارداد، این الگو خیلی راحت ریسک مربوط به انتقال اتر را به کاربران انتقال میدهد تا بتوانند مقدار مشخصی را برداشت نماید. در غیر این صورت نیز باید حتما ارسال شود.
توجه داشته باشید از جمله اصلی ترین اجزای این پیاده سازی، نقشه برداری بوده که پیگیری ترازهای معوق کاربران بر عهده آن است. از این رو به جای انجام دادن یک انتقال واقعی اتر از قرارداد به شخص گیرنده، تابعی که میتواند ورودی را به نقشه بیافزاید و واجد شرایط بودن کاربر جهت برداشت مبلغ مشخص را نیز بیان کند، فراخوان خواهد شد.
فراموش نکنید مبلغ مورد نظر زمانی به آدرس موجود اضافه خواهد شد که نقشه قبلاً حاوی یک ورودی جهت این آدرس باشد. کاربر نیز در این صورت مسئول برداشت وجه با صادر کردن یک تراکنش به روش برداشت قرارداد هوشمند بوده که برای به روز رسانی مانده پیش از انتقال اتر، از الگوی تعاملات تأثیرهای چک بهره میگیرد.
برای انجام معاملاتی امن و مطمئن باید حتما از صرافیهای قابل اعتماد همچون صرافی بایننس، کوینکس و... بهره بگیرید. در غیر این صورت ممکن است سرمایه زیادی را از دست بدهید و متحمل ضرر شوید. احراز هویت بایننس نیز کار سختی نیست و هر کسی میتواند به سادگی از طریق طی کردن چند مرحله ساده، این کار را انجام دهد.
نکات مهم در مورد الگو Pull over Push
الگو Pull over Push حافظه یک قرارداد هوشمند که به صورت ارتقاء یافته بوده را به بهترین شکل ممکن حفظ مینماید. با توجه به این که قرارداد قدیمی و قرارداد جدید به صورت جداگانه بر روی بلاک چین مستقر میشوند، فضای ذخیره سازی جمع آوری شده در محله قدیمی خود باقی خواهد ماند.
بهتر است بدانید الگوی تعامل اثرات چک به طور رایج خطر قراردادهای مخربی را کم میکند که در حال تلاش برای به دست گرفتن جریان کنترل بعد از تماس خارجی هستند. این قرارداد در طول فرآیند انتقال اتر جریان کنترل را به یک نهاد خارجی منتقل مینماید.
در صورتی که قرارداد خارجی به شکل مخرب باشد، جریان کنترل مختل خواهد شد و فرستنده به حالت نامطلوب برمیگردد. جهت استفاده از این الگو، باید بدانید که کدام قسمت از عملکردتان آسیب پذیر بوده تا بعد از پیدا کردن منبع احتمالی آسیب پذیری، بتوانید بهتر پاسخ دهید.
انتقال اتر در Solidity با استفاده از روشهای Send ، Transfer و Call قابل انجام بوده و شما میتوانید خیلی راحت با استفاده از هر کدام از این روشها که خواستید، کار انتقال را انجام دهید. این روشها دارای ویژگیهای خاص مربوط به خود هستند و بهره گیری از آنها چندان دشوار نیست.
با این که تولید مقادیر منحصر به فرد و تصادفی در Solidity تا حدودی سخت بوده اما همچنان دارای تقاضای بسیار بالایی است. در واقع آنها به عنوان مهرهای زمانی بلوک منبع تصادفی در شبکه اتریوم به شمار میروند و به دلیل امکان دستکاری شدن توسط ماینرها اغلب خطر آفرین هستند. جهت جلوگیری از این مشکل میتوانید به سادگی از راه حلهای مختلفی همچون Oracle RNG و block-hash PRNG بهره بگیرید.
یکی از اصلی ترین وظایف قراردادهای هوشمند، اطمینان از تصویب الزامات تراکنشها بوده که در صورت عدم موفقیت هر نوع شرط، قرارداد به حالت قبلی خود باز خواهد گشت. Solidity نیز با بهره گیری از مکانیسم مدیریت خطای EVM جهت ایجاد استثنا و برگرداندن قرارداد به حالت کار قبل از استثنا به این امر دست پیدا میکند.
الگو Pull over Push میتواند به شما در رفع مشکلات مختلف در قراردادهای هوشمند بسیار کمک کند.
سخن پایانی
قطعا تا این بخش از مقاله به خوبی با الگو Pull over Push آشنا شدهاید و میدانید که از این الگو چه استفادههایی میتوان داشت. بنابراین اگر به دنبال یک سیگنال ارز دیجیتال قوی میگردید، بهتر است حتما کانال تلگرامی ما را دنبال کنید تا اطلاعات ویژهای در این خصوص به دست آورید. همچنین فراموش نکنید حتی قراردادهای هوشمند حسابرسی شده نیز ممکن است حاوی یکسری اشکالات باشند که تا زمان درگیر نشدن در یک حادثه سایبری، نمیتوان آنها را شناسایی کرد.
معمولا رفع خطاهای کشف شده بعد از راه اندازی قراردادها، کار نسبتا دشوار خواهد بود اما با کمک این الگو، میتوان خیلی راحت یک قرارداد را با مسدود نمودن تماسهای عملکردهای ضروری، متوقف نمود و از مهاجمان نیز تا زمان اصلاح کردن قرارداد هوشمند جلوگیری کرد. پس به جای بهره گرفتن از روشهای نامناسب، بهتر است از الگو Pull over Push برای رفع این مشکل کمک بگیرید.
دیدگاه شما