2 اهداف مقیاس پذیری - 2. 1 سی پی یو
- 2. 2 شبکه
- 2. 3 ذخیره سازی
- سی پی یو 3. 1
- 3. 2 تأیید پرداخت ساده
یادداشت برای خوانندگان
وقتی فن آوران درباره نحوه عملکرد بیت کوین می شنوند، اغلب روی کلمه «سیل» توقف می کنند و می گویند: «اوه، خدای من! که مقیاس پذیر نیست!». هدف این مقاله این است که یک مثال افراطی، اوج نرخ تراکنش ویزا را در نظر بگیریم و نشان دهیم که بیت کوین از نظر فنی می تواند به آن نرخی برسد، بدون اینکه استدلال مشکوک، تغییر در طراحی هسته، یا همپوشانی های غیرقابل وجود داشته باشد. به این ترتیب، این صرفاً یک مثال افراطی است نه طرحی برای چگونگی رشد بیت کوین برای رفع نیازهای گسترده تر (به عنوان یک سیستم غیرمتمرکز، بیت کوین با استفاده از عموم مردم است که تصمیم می گیرد چگونه بیت کوین رشد کند) این فقط یک استدلال است که طراحی هسته بیت کوین را نشان می دهد. می تواند بسیار بهتر از آن چیزی باشد که یک فرد باهوش در ابتدا حدس بزند.
دن به درستی تحلیل ارائه شده در اینجا را مورد انتقاد قرار می دهد و اشاره می کند که عملکرد در این مقیاس به طور قابل توجهی ماهیت غیرمتمرکز بیت کوین را کاهش می دهد: اگر برای اجرای یک گره "تأیید کننده کامل" باید تعداد زیادی ترابایت فضای دیسک داشته باشید، افراد کمتری این کار را انجام خواهند داد. هرکسی که این کار را نمی کند، برای صادق بودن باید به کسانی که اعتماد می کند اعتماد کند. به نظر می رسد دن (از اسلایدهایش) با این استدلال زیاده روی کرده است: به نظر می رسد او پیشنهاد می کند که این بدان معناست که بیت کوین ها توسط بانک های مرکزی رایج امروزی کنترل خواهند شد. تحلیل او به دو دلیل شکست می خورد (و دومی تقصیر این صفحه است که کمی گمراه کننده است):
اول ، حتی در مقیاس نجومی که در اینجا ارائه می شود ، ظرفیت مورد نیاز در قلمرو افراد خصوصی (ثروتمند) به خوبی است و مطمئناً در آینده ای خواهد بود که به این نوع ظرفیت نیاز باشد. سیستمی که افراد خصوصی یا حداقل گروههای کوچک از احزاب خصوصی را با هم مساوی با بانکهای مرکزی قرار می دهد ، به سختی می توان به عنوان یک مرکز متمرکز نامید ، اگرچه این امر کمتر از بیت کوین ما امروزه غیرمتمرکز خواهد بود. این سیستم همچنین نمی تواند به این نوع مقیاس برسد بدون اینکه کاربران بیت کوین به طور جمعی توافق کنند که حداکثر اندازه بلوک را افزایش دهند ، بنابراین نتیجه ای نیست که بدون رضایت کاربران بیت کوین می تواند اتفاق بیفتد.
دوم ، و از همه مهمتر ، مقیاس فرضیه شرح داده شده در اینجا با ویزای جایگزین بیت کوین سروکار دارد. این یک مقایسه ضعیف است زیرا بیت کوین به تنهایی جایگزین مناسبی برای ویزا نیست به دلایل کاملاً غیر مرتبط با مقیاس گذاری: بیت کوین معاملات فوری ، اعتبار یا مکانیسم های مختلف ضد کلاهبرداری را ارائه نمی دهد (که برخی افراد می خواهند ، حتی اگر همه این کار را انجام دهند) ،مثلا. بیت کوین جایگزینی کامل تر برای چک ، انتقال سیم ، سفارشات پول ، سکه های طلا ، سی دی ، حساب پس انداز و غیره است. و اگر به طور گسترده اتخاذ شده باشد ، احتمالاً جایگزین استفاده از کارتهای اعتباری می شود که اگر بهتر به صورت آنلاین کار کنند ، بهتر توسط این موارد دیگر ارائه می شودبشر
کاربران بیت کوین گاهی اوقات خیلی سریع از این واقعیت براق می شوند زیرا مردم خیلی سریع می توانند آن را نقص بنامیم اما این ناعادلانه است. هیچ کس برای همه استفاده ها ایده آل نیست و بیت کوین طیف گسترده تری از خصوصیات را نسبت به بیشتر ابزارهای پولی دارد. اگر جامعه بیت کوین حاضر به اشاره به برخی از کارها نیست که بهتر توسط سیستم های دیگر انجام شود ، می توان استدلال های Strawman را آسان کرد: اگر بپذیریم که بیت کوین می تواند به عنوان موم کف و تاپ بیابانی استفاده شود ، همیشه کسی اشاره خواهد کرداین بهترین موم کف یا بهترین کویر نیست.
ساخت سیستم های پردازش پرداخت و اعتباری _on top_ از بیت کوین ، هر دو نمونه کلاسیک (مانند خود ویزا!) و همچنین "غیر متمرکز" مانند رعد و برق ، بی اهمیت است. این سیستم ها می توانند حجم معاملات بالاتر را با هزینه های پایین تر تحمل کنند و مرتباً به بیت کوین که از آنها حمایت می کند ، مستقر شوند. اینها می توانند از تکنیک های دیگری با تجارت مختلف نسبت به بیت کوین استفاده کنند ، اما هنوز هم توسط بیت کوین مورد حمایت و نامگذاری قرار می گیرند ، بنابراین هنوز هم از عدم کنترل مرکزی آن لذت می برند. ما شروع امروز را با خدمات مبادله بیت کوین و کیف پول می بینیم که اجازه پرداخت فوری بین اعضا را می دهد.
این سرویس ها سود حاصل از ارز بیت کوین مقاوم در برابر تورم را به دست می آورند ، کاربران مزایای معاملات فوری ، اعتبار و ضد کلاهبرداری را به دست می آورند ، بیت کوین به طور کلی از بهبودی از حجم معامله خارج شده و بدون به خطر انداختن ماهیت غیر متمرکز خود برخوردار می شود. در دنیایی که بیت کوین به طور گسترده ای از سیستم های پردازش پرداخت استفاده می شود احتمالاً قیمت های پایین تری دارند زیرا آنها نیاز به رقابت با معاملات بیت کوین دارند ، همچنین می توانند قیمت پایین تری داشته باشند زیرا تسویه حساب بیت کوین مکرر (و معاملات صفر Trust Bitcoin Escrow) آنها را کاهش می دهد)خطر. این به طور مضاعف درست است زیرا بیت کوین می تواند به طور کامل جایگزین آنها شود ، حتی اگر این بهترین ایده به دلیل کاهش ناشی از عدم تمرکز باشد.
اهداف مقیاس پذیری
دسته ویزا به طور متوسط حدود 2000 معاملات در ثانیه (TPS) ، بنابراین آن را اوج روزانه 4000 TPS بنامید. این ظرفیت اوج حدود 56000 معاملات در ثانیه دارد ، [1] اما آنها هرگز حتی در دوره های خرید اوج استفاده نمی کنند.[2]
در مقابل ، پی پال در اواخر سال 2014 حدود 10 میلیون معاملات در روز به طور متوسط 115 TPS انجام داد. [3]
بیایید 4000 TP را به عنوان هدف شروع کنیم. بدیهی است اگر می خواهیم بیت کوین به کلیه معاملات اقتصادی در سراسر جهان ، از جمله پول نقد ، مقیاس کند ، بسیار بالاتر از آن خواهد بود ، شاید بیشتر در منطقه چند صد هزار TP باشد. و نیاز به مقاومت در برابر حملات DOS (که ویزا لازم نیست با آنها مقابله کند) دلالت بر این دارد که ما می خواهیم فراتر از نرخ اوج استاندارد مقیاس بگیریم. با این وجود ، انتخاب یک هدف به ما اجازه می دهد برخی از محاسبات اساسی را حتی اگر کمی دلخواه باشد انجام دهیم.
امروزه شبکه بیت کوین به دلیل پروتکل بیت کوین که اندازه بلوک را به 1 مگابایت محدود می کند ، به نرخ پایدار 7 TPS محدود می شود.
CPU
این پروتکل دو بخش دارد. گره ها پیام های "Inv" را به گره های دیگر ارسال می کنند و به آنها می گویند معامله جدیدی دارند. اگر گره دریافت کننده آن معامله را نداشته باشد ، آن را با GetData درخواست می کند.
هزینه بزرگ ، جستجوی زنجیره ای رمزنگاری و بلوک است که با تأیید معامله درگیر است. تأیید معامله به معنای برخی از تأییدیه های امضای ECDSA است. RIPEMD-160 با 106 مگابایت در ثانیه اجرا می شود (برای سادگی آن را 100 بنامید) و Sha256 تقریباً یکسان است. بنابراین 1 مگابایت باید حدود 10 میلی ثانیه طول بکشد و هش کردن 1 کیلوبیت 0. 01 میلی ثانیه طول می کشد - به اندازه کافی سریع که می توانیم آن را نادیده بگیریم.
بیت کوین در حال حاضر قادر است (با چند بهینه سازی ساده که نمونه برداری شده اند اما هنوز ادغام نشده اند) برای انجام حدود 8000 تأیید امضا در ثانیه در پردازنده Quad Core Intel Core i7-2670QM 2. 2GHZ. میانگین تعداد ورودی ها در هر معامله حدود 2 است ، بنابراین باید نرخ را نصف کنیم. این بدان معنی است که 4000 TPS با یک پردازنده نسبتاً اصلی ، به راحتی قابل دستیابی است.
همانطور که می بینیم ، این بدان معناست که تا زمانی که گره های بیت کوین مجاز به حداقل 4 هسته از دستگاه هایی باشند که روی آن کار می کنند ، ما از ظرفیت CPU برای بررسی امضای خارج نخواهیم شد مگر اینکه بیت کوین 100 برابر بیشتر از ترافیک را انجام دهدبشراز اواخر سال 2015 ، این شبکه 1. 5 معاملات/دوم را اداره می کند ، بنابراین حتی با فرض رشد عظیم محبوبیت ، ما برای مدت طولانی به این سطح نخواهیم رسید.
البته بیت کوین کارهای دیگری را فراتر از بررسی امضا انجام می دهد ، بدیهی است که مدیریت بانک اطلاعاتی. ما از LevelDB استفاده می کنیم که بخش عمده ای از بلند کردن سنگین را روی یک موضوع جداگانه انجام می دهد و قادر به بارهای خواندن و نوشتن بسیار بالایی است. به طور کلی استفاده از CPU بیت کوین تحت سلطه ECDSA است.
شبکه
بیایید نرخ متوسط 2000TPS را فرض کنیم ، بنابراین فقط ویزا. معاملات از نظر اندازه از حدود 0. 2 کیلوبایت تا بیش از 1 کیلوبایت متفاوت است ، اما امروزه به طور متوسط نیمی از کیلوبایت است.
این بدان معناست که شما باید در حدود 8 مگابیت در ثانیه از داده های معامله (2000TPS * 512 بایت) / 1024 بایت در یک کیلوبایت / 1024 کیلوبایت در یک مگابایت = 0. 97 مگابایت در ثانیه * 8 = 7. 8 مگابیت / ثانیه همراه باشید.
این نوع پهنای باند در حال حاضر برای اتصالات حتی مسکونی امروزه رایج است ، و مطمئناً در انتهای پایین آنچه ارائه دهندگان کلکسیونی انتظار دارند شما را در اختیار شما قرار دهند.
هنگامی که بلوک ها حل شدند ، پروتکل فعلی معاملات را دوباره ارسال می کند ، حتی اگر یک همسالان قبلاً آن را در زمان پخش دیده باشد. رفع این مسئله برای ایجاد لیست فقط لیست هش ها ، مسئله را برطرف کرده و پهنای باند مورد نیاز برای پخش بلوک را در معرض خطر قرار می دهد. بنابراین در حالی که این بهینه سازی امروز به طور کامل اجرا نشده است ، ما پهنای باند انتقال بلوک را در اینجا در نظر نمی گیریم.
ذخیره سازی
با نرخ معامله بسیار بالا ، هر بلوک می تواند بیش از نیمی از گیگابایت باشد.
لازم نیست گره های معتبر به طور کامل برای ذخیره کل زنجیره. در مقاله Satoshi او "هرس" را توصیف می کند ، راهی برای حذف داده های غیر ضروری در مورد معاملات که به طور کامل هزینه شده است. این باعث می شود میزان داده هایی که برای یک گره کاملاً معتبر مورد نیاز است ، فقط اندازه اندازه خروجی ناآگاه فعلی باشد ، به علاوه برخی از داده های اضافی که برای رسیدگی به مجدداً مورد نیاز هستند. از اکتبر 2012 (بلوک 203258) 7،979،231 معاملات انجام شده است ، اما اندازه مجموعه خروجی ناپایدار کمتر از 100mib است ، که به اندازه کافی کوچک است که به راحتی در RAM حتی برای رایانه های کاملاً قدیمی قرار می گیرد.
فقط تعداد کمی از گره های بایگانی نیاز به ذخیره کامل زنجیره ای دارند که به بلوک پیدایش باز می گردد. از این گره ها می توان برای راه اندازی گره های معتبر کاملاً معتبر از ابتدا استفاده کرد اما در غیر این صورت غیر ضروری است.
عامل محدود کننده اصلی در عملکرد بیت کوین این است که دیسک پس از تنظیم خروجی معاملات ناپایدار ، متناسب بودن در حافظه را متوقف می کند. هنگامی که دیسک های سخت به نفع SSD ها از بین بروند ، کاملاً ممکن است که دسترسی به مجموعه UTXO هرگز به یک تنگنا جدی تبدیل نشود.
بهینه سازی
توضیحات فوق در مورد نرم افزار فعلی فقط با بهینه سازی های جزئی فرض شده اعمال می شود (نوع که می تواند و در طی چند هفته توسط یک مرد انجام شده است).
با این حال ، امکان بهینه سازی حتی بیشتر در آینده ، با هزینه برخی از پیچیدگی های اضافی وجود دارد.
CPU
الگوریتم ها برای سرعت بخشیدن به تأیید دسته ای نسبت به امضاهای منحنی بیضوی وجود دارند. می توان امضاهای آنها را همزمان برای سرعت 2 برابر بررسی کرد. این یک اجرای تا حدودی پیچیده تر است.
تأیید پرداخت ساده
ساخت یک اجرای بیت کوین امکان پذیر است که همه چیز را تأیید نمی کند ، بلکه در عوض به اتصال به یک گره قابل اعتماد متکی است ، یا ایمان خود را به سختی به عنوان یک پروکسی برای اثبات اعتبار قرار می دهد. Bitcoinj اجرای این حالت است.
در حالت تأیید پرداخت ساده (SPV) ، نامگذاری شده از بخش مقاله Satoshi که آن را توصیف می کند ، مشتریان به یک گره کامل دلخواه متصل می شوند و فقط هدرهای بلوک را بارگیری می کنند. آنها تأیید می کنند که هدرهای زنجیره ای به درستی به هم وصل می شوند و این مشکل به اندازه کافی بالا است. آنها سپس معاملات را با الگوهای خاص از گره از راه دور (یعنی پرداخت به آدرس های شما) درخواست می کنند ، که نسخه هایی از آن معاملات را به همراه یک شعبه مرکل ارائه می دهد که آنها را به بلوکی که در آن ظاهر می شود ، پیوند می دهد. این از ساختار درخت مرکل سوء استفاده می کند تا بدون نیاز به محتوای کامل بلوک ، اثبات گنجاندن را انجام دهد.
به عنوان یک بهینه سازی بیشتر، هدرهای بلوکی که به اندازه کافی عمیق دفن شده اند را می توان پس از مدتی دور انداخت (به عنوان مثال، شما واقعاً نیاز دارید تا هدرهای 2016 را ذخیره کنید).
سطح دشواری مورد نیاز برای به دست آوردن اطمینان از اینکه گره راه دور به شما تراکنش های خیالی نمی دهد بستگی به مدل تهدید شما دارد. اگر به گره ای متصل می شوید که قابل اعتماد شناخته شده است، دشواری آن مهم نیست. اگر می خواهید یک گره تصادفی انتخاب کنید، هزینه ای که مهاجم برای استخراج یک توالی بلوک حاوی یک تراکنش جعلی دارد، باید بیشتر از مقداری باشد که با فریب شما به دست می آید. با تغییر میزان عمق مدفون شدن بلوک، می توانید زمان تایید را با هزینه یک حمله عوض کنید.
برنامه هایی که این رویکرد را پیاده سازی می کنند، می توانند سربار ذخیره سازی/شبکه ثابتی داشته باشند در صورت عدم استفاده، و مصرف منابع متناسب با تراکنش های دریافتی/ارسالی باشد.
کار مرتبط
چند پیشنهاد برای بهینه سازی مقیاس پذیری بیت کوین وجود دارد. برخی از اینها به یک زنجیره alt / هارد فورک نیاز دارند.
- فشرده سازی نهایی بلاک چین - این ایده که بلاک چین را می توان برای دستیابی به "گره های لایت بدون اعتماد" فشرده کرد.
- مقاله Blockchain محدود که تقسیم بلاک چین به سه ساختار داده را توصیف می کند که هر کدام برای هدف خود مناسب تر هستند. این سه ساختار داده عبارتند از یک زنجیره بلوکی محدود (N بلوک را در گذشته نگه دارید)، یک "درخت حساب" که تعادل حساب را برای هر آدرس با موجودی غیر صفر نگه می دارد، و یک "زنجیره اثبات" که یک (همیشه در حال رشد) باریک است. نسخه پایین بلاک چین
- شبکه لایتنینگ، یک پروتکل جایگزین برای تراکنش تراکنش که در آن گره ها کانال های پرداخت خرد را بین یکدیگر راه اندازی می کنند و گهگاه در زنجیره بلوک مستقر می شوند. کاربران معمولی عمدتاً یا فقط با کانال های پرداخت تعامل دارند و فقط از بلاک چین برای نقل و انتقالات بزرگ و ذخیره سازی سرد استفاده می کنند.