نوترینو: جنبه روشنتر لایتنینگ
مقاله قبلی ما در مورد کارول، یکی از کاربران آتی لایتنینگ بود. در این مقاله، به زمان حال باز میگردیم، جای که در آن آلیس با نرمافزارهای بیتکوینی زیر سطح استاندارد زندگی میکند. مقاله حاضر به پروتکل نوترینو برای کیفپولهای بیتکوینی و نحوه کار آن پرداخته و ارتباط آن با بلاک چین و تمهیدات به کار گرفته شده برای استفاده از شبکه لایتنینگ در دستگاههای قابل حمل را بررسی میکند.
در دنیای آلیس، تلفنهای هوشمند سالها است که که به طور جهانی به بستر اصلی رایانش بدل شدهاند اما نسل فعلی اپلیکیشنهای بیتکوین تعریفی ندارند. گزینههایی که او امتحان کرده است مشکلات عدیده امنیتی، حریم خصوصی و یا سهولت استفاده داشتهاند.
برخی از برترین کیف پولهای همراه امروز براساس خدمات متمرکزی ساخته شدهاند که مشکلات امنیتی عدیدهای دارند. شخص دانایی گفت: «کلیدهایتان را از دست بدهید، بیتکوینهایتان را از دست دادهاید». خدمات متمرکز همچنین کاربران در معرض خطر لو رفتن اطلاعات قرار میدهند (مثلا سوابق تراکنش). از سوی دیگر خدمات متمرکز سریعتر و آسانتر بوده و برای استفاده کاربران جدیدی که بیتکوین زیادی ندارند مناسب هستند. به عنوان یک بیتکوینی باتجربه و قدیمی، آلیس دوستانی دارد که پول خود را در خدمات متمرکز از دست دادهاند، بنابراین او تصمیم گرفت تا از کیف پولی استفاده کند که کنترل کامل بیتکوینهایش را در اختیار او قرار میدهد.
دیگر گزینه موجود برای کاربرانی مانند آلیس کیف پولهای مبتنی بر تایید پرداخت ساده شده (BIP37) است. کیف پولهای SPV از مشکلات امنیتی فوق رنج نمیبرند اما درگیر مشکلات مربوط به حریم خصوصی هستند. به علاوه، نسل جدید کیف پولهای SPV عموما کندتر و سختتر از مشابهان متمرکز خود هستند. آلیس میانهای با نرمافزارهای کند ندارد و به حریم خصوصی مالی خود اهمیت میدهد، در نتیجه از هیچ یک از کیف پولها راضی نبوده است.
جالب است که شش سال از آخرین پیشنهاد ارائه شده برای بهبود بسترهای همراه میگذرد، در حالی که بیتکوین رشد خارقالعادهای در بهکارگیری و رواج فزایندهای را تجربه کرده است. برای حل مشکلات متعددی که در بالا به آنها اشاره شد (Olaoluwa Osuntokun (roasbeefاز Lightning Labs و الکس اکسلرود (Alex Akselrod)، به همراه جیم پوزن (Jim Posen) (سابقا Coinbase) پروتکل BIP 158 و BIP 157 نوترینو را ارائه دادند.
مزایای نوترینو (Neutrino )
چالش پیش روی اپلیکیشنهای غیرمتمرکز بیتکوین، دریافت سوابق تراکنش جهانی بیتکوین (حدود ۲۰۰ گیگابایت) و استخراج سریع تراکنشهای مربوط به کاربر است. به علاوه، یک اپلیکیشن همراه موفق باید امنیت، حریم خصوصی و تجربه کاربری خوبی را به کاربر ارائه کند. پروتکل نوترینو برای تسهیل دستیابی به این اهداف در دستگاههایی با پردازندههای کممصرف، با فضای ذخیرهسازی و پهنای باند محدود، خاموش و روشن شدن گاه و بیگاه و وضعیت اتصال غیرقابل پیشبینی طراحی شد.
امنیت: همانطور که در بالا به آن اشاره شد، کاربران باتجربه مانند آلیس یا آنهایی که مقادیر بیشتری بیتکوین دارند، عموما ترجیح میدهد تا کنترل کلیدها را خود در اختیار داشته باشند. نوترینو طراحی شده است تا کمک کند اپلیکیشنهایی که کنترل کلیدها را در اختیار کاربر قرار میدهند سریعتر و استفاده از آنها سادهتر و جالبتر باشند. به علاوه، نوترینو شامل تمهیدات امنیتی جدیدی برای حل اطلاعات متناقض۱ تراکنش است که علیالخصوص برای کاربران لایتنینگ مفید خواهد بود.
حریم خصوصی: یک لازمه کلیدی برای نرمافزارهای مالی باید حفاظت از حریم خصوصی کاربر باشد. موجودی حساب و سوابق تراکنش نباید بدون رضایت کاربر افشا شوند. کلاینتهای SPV/BIP37 اطلاعات زیادی از کاربران را درز میدهند که شامل یک فهرست احتمالی از نشانیهای کاربران نیز میگردد، که میتواند برای یافتن سوابق تراکتش مورد استفاده قرار گیرد. خدمات متمرکز به این دادهها دسترسی کاملی دارند و تضمینی نیز در مورد حریم خصوصی ارائه نمیدهند. نوترینو گزینهای بسیار بهتر برای کاربرانی است که تمایل ندارند سوابق مالی کامل آنها در اختیار اشخاص ثالث قرار گیرد.
مقیاسپذیری و غیرمتمرکز بودن: پروتکل نوتریو نیازمند رایانش کمتری از سوی فول نودهای بیتکوین است چرا که غربالهایی که برای کلاینتهای نوترینو ارسال میشوند تنها باید یک بار برای همه کاربران نوترینو محاسبه شوند. در پروتکلهای پیشین SPV/BIP37، فولنودها نتایج متفاوتی را برای هر کاربر کلاینت محاسبه میکردند، که اگر فولنود کلاینتهای موبایلی زیادی داشته باشد میتواند به حجم پردازشی بزرگی تبدیل شود.
مقاومت در برابر سانسور: از آنجایی که کاربران نوترینو میتواند کلیدهای خود را کنترل کرده تراکنشهای خود را انتشار دهند، امیدواریم اپلیکیشنهای مبتنی بر نوترینو، صفات بدون پرمیشن بودن و مقاومت بر برابر سانسور بیتکوین را تقویت کنند.
جزئیات فنی: نوترینو چگونه کار میکند
برای خوانندگانی که بیشتر به بخش فنی موضوع علاقه دارند، در بخش بعدی مروری بر پروتکل نوترینو ارائه شده است. برای اطلاعات حتی مشروحتر، لطفا به BIP157 و BIP158 مراجعه نمایید.
غربالهای GSC: در ردههای بالا، نوترینو مبتنی بر زنجیرهای از غربالها است که هریک متناظر یک بلاک در بلاکچین بیتکوین هستند. این غربالها از کدگذاری گولومب-رایس (Golomb-Rice) برای نمایش نشانیهای موجود در یک بلاک استفاده میکنند. غربالهای نوترینو (که غربالهای GSC نامیده میشوند، برای مجموعههای کد شده با روش گولومب کدگذاری شدهاند) روشی بسیار فشردهتر برای نمایش بلاک بوده و هر یک ۱۵ کیلوبایت حجم دارند، در حالی که بلاکهای مبدا میتوانند ۲۵۰ برابر بزرگتر باشند (تا ۴ مگابایت).
این فشردهسازی اجازه میدهد تا دستگاههای دارای پهنای باند پاییند نیز بلاکچین را مشاهده کرده و تعیین کنند که آیا بلاکهای جدید به کیف پول کاربر مربوط هستند یا خیر. مراحل این فرآیند به شرح زیر است:
مرحله ۱: ایجاد غربال: با استخراج هر بلاک جدید، فولنودها غربالهای GCS متناظر را محاسبه میکنند. این غربالهای سپس به کلاینتهای سبک نوترینو داده میشوند.
مرحله ۲: مشاهده و مقایسه فیلترها: به طور حدودی هر ده دقیقه کلاینتهای نوترینو یک غربال دریافت میکنند و آن را با کیف پول کاربر مقایسه میکنند تا تعیین کنند که آیا تراکنش جدیدی وجود دارد که به کاربر مربوط باشد یا خیر.
مرحله ۳: دانلود بلاکهای مربوطه: اگر یک غربال نشاندهد که یک بلاک دارای تراکنشی مربوط است، کلاینت نوترینو بلاک هاشورخورده۳ را درخواست میکند که شامل دادههای تراکنشهای بلاک است، اما شامل امضاها یا «دادههای شهود» نمیشود. پس از دانلود بلاک، کلاینت میتواند بلاک را برای تراکنشهای مربوط اسکن کند.
مرحله ۴: اعمال در موجودی کیف پول: موجودی کیف پول با اطلاعات تراکتش جدید به روزرسانی میشوند و به این صورت کلاینت نوترینو نیز به روز باقی میماند.
توجه داشته باشید که با این روش، دادههایی که مستقیما نشانی یک کاربر را شناسایی میکنند هیچ گاه از طریق شبکه ارسال نمیشوند، و تطابق بین بلاکچین و کیف پول کاربر به جای یک نود دوردست و غیرقابل اعتماد که در این مورد BIP37 است، توسه نرمافزار کاربر انجام میشود.
سینک کردن: نحوه پردازش بلاکهای جدید در نوترینو در بالا شرح داده شده است، اما زمانی که آلیس اپلیکیشن مبتنی بر نوترینوی خود را برای اولین بار باز میکند، اپلیکیشن او باید خود را با وضعیت فعلی بلاکچین سینک کند. نسخه خلاصه شدهای از این فرآیند زمانی اتفاق میافتد که یک نود نوترینو آفلاین بوده و باید خود را به روز کند. چهار مرحله برای سینک کردن یک نود نوترینو وجود دارد.
اول، همانند یک کلاینت عادی بیتکوین یا یک کلاینت BIP37، کلاینت نوترینو زنجیرهای از هدرهای بلاک را دانلود و تایید کند، وظیفه این هدرها تعیین موقعیت هر بلاک در بلاکچین (یعنی ارتفاع بلاک) و تایید گواه بر کار است. هر هدر ۸۰ بایت است و مجموع هدرها در بلاکچین کنونی به ۴۰ مگابایت میرسند.
دوم، کلاینت نوترینو (به طور همزمان) زنجیرهای از «هدرهای غربال» را دانلود میکند که متناظر با زنجیرهای از هدرهای بلاک است که در بالا شرح داده شد. در پروتکل نوترینو، هر بلاک در بلاکچین یک غربال GCS مرتبط دارد. زنجیره هدرهای غربال برای کلاینتهای نوترینو راهی سبک برای ارتباط دادن هر غربال GCS به بلاک متناظر آن فراهم میکنند. این فرآیند در BIP157 شرح داده شده است.
هر هدر غربال ۲۳ بایت است و مجموعا مقدار پهنای باند مورد نیاز برای هدرهای غربال حدود ۲۰ مگابایت میباشد. هدرهای مربوط به بلاکهای پیش از زمان ساخته شدن کیف پول پس از تایید کنار گذاشته میشوند تا فضای مورد نیاز برای ذخیره به حداقل برسد. هدرها هرکدام یک بار دانلود شده و تایید میشوند.
مرحله سوم دانلود فیلتر GCS برای هر بلاک از زمانی است که کیف پول ساخته شده است. پهنای باند جاری برای هر غربال حدود ۷۰ مگابایت در ماه است، و نیازی برای فیلترها ذخیره فیلترها وجود ندارد.
در نهایت، نود نوترینو غربالها را کنترل کرده و تعیین میکند که آیا تراکنشی وجود دارد که مربوط به کیف پول کاربر باشد یا خیر، در این صورت بلاکهای هاشورخورده دانلود شده و تراکنشها به نحوی که در بالا شرح داده شده استخراج میشوند.
برای یک کیف پول جدید، فرآیند اولیه سینک روی یک تلفن همراه معمولی تنها چند دقیقه طول میکشد. مجموع دادههای بلاکچینی که توسط نود نوترینو ذخیره میشود حدو دهها مگابایت است، که با ۲۰۰ گیگابایت فعلی برای فولنود بیتکوین قابل مقایسه نیست. پس از سینک اولیه، به علت فشردهسازی GCS نیازی به پهنای باند بالا برای کلاینتهای نوترینو وجود ندارد. توجه داشته باشید که در حال که نودهای نوترینو به پهنای باند کمتری از فولنودها نیاز دارند، پروتکل نوترینو ممکن است در بیشتر مواقع به پهنای باند بیشتری از BIP37/SPV نیاز داشته باشد. البته پهنای باند مورد نیاز در هر صورت بیش از توان اکثر دستگاههای همراه نیست، و ما باور داریم که مزایای امنیتی و حریم خصوصی ارزش این هزینه را دارند. به علاوه، نوترینو با در نظر داشتن دستهکردن و همراستایی و دادههای بلاک طراحی شده است، بنابراین حتی اگر به پهنای باند بیشتری نیاز داشته باشد، تجربه کاربری کاربران نوترینو عموما با سرعت و پاسخگویی بالاتری همراه خواهدبود.
برنامههای پیش رو
عملکرد: همانطور که در بالا به آن اشاره شد، پروتکل نوترینو برای کار بر روی دستگاههایی طراحی شده است که منابع محدودی داشته و دائما به شبکه متصل نبوده یا همیشه روشن نیستند. اما توجه داشته باشید که پیادهسازی کنونی و اولیه نوترینو در lnd هنوز کاملا بهینهسازی نشده است. کارهای بیشتری در این زمینه در جریان است.
بازیابی بلاک: کلاینتهای نوترینو میتواند بلاکها یا غربالها را از هر منبعی خارج از شبکه همتا به همتای بیتکوین دانلود کنند. گزینه دیگری که میتواند در خصوص بازیابی بلاک مورد بررسی قرار گیرد، بازیابی خصوصی اطلاعات است. در حال حاضر، Tor گزینه معقولتری است و برای هر بلاک اخذ شده مدارهای جدیدی تولید میکند.
نوترینو در خدمت نوترینو: از آنجایی که غربالهای استفاده شده در نوترینو برای همه نودها مشابه هستند (برخلاف غربالهای استفاده شده در BIP37)، نودهای نوترینو میتوانند طوری تنظیم شوند تا غربالها را در اختیار سایر نودهای نوترینو قرار دهند. این به کلاینتهای نوترینو امکان میدهد تا به شبکه کمک کنند و هزینهها را برای سایر اپراتورهای فولنود کاهش دهند.
تعهدات غربال: با هر سافتفورک، هش هر غربال GSC میتواند مستقیما توسط ماینرها به هدرهای بلاک افزوده شود، که در این صورت نیاز به زنجیره هدرهای غربال از میان رفته و احتمال وقوع مواد ناخوشنایندی که در آن یک فولنود میتواند غربال ناصحیح را به کلاینت نوترینو بدهد به صفر میرسد. غربالها میتوانند همچنین توسط سایر اپلیکیشنهایی که قصد اسکن یا جستجوی سریع در بلاکچین را دارند مورد استفاده قرار گیرد.
ابزارهای توسعهدهنده: ما در حال کار بر روی APIهای دیگر و یک حالت شبح هستیم که به توسعهدهندگان اجازه میدهد از نودهای نوترینو برای استعلامهای عمومی بلاکچین استفاده کنند.
نتیجهگیری
خوشحالیم که اولین پیادهسازی کلاینتهای نوترینوی سازگار با BIP 157/158 را در lnd 0.5 و در اپلیکیشن لایتنینگ آلفا عرضه کنیم. در حالی که این نسخههای اولیه همه مربوط به تستنت هستد، نوترینوی میننت نیز در دست توسعه است. توجه داشته باشید که پشتیبانی از تغذیه نوترینو به btcd افزوده شده است، و پشتیبانی از BIP158 نیز در bitcoind (هسته بیتکوین) ادغام شده است. در بلند مدت، امیدواریم اپراتورهای نود و کیف پولهای بیتکوین بسیار بیشتری از نوترینو پشتیبانی کنند تا کاربران بتوانند در کنار حفظ حریم خصوصی و به حداقل رساندن خطرات امنیتی، تجربه کاربری بهتری داشته باشند. به باور ما، نوترینو بنیان بهبودیافتهای برا نسل بعدی کیف پولهای همراه فراهم میکند، که به آلیس امکان میدهند تا در هدف خود موفق شود.
پانوشتهها
- اگر یک کلاینت سبک به دنبال این باشد تا ببیند که آیا وجوه مشخصی (خروجی تراکنش) صرف شدهاند یا خیر، یک فولنود میتواند به غلط گزارش دهد که وجوه صرف نشدهاند. احتمال این حمله در مورد پرداختهای ساده بسیار کم است، چرا که طرفین پرداخت میتواند درخواست کنند که پرداخت دوباره انجام شده یا تحویل کالا یا خدمات را متوقف کنند. اما در خصوص لایتنینگ، بلاکچین باید برای تراکنشهای نامناسب بستن کانال پایش شود، بنابراین از قلم افتادگی تراکنشهای میتواند منجر به از دست رفتن وجوه شود.
با نوترینو، اگر همتایان مختلف غربالهای متناقض ارائه کنند، کلاینت نوترینو میتواند بلاک متناقض را (با استفاده از زنجیره هدر غربال) شناسایی کرده و بلاک کامل را دانلود کند. با در اختیار داشتن بلاک کامل، کلاینت قادر است تعیین کند که حق با کدام همتا بوده است. کلاینتهای BIP37/SPV میتوانند زمانی که تناقضی وجود داشته باید به کاربر هشدار دهند، اما نمیتوانند به طور خودکار آن را حل کنند.
- کلاینتهای نوترینو البته کمی از اطلاعات کیف پول کاربر را افشا میکنند، چرا که فرد متخاصم میتواند مشاهده کند که کلاینت چه بلاکهایی را دانلود میکند و نشانیهایی را که برای دانلود بلاک استفاده شده است را بیابد. برای حل این مشکل، همانطور که در بالا ذکر شد به دنبال این هستیم تا برای بلاکها از بازیابی خصوصی اطلاعات استفاده کنیم. در هر حال، باور داریم که نوترینو در حوزه حریم خصوصی بسیار بهت از سایر گزینههای همراه عمل میکند.
- با ظهور SegWit، امضای تراکنشهای بیتکوین (دادههای شهود) به ساختار دادهای مجزایی منتقل شدند. کلاینتهای نوترینو به این دادههای اضافی نیاز ندارند، و SegWit امکان دانلود بلاکهای هاشور خورده بدون دادههای شهود را فراهم میکند، در نتیجه به میزان زیادی در پهنای باند صرفهجویی خواهد شد (۵۰% یا بیشتر).
- در حالی که پشتیبانی از BIP158 در bitcoind ادغام شده است، در مورد BIP157 هنوز این اتفاق نیفتاده است، پس هنوز امکان تغذیه غربالهای نوترینو به وسیله فولنودهای bitcoind وجود ندارد. تلاشهای برای افزودن پشتیبانی از کامل از نوترینو در ماههای آینده ادامه دارد.