The Power of Schnorr: The Signature الگوریتم برای افزایش مقیاس و حریم خصوصی Bitcoin
Segregated Witness قبل از راه اندازی در شبکه بیت کوین وارد مرحله آزمایش نهایی خود شده است. این خبر خوبی است ، مهمتر از همه به این دلیل است که نوآوری افزایش ظرفیت را برای امکان انجام معاملات بیشتر در شبکه فراهم می کند ، در حالی که قابلیت انعطاف پذیری تراکنش را نیز حل می کند.
و ، نسخه اسکریپت را معرفی می کند – افزونه ای برای پروتکل بیت کوین که دسته جدیدی از نوآوری را امکان پذیر می کند.
یکی از این نوآوری های قریب الوقوع مدتی است که در بالای لیست خواسته های توسعه دهندگان بیت کوین قرار دارد: امضاهای Schnorr.
با انتشار قریب الوقوع شاهد تفکیک شده ، پیاده سازی الگوریتم امضای رمزنگاری Schnorr ممکن است به زودی دنبال شود ، به طور بالقوه مقیاس پذیری ، کارآیی و حریم خصوصی بیت کوین را بهبود بخشد ، همه به یکباره.
در اینجا نحوه.
امضاها
اول ، یک خلاصه کوتاه: امضاها چیست?
در قلب بیت کوین ترفند ریاضیاتی به نام “رمزنگاری کلید عمومی” نهفته است ، یک سیستم رمزنگاری که از دو نوع “کلید” (واقعاً رشته های اعداد) استفاده می کند: کلیدهای خصوصی و کلیدهای عمومی.
یک کلید خصوصی و یک کلید عمومی از نظر ریاضی به هم پیوند دارند. اما اگرچه تولید کلید عمومی از کلید خصوصی بسیار آسان است ، اما تولید کلید خصوصی از کلید عمومی عملاً غیرممکن است. این یک “خیابان یک طرفه” است.
برای صرف بیت کوین از یک آدرس بیت کوین خاص ، باید “مالکیت” (یا: دانش) کلید خصوصی را که به کلید عمومی مرتبط با آن آدرس اشاره دارد ، ثابت کنید. و برای اثبات مالکیت یک کلید خصوصی ، بدون نیاز به فاش کردن آن کلید خصوصی ، از یک امضای رمزنگاری استفاده می شود.
با استفاده از داده های معامله و کلید خصوصی ، یک امضا ایجاد می شود. و در اینجا جادوی رمزنگاری کلید عمومی وجود دارد: با دانستن کلید عمومی ، هر کسی می تواند ببیند که آیا از کلید خصوصی صحیح برای ایجاد امضا استفاده شده است یا خیر. بدون اینکه هرگز نیازی به دانستن کلید خصوصی خود داشته باشیم.
بنابراین “صاحب” کلید خصوصی می تواند معامله ای را امضا کند و بیت کوین صرف کند بدون اینکه نگران باشد شخص دیگری می تواند آن کلید خصوصی را بگیرد و بیت کوین را بدزدد. کلید خصوصی هرگز در معرض دید قرار نمی گیرد و امضا فقط برای آن معامله خاص معتبر است.
(برای توضیح بیشتر درباره رمزنگاری کلید عمومی در بیت کوین ، به این مقاله مراجعه کنید. یا فقط به خواندن ادامه دهید. در حالی که مفهوم اصلی امضا مهم است ، اما جزئیات برای هدف این مقاله مهم نیست.)
اشنور
بنابراین ، امضای Schnorr چیست?
Schnorr ، به نام مخترع آن Claus-Peter Schnorr ، یک طرح امضا است: مجموعه ای از قوانین ریاضی که کلید خصوصی ، کلید عمومی و امضا را بهم پیوند می دهد. بسیاری از رمز نویسان بهترین امضاهای Schnorr را در این زمینه می دانند ، زیرا سطح بالایی از صحت را ارائه می دهند ، از انعطاف پذیری رنج نمی برند ، تأیید نسبتاً سریع دارند و – مهمتر – از چند علامت پشتیبانی می کنند: چندین امضا را می توان در یک امضای جدید جمع کرد.
با این حال ، تاکنون استفاده از Schnorr در بیت کوین امکان پذیر نبوده است. نوع دیگری از طرح امضا ، الگوریتم امضای دیجیتالی Elliptic Curve (ECDSA) در پروتکل بیت کوین پخته می شود و تغییر آن به یک چنگال سخت نیاز دارد.
اینجاست که Segregated شاهد وارد می شود.
با استفاده از شاهد تفکیک شده ، تمام داده های امضا به قسمت جداگانه ای از معامله منتقل می شود: شاهد ، که در پروتکل “قدیمی” بیت کوین جاسازی نشده است. و به لطف نسخه نویسی اسکریپت ، تقریباً هر قانونی که در شاهد اعمال می شود ، از طریق یک چنگال نرم قابل تغییر است. از جمله نوع طرح امضا مورد استفاده.
این در را برای Schnorr باز می کند.
ظرفیت
خاصیت Schnorr که بیشتر به سود Bitcoin است تجمع چند علامت است.
بسیاری از معاملات بیت کوین شامل ورودی های متعدد با اشاره به آدرس هایی است که بیت کوین از آنها ارسال می شود. (این را می توان با نحوه پرداخت نقدی اغلب متشکل از چندین اسکناس و سکه کوچکتر برای پرداخت پول بیشتر مقایسه کرد.) در حال حاضر ، همه این ورودی ها نیاز به امضای خودشان دارند ، به این معنی که همه این امضاها باید در معامله گنجانده شود ، همه باید از طریق شبکه منتقل شود و همه باید در یک بلوک گنجانده شوند.
با این وجود ، با استفاده از Schnorr ، در همه ورودی ها فقط به یک امضای ترکیبی برای نمایاندن همه این امضاهای مختلف نیاز است. این یک مزیت داده ای آشکار است ، زیرا فقط یک امضا باید در معامله گنجانده شود ، فقط یکی باید از طریق شبکه منتقل شود و فقط یکی باید در یک بلوک گنجانده شود. این بدان معناست که فضای بیشتری برای انجام معاملات وجود دارد.
مثلا:
شاهد جداگانه ، همانطور که Bitcoin Core پیشنهاد کرده است ، به جای بلوک اصلی ، 75 درصد تخفیف بر روی تمام داده های موجود در شاهد ارائه می دهد. بنابراین یک مگابایت از داده های شاهد 25 “مگابایت” وزن “می شود که فضای بیشتری برای داده های معامله 75 مگابایت در بلوک اصلی و در مجموع 1 مگابایت خواهد داشت..
اگر امضاهای Schnorr جمع شده اندازه کل داده های شاهد را کاهش دهد ، از 1 مگابایت به 5 مگابایت بگویید ، این 5 مگابایت سپس به 0.125 مگابایت تخفیف داده می شود و فضای بلوک اصلی را برای 0.875 مگابایت فراهم می کند. (حدود 17 درصد افزایش ظرفیت)
مقدار دقیق اتاق اضافه شده به انواع معاملات موجود در بلوک بستگی دارد. اما تخمین های تقریبی اریک لومبروزو ، توسعه دهنده Bitcoin Core ، حاکی از آن است که امضاهای Schnorr در نهایت می توانند ظرفیت کل را 40 درصد یا بیشتر افزایش دهند – این بالاتر از 60 تا 100 درصد اضافه شده توسط شاهد تفکیک شده است.
چندرسانه ای
افزایش ظرفیت همانطور که در بالا توضیح داده شد در مورد معاملات منظم صادق است ، زیرا بسیاری از معاملات شامل بیش از یک ورودی هستند. اما این مزیت می تواند در مورد معاملات چند رقمی حتی بیشتر باشد – معاملات جایی که یک ورودی واحد به چندین امضا نیاز دارد (به طور معمول از افراد مختلف).
همانند معاملات عادی ، بیش از یک امضا در هر معامله چندرسانه ای لازم نیست. مهم نیست که چه تعداد امضا لازم است ، مهم نیست که چند نفر درگیر آن هستند.
این بخشی از داده های معمول مورد نیاز را برای ساخت قراردادهای هوشمند بسیار پیچیده تر باز می کند. اعم از دو نوع سه ، سه از پانزده یا صد از صد نوع معاملات چند رقمی ، همه داده های امضا را به همان اندازه معاملات یک امضای معمولی حمل می کنند.
حریم خصوصی
و سوم ، امضاهای Schnorr می تواند مزیت جالب دیگری را به وجود آورد: حفظ حریم خصوصی.
همانطور که گفته شد ، یک تراکنش می تواند شامل ورودی های متعدد باشد. معمولاً ، این ورودی ها به آدرسهایی اشاره دارند که همه توسط یک شخص کنترل می شوند. (به عنوان مثال در اسکناس های متعدد و سکه ها.)
اما یک ترفند برای افزایش حریم خصوصی که توسط گرگوری مکسول ، توسعه دهنده Bitcoin Core ابداع شده است, CoinJoin, به کاربران مختلف اجازه می دهد تا تمام معاملات خود را در یک معامله واحد ترکیب کنند. این یک معامله شامل ورودی های متعددی است که از پرداخت کنندگان مختلف وارد می شود ، که پول را به چندین خروجی متعلق به گیرندگان مختلف می فرستد.
(این را می توان با گروهی مقایسه کرد که اسکناس و سکه های خود را در یک سبد با هم می اندازند ، که برای خرید در فروشگاه های مختلف برای خرید کالاهایی که همه آنها می خواهند استفاده می کنند. هر فرد کالاهایی را دریافت می کند که فرد برای آنها پرداخت کرده است ، اما بعید است صورتحساب “خود” شخصی برای کالایی که این شخص خریداری کرده پرداخته باشد.)
اگر درست انجام شود ، CoinJoin راهی عالی برای بهبود حریم خصوصی در پروتکل بیت کوین است ، زیرا مشخص نیست که چه ورودی هایی دقیقاً چه خروجی هایی را پرداخت می کنند ، چه رسد به اینکه چه شخصی به کدام شخص پول پرداخت کرده است.
CoinJoin مفهوم جدیدی نیست. اما تاکنون CoinJoin به طور معمول کمی دردسر ساز بود. به همین ترتیب ، اکثر مردم اذیت نمی شوند. و از آنجا که اکثر مردم زحمت نمی کشند ، کسانی که زحمت می کشند به طور خودکار مشکوک شناخته می شوند. بالقوه هدف اصلی استفاده از CoinJoin را شکست می دهد.
اما امضاهای Schnorr می تواند یک مزیت جدید به CoinJoin اضافه کند. این امکان را برای همه شرکت کنندگان در یک معامله CoinJoin فراهم می کند تا نه تنها معاملات خود را ترکیب کنند ، بلکه امضاهای خود را نیز ترکیب کنند. و انجام این کار به معنای آن است که اندازه معامله در واقع از کل معاملات منفرد کمتر باشد. که به نوبه خود ، به این معنی است که استخراج کنندگان برای پردازش معامله معمولاً هزینه کمتری دریافت می کنند.
با استفاده از Schnorr ، CoinJoin نه تنها باعث افزایش حریم خصوصی می شود ، بلکه – مهمتر از همه – هزینه های افراد درگیر را نیز کاهش می دهد. در واقع ، استفاده از خصوصی ترین گزینه یک مزیت هزینه ای دارد ، که ممکن است فقط آن را به گزینه ای برای همه تبدیل کند – افزایش حریم خصوصی بیت کوین برای همه.
توجه: روند پیاده سازی امضاهای Schnorr در بیت کوین هنوز در مرحله مفهوم است. در حالی که به نظر می رسد اکثر توسعه دهندگان Bitcoin Core معتقدند امضای Schnorr می تواند با خیال راحت در بیت کوین مستقر شود ، گفتن آن با اطمینان خیلی زود است.
با تشکر از توسعه دهنده Bitcoin Core و جریان بلوک دکتر پیتر ویل ، بنیانگذار مشترک ، برای تهیه اطلاعات ، و توسعه دهنده Bitcoin Core و سیفرکس مدیر عامل شرکت اریک لومبروزو برای تصحیح و پیشنهادهای بیشتر.