ویتالیک بوترین از طریق وبلاگ ویتالیک بوترین
این آینه ای از پست در است https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627
هشدار ماشه: ریاضی.
یکی از اصلیهای رمزنگاری اولیه در ساختارهای مختلف، از جمله امضاهای آستانه قطعی، zk-SNARK و سایر اشکال سادهتر اثباتهای دانش صفر، جفت شدن منحنی بیضوی است. جفتهای منحنی بیضی (یا «نقشههای دوخطی») افزودهای اخیر به تاریخچه 30 ساله استفاده از منحنیهای بیضوی برای برنامههای رمزنگاری از جمله رمزگذاری و امضای دیجیتال است. جفتها شکلی از «ضرب رمزگذاریشده» را معرفی میکنند، که تا حد زیادی آنچه را که پروتکلهای مبتنی بر منحنی بیضوی میتوانند انجام دهند، گسترش میدهند. هدف از این مقاله، پرداختن به جفت منحنی های بیضوی با جزئیات، و توضیح یک طرح کلی از نحوه عملکرد آنها خواهد بود.
از شما انتظار نمی رود که همه چیز را در اولین بار یا حتی دهمین بار اینجا بخوانید. این چیزها واقعا سخت است اما امیدواریم این مقاله حداقل کمی از آنچه در زیر کاپوت می گذرد به شما اطلاع دهد.
منحنیهای بیضوی خود یک موضوع بسیار بیاهمیت برای درک هستند، و این مقاله به طور کلی فرض میکند که شما میدانید چگونه کار میکنند. اگر این کار را نمی کنید، این مقاله را در اینجا به عنوان آغازگر توصیه می کنم: https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/. به عنوان یک خلاصه سریع، رمزنگاری منحنی بیضوی شامل اشیاء ریاضی به نام "نقاط" است (اینها به معنای واقعی کلمه نقاط دو بعدی با مختصات (�،�) هستند)، با فرمول های ویژه برای جمع و تفریق آنها (یعنی برای محاسبه مختصات �=). �+�)، و همچنین می توانید یک نقطه را در یک عدد صحیح ضرب کنید (یعنی �⋅�=�+�+…+�، اگرچه اگر � بزرگ باشد، راه بسیار سریع تری برای محاسبه آن وجود دارد).
در اینجا نحوه اضافه کردن نقطه از نظر گرافیکی به نظر می رسد.
یک نقطه خاص وجود دارد به نام "نقطه در بی نهایت" (�)، که معادل صفر در محاسبه نقطه است. همیشه اینطور است که �+�=�. همچنین یک منحنی یک "سفارش"؛ یک عدد � وجود دارد به طوری که �⋅�=� برای هر � (و البته، �⋅(�+1)=�،�⋅(7⋅�+5)=�⋅5، و غیره). همچنین در مورد "نقطه مولد" مورد توافق عمومی وجود دارد که به نوعی نشان دهنده عدد 1 است. تنها چیزی که مهم است این است که � استاندارد باشد.
جفتها یک قدم فراتر میروند، زیرا به شما امکان میدهند انواع خاصی از معادلات پیچیدهتر را در نقاط منحنی بیضی بررسی کنید - برای مثال، اگر �=�⋅�،�=�⋅� و �=� نه �⋅�=�، فقط داشتن �،� و � به عنوان ورودی. این ممکن است به نظر برسد که تضمینهای امنیتی اساسی منحنیهای بیضوی شکسته شدهاند، زیرا اطلاعات مربوط به � صرفاً از دانستن P درز میکند، اما معلوم میشود که نشت بسیار محدود است - بهویژه، مشکل تصمیم گیری دیفی هلمن آسان است، اما مشکل محاسباتی دیفی هلمن (دانستن � و � در مثال بالا، محاسبه �=�⋅�⋅�) و مسئله لگاریتم گسسته (بازیابی � از �) از نظر محاسباتی غیرممکن باقی می مانند (حداقل، اگر قبلاً بودند).
سومین راه برای بررسی آنچه جفتها انجام میدهند، و شاید روشنکنندهترین راه برای بسیاری از موارد مورد استفاده ما باشد، این است که اگر نقاط منحنی بیضوی را بهعنوان اعداد رمزگذاریشده یک طرفه در نظر بگیرید (یعنی ������������������������������������������������������������� ���(�)=�⋅�=�)، سپس در حالی که ریاضی منحنی بیضوی سنتی به شما امکان می دهد بررسی کنید خطی قیود اعداد (به عنوان مثال، اگر �=� واقعا بررسی اینکه 5⋅�+7⋅�=11⋅�)، جفت ها به شما امکان می دهند بررسی کنید درجه دوم محدودیت ها (به عنوان مثال، بررسی �(�،�)⋅�(�،��⋅5) = 1 است واقعا بررسی کنید که �⋅�+5=0). و بالا رفتن به درجه دوم کافی است تا به ما اجازه دهد با امضاهای آستانه قطعی، برنامه های حساب درجه دوم و همه چیزهای خوب دیگر کار کنیم.
حالا این اپراتور خنده دار �(�،�) که در بالا معرفی کردیم چیست؟ این جفت شدن است. ریاضیدانان نیز گاهی آن را الف می نامند نقشه دو خطی; کلمه "دو خطی" در اینجا اساساً به این معنی است که محدودیت ها را برآورده می کند:
�(�،�+�)=�(�،�)⋅�(�،�)
�(�+�،�)=�(�،�)⋅�(�،�)
توجه داشته باشید که + و ⋅ می توانند عملگرهای دلخواه باشند. هنگامی که شما در حال ایجاد انواع فانتزی جدید از اشیاء ریاضی هستید، جبر انتزاعی اهمیتی نمی دهد که + و ⋅ چگونه باشند. مشخص، تا زمانی که آنها به روش های معمول سازگار باشند، به عنوان مثال. �+�=�+�،(�⋅�)⋅�=�⋅(�⋅�) و (�⋅�)+(�⋅�)=(�+�)⋅�.
اگر �، �، � و � ساده بودند تعداد، سپس ایجاد یک جفت ساده آسان است: ما می توانیم �(�،�)=2�� را انجام دهیم. سپس، می توانیم ببینیم:
�(3,4+5)=23⋅9=227
�(3,4)⋅�(3,5)=23⋅4⋅23⋅5=212⋅215=227
دوخطی است!
با این حال، چنین جفتسازیهای سادهای برای رمزنگاری مناسب نیستند، زیرا اشیایی که روی آنها کار میکنند اعداد صحیح ساده هستند و تجزیه و تحلیل آنها بسیار آسان است. اعداد صحیح تقسیم، محاسبه لگاریتم ها و انجام محاسبات مختلف دیگر را آسان می کنند. اعداد صحیح ساده مفهومی از "کلید عمومی" یا "عملکرد یک طرفه" ندارند. علاوه بر این، با جفتسازی که در بالا توضیح داده شد، میتوانید به عقب برگردید - با دانستن �، و دانستن �(�،�)، به سادگی می توانید یک تقسیم و یک لگاریتم را برای تعیین � محاسبه کنید. ما اشیاء ریاضی می خواهیم که تا حد امکان به "جعبه های سیاه" نزدیک باشند، جایی که می توانید جمع، تفریق، ضرب و تقسیم کنید. اما هیچ کار دیگری انجام نده. اینجا جایی است که منحنی های بیضوی و جفت های منحنی بیضوی وارد می شوند.
به نظر می رسد که می توان یک نقشه دوخطی روی نقاط منحنی بیضوی ایجاد کرد - یعنی با یک تابع �(�،�) که در آن ورودی ها � و � نقاط منحنی بیضوی هستند، و خروجی آن چیزی است که به آن (��) 12 عنصر (حداقل در مورد خاصی که در اینجا به آن خواهیم پرداخت؛ مشخصات بسته به جزئیات منحنی متفاوت است، در ادامه بیشتر در مورد آن توضیح خواهیم داد)، اما ریاضیات پشت انجام این کار بسیار پیچیده است.
ابتدا فیلدهای اول و فیلدهای پسوندی را پوشش می دهیم. منحنی بیضوی زیبا در تصویر قبلی در این پست تنها در صورتی به نظر می رسد که فرض کنید معادله منحنی با استفاده از اعداد واقعی منظم تعریف شده است. با این حال، اگر واقعاً از اعداد واقعی معمولی در رمزنگاری استفاده کنیم، میتوانید از لگاریتم برای «عقب رفتن» استفاده کنید و همه چیز خراب میشود. علاوه بر این، مقدار فضای مورد نیاز برای ذخیره و نمایش اعداد ممکن است خودسرانه افزایش یابد. بنابراین، ما در عوض از اعداد در a استفاده می کنیم میدان اصلی.
یک فیلد اول از مجموعه اعداد 0,1,2،1،XNUMX…�-XNUMX تشکیل شده است که � اول است و عملیات مختلف به صورت زیر تعریف می شوند:
�+�:(�+�) % �
�⋅�:(�⋅�) % �
���:(����) % �
�/�:(��⋅���2) % �
اساساً، تمام ریاضیات به صورت مدول انجام می شود (نگاه کنید به اینجا کلیک نمایید برای مقدمه ای بر ریاضیات مدولار). تقسیم یک مورد خاص است; به طور معمول، 32 یک عدد صحیح نیست، و در اینجا ما میخواهیم فقط با اعداد صحیح سروکار داشته باشیم، بنابراین در عوض سعی میکنیم عدد � را به گونهای بیابیم که �⋅2=3، که البته ⋅ به ضرب مدولار همانطور که در بالا تعریف شد اشاره دارد. با تشکر از قضیه کوچک فرما، ترفند افزایش قدرت نشان داده شده در بالا کار را انجام می دهد، اما راه سریع تری نیز برای انجام آن وجود دارد، با استفاده از الگوریتم اقلیدسی توسعه یافته. فرض کنید �=7; در اینجا چند نمونه هستند:
2+3=5 % 7=5
4+6=10 % 7=3
2−5=−3 % 7=4
6⋅3=18 % 7=4
3/2=(3⋅25) % 7=5
5⋅2=10 % 7=3
اگر با این نوع ریاضی بازی کنید، متوجه خواهید شد که کاملاً سازگار است و تمام قوانین معمول را برآورده می کند. دو مثال آخر بالا نشان می دهد که چگونه (�/�)⋅�=�; شما همچنین می توانید ببینید که (�+�)+�=�+(�+�)، (�+�)⋅�=�⋅�+�⋅�، و تمام هویت های جبری دبیرستانی دیگری که می شناسید و دوست دارید ادامه دارد. برای حفظ درست نیز. در منحنیهای بیضوی در واقعیت، نقاط و معادلات معمولاً در میدانهای اول محاسبه میشوند.
حال ، اجازه دهید در مورد صحبت کنیم زمینه های پسوند. احتمالاً قبلاً یک فیلد افزونه را دیدهاید. رایجترین مثالی که در کتابهای درسی ریاضی با آن مواجه میشوید، فیلد اعداد مختلط است که در آن، فیلد اعداد حقیقی با عنصر اضافی -1=� «بسط مییابد». اساساً، فیلدهای توسعه با گرفتن یک فیلد موجود، سپس "اختراع" یک عنصر جدید و تعریف رابطه بین آن عنصر و عناصر موجود (در این مورد، �2+1=0) کار می کنند، و اطمینان حاصل می کنند که این معادله درست نیست. برای هر عددی که در فیلد اصلی است، و به مجموعه تمام ترکیبات خطی عناصر فیلد اصلی و عنصر جدیدی که به تازگی ایجاد کردهاید نگاه کنید.
ما می توانیم پسوند فیلدهای اول را نیز انجام دهیم. برای مثال، میتوانیم mod7 فیلد اصلی را که در بالا توضیح دادیم با � گسترش دهیم و سپس میتوانیم انجام دهیم:
(2+3�)+(4+2�)=6+5�
(5+2�)+3=1+2�
(6+2�)⋅2=5+4�
4�⋅(2+�)=3+�
نتیجه آخر ممکن است کمی سخت باشد. اتفاقی که در آنجا افتاد این بود که ما ابتدا محصول را به 4⋅2+4�⋅� تجزیه می کنیم، که 8--4 می دهد، و سپس به دلیل اینکه در ریاضی mod7 کار می کنیم که تبدیل به �+3 می شود. برای تقسیم، انجام می دهیم:
�/�:(�⋅�(�2-2)) ٪ �
توجه داشته باشید که توان قضیه کوچک فرما اکنون به جای � �2 است، اگرچه یک بار دیگر اگر میخواهیم کارآمدتر باشیم، میتوانیم الگوریتم اقلیدسی توسعه یافته را برای انجام کار گسترش دهیم. توجه داشته باشید که ��2-1=1 برای هر � در این فیلد، بنابراین ما �2-1 را "ترتیب گروه ضرب در فیلد" می نامیم.
با اعداد واقعی، قضیه اساسی جبر تضمین می کند که پسوند درجه دومی که ما اعداد مختلط می نامیم "کامل" است - شما نمی توانید آن را بیشتر گسترش دهید، زیرا برای هر رابطه ریاضی (حداقل، هر رابطه ریاضی تعریف شده توسط یک فرمول جبری) که می توانید بین یک عنصر جدید به دست آورید. و اعداد مختلط موجود، میتوان حداقل یک عدد مختلط را که قبلاً آن رابطه را برآورده میکند، به دست آورد. با این حال، با فیلدهای اول، ما این مسئله را نداریم، و بنابراین میتوانیم جلوتر برویم و پسوندهای مکعبی ایجاد کنیم (که در آن رابطه ریاضی بین برخی از عناصر جدید و عناصر میدان موجود یک معادله مکعبی است، بنابراین 1 و � و 2 برابر هستند. همه به طور خطی مستقل از یکدیگر)، پسوندهای مرتبه بالاتر، پسوندهای پسوند، و غیره. و این نوع اعداد مختلط مدولار سوپرشارژ هستند که جفتهای منحنی بیضوی بر روی آنها ساخته میشوند.
برای کسانی که علاقه مند به دیدن ریاضیات دقیق مربوط به نوشتن همه این عملیات در کد هستند، فیلدهای اول و پسوندهای فیلد در اینجا پیاده سازی می شوند: https://github.com/ethereum/py_pairing/blob/master/py_ecc/bn128/bn128_field_elements.py
اکنون، به جفت منحنی های بیضوی می پردازیم. یک جفت منحنی بیضوی (یا بهتر است بگوییم، شکل خاصی از جفت شدن که در اینجا بررسی خواهیم کرد؛ انواع دیگری از جفتها نیز وجود دارد، اگرچه منطق آنها تقریباً مشابه است) یک نقشه �2×��1→�� است، که در آن:
- �1 یک منحنی بیضوی است، که در آن نقاط، معادله ای به شکل �2=�3+� را برآورده می کنند، و هر دو مختصات عناصر �� هستند (یعنی اعداد ساده هستند، به جز اینکه محاسبات همه با مدول یک عدد اول انجام می شود)
- �2 یک منحنی بیضوی است، که در آن نقاط همان معادله �1 را برآورده می کنند، به جز جایی که مختصات عناصر (��) 12 هستند (یعنی اعداد مختلط سوپرشارژی هستند که در بالا در مورد آنها صحبت کردیم؛ ما یک عدد جادویی جدید تعریف می کنیم. ” �، که با یک چند جمله ای درجه 12 مانند �12-18⋅�6+82=0 تعریف می شود)
- �� نوع جسمی است که نتیجه منحنی بیضوی به آن وارد می شود. در منحنی هایی که به آنها نگاه می کنیم، �� (���) 12 است (همان عدد مختلط سوپرشارژ استفاده شده در �2)
ویژگی اصلی که باید برآورده شود دوخطی بودن است که در این زمینه به این معنی است که:
- �(�،�+�)=�(�،�)⋅�(�،�)
- �(�+�،�)=�(�،�)⋅�(�،�)
دو معیار مهم دیگر وجود دارد:
- قابلیت محاسبه کارآمد (به عنوان مثال، ما می توانیم به سادگی با گرفتن لگاریتم های گسسته همه نقاط و ضرب آنها در یکدیگر یک جفت سازی آسان ایجاد کنیم، اما این از نظر محاسباتی به اندازه شکستن رمزنگاری منحنی بیضوی در وهله اول سخت است، بنابراین به حساب نمی آید)
- عدم انحطاط (مطمئناً، شما فقط میتوانید �(�،�)=1 را تعریف کنید، اما این جفت شدن چندان مفید نیست)
خب چطور اینکار رو انجام بدیم؟
ریاضیات پشت این که چرا توابع جفت سازی کار می کنند بسیار مشکل است و شامل جبر بسیار پیشرفته ای است که حتی فراتر از آنچه تاکنون دیده ایم، است، اما من یک طرح کلی ارائه خواهم کرد. ابتدا باید مفهوم a را تعریف کنیم تقسیم کننده، اساساً یک روش جایگزین برای نمایش توابع در نقاط منحنی بیضوی. مقسوم علیه تابع اساساً صفر و بینهایت تابع را می شمارد. برای اینکه بفهمیم این به چه معناست، اجازه دهید چند مثال را مرور کنیم. اجازه دهید یک نقطه �=(��،��) را برطرف کنیم و تابع زیر را در نظر بگیریم:
�(�،�)=�����
مقسوم علیه [�]+[−�]-2⋅[�] است (از کروشه ها برای نشان دادن این واقعیت استفاده می شود که به آن اشاره می کنیم. وجود نقطه � در مجموعه صفرها و بی نهایت های تابع، نه خود نقطه P. [�]+[�] است نه همان چیزی که [�+�]). استدلال به شرح زیر است:
- تابع برابر با صفر در � است، زیرا � is ��، بنابراین �����=0
- تابع برابر با صفر در −� است، زیرا −� و � مختصات مشابهی دارند
- تابع به بی نهایت می رود همانطور که � به بی نهایت می رود، بنابراین می گوییم تابع برابر با بی نهایت در � است. یک دلیل فنی وجود دارد که چرا این بینهایت باید دو بار شمرده شود، بنابراین � با «کثرت» 2- جمع میشود (منفی چون یک بینهایت است و نه صفر، دو به دلیل این شمارش مضاعف).
دلیل فنی تقریباً این است: از آنجا که معادله منحنی �3 = �2+� است ، � به بی نهایت "1.5 برابر سریعتر" از � می رود تا �2 با �3 همراه باشد. از این رو، اگر یک تابع خطی فقط شامل � باشد، به صورت بی نهایتی از کثرت 2 نمایش داده می شود، اما اگر شامل � باشد، به عنوان بی نهایت از تعدد 3 نشان داده می شود.
اکنون، یک "تابع خط" را در نظر بگیرید:
��+��+�=0
جایی که �، � و � به دقت انتخاب می شوند تا خط از نقاط � و � عبور کند. به دلیل نحوه کار جمع منحنی بیضوی (نمودار بالا را ببینید)، این نیز به این معنی است که از −�-� عبور می کند. و تا بی نهایت وابسته به � و � بالا می رود، بنابراین مقسوم علیه تبدیل به [�]+[�]+[−�-�]-3⋅[� می شود.
ما می دانیم که هر "تابع گویا" (یعنی تابعی که فقط با استفاده از تعداد محدودی از +،-، ⋅ و / بر روی مختصات نقطه تعریف می شود) به طور منحصر به فردی با مقداری مقسوم علیه، تا ضرب در یک ثابت (یعنی. اگر دو تابع � و � مقسوم علیه یکسانی داشته باشند، برای مقداری ثابت �=�⋅�.
برای هر دو تابع � و �، مقسوم علیه �⋅� برابر است با مقسوم علیه � به اضافه مقسوم علیه � (در کتاب های درسی ریاضی، (�⋅�)=(�)+(�) را خواهید دید. برای مثال اگر �(�،�)=�����، سپس (�3)=3⋅[�]+3⋅[−�]-6⋅[�]; � و ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
توجه داشته باشید که یک قضیه وجود دارد که بیان میکند که اگر کروشههای مربع را از مقسومگیرنده یک تابع حذف کنید، مجموع نقاط باید برابر با �([�]+[�]+[−���]-3⋅[ �] به وضوح مطابق با �+�������-3⋅�=� است، و هر مقسومکنندهای که این ویژگی را داشته باشد، مقسومکننده یک تابع است.
اکنون، ما آماده ایم تا جفت های تیت را بررسی کنیم. توابع زیر را که از طریق مقسومکنندههای آنها تعریف شدهاند، در نظر بگیرید:
- (��)=�⋅[�]−�⋅[�]، که در آن � مرتبه �1 است، یعنی. �⋅�=� برای هر �
- (��)=�⋅[�]-�⋅[�]
- (�)=[�+�]-[�]-[�]+[�
حالا بیایید به محصول ��⋅��⋅�� نگاه کنیم. مقسم عبارت است از:
�⋅[�]−.
که به سادگی به موارد زیر ساده می شود:
�⋅[�+�]-��⋅[�]
توجه داشته باشید که این مقسومگیرنده دقیقاً همان فرمت مقسومگیرنده �� و �� بالا است. بنابراین، ��⋅���⋅��=��+�.
اکنون، رویهای به نام مرحله «توان نهایی» معرفی میکنیم، که در آن نتیجه توابع بالا (������������������������������������������������������������������������������������������������������������������������������������������������������������������������� که در آن �12-1 ترتیب گروه ضربی در (��)12 است (یعنی برای هر �∈(��)12،�(�12-1)=1). توجه داشته باشید که اگر این قدرت را برای هر نتیجه ای اعمال کنید قبلا با افزایش توان �، شما یک توان به توان �12-1 دریافت می کنید، بنابراین نتیجه به 1 تبدیل می شود. بنابراین، پس از توان نهایی، �� لغو می شود و ما می گیریم�����������=( ��+�)�. مقداری دوخطی برای شما وجود دارد.
حال، اگر میخواهید تابعی بسازید که در هر دو آرگومان دوخطی باشد، باید به ریاضیات ترسناکتر بروید، جایی که بهجای اینکه مستقیماً یک مقدار �� را بگیرید، از یک مقدار ��� بگیرید تقسیم کننده، و اینجاست که "جفت شدن تیت" کامل از آنجا می آید. برای اثبات برخی نتایج بیشتر، باید با مفاهیمی مانند «معادل خطی» و «تقابل ویل» سر و کار داشته باشید، و سوراخ خرگوش از آنجا ادامه مییابد. شما می توانید مطالب خواندنی بیشتری در مورد همه اینها پیدا کنید اینجا کلیک نمایید و اینجا کلیک نمایید.
برای اجرای یک نسخه اصلاح شده از جفت شدن تیت، به نام تفکیک بهینه Ate، در اینجا مشاهده کنید. کد پیاده سازی می کند الگوریتم میلر، که برای محاسبه واقعی �� مورد نیاز است.
توجه داشته باشید که این واقعیت که جفتسازیهایی مانند این ممکن است تا حدودی یک موهبت مختلط است: از یک سو، به این معنی است که همه پروتکلهایی که میتوانیم با جفتسازی انجام دهیم امکانپذیر میشوند، اما همچنین به این معناست که باید در مورد منحنیهای بیضوی بیشتر مراقب باشیم. ما استفاده می کنیم.
هر منحنی بیضوی مقداری به نام an دارد درجه تعبیه; اساسا، کوچکترین � به گونه ای که ���-1 مضرب � باشد (که در آن � عدد اول استفاده شده برای فیلد و � ترتیب منحنی است). در فیلدهای بالا، �=12، و در فیلدهایی که برای ECC سنتی استفاده میشوند (یعنی جایی که ما به جفتها اهمیتی نمیدهیم)، درجه جاسازی اغلب بسیار زیاد است، تا جایی که محاسبه جفتها از نظر محاسباتی غیرممکن است. با این حال، اگر مراقب نباشیم، میتوانیم فیلدهایی را ایجاد کنیم که �=4 یا حتی 1 باشد.
اگر �=1، آنگاه مسئله "لگاریتم گسسته" برای منحنی های بیضوی (در اصل، بازیابی � فقط با دانستن نقطه �=�⋅�، مشکلی که باید برای "شکستن" کلید خصوصی منحنی بیضی حل کنید) می تواند کاهش یابد. به یک مسئله ریاضی مشابه روی ��، که در آن مسئله بسیار ساده تر می شود (به این می گویند حمله MOV) استفاده از منحنیهایی با درجه تعبیه 12 یا بالاتر تضمین میکند که این کاهش یا در دسترس نیست، یا حل مشکل گزارش گسسته بر روی نتایج جفتسازی حداقل به سختی بازیابی یک کلید خصوصی از یک کلید عمومی "روش عادی" است (یعنی. از نظر محاسباتی غیرممکن). نگران نباش؛ تمام پارامترهای منحنی استاندارد به طور کامل برای این موضوع بررسی شده است.
منتظر توضیح ریاضی نحوه عملکرد zk-SNARK باشید، به زودی.
تشکر ویژه از کریستین ریتویسنر، آریل گابیزون (از Zcash) و آلفرد منزز برای بررسی و انجام اصلاحات.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoData.Network Vertical Generative Ai. به خودت قدرت بده دسترسی به اینجا.
- PlatoAiStream. هوش وب 3 دانش تقویت شده دسترسی به اینجا.
- PlatoESG. کربن ، CleanTech، انرژی، محیط، خورشیدی، مدیریت پسماند دسترسی به اینجا.
- PlatoHealth. هوش بیوتکنولوژی و آزمایشات بالینی. دسترسی به اینجا.
- BlockOffsets. نوسازی مالکیت افست زیست محیطی. دسترسی به اینجا.
- منبع: هوش داده افلاطون