আপনার কি প্রয়োজন হবে:
- একটি কম্পিউটার বিজ্ঞান পটভূমি
- Ethereum এর মৌলিক বিষয়
- ক্যালকুলাসের বুনিয়াদি (সীমাবদ্ধতা অপ্টিমাইজেশন)
আপনি কি পাবেন:
- শূন্য-জ্ঞান SNARK-এর বুনিয়াদি
- মার্কেল গাছের মূল বিষয়
- কিভাবে Ethereum প্রতি সেকেন্ডে হাজার হাজার লেনদেন করতে পারে SNARK-কে ধন্যবাদ
SNARKs একজন প্রোভারকে একজন যাচাইকারীর কাছে প্রমাণ করতে দেয় যে তার/তার কাছে W প্রকাশ না করেই শেয়ার্ড/জানা ইনপুট X-এর সাথে F সমস্যার সমাধান রয়েছে।
সমস্যার সমাধান খুঁজতে বিপুল পরিমাণ গণনা শক্তি এবং মেমরির প্রয়োজন হতে পারে।
সুতরাং যাচাইকারী মূলত 100% নিশ্চিত হতে পারে যে প্রোভার সঠিকভাবে কাজ করেছে (এবং একটি সমাধান খুঁজে পেয়েছে), সমাধানটি পরীক্ষা করার জন্য নিজে নিজে কাজটি পুনরায় না করে বা সমাধানটি একেবারেই না জেনে। এটা জাদু!
প্রক্রিয়াটির 3টি ধাপ রয়েছে:
- সেটআপ — সমস্যা F (যেটি দ্বিঘাত পাটিগণিত প্রোগ্রাম হিসাবে প্রকাশ করা প্রয়োজন, নীচে দেখুন) SNARK-এর জন্য প্রস্তুত করা হয়েছে। সমস্যাটির জটিলতার উপর নির্ভর করে এই প্রক্রিয়াটি অত্যন্ত উচ্চ মেমরি এবং কম্পিউটিং নিবিড় (→ ইনপুট এবং সীমাবদ্ধতার সংখ্যা → সীমাবদ্ধতা সন্তুষ্টি সমস্যার ম্যাট্রিক্সের মাত্রা)। যে প্লেয়ারটি সেটআপ করে (নিজেই যাচাইকারী হতে পারে) তাকে অবশ্যই সমস্ত পক্ষের দ্বারা বিশ্বস্ত হতে হবে, যেহেতু সেটআপের আউটপুট পরবর্তী পর্যায়ে ব্যবহার করা হয়। সেটআপ সাধারণত ব্যবহার করে সম্পন্ন করা হয় libsnark, একটি C++ লাইব্রেরি যা zkSNARK-এর জন্য সবচেয়ে জনপ্রিয় বাস্তবায়ন।
- প্রভিং — দ্য প্রোভার, যার কাছে শেয়ার করা ইনপুট X-এর সাথে সমস্যা F-এর সমাধান রয়েছে (হয়তো সে এটি খুঁজে পেতে প্রচুর পরিমাণে CPU এবং মেমরি খরচ করেছে!), ব্যবহার করে libsnark এবং এর আউটপুট সেটআপ ফেজ একটি প্রমাণ তৈরি করতে 𝚷. এই প্রক্রিয়াটি অবশ্যই উচ্চ মেমরি এবং কম্পিউটিং নিবিড় (সমস্যার জটিলতার উপর নির্ভর করে, উপরের মত)। আউটপুটের আকার (অর্থাৎ প্রমাণ 𝚷) পরিবর্তে সংক্ষিপ্ত এবং সমস্যার জটিলতা থেকে স্বাধীনভাবে ধ্রুবক। প্রোভারকে বিশ্বাস করতে হবে কে সেটআপ ফেজ করেছে, যেহেতু সে/সে এর আউটপুট ব্যবহার করে...
- যাচাই করা হচ্ছে — একটি যাচাইকারী — ইনপুট হিসাবে সেটআপ পর্বের আউটপুট দেওয়া, শেয়ার করা ইনপুট X এবং প্রমাণ 𝚷 - প্রমাণ পরীক্ষা করে। যাচাইকরণ সফল হলে, Prover একজন যাচাইকারীর কাছে প্রমাণ করতে সক্ষম হয় যে সে/তিনি W সমস্যার সমাধান খুঁজে পেয়েছেন F... W প্রকাশ না করেই! চমৎকার অংশ হল যে শুধুমাত্র প্রমাণটি সংক্ষিপ্ত নয় এবং সবসময় একই দৈর্ঘ্য থাকে.., যাচাইকরণ প্রক্রিয়াটি দ্রুত এবং মেমরি/কম্পিউটিং নিবিড় নয়। আগের দুটি ধাপের বিপরীতে... মিলিসেকেন্ডে একটি স্মার্টফোন দিয়ে সহজেই যাচাই করা যায়!
একটি ভাল সংকলন (উৎস):
এটা কিভাবে ঘটতে পারে? ওয়েল, এটা মার্লিন জাদু! আপনি যদি এর পিছনে গণিত পেতে চান, এখান থেকে শুরু করুন.
আমি কীভাবে আমার সফ্টওয়্যারটিকে একটি দ্বিঘাত পাটিগণিত প্রোগ্রামে রূপান্তর করতে পারি?
উপরে উল্লিখিত হিসাবে, সেটআপ ফেজের সমস্যা F একটি দ্বিঘাত পাটিগণিত প্রোগ্রাম হতে হবে। খেলার নিয়ম কঠিন:
- আপনার সফ্টওয়্যারের ইনপুট সংখ্যা হওয়া উচিত। আপনার জিনিসপত্র (অ্যারে, স্ট্রিং, ইত্যাদি) সংখ্যায় রূপান্তর করুন। এটা তুচ্ছ।
- একটি "চতুর্মাত্রিকভাবে সীমাবদ্ধ সমীকরণের সিস্টেম" মানে:
যেখানে x হল আপনার ইনপুটগুলির n-মাত্রিক ভেক্টর, m হল সীমাবদ্ধতার সংখ্যা (যেমন আপনার সিস্টেমের সমীকরণের সংখ্যা), C হল n-বাই-n সহগ ম্যাট্রিক্স এবং q হল একটি n-মাত্রিক সহগ ভেক্টর। আপনি যদি ম্যাট্রিক্স এবং ভেক্টর পছন্দ না করেন তবে এখানে n = 3 এবং m = 2 কেস (3 ইনপুট, 2 সীমাবদ্ধতা):
- বাস্তবায়ন হল একটি গাণিতিক সার্কিট, যার মানে হল ফলাফল সমস্যা সমাধান (সিস্টেমটি সমাধান করা হয়েছে, অর্থাৎ সমস্ত বহুপদী 0 এর সমান) বা সমস্যার সমাধান হয়নি (অন্য সব ক্ষেত্রে)। অন্য কথায়: "এই ইনপুটগুলি এই সমস্যার সমাধানগুলির মধ্যে একটি নয়"।
- C₁, C₂, …, C𝚖, q₁, q₂, …, q𝚖 সহগ হল সিস্টেমের সীমাবদ্ধতা। এটি মূলত আপনার সফ্টওয়্যারকে সংজ্ঞায়িত করে। তাদের পরিবর্তন করুন... এবং আপনি অন্য সফ্টওয়্যার পাবেন! SNARK কিভাবে কাজ করে সে সম্পর্কে ফিরে যাওয়া: C₁, C₂, …, C𝚖, q₁, q₂, …, q𝚖 হল সেটআপ পর্বের ইনপুট। সেটআপ পর্বের আউটপুট (প্রমাণ এবং যাচাইয়ের জন্য আপনার প্রয়োজন) তাই কঠোরভাবে সেই C₁, C₂, …, C𝚖, q₁, q₂, …, q𝚖 এর সাথে সম্পর্কিত এবং শুধুমাত্র সেই সমস্যার জন্য কাজ করে। আপনি যদি সেগুলি পরিবর্তন করেন তবে আপনি অন্য একটি সফ্টওয়্যার/সমস্যা নির্ধারণ করছেন এবং আপনাকে সেটআপ ফেজটি পুনরায় চালাতে হবে! x₁, x₂, …, x𝗇 হল ভেরিয়েবল (অর্থাৎ সিস্টেমের সমাধান পেতে আপনাকে যা অনুমান করতে হবে)। তাই যখন আমরা বলি "প্রিয় প্রোভার, আপনি কি অনুগ্রহ করে শেয়ার্ড/পাবলিক ইনপুট X এর সাথে সমস্যা F-এর জন্য একটি গোপন সমাধান খুঁজে পেতে পারেন" আমরা উদাহরণ স্বরূপ বোঝাতে চাই "প্রিয় প্রভার, আপনি কি x₁, x₂, …, x𝗇 মানগুলি খুঁজে পেতে পারেন যা সিস্টেমের সমাধান করে সঙ্গে, উদাহরণস্বরূপ, x₇ = 2393, x₅₂₆ = 5647?" আপনি x₇ এবং x₅₂₆ ব্যতীত সমস্ত x𝗇 দিয়ে যা চান তা করতে পারেন, যা শেয়ার করা/পাবলিক ইনপুটগুলিতে সীমাবদ্ধ।
এটি একটি কঠিন জীবন কিন্তু আপনি বেঁচে থাকতে পারেন... আপনার যদি লুপের প্রয়োজন হয় তবে আপনি একই অপারেশনটি বহুবার পুনরাবৃত্তি করতে পারেন। অথবা যদি আপনার প্রয়োজন হয় উদাহরণস্বরূপ x₁⁴ x₂⁵, আপনি একটি নতুন ইনপুট x₃ = x₁⁴ x₂⁵ সংজ্ঞায়িত করুন এবং আপনার সীমাবদ্ধতার মধ্যে x₃ ব্যবহার করুন। এটি ভেরিয়েবল এবং সীমাবদ্ধতা যোগ করার বিষয়ে... এমনকি বেশ সাধারণ সফ্টওয়্যারগুলির জন্যও কয়েক মিলিয়ন বা বিলিয়ন ইনপুট এবং সীমাবদ্ধতায় পৌঁছানো সহজ!
আরও জানতে চাও? পড়ুন এখানে. এবং এই মৌলিক চেক আউট code_to_r1cs.py ইথেরিয়াম/গবেষণা থেকে।
একটি Merkle গাছ কি?
একটি হ্যাশ ফাংশন একটি নিয়ম যা নির্দিষ্ট আকারের একটি আউটপুটে ইচ্ছামত আকারের একটি ইনপুটকে ম্যাপ করে। আমরা একটি চমত্কার অকেজো হ্যাশ ফাংশন উদ্ভাবন করতে পারি "প্রথম দুটিকে শেষ দুটি অক্ষরের সাথে সংযুক্ত করুন" যা "উডি অ্যালেন"কে "উয়েন" এবং "পল ম্যাককার্টনি" থেকে "পেই" এ রূপান্তরিত করে।
একটি Merkle গাছ একটি তথ্য কাঠামো যেখানে প্রতিটি পিতামাতা তার দুই পুত্রের হ্যাশ হয়. শীর্ষে আপনি রুটটি খুঁজে পাবেন, যা লেভেল 1 এর দুটি পুত্রের হ্যাশ। নীচে, প্রতিটি পাতা একটি বাহ্যিক ইনপুটের হ্যাশ।
আমাদের কাল্পনিক "উডি অ্যালেন"→"উয়েন" হ্যাশ ফাংশন ব্যবহার করে:
যখন একটি পাতা পরিবর্তন হয়, পরিবর্তনটি মূল পর্যন্ত প্রচারিত হয়। যদি ANTHONY পরিবর্তন হয়, এছাড়াও ANNY (পাতা), CENY এবং CECO (রুট) পরিবর্তন হয়। যেই পাতা বদলায়, মূলও বদলায়।
রুট পুনরায় গণনা করার জন্য আপনার পুরো গাছের প্রয়োজন নেই। আমাদের উদাহরণে, যদি ANTHONY পরিবর্তিত হয় এবং আপনি JACO এবং CECILY উভয়কেই জানেন, তাহলে আপনি JAMES, MARCO, JAES এবং MACO-কে সম্পূর্ণরূপে উপেক্ষা করলেও আপনি সহজেই রুট পুনরায় গণনা করতে পারেন। বিশাল গাছের জন্য এটি অনেক সময় বাঁচায়!
তাই কি?
ডাটা ইন্টিগ্রিটি চেক করার জন্য মার্কেল গাছ দারুণ। সাধারণত: আপনি জানেন কোনটি বৈধ রুট, এবং আপনি চেক করেন যে প্রাপ্ত ডেটা সেই রুটের সাথে মেলে। উদাহরণস্বরূপ: একটি বিশ্বস্ত পক্ষ যে আপনাকে পৃথিবীতে মানুষের প্রথম নামের সম্পূর্ণ ডেটা সেট দিতে পারে না (কোনও সময় নেই, ব্যান্ডউইথ নেই বা সম্ভবত তার/তার কাছে মোটেও ডেটা নেই) আপনাকে শুধুমাত্র রুট দেয় (যেমন "CECO")। আফটারওয়ার্ডস: আপনি হাজার হাজার অবিশ্বস্ত পক্ষের দ্বারা লিফ নম্বরের রেফারেন্স সহ লক্ষ লক্ষ প্রথম নাম পেয়েছেন। ঠিক আছে, যেহেতু আপনার কাছে সঠিক রুট আছে আপনি কার উপর নির্ভর করতে পারেন, কে আপনাকে জাল ডেটা দিচ্ছে তা পরীক্ষা করতে পারেন…
Merkle গাছ আপনার জীবনের অংশ! আপনি যখন একটি 3GB টরেন্ট ফাইল ডাউনলোড করছেন, তখন আপনার ফাইলটি লক্ষ লক্ষ ছোট অংশে বিভক্ত হয়। প্রতিটি খণ্ডের হ্যাশ একটি পাতায় সংরক্ষণ করা হয়। যেহেতু আপনি জানেন যে গাছের বৈধ রুট কোনটি, প্রতিবার আপনি যখনই কারো দ্বারা ফাইলের একটি অংশ গ্রহণ করেন, আপনি এটি সঠিক কিনা তা পরীক্ষা করতে পারেন। যদি তা না হয়, আপনি একই অংশ অন্য কাউকে জিজ্ঞাসা করতে পারেন।
আপনি এটি করতে পারেন যদি আপনি এখনও সম্পূর্ণ গাছ/সমস্ত পাতা ডাউনলোড না করে থাকেন: যদি আপনি জানেন যে রুটটি CECO এবং আপনি JACO কে বিশ্বাস করেন… যখন আপনি ANTHONY পান তখন আপনি এটি যাচাই করতে পারেন এমনকি আপনি ডাউনলোড না করলেও তবুও খণ্ডগুলো মার্কো এবং জেমস।
কেন Merkle গাছগুলি বিতরণ করা খাতা প্রযুক্তিতে উপযোগী তা সহজবোধ্য: আপনি শুধুমাত্র রুট-এ ঐক্যমত পৌঁছানোর জন্য ঐক্যমত্য প্রোটোকল (ধীর, ব্যয়বহুল) ব্যবহার করেন। তারপর নেটওয়ার্কের অবিশ্বস্ত নোডগুলি দক্ষতার সাথে এবং সরাসরি ডেটা ভাগ করতে পারে... এবং রুট দিয়ে অখণ্ডতা পরীক্ষা করার জন্য নিরাপদ ও সুস্থ ঘুমাতে পারে।
যখন ঈশ্বর ইথেরিয়ামকে নিরাপত্তা, স্কেলেবিলিটি এবং বিকেন্দ্রীকরণের মধ্যে 2টি পরাশক্তি বেছে নিতে বলেছিলেন... ইথেরিয়াম স্কেলেবিলিটি উৎসর্গ করেছিল। প্রকৃতপক্ষে "প্রতি সেকেন্ডে লেনদেন" এর উপর কোন শক্তিশালী ক্যাপ নেই: ক্যাপটি প্রতিটি ব্লকের গ্যাসের পরিমাণ নিয়ে উদ্বেগ প্রকাশ করে — যা, সরলীকরণ করে, প্রতিটি ব্লকে আমি যে পরিমাণ কাজ করতে পারি। এই সীমা 8 মিলিয়ন গ্যাস। এর অর্থ হতে পারে অনেক "ক্ষুদ্র" লেনদেন (লেনদেনের সাথে কোনো ডেটা সংযুক্ত নেই, সেই ডেটাতে কোনো ক্রিয়াকলাপ চালানো হবে না) বা কয়েকটি বড় লেনদেন। এটা Ethereum-এর নোডের উপর নির্ভর করে, যারা লেনদেন জমা দেয় এবং Ethereum-এর খনি শ্রমিকদের উপর, যারা লেনদেনগুলিকে ব্লকে অন্তর্ভুক্ত করে যা বেশি অর্থ প্রদান করে।
একটি ব্লক খনন করা হয় প্রতি ~15 সেকেন্ড। এর মানে প্রতি মিনিটে ~32 মিলিয়ন গ্যাস, যা অবশ্যই যথেষ্ট নয় যদি আমরা ইথেরিয়ামের ড্যাপগুলি মূলধারায় যেতে চাই।
যাইহোক: ইথেরিয়াম এবং ভিসার মধ্যে সেই ক্লান্তিকর তুলনা দিয়ে থামুন। একটি কেন্দ্রীভূত ব্যবস্থা হবে সর্বদা ইথেরিয়ামের চেয়ে দ্রুত হতে… ডিজাইন দ্বারা! তারা বিভিন্ন জিনিস করে এবং আপনার বিভিন্ন পরিস্থিতিতে তাদের প্রয়োজন। আপনার যদি বিকেন্দ্রীকরণ এবং বিশ্বাসহীন পরিবেশের প্রয়োজন না হয়... অবশ্যই আপনার ভিসা বেছে নেওয়া উচিত। সংক্ষেপে: আপনার ব্লেন্ডার আপনার ওয়াশিং মেশিনের চেয়ে দ্রুত ঘোরার মানে এই নয় যে আপনি আপনার ট্রাউজার্সকে ব্লেন্ডারে পরিষ্কার করবেন!
এর ধাঁধা একসাথে করা যাক! কল্পনা করুন যে আপনি SNARK-কে ধন্যবাদ একটি বড় লেনদেনে অনেকগুলি ছোট লেনদেনকে "সংকুচিত" করতে পারেন৷ যদি এই বৃহৎ লেনদেনের মাধ্যমে খরচ করা গ্যাসটি ক্ষুদ্র লেনদেনের দ্বারা ব্যয় করা গ্যাসের যোগফলের থেকে কম হয়, তাহলে আপনি গ্যাস সংরক্ষণ করছেন।
এবং গ্যাস সংরক্ষণ মানে:
- ব্যবহারকারীরা সামগ্রিকভাবে লেনদেনের জন্য কম খরচ করে → এটি সমগ্র বাস্তুতন্ত্রের জন্য একটি ধাক্কা হবে
- একটি ব্লকে আরও জিনিস রাখতে সক্ষম হওয়া → ইথেরিয়াম আপনার ব্লেন্ডারের চেয়ে দ্রুত স্পিনিং!
এটা কিভাবে কাজ করে?
ব্যবহারকারী আছে, একজন রিলেয়ার (বা আরও রিলেয়ার) যারা লেনদেন এবং একটি স্মার্ট চুক্তিকে একত্রিত করে।
- এই গেমটি খেলতে ইচ্ছুক ব্যবহারকারীরা তাদের ইথার (বা টোকেন) একটি সর্বজনীনভাবে নিরীক্ষিত স্মার্ট চুক্তিতে পাঠায়। প্রতিটি নতুন খেলোয়াড়ের জন্য একটি মার্কেল গাছের একটি নতুন পাতা তৈরি করা হয়। পাতায় ইথারের মালিক (তার/তার ঠিকানা, যা সর্বজনীন কী), ইথারের পরিমাণ এবং ননস (সেই অ্যাকাউন্টের লেনদেনের কাউন্টার, যা পাতাটি যোগ করার সময় 0) সম্পর্কে তথ্য অন্তর্ভুক্ত করে।
- A যখন B-কে ইথার পাঠাতে চায় (তাদের উভয়েরই স্মার্ট চুক্তিতে একটি পাতা/অ্যাকাউন্ট থাকতে হবে), A একটি লেনদেন প্যাক করে, যার মধ্যে ঠিকানা অন্তর্ভুক্ত থাকে থেকেহিসাব, থেকে হিসাব, পোপের দূত অ্যাকাউন্ট থেকে, পরিমাণ ইথার স্থানান্তর করতে হবে এবং স্বাক্ষর লেনদেনের ("থেকে" অ্যাকাউন্টের ব্যক্তিগত কী দিয়ে স্বাক্ষরিত, স্পষ্টতই)। তারপর সে/তিনি প্যাক করা লেনদেন রিলেয়ারে পাঠান।
- রিলেয়ার একটি নির্দিষ্ট সময়ের উইন্ডোতে প্রাপ্ত সমস্ত লেনদেনকে একত্রিত করে (যেমন এক ঘন্টা), নতুন ব্যালেন্সের পরিমাণের সাথে মার্কেল ট্রি আপডেট করে এবং একটি SNARK প্রমাণ তৈরি করে যা প্রমাণ করে যে সমস্ত স্বাক্ষর এবং নতুন মার্কেল গাছের মূল বৈধ। রিলেয়ার অবশেষে স্মার্ট চুক্তিতে নতুন রাষ্ট্র এবং প্রমাণ পাঠায়।
- স্মার্ট চুক্তি প্রুফ অন-চেইন যাচাই করে। যদি এটি বৈধ হয় তবে এটি চুক্তির অভ্যন্তরীণ মেমরিতে নতুন রাজ্যের মার্কেল গাছের মূল সংরক্ষণ করে।
মূলত, Merkle গাছের মূল সমস্ত অ্যাকাউন্টের সমগ্র অবস্থা চিত্রিত করে। এবং আপনি এটি পরিবর্তন করতে পারবেন না (= টাকা চুরি) যদি না আপনি যে স্বাক্ষরগুলির বৈধতা প্রমাণ করতে পারেন যার লেনদেনগুলি আপনার জমা দেওয়া নতুন রুট দ্বারা সংক্ষিপ্ত নতুন রাষ্ট্রের দিকে নিয়ে যায়৷
সংক্ষেপে: ব্যবহারকারীদের অতি দ্রুত এবং প্রায় বিনামূল্যের লেনদেন আছে, যেমন Coinbase-এ, রিলেয়ারকে বিশ্বাস না করে, যারা আপনার স্বাক্ষর ছাড়া Coinbase-এর বিপরীতে কিছুই করতে পারে না।
এটি একটি নন-কাস্টোডিয়াল সাইড চেইন যার অবস্থা একটি মার্কেল গাছের মূল দ্বারা সংক্ষিপ্ত করা হয়েছে।
আসুন আমরা SNARK সম্পর্কে উপরে যা শিখেছি তার সাথে আমরা স্কেলিং সম্পর্কে যা আলোচনা করেছি তার সাথে সংযুক্ত করি। এটা করার বিভিন্ন উপায় আছে। আমি 2টি রেসিপি তুলনা করব: ভিটালিকের সংস্করণ এবং barryWhiteHat এর সংস্করণ.
SETUP এর দ্বারা সম্পন্ন হয়...
যে লোকটি প্রকল্পটি শুরু করে, যিনি স্মার্ট চুক্তিও তৈরি করেন। এটি যত বেশি নিরীক্ষণযোগ্য, তত ভাল। আপনার তাকে/তাকে বিশ্বাস করা উচিত... এটি একটি বিশ্বস্ত সেটআপ!
স্মার্ট চুক্তি সংরক্ষণ করে...
2 মার্কেল রুট (বাইট 32 মান): প্রথম গাছে অ্যাকাউন্টের ঠিকানা (পাবলিক স্বাক্ষর), দ্বিতীয় অ্যাকাউন্টের ব্যালেন্স এবং ননসেস রয়েছে
প্রমাণ করা হচ্ছে...
রিলেয়ার
রিলেয়ার স্মার্ট চুক্তিতে পাঠায়...
- নতুন রাষ্ট্রের 2টি মার্কেল শিকড় (গাছ এবং ব্যালেন্স + ননসেস ট্রিকে সম্বোধন করে)
- স্বাক্ষর ছাড়াই লেনদেনের তালিকা। “প্রতিটি লেনদেনের জন্য বাইট প্রতি 68 গ্যাস খরচ হয়। তাই, নিয়মিত স্থানান্তরের জন্য, আমরা 68*3 (থেকে) + 68 * 3 (থেকে) + 68 * 1 (ফি) + 68 * 4 + 4 * 2 (অর্থ) + 68 * 2 হতে পারে বলে আশা করতে পারি (nonce), অথবা 892 gas"
প্রুভিং প্রক্রিয়ার পরিচিত ইনপুটগুলি হল...
- 2 পুরানো রাজ্য Merkle শিকড়
- 2 নতুন রাষ্ট্র Merkle শিকড়
- লেনদেনের তালিকা
প্রমাণ করার প্রক্রিয়া প্রমাণ করে যে...
প্রদত্ত
- 2 পুরানো রাজ্য মার্কেল শিকড় (ইতিমধ্যে চুক্তিতে সংরক্ষিত)
- 2টি নতুন রাজ্য Merkle রুট (এগ্রি. লেনদেনে পাঠানো)
- লেনদেনের তালিকা (সামগ্রিক লেনদেনে পাঠানো)
… সেই লেনদেনের সাথে 2টি পুরানো রুট সহ রাজ্য থেকে 2টি নতুন রুট সহ রাজ্যে যাওয়ার জন্য রিলেয়ারের বৈধ স্বাক্ষর রয়েছে৷
যাচাই করা হচ্ছে...
স্মার্ট কন্ট্রাক্ট (কোডেড ইন দৃঢ়তা, ভাইপার, আপনার পছন্দ মতো!)
যাচাইকরণ প্রক্রিয়ার পরিচিত ইনপুটগুলি হল...
একই PROVING এর প্রক্রিয়া পরিচিত ইনপুট, পরিষ্কারভাবে…!
পরিমাপযোগ্যতার সীমাবদ্ধতা
প্রতিটি সমষ্টিগত লেনদেন SNARK যাচাইকরণের জন্য 650k গ্যাস ব্যবহার করে (নির্দিষ্ট খরচ) প্লাস ~900 এর গ্যাস প্রান্তিক ব্যয় প্রতি লেনদেন (ডেটা পাঠাতে খরচ হয়!) সুতরাং সম্পূর্ণ ব্লক ব্যবহার করে রিলেয়ার সর্বাধিক একত্রিত করতে পারে:
যার অর্থ ~544 tx প্রতি সেকেন্ড
barryWhiteHat এর সংস্করণ
SETUP এর দ্বারা সম্পন্ন হয়...
যে লোকটি প্রকল্পটি শুরু করে।
স্মার্ট চুক্তি সংরক্ষণ করে...
1 মার্কেল রুট বর্তমান অবস্থার সাথে। প্রতিটি পাতা একটি অ্যাকাউন্টের হ্যাশড অবস্থা।
চাই সৃষ্টি একটি হিসাব?
state = AccountState (pubkey, ব্যালেন্স, nonce)
state.index = self._tree.append(state.hash())
প্রমাণ করা হচ্ছে...
রিলেয়ার
রিলেয়ার স্মার্ট চুক্তিতে পাঠায়...
- প্রমাণ 𝚷
- নতুন রাষ্ট্র Merkle রুট
- প্রমাণ 𝚷
প্রুভিং প্রক্রিয়ার পরিচিত ইনপুটগুলি হল...
- পুরানো রাজ্য Merkle রুট
- নতুন রাষ্ট্র Merkle রুট
প্রমাণ করার প্রক্রিয়া প্রমাণ করে যে...
প্রদত্ত
- ওল্ড মার্কেল রুট (ইতিমধ্যে চুক্তিতে সংরক্ষিত)
- নিউ মার্কেল রুট (এগ্রি লেনদেনে সেন্টি)
… রিলেয়ারের কাছে বৈধ স্বাক্ষর সহ লেনদেনের একটি তালিকা রয়েছে যা পুরানো রুট সহ রাজ্য থেকে নতুন রুট সহ রাজ্যে যেতে পারে
যাচাই করা হচ্ছে...
স্মার্ট কন্ট্রাক্ট (কোডেড ইন দৃঢ়তা, ভাইপার, আপনার পছন্দ মতো!)
যাচাইকরণ প্রক্রিয়ার পরিচিত ইনপুটগুলি হল...
একই PROVING এর প্রক্রিয়া পরিচিত ইনপুট, পরিষ্কারভাবে…!
পরিমাপযোগ্যতার সীমাবদ্ধতা
রিলেয়ার স্মার্ট চুক্তিতে লেনদেনের ডেটা পাঠাচ্ছে না (যা ব্যয়বহুল), তাই সীমাটি আসলে SNARK প্রমাণ যাচাই করার জন্য গ্যাসের পরিমাণ।
হাওয়ার্ড উ এর উল্লেখ কাজ ডিস্ট্রিবিউটেড সিস্টেমে SNARK-এর প্রুভিং ফেজ চালানোর বিষয়ে, barryWhiteHat আশাবাদীভাবে একটি বিশাল SNARK-এ 16666 লেনদেন নিশ্চিত করা সম্ভব (1 বিলিয়ন সীমাবদ্ধতা!)
barryWhiteHat এছাড়াও মনে 500k গ্যাস দিয়ে প্রুফ 𝚷 অন-চেইন যাচাই করা সম্ভব, যার মানে হল আপনি প্রতি ব্লকে 16টি SNARK (8 মিলিয়ন/500k) রাখতে পারেন, যা প্রতি সেকেন্ডে ~1.07 SNARKs… যার মানে প্রতি সেকেন্ডে ~17,832 tx (16,666 * 1.07)।
অসীম, সীমাহিন
- যে সমস্ত চকচকে হয় তা সোনার নয় / 1. প্রুভিং পর্বে আপনার যে পরিমাণ কম্পিউটিং শক্তি এবং মেমরির প্রয়োজন তা আক্ষরিক অর্থেই হতবাক হতে পারে। বিশেষ করে barryWhiteHat এর সংস্করণে, যেখানে জটিলতার অংশটি চেইন থেকে সরানো হয়। ব্যারি লিখেছেন "7 জিবি র্যাম এবং 20 জিবি সোয়াপ স্পেস সহ একটি ল্যাপটপে এটি প্রতি সেকেন্ডে 20টি লেনদেন করতে লড়াই করে". ঠিক আছে, যদি লক্ষ্য প্রতি সেকেন্ডে 17,832 tx হয়... LOL। এটি অ তুচ্ছ সমান্তরাল গণনা চ্যালেঞ্জ প্রবর্তন করে। কিন্তু যদি প্রতি লেনদেনের গড় $ খরচ সাধারণ নো-SNARKs বিকল্পের তুলনায় অনেক সস্তা হয়... গেমটি মোমবাতির মূল্য।
- যে সব চকচকে সোনা নয় / 2. একটি প্রাসঙ্গিক তথ্য প্রাপ্যতা সমস্যা আছে! যেহেতু চুক্তিতে শুধুমাত্র গাছের মূল সংরক্ষণ করা হয়েছে, তাই আপনাকে অবশ্যই নিশ্চিত হতে হবে যে গাছের একটি সম্পূর্ণ সংস্করণ (বা, এটি একই, সমগ্র লেনদেনের ইতিহাস) সর্বদা উপলব্ধ। ডেটা উপলব্ধ না হলে রিলেয়ার, এমনকি বৈধ স্বাক্ষরিত লেনদেন সহ, কিছু করতে পারে না কারণ সে/সে পুরানো রাজ্য → লেনদেন → নতুন রাজ্য প্রমাণ করতে পারে না৷
- যাতে রিলেয়ারটি বিশ্বস্ত হতে পারে এবং চুক্তিতে ইথারস যাতে বাইরের ইথারসের সমান মূল্য থাকে (তরলতা সমস্যা)… ব্যবহারকারীরা (নির্দিষ্ট) রিলেয়ারের উপর নির্ভর না করে যখনই চান স্মার্ট চুক্তি থেকে অর্থ উত্তোলন করতে সক্ষম হওয়া উচিত। কিভাবে? এটি এই 101 পোস্টের সুযোগের মধ্যে নেই, তবে আপনি এটি সম্বন্ধে সংযুক্ত লিঙ্কগুলিতে পড়তে পারেন।
- কিভাবে বর্তমান রাষ্ট্র (ঠিকানা, ব্যালেন্স এবং ননসেস) একটি Merkle গাছ সঙ্গে পরিচালনা করা যেতে পারে সম্পর্কে আরো বুঝতে চান? একটি পাতা যোগ করা, একটি পাতা আপডেট করা, ইত্যাদি? চেক আউট এই লাইব্রেরি (পরীক্ষা ফাইল এখানে) যা এই অন্তর্নিহিত ব্যবহার করে মডিউল. ধন্যবাদ হ্যারিআর!
- আপনার ব্যক্তিগত Ethereum-SNARKs পরিবেশ সেটআপ করতে চান? আসুন C++ দিয়ে অফ-চেইন শুরু করি (সেটআপ, প্রমাণ করা, যাচাই করা) এখানে. তারপরে আপনি জোক্রেটসের সাথে ইথেরিয়ামে যেতে পারেন (ভুলে যাবেন না, শুধুমাত্র যাচাইকরণ অন-চেইনে করা হয়!)রেপো, দ্য শুরু করার জন্য ডকুমেন্টেশন).
- মার্কেল গাছের পরিবর্তে আরএসএ অ্যাকুমুলেটর ব্যবহার করলে কেমন হয়? গুগল "rsa accumulators ethereum" শুরুতেই…
উপভোগ করুন!
Twitter @মার্কো_ডেরোসি
- 7
- হিসাব
- সব
- মধ্যে
- উপস্থিতি
- মূলতত্ব
- বিলিয়ন
- মামলা
- পরিবর্তন
- চেক
- কয়েনবেস
- কম্পিউটিং
- ঐক্য
- চুক্তি
- খরচ
- বর্তমান
- বর্তমান অবস্থা
- DApps
- উপাত্ত
- তথ্য সেট
- বিকেন্দ্র্রণ
- মাত্রা
- বিতরণ লেজার
- বিতরণ লেজার প্রযুক্তি
- পরিবেশ
- থার
- ethereum
- EU
- EV
- নকল
- পরিশেষে
- প্রথম
- বিনামূল্যে
- ক্রিয়া
- খেলা
- গ্যাস
- GitHub
- দান
- স্বর্ণ
- ভাল
- গুগল
- মহান
- কৌশল
- কাটা
- এখানে
- উচ্চ
- ইতিহাস
- কিভাবে
- hr
- HTTPS দ্বারা
- প্রচুর
- শত শত
- ia
- সূচক
- তথ্য
- IP
- IT
- কাজ
- চাবি
- ল্যাপটপ
- বড়
- নেতৃত্ব
- খতিয়ান
- উচ্চতা
- LG
- লাইব্রেরি
- তারল্য
- তালিকা
- মেনস্ট্রিম
- মানচিত্র
- মধ্যম
- মিলিয়ন
- miners
- টাকা
- মাসের
- সবচেয়ে জনপ্রিয়
- পদক্ষেপ
- নাম
- নেটওয়ার্ক
- নোড
- সংখ্যার
- অপারেশনস
- ক্রম
- অন্যান্য
- মালিক
- বেতন
- পিডিএফ
- সম্প্রদায়
- খেলোয়াড়
- জনপ্রিয়
- ক্ষমতা
- ব্যক্তিগত
- ব্যক্তিগত কী
- কার্যক্রম
- প্রকল্প
- প্রমাণ
- প্রমাণ
- প্রকাশ্য
- পাবলিক কী
- সংক্ষিপ্তবৃত্তি
- আরএসএ
- নিয়ম
- দৌড়
- নিরাপদ
- রক্ষা
- স্কেলেবিলিটি
- স্কেল
- আরোহী
- বিজ্ঞান
- নিরাপত্তা
- সেট
- শেয়ার
- ভাগ
- সংক্ষিপ্ত
- সহজ
- আয়তন
- ঘুম
- স্মার্ট
- স্মার্ট চুক্তি
- স্মার্টফোন
- So
- সফটওয়্যার
- ঘনত্ব
- সলিউশন
- সমাধান
- স্থান
- খরচ
- শুরু
- শুরু
- রাষ্ট্র
- যুক্তরাষ্ট্র
- সফল
- পদ্ধতি
- সিস্টেম
- প্রযুক্তিঃ
- পরীক্ষা
- সময়
- টোকেন
- শীর্ষ
- টরেন্ট
- লেনদেন
- লেনদেন
- আস্থা
- আপডেট
- ব্যবহারকারী
- মূল্য
- প্রতিপাদন
- ভিসা কার্ড
- W
- হু
- শব্দ
- হয়া যাই ?
- কাজ
- মূল্য
- X