استاندارد ERC4337 اتریوم که حساب هوشمند (Smart Account) یا انتزاع اکانت (Account Abstraction) نیز نام دارد، قابلیت غیر متمرکز جدیدی برای کیف پول های اتریومی محسوب میشود. البته به گفته توسعهدهندگان این ویژگی همچنان نیاز به بهبود دارد.
انتزاع حساب در استاندارد ERC4337 چیست؟
استاندارد ERC-4337 که حساب هوشمند یا اسمارت اکانت (Smart Account) و همچنین انتزاع حساب (Account Abstraction) نیز نام دارد، در تاریخ 1 مارس 2023 (۱۰ اسفند ۱۴۰۱) به شبکه اتریوم اضافه شد.
با اینکه در حال حاضر والت قرارداد هوشمند وجود دارد، اما این نوع کیف پولها دارای اجزای متمرکز هستند. استاندارد ERC4337 این وضعیت را با معرفی شبکه توزیعشده غیرمتمرکزی مجهز به باندلرها (Bundler) و پِیمَسترها (Paymaster) تغییر داده است که در ادامه این مطلب به نحوه کار آنها میپردازیم.
دقت داشته باشید که حساب با کیف پول ارز دیجیتال یکی نیست. حساب، جفت کلید مخصوص یک حساب اتریومی تحت مالکیت کاربر است، اما والت صرفا رابط کاربری یا اپلیکیشنی است که اجازه تعامل با حساب اتریوم را به شما میدهد. در ادامه این مطلب بیشتر به این مفاهیم خواهیم پرداخت.
انواع حسابهای اتریوم
«حساب اتریوم» یک موجودیت دارای رمز ارز اتر و قادر به ارسال تراکنشها روی این شبکه است. حسابها میتوانند توسط کاربر کنترل شده یا بهصورت قرارداد هوشمند پیادهسازی شوند.
در شبکه اتریوم شما میتوانید دو نوع حساب مختلف برای نگهداری رمز ارزها ایجاد کنید:
- حساب مالکیت خارجی (External Owned Account) یا EOA
- حساب قرارداد (Contract Account) یا CA
پیش از پرداختن به نحوه کار هر نوع حساب، اجازه دهید ابتدا به بررسی ویژگیهای یک حساب اتریومی بپردازیم. در حالت کلی، حسابهای اتریوم دارای 4 بخش هستند:
- نانس (Nonce): یک شمارشگر که تعداد تراکنشهای ارسالی از یک حساب مالکیت خارجی یا تعداد قراردادهای ساختهشده توسط یک حساب قرارداد را مشخص میکند. تنها یک تراکنش دارای یک نانس مشخص برای هر حساب قابل اجراست که از حملات تکراری نظیر دابل اسپندینگ که باعث انتشار و اجرای چندین و چندباره تراکنشهای امضاشده در شبکه میشود، جلوگیری میکند.
- موجودی (Balance): تعداد وی (Wei)های متعلق به آدرس. وی واحد شمارش اتر است و در هر اتر 1e+18 وی وجود دارد.
- کد هش (CodeHash): هش به کدهای یک حساب، چه هوشمند و انتزاعی در استاندارد ERC4337 چه عادی، روی ماشین مجازی اتریوم (EVM) اطلاق میشود. حسابهای قرارداد دارای تکه کدهای برنامهنویسیشدهای هستند که میتوانند عملیات متفاوتی را اجرا کنند. این کدهای EVM در صورت دریافت یک فراخوان پیام توسط حساب اجرا میشوند. این کدها برخلاف دیگر قسمتهای مربوط به حساب قابل تغییر نیستند و تکه کدها درون یک پایگاه داده وضعیت تحت هشهای مربوطه جهت بازیابی در مواقع لزوم نگهداری میشوند. این مقدار هش تحت عنوان CodeHash شناخته میشود. بخش CodeHash برای حسابهای مالکیت خارجی، هش مربوط به یک رشته خالی و تهی است.
- ریشه ذخیرهسازی (StorageRoot): این ریشه که گاهی اوقات به آن هش ذخیرهسازی نیز میگویند، یک هش 256 بیتی از نودهای ریشه درخت مرکل پاتریشیا (Merkle Patricia) است. این ریشه، محتواهای ذخیرهسازی حساب که بهعنوان یک نگاشت از هش 256 بیتی الگوریتم هشینگ Keccak محسوب میشوند را کدگذاری میکند. این درخت هش محتوای ذخیرهسازی مربوط به حساب را کدگذاری کرده و بهصورت پیشفرض خالی است. اگر با نحو کار الگوی هشینگ در اتریوم آشنایی ندارید، پیشنهاد میکنیم مطلب الگوریتم Ethash را مطالعه فرمایید.
شباهت و تفاوت حسابهای EOA با CA
هر دوی این حسابها دارای قابلیتهای زیر هستند:
- دریافت، نگهداری و ارسال ETH و دیگر توکنها هنگام خرید و فروش اتریوم
- تعامل با قراردادهای هوشمند
از جمله ویژگیهای متمایز حسابهای EOA عبارتند از:
- ساخت حساب بدون صرف هزینه
- دارای قابلیت آغاز تراکنشها
- امکان تعامل بین حسابهای مالکیت خارجی از طریق ETH یا دیگر توکنهای اتریومی
- تشکیلشده از یک جفت کلید رمزنگاری خصوصی و عمومی که فعالیت حساب را کنترل میکنند.
از تفاوتهای حساب CA نیز شامل موارد زیر است:
- ساخت حساب بهدلیل استفاده از حافظه شبکه هزینهبر است.
- تنها قادر به ارسال تراکنشهای منطبق بر تراکنش دریافتی است.
- تراکنشهای یک حساب خارجی به یک حساب قرارداد کدی را فعال میکنند که میتواند فعالیتهای مختلفی نظیر انتقال توکنها یا حتی ساخت یک حساب جدید را انجام دهد.
- حسابهای قرارداد کلید خصوصی ندارند و در عوض، توسط منطق کدهای قرارداد هوشمند کنترل میشوند.
حالا انتزاع حساب یا همان اکانت هوشمند در استاندارد ERC4337 اتریوم از ترکیب این دو نوع اکانت ساخته میشود که در ادامه، به بررسی نحوه کار هر کدام میپردازیم.
نحوه کار حساب EOA اتریوم
حساب مالکیت خارجی که اکثر کاربران از آن استفاده میکنند، در واقع همان حسابهای غیر حضانتی هستند که توسط کیف پولهایی مانند متامسک یا والت حضانتی صرافیها نظیر کوین بیس امکان ساخت آنها وجود دارد.
یک حساب EOA از دو جفت کلید رمزنگاری بهنام کلید خصوصی و عمومی تشکیل شده است. این کلیدها به اثبات امضای حقیقی یک تراکنش توسط فرستنده و جلوگیری از جعل آن کمک میکنند. کلید خصوصی چیزی است که شما از آن برای امضای تراکنش استفاده میکنید، بنابراین اجازه حضانت نسبت به وجوه درون حساب را به شما میدهد.
نکته اینجاست که شما واقعا خود رمز ارزها را نگهداری نمیکنید، بلکه کلیدهای خصوصی مربوط به آنها در درست دارید و وجوه شما همیشه روی دفتر کل بلاک چین مربوطه، در اینجا اتریوم، نگهداری میشوند. بنابراین، این ویژگی بهدلیل نیاز به تایید همیشگی تراکنش توسط فرستنده، به جلوگیری از انتشار جعلی تراکنشها کمک میکند.
مثلا اگر علی خواهان ارسال رمز ارز اتر از حساب خود به حساب محمد باشد، علی باید یک درخواست تراکنش را ایجاد کرده و آن را جهت تایید به شبکه ارسال کند. استفاده اتریوم از رمزنگاری کلید خصوصی به علی کمک میکند تا بتواند آغاز درخواست تراکنش از سوی خودش را اثبات کند. بدون وجود مکانیزمهای رمزنگاری، یک فرد خاطی مثلا بهنام آوا میتواند صرفا یک درخواست شبیه به چیزی مانند “send 5 ETH from Ali’s account yo Ava’s account” را در شبکه پخش کرده و هیچ کس هم قادر به اعتبارسنجی اینکه این درخواست از سوی خود علی ارسال نشده است، نخواهد بود.
حساب هوشمند در استاندارد انتزاع ERC4337 یک گام مجزا و اضافی را به جریان تراکنش در حساب مالکیت خارجی اتریوم اضافه کرده که باعث تمایز آن شده است.
ساخت اکانت EOA
هنگام ساخت یک حساب EOA، اکثر شبکهها یک کلید خصوصی تصادفی تولید میکنند. کلید خصوصی از 64 کاراکتر هگز (هگزادسیمال) ساخته میشود که امکان رمزگذاری آن با یک پسورد وجود دارد. مثلا:
fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f
کلید عمومی نیز با استفاده از الگوریتم امضای دیجیتال منحنی بیضوی از کلید خصوصی تولید میشود. در این حالت، شما با گرفتن 20 بایت آخر هش Keccak-256 یک کلید عمومی و اضافه کردن 0x به ابتدای آن، یک آدرس عمومی برای حساب خود خواهید داشت.
نکته مهم این است که امکان تولید کلیدهای عمومی از یک کلید خصوصی وجود دارد، اما نمیتوان از روی کلیدهای عمومی به کلید خصوصی پی برد. این یعنی نگهداری امن از پرایوت کی اهمیت بسیار بالایی دارد. برای امضای پیغامها و تراکنشها که خروجی آنها یک امضاست نیز به کلید خصوصی نیاز دارید. دیگر افراد میتوانند از این امضاء برای پی بردن به کلید عمومی استفاده کنند که نویسنده پیغام مورد نظر را مشخص میکند.
نحوه کار حساب CA اتریوم
حسابهای قرارداد بهجای کلید خصوصی توسط کدها کنترل میشوند، بنابراین خودشان قادر به آغاز تراکنشها نیستند. این نوع حسابها نیز یک آدرس 42 کاراکتر هگز دارند. مثلا:
0x06012c8cf97bead5deae237070f9587f8e7a266d
آدرس قرارداد عموما زمانی تولید میشود که قراردادی روی شبکه اتریوم مستقر شود. این آدرس از روی آدرس سازنده و تعداد تراکنشهای ارسالی از آن آدرس (همان نانس) ساخته میشود.
حالا مهمترین مشکل حسابهای EOA مربوط به خطای انسانی است؛ در صورتی که کاربری کلیدهای خصوصی خودش را گم کند، هیچ راهی برای بازیابی ارزهای متصل به آن وجود ندارد. بنابراین انتزاع حساب هوشمند در استاندارد ERC4337 اتریوم با ترکیب EOA و CA این مشکل را رفع و مکانیزمهای درون نهادهایی را ایجاد کرده است که اجازه دسترسی به رمز ارزها را به کاربران میدهد.
حساب هوشمند اتریوم چگونه کار میکند؟
مت کاتلر (Matt Cutler)، همبنیانگذار و مدیرعامل شرکت بلاکنیتیو (Blocknative)، یکی از تامینکنندگان زیرساخت اتریوم، گفته تغییرات کوچک اما قابل توجهی در خصوص شبکه اتریوم صورت گرفته است که یکی از آنها، «لایه مقصود کاربرد (User Intent Layer)» نام دارد.
به گفته آقای کاتلر، امروزه یک تراکنش اتریوم دارای چندین گام مجزا به شکل زیر است:
حالا در حسابهای EOA، شما برای ارسال مثلا یک توکن غیر مثلی (NFT) به کاربر دیگر، تراکنش مربوطه را با کلید خصوصی خود امضا میکنید. سپس این تراکنش به ممپول عمومی، استخر حافظه که تراکنشها پیش از قرار گرفتن در بلاکها توسط ماینرها یا اعتبارسنجها در آن جمع میشوند، فرستاده میشود که طبق تصویر بالا، یک “Builder” آن را در یک «بلاک سودده» قرار میدهد. از اینجا، این بلاک توسط یک “Validator” که نهایتا آن را در شبکه پخش میکند، معرفی شده و باعث تکمیل تراکنش میشود.
حالا بر اساس استاندارد ERC4337، «لایه مقصود کاربر» پیش از مرحله EOA به شبکه معرفی شده است:
این لایه اضافی اجازه اجرای تراکنشهای پیچیدهتر را در یک گام واحد به کاربران میدهد. برای عملی شدن این کار، انتزاع حساب در استاندارد ERC-4337 اتریوم یک «آلت ممپول یا همان ممپول جایگزین (گام Alt-Mempool در تصویر)» و شبکهای از باندلرهای تراکنش (یا همان جمعآوریکنندگان تراکنشهای سودآور) را بههمراه روشی جدید جهت کسب کارمزد تراکنشها معرفی کرده است.
باندلر و پیمستر در انتزاع حساب استاندارد ECR4337 اتریوم
باندلر (Bundler) یک نود یا گره (Node) است که کاری شبیه به بیلدر (Builder) بلاک در تراکنش اتریوم را انجام میدهد. در این روش جدید، یک باندلر بهجای ساماندهی تراکنشهای امضاشده از ممپول عمومی به درون یک بلاک سودده، چیزی بهنام “User Operations” یا “UserOps” را از آلت ممپول گرفته و سودآورترین بسته از تراکنشها را میسازد که نهایتا بهعنوان یک تراکنش واحد امضاء و به شبکه اضافه میشود.
این عملیات بخشی از لایه جدید اضافه شده به تراکنشهاست که ساخت حساب هوشمند یا همان انتزاع اکانت اتریوم را ممکن میکند. در آخر نیز باندلرها برای جبران خدمات خود توسط کارمزد گس فعالیت UserOp که همان پیمستر (PayMaster) نام دارد، پاداشدهی میشوند.
به گفته آقای کاتلر، با اینکه از نظر تئوری همه افراد قابلیت تبدیل شدن به یک باندلر را دارند، اما در واقعیت موفقیت در آن یک بحث دیگر است. به گفته وی، مشابه بیلدرها، باندلرها نیز «فعالین متخصصی» هستند که از «تیمهای توسعه حرفهای دارای منابع محاسباتی، حافظه و زیرساخت شبکه قابل توجه» تشکیل شدهاند:
استاندارد ERC4337 تراستلس و پرمیشنلس است. بنابراین اگر از نظر فنی مهارت کامل دارید، میتوانید باندلر خودتان را اجرا کنید. حالا چالش اینجاست که فرآیند باندل کردن (جمعآوری تراکنشهای سودده) یک بازار رقابتی است. بنابراین برای حضور در این صنعت باید با تیمهای حرفهای که شدیدا روی باندلرهای تخصصی سرمایه گذاری کردهاند، رقابت کنید.
باندلرها یک نوع ابزار نیستند که انتظار چاپ پول بدون نظارت بر آنها را داشته باشید. باندلر بودن مثلا نسبت به ولیدیتور بودن از نظر فنی بسیار تخصصیتر است.
به گفته آقای کاتلر، در حال حاضر مخازن کدهای باندلر متن باز متعددی وجود دارد. با این وجود، بسیاری از افراد نسبت به تاثیر استاندارد ERC4337 روی کارمزد گس اتریوم شبهاتی داشته و از افزایش آن بهدلیل پیچدگی تراکنشهای مربوط به معرفی لایه مقصود کاربر در انتزاع حساب های اتریوم نگران هستند.
به گفته آقای کاتلر:
با اینکه هنوز زود است، اما از نظر من بهطور متوسط کارمزدهای گس تغییر آنچنانی نخواهند داشت. اگر ERC-4337 تاثیری هم داشته باشد، اندازه آن، چه در جهت افزایش چه کاهش، ناچیز خواهد بود. ما انتظار اینکه کارمزدها بهیکباره صفر یا 100 برابر شوند را نداریم.
سخن پایانی
استاندارد ERC4337 که حساب هوشمند یا انتزاع اکانت نیز نام دارد، قابلیت جدیدی برای غیر متمرکز سازی کیف پول های اتریومی است. این ویژگی همچنان نیاز به توسعه دارد و به عقیده برخی از افراد تاثیر زیادی بر کارمزدهای گس این شبکه نخواهد داشت. باید منتطر ماند و دید با ادامه استفاده از این استاندارد جهت انجام تراکنشهای پیچیدهتر، چه اتفاقی برای بلاک چین اتریوم خواهد افتاد.
تهیه شده در بیت 24