بعد از دو سال، برای پستی به وبلاگ برگشتم که با سخنرانی های خسته کننده معمول در مورد هاسکل و ریاضیات متفاوت بود. من در چند سال گذشته روی فین تک در اتحادیه اروپا کار کرده ام و به نظر می رسد زمان خوبی برای نوشتن در مورد موضوعی باشد که توجه رسانه های فناوری به آن کم شده است.
فیسبوک اخیراً آنچه را «پلتفرم خدمات مالی جدید» به نام لیبرا مینامد منتشر کرده است. این سیستم به عنوان یک سیستم تسویه حساب دیجیتال مبتنی بر سبدی از ارزهای بین المللی است که بر روی یک "بلاک چین" مدیریت می شوند و در یک استخر پولی که از سوییس مدیریت می شود ذخیره می شود. اهداف این پروژه بلندپروازانه است و پیامدهای ژئوپلیتیکی در مقیاس بزرگ را به دنبال دارد.
В
آنچه به روی جهان باز است، یک مصنوع اسکیزوفرنی از نظر معماری است که ادعا میکند یک پلت فرم امن برای زیرساخت پرداخت جهانی است.
اگر به پایه کد شیرجه بزنید، پیاده سازی واقعی سیستم به طور کامل از هدف اعلام شده و به عجیب ترین روش ها فاصله می گیرد. من مطمئن هستم که این پروژه تاریخچه شرکتی جالبی دارد. بنابراین منطقی است که فرض کنیم با کمی دقت طراحی شده است، اما در واقعیت من مجموعه ای واقعا عجیب از تصمیمات معماری را می بینم که کل سیستم را می شکند و کاربران را در معرض خطر قرار می دهد.
من تظاهر نمی کنم که نظری عینی در مورد فیس بوک به عنوان یک شرکت دارم. افراد کمی در صنعت IT با همدردی به او نگاه می کنند. اما مقایسه اظهارات آن و کد منتشر شده به وضوح نشان می دهد که هدف بیان شده اساسا فریبنده است. به طور خلاصه، این پروژه هیچ کسی را توانمند نمی کند. او کاملاً تحت کنترل شرکتی باقی خواهد ماند که تجارت تبلیغاتی آن چنان در رسوایی و فساد غرق شده است که چاره ای جز تلاش برای تنوع بخشیدن به پرداخت ها و امتیازدهی اعتباری خود برای ادامه حیات ندارد. هدف بلندمدت روشن این است که به عنوان یک واسطه داده و واسطه در دسترسی مصرف کنندگان به اعتبار بر اساس داده های رسانه های اجتماعی شخصی آنها عمل کند. این یک داستان کاملاً وحشتناک و تاریک است که آن طور که باید مورد توجه قرار نمی گیرد.
تنها لطف نجاتدهنده این داستان این است که مصنوعاتی که آنها خلق کردهاند آنقدر به طرز خندهداری برای کار در حال انجام نامناسب است که فقط میتوان آن را یک اقدام غرورانه دید. چندین خطای اصلی معماری در این پروژه وجود دارد:
حل مشکل ژنرال های بیزانسی در یک شبکه کنترل دسترسی یک طرح ناسازگار است
مشکل ژنرال های بیزانسی حوزه نسبتاً باریکی از تحقیقات سیستم های توزیع شده است. این توانایی یک سیستم شبکه برای مقاومت در برابر خرابی قطعات تصادفی در حالی که اقدامات اصلاحی حیاتی برای عملکرد سیستم انجام می دهد را توصیف می کند. یک شبکه انعطاف پذیر باید چندین نوع حمله از جمله راه اندازی مجدد، قطع، بارهای مخرب و رأی مخرب در انتخابات رهبری را تحمل کند. این تصمیم اصلی برای معماری Libra است و در اینجا کاملاً بی معنی است.
سربار پیچیدگی زمانی این ساختار اضافی به الگوریتم بستگی دارد. ادبیات زیادی در مورد انواع پروتکلهای Paxos و Raft وجود دارد که مشکل ژنرالهای بیزانسی را حل میکند، اما همه این ساختارها هزینههای اضافی را برای ارتباط ایجاد میکنند. برای حفظ حد نصاب برای لیبرا الگوریتمی با بالاترین هزینه ارتباطی ممکن انتخاب کردند در صورت شکست رهبری و هزینه اضافی از انتخاب مجدد بالقوه رهبران در انواع مختلف رویدادهای شکست شبکه وجود دارد.
برای سیستمی که در کنسرسیومی از شرکتهای چندملیتی بسیار تنظیمشده عمل میکند، که در آن همه کاربران دارای کد امضا شده توسط فیسبوک هستند و دسترسی به شبکه توسط فیسبوک کنترل میشود، در نظر گرفتن شرکتکنندگان مخرب در سطح اجماع منطقی نیست. مشخص نیست که چرا این سیستم حتی مشکل ژنرال های بیزانسی را حل می کند، نه اینکه صرفاً یک دنباله حسابرسی ثابت را برای بررسی انطباق حفظ کند. این امکان وجود دارد که گره لیبرا توسط Mastercard یا Andressen Horrowitz به طور ناگهانی شروع به اجرای کدهای مخرب کند، یک سناریوی عجیب برای برنامه ریزی است و با اطمینان از یکپارچگی پروتکل و ابزارهای غیر فنی (به عنوان مثال قانونی) بهتر است.
گواهی به کنگره این محصول را به عنوان رقیبی برای پروتکل های پرداخت بین المللی جدید مانند WeChat، Alipay و M-Pesa معرفی کرد. با این حال، هیچ یک از این سیستم ها برای اجرا در استخرهای اعتبارسنجی برای حل مشکل ژنرال های بیزانسی طراحی نشده اند. آنها به سادگی بر روی یک اتوبوس سنتی با پهنای باند بالا طراحی شده اند که سیم کشی را طبق مجموعه ای از قوانین ثابت انجام می دهد. این یک رویکرد طبیعی برای طراحی یک سیستم پرداخت است. خوب طراحی شده سیستم پرداخت به سادگی با مشکل هزینه های مضاعف و فورک مواجه نخواهد شد.
سربار الگوریتم اجماع هیچ مشکلی را حل نمیکند و تنها توان عملیاتی سیستم را بدون هیچ دلیلی غیر از محموله بلاک چین عمومی محدود میکند، که برای این مورد در نظر گرفته نشده است.
Libra هیچ حریم خصوصی معاملاتی ندارد
با توجه به مستندات، سیستم با در نظر گرفتن طراحی شده است نام مستعاریعنی آدرسهای مورد استفاده در پروتکل از کلیدهای عمومی روی منحنیهای بیضوی بهدست میآیند و حاوی ابردادههای مربوط به حسابها نیستند. با این حال، هیچ کجا در توصیف ساختار حاکمیتی برای سازمان یا در خود پروتکل، نشان نمیدهد که چگونه دادههای اقتصادی درگیر در معاملات از اعتبارسنجیها پنهان میشوند. این سیستم به گونهای طراحی شده است که تراکنشها را در مقیاس بزرگ برای طیفی از طرفهای خارجی که بر اساس قوانین موجود اروپا و ایالات متحده در مورد اسرار بانکی، نباید از جزئیات اقتصادی مطلع باشند، طراحی شده است.
هماهنگ کردن سیاست های داده در سراسر کشورها، به ویژه با توجه به قوانین و مقررات متفاوت در حوزه های قضایی مختلف با دیدگاه های فرهنگی متفاوت در مورد حفاظت از داده ها و حریم خصوصی، دشوار است. خود پروتکل به طور پیش فرض کاملاً برای اعضای کنسرسیوم باز است، که یک نقص فنی واضح است که الزامات طراحی شده را برآورده نمی کند.
Libra HotStuff BFT قادر به دستیابی به توان عملیاتی مورد نیاز برای یک سیستم پرداخت نیست
در بریتانیا، سیستم های تسویه حساب مانند BAC قادر به انجام حدود 580،000،000 تراکنش در ماه هستند. در عین حال، سیستم های بسیار بهینه شده مانند ویزا می توانند 150،000،000 تراکنش را در روز پردازش کنند. عملکرد بسته به اندازه تراکنش، مسیریابی شبکه، بار سیستم و
لیبرا در تلاش است تا مشکلاتی را حل کند که واقعاً مشکلی برای نقل و انتقالات داخلی نیستند، زیرا دولت های ملی زیرساخت های تسویه حساب خود را در دهه گذشته مدرن کرده اند. برای مصرف کنندگان خرده فروشی در اتحادیه اروپا، جابجایی پول اصلاً مشکلی نیست. در زیرساخت های سنتی، این کار را می توان با یک گوشی هوشمند استاندارد در عرض چند ثانیه انجام داد. برای نقل و انتقالات شرکت های بزرگ، مکانیسم ها و قوانین مختلفی در ارتباط با جابجایی مقادیر زیادی پول وجود دارد.
به جز تفاوت در قوانین و الزامات بین حوزه های قضایی مربوطه، هیچ دلیل فنی وجود ندارد که چرا پرداخت های فرامرزی نیز نمی توانند فورا پردازش شوند. اگر اقدامات پیشگیرانه لازم (بررسی دقیق مشتری، بررسی تحریم ها و غیره) چندین بار در مراحل مختلف زنجیره معاملات انجام شود، ممکن است منجر به تاخیر در معامله شود. با این حال، این تاخیر صرفاً تابع قوانین نظارتی و انطباق است، نه فناوری.
برای مصرف کنندگان، دلیلی وجود ندارد که تراکنش در بریتانیا در عرض چند ثانیه پاک نشود. معاملات خرده فروشی در اتحادیه اروپا در واقع کند شده است
زبان Libra Move نادرست است
وایت پیپر ادعاهای جسورانه ای در مورد زبان جدید و آزمایش نشده ای به نام Move دارد. این اظهارات از دیدگاه تئوری زبان برنامه نویسی (PLT) کاملا مشکوک هستند.
Move یک زبان برنامه نویسی جدید برای پیاده سازی منطق تراکنش های سفارشی و قراردادهای هوشمند در بلاک چین لیبرا است. از آنجایی که لیبرا قصد دارد روزی به میلیاردها نفر خدمت کند، Move با امنیت به عنوان اولویت اصلی طراحی شده است.
یکی از ویژگی های کلیدی Move، توانایی تعریف انواع منابع دلخواه با معنایی الهام گرفته از منطق خطی است.
در بلاک چین های عمومی، قراردادهای هوشمند با منطق شبکه های عمومی با حساب های امانی، پولشویی، صدور توکن OTC و قمار روبرو هستند. همه اینها در یک زبان بد طراحی خیره کننده به نام Solidity انجام می شود که از نظر آکادمیک باعث می شود نویسنده PHP مانند یک نابغه به نظر برسد. به اندازه کافی عجیب، به نظر می رسد که زبان جدید فیس بوک هیچ ارتباطی با این فناوری ها ندارد، زیرا در واقع یک زبان برنامه نویسی است که برای اهداف سازمانی مبهم در نظر گرفته شده است.
در دفتر کل توزیع شده خصوصی، قراردادهای هوشمند یکی از اصطلاحاتی است که توسط مشاوران بدون توجه به تعریف یا هدف مشخص مطرح می شود. مشاوران نرمافزار سازمانی معمولاً از ابهام کسب درآمد میکنند و قراردادهای هوشمند نقطه ضعف تاریکگرایی شرکتی هستند، زیرا میتوان آنها را به معنای واقعی کلمه هر چیزی تعریف کرد.
پس از طرح ادعایی در مورد امنیت آن، باید به معناشناسی زبان نگاهی بیندازیم. صحت در تئوری زبان برنامه نویسی معمولاً از دو اثبات مختلف تشکیل شده است: «پیشرفت» و «حفظ» که ثبات کل فضای قوانین ارزیابی زبان را تعیین می کند. به طور خاص، در تئوری نوع، یک تابع اگر دقیقا یک بار از آرگومان خود استفاده کند، «خطی» است و اگر حداکثر یک بار از آن استفاده کند، «affine» است. سیستم نوع خطی با تخصیص انواع به تمام عبارات فرعی توابع و پیگیری محل برقراری فراخوانی، تضمین ایستا را ارائه می دهد که یک تابع خطی اعلام شده واقعاً خطی است. این یک ویژگی ظریف برای اثبات است و اجرای آن برای کل برنامه آسان نیست. تایپ خطی هنوز یک رشته تحصیلی بسیار آکادمیک است که تحت تأثیر اجرای منحصر به فرد نوع در Clean و مالکیت نوع در Rust قرار دارد. چند پیشنهاد اولیه برای افزودن انواع خطی به کامپایلر گلاسکو هسکل وجود دارد.
بیانیه Move در مورد استفاده از انواع خطی به نظر می رسد مانند یک فرو رفتن غیرقابل توجیه در کامپایلر، از آنجایی که وجود دارد
علاوه بر این، معنای رسمی زبان به ظاهر امن در هیچ کجای اجرا یا سند ظاهر نمی شود. این زبان به اندازهای کوچک است که میتوان در Coq یا Isabelle اثبات کاملی از معناشناسی صحیح پیدا کرد. در واقع، یک کامپایلر تبدیل کامل سرتاسر با انتقال اثبات به بایت کد، با ابزارهای مدرن اختراع شده در دهه گذشته کاملاً امکان پذیر است. ما می دانیم که چگونه آن را انجام دهیم، با شروع
از منظر تئوری زبان برنامه نویسی، آزمایش این ادعا که Move یک زبان قابل اعتماد و امن است، غیرممکن است، زیرا این ادعاها به جای شواهد واقعی، دست تکان دادن و بازاریابی خالص است. این یک وضعیت هشدار دهنده برای یک پروژه زبان است که از آن خواسته می شود میلیاردها دلار تراکنش را پردازش کند.
رمزنگاری لیبرا ناقص است
ساختن سیستم های رمزنگاری ایمن یک مشکل مهندسی بسیار دشوار است و همیشه بهتر است کار با کدهای خطرناک را با دوز خوبی از پارانویای سالم نزدیک کنید. پیشرفتهای بزرگی در این زمینه وجود دارد، مانند پروژه مایکروسافت اورست، که در حال ایجاد یک امنیت قابل تأیید است
پروژه کتابخانه
کتابخانه حتی آزمایشی تر می شود و فراتر می رود
باید فرض کرد که کل این پشته رمزنگاری در برابر حملات مختلف آسیب پذیر است تا زمانی که خلاف آن ثابت شود. مدل معروف «حرکت سریع و شکستن چیزها» فیس بوک را نمی توان برای ابزارهای رمزنگاری که داده های مالی مشتری را پردازش می کنند، اعمال کرد.
لیبرا در اجرای مکانیسم های حمایت از مصرف کننده شکست خورده است
یکی از ویژگیهای متمایز سیستم پرداخت این است که در صورت لغو پرداخت با شکایت یا منجر به خرابی تصادفی یا سیستم پرداخت، امکان بازگرداندن تراکنش است. سیستم لیبرا به گونهای طراحی شده است که «کامل» باشد و شامل یک نوع تراکنش برای لغو پرداخت نمیشود. در انگلستان، تمام پرداخت های بین 100 تا 30,000 پوند مشمول قانون اعتبار مصرف کننده است. به این معنی که سیستم پرداخت در صورت بروز مشکل در محصول خریداری شده یا عدم ارائه سرویس توسط گیرنده پرداخت، مسئولیت را با فروشنده به اشتراک می گذارد. قوانین مشابهی در اتحادیه اروپا، آسیا و آمریکای شمالی اعمال می شود.
طراحی فعلی لیبرا شامل پروتکلی برای مطابقت با این قوانین نیست و برنامه مشخصی برای ایجاد آن ندارد. حتی بدتر از آن، از منظر معماری، نهایی بودن ساختار داده تایید شده هسته، بر اساس وضعیت درایو Merkle، اجازه ایجاد چنین پروتکلی بدون طراحی مجدد هسته را نمی دهد.
پس از بررسی فنی این پروژه، میتوان نتیجه گرفت که این پروژه به سادگی در هیچ مجله معتبر تحقیقاتی سیستمهای توزیع شده یا مهندسی مالی قابل قبول نخواهد بود. برای تلاش برای تغییر سیاست پولی جهانی، حجم عظیمی از کار فنی باید انجام شود تا یک شبکه قابل اعتماد و پردازش امن دادههای کاربر ایجاد شود که عموم و قانونگذاران بتوانند به آن اعتماد کنند.
من دلیلی نمی بینم که باور کنم فیس بوک کارهای لازم را در طراحی خود برای غلبه بر این مشکلات فنی انجام داده است یا اینکه نسبت به زیرساخت فعلی مزیت فنی دارد. گفتن اینکه یک شرکت برای کشف نوآوری ها به انعطاف پذیری نظارتی نیاز دارد، بهانه ای برای انجام ندادن آنها در ابتدا نیست.
منبع: www.habr.com