فهرست مطالب
حساب انتزاعی یا همان Account abstraction قابلیتی است که دنیای ارزهای دیجیتال و بلاکچین را به یک پارادایم جدید تبدیل میکند که در آن میتوان یک اکانت را مطابق با نیازهای شخصی طراحی کرد. وضعیت فعلی شبکه بلاکچین به گونهای است که کاربران تنها با یک اشتباه کوچک میتوانند تمام اطلاعات خود را از دست بدهند. انتزاع حساب به کاربران این امکان را میدهد تا یک شبکه امنیتی قدرتمند ساخته و با این کار احتمال از دست رفتن اطلاعات امنیتی و یا هک شدن را به حداقل ممکن برسانند.
به عنوان مثال شبکه اتریوم دو نوع حساب تحت عنوان مالکیت خارجی (EOA) و حسابهای قراردادی (CA) دارد. EOA حسابهایی هستند که به کاربران عادی تعلق دارند، در حالی که CAها متعلق به پروتکلهای DeFi و DApps میباشند. کاربرانی که از حسابهای EOA استفاده میکنند، برای اینکه بتوانند مالکیت خود بر این اکانتها را اثبات کنند نیاز به کلیدهای خصوصی دارند که با فرایند Account abstraction این کار انجام میشود. در گذشته به دلیل عدم وجود این پروتکل امنیتی، مبالغ و اطلاعات زیادی از حسابها سرقت میشد و یا از بین میرفت.
نگاهی به تاریخچه استفاده از حساب انتزاعی
حساب انتزاعی در ابتدا با عنوان EIP-86 در سال 2017 میلادی برای پیادهسازی ” انتزاع مبدا و امضای تراکنش” پیشنهاد شد. اما منشا اصلی این ایده به اوایل سال 2016 باز میگردد، یعنی جایی که پیشنهاد شد به جای داشتن یک پروتکل داخلی مکانیزمی که در آن ECDSA و طرح پیشفرض nonce به عنوان تنها مسیر استاندارد برای مسائل امنیتی حساب کاربری مورد استفاده قرار بگیرند، به سراغ مدلی برویم که در بلندمدت تمامی حسابهای کاربری قراردادی خواهند بود. این حسابهای قراردادی میتوانند برای پرداخت گس مورد استفاده قرار بگیرند و از طرفی کاربران هم میتوانند به صورت آزادانه یک مدل امنیتی برای خود تعریف کنند.
حساب انتزاعی چگونه عمل میکند
حساب انتزاعی با تبدیل حسابهای کاربری به قراردادهای هوشمند، امضاکننده را از حساب جدا میکند. حسابهای کاربری ساز و کار ویژهای دارند که مشخص میکنند یک تراکنش معتبر چگونه انجام میشود. به کمک حساب انتزاعی میتوان تنها با تغییر کد قراردادهای هوشمند، هر هفته امضاکننده حساب را تغییر داد. همچنین به کمک Account abstraction میتوانیم عملکرد کیف پول دیجیتال خود را نیز به گونهای تغییر بدهیم که از بیش از یک کلید خصوصی برای مجوز تراکنشها استفاده کند. کاربران میتوانند به راحتی طرح امضای تراکنشها را از ECDSA به هر شکلی که میخواهند تغییر دهند.
کاربران چطور میتوانند مالکیت حساب کاربری خود را ثابت کنند
هر حساب کاربری در شبکه اتریوم با یک آیتم رمزنگاری شده به نام فرد امضاکننده مرتبط است. در این ساز و کار دو نوع کلید امنیتی به نام کلید خصوصی و کلید عمومی داریم. کلید خصوصی، میتواند برای امضای پیامهای دیجیتال مورد استفاده قرار بگیرد و کلید عمومی هم میتواند هر شخصی را قادر سازد تا تایید کند که امضای معینی توسط کلید خصوصی مربوطه به آن امضا شده است.
تمام الگوریتمهای ریاضی که در رمزنگاریها وجود دارند، به کاربران این تضمین را میدهند که هیچ راهی برای به دست آوردن کلید خصوصی وجود نخواهد داشت. در صورتی هم که پیام امضا کاربری با همان کلید خصوصی به دست کاربر دیگری بیفتد، تنها کاربر اول میتواند امضای دیجیتالی حساب را داشته باشد. از طرفی روشهای مختلفی برای تولید امضاهای رمزنگاری بر اساس جفت کلیدها وجود دارد. مثلا اتریوم از یک طرح امضای خاص به نام ECDSA بر روی یک منحنی بیضوی مخصوص به نام Secp256k1 استفاده میکند.
روشهای استفاده از حساب انتزاعی به گفته بنیانگذاران اتریوم
روشهای مختلفی برای استفاده از حساب انتزاعی همانطور که ویتالیک بوترین، از بناینگذاران اتریوم تشریح کرده است، وجود دارد. مثلا Lazy full abstraction تنها یک نوع حساب قراردادی است. در این روش یک نوع تراکنش وجود که فیلدهایی مانند gas, addr, data دارد. انجام تراکنشها در این روش شامل پیامی موسوم به msg.sender است. در این روش از کاربران انتظار میرود وجوه خود را در حسابهای قرارداد ذخیره کنند، یعنی جایی که کد قرارداد دادههای ارائه شده به عنوان رمزگذاری از nonce, signature, gasprice, value, data تفسیر میشود.
از مزایای این روش میتوانیم به سادهسازی اجرای پروتکل اشاره کنیم. این روش به کدهای نسبتا پیچیدهای در داخل هر حساب کاربری برای تایید nonce، امضا، و همچنین پرداخت گس نیاز دارد. از طرفی Lazy full abstraction، به کدهای پیچیدهای در ماینر نیاز دارد تا مشخص شود که چه تراکنشهایی برای پرداخت گس تضمین شده است. در نهایت این روش قابلیتی را برای شما فراهم میکند که با حسابهایی که به روشی غیراستاندارد ساخته شدهاند، با هش یکسان، چندین بار تراکنش داشته باشید.
حذف غیرانتزاعی
درست مانند روش قبلی است. تنها با این تفاوت که انجام تراکنش در آن نیاز به یک فلید nonce دارد. در روش حذف غیرانتزاعی یک قاعده مهم وجود دارد. و آن هم این است که nonceیک تراکنش باید با nonce حساب کاربری برابر و یکسان باشد. همچنین nonce میتواند با هر بار تراکنش موفق، افزایش پیدا کند. این روش امکان ظاهر شدن یک تراکنش در چند نقطه را از بین میبرد.
اضافه کردن کد BREAKPOINT
در روش اضافه کردن کد BREAKPOINT تنها لازم است که یک کد BREAKPOINT به تراکنش اضافه شود. کد BREAKPOINT این قابلیت را دارد که اگر تراکنش بعد از یک نقطه شکست پرتاب شود، مجددا و تنها به نقطه شکست بازگشت داشته باشد. این روش تشخیص اینکه آیا یک تراکنش برای پس پرداخت میشود یا خیر، را برای ماینر بسیار آسانتر میکند.
چرا حساب انتزاعی در شبکه اتریوم تا این حد اهمیت دارد
حساب انتزاعی، کیف پولهای چندمنظور را قادر میسازد تا بتوانند منطقهای پیچیدهتری را اجرایی کنند. به عنوان مثال میتوانیم به تایید امضا، پرداخت گس و همچنین حفاظت از پروتکل اصلی و انتقال آن به EVM اشاره کنیم. با ذکر یک مثالی این موضوع را برای شما روشنتر میکنیم تا ببینید که انتزاع حساب چگونه میتواند شرایط را به صورت کلی تغییر دهد.
فرض کنید که شما تمام توکنهای خود را در یک کیف پول جدید ادغام کردهاید. در این بین ممکن است که به صورت تصادفی تمام اتریومهای خود را نیز به کیف پول جدید ارسال کرده باشید. در این شرایط بدون وجود هیچگونه اتریومی برای پرداخت گس نمیتوانید هیچ تراکنش موفقی داشته باشید و همچنین نمیتوانید توکنهای باقیمانده را نیز انتقال دهید.
خوشبختانه در این شرایط، شما میتوانید به سادگی مقداری اتریوم را به آدرس قبلی برگردانید. با این وجود، در بعضی از موقعیتها ممکن است نتوانیم به راحتی این اشتباه را جبران کنیم. حساب انتزاعی در چنین شرایطی میتواند این امکان را در اختیار شما قرار بدهد تا با استفاده از توکنهای باقیمانده مشابه با بعضی از کیف پولهای قراردادهای هوشمند، هزینه گس را به راحتی پرداخت کنید.
حساب انتزاعی، امکانات جدیدی را برای شما فراهم میکند
بسیاری از شبکهها یا برنامههایی که توسط شبکه اتریوم طراحی و ساخته شدهاند، به رلههایی نیاز دارند تا با پرداخت هزینه، تراکنشهای کاربران را بر روی بلاکچین ارسال کنند. با این وجود، یک کیف پول یا حساب قراردادی پیچیده، این پتانسیل را دارد که به راحتی رلهها را منسوخ کند.
به عنوان مثال تورنادو کش را در نظر بگیرید. به جای استفاده از رلهها، کاربری که وجوه خود را با یک حساب انتزاعی ترکیب میکند، میتواند با استفاده از یک کد عملیاتی به نام PAYGAS، هزینه مربوط به برداشت خود را بپردازد. زمانی که شبکه اتریوم به عنوان رلهکننده شما عمل کند، دیگر نیازی به رلهکنندهها نداریم. با وجود حساب انتزاعی، نیازی هم به پرداخت هزینه اضافی بر اساس درصد مازاد گس نداریم.
حساب انتزاعی چه کاربردهایی دارد
حساب انتزاعی به صورت کلی در مبحث کیف پولهای دیجیتال، کیف پولهای EOA و قراردادها و همچنین کیف پولهای EOA، کاربردهای وسیعی دارد. کیف پولهای قراردادی به کیف پولهایی گفته میشود که با استفاده از قراردادهای هوشمند به صورت زنجیرهای پیادهسازی میشوند. در صورت وجود هرگونه اشکال در کدگذاری قراردادهای هوشمند، کیف پولهای قراردادای در معرض خطر امنیتی قرار خواهند گرفت. این خطرات را میتوان با تستهای امنیتی و بررسیهای انجام شده توسط ارائهدهنده کیف پول به حداقل رساند.
با این وجود، در کیف پولهای EOA، تهدید امنیتی کاملا متوجه کاربر کیف پول دیجیتال است. پیادهسازی حساب انتزاعی به EOAها اجازه میدهد تا به عنوان کیف پول قراردادهای هوشمند رفتار کنند. از جمله کیف پولهای قراردادی هوشمند میتوانیم به Argent، Dapper، Gnosis Safe و Monolith اشاره کنیم.
تراکنش متا در کیف پولهای EOA
یک کاربر بلاکچین اتریم به یک کیف پول EOA به همراه گس نیاز دارد تا با آنها ارتباط برقرار کند و یا به ارائهدهنده کیف پول برای تسهیل تراکنشهای متا با استفاده از رلههای ارائهدهنده یا شبکههای رله شخص ثالث اطمینان کند. در روش اول که روشی متکی بر اتریوم است، به طور معمول در صرافیهای متمرکز بعد از KYC خریداری میشود.
روش دوم نیز به دنبال به حدقال رساندن اصطکاک UX با انتقال مسئولیت کاربر به رلهها به کمک هزینهای است که توسط ارائهدهنده کیف پول داخلی و یا خارج از زنجیره پرداخت میشود. کاربر خارج از زنجیره مت تراکنش یک تراکنش است که حاوی پیامی به همراه برخی از دادهها است که توسط شخصی که میخواهد تراکنش را اجرا کند، امضا میشود.
رفع ایرادات معماریهای مبتنی بر رله به کمک حساب انتزاعی
معماریهای مبتنی بر رله را میتوانیم به عنوان واسطههای متمرکز با ظرفیت سرکوب معاملات در نظر بگیریم. این رلهها از هم از نظر فنی و هم از نظر اقتصادی ناکارآمد هستند. حساب انتزاعی به کیف پولهایی که ساز و کار آنها مبتنی بر قراردادهای هوشمند است اجازه میدهد تا متا تراکنشهای بدون گس را از کاربران بپذیریند و هزینه گس خود را بدون اتکا به شبکه رله به راحتی بپردازند .قابل ذکر است که این قابلیت لایه پایه همچنین بدون از دست دادن ضمانتهای غیرمتمرکز اتریوم، میزان UX را در چنین پلتفرمهایی به طرز چشمگیری افزایش میدهد.
تراکنشهای حمایت شده
معاملاتی که شرکت و یا هر یک از شرکتهای تابعه را شامل میشود، تراکنشهای حمایت شده نام دارند. بعضی از موارد استفاده این تراکنشها را در ادامه بررسی خواهیم کرد. تراکنشهای حمایت شده که به واسطه حساب انتزاعی ایجاد میشوند به توسعهدهندگان برنامهها برای پرداخت هزینه از طرف کاربران، اختیار میدهد. همچنین این قابلیت به کاربران این امکان را میدهد تا هزینههای خود را در توکنهای ERC20 بپردازند. آن هم با استفاده از قرارداید که به عنوان یک اسطه برای جمعآوری ERC20s و پرداخت به اتریوم عمل میکند.
ارتباط میان سرویس paymaster با حساب انتزاعی
سرویس paymaster تایید میکند که امضای حامی در paymaster data گنجانده شده است که نشان میدهد حامی مالی آماده پرداخت هزینه برای user options است. در صورتی که امضا معتبر باشد، پرداختکننده میپذیرید و هزینههای مربوط به user options از سهم حامی کسر میشود. از طرفی paymaster بررسی میکند که آیا کیف پول فرستنده، موجودی ERC20 کافی برای پرداخت هزینههای مربوط به UserOperation را دارد یا خیر.
رفع مشکلات مربوط به حریم خصوصی قراردادهای تورنادو کش
سیاستهای حریم خصوصی تورنادو کش زمانی اجرایی میشود که کاربران برداشتی را انجام دهند. تورنادو کش میتواند ثابت کند که این مبلغ از یک سپرده منحصربهفرد است، اما در واقع هیچکسی به جز کاربر نمیداند که از کدام سپرده، برداشت صورت گرفته است. اما حساب انتزاعی چه راهکاری برای حل مشکلات مربوط به حریم خصوصی تورنادو کش دارد. کاربر میتواند یک تراکش AA را با هدف قرارداد تورنادو کش ارسال کند. این کار به برداشتکننده اجازه میدهد تا مستقیما از سکههای ارسال شده به آدرس برداشت خود، هزینه گس را پرداخت نماید.
سخن آخر
حساب انتزاعی امکانات زیادی را در اختیار کاربران قرار میدهد. با حساب انتزاعی، شبکه ارزهای دیجیتال ارتقای قابل توجهی از نظر فنی خواهد داشت. از طرفی کاربران بیشتری هم تمایل پیدا میکنند که به سراغ رمزارز و بلاکچین بروند. زیرا دیگر از بابت مسائل امنیتی، نگرانی وجود نخواهد داشت. به عنوان مثال کیف پول دیجیتال Argent یکی از کیف پولهای رمزنگاری شده پیشرو در استفاده از حساب انتزاعی است که از این فناوری کمک میگیرد.
جنبه اساسی در مالکیت پروتکل اتریوم این است که تنها حسابهای دارای مالکیت خارجی میتوانند هزینههای گس را پرداخت نمایند و اجرای تراکنشها را آغاز کنند. زیرا حسابهای قراردادی نمیتوانند این کار را انجام دهند. Account Abstraction به حسابهای قراردادی اجازه میدهد تا اعتبار جدیدی از نوع تراکنشهای AA داشته باشند.