ভিটালিক বুটেরিন এর মাধ্যমে ভিটালিক বুটেরিন ব্লগ
এটি এ পোস্টের একটি আয়না https://medium.com/@VitalikButerin/zk-snarks-under-the-hood-b33151a013f6
এটি zk-SNARK-এর পিছনের প্রযুক্তি কীভাবে কাজ করে তা ব্যাখ্যা করে একটি সিরিজের নিবন্ধের তৃতীয় অংশ; উপর পূর্ববর্তী নিবন্ধ দ্বিঘাত পাটিগণিত প্রোগ্রাম এবং উপবৃত্তাকার বক্ররেখা জোড়া পড়া প্রয়োজন, এবং এই নিবন্ধটি উভয় ধারণার জ্ঞান গ্রহণ করবে। zk-SNARKগুলি কী এবং তারা কী করে তার প্রাথমিক জ্ঞানও অনুমান করা হয়। আরো দেখুন খ্রিস্টান Reitwiessner এর নিবন্ধ এখানে আরেকটি প্রযুক্তিগত পরিচয়ের জন্য।
পূর্ববর্তী নিবন্ধগুলিতে, আমরা চতুর্মুখী গাণিতিক প্রোগ্রামটি প্রবর্তন করেছি, একটি বহুপদ সমীকরণের সাথে যে কোনও গণনাগত সমস্যাকে উপস্থাপন করার একটি উপায় যা গাণিতিক চালাকির বিভিন্ন রূপের জন্য অনেক বেশি উপযুক্ত। আমরা উপবৃত্তাকার কার্ভ পেয়ারিংও চালু করেছি, যা খুব সীমিত আকারের একমুখী হোমোমরফিক এনক্রিপশনকে অনুমতি দেয় যা আপনাকে সমতা পরীক্ষা করতে দেয়। এখন, আমরা যেখান থেকে বাদ দিয়েছিলাম সেখান থেকে শুরু করতে যাচ্ছি, এবং উপবৃত্তাকার বক্ররেখা জোড়া ব্যবহার করতে যাচ্ছি, কিছু অন্যান্য গাণিতিক কৌশলের সাথে, যাতে প্রমাণ করার অনুমতি দেওয়া হয় যে তারা একটি নির্দিষ্ট QAP-এর সমাধান জানেন প্রকৃত সমাধান।
এই নিবন্ধটি ফোকাস করা হবে পিনোকিও প্রোটোকল পার্নো, জেন্ট্রি, হাভেল এবং রায়কোভা 2013 থেকে (প্রায়ই PGHR13 বলা হয়); বেসিক মেকানিজমের কিছু ভিন্নতা রয়েছে, তাই বাস্তবে বাস্তবায়িত একটি zk-SNARK স্কিম কিছুটা ভিন্নভাবে কাজ করতে পারে, কিন্তু সাধারণ নীতিগুলি একই থাকবে।
শুরু করার জন্য, আসুন আমরা যে প্রক্রিয়াটি ব্যবহার করতে যাচ্ছি তার নিরাপত্তার অন্তর্নিহিত মূল ক্রিপ্টোগ্রাফিক অনুমানে যাই: *জ্ঞান-অব-প্রতিফলক* ধৃষ্টতা.
মূলত, আপনি যদি একটি জোড়া পয়েন্ট � এবং � পান, যেখানে �⋅�=�, এবং আপনি একটি বিন্দু � পান, তাহলে �⋅� এর সাথে আসা সম্ভব নয় যদি না � কোনোভাবে � থেকে "উত্পন্ন" না হয়। এটা তুমি জান. এটি স্বজ্ঞাতভাবে সুস্পষ্ট বলে মনে হতে পারে, কিন্তু এই অনুমানটি আসলে অন্য কোন অনুমান (যেমন বিচ্ছিন্ন লগ কঠোরতা) থেকে উদ্ভূত হতে পারে না যা আমরা সাধারণত উপবৃত্তাকার বক্ররেখা-ভিত্তিক প্রোটোকলের নিরাপত্তা প্রমাণ করার সময় ব্যবহার করি, এবং তাই zk-SNARKগুলি আসলে কিছুটা বিশ্রাম নেয়। উপবৃত্তাকার বক্ররেখার ক্রিপ্টোগ্রাফির চেয়ে নড়বড়ে ভিত্তি - যদিও এটি এখনও যথেষ্ট মজবুত যে বেশিরভাগ ক্রিপ্টোগ্রাফার এটির সাথে ঠিক আছে।
এখন, আসুন কিভাবে এটি ব্যবহার করা যেতে পারে. মনে করা হয় যে এক জোড়া বিন্দু (�,�) আকাশ থেকে পড়ে, যেখানে �⋅�=�, কিন্তু � এর মান কী তা কেউ জানে না। এখন, ধরুন আমি এক জোড়া পয়েন্ট নিয়ে এসেছি (�,�) যেখানে �⋅�=�। তারপরে, KoE অনুমানটি বোঝায় যে আমি এই জোড়া পয়েন্টগুলি তৈরি করতে পারতাম একমাত্র উপায় হল � এবং � গ্রহণ করা এবং উভয়কে কিছু ফ্যাক্টর r দ্বারা গুণ করা। যা আমি ব্যক্তিগতভাবে জানি. এছাড়াও মনে রাখবেন যে উপবৃত্তাকার বক্ররেখা জোড়ার যাদুকে ধন্যবাদ, এটি পরীক্ষা করে দেখুন �=�⋅� আসলে জানার প্রয়োজন নেই � - পরিবর্তে, আপনি কেবল পরীক্ষা করতে পারেন কিনা �(�,�)=�(�,�)।
এর আরো আকর্ষণীয় কিছু করা যাক. ধরুন আমাদের আকাশ থেকে দশ জোড়া বিন্দু পড়ে আছে: (�1,�1),(�2,�2)…(�10,�10)। সব ক্ষেত্রে, ��⋅�=��। ধরুন আমি আপনাকে এক জোড়া পয়েন্ট (�,�) প্রদান করি যেখানে �⋅�=�। আপনি এখন কি জানেন? আপনি জানেন যে � হল কিছু লিনিয়ার কম্বিনেশন �1⋅�1+�2⋅�2+…+�10⋅�10, যেখানে আমি জানি �1,�2…�10 সহগ। অর্থাৎ, এই ধরনের একটি জোড়া বিন্দুতে (�,�) পৌঁছানোর একমাত্র উপায় হল �1,�2…�10-এর কিছু গুণিতক গ্রহণ করা এবং সেগুলোকে একত্রে যোগ করা এবং �1,�2 দিয়ে একই গণনা করা। �10.
মনে রাখবেন, �1...�10 পয়েন্টের যে কোনো নির্দিষ্ট সেটের জন্য আপনি রৈখিক সংমিশ্রণ পরীক্ষা করতে চাইতে পারেন, আপনি প্রকৃতপক্ষে � কি না জেনে সহকারে �1...�10 পয়েন্ট তৈরি করতে পারবেন না, এবং যদি আপনি জানেন কি � তাহলে আপনি একটি জোড়া (�,�) তৈরি করতে পারেন যেখানে �⋅�=� আপনি যা চান তার জন্য, একটি রৈখিক সংমিশ্রণ তৈরি করতে বিরক্ত না করে। অতএব, এটি কাজ করার জন্য এটি একেবারে অপরিহার্য যে যে কেউ এই পয়েন্টগুলি তৈরি করে সে বিশ্বস্ত এবং বাস্তবে মুছে ফেলবে � একবার তারা দশটি পয়েন্ট তৈরি করে। এখান থেকেই একটি "বিশ্বস্ত সেটআপ" ধারণাটি আসে.
মনে রাখবেন যে একটি QAP এর সমাধান হল বহুপদ (�,�,�) এর একটি সেট যেমন �(�)⋅�(�)−�(�)=�(�)⋅�(�), যেখানে:
- � হল বহুপদী সেটের একটি রৈখিক সমন্বয় {�1…��}
- � হল একই সহগ সহ {�1…��} এর রৈখিক সমন্বয়
- � হল একই সহগ সহ {�1…��} এর একটি রৈখিক সংমিশ্রণ
সেটগুলি {�1…��},{�1…��} এবং {�1…��} এবং বহুপদী � সমস্যা বিবৃতির অংশ।
যাইহোক, বেশিরভাগ বাস্তব-বিশ্বের ক্ষেত্রে, �,� এবং � অত্যন্ত বড়; একটি হ্যাশ ফাংশনের মতো হাজার হাজার সার্কিট গেট সহ কিছুর জন্য, বহুপদে (এবং রৈখিক সংমিশ্রণের জন্য ফ্যাক্টর) হাজার হাজার পদ থাকতে পারে। তাই, প্রোভারকে সরাসরি রৈখিক সংমিশ্রণ প্রদান করার পরিবর্তে, আমরা উপরে প্রবর্তিত কৌশলটি ব্যবহার করব যাতে প্রভার প্রমাণ করে যে তারা এমন কিছু প্রদান করছে যা একটি রৈখিক সংমিশ্রণ, কিন্তু অন্য কিছু প্রকাশ না করে।
আপনি হয়তো লক্ষ্য করেছেন যে উপরের কৌশলটি উপবৃত্তাকার বক্ররেখার উপর কাজ করে, বহুপদ নয়। সুতরাং, আসলে যা ঘটে তা হল আমরা বিশ্বস্ত সেটআপে নিম্নলিখিত মানগুলি যুক্ত করি:
- �⋅�1(�),�⋅�1(�)⋅��
- �⋅�2(�),�⋅�2(�)⋅��
- ...
- �⋅�1(�),�⋅�1(�)⋅��
- �⋅�2(�),�⋅�2(�)⋅��
- ...
- �⋅�1(�),�⋅�1(�)⋅��
- �⋅�2(�),�⋅�2(�)⋅��
- ...
আপনি t কে একটি "গোপন বিন্দু" হিসাবে ভাবতে পারেন যেখানে বহুপদী মূল্যায়ন করা হয়। � একটি "জেনারেটর" (কিছু এলোমেলো উপবৃত্তাকার বক্ররেখা বিন্দু যা প্রোটোকলের অংশ হিসাবে নির্দিষ্ট করা হয়) এবং �,��,�� এবং �� হল "বিষাক্ত বর্জ্য", সংখ্যা যেগুলিকে অবশ্যই সব মূল্যে মুছে ফেলতে হবে, অন্যথায় যাদের কাছে আছে তারা জাল প্রমাণ তৈরি করতে সক্ষম হবে। এখন, যদি কেউ আপনাকে এক জোড়া পয়েন্ট দেয় �, � যেমন �⋅��=� (অনুস্মারক: আমাদের এটি চেক করার জন্য �� দরকার নেই, যেহেতু আমরা একটি জোড়া চেক করতে পারি), তাহলে আপনি জানেন যে তারা কী are give you একটি রৈখিক সংমিশ্রণ �� বহুপদে মূল্যায়ন করা হয়।
অতএব, এ পর্যন্ত প্রযোজক অবশ্যই দিতে হবে:
- ��=�⋅�(�),��′=�⋅�(�)⋅��
- ��=�⋅�(�),��′=�⋅�(�)⋅��
- ��=�⋅�(�),��′=�⋅�(�)⋅��
মনে রাখবেন যে এই মানগুলি গণনা করার জন্য প্রোভারের আসলে জানার প্রয়োজন নেই (এবং জানা উচিত নয়!) �,��,�� বা ��; বরং, আমরা বিশ্বস্ত সেটআপে যোগ করছি এমন পয়েন্টগুলি থেকে প্রভারের এই মানগুলি গণনা করতে সক্ষম হওয়া উচিত।
পরবর্তী পদক্ষেপটি নিশ্চিত করা যে তিনটি রৈখিক সংমিশ্রণে একই সহগ রয়েছে। আমরা বিশ্বস্ত সেটআপে মানগুলির আরেকটি সেট যোগ করে এটি করতে পারি: �⋅(��(�)+��(�)+��(�))⋅�, যেখানে � আরেকটি সংখ্যা যাকে "বিষাক্ত" হিসাবে বিবেচনা করা উচিত বর্জ্য" এবং বিশ্বস্ত সেটআপ সম্পূর্ণ হওয়ার সাথে সাথে বাতিল করা হয়। তারপরে আমরা প্রোভারকে একই সহগ সহ এই মানগুলির সাথে একটি রৈখিক সংমিশ্রণ তৈরি করতে পারি, এবং এই মানটি প্রদত্ত �+�+�ের সাথে মেলে কিনা তা যাচাই করতে উপরের মতো একই জোড়া কৌশল ব্যবহার করতে পারি।
অবশেষে, আমাদের প্রমাণ করতে হবে যে �⋅�−�=�⋅�। পেয়ারিং চেক দিয়ে আমরা এটি আবার করি:
�(��,��)/�(��,�)?=�(�ℎ,�⋅�(�))
যেখানে �ℎ=�⋅�(�)। যদি এই সমীকরণ এবং �⋅�−�=�⋅�ের মধ্যে সংযোগটি আপনার কাছে অর্থহীন হয় তবে ফিরে যান এবং পড়ুন পেয়ারিং সম্পর্কিত নিবন্ধ.
আমরা উপরে দেখেছি কিভাবে �,� এবং � কে উপবৃত্তাকার বক্ররেখায় রূপান্তর করা যায়; � শুধুমাত্র জেনারেটর (অর্থাৎ উপবৃত্তাকার বক্ররেখা বিন্দু এক নম্বরের সমতুল্য)। আমরা বিশ্বস্ত সেটআপে �⋅�(�) যোগ করতে পারি। � কঠিন; � শুধুমাত্র একটি বহুপদী, এবং প্রতিটি পৃথক QAP সমাধানের জন্য এর সহগ কী হবে সে সম্পর্কে আমরা সময়ের আগে খুব কম ভবিষ্যদ্বাণী করি। তাই, বিশ্বস্ত সেটআপে আমাদের আরও ডেটা যোগ করতে হবে; বিশেষ করে ক্রম:
�,�⋅�,�⋅�2,�⋅�3,�⋅�4...।
Zcash বিশ্বস্ত সেটআপে, এখানে ক্রমটি প্রায় 2 মিলিয়ন পর্যন্ত যায়; এটি হল � এর কতগুলি ক্ষমতা আপনাকে নিশ্চিত করতে হবে যে আপনি সর্বদা �(�) গণনা করতে সক্ষম হবেন, অন্তত নির্দিষ্ট QAP উদাহরণের জন্য যা তারা যত্ন করে। এবং এর সাথে, পরীকারী চূড়ান্ত চেক করার জন্য যাচাইকারীকে সমস্ত তথ্য সরবরাহ করতে পারে।
আরও একটি বিশদ রয়েছে যা আমাদের আলোচনা করা দরকার। বেশিরভাগ সময় আমরা বিমূর্তভাবে প্রমাণ করতে চাই না যে কিছু নির্দিষ্ট সমস্যার জন্য কিছু সমাধান বিদ্যমান; বরং, আমরা কিছু নির্দিষ্ট সমাধানের সঠিকতা প্রমাণ করতে চাই (উদাহরণস্বরূপ প্রমাণ করা যে আপনি যদি "গরু" শব্দটি নেন এবং SHA3 এটিকে এক মিলিয়ন বার হ্যাশ করেন, চূড়ান্ত ফলাফল 0x73064fe5 দিয়ে শুরু হয়), অথবা আপনি যদি সীমাবদ্ধ করেন তবে একটি সমাধান বিদ্যমান থাকে কিছু পরামিতি। উদাহরণস্বরূপ, একটি ক্রিপ্টোকারেন্সি ইনস্ট্যান্টেশনে যেখানে লেনদেনের পরিমাণ এবং অ্যাকাউন্ট ব্যালেন্স এনক্রিপ্ট করা হয়, আপনি প্রমাণ করতে চান যে আপনি কিছু ডিক্রিপশন কী জানেন যেমন:
decrypt(old_balance, k) >= decrypt(tx_value, k)
decrypt(old_balance, k) - decrypt(tx_value, k) = decrypt(new_balance, k)
এনক্রিপ্ট করা old_balance
, tx_value
এবং new_balance
সর্বজনীনভাবে নির্দিষ্ট করা উচিত, কারণ সেগুলি সেই নির্দিষ্ট মান যা আমরা সেই নির্দিষ্ট সময়ে যাচাই করতে চাইছি; শুধুমাত্র ডিক্রিপশন কী লুকানো উচিত। একটি "কাস্টম যাচাইকরণ কী" তৈরি করতে প্রোটোকলের কিছু সামান্য পরিবর্তন প্রয়োজন যা ইনপুটগুলিতে কিছু নির্দিষ্ট সীমাবদ্ধতার সাথে সামঞ্জস্যপূর্ণ।
এখন, একটু পিছিয়ে যাওয়া যাক। প্রথমত, এখানে সম্পূর্ণরূপে যাচাইকরণ অ্যালগরিদম রয়েছে, বেন-এর সৌজন্যে Sasson, Tromer, Virza এবং Chiesa:
প্রথম লাইনটি প্যারামেট্রিকরণ নিয়ে কাজ করে; মূলত, আপনি এটির কাজটিকে একটি "কাস্টম যাচাইকরণ কী" তৈরি করার মতো ভাবতে পারেন সমস্যার নির্দিষ্ট উদাহরণের জন্য যেখানে কিছু যুক্তি উল্লেখ করা হয়েছে। দ্বিতীয় লাইন হল �,� এবং � এর জন্য রৈখিক সমন্বয় চেক; তৃতীয় লাইন হল চেক যে রৈখিক সংমিশ্রণগুলির একই সহগ রয়েছে এবং চতুর্থ লাইন হল পণ্য চেক �⋅�−�=�⋅�।
সামগ্রিকভাবে, যাচাইকরণ প্রক্রিয়া হল কয়েকটি উপবৃত্তাকার বক্ররেখা গুণন (প্রতিটি "পাবলিক" ইনপুট ভেরিয়েবলের জন্য একটি), এবং পাঁচটি জোড়া চেক, যার একটিতে একটি অতিরিক্ত জোড়া গুণন অন্তর্ভুক্ত রয়েছে। প্রমাণটিতে আটটি উপবৃত্তাকার বক্ররেখা রয়েছে: �(�),�(�) এবং �(�) এর জন্য প্রতিটি বিন্দুর একটি জোড়া, �⋅(�(�)+�(�)+�(�) এর জন্য একটি বিন্দু। )), এবং �(�) এর জন্য একটি বিন্দু �ℎ। এই বিন্দুগুলির মধ্যে সাতটি �� বক্ররেখায় রয়েছে (প্রতিটি 32 বাইট, যেহেতু আপনি � স্থানাঙ্ককে একটি একক বিটে সংকুচিত করতে পারেন), এবং Zcash বাস্তবায়নে একটি বিন্দু (��) ��2 (64) এর বাঁকানো বক্ররেখায় রয়েছে বাইট), তাই প্রমাণের মোট আকার হল ~ 288 বাইট।
একটি প্রমাণ তৈরি করার দুটি গণনাগতভাবে কঠিন অংশ হল:
- ভাগ করা (�⋅�−�)/� পেতে � (এর উপর ভিত্তি করে অ্যালগরিদম ফাস্ট ফোরিয়ার ট্রান্সফর্ম সাব-কোয়াড্রেটিক সময়ে এটি করতে পারে, তবে এটি এখনও বেশ গণনামূলকভাবে নিবিড়)
- �(�),�(�),�(�) এবং �(�) মান এবং তাদের অনুরূপ জোড়া তৈরি করতে উপবৃত্তাকার বক্ররেখার গুণ ও সংযোজন করা
একটি প্রমাণ তৈরি করা এত কঠিন হওয়ার মূল কারণটি হ'ল আসল গণনায় একটি একক বাইনারি লজিক গেট যা ছিল তা একটি অপারেশনে পরিণত হয় যা উপবৃত্তাকার কার্ভ অপারেশনের মাধ্যমে ক্রিপ্টোগ্রাফিকভাবে প্রক্রিয়া করা উচিত যদি আমরা এটি থেকে একটি শূন্য-জ্ঞান প্রমাণ তৈরি করি। . ফাস্ট ফুরিয়ার ট্রান্সফর্মের সুপারলাইন্যারিটির সাথে এই সত্যটির অর্থ হল একটি Zcash লেনদেনের জন্য প্রমাণ তৈরি করতে ~20-40 সেকেন্ড সময় লাগে।
আরেকটি অত্যন্ত গুরুত্বপূর্ণ প্রশ্ন হল: আমরা কি বিশ্বস্ত সেটআপকে একটু... কম বিশ্বাসযোগ্য করার চেষ্টা করতে পারি? দুর্ভাগ্যবশত আমরা এটি সম্পূর্ণরূপে বিশ্বাসহীন করতে পারি না; KoE অনুমান নিজেই স্বাধীন জোড়া (��,��⋅�) তৈরি করতে বাধা দেয় � কি না জেনে। যাইহোক, �-অফ- মাল্টিপার্টি কম্পিউটেশন ব্যবহার করে আমরা নিরাপত্তা বাড়াতে পারি - অর্থাৎ, � পক্ষগুলির মধ্যে বিশ্বস্ত সেটআপ এমনভাবে তৈরি করা যাতে অন্তত একজন অংশগ্রহণকারী তাদের বিষাক্ত বর্জ্য মুছে ফেললে আপনি ঠিক আছেন। .
আপনি কীভাবে এটি করবেন সে সম্পর্কে কিছুটা অনুভূতি পেতে, এখানে একটি বিদ্যমান সেট (�,�⋅�,�⋅�2,�⋅�3…) নেওয়ার এবং আপনার নিজের গোপনীয়তা "যোগ" করার জন্য একটি সহজ অ্যালগরিদম রয়েছে যাতে প্রতারণা করার জন্য আপনার গোপনীয়তা এবং পূর্ববর্তী গোপনীয়তা (বা গোপনীয়তার পূর্ববর্তী সেট) উভয়ই প্রয়োজন।
আউটপুট সেট সহজভাবে:
�,(�⋅�)⋅�,(�⋅�2)⋅�2,(�⋅�3)⋅�3…
মনে রাখবেন যে আপনি শুধুমাত্র আসল সেট এবং s জেনে এই সেটটি তৈরি করতে পারেন এবং নতুন সেটটি পুরানো সেটের মতো একইভাবে কাজ করে, এখন � এর পরিবর্তে �⋅� কে "বিষাক্ত বর্জ্য" হিসাবে ব্যবহার করা ছাড়া। যতক্ষণ না আপনি এবং যে ব্যক্তি (অথবা লোকেরা) পূর্ববর্তী সেটটি তৈরি করেছেন তারা উভয়েই আপনার বিষাক্ত বর্জ্য মুছে ফেলতে এবং পরে যোগসাজশ করতে ব্যর্থ না হন, সেটটি "নিরাপদ"।
সম্পূর্ণ বিশ্বস্ত সেটআপের জন্য এটি করা বেশ কিছুটা কঠিন, কারণ এতে বেশ কয়েকটি মান জড়িত রয়েছে এবং অ্যালগরিদমটি কয়েকটি রাউন্ডে পক্ষগুলির মধ্যে করতে হবে। মাল্টি-পার্টি কম্পিউটেশন অ্যালগরিদমকে আরও সরলীকরণ করা যায় এবং কম রাউন্ডের প্রয়োজন হয় বা আরও সমান্তরাল করা যায় কিনা তা দেখার জন্য এটি সক্রিয় গবেষণার একটি ক্ষেত্র, কারণ আপনি যত বেশি করতে পারবেন তত বেশি দলকে বিশ্বস্ত সেটআপ পদ্ধতিতে অন্তর্ভুক্ত করা সম্ভব হবে। . এটা দেখা যুক্তিসঙ্গত যে কেন ছয়জন অংশগ্রহণকারীর মধ্যে একটি বিশ্বস্ত সেটআপ যারা সবাই একে অপরকে জানে এবং তাদের সাথে কাজ করে কিছু লোককে অস্বস্তিকর করে তুলতে পারে, কিন্তু হাজার হাজার অংশগ্রহণকারীর সাথে একটি বিশ্বস্ত সেটআপ কোন বিশ্বাসের থেকে প্রায় আলাদা করা যায় না – এবং আপনি যদি সত্যিই বিভ্রান্ত হন , আপনি নিজেই সেটআপ পদ্ধতিতে প্রবেশ করতে এবং অংশগ্রহণ করতে পারেন এবং নিশ্চিত হন যে আপনি ব্যক্তিগতভাবে আপনার মূল্য মুছে ফেলেছেন।
সক্রিয় গবেষণার আরেকটি ক্ষেত্র হল অন্যান্য পদ্ধতির ব্যবহার যা একই লক্ষ্য অর্জনের জন্য জোড়া এবং একই বিশ্বস্ত সেটআপ দৃষ্টান্ত ব্যবহার করে না; দেখা এলি বেন সাসনের সাম্প্রতিক উপস্থাপনা একটি বিকল্পের জন্য (যদিও সতর্ক করা উচিত, এটি অন্তত গাণিতিকভাবে SNARK-এর মতো জটিল!)
পর্যালোচনা করার জন্য এরিয়েল গ্যাবিজন এবং ক্রিশ্চিয়ান রেইটউইসনারকে বিশেষ ধন্যবাদ।
- এসইও চালিত বিষয়বস্তু এবং পিআর বিতরণ। আজই পরিবর্ধিত পান।
- PlatoData.Network উল্লম্ব জেনারেটিভ Ai. নিজেকে ক্ষমতায়িত করুন। এখানে প্রবেশ করুন.
- প্লেটোএআইস্ট্রিম। Web3 ইন্টেলিজেন্স। জ্ঞান প্রসারিত. এখানে প্রবেশ করুন.
- প্লেটোইএসজি। কার্বন, ক্লিনটেক, শক্তি, পরিবেশ সৌর, বর্জ্য ব্যবস্থাপনা. এখানে প্রবেশ করুন.
- প্লেটো হেলথ। বায়োটেক এবং ক্লিনিক্যাল ট্রায়াল ইন্টেলিজেন্স। এখানে প্রবেশ করুন.
- ব্লকঅফসেট। পরিবেশগত অফসেট মালিকানার আধুনিকীকরণ। এখানে প্রবেশ করুন.
- উত্স: প্লেটো ডেটা ইন্টেলিজেন্স।