জানা ভালো
-AI এজেন্ট এবং সম্পর্কিত টুলস এখনও প্রাথমিক বিকাশে রয়েছে এবং খুব পরীক্ষামূলক—সতর্কতার সাথে ব্যবহার করুন।
+জেনে রাখা ভালো
+এআই এজেন্ট এবং সম্পর্কিত টুলগুলো এখনও প্রাথমিক বিকাশের পর্যায়ে রয়েছে এবং অত্যন্ত পরীক্ষামূলক—সতর্কতার সাথে ব্যবহার করুন।
`nonce``
-`` - _খোলার ট্যাগ, যাতে একটি কোড স্নিপেট থাকে_
+`` - _ওপেনিং ট্যাগ, যাতে একটি কোড স্নিপেট থাকে_
-nonce - _অনুবাদযোগ্য নয় এমন পাঠ্য_
+nonce - _অ-অনুবাদযোগ্য টেক্সট_
-`` - _বন্ধ করার ট্যাগ_
+`` - _ক্লোজিং ট্যাগ_
-
+
-উৎস পাঠ্যে সংক্ষিপ্ত ট্যাগও থাকে, যেগুলিতে কেবল সংখ্যা থাকে, যার অর্থ হল তাদের কার্যকারিতা অবিলম্বে স্পষ্ট নয়। এগুলি ঠিক কোন কার্যকারিতা পরিবেশন করে তা দেখতে আপনি এই ট্যাগগুলির উপর হোভার করতে পারেন।
+সোর্স টেক্সটে সংক্ষিপ্ত ট্যাগও থাকে, যেগুলোতে শুধুমাত্র সংখ্যা থাকে, যার মানে হলো সেগুলোর কাজ তাৎক্ষণিকভাবে স্পষ্ট নয়। এই ট্যাগগুলো ঠিক কী কাজ করে তা দেখতে আপনি সেগুলোর উপর হোভার করতে পারেন।
-নীচের উদাহরণে, আপনি দেখতে পারেন যে `<0>` ট্যাগটির উপর হোভার করলে দেখা যায় যে এটি `` প্রতিনিধিত্ব করে এবং একটি কোড স্নিপেট ধারণ করে, তাই এই ট্যাগগুলির ভিতরের বিষয়বস্তু অনুবাদ করা উচিত নয়।
+নিচের উদাহরণে, আপনি দেখতে পাচ্ছেন যে `<0>` ট্যাগের উপর হোভার করলে দেখায় যে এটি `` উপস্থাপন করে এবং এতে একটি কোড স্নিপেট রয়েছে, তাই এই ট্যাগগুলোর ভেতরের কন্টেন্ট অনুবাদ করা উচিত নয়।
-
+
-## সংক্ষিপ্ত বনাম পূর্ণ রূপ/সংক্ষেপণ {#short-vs-full-forms}
+## সংক্ষিপ্ত বনাম পূর্ণ রূপ/শব্দসংক্ষেপ {#short-vs-full-forms}
-ওয়েবসাইটে প্রচুর সংক্ষেপণ ব্যবহৃত হয়, যেমন, ডিএ্যাপস, NFT, DAO, DeFi, ইত্যাদি। এই সংক্ষেপণগুলি সাধারণত ইংরেজিতে ব্যবহৃত হয় এবং ওয়েবসাইটের বেশিরভাগ দর্শক এগুলির সাথে পরিচিত।
+ওয়েবসাইটে প্রচুর শব্দসংক্ষেপ ব্যবহার করা হয়, যেমন, ডিএ্যাপস, NFT, DAO, DeFi ইত্যাদি। এই শব্দসংক্ষেপগুলো সাধারণত ইংরেজিতে ব্যবহৃত হয় এবং ওয়েবসাইটের বেশিরভাগ ভিজিটর এগুলোর সাথে পরিচিত।
-যেহেতু তাদের সাধারণত অন্যান্য ভাষায় প্রতিষ্ঠিত অনুবাদ থাকে না, তাই এই এবং অনুরূপ পদগুলির প্রতি দৃষ্টিভঙ্গির সেরা উপায় হলো পূর্ণ রূপের একটি বর্ণনামূলক অনুবাদ প্রদান করা এবং বন্ধনীতে ইংরেজি সংক্ষেপণ যোগ করা।
+যেহেতু অন্যান্য ভাষায় সাধারণত এগুলোর প্রতিষ্ঠিত অনুবাদ নেই, তাই এই এবং অনুরূপ শব্দগুলো ব্যবহার করার সর্বোত্তম উপায় হলো পূর্ণ রূপের একটি বর্ণনামূলক অনুবাদ প্রদান করা এবং ব্র্যাকেটে ইংরেজি শব্দসংক্ষেপ যোগ করা।
-এই সংক্ষেপণগুলি অনুবাদ করবেন না, কারণ বেশিরভাগ মানুষ এগুলির সাথে পরিচিত হবে না এবং স্থানীয় সংস্করণগুলি বেশিরভাগ দর্শকের কাছে তেমন কোনো অর্থ বহন করবে না।
+এই শব্দসংক্ষেপগুলো অনুবাদ করবেন না, কারণ বেশিরভাগ মানুষ এগুলোর সাথে পরিচিত হবে না এবং স্থানীয়করণ করা সংস্করণগুলো বেশিরভাগ ভিজিটরের কাছে খুব একটা অর্থবহ হবে না।
-কীভাবে ডিএ্যাপস অনুবাদ করতে হয় তার উদাহরণ:
+ডিএ্যাপস কীভাবে অনুবাদ করতে হয় তার উদাহরণ:
-- ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপস) → _অনূদিত পূর্ণ রূপ (বন্ধনীতে ইংরেজি সংক্ষেপণ)_
+- ডিসেন্ট্রালাইজড এপ্লিকেশন (dapps) → _অনুবাদিত পূর্ণ রূপ (ব্র্যাকেটে ইংরেজি শব্দসংক্ষেপ)_
-## প্রতিষ্ঠিত অনুবাদ ছাড়া শর্তাবলী {#terms-without-established-translations}
+## প্রতিষ্ঠিত অনুবাদবিহীন শব্দ {#terms-without-established-translations}
-কিছু পদের অন্যান্য ভাষায় প্রতিষ্ঠিত অনুবাদ নাও থাকতে পারে, এবং মূল ইংরেজি পদ দ্বারা ব্যাপকভাবে পরিচিত। এই ধরনের পদগুলির মধ্যে বেশিরভাগই নতুন ধারণা অন্তর্ভুক্ত করে, যেমন প্রুফ-অফ-ওয়ার্ক, প্রুফ-অফ-স্টেক, বিকন চেইন, স্টেকিং, ইত্যাদি।
+কিছু শব্দের অন্যান্য ভাষায় প্রতিষ্ঠিত অনুবাদ নাও থাকতে পারে এবং সেগুলো মূল ইংরেজি শব্দ দ্বারাই ব্যাপকভাবে পরিচিত। এই ধরনের শব্দগুলোর মধ্যে বেশিরভাগই নতুন ধারণা অন্তর্ভুক্ত করে, যেমন প্রুফ-অফ-ওয়ার্ক, প্রুফ-অফ-স্টেক, বিকন চেইন, স্টেকিং ইত্যাদি।
-যদিও এই পদগুলি অনুবাদ করা অস্বাভাবিক শোনাতে পারে, কারণ ইংরেজি সংস্করণটি সাধারণত অন্যান্য ভাষাতেও ব্যবহৃত হয়, তবুও এগুলি অনুবাদ করার জন্য অত্যন্ত সুপারিশ করা হয়।
+যদিও এই শব্দগুলো অনুবাদ করা অস্বাভাবিক শোনাতে পারে, যেহেতু ইংরেজি সংস্করণটি অন্যান্য ভাষাতেও সাধারণত ব্যবহৃত হয়, তবুও এগুলো অনুবাদ করার জন্য জোরালোভাবে সুপারিশ করা হচ্ছে।
-এগুলি অনুবাদ করার সময়, সৃজনশীল হতে, বর্ণনামূলক অনুবাদ ব্যবহার করতে বা কেবল আক্ষরিকভাবে অনুবাদ করতে দ্বিধা বোধ করবেন না।
+এগুলো অনুবাদ করার সময়, নির্দ্বিধায় সৃজনশীল হোন, বর্ণনামূলক অনুবাদ ব্যবহার করুন, অথবা কেবল আক্ষরিকভাবে অনুবাদ করুন।
-**বেশিরভাগ পদ ইংরেজিতে কিছু রেখে দেওয়ার পরিবর্তে অনুবাদ করা উচিত তার কারণ হল এই নতুন পরিভাষা ভবিষ্যতে আরও ব্যাপক হয়ে উঠবে, কারণ আরও বেশি লোক ইথেরিয়াম এবং সম্পর্কিত প্রযুক্তি ব্যবহার করা শুরু করবে।** **যদি আমরা সারা বিশ্ব থেকে আরও বেশি লোককে এই ক্ষেত্রে আনতে চাই, তবে আমাদের যতটা সম্ভব ভাষায় বোধগম্য পরিভাষা সরবরাহ করতে হবে, এমনকি যদি আমাদের নিজেদেরই এটি তৈরি করতে হয়।**
+**কিছু শব্দ ইংরেজিতে রেখে দেওয়ার পরিবর্তে বেশিরভাগ শব্দ অনুবাদ করার কারণ হলো, ভবিষ্যতে এই নতুন পরিভাষাগুলো আরও ব্যাপকভাবে ছড়িয়ে পড়বে, কারণ আরও বেশি মানুষ ইথিরিয়াম এবং সম্পর্কিত প্রযুক্তিগুলো ব্যবহার করতে শুরু করবে। আমরা যদি সারা বিশ্ব থেকে আরও বেশি মানুষকে এই স্পেসে যুক্ত করতে চাই, তবে আমাদের যতটা সম্ভব বেশি ভাষায় বোধগম্য পরিভাষা প্রদান করতে হবে, এমনকি যদি আমাদের নিজেদেরই এটি তৈরি করতে হয়।**
## বোতাম এবং CTA {#buttons-and-ctas}
-ওয়েবসাইটে অসংখ্য বোতাম রয়েছে, যা অন্যান্য বিষয়বস্তু থেকে ভিন্নভাবে অনুবাদ করা উচিত।
+ওয়েবসাইটে অসংখ্য বোতাম রয়েছে, যা অন্যান্য কন্টেন্টের চেয়ে ভিন্নভাবে অনুবাদ করা উচিত।
-বোতামের পাঠ্যটি বেশিরভাগ স্ট্রিংয়ের সাথে সংযুক্ত প্রসঙ্গের স্ক্রিনশট দেখে, অথবা সম্পাদকে প্রসঙ্গটি পরীক্ষা করে চিহ্নিত করা যেতে পারে, যার মধ্যে ‘’button’’ শব্দটি অন্তর্ভুক্ত রয়েছে।
+বেশিরভাগ স্ট্রিংয়ের সাথে যুক্ত কনটেক্সট স্ক্রিনশটগুলো দেখে, অথবা এডিটরে কনটেক্সট চেক করে বোতামের টেক্সট শনাক্ত করা যেতে পারে, যার মধ্যে ''button'' বাক্যাংশটি অন্তর্ভুক্ত থাকে।
-ফরম্যাটিংয়ের অমিল রোধ করতে বোতামের জন্য অনুবাদগুলি যতটা সম্ভব সংক্ষিপ্ত হওয়া উচিত। উপরন্তু, বোতামের অনুবাদগুলি আবশ্যিক হওয়া উচিত, অর্থাৎ, একটি আদেশ বা অনুরোধ উপস্থাপন করা।
+ফরম্যাটিংয়ের অমিল রোধ করতে বোতামগুলোর অনুবাদ যতটা সম্ভব ছোট হওয়া উচিত। উপরন্তু, বোতামের অনুবাদগুলো অনুজ্ঞাসূচক হওয়া উচিত, অর্থাৎ, একটি আদেশ বা অনুরোধ উপস্থাপন করা উচিত।
-
+
## অন্তর্ভুক্তির জন্য অনুবাদ করা {#translating-for-inclusivity}
-Ethereum.org-এর দর্শকরা সারা বিশ্ব এবং বিভিন্ন পটভূমি থেকে আসেন। অতএব ওয়েবসাইটের ভাষা নিরপেক্ষ, সকলের জন্য স্বাগতপূর্ণ এবং বর্জনীয় নয় হওয়া উচিত।
+Ethereum.org-এর ভিজিটররা সারা বিশ্ব থেকে এবং বিভিন্ন ব্যাকগ্রাউন্ড থেকে আসেন। তাই ওয়েবসাইটের ভাষা নিরপেক্ষ, সবার জন্য স্বাগতপূর্ণ এবং বর্জনশীল হওয়া উচিত নয়।
-এর একটি গুরুত্বপূর্ণ দিক হল লিঙ্গ নিরপেক্ষতা। এটি সম্বোধনের আনুষ্ঠানিক রূপ ব্যবহার করে এবং অনুবাদে কোনো লিঙ্গ-নির্দিষ্ট শব্দ এড়িয়ে সহজেই অর্জন করা যেতে পারে।
+এর একটি গুরুত্বপূর্ণ দিক হলো লিঙ্গ নিরপেক্ষতা। আনুষ্ঠানিক সম্বোধন ব্যবহার করে এবং অনুবাদে লিঙ্গ-নির্দিষ্ট কোনো শব্দ এড়িয়ে এটি সহজেই অর্জন করা যেতে পারে।
-অন্তর্ভুক্তির আরেকটি রূপ হল কোনো নির্দিষ্ট দেশ, জাতি বা অঞ্চলের জন্য নির্দিষ্ট না হয়ে বিশ্বব্যাপী দর্শকদের জন্য অনুবাদ করার চেষ্টা করা।
+অন্তর্ভুক্তির আরেকটি রূপ হলো বিশ্বব্যাপী দর্শকদের জন্য অনুবাদ করার চেষ্টা করা, যা নির্দিষ্ট কোনো দেশ, জাতি বা অঞ্চলের জন্য নয়।
-অবশেষে, ভাষাটি সমস্ত দর্শক এবং বয়সের জন্য উপযুক্ত হওয়া উচিত।
+পরিশেষে, ভাষাটি সকল দর্শক এবং বয়সের জন্য উপযুক্ত হওয়া উচিত।
## ভাষা-নির্দিষ্ট অনুবাদ {#language-specific-translations}
-অনুবাদ করার সময়, উৎস থেকে অনুলিপি করার পরিবর্তে আপনার ভাষায় ব্যবহৃত ব্যাকরণের নিয়ম, প্রথা এবং বিন্যাস অনুসরণ করা গুরুত্বপূর্ণ। উৎস পাঠ্য ইংরেজি ব্যাকরণের নিয়ম এবং প্রথা অনুসরণ করে, যা অন্যান্য অনেক ভাষার ক্ষেত্রে প্রযোজ্য নয়।
+অনুবাদ করার সময়, সোর্স থেকে কপি করার পরিবর্তে আপনার ভাষায় ব্যবহৃত ব্যাকরণের নিয়ম, রীতিনীতি এবং ফরম্যাটিং অনুসরণ করা গুরুত্বপূর্ণ। সোর্স টেক্সট ইংরেজি ব্যাকরণের নিয়ম এবং রীতিনীতি অনুসরণ করে, যা অন্যান্য অনেক ভাষার ক্ষেত্রে প্রযোজ্য নয়।
-আপনার ভাষার নিয়ম সম্পর্কে আপনার সচেতন হওয়া উচিত এবং সেই অনুযায়ী অনুবাদ করা উচিত। আপনার যদি সাহায্যের প্রয়োজন হয়, আমাদের সাথে যোগাযোগ করুন এবং আমরা আপনাকে আপনার ভাষায় এই উপাদানগুলি কীভাবে ব্যবহার করা উচিত সে সম্পর্কে কিছু রিসোর্স খুঁজে পেতে সাহায্য করব।
+আপনার ভাষার নিয়মগুলো সম্পর্কে আপনার সচেতন হওয়া উচিত এবং সেই অনুযায়ী অনুবাদ করা উচিত। আপনার যদি সাহায্যের প্রয়োজন হয়, আমাদের সাথে যোগাযোগ করুন এবং আমরা আপনাকে আপনার ভাষায় এই উপাদানগুলো কীভাবে ব্যবহার করা উচিত সে সম্পর্কে কিছু রিসোর্স খুঁজে পেতে সাহায্য করব।
-বিশেষভাবে কী বিষয়ে খেয়াল রাখতে হবে তার কিছু উদাহরণ:
+বিশেষভাবে কী বিষয়ে সতর্ক থাকতে হবে তার কিছু উদাহরণ:
-### যতিচিহ্ন, বিন্যাস {#punctuation-and-formatting}
+### বিরামচিহ্ন, ফরম্যাটিং {#punctuation-and-formatting}
-**ক্যাপিটালাইজেশন**
+**ক্যাপিটালাইজেশন (বড় হাতের অক্ষর ব্যবহার)**
-- বিভিন্ন ভাষায় ক্যাপিটালাইজেশনে ব্যাপক পার্থক্য রয়েছে।
-- ইংরেজিতে, শিরোনাম এবং নাম, মাস এবং দিন, ভাষার নাম, ছুটির দিন ইত্যাদিতে সমস্ত শব্দ বড় হাতের অক্ষরে লেখা সাধারণ। অন্যান্য অনেক ভাষায়, এটি ব্যাকরণগতভাবে ভুল, কারণ তাদের ক্যাপিটালাইজেশনের নিয়ম ভিন্ন।
-- কিছু ভাষায় ব্যক্তিগত সর্বনাম, বিশেষ্য এবং নির্দিষ্ট বিশেষণ বড় হাতের অক্ষরে লেখার নিয়মও রয়েছে, যা ইংরেজিতে বড় হাতের অক্ষরে লেখা হয় না।
+- বিভিন্ন ভাষায় ক্যাপিটালাইজেশনের ক্ষেত্রে ব্যাপক পার্থক্য রয়েছে।
+- ইংরেজিতে, শিরোনাম এবং নাম, মাস এবং দিন, ভাষার নাম, ছুটির দিন ইত্যাদির সমস্ত শব্দ বড় হাতের অক্ষরে লেখা সাধারণ। অন্যান্য অনেক ভাষায়, এটি ব্যাকরণগতভাবে ভুল, কারণ তাদের ক্যাপিটালাইজেশনের নিয়ম আলাদা।
+- কিছু ভাষায় ব্যক্তিবাচক সর্বনাম, বিশেষ্য এবং নির্দিষ্ট বিশেষণগুলো বড় হাতের অক্ষরে লেখার নিয়ম রয়েছে, যা ইংরেজিতে বড় হাতের অক্ষরে লেখা হয় না।
**স্পেসিং**
-- অর্থোগ্রাফি নিয়ম প্রতিটি ভাষার জন্য স্পেসের ব্যবহার নির্ধারণ করে। যেহেতু স্পেস সর্বত্র ব্যবহৃত হয়, তাই এই নিয়মগুলি সবচেয়ে স্বতন্ত্র কিছু, এবং স্পেসগুলি সবচেয়ে ভুল অনুবাদিত উপাদানগুলির মধ্যে কিছু।
+- বানানরীতি প্রতিটি ভাষার জন্য স্পেসের ব্যবহার নির্ধারণ করে। যেহেতু স্পেস সব জায়গায় ব্যবহৃত হয়, তাই এই নিয়মগুলো সবচেয়ে আলাদা, এবং স্পেস হলো সবচেয়ে বেশি ভুল অনুবাদ করা উপাদানগুলোর মধ্যে একটি।
- ইংরেজি এবং অন্যান্য ভাষার মধ্যে স্পেসিংয়ের কিছু সাধারণ পার্থক্য:
- পরিমাপের একক এবং মুদ্রার আগে স্পেস (যেমন, USD, EUR, kB, MB)
- ডিগ্রি চিহ্নের আগে স্পেস (যেমন, °C, ℉)
- - কিছু যতিচিহ্নের আগে স্পেস, বিশেষ করে এলিপসিস (…)
+ - কিছু বিরামচিহ্নের আগে স্পেস, বিশেষ করে উপবৃত্তাকার বা এলিপসিস (…)
- স্ল্যাশের (/) আগে এবং পরে স্পেস
**তালিকা**
-- প্রতিটি ভাষায় তালিকা লেখার জন্য একটি বৈচিত্র্যময় এবং জটিল নিয়মাবলী রয়েছে। এগুলি ইংরেজি থেকে উল্লেখযোগ্যভাবে ভিন্ন হতে পারে।
-- কিছু ভাষায়, প্রতিটি নতুন লাইনের প্রথম শব্দটি বড় হাতের অক্ষরে লেখা প্রয়োজন, যেখানে অন্যগুলিতে, নতুন লাইন ছোট হাতের অক্ষর দিয়ে শুরু হওয়া উচিত। অনেক ভাষায় তালিকার মধ্যে ক্যাপিটালাইজেশন সম্পর্কে ভিন্ন নিয়মও রয়েছে, যা প্রতিটি লাইনের দৈর্ঘ্যের উপর নির্ভর করে।
-- লাইন আইটেমের যতিচিহ্নের ক্ষেত্রেও একই কথা প্রযোজ্য। তালিকায় শেষ যতিচিহ্ন একটি পিরিয়ড (.), কমা (,), বা সেমিকোলন (;) হতে পারে, যা ভাষার উপর নির্ভর করে।
+- তালিকা লেখার জন্য প্রতিটি ভাষার বৈচিত্র্যময় এবং জটিল নিয়ম রয়েছে। এগুলো ইংরেজির চেয়ে উল্লেখযোগ্যভাবে আলাদা হতে পারে।
+- কিছু ভাষায়, প্রতিটি নতুন লাইনের প্রথম শব্দটি বড় হাতের অক্ষরে লিখতে হয়, আবার অন্যগুলোতে, নতুন লাইনগুলো ছোট হাতের অক্ষর দিয়ে শুরু হওয়া উচিত। প্রতিটি লাইনের দৈর্ঘ্যের উপর নির্ভর করে অনেক ভাষায় তালিকায় ক্যাপিটালাইজেশন সম্পর্কে ভিন্ন নিয়ম রয়েছে।
+- লাইন আইটেমগুলোর বিরামচিহ্নের ক্ষেত্রেও একই কথা প্রযোজ্য। ভাষার উপর নির্ভর করে তালিকায় শেষের বিরামচিহ্ন একটি পিরিয়ড (**.**), কমা (**,**), বা সেমিকোলন (**;**) হতে পারে।
**উদ্ধৃতি চিহ্ন**
-- ভাষাগুলিতে বিভিন্ন উদ্ধৃতি চিহ্ন ব্যবহৃত হয়। উৎস থেকে ইংরেজি উদ্ধৃতি চিহ্নগুলি কেবল অনুলিপি করা প্রায়শই ভুল।
-- সবচেয়ে সাধারণ ধরণের কিছু উদ্ধৃতি চিহ্নের মধ্যে রয়েছে:
- - „উদাহরণ পাঠ্য“
- - ‚উদাহরণ পাঠ্য’
- - »উদাহরণ পাঠ্য«
- - “উদাহরণ পাঠ্য”
- - ‘উদাহরণ পাঠ্য’
- - «উদাহরণ পাঠ্য»
+- ভাষাগুলো বিভিন্ন উদ্ধৃতি চিহ্ন ব্যবহার করে। সোর্স থেকে কেবল ইংরেজি উদ্ধৃতি চিহ্নগুলো কপি করা প্রায়শই ভুল হয়।
+- সবচেয়ে সাধারণ ধরনের কিছু উদ্ধৃতি চিহ্নের মধ্যে রয়েছে:
+ - „example text“
+ - ‚example text’
+ - »example text«
+ - “example text”
+ - ‘example text’
+ - «example text»
**হাইফেন এবং ড্যাশ**
-- ইংরেজিতে, একটি হাইফেন (-) শব্দ বা একটি শব্দের বিভিন্ন অংশ যোগ করতে ব্যবহৃত হয়, যখন একটি ড্যাশ (–) একটি পরিসর বা একটি বিরতি নির্দেশ করতে ব্যবহৃত হয়।
-- অনেক ভাষায় হাইফেন এবং ড্যাশ ব্যবহারের জন্য ভিন্ন নিয়ম রয়েছে যা পালন করা উচিত।
+- ইংরেজিতে, শব্দ বা শব্দের বিভিন্ন অংশ যুক্ত করতে একটি হাইফেন (-) ব্যবহৃত হয়, যেখানে একটি ড্যাশ (–) একটি পরিসর বা বিরতি নির্দেশ করতে ব্যবহৃত হয়।
+- হাইফেন এবং ড্যাশ ব্যবহারের জন্য অনেক ভাষার ভিন্ন নিয়ম রয়েছে যা মেনে চলা উচিত।
### ফরম্যাট {#formats}
**সংখ্যা**
-- বিভিন্ন ভাষায় সংখ্যা লেখার প্রধান পার্থক্য হল দশমিক এবং হাজারের জন্য ব্যবহৃত বিভাজক। হাজারের জন্য, এটি একটি পিরিয়ড, কমা বা স্পেস হতে পারে। একইভাবে, কিছু ভাষায় দশমিক বিন্দু ব্যবহার করা হয়, আবার অন্যগুলিতে দশমিক কমা ব্যবহার করা হয়।
+- বিভিন্ন ভাষায় সংখ্যা লেখার প্রধান পার্থক্য হলো দশমিক এবং হাজারের জন্য ব্যবহৃত বিভাজক বা সেপারেটর। হাজারের জন্য, এটি একটি পিরিয়ড, কমা বা স্পেস হতে পারে। একইভাবে, কিছু ভাষা দশমিক বিন্দু ব্যবহার করে, আবার অন্যগুলো দশমিক কমা ব্যবহার করে।
- বড় সংখ্যার কিছু উদাহরণ:
- ইংরেজি – **1,000.50**
- স্প্যানিশ – **1.000,50**
- ফরাসি – **1 000,50**
-- সংখ্যা অনুবাদ করার সময় আরেকটি গুরুত্বপূর্ণ বিষয় হল শতাংশ চিহ্ন। এটি বিভিন্ন উপায়ে লেখা যেতে পারে: **100%**, **100 %** বা **%100**।
-- অবশেষে, ভাষার উপর নির্ভর করে ঋণাত্মক সংখ্যাগুলি ভিন্নভাবে প্রদর্শিত হতে পারে: -100, 100-, (100) বা [100]।
+- সংখ্যা অনুবাদ করার সময় আরেকটি গুরুত্বপূর্ণ বিবেচ্য বিষয় হলো শতাংশ চিহ্ন। এটি বিভিন্ন উপায়ে লেখা যেতে পারে: **100%**, **100 %** বা **%100**।
+- পরিশেষে, ভাষার উপর নির্ভর করে ঋণাত্মক সংখ্যাগুলো ভিন্নভাবে প্রদর্শিত হতে পারে: -100, 100-, (100) বা [100]।
**তারিখ**
-- তারিখ অনুবাদ করার সময়, ভাষার উপর ভিত্তি করে বেশ কিছু বিবেচ্য বিষয় এবং পার্থক্য রয়েছে। এর মধ্যে রয়েছে তারিখের বিন্যাস, বিভাজক, ক্যাপিটালাইজেশন এবং লিডিং জিরো। পূর্ণ-দৈর্ঘ্য এবং সংখ্যাসূচক তারিখের মধ্যেও পার্থক্য রয়েছে।
- - বিভিন্ন তারিখ বিন্যাসের কিছু উদাহরণ:
- - ইংরেজি ইউকে (dd/mm/yyyy) – 1লা জানুয়ারী, 2022
- - ইংরেজি ইউএস (mm/dd/yyyy) – জানুয়ারী 1, 2022
+- তারিখ অনুবাদ করার সময়, ভাষার উপর ভিত্তি করে বেশ কয়েকটি বিবেচ্য বিষয় এবং পার্থক্য রয়েছে। এগুলোর মধ্যে রয়েছে তারিখের ফরম্যাট, সেপারেটর, ক্যাপিটালাইজেশন এবং লিডিং জিরো। পূর্ণ-দৈর্ঘ্য এবং সংখ্যাসূচক তারিখের মধ্যেও পার্থক্য রয়েছে।
+ - বিভিন্ন তারিখের ফরম্যাটের কিছু উদাহরণ:
+ - ইংরেজি ইউকে (dd/mm/yyyy) – 1st January, 2022
+ - ইংরেজি ইউএস (mm/dd/yyyy) – January 1st, 2022
- চীনা (yyyy-mm-dd) – 2022 年 1 月 1 日
- ফরাসি (dd/mm/yyyy) – 1er janvier 2022
- ইতালীয় (dd/mm/yyyy) – 1º gennaio 2022
- - জার্মান (dd/mm/yyyy) – 1. জানুয়ার 2022
+ - জার্মান (dd/mm/yyyy) – 1. Januar 2022
**মুদ্রা**
-- বিভিন্ন বিন্যাস, প্রথা এবং রূপান্তরের কারণে মুদ্রা অনুবাদ করা চ্যালেঞ্জিং হতে পারে। একটি সাধারণ নিয়ম হিসাবে, অনুগ্রহ করে মুদ্রাগুলিকে উৎসের মতোই রাখুন। পাঠকের সুবিধার জন্য আপনি বন্ধনীতে আপনার স্থানীয় মুদ্রা এবং রূপান্তর যোগ করতে পারেন।
-- বিভিন্ন ভাষায় মুদ্রা লেখার প্রধান পার্থক্যগুলির মধ্যে রয়েছে প্রতীকের স্থান, দশমিক কমা বনাম দশমিক বিন্দু, স্পেসিং এবং সংক্ষেপণ বনাম প্রতীক।
- - প্রতীকের স্থান: $100 বা 100$
+- বিভিন্ন ফরম্যাট, রীতিনীতি এবং রূপান্তরের কারণে মুদ্রা অনুবাদ করা চ্যালেঞ্জিং হতে পারে। একটি সাধারণ নিয়ম হিসেবে, অনুগ্রহ করে মুদ্রাগুলো সোর্সের মতোই রাখুন। পাঠকের সুবিধার জন্য আপনি ব্র্যাকেটে আপনার স্থানীয় মুদ্রা এবং রূপান্তর যোগ করতে পারেন।
+- বিভিন্ন ভাষায় মুদ্রা লেখার প্রধান পার্থক্যগুলোর মধ্যে রয়েছে চিহ্নের স্থান নির্ধারণ, দশমিক কমা বনাম দশমিক বিন্দু, স্পেসিং এবং শব্দসংক্ষেপ বনাম চিহ্ন।
+ - চিহ্নের স্থান নির্ধারণ: $100 বা 100$
- দশমিক কমা বনাম দশমিক বিন্দু: 100,50$ বা 100.50$
- স্পেসিং: 100$ বা 100 $
- - সংক্ষেপণ বনাম প্রতীক: 100 $ বা 100 USD
+ - শব্দসংক্ষেপ বনাম চিহ্ন: 100 $ বা 100 USD
**পরিমাপের একক**
-- একটি সাধারণ নিয়ম হিসাবে, অনুগ্রহ করে পরিমাপের এককগুলি উৎস অনুযায়ী রাখুন। যদি আপনার দেশ একটি ভিন্ন সিস্টেম ব্যবহার করে, আপনি বন্ধনীতে রূপান্তর অন্তর্ভুক্ত করতে পারেন।
-- পরিমাপের এককগুলির স্থানীয়করণ ছাড়াও, ভাষাগুলি এই এককগুলির প্রতি কীভাবে দৃষ্টিভঙ্গি রাখে তার পার্থক্যগুলিও লক্ষ্য করা গুরুত্বপূর্ণ। প্রধান পার্থক্য হল সংখ্যা এবং এককের মধ্যে স্পেসিং, যা ভাষার উপর ভিত্তি করে ভিন্ন হতে পারে। এর উদাহরণগুলির মধ্যে রয়েছে 100kB বনাম 100 kB বা 50ºF বনাম 50 ºF।
+- একটি সাধারণ নিয়ম হিসেবে, অনুগ্রহ করে পরিমাপের এককগুলো সোর্স অনুযায়ী রাখুন। যদি আপনার দেশ একটি ভিন্ন সিস্টেম ব্যবহার করে, তবে আপনি ব্র্যাকেটে রূপান্তরটি অন্তর্ভুক্ত করতে পারেন।
+- পরিমাপের এককগুলোর স্থানীয়করণের পাশাপাশি, ভাষাগুলো কীভাবে এই এককগুলোর সাথে কাজ করে তার পার্থক্যগুলো লক্ষ্য করাও গুরুত্বপূর্ণ। প্রধান পার্থক্য হলো সংখ্যা এবং এককের মধ্যে স্পেসিং, যা ভাষার উপর ভিত্তি করে ভিন্ন হতে পারে। এর উদাহরণগুলোর মধ্যে রয়েছে 100kB বনাম 100 kB বা 50ºF বনাম 50 ºF।
## উপসংহার {#conclusion}
-ethereum.org অনুবাদ করা ইথেরিয়ামের বিভিন্ন দিক সম্পর্কে জানার একটি দুর্দান্ত সুযোগ।
+ethereum.org অনুবাদ করা ইথিরিয়াম-এর বিভিন্ন দিক সম্পর্কে জানার একটি দুর্দান্ত সুযোগ।
-অনুবাদ করার সময়, তাড়াহুড়ো না করার চেষ্টা করুন। স্বাভাবিকভাবে নিন এবং মজা করুন!
+অনুবাদ করার সময়, তাড়াহুড়ো না করার চেষ্টা করুন। শান্ত থাকুন এবং উপভোগ করুন!
-অনুবাদ প্রোগ্রামের সাথে জড়িত থাকার জন্য এবং ওয়েবসাইটটিকে বৃহত্তর দর্শকদের কাছে অ্যাক্সেসযোগ্য করে তুলতে আমাদের সাহায্য করার জন্য আপনাকে ধন্যবাদ। ইথেরিয়াম সম্প্রদায় বিশ্বব্যাপী, এবং আমরা খুশি যে আপনি এর একটি অংশ!
+অনুবাদ প্রোগ্রামের সাথে জড়িত থাকার জন্য এবং ওয়েবসাইটটিকে আরও বেশি দর্শকের কাছে অ্যাক্সেসযোগ্য করে তুলতে আমাদের সাহায্য করার জন্য আপনাকে ধন্যবাদ। ইথিরিয়াম কমিউনিটি বিশ্বব্যাপী, এবং আপনি এর একটি অংশ হতে পেরে আমরা আনন্দিত!
\ No newline at end of file
diff --git a/public/content/translations/bn/dao/index.md b/public/content/translations/bn/dao/index.md
index 1b7dd0470f6..46219fe4047 100644
--- a/public/content/translations/bn/dao/index.md
+++ b/public/content/translations/bn/dao/index.md
@@ -1,167 +1,169 @@
---
-title: "DAO কী?"
-metaTitle: "DAO কী? | বিকেন্দ্রীভূত স্বায়ত্তশাসিত সংস্থা"
-description: "ইথেরিয়াম উপর DAO একটি সংক্ষিপ্ত বিবরণী"
+title: ডিএও (DAO) কী?
+metaTitle: ডিএও (DAO) কী? | ডিসেন্ট্রালাইজড অটোনোমাস সংস্থা
+description: ইথিরিয়ামে ডিএও (DAO)-এর একটি ওভারভিউ
lang: bn
template: use-cases
emoji: ":handshake:"
sidebarDepth: 2
image: /images/use-cases/dao-2.png
-alt: "একটি DAO-এর একটি রিপ্রেজেন্টেশন একটি প্রস্তাবে ভোট দিচ্ছে।"
-summaryPoint1: "কেন্দ্রীভূত নেতৃত্ব ছাড়া সদস্য-মালিকানাধীন কমিউনিটি।"
-summaryPoint2: "ইন্টারনেট অপরিচিতদের সাথে সহযোগিতা করার একটি নিরাপদ উপায়।"
-summaryPoint3: "একটি নির্দিষ্ট কারণে ফান্ড সমর্পণ করার একটি নিরাপদ জায়গা।"
+alt: একটি প্রস্তাবে ডিএও (DAO) ভোটিংয়ের একটি উপস্থাপনা।
+summaryPoint1: কেন্দ্রীভূত নেতৃত্ব ছাড়া সদস্য-মালিকানাধীন কমিউনিটি।
+summaryPoint2: ইন্টারনেটে অপরিচিতদের সাথে সহযোগিতা করার একটি নিরাপদ উপায়।
+summaryPoint3: একটি নির্দিষ্ট কারণে তহবিল জমা করার একটি নিরাপদ জায়গা।
---
-## DAO কী? {#what-are-daos}
+## ডিএও (DAO) কী? {#what-are-daos}
-একটি DAO হল একটি সম্মিলিত-মালিকানাধীন সংস্থা যা একটি শেয়ার করা মিশনের দিকে কাজ করে।
+ডিএও (DAO) হলো একটি যৌথ মালিকানাধীন সংস্থা যা একটি অভিন্ন লক্ষ্যের দিকে কাজ করে।
-DAO আমাদের ফান্ড বা ক্রিয়াকলাপ পরিচালনা করার জন্য একজন পরোপকারী নেতাকে বিশ্বাস না করেই বিশ্বজুড়ে সমমনা লোকদের সাথে কাজ করার অনুমতি দেয়। এমন কোন CEO নেই যিনি খেয়ালখুশি মতো ফান্ড ব্যয় করতে পারেন বা CFO নেই যিনি বইগুলি ম্যানিপুলেট করতে পারেন। পরিবর্তে, কোডে বেক করা ব্লকচেইন-ভিত্তিক নিয়মগুলি সংজ্ঞায়িত করে যে সংস্থা কীভাবে কাজ করে এবং কীভাবে ফান্ড ব্যয় করা হয়।
+ডিএও (DAO) আমাদেরকে তহবিল বা কার্যক্রম পরিচালনার জন্য কোনো দয়ালু নেতার ওপর আস্থা না রেখেই বিশ্বজুড়ে সমমনা মানুষদের সাথে কাজ করার সুযোগ দেয়। এখানে এমন কোনো সিইও (CEO) নেই যিনি খেয়ালখুশিমতো তহবিল ব্যয় করতে পারেন বা এমন কোনো সিএফও (CFO) নেই যিনি হিসাবের খাতা কারসাজি করতে পারেন। এর পরিবর্তে, কোডের মধ্যে থাকা ব্লকচেইন-ভিত্তিক নিয়মগুলো নির্ধারণ করে যে সংস্থাটি কীভাবে কাজ করবে এবং কীভাবে তহবিল ব্যয় করা হবে।
-তাদের অন্তর্নির্মিত কোষাগার রয়েছে যা গ্রূপের অনুমোদন ছাড়া অ্যাক্সেস করার ক্ষমতা কারও নেই। প্রতিষ্ঠানের প্রত্যেকের একটি মত আছে তা নিশ্চিত করার জন্য প্রস্তাব এবং ভোট দিয়ে সিদ্ধান্তগুলি নিয়ন্ত্রিত হয় এবং সবকিছু স্বচ্ছভাবে [অনচেইনে](/glossary/#onchain) ঘটে।
+এগুলোর বিল্ট-ইন ট্রেজারি রয়েছে যেখানে গ্রুপের অনুমোদন ছাড়া কারও প্রবেশাধিকার নেই। সিদ্ধান্তগুলো প্রস্তাব এবং ভোটিংয়ের মাধ্যমে পরিচালিত হয় যাতে সংস্থার প্রত্যেকের মতামত নিশ্চিত করা যায় এবং সবকিছু স্বচ্ছভাবে [অনচেইন](/glossary/#onchain)-এ ঘটে।
-## কেন আমাদের DAO প্রয়োজন? {#why-dao}
+## আমাদের কেন ডিএও (DAO) প্রয়োজন? {#why-dao}
-তহবিল এবং অর্থ জড়িত এমন কারো সাথে একটি সংস্থা শুরু করার জন্য আপনি যাদের সাথে কাজ করছেন তাদের প্রতি অনেক বিশ্বাসের প্রয়োজন। কিন্তু এমন কাউকে বিশ্বাস করা কঠিন যার সাথে আপনি ইন্টারনেটে যোগাযোগ করেছেন। DAO-এর মাধ্যমে আপনাকে গ্রুপের অন্য কাউকে বিশ্বাস করতে হবে না, শুধুমাত্র DAO-এর কোড, যা 100% স্বচ্ছ এবং যে কারো দ্বারা যাচাইযোগ্য।
+তহবিল এবং অর্থের সাথে জড়িত এমন কোনো সংস্থা কারও সাথে শুরু করার জন্য আপনি যাদের সাথে কাজ করছেন তাদের ওপর অনেক আস্থার প্রয়োজন হয়। কিন্তু ইন্টারনেটে শুধুমাত্র যোগাযোগ হয়েছে এমন কাউকে বিশ্বাস করা কঠিন। ডিএও (DAO)-এর মাধ্যমে আপনাকে গ্রুপের অন্য কাউকে বিশ্বাস করতে হবে না, শুধুমাত্র ডিএও-এর কোডকে বিশ্বাস করতে হবে, যা 100% স্বচ্ছ এবং যে কারও দ্বারা যাচাইযোগ্য।
-এটি বিশ্বব্যাপী সহযোগিতা এবং সমন্বয়ের জন্য অনেক নতুন সুযোগ উন্মুক্ত করে।
+এটি বিশ্বব্যাপী সহযোগিতা এবং সমন্বয়ের জন্য অনেক নতুন সুযোগ উন্মুক্ত করে।
### একটি তুলনা {#dao-comparison}
-| DAO | একটি গতানুগতিক সংগঠন |
-| ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
-| সাধারণত সমতল, এবং সম্পূর্ণরূপে গণতান্ত্রিক। | সাধারণত অনুক্রমিক। |
-| কোনো পরিবর্তন বাস্তবায়নের জন্য সদস্যদের ভোট প্রয়োজন। | কাঠামোর উপর নির্ভর করে, একমাত্র দল থেকে পরিবর্তনের দাবি করা যেতে পারে, বা ভোট দেওয়ার প্রস্তাব দেওয়া যেতে পারে। |
-| ভোট গণনা করা হয়, এবং ফলাফল বিশ্বস্ত মধ্যস্থতাকারী ছাড়াই স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। | যদি ভোট দেওয়ার অনুমতি দেওয়া হয়, ভোটগুলি অভ্যন্তরীণভাবে গণনা করা হয় এবং ভোটের ফলাফল ম্যানুয়ালি পরিচালনা করতে হবে। |
-| প্রদত্ত পরিষেবাগুলি একটি বিকেন্দ্রীভূত পদ্ধতিতে স্বয়ংক্রিয়ভাবে পরিচালনা করা হয় (উদাহরণস্বরূপ জনহিতকর ফান্ডের বিতরণ)। | মানুষের পরিচালনা প্রয়োজন বা কেন্দ্রীয়ভাবে নিয়ন্ত্রিত অটোমেশন, উভয়ই ম্যানিপুলেশন প্রবণ। |
-| সমস্ত কার্যকলাপ স্বচ্ছ এবং সম্পূর্ণ জনসাধারণের। | কার্যকলাপ সাধারণত ব্যক্তিগত এবং জনসাধারণের মধ্যে সীমাবদ্ধ। |
+| ডিএও (DAO) | একটি প্রথাগত সংস্থা |
+| ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
+| সাধারণত সমতল এবং সম্পূর্ণ গণতান্ত্রিক। | সাধারণত পদানুক্রমিক। |
+| যেকোনো পরিবর্তন বাস্তবায়নের জন্য সদস্যদের ভোটিং প্রয়োজন। | কাঠামোর ওপর নির্ভর করে, কোনো একক পক্ষের কাছ থেকে পরিবর্তনের দাবি করা যেতে পারে, অথবা ভোটিংয়ের প্রস্তাব দেওয়া হতে পারে। |
+| ভোট গণনা করা হয় এবং বিশ্বস্ত মধ্যস্থতাকারী ছাড়াই ফলাফল স্বয়ংক্রিয়ভাবে বাস্তবায়িত হয়। | যদি ভোটিংয়ের অনুমতি দেওয়া হয়, তবে ভোটগুলো অভ্যন্তরীণভাবে গণনা করা হয় এবং ভোটিংয়ের ফলাফল ম্যানুয়ালি পরিচালনা করতে হয়। |
+| প্রদত্ত পরিষেবাগুলো একটি ডিসেন্ট্রালাইজড পদ্ধতিতে স্বয়ংক্রিয়ভাবে পরিচালিত হয় (উদাহরণস্বরূপ, জনহিতকর তহবিলের বিতরণ)। | মানুষের পরিচালনার প্রয়োজন হয়, অথবা কেন্দ্রীয়ভাবে নিয়ন্ত্রিত অটোমেশন, যা কারসাজির প্রবণতা রাখে। |
+| সমস্ত কার্যকলাপ স্বচ্ছ এবং সম্পূর্ণ সর্বজনীন। | কার্যকলাপ সাধারণত ব্যক্তিগত এবং জনসাধারণের জন্য সীমিত। |
-### DAO উদাহরণ {#dao-examples}
+### ডিএও (DAO)-এর উদাহরণ {#dao-examples}
-এটিকে আরও বোধগম্য করতে সাহায্য করার জন্য, আপনি কীভাবে একটি DAO ব্যবহার করতে পারেন তার কয়েকটি উদাহরণ এখানে দেওয়া হল:
+এটি আরও ভালোভাবে বোঝার জন্য, আপনি কীভাবে একটি ডিএও (DAO) ব্যবহার করতে পারেন তার কয়েকটি উদাহরণ নিচে দেওয়া হলো:
-- **একটি দাতব্য সংস্থা** – আপনি বিশ্বের যে কোনও ব্যক্তির কাছ থেকে অনুদান গ্রহণ করতে পারেন এবং কোন কারণগুলির জন্য অর্থায়ন করা হবে সে সম্পর্কে ভোট দিতে পারেন।
-- **সম্মিলিত মালিকানা** – আপনি বাস্তব বা ডিজিটাল সম্পদ ক্রয় করতে পারেন এবং সদস্যরা সেগুলি কীভাবে ব্যবহার করবে সে সম্পর্কে ভোট দিতে পারেন।
-- **উদ্যোগ এবং অনুদান** – আপনি একটি উদ্যোগ তহবিল তৈরি করতে পারেন যা বিনিয়োগের মূলধন সংগ্রহ করে এবং সমর্থন করার জন্য উদ্যোগগুলিতে ভোট দেয়। পরিশোধিত অর্থ পরে DAO-সদস্যদের মধ্যে পুনরায় বিতরণ করা হয়।
+- **একটি দাতব্য সংস্থা** – আপনি বিশ্বের যেকোনো ব্যক্তির কাছ থেকে অনুদান গ্রহণ করতে পারেন এবং কোন কারণগুলোতে তহবিল দেওয়া হবে সে বিষয়ে ভোট দিতে পারেন।
+- **যৌথ মালিকানা** – আপনি ভৌত বা ডিজিটাল সম্পদ ক্রয় করতে পারেন এবং সদস্যরা সেগুলো কীভাবে ব্যবহার করবেন সে বিষয়ে ভোট দিতে পারেন।
+- **উদ্যোগ এবং অনুদান** – আপনি একটি ভেঞ্চার ফান্ড তৈরি করতে পারেন যা বিনিয়োগের মূলধন সংগ্রহ করে এবং কোন উদ্যোগগুলোকে সমর্থন করা হবে সে বিষয়ে ভোট দেয়। পরিশোধিত অর্থ পরবর্তীতে ডিএও-সদস্যদের মধ্যে পুনরায় বিতরণ করা যেতে পারে।
-## DAO কিভাবে কাজ করে? {#how-daos-work}
+## ডিএও (DAO) কীভাবে কাজ করে? {#how-daos-work}
-একটি DAO-এর মেরুদণ্ড হল এর [স্মার্ট কন্ট্র্যাক্ট](/glossary/#smart-contract), যা সংস্থার নিয়মগুলিকে সংজ্ঞায়িত করে এবং গোষ্ঠীর কোষাগার ধারণ করে। কনট্র্যাক্টটি ইথেরিয়াম-এ লাইভ হয়ে গেলে, ভোট ছাড়া কেউ নিয়ম পরিবর্তন করতে পারবে না। যদি কেউ এমন কিছু করার চেষ্টা করে যা কোডের নিয়ম এবং যুক্তি অনুযায়ী পরিচালিত হবে না, তবে এটি ব্যর্থ হবে। আর যেহেতু কোষাগারটি স্মার্ট কন্ট্র্যাক্ট দ্বারা সংজ্ঞায়িত করা হয়েছে তার মানে গ্রুপের অনুমোদন ছাড়া কেউ টাকা ব্যয় করতে পারে না। এর মানে হল যে DAO গুলোর কেন্দ্রীয় কর্তৃপক্ষের প্রয়োজন নেই। পরিবর্তে, গ্রুপটি সম্মিলিতভাবে সিদ্ধান্ত নেয় এবং ভোট পাস হলে পেমেন্ট স্বয়ংক্রিয়ভাবে অনুমোদিত হয়।
+একটি ডিএও (DAO)-এর মেরুদণ্ড হলো এর [স্মার্ট কন্ট্রাক্ট](/glossary/#smart-contract), যা সংস্থার নিয়মগুলো নির্ধারণ করে এবং গ্রুপের ট্রেজারি ধারণ করে। একবার কন্ট্রাক্টটি [ইথিরিয়াম](/)-এ লাইভ হয়ে গেলে, ভোট ছাড়া কেউ নিয়ম পরিবর্তন করতে পারে না। যদি কেউ এমন কিছু করার চেষ্টা করে যা কোডের নিয়ম এবং যুক্তির অন্তর্ভুক্ত নয়, তবে তা ব্যর্থ হবে। এবং যেহেতু ট্রেজারিটিও স্মার্ট কন্ট্রাক্ট দ্বারা সংজ্ঞায়িত, এর মানে হলো গ্রুপের অনুমোদন ছাড়া কেউ অর্থ ব্যয় করতে পারবে না। এর মানে হলো ডিএও (DAO)-এর কোনো কেন্দ্রীয় কর্তৃপক্ষের প্রয়োজন নেই। এর পরিবর্তে, গ্রুপটি সম্মিলিতভাবে সিদ্ধান্ত নেয় এবং ভোট পাস হলে পেমেন্টগুলো স্বয়ংক্রিয়ভাবে অনুমোদিত হয়।
-এটি সম্ভব কারণ স্মার্ট কন্ট্র্যাক্ট ইথেরিয়ামে লাইভ হয়ে গেলে তা টেম্পার-প্রুফ। লোকেদের নোটিস না দিয়ে আপনি আপনি কোডটি (DAO নিয়মসমূহ) সম্পাদনা করতে পারবেন না, কারণ সবকিছুই সর্বজনীন।
+এটি সম্ভব কারণ স্মার্ট কন্ট্রাক্টগুলো ইথিরিয়ামে লাইভ হওয়ার পর টেম্পার-প্রুফ (পরিবর্তন অযোগ্য) হয়ে যায়। আপনি মানুষের নজরে না এসে শুধু কোড (ডিএও-এর নিয়ম) সম্পাদনা করতে পারবেন না কারণ সবকিছু সর্বজনীন।
-## ইথেরিয়াম এবং DAOs {#ethereum-and-daos}
+## ইথিরিয়াম এবং ডিএও (DAO) {#ethereum-and-daos}
-ইথেরিয়াম বিভিন্ন কারণে DAO-এর জন্য নিখুঁত ভিত্তি:
+বেশ কয়েকটি কারণে ইথিরিয়াম হলো ডিএও (DAO)-এর জন্য নিখুঁত ভিত্তি:
-- ইথেরিয়ামের নিজস্ব কনসেন্সাস বিকেন্দ্রীভূত এবং সংস্থাগুলির নেটওয়ার্ককে বিশ্বাস করার জন্য যথেষ্ট প্রতিষ্ঠিত।
-- স্মার্ট কন্ট্র্যাক্ট কোড একবার লাইভ হলে তা পরিবর্তন করতে পারবে না, এমনকি এর মালিকরাও। এটি DAO কে এটির সাথে প্রোগ্রাম করা নিয়ম অনুসারে চালানোর অনুমতি দেয়।
-- স্মার্ট কন্ট্র্যাক্ট ফান্ড পাঠাতে/নিতে পারে। এটি ছাড়া গ্রুপ ফান্ড পরিচালনার জন্য আপনার একজন বিশ্বস্ত মধ্যস্থতাকারীর প্রয়োজন হবে।
-- ইথেরিয়াম কমিউনিটি প্রতিযোগিতামূলক হওয়ার তুলনায় আরো সহযোগী হয়ে প্রমাণিত হয়েছে, সর্বোত্তম অনুশীলন এবং সাপোর্ট সিস্টেম দ্রুত আবির্ভূত হতে অনুমতি দেয়।
+- ইথিরিয়ামের নিজস্ব কনসেন্সাস ডিসেন্ট্রালাইজড এবং সংস্থাগুলোর নেটওয়ার্ককে বিশ্বাস করার জন্য যথেষ্ট প্রতিষ্ঠিত।
+- স্মার্ট কন্ট্রাক্ট কোড একবার লাইভ হয়ে গেলে পরিবর্তন করা যায় না, এমনকি এর মালিকদের দ্বারাও নয়। এটি ডিএও (DAO)-কে সেই নিয়ম অনুযায়ী চলতে দেয় যা দিয়ে এটি প্রোগ্রাম করা হয়েছিল।
+- স্মার্ট কন্ট্রাক্টগুলো তহবিল পাঠাতে/গ্রহণ করতে পারে। এটি ছাড়া গ্রুপের তহবিল পরিচালনার জন্য আপনার একজন বিশ্বস্ত মধ্যস্থতাকারীর প্রয়োজন হবে।
+- ইথিরিয়াম কমিউনিটি প্রতিযোগিতামূলকের চেয়ে বেশি সহযোগিতামূলক বলে প্রমাণিত হয়েছে, যা সর্বোত্তম অনুশীলন এবং সাপোর্ট সিস্টেমগুলোকে দ্রুত আবির্ভূত হতে দেয়।
-## DAO গভর্নেন্স {#dao-governance}
+## ডিএও (DAO) গভর্নেন্স {#dao-governance}
-একটি DAO পরিচালনা করার সময় অনেকগুলি বিবেচ্য বিষয় রয়েছে, যেমন ভোট এবং প্রস্তাবগুলি কীভাবে কাজ করে।
+একটি ডিএও (DAO) পরিচালনা করার সময় অনেক কিছু বিবেচনা করতে হয়, যেমন ভোটিং এবং প্রস্তাবগুলো কীভাবে কাজ করে।
-### প্রতিনিধিত্ব {#governance-delegation}
+### ডেলিগেশন {#governance-delegation}
-ডেলিগেশন হলো প্রতিনিধিত্বমূলক গণতন্ত্রের DAO সংস্করণের মতো। টোকেন হোল্ডাররা সেই ব্যবহারকারীদের ভোট অর্পণ করে যারা নিজেদের মনোনীত করে এবং প্রোটোকল পরিচালনা এবং অবগত থাকার প্রতিশ্রুতি দেয়।
+ডেলিগেশন হলো প্রতিনিধিত্বমূলক গণতন্ত্রের ডিএও (DAO) সংস্করণের মতো। টোকেন হোল্ডাররা সেই ব্যবহারকারীদের কাছে ভোট অর্পণ করেন যারা নিজেদের মনোনীত করেন এবং প্রটোকল পরিচালনা করতে ও অবগত থাকতে প্রতিশ্রুতিবদ্ধ হন।
-#### একটি বিখ্যাত উদাহরণ {#governance-example}[ENS](https://claim.ens.domains/delegate-ranking) – ENS হোল্ডাররা তাদের প্রতিনিধিত্ব করার জন্য নিযুক্ত সম্প্রদায়ের সদস্যদের কাছে তাদের ভোট অর্পণ করতে পারেন।
+#### একটি বিখ্যাত উদাহরণ {#governance-example}
+
+[ENS](https://claim.ens.domains/delegate-ranking) – ENS হোল্ডাররা তাদের প্রতিনিধিত্ব করার জন্য নিযুক্ত কমিউনিটি সদস্যদের কাছে তাদের ভোট অর্পণ করতে পারেন।
-### স্বয়ংক্রিয় লেনদেন গভর্নেন্স {#governance-example}
+### স্বয়ংক্রিয় লেনদেন গভর্নেন্স {#governance-example}
-অনেক DAO এ, লেনদেন স্বয়ংক্রিয়ভাবে সম্পাদিত হবে যদি সদস্যদের একটি কোরাম ইতিবাচক ভোট দেয়।
+অনেক ডিএও (DAO)-তে, সদস্যদের একটি কোরাম হ্যাঁ-সূচক ভোট দিলে লেনদেনগুলো স্বয়ংক্রিয়ভাবে কার্যকর হবে।
#### একটি বিখ্যাত উদাহরণ {#governance-example}
-[Nouns](https://nouns.wtf) – Nouns DAO-তে, যদি ভোটের কোরাম পূরণ হয় এবং সংখ্যাগরিষ্ঠ ভোট ইতিবাচক হয়, তবে একটি লেনদেন স্বয়ংক্রিয়ভাবে সম্পাদিত হয়, যতক্ষণ না এটি প্রতিষ্ঠাতাদের দ্বারা ভেটো না করা হয়।
+[Nouns](https://nouns.wtf) – Nouns DAO-তে, যদি ভোটের একটি কোরাম পূরণ হয় এবং সংখ্যাগরিষ্ঠ হ্যাঁ-সূচক ভোট দেয়, তবে একটি লেনদেন স্বয়ংক্রিয়ভাবে কার্যকর হয়, যতক্ষণ না এটি প্রতিষ্ঠাতাদের দ্বারা ভেটো দেওয়া হয়।
### মাল্টিসিগ গভর্নেন্স {#governance-example}
-যদিও DAO-এর হাজার হাজার ভোটিং সদস্য থাকতে পারে, তহবিলগুলি 5-20 জন সক্রিয় কমিউনিটির সদস্যদের দ্বারা ভাগ করা একটি [ওয়ালেটে](/glossary/#wallet) থাকতে পারে যারা বিশ্বস্ত এবং সাধারণত ডক্সড (জনসাধারণের পরিচয় কমিউনিটির কাছে পরিচিত)। একটি ভোটের পরে, [মাল্টিসিগ](/glossary/#multisig) স্বাক্ষরকারীরা সম্প্রদায়ের ইচ্ছা কার্যকর করে।
+যদিও ডিএও (DAO)-তে হাজার হাজার ভোটিং সদস্য থাকতে পারে, তহবিলগুলো 5-20 জন সক্রিয় কমিউনিটি সদস্য দ্বারা শেয়ার করা একটি [ওয়ালেট](/glossary/#wallet)-এ থাকতে পারে যারা বিশ্বস্ত এবং সাধারণত ডক্সড (যাদের সর্বজনীন পরিচয় কমিউনিটির কাছে পরিচিত)। একটি ভোটের পর, [মাল্টিসিগ](/glossary/#multisig) স্বাক্ষরকারীরা কমিউনিটির ইচ্ছা কার্যকর করে।
-## DAO আইন {#dao-laws}
+## ডিএও (DAO) আইন {#dao-laws}
-1977 সালে, ওয়াইমিং LLC উদ্ভাবন করে, যা উদ্যোক্তাদের রক্ষা করে এবং তাদের দায়বদ্ধতা সীমিত করে। অতি সম্প্রতি, তারা DAO আইনের অগ্রগতি করেছে যা DAO-এর জন্য আইনি মর্যাদা প্রতিষ্ঠা করে। বর্তমানে ওয়াইমিং, ভার্মন্ট এবং ভার্জিন দ্বীপপুঞ্জে কিছু আকারে DAO আইন রয়েছে।
+1977 সালে, ওয়াইওমিং এলএলসি (LLC) আবিষ্কার করে, যা উদ্যোক্তাদের রক্ষা করে এবং তাদের দায়বদ্ধতা সীমিত করে। অতি সম্প্রতি, তারা ডিএও (DAO) আইনের পথপ্রদর্শক হয়েছে যা ডিএও-এর জন্য আইনি মর্যাদা প্রতিষ্ঠা করে। বর্তমানে ওয়াইওমিং, ভারমন্ট এবং ভার্জিন দ্বীপপুঞ্জে কোনো না কোনো রূপে ডিএও আইন রয়েছে।
### একটি বিখ্যাত উদাহরণ {#law-example}
-[CityDAO](https://citizen.citydao.io/) – CityDAO ইয়েলোস্টোন ন্যাশনাল পার্কের কাছে 40 একর জমি কেনার জন্য ওয়াইমিং-এর DAO আইন ব্যবহার করেছে।
+[CityDAO](https://citizen.citydao.io/) – CityDAO ইয়েলোস্টোন ন্যাশনাল পার্কের কাছে 40 একর জমি কেনার জন্য ওয়াইওমিংয়ের ডিএও (DAO) আইন ব্যবহার করেছিল।
-## DAO সদস্যপদ {#dao-membership}
+## ডিএও (DAO) সদস্যপদ {#dao-membership}
-DAO সদস্যপদ জন্য বিভিন্ন মডেল আছে। ভোটিং এবং DAO এর অন্যান্য মূল অংশ কিভাবে কাজ করে সদস্যপদ তা নির্ধারণ করতে পারে।
+ডিএও (DAO) সদস্যপদের জন্য বিভিন্ন মডেল রয়েছে। সদস্যপদ নির্ধারণ করতে পারে ভোটিং কীভাবে কাজ করে এবং ডিএও-এর অন্যান্য মূল অংশগুলো।
### টোকেন-ভিত্তিক সদস্যপদ {#token-based-membership}
-ব্যবহৃত টোকেনের উপর নির্ভর করে, সাধারণত সম্পূর্ণ [অনুমতিহীন](/glossary/#permissionless)। বেশিরভাগ ক্ষেত্রে এই গভর্নেন্স টোকেনগুলি একটি [বিকেন্দ্রীভূত এক্সচেঞ্জে](/glossary/#dex) অনুমতিহীনভাবে লেনদেন করা যেতে পারে। অন্যদের অবশ্যই তারল্য প্রদান বা অন্য কোনো 'প্রুফ-অফ-ওয়ার্ক' এর মাধ্যমে উপার্জন করতে হবে। যেভাবেই হোক, শুধু টোকেন ধরে রাখা ভোটে অ্যাক্সেস দেয়।
+সাধারণত সম্পূর্ণ [পারমিশনলেস](/glossary/#permissionless), ব্যবহৃত টোকেনের ওপর নির্ভর করে। বেশিরভাগ ক্ষেত্রে এই গভর্নেন্স টোকেনগুলো একটি [ডিসেন্ট্রালাইজড এক্সচেঞ্জ](/glossary/#dex)-এ পারমিশনলেসভাবে ট্রেড করা যেতে পারে। অন্যগুলো তারল্য প্রদান বা অন্য কোনো 'প্রুফ-অফ-ওয়ার্ক'-এর মাধ্যমে অর্জন করতে হয়। যেভাবেই হোক, শুধুমাত্র টোকেনটি ধরে রাখলেই ভোটিংয়ের অ্যাক্সেস পাওয়া যায়।
-_সাধারণত বিস্তৃত বিকেন্দ্রীভূত প্রোটোকল এবং/অথবা টোকেনগুলি নিজেরাই পরিচালনা করতে ব্যবহৃত হয়।_
+_সাধারণত বিস্তৃত ডিসেন্ট্রালাইজড প্রটোকল এবং/অথবা টোকেনগুলো পরিচালনা করতে ব্যবহৃত হয়।_
#### একটি বিখ্যাত উদাহরণ {#token-example}
-[MakerDAO](https://makerdao.com) – MakerDAO-এর টোকেন MKR বিকেন্দ্রীভূত এক্সচেঞ্জে ব্যাপকভাবে পাওয়া যায় এবং যে কেউ মেকার প্রোটোকলের ভবিষ্যতে ভোটাধিকার কেনার সুযোগ নিতে পারে।
+[MakerDAO](https://makerdao.com) – MakerDAO-এর টোকেন MKR ডিসেন্ট্রালাইজড এক্সচেঞ্জগুলোতে ব্যাপকভাবে উপলব্ধ এবং যে কেউ মেকার প্রটোকলের ভবিষ্যতের ওপর ভোটিং ক্ষমতা পেতে এটি কিনতে পারে।
-### শেয়ার-ভিত্তিক সদস্যপদ {#share-based-membership}
+### শেয়ার-ভিত্তিক সদস্যপদ {#share-based-membership}
-শেয়ার-ভিত্তিক DAO গুলি আরো অনুমোদিত, তবে এখনও বেশ উন্মুক্ত। যেকোন সম্ভাব্য সদস্যরা DAO-তে যোগদানের জন্য একটি প্রস্তাব জমা দিতে পারে, সাধারণত টোকেন বা কাজের আকারে কিছু মূল্যের শ্রদ্ধা নিবেদন করে। শেয়ার সরাসরি ভোটদানের ক্ষমতা এবং মালিকানার প্রতিনিধিত্ব করে। সদস্যরা তাদের কোষাগারের আনুপাতিক অংশ নিয়ে যেকোনো সময় প্রস্থান করতে পারেন।
+শেয়ার-ভিত্তিক ডিএও (DAO)-গুলো বেশি পারমিশনড, তবে এখনও বেশ উন্মুক্ত। যেকোনো সম্ভাব্য সদস্য ডিএও-তে যোগদানের জন্য একটি প্রস্তাব জমা দিতে পারেন, সাধারণত টোকেন বা কাজের আকারে কিছু মূল্যের ট্রিবিউট অফার করে। শেয়ারগুলো সরাসরি ভোটিং ক্ষমতা এবং মালিকানার প্রতিনিধিত্ব করে। সদস্যরা যেকোনো সময় ট্রেজারির তাদের আনুপাতিক শেয়ার নিয়ে প্রস্থান করতে পারেন।
-_সাধারণত আরও ঘনিষ্ঠ, মানব-কেন্দ্রিক সংস্থা যেমন দাতব্য সংস্থা, কর্মী সমষ্টি এবং বিনিয়োগ ক্লাবের জন্য ব্যবহৃত হয়।_ _প্রোটোকল এবং টোকেনও পরিচালনা করতে পারে।_
+_সাধারণত দাতব্য সংস্থা, কর্মী সমবায় এবং বিনিয়োগ ক্লাবের মতো আরও ঘনিষ্ঠ, মানব-কেন্দ্রিক সংস্থাগুলোর জন্য ব্যবহৃত হয়। প্রটোকল এবং টোকেনগুলোও পরিচালনা করতে পারে।_
#### একটি বিখ্যাত উদাহরণ {#share-example}
-[MolochDAO](http://molochdao.com/) – MolochDAO ইথেরিয়াম প্রকল্পগুলিতে অর্থায়নের উপর দৃষ্টি নিবদ্ধ করে। তাদের সদস্যতার জন্য একটি প্রস্তাবের প্রয়োজন যাতে গ্রুপটি মূল্যায়ন করতে পারে যে সম্ভাব্য অনুদানপ্রাপ্তদের সম্পর্কে অবগত সিদ্ধান্ত নেওয়ার জন্য আপনার প্রয়োজনীয় দক্ষতা এবং মূলধন আছে কি না। আপনি কেবল খোলা বাজারে DAO-তে অ্যাক্সেস কিনতে পারবেন না।
+[MolochDAO](http://molochdao.com/) – MolochDAO ইথিরিয়াম প্রকল্পগুলোতে অর্থায়নের ওপর দৃষ্টি নিবদ্ধ করে। তাদের সদস্যপদের জন্য একটি প্রস্তাবের প্রয়োজন হয় যাতে গ্রুপটি মূল্যায়ন করতে পারে যে সম্ভাব্য অনুদান গ্রহীতাদের সম্পর্কে সুচিন্তিত বিচার করার জন্য আপনার প্রয়োজনীয় দক্ষতা এবং মূলধন আছে কি না। আপনি খোলা বাজারে ডিএও (DAO)-এর অ্যাক্সেস কিনতে পারবেন না।
-### খ্যাতি-ভিত্তিক সদস্যপদ {#reputation-based-membership}
+### রেপুটেশন-ভিত্তিক সদস্যপদ {#reputation-based-membership}
-খ্যাতি অংশগ্রহণের প্রমাণ উপস্থাপন করে এবং DAO-তে ভোট দেওয়ার ক্ষমতা প্রদান করে। টোকেন বা শেয়ার-ভিত্তিক সদস্যতার বিপরীতে, খ্যাতি-ভিত্তিক DAO অবদানকারীদের মালিকানা হস্তান্তর করে না। খ্যাতি কেনা, স্থানান্তর বা অর্পণ করা যাবে না; DAO সদস্যদের অবশ্যই অংশগ্রহণের মাধ্যমে সুনাম অর্জন করতে হবে। অনচেইন ভোটিং অনুমতিহীন এবং সম্ভাব্য সদস্যরা অবাধে DAO-তে যোগদানের জন্য প্রস্তাব জমা দিতে পারে এবং তাদের অবদানের বিনিময়ে পুরস্কার হিসাবে খ্যাতি এবং টোকেন পাওয়ার জন্য অনুরোধ করতে পারে।
+রেপুটেশন (সুনাম) অংশগ্রহণের প্রমাণের প্রতিনিধিত্ব করে এবং ডিএও (DAO)-তে ভোটিং ক্ষমতা প্রদান করে। টোকেন বা শেয়ার-ভিত্তিক সদস্যপদের বিপরীতে, রেপুটেশন-ভিত্তিক ডিএও-গুলো অবদানকারীদের কাছে মালিকানা হস্তান্তর করে না। রেপুটেশন কেনা, হস্তান্তর বা অর্পণ করা যায় না; ডিএও সদস্যদের অংশগ্রহণের মাধ্যমে রেপুটেশন অর্জন করতে হয়। অনচেইন ভোটিং পারমিশনলেস এবং সম্ভাব্য সদস্যরা ডিএও-তে যোগদানের জন্য অবাধে প্রস্তাব জমা দিতে পারেন এবং তাদের অবদানের বিনিময়ে পুরস্কার হিসেবে রেপুটেশন এবং টোকেন পাওয়ার অনুরোধ করতে পারেন।
-_সাধারণত প্রোটোকল এবং [ডিএ্যাপস](/glossary/#dapp) এর বিকেন্দ্রীভূত উন্নয়ন এবং গভর্নেন্সের জন্য ব্যবহৃত হয়, তবে দাতব্য সংস্থা, কর্মী গোষ্ঠী, বিনিয়োগ ক্লাব ইত্যাদির মতো বিভিন্ন সংস্থার জন্যও এটি উপযুক্ত।_
+_সাধারণত প্রটোকল এবং [ডিএ্যাপস](/glossary/#dapp)-এর ডিসেন্ট্রালাইজড উন্নয়ন এবং গভর্নেন্সের জন্য ব্যবহৃত হয়, তবে দাতব্য সংস্থা, কর্মী সমবায়, বিনিয়োগ ক্লাব ইত্যাদির মতো বিভিন্ন সংস্থার জন্যও উপযুক্ত।_
#### একটি বিখ্যাত উদাহরণ {#reputation-example}
-[DXdao](https://DXdao.eth.limo) – DXdao 2019 সাল থেকে বিকেন্দ্রীভূত প্রোটোকল এবং অ্যাপ্লিকেশন তৈরি এবং পরিচালনা করা একটি বিশ্বব্যাপী সার্বভৌম সমষ্টি ছিল। এটি তহবিল সমন্বয় ও পরিচালনা করার জন্য খ্যাতি-ভিত্তিক গভর্নেন্স এবং [হলোগ্রাফিক কনসেন্সাস](/glossary/#holographic-consensus) ব্যবহার করেছে, যার অর্থ কেউ এর ভবিষ্যত বা গভর্নেন্সকে প্রভাবিত করার জন্য নিজের পথ কিনতে পারত না।
+[DXdao](https://DXdao.eth.limo) – DXdao ছিল একটি গ্লোবাল সার্বভৌম কালেক্টিভ যা 2019 সাল থেকে ডিসেন্ট্রালাইজড প্রটোকল এবং অ্যাপ্লিকেশনগুলো তৈরি এবং পরিচালনা করছে। এটি তহবিল সমন্বয় এবং পরিচালনা করার জন্য রেপুটেশন-ভিত্তিক গভর্নেন্স এবং [হোলোগ্রাফিক কনসেন্সাস](/glossary/#holographic-consensus) ব্যবহার করেছে, যার অর্থ কেউ এর ভবিষ্যৎ বা গভর্নেন্সকে প্রভাবিত করার জন্য তাদের পথ কিনতে পারেনি।
-## একটি DAO-তে যোগ দিন / শুরু করুন {#join-start-a-dao}
+## একটি ডিএও (DAO)-তে যোগ দিন / শুরু করুন {#join-start-a-dao}
-### একটি DAO-তে যোগ দিন {#join-a-dao}
+### একটি ডিএও (DAO)-তে যোগ দিন {#join-a-dao}
-- [ইথেরিয়াম কমিউনিটি DAOs](/community/get-involved/#decentralized-autonomous-organizations-daos)
-- [DAOs-এর DAOHaus তালিকা](https://app.daohaus.club/explore)
-- [DAOs-এর Tally.xyz তালিকা](https://www.tally.xyz/explore)
-- [DAOs-এর DeGov.AI তালিকা](https://apps.degov.ai/)
+- [ইথিরিয়াম কমিউনিটি ডিএও (DAO)](/community/get-involved/#decentralized-autonomous-organizations-daos)
+- [DAOHaus-এর ডিএও (DAO) তালিকা](https://app.daohaus.club/explore)
+- [Tally.xyz-এর ডিএও (DAO) তালিকা](https://www.tally.xyz/explore)
+- [DeGov.AI-এর ডিএও (DAO) তালিকা](https://apps.degov.ai/)
-### একটি DAO শুরু করুন {#start-a-dao}
+### একটি ডিএও (DAO) শুরু করুন {#start-a-dao}
-- [DAOHaus দিয়ে একটি DAO তলব করুন](https://app.daohaus.club/summon)
-- [Tally দিয়ে একটি গভর্নর DAO শুরু করুন](https://www.tally.xyz/get-started)
-- [একটি Aragon-চালিত DAO তৈরি করুন](https://aragon.org/product)
+- [DAOHaus-এর সাথে একটি ডিএও (DAO) তৈরি করুন](https://app.daohaus.club/summon)
+- [Tally-এর সাথে একটি গভর্নর ডিএও (DAO) শুরু করুন](https://www.tally.xyz/get-started)
+- [একটি Aragon-চালিত ডিএও (DAO) তৈরি করুন](https://aragon.org/product)
- [একটি কলোনি শুরু করুন](https://colony.io/)
-- [DAOstack-এর হলোগ্রাফিক কনসেন্সাস দিয়ে একটি DAO তৈরি করুন](https://alchemy.daostack.io/daos/create)
-- [DeGov লঞ্চার দিয়ে একটি DAO লঞ্চ করুন](https://docs.degov.ai/integration/deploy)
+- [DAOstack-এর হোলোগ্রাফিক কনসেন্সাসের সাথে একটি ডিএও (DAO) তৈরি করুন](https://alchemy.daostack.io/daos/create)
+- [DeGov লঞ্চারের সাথে একটি ডিএও (DAO) চালু করুন](https://docs.degov.ai/integration/deploy)
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-### DAO নিবন্ধ {#dao-articles}
+### ডিএও (DAO) আর্টিকেল {#dao-articles}
-- [DAO কী?](https://aragon.org/dao) – [Aragon](https://aragon.org/)
-- [হাউস অফ DAOs](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
-- [DAO কী এবং এটি কীসের জন্য?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/)
-- [কীভাবে একটি DAO-চালিত ডিজিটাল কমিউনিটি শুরু করবেন](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
-- [DAO কী?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
-- [হলোগ্রাফিক কনসেন্সাস কী?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
-- [DAO গুলি কর্পোরেশন নয়: যেখানে Vitalik এর মতে স্বায়ত্তশাসিত সংস্থাগুলিতে বিকেন্দ্রীকরণ গুরুত্বপূর্ণ](https://vitalik.eth.limo/general/2022/09/20/daos.html)
-- [DAOs, DACs, DAs এবং আরও অনেক কিছু: একটি অসম্পূর্ণ পরিভাষা নির্দেশিকা](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [ইথেরিয়াম ব্লগ](https://blog.ethereum.org)
+- [ডিএও (DAO) কী?](https://aragon.org/dao) – [Aragon](https://aragon.org/)
+- [হাউস অফ ডিএও (DAO)](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
+- [ডিএও (DAO) কী এবং এটি কীসের জন্য?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/)
+- [কীভাবে একটি ডিএও (DAO)-চালিত ডিজিটাল কমিউনিটি শুরু করবেন](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
+- [ডিএও (DAO) কী?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
+- [হোলোগ্রাফিক কনসেন্সাস কী?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
+- [ডিএও (DAO) কোনো কর্পোরেশন নয়: যেখানে অটোনোমাস সংস্থাগুলোতে ডিসেন্ট্রালাইজেশন গুরুত্বপূর্ণ - ভিটালিক](https://vitalik.eth.limo/general/2022/09/20/daos.html)
+- [ডিএও (DAO), ডিএসি (DAC), ডিএ (DA) এবং আরও অনেক কিছু: একটি অসম্পূর্ণ পরিভাষা নির্দেশিকা](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [ইথিরিয়াম ব্লগ](https://blog.ethereum.org)
### ভিডিও {#videos}
-- [ক্রিপ্টোতে DAO কী?](https://youtu.be/KHm0uUPqmVE)
-- [একটি DAO কি একটি শহর তৈরি করতে পারে?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/)
+- [ক্রিপ্টোতে ডিএও (DAO) কী?](https://youtu.be/KHm0uUPqmVE)
+- [একটি ডিএও (DAO) কি একটি শহর তৈরি করতে পারে?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/)
-
+
\ No newline at end of file
diff --git a/public/content/translations/bn/decentralized-identity/index.md b/public/content/translations/bn/decentralized-identity/index.md
index 4c5221cfe5d..e37648b57e4 100644
--- a/public/content/translations/bn/decentralized-identity/index.md
+++ b/public/content/translations/bn/decentralized-identity/index.md
@@ -1,218 +1,218 @@
---
-title: "বিকেন্দ্রীভূত পরিচয়"
-description: "বিকেন্দ্রীভূত পরিচয় কী এবং কেন এটি গুরুত্বপূর্ণ?"
+title: ডিসেন্ট্রালাইজড আইডেন্টিটি
+description: ডিসেন্ট্রালাইজড আইডেন্টিটি কী এবং এটি কেন গুরুত্বপূর্ণ?
lang: bn
template: use-cases
emoji: ":id:"
sidebarDepth: 2
image: /images/eth-gif-cat.png
-summaryPoint1: "ঐতিহ্যগত পরিচয় সিস্টেমগুলি আপনার শনাক্তকারী বৈশিষ্টসমূহের ইস্যুকরণ, রক্ষণাবেক্ষণ এবং নিয়ন্ত্রণকে কেন্দ্রীভূত করেছে।"
-summaryPoint2: "বিকেন্দ্রীভূত পরিচয় কেন্দ্রীভূত তৃতীয় পক্ষের উপর নির্ভরতা দূর করে।"
-summaryPoint3: "ক্রিপ্টোকারেন্সির জন্য ধন্যবাদ, ব্যবহারকারীদের কাছে এখন আবার তাদের শনাক্তকারী এবং প্রমাণীকরণ ইস্যু করার, ধরে রাখার এবং নিয়ন্ত্রণ করার টুলস রয়েছে।"
+summaryPoint1: প্রথাগত আইডেন্টিটি সিস্টেমগুলো আপনার আইডেন্টিফায়ারগুলোর ইস্যুয়েন্স, রক্ষণাবেক্ষণ এবং নিয়ন্ত্রণকে কেন্দ্রীভূত করেছে।
+summaryPoint2: ডিসেন্ট্রালাইজড আইডেন্টিটি কেন্দ্রীভূত তৃতীয় পক্ষের উপর নির্ভরতা দূর করে।
+summaryPoint3: ক্রিপ্টোর কল্যাণে, ব্যবহারকারীদের কাছে এখন আবার তাদের নিজস্ব আইডেন্টিফায়ার এবং এটেস্টেশন ইস্যু, ধারণ এবং নিয়ন্ত্রণ করার টুল রয়েছে।
---
-পরিচয় আজ আপনার জীবনের কার্যত প্রতিটি দিকের সত্যতা প্রতিপন্ন করে। অনলাইন পরিষেবা ব্যবহার করা, একটি ব্যাঙ্ক অ্যাকাউন্ট খোলা, নির্বাচনে ভোট দেওয়া, সম্পত্তি কেনা, কর্মসংস্থান নিশ্চিত করা—এসব কিছুর জন্য আপনার পরিচয় প্রমাণ করতে হবে।
+বর্তমানে আপনার জীবনের প্রায় প্রতিটি ক্ষেত্রেই আইডেন্টিটি বা পরিচয়ের প্রয়োজন হয়। অনলাইন পরিষেবা ব্যবহার করা, ব্যাংক একাউন্ট খোলা, নির্বাচনে ভোট দেওয়া, সম্পত্তি কেনা, চাকরি নিশ্চিত করা—এই সবকিছুর জন্যই আপনার পরিচয় প্রমাণ করা প্রয়োজন।
-যাইহোক, ঐতিহ্যবাহী পরিচয় ব্যবস্থাপনা সিস্টেমগুলি দীর্ঘদিন ধরে কেন্দ্রীভূত মধ্যস্থতাকারীদের উপর নির্ভর করে যারা আপনার শনাক্তকারী এবং [প্রত্যয়ন](/glossary/#attestation) ইস্যু করে, ধরে রাখে এবং নিয়ন্ত্রণ করে। এর মানে হল আপনি আপনার পরিচয়-সম্পর্কিত তথ্য নিয়ন্ত্রণ করতে পারবেন না বা কারো ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) অ্যাক্সেস আছে এবং এই দলগুলোর কতটা অ্যাক্সেস আছে তা নির্ধারণ করতে পারবেন না।
+তবে, প্রথাগত আইডেন্টিটি ম্যানেজমেন্ট সিস্টেমগুলো দীর্ঘদিন ধরে কেন্দ্রীভূত মধ্যস্থতাকারীদের উপর নির্ভর করে আসছে যারা আপনার আইডেন্টিফায়ার এবং [এটেস্টেশন](/glossary/#attestation) ইস্যু করে, ধারণ করে এবং নিয়ন্ত্রণ করে। এর মানে হলো আপনি আপনার পরিচয়-সম্পর্কিত তথ্য নিয়ন্ত্রণ করতে পারবেন না বা ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্যে (PII) কার অ্যাক্সেস থাকবে এবং এই পক্ষগুলোর কতটা অ্যাক্সেস থাকবে তা নির্ধারণ করতে পারবেন না।
-এই সমস্যাগুলি সমাধান করার জন্য, আমরা ইথেরিয়াম -এর মতো পাবলিক ব্লকচেইনে তৈরি বিকেন্দ্রীভূত পরিচয় ব্যবস্থা করেছি। বিকেন্দ্রীভূত পরিচয় ব্যক্তিদের তাদের পরিচয়-সম্পর্কিত তথ্য পরিচালনা করতে দেয়। বিকেন্দ্রীভূত পরিচয় সমাধানের মাধ্যমে, _আপনিই_ শনাক্তকারী তৈরি করতে পারেন এবং কেন্দ্রীয় কর্তৃপক্ষের, যেমন পরিষেবা প্রদানকারী বা সরকারের উপর নির্ভর না করে আপনার প্রত্যয়ন দাবি করতে ও ধরে রাখতে পারেন।
+এই সমস্যাগুলো সমাধানের জন্য, আমাদের কাছে [Ethereum](/)-এর মতো পাবলিক ব্লকচেইন-এর উপর তৈরি ডিসেন্ট্রালাইজড আইডেন্টিটি সিস্টেম রয়েছে। ডিসেন্ট্রালাইজড আইডেন্টিটি ব্যক্তিদের তাদের পরিচয়-সম্পর্কিত তথ্য পরিচালনা করার সুযোগ দেয়। ডিসেন্ট্রালাইজড আইডেন্টিটি সলিউশনের মাধ্যমে, পরিষেবা প্রদানকারী বা সরকারের মতো কেন্দ্রীয় কর্তৃপক্ষের উপর নির্ভর না করেই _আপনি_ আইডেন্টিফায়ার তৈরি করতে এবং আপনার এটেস্টেশন দাবি ও ধারণ করতে পারেন।
-## পরিচয় কী? {#what-is-identity}
+## আইডেন্টিটি কী? {#what-is-identity}
-পরিচয় মানে স্বতন্ত্র বৈশিষ্ট্য দ্বারা সংজ্ঞায়িত একজন ব্যক্তির নিজের অনুভূতি। পরিচয় বলতে একজন _ব্যক্তি_ হওয়াকে বোঝায়, অর্থাৎ, একটি স্বতন্ত্র মানব সত্তা। পরিচয় অন্য অ-মানব সত্ত্বাকেও উল্লেখ করতে পারে, যেমন একটি সংস্থা বা কর্তৃপক্ষ।
+আইডেন্টিটি বা পরিচয় বলতে একজন ব্যক্তির নিজস্ব সত্তাকে বোঝায়, যা অনন্য বৈশিষ্ট্য দ্বারা সংজ্ঞায়িত। আইডেন্টিটি বলতে একজন _ব্যক্তি_ হওয়াকে বোঝায়, অর্থাৎ একটি স্বতন্ত্র মানব সত্তা। আইডেন্টিটি অন্যান্য অ-মানব সত্তাকেও বোঝাতে পারে, যেমন কোনো সংস্থা বা কর্তৃপক্ষ।
-## শনাক্তকারী কী? {#what-are-identifiers}
+## আইডেন্টিফায়ার কী? {#what-are-identifiers}
-একটি শনাক্তকারী হল তথ্যের একটি অংশ যা একটি নির্দিষ্ট পরিচয় বা পরিচয়ের নির্দেশক হিসাবে কাজ করে। সাধারণ শনাক্তকারীর মধ্যে রয়েছে:
+আইডেন্টিফায়ার হলো এমন একটি তথ্য যা কোনো নির্দিষ্ট পরিচয় বা পরিচয়গুলোর নির্দেশক হিসেবে কাজ করে। সাধারণ আইডেন্টিফায়ারগুলোর মধ্যে রয়েছে:
- নাম
-- সামাজিক নিরাপত্তা নম্বর/ট্যাক্স ID নম্বর
+- সোশ্যাল সিকিউরিটি নম্বর/ট্যাক্স আইডি নম্বর
- মোবাইল নম্বর
-- জন্ম তারিখ এবং স্থান
-- ডিজিটাল শনাক্তকরণ শংসাপত্র, যেমন, ইমেল ঠিকানা, ব্যবহারকারীর নাম, এভাটার্স
+- জন্মতারিখ এবং জন্মস্থান
+- ডিজিটাল আইডেন্টিফিকেশন ক্রেডেনশিয়াল, যেমন, ইমেইল এডড্রেস, ইউজারনেম, অ্যাভাটার
-শনাক্তকারীর এই ঐতিহ্যগত উদাহরণগুলি কেন্দ্রীয় সত্তা দ্বারা জারি করা, রাখা এবং নিয়ন্ত্রণ করা হয়। আপনার নাম পরিবর্তন করার জন্য আপনার সরকারের কাছ থেকে বা আপনার হ্যান্ডেল পরিবর্তন করার জন্য একটি সোশ্যাল মিডিয়া প্ল্যাটফর্মের অনুমতি প্রয়োজন।
+আইডেন্টিফায়ারের এই প্রথাগত উদাহরণগুলো কেন্দ্রীয় সত্তা দ্বারা ইস্যু, ধারণ এবং নিয়ন্ত্রিত হয়। আপনার নাম পরিবর্তন করার জন্য সরকারের কাছ থেকে বা আপনার হ্যান্ডেল পরিবর্তন করার জন্য সোশ্যাল মিডিয়া প্ল্যাটফর্মের কাছ থেকে অনুমতির প্রয়োজন হয়।
-## বিকেন্দ্রীভূত পরিচয়ের সুবিধাসমূহ {#benefits-of-decentralized-identity}
+## ডিসেন্ট্রালাইজড আইডেন্টিটির সুবিধা {#benefits-of-decentralized-identity}
-1. বিকেন্দ্রীকৃত পরিচয় তথ্য সনাক্তকরণের ব্যক্তিগত নিয়ন্ত্রণ বাড়ায়। বিকেন্দ্রীভূত শনাক্তকারী এবং প্রত্যয়ন কেন্দ্রীভূত কর্তৃপক্ষ এবং তৃতীয় পক্ষের পরিষেবাগুলির উপর নির্ভর না করেই যাচাই করা যেতে পারে।
+1. ডিসেন্ট্রালাইজড আইডেন্টিটি শনাক্তকারী তথ্যের উপর ব্যক্তিগত নিয়ন্ত্রণ বাড়ায়। ডিসেন্ট্রালাইজড আইডেন্টিফায়ার এবং এটেস্টেশনগুলো কেন্দ্রীভূত কর্তৃপক্ষ এবং তৃতীয় পক্ষের পরিষেবাগুলোর উপর নির্ভর না করেই যাচাই করা যেতে পারে।
-2. বিকেন্দ্রীভূত পরিচয় সমাধানগুলি ব্যবহারকারীর পরিচয় যাচাই এবং পরিচালনার জন্য একটি আস্থাহীন, নির্বিঘ্ন এবং গোপনীয়তা-সুরক্ষামূলক পদ্ধতি সহজতর করে।
+2. ডিসেন্ট্রালাইজড আইডেন্টিটি সলিউশনগুলো ব্যবহারকারীর পরিচয় যাচাই এবং পরিচালনা করার জন্য একটি ট্রাস্টলেস, নির্বিঘ্ন এবং গোপনীয়তা-রক্ষাকারী পদ্ধতির সুবিধা দেয়।
-3. বিকেন্দ্রীভূত পরিচয় ব্লকচেইন প্রযুক্তি ব্যবহার করে, যা বিভিন্ন পক্ষের মধ্যে আস্থা তৈরি করে এবং প্রত্যয়নের বৈধতা প্রমাণ করার জন্য ক্রিপ্টোগ্রাফিক গ্যারান্টি প্রদান করে।
+3. ডিসেন্ট্রালাইজড আইডেন্টিটি ব্লকচেইন প্রযুক্তি ব্যবহার করে, যা বিভিন্ন পক্ষের মধ্যে বিশ্বাস তৈরি করে এবং এটেস্টেশনের বৈধতা প্রমাণ করার জন্য ক্রিপ্টোগ্রাফিক গ্যারান্টি প্রদান করে।
-4. বিকেন্দ্রীভূত পরিচয় পরিচয়-ডেটা বহনযোগ্য করে তোলে। ব্যবহারকারীরা একটি মোবাইল ওয়ালেটে প্রত্যয়ন ও শনাক্তকারী সঞ্চয় করে এবং তাদের পছন্দের যেকোনো পক্ষের সাথে শেয়ার করতে পারে। বিকেন্দ্রীভূত শনাক্তকারী এবং প্রত্যয়ন প্রদানকারী সংস্থার ডাটাবেসের মধ্যে লক করা হয় না।
+4. ডিসেন্ট্রালাইজড আইডেন্টিটি পরিচয়ের ডেটাকে পোর্টেবল করে তোলে। ব্যবহারকারীরা একটি মোবাইল ওয়ালেট-এ এটেস্টেশন এবং আইডেন্টিফায়ারগুলো সংরক্ষণ করে এবং তাদের পছন্দের যেকোনো পক্ষের সাথে শেয়ার করতে পারে। ডিসেন্ট্রালাইজড আইডেন্টিফায়ার এবং এটেস্টেশনগুলো ইস্যুকারী সংস্থার ডাটাবেসে আটকে থাকে না।
-5. বিকেন্দ্রীভূত পরিচয়কে উদীয়মান [জিরো-নলেজ](/glossary/#zk-proof) প্রযুক্তিগুলির সাথে ভালোভাবে কাজ করতে হবে যা ব্যক্তিদের কোনো কিছুর মালিকানা বা কোনো কাজ সম্পন্ন করার প্রমাণ দিতে সক্ষম করবে, সেই জিনিসটি কী তা প্রকাশ না করেই। এটি ভোট দেওয়ার মতো অ্যাপ্লিকেশনগুলির জন্য বিশ্বাস এবং গোপনীয়তা একত্রিত করার একটি শক্তিশালী উপায় হয়ে উঠতে পারে।
+5. ডিসেন্ট্রালাইজড আইডেন্টিটি উদীয়মান [জিরো-নলেজ](/glossary/#zk-proof) প্রযুক্তির সাথে ভালোভাবে কাজ করবে যা ব্যক্তিদের কোনো কিছু প্রকাশ না করেই প্রমাণ করতে সক্ষম করবে যে তারা কোনো কিছুর মালিক বা কিছু করেছে। এটি ভোটিংয়ের মতো অ্যাপ্লিকেশনগুলোর জন্য বিশ্বাস এবং গোপনীয়তাকে একত্রিত করার একটি শক্তিশালী উপায় হয়ে উঠতে পারে।
-6. বিকেন্দ্রীভূত পরিচয় [অ্যান্টি-সাইবিল](/glossary/#anti-sybil) মেকানিজমকে শনাক্ত করতে সক্ষম করে যখন একজন স্বতন্ত্র ব্যক্তি কোনো সিস্টেমকে গেম বা স্প্যাম করার জন্য একাধিক ব্যক্তি হওয়ার ভান করে।
+6. ডিসেন্ট্রালাইজড আইডেন্টিটি [অ্যান্টি-সাইবিল](/glossary/#anti-sybil) মেকানিজমগুলোকে শনাক্ত করতে সক্ষম করে যখন একজন ব্যক্তি কোনো সিস্টেমকে গেম বা স্প্যাম করার জন্য একাধিক মানুষ হওয়ার ভান করে।
-## বিকেন্দ্রীভূত পরিচয়ের ব্যবহারের ক্ষেত্র {#decentralized-identity-use-cases}
+## ডিসেন্ট্রালাইজড আইডেন্টিটির ব্যবহার-ক্ষেত্র {#decentralized-identity-use-cases}
-বিকেন্দ্রীভূত পরিচয়ের অনেক সম্ভাব্য ব্যবহার-ক্ষেত্র রয়েছে:
+ডিসেন্ট্রালাইজড আইডেন্টিটির অনেক সম্ভাব্য ব্যবহার-ক্ষেত্র রয়েছে:
-### ১. সার্বজনীন লগইন {#universal-dapp-logins}
+### 1. ইউনিভার্সাল লগইন {#universal-dapp-logins}
-বিকেন্দ্রীভূত পরিচয় বিকেন্দ্রীভূত প্রমাণীকরণের মাধ্যমে পাসওয়ার্ড-ভিত্তিক লগইনগুলি প্রতিস্থাপন করতে সহায়তা করতে পারে। পরিষেবা প্রদানকারীরা ব্যবহারকারীদের প্রত্যয়ন জারি করতে পারে, যা একটি ইথেরিয়াম ওয়ালেটে সংরক্ষণ করা যেতে পারে। একটি উদাহরণ প্রত্যয়ন হবে একটি [NFT](/glossary/#nft) যা ধারককে একটি অনলাইন কমিউনিটিতে অ্যাক্সেস দেয়।
+ডিসেন্ট্রালাইজড আইডেন্টিটি পাসওয়ার্ড-ভিত্তিক লগইনগুলোকে ডিসেন্ট্রালাইজড প্রমাণীকরণ দিয়ে প্রতিস্থাপন করতে সাহায্য করতে পারে। পরিষেবা প্রদানকারীরা ব্যবহারকারীদের এটেস্টেশন ইস্যু করতে পারে, যা একটি Ethereum ওয়ালেট-এ সংরক্ষণ করা যেতে পারে। একটি উদাহরণ এটেস্টেশন হতে পারে একটি [NFT](/glossary/#nft) যা ধারককে একটি অনলাইন কমিউনিটিতে অ্যাক্সেস প্রদান করে।
-একটি [Sign-In with Ethereum](https://siwe.xyz/) ফাংশন তখন সার্ভারগুলিকে ব্যবহারকারীর ইথেরিয়াম অ্যাকাউন্ট নিশ্চিত করতে এবং তাদের অ্যাকাউন্ট ঠিকানা থেকে প্রয়োজনীয় প্রত্যয়নপত্র আনতে সক্ষম করবে। এর মানে ব্যবহারকারীরা দীর্ঘ পাসওয়ার্ড মুখস্থ না করেই প্ল্যাটফর্ম এবং ওয়েবসাইটগুলি অ্যাক্সেস করতে পারে এবং ব্যবহারকারীদের জন্য অনলাইন অভিজ্ঞতা উন্নত করে।
+একটি [Sign-In with Ethereum](https://siwe.xyz/) ফাংশন তখন সার্ভারগুলোকে ব্যবহারকারীর Ethereum একাউন্ট নিশ্চিত করতে এবং তাদের একাউন্ট এডড্রেস থেকে প্রয়োজনীয় এটেস্টেশন আনতে সক্ষম করবে। এর মানে হলো ব্যবহারকারীরা দীর্ঘ পাসওয়ার্ড মুখস্থ না করেই প্ল্যাটফর্ম এবং ওয়েবসাইটগুলোতে অ্যাক্সেস করতে পারে এবং এটি ব্যবহারকারীদের জন্য অনলাইন অভিজ্ঞতা উন্নত করে।
### 2. KYC প্রমাণীকরণ {#kyc-authentication}
-অনেক অনলাইন পরিষেবা ব্যবহার করার জন্য ব্যক্তিদের প্রত্যয়ন এবং প্রমাণপত্র প্রদান করতে হয়, যেমন একটি ড্রাইভিং লাইসেন্স বা জাতীয় পাসপোর্ট। কিন্তু এই পদ্ধতিটি সমস্যাযুক্ত কারণ ব্যক্তিগত ব্যবহারকারীর তথ্যের সাথে আপোস করা যেতে পারে এবং পরিষেবা প্রদানকারীরা প্রত্যয়নের সত্যতা যাচাই করতে পারে না।
+অনেক অনলাইন পরিষেবা ব্যবহার করার জন্য ব্যক্তিদের এটেস্টেশন এবং ক্রেডেনশিয়াল প্রদান করতে হয়, যেমন ড্রাইভিং লাইসেন্স বা জাতীয় পাসপোর্ট। কিন্তু এই পদ্ধতিটি সমস্যাযুক্ত কারণ ব্যক্তিগত ব্যবহারকারীর তথ্যের সাথে আপস করা যেতে পারে এবং পরিষেবা প্রদানকারীরা এটেস্টেশনের সত্যতা যাচাই করতে পারে না।
-বিকেন্দ্রীভূত পরিচয় কোম্পানিগুলিকে প্রচলিত [আপনার গ্রাহককে জানুন (KYC)](https://en.wikipedia.org/wiki/Know_your_customer) প্রক্রিয়াগুলি এড়িয়ে যেতে এবং যাচাইযোগ্য শংসাপত্রের মাধ্যমে ব্যবহারকারীর পরিচয় প্রমাণীকরণ করতে দেয়। এটি পরিচয় ব্যবস্থাপনার খরচ কমায় এবং জাল নথিপত্র ব্যবহার প্রতিরোধ করে।
+ডিসেন্ট্রালাইজড আইডেন্টিটি কোম্পানিগুলোকে প্রচলিত [Know-Your-Customer (KYC)](https://en.wikipedia.org/wiki/Know_your_customer) প্রক্রিয়াগুলো এড়িয়ে যেতে এবং ভেরিফাইয়েবল ক্রেডেনশিয়ালের মাধ্যমে ব্যবহারকারীর পরিচয় প্রমাণীকরণ করতে দেয়। এটি আইডেন্টিটি ম্যানেজমেন্টের খরচ কমায় এবং জাল নথিপত্রের ব্যবহার রোধ করে।
### 3. ভোটিং এবং অনলাইন কমিউনিটি {#voting-and-online-communities}
-অনলাইন ভোটিং এবং সোশ্যাল মিডিয়া বিকেন্দ্রীভূত পরিচয়ের জন্য দুটি অভিনব অ্যাপ্লিকেশন। অনলাইন ভোটিং স্কিমগুলি ম্যানিপুলেশনের জন্য সংবেদনশীল, বিশেষ করে যদি ম্যালিসিয়াস এক্টরস ভোট দেওয়ার জন্য মিথ্যা পরিচয় তৈরি করে। ব্যক্তিদেরকে অনচেইন প্রত্যয়ন উপস্থাপন করতে বলা অনলাইন ভোটিং প্রক্রিয়ার অখণ্ডতা উন্নত করতে পারে।
+অনলাইন ভোটিং এবং সোশ্যাল মিডিয়া হলো ডিসেন্ট্রালাইজড আইডেন্টিটির দুটি অভিনব অ্যাপ্লিকেশন। অনলাইন ভোটিং স্কিমগুলো ম্যানিপুলেশনের জন্য সংবেদনশীল, বিশেষ করে যদি ক্ষতিকারক ব্যক্তিরা ভোট দেওয়ার জন্য মিথ্যা পরিচয় তৈরি করে। ব্যক্তিদের অনচেইন এটেস্টেশন উপস্থাপন করতে বলা অনলাইন ভোটিং প্রক্রিয়াগুলোর অখণ্ডতা উন্নত করতে পারে।
-বিকেন্দ্রীকৃত পরিচয় জাল অ্যাকাউন্ট মুক্ত অনলাইন কমিউনিটিস তৈরি করতে সাহায্য করতে পারে। উদাহরণস্বরূপ, প্রতিটি ব্যবহারকারীকে একটি অনচেইন পরিচয় ব্যবস্থা, যেমন Ethereum Name Service ব্যবহার করে তাদের পরিচয় প্রমাণীকরণ করতে হতে পারে, যা বটের সম্ভাবনা কমিয়ে দেয়।
+ডিসেন্ট্রালাইজড আইডেন্টিটি এমন অনলাইন কমিউনিটি তৈরি করতে সাহায্য করতে পারে যা জাল একাউন্ট থেকে মুক্ত। উদাহরণস্বরূপ, প্রতিটি ব্যবহারকারীকে একটি অনচেইন আইডেন্টিটি সিস্টেম ব্যবহার করে তাদের পরিচয় প্রমাণীকরণ করতে হতে পারে, যেমন Ethereum Name Service, যা বটগুলোর সম্ভাবনা হ্রাস করে।
-### ৪. অ্যান্টি-সাইবিল সুরক্ষা {#sybil-protection}
+### 4. অ্যান্টি-সাইবিল সুরক্ষা {#sybil-protection}
-অনুদান প্রদানকারী অ্যাপ্লিকেশনগুলি যেগুলি [চতুর্ঘাত ভোটিং](/glossary/#quadratic-voting) ব্যবহার করে সেগুলি [সাইবিল আক্রমণের](/glossary/#sybil-attack) জন্য ঝুঁকিপূর্ণ কারণ অনুদানের মূল্য বৃদ্ধি পায় যখন আরও বেশি ব্যক্তি এর জন্য ভোট দেয়, যা ব্যবহারকারীদের তাদের অবদানকে অনেক পরিচয়ে বিভক্ত করতে উৎসাহিত করে। বিকেন্দ্রীভূত পরিচয়গুলি প্রত্যেক অংশগ্রহণকারীর উপর বোঝা বাড়িয়ে প্রমাণ করতে সাহায্য করে যে তারা সত্যিই মানুষ, যদিও প্রায়ই নির্দিষ্ট ব্যক্তিগত তথ্য প্রকাশ না করেই।
+অনুদান প্রদানকারী অ্যাপ্লিকেশনগুলো যা [কোয়াড্রেটিক ভোটিং](/glossary/#quadratic-voting) ব্যবহার করে সেগুলো [সাইবিল এ্যাটাক](/glossary/#sybil-attack)-এর জন্য ঝুঁকিপূর্ণ কারণ যখন আরও বেশি ব্যক্তি এর জন্য ভোট দেয় তখন একটি অনুদানের মূল্য বৃদ্ধি পায়, যা ব্যবহারকারীদের তাদের অবদানগুলোকে অনেক পরিচয়ের মধ্যে বিভক্ত করতে উৎসাহিত করে। ডিসেন্ট্রালাইজড আইডেন্টিটিগুলো প্রতিটি অংশগ্রহণকারীর উপর তারা যে সত্যিই মানুষ তা প্রমাণ করার বোঝা বাড়িয়ে এটি প্রতিরোধ করতে সাহায্য করে, যদিও প্রায়শই নির্দিষ্ট ব্যক্তিগত তথ্য প্রকাশ না করেই।
-### ৫। জাতীয় এবং সরকারি পরিচয়পত্র {#national-and-government-id}
+### 5. জাতীয় এবং সরকারি আইডি {#national-and-government-id}
-সরকারগুলি বিকেন্দ্রীভূত পরিচয়ের নীতি ব্যবহার করে মৌলিক পরিচয় নথি—যেমন জাতীয় পরিচয়পত্র, পাসপোর্ট, বা ড্রাইভিং লাইসেন্স—ইথেরিয়ামের উপর যাচাইযোগ্য শংসাপত্র হিসাবে ইস্যু করতে পারে, যা অনলাইন পরিচয় যাচাইকরণে জালিয়াতি এবং প্রতারণা কমাতে সত্যতার শক্তিশালী ক্রিপ্টোগ্রাফিক গ্যারান্টি প্রদান করে। নাগরিকরা এই প্রত্যয়নগুলি তাদের ব্যক্তিগত [ওয়ালেটে](/wallets/) সংরক্ষণ করতে পারে এবং তাদের পরিচয়, বয়স, বা ভোট দেওয়ার অধিকার প্রমাণ করতে ব্যবহার করতে পারে।
+সরকারগুলো ডিসেন্ট্রালাইজড আইডেন্টিটির নীতিগুলো ব্যবহার করে মৌলিক পরিচয়পত্রগুলো—যেমন জাতীয় আইডি, পাসপোর্ট বা ড্রাইভার্স লাইসেন্স—Ethereum-এ ভেরিফাইয়েবল ক্রেডেনশিয়াল হিসেবে ইস্যু করতে পারে, যা অনলাইন পরিচয় যাচাইকরণে জালিয়াতি এবং প্রতারণা কমাতে সত্যতার শক্তিশালী ক্রিপ্টোগ্রাফিক গ্যারান্টি প্রদান করে। নাগরিকরা এই এটেস্টেশনগুলো তাদের ব্যক্তিগত [ওয়ালেট](/wallets/)-এ সংরক্ষণ করতে পারে এবং তাদের পরিচয়, বয়স বা ভোট দেওয়ার অধিকার প্রমাণ করতে সেগুলো ব্যবহার করতে পারে।
-এই মডেলটি নির্বাচনী প্রকাশের অনুমতি দেয়, বিশেষ করে যখন এটি [জিরো-নলেজ প্রুফ (ZKP)](/zero-knowledge-proofs/) গোপনীয়তা প্রযুক্তির সাথে মিলিত হয়। উদাহরণস্বরূপ, একজন নাগরিক ক্রিপ্টোগ্রাফিকভাবে প্রমাণ করতে পারেন যে তারা একটি বয়স-সীমাবদ্ধ পরিষেবা অ্যাক্সেস করার জন্য ১৮ বছরের বেশি বয়সী, তাদের সঠিক জন্মতারিখ প্রকাশ না করেই, যা একটি ঐতিহ্যবাহী আইডি-র চেয়ে বেশি গোপনীয়তা প্রদান করে।
+এই মডেলটি সিলেক্টিভ ডিসক্লোজারের অনুমতি দেয়, বিশেষ করে যখন [জিরো-নলেজ প্রুফ (ZKP)](/zero-knowledge-proofs/) গোপনীয়তা প্রযুক্তির সাথে একত্রিত হয়। উদাহরণস্বরূপ, একজন নাগরিক তাদের সঠিক জন্মতারিখ প্রকাশ না করেই বয়স-সীমাবদ্ধ পরিষেবা অ্যাক্সেস করার জন্য ক্রিপ্টোগ্রাফিকভাবে প্রমাণ করতে পারে যে তাদের বয়স 18 বছরের বেশি, যা একটি প্রথাগত আইডির চেয়ে বেশি গোপনীয়তা প্রদান করে।
-#### 💡কেস স্টাডি: ইথেরিয়ামে ভুটান ন্যাশনাল ডিজিটাল আইডি (NDI) {#case-study-bhutan-ndi}
+#### 💡কেস স্টাডি: Ethereum-এ ভুটান ন্যাশনাল ডিজিটাল আইডি (NDI) {#case-study-bhutan-ndi}
-- ভুটানের প্রায় ৮০০,০০০ নাগরিকের জন্য যাচাইযোগ্য পরিচয়পত্রের অ্যাক্সেস প্রদান করে
-- অক্টোবর ২০২৫-এ পলিগন নেটওয়ার্ক থেকে [ইথেরিয়াম মেইননেটে](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) স্থানান্তরিত।
-- মার্চ ২০২৫ পর্যন্ত [২,৩৪,০০০-এর বেশি ডিজিটাল আইডি](https://www.blockchain-council.org/blockchain/bhutan-uses-blockchain-in-digital-id-project/) ইস্যু করা হয়েছে
+- ভুটানের প্রায় 800,000 নাগরিকের জন্য ভেরিফাইয়েবল আইডেন্টিটি ক্রেডেনশিয়ালগুলোতে অ্যাক্সেস প্রদান করে
+- 2025 সালের অক্টোবরে Polygon নেটওয়ার্ক থেকে [Ethereum মেইননেট-এ](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) স্থানান্তরিত হয়েছে
+- 2025 সালের মার্চ পর্যন্ত [234,000-এর বেশি ডিজিটাল আইডি](https://www.blockchain-council.org/blockchain/bhutan-uses-blockchain-in-digital-id-project/) ইস্যু করা হয়েছে
-ভুটান রাজ্য [তার জাতীয় ডিজিটাল পরিচয় (NDI) সিস্টেমটি](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) অক্টোবর ২০২৫-এ ইথেরিয়ামে স্থানান্তরিত করেছে। বিকেন্দ্রীভূত পরিচয় এবং স্ব-সার্বভৌম পরিচয়ের নীতির উপর ভিত্তি করে নির্মিত, ভুটানের NDI সিস্টেম বিকেন্দ্রীভূত শনাক্তকারী এবং যাচাইযোগ্য শংসাপত্র ব্যবহার করে সরাসরি একজন নাগরিকের ব্যক্তিগত ওয়ালেটে ডিজিটালি স্বাক্ষরিত শংসাপত্র ইস্যু করে। ইথেরিয়ামে এই শংসাপত্রগুলির ক্রিপ্টোগ্রাফিক প্রমাণ নোঙ্গর করে, সিস্টেমটি নিশ্চিত করে যে সেগুলি খাঁটি, টেম্পার-প্রুফ এবং কোনো কেন্দ্রীয় কর্তৃপক্ষকে জিজ্ঞাসা না করেই যেকোনো পক্ষ দ্বারা যাচাই করা যেতে পারে।
+ভুটান রাজ্য 2025 সালের অক্টোবরে [তাদের ন্যাশনাল ডিজিটাল আইডেন্টিটি (NDI) সিস্টেমটি](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878) Ethereum-এ স্থানান্তরিত করেছে। ডিসেন্ট্রালাইজড আইডেন্টিটি এবং সেলফ-সভরিন আইডেন্টিটির নীতিগুলোর উপর নির্মিত, ভুটানের NDI সিস্টেম সরাসরি একজন নাগরিকের ব্যক্তিগত ওয়ালেট-এ ডিজিটালভাবে স্বাক্ষরিত ক্রেডেনশিয়াল ইস্যু করার জন্য ডিসেন্ট্রালাইজড আইডেন্টিফায়ার এবং ভেরিফাইয়েবল ক্রেডেনশিয়াল ব্যবহার করে। Ethereum-এ এই ক্রেডেনশিয়ালগুলোর ক্রিপ্টোগ্রাফিক প্রমাণগুলো অ্যাঙ্কর করার মাধ্যমে, সিস্টেমটি নিশ্চিত করে যে সেগুলো খাঁটি, টেম্পার-প্রুফ এবং কোনো কেন্দ্রীয় কর্তৃপক্ষকে জিজ্ঞাসা না করেই যেকোনো পক্ষ দ্বারা যাচাই করা যেতে পারে।
-সিস্টেমের আর্কিটেকচার [জিরো-নলেজ প্রুফ (ZKP)](/zero-knowledge-proofs/) প্রযুক্তি ব্যবহারের মাধ্যমে গোপনীয়তার উপর জোর দেয়। "নির্বাচনী প্রকাশ"-এর এই বাস্তবায়ন নাগরিকদের নির্দিষ্ট তথ্য প্রমাণ করার অনুমতি দেয় (যেমন, "আমার বয়স ১৮ বছরের বেশি" বা "আমি একজন নাগরিক") পরিষেবাগুলি অ্যাক্সেস করার জন্য তাদের সম্পূর্ণ আইডি নম্বর বা সঠিক জন্ম তারিখের মতো অন্তর্নিহিত ব্যক্তিগত ডেটা প্রকাশ না করেই। এটি একটি নিরাপদ, ব্যবহারকারী-কেন্দ্রিক এবং গোপনীয়তা-সংরক্ষণকারী জাতীয় আইডি সিস্টেমের জন্য ইথেরিয়ামের একটি শক্তিশালী, বাস্তব-বিশ্বের ব্যবহার প্রদর্শন করে।
+সিস্টেমের আর্কিটেকচার [জিরো-নলেজ প্রুফ (ZKP)](/zero-knowledge-proofs/) প্রযুক্তি ব্যবহারের মাধ্যমে গোপনীয়তার উপর জোর দেয়। "সিলেক্টিভ ডিসক্লোজার"-এর এই বাস্তবায়ন নাগরিকদের অন্তর্নিহিত ব্যক্তিগত ডেটা, যেমন তাদের সম্পূর্ণ আইডি নম্বর বা সঠিক জন্মতারিখ প্রকাশ না করেই পরিষেবাগুলো অ্যাক্সেস করার জন্য নির্দিষ্ট তথ্য (যেমন, "আমার বয়স 18 বছরের বেশি" বা "আমি একজন নাগরিক") প্রমাণ করতে দেয়। এটি একটি সুরক্ষিত, ব্যবহারকারী-কেন্দ্রিক এবং গোপনীয়তা-সংরক্ষণকারী জাতীয় আইডি সিস্টেমের জন্য Ethereum-এর একটি শক্তিশালী, বাস্তব-বিশ্বের ব্যবহার প্রদর্শন করে।
-#### 💡কেস স্টাডি: ইথেরিয়াম [লেয়ার ২](/layer-2/) ZKSync Era-তে বুয়েনস আইরেস শহরের কোয়ার্কআইডি {#case-study-buenos-aires-quarkid}
+#### 💡কেস স্টাডি: Ethereum [লেয়ার ২](/layer-2/) ZKSync Era-তে বুয়েনস আইরেস শহরের QuarkID {#case-study-buenos-aires-quarkid}
-- লঞ্চের সময় [৩.৬ মিলিয়নেরও বেশি ব্যবহারকারীকে](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo) বিকেন্দ্রীভূত পরিচয়পত্র প্রদান করা হয়েছে
-- QuarkID হল একটি ওপেন-সোর্স প্রোটোকল যা জাতিসংঘের টেকসই উন্নয়ন লক্ষ্যমাত্রার অধীনে একটি [ডিজিটাল পাবলিক গুড](https://www.digitalpublicgoods.net/r/quarkid) হিসাবে স্বীকৃত
-- একটি "[ব্যবহারকারী-হিসাবে-সরকার](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo)" মডেলের উপর জোর দেয়, যেখানে শহরটি প্রোটোকলের মালিক নয়, যা নাগরিকদের সম্পূর্ণ ডেটা মালিকানা এবং গোপনীয়তা দেয়
+- লঞ্চের সময় [3.6 মিলিয়নেরও বেশি ব্যবহারকারীকে](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo) ডিসেন্ট্রালাইজড আইডেন্টিটি ক্রেডেনশিয়াল ইস্যু করেছে
+- QuarkID হলো একটি ওপেন-সোর্স প্রটোকল যা জাতিসংঘের টেকসই উন্নয়ন লক্ষ্যমাত্রার অধীনে একটি [ডিজিটাল পাবলিক গুড](https://www.digitalpublicgoods.net/r/quarkid) হিসেবে স্বীকৃত
+- একটি "[গভর্নমেন্ট-অ্যাজ-ইউজার](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo)" মডেলের উপর জোর দেয়, যেখানে শহরটি প্রটোকলটির মালিক নয়, যা নাগরিকদের সম্পূর্ণ ডেটা মালিকানা এবং গোপনীয়তা দেয়
-২০২৪ সালে, বুয়েনস আইরেস শহরের সরকার (GCBA) QuarkID-কে একীভূত করে, যা GCBA-এর উদ্ভাবন ও ডিজিটাল রূপান্তর সচিবালয় দ্বারা নির্মিত একটি ওপেন-সোর্স "ডিজিটাল ট্রাস্ট ফ্রেমওয়ার্ক", miBA-এর মধ্যে, যা বাসিন্দাদের সরকারি পরিষেবা এবং অফিসিয়াল নথি অ্যাক্সেস করার জন্য শহরের অফিসিয়াল অ্যাপ। লঞ্চের সময়, miBA-এর সকল ৩.৬ মিলিয়নেরও বেশি ব্যবহারকারীকে বিকেন্দ্রীভূত ডিজিটাল পরিচয়পত্র প্রদান করা হয়েছিল যা তাদের অনচেইনে যাচাইযোগ্য ডিজিটাল নথি এবং সার্টিফিকেট পরিচালনা এবং শেয়ার করার অনুমতি দেয়, যার মধ্যে নাগরিকত্বের শংসাপত্র, জন্ম, বিবাহ এবং মৃত্যু সনদ, করের রেকর্ড, টিকা দেওয়ার রেকর্ড এবং আরও অনেক কিছু রয়েছে।
+2024 সালে, বুয়েনস আইরেস শহরের সরকার (GCBA) QuarkID-কে একীভূত করেছে, যা GCBA-এর উদ্ভাবন এবং ডিজিটাল রূপান্তর সচিবালয় দ্বারা নির্মিত ওপেন-সোর্স "ডিজিটাল ট্রাস্ট ফ্রেমওয়ার্ক", miBA-তে, যা বাসিন্দাদের সরকারি পরিষেবা এবং অফিসিয়াল নথিপত্র অ্যাক্সেস করার জন্য শহরের অফিসিয়াল অ্যাপ। লঞ্চের সময়, miBA-এর সমস্ত 3.6 মিলিয়ন+ ব্যবহারকারীকে ডিসেন্ট্রালাইজড ডিজিটাল আইডেন্টিটি ইস্যু করা হয়েছিল যা তাদের নাগরিকত্বের ক্রেডেনশিয়াল, জন্ম, বিবাহ এবং মৃত্যু সনদ, ট্যাক্স রেকর্ড, টিকাদানের রেকর্ড এবং আরও অনেক কিছু সহ অনচেইন ভেরিফাইয়েবল ডিজিটাল নথিপত্র এবং সার্টিফিকেটগুলো পরিচালনা এবং শেয়ার করতে দেয়।
-ইথেরিয়াম [লেয়ার ২](/layer-2/) নেটওয়ার্ক ZKSync Era-এর উপর নির্মিত, QuarkID সিস্টেমটি ZKP প্রযুক্তি ব্যবহার করে নাগরিকদের তাদের মোবাইল ডিভাইসের মাধ্যমে পিয়ার-টু-পিয়ার ব্যক্তিগত শংসাপত্র যাচাই করার অনুমতি দেয়—অপ্রয়োজনীয় ব্যক্তিগত ডেটা প্রকাশ না করেই। প্রোগ্রামটি একটি "ব্যবহারকারী-হিসাবে-সরকার" মডেল তুলে ধরে যেখানে GCBA ওপেন-সোর্স, ইন্টারঅপারেবল QuarkID প্রোটোকলের একজন ব্যবহারকারী হিসাবে কাজ করে, কেন্দ্রীয় মালিক হিসাবে কাজ করার পরিবর্তে। এই ZKP-সক্ষম আর্কিটেকচার একটি মূল গোপনীয়তা বৈশিষ্ট্য প্রদান করে: কোনো তৃতীয় পক্ষ, এমনকি GCBA-ও, ট্র্যাক করতে পারে না যে একজন নাগরিক কীভাবে, কখন বা কেন তাদের শংসাপত্র ব্যবহার করে। এই সফল প্রোগ্রামটি নাগরিকদের তাদের সংবেদনশীল ডেটার উপর সম্পূর্ণ স্ব-সার্বভৌম পরিচয় এবং নিয়ন্ত্রণ প্রদান করে, যা সবই ইথেরিয়ামের বিশ্বব্যাপী-বিতরিত নেটওয়ার্ক দ্বারা সুরক্ষিত।
+Ethereum [লেয়ার ২](/layer-2/) নেটওয়ার্ক ZKSync Era-তে নির্মিত, QuarkID সিস্টেমটি ZKP প্রযুক্তি ব্যবহার করে নাগরিকদের তাদের মোবাইল ডিভাইসের মাধ্যমে পিয়ার-টু-পিয়ার ব্যক্তিগত ক্রেডেনশিয়াল যাচাই করতে দেয়—অপ্রয়োজনীয় ব্যক্তিগত ডেটা প্রকাশ না করেই। প্রোগ্রামটি একটি "গভর্নমেন্ট-অ্যাজ-ইউজার" মডেল হাইলাইট করে যেখানে GCBA একটি কেন্দ্রীভূত মালিক হিসেবে কাজ করার পরিবর্তে ওপেন-সোর্স, ইন্টারঅপারেবল QuarkID প্রটোকলের একজন ব্যবহারকারী হিসেবে কাজ করে। এই ZKP-সক্ষম আর্কিটেকচারটি একটি মূল গোপনীয়তা বৈশিষ্ট্য প্রদান করে: কোনো তৃতীয় পক্ষ, এমনকি GCBA-ও ট্র্যাক করতে পারে না যে একজন নাগরিক কীভাবে, কখন বা কেন তাদের ক্রেডেনশিয়াল ব্যবহার করে। এই সফল প্রোগ্রামটি নাগরিকদের সম্পূর্ণ সেলফ-সভরিন আইডেন্টিটি এবং তাদের সংবেদনশীল ডেটার উপর নিয়ন্ত্রণ প্রদান করে, যা সবই Ethereum-এর বিশ্বব্যাপী-ডিস্ট্রিবিউটেড নেটওয়ার্ক দ্বারা সুরক্ষিত।
-## প্রত্যয়ন কী? {#what-are-attestations}
+## এটেস্টেশন কী? {#what-are-attestations}
-একটি প্রত্যয়ন একটি দাবি যা একটি সত্তা দ্বারা অন্য সত্তা সম্পর্কে তৈরি করা। আপনি যদি মার্কিন যুক্তরাষ্ট্রে থাকেন, তাহলে মোটর যানবাহন বিভাগ (একটি সত্তা) দ্বারা আপনাকে জারি করা ড্রাইভিং লাইসেন্সটি প্রমাণ করে যে আপনি (অন্য সত্তা) আইনত গাড়ি চালানোর অনুমতি পেয়েছেন।
+এটেস্টেশন হলো একটি সত্তা দ্বারা অন্য সত্তা সম্পর্কে করা একটি দাবি। আপনি যদি মার্কিন যুক্তরাষ্ট্রে থাকেন, তাহলে ডিপার্টমেন্ট অফ মোটর ভেহিকেলস (একটি সত্তা) দ্বারা আপনাকে ইস্যু করা ড্রাইভার্স লাইসেন্স এটেস্ট করে যে আপনাকে (অন্য একটি সত্তা) আইনত গাড়ি চালানোর অনুমতি দেওয়া হয়েছে।
-প্রত্যয়ন শনাক্তকারী বিষয় সমূহের থেকে আলাদা। একটি প্রত্যয়ন একটি নির্দিষ্ট পরিচয়কে নির্দেশ করার জন্য শনাক্তকারী _ধারণ করে_ এবং এই পরিচয়ের সাথে সম্পর্কিত একটি বৈশিষ্ট্য সম্পর্কে দাবি করে। তাই, আপনার ড্রাইভিং লাইসেন্সে শনাক্তকারী বিষয়সমূহ (নাম, জন্ম তারিখ, ঠিকানা) আছে কিন্তু এটি আপনার গাড়ি চালানোর আইনগত অধিকার সম্পর্কেও প্রত্যয়ন।
+এটেস্টেশনগুলো আইডেন্টিফায়ার থেকে আলাদা। একটি এটেস্টেশনে একটি নির্দিষ্ট পরিচয় উল্লেখ করার জন্য আইডেন্টিফায়ার _থাকে_, এবং এই পরিচয়ের সাথে সম্পর্কিত একটি বৈশিষ্ট্য সম্পর্কে দাবি করে। সুতরাং, আপনার ড্রাইভার্স লাইসেন্সে আইডেন্টিফায়ার (নাম, জন্মতারিখ, ঠিকানা) রয়েছে তবে এটি আপনার গাড়ি চালানোর আইনি অধিকার সম্পর্কে এটেস্টেশনও বটে।
-### বিকেন্দ্রীভূত শনাক্তকারী সমূহ কী? বিকেন্দ্রীভূত শনাক্তকারীসমূহ কী? {#what-are-decentralized-identifiers}
+### ডিসেন্ট্রালাইজড আইডেন্টিফায়ার কী? {#what-are-decentralized-identifiers}
-আপনার আইনি নাম বা ইমেল ঠিকানার মত গতানুগতিক শনাক্তকারীসমূহ তৃতীয় পক্ষ—সরকার ও ইমেল প্রদানকারীগণের উপর উপর নির্ভর করে । বিকেন্দ্রীভূত শনাক্তকারীসমূহ (DID) আলাদা—এগুলি কোনো কেন্দ্রীয় সত্তা দ্বারা জারি, পরিচালিত বা নিয়ন্ত্রিত হয় না।
+আপনার আইনি নাম বা ইমেইল এডড্রেসের মতো প্রথাগত আইডেন্টিফায়ারগুলো তৃতীয় পক্ষের উপর নির্ভর করে—সরকার এবং ইমেইল প্রদানকারী। ডিসেন্ট্রালাইজড আইডেন্টিফায়ার (DIDs) আলাদা—এগুলো কোনো কেন্দ্রীয় সত্তা দ্বারা ইস্যু, পরিচালিত বা নিয়ন্ত্রিত হয় না।
-বিকেন্দ্রীভূত শনাক্তকারী ব্যক্তিদের দ্বারা জারি করা হয়, রাখা হয় এবং নিয়ন্ত্রিত হয়। একটি [ইথেরিয়াম অ্যাকাউন্ট](/glossary/#account) হলো একটি বিকেন্দ্রীভূত শনাক্তকারীর উদাহরণ। আপনি কারও অনুমতি ছাড়া এবং কেন্দ্রীয় রেজিস্ট্রিতে সংরক্ষণ করার প্রয়োজন ছাড়াই আপনি যত খুশি অ্যাকাউন্ট তৈরি করতে পারেন।
+ডিসেন্ট্রালাইজড আইডেন্টিফায়ারগুলো ব্যক্তিদের দ্বারা ইস্যু, ধারণ এবং নিয়ন্ত্রিত হয়। একটি [Ethereum একাউন্ট](/glossary/#account) হলো ডিসেন্ট্রালাইজড আইডেন্টিফায়ারের একটি উদাহরণ। আপনি কারও অনুমতি ছাড়াই এবং কোনো কেন্দ্রীয় রেজিস্ট্রিতে সংরক্ষণ করার প্রয়োজন ছাড়াই যত খুশি একাউন্ট তৈরি করতে পারেন।
-বিকেন্দ্রীভূত শনাক্তকারীগুলি ডিস্ট্রিবিউটেড লেজারে ([ব্লকচেইন](/glossary/#blockchain)) বা [পিয়ার-টু-পিয়ার নেটওয়ার্কে](/glossary/#peer-to-peer-network) সংরক্ষণ করা হয়। এটি DID-গুলিকে [বিশ্বব্যাপী অনন্য, উচ্চ প্রাপ্যতার সাথে সমাধানযোগ্য এবং ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য](https://w3c-ccg.github.io/did-primer/) করে তোলে। একটি বিকেন্দ্রীভূত শনাক্তকারী ব্যক্তি, সংস্থা বা সরকারী প্রতিষ্ঠান সহ বিভিন্ন সত্তার সাথে যুক্ত হতে পারে।
+ডিসেন্ট্রালাইজড আইডেন্টিফায়ারগুলো ডিস্ট্রিবিউটেড লেজার ([ব্লকচেইন](/glossary/#blockchain)) বা [পিয়ার-টু-পিয়ার নেটওয়ার্ক](/glossary/#peer-to-peer-network)-এ সংরক্ষণ করা হয়। এটি DID-গুলোকে [বিশ্বব্যাপী অনন্য, উচ্চ প্রাপ্যতার সাথে সমাধানযোগ্য এবং ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য](https://w3c-ccg.github.io/did-primer/) করে তোলে। একটি ডিসেন্ট্রালাইজড আইডেন্টিফায়ার মানুষ, সংস্থা বা সরকারি প্রতিষ্ঠানসহ বিভিন্ন সত্তার সাথে যুক্ত হতে পারে।
-## কিসে বিকেন্দ্রীভূত শনাক্তকারী সমূহ সম্ভব করে তোলে? কী বিকেন্দ্রীভূত শনাক্তকারীকে সম্ভব করে তোলে? {#what-makes-decentralized-identifiers-possible}
+## কী ডিসেন্ট্রালাইজড আইডেন্টিফায়ারগুলোকে সম্ভব করে তোলে? {#what-makes-decentralized-identifiers-possible}
-### ১. পাবলিক কী ক্রিপ্টোগ্রাফি {#public-key-cryptography}
+### 1. পাবলিক কি ক্রিপ্টোগ্রাফি {#public-key-cryptography}
-পাবলিক-কী ক্রিপ্টোগ্রাফি একটি তথ্য নিরাপত্তা ব্যবস্থা যা একটি সত্তার জন্য একটি [পাবলিক কী](/glossary/#public-key) এবং একটি [প্রাইভেট কী](/glossary/#private-key) তৈরি করে। পাবলিক-কী [ক্রিপ্টোগ্রাফি](/glossary/#cryptography) ব্লকচেইন নেটওয়ার্কে ব্যবহারকারীর পরিচয় প্রমাণীকরণ এবং ডিজিটাল সম্পদের মালিকানা প্রমাণ করতে ব্যবহৃত হয়।
+পাবলিক-কি ক্রিপ্টোগ্রাফি হলো একটি তথ্য সুরক্ষা ব্যবস্থা যা একটি সত্তার জন্য একটি [পাবলিক কি](/glossary/#public-key) এবং [প্রাইভেট কি](/glossary/#private-key) তৈরি করে। ব্যবহারকারীর পরিচয় প্রমাণীকরণ করতে এবং ডিজিটাল সম্পদের মালিকানা প্রমাণ করতে ব্লকচেইন নেটওয়ার্কগুলোতে পাবলিক-কি [ক্রিপ্টোগ্রাফি](/glossary/#cryptography) ব্যবহার করা হয়।
-কিছু বিকেন্দ্রীকৃত শনাক্তকারী, যেমন একটি ইথেরিয়াম অ্যাকাউন্ট, পাবলিক এবং ব্যক্তিগত কী আছে। পাবলিক কী অ্যাকাউন্টের নিয়ন্ত্রককে শনাক্ত করে, যখন ব্যক্তিগত কীগুলি এই অ্যাকাউন্টের জন্য বার্তাগুলি সাইন এবং ডিক্রিপ্ট করতে পারে। পাবলিক কী ক্রিপ্টোগ্রাফি সত্তাকে প্রমাণীকরণ করতে এবং ছদ্মবেশ ও জাল পরিচয়ের ব্যবহার প্রতিরোধ করার জন্য প্রয়োজনীয় প্রমাণ সরবরাহ করে, সমস্ত দাবি যাচাই করার জন্য [ক্রিপ্টোগ্রাফিক স্বাক্ষর](https://andersbrownworth.com/blockchain/public-private-keys/) ব্যবহার করে।
+কিছু ডিসেন্ট্রালাইজড আইডেন্টিফায়ার, যেমন একটি Ethereum একাউন্ট-এর পাবলিক এবং প্রাইভেট কি রয়েছে। পাবলিক কি একাউন্ট-এর নিয়ন্ত্রককে শনাক্ত করে, অন্যদিকে প্রাইভেট কি এই একাউন্ট-এর জন্য মেসেজগুলোতে স্বাক্ষর করতে এবং ডিক্রিপ্ট করতে পারে। পাবলিক কি ক্রিপ্টোগ্রাফি সত্তাগুলোকে প্রমাণীকরণ করতে এবং ছদ্মবেশ ধারণ ও জাল পরিচয়ের ব্যবহার রোধ করতে প্রয়োজনীয় প্রমাণ প্রদান করে, সমস্ত দাবি যাচাই করতে [ক্রিপ্টোগ্রাফিক সিগনেচার](https://andersbrownworth.com/blockchain/public-private-keys/) ব্যবহার করে।
-### 2. বিকেন্দ্রীভূত ডেটাস্টোর {#decentralized-datastores}
+### 2. ডিসেন্ট্রালাইজড ডেটাস্টোর {#decentralized-datastores}
-একটি ব্লকচেইন একটি যাচাইযোগ্য ডেটা রেজিস্ট্রি হিসাবে কাজ করে: একটি উন্মুক্ত, বিশ্বাসহীন এবং তথ্যের বিকেন্দ্রীভূত ভান্ডার। পাবলিক ব্লকচেইনের অস্তিত্ব কেন্দ্রীভূত রেজিস্ট্রিতে শনাক্তকারী সংরক্ষণ করার প্রয়োজনীয়তা দূর করে।
+একটি ব্লকচেইন একটি ভেরিফাইয়েবল ডেটা রেজিস্ট্রি হিসেবে কাজ করে: তথ্যের একটি উন্মুক্ত, ট্রাস্টলেস এবং ডিসেন্ট্রালাইজড ভাণ্ডার। পাবলিক ব্লকচেইনের অস্তিত্ব কেন্দ্রীভূত রেজিস্ট্রিগুলোতে আইডেন্টিফায়ার সংরক্ষণ করার প্রয়োজনীয়তা দূর করে।
-যদি কেউ বিকেন্দ্রীভূত শনাক্তকারীর বৈধতা নিশ্চিত করতে চান, তাহলে তারা ব্লকচেইনে সংশ্লিষ্ট পাবলিক কী দেখতে পারেন। এটি প্রথাগত শনাক্তকারীর থেকে আলাদা যার প্রমাণীকরণের জন্য তৃতীয় পক্ষের প্রয়োজন।
+যদি কারও একটি ডিসেন্ট্রালাইজড আইডেন্টিফায়ারের বৈধতা নিশ্চিত করার প্রয়োজন হয়, তবে তারা ব্লকচেইনে সংশ্লিষ্ট পাবলিক কি খুঁজতে পারে। এটি প্রথাগত আইডেন্টিফায়ারগুলো থেকে আলাদা যেগুলোর প্রমাণীকরণের জন্য তৃতীয় পক্ষের প্রয়োজন হয়।
-## বিকেন্দ্রীভূত শনাক্তকারী এবং প্রত্যয়নগুলি কীভাবে বিকেন্দ্রীকৃত পরিচয় সক্ষম করে? বিকেন্দ্রীভূত শনাক্তকারী এবং প্রত্যয়নগুলি কীভাবে বিকেন্দ্রীভূত পরিচয় সক্ষম করে? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity}
+## কীভাবে ডিসেন্ট্রালাইজড আইডেন্টিফায়ার এবং এটেস্টেশনগুলো ডিসেন্ট্রালাইজড আইডেন্টিটি সক্ষম করে? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity}
-বিকেন্দ্রীভূত পরিচয় হল এই ধারণা যে পরিচয়-সম্পর্কিত তথ্য স্ব-নিয়ন্ত্রিত, ব্যক্তিগত এবং বহনযোগ্য হওয়া উচিত, বিকেন্দ্রীভূত শনাক্তকারী এবং প্রত্যয়নগুলি প্রাথমিক বিল্ডিং ব্লক।
+ডিসেন্ট্রালাইজড আইডেন্টিটি হলো এই ধারণা যে পরিচয়-সম্পর্কিত তথ্য স্ব-নিয়ন্ত্রিত, ব্যক্তিগত এবং পোর্টেবল হওয়া উচিত, যেখানে ডিসেন্ট্রালাইজড আইডেন্টিফায়ার এবং এটেস্টেশনগুলো হলো প্রাথমিক বিল্ডিং ব্লক।
-বিকেন্দ্রীভূত পরিচয়ের পরিপ্রেক্ষিতে, প্রত্যয়ন (যা [ভেরিফায়েবল ক্রেডেনশিয়ালস](https://www.w3.org/TR/vc-data-model/) নামেও পরিচিত) হলো ইস্যুকারী কর্তৃক প্রদত্ত টেম্পার-প্রুফ, ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য দাবি। প্রতিটি প্রত্যয়ন বা ভেরিফাইএবল ক্রেডেনসিয়ালস একটি সত্তা (যেমন, একটি সংস্থা) ইস্যুসমূহ তাদের DID এর সাথে যুক্ত।
+ডিসেন্ট্রালাইজড আইডেন্টিটির প্রেক্ষাপটে, এটেস্টেশনগুলো (যা [ভেরিফাইয়েবল ক্রেডেনশিয়াল](https://www.w3.org/TR/vc-data-model/) হিসেবেও পরিচিত) হলো ইস্যুকারী দ্বারা করা টেম্পার-প্রুফ, ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য দাবি। একটি সত্তা (যেমন, একটি সংস্থা) যে প্রতিটি এটেস্টেশন বা ভেরিফাইয়েবল ক্রেডেনশিয়াল ইস্যু করে তা তাদের DID-এর সাথে যুক্ত থাকে।
-যেহেতু DID ব্লকচেইনে সংরক্ষিত থাকে, তাই যে কেউ ইথেরিয়ামে ইস্যুকারীর ডিআইডি ক্রস-চেক করে একটি প্রত্যয়নের বৈধতা যাচাই করতে পারে। মূলত, ইথেরিয়াম ব্লকচেইন একটি গ্লোবাল ডিরেক্টরির মতো কাজ করে যা কিছু নির্দিষ্ট সত্তার সাথে যুক্ত DID যাচাই করতে সক্ষম করে।
+যেহেতু DID-গুলো ব্লকচেইনে সংরক্ষণ করা হয়, তাই যে কেউ Ethereum-এ ইস্যুকারীর DID ক্রস-চেক করে একটি এটেস্টেশনের বৈধতা যাচাই করতে পারে। মূলত, Ethereum ব্লকচেইন একটি গ্লোবাল ডিরেক্টরির মতো কাজ করে যা নির্দিষ্ট সত্তাগুলোর সাথে যুক্ত DID-গুলোর যাচাইকরণ সক্ষম করে।
-বিকেন্দ্রীভূত শনাক্তকারীর কারণ হল প্রত্যয়নগুলি স্ব-নিয়ন্ত্রিত এবং যাচাইযোগ্য। এমনকি যদি ইস্যুকারীর আর অস্তিত্ব না থাকে, তবে ধারকের কাছে সর্বদা প্রত্যয়নের মূল এবং বৈধতার প্রমাণ থাকে।
+ডিসেন্ট্রালাইজড আইডেন্টিফায়ারগুলোর কারণেই এটেস্টেশনগুলো স্ব-নিয়ন্ত্রিত এবং যাচাইযোগ্য। এমনকি যদি ইস্যুকারীর আর অস্তিত্ব না থাকে, তবুও ধারকের কাছে সর্বদা এটেস্টেশনের উৎস এবং বৈধতার প্রমাণ থাকে।
-বিকেন্দ্রীভূত পরিচয়ের মাধ্যমে ব্যক্তিগত তথ্যের গোপনীয়তা রক্ষার জন্য বিকেন্দ্রীকৃত শনাক্তকারীও গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি একজন ব্যক্তি একটি প্রত্যয়নের প্রমাণ (একটি ড্রাইভারের লাইসেন্স) জমা দেন, তাহলে যাচাইকারী পক্ষকে প্রমাণের তথ্যের বৈধতা পরীক্ষা করার প্রয়োজন নেই। পরিবর্তে, প্রমাণটি বৈধ কিনা তা নির্ধারণ করার জন্য যাচাইকারীর শুধুমাত্র প্রত্যয়নের সত্যতা এবং ইস্যুকারী সংস্থার পরিচয়ের ক্রিপ্টোগ্রাফিক গ্যারান্টি প্রয়োজন।
+ডিসেন্ট্রালাইজড আইডেন্টিটির মাধ্যমে ব্যক্তিগত তথ্যের গোপনীয়তা রক্ষার জন্যও ডিসেন্ট্রালাইজড আইডেন্টিফায়ারগুলো অত্যন্ত গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি কোনো ব্যক্তি একটি এটেস্টেশনের প্রমাণ (একটি ড্রাইভার্স লাইসেন্স) জমা দেয়, তবে যাচাইকারী পক্ষকে প্রমাণের তথ্যের বৈধতা পরীক্ষা করার প্রয়োজন নেই। পরিবর্তে, প্রমাণটি বৈধ কিনা তা নির্ধারণ করতে যাচাইকারীর শুধুমাত্র এটেস্টেশনের সত্যতা এবং ইস্যুকারী সংস্থার পরিচয়ের ক্রিপ্টোগ্রাফিক গ্যারান্টি প্রয়োজন।
-## বিকেন্দ্রীভূত পরিচয়ে প্রত্যয়নের প্রকারভেদ {#types-of-attestations-in-decentralized-identity}
+## ডিসেন্ট্রালাইজড আইডেন্টিটিতে এটেস্টেশনের ধরন {#types-of-attestations-in-decentralized-identity}
-একটি ইথেরিয়াম-ভিত্তিক আইডেন্টিটি ইকোসিস্টেমে কীভাবে প্রত্যয়িত তথ্য সংরক্ষণ এবং পুনরুদ্ধার করা হয় তা প্রথাগত পরিচয় ব্যবস্থাপনা থেকে আলাদা। বিকেন্দ্রীভূত পরিচয় ব্যবস্থায় প্রত্যয়ন জারি, সংরক্ষণ এবং যাচাই করার বিভিন্ন পদ্ধতির একটি সংক্ষিপ্ত বিবরণ এখানে রয়েছে:
+একটি Ethereum-ভিত্তিক আইডেন্টিটি ইকোসিস্টেমে কীভাবে এটেস্টেশনের তথ্য সংরক্ষণ এবং পুনরুদ্ধার করা হয় তা প্রথাগত আইডেন্টিটি ম্যানেজমেন্ট থেকে আলাদা। এখানে ডিসেন্ট্রালাইজড আইডেন্টিটি সিস্টেমগুলোতে এটেস্টেশন ইস্যু, সংরক্ষণ এবং যাচাই করার বিভিন্ন পদ্ধতির একটি ওভারভিউ দেওয়া হলো:
-### অফচেইন প্রত্যয়ন {#offchain-attestations}
+### অফচেইন এটেস্টেশন {#offchain-attestations}
-অনচেইন প্রত্যয়ন সংরক্ষণের একটি উদ্বেগ হলো, সেগুলিতে এমন তথ্য থাকতে পারে যা ব্যক্তিরা গোপন রাখতে চায়। ইথেরিয়াম ব্লকচেইনের সর্বজনীন প্রকৃতি এই ধরনের প্রত্যয়ন সংরক্ষণ করাকে আকর্ষণীয় করে তোলে।
+অনচেইনে এটেস্টেশন সংরক্ষণ করার ক্ষেত্রে একটি উদ্বেগের বিষয় হলো যে সেগুলোতে এমন তথ্য থাকতে পারে যা ব্যক্তিরা ব্যক্তিগত রাখতে চায়। Ethereum ব্লকচেইনের সর্বজনীন প্রকৃতি এই ধরনের এটেস্টেশন সংরক্ষণ করাকে অনাকর্ষণীয় করে তোলে।
-এর সমাধান হল প্রত্যয়নপত্র ইস্যু করা, যা ব্যবহারকারীরা অফচেইন ডিজিটাল ওয়ালেটে রাখে, কিন্তু তা ইস্যুকারীর অনচেইন সংরক্ষিত DID দ্বারা স্বাক্ষরিত থাকে। এই প্রত্যয়নগুলি [JSON ওয়েব টোকেন](https://en.wikipedia.org/wiki/JSON_Web_Token) হিসাবে এনকোড করা হয় এবং এতে ইস্যুকারীর ডিজিটাল স্বাক্ষর থাকে—যা অফচেইন দাবিগুলির সহজ যাচাইকরণের সুযোগ দেয়।
+এর সমাধান হলো এটেস্টেশন ইস্যু করা, যা ব্যবহারকারীদের দ্বারা ডিজিটাল ওয়ালেটগুলোতে অফচেইনে রাখা হয়, কিন্তু অনচেইনে সংরক্ষিত ইস্যুকারীর DID দিয়ে স্বাক্ষরিত হয়। এই এটেস্টেশনগুলো [JSON Web Tokens](https://en.wikipedia.org/wiki/JSON_Web_Token) হিসেবে এনকোড করা হয় এবং এতে ইস্যুকারীর ডিজিটাল সিগনেচার থাকে—যা অফচেইন দাবিগুলোর সহজে যাচাইকরণের অনুমতি দেয়।
-অফচেইন প্রত্যয়ন ব্যাখ্যা করার জন্য এখানে একটি অনুমানমূলক দৃশ্যপট দেওয়া হলো:
+অফচেইন এটেস্টেশনগুলো ব্যাখ্যা করার জন্য এখানে একটি অনুমানমূলক দৃশ্যপট দেওয়া হলো:
-1. একটি বিশ্ববিদ্যালয় (ইস্যুকারী) একটি প্রত্যয়ন (একটি ডিজিটাল একাডেমিক সনদপত্র) তৈরি করে, তার কীগুলির দ্বারা স্বাক্ষর করে এবং এটি ববকে (পরিচয় মালিক) ইস্যু করে।
+1. একটি বিশ্ববিদ্যালয় (ইস্যুকারী) একটি এটেস্টেশন (একটি ডিজিটাল একাডেমিক সার্টিফিকেট) তৈরি করে, এর কিগুলো দিয়ে স্বাক্ষর করে এবং এটি ববকে (পরিচয়ের মালিক) ইস্যু করে।
-2. বব একটি চাকরির জন্য আবেদন করেন এবং একজন নিয়োগকর্তার কাছে তার শিক্ষাগত যোগ্যতা প্রমাণ করতে চান, তাই তিনি তার মোবাইল ওয়ালেট থেকে প্রত্যয়ন শেয়ার করেন। কোম্পানী (যাচাইকারী) তারপর ইস্যুকারীর DID (অর্থাৎ, ইথেরিয়ামে এর পাবলিক কী) পরীক্ষা করে সত্যায়নের বৈধতা নিশ্চিত করতে পারে।
+2. বব একটি চাকরির জন্য আবেদন করে এবং একজন নিয়োগকর্তার কাছে তার শিক্ষাগত যোগ্যতা প্রমাণ করতে চায়, তাই সে তার মোবাইল ওয়ালেট থেকে এটেস্টেশনটি শেয়ার করে। কোম্পানি (যাচাইকারী) তখন ইস্যুকারীর DID (অর্থাৎ, Ethereum-এ এর পাবলিক কি) পরীক্ষা করে এটেস্টেশনের বৈধতা নিশ্চিত করতে পারে।
-### স্থায়ী অ্যাক্সেস সহ অফচেইন প্রত্যয়ন {#offchain-attestations-with-persistent-access}
+### স্থায়ী অ্যাক্সেসসহ অফচেইন এটেস্টেশন {#offchain-attestations-with-persistent-access}
-এই ব্যবস্থার অধীনে প্রত্যয়নগুলি JSON ফাইলে রূপান্তরিত হয় এবং অফচেইন সংরক্ষণ করা হয় (আদর্শভাবে একটি [বিকেন্দ্রীভূত ক্লাউড স্টোরেজ](/developers/docs/storage/) প্ল্যাটফর্মে, যেমন IPFS বা Swarm)। যাইহোক, JSON ফাইলের একটি [হ্যাস](/glossary/#hash) অনচেইন সংরক্ষণ করা হয় এবং একটি অনচেইন রেজিস্ট্রির মাধ্যমে একটি DID-এর সাথে লিঙ্ক করা হয়। সংশ্লিষ্ট DID হয় প্রত্যয়ন প্রদানকারী বা প্রাপকের হতে পারে।
+এই ব্যবস্থার অধীনে এটেস্টেশনগুলোকে JSON ফাইলে রূপান্তরিত করা হয় এবং অফচেইনে সংরক্ষণ করা হয় (আদর্শভাবে একটি [ডিসেন্ট্রালাইজড ক্লাউড স্টোরেজ](/developers/docs/storage/) প্ল্যাটফর্মে, যেমন IPFS বা Swarm)। তবে, JSON ফাইলের একটি [হ্যাস](/glossary/#hash) অনচেইনে সংরক্ষণ করা হয় এবং একটি অনচেইন রেজিস্ট্রির মাধ্যমে একটি DID-এর সাথে যুক্ত করা হয়। সংশ্লিষ্ট DID এটেস্টেশনের ইস্যুকারী বা প্রাপকের হতে পারে।
-এই পদ্ধতিটি ব্লকচেইন-ভিত্তিক অটলতা লাভের জন্য প্রত্যয়নকে সক্ষম করে, যখন দাবির তথ্য এনক্রিপ্ট করা এবং যাচাইযোগ্য রাখা হয়। এটি নির্বাচনী প্রকাশের জন্যও অনুমতি দেয় যেহেতু ব্যক্তিগত কী ধারক তথ্যটি ডিক্রিপ্ট করতে পারে।
+এই পদ্ধতিটি এটেস্টেশনগুলোকে ব্লকচেইন-ভিত্তিক স্থায়িত্ব অর্জন করতে সক্ষম করে, পাশাপাশি দাবির তথ্য এনক্রিপ্ট করা এবং যাচাইযোগ্য রাখে। এটি সিলেক্টিভ ডিসক্লোজারেরও অনুমতি দেয় কারণ প্রাইভেট কি-এর ধারক তথ্য ডিক্রিপ্ট করতে পারে।
-### অনচেইন প্রত্যয়ন {#onchain-attestations}
+### অনচেইন এটেস্টেশন {#onchain-attestations}
-অনচেইন প্রত্যয়ন ইথেরিয়াম ব্লকচেইনে [স্মার্ট কন্ট্র্যাক্টে](/glossary/#smart-contract) রাখা হয়। স্মার্ট কন্ট্র্যাক্ট (একটি রেজিস্ট্রি হিসাবে কাজ করে) একটি প্রত্যয়নকে সংশ্লিষ্ট অনচেইন বিকেন্দ্রীভূত শনাক্তকারীর (একটি পাবলিক কী) সাথে ম্যাপ করবে।
+অনচেইন এটেস্টেশনগুলো Ethereum ব্লকচেইনে [স্মার্ট কন্ট্রাক্ট](/glossary/#smart-contract)-এ রাখা হয়। স্মার্ট কন্ট্রাক্ট (একটি রেজিস্ট্রি হিসেবে কাজ করে) একটি এটেস্টেশনকে একটি সংশ্লিষ্ট অনচেইন ডিসেন্ট্রালাইজড আইডেন্টিফায়ার (একটি পাবলিক কি)-এর সাথে ম্যাপ করবে।
-কীভাবে অনচেইন প্রত্যয়নগুলি অনুশীলনে কাজ করতে পারে তা দেখানোর জন্য এখানে একটি উদাহরণ দেওয়া হল:
+অনচেইন এটেস্টেশনগুলো বাস্তবে কীভাবে কাজ করতে পারে তা দেখানোর জন্য এখানে একটি উদাহরণ দেওয়া হলো:
-1. একটি কোম্পানি (XYZ Corp) একটি স্মার্ট কন্ট্র্যাক্ট ব্যবহার করে মালিকানা শেয়ার বিক্রি করার পরিকল্পনা করে কিন্তু শুধুমাত্র সেই ক্রেতাদের চায় যারা ব্যাকগ্রাউন্ড চেক সম্পন্ন করেছে।
+1. একটি কোম্পানি (XYZ Corp) একটি স্মার্ট কন্ট্রাক্ট ব্যবহার করে মালিকানার শেয়ার বিক্রি করার পরিকল্পনা করে কিন্তু শুধুমাত্র এমন ক্রেতাদের চায় যারা ব্যাকগ্রাউন্ড চেক সম্পন্ন করেছে।
-2. XYZ Corp কোম্পানিকে ইথেরিয়ামে অনচেইন প্রত্যয়ন ইস্যু করার জন্য ব্যাকগ্রাউন্ড চেক করতে পারে। এই প্রত্যয়নটি প্রমাণ করে যে একজন ব্যক্তি কোনো ব্যক্তিগত তথ্য প্রকাশ না করেই ব্যাকগ্রাউন্ড চেক পাস করেছেন।
+2. XYZ Corp ব্যাকগ্রাউন্ড চেক সম্পাদনকারী কোম্পানিকে Ethereum-এ অনচেইন এটেস্টেশন ইস্যু করতে বলতে পারে। এই এটেস্টেশন প্রত্যয়ন করে যে একজন ব্যক্তি কোনো ব্যক্তিগত তথ্য প্রকাশ না করেই ব্যাকগ্রাউন্ড চেক পাস করেছে।
-3. স্মার্ট কন্ট্র্যাক্ট সেলিং শেয়ার স্ক্রিন করা ক্রেতাদের পরিচয়ের জন্য রেজিস্ট্রি চুক্তি পরীক্ষা করতে পারে, যা স্মার্ট কন্ট্রাক্টের পক্ষে কার শেয়ার কেনার অনুমতি আছে বা নাই তা নির্ধারণ করা সম্ভব করে।
+3. শেয়ার বিক্রি করা স্মার্ট কন্ট্রাক্টটি স্ক্রিন করা ক্রেতাদের পরিচয়ের জন্য রেজিস্ট্রি কন্ট্রাক্ট পরীক্ষা করতে পারে, যা স্মার্ট কন্ট্রাক্টটির জন্য নির্ধারণ করা সম্ভব করে তোলে যে কাকে শেয়ার কেনার অনুমতি দেওয়া হয়েছে বা কাকে নয়।
-### সোলবাউন্ড টোকেন এবং পরিচয় {#soulbound}
+### সোলবাউন্ড টোকেন এবং আইডেন্টিটি {#soulbound}
-[সোলবাউন্ড টোকেন](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) ([অ-হস্তান্তরযোগ্য NFT](/glossary/#nft)) একটি নির্দিষ্ট ওয়ালেটের জন্য অনন্য তথ্য সংগ্রহ করতে ব্যবহার করা যেতে পারে। এটি কার্যকরভাবে একটি নির্দিষ্ট ইথেরিয়াম ঠিকানার সাথে আবদ্ধ একটি অনন্য অনচেইন পরিচয় তৈরি করে যাতে কৃতিত্বের প্রতিনিধিত্বকারী টোকেন অন্তর্ভুক্ত থাকতে পারে (যেমন, কোনো নির্দিষ্ট অনলাইন কোর্স শেষ করা বা একটি গেমে থ্রেশহোল্ড স্কোর পাস করা) বা কমিউনিটির অংশগ্রহণ।
+[সোলবাউন্ড টোকেন](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) ([অ-হস্তান্তরযোগ্য NFT](/glossary/#nft)) একটি নির্দিষ্ট ওয়ালেট-এর জন্য অনন্য তথ্য সংগ্রহ করতে ব্যবহার করা যেতে পারে। এটি কার্যকরভাবে একটি নির্দিষ্ট Ethereum এডড্রেস-এর সাথে আবদ্ধ একটি অনন্য অনচেইন আইডেন্টিটি তৈরি করে যার মধ্যে অর্জনগুলো (যেমন, কোনো নির্দিষ্ট অনলাইন কোর্স শেষ করা বা কোনো গেমে একটি থ্রেশহোল্ড স্কোর পাস করা) বা কমিউনিটিতে অংশগ্রহণ উপস্থাপনকারী টোকেনগুলো অন্তর্ভুক্ত থাকতে পারে।
-## বিকেন্দ্রীভূত পরিচয় ব্যবহার করুন {#use-decentralized-identity}
+## ডিসেন্ট্রালাইজড আইডেন্টিটি ব্যবহার করুন {#use-decentralized-identity}
-বিকেন্দ্রীভূত পরিচয় সমাধানের ভিত্তি হিসাবে ইথেরিয়াম ব্যবহার করে অনেক উচ্চাভিলাষী প্রকল্প রয়েছে:
+ডিসেন্ট্রালাইজড আইডেন্টিটি সলিউশনের ভিত্তি হিসেবে Ethereum ব্যবহার করে এমন অনেক উচ্চাভিলাষী প্রজেক্ট রয়েছে:
-- **[Ethereum Name Service (ENS)](https://ens.domains/)** - _অনচেইন, মেশিন-পঠনযোগ্য শনাক্তকারীর জন্য একটি বিকেন্দ্রীভূত নামকরণ ব্যবস্থা, যেমন, ইথেরিয়াম ওয়ালেট ঠিকানা, কন্টেন্ট হ্যাস এবং মেটাডেটা।_
-- **[Sign in with Ethereum (SIWE)](https://siwe.xyz/)** - _ইথেরিয়াম অ্যাকাউন্টগুলির সাথে প্রমাণীকরণের জন্য উন্মুক্ত মান।_
-- **[SpruceID](https://www.spruceid.com/)** - _একটি বিকেন্দ্রীভূত পরিচয় প্রকল্প যা ব্যবহারকারীদের তৃতীয় পক্ষের পরিষেবার উপর নির্ভর না করে ইথেরিয়াম অ্যাকাউন্ট এবং ENS প্রোফাইলের মাধ্যমে ডিজিটাল পরিচয় নিয়ন্ত্রণ করতে দেয়।_
-- **[Ethereum Attestation Service (EAS)](https://attest.org/)** - _যেকোনো বিষয়ে অনচেইন বা অফচেইন প্রত্যয়ন করার জন্য একটি বিকেন্দ্রীভূত লেজার/প্রোটোকল।_
-- **[Proof of Humanity](https://www.proofofhumanity.id)** - _প্রুফ অফ হিউম্যানিটি (বা PoH) হল ইথেরিয়ামে নির্মিত একটি সামাজিক পরিচয় যাচাইকরণ ব্যবস্থা।_
-- **[BrightID](https://www.brightid.org/)** - _একটি বিকেন্দ্রীভূত, ওপেন সোর্স সামাজিক পরিচয় নেটওয়ার্ক যা একটি সামাজিক গ্রাফ তৈরি এবং বিশ্লেষণের মাধ্যমে পরিচয় যাচাইকরণ সংস্কার করতে চাইছে।_
-- **[walt.id](https://walt.id)** — _ওপেন সোর্স বিকেন্দ্রীভূত পরিচয় এবং ওয়ালেট পরিকাঠামো যা ডেভেলপার এবং সংস্থাগুলিকে স্ব-সার্বভৌম পরিচয় এবং NFT/SBT ব্যবহার করার সুবিধা দেয়।_
-- **[Veramo](https://veramo.io/)** - _একটি জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক যা যে কারো জন্য তাদের অ্যাপ্লিকেশনে ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য ডেটা ব্যবহার করা সহজ করে তোলে।_
+- **[Ethereum Name Service (ENS)](https://ens.domains/)** - _অনচেইন, মেশিন-রিডেবল আইডেন্টিফায়ার, যেমন, Ethereum ওয়ালেট এডড্রেস, কন্টেন্ট হ্যাস এবং মেটাডেটার জন্য একটি ডিসেন্ট্রালাইজড নেমিং সিস্টেম।_
+- **[Sign in with Ethereum (SIWE)](https://siwe.xyz/)** - _Ethereum একাউন্ট-এর সাথে প্রমাণীকরণের জন্য ওপেন স্ট্যান্ডার্ড।_
+- **[SpruceID](https://www.spruceid.com/)** - _একটি ডিসেন্ট্রালাইজড আইডেন্টিটি প্রজেক্ট যা ব্যবহারকারীদের তৃতীয় পক্ষের পরিষেবাগুলোর উপর নির্ভর করার পরিবর্তে Ethereum একাউন্ট এবং ENS প্রোফাইলগুলোর সাহায্যে ডিজিটাল আইডেন্টিটি নিয়ন্ত্রণ করতে দেয়।_
+- **[Ethereum Attestation Service (EAS)](https://attest.org/)** - _যেকোনো বিষয়ে অনচেইন বা অফচেইন এটেস্টেশন তৈরি করার জন্য একটি ডিসেন্ট্রালাইজড লেজার/প্রটোকল।_
+- **[Proof of Humanity](https://www.proofofhumanity.id)** - _প্রুফ অফ হিউম্যানিটি (বা PoH) হলো Ethereum-এ নির্মিত একটি সোশ্যাল আইডেন্টিটি ভেরিফিকেশন সিস্টেম।_
+- **[BrightID](https://www.brightid.org/)** - _একটি ডিসেন্ট্রালাইজড, ওপেন-সোর্স সোশ্যাল আইডেন্টিটি নেটওয়ার্ক যা একটি সোশ্যাল গ্রাফ তৈরি এবং বিশ্লেষণের মাধ্যমে পরিচয় যাচাইকরণের সংস্কার করতে চায়।_
+- **[walt.id](https://walt.id)** — _ওপেন সোর্স ডিসেন্ট্রালাইজড আইডেন্টিটি এবং ওয়ালেট ইনফ্রাস্ট্রাকচার যা ডেভেলপার এবং সংস্থাগুলোকে সেলফ-সভরিন আইডেন্টিটি এবং NFT/SBT-গুলো ব্যবহার করতে সক্ষম করে।_
+- **[Veramo](https://veramo.io/)** - _একটি জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক যা যেকোনো ব্যক্তির জন্য তাদের অ্যাপ্লিকেশনগুলোতে ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য ডেটা ব্যবহার করা সহজ করে তোলে।_
## আরও পড়ুন {#further-reading}
-### নিবন্ধ {#articles}
+### আর্টিকেল {#articles}
-- [ব্লকচেইন ব্যবহারের ক্ষেত্র: ডিজিটাল পরিচয়ে ব্লকচেইন](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_
-- [ইথেরিয়াম ERC725 কী? ব্লকচেইনে স্ব-সার্বভৌম পরিচয় ব্যবস্থাপনা](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _স্যাম টাউন_
-- [কীভাবে ব্লকচেইন ডিজিটাল পরিচয়ের সমস্যা সমাধান করতে পারে](https://time.com/6142810/proof-of-humanity/) — _অ্যান্ড্রু আর চাউ_
-- [বিকেন্দ্রীভূত পরিচয় কী এবং আপনার কেন যত্ন নেওয়া উচিত?](https://web3.hashnode.com/what-is-decentralized-identity) — _ইমানুয়েল আওসিকা_
-- [বিকেন্দ্রীভূত পরিচয়ের ভূমিকা](https://walt.id/white-paper/digital-identity) — _ডমিনিক বেরন_
+- [ব্লকচেইন ইউজ কেস: ডিজিটাল আইডেন্টিটিতে ব্লকচেইন](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_
+- [Ethereum ERC725 কী? ব্লকচেইনে সেলফ-সভরিন আইডেন্টিটি ম্যানেজমেন্ট](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_
+- [কীভাবে ব্লকচেইন ডিজিটাল আইডেন্টিটির সমস্যার সমাধান করতে পারে](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
+- [ডিসেন্ট্রালাইজড আইডেন্টিটি কী এবং কেন আপনার এটি নিয়ে ভাবা উচিত?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [ডিসেন্ট্রালাইজড আইডেন্টিটির পরিচিতি](https://walt.id/white-paper/digital-identity) — _Dominik Beron_
### ভিডিও {#videos}
-- [বিকেন্দ্রীভূত পরিচয় (বোনাস লাইভস্ট্রিম সেশন)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _আন্দ্রেয়াস আন্তোনোপোলোস-এর বিকেন্দ্রীভূত পরিচয়ের উপর একটি দুর্দান্ত ব্যাখ্যামূলক ভিডিও_
-- [Ceramic, IDX, React এবং 3ID Connect সংযোগের সাথে ইথেরিয়াম এবং বিকেন্দ্রীভূত পরিচয় দিয়ে সাইন ইন করুন](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _নাদের দাবিতের ইথেরিয়াম ওয়ালেট ব্যবহার করে ব্যবহারকারীর প্রোফাইল তৈরি, পড়া এবং আপডেট করার জন্য একটি আইডেন্টিটি ম্যানেজমেন্ট সিস্টেম তৈরি করার বিষয়ে YouTube টিউটোরিয়াল_
-- [BrightID - ইথেরিয়ামে বিকেন্দ্রীভূত পরিচয়](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Bankless পডকাস্ট পর্ব BrightID নিয়ে আলোচনা করে, ইথেরিয়ামের জন্য একটি বিকেন্দ্রীভূত পরিচয় সমাধান_
-- [অফচেইন ইন্টারনেট: বিকেন্দ্রীভূত পরিচয় ও যাচাইযোগ্য শংসাপত্র](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — ইভিন ম্যাকমুলেনের EthDenver ২০২২ উপস্থাপনা
-- [যাচাইযোগ্য শংসাপত্র ব্যাখ্যা করা হয়েছে](https://www.youtube.com/watch?v=ce1IdSr-Kig) - ট্যামিনো বাউম্যানের ডেমো সহ YouTube ব্যাখ্যাকারী ভিডিও
+- [ডিসেন্ট্রালাইজড আইডেন্টিটি (বোনাস লাইভস্ট্রিম সেশন)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _Andreas Antonopolous-এর ডিসেন্ট্রালাইজড আইডেন্টিটি নিয়ে একটি চমৎকার ব্যাখ্যামূলক ভিডিও_
+- [Ceramic, IDX, React এবং 3ID Connect-এর সাথে Sign In with Ethereum এবং ডিসেন্ট্রালাইজড আইডেন্টিটি](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _Nader Dabit-এর দ্বারা ব্যবহারকারীর Ethereum ওয়ালেট ব্যবহার করে তাদের প্রোফাইল তৈরি, পড়া এবং আপডেট করার জন্য একটি আইডেন্টিটি ম্যানেজমেন্ট সিস্টেম তৈরি করার বিষয়ে YouTube টিউটোরিয়াল_
+- [BrightID - Ethereum-এ ডিসেন্ট্রালাইজড আইডেন্টিটি](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Bankless পডকাস্ট এপিসোডে BrightID নিয়ে আলোচনা করা হয়েছে, যা Ethereum-এর জন্য একটি ডিসেন্ট্রালাইজড আইডেন্টিটি সলিউশন_
+- [দ্য অফচেইন ইন্টারনেট: ডিসেন্ট্রালাইজড আইডেন্টিটি এবং ভেরিফাইয়েবল ক্রেডেনশিয়াল](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Evin McMullen-এর EthDenver 2022 প্রেজেন্টেশন
+- [ভেরিফাইয়েবল ক্রেডেনশিয়াল ব্যাখ্যা করা হয়েছে](https://www.youtube.com/watch?v=ce1IdSr-Kig) - Tamino Baumann-এর ডেমোসহ YouTube ব্যাখ্যামূলক ভিডিও
### কমিউনিটি {#communities}
-- [GitHub-এ ERC-725 জোট](https://github.com/erc725alliance) — _ইথেরিয়াম ব্লকচেইনে পরিচয় পরিচালনার জন্য ERC725 স্ট্যান্ডার্ডের সমর্থকগণ_
-- [EthID ডিসকর্ড সার্ভার](https://discord.com/invite/ZUyG3mSXFD) — _Sign-in with Ethereum এবং Ethereum Follow Protocol-এ কর্মরত উৎসাহী এবং ডেভেলপারদের জন্য কমিউনিটি_
-- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _অ্যাপ্লিকেশানগুলির জন্য যাচাইযোগ্য ডেটার জন্য একটি কাঠামো তৈরিতে অবদান রাখতে ডেভেলপারদের একটি কমিউনিটি_
-- [walt.id](https://discord.com/invite/AW8AgqJthZ) — _বিভিন্ন শিল্প জুড়ে বিকেন্দ্রীভূত পরিচয়ের ব্যবহারের ক্ষেত্রে কাজ করা ডেভেলপার এবং নির্মাতাদের একটি কমিউনিটি_
+- [GitHub-এ ERC-725 অ্যালায়েন্স](https://github.com/erc725alliance) — _Ethereum ব্লকচেইনে আইডেন্টিটি পরিচালনার জন্য ERC725 স্ট্যান্ডার্ডের সমর্থকরা_
+- [EthID Discord সার্ভার](https://discord.com/invite/ZUyG3mSXFD) — _Sign-in with Ethereum এবং Ethereum Follow Protocol নিয়ে কাজ করা উৎসাহী এবং ডেভেলপারদের জন্য কমিউনিটি_
+- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _অ্যাপ্লিকেশনগুলোর জন্য ভেরিফাইয়েবল ডেটার একটি ফ্রেমওয়ার্ক তৈরিতে অবদান রাখা ডেভেলপারদের একটি কমিউনিটি_
+- [walt.id](https://discord.com/invite/AW8AgqJthZ) — _বিভিন্ন শিল্প জুড়ে ডিসেন্ট্রালাইজড আইডেন্টিটি ব্যবহার-ক্ষেত্র নিয়ে কাজ করা ডেভেলপার এবং নির্মাতাদের একটি কমিউনিটি_
\ No newline at end of file
diff --git a/public/content/translations/bn/defi/index.md b/public/content/translations/bn/defi/index.md
index 7caceb13f60..debdb23185f 100644
--- a/public/content/translations/bn/defi/index.md
+++ b/public/content/translations/bn/defi/index.md
@@ -1,176 +1,176 @@
---
-title: "বিকেন্দ্রীভূত অর্থ (DeFi)"
-metaTitle: "DeFi কি? | ডিসেন্ট্রালাইজড ফিনান্সের সুবিধা এবং ব্যবহার"
-description: "ইথেরিয়াম এর উপর DeFi এর একটি সংক্ষিপ্ত বিবরণী"
+title: ডিসেন্ট্রালাইজড ফাইন্যান্স (DeFi)
+metaTitle: DeFi কী? | ডিসেন্ট্রালাইজড ফাইন্যান্সের সুবিধা এবং ব্যবহার
+description: ইথিরিয়ামে DeFi-এর একটি ওভারভিউ
lang: bn
template: use-cases
emoji: ":money_with_wings:"
image: /images/use-cases/defi.png
-alt: "Lego ব্রিকস দিয়ে তৈরি একটি Eth লোগো।"
+alt: লেগো ইট দিয়ে তৈরি একটি Eth লোগো।
sidebarDepth: 2
-summaryPoint1: "বর্তমান আর্থিক ব্যবস্থার জন্য বিশ্বব্যাপী একটি উন্মুক্ত বিকল্প ব্যবস্থাপনা।"
-summaryPoint2: "যে পণ্যগুলি আপনাকে ধার, সঞ্চয়, বিনিয়োগ, বাণিজ্য এবং আরও অনেক কিছু করতে দেয়।"
-summaryPoint3: "যে কেউ প্রোগ্রাম করতে পারে এমন ওপেন সোর্স প্রযুক্তির উপরে নির্ভর করে তৈরি।"
+summaryPoint1: বর্তমান আর্থিক ব্যবস্থার একটি গ্লোবাল, উন্মুক্ত বিকল্প।
+summaryPoint2: এমন প্রোডাক্ট যা আপনাকে ধার করতে, সঞ্চয় করতে, বিনিয়োগ করতে, ট্রেড করতে এবং আরও অনেক কিছু করতে দেয়।
+summaryPoint3: ওপেন-সোর্স প্রযুক্তির উপর ভিত্তি করে তৈরি যা দিয়ে যে কেউ প্রোগ্রাম করতে পারে।
---
-DeFi হলো একটি উন্মুক্ত এবং বিশ্বব্যাপী আর্থিক ব্যবস্থা যা ইন্টারনেট যুগের জন্য তৈরি করা হয়েছে – এমন একটি সিস্টেমের বিকল্প যা অস্বচ্ছ, শক্তভাবে নিয়ন্ত্রিত এবং কয়েক দশক পুরনো অবকাঠামো এবং প্রক্রিয়াগুলির দ্বারা একত্রিত। এটি আপনাকে আপনার অর্থের উপর নিয়ন্ত্রণ এবং দৃশ্যমানতা দেয়। এটি আপনাকে বিশ্বব্যাপী বাজারের এক্সপোজার এবং আপনার স্থানীয় মুদ্রা বা ব্যাংকিং অপশনগুলির বিকল্প দেয়। DeFi পণ্যগুলি ইন্টারনেট সংযোগ সহ সকলের জন্য আর্থিক পরিষেবা উন্মুক্ত করে এবং সেগুলি মূলত তাদের ব্যবহারকারীদের দ্বারা মালিকানাধীন এবং রক্ষণাবেক্ষণ করে। এখন পর্যন্ত, কয়েক হাজার কোটি ডলার মূল্যের ক্রিপ্টো DeFi অ্যাপ্লিকেশনের মধ্যে দিয়ে প্রবাহিত হয়েছে এবং এটি প্রতিদিন বাড়ছে।
+DeFi হলো ইন্টারনেট যুগের জন্য তৈরি একটি উন্মুক্ত এবং গ্লোবাল আর্থিক ব্যবস্থা – এটি এমন একটি ব্যবস্থার বিকল্প যা অস্বচ্ছ, কঠোরভাবে নিয়ন্ত্রিত এবং কয়েক দশকের পুরনো অবকাঠামো ও প্রক্রিয়া দ্বারা পরিচালিত। এটি আপনাকে আপনার অর্থের উপর নিয়ন্ত্রণ এবং দৃশ্যমানতা দেয়। এটি আপনাকে গ্লোবাল মার্কেটগুলোতে অ্যাক্সেস দেয় এবং আপনার স্থানীয় মুদ্রা বা ব্যাংকিং বিকল্পগুলোর একটি বিকল্প প্রদান করে। DeFi প্রোডাক্টগুলো ইন্টারনেট সংযোগ আছে এমন যে কারো জন্য আর্থিক পরিষেবা উন্মুক্ত করে এবং এগুলো মূলত ব্যবহারকারীদের দ্বারাই মালিকানাধীন ও পরিচালিত হয়। এ পর্যন্ত, দশ বিলিয়ন ডলারেরও বেশি মূল্যের ক্রিপটোকারেন্সি DeFi অ্যাপ্লিকেশনের মাধ্যমে লেনদেন হয়েছে এবং এটি প্রতিদিন বাড়ছে।
-## DeFi কি? {#what-is-defi}
+## DeFi কী? {#what-is-defi}
-DeFi হল আর্থিক পণ্য এবং পরিষেবাগুলির জন্য একটি সম্মিলিত শব্দ যা ইথেরিয়াম ব্যবহার করতে পারে এমন যে কারো অ্যাক্সেসযোগ্য - ইন্টারনেট সংযোগ সহ যে কেউ। DeFi এর মাধ্যমে, মার্কেট সর্বদা খোলা থাকে এবং কোনও কেন্দ্রীভূত কর্তৃপক্ষ নেই যারা অর্থপ্রদান ব্লক করতে পারে বা আপনাকে যে কোনও কিছুতে অ্যাক্সেস অস্বীকার করতে পারে। যে পরিষেবাগুলি আগে ধীরগতির ছিল এবং মানব ত্রুটির ঝুঁকিতে ছিল সেগুলি এখন স্বয়ংক্রিয় এবং নিরাপদ কারণ সেগুলি কোড দ্বারা পরিচালনা করা হয় যা যে কেউ পরিদর্শন এবং যাচাই করতে পারে।
+DeFi হলো আর্থিক প্রোডাক্ট এবং পরিষেবাগুলোর একটি সম্মিলিত শব্দ যা [Ethereum](/)-এর ব্যবহারকারী যে কারো জন্য অ্যাক্সেসযোগ্য – অর্থাৎ ইন্টারনেট সংযোগ আছে এমন যে কেউ। DeFi-এর মাধ্যমে, মার্কেটগুলো সবসময় খোলা থাকে এবং এমন কোনো সেন্ট্রালাইজড কর্তৃপক্ষ নেই যারা পেমেন্ট ব্লক করতে পারে বা আপনাকে কোনো কিছুতে অ্যাক্সেস দিতে অস্বীকার করতে পারে। যে পরিষেবাগুলো আগে ধীরগতির ছিল এবং মানুষের ভুলের ঝুঁকিতে ছিল, সেগুলো এখন স্বয়ংক্রিয় এবং নিরাপদ কারণ এগুলো এমন কোড দ্বারা পরিচালিত হয় যা যে কেউ পরিদর্শন এবং যাচাই করতে পারে।
-বিশ্বে একটি ক্রমবর্ধমান ক্রিপ্টো অর্থনীতি রয়েছে, যেখানে আপনি ধার দিতে পারেন, ধার করতে পারেন, লং/শর্ট করতে পারেন, সুদ উপার্জন করতে পারেন এবং আরও অনেক কিছু করতে পারেন। ক্রিপ্টো-বুদ্ধিমান আর্জেন্টাইনরা অর্থনীতি পঙ্গু করে দিতে পারে এমন মুদ্রাস্ফীতি এড়াতে DeFi ব্যবহার করেছে। কোম্পানিগুলি তাদের কর্মীদের রিয়েল টাইমে তাদের মজুরি স্ট্রিমিং শুরু করেছে। কিছু লোক এমনকি কোনো ব্যক্তিগত পরিচয় ছাড়াই মিলিয়ন মিলিয়ন ডলারের ঋণ গ্রহণ করেছে এবং পরিশোধ করেছে।
+এখানে একটি বিকাশমান ক্রিপটোকারেন্সি অর্থনীতি রয়েছে, যেখানে আপনি ধার দিতে, ধার নিতে, লং/শর্ট করতে, সুদ উপার্জন করতে এবং আরও অনেক কিছু করতে পারেন। ক্রিপটো-সচেতন আর্জেন্টাইনরা মারাত্মক মুদ্রাস্ফীতি থেকে বাঁচতে DeFi ব্যবহার করেছে। কোম্পানিগুলো তাদের কর্মীদের রিয়েল টাইমে বেতন দেওয়া শুরু করেছে। কিছু লোক এমনকি কোনো ব্যক্তিগত পরিচয়ের প্রয়োজন ছাড়াই মিলিয়ন ডলার মূল্যের ঋণ নিয়েছে এবং পরিশোধ করেছে।
-## DeFi বনাম প্রথাগত ফিনান্স {#defi-vs-tradfi}
+## DeFi বনাম প্রথাগত ফাইন্যান্স {#defi-vs-tradfi}
-DeFi এর সম্ভাব্যতা দেখার সর্বোত্তম উপায়গুলির মধ্যে একটি হল আজকের বিদ্যমান সমস্যাগুলি বোঝা।
+DeFi-এর সম্ভাবনা দেখার অন্যতম সেরা উপায় হলো বর্তমানে বিদ্যমান সমস্যাগুলো বোঝা।
-- কিছু লোককে একটি ব্যাঙ্ক অ্যাকাউন্ট সেট আপ করতে বা আর্থিক পরিষেবাগুলি ব্যবহার করার অনুমতি দেওয়া হয় না।
-- আর্থিক পরিষেবাগুলিতে অ্যাক্সেসের অভাব মানুষকে কর্মসংস্থান হতে বাধা দিতে পারে।
-- আর্থিক পরিষেবাগুলি আপনাকে অর্থ প্রদান থেকে অবরুদ্ধ করতে পারে।
-- আর্থিক পরিষেবাগুলির একটি লুকানো চার্জ হল আপনার ব্যক্তিগত ডেটা।
-- সরকার এবং কেন্দ্রীভূত প্রতিষ্ঠান ইচ্ছামতো বাজার বন্ধ করে দিতে পারে।
-- ট্রেডিং ঘন্টা প্রায়ই নির্দিষ্ট সময় অঞ্চলের ব্যবসায়িক ঘন্টার মধ্যে সীমাবদ্ধ থাকে।
-- অভ্যন্তরীণ মানব নিয়ন্ত্রণাধীন প্রক্রিয়ার কারণে অর্থ স্থানান্তর করতে অনেকদিন লাগতে পারে।
-- আর্থিক পরিষেবাগুলির জন্য একটি প্রিমিয়াম রয়েছে কারণ মধ্যস্থতাকারী প্রতিষ্ঠানগুলির তাদের লভ্যাংশ প্রয়োজন।
+- কিছু লোককে ব্যাংক একাউন্ট খুলতে বা আর্থিক পরিষেবা ব্যবহার করার অনুমতি দেওয়া হয় না।
+- আর্থিক পরিষেবাগুলোতে অ্যাক্সেসের অভাব মানুষকে কর্মসংস্থানের সুযোগ থেকে বঞ্চিত করতে পারে।
+- আর্থিক পরিষেবাগুলো আপনাকে পেমেন্ট পাওয়া থেকে ব্লক করতে পারে।
+- আর্থিক পরিষেবাগুলোর একটি লুকানো চার্জ হলো আপনার ব্যক্তিগত ডেটা।
+- সরকার এবং সেন্ট্রালাইজড প্রতিষ্ঠানগুলো ইচ্ছামতো মার্কেট বন্ধ করে দিতে পারে।
+- ট্রেডিংয়ের সময় প্রায়শই একটি নির্দিষ্ট টাইম জোনের ব্যবসায়িক সময়ের মধ্যে সীমাবদ্ধ থাকে।
+- অভ্যন্তরীণ মানবিক প্রক্রিয়ার কারণে অর্থ স্থানান্তরে কয়েক দিন সময় লাগতে পারে।
+- আর্থিক পরিষেবাগুলোতে একটি প্রিমিয়াম থাকে কারণ মধ্যস্থতাকারী প্রতিষ্ঠানগুলোর তাদের অংশ প্রয়োজন হয়।
### একটি তুলনা {#defi-comparison}
-| DeFi | প্রথাগত অর্থনীতি |
-| ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
-| আপনি আপনার অর্থ ধরে রাখেন। | কোম্পানি আপনার অর্থ ধরে রাখে। |
-| আপনার অর্থ কোথায় যায় এবং কীভাবে ব্যয় হয় তা আপনি নিয়ন্ত্রণ করেন। | ঝুঁকিপূর্ণ ঋণগ্রহীতাদের ঋণ দেওয়ার মতো আপনার অর্থের অব্যবস্থাপনা না করার জন্য আপনাকে কোম্পানিগুলিকে বিশ্বাস করতে হবে। |
-| তহবিল স্থানান্তর মিনিটের মধ্যে ঘটে। | ম্যানুয়াল প্রক্রিয়ার কারণে অর্থপ্রদানে অনেকদিন লাগতে পারে। |
-| লেনদেন কার্যকলাপ হলো ছদ্মনাম। | আর্থিক কার্যকলাপ আপনার পরিচয়ের সাথে দৃঢ়ভাবে মিলিত হয়। |
-| DeFi যে কারো জন্য উন্মুক্ত। | আর্থিক পরিষেবাগুলি ব্যবহার করার জন্য আপনাকে অবশ্যই আবেদন করতে হবে। |
-| মার্কেট সবসময় খোলা থাকে। | কর্মীদের বিরতির প্রয়োজন হয় বিধার মার্কেট বন্ধ করা হয়। |
-| এটি স্বচ্ছতার উপর নির্মিত – যে কেউ একটি পণ্যের ডেটা দেখতে পারে এবং সিস্টেমটি কীভাবে কাজ করে তা পরিদর্শন করতে পারে। | আর্থিক প্রতিষ্ঠানগুলি বন্ধ বই: আপনি তাদের ঋণের ইতিহাস, তাদের পরিচালিত সম্পদের রেকর্ড এবং আরও অনেক কিছু দেখতে চাইতে পারবেন না। |
+| DeFi | প্রথাগত ফাইন্যান্স |
+| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
+| আপনি আপনার অর্থ নিজের কাছে রাখেন। | আপনার অর্থ কোম্পানিগুলোর কাছে থাকে। |
+| আপনার অর্থ কোথায় যায় এবং কীভাবে ব্যয় হয় তা আপনি নিয়ন্ত্রণ করেন। | আপনাকে কোম্পানিগুলোর ওপর বিশ্বাস রাখতে হবে যে তারা আপনার অর্থের অপব্যবহার করবে না, যেমন ঝুঁকিপূর্ণ ঋণগ্রহীতাদের ঋণ দেওয়া। |
+| ফান্ডের স্থানান্তর কয়েক মিনিটের মধ্যে হয়। | ম্যানুয়াল প্রক্রিয়ার কারণে পেমেন্ট হতে কয়েক দিন সময় লাগতে পারে। |
+| লেনদেন কার্যক্রম ছদ্মনামে হয়। | আর্থিক কার্যক্রম আপনার পরিচয়ের সাথে ঘনিষ্ঠভাবে যুক্ত থাকে। |
+| DeFi যে কারো জন্য উন্মুক্ত। | আর্থিক পরিষেবাগুলো ব্যবহার করার জন্য আপনাকে আবেদন করতে হবে। |
+| মার্কেটগুলো সবসময় খোলা থাকে। | মার্কেটগুলো বন্ধ হয় কারণ কর্মীদের বিরতির প্রয়োজন হয়। |
+| এটি স্বচ্ছতার ওপর ভিত্তি করে তৈরি – যে কেউ একটি প্রোডাক্টের ডেটা দেখতে পারে এবং সিস্টেমটি কীভাবে কাজ করে তা পরিদর্শন করতে পারে। | আর্থিক প্রতিষ্ঠানগুলো হলো বন্ধ বই: আপনি তাদের ঋণের ইতিহাস, তাদের পরিচালিত সম্পদের রেকর্ড ইত্যাদি দেখতে চাইতে পারেন না। |
- DeFi অ্যাপগুলি ঘেঁটে দেখুন
+ DeFi অ্যাপগুলো এক্সপ্লোর করুন
## এটি বিটকয়েন দিয়ে শুরু হয়েছিল... {#bitcoin}
-বিটকয়েন অনেক উপায়ে প্রথম DeFi অ্যাপ্লিকেশন ছিল। বিটকয়েন আপনাকে সত্যিকার অর্থে মূল্যের মালিক হতে এবং নিয়ন্ত্রণ করতে দেয় এবং বিশ্বের যে কোনো জায়গায় পাঠাতে দেয়। এটি একটি বিশ্বস্ত মধ্যস্থতাকারীর প্রয়োজন ছাড়াই অনেক সংখ্যক লোককে, যারা একে অপরকে বিশ্বাস করে না, অ্যাকাউন্টের লেজারে সম্মত হওয়ার একটি উপায় প্রদান করার মাধ্যমে এমনটি করে। বিটকয়েন যে কারো জন্য উন্মুক্ত এবং এর নিয়ম পরিবর্তন করার ক্ষমতা কারো নেই। ঘাটতি এবং উন্মুক্ততার মতো, বিটকয়েনের নিয়মসমূহ, এর প্রযুক্তিতে লেখা আছে। এটি প্রথাগত অর্থনীতির মতো নয় যেখানে সরকার আপনার সঞ্চয়ের অবমূল্যায়ন করে এমন অর্থ মুদ্রণ করতে পারে এবং কোম্পানিগুলি মার্কেট বন্ধ করে দিতে পারে।
+বিটকয়েন অনেক দিক থেকেই প্রথম DeFi অ্যাপ্লিকেশন ছিল। বিটকয়েন আপনাকে সত্যিই ভ্যালুর মালিক হতে এবং নিয়ন্ত্রণ করতে দেয় এবং এটি বিশ্বের যেকোনো জায়গায় পাঠাতে দেয়। এটি এমন একটি উপায় প্রদান করে যার মাধ্যমে বিপুল সংখ্যক মানুষ, যারা একে অপরকে বিশ্বাস করে না, কোনো বিশ্বস্ত মধ্যস্থতাকারীর প্রয়োজন ছাড়াই একাউন্টগুলোর একটি লেজার-এ একমত হতে পারে। বিটকয়েন যে কারো জন্য উন্মুক্ত এবং এর নিয়ম পরিবর্তন করার ক্ষমতা কারো নেই। বিটকয়েনের নিয়মগুলো, যেমন এর দুষ্প্রাপ্যতা এবং এর উন্মুক্ততা, প্রযুক্তির মধ্যেই লেখা আছে। এটি প্রথাগত ফাইন্যান্সের মতো নয় যেখানে সরকার টাকা ছাপাতে পারে যা আপনার সঞ্চয়ের অবমূল্যায়ন করে এবং কোম্পানিগুলো মার্কেট বন্ধ করে দিতে পারে।
-ইথেরিয়াম এগুলোর উপরেই তৈরি করা। বিটকয়েনের মতো, নিয়মগুলি আপনার ক্ষেত্রে পরিবর্তিত হতে পারবে না এবং প্রত্যেকেরই অ্যাক্সেস রয়েছে। কিন্তু এটি [স্মার্ট কন্ট্র্যাক্ট](/glossary/#smart-contract) ব্যবহার করে এই ডিজিটাল অর্থকে প্রোগ্রামযোগ্য করে তোলে, যাতে আপনি মূল্য সংরক্ষণ এবং পাঠানোর বাইরে যেতে পারেন।
+ইথিরিয়াম এর ওপর ভিত্তি করেই তৈরি। বিটকয়েনের মতো, নিয়মগুলো আপনার জন্য পরিবর্তন হতে পারে না এবং সবার অ্যাক্সেস রয়েছে। তবে এটি [স্মার্ট কন্ট্রাক্ট](/glossary/#smart-contract) ব্যবহার করে এই ডিজিটাল অর্থকে প্রোগ্রামেবল করে তোলে, যাতে আপনি ভ্যালু সংরক্ষণ এবং পাঠানোর বাইরেও অনেক কিছু করতে পারেন।
-## প্রোগ্রামযোগ্য অর্থ {#programmable-money}
+## প্রোগ্রামেবল মানি {#programmable-money}
-এটা অদ্ভুত শোনাচ্ছে... "আমি কেন আমার অর্থ প্রোগ্রাম করতে চাইব"? যাইহোক, এটি ইথেরিয়ামের টোকেনগুলির শুধু একটি ডিফল্ট বৈশিষ্ট্যের চেয়েও বেশি কিছু। যে কেউ অর্থ প্রদানের মধ্যে যুক্তি প্রোগ্রাম করতে পারেন। সুতরাং আপনি আর্থিক প্রতিষ্ঠান প্রদত্ত পরিষেবাগুলোর পাশাপাশি বিটকয়েনের নিয়ন্ত্রণ এবং নিরাপত্তা পেতে পারেন। এটি আপনাকে ক্রিপ্টোকারেন্সিগুলোর সাথে এমন কিছু করতে দেয় যা আপনি বিটকয়েনের সাথে করতে পারবেন না যেমন ধার দেওয়া এবং ধার নেওয়া, অর্থ প্রদানের সময় নির্ধারণ করা, ইন্ডেক্স ফান্ডে বিনিয়োগ করা এবং আরও অনেক কিছু।
+এটি শুনতে অদ্ভুত লাগে... "আমি কেন আমার অর্থ প্রোগ্রাম করতে চাইব"? তবে, এটি ইথিরিয়ামে টোকেন-এর একটি ডিফল্ট ফিচারের চেয়েও বেশি কিছু। যে কেউ পেমেন্টগুলোতে লজিক প্রোগ্রাম করতে পারে। তাই আপনি আর্থিক প্রতিষ্ঠানগুলোর দেওয়া পরিষেবাগুলোর সাথে বিটকয়েনের নিয়ন্ত্রণ এবং নিরাপত্তার মিশ্রণ পেতে পারেন। এটি আপনাকে ক্রিপটোকারেন্সি দিয়ে এমন কিছু করতে দেয় যা আপনি বিটকয়েন দিয়ে করতে পারবেন না, যেমন ধার দেওয়া এবং ধার নেওয়া, পেমেন্ট শিডিউল করা, ইনডেক্স ফান্ডে বিনিয়োগ করা এবং আরও অনেক কিছু।
- আপনি যদি ইথেরিয়াম-এ নতুন হন তবে চেষ্টা করতে DeFi অ্যাপ্লিকেশনগুলির জন্য আমাদের পরামর্শগুলি এক্সপ্লোর করুন।
+ আপনি যদি ইথিরিয়ামে নতুন হয়ে থাকেন তবে ট্রাই করার জন্য আমাদের প্রস্তাবিত DeFi অ্যাপ্লিকেশনগুলো এক্সপ্লোর করুন।
- DeFi অ্যাপগুলি ঘেঁটে দেখুন
+ DeFi অ্যাপগুলো এক্সপ্লোর করুন
-## আপনি DeFi দিয়ে কি করতে পারেন? {#defi-use-cases}
+## আপনি DeFi দিয়ে কী করতে পারেন? {#defi-use-cases}
-অধিকাংশ আর্থিক পরিষেবার জন্য একটি বিকেন্দ্রীভূত বিকল্প আছে। কিন্তু ইথেরিয়াম এমন আর্থিক পণ্য তৈরির সুযোগও তৈরি করে যা সম্পূর্ণ নতুন। এটি একটি ক্রমবর্ধমান তালিকা।
+বেশিরভাগ আর্থিক পরিষেবার একটি ডিসেন্ট্রালাইজড বিকল্প রয়েছে। তবে ইথিরিয়াম সম্পূর্ণ নতুন আর্থিক প্রোডাক্ট তৈরি করার সুযোগও তৈরি করে। এটি একটি ক্রমবর্ধমান তালিকা।
-- [সারা বিশ্বে টাকা পাঠান](#send-money)
-- [বিশ্বজুড়ে অর্থ স্ট্রিম করুন](#stream-money)
-- [স্থিতিশীল মুদ্রা অ্যাক্সেস করুন](#stablecoins)
-- [জামানত দিয়ে তহবিল ধার করুন](#lending)
-- [জামানত ছাড়া ধার করুন](#flash-loans)
-- [ক্রিপ্টো সঞ্চয় শুরু করুন](#saving)
+- [বিশ্বজুড়ে অর্থ পাঠান](#send-money)
+- [বিশ্বজুড়ে অর্থ স্ট্রিম করুন](#stream-money)
+- [স্থিতিশীল মুদ্রাগুলো অ্যাক্সেস করুন](#stablecoins)
+- [জামানত দিয়ে ফান্ড ধার করুন](#lending)
+- [জামানত ছাড়াই ধার করুন](#flash-loans)
+- [ক্রিপটো সঞ্চয় শুরু করুন](#saving)
- [টোকেন ট্রেড করুন](#swaps)
- [আপনার পোর্টফোলিও বাড়ান](#investing)
-- [আপনার ধারণাগুলোকে অর্থায়ন করুন](#crowdfunding)
+- [আপনার আইডিয়াগুলোতে ফান্ড দিন](#crowdfunding)
- [বীমা কিনুন](#insurance)
- [আপনার পোর্টফোলিও পরিচালনা করুন](#aggregators)
-### সারা বিশ্বে দ্রুত টাকা পাঠান {#send-money}
+### দ্রুত বিশ্বজুড়ে অর্থ পাঠান {#send-money}
-একটি ব্লকচেইন হিসাবে, ইথেরিয়াম একটি নিরাপদ এবং বিশ্বব্যাপী লেনদেন পাঠানোর জন্য ডিজাইন করা হয়েছে। বিটকয়েনের মতো, ইথেরিয়াম বিশ্বজুড়ে অর্থ প্রেরণকে একটি ইমেল পাঠানোর মতোই সহজ করে তোলে। শুধু আপনার ওয়ালেট থেকে আপনার প্রাপকের [ENS নাম](/glossary/#ens) (যেমন bob.eth) বা তাদের অ্যাকাউন্ট অ্যাড্রেস লিখুন এবং আপনার পেমেন্ট মিনিটের মধ্যে সরাসরি তাদের কাছে চলে যাবে (সাধারণত)। পেমেন্ট পাঠাতে বা গ্রহণ করতে, আপনার একটি [ওয়ালেট](/wallets/) লাগবে।
+একটি ব্লকচেইন হিসেবে, ইথিরিয়াম নিরাপদ এবং গ্লোবাল উপায়ে লেনদেন পাঠানোর জন্য ডিজাইন করা হয়েছে। বিটকয়েনের মতো, ইথিরিয়াম বিশ্বজুড়ে অর্থ পাঠানোকে ইমেইল পাঠানোর মতোই সহজ করে তোলে। শুধু আপনার প্রাপকের [ENS নাম](/glossary/#ens) (যেমন bob.eth) বা আপনার ওয়ালেট থেকে তাদের একাউন্ট এডড্রেস লিখুন এবং আপনার পেমেন্ট কয়েক মিনিটের মধ্যে (সাধারণত) সরাসরি তাদের কাছে চলে যাবে। পেমেন্ট পাঠাতে বা গ্রহণ করতে, আপনার একটি [ওয়ালেট](/wallets/) প্রয়োজন হবে। [ক্রিপটো পেমেন্ট সম্পর্কে আরও জানুন](/payments/)।
পেমেন্ট ডিএ্যাপস দেখুন
-#### বিশ্বজুড়ে অর্থ স্ট্রিম করুন... {#stream-money}
+#### বিশ্বজুড়ে অর্থ স্ট্রিম করুন... {#stream-money}
-এছাড়াও আপনি ইথেরিয়াম এর মাধ্যমে অর্থ প্রবাহ করতে পারেন। এটি আপনাকে কাউকে তাদের বেতন সেকেন্ডের মধ্যে পরিশোধ করতে দেয়, যখনই তাদের প্রয়োজন হয় তখনই তাদের অর্থের অ্যাক্সেস দেয়। অথবা স্টোরেজ লকার বা বৈদ্যুতিক স্কুটারের মত কিছু ভাড়া নিন।
+আপনি ইথিরিয়ামের মাধ্যমে অর্থ স্ট্রিমও করতে পারেন। এটি আপনাকে কাউকে সেকেন্ডের হিসেবে তাদের বেতন দিতে দেয়, যখনই তাদের অর্থের প্রয়োজন হয় তখনই তাদের অ্যাক্সেস দেয়। অথবা স্টোরেজ লকার বা ইলেকট্রিক স্কুটারের মতো কোনো কিছু সেকেন্ডের হিসেবে ভাড়া নিতে দেয়।
-আর আপনি যদি [ETH](/glossary/#ether) পাঠাতে বা স্ট্রিম করতে না চান কারণ এর মান অনেক পরিবর্তন হতে পারে, সেক্ষেত্রে ইথেরিয়ামে বিকল্প মুদ্রা রয়েছে: [স্টেবলকয়েন](/glossary/#stablecoin)।
+এবং আপনি যদি [ETH](/glossary/#ether) পাঠাতে বা স্ট্রিম করতে না চান কারণ এর ভ্যালু কতটা পরিবর্তন হতে পারে, তবে ইথিরিয়ামে বিকল্প মুদ্রা রয়েছে: [স্টেবলকয়েন](/glossary/#stablecoin)।
-### স্থিতিশীল মুদ্রা অ্যাক্সেস করুন {#stablecoins}
+### স্থিতিশীল মুদ্রাগুলো অ্যাক্সেস করুন {#stablecoins}
-ক্রিপ্টোকারেন্সির অস্থিতিশীলতা প্রচুর আর্থিক পণ্য এবং সাধারণ ব্যয়ের জন্য একটি সমস্যা। DeFi কমিউনিটি এটি স্টেবলকয়েন দিয়ে সমাধান করেছে। তাদের মূল্য অন্য সম্পদের সাথে স্থির থাকে, সাধারণত ডলারের মতো একটি জনপ্রিয় মুদ্রা।
+ক্রিপটোকারেন্সি-এর অস্থিরতা অনেক আর্থিক প্রোডাক্ট এবং সাধারণ ব্যয়ের জন্য একটি সমস্যা। DeFi কমিউনিটি স্টেবলকয়েন দিয়ে এর সমাধান করেছে। এগুলোর ভ্যালু অন্য একটি সম্পদের সাথে যুক্ত থাকে, সাধারণত ডলারের মতো একটি জনপ্রিয় মুদ্রার সাথে।
-Dai বা USDC-এর মতো কয়েনগুলির একটি মূল্য রয়েছে যা একটি ডলারের কয়েক সেন্টের মধ্যে থাকে। এটি তাদের উপার্জন বা খুচরা বিক্রয়ের জন্য নিখুঁত করে তোলে। লাতিন আমেরিকার অনেক লোক তাদের সরকার দ্বারা জারি করা মুদ্রার সাথে একটি বড় অনিশ্চয়তার সময়ে তাদের সঞ্চয় রক্ষার উপায় হিসাবে স্টেবলকয়েন ব্যবহার করেছে।
+Dai বা USDC-এর মতো কয়েনগুলোর ভ্যালু ডলারের কয়েক সেন্টের মধ্যেই থাকে। এটি এগুলোকে উপার্জন বা খুচরা বিক্রয়ের জন্য নিখুঁত করে তোলে। ল্যাটিন আমেরিকার অনেক মানুষ তাদের সরকার-প্রদত্ত মুদ্রাগুলোর চরম অনিশ্চয়তার সময়ে তাদের সঞ্চয় রক্ষার উপায় হিসেবে স্টেবলকয়েন ব্যবহার করেছে।
- স্টেবলকয়েন সম্পর্কে আরও জানুন
+ স্টেবলকয়েন সম্পর্কে আরও জানুন
-### ধার করা {#lending}
+### ধার নেওয়া {#lending}
-বিকেন্দ্রীভূত প্রদানকারীদের কাছ থেকে অর্থ ধার নেওয়া দুটি প্রধান প্রকারে আসে।
+ডিসেন্ট্রালাইজড প্রদানকারীদের কাছ থেকে অর্থ ধার নেওয়ার দুটি প্রধান ধরন রয়েছে।
-- পিয়ার-টু-পিয়ার, যার অর্থ একজন ঋণগ্রহীতা সরাসরি একটি নির্দিষ্ট ঋণদাতার কাছ থেকে ধার করবে।
-- পুল-ভিত্তিক যেখানে ঋণদাতারা একটি পুলে ফান্ড (লিকুইডিটি) প্রদান করে যেখান থেকে ঋণগ্রহীতারা ধার নিতে পারে।
+- পিয়ার-টু-পিয়ার, যার অর্থ একজন ঋণগ্রহীতা সরাসরি একজন নির্দিষ্ট ঋণদাতার কাছ থেকে ধার নেবে।
+- পুল-ভিত্তিক যেখানে ঋণদাতারা একটি পুলে ফান্ড (তারল্য) প্রদান করে যেখান থেকে ঋণগ্রহীতারা ধার নিতে পারে।
- ধার করার ডিএ্যাপস দেখুন
+ ধার নেওয়ার ডিএ্যাপস দেখুন
-বিকেন্দ্রীভূত ঋণদাতা ব্যবহার করার অনেক সুবিধা রয়েছে...
+একটি ডিসেন্ট্রালাইজড ঋণদাতা ব্যবহার করার অনেক সুবিধা রয়েছে...
-#### গোপনীয়তার সাথে ধার করা {#borrowing-privacy}
+#### গোপনীয়তার সাথে ধার নেওয়া {#borrowing-privacy}
-আজ, টাকা ধার দেওয়া এবং ধার নেওয়া সবই জড়িত ব্যক্তিদের চারপাশে ঘোরে। ধার দেওয়ার আগে ব্যাংকগুলিকে জানতে হবে আপনি ঋণ পরিশোধ করতে পারবেন কিনা।
+বর্তমানে, অর্থ ধার দেওয়া এবং ধার নেওয়া সবই জড়িত ব্যক্তিদের কেন্দ্র করে আবর্তিত হয়। ঋণ দেওয়ার আগে ব্যাংকগুলোর জানা প্রয়োজন যে আপনি ঋণ পরিশোধ করার সম্ভাবনা আছে কিনা।
-বিকেন্দ্রীভূত ঋণ কোনো পক্ষকেই নিজেদের পরিচয় না দিয়ে কাজ করে। পরিবর্তে, ঋণগ্রহীতাকে অবশ্যই জামানত রাখতে হবে যা ঋণদাতা স্বয়ংক্রিয়ভাবে পাবেন যদি তাদের ঋণ পরিশোধ করা না হয়। কিছু ঋণদাতা জামানত হিসেবে এমনকি [NFTs](/glossary/#nft)-ও গ্রহণ করে। NFT হল একটি অনন্য সম্পদের দলিল, যেমন একটি পেইন্টিং। [NFTs সম্পর্কে আরও জানুন](/nft/)
+ডিসেন্ট্রালাইজড ঋণদান কোনো পক্ষের নিজেদের পরিচয় দেওয়ার প্রয়োজন ছাড়াই কাজ করে। এর পরিবর্তে, ঋণগ্রহীতাকে অবশ্যই জামানত রাখতে হবে যা ঋণ পরিশোধ না হলে ঋণদাতা স্বয়ংক্রিয়ভাবে পেয়ে যাবে। কিছু ঋণদাতা এমনকি [NFTs](/glossary/#nft)-কেও জামানত হিসেবে গ্রহণ করে। NFTs হলো একটি অনন্য সম্পদের দলিল, যেমন একটি পেইন্টিং। [NFTs সম্পর্কে আরও জানুন](/nft/)
-এটি আপনাকে ক্রেডিট চেক বা ব্যক্তিগত তথ্য হস্তান্তর ছাড়াই অর্থ ধার করতে দেয়।
+এটি আপনাকে ক্রেডিট চেক বা ব্যক্তিগত তথ্য হস্তান্তর ছাড়াই অর্থ ধার করতে দেয়।
-#### গ্লোবাল তহবিলের অ্যাক্সেস {#access-global-funds}
+#### গ্লোবাল ফান্ডে অ্যাক্সেস {#access-global-funds}
-আপনি যখন একটি বিকেন্দ্রীভূত ঋণদাতা ব্যবহার করেন তখন আপনার কাছে সমস্ত বিশ্ব থেকে জমা করা ফান্ডগুলিতে অ্যাক্সেস থাকে, শুধুমাত্র আপনার নির্বাচিত ব্যাঙ্ক বা প্রতিষ্ঠানের হেফাজতে থাকা ফান্ডগুলি নয়। এটি ঋণকে আরও সহজলভ্য করে এবং সুদের হার উন্নত করে।
+আপনি যখন একটি ডিসেন্ট্রালাইজড ঋণদাতা ব্যবহার করেন তখন আপনার কাছে সারা বিশ্ব থেকে জমা করা ফান্ডে অ্যাক্সেস থাকে, শুধুমাত্র আপনার নির্বাচিত ব্যাংক বা প্রতিষ্ঠানের হেফাজতে থাকা ফান্ডে নয়। এটি ঋণগুলোকে আরও অ্যাক্সেসযোগ্য করে তোলে এবং সুদের হার উন্নত করে।
#### কর-দক্ষতা {#tax-efficiencies}
-ধার করা আপনাকে আপনার ETH (একটি করযোগ্য ইভেন্ট) বিক্রি করার প্রয়োজন ছাড়াই আপনার প্রয়োজনীয় ফান্ডগুলিতে অ্যাক্সেস দিতে পারে। পরিবর্তে, আপনি একটি স্টেবলকয়েন ঋণের জন্য জামানত হিসাবে ETH ব্যবহার করতে পারেন। এটি আপনাকে আপনার প্রয়োজনীয় নগদ-প্রবাহ দেয় এবং আপনাকে আপনার ETH রাখতে দেয়। স্টেবলকয়েন হল টোকেন যা আপনার নগদ প্রয়োজনের জন্য অনেক ভালো কারণ এগুলো ETH এর মত মূল্যে ওঠানামা করে না। [স্টেবলকয়েন সম্পর্কে আরও জানুন](#stablecoins)
+ধার নেওয়া আপনাকে আপনার ETH বিক্রি করার প্রয়োজন ছাড়াই (একটি করযোগ্য ইভেন্ট) আপনার প্রয়োজনীয় ফান্ডে অ্যাক্সেস দিতে পারে। এর পরিবর্তে, আপনি একটি স্টেবলকয়েন ঋণের জন্য জামানত হিসেবে ETH ব্যবহার করতে পারেন। এটি আপনাকে আপনার প্রয়োজনীয় ক্যাশ-ফ্লো দেয় এবং আপনাকে আপনার ETH রাখতে দেয়। স্টেবলকয়েন হলো এমন টোকেন যা আপনার যখন নগদ অর্থের প্রয়োজন হয় তখন অনেক ভালো কারণ এগুলোর ভ্যালু ETH-এর মতো ওঠানামা করে না। [স্টেবলকয়েন সম্পর্কে আরও জানুন](#stablecoins)
#### ফ্ল্যাশ লোন {#flash-loans}
-ফ্ল্যাশ লোন হল বিকেন্দ্রীকৃত ঋণের একটি আরও পরীক্ষামূলক রূপ যা আপনাকে জামানত ছাড়া বা কোনো ব্যক্তিগত তথ্য প্রদান ছাড়াই ঋণ নিতে দেয়।
+ফ্ল্যাশ লোন হলো ডিসেন্ট্রালাইজড ঋণদানের একটি আরও পরীক্ষামূলক রূপ যা আপনাকে জামানত বা কোনো ব্যক্তিগত তথ্য প্রদান ছাড়াই ধার করতে দেয়।
-এগুলো এই মুহূর্তে নন-টেকনিক্যাল লোকেদের কাছে ব্যাপকভাবে অ্যাক্সেসযোগ্য নয় তবে এগুলো ভবিষ্যতে সবার কাছে কী হতে পারে তার ইঙ্গিত দেয়।
+এগুলো এই মুহূর্তে নন-টেকনিক্যাল লোকদের জন্য ব্যাপকভাবে অ্যাক্সেসযোগ্য নয় তবে এগুলো ভবিষ্যতে সবার জন্য কী সম্ভব হতে পারে তার ইঙ্গিত দেয়।
-এটি সেই ভিত্তিতে কাজ করে যে একই লেনদেনের মধ্যে ঋণ নেওয়া হয় এবং ফেরত দেওয়া হয়। যদি এটি ফেরত দেওয়া না যায়, তাহলে লেনদেনটি এমনভাবে ফিরে আসে যেন কিছুই ঘটেনি।
+এটি এই ভিত্তিতে কাজ করে যে ঋণটি একই লেনদেন-এর মধ্যে নেওয়া হয় এবং পরিশোধ করা হয়। যদি এটি পরিশোধ করা না যায়, তবে লেনদেনটি এমনভাবে ফিরে যায় যেন কিছুই ঘটেনি।
-প্রায়শই ব্যবহৃত ফান্ডগুলো লিকুইডিটি পুল (ধার নেওয়ার জন্য ব্যবহৃত ফান্ডের বড় পুল) এ রাখা হয়। যদি সেগুলি একটি নির্দিষ্ট মুহুর্তে ব্যবহার করা না হয়, তাহলে এটি কারোর জন্য এই ফান্ডগুলি ধার করার, তাদের মাধ্যমে ব্যবসা পরিচালনা করার এবং তাদের ধার নেওয়ার সাথে সাথে পুরোপুরি আক্ষরিক অর্থে পরিশোধ করার একটি সুযোগ তৈরি করে।
+যে ফান্ডগুলো প্রায়শই ব্যবহার করা হয় সেগুলো লিকুইডিটি পুলে (ধার নেওয়ার জন্য ব্যবহৃত ফান্ডের বড় পুল) রাখা হয়। যদি সেগুলো কোনো নির্দিষ্ট মুহূর্তে ব্যবহার করা না হয়, তবে এটি কারো জন্য এই ফান্ডগুলো ধার করার, সেগুলো দিয়ে ব্যবসা পরিচালনা করার এবং আক্ষরিক অর্থে ধার নেওয়ার একই সময়ে সেগুলো সম্পূর্ণ পরিশোধ করার সুযোগ তৈরি করে।
-এর মানে হল একটি খুব ইচ্ছামত লেনদেনে অনেক যুক্তি অন্তর্ভুক্ত করা আবশ্যক। একটি সাধারণ উদাহরণ হতে পারে যে কেউ একটি ফ্ল্যাশ লোন ব্যবহার করে একটি মূল্যে যতটা সম্পদ ধার করতে পারে যাতে তারা এটিকে ভিন্ন বিনিময়ে বিক্রি করতে পারে যেখানে দাম বেশি।
+এর মানে হলো একটি অত্যন্ত কাস্টমাইজড লেনদেন-এ প্রচুর লজিক অন্তর্ভুক্ত করতে হবে। একটি সহজ উদাহরণ হতে পারে কেউ একটি ফ্ল্যাশ লোন ব্যবহার করে এক দামে যতটা সম্ভব একটি সম্পদ ধার করে যাতে তারা এটি অন্য একটি এক্সচেঞ্জে বিক্রি করতে পারে যেখানে দাম বেশি।
-সুতরাং একটি একক লেনদেনে, নিম্নলিখিতগুলি ঘটে:
+তাই একটি একক লেনদেন-এ, নিম্নলিখিত ঘটনাগুলো ঘটে:
-- আপনি এক্সচেঞ্জ A থেকে X পরিমাণ, $1.00 এ $asset ধার করেন
-- আপনি এক্সচেঞ্জ B-এ $1.10-এ X $asset বিক্রি করেন
-- আপনি এক্সচেঞ্জ A তে লোন ফেরত দেন
-- লাভ বিয়োগ লেনদেন ফি আপনি রাখুন
+- আপনি এক্সচেঞ্জ A থেকে $1.00 এ X পরিমাণ $asset ধার করেন
+- আপনি এক্সচেঞ্জ B তে $1.10 এ X $asset বিক্রি করেন
+- আপনি এক্সচেঞ্জ A কে ঋণ পরিশোধ করেন
+- আপনি ট্রানজেকশন ফি বাদ দিয়ে লাভ রাখেন
-যদি এক্সচেঞ্জ B এর সরবরাহ হঠাৎ করে কমে যায় এবং ব্যবহারকারী আসল লোন কভার করার জন্য যথেষ্ট ক্রয় করতে সক্ষম না হন, তাহলে লেনদেনটি ব্যর্থ হবে।
+যদি এক্সচেঞ্জ B-এর সরবরাহ হঠাৎ কমে যায় এবং ব্যবহারকারী আসল ঋণ কভার করার জন্য পর্যাপ্ত কিনতে সক্ষম না হয়, তবে লেনদেনটি কেবল ব্যর্থ হবে।
-প্রথাগত আর্থিক জগতে উপরের উদাহরণটি করতে সক্ষম হতে, আপনার প্রচুর পরিমাণ অর্থের প্রয়োজন হবে। এই অর্থ উপার্জন কৌশল শুধুমাত্র যাদের বিদ্যমান সম্পদ আছে তাদের অ্যাক্সেসযোগ্য। ফ্ল্যাশ লোন হল একটি ভবিষ্যতের উদাহরণ যেখানে অর্থ উপার্জনের জন্য অর্থ থাকা অপরিহার্য নয়।
+প্রথাগত ফাইন্যান্স জগতে উপরের উদাহরণটি করতে সক্ষম হওয়ার জন্য, আপনার প্রচুর অর্থের প্রয়োজন হবে। এই অর্থ উপার্জনের কৌশলগুলো শুধুমাত্র তাদের জন্যই অ্যাক্সেসযোগ্য যাদের বিদ্যমান সম্পদ রয়েছে। ফ্ল্যাশ লোন হলো এমন একটি ভবিষ্যতের উদাহরণ যেখানে অর্থ উপার্জন করার জন্য অর্থ থাকা অপরিহার্য পূর্বশর্ত নয়।
ফ্ল্যাশ লোন সম্পর্কে আরও জানুন
@@ -178,44 +178,44 @@ Dai বা USDC-এর মতো কয়েনগুলির একটি ম
-### ক্রিপ্টো দিয়ে সঞ্চয় করা শুরু করুন {#saving}
+### ক্রিপটো দিয়ে সঞ্চয় শুরু করুন {#saving}
-#### ঋণ দেওয়া {#lending}
+#### ধার দেওয়া {#lending}
-আপনি আপনার ক্রিপ্টোকে ধার দিয়ে সুদ উপার্জন করতে পারেন এবং আপনার ফান্ড রিয়েল টাইমে বৃদ্ধি পেতে দেখতে পারেন। এই মুহূর্তে সুদের হারগুলি আপনার স্থানীয় ব্যাঙ্কে আপনি যা পেতে পারেন তার চেয়ে অনেক বেশি (যদি আপনি ভাগ্যবান হন যে একটি অ্যাক্সেস করতে সক্ষম হন)। এখানে একটি উদাহরণ:
+আপনি আপনার ক্রিপটো ধার দিয়ে এর ওপর সুদ উপার্জন করতে পারেন এবং রিয়েল টাইমে আপনার ফান্ড বাড়তে দেখতে পারেন। এই মুহূর্তে সুদের হার আপনার স্থানীয় ব্যাংকে আপনি যা পেতে পারেন তার চেয়ে অনেক বেশি (যদি আপনি একটি অ্যাক্সেস করার মতো যথেষ্ট ভাগ্যবান হন)। এখানে একটি উদাহরণ দেওয়া হলো:
-- আপনি Aave-এর মতো একটি প্রোডাক্টকে আপনার 100 Dai, একটি [স্টেবলকয়েন](/stablecoins/), ধার দেন।
-- আপনি 100 Aave Dai (aDai) পাবেন যা একটি টোকেন যা আপনার ধার করা Dai কে প্রতিনিধিত্ব করে।
-- সুদের হারের উপর ভিত্তি করে আপনার aDai বৃদ্ধি পাবে এবং আপনি আপনার ওয়ালেটে আপনার ব্যালেন্স বাড়তে দেখতে পাবেন। [APR](/glossary/#apr)-এর উপর নির্ভর করে, আপনার ওয়ালেট ব্যালেন্স কয়েক দিন বা এমনকি কয়েক ঘন্টা পরেও 100.1234-এর মতো কিছু দেখাবে!
-- আপনি যেকোন সময় আপনার aDai ব্যালেন্সের সমান পরিমাণ নিয়মিত Dai তুলতে পারবেন।
+- আপনি আপনার 100 Dai, একটি [স্টেবলকয়েন](/stablecoins/), Aave-এর মতো একটি প্রোডাক্টে ধার দেন।
+- আপনি 100 Aave Dai (aDai) পান যা একটি টোকেন যা আপনার ধার দেওয়া Dai-কে উপস্থাপন করে।
+- সুদের হারের ওপর ভিত্তি করে আপনার aDai বাড়বে এবং আপনি আপনার ওয়ালেট-এ আপনার ব্যালেন্স বাড়তে দেখতে পারবেন। [APR](/glossary/#apr)-এর ওপর নির্ভর করে, কয়েক দিন বা এমনকি কয়েক ঘণ্টা পরে আপনার ওয়ালেট ব্যালেন্স 100.1234 এর মতো কিছু দেখাবে!
+- আপনি যেকোনো সময় আপনার aDai ব্যালেন্সের সমান পরিমাণ নিয়মিত Dai তুলে নিতে পারেন।
- ঋণ দেওয়ার ডিএ্যাপস দেখুন
+ ধার দেওয়ার ডিএ্যাপস দেখুন
-#### লোকসান-বিহীন লটারি {#no-loss-lotteries}
+#### নো-লস লটারি {#no-loss-lotteries}
-PoolTogether-এর মতো নো-লস লটারি অর্থ সঞ্চয় করার একটি মজাদার এবং উদ্ভাবনী নতুন উপায়।
+PoolTogether-এর মতো নো-লস লটারিগুলো অর্থ সঞ্চয় করার একটি মজাদার এবং উদ্ভাবনী নতুন উপায়।
-- আপনি 100 Dai টোকেন ব্যবহার করে 100 টি টিকিট কিনবেন।
-- আপনি আপনার 100টি টিকেটের প্রতিনিধিত্ব করে 100 টি plDai পাবেন।
-- যদি আপনার টিকিটগুলির মধ্যে একটি বিজয়ী হিসাবে বাছাই করা হয়, তাহলে আপনার plDai ব্যালেন্স প্রাইজ পুলের পরিমাণ অনুযায়ী বৃদ্ধি পাবে।
-- আপনি জিততে না পারলে, আপনার 100 plDai পরের সপ্তাহের ড্রতে চলে যাবে।
-- আপনি যেকোন সময় আপনার plDai ব্যালেন্সের সমান পরিমাণ রেগুলার Dai তুলতে পারবেন।
+- আপনি 100 Dai টোকেন ব্যবহার করে 100টি টিকিট কেনেন।
+- আপনি আপনার 100টি টিকিটের প্রতিনিধিত্বকারী 100 plDai পান।
+- যদি আপনার একটি টিকিট বিজয়ী হিসেবে নির্বাচিত হয়, তবে আপনার plDai ব্যালেন্স প্রাইজ পুলের পরিমাণ অনুযায়ী বাড়বে।
+- যদি আপনি না জেতেন, তবে আপনার 100 plDai আগামী সপ্তাহের ড্র-তে চলে যাবে।
+- আপনি যেকোনো সময় আপনার plDai ব্যালেন্সের সমান পরিমাণ নিয়মিত Dai তুলে নিতে পারেন।
-উপরের ধারের উদাহরণের মতো টিকিট ডিপোজিট ধার দেওয়ার মাধ্যমে সমস্ত সুদের দ্বারা প্রাইজ পুল তৈরি হয়।
+উপরের ধার দেওয়ার উদাহরণের মতো টিকিট ডিপোজিটগুলো ধার দিয়ে উৎপন্ন সমস্ত সুদ দ্বারা প্রাইজ পুল তৈরি হয়।
- PoolTogether ব্যবহার করে দেখুন
+ PoolTogether ট্রাই করুন
### টোকেন এক্সচেঞ্জ করুন {#swaps}
-ইথেরিয়ামে হাজার হাজার টোকেন রয়েছে। বিকেন্দ্রীভূত এক্সচেঞ্জ (DEX) আপনি যখনই চান তখনই আপনাকে বিভিন্ন টোকেন বাণিজ্য করতে দেয়। আপনি কখনই আপনার সম্পদের নিয়ন্ত্রণ ছেড়ে দিবেন না। এটি একটি ভিন্ন দেশে যাওয়ার সময় একটি মুদ্রা বিনিময় ব্যবস্থা ব্যবহার করার মত। কিন্তু DeFi সংস্করণ কখনই বন্ধ হয় না। মার্কেটগুলো বছরে 24/7, 365 দিন এবং এর প্রযুক্তি এই গ্যারান্টি দেয় যে সর্বদা একটি ট্রেড গ্রহণ করার জন্য কেউ থাকবে।
+ইথিরিয়ামে হাজার হাজার টোকেন রয়েছে। ডিসেন্ট্রালাইজড এক্সচেঞ্জ (DEXs) আপনাকে যখন খুশি বিভিন্ন টোকেন ট্রেড করতে দেয়। আপনি কখনই আপনার সম্পদের নিয়ন্ত্রণ ছেড়ে দেন না। এটি অন্য দেশে যাওয়ার সময় কারেন্সি এক্সচেঞ্জ ব্যবহার করার মতো। তবে DeFi সংস্করণটি কখনই বন্ধ হয় না। মার্কেটগুলো 24/7, বছরে 365 দিন খোলা থাকে এবং প্রযুক্তি গ্যারান্টি দেয় যে ট্রেড গ্রহণ করার জন্য সবসময় কেউ না কেউ থাকবে।
-উদাহরণস্বরূপ, আপনি যদি নো-লস লটারি PoolTogether (উপরে বর্ণিত) ব্যবহার করতে চান, তাহলে আপনাকে Dai বা USDC-এর মতো একটি টোকেনের প্রয়োজন হবে। এই DEX গুলি আপনাকে সেই টোকেনগুলির জন্য আপনার ETH অদলবদল করতে এবং আপনার শেষ হয়ে গেলে আবার ফিরে আসতে দেয়।
+উদাহরণস্বরূপ, আপনি যদি নো-লস লটারি PoolTogether (উপরে বর্ণিত) ব্যবহার করতে চান, তবে আপনার Dai বা USDC-এর মতো একটি টোকেন প্রয়োজন হবে। এই DEX-গুলো আপনাকে আপনার ETH-কে সেই টোকেনগুলোর জন্য সোয়াপ করতে এবং আপনার কাজ শেষ হলে আবার ফিরিয়ে আনতে দেয়।
টোকেন এক্সচেঞ্জগুলো দেখুন
@@ -225,9 +225,9 @@ PoolTogether-এর মতো নো-লস লটারি অর্থ সঞ
### অ্যাডভান্সড ট্রেডিং {#trading}
-যারা একটু বেশি নিয়ন্ত্রণ পছন্দ করেন তাদের জন্য আরও উন্নত ব্যবস্থা রয়েছে। সীমিত অর্ডারস, পার্পেচুয়ালস, মার্জিন ট্রেডিং এবং আরও অনেক কিছু সম্ভব। বিকেন্দ্রীভূত ট্রেডিংয়ের মাধ্যমে আপনি বিশ্বব্যাপী লিকুইডিটির অ্যাক্সেস পান, বাজার কখনই বন্ধ হয় না এবং আপনি সর্বদা আপনার সম্পদের নিয়ন্ত্রণে থাকেন।
+যে ট্রেডাররা একটু বেশি নিয়ন্ত্রণ পছন্দ করেন তাদের জন্য আরও অ্যাডভান্সড বিকল্প রয়েছে। লিমিট অর্ডার, পারপেচুয়ালস, মার্জিন ট্রেডিং এবং আরও অনেক কিছু সম্ভব। ডিসেন্ট্রালাইজড ট্রেডিংয়ের মাধ্যমে আপনি গ্লোবাল লিকুইডিটিতে অ্যাক্সেস পান, মার্কেট কখনই বন্ধ হয় না এবং আপনি সবসময় আপনার সম্পদের নিয়ন্ত্রণে থাকেন।
-যখন আপনি একটি কেন্দ্রীভূত এক্সচেঞ্জ ব্যবহার করেন তখন আপনাকে ট্রেডের আগে আপনার সম্পদ জমা করতে হবে এবং সেগুলির যত্ন নেওয়ার জন্য তাদের বিশ্বাস করতে হবে। আপনার সম্পদ জমা হওয়ার সময়, সেগুলি ঝুঁকির মধ্যে রয়েছে কারণ কেন্দ্রীভূত এক্সচেঞ্জগুলি হ্যাকারদের জন্য আকর্ষণীয় লক্ষ্য।
+আপনি যখন একটি সেন্ট্রালাইডড এক্সচেঞ্জ ব্যবহার করেন তখন আপনাকে ট্রেডের আগে আপনার সম্পদ জমা দিতে হবে এবং সেগুলো দেখাশোনা করার জন্য তাদের বিশ্বাস করতে হবে। আপনার সম্পদ জমা থাকার সময়, সেগুলো ঝুঁকিতে থাকে কারণ সেন্ট্রালাইডড এক্সচেঞ্জগুলো হ্যাকারদের জন্য আকর্ষণীয় লক্ষ্য।
ট্রেডিং ডিএ্যাপস দেখুন
@@ -237,23 +237,23 @@ PoolTogether-এর মতো নো-লস লটারি অর্থ সঞ
### আপনার পোর্টফোলিও বাড়ান {#investing}
-ইথেরিয়াম এ ফান্ড ম্যানেজমেন্ট পণ্য রয়েছে যা আপনার পছন্দের কৌশলের ভিত্তিতে আপনার পোর্টফোলিও বাড়ানোর চেষ্টা করবে। এটি স্বয়ংক্রিয়, সকলের জন্য উন্মুক্ত, এবং আপনার লাভের একটি অংশ নেওয়ার জন্য একজন মানব পরিচালকের প্রয়োজন নেই।
+ইথিরিয়ামে ফান্ড ম্যানেজমেন্ট প্রোডাক্ট রয়েছে যা আপনার পছন্দের কৌশলের ওপর ভিত্তি করে আপনার পোর্টফোলিও বাড়ানোর চেষ্টা করবে। এটি স্বয়ংক্রিয়, সবার জন্য উন্মুক্ত এবং আপনার লাভের অংশ নেওয়ার জন্য কোনো মানব ম্যানেজারের প্রয়োজন নেই।
-একটি ভালো উদাহরণ হলো [DeFi Pulse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/)। এটি এমন একটি তহবিল যা আপনার পোর্টফোলিওতে সর্বদা বাজার মূলধন দ্বারা শীর্ষ DeFi টোকেন অন্তর্ভুক্ত থাকে তা নিশ্চিত করতে স্বয়ংক্রিয়ভাবে ভারসাম্য বজায় রাখে। আপনাকে কখনই কোনো বিবরণ পরিচালনা করতে হবে না এবং আপনি যখন খুশি ফান্ড থেকে উত্তোলন করতে পারেন।
+উদাহরণস্বরূপ, টোকেনাইজড ইনডেক্স ফান্ড রয়েছে যা স্বয়ংক্রিয়ভাবে রিব্যালেন্স করে যাতে আপনার পোর্টফোলিওতে সবসময় মার্কেট ক্যাপিটালাইজেশন অনুযায়ী শীর্ষ DeFi টোকেনগুলো অন্তর্ভুক্ত থাকে। আপনাকে কখনই কোনো বিবরণ পরিচালনা করতে হবে না এবং আপনি যখন খুশি ফান্ড থেকে তুলে নিতে পারেন।
- বিনিয়োগের ডিএ্যাপস দেখুন
+ বিনিয়োগ ডিএ্যাপস দেখুন
-### আপনার ধারণাগুলোকে অর্থায়ন করুন {#crowdfunding}
+### আপনার আইডিয়াগুলোতে ফান্ড দিন {#crowdfunding}
-ইথেরিয়াম ক্রাউডফান্ডিংয়ের জন্য একটি আদর্শ প্ল্যাটফর্ম:
+ইথিরিয়াম ক্রাউডফান্ডিংয়ের জন্য একটি আদর্শ প্ল্যাটফর্ম:
-- সম্ভাব্য তহবিল যেকোন জায়গা থেকে আসতে পারে – ইথেরিয়াম এবং এর টোকেনগুলি বিশ্বের যে কোনও জায়গায় যে কোনও ব্যক্তির জন্য উন্মুক্ত।
-- এটি স্বচ্ছ তাই তহবিল সংগ্রহকারীরা প্রমাণ করতে পারেন যে কত টাকা তোলা হয়েছে। এমনকি আপনি পরবর্তীতে কীভাবে ফান্ড ব্যয় করা হচ্ছে তাও ট্রেস করতে পারেন।
-- তহবিল সংগ্রহকারীরা স্বয়ংক্রিয় অর্থ ফেরত সেটআপ করতে পারে যদি, উদাহরণস্বরূপ, একটি নির্দিষ্ট সময়সীমা এবং ন্যূনতম পরিমাণ পূরণ না হয়।
+- সম্ভাব্য ফান্ডাররা যেকোনো জায়গা থেকে আসতে পারে – ইথিরিয়াম এবং এর টোকেনগুলো বিশ্বের যেকোনো জায়গায় যে কারো জন্য উন্মুক্ত।
+- এটি স্বচ্ছ তাই ফান্ডরাইজাররা প্রমাণ করতে পারে যে কত টাকা সংগ্রহ করা হয়েছে। আপনি এমনকি পরে ফান্ডগুলো কীভাবে ব্যয় করা হচ্ছে তাও ট্র্যাক করতে পারেন।
+- ফান্ডরাইজাররা স্বয়ংক্রিয় রিফান্ড সেট আপ করতে পারে যদি, উদাহরণস্বরূপ, একটি নির্দিষ্ট সময়সীমা এবং ন্যূনতম পরিমাণ থাকে যা পূরণ করা হয়নি।
ক্রাউডফান্ডিং ডিএ্যাপস দেখুন
@@ -261,16 +261,16 @@ PoolTogether-এর মতো নো-লস লটারি অর্থ সঞ
#### কোয়াড্রেটিক ফান্ডিং {#quadratic-funding}
-ইথেরিয়াম হল ওপেন সোর্স সফ্টওয়্যার এবং এখনও পর্যন্ত অনেক কাজ কমিউনিটি দ্বারা অর্থায়ন করা হয়েছে। এটি একটি আকর্ষণীয় নতুন অর্থ সংগ্রহের মডেলের বৃদ্ধির দিকে পরিচালিত করেছে: কোয়াড্রেটিক ফান্ডিং। ভবিষ্যতে সব ধরনের গণপণ্যে আমাদের অর্থায়ন করার পদ্ধতিকে উন্নত করার সম্ভাবনা এর মধ্যে রয়েছে।
+ইথিরিয়াম হলো ওপেন সোর্স সফটওয়্যার এবং এ পর্যন্ত অনেক কাজ কমিউনিটি দ্বারা ফান্ড করা হয়েছে। এটি একটি আকর্ষণীয় নতুন ফান্ডরাইজিং মডেলের বৃদ্ধির দিকে পরিচালিত করেছে: কোয়াড্রেটিক ফান্ডিং। ভবিষ্যতে আমরা সব ধরনের পাবলিক গুডস-এ যেভাবে ফান্ড দিই তা উন্নত করার সম্ভাবনা এর রয়েছে।
-কোয়াড্রেটিক ফান্ডিং এটা নিশ্চিত করে যে, যে প্রোজেক্টগুলো সবচেয়ে বেশি ফান্ডিং পায়, সেগুলোর চাহিদাই সবচেয়ে অনন্য। অন্য কথায়, যে প্রোজেক্টগুলো সবচেয়ে বেশি মানুষের জীবনযাত্রার মান উন্নত করতে পারে। এটি কীভাবে কাজ করে তার ব্যাখ্যা দেওয়া হল:
+কোয়াড্রেটিক ফান্ডিং নিশ্চিত করে যে যে প্রজেক্টগুলো সবচেয়ে বেশি ফান্ড পায় সেগুলো হলো সবচেয়ে অনন্য চাহিদাসম্পন্ন প্রজেক্ট। অন্য কথায়, যে প্রজেক্টগুলো সবচেয়ে বেশি মানুষের জীবন উন্নত করতে পারে। এটি যেভাবে কাজ করে:
-1. অনুদানকৃত ফান্ডের একটি ম্যাচিং পুল আছে।
-2. পাবলিক ফান্ডিং এর একটি রাউন্ড শুরু হয়।
-3. লোকেরা কিছু অর্থ দান করে একটি প্রকল্পের জন্য তাদের চাহিদার সংকেত দিতে পারে।
-4. একবার রাউন্ড শেষ হয়ে গেলে, ম্যাচিং পুলটি প্রকল্পগুলিতে বিতরণ করা হয়। যাদের সবচেয়ে অনন্য চাহিদা তারা ম্যাচিং পুল থেকে সর্বোচ্চ পরিমাণ পান।
+1. দান করা ফান্ডের একটি ম্যাচিং পুল রয়েছে।
+2. পাবলিক ফান্ডিংয়ের একটি রাউন্ড শুরু হয়।
+3. লোকেরা কিছু অর্থ দান করে একটি প্রজেক্টের জন্য তাদের চাহিদার সংকেত দিতে পারে।
+4. রাউন্ড শেষ হলে, ম্যাচিং পুলটি প্রজেক্টগুলোতে বিতরণ করা হয়। সবচেয়ে অনন্য চাহিদাসম্পন্ন প্রজেক্টগুলো ম্যাচিং পুল থেকে সর্বোচ্চ পরিমাণ পায়।
-এর মানে হচ্ছে, B-এর 10,000 ডলারের একটি অনুদানের তুলনায় প্রজেক্ট A-এর 1 ডলারের 100টি অনুদানে শেষ পর্যন্ত বেশি পরিমাণে অর্থ জমা হতে পারে (মেচিং পুলের আকারের উপরে ভিত্তি করে)।
+এর মানে হলো 1 ডলারের 100টি অনুদান সহ প্রজেক্ট A, 10,000 ডলারের একক অনুদান সহ প্রজেক্ট B-এর চেয়ে বেশি ফান্ড পেতে পারে (ম্যাচিং পুলের আকারের ওপর নির্ভর করে)।
কোয়াড্রেটিক ফান্ডিং সম্পর্কে আরও জানুন
@@ -280,9 +280,9 @@ PoolTogether-এর মতো নো-লস লটারি অর্থ সঞ
### বীমা {#insurance}
-বিকেন্দ্রীভূত বীমার লক্ষ্য বীমা সস্তা, দ্রুত পরিশোধ করা এবং আরও স্বচ্ছ করা। আরো অটোমেশনের সহায়তায়, কভারেজ আরো সাশ্রয়ী এবং পে-আউটগুলি অনেক দ্রুত হয়ে উঠে। আপনার দাবির সিদ্ধান্ত নিতে ব্যবহৃত ডেটা সম্পূর্ণ স্বচ্ছ।
+ডিসেন্ট্রালাইজড বীমার লক্ষ্য হলো বীমাকে সস্তা, দ্রুত পে-আউট করা এবং আরও স্বচ্ছ করা। আরও অটোমেশনের সাথে, কভারেজ আরও সাশ্রয়ী এবং পে-আউট অনেক দ্রুত হয়। আপনার দাবির বিষয়ে সিদ্ধান্ত নেওয়ার জন্য ব্যবহৃত ডেটা সম্পূর্ণ স্বচ্ছ।
-যেকোন সফ্টওয়্যারের মতো ইথেরিয়াম পণ্যগুলি বাগ এবং শোষণের শিকার হতে পারে। তাই এই মুহূর্তে এই ক্ষেত্রে প্রচুর বীমা পণ্য তাদের ব্যবহারকারীদের তহবিলের ক্ষতি থেকে রক্ষা করার উপর ফোকাস করে। যাইহোক, জীবন আমাদের দিকে এগিয়ে দিতে পারে এমন সবকিছুর জন্য কভারেজ তৈরি করতে শুরু করা প্রকল্প রয়েছে। এর একটি ভালো উদাহরণ হলো Etherisc-এর ক্রপ কভার, যার লক্ষ্য হলো [কেনিয়ার ক্ষুদ্র কৃষকদের খরা এবং বন্যার বিরুদ্ধে সুরক্ষা দেওয়া](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)। বিকেন্দ্রীভূত বীমা কৃষকদের জন্য সস্তা কভার প্রদান করতে পারে যাদের প্রায়শই প্রথাগত বীমার বাইরে মূল্য দেওয়া হয়।
+ইথিরিয়াম প্রোডাক্টগুলো, যেকোনো সফটওয়্যারের মতো, বাগ এবং এক্সপ্লয়েটের শিকার হতে পারে। তাই এই মুহূর্তে এই স্পেসের অনেক বীমা প্রোডাক্ট তাদের ব্যবহারকারীদের ফান্ড হারানোর হাত থেকে রক্ষা করার ওপর ফোকাস করে। তবে, এমন প্রজেক্ট রয়েছে যা জীবন আমাদের দিকে ছুঁড়ে দিতে পারে এমন সবকিছুর জন্য কভারেজ তৈরি করতে শুরু করেছে। এর একটি ভালো উদাহরণ হলো Etherisc-এর ক্রপ কভার যার লক্ষ্য হলো [কেনিয়ায় ক্ষুদ্র কৃষকদের খরা এবং বন্যার হাত থেকে রক্ষা করা](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)। ডিসেন্ট্রালাইজড বীমা কৃষকদের জন্য সস্তা কভার প্রদান করতে পারে যারা প্রায়শই প্রথাগত বীমার দামের কারণে বাদ পড়ে যায়।
বীমা ডিএ্যাপস দেখুন
@@ -290,9 +290,9 @@ PoolTogether-এর মতো নো-লস লটারি অর্থ সঞ
-### অ্যাগ্রিগেটর এবং পোর্টফোলিও ম্যানেজার {#aggregators}
+### এগ্রিগেটর এবং পোর্টফোলিও ম্যানেজার {#aggregators}
-এত কিছু করার সাথে, আপনার সমস্ত বিনিয়োগ, ঋণ এবং ব্যবসার ট্র্যাক রাখার জন্য আপনার একটি উপায় প্রয়োজন। অনেকগুলি পণ্য রয়েছে যা আপনাকে আপনার সমস্ত DeFi কার্যকলাপকে এক জায়গা থেকে সমন্বয় করতে দেয়। এটি DeFi এর উন্মুক্ত আর্কিটেকচারের সৌন্দর্য। দলগুলো এমন ইন্টারফেস তৈরি করতে পারে যেখানে আপনি কেবল পণ্য জুড়ে আপনার ব্যালেন্স দেখতে পাবেন না, আপনি তাদের বৈশিষ্ট্যগুলিও ব্যবহার করতে পারেন। আপনি DeFi এর আরও এক্সপ্লোর করার সাথে সাথে এটি দরকারী বলে মনে হতে পারে।
+এত কিছু চলার কারণে, আপনার সমস্ত বিনিয়োগ, ঋণ এবং ট্রেড ট্র্যাক করার জন্য একটি উপায়ের প্রয়োজন হবে। এমন অনেক প্রোডাক্ট রয়েছে যা আপনাকে এক জায়গা থেকে আপনার সমস্ত DeFi কার্যক্রম সমন্বয় করতে দেয়। এটিই DeFi-এর ওপেন আর্কিটেকচারের সৌন্দর্য। টিমগুলো এমন ইন্টারফেস তৈরি করতে পারে যেখানে আপনি কেবল প্রোডাক্টগুলো জুড়ে আপনার ব্যালেন্স দেখতে পারবেন না, আপনি তাদের ফিচারগুলোও ব্যবহার করতে পারবেন। আপনি যখন DeFi আরও এক্সপ্লোর করবেন তখন এটি আপনার কাছে দরকারী মনে হতে পারে।
পোর্টফোলিও ডিএ্যাপস দেখুন
@@ -300,45 +300,54 @@ PoolTogether-এর মতো নো-লস লটারি অর্থ সঞ
-## DeFi কিভাবে কাজ করে? {#how-defi-works}
+## DeFi কীভাবে কাজ করে? {#how-defi-works}
-DeFi ক্রিপ্টোকারেন্সি এবং স্মার্ট কন্ট্রাক্ট ব্যবহার করে এমন পরিষেবা প্রদান করতে যেগুলির মধ্যস্থতাকারীদের প্রয়োজন নেই। আজকের আর্থিক বিশ্বে, আর্থিক প্রতিষ্ঠানগুলি লেনদেনের গ্যারান্টার হিসাবে কাজ করে। এটি এই প্রতিষ্ঠানগুলিকে প্রচুর শক্তি দেয় কারণ আপনার অর্থ তাদের মাধ্যমে প্রবাহিত হয়। এছাড়াও বিশ্বের কোটি কোটি মানুষ এমনকি একটি ব্যাঙ্ক অ্যাকাউন্ট অ্যাক্সেস করতে পারে না।
+DeFi ক্রিপটোকারেন্সি এবং স্মার্ট কন্ট্রাক্ট ব্যবহার করে এমন পরিষেবা প্রদান করে যার জন্য মধ্যস্থতাকারীদের প্রয়োজন হয় না। আজকের আর্থিক জগতে, আর্থিক প্রতিষ্ঠানগুলো লেনদেন-এর গ্যারান্টার হিসেবে কাজ করে। এটি এই প্রতিষ্ঠানগুলোকে প্রচুর ক্ষমতা দেয় কারণ আপনার অর্থ তাদের মাধ্যমে প্রবাহিত হয়। এছাড়া, বিশ্বজুড়ে বিলিয়ন বিলিয়ন মানুষ এমনকি একটি ব্যাংক একাউন্টও অ্যাক্সেস করতে পারে না।
-DeFi-এ, একটি স্মার্ট কন্ট্র্যাক্ট লেনদেনে আর্থিক প্রতিষ্ঠানকে প্রতিস্থাপন করে। একটি স্মার্ট কন্ট্র্যাক্ট হলো এক ধরনের ইথেরিয়াম অ্যাকাউন্ট যা ফান্ড ধরে রাখতে পারে এবং নির্দিষ্ট শর্তের ভিত্তিতে সেগুলি পাঠাতে/ফেরত দিতে পারে। লাইভ থাকাকালীন কেউ সেই স্মার্ট কন্ট্র্যাক্টটি পরিবর্তন করতে পারে না – এটি সর্বদা যেভাবে প্রোগ্রাম করা করা হয়েছে সেভাবে চলবে।
+DeFi-তে, একটি স্মার্ট কন্ট্রাক্ট লেনদেন-এ আর্থিক প্রতিষ্ঠানকে প্রতিস্থাপন করে। একটি স্মার্ট কন্ট্রাক্ট হলো এক ধরনের ইথিরিয়াম একাউন্ট যা ফান্ড ধরে রাখতে পারে এবং নির্দিষ্ট শর্তের ওপর ভিত্তি করে সেগুলো পাঠাতে/রিফান্ড করতে পারে। যখন এটি লাইভ থাকে তখন কেউ সেই স্মার্ট কন্ট্রাক্ট পরিবর্তন করতে পারে না – এটি সবসময় প্রোগ্রাম করা অনুযায়ী চলবে।
-কোন একটি ভাতা বা পকেট মানি দেওয়ার জন্য ডিজাইন করা একটি কন্ট্র্যাক্ট প্রতি শুক্রবার অ্যাকাউন্ট A থেকে অ্যাকাউন্ট B-তে টাকা পাঠানোর জন্য প্রোগ্রাম করা যেতে পারে। এবং যতক্ষণ না অ্যাকাউন্ট A-তে প্রয়োজনীয় ফান্ড থাকে ততক্ষণ এটি কেবল তা করবে। ফান্ড চুরি করার জন্য কেউ কন্ট্র্যাক্ট পরিবর্তন করতে এবং প্রাপক হিসাবে অ্যাকাউন্ট C যোগ করতে পারে না।
+একটি কন্ট্রাক্ট যা ভাতা বা পকেট মানি দেওয়ার জন্য ডিজাইন করা হয়েছে তা প্রতি শুক্রবার একাউন্ট A থেকে একাউন্ট B তে অর্থ পাঠানোর জন্য প্রোগ্রাম করা যেতে পারে। এবং এটি কেবল তখনই তা করবে যতক্ষণ একাউন্ট A তে প্রয়োজনীয় ফান্ড থাকবে। কেউ কন্ট্রাক্ট পরিবর্তন করতে এবং ফান্ড চুরি করার জন্য প্রাপক হিসেবে একাউন্ট C যোগ করতে পারবে না।
-তদারকি এবং নিরীক্ষা করার জন্য কনট্র্যাক্টগুলোও সার্বজনীন। এর অর্থ হল খারাপ কনট্র্যাক্টগুলি প্রায়শই কমিউনিটির যাচাইয়ের অধীনে খুব দ্রুত আসবে।
+কন্ট্রাক্টগুলো যে কারো পরিদর্শন এবং অডিট করার জন্য পাবলিক থাকে। এর মানে হলো খারাপ কন্ট্রাক্টগুলো প্রায়শই খুব দ্রুত কমিউনিটির যাচাই-বাছাইয়ের আওতায় আসবে।
-এর অর্থ এই যে বর্তমানে ইথেরিয়াম কমিউনিটির আরও প্রযুক্তিগত সদস্যদের বিশ্বাস করার প্রয়োজন রয়েছে যারা কোড পড়তে পারে। ওপেন-সোর্স ভিত্তিক কমিউনিটি ডেভেলপারদের নিয়ন্ত্রণে রাখতে সাহায্য করে, কিন্তু সময়ের সাথে সাথে এই প্রয়োজনীয়তা হ্রাস পাবে কারণ স্মার্ট কনট্র্যাক্টগুলি পড়া সহজ হয়ে যায় এবং কোডের বিশ্বাসযোগ্যতা প্রমাণ করার অন্যান্য উপায় তৈরি করা হয়।
+এর মানে হলো বর্তমানে ইথিরিয়াম কমিউনিটির আরও টেকনিক্যাল সদস্যদের বিশ্বাস করার প্রয়োজন রয়েছে যারা কোড পড়তে পারে। ওপেন-সোর্স ভিত্তিক কমিউনিটি ডেভেলপারদের নিয়ন্ত্রণে রাখতে সাহায্য করে, তবে স্মার্ট কন্ট্রাক্টগুলো পড়া সহজ হওয়ার সাথে সাথে এবং কোডের বিশ্বস্ততা প্রমাণ করার অন্যান্য উপায় তৈরি হওয়ার সাথে সাথে এই প্রয়োজনীয়তা সময়ের সাথে সাথে কমে যাবে।
-## ইথেরিয়াম এবং DeFi {#ethereum-and-defi}
+## ইথিরিয়াম এবং DeFi {#ethereum-and-defi}
-ইথেরিয়াম বিভিন্ন কারণে DeFi-এর জন্য নিখুঁত ভিত্তি:
+ইথিরিয়াম বেশ কয়েকটি কারণে DeFi-এর জন্য নিখুঁত ভিত্তি:
-- কেউ ইথেরিয়াম বা এটিতে থাকা স্মার্ট কনট্র্যাক্টের মালিক নয় – এটি প্রত্যেককে DeFi ব্যবহার করার সুযোগ দেয়। এর মানে এই যে কেউ আপনার ক্ষেত্রে নিয়ম পরিবর্তন করতে পারবেন না।
-- DeFi পণ্যগুলি পর্দার আড়ালে একই ভাষায় কথা বলে: ইথেরিয়াম। এর মানে অনেক পণ্য নির্বিঘ্নে একসাথে কাজ করে। আপনি একটি প্ল্যাটফর্মে টোকেন ধার দিতে পারেন এবং সম্পূর্ণ ভিন্ন অ্যাপ্লিকেশনে একটি ভিন্ন বাজারে সুদ বহনকারী টোকেন বিনিময় করতে পারেন। এটি আপনার ব্যাঙ্কে লয়্যালটি পয়েন্ট নগদ করতে পারার মতো।
-- টোকেন এবং ক্রিপ্টোকারেন্সি ইথেরিয়াম-এ, একটি শেয়ার্ড লেজারে, তৈরি করা হয় – লেনদেন এবং মালিকানার ট্র্যাক রাখা কিছুটা ইথেরিয়ামের বিষয়বস্তু।
-- ইথেরিয়াম সম্পূর্ণ আর্থিক স্বাধীনতার অনুমতি দেয় - বেশিরভাগ পণ্য কখনই আপনার তহবিলের হেফাজত করবে না, নিয়ন্ত্রণ আপনার কাছেই থাকবে।
+- ইথিরিয়াম বা এর ওপর থাকা স্মার্ট কন্ট্রাক্টগুলোর মালিক কেউ নয় – এটি সবাইকে DeFi ব্যবহার করার সুযোগ দেয়। এর মানে হলো কেউ আপনার জন্য নিয়ম পরিবর্তন করতে পারবে না।
+- DeFi প্রোডাক্টগুলো পর্দার আড়ালে একই ভাষায় কথা বলে: ইথিরিয়াম। এর মানে হলো অনেক প্রোডাক্ট নির্বিঘ্নে একসাথে কাজ করে। আপনি একটি প্ল্যাটফর্মে টোকেন ধার দিতে পারেন এবং সম্পূর্ণ ভিন্ন অ্যাপ্লিকেশনে ভিন্ন মার্কেটে সুদ বহনকারী টোকেন এক্সচেঞ্জ করতে পারেন। এটি আপনার ব্যাংকে লয়্যালটি পয়েন্ট ক্যাশ করতে পারার মতো।
+- টোকেন এবং ক্রিপটোকারেন্সি ইথিরিয়ামে তৈরি করা হয়েছে, যা একটি শেয়ার্ড লেজার – লেনদেন এবং মালিকানার ট্র্যাক রাখা ইথিরিয়ামেরই কাজ।
+- ইথিরিয়াম সম্পূর্ণ আর্থিক স্বাধীনতার অনুমতি দেয় – বেশিরভাগ প্রোডাক্ট কখনই আপনার ফান্ডের হেফাজত নেবে না, আপনাকে নিয়ন্ত্রণে রাখবে।
-আপনি লেয়ারসমূহে DeFi এর কথা ভাবতে পারেন:
+আপনি DeFi-কে লেয়ার হিসেবে ভাবতে পারেন:
-1. ব্লকচেইন – ইথেরিয়ামে লেনদেনের ইতিহাস এবং অ্যাকাউন্টের অবস্থা ধারন করে।
+1. ব্লকচেইন – ইথিরিয়ামে লেনদেন-এর ইতিহাস এবং একাউন্টগুলোর স্টেট থাকে।
2. সম্পদ – [ETH](/what-is-ether/) এবং অন্যান্য টোকেন (মুদ্রা)।
-3. প্রোটোকল – [স্মার্ট কন্ট্র্যাক্ট](/glossary/#smart-contract) যা কার্যকারিতা প্রদান করে, উদাহরণস্বরূপ, এমন একটি পরিষেবা যা সম্পদের ডিসেন্ট্রালাইজড ঋণের অনুমতি দেয়।
-4. [অ্যাপ্লিকেশনগুলো](/apps/) – যে প্রোডাক্টগুলো আমরা প্রোটোকল পরিচালনা এবং অ্যাক্সেস করতে ব্যবহার করি।
+3. প্রটোকল – [স্মার্ট কন্ট্রাক্ট](/glossary/#smart-contract) যা কার্যকারিতা প্রদান করে, উদাহরণস্বরূপ, একটি পরিষেবা যা সম্পদের ডিসেন্ট্রালাইজড ঋণদানের অনুমতি দেয়।
+4. [অ্যাপ্লিকেশনগুলো](/apps/) – যে প্রোডাক্টগুলো আমরা প্রটোকলগুলো পরিচালনা এবং অ্যাক্সেস করতে ব্যবহার করি।
-দ্রষ্টব্য: DeFi-এর বেশিরভাগই [ERC-20 স্ট্যান্ডার্ড](/glossary/#erc-20) ব্যবহার করে। DeFi-এর অ্যাপ্লিকেশনগুলি ETH-এর জন্য একটি র্যাপার ব্যবহার করে যাকে Wrapped ether (WETH) বলা হয়। [Wrapped ether সম্পর্কে আরও জানুন](/wrapped-eth)।
+দ্রষ্টব্য: DeFi-এর বেশিরভাগই [ERC-20 স্ট্যান্ডার্ড](/glossary/#erc-20) ব্যবহার করে। DeFi-তে অ্যাপ্লিকেশনগুলো ETH-এর জন্য একটি র্যাপার ব্যবহার করে যাকে রেপড ইথার (WETH) বলা হয়। [রেপড টোকেন সম্পর্কে আরও জানুন](/wrapped-eth)।
## DeFi তৈরি করুন {#build-defi}
-DeFi একটি ওপেন সোর্স মুভমেন্ট। আপনার জন্য DeFi প্রোটোকলসমূহ এবং অ্যাপ্লিকেশনগুলি যাচাই, ফর্ক ও উদ্ভাবনের জন্য উন্মুক্ত। এই স্তরযুক্ত স্ট্যাকের কারণে (তারা সবাই একই বেস ব্লকচেইন এবং সম্পদ ভাগাভাগি করে), প্রোটোকলগুলি মিশ্রিত করা যেতে পারে এবং অনন্য কম্বো সুযোগগুলি আনলক করতে মিলিত হতে পারে।
+DeFi হলো একটি ওপেন-সোর্স আন্দোলন। DeFi প্রটোকল এবং অ্যাপ্লিকেশনগুলো আপনার পরিদর্শন, ফর্ক এবং উদ্ভাবনের জন্য উন্মুক্ত। এই লেয়ার্ড স্ট্যাকের কারণে (তারা সবাই একই বেস ব্লকচেইন এবং সম্পদ শেয়ার করে), অনন্য কম্বো সুযোগগুলো আনলক করতে প্রটোকলগুলো মিশ্রিত এবং মেলানো যেতে পারে।
ডিএ্যাপস তৈরি সম্পর্কে আরও জানুন
-## আরও পড়ুন {#further-reading}
+## প্রথাগত DeFi-এর বাইরে {#beyond-traditional-defi}
+
+DeFi ইকোসিস্টেম নতুন ক্ষেত্রগুলোতে প্রসারিত হতে চলেছে:
+
+- **[প্রেডিকশন মার্কেট](/prediction-markets/)** – ডিসেন্ট্রালাইজড প্ল্যাটফর্ম যেখানে আপনি মধ্যস্থতাকারী ছাড়াই নির্বাচন থেকে শুরু করে খেলাধুলার ইভেন্ট পর্যন্ত ভবিষ্যতের ইভেন্টগুলোর ফলাফলের ওপর বাজি ধরতে পারেন।
+- **[রিয়েল-ওয়ার্ল্ড অ্যাসেট (RWAs)](/real-world-assets/)** – ইথিরিয়ামে রিয়েল এস্টেট, পণ্য এবং বন্ডের মতো ভৌত সম্পদগুলোকে টোকেনাইজ করা, যা অনচেইন-এ ট্রিলিয়ন ডলারের ভ্যালু নিয়ে আসে।
+- **[পেমেন্ট](/payments/)** – প্রথাগত ব্যাংকিং অবকাঠামো ছাড়াই দ্রুত, কম খরচে গ্লোবাল পেমেন্টের জন্য ইথিরিয়াম এবং স্টেবলকয়েন ব্যবহার করা।
+- **[AI এজেন্ট](/ai-agents/)** – স্বায়ত্তশাসিত সফটওয়্যার এজেন্ট যা ইথিরিয়ামে লেনদেন করতে পারে, যা স্বয়ংক্রিয় ট্রেডিং, পোর্টফোলিও ম্যানেজমেন্ট এবং অনচেইন ইন্টারঅ্যাকশনের নতুন রূপগুলোকে সক্ষম করে।
+
+## আরও পড়ুন {#further-reading}
### DeFi ডেটা {#defi-data}
@@ -347,20 +356,19 @@ DeFi একটি ওপেন সোর্স মুভমেন্ট। আ
### DeFi আর্টিকেল {#defi-articles}
-- [DeFi-এর জন্য একটি শিক্ষানবিস নির্দেশিকা](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, January 6, 2020_
-- [EEA DeFi Risk Assessment Guidelines](https://entethalliance.org/specs/defi-risks/) – DeFi প্রোটোকলগুলিতে মূল ঝুঁকিগুলি কীভাবে চিহ্নিত এবং মূল্যায়ন করা যায় তার উপর একটি ইন্ডাস্ট্রি-সমর্থিত ওভারভিউ।
+- [DeFi-এর জন্য নতুনদের গাইড](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _সিড কোয়েলহো-প্রভু, জানুয়ারি 6, 2020_
+- [EEA DeFi ঝুঁকি মূল্যায়ন নির্দেশিকা](https://entethalliance.org/specs/defi-risks/) – DeFi প্রটোকলগুলোতে মূল ঝুঁকিগুলো কীভাবে চিহ্নিত এবং মূল্যায়ন করতে হয় তার একটি শিল্প-সমর্থিত ওভারভিউ।
### ভিডিও {#videos}
-- [Finematics - ডিসেন্ট্রালাইজড ফিনান্স শিক্ষা](https://finematics.com/) – _DeFi-এর উপর ভিডিও_
-- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _DeFi বেসিকস: এই মাঝে মাঝে বিভ্রান্তিকর স্পেসে শুরু করার জন্য আপনার যা কিছু জানা দরকার।_
-- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _DeFi কি?_
+- [Finematics - ডিসেন্ট্রালাইজড ফাইন্যান্স শিক্ষা](https://finematics.com/) – _DeFi-এর ওপর ভিডিও_
+- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _DeFi বেসিকস: এই মাঝে মাঝে বিভ্রান্তিকর স্পেসে শুরু করার জন্য আপনার যা জানা প্রয়োজন।_
+- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _DeFi কী?_
### কমিউনিটি {#communities}
-- [DeFi Llama Discord server](https://discord.defillama.com/)
-- [DeFi Pulse Discord server](https://discord.gg/Gx4TCTk)
+- [DeFi Llama ডিসকর্ড সার্ভার](https://discord.defillama.com/)
-
+
\ No newline at end of file
diff --git a/public/content/translations/bn/desci/index.md b/public/content/translations/bn/desci/index.md
index d517d474f85..452c86351d5 100644
--- a/public/content/translations/bn/desci/index.md
+++ b/public/content/translations/bn/desci/index.md
@@ -1,138 +1,138 @@
---
-title: "বিকেন্দ্রীভূত বিজ্ঞান (DeSci)"
-description: "ইথেরিয়ামে বিকেন্দ্রীভূত বিজ্ঞানের একটি ওভারভিউ"
+title: ডিসেন্ট্রালাইজড বিজ্ঞান (DeSci)
+description: ইথিরিয়ামে ডিসেন্ট্রালাইজড বিজ্ঞানের একটি ওভারভিউ
lang: bn
template: use-cases
emoji: ":microscope:"
sidebarDepth: 2
image: /images/future_transparent.png
alt: ""
-summaryPoint1: "একটি বিশ্বব্যাপী, বর্তমান বৈজ্ঞানিক ব্যবস্থার উন্মুক্ত বিকল্প।"
-summaryPoint2: "প্রযুক্তি যা বিজ্ঞানীদের তহবিল সংগ্রহ করতে, পরীক্ষা চালাতে, ডেটা শেয়ার করতে, ইনসাইটস বিতরণ করতে এবং আরও অনেক কিছু করতে সক্ষম করে।"
-summaryPoint3: "উন্মুক্ত বিজ্ঞান আন্দোলন গড়ে তোলে।"
+summaryPoint1: বর্তমান বৈজ্ঞানিক ব্যবস্থার একটি বৈশ্বিক, উন্মুক্ত বিকল্প।
+summaryPoint2: এমন প্রযুক্তি যা বিজ্ঞানীদের তহবিল সংগ্রহ, পরীক্ষা চালানো, ডেটা শেয়ার করা, অন্তর্দৃষ্টি বিতরণ এবং আরও অনেক কিছু করতে সক্ষম করে।
+summaryPoint3: উন্মুক্ত বিজ্ঞান আন্দোলনের উপর ভিত্তি করে তৈরি।
---
-## বিকেন্দ্রীভূত বিজ্ঞান (DeSci) কী? {#what-is-desci}
+## ডিসেন্ট্রালাইজড বিজ্ঞান (DeSci) কী? {#what-is-desci}
-বিকেন্দ্রীভূত বিজ্ঞান (DeSci) হলো একটি আন্দোলন যার লক্ষ্য [Web3](/glossary/#web3) স্ট্যাক ব্যবহার করে ন্যায্য এবং ন্যায়সঙ্গতভাবে বৈজ্ঞানিক জ্ঞানের জন্য অর্থায়ন, তৈরি, পর্যালোচনা, ক্রেডিট, সংরক্ষণ এবং প্রচারের জন্য পাবলিক অবকাঠামো তৈরি করা।
+ডিসেন্ট্রালাইজড বিজ্ঞান (DeSci) হলো এমন একটি আন্দোলন যার লক্ষ্য [ওয়েব3](/glossary/#web3) স্ট্যাক ব্যবহার করে বৈজ্ঞানিক জ্ঞানকে ন্যায্য ও সমতাভিত্তিক উপায়ে অর্থায়ন, তৈরি, পর্যালোচনা, স্বীকৃতি প্রদান, সংরক্ষণ এবং প্রচারের জন্য পাবলিক অবকাঠামো তৈরি করা।
-DeSci একটি ইকোসিস্টেম তৈরি করার লক্ষ্য রাখে যেখানে বিজ্ঞানীরা তাদের গবেষণা খোলাখুলিভাবে শেয়ার করতে এবং তাদের কাজের জন্য কৃতিত্ব পাওয়ার জন্য উৎসাহিত করা হয় এবং যেকেউ সহজেই গবেষণায় অ্যাক্সেস এবং অবদান রাখতে দেয়। DeSci এই ধারণাটি নিয়ে কাজ করে দেয় যে বৈজ্ঞানিক জ্ঞান সবার কাছে অ্যাক্সেসযোগ্য হওয়া উচিত এবং বৈজ্ঞানিক গবেষণার প্রক্রিয়াটি স্বচ্ছ হওয়া উচিত। DeSci একটি আরও বিকেন্দ্রীভূত এবং বিতরণ করা বৈজ্ঞানিক গবেষণা মডেল তৈরি করছে, এটি কেন্দ্রীয় কর্তৃপক্ষের সেন্সরশিপ এবং নিয়ন্ত্রণের বিরুদ্ধে আরও প্রতিরোধী করে তুলেছে। DeSci এমন একটি পরিবেশ তৈরি করার আশা করে যেখানে নতুন এবং অপ্রচলিত ধারণাগুলি অর্থায়ন, বৈজ্ঞানিক টুলস এবং যোগাযোগের চ্যানেলগুলিতে অ্যাক্সেসকে বিকেন্দ্রীকরণ করে বিকাশ লাভ করতে পারে।
+DeSci এমন একটি ইকোসিস্টেম তৈরি করতে চায় যেখানে বিজ্ঞানীরা তাদের গবেষণা উন্মুক্তভাবে শেয়ার করতে এবং তাদের কাজের স্বীকৃতি পেতে উৎসাহিত হন, পাশাপাশি যে কাউকে সহজেই গবেষণায় অ্যাক্সেস এবং অবদান রাখার সুযোগ দেয়। DeSci এই ধারণার উপর কাজ করে যে বৈজ্ঞানিক জ্ঞান সবার জন্য অ্যাক্সেসযোগ্য হওয়া উচিত এবং বৈজ্ঞানিক গবেষণার প্রক্রিয়াটি স্বচ্ছ হওয়া উচিত। DeSci একটি আরও ডিসেন্ট্রালাইজড এবং ডিস্ট্রিবিউটেড বৈজ্ঞানিক গবেষণা মডেল তৈরি করছে, যা এটিকে সেন্সরশিপ এবং কেন্দ্রীয় কর্তৃপক্ষের নিয়ন্ত্রণের প্রতি আরও প্রতিরোধী করে তোলে। তহবিল, বৈজ্ঞানিক সরঞ্জাম এবং যোগাযোগের চ্যানেলগুলোতে অ্যাক্সেস ডিসেন্ট্রালাইজড করার মাধ্যমে DeSci এমন একটি পরিবেশ তৈরি করার আশা করে যেখানে নতুন এবং অপ্রচলিত ধারণাগুলো বিকশিত হতে পারে।
-বিকেন্দ্রীভূত বিজ্ঞান আরও বৈচিত্র্যময় অর্থায়নের উৎস ([DAO](/glossary/#dao), [কোয়াড্রেটিক ডোনেশন](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) থেকে শুরু করে ক্রাউডফান্ডিং ও আরও অনেক কিছু), আরও সহজলভ্য ডেটা এবং পদ্ধতি, এবং পুনরুৎপাদনের জন্য প্রণোদনা প্রদানের সুযোগ করে দেয়।
+ডিসেন্ট্রালাইজড বিজ্ঞান আরও বৈচিত্র্যময় তহবিলের উৎস (যেমন [DAOs](/glossary/#dao), [কোয়াড্রেটিক অনুদান](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) থেকে শুরু করে ক্রাউডফান্ডিং এবং আরও অনেক কিছু), আরও অ্যাক্সেসযোগ্য ডেটা এবং পদ্ধতিগুলোর সুযোগ দেয় এবং প্রজননযোগ্যতার জন্য প্রণোদনা প্রদান করে।
-### জুয়ান বেনেট - DeSci আন্দোলন
+### Juan Benet - DeSci আন্দোলন
-## কিভাবে DeSci বিজ্ঞানের উন্নতি করে {#desci-improves-science}
+## DeSci কীভাবে বিজ্ঞানের উন্নতি করে {#desci-improves-science}
-বিজ্ঞানের মূল সমস্যাগুলির একটি অসম্পূর্ণ তালিকা এবং কীভাবে বিকেন্দ্রীভূত বিজ্ঞান এই সমস্যাগুলি সমাধান করতে সাহায্য করতে পারে
+বিজ্ঞানের মূল সমস্যাগুলোর একটি অসম্পূর্ণ তালিকা এবং কীভাবে ডিসেন্ট্রালাইজড বিজ্ঞান এই সমস্যাগুলো সমাধানে সাহায্য করতে পারে
-| **বিকেন্দ্রীভূত বিজ্ঞান** | **প্রথাগত বিজ্ঞান** |
-| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
-| তহবিল বন্টন **জনসাধারণ দ্বারা নির্ধারিত হয়** কোয়াড্রেটিক ডোনেশন বা DAO-এর মতো পদ্ধতি ব্যবহার করে। | ছোট, বদ্ধ, **কেন্দ্রীভূত গোষ্ঠী** তহবিলের বিতরণ নিয়ন্ত্রণ করে। |
-| আপনি গতিশীল দলে **সারা বিশ্বের** সহকর্মীদের সাথে সহযোগিতা করেন। | অর্থায়নকারী সংস্থা এবং নিজস্ব প্রতিষ্ঠানগুলো আপনার সহযোগিতাকে **সীমিত** করে। |
-| অর্থায়নের সিদ্ধান্তগুলি অনলাইনে এবং **স্বচ্ছভাবে** নেওয়া হয়। নতুন ফান্ডিং মেকানিজমসমূহ এক্সপ্লোর করা হয়। | অর্থায়নের সিদ্ধান্তগুলো দীর্ঘ সময় এবং **সীমিত স্বচ্ছতার** সাথে নেওয়া হয়। কিছু ফান্ডিং মেকানিজমস বিদ্যমান। |
-| [Web3](/glossary/#web3) প্রযুক্তি ব্যবহার করে ল্যাবরেটরির পরিষেবা শেয়ার করা আরও সহজ এবং স্বচ্ছ করা হয়েছে। | ল্যাবরেটরি রিসোর্স শেয়ার করা প্রায়শই **ধীর এবং অস্বচ্ছ** হয়। |
-| **প্রকাশনার জন্য নতুন মডেল** তৈরি করা যেতে পারে যা বিশ্বাস, স্বচ্ছতা এবং সার্বজনীন অ্যাক্সেসের জন্য Web3 প্রিমিটিভ ব্যবহার করে। | আপনি প্রতিষ্ঠিত পদ্ধতির মাধ্যমে প্রকাশ করেন যা প্রায়শই **অদক্ষ, পক্ষপাতদুষ্ট এবং শোষণমূলক** হিসাবে স্বীকৃত। |
-| আপনি পিয়ার-রিভিউ কাজের জন্য **টোকেন এবং খ্যাতি অর্জন করতে পারেন**। | আপনার **পিয়ার-রিভিউয়ের কাজ অবৈতনিক**, যা লাভজনক প্রকাশকদের সুবিধা দেয়। |
-| **আপনি আপনার তৈরি করা মেধা সম্পত্তির (IP) মালিক** এবং এটি স্বচ্ছ শর্তাবলী অনুসারে বিতরণ করেন। | **আপনার নিজস্ব প্রতিষ্ঠান আপনার তৈরি করা IP-এর মালিক**। IP অ্যাক্সেস স্বচ্ছ নয়। |
-| **সমস্ত গবেষণা শেয়ার করা**, যার মধ্যে অসফল প্রচেষ্টার ডেটাও অন্তর্ভুক্ত, সমস্ত ধাপ অনচেইনে রেখে। | **প্রকাশনার পক্ষপাতিত্ব** মানে হলো গবেষকরা সফল ফলাফল পেয়েছে এমন পরীক্ষা-নিরীক্ষা শেয়ার করার সম্ভাবনা বেশি। |
+| **ডিসেন্ট্রালাইজড বিজ্ঞান** | **ঐতিহ্যবাহী বিজ্ঞান** |
+| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
+| তহবিলের বন্টন কোয়াড্রেটিক অনুদান বা DAO-এর মতো মেকানিজম ব্যবহার করে **জনসাধারণ দ্বারা নির্ধারিত** হয়। | ছোট, বদ্ধ, **কেন্দ্রীভূত গোষ্ঠীগুলো** তহবিলের বন্টন নিয়ন্ত্রণ করে। |
+| আপনি ডায়নামিক টিমে **সারা বিশ্বের** সহকর্মীদের সাথে সহযোগিতা করতে পারেন। | অর্থায়নকারী সংস্থা এবং নিজস্ব প্রতিষ্ঠান আপনার সহযোগিতাকে **সীমাবদ্ধ** করে। |
+| অর্থায়নের সিদ্ধান্তগুলো অনলাইনে এবং **স্বচ্ছভাবে** নেওয়া হয়। নতুন অর্থায়ন মেকানিজম অন্বেষণ করা হয়। | অর্থায়নের সিদ্ধান্তগুলো দীর্ঘ সময় নিয়ে এবং **সীমিত স্বচ্ছতার** সাথে নেওয়া হয়। খুব কম অর্থায়ন মেকানিজম বিদ্যমান। |
+| [ওয়েব3](/glossary/#web3) প্রযুক্তি ব্যবহার করে ল্যাবরেটরি পরিষেবাগুলো শেয়ার করা আরও সহজ এবং স্বচ্ছ করা হয়েছে। | ল্যাবরেটরি রিসোর্স শেয়ার করা প্রায়শই **ধীর এবং অস্বচ্ছ** হয়। |
+| বিশ্বাস, স্বচ্ছতা এবং সর্বজনীন অ্যাক্সেসের জন্য ওয়েব3 প্রিমিটিভ ব্যবহার করে **প্রকাশনার নতুন মডেল** তৈরি করা যেতে পারে। | আপনি প্রতিষ্ঠিত পথগুলোর মাধ্যমে প্রকাশ করেন যা প্রায়শই **অদক্ষ, পক্ষপাতদুষ্ট এবং শোষণমূলক** হিসেবে স্বীকৃত। |
+| আপনি পিয়ার-রিভিউ কাজের জন্য **টোকেন এবং খ্যাতি অর্জন** করতে পারেন। | আপনার **পিয়ার-রিভিউ কাজ অবৈতনিক**, যা লাভজনক প্রকাশকদের উপকৃত করে। |
+| আপনি যে **ইন্টেলেকচুয়াল প্রপার্টি (IP) তৈরি করেন তার মালিক আপনি** এবং এটি স্বচ্ছ শর্ত অনুযায়ী বিতরণ করেন। | আপনি যে IP তৈরি করেন **তার মালিক আপনার নিজস্ব প্রতিষ্ঠান**। IP-তে অ্যাক্সেস স্বচ্ছ নয়। |
+| সমস্ত পদক্ষেপ অনচেইন রাখার মাধ্যমে ব্যর্থ প্রচেষ্টার ডেটাসহ **সমস্ত গবেষণা শেয়ার করা**। | **প্রকাশনার পক্ষপাতিত্ব** মানে হলো গবেষকরা সফল ফলাফল পাওয়া পরীক্ষাগুলো শেয়ার করার সম্ভাবনা বেশি থাকে। |
-## Ethereum এবং DeSci {#ethereum-and-desci}
+## ইথিরিয়াম এবং DeSci {#ethereum-and-desci}
-একটি বিকেন্দ্রীভূত বিজ্ঞান ব্যবস্থার জন্য প্রয়োজন হবে শক্তিশালী নিরাপত্তা, মিনিমাল মনেটারি এবং লেনদেন খরচসমূহ এবং অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি সমৃদ্ধ ইকোসিস্টেম। Ethereum একটি বিকেন্দ্রীভূত বিজ্ঞান প্রযুক্তি তৈরির জন্য প্রয়োজনীয় সবকিছু সরবরাহ করে।
+একটি ডিসেন্ট্রালাইজড বিজ্ঞান ব্যবস্থার জন্য শক্তিশালী নিরাপত্তা, ন্যূনতম আর্থিক এবং লেনদেন খরচ এবং অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি সমৃদ্ধ ইকোসিস্টেম প্রয়োজন হবে। [ইথিরিয়াম](/) একটি ডিসেন্ট্রালাইজড বিজ্ঞান প্রযুক্তি তৈরির জন্য প্রয়োজনীয় সবকিছু প্রদান করে।
-## DeSci-এর ব্যবহারের ক্ষেত্র {#use-cases}
+## DeSci এর ব্যবহার ক্ষেত্র {#use-cases}
-DeSci ডিজিটাল বিশ্বে প্রচলিত শিক্ষাব্যবস্থাকে অন্তর্ভুক্ত করার জন্য বৈজ্ঞানিক টুলসেট তৈরি করছে। নীচে ব্যবহারের ক্ষেত্রে একটি নমুনা দেওয়া হল যা Web3 বৈজ্ঞানিক সম্প্রদায়কে অফার করতে পারে।
+DeSci ঐতিহ্যবাহী শিক্ষাজগৎকে ডিজিটাল বিশ্বে যুক্ত করার জন্য বৈজ্ঞানিক টুলসেট তৈরি করছে। নিচে ওয়েব3 বৈজ্ঞানিক সম্প্রদায়কে অফার করতে পারে এমন কিছু ব্যবহার ক্ষেত্রের নমুনা দেওয়া হলো।
### প্রকাশনা {#publishing}
-বিজ্ঞান প্রকাশনা বিখ্যাতভাবে সমস্যাযুক্ত কারণ এটি প্রকাশনা সংস্থাগুলির দ্বারা পরিচালিত হয় যেগুলি গবেষণাপত্র তৈরি করতে বিজ্ঞানী, পর্যালোচনাকারী এবং সম্পাদকদের বিনামূল্যে শ্রমের উপর নির্ভর করে কিন্তু তারপরে অতিরিক্ত প্রকাশনা ফি চার্জ করে। জনসাধারণ, যারা সাধারণত পরোক্ষভাবে কাজের জন্য এবং প্রকাশনার খরচ ট্যাক্সের মাধ্যমে পরিশোধ করে থাকে, তারা প্রায়শই প্রকাশককে আবার অর্থ প্রদান না করে একই কাজ অ্যাক্সেস করতে পারে না। স্বতন্ত্র বিজ্ঞানের গবেষণাপত্র প্রকাশের জন্য মোট ফি প্রায়শই পাঁচ অঙ্কের ($USD) হয়, যা প্রকাশকদের একটি ছোট গোষ্ঠীর জন্য বিপুল মুনাফা তৈরি করার সময় বৈজ্ঞানিক জ্ঞানকে একটি [পাবলিক পণ্য](/glossary/#public-goods) হিসাবে সম্পূর্ণ ধারণাকে খর্ব করে।
+বিজ্ঞান প্রকাশনা কুখ্যাতভাবে সমস্যামূলক কারণ এটি এমন প্রকাশনা সংস্থাগুলো দ্বারা পরিচালিত হয় যারা গবেষণাপত্র তৈরি করতে বিজ্ঞানী, পর্যালোচক এবং সম্পাদকদের বিনামূল্যে শ্রমের উপর নির্ভর করে কিন্তু তারপর অত্যধিক প্রকাশনা ফি আদায় করে। জনসাধারণ, যারা সাধারণত করের মাধ্যমে পরোক্ষভাবে কাজ এবং প্রকাশনার খরচের জন্য অর্থ প্রদান করেছে, তারা প্রায়শই প্রকাশককে আবার অর্থ প্রদান না করে সেই একই কাজে অ্যাক্সেস করতে পারে না। স্বতন্ত্র বিজ্ঞান গবেষণাপত্র প্রকাশের মোট ফি প্রায়শই পাঁচ অঙ্কের ($USD) হয়, যা বৈজ্ঞানিক জ্ঞানকে একটি [জনকল্যাণমূলক কাজ](/glossary/#public-goods) হিসেবে বিবেচনা করার পুরো ধারণাকে ক্ষুণ্ন করে এবং প্রকাশকদের একটি ছোট গোষ্ঠীর জন্য বিপুল মুনাফা তৈরি করে।
-প্রি-প্রিন্ট সার্ভার হিসাবে বিনামূল্যে এবং ওপেন-অ্যাক্সেস প্ল্যাটফর্ম বিদ্যমান, [যেমন ArXiv](https://arxiv.org/)। তবে, এই প্ল্যাটফর্মগুলোতে গুণমান নিয়ন্ত্রণ, [অ্যান্টি-সিবিল মেকানিজম](/glossary/#anti-sybil)-এর অভাব রয়েছে এবং সাধারণত আর্টিকেল-স্তরের মেট্রিক ট্র্যাক করে না, যার মানে হলো এগুলো সাধারণত শুধুমাত্র কোনো প্রথাগত প্রকাশকের কাছে জমা দেওয়ার আগে কাজ প্রচার করার জন্য ব্যবহৃত হয়। SciHub প্রকাশিত গবেষণাপত্রগুলিকে বিনামূল্যে অ্যাক্সেসের জন্য তৈরি করে, তবে আইনগতভাবে নয় এবং প্রকাশকরা ইতিমধ্যে তাদের অর্থ গ্রহণ করে এবং কঠোর কপিরাইট আইনে কাজটি মোড়ানোর পরেই। এটি একটি এমবেডেড বৈধতা প্রক্রিয়া এবং প্রণোদনা মডেল সহ অ্যাক্সেসযোগ্য বিজ্ঞান গবেষণাপত্র এবং ডেটার জন্য একটি গুরুত্বপূর্ণ ফাঁক ছেড়ে দেয়। এই ধরনের একটি সিস্টেম তৈরির টুলস Web3-তে বিদ্যমান।
+প্রি-প্রিন্ট সার্ভার আকারে বিনামূল্যে এবং ওপেন-অ্যাক্সেস প্ল্যাটফর্ম বিদ্যমান, [যেমন ArXiv](https://arxiv.org/)। যাইহোক, এই প্ল্যাটফর্মগুলোতে মান নিয়ন্ত্রণ, [অ্যান্টি-সাইবিল মেকানিজম](/glossary/#anti-sybil)-এর অভাব রয়েছে এবং সাধারণত আর্টিকেল-স্তরের মেট্রিক্স ট্র্যাক করে না, যার অর্থ এগুলো সাধারণত ঐতিহ্যবাহী প্রকাশকের কাছে জমা দেওয়ার আগে কাজ প্রচার করার জন্যই ব্যবহৃত হয়। SciHub প্রকাশিত গবেষণাপত্রগুলোতে বিনামূল্যে অ্যাক্সেস দেয়, তবে আইনিভাবে নয়, এবং শুধুমাত্র প্রকাশকরা তাদের অর্থ নেওয়ার পরে এবং কাজটিকে কঠোর কপিরাইট আইনের আওতায় আনার পরেই। এটি একটি এমবেডেড বৈধতা মেকানিজম এবং প্রণোদনা মডেলসহ অ্যাক্সেসযোগ্য বিজ্ঞান গবেষণাপত্র এবং ডেটার জন্য একটি বড় শূন্যতা তৈরি করে। এমন একটি সিস্টেম তৈরির সরঞ্জামগুলো ওয়েব3-তে বিদ্যমান।
-### পুনরুৎপাদনযোগ্যতা এবং অনুলিপিকরণ {#reproducibility-and-replicability}
+### প্রজননযোগ্যতা এবং প্রতিলিপিযোগ্যতা {#reproducibility-and-replicability}
-পুনঃউৎপাদনযোগ্যতা এবং প্রতিলিপিযোগ্যতা মানসম্পন্ন বৈজ্ঞানিক আবিষ্কারের ভিত্তি।
+প্রজননযোগ্যতা এবং প্রতিলিপিযোগ্যতা হলো মানসম্পন্ন বৈজ্ঞানিক আবিষ্কারের ভিত্তি।
-- একই পদ্ধতি ব্যবহার করে একই দল দ্বারা এক সারিতে একাধিকবার পুনোৎপাদনযোগ্য ফলাফল অর্জন করা যেতে পারে।
-- একই পরীক্ষামূলক সেটআপ ব্যবহার করে একটি ভিন্ন গ্রুপ দ্বারা প্রতিলিপিযোগ্য ফলাফল অর্জন করা যেতে পারে।
+- একই পদ্ধতি ব্যবহার করে একই দল দ্বারা পরপর একাধিকবার প্রজননযোগ্য ফলাফল অর্জন করা যেতে পারে।
+- একই পরীক্ষামূলক সেটআপ ব্যবহার করে একটি ভিন্ন গোষ্ঠী দ্বারা প্রতিলিপিযোগ্য ফলাফল অর্জন করা যেতে পারে।
-নতুন Web3-নেটিভ টুলস নিশ্চিত করতে পারে যে পুনঃউৎপাদনযোগ্যতা এবং প্রতিলিপিযোগ্যতা আবিষ্কারের ভিত্তি। আমরা একাডেমিয়ার প্রযুক্তিগত ফ্যাব্রিকে মানসম্পন্ন বিজ্ঞান বুনতে পারি। Web3 প্রতিটি বিশ্লেষণ উপাদানের জন্য [অ্যাটেস্টেশন](/glossary/#attestation) তৈরি করার ক্ষমতা প্রদান করে: কাঁচা ডেটা, কম্পিউটেশনাল ইঞ্জিন এবং অ্যাপ্লিকেশন ফলাফল। কনসেনসাস সিস্টেমের সৌন্দর্য হল যে যখন এই উপাদানগুলি বজায় রাখার জন্য একটি বিশ্বস্ত নেটওয়ার্ক তৈরি করা হয়, তখন প্রতিটি নেটওয়ার্ক অংশগ্রহণকারী গণনা পুনরুত্পাদন এবং প্রতিটি ফলাফল যাচাই করার জন্য দায়ী হতে পারে।
+নতুন ওয়েব3-নেটিভ সরঞ্জামগুলো নিশ্চিত করতে পারে যে প্রজননযোগ্যতা এবং প্রতিলিপিযোগ্যতা আবিষ্কারের ভিত্তি। আমরা শিক্ষাজগতের প্রযুক্তিগত কাঠামোতে মানসম্পন্ন বিজ্ঞান বুনতে পারি। ওয়েব3 প্রতিটি বিশ্লেষণ উপাদানের জন্য [এটেস্টেশন](/glossary/#attestation) তৈরি করার ক্ষমতা প্রদান করে: কাঁচা ডেটা, কম্পিউটেশনাল ইঞ্জিন এবং অ্যাপ্লিকেশন ফলাফল। কনসেন্সাস সিস্টেমের সৌন্দর্য হলো যখন এই উপাদানগুলো বজায় রাখার জন্য একটি বিশ্বস্ত নেটওয়ার্ক তৈরি করা হয়, তখন প্রতিটি নেটওয়ার্ক অংশগ্রহণকারী গণনাটি পুনরুৎপাদন এবং প্রতিটি ফলাফল যাচাই করার জন্য দায়ী হতে পারে।
-### অর্থায়ন {#funding}
+### অর্থায়ন {#funding}
-অর্থায়ন বিজ্ঞানের বর্তমান আদর্শ মডেল হল যে ব্যক্তি বা বিজ্ঞানীদের দল একটি অর্থায়ন সংস্থার কাছে লিখিত আবেদন করে। বিশ্বস্ত ব্যক্তিদের একটি ছোট প্যানেল আবেদনগুলি স্কোর করে এবং তারপর আবেদনকারীদের একটি ছোট অংশকে ফান্ড দেওয়ার আগে প্রার্থীদের সাক্ষাৎকার নেয়। অনুদান আবেদন এবং প্রাপ্তির মধ্যে বাধা তৈরি করার ফলে মাঝে মাঝে **বছরের পর বছর অপেক্ষা** করতে হয়, এর বাইরেও এই মডেলটি রিভিউ প্যানেলের **পক্ষপাত, স্বার্থপরতা এবং রাজনীতির প্রতি অত্যন্ত দুর্বল** বলে পরিচিত।
+বিজ্ঞান অর্থায়নের বর্তমান স্ট্যান্ডার্ড মডেল হলো বিজ্ঞানী বা বিজ্ঞানীদের দল একটি অর্থায়নকারী সংস্থার কাছে লিখিত আবেদন করে। বিশ্বস্ত ব্যক্তিদের একটি ছোট প্যানেল আবেদনগুলোকে স্কোর করে এবং তারপর আবেদনকারীদের একটি ছোট অংশকে তহবিল দেওয়ার আগে প্রার্থীদের সাক্ষাৎকার নেয়। আবেদন করা এবং অনুদান পাওয়ার মধ্যে কখনও কখনও **বছরের পর বছর অপেক্ষার** সময় তৈরি করার পাশাপাশি, এই মডেলটি পর্যালোচনা প্যানেলের **পক্ষপাতিত্ব, স্বার্থপরতা এবং রাজনীতির প্রতি অত্যন্ত ঝুঁকিপূর্ণ** বলে পরিচিত।
-গবেষণায় দেখা গেছে যে অনুদান পর্যালোচনা প্যানেলগুলি উচ্চ-মানের প্রস্তাবগুলি নির্বাচনে একটি ত্রুটিপূর্ণ কাজ করে কারণ বিভিন্ন প্যানেলে দেওয়া একই প্রস্তাবগুলির সম্পূর্ণ ভিন্ন ফলাফল রয়েছে। যেহেতু তহবিল আরও দুষ্প্রাপ্য হয়ে উঠেছে, এটি আরও বুদ্ধিবৃত্তিকভাবে রক্ষণশীল প্রকল্পের সাথে আরও সিনিয়র গবেষকদের একটি ছোট পুলে কেন্দ্রীভূত হয়েছে। প্রভাবটি একটি অতি-প্রতিযোগীতামূলক অর্থায়নের ল্যান্ডস্কেপ তৈরি করেছে, বিকৃত প্রণোদনা এবং উদ্ভাবনকে দমিয়ে দিয়েছে।
+গবেষণায় দেখা গেছে যে অনুদান পর্যালোচনা প্যানেলগুলো উচ্চ-মানের প্রস্তাবগুলো নির্বাচন করার ক্ষেত্রে খারাপ কাজ করে কারণ বিভিন্ন প্যানেলকে দেওয়া একই প্রস্তাবগুলোর সম্পূর্ণ ভিন্ন ফলাফল হয়। তহবিল আরও দুষ্প্রাপ্য হওয়ার সাথে সাথে, এটি আরও বুদ্ধিবৃত্তিকভাবে রক্ষণশীল প্রকল্পসহ আরও সিনিয়র গবেষকদের একটি ছোট পুলে কেন্দ্রীভূত হয়েছে। এর প্রভাব একটি অতি-প্রতিযোগিতামূলক অর্থায়নের ল্যান্ডস্কেপ তৈরি করেছে, যা বিকৃত প্রণোদনাকে সুসংহত করে এবং উদ্ভাবনকে বাধাগ্রস্ত করে।
-DAO এবং Web3 ব্যাপকভাবে তৈরি করা বিভিন্ন প্রণোদনা মডেল নিয়ে পরীক্ষা-নিরীক্ষা করে Web3-এর এই ভাঙা অর্থায়ন মডেলটিকে ব্যাহত করার সম্ভাবনা রয়েছে। [রেট্রোঅ্যাকটিভ পাবলিক পণ্য অর্থায়ন](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [কোয়াড্রেটিক অর্থায়ন](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [DAO গভর্নেন্স](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead) এবং [টোকেনাইজড প্রণোদনা কাঠামো](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design) হল Web3-এর কিছু টুল যা বিজ্ঞান অর্থায়নে বিপ্লব ঘটাতে পারে।
+DAO এবং বিস্তৃতভাবে ওয়েব3 দ্বারা তৈরি বিভিন্ন প্রণোদনা মডেল নিয়ে পরীক্ষা-নিরীক্ষা করে ওয়েব3 এই ভাঙা অর্থায়ন মডেলটিকে ব্যাহত করার সম্ভাবনা রাখে। [রেট্রোঅ্যাক্টিভ পাবলিক গুডস ফান্ডিং](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [কোয়াড্রেটিক ফান্ডিং](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [DAO গভর্নেন্স](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead) এবং [টোকেনাইজড ইনসেনটিভ স্ট্রাকচার](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design) হলো কিছু ওয়েব3 সরঞ্জাম যা বিজ্ঞান অর্থায়নে বিপ্লব ঘটাতে পারে।
-### IP মালিকানা এবং উন্নয়ন {#ip-ownership}
+### আইপি মালিকানা এবং উন্নয়ন {#ip-ownership}
-বুদ্ধিবৃত্তিক সম্পত্তি (IP) গতানুগতিক বিজ্ঞানের একটি বড় সমস্যা: বিশ্ববিদ্যালয়গুলিতে আটকে থাকা থেকে বা বায়োটেকগুলিতে অব্যবহৃত হওয়া, মূল্যায়ন হতে খুবই কঠিন। তবে, ডিজিটাল সম্পদের মালিকানা (যেমন বৈজ্ঞানিক ডেটা বা নিবন্ধ) এমন একটি বিষয় যা Web3 [নন-ফাঞ্জিবল টোকেন (NFTs)](/glossary/#nft) ব্যবহার করে ব্যতিক্রমীভাবে ভালো করে।
+ঐতিহ্যবাহী বিজ্ঞানে ইন্টেলেকচুয়াল প্রপার্টি (IP) একটি বড় সমস্যা: বিশ্ববিদ্যালয়গুলোতে আটকে থাকা বা বায়োটেকগুলোতে অব্যবহৃত হওয়া থেকে শুরু করে, এর মূল্য নির্ধারণ করা কুখ্যাতভাবে কঠিন। যাইহোক, ডিজিটাল সম্পদের মালিকানা (যেমন বৈজ্ঞানিক ডেটা বা আর্টিকেল) এমন একটি বিষয় যা ওয়েব3 [নন-ফান্জেবল টোকেন (NFTs)](/glossary/#nft) ব্যবহার করে ব্যতিক্রমীভাবে ভালোভাবে করে।
-যেভাবে NFT ভবিষ্যতের লেনদেনের জন্য মূল নির্মাতার কাছে মুনাফা পাঠাতে পারে, আপনি গবেষক, গভর্নিং বডিস (যেমন DAO) বা এমনকি যাদের ডেটা সংগ্রহ করা হয়েছে তাদের পুরস্কৃত করার জন্য আপনি স্বচ্ছ মান অ্যাট্রিবিউশন চেইন স্থাপন করতে পারেন।
+যেভাবে NFT-গুলো ভবিষ্যতের লেনদেনের জন্য মূল স্রষ্টার কাছে রাজস্ব ফেরত পাঠাতে পারে, ঠিক একইভাবে আপনি গবেষক, গভর্নিং বডি (যেমন DAO), বা এমনকি যাদের ডেটা সংগ্রহ করা হয়েছে তাদের পুরস্কৃত করার জন্য স্বচ্ছ ভ্যালু অ্যাট্রিবিউশন চেইন স্থাপন করতে পারেন।
-[IP-NFTs](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) পরিচালিত গবেষণা পরীক্ষার একটি বিকেন্দ্রীভূত ডেটা ভান্ডারের চাবি হিসাবেও কাজ করতে পারে, এবং NFT ও [DeFi](/glossary/#defi) আর্থিকীকরণের (ফ্র্যাকশনালাইজেশন থেকে শুরু করে লেন্ডিং পুল এবং ভ্যালু অ্যাপ্রেইজাল পর্যন্ত) সাথে যুক্ত হতে পারে। এটি [VitaDAO](https://www.vitadao.com/)-এর মতো DAO-এর মতো স্থানীয়ভাবে অনচেইন সত্তাগুলোকে সরাসরি অনচেইনে গবেষণা পরিচালনা করার অনুমতি দেয়।
-অ-হস্তান্তরযোগ্য ["সোলবাউন্ড" টোকেন](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)-এর আবির্ভাবও DeSci-এ একটি গুরুত্বপূর্ণ ভূমিকা পালন করতে পারে, যা ব্যক্তিদের তাদের Ethereum ঠিকানার সাথে যুক্ত তাদের অভিজ্ঞতা এবং প্রমাণপত্র প্রমাণ করার অনুমতি দেয়।
+[IP-NFTs](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) পরিচালিত গবেষণা পরীক্ষাগুলোর একটি ডিসেন্ট্রালাইজড ডেটা রিপোজিটরির চাবিকাঠি হিসেবেও কাজ করতে পারে এবং NFT এবং [DeFi](/glossary/#defi) ফাইন্যান্সিয়ালাইজেশনে (ভগ্নাংশকরণ থেকে শুরু করে লেন্ডিং পুল এবং ভ্যালু অ্যাপ্রাইজাল পর্যন্ত) যুক্ত হতে পারে। এটি [VitaDAO](https://www.vitadao.com/)-এর মতো DAO-এর মতো নেটিভভাবে অনচেইন সত্তাগুলোকে সরাসরি অনচেইন গবেষণা পরিচালনা করার অনুমতি দেয়।
+অ-হস্তান্তরযোগ্য ["সোলবাউন্ড" টোকেন](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)-এর আবির্ভাব ব্যক্তিদের তাদের ইথিরিয়াম এডড্রেস-এর সাথে যুক্ত তাদের অভিজ্ঞতা এবং প্রমাণপত্র প্রমাণ করার অনুমতি দিয়ে DeSci-তে একটি গুরুত্বপূর্ণ ভূমিকা পালন করতে পারে।
### ডেটা স্টোরেজ, অ্যাক্সেস এবং আর্কিটেকচার {#data-storage}
-Web3 প্যাটার্ন ব্যবহার করে বৈজ্ঞানিক ডেটা আরও বেশি অ্যাক্সেসযোগ্য করা যেতে পারে এবং বিতরণ করা স্টোরেজ বিপর্যয়মূলক ঘটনা থেকে বাঁচতে গবেষণাকে সক্ষম করে।
+ওয়েব3 প্যাটার্ন ব্যবহার করে বৈজ্ঞানিক ডেটাকে ব্যাপকভাবে আরও অ্যাক্সেসযোগ্য করা যেতে পারে এবং ডিস্ট্রিবিউটেড স্টোরেজ গবেষণাকে বিপর্যয়কর ঘটনা থেকে বাঁচতে সক্ষম করে।
-শুরুর জায়গা অবশ্যই একটি সিস্টেম হতে হবে যা সঠিক যাচাইযোগ্য শংসাপত্র ধারণ করে কোনো বিকেন্দ্রীভূত পরিচয় দ্বারা অ্যাক্সেসযোগ্য। এটি সংবেদনশীল ডেটা বিশ্বস্ত পক্ষগুলির দ্বারা সুরক্ষিতভাবে প্রতিলিপি করার অনুমতি দেয়, অপ্রয়োজনীয়তা এবং সেন্সরশিপ প্রতিরোধ, ফলাফলের পুনঃউৎপাদন এবং এমনকি একাধিক পক্ষের সহযোগিতা এবং ডেটাসেটে নতুন ডেটা যোগ করার ক্ষমতা সক্ষম করে। [কম্পিউট-টু-ডেটা](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol)-এর মতো গোপনীয় কম্পিউটিং পদ্ধতিগুলো কাঁচা ডেটা প্রতিলিপির জন্য বিকল্প অ্যাক্সেস পদ্ধতি সরবরাহ করে, যা সবচেয়ে সংবেদনশীল ডেটার জন্য বিশ্বস্ত গবেষণা পরিবেশ তৈরি করে। বিশ্বস্ত গবেষণা পরিবেশগুলিকে ডেটা গোপনীয়তা এবং সহযোগিতার জন্য একটি ভবিষ্যৎ-মুখী সমাধান হিসাবে [NHS দ্বারা উদ্ধৃত করা হয়েছে](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb), যা একটি ইকোসিস্টেম তৈরি করে যেখানে গবেষকরা কোড এবং অনুশীলন ভাগ করার জন্য প্রমিত পরিবেশ ব্যবহার করে সাইটে ডেটা নিয়ে নিরাপদে কাজ করতে পারেন।
+শুরুর পয়েন্টটি অবশ্যই এমন একটি সিস্টেম হতে হবে যা সঠিক যাচাইযোগ্য প্রমাণপত্র ধারণকারী যেকোনো ডিসেন্ট্রালাইজড আইডেন্টিটি দ্বারা অ্যাক্সেসযোগ্য। এটি সংবেদনশীল ডেটাকে বিশ্বস্ত পক্ষগুলোর দ্বারা নিরাপদে প্রতিলিপি করার অনুমতি দেয়, যা রিডানডেন্সি এবং সেন্সরশিপ প্রতিরোধ, ফলাফলের পুনরুৎপাদন এবং এমনকি একাধিক পক্ষের সহযোগিতা করার এবং ডেটাসেটে নতুন ডেটা যোগ করার ক্ষমতা সক্ষম করে। [কম্পিউট-টু-ডেটা](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol)-এর মতো গোপনীয় কম্পিউটিং পদ্ধতিগুলো কাঁচা ডেটা প্রতিলিপির বিকল্প অ্যাক্সেস মেকানিজম প্রদান করে, যা সবচেয়ে সংবেদনশীল ডেটার জন্য বিশ্বস্ত গবেষণা পরিবেশ (Trusted Research Environments) তৈরি করে। কোড এবং অনুশীলন শেয়ার করার জন্য প্রমিত পরিবেশ ব্যবহার করে গবেষকরা যেখানে নিরাপদে অন-সাইট ডেটা নিয়ে কাজ করতে পারে এমন একটি ইকোসিস্টেম তৈরি করে ডেটা গোপনীয়তা এবং সহযোগিতার জন্য একটি ভবিষ্যৎমুখী সমাধান হিসেবে বিশ্বস্ত গবেষণা পরিবেশগুলোকে [NHS দ্বারা উল্লেখ করা হয়েছে](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb)।
-ফ্লেক্সিবল Web3 ডেটা সলিউশন উপরের পরিস্থিতিগুলিকে সমর্থন করে এবং সত্যিকারের ওপেন সায়েন্সের ভিত্তি প্রদান করে, যেখানে গবেষকরা অ্যাক্সেসের অনুমতি বা ফি ছাড়াই পাবলিক পণ্য তৈরি করতে পারেন। Web3 পাবলিক ডেটা সলিউশন যেমন IPFS, Arweave এবং Filecoin বিকেন্দ্রীকরণের জন্য অপ্টিমাইজ করা হয়েছে। dClimate, উদাহরণস্বরূপ, আবহাওয়া স্টেশন এবং ভবিষ্যদ্বাণীমূলক জলবায়ু মডেল সহ জলবায়ু ও আবহাওয়া ডেটাতে সর্বজনীন অ্যাক্সেস প্রদান করে।
+নমনীয় ওয়েব3 ডেটা সমাধানগুলো উপরের পরিস্থিতিগুলোকে সমর্থন করে এবং সত্যিকারের উন্মুক্ত বিজ্ঞানের (Open Science) ভিত্তি প্রদান করে, যেখানে গবেষকরা অ্যাক্সেস অনুমতি বা ফি ছাড়াই জনকল্যাণমূলক কাজ তৈরি করতে পারে। IPFS, Arweave এবং Filecoin-এর মতো ওয়েব3 পাবলিক ডেটা সমাধানগুলো ডিসেন্ট্রালাইজেশন-এর জন্য অপ্টিমাইজ করা হয়েছে। dClimate, উদাহরণস্বরূপ, আবহাওয়া স্টেশন এবং ভবিষ্যদ্বাণীমূলক জলবায়ু মডেলসহ জলবায়ু এবং আবহাওয়ার ডেটাতে সর্বজনীন অ্যাক্সেস প্রদান করে।
-## জড়িত হন {#get-involved}
+## যুক্ত হোন {#get-involved}
-প্রকল্পগুলি ঘুরে দেখুন করুন এবং DeSci কমিউনিটিতে যোগ দিন।
+প্রকল্পগুলো অন্বেষণ করুন এবং DeSci সম্প্রদায়ে যোগ দিন।
-- [DeSci.Global: বিশ্বব্যাপী ইভেন্ট এবং মিটআপ ক্যালেন্ডার](https://desci.global)
-- [বিজ্ঞানের জন্য ব্লকচেইন টেলিগ্রাম](https://t.me/BlockchainForScience)
-- [Molecule: আপনার গবেষণা প্রকল্পগুলোর জন্য অর্থায়ন করুন এবং অর্থায়ন পান](https://www.molecule.xyz/)
-- [VitaDAO: দীর্ঘায়ু গবেষণার জন্য স্পনসর করা গবেষণা চুক্তির মাধ্যমে অর্থায়ন গ্রহণ করুন](https://www.vitadao.com/)
+- [DeSci.Global: বৈশ্বিক ইভেন্ট এবং মিটআপ ক্যালেন্ডার](https://desci.global)
+- [Blockchain for Science টেলিগ্রাম](https://t.me/BlockchainForScience)
+- [Molecule: আপনার গবেষণা প্রকল্পগুলোর জন্য অর্থায়ন করুন এবং অর্থায়ন পান](https://www.molecule.xyz/)
+- [VitaDAO: দীর্ঘায়ু গবেষণার জন্য স্পনসর করা গবেষণা চুক্তির মাধ্যমে অর্থায়ন পান](https://www.vitadao.com/)
- [ResearchHub: একটি বৈজ্ঞানিক ফলাফল পোস্ট করুন এবং সহকর্মীদের সাথে কথোপকথনে নিযুক্ত হন](https://www.researchhub.com/)
-- [dClimate API: একটি বিকেন্দ্রীভূত সম্প্রদায় দ্বারা সংগৃহীত জলবায়ু ডেটা জিজ্ঞাসা করুন](https://www.dclimate.net/)
-- [DeSci Foundation: DeSci প্রকাশনা টুল নির্মাতা](https://descifoundation.org/)
-- [DeSci.World: ব্যবহারকারীদের বিকেন্দ্রীভূত বিজ্ঞান দেখতে এবং তার সাথে যুক্ত হওয়ার জন্য ওয়ান-স্টপ শপ](https://desci.world)
-- [OceanDAO: ডেটা-সম্পর্কিত বিজ্ঞানের জন্য DAO দ্বারা পরিচালিত অর্থায়ন](https://oceanprotocol.com/)
-- [Opscientia: উন্মুক্ত বিকেন্দ্রীভূত বিজ্ঞান কর্মপ্রবাহ](https://opsci.io/research/)
-- [Bio.xyz: আপনার বায়োটেক DAO বা desci প্রকল্পের জন্য অর্থায়ন পান](https://www.bio.xyz/)
+- [dClimate API: একটি ডিসেন্ট্রালাইজড সম্প্রদায় দ্বারা সংগৃহীত জলবায়ু ডেটা অনুসন্ধান করুন](https://www.dclimate.net/)
+- [DeSci Foundation: DeSci প্রকাশনা সরঞ্জাম নির্মাতা](https://descifoundation.org/)
+- [DeSci.World: ব্যবহারকারীদের ডিসেন্ট্রালাইজড বিজ্ঞান দেখার এবং এর সাথে যুক্ত হওয়ার জন্য ওয়ান-স্টপ শপ](https://desci.world)
+- [OceanDAO: ডেটা-সম্পর্কিত বিজ্ঞানের জন্য DAO নিয়ন্ত্রিত অর্থায়ন](https://oceanprotocol.com/)
+- [Opscientia: উন্মুক্ত ডিসেন্ট্রালাইজড বিজ্ঞান ওয়ার্কফ্লো](https://opsci.io/research/)
+- [Bio.xyz: আপনার বায়োটেক DAO বা desci প্রকল্পের জন্য অর্থায়ন পান](https://www.bio.xyz/)
- [Active Inference Institute](https://www.activeinference.org/)
-- [IdeaMarkets: বিকেন্দ্রীভূত বৈজ্ঞানিক বিশ্বাসযোগ্যতা সক্ষম করা](https://ideamarket.io/)
+- [IdeaMarkets: ডিসেন্ট্রালাইজড বৈজ্ঞানিক বিশ্বাসযোগ্যতা সক্ষম করা](https://ideamarket.io/)
- [DeSci Labs](https://www.desci.com/)
-- [ValleyDAO: একটি উন্মুক্ত, বিশ্বব্যাপী সম্প্রদায় যা সিন্থেটিক বায়োলজি গবেষণার জন্য অর্থায়ন এবং ট্রান্সলেশনাল সহায়তা প্রদান করে](https://www.valleydao.bio)
-- [Cerebrum DAO: মস্তিষ্কের স্বাস্থ্যের উন্নতি এবং নিউরোডিজেনারেশন প্রতিরোধের জন্য সমাধান খোঁজা এবং পরিচর্যা করা](https://www.cerebrumdao.com/)
-- [CryoDAO: ক্রায়োপ্রিজারভেশন ক্ষেত্রে মুনশট গবেষণার জন্য অর্থায়ন](https://www.cryodao.org)
-- [Elata: মনোরোগ সংক্রান্ত ওষুধের ভবিষ্যতে আপনার মতামত দিন](https://www.elata.bio/)
+- [ValleyDAO: সিন্থেটিক বায়োলজি গবেষণার জন্য অর্থায়ন এবং অনুবাদমূলক সহায়তা প্রদানকারী একটি উন্মুক্ত, বৈশ্বিক সম্প্রদায়](https://www.valleydao.bio)
+- [Cerebrum DAO: মস্তিষ্কের স্বাস্থ্যের উন্নতি এবং নিউরোডিজেনারেশন প্রতিরোধের জন্য সমাধানগুলো সোর্সিং এবং লালনপালন করা](https://www.cerebrumdao.com/)
+- [CryoDAO: ক্রায়োপ্রিজারভেশন ক্ষেত্রে মুনশট গবেষণায় অর্থায়ন করা](https://www.cryodao.org)
+- [Elata: এমন একটি প্ল্যাটফর্ম যেখানে আপনার মস্তিষ্ক দৈনন্দিন অ্যাপগুলোকে শক্তি দেয়](https://www.elata.bio/)
-আমরা তালিকাভুক্ত করার জন্য নতুন প্রকল্পের পরামর্শকে স্বাগত জানাই - শুরু করতে অনুগ্রহ করে আমাদের [তালিকা নীতি](/contributing/adding-desci-projects/) দেখুন!
+আমরা তালিকাভুক্ত করার জন্য নতুন প্রকল্পগুলোর পরামর্শকে স্বাগত জানাই - শুরু করতে অনুগ্রহ করে আমাদের [তালিকাভুক্তি নীতি](/contributing/adding-desci-projects/) দেখুন!
## আরও পড়ুন {#further-reading}
-- [DeSci Wiki by Jocelynn Pearl and Ultrarare](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#)
-- [a16z future-এর জন্য Jocelynn Pearl দ্বারা বিকেন্দ্রীভূত বায়োটেকের একটি গাইড](https://future.a16z.com/a-guide-to-decentralized-biotech/)
-- [DeSci-এর জন্য কেস](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/)
-- [DeSci-এর জন্য নির্দেশিকা](https://future.com/what-is-decentralized-science-aka-desci/)
-- [বিকেন্দ্রীভূত বিজ্ঞান রিসোর্স](https://www.vincentweisser.com/desci)
-- [Molecule’s Biopharma IP-NFTs - একটি প্রযুক্তিগত বর্ণনা](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description)
+- [Jocelynn Pearl এবং Ultrarare দ্বারা DeSci উইকি](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#)
+- [a16z future-এর জন্য Jocelynn Pearl দ্বারা ডিসেন্ট্রালাইজড বায়োটেকের একটি গাইড](https://future.a16z.com/a-guide-to-decentralized-biotech/)
+- [DeSci-এর পক্ষে যুক্তি](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/)
+- [DeSci গাইড](https://future.com/what-is-decentralized-science-aka-desci/)
+- [ডিসেন্ট্রালাইজড বিজ্ঞান রিসোর্স](https://www.vincentweisser.com/desci)
+- [Molecule-এর বায়োফার্মা IP-NFTs - একটি প্রযুক্তিগত বিবরণ](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description)
- [Jon Starr দ্বারা বিজ্ঞানের ট্রাস্টলেস সিস্টেম তৈরি করা](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673)
-- [Paul Kohlhaas - DeSci: বিকেন্দ্রীভূত বিজ্ঞানের ভবিষ্যৎ (পডকাস্ট)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a)
-- [বিকেন্দ্রীভূত বিজ্ঞানের জন্য একটি সক্রিয় অনুমান অন্টোলজি: সিচুয়েটেড সেন্সমেকিং থেকে এপিস্টেমিক কমন্স পর্যন্ত](https://zenodo.org/record/6320575)
+- [Paul Kohlhaas - DeSci: ডিসেন্ট্রালাইজড বিজ্ঞানের ভবিষ্যৎ (পডকাস্ট)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a)
+- [ডিসেন্ট্রালাইজড বিজ্ঞানের জন্য একটি অ্যাক্টিভ ইনফারেন্স অনটোলজি: সিচুয়েটেড সেন্সমেকিং থেকে এপিস্টেমিক কমন্স পর্যন্ত](https://zenodo.org/record/6320575)
- [DeSci: Samuel Akinosho দ্বারা গবেষণার ভবিষ্যৎ](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec)
-- [নাদিয়ার সায়েন্স ফান্ডিং (এপিলগ: DeSci এবং নতুন ক্রিপ্টো প্রিমিটিভস)](https://nadia.xyz/science-funding)
-- [বিকেন্দ্রীকরণ ওষুধের উন্নয়নে বাধা সৃষ্টি করছে](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f)
-- [DeSci – বিকেন্দ্রীভূত বিজ্ঞান কি?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/)
+- [বিজ্ঞান অর্থায়ন (উপসংহার: DeSci এবং নতুন ক্রিপ্টো প্রিমিটিভস) Nadia দ্বারা](https://nadia.xyz/science-funding)
+- [ডিসেন্ট্রালাইজেশন ওষুধ উন্নয়নকে ব্যাহত করছে](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f)
+- [DeSci কী – ডিসেন্ট্রালাইজড বিজ্ঞান?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/)
### ভিডিও {#videos}
-- [বিকেন্দ্রীভূত বিজ্ঞান কি?](https://www.youtube.com/watch?v=-DeMklVWNdA)
-- [দীর্ঘায়ু গবেষণা এবং ক্রিপ্টোর ছেদ সম্পর্কে Vitalik Buterin এবং বিজ্ঞানী Aubrey de Grey-এর মধ্যে কথোপকথন](https://www.youtube.com/watch?v=x9TSJK1widA)
-- বৈজ্ঞানিক প্রকাশনা ভেঙে গেছে। Web3 কি এটি ঠিক করতে পারে?](https://www.youtube.com/watch?v=WkvzYgCvWj8)
+- [ডিসেন্ট্রালাইজড বিজ্ঞান কী?](https://www.youtube.com/watch?v=-DeMklVWNdA)
+- [দীর্ঘায়ু গবেষণা এবং ক্রিপ্টোর সংযোগস্থল সম্পর্কে Vitalik Buterin এবং বিজ্ঞানী Aubrey de Grey-এর মধ্যে কথোপকথন](https://www.youtube.com/watch?v=x9TSJK1widA)
+- [বৈজ্ঞানিক প্রকাশনা ভেঙে পড়েছে। ওয়েব3 কি এটি ঠিক করতে পারে?](https://www.youtube.com/watch?v=WkvzYgCvWj8)
- [Juan Benet - DeSci, স্বাধীন ল্যাব এবং বড় আকারের ডেটা সায়েন্স](https://www.youtube.com/watch?v=zkXM9H90g_E)
-- [Sebastian Brunemeier - কিভাবে DeSci বায়োমেডিকাল গবেষণা এবং ভেঞ্চার ক্যাপিটালকে রূপান্তরিত করতে পারে](https://www.youtube.com/watch?v=qB4Tc3FcVbM)
-- [Paige Donner - Web3 এবং ব্লকচেইন দিয়ে ওপেন সায়েন্স টুলিং](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s)
+- [Sebastian Brunemeier - কীভাবে DeSci বায়োমেডিকেল গবেষণা এবং ভেঞ্চার ক্যাপিটালকে রূপান্তর করতে পারে](https://www.youtube.com/watch?v=qB4Tc3FcVbM)
+- [Paige Donner - ওয়েব3 এবং ব্লকচেইনের সাথে ওপেন সায়েন্স টুলিং](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/accounts/index.md b/public/content/translations/bn/developers/docs/accounts/index.md
index 9ae5500b307..74b3b0f8926 100644
--- a/public/content/translations/bn/developers/docs/accounts/index.md
+++ b/public/content/translations/bn/developers/docs/accounts/index.md
@@ -1,82 +1,82 @@
---
-title: "ইথেরিয়াম অ্যাকাউন্ট"
-description: "ইথেরিয়াম অ্যাকাউন্টের একটি ব্যাখ্যা – তাদের ডেটা স্ট্রাকচার এবং কী পেয়ার ক্রিপ্টোগ্রাফির সাথে তাদের সম্পর্ক।"
+title: ইথিরিয়াম একাউন্ট
+description: ইথিরিয়াম একাউন্টের একটি ব্যাখ্যা – এদের ডাটা স্ট্রাকচার এবং কি পেয়ার ক্রিপ্টোগ্রাফির সাথে এদের সম্পর্ক।
lang: bn
---
-একটি ইথেরিয়াম অ্যাকাউন্ট হল ইথার (ETH) ব্যালেন্স সহ একটি সত্তা যা ইথেরিয়াম-এ বার্তা পাঠাতে পারে। অ্যাকাউন্ট ব্যবহারকারী-নিয়ন্ত্রিত হতে পারে বা স্মার্ট কন্ট্র্যাক্ট হিসাবে স্থাপন করা যেতে পারে।
+একটি [ইথিরিয়াম](/) একাউন্ট হলো ইথার (ETH) ব্যালেন্স যুক্ত একটি সত্তা যা ইথিরিয়ামে মেসেজ পাঠাতে পারে। একাউন্টগুলো ব্যবহারকারী দ্বারা নিয়ন্ত্রিত হতে পারে অথবা স্মার্ট কন্ট্রাক্ট হিসেবে ডিপ্লয় করা যেতে পারে।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আপনাকে আরও ভালভাবে বুঝতে সাহায্য করার জন্য, আমরা আপনাকে প্রথমে আমাদের [ইথেরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ার পরামর্শ দিই।
+এই পেজটি ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি প্রথমে আমাদের [ইথিরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ে নেওয়ার।
-## অ্যাকাউন্টের প্রকারভেদ {#types-of-account}
+## একাউন্টের ধরন {#types-of-account}
-ইথেরিয়ামের দুটি অ্যাকাউন্টের প্রকারভেদ আছে:
+ইথিরিয়ামে দুই ধরনের একাউন্ট রয়েছে:
-- এক্সটারনালি-ওনড অ্যাকাউন্ট (EOA) – ব্যক্তিগত কী আছে এমন যে কেউ দ্বারা নিয়ন্ত্রিত
-- কন্ট্র্যাক্ট অ্যাকাউন্ট – নেটওয়ার্কে স্থাপন করা একটি স্মার্ট কন্ট্র্যাক্ট, যা কোড দ্বারা নিয়ন্ত্রিত। [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) সম্পর্কে জানুন
+- এক্সটার্নালি ওনড একাউন্ট (EOA) – প্রাইভেট কি আছে এমন যে কারো দ্বারা নিয়ন্ত্রিত
+- কন্ট্রাক্ট একাউন্ট – নেটওয়ার্কে ডিপ্লয় করা একটি স্মার্ট কন্ট্রাক্ট, যা কোড দ্বারা নিয়ন্ত্রিত। [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) সম্পর্কে জানুন
-উভয় প্রকারের অ্যাকাউন্টের ক্ষমতা আছে:
+উভয় ধরনের একাউন্টেরই যে সক্ষমতা রয়েছে:
-- ETH এবং টোকেন গ্রহণ, ধরে রাখা এবং পাঠানো
-- স্থাপিত স্মার্ট কন্ট্র্যাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করা
+- ETH এবং টোকেন গ্রহণ, ধারণ এবং প্রেরণ করা
+- ডিপ্লয় করা স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করা
### মূল পার্থক্য {#key-differences}
-**এক্সটারনালি-ওনড**
+**এক্সটার্নালি ওনড**
-- একটি অ্যাকাউন্ট তৈরি করতে কোন খরচ হয় না
+- একাউন্ট তৈরি করতে কোনো খরচ নেই
- লেনদেন শুরু করতে পারে
-- এক্সটারনালি-ওনড অ্যাকাউন্টগুলোর মধ্যে লেনদেন শুধুমাত্র ETH/টোকেন স্থানান্তর হতে পারে
-- ক্রিপ্টোগ্রাফিক কী-এর একটি জোড়া দিয়ে গঠিত: পাবলিক এবং প্রাইভেট কী যা অ্যাকাউন্টের কার্যকলাপ নিয়ন্ত্রণ করে
+- এক্সটার্নালি ওনড একাউন্টগুলোর মধ্যে লেনদেন শুধুমাত্র ETH/টোকেন ট্রান্সফার হতে পারে
+- ক্রিপ্টোগ্রাফিক কি পেয়ার দিয়ে গঠিত: পাবলিক এবং প্রাইভেট কি যা একাউন্টের কার্যক্রম নিয়ন্ত্রণ করে
-**কন্ট্র্যাক্ট**
+**কন্ট্রাক্ট**
-- একটি কন্ট্র্যাক্ট তৈরি করতে খরচ হয় কারণ আপনি নেটওয়ার্ক স্টোরেজ ব্যবহার করেন
-- শুধুমাত্র একটি লেনদেন প্রাপ্তির প্রতিক্রিয়ায় বার্তা পাঠাতে পারে
-- একটি এক্সটারনাল অ্যাকাউন্ট থেকে একটি কন্ট্র্যাক্ট অ্যাকাউন্টে লেনদেন কোড ট্রিগার করতে পারে যা টোকেন স্থানান্তর করা বা এমনকি একটি নতুন কন্ট্র্যাক্ট তৈরি করার মতো বিভিন্ন ক্রিয়া সম্পাদন করতে পারে
-- কন্ট্র্যাক্ট অ্যাকাউন্টের কোনো প্রাইভেট কী নেই। পরিবর্তে, তারা স্মার্ট কন্ট্র্যাক্ট কোডের লজিক দ্বারা নিয়ন্ত্রিত হয়
+- একটি কন্ট্রাক্ট তৈরি করতে খরচ হয় কারণ আপনি নেটওয়ার্ক স্টোরেজ ব্যবহার করছেন
+- শুধুমাত্র লেনদেন গ্রহণের প্রতিক্রিয়ায় মেসেজ পাঠাতে পারে
+- একটি এক্সটার্নাল একাউন্ট থেকে কন্ট্রাক্ট একাউন্টে লেনদেন কোড ট্রিগার করতে পারে যা বিভিন্ন কাজ সম্পাদন করতে পারে, যেমন টোকেন ট্রান্সফার করা বা এমনকি নতুন কন্ট্রাক্ট তৈরি করা
+- কন্ট্রাক্ট একাউন্টের কোনো প্রাইভেট কি থাকে না। এর পরিবর্তে, এগুলো স্মার্ট কন্ট্রাক্ট কোডের লজিক দ্বারা নিয়ন্ত্রিত হয়
-## একটি অ্যাকাউন্ট পরীক্ষা করা হয়েছে {#an-account-examined}
+## একটি একাউন্টের পর্যালোচনা {#an-account-examined}
-ইথেরিয়াম অ্যাকাউন্টের চারটি ক্ষেত্র রয়েছে:
+ইথিরিয়াম একাউন্টের চারটি ফিল্ড রয়েছে:
-- `nonce` – একটি কাউন্টার যা একটি এক্সটারনালি-ওনড অ্যাকাউন্ট থেকে পাঠানো লেনদেনের সংখ্যা বা একটি কন্ট্র্যাক্ট অ্যাকাউন্ট দ্বারা তৈরি কন্ট্র্যাক্টের সংখ্যা নির্দেশ করে। প্রতিটি অ্যাকাউন্টের জন্য একটি নির্দিষ্ট ননসের সাথে শুধুমাত্র একটি লেনদেন কার্যকর করা যেতে পারে, যা রিপ্লে অ্যাটাকের বিরুদ্ধে সুরক্ষা প্রদান করে যেখানে স্বাক্ষরিত লেনদেন বারবার সম্প্রচার এবং পুনরায় কার্যকর করা হয়।
-- `balance` – এই ঠিকানাটির মালিকানাধীন wei-এর সংখ্যা। Wei হলো ETH-এর একটি একক এবং প্রতি ETH-এ 1e+18 wei থাকে।
-- `codeHash` – এই হ্যাসটি ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)-এর একটি অ্যাকাউন্টের _কোড_ বোঝায়। কন্ট্র্যাক্ট অ্যাকাউন্টে কোড ফ্র্যাগমেন্ট প্রোগ্রাম করা থাকে যা বিভিন্ন অপারেশন করতে পারে। অ্যাকাউন্টটি একটি মেসেজ কল পেলে এই EVM কোডটি কার্যকর হয়। অন্যান্য অ্যাকাউন্ট ফিল্ডের মতো এটি পরিবর্তন করা যায় না। এই ধরনের সমস্ত কোড ফ্র্যাগমেন্ট পরবর্তী পুনরুদ্ধারের জন্য তাদের সংশ্লিষ্ট হ্যাসের অধীনে স্টেট ডাটাবেসে থাকে। এই হ্যাস ভ্যালুটি codeHash হিসাবে পরিচিত। এক্সটারনালি ওনড অ্যাকাউন্টগুলির জন্য, codeHash ফিল্ডটি একটি খালি স্ট্রিংয়ের হ্যাস।
-- `storageRoot` – কখনও কখনও স্টোরেজ হ্যাস হিসাবে পরিচিত। একটি [Merkle Patricia Trie](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)-এর রুট নোডের একটি 256-বিট হ্যাস যা অ্যাকাউন্টের স্টোরেজ বিষয়বস্তু (256-বিট ইন্টিজার মানগুলির মধ্যে একটি ম্যাপিং) এনকোড করে, যা 256-বিট ইন্টিজার কী-গুলির Keccak 256-বিট হ্যাস থেকে RLP-এনকোডেড 256-বিট ইন্টিজার মানগুলিতে একটি ম্যাপিং হিসাবে ট্রাইতে এনকোড করা হয়। এই ট্রাইটি এই অ্যাকাউন্টের স্টোরেজ বিষয়বস্তুর হ্যাস এনকোড করে, এবং ডিফল্টরূপে খালি থাকে।
+- `nonce` – একটি কাউন্টার যা একটি এক্সটার্নালি ওনড একাউন্ট থেকে পাঠানো লেনদেনের সংখ্যা বা একটি কন্ট্রাক্ট একাউন্ট দ্বারা তৈরি কন্ট্রাক্টের সংখ্যা নির্দেশ করে। প্রতিটি একাউন্টের জন্য একটি নির্দিষ্ট নন্স সহ শুধুমাত্র একটি লেনদেন কার্যকর করা যেতে পারে, যা রিপ্লে অ্যাটাক থেকে রক্ষা করে যেখানে সাইন করা লেনদেন বারবার ব্রডকাস্ট এবং পুনরায় কার্যকর করা হয়।
+- `balance` – এই এডড্রেস এর মালিকানাধীন wei এর পরিমাণ। Wei হলো ETH এর একটি একক এবং প্রতি ETH এ 1e+18 wei থাকে।
+- `codeHash` – এই হ্যাস ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)-এ একটি একাউন্টের _কোড_ নির্দেশ করে। কন্ট্রাক্ট একাউন্টে প্রোগ্রাম করা কোড ফ্র্যাগমেন্ট থাকে যা বিভিন্ন অপারেশন করতে পারে। একাউন্টটি কোনো মেসেজ কল পেলে এই EVM কোড কার্যকর হয়। অন্যান্য একাউন্ট ফিল্ডের মতো এটি পরিবর্তন করা যায় না। এই ধরনের সমস্ত কোড ফ্র্যাগমেন্ট পরবর্তীতে পুনরুদ্ধারের জন্য তাদের সংশ্লিষ্ট হ্যাসের অধীনে স্টেট ডাটাবেসে সংরক্ষিত থাকে। এই হ্যাস ভ্যালু codeHash হিসেবে পরিচিত। এক্সটার্নালি ওনড একাউন্টের জন্য, codeHash ফিল্ডটি একটি খালি স্ট্রিংয়ের হ্যাস।
+- `storageRoot` – কখনো কখনো স্টোরেজ হ্যাস হিসেবে পরিচিত। একটি [Merkle Patricia Trie](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)-এর রুট নোডের একটি 256-বিট হ্যাস যা একাউন্টের স্টোরেজ কন্টেন্ট এনকোড করে (256-বিট ইন্টিজার ভ্যালুর মধ্যে একটি ম্যাপিং), যা 256-বিট ইন্টিজার কি-এর Keccak 256-বিট হ্যাস থেকে RLP-এনকোড করা 256-বিট ইন্টিজার ভ্যালুর ম্যাপিং হিসেবে ট্রাই-তে এনকোড করা হয়। এই ট্রাই এই একাউন্টের স্টোরেজ কন্টেন্টের হ্যাস এনকোড করে এবং ডিফল্টভাবে খালি থাকে।
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে গৃহীত ডায়াগ্রাম_
+
+_ডায়াগ্রামটি [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে নেওয়া হয়েছে_
-## এক্সটারনালি-ওনড অ্যাকাউন্ট এবং কী পেয়ার {#externally-owned-accounts-and-key-pairs}
+## এক্সটার্নালি ওনড একাউন্ট এবং কি পেয়ার {#externally-owned-accounts-and-key-pairs}
-একটি অ্যাকাউন্ট ক্রিপ্টোগ্রাফিক কী-এর একটি জোড়া দিয়ে গঠিত: পাবলিক এবং প্রাইভেট। এগুলি প্রমাণ করতে সাহায্য করে যে একটি লেনদেন প্রেরক দ্বারা স্বাক্ষরিত হয়েছিল এবং জালিয়াতি প্রতিরোধ করে। আপনার প্রাইভেট কী হল যা আপনি লেনদেন স্বাক্ষর করতে ব্যবহার করেন, তাই এটি আপনাকে আপনার অ্যাকাউন্টের সাথে যুক্ত তহবিলের হেফাজত প্রদান করে। আপনি আসলে কখনও ক্রিপ্টোকারেন্সি ধারণ করেন না, আপনি প্রাইভেট কী ধারণ করেন – তহবিল সর্বদা Ethereum-এর লেজারে থাকে।
+একটি একাউন্ট এক জোড়া ক্রিপ্টোগ্রাফিক কি দিয়ে গঠিত: পাবলিক এবং প্রাইভেট। এগুলো প্রমাণ করতে সাহায্য করে যে একটি লেনদেন আসলেই প্রেরক দ্বারা সাইন করা হয়েছিল এবং জালিয়াতি প্রতিরোধ করে। আপনার প্রাইভেট কি হলো যা আপনি লেনদেন সাইন করতে ব্যবহার করেন, তাই এটি আপনাকে আপনার একাউন্টের সাথে যুক্ত ফান্ডের কাস্টডি প্রদান করে। আপনি আসলে কখনোই ক্রিপটোকারেন্সি ধরে রাখেন না, আপনি প্রাইভেট কি ধরে রাখেন – ফান্ড সবসময় ইথিরিয়ামের লেজার-এ থাকে।
-এটি ক্ষতিকারক অভিনেতাদের জাল লেনদেন সম্প্রচার করা থেকে বাধা দেয় কারণ আপনি সর্বদা একটি লেনদেনের প্রেরককে যাচাই করতে পারেন।
+এটি ক্ষতিকারক ব্যক্তিদের ভুয়া লেনদেন ব্রডকাস্ট করা থেকে বিরত রাখে কারণ আপনি সবসময় একটি লেনদেনের প্রেরককে যাচাই করতে পারেন।
-যদি অ্যালিস তার নিজের অ্যাকাউন্ট থেকে ববের অ্যাকাউন্টে ইথার পাঠাতে চায়, অ্যালিসকে একটি লেনদেনের অনুরোধ তৈরি করতে হবে এবং যাচাইকরণের জন্য এটি নেটওয়ার্কে পাঠাতে হবে। ইথেরিয়াম-এর পাবলিক-কী ক্রিপ্টোগ্রাফির ব্যবহার নিশ্চিত করে যে অ্যালিস প্রমাণ করতে পারে যে সে মূলত লেনদেনের অনুরোধটি শুরু করেছিল। ক্রিপ্টোগ্রাফিক প্রক্রিয়া ছাড়া, একজন দূষিত প্রতিপক্ষ ইভ সহজভাবে সর্বজনীনভাবে একটি অনুরোধ সম্প্রচার করতে পারে যা দেখতে অনেকটা এইরকম, “অ্যালিসের অ্যাকাউন্ট থেকে ইভের অ্যাকাউন্টে 5 ETH পাঠান,” এবং কেউ যাচাই করতে পারবে না যে এটি অ্যালিসের কাছ থেকে আসেনি।
+যদি অ্যালিস তার নিজের একাউন্ট থেকে ববের একাউন্টে ইথার পাঠাতে চায়, তবে অ্যালিসকে একটি লেনদেন রিকোয়েস্ট তৈরি করতে হবে এবং যাচাইয়ের জন্য এটি নেটওয়ার্ক-এ পাঠাতে হবে। ইথিরিয়ামের পাবলিক-কি ক্রিপ্টোগ্রাফির ব্যবহার নিশ্চিত করে যে অ্যালিস প্রমাণ করতে পারে যে সে নিজেই লেনদেন রিকোয়েস্টটি শুরু করেছিল। ক্রিপ্টোগ্রাফিক মেকানিজম ছাড়া, ইভ নামের একজন ক্ষতিকারক প্রতিপক্ষ সহজেই প্রকাশ্যে এমন একটি রিকোয়েস্ট ব্রডকাস্ট করতে পারে যা দেখতে "অ্যালিসের একাউন্ট থেকে ইভের একাউন্টে 5 ETH পাঠান" এর মতো, এবং কেউ যাচাই করতে পারবে না যে এটি অ্যালিসের কাছ থেকে আসেনি।
-## অ্যাকাউন্ট তৈরি {#account-creation}
+## একাউন্ট তৈরি {#account-creation}
-আপনি যখন একটি অ্যাকাউন্ট তৈরি করতে চান, তখন বেশিরভাগ লাইব্রেরি আপনাকে একটি র্যান্ডম প্রাইভেট কী তৈরি করে দেবে।
+আপনি যখন একটি একাউন্ট তৈরি করতে চান, তখন বেশিরভাগ লাইব্রেরি আপনাকে একটি র্যান্ডম প্রাইভেট কি তৈরি করে দেবে।
-একটি প্রাইভেট কী 64টি হেক্স অক্ষর দিয়ে তৈরি এবং একটি পাসওয়ার্ড দিয়ে এনক্রিপ্ট করা যেতে পারে।
+একটি প্রাইভেট কি 64 হেক্স ক্যারেক্টার দিয়ে গঠিত এবং এটি পাসওয়ার্ড দিয়ে এনক্রিপ্ট করা যায়।
উদাহরণ:
`fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f`
-পাবলিক কী [ইলিপটিক কার্ভ ডিজিটাল সিগনেচার অ্যালগরিদম](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm) ব্যবহার করে প্রাইভেট কী থেকে তৈরি করা হয়। আপনি পাবলিক কী-এর Keccak-256 হ্যাসের শেষ 20 বাইট নিয়ে এবং শুরুতে `0x` যোগ করে আপনার অ্যাকাউন্টের জন্য একটি পাবলিক ঠিকানা পাবেন।
+পাবলিক কি প্রাইভেট কি থেকে [Elliptic Curve Digital Signature Algorithm](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm) ব্যবহার করে তৈরি করা হয়। আপনি পাবলিক কি-এর Keccak-256 হ্যাস এর শেষ 20 বাইট নিয়ে এবং শুরুতে `0x` যোগ করে আপনার একাউন্টের জন্য একটি পাবলিক এডড্রেস পান।
-এর মানে হল একটি এক্সটারনালি ওনড অ্যাকাউন্ট (EOA)-এর একটি 42-অক্ষরের ঠিকানা রয়েছে (20-বাইট সেগমেন্ট যা 40টি হেক্সাডেসিমেল অক্ষর এবং `0x` উপসর্গ)।
+এর মানে হলো একটি এক্সটার্নালি ওনড একাউন্ট (EOA)-এর একটি 42-ক্যারেক্টারের এডড্রেস থাকে (20-বাইট সেগমেন্ট যা 40 হেক্সাডেসিমাল ক্যারেক্টার এবং `0x` প্রিফিক্স)।
উদাহরণ:
`0x5e97870f263700f46aa00d967821199b9bc5a120`
-নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি নতুন অ্যাকাউন্ট তৈরি করতে [Clef](https://geth.ethereum.org/docs/tools/clef/introduction) নামক একটি সাইনিং টুল ব্যবহার করতে হয়। Clef হল একটি অ্যাকাউন্ট ম্যানেজমেন্ট এবং সাইনিং টুল যা ইথেরিয়াম ক্লায়েন্ট, [Geth](https://geth.ethereum.org)-এর সাথে বান্ডেল করা থাকে। `clef newaccount` কমান্ড একটি নতুন কী পেয়ার তৈরি করে এবং সেগুলিকে একটি এনক্রিপ্টেড কীস্টোরে সংরক্ষণ করে।
+নিচের উদাহরণটি দেখায় কীভাবে একটি নতুন একাউন্ট তৈরি করতে [Clef](https://geth.ethereum.org/docs/tools/clef/introduction) নামক একটি সাইনিং টুল ব্যবহার করতে হয়। Clef হলো একটি একাউন্ট ম্যানেজমেন্ট এবং সাইনিং টুল যা ইথিরিয়াম ক্লায়েন্ট, [Geth](https://geth.ethereum.org)-এর সাথে বান্ডেল হিসেবে আসে। `clef newaccount` কমান্ড একটি নতুন কি পেয়ার তৈরি করে এবং সেগুলোকে একটি এনক্রিপ্ট করা কিস্টোরে সেভ করে।
```
> clef newaccount --keystore
@@ -93,45 +93,45 @@ Generated account 0x5e97870f263700f46aa00d967821199b9bc5a120
[Geth ডকুমেন্টেশন](https://geth.ethereum.org/docs)
-আপনার প্রাইভেট কী থেকে নতুন পাবলিক কী তৈরি করা সম্ভব, কিন্তু আপনি পাবলিক কী থেকে প্রাইভেট কী তৈরি করতে পারবেন না। আপনার প্রাইভেট কী সুরক্ষিত রাখা এবং, নাম থেকেই বোঝা যায়, **প্রাইভেট** রাখা অত্যাবশ্যক।
+আপনার প্রাইভেট কি থেকে নতুন পাবলিক কি বের করা সম্ভব, কিন্তু আপনি পাবলিক কি থেকে প্রাইভেট কি বের করতে পারবেন না। আপনার প্রাইভেট কি নিরাপদ রাখা অত্যন্ত গুরুত্বপূর্ণ এবং নামের মতোই এটিকে **প্রাইভেট (গোপন)** রাখা উচিত।
-আপনার বার্তা এবং লেনদেন সাইন করার জন্য একটি প্রাইভেট কী প্রয়োজন যা একটি স্বাক্ষর আউটপুট করে। অন্যরা তখন আপনার পাবলিক কী বের করার জন্য স্বাক্ষরটি নিতে পারে, যা বার্তার লেখককে প্রমাণ করে। আপনার অ্যাপ্লিকেশনে, আপনি নেটওয়ার্কে লেনদেন পাঠাতে একটি JavaScript লাইব্রেরি ব্যবহার করতে পারেন।
+মেসেজ এবং লেনদেন সাইন করার জন্য আপনার একটি প্রাইভেট কি প্রয়োজন যা একটি সিগনেচার আউটপুট দেয়। অন্যরা তখন আপনার পাবলিক কি বের করতে সিগনেচারটি নিতে পারে, যা মেসেজের লেখককে প্রমাণ করে। আপনার অ্যাপ্লিকেশনে, আপনি নেটওয়ার্ক-এ লেনদেন পাঠাতে একটি জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করতে পারেন।
-## কন্ট্র্যাক্ট অ্যাকাউন্ট {#contract-accounts}
+## কন্ট্রাক্ট একাউন্ট {#contract-accounts}
-কন্ট্র্যাক্ট অ্যাকাউন্টেরও একটি 42 অক্ষরের হেক্সাডেসিমেল ঠিকানা রয়েছে:
+কন্ট্রাক্ট একাউন্টেরও একটি 42 ক্যারেক্টারের হেক্সাডেসিমাল এডড্রেস থাকে:
উদাহরণ:
`0x06012c8cf97bead5deae237070f9587f8e7a266d`
-কন্ট্র্যাক্ট ঠিকানা সাধারণত দেওয়া হয় যখন একটি কন্ট্র্যাক্ট ইথেরিয়াম ব্লকচেইনে স্থাপন করা হয়। ঠিকানাটি নির্মাতার ঠিকানা এবং সেই ঠিকানা থেকে পাঠানো লেনদেনের সংখ্যা (“ননস”) থেকে আসে।
+ইথিরিয়াম ব্লকচেইন-এ কোনো কন্ট্রাক্ট ডিপ্লয় করার সময় সাধারণত কন্ট্রাক্ট এডড্রেস দেওয়া হয়। এডড্রেসটি ক্রিয়েটরের এডড্রেস এবং সেই এডড্রেস থেকে পাঠানো লেনদেনের সংখ্যা ("নন্স") থেকে আসে।
-## ভ্যালিডেটর কী {#validators-keys}
+## ভ্যালিডেটর কি {#validators-keys}
-Ethereum-এ আরও এক ধরনের কী আছে, যা Ethereum যখন প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক ভিত্তিক কনসেন্সাসে পরিবর্তিত হয় তখন চালু করা হয়েছিল। এগুলি হলো 'BLS' কী এবং এগুলি ভ্যালিডেটরদের সনাক্ত করতে ব্যবহৃত হয়। এই কীগুলি দক্ষতার সাথে একত্রিত করা যেতে পারে যাতে নেটওয়ার্ককে কনসেন্সাসে আসতে প্রয়োজনীয় ব্যান্ডউইথ কমানো যায়। এই কী অ্যাগ্রিগেশন ছাড়া একজন ভ্যালিডেটরের জন্য সর্বনিম্ন স্টেক অনেক বেশি হত।
+ইথিরিয়ামে আরও এক ধরনের কি রয়েছে, যা ইথিরিয়াম প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক ভিত্তিক কনসেন্সাস-এ যাওয়ার সময় চালু করা হয়েছিল। এগুলো হলো 'BLS' কি এবং এগুলো ভ্যালিডেটরস শনাক্ত করতে ব্যবহৃত হয়। নেটওয়ার্ক-এর কনসেন্সাস-এ পৌঁছানোর জন্য প্রয়োজনীয় ব্যান্ডউইথ কমাতে এই কি-গুলোকে দক্ষতার সাথে একত্রিত করা যেতে পারে। এই কি অ্যাগ্রিগেশন ছাড়া একজন ভ্যালিডেটর-এর জন্য ন্যূনতম স্টেক অনেক বেশি হতো।
-[ভ্যালিডেটর কী সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/keys/)।
+[ভ্যালিডেটর কি সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/keys/)।
-## ওয়ালেট সম্পর্কে একটি নোট {#a-note-on-wallets}
+## ওয়ালেট সম্পর্কে একটি নোট {#a-note-on-wallets}
-একটি অ্যাকাউন্ট একটি ওয়ালেট নয়। একটি ওয়ালেট একটি ইন্টারফেস বা অ্যাপ্লিকেশন যা আপনাকে আপনার Ethereum অ্যাকাউন্টের সাথে ইন্টারঅ্যাক্ট করতে দেয়, তা একটি এক্সটারনালি-ওনড অ্যাকাউন্ট বা একটি কন্ট্র্যাক্ট অ্যাকাউন্ট হোক।
+একটি একাউন্ট কোনো ওয়ালেট নয়। ওয়ালেট হলো একটি ইন্টারফেস বা অ্যাপ্লিকেশন যা আপনাকে আপনার ইথিরিয়াম একাউন্টের সাথে ইন্টারঅ্যাক্ট করতে দেয়, সেটি এক্সটার্নালি ওনড একাউন্ট হোক বা কন্ট্রাক্ট একাউন্ট।
-## একটি ভিজ্যুয়াল ডেমো {#a-visual-demo}
+## একটি ভিজ্যুয়াল ডেমো {#a-visual-demo}
-অস্টিনকে হ্যাস ফাংশন, এবং কী পেয়ারগুলি ব্যাখ্যা করতে দেখুন।
+অস্টিনের হ্যাস ফাংশন এবং কি পেয়ার সম্পর্কে আলোচনা দেখুন।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [Ethereum অ্যাকাউন্ট বোঝা](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan
+- [ইথিরিয়াম একাউন্ট বোঝা](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত টপিক {#related-topics}
-- [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/)
-- [লেনদেন](/developers/docs/transactions/)
+- [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)
+- [লেনদেন](/developers/docs/transactions/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/apis/backend/index.md b/public/content/translations/bn/developers/docs/apis/backend/index.md
index 87b35d7be91..04460e78658 100644
--- a/public/content/translations/bn/developers/docs/apis/backend/index.md
+++ b/public/content/translations/bn/developers/docs/apis/backend/index.md
@@ -1,211 +1,218 @@
---
-title: "ব্যাকএন্ড API লাইব্রেরি"
-description: "Ethereum ক্লায়েন্ট API-এর একটি পরিচিতি যা আপনাকে আপনার অ্যাপ্লিকেশন থেকে ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে দেয়।"
+title: ব্যাকএন্ড এপিআই লাইব্রেরি
+description: ইথিরিয়াম ক্লায়েন্ট এপিআই-এর একটি পরিচিতি যা আপনাকে আপনার অ্যাপ্লিকেশন থেকে ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে দেয়।
lang: bn
---
-Ethereum ব্লকচেইনের সাথে একটি সফ্টওয়্যার অ্যাপ্লিকেশনের ইন্টারঅ্যাক্ট করার জন্য (অর্থাৎ, ব্লকচেইন ডেটা পড়া এবং/অথবা নেটওয়ার্কে লেনদেন পাঠানো), এটিকে অবশ্যই একটি Ethereum নোডের সাথে সংযোগ স্থাপন করতে হবে।
+একটি সফটওয়্যার অ্যাপ্লিকেশনের [Ethereum](/) ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য (অর্থাৎ, ব্লকচেইন ডেটা পড়া এবং/অথবা নেটওয়ার্কে লেনদেন পাঠানো), এটিকে অবশ্যই একটি ইথিরিয়াম নোডের সাথে সংযুক্ত হতে হবে।
-এই উদ্দেশ্যে, প্রতিটি Ethereum ক্লায়েন্ট [JSON-RPC](/developers/docs/apis/json-rpc/) স্পেসিফিকেশন প্রয়োগ করে, তাই [পদ্ধতিগুলির](/developers/docs/apis/json-rpc/#json-rpc-methods) একটি অভিন্ন সেট রয়েছে যার উপর অ্যাপ্লিকেশনগুলি নির্ভর করতে পারে।
+এই উদ্দেশ্যে, প্রতিটি ইথিরিয়াম ক্লায়েন্ট [JSON-RPC](/developers/docs/apis/json-rpc/) স্পেসিফিকেশন ইমপ্লিমেন্ট করে, তাই [methods](/developers/docs/apis/json-rpc/#json-rpc-methods)-এর একটি অভিন্ন সেট রয়েছে যার উপর অ্যাপ্লিকেশনগুলো নির্ভর করতে পারে।
-আপনি যদি একটি Ethereum নোডের সাথে সংযোগ করার জন্য একটি নির্দিষ্ট প্রোগ্রামিং ভাষা ব্যবহার করতে চান, তবে ইকোসিস্টেমের মধ্যে অনেক সুবিধাজনক লাইব্রেরি রয়েছে যা এটিকে আরও সহজ করে তোলে। এই লাইব্রেরিগুলির সাহায্যে, ডেভেলপাররা Ethereum-এর সাথে ইন্টারঅ্যাক্ট করে এমন JSON-RPC অনুরোধগুলি (হুডের নীচে) শুরু করার জন্য স্বজ্ঞাত, এক-লাইনের পদ্ধতি লিখতে পারে।
+আপনি যদি একটি ইথিরিয়াম নোডের সাথে সংযুক্ত হওয়ার জন্য একটি নির্দিষ্ট প্রোগ্রামিং ভাষা ব্যবহার করতে চান, তবে ইকোসিস্টেমের মধ্যে অনেক সুবিধাজনক লাইব্রেরি রয়েছে যা এটিকে অনেক সহজ করে তোলে। এই লাইব্রেরিগুলোর সাহায্যে, ডেভেলপাররা ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করার জন্য JSON-RPC রিকোয়েস্ট (আড়ালে) ইনিশিয়ালাইজ করতে সহজ, এক-লাইনের মেথড লিখতে পারেন।
## পূর্বশর্ত {#prerequisites}
-[Ethereum স্ট্যাক](/developers/docs/ethereum-stack/) এবং [Ethereum ক্লায়েন্ট](/developers/docs/nodes-and-clients/) বোঝা সহায়ক হতে পারে।
+[Ethereum stack](/developers/docs/ethereum-stack/) এবং [Ethereum clients](/developers/docs/nodes-and-clients/) সম্পর্কে বোঝা সহায়ক হতে পারে।
-## একটি লাইব্রেরি কেন ব্যবহার করবেন? {#why-use-a-library}
+## কেন একটি লাইব্রেরি ব্যবহার করবেন? {#why-use-a-library}
-এই লাইব্রেরিগুলি সরাসরি একটি Ethereum নোডের সাথে ইন্টারঅ্যাক্ট করার জটিলতাকে অনেকটাই সহজ করে দেয়। তারা ইউটিলিটি ফাংশনও (যেমন, ETH-কে Gwei-তে রূপান্তর করা) সরবরাহ করে যাতে একজন ডেভেলপার হিসেবে আপনি Ethereum ক্লায়েন্টের জটিলতা নিয়ে কাজ করার জন্য কম সময় ব্যয় করতে পারেন এবং আপনার অ্যাপ্লিকেশনের অনন্য কার্যকারিতার উপর বেশি সময় মনোনিবেশ করতে পারেন।
+এই লাইব্রেরিগুলো সরাসরি একটি ইথিরিয়াম নোডের সাথে ইন্টারঅ্যাক্ট করার অনেক জটিলতা দূর করে। এগুলো ইউটিলিটি ফাংশনও প্রদান করে (যেমন, ETH-কে Gwei-তে রূপান্তর করা) যাতে একজন ডেভেলপার হিসেবে আপনি ইথিরিয়াম ক্লায়েন্টগুলোর জটিলতা নিয়ে কম সময় ব্যয় করতে পারেন এবং আপনার অ্যাপ্লিকেশনের অনন্য কার্যকারিতার উপর বেশি সময় ফোকাস করতে পারেন।
-## উপলব্ধ লাইব্রেরি {#available-libraries}
+## উপলব্ধ লাইব্রেরিগুলো {#available-libraries}
-### অবকাঠামো এবং নোড পরিষেবা {#infrastructure-and-node-services}
+### ইনফ্রাস্ট্রাকচার এবং নোড পরিষেবা {#infrastructure-and-node-services}
-**Alchemy -** **_Ethereum ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
+**Alchemy -** **_ইথিরিয়াম ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
- [alchemy.com](https://www.alchemy.com/)
-- [নথিপত্র](https://www.alchemy.com/docs/)
+- [Documentation](https://www.alchemy.com/docs/)
- [GitHub](https://github.com/alchemyplatform)
- [Discord](https://discord.com/invite/alchemyplatform)
-
-**All That Node -** **_নোড-এজ-এ-সার্ভিস।_**
+
+**All That Node -** **_নোড-অ্যাজ-এ-সার্ভিস।_**
- [All That Node.com](https://www.allthatnode.com/)
-- [নথিপত্র](https://docs.allthatnode.com)
-- [ডিসকর্ড](https://discord.gg/GmcdVEUbJM)
+- [Documentation](https://docs.allthatnode.com)
+- [Discord](https://discord.gg/GmcdVEUbJM)
-**Bware Labs দ্বারা Blast -** **_Ethereum মেইননেট এবং টেস্টনেটের জন্য বিকেন্দ্রীভূত API।_**
+**Blast by Bware Labs -** **_ইথিরিয়াম মেইননেট এবং টেস্টনেটগুলোর জন্য ডিসেন্ট্রালাইজড এপিআই।_**
- [blastapi.io](https://blastapi.io/)
-- [নথিপত্র](https://docs.blastapi.io)
-- [ডিসকর্ড](https://discord.gg/SaRqmRUjjQ)
+- [Documentation](https://docs.blastapi.io)
+- [Discord](https://discord.gg/SaRqmRUjjQ)
-**BlockPi -** **_আরও কার্যকর এবং দ্রুত RPC পরিষেবা প্রদান করুন_**
+**BlockPi -** **_আরও দক্ষ এবং দ্রুত RPC পরিষেবা প্রদান করে_**
- [blockpi.io](https://blockpi.io/)
-- [নথিপত্র](https://docs.blockpi.io/)
+- [Documentation](https://docs.blockpi.io/)
- [GitHub](https://github.com/BlockPILabs)
-- [ডিসকর্ড](https://discord.com/invite/xTvGVrGVZv)
+- [Discord](https://discord.com/invite/xTvGVrGVZv)
-**Cloudflare Ethereum গেটওয়ে।**
+**Cloudflare Ethereum Gateway.**
- [cloudflare-eth.com](https://www.cloudflare.com/application-services/products/web3/)
-**Etherscan - ব্লক এক্সপ্লোরার এবং লেনদেন API**
-
-- [নথিপত্র](https://docs.etherscan.io/)
+**Etherscan - ব্লক এক্সপ্লোরার এবং লেনদেন এপিআই**
+- [Documentation](https://docs.etherscan.io/)
**Blockscout - ওপেন সোর্স ব্লক এক্সপ্লোরার**
+- [Documentation](https://docs.blockscout.com/)
-- [নথিপত্র](https://docs.blockscout.com/)
-
-**GetBlock-** **_Web3 ডেভেলপমেন্টের জন্য ব্লকচেইন-এজ-এ-সার্ভিস_**
+**GetBlock-** **_ওয়েব3 ডেভেলপমেন্টের জন্য ব্লকচেইন-অ্যাজ-এ-সার্ভিস_**
- [GetBlock.io](https://getblock.io/)
-- [নথিপত্র](https://docs.getblock.io/)
+- [Documentation](https://docs.getblock.io/)
-**Infura -** **_একটি পরিষেবা হিসাবে Ethereum API।_**
+**Infura -** **_একটি পরিষেবা হিসেবে ইথিরিয়াম এপিআই।_**
- [infura.io](https://infura.io)
-- [নথিপত্র](https://docs.infura.io/api)
+- [Documentation](https://docs.infura.io/api)
- [GitHub](https://github.com/INFURA)
-**Node RPC - _সাশ্রয়ী EVM JSON-RPC প্রদানকারী_**
+**Node RPC - _সাশ্রয়ী EVM JSON-RPC প্রোভাইডার_**
- [noderpc.xyz](https://www.noderpc.xyz/)
-- [নথিপত্র](https://docs.noderpc.xyz/node-rpc)
+- [Documentation](https://docs.noderpc.xyz/node-rpc)
-**NOWNodes - _সম্পূর্ণ নোড এবং ব্লক এক্সপ্লোরার।_**
+**NOWNodes - _ফুল নোড এবং ব্লক এক্সপ্লোরার।_**
- [NOWNodes.io](https://nownodes.io/)
-- [নথিপত্র](https://nownodes.gitbook.io/documentation)
+- [Documentation](https://nownodes.gitbook.io/documentation)
-**QuickNode -** **_একটি পরিষেবা হিসাবে ব্লকচেইন পরিকাঠামো।_**
+**QuickNode -** **_একটি পরিষেবা হিসেবে ব্লকচেইন ইনফ্রাস্ট্রাকচার।_**
- [quicknode.com](https://quicknode.com)
-- [নথিপত্র](https://www.quicknode.com/docs/welcome)
-- [ডিসকর্ড](https://discord.gg/quicknode)
+- [Documentation](https://www.quicknode.com/docs/welcome)
+- [Discord](https://discord.gg/quicknode)
-**Rivet -** **_ওপেন সোর্স সফ্টওয়্যার দ্বারা চালিত একটি পরিষেবা হিসাবে Ethereum এবং Ethereum Classic API।_**
+**Rivet -** **_ওপেন সোর্স সফটওয়্যার দ্বারা চালিত একটি পরিষেবা হিসেবে ইথিরিয়াম এবং ইথিরিয়াম ক্লাসিক এপিআই।_**
- [rivet.cloud](https://rivet.cloud)
-- [নথিপত্র](https://rivet.cloud/docs/)
+- [Documentation](https://rivet.cloud/docs/)
- [GitHub](https://github.com/openrelayxyz/ethercattle-deployment)
-**Zmok -** **_JSON-RPC/WebSockets API হিসাবে গতি-ভিত্তিক Ethereum নোড।_**
+**Zmok -** **_JSON-RPC/WebSockets এপিআই হিসেবে গতি-ভিত্তিক ইথিরিয়াম নোড।_**
- [zmok.io](https://zmok.io/)
- [GitHub](https://github.com/zmok-io)
-- [নথিপত্র](https://docs.zmok.io/)
-- [ডিসকর্ড](https://discord.gg/fAHeh3ka6s)
+- [Documentation](https://docs.zmok.io/)
+- [Discord](https://discord.gg/fAHeh3ka6s)
### ডেভেলপমেন্ট টুলস {#development-tools}
-**ethers-kt -** **_EVM-ভিত্তিক ব্লকচেইনের জন্য অ্যাসিঙ্ক, হাই-পারফরম্যান্স Kotlin/Java/Android লাইব্রেরি।_**
+**ethers-kt -** **_EVM-ভিত্তিক ব্লকচেইনগুলোর জন্য অ্যাসিনক্রোনাস, হাই-পারফরম্যান্স Kotlin/Java/Android লাইব্রেরি।_**
- [GitHub](https://github.com/Kr1ptal/ethers-kt)
-- [উদাহরণ](https://github.com/Kr1ptal/ethers-kt/tree/master/examples)
+- [Examples](https://github.com/Kr1ptal/ethers-kt/tree/master/examples)
- [Discord](https://discord.gg/rx35NzQGSb)
**Nethereum -** **_ব্লকচেইনের জন্য একটি ওপেন সোর্স .NET ইন্টিগ্রেশন লাইব্রেরি।_**
- [GitHub](https://github.com/Nethereum/Nethereum)
-- [নথিপত্র](http://docs.nethereum.com/en/latest/)
-- [ডিসকর্ড](https://discord.com/invite/jQPrR58FxX)
+- [Documentation](http://docs.nethereum.com/en/latest/)
+- [Discord](https://discord.com/invite/jQPrR58FxX)
-**Python টুলিং -** **_Python-এর মাধ্যমে Ethereum ইন্টারঅ্যাকশনের জন্য বিভিন্ন লাইব্রেরি।_**
+**Python Tooling -** **_পাইথনের মাধ্যমে ইথিরিয়াম ইন্টারঅ্যাকশনের জন্য বিভিন্ন লাইব্রেরি।_**
- [py.ethereum.org](https://snakecharmers.ethereum.org/)
- [web3.py GitHub](https://github.com/ethereum/web3.py)
-- [web3.py চ্যাট](https://gitter.im/ethereum/web3.py)
+- [web3.py Chat](https://gitter.im/ethereum/web3.py)
-**Tatum -** **_চূড়ান্ত ব্লকচেইন ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
+**Tatum -** **_চূড়ান্ত ব্লকচেইন ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
- [Tatum](https://tatum.io/)
- [GitHub](https://github.com/tatumio/)
-- [নথিপত্র](https://docs.tatum.io/)
-- [ডিসকর্ড](https://discord.gg/EDmW3kjTC9)
+- [Documentation](https://docs.tatum.io/)
+- [Discord](https://discord.gg/EDmW3kjTC9)
-**web3j -** **_Ethereum-এর জন্য একটি Java/Android/Kotlin/Scala ইন্টিগ্রেশন লাইব্রেরি।_**
+**web3j -** **_ইথিরিয়ামের জন্য একটি Java/Android/Kotlin/Scala ইন্টিগ্রেশন লাইব্রেরি।_**
- [GitHub](https://github.com/web3j/web3j)
-- [নথিপত্র](https://docs.web3j.io/)
+- [Docs](https://docs.web3j.io/)
- [Gitter](https://gitter.im/web3j/web3j)
### ব্লকচেইন পরিষেবা {#blockchain-services}
-**BlockCypher -** **_Ethereum ওয়েব API।_**
+**BlockCypher -** **_ইথিরিয়াম ওয়েব এপিআই।_**
- [blockcypher.com](https://www.blockcypher.com/)
-- [নথিপত্র](https://www.blockcypher.com/dev/ethereum/)
+- [Documentation](https://www.blockcypher.com/dev/ethereum/)
-**Chainbase -** **_Ethereum-এর জন্য অল-ইন-ওয়ান web3 ডেটা পরিকাঠামো।_**
+**Chainbase -** **_ইথিরিয়ামের জন্য অল-ইন-ওয়ান ওয়েব3 ডেটা ইনফ্রাস্ট্রাকচার।_**
- [chainbase.com](https://chainbase.com/)
-- [নথিপত্র](https://docs.chainbase.com/)
-- [ডিসকর্ড](https://discord.gg/Wx6qpqz4AF)
+- [Documentation](https://docs.chainbase.com/)
+- [Discord](https://discord.gg/Wx6qpqz4AF)
-**Chainstack -** **_একটি পরিষেবা হিসাবে ইলাস্টিক এবং ডেডিকেটেড Ethereum নোড।_**
+**Chainstack -** **_একটি পরিষেবা হিসেবে ইলাস্টিক এবং ডেডিকেটেড ইথিরিয়াম নোড।_**
- [chainstack.com](https://chainstack.com)
-- [নথিপত্র](https://docs.chainstack.com/)
-- [Ethereum API রেফারেন্স](https://docs.chainstack.com/reference/ethereum-getting-started)
+- [Documentation](https://docs.chainstack.com/)
+- [Ethereum API reference](https://docs.chainstack.com/reference/ethereum-getting-started)
-**Coinbase ক্লাউড নোড -** **_ব্লকচেইন ইনফ্রাস্ট্রাকচার API।_**
+**Coinbase Cloud Node -** **_ব্লকচেইন ইনফ্রাস্ট্রাকচার এপিআই।_**
-- [Coinbase ক্লাউড নোড](https://www.coinbase.com/developer-platform)
-- [নথিপত্র](https://docs.cdp.coinbase.com/)
+- [Coinbase Cloud Node](https://www.coinbase.com/developer-platform)
+- [Documentation](https://docs.cdp.coinbase.com/)
-**Figment দ্বারা DataHub -** **_Ethereum মেইননেট এবং টেস্টনেট সহ Web3 API পরিষেবা।_**
+**DataHub by Figment -** **_ইথিরিয়াম মেইননেট এবং টেস্টনেটগুলোর সাথে ওয়েব3 এপিআই পরিষেবা।_**
- [DataHub](https://www.figment.io/)
-- [নথিপত্র](https://docs.figment.io/)
+- [Documentation](https://docs.figment.io/)
-**Moralis -** **_এন্টারপ্রাইজ-গ্রেড EVM API প্রদানকারী।_**
+**Moralis -** **_এন্টারপ্রাইজ-গ্রেড EVM এপিআই প্রোভাইডার।_**
- [moralis.io](https://moralis.io)
-- [নথিপত্র](https://docs.moralis.io/)
+- [Documentation](https://docs.moralis.io/)
- [GitHub](https://github.com/MoralisWeb3)
-- [ডিসকর্ড](https://moralis.io/joindiscord/)
-- [ফোরাম](https://forum.moralis.io/)
+- [Discord](https://moralis.io/joindiscord/)
+- [Forum](https://forum.moralis.io/)
-**NFTPort -** **_Ethereum ডেটা এবং মিন্ট API।_**
+**NFTPort -** **_ইথিরিয়াম ডেটা এবং মিন্ট এপিআই।_**
- [nftport.xyz](https://www.nftport.xyz/)
-- [নথিপত্র](https://docs.nftport.xyz/)
+- [Documentation](https://docs.nftport.xyz/)
- [GitHub](https://github.com/nftport/)
-- [ডিসকর্ড](https://discord.com/invite/K8nNrEgqhE)
+- [Discord](https://discord.com/invite/K8nNrEgqhE)
-**Tokenview -** **_সাধারণ মাল্টি-ক্রিপ্টো ব্লকচেইন APIs প্ল্যাটফর্ম।_**
+**Tokenview -** **_সাধারণ মাল্টি-ক্রিপ্টো ব্লকচেইন এপিআই প্ল্যাটফর্ম।_**
- [services.tokenview.io](https://services.tokenview.io/)
-- [নথিপত্র](https://services.tokenview.io/docs?type=api)
+- [Documentation](https://services.tokenview.io/docs?type=api)
- [GitHub](https://github.com/Tokenview)
-**Watchdata -** **_Ethereum ব্লকচেইনে সহজ এবং নির্ভরযোগ্য API অ্যাক্সেস সরবরাহ করুন।_**
+**Watchdata -** **_ইথিরিয়াম ব্লকচেইনে সহজ এবং নির্ভরযোগ্য এপিআই অ্যাক্সেস প্রদান করে।_**
- [Watchdata](https://watchdata.io/)
-- [নথিপত্র](https://docs.watchdata.io/)
-- [ডিসকর্ড](https://discord.com/invite/TZRJbZ6bdn)
+- [Documentation](https://docs.watchdata.io/)
+- [Discord](https://discord.com/invite/TZRJbZ6bdn)
-**Covalent -** **_200+ চেইনের জন্য সমৃদ্ধ ব্লকচেইন API।_**
+**Codex -** **_ডজন খানেক চেইন জুড়ে রিয়েল-টাইম, সমৃদ্ধ ব্লকচেইন ডেটা এপিআই।_**
+
+- [codex.io](https://www.codex.io/)
+- [Documentation](https://docs.codex.io)
+- [Explorer](https://docs.codex.io/explore)
+- [GitHub](https://github.com/Codex-Data)
+- [Discord](https://discord.com/invite/mFpUhT3vAq)
+
+**Covalent -** **_200+ চেইনের জন্য সমৃদ্ধ ব্লকচেইন এপিআই।_**
- [covalenthq.com](https://www.covalenthq.com/)
-- [নথিপত্র](https://www.covalenthq.com/docs/api/)
+- [Documentation](https://www.covalenthq.com/docs/api/)
- [GitHub](https://github.com/covalenthq)
- [Discord](https://www.covalenthq.com/discord/)
-## আরও পড়ুন {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+## আরও পড়ুন {#further-reading}
+
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
-- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
+- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
+- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
-## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
+## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [জাভাস্ক্রিপ্টে Ethereum ব্লকচেইন ব্যবহার করতে Web3js সেট আপ করুন](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– আপনার প্রোজেক্টে web3.js সেট আপ করার জন্য নির্দেশাবলী।_
-- [জাভাস্ক্রিপ্ট থেকে একটি স্মার্ট কন্ট্র্যাক্ট কল করা](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI টোকেন ব্যবহার করে দেখুন, জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে কন্ট্র্যাক্ট ফাংশন কল করতে হয়।_
+- [জাভাস্ক্রিপ্টে ইথিরিয়াম ব্লকচেইন ব্যবহার করতে Web3js সেট আপ করুন](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– আপনার প্রজেক্টে web3.js সেট আপ করার জন্য নির্দেশিকা।_
+- [জাভাস্ক্রিপ্ট থেকে একটি স্মার্ট কন্ট্রাক্ট কল করা](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI টোকেন ব্যবহার করে, জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে কন্ট্রাক্ট ফাংশন কল করতে হয় তা দেখুন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/apis/javascript/index.md b/public/content/translations/bn/developers/docs/apis/javascript/index.md
index d74740d5fe9..fc0c69946a4 100644
--- a/public/content/translations/bn/developers/docs/apis/javascript/index.md
+++ b/public/content/translations/bn/developers/docs/apis/javascript/index.md
@@ -1,43 +1,43 @@
---
-title: "জাভাস্ক্রিপ্ট API লাইব্রেরি"
-description: "জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরিগুলির একটি পরিচিতি যা আপনাকে আপনার অ্যাপ্লিকেশন থেকে ব্লকচেইনের সাথে যোগাযোগ করতে দেয়।"
+title: জাভাস্ক্রিপ্ট এপিআই লাইব্রেরি
+description: আপনার অ্যাপ্লিকেশন থেকে ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরির একটি পরিচিতি।
lang: bn
---
-একটি ওয়েব অ্যাপকে ইথেরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য (যেমন, ব্লকচেইন ডেটা পড়া এবং/অথবা নেটওয়ার্কে লেনদেন পাঠানো), এটিকে অবশ্যই একটি ইথেরিয়াম নোডের সাথে সংযোগ স্থাপন করতে হবে।
+একটি ওয়েব অ্যাপকে ইথিরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে (অর্থাৎ, ব্লকচেইন ডেটা পড়তে এবং/অথবা নেটওয়ার্ক-এ লেনদেন পাঠাতে), এটিকে অবশ্যই একটি ইথিরিয়াম নোড-এর সাথে সংযুক্ত হতে হবে।
-এই উদ্দেশ্যে, প্রতিটি ইথেরিয়াম ক্লায়েন্ট [JSON-RPC](/developers/docs/apis/json-rpc/) স্পেসিফিকেশন প্রয়োগ করে, তাই এখানে [পদ্ধতিগুলির](/developers/docs/apis/json-rpc/#json-rpc-methods) একটি অভিন্ন সেট রয়েছে যার উপর অ্যাপ্লিকেশনগুলি নির্ভর করতে পারে।
+এই উদ্দেশ্যে, প্রতিটি ইথিরিয়াম ক্লায়েন্ট [JSON-RPC](/developers/docs/apis/json-rpc/) স্পেসিফিকেশন প্রয়োগ করে, তাই অ্যাপ্লিকেশনগুলি নির্ভর করতে পারে এমন একটি অভিন্ন [পদ্ধতির](/developers/docs/apis/json-rpc/#json-rpc-methods) সেট রয়েছে।
-আপনি যদি একটি ইথেরিয়াম নোডের সাথে সংযোগ করতে JavaScript ব্যবহার করতে চান, তাহলে ভ্যানিলা JavaScript ব্যবহার করা সম্ভব কিন্তু ইকোসিস্টেমের মধ্যে বেশ কিছু সুবিধাজনক লাইব্রেরি বিদ্যমান যা এটিকে অনেক সহজ করে তোলে। এই লাইব্রেরিগুলির সাহায্যে, ডেভেলপাররা Ethereum-এর সাথে ইন্টারঅ্যাক্ট করে এমন JSON-RPC অনুরোধগুলি (হুডের নীচে) শুরু করার জন্য স্বজ্ঞাত, এক-লাইনের পদ্ধতি লিখতে পারে।
+আপনি যদি একটি ইথিরিয়াম নোড-এর সাথে সংযোগ করতে জাভাস্ক্রিপ্ট ব্যবহার করতে চান, তবে ভ্যানিলা জাভাস্ক্রিপ্ট ব্যবহার করা সম্ভব কিন্তু ইকোসিস্টেমের মধ্যে বেশ কয়েকটি সুবিধাজনক লাইব্রেরি রয়েছে যা এটিকে আরও সহজ করে তোলে। এই লাইব্রেরিগুলির সাহায্যে, ডেভেলপাররা ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করে এমন JSON-RPC রিকোয়েস্ট (আড়ালে) শুরু করার জন্য সহজ, এক-লাইনের পদ্ধতি লিখতে পারেন।
-অনুগ্রহ করে মনে রাখবেন যে [The Merge](/roadmap/merge/) থেকে, একটি নোড চালানোর জন্য ইথেরিয়াম সফ্টওয়্যারের দুটি সংযুক্ত অংশ - একটি এক্সিকিউশন ক্লায়েন্ট এবং একটি কনসেন্সাস ক্লায়েন্ট - প্রয়োজন। অনুগ্রহ করে নিশ্চিত করুন যে আপনার নোডে একটি এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট উভয়ই অন্তর্ভুক্ত আছে। যদি আপনার নোডটি আপনার স্থানীয় মেশিনে না থাকে (যেমন, আপনার নোডটি একটি AWS ইনস্ট্যান্সে চলছে) তাহলে টিউটোরিয়ালে সেই অনুযায়ী IP ঠিকানাগুলি আপডেট করুন। আরও তথ্যের জন্য অনুগ্রহ করে আমাদের [একটি নোড চালানো](/developers/docs/nodes-and-clients/run-a-node/) বিষয়ক পৃষ্ঠা দেখুন।
+অনুগ্রহ করে মনে রাখবেন যে [The Merge](/roadmap/merge/)-এর পর থেকে, একটি নোড চালানোর জন্য ইথিরিয়াম সফ্টওয়্যারের দুটি সংযুক্ত অংশ - একটি এক্সিকিউশন ক্লায়েন্ট এবং একটি কনসেন্সাস ক্লায়েন্ট - প্রয়োজন। অনুগ্রহ করে নিশ্চিত করুন যে আপনার নোড-এ একটি এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট উভয়ই অন্তর্ভুক্ত রয়েছে। যদি আপনার নোড আপনার লোকাল মেশিনে না থাকে (যেমন, আপনার নোড একটি AWS ইনস্ট্যান্সে চলছে) তবে টিউটোরিয়ালে আইপি (IP) ঠিকানাগুলি সেই অনুযায়ী আপডেট করুন। আরও তথ্যের জন্য অনুগ্রহ করে [একটি নোড চালানো](/developers/docs/nodes-and-clients/run-a-node/) সম্পর্কিত আমাদের পৃষ্ঠাটি দেখুন।
## পূর্বশর্ত {#prerequisites}
-জাভাস্ক্রিপ্ট বোঝার পাশাপাশি, [ইথেরিয়াম স্ট্যাক](/developers/docs/ethereum-stack/) এবং [ইথেরিয়াম ক্লায়েন্ট](/developers/docs/nodes-and-clients/) বোঝা সহায়ক হতে পারে।
+জাভাস্ক্রিপ্ট বোঝার পাশাপাশি, [ইথিরিয়াম স্ট্যাক](/developers/docs/ethereum-stack/) এবং [ইথিরিয়াম ক্লায়েন্ট](/developers/docs/nodes-and-clients/) বোঝা সহায়ক হতে পারে।
-## একটি লাইব্রেরি কেন ব্যবহার করবেন? {#why-use-a-library}
+## কেন একটি লাইব্রেরি ব্যবহার করবেন? {#why-use-a-library}
-এই লাইব্রেরিগুলি সরাসরি একটি Ethereum নোডের সাথে ইন্টারঅ্যাক্ট করার জটিলতাকে অনেকটাই সহজ করে দেয়। তারা ইউটিলিটি ফাংশনও (যেমন, ETH-কে Gwei-তে রূপান্তর করা) সরবরাহ করে যাতে একজন ডেভেলপার হিসেবে আপনি Ethereum ক্লায়েন্টের জটিলতা নিয়ে কাজ করার জন্য কম সময় ব্যয় করতে পারেন এবং আপনার অ্যাপ্লিকেশনের অনন্য কার্যকারিতার উপর বেশি সময় মনোনিবেশ করতে পারেন।
+এই লাইব্রেরিগুলি সরাসরি একটি ইথিরিয়াম নোড-এর সাথে ইন্টারঅ্যাক্ট করার বেশিরভাগ জটিলতা দূর করে। এগুলি ইউটিলিটি ফাংশনও প্রদান করে (যেমন, ETH কে Gwei-তে রূপান্তর করা) যাতে একজন ডেভেলপার হিসেবে আপনি ইথিরিয়াম ক্লায়েন্ট-এর জটিলতাগুলি মোকাবেলা করতে কম সময় ব্যয় করতে পারেন এবং আপনার অ্যাপ্লিকেশনের অনন্য কার্যকারিতার উপর বেশি সময় ফোকাস করতে পারেন।
## লাইব্রেরির বৈশিষ্ট্য {#library-features}
-### ইথেরিয়াম নোডগুলির সাথে সংযোগ করুন {#connect-to-ethereum-nodes}
+### ইথিরিয়াম নোড-এর সাথে সংযোগ করুন {#connect-to-ethereum-nodes}
-প্রদানকারীদের ব্যবহার করে, এই লাইব্রেরিগুলি আপনাকে ইথেরিয়াম-এর সাথে সংযোগ স্থাপন করতে এবং এর ডেটা পড়তে দেয়, তা JSON-RPC, INFURA, Etherscan, Alchemy বা MetaMask-এর মাধ্যমেই হোক না কেন।
+প্রোভাইডার ব্যবহার করে, এই লাইব্রেরিগুলি আপনাকে ইথিরিয়ামের সাথে সংযোগ করতে এবং এর ডেটা পড়তে দেয়, তা JSON-RPC, INFURA, Etherscan, Alchemy বা MetaMask-এর মাধ্যমেই হোক না কেন।
-> **সতর্কবার্তা:** Web3.js মার্চ ৪, ২০২৫-এ আর্কাইভ করা হয়েছে। [ঘোষণাটি পড়ুন](https://blog.chainsafe.io/web3-js-sunset/)। নতুন প্রকল্পের জন্য [ethers.js](https://ethers.org) বা [viem](https://viem.sh) এর মতো বিকল্প লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন।
+> **সতর্কতা:** Web3.js 4 মার্চ, 2025-এ আর্কাইভ করা হয়েছিল। [ঘোষণাটি পড়ুন](https://blog.chainsafe.io/web3-js-sunset/)। নতুন প্রজেক্টের জন্য [ethers.js](https://ethers.org) বা [viem](https://viem.sh)-এর মতো বিকল্প লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন।
**Ethers উদাহরণ**
```js
-// একটি ব্রাউজারপ্রোভাইডার একটি স্ট্যান্ডার্ড Web3 প্রদানকারীকে মোড়ানো হয়, যা হলো
-// মেটামাস্ক প্রতিটি পৃষ্ঠায় window.ethereum হিসেবে যা ইনজেক্ট করে
+// একটি BrowserProvider একটি স্ট্যান্ডার্ড Web3 প্রোভাইডারকে র্যাপ করে, যা
+// মেটামাস্ক প্রতিটি পেজে window.ethereum হিসেবে ইনজেক্ট করে
const provider = new ethers.BrowserProvider(window.ethereum)
-// মেটামাস্ক প্লাগইনটি লেনদেনে স্বাক্ষর করার অনুমতিও দেয়
-// ইথার পাঠাতে এবং ব্লকচেইনের মধ্যে অবস্থা পরিবর্তন করতে অর্থ প্রদান করতে।
-// এর জন্য, আমাদের অ্যাকাউন্ট সাইনার প্রয়োজন...
+// মেটামাস্ক প্লাগইন ট্রানজ্যাকশন সাইন করারও অনুমতি দেয় যাতে
+// ইথার পাঠানো যায় এবং ব্লকচেইনের মধ্যে স্টেট পরিবর্তন করার জন্য পে করা যায়।
+// এর জন্য, আমাদের অ্যাকাউন্ট সাইনার প্রয়োজন...
const signer = provider.getSigner()
```
@@ -48,12 +48,12 @@ var web3 = new Web3("http://localhost:8545")
// অথবা
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
-// প্রদানকারী পরিবর্তন করুন
+// প্রোভাইডার পরিবর্তন করুন
web3.setProvider("ws://localhost:8546")
// অথবা
web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
-// node.js-এ IPC প্রদানকারী ব্যবহার করে
+// node.js-এ IPC প্রোভাইডার ব্যবহার করা হচ্ছে
var net = require("net")
var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os পাথ
// অথবা
@@ -64,60 +64,60 @@ var web3 = new Web3(
// লিনাক্সে পাথটি হলো: "/users/myuser/.ethereum/geth.ipc"
```
-একবার সেট আপ হয়ে গেলে আপনি এর জন্য ব্লকচেইন জিজ্ঞাসা করতে সক্ষম হবেন:
+একবার সেট আপ হয়ে গেলে আপনি ব্লকচেইন-এ নিম্নলিখিত বিষয়গুলির জন্য কোয়েরি করতে পারবেন:
- ব্লক নম্বর
- গ্যাস অনুমান
-- স্মার্ট কন্ট্র্যাক্ট ইভেন্ট
-- নেটওয়ার্ক আইডি
-- এবং আরও...
+- স্মার্ট কন্ট্রাক্ট ইভেন্ট
+- নেটওয়ার্ক আইডি
+- এবং আরও অনেক কিছু...
### ওয়ালেট কার্যকারিতা {#wallet-functionality}
-এই লাইব্রেরিগুলি আপনাকে ওয়ালেট তৈরি করতে, কী পরিচালনা করতে এবং লেনদেনে স্বাক্ষর করার কার্যকারিতা দেয়।
+এই লাইব্রেরিগুলি আপনাকে ওয়ালেট তৈরি করতে, কী (keys) পরিচালনা করতে এবং লেনদেন সাইন করতে কার্যকারিতা দেয়।
-এখানে Ethers থেকে একটি উদাহরণ দেওয়া হল
+এখানে Ethers থেকে একটি উদাহরণ দেওয়া হলো
```js
-// একটি স্মৃতিচিহ্ন থেকে একটি ওয়ালেট ইনস্ট্যান্স তৈরি করুন...
+// একটি নেমোনিক থেকে একটি ওয়ালেট ইনস্ট্যান্স তৈরি করুন...
mnemonic =
"announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
walletMnemonic = Wallet.fromPhrase(mnemonic)
-// ...অথবা একটি ব্যক্তিগত কী থেকে
+// ...অথবা একটি প্রাইভেট কি থেকে
walletPrivateKey = new Wallet(walletMnemonic.privateKey)
walletMnemonic.address === walletPrivateKey.address
-// সত্য
+// true
-// সাইনার API অনুযায়ী একটি প্রতিশ্রুতি হিসাবে ঠিকানা
+// Signer API অনুযায়ী Promise হিসেবে অ্যাড্রেস
walletMnemonic.getAddress()
// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
-// একটি ওয়ালেট ঠিকানাও সিঙ্ক্রোনাসভাবে উপলব্ধ
+// একটি ওয়ালেট অ্যাড্রেস সিঙ্ক্রোনাসভাবেও পাওয়া যায়
walletMnemonic.address
// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
-// অভ্যন্তরীণ ক্রিপ্টোগ্রাফিক উপাদান
+// অভ্যন্তরীণ ক্রিপ্টোগ্রাফিক উপাদানসমূহ
walletMnemonic.privateKey
// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
walletMnemonic.publicKey
// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
-// ওয়ালেট স্মৃতিচিহ্ন
+// ওয়ালেট নেমোনিক
walletMnemonic.mnemonic
// {
-// locale: 'en',
-// path: 'm/44\'/60\'/0\'/0/0',
-// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
+// locale: 'en',
+// path: 'm/44\'/60\'/0\'/0/0',
+// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
// }
-// দ্রষ্টব্য: একটি ব্যক্তিগত কী দিয়ে তৈরি একটি ওয়ালেটে থাকে না
-// একটি স্মৃতিচিহ্ন (ডেরিভেশন এটি প্রতিরোধ করে)
+// দ্রষ্টব্য: প্রাইভেট কি দিয়ে তৈরি করা একটি ওয়ালেট-এ
+// কোনো নেমোনিক থাকে না (ডেরিভেশন এটি প্রতিরোধ করে)
walletPrivateKey.mnemonic
-// শূন্য
+// null
-// একটি বার্তায় স্বাক্ষর করা
+// একটি মেসেজ সাইন করা হচ্ছে
walletMnemonic.signMessage("Hello World")
// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
@@ -126,15 +126,15 @@ tx = {
value: utils.parseEther("1.0"),
}
-// একটি লেনদেনে স্বাক্ষর করা
+// একটি ট্রানজ্যাকশন সাইন করা হচ্ছে
walletMnemonic.signTransaction(tx)
// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
-// সংযোগ পদ্ধতি এর একটি নতুন উদাহরণ প্রদান করে
-// একজন প্রদানকারীর সাথে সংযুক্ত ওয়ালেট
+// connect মেথডটি একটি নতুন ইনস্ট্যান্স রিটার্ন করে যা
+// একটি প্রোভাইডারের সাথে সংযুক্ত ওয়ালেট
wallet = walletMnemonic.connect(provider)
-// নেটওয়ার্ক জিজ্ঞাসা করা হচ্ছে
+// নেটওয়ার্কে কোয়েরি করা হচ্ছে
wallet.getBalance()
// { Promise: { BigNumber: "42" } }
wallet.getTransactionCount()
@@ -148,18 +148,18 @@ wallet.sendTransaction(tx)
একবার সেট আপ হয়ে গেলে আপনি সক্ষম হবেন:
-- অ্যাকাউন্ট তৈরি করুন
-- লেনদেন পাঠান
-- লেনদেনে স্বাক্ষর করুন
-- এবং আরও...
+- একাউন্ট তৈরি করতে
+- লেনদেন পাঠাতে
+- লেনদেন সাইন করতে
+- এবং আরও অনেক কিছু...
-### স্মার্ট কন্ট্র্যাক্ট ফাংশনের সাথে ইন্টারঅ্যাক্ট করুন {#interact-with-smart-contract-functions}
+### স্মার্ট কন্ট্রাক্ট ফাংশনগুলির সাথে ইন্টারঅ্যাক্ট করুন {#interact-with-smart-contract-functions}
-জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরিগুলি আপনার অ্যাপ্লিকেশনকে একটি সংকলিত চুক্তির অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) পড়ার মাধ্যমে স্মার্ট কন্ট্র্যাক্ট ফাংশন কল করার অনুমতি দেয়।
+জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরিগুলি আপনার অ্যাপ্লিকেশনকে একটি সংকলিত চুক্তির অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) পড়ে স্মার্ট কন্ট্রাক্ট ফাংশন কল করার অনুমতি দেয়।
-ABI মূলত চুক্তির ফাংশনগুলিকে একটি JSON ফর্ম্যাটে ব্যাখ্যা করে এবং আপনাকে এটিকে একটি সাধারণ জাভাস্ক্রিপ্ট অবজেক্টের মতো ব্যবহার করতে দেয়।
+ABI মূলত JSON ফর্ম্যাটে চুক্তির ফাংশনগুলি ব্যাখ্যা করে এবং আপনাকে এটিকে একটি সাধারণ জাভাস্ক্রিপ্ট অবজেক্টের মতো ব্যবহার করতে দেয়।
-সুতরাং নিম্নলিখিত সলিডিটি চুক্তি:
+সুতরাং নিম্নলিখিত Solidity চুক্তিটি:
```solidity
contract Test {
@@ -208,28 +208,28 @@ contract Test {
}]
```
-এর মানে আপনি করতে পারেন:
+এর মানে আপনি পারেন:
-- স্মার্ট কন্ট্র্যাক্টে একটি লেনদেন পাঠান এবং এর পদ্ধতি কার্যকর করুন
-- EVM-এ কার্যকর করার সময় একটি পদ্ধতি কার্যকর করতে যে গ্যাস লাগবে তা অনুমান করার জন্য কল করুন
-- একটি চুক্তি স্থাপন করুন
-- এবং আরও...
+- স্মার্ট কন্ট্রাক্ট-এ একটি লেনদেন পাঠাতে এবং এর পদ্ধতি কার্যকর করতে
+- ইথিরিয়াম ভার্চুয়াল মেশিন-এ কার্যকর করার সময় একটি পদ্ধতি কার্যকর করতে কত গ্যাস লাগবে তা অনুমান করতে কল করতে
+- একটি চুক্তি স্থাপন (Deploy) করতে
+- এবং আরও অনেক কিছু...
### ইউটিলিটি ফাংশন {#utility-functions}
-ইউটিলিটি ফাংশন আপনাকে সুবিধাজনক শর্টকাট দেয় যা ইথেরিয়াম দিয়ে নির্মাণকে একটু সহজ করে তোলে।
+ইউটিলিটি ফাংশনগুলি আপনাকে সুবিধাজনক শর্টকাট দেয় যা ইথিরিয়ামের সাথে তৈরি করাকে কিছুটা সহজ করে তোলে।
-ETH মান ডিফল্টভাবে Wei-তে থাকে। ১ ETH = ১,০০০,০০০,০০০,০০০,০০০,০০০ WEI – এর মানে হল আপনি অনেক সংখ্যার সাথে কাজ করছেন! `web3.utils.toWei` আপনার জন্য ইথারকে Wei-তে রূপান্তর করে।
+ডিফল্টরূপে ETH মানগুলি Wei-তে থাকে। 1 ETH = 1,000,000,000,000,000,000 WEI – এর মানে আপনি অনেক সংখ্যার সাথে কাজ করছেন! `web3.utils.toWei` আপনার জন্য ইথারকে Wei-তে রূপান্তর করে।
-এবং ethers-এ এটি এইরকম দেখায়:
+এবং ethers-এ এটি দেখতে এইরকম:
```js
-// একটি অ্যাকাউন্টের ব্যালেন্স পান (ঠিকানা বা ENS নাম দ্বারা)
+// একটি অ্যাকাউন্টের ব্যালেন্স পান (অ্যাড্রেস বা ENS নাম দ্বারা)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }
-// প্রায়শই আপনাকে ব্যবহারকারীর জন্য আউটপুট ফরম্যাট করতে হবে
-// যারা wei (wei-এর পরিবর্তে) ইথারে মান দেখতে পছন্দ করে
+// প্রায়শই আপনাকে ব্যবহারকারীর জন্য আউটপুট ফরম্যাট করতে হবে
+// যারা (wei-এর পরিবর্তে) ইথারে ভ্যালু দেখতে পছন্দ করে
ethers.utils.formatEther(balance)
// '2.337132817842795605'
```
@@ -239,51 +239,62 @@ ethers.utils.formatEther(balance)
## উপলব্ধ লাইব্রেরি {#available-libraries}
-**Web3.js -** **_ইথেরিয়াম জাভাস্ক্রিপ্ট API।_**
+**Web3.js -** **_ইথিরিয়াম জাভাস্ক্রিপ্ট এপিআই (API)।_**
- [ডকুমেন্টেশন](https://docs.web3js.org)
-- [GitHub](https://github.com/ethereum/web3.js)
+- [গিটহাব (GitHub)](https://github.com/ethereum/web3.js)
-**Ethers.js -** **_জাভাস্ক্রিপ্ট এবং টাইপস্ক্রিপ্টে সম্পূর্ণ ইথেরিয়াম ওয়ালেট প্রয়োগ এবং ইউটিলিটি।_**
+**Ethers.js -** **_জাভাস্ক্রিপ্ট এবং টাইপস্ক্রিপ্টে সম্পূর্ণ ইথিরিয়াম ওয়ালেট বাস্তবায়ন এবং ইউটিলিটি।_**
- [Ethers.js হোম](https://ethers.org/)
- [ডকুমেন্টেশন](https://docs.ethers.io)
-- [GitHub](https://github.com/ethers-io/ethers.js)
+- [গিটহাব (GitHub)](https://github.com/ethers-io/ethers.js)
-**The Graph -** **_ইথেরিয়াম এবং IPFS ডেটা ইন্ডেক্স করার এবং GraphQL ব্যবহার করে এটি জিজ্ঞাসা করার জন্য একটি প্রোটোকল।_**
+**The Graph -** **_ইথিরিয়াম এবং IPFS ডেটা ইনডেক্স করার এবং GraphQL ব্যবহার করে এটি কোয়েরি করার জন্য একটি প্রটোকল।_**
- [The Graph](https://thegraph.com)
-- [Graph Explorer](https://thegraph.com/explorer)
+- [Graph এক্সপ্লোরার](https://thegraph.com/explorer)
- [ডকুমেন্টেশন](https://thegraph.com/docs)
-- [GitHub](https://github.com/graphprotocol)
-- [Discord](https://thegraph.com/discord)
+- [গিটহাব (GitHub)](https://github.com/graphprotocol)
+- [ডিসকর্ড (Discord)](https://thegraph.com/discord)
-**Alchemy SDK -** **_উন্নত এপিআই সহ Ethers.js এর চারপাশে র্যাপার।_**
+**Alchemy SDK -** **_উন্নত এপিআই (API) সহ Ethers.js-এর চারপাশে র্যাপার।_**
- [ডকুমেন্টেশন](https://www.alchemy.com/docs)
-- [GitHub](https://github.com/alchemyplatform/alchemy-sdk-js)
+- [গিটহাব (GitHub)](https://github.com/alchemyplatform/alchemy-sdk-js)
-**viem -** **_ইথেরিয়াম-এর জন্য টাইপস্ক্রিপ্ট ইন্টারফেস।_**
+**viem -** **_ইথিরিয়ামের জন্য টাইপস্ক্রিপ্ট ইন্টারফেস।_**
- [ডকুমেন্টেশন](https://viem.sh)
-- [GitHub](https://github.com/wagmi-dev/viem)
+- [গিটহাব (GitHub)](https://github.com/wagmi-dev/viem)
-**Drift -** **_অন্তর্নির্মিত ক্যাশিং, হুক এবং পরীক্ষা মক সহ টাইপস্ক্রিপ্ট মেটা-লাইব্রেরি।_**
+**Codex -** **_কয়েক ডজন চেইন জুড়ে রিয়েল-টাইম, সমৃদ্ধ ব্লকচেইন ডেটা এপিআই (API)।_**
+
+- [ডকুমেন্টেশন](https://docs.codex.io)
+- [এক্সপ্লোরার](https://docs.codex.io/explore)
+- [গিটহাব (GitHub)](https://github.com/Codex-Data)
+- [ডিসকর্ড (Discord)](https://discord.com/invite/mFpUhT3vAq)
+
+**Drift -** **_বিল্ট-ইন ক্যাশিং, হুক এবং টেস্ট মক সহ টাইপস্ক্রিপ্ট মেটা-লাইব্রেরি।_**
- [ডকুমেন্টেশন](https://ryangoree.github.io/drift/)
-- [GitHub](https://github.com/ryangoree/drift/)
+- [গিটহাব (GitHub)](https://github.com/ryangoree/drift/)
## আরও পড়ুন {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
## সম্পর্কিত বিষয় {#related-topics}
-- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
+- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [জাভাস্ক্রিপ্টে Ethereum ব্লকচেইন ব্যবহার করতে Web3js সেট আপ করুন](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– আপনার প্রোজেক্টে web3.js সেট আপ করার জন্য নির্দেশাবলী।_
-- [জাভাস্ক্রিপ্ট থেকে একটি স্মার্ট কন্ট্র্যাক্ট কল করা](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI টোকেন ব্যবহার করে দেখুন, জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে কন্ট্র্যাক্ট ফাংশন কল করতে হয়।_
+- [জাভাস্ক্রিপ্টে ইথিরিয়াম ব্লকচেইন ব্যবহার করতে Web3js সেট আপ করুন](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– আপনার প্রজেক্টে web3.js সেট আপ করার জন্য নির্দেশাবলী।_
+- [জাভাস্ক্রিপ্ট থেকে একটি স্মার্ট কন্ট্রাক্ট কল করা](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI টোকেন ব্যবহার করে, জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে চুক্তির ফাংশন কল করতে হয় তা দেখুন।_
- [web3 এবং Alchemy ব্যবহার করে লেনদেন পাঠানো](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– ব্যাকএন্ড থেকে লেনদেন পাঠানোর জন্য ধাপে ধাপে ওয়াকথ্রু।_
+
+## টিউটোরিয়াল: ইথিরিয়ামে জাভাস্ক্রিপ্ট এপিআই (API) এবং ওয়েবসকেট (WebSockets) {#tutorials}
+
+- [ওয়েবসকেট (WebSockets) ব্যবহার করা](/developers/tutorials/using-websockets/) _– ইথিরিয়াম ইভেন্টগুলিতে সাবস্ক্রাইব করতে এবং রিয়েল-টাইম JSON-RPC রিকোয়েস্ট করতে Alchemy-এর সাথে ওয়েবসকেট কীভাবে ব্যবহার করবেন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/blocks/index.md b/public/content/translations/bn/developers/docs/blocks/index.md
index d8043c56eda..676fc9a737d 100644
--- a/public/content/translations/bn/developers/docs/blocks/index.md
+++ b/public/content/translations/bn/developers/docs/blocks/index.md
@@ -1,153 +1,153 @@
---
-title: "ব্লক"
-description: "ইথেরিয়াম ব্লকচেইনের ব্লকগুলির একটি সংক্ষিপ্ত বিবরণ – তাদের ডেটা স্ট্রাকচার, কেন তাদের প্রয়োজন এবং কীভাবে সেগুলি তৈরি করা হয়।"
+title: ব্লকস
+description: ইথিরিয়াম ব্লকচেইনে ব্লকসমূহের একটি ওভারভিউ – এদের ডাটা স্ট্রাকচার, কেন এদের প্রয়োজন, এবং কীভাবে এগুলো তৈরি হয়।
lang: bn
---
-ব্লক হলো চেইনে থাকা আগের ব্লকের একটি হ্যাস সহ লেনদেনের ব্যাচ। এটি ব্লকগুলিকে একসাথে (একটি চেইনে) লিঙ্ক করে কারণ হ্যাসগুলি ক্রিপ্টোগ্রাফিকভাবে ব্লক ডেটা থেকে উদ্ভূত হয়। এটি জালিয়াতি প্রতিরোধ করে, কারণ ইতিহাসে যেকোনো ব্লকে একটি পরিবর্তন পরবর্তী সমস্ত ব্লককে অবৈধ করে দেবে কারণ পরবর্তী সমস্ত হ্যাস পরিবর্তিত হবে এবং ব্লকচেইন পরিচালনাকারী প্রত্যেকে তা লক্ষ্য করবে।
+ব্লকস হলো চেইনের পূর্ববর্তী ব্লকের হ্যাস সহ লেনদেনের ব্যাচ। এটি ব্লকগুলোকে একত্রে (একটি চেইনে) যুক্ত করে কারণ হ্যাসগুলো ক্রিপ্টোগ্রাফিকভাবে ব্লক ডাটা থেকে উদ্ভূত হয়। এটি জালিয়াতি প্রতিরোধ করে, কারণ ইতিহাসের যেকোনো ব্লকে একটি পরিবর্তন পরবর্তী সমস্ত ব্লককে বাতিল করে দেবে, যেহেতু পরবর্তী সমস্ত হ্যাস পরিবর্তিত হবে এবং ব্লকচেইন চালানো প্রত্যেকেই তা লক্ষ্য করবে।
## পূর্বশর্ত {#prerequisites}
-ব্লক একটি খুব শিক্ষানবিস-বান্ধব বিষয়। কিন্তু আপনাকে এই পৃষ্ঠাটি আরও ভালভাবে বুঝতে সাহায্য করার জন্য, আমরা আপনাকে প্রথমে [অ্যাকাউন্ট](/developers/docs/accounts/), [লেনদেন](/developers/docs/transactions/), এবং আমাদের [ইথেরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ার পরামর্শ দিই।
+ব্লকস খুব শিক্ষানবিস-বান্ধব একটি বিষয়। তবে এই পৃষ্ঠাটি আরও ভালোভাবে বুঝতে সাহায্য করার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [একাউন্ট](/developers/docs/accounts/), [লেনদেন](/developers/docs/transactions/), এবং আমাদের [ইথিরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ুন।
-## কেন ব্লক? {#why-blocks}
+## ব্লক কেন? {#why-blocks}
-ইথেরিয়াম নেটওয়ার্কের সমস্ত অংশগ্রহণকারী একটি সিঙ্ক্রোনাইজড অবস্থা বজায় রাখে এবং লেনদেনের সঠিক ইতিহাসে সম্মত হয় তা নিশ্চিত করার জন্য, আমরা লেনদেনগুলিকে ব্লকে ব্যাচ করি। এর মানে হল কয়েক ডজন (বা শত শত) লেনদেন একবারে প্রতিশ্রুতিবদ্ধ, সম্মত এবং সিঙ্ক্রোনাইজ করা হয়।
+[ইথিরিয়াম](/) নেটওয়ার্কের সকল অংশগ্রহণকারী একটি সিঙ্ক্রোনাইজড স্টেট বজায় রাখে এবং লেনদেনের সঠিক ইতিহাসে একমত হয় তা নিশ্চিত করতে, আমরা লেনদেনগুলোকে ব্লকে ব্যাচ করি। এর মানে হলো ডজন ডজন (বা শত শত) লেনদেন একসাথে কমিট করা হয়, সম্মত হওয়া হয় এবং সিঙ্ক্রোনাইজ করা হয়।
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে অভিযোজিত চিত্র_
+
+_চিত্রটি [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে গৃহীত_
-কমিটগুলিকে ব্যবধান দিয়ে, আমরা সমস্ত নেটওয়ার্ক অংশগ্রহণকারীদের কনসেন্সাসে আসার জন্য যথেষ্ট সময় দিই: যদিও প্রতি সেকেন্ডে কয়েক ডজনবার লেনদেনের অনুরোধ ঘটে, ইথেরিয়ামে প্রতি বারো সেকেন্ডে একবারই ব্লক তৈরি এবং প্রতিশ্রুতিবদ্ধ হয়।
+কমিটগুলোর মধ্যে ব্যবধান রেখে, আমরা সমস্ত নেটওয়ার্ক অংশগ্রহণকারীদের কনসেন্সাস-এ আসার জন্য পর্যাপ্ত সময় দিই: যদিও প্রতি সেকেন্ডে ডজন ডজন লেনদেনের অনুরোধ ঘটে, ইথিরিয়ামে প্রতি বারো সেকেন্ডে একবার ব্লক তৈরি এবং কমিট করা হয়।
-## ব্লকগুলি কীভাবে কাজ করে {#how-blocks-work}
+## ব্লক কীভাবে কাজ করে {#how-blocks-work}
-লেনদেনের ইতিহাস সংরক্ষণ করার জন্য, ব্লকগুলিকে কঠোরভাবে অর্ডার করা হয় (তৈরি করা প্রতিটি নতুন ব্লকে তার মূল ব্লকের একটি রেফারেন্স থাকে), এবং ব্লকের মধ্যে লেনদেনগুলিও কঠোরভাবে অর্ডার করা হয়। বিরল ঘটনা ব্যতীত, যেকোনো নির্দিষ্ট সময়ে, নেটওয়ার্কের সমস্ত অংশগ্রহণকারী ব্লকের সঠিক সংখ্যা এবং ইতিহাসের বিষয়ে একমত, এবং পরবর্তী ব্লকে বর্তমান লাইভ লেনদেনের অনুরোধগুলিকে ব্যাচ করার জন্য কাজ করছে।
+লেনদেনের ইতিহাস সংরক্ষণ করতে, ব্লকগুলোকে কঠোরভাবে ক্রমানুসারে সাজানো হয় (তৈরি করা প্রতিটি নতুন ব্লকে এর প্যারেন্ট ব্লকের রেফারেন্স থাকে), এবং ব্লকের ভেতরের লেনদেনগুলোকেও কঠোরভাবে ক্রমানুসারে সাজানো হয়। বিরল ক্ষেত্র ছাড়া, যেকোনো নির্দিষ্ট সময়ে, নেটওয়ার্কের সমস্ত অংশগ্রহণকারী ব্লকের সঠিক সংখ্যা এবং ইতিহাসে একমত থাকে এবং বর্তমান লাইভ লেনদেনের অনুরোধগুলোকে পরবর্তী ব্লকে ব্যাচ করার জন্য কাজ করে।
-নেটওয়ার্কে এলোমেলোভাবে নির্বাচিত একজন ভ্যালিডেটর দ্বারা একটি ব্লক একত্রিত হয়ে গেলে, এটি নেটওয়ার্কের বাকি অংশে প্রচারিত হয়; সমস্ত নোড এই ব্লকটিকে তাদের ব্লকচেইনের শেষে যুক্ত করে এবং পরবর্তী ব্লক তৈরি করার জন্য একজন নতুন ভ্যালিডেটর নির্বাচন করা হয়। সঠিক ব্লক-অ্যাসেম্বলি প্রক্রিয়া এবং প্রতিশ্রুতি/কনসেন্সাস প্রক্রিয়াটি বর্তমানে ইথেরিয়ামের “প্রুফ-অফ-স্টেক” প্রোটোকল দ্বারা নির্দিষ্ট করা হয়েছে।
+একবার নেটওয়ার্কে এলোমেলোভাবে নির্বাচিত একজন ভ্যালিডেটর দ্বারা একটি ব্লক একত্রিত হলে, এটি নেটওয়ার্কের বাকি অংশে ছড়িয়ে দেওয়া হয়; সমস্ত নোড এই ব্লকটিকে তাদের ব্লকচেইনের শেষে যুক্ত করে এবং পরবর্তী ব্লক তৈরি করার জন্য একজন নতুন ভ্যালিডেটর নির্বাচন করা হয়। সঠিক ব্লক-অ্যাসেম্বলি প্রক্রিয়া এবং কমিটমেন্ট/কনসেন্সাস প্রক্রিয়া বর্তমানে ইথিরিয়ামের "প্রুফ-অফ-স্টেক" প্রটোকল দ্বারা নির্দিষ্ট করা হয়েছে।
-## প্রুফ-অফ-স্টেক প্রোটোকল {#proof-of-stake-protocol}
+## প্রুফ-অফ-স্টেক প্রটোকল {#proof-of-stake-protocol}
-প্রুফ-অফ-স্টেক মানে নিম্নলিখিত:
+প্রুফ-অফ-স্টেক এর অর্থ হলো:
-- ভ্যালিডেটিং নোডগুলিকে খারাপ আচরণের বিরুদ্ধে সমান্তরাল হিসাবে একটি ডিপোজিট চুক্তিতে 32 ETH স্টেক করতে হবে। এটি নেটওয়ার্ককে সুরক্ষিত করতে সাহায্য করে কারণ প্রমাণিতভাবে অসৎ কার্যকলাপের ফলে সেই স্টেকের কিছু বা সমস্ত ধ্বংস হয়ে যায়।
-- প্রতিটি স্লটে (বারো সেকেন্ডের ব্যবধানে) একজন ভ্যালিডেটরকে এলোমেলোভাবে ব্লক প্রোপোজার হিসেবে নির্বাচিত করা হয়। তারা লেনদেনগুলিকে একসাথে বান্ডিল করে, সেগুলি সম্পাদন করে এবং একটি নতুন 'অবস্থা' নির্ধারণ করে। তারা এই তথ্যটিকে একটি ব্লকে আবৃত করে এবং অন্যান্য ভ্যালিডেটরদের কাছে পাঠায়।
-- অন্যান্য ভ্যালিডেটর যারা নতুন ব্লক সম্পর্কে জানতে পারে তারা লেনদেনগুলি পুনরায় কার্যকর করে তা নিশ্চিত করার জন্য যে তারা বিশ্বব্যাপী অবস্থার প্রস্তাবিত পরিবর্তনে সম্মত। ব্লকটি বৈধ বলে ধরে নিয়ে, তারা এটিকে তাদের নিজস্ব ডাটাবেসে যুক্ত করে।
-- যদি একজন ভ্যালিডেটর একই স্লটের জন্য দুটি পরস্পরবিরোধী ব্লক সম্পর্কে জানতে পারে, তবে তারা তাদের ফর্ক-চয়েস অ্যালগরিদম ব্যবহার করে সবচেয়ে বেশি স্টেক করা ETH দ্বারা সমর্থিত একটি বেছে নেয়।
+- ভ্যালিডেটিং নোডগুলোকে খারাপ আচরণের বিরুদ্ধে জামানত হিসেবে একটি ডিপোজিট কন্টাক্ট-এ 32 ETH স্টেক করতে হয়। এটি নেটওয়ার্ককে রক্ষা করতে সাহায্য করে কারণ প্রমাণিত অসৎ কার্যকলাপের ফলে সেই স্টেক-এর কিছু অংশ বা পুরোটাই ধ্বংস হয়ে যায়।
+- প্রতিটি স্লটে (বারো সেকেন্ডের ব্যবধানে) একজন ভ্যালিডেটরকে এলোমেলোভাবে ব্লক প্রপোজার হিসেবে নির্বাচন করা হয়। তারা লেনদেনগুলোকে একসাথে বান্ডিল করে, সেগুলো এক্সিকিউট করে এবং একটি নতুন 'স্টেট' নির্ধারণ করে। তারা এই তথ্যগুলোকে একটি ব্লকে মুড়িয়ে অন্যান্য ভ্যালিডেটরস-এর কাছে পাঠিয়ে দেয়।
+- অন্যান্য ভ্যালিডেটরস যারা নতুন ব্লক সম্পর্কে জানতে পারে তারা গ্লোবাল স্টেট-এ প্রস্তাবিত পরিবর্তনের সাথে একমত কিনা তা নিশ্চিত করতে লেনদেনগুলো পুনরায় এক্সিকিউট করে। ব্লকটি বৈধ ধরে নিয়ে, তারা এটিকে তাদের নিজস্ব ডাটাবেসে যুক্ত করে।
+- যদি কোনো ভ্যালিডেটর একই স্লটের জন্য দুটি সাংঘর্ষিক ব্লক সম্পর্কে জানতে পারে, তবে তারা সবচেয়ে বেশি স্টেক করা ETH দ্বারা সমর্থিত ব্লকটি বেছে নিতে তাদের ফর্ক-চয়েস এ্যালগরিদম ব্যবহার করে।
[প্রুফ-অফ-স্টেক সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos)
-## একটি ব্লকের মধ্যে কী আছে? {#block-anatomy}
-
-একটি ব্লকের মধ্যে অনেক তথ্য থাকে। সর্বোচ্চ স্তরে একটি ব্লকে নিম্নলিখিত ক্ষেত্রগুলি থাকে:
-
-| ক্ষেত্র | বিবরণ |
-| :--------------- | :--------------------------------------------------------- |
-| `slot` | ব্লকটি যে স্লটের অন্তর্গত |
-| `proposer_index` | ব্লকের প্রস্তাবকারী ভ্যালিডেটরের আইডি |
-| `parent_root` | পূর্ববর্তী ব্লকের হ্যাস |
-| `state_root` | স্টেট অবজেক্টের রুট হ্যাস |
-| `body` | নীচে সংজ্ঞায়িত হিসাবে বিভিন্ন ক্ষেত্র ধারণকারী একটি বস্তু |
-
-ব্লকের `বডি`তে নিজস্ব কয়েকটি ক্ষেত্র রয়েছে:
-
-| ক্ষেত্র | বিবরণ |
-| :------------------- | :------------------------------------------------------------------ |
-| `randao_reveal` | পরবর্তী ব্লক প্রোপোজার নির্বাচন করতে ব্যবহৃত একটি মান |
-| `eth1_data` | ডিপোজিট চুক্তি সম্পর্কে তথ্য |
-| `graffiti` | ব্লক ট্যাগ করতে ব্যবহৃত অবাধ তথ্য |
-| `proposer_slashings` | স্ল্যাশ করা হবে এমন ভ্যালিডেটরদের তালিকা |
-| `attester_slashings` | স্ল্যাশ করা হবে এমন প্রত্যয়নকারীদের তালিকা |
-| `attestations` | পূর্ববর্তী স্লটের বিরুদ্ধে করা প্রত্যয়নের তালিকা |
-| `ডিপোজিট` | ডিপোজিট চুক্তিতে নতুন জমার তালিকা |
-| `voluntary_exits` | নেটওয়ার্ক থেকে প্রস্থানকারী ভ্যালিডেটরদের তালিকা |
-| `sync_aggregate` | লাইট ক্লায়েন্টদের পরিষেবা দেওয়ার জন্য ব্যবহৃত ভ্যালিডেটরদের উপসেট |
-| `execution_payload` | এক্সিকিউশন ক্লায়েন্ট থেকে প্রেরিত লেনদেন |
-
-`attestations` ক্ষেত্রটিতে ব্লকের সমস্ত প্রত্যয়নের একটি তালিকা রয়েছে। প্রত্যয়নগুলির নিজস্ব ডেটা টাইপ রয়েছে যা বিভিন্ন ডেটা ধারণ করে। প্রতিটি প্রত্যয়নে রয়েছে:
-
-| ক্ষেত্র | বিবরণ |
-| :----------------- | :---------------------------------------------------------- |
-| `aggregation_bits` | এই প্রত্যয়নে কোন ভ্যালিডেটররা অংশ নিয়েছিল তার একটি তালিকা |
-| `data` | একাধিক উপক্ষেত্র সহ একটি ধারক |
-| `signature` | `data` অংশের বিরুদ্ধে এক সেট ভ্যালিডেটরের সামগ্রিক স্বাক্ষর |
-
-`attestation`-এর `data` ক্ষেত্রটিতে নিম্নলিখিতগুলি রয়েছে:
-
-| ক্ষেত্র | বিবরণ |
-| :------------------ | :------------------------------------------- |
-| `slot` | যে স্লটের সাথে প্রত্যয়নটি সম্পর্কিত |
-| `index` | প্রত্যয়নকারী ভ্যালিডেটরদের জন্য সূচক |
-| `beacon_block_root` | চেইনের হেড হিসাবে দেখা বীকন ব্লকের রুট হ্যাস |
-| `উৎস` | শেষ ন্যায্য চেকপয়েন্ট |
-| `target` | সর্বশেষ ইপোক বাউন্ডারি ব্লক |
-
-`execution_payload`-এ লেনদেন সম্পাদন করা বিশ্বব্যাপী অবস্থা আপডেট করে। সমস্ত ক্লায়েন্ট `execution_payload`-এ লেনদেনগুলি পুনরায় সম্পাদন করে তা নিশ্চিত করার জন্য যে নতুন অবস্থা নতুন ব্লকের `state_root` ক্ষেত্রের সাথে মেলে। এইভাবে ক্লায়েন্টরা বলতে পারে যে একটি নতুন ব্লক বৈধ এবং তাদের ব্লকচেইনে যোগ করার জন্য নিরাপদ। `execution payload` নিজেই বিভিন্ন ক্ষেত্র সহ একটি বস্তু। এছাড়াও একটি `execution_payload_header` রয়েছে যাতে এক্সিকিউশন ডেটা সম্পর্কে গুরুত্বপূর্ণ সংক্ষিপ্ত তথ্য থাকে। এই ডেটা স্ট্রাকচারগুলি নিম্নলিখিতভাবে সংগঠিত:
-
-`execution_payload_header`-এ নিম্নলিখিত ক্ষেত্রগুলি রয়েছে:
-
-| ক্ষেত্র | বিবরণ |
-| :------------------ | :------------------------------------------------------------------- |
-| `parent_hash` | প্যারেন্ট ব্লকের হ্যাস |
-| `fee_recipient` | লেনদেন ফি প্রদানের জন্য অ্যাকাউন্টের ঠিকানা |
-| `state_root` | এই ব্লকে পরিবর্তন প্রয়োগ করার পর বিশ্বব্যাপী অবস্থার জন্য রুট হ্যাস |
-| `receipts_root` | লেনদেন রসিদ ট্রাই-এর হ্যাস |
-| `logs_bloom` | ইভেন্ট লগ ধারণকারী ডেটা স্ট্রাকচার |
-| `prev_randao` | এলোমেলো ভ্যালিডেটর নির্বাচনে ব্যবহৃত মান |
-| `block_number` | বর্তমান ব্লকের সংখ্যা |
-| `gas_limit` | এই ব্লকে অনুমোদিত সর্বোচ্চ গ্যাস |
-| `gas_used` | এই ব্লকে ব্যবহৃত গ্যাসের প্রকৃত পরিমাণ |
-| `timestamp` | ব্লকের সময় |
-| `extra_data` | কাঁচা বাইট হিসাবে অবাধ অতিরিক্ত ডেটা |
-| `base_fee_per_gas` | বেস ফি মান |
-| `block_hash` | এক্সিকিউশন ব্লকের হ্যাস |
-| `transactions_root` | পেলোডের লেনদেনগুলির রুট হ্যাস |
-| `withdrawal_root` | পেলোডের উত্তোলনের রুট হ্যাস |
-
-`execution_payload` নিজেই নিম্নলিখিতগুলি ধারণ করে (লক্ষ্য করুন এটি হেডার-এর অনুরূপ, তবে লেনদেনের রুট হ্যাসের পরিবর্তে এটিতে লেনদেন এবং উত্তোলনের তথ্যের আসল তালিকা অন্তর্ভুক্ত থাকে):
-
-| ক্ষেত্র | বিবরণ |
-| :----------------- | :------------------------------------------------------------------- |
-| `parent_hash` | প্যারেন্ট ব্লকের হ্যাস |
-| `fee_recipient` | লেনদেন ফি প্রদানের জন্য অ্যাকাউন্টের ঠিকানা |
-| `state_root` | এই ব্লকে পরিবর্তন প্রয়োগ করার পর বিশ্বব্যাপী অবস্থার জন্য রুট হ্যাস |
-| `receipts_root` | লেনদেন রসিদ ট্রাই-এর হ্যাস |
-| `logs_bloom` | ইভেন্ট লগ ধারণকারী ডেটা স্ট্রাকচার |
-| `prev_randao` | এলোমেলো ভ্যালিডেটর নির্বাচনে ব্যবহৃত মান |
-| `block_number` | বর্তমান ব্লকের সংখ্যা |
-| `gas_limit` | এই ব্লকে অনুমোদিত সর্বোচ্চ গ্যাস |
-| `gas_used` | এই ব্লকে ব্যবহৃত গ্যাসের প্রকৃত পরিমাণ |
-| `timestamp` | ব্লকের সময় |
-| `extra_data` | কাঁচা বাইট হিসাবে অবাধ অতিরিক্ত ডেটা |
-| `base_fee_per_gas` | বেস ফি মান |
-| `block_hash` | এক্সিকিউশন ব্লকের হ্যাস |
-| `লেনদেনসমূহ` | সম্পাদন করা হবে এমন লেনদেনের তালিকা |
-| `উইথড্রয়াল` | উত্তোলন বস্তুর তালিকা |
-
-`withdrawals` তালিকায় `withdrawal` বস্তুগুলি নিম্নলিখিত উপায়ে গঠিত:
-
-| ক্ষেত্র | বিবরণ |
-| :--------------- | :----------------------------------- |
-| `address` | অ্যাকাউন্টের ঠিকানা যা উত্তোলন করেছে |
-| `amount` | উত্তোলনের পরিমাণ |
-| `index` | উত্তোলন সূচক মান |
-| `validatorIndex` | ভ্যালিডেটর সূচক মান |
-
-## ব্লকের সময় {#block-time}
-
-ব্লকের সময় বলতে ব্লকগুলিকে পৃথক করার সময়কে বোঝায়। ইথেরিয়ামে, সময়কে বারো সেকেন্ডের এককে ভাগ করা হয় যাকে 'স্লট' বলা হয়। প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন একক ভ্যালিডেটর নির্বাচন করা হয়। ধরে নেওয়া হচ্ছে সমস্ত ভ্যালিডেটর অনলাইন এবং সম্পূর্ণ কার্যকরী, প্রতিটি স্লটে একটি ব্লক থাকবে, যার অর্থ ব্লকের সময় 12 সেকেন্ড। তবে, মাঝে মাঝে ভ্যালিডেটররা ব্লক প্রস্তাব করার জন্য ডাকলে অফলাইন থাকতে পারে, যার অর্থ স্লটগুলি কখনও কখনও খালি যেতে পারে।
-
-এই বাস্তবায়ন প্রুফ-অফ-ওয়ার্ক ভিত্তিক সিস্টেম থেকে ভিন্ন যেখানে ব্লকের সময় সম্ভাব্যতামূলক এবং প্রোটোকলের লক্ষ্য মাইনিং অসুবিধা দ্বারা সুর করা হয়। ইথেরিয়ামের [গড় ব্লক সময়](https://etherscan.io/chart/blocktime) এর একটি নিখুঁত উদাহরণ যেখানে প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক-এ রূপান্তরটি নতুন ১২ সেকেন্ডের ব্লক সময়ের ধারাবাহিকতার উপর ভিত্তি করে স্পষ্টভাবে অনুমান করা যেতে পারে।
+## একটি ব্লকে কী থাকে? {#block-anatomy}
+
+একটি ব্লকের মধ্যে প্রচুর তথ্য থাকে। সর্বোচ্চ স্তরে একটি ব্লকে নিম্নলিখিত ফিল্ডগুলো থাকে:
+
+| ফিল্ড | বিবরণ |
+| :--------------- | :---------------------------------------------------- |
+| `slot` | ব্লকটি যে স্লটের অন্তর্গত |
+| `proposer_index` | ব্লক প্রস্তাবকারী ভ্যালিডেটর-এর আইডি |
+| `parent_root` | পূর্ববর্তী ব্লকের হ্যাস |
+| `state_root` | স্টেট অবজেক্টের রুট হ্যাস |
+| `body` | নিচে সংজ্ঞায়িত বেশ কয়েকটি ফিল্ড ধারণকারী একটি অবজেক্ট |
+
+ব্লক `body`-তে নিজস্ব বেশ কয়েকটি ফিল্ড থাকে:
+
+| ফিল্ড | বিবরণ |
+| :------------------- | :----------------------------------------------- |
+| `randao_reveal` | পরবর্তী ব্লক প্রপোজার নির্বাচন করতে ব্যবহৃত একটি মান |
+| `eth1_data` | ডিপোজিট কন্টাক্ট সম্পর্কে তথ্য |
+| `graffiti` | ব্লক ট্যাগ করতে ব্যবহৃত ইচ্ছামতো ডাটা |
+| `proposer_slashings` | স্ল্যাশিং করা হবে এমন ভ্যালিডেটরস-এর তালিকা |
+| `attester_slashings` | স্ল্যাশিং করা হবে এমন অ্যাটেস্টারদের তালিকা |
+| `attestations` | পূর্ববর্তী স্লটগুলোর বিপরীতে করা এটেস্টেশন-এর তালিকা |
+| `deposits` | ডিপোজিট কন্টাক্ট-এ নতুন জমার তালিকা |
+| `voluntary_exits` | নেটওয়ার্ক থেকে বেরিয়ে যাওয়া ভ্যালিডেটরস-এর তালিকা |
+| `sync_aggregate` | লাইট ক্লায়েন্টদের পরিষেবা দিতে ব্যবহৃত ভ্যালিডেটরস-এর সাবসেট |
+| `execution_payload` | এক্সিকিউশন ক্লায়েন্ট থেকে পাস করা লেনদেন |
+
+`attestations` ফিল্ডে ব্লকের সমস্ত এটেস্টেশন-এর একটি তালিকা থাকে। এটেস্টেশন-এর নিজস্ব ডাটা টাইপ রয়েছে যাতে বেশ কিছু ডাটা থাকে। প্রতিটি এটেস্টেশন-এ থাকে:
+
+| ফিল্ড | বিবরণ |
+| :----------------- | :------------------------------------------------------------- |
+| `aggregation_bits` | এই এটেস্টেশন-এ কোন ভ্যালিডেটরস অংশগ্রহণ করেছে তার একটি তালিকা |
+| `data` | একাধিক সাবফিল্ড সহ একটি কন্টেইনার |
+| `signature` | `data` অংশের বিপরীতে ভ্যালিডেটরস-এর একটি সেটের সামগ্রিক স্বাক্ষর |
+
+`attestation`-এর `data` ফিল্ডে নিম্নলিখিত বিষয়গুলো থাকে:
+
+| ফিল্ড | বিবরণ |
+| :------------------ | :-------------------------------------------------------------- |
+| `slot` | এটেস্টেশন-এর সাথে সম্পর্কিত স্লট |
+| `index` | অ্যাটেস্ট করা ভ্যালিডেটরস-এর সূচক |
+| `beacon_block_root` | চেইনের হেড হিসেবে দেখা বিকন ব্লকের রুট হ্যাস |
+| `source` | সর্বশেষ জাস্টিফাইড চেকপয়েন্ট |
+| `target` | সর্বশেষ এপোক বাউন্ডারি ব্লক |
+
+`execution_payload`-এ লেনদেনগুলো এক্সিকিউট করলে গ্লোবাল স্টেট আপডেট হয়। নতুন স্টেটটি নতুন ব্লকের `state_root` ফিল্ডের সাথে মিলেছে কিনা তা নিশ্চিত করতে সমস্ত ক্লায়েন্ট `execution_payload`-এর লেনদেনগুলো পুনরায় এক্সিকিউট করে। এভাবেই ক্লায়েন্টরা বুঝতে পারে যে একটি নতুন ব্লক বৈধ এবং তাদের ব্লকচেইনে যুক্ত করা নিরাপদ। `execution payload` নিজেই বেশ কয়েকটি ফিল্ড সহ একটি অবজেক্ট। এছাড়াও একটি `execution_payload_header` রয়েছে যাতে এক্সিকিউশন ডাটা সম্পর্কে গুরুত্বপূর্ণ সারসংক্ষেপ তথ্য থাকে। এই ডাটা স্ট্রাকচারগুলো নিম্নরূপভাবে সাজানো হয়েছে:
+
+`execution_payload_header`-এ নিম্নলিখিত ফিল্ডগুলো থাকে:
+
+| ফিল্ড | বিবরণ |
+| :------------------ | :------------------------------------------------------------------ |
+| `parent_hash` | প্যারেন্ট ব্লকের হ্যাস |
+| `fee_recipient` | লেনদেন ফি প্রদানের জন্য একাউন্ট এডড্রেস |
+| `state_root` | এই ব্লকে পরিবর্তনগুলো প্রয়োগ করার পর গ্লোবাল স্টেট-এর রুট হ্যাস |
+| `receipts_root` | লেনদেনের রসিদ ট্রাইয়ের হ্যাস |
+| `logs_bloom` | ইভেন্ট লগ ধারণকারী ডাটা স্ট্রাকচার |
+| `prev_randao` | এলোমেলো ভ্যালিডেটর নির্বাচনে ব্যবহৃত মান |
+| `block_number` | বর্তমান ব্লকের নম্বর |
+| `gas_limit` | এই ব্লকে অনুমোদিত সর্বোচ্চ গ্যাস |
+| `gas_used` | এই ব্লকে ব্যবহৃত প্রকৃত গ্যাস-এর পরিমাণ |
+| `timestamp` | ব্লকের সময় |
+| `extra_data` | র (raw) বাইট হিসেবে ইচ্ছামতো অতিরিক্ত ডাটা |
+| `base_fee_per_gas` | বেস ফি মান |
+| `block_hash` | এক্সিকিউশন ব্লকের হ্যাস |
+| `transactions_root` | পেলোডে থাকা লেনদেনের রুট হ্যাস |
+| `withdrawal_root` | পেলোডে থাকা উত্তোলনের রুট হ্যাস |
+
+`execution_payload`-এ নিম্নলিখিত বিষয়গুলো থাকে (লক্ষ্য করুন যে এটি হেডারের মতোই, তবে লেনদেনের রুট হ্যাস-এর পরিবর্তে এতে লেনদেনের প্রকৃত তালিকা এবং উত্তোলনের তথ্য অন্তর্ভুক্ত থাকে):
+
+| ফিল্ড | বিবরণ |
+| :----------------- | :------------------------------------------------------------------ |
+| `parent_hash` | প্যারেন্ট ব্লকের হ্যাস |
+| `fee_recipient` | লেনদেন ফি প্রদানের জন্য একাউন্ট এডড্রেস |
+| `state_root` | এই ব্লকে পরিবর্তনগুলো প্রয়োগ করার পর গ্লোবাল স্টেট-এর রুট হ্যাস |
+| `receipts_root` | লেনদেনের রসিদ ট্রাইয়ের হ্যাস |
+| `logs_bloom` | ইভেন্ট লগ ধারণকারী ডাটা স্ট্রাকচার |
+| `prev_randao` | এলোমেলো ভ্যালিডেটর নির্বাচনে ব্যবহৃত মান |
+| `block_number` | বর্তমান ব্লকের নম্বর |
+| `gas_limit` | এই ব্লকে অনুমোদিত সর্বোচ্চ গ্যাস |
+| `gas_used` | এই ব্লকে ব্যবহৃত প্রকৃত গ্যাস-এর পরিমাণ |
+| `timestamp` | ব্লকের সময় |
+| `extra_data` | র (raw) বাইট হিসেবে ইচ্ছামতো অতিরিক্ত ডাটা |
+| `base_fee_per_gas` | বেস ফি মান |
+| `block_hash` | এক্সিকিউশন ব্লকের হ্যাস |
+| `transactions` | এক্সিকিউট করা হবে এমন লেনদেনের তালিকা |
+| `withdrawals` | উত্তোলন অবজেক্টের তালিকা |
+
+`withdrawals` তালিকায় নিম্নলিখিত উপায়ে গঠিত `withdrawal` অবজেক্ট থাকে:
+
+| ফিল্ড | বিবরণ |
+| :--------------- | :--------------------------------- |
+| `address` | উত্তোলন করা একাউন্ট এডড্রেস |
+| `amount` | উত্তোলনের পরিমাণ |
+| `index` | উত্তোলনের সূচক মান |
+| `validatorIndex` | ভ্যালিডেটর সূচক মান |
+
+## ব্লক টাইম {#block-time}
+
+ব্লক টাইম বলতে ব্লকগুলোকে আলাদা করার সময়কে বোঝায়। ইথিরিয়ামে, সময়কে বারো সেকেন্ডের ইউনিটে ভাগ করা হয় যাকে 'স্লট' বলা হয়। প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন একক ভ্যালিডেটর নির্বাচন করা হয়। ধরে নেওয়া যায় যে সমস্ত ভ্যালিডেটরস অনলাইনে আছে এবং সম্পূর্ণ কার্যকর, প্রতিটি স্লটে একটি ব্লক থাকবে, যার অর্থ ব্লক টাইম হলো 12s। তবে, মাঝে মাঝে ব্লক প্রস্তাব করার জন্য ডাকার সময় ভ্যালিডেটরস অফলাইনে থাকতে পারে, যার অর্থ স্লটগুলো কখনও কখনও খালি যেতে পারে।
+
+এই বাস্তবায়নটি প্রুফ-অফ-ওয়ার্ক ভিত্তিক সিস্টেমগুলো থেকে আলাদা যেখানে ব্লক টাইমগুলো সম্ভাব্য এবং প্রটোকলের লক্ষ্য মাইনিং অসুবিধার দ্বারা টিউন করা হয়। ইথিরিয়ামের [গড় ব্লক টাইম](https://etherscan.io/chart/blocktime) এর একটি নিখুঁত উদাহরণ যার মাধ্যমে নতুন 12s ব্লক টাইমের ধারাবাহিকতার উপর ভিত্তি করে প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক-এ রূপান্তর স্পষ্টভাবে অনুমান করা যায়।
## ব্লকের আকার {#block-size}
-একটি চূড়ান্ত গুরুত্বপূর্ণ দ্রষ্টব্য হলো ব্লকগুলি নিজেরাই আকারে সীমাবদ্ধ। প্রতিটি ব্লকের একটি লক্ষ্য আকার 30 মিলিয়ন গ্যাস কিন্তু নেটওয়ার্কের চাহিদা অনুযায়ী ব্লকের আকার বাড়বে বা কমবে, 60 মিলিয়ন গ্যাসের ব্লক সীমা পর্যন্ত (2x লক্ষ্য ব্লক আকার)। ব্লক গ্যাস সীমা পূর্ববর্তী ব্লকের গ্যাস সীমার থেকে 1/1024 ফ্যাক্টর দ্বারা উপরের দিকে বা নীচের দিকে সামঞ্জস্য করা যেতে পারে। ফলস্বরূপ, ভ্যালিডেটররা কনসেন্সাসের মাধ্যমে ব্লক গ্যাস সীমা পরিবর্তন করতে পারে। ব্লকের সমস্ত লেনদেন দ্বারা ব্যয় করা মোট গ্যাসের পরিমাণ অবশ্যই ব্লক গ্যাস সীমার চেয়ে কম হতে হবে। এটি গুরুত্বপূর্ণ কারণ এটি নিশ্চিত করে যে ব্লকগুলি যথেচ্ছভাবে বড় হতে পারে না। যদি ব্লকগুলি যথেচ্ছভাবে বড় হতে পারত, তবে স্থান এবং গতির প্রয়োজনীয়তার কারণে কম কর্মক্ষম সম্পূর্ণ নোডগুলি ধীরে ধীরে নেটওয়ার্কের সাথে তাল মিলিয়ে চলতে অক্ষম হয়ে পড়ত। ব্লক যত বড় হবে, পরবর্তী স্লটের জন্য সময়মতো প্রক্রিয়া করার জন্য তত বেশি কম্পিউটিং শক্তি প্রয়োজন হবে। এটি একটি কেন্দ্রীভূত শক্তি, যা ব্লকের আকার সীমাবদ্ধ করে প্রতিরোধ করা হয়।
+একটি চূড়ান্ত গুরুত্বপূর্ণ বিষয় হলো ব্লকগুলো নিজেরাই আকারে সীমাবদ্ধ। প্রতিটি ব্লকের লক্ষ্যমাত্রা আকার হলো 30 মিলিয়ন গ্যাস তবে নেটওয়ার্কের চাহিদা অনুযায়ী ব্লকের আকার বৃদ্ধি বা হ্রাস পাবে, যা 60 মিলিয়ন গ্যাস (লক্ষ্যমাত্রা ব্লকের আকারের 2x) ব্লক লিমিট পর্যন্ত হতে পারে। ব্লক গ্যাস লিমিট পূর্ববর্তী ব্লকের গ্যাস লিমিট থেকে 1/1024 ফ্যাক্টর দ্বারা উপরের দিকে বা নিচের দিকে সামঞ্জস্য করা যেতে পারে। ফলস্বরূপ, ভ্যালিডেটরস কনসেন্সাস-এর মাধ্যমে ব্লক গ্যাস লিমিট পরিবর্তন করতে পারে। ব্লকের সমস্ত লেনদেন দ্বারা ব্যয় করা মোট গ্যাস-এর পরিমাণ অবশ্যই ব্লক গ্যাস লিমিট-এর চেয়ে কম হতে হবে। এটি গুরুত্বপূর্ণ কারণ এটি নিশ্চিত করে যে ব্লকগুলো ইচ্ছামতো বড় হতে পারে না। যদি ব্লকগুলো ইচ্ছামতো বড় হতে পারত, তবে কম পারফরম্যান্স সম্পন্ন ফুল নোডগুলো স্থান এবং গতির প্রয়োজনীয়তার কারণে ধীরে ধীরে নেটওয়ার্কের সাথে তাল মিলিয়ে চলতে অক্ষম হয়ে পড়ত। ব্লক যত বড় হবে, পরবর্তী স্লটের জন্য সময়মতো সেগুলো প্রসেস করতে তত বেশি কম্পিউটিং শক্তির প্রয়োজন হবে। এটি একটি কেন্দ্রীভূত শক্তি, যা ব্লকের আকার সীমাবদ্ধ করার মাধ্যমে প্রতিরোধ করা হয়।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যুক্ত করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
- [লেনদেন](/developers/docs/transactions/)
- [গ্যাস](/developers/docs/gas/)
-- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos)
+- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/bridges/index.md b/public/content/translations/bn/developers/docs/bridges/index.md
index f08689758e2..5205085f8e4 100644
--- a/public/content/translations/bn/developers/docs/bridges/index.md
+++ b/public/content/translations/bn/developers/docs/bridges/index.md
@@ -1,109 +1,109 @@
---
-title: "ব্রিজ"
-description: "ডেভেলপারদের জন্য ব্রিজিং-এর একটি সংক্ষিপ্ত বিবরণ"
+title: ব্রিজ
+description: ডেভেলপারদের জন্য ব্রিজিংয়ের একটি ওভারভিউ
lang: bn
---
-L1 ব্লকচেইন এবং L2 [স্কেলিং](/developers/docs/scaling/) সমাধানের বিস্তারের সাথে, ডিসেন্ট্রালাইজড এপ্লিকেশনগুলোর ক্রমবর্ধমান সংখ্যা ক্রস-চেইন হওয়ার পাশাপাশি, চেইন জুড়ে যোগাযোগ এবং সম্পদ স্থানান্তরের প্রয়োজনীয়তা নেটওয়ার্ক পরিকাঠামোর একটি অপরিহার্য অংশ হয়ে উঠেছে। এটি সম্ভব করতে বিভিন্ন ধরণের ব্রিজ বিদ্যমান রয়েছে।
+L1 ব্লকচেইন এবং L2 [স্কেলিং](/developers/docs/scaling/) সলিউশনের প্রসারের সাথে সাথে, ক্রস-চেইনে যাওয়া ডিসেন্ট্রালাইজড এপ্লিকেশনের সংখ্যা ক্রমশ বৃদ্ধি পাচ্ছে, যার ফলে চেইনগুলোর মধ্যে যোগাযোগ এবং সম্পদ স্থানান্তরের প্রয়োজনীয়তা নেটওয়ার্ক অবকাঠামোর একটি অপরিহার্য অংশে পরিণত হয়েছে। এটি সম্ভব করতে বিভিন্ন ধরনের ব্রিজ রয়েছে।
-## ব্রিজের প্রয়োজনীয়তা {#need-for-bridges}
+## ব্রিজের প্রয়োজনীয়তা {#need-for-bridges}
-ব্লকচেইন নেটওয়ার্কগুলিকে সংযুক্ত করার জন্য ব্রিজ বিদ্যমান। তারা ব্লকচেইনগুলির মধ্যে সংযোগ এবং আন্তঃকার্যক্ষমতা সক্ষম করে।
+ব্লকচেইন নেটওয়ার্কগুলোকে সংযুক্ত করার জন্য ব্রিজ বিদ্যমান। এগুলো ব্লকচেইনগুলোর মধ্যে কানেক্টিভিটি এবং ইন্টারঅপারেবিলিটি সক্ষম করে।
-ব্লকচেইনগুলি বিচ্ছিন্ন পরিবেশে বিদ্যমান, যার অর্থ স্বাভাবিকভাবে অন্যান্য ব্লকচেইনের সাথে লেনদেন এবং যোগাযোগের কোনো উপায় নেই। ফলস্বরূপ, যদিও একটি ইকোসিস্টেমের মধ্যে উল্লেখযোগ্য কার্যকলাপ এবং উদ্ভাবন থাকতে পারে, এটি অন্যান্য ইকোসিস্টেমের সাথে সংযোগ এবং আন্তঃকার্যক্ষমতার অভাব দ্বারা সীমাবদ্ধ।
+ব্লকচেইনগুলো সাইলোড (siloed) বা বিচ্ছিন্ন পরিবেশে বিদ্যমান থাকে, যার মানে হলো ব্লকচেইনগুলোর স্বাভাবিকভাবে অন্য ব্লকচেইনগুলোর সাথে ট্রেড এবং যোগাযোগ করার কোনো উপায় নেই। ফলস্বরূপ, একটি ইকোসিস্টেমের মধ্যে উল্লেখযোগ্য কার্যকলাপ এবং উদ্ভাবন থাকতে পারলেও, অন্যান্য ইকোসিস্টেমের সাথে কানেক্টিভিটি এবং ইন্টারঅপারেবিলিটির অভাবের কারণে এটি সীমাবদ্ধ থাকে।
-ব্রিজ বিচ্ছিন্ন ব্লকচেইন পরিবেশকে একে অপরের সাথে সংযুক্ত করার একটি উপায় সরবরাহ করে। তারা ব্লকচেইনগুলির মধ্যে একটি পরিবহন রুট স্থাপন করে যেখানে টোকেন, বার্তা, নির্বিচারে ডেটা এবং এমনকি [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) কলগুলি এক চেইন থেকে অন্য চেইনে স্থানান্তর করা যায়।
+ব্রিজগুলো বিচ্ছিন্ন ব্লকচেইন পরিবেশগুলোকে একে অপরের সাথে সংযুক্ত করার একটি উপায় প্রদান করে। এগুলো ব্লকচেইনগুলোর মধ্যে একটি পরিবহন রুট স্থাপন করে যেখানে টোকেন, মেসেজ, আরবিট্রারি ডাটা এবং এমনকি [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) কলগুলো এক চেইন থেকে অন্য চেইনে স্থানান্তর করা যেতে পারে।
-## ব্রিজের সুবিধাসমূহ {#benefits-of-bridges}
+## ব্রিজের সুবিধা {#benefits-of-bridges}
-সহজ কথায়, ব্রিজগুলি ব্লকচেইন নেটওয়ার্কগুলিকে নিজেদের মধ্যে ডেটা বিনিময় এবং সম্পদ স্থানান্তরের অনুমতি দিয়ে অসংখ্য ব্যবহারের ক্ষেত্র উন্মুক্ত করে।
+সহজ কথায়, ব্রিজগুলো ব্লকচেইন নেটওয়ার্কগুলোকে তাদের মধ্যে ডাটা আদান-প্রদান এবং সম্পদ স্থানান্তর করার অনুমতি দিয়ে অসংখ্য ইউজ কেস আনলক করে।
-ব্লকচেইনগুলির অনন্য শক্তি, দুর্বলতা এবং এপ্লিকেশন তৈরির পদ্ধতি রয়েছে (যেমন গতি, থ্রুপুট, ব্যয়বহুলতা ইত্যাদি)। ব্রিজগুলি ব্লকচেইনগুলিকে একে অপরের উদ্ভাবনগুলিকে কাজে লাগাতে সক্ষম করে সামগ্রিক ক্রিপ্টো ইকোসিস্টেমের বিকাশে সহায়তা করে।
+ব্লকচেইনগুলোর নিজস্ব শক্তি, দুর্বলতা এবং অ্যাপ্লিকেশন তৈরির পদ্ধতি (যেমন গতি, থ্রুপুট, খরচ ইত্যাদি) রয়েছে। ব্রিজগুলো ব্লকচেইনগুলোকে একে অপরের উদ্ভাবনগুলো কাজে লাগাতে সক্ষম করে সামগ্রিক ক্রিপ্টো ইকোসিস্টেমের উন্নয়নে সহায়তা করে।
-ডেভেলপারদের জন্য, ব্রিজ নিম্নলিখিতগুলি সক্ষম করে:
+ডেভেলপারদের জন্য, ব্রিজগুলো নিম্নলিখিত বিষয়গুলো সক্ষম করে:
-- চেইন জুড়ে যেকোনো ডেটা, তথ্য এবং সম্পদের স্থানান্তর।
-- প্রোটোকলগুলির জন্য নতুন বৈশিষ্ট্য এবং ব্যবহারের ক্ষেত্রগুলি আনলক করা কারণ ব্রিজগুলি প্রোটোকলগুলি কী অফার করতে পারে তার জন্য ডিজাইনের স্থান প্রসারিত করে। উদাহরণস্বরূপ, ইথেরিয়াম মেইননেট-এ মূলত ডিপ্লয় করা একটি ইল্ড ফার্মিং প্রোটোকল সমস্ত EVM-সামঞ্জস্যপূর্ণ চেইনে লিকুইডিটি পুল অফার করতে পারে।
-- বিভিন্ন ব্লকচেইনের শক্তিকে কাজে লাগানোর সুযোগ। উদাহরণস্বরূপ, ডেভেলপাররা তাদের ডিএ্যাপস রোলআপ এবং সাইডচেইন জুড়ে ডিপ্লয় করে বিভিন্ন L2 সমাধান দ্বারা প্রদত্ত কম ফি থেকে উপকৃত হতে পারে এবং ব্যবহারকারীরা তাদের মধ্যে ব্রিজ করতে পারে।
-- নতুন পণ্য তৈরি করতে বিভিন্ন ব্লকচেইন ইকোসিস্টেমের ডেভেলপারদের মধ্যে সহযোগিতা।
-- বিভিন্ন ইকোসিস্টেম থেকে ব্যবহারকারী এবং কমিউনিটিকে তাদের ডিএ্যাপস-এর প্রতি আকৃষ্ট করা।
+- চেইনগুলোর মধ্যে যেকোনো ডাটা, তথ্য এবং সম্পদ স্থানান্তর।
+- প্রটোকলগুলোর জন্য নতুন ফিচার এবং ইউজ কেস আনলক করা, কারণ ব্রিজগুলো প্রটোকলগুলোর অফার করার ডিজাইন স্পেসকে প্রসারিত করে। উদাহরণস্বরূপ, মূলত [Ethereum](/) মেইননেটে ডিপ্লয় করা ইয়েল্ড ফার্মিংয়ের জন্য একটি প্রটোকল সমস্ত EVM-সামঞ্জস্যপূর্ণ চেইন জুড়ে লিকুইডিটি পুল অফার করতে পারে।
+- বিভিন্ন ব্লকচেইনের শক্তি কাজে লাগানোর সুযোগ। উদাহরণস্বরূপ, ডেভেলপাররা তাদের ডিএ্যাপস রেলআপস এবং সাইডচেইন জুড়ে ডিপ্লয় করে বিভিন্ন L2 সলিউশন দ্বারা অফার করা কম ফি থেকে উপকৃত হতে পারে এবং ব্যবহারকারীরা সেগুলোর মধ্যে ব্রিজ করতে পারে।
+- নতুন প্রোডাক্ট তৈরি করতে বিভিন্ন ব্লকচেইন ইকোসিস্টেমের ডেভেলপারদের মধ্যে সহযোগিতা।
+- বিভিন্ন ইকোসিস্টেম থেকে ব্যবহারকারী এবং কমিউনিটিগুলোকে তাদের ডিএ্যাপস-এ আকৃষ্ট করা।
## ব্রিজ কীভাবে কাজ করে? {#how-do-bridges-work}
-যদিও অনেক [ব্রিজ ডিজাইনের প্রকার](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/) রয়েছে, সম্পদের ক্রস-চেইন স্থানান্তরকে সহজতর করার তিনটি উপায় উল্লেখযোগ্য:
+যদিও অনেক [ধরনের ব্রিজের ডিজাইন](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/) রয়েছে, সম্পদের ক্রস-চেইন স্থানান্তর সহজতর করার তিনটি উপায় আলাদাভাবে চোখে পড়ে:
-- **লক এবং মিন্ট –** সোর্স চেইনে সম্পদ লক করুন এবং ডেস্টিনেশন চেইনে সম্পদ মিন্ট করুন।
-- **বার্ন এবং মিন্ট –** সোর্স চেইনে সম্পদ বার্ন করুন এবং ডেস্টিনেশন চেইনে সম্পদ মিন্ট করুন।
-- **এটমিক সোয়াপ –** অন্য কোনো পক্ষের সাথে সোর্স চেইনের সম্পদ ডেস্টিনেশন চেইনের সম্পদের জন্য সোয়াপ করুন।
+- **লক এবং মিন্ট –** সোর্স চেইনে সম্পদ লক করা এবং ডেসটিনেশন চেইনে সম্পদ মিন্ট করা।
+- **বার্ন এবং মিন্ট –** সোর্স চেইনে সম্পদ বার্ন করা এবং ডেসটিনেশন চেইনে সম্পদ মিন্ট করা।
+- **এটমিক সোয়াপ –** অন্য কোনো পক্ষের সাথে ডেসটিনেশন চেইনের সম্পদের বিনিময়ে সোর্স চেইনের সম্পদ সোয়াপ করা।
-## ব্রিজের প্রকারভেদ {#bridge-types}
+## ব্রিজের ধরন {#bridge-types}
-ব্রিজ সাধারণত নিম্নলিখিত বিভাগগুলির মধ্যে একটিতে শ্রেণীবদ্ধ করা যেতে পারে:
+ব্রিজগুলোকে সাধারণত নিচের যেকোনো একটি বিভাগে শ্রেণীবদ্ধ করা যেতে পারে:
-- **নেটিভ ব্রিজ –** এই ব্রিজগুলি সাধারণত একটি নির্দিষ্ট ব্লকচেইনে লিকুইডিটি বুটস্ট্র্যাপ করার জন্য তৈরি করা হয়, যা ব্যবহারকারীদের জন্য ইকোসিস্টেমে তহবিল স্থানান্তর করা সহজ করে তোলে। উদাহরণস্বরূপ, [Arbitrum Bridge](https://bridge.arbitrum.io/) ব্যবহারকারীদের জন্য ইথেরিয়াম মেইননেট থেকে Arbitrum-এ ব্রিজ করা সুবিধাজনক করার জন্য তৈরি করা হয়েছে। অন্যান্য এই ধরনের ব্রিজের মধ্যে রয়েছে Polygon PoS Bridge, [Optimism Gateway](https://app.optimism.io/bridge) ইত্যাদি।
-- **ভ্যালিডেটর বা ওরাকল-ভিত্তিক ব্রিজ –** এই ব্রিজগুলি ক্রস-চেইন স্থানান্তর যাচাই করার জন্য একটি বহিরাগত ভ্যালিডেটর সেট বা ওরাকলের উপর নির্ভর করে। উদাহরণ: Multichain এবং Across।
-- **সাধারণ বার্তা প্রেরণকারী ব্রিজ –** এই ব্রিজগুলি বার্তা এবং নির্বিচারে ডেটার পাশাপাশি চেইন জুড়ে সম্পদ স্থানান্তর করতে পারে। উদাহরণ: Axelar, LayerZero, এবং Nomad।
-- **লিকুইডিটি নেটওয়ার্ক –** এই ব্রিজগুলি প্রাথমিকভাবে এটমিক সোয়াপের মাধ্যমে এক চেইন থেকে অন্য চেইনে সম্পদ স্থানান্তরের উপর ফোকাস করে। সাধারণত, তারা ক্রস-চেইন বার্তা প্রেরণ সমর্থন করে না। উদাহরণ: Connext এবং Hop।
+- **নেটিভ ব্রিজ –** এই ব্রিজগুলো সাধারণত একটি নির্দিষ্ট ব্লকচেইনে লিকুইডিটি বুটস্ট্র্যাপ করার জন্য তৈরি করা হয়, যা ব্যবহারকারীদের জন্য ইকোসিস্টেমে ফান্ড স্থানান্তর করা সহজ করে তোলে। উদাহরণস্বরূপ, [Arbitrum Bridge](https://bridge.arbitrum.io/) তৈরি করা হয়েছে যাতে ব্যবহারকারীরা সুবিধাজনকভাবে Ethereum মেইননেট থেকে Arbitrum-এ ব্রিজ করতে পারে। এই ধরনের অন্যান্য ব্রিজের মধ্যে রয়েছে Polygon PoS Bridge, [Optimism Gateway](https://app.optimism.io/bridge) ইত্যাদি।
+- **ভ্যালিডেটর বা ওরাকল ভিত্তিক ব্রিজ –** এই ব্রিজগুলো ক্রস-চেইন স্থানান্তর যাচাই করার জন্য একটি এক্সটার্নাল ভ্যালিডেটর সেট বা ওরাকল-এর উপর নির্ভর করে। উদাহরণ: Multichain এবং Across।
+- **জেনারেলাইজড মেসেজ পাসিং ব্রিজ –** এই ব্রিজগুলো চেইনগুলোর মধ্যে মেসেজ এবং আরবিট্রারি ডাটার পাশাপাশি সম্পদ স্থানান্তর করতে পারে। উদাহরণ: Axelar, LayerZero এবং Nomad।
+- **লিকুইডিটি নেটওয়ার্ক –** এই ব্রিজগুলো মূলত এটমিক সোয়াপের মাধ্যমে এক চেইন থেকে অন্য চেইনে সম্পদ স্থানান্তরের উপর ফোকাস করে। সাধারণত, এগুলো ক্রস-চেইন মেসেজ পাসিং সমর্থন করে না। উদাহরণ: Connext এবং Hop।
-## বিবেচ্য বিষয়সমূহ {#trade-offs}
+## বিবেচ্য ট্রেড-অফগুলো {#trade-offs}
-ব্রিজের ক্ষেত্রে, কোনো নিখুঁত সমাধান নেই। বরং, একটি উদ্দেশ্য পূরণের জন্য কেবল কিছু ছাড় দেওয়া হয়। ডেভেলপার এবং ব্যবহারকারীরা নিম্নলিখিত বিষয়গুলির উপর ভিত্তি করে ব্রিজগুলি মূল্যায়ন করতে পারেন:
+ব্রিজের ক্ষেত্রে, কোনো নিখুঁত সমাধান নেই। বরং, একটি উদ্দেশ্য পূরণের জন্য শুধুমাত্র কিছু ট্রেড-অফ করা হয়। ডেভেলপার এবং ব্যবহারকারীরা নিচের বিষয়গুলোর ওপর ভিত্তি করে ব্রিজ মূল্যায়ন করতে পারেন:
-- **নিরাপত্তা –** সিস্টেমটি কে যাচাই করে? বাহ্যিক ভ্যালিডেটর দ্বারা সুরক্ষিত ব্রিজগুলি সাধারণত ব্লকচেইনের ভ্যালিডেটর দ্বারা স্থানীয়ভাবে বা নেটিভভাবে সুরক্ষিত ব্রিজের চেয়ে কম সুরক্ষিত।
-- **সুবিধা –** একটি লেনদেন সম্পূর্ণ করতে কত সময় লাগে, এবং একজন ব্যবহারকারীকে কতগুলি লেনদেনে স্বাক্ষর করতে হয়েছিল? একজন ডেভেলপারের জন্য, একটি ব্রিজকে একীভূত করতে কত সময় লাগে, এবং প্রক্রিয়াটি কতটা জটিল?
-- **সংযোগ –** একটি ব্রিজ কোন কোন ডেস্টিনেশন চেইনের সাথে সংযোগ স্থাপন করতে পারে (যেমন, রোলআপ, সাইডচেইন, অন্যান্য লেয়ার 1 ব্লকচেইন, ইত্যাদি), এবং একটি নতুন ব্লকচেইনকে একীভূত করা কতটা কঠিন?
-- **আরও জটিল ডেটা পাস করার ক্ষমতা –** একটি ব্রিজ কি চেইন জুড়ে বার্তা এবং আরও জটিল নির্বিচারে ডেটা স্থানান্তর করতে সক্ষম করে, নাকি এটি কেবল ক্রস-চেইন সম্পদ স্থানান্তর সমর্থন করে?
-- **খরচ-কার্যকারিতা –** একটি ব্রিজের মাধ্যমে চেইন জুড়ে সম্পদ স্থানান্তর করতে কত খরচ হয়? সাধারণত, ব্রিজগুলি গ্যাস খরচ এবং নির্দিষ্ট রুটের লিকুইডিটির উপর নির্ভর করে একটি নির্দিষ্ট বা পরিবর্তনশীল ফি চার্জ করে। এর নিরাপত্তা নিশ্চিত করার জন্য প্রয়োজনীয় মূলধনের উপর ভিত্তি করে একটি ব্রিজের খরচ-কার্যকারিতা মূল্যায়ন করাও গুরুত্বপূর্ণ।
+- **নিরাপত্তা –** সিস্টেমটি কে যাচাই করে? এক্সটার্নাল ভ্যালিডেটরস দ্বারা সুরক্ষিত ব্রিজগুলো সাধারণত ব্লকচেইনের ভ্যালিডেটরস দ্বারা লোকালি বা নেটিভভাবে সুরক্ষিত ব্রিজগুলোর চেয়ে কম সুরক্ষিত।
+- **সুবিধা –** একটি লেনদেন সম্পন্ন করতে কতক্ষণ সময় লাগে এবং একজন ব্যবহারকারীকে কয়টি লেনদেন সাইন করতে হয়? একজন ডেভেলপারের জন্য, একটি ব্রিজ ইন্টিগ্রেট করতে কতক্ষণ সময় লাগে এবং প্রক্রিয়াটি কতটা জটিল?
+- **কানেক্টিভিটি –** একটি ব্রিজ কোন কোন ভিন্ন ডেসটিনেশন চেইনকে সংযুক্ত করতে পারে (যেমন, রেলআপস, সাইডচেইন, অন্যান্য লেয়ার 1 ব্লকচেইন ইত্যাদি), এবং একটি নতুন ব্লকচেইন ইন্টিগ্রেট করা কতটা কঠিন?
+- **আরও জটিল ডাটা পাস করার ক্ষমতা –** একটি ব্রিজ কি চেইনগুলোর মধ্যে মেসেজ এবং আরও জটিল আরবিট্রারি ডাটা স্থানান্তর করতে সক্ষম, নাকি এটি শুধুমাত্র ক্রস-চেইন সম্পদ স্থানান্তর সমর্থন করে?
+- **খরচ-কার্যকারিতা –** একটি ব্রিজের মাধ্যমে চেইনগুলোর মধ্যে সম্পদ স্থানান্তর করতে কত খরচ হয়? সাধারণত, ব্রিজগুলো গ্যাস খরচ এবং নির্দিষ্ট রুটের লিকুইডিটির ওপর নির্ভর করে একটি নির্দিষ্ট বা পরিবর্তনশীল ফি চার্জ করে। এর নিরাপত্তা নিশ্চিত করার জন্য প্রয়োজনীয় মূলধনের ওপর ভিত্তি করে একটি ব্রিজের খরচ-কার্যকারিতা মূল্যায়ন করাও গুরুত্বপূর্ণ।
-একটি উচ্চ স্তরে, ব্রিজগুলিকে ট্রাস্টেড এবং ট্রাস্টলেস হিসাবে শ্রেণীবদ্ধ করা যেতে পারে।
+উচ্চ স্তরে, ব্রিজগুলোকে ট্রাস্টেড (trusted) এবং ট্রাস্টলেস (trustless) হিসেবে শ্রেণীবদ্ধ করা যেতে পারে।
-- **ট্রাস্টেড –** ট্রাস্টেড ব্রিজগুলি বাহ্যিকভাবে যাচাই করা হয়। তারা চেইন জুড়ে ডেটা পাঠানোর জন্য যাচাইকারীদের একটি বহিরাগত সেট (মাল্টি-সিগ সহ ফেডারেশন, মাল্টি-পার্টি কম্পিউটেশন সিস্টেম, ওরাকল নেটওয়ার্ক) ব্যবহার করে। ফলস্বরূপ, তারা দুর্দান্ত সংযোগের প্রস্তাব দিতে পারে এবং চেইন জুড়ে সম্পূর্ণ সাধারণ বার্তা প্রেরণ সক্ষম করে। এগুলি গতি এবং খরচ-কার্যকারিতার ক্ষেত্রেও ভাল কাজ করে। এটি নিরাপত্তার মূল্যে আসে, কারণ ব্যবহারকারীদের ব্রিজের নিরাপত্তার উপর নির্ভর করতে হয়।
-- **ট্রাস্টলেস –** এই ব্রিজগুলি যে ব্লকচেইনগুলিকে সংযুক্ত করছে এবং তাদের ভ্যালিডেটরদের উপর বার্তা এবং টোকেন স্থানান্তর করার জন্য নির্ভর করে। এগুলি 'ট্রাস্টলেস' কারণ তারা নতুন কোনো বিশ্বাসের অনুমান যোগ করে না (ব্লকচেইন ছাড়াও)। ফলস্বরূপ, ট্রাস্টলেস ব্রিজগুলিকে ট্রাস্টেড ব্রিজের চেয়ে বেশি সুরক্ষিত বলে মনে করা হয়।
+- **ট্রাস্টেড –** ট্রাস্টেড ব্রিজগুলো বাহ্যিকভাবে যাচাইকৃত। এগুলো চেইনগুলোর মধ্যে ডাটা পাঠানোর জন্য ভেরিফায়ারদের একটি এক্সটার্নাল সেট (মাল্টিসিগ সহ ফেডারেশন, মাল্টি-পার্টি কম্পিউটেশন সিস্টেম, ওরাকল নেটওয়ার্ক) ব্যবহার করে। ফলস্বরূপ, এগুলো দুর্দান্ত কানেক্টিভিটি অফার করতে পারে এবং চেইনগুলোর মধ্যে সম্পূর্ণ জেনারেলাইজড মেসেজ পাসিং সক্ষম করতে পারে। এগুলো গতি এবং খরচ-কার্যকারিতার দিক থেকেও ভালো পারফর্ম করে। তবে এর জন্য নিরাপত্তার সাথে আপস করতে হয়, কারণ ব্যবহারকারীদের ব্রিজের নিরাপত্তার ওপর নির্ভর করতে হয়।
+- **ট্রাস্টলেস –** এই ব্রিজগুলো মেসেজ এবং টোকেন স্থানান্তর করার জন্য তাদের সংযুক্ত ব্লকচেইন এবং সেগুলোর ভ্যালিডেটরস-এর ওপর নির্ভর করে। এগুলো 'ট্রাস্টলেস' কারণ এগুলো (ব্লকচেইনগুলোর পাশাপাশি) নতুন কোনো ট্রাস্ট এজাম্পশন যোগ করে না। ফলস্বরূপ, ট্রাস্টলেস ব্রিজগুলোকে ট্রাস্টেড ব্রিজের চেয়ে বেশি সুরক্ষিত বলে মনে করা হয়।
-অন্যান্য কারণের উপর ভিত্তি করে ট্রাস্টলেস ব্রিজগুলি মূল্যায়ন করতে, আমাদের অবশ্যই সেগুলিকে সাধারণ বার্তা প্রেরণকারী ব্রিজ এবং লিকুইডিটি নেটওয়ার্কে বিভক্ত করতে হবে।
+অন্যান্য বিষয়ের ওপর ভিত্তি করে ট্রাস্টলেস ব্রিজগুলোকে মূল্যায়ন করতে, আমাদের সেগুলোকে জেনারেলাইজড মেসেজ পাসিং ব্রিজ এবং লিকুইডিটি নেটওয়ার্কে ভাগ করতে হবে।
-- **সাধারণ বার্তা প্রেরণকারী ব্রিজ –** এই ব্রিজগুলি নিরাপত্তা এবং চেইন জুড়ে আরও জটিল ডেটা স্থানান্তর করার ক্ষমতার ক্ষেত্রে উৎকৃষ্ট। সাধারণত, এগুলি খরচ-কার্যকারিতার ক্ষেত্রেও ভাল। যাইহোক, এই শক্তিগুলি সাধারণত লাইট ক্লায়েন্ট ব্রিজ (যেমন: IBC) এর জন্য সংযোগের খরচ এবং ফ্রড প্রুফ ব্যবহারকারী অপ্টিমিস্টিক ব্রিজ (যেমন: Nomad) এর জন্য গতির অসুবিধার বিনিময়ে আসে।
-- **লিকুইডিটি নেটওয়ার্ক –** এই ব্রিজগুলি সম্পদ স্থানান্তরের জন্য এটমিক সোয়াপ ব্যবহার করে এবং স্থানীয়ভাবে যাচাইকৃত সিস্টেম (অর্থাৎ, তারা লেনদেন যাচাই করার জন্য অন্তর্নিহিত ব্লকচেইনের ভ্যালিডেটর ব্যবহার করে)। ফলস্বরূপ, তারা নিরাপত্তা এবং গতির সাথে দুর্দান্ত কাজ করে। তাছাড়া, এগুলিকে তুলনামূলকভাবে খরচ-কার্যকরী বলে মনে করা হয় এবং ভাল সংযোগ প্রদান করে। যাইহোক, প্রধান সমস্যাটি হল তাদের আরও জটিল ডেটা পাস করার অক্ষমতা - কারণ তারা ক্রস-চেইন বার্তা প্রেরণ সমর্থন করে না।
+- **জেনারেলাইজড মেসেজ পাসিং ব্রিজ –** এই ব্রিজগুলো নিরাপত্তা এবং চেইনগুলোর মধ্যে আরও জটিল ডাটা স্থানান্তর করার ক্ষমতায় পারদর্শী। সাধারণত, এগুলো খরচ-কার্যকারিতার দিক থেকেও ভালো। তবে, এই সুবিধাগুলো সাধারণত লাইট ক্লায়েন্ট ব্রিজের (যেমন: IBC) ক্ষেত্রে কানেক্টিভিটির অভাব এবং ফ্রড প্রুফ ব্যবহার করা অপ্টিমিস্টিক ব্রিজের (যেমন: Nomad) ক্ষেত্রে গতির সীমাবদ্ধতার বিনিময়ে আসে।
+- **লিকুইডিটি নেটওয়ার্ক –** এই ব্রিজগুলো সম্পদ স্থানান্তরের জন্য এটমিক সোয়াপ ব্যবহার করে এবং এগুলো লোকালি যাচাইকৃত সিস্টেম (অর্থাৎ, এগুলো লেনদেন যাচাই করার জন্য অন্তর্নিহিত ব্লকচেইনগুলোর ভ্যালিডেটরস ব্যবহার করে)। ফলস্বরূপ, এগুলো নিরাপত্তা এবং গতিতে পারদর্শী। তাছাড়া, এগুলোকে তুলনামূলকভাবে সাশ্রয়ী বলে মনে করা হয় এবং ভালো কানেক্টিভিটি অফার করে। তবে, প্রধান ট্রেডঅফ হলো আরও জটিল ডাটা পাস করতে এদের অক্ষমতা – কারণ এগুলো ক্রস-চেইন মেসেজ পাসিং সমর্থন করে না।
-## ব্রিজ সম্পর্কিত ঝুঁকি {#risk-with-bridges}
+## ব্রিজের ঝুঁকি {#risk-with-bridges}
-ব্রিজগুলি [DeFi-এর সবচেয়ে বড় তিনটি হ্যাকের](https://rekt.news/leaderboard/) জন্য দায়ী এবং এখনও বিকাশের প্রাথমিক পর্যায়ে রয়েছে। যেকোনো ব্রিজ ব্যবহার করলে নিম্নলিখিত ঝুঁকি থাকে:
+DeFi-এর শীর্ষ তিনটি [সবচেয়ে বড় হ্যাকের](https://rekt.news/leaderboard/) জন্য ব্রিজগুলো দায়ী এবং এগুলো এখনও উন্নয়নের প্রাথমিক পর্যায়ে রয়েছে। যেকোনো ব্রিজ ব্যবহার করলে নিচের ঝুঁকিগুলো থাকে:
-- **স্মার্ট কন্ট্র্যাক্টের ঝুঁকি –** যদিও অনেক ব্রিজ সফলভাবে অডিট পাস করেছে, সম্পদ হ্যাকের শিকার হওয়ার জন্য একটি স্মার্ট কন্ট্র্যাক্টে একটি ত্রুটিই যথেষ্ট (যেমন: [Solana’s Wormhole Bridge](https://rekt.news/wormhole-rekt/))।
-- **সিস্টেমিক আর্থিক ঝুঁকি** – অনেক ব্রিজ একটি নতুন চেইনে আসল সম্পদের ক্যানোনিকাল সংস্করণ মিন্ট করতে র্যাপড অ্যাসেট ব্যবহার করে। এটি ইকোসিস্টেমকে সিস্টেমিক ঝুঁকির মুখে ফেলে, কারণ আমরা দেখেছি টোকেনের র্যাপড সংস্করণগুলি শোষিত হয়েছে।
-- **কাউন্টারপার্টি ঝুঁকি –** কিছু ব্রিজ একটি ট্রাস্টেড ডিজাইন ব্যবহার করে যার জন্য ব্যবহারকারীদের এই অনুমানের উপর নির্ভর করতে হয় যে ভ্যালিডেটররা ব্যবহারকারীর তহবিল চুরি করার জন্য ষড়যন্ত্র করবে না। এই তৃতীয় পক্ষের অভিনেতাদের উপর বিশ্বাস করার প্রয়োজনীয়তা ব্যবহারকারীদের রাগ পুল, সেন্সরশিপ এবং অন্যান্য দূষিত কার্যকলাপের মতো ঝুঁকির সম্মুখীন করে।
-- **উন্মুক্ত সমস্যা –** যেহেতু ব্রিজগুলি বিকাশের প্রাথমিক পর্যায়ে রয়েছে, তাই বিভিন্ন বাজারের পরিস্থিতিতে, যেমন নেটওয়ার্ক কনজেশনের সময় এবং নেটওয়ার্ক-স্তরের আক্রমণ বা স্টেট রোলব্যাকের মতো অপ্রত্যাশিত ঘটনাগুলির সময় ব্রিজগুলি কীভাবে কাজ করবে সে সম্পর্কিত অনেক অমীমাংসিত প্রশ্ন রয়েছে। এই অনিশ্চয়তা নির্দিষ্ট ঝুঁকি তৈরি করে, যার মাত্রা এখনও অজানা।
+- **স্মার্ট কন্ট্রাক্ট ঝুঁকি –** যদিও অনেক ব্রিজ সফলভাবে অডিট পাস করেছে, সম্পদ হ্যাক হওয়ার জন্য একটি স্মার্ট কন্ট্রাক্ট-এ একটি ত্রুটিই যথেষ্ট (যেমন: [Solana-এর Wormhole Bridge](https://rekt.news/wormhole-rekt/))।
+- **সিস্টেমিক আর্থিক ঝুঁকি** – অনেক ব্রিজ একটি নতুন চেইনে মূল সম্পদের ক্যানোনিকাল ভার্সন মিন্ট করতে রেপড সম্পদ ব্যবহার করে। এটি ইকোসিস্টেমকে সিস্টেমিক ঝুঁকির মুখে ফেলে, কারণ আমরা টোকেন-এর রেপড ভার্সনগুলোকে এক্সপ্লয়েট হতে দেখেছি।
+- **কাউন্টারপার্টি ঝুঁকি –** কিছু ব্রিজ একটি ট্রাস্টেড ডিজাইন ব্যবহার করে যার জন্য ব্যবহারকারীদের এই অনুমানের ওপর নির্ভর করতে হয় যে ভ্যালিডেটরস ব্যবহারকারীর ফান্ড চুরি করার জন্য যোগসাজশ করবে না। ব্যবহারকারীদের এই থার্ড-পার্টি অ্যাক্টরদের বিশ্বাস করার প্রয়োজনীয়তা তাদেরকে রাগ পুল (rug pulls), সেন্সরশিপ এবং অন্যান্য ক্ষতিকারক কার্যকলাপের মতো ঝুঁকির সম্মুখীন করে।
+- **ওপেন ইস্যু –** যেহেতু ব্রিজগুলো উন্নয়নের প্রাথমিক পর্যায়ে রয়েছে, তাই বিভিন্ন মার্কেট কন্ডিশনে, যেমন নেটওয়ার্ক কনজেশনের সময় এবং নেটওয়ার্ক-লেভেল অ্যাটাক বা স্টেট রোলব্যাকের মতো অপ্রত্যাশিত ইভেন্টগুলোর সময় ব্রিজগুলো কীভাবে পারফর্ম করবে সে সম্পর্কিত অনেক উত্তরহীন প্রশ্ন রয়েছে। এই অনিশ্চয়তা কিছু নির্দিষ্ট ঝুঁকি তৈরি করে, যার মাত্রা এখনও অজানা।
## ডিএ্যাপস কীভাবে ব্রিজ ব্যবহার করতে পারে? {#how-can-dapps-use-bridges}
-এখানে কিছু ব্যবহারিক এপ্লিকেশন রয়েছে যা ডেভেলপাররা ব্রিজ এবং তাদের ডিএ্যাপ ক্রস-চেইন করার বিষয়ে বিবেচনা করতে পারে:
+এখানে কিছু ব্যবহারিক অ্যাপ্লিকেশন রয়েছে যা ডেভেলপাররা ব্রিজ এবং তাদের ডিএ্যাপ ক্রস-চেইনে নেওয়ার বিষয়ে বিবেচনা করতে পারেন:
-### ব্রিজ একীভূত করা {#integrating-bridges}
+### ব্রিজ ইন্টিগ্রেট করা {#integrating-bridges}
-ডেভেলপারদের জন্য, ব্রিজের জন্য সমর্থন যোগ করার অনেক উপায় আছে:
+ডেভেলপারদের জন্য, ব্রিজের সাপোর্ট যোগ করার অনেক উপায় রয়েছে:
-1. **আপনার নিজের ব্রিজ তৈরি করা –** একটি সুরক্ষিত এবং নির্ভরযোগ্য ব্রিজ তৈরি করা সহজ নয়, বিশেষ করে যদি আপনি একটি আরও ট্রাস্ট-মিনিমাইজড রুট নেন। তাছাড়া, এর জন্য স্কেলেবিলিটি এবং আন্তঃকার্যক্ষমতা অধ্যয়ন সম্পর্কিত বছরের পর বছরের অভিজ্ঞতা এবং প্রযুক্তিগত দক্ষতার প্রয়োজন। অতিরিক্তভাবে, একটি ব্রিজ রক্ষণাবেক্ষণ করতে এবং এটিকে কার্যকর করার জন্য পর্যাপ্ত লিকুইডিটি আকর্ষণ করার জন্য একটি হ্যান্ডস-অন টিমের প্রয়োজন হবে।
+1. **নিজের ব্রিজ তৈরি করা –** একটি সুরক্ষিত এবং নির্ভরযোগ্য ব্রিজ তৈরি করা সহজ নয়, বিশেষ করে যদি আপনি একটি অধিক ট্রাস্ট-মিনিমাইজড রুট বেছে নেন। তাছাড়া, এর জন্য স্কেলাবিলিটি এবং ইন্টারঅপারেবিলিটি স্টাডিজ সম্পর্কিত বছরের পর বছর অভিজ্ঞতা এবং প্রযুক্তিগত দক্ষতার প্রয়োজন। উপরন্তু, একটি ব্রিজ রক্ষণাবেক্ষণ করতে এবং এটিকে কার্যকর করার জন্য পর্যাপ্ত লিকুইডিটি আকর্ষণ করতে একটি হ্যান্ডস-অন টিমের প্রয়োজন হবে।
-2. **ব্যবহারকারীদের একাধিক ব্রিজ বিকল্প দেখানো –** অনেক [ডিএ্যাপস](/developers/docs/dapps/) ব্যবহারকারীদের তাদের সাথে ইন্টারঅ্যাক্ট করার জন্য তাদের নেটিভ টোকেন থাকার প্রয়োজন হয়। ব্যবহারকারীদের তাদের টোকেন অ্যাক্সেস করতে সক্ষম করার জন্য, তারা তাদের ওয়েবসাইটে বিভিন্ন ব্রিজ বিকল্প অফার করে। যাইহোক, এই পদ্ধতিটি সমস্যার একটি দ্রুত সমাধান কারণ এটি ব্যবহারকারীকে ডিএ্যাপ ইন্টারফেস থেকে দূরে নিয়ে যায় এবং এখনও তাদের অন্যান্য ডিএ্যাপস এবং ব্রিজের সাথে ইন্টারঅ্যাক্ট করতে হয়। এটি ভুল করার বর্ধিত সুযোগ সহ একটি কষ্টকর অনবোর্ডিং অভিজ্ঞতা।
+2. **ব্যবহারকারীদের একাধিক ব্রিজ অপশন দেখানো –** অনেক [ডিএ্যাপস](/developers/docs/dapps/)-এর সাথে ইন্টারঅ্যাক্ট করার জন্য ব্যবহারকারীদের তাদের নেটিভ টোকেন থাকা প্রয়োজন। ব্যবহারকারীদের তাদের টোকেন অ্যাক্সেস করতে সক্ষম করার জন্য, তারা তাদের ওয়েবসাইটে বিভিন্ন ব্রিজ অপশন অফার করে। তবে, এই পদ্ধতিটি সমস্যার একটি দ্রুত সমাধান মাত্র কারণ এটি ব্যবহারকারীকে ডিএ্যাপ ইন্টারফেস থেকে দূরে সরিয়ে নেয় এবং এখনও তাদের অন্যান্য ডিএ্যাপস এবং ব্রিজের সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন হয়। এটি ভুল করার বর্ধিত সুযোগসহ একটি কষ্টকর অনবোর্ডিং অভিজ্ঞতা।
-3. **একটি ব্রিজ একীভূত করা –** এই সমাধানের জন্য ডিএ্যাপ-কে ব্যবহারকারীদের বাহ্যিক ব্রিজ এবং DEX ইন্টারফেসে পাঠানোর প্রয়োজন নেই। এটি ডিএ্যাপস-কে ব্যবহারকারীর অনবোর্ডিং অভিজ্ঞতা উন্নত করতে দেয়। যাইহোক, এই পদ্ধতির সীমাবদ্ধতা রয়েছে:
+3. **একটি ব্রিজ ইন্টিগ্রেট করা –** এই সমাধানের জন্য ডিএ্যাপ-এর ব্যবহারকারীদের এক্সটার্নাল ব্রিজ এবং DEX ইন্টারফেসে পাঠানোর প্রয়োজন হয় না। এটি ডিএ্যাপস-কে ব্যবহারকারীর অনবোর্ডিং অভিজ্ঞতা উন্নত করার অনুমতি দেয়। তবে, এই পদ্ধতির কিছু সীমাবদ্ধতা রয়েছে:
- - ব্রিজগুলির মূল্যায়ন এবং রক্ষণাবেক্ষণ কঠিন এবং সময়সাপেক্ষ।
- - একটি ব্রিজ নির্বাচন করা ব্যর্থতা এবং নির্ভরতার একটি একক পয়েন্ট তৈরি করে।
- - ডিএ্যাপটি ব্রিজের ক্ষমতা দ্বারা সীমাবদ্ধ।
- - শুধুমাত্র ব্রিজই যথেষ্ট নাও হতে পারে। ক্রস-চেইন সোয়াপের মতো আরও কার্যকারিতা অফার করার জন্য ডিএ্যাপস-এর DEX-এর প্রয়োজন হতে পারে।
+ - ব্রিজের মূল্যায়ন এবং রক্ষণাবেক্ষণ কঠিন এবং সময়সাপেক্ষ।
+ - একটি ব্রিজ নির্বাচন করা সিঙ্গেল পয়েন্ট অফ ফেইলিওর এবং নির্ভরতা তৈরি করে।
+ - ডিএ্যাপটি ব্রিজের ক্ষমতার দ্বারা সীমাবদ্ধ থাকে।
+ - শুধুমাত্র ব্রিজ যথেষ্ট নাও হতে পারে। ক্রস-চেইন সোয়াপের মতো আরও কার্যকারিতা অফার করার জন্য ডিএ্যাপস-এর DEX-এর প্রয়োজন হতে পারে।
-4. **একাধিক ব্রিজ একীভূত করা –** এই সমাধানটি একটি একক ব্রিজ একীভূত করার সাথে সম্পর্কিত অনেক সমস্যার সমাধান করে। যাইহোক, এরও সীমাবদ্ধতা রয়েছে, কারণ একাধিক ব্রিজ একীভূত করা রিসোর্স-সাপেক্ষ এবং ডেভেলপারদের জন্য প্রযুক্তিগত এবং যোগাযোগের ওভারহেড তৈরি করে—যা ক্রিপ্টোতে সবচেয়ে দুষ্প্রাপ্য রিসোর্স।
+4. **একাধিক ব্রিজ ইন্টিগ্রেট করা –** এই সমাধানটি একটি একক ব্রিজ ইন্টিগ্রেট করার সাথে যুক্ত অনেক সমস্যার সমাধান করে। তবে, এরও সীমাবদ্ধতা রয়েছে, কারণ একাধিক ব্রিজ ইন্টিগ্রেট করা রিসোর্স-সাপেক্ষ এবং ডেভেলপারদের জন্য প্রযুক্তিগত এবং যোগাযোগের ওভারহেড তৈরি করে—যা ক্রিপ্টোতে সবচেয়ে দুষ্প্রাপ্য রিসোর্স।
-5. **একটি ব্রিজ অ্যাগ্রিগেটর একীভূত করা –** ডিএ্যাপস-এর জন্য আরেকটি বিকল্প হল একটি ব্রিজ অ্যাগ্রিগেশন সমাধান একীভূত করা যা তাদের একাধিক ব্রিজে অ্যাক্সেস দেয়। ব্রিজ অ্যাগ্রিগেটররা সমস্ত ব্রিজের শক্তি উত্তরাধিকার সূত্রে পায় এবং এইভাবে কোনো একক ব্রিজের ক্ষমতা দ্বারা সীমাবদ্ধ থাকে না। বিশেষত, ব্রিজ অ্যাগ্রিগেটররা সাধারণত ব্রিজ ইন্টিগ্রেশনগুলি বজায় রাখে, যা ডিএ্যাপ-কে একটি ব্রিজ ইন্টিগ্রেশনের প্রযুক্তিগত এবং অপারেশনাল দিকগুলির শীর্ষে থাকার ঝামেলা থেকে বাঁচায়।
+5. **একটি ব্রিজ এগ্রিগেটর ইন্টিগ্রেট করা –** ডিএ্যাপস-এর জন্য আরেকটি বিকল্প হলো একটি ব্রিজ এগ্রিগেশন সলিউশন ইন্টিগ্রেট করা যা তাদের একাধিক ব্রিজে অ্যাক্সেস দেয়। ব্রিজ এগ্রিগেটরগুলো সমস্ত ব্রিজের শক্তি উত্তরাধিকার সূত্রে পায় এবং তাই কোনো একক ব্রিজের ক্ষমতার দ্বারা সীমাবদ্ধ থাকে না। উল্লেখযোগ্যভাবে, ব্রিজ এগ্রিগেটরগুলো সাধারণত ব্রিজ ইন্টিগ্রেশনগুলো বজায় রাখে, যা ডিএ্যাপ-কে ব্রিজ ইন্টিগ্রেশনের প্রযুক্তিগত এবং অপারেশনাল দিকগুলোর শীর্ষে থাকার ঝামেলা থেকে বাঁচায়।
-তা সত্ত্বেও, ব্রিজ অ্যাগ্রিগেটরদেরও তাদের সীমাবদ্ধতা রয়েছে। উদাহরণস্বরূপ, যদিও তারা আরও ব্রিজ বিকল্প অফার করতে পারে, অ্যাগ্রিগেটরের প্ল্যাটফর্মে অফার করা ব্রিজগুলি ছাড়াও বাজারে সাধারণত আরও অনেক ব্রিজ উপলব্ধ থাকে। তাছাড়া, ব্রিজের মতোই, ব্রিজ অ্যাগ্রিগেটররাও স্মার্ট কন্ট্র্যাক্ট এবং প্রযুক্তিগত ঝুঁকির সম্মুখীন হয় (বেশি স্মার্ট কন্ট্র্যাক্ট = বেশি ঝুঁকি)।
+তা সত্ত্বেও, ব্রিজ এগ্রিগেটরগুলোরও সীমাবদ্ধতা রয়েছে। উদাহরণস্বরূপ, যদিও তারা আরও ব্রিজ অপশন অফার করতে পারে, এগ্রিগেটরের প্ল্যাটফর্মে অফার করা ব্রিজগুলো ছাড়াও বাজারে সাধারণত আরও অনেক ব্রিজ পাওয়া যায়। তাছাড়া, ব্রিজের মতোই, ব্রিজ এগ্রিগেটরগুলোও স্মার্ট কন্ট্রাক্ট এবং প্রযুক্তিগত ঝুঁকির সম্মুখীন হয় (বেশি স্মার্ট কন্ট্রাক্ট = বেশি ঝুঁকি)।
-যদি একটি ডিএ্যাপ একটি ব্রিজ বা একটি অ্যাগ্রিগেটরকে একীভূত করার পথে যায়, তাহলে ইন্টিগ্রেশনটি কতটা গভীর হওয়ার কথা তার উপর ভিত্তি করে বিভিন্ন বিকল্প রয়েছে। উদাহরণস্বরূপ, যদি এটি শুধুমাত্র ব্যবহারকারীর অনবোর্ডিং অভিজ্ঞতা উন্নত করার জন্য একটি ফ্রন্ট-এন্ড ইন্টিগ্রেশন হয়, তাহলে একটি ডিএ্যাপ উইজেটটি একীভূত করবে। যাইহোক, যদি ইন্টিগ্রেশনটি স্টেকিং, ইল্ড ফার্মিং ইত্যাদির মতো গভীর ক্রস-চেইন কৌশলগুলি অন্বেষণ করার জন্য হয়, তাহলে ডিএ্যাপটি SDK বা API একীভূত করে।
+যদি কোনো ডিএ্যাপ একটি ব্রিজ বা এগ্রিগেটর ইন্টিগ্রেট করার পথে হাঁটে, তবে ইন্টিগ্রেশনটি কতটা গভীর হওয়ার কথা তার ওপর ভিত্তি করে বিভিন্ন বিকল্প রয়েছে। উদাহরণস্বরূপ, যদি এটি শুধুমাত্র ব্যবহারকারীর অনবোর্ডিং অভিজ্ঞতা উন্নত করার জন্য একটি ফ্রন্ট-এন্ড ইন্টিগ্রেশন হয়, তবে একটি ডিএ্যাপ উইজেট ইন্টিগ্রেট করবে। তবে, যদি ইন্টিগ্রেশনটি স্টেকিং, ইয়েল্ড ফার্মিং ইত্যাদির মতো গভীর ক্রস-চেইন কৌশলগুলো অন্বেষণ করার জন্য হয়, তবে ডিএ্যাপটি SDK বা API ইন্টিগ্রেট করে।
### একাধিক চেইনে একটি ডিএ্যাপ ডিপ্লয় করা {#deploying-a-dapp-on-multiple-chains}
-একাধিক চেইনে একটি ডিএ্যাপ ডিপ্লয় করতে, ডেভেলপাররা [Alchemy](https://www.alchemy.com/), [Hardhat](https://hardhat.org/), [Moralis](https://moralis.io/), ইত্যাদির মতো ডেভেলপমেন্ট প্ল্যাটফর্ম ব্যবহার করতে পারে। সাধারণত, এই প্ল্যাটফর্মগুলি কম্পোজেবল প্লাগইনগুলির সাথে আসে যা ডিএ্যাপস-কে ক্রস-চেইন যেতে সক্ষম করতে পারে। উদাহরণস্বরূপ, ডেভেলপাররা [hardhat-deploy plugin](https://github.com/wighawag/hardhat-deploy) দ্বারা প্রদত্ত একটি ডিটারমিনিস্টিক ডিপ্লয়মেন্ট প্রক্সি ব্যবহার করতে পারে।
+একাধিক চেইনে একটি ডিএ্যাপ ডিপ্লয় করতে, ডেভেলপাররা [Alchemy](https://www.alchemy.com/), [Hardhat](https://hardhat.org/), [Moralis](https://moralis.io/) ইত্যাদির মতো ডেভেলপমেন্ট প্ল্যাটফর্ম ব্যবহার করতে পারেন। সাধারণত, এই প্ল্যাটফর্মগুলো কম্পোজেবল প্লাগইনগুলোর সাথে আসে যা ডিএ্যাপস-কে ক্রস-চেইনে যেতে সক্ষম করতে পারে। উদাহরণস্বরূপ, ডেভেলপাররা [hardhat-deploy plugin](https://github.com/wighawag/hardhat-deploy) দ্বারা অফার করা একটি ডিটারমিনিস্টিক ডিপ্লয়মেন্ট প্রক্সি ব্যবহার করতে পারেন।
#### উদাহরণ:
@@ -111,28 +111,27 @@ L1 ব্লকচেইন এবং L2 [স্কেলিং](/developers/doc
- [একটি ক্রস-চেইন NFT মার্কেটপ্লেস তৈরি করা](https://youtu.be/WZWCzsB1xUE)
- [Moralis: ক্রস-চেইন NFT ডিএ্যাপস তৈরি করা](https://www.youtube.com/watch?v=ehv70kE1QYo)
-### চেইন জুড়ে কন্ট্র্যাক্টের কার্যকলাপ পর্যবেক্ষণ করা {#monitoring-contract-activity-across-chains}
+### চেইনগুলো জুড়ে কন্ট্রাক্ট অ্যাক্টিভিটি মনিটর করা {#monitoring-contract-activity-across-chains}
-চেইন জুড়ে কন্ট্র্যাক্টের কার্যকলাপ নিরীক্ষণ করতে, ডেভেলপাররা রিয়েল-টাইমে স্মার্ট কন্ট্র্যাক্ট পর্যবেক্ষণ করতে সাবগ্রাফ এবং Tenderly-এর মতো ডেভেলপার প্ল্যাটফর্ম ব্যবহার করতে পারে। এই ধরনের প্ল্যাটফর্মগুলিতে এমন টুলসও রয়েছে যা ক্রস-চেইন কার্যকলাপের জন্য বৃহত্তর ডেটা পর্যবেক্ষণ কার্যকারিতা অফার করে, যেমন [কন্ট্র্যাক্ট দ্বারা নির্গত ইভেন্টগুলি](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events) পরীক্ষা করা ইত্যাদি।
+চেইনগুলো জুড়ে কন্ট্রাক্ট অ্যাক্টিভিটি মনিটর করতে, ডেভেলপাররা রিয়েল-টাইমে স্মার্ট কন্ট্রাক্ট পর্যবেক্ষণ করতে সাবগ্রাফ এবং Tenderly-এর মতো ডেভেলপার প্ল্যাটফর্ম ব্যবহার করতে পারেন। এই ধরনের প্ল্যাটফর্মগুলোতে এমন টুলও রয়েছে যা ক্রস-চেইন অ্যাক্টিভিটিগুলোর জন্য বৃহত্তর ডাটা মনিটরিং কার্যকারিতা অফার করে, যেমন [কন্ট্রাক্ট দ্বারা নির্গত ইভেন্টগুলো](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events) চেক করা ইত্যাদি।
#### টুলস
- [The Graph](https://thegraph.com/en/)
- [Tenderly](https://tenderly.co/)
-## আরও পড়ুন {#further-reading}
-
+## আরও পড়াশোনা {#further-reading}
- [ব্লকচেইন ব্রিজ](/bridges/) – ethereum.org
-- [L2Beat ব্রিজ রিস্ক ফ্রেমওয়ার্ক](https://l2beat.com/bridges/summary)
-- [ব্লকচেইন ব্রিজ: ক্রিপ্টোনেটওয়ার্কের নেটওয়ার্ক তৈরি করা](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) - ৮ সেপ্টেম্বর, ২০২১ – দিমিত্রি বেরেনজন
-- [দ্য ইন্টারঅপারেবিলিটি ট্রাইলেমা](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) - ১ অক্টোবর, ২০২১ – অর্জুন ভুপতানি
-- [ক্লাস্টারস: কীভাবে ট্রাস্টেড ও ট্রাস্ট-মিনিমাইজড ব্রিজগুলি মাল্টি-চেইন ল্যান্ডস্কেপকে আকার দেয়](https://blog.celestia.org/clusters/) - ৪ অক্টোবর, ২০২১ – মুস্তাফা আল-বাসাম
-- [LI.FI: ব্রিজের সাথে, বিশ্বাস একটি স্পেকট্রাম](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) - ২৮ এপ্রিল, ২০২২ – অর্জুন চন্দ
-- [রোলআপ ইন্টারঅপারেবিলিটি সলিউশনের অবস্থা](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - ২০ জুন, ২০২৪ – অ্যালেক্স হুক
-- [নিরাপদ ক্রস-চেইন আন্তঃকার্যক্ষমতার জন্য শেয়ারড সিকিউরিটি ব্যবহার করা: Lagrange State Committees এবং তার বাইরে](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - ১২ জুন, ২০২৪ – ইমানুয়েল আওসিকা
-
-অতিরিক্তভাবে, এখানে [জেমস প্রেস্টউইচ](https://twitter.com/_prestwich) এর কিছু অন্তর্দৃষ্টিপূর্ণ উপস্থাপনা রয়েছে যা ব্রিজ সম্পর্কে গভীর ধারণা তৈরি করতে সাহায্য করতে পারে:
-
-- [ব্রিজ তৈরি করা, প্রাচীর ঘেরা বাগান নয়](https://youtu.be/ZQJWMiX4hT0)
-- [ব্রিজ ভেঙে ফেলা](https://youtu.be/b0mC-ZqN8Oo)
-- [ব্রিজগুলি কেন জ্বলছে](https://youtu.be/c7cm2kd20j8)
+- [L2Beat Bridge Risk Framework](https://l2beat.com/bridges/summary)
+- [Blockchain Bridges: Building Networks of Cryptonetworks](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) - 8 সেপ্টেম্বর, 2021 – Dmitriy Berenzon
+- [The Interoperability Trilemma](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) - 1 অক্টোবর, 2021 – Arjun Bhuptani
+- [Clusters: How Trusted & Trust-Minimized Bridges Shape the Multi-Chain Landscape](https://blog.celestia.org/clusters/) - 4 অক্টোবর, 2021 – Mustafa Al-Bassam
+- [LI.FI: With Bridges, Trust is a Spectrum](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) - 28 এপ্রিল, 2022 – Arjun Chand
+- [The State Of Rollup Interoperability Solutions](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - 20 জুন, 2024 – Alex Hook
+- [Harnessing Shared Security For Secure Cross-Chain Interoperability: Lagrange State Committees And Beyond](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - 12 জুন, 2024 – Emmanuel Awosika
+
+এছাড়াও, এখানে [James Prestwich](https://twitter.com/_prestwich)-এর কিছু অন্তর্দৃষ্টিপূর্ণ প্রেজেন্টেশন রয়েছে যা ব্রিজ সম্পর্কে গভীর ধারণা তৈরি করতে সাহায্য করতে পারে:
+
+- [Building Bridges, Not Walled Gardens](https://youtu.be/ZQJWMiX4hT0)
+- [Breaking Down Bridges](https://youtu.be/b0mC-ZqN8Oo)
+- [Why are the Bridges Burning](https://youtu.be/c7cm2kd20j8)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/index.md
index 607881ebd3f..6326bcb5be9 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/index.md
@@ -1,92 +1,92 @@
---
-title: "কনসেন্সাস মেকানিজম"
-description: "ডিস্ট্রিবিউটেড সিস্টেমে কনসেন্সাস প্রোটোকলের একটি ব্যাখ্যা এবং ইথেরিয়ামে তারা যে ভূমিকা পালন করে।"
+title: কনসেন্সাস মেকানিজম
+description: ডিস্ট্রিবিউটেড সিস্টেমে কনসেন্সাস প্রটোকল এবং ইথিরিয়ামে তাদের ভূমিকার একটি ব্যাখ্যা।
lang: bn
---
-'কনসেন্সাস মেকানিজম' শব্দটি প্রায়শই কথ্য ভাষায় 'প্রুফ-অফ-স্টেক', 'প্রুফ-অফ-ওয়ার্ক' বা 'প্রুফ-অফ-অথোরিটি' প্রোটোকলকে বোঝাতে ব্যবহৃত হয়। তবে, এগুলি হল কনসেন্সাস মেকানিজমগুলির উপাদান যা [Sybil attacks](/glossary/#sybil-attack) এর বিরুদ্ধে সুরক্ষা প্রদান করে। কনসেন্সাস মেকানিজম হল ধারণা, প্রোটোকল এবং ইনসেনটিভের সম্পূর্ণ স্ট্যাক যা নোডগুলির একটি ডিস্ট্রিবিউটেড সেটকে একটি ব্লকচেইনের স্টেটের উপর একমত হতে সক্ষম করে।
+'কনসেন্সাস মেকানিজম' শব্দটি প্রায়শই কথোপকথনে 'প্রুফ-অফ-স্টেক', 'প্রুফ-অফ-ওয়ার্ক' বা 'প্রুফ-অফ-অথরিটি' প্রটোকলগুলোকে বোঝাতে ব্যবহৃত হয়। তবে, এগুলো কনসেন্সাস মেকানিজমের কেবল কিছু উপাদান যা [সাইবিল এ্যাটাক](/glossary/#sybil-attack) থেকে রক্ষা করে। কনসেন্সাস মেকানিজম হলো ধারণা, প্রটোকল এবং ইনসেন্টিভের সম্পূর্ণ স্ট্যাক যা ডিস্ট্রিবিউটেড নোডগুলোর একটি সেটকে একটি ব্লকচেইনের স্টেটের বিষয়ে একমত হতে সক্ষম করে।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে আমাদের [ইথেরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ার পরামর্শ দিচ্ছি।
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে আমাদের [ইথিরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ুন।
## কনসেন্সাস কী? {#what-is-consensus}
-কনসেন্সাস বলতে, আমরা বুঝি যে একটি সাধারণ চুক্তিতে পৌঁছানো গেছে। ভাবুন একদল লোক সিনেমা দেখতে যাচ্ছে। যদি চলচ্চিত্রের প্রস্তাবিত পছন্দের বিষয়ে কোনো দ্বিমত না থাকে, তাহলে একটি কনসেন্সাস অর্জিত হয়। যদি দ্বিমত থাকে, তাহলে কোন চলচ্চিত্রটি দেখতে হবে তা সিদ্ধান্ত নেওয়ার জন্য দলটির কাছে একটি উপায় থাকতে হবে। চরম পরিস্থিতিতে, দলটি শেষ পর্যন্ত বিভক্ত হয়ে যাবে।
+কনসেন্সাস বলতে আমরা বুঝি যে একটি সাধারণ চুক্তিতে পৌঁছানো হয়েছে। ধরুন একদল মানুষ সিনেমা দেখতে যাচ্ছে। যদি প্রস্তাবিত সিনেমা নির্বাচনের বিষয়ে কোনো মতবিরোধ না থাকে, তবে একটি কনসেন্সাস অর্জিত হয়। যদি মতবিরোধ থাকে, তবে কোন সিনেমাটি দেখতে হবে তা সিদ্ধান্ত নেওয়ার উপায় গ্রুপটির থাকতে হবে। চরম ক্ষেত্রে, গ্রুপটি শেষ পর্যন্ত বিভক্ত হয়ে যাবে।
-ইথেরিয়াম ব্লকচেইনের ক্ষেত্রে, প্রক্রিয়াটি আনুষ্ঠানিক, এবং কনসেন্সাসে পৌঁছানোর অর্থ হল নেটওয়ার্কের কমপক্ষে 66% নোড নেটওয়ার্কের গ্লোবাল স্টেটের বিষয়ে একমত।
+[ইথিরিয়াম](/) ব্লকচেইনের ক্ষেত্রে, প্রক্রিয়াটি আনুষ্ঠানিকভাবে নির্ধারিত, এবং কনসেন্সাসে পৌঁছানোর অর্থ হলো নেটওয়ার্কের অন্তত 66% নোড নেটওয়ার্কের গ্লোবাল স্টেটের বিষয়ে একমত।
## কনসেন্সাস মেকানিজম কী? {#what-is-a-consensus-mechanism}
-কনসেন্সাস মেকানিজম শব্দটি প্রোটোকল, ইনসেনটিভ এবং ধারণার পুরো স্ট্যাককে বোঝায় যা নোডগুলির একটি নেটওয়ার্ককে ব্লকচেইনের স্টেটের উপর একমত হতে দেয়।
+কনসেন্সাস মেকানিজম শব্দটি প্রটোকল, ইনসেন্টিভ এবং ধারণার সম্পূর্ণ স্ট্যাককে বোঝায় যা নোডগুলোর একটি নেটওয়ার্ককে ব্লকচেইনের স্টেটের বিষয়ে একমত হতে দেয়।
-ইথেরিয়াম একটি প্রুফ-অফ-স্টেক-ভিত্তিক কনসেন্সাস মেকানিজম ব্যবহার করে যা স্টেকারদের দ্বারা লক করা মূলধনের উপর প্রয়োগ করা পুরষ্কার এবং শাস্তির একটি সেট থেকে এর ক্রিপ্টো-অর্থনৈতিক নিরাপত্তা প্রাপ্ত করে। এই ইনসেনটিভ কাঠামো স্বতন্ত্র স্টেকারদের সৎ ভ্যালিডেটর হিসেবে কাজ করতে উৎসাহিত করে, যারা করে না তাদের শাস্তি দেয় এবং নেটওয়ার্কে আক্রমণ করার জন্য একটি অত্যন্ত উচ্চ খরচ তৈরি করে।
+ইথিরিয়াম একটি প্রুফ-অফ-স্টেক-ভিত্তিক কনসেন্সাস মেকানিজম ব্যবহার করে যা স্টেকারদের দ্বারা লক করা মূলধনের উপর প্রয়োগ করা পুরষ্কার এবং জরিমানার একটি সেট থেকে এর ক্রিপ্টো-অর্থনৈতিক নিরাপত্তা অর্জন করে। এই ইনসেন্টিভ কাঠামোটি ব্যক্তিগত স্টেকারদের সৎ ভ্যালিডেটরস পরিচালনা করতে উৎসাহিত করে, যারা তা করে না তাদের শাস্তি দেয় এবং নেটওয়ার্কে আক্রমণ করার জন্য অত্যন্ত উচ্চ ব্যয় তৈরি করে।
-তারপরে, একটি প্রোটোকল রয়েছে যা নিয়ন্ত্রণ করে যে কীভাবে সৎ ভ্যালিডেটরদের ব্লক প্রস্তাব বা যাচাই করার জন্য, লেনদেন প্রক্রিয়া করার জন্য এবং চেইনের হেডের বিষয়ে তাদের মতামতের জন্য ভোট দেওয়ার জন্য নির্বাচন করা হয়। বিরল পরিস্থিতিতে যেখানে চেইনের হেডের কাছে একই অবস্থানে একাধিক ব্লক থাকে, সেখানে একটি ফর্ক-চয়েস মেকানিজম রয়েছে যা সেই ব্লকগুলিকে নির্বাচন করে যা 'সবচেয়ে ভারী' চেইন তৈরি করে, যা ব্লকগুলির জন্য ভোট দেওয়া ভ্যালিডেটরদের সংখ্যা দ্বারা পরিমাপ করা হয় এবং তাদের স্টেক করা ইথার ব্যালেন্স দ্বারা ওজন করা হয়।
+এরপর, একটি প্রটোকল রয়েছে যা নিয়ন্ত্রণ করে কীভাবে সৎ ভ্যালিডেটরস ব্লক প্রস্তাব বা যাচাই করতে, লেনদেন প্রক্রিয়া করতে এবং চেইনের শীর্ষ সম্পর্কে তাদের মতামতের জন্য ভোট দিতে নির্বাচিত হয়। বিরল পরিস্থিতিতে যেখানে চেইনের শীর্ষের কাছাকাছি একই অবস্থানে একাধিক ব্লকস থাকে, সেখানে একটি ফর্ক-চয়েস মেকানিজম রয়েছে যা 'সবচেয়ে ভারী' চেইন তৈরি করা ব্লকগুলোকে নির্বাচন করে, যা ব্লকগুলোর জন্য ভোট দেওয়া ভ্যালিডেটরস সংখ্যা দ্বারা পরিমাপ করা হয় এবং তাদের স্টেক করা ইথার ব্যালেন্স দ্বারা ওজন করা হয়।
-কনসেন্সাসের জন্য কিছু ধারণা গুরুত্বপূর্ণ যা কোডে স্পষ্টভাবে সংজ্ঞায়িত নয়, যেমন নেটওয়ার্কে আক্রমণের বিরুদ্ধে প্রতিরক্ষার শেষ লাইন হিসাবে সম্ভাব্য আউট-অফ-ব্যান্ড সামাজিক সমন্বয়ের মাধ্যমে প্রদত্ত অতিরিক্ত নিরাপত্তা।
+কিছু ধারণা কনসেন্সাসের জন্য গুরুত্বপূর্ণ যা কোডে স্পষ্টভাবে সংজ্ঞায়িত করা হয়নি, যেমন নেটওয়ার্কে আক্রমণের বিরুদ্ধে প্রতিরক্ষার শেষ লাইন হিসেবে সম্ভাব্য আউট-অফ-ব্যান্ড সামাজিক সমন্বয় দ্বারা প্রস্তাবিত অতিরিক্ত নিরাপত্তা।
-এই উপাদানগুলি একসাথে কনসেন্সাস মেকানিজম গঠন করে।
+এই উপাদানগুলো একসাথে কনসেন্সাস মেকানিজম গঠন করে।
## কনসেন্সাস মেকানিজমের প্রকারভেদ {#types-of-consensus-mechanisms}
### প্রুফ-অফ-ওয়ার্ক ভিত্তিক {#proof-of-work}
-বিটকয়েনের মতো, ইথেরিয়াম একসময় একটি **প্রুফ-অফ-ওয়ার্ক (PoW)** ভিত্তিক কনসেন্সাস প্রোটোকল ব্যবহার করত।
+বিটকয়েনের মতো, ইথিরিয়াম একসময় একটি **প্রুফ-অফ-ওয়ার্ক (PoW)** ভিত্তিক কনসেন্সাস প্রটোকল ব্যবহার করত।
#### ব্লক তৈরি {#pow-block-creation}
-মাইনাররা প্রক্রিয়াজাত লেনদেন দিয়ে ভরা নতুন ব্লক তৈরি করতে প্রতিযোগিতা করে। বিজয়ী নতুন ব্লকটি নেটওয়ার্কের বাকিদের সাথে শেয়ার করে এবং কিছু সদ্য মিন্ট করা ETH উপার্জন করে। এই প্রতিযোগিতাটি সেই কম্পিউটার জেতে যেটি দ্রুততম একটি গণিত ধাঁধা সমাধান করতে সক্ষম হয়। এটি বর্তমান ব্লক এবং তার আগের ব্লকের মধ্যে ক্রিপ্টোগ্রাফিক লিঙ্ক তৈরি করে। এই ধাঁধাটি সমাধান করাই হলো "প্রুফ-অফ-ওয়ার্ক" এর কাজ। ক্যানোনিকাল চেইনটি তখন একটি ফর্ক-চয়েস নিয়ম দ্বারা নির্ধারিত হয় যা সেই ব্লকগুলির সেট নির্বাচন করে যেগুলি মাইন করার জন্য সবচেয়ে বেশি কাজ করা হয়েছে।
+মাইনাররা প্রক্রিয়াকৃত লেনদেন দিয়ে পূর্ণ নতুন ব্লকস তৈরি করতে প্রতিযোগিতা করে। বিজয়ী নতুন ব্লকটি নেটওয়ার্কের বাকি অংশের সাথে শেয়ার করে এবং কিছু নতুন মিন্ট করা ETH উপার্জন করে। যে কম্পিউটারটি সবচেয়ে দ্রুত একটি গণিতের ধাঁধা সমাধান করতে সক্ষম হয় সে এই প্রতিযোগিতায় জয়ী হয়। এটি বর্তমান ব্লক এবং আগের ব্লকের মধ্যে ক্রিপ্টোগ্রাফিক লিঙ্ক তৈরি করে। এই ধাঁধাটি সমাধান করাই হলো "প্রুফ-অফ-ওয়ার্ক"-এর কাজ। ক্যানোনিকাল চেইনটি তখন একটি ফর্ক-চয়েস নিয়ম দ্বারা নির্ধারিত হয় যা সেই ব্লকগুলোর সেট নির্বাচন করে যেগুলোকে মাইন করার জন্য সবচেয়ে বেশি কাজ করা হয়েছে।
#### নিরাপত্তা {#pow-security}
-নেটওয়ার্কটি এই কারণে সুরক্ষিত থাকে যে চেইনে প্রতারণা করার জন্য আপনার নেটওয়ার্কের কম্পিউটিং পাওয়ারের 51% প্রয়োজন হবে। এর জন্য সরঞ্জাম এবং শক্তিতে এত বড় বিনিয়োগের প্রয়োজন হবে; আপনি যা লাভ করবেন তার চেয়ে বেশি খরচ করার সম্ভাবনা রয়েছে।
+নেটওয়ার্কটি এই কারণে সুরক্ষিত থাকে যে চেইনটিকে প্রতারণা করতে আপনার নেটওয়ার্কের 51% কম্পিউটিং শক্তির প্রয়োজন হবে। এর জন্য সরঞ্জাম এবং শক্তিতে এত বিশাল বিনিয়োগের প্রয়োজন হবে; আপনি যা লাভ করবেন তার চেয়ে বেশি ব্যয় করার সম্ভাবনা রয়েছে।
[প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/) সম্পর্কে আরও জানুন
### প্রুফ-অফ-স্টেক ভিত্তিক {#proof-of-stake}
-ইথেরিয়াম এখন একটি **প্রুফ-অফ-স্টেক (PoS)** ভিত্তিক কনসেন্সাস প্রোটোকল ব্যবহার করে।
+ইথিরিয়াম এখন একটি **প্রুফ-অফ-স্টেক (PoS)** ভিত্তিক কনসেন্সাস প্রটোকল ব্যবহার করে।
#### ব্লক তৈরি {#pos-block-creation}
-ভ্যালিডেটররা ব্লক তৈরি করে। প্রতিটি স্লটে একজন ভ্যালিডেটরকে ব্লক প্রোপোজার হিসেবে এলোমেলোভাবে নির্বাচন করা হয়। তাদের কনসেন্সাস ক্লায়েন্ট তাদের পেয়ারড এক্সিকিউশন ক্লায়েন্ট থেকে একটি 'এক্সিকিউশন পেলোড' হিসাবে লেনদেনের একটি বান্ডিল অনুরোধ করে। তারা এটিকে কনসেন্সাস ডেটাতে মুড়ে একটি ব্লক তৈরি করে, যা তারা ইথেরিয়াম নেটওয়ার্কের অন্যান্য নোডগুলিতে পাঠায়। এই ব্লক উৎপাদনের জন্য ETH-এ পুরস্কৃত করা হয়। বিরল ক্ষেত্রে যখন একটি একক স্লটের জন্য একাধিক সম্ভাব্য ব্লক বিদ্যমান থাকে, বা নোডগুলি বিভিন্ন সময়ে ব্লক সম্পর্কে জানতে পারে, তখন ফর্ক চয়েস অ্যালগরিদম সেই ব্লকটি বেছে নেয় যা অ্যাটেস্টেশনের সর্বাধিক ওজন সহ চেইন গঠন করে (যেখানে ওজন হল তাদের ETH ব্যালেন্স দ্বারা স্কেল করা অ্যাটেস্টিং ভ্যালিডেটরদের সংখ্যা)।
+ভ্যালিডেটরস ব্লকস তৈরি করে। প্রতিটি স্লটে ব্লক প্রপোজার হওয়ার জন্য একজন ভ্যালিডেটরকে এলোমেলোভাবে নির্বাচন করা হয়। তাদের কনসেন্সাস ক্লায়েন্ট তাদের জোড়া এক্সিকিউশন ক্লায়েন্ট থেকে 'এক্সিকিউশন পেলোড' হিসেবে লেনদেনের একটি বান্ডিলের অনুরোধ করে। তারা এটিকে একটি ব্লক তৈরি করতে কনসেন্সাস ডেটায় মুড়ে দেয়, যা তারা ইথিরিয়াম নেটওয়ার্কের অন্যান্য নোডগুলোতে পাঠায়। এই ব্লক উৎপাদনের জন্য ETH-এ পুরস্কৃত করা হয়। বিরল ক্ষেত্রে যখন একটি একক স্লটের জন্য একাধিক সম্ভাব্য ব্লকস বিদ্যমান থাকে, বা নোডগুলো বিভিন্ন সময়ে ব্লকস সম্পর্কে জানতে পারে, তখন ফর্ক চয়েস এ্যালগরিদম সেই ব্লকটি বেছে নেয় যা এটেস্টেশনগুলোর সর্বাধিক ওজন সহ চেইন গঠন করে (যেখানে ওজন হলো তাদের ETH ব্যালেন্স দ্বারা স্কেল করা এটেস্ট করা ভ্যালিডেটরস সংখ্যা)।
#### নিরাপত্তা {#pos-security}
-একটি প্রুফ-অফ-স্টেক সিস্টেম ক্রিপ্টো-অর্থনৈতিকভাবে সুরক্ষিত কারণ চেইনের নিয়ন্ত্রণ নেওয়ার চেষ্টাকারী একজন আক্রমণকারীকে বিপুল পরিমাণ ETH ধ্বংস করতে হবে। একটি পুরষ্কার ব্যবস্থা স্বতন্ত্র স্টেকারদের সৎভাবে আচরণ করতে উৎসাহিত করে, এবং শাস্তিগুলি স্টেকারদের দূষিতভাবে কাজ করা থেকে নিরুৎসাহিত করে।
+একটি প্রুফ-অফ-স্টেক সিস্টেম ক্রিপ্টো-অর্থনৈতিকভাবে সুরক্ষিত কারণ চেইনের নিয়ন্ত্রণ নেওয়ার চেষ্টাকারী একজন আক্রমণকারীকে অবশ্যই বিপুল পরিমাণ ETH ধ্বংস করতে হবে। পুরষ্কারের একটি সিস্টেম ব্যক্তিগত স্টেকারদের সততার সাথে আচরণ করতে উৎসাহিত করে এবং জরিমানা স্টেকারদের ক্ষতিকারক কাজ করা থেকে নিরুৎসাহিত করে।
[প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) সম্পর্কে আরও জানুন
### একটি ভিজ্যুয়াল গাইড {#types-of-consensus-video}
-ইথেরিয়ামে ব্যবহৃত বিভিন্ন ধরণের কনসেন্সাস মেকানিজম সম্পর্কে আরও দেখুন:
+ইথিরিয়ামে ব্যবহৃত বিভিন্ন ধরণের কনসেন্সাস মেকানিজম সম্পর্কে আরও দেখুন:
-### সি বিল প্রতিরোধ ও চেইন নির্বাচন {#sybil-chain}
+### সাইবিল প্রতিরোধ এবং চেইন নির্বাচন {#sybil-chain}
-প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক একা কনসেন্সাস প্রোটোকল নয়, তবে সরলতার জন্য প্রায়শই তাদের সেভাবে উল্লেখ করা হয়। এগুলি আসলে সি বিল প্রতিরোধের মেকানিজম এবং ব্লক অথর নির্বাচক; সর্বশেষ ব্লকের লেখক কে তা সিদ্ধান্ত নেওয়ার একটি উপায়। আরেকটি গুরুত্বপূর্ণ উপাদান হল চেইন সিলেকশন (ওরফে ফর্ক চয়েস) অ্যালগরিদম যা নোডগুলিকে চেইনের হেডে একটি একক সঠিক ব্লক বেছে নিতে সক্ষম করে, এমন পরিস্থিতিতে যেখানে একই অবস্থানে একাধিক ব্লক বিদ্যমান।
+প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক একাই কনসেন্সাস প্রটোকল নয়, তবে সরলতার জন্য প্রায়শই এগুলোকে সেভাবে উল্লেখ করা হয়। এগুলো আসলে সাইবিল এ্যাটাক প্রতিরোধের মেকানিজম এবং ব্লক লেখক নির্বাচক; এগুলো সর্বশেষ ব্লকের লেখক কে তা সিদ্ধান্ত নেওয়ার একটি উপায়। আরেকটি গুরুত্বপূর্ণ উপাদান হলো চেইন নির্বাচন (ওরফে ফর্ক চয়েস) এ্যালগরিদম যা নোডগুলোকে এমন পরিস্থিতিতে চেইনের শীর্ষে একটি একক সঠিক ব্লক বেছে নিতে সক্ষম করে যেখানে একই অবস্থানে একাধিক ব্লকস বিদ্যমান থাকে।
-**সি বিল প্রতিরোধ** পরিমাপ করে যে একটি প্রোটোকল একটি সি বিল আক্রমণের বিরুদ্ধে কতটা ভালো কাজ করে। এই ধরনের আক্রমণের প্রতিরোধ একটি ডিসেন্ট্রালাইজড ব্লকচেইনের জন্য অপরিহার্য এবং মাইনার ও ভ্যালিডেটরদের দেওয়া রিসোর্সের উপর ভিত্তি করে সমানভাবে পুরস্কৃত হতে সক্ষম করে। প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক ব্যবহারকারীদের প্রচুর শক্তি ব্যয় করতে বা প্রচুর জামানত রাখতে বাধ্য করে এর বিরুদ্ধে সুরক্ষা দেয়। এই সুরক্ষাগুলি সি বিল আক্রমণের জন্য একটি অর্থনৈতিক প্রতিবন্ধক।
+**সাইবিল প্রতিরোধ** পরিমাপ করে যে একটি প্রটোকল সাইবিল এ্যাটাকের বিরুদ্ধে কীভাবে কাজ করে। এই ধরণের আক্রমণের প্রতিরোধ একটি ডিসেন্ট্রালাইজড ব্লকচেইনের জন্য অপরিহার্য এবং মাইনার এবং ভ্যালিডেটরসদের বিনিয়োগ করা সম্পদের উপর ভিত্তি করে সমানভাবে পুরস্কৃত হতে সক্ষম করে। প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক ব্যবহারকারীদের প্রচুর শক্তি ব্যয় করতে বা প্রচুর জামানত রাখতে বাধ্য করে এর বিরুদ্ধে রক্ষা করে। এই সুরক্ষাগুলো সাইবিল এ্যাটাকের জন্য একটি অর্থনৈতিক প্রতিবন্ধক।
-একটি **চেইন নির্বাচন নিয়ম** ব্যবহার করা হয় কোন চেইনটি "সঠিক" চেইন তা সিদ্ধান্ত নেওয়ার জন্য। বিটকয়েন "দীর্ঘতম চেইন" নিয়মটি ব্যবহার করে, যার অর্থ হল যে ব্লকচেইনটি সবচেয়ে দীর্ঘ হবে, সেটিকেই বাকি নোডগুলি বৈধ হিসাবে গ্রহণ করবে এবং সেটির সাথে কাজ করবে। প্রুফ-অফ-ওয়ার্ক চেইনের জন্য, দীর্ঘতম চেইনটি চেইনের মোট ক্রমবর্ধমান প্রুফ-অফ-ওয়ার্ক ডিফিকাল্টি দ্বারা নির্ধারিত হয়। ইথেরিয়ামও দীর্ঘতম চেইন নিয়ম ব্যবহার করত; তবে, এখন যেহেতু ইথেরিয়াম প্রুফ-অফ-স্টেকের উপর চলে, এটি একটি আপডেট করা ফর্ক-চয়েস অ্যালগরিদম গ্রহণ করেছে যা চেইনের 'ওজন' পরিমাপ করে। ওজন হল ভ্যালিডেটর ভোটের সঞ্চিত যোগফল, যা ভ্যালিডেটরের স্টেক করা-ইথার ব্যালেন্স দ্বারা ওজন করা হয়।
+কোন চেইনটি "সঠিক" চেইন তা সিদ্ধান্ত নিতে একটি **চেইন নির্বাচনের নিয়ম** ব্যবহার করা হয়। বিটকয়েন "দীর্ঘতম চেইন" নিয়ম ব্যবহার করে, যার অর্থ হলো যে ব্লকচেইনটি সবচেয়ে দীর্ঘ হবে সেটিই বাকি নোডগুলো বৈধ হিসেবে গ্রহণ করবে এবং এর সাথে কাজ করবে। প্রুফ-অফ-ওয়ার্ক চেইনের জন্য, দীর্ঘতম চেইনটি চেইনের মোট ক্রমবর্ধমান প্রুফ-অফ-ওয়ার্ক অসুবিধা দ্বারা নির্ধারিত হয়। ইথিরিয়ামও দীর্ঘতম চেইন নিয়ম ব্যবহার করত; তবে, এখন যেহেতু ইথিরিয়াম প্রুফ-অফ-স্টেক-এ চলে, এটি একটি আপডেট করা ফর্ক-চয়েস এ্যালগরিদম গ্রহণ করেছে যা চেইনের 'ওজন' পরিমাপ করে। ওজন হলো ভ্যালিডেটর ভোটের পুঞ্জীভূত যোগফল, যা ভ্যালিডেটর স্টেক করা-ইথার ব্যালেন্স দ্বারা ওজন করা হয়।
-ইথেরিয়াম [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) নামে পরিচিত একটি কনসেন্সাস মেকানিজম ব্যবহার করে যা [Casper FFG প্রুফ-অফ-স্টেক](https://arxiv.org/abs/1710.09437)-কে [GHOST ফর্ক-চয়েস নিয়ম](https://arxiv.org/abs/2003.03052)-এর সাথে একত্রিত করে।
+ইথিরিয়াম [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) নামে পরিচিত একটি কনসেন্সাস মেকানিজম ব্যবহার করে যা [Casper FFG প্রুফ-অফ-স্টেক](https://arxiv.org/abs/1710.09437)-কে [GHOST ফর্ক-চয়েস নিয়ম](https://arxiv.org/abs/2003.03052)-এর সাথে একত্রিত করে।
## আরও পড়ুন {#further-reading}
-- [একটি ব্লকচেইন কনসেন্সাস অ্যালগরিদম কী?](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm)
-- [নাকামোতো কনসেন্সাস কী? সম্পূর্ণ নতুনদের জন্য গাইড](https://blockonomi.com/nakamoto-consensus/)
+- [ব্লকচেইন কনসেন্সাস এ্যালগরিদম কী?](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm)
+- [নাকামোটো কনসেন্সাস কী? নতুনদের জন্য সম্পূর্ণ গাইড](https://blockonomi.com/nakamoto-consensus/)
- [ক্যাসপার কীভাবে কাজ করে?](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d)
-- [প্রুফ অফ ওয়ার্ক ব্লকচেইনগুলির সুরক্ষা এবং পারফরম্যান্সের উপর](https://eprint.iacr.org/2016/555.pdf)
-- [বাইজান্টাইন ফল্ট](https://en.wikipedia.org/wiki/Byzantine_fault)
+- [প্রুফ-অফ-ওয়ার্ক ব্লকচেইনের নিরাপত্তা এবং পারফরম্যান্সের উপর](https://eprint.iacr.org/2016/555.pdf)
+- [বাইজেন্টাইন ফল্ট](https://en.wikipedia.org/wiki/Byzantine_fault)
_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
- [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/)
- [মাইনিং](/developers/docs/consensus-mechanisms/pow/mining/)
- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)
-- [প্রুফ-অফ-অথোরিটি](/developers/docs/consensus-mechanisms/poa/)
+- [প্রুফ-অফ-অথরিটি](/developers/docs/consensus-mechanisms/poa/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/poa/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/poa/index.md
index 6f7067b6d73..c19538fc79c 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/poa/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/poa/index.md
@@ -1,80 +1,79 @@
---
-title: "প্রুফ-অফ-অথোরিটি (PoA)"
-description: "প্রুফ-অফ-অথোরিটি কনসেন্সাস প্রোটোকল এবং ব্লকচেইন ইকোসিস্টেমে এর ভূমিকার একটি ব্যাখ্যা।"
+title: প্রুফ-অফ-অথরিটি (PoA)
+description: প্রুফ-অফ-অথরিটি কনসেন্সাস প্রটোকল এবং ব্লকচেইন ইকোসিস্টেমে এর ভূমিকার একটি ব্যাখ্যা।
lang: bn
---
-**প্রুফ-অফ-অথোরিটি (PoA)** হলো একটি খ্যাতি-ভিত্তিক কনসেন্সাস অ্যালগরিদম যা [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) এর একটি পরিবর্তিত সংস্করণ। এটি বেশিরভাগ প্রাইভেট চেইন, টেস্টনেট এবং স্থানীয় ডেভেলপমেন্ট নেটওয়ার্ক দ্বারা ব্যবহৃত হয়। PoA একটি খ্যাতি-ভিত্তিক কনসেন্সাস অ্যালগরিদম যার জন্য ব্লক তৈরি করার জন্য একদল অনুমোদিত স্বাক্ষরকারীদের উপর বিশ্বাস রাখতে হয়, PoS-এর স্টেক-ভিত্তিক প্রক্রিয়ার পরিবর্তে।
+**প্রুফ-অফ-অথরিটি (PoA)** হলো একটি রেপুটেশন-ভিত্তিক কনসেন্সাস এ্যালগরিদম যা [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)-এর একটি পরিবর্তিত সংস্করণ। এটি বেশিরভাগ ক্ষেত্রে প্রাইভেট চেইন, টেস্টনেট এবং লোকাল ডেভেলপমেন্ট নেটওয়ার্কগুলোতে ব্যবহৃত হয়। PoA হলো একটি রেপুটেশন-ভিত্তিক কনসেন্সাস এ্যালগরিদম যেখানে PoS-এর স্টেক-ভিত্তিক মেকানিজমের পরিবর্তে ব্লক তৈরি করার জন্য একদল অনুমোদিত সাইনারের (signer) ওপর আস্থা রাখতে হয়।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [ট্রানজ্যাকশন](/developers/docs/transactions/), [ব্লক](/developers/docs/blocks/), এবং [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) সম্পর্কে পড়ার পরামর্শ দিচ্ছি।
+এই পেজটি ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [লেনদেন](/developers/docs/transactions/), [ব্লকস](/developers/docs/blocks/) এবং [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) সম্পর্কে পড়ে নিন।
-## প্রুফ-অফ-অথোরিটি (PoA) কী? {#what-is-poa}
+## প্রুফ-অফ-অথরিটি (PoA) কী? {#what-is-poa}
-প্রুফ-অফ-অথোরিটি হলো **[প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) (PoS)**-এর একটি পরিবর্তিত সংস্করণ যা PoS-এর স্টেক-ভিত্তিক প্রক্রিয়ার পরিবর্তে একটি খ্যাতি-ভিত্তিক কনসেন্সাস অ্যালগরিদম। এই শব্দটি 2017 সালে গ্যাভিন উড প্রথম প্রবর্তন করেন, এবং এই কনসেন্সাস অ্যালগরিদমটি বেশিরভাগ প্রাইভেট চেইন, টেস্টনেট এবং স্থানীয় ডেভেলপমেন্ট নেটওয়ার্ক দ্বারা ব্যবহৃত হয়েছে, কারণ এটি PoW-এর মতো উচ্চ মানের রিসোর্সের প্রয়োজনীয়তা কাটিয়ে ওঠে, এবং ব্লকচেইন সংরক্ষণ এবং ব্লক তৈরি করা নোডগুলির একটি ছোট উপসেট থাকার মাধ্যমে PoS-এর সাথে স্কেলেবিলিটি সমস্যাগুলি কাটিয়ে ওঠে।
+প্রুফ-অফ-অথরিটি হলো **[প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) (PoS)**-এর একটি পরিবর্তিত সংস্করণ যা PoS-এর স্টেক-ভিত্তিক মেকানিজমের পরিবর্তে একটি রেপুটেশন-ভিত্তিক কনসেন্সাস এ্যালগরিদম। এই শব্দটি 2017 সালে গ্যাভিন উড (Gavin Wood) প্রথমবারের মতো চালু করেছিলেন এবং এই কনসেন্সাস এ্যালগরিদমটি বেশিরভাগ ক্ষেত্রে প্রাইভেট চেইন, টেস্টনেট এবং লোকাল ডেভেলপমেন্ট নেটওয়ার্কগুলোতে ব্যবহৃত হয়েছে, কারণ এটি PoW-এর মতো উচ্চমানের রিসোর্সের প্রয়োজনীয়তা দূর করে এবং ব্লকচেইন সংরক্ষণ ও ব্লক তৈরি করার জন্য নোডের একটি ছোট সাবসেট ব্যবহার করে PoS-এর স্কেলিং সমস্যাগুলো কাটিয়ে ওঠে।
-প্রুফ-অফ-অথোরিটির জন্য অনুমোদিত স্বাক্ষরকারীদের একটি সেটের উপর বিশ্বাস রাখতে হয় যা [জেনেসিস ব্লক](/glossary/#genesis-block)-এ সেট করা থাকে। বেশিরভাগ বর্তমান বাস্তবায়নে, চেইনের কনসেন্সাস নির্ধারণ করার সময় সমস্ত অনুমোদিত স্বাক্ষরকারী সমান ক্ষমতা এবং সুযোগ-সুবিধা বজায় রাখে। খ্যাতি স্টেকিংয়ের পেছনের ধারণাটি হল যে প্রত্যেক অনুমোদিত ভ্যালিডেটর নো ইয়োর কাস্টমার (KYC)-এর মতো জিনিসের মাধ্যমে সবার কাছে সুপরিচিত, অথবা একমাত্র ভ্যালিডেটর হিসেবে একটি সুপরিচিত সংস্থা থাকার মাধ্যমে — এইভাবে যদি কোনও ভ্যালিডেটর কোনও ভুল করে, তবে তাদের পরিচয় জানা যায়।
+প্রুফ-অফ-অথরিটিতে একদল অনুমোদিত সাইনারের ওপর আস্থা রাখতে হয় যা [জেনেসিস ব্লক](/glossary/#genesis-block)-এ সেট করা থাকে। বর্তমানের বেশিরভাগ ইমপ্লিমেন্টেশনে, চেইনের কনসেন্সাস নির্ধারণ করার সময় সমস্ত অনুমোদিত সাইনার সমান ক্ষমতা এবং সুবিধা বজায় রাখে। রেপুটেশন স্টেকিংয়ের পেছনের ধারণাটি হলো প্রতিটি অনুমোদিত ভ্যালিডেটর নো ইওর কাস্টমার (KYC)-এর মতো বিষয়গুলোর মাধ্যমে সবার কাছে সুপরিচিত থাকে, অথবা একটি সুপরিচিত সংস্থাই একমাত্র ভ্যালিডেটর হিসেবে কাজ করে—এভাবে যদি কোনো ভ্যালিডেটর কোনো ভুল করে, তবে তাদের পরিচয় জানা থাকে।
-PoA-এর একাধিক বাস্তবায়ন রয়েছে, তবে স্ট্যান্ডার্ড ইথেরিয়াম বাস্তবায়ন হল **clique**, যা [EIP-225](https://eips.ethereum.org/EIPS/eip-225) প্রয়োগ করে। Clique ডেভেলপার-বান্ধব এবং সহজে প্রয়োগযোগ্য একটি স্ট্যান্ডার্ড, যা সমস্ত ক্লায়েন্ট সিঙ্কিং টাইপ সমর্থন করে। অন্যান্য বাস্তবায়নের মধ্যে রয়েছে [IBFT 2.0](https://besu.hyperledger.org/private-networks/concepts/poa) এবং [Aura](https://openethereum.github.io/Chain-specification)।
+PoA-এর একাধিক ইমপ্লিমেন্টেশন রয়েছে, তবে স্ট্যান্ডার্ড ইথিরিয়াম ইমপ্লিমেন্টেশন হলো **clique**, যা [EIP-225](https://eips.ethereum.org/EIPS/eip-225) ইমপ্লিমেন্ট করে। Clique হলো ডেভেলপার-বান্ধব এবং সহজে ইমপ্লিমেন্ট করা যায় এমন একটি স্ট্যান্ডার্ড, যা সব ধরনের ক্লায়েন্ট সিঙ্কিং সমর্থন করে। অন্যান্য ইমপ্লিমেন্টেশনের মধ্যে রয়েছে [IBFT 2.0](https://besu.hyperledger.org/private-networks/concepts/poa) এবং [Aura](https://openethereum.github.io/Chain-specification)।
-## এটি কিভাবে কাজ করে {#how-it-works}
+## এটি কীভাবে কাজ করে {#how-it-works}
-PoA-তে, নতুন ব্লক তৈরি করার জন্য অনুমোদিত স্বাক্ষরকারীদের একটি সেট নির্বাচন করা হয়। স্বাক্ষরকারীদের তাদের খ্যাতির ভিত্তিতে নির্বাচন করা হয়, এবং শুধুমাত্র তাদেরই নতুন ব্লক তৈরি করার অনুমতি দেওয়া হয়। স্বাক্ষরকারীদের একটি রাউন্ড-রবিন পদ্ধতিতে নির্বাচন করা হয়, এবং প্রত্যেক স্বাক্ষরকারীকে একটি নির্দিষ্ট সময়সীমার মধ্যে একটি ব্লক তৈরি করার অনুমতি দেওয়া হয়। ব্লক তৈরির সময় নির্দিষ্ট, এবং স্বাক্ষরকারীদের সেই সময়সীমার মধ্যে একটি ব্লক তৈরি করতে হয়।
+PoA-তে, নতুন ব্লকস তৈরি করার জন্য একদল অনুমোদিত সাইনার নির্বাচন করা হয়। সাইনারদের তাদের রেপুটেশনের ওপর ভিত্তি করে নির্বাচন করা হয় এবং শুধুমাত্র তাদেরই নতুন ব্লকস তৈরি করার অনুমতি দেওয়া হয়। সাইনারদের রাউন্ড-রবিন পদ্ধতিতে নির্বাচন করা হয় এবং প্রতিটি সাইনারকে একটি নির্দিষ্ট সময়সীমার মধ্যে একটি ব্লক তৈরি করার অনুমতি দেওয়া হয়। ব্লক তৈরির সময় নির্দিষ্ট থাকে এবং সাইনারদের সেই সময়সীমার মধ্যেই একটি ব্লক তৈরি করতে হয়।
-এই প্রসঙ্গে খ্যাতি কোনো পরিমাণগত জিনিস নয়, বরং এটি Microsoft এবং Google-এর মতো সুপরিচিত কর্পোরেশনগুলির খ্যাতি, তাই বিশ্বস্ত স্বাক্ষরকারী নির্বাচন করার পদ্ধতিটি অ্যালগরিদমিক নয় বরং এটি _আস্থা_র স্বাভাবিক মানবিক কাজ, যেখানে একটি সত্তা, ধরা যাক উদাহরণস্বরূপ Microsoft, শত শত বা হাজার হাজার স্টার্টআপের মধ্যে একটি PoA প্রাইভেট নেটওয়ার্ক তৈরি করে এবং ভবিষ্যতে Google-এর মতো অন্যান্য সুপরিচিত স্বাক্ষরকারীদের যোগ করার সম্ভাবনা সহ একমাত্র বিশ্বস্ত স্বাক্ষরকারী হিসাবে নিজেকে ভূমিকা পালন করে, স্টার্টআপগুলি নিঃসন্দেহে, Microsoft-কে সব সময় সৎভাবে কাজ করতে এবং নেটওয়ার্ক ব্যবহার করতে বিশ্বাস করবে। এটি বিভিন্ন ছোট/প্রাইভেট নেটওয়ার্কে স্টেক করার প্রয়োজনীয়তা সমাধান করে যা বিভিন্ন উদ্দেশ্যে তৈরি করা হয়েছিল যাতে সেগুলিকে বিকেন্দ্রীভূত এবং কার্যকরী রাখা যায়, সেইসাথে মাইনারদের প্রয়োজনীয়তাও, যা প্রচুর শক্তি এবং রিসোর্স খরচ করে। কিছু প্রাইভেট নেটওয়ার্ক PoA স্ট্যান্ডার্ড ব্যবহার করে যেমন VeChain, এবং কিছু এটি পরিবর্তন করে যেমন Binance যা [PoSA](https://academy.binance.com/en/glossary/proof-of-staked-authority-posa) ব্যবহার করে যা PoA এবং PoS-এর একটি কাস্টম পরিবর্তিত সংস্করণ।
+এই প্রেক্ষাপটে রেপুটেশন কোনো পরিমাণগত বিষয় নয় বরং এটি মাইক্রোসফট এবং গুগলের মতো সুপরিচিত কর্পোরেশনগুলোর রেপুটেশন, তাই বিশ্বস্ত সাইনার নির্বাচন করার পদ্ধতিটি এ্যালগরিদমিক নয় বরং এটি _আস্থা_ বা বিশ্বাসের একটি স্বাভাবিক মানবিক কাজ যেখানে একটি সত্তা, উদাহরণস্বরূপ মাইক্রোসফট, শত শত বা হাজার হাজার স্টার্টআপের মধ্যে একটি PoA প্রাইভেট নেটওয়ার্ক তৈরি করে এবং ভবিষ্যতে গুগলের মতো অন্যান্য সুপরিচিত সাইনার যুক্ত করার সম্ভাবনা রেখে নিজেকে একমাত্র বিশ্বস্ত সাইনার হিসেবে নিযুক্ত করে, স্টার্টআপগুলো নিঃসন্দেহে মাইক্রোসফটকে সব সময় সততার সাথে কাজ করার জন্য বিশ্বাস করবে এবং নেটওয়ার্কটি ব্যবহার করবে। এটি বিভিন্ন ছোট/প্রাইভেট নেটওয়ার্কগুলোতে স্টেক করার প্রয়োজনীয়তা সমাধান করে যা সেগুলোকে ডিসেন্ট্রালাইজড এবং কার্যকর রাখার জন্য বিভিন্ন উদ্দেশ্যে তৈরি করা হয়েছিল, এর পাশাপাশি মাইনারদের প্রয়োজনীয়তাও দূর করে, যা প্রচুর বিদ্যুৎ এবং রিসোর্স খরচ করে। কিছু প্রাইভেট নেটওয়ার্ক PoA স্ট্যান্ডার্ড ব্যবহার করে যেমন VeChain, এবং কিছু এটিকে পরিবর্তন করে যেমন Binance যা [PoSA](https://academy.binance.com/en/glossary/proof-of-staked-authority-posa) ব্যবহার করে যা PoA এবং PoS-এর একটি কাস্টম পরিবর্তিত সংস্করণ।
-ভোটদান প্রক্রিয়াটি স্বাক্ষরকারীরা নিজেরাই করে থাকেন। প্রত্যেক স্বাক্ষরকারী যখন একটি নতুন ব্লক তৈরি করে তখন তাদের ব্লকে একজন স্বাক্ষরকারীকে যোগ বা অপসারণের জন্য ভোট দেয়। ভোটগুলি নোড দ্বারা গণনা করা হয়, এবং ভোট একটি নির্দিষ্ট `SIGNER_LIMIT` থ্রেশহোল্ডে পৌঁছানোর উপর ভিত্তি করে স্বাক্ষরকারীদের যোগ বা অপসারণ করা হয়।
+ভোটিং প্রক্রিয়াটি সাইনাররা নিজেরাই সম্পন্ন করে। প্রতিটি সাইনার যখন একটি নতুন ব্লক তৈরি করে তখন তাদের ব্লকে একজন সাইনার যুক্ত বা অপসারণ করার জন্য ভোট দেয়। ভোটগুলো নোড দ্বারা গণনা করা হয় এবং ভোটগুলো একটি নির্দিষ্ট থ্রেশহোল্ড `SIGNER_LIMIT`-এ পৌঁছানোর ওপর ভিত্তি করে সাইনারদের যুক্ত বা অপসারণ করা হয়।
-এমন পরিস্থিতি হতে পারে যেখানে ছোট ফর্ক ঘটে, একটি ব্লকের ডিফিকাল্টি নির্ভর করে ব্লকটি পালাক্রমে বা পালার বাইরে স্বাক্ষরিত হয়েছিল কিনা তার উপর। “পালাক্রমে” ব্লকগুলির ডিফিকাল্টি 2, এবং “পালার বাইরে” ব্লকগুলির ডিফিকাল্টি 1। ছোট ফর্কের ক্ষেত্রে, যে চেইনে বেশিরভাগ স্বাক্ষরকারী “পালাক্রমে” ব্লক সিল করে, সেটি সবচেয়ে বেশি ডিফিকাল্টি সংগ্রহ করবে এবং জিতবে।
+এমন পরিস্থিতি হতে পারে যেখানে ছোট ফর্ক ঘটে, একটি ব্লকের ডিফিকাল্টি নির্ভর করে ব্লকটি তার টার্নে (in turn) নাকি টার্নের বাইরে (out of turn) সাইন করা হয়েছিল তার ওপর। "In turn" ব্লকগুলোর ডিফিকাল্টি 2 এবং "out of turn" ব্লকগুলোর ডিফিকাল্টি 1 থাকে। ছোট ফর্ক-এর ক্ষেত্রে, যে চেইনে বেশিরভাগ সাইনার "in turn" ব্লক সিল করে সেটি সবচেয়ে বেশি ডিফিকাল্টি অর্জন করবে এবং জয়ী হবে।
-## আক্রমণের ভেক্টর {#attack-vectors}
+## এ্যাটাক ভেক্টর {#attack-vectors}
-### দূষিত স্বাক্ষরকারী {#malicious-signers}
+### ক্ষতিকারক সাইনার {#malicious-signers}
-একজন দূষিত ব্যবহারকারীকে স্বাক্ষরকারীদের তালিকায় যুক্ত করা যেতে পারে, অথবা একটি সাইনিং কী/মেশিন আপোস করা হতে পারে। এই ধরনের পরিস্থিতিতে প্রোটোকলটিকে পুনর্গঠন এবং স্প্যামিংয়ের বিরুদ্ধে নিজেকে রক্ষা করতে সক্ষম হতে হবে। প্রস্তাবিত সমাধানটি হল N সংখ্যক অনুমোদিত স্বাক্ষরকারীদের একটি তালিকা দেওয়া হলে, যে কোনো স্বাক্ষরকারী প্রতি K-এর মধ্যে শুধুমাত্র 1টি ব্লক মিন্ট করতে পারবে। এটি নিশ্চিত করে যে ক্ষতি সীমিত, এবং অবশিষ্ট ভ্যালিডেটররা দূষিত ব্যবহারকারীকে ভোট দিয়ে বের করে দিতে পারে।
+সাইনারদের তালিকায় একজন ক্ষতিকারক ব্যবহারকারী যুক্ত হতে পারে, অথবা একটি সাইনিং কি/মেশিন কম্প্রোমাইজড হতে পারে। এমন পরিস্থিতিতে প্রটোকলটিকে রিঅর্গানাইজেশন এবং স্প্যামিংয়ের বিরুদ্ধে নিজেকে রক্ষা করতে সক্ষম হতে হবে। প্রস্তাবিত সমাধানটি হলো N সংখ্যক অনুমোদিত সাইনারের একটি তালিকা দেওয়া হলে, যেকোনো সাইনার প্রতি K ব্লকের মধ্যে শুধুমাত্র 1টি ব্লক মিন্ট করতে পারে। এটি নিশ্চিত করে যে ক্ষয়ক্ষতি সীমিত থাকে এবং বাকি ভ্যালিডেটরস ক্ষতিকারক ব্যবহারকারীকে ভোট দিয়ে বের করে দিতে পারে।
### সেন্সরশিপ {#censorship-attack}
-আরেকটি আকর্ষণীয় আক্রমণের ভেক্টর হল যদি একজন স্বাক্ষরকারী (বা স্বাক্ষরকারীদের একটি গোষ্ঠী) সেই ব্লকগুলিকে সেন্সর করার চেষ্টা করে যেগুলি তাদেরকে অনুমোদন তালিকা থেকে সরানোর জন্য ভোট দেয়। এটি এড়াতে, স্বাক্ষরকারীদের অনুমোদিত মিন্টিং ফ্রিকোয়েন্সি N/2-এর মধ্যে 1-এ সীমাবদ্ধ করা হয়েছে। এটি নিশ্চিত করে যে দূষিত স্বাক্ষরকারীদের সাইনিং অ্যাকাউন্টের কমপক্ষে 51% নিয়ন্ত্রণ করতে হবে, যে সময়ে তারা কার্যকরভাবে চেইনের জন্য নতুন সত্যের উৎস হয়ে উঠবে।
+আরেকটি আকর্ষণীয় এ্যাটাক ভেক্টর হলো যদি কোনো সাইনার (বা সাইনারদের গ্রুপ) এমন ব্লকস সেন্সর করার চেষ্টা করে যা তাদের অনুমোদনের তালিকা থেকে সরিয়ে দেওয়ার জন্য ভোট দেয়। এটি এড়ানোর জন্য, সাইনারদের অনুমোদিত মিন্টিং ফ্রিকোয়েন্সি N/2 এর মধ্যে 1-এ সীমাবদ্ধ করা হয়েছে। এটি নিশ্চিত করে যে ক্ষতিকারক সাইনারদের কমপক্ষে 51% সাইনিং একাউন্ট নিয়ন্ত্রণ করতে হবে, যে পর্যায়ে তারা কার্যকরভাবে চেইনের জন্য নতুন সোর্স-অফ-ট্রুথ হয়ে উঠবে।
### স্প্যাম {#spam-attack}
-আরেকটি ছোট আক্রমণের ভেক্টর হল দূষিত স্বাক্ষরকারীরা তাদের মিন্ট করা প্রতিটি ব্লকের ভিতরে নতুন ভোটের প্রস্তাব ইনজেক্ট করা। যেহেতু অনুমোদিত স্বাক্ষরকারীদের আসল তালিকা তৈরি করতে নোডগুলিকে সমস্ত ভোট গণনা করতে হয়, তাই তাদের অবশ্যই সময়ের সাথে সাথে সমস্ত ভোট রেকর্ড করতে হবে। ভোট উইন্ডোতে একটি সীমা নির্ধারণ না করলে, এটি ধীরে ধীরে, তবুও সীমাহীনভাবে বাড়তে পারে। সমাধান হল W ব্লকের একটি _চলমান_ উইন্ডো স্থাপন করা যার পরে ভোটগুলিকে পুরানো বলে মনে করা হয়। _একটি যুক্তিসঙ্গত উইন্ডো 1-2 ইপক হতে পারে।_
+আরেকটি ছোট এ্যাটাক ভেক্টর হলো ক্ষতিকারক সাইনাররা তাদের মিন্ট করা প্রতিটি ব্লকের ভেতরে নতুন ভোট প্রস্তাব ইনজেক্ট করে। যেহেতু অনুমোদিত সাইনারদের প্রকৃত তালিকা তৈরি করার জন্য নোড-গুলোকে সমস্ত ভোট গণনা করতে হয়, তাই তাদের সময়ের সাথে সাথে সমস্ত ভোট রেকর্ড করতে হবে। ভোট উইন্ডোতে কোনো সীমা নির্ধারণ না করলে, এটি ধীরে ধীরে বাড়তে পারে, তবে তা অসীম হতে পারে। এর সমাধান হলো W ব্লকের একটি _মুভিং_ উইন্ডো স্থাপন করা যার পরে ভোটগুলোকে বাতিল বলে বিবেচনা করা হয়। _একটি যুক্তিসঙ্গত উইন্ডো 1-2 এপোক হতে পারে।_
-### সমবর্তী ব্লক {#concurrent-blocks}
+### কনকারেন্ট ব্লকস {#concurrent-blocks}
-একটি PoA নেটওয়ার্কে, যখন N সংখ্যক অনুমোদিত স্বাক্ষরকারী থাকে, তখন প্রত্যেক স্বাক্ষরকারীকে K-এর মধ্যে 1টি ব্লক মিন্ট করার অনুমতি দেওয়া হয়, যার মানে হল N-K+1 ভ্যালিডেটরকে যেকোনো নির্দিষ্ট সময়ে মিন্ট করার অনুমতি দেওয়া হয়। এই ভ্যালিডেটরদের ব্লকগুলির জন্য প্রতিযোগিতা করা থেকে বিরত রাখতে, প্রতিটি স্বাক্ষরকারীর একটি নতুন ব্লক প্রকাশ করার সময়ে একটি ছোট র্যান্ডম "অফসেট" যোগ করা উচিত। যদিও এই প্রক্রিয়াটি নিশ্চিত করে যে ছোট ফর্ক বিরল, তবুও মেইননেটের মতোই মাঝে মাঝে ফর্ক ঘটতে পারে। যদি একজন স্বাক্ষরকারীকে তার ক্ষমতার অপব্যবহার করতে এবং বিশৃঙ্খলা সৃষ্টি করতে দেখা যায়, তবে অন্যান্য স্বাক্ষরকারীরা তাকে ভোট দিয়ে বের করে দিতে পারে।
+একটি PoA নেটওয়ার্ক-এ, যখন N সংখ্যক অনুমোদিত সাইনার থাকে, তখন প্রতিটি সাইনারকে K-এর মধ্যে 1টি ব্লক মিন্ট করার অনুমতি দেওয়া হয়, যার অর্থ হলো যেকোনো নির্দিষ্ট সময়ে N-K+1 ভ্যালিডেটরস মিন্ট করার অনুমতি পায়। এই ভ্যালিডেটরস-দের ব্লকস-এর জন্য প্রতিযোগিতা করা থেকে বিরত রাখতে, প্রতিটি সাইনারের উচিত একটি নতুন ব্লক রিলিজ করার সময় একটি ছোট র্যান্ডম "অফসেট" যোগ করা। যদিও এই প্রক্রিয়াটি নিশ্চিত করে যে ছোট ফর্ক বিরল, তবুও মেইননেট-এর মতোই মাঝে মাঝে ফর্ক ঘটতে পারে। যদি কোনো সাইনার তার ক্ষমতার অপব্যবহার করে এবং বিশৃঙ্খলা সৃষ্টি করে বলে প্রমাণিত হয়, তবে অন্যান্য সাইনাররা তাদের ভোট দিয়ে বের করে দিতে পারে।
-উদাহরণস্বরূপ, যদি 10 জন অনুমোদিত স্বাক্ষরকারী থাকে এবং প্রত্যেক স্বাক্ষরকারীকে 20টির মধ্যে 1টি ব্লক তৈরি করার অনুমতি দেওয়া হয়, তাহলে যেকোনো সময়ে 11 জন ভ্যালিডেটর ব্লক তৈরি করতে পারে। তাদেরকে ব্লক তৈরির জন্য প্রতিযোগিতা করা থেকে বিরত রাখতে, প্রতিটি স্বাক্ষরকারী একটি নতুন ব্লক প্রকাশ করার সময়ে একটি ছোট র্যান্ডম "অফসেট" যোগ করে। এটি ছোট ফর্কের ঘটনা হ্রাস করে কিন্তু ইথেরিয়াম মেইননেটে দেখা যায় এমন মাঝে মাঝে ফর্কের অনুমতি দেয়। যদি একজন স্বাক্ষরকারী তাদের কর্তৃত্বের অপব্যবহার করে এবং বিঘ্ন ঘটায়, তবে তাদেরকে নেটওয়ার্ক থেকে ভোট দিয়ে বের করে দেওয়া যেতে পারে।
+উদাহরণস্বরূপ, যদি 10 জন অনুমোদিত সাইনার থাকে এবং প্রতিটি সাইনারকে 20টির মধ্যে 1টি ব্লক তৈরি করার অনুমতি দেওয়া হয়, তবে যেকোনো নির্দিষ্ট সময়ে 11 জন ভ্যালিডেটরস ব্লকস তৈরি করতে পারে। তাদের ব্লকস তৈরি করার প্রতিযোগিতা থেকে বিরত রাখতে, প্রতিটি সাইনার একটি নতুন ব্লক রিলিজ করার সময় একটি ছোট র্যান্ডম "অফসেট" যোগ করে। এটি ছোট ফর্ক-এর ঘটনা কমায় তবে ইথিরিয়াম মেইননেট-এ যেমন দেখা যায়, মাঝে মাঝে ফর্ক হওয়ার অনুমতি দেয়। যদি কোনো সাইনার তাদের কর্তৃত্বের অপব্যবহার করে এবং ব্যাঘাত ঘটায়, তবে তাদের ভোট দিয়ে নেটওয়ার্ক থেকে বের করে দেওয়া যেতে পারে।
## সুবিধা এবং অসুবিধা {#pros-and-cons}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
-| PoS এবং PoW-এর মতো অন্যান্য জনপ্রিয় পদ্ধতির চেয়ে বেশি স্কেলেবল, কারণ এটি সীমিত সংখ্যক ব্লক স্বাক্ষরকারীর উপর ভিত্তি করে। | PoA নেটওয়ার্কগুলিতে সাধারণত অপেক্ষাকৃত কম সংখ্যক ভ্যালিডেটিং নোড থাকে। এটি একটি PoA নেটওয়ার্ককে আরও কেন্দ্রীভূত করে তোলে। |
-| PoA ব্লকচেইন চালানো এবং রক্ষণাবেক্ষণ করা অবিশ্বাস্যভাবে সস্তা। | একজন অনুমোদিত স্বাক্ষরকারী হওয়া সাধারণত একজন সাধারণ মানুষের নাগালের বাইরে, কারণ ব্লকচেইনটির জন্য প্রতিষ্ঠিত খ্যাতিসম্পন্ন সত্তার প্রয়োজন হয়। |
-| লেনদেন খুব দ্রুত নিশ্চিত হয় কারণ এটি 1 সেকেন্ডেরও কম সময়ে পৌঁছাতে পারে কারণ নতুন ব্লক যাচাই করার জন্য কেবল সীমিত সংখ্যক স্বাক্ষরকারীর প্রয়োজন হয়। | দূষিত স্বাক্ষরকারীরা নেটওয়ার্কে রিঅর্গ, ডাবল স্পেন্ড, লেনদেন সেন্সর করতে পারে, এই আক্রমণগুলি প্রশমিত করা হলেও তা এখনও সম্ভব। |
+| সুবিধা | অসুবিধা |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
+| PoS এবং PoW-এর মতো অন্যান্য জনপ্রিয় মেকানিজমের চেয়ে বেশি স্কেলেবল, কারণ এটি সীমিত সংখ্যক ব্লক সাইনারের ওপর ভিত্তি করে তৈরি | PoA নেটওয়ার্ক-গুলোতে সাধারণত তুলনামূলকভাবে অল্প সংখ্যক ভ্যালিডেটিং নোড থাকে। এটি একটি PoA নেটওয়ার্ক-কে আরও সেন্ট্রালাইজড করে তোলে। |
+| PoA ব্লকচেইন চালানো এবং রক্ষণাবেক্ষণ করা অবিশ্বাস্যভাবে সস্তা | একজন অনুমোদিত সাইনার হওয়া সাধারণত একজন সাধারণ মানুষের নাগালের বাইরে, কারণ ব্লকচেইন-এর জন্য প্রতিষ্ঠিত রেপুটেশন সম্পন্ন সত্তার প্রয়োজন হয়। |
+| লেনদেন খুব দ্রুত কনফার্ম হয় কারণ এটি 1 সেকেন্ডেরও কম সময়ে পৌঁছাতে পারে যেহেতু নতুন ব্লকস ভ্যালিডেট করার জন্য শুধুমাত্র সীমিত সংখ্যক সাইনারের প্রয়োজন হয় | ক্ষতিকারক সাইনাররা নেটওয়ার্ক-এ রিঅর্গানাইজ, ডাবল স্পেন্ড, লেনদেন সেন্সর করতে পারে, এই আক্রমণগুলো প্রশমিত করা হলেও এখনও সম্ভব |
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
- [EIP-225](https://eips.ethereum.org/EIPS/eip-225) _Clique স্ট্যান্ডার্ড_
- [প্রুফ অফ অথরিটি স্টাডি](https://github.com/cryptoeconomics-study/website/blob/master/docs/sync/2.4-lecture.md) _ক্রিপ্টোইকোনমিক্স_
- [প্রুফ অফ অথরিটি কী](https://forum.openzeppelin.com/t/proof-of-authority/3577) _OpenZeppelin_
-- [প্রুফ অফ অথরিটির ব্যাখ্যা](https://academy.binance.com/en/articles/proof-of-authority-explained) _binance_
+- [প্রুফ অফ অথরিটি ব্যাখ্যা](https://academy.binance.com/en/articles/proof-of-authority-explained) _binance_
- [ব্লকচেইনে PoA](https://medium.com/techskill-brew/proof-of-authority-or-poa-in-blockchain-part-11-blockchain-series-be15b3321cba)
-- [Clique-এর ব্যাখ্যা](https://medium.com/@Destiner/clique-cross-client-proof-of-authority-algorithm-for-ethereum-8b2a135201d)
-- [অপ্রচলিত PoA, Aura স্পেসিফিকেশন](https://openethereum.github.io/Chain-specification)
-- [IBFT 2.0, আরেকটি PoA বাস্তবায়ন](https://besu.hyperledger.org/private-networks/concepts/poa)
+- [Clique ব্যাখ্যা](https://medium.com/@Destiner/clique-cross-client-proof-of-authority-algorithm-for-ethereum-8b2a135201d)
+- [ডেপ্রিকেটেড PoA, Aura স্পেসিফিকেশন](https://openethereum.github.io/Chain-specification)
+- [IBFT 2.0, আরেকটি PoA ইমপ্লিমেন্টেশন](https://besu.hyperledger.org/private-networks/concepts/poa)
-### আপনি কি দেখে শিখতে বেশি পছন্দ করেন? {#visual-learner}
+### ভিজ্যুয়াল লার্নার? {#visual-learner}
-প্রুফ-অফ-অথোরিটির একটি ভিজ্যুয়াল ব্যাখ্যা দেখুন:
+প্রুফ-অফ-অথরিটির একটি ভিজ্যুয়াল ব্যাখ্যা দেখুন:
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত টপিক {#related-topics}
- [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/)
-- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)
-
+- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
index 106df77b6a6..4403b4035c5 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
@@ -1,166 +1,163 @@
---
-title: "ইথেরিয়াম প্রুফ-অফ-স্টেক আক্রমণ এবং প্রতিরক্ষা"
-description: "প্রুফ-অফ-স্টেক ইথেরিয়ামের পরিচিত আক্রমণ ভেক্টর এবং কীভাবে সেগুলি থেকে প্রতিরক্ষা করা হয়, সে সম্পর্কে জানুন।"
+title: ইথিরিয়াম প্রুফ-অফ-স্টেক এ্যাটাক এবং ডিফেন্স
+description: প্রুফ-অফ-স্টেক ইথিরিয়ামের পরিচিত এ্যাটাক ভেক্টর এবং কীভাবে সেগুলোর বিরুদ্ধে প্রতিরোধ গড়ে তোলা হয় সে সম্পর্কে জানুন।
lang: bn
---
-চোর এবং নাশকতাকারীরা ক্রমাগত ইথেরিয়ামের ক্লায়েন্ট সফটওয়্যার আক্রমণ করার সুযোগ খুঁজছে। এই পৃষ্ঠাটিতে ইথেরিয়ামের কনসেন্সাস লেয়ারের ওপর পরিচিত আক্রমণ ভেক্টরগুলির রূপরেখা দেওয়া হয়েছে এবং কীভাবে সেই আক্রমণগুলির বিরুদ্ধে প্রতিরক্ষা করা যায়, তারও রূপরেখা দেওয়া হয়েছে। এই পৃষ্ঠার তথ্য একটি [দীর্ঘ সংস্করণ](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) থেকে অভিযোজিত।
+চোর এবং নাশকতাকারীরা ক্রমাগত [Ethereum](/) এর ক্লায়েন্ট সফটওয়্যারে আক্রমণ করার সুযোগ খোঁজে। এই পেজটি ইথিরিয়ামের কনসেন্সাস লেয়ার এর পরিচিত এ্যাটাক ভেক্টরগুলোর রূপরেখা দেয় এবং কীভাবে সেই আক্রমণগুলো প্রতিরোধ করা যায় তা তুলে ধরে। এই পেজের তথ্যগুলো একটি [দীর্ঘতর সংস্করণ](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) থেকে নেওয়া হয়েছে।
## পূর্বশর্ত {#prerequisites}
-[প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) সম্পর্কে কিছু প্রাথমিক জ্ঞান থাকা প্রয়োজন। এছাড়াও, ইথেরিয়ামের [ইনসেন্টিভ লেয়ার](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) এবং ফর্ক-চয়েস অ্যালগরিদম, [LMD-GHOST](/developers/docs/consensus-mechanisms/pos/gasper) সম্পর্কে একটি প্রাথমিক ধারণা থাকা সহায়ক হবে।
+[প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) সম্পর্কে কিছু প্রাথমিক জ্ঞান থাকা প্রয়োজন। এছাড়াও, ইথিরিয়ামের [ইনসেন্টিভ লেয়ার](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) এবং ফর্ক-চয়েস এ্যালগরিদম, [LMD-GHOST](/developers/docs/consensus-mechanisms/pos/gasper) সম্পর্কে প্রাথমিক ধারণা থাকা সহায়ক হবে।
-## আক্রমণকারীরা কী চায়? {#what-do-attackers-want}
+## আক্রমণকারীরা কী চায়? {#what-do-attackers-want}
-একটি সাধারণ ভুল ধারণা হল যে একজন সফল আক্রমণকারী নতুন ইথার তৈরি করতে পারে, বা নির্বিচার অ্যাকাউন্ট থেকে ইথার সরিয়ে নিতে পারে। এর কোনোটিই সম্ভব নয় কারণ নেটওয়ার্কের সমস্ত এক্সিকিউশন ক্লায়েন্ট দ্বারা সমস্ত লেনদেন কার্যকর করা হয়। তাদের অবশ্যই বৈধতার প্রাথমিক শর্তগুলি পূরণ করতে হবে (যেমন, লেনদেনগুলি প্রেরকের প্রাইভেট কী দ্বারা স্বাক্ষরিত, প্রেরকের পর্যাপ্ত ব্যালেন্স রয়েছে, ইত্যাদি) অন্যথায় সেগুলি কেবল প্রত্যাবর্তন করে। এমন তিন ধরনের ফলাফল রয়েছে যা একজন আক্রমণকারী বাস্তবিকভাবে লক্ষ্য করতে পারে: রিঅর্গ, ডাবল ফাইনালিটি বা ফাইনালিটি ডিলে।
+একটি সাধারণ ভুল ধারণা হলো যে একজন সফল আক্রমণকারী নতুন ইথার তৈরি করতে পারে, অথবা যেকোনো একাউন্ট থেকে ইথার চুরি করতে পারে। এর কোনোটিই সম্ভব নয় কারণ সমস্ত লেনদেন নেটওয়ার্ক এর সমস্ত এক্সিকিউশন ক্লায়েন্ট দ্বারা এক্সিকিউট করা হয়। সেগুলোকে অবশ্যই বৈধতার প্রাথমিক শর্ত পূরণ করতে হবে (যেমন, লেনদেন প্রেরকের প্রাইভেট কি দ্বারা স্বাক্ষরিত হতে হবে, প্রেরকের পর্যাপ্ত ব্যালেন্স থাকতে হবে ইত্যাদি) অন্যথায় সেগুলো কেবল রিভার্ট হয়ে যাবে। আক্রমণকারীরা বাস্তবসম্মতভাবে তিনটি ফলাফলের লক্ষ্য রাখতে পারে: রিঅর্গস (reorgs), ডাবল ফাইনালিটি (double finality) বা ফাইনালিটি বিলম্ব (finality delay)।
-একটি **“রিঅর্গ”** হলো ক্যানোনিকাল চেইনে ব্লকগুলির একটি নতুন ক্রমে পুনর্বিন্যাস করা, সম্ভবত কিছু ব্লক যোগ বা বিয়োগ করে। একটি বিদ্বেষপূর্ণ রিঅর্গ নির্দিষ্ট ব্লক অন্তর্ভুক্ত বা বাদ দেওয়া নিশ্চিত করতে পারে, যা ডাবল-স্পেন্ডিং বা ফ্রন্ট-রানিং এবং ব্যাক-রানিং লেনদেনের (MEV) মাধ্যমে মূল্য আহরণের সুযোগ দেয়। রি-অর্গগুলি ক্যানোনিকাল চেইনে নির্দিষ্ট লেনদেনকে অন্তর্ভুক্ত হওয়া থেকে আটকাতেও ব্যবহার করা যেতে পারে - যা এক ধরনের সেন্সরশিপ। রিঅর্গের সবচেয়ে চরম রূপ হলো “ফাইনালিটি রিভার্সন”, যা পূর্বে ফাইনাল হওয়া ব্লকগুলিকে সরিয়ে দেয় বা প্রতিস্থাপন করে। এটি কেবল তখনই সম্ভব যদি আক্রমণকারী মোট স্টেক করা ইথারের ⅓-এর বেশি ধ্বংস করে দেয় - এই নিশ্চয়তাটি “ইকোনমিক ফাইনালিটি” নামে পরিচিত - এই বিষয়ে পরে আরও আলোচনা করা হবে।
+একটি **“রিঅর্গ” (reorg)** হলো ব্লকস এর একটি নতুন ক্রমানুসারে পুনর্বিন্যাস, সম্ভবত ক্যানোনিকাল চেইনে কিছু ব্লক যোগ বা বিয়োগ করার মাধ্যমে। একটি ক্ষতিকারক রিঅর্গ নির্দিষ্ট ব্লকস অন্তর্ভুক্ত বা বাদ দেওয়া নিশ্চিত করতে পারে, যা ডাবল-স্পেন্ডিং বা ফ্রন্ট-রানিং এবং ব্যাক-রানিং লেনদেন (MEV) এর মাধ্যমে ভ্যালু এক্সট্রাকশনের সুযোগ দেয়। রিঅর্গস ব্যবহার করে নির্দিষ্ট লেনদেন ক্যানোনিকাল চেইনে অন্তর্ভুক্ত হওয়া রোধ করা যেতে পারে - যা এক ধরণের সেন্সরশিপ। রিঅর্গের সবচেয়ে চরম রূপ হলো “ফাইনালিটি রিভার্সন” যা পূর্বে ফাইনাল হওয়া ব্লকস সরিয়ে দেয় বা প্রতিস্থাপন করে। এটি কেবল তখনই সম্ভব যদি মোট স্টেকড ইথারের ⅓ এর বেশি আক্রমণকারী দ্বারা ধ্বংস করা হয় - এই গ্যারান্টিটি “ইকোনমিক ফাইনালিটি” নামে পরিচিত - এ সম্পর্কে পরে আরও আলোচনা করা হবে।
-**ডাবল ফাইনালিটি** হল একটি অসম্ভাব্য কিন্তু গুরুতর পরিস্থিতি যেখানে দুটি ফর্ক একযোগে ফাইনাল হতে পারে, যা চেইনে একটি স্থায়ী বিভেদ তৈরি করে। মোট স্টেক করা ইথারের 34% ঝুঁকি নিতে ইচ্ছুক একজন আক্রমণকারীর জন্য এটি তাত্ত্বিকভাবে সম্ভব। সম্প্রদায়কে অফচেইন সমন্বয় করতে এবং কোন চেইন অনুসরণ করতে হবে সে সম্পর্কে একটি চুক্তিতে আসতে বাধ্য করা হবে, যার জন্য সামাজিক লেয়ারে শক্তির প্রয়োজন হবে।
+**ডাবল ফাইনালিটি** হলো একটি অসম্ভাব্য কিন্তু গুরুতর অবস্থা যেখানে দুটি ফর্ক একই সাথে ফাইনাল হতে পারে, যা চেইনে একটি স্থায়ী বিভাজন তৈরি করে। এটি তাত্ত্বিকভাবে এমন একজন আক্রমণকারীর জন্য সম্ভব যে মোট স্টেকড ইথারের 34% ঝুঁকি নিতে ইচ্ছুক। কমিউনিটি অফচেইন সমন্বয় করতে এবং কোন চেইন অনুসরণ করতে হবে সে বিষয়ে একটি চুক্তিতে আসতে বাধ্য হবে, যার জন্য সোশ্যাল লেয়ারে শক্তির প্রয়োজন হবে।
-একটি **ফাইনালিটি ডিলে** আক্রমণ নেটওয়ার্ককে চেইনের বিভাগগুলোকে ফাইনাল করার জন্য প্রয়োজনীয় শর্তে পৌঁছাতে বাধা দেয়। ফাইনালিটি ছাড়া, ইথেরিয়ামের উপরে নির্মিত আর্থিক অ্যাপ্লিকেশনগুলিকে বিশ্বাস করা কঠিন। একটি ফাইনালিটি ডিলে আক্রমণের লক্ষ্য সম্ভবত সরাসরি লাভের পরিবর্তে ইথেরিয়ামকে ব্যাহত করা, যদি না আক্রমণকারীর কিছু কৌশলগত শর্ট পজিশন থাকে।
+একটি **ফাইনালিটি বিলম্ব** আক্রমণ নেটওয়ার্ক কে চেইনের অংশগুলো ফাইনাল করার প্রয়োজনীয় শর্তে পৌঁছাতে বাধা দেয়। ফাইনালিটি ছাড়া, ইথিরিয়ামের উপর নির্মিত আর্থিক অ্যাপ্লিকেশনগুলোকে বিশ্বাস করা কঠিন। ফাইনালিটি বিলম্ব আক্রমণের উদ্দেশ্য সম্ভবত সরাসরি লাভ করার পরিবর্তে ইথিরিয়ামকে ব্যাহত করা, যদি না আক্রমণকারীর কোনো কৌশলগত শর্ট পজিশন থাকে।
-সামাজিক লেয়ারের উপর একটি আক্রমণের লক্ষ্য হতে পারে ইথেরিয়ামের উপর জনসাধারণের আস্থা নষ্ট করা, ইথারের অবমূল্যায়ন করা, গ্রহণ হ্রাস করা বা ইথেরিয়াম সম্প্রদায়কে দুর্বল করা যাতে ব্যান্ডের বাইরের সমন্বয় আরও কঠিন হয়ে ওঠে।
+সোশ্যাল লেয়ারে আক্রমণের উদ্দেশ্য হতে পারে ইথিরিয়ামের প্রতি জনগণের আস্থা ক্ষুণ্ন করা, ইথারের অবমূল্যায়ন করা, গ্রহণ কমানো বা ইথিরিয়াম কমিউনিটিকে দুর্বল করে আউট-অফ-ব্যান্ড সমন্বয়কে আরও কঠিন করে তোলা।
-একজন প্রতিপক্ষ কেন ইথেরিয়ামকে আক্রমণ করতে পারে তা প্রতিষ্ঠা করার পর, নিম্নলিখিত বিভাগগুলি পরীক্ষা করে যে তারা _কীভাবে_ এটি করতে পারে।
+একজন প্রতিপক্ষ কেন ইথিরিয়ামে আক্রমণ করতে পারে তা প্রতিষ্ঠিত করার পর, পরবর্তী বিভাগগুলোতে তারা _কীভাবে_ এটি করতে পারে তা পরীক্ষা করা হয়েছে।
## আক্রমণের পদ্ধতি {#methods-of-attack}
-### লেয়ার 0 আক্রমণ {#layer-0}
+### লেয়ার 0 আক্রমণ {#layer-0}
-প্রথমত, যে ব্যক্তিরা সক্রিয়ভাবে ইথেরিয়ামে অংশগ্রহণ করছেন না (ক্লায়েন্ট সফ্টওয়্যার চালানোর মাধ্যমে) তারা সামাজিক স্তর (লেয়ার 0) লক্ষ্য করে আক্রমণ করতে পারেন। লেয়ার 0 হল সেই ভিত্তি যার উপর ইথেরিয়াম নির্মিত, এবং সেই কারণে এটি আক্রমণের জন্য একটি সম্ভাব্য ক্ষেত্র যার পরিণতি বাকি স্ট্যাকের মাধ্যমে ছড়িয়ে পড়ে। কিছু উদাহরণ অন্তর্ভুক্ত হতে পারে:
+প্রথমত, যেসব ব্যক্তি ইথিরিয়ামে সক্রিয়ভাবে অংশগ্রহণ করছে না (ক্লায়েন্ট সফটওয়্যার চালানোর মাধ্যমে) তারা সোশ্যাল লেয়ার (লেয়ার 0) কে লক্ষ্য করে আক্রমণ করতে পারে। লেয়ার 0 হলো সেই ভিত্তি যার উপর ইথিরিয়াম নির্মিত, এবং সেই হিসেবে এটি আক্রমণের জন্য একটি সম্ভাব্য সারফেস উপস্থাপন করে যার পরিণতি স্ট্যাকের বাকি অংশে ছড়িয়ে পড়ে। কিছু উদাহরণের মধ্যে থাকতে পারে:
-- একটি ভুল তথ্য প্রচার ইথেরিয়ামের রোডম্যাপ, ডেভেলপারদের দল, অ্যাপস ইত্যাদির প্রতি সম্প্রদায়ের আস্থাকে ক্ষয় করতে পারে। এটি তখন নেটওয়ার্ক সুরক্ষিত করতে ইচ্ছুক ব্যক্তির সংখ্যা হ্রাস করতে পারে, যা বিকেন্দ্রীকরণ এবং ক্রিপ্টো-অর্থনৈতিক নিরাপত্তা উভয়কেই হ্রাস করে।
+- একটি ভুল তথ্যের প্রচারণা ইথিরিয়ামের রোডম্যাপ, ডেভেলপারদের দল, অ্যাপস ইত্যাদির প্রতি কমিউনিটির আস্থাকে নষ্ট করতে পারে। এটি তখন নেটওয়ার্ক সুরক্ষিত করতে অংশগ্রহণ করতে ইচ্ছুক ব্যক্তিদের সংখ্যা কমিয়ে দিতে পারে, যা ডিসেন্ট্রালাইজেশন এবং ক্রিপ্টো-ইকোনমিক নিরাপত্তা উভয়কেই হ্রাস করে।
+- ডেভেলপার কমিউনিটির দিকে পরিচালিত লক্ষ্যভিত্তিক আক্রমণ এবং/অথবা ভীতি প্রদর্শন। এটি ডেভেলপারদের স্বেচ্ছায় প্রস্থান করতে পারে এবং ইথিরিয়ামের অগ্রগতি ধীর করে দিতে পারে।
-- ডেভেলপার সম্প্রদায়ের প্রতি লক্ষ্যবস্তু আক্রমণ এবং/অথবা ভীতি প্রদর্শন। এটি ডেভেলপারদের স্বেচ্ছায় প্রস্থান এবং ইথেরিয়ামের অগ্রগতি মন্থর করতে পারে।
+- অতিরিক্ত উৎসাহী রেগুলেশনকেও লেয়ার 0 এর উপর আক্রমণ হিসেবে বিবেচনা করা যেতে পারে, কারণ এটি দ্রুত অংশগ্রহণ এবং গ্রহণকে নিরুৎসাহিত করতে পারে।
+- ডেভেলপার কমিউনিটিতে জ্ঞানী কিন্তু ক্ষতিকারক অভিনেতাদের অনুপ্রবেশ যাদের উদ্দেশ্য হলো বাইক-শেডিং আলোচনা, মূল সিদ্ধান্ত গ্রহণে বিলম্ব, স্প্যাম তৈরি ইত্যাদির মাধ্যমে অগ্রগতি ধীর করা।
+- সিদ্ধান্ত গ্রহণকে প্রভাবিত করতে ইথিরিয়াম ইকোসিস্টেমের মূল খেলোয়াড়দের ঘুষ দেওয়া।
-- অতিরিক্ত উদ্যোগী নিয়ন্ত্রণকেও লেয়ার 0-এর উপর আক্রমণ হিসাবে বিবেচনা করা যেতে পারে, কারণ এটি দ্রুত অংশগ্রহণ এবং গ্রহণকে নিরুৎসাহিত করতে পারে।
+এই আক্রমণগুলোকে যা বিশেষভাবে বিপজ্জনক করে তোলে তা হলো অনেক ক্ষেত্রে খুব কম মূলধন বা প্রযুক্তিগত জ্ঞানের প্রয়োজন হয়। একটি লেয়ার 0 আক্রমণ একটি ক্রিপ্টো-ইকোনমিক আক্রমণের উপর একটি গুণক হতে পারে। উদাহরণস্বরূপ, যদি কোনো ক্ষতিকারক সংখ্যাগরিষ্ঠ স্টেকহোল্ডার দ্বারা সেন্সরশিপ বা ফাইনালিটি রিভার্সন অর্জিত হয়, তবে সোশ্যাল লেয়ারকে দুর্বল করা আউট-অফ-ব্যান্ড কমিউনিটির প্রতিক্রিয়া সমন্বয় করা আরও কঠিন করে তুলতে পারে।
-- ডেভেলপার সম্প্রদায়ে জ্ঞানী কিন্তু দূষিত অভিনেতাদের অনুপ্রবেশ যাদের লক্ষ্য হল বাইক-শেডিং আলোচনার মাধ্যমে অগ্রগতি মন্থর করা, মূল সিদ্ধান্ত বিলম্বিত করা, স্প্যাম তৈরি করা ইত্যাদি।
+লেয়ার 0 আক্রমণের বিরুদ্ধে প্রতিরোধ করা সম্ভবত সহজ নয়, তবে কিছু মৌলিক নীতি প্রতিষ্ঠিত করা যেতে পারে। একটি হলো ইথিরিয়াম সম্পর্কে পাবলিক তথ্যের জন্য সামগ্রিকভাবে উচ্চ সিগন্যাল টু নয়েজ রেশিও বজায় রাখা, যা কমিউনিটির সৎ সদস্যদের দ্বারা ব্লগ, ডিসকর্ড সার্ভার, টীকাযুক্ত স্পেকস, বই, পডকাস্ট এবং ইউটিউবের মাধ্যমে তৈরি এবং প্রচারিত হয়। এখানে ethereum.org-এ আমরা সঠিক তথ্য বজায় রাখতে এবং এটিকে যতটা সম্ভব বেশি ভাষায় অনুবাদ করার জন্য কঠোর চেষ্টা করি। উচ্চ মানের তথ্য এবং মিম দিয়ে একটি স্থান প্লাবিত করা ভুল তথ্যের বিরুদ্ধে একটি কার্যকর প্রতিরোধ।
-- সিদ্ধান্ত গ্রহণে প্রভাব ফেলতে ইথেরিয়াম ইকোসিস্টেমের মূল খেলোয়াড়দের ঘুষ দেওয়া।
+সোশ্যাল লেয়ার আক্রমণের বিরুদ্ধে আরেকটি গুরুত্বপূর্ণ দুর্গ হলো একটি স্পষ্ট মিশন স্টেটমেন্ট এবং গভর্নেন্স প্রটোকল। ইথিরিয়াম নিজেকে স্মার্ট কন্ট্রাক্ট লেয়ার 1-গুলোর মধ্যে ডিসেন্ট্রালাইজেশন এবং নিরাপত্তার চ্যাম্পিয়ন হিসেবে প্রতিষ্ঠিত করেছে, পাশাপাশি স্কেলিং এবং স্থায়িত্বকেও অত্যন্ত মূল্য দেয়। ইথিরিয়াম কমিউনিটিতে যে মতবিরোধই উঠুক না কেন, এই মূল নীতিগুলোর সাথে ন্যূনতম আপস করা হয়। এই মূল নীতিগুলোর বিপরীতে একটি আখ্যান মূল্যায়ন করা এবং ইথিরিয়াম ইমপ্রুভমেন্ট প্রপোজাল (EIP) প্রক্রিয়ায় পর্যালোচনার ধারাবাহিক রাউন্ডের মাধ্যমে সেগুলো পরীক্ষা করা, কমিউনিটিকে ভালো এবং খারাপ অভিনেতাদের মধ্যে পার্থক্য করতে সাহায্য করতে পারে এবং ক্ষতিকারক অভিনেতাদের ইথিরিয়ামের ভবিষ্যৎ দিকনির্দেশনাকে প্রভাবিত করার সুযোগ সীমিত করে।
-যা এই আক্রমণগুলিকে বিশেষভাবে বিপজ্জনক করে তোলে তা হল অনেক ক্ষেত্রে খুব কম মূলধন বা প্রযুক্তিগত জ্ঞানের প্রয়োজন হয়। একটি লেয়ার 0 আক্রমণ একটি ক্রিপ্টো-অর্থনৈতিক আক্রমণের উপর একটি গুণক হতে পারে। উদাহরণস্বরূপ, যদি একটি বিদ্বেষপরায়ণ সংখ্যাগরিষ্ঠ স্টেকহোল্ডার দ্বারা সেন্সরশিপ বা ফাইনালিটি রিভার্সন অর্জন করা হয়, তাহলে সামাজিক লেয়ারকে দুর্বল করা একটি সম্প্রদায় প্রতিক্রিয়াকে ব্যান্ডের বাইরে সমন্বয় করা আরও কঠিন করে তুলতে পারে।
+পরিশেষে, এটি অত্যন্ত গুরুত্বপূর্ণ যে ইথিরিয়াম কমিউনিটি সমস্ত অংশগ্রহণকারীদের জন্য উন্মুক্ত এবং স্বাগত জানায়। গেটকিপার এবং এক্সক্লুসিভিটি সহ একটি কমিউনিটি সামাজিক আক্রমণের জন্য বিশেষভাবে ঝুঁকিপূর্ণ কারণ "আমরা এবং তারা" আখ্যান তৈরি করা সহজ। উপজাতীয়তা এবং বিষাক্ত ম্যাক্সিমালিজম কমিউনিটিকে আঘাত করে এবং লেয়ার 0 এর নিরাপত্তা নষ্ট করে। নেটওয়ার্ক এর নিরাপত্তায় নিহিত স্বার্থ থাকা ইথিরিয়ানদের উচিত অনলাইনে এবং বাস্তব জগতে তাদের আচরণকে ইথিরিয়ামের লেয়ার 0 এর নিরাপত্তায় সরাসরি অবদানকারী হিসেবে দেখা।
-লেয়ার 0 আক্রমণের বিরুদ্ধে প্রতিরক্ষা সম্ভবত সহজবোধ্য নয়, তবে কিছু মৌলিক নীতি স্থাপন করা যেতে পারে। একটি হল ইথেরিয়াম সম্পর্কে জনসাধারণের তথ্যের জন্য একটি সামগ্রিক উচ্চ সংকেত-থেকে-শব্দ অনুপাত বজায় রাখা, যা সম্প্রদায়ের সৎ সদস্যদের দ্বারা ব্লগ, ডিসকর্ড সার্ভার, টীকাযুক্ত স্পেক, বই, পডকাস্ট এবং ইউটিউবের মাধ্যমে তৈরি এবং প্রচারিত হয়। এখানে ethereum.org-এ আমরা সঠিক তথ্য বজায় রাখতে এবং এটিকে যতটা সম্ভব ভাষায় অনুবাদ করার জন্য কঠোর চেষ্টা করি। উচ্চ মানের তথ্য এবং মেমে দিয়ে একটি স্থান প্লাবিত করা ভুল তথ্যের বিরুদ্ধে একটি কার্যকর প্রতিরক্ষা।
+### প্রটোকল আক্রমণ করা {#attacking-the-protocol}
-সামাজিক লেয়ার আক্রমণের বিরুদ্ধে আরেকটি গুরুত্বপূর্ণ দুর্গ হল একটি স্পষ্ট মিশন বিবৃতি এবং গভর্নেন্স প্রোটোকল। ইথেরিয়াম নিজেকে স্মার্ট-কন্ট্রাক্ট লেয়ার 1-এর মধ্যে বিকেন্দ্রীকরণ এবং নিরাপত্তার চ্যাম্পিয়ন হিসাবে প্রতিষ্ঠিত করেছে, পাশাপাশি স্কেলেবিলিটি এবং স্থায়িত্বকেও অত্যন্ত মূল্য দেয়। ইথেরিয়াম সম্প্রদায়ে যে মতবিরোধই দেখা দিক না কেন, এই মূল নীতিগুলিতে ন্যূনতম আপস করা হয়। এই মূল নীতিগুলির বিরুদ্ধে একটি আখ্যানের মূল্যায়ন করা এবং EIP (ইথেরিয়াম ইমপ্রুভমেন্ট প্রোপোজাল) প্রক্রিয়ায় পর্যালোচনার ধারাবাহিক রাউন্ডের মাধ্যমে সেগুলি পরীক্ষা করা, সম্প্রদায়কে ভাল এবং খারাপ অভিনেতাদের মধ্যে পার্থক্য করতে সাহায্য করতে পারে এবং ইথেরিয়ামের ভবিষ্যতের দিকনির্দেশকে প্রভাবিত করার জন্য দূষিত অভিনেতাদের সুযোগ সীমিত করতে পারে।
+যে কেউ ইথিরিয়ামের ক্লায়েন্ট সফটওয়্যার চালাতে পারে। একটি ক্লায়েন্ট এ একজন ভ্যালিডেটর যোগ করতে, একজন ব্যবহারকারীকে ডিপোজিট কন্টাক্ট এ 32 ইথার স্টেক করতে হয়। একজন ভ্যালিডেটর একজন ব্যবহারকারীকে নতুন ব্লকস প্রস্তাব এবং এটেস্টেশন করার মাধ্যমে ইথিরিয়ামের নেটওয়ার্ক নিরাপত্তায় সক্রিয়ভাবে অংশগ্রহণ করতে দেয়। ভ্যালিডেটর এর এখন একটি কণ্ঠস্বর রয়েছে যা তারা ব্লকচেইন এর ভবিষ্যৎ বিষয়বস্তুকে প্রভাবিত করতে ব্যবহার করতে পারে - তারা এটি সততার সাথে করতে পারে এবং পুরস্কারের মাধ্যমে তাদের ইথারের ভাণ্ডার বাড়াতে পারে অথবা তারা তাদের স্টেক ঝুঁকিতে ফেলে নিজেদের সুবিধার জন্য প্রক্রিয়াটিকে ম্যানিপুলেট করার চেষ্টা করতে পারে। আক্রমণ চালানোর একটি উপায় হলো মোট স্টেক এর একটি বৃহত্তর অনুপাত জমা করা এবং তারপর সৎ ভ্যালিডেটরস দের আউটভোট করতে এটি ব্যবহার করা। আক্রমণকারীর দ্বারা নিয়ন্ত্রিত স্টেক এর অনুপাত যত বেশি হবে তাদের ভোটিং ক্ষমতা তত বেশি হবে, বিশেষ করে নির্দিষ্ট অর্থনৈতিক মাইলফলকগুলোতে যা আমরা পরে অন্বেষণ করব। যাইহোক, বেশিরভাগ আক্রমণকারী এই উপায়ে আক্রমণ করার জন্য পর্যাপ্ত ইথার জমা করতে সক্ষম হবে না, তাই এর পরিবর্তে তাদের সৎ সংখ্যাগরিষ্ঠকে একটি নির্দিষ্ট উপায়ে কাজ করতে ম্যানিপুলেট করার জন্য সূক্ষ্ম কৌশল ব্যবহার করতে হবে।
-অবশেষে, এটি অত্যন্ত গুরুত্বপূর্ণ যে ইথেরিয়াম সম্প্রদায় সমস্ত অংশগ্রহণকারীদের জন্য উন্মুক্ত এবং স্বাগত জানায়। দ্বাররক্ষক এবং একচেটিয়াতা সহ একটি সম্প্রদায় সামাজিক আক্রমণের জন্য বিশেষভাবে ঝুঁকিপূর্ণ কারণ এটি "আমরা এবং তারা" আখ্যান তৈরি করা সহজ। গোষ্ঠীবাদ এবং বিষাক্ত সর্বোচ্চবাদ সম্প্রদায়ের ক্ষতি করে এবং লেয়ার 0 নিরাপত্তাকে ক্ষয় করে। নেটওয়ার্কের নিরাপত্তায় নিহিত স্বার্থ সহ ইথেরিয়ানদের অনলাইনে এবং মিটস্পেসে তাদের আচরণকে ইথেরিয়ামের লেয়ার 0-এর নিরাপত্তায় সরাসরি অবদানকারী হিসাবে দেখা উচিত।
+মৌলিকভাবে, সমস্ত ছোট-স্টেক আক্রমণ হলো দুই ধরণের ভ্যালিডেটর অসদাচরণের সূক্ষ্ম বৈচিত্র্য: আন্ডার-অ্যাক্টিভিটি (এটেস্টেশন/প্রস্তাব করতে ব্যর্থ হওয়া বা দেরিতে করা) বা ওভার-অ্যাক্টিভিটি (একটি স্লটে খুব বেশি বার প্রস্তাব/এটেস্টেশন করা)। তাদের সবচেয়ে সাধারণ রূপে এই কাজগুলো ফর্ক-চয়েস এ্যালগরিদম এবং ইনসেন্টিভ লেয়ার দ্বারা সহজেই পরিচালনা করা হয়, তবে আক্রমণকারীর সুবিধার জন্য সিস্টেমটিকে গেম করার চতুর উপায় রয়েছে।
-### প্রোটোকলে আক্রমণ করা {#attacking-the-protocol}
+### অল্প পরিমাণ ETH ব্যবহার করে আক্রমণ {#attacks-by-small-stakeholders}
-যে কেউ ইথেরিয়ামের ক্লায়েন্ট সফ্টওয়্যার চালাতে পারে। একটি ক্লায়েন্টে একটি ভ্যালিডেটর যোগ করতে, একজন ব্যবহারকারীকে ডিপোজিট কন্ট্রাক্টে 32 ইথার স্টেক করতে হবে। একটি ভ্যালিডেটর একজন ব্যবহারকারীকে নতুন ব্লক প্রস্তাব এবং প্রমাণীকরণের মাধ্যমে ইথেরিয়ামের নেটওয়ার্ক নিরাপত্তায় সক্রিয়ভাবে অংশগ্রহণ করতে দেয়। ভ্যালিডেটরের এখন একটি কণ্ঠস্বর আছে যা তারা ব্লকচেইনের ভবিষ্যতের বিষয়বস্তুকে প্রভাবিত করতে ব্যবহার করতে পারে - তারা সততার সাথে এটি করতে পারে এবং পুরস্কারের মাধ্যমে তাদের ইথারের ভান্ডার বাড়াতে পারে অথবা তারা তাদের নিজের সুবিধার জন্য প্রক্রিয়াটিকে কাজে লাগানোর চেষ্টা করতে পারে, তাদের স্টেককে ঝুঁকিতে ফেলে। আক্রমণের একটি উপায় হল মোট স্টেকের একটি বড় অংশ সংগ্রহ করা এবং তারপর সৎ ভ্যালিডেটরদের ছাড়িয়ে যাওয়ার জন্য এটি ব্যবহার করা। আক্রমণকারীর দ্বারা নিয়ন্ত্রিত স্টেকের অনুপাত যত বেশি হবে, তাদের ভোটের ক্ষমতা তত বেশি হবে, বিশেষ করে নির্দিষ্ট অর্থনৈতিক মাইলফলকে যা আমরা পরে অন্বেষণ করব। যাইহোক, বেশিরভাগ আক্রমণকারী এইভাবে আক্রমণ করার জন্য পর্যাপ্ত ইথার সংগ্রহ করতে সক্ষম হবে না, তাই পরিবর্তে তাদের সৎ সংখ্যাগরিষ্ঠকে একটি নির্দিষ্ট উপায়ে কাজ করার জন্য সূক্ষ্ম কৌশল ব্যবহার করতে হবে।
+#### রিঅর্গস {#reorgs}
-মূলত, সমস্ত ছোট-স্টেক আক্রমণ হল দুই ধরনের ভ্যালিডেটর অসদাচরণের সূক্ষ্ম ভিন্নতা: কম-ক্রিয়াকলাপ (প্রমাণ/প্রস্তাব করতে ব্যর্থ হওয়া বা দেরিতে করা) বা অতিরিক্ত-ক্রিয়াকলাপ (একটি স্লটে অনেকবার প্রস্তাব/প্রমাণ করা)। তাদের সবচেয়ে সরল রূপে এই ক্রিয়াগুলি ফর্ক-চয়েস অ্যালগরিদম এবং ইনসেনটিভ লেয়ার দ্বারা সহজেই পরিচালিত হয়, তবে আক্রমণকারীর সুবিধার জন্য সিস্টেমটিকে খেলার জন্য চতুর উপায় রয়েছে।
+বেশ কয়েকটি গবেষণাপত্রে ইথিরিয়ামের উপর আক্রমণ ব্যাখ্যা করা হয়েছে যা মোট স্টেকড ইথারের একটি ছোট অনুপাত দিয়ে রিঅর্গস বা ফাইনালিটি বিলম্ব অর্জন করে। এই আক্রমণগুলো সাধারণত আক্রমণকারীর অন্যান্য ভ্যালিডেটরস থেকে কিছু তথ্য আটকে রাখা এবং তারপর এটিকে কোনো সূক্ষ্ম উপায়ে এবং/অথবা কোনো উপযুক্ত মুহূর্তে প্রকাশ করার উপর নির্ভর করে। তারা সাধারণত ক্যানোনিকাল চেইন থেকে কিছু সৎ ব্লক(গুলো) স্থানচ্যুত করার লক্ষ্য রাখে। [Neuder et al 2020](https://arxiv.org/pdf/2102.02247.pdf) দেখিয়েছে কীভাবে একজন আক্রমণকারী ভ্যালিডেটর একটি নির্দিষ্ট স্লট `n+1` এর জন্য একটি ব্লক (`B`) তৈরি এবং এটেস্টেশন করতে পারে কিন্তু নেটওয়ার্ক এর অন্যান্য নোড এ এটি প্রচার করা থেকে বিরত থাকতে পারে। এর পরিবর্তে, তারা পরবর্তী স্লট `n+2` পর্যন্ত সেই এটেস্ট করা ব্লকটি ধরে রাখে। একজন সৎ ভ্যালিডেটর স্লট `n+2` এর জন্য একটি ব্লক (`C`) প্রস্তাব করে। প্রায় একই সাথে, আক্রমণকারী তাদের আটকে রাখা ব্লক (`B`) এবং এর জন্য তাদের আটকে রাখা এটেস্টেশন প্রকাশ করতে পারে, এবং স্লট `n+2` এর জন্য তাদের ভোট দিয়ে `B` কে চেইনের হেড হিসেবে এটেস্টেশন করতে পারে, কার্যকরভাবে সৎ ব্লক `C` এর অস্তিত্ব অস্বীকার করে। যখন সৎ ব্লক `D` প্রকাশিত হয়, ফর্ক চয়েস এ্যালগরিদম দেখে যে `B` এর উপর নির্মিত `D`, `C` এর উপর নির্মিত `D` এর চেয়ে ভারী। আক্রমণকারী তাই 1-ব্লক এক্স আন্টে রিঅর্গ ব্যবহার করে ক্যানোনিকাল চেইন থেকে স্লট `n+2` এর সৎ ব্লক `C` সরাতে সক্ষম হয়েছে। [34% স্টেক সহ একজন আক্রমণকারীর](https://www.youtube.com/watch?v=6vzXwwk12ZE) এই আক্রমণে সফল হওয়ার খুব ভালো সুযোগ রয়েছে, যেমনটি [এই নোটে](https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair) ব্যাখ্যা করা হয়েছে। তাত্ত্বিকভাবে, যদিও, এই আক্রমণটি ছোট স্টেক দিয়ে চেষ্টা করা যেতে পারে। [Neuder et al 2020](https://arxiv.org/pdf/2102.02247.pdf) 30% স্টেক দিয়ে কাজ করা এই আক্রমণের বর্ণনা দিয়েছে, কিন্তু পরে এটি [মোট স্টেকের 2%](https://arxiv.org/pdf/2009.04987.pdf) দিয়ে কার্যকর বলে দেখানো হয়েছিল এবং তারপর আবার ব্যালেন্সিং কৌশল ব্যবহার করে একটি [একক ভ্যালিডেটর](https://arxiv.org/abs/2110.10086#) এর জন্য যা আমরা পরবর্তী বিভাগে পরীক্ষা করব।
-### অল্প পরিমাণে ETH ব্যবহার করে আক্রমণ {#attacks-by-small-stakeholders}
-
-#### রিঅর্গ {#reorgs}
-
-বেশ কয়েকটি গবেষণাপত্রে ইথেরিয়ামের উপর আক্রমণের ব্যাখ্যা দেওয়া হয়েছে যা মোট স্টেক করা ইথারের একটি ছোট অনুপাতের সাথে রিঅর্গ বা ফাইনালিটি ডিলে অর্জন করে। এই আক্রমণগুলি সাধারণত আক্রমণকারীর উপর নির্ভর করে যে তারা অন্যান্য ভ্যালিডেটরদের কাছ থেকে কিছু তথ্য গোপন করে এবং তারপর এটিকে কিছু সূক্ষ্ম উপায়ে এবং/অথবা কিছু সুবিধাজনক মুহূর্তে প্রকাশ করে। তারা সাধারণত ক্যানোনিকাল চেইন থেকে কিছু সৎ ব্লককে স্থানচ্যুত করার লক্ষ্য রাখে। [নিউডার এট আল ২০২০](https://arxiv.org/pdf/2102.02247.pdf) দেখিয়েছেন কিভাবে একজন আক্রমণকারী ভ্যালিডেটর একটি নির্দিষ্ট স্লট `n+1`-এর জন্য একটি ব্লক (`B`) তৈরি করতে এবং প্রমাণ করতে পারে কিন্তু নেটওয়ার্কের অন্যান্য নোডগুলিতে এটি প্রচার করা থেকে বিরত থাকতে পারে। পরিবর্তে, তারা পরবর্তী স্লট `n+2` পর্যন্ত সেই সত্যায়িত ব্লকটি ধরে রাখে। একজন সৎ ভ্যালিডেটর স্লট `n+2` এর জন্য একটি ব্লক (`C`) প্রস্তাব করে। প্রায় একই সাথে, আক্রমণকারী তাদের গোপন রাখা ব্লক (`B`) এবং এর জন্য তাদের গোপন রাখা অ্যাটেস্টেশনগুলি প্রকাশ করতে পারে, এবং স্লট `n+2`-এর জন্য তাদের ভোট দিয়ে চেইনের প্রধান হিসাবে `B`-কে অ্যাটেস্ট করতে পারে, কার্যকরভাবে সৎ ব্লক `C`-এর অস্তিত্ব অস্বীকার করে। যখন সৎ ব্লক `D` প্রকাশ করা হয়, ফর্ক চয়েস অ্যালগরিদম `C`-এর উপর `D` তৈরির চেয়ে `B`-এর উপর `D` তৈরি করাকে ভারী হিসাবে দেখে। আক্রমণকারী তাই একটি 1-ব্লক এক্স অ্যান্টে রিঅর্গ ব্যবহার করে ক্যানোনিকাল চেইন থেকে স্লট `n+2`-এ সৎ ব্লক `C` অপসারণ করতে সক্ষম হয়েছে। [৩৪% স্টেক সহ একজন আক্রমণকারীর](https://www.youtube.com/watch?v=6vzXwwk12ZE) এই আক্রমণে সফল হওয়ার খুব ভাল সুযোগ রয়েছে, যেমনটি [এই নোটে](https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair) ব্যাখ্যা করা হয়েছে। তাত্ত্বিকভাবে, যদিও, এই আক্রমণটি ছোট স্টেক দিয়েও চেষ্টা করা যেতে পারে। [নিউডার এট আল ২০২০](https://arxiv.org/pdf/2102.02247.pdf) এই আক্রমণটিকে ৩০% স্টেক দিয়ে কাজ করার বর্ণনা দিয়েছেন, তবে পরে এটি [মোট স্টেকের ২%](https://arxiv.org/pdf/2009.04987.pdf) দিয়ে কার্যকর দেখানো হয়েছিল এবং তারপরে আবার একটি [একক ভ্যালিডেটরের](https://arxiv.org/abs/2110.10086#) জন্য ব্যালান্সিং কৌশল ব্যবহার করে যা আমরা পরবর্তী বিভাগে পরীক্ষা করব।
-
-
+
উপরে বর্ণিত এক-ব্লক রিঅর্গ আক্রমণের একটি ধারণাগত চিত্র (https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair থেকে অভিযোজিত)
-আরও একটি অত্যাধুনিক আক্রমণ সৎ ভ্যালিডেটর সেটকে আলাদা আলাদা গ্রুপে ভাগ করতে পারে যাদের চেইনের প্রধান সম্পর্কে ভিন্ন ভিন্ন দৃষ্টিভঙ্গি রয়েছে। এটি একটি **ব্যালান্সিং আক্রমণ** হিসাবে পরিচিত। আক্রমণকারী একটি ব্লক প্রস্তাব করার সুযোগের জন্য অপেক্ষা করে, এবং যখন এটি আসে তখন তারা সমতুল্য হয় এবং দুটি প্রস্তাব করে। তারা সৎ ভ্যালিডেটর সেটের অর্ধেককে একটি ব্লক পাঠায় এবং অন্য অর্ধেককে অন্য ব্লক পাঠায়। এই ইকুইভোকেশনটি ফর্ক-চয়েস অ্যালগরিদম দ্বারা শনাক্ত করা হবে এবং ব্লক প্রপোজারকে স্ল্যাশ করে নেটওয়ার্ক থেকে বের করে দেওয়া হবে, কিন্তু দুটি ব্লক তখনও বিদ্যমান থাকবে এবং প্রতিটি ফর্কের জন্য ভ্যালিডেটর সেটের প্রায় অর্ধেক অ্যাটেস্ট করবে। এদিকে, অবশিষ্ট বিদ্বেষপরায়ণ ভ্যালিডেটররা তাদের অ্যাটেস্টেশনগুলি আটকে রাখে। তারপরে, একটি বা অন্য ফর্কের পক্ষে অ্যাটেস্টেশনগুলির সঞ্চিত ওজনকে এক বা অন্য ফর্কের পক্ষে ঝুঁকাতে, ঠিক যখন ফর্ক-চয়েস অ্যালগরিদম কার্যকর হয় তখন বেছে বেছে অ্যাটেস্টেশনগুলি যথেষ্ট ভ্যালিডেটরদের কাছে প্রকাশ করে। এটি অনির্দিষ্টকালের জন্য চলতে পারে, আক্রমণকারী ভ্যালিডেটররা দুটি ফর্ক জুড়ে ভ্যালিডেটরদের একটি সমান বিভাজন বজায় রাখে। যেহেতু কোনো ফর্কই ২/৩ সুপারমেজরটি আকর্ষণ করতে পারে না, তাই নেটওয়ার্কটি চূড়ান্ত হবে না।
+একটি আরও পরিশীলিত আক্রমণ সৎ ভ্যালিডেটর সেটকে আলাদা গ্রুপে বিভক্ত করতে পারে যাদের চেইনের হেড সম্পর্কে ভিন্ন দৃষ্টিভঙ্গি রয়েছে। এটি **ব্যালেন্সিং আক্রমণ** নামে পরিচিত। আক্রমণকারী একটি ব্লক প্রস্তাব করার সুযোগের জন্য অপেক্ষা করে, এবং যখন এটি আসে তখন তারা দ্ব্যর্থবোধক আচরণ করে এবং দুটি প্রস্তাব করে। তারা একটি ব্লক সৎ ভ্যালিডেটর সেটের অর্ধেককে পাঠায় এবং অন্য ব্লকটি বাকি অর্ধেককে পাঠায়। দ্ব্যর্থবোধক আচরণটি ফর্ক-চয়েস এ্যালগরিদম দ্বারা সনাক্ত করা হবে এবং ব্লক প্রপোজার কে স্ল্যাশিং করা হবে এবং নেটওয়ার্ক থেকে বের করে দেওয়া হবে, তবে দুটি ব্লক এখনও বিদ্যমান থাকবে এবং প্রতিটি ফর্কে এটেস্টেশন করা ভ্যালিডেটর সেটের প্রায় অর্ধেক থাকবে। ইতিমধ্যে, অবশিষ্ট ক্ষতিকারক ভ্যালিডেটরস তাদের এটেস্টেশন আটকে রাখে। তারপর, ফর্ক-চয়েস এ্যালগরিদম এক্সিকিউট হওয়ার ঠিক সময়ে এক বা অন্য ফর্কের পক্ষে এটেস্টেশনগুলো বেছে বেছে পর্যাপ্ত ভ্যালিডেটরস এর কাছে প্রকাশ করে, তারা এটেস্টেশনগুলোর পুঞ্জীভূত ওজনকে এক বা অন্য ফর্কের পক্ষে ঝুঁকিয়ে দেয়। এটি অনির্দিষ্টকালের জন্য চলতে পারে, আক্রমণকারী ভ্যালিডেটরস দুটি ফর্ক জুড়ে ভ্যালিডেটরস এর একটি সমান বিভাজন বজায় রাখে। যেহেতু কোনো ফর্কই 2/3 সুপারমেজরিটি আকর্ষণ করতে পারে না, তাই নেটওয়ার্ক ফাইনাল হবে না।
-**বাউন্সিং আক্রমণ** একই রকম। আক্রমণকারী ভ্যালিডেটরদের দ্বারা আবার ভোট আটকে রাখা হয়। দুটি ফর্কের মধ্যে একটি সমান বিভাজন রাখার জন্য ভোট প্রকাশ করার পরিবর্তে, তারা ফর্ক A এবং ফর্ক B-এর মধ্যে পর্যায়ক্রমে চেকপয়েন্টগুলিকে ন্যায্যতা দেওয়ার জন্য সুবিধাজনক মুহূর্তে তাদের ভোট ব্যবহার করে। দুটি ফর্কের মধ্যে ন্যায্যতার এই ফ্লিপ-ফ্লপিং ন্যায্য উত্স এবং লক্ষ্য চেকপয়েন্টগুলির জোড়া হতে বাধা দেয় যা চূড়ান্ত হতে পারে, চূড়ান্ততা বন্ধ করে দেয়।
+**বাউন্সিং আক্রমণ** একই রকম। আক্রমণকারী ভ্যালিডেটরস দ্বারা ভোট আবার আটকে রাখা হয়। দুটি ফর্কের মধ্যে একটি সমান বিভাজন রাখার জন্য ভোট প্রকাশ করার পরিবর্তে, তারা ফর্ক A এবং ফর্ক B এর মধ্যে বিকল্প চেকপয়েন্টগুলোকে ন্যায্যতা দেওয়ার জন্য উপযুক্ত মুহূর্তে তাদের ভোট ব্যবহার করে। দুটি ফর্কের মধ্যে ন্যায্যতার এই ফ্লিপ-ফ্লপিং জাস্টিফাইড সোর্স এবং টার্গেট চেকপয়েন্টগুলোর জোড়া হতে বাধা দেয় যা যেকোনো চেইনে ফাইনাল করা যেতে পারে, ফাইনালিটি থামিয়ে দেয়।
-বাউন্সিং এবং ব্যালেন্সিং উভয় আক্রমণই নেটওয়ার্ক জুড়ে মেসেজ টাইমিং-এর উপর আক্রমণকারীর খুব সূক্ষ্ম নিয়ন্ত্রণের উপর নির্ভর করে, যা অসম্ভাব্য। তবুও, ধীর মেসেজের তুলনায় দ্রুত মেসেজকে অতিরিক্ত ওজন দেওয়ার আকারে প্রোটোকলে প্রতিরক্ষা তৈরি করা হয়। এটি [প্রোপোজার-ওয়েট বুস্টিং](https://github.com/ethereum/consensus-specs/pull/2730) নামে পরিচিত। বাউন্সিং আক্রমণের বিরুদ্ধে রক্ষা করার জন্য ফর্ক-চয়েস অ্যালগরিদম আপডেট করা হয়েছিল যাতে সর্বশেষ ন্যায্য চেকপয়েন্টটি [প্রতিটি যুগের স্লটের প্রথম ১/৩ অংশ চলাকালীন](https://ethresear.ch/t/prevention-of-bouncing-attack-on-ffg/6114) একটি বিকল্প চেইনের সাথে পরিবর্তন করতে পারে। এই শর্তটি আক্রমণকারীকে পরে স্থাপন করার জন্য ভোট সঞ্চয় করা থেকে বিরত রাখে - ফর্ক চয়েস অ্যালগরিদম কেবল সেই চেকপয়েন্টের প্রতি অনুগত থাকে যা এটি যুগের প্রথম ১/৩ অংশে বেছে নিয়েছিল, যে সময়ে বেশিরভাগ সৎ ভ্যালিডেটররা ভোট দিয়েছিল।
+বাউন্সিং এবং ব্যালেন্সিং উভয় আক্রমণই নেটওয়ার্ক জুড়ে মেসেজ টাইমিংয়ের উপর আক্রমণকারীর খুব সূক্ষ্ম নিয়ন্ত্রণ থাকার উপর নির্ভর করে, যা অসম্ভাব্য। তা সত্ত্বেও, ধীর মেসেজগুলোর তুলনায় প্রম্পট মেসেজগুলোকে দেওয়া অতিরিক্ত ওজনের আকারে প্রটোকল এ প্রতিরক্ষা তৈরি করা হয়েছে। এটি [প্রপোজার-ওয়েইট বুস্টিং](https://github.com/ethereum/consensus-specs/pull/2730) নামে পরিচিত। বাউন্সিং আক্রমণের বিরুদ্ধে রক্ষা করার জন্য ফর্ক-চয়েস এ্যালগরিদম আপডেট করা হয়েছিল যাতে সর্বশেষ জাস্টিফাইড চেকপয়েন্ট কেবল [প্রতিটি এপোক এর প্রথম 1/3 স্লট](https://ethresear.ch/t/prevention-of-bouncing-attack-on-ffg/6114) এর সময় একটি বিকল্প চেইনে স্যুইচ করতে পারে। এই শর্তটি আক্রমণকারীকে পরে স্থাপন করার জন্য ভোট সঞ্চয় করতে বাধা দেয় - ফর্ক চয়েস এ্যালগরিদম কেবল সেই চেকপয়েন্টের প্রতি অনুগত থাকে যা এটি এপোক এর প্রথম 1/3 এর মধ্যে বেছে নিয়েছিল যে সময়ে বেশিরভাগ সৎ ভ্যালিডেটরস ভোট দিত।
-একসাথে, এই পদক্ষেপগুলি এমন একটি পরিস্থিতি তৈরি করে যেখানে একজন সৎ ব্লক প্রস্তাবক স্লটের শুরু হওয়ার সাথে সাথেই খুব দ্রুত তাদের ব্লক নির্গত করে, তারপরে প্রায় ১/৩ স্লটের (৪ সেকেন্ড) একটি সময়কাল থাকে যেখানে সেই নতুন ব্লকটি ফর্ক-চয়েস অ্যালগরিদমকে অন্য চেইনে স্যুইচ করতে পারে। একই সময়সীমার পরে, ধীর ভ্যালিডেটরদের কাছ থেকে আসা অ্যাটেস্টেশনগুলিকে আগে আসা অ্যাটেস্টেশনগুলির তুলনায় কম ওজন দেওয়া হয়। এটি চেইনের প্রধান নির্ধারণে দ্রুত প্রস্তাবক এবং ভ্যালিডেটরদের দৃঢ়ভাবে সমর্থন করে এবং একটি সফল ব্যালেন্সিং বা বাউন্সিং আক্রমণের সম্ভাবনা যথেষ্ট হ্রাস করে।
+সম্মিলিতভাবে, এই ব্যবস্থাগুলো এমন একটি দৃশ্যকল্প তৈরি করে যেখানে একজন সৎ ব্লক প্রপোজার স্লট শুরু হওয়ার খুব দ্রুত পরে তাদের ব্লক নির্গত করে, তারপর একটি স্লটের ~1/3 (4 সেকেন্ড) সময়কাল থাকে যেখানে সেই নতুন ব্লকটি ফর্ক-চয়েস এ্যালগরিদমকে অন্য চেইনে স্যুইচ করতে পারে। সেই একই সময়সীমার পরে, ধীর ভ্যালিডেটরস থেকে আসা এটেস্টেশনগুলোর ওজন আগে আসা এটেস্টেশনগুলোর তুলনায় কমিয়ে দেওয়া হয়। এটি চেইনের হেড নির্ধারণে প্রম্পট প্রপোজার এবং ভ্যালিডেটরস দের দৃঢ়ভাবে সমর্থন করে এবং একটি সফল ব্যালেন্সিং বা বাউন্সিং আক্রমণের সম্ভাবনা উল্লেখযোগ্যভাবে হ্রাস করে।
-এটা উল্লেখ করার মতো, যে প্রস্তাবক বুস্টিং একা শুধুমাত্র “সস্তা রিঅর্গ” এর বিরুদ্ধে রক্ষা করে, অর্থাৎ, একটি ছোট স্টেক সহ একজন আক্রমণকারীর দ্বারা চেষ্টা করা হয়। প্রকৃতপক্ষে, প্রোপোজার-বুস্টিং নিজেই বড় স্টেকহোল্ডারদের দ্বারা গেম করা যেতে পারে। [এই পোস্টের](https://ethresear.ch/t/change-fork-choice-rule-to-mitigate-balancing-and-reorging-attacks/11127) লেখকরা বর্ণনা করেছেন কিভাবে ৭% স্টেকের একজন আক্রমণকারী সৎ ভ্যালিডেটরদের তাদের ফর্কে তৈরি করতে, একটি সৎ ব্লককে রিঅর্গ করে বের করে দেওয়ার জন্য কৌশলগতভাবে তাদের ভোট স্থাপন করতে পারে। এই আক্রমণটি আদর্শ লেটেন্সি শর্ত ধরে নিয়ে তৈরি করা হয়েছিল যা খুব অসম্ভাব্য। আক্রমণকারীর জন্য প্রতিকূলতা এখনও খুব দীর্ঘ, এবং বৃহত্তর স্টেক মানে আরও বেশি মূলধন ঝুঁকিতে এবং একটি শক্তিশালী অর্থনৈতিক অনীহা।
+এটি লক্ষণীয় যে, প্রপোজার বুস্টিং একাই কেবল "সস্তা রিঅর্গস" এর বিরুদ্ধে রক্ষা করে, অর্থাৎ, যেগুলো একটি ছোট স্টেক সহ একজন আক্রমণকারী দ্বারা চেষ্টা করা হয়। প্রকৃতপক্ষে, প্রপোজার-বুস্টিং নিজেই বৃহত্তর স্টেকহোল্ডারদের দ্বারা গেম করা যেতে পারে। [এই পোস্টের](https://ethresear.ch/t/change-fork-choice-rule-to-mitigate-balancing-and-reorging-attacks/11127) লেখকরা বর্ণনা করেছেন কীভাবে 7% স্টেক সহ একজন আক্রমণকারী সৎ ভ্যালিডেটরস দের তাদের ফর্কে নির্মাণ করতে কৌশলগতভাবে তাদের ভোট স্থাপন করতে পারে, একটি সৎ ব্লককে রিঅর্গ করে। এই আক্রমণটি আদর্শ লেটেন্সি শর্ত ধরে নিয়ে তৈরি করা হয়েছিল যা খুব অসম্ভাব্য। আক্রমণকারীর জন্য সম্ভাবনা এখনও খুব কম, এবং বৃহত্তর স্টেক এর অর্থ হলো ঝুঁকিতে আরও বেশি মূলধন এবং একটি শক্তিশালী অর্থনৈতিক নিরুৎসাহ।
-[এলএমডি নিয়মকে বিশেষভাবে লক্ষ্য করে একটি ব্যালান্সিং আক্রমণ](https://ethresear.ch/t/balancing-attack-lmd-edition/11853) প্রস্তাব করা হয়েছিল, যা প্রোপোজার বুস্টিং সত্ত্বেও কার্যকর বলে পরামর্শ দেওয়া হয়েছিল। একজন আক্রমণকারী তাদের ব্লক প্রস্তাবনার ইকুইভোকেটিং করে এবং প্রতিটি ব্লককে নেটওয়ার্কের প্রায় অর্ধেক অংশে প্রচার করে দুটি প্রতিযোগী চেইন স্থাপন করে, ফর্কগুলির মধ্যে একটি আনুমানিক ভারসাম্য স্থাপন করে। তারপরে, ষড়যন্ত্রকারী ভ্যালিডেটররা তাদের ভোট ইকুইভোকেট করে, এটিকে এমনভাবে সময় দেয় যাতে নেটওয়ার্কের অর্ধেক প্রথমে ফর্ক `A`-এর জন্য তাদের ভোট গ্রহণ করে এবং অন্য অর্ধেক প্রথমে ফর্ক `B`-এর জন্য তাদের ভোট গ্রহণ করে। যেহেতু LMD নিয়মটি দ্বিতীয় অ্যাটেস্টেশনটি বাতিল করে এবং প্রতিটি ভ্যালিডেটরের জন্য শুধুমাত্র প্রথমটি রাখে, নেটওয়ার্কের অর্ধেক `A`-এর জন্য ভোট দেখে এবং `B`-এর জন্য কোনোটিই নয়, অন্য অর্ধেক `B`-এর জন্য ভোট দেখে এবং `A`-এর জন্য কোনোটিই নয়। লেখকরা বর্ণনা করেছেন যে LMD নিয়মটি প্রতিপক্ষকে একটি ব্যালান্সিং আক্রমণ মাউন্ট করার জন্য "উল্লেখযোগ্য শক্তি" দেয়।
+একটি [ব্যালেন্সিং আক্রমণ যা বিশেষভাবে LMD নিয়মকে লক্ষ্য করে](https://ethresear.ch/t/balancing-attack-lmd-edition/11853) প্রস্তাব করা হয়েছিল, যা প্রপোজার বুস্টিং সত্ত্বেও কার্যকর বলে পরামর্শ দেওয়া হয়েছিল। একজন আক্রমণকারী তাদের ব্লক প্রস্তাবকে দ্ব্যর্থবোধক করে এবং প্রতিটি ব্লককে নেটওয়ার্ক এর প্রায় অর্ধেকের কাছে প্রচার করে দুটি প্রতিযোগী চেইন সেট আপ করে, ফর্কগুলোর মধ্যে একটি আনুমানিক ভারসাম্য স্থাপন করে। তারপর, যোগসাজশকারী ভ্যালিডেটরস তাদের ভোট দ্ব্যর্থবোধক করে, এটির সময় নির্ধারণ করে যাতে নেটওয়ার্ক এর অর্ধেক ফর্ক `A` এর জন্য তাদের ভোট প্রথমে পায় এবং বাকি অর্ধেক ফর্ক `B` এর জন্য তাদের ভোট প্রথমে পায়। যেহেতু LMD নিয়ম দ্বিতীয় এটেস্টেশন বাতিল করে এবং প্রতিটি ভ্যালিডেটর এর জন্য কেবল প্রথমটি রাখে, নেটওয়ার্ক এর অর্ধেক `A` এর জন্য ভোট দেখে এবং `B` এর জন্য কোনোটিই দেখে না, বাকি অর্ধেক `B` এর জন্য ভোট দেখে এবং `A` এর জন্য কোনোটিই দেখে না। লেখকরা বর্ণনা করেছেন যে LMD নিয়ম প্রতিপক্ষকে একটি ব্যালেন্সিং আক্রমণ চালানোর জন্য "অসাধারণ ক্ষমতা" দেয়।
-এই LMD আক্রমণের ভেক্টরটি [ফর্ক চয়েস অ্যালগরিদম আপডেট](https://github.com/ethereum/consensus-specs/pull/2845) করে বন্ধ করা হয়েছিল যাতে এটি ফর্ক চয়েস বিবেচনা থেকে সম্পূর্ণরূপে ইকুইভোকেটিং ভ্যালিডেটরদের বাতিল করে দেয়। ইকুইভোকেটিং ভ্যালিডেটরদের ভবিষ্যতের প্রভাবও ফর্ক চয়েস অ্যালগরিদম দ্বারা ছাড় দেওয়া হয়। এটি উপরে বর্ণিত ব্যালেন্সিং আক্রমণকে প্রতিরোধ করে এবং একই সাথে অ্যাভাল্যাঞ্চ আক্রমণের বিরুদ্ধে স্থিতিস্থাপকতা বজায় রাখে।
+এই LMD এ্যাটাক ভেক্টরটি [ফর্ক চয়েস এ্যালগরিদম আপডেট করার](https://github.com/ethereum/consensus-specs/pull/2845) মাধ্যমে বন্ধ করা হয়েছিল যাতে এটি ফর্ক চয়েস বিবেচনা থেকে দ্ব্যর্থবোধক ভ্যালিডেটরস দের পুরোপুরি বাতিল করে দেয়। দ্ব্যর্থবোধক ভ্যালিডেটরস দের ভবিষ্যৎ প্রভাবও ফর্ক চয়েস এ্যালগরিদম দ্বারা ছাড় দেওয়া হয়। এটি উপরে বর্ণিত ব্যালেন্সিং আক্রমণ প্রতিরোধ করে এবং একই সাথে অ্যাভালাঞ্চ আক্রমণের বিরুদ্ধে স্থিতিস্থাপকতা বজায় রাখে।
-আরেক ধরনের আক্রমণ, যাকে [**অ্যাভাল্যাঞ্চ আক্রমণ**](https://ethresear.ch/t/avalanche-attack-on-proof-of-stake-ghost/11854/3) বলা হয়, একটি [মার্চ ২০২২ সালের গবেষণাপত্রে](https://arxiv.org/pdf/2203.01315.pdf) বর্ণনা করা হয়েছিল। একটি অ্যাভাল্যাঞ্চ আক্রমণ মাউন্ট করতে, আক্রমণকারীকে বেশ কয়েকটি পরপর ব্লক প্রস্তাবক নিয়ন্ত্রণ করতে হবে। প্রতিটি ব্লক প্রস্তাবনা স্লটে, আক্রমণকারী তাদের ব্লকটি গোপন রাখে, সৎ চেইন গোপন রাখা ব্লকগুলির সাথে একটি সমান সাবট্রি ওজনে পৌঁছানো পর্যন্ত সেগুলি সংগ্রহ করে। তারপরে, গোপন রাখা ব্লকগুলি প্রকাশ করা হয় যাতে তারা সর্বাধিক ইকুইভোকেট করে। লেখকরা পরামর্শ দেন যে প্রোপোজার বুস্টিং - ব্যালেন্সিং এবং বাউন্সিং আক্রমণের বিরুদ্ধে প্রাথমিক প্রতিরক্ষা - অ্যাভাল্যাঞ্চ আক্রমণের কিছু রূপের বিরুদ্ধে রক্ষা করে না। যাইহোক, লেখকরা শুধুমাত্র ইথেরিয়ামের ফর্ক-চয়েস অ্যালগরিদমের একটি অত্যন্ত আদর্শীকৃত সংস্করণে আক্রমণটি প্রদর্শন করেছেন (তারা LMD ছাড়া GHOST ব্যবহার করেছেন)।
+আক্রমণের আরেকটি শ্রেণী, যাকে [**অ্যাভালাঞ্চ আক্রমণ**](https://ethresear.ch/t/avalanche-attack-on-proof-of-stake-ghost/11854/3) বলা হয়, একটি [মার্চ 2022 এর গবেষণাপত্রে](https://arxiv.org/pdf/2203.01315.pdf) বর্ণনা করা হয়েছিল। একটি অ্যাভালাঞ্চ আক্রমণ চালানোর জন্য, আক্রমণকারীকে বেশ কয়েকটি পরপর ব্লক প্রপোজার নিয়ন্ত্রণ করতে হবে। প্রতিটি ব্লক প্রস্তাব স্লটে, আক্রমণকারী তাদের ব্লক আটকে রাখে, সৎ চেইন আটকে রাখা ব্লকগুলোর সাথে সমান সাবট্রি ওজনে না পৌঁছানো পর্যন্ত সেগুলো সংগ্রহ করে। তারপর, আটকে রাখা ব্লকগুলো প্রকাশ করা হয় যাতে তারা সর্বাধিক দ্ব্যর্থবোধক হয়। লেখকরা পরামর্শ দেন যে প্রপোজার বুস্টিং - ব্যালেন্সিং এবং বাউন্সিং আক্রমণের বিরুদ্ধে প্রাথমিক প্রতিরক্ষা - অ্যাভালাঞ্চ আক্রমণের কিছু রূপের বিরুদ্ধে রক্ষা করে না। যাইহোক, লেখকরা ইথিরিয়ামের ফর্ক-চয়েস এ্যালগরিদম এর একটি অত্যন্ত আদর্শ সংস্করণে আক্রমণটি প্রদর্শন করেছেন (তারা LMD ছাড়া GHOST ব্যবহার করেছেন)।
-অ্যাভাল্যাঞ্চ আক্রমণটি LMD-GHOST ফর্ক চয়েস অ্যালগরিদমের LMD অংশ দ্বারা প্রশমিত হয়। LMD মানে "লেটেস্ট-মেসেজ-ড্রিভেন" এবং এটি প্রতিটি ভ্যালিডেটর দ্বারা রাখা একটি টেবিলকে বোঝায় যা অন্যান্য ভ্যালিডেটরদের কাছ থেকে প্রাপ্ত সর্বশেষ বার্তা ধারণ করে। সেই ক্ষেত্রটি শুধুমাত্র তখনই আপডেট করা হয় যদি নতুন বার্তাটি একটি নির্দিষ্ট ভ্যালিডেটরের জন্য টেবিলের মধ্যে থাকা স্লটের চেয়ে পরের স্লটের হয়। বাস্তবে, এর মানে হল যে প্রতিটি স্লটে, প্রাপ্ত প্রথম বার্তাটি গৃহীত হয় এবং যেকোনো অতিরিক্ত বার্তা উপেক্ষা করার জন্য ইকুইভোকেশন হয়। অন্যভাবে বলতে গেলে, কনসেন্সাস ক্লায়েন্টরা ইকুইভোকেশন গণনা করে না - তারা প্রতিটি ভ্যালিডেটরের কাছ থেকে প্রথম-আগত বার্তা ব্যবহার করে এবং ইকুইভোকেশনগুলি কেবল বাতিল করা হয়, যা অ্যাভাল্যাঞ্চ আক্রমণ প্রতিরোধ করে।
+অ্যাভালাঞ্চ আক্রমণটি LMD-GHOST ফর্ক চয়েস এ্যালগরিদম এর LMD অংশ দ্বারা প্রশমিত হয়। LMD মানে "লেটেস্ট-মেসেজ-ড্রিভেন" এবং এটি প্রতিটি ভ্যালিডেটর দ্বারা রাখা একটি টেবিলকে বোঝায় যাতে অন্যান্য ভ্যালিডেটরস থেকে প্রাপ্ত সর্বশেষ মেসেজ থাকে। সেই ফিল্ডটি কেবল তখনই আপডেট করা হয় যদি নতুন মেসেজটি কোনো নির্দিষ্ট ভ্যালিডেটর এর জন্য টেবিলে ইতিমধ্যে থাকা স্লটের চেয়ে পরবর্তী স্লট থেকে আসে। অনুশীলনে, এর অর্থ হলো প্রতিটি স্লটে, প্রাপ্ত প্রথম মেসেজটি হলো সেটি যা এটি গ্রহণ করেছে এবং যেকোনো অতিরিক্ত মেসেজ হলো দ্ব্যর্থবোধকতা যা উপেক্ষা করা হবে। অন্যভাবে বললে, কনসেন্সাস ক্লায়েন্ট দ্ব্যর্থবোধকতা গণনা করে না - তারা প্রতিটি ভ্যালিডেটর থেকে প্রথম আসা মেসেজ ব্যবহার করে এবং দ্ব্যর্থবোধকতাগুলো কেবল বাতিল করা হয়, যা অ্যাভালাঞ্চ আক্রমণ প্রতিরোধ করে।
-ফর্ক চয়েস নিয়মে আরও বেশ কিছু সম্ভাব্য ভবিষ্যতের আপগ্রেড রয়েছে যা প্রোপোজার-বুস্ট দ্বারা প্রদত্ত নিরাপত্তায় যোগ করতে পারে। একটি হল [ভিউ-মার্জ](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739), যেখানে অ্যাটেস্টররা একটি স্লটের শুরু হওয়ার `n` সেকেন্ড আগে ফর্ক চয়েসের তাদের ভিউ হিমায়িত করে এবং তারপর প্রস্তাবক নেটওয়ার্ক জুড়ে চেইনের ভিউ সিঙ্ক্রোনাইজ করতে সাহায্য করে। আরেকটি সম্ভাব্য আপগ্রেড হল [একক-স্লট ফাইনালিটি](https://notes.ethereum.org/@vbuterin/single_slot_finality), যা মাত্র একটি স্লটের পরে চেইনটি ফাইনাল করে বার্তা টাইমিংয়ের উপর ভিত্তি করে আক্রমণের বিরুদ্ধে রক্ষা করে।
+ফর্ক চয়েস নিয়মে আরও বেশ কয়েকটি সম্ভাব্য ভবিষ্যৎ আপগ্রেড রয়েছে যা প্রপোজার-বুস্ট দ্বারা প্রদত্ত নিরাপত্তায় যোগ করতে পারে। একটি হলো [ভিউ-মার্জ](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739), যেখানে এটেস্টাররা একটি স্লট শুরু হওয়ার `n` সেকেন্ড আগে ফর্ক চয়েস এর তাদের ভিউ ফ্রিজ করে এবং প্রপোজার তারপর নেটওয়ার্ক জুড়ে চেইনের ভিউ সিঙ্ক্রোনাইজ করতে সাহায্য করে। আরেকটি সম্ভাব্য আপগ্রেড হলো [সিঙ্গেল-স্লট ফাইনালিটি](https://notes.ethereum.org/@vbuterin/single_slot_finality), যা কেবল একটি স্লটের পরে চেইন ফাইনাল করে মেসেজ টাইমিংয়ের উপর ভিত্তি করে আক্রমণের বিরুদ্ধে রক্ষা করে।
-#### ফাইনালিটি ডিলে {#finality-delay}
+#### ফাইনালিটি বিলম্ব {#finality-delay}
-[একই গবেষণাপত্র](https://econcs.pku.edu.cn/wine2020/wine2020/Workshop/GTiB20_paper_8.pdf) যা প্রথম স্বল্প-মূল্যের একক ব্লক রিঅর্গ আক্রমণের বর্ণনা দিয়েছে, একটি ফাইনালিটি ডিলে (ওরফে “লাইভনেস ফেইলিওর”) আক্রমণও বর্ণনা করেছে যা আক্রমণকারীর একটি যুগ-সীমানা ব্লকের জন্য ব্লক প্রস্তাবক হওয়ার উপর নির্ভর করে। এটি অত্যন্ত গুরুত্বপূর্ণ কারণ এই যুগ সীমানা ব্লকগুলি ক্যাসপার এফএফজি চেইনের অংশগুলিকে চূড়ান্ত করার জন্য ব্যবহৃত চেকপয়েন্ট হয়ে ওঠে। আক্রমণকারী কেবল তাদের ব্লকটি ততক্ষণ পর্যন্ত আটকে রাখে যতক্ষণ না যথেষ্ট সৎ ভ্যালিডেটর তাদের FFG ভোটগুলি বর্তমান ফাইনালিটি লক্ষ্য হিসাবে পূর্ববর্তী যুগ-সীমানা ব্লকের পক্ষে ব্যবহার করে। তারপরে তারা তাদের আটকে রাখা ব্লক প্রকাশ করে। তারা তাদের ব্লককে প্রমাণ করে এবং বাকি সৎ ভ্যালিডেটররাও ভিন্ন ভিন্ন লক্ষ্য চেকপয়েন্ট সহ ফর্ক তৈরি করে। যদি তারা এটিকে ঠিক সময়ে সময় দেয়, তবে তারা ফাইনালিটি প্রতিরোধ করবে কারণ কোনো ফর্কের পক্ষে ২/৩ সুপারমেজরটি অ্যাটেস্ট করা হবে না। স্টেক যত ছোট হবে, সময় তত বেশি সুনির্দিষ্ট হতে হবে কারণ আক্রমণকারী সরাসরি কম অ্যাটেস্টেশন নিয়ন্ত্রণ করে, এবং আক্রমণকারীর একটি প্রদত্ত যুগ-সীমানা ব্লক প্রস্তাবকারী ভ্যালিডেটর নিয়ন্ত্রণ করার সম্ভাবনা তত কম।
+[একই গবেষণাপত্র](https://econcs.pku.edu.cn/wine2020/wine2020/Workshop/GTiB20_paper_8.pdf) যা প্রথম স্বল্প-মূল্যের একক ব্লক রিঅর্গ আক্রমণের বর্ণনা দিয়েছিল তা একটি ফাইনালিটি বিলম্ব (ওরফে "লাইভনেস ফেইলিওর") আক্রমণেরও বর্ণনা দিয়েছে যা আক্রমণকারীর একটি এপোক-বাউন্ডারি ব্লকের জন্য ব্লক প্রপোজার হওয়ার উপর নির্ভর করে। এটি অত্যন্ত গুরুত্বপূর্ণ কারণ এই এপোক বাউন্ডারি ব্লকগুলো সেই চেকপয়েন্ট হয়ে ওঠে যা Casper FFG চেইনের অংশগুলো ফাইনাল করতে ব্যবহার করে। আক্রমণকারী কেবল তাদের ব্লক আটকে রাখে যতক্ষণ না পর্যাপ্ত সৎ ভ্যালিডেটরস বর্তমান ফাইনালিটি টার্গেট হিসেবে পূর্ববর্তী এপোক-বাউন্ডারি ব্লকের পক্ষে তাদের FFG ভোট ব্যবহার করে। তারপর তারা তাদের আটকে রাখা ব্লক প্রকাশ করে। তারা তাদের ব্লকে এটেস্টেশন করে এবং অবশিষ্ট সৎ ভ্যালিডেটরস রাও ভিন্ন টার্গেট চেকপয়েন্ট সহ ফর্ক তৈরি করে। যদি তারা এটি ঠিক সময়ে করে, তবে তারা ফাইনালিটি প্রতিরোধ করবে কারণ কোনো ফর্কে এটেস্টেশন করা 2/3 সুপারমেজরিটি থাকবে না। স্টেক যত ছোট হবে, টাইমিং তত বেশি সুনির্দিষ্ট হতে হবে কারণ আক্রমণকারী সরাসরি কম এটেস্টেশন নিয়ন্ত্রণ করে, এবং আক্রমণকারীর একটি প্রদত্ত এপোক-বাউন্ডারি ব্লক প্রস্তাবকারী ভ্যালিডেটর নিয়ন্ত্রণ করার সম্ভাবনা তত কম।
-#### লং-রেঞ্জ আক্রমণ {#long-range-attacks}
+#### লং রেঞ্জ আক্রমণ {#long-range-attacks}
-প্রুফ-অফ-স্টেক ব্লকচেইনগুলির জন্য নির্দিষ্ট একটি ধরনের আক্রমণও রয়েছে যা জেনেসিস ব্লকে অংশগ্রহণকারী একটি ভ্যালিডেটরকে জড়িত করে যা সৎ একের পাশাপাশি ব্লকচেইনের একটি পৃথক ফর্ক বজায় রাখে, অবশেষে সৎ ভ্যালিডেটর সেটকে অনেক পরে কোনো সুবিধাজনক সময়ে এটিতে স্যুইচ করতে রাজি করায়। এই ধরনের আক্রমণ ইথেরিয়ামে সম্ভব নয় কারণ ফাইনালিটি গ্যাজেট নিশ্চিত করে যে সমস্ত ভ্যালিডেটর নিয়মিত বিরতিতে (“চেকপয়েন্ট”) সৎ চেইনের অবস্থায় একমত। এই সহজ প্রক্রিয়াটি দীর্ঘ পরিসরের আক্রমণকারীদের নিরপেক্ষ করে কারণ ইথেরিয়াম ক্লায়েন্টরা কেবল ফাইনাল করা ব্লকগুলিকে রিঅর্গ করবে না। নেটওয়ার্কে যোগদানকারী নতুন নোডগুলি একটি বিশ্বস্ত সাম্প্রতিক স্টেট হ্যাশ (“[দুর্বল বিষয়ভিত্তিকতা](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity) চেকপয়েন্ট”) খুঁজে বের করে এবং এটিকে একটি ছদ্ম-জেনেসিস ব্লক হিসাবে ব্যবহার করে যার উপরে তৈরি করা হয়। এটি একটি নতুন নোডের জন্য নেটওয়ার্কে প্রবেশের জন্য একটি ‘ট্রাস্ট গেটওয়ে’ তৈরি করে, তার আগে এটি নিজের জন্য তথ্য যাচাই করা শুরু করতে পারে।
+প্রুফ-অফ-স্টেক ব্লকচেইন এর জন্য নির্দিষ্ট একটি আক্রমণের শ্রেণীও রয়েছে যার মধ্যে জেনেসিস ব্লকে অংশগ্রহণকারী একজন ভ্যালিডেটর সৎটির পাশাপাশি ব্লকচেইন এর একটি পৃথক ফর্ক বজায় রাখে, শেষ পর্যন্ত সৎ ভ্যালিডেটর সেটকে অনেক পরে কোনো উপযুক্ত সময়ে এটিতে স্যুইচ করতে রাজি করায়। ইথিরিয়ামে এই ধরণের আক্রমণ সম্ভব নয় কারণ ফাইনালিটি গ্যাজেট যা নিশ্চিত করে যে সমস্ত ভ্যালিডেটরস নিয়মিত বিরতিতে ("চেকপয়েন্ট") সৎ চেইনের স্টেট এ একমত হয়। এই সহজ মেকানিজম লং রেঞ্জ আক্রমণকারীদের নিরপেক্ষ করে কারণ ইথিরিয়াম ক্লায়েন্ট কেবল ফাইনাল হওয়া ব্লকস রিঅর্গ করবে না। নেটওয়ার্ক এ যোগদানকারী নতুন নোড একটি বিশ্বস্ত সাম্প্রতিক স্টেট হ্যাস (একটি "[উইক সাবজেক্টিভিটি](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity) চেকপয়েন্ট") খুঁজে বের করে এবং এর উপরে নির্মাণ করার জন্য এটিকে একটি সিউডো-জেনেসিস ব্লক হিসেবে ব্যবহার করে এটি করে। এটি নেটওয়ার্ক এ প্রবেশকারী একটি নতুন নোড এর জন্য একটি 'ট্রাস্ট গেটওয়ে' তৈরি করে এর আগে যে এটি নিজের জন্য তথ্য যাচাই করা শুরু করতে পারে।
-#### পরিষেবা অস্বীকার {#denial-of-service}
+#### ডিনায়াল অফ সার্ভিস {#denial-of-service}
-ইথেরিয়ামের PoS প্রক্রিয়া প্রতিটি স্লটে মোট ভ্যালিডেটর সেট থেকে একটি একক ভ্যালিডেটরকে ব্লক প্রস্তাবক হিসাবে বেছে নেয়। এটি একটি সর্বজনীনভাবে পরিচিত ফাংশন ব্যবহার করে গণনা করা যেতে পারে এবং একজন প্রতিপক্ষের পক্ষে তাদের ব্লক প্রস্তাবনার সামান্য আগে পরবর্তী ব্লক প্রস্তাবককে সনাক্ত করা সম্ভব। তারপরে, আক্রমণকারী ব্লক প্রস্তাবককে স্প্যাম করতে পারে যাতে তারা তাদের সহকর্মীদের সাথে তথ্য আদান-প্রদান করতে না পারে। নেটওয়ার্কের বাকি অংশের কাছে, এটি মনে হবে যে ব্লক প্রস্তাবক অফলাইন ছিল এবং স্লটটি কেবল খালি যাবে। এটি নির্দিষ্ট ভ্যালিডেটরদের বিরুদ্ধে সেন্সরশিপের একটি রূপ হতে পারে, যা তাদের ব্লকচেইনে তথ্য যোগ করা থেকে বিরত রাখে। একক গোপন নেতা নির্বাচন (SSLE) বা অ-একক গোপন নেতা নির্বাচন বাস্তবায়ন করলে DoS ঝুঁকি কমবে কারণ শুধুমাত্র ব্লক প্রস্তাবকই জানেন যে তারা নির্বাচিত হয়েছেন এবং নির্বাচনটি আগে থেকে জানা যায় না। এটি এখনও বাস্তবায়িত হয়নি, তবে এটি [গবেষণা ও উন্নয়নের](https://ethresear.ch/t/secret-non-single-leader-election/11789) একটি সক্রিয় ক্ষেত্র।
+ইথিরিয়ামের PoS মেকানিজম প্রতিটি স্লটে ব্লক প্রপোজার হওয়ার জন্য মোট ভ্যালিডেটর সেট থেকে একটি একক ভ্যালিডেটর বেছে নেয়। এটি একটি সর্বজনীনভাবে পরিচিত ফাংশন ব্যবহার করে গণনা করা যেতে পারে এবং একজন প্রতিপক্ষের পক্ষে তাদের ব্লক প্রস্তাবের সামান্য আগে পরবর্তী ব্লক প্রপোজার সনাক্ত করা সম্ভব। তারপর, আক্রমণকারী ব্লক প্রপোজার কে স্প্যাম করতে পারে যাতে তারা তাদের সমকক্ষদের সাথে তথ্য অদলবদল করতে না পারে। নেটওয়ার্ক এর বাকি অংশের কাছে, এটি মনে হবে যে ব্লক প্রপোজার অফলাইনে ছিল এবং স্লটটি কেবল খালি হয়ে যাবে। এটি নির্দিষ্ট ভ্যালিডেটরস দের বিরুদ্ধে সেন্সরশিপের একটি রূপ হতে পারে, যা তাদের ব্লকচেইন এ তথ্য যোগ করতে বাধা দেয়। সিঙ্গেল সিক্রেট লিডার ইলেকশন (SSLE) বা নন-সিঙ্গেল সিক্রেট লিডার ইলেকশন বাস্তবায়ন করা DoS ঝুঁকি প্রশমিত করবে কারণ কেবল ব্লক প্রপোজারই জানে যে তাদের নির্বাচিত করা হয়েছে এবং নির্বাচনটি আগে থেকে জানা যায় না। এটি এখনও বাস্তবায়িত হয়নি, তবে এটি [গবেষণা এবং উন্নয়নের](https://ethresear.ch/t/secret-non-single-leader-election/11789) একটি সক্রিয় ক্ষেত্র।
-এই সবই এই সত্যের দিকে ইঙ্গিত করে যে অল্প স্টেক দিয়ে ইথেরিয়ামকে সফলভাবে আক্রমণ করা খুব কঠিন। এখানে বর্ণিত কার্যকর আক্রমণগুলির জন্য একটি আদর্শীকৃত ফর্ক-চয়েস অ্যালগরিদম, অসম্ভাব্য নেটওয়ার্ক শর্ত প্রয়োজন, অথবা আক্রমণ ভেক্টরগুলি ইতিমধ্যেই ক্লায়েন্ট সফ্টওয়্যারের তুলনামূলকভাবে ছোটখাটো প্যাচ দিয়ে বন্ধ করা হয়েছে। এটি, অবশ্যই, বন্য পরিবেশে জিরো-ডে থাকার সম্ভাবনাকে বাতিল করে না, তবে এটি একজন সংখ্যালঘু-স্টেক আক্রমণকারীকে কার্যকর হতে হলে প্রযুক্তিগত যোগ্যতা, কনসেন্সাস লেয়ার জ্ঞান এবং ভাগ্যের অত্যন্ত উচ্চ বার প্রদর্শন করে। একজন আক্রমণকারীর দৃষ্টিকোণ থেকে তাদের সেরা বাজি হতে পারে যতটা সম্ভব ইথার জমা করা এবং মোট স্টেকের একটি বৃহত্তর অনুপাত নিয়ে সশস্ত্র হয়ে ফিরে আসা।
+এই সমস্ত কিছুই এই সত্যের দিকে নির্দেশ করে যে একটি ছোট স্টেক দিয়ে ইথিরিয়ামে সফলভাবে আক্রমণ করা খুব কঠিন। এখানে বর্ণিত কার্যকর আক্রমণগুলোর জন্য একটি আদর্শ ফর্ক-চয়েস এ্যালগরিদম, অসম্ভাব্য নেটওয়ার্ক শর্ত প্রয়োজন, অথবা ক্লায়েন্ট সফটওয়্যারে তুলনামূলকভাবে ছোট প্যাচ দিয়ে এ্যাটাক ভেক্টরগুলো ইতিমধ্যে বন্ধ করা হয়েছে। এটি, অবশ্যই, বন্য অঞ্চলে জিরো-ডে বিদ্যমান থাকার সম্ভাবনাকে উড়িয়ে দেয় না, তবে এটি একটি সংখ্যালঘু-স্টেক আক্রমণকারীর কার্যকর হওয়ার জন্য প্রয়োজনীয় প্রযুক্তিগত যোগ্যতা, কনসেন্সাস লেয়ার জ্ঞান এবং ভাগ্যের অত্যন্ত উচ্চ বার প্রদর্শন করে। একজন আক্রমণকারীর দৃষ্টিকোণ থেকে তাদের সেরা বাজি হতে পারে যতটা সম্ভব ইথার জমা করা এবং মোট স্টেক এর একটি বৃহত্তর অনুপাত নিয়ে ফিরে আসা।
-### মোট স্টেকের >= ৩৩% ব্যবহারকারী আক্রমণকারী {#attackers-with-33-stake}
+### মোট স্টেকের >= 33% ব্যবহারকারী আক্রমণকারী {#attackers-with-33-stake}
-এই নিবন্ধে পূর্বে উল্লিখিত সমস্ত আক্রমণ সফল হওয়ার সম্ভাবনা বেশি যখন আক্রমণকারীর কাছে ভোট দেওয়ার জন্য আরও স্টেক করা ইথার থাকে, এবং আরও ভ্যালিডেটর থাকে যারা প্রতিটি স্লটে ব্লক প্রস্তাব করার জন্য নির্বাচিত হতে পারে। একটি বিদ্বেষপরায়ণ ভ্যালিডেটর তাই যতটা সম্ভব স্টেক করা ইথার নিয়ন্ত্রণ করার লক্ষ্য রাখতে পারে।
+এই নিবন্ধে পূর্বে উল্লিখিত সমস্ত আক্রমণ সফল হওয়ার সম্ভাবনা বেশি হয়ে যায় যখন আক্রমণকারীর ভোট দেওয়ার জন্য আরও বেশি স্টেকড ইথার থাকে, এবং প্রতিটি স্লটে ব্লকস প্রস্তাব করার জন্য বেছে নেওয়া হতে পারে এমন আরও ভ্যালিডেটরস থাকে। একজন ক্ষতিকারক ভ্যালিডেটর তাই যতটা সম্ভব স্টেকড ইথার নিয়ন্ত্রণ করার লক্ষ্য রাখতে পারে।
-স্টেক করা ইথারের ৩৩% একজন আক্রমণকারীর জন্য একটি বেঞ্চমার্ক কারণ এই পরিমাণের চেয়ে বেশি কিছু দিয়ে তাদের অন্য ভ্যালিডেটরদের ক্রিয়া সূক্ষ্মভাবে নিয়ন্ত্রণ না করেই চেইনটিকে চূড়ান্ত করা থেকে বিরত রাখার ক্ষমতা থাকে। তারা কেবল সবাই একসাথে অদৃশ্য হয়ে যেতে পারে। যদি স্টেক করা ইথারের ১/৩ বা তার বেশি বিদ্বেষপরায়ণভাবে অ্যাটেস্ট করে বা অ্যাটেস্ট করতে ব্যর্থ হয়, তাহলে একটি ২/৩ সুপারমেজরটি থাকতে পারে না এবং চেইনটি চূড়ান্ত হতে পারে না। এর বিরুদ্ধে প্রতিরক্ষা হল নিষ্ক্রিয়তা ফাঁস। নিষ্ক্রিয়তা ফাঁস সেই ভ্যালিডেটরদের সনাক্ত করে যারা অ্যাটেস্ট করতে ব্যর্থ হচ্ছে বা সংখ্যাগরিষ্ঠের বিরুদ্ধে অ্যাটেস্ট করছে। এই অ-অ্যাটেস্টিং ভ্যালিডেটরদের মালিকানাধীন স্টেক করা ইথার ধীরে ধীরে শেষ হয়ে যায় যতক্ষণ না অবশেষে তারা সম্মিলিতভাবে মোট স্টেকের ১/৩-এর কম প্রতিনিধিত্ব করে যাতে চেইনটি আবার ফাইনাল হতে পারে।
+স্টেকড ইথারের 33% একজন আক্রমণকারীর জন্য একটি বেঞ্চমার্ক কারণ এই পরিমাণের চেয়ে বেশি যেকোনো কিছুর সাথে তাদের অন্যান্য ভ্যালিডেটরস এর কাজগুলো সূক্ষ্মভাবে নিয়ন্ত্রণ না করেই চেইনটিকে ফাইনাল হওয়া থেকে বাধা দেওয়ার ক্ষমতা রয়েছে। তারা কেবল সবাই একসাথে অদৃশ্য হয়ে যেতে পারে। যদি স্টেকড ইথারের 1/3 বা তার বেশি ক্ষতিকারকভাবে এটেস্টেশন করে বা এটেস্টেশন করতে ব্যর্থ হয়, তবে একটি 2/3 সুপারমেজরিটি থাকতে পারে না এবং চেইন ফাইনাল হতে পারে না। এর বিরুদ্ধে প্রতিরক্ষা হলো ইনঅ্যাক্টিভিটি লিক। ইনঅ্যাক্টিভিটি লিক সেই ভ্যালিডেটরস দের সনাক্ত করে যারা এটেস্টেশন করতে ব্যর্থ হচ্ছে বা সংখ্যাগরিষ্ঠের বিপরীতে এটেস্টেশন করছে। এই নন-এটেস্টিং ভ্যালিডেটরস দের মালিকানাধীন স্টেকড ইথার ধীরে ধীরে রক্তক্ষরণ হয় যতক্ষণ না শেষ পর্যন্ত তারা সম্মিলিতভাবে মোটের 1/3 এর কম প্রতিনিধিত্ব করে যাতে চেইনটি আবার ফাইনাল হতে পারে।
-নিষ্ক্রিয়তা ফাঁসের উদ্দেশ্য হল চেইনটিকে আবার চূড়ান্ত করা। তবে, আক্রমণকারী তাদের স্টেক করা ইথারের একটি অংশও হারায়। মোট স্টেক করা ইথারের ৩৩% প্রতিনিধিত্বকারী ভ্যালিডেটরদের মধ্যে ক্রমাগত নিষ্ক্রিয়তা খুব ব্যয়বহুল যদিও ভ্যালিডেটরদের স্ল্যাশ করা হয় না।
+ইনঅ্যাক্টিভিটি লিকের উদ্দেশ্য হলো চেইনটিকে আবার ফাইনাল করা। যাইহোক, আক্রমণকারী তাদের স্টেকড ইথারের একটি অংশও হারায়। মোট স্টেকড ইথারের 33% প্রতিনিধিত্বকারী ভ্যালিডেটরস জুড়ে ক্রমাগত নিষ্ক্রিয়তা খুব ব্যয়বহুল যদিও ভ্যালিডেটরস দের স্ল্যাশিং করা হয় না।
-ধরা যাক যে ইথেরিয়াম নেটওয়ার্কটি অ্যাসিঙ্ক্রোনাস (অর্থাৎ, মেসেজ পাঠানো এবং গ্রহণের মধ্যে বিলম্ব হয়), তাহলে মোট স্টেকের 34% নিয়ন্ত্রণকারী একজন আক্রমণকারী ডাবল ফাইনালিটি ঘটাতে পারে। এর কারণ হল আক্রমণকারী যখন ব্লক উৎপাদক হিসাবে নির্বাচিত হয় তখন ইকুইভোকেট করতে পারে, তারপর তাদের সমস্ত ভ্যালিডেটরদের সাথে ডাবল ভোট দিতে পারে। এটি এমন একটি পরিস্থিতি তৈরি করে যেখানে ব্লকচেইনের একটি ফর্ক বিদ্যমান, যার প্রত্যেকটির পক্ষে ৩৪% স্টেক করা ইথার ভোট দিচ্ছে। প্রতিটি ফর্কের জন্য বাকি ভ্যালিডেটরদের মাত্র ৫০% ভোট প্রয়োজন যাতে উভয় ফর্ক একটি সুপারমেজরটি দ্বারা সমর্থিত হয়, সেক্ষেত্রে উভয় চেইন চূড়ান্ত হতে পারে (কারণ আক্রমণকারীদের ভ্যালিডেটরদের ৩৪% + বাকি ৬৬%-এর অর্ধেক = প্রতিটি ফর্কে ৬৭%)। প্রতিযোগী ব্লকগুলিকে প্রায় ৫০% সৎ ভ্যালিডেটরদের দ্বারা গ্রহণ করতে হবে তাই এই আক্রমণটি তখনই কার্যকর যখন আক্রমণকারীর নেটওয়ার্ক জুড়ে বার্তা প্রচারের সময়কালের উপর কিছুটা নিয়ন্ত্রণ থাকে যাতে তারা প্রতিটি চেইনে অর্ধেক সৎ ভ্যালিডেটরকে ঠেলে দিতে পারে। আক্রমণকারীকে অবশ্যই এই ডাবল ফাইনালিটি অর্জনের জন্য তাদের সম্পূর্ণ স্টেক (আজকের ভ্যালিডেটর সেটের সাথে ~১০ মিলিয়ন ইথারের ৩৪%) ধ্বংস করতে হবে কারণ তাদের ভ্যালিডেটরদের ৩৪% একই সাথে ডাবল-ভোট দেবে - যা সর্বোচ্চ পারস্পরিক সম্পর্ক জরিমানার সাথে একটি স্ল্যাশযোগ্য অপরাধ। এই আক্রমণের বিরুদ্ধে প্রতিরক্ষা হল মোট স্টেক করা ইথারের ৩৪% ধ্বংস করার বিশাল খরচ। এই আক্রমণ থেকে পুনরুদ্ধার করার জন্য ইথেরিয়াম সম্প্রদায়কে “ব্যান্ডের বাইরে” সমন্বয় করতে হবে এবং একটি বা অন্য ফর্ক অনুসরণ করতে এবং অন্যটিকে উপেক্ষা করতে সম্মত হতে হবে।
+ধরে নিই যে ইথিরিয়াম নেটওয়ার্ক অ্যাসিঙ্ক্রোনাস (অর্থাৎ, মেসেজ পাঠানো এবং পাওয়ার মধ্যে বিলম্ব রয়েছে), মোট স্টেকের 34% নিয়ন্ত্রণকারী একজন আক্রমণকারী ডাবল ফাইনালিটি ঘটাতে পারে। এর কারণ হলো আক্রমণকারী যখন ব্লক প্রডিউসার হিসেবে নির্বাচিত হয় তখন তারা দ্ব্যর্থবোধক আচরণ করতে পারে, তারপর তাদের সমস্ত ভ্যালিডেটরস এর সাথে ডাবল ভোট দিতে পারে। এটি এমন একটি পরিস্থিতি তৈরি করে যেখানে ব্লকচেইন এর একটি ফর্ক বিদ্যমান থাকে, প্রতিটিতে 34% স্টেকড ইথার এর জন্য ভোট দেয়। প্রতিটি ফর্কের পক্ষে ভোট দেওয়ার জন্য অবশিষ্ট ভ্যালিডেটরস এর কেবল 50% প্রয়োজন যাতে উভয় ফর্ক একটি সুপারমেজরিটি দ্বারা সমর্থিত হয়, যে ক্ষেত্রে উভয় চেইন ফাইনাল হতে পারে (কারণ আক্রমণকারীদের ভ্যালিডেটরস এর 34% + অবশিষ্ট 66% এর অর্ধেক = প্রতিটি ফর্কে 67%)। প্রতিযোগী ব্লকস প্রতিটি প্রায় 50% সৎ ভ্যালিডেটরস দ্বারা গ্রহণ করতে হবে তাই এই আক্রমণটি কেবল তখনই কার্যকর যখন আক্রমণকারীর নেটওয়ার্ক জুড়ে মেসেজ প্রচারের টাইমিংয়ের উপর কিছুটা নিয়ন্ত্রণ থাকে যাতে তারা অর্ধেক সৎ ভ্যালিডেটরস কে প্রতিটি চেইনে ঠেলে দিতে পারে। এই ডাবল ফাইনালিটি অর্জনের জন্য আক্রমণকারীকে অগত্যা তাদের সম্পূর্ণ স্টেক (আজকের ভ্যালিডেটর সেটের সাথে ~10 মিলিয়ন ইথারের 34%) ধ্বংস করতে হবে কারণ তাদের 34% ভ্যালিডেটরস একই সাথে ডাবল-ভোট দেবে - সর্বাধিক কোরিলেশন পেনাল্টি সহ একটি স্ল্যাশেবল অপরাধ। এই আক্রমণের বিরুদ্ধে প্রতিরক্ষা হলো মোট স্টেকড ইথারের 34% ধ্বংস করার বিশাল খরচ। এই আক্রমণ থেকে পুনরুদ্ধার করার জন্য ইথিরিয়াম কমিউনিটিকে "আউট-অফ-ব্যান্ড" সমন্বয় করতে হবে এবং ফর্কগুলোর একটি বা অন্যটি অনুসরণ করতে এবং অন্যটিকে উপেক্ষা করতে সম্মত হতে হবে।
-### মোট স্টেকের ~৫০% ব্যবহারকারী আক্রমণকারী {#attackers-with-50-stake}
+### মোট স্টেকের ~50% ব্যবহারকারী আক্রমণকারী {#attackers-with-50-stake}
-স্টেক করা ইথারের ৫০%-এ, ভ্যালিডেটরদের একটি দুষ্টু দল তাত্ত্বিকভাবে চেইনটিকে দুটি সমান আকারের ফর্কে বিভক্ত করতে পারে এবং তারপর কেবল তাদের সম্পূর্ণ ৫০% স্টেক সৎ ভ্যালিডেটর সেটের বিপরীতে ভোট দেওয়ার জন্য ব্যবহার করতে পারে, যার ফলে দুটি ফর্ক বজায় থাকে এবং ফাইনালিটি প্রতিরোধ করা যায়। উভয় ফর্কে নিষ্ক্রিয়তা ফাঁস অবশেষে উভয় চেইনকে চূড়ান্ত করতে পরিচালিত করবে। এই মুহূর্তে, একমাত্র বিকল্প হল একটি সামাজিক পুনরুদ্ধারের উপর নির্ভর করা।
+স্টেকড ইথারের 50%-এ, ভ্যালিডেটরস এর একটি দুষ্টু দল তাত্ত্বিকভাবে চেইনটিকে দুটি সমান আকারের ফর্কে বিভক্ত করতে পারে এবং তারপর সৎ ভ্যালিডেটর সেটের বিপরীতে ভোট দেওয়ার জন্য তাদের সম্পূর্ণ 50% স্টেক ব্যবহার করতে পারে, যার ফলে দুটি ফর্ক বজায় থাকে এবং ফাইনালিটি প্রতিরোধ করে। উভয় ফর্কে ইনঅ্যাক্টিভিটি লিক শেষ পর্যন্ত উভয় চেইনকে ফাইনাল করতে পরিচালিত করবে। এই মুহুর্তে, একমাত্র বিকল্প হলো একটি সামাজিক পুনরুদ্ধারের উপর নির্ভর করা।
-সৎ ভ্যালিডেটর সংখ্যা, নেটওয়ার্ক লেটেন্সি ইত্যাদিতে একটি নির্দিষ্ট মাত্রার প্রবাহের কারণে একটি প্রতিকূল দল ভ্যালিডেটররা ক্রমাগতভাবে মোট স্টেকের ঠিক ৫০% নিয়ন্ত্রণ করতে পারবে এমন সম্ভাবনা খুবই কম - এই ধরনের আক্রমণ মাউন্ট করার বিশাল খরচ এবং সাফল্যের কম সম্ভাবনার সাথে মিলিত হয়ে একজন যুক্তিসঙ্গত আক্রমণকারীর জন্য একটি শক্তিশালী অনীহা বলে মনে হয়, বিশেষ করে যখন _৫০%-এর বেশি_ অর্জনের জন্য একটি ছোট অতিরিক্ত বিনিয়োগ অনেক বেশি শক্তি আনলক করে।
+এটি খুব অসম্ভাব্য যে ভ্যালিডেটরস এর একটি প্রতিপক্ষ দল সৎ ভ্যালিডেটর সংখ্যা, নেটওয়ার্ক লেটেন্সি ইত্যাদিতে কিছুটা পরিবর্তনের কারণে ধারাবাহিকভাবে মোট স্টেকের ঠিক 50% নিয়ন্ত্রণ করতে পারে - এই ধরনের আক্রমণ চালানোর বিশাল খরচ এবং সাফল্যের কম সম্ভাবনা একজন যুক্তিবাদী আক্রমণকারীর জন্য একটি শক্তিশালী নিরুৎসাহ বলে মনে হয়, বিশেষ করে যখন 50% এর _বেশি_ পাওয়ার জন্য একটি ছোট অতিরিক্ত বিনিয়োগ আরও অনেক ক্ষমতা আনলক করে।
-মোট স্টেকের >৫০%-এ আক্রমণকারী ফর্ক চয়েস অ্যালগরিদমে আধিপত্য বিস্তার করতে পারে। এই ক্ষেত্রে, আক্রমণকারী সংখ্যাগরিষ্ঠ ভোটের সাথে অ্যাটেস্ট করতে সক্ষম হবে, যা তাদের সৎ ক্লায়েন্টদের বোকা না বানিয়েই ছোট রিঅর্গ করার জন্য যথেষ্ট নিয়ন্ত্রণ দেবে। সৎ ভ্যালিডেটররা অনুসরণ করবে কারণ তাদের ফর্ক চয়েস অ্যালগরিদমও আক্রমণকারীর পছন্দের চেইনটিকে সবচেয়ে ভারী হিসাবে দেখবে, তাই চেইনটি চূড়ান্ত হতে পারে। এটি আক্রমণকারীকে নির্দিষ্ট লেনদেন সেন্সর করতে, স্বল্প-পরিসরের রিঅর্গ করতে এবং তাদের পক্ষে ব্লক পুনর্বিন্যাস করে সর্বাধিক MEV আহরণ করতে সক্ষম করে। এর বিরুদ্ধে প্রতিরক্ষা হল সংখ্যাগরিষ্ঠ স্টেকের বিশাল খরচ (বর্তমানে প্রায় $১৯ বিলিয়ন মার্কিন ডলার) যা একজন আক্রমণকারীর দ্বারা ঝুঁকিতে পড়ে কারণ সামাজিক লেয়ার সম্ভবত হস্তক্ষেপ করবে এবং একটি সৎ সংখ্যালঘু ফর্ক গ্রহণ করবে, যা আক্রমণকারীর স্টেককে নাটকীয়ভাবে অবমূল্যায়ন করবে।
+মোট স্টেকের >50%-এ আক্রমণকারী ফর্ক চয়েস এ্যালগরিদম এ আধিপত্য বিস্তার করতে পারে। এই ক্ষেত্রে, আক্রমণকারী সংখ্যাগরিষ্ঠ ভোটের সাথে এটেস্টেশন করতে সক্ষম হবে, যা তাদের সৎ ক্লায়েন্ট দের বোকা বানানোর প্রয়োজন ছাড়াই শর্ট রিঅর্গস করার জন্য পর্যাপ্ত নিয়ন্ত্রণ দেবে। সৎ ভ্যালিডেটরস রা এটি অনুসরণ করবে কারণ তাদের ফর্ক চয়েস এ্যালগরিদম ও আক্রমণকারীর পছন্দের চেইনটিকে সবচেয়ে ভারী হিসেবে দেখবে, তাই চেইনটি ফাইনাল হতে পারে। এটি আক্রমণকারীকে নির্দিষ্ট লেনদেন সেন্সর করতে, শর্ট-রেঞ্জ রিঅর্গস করতে এবং তাদের পক্ষে ব্লকস পুনর্বিন্যাস করে সর্বাধিক MEV এক্সট্রাক্ট করতে সক্ষম করে। এর বিরুদ্ধে প্রতিরক্ষা হলো একটি সংখ্যাগরিষ্ঠ স্টেকের বিশাল খরচ (বর্তমানে মাত্র $19 বিলিয়ন USD এর নিচে) যা একজন আক্রমণকারী দ্বারা ঝুঁকিতে ফেলা হয় কারণ সোশ্যাল লেয়ার সম্ভবত হস্তক্ষেপ করবে এবং একটি সৎ সংখ্যালঘু ফর্ক গ্রহণ করবে, যা আক্রমণকারীর স্টেককে নাটকীয়ভাবে অবমূল্যায়ন করবে।
-### মোট স্টেকের >=৬৬% ব্যবহারকারী আক্রমণকারী {#attackers-with-66-stake}
+### মোট স্টেকের >=66% ব্যবহারকারী আক্রমণকারী {#attackers-with-66-stake}
-৬৬% বা তার বেশি মোট স্টেক করা ইথার সহ একজন আক্রমণকারী কোনো সৎ ভ্যালিডেটরকে জোর না করেই তাদের পছন্দের চেইন চূড়ান্ত করতে পারে। আক্রমণকারী কেবল তাদের পছন্দের ফর্কের জন্য ভোট দিতে পারে এবং তারপর এটিকে চূড়ান্ত করতে পারে, কেবল কারণ তারা একটি অসৎ সুপারমেজরটি দিয়ে ভোট দিতে পারে। সুপারমেজরটি স্টেকহোল্ডার হিসাবে, আক্রমণকারী সর্বদা চূড়ান্ত ব্লকগুলির বিষয়বস্তু নিয়ন্ত্রণ করবে, খরচ করার, রিওয়াইন্ড করার এবং আবার খরচ করার, নির্দিষ্ট লেনদেন সেন্সর করার এবং ইচ্ছামত চেইন রিঅর্গ করার ক্ষমতা সহ। ৫১%-এর পরিবর্তে ৬৬% নিয়ন্ত্রণ করার জন্য অতিরিক্ত ইথার ক্রয় করে, আক্রমণকারী কার্যকরভাবে এক্স পোস্ট রিঅর্গ এবং ফাইনালিটি রিভার্সন করার ক্ষমতা কিনছে (অর্থাৎ, ভবিষ্যতের নিয়ন্ত্রণের পাশাপাশি অতীত পরিবর্তন করা)। এখানে একমাত্র আসল প্রতিরক্ষা হল মোট স্টেক করা ইথারের ৬৬%-এর বিশাল খরচ, এবং একটি বিকল্প ফর্ক গ্রহণের সমন্বয়ের জন্য সামাজিক লেয়ারে ফিরে যাওয়ার বিকল্প। আমরা পরবর্তী বিভাগে এটি আরও বিস্তারিতভাবে অন্বেষণ করতে পারি।
+মোট স্টেকড ইথারের 66% বা তার বেশি সহ একজন আক্রমণকারী কোনো সৎ ভ্যালিডেটরস কে বাধ্য না করেই তাদের পছন্দের চেইন ফাইনাল করতে পারে। আক্রমণকারী কেবল তাদের পছন্দের ফর্কের জন্য ভোট দিতে পারে এবং তারপর এটি ফাইনাল করতে পারে, কেবল কারণ তারা একটি অসৎ সুপারমেজরিটির সাথে ভোট দিতে পারে। সুপারমেজরিটি স্টেকহোল্ডার হিসেবে, আক্রমণকারী সর্বদা ফাইনাল হওয়া ব্লকস এর বিষয়বস্তু নিয়ন্ত্রণ করবে, যার ক্ষমতা থাকবে ব্যয় করার, রিওয়াইন্ড করার এবং আবার ব্যয় করার, নির্দিষ্ট লেনদেন সেন্সর করার এবং ইচ্ছামতো চেইন রিঅর্গ করার। 51% এর পরিবর্তে 66% নিয়ন্ত্রণ করার জন্য অতিরিক্ত ইথার ক্রয় করে, আক্রমণকারী কার্যকরভাবে এক্স পোস্ট রিঅর্গস এবং ফাইনালিটি রিভার্সন করার ক্ষমতা কিনছে (অর্থাৎ, অতীত পরিবর্তন করার পাশাপাশি ভবিষ্যৎ নিয়ন্ত্রণ করা)। এখানে একমাত্র বাস্তব প্রতিরক্ষা হলো মোট স্টেকড ইথারের 66% এর বিশাল খরচ, এবং একটি বিকল্প ফর্ক গ্রহণ সমন্বয় করতে সোশ্যাল লেয়ারে ফিরে যাওয়ার বিকল্প। আমরা পরবর্তী বিভাগে এটি আরও বিস্তারিতভাবে অন্বেষণ করতে পারি।
## মানুষ: প্রতিরক্ষার শেষ লাইন {#people-the-last-line-of-defense}
-যদি অসৎ ভ্যালিডেটররা চেইনের তাদের পছন্দের সংস্করণটি চূড়ান্ত করতে সক্ষম হয়, তবে ইথেরিয়াম সম্প্রদায় একটি কঠিন পরিস্থিতিতে পড়ে। ক্যানোনিকাল চেইনে এর ইতিহাসে একটি অসৎ অংশ বেক করা থাকে, যখন সৎ ভ্যালিডেটররা একটি বিকল্প (সৎ) চেইন অ্যাটেস্ট করার জন্য শাস্তি পেতে পারে। মনে রাখবেন যে একটি চূড়ান্ত কিন্তু ভুল চেইন একটি সংখ্যাগরিষ্ঠ ক্লায়েন্টের একটি বাগ থেকেও উদ্ভূত হতে পারে। শেষ পর্যন্ত, চূড়ান্ত ফলব্যাক হল পরিস্থিতি সমাধানের জন্য সামাজিক লেয়ার - লেয়ার 0 - এর উপর নির্ভর করা।
+যদি অসৎ ভ্যালিডেটরস তাদের পছন্দের চেইনের সংস্করণ ফাইনাল করতে পরিচালনা করে, তবে ইথিরিয়াম কমিউনিটি একটি কঠিন পরিস্থিতিতে পড়ে। ক্যানোনিকাল চেইনে এর ইতিহাসে বেক করা একটি অসৎ অংশ অন্তর্ভুক্ত থাকে, যখন সৎ ভ্যালিডেটরস একটি বিকল্প (সৎ) চেইনে এটেস্টেশন করার জন্য শাস্তি পেতে পারে। মনে রাখবেন যে একটি ফাইনাল হওয়া কিন্তু ভুল চেইন একটি সংখ্যাগরিষ্ঠ ক্লায়েন্ট এর বাগ থেকেও উদ্ভূত হতে পারে। শেষ পর্যন্ত, চূড়ান্ত ফলব্যাক হলো পরিস্থিতি সমাধানের জন্য সোশ্যাল লেয়ার - লেয়ার 0 - এর উপর নির্ভর করা।
-ইথেরিয়ামের PoS কনসেন্সাসের একটি শক্তি হল যে সম্প্রদায় একটি আক্রমণের মুখে [বিভিন্ন ধরনের প্রতিরক্ষামূলক কৌশল](https://youtu.be/1m12zgJ42dI?t=1712) ব্যবহার করতে পারে। একটি ন্যূনতম প্রতিক্রিয়া হতে পারে কোনো অতিরিক্ত জরিমানা ছাড়াই আক্রমণকারীদের ভ্যালিডেটরদের নেটওয়ার্ক থেকে জোরপূর্বক বের করে দেওয়া। নেটওয়ার্কে পুনরায় প্রবেশ করতে, আক্রমণকারীকে একটি অ্যাক্টিভেশন সারিতে যোগ দিতে হবে যা নিশ্চিত করে যে ভ্যালিডেটর সেট ধীরে ধীরে বৃদ্ধি পায়। উদাহরণস্বরূপ, স্টেক করা ইথারের পরিমাণ দ্বিগুণ করার জন্য যথেষ্ট ভ্যালিডেটর যোগ করতে প্রায় ২০০ দিন সময় লাগে, যা আক্রমণকারীকে আরেকটি ৫১% আক্রমণের চেষ্টা করার আগে সৎ ভ্যালিডেটরদের ২০০ দিন সময় দেয়। তবে, সম্প্রদায় আক্রমণকারীকে আরও কঠোরভাবে শাস্তি দেওয়ার সিদ্ধান্ত নিতে পারে, অতীতের পুরস্কার বাতিল করে বা তাদের স্টেক করা মূলধনের কিছু অংশ (১০০% পর্যন্ত) পুড়িয়ে দিয়ে।
+ইথিরিয়ামের PoS কনসেন্সাস এর অন্যতম শক্তি হলো একটি আক্রমণের মুখে কমিউনিটি [প্রতিরক্ষামূলক কৌশলগুলোর একটি পরিসর](https://youtu.be/1m12zgJ42dI?t=1712) নিযুক্ত করতে পারে। একটি ন্যূনতম প্রতিক্রিয়া হতে পারে কোনো অতিরিক্ত জরিমানা ছাড়াই নেটওয়ার্ক থেকে আক্রমণকারীদের ভ্যালিডেটরস দের জোরপূর্বক বের করে দেওয়া। নেটওয়ার্ক এ পুনরায় প্রবেশ করতে আক্রমণকারীকে একটি অ্যাক্টিভেশন সারিতে যোগ দিতে হবে যা নিশ্চিত করে যে ভ্যালিডেটর সেট ধীরে ধীরে বৃদ্ধি পায়। উদাহরণস্বরূপ, স্টেকড ইথারের পরিমাণ দ্বিগুণ করার জন্য পর্যাপ্ত ভ্যালিডেটরস যোগ করতে প্রায় 200 দিন সময় লাগে, কার্যকরভাবে আক্রমণকারী আরেকটি 51% এ্যাটাক চেষ্টা করার আগে সৎ ভ্যালিডেটরস দের 200 দিন কিনে দেয়। যাইহোক, কমিউনিটি আক্রমণকারীকে আরও কঠোরভাবে শাস্তি দেওয়ার সিদ্ধান্ত নিতে পারে, অতীতের পুরস্কার প্রত্যাহার করে বা তাদের স্টেকড মূলধনের কিছু অংশ (100% পর্যন্ত) পুড়িয়ে দিয়ে।
-আক্রমণকারীর উপর যে শাস্তিই আরোপ করা হোক না কেন, সম্প্রদায়কে একসাথে সিদ্ধান্ত নিতে হবে যে অসৎ চেইনটি, ইথেরিয়াম ক্লায়েন্টগুলিতে কোড করা ফর্ক চয়েস অ্যালগরিদম দ্বারা পছন্দসই হওয়া সত্ত্বেও, প্রকৃতপক্ষে অবৈধ এবং সম্প্রদায়কে এর পরিবর্তে সৎ চেইনের উপরে তৈরি করা উচিত। সৎ ভ্যালিডেটররা সম্মিলিতভাবে ইথেরিয়াম ব্লকচেইনের একটি সম্প্রদায়-স্বীকৃত ফর্কের উপর ভিত্তি করে তৈরি করতে সম্মত হতে পারে যা, উদাহরণস্বরূপ, আক্রমণ শুরু হওয়ার আগে ক্যানোনিকাল চেইন থেকে ফর্ক হয়ে গেছে বা আক্রমণকারীদের ভ্যালিডেটরদের জোরপূর্বক অপসারণ করা হয়েছে। সৎ ভ্যালিডেটররা এই চেইনে তৈরি করতে উৎসাহিত হবে কারণ তারা আক্রমণকারীর চেইন অ্যাটেস্ট করতে (সঠিকভাবে) ব্যর্থ হওয়ার জন্য তাদের উপর প্রয়োগ করা জরিমানা এড়াতে পারবে। এক্সচেঞ্জ, অন-র্যাম্প এবং ইথেরিয়ামের উপর নির্মিত অ্যাপ্লিকেশনগুলি সম্ভবত সৎ চেইনে থাকতে পছন্দ করবে এবং সৎ ভ্যালিডেটরদের সৎ ব্লকচেইনে অনুসরণ করবে।
+আক্রমণকারীর উপর যে জরিমানাই আরোপ করা হোক না কেন, কমিউনিটিকে একসাথে সিদ্ধান্ত নিতে হবে যে অসৎ চেইনটি, ইথিরিয়াম ক্লায়েন্ট এ কোড করা ফর্ক চয়েস এ্যালগরিদম দ্বারা পছন্দসই হওয়া সত্ত্বেও, আসলে অবৈধ কিনা এবং কমিউনিটির এর পরিবর্তে সৎ চেইনের উপরে নির্মাণ করা উচিত কিনা। সৎ ভ্যালিডেটরস সম্মিলিতভাবে ইথিরিয়াম ব্লকচেইন এর একটি কমিউনিটি-গৃহীত ফর্কের উপরে নির্মাণ করতে সম্মত হতে পারে যা, উদাহরণস্বরূপ, আক্রমণ শুরু হওয়ার আগে ক্যানোনিকাল চেইন থেকে ফর্ক হয়ে থাকতে পারে বা আক্রমণকারীদের ভ্যালিডেটরস দের জোরপূর্বক সরিয়ে দেওয়া হতে পারে। সৎ ভ্যালিডেটরস দের এই চেইনে নির্মাণ করতে উৎসাহিত করা হবে কারণ তারা আক্রমণকারীর চেইনে এটেস্টেশন করতে (সঠিকভাবে) ব্যর্থ হওয়ার জন্য তাদের উপর প্রয়োগ করা জরিমানা এড়াবে। ইথিরিয়ামের উপর নির্মিত এক্সচেঞ্জ, অন-র্যাম্প এবং অ্যাপ্লিকেশনগুলো সম্ভবত সৎ চেইনে থাকতে পছন্দ করবে এবং সৎ ব্লকচেইন এ সৎ ভ্যালিডেটরস দের অনুসরণ করবে।
-যাইহোক, এটি একটি উল্লেখযোগ্য গভর্নেন্স চ্যালেঞ্জ হবে। কিছু ব্যবহারকারী এবং ভ্যালিডেটর নিঃসন্দেহে সৎ চেইনে ফিরে যাওয়ার ফলে ক্ষতিগ্রস্ত হবে, আক্রমণের পরে ভ্যালিডেট করা ব্লকগুলিতে লেনদেনগুলি সম্ভাব্যভাবে রোল ব্যাক করা যেতে পারে, অ্যাপ্লিকেশন লেয়ারকে ব্যাহত করতে পারে, এবং এটি বেশ সহজভাবে কিছু ব্যবহারকারীর নীতিকে দুর্বল করে যারা বিশ্বাস করে “কোডই আইন”। এক্সচেঞ্জ এবং অ্যাপ্লিকেশনগুলি সম্ভবত অফচেইন অ্যাকশনগুলিকে অনচেইন লেনদেনগুলির সাথে লিঙ্ক করেছে যা এখন রোল ব্যাক করা হতে পারে, যা প্রত্যাহার এবং সংশোধনের একটি ক্যাসকেড শুরু করবে যা ন্যায্যভাবে আনপিক করা কঠিন হবে, বিশেষ করে যদি অবৈধ লাভগুলি মিশ্রিত করা হয়, DeFi বা অন্যান্য ডেরিভেটিভগুলিতে জমা করা হয় যা সৎ ব্যবহারকারীদের জন্য মাধ্যমিক প্রভাব ফেলে। নিঃসন্দেহে কিছু ব্যবহারকারী, এমনকি প্রাতিষ্ঠানিকরাও, ইতিমধ্যেই অসৎ চেইন থেকে চতুরতার মাধ্যমে বা সৌভাগ্যক্রমে উপকৃত হয়েছে, এবং তাদের লাভ রক্ষার জন্য একটি ফর্কের বিরোধিতা করতে পারে। >৫১% আক্রমণের প্রতি সম্প্রদায়ের প্রতিক্রিয়া মহড়া দেওয়ার জন্য আহ্বান জানানো হয়েছে যাতে একটি সংবেদনশীল সমন্বিত প্রশমন দ্রুত কার্যকর করা যায়। Ethresearch.ch-এ Vitalik-এর কিছু দরকারী আলোচনা রয়েছে [এখানে](https://ethresear.ch/t/timeliness-detectors-and-51-attack-recovery-in-blockchains/6925) এবং [এখানে](https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363) এবং টুইটারে [এখানে](https://twitter.com/skylar_eth/status/1551798684727508992?s=20&t=oHZ1xv8QZdOgAXhxZKtHEw)। একটি সমন্বিত সামাজিক প্রতিক্রিয়ার লক্ষ্য হওয়া উচিত আক্রমণকারীকে শাস্তি দেওয়ার এবং অন্যান্য ব্যবহারকারীদের জন্য প্রভাব কমানোর বিষয়ে খুব লক্ষ্যবস্তু এবং নির্দিষ্ট হওয়া।
+যাইহোক, এটি একটি উল্লেখযোগ্য গভর্নেন্স চ্যালেঞ্জ হবে। সৎ চেইনে ফিরে যাওয়ার ফলে কিছু ব্যবহারকারী এবং ভ্যালিডেটরস নিঃসন্দেহে ক্ষতিগ্রস্ত হবে, আক্রমণের পরে ভ্যালিডেট করা ব্লকস এর লেনদেন সম্ভাব্যভাবে রোল ব্যাক করা হতে পারে, যা অ্যাপ্লিকেশন লেয়ারকে ব্যাহত করে, এবং এটি বেশ সহজভাবে কিছু ব্যবহারকারীর নৈতিকতাকে ক্ষুণ্ন করে যারা বিশ্বাস করে যে "কোড ইজ ল"। এক্সচেঞ্জ এবং অ্যাপ্লিকেশনগুলো সম্ভবত অফচেইন কাজগুলোকে অনচেইন লেনদেন এর সাথে যুক্ত করেছে যা এখন রোল ব্যাক করা হতে পারে, প্রত্যাহার এবং সংশোধনের একটি ক্যাসকেড শুরু করে যা ন্যায্যভাবে বাছাই করা কঠিন হবে, বিশেষ করে যদি অবৈধ লাভ মিশ্রিত করা হয়, ডিফাই (DeFi) বা অন্যান্য ডেরিভেটিভস এ জমা করা হয় যার সৎ ব্যবহারকারীদের জন্য গৌণ প্রভাব রয়েছে। নিঃসন্দেহে কিছু ব্যবহারকারী, হয়তো এমনকি প্রাতিষ্ঠানিক ব্যবহারকারীরাও, ইতিমধ্যে চতুর হয়ে বা সৌভাগ্যক্রমে অসৎ চেইন থেকে উপকৃত হয়েছে, এবং তাদের লাভ রক্ষা করার জন্য একটি ফর্কের বিরোধিতা করতে পারে। >51% এ্যাটাক এর প্রতি কমিউনিটির প্রতিক্রিয়া মহড়া দেওয়ার আহ্বান জানানো হয়েছে যাতে একটি সংবেদনশীল সমন্বিত প্রশমন দ্রুত কার্যকর করা যায়। ethresear.ch-এ ভিটালিকের কিছু দরকারী আলোচনা রয়েছে [এখানে](https://ethresear.ch/t/timeliness-detectors-and-51-attack-recovery-in-blockchains/6925) এবং [এখানে](https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363) এবং টুইটারে [এখানে](https://twitter.com/skylar_eth/status/1551798684727508992?s=20&t=oHZ1xv8QZdOgAXhxZKtHEw)। একটি সমন্বিত সামাজিক প্রতিক্রিয়ার লক্ষ্য হওয়া উচিত আক্রমণকারীকে শাস্তি দেওয়ার বিষয়ে খুব লক্ষ্যভিত্তিক এবং নির্দিষ্ট হওয়া এবং অন্যান্য ব্যবহারকারীদের জন্য প্রভাব কমানো।
-গভর্নেন্স ইতিমধ্যেই একটি জটিল বিষয়। একটি অসৎ চূড়ান্তকরণ চেইনের প্রতি একটি লেয়ার-0 জরুরি প্রতিক্রিয়া পরিচালনা করা নিঃসন্দেহে ইথেরিয়াম সম্প্রদায়ের জন্য চ্যালেঞ্জিং হবে, তবে এটি ইথেরিয়ামের ইতিহাসে [ঘটেছে](/ethereum-forks/#dao-fork-summary) - [দুইবার](/ethereum-forks/#tangerine-whistle))।
+গভর্নেন্স ইতিমধ্যে একটি জটিল বিষয়। একটি অসৎ ফাইনাল হওয়া চেইনের প্রতি লেয়ার-0 জরুরি প্রতিক্রিয়া পরিচালনা করা নিঃসন্দেহে ইথিরিয়াম কমিউনিটির জন্য চ্যালেঞ্জিং হবে, তবে এটি ইথিরিয়ামের ইতিহাসে [ঘটেছে](/ethereum-forks/#dao-fork-summary) - [দুবার](/ethereum-forks/#tangerine-whistle)।
-তবুও, মিটস্পেসে বসে থাকা চূড়ান্ত ফলব্যাকে মোটামুটি সন্তোষজনক কিছু রয়েছে। অবশেষে, আমাদের উপরে এই অসাধারণ প্রযুক্তির স্ট্যাক থাকা সত্ত্বেও, যদি সবচেয়ে খারাপ ঘটনাটি ঘটে তবে আসল মানুষদের এটি থেকে বেরিয়ে আসার জন্য সমন্বয় করতে হবে।
+তা সত্ত্বেও, বাস্তব জগতে বসা চূড়ান্ত ফলব্যাকে মোটামুটি সন্তোষজনক কিছু রয়েছে। শেষ পর্যন্ত, আমাদের উপরে প্রযুক্তির এই অভূতপূর্ব স্ট্যাক থাকা সত্ত্বেও, যদি কখনও সবচেয়ে খারাপ কিছু ঘটে তবে প্রকৃত মানুষদের এটি থেকে বেরিয়ে আসার পথ সমন্বয় করতে হবে।
## সারসংক্ষেপ {#summary}
-এই পৃষ্ঠাটি কিছু উপায় অন্বেষণ করেছে যেভাবে আক্রমণকারীরা ইথেরিয়ামের প্রুফ-অফ-স্টেক কনসেন্সাস প্রোটোকলকে কাজে লাগানোর চেষ্টা করতে পারে। মোট স্টেক করা ইথারের ক্রমবর্ধমান অনুপাত সহ আক্রমণকারীদের জন্য রিঅর্গ এবং ফাইনালিটি ডিলে অন্বেষণ করা হয়েছিল। সামগ্রিকভাবে, একজন ধনী আক্রমণকারীর সাফল্যের সম্ভাবনা বেশি কারণ তাদের স্টেক ভোটের ক্ষমতায় রূপান্তরিত হয় যা তারা ভবিষ্যতের ব্লকগুলির বিষয়বস্তুকে প্রভাবিত করতে ব্যবহার করতে পারে। স্টেক করা ইথারের নির্দিষ্ট থ্রেশহোল্ড পরিমাণে, আক্রমণকারীর ক্ষমতা স্তর বৃদ্ধি পায়:
+এই পেজটি কিছু উপায় অন্বেষণ করেছে যা আক্রমণকারীরা ইথিরিয়ামের প্রুফ-অফ-স্টেক কনসেন্সাস প্রটোকল শোষণ করার চেষ্টা করতে পারে। মোট স্টেকড ইথারের ক্রমবর্ধমান অনুপাত সহ আক্রমণকারীদের জন্য রিঅর্গস এবং ফাইনালিটি বিলম্ব অন্বেষণ করা হয়েছিল। সামগ্রিকভাবে, একজন ধনী আক্রমণকারীর সাফল্যের বেশি সুযোগ রয়েছে কারণ তাদের স্টেক ভোটিং ক্ষমতায় অনুবাদ করে যা তারা ভবিষ্যৎ ব্লকস এর বিষয়বস্তুকে প্রভাবিত করতে ব্যবহার করতে পারে। স্টেকড ইথারের নির্দিষ্ট থ্রেশহোল্ড পরিমাণে, আক্রমণকারীর ক্ষমতা বৃদ্ধি পায়:
-৩৩%: ফাইনালিটি ডিলে
+33%: ফাইনালিটি বিলম্ব
-৩৪%: ফাইনালিটি ডিলে, ডাবল ফাইনালিটি
+34%: ফাইনালিটি বিলম্ব, ডাবল ফাইনালিটি
-৫১%: ফাইনালিটি ডিলে, ডাবল ফাইনালিটি, সেন্সরশিপ, ব্লকচেইন ভবিষ্যতের উপর নিয়ন্ত্রণ
+51%: ফাইনালিটি বিলম্ব, ডাবল ফাইনালিটি, সেন্সরশিপ, ব্লকচেইন এর ভবিষ্যতের উপর নিয়ন্ত্রণ
-৬৬%: ফাইনালিটি ডিলে, ডাবল ফাইনালিটি, সেন্সরশিপ, ব্লকচেইন ভবিষ্যত এবং অতীতের উপর নিয়ন্ত্রণ
+66%: ফাইনালিটি বিলম্ব, ডাবল ফাইনালিটি, সেন্সরশিপ, ব্লকচেইন এর ভবিষ্যৎ এবং অতীতের উপর নিয়ন্ত্রণ
-এছাড়াও আরও কিছু অত্যাধুনিক আক্রমণ রয়েছে যার জন্য অল্প পরিমাণে স্টেক করা ইথারের প্রয়োজন হয় কিন্তু একজন খুব অত্যাধুনিক আক্রমণকারীর উপর নির্ভর করে যা সৎ ভ্যালিডেটর সেটকে তাদের পক্ষে প্রভাবিত করার জন্য বার্তা টাইমিংয়ের উপর সূক্ষ্ম নিয়ন্ত্রণ রাখে।
+আরও পরিশীলিত আক্রমণের একটি পরিসর রয়েছে যার জন্য অল্প পরিমাণ স্টেকড ইথার প্রয়োজন তবে সৎ ভ্যালিডেটর সেটকে তাদের পক্ষে প্রভাবিত করার জন্য মেসেজ টাইমিংয়ের উপর সূক্ষ্ম নিয়ন্ত্রণ থাকা একজন অত্যন্ত পরিশীলিত আক্রমণকারীর উপর নির্ভর করে।
-সামগ্রিকভাবে, এই সম্ভাব্য আক্রমণ ভেক্টর সত্ত্বেও একটি সফল আক্রমণের ঝুঁকি কম, অবশ্যই প্রুফ-অফ-ওয়ার্ক সমতুল্যের চেয়ে কম। এর কারণ হল স্টেক করা ইথারের বিশাল খরচ যা একজন আক্রমণকারীর দ্বারা ঝুঁকিতে পড়ে যা তাদের ভোটের ক্ষমতা দিয়ে সৎ ভ্যালিডেটরদের অভিভূত করার লক্ষ্য রাখে। অন্তর্নির্মিত “গাজর এবং লাঠি” প্রণোদনা স্তরটি বেশিরভাগ অসদাচরণের বিরুদ্ধে রক্ষা করে, বিশেষ করে কম-স্টেক আক্রমণকারীদের জন্য। আরও সূক্ষ্ম বাউন্সিং এবং ব্যালান্সিং আক্রমণগুলিও সফল হওয়ার সম্ভাবনা কম কারণ বাস্তব নেটওয়ার্ক শর্তগুলি ভ্যালিডেটরদের নির্দিষ্ট উপসেটগুলিতে বার্তা সরবরাহের সূক্ষ্ম নিয়ন্ত্রণ অর্জন করা খুব কঠিন করে তোলে এবং ক্লায়েন্ট দলগুলি দ্রুত পরিচিত বাউন্সিং, ব্যালান্সিং এবং অ্যাভাল্যাঞ্চ আক্রমণ ভেক্টরগুলি সাধারণ প্যাচ দিয়ে বন্ধ করে দিয়েছে।
+সামগ্রিকভাবে, এই সম্ভাব্য এ্যাটাক ভেক্টরগুলো সত্ত্বেও একটি সফল আক্রমণের ঝুঁকি কম, অবশ্যই প্রুফ-অফ-ওয়ার্ক সমতুল্যগুলোর চেয়ে কম। এর কারণ হলো তাদের ভোটিং ক্ষমতা দিয়ে সৎ ভ্যালিডেটরস দের অভিভূত করার লক্ষ্যে একজন আক্রমণকারী দ্বারা ঝুঁকিতে ফেলা স্টেকড ইথারের বিশাল খরচ। অন্তর্নির্মিত "ক্যারট অ্যান্ড স্টিক" ইনসেন্টিভ লেয়ার বেশিরভাগ অসদাচরণের বিরুদ্ধে রক্ষা করে, বিশেষ করে কম-স্টেক আক্রমণকারীদের জন্য। আরও সূক্ষ্ম বাউন্সিং এবং ব্যালেন্সিং আক্রমণগুলোও সফল হওয়ার সম্ভাবনা কম কারণ বাস্তব নেটওয়ার্ক শর্তগুলো ভ্যালিডেটরস এর নির্দিষ্ট সাবসেটগুলোতে মেসেজ ডেলিভারির সূক্ষ্ম নিয়ন্ত্রণ অর্জন করা খুব কঠিন করে তোলে, এবং ক্লায়েন্ট দলগুলো সাধারণ প্যাচ দিয়ে পরিচিত বাউন্সিং, ব্যালেন্সিং এবং অ্যাভালাঞ্চ এ্যাটাক ভেক্টরগুলো দ্রুত বন্ধ করে দিয়েছে।
-৩৪%, ৫১% বা ৬৬% আক্রমণের জন্য সম্ভবত সমাধানের জন্য ব্যান্ডের বাইরের সামাজিক সমন্বয়ের প্রয়োজন হবে। যদিও এটি সম্প্রদায়ের জন্য বেদনাদায়ক হতে পারে, তবে ব্যান্ডের বাইরে প্রতিক্রিয়া জানানোর একটি সম্প্রদায়ের ক্ষমতা একজন আক্রমণকারীর জন্য একটি শক্তিশালী অনীহা। ইথেরিয়াম সামাজিক লেয়ার হল চূড়ান্ত ব্যাকস্টপ - একটি প্রযুক্তিগতভাবে সফল আক্রমণ এখনও সম্প্রদায় একটি সৎ ফর্ক গ্রহণ করতে সম্মত হয়ে নিষ্ক্রিয় করা যেতে পারে। এটি আক্রমণকারী এবং ইথেরিয়াম সম্প্রদায়ের মধ্যে একটি প্রতিযোগিতা হবে - একটি 66% আক্রমণের জন্য ব্যয় করা বিলিয়ন ডলার সম্ভবত একটি সফল সামাজিক সমন্বয় আক্রমণের মাধ্যমে নিশ্চিহ্ন হয়ে যাবে যদি এটি যথেষ্ট দ্রুত সম্পন্ন করা হয়, যা আক্রমণকারীকে ইথেরিয়াম সম্প্রদায় দ্বারা উপেক্ষা করা একটি পরিচিত অসৎ চেইনে ইলিকুইড স্টেকড ইথারের ভারী ব্যাগসহ রেখে দেবে। এটি আক্রমণকারীর জন্য লাভজনক হওয়ার সম্ভাবনা যথেষ্ট কম যা একটি কার্যকর প্রতিরোধক হিসাবে কাজ করে। এই কারণেই শক্তভাবে সারিবদ্ধ মান সহ একটি সুসংহত সামাজিক স্তর বজায় রাখার জন্য বিনিয়োগ এত গুরুত্বপূর্ণ।
+34%, 51% বা 66% আক্রমণ সমাধানের জন্য সম্ভবত আউট-অফ-ব্যান্ড সামাজিক সমন্বয়ের প্রয়োজন হবে। যদিও এটি সম্ভবত কমিউনিটির জন্য বেদনাদায়ক হবে, একটি কমিউনিটির আউট-অফ-ব্যান্ড প্রতিক্রিয়া জানানোর ক্ষমতা একজন আক্রমণকারীর জন্য একটি শক্তিশালী নিরুৎসাহ। ইথিরিয়াম সোশ্যাল লেয়ার হলো চূড়ান্ত ব্যাকস্টপ - একটি প্রযুক্তিগতভাবে সফল আক্রমণ এখনও কমিউনিটি একটি সৎ ফর্ক গ্রহণ করতে সম্মত হওয়ার মাধ্যমে নিরপেক্ষ করা যেতে পারে। আক্রমণকারী এবং ইথিরিয়াম কমিউনিটির মধ্যে একটি দৌড় হবে - 66% আক্রমণে ব্যয় করা বিলিয়ন ডলার সম্ভবত একটি সফল সামাজিক সমন্বয় আক্রমণ দ্বারা ধ্বংস হয়ে যাবে যদি এটি যথেষ্ট দ্রুত সরবরাহ করা হয়, আক্রমণকারীকে ইথিরিয়াম কমিউনিটি দ্বারা উপেক্ষিত একটি পরিচিত অসৎ চেইনে ইলিকুইড স্টেকড ইথারের ভারী ব্যাগ দিয়ে রেখে যায়। এটি আক্রমণকারীর জন্য লাভজনক হওয়ার সম্ভাবনা যথেষ্ট কম যা একটি কার্যকর প্রতিরোধক হতে পারে। এই কারণেই শক্তভাবে সারিবদ্ধ মানগুলোর সাথে একটি সুসংহত সোশ্যাল লেয়ার বজায় রাখার জন্য বিনিয়োগ এত গুরুত্বপূর্ণ।
## আরও পড়ুন {#further-reading}
-- [এই পৃষ্ঠার আরও বিস্তারিত সংস্করণ](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
-- [নিষ্পত্তির ফাইনালিটি বিষয়ে ভিটালিক](https://blog.ethereum.org/2016/05/09/on-settlement-finality)
+- [এই পেজের আরও বিস্তারিত সংস্করণ](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
+- [সেটেলমেন্ট ফাইনালিটি নিয়ে ভিটালিক](https://blog.ethereum.org/2016/05/09/on-settlement-finality)
- [LMD GHOST গবেষণাপত্র](https://arxiv.org/abs/2003.03052)
-- [Casper-FFG পেপার](https://arxiv.org/abs/1710.09437)
-- [গ্যাসপার গবেষণাপত্র](https://arxiv.org/pdf/2003.03052.pdf)
-- [প্রস্তাবকের ওজন বুস্টিং কনসেন্সাস স্পেকস](https://github.com/ethereum/consensus-specs/pull/2730)
+- [Casper-FFG গবেষণাপত্র](https://arxiv.org/abs/1710.09437)
+- [Gasper গবেষণাপত্র](https://arxiv.org/pdf/2003.03052.pdf)
+- [প্রপোজার ওয়েইট বুস্টিং কনসেন্সাস স্পেকস](https://github.com/ethereum/consensus-specs/pull/2730)
- [ethresear.ch-এ বাউন্সিং আক্রমণ](https://ethresear.ch/t/prevention-of-bouncing-attack-on-ffg/6114)
-- [SSLE গবেষণা](https://ethresear.ch/t/secret-non-single-leader-election/11789)
+- [SSLE গবেষণা](https://ethresear.ch/t/secret-non-single-leader-election/11789)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attestations/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attestations/index.md
index 09ec379b4eb..e2dfb8dcd52 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attestations/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/attestations/index.md
@@ -1,92 +1,92 @@
---
-title: "প্রত্যয়নসমূহ"
-description: "প্রুফ-অফ-স্টেক ইথেরিয়ামের উপর প্রত্যয়নসমূহের একটি বিবরণ।"
+title: এটেস্টেশন
+description: প্রুফ-অফ-স্টেক ইথিরিয়ামে এটেস্টেশনের একটি বিবরণ।
lang: bn
---
-একজন ভ্যালিডেটরের থেকে প্রতিটি ইপকে একটি প্রত্যয়ন তৈরি, স্বাক্ষর এবং ব্রডকাস্ট করার আশা করা হয়। এই পৃষ্ঠাটি রূপরেখা দেয় যে এই প্রত্যয়নসমূহ দেখতে কেমন এবং কীভাবে সেগুলি কনসেন্সাস ক্লায়েন্টদের মধ্যে প্রক্রিয়া করা হয় এবং যোগাযোগ করা হয়।
+প্রতিটি এপোক চলাকালীন একজন ভ্যালিডেটর একটি এটেস্টেশন তৈরি, সাইন এবং ব্রডকাস্ট করবে বলে আশা করা হয়। এই পৃষ্ঠায় এই এটেস্টেশনগুলো দেখতে কেমন এবং কীভাবে এগুলো প্রসেস করা হয় ও কনসেন্সাস ক্লায়েন্ট-এর মধ্যে যোগাযোগ করা হয় তার রূপরেখা দেওয়া হয়েছে।
-## প্রত্যয়ন কী? {#what-is-an-attestation}
+## এটেস্টেশন কী? {#what-is-an-attestation}
-প্রতিটি [ইপকে](/glossary/#epoch) (6.4 মিনিট) একজন ভ্যালিডেটর নেটওয়ার্কে একটি প্রত্যয়ন প্রস্তাব করেন। প্রত্যয়নটি ইপকের একটি নির্দিষ্ট স্লটের জন্য। প্রত্যয়নের উদ্দেশ্য হল ভ্যালিডেটরের চেইনের দৃষ্টিভঙ্গির পক্ষে ভোট দেওয়া, বিশেষ করে সবচেয়ে সাম্প্রতিক জাস্টিফাইড ব্লক এবং বর্তমান ইপকের প্রথম ব্লক (`সোর্স` এবং `টার্গেট` চেকপয়েন্ট হিসাবে পরিচিত)। এই তথ্যটি সমস্ত অংশগ্রহণকারী ভ্যালিডেটরদের জন্য একত্রিত করা হয়, যা নেটওয়ার্ককে ব্লকচেইনের স্টেট সম্পর্কে কনসেন্সাসে পৌঁছাতে সক্ষম করে।
+প্রতিটি [এপোক](/glossary/#epoch) (6.4 মিনিট) একজন ভ্যালিডেটর নেটওয়ার্ক-এ একটি এটেস্টেশন প্রস্তাব করে। এটেস্টেশনটি এপোক-এর একটি নির্দিষ্ট স্লটের জন্য। এটেস্টেশনের উদ্দেশ্য হলো চেইন সম্পর্কে ভ্যালিডেটর-এর দৃষ্টিভঙ্গির পক্ষে ভোট দেওয়া, বিশেষ করে সবচেয়ে সাম্প্রতিক জাস্টিফাইড ব্লক এবং বর্তমান এপোক-এর প্রথম ব্লক (যা `source` এবং `target` চেকপয়েন্ট হিসেবে পরিচিত)। এই তথ্যটি অংশগ্রহণকারী সকল ভ্যালিডেটরস-এর জন্য একত্রিত করা হয়, যা নেটওয়ার্ক-কে ব্লকচেইন-এর স্টেট সম্পর্কে কনসেন্সাস-এ পৌঁছাতে সক্ষম করে।
-প্রত্যয়নটিতে নিম্নলিখিত উপাদানগুলি রয়েছে:
+এটেস্টেশনে নিম্নলিখিত উপাদানগুলো থাকে:
-- `aggregation_bits`: ভ্যালিডেটরদের একটি বিটলিস্ট যেখানে অবস্থানটি তাদের কমিটিতে ভ্যালিডেটর সূচকে ম্যাপ করে; মান (0/1) নির্দেশ করে যে ভ্যালিডেটর `data`-তে স্বাক্ষর করেছেন কিনা (অর্থাৎ, তারা সক্রিয় কিনা এবং ব্লক প্রোপোজারের সাথে একমত কিনা)
-- `data`: প্রত্যয়ন সম্পর্কিত বিবরণ, যেমনটি নীচে সংজ্ঞায়িত করা হয়েছে
-- `signature`: একটি BLS সিগনেচার যা স্বতন্ত্র ভ্যালিডেটরদের সিগনেচার একত্রিত করে
+- `aggregation_bits`: ভ্যালিডেটরস-এর একটি বিটলিস্ট যেখানে অবস্থানটি তাদের কমিটির ভ্যালিডেটর ইনডেক্সের সাথে ম্যাপ করে; মান (0/1) নির্দেশ করে যে ভ্যালিডেটর `data` সাইন করেছে কিনা (অর্থাৎ, তারা সক্রিয় কিনা এবং ব্লক প্রপোজার-এর সাথে একমত কিনা)
+- `data`: এটেস্টেশন সম্পর্কিত বিস্তারিত তথ্য, যা নিচে সংজ্ঞায়িত করা হয়েছে
+- `signature`: একটি BLS সিগনেচার যা পৃথক ভ্যালিডেটরস-এর সিগনেচারগুলোকে একত্রিত করে
-একটি প্রত্যয়নকারী ভ্যালিডেটরের জন্য প্রথম কাজ হল `data` তৈরি করা। `data`-তে নিম্নলিখিত তথ্য রয়েছে:
+একজন এটেস্টিং ভ্যালিডেটর-এর প্রথম কাজ হলো `data` তৈরি করা। `data`-তে নিম্নলিখিত তথ্য থাকে:
-- `slot`: যে স্লট নম্বরটিকে প্রত্যয়নটি উল্লেখ করে
-- `index`: একটি সংখ্যা যা চিহ্নিত করে যে একটি প্রদত্ত স্লটে ভ্যালিডেটর কোন কমিটির অন্তর্গত
-- `beacon_block_root`: চেইনের শীর্ষে ভ্যালিডেটর যে ব্লকটি দেখেন তার রুট হ্যাস (ফর্ক-চয়েস অ্যালগরিদম প্রয়োগের ফল)
-- `source`: ফাইনালিটি ভোটের অংশ যা নির্দেশ করে যে ভ্যালিডেটররা সবচেয়ে সাম্প্রতিক জাস্টিফাইড ব্লক হিসাবে কী দেখছেন
-- `target`: ফাইনালিটি ভোটের অংশ যা নির্দেশ করে যে ভ্যালিডেটররা বর্তমান ইপকের প্রথম ব্লক হিসাবে কী দেখছেন
+- `slot`: স্লট নম্বর যা এটেস্টেশন নির্দেশ করে
+- `index`: একটি নম্বর যা শনাক্ত করে যে একটি নির্দিষ্ট স্লটে ভ্যালিডেটর কোন কমিটির অন্তর্ভুক্ত
+- `beacon_block_root`: চেইনের শীর্ষে ভ্যালিডেটর যে ব্লকটি দেখে তার রুট হ্যাস (ফর্ক-চয়েস এ্যালগরিদম প্রয়োগের ফলাফল)
+- `source`: ফাইনালিটি ভোটের অংশ যা নির্দেশ করে ভ্যালিডেটরস সবচেয়ে সাম্প্রতিক জাস্টিফাইড ব্লক হিসেবে কী দেখছে
+- `target`: ফাইনালিটি ভোটের অংশ যা নির্দেশ করে ভ্যালিডেটরস বর্তমান এপোক-এর প্রথম ব্লক হিসেবে কী দেখছে
-`data` তৈরি হয়ে গেলে, ভ্যালিডেটর তাদের অংশগ্রহণের প্রমাণস্বরূপ `aggregation_bits`-এ তাদের নিজস্ব ভ্যালিডেটর সূচকের সাথে সঙ্গতিপূর্ণ বিটটি 0 থেকে 1-এ ফ্লিপ করতে পারেন।
+একবার `data` তৈরি হয়ে গেলে, ভ্যালিডেটর তাদের নিজস্ব ভ্যালিডেটর ইনডেক্সের সাথে সম্পর্কিত `aggregation_bits`-এর বিটটি 0 থেকে 1-এ পরিবর্তন করতে পারে যাতে তারা অংশগ্রহণ করেছে তা দেখানো যায়।
-অবশেষে, ভ্যালিডেটর প্রত্যয়নটিতে স্বাক্ষর করে এবং এটি নেটওয়ার্কে ব্রডকাস্ট করে।
+সবশেষে, ভ্যালিডেটর এটেস্টেশন সাইন করে এবং এটি নেটওয়ার্ক-এ ব্রডকাস্ট করে।
-### একত্রিত প্রত্যয়ন {#aggregated-attestation}
+### এগ্রিগেটেড এটেস্টেশন {#aggregated-attestation}
-প্রতিটি ভ্যালিডেটরের জন্য নেটওয়ার্কের চারপাশে এই ডেটা পাস করার সাথে একটি উল্লেখযোগ্য ওভারহেড জড়িত। অতএব, স্বতন্ত্র ভ্যালিডেটরদের থেকে প্রত্যয়নসমূহ আরও ব্যাপকভাবে ব্রডকাস্ট করার আগে সাবনেটের মধ্যে একত্রিত করা হয়। এর মধ্যে সিগনেচারগুলিকে একত্রিত করাও অন্তর্ভুক্ত রয়েছে যাতে একটি প্রত্যয়ন যা ব্রডকাস্ট করা হয় তাতে কনসেন্সাস `data` এবং সেই `data`-এর সাথে একমত সমস্ত ভ্যালিডেটরদের সিগনেচার একত্রিত করে গঠিত একটি একক সিগনেচার থাকে। এটি `aggregation_bits` ব্যবহার করে পরীক্ষা করা যেতে পারে কারণ এটি তাদের কমিটিতে প্রতিটি ভ্যালিডেটরের সূচক প্রদান করে (যার আইডি `data`-তে প্রদান করা হয়) যা স্বতন্ত্র সিগনেচারগুলি জিজ্ঞাসা করতে ব্যবহার করা যেতে পারে।
+প্রতিটি ভ্যালিডেটর-এর জন্য নেটওয়ার্ক-এর চারপাশে এই ডেটা পাস করার সাথে একটি উল্লেখযোগ্য ওভারহেড যুক্ত থাকে। তাই, পৃথক ভ্যালিডেটরস-এর এটেস্টেশনগুলো আরও ব্যাপকভাবে ব্রডকাস্ট করার আগে সাবনেটগুলোর মধ্যে একত্রিত (aggregated) করা হয়। এর মধ্যে সিগনেচারগুলো একসাথে একত্রিত করা অন্তর্ভুক্ত থাকে যাতে ব্রডকাস্ট হওয়া একটি এটেস্টেশনে কনসেন্সাস `data` এবং সেই `data`-এর সাথে একমত হওয়া সমস্ত ভ্যালিডেটরস-এর সিগনেচার একত্রিত করে গঠিত একটি একক সিগনেচার অন্তর্ভুক্ত থাকে। এটি `aggregation_bits` ব্যবহার করে চেক করা যেতে পারে কারণ এটি তাদের কমিটিতে প্রতিটি ভ্যালিডেটর-এর ইনডেক্স প্রদান করে (যার আইডি `data`-তে দেওয়া থাকে) যা পৃথক সিগনেচারগুলো কোয়েরি করতে ব্যবহার করা যেতে পারে।
-প্রতিটি ইপকে প্রতিটি সাবনেটে 16 জন ভ্যালিডেটরকে `aggregators` হিসাবে নির্বাচিত করা হয়। অ্যাগ্রিগেটররা গসিপ নেটওয়ার্কের মাধ্যমে শোনা সমস্ত প্রত্যয়ন সংগ্রহ করে যেগুলির `data` তাদের নিজস্ব ডেটার সমতুল্য। প্রতিটি ম্যাচিং প্রত্যয়নের প্রেরককে `aggregation_bits`-এ রেকর্ড করা হয়। অ্যাগ্রিগেটররা তারপর প্রত্যয়নের সমষ্টিটিকে বৃহত্তর নেটওয়ার্কে ব্রডকাস্ট করে।
+প্রতিটি এপোক-এ প্রতিটি সাবনেটের 16 জন ভ্যালিডেটর-কে `aggregators` হিসেবে নির্বাচিত করা হয়। এগ্রিগেটররা গসিপ নেটওয়ার্ক-এর মাধ্যমে শোনা সমস্ত এটেস্টেশন সংগ্রহ করে যেগুলোর `data` তাদের নিজস্ব ডেটার সমতুল্য। প্রতিটি মিলে যাওয়া এটেস্টেশনের প্রেরককে `aggregation_bits`-এ রেকর্ড করা হয়। এরপর এগ্রিগেটররা এটেস্টেশন এগ্রিগেটকে বৃহত্তর নেটওয়ার্ক-এ ব্রডকাস্ট করে।
-যখন একজন ভ্যালিডেটরকে ব্লক প্রোপোজার হিসাবে নির্বাচিত করা হয়, তখন তারা নতুন ব্লকের সর্বশেষ স্লট পর্যন্ত সাবনেট থেকে সমষ্টিগত প্রত্যয়নসমূহ প্যাকেজ করে।
+যখন একজন ভ্যালিডেটর-কে ব্লক প্রপোজার হিসেবে নির্বাচিত করা হয়, তখন তারা সাবনেটগুলো থেকে নতুন ব্লকের সর্বশেষ স্লট পর্যন্ত এগ্রিগেট এটেস্টেশনগুলো প্যাকেজ করে।
-### প্রত্যয়ন অন্তর্ভুক্তির জীবনচক্র {#attestation-inclusion-lifecycle}
+### এটেস্টেশন ইনক্লুশন লাইফসাইকেল {#attestation-inclusion-lifecycle}
-1. জেনারেসন
-2. বিস্তার
-3. একত্রীকরণ
-4. বিস্তার
-5. অন্তর্ভুক্তি
+1. জেনারেশন
+2. প্রোপাগেশন
+3. এগ্রিগেশন
+4. প্রোপাগেশন
+5. ইনক্লুশন
-প্রত্যয়নের জীবনচক্রটি নীচের পরিকল্পিত চিত্রে রূপরেখা দেওয়া হয়েছে:
+এটেস্টেশন লাইফসাইকেলের রূপরেখা নিচের চিত্রে দেওয়া হলো:
-
+
-## পুরস্কার {#rewards}
+## রিওয়ার্ডস {#rewards}
-ভ্যালিডেটররা প্রত্যয়ন জমা দেওয়ার জন্য পুরস্কৃত হন। প্রত্যয়নের পুরস্কার অংশগ্রহণের ফ্ল্যাগ (সোর্স, টার্গেট এবং হেড), বেস রিওয়ার্ড এবং অংশগ্রহণের হারের উপর নির্ভর করে।
+এটেস্টেশন জমা দেওয়ার জন্য ভ্যালিডেটরস-কে পুরস্কৃত করা হয়। এটেস্টেশন রিওয়ার্ড নির্ভর করে পার্টিসিপেশন ফ্ল্যাগ (সোর্স, টার্গেট এবং হেড), বেস রিওয়ার্ড এবং পার্টিসিপেশন রেটের ওপর।
-জমা দেওয়া প্রত্যয়ন এবং এর অন্তর্ভুক্তি বিলম্বের উপর নির্ভর করে অংশগ্রহণের প্রতিটি ফ্ল্যাগ সত্য বা মিথ্যা হতে পারে।
+জমা দেওয়া এটেস্টেশন এবং এর ইনক্লুশন ডিলের ওপর নির্ভর করে প্রতিটি পার্টিসিপেশন ফ্ল্যাগ সত্য (true) বা মিথ্যা (false) হতে পারে।
-সেরা পরিস্থিতিটি ঘটে যখন তিনটি ফ্ল্যাগই সত্য হয়, সেক্ষেত্রে একজন ভ্যালিডেটর উপার্জন করবেন (প্রতিটি সঠিক ফ্ল্যাগের জন্য):
+সবচেয়ে ভালো পরিস্থিতি তখন ঘটে যখন তিনটি ফ্ল্যাগই সত্য হয়, সেক্ষেত্রে একজন ভ্যালিডেটর উপার্জন করবে (প্রতিটি সঠিক ফ্ল্যাগের জন্য):
-`রিওয়ার্ড += বেস রিওয়ার্ড * ফ্ল্যাগ ওয়েট * ফ্ল্যাগ অ্যাটেস্টিং রেট / 64`
+`reward += base reward * flag weight * flag attesting rate / 64`
-ফ্ল্যাগ অ্যাটেস্টিং রেট পরিমাপ করা হয় প্রদত্ত ফ্ল্যাগের জন্য সমস্ত অ্যাটেস্টিং ভ্যালিডেটরের কার্যকর ব্যালেন্সের যোগফলকে মোট সক্রিয় কার্যকর ব্যালেন্সের সাথে তুলনা করে।
+ফ্ল্যাগ এটেস্টিং রেট পরিমাপ করা হয় নির্দিষ্ট ফ্ল্যাগের জন্য সমস্ত এটেস্টিং ভ্যালিডেটরস-এর ইফেক্টিভ ব্যালেন্সের যোগফলকে মোট সক্রিয় ইফেক্টিভ ব্যালেন্সের সাথে তুলনা করে।
-### বেস রিওয়ার্ড {#base-reward}
+### বেস রিওয়ার্ড {#base-reward}
-বেস রিওয়ার্ড গণনা করা হয় অ্যাটেস্টিং ভ্যালিডেটরের সংখ্যা এবং তাদের কার্যকর স্টেক করা ইথার ব্যালেন্স অনুযায়ী:
+বেস রিওয়ার্ড গণনা করা হয় এটেস্টিং ভ্যালিডেটরস-এর সংখ্যা এবং তাদের ইফেক্টিভ স্টেক করা ইথার ব্যালেন্সের ওপর ভিত্তি করে:
-`বেস রিওয়ার্ড = ভ্যালিডেটর কার্যকর ব্যালেন্স x 2^6 / SQRT(সমস্ত সক্রিয় ভ্যালিডেটরের কার্যকর ব্যালেন্স)`
+`base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)`
-#### অন্তর্ভুক্তি বিলম্ব {#inclusion-delay}
+#### ইনক্লুশন ডিলে {#inclusion-delay}
-যে সময়ে ভ্যালিডেটররা চেইনের শীর্ষে (`ব্লক n`) ভোট দিয়েছিলেন, তখন `ব্লক n+1` এখনও প্রস্তাব করা হয়নি। অতএব প্রত্যয়নসমূহ স্বাভাবিকভাবেই **এক ব্লক পরে** অন্তর্ভুক্ত হয় তাই `ব্লক n` চেইনের হেড হওয়ার পক্ষে ভোট দেওয়া সমস্ত প্রত্যয়ন `ব্লক n+1`-এ অন্তর্ভুক্ত হয় এবং, **অন্তর্ভুক্তি বিলম্ব** 1 হয়। যদি অন্তর্ভুক্তি বিলম্ব দ্বিগুণ হয়ে দুটি স্লটে পৌঁছায়, তবে প্রত্যয়নের পুরস্কার অর্ধেক হয়ে যায়, কারণ প্রত্যয়নের পুরস্কার গণনা করতে বেস রিওয়ার্ডকে অন্তর্ভুক্তি বিলম্বের অন্যোন্যক দ্বারা গুণ করা হয়।
+যখন ভ্যালিডেটরস চেইনের হেডে (`block n`) ভোট দিয়েছিল, তখন `block n+1` প্রস্তাব করা হয়নি। তাই এটেস্টেশনগুলো স্বাভাবিকভাবেই **এক ব্লক পরে** অন্তর্ভুক্ত হয়, সুতরাং যে সমস্ত এটেস্টেশন `block n`-কে চেইন হেড হিসেবে ভোট দিয়েছিল সেগুলো `block n+1`-এ অন্তর্ভুক্ত হয় এবং **ইনক্লুশন ডিলে** হয় 1। যদি ইনক্লুশন ডিলে দ্বিগুণ হয়ে দুটি স্লট হয়, তবে এটেস্টেশন রিওয়ার্ড অর্ধেক হয়ে যায়, কারণ এটেস্টেশন রিওয়ার্ড গণনা করার জন্য বেস রিওয়ার্ডকে ইনক্লুশন ডিলের রেসিপ্রোকাল (বিপরীত ভগ্নাংশ) দ্বারা গুণ করা হয়।
-### প্রত্যয়নের পরিস্থিতি {#attestation-scenarios}
+### এটেস্টেশন সিনারিও {#attestation-scenarios}
-#### অনুপস্থিত ভোটিং ভ্যালিডেটর {#missing-voting-validator}
+#### মিসিং ভোটিং ভ্যালিডেটর {#missing-voting-validator}
-ভ্যালিডেটরদের তাদের প্রত্যয়ন জমা দেওয়ার জন্য সর্বোচ্চ 1 ইপক সময় থাকে। যদি ইপক 0-তে প্রত্যয়নটি মিস হয়ে যায়, তবে তারা এটি ইপক 1-এ অন্তর্ভুক্তি বিলম্বের সাথে জমা দিতে পারে।
+ভ্যালিডেটরস-এর কাছে তাদের এটেস্টেশন জমা দেওয়ার জন্য সর্বোচ্চ 1 এপোক সময় থাকে। যদি এপোক 0-তে এটেস্টেশন মিস হয়, তবে তারা এপোক 1-এ ইনক্লুশন ডিলে সহ এটি জমা দিতে পারে।
-#### অনুপস্থিত অ্যাগ্রিগেটর {#missing-aggregator}
+#### মিসিং এগ্রিগেটর {#missing-aggregator}
-মোট প্রতি ইপকে 16 জন অ্যাগ্রিগেটর থাকে। এছাড়াও, র্যান্ডম ভ্যালিডেটররা **256 ইপকের জন্য দুটি সাবনেটে** সাবস্ক্রাইব করে এবং অ্যাগ্রিগেটর অনুপস্থিত থাকলে ব্যাকআপ হিসাবে কাজ করে।
+প্রতি এপোক-এ মোট 16 জন এগ্রিগেটর থাকে। এছাড়া, র্যান্ডম ভ্যালিডেটরস **256 এপোক-এর জন্য দুটি সাবনেটে** সাবস্ক্রাইব করে এবং এগ্রিগেটররা মিসিং থাকলে ব্যাকআপ হিসেবে কাজ করে।
-#### অনুপস্থিত ব্লক প্রোপোজার {#missing-block-proposer}
+#### মিসিং ব্লক প্রপোজার {#missing-block-proposer}
-মনে রাখবেন যে কিছু ক্ষেত্রে একজন ভাগ্যবান অ্যাগ্রিগেটরও ব্লক প্রোপোজার হতে পারে। যদি ব্লক প্রোপোজার অনুপস্থিত থাকার কারণে প্রত্যয়নটি অন্তর্ভুক্ত না করা হয়, তবে পরবর্তী ব্লক প্রোপোজার একত্রিত প্রত্যয়নটি তুলে নিয়ে পরবর্তী ব্লকে অন্তর্ভুক্ত করবে। তবে, **অন্তর্ভুক্তি বিলম্ব** এক বেড়ে যাবে।
+মনে রাখবেন যে কিছু ক্ষেত্রে একজন ভাগ্যবান এগ্রিগেটর ব্লক প্রপোজার-ও হতে পারে। যদি ব্লক প্রপোজার মিসিং হওয়ার কারণে এটেস্টেশন অন্তর্ভুক্ত না হয়, তবে পরবর্তী ব্লক প্রপোজার এগ্রিগেটেড এটেস্টেশনটি তুলে নেবে এবং এটিকে পরবর্তী ব্লকে অন্তর্ভুক্ত করবে। তবে, **ইনক্লুশন ডিলে** এক বেড়ে যাবে।
## আরও পড়ুন {#further-reading}
-- [ভিটালিকের অ্যানোটেটেড কনসেন্সাস স্পেকে প্রত্যয়নসমূহ](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
-- [eth2book.info-তে প্রত্যয়নসমূহ](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)
+- [ভিটালিকের অ্যানোটেটেড কনসেন্সাস স্পেক-এ এটেস্টেশন](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
+- [eth2book.info-তে এটেস্টেশন](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/block-proposal/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
index d867beffdec..1f06f7a4525 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
@@ -1,32 +1,32 @@
---
-title: "ব্লক প্রস্তাব"
-description: "প্রুফ-অফ-স্টেক ইথেরিয়ামে কীভাবে ব্লক প্রস্তাব করা হয় তার ব্যাখ্যা।"
+title: ব্লক প্রপোজাল
+description: প্রুফ-অফ-স্টেক ইথিরিয়ামে কীভাবে ব্লক প্রস্তাব করা হয় তার ব্যাখ্যা।
lang: bn
---
-ব্লকগুলো হল ব্লকচেইনের মৌলিক একক। ব্লকগুলো হল তথ্যের বিচ্ছিন্ন একক যা নোডগুলোর মধ্যে আদান-প্রদান করা হয়, সম্মত হয় এবং প্রতিটি নোডের ডেটাবেসে যোগ করা হয়। এই পেজটি ব্যাখ্যা করে কীভাবে সেগুলি তৈরি করা হয়।
+ব্লকস হলো ব্লকচেইনের মৌলিক একক। ব্লকস হলো তথ্যের বিচ্ছিন্ন একক যা নোডগুলোর মধ্যে আদান-প্রদান করা হয়, কনসেন্সাস বা ঐকমত্যে পৌঁছানো হয় এবং প্রতিটি নোডের ডাটাবেসে যুক্ত করা হয়। এই পৃষ্ঠায় ব্যাখ্যা করা হয়েছে কীভাবে এগুলো তৈরি হয়।
## পূর্বশর্ত {#prerequisites}
-ব্লক প্রস্তাব প্রুফ-অফ-স্টেক প্রোটোকলের একটি অংশ। এই পেজটি বুঝতে সাহায্য করার জন্য, আমরা আপনাকে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) এবং [ব্লক আর্কিটেকচার](/developers/docs/blocks/) সম্পর্কে পড়ার পরামর্শ দিই।
+ব্লক প্রপোজাল হলো প্রুফ-অফ-স্টেক প্রটোকলের একটি অংশ। এই পৃষ্ঠাটি ভালোভাবে বোঝার জন্য, আমরা আপনাকে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) এবং [ব্লক আর্কিটেকচার](/developers/docs/blocks/) সম্পর্কে পড়ার পরামর্শ দিচ্ছি।
-## কারা ব্লক তৈরি করে? {#who-produces-blocks}
+## কে ব্লক তৈরি করে? {#who-produces-blocks}
-ভ্যালিডেটর অ্যাকাউন্টগুলি ব্লক প্রস্তাব করে। ভ্যালিডেটর অ্যাকাউন্টগুলি নোড অপারেটরদের দ্বারা পরিচালিত হয় যারা তাদের এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট-এর অংশ হিসাবে ভ্যালিডেটর সফ্টওয়্যার চালায় এবং ডিপোজিট চুক্তিতে কমপক্ষে 32 ETH জমা করেছে। তবে, প্রতিটি ভ্যালিডেটর শুধুমাত্র মাঝে মাঝে একটি ব্লক প্রস্তাব করার জন্য দায়ী থাকে। ইথেরিয়াম স্লট এবং ইপোক-এ সময় পরিমাপ করে। প্রতিটি স্লট বারো সেকেন্ডের, এবং 32টি স্লট (6.4 মিনিট) মিলে একটি ইপোক তৈরি করে। প্রতিটি স্লট ইথেরিয়ামে একটি নতুন ব্লক যোগ করার একটি সুযোগ।
+ভ্যালিডেটর একাউন্টগুলো ব্লক প্রস্তাব করে। ভ্যালিডেটর একাউন্টগুলো নোড অপারেটরদের দ্বারা পরিচালিত হয়, যারা তাদের এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্টের অংশ হিসেবে ভ্যালিডেটর সফটওয়্যার চালায় এবং ডিপোজিট কন্টাক্টে কমপক্ষে 32 ETH জমা করেছে। তবে, প্রতিটি ভ্যালিডেটর কেবল মাঝে মাঝে একটি ব্লক প্রস্তাব করার জন্য দায়ী থাকে। [ইথিরিয়াম](/) স্লট এবং এপোকের মাধ্যমে সময় পরিমাপ করে। প্রতিটি স্লট হলো বারো সেকেন্ড, এবং 32টি স্লট (6.4 মিনিট) মিলে একটি এপোক তৈরি হয়। প্রতিটি স্লট হলো ইথিরিয়ামে একটি নতুন ব্লক যুক্ত করার সুযোগ।
### র্যান্ডম নির্বাচন {#random-selection}
-প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন একক ভ্যালিডেটর সিউডো-র্যান্ডমভাবে নির্বাচিত হয়। একটি ব্লকচেইনে প্রকৃত র্যান্ডমনেসের মতো কিছু নেই কারণ যদি প্রতিটি নোড প্রকৃত র্যান্ডম সংখ্যা তৈরি করত, তবে তারা কনসেন্সাসে আসতে পারত না। এর পরিবর্তে, লক্ষ্য হল ভ্যালিডেটর নির্বাচন প্রক্রিয়াটিকে অপ্রত্যাশিত করে তোলা। ইথেরিয়ামে র্যান্ডমনেস অর্জন করা হয় RANDAO নামক একটি অ্যালগরিদম ব্যবহার করে যা ব্লক প্রস্তাবকের থেকে একটি হ্যাসকে একটি সিডের সাথে মিশ্রিত করে যা প্রতিটি ব্লকে আপডেট করা হয়। এই মানটি মোট ভ্যালিডেটর সেট থেকে একটি নির্দিষ্ট ভ্যালিডেটর নির্বাচন করতে ব্যবহৃত হয়। নির্দিষ্ট ধরণের সিড ম্যানিপুলেশনের বিরুদ্ধে সুরক্ষার একটি উপায় হিসাবে ভ্যালিডেটর নির্বাচন দুই ইপোক আগে থেকে স্থির করা হয়।
+প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একটিমাত্র ভ্যালিডেটরকে সিউডো-র্যান্ডমভাবে (ছদ্ম-এলোমেলোভাবে) বেছে নেওয়া হয়। ব্লকচেইনে সত্যিকারের র্যান্ডমনেস বা এলোমেলো বলে কিছু নেই, কারণ প্রতিটি নোড যদি সত্যিই এলোমেলো সংখ্যা তৈরি করে, তবে তারা কনসেন্সাসে পৌঁছাতে পারবে না। এর পরিবর্তে, লক্ষ্য হলো ভ্যালিডেটর নির্বাচন প্রক্রিয়াটিকে অপ্রত্যাশিত করে তোলা। ইথিরিয়ামে RANDAO নামক একটি এ্যালগরিদম ব্যবহার করে এই র্যান্ডমনেস অর্জন করা হয়, যা ব্লক প্রপোজারের একটি হ্যাসকে এমন একটি সিডের সাথে মিশ্রিত করে যা প্রতিটি ব্লকে আপডেট হয়। এই মানটি মোট ভ্যালিডেটর সেট থেকে একটি নির্দিষ্ট ভ্যালিডেটর নির্বাচন করতে ব্যবহৃত হয়। নির্দিষ্ট কিছু সিড ম্যানিপুলেশন থেকে রক্ষা পাওয়ার উপায় হিসেবে ভ্যালিডেটর নির্বাচন দুই এপোক আগেই নির্ধারণ করা হয়।
-যদিও ভ্যালিডেটররা প্রতিটি স্লটে RANDAO-তে যোগ করে, গ্লোবাল RANDAO মান প্রতি ইপোকে শুধুমাত্র একবার আপডেট করা হয়। পরবর্তী ব্লক প্রস্তাবকের সূচক গণনা করার জন্য, প্রতিটি স্লটে একটি অনন্য মান দিতে RANDAO মান স্লট নম্বরের সাথে মিশ্রিত করা হয়। একজন স্বতন্ত্র ভ্যালিডেটর নির্বাচিত হওয়ার সম্ভাবনা কেবল `1/N` নয় (যেখানে `N` = মোট সক্রিয় ভ্যালিডেটর)। এর পরিবর্তে, এটি প্রতিটি ভ্যালিডেটরের কার্যকর ETH ব্যালেন্স দ্বারা ওজনযুক্ত হয়। সর্বোচ্চ কার্যকর ব্যালেন্স হল 32 ETH (এর মানে হল `ব্যালেন্স < 32 ETH` হলে `ব্যালেন্স == 32 ETH`-এর চেয়ে কম ওজন হয়, কিন্তু `ব্যালেন্স > 32 ETH` হলে `ব্যালেন্স == 32 ETH`-এর চেয়ে বেশি ওজন হয় না)।
+যদিও ভ্যালিডেটরস প্রতিটি স্লটে RANDAO-তে যোগ করে, গ্লোবাল RANDAO মান প্রতি এপোকে মাত্র একবার আপডেট করা হয়। পরবর্তী ব্লক প্রপোজারের ইনডেক্স গণনা করার জন্য, RANDAO মানটিকে স্লট নম্বরের সাথে মিশ্রিত করে প্রতিটি স্লটে একটি অনন্য মান প্রদান করা হয়। কোনো একটি নির্দিষ্ট ভ্যালিডেটর নির্বাচিত হওয়ার সম্ভাবনা কেবল `1/N` নয় (যেখানে `N` = মোট সক্রিয় ভ্যালিডেটরস)। এর পরিবর্তে, এটি প্রতিটি ভ্যালিডেটরের কার্যকরী ETH ব্যালেন্স দ্বারা ওয়েট বা পরিমাপ করা হয়। সর্বোচ্চ কার্যকরী ব্যালেন্স হলো 32 ETH (এর মানে হলো `balance < 32 ETH` হলে তা `balance == 32 ETH`-এর চেয়ে কম ওয়েট দেয়, কিন্তু `balance > 32 ETH` হলে তা `balance == 32 ETH`-এর চেয়ে বেশি ওয়েট দেয় না)।
-প্রতিটি স্লটে শুধুমাত্র একজন ব্লক প্রস্তাবক নির্বাচিত হয়। স্বাভাবিক পরিস্থিতিতে, একজন একক ব্লক প্রযোজক তাদের নিবেদিত স্লটে একটি একক ব্লক তৈরি করে এবং প্রকাশ করে। একই স্লটের জন্য দুটি ব্লক তৈরি করা একটি স্ল্যাশযোগ্য অপরাধ, যা প্রায়শই "ইকুইভোকেশন" নামে পরিচিত।
+প্রতিটি স্লটে শুধুমাত্র একজন ব্লক প্রপোজার নির্বাচিত হয়। সাধারণ পরিস্থিতিতে, একজন ব্লক প্রডিউসার তাদের নির্ধারিত স্লটে একটিমাত্র ব্লক তৈরি এবং রিলিজ করে। একই স্লটের জন্য দুটি ব্লক তৈরি করা একটি স্ল্যাশেবল অপরাধ, যা প্রায়শই "equivocation" বা দ্ব্যর্থতা হিসেবে পরিচিত।
-## ব্লকটি কীভাবে তৈরি করা হয়? {#how-is-a-block-created}
+## ব্লক কীভাবে তৈরি হয়? {#how-is-a-block-created}
-ব্লক প্রস্তাবকের একটি স্বাক্ষরিত বীকন ব্লক সম্প্রচার করার কথা যা তাদের স্থানীয়ভাবে চালিত ফর্ক পছন্দ অ্যালগরিদমের দৃষ্টিভঙ্গি অনুসারে চেইনের সবচেয়ে সাম্প্রতিক হেডের উপরে তৈরি হয়। ফর্ক পছন্দ অ্যালগরিদম পূর্ববর্তী স্লট থেকে অবশিষ্ট থাকা যেকোনো সারিবদ্ধ অ্যাটেস্টেশন প্রয়োগ করে, তারপর তার ইতিহাসে অ্যাটেস্টেশনের সর্বাধিক সঞ্চিত ওজনসহ ব্লকটি খুঁজে বের করে। সেই ব্লকটি হল প্রস্তাবক দ্বারা তৈরি করা নতুন ব্লকের প্যারেন্ট।
+ব্লক প্রপোজারের কাছে প্রত্যাশা করা হয় যে তারা একটি স্বাক্ষরিত বিকন চেইন ব্লক ব্রডকাস্ট করবে, যা তাদের নিজস্ব লোকাল ফর্ক চয়েস এ্যালগরিদমের ভিউ অনুযায়ী চেইনের সবচেয়ে সাম্প্রতিক হেডের ওপর ভিত্তি করে তৈরি। ফর্ক চয়েস এ্যালগরিদম পূর্ববর্তী স্লট থেকে অবশিষ্ট যেকোনো সারিবদ্ধ এটেস্টেশন প্রয়োগ করে, তারপর এর ইতিহাসে এটেস্টেশনের সবচেয়ে বেশি পুঞ্জীভূত ওয়েট থাকা ব্লকটি খুঁজে বের করে। সেই ব্লকটি হলো প্রপোজার দ্বারা তৈরি নতুন ব্লকের প্যারেন্ট।
-ব্লক প্রস্তাবক তার নিজস্ব স্থানীয় ডেটাবেস এবং চেইনের ভিউ থেকে ডেটা সংগ্রহ করে একটি ব্লক তৈরি করে। ব্লকের বিষয়বস্তু নীচের স্নিপেটে দেখানো হয়েছে:
+ব্লক প্রপোজার তার নিজস্ব লোকাল ডাটাবেস এবং চেইনের ভিউ থেকে ডাটা সংগ্রহ করে একটি ব্লক তৈরি করে। ব্লকের বিষয়বস্তু নিচের স্নিপেটে দেখানো হলো:
```rust
class BeaconBlockBody(Container):
@@ -42,28 +42,28 @@ class BeaconBlockBody(Container):
execution_payload: ExecutionPayload
```
-`randao_reveal` ফিল্ড একটি যাচাইযোগ্য র্যান্ডম মান নেয় যা ব্লক প্রস্তাবক বর্তমান ইপোক নম্বর স্বাক্ষর করে তৈরি করে। `eth1_data` হল ডিপোজিট চুক্তির বিষয়ে ব্লক প্রস্তাবকের দৃষ্টিভঙ্গির জন্য একটি ভোট, যার মধ্যে ডিপোজিট মার্কল ট্রাই-এর রুট এবং মোট ডিপোজিটের সংখ্যা অন্তর্ভুক্ত রয়েছে যা নতুন ডিপোজিট যাচাই করতে সক্ষম করে। `graffiti` একটি ঐচ্ছিক ফিল্ড যা ব্লকে একটি বার্তা যোগ করতে ব্যবহার করা যেতে পারে। `proposer_slashings` এবং `attester_slashings` হল এমন ফিল্ড যেগুলিতে প্রমাণ থাকে যে প্রস্তাবকের চেইন দেখার দৃষ্টিভঙ্গি অনুসারে নির্দিষ্ট ভ্যালিডেটররা স্ল্যাশযোগ্য অপরাধ করেছে। `deposits` হল নতুন ভ্যালিডেটর ডিপোজিটের একটি তালিকা যা সম্পর্কে ব্লক প্রস্তাবক সচেতন, এবং `voluntary_exits` হল এমন ভ্যালিডেটরদের একটি তালিকা যারা প্রস্থান করতে চায়, যাদের সম্পর্কে ব্লক প্রস্তাবক কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কে শুনেছে। `sync_aggregate` হল একটি ভেক্টর যা দেখায় কোন ভ্যালিডেটরদের আগে একটি সিঙ্ক কমিটিতে (ভ্যালিডেটরদের একটি উপসেট যা লাইট ক্লায়েন্ট ডেটা পরিবেশন করে) নিযুক্ত করা হয়েছিল এবং ডেটা স্বাক্ষরে অংশ নিয়েছিল।
+`randao_reveal` ফিল্ডটি একটি যাচাইযোগ্য র্যান্ডম মান গ্রহণ করে যা ব্লক প্রপোজার বর্তমান এপোক নম্বরে স্বাক্ষর করে তৈরি করে। `eth1_data` হলো ডিপোজিট কন্টাক্ট সম্পর্কে ব্লক প্রপোজারের ভিউয়ের জন্য একটি ভোট, যার মধ্যে ডিপোজিট মার্কেল ট্রাইয়ের রুট এবং মোট ডিপোজিটের সংখ্যা অন্তর্ভুক্ত থাকে যা নতুন ডিপোজিট যাচাই করতে সক্ষম করে। `graffiti` হলো একটি ঐচ্ছিক ফিল্ড যা ব্লকে কোনো মেসেজ যোগ করতে ব্যবহার করা যেতে পারে। `proposer_slashings` এবং `attester_slashings` হলো এমন ফিল্ড যেখানে প্রমাণ থাকে যে প্রপোজারের চেইন ভিউ অনুযায়ী নির্দিষ্ট ভ্যালিডেটরস স্ল্যাশেবল অপরাধ করেছে। `deposits` হলো নতুন ভ্যালিডেটর ডিপোজিটের একটি তালিকা যা সম্পর্কে ব্লক প্রপোজার অবগত, এবং `voluntary_exits` হলো এমন ভ্যালিডেটরদের তালিকা যারা প্রস্থান করতে চায় এবং যাদের সম্পর্কে ব্লক প্রপোজার কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কে শুনেছে। `sync_aggregate` হলো একটি ভেক্টর যা দেখায় কোন ভ্যালিডেটরদের আগে একটি সিঙ্ক কমিটিতে (ভ্যালিডেটরদের একটি সাবসেট যা লাইট ক্লায়েন্ট ডাটা পরিবেশন করে) নিযুক্ত করা হয়েছিল এবং ডাটা স্বাক্ষরে অংশগ্রহণ করেছিল।
-`execution_payload` এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টদের মধ্যে লেনদেন সম্পর্কিত তথ্য পাস করতে সক্ষম করে। `execution_payload` হল এক্সিকিউশন ডেটার একটি ব্লক যা একটি বীকন ব্লকের ভিতরে নেস্টেড থাকে। `execution_payload`-এর ভিতরের ফিল্ডগুলি ইথেরিয়াম ইয়োলো পেপারে বর্ণিত ব্লক কাঠামোকে প্রতিফলিত করে, তবে এতে কোনো অমার্স নেই এবং `difficulty`-এর পরিবর্তে `prev_randao` বিদ্যমান। এক্সিকিউশন ক্লায়েন্টের লেনদেনের একটি স্থানীয় পুলে অ্যাক্সেস রয়েছে যা সে তার নিজস্ব গসিপ নেটওয়ার্কে শুনেছে। এই লেনদেনগুলি স্থানীয়ভাবে কার্যকর করা হয় একটি আপডেট করা স্টেট ট্রাই তৈরি করতে যা পোস্ট-স্টেট নামে পরিচিত। লেনদেনগুলি `execution_payload`-এ `transactions` নামক একটি তালিকা হিসাবে অন্তর্ভুক্ত করা হয় এবং পোস্ট-স্টেট `state-root` ফিল্ডে সরবরাহ করা হয়।
+`execution_payload` লেনদেন সম্পর্কিত তথ্য এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্টের মধ্যে আদান-প্রদান করতে সক্ষম করে। `execution_payload` হলো এক্সিকিউশন ডাটার একটি ব্লক যা একটি বিকন চেইন ব্লকের ভেতরে নেস্টেড থাকে। `execution_payload`-এর ভেতরের ফিল্ডগুলো ইথিরিয়াম ইয়েলো পেপারে বর্ণিত ব্লক স্ট্রাকচারকে প্রতিফলিত করে, তবে এতে কোনো ওমার্স (ommers) নেই এবং `difficulty`-এর জায়গায় `prev_randao` বিদ্যমান। এক্সিকিউশন ক্লায়েন্টের কাছে লেনদেনের একটি লোকাল পুলের এক্সেস থাকে যা সে তার নিজস্ব গসিপ নেটওয়ার্কে শুনেছে। এই লেনদেনগুলো লোকালি এক্সিকিউট করে একটি আপডেট করা স্টেট ট্রাই তৈরি করা হয় যা পোস্ট-স্টেট হিসেবে পরিচিত। লেনদেনগুলো `execution_payload`-এ `transactions` নামক একটি তালিকা হিসেবে অন্তর্ভুক্ত করা হয় এবং পোস্ট-স্টেটটি `state-root` ফিল্ডে প্রদান করা হয়।
-এই সমস্ত ডেটা একটি বীকন ব্লকে সংগ্রহ করা হয়, স্বাক্ষরিত হয়, এবং ব্লক প্রস্তাবকের পিয়ারদের কাছে সম্প্রচার করা হয়, যারা এটিকে তাদের পিয়ারদের কাছে প্রচার করে ইত্যাদি।
+এই সমস্ত ডাটা একটি বিকন চেইন ব্লকে সংগ্রহ করা হয়, স্বাক্ষর করা হয় এবং ব্লক প্রপোজারের পিয়ারদের কাছে ব্রডকাস্ট করা হয়, যারা এটি তাদের পিয়ারদের কাছে প্রচার করে, ইত্যাদি।
-[ব্লকের অ্যানাটমি](/developers/docs/blocks) সম্পর্কে আরও পড়ুন।
+[ব্লকের অ্যানাটমি](/developers/docs/blocks) সম্পর্কে আরও পড়ুন।
-## ব্লকের কী হয়? {#what-happens-to-blocks}
+## ব্লকের কী হয়? {#what-happens-to-blocks}
-ব্লকটি ব্লক প্রস্তাবকের স্থানীয় ডেটাবেসে যোগ করা হয় এবং কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কের মাধ্যমে পিয়ারদের কাছে সম্প্রচার করা হয়। যখন একজন ভ্যালিডেটর ব্লকটি গ্রহণ করে, তখন সে এর ভিতরের ডেটা যাচাই করে, যার মধ্যে রয়েছে ব্লকটির সঠিক প্যারেন্ট আছে কিনা, সঠিক স্লটের সাথে মিলে যায় কিনা, প্রস্তাবকের সূচকটি প্রত্যাশিত কিনা, RANDAO রিভিল বৈধ কিনা এবং প্রস্তাবক স্ল্যাশড হয়নি কিনা তা পরীক্ষা করা। `execution_payload` আনবান্ডেল করা হয়, এবং ভ্যালিডেটরের এক্সিকিউশন ক্লায়েন্ট প্রস্তাবিত স্টেট পরিবর্তন পরীক্ষা করার জন্য তালিকার লেনদেনগুলি পুনরায় কার্যকর করে। ধরে নেওয়া হয় যে ব্লকটি এই সমস্ত পরীক্ষায় উত্তীর্ণ হয়েছে, প্রতিটি ভ্যালিডেটর ব্লকটিকে তার নিজস্ব ক্যানোনিকাল চেইনে যোগ করে। প্রক্রিয়াটি তারপর পরবর্তী স্লটে আবার শুরু হয়।
+ব্লকটি ব্লক প্রপোজারের লোকাল ডাটাবেসে যুক্ত করা হয় এবং কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কের মাধ্যমে পিয়ারদের কাছে ব্রডকাস্ট করা হয়। যখন কোনো ভ্যালিডেটর ব্লকটি গ্রহণ করে, তখন সে এর ভেতরের ডাটা যাচাই করে, যার মধ্যে ব্লকের সঠিক প্যারেন্ট আছে কিনা, সঠিক স্লটের সাথে মিলে কিনা, প্রপোজার ইনডেক্স প্রত্যাশিত কিনা, RANDAO রিভিল বৈধ কিনা এবং প্রপোজার স্ল্যাশড হয়নি কিনা তা পরীক্ষা করা অন্তর্ভুক্ত। `execution_payload` আনবান্ডেল করা হয়, এবং ভ্যালিডেটরের এক্সিকিউশন ক্লায়েন্ট প্রস্তাবিত স্টেট পরিবর্তন পরীক্ষা করার জন্য তালিকার লেনদেনগুলো পুনরায় এক্সিকিউট করে। ব্লকটি এই সমস্ত পরীক্ষায় উত্তীর্ণ হয়েছে ধরে নিয়ে, প্রতিটি ভ্যালিডেটর ব্লকটিকে তার নিজস্ব ক্যানোনিকাল চেইনে যুক্ত করে। এরপর পরবর্তী স্লটে প্রক্রিয়াটি আবার শুরু হয়।
-## ব্লক রিওয়ার্ডস {#block-rewards}
+## ব্লক রিওয়ার্ড {#block-rewards}
-ব্লক প্রস্তাবক তাদের কাজের জন্য পেমেন্ট পায়। সক্রিয় ভ্যালিডেটরের সংখ্যা এবং তাদের কার্যকর ব্যালেন্সের একটি ফাংশন হিসাবে একটি `base_reward` গণনা করা হয়। ব্লক প্রস্তাবক তারপর ব্লকে অন্তর্ভুক্ত প্রতিটি বৈধ অ্যাটেস্টেশনের জন্য `base_reward`-এর একটি ভগ্নাংশ পায়; যত বেশি ভ্যালিডেটর ব্লকটিকে অ্যাটেস্ট করে, ব্লক প্রস্তাবকের রিওয়ার্ড তত বেশি হয়। যে ভ্যালিডেটরদের স্ল্যাশ করা উচিত তাদের রিপোর্ট করার জন্যও একটি রিওয়ার্ড রয়েছে, যা প্রতিটি স্ল্যাশড ভ্যালিডেটরের জন্য `1/512 * কার্যকর ব্যালেন্স`-এর সমান।
+ব্লক প্রপোজার তাদের কাজের জন্য পেমেন্ট পায়। সক্রিয় ভ্যালিডেটরস এবং তাদের কার্যকরী ব্যালেন্সের সংখ্যার ওপর ভিত্তি করে একটি `base_reward` গণনা করা হয়। এরপর ব্লক প্রপোজার ব্লকে অন্তর্ভুক্ত প্রতিটি বৈধ এটেস্টেশনের জন্য `base_reward`-এর একটি ভগ্নাংশ পায়; যত বেশি ভ্যালিডেটরস ব্লকে এটেস্ট করে, ব্লক প্রপোজারের রিওয়ার্ড তত বেশি হয়। যেসব ভ্যালিডেটরদের স্ল্যাশ করা উচিত তাদের রিপোর্ট করার জন্যও একটি রিওয়ার্ড রয়েছে, যা প্রতিটি স্ল্যাশড ভ্যালিডেটরের জন্য `1/512 * effective balance`-এর সমান।
-[রিওয়ার্ড এবং পেনাল্টি সম্পর্কে আরও](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
+[রিওয়ার্ড এবং পেনাল্টি সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ব্লকের পরিচিতি](/developers/docs/blocks/)
-- [প্রুফ-অফ-স্টেক-এর পরিচিতি](/developers/docs/consensus-mechanisms/pos/)
-- [ইথেরিয়াম কনসেন্সাস স্পেকস](https://github.com/ethereum/consensus-specs)
-- [গ্যাসপারের পরিচিতি](/developers/docs/consensus-mechanisms/pos/gasper/)
-- [ইথেরিয়াম আপগ্রেড করা](https://eth2book.info/)
+- [ব্লকস পরিচিতি](/developers/docs/blocks/)
+- [প্রুফ-অফ-স্টেক পরিচিতি](/developers/docs/consensus-mechanisms/pos/)
+- [ইথিরিয়াম কনসেন্সাস স্পেকস](https://github.com/ethereum/consensus-specs)
+- [গ্যাসপার (Gasper) পরিচিতি](/developers/docs/consensus-mechanisms/pos/gasper/)
+- [আপগ্রেডিং ইথিরিয়াম](https://eth2book.info/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/faqs/index.md
index 632988b27e0..1ef40caa8e7 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/faqs/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/faqs/index.md
@@ -1,172 +1,172 @@
---
-title: "বহুল জিজ্ঞাসিত প্রশ্নাবলী"
-description: "প্রুফ-অফ-স্টেক ইথেরিয়াম-এর উপর বহুল জিজ্ঞাসিত প্রশ্নাবলী।"
+title: সচরাচর জিজ্ঞাসিত প্রশ্নাবলী
+description: প্রুফ-অফ-স্টেক ইথিরিয়াম সম্পর্কে সচরাচর জিজ্ঞাসিত প্রশ্নাবলী।
lang: bn
---
## প্রুফ-অফ-স্টেক কী {#what-is-proof-of-stake}
-প্রুফ-অফ-স্টেক হল এক শ্রেণীর অ্যালগরিদম যা ব্লকচেইনকে সুরক্ষা প্রদান করতে পারে এটি নিশ্চিত করার মাধ্যমে যে, যে সমস্ত আক্রমণকারীরা অসৎভাবে কাজ করে তাদের মূল্যবান সম্পদগুলি হারিয়ে যায়। প্রুফ-অফ-স্টেক সিস্টেমের জন্য এক সেট ভ্যালিডেটরের প্রয়োজন হয় কিছু সম্পদ উপলব্ধ করার জন্য যা ধ্বংস করা যেতে পারে যদি ভ্যালিডেটর কোনো প্রমাণিত অসৎ আচরণে জড়িত থাকে। ইথেরিয়াম ব্লকচেইনকে সুরক্ষিত করতে একটি প্রুফ-অফ-স্টেক মেকানিজম ব্যবহার করে।
+প্রুফ-অফ-স্টেক হলো এমন এক ধরণের এ্যালগরিদম যা ব্লকচেইন-এ নিরাপত্তা প্রদান করতে পারে, এটি নিশ্চিত করে যে অসৎভাবে কাজ করা আক্রমণকারীরা তাদের মূল্যবান সম্পদ হারাবে। প্রুফ-অফ-স্টেক সিস্টেমে ভ্যালিডেটরস-এর একটি সেটের প্রয়োজন হয় যারা কিছু সম্পদ জমা রাখে, যা ধ্বংস করা যেতে পারে যদি ভ্যালিডেটর কোনো প্রমাণিত অসৎ আচরণে লিপ্ত হয়। ইথিরিয়াম ব্লকচেইন সুরক্ষিত করতে একটি প্রুফ-অফ-স্টেক মেকানিজম ব্যবহার করে।
-## প্রুফ-অফ-ওয়ার্ক-এর সাথে প্রুফ-অফ-স্টেক-এর তুলনা কেমন? {#comparison-to-proof-of-work}
+## প্রুফ-অফ-ওয়ার্ক-এর তুলনায় প্রুফ-অফ-স্টেক কেমন? {#comparison-to-proof-of-work}
-প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক উভয়ই এমন পদ্ধতি যা ক্ষতিকারক অভিনেতাদের নেটওয়ার্কে স্প্যামিং বা প্রতারণা করা থেকে অর্থনৈতিকভাবে নিরুৎসাহিত করে। উভয় ক্ষেত্রেই, যে নোডগুলি সক্রিয়ভাবে কনসেন্সাস-এ অংশগ্রহণ করে তারা কিছু সম্পদ "নেটওয়ার্কে" রাখে যা তারা খারাপ আচরণ করলে হারাবে।
+প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক উভয়ই এমন মেকানিজম যা ক্ষতিকারক ব্যবহারকারীদের নেটওয়ার্ক-এ স্প্যামিং বা প্রতারণা করা থেকে অর্থনৈতিকভাবে নিরুৎসাহিত করে। উভয় ক্ষেত্রেই, কনসেন্সাস-এ সক্রিয়ভাবে অংশগ্রহণকারী নোডগুলো "নেটওয়ার্ক-এ" কিছু সম্পদ জমা রাখে যা তারা অসদাচরণ করলে হারাবে।
-প্রুফ-অফ-ওয়ার্ক-এ, এই সম্পদটি হল শক্তি। নোড, যা মাইনার হিসাবে পরিচিত, একটি অ্যালগরিদম চালায় যার লক্ষ্য অন্য যেকোনো নোডের চেয়ে দ্রুত একটি মান গণনা করা। দ্রুততম নোডের চেইনে একটি ব্লক প্রস্তাব করার অধিকার রয়েছে। চেইনের ইতিহাস পরিবর্তন করতে বা ব্লক প্রস্তাবে আধিপত্য বিস্তার করতে, একজন মাইনারকে এত বেশি কম্পিউটিং শক্তি থাকতে হবে যে তারা সবসময় রেসে জয়ী হয়। এটি কার্যকর করার জন্য অত্যধিক ব্যয়বহুল এবং কঠিন, যা চেইনকে আক্রমণ থেকে রক্ষা করে। প্রুফ-অফ-ওয়ার্ক ব্যবহার করে "মাইন" করার জন্য প্রয়োজনীয় শক্তি একটি বাস্তব-বিশ্বের সম্পদ যার জন্য মাইনাররা অর্থ প্রদান করে।
+প্রুফ-অফ-ওয়ার্ক-এ, এই সম্পদটি হলো শক্তি (এনার্জি)। মাইনার হিসেবে পরিচিত নোড একটি এ্যালগরিদম চালায় যার লক্ষ্য অন্য যেকোনো নোড-এর চেয়ে দ্রুত একটি মান গণনা করা। সবচেয়ে দ্রুততম নোড-এর চেইনে একটি ব্লক প্রস্তাব করার অধিকার থাকে। চেইনের ইতিহাস পরিবর্তন করতে বা ব্লক প্রস্তাবে আধিপত্য বিস্তার করতে, একজন মাইনারের এত বেশি কম্পিউটিং শক্তি থাকতে হবে যাতে তারা সবসময় প্রতিযোগিতায় জয়ী হয়। এটি অত্যন্ত ব্যয়বহুল এবং কার্যকর করা কঠিন, যা চেইনকে আক্রমণ থেকে রক্ষা করে। প্রুফ-অফ-ওয়ার্ক ব্যবহার করে "মাইন" করার জন্য প্রয়োজনীয় শক্তি হলো একটি বাস্তব-জগতের সম্পদ যার জন্য মাইনাররা অর্থ প্রদান করে।
-প্রুফ-অফ-স্টেক-এর জন্য নোড, যা ভ্যালিডেটর হিসাবে পরিচিত, তাদের একটি স্মার্ট কন্ট্র্যাক্ট-এ স্পষ্টভাবে একটি ক্রিপ্টো সম্পদ জমা দিতে হয়। যদি কোনো ভ্যালিডেটর খারাপ আচরণ করে, তাহলে এই ক্রিপ্টোটি ধ্বংস হয়ে যেতে পারে কারণ তারা শক্তির ব্যয়ের মাধ্যমে পরোক্ষভাবে না করে সরাসরি চেইনে তাদের সম্পদ "স্টেকিং" করছে।
+প্রুফ-অফ-স্টেক-এ ভ্যালিডেটরস হিসেবে পরিচিত নোডগুলোকে একটি স্মার্ট কন্ট্রাক্ট-এ ক্রিপ্টো সম্পদ জমা দিতে হয়। যদি কোনো ভ্যালিডেটর অসদাচরণ করে, তবে এই ক্রিপ্টো ধ্বংস করা যেতে পারে কারণ তারা শক্তির ব্যয়ের মাধ্যমে পরোক্ষভাবে না করে সরাসরি চেইনে তাদের সম্পদ "স্টেকিং" করছে।
-প্রুফ-অফ-ওয়ার্ক অনেক বেশি শক্তি-ক্ষুধার্ত কারণ মাইনিং প্রক্রিয়ায় বিদ্যুৎ পোড়ানো হয়। অন্যদিকে, প্রুফ-অফ-স্টেক-এর জন্য খুব অল্প পরিমাণে শক্তির প্রয়োজন হয় - ইথেরিয়াম ভ্যালিডেটররা এমনকি Raspberry Pi-এর মতো কম-শক্তিসম্পন্ন ডিভাইসেও চলতে পারে। ইথেরিয়াম-এর প্রুফ-অফ-স্টেক পদ্ধতিকে প্রুফ-অফ-ওয়ার্কের চেয়ে বেশি সুরক্ষিত বলে মনে করা হয় কারণ আক্রমণের খরচ বেশি এবং আক্রমণকারীর জন্য পরিণতি আরও গুরুতর।
+প্রুফ-অফ-ওয়ার্ক অনেক বেশি শক্তি-নির্ভর কারণ মাইনিং প্রক্রিয়ায় বিদ্যুৎ পোড়ানো হয়। অন্যদিকে, প্রুফ-অফ-স্টেক-এ খুব সামান্য পরিমাণ শক্তির প্রয়োজন হয় - ইথিরিয়াম ভ্যালিডেটরস এমনকি Raspberry Pi-এর মতো কম-ক্ষমতাসম্পন্ন ডিভাইসেও চলতে পারে। ইথিরিয়াম-এর প্রুফ-অফ-স্টেক মেকানিজম প্রুফ-অফ-ওয়ার্ক-এর চেয়ে বেশি সুরক্ষিত বলে মনে করা হয় কারণ আক্রমণের খরচ বেশি এবং আক্রমণকারীর জন্য পরিণতি আরও গুরুতর।
-প্রুফ-অফ-ওয়ার্ক বনাম প্রুফ-অফ-স্টেক একটি বিতর্কিত বিষয়। [Vitalik Buterin-এর ব্লগ](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work) এবং Justin Drake ও Lyn Alden-এর মধ্যে বিতর্কটি যুক্তিগুলির একটি ভাল সারসংক্ষেপ দেয়।
+প্রুফ-অফ-ওয়ার্ক বনাম প্রুফ-অফ-স্টেক একটি বিতর্কিত বিষয়। [Vitalik Buterin-এর ব্লগ](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work) এবং Justin Drake ও Lyn Alden-এর মধ্যকার বিতর্ক যুক্তিগুলোর একটি ভালো সারসংক্ষেপ প্রদান করে।
-## প্রুফ-অফ-স্টেক কি শক্তি-সাশ্রয়ী? {#is-pos-energy-efficient}
+## প্রুফ-অফ-স্টেক কি শক্তি সাশ্রয়ী? {#is-pos-energy-efficient}
-হ্যাঁ। প্রুফ অফ স্টেকের নোডগুলো কিছু পরিমান এনার্জি ব্যবহার করে থাকে। একটি তৃতীয় পক্ষের সমীক্ষা এই সিদ্ধান্তে উপনীত হয়েছে যে সম্পূর্ণ প্রুফ-অফ-স্টেক ইথেরিয়াম নেটওয়ার্ক বছরে প্রায় 0.0026 TWh খরচ করে - যা শুধুমাত্র মার্কিন যুক্তরাষ্ট্রে গেমিংয়ের থেকে প্রায় 13,000 গুণ কম।
+হ্যাঁ। একটি প্রুফ-অফ-স্টেক নেটওয়ার্ক-এর নোডগুলো খুব সামান্য পরিমাণ শক্তি ব্যবহার করে। একটি তৃতীয়-পক্ষের গবেষণায় উপসংহারে আসা হয়েছে যে সম্পূর্ণ প্রুফ-অফ-স্টেক ইথিরিয়াম নেটওয়ার্ক বছরে প্রায় 0.0026 TWh শক্তি খরচ করে - যা শুধুমাত্র মার্কিন যুক্তরাষ্ট্রে গেমিংয়ের চেয়ে প্রায় 13,000 গুণ কম।
-[ইথেরিয়াম-এর শক্তি খরচ সম্পর্কে আরও জানুন](/energy-consumption/)।
+[ইথিরিয়াম-এর শক্তি খরচ সম্পর্কে আরও জানুন](/energy-consumption/)।
## প্রুফ-অফ-স্টেক কি সুরক্ষিত? {#is-pos-secure}
-ইথেরিয়াম-এর প্রুফ-অফ-স্টেক খুবই সুরক্ষিত। লাইভ হওয়ার আগে আট বছরেরও বেশি সময় ধরে এই পদ্ধতিটি নিয়ে গবেষণা করা হয়েছিল, বিকশিত করা হয়েছিল এবং কঠোরভাবে পরীক্ষা করা হয়েছিল। নিরাপত্তার গ্যারান্টিগুলি প্রুফ-অফ-ওয়ার্ক ব্লকচেইন থেকে ভিন্ন। প্রুফ-অফ-স্টেক-এ, দূষিত ভ্যালিডেটরদের সক্রিয়ভাবে শাস্তি ("স্ল্যাশড") দেওয়া যেতে পারে এবং ভ্যালিডেটর সেট থেকে বের করে দেওয়া যেতে পারে, যার ফলে যথেষ্ট পরিমাণে ETH খরচ হয়। প্রুফ-অফ-ওয়ার্ক-এর অধীনে, একজন আক্রমণকারী যতক্ষণ পর্যন্ত তাদের পর্যাপ্ত হ্যাস শক্তি থাকবে ততক্ষণ তাদের আক্রমণ পুনরাবৃত্তি করতে পারে। প্রুফ-অফ-ওয়ার্কের তুলনায় প্রুফ-অফ-স্টেক ইথেরিয়াম-এ সমতুল্য আক্রমণ চালানো আরও ব্যয়বহুল। চেইনের লাইভনেসকে প্রভাবিত করতে, নেটওয়ার্কে মোট স্টেক করা ইথারের কমপক্ষে 33% প্রয়োজন (খুবই পরিশীলিত আক্রমণের ক্ষেত্রে ছাড়া যেখানে সাফল্যের সম্ভাবনা অত্যন্ত কম)। ভবিষ্যতের ব্লকের বিষয়বস্তু নিয়ন্ত্রণ করতে, মোট স্টেক করা ETH-এর কমপক্ষে 51% প্রয়োজন এবং ইতিহাস পুনরায় লিখতে, মোট স্টেক-এর 66%-এর বেশি প্রয়োজন। ইথেরিয়াম প্রোটোকল 33% বা 51% আক্রমণের পরিস্থিতিতে এই সম্পদগুলিকে ধ্বংস করে দেবে এবং 66% আক্রমণের পরিস্থিতিতে সামাজিক কনসেন্সাস দ্বারা ধ্বংস করবে।
+ইথিরিয়াম-এর প্রুফ-অফ-স্টেক অত্যন্ত সুরক্ষিত। লাইভ হওয়ার আগে আট বছর ধরে এই মেকানিজমটি নিয়ে গবেষণা, উন্নয়ন এবং কঠোরভাবে পরীক্ষা করা হয়েছে। এর নিরাপত্তা গ্যারান্টি প্রুফ-অফ-ওয়ার্ক ব্লকচেইন থেকে আলাদা। প্রুফ-অফ-স্টেক-এ, ক্ষতিকারক ভ্যালিডেটরস-কে সক্রিয়ভাবে শাস্তি দেওয়া ("স্ল্যাশিং") এবং ভ্যালিডেটর সেট থেকে বের করে দেওয়া যেতে পারে, যার ফলে তাদের উল্লেখযোগ্য পরিমাণ ETH হারাতে হয়। প্রুফ-অফ-ওয়ার্ক-এর অধীনে, একজন আক্রমণকারী পর্যাপ্ত হ্যাস পাওয়ার থাকা অবস্থায় তাদের আক্রমণ চালিয়ে যেতে পারে। প্রুফ-অফ-ওয়ার্ক-এর তুলনায় প্রুফ-অফ-স্টেক ইথিরিয়াম-এ সমতুল্য আক্রমণ চালানোও বেশি ব্যয়বহুল। চেইনের সজীবতা (liveness) প্রভাবিত করতে, নেটওয়ার্ক-এ মোট স্টেক করা ইথারের কমপক্ষে 33% প্রয়োজন (অত্যন্ত কম সাফল্যের সম্ভাবনাসম্পন্ন খুব জটিল আক্রমণের ক্ষেত্রগুলো ছাড়া)। ভবিষ্যতের ব্লকস-এর বিষয়বস্তু নিয়ন্ত্রণ করতে, মোট স্টেক করা ETH-এর কমপক্ষে 51% প্রয়োজন, এবং ইতিহাস পুনরায় লিখতে, মোট স্টেক-এর 66%-এর বেশি প্রয়োজন। ইথিরিয়াম প্রটোকল 33% বা 51% আক্রমণের পরিস্থিতিতে এই সম্পদগুলো ধ্বংস করে দেবে এবং 66% আক্রমণের পরিস্থিতিতে সামাজিক কনসেন্সাস-এর মাধ্যমে তা করবে।
-- [আক্রমণকারীদের থেকে ইথেরিয়াম প্রুফ-অফ-স্টেক রক্ষা করার বিষয়ে আরও জানুন](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
+- [আক্রমণকারীদের হাত থেকে ইথিরিয়াম প্রুফ-অফ-স্টেক রক্ষা করা সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
- [প্রুফ-অফ-স্টেক ডিজাইন সম্পর্কে আরও জানুন](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51)
-## প্রুফ-অফ-স্টেক কি ইথেরিয়াম-কে সস্তা করে? {#does-pos-make-ethereum-cheaper}
+## প্রুফ-অফ-স্টেক কি ইথিরিয়াম-কে সস্তা করে তোলে? {#does-pos-make-ethereum-cheaper}
-না। একটি লেনদেন পাঠানোর খরচ (গ্যাস ফি) একটি ডাইনামিক ফি মার্কেট দ্বারা নির্ধারিত হয় যা নেটওয়ার্কের চাহিদা বাড়ার সাথে সাথে বৃদ্ধি পায়। কনসেন্সাস পদ্ধতি এটিকে সরাসরি প্রভাবিত করে না।
+না। একটি লেনদেন পাঠানোর খরচ (গ্যাস ফি) একটি ডায়নামিক ফি মার্কেট দ্বারা নির্ধারিত হয় যা নেটওয়ার্ক-এর চাহিদা বাড়ার সাথে সাথে বৃদ্ধি পায়। কনসেন্সাস মেকানিজম সরাসরি এটিকে প্রভাবিত করে না।
[গ্যাস সম্পর্কে আরও জানুন](/developers/docs/gas)।
-## নোড, ক্লায়েন্ট এবং ভ্যালিডেটর কী? {#what-are-nodes-clients-and-validators}
+## নোড, ক্লায়েন্ট এবং ভ্যালিডেটরস কী? {#what-are-nodes-clients-and-validators}
-নোড হল ইথেরিয়াম নেটওয়ার্কের সাথে সংযুক্ত কম্পিউটার। ক্লায়েন্ট হল সেই সফ্টওয়্যার যা তারা চালায় যা কম্পিউটারকে একটি নোডে পরিণত করে। দুই ধরনের ক্লায়েন্ট আছে: এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট। একটি নোড তৈরি করতে উভয়ই প্রয়োজন। একটি ভ্যালিডেটর হল কনসেন্সাস ক্লায়েন্টের একটি ঐচ্ছিক অ্যাড-অন যা নোডকে প্রুফ-অফ-স্টেক কনসেন্সাসে অংশগ্রহণ করতে সক্ষম করে। এর অর্থ হল নির্বাচিত হলে ব্লক তৈরি এবং প্রস্তাব করা এবং নেটওয়ার্কে শোনা ব্লকগুলির প্রত্যয়ন করা। একটি ভ্যালিডেটর চালানোর জন্য, নোড অপারেটরকে ডিপোজিট কন্ট্রাক্টে 32 ETH জমা দিতে হবে।
+নোড হলো ইথিরিয়াম নেটওয়ার্ক-এর সাথে সংযুক্ত কম্পিউটার। ক্লায়েন্ট হলো সেই সফটওয়্যার যা তারা চালায় এবং যা কম্পিউটারকে একটি নোড-এ পরিণত করে। দুই ধরণের ক্লায়েন্ট রয়েছে: এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট। একটি নোড তৈরি করতে উভয়েরই প্রয়োজন। ভ্যালিডেটর হলো কনসেন্সাস ক্লায়েন্ট-এর একটি ঐচ্ছিক অ্যাড-অন যা নোড-কে প্রুফ-অফ-স্টেক কনসেন্সাস-এ অংশগ্রহণ করতে সক্ষম করে। এর মানে হলো নির্বাচিত হলে ব্লকস তৈরি করা এবং প্রস্তাব করা এবং নেটওয়ার্ক-এ শোনা ব্লকস-এর এটেস্টেশন করা। একটি ভ্যালিডেটর চালানোর জন্য, নোড অপারেটরকে অবশ্যই ডিপোজিট কন্টাক্ট-এ 32 ETH জমা দিতে হবে।
-- [নোড এবং ক্লায়েন্ট সম্পর্কে আরও জানুন](/developers/docs/nodes-and-clients)
+- [নোড এবং ক্লায়েন্ট সম্পর্কে আরও জানুন](/developers/docs/nodes-and-clients)
- [স্টেকিং সম্পর্কে আরও জানুন](/staking)
## প্রুফ-অফ-স্টেক কি একটি নতুন ধারণা? {#is-pos-new}
-না। BitcoinTalk-এর একজন ব্যবহারকারী 2011 সালে Bitcoin-এর একটি আপগ্রেড হিসাবে [প্রুফ-অফ-স্টেক-এর মূল ধারণাটি প্রস্তাব করেছিলেন](https://bitcointalk.org/index.php?topic=27787.0)। ইথেরিয়াম মেইননেটে এটি বাস্তবায়নের জন্য প্রস্তুত হওয়ার আগে এগারো বছর লেগেছিল। কিছু অন্যান্য চেইন ইথেরিয়ামের আগে প্রুফ-অফ-স্টেক বাস্তবায়ন করেছিল, কিন্তু ইথেরিয়ামের নির্দিষ্ট মেকানিজম (Gasper নামে পরিচিত) নয়।
+না। BitcoinTalk-এর একজন ব্যবহারকারী 2011 সালে বিটকয়েন-এর আপগ্রেড হিসেবে [প্রুফ-অফ-স্টেক-এর প্রাথমিক ধারণা প্রস্তাব করেছিলেন](https://bitcointalk.org/index.php?topic=27787.0)। ইথিরিয়াম মেইননেট-এ এটি বাস্তবায়নের জন্য প্রস্তুত হতে এগারো বছর সময় লেগেছিল। অন্য কিছু চেইন ইথিরিয়াম-এর আগেই প্রুফ-অফ-স্টেক বাস্তবায়ন করেছিল, কিন্তু ইথিরিয়াম-এর নির্দিষ্ট মেকানিজম (যা Gasper নামে পরিচিত) নয়।
-## ইথেরিয়াম-এর প্রুফ-অফ-স্টেক-এর বিশেষত্ব কী? {#why-is-ethereum-pos-special}
+## ইথিরিয়াম-এর প্রুফ-অফ-স্টেক-এর বিশেষত্ব কী? {#why-is-ethereum-pos-special}
-ইথেরিয়াম-এর প্রুফ-অফ-স্টেক পদ্ধতিটি তার ডিজাইনে অনন্য। এটি ডিজাইন এবং বাস্তবায়িত প্রথম প্রুফ-অফ-স্টেক পদ্ধতি ছিল না, তবে এটি সবচেয়ে শক্তিশালী। প্রুফ-অফ-স্টেক পদ্ধতিটি "Casper" নামে পরিচিত। Casper নির্ধারণ করে কিভাবে ভ্যালিডেটররা ব্লক প্রস্তাব করার জন্য নির্বাচিত হয়, কিভাবে এবং কখন প্রত্যয়ন করা হয়, কিভাবে প্রত্যয়ন গণনা করা হয়, ভ্যালিডেটরদের দেওয়া পুরস্কার এবং শাস্তি, স্ল্যাশিং শর্তাবলী, নিষ্ক্রিয়তা ফাঁসের মতো ফেইলসেফ পদ্ধতি এবং "ফাইনালিটি"-র শর্তাবলী। ফাইনালিটি হল এমন একটি শর্ত যে একটি ব্লককে ক্যানোনিকাল চেইনের একটি স্থায়ী অংশ হিসাবে বিবেচনা করার জন্য নেটওয়ার্কে মোট স্টেক করা ETH-এর কমপক্ষে 66% দ্বারা ভোট দেওয়া আবশ্যক। গবেষকরা বিশেষভাবে ইথেরিয়ামের জন্য Casper তৈরি করেছেন, এবং ইথেরিয়াম হল প্রথম এবং একমাত্র ব্লকচেইন যা এটি বাস্তবায়ন করেছে।
+ইথিরিয়াম-এর প্রুফ-অফ-স্টেক মেকানিজম এর ডিজাইনে অনন্য। এটি ডিজাইন এবং বাস্তবায়িত হওয়া প্রথম প্রুফ-অফ-স্টেক মেকানিজম ছিল না, তবে এটি সবচেয়ে শক্তিশালী। প্রুফ-অফ-স্টেক মেকানিজমটি "Casper" নামে পরিচিত। Casper নির্ধারণ করে কীভাবে ব্লকস প্রস্তাব করার জন্য ভ্যালিডেটরস নির্বাচন করা হয়, কীভাবে এবং কখন এটেস্টেশন করা হয়, কীভাবে এটেস্টেশন গণনা করা হয়, ভ্যালিডেটরস-কে দেওয়া পুরষ্কার এবং জরিমানা, স্ল্যাশিং শর্তাবলী, ইনঅ্যাক্টিভিটি লিক-এর মতো ফেইলসেফ মেকানিজম এবং "ফাইনালিটি"-এর শর্তাবলী। ফাইনালিটি হলো এমন একটি শর্ত যেখানে একটি ব্লক-কে ক্যানোনিকাল চেইনের স্থায়ী অংশ হিসেবে বিবেচনা করার জন্য নেটওয়ার্ক-এ মোট স্টেক করা ETH-এর কমপক্ষে 66% দ্বারা ভোট দেওয়া হতে হবে। গবেষকরা বিশেষভাবে ইথিরিয়াম-এর জন্য Casper তৈরি করেছেন এবং ইথিরিয়াম হলো প্রথম এবং একমাত্র ব্লকচেইন যা এটি বাস্তবায়ন করেছে।
-Casper ছাড়াও, ইথেরিয়ামের প্রুফ-অফ-স্টেক LMD-GHOST নামক একটি ফর্ক পছন্দ অ্যালগরিদম ব্যবহার করে। একই স্লটের জন্য দুটি ব্লক বিদ্যমান এমন একটি শর্ত দেখা দিলে এটি প্রয়োজন। এটি ব্লকচেইনের দুটি ফর্ক তৈরি করে। LMD-GHOST সেইটিকে বেছে নেয় যার প্রত্যয়নের "ওজন" সবচেয়ে বেশি। ওজন হল ভ্যালিডেটরদের কার্যকর ব্যালেন্স দ্বারা ওজন করা প্রত্যয়নের সংখ্যা। LMD-GHOST ইথেরিয়ামের জন্য অনন্য।
+Casper ছাড়াও, ইথিরিয়াম-এর প্রুফ-অফ-স্টেক LMD-GHOST নামক একটি ফর্ক চয়েস এ্যালগরিদম ব্যবহার করে। এটি এমন ক্ষেত্রে প্রয়োজন হয় যখন একই স্লটের জন্য দুটি ব্লক বিদ্যমান থাকে। এটি ব্লকচেইন-এর দুটি ফর্ক তৈরি করে। LMD-GHOST সেই ফর্কটি বেছে নেয় যার এটেস্টেশন-এর "ওজন" (weight) সবচেয়ে বেশি। ওজন হলো ভ্যালিডেটরস-এর কার্যকর ব্যালেন্স দ্বারা গুণিত এটেস্টেশন-এর সংখ্যা। LMD-GHOST ইথিরিয়াম-এর জন্য অনন্য।
-Casper এবং LMD_GHOST-এর সংমিশ্রণ Gasper নামে পরিচিত।
+Casper এবং LMD_GHOST-এর সমন্বয় Gasper নামে পরিচিত।
[Gasper সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/gasper/)
## স্ল্যাশিং কী? {#what-is-slashing}
-স্ল্যাশিং হল একটি ভ্যালিডেটরের স্টেক-এর কিছু অংশ ধ্বংস করা এবং নেটওয়ার্ক থেকে ভ্যালিডেটরকে বের করে দেওয়ার জন্য ব্যবহৃত একটি শব্দ। স্ল্যাশিং-এ হারানো ETH-এর পরিমাণ স্ল্যাশ করা ভ্যালিডেটরের সংখ্যার সাথে স্কেল করে - এর মানে হল ষড়যন্ত্রকারী ভ্যালিডেটররা ব্যক্তিদের চেয়ে বেশি কঠোরভাবে শাস্তি পায়।
+স্ল্যাশিং হলো এমন একটি শব্দ যা একজন ভ্যালিডেটর-এর স্টেক-এর কিছু অংশ ধ্বংস করা এবং নেটওয়ার্ক থেকে ভ্যালিডেটর-কে বের করে দেওয়া বোঝায়। স্ল্যাশিং-এ হারানো ETH-এর পরিমাণ স্ল্যাশড হওয়া ভ্যালিডেটরস-এর সংখ্যার সাথে বৃদ্ধি পায় - এর মানে হলো যোগসাজশকারী ভ্যালিডেটরস-রা ব্যক্তিগত ভ্যালিডেটরস-এর চেয়ে বেশি কঠোর শাস্তি পায়।
[স্ল্যাশিং সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties#slashing)
-## ভ্যালিডেটরদের 32 ETH কেন প্রয়োজন? {#why-32-eth}
+## ভ্যালিডেটরস-এর কেন 32 ETH প্রয়োজন? {#why-32-eth}
-ভ্যালিডেটরদের ETH স্টেক করতে হয় যাতে তারা খারাপ আচরণ করলে তাদের হারানোর মতো কিছু থাকে। তাদের বিশেষভাবে 32 ETH স্টেক করতে হওয়ার কারণ হল নোডগুলিকে সাধারণ হার্ডওয়্যারে চলতে সক্ষম করা। যদি প্রতি ভ্যালিডেটরের সর্বনিম্ন ETH কম হত, তাহলে ভ্যালিডেটরের সংখ্যা এবং ফলস্বরূপ প্রতিটি স্লটে প্রক্রিয়া করা আবশ্যক বার্তাগুলির সংখ্যা বাড়ত, যার অর্থ একটি নোড চালানোর জন্য আরও শক্তিশালী হার্ডওয়্যারের প্রয়োজন হত।
+ভ্যালিডেটরস-কে ETH স্টেক করতে হয় যাতে তারা অসদাচরণ করলে তাদের হারানোর মতো কিছু থাকে। তাদের বিশেষভাবে 32 ETH স্টেক করার কারণ হলো নোডগুলোকে সাধারণ হার্ডওয়্যারে চালানোর সক্ষমতা দেওয়া। যদি প্রতি ভ্যালিডেটর-এর জন্য ন্যূনতম ETH কম হতো, তবে ভ্যালিডেটরস-এর সংখ্যা এবং সেই অনুযায়ী প্রতিটি স্লটে প্রসেস করা মেসেজের সংখ্যা বৃদ্ধি পেত, যার মানে একটি নোড চালানোর জন্য আরও শক্তিশালী হার্ডওয়্যারের প্রয়োজন হতো।
-## ভ্যালিডেটরদের কীভাবে নির্বাচন করা হয়? {#how-are-validators-selected}
+## ভ্যালিডেটরস কীভাবে নির্বাচিত হয়? {#how-are-validators-selected}
-RANDAO নামক একটি অ্যালগরিদম ব্যবহার করে প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন একক ভ্যালিডেটরকে ছদ্ম-এলোমেলোভাবে বেছে নেওয়া হয় যা ব্লক প্রস্তাবকের একটি হ্যাসকে একটি সিডের সাথে মিশ্রিত করে যা প্রতিটি ব্লকে আপডেট হয়। এই মানটি মোট ভ্যালিডেটর সেট থেকে একটি নির্দিষ্ট ভ্যালিডেটর নির্বাচন করতে ব্যবহৃত হয়। ভ্যালিডেটর নির্বাচন দুটি ইপক আগে থেকে স্থির করা হয়।
+RANDAO নামক একটি এ্যালগরিদম ব্যবহার করে প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন একক ভ্যালিডেটর-কে সিউডো-র্যান্ডমভাবে (pseudo-randomly) বেছে নেওয়া হয়, যা ব্লক প্রপোজার থেকে একটি হ্যাস-কে এমন একটি সিড-এর সাথে মিশ্রিত করে যা প্রতিটি ব্লকে আপডেট হয়। এই মানটি মোট ভ্যালিডেটর সেট থেকে একটি নির্দিষ্ট ভ্যালিডেটর নির্বাচন করতে ব্যবহৃত হয়। ভ্যালিডেটর নির্বাচন দুই এপোক আগে থেকে নির্ধারিত থাকে।
[ভ্যালিডেটর নির্বাচন সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/block-proposal)
## স্টেক গ্রাইন্ডিং কী? {#what-is-stake-grinding}
-স্টেক গ্রাইন্ডিং হল প্রুফ-অফ-স্টেক নেটওয়ার্কের উপর এক ধরনের আক্রমণ যেখানে আক্রমণকারী তাদের নিজস্ব ভ্যালিডেটরদের পক্ষে ভ্যালিডেটর নির্বাচন অ্যালগরিদমকে পক্ষপাতদুষ্ট করার চেষ্টা করে। RANDAO-এর উপর স্টেক গ্রাইন্ডিং আক্রমণের জন্য মোট স্টেক করা ETH-এর প্রায় অর্ধেক প্রয়োজন।
+স্টেক গ্রাইন্ডিং হলো প্রুফ-অফ-স্টেক নেটওয়ার্ক-এর ওপর এক ধরণের আক্রমণ যেখানে আক্রমণকারী ভ্যালিডেটর নির্বাচন এ্যালগরিদম-কে তাদের নিজস্ব ভ্যালিডেটরস-এর পক্ষে প্রভাবিত করার চেষ্টা করে। RANDAO-এর ওপর স্টেক গ্রাইন্ডিং আক্রমণের জন্য মোট স্টেক করা ETH-এর প্রায় অর্ধেক প্রয়োজন হয়।
[স্টেক গ্রাইন্ডিং সম্পর্কে আরও জানুন](https://eth2book.info/altair/part2/building_blocks/randomness/#randao-biasability)
## সোশ্যাল স্ল্যাশিং কী? {#what-is-social-slashing}
-সোশ্যাল স্ল্যাশিং হল একটি আক্রমণের প্রতিক্রিয়ায় ব্লকচেইনের একটি ফর্ক সমন্বয় করার জন্য সম্প্রদায়ের ক্ষমতা। এটি সম্প্রদায়কে একজন আক্রমণকারীর একটি অসৎ চেইন চূড়ান্ত করা থেকে পুনরুদ্ধার করতে সক্ষম করে। সেন্সরশিপ আক্রমণের বিরুদ্ধেও সোশ্যাল স্ল্যাশিং ব্যবহার করা যেতে পারে।
+সোশ্যাল স্ল্যাশিং হলো কোনো আক্রমণের প্রতিক্রিয়ায় ব্লকচেইন-এর একটি ফর্ক সমন্বয় করার জন্য কমিউনিটির সক্ষমতা। এটি কমিউনিটিকে একজন আক্রমণকারীর দ্বারা একটি অসৎ চেইন চূড়ান্ত করা থেকে পুনরুদ্ধার করতে সক্ষম করে। সেন্সরশিপ আক্রমণের বিরুদ্ধেও সোশ্যাল স্ল্যাশিং ব্যবহার করা যেতে পারে।
- [সোশ্যাল স্ল্যাশিং সম্পর্কে আরও জানুন](https://ercwl.medium.com/the-case-for-social-slashing-59277ff4d9c7)
- [সোশ্যাল স্ল্যাশিং সম্পর্কে Vitalik Buterin](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake)
-## আমি কি স্ল্যাশড হব? {#will-i-get-slashed}
+## আমি কি স্ল্যাশড হবো? {#will-i-get-slashed}
-একজন ভ্যালিডেটর হিসাবে, স্ল্যাশড হওয়া খুব কঠিন যদি না আপনি ইচ্ছাকৃতভাবে ক্ষতিকারক আচরণে জড়িত হন। স্ল্যাশিং শুধুমাত্র খুব নির্দিষ্ট পরিস্থিতিতে বাস্তবায়িত হয় যেখানে ভ্যালিডেটররা একই স্লটের জন্য একাধিক ব্লক প্রস্তাব করে বা তাদের প্রত্যয়ন দিয়ে নিজেদের বিরোধিতা করে - এগুলি দুর্ঘটনাক্রমে ঘটার সম্ভাবনা খুব কম।
+একজন ভ্যালিডেটর হিসেবে, আপনি ইচ্ছাকৃতভাবে ক্ষতিকারক আচরণে লিপ্ত না হলে স্ল্যাশড হওয়া খুব কঠিন। স্ল্যাশিং শুধুমাত্র খুব নির্দিষ্ট পরিস্থিতিতে বাস্তবায়িত হয় যেখানে ভ্যালিডেটরস একই স্লটের জন্য একাধিক ব্লকস প্রস্তাব করে বা তাদের এটেস্টেশন-এর সাথে নিজেদের বিরোধিতা করে - এগুলো দুর্ঘটনাবশত ঘটার সম্ভাবনা খুব কম।
[স্ল্যাশিং শর্তাবলী সম্পর্কে আরও জানুন](https://eth2book.info/altair/part2/incentives/slashing)
-## নাথিং-অ্যাট-স্টেক সমস্যাটি কী? {#what-is-nothing-at-stake-problem}
+## নাথিং-অ্যাট-স্টেক (nothing-at-stake) সমস্যা কী? {#what-is-nothing-at-stake-problem}
-নাথিং-অ্যাট-স্টেক সমস্যাটি কিছু প্রুফ-অফ-স্টেক পদ্ধতির সাথে একটি ধারণাগত সমস্যা যেখানে শুধুমাত্র পুরস্কার আছে এবং কোনো শাস্তি নেই। যদি স্টেক করার মতো কিছু না থাকে, তবে একজন বাস্তববাদী ভ্যালিডেটর ব্লকচেইনের যেকোনো, বা এমনকি একাধিক, ফর্কের প্রত্যয়ন করতে সমানভাবে খুশি, কারণ এটি তাদের পুরস্কার বাড়ায়। ইথেরিয়াম একটি ক্যানোনিকাল চেইন নিশ্চিত করতে ফাইনালিটি শর্ত এবং স্ল্যাশিং ব্যবহার করে এই সমস্যার সমাধান করে।
+নাথিং-অ্যাট-স্টেক সমস্যা হলো কিছু প্রুফ-অফ-স্টেক মেকানিজম-এর একটি ধারণাগত সমস্যা যেখানে শুধুমাত্র পুরষ্কার থাকে এবং কোনো জরিমানা থাকে না। যদি স্টেক করার মতো কিছু না থাকে, তবে একজন বাস্তববাদী ভ্যালিডেটর ব্লকচেইন-এর যেকোনো, বা এমনকি একাধিক ফর্ক-এ এটেস্টেশন করতে সমানভাবে খুশি হয়, কারণ এটি তাদের পুরষ্কার বৃদ্ধি করে। ইথিরিয়াম একটি ক্যানোনিকাল চেইন নিশ্চিত করতে ফাইনালিটি শর্তাবলী এবং স্ল্যাশিং ব্যবহার করে এই সমস্যাটি এড়িয়ে যায়।
[নাথিং-অ্যাট-স্টেক সমস্যা সম্পর্কে আরও জানুন](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed)
-## ফর্ক পছন্দ অ্যালগরিদম কী? {#what-is-a-fork-choice-algorithm}
+## ফর্ক চয়েস এ্যালগরিদম কী? {#what-is-a-fork-choice-algorithm}
-একটি ফর্ক পছন্দ অ্যালগরিদম নিয়ম বাস্তবায়ন করে যা নির্ধারণ করে কোন চেইনটি ক্যানোনিকাল। অনুকূল পরিস্থিতিতে, ফর্ক পছন্দ নিয়মের কোনো প্রয়োজন নেই কারণ প্রতি স্লটে কেবল একজন ব্লক প্রস্তাবক থাকে এবং বেছে নেওয়ার জন্য একটি ব্লক থাকে। তবে মাঝে মাঝে, একই স্লটের জন্য একাধিক ব্লক বা দেরিতে আসা তথ্য চেইনের শীর্ষের কাছাকাছি ব্লকগুলি কীভাবে সংগঠিত হয় তার জন্য একাধিক বিকল্পের দিকে নিয়ে যায়। এইসব ক্ষেত্রে, সমস্ত ক্লায়েন্টদের অবশ্যই কিছু নিয়ম একইভাবে বাস্তবায়ন করতে হবে যাতে তারা সবাই সঠিক ব্লকের ক্রম বেছে নেয়। ফর্ক পছন্দ অ্যালগরিদম এই নিয়মগুলিকে এনকোড করে।
+একটি ফর্ক চয়েস এ্যালগরিদম এমন নিয়মগুলো বাস্তবায়ন করে যা নির্ধারণ করে কোন চেইনটি ক্যানোনিকাল। অনুকূল পরিস্থিতিতে, ফর্ক চয়েস নিয়মের কোনো প্রয়োজন নেই কারণ প্রতি স্লটে শুধুমাত্র একজন ব্লক প্রপোজার থাকে এবং বেছে নেওয়ার জন্য একটি ব্লক থাকে। তবে মাঝে মাঝে, একই স্লটের জন্য একাধিক ব্লকস বা দেরিতে আসা তথ্যের কারণে চেইনের হেডের কাছাকাছি ব্লকস কীভাবে সাজানো হবে তার জন্য একাধিক বিকল্প তৈরি হয়। এই ক্ষেত্রে, সমস্ত ক্লায়েন্ট-কে অবশ্যই কিছু নিয়ম একইভাবে বাস্তবায়ন করতে হবে যাতে তারা সবাই ব্লকস-এর সঠিক ক্রম বেছে নেয়। ফর্ক-চয়েস এ্যালগরিদম এই নিয়মগুলোকে এনকোড করে।
-ইথেরিয়ামের ফর্ক পছন্দ অ্যালগরিদমকে LMD-GHOST বলা হয়। এটি সবচেয়ে বেশি প্রত্যয়নের ওজনের ফর্কটি বেছে নেয়, যার অর্থ হল সবচেয়ে বেশি স্টেক করা ETH যেটির জন্য ভোট দিয়েছে।
+ইথিরিয়াম-এর ফর্ক-চয়েস এ্যালগরিদম-কে LMD-GHOST বলা হয়। এটি এটেস্টেশন-এর সবচেয়ে বেশি ওজনযুক্ত ফর্কটি বেছে নেয়, যার মানে হলো যেটিতে সবচেয়ে বেশি স্টেক করা ETH ভোট দিয়েছে।
[LMD-GHOST সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/gasper/#fork-choice)
## প্রুফ-অফ-স্টেক-এ ফাইনালিটি কী? {#what-is-finality}
-প্রুফ-অফ-স্টেক-এ ফাইনালিটি হল এই গ্যারান্টি যে একটি প্রদত্ত ব্লক ক্যানোনিকাল চেইনের একটি স্থায়ী অংশ এবং এটিকে প্রত্যাবর্তন করা যাবে না যদি না একটি কনসেন্সাস ব্যর্থতা হয় যেখানে একজন আক্রমণকারী মোট স্টেক করা ইথারের 33% পুড়িয়ে ফেলে। এটি হল "ক্রিপ্টো-অর্থনৈতিক" ফাইনালিটি, যা "সম্ভাব্য ফাইনালিটি"-এর বিপরীত যা প্রুফ-অফ-ওয়ার্ক ব্লকচেইনের সাথে প্রাসঙ্গিক। সম্ভাব্য ফাইনালিটিতে, ব্লকগুলির জন্য কোনো সুস্পষ্ট চূড়ান্ত/অ-চূড়ান্ত অবস্থা নেই - একটি ব্লক চেইন থেকে সরানো যেতে পারে এমন সম্ভাবনা কেবল কমতে থাকে যখন এটি পুরানো হয়, এবং ব্যবহারকারীরা নিজেরাই নির্ধারণ করে কখন তারা যথেষ্ট আত্মবিশ্বাসী যে একটি ব্লক "নিরাপদ"। ক্রিপ্টো-অর্থনৈতিক ফাইনালিটির সাথে, জোড়া চেকপয়েন্ট ব্লকের জন্য স্টেক করা ইথারের 66% দ্বারা ভোট দিতে হবে। যদি এই শর্তটি পূরণ হয়, তবে সেই চেকপয়েন্টগুলির মধ্যেকার ব্লকগুলিকে স্পষ্টভাবে "চূড়ান্ত" করা হয়।
+প্রুফ-অফ-স্টেক-এ ফাইনালিটি হলো এই গ্যারান্টি যে একটি নির্দিষ্ট ব্লক ক্যানোনিকাল চেইনের একটি স্থায়ী অংশ এবং এটি পরিবর্তন করা যাবে না যদি না কোনো কনসেন্সাস ব্যর্থতা ঘটে যেখানে একজন আক্রমণকারী মোট স্টেক করা ইথারের 33% পুড়িয়ে দেয়। এটি হলো "ক্রিপ্টো-ইকোনমিক" ফাইনালিটি, যা "প্রোবাবিলিস্টিক ফাইনালিটি"-এর বিপরীত যা প্রুফ-অফ-ওয়ার্ক ব্লকচেইন-এর জন্য প্রাসঙ্গিক। প্রোবাবিলিস্টিক ফাইনালিটি-তে, ব্লকস-এর জন্য কোনো স্পষ্ট চূড়ান্ত/অচূড়ান্ত স্টেট থাকে না - এটি কেবল পুরোনো হওয়ার সাথে সাথে চেইন থেকে একটি ব্লক সরিয়ে ফেলার সম্ভাবনা কমতে থাকে এবং ব্যবহারকারীরা নিজেরাই নির্ধারণ করে কখন তারা যথেষ্ট আত্মবিশ্বাসী যে একটি ব্লক "নিরাপদ"। ক্রিপ্টো-ইকোনমিক ফাইনালিটি-র ক্ষেত্রে, চেকপয়েন্ট ব্লকস-এর জোড়াগুলোকে স্টেক করা ইথারের 66% দ্বারা ভোট দিতে হয়। যদি এই শর্ত পূরণ হয়, তবে সেই চেকপয়েন্টগুলোর মধ্যবর্তী ব্লকস স্পষ্টভাবে "চূড়ান্ত" (finalized) হয়।
[ফাইনালিটি সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/#finality)
-## "উইক সাবজেক্টিভিটি" কী? {#what-is-weak-subjectivity}
+## "উইক সাবজেক্টিভিটি" (weak subjectivity) কী? {#what-is-weak-subjectivity}
-উইক সাবজেক্টিভিটি হল প্রুফ-অফ-স্টেক নেটওয়ার্কগুলির একটি বৈশিষ্ট্য যেখানে ব্লকচেইনের বর্তমান অবস্থা নিশ্চিত করতে সামাজিক তথ্য ব্যবহার করা হয়। নতুন নোড বা দীর্ঘ সময় ধরে অফলাইন থাকার পর নেটওয়ার্কে পুনরায় যোগদানকারী নোডগুলিকে একটি সাম্প্রতিক অবস্থা দেওয়া যেতে পারে যাতে নোডটি অবিলম্বে দেখতে পারে যে তারা সঠিক চেইনে আছে কিনা। এই অবস্থাগুলিকে "উইক সাবজেক্টিভিটি চেকপয়েন্ট" বলা হয় এবং এগুলি অন্যান্য নোড অপারেটরদের কাছ থেকে আউট-অফ-ব্যান্ড, বা ব্লক এক্সপ্লোরার থেকে, বা বেশ কয়েকটি পাবলিক এন্ডপয়েন্ট থেকে পাওয়া যেতে পারে।
+উইক সাবজেক্টিভিটি হলো প্রুফ-অফ-স্টেক নেটওয়ার্ক-এর একটি বৈশিষ্ট্য যেখানে ব্লকচেইন-এর বর্তমান স্টেট নিশ্চিত করতে সামাজিক তথ্য ব্যবহার করা হয়। নতুন নোড বা দীর্ঘ সময় অফলাইনে থাকার পর নেটওয়ার্ক-এ পুনরায় যোগদানকারী নোডগুলোকে একটি সাম্প্রতিক স্টেট দেওয়া যেতে পারে যাতে নোডটি অবিলম্বে দেখতে পারে যে তারা সঠিক চেইনে আছে কিনা। এই স্টেটগুলো "উইক সাবজেক্টিভিটি চেকপয়েন্ট" হিসেবে পরিচিত এবং এগুলো অন্যান্য নোড অপারেটরদের কাছ থেকে আউট-অফ-ব্যান্ড, বা ব্লক এক্সপ্লোরার থেকে, বা বিভিন্ন পাবলিক এন্ডপয়েন্ট থেকে পাওয়া যেতে পারে।
[উইক সাবজেক্টিভিটি সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/weak-subjectivity)
## প্রুফ-অফ-স্টেক কি সেন্সরশিপ প্রতিরোধী? {#is-pos-censorship-resistant}
-সেন্সরশিপ প্রতিরোধ ক্ষমতা বর্তমানে প্রমাণ করা কঠিন। তবে, প্রুফ-অফ-ওয়ার্কের বিপরীতে, প্রুফ-অফ-স্টেক সেন্সরকারী ভ্যালিডেটরদের শাস্তি দেওয়ার জন্য স্ল্যাশিং সমন্বয় করার বিকল্প প্রস্তাব করে। প্রোটোকলে আসন্ন পরিবর্তন রয়েছে যা ব্লক বিল্ডারদের ব্লক প্রস্তাবকদের থেকে পৃথক করে এবং লেনদেনের তালিকা বাস্তবায়ন করে যা বিল্ডারদের প্রতিটি ব্লকে অন্তর্ভুক্ত করতে হবে। এই প্রস্তাবটি প্রপার-বিল্ডার সেপারেশন নামে পরিচিত এবং ভ্যালিডেটরদের লেনদেন সেন্সর করা থেকে বিরত রাখতে সাহায্য করে।
+সেন্সরশিপ প্রতিরোধ বর্তমানে প্রমাণ করা কঠিন। তবে, প্রুফ-অফ-ওয়ার্ক-এর বিপরীতে, প্রুফ-অফ-স্টেক সেন্সর করা ভ্যালিডেটরস-কে শাস্তি দেওয়ার জন্য স্ল্যাশিং সমন্বয় করার বিকল্প অফার করে। প্রটোকল-এ আসন্ন পরিবর্তন রয়েছে যা ব্লক বিল্ডারদের ব্লক প্রপোজার থেকে আলাদা করে এবং লেনদেন-এর তালিকা বাস্তবায়ন করে যা বিল্ডারদের অবশ্যই প্রতিটি ব্লকে অন্তর্ভুক্ত করতে হবে। এই প্রস্তাবটি প্রপোজার-বিল্ডার সেপারেশন (proposer-builder separation) নামে পরিচিত এবং এটি ভ্যালিডেটরস-কে লেনদেন সেন্সর করা থেকে বিরত রাখতে সাহায্য করে।
-[প্রস্তাবক-নির্মাতা পৃথকীকরণ সম্পর্কে আরও জানুন](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme)
+[প্রপোজার-বিল্ডার সেপারেশন সম্পর্কে আরও জানুন](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme)
-## ইথেরিয়ামের প্রুফ-অফ-স্টেক সিস্টেমে কি 51% আক্রমণ করা সম্ভব? {#pos-51-attack}
+## ইথিরিয়াম-এর প্রুফ-অফ-স্টেক সিস্টেমে কি ৫১% এ্যাটাক হতে পারে? {#pos-51-attack}
-হ্যাঁ। প্রুফ-অফ-স্টেক, প্রুফ-অফ-ওয়ার্ক-এর মতোই 51% আক্রমণের জন্য ঝুঁকিপূর্ণ। আক্রমণকারীর নেটওয়ার্কের 51% হ্যাস পাওয়ারের পরিবর্তে, আক্রমণকারীর মোট স্টেক করা ETH-এর 51% প্রয়োজন। একজন আক্রমণকারী যে মোট স্টেক-এর 51% সংগ্রহ করে সে ফর্ক-পছন্দ অ্যালগরিদম নিয়ন্ত্রণ করতে পারে। এটি আক্রমণকারীকে নির্দিষ্ট লেনদেন সেন্সর করতে, স্বল্প-পরিসরের রিঅর্গ করতে এবং তাদের পক্ষে ব্লকগুলির পুনর্বিন্যাস করে MEV নিষ্কাশন করতে সক্ষম করে।
+হ্যাঁ। প্রুফ-অফ-ওয়ার্ক-এর মতোই প্রুফ-অফ-স্টেক ৫১% এ্যাটাক-এর জন্য ঝুঁকিপূর্ণ। আক্রমণকারীর নেটওয়ার্ক-এর হ্যাস পাওয়ারের 51% প্রয়োজন হওয়ার পরিবর্তে, আক্রমণকারীর মোট স্টেক করা ETH-এর 51% প্রয়োজন হয়। একজন আক্রমণকারী যে মোট স্টেক-এর 51% সংগ্রহ করে সে ফর্ক-চয়েস এ্যালগরিদম নিয়ন্ত্রণ করতে পারে। এটি আক্রমণকারীকে নির্দিষ্ট লেনদেন সেন্সর করতে, শর্ট-রেঞ্জ রিঅর্গ (reorgs) করতে এবং তাদের পক্ষে ব্লকস পুনরায় সাজিয়ে MEV বের করতে সক্ষম করে।
-[প্রুফ-অফ-স্টেক-এর উপর আক্রমণ সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
+[প্রুফ-অফ-স্টেক-এর ওপর আক্রমণ সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
-## সামাজিক সমন্বয় কী, এবং কেন এটি প্রয়োজন? {#what-is-social-coordination}
+## সোশ্যাল কোঅর্ডিনেশন (social coordination) কী এবং এটি কেন প্রয়োজন? {#what-is-social-coordination}
-সামাজিক সমন্বয় হল ইথেরিয়ামের জন্য প্রতিরক্ষার শেষ লাইন যা একটি সৎ চেইনকে এমন একটি আক্রমণ থেকে পুনরুদ্ধার করার অনুমতি দেবে যা অসৎ ব্লকগুলিকে চূড়ান্ত করেছে। এই ক্ষেত্রে, ইথেরিয়াম সম্প্রদায়কে "আউট-অফ-ব্যান্ড" সমন্বয় করতে হবে এবং একটি সৎ সংখ্যালঘু ফর্ক ব্যবহার করতে সম্মত হতে হবে, এই প্রক্রিয়ায় আক্রমণকারীর ভ্যালিডেটরদের স্ল্যাশ করে। এর জন্য অ্যাপ এবং এক্সচেঞ্জগুলিকেও সৎ ফর্কটিকে স্বীকৃতি দিতে হবে।
+সোশ্যাল কোঅর্ডিনেশন হলো ইথিরিয়াম-এর জন্য প্রতিরক্ষার শেষ সারি যা একটি সৎ চেইনকে এমন একটি আক্রমণ থেকে পুনরুদ্ধার করতে দেয় যা অসৎ ব্লকস চূড়ান্ত করেছে। এই ক্ষেত্রে, ইথিরিয়াম কমিউনিটিকে "আউট-অফ-ব্যান্ড" সমন্বয় করতে হবে এবং একটি সৎ মাইনরিটি ফর্ক ব্যবহার করতে সম্মত হতে হবে, এই প্রক্রিয়ায় আক্রমণকারীর ভ্যালিডেটরস-কে স্ল্যাশিং করতে হবে। এর জন্য অ্যাপস এবং এক্সচেঞ্জগুলোকেও সৎ ফর্কটিকে স্বীকৃতি দিতে হবে।
-[সামাজিক সমন্বয় সম্পর্কে আরও পড়ুন](/developers/docs/consensus-mechanisms/pos/attack-and-defense#people-the-last-line-of-defense)
+[সোশ্যাল কোঅর্ডিনেশন সম্পর্কে আরও পড়ুন](/developers/docs/consensus-mechanisms/pos/attack-and-defense#people-the-last-line-of-defense)
-## প্রুফ-অফ-স্টেক-এ কি ধনীরা আরও ধনী হয়? {#do-rich-get-richer}
+## প্রুফ-অফ-স্টেক-এ কি ধনীরা আরও ধনী হয়? {#do-rich-get-richer}
-কারও কাছে যত বেশি ETH স্টেক করার জন্য থাকবে, তারা তত বেশি ভ্যালিডেটর চালাতে পারবে, এবং তারা তত বেশি পুরস্কার অর্জন করতে পারবে। পুরস্কারগুলি স্টেক করা ETH-এর পরিমাণের সাথে রৈখিকভাবে স্কেল করে, এবং প্রত্যেকে একই শতাংশ রিটার্ন পায়। প্রুফ-অফ-ওয়ার্ক প্রুফ-অফ-স্টেকের চেয়ে ধনীদের বেশি সমৃদ্ধ করে কারণ ধনী মাইনাররা যারা স্কেলে হার্ডওয়্যার কেনেন তারা ইকোনোমি অফ স্কেল থেকে উপকৃত হন, যার অর্থ সম্পদ এবং পুরস্কারের মধ্যে সম্পর্কটি অরৈখিক।
+কারও কাছে স্টেক করার জন্য যত বেশি ETH থাকবে, তারা তত বেশি ভ্যালিডেটরস চালাতে পারবে এবং তত বেশি পুরষ্কার অর্জন করতে পারবে। পুরষ্কারগুলো স্টেক করা ETH-এর পরিমাণের সাথে রৈখিকভাবে (linearly) বৃদ্ধি পায় এবং সবাই একই শতাংশ রিটার্ন পায়। প্রুফ-অফ-ওয়ার্ক প্রুফ-অফ-স্টেক-এর চেয়ে ধনীদের বেশি ধনী করে কারণ ধনী মাইনাররা যারা বড় পরিসরে হার্ডওয়্যার কেনে তারা ইকোনোমিকস অফ স্কেল (economies of scale) থেকে উপকৃত হয়, যার মানে সম্পদ এবং পুরষ্কারের মধ্যে সম্পর্কটি অরৈখিক (non-linear)।
-## প্রুফ-অফ-স্টেক কি প্রুফ-অফ-ওয়ার্কের চেয়ে বেশি কেন্দ্রীভূত? {#is-pos-decentralized}
+## প্রুফ-অফ-স্টেক কি প্রুফ-অফ-ওয়ার্ক-এর চেয়ে বেশি কেন্দ্রীভূত? {#is-pos-decentralized}
-না, প্রুফ-অফ-ওয়ার্ক কেন্দ্রীকরণের দিকে ঝোঁকে কারণ মাইনিং খরচ বাড়ে এবং ব্যক্তিদের দাম বাড়িয়ে দেয়, তারপর ছোট সংস্থাগুলিকে দাম বাড়িয়ে দেয়, ইত্যাদি। প্রুফ-অফ-স্টেকের বর্তমান সমস্যা হল লিকুইড স্টেকিং ডেরিভেটিভস (LSDs)-এর প্রভাব। এগুলি হল টোকেন যা কোনো প্রদানকারীর দ্বারা স্টেক করা ETH-কে প্রতিনিধিত্ব করে যা যে কেউ সেকেন্ডারি মার্কেটে সোয়াপ করতে পারে আসল ETH আনস্টেক না করেই। LSD গুলি ব্যবহারকারীদের 32 ETH-এর কম দিয়ে স্টেক করার অনুমতি দেয়, কিন্তু তারা একটি কেন্দ্রীকরণের ঝুঁকিও তৈরি করে যেখানে কয়েকটি বড় সংস্থা স্টেক-এর বেশিরভাগ অংশ নিয়ন্ত্রণ করতে পারে। এই কারণেই ইথেরিয়ামের জন্য [সোলো স্টেকিং](/staking/solo) সেরা বিকল্প।
+না, প্রুফ-অফ-ওয়ার্ক কেন্দ্রীকরণের দিকে ঝুঁকে পড়ে কারণ মাইনিং খরচ বৃদ্ধি পায় এবং ব্যক্তিদের সামর্থ্যের বাইরে চলে যায়, তারপর ছোট কোম্পানিগুলোর সামর্থ্যের বাইরে চলে যায় এবং এভাবেই চলতে থাকে। প্রুফ-অফ-স্টেক-এর বর্তমান সমস্যা হলো লিকুইড স্টেকিং ডেরিভেটিভস (LSDs)-এর প্রভাব। এগুলো হলো এমন টোকেন যা কোনো প্রোভাইডার দ্বারা স্টেক করা ETH-কে উপস্থাপন করে যা যেকেউ প্রকৃত ETH আনস্টেক না করেই সেকেন্ডারি মার্কেটে সোয়াপ করতে পারে। LSDs ব্যবহারকারীদের 32 ETH-এর কম দিয়ে স্টেক করার অনুমতি দেয়, তবে এগুলো একটি কেন্দ্রীকরণের ঝুঁকিও তৈরি করে যেখানে কয়েকটি বড় সংস্থা শেষ পর্যন্ত স্টেক-এর বেশিরভাগ অংশ নিয়ন্ত্রণ করতে পারে। এই কারণেই ইথিরিয়াম-এর জন্য [সোলো স্টেকিং](/staking/solo) হলো সেরা বিকল্প।
-[LSD-তে স্টেক কেন্দ্রীকরণ সম্পর্কে আরও জানুন](https://notes.ethereum.org/@djrtwo/risks-of-lsd)
+[LSDs-এ স্টেক কেন্দ্রীকরণ সম্পর্কে আরও জানুন](https://notes.ethereum.org/@djrtwo/risks-of-lsd)
-## আমি কেন শুধু ETH স্টেক করতে পারি? {#why-can-i-only-stake-eth}
+## আমি কেন শুধুমাত্র ETH স্টেক করতে পারি? {#why-can-i-only-stake-eth}
-ETH হল ইথেরিয়ামের স্থানীয় মুদ্রা। ভোটের ওজন এবং সুরক্ষার জন্য কার্যকর ব্যালেন্সের হিসাব রাখার জন্য সমস্ত স্টেককে একটি একক মুদ্রায় চিহ্নিত করা অপরিহার্য। ETH নিজেই একটি স্মার্ট কন্ট্রাক্টের পরিবর্তে ইথেরিয়ামের একটি মৌলিক উপাদান। অন্যান্য মুদ্রা অন্তর্ভুক্ত করলে স্টেকিংয়ের জটিলতা উল্লেখযোগ্যভাবে বৃদ্ধি পাবে এবং নিরাপত্তা হ্রাস পাবে।
+ETH হলো ইথিরিয়াম-এর নিজস্ব কারেন্সি। ভোটের ওজন এবং নিরাপত্তার জন্য কার্যকর ব্যালেন্স হিসাব করার জন্য এমন একটি একক কারেন্সি থাকা অপরিহার্য যেখানে সমস্ত স্টেক নির্ধারণ করা হয়। ETH নিজেই একটি স্মার্ট কন্ট্রাক্ট হওয়ার পরিবর্তে ইথিরিয়াম-এর একটি মৌলিক উপাদান। অন্যান্য কারেন্সি অন্তর্ভুক্ত করা হলে তা স্টেকিং-এর জটিলতা উল্লেখযোগ্যভাবে বৃদ্ধি করবে এবং নিরাপত্তা হ্রাস করবে।
-## ইথেরিয়াম কি একমাত্র প্রুফ-অফ-স্টেক ব্লকচেইন? {#is-ethereum-the-only-pos-blockchain}
+## ইথিরিয়াম কি একমাত্র প্রুফ-অফ-স্টেক ব্লকচেইন? {#is-ethereum-the-only-pos-blockchain}
-না, বেশ কয়েকটি প্রুফ-অফ-স্টেক ব্লকচেইন রয়েছে। কোনোটিই ইথেরিয়ামের অনুরূপ নয়; ইথেরিয়ামের প্রুফ-অফ-স্টেক পদ্ধতিটি অনন্য।
+না, বেশ কয়েকটি প্রুফ-অফ-স্টেক ব্লকচেইন রয়েছে। কোনোটিই ইথিরিয়াম-এর মতো হুবহু এক নয়; ইথিরিয়াম-এর প্রুফ-অফ-স্টেক মেকানিজম অনন্য।
-## দ্য মার্জ কী? {#what-is-the-merge}
+## দ্য মার্জ (The Merge) কী? {#what-is-the-merge}
-দ্য মার্জ হল সেই মুহূর্ত যখন ইথেরিয়াম তার প্রুফ-অফ-ওয়ার্ক-ভিত্তিক কনসেন্সাস মেকানিজম বন্ধ করে দেয় এবং তার প্রুফ-অফ-স্টেক-ভিত্তিক কনসেন্সাস মেকানিজম চালু করে। দ্য মার্জ 15 সেপ্টেম্বর, 2022-এ ঘটেছিল।
+দ্য মার্জ ছিল সেই মুহূর্ত যখন ইথিরিয়াম তার প্রুফ-অফ-ওয়ার্ক-ভিত্তিক কনসেন্সাস মেকানিজম বন্ধ করে দেয় এবং এর প্রুফ-অফ-স্টেক-ভিত্তিক কনসেন্সাস মেকানিজম চালু করে। দ্য মার্জ 15 সেপ্টেম্বর, 2022-এ ঘটেছিল।
[দ্য মার্জ সম্পর্কে আরও জানুন](/roadmap/merge)
-## লাইভনেস এবং সেফটি কী? {#what-are-liveness-and-safety}
+## লাইভনেস (liveness) এবং সেফটি (safety) কী? {#what-are-liveness-and-safety}
-লাইভনেস এবং সেফটি হল একটি ব্লকচেইনের জন্য দুটি মৌলিক নিরাপত্তা উদ্বেগ। লাইভনেস হল একটি চূড়ান্তকারী চেইনের প্রাপ্যতা। যদি চেইন চূড়ান্ত হওয়া বন্ধ করে দেয় বা ব্যবহারকারীরা সহজেই এটি অ্যাক্সেস করতে না পারে, সেগুলি হল লাইভনেস ব্যর্থতা। অত্যন্ত উচ্চ অ্যাক্সেস খরচকেও একটি লাইভনেস ব্যর্থতা হিসাবে বিবেচনা করা যেতে পারে। সেফটি বলতে বোঝায় চেইনে আক্রমণ করা কতটা কঠিন - অর্থাৎ, পরস্পরবিরোধী চেকপয়েন্ট চূড়ান্ত করা।
+লাইভনেস এবং সেফটি হলো একটি ব্লকচেইন-এর জন্য দুটি মৌলিক নিরাপত্তা উদ্বেগ। লাইভনেস হলো একটি চূড়ান্তকারী চেইনের প্রাপ্যতা। যদি চেইন চূড়ান্ত করা বন্ধ করে দেয় বা ব্যবহারকারীরা সহজেই এটি অ্যাক্সেস করতে সক্ষম না হয়, তবে সেগুলো হলো লাইভনেস ব্যর্থতা। অ্যাক্সেস করার অত্যন্ত উচ্চ খরচকেও লাইভনেস ব্যর্থতা হিসেবে বিবেচনা করা যেতে পারে। সেফটি বলতে বোঝায় চেইনে আক্রমণ করা কতটা কঠিন - অর্থাৎ, বিরোধপূর্ণ চেকপয়েন্টগুলো চূড়ান্ত করা।
-[Casper পেপারে আরও পড়ুন](https://arxiv.org/pdf/1710.09437.pdf)
+[Casper পেপারে আরও পড়ুন](https://arxiv.org/pdf/1710.09437.pdf)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/gasper/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/gasper/index.md
index db0d694a9ba..bb09ce7b8a1 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/gasper/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/gasper/index.md
@@ -1,52 +1,52 @@
---
-title: "গ্যাস্পার"
-description: "গ্যাস্পার প্রুফ-অফ-স্টেক মেকানিজমের একটি ব্যাখ্যা।"
+title: গ্যাসপার
+description: গ্যাসপার প্রুফ-অফ-স্টেক মেকানিজমের একটি ব্যাখ্যা।
lang: bn
---
-গ্যাস্পার হল ক্যাসপার দ্য ফ্রেন্ডলি ফাইনালিটি গ্যাজেট (Casper-FFG) এবং LMD-GHOST ফর্ক চয়েস অ্যালগরিদমের একটি সংমিশ্রণ। একত্রে এই উপাদানগুলি প্রুফ-অফ-স্টেক ইথেরিয়ামকে সুরক্ষিত করার জন্য কনসেন্সাস মেকানিজম তৈরি করে। ক্যাসপার হল সেই মেকানিজম যা নির্দিষ্ট ব্লকগুলিকে "চূড়ান্ত" করতে আপগ্রেড করে যাতে নেটওয়ার্কে নতুন প্রবেশকারীরা আত্মবিশ্বাসী হতে পারে যে তারা ক্যানোনিকাল চেইন সিঙ্ক করছে। ফর্ক চয়েস অ্যালগরিদমটি সঞ্চিত ভোট ব্যবহার করে নিশ্চিত করে যে যখন ব্লকচেইনে ফর্ক দেখা দেয় তখন নোডগুলি সহজেই সঠিকটি নির্বাচন করতে পারে।
+গ্যাসপার হলো ক্যাসপার দ্য ফ্রেন্ডলি ফাইনালিটি গ্যাজেট (Casper-FFG) এবং LMD-GHOST ফর্ক চয়েস এ্যালগরিদমের একটি সমন্বয়। একত্রে এই উপাদানগুলো প্রুফ-অফ-স্টেক ইথিরিয়ামকে সুরক্ষিত করার কনসেন্সাস মেকানিজম তৈরি করে। ক্যাসপার হলো এমন একটি মেকানিজম যা নির্দিষ্ট ব্লকসকে "চূড়ান্ত (finalized)" হিসেবে আপগ্রেড করে যাতে নেটওয়ার্ক-এ নতুন প্রবেশকারীরা নিশ্চিত হতে পারে যে তারা ক্যানোনিকাল চেইন সিঙ্ক করছে। ফর্ক চয়েস এ্যালগরিদম পুঞ্জীভূত ভোট ব্যবহার করে এটি নিশ্চিত করে যে ব্লকচেইন-এ ফর্ক দেখা দিলে নোডগুলো সহজেই সঠিকটি নির্বাচন করতে পারে।
-**দ্রষ্টব্য** যে Casper-FFG-এর মূল সংজ্ঞাটি গ্যাস্পারে অন্তর্ভুক্ত করার জন্য সামান্য আপডেট করা হয়েছিল। এই পৃষ্ঠায় আমরা আপডেট করা সংস্করণটি বিবেচনা করব।
+**দ্রষ্টব্য** যে গ্যাসপারে অন্তর্ভুক্তির জন্য Casper-FFG এর মূল সংজ্ঞাটি সামান্য আপডেট করা হয়েছিল। এই পৃষ্ঠায় আমরা আপডেট করা সংস্করণটি বিবেচনা করেছি।
## পূর্বশর্ত
-এই উপাদানটি বুঝতে হলে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)-এর ভূমিকা পৃষ্ঠাটি পড়া প্রয়োজন।
+এই বিষয়টি বোঝার জন্য [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)-এর পরিচায়ক পৃষ্ঠাটি পড়া প্রয়োজন।
-## গ্যাস্পারের ভূমিকা {#role-of-gasper}
+## গ্যাসপারের ভূমিকা {#role-of-gasper}
-গ্যাস্পার একটি প্রুফ-অফ-স্টেক ব্লকচেইনের উপরে বসে যেখানে নোডগুলি একটি নিরাপত্তা আমানত হিসাবে ইথার সরবরাহ করে যা ব্লক প্রস্তাব বা ভ্যালিডেট করার ক্ষেত্রে অলস বা অসৎ হলে ধ্বংস করা যেতে পারে। গ্যাস্পার হল সেই মেকানিজম যা নির্ধারণ করে যে কীভাবে ভ্যালিডেটরদের পুরস্কৃত এবং শাস্তি দেওয়া হবে, কোন ব্লকগুলি গ্রহণ বা প্রত্যাখ্যান করা হবে এবং ব্লকচেইনের কোন ফর্কের উপর ভিত্তি করে তৈরি করা হবে।
+গ্যাসপার একটি প্রুফ-অফ-স্টেক ব্লকচেইন-এর উপরে অবস্থান করে যেখানে নোডগুলো সিকিউরিটি ডিপোজিট হিসেবে ইথার (ether) প্রদান করে, যা ব্লকস প্রস্তাব বা যাচাই করার ক্ষেত্রে তারা অলস বা অসৎ হলে ধ্বংস হয়ে যেতে পারে। গ্যাসপার হলো এমন একটি মেকানিজম যা নির্ধারণ করে কীভাবে ভ্যালিডেটরস পুরস্কৃত এবং শাস্তিপ্রাপ্ত হয়, কোন ব্লকস গ্রহণ এবং প্রত্যাখ্যান করতে হবে তা সিদ্ধান্ত নেয় এবং ব্লকচেইন-এর কোন ফর্ক-এর উপর ভিত্তি করে তৈরি করতে হবে।
-## চূড়ান্ততা কী? {#what-is-finality}
+## ফাইনালিটি কী? {#what-is-finality}
-চূড়ান্ততা হল নির্দিষ্ট ব্লকের একটি বৈশিষ্ট্য যার অর্থ হল যে সেগুলিকে প্রত্যাবর্তন করা যাবে না যতক্ষণ না একটি গুরুতর কনসেন্সাস ব্যর্থতা ঘটে এবং একজন আক্রমণকারী মোট স্টেক করা ইথারের কমপক্ষে 1/3 অংশ ধ্বংস করে দেয়। চূড়ান্ত ব্লকগুলিকে এমন তথ্য হিসাবে ভাবা যেতে পারে যার সম্পর্কে ব্লকচেইন নিশ্চিত। একটি ব্লককে চূড়ান্ত করার জন্য দুটি ধাপের আপগ্রেড পদ্ধতির মধ্যে দিয়ে যেতে হবে:
+ফাইনালিটি হলো নির্দিষ্ট ব্লকস-এর একটি বৈশিষ্ট্য যার অর্থ হলো এগুলোকে রিভার্ট বা পূর্বাবস্থায় ফিরিয়ে আনা যাবে না, যদি না কোনো গুরুতর কনসেন্সাস ব্যর্থতা ঘটে এবং কোনো আক্রমণকারী মোট স্টেক করা ইথারের অন্তত 1/3 অংশ ধ্বংস করে। চূড়ান্ত (Finalized) ব্লকস-কে এমন তথ্য হিসেবে বিবেচনা করা যেতে পারে যার সম্পর্কে ব্লকচেইন নিশ্চিত। একটি ব্লক চূড়ান্ত হওয়ার জন্য এটিকে অবশ্যই একটি দুই-ধাপের আপগ্রেড পদ্ধতির মধ্য দিয়ে যেতে হবে:
-1. ক্যানোনিকাল চেইনে সেই ব্লকের অন্তর্ভুক্তির পক্ষে মোট স্টেক করা ইথারের দুই-তৃতীয়াংশকে অবশ্যই ভোট দিতে হবে। এই শর্তটি ব্লকটিকে "যৌক্তিক"-এ আপগ্রেড করে। যৌক্তিক ব্লকগুলি প্রত্যাবর্তন করার সম্ভাবনা কম, তবে নির্দিষ্ট শর্তে তা করা যেতে পারে।
-2. যখন একটি যৌক্তিক ব্লকের উপরে আরেকটি ব্লক যৌক্তিক হয়, তখন এটিকে "চূড়ান্ত"-তে আপগ্রেড করা হয়। একটি ব্লককে চূড়ান্ত করা হল ক্যানোনিকাল চেইনে ব্লকটিকে অন্তর্ভুক্ত করার একটি প্রতিশ্রুতি। এটি প্রত্যাবর্তন করা যাবে না যতক্ষণ না একজন আক্রমণকারী লক্ষ লক্ষ ইথার (বিলিয়ন $USD) ধ্বংস করে।
+1. মোট স্টেক করা ইথারের দুই-তৃতীয়াংশকে অবশ্যই ক্যানোনিকাল চেইনে সেই ব্লকটির অন্তর্ভুক্তির পক্ষে ভোট দিতে হবে। এই শর্তটি ব্লকটিকে "যৌক্তিক (justified)" হিসেবে আপগ্রেড করে। জাস্টিফাইড ব্লকস রিভার্ট হওয়ার সম্ভাবনা কম, তবে নির্দিষ্ট শর্তের অধীনে এগুলো রিভার্ট হতে পারে।
+2. যখন একটি জাস্টিফাইড ব্লকের উপরে আরেকটি ব্লক জাস্টিফাইড হয়, তখন এটি "চূড়ান্ত (finalized)" হিসেবে আপগ্রেড হয়। একটি ব্লক চূড়ান্ত করা মানে ক্যানোনিকাল চেইনে ব্লকটিকে অন্তর্ভুক্ত করার একটি প্রতিশ্রুতি। কোনো আক্রমণকারী লক্ষ লক্ষ ইথার (বিলিয়ন বিলিয়ন $USD) ধ্বংস না করা পর্যন্ত এটিকে রিভার্ট করা যাবে না।
-এই ব্লক আপগ্রেডগুলি প্রতিটি স্লটে ঘটে না। পরিবর্তে, শুধুমাত্র ইপক-বাউন্ডারি ব্লকগুলিকেই যৌক্তিক এবং চূড়ান্ত করা যেতে পারে। এই ব্লকগুলি "চেকপয়েন্ট" নামে পরিচিত। আপগ্রেড করার সময় এক জোড়া চেকপয়েন্ট বিবেচনা করা হয়। কম সাম্প্রতিক চেকপয়েন্টকে চূড়ান্ত এবং আরও সাম্প্রতিক ব্লককে যৌক্তিক করতে আপগ্রেড করার জন্য দুটি ধারাবাহিক চেকপয়েন্টের মধ্যে একটি "সুপারমেজরিটি লিঙ্ক" থাকতে হবে (অর্থাৎ, মোট স্টেক করা ইথারের দুই-তৃতীয়াংশের ভোট দেওয়া যে চেকপয়েন্ট B হল চেকপয়েন্ট A-এর সঠিক উত্তরসূরি)।
+এই ব্লক আপগ্রেডগুলো প্রতিটি স্লটে ঘটে না। এর পরিবর্তে, শুধুমাত্র এপোক-বাউন্ডারি ব্লকস জাস্টিফাইড এবং চূড়ান্ত করা যেতে পারে। এই ব্লকস "চেকপয়েন্ট" হিসেবে পরিচিত। আপগ্রেডিং চেকপয়েন্টের জোড়া বিবেচনা করে। কম সাম্প্রতিক চেকপয়েন্টটিকে চূড়ান্ত এবং আরও সাম্প্রতিক ব্লকটিকে জাস্টিফাইড হিসেবে আপগ্রেড করার জন্য দুটি ধারাবাহিক চেকপয়েন্টের মধ্যে একটি "সুপারমেজরিটি লিঙ্ক" থাকতে হবে (অর্থাৎ, মোট স্টেক করা ইথারের দুই-তৃতীয়াংশ ভোট দেয় যে চেকপয়েন্ট B হলো চেকপয়েন্ট A-এর সঠিক উত্তরসূরি)।
-যেহেতু চূড়ান্ততার জন্য একটি ব্লকের ক্যানোনিকাল হওয়ার জন্য দুই-তৃতীয়াংশের চুক্তির প্রয়োজন হয়, তাই একজন আক্রমণকারী নিম্নলিখিতগুলি ছাড়া কোনো বিকল্প চূড়ান্ত চেইন তৈরি করতে পারে না:
+যেহেতু ফাইনালিটি-র জন্য একটি ব্লক ক্যানোনিকাল হওয়ার বিষয়ে দুই-তৃতীয়াংশের সম্মতি প্রয়োজন, তাই একজন আক্রমণকারী নিম্নলিখিত শর্তগুলো ছাড়া কোনো বিকল্প চূড়ান্ত চেইন তৈরি করতে পারে না:
-1. মোট স্টেক করা ইথারের দুই-তৃতীয়াংশের মালিকানা বা কারসাজি করা।
+1. মোট স্টেক করা ইথারের দুই-তৃতীয়াংশের মালিকানা বা ম্যানিপুলেট করা।
2. মোট স্টেক করা ইথারের অন্তত এক-তৃতীয়াংশ ধ্বংস করা।
-প্রথম শর্তটি দেখা দেয় কারণ একটি চেইনকে চূড়ান্ত করতে স্টেক করা ইথারের দুই-তৃতীয়াংশের প্রয়োজন। দ্বিতীয় শর্তটি দেখা দেয় কারণ যদি মোট স্টেকের দুই-তৃতীয়াংশ উভয় ফর্কের পক্ষে ভোট দিয়ে থাকে, তাহলে এক-তৃতীয়াংশকে অবশ্যই উভয়ের উপর ভোট দিতে হবে। ডাবল-ভোটিং একটি স্ল্যাশিং শর্ত যা সর্বোচ্চ শাস্তিযোগ্য, এবং মোট স্টেকের এক-তৃতীয়াংশ ধ্বংস হয়ে যাবে। মে 2022 অনুযায়ী, এর জন্য একজন আক্রমণকারীকে প্রায় $10 বিলিয়ন মূল্যের ইথার পোড়াতে হবে। গ্যাস্পারে যে অ্যালগরিদম ব্লকগুলিকে যৌক্তিক এবং চূড়ান্ত করে, তা হল [Casper the Friendly Finality Gadget (Casper-FFG)](https://arxiv.org/pdf/1710.09437.pdf)-এর একটি সামান্য পরিবর্তিত রূপ।
+প্রথম শর্তটি দেখা দেয় কারণ একটি চেইন চূড়ান্ত করতে স্টেক করা ইথারের দুই-তৃতীয়াংশ প্রয়োজন। দ্বিতীয় শর্তটি দেখা দেয় কারণ যদি মোট স্টেক-এর দুই-তৃতীয়াংশ উভয় ফর্ক-এর পক্ষে ভোট দিয়ে থাকে, তবে এক-তৃতীয়াংশকে অবশ্যই উভয়টিতে ভোট দিতে হবে। ডাবল-ভোটিং হলো একটি স্ল্যাশিং শর্ত যার জন্য সর্বোচ্চ শাস্তি দেওয়া হবে এবং মোট স্টেক-এর এক-তৃতীয়াংশ ধ্বংস হয়ে যাবে। মে 2022 পর্যন্ত, এর জন্য একজন আক্রমণকারীকে প্রায় 10 বিলিয়ন ডলার মূল্যের ইথার পোড়াতে হবে। গ্যাসপারে ব্লকস জাস্টিফাই এবং চূড়ান্ত করার এ্যালগরিদম হলো [ক্যাসপার দ্য ফ্রেন্ডলি ফাইনালিটি গ্যাজেট (Casper-FFG)](https://arxiv.org/pdf/1710.09437.pdf)-এর একটি সামান্য পরিবর্তিত রূপ।
-### ইনসেনটিভ এবং স্ল্যাশিং {#incentives-and-slashing}
+### ইনসেন্টিভ এবং স্ল্যাশিং {#incentives-and-slashing}
-ভ্যালিডেটররা সৎভাবে ব্লক প্রস্তাব এবং ভ্যালিডেট করার জন্য পুরস্কৃত হয়। ইথার পুরস্কৃত করা হয় এবং তাদের স্টেকে যোগ করা হয়। অন্যদিকে, যে ভ্যালিডেটররা অনুপস্থিত থাকে এবং যখন কাজ করার জন্য ডাকা হয় তখন কাজ করতে ব্যর্থ হয়, তারা এই পুরস্কারগুলি থেকে বঞ্চিত হয় এবং কখনও কখনও তাদের বিদ্যমান স্টেকের একটি ছোট অংশ হারায়। যাইহোক, অফলাইন থাকার জন্য জরিমানা সামান্য এবং বেশিরভাগ ক্ষেত্রে, পুরস্কার হারানোর সুযোগ ব্যয়ের সমান। যাইহোক, কিছু ভ্যালিডেটর ক্রিয়া দুর্ঘটনাক্রমে করা খুব কঠিন এবং কিছু দূষিত উদ্দেশ্যকে বোঝায়, যেমন একই স্লটের জন্য একাধিক ব্লক প্রস্তাব করা, একই স্লটের জন্য একাধিক ব্লকে অ্যাটেস্টিং করা, বা পূর্ববর্তী চেকপয়েন্ট ভোটের বিরোধিতা করা। এগুলি হল "স্ল্যাশযোগ্য" আচরণ যেগুলিকে আরও কঠোরভাবে শাস্তি দেওয়া হয়—স্ল্যাশিং-এর ফলে ভ্যালিডেটরের স্টেকের কিছু অংশ ধ্বংস হয়ে যায় এবং ভ্যালিডেটরকে ভ্যালিডেটরদের নেটওয়ার্ক থেকে সরিয়ে দেওয়া হয়। এই প্রক্রিয়াটি 36 দিন সময় নেয়। প্রথম দিনে, 1 ETH পর্যন্ত প্রাথমিক জরিমানা রয়েছে। তারপর স্ল্যাশ করা ভ্যালিডেটরের ইথার ধীরে ধীরে এক্সিট পিরিয়ড জুড়ে শেষ হয়ে যায়, কিন্তু 18তম দিনে, তারা একটি "কোরিলেশন পেনাল্টি" পায়, যা একই সময়ে আরও বেশি ভ্যালিডেটর স্ল্যাশ করা হলে আরও বড় হয়। সর্বোচ্চ জরিমানা হল সম্পূর্ণ স্টেক। এই পুরস্কার এবং জরিমানাগুলি সৎ ভ্যালিডেটরদের উৎসাহিত করতে এবং নেটওয়ার্কে আক্রমণকে নিরুৎসাহিত করার জন্য ডিজাইন করা হয়েছে।
+সততার সাথে ব্লকস প্রস্তাব এবং যাচাই করার জন্য ভ্যালিডেটরস পুরস্কৃত হয়। ইথার পুরস্কার হিসেবে দেওয়া হয় এবং তাদের স্টেক-এ যোগ করা হয়। অন্যদিকে, যে ভ্যালিডেটরস অনুপস্থিত থাকে এবং ডাকলে কাজ করতে ব্যর্থ হয় তারা এই পুরস্কারগুলো থেকে বঞ্চিত হয় এবং কখনও কখনও তাদের বিদ্যমান স্টেক-এর একটি ছোট অংশ হারায়। যাইহোক, অফলাইনে থাকার জরিমানা ছোট এবং বেশিরভাগ ক্ষেত্রে, এটি পুরস্কার হারানোর সুযোগ ব্যয়ের সমতুল্য। যাইহোক, কিছু ভ্যালিডেটর অ্যাকশন দুর্ঘটনাবশত করা খুব কঠিন এবং এটি কোনো ক্ষতিকারক উদ্দেশ্য নির্দেশ করে, যেমন একই স্লটের জন্য একাধিক ব্লকস প্রস্তাব করা, একই স্লটের জন্য একাধিক ব্লকস-এ এটেস্টেশন করা, বা পূর্ববর্তী চেকপয়েন্ট ভোটের বিরোধিতা করা। এগুলো হলো "স্ল্যাশেবল" আচরণ যার জন্য আরও কঠোর শাস্তি দেওয়া হয়—স্ল্যাশিং-এর ফলে ভ্যালিডেটরের স্টেক-এর কিছু অংশ ধ্বংস হয়ে যায় এবং ভ্যালিডেটরকে ভ্যালিডেটরস-এর নেটওয়ার্ক থেকে সরিয়ে দেওয়া হয়। এই প্রক্রিয়ায় 36 দিন সময় লাগে। 1ম দিনে, 1 ETH পর্যন্ত প্রাথমিক জরিমানা রয়েছে। তারপর স্ল্যাশ হওয়া ভ্যালিডেটরের ইথার প্রস্থান সময়কাল জুড়ে ধীরে ধীরে শেষ হয়ে যায়, কিন্তু 18 তম দিনে, তারা একটি "কোরিলেশন পেনাল্টি" পায়, যা একই সময়ে আরও বেশি ভ্যালিডেটরস স্ল্যাশ হলে বড় হয়। সর্বোচ্চ জরিমানা হলো সম্পূর্ণ স্টেক। এই পুরস্কার এবং জরিমানাগুলো সৎ ভ্যালিডেটরস-কে উৎসাহিত করতে এবং নেটওয়ার্ক-এ আক্রমণ নিরুৎসাহিত করার জন্য ডিজাইন করা হয়েছে।
-### নিষ্ক্রিয়তা লিক {#inactivity-leak}
+### ইনঅ্যাক্টিভিটি লিক {#inactivity-leak}
-নিরাপত্তার পাশাপাশি, গ্যাস্পার "বিশ্বাসযোগ্য লাইভনেস" প্রদান করে। এটি এমন একটি শর্ত যে যতক্ষণ পর্যন্ত মোট স্টেক করা ইথারের দুই-তৃতীয়াংশ সততার সাথে ভোট দিচ্ছে এবং প্রোটোকল অনুসরণ করছে, ততক্ষণ চেইনটি অন্য কোনও কার্যকলাপ (যেমন আক্রমণ, লেটেন্সি সমস্যা বা স্ল্যাশিং) নির্বিশেষে চূড়ান্ত হতে সক্ষম হবে। অন্যভাবে বলতে গেলে, চেইনকে চূড়ান্ত হওয়া থেকে আটকাতে মোট স্টেক করা ইথারের এক-তৃতীয়াংশকে কোনোভাবে আপোস করতে হবে। গ্যাস্পারে, লাইভনেস ব্যর্থতার বিরুদ্ধে একটি অতিরিক্ত প্রতিরক্ষা ব্যবস্থা রয়েছে, যা "নিষ্ক্রিয়তা লিক" নামে পরিচিত। এই মেকানিজমটি সক্রিয় হয় যখন চেইনটি চারটিরও বেশি ইপক ধরে চূড়ান্ত হতে ব্যর্থ হয়। যেসব ভ্যালিডেটর সক্রিয়ভাবে মেজরিটি চেইনে অ্যাটেস্টিং করছে না, তাদের স্টেক ধীরে ধীরে নিঃশেষ হয়ে যায় যতক্ষণ না মেজরিটি মোট স্টেকের দুই-তৃতীয়াংশ ফিরে পায়, এটি নিশ্চিত করে যে লাইভনেস ব্যর্থতা শুধুমাত্র অস্থায়ী।
+নিরাপত্তার পাশাপাশি, গ্যাসপার "প্লাসিবল লাইভনেস"ও প্রদান করে। এটি এমন একটি শর্ত যে যতক্ষণ পর্যন্ত মোট স্টেক করা ইথারের দুই-তৃতীয়াংশ সততার সাথে ভোট দিচ্ছে এবং প্রটোকল অনুসরণ করছে, চেইনটি অন্য কোনো কার্যকলাপ (যেমন আক্রমণ, লেটেন্সি সমস্যা বা স্ল্যাশিং) নির্বিশেষে চূড়ান্ত হতে সক্ষম হবে। অন্যভাবে বললে, চেইনটিকে চূড়ান্ত হওয়া থেকে আটকাতে মোট স্টেক করা ইথারের এক-তৃতীয়াংশকে কোনো না কোনোভাবে আপস করতে হবে। গ্যাসপারে, লাইভনেস ব্যর্থতার বিরুদ্ধে প্রতিরক্ষার একটি অতিরিক্ত লাইন রয়েছে, যা "ইনঅ্যাক্টিভিটি লিক" নামে পরিচিত। এই মেকানিজমটি তখন সক্রিয় হয় যখন চেইনটি চারটির বেশি এপোক-এর জন্য চূড়ান্ত হতে ব্যর্থ হয়। যে ভ্যালিডেটরস সক্রিয়ভাবে মেজরিটি চেইনে এটেস্টেশন করছে না তাদের স্টেক ধীরে ধীরে শেষ হয়ে যায় যতক্ষণ না মেজরিটি মোট স্টেক-এর দুই-তৃতীয়াংশ ফিরে পায়, যা নিশ্চিত করে যে লাইভনেস ব্যর্থতাগুলো কেবল অস্থায়ী।
-### ফর্ক পছন্দ {#fork-choice}
+### ফর্ক চয়েস {#fork-choice}
-Casper-FFG-এর মূল সংজ্ঞায় একটি ফর্ক চয়েস অ্যালগরিদম অন্তর্ভুক্ত ছিল যা এই নিয়মটি আরোপ করেছিল: `সেই চেইনটি অনুসরণ করুন যেখানে সর্বোচ্চ উচ্চতার যৌক্তিক চেকপয়েন্ট রয়েছে` যেখানে উচ্চতাকে জেনেসিস ব্লক থেকে সর্বাধিক দূরত্ব হিসাবে সংজ্ঞায়িত করা হয়। গ্যাস্পারে, আসল ফর্ক চয়েস নিয়মটি LMD-GHOST নামক একটি আরও পরিশীলিত অ্যালগরিদমের পক্ষে বাতিল করা হয়েছে। এটা বোঝা গুরুত্বপূর্ণ যে সাধারণ পরিস্থিতিতে, একটি ফর্ক চয়েস নিয়মের প্রয়োজন নেই - প্রতিটি স্লটের জন্য একটি একক ব্লক প্রোপোজার থাকে এবং সৎ ভ্যালিডেটররা এতে অ্যাটেস্টিং করে। শুধুমাত্র বড় নেটওয়ার্ক অ্যাসিঙ্ক্রোনিসিটির ক্ষেত্রে বা যখন একজন অসৎ ব্লক প্রোপোজার দ্ব্যর্থবোধক কথা বলে, তখনই একটি ফর্ক চয়েস অ্যালগরিদমের প্রয়োজন হয়। যাইহোক, যখন সেই ঘটনাগুলি ঘটে, তখন ফর্ক চয়েস অ্যালগরিদম একটি গুরুত্বপূর্ণ প্রতিরক্ষা যা সঠিক চেইনকে সুরক্ষিত করে।
+Casper-FFG-এর মূল সংজ্ঞায় একটি ফর্ক চয়েস এ্যালগরিদম অন্তর্ভুক্ত ছিল যা এই নিয়মটি আরোপ করেছিল: `follow the chain containing the justified checkpoint that has the greatest height` যেখানে উচ্চতাকে জেনেসিস ব্লক থেকে সর্বাধিক দূরত্ব হিসেবে সংজ্ঞায়িত করা হয়। গ্যাসপারে, LMD-GHOST নামক একটি আরও পরিশীলিত এ্যালগরিদম-এর পক্ষে মূল ফর্ক চয়েস নিয়মটি বাতিল করা হয়েছে। এটি উপলব্ধি করা গুরুত্বপূর্ণ যে স্বাভাবিক পরিস্থিতিতে, একটি ফর্ক চয়েস নিয়ম অপ্রয়োজনীয় - প্রতিটি স্লটের জন্য একটি একক ব্লক প্রপোজার থাকে এবং সৎ ভ্যালিডেটরস এতে এটেস্টেশন করে। শুধুমাত্র বড় নেটওয়ার্ক অসিঙ্ক্রোনিসিটির ক্ষেত্রে বা যখন একজন অসৎ ব্লক প্রপোজার দ্ব্যর্থবোধক আচরণ করে তখনই একটি ফর্ক চয়েস এ্যালগরিদম প্রয়োজন হয়। যাইহোক, যখন সেই ঘটনাগুলো ঘটে, তখন ফর্ক চয়েস এ্যালগরিদম হলো একটি গুরুত্বপূর্ণ প্রতিরক্ষা যা সঠিক চেইনকে সুরক্ষিত করে।
-LMD-GHOST-এর পূর্ণরূপ হল "লেটেস্ট মেসেজ-ড্রিভেন গ্রিডি হেভিয়েস্ট অবজার্ভড সাব-ট্রি"। এটি একটি পরিভাষা-বহুল উপায় একটি অ্যালগরিদমকে সংজ্ঞায়িত করার, যা অ্যাটেস্টেশনের সর্বাধিক সঞ্চিত ওজন সহ ফর্কটিকে ক্যানোনিকাল হিসাবে নির্বাচন করে (গ্রিডি হেভিয়েস্ট সাবট্রি) এবং যদি একজন ভ্যালিডেটরের কাছ থেকে একাধিক বার্তা পাওয়া যায়, তবে শুধুমাত্র সর্বশেষটি বিবেচনা করা হয় (লেটেস্ট-মেসেজ ড্রিভেন)। সবচেয়ে ভারী ব্লকটিকে তার ক্যানোনিকাল চেইনে যোগ করার আগে, প্রতিটি ভ্যালিডেটর এই নিয়মটি ব্যবহার করে প্রতিটি ব্লক মূল্যায়ন করে।
+LMD-GHOST এর পূর্ণরূপ হলো "latest message-driven greedy heaviest observed sub-tree"। এটি একটি এ্যালগরিদম সংজ্ঞায়িত করার একটি শব্দবহুল উপায় যা এটেস্টেশন-এর সর্বাধিক পুঞ্জীভূত ওজনসহ ফর্ক-টিকে ক্যানোনিকাল (greedy heaviest subtree) হিসেবে নির্বাচন করে এবং যদি কোনো ভ্যালিডেটর থেকে একাধিক বার্তা পাওয়া যায়, তবে শুধুমাত্র সর্বশেষটি বিবেচনা করা হয় (latest-message driven)। সবচেয়ে ভারী ব্লকটিকে এর ক্যানোনিকাল চেইনে যুক্ত করার আগে, প্রতিটি ভ্যালিডেটর এই নিয়মটি ব্যবহার করে প্রতিটি ব্লক মূল্যায়ন করে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [গ্যাস্পার: GHOST এবং Casper-এর সমন্বয়](https://arxiv.org/pdf/2003.03052.pdf)
-- [Casper the Friendly Finality Gadget](https://arxiv.org/pdf/1710.09437.pdf)
+- [Gasper: Combining GHOST and Casper](https://arxiv.org/pdf/2003.03052.pdf)
+- [Casper the Friendly Finality Gadget](https://arxiv.org/pdf/1710.09437.pdf)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/index.md
index d9281804204..3a6d737ce13 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/index.md
@@ -1,99 +1,99 @@
---
-title: "প্রুফ-অফ-স্টেক (PoS)"
-description: "প্রুফ-অফ-স্টেক কনসেন্সাস প্রোটোকল এবং Ethereum-এ এর ভূমিকা সম্পর্কে একটি ব্যাখ্যা।"
+title: প্রুফ-অফ-স্টেক (PoS)
+description: প্রুফ-অফ-স্টেক কনসেন্সাস প্রটোকল এবং ইথিরিয়ামে এর ভূমিকার একটি ব্যাখ্যা।
lang: bn
---
-প্রুফ-অফ-স্টেক (PoS) হল Ethereum-এর [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/)-এর ভিত্তি। Ethereum 2022 সালে তার প্রুফ-অফ-স্টেক মেকানিজমে পরিবর্তন করে কারণ এটি পূর্ববর্তী [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow) আর্কিটেকচারের তুলনায় আরও বেশি সুরক্ষিত, কম শক্তি-নিবিড় এবং নতুন স্কেলিং সমাধান বাস্তবায়নের জন্য উন্নত।
+প্রুফ-অফ-স্টেক (PoS) ইথিরিয়ামের [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/)-এর ভিত্তি। ইথিরিয়াম 2022 সালে এর প্রুফ-অফ-স্টেক মেকানিজম চালু করে কারণ এটি পূর্ববর্তী [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow) আর্কিটেকচারের তুলনায় বেশি সুরক্ষিত, কম শক্তি-নিবিড় এবং নতুন স্কেলিং সমাধানগুলো বাস্তবায়নের জন্য আরও ভালো।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) সম্পর্কে পড়ে নেওয়ার সুপারিশ করছি।
+এই পেজটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) সম্পর্কে পড়ে নিন।
## প্রুফ-অফ-স্টেক (PoS) কী? {#what-is-pos}
-প্রুফ-অফ-স্টেক হল এটি প্রমাণ করার একটি উপায় যে ভ্যালিডেটররা নেটওয়ার্কে মূল্যবান কিছু রেখেছে যা তারা অসাধুভাবে কাজ করলে ধ্বংস করা যেতে পারে। Ethereum-এর প্রুফ-অফ-স্টেক-এ, ভ্যালিডেটররা Ethereum-এর একটি স্মার্ট কন্ট্র্যাক্টে ETH-এর আকারে মূলধন হিসেবে সুস্পষ্টভাবে স্টেক করে। ভ্যালিডেটর তখন নেটওয়ার্কের মাধ্যমে প্রচারিত নতুন ব্লকগুলো বৈধ কিনা তা পরীক্ষা করার জন্য এবং মাঝে মাঝে নিজেরাই নতুন ব্লক তৈরি এবং প্রচার করার জন্য দায়ী থাকে। যদি তারা নেটওয়ার্ককে প্রতারণা করার চেষ্টা করে (উদাহরণস্বরূপ, যখন তাদের একটি ব্লক পাঠানোর কথা তখন একাধিক ব্লক প্রস্তাব করা বা পরস্পরবিরোধী অ্যাটাস্টেশন পাঠানো), তাহলে তাদের স্টেক করা ETH-এর কিছু বা সমস্ত অংশ ধ্বংস করা যেতে পারে।
+প্রুফ-অফ-স্টেক হলো এমন একটি উপায় যা প্রমাণ করে যে ভ্যালিডেটরস নেটওয়ার্কে মূল্যবান কিছু রেখেছে যা তারা অসততার সাথে কাজ করলে ধ্বংস হয়ে যেতে পারে। [ইথিরিয়ামের](/) প্রুফ-অফ-স্টেকে, ভ্যালিডেটরস ইথিরিয়ামের একটি স্মার্ট কন্ট্রাক্ট-এ ETH আকারে মূলধন স্টেক করে। এরপর ভ্যালিডেটর নেটওয়ার্কে প্রচারিত নতুন ব্লকস বৈধ কিনা তা যাচাই করার জন্য এবং মাঝে মাঝে নিজেরা নতুন ব্লকস তৈরি ও প্রচার করার জন্য দায়ী থাকে। যদি তারা নেটওয়ার্কের সাথে প্রতারণা করার চেষ্টা করে (উদাহরণস্বরূপ, যখন তাদের একটি ব্লক পাঠানো উচিত তখন একাধিক ব্লক প্রস্তাব করা বা সাংঘর্ষিক এটেস্টেশন পাঠানো), তবে তাদের স্টেক করা ETH-এর কিছু অংশ বা সম্পূর্ণ ধ্বংস হয়ে যেতে পারে।
-## ভ্যালিডেটর {#validators}
+## ভ্যালিডেটরস {#validators}
-একজন ভ্যালিডেটর হিসেবে অংশগ্রহণ করার জন্য, একজন ব্যবহারকারীকে অবশ্যই ডিপোজিট কন্ট্র্যাক্টে 32 ETH জমা দিতে হবে এবং তিনটি পৃথক সফটওয়্যার চালাতে হবে: একটি এক্সিকিউশন ক্লায়েন্ট, একটি কনসেন্সাস ক্লায়েন্ট এবং একটি ভ্যালিডেটর ক্লায়েন্ট। তাদের ETH জমা দেওয়ার পরে, ব্যবহারকারী একটি অ্যাক্টিভেশন কিউতে যোগদান করে যা নেটওয়ার্কে নতুন ভ্যালিডেটরদের যোগদানের হারকে সীমিত করে। একবার সক্রিয় হয়ে গেলে, ভ্যালিডেটররা Ethereum নেটওয়ার্কের পিয়ারদের থেকে নতুন ব্লক গ্রহণ করে। ব্লকে ডেলিভার করা ট্রানজ্যাকশনগুলো পুনরায় এক্সিকিউট করা হয় এটি পরীক্ষা করতে যে Ethereum-এর স্টেটে প্রস্তাবিত পরিবর্তনগুলো বৈধ, এবং ব্লকের সিগনেচার পরীক্ষা করা হয়। তারপর ভ্যালিডেটর নেটওয়ার্ক জুড়ে সেই ব্লকের পক্ষে একটি ভোট (যাকে অ্যাটাস্টেশন বলা হয়) পাঠায়।
+একজন ভ্যালিডেটর হিসেবে অংশগ্রহণ করতে, একজন ব্যবহারকারীকে ডিপোজিট কন্টাক্ট-এ 32 ETH জমা দিতে হবে এবং তিনটি আলাদা সফটওয়্যার চালাতে হবে: একটি এক্সিকিউশন ক্লায়েন্ট, একটি কনসেন্সাস ক্লায়েন্ট এবং একটি ভ্যালিডেটর ক্লায়েন্ট। তাদের ETH জমা দেওয়ার পর, ব্যবহারকারী একটি অ্যাক্টিভেশন সারিতে যোগ দেয় যা নেটওয়ার্কে নতুন ভ্যালিডেটরস যোগ দেওয়ার হার সীমিত করে। একবার সক্রিয় হয়ে গেলে, ভ্যালিডেটরস ইথিরিয়াম নেটওয়ার্কের পিয়ারদের কাছ থেকে নতুন ব্লকস গ্রহণ করে। ব্লকে সরবরাহ করা লেনদেন পুনরায় এক্সিকিউট করা হয় যাতে ইথিরিয়ামের স্টেট-এ প্রস্তাবিত পরিবর্তনগুলো বৈধ কিনা তা যাচাই করা যায় এবং ব্লক সিগনেচার চেক করা হয়। এরপর ভ্যালিডেটর নেটওয়ার্ক জুড়ে সেই ব্লকের পক্ষে একটি ভোট (যাকে এটেস্টেশন বলা হয়) পাঠায়।
-যেখানে প্রুফ-অফ-ওয়ার্ক-এর অধীনে, ব্লকের সময় মাইনিং ডিফিকাল্টি দ্বারা নির্ধারিত হয়, সেখানে প্রুফ-অফ-স্টেক-এ টেম্পো স্থির থাকে। প্রুফ-অফ-স্টেক Ethereum-এ সময়কে স্লট (12 সেকেন্ড) এবং ইপক (32 স্লট)-এ ভাগ করা হয়। প্রতিটি স্লটে একজন ভ্যালিডেটরকে এলোমেলোভাবে ব্লক প্রপোজার হিসেবে নির্বাচিত করা হয়। এই ভ্যালিডেটর একটি নতুন ব্লক তৈরি করে এবং নেটওয়ার্কের অন্যান্য নোডগুলিতে পাঠানোর জন্য দায়ী থাকে। এছাড়াও প্রতিটি স্লটে, ভ্যালিডেটরদের একটি কমিটি এলোমেলোভাবে বেছে নেওয়া হয়, যাদের ভোট প্রস্তাবিত ব্লকের বৈধতা নির্ধারণ করতে ব্যবহৃত হয়। ভ্যালিডেটর সেটকে কমিটিগুলিতে ভাগ করা নেটওয়ার্কের লোড পরিচালনাযোগ্য রাখার জন্য গুরুত্বপূর্ণ। কমিটিগুলো ভ্যালিডেটর সেটকে এমনভাবে ভাগ করে যে প্রতিটি সক্রিয় ভ্যালিডেটর প্রতিটি ইপকে অ্যাটেস্ট করে, কিন্তু প্রতিটি স্লটে নয়।
+যেখানে প্রুফ-অফ-ওয়ার্ক-এর অধীনে, ব্লকস-এর সময় মাইনিংয়ের অসুবিধার দ্বারা নির্ধারিত হয়, প্রুফ-অফ-স্টেকে, এর গতি নির্দিষ্ট থাকে। প্রুফ-অফ-স্টেক ইথিরিয়ামে সময়কে স্লট (12 সেকেন্ড) এবং এপোক (32 স্লট)-এ ভাগ করা হয়। প্রতিটি স্লটে একজন ভ্যালিডেটরকে এলোমেলোভাবে ব্লক প্রপোজার হিসেবে নির্বাচিত করা হয়। এই ভ্যালিডেটর একটি নতুন ব্লক তৈরি করতে এবং নেটওয়ার্কের অন্যান্য নোড-এ পাঠাতে দায়ী থাকে। এছাড়াও প্রতিটি স্লটে, ভ্যালিডেটরস-এর একটি কমিটি এলোমেলোভাবে বেছে নেওয়া হয়, যাদের ভোট প্রস্তাবিত ব্লকের বৈধতা নির্ধারণ করতে ব্যবহৃত হয়। নেটওয়ার্ক লোড পরিচালনাযোগ্য রাখার জন্য ভ্যালিডেটর সেটকে কমিটিতে ভাগ করা গুরুত্বপূর্ণ। কমিটিগুলো ভ্যালিডেটর সেটকে এমনভাবে ভাগ করে যাতে প্রতিটি সক্রিয় ভ্যালিডেটর প্রতিটি এপোক-এ এটেস্টেশন দেয়, কিন্তু প্রতিটি স্লটে নয়।
-## Ethereum PoS-এ একটি ট্রানজ্যাকশন কিভাবে এক্সিকিউট হয় {#transaction-execution-ethereum-pos}
+## ইথিরিয়াম PoS-এ কীভাবে একটি লেনদেন এক্সিকিউট হয় {#transaction-execution-ethereum-pos}
-নিচে Ethereum প্রুফ-অফ-স্টেক-এ কীভাবে একটি ট্রানজ্যাকশন এক্সিকিউট করা হয় তার একটি এন্ড-টু-এন্ড ব্যাখ্যা প্রদান করা হলো।
+নিচে ইথিরিয়াম প্রুফ-অফ-স্টেকে কীভাবে একটি লেনদেন এক্সিকিউট হয় তার একটি শুরু থেকে শেষ পর্যন্ত ব্যাখ্যা দেওয়া হলো।
-1. একজন ব্যবহারকারী তাদের প্রাইভেট কী দিয়ে একটি [ট্রানজ্যাকশন](/developers/docs/transactions/) তৈরি করে এবং সাইন করে। এটি সাধারণত একটি ওয়ালেট বা [ethers.js](https://docs.ethers.org/v6/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/) ইত্যাদির মতো একটি লাইব্রেরি দ্বারা পরিচালিত হয়, কিন্তু পর্দার আড়ালে ব্যবহারকারী Ethereum [JSON-RPC API](/developers/docs/apis/json-rpc/) ব্যবহার করে একটি নোডে অনুরোধ করে। ব্যবহারকারী গ্যাসের পরিমাণ নির্ধারণ করে যা তারা একজন ভ্যালিডেটরকে টিপস হিসেবে দিতে প্রস্তুত, যাতে তারা ব্লকটিতে ট্রানজ্যাকশনটি অন্তর্ভুক্ত করতে উৎসাহিত হয়। [টিপস](/developers/docs/gas/#priority-fee) ভ্যালিডেটরকে প্রদান করা হয়, যেখানে [বেস ফি](/developers/docs/gas/#base-fee) বার্ন করা হয়।
-2. ট্রানজ্যাকশনটি একটি Ethereum [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-client)-এ জমা দেওয়া হয় যা এর বৈধতা যাচাই করে। এর মানে হল নিশ্চিত করা যে প্রেরকের কাছে ট্রানজ্যাকশনটি পূরণ করার জন্য যথেষ্ট ETH আছে এবং তারা সঠিক কী দিয়ে এটি সাইন করেছে।
-3. ট্রানজ্যাকশনটি বৈধ হলে, এক্সিকিউশন ক্লায়েন্ট এটিকে তার স্থানীয় মেমপুলে (মুলতুবি থাকা ট্রানজ্যাকশনের তালিকা) যোগ করে এবং এক্সিকিউশন লেয়ার গসিপ নেটওয়ার্কের মাধ্যমে অন্যান্য নোডগুলিতে এটি সম্প্রচার করে। যখন অন্যান্য নোডগুলো ট্রানজ্যাকশনটি সম্পর্কে জানতে পারে, তখন তারাও এটিকে তাদের স্থানীয় মেমপুলে যোগ করে। উন্নত ব্যবহারকারীরা তাদের ট্রানজ্যাকশন সম্প্রচার করা থেকে বিরত থাকতে পারে এবং পরিবর্তে এটি [Flashbots Auction](https://docs.flashbots.net/flashbots-auction/overview)-এর মতো বিশেষ ব্লক বিল্ডারদের কাছে ফরোয়ার্ড করতে পারে। এটি তাদের সর্বোচ্চ লাভের জন্য আসন্ন ব্লকগুলিতে ট্রানজ্যাকশনগুলো সংগঠিত করার অনুমতি দেয় ([MEV](/developers/docs/mev/#mev-extraction))।
-4. নেটওয়ার্কের একটি ভ্যালিডেটর নোড হল বর্তমান স্লটের ব্লক প্রপোজার, যা পূর্বে RANDAO ব্যবহার করে ছদ্ম-এলোমেলোভাবে নির্বাচিত হয়েছে। এই নোডটি Ethereum ব্লকচেইনে যোগ করার জন্য পরবর্তী ব্লক তৈরি এবং সম্প্রচার করা এবং গ্লোবাল স্টেট আপডেট করার জন্য দায়ী। নোডটি তিনটি অংশ নিয়ে গঠিত: একটি এক্সিকিউশন ক্লায়েন্ট, একটি কনসেন্সাস ক্লায়েন্ট এবং একটি ভ্যালিডেটর ক্লায়েন্ট। এক্সিকিউশন ক্লায়েন্ট স্থানীয় মেমপুল থেকে ট্রানজ্যাকশনগুলোকে একটি "এক্সিকিউশন পেলোড"-এ বান্ডিল করে এবং একটি স্টেট পরিবর্তন তৈরি করার জন্য স্থানীয়ভাবে সেগুলোকে এক্সিকিউট করে। এই তথ্যটি কনসেন্সাস ক্লায়েন্টের কাছে পাঠানো হয় যেখানে এক্সিকিউশন পেলোড একটি "বিকন ব্লক"-এর অংশ হিসাবে মোড়ানো থাকে, যেটিতে পুরস্কার, জরিমানা, স্ল্যাশিং, অ্যাটাস্টেশন ইত্যাদি সম্পর্কিত তথ্যও থাকে যা নেটওয়ার্ককে চেইনের হেডে থাকা ব্লকের ক্রম সম্পর্কে একমত হতে সক্ষম করে। এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টদের মধ্যে যোগাযোগ সম্পর্কে [কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্টদের সংযোগ করা](/developers/docs/networking-layer/#connecting-clients)-এ আরও বিস্তারিতভাবে বর্ণনা করা হয়েছে।
-5. অন্যান্য নোডগুলো কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কে নতুন বিকন ব্লক গ্রহণ করে। তারা এটি তাদের এক্সিকিউশন ক্লায়েন্টের কাছে পাঠায় যেখানে ট্রানজ্যাকশনগুলো প্রস্তাবিত স্টেট পরিবর্তন বৈধ কিনা তা নিশ্চিত করার জন্য স্থানীয়ভাবে পুনরায় এক্সিকিউট করা হয়। ভ্যালিডেটর ক্লায়েন্ট তখন প্রমাণ করে যে ব্লকটি বৈধ এবং চেইনের তাদের দৃষ্টিভঙ্গিতে এটি যৌক্তিক পরবর্তী ব্লক (অর্থাৎ এটি [ফর্ক পছন্দ নিয়ম](/developers/docs/consensus-mechanisms/pos/#fork-choice)-এ সংজ্ঞায়িত অ্যাটাস্টেশনের সর্বাধিক ওজন সহ চেইনের উপর ভিত্তি করে তৈরি হয়)। ব্লকটি প্রতিটি নোডের স্থানীয় ডাটাবেসে যোগ করা হয় যা এটিতে অ্যাটেস্ট করে।
-6. যদি ট্রানজ্যাকশনটি দুটি চেকপয়েন্টের মধ্যে একটি "সুপারমেজররিটি লিঙ্ক" সহ একটি চেইনের অংশ হয়ে যায় তবে এটিকে "ফাইনাল" হিসাবে বিবেচনা করা যেতে পারে। প্রতিটি ইপকের শুরুতে চেকপয়েন্ট ঘটে এবং তারা এই বিষয়টির জন্য বিদ্যমান যে প্রতিটি স্লটে সক্রিয় ভ্যালিডেটরদের একটি উপসেট অ্যাটেস্ট করে, কিন্তু সকল সক্রিয় ভ্যালিডেটর প্রতিটি ইপকে অ্যাটেস্ট করে। সুতরাং, শুধুমাত্র ইপকগুলোর মধ্যে একটি 'সুপারমেজররিটি লিঙ্ক' প্রদর্শন করা যেতে পারে (এখানেই নেটওয়ার্কের মোট স্টেক করা ETH-এর ৬৬% দুটি চেকপয়েন্টে একমত হয়)।
+1. একজন ব্যবহারকারী তাদের প্রাইভেট কি দিয়ে একটি [লেনদেন](/developers/docs/transactions/) তৈরি করে এবং সাইন করে। এটি সাধারণত একটি ওয়ালেট বা [ethers.js](https://docs.ethers.org/v6/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/) ইত্যাদির মতো লাইব্রেরি দ্বারা পরিচালিত হয়, তবে এর পেছনে ব্যবহারকারী ইথিরিয়াম [JSON-RPC API](/developers/docs/apis/json-rpc/) ব্যবহার করে একটি নোড-এ রিকোয়েস্ট পাঠায়। ব্যবহারকারী সেই পরিমাণ গ্যাস নির্ধারণ করে যা তারা একটি ভ্যালিডেটরকে টিপ হিসেবে দিতে প্রস্তুত থাকে যাতে তারা লেনদেনটিকে একটি ব্লকে অন্তর্ভুক্ত করতে উৎসাহিত হয়। [টিপস](/developers/docs/gas/#priority-fee) ভ্যালিডেটরকে প্রদান করা হয় এবং [বেস ফি](/developers/docs/gas/#base-fee) বার্ন হয়ে যায়।
+2. লেনদেনটি একটি ইথিরিয়াম [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-client)-এ জমা দেওয়া হয় যা এর বৈধতা যাচাই করে। এর মানে হলো প্রেরকের কাছে লেনদেনটি সম্পন্ন করার জন্য পর্যাপ্ত ETH আছে এবং তারা সঠিক কি দিয়ে এটি সাইন করেছে তা নিশ্চিত করা।
+3. যদি লেনদেনটি বৈধ হয়, তবে এক্সিকিউশন ক্লায়েন্ট এটিকে তার লোকাল মেমপুলে (পেন্ডিং লেনদেনের তালিকা) যোগ করে এবং এক্সিকিউশন লেয়ার গসিপ নেটওয়ার্কের মাধ্যমে অন্যান্য নোড-এ সম্প্রচার করে। যখন অন্যান্য নোড লেনদেনটি সম্পর্কে জানতে পারে, তখন তারাও এটিকে তাদের লোকাল মেমপুলে যোগ করে। অ্যাডভান্সড ব্যবহারকারীরা তাদের লেনদেন সম্প্রচার করা থেকে বিরত থাকতে পারে এবং এর পরিবর্তে এটিকে [Flashbots Auction](https://docs.flashbots.net/flashbots-auction/overview)-এর মতো বিশেষ ব্লক বিল্ডারদের কাছে ফরোয়ার্ড করতে পারে। এটি তাদের সর্বোচ্চ লাভের জন্য আসন্ন ব্লকস-এ লেনদেনগুলো সাজানোর সুযোগ দেয় ([MEV](/developers/docs/mev/#mev-extraction))।
+4. নেটওয়ার্কের ভ্যালিডেটর নোডগুলোর মধ্যে একটি হলো বর্তমান স্লটের জন্য ব্লক প্রপোজার, যা আগে RANDAO ব্যবহার করে সিউডো-র্যান্ডমভাবে নির্বাচিত হয়েছিল। এই নোডটি ইথিরিয়াম ব্লকচেইন-এ যোগ করার জন্য পরবর্তী ব্লক তৈরি ও সম্প্রচার করতে এবং গ্লোবাল স্টেট আপডেট করার জন্য দায়ী। নোডটি তিনটি অংশ নিয়ে গঠিত: একটি এক্সিকিউশন ক্লায়েন্ট, একটি কনসেন্সাস ক্লায়েন্ট এবং একটি ভ্যালিডেটর ক্লায়েন্ট। এক্সিকিউশন ক্লায়েন্ট লোকাল মেমপুল থেকে লেনদেনগুলোকে একটি "এক্সিকিউশন পেলোড"-এ বান্ডিল করে এবং স্টেট পরিবর্তন তৈরি করতে সেগুলোকে লোকালভাবে এক্সিকিউট করে। এই তথ্যটি কনসেন্সাস ক্লায়েন্ট-এ পাঠানো হয় যেখানে এক্সিকিউশন পেলোডটিকে একটি "বিকন ব্লক"-এর অংশ হিসেবে মোড়ানো হয়, যাতে রিওয়ার্ড, পেনাল্টি, স্ল্যাশিং, এটেস্টেশন ইত্যাদি সম্পর্কে তথ্য থাকে যা নেটওয়ার্ককে চেইনের মাথায় ব্লকস-এর ক্রম সম্পর্কে একমত হতে সক্ষম করে। এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট-এর মধ্যে যোগাযোগ [কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্ট সংযুক্ত করা](/developers/docs/networking-layer/#connecting-clients)-এ আরও বিস্তারিতভাবে বর্ণনা করা হয়েছে।
+5. অন্যান্য নোড কনসেন্সাস লেয়ার গসিপ নেটওয়ার্কে নতুন বিকন ব্লক গ্রহণ করে। তারা এটিকে তাদের এক্সিকিউশন ক্লায়েন্ট-এ পাঠায় যেখানে প্রস্তাবিত স্টেট পরিবর্তন বৈধ কিনা তা নিশ্চিত করতে লেনদেনগুলো লোকালভাবে পুনরায় এক্সিকিউট করা হয়। এরপর ভ্যালিডেটর ক্লায়েন্ট এটেস্টেশন দেয় যে ব্লকটি বৈধ এবং তাদের চেইনের দৃষ্টিকোণ থেকে এটি যৌক্তিক পরবর্তী ব্লক (যার মানে এটি [ফর্ক চয়েস রুলস](/developers/docs/consensus-mechanisms/pos/#fork-choice)-এ সংজ্ঞায়িত এটেস্টেশন-এর সর্বাধিক ওজন সহ চেইনের ওপর তৈরি হয়)। ব্লকটি প্রতিটি নোড-এর লোকাল ডাটাবেসে যোগ করা হয় যা এটিকে এটেস্ট করে।
+6. লেনদেনটিকে "ফাইনাল" হিসেবে বিবেচনা করা যেতে পারে যদি এটি দুটি চেকপয়েন্টের মধ্যে একটি "সুপারমেজরিটি লিঙ্ক" সহ একটি চেইনের অংশ হয়ে যায়। চেকপয়েন্টগুলো প্রতিটি এপোক-এর শুরুতে ঘটে এবং এগুলো এই কারণে বিদ্যমান থাকে যে প্রতিটি স্লটে শুধুমাত্র সক্রিয় ভ্যালিডেটরস-এর একটি সাবসেট এটেস্টেশন দেয়, কিন্তু সমস্ত সক্রিয় ভ্যালিডেটরস প্রতিটি এপোক জুড়ে এটেস্টেশন দেয়। অতএব, শুধুমাত্র এপোকগুলোর মধ্যেই একটি 'সুপারমেজরিটি লিঙ্ক' প্রদর্শন করা যেতে পারে (এখানেই নেটওয়ার্কের মোট স্টেক করা ETH-এর 66% দুটি চেকপয়েন্টে একমত হয়)।
-ফাইনালিটি সম্পর্কে আরও বিস্তারিত নিচে পাওয়া যাবে।
+ফাইনালিটি সম্পর্কে আরও বিস্তারিত নিচে পাওয়া যাবে।
## ফাইনালিটি {#finality}
-ডিস্ট্রিবিউটেড নেটওয়ার্কে একটি ট্রানজ্যাকশনের "ফাইনালিটি" থাকে যখন এটি এমন একটি ব্লকের অংশ হয় যা বিপুল পরিমাণ ETH বার্ন করা ছাড়া পরিবর্তন করা যায় না। প্রুফ-অফ-স্টেক Ethereum-এ, এটি "চেকপয়েন্ট" ব্লক ব্যবহার করে পরিচালিত হয়। প্রতিটি ইপকের প্রথম ব্লকটি একটি চেকপয়েন্ট। ভ্যালিডেটররা চেকপয়েন্টের জোড়ার জন্য ভোট দেয় যেগুলোকে এটি বৈধ বলে মনে করে। যদি একজোড়া চেকপয়েন্ট মোট স্টেক করা ETH-এর কমপক্ষে দুই-তৃতীয়াংশের প্রতিনিধিত্বকারী ভোট আকর্ষণ করে, তবে চেকপয়েন্টগুলো আপগ্রেড করা হয়। দুটির মধ্যে সাম্প্রতিকটি (টার্গেট) "যুক্তিযুক্ত" হয়ে যায়। দুটির মধ্যে পূর্বেরটি ইতিমধ্যেই যুক্তিযুক্ত কারণ এটি পূর্ববর্তী ইপকের "টার্গেট" ছিল। এখন এটি "ফাইনাল"-এ আপগ্রেড করা হয়েছে। চেকপয়েন্ট আপগ্রেড করার এই প্রক্রিয়াটি **[ক্যাসপার দ্য ফ্রেন্ডলি ফাইনালিটি গ্যাজেট (ক্যাসপার-এফএফজি)](https://arxiv.org/pdf/1710.09437)** দ্বারা পরিচালিত হয়। ক্যাসপার-এফএফজি হল কনসেন্সাসের জন্য একটি ব্লক ফাইনালিটি টুল। একবার একটি ব্লক ফাইনাল হয়ে গেলে, স্ট্যাকারদের সংখ্যাগরিষ্ঠ স্ল্যাশিং ছাড়া এটি রিভার্ট বা পরিবর্তন করা যায় না, যা এটিকে অর্থনৈতিকভাবে অকার্যকর করে তোলে।
+ডিস্ট্রিবিউটেড নেটওয়ার্কগুলোতে একটি লেনদেনের "ফাইনালিটি" থাকে যখন এটি এমন একটি ব্লকের অংশ হয় যা প্রচুর পরিমাণে ETH বার্ন হওয়া ছাড়া পরিবর্তন করা যায় না। প্রুফ-অফ-স্টেক ইথিরিয়ামে, এটি "চেকপয়েন্ট" ব্লকস ব্যবহার করে পরিচালনা করা হয়। প্রতিটি এপোক-এর প্রথম ব্লকটি হলো একটি চেকপয়েন্ট। ভ্যালিডেটরস চেকপয়েন্টগুলোর জোড়ার জন্য ভোট দেয় যা তারা বৈধ বলে মনে করে। যদি এক জোড়া চেকপয়েন্ট মোট স্টেক করা ETH-এর অন্তত দুই-তৃতীয়াংশের প্রতিনিধিত্বকারী ভোট আকর্ষণ করে, তবে চেকপয়েন্টগুলো আপগ্রেড করা হয়। দুটির মধ্যে সাম্প্রতিকটি (টার্গেট) "জাস্টিফাইড" হয়ে যায়। দুটির মধ্যে আগেরটি ইতিমধ্যেই জাস্টিফাইড কারণ এটি পূর্ববর্তী এপোক-এ "টার্গেট" ছিল। এখন এটি "ফাইনাল" হিসেবে আপগ্রেড করা হয়েছে। চেকপয়েন্টগুলো আপগ্রেড করার এই প্রক্রিয়াটি **[Casper the Friendly Finality Gadget (Casper-FFG)](https://arxiv.org/pdf/1710.09437)** দ্বারা পরিচালিত হয়। Casper-FFG হলো কনসেন্সাস-এর জন্য একটি ব্লক ফাইনালিটি টুল। একবার একটি ব্লক ফাইনাল হয়ে গেলে, স্টেকারদের একটি বড় অংশের স্ল্যাশিং ছাড়া এটিকে রিভার্ট বা পরিবর্তন করা যায় না, যা এটিকে অর্থনৈতিকভাবে অকার্যকর করে তোলে।
-একটি ফাইনাল ব্লক রিভার্ট করতে, একজন আক্রমণকারীকে স্টেক করা ETH-এর মোট সরবরাহের অন্তত এক-তৃতীয়াংশ হারানোর প্রতিশ্রুতি দিতে হবে। এর সঠিক কারণ এই [Ethereum Foundation ব্লগ পোস্টে](https://blog.ethereum.org/2016/05/09/on-settlement-finality) ব্যাখ্যা করা হয়েছে। যেহেতু ফাইনালিটির জন্য দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতার প্রয়োজন, তাই একজন আক্রমণকারী মোট স্টেকের এক-তৃতীয়াংশ দিয়ে ভোট দিয়ে নেটওয়ার্ককে ফাইনালিটিতে পৌঁছানো থেকে আটকাতে পারে। এর বিরুদ্ধে রক্ষা করার জন্য একটি মেকানিজম রয়েছে: [ইনঅ্যাক্টিভিটি লিক](https://eth2book.info/bellatrix/part2/incentives/inactivity)। এটি সক্রিয় হয় যখন চেইনটি চারটির বেশি ইপকের জন্য ফাইনাল হতে ব্যর্থ হয়। ইনঅ্যাক্টিভিটি লিক সংখ্যাগরিষ্ঠের বিরুদ্ধে ভোট দেওয়া ভ্যালিডেটরদের থেকে স্টেক করা ETH সরিয়ে দেয়, যা সংখ্যাগরিষ্ঠকে দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতা পুনরুদ্ধার করতে এবং চেইনটিকে ফাইনাল করতে দেয়।
+একটি ফাইনাল হওয়া ব্লক রিভার্ট করতে, একজন আক্রমণকারীকে মোট স্টেক করা ETH-এর অন্তত এক-তৃতীয়াংশ হারানোর প্রতিশ্রুতি দিতে হবে। এর সঠিক কারণ এই [ইথিরিয়াম ফাউন্ডেশন ব্লগ পোস্ট](https://blog.ethereum.org/2016/05/09/on-settlement-finality)-এ ব্যাখ্যা করা হয়েছে। যেহেতু ফাইনালিটি-এর জন্য দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতার প্রয়োজন, তাই একজন আক্রমণকারী মোট স্টেক-এর এক-তৃতীয়াংশ দিয়ে ভোট দিয়ে নেটওয়ার্কটিকে ফাইনালিটি-তে পৌঁছাতে বাধা দিতে পারে। এর বিরুদ্ধে রক্ষা করার জন্য একটি মেকানিজম রয়েছে: [ইনঅ্যাক্টিভিটি লিক](https://eth2book.info/bellatrix/part2/incentives/inactivity)। যখনই চেইনটি চারটির বেশি এপোক-এর জন্য ফাইনাল হতে ব্যর্থ হয় তখনই এটি সক্রিয় হয়। ইনঅ্যাক্টিভিটি লিক সংখ্যাগরিষ্ঠের বিরুদ্ধে ভোট দেওয়া ভ্যালিডেটরস-এর স্টেক করা ETH কমিয়ে দেয়, যা সংখ্যাগরিষ্ঠকে দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতা ফিরে পেতে এবং চেইনটিকে ফাইনাল করতে দেয়।
## ক্রিপ্টো-ইকোনমিক সিকিউরিটি {#crypto-economic-security}
-একজন ভ্যালিডেটর চালানো একটি প্রতিশ্রুতি। ভ্যালিডেটরের কাছ থেকে ব্লক ভ্যালিডেশন এবং প্রপোজাল-এ অংশগ্রহণের জন্য পর্যাপ্ত হার্ডওয়্যার এবং কানেক্টিভিটি বজায় রাখার প্রত্যাশা করা হয়। এর বিনিময়ে, ভ্যালিডেটরকে ETH-এ অর্থ প্রদান করা হয় (তাদের স্টেক করা ব্যালেন্স বৃদ্ধি পায়)। অন্যদিকে, একজন ভ্যালিডেটর হিসাবে অংশগ্রহণ করা ব্যবহারকারীদের ব্যক্তিগত লাভ বা নাশকতার জন্য নেটওয়ার্কে আক্রমণ করার নতুন পথ খুলে দেয়। এটি প্রতিরোধ করার জন্য, ভ্যালিডেটররা যখন অংশগ্রহণের জন্য বলা হয় তখন ব্যর্থ হলে ETH পুরস্কার থেকে বঞ্চিত হয়, এবং তারা যদি অসাধুভাবে আচরণ করে তবে তাদের বিদ্যমান স্টেক ধ্বংস করা যেতে পারে। দুটি প্রধান আচরণকে অসাধু বলে বিবেচনা করা যেতে পারে: একটি স্লটে একাধিক ব্লক প্রস্তাব করা (দ্বিচারিতা) এবং পরস্পরবিরোধী অ্যাটাস্টেশন জমা দেওয়া।
+একটি ভ্যালিডেটর চালানো একটি প্রতিশ্রুতি। ব্লক ভ্যালিডেশন এবং প্রস্তাবে অংশগ্রহণ করার জন্য ভ্যালিডেটর-এর পর্যাপ্ত হার্ডওয়্যার এবং কানেক্টিভিটি বজায় রাখা প্রত্যাশিত। এর বিনিময়ে, ভ্যালিডেটরকে ETH-এ অর্থ প্রদান করা হয় (তাদের স্টেক করা ব্যালেন্স বৃদ্ধি পায়)। অন্যদিকে, ভ্যালিডেটর হিসেবে অংশগ্রহণ করা ব্যবহারকারীদের ব্যক্তিগত লাভ বা নাশকতার জন্য নেটওয়ার্কে আক্রমণ করার নতুন পথও খুলে দেয়। এটি প্রতিরোধ করার জন্য, ভ্যালিডেটরস-কে যখন ডাকা হয় তখন তারা অংশগ্রহণ করতে ব্যর্থ হলে ETH রিওয়ার্ড থেকে বঞ্চিত হয় এবং তারা অসততার সাথে আচরণ করলে তাদের বিদ্যমান স্টেক ধ্বংস হয়ে যেতে পারে। দুটি প্রাথমিক আচরণকে অসৎ হিসেবে বিবেচনা করা যেতে পারে: একটি একক স্লটে একাধিক ব্লক প্রস্তাব করা (ইকুইভোকেটিং) এবং পরস্পরবিরোধী এটেস্টেশন জমা দেওয়া।
-কত পরিমাণ ETH স্ল্যাশ করা হবে তা নির্ভর করে একই সময়ে কতজন ভ্যালিডেটরকেও স্ল্যাশ করা হচ্ছে তার উপর। এটি ["কোরিলেশন পেনাল্টি"](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty) নামে পরিচিত, এবং এটি সামান্য হতে পারে (নিজে থেকে স্ল্যাশ হওয়া একজন ভ্যালিডেটরের জন্য ~1% স্টেক) অথবা এর ফলে ভ্যালিডেটরের 100% স্টেক ধ্বংস হয়ে যেতে পারে (গণ স্ল্যাশিং ইভেন্ট)। এটি একটি বাধ্যতামূলক এক্সিট পিরিয়ডের মাঝপথে আরোপ করা হয় যা প্রথম দিনে একটি তাৎক্ষণিক জরিমানা (1 ETH পর্যন্ত) দিয়ে শুরু হয়, 18 তম দিনে কোরিলেশন পেনাল্টি এবং অবশেষে, 36 তম দিনে নেটওয়ার্ক থেকে বহিষ্কার করা হয়। তারা প্রতিদিন সামান্য অ্যাটাস্টেশন জরিমানা পায় কারণ তারা নেটওয়ার্কে উপস্থিত থাকে কিন্তু ভোট জমা দেয় না। এই সবকিছুর অর্থ হল একটি সমন্বিত আক্রমণ আক্রমণকারীর জন্য খুব ব্যয়বহুল হবে।
+স্ল্যাশ করা ETH-এর পরিমাণ নির্ভর করে একই সময়ে কতজন ভ্যালিডেটরস-কেও স্ল্যাশ করা হচ্ছে তার ওপর। এটি ["কোরিলেশন পেনাল্টি"](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty) হিসেবে পরিচিত, এবং এটি সামান্য হতে পারে (নিজেদের স্ল্যাশ হওয়া একক ভ্যালিডেটর-এর জন্য ~1% স্টেক) বা ভ্যালিডেটর-এর 100% স্টেক ধ্বংস হয়ে যেতে পারে (ম্যাস স্ল্যাশিং ইভেন্ট)। এটি একটি জোরপূর্বক প্রস্থান সময়ের মাঝামাঝি সময়ে আরোপ করা হয় যা 1ম দিনে একটি তাৎক্ষণিক পেনাল্টি (1 ETH পর্যন্ত), 18তম দিনে কোরিলেশন পেনাল্টি এবং অবশেষে 36তম দিনে নেটওয়ার্ক থেকে বের করে দেওয়ার মাধ্যমে শুরু হয়। তারা প্রতিদিন ছোটখাটো এটেস্টেশন পেনাল্টি পায় কারণ তারা নেটওয়ার্কে উপস্থিত থাকে কিন্তু ভোট জমা দেয় না। এর সবকিছুর মানে হলো একটি সমন্বিত আক্রমণ আক্রমণকারীর জন্য খুব ব্যয়বহুল হবে।
-## ফর্ক পছন্দ {#fork-choice}
+## ফর্ক চয়েস {#fork-choice}
-যখন নেটওয়ার্ক সর্বোত্তম এবং সততার সাথে কাজ করে, তখন চেইনের হেডে শুধুমাত্র একটি নতুন ব্লক থাকে এবং সমস্ত ভ্যালিডেটর এটিতে অ্যাটেস্ট করে। যাইহোক, নেটওয়ার্ক লেটেন্সি বা ব্লক প্রপোজার দ্বিমুখী আচরণ করার কারণে ভ্যালিডেটরদের চেইনের হেডের বিভিন্ন ভিউ থাকা সম্ভব। অতএব, কনসেন্সাস ক্লায়েন্টদের একটি অ্যালগরিদম প্রয়োজন যা নির্ধারণ করবে কোনটি পছন্দ করা হবে। প্রুফ-অফ-স্টেক Ethereum-এ ব্যবহৃত অ্যালগরিদমটিকে [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf) বলা হয়, এবং এটি সেই ফর্কটি সনাক্ত করে কাজ করে যার ইতিহাসে অ্যাটাস্টেশনের সর্বাধিক ওজন রয়েছে।
+যখন নেটওয়ার্কটি সর্বোত্তম এবং সততার সাথে কাজ করে, তখন চেইনের মাথায় শুধুমাত্র একটি নতুন ব্লক থাকে এবং সমস্ত ভ্যালিডেটরস এতে এটেস্টেশন দেয়। তবে, নেটওয়ার্ক ল্যাটেন্সির কারণে বা ব্লক প্রপোজার ইকুইভোকেট করার কারণে ভ্যালিডেটরস-এর চেইনের মাথা সম্পর্কে ভিন্ন ভিন্ন দৃষ্টিভঙ্গি থাকা সম্ভব। অতএব, কনসেন্সাস ক্লায়েন্ট-এর কোনটিকে সমর্থন করতে হবে তা সিদ্ধান্ত নেওয়ার জন্য একটি এ্যালগরিদম প্রয়োজন। প্রুফ-অফ-স্টেক ইথিরিয়ামে ব্যবহৃত এ্যালগরিদমটিকে [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf) বলা হয়, এবং এটি সেই ফর্ক শনাক্ত করে কাজ করে যার ইতিহাসে এটেস্টেশন-এর সর্বাধিক ওজন রয়েছে।
## প্রুফ-অফ-স্টেক এবং নিরাপত্তা {#pos-and-security}
-প্রুফ-অফ-ওয়ার্কের মতো প্রুফ-অফ-স্টেকের ক্ষেত্রেও [51% আক্রমণের](https://www.investopedia.com/terms/1/51-attack.asp) হুমকি এখনও বিদ্যমান, তবে এটি আক্রমণকারীদের জন্য আরও ঝুঁকিপূর্ণ। একজন আক্রমণকারীর 51% স্টেক করা ETH-এর প্রয়োজন হবে। তারা তখন তাদের নিজস্ব অ্যাটাস্টেশন ব্যবহার করে নিশ্চিত করতে পারে যে তাদের পছন্দের ফর্কটিই সবচেয়ে বেশি সঞ্চিত অ্যাটাস্টেশন সহ ছিল। সঞ্চিত অ্যাটাস্টেশনের 'ওজন' হল যা কনসেন্সাস ক্লায়েন্টরা সঠিক চেইন নির্ধারণ করতে ব্যবহার করে, তাই এই আক্রমণকারী তাদের ফর্কটিকে ক্যানোনিকাল করে তুলতে সক্ষম হবে। যাইহোক, প্রুফ-অফ-ওয়ার্কের উপর প্রুফ-অফ-স্টেকের একটি শক্তি হল যে সম্প্রদায়ের একটি পাল্টা আক্রমণ মাউন্ট করার নমনীয়তা রয়েছে। উদাহরণস্বরূপ, সৎ ভ্যালিডেটররা সংখ্যালঘু চেইনে নির্মাণ চালিয়ে যাওয়ার এবং আক্রমণকারীর ফর্ক উপেক্ষা করার সিদ্ধান্ত নিতে পারে, এবং অ্যাপস, এক্সচেঞ্জ এবং পুলগুলোকে একই কাজ করতে উত্সাহিত করতে পারে। তারা আক্রমণকারীকে জোরপূর্বক নেটওয়ার্ক থেকে সরিয়ে দেওয়ার এবং তাদের স্টেক করা ETH ধ্বংস করার সিদ্ধান্তও নিতে পারে। এগুলো ৫১% আক্রমণের বিরুদ্ধে শক্তিশালী অর্থনৈতিক প্রতিরক্ষা।
+একটি [৫১% এ্যাটাক](https://www.investopedia.com/terms/1/51-attack.asp)-এর হুমকি প্রুফ-অফ-ওয়ার্ক-এর মতো প্রুফ-অফ-স্টেক-এও বিদ্যমান, তবে এটি আক্রমণকারীদের জন্য আরও বেশি ঝুঁকিপূর্ণ। একজন আক্রমণকারীর স্টেক করা ETH-এর 51% প্রয়োজন হবে। এরপর তারা তাদের নিজস্ব এটেস্টেশন ব্যবহার করে নিশ্চিত করতে পারে যে তাদের পছন্দের ফর্ক-টি সর্বাধিক জমাকৃত এটেস্টেশন সহ একটি ছিল। জমাকৃত এটেস্টেশন-এর 'ওজন' হলো যা কনসেন্সাস ক্লায়েন্ট সঠিক চেইন নির্ধারণ করতে ব্যবহার করে, তাই এই আক্রমণকারী তাদের ফর্ক-টিকে ক্যানোনিকাল করতে সক্ষম হবে। তবে, প্রুফ-অফ-ওয়ার্ক-এর ওপর প্রুফ-অফ-স্টেক-এর একটি শক্তি হলো যে কমিউনিটির পাল্টা আক্রমণ করার ক্ষেত্রে নমনীয়তা রয়েছে। উদাহরণস্বরূপ, সৎ ভ্যালিডেটরস সংখ্যালঘু চেইনে তৈরি করা চালিয়ে যাওয়ার সিদ্ধান্ত নিতে পারে এবং আক্রমণকারীর ফর্ক উপেক্ষা করতে পারে, পাশাপাশি অ্যাপ, এক্সচেঞ্জ এবং পুলগুলোকে একই কাজ করতে উৎসাহিত করতে পারে। তারা আক্রমণকারীকে নেটওয়ার্ক থেকে জোরপূর্বক সরিয়ে দেওয়ার এবং তাদের স্টেক করা ETH ধ্বংস করার সিদ্ধান্তও নিতে পারে। এগুলো একটি ৫১% এ্যাটাক-এর বিরুদ্ধে শক্তিশালী অর্থনৈতিক প্রতিরক্ষা।
-৫১% আক্রমণের বাইরে, খারাপ অভিনেতারা অন্যান্য ধরণের দূষিত কার্যকলাপের চেষ্টাও করতে পারে, যেমন:
+৫১% এ্যাটাক ছাড়াও, খারাপ অভিনেতারা অন্যান্য ধরণের ক্ষতিকারক কার্যকলাপের চেষ্টাও করতে পারে, যেমন:
-- লং-রেঞ্জ আক্রমণ (যদিও ফাইনালিটি গ্যাজেট এই আক্রমণ ভেক্টরকে নিষ্ক্রিয় করে)
-- স্বল্প পরিসরের 'রিঅর্গস' (যদিও প্রপোজার বুস্টিং এবং অ্যাটাস্টেশন ডেডলাইন এটি প্রশমিত করে)
-- বাউন্সিং এবং ব্যালেন্সিং আক্রমণ (প্রপোজার বুস্টিং দ্বারাও প্রশমিত, এবং এই আক্রমণগুলো যাইহোক শুধুমাত্র আদর্শ নেটওয়ার্ক অবস্থার অধীনে প্রদর্শিত হয়েছে)
-- অ্যাভাল্যাঞ্চ আক্রমণ (ফর্ক পছন্দ অ্যালগরিদমের শুধুমাত্র সর্বশেষ মেসেজ বিবেচনা করার নিয়ম দ্বারা নিষ্ক্রিয় করা হয়)
+- লং-রেঞ্জ অ্যাটাক (যদিও ফাইনালিটি গ্যাজেট এই অ্যাটাক ভেক্টরকে নিষ্ক্রিয় করে)
+- শর্ট রেঞ্জ 'রিঅর্গস' (যদিও প্রপোজার বুস্টিং এবং এটেস্টেশন ডেডলাইন এটি প্রশমিত করে)
+- বাউন্সিং এবং ব্যালেন্সিং অ্যাটাক (এটিও প্রপোজার বুস্টিং দ্বারা প্রশমিত হয়, এবং এই আক্রমণগুলো যাইহোক শুধুমাত্র আদর্শ নেটওয়ার্ক পরিস্থিতিতে প্রদর্শিত হয়েছে)
+- অ্যাভালাঞ্চ অ্যাটাক (শুধুমাত্র সর্বশেষ বার্তা বিবেচনা করার ফর্ক চয়েস এ্যালগরিদম নিয়ম দ্বারা নিষ্ক্রিয় করা হয়)
-সামগ্রিকভাবে, প্রুফ-অফ-স্টেক, যেমনটি Ethereum-এ প্রয়োগ করা হয়েছে, প্রুফ-অফ-ওয়ার্কের চেয়ে অর্থনৈতিকভাবে বেশি সুরক্ষিত বলে প্রমাণিত হয়েছে।
+সামগ্রিকভাবে, প্রুফ-অফ-স্টেক, যেমনটি ইথিরিয়ামে বাস্তবায়িত হয়েছে, প্রুফ-অফ-ওয়ার্ক-এর চেয়ে অর্থনৈতিকভাবে বেশি সুরক্ষিত বলে প্রমাণিত হয়েছে।
## সুবিধা এবং অসুবিধা {#pros-and-cons}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
-| স্টেকিং ব্যক্তিদের নেটওয়ার্ক সুরক্ষিত করতে অংশগ্রহণ করা সহজ করে তোলে, যা বিকেন্দ্রীকরণকে উৎসাহিত করে। ভ্যালিডেটর নোড একটি সাধারণ ল্যাপটপে চালানো যেতে পারে। স্টেকিং পুল ব্যবহারকারীদের 32 ETH না থাকলেও স্টেক করার অনুমতি দেয়। | প্রুফ-অফ-ওয়ার্কের তুলনায় প্রুফ-অফ-স্টেক নতুন এবং কম পরীক্ষিত |
-| স্টেকিং আরও বিকেন্দ্রীভূত। PoW মাইনিংয়ের ক্ষেত্রে যেভাবে ইকোনোমিক্স অফ স্কেল প্রযোজ্য, এক্ষেত্রে তেমনভাবে হয় না। | প্রুফ-অফ-ওয়ার্কের চেয়ে প্রুফ-অফ-স্টেক প্রয়োগ করা আরও জটিল |
-| প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্কের চেয়ে বেশি ক্রিপ্টো-অর্থনৈতিক নিরাপত্তা প্রদান করে | Ethereum-এর প্রুফ-অফ-স্টেকে অংশগ্রহণ করার জন্য ব্যবহারকারীদের তিনটি সফটওয়্যার চালাতে হবে। |
-| নেটওয়ার্ক অংশগ্রহণকারীদের উৎসাহিত করার জন্য নতুন ETH-এর কম ইস্যুয়েন্স প্রয়োজন | |
+| সুবিধা | অসুবিধা |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
+| স্টেকিং ব্যক্তিদের জন্য নেটওয়ার্ক সুরক্ষিত করতে অংশগ্রহণ করা সহজ করে তোলে, যা ডিসেন্ট্রালাইজড হওয়াকে উৎসাহিত করে। ভ্যালিডেটর নোড একটি সাধারণ ল্যাপটপে চালানো যেতে পারে। স্টেকিং পুল ব্যবহারকারীদের 32 ETH ছাড়াই স্টেক করার অনুমতি দেয়। | প্রুফ-অফ-ওয়ার্ক-এর তুলনায় প্রুফ-অফ-স্টেক নতুন এবং কম পরীক্ষিত |
+| স্টেকিং আরও বেশি ডিসেন্ট্রালাইজড। PoW মাইনিংয়ের ক্ষেত্রে ইকোনোমি অফ স্কেল যেভাবে প্রযোজ্য হয়, এখানে সেভাবে প্রযোজ্য হয় না। | প্রুফ-অফ-ওয়ার্ক-এর চেয়ে প্রুফ-অফ-স্টেক বাস্তবায়ন করা বেশি জটিল |
+| প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্ক-এর চেয়ে বেশি ক্রিপ্টো-ইকোনমিক সিকিউরিটি প্রদান করে | ইথিরিয়ামের প্রুফ-অফ-স্টেক-এ অংশগ্রহণ করার জন্য ব্যবহারকারীদের তিনটি সফটওয়্যার চালাতে হয়। |
+| নেটওয়ার্ক অংশগ্রহণকারীদের উৎসাহিত করার জন্য নতুন ETH-এর কম ইস্যুয়েন্স প্রয়োজন | |
-### প্রুফ-অফ-ওয়ার্ক-এর সঙ্গে তুলনা {#comparison-to-proof-of-work}
+### প্রুফ-অফ-ওয়ার্ক-এর সাথে তুলনা {#comparison-to-proof-of-work}
-Ethereum মূলত প্রুফ-অফ-ওয়ার্ক ব্যবহার করত কিন্তু সেপ্টেম্বর ২০২২-এ প্রুফ-অফ-স্টেকে পরিবর্তিত হয়েছে। PoS, PoW-এর তুলনায় বেশ কিছু সুবিধা প্রদান করে, যেমন:
+ইথিরিয়াম মূলত প্রুফ-অফ-ওয়ার্ক ব্যবহার করত কিন্তু 2022 সালের সেপ্টেম্বরে প্রুফ-অফ-স্টেক-এ চলে যায়। PoS, PoW-এর ওপর বেশ কিছু সুবিধা প্রদান করে, যেমন:
-- উন্নত শক্তি দক্ষতা – প্রুফ-অফ-ওয়ার্ক কম্পিউটেশনে প্রচুর শক্তি ব্যবহার করার কোনো প্রয়োজন নেই
-- প্রবেশের জন্য কম বাধা, হার্ডওয়্যারের প্রয়োজনীয়তা হ্রাস – নতুন ব্লক তৈরি করার সুযোগ পেতে এলিট হার্ডওয়্যারের কোনো প্রয়োজন নেই
-- কেন্দ্রীভূতকরণের ঝুঁকি হ্রাস – প্রুফ-অফ-স্টেক নেটওয়ার্ক সুরক্ষিত করার জন্য আরও নোডের দিকে নিয়ে যাওয়া উচিত
-- কম শক্তির প্রয়োজনীয়তার কারণে অংশগ্রহণে উৎসাহিত করার জন্য কম ETH ইস্যুয়েন্স প্রয়োজন
-- অসদাচরণের জন্য অর্থনৈতিক জরিমানা প্রুফ-অফ-ওয়ার্কের তুলনায় একজন আক্রমণকারীর জন্য ৫১% স্টাইলের আক্রমণকে আরও ব্যয়বহুল করে তোলে
-- যদি ৫১% আক্রমণ ক্রিপ্টো-অর্থনৈতিক প্রতিরক্ষা অতিক্রম করে, তাহলে কমিউনিটি একটি সৎ চেইনের সামাজিক পুনরুদ্ধারের আশ্রয় নিতে পারে।
+- উন্নত শক্তি দক্ষতা – প্রুফ-অফ-ওয়ার্ক গণনার জন্য প্রচুর শক্তি ব্যবহার করার প্রয়োজন নেই
+- প্রবেশের ক্ষেত্রে কম বাধা, হার্ডওয়্যারের প্রয়োজনীয়তা হ্রাস – নতুন ব্লকস তৈরি করার সুযোগ পাওয়ার জন্য এলিট হার্ডওয়্যারের প্রয়োজন নেই
+- কেন্দ্রীকরণের ঝুঁকি হ্রাস – প্রুফ-অফ-স্টেক-এর ফলে আরও বেশি নোড নেটওয়ার্ক সুরক্ষিত করবে
+- কম শক্তির প্রয়োজনীয়তার কারণে অংশগ্রহণকে উৎসাহিত করার জন্য কম ETH ইস্যুয়েন্স প্রয়োজন
+- খারাপ আচরণের জন্য অর্থনৈতিক পেনাল্টি প্রুফ-অফ-ওয়ার্ক-এর তুলনায় একজন আক্রমণকারীর জন্য ৫১% স্টাইলের আক্রমণগুলোকে আরও ব্যয়বহুল করে তোলে
+- যদি একটি ৫১% এ্যাটাক ক্রিপ্টো-ইকোনমিক প্রতিরক্ষাকে অতিক্রম করে, তবে কমিউনিটি একটি সৎ চেইনের সামাজিক পুনরুদ্ধারের আশ্রয় নিতে পারে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [প্রুফ অফ স্টেক FAQ](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html) _ভিটালিক বুটেরিন_
-- [প্রুফ অফ স্টেক কী](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _কনসেনসিস_
-- [প্রুফ অফ স্টেক কী এবং কেন এটি গুরুত্বপূর্ণ](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _ভিটালিক বুটেরিন_
-- [কেন প্রুফ অফ স্টেক (নভেম্বর ২০২০)](https://vitalik.eth.limo/general/2020/11/06/pos2020.html) _ভিটালিক বুটেরিন_
-- [প্রুফ অফ স্টেক: আমি কীভাবে দুর্বল বিষয়বস্তুকে ভালোবাসতে শিখলাম](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity) _ভিটালিক বুটেরিন_
-- [প্রুফ-অফ-স্টেক Ethereum আক্রমণ এবং প্রতিরক্ষা](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
-- [একটি প্রুফ অফ স্টেক ডিজাইন দর্শন](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _ভিটালিক বুটেরিন_
-- [ভিডিও: ভিটালিক বুটেরিন লেক্স ফ্রিডম্যানকে প্রুফ-অফ-স্টেক ব্যাখ্যা করছেন](https://www.youtube.com/watch?v=3yrqBG-7EVE)
+- [Proof of Stake FAQ](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html) _ভিটালিক বুটেরিন_
+- [What is Proof of Stake](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
+- [What Proof of Stake Is And Why It Matters](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _ভিটালিক বুটেরিন_
+- [Why Proof of Stake (Nov 2020)](https://vitalik.eth.limo/general/2020/11/06/pos2020.html) _ভিটালিক বুটেরিন_
+- [Proof of Stake: How I Learned to Love Weak Subjectivity](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity) _ভিটালিক বুটেরিন_
+- [Proof-of-stake Ethereum attack and defense](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
+- [A Proof of Stake Design Philosophy](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _ভিটালিক বুটেরিন_
+- [ভিডিও: ভিটালিক বুটেরিন লেক্স ফ্রিডম্যানকে প্রুফ-অফ-স্টেক ব্যাখ্যা করেছেন](https://www.youtube.com/watch?v=3yrqBG-7EVE)
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
- [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/)
-- [প্রুফ-অফ-অথোরিটি](/developers/docs/consensus-mechanisms/poa/)
+- [প্রুফ-অফ-অথরিটি](/developers/docs/consensus-mechanisms/poa/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/keys/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/keys/index.md
index 8b5983e62b9..9fe9a75de19 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/keys/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/keys/index.md
@@ -1,84 +1,84 @@
---
-title: "প্রুফ-অফ-স্টেক ইথেরিয়ামের কী"
-description: "ইথেরিয়ামের প্রুফ-অফ-স্টেক কনসেন্সাস মেকানিজমে ব্যবহৃত কী-গুলোর একটি ব্যাখ্যা"
+title: প্রুফ-অফ-স্টেক ইথিরিয়ামে কিস (Keys)
+description: ইথিরিয়ামের প্রুফ-অফ-স্টেক কনসেন্সাস মেকানিজমে ব্যবহৃত কিস (keys)-এর একটি ব্যাখ্যা
lang: bn
---
-ইথেরিয়াম পাবলিক-প্রাইভেট কী ক্রিপ্টোগ্রাফি ব্যবহার করে ব্যবহারকারীর সম্পদ সুরক্ষিত করে। পাবলিক কী একটি ইথেরিয়াম অ্যাড্রেসের ভিত্তি হিসাবে ব্যবহৃত হয়—অর্থাৎ, এটি সাধারণ জনগণের কাছে দৃশ্যমান এবং একটি অনন্য শনাক্তকারী হিসাবে ব্যবহৃত হয়। প্রাইভেট (বা 'গোপন') কী শুধুমাত্র একজন অ্যাকাউন্টের মালিকের কাছে অ্যাক্সেসযোগ্য হওয়া উচিত। প্রাইভেট কী লেনদেন এবং ডেটা 'স্বাক্ষর' করার জন্য ব্যবহৃত হয় যাতে ক্রিপ্টোগ্রাফি প্রমাণ করতে পারে যে ধারক একটি নির্দিষ্ট প্রাইভেট কী-এর কিছু ক্রিয়াকলাপ অনুমোদন করেছেন।
+ইথিরিয়াম পাবলিক-প্রাইভেট কি ক্রিপ্টোগ্রাফি ব্যবহার করে ব্যবহারকারীর সম্পদ সুরক্ষিত করে। পাবলিক কি একটি ইথিরিয়াম এডড্রেস-এর ভিত্তি হিসেবে ব্যবহৃত হয়—অর্থাৎ, এটি সাধারণ মানুষের কাছে দৃশ্যমান এবং একটি অনন্য শনাক্তকারী হিসেবে ব্যবহৃত হয়। প্রাইভেট (বা 'গোপন') কি শুধুমাত্র একজন একাউন্ট মালিকের কাছেই এক্সেসযোগ্য হওয়া উচিত। প্রাইভেট কি লেনদেন এবং ডাটা 'স্বাক্ষর' (sign) করতে ব্যবহৃত হয় যাতে ক্রিপ্টোগ্রাফি প্রমাণ করতে পারে যে ধারক একটি নির্দিষ্ট প্রাইভেট কি-এর কোনো কাজ অনুমোদন করেছেন।
-ইথেরিয়ামের কী-গুলো [ইলিপটিক-কার্ভ ক্রিপ্টোগ্রাফি](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography) ব্যবহার করে তৈরি করা হয়।
+ইথিরিয়ামের কিস (keys) [এলিপটিক-কার্ভ ক্রিপ্টোগ্রাফি](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography) ব্যবহার করে তৈরি করা হয়।
-যাইহোক, যখন ইথেরিয়াম [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow) থেকে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos)-এ পরিবর্তিত হয়, তখন ইথেরিয়ামে একটি নতুন ধরণের কী যোগ করা হয়েছিল। আসল কী-গুলো আগের মতোই কাজ করে—অ্যাকাউন্ট সুরক্ষিতকারী ইলিপটিক-কার্ভ-ভিত্তিক কী-গুলোতে কোনও পরিবর্তন করা হয়নি। যাইহোক, ETH স্টেকিং এবং ভ্যালিডেটর চালানোর মাধ্যমে প্রুফ-অফ-স্টেক-এ অংশগ্রহণের জন্য ব্যবহারকারীদের একটি নতুন ধরনের কী-এর প্রয়োজন ছিল। এই প্রয়োজনটি বিপুল সংখ্যক ভ্যালিডেটরের মধ্যে প্রেরিত অনেকগুলো মেসেজের সাথে সম্পর্কিত স্কেলেবিলিটি চ্যালেঞ্জ থেকে উদ্ভূত হয়েছিল, যার জন্য একটি ক্রিপ্টোগ্রাফিক পদ্ধতির প্রয়োজন ছিল যা সহজেই একত্রিত করা যেতে পারে যাতে নেটওয়ার্ককে কনসেন্সাসে আসতে প্রয়োজনীয় যোগাযোগের পরিমাণ কমানো যায়।
+তবে, যখন ইথিরিয়াম [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow) থেকে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos)-এ স্থানান্তরিত হয়, তখন ইথিরিয়ামে একটি নতুন ধরনের কি যুক্ত করা হয়। মূল কিস এখনও আগের মতোই কাজ করে—একাউন্ট সুরক্ষিত করার জন্য এলিপটিক-কার্ভ-ভিত্তিক কিস-এ কোনো পরিবর্তন করা হয়নি। তবে, ETH স্টেকিং করে এবং ভ্যালিডেটরস চালিয়ে প্রুফ-অফ-স্টেক-এ অংশগ্রহণের জন্য ব্যবহারকারীদের একটি নতুন ধরনের কি প্রয়োজন ছিল। এই প্রয়োজনীয়তা দেখা দেয় বিপুল সংখ্যক ভ্যালিডেটরস-এর মধ্যে আদান-প্রদান হওয়া অনেক মেসেজের সাথে যুক্ত স্কেলিং চ্যালেঞ্জ থেকে, যার জন্য এমন একটি ক্রিপ্টোগ্রাফিক পদ্ধতির প্রয়োজন ছিল যা সহজেই একত্রিত করা যায় যাতে নেটওয়ার্ক-এর কনসেন্সাস-এ পৌঁছানোর জন্য প্রয়োজনীয় যোগাযোগের পরিমাণ কমানো যায়।
-এই নতুন ধরনের কী [**বনিহ-লিন-শাচাম (BLS)** সিগনেচার স্কিম](https://wikipedia.org/wiki/BLS_digital_signature) ব্যবহার করে। BLS সিগনেচারের একটি অত্যন্ত কার্যকর একত্রীকরণ সক্ষম করে কিন্তু একত্রিত পৃথক ভ্যালিডেটর কী-গুলোর রিভার্স ইঞ্জিনিয়ারিংয়ের অনুমতি দেয় এবং ভ্যালিডেটরদের মধ্যে ক্রিয়া পরিচালনা করার জন্য এটি আদর্শ।
+এই নতুন ধরনের কি [**Boneh-Lynn-Shacham (BLS)** সিগনেচার স্কিম](https://wikipedia.org/wiki/BLS_digital_signature) ব্যবহার করে। BLS সিগনেচারগুলোর একটি খুব দক্ষ একত্রীকরণ সক্ষম করে তবে এটি একত্রিত পৃথক ভ্যালিডেটর কিস-এর রিভার্স ইঞ্জিনিয়ারিং-এরও অনুমতি দেয় এবং ভ্যালিডেটরস-এর মধ্যে কাজ পরিচালনার জন্য আদর্শ।
-## দুই ধরনের ভ্যালিডেটর কী {#two-types-of-keys}
+## দুই ধরনের ভ্যালিডেটর কিস {#two-types-of-keys}
-প্রুফ-অফ-স্টেক-এ স্যুইচ করার আগে, ইথেরিয়াম ব্যবহারকারীদের তাদের তহবিল অ্যাক্সেস করার জন্য শুধুমাত্র একটি ইলিপটিক-কার্ভ-ভিত্তিক প্রাইভেট কী ছিল। প্রুফ-অফ-স্টেক প্রবর্তনের সাথে, যে ব্যবহারকারীরা সোলো স্টেকার হতে চেয়েছিলেন তাদের একটি **ভ্যালিডেটর কী** এবং একটি **উইথড্রয়াল কী**-এরও প্রয়োজন ছিল।
+প্রুফ-অফ-স্টেক-এ স্থানান্তরের আগে, ইথিরিয়াম ব্যবহারকারীদের তাদের ফান্ড এক্সেস করার জন্য শুধুমাত্র একটি এলিপটিক-কার্ভ-ভিত্তিক প্রাইভেট কি ছিল। প্রুফ-অফ-স্টেক প্রবর্তনের সাথে সাথে, যে ব্যবহারকারীরা সোলো স্টেকার হতে চেয়েছিলেন তাদের একটি **ভ্যালিডেটর কি** এবং একটি **উইথড্রয়াল কি**-এরও প্রয়োজন হয়।
-### ভ্যালিডেটর কী {#validator-key}
+### ভ্যালিডেটর কি {#validator-key}
-ভ্যালিডেটর সাইনিং কী দুটি উপাদান নিয়ে গঠিত:
+ভ্যালিডেটর সাইনিং কি দুটি উপাদান নিয়ে গঠিত:
-- ভ্যালিডেটর **প্রাইভেট** কী
-- ভ্যালিডেটর **পাবলিক** কী
+- ভ্যালিডেটর **প্রাইভেট** কি
+- ভ্যালিডেটর **পাবলিক** কি
-ভ্যালিডেটর প্রাইভেট কী-এর উদ্দেশ্য হল অনচেইন অপারেশন যেমন ব্লক প্রস্তাবনা এবং অ্যাটেস্টেশন স্বাক্ষর করা। এই কারণে, এই কী-গুলো অবশ্যই একটি হট ওয়ালেটে রাখতে হবে।
+ভ্যালিডেটর প্রাইভেট কি-এর উদ্দেশ্য হলো অনচেইন অপারেশন যেমন ব্লক প্রস্তাবনা এবং এটেস্টেশন-এ স্বাক্ষর করা। এই কারণে, এই কিস অবশ্যই একটি হট ওয়ালেট-এ রাখতে হবে।
-এই নমনীয়তার সুবিধা হল ভ্যালিডেটর সাইনিং কী-গুলো খুব দ্রুত এক ডিভাইস থেকে অন্য ডিভাইসে সরানো যায়, তবে, যদি সেগুলি হারিয়ে যায় বা চুরি হয়ে যায়, তাহলে একজন চোর কয়েকটি উপায়ে **ক্ষতিকরভাবে কাজ** করতে পারে:
+এই নমনীয়তার সুবিধা হলো ভ্যালিডেটর সাইনিং কিস খুব দ্রুত এক ডিভাইস থেকে অন্য ডিভাইসে স্থানান্তর করা যায়, তবে, যদি সেগুলো হারিয়ে যায় বা চুরি হয়ে যায়, তবে একজন চোর কয়েকটি উপায়ে **ক্ষতিকারক কাজ** করতে সক্ষম হতে পারে:
-- এর মাধ্যমে ভ্যালিডেটরকে স্ল্যাশ করান:
- - একজন প্রস্তাবক হয়ে একই স্লটের জন্য দুটি ভিন্ন বীকন ব্লকে স্বাক্ষর করা
- - একজন অ্যাটেস্টার হয়ে এমন একটি অ্যাটেস্টেশনে স্বাক্ষর করা যা অন্য একটিকে "ঘিরে" রাখে
- - একজন অ্যাটেস্টার হয়ে একই টার্গেটযুক্ত দুটি ভিন্ন অ্যাটেস্টেশনে স্বাক্ষর করা
-- একটি স্বেচ্ছাসেবী প্রস্থান করতে বাধ্য করা, যা ভ্যালিডেটরকে স্টেকিং থেকে বিরত করে, এবং উইথড্রয়াল কী-এর মালিককে তার ETH ব্যালেন্সে অ্যাক্সেস দেয়।
+- ভ্যালিডেটর-কে স্ল্যাশিং-এর শিকার করতে পারে:
+ - একজন প্রপোজার হয়ে এবং একই স্লটের জন্য দুটি ভিন্ন বিকন ব্লকস-এ স্বাক্ষর করে
+ - একজন এটেস্টার হয়ে এবং এমন একটি এটেস্টেশন-এ স্বাক্ষর করে যা অন্য একটিকে "ঘিরে" রাখে
+ - একজন এটেস্টার হয়ে এবং একই টার্গেট থাকা দুটি ভিন্ন এটেস্টেশন-এ স্বাক্ষর করে
+- একটি স্বেচ্ছায় প্রস্থান (voluntary exit) বাধ্য করতে পারে, যা ভ্যালিডেটর-কে স্টেকিং থেকে বিরত করে এবং উইথড্রয়াল কি মালিককে এর ETH ব্যালেন্স এক্সেস করার অনুমতি দেয়
-যখন একজন ব্যবহারকারী স্টেকিং ডিপোজিট কন্ট্রাক্টে ETH জমা করে তখন **ভ্যালিডেটর পাবলিক কী** লেনদেনের ডেটাতে অন্তর্ভুক্ত থাকে। এটি _ডিপোজিট ডেটা_ হিসাবে পরিচিত এবং এটি ইথেরিয়ামকে ভ্যালিডেটর শনাক্ত করতে দেয়।
+যখন কোনো ব্যবহারকারী স্টেকিং ডিপোজিট কন্টাক্ট-এ ETH জমা দেন তখন লেনদেন ডাটায় **ভ্যালিডেটর পাবলিক কি** অন্তর্ভুক্ত থাকে। এটি _ডিপোজিট ডাটা_ হিসেবে পরিচিত এবং এটি ইথিরিয়ামকে ভ্যালিডেটর শনাক্ত করতে সাহায্য করে।
-### উইথড্রয়াল ক্রেডেনশিয়াল {#withdrawal-credentials}
+### উইথড্রয়াল ক্রেডেনশিয়ালস {#withdrawal-credentials}
-প্রতিটি ভ্যালিডেটরের _উইথড্রয়াল ক্রেডেনশিয়াল_ হিসাবে পরিচিত একটি বৈশিষ্ট্য রয়েছে। এই 32-বাইট ফিল্ডের প্রথম বাইট অ্যাকাউন্টের ধরন শনাক্ত করে: `0x00` আসল BLS (প্রি-শাপেলা, নন-উইথড্রয়েবল) ক্রেডেনশিয়াল প্রতিনিধিত্ব করে, `0x01` একটি এক্সিকিউশন অ্যাড্রেসে নির্দেশকারী লিগ্যাসি ক্রেডেনশিয়াল প্রতিনিধিত্ব করে, এবং `0x02` আধুনিক কম্পাউন্ডিং ক্রেডেনশিয়াল ধরনের প্রতিনিধিত্ব করে।
+প্রতিটি ভ্যালিডেটর-এর একটি বৈশিষ্ট্য রয়েছে যা _উইথড্রয়াল ক্রেডেনশিয়ালস_ নামে পরিচিত। এই 32-বাইট ফিল্ডের প্রথম বাইট একাউন্ট-এর ধরন শনাক্ত করে: `0x00` মূল BLS (প্রি-শাপেল্লা, নন-উইথড্রয়েবল) ক্রেডেনশিয়ালস উপস্থাপন করে, `0x01` লিগ্যাসি ক্রেডেনশিয়ালস উপস্থাপন করে যা একটি এক্সিকিউশন এডড্রেস নির্দেশ করে, এবং `0x02` আধুনিক কম্পাউন্ডিং ক্রেডেনশিয়াল ধরন উপস্থাপন করে।
-`0x00` BLS কী সহ ভ্যালিডেটরদের অবশ্যই অতিরিক্ত ব্যালেন্স পেমেন্ট বা স্টেকিং থেকে সম্পূর্ণ উইথড্রয়াল সক্রিয় করার জন্য একটি এক্সিকিউশন অ্যাড্রেসে নির্দেশ করতে এই ক্রেডেনশিয়ালগুলো আপডেট করতে হবে। এটি প্রাথমিক কী জেনারেশনের সময় ডিপোজিট ডেটাতে একটি এক্সিকিউশন অ্যাড্রেস প্রদান করে, _অথবা_ পরবর্তী সময়ে একটি `BLSToExecutionChange` মেসেজ স্বাক্ষর এবং সম্প্রচার করতে উইথড্রয়াল কী ব্যবহার করে করা যেতে পারে।
+`0x00` BLS কিস যুক্ত ভ্যালিডেটরস-কে অতিরিক্ত ব্যালেন্স পেমেন্ট বা স্টেকিং থেকে সম্পূর্ণ উইথড্রয়াল সক্রিয় করার জন্য এই ক্রেডেনশিয়ালস আপডেট করে একটি এক্সিকিউশন এডড্রেস নির্দেশ করতে হবে। এটি প্রাথমিক কি তৈরির সময় ডিপোজিট ডাটায় একটি এক্সিকিউশন এডড্রেস প্রদান করে করা যেতে পারে, _অথবা_ পরবর্তীতে একটি `BLSToExecutionChange` মেসেজ স্বাক্ষর এবং সম্প্রচার করতে উইথড্রয়াল কি ব্যবহার করে করা যেতে পারে।
-[ভ্যালিডেটর উইথড্রয়াল ক্রেডেনশিয়াল সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/)
+[ভ্যালিডেটর উইথড্রয়াল ক্রেডেনশিয়ালস সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/)
-### উইথড্রয়াল কী {#withdrawal-key}
+### উইথড্রয়াল কি {#withdrawal-key}
-প্রাথমিক জমার সময় সেট করা না হলে, উইথড্রয়াল ক্রেডেনশিয়ালগুলোকে একটি এক্সিকিউশন অ্যাড্রেসে নির্দেশ করার জন্য আপডেট করতে উইথড্রয়াল কী-এর প্রয়োজন হবে। এটি অতিরিক্ত ব্যালেন্স পেমেন্ট প্রক্রিয়া শুরু করতে সক্ষম করবে এবং ব্যবহারকারীদের তাদের স্টেক করা ETH সম্পূর্ণরূপে উইথড্র করার অনুমতিও দেবে।
+প্রাথমিক জমার সময় সেট করা না থাকলে, উইথড্রয়াল ক্রেডেনশিয়ালস আপডেট করে একটি এক্সিকিউশন এডড্রেস নির্দেশ করার জন্য উইথড্রয়াল কি-এর প্রয়োজন হবে। এটি অতিরিক্ত ব্যালেন্স পেমেন্ট প্রক্রিয়া শুরু করতে সক্ষম করবে এবং ব্যবহারকারীদের তাদের স্টেক করা ETH সম্পূর্ণভাবে তুলে নেওয়ার অনুমতি দেবে।
-ভ্যালিডেটর কী-গুলোর মতোই, উইথড্রয়াল কী-গুলোও দুটি উপাদান নিয়ে গঠিত:
+ভ্যালিডেটর কিস-এর মতোই, উইথড্রয়াল কিস-ও দুটি উপাদান নিয়ে গঠিত:
-- উইথড্রয়াল **প্রাইভেট** কী
-- উইথড্রয়াল **পাবলিক** কী
+- উইথড্রয়াল **প্রাইভেট** কি
+- উইথড্রয়াল **পাবলিক** কি
-উইথড্রয়াল ক্রেডেনশিয়াল `0x01` টাইপে আপডেট করার আগে এই কী হারিয়ে ফেলার অর্থ হল ভ্যালিডেটরের ব্যালেন্সে অ্যাক্সেস হারানো। ভ্যালিডেটর এখনও অ্যাটেস্টেশন এবং ব্লক স্বাক্ষর করতে পারে কারণ এই ক্রিয়াকলাপগুলোর জন্য ভ্যালিডেটরের প্রাইভেট কী প্রয়োজন, তবে উইথড্রয়াল কী হারিয়ে গেলে কোনো ইনসেন্টিভ থাকে না বললেই চলে।
+উইথড্রয়াল ক্রেডেনশিয়ালস `0x01` ধরনে আপডেট করার আগে এই কি হারিয়ে ফেলার অর্থ হলো ভ্যালিডেটর ব্যালেন্স-এর এক্সেস হারানো। ভ্যালিডেটর এখনও এটেস্টেশন এবং ব্লকস-এ স্বাক্ষর করতে পারে কারণ এই কাজগুলোর জন্য ভ্যালিডেটর-এর প্রাইভেট কি প্রয়োজন, তবে উইথড্রয়াল কিস হারিয়ে গেলে কোনো ইনসেনটিভ থাকে না বললেই চলে।
-ইথেরিয়াম অ্যাকাউন্ট কী থেকে ভ্যালিডেটর কী আলাদা করার ফলে একজন একক ব্যবহারকারী একাধিক ভ্যালিডেটর চালাতে পারে।
+ইথিরিয়াম একাউন্ট কিস থেকে ভ্যালিডেটর কিস আলাদা করার ফলে একজন ব্যবহারকারী একাধিক ভ্যালিডেটরস চালাতে পারেন।
-
+
-**দ্রষ্টব্য**: স্টেকিংয়ের দায়িত্ব থেকে প্রস্থান করা এবং একটি ভ্যালিডেটরের ব্যালেন্স উইথড্র করার জন্য বর্তমানে ভ্যালিডেটর কী দিয়ে একটি [ভলান্টারি এক্সিট মেসেজ (VEM)](https://mirror.xyz/ladislaus.eth/wmoBbUBes2Wp1_6DvP6slPabkyujSU7MZOFOC3QpErs&1) স্বাক্ষর করতে হয়। যাইহোক, [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) একটি প্রস্তাব যা ভবিষ্যতে একজন ব্যবহারকারীকে উইথড্রয়াল কী দিয়ে এক্সিট মেসেজ স্বাক্ষর করে একটি ভ্যালিডেটরের প্রস্থান ট্রিগার করতে এবং তার ব্যালেন্স উইথড্র করতে দেবে। এটি [স্টেকিং-অ্যাজ-এ-সার্ভিস প্রদানকারী](/staking/saas/#what-is-staking-as-a-service)-দের কাছে ETH ডেলিগেটকারী স্টেকারদের তাদের তহবিলের নিয়ন্ত্রণে থাকতে সক্ষম করে বিশ্বাসের অনুমান হ্রাস করবে।
+**দ্রষ্টব্য**: স্টেকিং দায়িত্ব থেকে প্রস্থান করা এবং ভ্যালিডেটর-এর ব্যালেন্স তুলে নেওয়ার জন্য বর্তমানে ভ্যালিডেটর কি দিয়ে একটি [স্বেচ্ছায় প্রস্থান মেসেজ (VEM)](https://mirror.xyz/ladislaus.eth/wmoBbUBes2Wp1_6DvP6slPabkyujSU7MZOFOC3QpErs&1)-এ স্বাক্ষর করতে হয়। তবে, [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) হলো এমন একটি প্রস্তাবনা যা ভবিষ্যতে ব্যবহারকারীকে উইথড্রয়াল কি দিয়ে প্রস্থান মেসেজে স্বাক্ষর করে ভ্যালিডেটর-এর প্রস্থান ট্রিগার করতে এবং এর ব্যালেন্স তুলে নেওয়ার অনুমতি দেবে। এটি সেইসব স্টেকার-দের তাদের ফান্ডের নিয়ন্ত্রণ বজায় রাখতে সক্ষম করে আস্থার অনুমান কমাবে যারা [স্টেকিং-অ্যাজ-এ-সার্ভিস প্রোভাইডারদের](/staking/saas/#what-is-staking-as-a-service) কাছে ETH অর্পণ করেন।
-## একটি সিড ফ্রেজ থেকে কী পাওয়া {#deriving-keys-from-seed}
+## সিড ফ্রেজ থেকে কিস তৈরি করা {#deriving-keys-from-seed}
-যদি প্রতি 32 ETH স্টেকের জন্য 2টি সম্পূর্ণ স্বাধীন কী-এর একটি নতুন সেটের প্রয়োজন হত, তাহলে কী ম্যানেজমেন্ট দ্রুত কষ্টসাধ্য হয়ে যেত, বিশেষ করে একাধিক ভ্যালিডেটর চালানো ব্যবহারকারীদের জন্য। এর পরিবর্তে, একটি একক সাধারণ সিক্রেট থেকে একাধিক ভ্যালিডেটর কী পাওয়া যেতে পারে এবং সেই একক সিক্রেট সংরক্ষণ করা একাধিক ভ্যালিডেটর কী-তে অ্যাক্সেসের অনুমতি দেয়।
+যদি স্টেক করা প্রতি 32 ETH-এর জন্য 2টি সম্পূর্ণ স্বাধীন কিস-এর একটি নতুন সেটের প্রয়োজন হতো, তবে কি ম্যানেজমেন্ট খুব দ্রুতই কঠিন হয়ে পড়ত, বিশেষ করে একাধিক ভ্যালিডেটরস চালানো ব্যবহারকারীদের জন্য। এর পরিবর্তে, একটি সাধারণ গোপন তথ্য (secret) থেকে একাধিক ভ্যালিডেটর কিস তৈরি করা যেতে পারে এবং সেই একক গোপন তথ্য সংরক্ষণ করলে একাধিক ভ্যালিডেটর কিস-এ এক্সেস পাওয়া যায়।
-[নেমোনিক্স](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase) এবং পাথগুলি হল প্রধান বৈশিষ্ট্য যা ব্যবহারকারীরা প্রায়শই তাদের ওয়ালেট [অ্যাক্সেস করার](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0) সময় সম্মুখীন হন। নেমোনিক হল শব্দের একটি ক্রম যা একটি প্রাইভেট কী-এর জন্য একটি প্রাথমিক সিড হিসাবে কাজ করে। অতিরিক্ত ডেটার সাথে মিলিত হলে, নেমোনিক 'মাস্টার কী' নামে পরিচিত একটি হ্যাস তৈরি করে। এটিকে একটি গাছের মূল হিসাবে ভাবা যেতে পারে। এই মূল থেকে শাখাগুলো একটি অনুক্রমিক পাথ ব্যবহার করে পাওয়া যেতে পারে যাতে চাইল্ড নোডগুলো তাদের প্যারেন্ট নোডের হ্যাস এবং ট্রিতে তাদের ইন্ডেক্সের সংমিশ্রণ হিসাবে থাকতে পারে। নেমোনিক-ভিত্তিক কী জেনারেশনের জন্য [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) এবং [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) স্ট্যান্ডার্ড সম্পর্কে পড়ুন।
+[নেমোনিক্স (Mnemonics)](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase) এবং পাথ হলো এমন কিছু বিশিষ্ট বৈশিষ্ট্য যা ব্যবহারকারীরা প্রায়শই তাদের ওয়ালেট [এক্সেস করার সময়](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0) সম্মুখীন হন। নেমোনিক হলো শব্দের একটি ক্রম যা একটি প্রাইভেট কি-এর প্রাথমিক সিড হিসেবে কাজ করে। অতিরিক্ত ডাটার সাথে একত্রিত হলে, নেমোনিক একটি হ্যাস তৈরি করে যা 'মাস্টার কি' নামে পরিচিত। এটিকে একটি গাছের শিকড় হিসেবে ভাবা যেতে পারে। এই শিকড় থেকে শাখাগুলো একটি হায়ারার্কিকাল পাথ ব্যবহার করে তৈরি করা যেতে পারে যাতে চাইল্ড নোডগুলো তাদের প্যারেন্ট নোডের হ্যাস এবং গাছে তাদের ইনডেক্সের সংমিশ্রণ হিসেবে থাকতে পারে। নেমোনিক-ভিত্তিক কি তৈরির জন্য [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) এবং [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) স্ট্যান্ডার্ড সম্পর্কে পড়ুন।
-এই পাথগুলোর নিম্নলিখিত কাঠামো রয়েছে, যা হার্ডওয়্যার ওয়ালেটের সাথে ইন্টারঅ্যাক্ট করা ব্যবহারকারীদের কাছে পরিচিত হবে:
+এই পাথগুলোর নিম্নলিখিত কাঠামো রয়েছে, যা হার্ডওয়্যার ওয়ালেট-এর সাথে কাজ করা ব্যবহারকারীদের কাছে পরিচিত হবে:
```
m/44'/60'/0'/0`
```
-এই পাথের স্ল্যাশগুলো প্রাইভেট কী-এর উপাদানগুলোকে নিম্নরূপ পৃথক করে:
+এই পাথের স্ল্যাশগুলো প্রাইভেট কি-এর উপাদানগুলোকে নিম্নরূপভাবে আলাদা করে:
```
master_key / purpose / coin_type / account / change / address_index
```
-এই যুক্তিটি ব্যবহারকারীদের একটি একক **নেমোনিক ফ্রেজ**-এর সাথে যত বেশি সম্ভব ভ্যালিডেটর সংযুক্ত করতে সক্ষম করে কারণ ট্রি রুটটি সাধারণ হতে পারে, এবং শাখাগুলিতে পার্থক্য করা যেতে পারে। ব্যবহারকারী নেমোনিক ফ্রেজ থেকে **যেকোনো সংখ্যক কী** পেতে পারেন।
+এই লজিক ব্যবহারকারীদের একটি একক **নেমোনিক ফ্রেজ**-এর সাথে যত খুশি ভ্যালিডেটরস যুক্ত করতে সক্ষম করে কারণ গাছের শিকড় সাধারণ হতে পারে এবং শাখাগুলোতে পার্থক্য করা যেতে পারে। ব্যবহারকারী নেমোনিক ফ্রেজ থেকে **যেকোনো সংখ্যক কিস তৈরি করতে** পারেন।
```
[m / 0]
@@ -90,13 +90,13 @@ master_key / purpose / coin_type / account / change / address_index
[m / 2]
```
-প্রতিটি শাখা একটি `/` দ্বারা পৃথক করা হয়েছে তাই `m/2` মানে মাস্টার কী দিয়ে শুরু করুন এবং শাখা 2 অনুসরণ করুন। নীচের স্কিম্যাটিকে একটি একক নেমোনিক ফ্রেজ তিনটি উইথড্রয়াল কী সংরক্ষণ করতে ব্যবহৃত হয়, প্রতিটির সাথে দুটি সংশ্লিষ্ট ভ্যালিডেটর রয়েছে।
+প্রতিটি শাখা একটি `/` দ্বারা আলাদা করা হয় তাই `m/2` মানে মাস্টার কি দিয়ে শুরু করুন এবং শাখা 2 অনুসরণ করুন। নিচের চিত্রে একটি একক নেমোনিক ফ্রেজ তিনটি উইথড্রয়াল কিস সংরক্ষণ করতে ব্যবহৃত হয়েছে, যার প্রতিটিতে দুটি যুক্ত ভ্যালিডেটরস রয়েছে।
-
+
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [কার্ল বিকহুইজেনের ইথেরিয়াম ফাউন্ডেশন ব্লগ পোস্ট](https://blog.ethereum.org/2020/05/21/keys)
-- [EIP-2333 BLS12-381 কী জেনারেশন](https://eips.ethereum.org/EIPS/eip-2333)
-- [EIP-7002: এক্সিকিউশন লেয়ার ট্রিগারড এক্সিট](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge)
-- [বৃহৎ স্কেলে কী ম্যানেজমেন্ট](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale)
+- [কার্ল বিকহুইজেন-এর ইথিরিয়াম ফাউন্ডেশন ব্লগ পোস্ট](https://blog.ethereum.org/2020/05/21/keys)
+- [EIP-2333 BLS12-381 কি জেনারেশন](https://eips.ethereum.org/EIPS/eip-2333)
+- [EIP-7002: এক্সিকিউশন লেয়ার ট্রিগারড এক্সিটস](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge)
+- [স্কেলে কি ম্যানেজমেন্ট](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
index 7d74fffe7f5..1ea0426fddb 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
@@ -1,69 +1,69 @@
---
-title: "প্রুফ-অফ-স্টেক বনাম প্রুফ-অফ-ওয়ার্ক"
-description: "ইথেরিয়ামের প্রুফ-অফ-স্টেক এবং প্রুফ-অফ-ওয়ার্ক ভিত্তিক কনসেন্সাস মেকানিজমের মধ্যে একটি তুলনা"
+title: প্রুফ-অফ-স্টেক বনাম প্রুফ-অফ-ওয়ার্ক
+description: ইথিরিয়ামের প্রুফ-অফ-স্টেক এবং প্রুফ-অফ-ওয়ার্ক ভিত্তিক কনসেন্সাস মেকানিজমের মধ্যে একটি তুলনা
lang: bn
---
-যখন ইথেরিয়াম চালু করা হয়েছিল, তখন ইথেরিয়ামকে সুরক্ষিত করার জন্য বিশ্বাসযোগ্য হওয়ার আগে প্রুফ-অফ-স্টেকের অনেক গবেষণা এবং উন্নয়নের প্রয়োজন ছিল। প্রুফ-অফ-ওয়ার্ক একটি সহজতর প্রক্রিয়া ছিল যা ইতিমধ্যেই বিটকয়েন দ্বারা প্রমাণিত হয়েছিল, যার অর্থ হল মূল ডেভেলপাররা ইথেরিয়াম চালু করার জন্য এটিকে অবিলম্বে বাস্তবায়ন করতে পারত। প্রুফ-অফ-স্টেককে এমন পর্যায়ে বিকশিত করতে আরও আট বছর সময় লেগেছিল যেখানে এটি বাস্তবায়ন করা যেতে পারে।
+যখন [Ethereum](/) চালু হয়, তখন ইথিরিয়ামকে সুরক্ষিত করার জন্য প্রুফ-অফ-স্টেক এর উপর আস্থা রাখার আগে এর প্রচুর গবেষণা এবং উন্নয়নের প্রয়োজন ছিল। প্রুফ-অফ-ওয়ার্ক ছিল একটি সহজ মেকানিজম যা ইতিমধ্যে Bitcoin দ্বারা প্রমাণিত হয়েছিল, যার মানে কোর ডেভেলপাররা ইথিরিয়াম চালু করার জন্য এটি অবিলম্বে প্রয়োগ করতে পারতেন। প্রুফ-অফ-স্টেক এমন একটি পর্যায়ে তৈরি করতে আরও আট বছর সময় লেগেছিল যেখানে এটি প্রয়োগ করা যেতে পারে।
-এই পৃষ্ঠাটি ইথেরিয়ামের প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেকে পরিবর্তনের পেছনের যুক্তি এবং এর সাথে জড়িত ট্রেড-অফগুলি ব্যাখ্যা করে।
+এই পৃষ্ঠাটি ইথিরিয়ামের প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক এ স্থানান্তরের পেছনের যুক্তি এবং এর সাথে জড়িত সুবিধা-অসুবিধাগুলো ব্যাখ্যা করে।
## নিরাপত্তা {#security}
-ইথেরিয়াম গবেষকরা প্রুফ-অফ-ওয়ার্কের চেয়ে প্রুফ-অফ-স্টেককে বেশি সুরক্ষিত বলে মনে করেন। যাইহোক, এটি শুধুমাত্র সম্প্রতি আসল ইথেরিয়াম মেইননেটের জন্য প্রয়োগ করা হয়েছে এবং এটি প্রুফ-অফ-ওয়ার্কের চেয়ে কম সময়-পরীক্ষিত। নিম্নলিখিত বিভাগগুলিতে প্রুফ-অফ-ওয়ার্কের তুলনায় প্রুফ-অফ-স্টেকের নিরাপত্তা মডেলের সুবিধা এবং অসুবিধাগুলি নিয়ে আলোচনা করা হয়েছে।
+ইথিরিয়াম গবেষকরা প্রুফ-অফ-স্টেক কে প্রুফ-অফ-ওয়ার্ক এর চেয়ে বেশি সুরক্ষিত বলে মনে করেন। তবে, এটি সম্প্রতি আসল ইথিরিয়াম মেইননেট এর জন্য প্রয়োগ করা হয়েছে এবং প্রুফ-অফ-ওয়ার্ক এর তুলনায় কম সময়-প্রমাণিত। নিচের বিভাগগুলোতে প্রুফ-অফ-ওয়ার্ক এর তুলনায় প্রুফ-অফ-স্টেক এর নিরাপত্তা মডেলের সুবিধা এবং অসুবিধাগুলো নিয়ে আলোচনা করা হয়েছে।
### আক্রমণের খরচ {#cost-to-attack}
-প্রুফ-অফ-স্টেকে, ভ্যালিডেটরদের একটি স্মার্ট কন্ট্র্যাক্টে কমপক্ষে 32 ETH এসক্রো ("স্টেক") করতে হয়। ভুল আচরণকারী ভ্যালিডেটরদের শাস্তি দিতে ইথেরিয়াম স্টেক করা ইথার ধ্বংস করতে পারে। কনসেন্সাসে পৌঁছানোর জন্য, মোট স্টেক করা ইথারের কমপক্ষে 66% একটি নির্দিষ্ট ব্লক সেটের পক্ষে ভোট দিতে হবে। স্টেক এর >=66% দ্বারা ভোট দেওয়া ব্লকগুলি "চূড়ান্ত" হয়ে যায়, যার অর্থ সেগুলি সরানো বা পুনর্গঠিত করা যাবে না।
+প্রুফ-অফ-স্টেক এ, ভ্যালিডেটরস দের একটি স্মার্ট কন্ট্রাক্ট এ কমপক্ষে 32 ETH এসক্রো ("স্টেক") করতে হয়। ইথিরিয়াম খারাপ আচরণকারী ভ্যালিডেটরস দের শাস্তি দিতে স্টেক করা ইথার ধ্বংস করতে পারে। কনসেন্সাস এ পৌঁছানোর জন্য, মোট স্টেক করা ইথারের কমপক্ষে 66% কে একটি নির্দিষ্ট ব্লকস সেটের পক্ষে ভোট দিতে হবে। >=66% স্টেক দ্বারা ভোট দেওয়া ব্লকস "ফাইনাল" হয়ে যায়, যার মানে এগুলো সরানো বা পুনর্গঠন করা যায় না।
-নেটওয়ার্কে আক্রমণ করার অর্থ হতে পারে চেইনকে চূড়ান্ত করা থেকে বিরত রাখা বা ক্যানোনিকাল চেইনে ব্লকগুলির একটি নির্দিষ্ট সংগঠন নিশ্চিত করা যা কোনোভাবে আক্রমণকারীকে উপকৃত করে। এর জন্য আক্রমণকারীকে হয় বিপুল পরিমাণ ইথার জমা করে সরাসরি ভোট দিয়ে বা সৎ ভ্যালিডেটরদের একটি নির্দিষ্ট উপায়ে ভোট দেওয়ার জন্য প্রতারণা করে সৎ কনসেন্সাসের পথ পরিবর্তন করতে হয়। সৎ ভ্যালিডেটরদেরকে প্রতারণা করে এমন পরিশীলিত, কম-সম্ভাব্য আক্রমণগুলি বাদ দিলে, ইথেরিয়ামকে আক্রমণ করার খরচ হল সেই স্টেকের খরচ যা একজন আক্রমণকারীকে তাদের পক্ষে কনসেন্সাসকে প্রভাবিত করার জন্য জমা করতে হবে।
+নেটওয়ার্ক আক্রমণ করার অর্থ হতে পারে চেইনটিকে ফাইনাল হওয়া থেকে বিরত রাখা বা ক্যানোনিকাল চেইনে ব্লকস এর একটি নির্দিষ্ট সংগঠন নিশ্চিত করা যা কোনোভাবে আক্রমণকারীকে উপকৃত করে। এর জন্য আক্রমণকারীকে প্রচুর পরিমাণে ইথার জমা করে এবং সরাসরি এটি দিয়ে ভোট দিয়ে বা সৎ ভ্যালিডেটরস দের একটি নির্দিষ্ট উপায়ে ভোট দেওয়ার জন্য প্রতারণা করে সৎ কনসেন্সাস এর পথ পরিবর্তন করতে হয়। সৎ ভ্যালিডেটরস দের প্রতারণা করে এমন অত্যাধুনিক, কম-সম্ভাব্য আক্রমণগুলো বাদ দিলে, ইথিরিয়াম আক্রমণ করার খরচ হলো সেই স্টেক এর খরচ যা একজন আক্রমণকারীকে তাদের পক্ষে কনসেন্সাস প্রভাবিত করার জন্য জমা করতে হয়।
-আক্রমণের সর্বনিম্ন খরচ হল মোট স্টেকের >33%। মোট স্টেকের >33% ধারণকারী একজন আক্রমণকারী কেবল অফলাইনে গিয়ে একটি ফাইনালিটি বিলম্বের কারণ হতে পারে। এটি নেটওয়ার্কের জন্য একটি তুলনামূলকভাবে ছোট সমস্যা কারণ এখানে "ইনঅ্যাকটিভিটি লিক" নামে পরিচিত একটি প্রক্রিয়া রয়েছে যা অফলাইন ভ্যালিডেটরদের থেকে স্টেক ফাঁস করে যতক্ষণ না অনলাইন সংখ্যাগরিষ্ঠ স্টেকের 66% প্রতিনিধিত্ব করে এবং চেইনটিকে আবার চূড়ান্ত করতে পারে। তাত্ত্বিকভাবে একজন আক্রমণকারীর পক্ষে মোট স্টেকের 33%-এর সামান্য বেশি দিয়ে দ্বিগুণ ফাইনালিটি ঘটানোও সম্ভব, যখন তাদের ব্লক প্রযোজক হতে বলা হয় তখন একটির পরিবর্তে দুটি ব্লক তৈরি করে এবং তারপর তাদের সমস্ত ভ্যালিডেটরদের সাথে দ্বিগুণ-ভোট দিয়ে। প্রতিটি ফর্কের জন্য শুধুমাত্র অবশিষ্ট সৎ ভ্যালিডেটরদের 50%-কে প্রথমে প্রতিটি ব্লক দেখতে হবে, তাই যদি তারা তাদের বার্তাগুলিকে ঠিক সময়ে পরিচালনা করতে পারে, তবে তারা উভয় ফর্ককেই চূড়ান্ত করতে সক্ষম হতে পারে। এটির সফলতার সম্ভাবনা কম, কিন্তু যদি একজন আক্রমণকারী ডাবল-ফাইনালিটি ঘটাতে সক্ষম হয়, তাহলে ইথেরিয়াম সম্প্রদায়কে একটি ফর্ক অনুসরণ করার সিদ্ধান্ত নিতে হবে, সেক্ষেত্রে আক্রমণকারীর ভ্যালিডেটরদের অন্যটিতে স্ল্যাশ করা হবে।
+আক্রমণের সর্বনিম্ন খরচ হলো মোট স্টেক এর >33%। মোট স্টেক এর >33% ধারণকারী একজন আক্রমণকারী কেবল অফলাইনে গিয়ে ফাইনালিটি বিলম্ব ঘটাতে পারে। এটি নেটওয়ার্ক এর জন্য তুলনামূলকভাবে একটি ছোট সমস্যা কারণ "ইনঅ্যাক্টিভিটি লিক" নামে পরিচিত একটি মেকানিজম রয়েছে যা অফলাইন ভ্যালিডেটরস দের থেকে স্টেক লিক করে যতক্ষণ না অনলাইন সংখ্যাগরিষ্ঠতা স্টেক এর 66% প্রতিনিধিত্ব করে এবং চেইনটিকে আবার ফাইনাল করতে পারে। তাত্ত্বিকভাবে একজন আক্রমণকারীর পক্ষে মোট স্টেক এর 33% এর সামান্য বেশি দিয়ে ডাবল ফাইনালিটি ঘটানোও সম্ভব, যখন তাদের ব্লক প্রডিউসার হতে বলা হয় তখন একটির পরিবর্তে দুটি ব্লক তৈরি করে এবং তারপর তাদের সমস্ত ভ্যালিডেটরস এর সাথে ডাবল-ভোট দিয়ে। প্রতিটি ফর্ক এর জন্য অবশিষ্ট সৎ ভ্যালিডেটরস দের মাত্র 50% কে প্রথমে প্রতিটি ব্লক দেখতে হয়, তাই যদি তারা তাদের বার্তাগুলোর সময় ঠিকমতো মেলাতে পারে, তবে তারা উভয় ফর্ক ফাইনাল করতে সক্ষম হতে পারে। এর সাফল্যের সম্ভাবনা কম, তবে যদি একজন আক্রমণকারী ডাবল-ফাইনালিটি ঘটাতে সক্ষম হয়, তবে ইথিরিয়াম সম্প্রদায়কে একটি ফর্ক অনুসরণ করার সিদ্ধান্ত নিতে হবে, সেক্ষেত্রে আক্রমণকারীর ভ্যালিডেটরস দের অন্যটিতে আবশ্যিকভাবে স্ল্যাশড করা হবে।
-মোট স্টেকের >33% দিয়ে, একজন আক্রমণকারীর ইথেরিয়াম নেটওয়ার্কে একটি ছোট (ফাইনালিটি বিলম্ব) বা আরও গুরুতর (ডাবল ফাইনালিটি) প্রভাব ফেলার সুযোগ থাকে। নেটওয়ার্কে 14,000,000-এর বেশি ETH স্টেক করা এবং $1000/ETH-এর একটি প্রতিনিধি মূল্যের সাথে, এই আক্রমণগুলি মাউন্ট করার জন্য সর্বনিম্ন খরচ হল `1000 x 14,000,000 x 0.33 = $4,620,000,000`। আক্রমণকারী স্ল্যাশিংয়ের মাধ্যমে এই অর্থ হারাবে এবং নেটওয়ার্ক থেকে বের হয়ে যাবে। আবার আক্রমণ করার জন্য, তাদের স্টেকের >33% (আবার) জমা করতে হবে এবং তা পুড়িয়ে ফেলতে হবে (আবার)। নেটওয়ার্কে আক্রমণ করার প্রতিটি প্রচেষ্টায় >$4.6 বিলিয়ন খরচ হবে ($1000/ETH এবং 14M ETH স্টেক করা অবস্থায়)। আক্রমণকারীকে যখন স্ল্যাশ করা হয় তখন নেটওয়ার্ক থেকে বের করে দেওয়া হয় এবং পুনরায় যোগদানের জন্য তাদের একটি অ্যাক্টিভেশন কিউতে যোগ দিতে হয়। এর মানে হল যে একটি পুনরাবৃত্ত আক্রমণের হার শুধুমাত্র সেই হারের মধ্যে সীমাবদ্ধ নয় যে হারে আক্রমণকারী মোট স্টেকের >33% জমা করতে পারে বরং তাদের সমস্ত ভ্যালিডেটরদের নেটওয়ার্কে অনবোর্ড করতে যে সময় লাগে তার দ্বারাও সীমাবদ্ধ। প্রতিবার আক্রমণকারী আক্রমণ করার সময়, তারা অনেক বেশি দরিদ্র হয়ে যায়, এবং ফলস্বরূপ সরবরাহ ধাক্কার জন্য সম্প্রদায়ের বাকিরা আরও ধনী হয়।
+মোট স্টেক এর >33% এর সাথে, একজন আক্রমণকারীর ইথিরিয়াম নেটওয়ার্ক এ একটি ছোট (ফাইনালিটি বিলম্ব) বা আরও গুরুতর (ডাবল ফাইনালিটি) প্রভাব ফেলার সুযোগ থাকে। নেটওয়ার্ক এ 14,000,000 এর বেশি ETH স্টেক করা এবং $1000/ETH এর একটি প্রতিনিধিত্বমূলক মূল্যের সাথে, এই আক্রমণগুলো চালানোর ন্যূনতম খরচ হলো `1000 x 14,000,000 x 0.33 = $4,620,000,000`। আক্রমণকারী স্ল্যাশিং এর মাধ্যমে এই অর্থ হারাবে এবং নেটওয়ার্ক থেকে বহিষ্কৃত হবে। আবার আক্রমণ করার জন্য, তাদের (আবার) স্টেক এর >33% জমা করতে হবে এবং এটি (আবার) পোড়াতে হবে। নেটওয়ার্ক আক্রমণ করার প্রতিটি প্রচেষ্টায় >$4.6 বিলিয়ন খরচ হবে ($1000/ETH এবং 14M ETH স্টেক করা অবস্থায়)। আক্রমণকারীকে স্ল্যাশড করার সময় নেটওয়ার্ক থেকেও বহিষ্কার করা হয় এবং পুনরায় যোগদানের জন্য তাদের একটি অ্যাক্টিভেশন সারিতে যোগ দিতে হয়। এর মানে হলো বারবার আক্রমণের হার কেবল আক্রমণকারী মোট স্টেক এর >33% জমা করার হারের মধ্যেই সীমাবদ্ধ নয়, বরং তাদের সমস্ত ভ্যালিডেটরস দের নেটওয়ার্ক এ অনবোর্ড করতে যে সময় লাগে তার উপরও নির্ভর করে। প্রতিবার আক্রমণকারী আক্রমণ করলে, তারা অনেক বেশি দরিদ্র হয়ে যায় এবং ফলস্বরূপ সাপ্লাই শকের কারণে বাকি সম্প্রদায় আরও ধনী হয়।
-অন্যান্য আক্রমণ, যেমন 51% আক্রমণ বা মোট স্টেকের 66% সহ ফাইনালিটি রিভার্সন, এর জন্য যথেষ্ট বেশি ETH প্রয়োজন এবং আক্রমণকারীর জন্য অনেক বেশি ব্যয়বহুল।
+অন্যান্য আক্রমণ, যেমন ৫১% এ্যাটাক বা মোট স্টেক এর 66% এর সাথে ফাইনালিটি রিভার্সন, এর জন্য উল্লেখযোগ্যভাবে বেশি ETH প্রয়োজন এবং আক্রমণকারীর জন্য অনেক বেশি ব্যয়বহুল।
-প্রুফ-অফ-ওয়ার্ক-এর সাথে এর তুলনা করুন। প্রুফ-অফ-ওয়ার্ক ইথেরিয়ামে একটি আক্রমণ শুরু করার খরচ ছিল ধারাবাহিকভাবে মোট নেটওয়ার্ক হ্যাস রেটের >50% মালিকানার খরচ। ধারাবাহিকভাবে প্রুফ-অফ-ওয়ার্ক সমাধানগুলি গণনা করার জন্য অন্যান্য মাইনারদের ছাড়িয়ে যাওয়ার জন্য পর্যাপ্ত কম্পিউটিং পাওয়ারের হার্ডওয়্যার এবং চলমান খরচের পরিমাণ ছিল এটি। ইথেরিয়াম বেশিরভাগই ASIC-এর পরিবর্তে GPU ব্যবহার করে মাইন করা হয়েছিল, যা খরচ কমিয়েছিল (যদিও ইথেরিয়াম যদি প্রুফ-অফ-ওয়ার্কে থাকত, তাহলে ASIC মাইনিং আরও জনপ্রিয় হয়ে উঠতে পারত)। একজন প্রতিপক্ষকে একটি প্রুফ-অফ-ওয়ার্ক ইথেরিয়াম নেটওয়ার্কে আক্রমণ করার জন্য প্রচুর হার্ডওয়্যার ক্রয় করতে হবে এবং এটি চালানোর জন্য বিদ্যুতের জন্য অর্থ প্রদান করতে হবে, তবে মোট খরচ একটি আক্রমণ শুরু করার জন্য পর্যাপ্ত ETH জমা করার জন্য প্রয়োজনীয় খরচের চেয়ে কম হবে। একটি 51% আক্রমণ প্রুফ-অফ-স্টেকের চেয়ে প্রুফ-অফ-ওয়ার্কে ~[20x কম](https://youtu.be/1m12zgJ42dI?t=1562) ব্যয়বহুল। যদি আক্রমণটি শনাক্ত করা হয় এবং তাদের পরিবর্তনগুলি অপসারণের জন্য চেইনটি হার্ড-ফর্ক করা হয়, তাহলে আক্রমণকারী বারবার একই হার্ডওয়্যার ব্যবহার করে নতুন ফর্কটিকে আক্রমণ করতে পারে।
+এটিকে প্রুফ-অফ-ওয়ার্ক এর সাথে তুলনা করুন। প্রুফ-অফ-ওয়ার্ক ইথিরিয়াম এ আক্রমণ চালানোর খরচ ছিল ধারাবাহিকভাবে মোট নেটওয়ার্ক হ্যাস রেটের >50% এর মালিক হওয়ার খরচ। এটি ধারাবাহিকভাবে প্রুফ-অফ-ওয়ার্ক সমাধানগুলো গণনা করার জন্য অন্যান্য মাইনারদের ছাড়িয়ে যাওয়ার জন্য পর্যাপ্ত কম্পিউটিং শক্তির হার্ডওয়্যার এবং পরিচালনার খরচের সমান ছিল। ইথিরিয়াম বেশিরভাগই ASICs এর পরিবর্তে GPUs ব্যবহার করে মাইন করা হয়েছিল, যা খরচ কম রেখেছিল (যদিও ইথিরিয়াম প্রুফ-অফ-ওয়ার্ক এ থাকলে, ASIC মাইনিং আরও জনপ্রিয় হতে পারত)। একটি প্রুফ-অফ-ওয়ার্ক ইথিরিয়াম নেটওয়ার্ক আক্রমণ করার জন্য একজন প্রতিপক্ষকে প্রচুর হার্ডওয়্যার কিনতে হবে এবং এটি চালানোর জন্য বিদ্যুতের বিল দিতে হবে, তবে মোট খরচ আক্রমণ চালানোর জন্য পর্যাপ্ত ETH জমা করার জন্য প্রয়োজনীয় খরচের চেয়ে কম হবে। একটি ৫১% এ্যাটাক প্রুফ-অফ-স্টেক এর চেয়ে প্রুফ-অফ-ওয়ার্ক এ ~[20 গুণ কম](https://youtu.be/1m12zgJ42dI?t=1562) ব্যয়বহুল। যদি আক্রমণটি শনাক্ত করা হয় এবং তাদের পরিবর্তনগুলো সরাতে চেইনটি হার্ড ফর্ক করা হয়, তবে আক্রমণকারী নতুন ফর্ক আক্রমণ করতে বারবার একই হার্ডওয়্যার ব্যবহার করতে পারে।
### জটিলতা {#complexity}
-প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্কের চেয়ে অনেক বেশি জটিল। এটি প্রুফ-অফ-ওয়ার্ক-এর পক্ষে একটি পয়েন্ট হতে পারে কারণ সহজ প্রোটোকলগুলিতে ঘটনাক্রমে বাগ বা অনিচ্ছাকৃত প্রভাবগুলি প্রবর্তন করা কঠিন। যাইহোক, বছরের পর বছর গবেষণা ও উন্নয়ন, সিমুলেশন এবং টেস্টনেট বাস্তবায়নের মাধ্যমে জটিলতাকে দমন করা হয়েছে। প্রুফ-অফ-স্টেক প্রোটোকলটি পাঁচটি পৃথক দল দ্বারা (এক্সিকিউশন এবং কনসেন্সাস লেয়ারের প্রত্যেকটিতে) পাঁচটি প্রোগ্রামিং ভাষায় স্বাধীনভাবে প্রয়োগ করা হয়েছে, যা ক্লায়েন্ট বাগগুলির বিরুদ্ধে স্থিতিস্থাপকতা প্রদান করে।
+প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্ক এর চেয়ে অনেক বেশি জটিল। এটি প্রুফ-অফ-ওয়ার্ক এর পক্ষে একটি পয়েন্ট হতে পারে কারণ সহজ প্রটোকলগুলোতে দুর্ঘটনাবশত বাগ বা অনাকাঙ্ক্ষিত প্রভাব প্রবর্তন করা কঠিন। তবে, বছরের পর বছর গবেষণা এবং উন্নয়ন, সিমুলেশন এবং টেস্টনেট বাস্তবায়নের মাধ্যমে জটিলতা নিয়ন্ত্রণ করা হয়েছে। প্রুফ-অফ-স্টেক প্রটোকলটি পাঁচটি আলাদা দল দ্বারা (এক্সিকিউশন লেয়ার এবং কনসেন্সাস লেয়ার প্রতিটিতে) পাঁচটি প্রোগ্রামিং ভাষায় স্বাধীনভাবে বাস্তবায়িত হয়েছে, যা ক্লায়েন্ট বাগগুলোর বিরুদ্ধে স্থিতিস্থাপকতা প্রদান করে।
-প্রুফ-অফ-স্টেক কনসেন্সাস লজিককে নিরাপদে বিকাশ এবং পরীক্ষা করার জন্য, ইথেরিয়াম মেইননেটে প্রুফ-অফ-স্টেক প্রয়োগ করার দুই বছর আগে বিকন চেইন চালু করা হয়েছিল। বিকন চেইন প্রুফ-অফ-স্টেক পরীক্ষার জন্য একটি স্যান্ডবক্স হিসাবে কাজ করেছিল, কারণ এটি একটি লাইভ ব্লকচেইন ছিল যা প্রুফ-অফ-স্টেক কনসেন্সাস লজিক প্রয়োগ করে কিন্তু আসল ইথেরিয়াম লেনদেনগুলিকে স্পর্শ না করে - কার্যকরভাবে কেবল নিজের উপর কনসেন্সাসে আসে। একবার এটি পর্যাপ্ত সময়ের জন্য স্থিতিশীল এবং বাগ-মুক্ত হয়ে গেলে, বিকন চেইনটিকে ইথেরিয়াম মেইননেটের সাথে "মার্জ" করা হয়েছিল। এই সবগুলি প্রুফ-অফ-স্টেকের জটিলতাকে এমন পর্যায়ে নিয়ন্ত্রণ করতে অবদান রেখেছে যে অনিচ্ছাকৃত পরিণতি বা ক্লায়েন্ট বাগের ঝুঁকি খুব কম ছিল।
+প্রুফ-অফ-স্টেক কনসেন্সাস লজিক নিরাপদে বিকাশ এবং পরীক্ষা করার জন্য, ইথিরিয়াম মেইননেট এ প্রুফ-অফ-স্টেক বাস্তবায়নের দুই বছর আগে বিকন চেইন চালু করা হয়েছিল। বিকন চেইন প্রুফ-অফ-স্টেক পরীক্ষার জন্য একটি স্যান্ডবক্স হিসেবে কাজ করেছিল, কারণ এটি একটি লাইভ ব্লকচেইন ছিল যা প্রুফ-অফ-স্টেক কনসেন্সাস লজিক বাস্তবায়ন করেছিল কিন্তু আসল ইথিরিয়াম লেনদেন স্পর্শ না করে - কার্যকরভাবে কেবল নিজের উপর কনসেন্সাস এ পৌঁছানো। একবার এটি পর্যাপ্ত সময়ের জন্য স্থিতিশীল এবং বাগ-মুক্ত হওয়ার পর, বিকন চেইন ইথিরিয়াম মেইননেট এর সাথে "মার্জ" করা হয়েছিল। এই সবকিছু প্রুফ-অফ-স্টেক এর জটিলতা এমন পর্যায়ে নিয়ন্ত্রণ করতে অবদান রেখেছিল যে অনাকাঙ্ক্ষিত পরিণতি বা ক্লায়েন্ট বাগগুলোর ঝুঁকি খুব কম ছিল।
### আক্রমণের ক্ষেত্র {#attack-surface}
-প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্কের চেয়ে বেশি জটিল, যার অর্থ হল পরিচালনা করার জন্য আরও সম্ভাব্য আক্রমণ ভেক্টর রয়েছে। ক্লায়েন্টদের সংযোগকারী একটি পিয়ার-টু-পিয়ার নেটওয়ার্কের পরিবর্তে, দুটি রয়েছে, প্রতিটি একটি পৃথক প্রোটোকল বাস্তবায়ন করে। প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একটি নির্দিষ্ট ভ্যালিডেটর আগে থেকে নির্বাচন করা ডিনায়েল-অফ-সার্ভিসের সম্ভাবনা তৈরি করে যেখানে বিপুল পরিমাণ নেটওয়ার্ক ট্র্যাফিক সেই নির্দিষ্ট ভ্যালিডেটরকে অফলাইনে নিয়ে যায়।
+প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্ক এর চেয়ে বেশি জটিল, যার মানে হলো পরিচালনা করার জন্য আরও সম্ভাব্য আক্রমণ ভেক্টর রয়েছে। ক্লায়েন্টস দের সংযুক্তকারী একটি পিয়ার-টু-পিয়ার নেটওয়ার্ক এর পরিবর্তে, দুটি রয়েছে, প্রতিটি একটি আলাদা প্রটোকল বাস্তবায়ন করে। প্রতিটি স্লটে একটি ব্লক প্রস্তাব করার জন্য একজন নির্দিষ্ট ভ্যালিডেটর পূর্ব-নির্বাচিত থাকার ফলে ডিনায়াল-অফ-সার্ভিস এর সম্ভাবনা তৈরি হয় যেখানে প্রচুর পরিমাণে নেটওয়ার্ক ট্রাফিক সেই নির্দিষ্ট ভ্যালিডেটর কে অফলাইনে পাঠিয়ে দেয়।
-এমন উপায়ও রয়েছে যে আক্রমণকারীরা তাদের ব্লক বা অ্যাটাস্টেশনগুলির মুক্তির সময় সাবধানে নির্ধারণ করতে পারে যাতে সেগুলি সৎ নেটওয়ার্কের একটি নির্দিষ্ট অনুপাত দ্বারা প্রাপ্ত হয়, যা তাদের নির্দিষ্ট উপায়ে ভোট দিতে প্রভাবিত করে। অবশেষে, একজন আক্রমণকারী কেবল স্টেক করার জন্য পর্যাপ্ত ETH জমা করতে পারে এবং কনসেন্সাস মেকানিজমে আধিপত্য বিস্তার করতে পারে। এই প্রতিটি [আক্রমণ ভেক্টরের সাথে যুক্ত প্রতিরক্ষা রয়েছে](/developers/docs/consensus-mechanisms/pos/attack-and-defense), কিন্তু প্রুফ-অফ-ওয়ার্কের অধীনে রক্ষা করার জন্য তাদের অস্তিত্ব নেই।
+এমন উপায়ও রয়েছে যার মাধ্যমে আক্রমণকারীরা তাদের ব্লকস বা এটেস্টেশনস প্রকাশের সময় সাবধানে নির্ধারণ করতে পারে যাতে সেগুলো সৎ নেটওয়ার্ক এর একটি নির্দিষ্ট অনুপাত দ্বারা গৃহীত হয়, তাদের নির্দিষ্ট উপায়ে ভোট দিতে প্রভাবিত করে। পরিশেষে, একজন আক্রমণকারী কেবল স্টেক করার জন্য পর্যাপ্ত ETH জমা করতে পারে এবং কনসেন্সাস মেকানিজম এ আধিপত্য বিস্তার করতে পারে। এই প্রতিটি [আক্রমণ ভেক্টরের সাথে সম্পর্কিত প্রতিরক্ষা রয়েছে](/developers/docs/consensus-mechanisms/pos/attack-and-defense), তবে প্রুফ-অফ-ওয়ার্ক এর অধীনে রক্ষা করার জন্য এগুলোর অস্তিত্ব নেই।
## বিকেন্দ্রীকরণ {#decentralization}
-প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্কের চেয়ে বেশি বিকেন্দ্রীভূত কারণ মাইনিং হার্ডওয়্যার অস্ত্র প্রতিযোগিতা ব্যক্তি এবং ছোট সংস্থাগুলিকে মূল্যহীন করে তোলে। যদিও যে কেউ প্রযুক্তিগতভাবে পরিমিত হার্ডওয়্যার দিয়ে মাইনিং শুরু করতে পারে, প্রাতিষ্ঠানিক মাইনিং অপারেশনের তুলনায় তাদের কোনো পুরস্কার পাওয়ার সম্ভাবনা খুবই কম। প্রুফ-অফ-স্টেকের সাথে, স্টেকিংয়ের খরচ এবং সেই স্টেকের উপর শতাংশ রিটার্ন সবার জন্য একই। বর্তমানে একটি ভ্যালিডেটর চালাতে 32 ETH খরচ হয়।
+প্রুফ-অফ-স্টেক প্রুফ-অফ-ওয়ার্ক এর চেয়ে বেশি ডিসেন্ট্রালাইজড কারণ মাইনিং হার্ডওয়্যার অস্ত্র প্রতিযোগিতা ব্যক্তি এবং ছোট সংস্থাগুলোকে দামের কারণে বাদ দেওয়ার প্রবণতা রাখে। যদিও যে কেউ প্রযুক্তিগতভাবে সাধারণ হার্ডওয়্যার দিয়ে মাইনিং শুরু করতে পারে, প্রাতিষ্ঠানিক মাইনিং অপারেশনের তুলনায় তাদের কোনো পুরস্কার পাওয়ার সম্ভাবনা খুবই কম। প্রুফ-অফ-স্টেক এর সাথে, স্টেকিং এর খরচ এবং সেই স্টেক এর উপর শতাংশ রিটার্ন সবার জন্য সমান। বর্তমানে একটি ভ্যালিডেটর চালানোর জন্য 32 ETH খরচ হয়।
-অন্যদিকে, লিকুইড স্টেকিং ডেরিভেটিভের উদ্ভাবন কেন্দ্রীকরণের উদ্বেগ সৃষ্টি করেছে কারণ কয়েকটি বড় প্রদানকারী বিপুল পরিমাণে স্টেক করা ETH পরিচালনা করে। এটি সমস্যাযুক্ত এবং যত তাড়াতাড়ি সম্ভব সংশোধন করা প্রয়োজন, তবে এটি দেখতে যতটা সহজ তার চেয়েও বেশি সূক্ষ্ম। কেন্দ্রীভূত স্টেকিং প্রদানকারীদের অগত্যা ভ্যালিডেটরদের উপর কেন্দ্রীভূত নিয়ন্ত্রণ থাকে না - প্রায়শই এটি ETH-এর একটি কেন্দ্রীয় পুল তৈরি করার একটি উপায় যা অনেক স্বাধীন নোড অপারেটর প্রতিটি অংশগ্রহণকারীর নিজের 32 ETH প্রয়োজন ছাড়াই স্টেক করতে পারে।
+অন্যদিকে, লিকুইড স্টেকিং ডেরিভেটিভস এর আবিষ্কার কেন্দ্রীকরণের উদ্বেগ তৈরি করেছে কারণ কয়েকজন বড় প্রদানকারী প্রচুর পরিমাণে স্টেক করা ETH পরিচালনা করে। এটি সমস্যাযুক্ত এবং যত তাড়াতাড়ি সম্ভব সংশোধন করা প্রয়োজন, তবে এটি যতটা মনে হয় তার চেয়েও বেশি সূক্ষ্ম। কেন্দ্রীভূত স্টেকিং প্রদানকারীদের অগত্যা ভ্যালিডেটরস দের উপর কেন্দ্রীভূত নিয়ন্ত্রণ থাকে না - প্রায়শই এটি কেবল ETH এর একটি কেন্দ্রীয় পুল তৈরি করার একটি উপায় যা অনেক স্বাধীন নোড অপারেটর স্টেক করতে পারে যেখানে প্রতিটি অংশগ্রহণকারীর নিজস্ব 32 ETH এর প্রয়োজন হয় না।
-ইথেরিয়ামের জন্য সেরা বিকল্প হল ভ্যালিডেটরগুলিকে বাড়ির কম্পিউটারে স্থানীয়ভাবে চালানো, যা বিকেন্দ্রীকরণকে সর্বাধিক করে। এই কারণেই ইথেরিয়াম এমন পরিবর্তনগুলিকে প্রতিরোধ করে যা একটি নোড/ভ্যালিডেটর চালানোর জন্য হার্ডওয়্যার প্রয়োজনীয়তা বাড়ায়।
+ইথিরিয়ামের জন্য সেরা বিকল্প হলো ভ্যালিডেটরস দের স্থানীয়ভাবে বাড়ির কম্পিউটারে চালানো, যা বিকেন্দ্রীকরণকে সর্বাধিক করে। এই কারণেই ইথিরিয়াম এমন পরিবর্তনগুলোকে প্রতিহত করে যা একটি নোড/ভ্যালিডেটর চালানোর জন্য হার্ডওয়্যার প্রয়োজনীয়তা বাড়ায়।
## স্থায়িত্ব {#sustainability}
-প্রুফ-অফ-স্টেক হল ব্লকচেইন সুরক্ষিত করার একটি কার্বন-সস্তা উপায়। প্রুফ-অফ-ওয়ার্ক-এর অধীনে মাইনাররা একটি ব্লক মাইন করার অধিকারের জন্য প্রতিযোগিতা করে। মাইনাররা যখন দ্রুত গণনা করতে পারে তখন তারা আরও সফল হয়, যা হার্ডওয়্যার এবং শক্তি খরচে বিনিয়োগকে উৎসাহিত করে। প্রুফ-অফ-স্টেকে স্যুইচ করার আগে ইথেরিয়ামের জন্য এটি পরিলক্ষিত হয়েছিল। প্রুফ-অফ-স্টেকে রূপান্তরের কিছুক্ষণ আগে, ইথেরিয়াম প্রায় 78 TWh/বছর ব্যবহার করছিল - যা একটি ছোট দেশের সমান। যাইহোক, প্রুফ-অফ-স্টেকে স্যুইচ করা এই শক্তি ব্যয়কে ~99.98% কমিয়েছে। প্রুফ-অফ-স্টেক ইথেরিয়ামকে একটি শক্তি-দক্ষ, কম কার্বন প্ল্যাটফর্ম তৈরি করেছে।
+প্রুফ-অফ-স্টেক হলো ব্লকচেইন সুরক্ষিত করার একটি কার্বন-সাশ্রয়ী উপায়। প্রুফ-অফ-ওয়ার্ক এর অধীনে মাইনাররা একটি ব্লক মাইন করার অধিকারের জন্য প্রতিযোগিতা করে। মাইনাররা বেশি সফল হয় যখন তারা দ্রুত গণনা করতে পারে, যা হার্ডওয়্যার এবং শক্তি খরচে বিনিয়োগকে উৎসাহিত করে। প্রুফ-অফ-স্টেক এ স্থানান্তরের আগে ইথিরিয়ামের জন্য এটি পরিলক্ষিত হয়েছিল। প্রুফ-অফ-স্টেক এ স্থানান্তরের ঠিক আগে, ইথিরিয়াম প্রায় 78 TWh/বছর শক্তি খরচ করছিল - যা একটি ছোট দেশের সমান। তবে, প্রুফ-অফ-স্টেক এ স্থানান্তর এই শক্তি ব্যয় ~99.98% কমিয়ে দিয়েছে। প্রুফ-অফ-স্টেক ইথিরিয়ামকে একটি শক্তি-সাশ্রয়ী, কম কার্বন প্ল্যাটফর্মে পরিণত করেছে।
-[ইথেরিয়ামের শক্তি খরচ সম্পর্কে আরও](/energy-consumption)
+[ইথিরিয়ামের শক্তি খরচ সম্পর্কে আরও জানুন](/energy-consumption)
## ইস্যুয়েন্স {#issuance}
-প্রুফ-অফ-স্টেক ইথেরিয়াম প্রুফ-অফ-ওয়ার্ক ইথেরিয়ামের চেয়ে অনেক কম কয়েন ইস্যু করে তার নিরাপত্তার জন্য অর্থ প্রদান করতে পারে কারণ ভ্যালিডেটরদের উচ্চ বিদ্যুৎ খরচ দিতে হয় না। ফলস্বরূপ, যখন বিপুল পরিমাণ ETH পুড়িয়ে ফেলা হয় তখন ETH তার মুদ্রাস্ফীতি কমাতে পারে বা এমনকি মুদ্রাসংকোচনকারী হয়ে উঠতে পারে। কম মুদ্রাস্ফীতির মাত্রা মানে ইথেরিয়ামের নিরাপত্তা প্রুফ-অফ-ওয়ার্কের অধীনে যা ছিল তার চেয়ে সস্তা।
+প্রুফ-অফ-স্টেক ইথিরিয়াম প্রুফ-অফ-ওয়ার্ক ইথিরিয়ামের চেয়ে অনেক কম কয়েন ইস্যু করে এর নিরাপত্তার জন্য অর্থ প্রদান করতে পারে কারণ ভ্যালিডেটরস দের উচ্চ বিদ্যুৎ বিল দিতে হয় না। ফলস্বরূপ, ETH এর মুদ্রাস্ফীতি কমাতে পারে বা এমনকি প্রচুর পরিমাণে ETH পোড়ানো হলে ডিফ্লেশনারি হয়ে উঠতে পারে। নিম্ন মুদ্রাস্ফীতির মাত্রা মানে ইথিরিয়ামের নিরাপত্তা প্রুফ-অফ-ওয়ার্ক এর অধীনে যা ছিল তার চেয়ে সস্তা।
-## আপনি কি দেখে শিখতে বেশি পছন্দ করেন? {#visual-learner}
+## ভিজ্যুয়াল লার্নারদের জন্য {#visual-learner}
-জাস্টিন ড্রেক-কে প্রুফ-অফ-ওয়ার্কের উপর প্রুফ-অফ-স্টেকের সুবিধাগুলি ব্যাখ্যা করতে দেখুন:
+জাস্টিন ড্রেক প্রুফ-অফ-ওয়ার্ক এর চেয়ে প্রুফ-অফ-স্টেক এর সুবিধাগুলো ব্যাখ্যা করছেন তা দেখুন:
## আরও পড়ুন {#further-reading}
-- [Vitalik-এর প্রুফ-অফ-স্টেক ডিজাইন দর্শন](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51)
-- [Vitalik-এর প্রুফ-অফ-স্টেক প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake)
-- [PoS বনাম PoW-এর উপর "সিম্পলি এক্সপ্লেইনড" ভিডিও](https://www.youtube.com/watch?v=M3EFi_POhps)
+- [ভিটালিকের প্রুফ-অফ-স্টেক ডিজাইন দর্শন](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51)
+- [ভিটালিকের প্রুফ-অফ-স্টেক সম্পর্কিত সাধারণ প্রশ্নাবলী (FAQs)](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake)
+- [pos বনাম pow এর উপর "Simply Explained" ভিডিও](https://www.youtube.com/watch?v=M3EFi_POhps)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
index 5f4720e776d..19049a98e3c 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
@@ -1,34 +1,34 @@
---
-title: "প্রুফ-অফ-স্টেক রিওয়ার্ডস এবং পেনাল্টি"
-description: "প্রুফ-অফ-স্টেক ইথেরিয়ামে ইন-প্রটোকল ইনসেন্টিভ সম্পর্কে জানুন।"
+title: প্রুফ-অফ-স্টেক রিওয়ার্ড এবং পেনাল্টি
+description: প্রুফ-অফ-স্টেক ইথিরিয়ামে ইন-প্রটোকল ইনসেন্টিভ সম্পর্কে জানুন।
lang: bn
---
-ইথেরিয়াম তার নিজস্ব ক্রিপ্টোকারেন্সি, ইথার (ETH) ব্যবহার করে সুরক্ষিত থাকে। যে নোড অপারেটররা ব্লক ভ্যালিডেট করতে এবং চেইনের হেড শনাক্ত করতে অংশগ্রহণ করতে ইচ্ছুক, তারা ইথেরিয়ামে [ডিপোজিট কন্ট্রাক্ট](/staking/deposit-contract/)-এ ইথার জমা করে। এরপর তাদেরকে ভ্যালিডেটর সফটওয়্যার চালানোর জন্য ইথারে অর্থ প্রদান করা হয়, যা পিয়ার-টু-পিয়ার নেটওয়ার্কের মাধ্যমে প্রাপ্ত নতুন ব্লকের বৈধতা পরীক্ষা করে এবং চেইনের হেড শনাক্ত করার জন্য ফর্ক-চয়েস অ্যালগরিদম প্রয়োগ করে।
+[Ethereum](/) এর নিজস্ব ক্রিপটোকারেন্সি, ইথার (ETH) ব্যবহার করে সুরক্ষিত করা হয়। নোড অপারেটররা যারা ব্লকস ভ্যালিডেট করতে এবং চেইনের হেড শনাক্ত করতে অংশগ্রহণ করতে চায়, তারা ইথিরিয়ামের [deposit contract](/staking/deposit-contract/)-এ ইথার জমা করে। এরপর পিয়ার-টু-পিয়ার নেটওয়ার্কের মাধ্যমে প্রাপ্ত নতুন ব্লকস এর বৈধতা যাচাই করতে এবং চেইনের হেড শনাক্ত করার জন্য ফর্ক-চয়েস এ্যালগরিদম প্রয়োগ করতে ভ্যালিডেটর সফটওয়্যার চালানোর জন্য তাদেরকে ইথারে পেমেন্ট করা হয়।
-একজন ভ্যালিডেটরের দুটি প্রধান ভূমিকা রয়েছে: ১) নতুন ব্লক পরীক্ষা করা এবং যদি সেগুলি বৈধ হয় তবে সেগুলিতে “অ্যাটেস্ট” করা, ২) মোট ভ্যালিডেটর পুল থেকে র্যান্ডমভাবে নির্বাচিত হলে নতুন ব্লক প্রস্তাব করা। যদি ভ্যালিডেটরকে বলা হলে এই কাজগুলির কোনোটি করতে ব্যর্থ হয়, তবে তারা একটি ইথার পেআউট থেকে বঞ্চিত হয়। ভ্যালিডেটরদের কখনও কখনও সিগনেচার অ্যাগ্রিগেশন এবং সিঙ্ক কমিটিতে অংশগ্রহণের দায়িত্বও দেওয়া হয়।
+একজন ভ্যালিডেটর এর জন্য দুটি প্রধান ভূমিকা রয়েছে: 1) নতুন ব্লকস চেক করা এবং সেগুলো বৈধ হলে সেগুলোতে "এটেস্টেশন" প্রদান করা, 2) মোট ভ্যালিডেটর পুল থেকে দৈবচয়নে নির্বাচিত হলে নতুন ব্লকস প্রস্তাব করা। যদি ভ্যালিডেটর এই কাজগুলোর কোনোটি করতে ব্যর্থ হয়, তবে তারা ইথার পেআউট থেকে বঞ্চিত হয়। ভ্যালিডেটরস-দের মাঝে মাঝে সিগনেচার এগ্রিগেশন এবং সিঙ্ক কমিটিতে অংশগ্রহণের দায়িত্বও দেওয়া হয়।
-এমন কিছু কাজও আছে যা দুর্ঘটনাক্রমে করা খুব কঠিন এবং কিছু দুর্ভাবনাপূর্ণ উদ্দেশ্য নির্দেশ করে, যেমন একই স্লটের জন্য একাধিক ব্লক প্রস্তাব করা বা একই স্লটের জন্য একাধিক ব্লকে অ্যাটেস্ট করা। এগুলো হলো “স্ল্যাশেবল” আচরণ, যার ফলে ভ্যালিডেটরকে নেটওয়ার্ক থেকে সরিয়ে দেওয়ার আগে কিছু পরিমাণ ইথার (১ ETH পর্যন্ত) বার্ন করা হয়, যা ৩৬ দিন সময় নেয়। স্ল্যাশড ভ্যালিডেটরের ইথার এক্সিট পিরিয়ড জুড়ে ধীরে ধীরে শেষ হয়ে যায়, কিন্তু ১৮তম দিনে তারা একটি “কোরিলেশন পেনাল্টি” পায়, যা একই সময়ে আরও বেশি ভ্যালিডেটর স্ল্যাশড হলে বড় হয়। কনসেন্সাস মেকানিজমের ইনসেনটিভ কাঠামো তাই সততার জন্য পুরস্কৃত করে এবং খারাপ অ্যাক্টরদের শাস্তি দেয়।
+এমন কিছু কাজও রয়েছে যা দুর্ঘটনাবশত করা খুব কঠিন এবং কোনো ক্ষতিকারক উদ্দেশ্য নির্দেশ করে, যেমন একই স্লটের জন্য একাধিক ব্লকস প্রস্তাব করা বা একই স্লটের জন্য একাধিক ব্লকস-এ এটেস্টেশন প্রদান করা। এগুলো হলো "স্ল্যাশেবল" আচরণ যার ফলে ভ্যালিডেটর-কে নেটওয়ার্ক থেকে সরিয়ে দেওয়ার আগে তার কিছু পরিমাণ ইথার (1 ETH পর্যন্ত) পুড়িয়ে ফেলা হয়, যা হতে 36 দিন সময় লাগে। স্ল্যাশড ভ্যালিডেটর-এর ইথার এক্সিট পিরিয়ড জুড়ে ধীরে ধীরে কমে যায়, কিন্তু 18 তম দিনে তারা একটি "কোরিলেশন পেনাল্টি" পায় যা একই সময়ে আরও বেশি ভ্যালিডেটরস স্ল্যাশড হলে বড় হয়। কনসেন্সাস মেকানিজম-এর ইনসেন্টিভ কাঠামো তাই সততার জন্য পুরস্কৃত করে এবং খারাপ অভিনেতাদের শাস্তি দেয়।
-সমস্ত রিওয়ার্ড এবং পেনাল্টি প্রতি ইপোকে একবার প্রয়োগ করা হয়।
+সমস্ত রিওয়ার্ড এবং পেনাল্টি প্রতি এপোক-এ একবার প্রয়োগ করা হয়।
-আরও বিস্তারিত জানতে পড়তে থাকুন...
+আরও বিস্তারিত জানতে পড়তে থাকুন...
-## রিওয়ার্ড এবং পেনাল্টি {#rewards}
+## রিওয়ার্ড এবং পেনাল্টি {#rewards}
-### পুরস্কার {#rewards}
+### রিওয়ার্ড {#rewards}
-ভ্যালিডেটররা যখন অন্য ভ্যালিডেটরদের সংখ্যাগরিষ্ঠের সাথে সামঞ্জস্যপূর্ণ ভোট দেয়, যখন তারা ব্লক প্রস্তাব করে এবং যখন তারা সিঙ্ক কমিটিতে অংশগ্রহণ করে তখন তারা রিওয়ার্ড পায়। প্রতিটি ইপোকে রিওয়ার্ডের মান একটি `base_reward` থেকে গণনা করা হয়। এটি সেই বেস ইউনিট যা থেকে অন্যান্য রিওয়ার্ড গণনা করা হয়। `base_reward` একজন ভ্যালিডেটরের দ্বারা প্রতি ইপোকে অনুকূল পরিস্থিতিতে প্রাপ্ত গড় রিওয়ার্ডকে উপস্থাপন করে। এটি ভ্যালিডেটরের কার্যকরী ব্যালেন্স এবং সক্রিয় ভ্যালিডেটরের মোট সংখ্যা থেকে নিম্নরূপ গণনা করা হয়:
+ভ্যালিডেটরস রিওয়ার্ড পায় যখন তারা এমন ভোট দেয় যা অন্যান্য ভ্যালিডেটরস-এর সংখ্যাগরিষ্ঠের সাথে সামঞ্জস্যপূর্ণ হয়, যখন তারা ব্লকস প্রস্তাব করে এবং যখন তারা সিঙ্ক কমিটিতে অংশগ্রহণ করে। প্রতিটি এপোক-এ রিওয়ার্ডের মান একটি `base_reward` থেকে গণনা করা হয়। এটি হলো বেস ইউনিট যা থেকে অন্যান্য রিওয়ার্ড গণনা করা হয়। `base_reward` প্রতি এপোক-এ সর্বোত্তম পরিস্থিতিতে একজন ভ্যালিডেটর দ্বারা প্রাপ্ত গড় রিওয়ার্ডকে উপস্থাপন করে। এটি ভ্যালিডেটর-এর কার্যকরী ব্যালেন্স এবং মোট সক্রিয় ভ্যালিডেটরস-এর সংখ্যা থেকে নিম্নরূপভাবে গণনা করা হয়:
```
base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch * sqrt(sum(active_balance))))
```
-যেখানে `base_reward_factor` হল 64, `base_rewards_per_epoch` হল 4 এবং `sum(active balance)` হল সমস্ত সক্রিয় ভ্যালিডেটর জুড়ে মোট স্টেক করা ইথার।
+যেখানে `base_reward_factor` হলো 64, `base_rewards_per_epoch` হলো 4 এবং `sum(active balance)` হলো সমস্ত সক্রিয় ভ্যালিডেটরস জুড়ে মোট স্টেক করা ইথার।
-এর মানে হল বেস রিওয়ার্ড ভ্যালিডেটরের কার্যকরী ব্যালেন্সের সমানুপাতিক এবং নেটওয়ার্কে ভ্যালিডেটরের সংখ্যার ব্যস্তানুপাতিক। যত বেশি ভ্যালিডেটর, সামগ্রিক ইস্যুয়েন্স তত বেশি (`sqrt(N)` হিসাবে), কিন্তু প্রতি ভ্যালিডেটরের জন্য `base_reward` তত কম (`1/sqrt(N)` হিসাবে)। এই ফ্যাক্টরগুলো একটি স্টেকিং নোডের জন্য APR-কে প্রভাবিত করে। এর যৌক্তিকতা [Vitalik's notes](https://notes.ethereum.org/@vbuterin/rkhCgQteN?type=view#Base-rewards)-এ পড়ুন।
+এর মানে হলো বেস রিওয়ার্ড ভ্যালিডেটর-এর কার্যকরী ব্যালেন্সের সমানুপাতিক এবং নেটওয়ার্ক-এ ভ্যালিডেটরস-এর সংখ্যার ব্যস্তানুপাতিক। যত বেশি ভ্যালিডেটরস, সামগ্রিক ইস্যুয়েন্স তত বেশি (যেমন `sqrt(N)`) কিন্তু প্রতি ভ্যালিডেটর-এর `base_reward` তত কম (যেমন `1/sqrt(N)`)। এই বিষয়গুলো একটি স্টেকিং নোড-এর জন্য APR-কে প্রভাবিত করে। [Vitalik's notes](https://notes.ethereum.org/@vbuterin/serenity_design_rationale?type=view#Base-rewards)-এ এর পেছনের যুক্তি পড়ুন।
-মোট রিওয়ার্ড তখন পাঁচটি উপাদানের যোগফল হিসাবে গণনা করা হয়, যার প্রত্যেকটির একটি ওয়েটিং আছে যা নির্ধারণ করে প্রতিটি উপাদান মোট রিওয়ার্ডে কতটা যোগ করবে। উপাদানগুলো হলো:
+মোট রিওয়ার্ড এরপর পাঁচটি উপাদানের যোগফল হিসেবে গণনা করা হয় যার প্রতিটির একটি ওয়েটিং থাকে যা নির্ধারণ করে প্রতিটি উপাদান মোট রিওয়ার্ডে কতটা যোগ করে। উপাদানগুলো হলো:
```
1. source vote: the validator has made a timely vote for the correct source checkpoint
@@ -38,7 +38,7 @@ base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch
5. proposer reward: the validator has proposed a block in the correct slot
```
-প্রতিটি উপাদানের জন্য ওয়েটিংগুলি নিম্নরূপ:
+প্রতিটি উপাদানের জন্য ওয়েটিং নিম্নরূপ:
```
TIMELY_SOURCE_WEIGHT uint64(14)
@@ -48,44 +48,44 @@ SYNC_REWARD_WEIGHT uint64(2)
PROPOSER_WEIGHT uint64(8)
```
-এই ওয়েটগুলোর যোগফল 64। রিওয়ার্ডটি প্রযোজ্য ওয়েটগুলোর যোগফলকে 64 দ্বারা ভাগ করে গণনা করা হয়। একজন ভ্যালিডেটর যিনি সময়মত সোর্স, টার্গেট এবং হেড ভোট দিয়েছেন, একটি ব্লক প্রস্তাব করেছেন এবং একটি সিঙ্ক কমিটিতে অংশগ্রহণ করেছেন, তিনি `64/64 * base_reward == base_reward` পেতে পারেন। তবে, একজন ভ্যালিডেটর সাধারণত ব্লক প্রোপোজার হন না, তাই তাদের সর্বোচ্চ রিওয়ার্ড হলো `64-8 /64 * base_reward == 7/8 * base_reward`। যে ভ্যালিডেটররা ব্লক প্রোপোজার বা সিঙ্ক কমিটিতে নেই তারা `64-8-2 / 64 * base_reward == 6.75/8 * base_reward` পেতে পারে।
+এই ওয়েটগুলোর যোগফল 64। রিওয়ার্ড প্রযোজ্য ওয়েটগুলোর যোগফলকে 64 দিয়ে ভাগ করে গণনা করা হয়। একজন ভ্যালিডেটর যে সময়মতো সোর্স, টার্গেট এবং হেড ভোট দিয়েছে, একটি ব্লক প্রস্তাব করেছে এবং একটি সিঙ্ক কমিটিতে অংশগ্রহণ করেছে সে `64/64 * base_reward == base_reward` পেতে পারে। তবে, একজন ভ্যালিডেটর সাধারণত ব্লক প্রপোজার হয় না, তাই তাদের সর্বোচ্চ রিওয়ার্ড হলো `64-8 /64 * base_reward == 7/8 * base_reward`। যে ভ্যালিডেটরস ব্লক প্রপোজার নয় বা সিঙ্ক কমিটিতে নেই তারা `64-8-2 / 64 * base_reward == 6.75/8 * base_reward` পেতে পারে।
-দ্রুত অ্যাটেস্টেশনকে উৎসাহিত করতে একটি অতিরিক্ত রিওয়ার্ড যোগ করা হয়। এটি হলো `inclusion_delay_reward`। এর মান `base_reward`-কে `1/delay` দ্বারা গুণ করার সমান, যেখানে `delay` হলো ব্লক প্রস্তাবনা এবং অ্যাটেস্টেশনকে পৃথককারী স্লটের সংখ্যা। উদাহরণস্বরূপ, যদি অ্যাটেস্টেশনটি ব্লক প্রস্তাবনার এক স্লটের মধ্যে জমা দেওয়া হয়, তবে অ্যাটেস্টর `base_reward * 1/1 == base_reward` পাবেন। যদি অ্যাটেস্টেশনটি পরবর্তী স্লটে আসে, তবে অ্যাটেস্টর `base_reward * 1/2` পাবেন এবং এভাবেই চলতে থাকবে।
+দ্রুত এটেস্টেশন-কে উৎসাহিত করতে একটি অতিরিক্ত রিওয়ার্ড যোগ করা হয়। এটি হলো `inclusion_delay_reward`। এর মান `base_reward`-কে `1/delay` দিয়ে গুণ করার সমান, যেখানে `delay` হলো ব্লক প্রস্তাব এবং এটেস্টেশন-এর মধ্যবর্তী স্লটের সংখ্যা। উদাহরণস্বরূপ, যদি এটেস্টেশন ব্লক প্রস্তাবের এক স্লটের মধ্যে জমা দেওয়া হয় তবে এটেস্টর `base_reward * 1/1 == base_reward` পায়। যদি এটেস্টেশন পরবর্তী স্লটে আসে, তবে এটেস্টর `base_reward * 1/2` পায় এবং এভাবেই চলতে থাকে।
-ব্লক প্রোপোজাররা ব্লকে অন্তর্ভুক্ত **প্রতিটি বৈধ অ্যাটেস্টেশনের** জন্য `8 / 64 * base_reward` পায়, তাই রিওয়ার্ডের প্রকৃত মান অ্যাটেস্টিং ভ্যালিডেটরের সংখ্যার সাথে স্কেল করে। ব্লক প্রোপোজাররা তাদের প্রস্তাবিত ব্লকে অন্যান্য ভ্যালিডেটরদের অসদাচরণের প্রমাণ অন্তর্ভুক্ত করে তাদের রিওয়ার্ড বাড়াতে পারে। এই রিওয়ার্ডগুলো হলো সেই "প্রোৎসাহন" যা ভ্যালিডেটরদের সততাকে উৎসাহিত করে। একজন ব্লক প্রোপোজার যিনি স্ল্যাশিং অন্তর্ভুক্ত করবেন তাকে `slashed_validators_effective_balance / 512` দিয়ে পুরস্কৃত করা হবে।
+ব্লক প্রপোজার ব্লকে অন্তর্ভুক্ত **প্রতিটি বৈধ এটেস্টেশন**-এর জন্য `8 / 64 * base_reward` পায়, তাই রিওয়ার্ডের প্রকৃত মান এটেস্ট করা ভ্যালিডেটরস-এর সংখ্যার সাথে বৃদ্ধি পায়। ব্লক প্রপোজার তাদের প্রস্তাবিত ব্লকে অন্যান্য ভ্যালিডেটরস-এর অসদাচরণের প্রমাণ অন্তর্ভুক্ত করেও তাদের রিওয়ার্ড বাড়াতে পারে। এই রিওয়ার্ডগুলো হলো "ক্যারট" যা ভ্যালিডেটর-এর সততাকে উৎসাহিত করে। একটি ব্লক প্রপোজার যা স্ল্যাশিং অন্তর্ভুক্ত করে তাকে `slashed_validators_effective_balance / 512` দিয়ে পুরস্কৃত করা হবে।
### পেনাল্টি {#penalties}
-এখন পর্যন্ত আমরা নিখুঁতভাবে সুশৃঙ্খল ভ্যালিডেটরদের বিবেচনা করেছি, কিন্তু সেই ভ্যালিডেটরদের কী হবে যারা সময়মত হেড, সোর্স এবং টার্গেট ভোট দেয় না বা ধীরে ধীরে করে?
+এতক্ষণ আমরা নিখুঁতভাবে ভালো আচরণকারী ভ্যালিডেটরস-দের কথা বিবেচনা করেছি, কিন্তু সেই ভ্যালিডেটরস-দের কী হবে যারা সময়মতো হেড, সোর্স এবং টার্গেট ভোট দেয় না বা ধীরে দেয়?
-টার্গেট এবং সোর্স ভোট মিস করার জন্য পেনাল্টি সেই রিওয়ার্ডের সমান যা অ্যাটেস্টর পেত যদি তারা সেগুলি জমা দিত। এর মানে হল তাদের ব্যালেন্সে রিওয়ার্ড যোগ করার পরিবর্তে, তাদের ব্যালেন্স থেকে একটি সমান মূল্য সরানো হয়। হেড ভোট মিস করার জন্য কোনো পেনাল্টি নেই (অর্থাৎ, হেড ভোটের জন্য শুধুমাত্র রিওয়ার্ড দেওয়া হয়, কখনও পেনাল্টি দেওয়া হয় না)। `inclusion_delay`-এর সাথে সম্পর্কিত কোনো পেনাল্টি নেই - রিওয়ার্ডটি কেবল ভ্যালিডেটরের ব্যালেন্সে যোগ করা হবে না। একটি ব্লক প্রস্তাব করতে ব্যর্থ হওয়ার জন্যও কোনো পেনাল্টি নেই।
+টার্গেট এবং সোর্স ভোট মিস করার পেনাল্টি এটেস্টর সেগুলো জমা দিলে যে রিওয়ার্ড পেত তার সমান। এর মানে হলো তাদের ব্যালেন্সে রিওয়ার্ড যোগ হওয়ার পরিবর্তে, তাদের ব্যালেন্স থেকে সমপরিমাণ মান কেটে নেওয়া হয়। হেড ভোট মিস করার জন্য কোনো পেনাল্টি নেই (অর্থাৎ, হেড ভোট শুধুমাত্র পুরস্কৃত করা হয়, কখনো পেনাল্টি দেওয়া হয় না)। `inclusion_delay`-এর সাথে যুক্ত কোনো পেনাল্টি নেই - রিওয়ার্ডটি কেবল ভ্যালিডেটর-এর ব্যালেন্সে যোগ করা হবে না। একটি ব্লক প্রস্তাব করতে ব্যর্থ হওয়ার জন্যও কোনো পেনাল্টি নেই।
-[কনসেন্সাস স্পেকস](https://github.com/ethereum/consensus-specs/blob/master/specs/altair/beacon-chain.md)-এ রিওয়ার্ড এবং পেনাল্টি সম্পর্কে আরও পড়ুন। Bellatrix আপগ্রেডে রিওয়ার্ড এবং পেনাল্টি সমন্বয় করা হয়েছিল - ড্যানি রায়ান এবং ভিটালিককে এই [Peep an EIP ভিডিও](https://www.youtube.com/watch?v=iaAEGs1DMgQ)-তে এটি নিয়ে আলোচনা করতে দেখুন।
+[consensus specs](https://github.com/ethereum/consensus-specs/blob/master/specs/altair/beacon-chain.md)-এ রিওয়ার্ড এবং পেনাল্টি সম্পর্কে আরও পড়ুন। Bellatrix আপগ্রেডে রিওয়ার্ড এবং পেনাল্টি সমন্বয় করা হয়েছিল - ড্যানি রায়ান এবং ভিটালিক-কে এই [Peep an EIP video](https://www.youtube.com/watch?v=iaAEGs1DMgQ)-তে এটি নিয়ে আলোচনা করতে দেখুন।
## স্ল্যাশিং {#slashing}
-স্ল্যাশিং একটি আরও গুরুতর পদক্ষেপ যার ফলে নেটওয়ার্ক থেকে একজন ভ্যালিডেটরকে জোরপূর্বক অপসারণ করা হয় এবং তাদের স্টেক করা ইথারের ক্ষতি হয়। একজন ভ্যালিডেটরকে তিনভাবে স্ল্যাশড করা যেতে পারে, যার সবই ব্লকের অসৎ প্রস্তাবনা বা অ্যাটেস্টেশনের সামিল:
+স্ল্যাশিং হলো একটি আরও কঠোর পদক্ষেপ যার ফলে নেটওয়ার্ক থেকে একজন ভ্যালিডেটর-কে জোরপূর্বক সরিয়ে দেওয়া হয় এবং তাদের স্টেক করা ইথার হারিয়ে যায়। একজন ভ্যালিডেটর-কে তিনটি উপায়ে স্ল্যাশ করা যেতে পারে, যার সবগুলোই ব্লকস-এর অসৎ প্রস্তাব বা এটেস্টেশন-এর সমতুল্য:
-- একই স্লটের জন্য দুটি ভিন্ন ব্লক প্রস্তাব ও স্বাক্ষর করার মাধ্যমে
-- এমন একটি ব্লকে অ্যাটেস্ট করার মাধ্যমে যা অন্য একটিকে "ঘিরে রাখে" (কার্যকরভাবে ইতিহাস পরিবর্তন করা)
-- একই ব্লকের জন্য দুটি ক্যান্ডিডেটে অ্যাটেস্ট করার মাধ্যমে "ডাবল ভোটিং" করা
+- একই স্লটের জন্য দুটি ভিন্ন ব্লকস প্রস্তাব এবং সাইন করার মাধ্যমে
+- এমন একটি ব্লকে এটেস্টেশন প্রদান করার মাধ্যমে যা অন্য একটিকে "ঘিরে রাখে" (কার্যকরভাবে ইতিহাস পরিবর্তন করে)
+- একই ব্লকের জন্য দুজন প্রার্থীকে এটেস্টেশন প্রদান করে "ডাবল ভোটিং" করার মাধ্যমে
-যদি এই কাজগুলি সনাক্ত করা হয়, ভ্যালিডেটরকে স্ল্যাশড করা হয়। এর মানে হলো একজন 32 ETH ভ্যালিডেটরের জন্য তাৎক্ষণিকভাবে 0.0078125 বার্ন করা হয় (সক্রিয় ব্যালেন্সের সাথে রৈখিকভাবে স্কেল করা হয়), তারপর একটি 36 দিনের অপসারণ সময়কাল শুরু হয়। এই অপসারণ সময়কালে ভ্যালিডেটরের স্টেক ধীরে ধীরে কমে যায়। মধ্যবর্তী সময়ে (দিন ১৮) একটি অতিরিক্ত পেনাল্টি প্রয়োগ করা হয় যার মাত্রা স্ল্যাশিং ইভেন্টের আগের ৩৬ দিনে সমস্ত স্ল্যাশড ভ্যালিডেটরের মোট স্টেক করা ইথারের সাথে স্কেল করে। এর মানে হল যখন আরও বেশি ভ্যালিডেটর স্ল্যাশড হয়, তখন স্ল্যাশের মাত্রা বৃদ্ধি পায়। সর্বোচ্চ স্ল্যাশ হলো সমস্ত স্ল্যাশড ভ্যালিডেটরের সম্পূর্ণ কার্যকরী ব্যালেন্স (অর্থাৎ, যদি অনেক ভ্যালিডেটর স্ল্যাশড হতে থাকে তবে তারা তাদের সম্পূর্ণ স্টেক হারাতে পারে)। অন্যদিকে, একটি একক, বিচ্ছিন্ন স্ল্যাশিং ইভেন্ট শুধুমাত্র ভ্যালিডেটরের স্টেকের একটি ছোট অংশ বার্ন করে। স্ল্যাশড ভ্যালিডেটরের সংখ্যার সাথে স্কেল করা এই মধ্যবর্তী পেনাল্টিকে "কোরিলেশন পেনাল্টি" বলা হয়।
+যদি এই কাজগুলো শনাক্ত করা হয়, তবে ভ্যালিডেটর-কে স্ল্যাশ করা হয়। এর মানে হলো 32 ETH ভ্যালিডেটর-এর জন্য 0.0078125 অবিলম্বে পুড়িয়ে ফেলা হয় (সক্রিয় ব্যালেন্সের সাথে রৈখিকভাবে স্কেল করা হয়), তারপর 36 দিনের অপসারণের সময়কাল শুরু হয়। এই অপসারণের সময়কালে ভ্যালিডেটর-এর স্টেক ধীরে ধীরে কমে যায়। মধ্যবর্তী পয়েন্টে (18 তম দিন) একটি অতিরিক্ত পেনাল্টি প্রয়োগ করা হয় যার মাত্রা স্ল্যাশিং ইভেন্টের আগের 36 দিনে সমস্ত স্ল্যাশড ভ্যালিডেটরস-এর মোট স্টেক করা ইথারের সাথে স্কেল করে। এর মানে হলো যখন আরও বেশি ভ্যালিডেটরস স্ল্যাশড হয়, তখন স্ল্যাশের মাত্রা বৃদ্ধি পায়। সর্বোচ্চ স্ল্যাশ হলো সমস্ত স্ল্যাশড ভ্যালিডেটরস-এর সম্পূর্ণ কার্যকরী ব্যালেন্স (অর্থাৎ, যদি প্রচুর ভ্যালিডেটরস স্ল্যাশড হয় তবে তারা তাদের সম্পূর্ণ স্টেক হারাতে পারে)। অন্যদিকে, একটি একক, বিচ্ছিন্ন স্ল্যাশিং ইভেন্ট ভ্যালিডেটর-এর স্টেকের একটি ছোট অংশই পুড়িয়ে দেয়। এই মিডপয়েন্ট পেনাল্টি যা স্ল্যাশড ভ্যালিডেটরস-এর সংখ্যার সাথে স্কেল করে তাকে "কোরিলেশন পেনাল্টি" বলা হয়।
## ইনঅ্যাক্টিভিটি লিক {#inactivity-leak}
-যদি কনসেন্সাস লেয়ার চূড়ান্ত না করে চারটির বেশি ইপোক পার করে, তাহলে "ইনঅ্যাক্টিভিটি লিক" নামক একটি জরুরি প্রোটোকল সক্রিয় করা হয়। ইনঅ্যাক্টিভিটি লিকের চূড়ান্ত লক্ষ্য হল চেইনকে ফাইনালিটি পুনরুদ্ধারের জন্য প্রয়োজনীয় শর্ত তৈরি করা। উপরে যেমন ব্যাখ্যা করা হয়েছে, ফাইনালিটির জন্য সোর্স এবং টার্গেট চেকপয়েন্টগুলিতে সম্মত হতে মোট স্টেক করা ইথারের ২/৩ সংখ্যাগরিষ্ঠতা প্রয়োজন। যদি মোট ভ্যালিডেটরের ১/৩ এর বেশি প্রতিনিধিত্বকারী ভ্যালিডেটররা অফলাইন হয়ে যায় বা সঠিক অ্যাটেস্টেশন জমা দিতে ব্যর্থ হয়, তাহলে ২/৩ সুপারম্যাজরিটির পক্ষে চেকপয়েন্ট চূড়ান্ত করা সম্ভব নয়। ইনঅ্যাক্টিভিটি লিক নিষ্ক্রিয় ভ্যালিডেটরদের স্টেক ধীরে ধীরে কমে যেতে দেয় যতক্ষণ না তারা মোট স্টেকের ১/৩ এর কম নিয়ন্ত্রণ করে, যা অবশিষ্ট সক্রিয় ভ্যালিডেটরদের চেইন চূড়ান্ত করতে দেয়। নিষ্ক্রিয় ভ্যালিডেটরদের পুল যতই বড় হোক না কেন, অবশিষ্ট সক্রিয় ভ্যালিডেটররা অবশেষে স্টেকের >২/৩ নিয়ন্ত্রণ করবে। স্টেকের ক্ষতি নিষ্ক্রিয় ভ্যালিডেটরদের যত তাড়াতাড়ি সম্ভব পুনরায় সক্রিয় হওয়ার জন্য একটি শক্তিশালী উৎসাহ! Medalla টেস্টনেটে একটি ইনঅ্যাক্টিভিটি লিকের পরিস্থিতি দেখা গিয়েছিল যখন < ৬৬% সক্রিয় ভ্যালিডেটর ব্লকচেইনের বর্তমান হেডের উপর কনসেন্সাসে আসতে সক্ষম হয়েছিল। ইনঅ্যাক্টিভিটি লিক সক্রিয় করা হয়েছিল এবং অবশেষে ফাইনালিটি পুনরুদ্ধার করা হয়েছিল!
+যদি কনসেন্সাস লেয়ার ফাইনালিটি ছাড়াই চারটির বেশি এপোক পার করে, তবে "ইনঅ্যাক্টিভিটি লিক" নামক একটি জরুরি প্রটোকল সক্রিয় হয়। ইনঅ্যাক্টিভিটি লিকের চূড়ান্ত লক্ষ্য হলো চেইনের ফাইনালিটি পুনরুদ্ধারের জন্য প্রয়োজনীয় পরিস্থিতি তৈরি করা। উপরে যেমন ব্যাখ্যা করা হয়েছে, ফাইনালিটি-র জন্য সোর্স এবং টার্গেট চেকপয়েন্টগুলোতে একমত হওয়ার জন্য মোট স্টেক করা ইথারের 2/3 সংখ্যাগরিষ্ঠতা প্রয়োজন। যদি মোট ভ্যালিডেটরস-এর 1/3 এর বেশি প্রতিনিধিত্বকারী ভ্যালিডেটরস অফলাইনে চলে যায় বা সঠিক এটেস্টেশন জমা দিতে ব্যর্থ হয় তবে 2/3 সুপারমেজরিটির পক্ষে চেকপয়েন্টগুলো চূড়ান্ত করা সম্ভব নয়। ইনঅ্যাক্টিভিটি লিক নিষ্ক্রিয় ভ্যালিডেটরস-দের স্টেক ধীরে ধীরে কমিয়ে দেয় যতক্ষণ না তারা মোট স্টেকের 1/3 এর কম নিয়ন্ত্রণ করে, যা অবশিষ্ট সক্রিয় ভ্যালিডেটরস-দের চেইন চূড়ান্ত করতে দেয়। নিষ্ক্রিয় ভ্যালিডেটরস-এর পুল যত বড়ই হোক না কেন, অবশিষ্ট সক্রিয় ভ্যালিডেটরস শেষ পর্যন্ত স্টেকের >2/3 নিয়ন্ত্রণ করবে। স্টেকের ক্ষতি নিষ্ক্রিয় ভ্যালিডেটরস-দের যত তাড়াতাড়ি সম্ভব পুনরায় সক্রিয় হওয়ার জন্য একটি শক্তিশালী ইনসেন্টিভ! Medalla টেস্টনেট-এ একটি ইনঅ্যাক্টিভিটি লিক পরিস্থিতির সম্মুখীন হওয়া গিয়েছিল যখন < 66% সক্রিয় ভ্যালিডেটরস ব্লকচেইন-এর বর্তমান হেডের উপর কনসেন্সাস-এ আসতে সক্ষম হয়েছিল। ইনঅ্যাক্টিভিটি লিক সক্রিয় করা হয়েছিল এবং শেষ পর্যন্ত ফাইনালিটি পুনরুদ্ধার করা হয়েছিল!
-কনসেন্সাস মেকানিজমের রিওয়ার্ড, পেনাল্টি এবং স্ল্যাশিং ডিজাইন স্বতন্ত্র ভ্যালিডেটরদের সঠিকভাবে আচরণ করতে উৎসাহিত করে। তবে, এই ডিজাইনের পছন্দগুলি থেকে এমন একটি সিস্টেম উদ্ভূত হয় যা একাধিক ক্লায়েন্ট জুড়ে ভ্যালিডেটরদের সমান বন্টনকে দৃঢ়ভাবে উৎসাহিত করে এবং একক-ক্লায়েন্ট আধিপত্যকে দৃঢ়ভাবে নিরুৎসাহিত করা উচিত।
+কনসেন্সাস মেকানিজম-এর রিওয়ার্ড, পেনাল্টি এবং স্ল্যাশিং ডিজাইন পৃথক ভ্যালিডেটরস-দের সঠিকভাবে আচরণ করতে উৎসাহিত করে। তবে, এই ডিজাইনের পছন্দগুলো থেকে এমন একটি সিস্টেমের উদ্ভব হয় যা একাধিক ক্লায়েন্ট জুড়ে ভ্যালিডেটরস-এর সমান বিতরণকে জোরালোভাবে উৎসাহিত করে এবং একক-ক্লায়েন্ট আধিপত্যকে জোরালোভাবে নিরুৎসাহিত করা উচিত।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ইথেরিয়াম আপগ্রেড করা: ইনসেনটিভ লেয়ার](https://eth2book.info/altair/part2/incentives)
-- [ইথেরিয়ামের হাইব্রিড ক্যাসপার প্রটোকলে ইনসেনটিভ](https://arxiv.org/pdf/1903.04205.pdf)
-- [ভিটালিকের অ্যানোটেটেড স্পেক](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#rewards-and-penalties-1)
-- [Eth2 স্ল্যাশিং প্রতিরোধের টিপস](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50)
-- [EIP-7251 এর অধীনে স্ল্যাশিং পেনাল্টির বিশ্লেষণ](https://ethresear.ch/t/slashing-penalty-analysis-eip-7251/16509)
+- [Upgrading Ethereum: The incentive layer](https://eth2book.info/altair/part2/incentives)
+- [Incentives in Ethereum's hybrid Casper protocol](https://arxiv.org/pdf/1903.04205.pdf)
+- [Vitalik's annotated spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#rewards-and-penalties-1)
+- [Eth2 Slashing Prevention Tips](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50)
+- [Analysis of slashing penalties under EIP-7251](https://ethresear.ch/t/slashing-penalty-analysis-eip-7251/16509)
-_সোর্স_
+_উৎসসমূহ_
-- _[https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/](https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/)_
+- _[https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/](https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/)_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
index 3ff3d9978d9..8da7a2a98e3 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
@@ -1,39 +1,39 @@
---
-title: "দুর্বল বিষয়গততা"
-description: "দুর্বল বিষয়গততার একটি ব্যাখ্যা এবং PoS ইথেরিয়ামে এর ভূমিকা।"
+title: উইক সাবজেক্টিভিটি
+description: উইক সাবজেক্টিভিটি এবং PoS ইথিরিয়ামে এর ভূমিকার একটি ব্যাখ্যা।
lang: bn
---
-ব্লকচেইনে বিষয়গততা বলতে বর্তমান স্টেটে সম্মত হওয়ার জন্য সামাজিক তথ্যের উপর নির্ভরতাকে বোঝায়। একাধিক বৈধ ফর্ক থাকতে পারে যা নেটওয়ার্কের অন্যান্য সহকর্মীদের কাছ থেকে সংগৃহীত তথ্য অনুসারে বেছে নেওয়া হয়। এর বিপরীত হল বস্তুনিষ্ঠতা যা এমন চেইনগুলিকে বোঝায় যেখানে শুধুমাত্র একটি সম্ভাব্য বৈধ চেইন রয়েছে যা সমস্ত নোড তাদের কোডেড নিয়ম প্রয়োগ করে অগত্যা সম্মত হবে। দুর্বল বিষয়গততা নামে পরিচিত একটি তৃতীয় স্টেটও রয়েছে। এটি এমন একটি চেইনকে বোঝায় যা সামাজিকভাবে কিছু প্রাথমিক তথ্যের বীজ পুনরুদ্ধার করার পরে বস্তুনিষ্ঠভাবে অগ্রসর হতে পারে।
+ব্লকচেইনে সাবজেক্টিভিটি বলতে বর্তমান স্টেট সম্পর্কে একমত হওয়ার জন্য সামাজিক তথ্যের উপর নির্ভরতাকে বোঝায়। নেটওয়ার্কের অন্যান্য পিয়ারদের থেকে সংগৃহীত তথ্য অনুযায়ী একাধিক বৈধ ফর্ক থাকতে পারে যেখান থেকে বেছে নেওয়া হয়। এর বিপরীত হলো অবজেক্টিভিটি, যা এমন চেইনগুলোকে বোঝায় যেখানে শুধুমাত্র একটি সম্ভাব্য বৈধ চেইন থাকে, যার উপর সমস্ত নোড তাদের কোড করা নিয়ম প্রয়োগ করে নিশ্চিতভাবে একমত হবে। এছাড়াও একটি তৃতীয় স্টেট রয়েছে, যা উইক সাবজেক্টিভিটি (weak subjectivity) নামে পরিচিত। এটি এমন একটি চেইনকে বোঝায় যা সামাজিকভাবে কিছু প্রাথমিক তথ্য পাওয়ার পর অবজেক্টিভভাবে অগ্রসর হতে পারে।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি বোঝার জন্য প্রথমে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)-এর মূল বিষয়গুলি বোঝা প্রয়োজন।
+এই পৃষ্ঠাটি বোঝার জন্য প্রথমে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)-এর মৌলিক বিষয়গুলো বোঝা প্রয়োজন।
-## দুর্বল বিষয়গততা কোন সমস্যাগুলোর সমাধান করে? {#problems-ws-solves}
+## উইক সাবজেক্টিভিটি কোন সমস্যাগুলোর সমাধান করে? {#problems-ws-solves}
-প্রুফ-অফ-স্টেক ব্লকচেইনগুলোতে বিষয়গততা অন্তর্নিহিত কারণ একাধিক ফর্ক থেকে সঠিক চেইন নির্বাচন করা হয় ঐতিহাসিক ভোট গণনার মাধ্যমে। এটি ব্লকচেইনকে বিভিন্ন আক্রমণের ভেক্টরের সামনে উন্মোচিত করে, যার মধ্যে দীর্ঘ-পরিসরের আক্রমণও রয়েছে যেখানে চেইনের প্রথম দিকে অংশগ্রহণকারী নোডগুলো একটি বিকল্প ফর্ক বজায় রাখে যা তারা অনেক পরে তাদের নিজেদের সুবিধার জন্য প্রকাশ করে। বিকল্পভাবে, যদি 33% ভ্যালিডেটর তাদের স্টেক উত্তোলন করে কিন্তু ব্লক প্রত্যয়ন এবং উৎপাদন চালিয়ে যায়, তবে তারা একটি বিকল্প ফর্ক তৈরি করতে পারে যা ক্যানোনিকাল চেইনের সাথে বিরোধপূর্ণ। নতুন নোড বা যে নোডগুলো দীর্ঘ সময় ধরে অফলাইনে ছিল তারা হয়তো জানে না যে এই আক্রমণকারী ভ্যালিডেটররা তাদের তহবিল উত্তোলন করেছে, তাই আক্রমণকারীরা তাদের একটি ভুল চেইন অনুসরণ করার জন্য প্রতারণা করতে পারে। ইথেরিয়াম এই আক্রমণের ভেক্টরগুলোর সমাধান করতে পারে এমন সীমাবদ্ধতা আরোপ করে যা প্রক্রিয়ার বিষয়গত দিকগুলো — এবং ফলস্বরূপ আস্থার অনুমানগুলোকে — একেবারে ন্যূনতম পর্যায়ে নামিয়ে আনে।
+প্রুফ-অফ-স্টেক ব্লকচেইনে সাবজেক্টিভিটি একটি অন্তর্নিহিত বিষয়, কারণ একাধিক ফর্ক থেকে সঠিক চেইন নির্বাচন করা হয় ঐতিহাসিক ভোট গণনার মাধ্যমে। এটি ব্লকচেইনকে বেশ কয়েকটি অ্যাটাক ভেক্টরের সম্মুখীন করে, যার মধ্যে রয়েছে লং-রেঞ্জ অ্যাটাক, যেখানে চেইনের একেবারে শুরুতে অংশগ্রহণকারী নোডগুলো একটি বিকল্প ফর্ক বজায় রাখে যা তারা অনেক পরে নিজেদের সুবিধার্থে প্রকাশ করে। বিকল্পভাবে, যদি 33% ভ্যালিডেটর তাদের স্টেক তুলে নেয় কিন্তু এটেস্ট করা এবং ব্লক তৈরি করা চালিয়ে যায়, তবে তারা একটি বিকল্প ফর্ক তৈরি করতে পারে যা ক্যানোনিকাল চেইনের সাথে সাংঘর্ষিক। নতুন নোড বা দীর্ঘ সময় ধরে অফলাইনে থাকা নোডগুলো হয়তো জানবে না যে এই আক্রমণকারী ভ্যালিডেটররা তাদের ফান্ড তুলে নিয়েছে, তাই আক্রমণকারীরা তাদের ভুল চেইন অনুসরণ করতে প্ররোচিত করতে পারে। [ইথিরিয়াম](/) মেকানিজমের সাবজেক্টিভ দিকগুলোকে—এবং সেই কারণে বিশ্বাসের অনুমানগুলোকে—একেবারে ন্যূনতম পর্যায়ে নামিয়ে আনার জন্য সীমাবদ্ধতা আরোপ করে এই অ্যাটাক ভেক্টরগুলোর সমাধান করতে পারে।
-## দুর্বল বিষয়গততার চেকপয়েন্ট {#ws-checkpoints}
+## উইক সাবজেক্টিভিটি চেকপয়েন্ট {#ws-checkpoints}
-প্রুফ-অফ-স্টেক ইথেরিয়ামে "দুর্বল বিষয়গততার চেকপয়েন্ট" ব্যবহার করে দুর্বল বিষয়গততা প্রয়োগ করা হয়। এগুলো হল স্টেট রুট যা নেটওয়ার্কের সমস্ত নোড ক্যানোনিকাল চেইনের অন্তর্গত বলে সম্মত হয়। এগুলো জেনেসিস ব্লকের মতো একই "সার্বজনীন সত্য" উদ্দেশ্য পরিবেশন করে, তবে এগুলো ব্লকচেইনে জেনেসিস অবস্থানে বসে না। ফর্ক চয়েস অ্যালগরিদম বিশ্বাস করে যে সেই চেকপয়েন্টে সংজ্ঞায়িত ব্লকচেইন স্টেট সঠিক এবং এটি সেই বিন্দু থেকে স্বাধীনভাবে এবং বস্তুনিষ্ঠভাবে চেইন যাচাই করে। চেকপয়েন্টগুলো "প্রত্যাবর্তন সীমা" হিসাবে কাজ করে কারণ দুর্বল-বিষয়গততার চেকপয়েন্টের আগে অবস্থিত ব্লকগুলো পরিবর্তন করা যায় না। এটি মেকানিজম ডিজাইনের অংশ হিসাবে দীর্ঘ-পরিসরের ফর্কগুলোকে অবৈধ হিসাবে সংজ্ঞায়িত করে দীর্ঘ-পরিসরের আক্রমণকে খর্ব করে। দুর্বল বিষয়গততার চেকপয়েন্টগুলো ভ্যালিডেটরদের উত্তোলন সময়ের চেয়ে কম দূরত্বে পৃথক করা হয়েছে তা নিশ্চিত করা হলে, এটি নিশ্চিত করে যে চেইন ফর্ক করা একজন ভ্যালিডেটর তাদের স্টেক উত্তোলন করার আগে কমপক্ষে একটি নির্দিষ্ট থ্রেশহোল্ড পরিমাণ স্ল্যাশড হবে এবং নতুন প্রবেশকারীদের সেইসব ভ্যালিডেটরদের দ্বারা ভুল ফর্কে প্রতারিত করা যাবে না যাদের স্টেক উত্তোলন করা হয়েছে।
+প্রুফ-অফ-স্টেক ইথিরিয়ামে "উইক সাবজেক্টিভিটি চেকপয়েন্ট" ব্যবহার করে উইক সাবজেক্টিভিটি বাস্তবায়ন করা হয়। এগুলো হলো স্টেট রুট যা নেটওয়ার্কের সমস্ত নোড একমত হয় যে এগুলো ক্যানোনিকাল চেইনের অন্তর্গত। এগুলো জেনেসিস ব্লকের মতোই "সার্বজনীন সত্য" হিসেবে কাজ করে, তবে পার্থক্য হলো এগুলো ব্লকচেইনের জেনেসিস অবস্থানে থাকে না। ফর্ক চয়েস অ্যালগরিদম বিশ্বাস করে যে সেই চেকপয়েন্টে সংজ্ঞায়িত ব্লকচেইন স্টেট সঠিক এবং এটি সেই বিন্দু থেকে স্বাধীনভাবে এবং অবজেক্টিভভাবে চেইনটি যাচাই করে। চেকপয়েন্টগুলো "রিভার্ট লিমিট" হিসেবে কাজ করে কারণ উইক-সাবজেক্টিভিটি চেকপয়েন্টের আগের ব্লকগুলো পরিবর্তন করা যায় না। এটি মেকানিজম ডিজাইনের অংশ হিসেবে লং-রেঞ্জ ফর্কগুলোকে অবৈধ ঘোষণা করে লং-রেঞ্জ অ্যাটাকগুলোকে দুর্বল করে দেয়। উইক সাবজেক্টিভিটি চেকপয়েন্টগুলোর মধ্যকার দূরত্ব ভ্যালিডেটর উইথড্রয়াল পিরিয়ডের চেয়ে কম রাখা নিশ্চিত করে যে, কোনো ভ্যালিডেটর চেইন ফর্ক করলে তাদের স্টেক তুলে নেওয়ার আগেই অন্তত কিছু নির্দিষ্ট পরিমাণ স্ল্যাশিং করা হয় এবং নতুন অংশগ্রহণকারীরা এমন ভ্যালিডেটরদের দ্বারা ভুল ফর্কে প্রতারিত হতে পারে না যাদের স্টেক তুলে নেওয়া হয়েছে।
-## দুর্বল বিষয়গততার চেকপয়েন্ট এবং চূড়ান্ত ব্লকগুলোর মধ্যে পার্থক্য {#difference-between-ws-and-finalized-blocks}
+## উইক সাবজেক্টিভিটি চেকপয়েন্ট এবং ফাইনালাইজড ব্লকের মধ্যে পার্থক্য {#difference-between-ws-and-finalized-blocks}
-চূড়ান্ত ব্লক এবং দুর্বল বিষয়গততার চেকপয়েন্টগুলো ইথেরিয়াম নোড দ্বারা ভিন্নভাবে বিবেচিত হয়। যদি একটি নোড দুটি প্রতিযোগী চূড়ান্ত ব্লক সম্পর্কে সচেতন হয়, তবে এটি দুটির মধ্যে দ্বিধান্বিত হয়ে যায় - এটির কাছে স্বয়ংক্রিয়ভাবে কোনটি ক্যানোনিকাল ফর্ক তা সনাক্ত করার কোনো উপায় থাকে না। এটি একটি কনসেন্সাস ব্যর্থতার লক্ষণ। বিপরীতে, একটি নোড তার দুর্বল বিষয়গততার চেকপয়েন্টের সাথে সাংঘর্ষিক যেকোনো ব্লককে কেবল প্রত্যাখ্যান করে। নোডের দৃষ্টিকোণ থেকে, দুর্বল বিষয়গততার চেকপয়েন্ট একটি পরম সত্যকে প্রতিনিধিত্ব করে যা তার সহকর্মীদের কাছ থেকে নতুন জ্ঞান দ্বারা ক্ষুণ্ন করা যায় না।
+ফাইনালাইজড ব্লক এবং উইক সাবজেক্টিভিটি চেকপয়েন্টগুলোকে ইথিরিয়াম নোডগুলো ভিন্নভাবে বিবেচনা করে। যদি কোনো নোড দুটি প্রতিযোগী ফাইনালাইজড ব্লক সম্পর্কে জানতে পারে, তবে এটি দুটির মধ্যে দ্বিধায় পড়ে যায় - স্বয়ংক্রিয়ভাবে কোনটি ক্যানোনিকাল ফর্ক তা শনাক্ত করার কোনো উপায় এর থাকে না। এটি কনসেন্সাস ব্যর্থতার একটি লক্ষণ। এর বিপরীতে, একটি নোড কেবল এমন যেকোনো ব্লক প্রত্যাখ্যান করে যা তার উইক সাবজেক্টিভিটি চেকপয়েন্টের সাথে সাংঘর্ষিক। নোডের দৃষ্টিকোণ থেকে, উইক সাবজেক্টিভিটি চেকপয়েন্ট একটি পরম সত্যকে উপস্থাপন করে যা তার পিয়ারদের কাছ থেকে পাওয়া নতুন জ্ঞান দ্বারা ক্ষুণ্ণ করা যায় না।
-## কতটা দুর্বল এই দুর্বলতা? {#how-weak-is-weak}
+## উইক কতটা উইক? {#how-weak-is-weak}
-ইথেরিয়ামের প্রুফ-অফ-স্টেকের বিষয়গত দিকটি হল সিঙ্ক করার জন্য একটি বিশ্বস্ত উৎস থেকে একটি সাম্প্রতিক স্টেট (দুর্বল বিষয়গততার চেকপয়েন্ট) এর প্রয়োজনীয়তা। একটি খারাপ দুর্বল বিষয়গততার চেকপয়েন্ট পাওয়ার ঝুঁকি খুব কম কারণ সেগুলো ব্লক এক্সপ্লোরার বা একাধিক নোডের মতো বিভিন্ন স্বাধীন পাবলিক উৎসের সাথে মিলিয়ে দেখা যেতে পারে। যাইহোক, যেকোনো সফ্টওয়্যার এপ্লিকেশন চালানোর জন্য সর্বদা কিছু মাত্রার আস্থার প্রয়োজন হয়, উদাহরণস্বরূপ, সফ্টওয়্যার ডেভেলপাররা সৎ সফ্টওয়্যার তৈরি করেছে এই বিশ্বাস রাখা।
+ইথিরিয়ামের প্রুফ-অফ-স্টেকের সাবজেক্টিভ দিকটি হলো সিঙ্ক করার জন্য একটি বিশ্বস্ত উৎস থেকে সাম্প্রতিক স্টেট (উইক সাবজেক্টিভিটি চেকপয়েন্ট) এর প্রয়োজনীয়তা। একটি খারাপ উইক সাবজেক্টিভিটি চেকপয়েন্ট পাওয়ার ঝুঁকি খুবই কম কারণ এগুলো ব্লক এক্সপ্লোরার বা একাধিক নোডের মতো বেশ কয়েকটি স্বাধীন পাবলিক উৎসের বিপরীতে যাচাই করা যেতে পারে। তবে, যেকোনো সফটওয়্যার অ্যাপ্লিকেশন চালানোর জন্য সর্বদা কিছু মাত্রার বিশ্বাসের প্রয়োজন হয়, উদাহরণস্বরূপ, সফটওয়্যার ডেভেলপাররা সৎ সফটওয়্যার তৈরি করেছেন বলে বিশ্বাস করা।
-একটি দুর্বল বিষয়গততার চেকপয়েন্ট এমনকি ক্লায়েন্ট সফ্টওয়্যারের অংশ হিসাবেও আসতে পারে। তর্কসাপেক্ষে একজন আক্রমণকারী সফ্টওয়্যারের মধ্যে থাকা চেকপয়েন্টকে দূষিত করতে পারে এবং ঠিক ততটাই সহজে সফ্টওয়্যারটিকেই দূষিত করতে পারে। এই সমস্যার সমাধানের জন্য কোনো বাস্তব ক্রিপ্টো-অর্থনৈতিক পথ নেই, তবে ইথেরিয়ামে একাধিক স্বাধীন ক্লায়েন্ট টিম থাকার মাধ্যমে অবিশ্বস্ত ডেভেলপারদের প্রভাব কমানো হয়েছে, প্রতিটি টিম বিভিন্ন ভাষায় সমতুল্য সফ্টওয়্যার তৈরি করে, এবং সকলেরই একটি সৎ চেইন বজায় রাখার ক্ষেত্রে একটি নিহিত আগ্রহ রয়েছে। ব্লক এক্সপ্লোরারগুলো দুর্বল বিষয়গততার চেকপয়েন্ট বা অন্য কোথাও থেকে প্রাপ্ত চেকপয়েন্টগুলোকে একটি অতিরিক্ত উৎসের সাথে ক্রস-রেফারেন্স করার উপায়ও সরবরাহ করতে পারে।
+একটি উইক সাবজেক্টিভিটি চেকপয়েন্ট এমনকি ক্লায়েন্ট সফটওয়্যারের অংশ হিসেবেও আসতে পারে। যুক্তিযুক্তভাবে একজন আক্রমণকারী সফটওয়্যারের চেকপয়েন্টটি নষ্ট করতে পারে এবং ঠিক তত সহজেই সফটওয়্যারটি নিজেই নষ্ট করতে পারে। এই সমস্যার কোনো বাস্তব ক্রিপ্টো-ইকোনমিক সমাধান নেই, তবে ইথিরিয়ামে একাধিক স্বাধীন ক্লায়েন্ট টিম থাকার কারণে অবিশ্বস্ত ডেভেলপারদের প্রভাব কমানো হয়েছে, যাদের প্রত্যেকেই বিভিন্ন ভাষায় সমতুল্য সফটওয়্যার তৈরি করে এবং একটি সৎ চেইন বজায় রাখার ক্ষেত্রে সবারই স্বার্থ নিহিত থাকে। ব্লক এক্সপ্লোরারগুলো উইক সাবজেক্টিভিটি চেকপয়েন্ট প্রদান করতে পারে অথবা অন্য কোনো জায়গা থেকে প্রাপ্ত চেকপয়েন্টগুলোকে একটি অতিরিক্ত উৎসের বিপরীতে ক্রস-রেফারেন্স করার উপায় প্রদান করতে পারে।
-পরিশেষে, অন্যান্য নোড থেকে চেকপয়েন্টের জন্য অনুরোধ করা যেতে পারে; সম্ভবত অন্য একজন ইথেরিয়াম ব্যবহারকারী যিনি একটি সম্পূর্ণ নোড চালান, তিনি একটি চেকপয়েন্ট সরবরাহ করতে পারেন যা ভ্যালিডেটররা তারপর একটি ব্লক এক্সপ্লোরারের ডেটার সাথে যাচাই করতে পারে। সামগ্রিকভাবে, একটি দুর্বল বিষয়গততার চেকপয়েন্টের প্রদানকারীকে বিশ্বাস করা ক্লায়েন্ট ডেভেলপারদের বিশ্বাস করার মতোই সমস্যাযুক্ত হিসাবে বিবেচনা করা যেতে পারে। প্রয়োজনীয় সামগ্রিক বিশ্বাস কম। এটি লক্ষ করা গুরুত্বপূর্ণ যে এই বিবেচনাগুলো শুধুমাত্র সেই অত্যন্ত অসম্ভাব্য ঘটনাতেই গুরুত্বপূর্ণ হয়ে ওঠে যেখানে সংখ্যাগরিষ্ঠ ভ্যালিডেটর ব্লকচেইনের একটি বিকল্প ফর্ক তৈরি করার জন্য ষড়যন্ত্র করে। অন্য যেকোনো পরিস্থিতিতে, বেছে নেওয়ার জন্য শুধুমাত্র একটি ইথেরিয়াম চেইন রয়েছে।
+পরিশেষে, অন্যান্য নোড থেকে চেকপয়েন্টের অনুরোধ করা যেতে পারে; সম্ভবত অন্য একজন ইথিরিয়াম ব্যবহারকারী যিনি একটি ফুল নোড চালান তিনি একটি চেকপয়েন্ট প্রদান করতে পারেন যা ভ্যালিডেটরস পরবর্তীতে একটি ব্লক এক্সপ্লোরার থেকে প্রাপ্ত ডেটার বিপরীতে যাচাই করতে পারে। সামগ্রিকভাবে, উইক সাবজেক্টিভিটি চেকপয়েন্ট প্রদানকারীকে বিশ্বাস করা ক্লায়েন্ট ডেভেলপারদের বিশ্বাস করার মতোই সমস্যাযুক্ত বলে বিবেচিত হতে পারে। সামগ্রিক বিশ্বাসের প্রয়োজনীয়তা কম। এটি মনে রাখা গুরুত্বপূর্ণ যে এই বিবেচনাগুলো কেবল তখনই গুরুত্বপূর্ণ হয়ে ওঠে যখন খুব অসম্ভাব্য কোনো ঘটনায় বেশিরভাগ ভ্যালিডেটরস ব্লকচেইনের একটি বিকল্প ফর্ক তৈরি করার ষড়যন্ত্র করে। অন্য যেকোনো পরিস্থিতিতে, বেছে নেওয়ার জন্য কেবল একটি ইথিরিয়াম চেইন থাকে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [Eth2-তে দুর্বল বিষয়গততা](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2)
-- [ভিটালিক: আমি কীভাবে দুর্বল বিষয়গততাকে ভালোবাসতে শিখলাম](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity)
-- [দুর্বল বিষয়গততা (Teku ডক্স)](https://docs.teku.consensys.io/concepts/weak-subjectivity)
-- [ফেজ-0 দুর্বল বিষয়গততা নির্দেশিকা](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/weak-subjectivity.md)
-- [ইথেরিয়াম 2.0-তে দুর্বল বিষয়গততার বিশ্লেষণ](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf)
+- [Eth2-তে উইক সাবজেক্টিভিটি](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2)
+- [ভিটালিক: আমি কীভাবে উইক সাবজেক্টিভিটিকে ভালোবাসতে শিখেছি](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity)
+- [উইক সাবজেক্টিভিটি (Teku ডক্স)](https://docs.teku.consensys.io/concepts/weak-subjectivity)
+- [ফেজ-0 উইক সাবজেক্টিভিটি গাইড](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/weak-subjectivity.md)
+- [ইথিরিয়াম 2.0-তে উইক সাবজেক্টিভিটির বিশ্লেষণ](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md
index 8028bab3fb1..a0f392a7fa4 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md
@@ -1,64 +1,64 @@
---
-title: "উইথড্রয়াল ক্রেডেনশিয়াল"
-description: "ভ্যালিডেটর উইথড্রল ক্রেডেনশিয়াল প্রকারের (0x00, 0x01, 0x02) একটি ব্যাখ্যা এবং ইথেরিয়াম স্ট্যাকারদের জন্য তাদের প্রভাব।"
+title: উইথড্রয়াল ক্রেডেনশিয়ালস
+description: ভ্যালিডেটর উইথড্রয়াল ক্রেডেনশিয়ালের ধরন (0x00, 0x01, 0x02) এবং ইথিরিয়াম স্টেকারদের জন্য এগুলোর প্রভাবের একটি ব্যাখ্যা।
lang: bn
---
-প্রত্যেক ভ্যালিডেটরের একটি **উইথড্রল ক্রেডেনশিয়াল** থাকে যা নির্ধারণ করে কিভাবে এবং কোথায় তাদের স্টেক করা ETH এবং পুরস্কার উইথড্র করা যাবে। ক্রেডেনশিয়ালের প্রকার প্রথম বাইট দ্বারা নির্দেশিত হয়: `0x00`, `0x01`, বা `0x02`। এই প্রকারগুলি বোঝা ভ্যালিডেটরদের জন্য তাদের স্টেক পরিচালনা করার জন্য গুরুত্বপূর্ণ।
+প্রতিটি ভ্যালিডেটরের একটি **উইথড্রয়াল ক্রেডেনশিয়াল** থাকে যা নির্ধারণ করে কীভাবে এবং কোথায় তাদের স্টেক করা ETH এবং রিওয়ার্ড উত্তোলন করা যাবে। ক্রেডেনশিয়ালের ধরনটি প্রথম বাইট দ্বারা নির্দেশিত হয়: `0x00`, `0x01`, বা `0x02`। নিজেদের স্টেক পরিচালনা করা ভ্যালিডেটরসদের জন্য এই ধরনগুলো বোঝা গুরুত্বপূর্ণ।
-## 0x00: প্রি-শ্যাপেলা ক্রেডেনশিয়াল {#0x00-credentials}
+## 0x00: প্রি-শাপেল্লা ক্রেডেনশিয়ালস {#0x00-credentials}
-`0x00` প্রকারটি শ্যাপেলা আপগ্রেডের (এপ্রিল ২০২৩) আগের আসল উইথড্রল ক্রেডেনশিয়াল ফরম্যাট। এই ক্রেডেনশিয়ালের প্রকার সহ ভ্যালিডেটরদের কোনো এক্সিকিউশন লেয়ার উইথড্রল অ্যাড্রেস সেট করা নেই, যার মানে তাদের ফান্ড কনসেন্সাস লেয়ারে লক করা থাকে। আপনার যদি এখনও `0x00` ক্রেডেনশিয়াল থাকে, তাহলে কোনো উইথড্রল পাওয়ার আগে আপনাকে অবশ্যই `0x01` বা `0x02`-তে আপগ্রেড করতে হবে।
+`0x00` ধরনটি হলো শাপেল্লা আপগ্রেডের (এপ্রিল 2023) আগের মূল উইথড্রয়াল ক্রেডেনশিয়াল ফরম্যাট। এই ক্রেডেনশিয়াল ধরনের ভ্যালিডেটরসদের কোনো এক্সিকিউশন লেয়ার উইথড্রয়াল এডড্রেস সেট করা থাকে না, যার মানে হলো তাদের ফান্ড কনসেন্সাস লেয়ার-এ লক করা থাকে। আপনার যদি এখনও `0x00` ক্রেডেনশিয়াল থাকে, তবে কোনো উইথড্রয়াল বা উত্তোলন পাওয়ার আগে আপনাকে অবশ্যই `0x01` বা `0x02`-এ আপগ্রেড করতে হবে।
-## 0x01: লিগ্যাসি উইথড্রল ক্রেডেনশিয়াল {#0x01-credentials}
+## 0x01: লিগ্যাসি উইথড্রয়াল ক্রেডেনশিয়ালস {#0x01-credentials}
-`0x01` প্রকারটি শ্যাপেলা আপগ্রেডের সাথে চালু করা হয়েছিল এবং এটি সেইসব ভ্যালিডেটরদের জন্য স্ট্যান্ডার্ড হয়ে ওঠে যারা একটি এক্সিকিউশন লেয়ার উইথড্রল অ্যাড্রেস সেট করতে চেয়েছিল। `0x01` ক্রেডেনশিয়ালের সাথে:
+`0x01` ধরনটি শাপেল্লা আপগ্রেডের সাথে চালু করা হয়েছিল এবং এটি সেইসব ভ্যালিডেটরসদের জন্য স্ট্যান্ডার্ড হয়ে ওঠে যারা একটি এক্সিকিউশন লেয়ার উইথড্রয়াল এডড্রেস সেট করতে চেয়েছিলেন। `0x01` ক্রেডেনশিয়ালের ক্ষেত্রে:
-- 32 ETH-এর উপরে যেকোনো ব্যালেন্স **স্বয়ংক্রিয়ভাবে আপনার উইথড্রল অ্যাড্রেসে সুইপ্ট** হয়ে যায়
-- সম্পূর্ণ এক্সিট স্ট্যান্ডার্ড এক্সিট কিউ-এর মাধ্যমে সম্পন্ন হয়
-- 32 ETH-এর উপরের পুরস্কার কম্পাউন্ড হতে পারে না—সেগুলো পর্যায়ক্রমে সুইপ্ট আউট হয়ে যায়
+- 32 ETH-এর উপরের যেকোনো ব্যালেন্স **স্বয়ংক্রিয়ভাবে** আপনার উইথড্রয়াল এডড্রেস-এ পাঠিয়ে দেওয়া (swept) হয়
+- সম্পূর্ণ এক্সিটগুলো স্ট্যান্ডার্ড এক্সিট কিউ (queue) এর মাধ্যমে সম্পন্ন হয়
+- 32 ETH-এর উপরের রিওয়ার্ডগুলো কম্পাউন্ড হতে পারে না—সেগুলো পর্যায়ক্রমে সরিয়ে নেওয়া হয়
-**কিছু ভ্যালিডেটর কেন এখনও 0x01 ব্যবহার করে:** এটি সহজ এবং পরিচিত। অনেক ভ্যালিডেটর শ্যাপেলার পরে ডিপোজিট করেছে এবং তাদের কাছে ইতিমধ্যেই এই প্রকারটি রয়েছে, এবং যারা অতিরিক্ত ব্যালেন্সের স্বয়ংক্রিয় উইথড্রল চান তাদের জন্য এটি ঠিকঠাক কাজ করে।
+**কেন কিছু ভ্যালিডেটরস এখনও 0x01 ব্যবহার করেন:** এটি সহজ এবং পরিচিত। অনেক ভ্যালিডেটরস শাপেল্লার পরে ডিপোজিট করেছেন এবং তাদের কাছে ইতিমধ্যেই এই ধরনটি রয়েছে, এবং যারা অতিরিক্ত ব্যালেন্সের স্বয়ংক্রিয় উইথড্রয়াল চান তাদের জন্য এটি বেশ ভালোভাবে কাজ করে।
-**কেন এটি সুপারিশ করা হয় না:** `0x01`-এর সাথে, আপনি 32 ETH-এর উপরে পুরস্কার কম্পাউন্ড করার ক্ষমতা হারান। প্রতিটি অতিরিক্ত অংশ স্বয়ংক্রিয়ভাবে সুইপ্ট হয়ে যায়, যা আপনার ভ্যালিডেটরের আয়ের সম্ভাবনাকে সীমিত করে এবং উইথড্র করা ফান্ড আলাদাভাবে পরিচালনা করার প্রয়োজন হয়।
+**কেন এটি সুপারিশ করা হয় না:** `0x01`-এর মাধ্যমে, আপনি 32 ETH-এর উপরের রিওয়ার্ড কম্পাউন্ড করার ক্ষমতা হারাবেন। প্রতিটি অতিরিক্ত অংশ স্বয়ংক্রিয়ভাবে সরিয়ে নেওয়া হয়, যা আপনার ভ্যালিডেটরের উপার্জনের সম্ভাবনাকে সীমিত করে এবং উত্তোলিত ফান্ড আলাদাভাবে পরিচালনা করার প্রয়োজন হয়।
-## 0x02: কম্পাউন্ডিং উইথড্রল ক্রেডেনশিয়াল {#0x02-credentials}
+## 0x02: কম্পাউন্ডিং উইথড্রয়াল ক্রেডেনশিয়ালস {#0x02-credentials}
-`0x02` প্রকারটি পেক্ট্রা আপগ্রেডের সাথে চালু করা হয়েছিল এবং এটি আজকের ভ্যালিডেটরদের জন্য **সুপারিশকৃত পছন্দ**। `0x02` ক্রেডেনশিয়াল সহ ভ্যালিডেটরদের কখনও কখনও "কম্পাউন্ডিং ভ্যালিডেটর" বলা হয়।
+`0x02` ধরনটি পেক্ট্রা (Pectra) আপগ্রেডের সাথে চালু করা হয়েছিল এবং এটি বর্তমানে ভ্যালিডেটরসদের জন্য **সুপারিশকৃত পছন্দ**। `0x02` ক্রেডেনশিয়াল থাকা ভ্যালিডেটরসদের অনেক সময় "কম্পাউন্ডিং ভ্যালিডেটরস" বলা হয়।
-`0x02` ক্রেডেনশিয়ালের সাথে:
+`0x02` ক্রেডেনশিয়ালের ক্ষেত্রে:
-- 32 ETH-এর উপরের পুরস্কার 1 ETH বৃদ্ধিতে সর্বোচ্চ 2048 ETH কার্যকর ব্যালেন্স পর্যন্ত **কম্পাউন্ড** হয়
-- আংশিক উইথড্রল অবশ্যই ম্যানুয়ালি অনুরোধ করতে হবে (স্বয়ংক্রিয় সুইপ শুধুমাত্র 2048 ETH থ্রেশহোল্ডের উপরে ঘটে)
-- ভ্যালিডেটররা একাধিক 32 ETH ভ্যালিডেটরকে একটি একক উচ্চ-ব্যালেন্সের ভ্যালিডেটরে একত্রিত করতে পারে
-- সম্পূর্ণ এক্সিট এখনও স্ট্যান্ডার্ড এক্সিট কিউ-এর মাধ্যমে সমর্থিত
+- 32 ETH-এর উপরের রিওয়ার্ডগুলো 1 ETH বৃদ্ধিতে সর্বোচ্চ 2048 ETH ইফেক্টিভ ব্যালেন্স পর্যন্ত **কম্পাউন্ড** হয়
+- আংশিক উইথড্রয়ালের জন্য ম্যানুয়ালি অনুরোধ করতে হবে (স্বয়ংক্রিয় সুইপ শুধুমাত্র 2048 ETH থ্রেশহোল্ডের উপরে ঘটে)
+- ভ্যালিডেটরসরা একাধিক 32 ETH ভ্যালিডেটরকে একটি একক উচ্চ-ব্যালেন্সের ভ্যালিডেটরে একত্রিত (consolidate) করতে পারেন
+- সম্পূর্ণ এক্সিটগুলো এখনও স্ট্যান্ডার্ড এক্সিট কিউয়ের মাধ্যমে সমর্থিত
-আংশিক উইথড্রল এবং একত্রীকরণ উভয়ই [লঞ্চপ্যাড ভ্যালিডেটর অ্যাকশন](https://launchpad.ethereum.org/en/validator-actions) এর মাধ্যমে করা যেতে পারে।
+আংশিক উইথড্রয়াল এবং একত্রীকরণ (consolidation) উভয়ই [Launchpad Validator Actions](https://launchpad.ethereum.org/en/validator-actions)-এর মাধ্যমে করা যেতে পারে।
-**কেন ভ্যালিডেটরদের 0x02 পছন্দ করা উচিত:** এটি কম্পাউন্ডিংয়ের মাধ্যমে উন্নত মূলধন দক্ষতা, উইথড্রল কখন হবে তার উপর আরও নিয়ন্ত্রণ প্রদান করে এবং ভ্যালিডেটর একত্রীকরণ সমর্থন করে। সময়ের সাথে সাথে পুরস্কার সংগ্রহকারী সোলো স্ট্যাকারদের জন্য, এর মানে হল তাদের কার্যকর ব্যালেন্স—এবং ফলস্বরূপ তাদের পুরস্কার—ম্যানুয়াল হস্তক্ষেপ ছাড়াই 32 ETH-এর বাইরে বাড়তে পারে।
+**কেন ভ্যালিডেটরসদের 0x02 পছন্দ করা উচিত:** এটি কম্পাউন্ডিংয়ের মাধ্যমে আরও ভালো মূলধন দক্ষতা প্রদান করে, কখন উইথড্রয়াল হবে তার ওপর আরও বেশি নিয়ন্ত্রণ দেয় এবং ভ্যালিডেটর একত্রীকরণ সমর্থন করে। সোলো স্টেকারদের জন্য যারা সময়ের সাথে সাথে রিওয়ার্ড জমা করেন, এর মানে হলো তাদের ইফেক্টিভ ব্যালেন্স—এবং সেই অনুযায়ী তাদের রিওয়ার্ড—ম্যানুয়াল হস্তক্ষেপ ছাড়াই 32 ETH-এর বেশি বাড়তে পারে।
-**গুরুত্বপূর্ণ:** একবার আপনি `0x01` থেকে `0x02`-তে রূপান্তর করলে, আপনি আর আগের অবস্থায় ফিরতে পারবেন না।
+**গুরুত্বপূর্ণ:** একবার আপনি `0x01` থেকে `0x02`-এ রূপান্তর করলে, আপনি আর আগের অবস্থায় ফিরে যেতে পারবেন না।
-টাইপ 2 ক্রেডেনশিয়ালে রূপান্তর এবং MaxEB ফিচারের উপর একটি বিস্তারিত গাইডের জন্য, [MaxEB ব্যাখ্যাকারী পাতা](/roadmap/pectra/maxeb/) দেখুন।
+টাইপ 2 ক্রেডেনশিয়াল এবং MaxEB ফিচারে রূপান্তর করার বিষয়ে বিস্তারিত গাইডের জন্য, [MaxEB ব্যাখ্যামূলক পেজ](/roadmap/pectra/maxeb/) দেখুন।
-## আমার কোনটি বেছে নেওয়া উচিত? {#what-should-i-pick}
+## আমার কোনটি বেছে নেওয়া উচিত? {#what-should-i-pick}
-- **নতুন ভ্যালিডেটর:** `0x02` বেছে নিন। এটি উন্নত কম্পাউন্ডিং এবং নমনীয়তার সাথে আধুনিক স্ট্যান্ডার্ড।
-- **বিদ্যমান 0x01 ভ্যালিডেটর:** আপনি যদি 32 ETH-এর উপরে পুরস্কার কম্পাউন্ড করতে চান বা ভ্যালিডেটরদের একত্রিত করার পরিকল্পনা করেন তবে `0x02`-তে রূপান্তর করার কথা বিবেচনা করুন।
-- **বিদ্যমান 0x00 ভ্যালিডেটর:** অবিলম্বে আপগ্রেড করুন—আপনার ক্রেডেনশিয়াল আপডেট না করে আপনি উইথড্র করতে পারবেন না। আপনাকে প্রথমে `0x01`-এ রূপান্তর করতে হবে, তারপর আপনি `0x02`-তে রূপান্তর করতে পারবেন।
+- **নতুন ভ্যালিডেটরস:** `0x02` বেছে নিন। এটি আরও ভালো কম্পাউন্ডিং এবং নমনীয়তার সাথে আধুনিক স্ট্যান্ডার্ড।
+- **বিদ্যমান 0x01 ভ্যালিডেটরস:** আপনি যদি 32 ETH-এর উপরে রিওয়ার্ড কম্পাউন্ড করতে চান বা ভ্যালিডেটরসদের একত্রিত করার পরিকল্পনা করেন তবে `0x02`-এ রূপান্তর করার কথা বিবেচনা করুন।
+- **বিদ্যমান 0x00 ভ্যালিডেটরস:** অবিলম্বে আপগ্রেড করুন—আপনার ক্রেডেনশিয়াল আপডেট না করে আপনি উইথড্র করতে পারবেন না। আপনাকে প্রথমে `0x01`-এ রূপান্তর করতে হবে, তারপর আপনি `0x02`-এ রূপান্তর করতে পারবেন।
-## উইথড্রল ক্রেডেনশিয়াল পরিচালনার জন্য টুলস {#withdrawal-credential-tools}
+## উইথড্রয়াল ক্রেডেনশিয়াল পরিচালনার টুলস {#withdrawal-credential-tools}
-বেশ কিছু টুলস ক্রেডেনশিয়ালের প্রকারের মধ্যে নির্বাচন বা রূপান্তর সমর্থন করে:
+বেশ কয়েকটি টুল ক্রেডেনশিয়ালের ধরন বেছে নিতে বা রূপান্তর করতে সহায়তা করে:
-- **[ইথেরিয়াম স্টেকিং লঞ্চপ্যাড](https://launchpad.ethereum.org/en/validator-actions)** - ক্রেডেনশিয়াল রূপান্তর এবং একত্রীকরণ সহ ডিপোজিট এবং ভ্যালিডেটর পরিচালনার জন্য অফিসিয়াল টুল
-- **[পেক্ট্রা স্টেকিং ম্যানেজার](https://pectrastaking.com)** - রূপান্তর এবং একত্রীকরণের জন্য ওয়ালেট-কানেক্ট সমর্থন সহ ওয়েব UI
-- **[পেক্ট্রা ভ্যালিডেটর অপ্স CLI টুল](https://github.com/Luganodes/Pectra-Batch-Contract)** - ব্যাচ রূপান্তরের জন্য কমান্ড-লাইন টুল
-- **[Ethereal](https://github.com/wealdtech/ethereal)** - ভ্যালিডেটর পরিচালনা সহ ইথেরিয়াম অপারেশনের জন্য CLI টুল
+- **[Ethereum Staking Launchpad](https://launchpad.ethereum.org/en/validator-actions)** - ডিপোজিট এবং ভ্যালিডেটর পরিচালনার জন্য অফিসিয়াল টুল, যার মধ্যে ক্রেডেনশিয়াল রূপান্তর এবং একত্রীকরণ অন্তর্ভুক্ত রয়েছে
+- **[Pectra Staking Manager](https://pectrastaking.com)** - রূপান্তর এবং একত্রীকরণের জন্য ওয়ালেট-কানেক্ট সমর্থনসহ ওয়েব UI
+- **[Pectra Validator Ops CLI Tool](https://github.com/Luganodes/Pectra-Batch-Contract)** - ব্যাচ রূপান্তরের জন্য কমান্ড-লাইন টুল
+- **[Ethereal](https://github.com/wealdtech/ethereal)** - ভ্যালিডেটর পরিচালনাসহ ইথিরিয়াম অপারেশনের জন্য CLI টুল
-একত্রীকরণ টুলসের একটি সম্পূর্ণ তালিকা এবং বিস্তারিত রূপান্তর নির্দেশাবলীর জন্য, দেখুন [MaxEB একত্রীকরণ টুলিং](/roadmap/pectra/maxeb/#consolidation-tooling)।
+একত্রীকরণ টুলগুলোর একটি সম্পূর্ণ তালিকা এবং বিস্তারিত রূপান্তর নির্দেশাবলীর জন্য, [MaxEB একত্রীকরণ টুলিং](/roadmap/pectra/maxeb/#consolidation-tooling) দেখুন।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [প্রুফ-অফ-স্টেক ইথেরিয়ামে কী-সমূহ](/developers/docs/consensus-mechanisms/pos/keys/) - ভ্যালিডেটর কী এবং কীভাবে তারা উইথড্রল ক্রেডেনশিয়ালের সাথে সম্পর্কিত তা জানুন
-- [MaxEB](/roadmap/pectra/maxeb/) - পেক্ট্রা আপগ্রেড এবং সর্বোচ্চ কার্যকর ব্যালেন্স ফিচারের উপর বিস্তারিত গাইড
+- [প্রুফ-অফ-স্টেক ইথিরিয়ামে কিস (Keys)](/developers/docs/consensus-mechanisms/pos/keys/) - ভ্যালিডেটর কি (key) এবং সেগুলো কীভাবে উইথড্রয়াল ক্রেডেনশিয়ালের সাথে সম্পর্কিত তা জানুন
+- [MaxEB](/roadmap/pectra/maxeb/) - পেক্ট্রা আপগ্রেড এবং সর্বোচ্চ ইফেক্টিভ ব্যালেন্স ফিচারের ওপর বিস্তারিত গাইড
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/index.md
index 007a20c48ca..9e988460afd 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/index.md
@@ -1,114 +1,114 @@
---
-title: "প্রুফ-অফ-ওয়ার্ক (PoW)"
-description: "প্রুফ-অফ-ওয়ার্ক কনসেন্সাস প্রোটোকল এবং ইথেরিয়ামে এর ভূমিকার একটি ব্যাখ্যা।"
+title: প্রুফ-অফ-ওয়ার্ক (PoW)
+description: প্রুফ-অফ-ওয়ার্ক কনসেন্সাস প্রটোকল এবং ইথিরিয়ামে এর ভূমিকার একটি ব্যাখ্যা।
lang: bn
---
-ইথেরিয়াম নেটওয়ার্ক একটি কনসেন্সাস মেকানিজম ব্যবহার করে শুরু হয়েছিল যা **[প্রুফ-অফ-ওয়ার্ক (PoW)](/developers/docs/consensus-mechanisms/pow)** এর সাথে জড়িত ছিল। এটি ইথেরিয়াম নেটওয়ার্কের নোডগুলিকে ইথেরিয়াম ব্লকচেইনে রেকর্ড করা সমস্ত তথ্যের স্টেটের উপর একমত হতে সাহায্য করে এবং নির্দিষ্ট ধরণের অর্থনৈতিক আক্রমণ প্রতিরোধ করে। তবে, 2022 সালে ইথেরিয়াম প্রুফ-অফ-ওয়ার্ক বন্ধ করে দেয় এবং পরিবর্তে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) ব্যবহার করা শুরু করে।
+[Ethereum](/) নেটওয়ার্ক একটি কনসেন্সাস মেকানিজম ব্যবহার করে শুরু হয়েছিল যার মধ্যে **[প্রুফ-অফ-ওয়ার্ক (PoW)](/developers/docs/consensus-mechanisms/pow)** অন্তর্ভুক্ত ছিল। এটি ইথিরিয়াম নেটওয়ার্কের নোডগুলোকে ইথিরিয়াম ব্লকচেইনে রেকর্ড করা সমস্ত তথ্যের স্টেটের বিষয়ে একমত হতে সাহায্য করেছিল এবং নির্দিষ্ট ধরণের অর্থনৈতিক আক্রমণ প্রতিরোধ করেছিল। তবে, ইথিরিয়াম 2022 সালে প্রুফ-অফ-ওয়ার্ক বন্ধ করে দেয় এবং এর পরিবর্তে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) ব্যবহার করা শুরু করে।
- প্রুফ-অফ-ওয়ার্ক এখন বাতিল করা হয়েছে। ইথেরিয়াম আর তার কনসেন্সাস মেকানিজমের অংশ হিসাবে প্রুফ-অফ-ওয়ার্ক ব্যবহার করে না। পরিবর্তে, এটি প্রুফ-অফ-স্টেক ব্যবহার করে। [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) এবং [স্টেকিং](/staking/) সম্পর্কে আরও পড়ুন।
+ প্রুফ-অফ-ওয়ার্ক এখন বাতিল করা হয়েছে। ইথিরিয়াম আর তার কনসেন্সাস মেকানিজমের অংশ হিসেবে প্রুফ-অফ-ওয়ার্ক ব্যবহার করে না। এর পরিবর্তে, এটি প্রুফ-অফ-স্টেক ব্যবহার করে। [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) এবং [স্টেকিং](/staking/) সম্পর্কে আরও পড়ুন।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [ট্রানজ্যাকশন](/developers/docs/transactions/), [ব্লক](/developers/docs/blocks/), এবং [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) সম্পর্কে পড়ার পরামর্শ দিচ্ছি।
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [লেনদেন](/developers/docs/transactions/), [ব্লকস](/developers/docs/blocks/), এবং [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) সম্পর্কে পড়ে নিন।
## প্রুফ-অফ-ওয়ার্ক (PoW) কী? {#what-is-pow}
-নাকামোতো কনসেন্সাস, যা প্রুফ-অফ-ওয়ার্ক ব্যবহার করে, এটি সেই প্রক্রিয়া যা একসময় বিকেন্দ্রীভূত ইথেরিয়াম নেটওয়ার্ককে অ্যাকাউন্টের ব্যালেন্স এবং লেনদেনের ক্রমের মতো বিষয়গুলিতে কনসেন্সাসে (অর্থাৎ, সমস্ত নোড একমত) আসতে দিয়েছিল। এটি ব্যবহারকারীদের তাদের কয়েন "ডাবল স্পেন্ডিং" থেকে বিরত রেখেছিল এবং নিশ্চিত করেছিল যে ইথেরিয়াম চেইন আক্রমণ বা ম্যানিপুলেট করা অত্যন্ত কঠিন ছিল। এই সুরক্ষা বৈশিষ্ট্যগুলি এখন [গ্যাসপার](/developers/docs/consensus-mechanisms/pos/gasper/) নামে পরিচিত কনসেন্সাস মেকানিজম ব্যবহার করে প্রুফ-অফ-স্টেক থেকে আসে।
+নাকামোটো কনসেন্সাস, যা প্রুফ-অফ-ওয়ার্ক ব্যবহার করে, এমন একটি মেকানিজম যা একসময় ডিসেন্ট্রালাইজড ইথিরিয়াম নেটওয়ার্ককে একাউন্ট ব্যালেন্স এবং লেনদেনের ক্রমের মতো বিষয়গুলোতে কনসেন্সাসে (অর্থাৎ, সমস্ত নোড একমত হওয়া) পৌঁছাতে সাহায্য করেছিল। এটি ব্যবহারকারীদের তাদের কয়েন "ডাবল স্পেন্ডিং" বা দুবার খরচ করা থেকে বিরত রেখেছিল এবং নিশ্চিত করেছিল যে ইথিরিয়াম চেইনে আক্রমণ বা কারসাজি করা অত্যন্ত কঠিন। এই নিরাপত্তা বৈশিষ্ট্যগুলো এখন প্রুফ-অফ-স্টেকের মাধ্যমে আসে, যা [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) নামে পরিচিত কনসেন্সাস মেকানিজম ব্যবহার করে।
-## প্রুফ-অফ-ওয়ার্ক এবং মাইনিং {#pow-and-mining}
+## প্রুফ-অফ-ওয়ার্ক এবং মাইনিং {#pow-and-mining}
-প্রুফ-অফ-ওয়ার্ক হল অন্তর্নিহিত অ্যালগরিদম যা প্রুফ-অফ-ওয়ার্ক ব্লকচেইনে মাইনাররা যে কাজ করে তার জন্য অসুবিধা এবং নিয়ম সেট করে। মাইনিং নিজেই "কাজ"। এটি চেইনে বৈধ ব্লক যোগ করার কাজ। এটি গুরুত্বপূর্ণ কারণ চেইনের দৈর্ঘ্য নেটওয়ার্ককে ব্লকচেইনের সঠিক ফর্ক অনুসরণ করতে সহায়তা করে। যত বেশি "কাজ" করা হয়, চেইন তত দীর্ঘ হয় এবং ব্লকের সংখ্যা যত বেশি হয়, নেটওয়ার্ক বর্তমান অবস্থার বিষয়ে তত বেশি নিশ্চিত হতে পারে।
+প্রুফ-অফ-ওয়ার্ক হলো অন্তর্নিহিত এ্যালগরিদম যা প্রুফ-অফ-ওয়ার্ক ব্লকচেইনে মাইনারদের কাজের জন্য কাঠিন্য এবং নিয়ম নির্ধারণ করে। মাইনিং হলো "কাজ" নিজেই। এটি চেইনে বৈধ ব্লক যুক্ত করার কাজ। এটি গুরুত্বপূর্ণ কারণ চেইনের দৈর্ঘ্য নেটওয়ার্ককে ব্লকচেইনের সঠিক ফর্ক অনুসরণ করতে সাহায্য করে। যত বেশি "কাজ" করা হয়, চেইন তত দীর্ঘ হয় এবং ব্লক নম্বর যত বেশি হয়, নেটওয়ার্ক বর্তমান স্টেটের বিষয়ে তত বেশি নিশ্চিত হতে পারে।
-[মাইনিং সম্পর্কে আরও](/developers/docs/consensus-mechanisms/pow/mining/)
+[মাইনিং সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pow/mining/)
-## ইথেরিয়ামের প্রুফ-অফ-ওয়ার্ক কীভাবে কাজ করে? {#how-it-works}
+## ইথিরিয়ামের প্রুফ-অফ-ওয়ার্ক কীভাবে কাজ করত? {#how-it-works}
-ইথেরিয়াম ট্রানজ্যাকশনগুলি ব্লকে প্রক্রিয়া করা হয়। এখন-অপ্রচলিত প্রুফ-অফ-ওয়ার্ক ইথেরিয়ামে, প্রতিটি ব্লকে ছিল:
+ইথিরিয়াম লেনদেনগুলো ব্লকে প্রসেস করা হয়। বর্তমানে বাতিল হওয়া প্রুফ-অফ-ওয়ার্ক ইথিরিয়ামে, প্রতিটি ব্লকে থাকত:
-- ব্লকের অসুবিধা – উদাহরণস্বরূপ: 3,324,092,183,262,715
-- mixHash – উদাহরণস্বরূপ: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29`
-- নন্স – উদাহরণস্বরূপ: `0xd3ee432b4fb3d26b`
+- ব্লক ডিফিকাল্টি (কাঠিন্য) – উদাহরণস্বরূপ: 3,324,092,183,262,715
+- মিক্সহ্যাস (mixHash) – উদাহরণস্বরূপ: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29`
+- নন্স (nonce) – উদাহরণস্বরূপ: `0xd3ee432b4fb3d26b`
-এই ব্লক ডেটা সরাসরি প্রুফ-অফ-ওয়ার্কের সাথে সম্পর্কিত ছিল।
+এই ব্লক ডাটা সরাসরি প্রুফ-অফ-ওয়ার্কের সাথে সম্পর্কিত ছিল।
-### প্রুফ-অফ-ওয়ার্কের কাজ {#the-work}
+### প্রুফ-অফ-ওয়ার্কে কাজ {#the-work}
-প্রুফ-অফ-ওয়ার্ক প্রোটোকল, ইথ্যাশ (Ethash), একটি ব্লকের জন্য নন্স খুঁজে বের করার জন্য মাইনারদের ট্রায়াল এবং ত্রুটির একটি তীব্র প্রতিযোগিতার মধ্য দিয়ে যেতে হতো। শুধুমাত্র একটি বৈধ নন্স সহ ব্লকগুলি চেইনে যোগ করা যেতে পারে।
+প্রুফ-অফ-ওয়ার্ক প্রটোকল, Ethash, মাইনারদের একটি ব্লকের জন্য নন্স খুঁজে বের করতে ট্রায়াল এবং এররের একটি তীব্র প্রতিযোগিতার মধ্য দিয়ে যেতে বাধ্য করত। শুধুমাত্র একটি বৈধ নন্স থাকা ব্লকগুলোই চেইনে যুক্ত করা যেত।
-একটি ব্লক তৈরি করার জন্য দৌড়ানোর সময়, একজন মাইনার বারবার একটি ডেটাসেট রাখে, যা শুধুমাত্র সম্পূর্ণ চেইন ডাউনলোড এবং চালানোর মাধ্যমে পাওয়া যেতে পারে (যেমন একজন মাইনার করে), একটি গাণিতিক ফাংশনের মাধ্যমে। ডেটাসেটটি একটি টার্গেটের নীচে একটি মিক্সহ্যাশ (mixHash) তৈরি করতে ব্যবহৃত হয়েছিল যা ব্লকের অসুবিধা দ্বারা নির্দেশিত হয়। এটি করার সর্বোত্তম উপায় হল ট্রায়াল এবং ত্রুটির মাধ্যমে।
+একটি ব্লক তৈরি করার প্রতিযোগিতায়, একজন মাইনার বারবার একটি ডাটা সেটকে একটি গাণিতিক ফাংশনের মধ্য দিয়ে চালাত, যা শুধুমাত্র সম্পূর্ণ চেইন ডাউনলোড এবং রান করার মাধ্যমেই পাওয়া যেত (যেমন একজন মাইনার করে)। ডাটা সেটটি ব্লক ডিফিকাল্টি দ্বারা নির্ধারিত একটি লক্ষ্যের নিচে একটি mixHash তৈরি করতে ব্যবহৃত হতো। এটি করার সর্বোত্তম উপায় হলো ট্রায়াল এবং এরর।
-অসুবিধাটি হ্যাসের জন্য লক্ষ্য নির্ধারণ করে। টার্গেট যত কম হবে, বৈধ হ্যাসের সেট তত ছোট হবে। একবার তৈরি হয়ে গেলে, অন্যান্য মাইনার এবং ক্লায়েন্টদের জন্য এটি যাচাই করা অবিশ্বাস্যভাবে সহজ ছিল। এমনকি যদি একটি লেনদেন পরিবর্তন হয়, হ্যাস সম্পূর্ণরূপে ভিন্ন হবে, যা জালিয়াতির সংকেত দেবে।
+ডিফিকাল্টি হ্যাসের জন্য লক্ষ্য নির্ধারণ করত। লক্ষ্য যত কম হবে, বৈধ হ্যাসের সেট তত ছোট হবে। একবার তৈরি হয়ে গেলে, অন্যান্য মাইনার এবং ক্লায়েন্টদের জন্য এটি যাচাই করা অবিশ্বাস্যভাবে সহজ ছিল। এমনকি যদি একটি লেনদেনও পরিবর্তিত হয়, তবে হ্যাস সম্পূর্ণ আলাদা হবে, যা জালিয়াতির ইঙ্গিত দেয়।
-হ্যাশিং জালিয়াতি সনাক্ত করা সহজ করে তোলে। কিন্তু একটি প্রক্রিয়া হিসাবে প্রুফ-অফ-ওয়ার্কও চেইন আক্রমণ করার জন্য একটি বড় প্রতিরোধক ছিল।
+হ্যাশিং জালিয়াতি শনাক্ত করা সহজ করে তোলে। তবে একটি প্রক্রিয়া হিসেবে প্রুফ-অফ-ওয়ার্ক চেইনে আক্রমণ করার ক্ষেত্রেও একটি বড় বাধা ছিল।
-### প্রুফ-অফ-ওয়ার্ক এবং নিরাপত্তা {#security}
+### প্রুফ-অফ-ওয়ার্ক এবং নিরাপত্তা {#security}
-মাইনারদের প্রধান ইথেরিয়াম চেইনে এই কাজটি করার জন্য উৎসাহিত করা হয়েছিল। মাইনারদের একটি উপসেটের জন্য তাদের নিজস্ব চেইন শুরু করার জন্য সামান্য উৎসাহ ছিল - এটি সিস্টেমকে দুর্বল করে। ব্লকচেইন সত্যের উৎস হিসাবে একটি একক স্টেটের উপর নির্ভর করে।
+মাইনারদের মূল ইথিরিয়াম চেইনে এই কাজটি করার জন্য উৎসাহিত করা হতো। মাইনারদের একটি সাবসেটের জন্য তাদের নিজস্ব চেইন শুরু করার খুব কমই প্রণোদনা ছিল—এটি সিস্টেমকে দুর্বল করে দেয়। ব্লকচেইনগুলো সত্যের উৎস হিসেবে একটি একক স্টেট থাকার ওপর নির্ভর করে।
-প্রুফ-অফ-ওয়ার্কের উদ্দেশ্য ছিল চেইনকে প্রসারিত করা। দীর্ঘতম চেইনটি বৈধ হিসাবে সবচেয়ে বিশ্বাসযোগ্য ছিল কারণ এটি তৈরি করার জন্য সবচেয়ে বেশি গণনামূলক কাজ করা হয়েছিল। ইথেরিয়ামের PoW সিস্টেমের মধ্যে, লেনদেন মুছে ফেলা, নকল তৈরি করা বা দ্বিতীয় চেইন বজায় রাখে এমন নতুন ব্লক তৈরি করা প্রায় অসম্ভব ছিল। কারণ একজন দূষিত মাইনারকে সব সময় অন্য সবার চেয়ে দ্রুত ব্লক নন্স সমাধান করতে হতো।
+প্রুফ-অফ-ওয়ার্কের উদ্দেশ্য ছিল চেইনকে প্রসারিত করা। সবচেয়ে দীর্ঘ চেইনটি বৈধ হিসেবে সবচেয়ে বেশি বিশ্বাসযোগ্য ছিল কারণ এটি তৈরি করতে সবচেয়ে বেশি কম্পিউটেশনাল কাজ করা হয়েছিল। ইথিরিয়ামের PoW সিস্টেমের মধ্যে, লেনদেন মুছে ফেলা, ভুয়া লেনদেন তৈরি করা বা দ্বিতীয় একটি চেইন বজায় রাখার জন্য নতুন ব্লক তৈরি করা প্রায় অসম্ভব ছিল। এর কারণ হলো একজন ক্ষতিকারক মাইনারকে সবসময় অন্য সবার চেয়ে দ্রুত ব্লক নন্স সমাধান করতে হতো।
-ধারাবাহিকভাবে দূষিত অথচ বৈধ ব্লক তৈরি করতে, একজন দূষিত মাইনারকে অন্য সবাইকে হারানোর জন্য নেটওয়ার্ক মাইনিং পাওয়ারের 51% এর বেশি প্রয়োজন হতো। এই পরিমাণ "কাজের" জন্য প্রচুর ব্যয়বহুল কম্পিউটিং শক্তি প্রয়োজন এবং ব্যয় করা শক্তি এমনকি একটি আক্রমণে অর্জিত লাভের চেয়েও বেশি হতে পারে।
+ধারাবাহিকভাবে ক্ষতিকারক অথচ বৈধ ব্লক তৈরি করতে, একজন ক্ষতিকারক মাইনারের অন্য সবাইকে হারানোর জন্য নেটওয়ার্কের মাইনিং ক্ষমতার 51%-এর বেশি প্রয়োজন হতো। এই পরিমাণ "কাজ"-এর জন্য প্রচুর ব্যয়বহুল কম্পিউটিং ক্ষমতার প্রয়োজন হয় এবং ব্যয়িত শক্তি হয়তো একটি আক্রমণে অর্জিত লাভের চেয়েও বেশি হতো।
-### প্রুফ-অফ-ওয়ার্ক অর্থনীতি {#economics}
+### প্রুফ-অফ-ওয়ার্ক অর্থনীতি {#economics}
-প্রুফ-অফ-ওয়ার্ক সিস্টেমে নতুন মুদ্রা ইস্যু করার এবং মাইনারদের কাজ করার জন্য উৎসাহিত করার জন্যও দায়ী ছিল।
+প্রুফ-অফ-ওয়ার্ক সিস্টেমে নতুন কারেন্সি ইস্যু করার এবং মাইনারদের কাজ করতে উৎসাহিত করার জন্যও দায়ী ছিল।
-[কনস্টান্টিনোপল আপগ্রেড](/ethereum-forks/#constantinople) থেকে, যে মাইনাররা সফলভাবে একটি ব্লক তৈরি করে তাদের দুটি নতুন মিন্ট করা ETH এবং লেনদেন ফি-এর অংশ দিয়ে পুরস্কৃত করা হয়েছিল। অমার ব্লকগুলিও 1.75 ETH ক্ষতিপূরণ দিয়েছে। অমার ব্লকগুলি ছিল একজন মাইনার দ্বারা কার্যত একই সময়ে তৈরি করা বৈধ ব্লক যখন অন্য একজন মাইনার ক্যানোনিকাল ব্লক তৈরি করেছিল, যা শেষ পর্যন্ত কোন চেইনটি প্রথমে তৈরি হয়েছিল তার দ্বারা নির্ধারিত হয়েছিল। অমার ব্লক সাধারণত নেটওয়ার্ক লেটেন্সির কারণে ঘটে।
+[কনস্টান্টিনোপল আপগ্রেড](/ethereum-forks/#constantinople)-এর পর থেকে, যেসব মাইনার সফলভাবে একটি ব্লক তৈরি করত তাদের দুটি নতুন মিন্ট করা ETH এবং ট্রানজেকশন ফির একটি অংশ দিয়ে পুরস্কৃত করা হতো। ওমার (Ommer) ব্লকগুলোও 1.75 ETH ক্ষতিপূরণ দিত। ওমার ব্লকগুলো ছিল বৈধ ব্লক যা একজন মাইনার প্রায় একই সময়ে তৈরি করত যখন অন্য একজন মাইনার ক্যানোনিকাল ব্লক তৈরি করত, যা শেষ পর্যন্ত নির্ধারিত হতো কোন চেইনটি প্রথমে তৈরি করা হয়েছিল তার ওপর ভিত্তি করে। ওমার ব্লকগুলো সাধারণত নেটওয়ার্ক ল্যাটেন্সির কারণে ঘটত।
## ফাইনালিটি {#finality}
-ইথেরিয়ামে একটি লেনদেনের "ফাইনালিটি" থাকে যখন এটি এমন একটি ব্লকের অংশ হয় যা পরিবর্তন করা যায় না।
+ইথিরিয়ামে একটি লেনদেনের "ফাইনালিটি" থাকে যখন এটি এমন একটি ব্লকের অংশ হয় যা পরিবর্তন করা যায় না।
-যেহেতু মাইনাররা একটি বিকেন্দ্রীভূত উপায়ে কাজ করে, দুটি বৈধ ব্লক একই সময়ে মাইন করা যেতে পারে। এটি একটি অস্থায়ী ফর্ক তৈরি করে। অবশেষে, এই চেইনগুলির মধ্যে একটি পরবর্তী ব্লকগুলি মাইন করা এবং এতে যুক্ত করার পরে গৃহীত চেইন হয়ে ওঠে, যা এটিকে দীর্ঘ করে তোলে।
+যেহেতু মাইনাররা একটি ডিসেন্ট্রালাইজড উপায়ে কাজ করত, তাই একই সময়ে দুটি বৈধ ব্লক মাইন করা যেতে পারত। এটি একটি অস্থায়ী ফর্ক তৈরি করে। শেষ পর্যন্ত, পরবর্তী ব্লকগুলো মাইন করে এতে যুক্ত করার পর এই চেইনগুলোর মধ্যে একটি গ্রহণযোগ্য চেইনে পরিণত হতো, যা এটিকে আরও দীর্ঘ করে তুলত।
-বিষয়টিকে আরও জটিল করার জন্য, অস্থায়ী ফর্কে প্রত্যাখ্যাত লেনদেনগুলি গৃহীত চেইনে অন্তর্ভুক্ত নাও হতে পারে। এর মানে হল এটি উল্টে যেতে পারে। সুতরাং ফাইনালিটি বলতে সেই সময়কে বোঝায় যা আপনার একটি লেনদেনকে অপরিবর্তনীয় বিবেচনা করার আগে অপেক্ষা করা উচিত। পূর্ববর্তী প্রুফ-অফ-ওয়ার্ক ইথেরিয়ামের অধীনে, একটি নির্দিষ্ট ব্লক `N`-এর উপরে যত বেশি ব্লক মাইন করা হয়েছিল, `N`-এর লেনদেন সফল হয়েছে এবং প্রত্যাবর্তন করা হবে না তার উপর আস্থা তত বেশি ছিল। এখন, প্রুফ-অফ-স্টেক-এর সাথে, ফাইনালটি একটি ব্লকের সম্ভাব্যতার পরিবর্তে একটি সুস্পষ্ট সম্পত্তি।
+বিষয়গুলোকে আরও জটিল করার জন্য, অস্থায়ী ফর্কে প্রত্যাখ্যাত লেনদেনগুলো হয়তো গ্রহণযোগ্য চেইনে অন্তর্ভুক্ত নাও হতে পারে। এর মানে হলো এটি রিভার্স বা বাতিল হয়ে যেতে পারে। তাই ফাইনালিটি বলতে সেই সময়কে বোঝায় যা আপনার একটি লেনদেনকে অপরিবর্তনীয় বিবেচনা করার আগে অপেক্ষা করা উচিত। পূর্ববর্তী প্রুফ-অফ-ওয়ার্ক ইথিরিয়ামের অধীনে, একটি নির্দিষ্ট ব্লক `N`-এর ওপর যত বেশি ব্লক মাইন করা হতো, `N`-এর লেনদেনগুলো সফল হওয়ার এবং রিভার্স না হওয়ার বিষয়ে আত্মবিশ্বাস তত বেশি হতো। এখন, প্রুফ-অ-স্টেকের সাথে, ফাইনালাইজেশন হলো একটি ব্লকের সম্ভাব্যতার পরিবর্তে একটি সুস্পষ্ট বৈশিষ্ট্য।
-## প্রুফ-অফ-ওয়ার্ক শক্তি-ব্যবহার {#energy}
+## প্রুফ-অফ-ওয়ার্ক শক্তি-ব্যবহার {#energy}
-প্রুফ-অফ-ওয়ার্কের একটি প্রধান সমালোচনা হল নেটওয়ার্ককে নিরাপদ রাখার জন্য প্রয়োজনীয় শক্তির পরিমাণ। নিরাপত্তা এবং বিকেন্দ্রীকরণ বজায় রাখার জন্য, প্রুফ-অফ-ওয়ার্কে ইথেরিয়াম প্রচুর পরিমাণে শক্তি খরচ করে। প্রুফ-অফ-স্টেকে স্যুইচ করার কিছুক্ষণ আগে, ইথেরিয়াম মাইনাররা সম্মিলিতভাবে প্রায় 70 TWh/বছর খরচ করছিল (প্রায় চেক প্রজাতন্ত্রের সমান - 18-জুলাই-2022-এ [ডিজিকোνομিস্ট](https://digiconomist.net/) অনুসারে)।
+প্রুফ-অফ-ওয়ার্কের একটি বড় সমালোচনা হলো নেটওয়ার্ককে নিরাপদ রাখতে প্রয়োজনীয় শক্তির পরিমাণ। নিরাপত্তা এবং ডিসেন্ট্রালাইজেশন বজায় রাখতে, প্রুফ-অফ-ওয়ার্কে ইথিরিয়াম প্রচুর পরিমাণে শক্তি খরচ করত। প্রুফ-অফ-স্টেকে যাওয়ার ঠিক আগে, ইথিরিয়াম মাইনাররা সম্মিলিতভাবে প্রায় 70 TWh/বছর শক্তি খরচ করছিল (যা চেক প্রজাতন্ত্রের প্রায় সমান - 18-জুলাই-2022 তারিখে [digiconomist](https://digiconomist.net/)-এর মতে)।
## সুবিধা এবং অসুবিধা {#pros-and-cons}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| প্রুফ-অফ-ওয়ার্ক নিরপেক্ষ। শুরু করার জন্য আপনার ETH-এর প্রয়োজন নেই এবং ব্লক রিওয়ার্ড আপনাকে 0ETH থেকে একটি ইতিবাচক ব্যালেন্সে যেতে দেয়। [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) দিয়ে শুরু করার জন্য আপনার ETH প্রয়োজন। | প্রুফ-অফ-ওয়ার্ক এত শক্তি ব্যবহার করে যে এটি পরিবেশের জন্য খারাপ। |
-| প্রুফ-অফ-ওয়ার্ক একটি পরীক্ষিত এবং পরীক্ষিত কনসেন্সাস মেকানিজম যা বিটকয়েন এবং ইথেরিয়ামকে বহু বছর ধরে নিরাপদ এবং বিকেন্দ্রীভূত রেখেছে। | আপনি যদি মাইন করতে চান, আপনার এমন বিশেষ সরঞ্জামের প্রয়োজন যা শুরু করার জন্য একটি বড় বিনিয়োগ। |
-| প্রুফ-অফ-স্টেকের তুলনায় এটি বাস্তবায়ন করা তুলনামূলকভাবে সহজ। | প্রয়োজনীয় গণনার পরিমাণ বৃদ্ধির কারণে, মাইনিং পুলগুলি সম্ভাব্যভাবে মাইনিং গেমটিতে আধিপত্য বিস্তার করতে পারে, যা কেন্দ্রীকরণ এবং নিরাপত্তা ঝুঁকির দিকে পরিচালিত করে। |
+| সুবিধা | অসুবিধা |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
+| প্রুফ-অফ-ওয়ার্ক নিরপেক্ষ। শুরু করার জন্য আপনার ETH-এর প্রয়োজন নেই এবং ব্লক রিওয়ার্ড আপনাকে 0ETH থেকে একটি পজিটিভ ব্যালেন্সে যাওয়ার সুযোগ দেয়। [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)-এর সাথে শুরু করার জন্য আপনার ETH প্রয়োজন। | প্রুফ-অফ-ওয়ার্ক এত বেশি শক্তি ব্যবহার করে যা পরিবেশের জন্য ক্ষতিকর। |
+| প্রুফ-অফ-ওয়ার্ক হলো একটি পরীক্ষিত এবং প্রমাণিত কনসেন্সাস মেকানিজম যা বিটকয়েন এবং ইথিরিয়ামকে বহু বছর ধরে নিরাপদ এবং ডিসেন্ট্রালাইজড রেখেছে। | আপনি যদি মাইন করতে চান, তবে আপনার এমন বিশেষ সরঞ্জামের প্রয়োজন হবে যা শুরু করার জন্য একটি বড় বিনিয়োগ। |
+| প্রুফ-অফ-স্টেকের তুলনায় এটি বাস্তবায়ন করা তুলনামূলকভাবে সহজ। | ক্রমবর্ধমান কম্পিউটেশনের প্রয়োজনের কারণে, মাইনিং পুলগুলো সম্ভাব্যভাবে মাইনিং গেমে আধিপত্য বিস্তার করতে পারে, যা সেন্ট্রালাইজেশন এবং নিরাপত্তা ঝুঁকির দিকে পরিচালিত করে। |
## প্রুফ-অফ-স্টেকের সাথে তুলনা {#compared-to-pos}
-একটি উচ্চ স্তরে, প্রুফ-অফ-স্টেকের প্রুফ-অফ-ওয়ার্কের মতো একই শেষ লক্ষ্য রয়েছে: বিকেন্দ্রীভূত নেটওয়ার্ককে নিরাপদে কনসেন্সাসে পৌঁছাতে সহায়তা করা। তবে প্রক্রিয়া এবং কর্মীদের মধ্যে এর কিছু পার্থক্য রয়েছে:
+উচ্চ স্তরে, প্রুফ-অফ-স্টেকের চূড়ান্ত লক্ষ্য প্রুফ-অফ-ওয়ার্কের মতোই: ডিসেন্ট্রালাইজড নেটওয়ার্ককে নিরাপদে কনসেন্সাসে পৌঁছাতে সাহায্য করা। তবে এর প্রক্রিয়া এবং কর্মীদের মধ্যে কিছু পার্থক্য রয়েছে:
-- প্রুফ-অফ-স্টেক স্টেক করা ETH-এর জন্য গণনামূলক শক্তির গুরুত্বকে পরিবর্তন করে।
-- প্রুফ-অফ-স্টেক মাইনারদেরকে ভ্যালিডেটর দিয়ে প্রতিস্থাপন করে। ভ্যালিডেটররা নতুন ব্লক তৈরি করার ক্ষমতা সক্রিয় করতে তাদের ETH স্টেক করে।
-- ভ্যালিডেটররা ব্লক তৈরি করার জন্য প্রতিযোগিতা করে না, পরিবর্তে তারা একটি অ্যালগরিদম দ্বারা এলোমেলোভাবে নির্বাচিত হয়।
-- ফাইনালিটি পরিষ্কার: নির্দিষ্ট চেকপয়েন্টে, যদি 2/3 ভ্যালিডেটর ব্লকের স্টেটের উপর একমত হয় তবে এটিকে ফাইনাল হিসাবে বিবেচনা করা হয়। ভ্যালিডেটরদের অবশ্যই তাদের পুরো স্টেক এর উপর বাজি ধরতে হবে, তাই যদি তারা লাইনের নিচে ষড়যন্ত্র করার চেষ্টা করে, তবে তারা তাদের পুরো স্টেক হারাবে।
+- প্রুফ-অফ-স্টেক কম্পিউটেশনাল ক্ষমতার গুরুত্বকে স্টেক করা ETH দিয়ে প্রতিস্থাপন করে।
+- প্রুফ-অফ-স্টেক মাইনারদের ভ্যালিডেটরস দিয়ে প্রতিস্থাপন করে। ভ্যালিডেটরস নতুন ব্লক তৈরি করার ক্ষমতা সক্রিয় করতে তাদের ETH স্টেক করে।
+- ভ্যালিডেটরস ব্লক তৈরি করার জন্য প্রতিযোগিতা করে না, এর পরিবর্তে তাদের একটি এ্যালগরিদম দ্বারা এলোমেলোভাবে বেছে নেওয়া হয়।
+- ফাইনালিটি আরও স্পষ্ট: নির্দিষ্ট চেকপয়েন্টগুলোতে, যদি 2/3 ভ্যালিডেটরস ব্লকের স্টেটের বিষয়ে একমত হয় তবে এটিকে চূড়ান্ত বলে বিবেচনা করা হয়। ভ্যালিডেটরসদের অবশ্যই এর ওপর তাদের সম্পূর্ণ স্টেক বাজি রাখতে হবে, তাই যদি তারা পরবর্তীতে যোগসাজশ করার চেষ্টা করে, তবে তারা তাদের সম্পূর্ণ স্টেক হারাবে।
-[প্রুফ-অফ-স্টেক সম্পর্কে আরও](/developers/docs/consensus-mechanisms/pos/)
+[প্রুফ-অফ-স্টেক সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pos/)
-## আপনি কি দেখে শিখতে বেশি পছন্দ করেন? {#visual-learner}
+## ভিজ্যুয়াল লার্নারদের জন্য {#visual-learner}
## আরও পড়ুন {#further-reading}
-- [সংখ্যাগরিষ্ঠের আক্রমণ](https://en.bitcoin.it/wiki/Majority_attack)
-- [সেটেলমেন্ট ফাইনালিটির উপর](https://blog.ethereum.org/2016/05/09/on-settlement-finality)
+- [মজরিটি অ্যাটাক (Majority attack)](https://en.bitcoin.it/wiki/Majority_attack)
+- [সেটেলমেন্ট ফাইনালিটি সম্পর্কে (On settlement finality)](https://blog.ethereum.org/2016/05/09/on-settlement-finality)
### ভিডিও {#videos}
-- [প্রুফ-অফ-ওয়ার্ক প্রোটোকলের একটি প্রযুক্তিগত ব্যাখ্যা](https://youtu.be/9V1bipPkCTU)
+- [প্রুফ-অফ-ওয়ার্ক প্রটোকলের একটি প্রযুক্তিগত ব্যাখ্যা](https://youtu.be/9V1bipPkCTU)
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
- [মাইনিং](/developers/docs/consensus-mechanisms/pow/mining/)
- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/)
-- [প্রুফ-অফ-অথোরিটি](/developers/docs/consensus-mechanisms/poa/)
+- [প্রুফ-অফ-অথরিটি](/developers/docs/consensus-mechanisms/poa/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/index.md
index 6a16951a38c..4861ab2cbe9 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -1,6 +1,6 @@
---
-title: "মাইনিং"
-description: "ইথেরিয়ামে মাইনিং কীভাবে কাজ করত তার একটি ব্যাখ্যা।"
+title: মাইনিং
+description: ইথিরিয়ামে মাইনিং কীভাবে কাজ করত তার একটি ব্যাখ্যা।
lang: bn
---
@@ -8,79 +8,79 @@ lang: bn
-প্রুফ-অফ-ওয়ার্ক আর ইথেরিয়ামের কনসেন্সাস মেকানিজমের ভিত্তি নয়, যার অর্থ মাইনিং বন্ধ করে দেওয়া হয়েছে। পরিবর্তে, ইথেরিয়াম ভ্যালিডেটরদের দ্বারা সুরক্ষিত যারা ETH স্টেক করে। আপনি আজই আপনার ETH স্টেকিং শুরু করতে পারেন। The Merge, প্রুফ-অফ-স্টেক, এবং স্টেকিং সম্পর্কে আরও পড়ুন। এই পৃষ্ঠাটি শুধুমাত্র ঐতিহাসিক আগ্রহের জন্য।
+প্রুফ-অফ-ওয়ার্ক এখন আর ইথিরিয়ামের কনসেন্সাস মেকানিজম-এর ভিত্তি নয়, যার মানে মাইনিং বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে, [Ethereum](/) এখন সেইসব ভ্যালিডেটরস দ্বারা সুরক্ষিত যারা ETH স্টেক করে। আপনি আজই আপনার ETH স্টেকিং শুরু করতে পারেন। দ্য মার্জ (The Merge), প্রুফ-অফ-স্টেক, এবং স্টেকিং সম্পর্কে আরও পড়ুন। এই পৃষ্ঠাটি শুধুমাত্র ঐতিহাসিক আগ্রহের জন্য রাখা হয়েছে।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [লেনদেন](/developers/docs/transactions/), [ব্লক](/developers/docs/blocks/) এবং [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/) সম্পর্কে পড়ার পরামর্শ দিই।
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [লেনদেন](/developers/docs/transactions/), [ব্লকস](/developers/docs/blocks/) এবং [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/) সম্পর্কে পড়ে নিন।
-## ইথেরিয়াম মাইনিং কী? {#what-is-ethereum-mining}
+## ইথিরিয়াম মাইনিং কী? {#what-is-ethereum-mining}
-মাইনিং হল ইথেরিয়ামের এখন-অপ্রচলিত প্রুফ-অফ-ওয়ার্ক আর্কিটেকচারে ইথেরিয়াম ব্লকচেইনে যোগ করার জন্য লেনদেনের একটি ব্লক তৈরি করার প্রক্রিয়া।
+মাইনিং হলো ইথিরিয়ামের বর্তমানে বাতিল হওয়া প্রুফ-অফ-ওয়ার্ক আর্কিটেকচারে ইথিরিয়াম ব্লকচেইন-এ যুক্ত করার জন্য লেনদেনের একটি ব্লক তৈরি করার প্রক্রিয়া।
-মাইনিং শব্দটি ক্রিপ্টোকারেন্সির জন্য সোনার উপমা প্রসঙ্গে উদ্ভূত হয়েছে। সোনা বা মূল্যবান ধাতু দুর্লভ, ডিজিটাল টোকেনও তাই, এবং একটি প্রুফ-অফ-ওয়ার্ক সিস্টেমে মোট পরিমাণ বাড়ানোর একমাত্র উপায় হল মাইনিং। প্রুফ-অফ-ওয়ার্ক ইথেরিয়ামে, ইস্যুয়েন্সের একমাত্র পদ্ধতি ছিল মাইনিং। তবে সোনা বা মূল্যবান ধাতুর মতো নয়, ইথেরিয়াম মাইনিং ব্লকচেইনে ব্লক তৈরি, যাচাই, প্রকাশ এবং প্রচার করে নেটওয়ার্ক সুরক্ষিত করার একটি উপায়ও ছিল।
+ক্রিপটোকারেন্সি-এর ক্ষেত্রে সোনার উপমা থেকে মাইনিং শব্দটির উৎপত্তি হয়েছে। সোনা বা মূল্যবান ধাতু যেমন দুষ্প্রাপ্য, তেমনি ডিজিটাল টোকেনও দুষ্প্রাপ্য, এবং একটি প্রুফ-অফ-ওয়ার্ক সিস্টেমে মোট পরিমাণ বাড়ানোর একমাত্র উপায় হলো মাইনিং। প্রুফ-অফ-ওয়ার্ক ইথিরিয়ামে, ইস্যুয়েন্স-এর একমাত্র মাধ্যম ছিল মাইনিং। তবে সোনা বা মূল্যবান ধাতুর বিপরীতে, ইথিরিয়াম মাইনিং ব্লকচেইন-এ ব্লক তৈরি, যাচাই, প্রকাশ এবং প্রচার করার মাধ্যমে নেটওয়ার্ক সুরক্ষিত করারও একটি উপায় ছিল।
-ইথার মাইনিং = নেটওয়ার্ক সুরক্ষিত করা
+ইথার মাইনিং = নেটওয়ার্ক সুরক্ষিত করা
-যেকোনো প্রুফ-অফ-ওয়ার্ক ব্লকচেইনের প্রাণশক্তি হল মাইনিং। প্রুফ-অফ-স্টেকে স্থানান্তরিত হওয়ার আগে ইথেরিয়াম মাইনাররা - সফটওয়্যার চালিত কম্পিউটার - তাদের সময় এবং কম্পিউটেশনাল শক্তি ব্যবহার করে লেনদেন প্রক্রিয়া এবং ব্লক তৈরি করত।
+মাইনিং হলো যেকোনো প্রুফ-অফ-ওয়ার্ক ব্লকচেইন-এর প্রাণশক্তি। ইথিরিয়াম মাইনাররা - সফটওয়্যার চালানো কম্পিউটার - প্রুফ-অফ-স্টেক-এ স্থানান্তরের আগে লেনদেন প্রক্রিয়া করতে এবং ব্লকস তৈরি করতে তাদের সময় এবং কম্পিউটেশনাল শক্তি ব্যবহার করত।
-## মাইনারদের অস্তিত্ব কেন? {#why-do-miners-exist}
+## মাইনারদের অস্তিত্ব কেন আছে? {#why-do-miners-exist}
-ইথেরিয়ামের মতো ডিসেন্ট্রালাইজড সিস্টেমে, আমাদের নিশ্চিত করতে হবে যে সবাই লেনদেনের ক্রমে একমত। মাইনাররা ব্লক তৈরি করার জন্য কম্পিউটেশনালি কঠিন পাজল সমাধান করে, নেটওয়ার্ককে আক্রমণ থেকে সুরক্ষিত করে এটি ঘটতে সাহায্য করেছে।
+ইথিরিয়ামের মতো ডিসেন্ট্রালাইজড সিস্টেমে, আমাদের নিশ্চিত করতে হবে যে সবাই লেনদেনের ক্রম সম্পর্কে একমত। মাইনাররা ব্লকস তৈরি করার জন্য কম্পিউটেশনালি কঠিন পাজল সমাধান করে এটি করতে সাহায্য করত, যা নেটওয়ার্ক-কে আক্রমণ থেকে সুরক্ষিত রাখত।
-[প্রুফ-অফ-ওয়ার্ক সম্পর্কে আরও](/developers/docs/consensus-mechanisms/pow/)
+[প্রুফ-অফ-ওয়ার্ক সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pow/)
-আগে যে কেউ তাদের কম্পিউটার ব্যবহার করে ইথেরিয়াম নেটওয়ার্কে মাইনিং করতে পারত। তবে, সবাই লাভজনকভাবে ইথার (ETH) মাইনিং করতে পারত না। বেশিরভাগ ক্ষেত্রে, মাইনারদের ডেডিকেটেড কম্পিউটার হার্ডওয়্যার কিনতে হতো এবং সস্তা শক্তির উৎসের অ্যাক্সেস থাকতে হতো। গড় কম্পিউটারের মাইনিংয়ের সাথে সম্পর্কিত খরচগুলি কভার করার জন্য যথেষ্ট ব্লক রিওয়ার্ড উপার্জন করার সম্ভাবনা কম ছিল।
+আগে যে কেউ তাদের কম্পিউটার ব্যবহার করে ইথিরিয়াম নেটওয়ার্ক-এ মাইনিং করতে পারত। তবে, সবাই লাভজনকভাবে ইথার (ETH) মাইন করতে পারত না। বেশিরভাগ ক্ষেত্রে, মাইনারদের ডেডিকেটেড কম্পিউটার হার্ডওয়্যার কিনতে হতো এবং সস্তা শক্তির উৎসের অ্যাক্সেস থাকতে হতো। সাধারণ কম্পিউটারের পক্ষে মাইনিংয়ের আনুষঙ্গিক খরচ মেটানোর জন্য পর্যাপ্ত ব্লক রিওয়ার্ড অর্জন করার সম্ভাবনা কম ছিল।
### মাইনিংয়ের খরচ {#cost-of-mining}
- একটি মাইনিং রিগ তৈরি এবং রক্ষণাবেক্ষণের জন্য প্রয়োজনীয় হার্ডওয়্যারের সম্ভাব্য খরচ
-- মাইনিং রিগকে শক্তি দেওয়ার জন্য বৈদ্যুতিক খরচ
-- আপনি যদি একটি পুলে মাইনিং করতেন, তবে এই পুলগুলি সাধারণত পুল দ্বারা তৈরি প্রতিটি ব্লকের উপর একটি নির্দিষ্ট % ফি চার্জ করত
-- মাইনিং রিগকে সাপোর্ট করার জন্য প্রয়োজনীয় যন্ত্রপাতির সম্ভাব্য খরচ (ভেন্টিলেশন, শক্তি পর্যবেক্ষণ, বৈদ্যুতিক ওয়্যারিং, ইত্যাদি)
+- মাইনিং রিগ চালানোর জন্য বিদ্যুতের খরচ
+- আপনি যদি কোনো পুলে মাইনিং করতেন, তবে এই পুলগুলো সাধারণত পুল দ্বারা তৈরি প্রতিটি ব্লকের একটি নির্দিষ্ট % ফি নিত
+- মাইনিং রিগ সমর্থন করার জন্য সরঞ্জামের সম্ভাব্য খরচ (ভেন্টিলেশন, এনার্জি মনিটরিং, বৈদ্যুতিক ওয়্যারিং ইত্যাদি)
-মাইনিং লাভজনকতা আরও অন্বেষণ করতে, একটি মাইনিং ক্যালকুলেটর ব্যবহার করুন, যেমনটি [Etherscan](https://etherscan.io/ether-mining-calculator) প্রদান করে।
+মাইনিংয়ের লাভজনকতা আরও ভালোভাবে বুঝতে, একটি মাইনিং ক্যালকুলেটর ব্যবহার করুন, যেমনটি [Etherscan](https://etherscan.io/ether-mining-calculator) প্রদান করে।
-## ইথেরিয়াম লেনদেন কীভাবে মাইনিং করা হয়েছিল {#how-ethereum-transactions-were-mined}
+## ইথিরিয়াম লেনদেন কীভাবে মাইন করা হতো {#how-ethereum-transactions-were-mined}
-নিচে ইথেরিয়াম প্রুফ-অফ-ওয়ার্কে লেনদেনগুলি কীভাবে মাইনিং করা হয়েছিল তার একটি সংক্ষিপ্ত বিবরণ দেওয়া হল। ইথেরিয়াম প্রুফ-অফ-স্টেকের জন্য এই প্রক্রিয়ার একটি অনুরূপ বিবরণ [এখানে](/developers/docs/consensus-mechanisms/pos/#transaction-execution-ethereum-pos) পাওয়া যাবে।
+নিচে ইথিরিয়াম প্রুফ-অফ-ওয়ার্ক-এ লেনদেন কীভাবে মাইন করা হতো তার একটি ওভারভিউ দেওয়া হলো। ইথিরিয়াম প্রুফ-অফ-স্টেক-এর জন্য এই প্রক্রিয়ার একটি অনুরূপ বর্ণনা [এখানে](/developers/docs/consensus-mechanisms/pos/#transaction-execution-ethereum-pos) পাওয়া যাবে।
-1. একজন ব্যবহারকারী কিছু [অ্যাকাউন্টের](/developers/docs/accounts/) প্রাইভেট কী দিয়ে একটি [লেনদেন](/developers/docs/transactions/) অনুরোধ লেখেন এবং স্বাক্ষর করেন।
-2. ব্যবহারকারী কিছু [নোড](/developers/docs/nodes-and-clients/) থেকে সমগ্র ইথেরিয়াম নেটওয়ার্কে লেনদেনের অনুরোধটি ব্রডকাস্ট করেন।
-3. নতুন লেনদেনের অনুরোধ সম্পর্কে শোনার পরে, ইথেরিয়াম নেটওয়ার্কের প্রতিটি নোড তাদের স্থানীয় মেমপুলে অনুরোধটি যুক্ত করে, যা তারা শুনেছে এমন সমস্ত লেনদেনের অনুরোধের একটি তালিকা যা এখনও একটি ব্লকে ব্লকচেইনে জমা হয়নি।
-4. এক পর্যায়ে, একটি মাইনিং নোড ব্লক গ্যাস লিমিটের নিচে থেকে তারা যে [ট্রানজ্যাকশন ফি](/developers/docs/gas/) উপার্জন করে তা সর্বাধিক করার উপায়ে বেশ কয়েকটি ডজন বা শত শত লেনদেনের অনুরোধকে একটি সম্ভাব্য [ব্লকে](/developers/docs/blocks/) একত্রিত করে। তারপর মাইনিং নোড:
- 1. প্রতিটি লেনদেনের অনুরোধের বৈধতা যাচাই করে (যেমন, কেউ এমন একটি অ্যাকাউন্ট থেকে ইথার স্থানান্তর করার চেষ্টা করছে না যার জন্য তারা একটি স্বাক্ষর তৈরি করেনি, অনুরোধটি ত্রুটিপূর্ণ নয়, ইত্যাদি), এবং তারপর অনুরোধের কোড কার্যকর করে, তাদের EVM-এর স্থানীয় কপির স্টেট পরিবর্তন করে। মাইনার প্রতিটি এই ধরনের লেনদেনের অনুরোধের জন্য ট্রানজ্যাকশন ফি তাদের নিজস্ব অ্যাকাউন্টে পুরস্কার হিসেবে দেয়।
- 2. ব্লকের সমস্ত লেনদেনের অনুরোধ যাচাই এবং স্থানীয় EVM কপিতে কার্যকর করার পরে, সম্ভাব্য ব্লকের জন্য প্রুফ-অফ-ওয়ার্ক “বৈধতার শংসাপত্র” তৈরি করার প্রক্রিয়া শুরু করে।
-5. অবশেষে, একজন মাইনার একটি ব্লকের জন্য একটি শংসাপত্র তৈরি করা শেষ করবে যার মধ্যে আমাদের নির্দিষ্ট লেনদেনের অনুরোধ অন্তর্ভুক্ত থাকবে। তারপর মাইনার সম্পূর্ণ ব্লকটি ব্রডকাস্ট করে, যার মধ্যে শংসাপত্র এবং দাবি করা নতুন EVM স্টেটের একটি চেকসাম অন্তর্ভুক্ত থাকে।
-6. অন্যান্য নোড নতুন ব্লক সম্পর্কে শুনতে পায়। তারা শংসাপত্র যাচাই করে, ব্লকের সমস্ত লেনদেন নিজেরাই কার্যকর করে (আমাদের ব্যবহারকারীর দ্বারা মূলত ব্রডকাস্ট করা লেনদেন সহ), এবং যাচাই করে যে সমস্ত লেনদেন কার্যকর করার পরে তাদের নতুন EVM স্টেটের চেকসাম মাইনারের ব্লক দ্বারা দাবি করা স্টেটের চেকসামের সাথে মেলে। শুধুমাত্র তারপরেই এই নোডগুলি এই ব্লকটিকে তাদের ব্লকচেইনের লেজে যুক্ত করে এবং নতুন EVM স্টেটকে ক্যানোনিকাল স্টেট হিসাবে গ্রহণ করে।
-7. প্রতিটি নোড নতুন ব্লকের সমস্ত লেনদেন তাদের স্থানীয় অসম্পূর্ণ লেনদেন অনুরোধের মেমপুল থেকে সরিয়ে দেয়।
-8. নেটওয়ার্কে যোগদানকারী নতুন নোডগুলি আমাদের আগ্রহের লেনদেন ধারণকারী ব্লক সহ ক্রমানুসারে সমস্ত ব্লক ডাউনলোড করে। তারা একটি স্থানীয় EVM কপি শুরু করে (যা একটি ফাঁকা-স্টেট EVM হিসাবে শুরু হয়), এবং তারপরে তাদের স্থানীয় EVM কপির উপরে প্রতিটি ব্লকের প্রতিটি লেনদেন কার্যকর করার প্রক্রিয়ার মধ্য দিয়ে যায়, পথে প্রতিটি ব্লকে স্টেট চেকসাম যাচাই করে।
+1. একজন ব্যবহারকারী কোনো [একাউন্ট](/developers/docs/accounts/)-এর প্রাইভেট কি দিয়ে একটি [লেনদেন](/developers/docs/transactions/) রিকোয়েস্ট লেখেন এবং সাইন করেন।
+2. ব্যবহারকারী কোনো [নোড](/developers/docs/nodes-and-clients/) থেকে পুরো ইথিরিয়াম নেটওয়ার্ক-এ লেনদেন রিকোয়েস্টটি ব্রডকাস্ট করেন।
+3. নতুন লেনদেন রিকোয়েস্ট সম্পর্কে জানার পর, ইথিরিয়াম নেটওয়ার্ক-এর প্রতিটি নোড রিকোয়েস্টটিকে তাদের লোকাল মেমপুলে যুক্ত করে, যা হলো এমন সব লেনদেন রিকোয়েস্টের একটি তালিকা যা তারা শুনেছে কিন্তু এখনও ব্লকচেইন-এ কোনো ব্লকে যুক্ত করা হয়নি।
+4. এক পর্যায়ে, একটি মাইনিং নোড কয়েক ডজন বা শত শত লেনদেন রিকোয়েস্টকে একটি সম্ভাব্য [ব্লক](/developers/docs/blocks/)-এ একত্রিত করে, এমনভাবে যাতে তারা ব্লক গ্যাস লিমিট-এর নিচে থেকেও তাদের উপার্জিত [ট্রানজেকশন ফি](/developers/docs/gas/) সর্বাধিক করতে পারে। এরপর মাইনিং নোডটি:
+ 1. প্রতিটি লেনদেন রিকোয়েস্টের বৈধতা যাচাই করে (যেমন, কেউ এমন কোনো একাউন্ট থেকে ইথার ট্রান্সফার করার চেষ্টা করছে না যার জন্য তারা সিগনেচার প্রদান করেনি, রিকোয়েস্টটি ত্রুটিপূর্ণ নয় ইত্যাদি), এবং তারপর রিকোয়েস্টের কোড এক্সিকিউট করে, যা তাদের EVM-এর লোকাল কপির স্টেট পরিবর্তন করে। মাইনার এই ধরনের প্রতিটি লেনদেন রিকোয়েস্টের জন্য ট্রানজেকশন ফি তাদের নিজস্ব একাউন্ট-এ প্রদান করে।
+ 2. সম্ভাব্য ব্লকের জন্য প্রুফ-অফ-ওয়ার্ক "বৈধতার শংসাপত্র" তৈরির প্রক্রিয়া শুরু করে, যখন ব্লকের সমস্ত লেনদেন রিকোয়েস্ট যাচাই করা হয় এবং লোকাল EVM কপিতে এক্সিকিউট করা হয়।
+5. শেষ পর্যন্ত, একজন মাইনার একটি ব্লকের জন্য শংসাপত্র তৈরি করা শেষ করবে যার মধ্যে আমাদের নির্দিষ্ট লেনদেন রিকোয়েস্ট অন্তর্ভুক্ত রয়েছে। এরপর মাইনার সম্পূর্ণ ব্লকটি ব্রডকাস্ট করে, যার মধ্যে শংসাপত্র এবং দাবি করা নতুন EVM স্টেট-এর একটি চেকসাম অন্তর্ভুক্ত থাকে।
+6. অন্যান্য নোডগুলো নতুন ব্লক সম্পর্কে জানতে পারে। তারা শংসাপত্র যাচাই করে, ব্লকের সমস্ত লেনদেন নিজেরাই এক্সিকিউট করে (আমাদের ব্যবহারকারীর দ্বারা মূলত ব্রডকাস্ট করা লেনদেন সহ), এবং যাচাই করে যে সমস্ত লেনদেন এক্সিকিউট করার পরে তাদের নতুন EVM স্টেট-এর চেকসাম মাইনারের ব্লকের দাবি করা স্টেট-এর চেকসামের সাথে মেলে কিনা। শুধুমাত্র তখনই এই নোডগুলো এই ব্লকটিকে তাদের ব্লকচেইন-এর শেষে যুক্ত করে এবং নতুন EVM স্টেট-কে ক্যানোনিকাল স্টেট হিসেবে গ্রহণ করে।
+7. প্রতিটি নোড তাদের অপূর্ণ লেনদেন রিকোয়েস্টের লোকাল মেমপুল থেকে নতুন ব্লকের সমস্ত লেনদেন সরিয়ে দেয়।
+8. নেটওয়ার্ক-এ যুক্ত হওয়া নতুন নোডগুলো ক্রমানুসারে সমস্ত ব্লকস ডাউনলোড করে, যার মধ্যে আমাদের আগ্রহের লেনদেন থাকা ব্লকটিও অন্তর্ভুক্ত থাকে। তারা একটি লোকাল EVM কপি ইনিশিয়ালাইজ করে (যা একটি ব্ল্যাঙ্ক-স্টেট EVM হিসেবে শুরু হয়), এবং তারপর তাদের লোকাল EVM কপির ওপর প্রতিটি ব্লকের প্রতিটি লেনদেন এক্সিকিউট করার প্রক্রিয়ার মধ্য দিয়ে যায়, পথে প্রতিটি ব্লকে স্টেট চেকসাম যাচাই করে।
-প্রতিটি লেনদেন একবার মাইনিং করা হয় (একটি নতুন ব্লকে অন্তর্ভুক্ত করা হয় এবং প্রথমবারের জন্য প্রচার করা হয়), কিন্তু ক্যানোনিকাল EVM স্টেটকে এগিয়ে নেওয়ার প্রক্রিয়ায় প্রতিটি অংশগ্রহণকারী দ্বারা কার্যকর এবং যাচাই করা হয়। এটি ব্লকচেইনের একটি কেন্দ্রীয় মন্ত্রকে তুলে ধরে: **বিশ্বাস করবেন না, যাচাই করুন**।
+প্রতিটি লেনদেন একবার মাইন করা হয় (একটি নতুন ব্লকে অন্তর্ভুক্ত করা হয় এবং প্রথমবারের মতো প্রচার করা হয়), কিন্তু ক্যানোনিকাল EVM স্টেট এগিয়ে নেওয়ার প্রক্রিয়ায় প্রতিটি অংশগ্রহণকারী দ্বারা এক্সিকিউট এবং যাচাই করা হয়। এটি ব্লকচেইন-এর অন্যতম প্রধান মন্ত্রকে তুলে ধরে: **বিশ্বাস করবেন না, যাচাই করুন (Don’t trust, verify)**।
-## Ommer (আঙ্কল) ব্লক {#ommer-blocks}
+## ওমার (আঙ্কেল) ব্লকস {#ommer-blocks}
-প্রুফ-অফ-ওয়ার্কে ব্লক মাইনিং ছিল সম্ভাবনামূলক, যার মানে কখনও কখনও নেটওয়ার্ক লেটেন্সির কারণে দুটি বৈধ ব্লক একই সাথে প্রকাশিত হত। এই ক্ষেত্রে, প্রোটোকলকে দীর্ঘতম (এবং তাই সবচেয়ে "বৈধ") চেইন নির্ধারণ করতে হয়েছিল এবং প্রস্তাবিত অন্তর্ভুক্ত না হওয়া বৈধ ব্লককে আংশিকভাবে রিওয়ার্ড দিয়ে মাইনারদের প্রতি ন্যায্যতা নিশ্চিত করতে হয়েছিল। এটি নেটওয়ার্কের আরও বিকেন্দ্রীকরণকে উৎসাহিত করেছে কারণ ছোট মাইনাররা, যারা বেশি লেটেন্সির সম্মুখীন হতে পারে, তারা এখনও [ommer](/glossary/#ommer) ব্লক রিওয়ার্ডের মাধ্যমে রিটার্ন জেনারেট করতে পারত।
+প্রুফ-অফ-ওয়ার্ক-এ ব্লক মাইনিং ছিল সম্ভাব্যতামূলক, যার মানে নেটওয়ার্ক ল্যাটেন্সির কারণে মাঝে মাঝে দুটি বৈধ ব্লকস একই সাথে প্রকাশিত হতো। এই ক্ষেত্রে, প্রটোকল-কে দীর্ঘতম (এবং তাই সবচেয়ে "বৈধ") চেইন নির্ধারণ করতে হতো, পাশাপাশি প্রস্তাবিত অন্তর্ভুক্ত না হওয়া বৈধ ব্লকটিকে আংশিকভাবে পুরস্কৃত করে মাইনারদের প্রতি ন্যায্যতা নিশ্চিত করতে হতো। এটি নেটওয়ার্ক-এর আরও ডিসেন্ট্রালাইজেশন-কে উৎসাহিত করেছিল কারণ ছোট মাইনাররা, যারা বেশি ল্যাটেন্সির সম্মুখীন হতে পারে, তারাও [ওমার (ommer)](/glossary/#ommer) ব্লক রিওয়ার্ড-এর মাধ্যমে রিটার্ন তৈরি করতে পারত।
-"ommer" শব্দটি একটি প্যারেন্ট ব্লকের সহোদরের জন্য পছন্দের লিঙ্গ-নিরপেক্ষ শব্দ, তবে এটিকে কখনও কখনও "uncle" হিসাবেও উল্লেখ করা হয়। **ইথেরিয়াম প্রুফ-অফ-স্টেকে স্থানান্তরিত হওয়ার পর থেকে, ommer ব্লক আর মাইনিং করা হয় না** কারণ প্রতিটি স্লটে শুধুমাত্র একজন প্রস্তাবককে নির্বাচিত করা হয়। মাইনিং করা ommer ব্লকের [ঐতিহাসিক চার্ট](https://ycharts.com/indicators/ethereum_uncle_rate) দেখে আপনি এই পরিবর্তনটি দেখতে পারেন।
+"ওমার" শব্দটি একটি প্যারেন্ট ব্লকের ভাইবোনের জন্য পছন্দের লিঙ্গ-নিরপেক্ষ শব্দ, তবে এটিকে কখনও কখনও "আঙ্কেল" (uncle) হিসেবেও উল্লেখ করা হয়। **ইথিরিয়াম প্রুফ-অফ-স্টেক-এ স্থানান্তরিত হওয়ার পর থেকে, ওমার ব্লকস আর মাইন করা হয় না** কারণ প্রতিটি স্লটে শুধুমাত্র একজন প্রপোজার নির্বাচিত হয়। আপনি মাইন করা ওমার ব্লকস-এর [ঐতিহাসিক চার্ট](https://ycharts.com/indicators/ethereum_uncle_rate) দেখে এই পরিবর্তনটি দেখতে পারেন।
## একটি ভিজ্যুয়াল ডেমো {#a-visual-demo}
-দেখুন অস্টিন আপনাকে মাইনিং এবং প্রুফ-অফ-ওয়ার্ক ব্লকচেইন সম্পর্কে বোঝাচ্ছেন।
+অস্টিন কীভাবে মাইনিং এবং প্রুফ-অফ-ওয়ার্ক ব্লকচেইন-এর মধ্য দিয়ে নিয়ে যায় তা দেখুন।
-## মাইনিং অ্যালগরিদম {#mining-algorithm}
+## মাইনিং এ্যালগরিদম {#mining-algorithm}
-ইথেরিয়াম মেইননেট শুধুমাত্র একটি মাইনিং অ্যালগরিদম ব্যবহার করেছে - ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/)। Ethash ছিল ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/) নামে পরিচিত একটি আসল R&D অ্যালগরিদমের উত্তরসূরি।
+ইথিরিয়াম মেইননেট শুধুমাত্র একটি মাইনিং এ্যালগরিদম ব্যবহার করেছে - ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/)। Ethash ছিল একটি মূল R&D এ্যালগরিদম-এর উত্তরসূরি যা ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/) নামে পরিচিত।
-[মাইনিং অ্যালগরিদম সম্পর্কে আরও](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/)।
+[মাইনিং এ্যালগরিদম সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/)।
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
- [গ্যাস](/developers/docs/gas/)
- [EVM](/developers/docs/evm/)
-- [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/)
+- [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
index c97d70a50e6..4ea4dbfa52a 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -1,29 +1,29 @@
---
-title: Dagger-Hashimoto
-description: "Dagger-Hashimoto অ্যালগরিদমের একটি বিশদ আলোচনা।"
+title: ড্যাগার-হাশিমোতো
+description: ড্যাগার-হাশিমোতো এ্যালগরিদম সম্পর্কে একটি বিস্তারিত আলোচনা।
lang: bn
---
-Dagger-Hashimoto ছিল Ethereum-এর মাইনিং অ্যালগরিদমের জন্য মূল গবেষণা বাস্তবায়ন এবং স্পেসিফিকেশন। Dagger-Hashimoto [Ethash](#ethash) দ্বারা প্রতিস্থাপিত হয়েছিল। ১৫ই সেপ্টেম্বর ২০২২-এ [The Merge](/roadmap/merge/)-এ মাইনিং সম্পূর্ণভাবে বন্ধ করে দেওয়া হয়েছিল। তারপর থেকে, Ethereum পরিবর্তে একটি [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) মেকানিজম ব্যবহার করে সুরক্ষিত হয়েছে। এই পৃষ্ঠাটি ঐতিহাসিক আগ্রহের জন্য - এখানে থাকা তথ্যগুলি মার্জ-পরবর্তী Ethereum-এর জন্য আর প্রাসঙ্গিক নয়।
+ড্যাগার-হাশিমোতো ছিল ইথিরিয়ামের মাইনিং এ্যালগরিদমের মূল গবেষণা বাস্তবায়ন এবং স্পেসিফিকেশন। ড্যাগার-হাশিমোতো পরবর্তীতে [Ethash](#ethash) দ্বারা প্রতিস্থাপিত হয়। ১৫ই সেপ্টেম্বর ২০২২-এ [The Merge](/roadmap/merge/)-এর মাধ্যমে মাইনিং সম্পূর্ণভাবে বন্ধ করে দেওয়া হয়। এরপর থেকে, ইথিরিয়ামকে সুরক্ষিত করার জন্য এর পরিবর্তে একটি [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) মেকানিজম ব্যবহার করা হচ্ছে। এই পেজটি ঐতিহাসিক আগ্রহের জন্য - এখানকার তথ্যগুলো মার্জ-পরবর্তী ইথিরিয়ামের জন্য আর প্রাসঙ্গিক নয়।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [প্রুফ-অফ-ওয়ার্ক কনসেন্সাস](/developers/docs/consensus-mechanisms/pow), [মাইনিং](/developers/docs/consensus-mechanisms/pow/mining), এবং [মাইনিং অ্যালগরিদম](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms) সম্পর্কে পড়ার পরামর্শ দিই।
+এই পেজটি ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [প্রুফ-অফ-ওয়ার্ক কনসেন্সাস](/developers/docs/consensus-mechanisms/pow), [মাইনিং](/developers/docs/consensus-mechanisms/pow/mining), এবং [মাইনিং এ্যালগরিদম](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms) সম্পর্কে পড়ে নিন।
-## Dagger-Hashimoto {#dagger-hashimoto}
+## ড্যাগার-হাশিমোতো {#dagger-hashimoto}
-Dagger-Hashimoto দুটি লক্ষ্য পূরণের লক্ষ্য রাখে:
+ড্যাগার-হাশিমোতো দুটি লক্ষ্য পূরণের উদ্দেশ্যে তৈরি:
-1. **ASIC-প্রতিরোধ**: অ্যালগরিদমের জন্য বিশেষ হার্ডওয়্যার তৈরির সুবিধা যতটা সম্ভব কম হওয়া উচিত।
-2. **লাইট ক্লায়েন্ট যাচাইযোগ্যতা**: একটি ব্লক একটি লাইট ক্লায়েন্ট দ্বারা দক্ষতার সাথে যাচাইযোগ্য হওয়া উচিত।
+1. **ASIC-প্রতিরোধ (ASIC-resistance)**: এ্যালগরিদমের জন্য বিশেষায়িত হার্ডওয়্যার তৈরি করার সুবিধা যতটা সম্ভব কম হওয়া উচিত
+2. **লাইট ক্লায়েন্ট যাচাইযোগ্যতা (Light client verifiability)**: একটি ব্লক একটি লাইট ক্লায়েন্ট দ্বারা দক্ষতার সাথে যাচাইযোগ্য হওয়া উচিত।
-একটি অতিরিক্ত পরিবর্তনের সাথে, আমরা আরও নির্দিষ্ট করি যে ইচ্ছা হলে কীভাবে তৃতীয় লক্ষ্য পূরণ করা যায়, তবে অতিরিক্ত জটিলতার মূল্যে:
+একটি অতিরিক্ত পরিবর্তনের মাধ্যমে, আমরা প্রয়োজনে কীভাবে তৃতীয় একটি লক্ষ্য পূরণ করা যায় তাও নির্দিষ্ট করি, তবে এর জন্য অতিরিক্ত জটিলতা স্বীকার করতে হবে:
-**সম্পূর্ণ চেইন স্টোরেজ**: মাইনিংয়ের জন্য সম্পূর্ণ ব্লকচেইন স্টেটের স্টোরেজ প্রয়োজন হবে (Ethereum স্টেট ট্রাই-এর অনিয়মিত কাঠামোর কারণে, আমরা আশা করি যে কিছু ছাঁটাই সম্ভব হবে, বিশেষ করে কিছু প্রায়শই ব্যবহৃত চুক্তির ক্ষেত্রে, তবে আমরা এটি কমানো করতে চাই)।
+**সম্পূর্ণ চেইন স্টোরেজ (Full chain storage)**: মাইনিং এর জন্য সম্পূর্ণ ব্লকচেইন স্টেট সংরক্ষণ করা প্রয়োজন (ইথিরিয়াম স্টেট ট্রাই-এর অনিয়মিত কাঠামোর কারণে, আমরা আশা করি যে কিছু প্রুনিং বা ছাঁটাই সম্ভব হবে, বিশেষ করে কিছু বহুল ব্যবহৃত কন্ট্রাক্টের ক্ষেত্রে, তবে আমরা এটি ন্যূনতম রাখতে চাই)।
-## DAG জেনারেশন {#dag-generation}
+## ড্যাগ (DAG) জেনারেশন {#dag-generation}
-অ্যালগরিদমের জন্য কোডটি নিচে পাইথনে সংজ্ঞায়িত করা হবে। প্রথমে, আমরা নির্দিষ্ট নির্ভুলতার আনসাইন্ড পূর্ণসংখ্যাকে স্ট্রিং-এ মার্শালিং করার জন্য `encode_int` প্রদান করি। এর বিপরীতটিও দেওয়া হল:
+এ্যালগরিদমের কোডটি নিচে পাইথনে সংজ্ঞায়িত করা হবে। প্রথমে, আমরা নির্দিষ্ট নির্ভুলতার আনসাইনড ইন্টিজারগুলোকে স্ট্রিংয়ে রূপান্তর করার জন্য `encode_int` দিচ্ছি। এর বিপরীতটিও দেওয়া হলো:
```python
NUM_BITS = 512
@@ -45,7 +45,7 @@ def decode_int(s):
return x
```
-আমরা এরপরে ধরে নিই যে `sha3` একটি ফাংশন যা একটি পূর্ণসংখ্যা নেয় এবং একটি পূর্ণসংখ্যা আউটপুট দেয়, এবং `dbl_sha3` একটি ডাবল-sha3 ফাংশন; যদি এই রেফারেন্স কোডটিকে একটি বাস্তবায়নে রূপান্তর করা হয় তবে ব্যবহার করুন:
+এরপর আমরা ধরে নিচ্ছি যে `sha3` হলো এমন একটি ফাংশন যা একটি ইন্টিজার ইনপুট নেয় এবং একটি ইন্টিজার আউটপুট দেয়, এবং `dbl_sha3` হলো একটি ডাবল-sha3 ফাংশন; যদি এই রেফারেন্স কোডটিকে একটি বাস্তবায়নে রূপান্তর করতে চান তবে ব্যবহার করুন:
```python
from pyethereum import utils
@@ -62,31 +62,31 @@ def dbl_sha3(x):
### প্যারামিটার {#parameters}
-অ্যালগরিদমের জন্য ব্যবহৃত প্যারামিটারগুলি হল:
+এ্যালগরিদমের জন্য ব্যবহৃত প্যারামিটারগুলো হলো:
```python
-SAFE_PRIME_512 = 2**512 - 38117 # Largest Safe Prime less than 2**512
+SAFE_PRIME_512 = 2**512 - 38117 # 2**512 এর চেয়ে ছোট সবচেয়ে বড় সেফ প্রাইম
params = {
- "n": 4000055296 * 8 // NUM_BITS, # Size of the dataset (4 Gigabytes); MUST BE MULTIPLE OF 65536
- "n_inc": 65536, # Increment in value of n per period; MUST BE MULTIPLE OF 65536
- # with epochtime=20000 gives 882 MB growth per year
- "cache_size": 2500, # Size of the light client's cache (can be chosen by light
- # client; not part of the algo spec)
- "diff": 2**14, # Difficulty (adjusted during block evaluation)
- "epochtime": 100000, # Length of an epoch in blocks (how often the dataset is updated)
- "k": 1, # Number of parents of a node
- "w": w, # Used for modular exponentiation hashing
- "accesses": 200, # Number of dataset accesses during hashimoto
- "P": SAFE_PRIME_512 # Safe Prime for hashing and random number generation
+ "n": 4000055296 * 8 // NUM_BITS, # ডেটাসেটের আকার (৪ গিগাবাইট); অবশ্যই ৬৫৫৩৬ এর গুণিতক হতে হবে
+ "n_inc": 65536, # প্রতি পিরিয়ডে n এর মান বৃদ্ধি; অবশ্যই ৬৫৫৩৬ এর গুণিতক হতে হবে
+ # epochtime=20000 এর সাথে প্রতি বছর ৮৮২ মেগাবাইট (MB) বৃদ্ধি পায়
+ "cache_size": 2500, # লাইট ক্লায়েন্টের ক্যাশের আকার (লাইট দ্বারা নির্বাচন করা যেতে পারে
+ # ক্লায়েন্ট; অ্যালগো স্পেকের অংশ নয়)
+ "diff": 2**14, # ডিফিকাল্টি (ব্লক মূল্যায়নের সময় সমন্বয় করা হয়)
+ "epochtime": 100000, # ব্লকে একটি ইপকের দৈর্ঘ্য (কত ঘন ঘন ডেটাসেট আপডেট করা হয়)
+ "k": 1, # একটি নোডের প্যারেন্টের সংখ্যা
+ "w": w, # মডুলার এক্সপোনেনসিয়েশন হ্যাসিং এর জন্য ব্যবহৃত হয়
+ "accesses": 200, # হ্যাসিমোতো এর সময় ডেটাসেট অ্যাক্সেসের সংখ্যা
+ "P": SAFE_PRIME_512 # হ্যাসিং এবং র্যান্ডম নম্বর জেনারেশনের জন্য সেফ প্রাইম
}
```
-`P` এই ক্ষেত্রে এমন একটি প্রাইম যা এমনভাবে বেছে নেওয়া হয়েছে যে `log₂(P)` 512-এর চেয়ে সামান্য কম, যা আমাদের সংখ্যাগুলিকে উপস্থাপন করার জন্য আমরা যে 512 বিট ব্যবহার করছি তার সাথে সঙ্গতিপূর্ণ। লক্ষ্য করুন যে DAG-এর শুধুমাত্র শেষার্ধটি সঞ্চয় করা প্রয়োজন, তাই ডি-ফ্যাক্টো RAM-এর প্রয়োজনীয়তা 1 GB থেকে শুরু হয় এবং প্রতি বছর 441 MB বৃদ্ধি পায়।
+এই ক্ষেত্রে `P` হলো এমন একটি মৌলিক সংখ্যা (prime) যা এমনভাবে বেছে নেওয়া হয়েছে যেন `log₂(P)` ৫১২-এর চেয়ে সামান্য কম হয়, যা আমাদের সংখ্যাগুলোকে উপস্থাপন করতে ব্যবহৃত ৫১২ বিটের সাথে মিলে যায়। মনে রাখবেন যে ড্যাগ (DAG)-এর শুধুমাত্র শেষ অর্ধেক অংশটি সংরক্ষণ করা প্রয়োজন, তাই ডি-ফ্যাক্টো RAM-এর প্রয়োজনীয়তা 1 GB থেকে শুরু হয় এবং প্রতি বছর 441 MB করে বৃদ্ধি পায়।
-### ডেগার গ্রাফ বিল্ডিং {#dagger-graph-building}
+### ড্যাগার গ্রাফ তৈরি {#dagger-graph-building}
-ডেগার গ্রাফ বিল্ডিং প্রিমিটিভটি নিম্নরূপ সংজ্ঞায়িত করা হয়েছে:
+ড্যাগার গ্রাফ তৈরির প্রাথমিক রূপটি নিচে সংজ্ঞায়িত করা হলো:
```python
def produce_dag(params, seed, length):
@@ -101,15 +101,15 @@ def produce_dag(params, seed, length):
return o
```
-মূলত, এটি একটি গ্রাফকে একটি একক নোড, `sha3(seed)` হিসাবে শুরু করে এবং সেখান থেকে এলোমেলো পূর্ববর্তী নোডের উপর ভিত্তি করে ক্রমানুসারে অন্যান্য নোড যুক্ত করা শুরু করে। যখন একটি নতুন নোড তৈরি করা হয়, তখন `i`-এর চেয়ে কম কিছু সূচক এলোমেলোভাবে নির্বাচন করার জন্য সিডের একটি মডুলার পাওয়ার গণনা করা হয় (উপরে `x % i` ব্যবহার করে), এবং সেই সূচকে থাকা নোডগুলির মানগুলি একটি গণনায় ব্যবহার করা হয় `x`-এর জন্য একটি নতুন মান তৈরি করতে, যা পরে একটি ছোট প্রুফ অফ ওয়ার্ক ফাংশনে (XOR-এর উপর ভিত্তি করে) ফিড করা হয় যাতে অবশেষে সূচক `i`-তে গ্রাফের মান তৈরি করা যায়। এই বিশেষ ডিজাইনের পিছনে যুক্তি হল DAG-এর অনুক্রমিক অ্যাক্সেস জোর করা; DAG-এর পরবর্তী মান যা অ্যাক্সেস করা হবে তা বর্তমান মান না জানা পর্যন্ত নির্ধারণ করা যাবে না। অবশেষে, মডুলার এক্সপোনেনশিয়েশন ফলাফলটিকে আরও হ্যাস করে।
+মূলত, এটি একটি গ্রাফকে একটি একক নোড, `sha3(seed)` হিসেবে শুরু করে এবং সেখান থেকে পূর্ববর্তী র্যান্ডম নোডগুলোর ওপর ভিত্তি করে ক্রমান্বয়ে অন্যান্য নোড যোগ করতে থাকে। যখন একটি নতুন নোড তৈরি হয়, তখন `i`-এর চেয়ে ছোট কিছু সূচক (index) র্যান্ডমভাবে নির্বাচন করার জন্য সিডের একটি মডুলার পাওয়ার গণনা করা হয় (উপরে `x % i` ব্যবহার করে), এবং সেই সূচকগুলোতে থাকা নোডগুলোর মান ব্যবহার করে `x`-এর জন্য একটি নতুন মান তৈরি করার হিসাব করা হয়, যা পরে একটি ছোট প্রুফ-অফ-ওয়ার্ক ফাংশনে (XOR-এর ওপর ভিত্তি করে) পাঠানো হয় যাতে শেষ পর্যন্ত `i` সূচকে গ্রাফের মান তৈরি করা যায়। এই নির্দিষ্ট ডিজাইনের পেছনের যুক্তি হলো ড্যাগ (DAG)-এর সিকোয়েন্সিয়াল অ্যাক্সেস বাধ্য করা; বর্তমান মান জানা না যাওয়া পর্যন্ত ড্যাগ-এর পরবর্তী কোন মানটি অ্যাক্সেস করা হবে তা নির্ধারণ করা যায় না। সবশেষে, মডুলার এক্সপোনেনসিয়েশন ফলাফলটিকে আরও হ্যাস করে।
-এই অ্যালগরিদম সংখ্যা তত্ত্বের বেশ কয়েকটি ফলাফলের উপর নির্ভর করে। আলোচনার জন্য নীচের পরিশিষ্ট দেখুন।
+এই এ্যালগরিদমটি সংখ্যাতত্ত্বের (number theory) বেশ কয়েকটি ফলাফলের ওপর নির্ভর করে। আলোচনার জন্য নিচের পরিশিষ্টটি দেখুন।
-## লাইট ক্লায়েন্ট মূল্যায়ন {#light-client-evaluation}
+## লাইট ক্লায়েন্ট মূল্যায়ন {#light-client-evaluation}
-উপরের গ্রাফ নির্মাণটি গ্রাফের প্রতিটি নোডকে শুধুমাত্র অল্প সংখ্যক নোডের একটি সাবট্রি গণনা করে এবং শুধুমাত্র অল্প পরিমাণে সহায়ক মেমরির প্রয়োজন করে পুনর্গঠন করার অনুমতি দেওয়ার উদ্দেশ্যে করা হয়েছে। লক্ষ্য করুন যে k=1 হলে, সাবট্রিটি DAG-এর প্রথম উপাদান পর্যন্ত যাওয়া মানগুলির একটি চেইন মাত্র।
+উপরের গ্রাফ নির্মাণের উদ্দেশ্য হলো গ্রাফের প্রতিটি নোডকে শুধুমাত্র অল্প সংখ্যক নোডের একটি সাবট্রি গণনা করে পুনর্গঠন করার সুযোগ দেওয়া এবং এর জন্য শুধুমাত্র অল্প পরিমাণ সহায়ক মেমরি প্রয়োজন হয়। মনে রাখবেন যে k=1 হলে, সাবট্রিটি শুধুমাত্র ড্যাগ (DAG)-এর প্রথম উপাদান পর্যন্ত যাওয়া মানগুলোর একটি চেইন।
-DAG-এর জন্য লাইট ক্লায়েন্ট কম্পিউটিং ফাংশনটি নিম্নরূপ কাজ করে:
+ড্যাগ (DAG)-এর জন্য লাইট ক্লায়েন্ট কম্পিউটিং ফাংশনটি নিচের মতো কাজ করে:
```python
def quick_calc(params, seed, p):
@@ -131,13 +131,13 @@ def quick_calc(params, seed, p):
return quick_calc_cached(p)
```
-মূলত, এটি উপরের অ্যালগরিদমের একটি পুনর্লিখন যা সম্পূর্ণ DAG-এর জন্য মান গণনা করার লুপটি সরিয়ে দেয় এবং পূর্ববর্তী নোড লুকআপকে একটি পুনরাবৃত্তিমূলক কল বা একটি ক্যাশে লুকআপ দিয়ে প্রতিস্থাপন করে। লক্ষ্য করুন যে `k=1`-এর জন্য ক্যাশে অপ্রয়োজনীয়, যদিও একটি আরও অপ্টিমাইজেশান আসলে DAG-এর প্রথম কয়েক হাজার মান প্রিকম্পিউট করে এবং সেটিকে গণনার জন্য একটি স্ট্যাটিক ক্যাশে হিসাবে রাখে; এর একটি কোড বাস্তবায়নের জন্য পরিশিষ্ট দেখুন।
+মূলত, এটি উপরের এ্যালগরিদমের একটি পুনর্লিখন যা সম্পূর্ণ ড্যাগ (DAG)-এর মান গণনা করার লুপটি সরিয়ে দেয় এবং পূর্ববর্তী নোড লুকআপকে একটি রিকার্সিভ কল বা ক্যাশ লুকআপ দিয়ে প্রতিস্থাপন করে। মনে রাখবেন যে `k=1`-এর জন্য ক্যাশ অপ্রয়োজনীয়, যদিও আরও অপ্টিমাইজেশনের জন্য ড্যাগ-এর প্রথম কয়েক হাজার মান আগে থেকেই গণনা করে রাখা হয় এবং গণনার জন্য সেটিকে একটি স্ট্যাটিক ক্যাশ হিসেবে রাখা হয়; এর কোড বাস্তবায়নের জন্য পরিশিষ্টটি দেখুন।
-## DAG-এর ডাবল বাফার {#double-buffer}
+## ড্যাগ (DAG)-এর ডাবল বাফার {#double-buffer}
-একটি সম্পূর্ণ ক্লায়েন্টে, উপরের সূত্র দ্বারা উৎপাদিত 2টি DAG-এর একটি [_ডাবল বাফার_](https://wikipedia.org/wiki/Multiple_buffering) ব্যবহার করা হয়। ধারণাটি হল যে উপরের প্যারাম অনুযায়ী প্রতি `epochtime` সংখ্যক ব্লক অন্তর DAG তৈরি করা হয়। ক্লায়েন্ট সর্বশেষ উৎপাদিত DAG ব্যবহার করার পরিবর্তে, এটি পূর্ববর্তীটি ব্যবহার করে। এর সুবিধা হল এটি সময়ের সাথে সাথে DAG-গুলিকে প্রতিস্থাপন করার অনুমতি দেয় এমন একটি ধাপ অন্তর্ভুক্ত করার প্রয়োজন ছাড়াই যেখানে মাইনারদের হঠাৎ করে সমস্ত ডেটা পুনরায় গণনা করতে হবে। অন্যথায়, নিয়মিত বিরতিতে চেইন প্রক্রিয়াকরণে একটি আকস্মিক অস্থায়ী মন্দার সম্ভাবনা রয়েছে এবং নাটকীয়ভাবে কেন্দ্রীকরণ বৃদ্ধি পায়। এইভাবে সমস্ত ডেটা পুনরায় গণনা করার আগে সেই কয়েক মিনিটের মধ্যে 51% আক্রমণের ঝুঁকি থাকে।
+একটি ফুল ক্লায়েন্ট-এ, উপরের সূত্র দ্বারা উৎপাদিত ২টি ড্যাগ (DAG)-এর একটি [_ডাবল বাফার_](https://wikipedia.org/wiki/Multiple_buffering) ব্যবহার করা হয়। ধারণাটি হলো উপরের প্যারামিটার অনুযায়ী প্রতি `epochtime` সংখ্যক ব্লকস-এ ড্যাগ তৈরি হয়। ক্লায়েন্ট সর্বশেষ উৎপাদিত ড্যাগ ব্যবহার করার পরিবর্তে, এর আগেরটি ব্যবহার করে। এর সুবিধা হলো এটি সময়ের সাথে সাথে ড্যাগগুলোকে প্রতিস্থাপন করার সুযোগ দেয়, যেখানে মাইনারদের হঠাৎ করে সমস্ত ডেটা পুনরায় গণনা করার কোনো ধাপ অন্তর্ভুক্ত করার প্রয়োজন হয় না। অন্যথায়, নিয়মিত বিরতিতে চেইন প্রসেসিংয়ে হঠাৎ করে অস্থায়ী ধীরগতি এবং নাটকীয়ভাবে কেন্দ্রীকরণ বৃদ্ধির সম্ভাবনা থাকে। ফলে সমস্ত ডেটা পুনরায় গণনা করার আগের কয়েক মিনিটের মধ্যে ৫১% এ্যাটাক-এর ঝুঁকি থাকে।
-একটি ব্লকের জন্য কাজ গণনা করতে ব্যবহৃত DAG-এর সেট তৈরি করতে ব্যবহৃত অ্যালগরিদমটি নিম্নরূপ:
+একটি ব্লক-এর কাজ গণনা করতে ব্যবহৃত ড্যাগগুলোর সেট তৈরি করার এ্যালগরিদমটি নিচে দেওয়া হলো:
```python
def get_prevhash(n):
@@ -164,7 +164,7 @@ def get_daggerset(params, block):
dagsz = get_dagsize(params, block)
seedset = get_seedset(params, block)
if seedset["front_hash"] <= 0:
- # No back buffer is possible, just make front buffer
+ # কোনো ব্যাক বাফার সম্ভব নয়, শুধু ফ্রন্ট বাফার তৈরি করুন
return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
"block_number": 0}}
else:
@@ -174,9 +174,9 @@ def get_daggerset(params, block):
"block_number": seedset["back_number"]}}
```
-## হ্যাশিমোটো {#hashimoto}
+## হাশিমোতো {#hashimoto}
-আসল হ্যাশিমোটোর পিছনের ধারণাটি হল ব্লকচেইনকে একটি ডেটাসেট হিসাবে ব্যবহার করা, একটি গণনা সম্পাদন করা যা ব্লকচেইন থেকে N সূচক নির্বাচন করে, সেই সূচকগুলিতে লেনদেন সংগ্রহ করে, এই ডেটার একটি XOR সম্পাদন করে এবং ফলাফলের হ্যাস প্রদান করে। থ্যাডিউস ড্রায়জার আসল অ্যালগরিদম, সামঞ্জস্যের জন্য পাইথনে অনূদিত, নিম্নরূপ:
+মূল হাশিমোতোর পেছনের ধারণাটি হলো ব্লকচেইন-কে একটি ডেটাসেট হিসেবে ব্যবহার করা, এমন একটি গণনা করা যা ব্লকচেইন থেকে N সংখ্যক সূচক নির্বাচন করে, সেই সূচকগুলোতে থাকা লেনদেন-গুলো সংগ্রহ করে, এই ডেটার একটি XOR সম্পাদন করে এবং ফলাফলের হ্যাস ফেরত দেয়। থাডিয়াস ড্রায়ার (Thaddeus Dryja) মূল এ্যালগরিদমটি, সামঞ্জস্যের জন্য পাইথনে অনুবাদ করা হয়েছে, যা নিচে দেওয়া হলো:
```python
def orig_hashimoto(prev_hash, merkle_root, list_of_transactions, nonce):
@@ -189,7 +189,7 @@ def orig_hashimoto(prev_hash, merkle_root, list_of_transactions, nonce):
return txid_mix ^ (nonce << 192)
```
-দুর্ভাগ্যবশত, যদিও হ্যাশিমোটোকে RAM হার্ড হিসাবে বিবেচনা করা হয়, এটি 256-বিট গাণিতিকের উপর নির্ভর করে, যার যথেষ্ট গণনামূলক ওভারহেড রয়েছে। যাইহোক, Dagger-Hashimoto এই সমস্যাটি সমাধান করার জন্য তার ডেটাসেটকে ইন্ডেক্স করার সময় শুধুমাত্র সর্বনিম্ন গুরুত্বপূর্ণ 64 বিট ব্যবহার করে।
+দুর্ভাগ্যবশত, যদিও হাশিমোতোকে RAM হার্ড হিসেবে বিবেচনা করা হয়, এটি 256-বিট পাটিগণিতের ওপর নির্ভর করে, যার উল্লেখযোগ্য কম্পিউটেশনাল ওভারহেড রয়েছে। তবে, ড্যাগার-হাশিমোতো এই সমস্যা সমাধানের জন্য এর ডেটাসেট ইনডেক্স করার সময় শুধুমাত্র সবচেয়ে কম গুরুত্বপূর্ণ (least significant) 64 বিট ব্যবহার করে।
```python
def hashimoto(dag, dagsize, params, header, nonce):
@@ -200,7 +200,7 @@ def hashimoto(dag, dagsize, params, header, nonce):
return dbl_sha3(mix)
```
-ডাবল SHA3-এর ব্যবহার জিরো-ডেটা, প্রায়-তাত্ক্ষণিক প্রাক-যাচাইকরণের একটি ফর্মের অনুমতি দেয়, শুধুমাত্র এটি যাচাই করে যে একটি সঠিক মধ্যবর্তী মান প্রদান করা হয়েছিল। প্রুফ-অফ-ওয়ার্কের এই বাইরের লেয়ারটি অত্যন্ত ASIC-বান্ধব এবং মোটামুটি দুর্বল, তবে এটি DDoS-কে আরও কঠিন করার জন্য বিদ্যমান কারণ একটি ব্লক তৈরি করার জন্য সেই অল্প পরিমাণ কাজ অবশ্যই করতে হবে যা অবিলম্বে বাতিল করা হবে না। এখানে লাইট-ক্লায়েন্ট সংস্করণটি রয়েছে:
+ডাবল SHA3-এর ব্যবহার এক ধরণের জিরো-ডেটা, প্রায়-তাৎক্ষণিক প্রি-ভেরিফিকেশনের সুযোগ দেয়, যা শুধুমাত্র যাচাই করে যে একটি সঠিক মধ্যবর্তী মান প্রদান করা হয়েছিল। প্রুফ-অফ-ওয়ার্ক-এর এই বাইরের স্তরটি অত্যন্ত ASIC-বান্ধব এবং বেশ দুর্বল, তবে এটি DDoS-কে আরও কঠিন করার জন্য বিদ্যমান, কারণ একটি ব্লক তৈরি করতে সেই সামান্য পরিমাণ কাজ অবশ্যই করতে হবে যা তাৎক্ষণিকভাবে প্রত্যাখ্যাত হবে না। নিচে লাইট-ক্লায়েন্ট সংস্করণটি দেওয়া হলো:
```python
def quick_hashimoto(seed, dagsize, params, header, nonce):
@@ -213,7 +213,7 @@ def quick_hashimoto(seed, dagsize, params, header, nonce):
## মাইনিং এবং যাচাইকরণ {#mining-and-verifying}
-এখন, আসুন আমরা সবকিছু একসাথে মাইনিং অ্যালগরিদমে রাখি:
+এখন, চলুন সবকিছু একসাথে করে মাইনিং এ্যালগরিদম-এ রূপ দিই:
```python
def mine(daggerset, params, block):
@@ -230,7 +230,7 @@ def mine(daggerset, params, block):
return nonce
```
-এখানে যাচাইকরণ অ্যালগরিদমটি রয়েছে:
+নিচে যাচাইকরণ এ্যালগরিদমটি দেওয়া হলো:
```python
def verify(daggerset, params, block, nonce):
@@ -239,7 +239,7 @@ def verify(daggerset, params, block, nonce):
return result * params["diff"] < 2**256
```
-লাইট-ক্লায়েন্ট বন্ধুত্বপূর্ণ যাচাইকরণ:
+লাইট-ক্লায়েন্ট বান্ধব যাচাইকরণ:
```python
def light_verify(params, header, nonce):
@@ -249,57 +249,57 @@ def light_verify(params, header, nonce):
return result * params["diff"] < 2**256
```
-এছাড়াও, মনে রাখবেন যে Dagger-Hashimoto ব্লক হেডারের উপর অতিরিক্ত প্রয়োজনীয়তা আরোপ করে:
+এছাড়াও, মনে রাখবেন যে ড্যাগার-হাশিমোতো ব্লক হেডারের ওপর অতিরিক্ত প্রয়োজনীয়তা আরোপ করে:
-- দুই-স্তরীয় যাচাইকরণের কাজ করার জন্য, একটি ব্লক হেডারে অবশ্যই ননস এবং মধ্যবর্তী মান উভয়ই প্রাক-sha3 থাকতে হবে।
-- কোথাও, একটি ব্লক হেডারকে অবশ্যই বর্তমান সিডসেটের sha3 সংরক্ষণ করতে হবে।
+- দুই-স্তরের যাচাইকরণ কাজ করার জন্য, একটি ব্লক হেডারে অবশ্যই নন্স এবং মধ্যবর্তী মান pre-sha3 উভয়ই থাকতে হবে
+- কোনো এক জায়গায়, একটি ব্লক হেডারকে অবশ্যই বর্তমান সিডসেটের sha3 সংরক্ষণ করতে হবে
## আরও পড়ুন {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি সম্পাদনা করুন এবং এটি যোগ করুন!_
## পরিশিষ্ট {#appendix}
-উপরে উল্লিখিত হিসাবে, DAG প্রজন্মের জন্য ব্যবহৃত RNG সংখ্যা তত্ত্বের কিছু ফলাফলের উপর নির্ভর করে। প্রথমত, আমরা নিশ্চিত করি যে লেহমার আরএনজি যা `picker` ভেরিয়েবলের ভিত্তি তার একটি বিস্তৃত সময়কাল রয়েছে। দ্বিতীয়ত, আমরা দেখাই যে `pow(x,3,P)` `x`-কে `1` বা `P-1`-এ ম্যাপ করবে না যদি `x ∈ [2,P-2]` দিয়ে শুরু করা হয়। অবশেষে, আমরা দেখাই যে হ্যাশিং ফাংশন হিসাবে ব্যবহার করা হলে `pow(x,3,P)`-এর সংঘর্ষের হার কম থাকে।
+উপরে যেমন উল্লেখ করা হয়েছে, ড্যাগ (DAG) জেনারেশনের জন্য ব্যবহৃত RNG সংখ্যাতত্ত্বের কিছু ফলাফলের ওপর নির্ভর করে। প্রথমত, আমরা এই নিশ্চয়তা প্রদান করি যে লেহমার (Lehmer) RNG, যা `picker` ভেরিয়েবলের ভিত্তি, তার একটি বিস্তৃত পর্যায় (wide period) রয়েছে। দ্বিতীয়ত, আমরা দেখাই যে `pow(x,3,P)` `x`-কে `1` বা `P-1`-এ ম্যাপ করবে না, যদি শুরুতে `x ∈ [2,P-2]` হয়। সবশেষে, আমরা দেখাই যে `pow(x,3,P)`-কে একটি হ্যাসিং ফাংশন হিসেবে বিবেচনা করা হলে এর কলিশন রেট (collision rate) কম হয়।
-### লেহমার র্যান্ডম নম্বর জেনারেটর {#lehmer-random-number}
+### লেহমার র্যান্ডম নম্বর জেনারেটর {#lehmer-random-number}
-যদিও `produce_dag` ফাংশনটিকে নিরপেক্ষ র্যান্ডম সংখ্যা তৈরি করতে হবে না, একটি সম্ভাব্য হুমকি হল `seed**i % P` শুধুমাত্র মুষ্টিমেয় কিছু মান নেয়। এটি প্যাটার্নটি চিনতে পারা মাইনারদের জন্য একটি সুবিধা প্রদান করতে পারে যারা তা করে না।
+যদিও `produce_dag` ফাংশনটির আনবায়াসড (unbiased) র্যান্ডম নম্বর তৈরি করার প্রয়োজন নেই, একটি সম্ভাব্য হুমকি হলো `seed**i % P` শুধুমাত্র কয়েকটি মান গ্রহণ করে। এটি সেই মাইনারদের সুবিধা দিতে পারে যারা প্যাটার্নটি চিনতে পারে, তাদের তুলনায় যারা পারে না।
-এটি এড়াতে, সংখ্যা তত্ত্বের একটি ফলাফলের সাহায্য নেওয়া হয়। একটি [_সেফ প্রাইম_](https://en.wikipedia.org/wiki/Safe_prime)-কে একটি প্রাইম `P` হিসাবে সংজ্ঞায়িত করা হয় যাতে `(P-1)/2`ও প্রাইম হয়। [গুণক গ্রুপ](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ`-এর একটি সদস্য `x`-এর _ক্রম_ কে ন্যূনতম `m` হিসাবে সংজ্ঞায়িত করা হয় যেমন xᵐ mod P ≡ 1
-এই সংজ্ঞাগুলি দেওয়া হলে, আমরা পাই:
+এটি এড়ানোর জন্য, সংখ্যাতত্ত্বের একটি ফলাফলের আশ্রয় নেওয়া হয়। একটি [_সেফ প্রাইম (Safe Prime)_](https://en.wikipedia.org/wiki/Safe_prime)-কে এমন একটি মৌলিক সংখ্যা `P` হিসেবে সংজ্ঞায়িত করা হয় যার জন্য `(P-1)/2`-ও একটি মৌলিক সংখ্যা। [মাল্টিপ্লিকেটিভ গ্রুপ (multiplicative group)](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ`-এর একটি সদস্য `x`-এর _অর্ডার (order)_-কে ন্যূনতম `m` হিসেবে সংজ্ঞায়িত করা হয় যাতে xᵐ mod P ≡ 1
হয়।
+এই সংজ্ঞাগুলোর ওপর ভিত্তি করে, আমরা পাই:
-> পর্যবেক্ষণ ১। ধরা যাক, `x` একটি সেফ প্রাইম `P`-এর জন্য গুণক গ্রুপ `ℤ/Pℤ`-এর একটি সদস্য। যদি `x mod P ≠ 1 mod P` এবং `x mod P ≠ P-1 mod P` হয়, তাহলে `x`-এর ক্রম হয় `P-1` অথবা `(P-1)/2` হবে।
+> পর্যবেক্ষণ ১. ধরি `x` হলো একটি সেফ প্রাইম `P`-এর জন্য মাল্টিপ্লিকেটিভ গ্রুপ `ℤ/Pℤ`-এর একটি সদস্য। যদি `x mod P ≠ 1 mod P` এবং `x mod P ≠ P-1 mod P` হয়, তবে `x`-এর অর্ডার হবে `P-1` অথবা `(P-1)/2`।
-_প্রমাণ_। যেহেতু `P` একটি সেফ প্রাইম, তাই [লাগ্রাঞ্জের উপপাদ্য][lagrange] দ্বারা আমরা পাই যে `x`-এর ক্রম হয় `1`, `2`, `(P-1)/2`, অথবা `P-1`।
+_প্রমাণ_। যেহেতু `P` একটি সেফ প্রাইম, তাই [ল্যাগ্রাঞ্জের উপপাদ্য (Lagrange's Theorem)][lagrange] অনুযায়ী আমরা পাই যে `x`-এর অর্ডার হলো `1`, `2`, `(P-1)/2`, অথবা `P-1`।
-`x`-এর ক্রম `1` হতে পারে না, যেহেতু ফার্মার ছোট উপপাদ্য দ্বারা আমরা পাই:
+`x`-এর অর্ডার `1` হতে পারে না, কারণ ফার্মার লিটল থিওরেম (Fermat's Little Theorem) অনুযায়ী আমরা পাই:
xP-1 mod P ≡ 1
-অতএব, `x` অবশ্যই `ℤ/nℤ`-এর একটি গুণক পরিচয় হতে হবে, যা অনন্য। যেহেতু আমরা ধরে নিয়েছি যে `x ≠ 1`, তাই এটি সম্ভব নয়।
+অতএব `x`-কে অবশ্যই `ℤ/nℤ`-এর একটি মাল্টিপ্লিকেটিভ আইডেন্টিটি হতে হবে, যা অনন্য। যেহেতু আমরা ধরে নিয়েছি যে `x ≠ 1`, তাই এটি সম্ভব নয়।
-`x`-এর ক্রম `2` হতে পারে না যদি না `x = P-1` হয়, কারণ এটি `P`-এর প্রাইম হওয়ার বিষয়টিকে লঙ্ঘন করবে।
+`x`-এর অর্ডার `2` হতে পারে না যদি না `x = P-1` হয়, কারণ এটি `P` একটি মৌলিক সংখ্যা হওয়ার শর্ত লঙ্ঘন করবে।
-উপরের প্রস্তাবনা থেকে, আমরা বুঝতে পারি যে `(picker * init) % P`-এর পুনরাবৃত্তির একটি চক্র দৈর্ঘ্য অন্তত `(P-1)/2` হবে। এর কারণ হল আমরা `P`-কে দুইয়ের একটি উচ্চতর পাওয়ারের প্রায় সমান একটি সেফ প্রাইম হিসাবে নির্বাচন করেছি, এবং `init` ব্যবধান `[2,2**256+1]`-এর মধ্যে রয়েছে। `P`-এর বিশালতার পরিপ্রেক্ষিতে, আমাদের মডুলার এক্সপোনেনশিয়েশন থেকে কোনো চক্র আশা করা উচিত নয়।
+উপরের প্রস্তাবনা থেকে, আমরা বুঝতে পারি যে `(picker * init) % P` ইটারেট করলে এর সাইকেল লেংথ (cycle length) কমপক্ষে `(P-1)/2` হবে। এর কারণ হলো আমরা `P`-কে এমন একটি সেফ প্রাইম হিসেবে নির্বাচন করেছি যা প্রায় দুই-এর একটি উচ্চ ঘাতের (higher power of two) সমান, এবং `init` হলো `[2,2**256+1]` ব্যবধানের মধ্যে। `P`-এর বিশালতার কারণে, আমাদের কখনোই মডুলার এক্সপোনেনসিয়েশন থেকে কোনো সাইকেল আশা করা উচিত নয়।
-যখন আমরা DAG-এর প্রথম সেলটি নির্ধারণ করছি (`init` লেবেলযুক্ত ভেরিয়েবল), আমরা `pow(sha3(seed) + 2, 3, P)` গণনা করি। প্রথম নজরে, এটি গ্যারান্টি দেয় না যে ফলাফলটি `1` বা `P-1` কোনোটিই নয়। যাইহোক, যেহেতু `P-1` একটি সেফ প্রাইম, আমাদের কাছে নিম্নলিখিত অতিরিক্ত আশ্বাস রয়েছে, যা পর্যবেক্ষণ ১-এর একটি উপসিদ্ধান্ত:
+যখন আমরা ড্যাগ (DAG)-এর প্রথম সেলটি (যাকে `init` ভেরিয়েবল হিসেবে লেবেল করা হয়েছে) অ্যাসাইন করি, তখন আমরা `pow(sha3(seed) + 2, 3, P)` গণনা করি। প্রথম দেখায়, এটি গ্যারান্টি দেয় না যে ফলাফলটি `1` বা `P-1` কোনোটিই নয়। তবে, যেহেতু `P-1` একটি সেফ প্রাইম, তাই আমাদের কাছে নিচের অতিরিক্ত নিশ্চয়তা রয়েছে, যা পর্যবেক্ষণ ১-এর একটি অনুসিদ্ধান্ত:
-> পর্যবেক্ষণ ২। ধরা যাক, `x` একটি সেফ প্রাইম `P`-এর জন্য গুণক গ্রুপ `ℤ/Pℤ`-এর একটি সদস্য, এবং ধরা যাক `w` একটি স্বাভাবিক সংখ্যা। যদি `x mod P ≠ 1 mod P` এবং `x mod P ≠ P-1 mod P` হয়, এবং সেইসাথে `w mod P ≠ P-1 mod P` এবং `w mod P ≠ 0 mod P` হয়, তাহলে `xʷ mod P ≠ 1 mod P` এবং `xʷ mod P ≠ P-1 mod P` হবে।
+> পর্যবেক্ষণ ২. ধরি `x` হলো একটি সেফ প্রাইম `P`-এর জন্য মাল্টিপ্লিকেটিভ গ্রুপ `ℤ/Pℤ`-এর একটি সদস্য, এবং `w` হলো একটি স্বাভাবিক সংখ্যা। যদি `x mod P ≠ 1 mod P` এবং `x mod P ≠ P-1 mod P` হয়, পাশাপাশি `w mod P ≠ P-1 mod P` এবং `w mod P ≠ 0 mod P` হয়, তবে `xʷ mod P ≠ 1 mod P` এবং `xʷ mod P ≠ P-1 mod P` হবে।
-### একটি হ্যাস ফাংশন হিসাবে মডুলার এক্সপোনেনসিয়েশন {#modular-exponentiation}
+### একটি হ্যাস ফাংশন হিসেবে মডুলার এক্সপোনেনসিয়েশন {#modular-exponentiation}
-`P` এবং `w`-এর নির্দিষ্ট মানের জন্য, `pow(x, w, P)` ফাংশনে অনেক সংঘর্ষ হতে পারে। উদাহরণস্বরূপ, `pow(x,9,19)` শুধুমাত্র `{1,18}` মানগুলি নেয়।
+`P` এবং `w`-এর নির্দিষ্ট কিছু মানের জন্য, `pow(x, w, P)` ফাংশনটিতে অনেক কলিশন (collisions) থাকতে পারে। উদাহরণস্বরূপ, `pow(x,9,19)` শুধুমাত্র `{1,18}` মানগুলো গ্রহণ করে।
-যেহেতু `P` প্রাইম, তাই একটি মডুলার এক্সপোনেনশিয়েশন হ্যাশিং ফাংশনের জন্য একটি উপযুক্ত `w` নিম্নলিখিত ফলাফল ব্যবহার করে বেছে নেওয়া যেতে পারে:
+যেহেতু `P` একটি মৌলিক সংখ্যা, তাই মডুলার এক্সপোনেনসিয়েশন হ্যাসিং ফাংশনের জন্য একটি উপযুক্ত `w` নিচের ফলাফলটি ব্যবহার করে বেছে নেওয়া যেতে পারে:
-> পর্যবেক্ষণ ৩। ধরা যাক, `P` একটি প্রাইম; `w` এবং `P-1` তুলনামূলকভাবে প্রাইম হবে যদি এবং কেবল যদি `ℤ/Pℤ`-এর সমস্ত `a` এবং `b`-এর জন্য:`aʷ mod P ≡ bʷ mod P` হয় যদি এবং কেবল যদি `a mod P ≡ b mod P` হয়
+> পর্যবেক্ষণ ৩. ধরি `P` একটি মৌলিক সংখ্যা; `w` এবং `P-1` সহমৌলিক (relatively prime) হবে যদি এবং কেবল যদি `ℤ/Pℤ`-এর সমস্ত `a` এবং `b`-এর জন্য:`aʷ mod P ≡ bʷ mod P` হয় যদি এবং কেবল যদি `a mod P ≡ b mod P` হয়
-এইভাবে, যেহেতু `P` প্রাইম এবং `w` `P-1`-এর সাথে তুলনামূলকভাবে প্রাইম, আমরা পাই যে `|{pow(x, w, P) : x ∈ ℤ}| = P`, যা বোঝায় যে হ্যাশিং ফাংশনের সম্ভাব্য সর্বনিম্ন সংঘর্ষের হার রয়েছে।
+সুতরাং, যেহেতু `P` একটি মৌলিক সংখ্যা এবং `w` হলো `P-1`-এর সাথে সহমৌলিক, তাই আমরা পাই যে `|{pow(x, w, P) : x ∈ ℤ}| = P`, যার অর্থ হলো হ্যাসিং ফাংশনটির কলিশন রেট সম্ভাব্য সর্বনিম্ন।
-বিশেষ ক্ষেত্রে যখন `P` আমাদের নির্বাচিত সেফ প্রাইম, তখন `P-1`-এর শুধুমাত্র উৎপাদক 1, 2, `(P-1)/2` এবং `P-1` থাকে। যেহেতু `P` > 7, আমরা জানি যে 3 `P-1`-এর সাথে তুলনামূলকভাবে প্রাইম, তাই `w=3` উপরের প্রস্তাবনাটি পূরণ করে।
+বিশেষ ক্ষেত্রে যেখানে `P` একটি সেফ প্রাইম যেমনটি আমরা নির্বাচন করেছি, তখন `P-1`-এর উৎপাদকগুলো হলো শুধুমাত্র 1, 2, `(P-1)/2` এবং `P-1`। যেহেতু `P` > 7, আমরা জানি যে 3 হলো `P-1`-এর সাথে সহমৌলিক, তাই `w=3` উপরের প্রস্তাবনাটি পূরণ করে।
-## আরও দক্ষ ক্যাশে-ভিত্তিক মূল্যায়ন অ্যালগরিদম {#cache-based-evaluation}
+## আরও দক্ষ ক্যাশ-ভিত্তিক মূল্যায়ন এ্যালগরিদম {#cache-based-evaluation}
```python
def quick_calc(params, seed, p):
@@ -327,4 +327,4 @@ def quick_hashimoto_cached(cache, dagsize, params, header, nonce):
for _ in range(params["accesses"]):
mix ^= quick_calc_cached(cache, params, m + (mix & mask) % m)
return dbl_sha3(mix)
-```
+```
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
index 3ad27677755..8e644206451 100644
--- a/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
+++ b/public/content/translations/bn/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
@@ -1,6 +1,6 @@
---
-title: "মাইনিং অ্যালগরিদম সমূহ"
-description: "ইথেরিয়াম মাইনিং-এর জন্য ব্যবহৃত অ্যালগরিদমগুলির একটি বিশদ বিবরণ।"
+title: মাইনিং এ্যালগরিদম
+description: ইথিরিয়াম মাইনিংয়ের জন্য ব্যবহৃত এ্যালগরিদমগুলোর একটি বিস্তারিত রূপ।
lang: bn
---
@@ -8,35 +8,35 @@ lang: bn
-প্রুফ-অফ-ওয়ার্ক আর ইথেরিয়ামের কনসেন্সাস মেকানিজমের ভিত্তি নয়, যার অর্থ মাইনিং বন্ধ করে দেওয়া হয়েছে। পরিবর্তে, ইথেরিয়াম ভ্যালিডেটরদের দ্বারা সুরক্ষিত যারা ETH স্টেক করে। আপনি আজই আপনার ETH স্টেকিং শুরু করতে পারেন। The Merge, প্রুফ-অফ-স্টেক, এবং স্টেকিং সম্পর্কে আরও পড়ুন। এই পৃষ্ঠাটি শুধুমাত্র ঐতিহাসিক আগ্রহের জন্য।
+প্রুফ-অফ-ওয়ার্ক আর ইথিরিয়ামের কনসেন্সাস মেকানিজম এর ভিত্তি নয়, যার মানে মাইনিং বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে, ইথিরিয়াম এখন ভ্যালিডেটরস দ্বারা সুরক্ষিত যারা ETH স্টেক করে। আপনি আজই আপনার ETH স্টেকিং শুরু করতে পারেন। দ্য মার্জ (The Merge), প্রুফ-অফ-স্টেক, এবং স্টেকিং সম্পর্কে আরও পড়ুন। এই পেজটি শুধুমাত্র ঐতিহাসিক আগ্রহের জন্য।
-ইথেরিয়াম মাইনিং Ethash নামে পরিচিত একটি অ্যালগরিদম ব্যবহার করত। অ্যালগরিদমটির মূল ধারণাটি হলো, একজন মাইনার ব্রুট ফোর্স কম্পিউটেশন ব্যবহার করে একটি নন্স ইনপুট খুঁজে বের করার চেষ্টা করে যাতে ফলস্বরূপ হ্যাসটি গণনা করা কঠিনতা দ্বারা নির্ধারিত একটি থ্রেশহোল্ডের চেয়ে ছোট হয়। এই কঠিনতার স্তরটি গতিশীলভাবে সামঞ্জস্য করা যেতে পারে, যা একটি নিয়মিত ব্যবধানে ব্লক উৎপাদন হতে দেয়।
+ইথিরিয়াম মাইনিং Ethash নামক একটি এ্যালগরিদম ব্যবহার করত। এই এ্যালগরিদম এর মূল ধারণা হলো যে একজন মাইনার ব্রুট ফোর্স কম্পিউটেশন ব্যবহার করে একটি নন্স ইনপুট খোঁজার চেষ্টা করে যাতে প্রাপ্ত হ্যাস হিসাবকৃত কাঠিন্য (difficulty) দ্বারা নির্ধারিত থ্রেশহোল্ডের চেয়ে ছোট হয়। এই কাঠিন্যের স্তরটি ডাইনামিক্যালি সামঞ্জস্য করা যায়, যা একটি নিয়মিত বিরতিতে ব্লক তৈরি হতে দেয়।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [প্রুফ-অফ-ওয়ার্ক কনসেন্সাস](/developers/docs/consensus-mechanisms/pow) এবং [মাইনিং](/developers/docs/consensus-mechanisms/pow/mining) সম্পর্কে পড়ে নেওয়ার পরামর্শ দিচ্ছি।
+এই পেজটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [প্রুফ-অফ-ওয়ার্ক কনসেন্সাস](/developers/docs/consensus-mechanisms/pow) এবং [মাইনিং](/developers/docs/consensus-mechanisms/pow/mining) সম্পর্কে পড়ে নিন।
-## Dagger Hashimoto {#dagger-hashimoto}
+## ড্যাগার হাশিমোতো (Dagger Hashimoto) {#dagger-hashimoto}
-Dagger Hashimoto ছিল ইথেরিয়াম মাইনিং-এর জন্য একটি পূর্বসূরী গবেষণা অ্যালগরিদম যা Ethash দ্বারা প্রতিস্থাপিত হয়েছিল। এটি দুটি ভিন্ন অ্যালগরিদমের সংমিশ্রণ ছিল: Dagger এবং Hashimoto। এটি শুধুমাত্র একটি গবেষণা বাস্তবায়ন ছিল এবং ইথেরিয়াম মেইননেট চালু হওয়ার সময় Ethash দ্বারা প্রতিস্থাপিত হয়েছিল।
+ড্যাগার হাশিমোতো (Dagger Hashimoto) ছিল ইথিরিয়াম মাইনিংয়ের জন্য একটি পূর্বসূরী গবেষণামূলক এ্যালগরিদম যা পরবর্তীতে Ethash দ্বারা প্রতিস্থাপিত হয়। এটি দুটি ভিন্ন এ্যালগরিদম এর সংমিশ্রণ ছিল: ড্যাগার (Dagger) এবং হাশিমোতো (Hashimoto)। এটি শুধুমাত্র একটি গবেষণামূলক বাস্তবায়ন ছিল এবং ইথিরিয়াম মেইননেট চালু হওয়ার আগেই Ethash দ্বারা প্রতিস্থাপিত হয়েছিল।
-[Dagger](http://www.hashcash.org/papers/dagger.html) একটি [ডিরেক্টেড অ্যাসাইক্লিক গ্রাফ](https://en.wikipedia.org/wiki/Directed_acyclic_graph) তৈরি করে, যার র্যান্ডম স্লাইসগুলিকে একসাথে হ্যাস করা হয়। মূল নীতিটি হলো প্রতিটি নন্সের জন্য একটি বড় মোট ডেটা ট্রি-এর শুধুমাত্র একটি ছোট অংশ প্রয়োজন। প্রতিটি নন্সের জন্য সাবট্রি পুনর্গণনা করা মাইনিং-এর জন্য বাধা সৃষ্টিকারী - তাই ট্রি সংরক্ষণ করার প্রয়োজন - কিন্তু একটি একক নন্সের ভেরিফিকেশনের জন্য ঠিক আছে। Dagger-কে Scrypt-এর মতো বিদ্যমান অ্যালগরিদমগুলির একটি বিকল্প হিসাবে ডিজাইন করা হয়েছিল, যা মেমরি-হার্ড কিন্তু যখন তাদের মেমরি-হার্ডনেস প্রকৃত সুরক্ষিত স্তরে বৃদ্ধি পায় তখন যাচাই করা কঠিন। তবে, Dagger শেয়ারড মেমরি হার্ডওয়্যার অ্যাক্সিলারেশনের জন্য ঝুঁকিপূর্ণ ছিল এবং গবেষণার অন্যান্য পথের জন্য এটি বাতিল করা হয়েছিল।
+[ড্যাগার (Dagger)](http://www.hashcash.org/papers/dagger.html) একটি [ডাইরেক্টেড অ্যাসাইক্লিক গ্রাফ (Directed Acyclic Graph)](https://en.wikipedia.org/wiki/Directed_acyclic_graph) তৈরির সাথে জড়িত, যার র্যান্ডম অংশগুলো একসাথে হ্যাস করা হয়। এর মূল নীতি হলো প্রতিটি নন্স এর জন্য একটি বড় ডেটা ট্রির শুধুমাত্র একটি ছোট অংশের প্রয়োজন হয়। প্রতিটি নন্স এর জন্য সাবট্রি পুনরায় গণনা করা মাইনিংয়ের জন্য অত্যন্ত ব্যয়বহুল - তাই ট্রি সংরক্ষণ করার প্রয়োজন হয় - তবে একটি একক নন্স যাচাইকরণের জন্য এটি ঠিক আছে। ড্যাগারকে Scrypt-এর মতো বিদ্যমান এ্যালগরিদমগুলোর বিকল্প হিসেবে ডিজাইন করা হয়েছিল, যেগুলো মেমরি-হার্ড কিন্তু যখন তাদের মেমরি-হার্ডনেস সত্যিকারের সুরক্ষিত স্তরে পৌঁছায় তখন যাচাই করা কঠিন হয়ে পড়ে। তবে, ড্যাগার শেয়ার্ড মেমরি হার্ডওয়্যার এক্সিলারেশনের প্রতি দুর্বল ছিল এবং গবেষণার অন্যান্য পথের অনুকূলে এটি বাদ দেওয়া হয়েছিল।
-[Hashimoto](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf) এমন একটি অ্যালগরিদম যা I/O বাউন্ড (অর্থাৎ, মাইনিং প্রক্রিয়ায় মেমরি রিডগুলি হলো সীমাবদ্ধকারী ফ্যাক্টর) হওয়ার মাধ্যমে ASIC-প্রতিরোধ ক্ষমতা যোগ করে। তত্ত্বটি হলো কম্পিউটেশনের চেয়ে RAM বেশি উপলব্ধ; বিভিন্ন ব্যবহারের ক্ষেত্রে RAM অপ্টিমাইজ করার জন্য ইতিমধ্যে বিলিয়ন ডলার মূল্যের গবেষণা করা হয়েছে, যা প্রায়শই র্যান্ডম অ্যাক্সেস প্যাটার্ন জড়িত থাকে (তাই “র্যান্ডম অ্যাক্সেস মেমরি”)। ফলস্বরূপ, বিদ্যমান RAM সম্ভবত অ্যালগরিদম মূল্যায়নের জন্য সর্বোত্তমের বেশ কাছাকাছি। Hashimoto ডেটার উৎস হিসাবে ব্লকচেইন ব্যবহার করে, যা একই সাথে উপরের (1) এবং (3) পূরণ করে।
+[হাশিমোতো (Hashimoto)](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf) হলো এমন একটি এ্যালগরিদম যা I/O বাউন্ড হওয়ার মাধ্যমে ASIC-প্রতিরোধ যোগ করে (অর্থাৎ, মাইনিং প্রক্রিয়ায় মেমরি রিড হলো লিমিটিং ফ্যাক্টর)। এর তত্ত্ব হলো কম্পিউটেশনের চেয়ে RAM বেশি সহজলভ্য; বিভিন্ন ব্যবহারের ক্ষেত্রে RAM অপ্টিমাইজ করার জন্য ইতিমধ্যে বিলিয়ন ডলারের গবেষণা করা হয়েছে, যা প্রায়শই নিয়ার-র্যান্ডম অ্যাক্সেস প্যাটার্নগুলোর সাথে জড়িত (তাই "র্যান্ডম অ্যাক্সেস মেমরি")। ফলস্বরূপ, বিদ্যমান RAM এ্যালগরিদম মূল্যায়নের জন্য অপ্টিমালের কাছাকাছি হওয়ার সম্ভাবনা রয়েছে। হাশিমোতো ব্লকচেইন কে ডেটার উৎস হিসেবে ব্যবহার করে, যা একই সাথে উপরের (1) এবং (3) শর্ত পূরণ করে।
-Dagger-Hashimoto, Dagger এবং Hashimoto অ্যালগরিদমের সংশোধিত সংস্করণ ব্যবহার করেছে। Dagger Hashimoto এবং Hashimoto-এর মধ্যে পার্থক্য হলো, ডেটার উৎস হিসাবে ব্লকচেইন ব্যবহার করার পরিবর্তে, Dagger Hashimoto একটি কাস্টম-জেনারেটেড ডেটা সেট ব্যবহার করে, যা প্রতি N ব্লকে ব্লক ডেটার উপর ভিত্তি করে আপডেট হয়। ডেটা সেটটি Dagger অ্যালগরিদম ব্যবহার করে তৈরি করা হয়, যা লাইট ক্লায়েন্ট ভেরিফিকেশন অ্যালগরিদমের জন্য প্রতিটি নন্সের জন্য নির্দিষ্ট একটি সাবসেট দক্ষতার সাথে গণনা করার অনুমতি দেয়। Dagger Hashimoto এবং Dagger-এর মধ্যে পার্থক্য হলো, আসল Dagger-এর থেকে ভিন্ন, ব্লক কোয়েরি করার জন্য ব্যবহৃত ডেটাসেটটি আধা-স্থায়ী, যা শুধুমাত্র মাঝে মাঝে বিরতিতে (যেমন, প্রতি সপ্তাহে একবার) আপডেট করা হয়। এর মানে হলো যে ডেটাসেট তৈরি করার প্রচেষ্টার অংশ প্রায় শূন্যের কাছাকাছি, তাই শেয়ার্ড মেমরি স্পিডআপ সংক্রান্ত সার্জিও লার্নারের যুক্তিগুলি নগণ্য হয়ে যায়।
+ড্যাগার-হাশিমোতো ড্যাগার এবং হাশিমোতো এ্যালগরিদমগুলোর সংশোধিত সংস্করণ ব্যবহার করেছিল। ড্যাগার হাশিমোতো এবং হাশিমোতোর মধ্যে পার্থক্য হলো, ব্লকচেইন কে ডেটার উৎস হিসেবে ব্যবহার করার পরিবর্তে, ড্যাগার হাশিমোতো একটি কাস্টম-জেনারেটেড ডেটা সেট ব্যবহার করে, যা প্রতি N ব্লকস অন্তর ব্লক ডেটার উপর ভিত্তি করে আপডেট হয়। ডেটা সেটটি ড্যাগার এ্যালগরিদম ব্যবহার করে তৈরি করা হয়, যা লাইট ক্লায়েন্ট ভেরিফিকেশন এ্যালগরিদম এর জন্য প্রতিটি নন্স এর নির্দিষ্ট একটি সাবসেট দক্ষতার সাথে গণনা করতে দেয়। ড্যাগার হাশিমোতো এবং ড্যাগারের মধ্যে পার্থক্য হলো, মূল ড্যাগারের বিপরীতে, ব্লক কোয়েরি করার জন্য ব্যবহৃত ডেটাসেটটি আধা-স্থায়ী (semi-permanent), যা শুধুমাত্র মাঝে মাঝে আপডেট করা হয় (যেমন, সপ্তাহে একবার)। এর মানে হলো ডেটাসেট তৈরির প্রচেষ্টার অংশ প্রায় শূন্যের কাছাকাছি, তাই শেয়ার্ড মেমরি স্পিডআপ সম্পর্কে সার্জিও লার্নারের (Sergio Lerner) যুক্তিগুলো নগণ্য হয়ে যায়।
-[Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto)-এর উপর আরও তথ্য।
+[ড্যাগার-হাশিমোতো (Dagger-Hashimoto)](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto) সম্পর্কে আরও জানুন।
-## Ethash {#ethash}
+## ইথহ্যাস (Ethash) {#ethash}
-Ethash ছিল সেই মাইনিং অ্যালগরিদম যা এখন অপ্রচলিত প্রুফ-অফ-ওয়ার্ক আর্কিটেকচারের অধীনে আসল ইথেরিয়াম মেইননেটে ব্যবহৃত হয়েছিল। অ্যালগরিদমটি উল্লেখযোগ্যভাবে আপডেট হওয়ার পরে Dagger-Hashimoto-এর একটি নির্দিষ্ট সংস্করণকে কার্যকরভাবে Ethash নামটি দেওয়া হয়েছিল, যদিও এটি তার পূর্বসূরীর মৌলিক নীতিগুলি উত্তরাধিকার সূত্রে পেয়েছিল। ইথেরিয়াম মেইননেট শুধুমাত্র Ethash ব্যবহার করেছে - Dagger Hashimoto ছিল মাইনিং অ্যালগরিদমের একটি R&D সংস্করণ যা ইথেরিয়াম মেইননেটে মাইনিং শুরু হওয়ার আগে প্রতিস্থাপিত হয়েছিল।
+Ethash ছিল সেই মাইনিং এ্যালগরিদম যা বর্তমানে বাতিল হওয়া প্রুফ-অফ-ওয়ার্ক আর্কিটেকচারের অধীনে আসল ইথিরিয়াম মেইননেট এ ব্যবহৃত হয়েছিল। এ্যালগরিদমটি উল্লেখযোগ্যভাবে আপডেট হওয়ার পর ড্যাগার-হাশিমোতোর একটি নির্দিষ্ট সংস্করণকে কার্যকরভাবে Ethash নতুন নাম দেওয়া হয়েছিল, যদিও এটি তার পূর্বসূরীর মৌলিক নীতিগুলো উত্তরাধিকার সূত্রে পেয়েছিল। ইথিরিয়াম মেইননেট শুধুমাত্র Ethash ব্যবহার করেছিল - ড্যাগার হাশিমোতো ছিল মাইনিং এ্যালগরিদম এর একটি R&D সংস্করণ যা ইথিরিয়াম মেইননেট এ মাইনিং শুরু হওয়ার আগেই প্রতিস্থাপিত হয়েছিল।
-[Ethash](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash)-এর উপর আরও তথ্য।
+[Ethash সম্পর্কে আরও জানুন](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash)।
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/dapps/index.md b/public/content/translations/bn/developers/docs/dapps/index.md
index 1c94216390a..a708bd694bf 100644
--- a/public/content/translations/bn/developers/docs/dapps/index.md
+++ b/public/content/translations/bn/developers/docs/dapps/index.md
@@ -1,60 +1,60 @@
---
-title: "ডিএ্যাপস এর প্রযুক্তিগত পরিচিতি"
+title: ডিএ্যাপস-এর প্রযুক্তিগত পরিচিতি
description:
lang: bn
---
-একটি ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপ) হল একটি বিকেন্দ্রীভূত নেটওয়ার্কে নির্মিত একটি এপ্লিকেশন যা একটি [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) এবং একটি ফ্রন্টএন্ড ইউজার ইন্টারফেসকে একত্রিত করে। Ethereum-এ, স্মার্ট কন্ট্র্যাক্টগুলি অ্যাক্সেসযোগ্য এবং স্বচ্ছ – যেমন ওপেন APIs – তাই আপনার ডিএ্যাপ-এ এমন একটি স্মার্ট কন্ট্র্যাক্টও অন্তর্ভুক্ত থাকতে পারে যা অন্য কেউ লিখেছে।
+একটি ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপ) হলো একটি ডিসেন্ট্রালাইজড নেটওয়ার্ক-এর উপর তৈরি করা একটি অ্যাপ্লিকেশন যা একটি [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) এবং একটি ফ্রন্টএন্ড ইউজার ইন্টারফেসকে একত্রিত করে। [Ethereum](/)-এ, স্মার্ট কন্ট্রাক্টগুলো অ্যাক্সেসযোগ্য এবং স্বচ্ছ – ওপেন API-এর মতো – তাই আপনার ডিএ্যাপ-এ এমন একটি স্মার্ট কন্ট্রাক্টও অন্তর্ভুক্ত থাকতে পারে যা অন্য কেউ লিখেছেন।
## পূর্বশর্ত {#prerequisites}
-ডিএ্যাপস সম্পর্কে শেখার আগে, আপনার [ব্লকচেইনের মূল বিষয়গুলো](/developers/docs/intro-to-ethereum/) কভার করা উচিত এবং Ethereum নেটওয়ার্ক ও এটি কীভাবে বিকেন্দ্রীভূত হয় সে সম্পর্কে পড়া উচিত।
+ডিএ্যাপস সম্পর্কে জানার আগে, আপনার [ব্লকচেইন বেসিকস](/developers/docs/intro-to-ethereum/) কভার করা উচিত এবং ইথেরিয়াম নেটওয়ার্ক এবং এটি কীভাবে ডিসেন্ট্রালাইজড তা সম্পর্কে পড়া উচিত।
-## একটি ডিএ্যাপ-এর সংজ্ঞা {#definition-of-a-dapp}
+## ডিএ্যাপ-এর সংজ্ঞা {#definition-of-a-dapp}
-একটি ডিএ্যাপ-এর ব্যাকএন্ড কোড একটি বিকেন্দ্রীভূত পিয়ার-টু-পিয়ার নেটওয়ার্কে চলে। একটি অ্যাপের সাথে এর তুলনা করুন যেখানে ব্যাকএন্ড কোড কেন্দ্রীয় সার্ভারে চলছে।
+একটি ডিএ্যাপ-এর ব্যাকএন্ড কোড একটি ডিসেন্ট্রালাইজড পিয়ার-টু-পিয়ার নেটওয়ার্ক-এ চলে। এর বিপরীতে এমন একটি অ্যাপের কথা ভাবুন যার ব্যাকএন্ড কোড সেন্ট্রালাইজড সার্ভারে চলে।
-একটি ডিএ্যাপ-এর ফ্রন্টএন্ড কোড এবং ইউজার ইন্টারফেস যেকোনো ভাষায় লেখা যেতে পারে (ঠিক একটি অ্যাপের মতো) যা এর ব্যাকএন্ডে কল করার জন্য ব্যবহৃত হয়। অধিকন্তু, এর ফ্রন্টএন্ড [IPFS](https://ipfs.io/)-এর মতো বিকেন্দ্রীভূত স্টোরেজে হোস্ট করা যেতে পারে।
+একটি ডিএ্যাপ-এর ব্যাকএন্ডে কল করার জন্য যেকোনো ভাষায় লেখা ফ্রন্টএন্ড কোড এবং ইউজার ইন্টারফেস থাকতে পারে (ঠিক একটি সাধারণ অ্যাপের মতো)। উপরন্তু, এর ফ্রন্টএন্ড [IPFS](https://ipfs.io/)-এর মতো ডিসেন্ট্রালাইজড স্টোরেজে হোস্ট করা যেতে পারে।
-- **বিকেন্দ্রীভূত** - ডিএ্যাপস Ethereum-এ কাজ করে, যা একটি উন্মুক্ত পাবলিক বিকেন্দ্রীভূত প্ল্যাটফর্ম যেখানে কোনো ব্যক্তি বা গোষ্ঠীর নিয়ন্ত্রণ নেই।
-- **ডিটারমিনিস্টিক** - ডিএ্যাপস যে পরিবেশে চালানো হোক না কেন, একই ফাংশন সম্পাদন করে।
-- **ট্যুরিং কমপ্লিট** - প্রয়োজনীয় রিসোর্স দেওয়া হলে ডিএ্যাপস যেকোনো কাজ সম্পাদন করতে পারে।
-- **আইসোলেটেড** - ডিএ্যাপস ইথিরিয়াম ভার্চুয়াল মেশিন নামে পরিচিত একটি ভার্চুয়াল পরিবেশে কার্যকর করা হয়, যাতে স্মার্ট কন্ট্র্যাক্টে কোনো বাগ থাকলেও এটি ব্লকচেইন নেটওয়ার্কের স্বাভাবিক কার্যকারিতায় বাধা দেবে না।
+- **ডিসেন্ট্রালাইজড** - ডিএ্যাপস ইথেরিয়ামে কাজ করে, যা একটি ওপেন পাবলিক ডিসেন্ট্রালাইজড প্ল্যাটফর্ম যেখানে কোনো একক ব্যক্তি বা গোষ্ঠীর নিয়ন্ত্রণ নেই
+- **ডিটারমিনিস্টিক** - ডিএ্যাপস যে পরিবেশেই চালানো হোক না কেন, তারা একই কাজ সম্পাদন করে
+- **টুরিং কমপ্লিট** - প্রয়োজনীয় রিসোর্স দেওয়া হলে ডিএ্যাপস যেকোনো কাজ সম্পাদন করতে পারে
+- **আইসোলেটেড** - ডিএ্যাপস ইথিরিয়াম ভার্চুয়াল মেশিন নামক একটি ভার্চুয়াল পরিবেশে চালানো হয় যাতে স্মার্ট কন্ট্রাক্ট-এ কোনো বাগ থাকলে তা ব্লকচেইন নেটওয়ার্ক-এর স্বাভাবিক কাজকে ব্যাহত না করে
-### স্মার্ট কন্ট্র্যাক্ট প্রসঙ্গে {#on-smart-contracts}
+### স্মার্ট কন্ট্রাক্ট সম্পর্কে {#on-smart-contracts}
-ডিএ্যাপস এর পরিচয় দিতে হলে, আমাদের স্মার্ট কন্ট্র্যাক্টগুলির পরিচয় দিতে হবে – যা ভাল কোনও শব্দের অভাবে একটি ডিএ্যাপ-এর ব্যাকএন্ড। বিস্তারিত বিবরণের জন্য, আমাদের [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) সম্পর্কিত বিভাগে যান।
+ডিএ্যাপস-এর সাথে পরিচয় করিয়ে দিতে, আমাদের স্মার্ট কন্ট্রাক্ট-এর সাথে পরিচয় করিয়ে দিতে হবে – সহজ কথায় যা একটি ডিএ্যাপ-এর ব্যাকএন্ড। বিস্তারিত ওভারভিউয়ের জন্য, আমাদের [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) বিভাগে যান।
-একটি স্মার্ট কন্ট্র্যাক্ট হল কোড যা Ethereum ব্লকচেইনে থাকে এবং ঠিক প্রোগ্রাম অনুযায়ী চলে। একবার স্মার্ট কন্ট্র্যাক্টগুলি নেটওয়ার্কে ডিপ্লয় করা হলে আপনি সেগুলি পরিবর্তন করতে পারবেন না। ডিএ্যাপস বিকেন্দ্রীভূত হতে পারে কারণ সেগুলি কন্ট্র্যাক্টে লেখা যুক্তি দ্বারা নিয়ন্ত্রিত হয়, কোনো ব্যক্তি বা কোম্পানির দ্বারা নয়। এর মানে হল আপনাকে আপনার কন্ট্র্যাক্টগুলি খুব সাবধানে ডিজাইন করতে হবে এবং সেগুলি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করতে হবে।
+একটি স্মার্ট কন্ট্রাক্ট হলো এমন একটি কোড যা ইথেরিয়াম ব্লকচেইন-এ থাকে এবং ঠিক যেভাবে প্রোগ্রাম করা হয়েছে সেভাবেই চলে। একবার স্মার্ট কন্ট্রাক্ট নেটওয়ার্ক-এ ডিপ্লয় করা হলে আপনি সেগুলো পরিবর্তন করতে পারবেন না। ডিএ্যাপস ডিসেন্ট্রালাইজড হতে পারে কারণ এগুলো কোনো ব্যক্তি বা কোম্পানির দ্বারা নয়, বরং কন্ট্রাক্টে লেখা লজিক দ্বারা নিয়ন্ত্রিত হয়। এর মানে হলো আপনাকে আপনার কন্ট্রাক্টগুলো খুব সাবধানে ডিজাইন করতে হবে এবং সেগুলো পুঙ্খানুপুঙ্খভাবে পরীক্ষা করতে হবে।
## ডিএ্যাপ ডেভেলপমেন্টের সুবিধা {#benefits-of-dapp-development}
-- **জিরো ডাউনটাইম** – একবার ব্লকচেইনে স্মার্ট কন্ট্র্যাক্টটি ডিপ্লয় করা হলে, পুরো নেটওয়ার্কটি সর্বদা কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করতে চাওয়া ক্লায়েন্টদের পরিষেবা দিতে সক্ষম হবে। অতএব, ক্ষতিকারক অ্যাক্টররা ব্যক্তিগত ডিএ্যাপস-কে লক্ষ্য করে ডিনায়াল-অফ-সার্ভিস অ্যাটাক চালাতে পারে না।
-- **গোপনীয়তা** – একটি ডিএ্যাপ ডিপ্লয় বা তার সাথে ইন্টারঅ্যাক্ট করার জন্য আপনাকে বাস্তব-জগতের পরিচয় প্রদান করতে হবে না।
-- **সেন্সরশিপ প্রতিরোধ** – নেটওয়ার্কের কোনো একক সত্তা ব্যবহারকারীদের লেনদেন জমা দেওয়া, ডিএ্যাপস ডিপ্লয় করা, বা ব্লকচেইন থেকে ডেটা পড়া থেকে ব্লক করতে পারে না।
-- **সম্পূর্ণ ডেটা ইন্টিগ্রিটি** – ব্লকচেইনে সংরক্ষিত ডেটা অপরিবর্তনীয় এবং অকাট্য, ক্রিপ্টোগ্রাফিক প্রিমিটিভের জন্য ধন্যবাদ। ক্ষতিকারক অ্যাক্টররা লেনদেন বা অন্যান্য ডেটা যা ইতিমধ্যে পাবলিক করা হয়েছে তা জালিয়াতি করতে পারে না।
-- **ট্রাস্টলেস কম্পিউটেশন/যাচাইযোগ্য আচরণ** – স্মার্ট কন্ট্র্যাক্ট বিশ্লেষণ করা যেতে পারে এবং একটি কেন্দ্রীয় কর্তৃপক্ষকে বিশ্বাস করার প্রয়োজন ছাড়াই অনুমানযোগ্য উপায়ে কার্যকর করার গ্যারান্টি দেওয়া হয়। প্রচলিত মডেলগুলিতে এটি সত্য নয়; উদাহরণস্বরূপ, যখন আমরা অনলাইন ব্যাংকিং সিস্টেম ব্যবহার করি, তখন আমাদের বিশ্বাস করতে হবে যে আর্থিক প্রতিষ্ঠানগুলি আমাদের আর্থিক ডেটার অপব্যবহার করবে না, রেকর্ডে গরমিল করবে না, বা হ্যাক হবে না।
+- **জিরো ডাউনটাইম** – একবার স্মার্ট কন্ট্রাক্ট ব্লকচেইন-এ ডিপ্লয় করা হলে, পুরো নেটওয়ার্ক সর্বদা কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে চাওয়া ক্লায়েন্ট-দের পরিষেবা দিতে সক্ষম হবে। তাই ক্ষতিকারক ব্যক্তিরা নির্দিষ্ট ডিএ্যাপস-কে লক্ষ্য করে ডিনায়াল-অফ-সার্ভিস (denial-of-service) আক্রমণ চালাতে পারে না।
+- **গোপনীয়তা** – একটি ডিএ্যাপ ডিপ্লয় করতে বা এর সাথে ইন্টারঅ্যাক্ট করতে আপনাকে বাস্তব জগতের পরিচয় প্রদান করতে হবে না।
+- **সেন্সরশিপ প্রতিরোধ** – নেটওয়ার্ক-এর কোনো একক সত্তা ব্যবহারকারীদের লেনদেন জমা দেওয়া, ডিএ্যাপস ডিপ্লয় করা বা ব্লকচেইন থেকে ডেটা পড়া থেকে আটকাতে পারে না।
+- **সম্পূর্ণ ডেটা ইন্টিগ্রিটি** – ক্রিপ্টোগ্রাফিক প্রিমিটিভের কারণে ব্লকচেইন-এ সংরক্ষিত ডেটা অপরিবর্তনীয় এবং অনস্বীকার্য। ক্ষতিকারক ব্যক্তিরা লেনদেন বা অন্যান্য ডেটা জাল করতে পারে না যা ইতিমধ্যে সর্বজনীন করা হয়েছে।
+- **ট্রাস্টলেস কম্পিউটেশন/যাচাইযোগ্য আচরণ** – স্মার্ট কন্ট্রাক্টগুলো বিশ্লেষণ করা যেতে পারে এবং কোনো কেন্দ্রীয় কর্তৃপক্ষের উপর আস্থা রাখার প্রয়োজন ছাড়াই অনুমানযোগ্য উপায়ে কার্যকর হওয়ার নিশ্চয়তা দেয়। প্রথাগত মডেলগুলোতে এটি সত্য নয়; উদাহরণস্বরূপ, যখন আমরা অনলাইন ব্যাংকিং সিস্টেম ব্যবহার করি, তখন আমাদের অবশ্যই বিশ্বাস করতে হবে যে আর্থিক প্রতিষ্ঠানগুলো আমাদের আর্থিক ডেটার অপব্যবহার করবেবিধা না, রেকর্ডে কারচুপি করবে না বা হ্যাক হবে না।
## ডিএ্যাপ ডেভেলপমেন্টের অসুবিধা {#drawbacks-of-dapp-development}
-- **রক্ষণাবেক্ষণ** – ডিএ্যাপস রক্ষণাবেক্ষণ করা কঠিন হতে পারে কারণ ব্লকচেইনে প্রকাশিত কোড এবং ডেটা পরিবর্তন করা কঠিন। ডেভেলপারদের জন্য তাদের ডিএ্যাপস-এ (বা একটি ডিএ্যাপ দ্বারা সংরক্ষিত অন্তর্নিহিত ডেটা) আপডেট করা কঠিন, একবার সেগুলি ডিপ্লয় করা হলে, এমনকি যদি পুরনো সংস্করণে বাগ বা নিরাপত্তা ঝুঁকি চিহ্নিত করা হয়।
-- **পারফরম্যান্স ওভারহেড** – একটি বিশাল পারফরম্যান্স ওভারহেড আছে, এবং স্কেলিং সত্যিই কঠিন। Ethereum যে স্তরের নিরাপত্তা, অখণ্ডতা, স্বচ্ছতা এবং নির্ভরযোগ্যতা অর্জনের আকাঙ্ক্ষা করে, তা অর্জনের জন্য প্রতিটি নোড প্রতিটি লেনদেন চালায় এবং সংরক্ষণ করে। এর উপরে, প্রুফ-অফ-স্টেক কনসেন্সাস-এও সময় লাগে।
-- **নেটওয়ার্ক কনজেশন** – যখন একটি ডিএ্যাপ খুব বেশি কম্পিউটেশনাল রিসোর্স ব্যবহার করে, তখন পুরো নেটওয়ার্ক ব্যাক আপ হয়ে যায়। বর্তমানে, নেটওয়ার্কটি প্রতি সেকেন্ডে প্রায় 10-15টি লেনদেন প্রক্রিয়া করতে পারে; যদি এর চেয়ে দ্রুত লেনদেন পাঠানো হয়, তাহলে অপরিশোধিত লেনদেনের পুল দ্রুত ফুলে উঠতে পারে।
-- **ব্যবহারকারীর অভিজ্ঞতা** – ব্যবহারকারী-বান্ধব অভিজ্ঞতা তৈরি করা কঠিন হতে পারে কারণ গড় শেষ-ব্যবহারকারী একটি সত্যিকারের নিরাপদ ফ্যাশনে ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় একটি টুল স্ট্যাক সেট আপ করা খুব কঠিন মনে করতে পারে।
-- **কেন্দ্রীকরণ** – Ethereum-এর বেস লেয়ারের উপরে নির্মিত ব্যবহারকারী-বান্ধব এবং ডেভেলপার-বান্ধব সমাধানগুলি শেষ পর্যন্ত কেন্দ্রীয় পরিষেবার মতো দেখতে হতে পারে। উদাহরণস্বরূপ, এই ধরনের পরিষেবাগুলি সার্ভার-সাইডে কী বা অন্যান্য সংবেদনশীল তথ্য সংরক্ষণ করতে পারে, একটি কেন্দ্রীয় সার্ভার ব্যবহার করে একটি ফ্রন্টএন্ড পরিবেশন করতে পারে, বা ব্লকচেইনে লেখার আগে একটি কেন্দ্রীয় সার্ভারে গুরুত্বপূর্ণ ব্যবসায়িক যুক্তি চালাতে পারে। কেন্দ্রীকরণ ঐতিহ্যগত মডেলের উপর ব্লকচেইনের অনেক (যদি সব না হয়) সুবিধা দূর করে।
+- **রক্ষণাবেক্ষণ** – ডিএ্যাপস রক্ষণাবেক্ষণ করা কঠিন হতে পারে কারণ ব্লকচেইন-এ প্রকাশিত কোড এবং ডেটা পরিবর্তন করা কঠিন। একবার ডিপ্লয় করা হলে ডেভেলপারদের জন্য তাদের ডিএ্যাপস-এ (বা ডিএ্যাপ দ্বারা সংরক্ষিত অন্তর্নিহিত ডেটা) আপডেট করা কঠিন, এমনকি যদি কোনো পুরানো সংস্করণে বাগ বা নিরাপত্তা ঝুঁকি চিহ্নিত করা হয়।
+- **পারফরম্যান্স ওভারহেড** – এখানে একটি বিশাল পারফরম্যান্স ওভারহেড রয়েছে এবং স্কেলিং করা সত্যিই কঠিন। ইথেরিয়াম যে স্তরের নিরাপত্তা, ইন্টিগ্রিটি, স্বচ্ছতা এবং নির্ভরযোগ্যতা অর্জন করতে চায়, তা অর্জনের জন্য প্রতিটি নোড প্রতিটি লেনদেন চালায় এবং সংরক্ষণ করে। এর উপরে, প্রুফ-অফ-স্টেক কনসেন্সাস-এও সময় লাগে।
+- **নেটওয়ার্ক কনজেশন** – যখন একটি ডিএ্যাপ খুব বেশি কম্পিউটেশনাল রিসোর্স ব্যবহার করে, তখন পুরো নেটওয়ার্ক ব্যাক আপ হয়ে যায়। বর্তমানে, নেটওয়ার্ক প্রতি সেকেন্ডে প্রায় 10-15টি লেনদেন প্রক্রিয়া করতে পারে; যদি এর চেয়ে দ্রুত লেনদেন পাঠানো হয়, তবে অ-নিশ্চিত লেনদেন-এর পুল দ্রুত বড় হতে পারে।
+- **ইউজার এক্সপেরিয়েন্স** – ব্যবহারকারী-বান্ধব অভিজ্ঞতা তৈরি করা কঠিন হতে পারে কারণ সাধারণ শেষ-ব্যবহারকারীর কাছে সত্যিকারের নিরাপদ উপায়ে ব্লকচেইন-এর সাথে ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় টুল স্ট্যাক সেট আপ করা খুব কঠিন মনে হতে পারে।
+- **সেন্ট্রালাইজেশন** – ইথেরিয়ামের বেস লেয়ারের উপরে তৈরি ব্যবহারকারী-বান্ধব এবং ডেভেলপার-বান্ধব সমাধানগুলো শেষ পর্যন্ত সেন্ট্রালাইজড পরিষেবাগুলোর মতোই দেখতে হতে পারে। উদাহরণস্বরূপ, এই ধরনের পরিষেবাগুলো সার্ভার-সাইডে কী (keys) বা অন্যান্য সংবেদনশীল তথ্য সংরক্ষণ করতে পারে, একটি সেন্ট্রালাইজড সার্ভার ব্যবহার করে একটি ফ্রন্টএন্ড পরিবেশন করতে পারে, বা ব্লকচেইন-এ লেখার আগে একটি সেন্ট্রালাইজড সার্ভারে গুরুত্বপূর্ণ ব্যবসায়িক লজিক চালাতে পারে। সেন্ট্রালাইজেশন প্রথাগত মডেলের তুলনায় ব্লকচেইন-এর অনেক (সব না হলেও) সুবিধা দূর করে দেয়।
-## আপনি কি দেখে শিখতে বেশি পছন্দ করেন? {#visual-learner}
+## ভিজ্যুয়াল লার্নারদের জন্য {#visual-learner}
-## ডিএ্যাপস তৈরির জন্য টুলস {#dapp-tools}
+## ডিএ্যাপস তৈরির টুলস {#dapp-tools}
-**Scaffold-ETH _- আপনার স্মার্ট কন্ট্র্যাক্টের সাথে খাপ খাইয়ে নেওয়া একটি ফ্রন্টএন্ড ব্যবহার করে দ্রুত Solidity নিয়ে পরীক্ষা করুন।_**
+**Scaffold-ETH _- আপনার স্মার্ট কন্ট্রাক্ট-এর সাথে খাপ খায় এমন একটি ফ্রন্টএন্ড ব্যবহার করে দ্রুত Solidity নিয়ে পরীক্ষা করুন।_**
- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2)
- [উদাহরণ ডিএ্যাপ](https://punkwallet.io/)
-**Create Eth App _- একটি কমান্ড দিয়ে Ethereum-চালিত অ্যাপ তৈরি করুন।_**
+**Create Eth App _- একটি কমান্ড দিয়ে ইথেরিয়াম-চালিত অ্যাপ তৈরি করুন।_**
- [GitHub](https://github.com/paulrberg/create-eth-app)
@@ -63,34 +63,42 @@ lang: bn
- [oneclickdapp.com](https://oneclickdapp.com)
- [GitHub](https://github.com/oneclickdapp/oneclickdapp-v1)
-**Etherflow _- Ethereum ডেভেলপারদের জন্য তাদের নোড পরীক্ষা করার জন্য এবং ব্রাউজার থেকে RPC কল রচনা এবং ডিবাগ করার জন্য FOSS টুল।_**
+**Etherflow _- ইথেরিয়াম ডেভেলপারদের তাদের নোড পরীক্ষা করার জন্য এবং ব্রাউজার থেকে RPC কলগুলো কম্পোজ ও ডিবাগ করার জন্য FOSS টুল।_**
- [etherflow.quiknode.io](https://etherflow.quiknode.io/)
- [GitHub](https://github.com/abunsen/etherflow)
-**thirdweb _- প্রতিটি ভাষায় SDK, স্মার্ট কন্ট্র্যাক্ট, টুলস, এবং web3 ডেভেলপমেন্টের জন্য পরিকাঠামো।_**
+**thirdweb _- প্রতিটি ভাষায় SDK, স্মার্ট কন্ট্রাক্ট, টুলস এবং ওয়েব3 ডেভেলপমেন্টের জন্য পরিকাঠামো।_**
- [হোমপেজ](https://thirdweb.com/)
-- [নথিপত্র](https://portal.thirdweb.com/)
+- [ডকুমেন্টেশন](https://portal.thirdweb.com/)
- [GitHub](https://github.com/thirdweb-dev/)
-**Crossmint _- স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করতে, ক্রেডিট-কার্ড এবং ক্রস চেইন পেমেন্ট সক্ষম করতে, এবং NFTs তৈরি, বিতরণ, বিক্রি, সঞ্চয় এবং সম্পাদনা করতে API ব্যবহার করার জন্য এন্টারপ্রাইজ-গ্রেড web3 ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
+**Crossmint _- স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে, ক্রেডিট-কার্ড এবং ক্রস চেইন পেমেন্ট সক্ষম করতে এবং NFT তৈরি, বিতরণ, বিক্রি, সংরক্ষণ এবং সম্পাদনা করতে API ব্যবহার করার জন্য এন্টারপ্রাইজ-গ্রেড ওয়েব3 ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
- [crossmint.com](https://www.crossmint.com)
-- [নথিপত্র](https://docs.crossmint.com)
+- [ডকুমেন্টেশন](https://docs.crossmint.com)
- [Discord](https://discord.com/invite/crossmint)
## আরও পড়ুন {#further-reading}
- [ডিএ্যাপস এক্সপ্লোর করুন](/apps)
-- [একটি ওয়েব 3.0 অ্যাপ্লিকেশনের আর্কিটেকচার](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _প্রীতি কাসিরেড্ডি_
-- [ডিসেন্ট্রালাইজড এপ্লিকেশনগুলির জন্য একটি 2021 সালের নির্দেশিকা](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_
-- [ডিসেন্ট্রালাইজড এপ্লিকেশন কী?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_
-- [জনপ্রিয় ডিএ্যাপস](https://www.alchemy.com/dapps) - _Alchemy_
+- [The Architecture of a Web 3.0 application](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [A 2021 guide to decentralized applications](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_
+- [What Are Decentralized Apps?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_
+- [Popular dapps](https://www.alchemy.com/dapps) - _Alchemy_
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [Ethereum স্ট্যাকের পরিচিতি](/developers/docs/ethereum-stack/)
+- [ইথেরিয়াম স্ট্যাকের পরিচিতি](/developers/docs/ethereum-stack/)
- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
+
+## টিউটোরিয়াল: ইথেরিয়ামে অ্যাপ এবং ফ্রন্টএন্ড তৈরি করুন {#tutorials}
+
+- [Uniswap-v2 Contract Walk-Through](/developers/tutorials/uniswap-v2-annotated-code/) _– Uniswap v2 কোর কন্ট্রাক্টগুলোর একটি টীকাযুক্ত ওয়াকথ্রু যা ব্যাখ্যা করে যে AMM কীভাবে কাজ করে।_
+- [Building a user interface for your contract](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) _– কীভাবে একটি আধুনিক React + wagmi ফ্রন্টএন্ড তৈরি করবেন যা আপনার স্মার্ট কন্ট্রাক্ট-এর সাথে সংযুক্ত হয়।_
+- [Hello World Smart Contract for Beginners – Fullstack](/developers/tutorials/hello-world-smart-contract-fullstack/) _– এন্ড-টু-এন্ড টিউটোরিয়াল: একটি সাধারণ স্মার্ট কন্ট্রাক্ট-এর জন্য ফ্রন্টএন্ড লিখুন, ডিপ্লয় করুন এবং তৈরি করুন।_
+- [Server components and agents for web3 apps](/developers/tutorials/server-components/) _– কীভাবে TypeScript সার্ভার কম্পোনেন্টগুলো লিখতে হয় যা ব্লকচেইন ইভেন্টগুলো শোনে এবং লেনদেন-এর মাধ্যমে প্রতিক্রিয়া জানায়।_
+- [IPFS for decentralized user interfaces](/developers/tutorials/ipfs-decentralized-ui/) _– সেন্সরশিপ প্রতিরোধের জন্য কীভাবে আপনার ডিএ্যাপ-এর ফ্রন্টএন্ড IPFS-এ হোস্ট করবেন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-and-analytics/block-explorers/index.md b/public/content/translations/bn/developers/docs/data-and-analytics/block-explorers/index.md
index 87b6e70e22b..04f783e57fc 100644
--- a/public/content/translations/bn/developers/docs/data-and-analytics/block-explorers/index.md
+++ b/public/content/translations/bn/developers/docs/data-and-analytics/block-explorers/index.md
@@ -1,254 +1,245 @@
---
-title: "ব্লক এক্সপ্লোরার"
-description: "ব্লক এক্সপ্লোরারের একটি ভূমিকা, ব্লকচেইন ডেটার জগতে আপনার পোর্টাল, যেখানে আপনি লেনদেন, অ্যাকাউন্ট, কন্ট্র্যাক্ট এবং আরও অনেক কিছু সম্পর্কে তথ্য জানতে পারেন।"
+title: ব্লক এক্সপ্লোরার
+description: ব্লক এক্সপ্লোরারের একটি পরিচিতি, যা ব্লকচেইন ডাটার জগতে আপনার পোর্টাল, যেখানে আপনি লেনদেন, একাউন্ট, কন্ট্রাক্ট এবং আরও অনেক কিছু সম্পর্কে তথ্য অনুসন্ধান করতে পারেন।
lang: bn
sidebarDepth: 3
---
-ব্লক এক্সপ্লোরার হল ইথেরিয়াম-এর ডেটাতে আপনার পোর্টাল। ব্লক, লেনদেন, ভ্যালিডেটর, অ্যাকাউন্ট এবং অন্যান্য অনচেইন কার্যকলাপের রিয়েল-টাইম ডেটা দেখতে আপনি সেগুলি ব্যবহার করতে পারেন।
+ব্লক এক্সপ্লোরার হলো ইথিরিয়ামের ডাটার জগতে আপনার পোর্টাল। আপনি এগুলো ব্যবহার করে ব্লক, লেনদেন, ভ্যালিডেটরস, একাউন্ট এবং অন্যান্য অনচেইন কার্যকলাপের রিয়েল-টাইম ডাটা দেখতে পারেন।
## পূর্বশর্ত {#prerequisites}
-আপনার ইথেরিয়ামের প্রাথমিক ধারণাগুলি বোঝা উচিত যাতে একটি ব্লক এক্সপ্লোরার আপনাকে যে ডেটা দেয় তা আপনি বুঝতে পারেন। [ইথেরিয়ামের একটি ভূমিকা](/developers/docs/intro-to-ethereum/) দিয়ে শুরু করুন।
+আপনার ইথিরিয়ামের প্রাথমিক ধারণাগুলো বোঝা উচিত যাতে একটি ব্লক এক্সপ্লোরার আপনাকে যে ডাটা দেয় তা আপনি বুঝতে পারেন। [ইথিরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) দিয়ে শুরু করুন।
-## পরিষেবা {#services}
+## ওপেন সোর্স টুলস {#open-source-tools}
-- [Etherscan](https://etherscan.io/) -_চীনা, কোরিয়ান, রাশিয়ান এবং জাপানি ভাষায়ও উপলব্ধ_
-- [3xpl](https://3xpl.com/ethereum)
+- [3xpl](https://3xpl.com/ethereum) - একটি বিজ্ঞাপনমুক্ত ইথিরিয়াম এক্সপ্লোরার যা এর ডাটাসেটগুলো ডাউনলোড করার সুবিধা দেয় (ওপেন-কোর: কোর মডিউলগুলো ওপেন সোর্স)
- [Beaconcha.in](https://beaconcha.in/)
-- [Blockchair](https://blockchair.com/ethereum) -_স্প্যানিশ, ফরাসি, ইতালীয়, ডাচ, পর্তুগিজ, রাশিয়ান, চীনা এবং ফারসি ভাষায়ও উপলব্ধ_
- [Blockscout](https://eth.blockscout.com/)
+- [lazy-etherscan](https://github.com/woxjro/lazy-etherscan)
+- [Otterscan](https://otterscan.io/)
+
+## সার্ভিসসমূহ {#services}
+
+- [Blockchair](https://blockchair.com/ethereum) - প্রাইভেট ইথিরিয়াম এক্সপ্লোরার। ডাটা (মেমপুল) সর্টিং এবং ফিল্টারিংয়ের জন্যও ব্যবহৃত হয়। স্প্যানিশ, ফ্রেঞ্চ, ইতালীয়, ডাচ, পর্তুগিজ, রাশিয়ান, চাইনিজ এবং ফার্সি ভাষায় উপলব্ধ
- [Chainlens](https://www.chainlens.com/)
-- [DexGuru ব্লক এক্সপ্লোরার](https://ethereum.dex.guru/)
+- [DexGuru Block Explorer](https://ethereum.dex.guru/)
- [Etherchain](https://www.etherchain.org/)
-- [Ethplorer](https://ethplorer.io/) -_চীনা, স্প্যানিশ, ফরাসি, তুর্কি, রাশিয়ান, কোরিয়ান এবং ভিয়েতনামী ভাষায়ও উপলব্ধ_
+- [Etherscan](https://etherscan.io/) - চাইনিজ, কোরিয়ান, রাশিয়ান এবং জাপানি ভাষায়ও উপলব্ধ
+- [Ethplorer](https://ethplorer.io/) - টোকেনের উপর ফোকাস করা একটি ব্লক এক্সপ্লোরার। চাইনিজ, স্প্যানিশ, ফ্রেঞ্চ, তুর্কি, রাশিয়ান, কোরিয়ান এবং ভিয়েতনামী ভাষায়ও উপলব্ধ
+- [Ethseer](https://ethseer.io)
- [EthVM](https://www.ethvm.com/)
- [OKLink](https://www.oklink.com/eth)
-- [Ethseer](https://ethseer.io)
-
-## ওপেন সোর্স টুলস {#open-source-tools}
-
-- [Otterscan](https://otterscan.io/)
-- [lazy-etherscan](https://github.com/woxjro/lazy-etherscan)
-## ডেটা {#data}
+## ডাটা {#data}
-ইথেরিয়াম ডিজাইন অনুযায়ী স্বচ্ছ তাই সবকিছু যাচাইযোগ্য। ব্লক এক্সপ্লোরার এই তথ্য পাওয়ার জন্য একটি ইন্টারফেস প্রদান করে। এবং আপনার যদি সেই ডেটার প্রয়োজন হয়, তবে এটি মূল ইথেরিয়াম নেটওয়ার্ক এবং টেস্টনেট উভয়ের জন্যই। ডেটা এক্সিকিউশন ডেটা এবং কনসেন্সাস ডেটাতে বিভক্ত। এক্সিকিউশন ডেটা একটি নির্দিষ্ট ব্লকে সম্পাদিত লেনদেনকে বোঝায়। কনসেন্সাস ডেটা বলতে ব্লকগুলি এবং যে ভ্যালিডেটররা সেগুলির প্রস্তাব দিয়েছিল তাদের বোঝায়।
+ইথিরিয়াম ডিজাইনের দিক থেকে স্বচ্ছ, তাই সবকিছু যাচাইযোগ্য। ব্লক এক্সপ্লোরারগুলো এই তথ্য পাওয়ার জন্য একটি ইন্টারফেস প্রদান করে। আর এটি মূল ইথিরিয়াম নেটওয়ার্ক এবং টেস্টনেট উভয়ের জন্যই প্রযোজ্য, যদি আপনার সেই ডাটার প্রয়োজন হয়। ডাটাকে এক্সিকিউশন ডাটা এবং কনসেন্সাস ডাটায় ভাগ করা হয়েছে। এক্সিকিউশন ডাটা বলতে একটি নির্দিষ্ট ব্লকে এক্সিকিউট হওয়া লেনদেনগুলোকে বোঝায়। কনসেন্সাস ডাটা বলতে ব্লকগুলো এবং যে ভ্যালিডেটরস সেগুলো প্রস্তাব করেছে তাদের বোঝায়।
-এখানে একটি ব্লক এক্সপ্লোরার থেকে আপনি যে ধরনের ডেটা পেতে পারেন তার একটি সারসংক্ষেপ রয়েছে।
+একটি ব্লক এক্সপ্লোরার থেকে আপনি যে ধরনের ডাটা পেতে পারেন তার একটি সারসংক্ষেপ নিচে দেওয়া হলো।
-### এক্সিকিউশন ডেটা {#execution-data}
+### এক্সিকিউশন ডাটা {#execution-data}
-প্রতি 12 সেকেন্ডে ইথেরিয়ামে নতুন ব্লক যুক্ত করা হয় (যদি না কোনো ব্লক প্রোপোজার তার পালা মিস করে), তাই ব্লক এক্সপ্লোরারগুলিতে প্রায়-ধ্রুবক ডেটার একটি প্রবাহ যুক্ত হয়। ব্লকগুলিতে অনেক গুরুত্বপূর্ণ ডেটা রয়েছে যা আপনার কাছে দরকারী মনে হতে পারে:
+ইথিরিয়ামে প্রতি 12 সেকেন্ডে নতুন ব্লক যোগ করা হয় (যদি না কোনো ব্লক প্রপোজার তার টার্ন মিস করে), তাই ব্লক এক্সপ্লোরারগুলোতে প্রায় অবিচ্ছিন্নভাবে ডাটার একটি স্ট্রিম যোগ হতে থাকে। ব্লকগুলোতে অনেক গুরুত্বপূর্ণ ডাটা থাকে যা আপনার কাজে লাগতে পারে:
-**স্ট্যান্ডার্ড ডেটা**
+**সাধারণ ডাটা**
-- ব্লক হাইট - বর্তমান ব্লক তৈরির সময় ব্লক নম্বর এবং ব্লকচেইনের দৈর্ঘ্য (ব্লকে)।
-- টাইমস্ট্যাম্প - যে সময়ে একটি ব্লকের প্রস্তাব করা হয়েছিল।
-- লেনদেন - ব্লকের মধ্যে অন্তর্ভুক্ত লেনদেনের সংখ্যা।
-- ফি প্রাপক - যে অ্যাড্রেস লেনদেন থেকে গ্যাস ফি টিপস পেয়েছে।
-- ব্লক রিওয়ার্ড - যে ভ্যালিডেটর ব্লকটির প্রস্তাব করেছে তাকে পুরস্কৃত করা ETH-এর পরিমাণ।
-- সাইজ - ব্লকের মধ্যে ডেটার সাইজ (বাইটে পরিমাপ করা হয়)।
-- ব্যবহৃত গ্যাস - ব্লকের লেনদেন দ্বারা ব্যবহৃত গ্যাসের মোট একক।
-- গ্যাস লিমিট - ব্লকের লেনদেন দ্বারা সেট করা মোট গ্যাস লিমিট।
-- গ্যাস প্রতি বেস ফি - একটি ব্লকে একটি লেনদেন অন্তর্ভুক্ত করার জন্য প্রয়োজনীয় সর্বনিম্ন গুণক।
-- বার্নড ফি - ব্লকে কত ETH বার্ন করা হয়।
-- অতিরিক্ত ডেটা - বিল্ডার ব্লকে অন্তর্ভুক্ত করেছে এমন কোনো অতিরিক্ত ডেটা।
+- Block height - বর্তমান ব্লক তৈরির সময় ব্লক নম্বর এবং ব্লকচেইনের দৈর্ঘ্য (ব্লকে)
+- Timestamp - যে সময়ে একটি ব্লক প্রস্তাব করা হয়েছিল
+- Transactions - ব্লকের অন্তর্ভুক্ত লেনদেনের সংখ্যা
+- Fee recipient - যে এডড্রেস লেনদেন থেকে গ্যাস ফি টিপস পেয়েছে
+- Block Reward - যে ভ্যালিডেটর ব্লকটি প্রস্তাব করেছে তাকে পুরস্কৃত করা ETH এর পরিমাণ
+- Size - ব্লকের ভেতরের ডাটার আকার (বাইটে পরিমাপ করা হয়)
+- Gas used - ব্লকের লেনদেনগুলো দ্বারা ব্যবহৃত মোট গ্যাস ইউনিট
+- Gas limit - ব্লকের লেনদেনগুলো দ্বারা সেট করা মোট গ্যাস লিমিট
+- Base fee per gas - একটি ব্লকে লেনদেন অন্তর্ভুক্ত করার জন্য প্রয়োজনীয় ন্যূনতম মাল্টিপ্লায়ার
+- Burnt fees - ব্লকে কত ETH বার্ন করা হয়েছে
+- Extra data - বিল্ডার ব্লকে অন্তর্ভুক্ত করেছে এমন যেকোনো অতিরিক্ত ডাটা
-**অ্যাডভান্সড ডেটা**
+**অ্যাডভান্সড ডাটা**
-- হ্যাস - ক্রিপ্টোগ্রাফিক হ্যাস যা ব্লক হেডারকে (ব্লকের অনন্য শনাক্তকারী) প্রতিনিধিত্ব করে।
-- পেরেন্ট হ্যাস - বর্তমান ব্লকের আগে আসা ব্লকের হ্যাস।
-- স্টেট রুট - Merkle trie-এর রুট হ্যাস যা সিস্টেমের সমগ্র স্টেট সংরক্ষণ করে।
+- Hash - ক্রিপ্টোগ্রাফিক হ্যাস যা ব্লক হেডারকে উপস্থাপন করে (ব্লকের ইউনিক আইডেন্টিফায়ার)
+- Parent hash - বর্তমান ব্লকের আগের ব্লকের হ্যাস
+- StateRoot - মার্কেল ট্রাই (Merkle trie) এর রুট হ্যাস যা সিস্টেমের সম্পূর্ণ স্টেট সংরক্ষণ করে
### গ্যাস {#gas}
-ব্লক এক্সপ্লোরারগুলি আপনাকে কেবল লেনদেন এবং ব্লকে গ্যাস ব্যবহার সম্পর্কে ডেটা দেবে না, কিছু কিছু আপনাকে নেটওয়ার্কের বর্তমান গ্যাসের দাম সম্পর্কেও তথ্য দেবে। এটি আপনাকে নেটওয়ার্ক ব্যবহার বুঝতে, নিরাপদ লেনদেন জমা দিতে এবং গ্যাসে অতিরিক্ত খরচ না করতে সাহায্য করবে। আপনার পণ্যের ইন্টারফেসে এই তথ্য পেতে সাহায্য করতে পারে এমন API-গুলির জন্য সন্ধান করুন। গ্যাস-নির্দিষ্ট ডেটা কভার করে:
+ব্লক এক্সপ্লোরারগুলো শুধু লেনদেন এবং ব্লকে গ্যাস ব্যবহারের ডাটাই দেবে না, বরং কিছু এক্সপ্লোরার নেটওয়ার্কের বর্তমান গ্যাস প্রাইস সম্পর্কেও তথ্য দেবে। এটি আপনাকে নেটওয়ার্কের ব্যবহার বুঝতে, নিরাপদ লেনদেন সাবমিট করতে এবং গ্যাসে অতিরিক্ত খরচ না করতে সাহায্য করবে। এমন API-গুলোর দিকে নজর রাখুন যা আপনাকে এই তথ্যগুলো আপনার প্রোডাক্টের ইন্টারফেসে পেতে সাহায্য করতে পারে। গ্যাস-সম্পর্কিত ডাটার মধ্যে রয়েছে:
-- একটি নিরাপদ কিন্তু ধীর লেনদেনের জন্য প্রয়োজনীয় গ্যাসের আনুমানিক ইউনিট (+ আনুমানিক মূল্য এবং সময়কাল)
-- একটি গড় লেনদেনের জন্য প্রয়োজনীয় গ্যাসের আনুমানিক ইউনিট (+ আনুমানিক মূল্য এবং সময়কাল)
-- একটি দ্রুত লেনদেনের জন্য প্রয়োজনীয় গ্যাসের আনুমানিক ইউনিট (+ আনুমানিক মূল্য এবং সময়কাল)
-- গ্যাসের দামের উপর ভিত্তি করে গড় কনফার্মেশন সময়।
-- যেসব কন্ট্র্যাক্ট গ্যাস ব্যবহার করছে - অন্য কথায়, জনপ্রিয় পণ্য যা নেটওয়ার্কে প্রচুর ব্যবহার হচ্ছে।
-- যেসব অ্যাকাউন্ট গ্যাস খরচ করছে - অন্য কথায়, ঘন ঘন নেটওয়ার্ক ব্যবহারকারীরা।
+- একটি নিরাপদ কিন্তু ধীর লেনদেনের জন্য প্রয়োজনীয় আনুমানিক গ্যাস ইউনিট (+ আনুমানিক মূল্য এবং সময়কাল)
+- একটি গড় লেনদেনের জন্য প্রয়োজনীয় আনুমানিক গ্যাস ইউনিট (+ আনুমানিক মূল্য এবং সময়কাল)
+- একটি দ্রুত লেনদেনের জন্য প্রয়োজনীয় আনুমানিক গ্যাস ইউনিট (+ আনুমানিক মূল্য এবং সময়কাল)
+- গ্যাস প্রাইস এর উপর ভিত্তি করে গড় কনফার্মেশন সময়
+- যে কন্ট্রাক্টগুলো গ্যাস ব্যবহার করছে - অন্য কথায়, জনপ্রিয় প্রোডাক্টগুলো যেগুলো নেটওয়ার্কে প্রচুর ব্যবহৃত হচ্ছে
+- যে একাউন্টগুলো গ্যাস খরচ করছে - অন্য কথায়, নেটওয়ার্কের নিয়মিত ব্যবহারকারীরা
### লেনদেন {#transactions}
-ব্লক এক্সপ্লোরার মানুষের জন্য তাদের লেনদেনের অগ্রগতি ট্র্যাক করার জন্য একটি সাধারণ জায়গা হয়ে উঠেছে। এর কারণ হল আপনি যে স্তরের বিস্তারিত তথ্য পেতে পারেন তা অতিরিক্ত নিশ্চয়তা প্রদান করে। লেনদেনের ডেটা অন্তর্ভুক্ত:
+ব্লক এক্সপ্লোরারগুলো মানুষের জন্য তাদের লেনদেনের অগ্রগতি ট্র্যাক করার একটি সাধারণ জায়গা হয়ে উঠেছে। এর কারণ হলো আপনি যে পরিমাণ বিস্তারিত তথ্য পেতে পারেন তা অতিরিক্ত নিশ্চয়তা প্রদান করে। লেনদেনের ডাটার মধ্যে রয়েছে:
-**স্ট্যান্ডার্ড ডেটা**
+**সাধারণ ডাটা**
-- লেনদেনের হ্যাস - লেনদেন জমা দেওয়ার সময় একটি হ্যাস তৈরি হয়।
-- স্ট্যাটাস - লেনদেনটি পেন্ডিং, ব্যর্থ বা সফল কিনা তার একটি ইঙ্গিত।
-- ব্লক - যে ব্লকে লেনদেন অন্তর্ভুক্ত করা হয়েছে।
-- টাইমস্ট্যাম্প - যে সময়ে একটি লেনদেন একজন ভ্যালিডেটর দ্বারা প্রস্তাবিত একটি ব্লকে অন্তর্ভুক্ত করা হয়েছিল।
-- প্রেরক - লেনদেন জমা দেওয়া অ্যাকাউন্টের অ্যাড্রেস।
-- প্রাপক - প্রাপকের অ্যাড্রেস বা স্মার্ট কন্ট্র্যাক্ট যার সাথে লেনদেনটি ইন্টারঅ্যাক্ট করে।
-- স্থানান্তরিত টোকেন - লেনদেনের অংশ হিসাবে স্থানান্তরিত টোকেনের একটি তালিকা।
-- ভ্যালু - স্থানান্তরিত মোট ETH ভ্যালু।
-- লেনদেন ফি - লেনদেন প্রক্রিয়া করার জন্য ভ্যালিডেটরকে প্রদত্ত পরিমাণ (গ্যাসের মূল্য\*ব্যবহৃত গ্যাস দ্বারা গণনা করা হয়)।
+- Transaction hash - লেনদেন সাবমিট করার সময় তৈরি হওয়া একটি হ্যাস
+- Status - লেনদেনটি পেন্ডিং, ব্যর্থ নাকি সফল তার একটি নির্দেশক
+- Block - যে ব্লকে লেনদেনটি অন্তর্ভুক্ত করা হয়েছে
+- Timestamp - যে সময়ে একটি ভ্যালিডেটর দ্বারা প্রস্তাবিত ব্লকে লেনদেনটি অন্তর্ভুক্ত করা হয়েছিল
+- From - যে একাউন্ট লেনদেনটি সাবমিট করেছে তার এডড্রেস
+- To - প্রাপক বা স্মার্ট কন্ট্রাক্ট এর এডড্রেস যার সাথে লেনদেনটি ইন্টারঅ্যাক্ট করে
+- Tokens transferred - লেনদেনের অংশ হিসেবে ট্রান্সফার হওয়া টোকেনগুলোর একটি তালিকা
+- Value - ট্রান্সফার হওয়া মোট ETH এর পরিমাণ
+- Transaction fee - লেনদেনটি প্রসেস করার জন্য ভ্যালিডেটরকে প্রদান করা পরিমাণ (গ্যাস প্রাইস\*গ্যাস ব্যবহৃত দ্বারা হিসাব করা হয়)
-**অ্যাডভান্সড ডেটা**
+**অ্যাডভান্সড ডাটা**
-- গ্যাস লিমিট - এই লেনদেনটি সর্বোচ্চ যত ইউনিট গ্যাস ব্যবহার করতে পারে।
-- ব্যবহৃত গ্যাস - লেনদেনটি যে পরিমাণ গ্যাস ইউনিট ব্যবহার করেছে।
-- গ্যাসের মূল্য - প্রতি গ্যাস ইউনিটের জন্য নির্ধারিত মূল্য।
-- Nonce - `from` অ্যাড্রেসের জন্য লেনদেন নম্বর (মনে রাখবেন এটি 0 থেকে শুরু হয় তাই `100` এর একটি নন্স আসলে এই অ্যাকাউন্ট দ্বারা জমা দেওয়া 101তম লেনদেন হবে)।
-- ইনপুট ডেটা - লেনদেনের জন্য প্রয়োজনীয় যেকোনো অতিরিক্ত তথ্য।
+- Gas limit - এই লেনদেনটি সর্বোচ্চ যত গ্যাস ইউনিট ব্যবহার করতে পারে
+- Gas used - লেনদেনটি প্রকৃতপক্ষে যত গ্যাস ইউনিট ব্যবহার করেছে
+- Gas price - প্রতি গ্যাস ইউনিটের জন্য নির্ধারিত মূল্য
+- Nonce - `from` এডড্রেস এর জন্য লেনদেন নম্বর (মনে রাখবেন এটি 0 থেকে শুরু হয়, তাই `100` নন্স আসলে এই একাউন্ট দ্বারা সাবমিট করা 101 তম লেনদেন হবে)
+- Input data - লেনদেনের জন্য প্রয়োজনীয় যেকোনো অতিরিক্ত তথ্য
-### অ্যাকাউন্ট {#accounts}
+### একাউন্ট {#accounts}
-একটি অ্যাকাউন্ট সম্পর্কে আপনি অনেক ডেটা অ্যাক্সেস করতে পারেন। এই কারণেই প্রায়শই একাধিক অ্যাকাউন্ট ব্যবহার করার পরামর্শ দেওয়া হয় যাতে আপনার সম্পদ এবং মূল্য সহজে ট্র্যাক করা না যায়। লেনদেন এবং অ্যাকাউন্টের কার্যকলাপকে আরও ব্যক্তিগত করার জন্য কিছু সমাধানও তৈরি করা হচ্ছে। তবে এখানে অ্যাকাউন্টগুলির জন্য উপলব্ধ ডেটা রয়েছে:
+একটি একাউন্ট সম্পর্কে আপনি অনেক ডাটা অ্যাক্সেস করতে পারেন। এই কারণেই প্রায়শই একাধিক একাউন্ট ব্যবহার করার পরামর্শ দেওয়া হয় যাতে আপনার সম্পদ এবং মূল্য সহজে ট্র্যাক করা না যায়। লেনদেন এবং একাউন্টের কার্যকলাপকে আরও ব্যক্তিগত করার জন্য কিছু সমাধানও তৈরি করা হচ্ছে। তবে একাউন্টের জন্য যে ডাটাগুলো পাওয়া যায় তা নিচে দেওয়া হলো:
-**ব্যবহারকারী অ্যাকাউন্ট**
+**ইউজার একাউন্ট**
-- অ্যাকাউন্ট অ্যাড্রেস - পাবলিক অ্যাড্রেস যা আপনি ফান্ড পাঠাতে ব্যবহার করতে পারেন।
-- ETH ব্যালেন্স - সেই অ্যাকাউন্টের সাথে যুক্ত ETH-এর পরিমাণ।
-- মোট ETH ভ্যালু - ETH-এর ভ্যালু।
-- টোকেন - অ্যাকাউন্টের সাথে যুক্ত টোকেন এবং তাদের ভ্যালু।
-- লেনদেনের ইতিহাস - সমস্ত লেনদেনের একটি তালিকা যেখানে এই অ্যাকাউন্টটি প্রেরক বা প্রাপক ছিল।
+- Account address - পাবলিক এডড্রেস যা আপনি ফান্ড পাঠাতে ব্যবহার করতে পারেন
+- ETH balance - সেই একাউন্টের সাথে যুক্ত ETH এর পরিমাণ
+- Total ETH value - ETH এর মূল্য
+- Tokens - একাউন্টের সাথে যুক্ত টোকেন এবং সেগুলোর মূল্য
+- Transaction history - সমস্ত লেনদেনের একটি তালিকা যেখানে এই একাউন্টটি প্রেরক বা প্রাপক ছিল
-**স্মার্ট কন্ট্র্যাক্ট**
+**স্মার্ট কন্ট্রাক্ট**
-স্মার্ট কন্ট্র্যাক্ট অ্যাকাউন্টগুলিতে একটি ব্যবহারকারী অ্যাকাউন্টের সমস্ত ডেটা থাকে, তবে কিছু ব্লক এক্সপ্লোরার এমনকি কিছু কোড তথ্যও প্রদর্শন করবে। উদাহরণগুলির মধ্যে রয়েছে:
+স্মার্ট কন্ট্রাক্ট একাউন্টগুলোতে একটি ইউজার একাউন্টের সমস্ত ডাটা থাকে, তবে কিছু ব্লক এক্সপ্লোরার এমনকি কিছু কোডের তথ্যও প্রদর্শন করবে। উদাহরণস্বরূপ:
-- কন্ট্র্যাক্ট নির্মাতা - যে অ্যাড্রেসটি Mainnet-এ কন্ট্র্যাক্টটি ডিপ্লয় করেছে।
-- তৈরির লেনদেন - যে লেনদেন Mainnet-এ ডিপ্লয়মেন্ট অন্তর্ভুক্ত করেছে।
-- সোর্স কোড - স্মার্ট কন্ট্র্যাক্টের সলিডিটি বা ভাইপার কোড।
-- কন্ট্র্যাক্ট ABI - কন্ট্র্যাক্টের অ্যাপ্লিকেশন বাইনারি ইন্টারফেস—কন্ট্র্যাক্ট যে কলগুলি করে এবং প্রাপ্ত ডেটা।
-- কন্ট্র্যাক্ট তৈরির কোড - স্মার্ট কন্ট্র্যাক্টের কম্পাইল করা বাইটকোড—আপনি যখন সলিডিটি বা ভাইপার ইত্যাদিতে লেখা একটি স্মার্ট কন্ট্র্যাক্ট কম্পাইল করেন তখন তৈরি হয়।
-- কন্ট্র্যাক্ট ইভেন্ট - স্মার্ট কন্ট্র্যাক্টে কল করা পদ্ধতিগুলির একটি ইতিহাস—মূলত কন্ট্র্যাক্টটি কীভাবে এবং কত ঘন ঘন ব্যবহার করা হচ্ছে তা দেখার একটি উপায়।
+- Contract creator - যে এডড্রেস মেইননেট এ কন্ট্রাক্টটি ডিপ্লয় করেছে
+- Creation transaction - যে লেনদেনের মাধ্যমে মেইননেট এ ডিপ্লয়মেন্ট অন্তর্ভুক্ত ছিল
+- Source code - স্মার্ট কন্ট্রাক্ট এর সলিডিটি (Solidity) বা ভাইপার (Vyper) কোড
+- Contract ABI - কন্ট্রাক্টের অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (Application Binary Interface)—কন্ট্রাক্টটি যে কলগুলো করে এবং যে ডাটা গ্রহণ করে
+- Contract creation code - স্মার্ট কন্ট্রাক্ট এর কম্পাইল করা বাইটকোড—যখন আপনি Solidity বা Vyper ইত্যাদিতে লেখা একটি স্মার্ট কন্ট্রাক্ট কম্পাইল করেন তখন এটি তৈরি হয়।
+- Contract events - স্মার্ট কন্ট্রাক্ট এ কল করা মেথডগুলোর একটি ইতিহাস—মূলত কন্ট্রাক্টটি কীভাবে এবং কত ঘন ঘন ব্যবহার করা হচ্ছে তা দেখার একটি উপায়
### টোকেন {#tokens}
-টোকেন এক ধরনের কন্ট্র্যাক্ট তাই তাদের স্মার্ট কন্ট্র্যাক্টের মতো একই ধরনের ডেটা থাকবে। কিন্তু যেহেতু তাদের মূল্য আছে এবং ট্রেড করা যায়, তাই তাদের অতিরিক্ত ডেটা পয়েন্ট রয়েছে:
+টোকেন হলো এক ধরনের কন্ট্রাক্ট, তাই এগুলোতে স্মার্ট কন্ট্রাক্ট এর মতোই ডাটা থাকবে। তবে যেহেতু এগুলোর মূল্য আছে এবং ট্রেড করা যায়, তাই এগুলোতে অতিরিক্ত ডাটা পয়েন্ট থাকে:
-- প্রকার - সেগুলি একটি ERC-20, ERC-721 বা অন্য কোনো টোকেন স্ট্যান্ডার্ড কিনা।
-- মূল্য - যদি সেগুলি একটি ERC-20 হয় তবে তাদের একটি বর্তমান বাজার মূল্য থাকবে।
-- মার্কেট ক্যাপ - যদি সেগুলি একটি ERC-20 হয় তবে তাদের একটি মার্কেট ক্যাপ থাকবে (মূল্য\*মোট সরবরাহ দ্বারা গণনা করা হয়)।
-- মোট সরবরাহ - প্রচলিত টোকেনের সংখ্যা।
-- হোল্ডার - টোকেন ধারণকারী অ্যাড্রেসের সংখ্যা।
-- স্থানান্তর - অ্যাকাউন্টগুলির মধ্যে টোকেনটি যতবার স্থানান্তরিত হয়েছে।
-- লেনদেনের ইতিহাস - টোকেন সহ সমস্ত লেনদেনের একটি ইতিহাস।
-- কন্ট্র্যাক্ট অ্যাড্রেস - Mainnet-এ ডিপ্লয় করা টোকেনের অ্যাড্রেস।
-- ডেসিমেল - ERC-20 টোকেন বিভাজ্য এবং দশমিক স্থান আছে।
+- Type - এগুলো ERC-20, ERC-721 নাকি অন্য কোনো টোকেন স্ট্যান্ডার্ড
+- Price - যদি এগুলো ERC-20 হয় তবে এগুলোর একটি বর্তমান বাজার মূল্য থাকবে
+- Market cap - যদি এগুলো ERC-20 হয় তবে এগুলোর একটি মার্কেট ক্যাপ থাকবে (মূল্য\*মোট সাপ্লাই দ্বারা হিসাব করা হয়)
+- Total supply - সার্কুলেশনে থাকা টোকেনের সংখ্যা
+- Holders - টোকেনটি ধারণকারী এডড্রেস এর সংখ্যা
+- Transfers - একাউন্টগুলোর মধ্যে টোকেনটি কতবার ট্রান্সফার করা হয়েছে তার সংখ্যা
+- Transaction history - টোকেনটি অন্তর্ভুক্ত থাকা সমস্ত লেনদেনের একটি ইতিহাস
+- Contract address - মেইননেট এ ডিপ্লয় করা টোকেনটির এডড্রেস
+- Decimals - ERC-20 টোকেনগুলো বিভাজ্য এবং এগুলোর দশমিক স্থান রয়েছে
-### নেটওয়ার্ক {#network}
+### নেটওয়ার্ক {#network}
-কিছু ব্লক ডেটা আরও সামগ্রিকভাবে ইথেরিয়ামের স্বাস্থ্য সম্পর্কে উদ্বিগ্ন।
+কিছু ব্লক ডাটা সামগ্রিকভাবে ইথিরিয়ামের স্বাস্থ্য সম্পর্কে ধারণা দেয়।
-- মোট লেনদেন - ইথেরিয়াম তৈরি হওয়ার পর থেকে লেনদেনের সংখ্যা।
-- প্রতি সেকেন্ডে লেনদেন - এক সেকেন্ডের মধ্যে প্রক্রিয়াযোগ্য লেনদেনের সংখ্যা।
-- ETH মূল্য - 1 ETH-এর বর্তমান মূল্যায়ন।
-- মোট ETH সরবরাহ - প্রচলিত ETH-এর সংখ্যা—মনে রাখবেন ব্লক রিওয়ার্ড আকারে প্রতিটি ব্লক তৈরির সাথে নতুন ETH তৈরি হয়।
-- মার্কেট ক্যাপ - মূল্য\*সরবরাহের গণনা।
+- Total transactions - ইথিরিয়াম তৈরি হওয়ার পর থেকে লেনদেনের সংখ্যা
+- Transactions per second - এক সেকেন্ডের মধ্যে প্রসেসযোগ্য লেনদেনের সংখ্যা
+- ETH price - 1 ETH এর বর্তমান মূল্য
+- Total ETH supply - সার্কুলেশনে থাকা ETH এর সংখ্যা—মনে রাখবেন প্রতিটি ব্লক তৈরির সাথে সাথে ব্লক রিওয়ার্ড হিসেবে নতুন ETH তৈরি হয়
+- Market cap - মূল্য\*সাপ্লাই এর হিসাব
-## কনসেন্সাস লেয়ার ডেটা {#consensus-layer-data}
+## কনসেন্সাস লেয়ার ডাটা {#consensus-layer-data}
-### ইপক {#epoch}
+### এপোক {#epoch}
-নিরাপত্তার কারণে, প্রতিটি ইপকের শেষে (প্রতি 6.4 মিনিটে) ভ্যালিডেটরদের র্যান্ডমাইজড কমিটি তৈরি করা হয়। ইপক ডেটা অন্তর্ভুক্ত:
+নিরাপত্তার কারণে, প্রতিটি এপোক এর শেষে (প্রতি 6.4 মিনিটে) ভ্যালিডেটরস এর র্যান্ডমাইজড কমিটি তৈরি করা হয়। এপোক ডাটার মধ্যে রয়েছে:
-- ইপক নম্বর
-- ফাইনাল করা স্ট্যাটাস - ইপক ফাইনাল করা হয়েছে কিনা (হ্যাঁ/না)।
-- সময় - যে সময়ে ইপক শেষ হয়েছিল।
-- অ্যাটেস্টেশন - ইপকের অ্যাটেস্টেশনের সংখ্যা (স্লটের মধ্যে ব্লকের জন্য ভোট)।
-- ডিপোজিট - ইপকে অন্তর্ভুক্ত ETH ডিপোজিটের সংখ্যা (ভ্যালিডেটরদের ভ্যালিডেটর হওয়ার জন্য ETH স্টেক করতে হবে)।
-- স্ল্যাশিং - ব্লক বা অ্যাটেস্টরদের প্রস্তাবকদের দেওয়া পেনাল্টির সংখ্যা।
-- ভোটদান অংশগ্রহণ - ব্লক অ্যাটেস্ট করতে ব্যবহৃত স্টেক করা ETH-এর পরিমাণ।
-- ভ্যালিডেটর - ইপকের জন্য সক্রিয় ভ্যালিডেটরের সংখ্যা।
-- গড় ভ্যালিডেটর ব্যালেন্স - সক্রিয় ভ্যালিডেটরদের জন্য গড় ব্যালেন্স।
-- স্লট - ইপকে অন্তর্ভুক্ত স্লটের সংখ্যা (স্লটে একটি বৈধ ব্লক অন্তর্ভুক্ত থাকে)।
+- Epoch number
+- Finalized status - এপোকটি চূড়ান্ত করা হয়েছে কিনা (হ্যাঁ/না)
+- Time - এপোক শেষ হওয়ার সময়
+- Attestations - এপোক এ এটেস্টেশন এর সংখ্যা (স্লটগুলোর মধ্যে ব্লকের জন্য ভোট)
+- Deposits - এপোক এ অন্তর্ভুক্ত ETH ডিপোজিটের সংখ্যা (ভ্যালিডেটরস হওয়ার জন্য ভ্যালিডেটরসদের অবশ্যই ETH স্টেক করতে হবে)
+- Slashings - ব্লকের প্রপোজার বা এটেস্টরদের দেওয়া জরিমানার সংখ্যা
+- Voting participation - ব্লক এটেস্ট করার জন্য ব্যবহৃত স্টেক করা ETH এর পরিমাণ
+- Validators - এপোক এর জন্য সক্রিয় ভ্যালিডেটরস এর সংখ্যা
+- Average Validator balance - সক্রিয় ভ্যালিডেটরস এর গড় ব্যালেন্স
+- Slots - এপোক এ অন্তর্ভুক্ত স্লটের সংখ্যা (স্লটগুলোতে একটি বৈধ ব্লক থাকে)
### স্লট {#slot}
-স্লট হল ব্লক তৈরির সুযোগ, প্রতিটি স্লটের জন্য উপলব্ধ ডেটা অন্তর্ভুক্ত:
-
-- ইপক - যে ইপকে স্লটটি বৈধ।
-- স্লট নম্বর
-- স্ট্যাটাস - স্লটের স্ট্যাটাস (প্রস্তাবিত/মিসড)।
-- সময় - স্লটের টাইমস্ট্যাম্প।
-- প্রস্তাবক - যে ভ্যালিডেটর স্লটের জন্য ব্লকের প্রস্তাব করেছিল।
-- ব্লক রুট - BeaconBlock-এর হ্যাস-ট্রি-রুট।
-- পেরেন্ট রুট - এর আগে আসা ব্লকের হ্যাস।
-- স্টেট রুট - BeaconState-এর হ্যাস-ট্রি-রুট।
-- স্বাক্ষর
-- Randao রিভিল
-- গ্রাফিতি - একটি ব্লক প্রস্তাবক তার ব্লক প্রস্তাবে 32 বাইট দীর্ঘ বার্তা অন্তর্ভুক্ত করতে পারে।
-- এক্সিকিউশন ডেটা
- - ব্লক হ্যাস
- - ডিপোজিট কাউন্ট
- - ডিপোজিট রুট
-- অ্যাটেস্টেশন - এই স্লটে ব্লকের জন্য অ্যাটেস্টেশনের সংখ্যা।
-- ডিপোজিট - এই স্লটের সময় ডিপোজিটের সংখ্যা।
-- স্বেচ্ছায় প্রস্থান - স্লটের সময় চলে যাওয়া ভ্যালিডেটরদের সংখ্যা।
-- স্ল্যাশিং - ব্লক বা অ্যাটেস্টরদের প্রস্তাবকদের দেওয়া পেনাল্টির সংখ্যা।
-- ভোট - এই স্লটে ব্লকের জন্য ভোট দেওয়া ভ্যালিডেটররা।
-
-### ব্লক {#blocks-1}
-
-প্রুফ-অফ-স্টেক সময়কে স্লট এবং ইপকে বিভক্ত করে। সুতরাং এর মানে নতুন ডেটা!
-
-- প্রস্তাবক - নতুন ব্লকের প্রস্তাব দেওয়ার জন্য অ্যালগরিদমিকভাবে নির্বাচিত ভ্যালিডেটর।
-- ইপক - যে ইপকে ব্লকের প্রস্তাব করা হয়েছিল।
-- স্লট - যে স্লটে ব্লকের প্রস্তাব করা হয়েছিল।
-- অ্যাটেস্টেশন - স্লটে অন্তর্ভুক্ত অ্যাটেস্টেশনের সংখ্যা—অ্যাটেস্টেশন হল ভোটের মতো যা নির্দেশ করে যে ব্লকটি বিকন চেইনে যাওয়ার জন্য প্রস্তুত।
-
-### ভ্যালিডেটর {#validators}
-
-ভ্যালিডেটররা স্লটের মধ্যে ব্লক প্রস্তাব এবং অ্যাটেস্ট করার জন্য দায়ী।
-
-- ভ্যালিডেটর নম্বর - অনন্য নম্বর যা ভ্যালিডেটরকে প্রতিনিধিত্ব করে।
-- বর্তমান ব্যালেন্স - পুরস্কার সহ ভ্যালিডেটরের ব্যালেন্স।
-- কার্যকরী ব্যালেন্স - ভ্যালিডেটরের ব্যালেন্স যা স্টেকিংয়ের জন্য ব্যবহৃত হয়।
-- আয় - ভ্যালিডেটর দ্বারা প্রাপ্ত পুরস্কার বা পেনাল্টি।
-- স্ট্যাটাস - ভ্যালিডেটর বর্তমানে অনলাইন এবং সক্রিয় আছে কি না।
-- অ্যাটেস্টেশন কার্যকারিতা - ভ্যালিডেটরের অ্যাটেস্টেশনগুলি চেইনে অন্তর্ভুক্ত হতে যে গড় সময় লাগে।
-- অ্যাক্টিভেশনের জন্য যোগ্যতা - তারিখ (এবং ইপক) যখন ভ্যালিডেটর ভ্যালিডেট করার জন্য উপলব্ধ হয়েছিল।
-- থেকে সক্রিয় - তারিখ (এবং ইপক) যখন ভ্যালিডেটর সক্রিয় হয়েছিল।
-- প্রস্তাবিত ব্লক - ভ্যালিডেটর যে ব্লকের প্রস্তাব করেছে।
-- অ্যাটেস্টেশন - ভ্যালিডেটর যে অ্যাটেস্টেশনগুলি প্রদান করেছে।
-- ডিপোজিট - ভ্যালিডেটরের দ্বারা করা স্টেকিং ডিপোজিটের প্রেরকের অ্যাড্রেস, লেনদেন হ্যাস, ব্লক নম্বর, টাইমস্ট্যাম্প, পরিমাণ এবং স্ট্যাটাস।
-
-### অ্যাটেস্টেশন {#attestations}
-
-অ্যাটেস্টেশনগুলি হল চেইনে ব্লক অন্তর্ভুক্ত করার জন্য "হ্যাঁ" ভোট। তাদের ডেটা অ্যাটেস্টেশনের একটি রেকর্ড এবং অ্যাটেস্ট করা ভ্যালিডেটরদের সাথে সম্পর্কিত।
-
-- স্লট - যে স্লটে অ্যাটেস্টেশন হয়েছিল।
-- কমিটি ইন্ডেক্স - প্রদত্ত স্লটে কমিটির ইন্ডেক্স।
-- অ্যাগ্রিগেশন বিটস - অ্যাটেস্টেশনে অংশগ্রহণকারী সমস্ত ভ্যালিডেটরের অ্যাগ্রিগেটেড অ্যাটেস্টেশনকে প্রতিনিধিত্ব করে।
-- ভ্যালিডেটর - যে ভ্যালিডেটররা অ্যাটেস্টেশন প্রদান করেছে।
-- বিকন ব্লক রুট - যে ব্লকে ভ্যালিডেটররা অ্যাটেস্ট করছে সেটিকে নির্দেশ করে।
-- সোর্স - সর্বশেষ জাস্টিফাইড ইপককে নির্দেশ করে।
-- টার্গেট - সর্বশেষ ইপক বাউন্ডারিকে নির্দেশ করে।
-- স্বাক্ষর
-
-### নেটওয়ার্ক {#network-1}
-
-কনসেন্সাস লেয়ারের টপ-লেভেল ডেটার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
-
-- বর্তমান ইপক
-- বর্তমান স্লট
-- সক্রিয় ভ্যালিডেটর - সক্রিয় ভ্যালিডেটরের সংখ্যা।
-- পেন্ডিং ভ্যালিডেটর - সক্রিয় হওয়ার জন্য অপেক্ষারত ভ্যালিডেটরের সংখ্যা।
-- স্টেক করা ETH - নেটওয়ার্কে স্টেক করা ETH-এর পরিমাণ।
-- গড় ব্যালেন্স - ভ্যালিডেটরদের গড় ETH ব্যালেন্স।
-
-## ব্লক এক্সপ্লোরার {#block-explorers}
-
-- [Etherscan](https://etherscan.io/) - একটি ব্লক এক্সপ্লোরার যা আপনি Ethereum Mainnet এবং টেস্টনেটের জন্য ডেটা আনতে ব্যবহার করতে পারেন।
-- [3xpl](https://3xpl.com/ethereum) - একটি বিজ্ঞাপন-মুক্ত ওপেন-সোর্স Ethereum এক্সপ্লোরার যা এর ডেটাসেট ডাউনলোড করার অনুমতি দেয়।
-- [Beaconcha.in](https://beaconcha.in/) - Ethereum Mainnet এবং টেস্টনেটের জন্য একটি ওপেন সোর্স ব্লক এক্সপ্লোরার।
-- [Blockchair](https://blockchair.com/ethereum) - সবচেয়ে ব্যক্তিগত Ethereum এক্সপ্লোরার। এছাড়াও (mempool) ডেটা সর্টিং এবং ফিল্টার করার জন্য।
-- [Etherchain](https://www.etherchain.org/) - Ethereum Mainnet-এর জন্য একটি ব্লক এক্সপ্লোরার।
-- [Ethplorer](https://ethplorer.io/) - Ethereum Mainnet এবং Kovan টেস্টনেটের জন্য টোকেনের উপর ফোকাস সহ একটি ব্লক এক্সপ্লোরার।
-
-## আরও পড়ুন {#further-reading}
-
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
-
-## সম্পর্কিত বিষয় {#related-topics}
+স্লটগুলো হলো ব্লক তৈরির সুযোগ, প্রতিটি স্লটের জন্য উপলব্ধ ডাটার মধ্যে রয়েছে:
+
+- Epoch - যে এপোক এ স্লটটি বৈধ
+- Slot number
+- Status - স্লটের স্ট্যাটাস (প্রস্তাবিত/মিসড)
+- Time - স্লটের টাইমস্ট্যাম্প
+- Proposer - যে ভ্যালিডেটর স্লটের জন্য ব্লকটি প্রস্তাব করেছে
+- Block root - বিকনব্লক (BeaconBlock) এর হ্যাস-ট্রি-রুট
+- Parent root - আগের ব্লকের হ্যাস
+- State root - বিকনস্টেট (BeaconState) এর হ্যাস-ট্রি-রুট
+- Signature
+- Randao reveal
+- Graffiti - একজন ব্লক প্রপোজার তার ব্লক প্রস্তাবে 32 বাইট দীর্ঘ মেসেজ অন্তর্ভুক্ত করতে পারে
+- Execution Data
+ - Block hash
+ - Deposit count
+ - Deposit root
+- Attestations - এই স্লটে ব্লকের জন্য এটেস্টেশন এর সংখ্যা
+- Deposits - এই স্লটের সময় ডিপোজিটের সংখ্যা
+- Voluntary exits - স্লটের সময় যে ভ্যালিডেটরস চলে গেছে তাদের সংখ্যা
+- Slashings - ব্লকের প্রপোজার বা এটেস্টরদের দেওয়া জরিমানার সংখ্যা
+- Votes - এই স্লটে ব্লকের জন্য ভোট দেওয়া ভ্যালিডেটরস
+
+### ব্লকস {#blocks-1}
+
+প্রুফ-অফ-স্টেক সময়কে স্লট এবং এপোক এ ভাগ করে। এর মানে হলো নতুন ডাটা!
+
+- Proposer - যে ভ্যালিডেটরকে নতুন ব্লক প্রস্তাব করার জন্য অ্যালগরিদমিকভাবে বেছে নেওয়া হয়েছিল
+- Epoch - যে এপোক এ ব্লকটি প্রস্তাব করা হয়েছিল
+- Slot - যে স্লটে ব্লকটি প্রস্তাব করা হয়েছিল
+- Attestations - স্লটে অন্তর্ভুক্ত এটেস্টেশন এর সংখ্যা—এটেস্টেশন হলো ভোটের মতো যা নির্দেশ করে যে ব্লকটি বিকন চেইন এ যাওয়ার জন্য প্রস্তুত
+
+### ভ্যালিডেটরস {#validators}
+
+ভ্যালিডেটরস স্লটগুলোর মধ্যে ব্লক প্রস্তাব করা এবং সেগুলোতে এটেস্ট করার জন্য দায়ী।
+
+- Validator number - ইউনিক নম্বর যা ভ্যালিডেটরকে উপস্থাপন করে
+- Current balance - রিওয়ার্ডসহ ভ্যালিডেটরের ব্যালেন্স
+- Effective balance - ভ্যালিডেটরের ব্যালেন্স যা স্টেকিং এর জন্য ব্যবহৃত হয়
+- Income - ভ্যালিডেটর দ্বারা প্রাপ্ত রিওয়ার্ড বা জরিমানা
+- Status - ভ্যালিডেটর বর্তমানে অনলাইনে এবং সক্রিয় আছে কিনা
+- Attestation effectiveness - ভ্যালিডেটরের এটেস্টেশনগুলো চেইনে অন্তর্ভুক্ত হতে যে গড় সময় লাগে
+- Eligibility for activation - তারিখ (এবং এপোক) যখন ভ্যালিডেটর ভ্যালিডেট করার জন্য উপলব্ধ হয়েছিল
+- Active since - তারিখ (এবং এপোক) যখন ভ্যালিডেটর সক্রিয় হয়েছিল
+- Proposed blocks - ভ্যালিডেটর যে ব্লকটি প্রস্তাব করেছে
+- Attestations - ভ্যালিডেটর যে এটেস্টেশনগুলো প্রদান করেছে
+- Deposits - ভ্যালিডেটর দ্বারা করা স্টেকিং ডিপোজিটের from এডড্রেস, ট্রানজেকশন হ্যাস, ব্লক নম্বর, টাইমস্ট্যাম্প, পরিমাণ এবং স্ট্যাটাস
+
+### এটেস্টেশন {#attestations}
+
+এটেস্টেশন হলো চেইনে ব্লক অন্তর্ভুক্ত করার জন্য "হ্যাঁ" ভোট। এগুলোর ডাটা এটেস্টেশন এর রেকর্ড এবং যে ভ্যালিডেটরস এটেস্ট করেছে তাদের সাথে সম্পর্কিত
+
+- Slot - যে স্লটে এটেস্টেশন হয়েছিল
+- Committee index - প্রদত্ত স্লটে কমিটির ইনডেক্স
+- Aggregation bits - এটেস্টেশন এ অংশগ্রহণকারী সমস্ত ভ্যালিডেটরস এর একত্রিত এটেস্টেশন উপস্থাপন করে
+- Validators - যে ভ্যালিডেটরস এটেস্টেশন প্রদান করেছে
+- Beacon block root - যে ব্লকে ভ্যালিডেটরস এটেস্ট করছে সেটিকে নির্দেশ করে
+- Source - সর্বশেষ জাস্টিফাইড এপোক নির্দেশ করে
+- Target - সর্বশেষ এপোক বাউন্ডারি নির্দেশ করে
+- Signature
+
+### নেটওয়ার্ক {#network-1}
+
+কনসেন্সাস লেয়ার এর টপ-লেভেল ডাটার মধ্যে নিচের বিষয়গুলো অন্তর্ভুক্ত রয়েছে:
+
+- Current epoch
+- Current slot
+- Active validators - সক্রিয় ভ্যালিডেটরস এর সংখ্যা
+- Pending validators - সক্রিয় হওয়ার অপেক্ষায় থাকা ভ্যালিডেটরস এর সংখ্যা
+- Staked ETH - নেটওয়ার্কে স্টেক করা ETH এর পরিমাণ
+- Average balance - ভ্যালিডেটরস এর গড় ETH ব্যালেন্স
+
+## আরও পড়ুন {#further-reading}
+
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
+
+## সম্পর্কিত টপিকগুলো {#related-topics}
- [লেনদেন](/developers/docs/transactions/)
-- [অ্যাকাউন্ট](/developers/docs/accounts/)
-- [নেটওয়ার্ক](/developers/docs/networks/)
+- [একাউন্ট](/developers/docs/accounts/)
+- [নেটওয়ার্ক](/developers/docs/networks/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-and-analytics/index.md b/public/content/translations/bn/developers/docs/data-and-analytics/index.md
index 8d3fbdc744b..8c89b74e8b6 100644
--- a/public/content/translations/bn/developers/docs/data-and-analytics/index.md
+++ b/public/content/translations/bn/developers/docs/data-and-analytics/index.md
@@ -1,72 +1,82 @@
---
-title: "ডেটা এবং বিশ্লেষণ"
-description: "আপনার ডিএ্যাপস-এ ব্যবহারের জন্য কীভাবে অনচেইন বিশ্লেষণ এবং ডেটা পাবেন"
+title: ডাটা এবং অ্যানালিটিক্স
+description: আপনার ডিএ্যাপস-এ ব্যবহারের জন্য কীভাবে অনচেইন অ্যানালিটিক্স এবং ডাটা পাবেন
lang: bn
---
## ভূমিকা {#Introduction}
-নেটওয়ার্কের ব্যবহার ক্রমাগত বাড়তে থাকায়, অনচেইন ডেটাতে ক্রমবর্ধমান মূল্যবান তথ্য বিদ্যমান থাকবে। ডেটার পরিমাণ দ্রুত বাড়ার সাথে সাথে, রিপোর্ট করার জন্য বা একটি ডিএ্যাপ চালানোর জন্য এই তথ্য গণনা করা এবং একত্রিত করা একটি সময় এবং প্রক্রিয়া সাপেক্ষ প্রচেষ্টা হয়ে উঠতে পারে।
+নেটওয়ার্ক এর ব্যবহার যত বাড়ছে, অনচেইন ডাটায় মূল্যবান তথ্যের পরিমাণও তত বৃদ্ধি পাচ্ছে। ডাটার পরিমাণ দ্রুত বৃদ্ধি পাওয়ার কারণে, এই তথ্যগুলো হিসাব করা এবং একত্রিত করে রিপোর্ট তৈরি করা বা একটি ডিএ্যাপ পরিচালনা করা সময়সাপেক্ষ এবং জটিল প্রক্রিয়ায় পরিণত হতে পারে।
-বিদ্যমান ডেটা প্রদানকারীদের ব্যবহার উন্নয়নকে ত্বরান্বিত করতে পারে, আরও সঠিক ফলাফল তৈরি করতে পারে এবং চলমান রক্ষণাবেক্ষণের প্রচেষ্টা কমাতে পারে। এটি একটি দলকে তাদের প্রকল্পের মূল কার্যকারিতার উপর মনোযোগ কেন্দ্রীভূত করতে সক্ষম করবে।
+বিদ্যমান ডাটা প্রোভাইডারদের ব্যবহার করে ডেভেলপমেন্ট ত্বরান্বিত করা, আরও নির্ভুল ফলাফল পাওয়া এবং চলমান রক্ষণাবেক্ষণের প্রচেষ্টা কমানো সম্ভব। এটি একটি দলকে তাদের প্রজেক্টের মূল কার্যকারিতার ওপর মনোযোগ দিতে সক্ষম করবে।
## পূর্বশর্ত {#prerequisites}
-ডেটা বিশ্লেষণ প্রসঙ্গে ব্লক এক্সপ্লোরারগুলির ব্যবহার আরও ভালভাবে বোঝার জন্য আপনার [ব্লক এক্সপ্লোরার](/developers/docs/data-and-analytics/block-explorers/)-এর মূল ধারণাটি বোঝা উচিত। এছাড়াও, একটি সিস্টেম ডিজাইনে তারা যে সুবিধাগুলি যোগ করে তা বোঝার জন্য একটি [সূচক](/glossary/#index)-এর ধারণার সাথে নিজেকে পরিচিত করুন।
+ডাটা অ্যানালিটিক্সের প্রেক্ষাপটে [Block Explorers](/developers/docs/data-and-analytics/block-explorers/) এর ব্যবহার আরও ভালোভাবে বোঝার জন্য আপনার এর প্রাথমিক ধারণা থাকা উচিত। এছাড়া, সিস্টেম ডিজাইনে এগুলো কী সুবিধা যোগ করে তা বুঝতে একটি [index](/glossary/#index)-এর ধারণার সাথে নিজেকে পরিচিত করুন।
-স্থাপত্যের মৌলিক বিষয়গুলির পরিপ্রেক্ষিতে, একটি [API](https://www.wikipedia.org/wiki/API) এবং [REST](https://www.wikipedia.org/wiki/Representational_state_transfer) কী, তা অন্তত তাত্ত্বিকভাবে বোঝা প্রয়োজন।
+আর্কিটেকচারাল মৌলিক বিষয়গুলোর ক্ষেত্রে, অন্তত তাত্ত্বিকভাবে হলেও [API](https://www.wikipedia.org/wiki/API) এবং [REST](https://www.wikipedia.org/wiki/Representational_state_transfer) কী তা বোঝা প্রয়োজন।
## ব্লক এক্সপ্লোরার {#block-explorers}
-অনেক [ব্লক এক্সপ্লোরার](/developers/docs/data-and-analytics/block-explorers/) [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) [API](https://www.wikipedia.org/wiki/API) গেটওয়ে অফার করে যা ডেভেলপারদের ব্লক, লেনদেন, ভ্যালিডেটর, অ্যাকাউন্ট এবং অন্যান্য অনচেইন কার্যকলাপের রিয়েল-টাইম ডেটাতে দৃশ্যমানতা প্রদান করবে।
+অনেক [Block Explorers](/developers/docs/data-and-analytics/block-explorers/) [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) [API](https://www.wikipedia.org/wiki/API) গেটওয়ে অফার করে যা ডেভেলপারদের ব্লকস, লেনদেন, ভ্যালিডেটরস, একাউন্ট এবং অন্যান্য অনচেইন কার্যকলাপের রিয়েল-টাইম ডাটা দেখার সুবিধা প্রদান করে।
-ডেভেলপাররা তখন তাদের ব্যবহারকারীদের [ব্লকচেইন](/glossary/#blockchain)-এর সাথে অনন্য অন্তর্দৃষ্টি এবং মিথস্ক্রিয়া দেওয়ার জন্য এই ডেটা প্রক্রিয়া এবং রূপান্তর করতে পারে। উদাহরণস্বরূপ, [Etherscan](https://etherscan.io) এবং [Blockscout](https://eth.blockscout.com) প্রতি 12s স্লটের জন্য এক্সিকিউশন এবং কনসেন্সাস ডেটা সরবরাহ করে।
+ডেভেলপাররা এরপর এই ডাটা প্রসেস এবং রূপান্তর করে তাদের ব্যবহারকারীদের [ব্লকচেইন](/glossary/#blockchain)-এর সাথে অনন্য অন্তর্দৃষ্টি এবং ইন্টারঅ্যাকশন প্রদান করতে পারে। উদাহরণস্বরূপ, [Etherscan](https://etherscan.io) এবং [Blockscout](https://eth.blockscout.com) প্রতি 12 সেকেন্ডের স্লটের জন্য এক্সিকিউশন এবং কনসেন্সাস ডাটা প্রদান করে।
-## গ্রাফ {#the-graph}
+## The Graph {#the-graph}
-[The Graph](https://thegraph.com/) একটি ইন্ডেক্সিং প্রোটোকল যা সাবগ্রাফ নামে পরিচিত ওপেন API-এর মাধ্যমে ব্লকচেইন ডেটা জিজ্ঞাসা করার একটি সহজ উপায় সরবরাহ করে।
+[The Graph](https://thegraph.com/) হলো একটি ইনডেক্সিং প্রটোকল যা সাবগ্রাফ (subgraphs) নামে পরিচিত ওপেন API-এর মাধ্যমে ব্লকচেইন ডাটা কোয়েরি করার একটি সহজ উপায় প্রদান করে।
-The Graph-এর মাধ্যমে, ডেভেলপাররা নিম্নলিখিত সুবিধাগুলি থেকে উপকৃত হতে পারেন:
+The Graph-এর মাধ্যমে ডেভেলপাররা যেসব সুবিধা পেতে পারেন:
-- বিকেন্দ্রীভূত ইন্ডেক্সিং: একাধিক ইন্ডেক্সারের মাধ্যমে ব্লকচেইন ডেটা ইন্ডেক্সিং সক্ষম করে, যার ফলে ব্যর্থতার কোনো একক বিন্দু দূর হয়।
-- GraphQL কোয়েরি: ইন্ডেক্সড ডেটা কোয়েরি করার জন্য একটি শক্তিশালী GraphQL ইন্টারফেস সরবরাহ করে, যা ডেটা পুনরুদ্ধারকে খুব সহজ করে তোলে।
-- কাস্টমাইজেশন: ব্লকচেইন ডেটা রূপান্তর এবং সংরক্ষণের জন্য আপনার নিজস্ব যুক্তি সংজ্ঞায়িত করুন, এবং The Graph নেটওয়ার্কে অন্যান্য ডেভেলপারদের দ্বারা প্রকাশিত সাবগ্রাফগুলি পুনরায় ব্যবহার করুন।
+- ডিসেন্ট্রালাইজড ইনডেক্সিং: একাধিক ইনডেক্সারের মাধ্যমে ব্লকচেইন ডাটা ইনডেক্স করতে সক্ষম করে, ফলে কোনো সিঙ্গেল পয়েন্ট অফ ফেইলিওর (single point of failure) দূর হয়।
+- GraphQL কোয়েরি: ইনডেক্স করা ডাটা কোয়েরি করার জন্য একটি শক্তিশালী GraphQL ইন্টারফেস প্রদান করে, যা ডাটা পুনরুদ্ধারকে অত্যন্ত সহজ করে তোলে।
+- কাস্টমাইজেশন: ব্লকচেইন ডাটা রূপান্তর এবং সংরক্ষণের জন্য আপনার নিজস্ব লজিক সংজ্ঞায়িত করুন এবং The Graph নেটওয়ার্ক-এ অন্যান্য ডেভেলপারদের প্রকাশিত সাবগ্রাফগুলো পুনরায় ব্যবহার করুন।
-৫ মিনিটের মধ্যে একটি সাবগ্রাফ তৈরি, স্থাপন এবং জিজ্ঞাসা করতে এই [কুইক-স্টার্ট](https://thegraph.com/docs/en/quick-start/) গাইডটি অনুসরণ করুন।
+5 মিনিটের মধ্যে একটি সাবগ্রাফ তৈরি, ডিপ্লয় এবং কোয়েরি করতে এই [কুইক-স্টার্ট](https://thegraph.com/docs/en/quick-start/) গাইডটি অনুসরণ করুন।
-## ক্লায়েন্ট বৈচিত্র্য {#client-diversity}
+## ক্লায়েন্ট ডাইভার্সিটি {#client-diversity}
-[ক্লায়েন্ট বৈচিত্র্য](/developers/docs/nodes-and-clients/client-diversity/) ইথেরিয়াম নেটওয়ার্কের সামগ্রিক স্বাস্থ্যের জন্য গুরুত্বপূর্ণ কারণ এটি বাগ এবং এক্সপ্লয়েটের বিরুদ্ধে স্থিতিস্থাপকতা প্রদান করে। এখন বেশ কয়েকটি ক্লায়েন্ট বৈচিত্র্য ড্যাশবোর্ড রয়েছে যার মধ্যে রয়েছে [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://www.rated.network), [supermajority.info](https://supermajority.info//) এবং [Ethernodes](https://ethernodes.org/)।
+ইথিরিয়াম নেটওয়ার্ক এর সামগ্রিক স্বাস্থ্যের জন্য [ক্লায়েন্ট ডাইভার্সিটি](/developers/docs/nodes-and-clients/client-diversity/) গুরুত্বপূর্ণ কারণ এটি বাগ এবং এক্সপ্লয়েটগুলোর বিরুদ্ধে প্রতিরোধ ক্ষমতা প্রদান করে। বর্তমানে বেশ কয়েকটি ক্লায়েন্ট ডাইভার্সিটি ড্যাশবোর্ড রয়েছে, যার মধ্যে [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://www.rated.network), [supermajority.info](https://supermajority.info//) এবং [Ethernodes](https://ethernodes.org/) অন্তর্ভুক্ত।
-## Dune অ্যানালিটিক্স {#dune-analytics}
+## Dune Analytics {#dune-analytics}
-[Dune Analytics](https://dune.com/) ব্লকচেইন ডেটাকে রিলেশনাল ডাটাবেস (DuneSQL) টেবিলে প্রাক-প্রসেস করে, ব্যবহারকারীদের SQL ব্যবহার করে ব্লকচেইন ডেটা জিজ্ঞাসা করতে এবং কোয়েরির ফলাফলের উপর ভিত্তি করে ড্যাশবোর্ড তৈরি করতে দেয়। অনচেইন ডেটা ৪টি কাঁচা টেবিলে সংগঠিত হয়: `blocks`, `transactions`, (ইভেন্ট) `logs` এবং (কল) `traces`। জনপ্রিয় চুক্তি এবং প্রোটোকলগুলি ডিকোড করা হয়েছে, এবং প্রত্যেকের নিজস্ব ইভেন্ট এবং কল টেবিলের সেট রয়েছে। সেই ইভেন্ট এবং কল টেবিলগুলি আরও প্রক্রিয়াজাত করা হয় এবং প্রোটোকলের ধরন অনুসারে অ্যাবস্ট্র্যাকশন টেবিলে সংগঠিত করা হয়, উদাহরণস্বরূপ, dex, লেন্ডিং, স্টেবলকয়েন ইত্যাদি।
+[Dune Analytics](https://dune.com/) ব্লকচেইন ডাটাকে রিলেশনাল ডাটাবেস (DuneSQL) টেবিলে প্রি-প্রসেস করে, ব্যবহারকারীদের SQL ব্যবহার করে ব্লকচেইন ডাটা কোয়েরি করতে এবং কোয়েরির ফলাফলের ওপর ভিত্তি করে ড্যাশবোর্ড তৈরি করতে দেয়। অনচেইন ডাটা 4টি র (raw) টেবিলে সাজানো থাকে: `blocks`, `transactions`, (ইভেন্ট) `logs` এবং (কল) `traces`। জনপ্রিয় কন্ট্রাক্ট এবং প্রটোকলগুলো ডিকোড করা হয়েছে এবং প্রতিটির নিজস্ব ইভেন্ট ও কল টেবিল রয়েছে। সেই ইভেন্ট এবং কল টেবিলগুলো আরও প্রসেস করা হয় এবং প্রটোকলের ধরন অনুযায়ী অ্যাবস্ট্রাকশন টেবিলে সাজানো হয়, উদাহরণস্বরূপ, dex, লেন্ডিং, স্টেবলকয়েন ইত্যাদি।
## SQD {#sqd}
-[SQD](https://sqd.dev/) একটি বিকেন্দ্রীভূত হাইপার-স্কেলেবল ডেটা প্ল্যাটফর্ম যা প্রচুর পরিমাণে ডেটাতে দক্ষ, অনুমতিহীন অ্যাক্সেস প্রদানের জন্য অপ্টিমাইজ করা হয়েছে। এটি বর্তমানে ঐতিহাসিক অন-চেইন ডেটা পরিবেশন করে, যার মধ্যে রয়েছে ইভেন্ট লগ, লেনদেনের রসিদ, ট্রেস এবং প্রতি-লেনদেন স্টেট ডিফস। SQD কাস্টম ডেটা নিষ্কাশন এবং প্রক্রিয়াকরণ পাইপলাইন তৈরির জন্য একটি শক্তিশালী টুলকিট অফার করে, যা প্রতি সেকেন্ডে ১৫০k ব্লক পর্যন্ত একটি ইন্ডেক্সিং গতি অর্জন করে।
+[SQD](https://sqd.dev/) হলো একটি ডিসেন্ট্রালাইজড হাইপার-স্কেলেবল ডাটা প্ল্যাটফর্ম যা বিপুল পরিমাণ ডাটায় দক্ষ এবং পারমিশনলেস অ্যাক্সেস প্রদানের জন্য অপ্টিমাইজ করা হয়েছে। এটি বর্তমানে ইভেন্ট লগ, লেনদেন রসিদ, ট্রেস এবং প্রতি-লেনদেন স্টেট ডিফারেন্সসহ ঐতিহাসিক অনচেইন ডাটা পরিবেশন করে। SQD কাস্টম ডাটা এক্সট্রাকশন এবং প্রসেসিং পাইপলাইন তৈরি করার জন্য একটি শক্তিশালী টুলকিট অফার করে, যা প্রতি সেকেন্ডে 150k ব্লকস পর্যন্ত ইনডেক্সিং গতি অর্জন করতে পারে।
-শুরু করতে, [নথিপত্র](https://docs.sqd.dev/) দেখুন বা SQD দিয়ে আপনি কী তৈরি করতে পারেন তার [EVM উদাহরণ](https://github.com/subsquid-labs/squid-evm-examples) দেখুন।
+শুরু করতে, [ডকুমেন্টেশন](https://docs.sqd.dev/) ভিজিট করুন অথবা SQD দিয়ে আপনি কী তৈরি করতে পারেন তার [EVM উদাহরণগুলো](https://github.com/subsquid-labs/squid-evm-examples) দেখুন।
-## SubQuery নেটওয়ার্ক {#subquery-network}
+## SubQuery Network {#subquery-network}
-[SubQuery](https://subquery.network/) একটি নেতৃস্থানীয় ডেটা ইন্ডেক্সার যা ডেভেলপারদের তাদের web3 প্রকল্পগুলির জন্য দ্রুত, নির্ভরযোগ্য, বিকেন্দ্রীভূত এবং কাস্টমাইজড API দেয়। SubQuery ১৬৫টিরও বেশি ইকোসিস্টেম (ইথেরিয়াম সহ) থেকে ডেভেলপারদের সমৃদ্ধ ইন্ডেক্সড ডেটা দিয়ে তাদের ব্যবহারকারীদের জন্য একটি স্বজ্ঞাত এবং নিমগ্ন অভিজ্ঞতা তৈরি করতে ক্ষমতা দেয়। SubQuery নেটওয়ার্ক আপনার অপ্রতিরোধ্য অ্যাপগুলিকে একটি স্থিতিস্থাপক এবং বিকেন্দ্রীভূত অবকাঠামো নেটওয়ার্কের সাথে শক্তি দেয়। ডেটা প্রক্রিয়াকরণ কার্যকলাপের জন্য একটি কাস্টম ব্যাকএন্ড তৈরি করার জন্য সময় ব্যয় না করে ভবিষ্যতের web3 অ্যাপ্লিকেশনগুলি তৈরি করতে SubQuery-এর ব্লকচেইন ডেভেলপার টুলকিট ব্যবহার করুন।
+[SubQuery](https://subquery.network/) হলো একটি শীর্ষস্থানীয় ডাটা ইনডেক্সার যা ডেভেলপারদের তাদের ওয়েব3 প্রজেক্টের জন্য দ্রুত, নির্ভরযোগ্য, ডিসেন্ট্রালাইজড এবং কাস্টমাইজড API প্রদান করে। SubQuery 165+ ইকোসিস্টেমের (ইথিরিয়ামসহ) ডেভেলপারদের সমৃদ্ধ ইনডেক্স করা ডাটা দিয়ে ক্ষমতায়ন করে যাতে তারা তাদের ব্যবহারকারীদের জন্য একটি স্বজ্ঞাত এবং নিমজ্জিত অভিজ্ঞতা তৈরি করতে পারে। SubQuery নেটওয়ার্ক একটি স্থিতিস্থাপক এবং ডিসেন্ট্রালাইজড ইনফ্রাস্ট্রাকচার নেটওয়ার্ক এর মাধ্যমে আপনার অপ্রতিরোধ্য অ্যাপগুলোকে শক্তি জোগায়। ডাটা প্রসেসিং কার্যক্রমের জন্য কাস্টম ব্যাকএন্ড তৈরিতে সময় ব্যয় না করে, ভবিষ্যতের ওয়েব3 অ্যাপ্লিকেশন তৈরি করতে SubQuery-এর ব্লকচেইন ডেভেলপার টুলকিট ব্যবহার করুন।
-শুরু করতে, [SubQuery-এর পরিচালিত পরিষেবা](https://managedservice.subquery.network/) বা [SubQuery-এর বিকেন্দ্রীভূত নেটওয়ার্ক](https://app.subquery.network/dashboard)-এ লাইভ যাওয়ার আগে পরীক্ষার জন্য একটি স্থানীয় ডকার পরিবেশে মিনিটের মধ্যে ইথেরিয়াম ব্লকচেইন ডেটা ইন্ডেক্স করা শুরু করতে [ইথেরিয়াম কুইক স্টার্ট গাইড](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html) দেখুন।
+শুরু করতে, [SubQuery-এর ম্যানেজড সার্ভিস](https://managedservice.subquery.network/) বা [SubQuery-এর ডিসেন্ট্রালাইজড নেটওয়ার্ক](https://app.subquery.network/dashboard)-এ লাইভ হওয়ার আগে টেস্টিংয়ের জন্য একটি লোকাল ডকার পরিবেশে কয়েক মিনিটের মধ্যে ইথিরিয়াম ব্লকচেইন ডাটা ইনডেক্সিং শুরু করতে [ইথিরিয়াম কুইক স্টার্ট গাইড](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html) ভিজিট করুন।
-## EVM কোয়েরি ল্যাঙ্গুয়েজ {#evm-query-language}
+## Codex {#codex}
-EVM কোয়েরি ল্যাঙ্গুয়েজ (EQL) হল একটি SQL-এর মতো ভাষা যা EVM (ইথিরিয়াম ভার্চুয়াল মেশিন) চেইনগুলিকে জিজ্ঞাসা করার জন্য ডিজাইন করা হয়েছে। EQL-এর চূড়ান্ত লক্ষ্য হল EVM চেইনের প্রথম-শ্রেণীর নাগরিক (ব্লক, অ্যাকাউন্ট, এবং লেনদেন)-এর উপর জটিল রিলেশনাল কোয়েরি সমর্থন করা এবং একই সাথে ডেভেলপার এবং গবেষকদের দৈনন্দিন ব্যবহারের জন্য একটি আর্গোনমিক সিনট্যাক্স প্রদান করা। EQL-এর সাহায্যে, ডেভেলপাররা পরিচিত SQL-এর মতো সিনট্যাক্স ব্যবহার করে ব্লকচেইন ডেটা আনতে পারে এবং জটিল বয়লারপ্লেট কোডের প্রয়োজন দূর করতে পারে। EQL স্ট্যান্ডার্ড ব্লকচেইন ডেটা অনুরোধগুলি সমর্থন করে (যেমন, ইথেরিয়ামে একটি অ্যাকাউন্টের নন্স এবং ব্যালেন্স পুনরুদ্ধার করা বা বর্তমান ব্লক আকার এবং টাইমস্ট্যাম্প আনা) এবং ক্রমাগত আরও জটিল অনুরোধ এবং বৈশিষ্ট্যসেটগুলির জন্য সমর্থন যোগ করছে।
+[Codex](https://www.codex.io/) হলো একটি রিয়েল-টাইম ব্লকচেইন ডাটা API যা 80+ নেটওয়ার্ক জুড়ে 70 মিলিয়নেরও বেশি টোকেন এর জন্য সমৃদ্ধ ডাটা প্রদান করে। ডেভেলপাররা কাস্টম ইনডেক্সিং ইনফ্রাস্ট্রাকচার রক্ষণাবেক্ষণ ছাড়াই স্ট্রাকচার্ড টোকেন প্রাইসিং, ওয়ালেট ব্যালেন্স, লেনদেন ইতিহাস এবং অ্যাগ্রিগেটেড অ্যানালিটিক্স (ভলিউম, লিকুইডিটি, ইউনিক ওয়ালেট)-এ অ্যাক্সেস পেতে পারেন। Codex ওয়েবকেট (WebSocket) এবং ওয়েবহুক (webhook) ইন্টিগ্রেশনের মাধ্যমে সাব-সেকেন্ড ডাটা ডেলিভারি সমর্থন করে।
+
+শুরু করতে, [ডকুমেন্টেশন](https://docs.codex.io) ভিজিট করুন, [এক্সপ্লোরার](https://docs.codex.io/explore) ব্যবহার করে দেখুন, অথবা [ড্যাশবোর্ড](https://dashboard.codex.io/signup)-এ সাইন আপ করুন।
+
+## EVM Query Language {#evm-query-language}
+
+EVM Query Language (EQL) হলো একটি SQL-এর মতো ভাষা যা EVM (ইথিরিয়াম ভার্চুয়াল মেশিন) চেইনগুলো কোয়েরি করার জন্য ডিজাইন করা হয়েছে। EQL-এর চূড়ান্ত লক্ষ্য হলো EVM চেইনের ফার্স্ট-ক্লাস সিটিজেনদের (ব্লকস, একাউন্ট এবং লেনদেন) ওপর জটিল রিলেশনাল কোয়েরি সমর্থন করা, পাশাপাশি ডেভেলপার এবং গবেষকদের দৈনন্দিন ব্যবহারের জন্য একটি এর্গোনমিক সিনট্যাক্স প্রদান করা। EQL-এর মাধ্যমে, ডেভেলপাররা পরিচিত SQL-এর মতো সিনট্যাক্স ব্যবহার করে ব্লকচেইন ডাটা ফেচ করতে পারেন এবং জটিল বয়লারপ্লেট কোডের প্রয়োজনীয়তা দূর করতে পারেন। EQL স্ট্যান্ডার্ড ব্লকচেইন ডাটা রিকোয়েস্ট সমর্থন করে (যেমন, ইথিরিয়ামে একটি একাউন্ট-এর নন্স এবং ব্যালেন্স পুনরুদ্ধার করা বা বর্তমান ব্লক সাইজ এবং টাইমস্ট্যাম্প ফেচ করা) এবং ক্রমাগত আরও জটিল রিকোয়েস্ট ও ফিচারসেটের জন্য সমর্থন যোগ করছে।
## আরও পড়ুন {#further-reading}
-- [ক্রিপ্টো ডেটা অন্বেষণ I: ডেটা ফ্লো আর্কিটেকচার](https://web.archive.org/web/20250125012042/https://research.2077.xyz/exploring-crypto-data-1-data-flow-architectures)
-- [গ্রাফ নেটওয়ার্ক ওভারভিউ](https://thegraph.com/docs/en/about/)
-- [গ্রাফ কোয়েরি প্লেগ্রাউন্ড](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current)
-- [EtherScan-এ API কোডের উদাহরণ](https://etherscan.io/apis#contracts)
-- [Blockscout-এ API নথিপত্র](https://docs.blockscout.com/devs/apis)
-- [Beaconcha.in বিকন চেইন এক্সপ্লোরার](https://beaconcha.in)
-- [Dune বেসিকস](https://docs.dune.com/#dune-basics)
-- [SubQuery ইথেরিয়াম কুইক স্টার্ট গাইড](https://academy.subquery.network/indexer/quickstart/quickstart_chains/ethereum-gravatar.html)
-- [SQD নেটওয়ার্ক ওভারভিউ](https://docs.sqd.dev/)
-- [EVM কোয়েরি ল্যাঙ্গুয়েজ](https://eql.sh/blog/alpha-release-notes)
+- [Exploring Crypto Data I: Data Flow Architectures](https://web.archive.org/web/20250125012042/https://research.2077.xyz/exploring-crypto-data-1-data-flow-architectures)
+- [Graph Network Overview](https://thegraph.com/docs/en/about/)
+- [Graph Query Playground](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current)
+- [API code examples on EtherScan](https://etherscan.io/apis#contracts)
+- [API documentation on Blockscout](https://docs.blockscout.com/devs/apis)
+- [Beaconcha.in Beacon Chain explorer](https://beaconcha.in)
+- [Dune Basics](https://docs.dune.com/#dune-basics)
+- [SubQuery Ethereum Quick Start Guide](https://academy.subquery.network/indexer/quickstart/quickstart_chains/ethereum-gravatar.html)
+- [SQD Network Overview](https://docs.sqd.dev/)
+- [EVM Query Language](https://eql.sh/blog/alpha-release-notes)
+
+## টিউটোরিয়াল: ডাটা এবং অ্যানালিটিক্স / ইথিরিয়ামে SQL {#tutorials}
+
+- [SQL দিয়ে ইথিরিয়ামের মৌলিক বিষয়গুলো শিখুন](/developers/tutorials/learn-foundational-ethereum-topics-with-sql/) _– লেনদেন, ব্লকস এবং গ্যাস-এর মৌলিক বিষয়গুলো বুঝতে SQL দিয়ে অনচেইন ইথিরিয়াম ডাটা কোয়েরি করুন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-availability/blockchain-data-storage-strategies/index.md b/public/content/translations/bn/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
index 47d5b8fd936..e9d6e90c2f5 100644
--- a/public/content/translations/bn/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
+++ b/public/content/translations/bn/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
@@ -1,118 +1,118 @@
---
-title: "ব্লকচেইন ডেটা সংগ্রহের কৌশল"
-description: "ব্লকচেইন ব্যবহার করে ডেটা সঞ্চয় করার বিভিন্ন উপায় রয়েছে। এই নিবন্ধে বিভিন্ন কৌশল, তাদের খরচ এবং ট্রেডঅফ, সেইসাথে এটি নিরাপদে ব্যবহারের জন্য প্রয়োজনীয়তাগুলির তুলনা করা হবে।"
+title: ব্লকচেইন ডাটা স্টোরেজ কৌশল
+description: ব্লকচেইন ব্যবহার করে ডাটা স্টোর করার বেশ কয়েকটি উপায় রয়েছে। এই নিবন্ধটি বিভিন্ন কৌশল, তাদের খরচ এবং ট্রেডঅফ, সেইসাথে এটি নিরাপদে ব্যবহার করার প্রয়োজনীয়তাগুলির তুলনা করবে।
lang: bn
---
-ব্লকচেইনে সরাসরি তথ্য সঞ্চয় করার একাধিক উপায় রয়েছে, অথবা এমন একটি পদ্ধতিতে যা ব্লকচেইন দ্বারা সুরক্ষিত:
+সরাসরি ব্লকচেইনে বা ব্লকচেইন দ্বারা সুরক্ষিত এমন পদ্ধতিতে তথ্য স্টোর করার একাধিক উপায় রয়েছে:
-- EIP-4844 blobs
-- Calldata
-- L1 মেকানিজম সহ অফচেইন
-- কন্ট্র্যাক্ট "কোড"
-- অনুষ্ঠানসমূহ
-- EVM সংগ্রহস্থল
+- EIP-4844 ব্লবস (blobs)
+- কলডাটা (Calldata)
+- L1 মেকানিজমের সাথে অফচেইন
+- কন্ট্রাক্ট "কোড"
+- ইভেন্টস (Events)
+- EVM স্টোরেজ
-কোন পদ্ধতিটি ব্যবহার করা হবে তা বিভিন্ন মানদণ্ডের উপর ভিত্তি করে নির্ধারিত হয়:
+কোন পদ্ধতিটি ব্যবহার করতে হবে তা বেছে নেওয়া বেশ কয়েকটি মানদণ্ডের উপর ভিত্তি করে:
-- তথ্যের উৎস। Calldata-তে থাকা তথ্য সরাসরি ব্লকচেইন থেকে আসতে পারে না।
-- তথ্যের গন্তব্য। Calldata শুধুমাত্র সেই লেনদেনেই উপলব্ধ যা এটি অন্তর্ভুক্ত করে। ইভেন্টগুলি অনচেইনে একেবারেই অ্যাক্সেসযোগ্য নয়।
-- কতটা ঝামেলা গ্রহণযোগ্য? একটি পূর্ণ-স্কেল নোড চালানো কম্পিউটারগুলি ব্রাউজারে চলমান একটি অ্যাপ্লিকেশনের লাইট ক্লায়েন্টের চেয়ে বেশি প্রক্রিয়াকরণ করতে পারে।
-- প্রতিটি নোড থেকে তথ্যে সহজ অ্যাক্সেসের সুবিধা প্রদান করা কি প্রয়োজনীয়?
-- নিরাপত্তা প্রয়োজনীয়তা।
+- তথ্যের উৎস। কলডাটার তথ্য সরাসরি ব্লকচেইন থেকে আসতে পারে না।
+- তথ্যের গন্তব্য। কলডাটা শুধুমাত্র সেই লেনদেনে উপলব্ধ থাকে যা এটিকে অন্তর্ভুক্ত করে। ইভেন্টগুলো অনচেইন এ একেবারেই অ্যাক্সেসযোগ্য নয়।
+- কতটা ঝামেলা গ্রহণযোগ্য? যেসব কম্পিউটার একটি পূর্ণাঙ্গ নোড চালায়, তারা ব্রাউজারে চলা অ্যাপ্লিকেশনের লাইট ক্লায়েন্টের চেয়ে বেশি প্রসেসিং করতে পারে।
+- প্রতিটি নোড থেকে তথ্যে সহজে অ্যাক্সেস সহজতর করা কি প্রয়োজনীয়?
+- নিরাপত্তার প্রয়োজনীয়তা।
-## নিরাপত্তা প্রয়োজনীয়তা {#security-requirements}
+## নিরাপত্তার প্রয়োজনীয়তা {#security-requirements}
-সাধারণত, তথ্য নিরাপত্তা তিনটি বৈশিষ্ট্যের সমন্বয়ে গঠিত:
+সাধারণত, তথ্য নিরাপত্তার তিনটি বৈশিষ্ট্য থাকে:
-- _গোপনীয়তা_, অননুমোদিত সত্তাকে তথ্য পড়ার অনুমতি দেওয়া হয় না। এটি অনেক ক্ষেত্রে গুরুত্বপূর্ণ, কিন্তু এখানে নয়। _ব্লকচেইনে কোনো গোপনীয়তা নেই_। ব্লকচেইন কাজ করে কারণ যে কেউ অবস্থার পরিবর্তন যাচাই করতে পারে, তাই সরাসরি গোপনীয়তা সঞ্চয় করতে এটি ব্যবহার করা অসম্ভব। ব্লকচেইনে গোপনীয় তথ্য সঞ্চয় করার উপায় রয়েছে, কিন্তু সেগুলি সবই অন্তত একটি কী সঞ্চয় করার জন্য কিছু অফচেইন উপাদানের উপর নির্ভর করে।
+- _গোপনীয়তা (Confidentiality)_, অননুমোদিত সত্তাগুলোকে তথ্য পড়ার অনুমতি দেওয়া হয় না। এটি অনেক ক্ষেত্রে গুরুত্বপূর্ণ, তবে এখানে নয়। _ব্লকচেইনে কোনো গোপনীয়তা নেই_। ব্লকচেইন কাজ করে কারণ যে কেউ স্টেট ট্রানজিশন যাচাই করতে পারে, তাই সরাসরি গোপনীয়তা স্টোর করতে এগুলো ব্যবহার করা অসম্ভব। ব্লকচেইনে গোপনীয় তথ্য স্টোর করার উপায় রয়েছে, তবে সেগুলো অন্তত একটি কি (key) স্টোর করার জন্য কোনো অফচেইন উপাদানের ওপর নির্ভর করে।
-- _অখণ্ডতা_, তথ্য সঠিক, এটি অননুমোদিত সত্তা দ্বারা বা অননুমোদিত উপায়ে পরিবর্তন করা যায় না (উদাহরণস্বরূপ, `Transfer` ইভেন্ট ছাড়া [ERC-20 টোকেন](https://eips.ethereum.org/EIPS/eip-20#events) স্থানান্তর করা)। ব্লকচেইনে, প্রতিটি নোড প্রতিটি অবস্থার পরিবর্তন যাচাই করে, যা অখণ্ডতা নিশ্চিত করে।
+- _অখণ্ডতা (Integrity)_, তথ্যটি সঠিক, এটি অননুমোদিত সত্তা দ্বারা বা অননুমোদিত উপায়ে পরিবর্তন করা যায় না (উদাহরণস্বরূপ, একটি `Transfer` ইভেন্ট ছাড়া [ERC-20 টোকেন](https://eips.ethereum.org/EIPS/eip-20#events) স্থানান্তর করা)। ব্লকচেইনে, প্রতিটি নোড প্রতিটি স্টেট পরিবর্তন যাচাই করে, যা অখণ্ডতা নিশ্চিত করে।
-- _প্রাপ্যতা_, তথ্য যেকোনো অনুমোদিত সত্তার কাছে উপলব্ধ। ব্লকচেইনে, এটি সাধারণত প্রতিটি [সম্পূর্ণ নোডে](https://ethereum.org/developers/docs/nodes-and-clients/#full-node) তথ্য উপলব্ধ রাখার মাধ্যমে অর্জন করা হয়।
+- _প্রাপ্যতা (Availability)_, তথ্যটি যেকোনো অনুমোদিত সত্তার কাছে উপলব্ধ। ব্লকচেইনে, এটি সাধারণত প্রতিটি [ফুল নোড](https://ethereum.org/developers/docs/nodes-and-clients/#full-node)-এ তথ্য উপলব্ধ রাখার মাধ্যমে অর্জিত হয়।
-এখানকার বিভিন্ন সমাধানের সবকটিরই চমৎকার অখণ্ডতা রয়েছে, কারণ হ্যাশগুলি L1-এ পোস্ট করা হয়। তবে, তাদের বিভিন্ন প্রাপ্যতা গ্যারান্টি রয়েছে।
+এখানকার বিভিন্ন সমাধানের সবগুলোরই চমৎকার অখণ্ডতা রয়েছে, কারণ হ্যাসগুলো L1-এ পোস্ট করা হয়। তবে, তাদের প্রাপ্যতার গ্যারান্টি ভিন্ন ভিন্ন।
## পূর্বশর্ত {#prerequisites}
-[ব্লকচেইন মৌলিক বিষয়গুলো](/developers/docs/intro-to-ethereum/) সম্পর্কে আপনার একটি ভালো ধারণা থাকা উচিত। এই পৃষ্ঠাটি আরও ধরে নেয় যে পাঠক [ব্লক](/developers/docs/blocks/), [লেনদেন](/developers/docs/transactions/), এবং অন্যান্য প্রাসঙ্গিক বিষয়গুলির সাথে পরিচিত।
+আপনার [ব্লকচেইন মৌলিক বিষয়গুলো](/developers/docs/intro-to-ethereum/) সম্পর্কে ভালো ধারণা থাকা উচিত। এই পৃষ্ঠাটি ধরে নেয় যে পাঠক [ব্লকস](/developers/docs/blocks/), [লেনদেন](/developers/docs/transactions/) এবং অন্যান্য প্রাসঙ্গিক বিষয়গুলোর সাথে পরিচিত।
-## EIP-4844 blobs {#eip-4844-blobs}
+## EIP-4844 ব্লবস {#eip-4844-blobs}
-[Dencun হার্ডফর্ক](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/beacon-chain.md) থেকে শুরু করে ইথেরিয়াম ব্লকচেইনে [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) অন্তর্ভুক্ত রয়েছে, যা ইথেরিয়ামে একটি সীমিত জীবনকালের (প্রাথমিকভাবে প্রায় [18 দিন](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/p2p-interface.md#configuration)) ডেটা ব্লব যোগ করে। এই ব্লবগুলির মূল্য [এক্সিকিউশন গ্যাস](/developers/docs/gas) থেকে আলাদাভাবে নির্ধারিত হয়, যদিও একটি অনুরূপ মেকানিজম ব্যবহার করা হয়। এগুলি অস্থায়ী ডেটা পোস্ট করার একটি সস্তা উপায়।
+[ডেনকুন হার্ড ফর্ক (Dencun hardfork)](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/beacon-chain.md) থেকে শুরু করে ইথিরিয়াম ব্লকচেইনে [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) অন্তর্ভুক্ত করা হয়েছে, যা ইথিরিয়ামে সীমিত জীবনকালের (প্রাথমিকভাবে প্রায় [18 দিন](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/p2p-interface.md#configuration)) ডাটা ব্লব যোগ করে। এই ব্লবগুলোর মূল্য [এক্সিকিউশন গ্যাস](/developers/docs/gas) থেকে আলাদাভাবে নির্ধারণ করা হয়, যদিও একটি অনুরূপ মেকানিজম ব্যবহার করা হয়। এগুলো অস্থায়ী ডাটা পোস্ট করার একটি সস্তা উপায়।
-EIP-4844 ব্লবগুলির প্রধান ব্যবহার হলো রোলআপগুলির লেনদেন প্রকাশ করা। [অপ্টিমেস্টিক রোলআপগুলির](/developers/docs/scaling/optimistic-rollups) তাদের ব্লকচেইনে লেনদেন প্রকাশ করতে হয়। রোলআপের [সিকোয়েন্সার](https://docs.optimism.io/connect/resources/glossary#sequencer) যদি একটি ভুল স্টেট রুট পোস্ট করে, তাহলে [ভ্যালিডেটরদের](https://docs.optimism.io/connect/resources/glossary#validator) ভুলটি সংশোধন করতে সক্ষম করার জন্য [চ্যালেঞ্জ পিরিয়ড](https://docs.optimism.io/connect/resources/glossary#challenge-period) চলাকালীন সেই লেনদেনগুলি যে কারও কাছে উপলব্ধ থাকতে হবে।
+EIP-4844 ব্লবগুলোর প্রধান ব্যবহার হলো রোলআপগুলোর জন্য তাদের লেনদেন প্রকাশ করা। [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups)-গুলোর তাদের ব্লকচেইনে লেনদেন প্রকাশ করা প্রয়োজন। রোলআপের [সিকোয়েন্সার](https://docs.optimism.io/connect/resources/glossary#sequencer) যদি একটি ভুল স্টেট রুট পোস্ট করে, তবে [ভ্যালিডেটরস](https://docs.optimism.io/connect/resources/glossary#validator)-দের ভুল সংশোধনের সুযোগ দিতে [চ্যালেঞ্জ পিরিয়ড](https://docs.optimism.io/connect/resources/glossary#challenge-period)-এর সময় সেই লেনদেনগুলো সবার জন্য উপলব্ধ থাকতে হবে।
-তবে, চ্যালেঞ্জ পিরিয়ড শেষ হয়ে গেলে এবং স্টেট রুট চূড়ান্ত হয়ে গেলে, এই লেনদেনগুলি জানার বাকি উদ্দেশ্য হলো চেইনের বর্তমান অবস্থার প্রতিলিপি তৈরি করা। এই অবস্থাটি চেইন নোড থেকেও উপলব্ধ, যেখানে অনেক কম প্রক্রিয়াকরণের প্রয়োজন হয়। সুতরাং লেনদেনের তথ্য এখনও কিছু জায়গায় সংরক্ষণ করা উচিত, যেমন [ব্লক এক্সপ্লোরার](/developers/docs/data-and-analytics/block-explorers), কিন্তু ইথেরিয়ামের দেওয়া সেন্সরশিপ প্রতিরোধের স্তরের জন্য অর্থ প্রদানের প্রয়োজন নেই।
+তবে, একবার চ্যালেঞ্জ পিরিয়ড পার হয়ে গেলে এবং স্টেট রুট চূড়ান্ত হয়ে গেলে, এই লেনদেনগুলো জানার অবশিষ্ট উদ্দেশ্য হলো চেইনের বর্তমান স্টেট প্রতিলিপি করা। এই স্টেটটি চেইন নোডগুলো থেকেও পাওয়া যায়, যার জন্য অনেক কম প্রসেসিং প্রয়োজন। তাই লেনদেনের তথ্য এখনও কিছু জায়গায় সংরক্ষণ করা উচিত, যেমন [ব্লক এক্সপ্লোরার](/developers/docs/data-and-analytics/block-explorers), তবে ইথিরিয়াম যে স্তরের সেন্সরশিপ প্রতিরোধের সুবিধা দেয় তার জন্য অর্থ প্রদানের কোনো প্রয়োজন নেই।
-[জিরো-নলেজ রোলআপগুলি](/developers/docs/scaling/zk-rollups/#data-availability) তাদের লেনদেনের ডেটাও পোস্ট করে যাতে অন্যান্য নোড বিদ্যমান অবস্থার প্রতিলিপি তৈরি করতে এবং ভ্যালিডিটি প্রুফ যাচাই করতে পারে, তবে এটিও একটি স্বল্পমেয়াদী প্রয়োজন।
+[জিরো-নলেজ রোলআপ](/developers/docs/scaling/zk-rollups/#data-availability)-গুলোও তাদের লেনদেনের ডাটা পোস্ট করে যাতে অন্যান্য নোডগুলো বিদ্যমান স্টেট প্রতিলিপি করতে পারে এবং ভ্যালিডিটি প্রুফ যাচাই করতে পারে, তবে এটিও একটি স্বল্পমেয়াদী প্রয়োজনীয়তা।
-লেখার সময় EIP-4844-এ পোস্ট করার জন্য প্রতি বাইটে এক wei (10-18 ETH) খরচ হয়, যা [যেকোনো লেনদেনের জন্য 21,000 এক্সিকিউশন গ্যাস, যার মধ্যে ব্লব পোস্ট করাও অন্তর্ভুক্ত, খরচের](https://eth.blockscout.com/tx/0xf6cfaf0431c73dd1d96369a5e6707d64f463ccf477a4131265397f1d81466929?tab=index) তুলনায় নগণ্য। আপনি [blobscan.com](https://blobscan.com/blocks)-এ বর্তমান EIP-4844 মূল্য দেখতে পারেন।
+লেখার সময় EIP-4844-এ পোস্ট করার খরচ প্রতি বাইটে এক ওয়েই (10-18 ETH), যা [যেকোনো লেনদেনের 21,000 এক্সিকিউশন গ্যাস খরচের তুলনায় নগণ্য, যার মধ্যে ব্লব পোস্ট করা লেনদেনও অন্তর্ভুক্ত](https://eth.blockscout.com/tx/0xf6cfaf0431c73dd1d96369a5e6707d64f463ccf477a4131265397f1d81466929?tab=index)। আপনি [blobscan.com](https://blobscan.com/blocks)-এ বর্তমান EIP-4844 মূল্য দেখতে পারেন।
-এখানে কিছু বিখ্যাত রোলআপ দ্বারা পোস্ট করা ব্লবগুলি দেখার জন্য ঠিকানা দেওয়া হলো।
+এখানে কিছু বিখ্যাত রোলআপ দ্বারা পোস্ট করা ব্লবগুলো দেখার এডড্রেস দেওয়া হলো।
-| রোলআপ | মেলবক্স ঠিকানা |
+| রোলআপ | মেইলবক্স এডড্রেস |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://blobscan.com/address/0xFF00000000000000000000000000000000000010) |
| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://blobscan.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) |
| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://blobscan.com/address/0xFF00000000000000000000000000000000008453) |
-## Calldata {#calldata}
+## কলডাটা {#calldata}
-Calldata বলতে লেনদেনের অংশ হিসেবে পাঠানো বাইটগুলিকে বোঝায়। এটি ব্লকচেইনের স্থায়ী রেকর্ডের অংশ হিসাবে সেই ব্লকে সংরক্ষণ করা হয় যা সেই লেনদেনটি অন্তর্ভুক্ত করে।
+কলডাটা বলতে লেনদেনের অংশ হিসেবে পাঠানো বাইটগুলোকে বোঝায়। এটি ব্লকচেইনের স্থায়ী রেকর্ডের অংশ হিসেবে সেই ব্লকে সংরক্ষিত থাকে যা ওই লেনদেনটিকে অন্তর্ভুক্ত করে।
-ব্লকচেইনে স্থায়ীভাবে ডেটা রাখার জন্য এটি সবচেয়ে সস্তা পদ্ধতি। প্রতি বাইটের খরচ হয় 4 এক্সিকিউশন গ্যাস (যদি বাইটটি শূন্য হয়) অথবা 16 গ্যাস (অন্য কোনো মান)। যদি ডেটা সংকুচিত করা হয়, যা একটি মানসম্মত অনুশীলন, তাহলে প্রতিটি বাইট মানের সমান সম্ভাবনা থাকে, তাই গড় খরচ প্রতি বাইটে প্রায় 15.95 গ্যাস।
+ব্লকচেইনে স্থায়ীভাবে ডাটা রাখার এটি সবচেয়ে সস্তা পদ্ধতি। প্রতি বাইটের খরচ হয় 4 এক্সিকিউশন গ্যাস (যদি বাইটটি শূন্য হয়) অথবা 16 গ্যাস (অন্য কোনো মান হলে)। যদি ডাটা সংকুচিত (compressed) করা হয়, যা একটি আদর্শ অনুশীলন, তবে প্রতিটি বাইটের মান সমানভাবে সম্ভাব্য, তাই গড় খরচ প্রতি বাইটে প্রায় 15.95 গ্যাস।
-লেখার সময়, দাম 12 gwei/গ্যাস এবং 2300 $/ETH, যার মানে প্রতি কিলোবাইটে খরচ প্রায় 45 সেন্ট। যেহেতু EIP-4844 এর আগে এটি সবচেয়ে সস্তা পদ্ধতি ছিল, তাই রোলআপগুলি এই পদ্ধতিটি লেনদেনের তথ্য সঞ্চয় করতে ব্যবহার করত, যা [ফল্ট চ্যালেঞ্জের](https://docs.optimism.io/stack/protocol/overview#fault-proofs) জন্য উপলব্ধ থাকা প্রয়োজন, কিন্তু সরাসরি অনচেইনে অ্যাক্সেসযোগ্য হওয়ার প্রয়োজন নেই।
+লেখার সময়, দামগুলো হলো 12 gwei/গ্যাস এবং 2300 $/ETH, যার মানে খরচ প্রতি কিলোবাইটে প্রায় 45 সেন্ট। যেহেতু EIP-4844 এর আগে এটি সবচেয়ে সস্তা পদ্ধতি ছিল, তাই রোলআপগুলো লেনদেনের তথ্য স্টোর করতে এই পদ্ধতিটি ব্যবহার করত, যা [ফল্ট চ্যালেঞ্জ](https://docs.optimism.io/stack/protocol/overview#fault-proofs)-এর জন্য উপলব্ধ থাকা প্রয়োজন, তবে সরাসরি অনচেইন এ অ্যাক্সেসযোগ্য হওয়ার প্রয়োজন নেই।
-এখানে কিছু বিখ্যাত রোলআপ দ্বারা পোস্ট করা লেনদেনগুলি দেখার জন্য ঠিকানা দেওয়া হলো।
+এখানে কিছু বিখ্যাত রোলআপ দ্বারা পোস্ট করা লেনদেনগুলো দেখার এডড্রেস দেওয়া হলো।
-| রোলআপ | মেলবক্স ঠিকানা |
+| রোলআপ | মেইলবক্স এডড্রেস |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000000010) |
| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://eth.blockscout.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) |
| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000008453) |
-## L1 মেকানিজম সহ অফচেইন {#offchain-with-l1-mechs}
+## L1 মেকানিজমের সাথে অফচেইন {#offchain-with-l1-mechs}
-আপনার নিরাপত্তা ট্রেডঅফের উপর নির্ভর করে, তথ্য অন্য কোথাও রাখা এবং প্রয়োজনে ডেটা উপলব্ধতা নিশ্চিত করে এমন একটি মেকানিজম ব্যবহার করা গ্রহণযোগ্য হতে পারে। এটি কাজ করার জন্য দুটি প্রয়োজনীয়তা রয়েছে:
+আপনার নিরাপত্তা ট্রেডঅফের ওপর নির্ভর করে, তথ্য অন্য কোথাও রাখা এবং প্রয়োজনের সময় ডাটা উপলব্ধ থাকে তা নিশ্চিত করে এমন একটি মেকানিজম ব্যবহার করা গ্রহণযোগ্য হতে পারে। এটি কাজ করার জন্য দুটি প্রয়োজনীয়তা রয়েছে:
-1. ব্লকচেইনে ডেটার একটি [হ্যাস](https://en.wikipedia.org/wiki/Cryptographic_hash_function) পোস্ট করুন, যাকে _ইনপুট কমিটমেন্ট_ বলা হয়। এটি একটি একক 32-বাইট শব্দ হতে পারে, তাই এটি ব্যয়বহুল নয়। যতক্ষণ ইনপুট কমিটমেন্ট উপলব্ধ থাকে, ততক্ষণ অখণ্ডতা নিশ্চিত, কারণ একই মানে হ্যাস হবে এমন অন্য কোনো ডেটা খুঁজে পাওয়া সম্ভব নয়। সুতরাং যদি ভুল ডেটা প্রদান করা হয়, তা সনাক্ত করা যেতে পারে।
+1. ব্লকচেইনে ডাটার একটি [হ্যাস](https://en.wikipedia.org/wiki/Cryptographic_hash_function) পোস্ট করুন, যাকে _ইনপুট কমিটমেন্ট (input commitment)_ বলা হয়। এটি একটি একক 32-বাইট শব্দ হতে পারে, তাই এটি ব্যয়বহুল নয়। যতক্ষণ ইনপুট কমিটমেন্ট উপলব্ধ থাকে, অখণ্ডতা নিশ্চিত করা হয় কারণ একই মানের হ্যাস তৈরি করবে এমন অন্য কোনো ডাটা খুঁজে পাওয়া সম্ভব নয়। তাই যদি ভুল ডাটা প্রদান করা হয়, তবে তা শনাক্ত করা যেতে পারে।
-2. এমন একটি মেকানিজম রাখুন যা প্রাপ্যতা নিশ্চিত করে। উদাহরণস্বরূপ, [Redstone](https://redstone.xyz/docs/what-is-redstone)-এ যেকোনো নোড একটি প্রাপ্যতা চ্যালেঞ্জ জমা দিতে পারে। যদি সিকোয়েন্সার সময়সীমার মধ্যে অনচেইনে প্রতিক্রিয়া না জানায়, তবে ইনপুট কমিটমেন্টটি বাতিল করা হয়, তাই তথ্যটি কখনও পোস্ট করা হয়নি বলে মনে করা হয়।
+2. এমন একটি মেকানিজম রাখুন যা প্রাপ্যতা নিশ্চিত করে। উদাহরণস্বরূপ, [Redstone](https://redstone.xyz/docs/what-is-redstone)-এ যেকোনো নোড একটি প্রাপ্যতা চ্যালেঞ্জ জমা দিতে পারে। যদি সিকোয়েন্সার সময়সীমার মধ্যে অনচেইন এ সাড়া না দেয়, তবে ইনপুট কমিটমেন্ট বাতিল করা হয়, তাই তথ্যটি কখনোই পোস্ট করা হয়নি বলে ধরে নেওয়া হয়।
-এটি একটি অপ্টিমেস্টিক রোলআপের জন্য গ্রহণযোগ্য কারণ আমরা ইতিমধ্যেই স্টেট রুটের জন্য অন্তত একজন সৎ যাচাইকারীর উপর নির্ভর করছি। এমন একজন সৎ যাচাইকারী এটিও নিশ্চিত করবে যে ব্লক প্রক্রিয়া করার জন্য তার কাছে ডেটা আছে, এবং যদি তথ্য অফচেইনে উপলব্ধ না থাকে তবে একটি প্রাপ্যতা চ্যালেঞ্জ জারি করবে। এই ধরনের অপ্টিমেস্টিক রোলআপকে [প্লাসমা](/developers/docs/scaling/plasma/) বলা হয়।
+এটি একটি অপ্টিমেস্টিক রোলআপ এর জন্য গ্রহণযোগ্য কারণ আমরা ইতিমধ্যেই স্টেট রুটের জন্য অন্তত একজন সৎ যাচাইকারীর ওপর নির্ভর করছি। এমন একজন সৎ যাচাইকারী ব্লক প্রসেস করার জন্য তার কাছে ডাটা আছে কিনা তাও নিশ্চিত করবে এবং যদি তথ্য অফচেইন এ উপলব্ধ না থাকে তবে একটি প্রাপ্যতা চ্যালেঞ্জ জারি করবে। এই ধরনের অপ্টিমেস্টিক রোলআপ কে [প্লাজমা (plasma)](/developers/docs/scaling/plasma/) বলা হয়।
-## কন্ট্র্যাক্ট কোড {#contract-code}
+## কন্ট্রাক্ট কোড {#contract-code}
-যে তথ্য কেবল একবার লিখতে হবে, কখনও ওভাররাইট হবে না এবং অনচেইনে উপলব্ধ থাকা প্রয়োজন, তা কন্ট্র্যাক্ট কোড হিসাবে সংরক্ষণ করা যেতে পারে। এর মানে হলো আমরা ডেটা দিয়ে একটি "স্মার্ট কন্ট্র্যাক্ট" তৈরি করি এবং তারপর তথ্য পড়ার জন্য [`EXTCODECOPY`](https://www.evm.codes/#3c?fork=shanghai) ব্যবহার করি। সুবিধা হলো কোড কপি করা তুলনামূলকভাবে সস্তা।
+যে তথ্য শুধুমাত্র একবার লিখতে হয়, কখনোই ওভাররাইট করা হয় না এবং অনচেইন এ উপলব্ধ থাকা প্রয়োজন, তা কন্ট্রাক্ট কোড হিসেবে স্টোর করা যেতে পারে। এর মানে হলো আমরা ডাটা দিয়ে একটি "স্মার্ট কন্ট্রাক্ট" তৈরি করি এবং তারপর তথ্য পড়তে [`EXTCODECOPY`](https://www.evm.codes/#3c?fork=shanghai) ব্যবহার করি। এর সুবিধা হলো কোড কপি করা তুলনামূলকভাবে সস্তা।
-মেমরি সম্প্রসারণের খরচ ছাড়াও, `EXTCODECOPY`-তে একটি কন্ট্র্যাক্টে প্রথম অ্যাক্সেসের জন্য 2600 গ্যাস খরচ হয় (যখন এটি "কোল্ড" থাকে) এবং একই কন্ট্র্যাক্ট থেকে পরবর্তী কপিগুলির জন্য 100 গ্যাস এবং প্রতি 32 বাইট শব্দের জন্য 3 গ্যাস খরচ হয়। calldata-এর তুলনায়, যার খরচ প্রতি বাইটে 15.95, এটি প্রায় 200 বাইট থেকে শুরু করে সস্তা। [মেমরি সম্প্রসারণ খরচের সূত্র](https://www.evm.codes/about#memoryexpansion) অনুসারে, যতক্ষণ আপনার 4MB-এর বেশি মেমরির প্রয়োজন না হয়, ততক্ষণ মেমরি সম্প্রসারণ খরচ calldata যোগ করার খরচের চেয়ে কম।
+মেমরি সম্প্রসারণের খরচ ছাড়াও, একটি কন্ট্রাক্টে প্রথম অ্যাক্সেসের জন্য (যখন এটি "কোল্ড" থাকে) `EXTCODECOPY`-এর খরচ 2600 গ্যাস এবং একই কন্ট্রাক্ট থেকে পরবর্তী কপিগুলোর জন্য 100 গ্যাস এবং প্রতি 32 বাইট শব্দের জন্য 3 গ্যাস খরচ হয়। কলডাটার তুলনায়, যার খরচ প্রতি বাইটে 15.95, এটি প্রায় 200 বাইট থেকে শুরু করে সস্তা। [মেমরি সম্প্রসারণ খরচের সূত্র](https://www.evm.codes/about#memoryexpansion)-এর ওপর ভিত্তি করে, যতক্ষণ আপনার 4MB-এর বেশি মেমরির প্রয়োজন না হয়, মেমরি সম্প্রসারণের খরচ কলডাটা যোগ করার খরচের চেয়ে কম।
-অবশ্যই, এটি কেবল ডেটা _পড়ার_ খরচ। কন্ট্র্যাক্ট তৈরি করতে প্রায় 32,000 গ্যাস + 200 গ্যাস/বাইট খরচ হয়। এই পদ্ধতিটি তখনই সাশ্রয়ী হয় যখন একই তথ্য বিভিন্ন লেনদেনে অনেকবার পড়ার প্রয়োজন হয়।
+অবশ্যই, এটি শুধুমাত্র ডাটা _পড়ার_ খরচ। কন্ট্রাক্ট তৈরি করতে প্রায় 32,000 গ্যাস + 200 গ্যাস/বাইট খরচ হয়। এই পদ্ধতিটি তখনই লাভজনক যখন একই তথ্য বিভিন্ন লেনদেনে অনেকবার পড়ার প্রয়োজন হয়।
-কন্ট্র্যাক্ট কোড অর্থহীন হতে পারে, যতক্ষণ না এটি `0xEF` দিয়ে শুরু হয়। `0xEF` দিয়ে শুরু হওয়া কন্ট্র্যাক্টগুলিকে [ইথেরিয়াম অবজেক্ট ফরম্যাট](https://notes.ethereum.org/@ipsilon/evm-object-format-overview) হিসাবে ব্যাখ্যা করা হয়, যার অনেক কঠোর প্রয়োজনীয়তা রয়েছে।
+কন্ট্রাক্ট কোড অর্থহীন হতে পারে, যতক্ষণ না এটি `0xEF` দিয়ে শুরু হয়। `0xEF` দিয়ে শুরু হওয়া কন্ট্রাক্টগুলোকে [ইথিরিয়াম অবজেক্ট ফরম্যাট (ethereum object format)](https://notes.ethereum.org/@ipsilon/evm-object-format-overview) হিসেবে ব্যাখ্যা করা হয়, যার প্রয়োজনীয়তা অনেক বেশি কঠোর।
-## ইভেন্ট {#events}
+## ইভেন্টস {#events}
-[ইভেন্টগুলি](https://docs.alchemy.com/docs/solidity-events) স্মার্ট কন্ট্র্যাক্ট দ্বারা নির্গত হয় এবং অফচেইন সফ্টওয়্যার দ্বারা পড়া হয়।
-তাদের সুবিধা হল অফচেইন কোড ইভেন্ট শুনতে পারে। খরচ হল [গ্যাস](https://www.evm.codes/#a0?fork=cancun), 375 প্লাস প্রতি বাইট ডেটার জন্য 8 গ্যাস। 12 gwei/গ্যাস এবং 2300 $/ETH-এ, এর অর্থ এক সেন্ট প্লাস প্রতি কিলোবাইটে 22 সেন্ট।
+[ইভেন্টস](https://docs.alchemy.com/docs/solidity-events) স্মার্ট কন্ট্রাক্ট দ্বারা নির্গত হয় এবং অফচেইন সফটওয়্যার দ্বারা পড়া হয়।
+এদের সুবিধা হলো অফচেইন কোড ইভেন্টগুলোর জন্য অপেক্ষা করতে পারে। এর খরচ হলো [গ্যাস](https://www.evm.codes/#a0?fork=cancun), 375 এবং ডাটার প্রতি বাইটের জন্য 8 গ্যাস। 12 gwei/গ্যাস এবং 2300 $/ETH-এ, এটি এক সেন্ট এবং প্রতি কিলোবাইটে 22 সেন্টে রূপান্তরিত হয়।
-## সংগ্রহস্থল {#storage}
+## স্টোরেজ {#storage}
-স্মার্ট কন্ট্র্যাক্টগুলির [স্থায়ী সংগ্রহস্থলে](https://docs.alchemy.com/docs/smart-contract-storage-layout#what-is-storage-memory) অ্যাক্সেস আছে। তবে এটি খুব ব্যয়বহুল। আগে থেকে খালি একটি সংগ্রহস্থল স্লটে একটি 32 বাইট শব্দ লেখার জন্য [22,100 গ্যাস খরচ](https://www.evm.codes/#55?fork=cancun) হতে পারে। 12 gwei/গ্যাস এবং 2300 $/ETH-এ, এটি প্রতি লেখার অপারেশনে প্রায় 61 সেন্ট, অথবা প্রতি কিলোবাইটে $19.5।
+স্মার্ট কন্ট্রাক্টগুলোর [স্থায়ী স্টোরেজ (persistent storage)](https://docs.alchemy.com/docs/smart-contract-storage-layout#what-is-storage-memory)-এ অ্যাক্সেস রয়েছে। তবে, এটি খুব ব্যয়বহুল। একটি পূর্বে খালি থাকা স্টোরেজ স্লটে একটি 32 বাইট শব্দ লিখতে [22,100 গ্যাস খরচ হতে পারে](https://www.evm.codes/#55?fork=cancun)। 12 gwei/গ্যাস এবং 2300 $/ETH-এ, এটি প্রতি রাইট অপারেশনে প্রায় 61 সেন্ট বা প্রতি কিলোবাইটে $19.5।
-এটি ইথেরিয়ামের সবচেয়ে ব্যয়বহুল সংগ্রহস্থলের রূপ।
+এটি ইথিরিয়ামে স্টোরেজের সবচেয়ে ব্যয়বহুল রূপ।
## সারসংক্ষেপ {#summary}
-এই টেবিলটি বিভিন্ন বিকল্প, তাদের সুবিধা এবং অসুবিধাগুলির সারসংক্ষেপ করে।
+এই টেবিলটি বিভিন্ন বিকল্প, তাদের সুবিধা এবং অসুবিধাগুলোর সারসংক্ষেপ প্রদান করে।
-| সংগ্রহস্থলের প্রকার | ডেটার উৎস | প্রাপ্যতা গ্যারান্টি | অনচেইন প্রাপ্যতা | অতিরিক্ত সীমাবদ্ধতা |
-| --------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------- |
-| EIP-4844 blobs | অফচেইন | [~18 দিনের](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/p2p-interface.md#configuration) জন্য ইথেরিয়াম গ্যারান্টি | শুধু হ্যাস উপলব্ধ | |
-| Calldata | অফচেইন | ইথেরিয়াম চিরকালের জন্য গ্যারান্টি (ব্লকচেইনের অংশ) | শুধুমাত্র একটি কন্ট্র্যাক্টে লেখা হলে এবং সেই লেনদেনে উপলব্ধ | |
-| L1 মেকানিজম সহ অফচেইন | অফচেইন | চ্যালেঞ্জ পিরিয়ডের সময় "একজন সৎ যাচাইকারী" গ্যারান্টি | শুধুমাত্র হ্যাস | চ্যালেঞ্জ মেকানিজম দ্বারা গ্যারান্টিযুক্ত, শুধুমাত্র চ্যালেঞ্জ পিরিয়ডের সময় |
-| কন্ট্র্যাক্ট কোড | অনচেইন বা অফচেইন | ইথেরিয়াম চিরকালের জন্য গ্যারান্টি (ব্লকচেইনের অংশ) | হ্যাঁ | একটি "র্যান্ডম" ঠিকানায় লেখা, `0xEF` দিয়ে শুরু হতে পারে না |
-| অনুষ্ঠানসমূহ | অনচেইন | ইথেরিয়াম চিরকালের জন্য গ্যারান্টি (ব্লকচেইনের অংশ) | না | |
-| সংগ্রহস্থল | অনচেইন | ইথেরিয়াম চিরকালের জন্য গ্যারান্টি (ব্লকচেইনের অংশ এবং ওভাররাইট না হওয়া পর্যন্ত বর্তমান অবস্থা) | হ্যাঁ | |
+| স্টোরেজের ধরন | ডাটার উৎস | প্রাপ্যতার গ্যারান্টি | অনচেইন প্রাপ্যতা | অতিরিক্ত সীমাবদ্ধতা |
+| --------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- |
+| EIP-4844 ব্লবস | অফচেইন | [~18 দিনের](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/p2p-interface.md#configuration) জন্য ইথিরিয়াম গ্যারান্টি | শুধুমাত্র হ্যাস উপলব্ধ | |
+| কলডাটা | অফচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ) | শুধুমাত্র যদি একটি কন্ট্রাক্টে লেখা হয় এবং সেই লেনদেনে উপলব্ধ থাকে |
+| L1 মেকানিজমের সাথে অফচেইন | অফচেইন | চ্যালেঞ্জ পিরিয়ডের সময় "একজন সৎ যাচাইকারী" গ্যারান্টি | শুধুমাত্র হ্যাস | চ্যালেঞ্জ মেকানিজম দ্বারা গ্যারান্টিযুক্ত, শুধুমাত্র চ্যালেঞ্জ পিরিয়ডের সময় |
+| কন্ট্রাক্ট কোড | অনচেইন বা অফচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ) | হ্যাঁ | একটি "র্যান্ডম" এডড্রেস এ লেখা হয়, `0xEF` দিয়ে শুরু হতে পারে না |
+| ইভেন্টস | অনচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ) | না |
+| স্টোরেজ | অনচেইন | চিরকালের জন্য ইথিরিয়াম গ্যারান্টি (ব্লকচেইনের অংশ এবং ওভাররাইট না হওয়া পর্যন্ত বর্তমান স্টেট) | হ্যাঁ |
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-availability/index.md b/public/content/translations/bn/developers/docs/data-availability/index.md
index 7511736d5f6..3257ac199ee 100644
--- a/public/content/translations/bn/developers/docs/data-availability/index.md
+++ b/public/content/translations/bn/developers/docs/data-availability/index.md
@@ -1,84 +1,84 @@
---
-title: "ডেটা উপলব্ধতা"
-description: "Ethereum-এ ডেটা উপলব্ধতা সম্পর্কিত সমস্যা এবং সমাধানের একটি সংক্ষিপ্ত বিবরণ"
+title: ডাটা এভেইলএবিলিটি
+description: ইথিরিয়ামে ডাটা এভেইলএবিলিটি সম্পর্কিত সমস্যা এবং সমাধানের একটি ওভারভিউ
lang: bn
---
-"বিশ্বাস করবেন না, যাচাই করুন" Ethereum-এর একটি সাধারণ নীতি। ধারণাটি হল যে আপনার নোড স্বাধীনভাবে যাচাই করতে পারে যে এটি যে তথ্য গ্রহণ করে তা সঠিক কিনা। এটি তারা তাদের সহকর্মীদের থেকে প্রাপ্ত ব্লকগুলিতে থাকা সমস্ত লেনদেন সম্পাদন করে করে থাকে, যাতে প্রস্তাবিত পরিবর্তনগুলি নোড দ্বারা স্বাধীনভাবে গণনা করা পরিবর্তনগুলির সাথে হুবহু মিলে যায়। এর মানে হল যে নোডগুলিকে বিশ্বাস করতে হবে না যে ব্লকের প্রেরকরা সৎ। ডেটা অনুপস্থিত থাকলে এটি সম্ভব নয়।
+"বিশ্বাস করবেন না, যাচাই করুন" (Don't trust, verify) ইথিরিয়ামে একটি সাধারণ প্রবাদ। এর মূল ধারণা হলো আপনার নোড স্বাধীনভাবে যাচাই করতে পারে যে এটি যে তথ্য গ্রহণ করে তা সঠিক, পিয়ারদের কাছ থেকে প্রাপ্ত ব্লকস-এর সমস্ত লেনদেন এক্সিকিউট করার মাধ্যমে, যাতে প্রস্তাবিত পরিবর্তনগুলো নোড দ্বারা স্বাধীনভাবে গণনা করা পরিবর্তনগুলোর সাথে হুবহু মিলে যায়। এর মানে হলো নোডগুলোকে বিশ্বাস করতে হবে না যে ব্লকের প্রেরকরা সৎ। ডাটা অনুপস্থিত থাকলে এটি সম্ভব নয়।
-**ডেটা উপলব্ধতা** বলতে বোঝায় একজন ব্যবহারকারীর সেই আত্মবিশ্বাস যে একটি ব্লক যাচাই করার জন্য প্রয়োজনীয় ডেটা সত্যিই সমস্ত নেটওয়ার্ক অংশগ্রহণকারীদের জন্য উপলব্ধ রয়েছে। Ethereum লেয়ার 1-এর সম্পূর্ণ নোডগুলির জন্য এটি তুলনামূলকভাবে সহজ; সম্পূর্ণ নোড প্রতিটি ব্লকের সমস্ত ডেটার একটি অনুলিপি ডাউনলোড করে - ডাউনলোডের জন্য ডেটা অবশ্যই উপলব্ধ থাকতে হবে। অনুপস্থিত ডেটা সহ একটি ব্লককে ব্লকচেইনে যোগ না করে বাতিল করে দেওয়া হবে। এটি হল "অনচেইন ডেটা উপলব্ধতা" এবং এটি মনোলিথিক ব্লকচেইনের একটি বৈশিষ্ট্য। সম্পূর্ণ নোডগুলিকে অবৈধ লেনদেন গ্রহণ করার জন্য প্রতারিত করা যায় না কারণ তারা নিজেদের জন্য প্রতিটি লেনদেন ডাউনলোড এবং সম্পাদন করে। যাইহোক, মডুলার ব্লকচেইন, লেয়ার 2 রোলআপ এবং লাইট ক্লায়েন্টদের জন্য, ডেটা উপলব্ধতার প্রেক্ষাপট আরও জটিল, যার জন্য কিছু আরও পরিশীলিত যাচাইকরণ পদ্ধতির প্রয়োজন।
+**ডাটা এভেইলএবিলিটি** বলতে একজন ব্যবহারকারীর সেই আত্মবিশ্বাসকে বোঝায় যে একটি ব্লক যাচাই করার জন্য প্রয়োজনীয় ডাটা সত্যিই সমস্ত নেটওয়ার্ক অংশগ্রহণকারীদের জন্য উপলব্ধ। [Ethereum](/) লেয়ার 1-এ ফুল নোডগুলোর জন্য এটি তুলনামূলকভাবে সহজ; ফুল নোড প্রতিটি ব্লকের সমস্ত ডাটার একটি কপি ডাউনলোড করে - ডাউনলোড করা সম্ভব হওয়ার জন্য ডাটা উপলব্ধ _থাকতেই_ হবে। অনুপস্থিত ডাটা সহ একটি ব্লক ব্লকচেইন-এ যুক্ত হওয়ার পরিবর্তে বাতিল করা হবে। এটি হলো "অনচেইন ডাটা এভেইলএবিলিটি" এবং এটি মনোলিথিক ব্লকচেইনগুলোর একটি বৈশিষ্ট্য। ফুল নোডগুলোকে অবৈধ লেনদেন গ্রহণ করার জন্য প্রতারিত করা যায় না কারণ তারা প্রতিটি লেনদেন নিজেদের জন্য ডাউনলোড এবং এক্সিকিউট করে। তবে, মডুলার ব্লকচেইন, লেয়ার ২ রেলআপস এবং লাইট ক্লায়েন্টগুলোর জন্য, ডাটা এভেইলএবিলিটি পরিস্থিতি আরও জটিল, যার জন্য আরও কিছু পরিশীলিত যাচাইকরণ পদ্ধতির প্রয়োজন হয়।
## পূর্বশর্ত {#prerequisites}
-আপনার [ব্লকচেইনের মৌলিক বিষয়গুলি](/developers/docs/intro-to-ethereum/)-এর উপর একটি ভালো ধারণা থাকা উচিত, বিশেষ করে [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/)-এর উপর। এই পৃষ্ঠাটি আরও অনুমান করে যে পাঠক [ব্লক](/developers/docs/blocks/), [লেনদেন](/developers/docs/transactions/), [নোড](/developers/docs/nodes-and-clients/), [স্কেলিং সমাধান](/developers/docs/scaling/), এবং অন্যান্য প্রাসঙ্গিক বিষয়গুলির সাথে পরিচিত।
+আপনার [ব্লকচেইন মৌলিক বিষয়গুলো](/developers/docs/intro-to-ethereum/) সম্পর্কে ভালো ধারণা থাকা উচিত, বিশেষ করে [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/)। এই পেজটি ধরে নেয় যে পাঠক [ব্লকস](/developers/docs/blocks/), [লেনদেন](/developers/docs/transactions/), [নোড](/developers/docs/nodes-and-clients/), [স্কেলিং সমাধান](/developers/docs/scaling/), এবং অন্যান্য প্রাসঙ্গিক বিষয়গুলোর সাথে পরিচিত।
-## ডেটা উপলব্ধতার সমস্যা {#the-data-availability-problem}
+## ডাটা এভেইলএবিলিটি সমস্যা {#the-data-availability-problem}
-ডেটা উপলব্ধতার সমস্যা হলো সমগ্র নেটওয়ার্ককে প্রমাণ করার প্রয়োজন যে কিছু লেনদেনের ডেটার সংক্ষিপ্ত রূপ যা ব্লকচেইনে যোগ করা হচ্ছে তা সত্যিই বৈধ লেনদেনের একটি সেটকে প্রতিনিধিত্ব করে, কিন্তু সমস্ত নোডকে সমস্ত ডেটা ডাউনলোড করার প্রয়োজন ছাড়াই এটি করা। স্বাধীনভাবে ব্লক যাচাই করার জন্য সম্পূর্ণ লেনদেনের ডেটা প্রয়োজনীয়, কিন্তু সমস্ত নোডকে সমস্ত লেনদেনের ডেটা ডাউনলোড করতে বাধ্য করা স্কেলিংয়ের জন্য একটি বাধা। ডেটা উপলব্ধতার সমস্যার সমাধানগুলি সেই নেটওয়ার্ক অংশগ্রহণকারীদের জন্য যথেষ্ট আশ্বাস প্রদানের লক্ষ্যে করা হয় যারা নিজেদের জন্য ডেটা ডাউনলোড এবং সংরক্ষণ করে না, যাতে যাচাইয়ের জন্য সম্পূর্ণ লেনদেনের ডেটা উপলব্ধ করা হয়েছিল।
+ডাটা এভেইলএবিলিটি সমস্যা হলো পুরো নেটওয়ার্ক-এর কাছে এটি প্রমাণ করার প্রয়োজনীয়তা যে ব্লকচেইন-এ যুক্ত হওয়া কিছু লেনদেন ডাটার সংক্ষিপ্ত রূপ সত্যিই বৈধ লেনদেনের একটি সেটকে উপস্থাপন করে, তবে সমস্ত নোডকে সমস্ত ডাটা ডাউনলোড করার প্রয়োজন ছাড়াই এটি করা। ব্লকস স্বাধীনভাবে যাচাই করার জন্য সম্পূর্ণ লেনদেন ডাটা প্রয়োজনীয়, তবে সমস্ত নোডকে সমস্ত লেনদেন ডাটা ডাউনলোড করতে বলা স্কেলিং-এর ক্ষেত্রে একটি বাধা। ডাটা এভেইলএবিলিটি সমস্যার সমাধানগুলোর লক্ষ্য হলো পর্যাপ্ত নিশ্চয়তা প্রদান করা যে সম্পূর্ণ লেনদেন ডাটা সেই নেটওয়ার্ক অংশগ্রহণকারীদের যাচাইকরণের জন্য উপলব্ধ করা হয়েছিল যারা নিজেদের জন্য ডাটা ডাউনলোড এবং সংরক্ষণ করে না।
-[লাইট নোড](/developers/docs/nodes-and-clients/light-clients) এবং [লেয়ার 2 রোলআপ](/developers/docs/scaling) হলো নেটওয়ার্ক অংশগ্রহণকারীদের গুরুত্বপূর্ণ উদাহরণ যাদের শক্তিশালী ডেটা উপলব্ধতার আশ্বাস প্রয়োজন কিন্তু তারা নিজেদের জন্য লেনদেনের ডেটা ডাউনলোড এবং প্রক্রিয়া করতে পারে না। লেনদেনের ডেটা ডাউনলোড করা এড়ানোই লাইট নোডগুলিকে হালকা করে তোলে এবং রোলআপগুলিকে কার্যকর স্কেলিং সমাধান হতে সক্ষম করে।
+[লাইট নোড](/developers/docs/nodes-and-clients/light-clients) এবং [লেয়ার ২ রেলআপস](/developers/docs/scaling) হলো নেটওয়ার্ক অংশগ্রহণকারীদের গুরুত্বপূর্ণ উদাহরণ যাদের শক্তিশালী ডাটা এভেইলএবিলিটি নিশ্চয়তা প্রয়োজন কিন্তু তারা নিজেদের জন্য লেনদেন ডাটা ডাউনলোড এবং প্রসেস করতে পারে না। লেনদেন ডাটা ডাউনলোড করা এড়ানোই লাইট নোডগুলোকে হালকা করে তোলে এবং রেলআপস-কে কার্যকর স্কেলিং সমাধান হতে সক্ষম করে।
-ভবিষ্যতের ["স্টেটলেস"](/roadmap/statelessness) Ethereum ক্লায়েন্টদের জন্য ডেটা উপলব্ধতা একটি গুরুত্বপূর্ণ উদ্বেগের বিষয়, যাদের ব্লক যাচাই করার জন্য স্টেট ডেটা ডাউনলোড এবং সংরক্ষণ করার প্রয়োজন হয় না। স্টেটলেস ক্লায়েন্টদের এখনও নিশ্চিত হতে হবে যে ডেটা _কোথাও_ উপলব্ধ আছে এবং এটি সঠিকভাবে প্রক্রিয়া করা হয়েছে।
+ভবিষ্যতের ["স্টেটলেস"](/roadmap/statelessness) ইথিরিয়াম ক্লায়েন্টগুলোর জন্যও ডাটা এভেইলএবিলিটি একটি গুরুত্বপূর্ণ উদ্বেগের বিষয়, যাদের ব্লকস যাচাই করার জন্য স্টেট ডাটা ডাউনলোড এবং সংরক্ষণ করার প্রয়োজন নেই। স্টেটলেস ক্লায়েন্টগুলোর এখনও নিশ্চিত হওয়া প্রয়োজন যে ডাটা _কোথাও_ উপলব্ধ রয়েছে এবং এটি সঠিকভাবে প্রসেস করা হয়েছে।
-## ডেটা উপলব্ধতার সমাধান {#data-availability-solutions}
+## ডাটা এভেইলএবিলিটি সমাধান {#data-availability-solutions}
-### ডেটা উপলব্ধতা স্যাম্পলিং (DAS) {#data-availability-sampling}
+### ডাটা এভেইলএবিলিটি স্যাম্পলিং (DAS) {#data-availability-sampling}
-ডেটা উপলব্ধতা স্যাম্পলিং (DAS) হল নেটওয়ার্কের জন্য ডেটা উপলব্ধ কিনা তা পরীক্ষা করার একটি উপায়, যা কোনো একক নোডের উপর খুব বেশি চাপ সৃষ্টি করে না। প্রতিটি নোড (নন-স্টেকিং নোড সহ) মোট ডেটার কিছু ছোট, এলোমেলোভাবে নির্বাচিত উপসেট ডাউনলোড করে। নমুনাগুলি সফলভাবে ডাউনলোড করা উচ্চ আত্মবিশ্বাসের সাথে নিশ্চিত করে যে সমস্ত ডেটা উপলব্ধ রয়েছে। এটি ডেটা ইরেজার কোডিং-এর উপর নির্ভর করে, যা একটি প্রদত্ত ডেটাসেটকে রিডান্ড্যান্ট তথ্য দিয়ে প্রসারিত করে (এটি করার উপায় হলো ডেটার উপর একটি _পলিনোমিয়াল_ নামে পরিচিত একটি ফাংশন ফিট করা এবং অতিরিক্ত পয়েন্টে সেই পলিনোমিয়ালটিকে মূল্যায়ন করা)। এটি প্রয়োজনে রিডান্ড্যান্ট ডেটা থেকে মূল ডেটা পুনরুদ্ধার করতে দেয়। এই ডেটা তৈরির একটি পরিণতি হলো যদি মূল ডেটার _কোনো_ অংশ অনুপলব্ধ থাকে, তাহলে প্রসারিত ডেটার _অর্ধেক_ অনুপস্থিত থাকবে! প্রতিটি নোড দ্বারা ডাউনলোড করা ডেটা নমুনার পরিমাণ এমনভাবে টিউন করা যেতে পারে যাতে এটি _অত্যন্ত_ সম্ভাব্য যে প্রতিটি ক্লায়েন্ট দ্বারা নমুনা করা ডেটা খণ্ডগুলির মধ্যে অন্তত একটি অনুপস্থিত থাকবে _যদি_ অর্ধেকের কম ডেটা সত্যিই উপলব্ধ থাকে।
+ডাটা এভেইলএবিলিটি স্যাম্পলিং (DAS) হলো নেটওয়ার্ক-এর জন্য কোনো নির্দিষ্ট নোডের ওপর খুব বেশি চাপ না দিয়ে ডাটা উপলব্ধ কিনা তা পরীক্ষা করার একটি উপায়। প্রতিটি নোড (নন-স্টেকিং নোড সহ) মোট ডাটার কিছু ছোট, এলোমেলোভাবে নির্বাচিত সাবসেট ডাউনলোড করে। সফলভাবে স্যাম্পলগুলো ডাউনলোড করা উচ্চ আত্মবিশ্বাসের সাথে নিশ্চিত করে যে সমস্ত ডাটা উপলব্ধ রয়েছে। এটি ডাটা ইরেজার কোডিংয়ের ওপর নির্ভর করে, যা রিডান্ড্যান্ট তথ্য দিয়ে একটি নির্দিষ্ট ডেটাসেটকে প্রসারিত করে (এটি করার উপায় হলো ডাটার ওপর _পলিনোমিয়াল_ নামে পরিচিত একটি ফাংশন ফিট করা এবং অতিরিক্ত পয়েন্টগুলোতে সেই পলিনোমিয়াল মূল্যায়ন করা)। এটি প্রয়োজনের সময় রিডান্ড্যান্ট ডাটা থেকে মূল ডাটা পুনরুদ্ধার করার অনুমতি দেয়। এই ডাটা তৈরির একটি পরিণতি হলো যে যদি মূল ডাটার _যেকোনো_ অংশ অনুপলব্ধ থাকে, তবে প্রসারিত ডাটার _অর্ধেক_ অনুপস্থিত থাকবে! প্রতিটি নোড দ্বারা ডাউনলোড করা ডাটা স্যাম্পলের পরিমাণ এমনভাবে টিউন করা যেতে পারে যাতে এটি _অত্যন্ত_ সম্ভাবনাময় হয় যে প্রতিটি ক্লায়েন্ট দ্বারা স্যাম্পল করা ডাটা খণ্ডগুলোর মধ্যে অন্তত একটি অনুপস্থিত থাকবে _যদি_ অর্ধেকেরও কম ডাটা সত্যিই উপলব্ধ থাকে।
-[Full Danksharding](/roadmap/danksharding/#what-is-danksharding) বাস্তবায়িত হওয়ার পরে রোলআপ অপারেটররা যাতে তাদের লেনদেনের ডেটা উপলব্ধ করে তা নিশ্চিত করতে DAS ব্যবহার করা হবে। Ethereum নোডগুলি ব্লব-এ প্রদত্ত লেনদেনের ডেটার এলোমেলোভাবে নমুনা নেবে, উপরে ব্যাখ্যা করা রিডান্ডান্সি স্কিম ব্যবহার করে, যাতে নিশ্চিত করা যায় যে সমস্ত ডেটা বিদ্যমান রয়েছে। একই কৌশলটি ব্লক প্রযোজকরা তাদের সমস্ত ডেটা সুরক্ষিত লাইট ক্লায়েন্টদের জন্য উপলব্ধ করছে কিনা তা নিশ্চিত করতেও ব্যবহার করা যেতে পারে। একইভাবে, [প্রস্তাবক-নির্মাতা বিচ্ছেদ](/roadmap/pbs)-এর অধীনে, শুধুমাত্র ব্লক নির্মাতাকে একটি সম্পূর্ণ ব্লক প্রক্রিয়া করতে হবে - অন্যান্য যাচাইকারীরা ডেটা উপলব্ধতা স্যাম্পলিং ব্যবহার করে যাচাই করবে।
+[ফুল ডাঙ্কশার্ডিং](/roadmap/danksharding/#what-is-danksharding) বাস্তবায়িত হওয়ার পর রোলআপ অপারেটররা তাদের লেনদেন ডাটা উপলব্ধ করে তা নিশ্চিত করতে DAS ব্যবহার করা হবে। ইথিরিয়াম নোডগুলো সমস্ত ডাটা বিদ্যমান রয়েছে তা নিশ্চিত করতে ওপরে ব্যাখ্যা করা রিডান্ডেন্সি স্কিম ব্যবহার করে ব্লবগুলোতে (blobs) প্রদত্ত লেনদেন ডাটা এলোমেলোভাবে স্যাম্পল করবে। লাইট ক্লায়েন্টগুলোকে সুরক্ষিত করার জন্য ব্লক প্রডিউসাররা তাদের সমস্ত ডাটা উপলব্ধ করছে তা নিশ্চিত করতে একই কৌশল প্রয়োগ করা যেতে পারে। একইভাবে, [প্রপোজার-বিল্ডার সেপারেশন](/roadmap/pbs)-এর অধীনে, শুধুমাত্র ব্লক বিল্ডারকে একটি সম্পূর্ণ ব্লক প্রসেস করতে হবে - অন্যান্য ভ্যালিডেটরস ডাটা এভেইলএবিলিটি স্যাম্পলিং ব্যবহার করে যাচাই করবে।
-### ডেটা উপলব্ধতা কমিটি {#data-availability-committees}
+### ডাটা এভেইলএবিলিটি কমিটি {#data-availability-committees}
-ডেটা উপলব্ধতা কমিটি (DACs) হল বিশ্বস্ত পক্ষ যারা ডেটা উপলব্ধতা প্রদান করে, বা তার প্রমাণ দেয়। DAC গুলি DAS-এর পরিবর্তে, [বা এর সাথে একত্রে](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) ব্যবহার করা যেতে পারে। কমিটির সাথে আসা নিরাপত্তা নিশ্চয়তা নির্দিষ্ট সেট আপের উপর নির্ভর করে। উদাহরণস্বরূপ, Ethereum লাইট নোডগুলির জন্য ডেটা উপলব্ধতার প্রমাণ দেওয়ার জন্য যাচাইকারীদের এলোমেলোভাবে নমুনা করা উপসেট ব্যবহার করে।
+ডাটা এভেইলএবিলিটি কমিটি (DACs) হলো বিশ্বস্ত পক্ষ যারা ডাটা এভেইলএবিলিটি প্রদান করে বা প্রত্যয়ন করে। DAC-গুলো DAS-এর পরিবর্তে, [বা এর সাথে একত্রে](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) ব্যবহার করা যেতে পারে। কমিটিগুলোর সাথে আসা নিরাপত্তা গ্যারান্টি নির্দিষ্ট সেটআপের ওপর নির্ভর করে। উদাহরণস্বরূপ, ইথিরিয়াম লাইট নোডগুলোর জন্য ডাটা এভেইলএবিলিটি প্রত্যয়ন করতে ভ্যালিডেটরস-এর এলোমেলোভাবে স্যাম্পল করা সাবসেট ব্যবহার করে।
-কিছু ভ্যালিডিয়াম দ্বারা DACs ব্যবহার করা হয়। DAC হল একটি বিশ্বস্ত নোড সেট যা অফলাইনে ডেটার অনুলিপি সংরক্ষণ করে। বিবাদের ক্ষেত্রে DAC-কে ডেটা উপলব্ধ করতে হয়। DAC-এর সদস্যরা অনচেইন অ্যাটেস্টেশনও প্রকাশ করে প্রমাণ করার জন্য যে উক্ত ডেটা সত্যিই উপলব্ধ। কিছু ভ্যালিডিয়াম DAC-কে একটি প্রুফ-অফ-স্টেক (PoS) যাচাইকারী সিস্টেম দিয়ে প্রতিস্থাপন করে। এখানে, যে কেউ একজন যাচাইকারী হতে পারে এবং অফলাইনে ডেটা সংরক্ষণ করতে পারে। তবে, তাদের একটি "বন্ড" প্রদান করতে হবে, যা একটি স্মার্ট কন্ট্র্যাক্টে জমা করা হয়। বিদ্বেষপূর্ণ আচরণের ক্ষেত্রে, যেমন যাচাইকারীর ডেটা আটকে রাখা, বন্ডটি স্ল্যাশ করা যেতে পারে। প্রুফ-অফ-স্টেক ডেটা উপলব্ধতা কমিটিগুলি নিয়মিত DAC-এর চেয়ে যথেষ্ট বেশি সুরক্ষিত কারণ তারা সরাসরি সৎ আচরণকে উৎসাহিত করে।
+কিছু ভ্যালিডিয়াম (validiums) দ্বারাও DAC ব্যবহার করা হয়। DAC হলো নোডগুলোর একটি বিশ্বস্ত সেট যা অফলাইনে ডাটার কপি সংরক্ষণ করে। কোনো বিবাদের ক্ষেত্রে DAC-কে ডাটা উপলব্ধ করতে হয়। DAC-এর সদস্যরা অনচেইন প্রত্যয়নও প্রকাশ করে প্রমাণ করতে যে উক্ত ডাটা সত্যিই উপলব্ধ। কিছু ভ্যালিডিয়াম DAC-কে একটি প্রুফ-অফ-স্টেক (PoS) ভ্যালিডেটর সিস্টেম দিয়ে প্রতিস্থাপন করে। এখানে, যে কেউ ভ্যালিডেটর হতে পারে এবং অফচেইন ডাটা সংরক্ষণ করতে পারে। তবে, তাদের অবশ্যই একটি "বন্ড" প্রদান করতে হবে, যা একটি স্মার্ট কন্ট্রাক্ট-এ জমা করা হয়। ক্ষতিকারক আচরণের ক্ষেত্রে, যেমন ভ্যালিডেটর ডাটা আটকে রাখলে, বন্ডটি স্ল্যাশ করা যেতে পারে। প্রুফ-অফ-স্টেক ডাটা এভেইলএবিলিটি কমিটিগুলো সাধারণ DAC-গুলোর চেয়ে উল্লেখযোগ্যভাবে বেশি সুরক্ষিত কারণ তারা সরাসরি সৎ আচরণকে উৎসাহিত করে।
-## ডেটা উপলব্ধতা এবং লাইট নোড {#data-availability-and-light-nodes}
+## ডাটা এভেইলএবিলিটি এবং লাইট নোড {#data-availability-and-light-nodes}
-[লাইট নোড](/developers/docs/nodes-and-clients/light-clients)-কে ব্লক ডেটা ডাউনলোড না করেই তাদের প্রাপ্ত ব্লক হেডারগুলির সঠিকতা যাচাই করতে হবে। এই হালকাতার মূল্য হলো সম্পূর্ণ নোডগুলির মতো স্থানীয়ভাবে লেনদেন পুনরায় সম্পাদন করে ব্লক হেডারগুলি স্বাধীনভাবে যাচাই করতে না পারা।
+[লাইট নোড](/developers/docs/nodes-and-clients/light-clients)-গুলোর ব্লক ডাটা ডাউনলোড না করেই তাদের প্রাপ্ত ব্লক হেডারগুলোর সঠিকতা যাচাই করা প্রয়োজন। এই হালকা হওয়ার মূল্য হলো ফুল নোডগুলো যেভাবে স্থানীয়ভাবে লেনদেন পুনরায় এক্সিকিউট করে ব্লক হেডারগুলো স্বাধীনভাবে যাচাই করে, সেভাবে করতে না পারা।
-Ethereum লাইট নোডগুলি 512 জন যাচাইকারীর এলোমেলো সেটের উপর বিশ্বাস করে যাদের একটি _সিঙ্ক কমিটি_-তে নিয়োগ করা হয়েছে। সিঙ্ক কমিটি একটি DAC হিসাবে কাজ করে যা লাইট ক্লায়েন্টদের একটি ক্রিপ্টোগ্রাফিক স্বাক্ষরের মাধ্যমে সংকেত দেয় যে হেডারের ডেটা সঠিক। প্রতিদিন, সিঙ্ক কমিটি রিফ্রেশ হয়। প্রতিটি ব্লক হেডার লাইট নোডগুলিকে সতর্ক করে যে কোন যাচাইকারীরা _পরবর্তী_ ব্লকে স্বাক্ষর করবে বলে আশা করা যায়, তাই তারা আসল সিঙ্ক-কমিটি হিসাবে ভান করা কোনো বিদ্বেষপূর্ণ গোষ্ঠীর উপর বিশ্বাস করতে প্রতারিত হতে পারে না।
+ইথিরিয়াম লাইট নোডগুলো 512 জন ভ্যালিডেটরস-এর এলোমেলো সেটকে বিশ্বাস করে যাদের একটি _সিঙ্ক কমিটি_-তে নিয়োগ করা হয়েছে। সিঙ্ক কমিটি একটি DAC হিসেবে কাজ করে যা একটি ক্রিপ্টোগ্রাফিক সিগনেচার ব্যবহার করে লাইট ক্লায়েন্টগুলোকে সংকেত দেয় যে হেডারের ডাটা সঠিক। প্রতিদিন, সিঙ্ক কমিটি রিফ্রেশ হয়। প্রতিটি ব্লক হেডার লাইট নোডগুলোকে সতর্ক করে যে _পরবর্তী_ ব্লকে সাইন অফ করার জন্য কোন ভ্যালিডেটরস-দের আশা করতে হবে, যাতে তারা আসল সিঙ্ক-কমিটির ভান করা কোনো ক্ষতিকারক গ্রুপকে বিশ্বাস করার জন্য প্রতারিত হতে না পারে।
-কিন্তু, যদি কোনো আক্রমণকারী কোনোভাবে লাইট ক্লায়েন্টদের কাছে একটি বিদ্বেষপূর্ণ ব্লক হেডার পাঠাতে এবং তাদের বোঝাতে সক্ষম হয় যে এটি একটি সৎ সিঙ্ক-কমিটি দ্বারা স্বাক্ষরিত হয়েছে, তাহলে কী হবে? সেক্ষেত্রে, আক্রমণকারী অবৈধ লেনদেন অন্তর্ভুক্ত করতে পারে এবং লাইট ক্লায়েন্ট অন্ধভাবে সেগুলি গ্রহণ করবে, কারণ তারা ব্লক হেডারে সংক্ষিপ্ত করা সমস্ত স্টেট পরিবর্তনগুলি স্বাধীনভাবে পরীক্ষা করে না। এর থেকে রক্ষা পেতে, লাইট ক্লায়েন্ট জালিয়াতির প্রমাণ (fraud proofs) ব্যবহার করতে পারে।
+তবে, কী হবে যদি কোনো আক্রমণকারী কোনোভাবে লাইট ক্লায়েন্টগুলোর কাছে একটি ক্ষতিকারক ব্লক হেডার পাঠাতে সক্ষম হয় এবং তাদের বোঝাতে পারে যে এটি একটি সৎ সিঙ্ক-কমিটি দ্বারা সাইন অফ করা হয়েছে? সেক্ষেত্রে, আক্রমণকারী অবৈধ লেনদেন অন্তর্ভুক্ত করতে পারে এবং লাইট ক্লায়েন্ট অন্ধভাবে সেগুলো গ্রহণ করবে, কারণ তারা ব্লক হেডারে সংক্ষিপ্ত করা সমস্ত স্টেট পরিবর্তনগুলো স্বাধীনভাবে পরীক্ষা করে না। এর থেকে রক্ষা পেতে, লাইট ক্লায়েন্ট ফ্রড প্রুফ ব্যবহার করতে পারে।
-এই জালিয়াতির প্রমাণগুলি যেভাবে কাজ করে তা হলো, একটি সম্পূর্ণ নোড, নেটওয়ার্কে একটি অবৈধ স্টেট ট্রানজিশন দেখতে পেয়ে, দ্রুত একটি ছোট ডেটা তৈরি করতে পারে যা প্রমাণ করে যে একটি প্রস্তাবিত স্টেট ট্রানজিশন একটি প্রদত্ত লেনদেনের সেট থেকে সম্ভব নয় এবং সেই ডেটা পিয়ারদের কাছে সম্প্রচার করতে পারে। লাইট নোডগুলি সেই জালিয়াতির প্রমাণগুলি তুলে নিতে পারে এবং খারাপ ব্লক হেডারগুলি বাতিল করতে ব্যবহার করতে পারে, যা নিশ্চিত করে যে তারা সম্পূর্ণ নোডগুলির মতো একই সৎ চেইনে থাকে।
+এই ফ্রড প্রুফ-গুলো যেভাবে কাজ করে তা হলো, একটি ফুল নোড, নেটওয়ার্ক-এর চারপাশে একটি অবৈধ স্টেট ট্রানজিশন ছড়াতে দেখে, দ্রুত একটি ছোট ডাটা তৈরি করতে পারে যা প্রদর্শন করে যে একটি প্রস্তাবিত স্টেট ট্রানজিশন কোনোভাবেই প্রদত্ত লেনদেনের সেট থেকে উদ্ভূত হতে পারে না এবং সেই ডাটা পিয়ারদের কাছে সম্প্রচার করতে পারে। লাইট নোডগুলো সেই ফ্রড প্রুফ-গুলো গ্রহণ করতে পারে এবং খারাপ ব্লক হেডারগুলো বাতিল করতে সেগুলো ব্যবহার করতে পারে, এটি নিশ্চিত করে যে তারা ফুল নোডগুলোর মতো একই সৎ চেইনে থাকে।
-এটি সম্পূর্ণ নোডগুলির সম্পূর্ণ লেনদেনের ডেটাতে অ্যাক্সেসের উপর নির্ভর করে। একজন আক্রমণকারী যে একটি খারাপ ব্লক হেডার সম্প্রচার করে এবং লেনদেনের ডেটা উপলব্ধ করতে ব্যর্থ হয়, সে সম্পূর্ণ নোডগুলিকে জালিয়াতির প্রমাণ তৈরি করতে বাধা দিতে সক্ষম হবে। সম্পূর্ণ নোডগুলি হয়তো একটি খারাপ ব্লক সম্পর্কে একটি সতর্কতা সংকেত দিতে পারে, কিন্তু তারা তাদের সতর্কতাকে প্রমাণ দিয়ে সমর্থন করতে পারবে না, কারণ প্রমাণ তৈরি করার জন্য ডেটা উপলব্ধ করা হয়নি!
+এটি ফুল নোডগুলোর সম্পূর্ণ লেনদেন ডাটায় অ্যাক্সেস থাকার ওপর নির্ভর করে। একজন আক্রমণকারী যে একটি খারাপ ব্লক হেডার সম্প্রচার করে এবং লেনদেন ডাটা উপলব্ধ করতেও ব্যর্থ হয়, সে ফুল নোডগুলোকে ফ্রড প্রুফ তৈরি করা থেকে আটকাতে সক্ষম হবে। ফুল নোডগুলো একটি খারাপ ব্লক সম্পর্কে সতর্কবার্তা দিতে সক্ষম হতে পারে, কিন্তু তারা প্রমাণ দিয়ে তাদের সতর্কবার্তাকে সমর্থন করতে পারবে না, কারণ প্রমাণ তৈরি করার জন্য ডাটা উপলব্ধ করা হয়নি!
-এই ডেটা উপলব্ধতার সমস্যার সমাধান হল DAS। লাইট নোডগুলি সম্পূর্ণ স্টেট ডেটার খুব ছোট এলোমেলো খণ্ড ডাউনলোড করে এবং সম্পূর্ণ ডেটা সেট উপলব্ধ কিনা তা যাচাই করতে নমুনাগুলি ব্যবহার করে। Nটি এলোমেলো খণ্ড ডাউনলোড করার পরে ভুলভাবে সম্পূর্ণ ডেটা উপলব্ধতা অনুমান করার প্রকৃত সম্ভাবনা গণনা করা যেতে পারে ([100টি খণ্ডের জন্য সম্ভাবনা হল 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html), অর্থাৎ, অবিশ্বাস্যভাবে অসম্ভাব্য)।
+এই ডাটা এভেইলএবিলিটি সমস্যার সমাধান হলো DAS। লাইট নোডগুলো সম্পূর্ণ স্টেট ডাটার খুব ছোট এলোমেলো খণ্ড ডাউনলোড করে এবং সম্পূর্ণ ডেটাসেট উপলব্ধ কিনা তা যাচাই করতে স্যাম্পলগুলো ব্যবহার করে। N সংখ্যক এলোমেলো খণ্ড ডাউনলোড করার পর সম্পূর্ণ ডাটা এভেইলএবিলিটি ভুলভাবে ধরে নেওয়ার প্রকৃত সম্ভাবনা গণনা করা যেতে পারে ([100টি খণ্ডের জন্য সম্ভাবনা হলো 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html), অর্থাৎ, অবিশ্বাস্যভাবে অসম্ভাব্য)।
-এমনকি এই পরিস্থিতিতেও, মাত্র কয়েকটি বাইট আটকে রাখা আক্রমণগুলি এলোমেলো ডেটা অনুরোধকারী ক্লায়েন্টদের দ্বারা অলক্ষিত থেকে যেতে পারে। ইরেজার কোডিং ডেটার ছোট অনুপস্থিত অংশগুলি পুনর্গঠন করে এটি ঠিক করে, যা প্রস্তাবিত স্টেট পরিবর্তনগুলি পরীক্ষা করতে ব্যবহার করা যেতে পারে। পুনর্গঠিত ডেটা ব্যবহার করে একটি জালিয়াতির প্রমাণ তৈরি করা যেতে পারে, যা লাইট নোডগুলিকে খারাপ হেডার গ্রহণ করা থেকে বিরত রাখে।
+এমনকি এই পরিস্থিতিতেও, যে আক্রমণগুলো মাত্র কয়েক বাইট আটকে রাখে তা এলোমেলো ডাটা রিকোয়েস্ট করা ক্লায়েন্টগুলোর নজরে না-ও আসতে পারে। ইরেজার কোডিং ডাটার ছোট অনুপস্থিত টুকরোগুলো পুনর্গঠন করে এটি ঠিক করে যা প্রস্তাবিত স্টেট পরিবর্তনগুলো পরীক্ষা করতে ব্যবহার করা যেতে পারে। এরপর পুনর্গঠিত ডাটা ব্যবহার করে একটি ফ্রড প্রুফ তৈরি করা যেতে পারে, যা লাইট নোডগুলোকে খারাপ হেডার গ্রহণ করা থেকে বাধা দেয়।
-**দ্রষ্টব্য:** প্রুফ-অফ-স্টেক Ethereum লাইট ক্লায়েন্টদের জন্য DAS এবং জালিয়াতির প্রমাণ এখনও বাস্তবায়িত হয়নি, তবে সেগুলি রোডম্যাপে রয়েছে, যা সম্ভবত ZK-SNARK ভিত্তিক প্রমাণের রূপ নেবে। আজকের লাইট ক্লায়েন্টরা এক ধরনের DAC-এর উপর নির্ভর করে: তারা সিঙ্ক-কমিটির পরিচয় যাচাই করে এবং তারপর তাদের প্রাপ্ত স্বাক্ষরিত ব্লক হেডারগুলিতে বিশ্বাস করে।
+**দ্রষ্টব্য:** প্রুফ-অফ-স্টেক ইথিরিয়াম লাইট ক্লায়েন্টগুলোর জন্য DAS এবং ফ্রড প্রুফ এখনও বাস্তবায়িত হয়নি, তবে এগুলো রোডম্যাপে রয়েছে, যা সম্ভবত ZK-SNARK ভিত্তিক প্রমাণের রূপ নেবে। আজকের লাইট ক্লায়েন্টগুলো এক ধরণের DAC-এর ওপর নির্ভর করে: তারা সিঙ্ক-কমিটির পরিচয় যাচাই করে এবং তারপর তাদের প্রাপ্ত স্বাক্ষরিত ব্লক হেডারগুলোকে বিশ্বাস করে।
-## ডেটা উপলব্ধতা এবং লেয়ার 2 রোলআপ {#data-availability-and-layer-2-rollups}
+## ডাটা এভেইলএবিলিটি এবং লেয়ার ২ রেলআপস {#data-availability-and-layer-2-rollups}
-[লেয়ার 2 স্কেলিং সমাধান](/layer-2/), যেমন [রোলআপ](/glossary/#rollups), অফলাইনে লেনদেন প্রক্রিয়া করে লেনদেনের খরচ কমায় এবং Ethereum-এর থ্রুপুট বাড়ায়। রোলআপ লেনদেনগুলি সংকুচিত করা হয় এবং ব্যাচ আকারে Ethereum-এ পোস্ট করা হয়। ব্যাচগুলি Ethereum-এ একটি একক লেনদেনে হাজার হাজার স্বতন্ত্র অফচেইন লেনদেনকে প্রতিনিধিত্ব করে। এটি বেস লেয়ারের যানজট কমায় এবং ব্যবহারকারীদের জন্য ফি কমায়।
+[লেয়ার ২ স্কেলিং সমাধান](/layer-2/), যেমন [রেলআপস](/glossary/#rollups), লেনদেনের খরচ কমায় এবং অফচেইন লেনদেন প্রসেস করার মাধ্যমে ইথিরিয়ামের থ্রুপুট বাড়ায়। রোলআপ লেনদেনগুলো সংকুচিত করা হয় এবং ব্যাচ আকারে ইথিরিয়ামে পোস্ট করা হয়। ব্যাচগুলো ইথিরিয়ামে একটি একক লেনদেনে হাজার হাজার পৃথক অফচেইন লেনদেনকে উপস্থাপন করে। এটি বেস লেয়ারে যানজট কমায় এবং ব্যবহারকারীদের জন্য ফি হ্রাস করে।
-তবে, Ethereum-এ পোস্ট করা 'সারাংশ' লেনদেনগুলিতে কেবল তখনই বিশ্বাস করা সম্ভব যদি প্রস্তাবিত স্টেট পরিবর্তন স্বাধীনভাবে যাচাই করা যায় এবং নিশ্চিত করা যায় যে এটি সমস্ত স্বতন্ত্র অফচেইন লেনদেন প্রয়োগের ফল। যদি রোলআপ অপারেটররা এই যাচাইয়ের জন্য লেনদেনের ডেটা উপলব্ধ না করে, তাহলে তারা Ethereum-এ ভুল ডেটা পাঠাতে পারে।
+তবে, ইথিরিয়ামে পোস্ট করা 'সংক্ষিপ্ত' লেনদেনগুলোকে বিশ্বাস করা তখনই সম্ভব যদি প্রস্তাবিত স্টেট পরিবর্তন স্বাধীনভাবে যাচাই করা যায় এবং সমস্ত পৃথক অফচেইন লেনদেন প্রয়োগ করার ফলাফল হিসেবে নিশ্চিত করা যায়। যদি রোলআপ অপারেটররা এই যাচাইকরণের জন্য লেনদেন ডাটা উপলব্ধ না করে, তবে তারা ইথিরিয়ামে ভুল ডাটা পাঠাতে পারে।
-[অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/) সংকুচিত লেনদেনের ডেটা Ethereum-এ পোস্ট করে এবং কিছু সময়ের জন্য (সাধারণত 7 দিন) অপেক্ষা করে যাতে স্বাধীন যাচাইকারীরা ডেটা পরীক্ষা করতে পারে। যদি কেউ কোনো সমস্যা শনাক্ত করে, তারা একটি জালিয়াতির প্রমাণ তৈরি করতে পারে এবং রোলআপকে চ্যালেঞ্জ করতে এটি ব্যবহার করতে পারে। এটি চেইনটিকে রোল ব্যাক করতে এবং অবৈধ ব্লকটি বাদ দিতে বাধ্য করবে। ডেটা উপলব্ধ থাকলেই কেবল এটি সম্ভব। বর্তমানে, দুটি উপায়ে অপ্টিমেস্টিক রোলআপগুলি L1-এ লেনদেনের ডেটা পোস্ট করে। কিছু রোলআপ `CALLDATA` হিসাবে ডেটা স্থায়ীভাবে উপলব্ধ করে, যা স্থায়ীভাবে অনচেইনে থাকে। EIP-4844 বাস্তবায়নের সাথে, কিছু রোলআপ তাদের লেনদেনের ডেটা পরিবর্তে সস্তা ব্লব স্টোরেজে পোস্ট করে। এটি স্থায়ী সংগ্রহস্থল নয়। স্বাধীন যাচাইকারীদের ~18 দিনের মধ্যে ব্লবগুলি জিজ্ঞাসা করতে হবে এবং তাদের চ্যালেঞ্জ উত্থাপন করতে হবে, এরপরে ডেটা Ethereum লেয়ার-1 থেকে মুছে ফেলা হবে। সেই স্বল্প নির্দিষ্ট সময়ের জন্য শুধুমাত্র Ethereum প্রোটোকল দ্বারা ডেটা উপলব্ধতার নিশ্চয়তা দেওয়া হয়। এর পরে, এটি Ethereum ইকোসিস্টেমের অন্যান্য সত্তার দায়িত্ব হয়ে যায়। যেকোনো নোড DAS ব্যবহার করে ডেটা উপলব্ধতা যাচাই করতে পারে, অর্থাৎ, ব্লব ডেটার ছোট, এলোমেলো নমুনা ডাউনলোড করে।
+[অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/) ইথিরিয়ামে সংকুচিত লেনদেন ডাটা পোস্ট করে এবং স্বাধীন যাচাইকারীদের ডাটা পরীক্ষা করার অনুমতি দেওয়ার জন্য কিছু সময় (সাধারণত 7 দিন) অপেক্ষা করে। যদি কেউ কোনো সমস্যা চিহ্নিত করে, তবে তারা একটি ফ্রড প্রুফ তৈরি করতে পারে এবং রোলআপকে চ্যালেঞ্জ করতে এটি ব্যবহার করতে পারে। এর ফলে চেইনটি রোল ব্যাক করবে এবং অবৈধ ব্লকটি বাদ দেবে। এটি কেবল তখনই সম্ভব যদি ডাটা উপলব্ধ থাকে। বর্তমানে, অপ্টিমেস্টিক রোলআপগুলো L1-এ লেনদেন ডাটা পোস্ট করার দুটি উপায় রয়েছে। কিছু রোলআপ ডাটাকে `CALLDATA` হিসেবে স্থায়ীভাবে উপলব্ধ করে যা স্থায়ীভাবে অনচেইন থাকে। EIP-4844 বাস্তবায়নের সাথে, কিছু রোলআপ এর পরিবর্তে সস্তা ব্লব স্টোরেজে তাদের লেনদেন ডাটা পোস্ট করে। এটি স্থায়ী স্টোরেজ নয়। ইথিরিয়াম লেয়ার-1 থেকে ডাটা মুছে ফেলার আগে স্বাধীন যাচাইকারীদের ব্লবগুলোতে কোয়েরি করতে হবে এবং ~18 দিনের মধ্যে তাদের চ্যালেঞ্জগুলো উত্থাপন করতে হবে। ডাটা এভেইলএবিলিটি শুধুমাত্র সেই সংক্ষিপ্ত নির্দিষ্ট উইন্ডোর জন্য ইথিরিয়াম প্রটোকল দ্বারা নিশ্চিত করা হয়। এর পরে, এটি ইথিরিয়াম ইকোসিস্টেমের অন্যান্য সত্তার দায়িত্ব হয়ে ওঠে। যেকোনো নোড DAS ব্যবহার করে ডাটা এভেইলএবিলিটি যাচাই করতে পারে, অর্থাৎ, ব্লব ডাটার ছোট, এলোমেলো স্যাম্পল ডাউনলোড করে।
-[জিরো-নলেজ (ZK) রোলআপ](/developers/docs/scaling/zk-rollups)-এর লেনদেনের ডেটা পোস্ট করার প্রয়োজন নেই কারণ [জিরো-নলেজ ভ্যালিডিটি প্রুফ](/glossary/#zk-proof) স্টেট ট্রানজিশনের সঠিকতার নিশ্চয়তা দেয়। তবে, ডেটা উপলব্ধতা এখনও একটি সমস্যা কারণ আমরা এর স্টেট ডেটাতে অ্যাক্সেস ছাড়া ZK-রোলআপের কার্যকারিতা (বা এর সাথে ইন্টারঅ্যাক্ট করা) নিশ্চিত করতে পারি না। উদাহরণস্বরূপ, যদি একজন অপারেটর রোলআপের স্টেট সম্পর্কে বিশদ বিবরণ আটকে রাখে তবে ব্যবহারকারীরা তাদের ব্যালেন্স জানতে পারে না। এছাড়াও, তারা নতুন যোগ করা ব্লকে থাকা তথ্য ব্যবহার করে স্টেট আপডেট করতে পারে না।
+[জিরো-নলেজ (ZK) রোলআপ](/developers/docs/scaling/zk-rollups)-গুলোর লেনদেন ডাটা পোস্ট করার প্রয়োজন নেই কারণ [জিরো-নলেজ ভ্যালিডিটি প্রুফ](/glossary/#zk-proof) স্টেট ট্রানজিশনের সঠিকতার গ্যারান্টি দেয়। তবে, ডাটা এভেইলএবিলিটি এখনও একটি সমস্যা কারণ আমরা এর স্টেট ডাটায় অ্যাক্সেস ছাড়া ZK-রোলআপের কার্যকারিতার গ্যারান্টি দিতে পারি না (বা এর সাথে ইন্টারঅ্যাক্ট করতে পারি না)। উদাহরণস্বরূপ, যদি কোনো অপারেটর রোলআপের স্টেট সম্পর্কে বিশদ আটকে রাখে তবে ব্যবহারকারীরা তাদের ব্যালেন্স জানতে পারবে না। এছাড়াও, তারা নতুন যুক্ত হওয়া ব্লকে থাকা তথ্য ব্যবহার করে স্টেট আপডেট করতে পারবে না।
-## ডেটা উপলব্ধতা বনাম ডেটা পুনরুদ্ধারযোগ্যতা {#data-availability-vs-data-retrievability}
+## ডাটা এভেইলএবিলিটি বনাম ডাটা রিট্রিভাবিলিটি {#data-availability-vs-data-retrievability}
-ডেটা উপলব্ধতা ডেটা পুনরুদ্ধারযোগ্যতা থেকে ভিন্ন। ডেটা উপলব্ধতা হল এই আশ্বাস যে সম্পূর্ণ নোডগুলি একটি নির্দিষ্ট ব্লকের সাথে সম্পর্কিত লেনদেনের সম্পূর্ণ সেট অ্যাক্সেস এবং যাচাই করতে সক্ষম হয়েছে। এর মানে এই নয় যে ডেটা চিরকালের জন্য অ্যাক্সেসযোগ্য।
+ডাটা এভেইলএবিলিটি ডাটা রিট্রিভাবিলিটি থেকে আলাদা। ডাটা এভেইলএবিলিটি হলো এই নিশ্চয়তা যে ফুল নোডগুলো একটি নির্দিষ্ট ব্লকের সাথে যুক্ত লেনদেনের সম্পূর্ণ সেট অ্যাক্সেস এবং যাচাই করতে সক্ষম হয়েছে। এর মানে এই নয় যে ডাটা চিরকালের জন্য অ্যাক্সেসযোগ্য।
-ডেটা পুনরুদ্ধারযোগ্যতা হল ব্লকচেইন থেকে _ঐতিহাসিক তথ্য_ পুনরুদ্ধার করার জন্য নোডগুলির ক্ষমতা। এই ঐতিহাসিক ডেটা নতুন ব্লক যাচাই করার জন্য প্রয়োজন হয় না, এটি শুধুমাত্র জেনেসিস ব্লক থেকে সম্পূর্ণ নোড সিঙ্ক করার জন্য বা নির্দিষ্ট ঐতিহাসিক অনুরোধ পরিবেশন করার জন্য প্রয়োজন।
+ডাটা রিট্রিভাবিলিটি হলো ব্লকচেইন থেকে _ঐতিহাসিক তথ্য_ পুনরুদ্ধার করার নোডগুলোর ক্ষমতা। নতুন ব্লকস যাচাই করার জন্য এই ঐতিহাসিক ডাটার প্রয়োজন নেই, এটি শুধুমাত্র জেনেসিস ব্লক থেকে ফুল নোডগুলোকে সিঙ্ক করার জন্য বা নির্দিষ্ট ঐতিহাসিক রিকোয়েস্টগুলো পরিবেশন করার জন্য প্রয়োজনীয়।
-মূল Ethereum প্রোটোকল মূলত ডেটা উপলব্ধতা নিয়ে চিন্তিত, ডেটা পুনরুদ্ধারযোগ্যতা নিয়ে নয়। ডেটা পুনরুদ্ধারযোগ্যতা তৃতীয় পক্ষ দ্বারা চালিত আর্কাইভ নোডগুলির একটি ছোট জনসংখ্যা দ্বারা সরবরাহ করা যেতে পারে, অথবা এটি [পোর্টাল নেটওয়ার্ক](https://www.ethportal.net/)-এর মতো বিকেন্দ্রীভূত ফাইল স্টোরেজ ব্যবহার করে নেটওয়ার্ক জুড়ে বিতরণ করা যেতে পারে।
+মূল ইথিরিয়াম প্রটোকল প্রাথমিকভাবে ডাটা এভেইলএবিলিটি নিয়ে উদ্বিগ্ন, ডাটা রিট্রিভাবিলিটি নিয়ে নয়। ডাটা রিট্রিভাবিলিটি তৃতীয় পক্ষ দ্বারা পরিচালিত আর্কাইভ নোডগুলোর একটি ছোট জনসংখ্যা দ্বারা প্রদান করা যেতে পারে, অথবা এটি [Portal Network](https://www.ethportal.net/)-এর মতো ডিসেন্ট্রালাইজড ফাইল স্টোরেজ ব্যবহার করে নেটওয়ার্ক জুড়ে বিতরণ করা যেতে পারে।
## আরও পড়ুন {#further-reading}
-- [ডেটা উপলব্ধতা কী?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f)
-- [ডেটা উপলব্ধতা কী?](https://coinmarketcap.com/academy/article/what-is-data-availability)
-- [ডেটা উপলব্ধতা চেকের উপর একটি প্রাইমার](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html)
-- [শার্ডিং + DAS প্রস্তাবের একটি ব্যাখ্যা](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
-- [ডেটা উপলব্ধতা এবং ইরেজার কোডিং-এর উপর একটি নোট](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them)
-- [ডেটা উপলব্ধতা কমিটি।](https://medium.com/starkware/data-availability-e5564c416424)
-- [প্রুফ-অফ-স্টেক ডেটা উপলব্ধতা কমিটি।](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
-- [ডেটা পুনরুদ্ধারযোগ্যতা সমস্যার সমাধান](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding)
-- [ডেটা উপলব্ধতা অথবা: কীভাবে রোলআপগুলি চিন্তা করা বন্ধ করতে এবং Ethereum-কে ভালোবাসতে শিখেছে](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
-- [EIP-7623: কলডেটার খরচ বৃদ্ধি](https://web.archive.org/web/20250515194659/https://research.2077.xyz/eip-7623-increase-calldata-cost)
+- [ডাটা এভেইলএবিলিটি কী?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f)
+- [ডাটা এভেইলএবিলিটি কী?](https://coinmarketcap.com/academy/article/what-is-data-availability)
+- [ডাটা এভেইলএবিলিটি চেকের ওপর একটি প্রাইমার](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html)
+- [শার্ডিং + DAS প্রস্তাবনার একটি ব্যাখ্যা](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
+- [ডাটা এভেইলএবিলিটি এবং ইরেজার কোডিংয়ের ওপর একটি নোট](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them)
+- [ডাটা এভেইলএবিলিটি কমিটি।](https://medium.com/starkware/data-availability-e5564c416424)
+- [প্রুফ-অফ-স্টেক ডাটা এভেইলএবিলিটি কমিটি।](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
+- [ডাটা রিট্রিভাবিলিটি সমস্যার সমাধান](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding)
+- [ডাটা এভেইলএবিলিটি অথবা: কীভাবে রোলআপস চিন্তা করা বন্ধ করতে এবং ইথিরিয়ামকে ভালোবাসতে শিখেছে](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
+- [EIP-7623: কলডাটা খরচ বৃদ্ধি](https://web.archive.org/web/20250515194659/https://research.2077.xyz/eip-7623-increase-calldata-cost)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-structures-and-encoding/index.md b/public/content/translations/bn/developers/docs/data-structures-and-encoding/index.md
index f4b2bbfd489..4e74c724a1a 100644
--- a/public/content/translations/bn/developers/docs/data-structures-and-encoding/index.md
+++ b/public/content/translations/bn/developers/docs/data-structures-and-encoding/index.md
@@ -1,32 +1,32 @@
---
-title: "ডেটা স্ট্রাকচার এবং এনকোডিং"
-description: "সাধারণ ভাবে ইথেরিয়াম ডাটা স্ট্রাটার ধারণা."
+title: ডাটা স্ট্রাকচার এবং এনকোডিং
+description: মৌলিক ইথিরিয়াম ডাটা স্ট্রাকচারগুলোর একটি ওভারভিউ।
lang: bn
sidebarDepth: 2
---
-ইথেরিয়াম তৈরির রহস্য, এটি কিভাবে সংরক্ষণ এবং বড় করে তথ্য স্থানান্তর করে. এই ডেটা অবশ্যই এমন মানসম্মত এবং মেমরি-দক্ষ উপায়ে ফর্ম্যাট করা উচিত যাতে যে কেউ অপেক্ষাকৃত সাধারণ কনজিউমার-গ্রেড হার্ডওয়্যারে একটি [নোড চালাতে](/run-a-node/) পারে। এটি অর্জন করার জন্য, Ethereum স্ট্যাকের উপর বেশ কয়েকটি নির্দিষ্ট ডেটা স্ট্রাকচার ব্যবহার করা হয়।
+ইথিরিয়াম প্রচুর পরিমাণে ডাটা তৈরি, সংরক্ষণ এবং স্থানান্তর করে। এই ডাটা অবশ্যই প্রমিত এবং মেমরি-সাশ্রয়ী উপায়ে ফরম্যাট করা উচিত যাতে যে কেউ তুলনামূলকভাবে সাধারণ কনজিউমার-গ্রেড হার্ডওয়্যারে একটি [নোড চালাতে](/run-a-node/) পারে। এটি অর্জনের জন্য, ইথিরিয়াম স্ট্যাকে বেশ কয়েকটি নির্দিষ্ট ডাটা স্ট্রাকচার ব্যবহার করা হয়।
## পূর্বশর্ত {#prerequisites}
-আপনার Ethereum এবং [ক্লায়েন্ট সফটওয়্যার](/developers/docs/nodes-and-clients/) এর মূল বিষয়গুলি বোঝা উচিত। নেটওয়ার্কিং লেয়ার এবং [Ethereum হোয়াইটপেপার](/whitepaper/) সম্পর্কে পরিচিতি থাকা বাঞ্ছনীয়।
+আপনার ইথিরিয়ামের মৌলিক বিষয়গুলো এবং [ক্লায়েন্ট সফটওয়্যার](/developers/docs/nodes-and-clients/) সম্পর্কে বোঝা উচিত। নেটওয়ার্কিং লেয়ার এবং [ইথিরিয়াম হোয়াইটপেপার](/whitepaper/)-এর সাথে পরিচিতি থাকার পরামর্শ দেওয়া হচ্ছে।
-## ডেটা স্ট্রাকচার {#data-structures}
+## ডাটা স্ট্রাকচার {#data-structures}
-### প্যাট্রিসিয়া মার্কল ট্রাই {#patricia-merkle-tries}
+### প্যাট্রিসিয়া মার্কেল ট্রাইস {#patricia-merkle-tries}
-প্যাট্রিসিয়া মার্কল ট্রাই হলো এমন স্ট্রাকচার যা কী-ভ্যালু পেয়ারগুলিকে একটি ডিটারমিনিস্টিক এবং ক্রিপ্টোগ্রাফিক্যালি প্রমাণীকৃত ট্রাই-তে এনকোড করে। এগুলি Ethereum-এর এক্সিকিউশন লেয়ার জুড়ে ব্যাপকভাবে ব্যবহৃত হয়।
+প্যাট্রিসিয়া মার্কেল ট্রাইস (Patricia Merkle Tries) হলো এমন স্ট্রাকচার যা কি-ভ্যালু (key-value) পেয়ারগুলোকে একটি ডিটারমিনিস্টিক এবং ক্রিপ্টোগ্রাফিক্যালি অথেনটিকেটেড ট্রাই-তে এনকোড করে। এগুলো ইথিরিয়ামের এক্সিকিউশন লেয়ার জুড়ে ব্যাপকভাবে ব্যবহৃত হয়।
-[প্যাট্রিসিয়া মার্কল ট্রাই সম্পর্কে আরও](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
+[প্যাট্রিসিয়া মার্কেল ট্রাইস সম্পর্কে আরও জানুন](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
### রিকার্সিভ লেংথ প্রিফিক্স {#recursive-length-prefix}
-রিকার্সিভ লেংথ প্রিফিক্স (RLP) হল একটি সিরিয়ালাইজেশন পদ্ধতি যা Ethereum-এর এক্সিকিউশন লেয়ার জুড়ে ব্যাপকভাবে ব্যবহৃত হয়।
+রিকার্সিভ লেংথ প্রিফিক্স (RLP) হলো একটি সিরিয়ালাইজেশন পদ্ধতি যা ইথিরিয়ামের এক্সিকিউশন লেয়ার জুড়ে ব্যাপকভাবে ব্যবহৃত হয়।
-[RLP সম্পর্কে আরও](/developers/docs/data-structures-and-encoding/rlp)
+[RLP সম্পর্কে আরও জানুন](/developers/docs/data-structures-and-encoding/rlp)
-### সিম্পল সিরিয়ালাইজ {#simple-serialize}
+### সিম্পল সিরিয়ালাইজ {#simple-serialize}
-সিম্পল সিরিয়ালাইজ (SSZ) হল Ethereum-এর কনসেন্সাস লেয়ার-এর প্রধান সিরিয়ালাইজেশন ফর্ম্যাট কারণ এটি মার্কলাইজেশনের সাথে সামঞ্জস্যপূর্ণ।
+সিম্পল সিরিয়ালাইজ (SSZ) হলো ইথিরিয়ামের কনসেন্সাস লেয়ারের প্রধান সিরিয়ালাইজেশন ফরম্যাট কারণ এটি মার্কেলিজেশনের (merklelization) সাথে সামঞ্জস্যপূর্ণ।
-[SSZ সম্পর্কে আরও](/developers/docs/data-structures-and-encoding/ssz)
+[SSZ সম্পর্কে আরও জানুন](/developers/docs/data-structures-and-encoding/ssz)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/bn/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
index 3135dbdc246..47e20cb52fa 100644
--- a/public/content/translations/bn/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
+++ b/public/content/translations/bn/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
@@ -1,37 +1,37 @@
---
-title: "মার্কল প্যাট্রিসিয়া ট্রাই"
-description: "মার্কল প্যাট্রিসিয়া ট্রাই-এর ভূমিকা।"
+title: মার্কেল প্যাট্রিসিয়া ট্রাই
+description: মার্কেল প্যাট্রিসিয়া ট্রাইয়ের পরিচিতি।
lang: bn
sidebarDepth: 2
---
-ইথেরিয়ামের স্টেট (সমস্ত অ্যাকাউন্ট, ব্যালেন্স এবং স্মার্ট কন্ট্র্যাক্টের সমষ্টি), কম্পিউটার বিজ্ঞানে সাধারণত মার্কল ট্রি হিসাবে পরিচিত ডেটা স্ট্রাকচারের একটি বিশেষ সংস্করণে এনকোড করা হয়। এই কাঠামোটি ক্রিপ্টোগ্রাফির অনেক অ্যাপ্লিকেশনের জন্য দরকারী কারণ এটি ট্রিতে জড়িত ডেটার সমস্ত পৃথক অংশের মধ্যে একটি যাচাইযোগ্য সম্পর্ক তৈরি করে, যার ফলে একটি একক **রুট** মান পাওয়া যায় যা ডেটা সম্পর্কে বিভিন্ন বিষয় প্রমাণ করতে ব্যবহার করা যেতে পারে।
+[Ethereum](/)-এর স্টেট (সমস্ত একাউন্ট, ব্যালেন্স এবং স্মার্ট কন্ট্রাক্টের সমষ্টি) একটি বিশেষ সংস্করণের ডেটা স্ট্রাকচারে এনকোড করা হয় যা কম্পিউটার বিজ্ঞানে সাধারণত মার্কেল ট্রি (Merkle Tree) নামে পরিচিত। এই স্ট্রাকচারটি ক্রিপ্টোগ্রাফির অনেক অ্যাপ্লিকেশনের জন্য দরকারী কারণ এটি ট্রিতে থাকা সমস্ত পৃথক ডেটার মধ্যে একটি যাচাইযোগ্য সম্পর্ক তৈরি করে, যার ফলে একটি একক **root** ভ্যালু তৈরি হয় যা ডেটা সম্পর্কে বিভিন্ন বিষয় প্রমাণ করতে ব্যবহার করা যেতে পারে।
-ইথেরিয়ামের ডেটা স্ট্রাকচারটি একটি 'মডিফায়েড মার্কল-প্যাট্রিসিয়া ট্রাই', এর এই নামকরণ করা হয়েছে কারণ এটি PATRICIA (প্র্যাকটিক্যাল অ্যালগরিদম টু রিট্রিভ ইনফরমেশন কোডেড ইন আলফানিউমেরিক) এর কিছু বৈশিষ্ট্য ধার করে, এবং কারণ এটি ইথেরিয়াম স্টেট গঠনকারী আইটেমগুলির কার্যকর ডেটা রি**ট্রি**ভালের জন্য ডিজাইন করা হয়েছে।
+ইথেরিয়ামের ডেটা স্ট্রাকচার হলো একটি 'মডিফাইড মার্কেল-প্যাট্রিসিয়া ট্রাই', এর নামকরণ এমন করা হয়েছে কারণ এটি PATRICIA (the Practical Algorithm To Retrieve Information Coded in Alphanumeric)-এর কিছু বৈশিষ্ট্য ধার করে এবং এটি ইথেরিয়াম স্টেট গঠনকারী আইটেমগুলোর দক্ষ ডেটা রি**ট্রাই**ভাল (retrieval)-এর জন্য ডিজাইন করা হয়েছে।
-একটি মার্কল-প্যাট্রিসিয়া ট্রাই ডিটারমিনিস্টিক এবং ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য: একটি স্টেট রুট তৈরি করার একমাত্র উপায় হল স্টেটের প্রতিটি পৃথক অংশ থেকে এটি গণনা করা, এবং দুটি স্টেট যা অভিন্ন তা রুট হ্যাস এবং যে হ্যাসগুলি থেকে এটি তৈরি হয়েছে তা তুলনা করে সহজেই প্রমাণ করা যেতে পারে (_একটি মার্কল প্রুফ_)। বিপরীতভাবে, একই রুট হ্যাস দিয়ে দুটি ভিন্ন স্টেট তৈরি করার কোনো উপায় নেই, এবং ভিন্ন মান দিয়ে স্টেট পরিবর্তন করার যেকোনো প্রচেষ্টা একটি ভিন্ন স্টেট রুট হ্যাসের জন্ম দেবে। তাত্ত্বিকভাবে, এই কাঠামোটি সন্নিবেশ, সন্ধান এবং মুছে ফেলার জন্য `O(log(n))` দক্ষতার 'হোলি গ্রেইল' প্রদান করে।
+একটি মার্কেল-প্যাট্রিসিয়া ট্রাই ডিটারমিনিস্টিক এবং ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য: একটি স্টেট রুট তৈরি করার একমাত্র উপায় হলো স্টেটের প্রতিটি পৃথক অংশ থেকে এটি গণনা করা, এবং দুটি অভিন্ন স্টেট সহজেই রুট হ্যাস এবং এর সাথে যুক্ত হ্যাসগুলোর তুলনা করে প্রমাণ করা যায় (_একটি মার্কেল প্রুফ_)। বিপরীতভাবে, একই রুট হ্যাস দিয়ে দুটি ভিন্ন স্টেট তৈরি করার কোনো উপায় নেই, এবং ভিন্ন ভ্যালু দিয়ে স্টেট পরিবর্তন করার যেকোনো প্রচেষ্টার ফলে একটি ভিন্ন স্টেট রুট হ্যাস তৈরি হবে। তাত্ত্বিকভাবে, এই স্ট্রাকচারটি ইনসার্ট, লুকআপ এবং ডিলিট করার জন্য `O(log(n))` দক্ষতার 'হোলি গ্রেইল' প্রদান করে।
-অদূর ভবিষ্যতে, ইথেরিয়াম একটি [ভার্কল ট্রি](/roadmap/verkle-trees) কাঠামোতে স্থানান্তরিত করার পরিকল্পনা করছে, যা ভবিষ্যতের প্রোটোকল উন্নতির জন্য অনেক নতুন সম্ভাবনার দ্বার উন্মোচন করবে।
+নিকট ভবিষ্যতে, ইথেরিয়াম একটি [ভার্কেল ট্রি (Verkle Tree)](/roadmap/verkle-trees) স্ট্রাকচারে স্থানান্তরিত হওয়ার পরিকল্পনা করছে, যা ভবিষ্যতের প্রটোকল উন্নতির জন্য অনেক নতুন সম্ভাবনা উন্মুক্ত করবে।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালভাবে বোঝার জন্য, [হ্যাস](https://en.wikipedia.org/wiki/Hash_function), [মার্কল ট্রি](https://en.wikipedia.org/wiki/Merkle_tree), [ট্রাই](https://en.wikipedia.org/wiki/Trie) এবং [সিরিয়ালাইজেশন](https://en.wikipedia.org/wiki/Serialization)-এর প্রাথমিক জ্ঞান থাকা সহায়ক হবে। এই নিবন্ধটি একটি বেসিক [রেডিক্স ট্রি](https://en.wikipedia.org/wiki/Radix_tree)-এর বর্ণনা দিয়ে শুরু হয়েছে, তারপর ধীরে ধীরে ইথেরিয়ামের আরও অপ্টিমাইজড ডেটা স্ট্রাকচারের জন্য প্রয়োজনীয় পরিবর্তনগুলি উপস্থাপন করা হয়েছে।
+এই পেজটি ভালোভাবে বোঝার জন্য, [হ্যাস](https://en.wikipedia.org/wiki/Hash_function), [মার্কেল ট্রি](https://en.wikipedia.org/wiki/Merkle_tree), [ট্রাই](https://en.wikipedia.org/wiki/Trie) এবং [সিরিয়ালাইজেশন](https://en.wikipedia.org/wiki/Serialization) সম্পর্কে প্রাথমিক জ্ঞান থাকা সহায়ক হবে। এই আর্টিকেলটি একটি বেসিক [র্যাডিক্স ট্রি (radix tree)](https://en.wikipedia.org/wiki/Radix_tree)-এর বর্ণনা দিয়ে শুরু হয়, তারপর ধীরে ধীরে ইথেরিয়ামের আরও অপ্টিমাইজ করা ডেটা স্ট্রাকচারের জন্য প্রয়োজনীয় পরিবর্তনগুলো তুলে ধরে।
-## বেসিক রেডিক্স ট্রাই {#basic-radix-tries}
+## বেসিক র্যাডিক্স ট্রাই {#basic-radix-tries}
-একটি বেসিক রেডিক্স ট্রাই-তে, প্রতিটি নোড নিম্নলিখিত রূপে দেখায়:
+একটি বেসিক র্যাডিক্স ট্রাই-তে, প্রতিটি নোড দেখতে নিচের মতো হয়:
```
[i_0, i_1 ... i_n, value]
```
-যেখানে `i_0 ...` `i_n` বর্ণমালার প্রতীকগুলিকে (প্রায়শই বাইনারি বা হেক্স) প্রতিনিধিত্ব করে, `value` হল নোডের টার্মিনাল মান, এবং `i_0, i_1 ...`-এর মধ্যেকার মানগুলি। `i_n` স্লটগুলি হয় `NULL` অথবা অন্য নোডের পয়েন্টার (আমাদের ক্ষেত্রে, হ্যাস)। এটি একটি বেসিক `(কী, মান)` স্টোর গঠন করে।
+যেখানে `i_0 ... i_n` বর্ণমালার প্রতীকগুলোকে (প্রায়শই বাইনারি বা হেক্স) উপস্থাপন করে, `value` হলো নোডের টার্মিনাল ভ্যালু, এবং `i_0, i_1 ... i_n` স্লটগুলোর ভ্যালু হয় `NULL` অথবা অন্যান্য নোডের পয়েন্টার (আমাদের ক্ষেত্রে, হ্যাস)। এটি একটি বেসিক `(key, value)` স্টোর তৈরি করে।
-ধরুন আপনি কী-মান জোড়ার একটি সেটের উপর একটি ক্রম বজায় রাখার জন্য একটি রেডিক্স ট্রি ডেটা স্ট্রাকচার ব্যবহার করতে চেয়েছিলেন। `dog` কী-এর সাথে ট্রাই-তে বর্তমানে ম্যাপ করা মানটি খুঁজে পেতে, আপনাকে প্রথমে `dog`-কে বর্ণমালার অক্ষরে রূপান্তর করতে হবে (যা `64 6f 67` দেবে), এবং তারপর সেই পথ অনুসরণ করে ট্রাই-এর গভীরে যেতে হবে যতক্ষণ না আপনি মানটি খুঁজে পান। অর্থাৎ, আপনি ট্রাই-এর রুট নোড খুঁজে পেতে একটি ফ্ল্যাট কী/মান DB-তে রুট হ্যাস সন্ধান করে শুরু করবেন। এটি অন্য নোডগুলিতে নির্দেশকারী কী-গুলির একটি অ্যারে হিসাবে উপস্থাপিত হয়। আপনি ইনডেক্স `6`-এর মানটিকে কী হিসাবে ব্যবহার করবেন এবং এক স্তর নিচের নোডটি পেতে ফ্ল্যাট কী/মান DB-তে এটি সন্ধান করবেন। তারপর পরবর্তী মানটি দেখতে ইনডেক্স `4` বেছে নিন, তারপর ইনডেক্স `6`, এবং এভাবেই চলতে থাকবে, যতক্ষণ না আপনি পথটি অনুসরণ করেন: `root -> 6 -> 4 -> 6 -> 15 -> 6 -> 7`, আপনি নোডের মান সন্ধান করবেন এবং ফলাফল ফেরত দেবেন।
+ধরা যাক আপনি কী-ভ্যালু (key-value) পেয়ারের একটি সেটের উপর একটি অর্ডার বজায় রাখার জন্য একটি র্যাডিক্স ট্রি ডেটা স্ট্রাকচার ব্যবহার করতে চান। ট্রাই-তে বর্তমানে `dog` কী-এর সাথে ম্যাপ করা ভ্যালুটি খুঁজে পেতে, আপনাকে প্রথমে `dog`-কে বর্ণমালার অক্ষরে রূপান্তর করতে হবে (যা `64 6f 67` দেয়), এবং তারপর ভ্যালুটি খুঁজে না পাওয়া পর্যন্ত সেই পথ অনুসরণ করে ট্রাই-এর নিচে নামতে হবে। অর্থাৎ, আপনি ট্রাই-এর রুট নোড খুঁজে পেতে একটি ফ্ল্যাট কী/ভ্যালু ডিবি (DB)-তে রুট হ্যাস খোঁজার মাধ্যমে শুরু করবেন। এটি অন্যান্য নোডের দিকে নির্দেশকারী কী-গুলোর একটি অ্যারে হিসেবে উপস্থাপিত হয়। আপনি ইনডেক্স `6`-এর ভ্যালুটিকে একটি কী হিসেবে ব্যবহার করবেন এবং এক স্তর নিচের নোডটি পেতে ফ্ল্যাট কী/ভ্যালু ডিবি-তে এটি খুঁজবেন। তারপর পরবর্তী ভ্যালুটি খুঁজতে ইনডেক্স `4` বেছে নিন, তারপর ইনডেক্স `6` বেছে নিন, এবং এভাবেই চলতে থাকবে, যতক্ষণ না আপনি পথটি অনুসরণ করেন: `root -> 6 -> 4 -> 6 -> 15 -> 6 -> 7`, আপনি নোডের ভ্যালুটি খুঁজবেন এবং ফলাফলটি রিটার্ন করবেন।
-'ট্রাই' এবং অন্তর্নিহিত ফ্ল্যাট কী/মান 'DB'-তে কিছু সন্ধান করার মধ্যে একটি পার্থক্য আছে। উভয়ই কী/মান বিন্যাস সংজ্ঞায়িত করে, কিন্তু অন্তর্নিহিত DB একটি কী-এর জন্য একটি ঐতিহ্যবাহী ১-ধাপের সন্ধান করতে পারে। ট্রাই-তে একটি কী সন্ধান করার জন্য উপরে বর্ণিত চূড়ান্ত মানটিতে পৌঁছাতে একাধিক অন্তর্নিহিত DB সন্ধানের প্রয়োজন হয়। আসুন অস্পষ্টতা দূর করতে পরেরটিকে `পথ` হিসাবে উল্লেখ করি।
+'ট্রাই' এবং অন্তর্নিহিত ফ্ল্যাট কী/ভ্যালু 'ডিবি'-তে কিছু খোঁজার মধ্যে পার্থক্য রয়েছে। তারা উভয়ই কী/ভ্যালু বিন্যাস সংজ্ঞায়িত করে, কিন্তু অন্তর্নিহিত ডিবি একটি কী-এর ঐতিহ্যবাহী 1 ধাপের লুকআপ করতে পারে। ট্রাই-তে একটি কী খোঁজার জন্য উপরে বর্ণিত চূড়ান্ত ভ্যালুতে পৌঁছানোর জন্য একাধিক অন্তর্নিহিত ডিবি লুকআপের প্রয়োজন হয়। অস্পষ্টতা দূর করতে চলুন পরেরটিকে একটি `path` হিসেবে উল্লেখ করি।
-রেডিক্স ট্রাই-এর জন্য আপডেট এবং ডিলিট অপারেশনগুলি নিম্নরূপ সংজ্ঞায়িত করা যেতে পারে:
+র্যাডিক্স ট্রাই-এর জন্য আপডেট এবং ডিলিট অপারেশনগুলো নিম্নরূপ সংজ্ঞায়িত করা যেতে পারে:
```python
def update(node_hash, path, value):
@@ -64,45 +64,45 @@ sidebarDepth: 2
return hash(newnode)
```
-একটি "মার্কল" রেডিক্স ট্রি ডিটারমিনিস্টিকভাবে-জেনারেটেড ক্রিপ্টোগ্রাফিক হ্যাস ডাইজেস্ট ব্যবহার করে নোডগুলিকে লিঙ্ক করার মাধ্যমে নির্মিত হয়। এই কন্টেন্ট-অ্যাড্রেসিং (কী/মান DB-তে `key == keccak256(rlp(value))`) সঞ্চিত ডেটার একটি ক্রিপ্টোগ্রাফিক ইন্টিগ্রিটি গ্যারান্টি প্রদান করে। যদি একটি প্রদত্ত ট্রাই-এর রুট হ্যাস সর্বজনীনভাবে জানা থাকে, তবে অন্তর্নিহিত লিফ ডেটাতে অ্যাক্সেস আছে এমন যে কেউ একটি প্রমাণ তৈরি করতে পারে যে ট্রাইটি একটি নির্দিষ্ট পথে একটি প্রদত্ত মান অন্তর্ভুক্ত করে, যা প্রতিটি নোডের হ্যাস প্রদান করে যা একটি নির্দিষ্ট মানকে ট্রি রুটের সাথে যুক্ত করে।
+একটি "মার্কেল" র্যাডিক্স ট্রি ডিটারমিনিস্টিকভাবে তৈরি ক্রিপ্টোগ্রাফিক হ্যাস ডাইজেস্ট ব্যবহার করে নোডগুলোকে যুক্ত করে তৈরি করা হয়। এই কন্টেন্ট-অ্যাড্রেসিং (কী/ভ্যালু ডিবি-তে `key == keccak256(rlp(value))`) সংরক্ষিত ডেটার একটি ক্রিপ্টোগ্রাফিক অখণ্ডতার গ্যারান্টি প্রদান করে। যদি একটি নির্দিষ্ট ট্রাই-এর রুট হ্যাস সর্বজনীনভাবে পরিচিত হয়, তবে অন্তর্নিহিত লিফ (leaf) ডেটাতে অ্যাক্সেস থাকা যে কেউ প্রমাণ তৈরি করতে পারে যে ট্রাই-টি একটি নির্দিষ্ট পথে একটি নির্দিষ্ট ভ্যালু অন্তর্ভুক্ত করে, যা ট্রি রুটের সাথে একটি নির্দিষ্ট ভ্যালু যুক্ত করা প্রতিটি নোডের হ্যাস প্রদান করে করা যায়।
-একজন আক্রমণকারীর পক্ষে এমন একটি `(পথ, মান)` জোড়ার প্রমাণ দেওয়া অসম্ভব যার অস্তিত্ব নেই কারণ রুট হ্যাসটি চূড়ান্তভাবে এর নীচের সমস্ত হ্যাসের উপর ভিত্তি করে তৈরি। যেকোনো অন্তর্নিহিত পরিবর্তন রুট হ্যাস পরিবর্তন করবে। আপনি হ্যাসকে ডেটা সম্পর্কে কাঠামোগত তথ্যের একটি সংকুচিত উপস্থাপনা হিসাবে ভাবতে পারেন, যা হ্যাশিং ফাংশনের প্রি-ইমেজ সুরক্ষা দ্বারা সুরক্ষিত।
+একজন আক্রমণকারীর পক্ষে এমন একটি `(path, value)` পেয়ারের প্রমাণ দেওয়া অসম্ভব যা বিদ্যমান নেই কারণ রুট হ্যাস শেষ পর্যন্ত এর নিচের সমস্ত হ্যাসের উপর ভিত্তি করে তৈরি। যেকোনো অন্তর্নিহিত পরিবর্তন রুট হ্যাস পরিবর্তন করবে। আপনি হ্যাসটিকে ডেটা সম্পর্কে কাঠামোগত তথ্যের একটি সংকুচিত উপস্থাপনা হিসেবে ভাবতে পারেন, যা হ্যাসিং ফাংশনের প্রি-ইমেজ সুরক্ষা দ্বারা সুরক্ষিত।
-আমরা একটি রেডিক্স ট্রি-এর একটি পারমাণবিক একককে (যেমন, একটি একক হেক্স অক্ষর, বা ৪ বিট বাইনারি সংখ্যা) একটি "নিবল" হিসাবে উল্লেখ করব। উপরে বর্ণিত হিসাবে, একবারে একটি নিবল করে একটি পথ অতিক্রম করার সময়, নোডগুলি সর্বাধিক ১৬টি চাইল্ডকে উল্লেখ করতে পারে তবে একটি `মান` উপাদান অন্তর্ভুক্ত করে। তাই, আমরা সেগুলিকে ১৭ দৈর্ঘ্যের একটি অ্যারে হিসাবে উপস্থাপন করি। আমরা এই ১৭-উপাদান বিশিষ্ট অ্যারেগুলিকে "ব্রাঞ্চ নোড" বলি।
+আমরা একটি র্যাডিক্স ট্রির একটি পারমাণবিক একককে (যেমন, একটি একক হেক্স ক্যারেক্টার, বা 4 বিট বাইনারি সংখ্যা) "নিবল (nibble)" হিসেবে উল্লেখ করব। উপরে বর্ণিত হিসেবে, একবারে একটি নিবল পথ অতিক্রম করার সময়, নোডগুলো সর্বাধিক 16টি চিলড্রেনকে নির্দেশ করতে পারে তবে একটি `value` উপাদান অন্তর্ভুক্ত করে। তাই, আমরা সেগুলোকে 17 দৈর্ঘ্যের একটি অ্যারে হিসেবে উপস্থাপন করি। আমরা এই 17-উপাদানের অ্যারেগুলোকে "ব্রাঞ্চ নোড (branch nodes)" বলি।
-## মার্কল প্যাট্রিসিয়া ট্রাই {#merkle-patricia-trees}
+## মার্কেল প্যাট্রিসিয়া ট্রাই {#merkle-patricia-trees}
-রেডিক্স ট্রাই-এর একটি প্রধান সীমাবদ্ধতা রয়েছে: এগুলি অদক্ষ। আপনি যদি একটি `(পথ, মান)` বাইন্ডিং সঞ্চয় করতে চান যেখানে পথটি, ইথেরিয়ামের মতো, ৬৪ অক্ষর দীর্ঘ ( `bytes32`-তে নিবলের সংখ্যা), তাহলে প্রতি অক্ষরের জন্য একটি স্তর সঞ্চয় করতে আমাদের এক কিলোবাইটের বেশি অতিরিক্ত জায়গার প্রয়োজন হবে, এবং প্রতিটি সন্ধান বা মুছে ফেলার জন্য পুরো ৬৪টি ধাপ লাগবে। নিম্নলিখিত অংশে প্রবর্তিত প্যাট্রিসিয়া ট্রাই এই সমস্যার সমাধান করে।
+র্যাডিক্স ট্রাই-এর একটি প্রধান সীমাবদ্ধতা রয়েছে: এগুলো অদক্ষ। আপনি যদি একটি `(path, value)` বাইন্ডিং সংরক্ষণ করতে চান যেখানে পথটি, ইথেরিয়ামের মতো, 64 ক্যারেক্টার দীর্ঘ (`bytes32`-এ নিবলের সংখ্যা), তবে প্রতি ক্যারেক্টারে একটি স্তর সংরক্ষণ করতে আমাদের এক কিলোবাইটের বেশি অতিরিক্ত জায়গার প্রয়োজন হবে, এবং প্রতিটি লুকআপ বা ডিলিট করতে পুরো 64টি ধাপ লাগবে। নিচে প্রবর্তিত প্যাট্রিসিয়া ট্রাই এই সমস্যার সমাধান করে।
-### অপ্টিমাইজেশান {#optimization}
+### অপ্টিমাইজেশন {#optimization}
-মার্কল প্যাট্রিসিয়া ট্রাই-এর একটি নোড নিম্নলিখিতগুলির মধ্যে একটি:
+একটি মার্কেল প্যাট্রিসিয়া ট্রাই-এর একটি নোড নিচের যেকোনো একটি হতে পারে:
-1. `NULL` (খালি স্ট্রিং হিসাবে উপস্থাপিত)
-2. `branch` একটি ১৭-আইটেম নোড `[ v0 ...` `v15, vt ]`
-3. `leaf` একটি ২-আইটেম নোড `[ encodedPath, value ]`
-4. `extension` একটি ২-আইটেম নোড `[ encodedPath, key ]`
+1. `NULL` (খালি স্ট্রিং হিসেবে উপস্থাপিত)
+2. `branch` একটি 17-আইটেমের নোড `[ v0 ... v15, vt ]`
+3. `leaf` একটি 2-আইটেমের নোড `[ encodedPath, value ]`
+4. `extension` একটি 2-আইটেমের নোড `[ encodedPath, key ]`
-৬৪ অক্ষরের পথগুলির সাথে এটি অনিবার্য যে ট্রাই-এর প্রথম কয়েকটি লেয়ার অতিক্রম করার পরে, আপনি এমন একটি নোডে পৌঁছাবেন যেখানে নিচের দিকের পথের অন্তত কিছু অংশের জন্য কোনো ভিন্ন পথ বিদ্যমান নেই। পথ বরাবর ১৫টি পর্যন্ত স্পার্স `NULL` নোড তৈরি করা এড়াতে, আমরা একটি `[ encodedPath, key ]` ফর্মের `এক্সটেনশন` নোড সেট আপ করে ডিসেন্টকে শর্টকাট করি, যেখানে `encodedPath` এগিয়ে যাওয়ার জন্য "আংশিক পথ" ধারণ করে (নিচে বর্ণিত একটি কমপ্যাক্ট এনকোডিং ব্যবহার করে), এবং `key` পরবর্তী DB অনুসন্ধানের জন্য ব্যবহৃত হয়।
+64 ক্যারেক্টারের পথের সাথে এটি অনিবার্য যে ট্রাই-এর প্রথম কয়েকটি স্তর অতিক্রম করার পরে, আপনি এমন একটি নোডে পৌঁছাবেন যেখানে নিচের দিকের অন্তত কিছু অংশের জন্য কোনো ভিন্ন পথ বিদ্যমান নেই। পথ বরাবর 15টি পর্যন্ত স্পার্স `NULL` নোড তৈরি করা এড়াতে, আমরা `[ encodedPath, key ]` ফর্মের একটি `extension` নোড সেট আপ করে নামার পথটি শর্টকাট করি, যেখানে `encodedPath`-এ এগিয়ে যাওয়ার জন্য "আংশিক পথ" থাকে (নিচে বর্ণিত একটি কমপ্যাক্ট এনকোডিং ব্যবহার করে), এবং `key` হলো পরবর্তী ডিবি লুকআপের জন্য।
-`লিফ` নোডের জন্য, যা `encodedPath`-এর প্রথম নিবলে একটি ফ্ল্যাগ দ্বারা চিহ্নিত করা যেতে পারে, পথটি পূর্ববর্তী সমস্ত নোডের পথের খণ্ডাংশ এনকোড করে এবং আমরা সরাসরি `মান` সন্ধান করতে পারি।
+একটি `leaf` নোডের জন্য, যা `encodedPath`-এর প্রথম নিবলে একটি ফ্ল্যাগ দ্বারা চিহ্নিত করা যেতে পারে, পথটি পূর্ববর্তী সমস্ত নোডের পথের অংশগুলোকে এনকোড করে এবং আমরা সরাসরি `value` খুঁজতে পারি।
-তবে উপরের এই অপ্টিমাইজেশানটি অস্পষ্টতা তৈরি করে।
+তবে, উপরের এই অপ্টিমাইজেশনটি অস্পষ্টতা তৈরি করে।
-নিবলে পথ অতিক্রম করার সময়, আমরা বিজোড় সংখ্যক নিবল দিয়ে শেষ করতে পারি, কিন্তু কারণ সমস্ত ডেটা `বাইট` ফরম্যাটে সংরক্ষিত হয়। উদাহরণস্বরূপ, নিবল `1` এবং নিবল `01` এর মধ্যে পার্থক্য করা সম্ভব নয় (উভয়কেই `<01>` হিসাবে সংরক্ষণ করতে হবে)। বিজোড় দৈর্ঘ্য নির্দিষ্ট করতে, আংশিক পথের আগে একটি ফ্ল্যাগ যুক্ত করা হয়।
+নিবলে পথ অতিক্রম করার সময়, আমাদের অতিক্রম করার জন্য বিজোড় সংখ্যক নিবল থাকতে পারে, কিন্তু যেহেতু সমস্ত ডেটা `bytes` ফরম্যাটে সংরক্ষিত থাকে। উদাহরণস্বরূপ, নিবল `1` এবং নিবল `01`-এর মধ্যে পার্থক্য করা সম্ভব নয় (উভয়কেই `<01>` হিসেবে সংরক্ষণ করতে হবে)। বিজোড় দৈর্ঘ্য নির্দিষ্ট করতে, আংশিক পথের আগে একটি ফ্ল্যাগ যুক্ত করা হয়।
### স্পেসিফিকেশন: ঐচ্ছিক টার্মিনেটর সহ হেক্স সিকোয়েন্সের কমপ্যাক্ট এনকোডিং {#specification}
-উপরে বর্ণিত _বিজোড় বনাম জোড় অবশিষ্ট আংশিক পথের দৈর্ঘ্য_ এবং _লিফ বনাম এক্সটেনশন নোড_ উভয়ের ফ্ল্যাগিং যেকোনো ২-আইটেম নোডের আংশিক পথের প্রথম নিবলে থাকে। এর ফলস্বরূপ নিম্নলিখিতগুলি ঘটে:
+উপরে বর্ণিত _বিজোড় বনাম জোড় অবশিষ্ট আংশিক পথের দৈর্ঘ্য_ এবং _লিফ বনাম এক্সটেনশন নোড_ উভয়ের ফ্ল্যাগিং যেকোনো 2-আইটেম নোডের আংশিক পথের প্রথম নিবলে থাকে। এর ফলে নিচের ফলাফল পাওয়া যায়:
-| হেক্স অক্ষর | বিট | নোডের প্রকার আংশিক | পথের দৈর্ঘ্য |
-| ----------- | ---- | ------------------------------------ | ------------ |
-| 0 | 0000 | এক্সটেনশন | জোড় |
-| 1 | 0001 | এক্সটেনশন | বিজোড় |
-| 2 | 0010 | টার্মিনেটিং (লিফ) | জোড় |
-| 3 | 0011 | টার্মিনেটিং (লিফ) | বিজোড় |
+| হেক্স ক্যারেক্টার | বিটস | নোড টাইপ আংশিক | পথের দৈর্ঘ্য |
+| -------- | ---- | ------------------ | ----------- |
+| 0 | 0000 | এক্সটেনশন | জোড় |
+| 1 | 0001 | এক্সটেনশন | বিজোড় |
+| 2 | 0010 | টার্মিনেটিং (লিফ) | জোড় |
+| 3 | 0011 | টার্মিনেটিং (লিফ) | বিজোড় |
-জোড় অবশিষ্ট পথের দৈর্ঘ্যের জন্য (`0` বা `2`), আরেকটি `0` "প্যাডিং" নিবল সর্বদা অনুসরণ করবে।
+জোড় অবশিষ্ট পথের দৈর্ঘ্যের (`0` বা `2`) জন্য, সর্বদা আরেকটি `0` "প্যাডিং" নিবল অনুসরণ করবে।
```python
def compact_encode(hexarray):
@@ -115,7 +115,7 @@ sidebarDepth: 2
hexarray = [flags] + hexarray
else:
hexarray = [flags] + [0] + hexarray
- # hexarray now has an even length whose first nibble is the flags.
+ # হেক্সঅ্যারের এখন একটি জোড় দৈর্ঘ্য রয়েছে যার প্রথম নিবলটি হলো ফ্ল্যাগস।
o = ""
for i in range(0, len(hexarray), 2):
o += chr(16 * hexarray[i] + hexarray[i + 1])
@@ -135,7 +135,7 @@ sidebarDepth: 2
'3f 1c b8'
```
-মার্কল প্যাট্রিসিয়া ট্রাই-তে একটি নোড পাওয়ার জন্য এখানে বর্ধিত কোড দেওয়া হলো:
+মার্কেল প্যাট্রিসিয়া ট্রাই-তে একটি নোড পাওয়ার জন্য বর্ধিত কোড নিচে দেওয়া হলো:
```python
def get_helper(node_hash, path):
@@ -165,9 +165,9 @@ sidebarDepth: 2
### উদাহরণ ট্রাই {#example-trie}
-ধরুন আমরা এমন একটি ট্রাই চাই যেখানে চারটি পথ/মান জোড়া রয়েছে: `('do', 'verb')`, `('dog', 'puppy')`, `('doge', 'coins')`, `('horse', 'stallion')`।
+ধরা যাক আমরা এমন একটি ট্রাই চাই যাতে চারটি পথ/ভ্যালু পেয়ার রয়েছে `('do', 'verb')`, `('dog', 'puppy')`, `('doge', 'coins')`, `('horse', 'stallion')`।
-প্রথমে, আমরা পথ এবং মান উভয়কেই `বাইট`-এ রূপান্তর করি। নিচে, _পথগুলির_ জন্য প্রকৃত বাইট উপস্থাপনা `<>` দ্বারা চিহ্নিত করা হয়েছে, যদিও _মানগুলি_ এখনও স্ট্রিং হিসাবে `''` দ্বারা দেখানো হয়েছে, সহজে বোঝার জন্য (এগুলিও আসলে `বাইট` হবে):
+প্রথমে, আমরা পথ এবং ভ্যালু উভয়কেই `bytes`-এ রূপান্তর করি। নিচে, _পথগুলোর_ প্রকৃত বাইট উপস্থাপনা `<>` দ্বারা চিহ্নিত করা হয়েছে, যদিও সহজে বোঝার জন্য _ভ্যালুগুলো_ এখনও স্ট্রিং হিসেবে দেখানো হয়েছে, যা `''` দ্বারা চিহ্নিত করা হয়েছে (এগুলোও আসলে `bytes` হবে):
```
<64 6f> : 'verb'
@@ -176,7 +176,7 @@ sidebarDepth: 2
<68 6f 72 73 65> : 'stallion'
```
-এখন, আমরা অন্তর্নিহিত DB-তে নিম্নলিখিত কী/মান জোড়া দিয়ে এমন একটি ট্রাই তৈরি করি:
+এখন, আমরা অন্তর্নিহিত ডিবি-তে নিচের কী/ভ্যালু পেয়ারগুলো দিয়ে এমন একটি ট্রাই তৈরি করি:
```
rootHash: [ <16>, hashA ]
@@ -186,27 +186,27 @@ sidebarDepth: 2
hashD: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'coins' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'puppy' ] ]
```
-যখন একটি নোড অন্য নোডের ভিতরে রেফারেন্স করা হয়, তখন যা অন্তর্ভুক্ত করা হয় তা হলো `keccak256(rlp.encode(node))`, যদি `len(rlp.encode(node)) >= 32` হয়, অন্যথায় `node` যেখানে `rlp.encode` হলো [RLP](/developers/docs/data-structures-and-encoding/rlp) এনকোডিং ফাংশন।
+যখন একটি নোড অন্য নোডের ভিতরে রেফারেন্স করা হয়, তখন যা অন্তর্ভুক্ত করা হয় তা হলো `keccak256(rlp.encode(node))`, যদি `len(rlp.encode(node)) >= 32` হয় অন্যথায় `node` যেখানে `rlp.encode` হলো [RLP](/developers/docs/data-structures-and-encoding/rlp) এনকোডিং ফাংশন।
-মনে রাখবেন যে একটি ট্রাই আপডেট করার সময়, একজনকে কী/মান জোড়া `(keccak256(x), x)` একটি পার্সিস্টেন্ট লুকআপ টেবিলে সংরক্ষণ করতে হবে _যদি_ নতুন তৈরি নোডের দৈর্ঘ্য >= ৩২ হয়। তবে, যদি নোডটি তার চেয়ে ছোট হয়, তবে কিছু সংরক্ষণ করার প্রয়োজন নেই, যেহেতু f(x) = x ফাংশনটি বিপরীতমুখী।
+মনে রাখবেন যে একটি ট্রাই আপডেট করার সময়, একটি স্থায়ী লুকআপ টেবিলে কী/ভ্যালু পেয়ার `(keccak256(x), x)` সংরক্ষণ করতে হবে _যদি_ নতুন তৈরি করা নোডের দৈর্ঘ্য >= 32 হয়। তবে, যদি নোডটি এর চেয়ে ছোট হয়, তবে কিছু সংরক্ষণ করার প্রয়োজন নেই, কারণ ফাংশন f(x) = x রিভার্সিবল।
## ইথেরিয়ামে ট্রাই {#tries-in-ethereum}
-ইথেরিয়ামের এক্সিকিউশন লেয়ারের সমস্ত মার্কল ট্রাই একটি মার্কল প্যাট্রিসিয়া ট্রাই ব্যবহার করে।
+ইথেরিয়ামের এক্সিকিউশন লেয়ার-এর সমস্ত মার্কেল ট্রাই একটি মার্কেল প্যাট্রিসিয়া ট্রাই ব্যবহার করে।
-একটি ব্লক হেডার থেকে এই ট্রাইগুলির ৩টি থেকে ৩টি রুট থাকে।
+একটি ব্লক হেডার থেকে এই ট্রাইগুলোর 3টি থেকে 3টি রুট রয়েছে।
-1. stateRoot
-2. transactionsRoot
-3. receiptsRoot
+1. stateRoot
+2. transactionsRoot
+3. receiptsRoot
### স্টেট ট্রাই {#state-trie}
-একটি গ্লোবাল স্টেট ট্রাই আছে, এবং যখনই কোনো ক্লায়েন্ট একটি ব্লক প্রসেস করে, এটি আপডেট করা হয়। এতে, একটি `পথ` সর্বদা: `keccak256(ethereumAddress)` এবং একটি `মান` সর্বদা: `rlp(ethereumAccount)`। আরও নির্দিষ্টভাবে একটি ইথেরিয়াম `অ্যাকাউন্ট` হল `[nonce,balance,storageRoot,codeHash]` এর একটি ৪-আইটেমের অ্যারে। এই মুহূর্তে, এটি উল্লেখ্য যে এই `storageRoot` অন্য একটি প্যাট্রিসিয়া ট্রাই-এর রুট:
+একটি গ্লোবাল স্টেট ট্রাই রয়েছে, এবং প্রতিবার যখন কোনো ক্লায়েন্ট একটি ব্লক প্রসেস করে তখন এটি আপডেট হয়। এতে, একটি `path` সর্বদা: `keccak256(ethereumAddress)` এবং একটি `value` সর্বদা: `rlp(ethereumAccount)`। আরও নির্দিষ্টভাবে একটি ইথেরিয়াম `account` হলো `[nonce,balance,storageRoot,codeHash]`-এর একটি 4 আইটেমের অ্যারে। এই পর্যায়ে, এটি লক্ষণীয় যে এই `storageRoot` হলো আরেকটি প্যাট্রিসিয়া ট্রাই-এর রুট:
### স্টোরেজ ট্রাই {#storage-trie}
-স্টোরেজ ট্রাই হল যেখানে _সমস্ত_ কন্ট্র্যাক্ট ডেটা থাকে। প্রতিটি অ্যাকাউন্টের জন্য একটি পৃথক স্টোরেজ ট্রাই রয়েছে। একটি নির্দিষ্ট অ্যাড্রেসে নির্দিষ্ট স্টোরেজ পজিশনে মানগুলি পুনরুদ্ধার করতে স্টোরেজ অ্যাড্রেস, স্টোরেজে সঞ্চিত ডেটার পূর্ণসংখ্যার পজিশন এবং ব্লক আইডি প্রয়োজন। এগুলিকে তারপর JSON-RPC API-তে সংজ্ঞায়িত `eth_getStorageAt`-এ আর্গুমেন্ট হিসাবে পাস করা যেতে পারে, যেমন, `0x295a70b2de5e3953354a6a8344e616ed314d7251` অ্যাড্রেসের জন্য স্টোরেজ স্লট ০-এর ডেটা পুনরুদ্ধার করতে:
+স্টোরেজ ট্রাই হলো যেখানে _সমস্ত_ কন্ট্রাক্ট ডেটা থাকে। প্রতিটি একাউন্টের জন্য একটি আলাদা স্টোরেজ ট্রাই রয়েছে। একটি নির্দিষ্ট এডড্রেস-এ নির্দিষ্ট স্টোরেজ পজিশনে ভ্যালুগুলো পুনরুদ্ধার করতে স্টোরেজ এডড্রেস, স্টোরেজে সংরক্ষিত ডেটার ইন্টিজার পজিশন এবং ব্লক আইডি প্রয়োজন। এগুলোকে তারপর JSON-RPC API-তে সংজ্ঞায়িত `eth_getStorageAt`-এ আর্গুমেন্ট হিসেবে পাস করা যেতে পারে, যেমন, `0x295a70b2de5e3953354a6a8344e616ed314d7251` এডড্রেস-এর জন্য স্টোরেজ স্লট 0-তে ডেটা পুনরুদ্ধার করতে:
```bash
curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
@@ -215,13 +215,13 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
```
-স্টোরেজের অন্যান্য উপাদান পুনরুদ্ধার করা কিছুটা বেশি জড়িত কারণ স্টোরেজ ট্রাই-তে পজিশনটি প্রথমে গণনা করতে হবে। পজিশনটি অ্যাড্রেস এবং স্টোরেজ পজিশনের `keccak256` হ্যাস হিসাবে গণনা করা হয়, উভয়ই ৩২ বাইট দৈর্ঘ্যে শূন্য দিয়ে বাম-প্যাড করা হয়। উদাহরণস্বরূপ, `0x391694e7e0b0cce554cb130d723a9d27458f9298` অ্যাড্রেসের জন্য স্টোরেজ স্লট ১-এ ডেটার পজিশন হল:
+স্টোরেজে অন্যান্য উপাদানগুলো পুনরুদ্ধার করা কিছুটা বেশি জটিল কারণ স্টোরেজ ট্রাই-তে পজিশনটি প্রথমে গণনা করতে হবে। পজিশনটি এডড্রেস এবং স্টোরেজ পজিশনের `keccak256` হ্যাস হিসেবে গণনা করা হয়, উভয়ই 32 বাইট দৈর্ঘ্যের জন্য শূন্য দিয়ে বাম-প্যাড করা হয়। উদাহরণস্বরূপ, `0x391694e7e0b0cce554cb130d723a9d27458f9298` এডড্রেস-এর জন্য স্টোরেজ স্লট 1-এ ডেটার পজিশন হলো:
```python
keccak256(decodeHex("000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"))
```
-একটি Geth কনসোলে, এটি নিম্নরূপে গণনা করা যেতে পারে:
+একটি Geth কনসোলে, এটি নিম্নরূপ গণনা করা যেতে পারে:
```
> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
@@ -230,7 +230,7 @@ undefined
"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"
```
-`পথ`টি তাই `keccak256(<6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9>)`। এটি এখন আগের মতোই স্টোরেজ ট্রাই থেকে ডেটা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে:
+তাই `path` হলো `keccak256(<6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9>)`। এটি এখন আগের মতো স্টোরেজ ট্রাই থেকে ডেটা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে:
```bash
curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
@@ -238,11 +238,11 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [
{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}
```
-দ্রষ্টব্য: একটি ইথেরিয়াম অ্যাকাউন্টের জন্য `storageRoot` ডিফল্টরূপে খালি থাকে যদি এটি একটি কন্ট্র্যাক্ট অ্যাকাউন্ট না হয়।
+দ্রষ্টব্য: একটি ইথেরিয়াম একাউন্টের জন্য `storageRoot` ডিফল্টভাবে খালি থাকে যদি এটি কোনো কন্ট্রাক্ট একাউন্ট না হয়।
-### ট্রানজ্যাকশন ট্রাই {#transaction-trie}
+### লেনদেন ট্রাই {#transaction-trie}
-প্রতিটি ব্লকের জন্য একটি পৃথক ট্রানজ্যাকশন ট্রাই রয়েছে, যা আবার `(কী, মান)` জোড়া সংরক্ষণ করে। এখানে একটি পথ হল: `rlp(transactionIndex)` যা একটি কী প্রতিনিধিত্ব করে যা একটি মান দ্বারা নির্ধারিত হয়:
+প্রতিটি ব্লকের জন্য একটি আলাদা লেনদেন ট্রাই রয়েছে, যা আবার `(key, value)` পেয়ার সংরক্ষণ করে। এখানে একটি পথ হলো: `rlp(transactionIndex)` যা এমন একটি কী-কে উপস্থাপন করে যা নিচের দ্বারা নির্ধারিত একটি ভ্যালুর সাথে মিলে যায়:
```python
if legacyTx:
@@ -251,16 +251,16 @@ else:
value = TxType | encode(tx)
```
-এ সম্পর্কে আরও তথ্য [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) ডকুমেন্টেশনে পাওয়া যাবে।
+এই সম্পর্কে আরও তথ্য [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) ডকুমেন্টেশনে পাওয়া যাবে।
### রিসিপ্টস ট্রাই {#receipts-trie}
-প্রতিটি ব্লকের নিজস্ব রিসিপ্টস ট্রাই রয়েছে। এখানে একটি `পথ` হল: `rlp(transactionIndex)`। `transactionIndex` হল সেই ব্লকের মধ্যে তার ইনডেক্স যেখানে এটি অন্তর্ভুক্ত ছিল। রিসিপ্টস ট্রাই কখনও আপডেট করা হয় না। ট্রানজ্যাকশন ট্রাই-এর অনুরূপ, এখানে বর্তমান এবং লিগ্যাসি রিসিপ্ট রয়েছে। রিসিপ্টস ট্রাই-তে একটি নির্দিষ্ট রিসিপ্ট কোয়েরি করতে, তার ব্লকের মধ্যে ট্রানজ্যাকশনের ইনডেক্স, রিসিপ্ট পেলোড এবং ট্রানজ্যাকশনের প্রকার প্রয়োজন। প্রত্যাবর্তিত রিসিপ্ট `রিসিপ্ট` ধরনের হতে পারে যা `TransactionType` এবং `ReceiptPayload`-এর কনক্যাটেনেশন হিসাবে সংজ্ঞায়িত করা হয় অথবা এটি `লিগ্যাসি রিসিপ্ট` ধরনের হতে পারে যা `rlp([status, cumulativeGasUsed, logsBloom, logs])` হিসাবে সংজ্ঞায়িত করা হয়।
+প্রতিটি ব্লকের নিজস্ব রিসিপ্টস ট্রাই রয়েছে। এখানে একটি `path` হলো: `rlp(transactionIndex)`। `transactionIndex` হলো যে ব্লকে এটি অন্তর্ভুক্ত করা হয়েছিল তার মধ্যে এর ইনডেক্স। রিসিপ্টস ট্রাই কখনও আপডেট করা হয় না। লেনদেন ট্রাই-এর মতো, বর্তমান এবং লিগ্যাসি রিসিপ্ট রয়েছে। রিসিপ্টস ট্রাই-তে একটি নির্দিষ্ট রিসিপ্ট কোয়েরি করতে, এর ব্লকে লেনদেনের ইনডেক্স, রিসিপ্ট পেলোড এবং লেনদেনের ধরন প্রয়োজন। রিটার্ন করা রিসিপ্টটি `Receipt` ধরনের হতে পারে যা `TransactionType` এবং `ReceiptPayload`-এর কনক্যাটেনেশন হিসেবে সংজ্ঞায়িত করা হয় অথবা এটি `LegacyReceipt` ধরনের হতে পারে যা `rlp([status, cumulativeGasUsed, logsBloom, logs])` হিসেবে সংজ্ঞায়িত করা হয়।
-এ সম্পর্কে আরও তথ্য [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) ডকুমেন্টেশনে পাওয়া যাবে।
+এই সম্পর্কে আরও তথ্য [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) ডকুমেন্টেশনে পাওয়া যাবে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [মডিফায়েড মার্কল প্যাট্রিসিয়া ট্রাই — ইথেরিয়াম কীভাবে একটি স্টেট সংরক্ষণ করে](https://medium.com/codechain/modified-merkle-patricia-trie-how-ethereum-saves-a-state-e6d7555078dd)
+- [মডিফাইড মার্কেল প্যাট্রিসিয়া ট্রাই — ইথেরিয়াম কীভাবে একটি স্টেট সংরক্ষণ করে](https://medium.com/codechain/modified-merkle-patricia-trie-how-ethereum-saves-a-state-e6d7555078dd)
- [ইথেরিয়ামে মার্কলিং](https://blog.ethereum.org/2015/11/15/merkling-in-ethereum)
-- [ইথেরিয়াম ট্রাই বোঝা](https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/)
+- [ইথেরিয়াম ট্রাই বোঝা](https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/bn/developers/docs/data-structures-and-encoding/rlp/index.md
index 56e9efe977a..8a9f84ef036 100644
--- a/public/content/translations/bn/developers/docs/data-structures-and-encoding/rlp/index.md
+++ b/public/content/translations/bn/developers/docs/data-structures-and-encoding/rlp/index.md
@@ -1,48 +1,62 @@
---
-title: "রিকার্সিভ-লেংথ প্রিফিক্স (RLP) সিরিয়ালাইজেশন"
-description: "ইথেরিয়ামের এক্সিকিউশন লেয়ারে rlp এনকোডিং-এর একটি সংজ্ঞা।"
+title: রিকার্সিভ-লেংথ প্রিফিক্স (RLP) সিরিয়ালাইজেশন
+description: ইথিরিয়ামের এক্সিকিউশন লেয়ারে rlp এনকোডিংয়ের একটি সংজ্ঞা।
lang: bn
sidebarDepth: 2
---
-ইথেরিয়ামের এক্সিকিউশন ক্লায়েন্টগুলিতে রিকার্সিভ লেংথ প্রিফিক্স (RLP) সিরিয়ালাইজেশন ব্যাপকভাবে ব্যবহৃত হয়। RLP একটি স্পেস-এফিশিয়েন্ট ফরম্যাটে নোডগুলির মধ্যে ডেটা স্থানান্তরকে প্রমিত করে। RLP-এর উদ্দেশ্য হল বাইনারি ডেটার নির্বিচারে নেস্টেড অ্যারে এনকোড করা, এবং RLP হল ইথেরিয়ামের এক্সিকিউশন লেয়ারে অবজেক্ট সিরিয়ালাইজ করার জন্য ব্যবহৃত প্রাথমিক এনকোডিং পদ্ধতি। RLP-এর মূল উদ্দেশ্য হল গঠন এনকোড করা; ধনাত্মক পূর্ণসংখ্যা ছাড়া, RLP নির্দিষ্ট ডেটা প্রকার (যেমন, স্ট্রিং, ফ্লোট) এনকোড করার দায়িত্ব উচ্চ-স্তরের প্রোটোকলগুলিতে অর্পণ করে। ধনাত্মক পূর্ণসংখ্যাগুলিকে অবশ্যই বিগ-এন্ডিয়ান বাইনারি আকারে উপস্থাপন করতে হবে যেখানে কোনো লিডিং জিরো থাকবে না (এভাবে শূন্য পূর্ণসংখ্যার মানকে খালি বাইট অ্যারের সমতুল্য করে তোলে)। RLP ব্যবহারকারী যেকোনো উচ্চ-স্তরের প্রোটোকল দ্বারা লিডিং জিরো সহ ডিসিরিয়ালাইজড ধনাত্মক পূর্ণসংখ্যাগুলিকে অবশ্যই অবৈধ হিসাবে গণ্য করতে হবে।
+রিকার্সিভ লেংথ প্রিফিক্স (RLP) সিরিয়ালাইজেশন ইথিরিয়ামের এক্সিকিউশন ক্লায়েন্টগুলোতে ব্যাপকভাবে ব্যবহৃত হয়। RLP একটি স্পেস-এফিশিয়েন্ট ফরম্যাটে নোডগুলোর মধ্যে ডাটা ট্রান্সফারকে স্ট্যান্ডার্ডাইজ করে। RLP-এর উদ্দেশ্য হলো বাইনারি ডাটার আরবিট্রারি নেস্টেড অ্যারেগুলোকে এনকোড করা, এবং ইথিরিয়ামের এক্সিকিউশন লেয়ারে অবজেক্টগুলোকে সিরিয়ালাইজ করার জন্য ব্যবহৃত প্রাথমিক এনকোডিং পদ্ধতি হলো RLP। RLP-এর মূল উদ্দেশ্য হলো স্ট্রাকচার এনকোড করা; পজিটিভ ইন্টিজার বা ধনাত্মক পূর্ণসংখ্যা ছাড়া, RLP নির্দিষ্ট ডাটা টাইপ (যেমন, স্ট্রিং, ফ্লোট) এনকোড করার দায়িত্ব হায়ার-অর্ডার প্রটোকলগুলোর ওপর ছেড়ে দেয়। পজিটিভ ইন্টিজারগুলোকে অবশ্যই কোনো লিডিং জিরো ছাড়া বিগ-এন্ডিয়ান বাইনারি ফর্মে উপস্থাপন করতে হবে (যার ফলে শূন্য মানের ইন্টিজারটি এম্পটি বাইট অ্যারের সমতুল্য হয়)। লিডিং জিরোসহ ডিসিরিয়ালাইজ করা পজিটিভ ইন্টিজারগুলোকে RLP ব্যবহারকারী যেকোনো হায়ার-অর্ডার প্রটোকল দ্বারা ইনভ্যালিড হিসেবে বিবেচনা করতে হবে।
-[ইথেরিয়াম ইয়েলো পেপার (পরিশিষ্ট B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19)-এ আরও তথ্য।
+আরও তথ্য [ইথিরিয়াম ইয়েলো পেপারে (পরিশিষ্ট B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19) পাওয়া যাবে।
-একটি ডিকশনারি এনকোড করতে RLP ব্যবহার করার জন্য, দুটি প্রস্তাবিত ক্যানোনিকাল ফর্ম হল:
+একটি ডিকশনারি এনকোড করতে RLP ব্যবহার করার জন্য, প্রস্তাবিত দুটি ক্যানোনিকাল ফর্ম হলো:
-- লেক্সিকোগ্রাফিক ক্রমে কি সহ `[[k1,v1],[k2,v2]...]` ব্যবহার করুন
-- ইথেরিয়ামের মতো উচ্চ-স্তরের প্যাট্রিসিয়া ট্রি এনকোডিং ব্যবহার করুন
+- লেক্সিকোগ্রাফিক অর্ডারে কিসমূহসহ `[[k1,v1],[k2,v2]...]` ব্যবহার করুন
+- [Ethereum](/) এর মতো হায়ার-লেভেল প্যাট্রিসিয়া ট্রি এনকোডিং ব্যবহার করুন
## সংজ্ঞা {#definition}
-RLP এনকোডিং ফাংশন একটি আইটেম ইনপুট হিসাবে নেয়। একটি আইটেমকে নিম্নরূপ সংজ্ঞায়িত করা হয়েছে:
+RLP এনকোডিং ফাংশন একটি আইটেম গ্রহণ করে। একটি আইটেমকে নিম্নরূপ সংজ্ঞায়িত করা হয়:
-- একটি স্ট্রিং (অর্থাৎ, বাইট অ্যারে) একটি আইটেম
-- আইটেমের একটি তালিকা একটি আইটেম
-- একটি ধনাত্মক পূর্ণসংখ্যা একটি আইটেম
+- একটি স্ট্রিং (অর্থাৎ, বাইট অ্যারে) হলো একটি আইটেম
+- আইটেমগুলোর একটি তালিকা হলো একটি আইটেম
+- একটি পজিটিভ ইন্টিজার হলো একটি আইটেম
-উদাহরণস্বরূপ, নিম্নলিখিত সবগুলি আইটেম:
+উদাহরণস্বরূপ, নিচের সবগুলোই আইটেম:
-- একটি খালি স্ট্রিং;
+- একটি এম্পটি স্ট্রিং;
- "cat" শব্দটি ধারণকারী স্ট্রিং;
- যেকোনো সংখ্যক স্ট্রিং ধারণকারী একটি তালিকা;
-- এবং `["cat", ["puppy", "cow"], "horse", [[]], "pig", [""], "sheep"]`-এর মতো আরও জটিল ডেটা স্ট্রাকচার।
+- এবং আরও জটিল ডাটা স্ট্রাকচার যেমন `["cat", ["puppy", "cow"], "horse", [[]], "pig", [""], "sheep"]`।
- `100` সংখ্যাটি
-মনে রাখবেন যে এই পৃষ্ঠার বাকি প্রেক্ষাপটে, 'স্ট্রিং' মানে "বাইনারি ডেটার একটি নির্দিষ্ট সংখ্যক বাইট"; কোনো বিশেষ এনকোডিং ব্যবহার করা হয় না, এবং স্ট্রিংগুলির বিষয়বস্তু সম্পর্কে কোনো জ্ঞানের ইঙ্গিত দেওয়া হয় না (নন-মিনিমাল ধনাত্মক পূর্ণসংখ্যার বিরুদ্ধে নিয়মের প্রয়োজন ছাড়া)।
+মনে রাখবেন যে এই পৃষ্ঠার বাকি অংশের প্রেক্ষাপটে, 'স্ট্রিং' বলতে "বাইনারি ডাটার একটি নির্দিষ্ট সংখ্যক বাইট" বোঝায়; কোনো বিশেষ এনকোডিং ব্যবহার করা হয় না, এবং স্ট্রিংগুলোর বিষয়বস্তু সম্পর্কে কোনো জ্ঞান নিহিত থাকে না (নন-মিনিমাল পজিটিভ ইন্টিজারের বিরুদ্ধে নিয়মের প্রয়োজন ছাড়া)।
-RLP এনকোডিং নিম্নরূপ সংজ্ঞায়িত করা হয়েছে:
+RLP এনকোডিং নিম্নরূপ সংজ্ঞায়িত করা হয়:
-- একটি ধনাত্মক পূর্ণসংখ্যার জন্য, এটিকে সবচেয়ে ছোট বাইট অ্যারেতে রূপান্তরিত করা হয় যার বিগ-এন্ডিয়ান ব্যাখ্যা হল পূর্ণসংখ্যা, এবং তারপর নীচের নিয়ম অনুসারে একটি স্ট্রিং হিসাবে এনকোড করা হয়।
-- `[0x00, 0x7f]` (ডেসিমেল `[0, 127]`) পরিসরের মধ্যে থাকা একটি একক বাইটের জন্য, সেই বাইটটিই তার নিজস্ব RLP এনকোডিং।
-- অন্যথায়, যদি একটি স্ট্রিং 0-55 বাইট দীর্ঘ হয়, তাহলে RLP এনকোডিং-এ **0x80** (ডেসিমেল 128) মানের একটি একক বাইট এবং স্ট্রিংটির দৈর্ঘ্য এবং তারপরে স্ট্রিংটি থাকে। সুতরাং প্রথম বাইটের পরিসর হল `[0x80, 0xb7]` (ডেসিমেল `[128, 183]`)।
-- যদি একটি স্ট্রিং 55 বাইটের বেশি দীর্ঘ হয়, তাহলে RLP এনকোডিং-এ **0xb7** (ডেসিমেল 183) মানের একটি একক বাইট এবং বাইনারি আকারে স্ট্রিংটির দৈর্ঘ্যের বাইটে দৈর্ঘ্য, তারপরে স্ট্রিংটির দৈর্ঘ্য এবং তারপরে স্ট্রিংটি থাকে। উদাহরণস্বরূপ, একটি 1024 বাইট দীর্ঘ স্ট্রিং `\xb9\x04\x00` (ডেসিমেল `185, 4, 0`) হিসাবে এনকোড করা হবে এবং তারপরে স্ট্রিংটি থাকবে। এখানে, প্রথম বাইট হিসাবে `0xb9` (183 + 2 = 185), তারপরে 2 বাইট `0x0400` (ডেসিমেল 1024) যা আসল স্ট্রিংটির দৈর্ঘ্য নির্দেশ করে। সুতরাং প্রথম বাইটের পরিসর হল `[0xb8, 0xbf]` (ডেসিমেল `[184, 191]`)।
-- যদি একটি স্ট্রিং 2^64 বাইট দীর্ঘ বা তার বেশি হয়, তবে এটি এনকোড করা নাও হতে পারে।
-- যদি একটি তালিকার মোট পেলোড (অর্থাৎ, RLP এনকোড করা তার সমস্ত আইটেমের সম্মিলিত দৈর্ঘ্য) 0-55 বাইট দীর্ঘ হয়, তবে RLP এনকোডিং-এ **0xc0** মানের একটি একক বাইট এবং পেলোডের দৈর্ঘ্য এবং তারপরে আইটেমগুলির RLP এনকোডিংগুলির ক্যাটেনেশন থাকে। সুতরাং প্রথম বাইটের পরিসর হল `[0xc0, 0xf7]` (ডেসিমেল `[192, 247]`)।
-- যদি একটি তালিকার মোট পেলোড 55 বাইটের বেশি দীর্ঘ হয়, তবে RLP এনকোডিং-এ **0xf7** মানের একটি একক বাইট এবং বাইনারি আকারে পেলোডের দৈর্ঘ্যের বাইটে দৈর্ঘ্য, তারপরে পেলোডের দৈর্ঘ্য এবং তারপরে আইটেমগুলির RLP এনকোডিংগুলির ক্যাটেনেশন থাকে। সুতরাং প্রথম বাইটের পরিসর হল `[0xf8, 0xff]` (ডেসিমেল `[248, 255]`)।
+- একটি পজিটিভ ইন্টিজারের জন্য, এটিকে সবচেয়ে ছোট বাইট অ্যারেতে রূপান্তর করা হয় যার বিগ-এন্ডিয়ান ইন্টারপ্রিটেশন হলো ইন্টিজারটি, এবং তারপর নিচের নিয়ম অনুযায়ী একটি স্ট্রিং হিসেবে এনকোড করা হয়।
+- একটি সিঙ্গেল বাইটের জন্য যার মান `[0x00, 0x7f]` (ডেসিমাল `[0, 127]`) রেঞ্জের মধ্যে, সেই বাইটটি নিজেই তার RLP এনকোডিং।
+- অন্যথায়, যদি একটি স্ট্রিং 0-55 বাইট দীর্ঘ হয়, তবে RLP এনকোডিংয়ে **0x80** (ডেসিমাল 128) মানসহ একটি সিঙ্গেল বাইট এবং স্ট্রিংয়ের দৈর্ঘ্য থাকে, যার পরে স্ট্রিংটি বসে। প্রথম বাইটের রেঞ্জ তাই `[0x80, 0xb7]` (ডেসিমাল `[128, 183]`) হয়।
+- যদি একটি স্ট্রিং 55 বাইটের বেশি দীর্ঘ হয়, তবে RLP এনকোডিংয়ে **0xb7** (ডেসিমাল 183) মানসহ একটি সিঙ্গেল বাইট এবং বাইনারি ফর্মে স্ট্রিংয়ের দৈর্ঘ্যের বাইট সংখ্যা থাকে, যার পরে স্ট্রিংয়ের দৈর্ঘ্য এবং তারপর স্ট্রিংটি বসে। উদাহরণস্বরূপ, একটি 1024 বাইট দীর্ঘ স্ট্রিং `\xb9\x04\x00` (ডেসিমাল `185, 4, 0`) হিসেবে এনকোড করা হবে এবং এর পরে স্ট্রিংটি বসবে। এখানে, প্রথম বাইট হিসেবে `0xb9` (183 + 2 = 185), যার পরে 2 বাইট `0x0400` (ডেসিমাল 1024) বসে যা আসল স্ট্রিংয়ের দৈর্ঘ্য নির্দেশ করে। প্রথম বাইটের রেঞ্জ তাই `[0xb8, 0xbf]` (ডেসিমাল `[184, 191]`) হয়।
+- যদি একটি স্ট্রিং 2^64 বাইট দীর্ঘ বা তার চেয়ে বড় হয়, তবে এটি এনকোড করা নাও হতে পারে।
+- যদি একটি তালিকার মোট পেলোড (অর্থাৎ, RLP এনকোড করা এর সমস্ত আইটেমের সম্মিলিত দৈর্ঘ্য) 0-55 বাইট দীর্ঘ হয়, তবে RLP এনকোডিংয়ে **0xc0** মানসহ একটি সিঙ্গেল বাইট এবং পেলোডের দৈর্ঘ্য থাকে, যার পরে আইটেমগুলোর RLP এনকোডিংয়ের কনক্যাটেনেশন বসে। প্রথম বাইটের রেঞ্জ তাই `[0xc0, 0xf7]` (ডেসিমাল `[192, 247]`) হয়।
+- যদি একটি তালিকার মোট পেলোড 55 বাইটের বেশি দীর্ঘ হয়, তবে RLP এনকোডিংয়ে **0xf7** মানসহ একটি সিঙ্গেল বাইট এবং বাইনারি ফর্মে পেলোডের দৈর্ঘ্যের বাইট সংখ্যা থাকে, যার পরে পেলোডের দৈর্ঘ্য এবং তারপর আইটেমগুলোর RLP এনকোডিংয়ের কনক্যাটেনেশন বসে। প্রথম বাইটের রেঞ্জ তাই `[0xf8, 0xff]` (ডেসিমাল `[248, 255]`) হয়।
-কোডে, এটি হল:
+সংক্ষেপে:
+
+| রেঞ্জ | বাইট 1 | বাইট 2 | ... | বাইট 9 | বাইট 10 | অর্থ |
+| ----------- | ---------- | ---------- | ---------- | --------------------- | ---------- | ----------------------------------------- |
+| `0x00-0x7f` | `0ppppppp` | | | | | সিঙ্গেল বাইট স্ট্রিং |
+| `0x80-0xb7` | `10nnnnnn` | `pppppppp` | `...` | | | ছোট স্ট্রিং (0-55 বাইট) |
+| `0xb8-0xbf` | `10111NNN` | `nnnnnnnn` | `...` | `nnnnnnnn`/`pppppppp` | `pppppppp` | বড় স্ট্রিং, দৈর্ঘ্যের জন্য N+1 বাইট, তারপর পেলোড |
+| `0xc0-0xf7` | `11nnnnnn` | `pppppppp` | `...` | | | ছোট তালিকা (0-55 বাইট) |
+| `0xf8-0xff` | `11111NNN` | `nnnnnnnn` | `...` | `nnnnnnnn`/`pppppppp` | `pppppppp` | বড় তালিকা, দৈর্ঘ্যের জন্য N+1 বাইট, তারপর পেলোড |
+
+- `p` = পেলোড
+- `n` = দৈর্ঘ্য (পেলোড বাইটের সংখ্যা)
+- `N` = দৈর্ঘ্যের-দৈর্ঘ্য অফসেট (N+1 `n` বাইট অনুসরণ করে)
+
+কোডে, এটি হলো:
```python
def rlp_encode(input):
@@ -72,40 +86,40 @@ def to_binary(x):
## উদাহরণ {#examples}
-- "dog" স্ট্রিংটি = [ 0x83, 'd', 'o', 'g' ]
-- [ "cat", "dog" ] তালিকাটি = `[ 0xc8, 0x83, 'c', 'a', 't', 0x83, 'd', 'o', 'g' ]`
-- খালি স্ট্রিং ('null') = `[ 0x80 ]`
-- খালি তালিকা = `[ 0xc0 ]`
-- পূর্ণসংখ্যা 0 = `[ 0x80 ]`
-- বাইট '\\x00' = `[ 0x00 ]`
-- বাইট '\\x0f' = `[ 0x0f ]`
-- বাইট '\\x04\\x00' = `[ 0x82, 0x04, 0x00 ]`
+- "dog" স্ট্রিং = [ 0x83, 'd', 'o', 'g' ]
+- [ "cat", "dog" ] তালিকা = `[ 0xc8, 0x83, 'c', 'a', 't', 0x83, 'd', 'o', 'g' ]`
+- এম্পটি স্ট্রিং ('null') = `[ 0x80 ]`
+- এম্পটি তালিকা = `[ 0xc0 ]`
+- ইন্টিজার 0 = `[ 0x80 ]`
+- বাইট '\x00' = `[ 0x00 ]`
+- বাইট '\x0f' = `[ 0x0f ]`
+- বাইট '\x04\x00' = `[ 0x82, 0x04, 0x00 ]`
- তিন-এর [সেট থিওরেটিক্যাল রিপ্রেজেন্টেশন](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers), `[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]`
-- "Lorem ipsum dolor sit amet, consectetur adipisicing elit" স্ট্রিংটি = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... `, 'e', 'l', 'i', 't' ]`
+- "Lorem ipsum dolor sit amet, consectetur adipisicing elit" স্ট্রিং = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... , 'e', 'l', 'i', 't' ]`
## RLP ডিকোডিং {#rlp-decoding}
-RLP এনকোডিং-এর নিয়ম এবং প্রক্রিয়া অনুসারে, RLP ডিকোডিং-এর ইনপুটকে বাইনারি ডেটার একটি অ্যারে হিসাবে গণ্য করা হয়। RLP ডিকোডিং প্রক্রিয়াটি নিম্নরূপ:
+RLP এনকোডিংয়ের নিয়ম এবং প্রক্রিয়া অনুযায়ী, RLP ডিকোডের ইনপুটকে বাইনারি ডাটার একটি অ্যারে হিসেবে বিবেচনা করা হয়। RLP ডিকোডিং প্রক্রিয়াটি নিম্নরূপ:
-1. ইনপুট ডেটার প্রথম বাইট (অর্থাৎ, প্রিফিক্স) অনুযায়ী ডেটার ধরন, আসল ডেটার দৈর্ঘ্য এবং অফসেট ডিকোড করা;
+1. ইনপুট ডাটার প্রথম বাইট (অর্থাৎ, প্রিফিক্স) এবং ডাটা টাইপ ডিকোডিং অনুযায়ী, আসল ডাটার দৈর্ঘ্য এবং অফসেট;
-2. ডেটার ধরন এবং অফসেট অনুযায়ী, ধনাত্মক পূর্ণসংখ্যার জন্য মিনিমাল এনকোডিং নিয়মকে সম্মান করে ডেটা ডিকোড করা;
+2. ডাটার ধরন এবং অফসেট অনুযায়ী, পজিটিভ ইন্টিজারের জন্য মিনিমাল এনকোডিং নিয়ম মেনে ডাটাটি ডিকোড করা;
-3. ইনপুটের বাকি অংশ ডিকোড করা চালিয়ে যাওয়া;
+3. ইনপুটের বাকি অংশ ডিকোড করা চালিয়ে যাওয়া;
-তাদের মধ্যে, ডেটার ধরন এবং অফসেট ডিকোড করার নিয়মগুলি নিম্নরূপ:
+এর মধ্যে, ডাটা টাইপ এবং অফসেট ডিকোড করার নিয়মগুলো নিম্নরূপ:
-1. ডেটা একটি স্ট্রিং যদি প্রথম বাইটের (অর্থাৎ, প্রিফিক্স) পরিসর [0x00, 0x7f] হয়, এবং স্ট্রিংটি ঠিক প্রথম বাইট নিজেই;
+1. যদি প্রথম বাইটের (অর্থাৎ, প্রিফিক্স) রেঞ্জ [0x00, 0x7f] হয় তবে ডাটাটি একটি স্ট্রিং, এবং স্ট্রিংটি হুবহু প্রথম বাইট নিজেই;
-2. ডেটা একটি স্ট্রিং যদি প্রথম বাইটের পরিসর [0x80, 0xb7] হয়, এবং যে স্ট্রিংটির দৈর্ঘ্য প্রথম বাইট মাইনাস 0x80 এর সমান, তা প্রথম বাইটকে অনুসরণ করে;
+2. যদি প্রথম বাইটের রেঞ্জ [0x80, 0xb7] হয় তবে ডাটাটি একটি স্ট্রিং, এবং প্রথম বাইট থেকে 0x80 বিয়োগ করলে যে দৈর্ঘ্য পাওয়া যায় সেই দৈর্ঘ্যের স্ট্রিংটি প্রথম বাইটকে অনুসরণ করে;
-3. ডেটা একটি স্ট্রিং যদি প্রথম বাইটের পরিসর [0xb8, 0xbf] হয়, এবং যে স্ট্রিংটির বাইটে দৈর্ঘ্য প্রথম বাইট মাইনাস 0xb7 এর সমান তা প্রথম বাইটকে অনুসরণ করে, এবং স্ট্রিংটি স্ট্রিংয়ের দৈর্ঘ্যকে অনুসরণ করে;
+3. যদি প্রথম বাইটের রেঞ্জ [0xb8, 0xbf] হয় তবে ডাটাটি একটি স্ট্রিং, এবং প্রথম বাইট থেকে 0xb7 বিয়োগ করলে বাইটে যে দৈর্ঘ্য পাওয়া যায় সেই দৈর্ঘ্যের স্ট্রিংয়ের দৈর্ঘ্য প্রথম বাইটকে অনুসরণ করে, এবং স্ট্রিংটি স্ট্রিংয়ের দৈর্ঘ্যকে অনুসরণ করে;
-4. ডেটা একটি তালিকা যদি প্রথম বাইটের পরিসর [0xc0, 0xf7] হয়, এবং তালিকার সমস্ত আইটেমের RLP এনকোডিংগুলির ক্যাটেনেশন, যার মোট পেলোড প্রথম বাইট মাইনাস 0xc0 এর সমান, তা প্রথম বাইটকে অনুসরণ করে;
+4. যদি প্রথম বাইটের রেঞ্জ [0xc0, 0xf7] হয় তবে ডাটাটি একটি তালিকা, এবং তালিকার সমস্ত আইটেমের RLP এনকোডিংয়ের কনক্যাটেনেশন যার মোট পেলোড প্রথম বাইট থেকে 0xc0 বিয়োগফলের সমান তা প্রথম বাইটকে অনুসরণ করে;
-5. ডেটা একটি তালিকা যদি প্রথম বাইটের পরিসর [0xf8, 0xff] হয়, এবং তালিকার মোট পেলোড যার দৈর্ঘ্য প্রথম বাইট মাইনাস 0xf7 এর সমান, তা প্রথম বাইটকে অনুসরণ করে, এবং তালিকার সমস্ত আইটেমের RLP এনকোডিংগুলির ক্যাটেনেশন তালিকার মোট পেলোডকে অনুসরণ করে;
+5. যদি প্রথম বাইটের রেঞ্জ [0xf8, 0xff] হয় তবে ডাটাটি একটি তালিকা, এবং তালিকার মোট পেলোড যার দৈর্ঘ্য প্রথম বাইট থেকে 0xf7 বিয়োগফলের সমান তা প্রথম বাইটকে অনুসরণ করে, এবং তালিকার সমস্ত আইটেমের RLP এনকোডিংয়ের কনক্যাটেনেশন তালিকার মোট পেলোডকে অনুসরণ করে;
-কোডে, এটি হল:
+কোডে, এটি হলো:
```python
def rlp_decode(input):
@@ -152,12 +166,12 @@ def to_integer(b):
return ord(substr(b, -1)) + to_integer(substr(b, 0, -1)) * 256
```
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ইথেরিয়ামে RLP](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919)
-- [ইথেরিয়ামের আদ্যোপান্ত: RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58)
-- Coglio, A. (2020)। ACL2-তে ইথেরিয়ামের রিকার্সিভ লেংথ প্রিফিক্স। arXiv preprint arXiv:2009.13769.](https://arxiv.org/abs/2009.13769)
+- [ইথিরিয়ামে RLP](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919)
+- [ইথিরিয়াম আন্ডার দ্য হুড: RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58)
+- [Coglio, A. (2020). Ethereum's Recursive Length Prefix in ACL2. arXiv preprint arXiv:2009.13769.](https://arxiv.org/abs/2009.13769)
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়বস্তু {#related-topics}
-- [প্যাট্রিসিয়া মার্কল ট্রাই](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
+- [প্যাট্রিসিয়া মার্কেল ট্রাই](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-structures-and-encoding/ssz/index.md b/public/content/translations/bn/developers/docs/data-structures-and-encoding/ssz/index.md
index b1c3a333489..e4560ff053f 100644
--- a/public/content/translations/bn/developers/docs/data-structures-and-encoding/ssz/index.md
+++ b/public/content/translations/bn/developers/docs/data-structures-and-encoding/ssz/index.md
@@ -1,28 +1,28 @@
---
-title: "সরল সিরিয়ালাইজ"
-description: "ইথেরিয়াম-এর SSZ ফরম্যাটের ব্যাখ্যা।"
+title: সিম্পল সিরিয়ালাইজ
+description: ইথিরিয়ামের SSZ ফরম্যাটের ব্যাখ্যা।
lang: bn
sidebarDepth: 2
---
-**সরল সিরিয়ালাইজ (SSZ)** হল বিকন চেইন-এ ব্যবহৃত সিরিয়ালাইজেশন পদ্ধতি। এটি এক্সিকিউশন লেয়ার-এ ব্যবহৃত RLP সিরিয়ালাইজেশনকে পিয়ার ডিসকভারি প্রোটোকল ছাড়া কনসেন্সাস লেয়ার-এর সর্বত্র প্রতিস্থাপন করে। RLP সিরিয়ালাইজেশন সম্পর্কে আরও জানতে, দেখুন [রিকার্সিভ-লেংথ প্রিফিক্স (RLP)](/developers/docs/data-structures-and-encoding/rlp/)। SSZ ডিটারমিনিস্টিক হওয়ার জন্য এবং দক্ষতার সাথে Merkleize করার জন্য ডিজাইন করা হয়েছে। SSZ-কে দুটি উপাদান আছে বলে ভাবা যেতে পারে: একটি সিরিয়ালাইজেশন স্কিম এবং একটি Merkleization স্কিম যা সিরিয়ালাইজড ডেটা স্ট্রাকচার-এর সাথে দক্ষতার সাথে কাজ করার জন্য ডিজাইন করা হয়েছে।
+**সিম্পল সিরিয়ালাইজ (SSZ)** হলো বিকন চেইন-এ ব্যবহৃত সিরিয়ালাইজেশন পদ্ধতি। এটি পিয়ার ডিসকভারি প্রটোকল ছাড়া কনসেন্সাস লেয়ার-এর সর্বত্র এক্সিকিউশন লেয়ার-এ ব্যবহৃত RLP সিরিয়ালাইজেশনকে প্রতিস্থাপন করে। RLP সিরিয়ালাইজেশন সম্পর্কে আরও জানতে, [রিকার্সিভ-লেংথ প্রিফিক্স (RLP)](/developers/docs/data-structures-and-encoding/rlp/) দেখুন। SSZ-কে ডিটারমিনিস্টিক এবং কার্যকরভাবে মার্কেলিজ (Merkleize) করার জন্য ডিজাইন করা হয়েছে। SSZ-এর দুটি উপাদান আছে বলে ধরে নেওয়া যেতে পারে: একটি সিরিয়ালাইজেশন স্কিম এবং একটি মার্কেলাইজেশন স্কিম যা সিরিয়ালাইজড ডেটা স্ট্রাকচারের সাথে কার্যকরভাবে কাজ করার জন্য ডিজাইন করা হয়েছে।
-## SSZ কিভাবে কাজ করে? {#how-does-ssz-work}
+## SSZ কীভাবে কাজ করে? {#how-does-ssz-work}
### সিরিয়ালাইজেশন {#serialization}
-SSZ একটি সিরিয়ালাইজেশন স্কিম যা স্ব-বর্ণনামূলক নয় - বরং এটি একটি স্কিমার উপর নির্ভর করে যা আগে থেকে জানা আবশ্যক। SSZ সিরিয়ালাইজেশন-এর লক্ষ্য হল নির্বিচারে জটিলতার বস্তুগুলোকে বাইটের স্ট্রিং হিসাবে উপস্থাপন করা। এটি "বেসিক টাইপ"-এর জন্য একটি খুব সহজ প্রক্রিয়া। এলিমেন্টটি কেবল হেক্সাডেসিমেল বাইটে রূপান্তরিত হয়। বেসিক টাইপের মধ্যে রয়েছে:
+SSZ হলো এমন একটি সিরিয়ালাইজেশন স্কিম যা সেলফ-ডেসক্রাইবিং নয় - বরং এটি এমন একটি স্কিমার উপর নির্ভর করে যা আগে থেকেই জানা থাকতে হবে। SSZ সিরিয়ালাইজেশনের লক্ষ্য হলো যেকোনো জটিলতার অবজেক্টকে বাইটের স্ট্রিং হিসেবে উপস্থাপন করা। "বেসিক টাইপ"-এর জন্য এটি একটি খুব সাধারণ প্রক্রিয়া। উপাদানটিকে কেবল হেক্সাডেসিমাল বাইটে রূপান্তর করা হয়। বেসিক টাইপগুলোর মধ্যে রয়েছে:
-- আনসাইন্ড ইন্টিজার
+- আনসাইনড ইন্টিজার
- বুলিয়ান
-জটিল "কম্পোজিট" টাইপের জন্য, সিরিয়ালাইজেশন আরও জটিল কারণ কম্পোজিট টাইপের মধ্যে একাধিক এলিমেন্ট থাকে যার বিভিন্ন টাইপ বা বিভিন্ন আকার বা উভয়ই থাকতে পারে। যেখানে এই সমস্ত অবজেক্টগুলির একটি নির্দিষ্ট দৈর্ঘ্য থাকে (অর্থাৎ, এলিমেন্টগুলির আকার তাদের প্রকৃত মান নির্বিশেষে সর্বদা ধ্রুবক থাকে), সেখানে সিরিয়ালাইজেশন হল কম্পোজিট টাইপের প্রতিটি এলিমেন্টকে ছোট-এন্ডিয়ান বাইটস্ট্রিং-এ রূপান্তরিত করা। এই বাইটস্ট্রিংগুলো একসাথে যুক্ত করা হয়। সিরিয়ালাইজড অবজেক্টটিতে ডিসিরিয়ালাইজড অবজেক্টে যেভাবে নির্দিষ্ট-দৈর্ঘ্যের এলিমেন্টগুলি উপস্থিত থাকে সেই একই ক্রমে তাদের বাইটলিস্ট রিপ্রেজেন্টেশন থাকে।
+জটিল "কম্পোজিট" টাইপের ক্ষেত্রে, সিরিয়ালাইজেশন আরও জটিল কারণ কম্পোজিট টাইপে একাধিক উপাদান থাকে যেগুলোর ধরন বা আকার ভিন্ন হতে পারে, অথবা উভয়ই হতে পারে। যেখানে এই অবজেক্টগুলোর সবগুলোর নির্দিষ্ট দৈর্ঘ্য থাকে (অর্থাৎ, উপাদানগুলোর আকার তাদের প্রকৃত মান নির্বিশেষে সর্বদা স্থির থাকবে) সেখানে সিরিয়ালাইজেশন হলো কম্পোজিট টাইপের প্রতিটি উপাদানকে লিটল-এন্ডিয়ান বাইটস্ট্রিংয়ে ক্রমানুসারে রূপান্তর করা। এই বাইটস্ট্রিংগুলো একসাথে যুক্ত করা হয়। সিরিয়ালাইজড অবজেক্টে ফিক্সড-লেংথ উপাদানগুলোর বাইটলিস্ট রিপ্রেজেন্টেশন থাকে ঠিক সেই ক্রমেই যেভাবে সেগুলো ডিসিরিয়ালাইজড অবজেক্টে উপস্থিত থাকে।
-পরিবর্তনশীল দৈর্ঘ্যের টাইপের জন্য, আসল ডেটাটি সিরিয়ালাইজড অবজেক্টে সেই এলিমেন্টের অবস্থানে একটি "অফসেট" মান দ্বারা প্রতিস্থাপিত হয়। আসল ডেটা সিরিয়ালাইজড অবজেক্টের শেষে একটি হিপে যুক্ত করা হয়। অফসেট মানটি হল হিপে আসল ডেটার শুরুর জন্য ইনডেক্স, যা প্রাসঙ্গিক বাইটের জন্য একটি পয়েন্টার হিসাবে কাজ করে।
+পরিবর্তনশীল দৈর্ঘ্যের (variable lengths) টাইপগুলোর জন্য, সিরিয়ালাইজড অবজেক্টে সেই উপাদানের অবস্থানে প্রকৃত ডেটা একটি "অফসেট" মান দ্বারা প্রতিস্থাপিত হয়। প্রকৃত ডেটা সিরিয়ালাইজড অবজেক্টের শেষে একটি হিপে (heap) যুক্ত হয়। অফসেট মান হলো হিপে প্রকৃত ডেটা শুরু হওয়ার ইনডেক্স, যা প্রাসঙ্গিক বাইটগুলোর পয়েন্টার হিসেবে কাজ করে।
-নীচের উদাহরণটি নির্দিষ্ট এবং পরিবর্তনশীল দৈর্ঘ্যের উভয় এলিমেন্ট সহ একটি কন্টেইনারের জন্য অফসেটিং কীভাবে কাজ করে তা ব্যাখ্যা করে:
+নিচের উদাহরণটি দেখায় যে কীভাবে ফিক্সড এবং ভেরিয়েবল-লেংথ উভয় উপাদানযুক্ত একটি কন্টেইনারের জন্য অফসেটিং কাজ করে:
-```Rust
+```rust
struct Dummy {
@@ -44,95 +44,95 @@ SSZ একটি সিরিয়ালাইজেশন স্কিম যা
```
-`serialized`-এর নিম্নলিখিত কাঠামো থাকবে (এখানে শুধুমাত্র 4 বিটে প্যাড করা হয়েছে, বাস্তবে 32 বিটে প্যাড করা হয়েছে এবং স্পষ্টতার জন্য `int` উপস্থাপনা রাখা হয়েছে):
+`serialized`-এর নিচের মতো স্ট্রাকচার থাকবে (এখানে কেবল 4 বিটে প্যাড করা হয়েছে, বাস্তবে 32 বিটে প্যাড করা হয়, এবং স্পষ্টতার জন্য `int` রিপ্রেজেন্টেশন রাখা হয়েছে):
```
[37, 0, 0, 0, 55, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 1, 2, 3, 4]
------------ ----------- ----------- ----------- ----------
| | | | |
- নম্বর1 নম্বর2 ভেক্টরের নম্বর 3 ভেক্টরের
- জন্য অফসেট জন্য মান
+ number1 number2 offset for number 3 value for
+ vector vector
```
-স্বচ্ছতার জন্য লাইনে বিভক্ত করা হয়েছে:
+স্পষ্টতার জন্য লাইনে ভাগ করা হয়েছে:
```
[
- 37, 0, 0, 0, # `number1`-এর লিটল-এন্ডিয়ান এনকোডিং।
- 55, 0, 0, 0, # `number2`-এর লিটল-এন্ডিয়ান এনকোডিং।
- 16, 0, 0, 0, # "অফসেট" যা নির্দেশ করে `vector`-এর মান কোথায় শুরু হয় (লিটল-এন্ডিয়ান 16)।
- 22, 0, 0, 0, # `number3`-এর লিটল-এন্ডিয়ান এনকোডিং।
- 1, 2, 3, 4, # `vector`-এর আসল মান।
+ 37, 0, 0, 0, # little-endian encoding of `number1`.
+ 55, 0, 0, 0, # little-endian encoding of `number2`.
+ 16, 0, 0, 0, # The "offset" that indicates where the value of `vector` starts (little-endian 16).
+ 22, 0, 0, 0, # little-endian encoding of `number3`.
+ 1, 2, 3, 4, # The actual values in `vector`.
]
```
-এটি এখনও একটি সরলীকরণ - উপরের পরিকল্পিত চিত্রগুলিতে পূর্ণসংখ্যা এবং শূন্যগুলি আসলে বাইটলিস্ট হিসাবে সংরক্ষণ করা হবে, এইভাবে:
+এটি এখনও একটি সরলীকরণ - উপরের স্কিম্যাটিক্সে ইন্টিজার এবং শূন্যগুলো আসলে বাইটলিস্ট হিসেবে সংরক্ষিত হবে, ঠিক এরকম:
```
[
- 10100101000000000000000000000000 # `number1`-এর লিটল-এন্ডিয়ান এনকোডিং
- 10110111000000000000000000000000 # `number2`-এর লিটল-এন্ডিয়ান এনকোডিং।
- 10010000000000000000000000000000 # "অফসেট" যা নির্দেশ করে `vector`-এর মান কোথায় শুরু হয় (লিটল-এন্ডিয়ান 16)।
- 10010110000000000000000000000000 # `number3`-এর লিটল-এন্ডিয়ান এনকোডিং।
- 10000001100000101000001110000100 # `bytes` ফিল্ডের আসল মান।
+ 10100101000000000000000000000000 # little-endian encoding of `number1`
+ 10110111000000000000000000000000 # little-endian encoding of `number2`.
+ 10010000000000000000000000000000 # The "offset" that indicates where the value of `vector` starts (little-endian 16).
+ 10010110000000000000000000000000 # little-endian encoding of `number3`.
+ 10000001100000101000001110000100 # The actual value of the `bytes` field.
]
```
-সুতরাং পরিবর্তনশীল-দৈর্ঘ্যের টাইপের জন্য আসল মানগুলি সিরিয়ালাইজড অবজেক্টের শেষে একটি হিপ-এ সংরক্ষণ করা হয়, এবং তাদের অফসেটগুলি ফিল্ডের ক্রমবদ্ধ তালিকায় তাদের সঠিক অবস্থানে সংরক্ষণ করা হয়।
+সুতরাং ভেরিয়েবল-লেংথ টাইপগুলোর প্রকৃত মানগুলো সিরিয়ালাইজড অবজেক্টের শেষে একটি হিপে সংরক্ষিত হয় এবং তাদের অফসেটগুলো ফিল্ডের ক্রমানুসারে সঠিক অবস্থানে সংরক্ষিত থাকে।
-এছাড়াও কিছু বিশেষ ক্ষেত্র রয়েছে যার জন্য নির্দিষ্ট আচরণের প্রয়োজন হয়, যেমন `BitList` টাইপ যার জন্য সিরিয়ালাইজেশনের সময় একটি দৈর্ঘ্যের ক্যাপ যোগ করতে হয় এবং ডিসিরিয়ালাইজেশনের সময় অপসারণ করতে হয়। [SSZ স্পেক](https://github.com/ethereum/consensus-specs/blob/master/ssz/simple-serialize.md)-এ সম্পূর্ণ বিবরণ উপলব্ধ আছে।
+কিছু বিশেষ ক্ষেত্রও রয়েছে যেগুলোর জন্য নির্দিষ্ট ট্রিটমেন্ট প্রয়োজন, যেমন `BitList` টাইপ যার জন্য সিরিয়ালাইজেশনের সময় একটি লেংথ ক্যাপ যোগ করতে হয় এবং ডিসিরিয়ালাইজেশনের সময় তা সরিয়ে ফেলতে হয়। সম্পূর্ণ বিবরণ [SSZ স্পেক](https://github.com/ethereum/consensus-specs/blob/master/ssz/simple-serialize.md)-এ পাওয়া যাবে।
### ডিসিরিয়ালাইজেশন {#deserialization}
-এই অবজেক্টটিকে ডিসিরিয়ালাইজ করতে স্কিমা প্রয়োজন। স্কিমাটি সিরিয়ালাইজড ডেটার সুনির্দিষ্ট বিন্যাসকে সংজ্ঞায়িত করে যাতে প্রতিটি নির্দিষ্ট এলিমেন্ট বাইটের একটি ব্লব থেকে সঠিক টাইপ, মান, আকার এবং অবস্থান সহ কিছু অর্থপূর্ণ অবজেক্টে ডিসিরিয়ালাইজ করা যায়। স্কিমাটিই ডিসিরিয়ালাইজারকে বলে যে কোন মানগুলি আসল মান এবং কোনটি অফসেট। একটি অবজেক্ট সিরিয়ালাইজ করা হলে সমস্ত ফিল্ডের নাম অদৃশ্য হয়ে যায়, কিন্তু স্কিমা অনুসারে ডিসিরিয়ালাইজেশনের সময় পুনরায় ইনস্ট্যানশিয়েট করা হয়।
+এই অবজেক্টটিকে ডিসিরিয়ালাইজ করার জন্য স্কিমা প্রয়োজন। স্কিমা সিরিয়ালাইজড ডেটার সুনির্দিষ্ট লেআউট সংজ্ঞায়িত করে যাতে প্রতিটি নির্দিষ্ট উপাদানকে বাইটের একটি ব্লব থেকে কোনো অর্থপূর্ণ অবজেক্টে ডিসিরিয়ালাইজ করা যায়, যেখানে উপাদানগুলোর সঠিক ধরন, মান, আকার এবং অবস্থান থাকে। স্কিমাই ডিসিরিয়ালাইজারকে বলে দেয় কোন মানগুলো প্রকৃত মান এবং কোনগুলো অফসেট। কোনো অবজেক্ট সিরিয়ালাইজ করা হলে সমস্ত ফিল্ডের নাম অদৃশ্য হয়ে যায়, কিন্তু স্কিমা অনুযায়ী ডিসিরিয়ালাইজেশনের সময় সেগুলো পুনরায় ইনস্ট্যানশিয়েট করা হয়।
-এটির উপর একটি ইন্টারেক্টিভ ব্যাখ্যার জন্য [ssz.dev](https://www.ssz.dev/overview) দেখুন।
+এ বিষয়ে একটি ইন্টারেক্টিভ ব্যাখ্যার জন্য [ssz.dev](https://www.ssz.dev/overview) দেখুন।
## মার্কেলাইজেশন {#merkleization}
-এই SSZ সিরিয়ালাইজড অবজেক্টটি তারপর মার্কেলাইজ করা যেতে পারে - অর্থাৎ একই ডেটার একটি মার্কল-ট্রি উপস্থাপনায় রূপান্তরিত করা যেতে পারে। প্রথমে, সিরিয়ালাইজড অবজেক্টে 32-বাইট চাঙ্কের সংখ্যা নির্ধারণ করা হয়। এগুলি গাছের "লিফ"। লিফের মোট সংখ্যা অবশ্যই 2-এর ঘাত হতে হবে যাতে লিফগুলিকে একসাথে হ্যাস করে অবশেষে একটি একক হ্যাস-ট্রি-রুট তৈরি হয়। যদি স্বাভাবিকভাবে এটি না হয়, তাহলে শূন্যের 32 বাইট ধারণকারী অতিরিক্ত লিফ যোগ করা হয়। ডায়াগ্রামের মাধ্যমে:
+এই SSZ সিরিয়ালাইজড অবজেক্টটিকে এরপর মার্কেলাইজ করা যেতে পারে - অর্থাৎ একই ডেটার একটি মার্কেল-ট্রি রিপ্রেজেন্টেশনে রূপান্তরিত করা যায়। প্রথমে, সিরিয়ালাইজড অবজেক্টে 32-বাইট চাঙ্কের সংখ্যা নির্ধারণ করা হয়। এগুলো হলো ট্রির "পাতা" (leaves)। পাতার মোট সংখ্যা অবশ্যই 2-এর পাওয়ার হতে হবে যাতে পাতাগুলোকে একসাথে হ্যাস করলে শেষ পর্যন্ত একটি একক হ্যাস-ট্রি-রুট তৈরি হয়। যদি স্বাভাবিকভাবে এমনটা না হয়, তবে 32 বাইট শূন্য ধারণকারী অতিরিক্ত পাতা যোগ করা হয়। ডায়াগ্রামের মাধ্যমে:
```
- হ্যাস ট্রি রুট
+ hash tree root
/ \
/ \
/ \
/ \
- লিফ ১ এবং ২ লিফ ৩ এবং ৪
- এর হ্যাস এর হ্যাস
+ hash of leaves hash of leaves
+ 1 and 2 3 and 4
/ \ / \
/ \ / \
/ \ / \
- লিফ১ লিফ২ লিফ৩ লিফ৪
+ leaf1 leaf2 leaf3 leaf4
```
-এমন কিছু ক্ষেত্রও রয়েছে যেখানে গাছের লিফগুলি স্বাভাবিকভাবে উপরের উদাহরণের মতো সমানভাবে বন্টিত হয় না। উদাহরণস্বরূপ, লিফ 4 একাধিক এলিমেন্ট সহ একটি কন্টেইনার হতে পারে যার জন্য মার্কল ট্রিতে অতিরিক্ত "গভীরতা" যোগ করার প্রয়োজন হয়, যা একটি অসম ট্রি তৈরি করে।
+এমন কিছু ক্ষেত্রও রয়েছে যেখানে ট্রির পাতাগুলো উপরের উদাহরণের মতো স্বাভাবিকভাবে সমানভাবে বণ্টিত হয় না। উদাহরণস্বরূপ, পাতা 4 এমন একটি কন্টেইনার হতে পারে যেখানে একাধিক উপাদান রয়েছে যার জন্য মার্কেল ট্রিতে অতিরিক্ত "গভীরতা" (depth) যোগ করার প্রয়োজন হয়, যা একটি অসম ট্রি তৈরি করে।
-এই ট্রি এলিমেন্টগুলিকে লিফ X, নোড X ইত্যাদি হিসাবে উল্লেখ করার পরিবর্তে, আমরা তাদের সাধারণীকৃত সূচক দিতে পারি, রুট = 1 থেকে শুরু করে এবং প্রতিটি স্তর বরাবর বাম থেকে ডানে গণনা করে। এটি উপরে ব্যাখ্যা করা সাধারণীকৃত সূচক। সিরিয়ালাইজড তালিকার প্রতিটি এলিমেন্টের একটি সাধারণীকৃত সূচক রয়েছে যা `2**depth + idx`-এর সমান, যেখানে idx হল সিরিয়ালাইজড অবজেক্টে এর শূন্য-সূচিত অবস্থান এবং ডেপথ হল মার্কল ট্রিতে স্তরের সংখ্যা, যা এলিমেন্টের সংখ্যার (লিফ) বেস-টু লগারিদম হিসাবে নির্ধারণ করা যেতে পারে।
+এই ট্রি উপাদানগুলোকে পাতা X, নোড X ইত্যাদি হিসেবে উল্লেখ করার পরিবর্তে, আমরা সেগুলোকে জেনারেলাইজড ইনডেক্স দিতে পারি, যা রুট = 1 দিয়ে শুরু হয় এবং প্রতিটি লেভেল বরাবর বাম থেকে ডানে গণনা করা হয়। এটিই উপরে ব্যাখ্যা করা জেনারেলাইজড ইনডেক্স। সিরিয়ালাইজড তালিকার প্রতিটি উপাদানের একটি জেনারেলাইজড ইনডেক্স থাকে যা `2**depth + idx`-এর সমান, যেখানে idx হলো সিরিয়ালাইজড অবজেক্টে এর জিরো-ইনডেক্সড অবস্থান এবং depth হলো মার্কেল ট্রির লেভেলের সংখ্যা, যা উপাদান (পাতা) সংখ্যার বেস-টু লগারিদম হিসেবে নির্ধারণ করা যেতে পারে।
-## সাধারণীকৃত সূচক {#generalized-indices}
+## জেনারেলাইজড ইনডেক্স {#generalized-indices}
-একটি সাধারণীকৃত সূচক হল একটি পূর্ণসংখ্যা যা একটি বাইনারি মার্কল ট্রিতে একটি নোডকে প্রতিনিধিত্ব করে যেখানে প্রতিটি নোডের একটি সাধারণীকৃত সূচক `2 ** depth + index in row` থাকে।
+জেনারেলাইজড ইনডেক্স হলো একটি ইন্টিজার যা একটি বাইনারি মার্কেল ট্রিতে একটি নোডকে উপস্থাপন করে যেখানে প্রতিটি নোডের একটি জেনারেলাইজড ইনডেক্স `2 ** depth + index in row` থাকে।
```
- 1 --ডেপথ = 0 2**0 + 0 = 1
- 2 3 --ডেপথ = 1 2**1 + 0 = 2, 2**1+1 = 3
- 4 5 6 7 --ডেপথ = 2 2**2 + 0 = 4, 2**2 + 1 = 5...
+ 1 --depth = 0 2**0 + 0 = 1
+ 2 3 --depth = 1 2**1 + 0 = 2, 2**1+1 = 3
+ 4 5 6 7 --depth = 2 2**2 + 0 = 4, 2**2 + 1 = 5...
```
-এই উপস্থাপনাটি মার্কল ট্রিতে ডেটার প্রতিটি অংশের জন্য একটি নোড সূচক প্রদান করে।
+এই রিপ্রেজেন্টেশন মার্কেল ট্রির প্রতিটি ডেটার জন্য একটি নোড ইনডেক্স প্রদান করে।
## মাল্টিপ্রুফস {#multiproofs}
-একটি নির্দিষ্ট এলিমেন্টকে প্রতিনিধিত্বকারী সাধারণীকৃত সূচকের তালিকা প্রদান করা আমাদেরকে হ্যাস-ট্রি-রুটের বিরুদ্ধে এটি যাচাই করার সুযোগ দেয়। এই রুটটি আমাদের বাস্তবতার স্বীকৃত সংস্করণ। আমাদেরকে প্রদত্ত যেকোনো ডেটা সেই বাস্তবতার বিরুদ্ধে মার্কল ট্রিতে সঠিক স্থানে (তার সাধারণীকৃত সূচক দ্বারা নির্ধারিত) প্রবেশ করিয়ে এবং রুটটি স্থির থাকে তা পর্যবেক্ষণ করে যাচাই করা যেতে পারে। স্পেকে [এখানে](https://github.com/ethereum/consensus-specs/blob/master/ssz/merkle-proofs.md#merkle-multiproofs) এমন ফাংশন রয়েছে যা একটি নির্দিষ্ট সাধারণীকৃত সূচকের সেটের বিষয়বস্তু যাচাই করার জন্য প্রয়োজনীয় নোডের ন্যূনতম সেট কীভাবে গণনা করা যায় তা দেখায়।
+একটি নির্দিষ্ট উপাদানকে উপস্থাপনকারী জেনারেলাইজড ইনডেক্সের তালিকা প্রদান করলে তা আমাদের হ্যাস-ট্রি-রুটের বিপরীতে যাচাই করার সুযোগ দেয়। এই রুটটি হলো আমাদের বাস্তবতার স্বীকৃত সংস্করণ। আমাদের দেওয়া যেকোনো ডেটা মার্কেল ট্রির সঠিক স্থানে (এর জেনারেলাইজড ইনডেক্স দ্বারা নির্ধারিত) সন্নিবেশ করে এবং রুটটি অপরিবর্তিত থাকে কিনা তা পর্যবেক্ষণ করে সেই বাস্তবতার বিপরীতে যাচাই করা যেতে পারে। স্পেক-এ [এখানে](https://github.com/ethereum/consensus-specs/blob/master/ssz/merkle-proofs.md#merkle-multiproofs) এমন কিছু ফাংশন রয়েছে যা দেখায় যে কীভাবে জেনারেলাইজড ইনডেক্সের একটি নির্দিষ্ট সেটের বিষয়বস্তু যাচাই করার জন্য প্রয়োজনীয় নোডের ন্যূনতম সেট গণনা করতে হয়।
-উদাহরণস্বরূপ, নীচের ট্রিতে ইনডেক্স 9-এ ডেটা যাচাই করতে, আমাদের ইনডেক্স 8, 9, 5, 3, 1-এ ডেটার হ্যাস প্রয়োজন।
-(8,9)-এর হ্যাস (4)-এর হ্যাসের সমান হওয়া উচিত, যা 5-এর সাথে হ্যাস করে 2 তৈরি করে, যা 3-এর সাথে হ্যাস করে ট্রি রুট 1 তৈরি করে। যদি 9-এর জন্য ভুল ডেটা সরবরাহ করা হয়, তাহলে রুটটি পরিবর্তিত হবে - আমরা এটি সনাক্ত করব এবং শাখাটি যাচাই করতে ব্যর্থ হব।
+উদাহরণস্বরূপ, নিচের ট্রিতে ইনডেক্স 9-এর ডেটা যাচাই করার জন্য, আমাদের 8, 9, 5, 3, 1 ইনডেক্সে থাকা ডেটার হ্যাস প্রয়োজন।
+(8,9)-এর হ্যাস (4)-এর হ্যাসের সমান হওয়া উচিত, যা 5-এর সাথে হ্যাস হয়ে 2 তৈরি করে, যা 3-এর সাথে হ্যাস হয়ে ট্রি রুট 1 তৈরি করে। যদি 9-এর জন্য ভুল ডেটা দেওয়া হয়, তবে রুটটি পরিবর্তিত হবে - আমরা এটি শনাক্ত করব এবং ব্রাঞ্চটি যাচাই করতে ব্যর্থ হব।
```
-* = প্রমাণ তৈরি করার জন্য প্রয়োজনীয় ডেটা
+* = data required to generate proof
1*
2 3*
@@ -141,10 +141,10 @@ SSZ একটি সিরিয়ালাইজেশন স্কিম যা
```
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ইথেরিয়াম আপগ্রেড করা: SSZ](https://eth2book.info/altair/part2/building_blocks/ssz)
-- [ইথেরিয়াম আপগ্রেড করা: মার্কেলাইজেশন](https://eth2book.info/altair/part2/building_blocks/merkleization)
-- [SSZ ইমপ্লিমেন্টেশন](https://github.com/ethereum/consensus-specs/issues/2138)
+- [আপগ্রেডিং ইথিরিয়াম: SSZ](https://eth2book.info/altair/part2/building_blocks/ssz)
+- [আপগ্রেডিং ইথিরিয়াম: মার্কেলাইজেশন](https://eth2book.info/altair/part2/building_blocks/merkleization)
+- [SSZ ইমপ্লিমেন্টেশনস](https://github.com/ethereum/consensus-specs/issues/2138)
- [SSZ ক্যালকুলেটর](https://simpleserialize.com/)
-- [SSZ.dev](https://www.ssz.dev/)
+- [SSZ.dev](https://www.ssz.dev/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md b/public/content/translations/bn/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
index c9835d030aa..d972b6dab8f 100644
--- a/public/content/translations/bn/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
+++ b/public/content/translations/bn/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
@@ -1,13 +1,13 @@
---
-title: "Web3 গোপন সংগ্রহস্থল সংজ্ঞা"
-description: "web3 গোপন সংগ্রহস্থলের জন্য আনুষ্ঠানিক সংজ্ঞা"
+title: ওয়েব3 সিক্রেট স্টোরেজ সংজ্ঞা
+description: ওয়েব3 সিক্রেট স্টোরেজের আনুষ্ঠানিক সংজ্ঞা
lang: bn
sidebarDepth: 2
---
-আপনার অ্যাপকে Ethereum-এ কাজ করানোর জন্য, আপনি web3.js লাইব্রেরি দ্বারা সরবরাহ করা web3 অবজেক্টটি ব্যবহার করতে পারেন। নেপথ্যে এটি RPC কলের মাধ্যমে একটি স্থানীয় নোডের সাথে যোগাযোগ করে। [web3](https://github.com/ethereum/web3.js/) যেকোনো Ethereum নোডের সাথে কাজ করে যা একটি RPC লেয়ার উন্মুক্ত করে।
+ইথিরিয়ামে আপনার অ্যাপ কাজ করানোর জন্য, আপনি web3.js লাইব্রেরি দ্বারা প্রদত্ত ওয়েব3 অবজেক্ট ব্যবহার করতে পারেন। এর ভেতরে এটি RPC কলের মাধ্যমে একটি লোকাল নোড এর সাথে যোগাযোগ করে। [ওয়েব3](https://github.com/ethereum/web3.js/) যেকোনো ইথিরিয়াম নোড এর সাথে কাজ করে যা একটি RPC লেয়ার এক্সপোজ করে।
-`web3`-তে `eth` অবজেক্টটি রয়েছে - web3.eth।
+`web3` এর মধ্যে `eth` অবজেক্ট থাকে - web3.eth।
```js
var fs = require("fs")
@@ -18,63 +18,62 @@ fs.readFile("keyfile.json", (err, data) => {
var result = recognizer(json)
})
-/** ফলাফল
- * [ 'web3', 3 ] web3 (v3) কীফাইল
- * [ 'ethersale', undefined ] Ethersale কীফাইল
- * null অবৈধ কীফাইল
- */
+/* * ফলাফল
+ * [ 'web3', 3 ] web3 (v3) কিফাইল
+ * [ 'ethersale', undefined ] Ethersale কিফাইল
+ * null অবৈধ কিফাইল */
```
-এই ডকুমেন্টটি Web3 গোপন সংগ্রহস্থল সংজ্ঞার **সংস্করণ 3** নথিভুক্ত করে।
+এটি ওয়েব3 সিক্রেট স্টোরেজ সংজ্ঞার **সংস্করণ 3** এর ডকুমেন্ট।
## সংজ্ঞা {#definition}
-ফাইলটির আসল এনকোডিং এবং ডিকোডিং সংস্করণ 1 থেকে মূলত অপরিবর্তিত রয়েছে, ব্যতিক্রম হল যে ক্রিপ্টো অ্যালগরিদম আর AES-128-CBC-তে সীমাবদ্ধ নয় (AES-128-CTR এখন ন্যূনতম প্রয়োজনীয়তা)। বেশিরভাগ অর্থ/অ্যালগরিদম সংস্করণ 1-এর মতোই, `mac` ছাড়া, যা ডিরাইভড কী-এর দ্বিতীয়-বামদিকের 16 বাইটের সাথে সম্পূর্ণ `ciphertext`-এর কনক্যাটেনেশনের SHA3 (keccak-256) হিসাবে দেওয়া হয়েছে।
+ফাইলের আসল এনকোডিং এবং ডিকোডিং সংস্করণ 1 থেকে অনেকাংশে অপরিবর্তিত রয়েছে, শুধুমাত্র ক্রিপ্টো অ্যালগরিদম আর AES-128-CBC তে নির্দিষ্ট নেই (AES-128-CTR এখন ন্যূনতম প্রয়োজনীয়তা)। বেশিরভাগ অর্থ/অ্যালগরিদম সংস্করণ 1 এর মতোই, শুধুমাত্র `mac` বাদে, যা ডিরাইভড কি (derived key) এর বাম দিক থেকে দ্বিতীয় 16 বাইট এবং সম্পূর্ণ `ciphertext` এর কনক্যাটেনেশনের SHA3 (keccak-256) হিসেবে দেওয়া হয়।
-গোপন কী ফাইলগুলি সরাসরি `~/.web3/keystore` (ইউনিক্স-সদৃশ সিস্টেমের জন্য) এবং `~/AppData/Web3/keystore` (উইন্ডোজের জন্য) এখানে সংরক্ষণ করা হয়। তাদের যেকোনো নাম দেওয়া যেতে পারে, কিন্তু একটি ভাল প্রথা হলো `.json`, যেখানে `` হলো গোপন কী-কে দেওয়া 128-বিট UUID (গোপন কী-এর ঠিকানার জন্য একটি গোপনীয়তা-সংরক্ষণকারী প্রক্সি)।
+সিক্রেট কি (Secret key) ফাইলগুলো সরাসরি `~/.web3/keystore` (ইউনিক্স-সদৃশ সিস্টেমের জন্য) এবং `~/AppData/Web3/keystore` (উইন্ডোজের জন্য) এ সংরক্ষণ করা হয়। এগুলোর যেকোনো নাম দেওয়া যেতে পারে, তবে একটি ভালো নিয়ম হলো `.json`, যেখানে `` হলো সিক্রেট কি-কে দেওয়া 128-বিট UUID (সিক্রেট কি-এর এডড্রেস এর জন্য একটি গোপনীয়তা-রক্ষাকারী প্রক্সি)।
-এই ধরনের সমস্ত ফাইলের একটি সংশ্লিষ্ট পাসওয়ার্ড থাকে। একটি প্রদত্ত `.json` ফাইলের গোপন কী ডিরাইভ করার জন্য, প্রথমে ফাইলটির এনক্রিপশন কী ডিরাইভ করুন; এটি করা হয় ফাইলটির পাসওয়ার্ড নিয়ে এবং `kdf` কী দ্বারা বর্ণিত একটি কী ডিরাইভেশন ফাংশনের মধ্যে দিয়ে পাস করিয়ে। KDF ফাংশনের জন্য KDF-নির্ভর স্ট্যাটিক এবং ডাইনামিক প্যারামিটারগুলি `kdfparams` কী-তে বর্ণনা করা আছে।
+এই ধরনের সব ফাইলের সাথে একটি পাসওয়ার্ড যুক্ত থাকে। কোনো নির্দিষ্ট `.json` ফাইলের সিক্রেট কি ডিরাইভ করতে, প্রথমে ফাইলের এনক্রিপশন কি ডিরাইভ করুন; এটি ফাইলের পাসওয়ার্ড নিয়ে এবং `kdf` কি দ্বারা বর্ণিত একটি কি ডিরাইভেশন ফাংশনের মাধ্যমে পাস করে করা হয়। KDF ফাংশনের জন্য KDF-নির্ভর স্ট্যাটিক এবং ডাইনামিক প্যারামিটারগুলো `kdfparams` কি-তে বর্ণনা করা হয়েছে।
-ন্যূনতম-সম্মত সমস্ত ইমপ্লিমেন্টেশন দ্বারা PBKDF2 অবশ্যই সমর্থিত হতে হবে, যা বোঝানো হয়েছে:
+PBKDF2 অবশ্যই সমস্ত ন্যূনতম-কমপ্লায়েন্ট ইমপ্লিমেন্টেশন দ্বারা সমর্থিত হতে হবে, যা এভাবে নির্দেশিত হয়:
- `kdf`: `pbkdf2`
-PBKDF2-এর জন্য, kdfparams-এর মধ্যে অন্তর্ভুক্ত:
+PBKDF2 এর জন্য, kdfparams এর মধ্যে রয়েছে:
-- `prf`: অবশ্যই `hmac-sha256` হতে হবে (ভবিষ্যতে প্রসারিত হতে পারে);
-- `c`: পুনরাবৃত্তির সংখ্যা;
-- `salt`: PBKDF-এ পাস করা সল্ট;
-- `dklen`: ডিরাইভড কী-এর জন্য দৈর্ঘ্য। অবশ্যই >= 32 হতে হবে।
+- `prf`: অবশ্যই `hmac-sha256` হতে হবে (ভবিষ্যতে বাড়ানো হতে পারে);
+- `c`: ইটারেশনের সংখ্যা;
+- `salt`: PBKDF এ পাস করা সল্ট;
+- `dklen`: ডিরাইভড কি-এর দৈর্ঘ্য। অবশ্যই >= 32 হতে হবে।
-একবার ফাইলটির কী ডিরাইভ করা হয়ে গেলে, MAC-এর ডিরাইভেশনের মাধ্যমে এটি যাচাই করা উচিত। ডিরাইভড কী-এর দ্বিতীয়-বামদিকের 16 বাইটের সাথে `ciphertext` কী-এর বিষয়বস্তুর কনক্যাটেনেশন দ্বারা গঠিত বাইট অ্যারের SHA3 (keccak-256) হ্যাস হিসাবে MAC-কে গণনা করা উচিত, অর্থাৎ:
+একবার ফাইলের কি ডিরাইভ করা হয়ে গেলে, এটি MAC ডিরাইভেশনের মাধ্যমে যাচাই করা উচিত। MAC কে ডিরাইভড কি-এর বাম দিক থেকে দ্বিতীয় 16 বাইট এবং `ciphertext` কি-এর কন্টেন্টের কনক্যাটেনেশন হিসেবে গঠিত বাইট অ্যারের SHA3 (keccak-256) হ্যাস হিসেবে গণনা করা উচিত, অর্থাৎ:
```js
KECCAK(DK[16..31] ++ )
```
-(যেখানে `++` হল কনক্যাটেনেশন অপারেটর)
+(যেখানে `++` হলো কনক্যাটেনেশন অপারেটর)
-এই মানটি `mac` কী-এর বিষয়বস্তুর সাথে তুলনা করা উচিত; যদি তারা ভিন্ন হয়, একটি বিকল্প পাসওয়ার্ড অনুরোধ করা উচিত (বা অপারেশনটি বাতিল করা উচিত)।
+এই মানটিকে `mac` কি-এর কন্টেন্টের সাথে তুলনা করা উচিত; যদি সেগুলো আলাদা হয়, তবে একটি বিকল্প পাসওয়ার্ড চাওয়া উচিত (বা অপারেশনটি বাতিল করা উচিত)।
-ফাইলটির কী যাচাই করার পরে, `cipher` কী দ্বারা নির্দিষ্ট করা এবং `cipherparams` কী-এর মাধ্যমে প্যারামিটারাইজ করা সিমেট্রিক এনক্রিপশন অ্যালগরিদম ব্যবহার করে সাইফার টেক্সট (ফাইলে থাকা `ciphertext` কী) ডিক্রিপ্ট করা যেতে পারে। যদি ডিরাইভড কী-এর আকার এবং অ্যালগরিদমের কী-এর আকার মেলানো না যায়, তাহলে ডিরাইভড কী-এর শূন্য প্যাডযুক্ত, ডানদিকের বাইটগুলি অ্যালগরিদমের কী হিসাবে ব্যবহার করা উচিত।
+ফাইলের কি যাচাই করার পর, সাইফার টেক্সট (ফাইলে থাকা `ciphertext` কি) `cipher` কি দ্বারা নির্দিষ্ট করা এবং `cipherparams` কি-এর মাধ্যমে প্যারামিটারাইজ করা সিমেট্রিক এনক্রিপশন অ্যালগরিদম ব্যবহার করে ডিক্রিপ্ট করা যেতে পারে। যদি ডিরাইভড কি-এর আকার এবং অ্যালগরিদমের কি-এর আকার না মেলে, তবে ডিরাইভড কি-এর জিরো প্যাডেড, ডানদিকের বাইটগুলোকে অ্যালগরিদমের কি হিসেবে ব্যবহার করা উচিত।
-ন্যূনতম-সম্মত সমস্ত ইমপ্লিমেন্টেশন দ্বারা অবশ্যই AES-128-CTR অ্যালগরিদম সমর্থিত হতে হবে, যা বোঝানো হয়েছে:
+সমস্ত ন্যূনতম-কমপ্লায়েন্ট ইমপ্লিমেন্টেশনকে অবশ্যই AES-128-CTR অ্যালগরিদম সমর্থন করতে হবে, যা এভাবে নির্দেশিত হয়:
- `cipher: aes-128-ctr`
-এই সাইফারটি নিম্নলিখিত প্যারামিটারগুলি গ্রহণ করে, যা cipherparams কী-এর কী হিসাবে দেওয়া হয়েছে:
+এই সাইফারটি নিচের প্যারামিটারগুলো নেয়, যা cipherparams কি-এর কি হিসেবে দেওয়া হয়:
- `iv`: সাইফারের জন্য 128-বিট ইনিশিয়ালাইজেশন ভেক্টর।
-সাইফারের জন্য কী হলো ডিরাইভড কী-এর বামদিকের 16 বাইট, অর্থাৎ `DK[0..15]`
+সাইফারের জন্য কি হলো ডিরাইভড কি-এর বামদিকের 16 বাইট, অর্থাৎ, `DK[0..15]`
-একটি গোপন কী-এর তৈরি/এনক্রিপশন মূলত এই নির্দেশাবলীর বিপরীত হওয়া উচিত। নিশ্চিত করুন যে `uuid`, `salt` এবং `iv` প্রকৃতপক্ষে র্যান্ডম।
+একটি সিক্রেট কি তৈরি/এনক্রিপশন মূলত এই নির্দেশাবলীর বিপরীত হওয়া উচিত। নিশ্চিত করুন যে `uuid`, `salt` এবং `iv` আসলেই র্যান্ডম।
-`version` ফিল্ড ছাড়াও, যা সংস্করণের একটি "হার্ড" শনাক্তকারী হিসাবে কাজ করা উচিত, ইমপ্লিমেন্টেশনগুলি ফরম্যাটের ছোটখাটো, নন-ব্রেকিং পরিবর্তনগুলি ট্র্যাক করার জন্য `minorversion`-ও ব্যবহার করতে পারে।
+`version` ফিল্ডের পাশাপাশি, যা সংস্করণের একটি "হার্ড" আইডেন্টিফায়ার হিসেবে কাজ করা উচিত, ইমপ্লিমেন্টেশনগুলো ফরম্যাটের ছোট, নন-ব্রেকিং পরিবর্তনগুলো ট্র্যাক করতে `minorversion` ও ব্যবহার করতে পারে।
## টেস্ট ভেক্টর {#test-vectors}
-বিবরণ:
+বিস্তারিত:
- `Address`: `008aeeda4d805471df9b2a5b0f38a0c3bcba786b`
- `ICAP`: `XE542A5PZHH8PYIZUBEJEO0MFWRAPPIL67`
@@ -86,7 +85,7 @@ KECCAK(DK[16..31] ++ )
`AES-128-CTR` এবং `PBKDF2-SHA-256` ব্যবহার করে টেস্ট ভেক্টর:
-`~/.web3/keystore/3198bc9c-6672-5ab3-d9954942343ae5b6.json` ফাইলের বিষয়বস্তু:
+`~/.web3/keystore/3198bc9c-6672-5ab3-d9954942343ae5b6.json` এর ফাইল কন্টেন্ট:
```json
{
@@ -110,12 +109,12 @@ KECCAK(DK[16..31] ++ )
}
```
-**ইন্টারমিডিয়েট**:
+**ইন্টারমিডিয়েটস**:
-`ডিরাইভড কী`: `f06d69cdc7da0faffb1008270bca38f5e31891a3a773950e6d0fea48a7188551`
-`MAC বডি`: `e31891a3a773950e6d0fea48a71885515318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46`
+`Derived key`: `f06d69cdc7da0faffb1008270bca38f5e31891a3a773950e6d0fea48a7188551`
+`MAC Body`: `e31891a3a773950e6d0fea48a71885515318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46`
`MAC`: `517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2`
-`সাইফার কী`: `f06d69cdc7da0faffb1008270bca38f5`
+`Cipher key`: `f06d69cdc7da0faffb1008270bca38f5`
### Scrypt {#scrypt}
@@ -144,27 +143,27 @@ AES-128-CTR এবং Scrypt ব্যবহার করে টেস্ট ভ
}
```
-**ইন্টারমিডিয়েট**:
+**ইন্টারমিডিয়েটস**:
-`ডিরাইভড কী`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d`
-`MAC বডি`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2`
+`Derived key`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d`
+`MAC Body`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2`
`MAC`: `337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c`
-`সাইফার কী`: `7446f59ecc301d2d79bc3302650d8a5c`
+`Cipher key`: `7446f59ecc301d2d79bc3302650d8a5c`
-## সংস্করণ 1 থেকে পরিবর্তন {#alterations-from-v2}
+## সংস্করণ 1 থেকে পরিবর্তনসমূহ {#alterations-from-v2}
-এই সংস্করণটি [এখানে](https://github.com/ethereum/homestead-guide/blob/master/old-docs-for-reference/go-ethereum-wiki.rst/Passphrase-protected-key-store-spec.rst) প্রকাশিত সংস্করণ 1-এর সাথে থাকা বিভিন্ন অসংগতি সংশোধন করে। সংক্ষেপে এগুলি হল:
+এই সংস্করণটি [এখানে](https://github.com/ethereum/homestead-guide/blob/master/old-docs-for-reference/go-ethereum-wiki.rst/Passphrase-protected-key-store-spec.rst) প্রকাশিত সংস্করণ 1 এর বেশ কয়েকটি অসঙ্গতি ঠিক করে। সংক্ষেপে এগুলো হলো:
-- ক্যাপিটালাইজেশন অযৌক্তিক এবং অসংগতিপূর্ণ (scrypt ছোট হাতের, Kdf মিশ্র-কেস, MAC বড় হাতের)।
-- ঠিকানা অপ্রয়োজনীয় এবং গোপনীয়তার সাথে আপোস করে।
-- `Salt` মূলত কী ডিরাইভেশন ফাংশনের একটি প্যারামিটার এবং এটি সাধারণভাবে ক্রিপ্টোর সাথে নয়, বরং এটির সাথেই যুক্ত থাকা উচিত।
-- _SaltLen_ অপ্রয়োজনীয় (শুধু Salt থেকে এটি ডিরাইভ করুন)।
-- কী ডিরাইভেশন ফাংশন দেওয়া আছে, তবুও ক্রিপ্টো অ্যালগরিদমটি কঠোরভাবে নির্দিষ্ট করা আছে।
-- `Version` মূলত সংখ্যাসূচক হলেও এটি একটি স্ট্রিং (একটি স্ট্রিং দিয়ে স্ট্রাকচার্ড সংস্করণ সম্ভব, কিন্তু কদাচিৎ পরিবর্তনশীল কনফিগারেশন ফাইল ফরম্যাটের জন্য এটি স্কোপের বাইরে বলে বিবেচনা করা যেতে পারে)।
-- `KDF` এবং `cipher` ধারণাগতভাবে সহোদর ধারণা হলেও ভিন্নভাবে সংগঠিত।
-- `MAC` একটি হোয়াইটস্পেস অজ্ঞেয় ডেটা খণ্ডের মাধ্যমে গণনা করা হয়(!)
+- ক্যাপিটালাইজেশন অযৌক্তিক এবং অসঙ্গতিপূর্ণ (scrypt ছোট হাতের অক্ষর, Kdf মিশ্র-হাতের অক্ষর, MAC বড় হাতের অক্ষর)।
+- এডড্রেস অপ্রয়োজনীয় এবং গোপনীয়তার সাথে আপস করে।
+- `Salt` মূলত কি ডিরাইভেশন ফাংশনের একটি প্যারামিটার এবং এটি সাধারণভাবে ক্রিপ্টোর সাথে নয়, বরং এর সাথেই যুক্ত হওয়া উচিত।
+- _SaltLen_ অপ্রয়োজনীয় (এটি শুধু Salt থেকে ডিরাইভ করুন)।
+- কি ডিরাইভেশন ফাংশন দেওয়া আছে, তবুও ক্রিপ্টো অ্যালগরিদম হার্ড স্পেসিফাইড।
+- `Version` মূলত সংখ্যাসূচক হওয়া সত্ত্বেও এটি একটি স্ট্রিং (একটি স্ট্রিং দিয়ে স্ট্রাকচার্ড ভার্সনিং সম্ভব হতে পারে, তবে খুব কম পরিবর্তন হওয়া কনফিগারেশন ফাইল ফরম্যাটের জন্য এটিকে স্কোপের বাইরে বিবেচনা করা যেতে পারে)।
+- `KDF` এবং `cipher` ধারণাগতভাবে সমতুল্য (sibling) কনসেপ্ট হওয়া সত্ত্বেও এগুলো ভিন্নভাবে সাজানো হয়েছে।
+- `MAC` একটি হোয়াইটস্পেস অ্যাগনোস্টিক ডেটার মাধ্যমে গণনা করা হয়(!)
-পূর্বে লিঙ্ক করা পৃষ্ঠায় দেওয়া উদাহরণের সাথে কার্যকরীভাবে সমতুল্য নিম্নলিখিত ফাইলটি দেওয়ার জন্য ফরম্যাটে পরিবর্তন করা হয়েছে:
+আগে লিঙ্ক করা পৃষ্ঠায় দেওয়া উদাহরণের সাথে কার্যকরীভাবে সমতুল্য নিচের ফাইলটি দেওয়ার জন্য ফরম্যাটে পরিবর্তন করা হয়েছে:
```json
{
@@ -190,6 +189,6 @@ AES-128-CTR এবং Scrypt ব্যবহার করে টেস্ট ভ
}
```
-## সংস্করণ 2 থেকে পরিবর্তন {#alterations-from-v2}
+## সংস্করণ 2 থেকে পরিবর্তনসমূহ {#alterations-from-v2}
-সংস্করণ 2 ছিল একটি প্রাথমিক C++ ইমপ্লিমেন্টেশন যাতে বেশ কয়েকটি বাগ ছিল। এর থেকে সমস্ত অপরিহার্য বিষয় অপরিবর্তিত রয়েছে।
+সংস্করণ 2 ছিল বেশ কয়েকটি বাগ সহ একটি প্রাথমিক C++ ইমপ্লিমেন্টেশন। এর থেকে সমস্ত প্রয়োজনীয় বিষয় অপরিবর্তিত রয়েছে।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/design-and-ux/dex-design-best-practice/index.md b/public/content/translations/bn/developers/docs/design-and-ux/dex-design-best-practice/index.md
index ac71f8ff27c..a4132f31f47 100644
--- a/public/content/translations/bn/developers/docs/design-and-ux/dex-design-best-practice/index.md
+++ b/public/content/translations/bn/developers/docs/design-and-ux/dex-design-best-practice/index.md
@@ -1,220 +1,217 @@
---
-title: "বিকেন্দ্রীভূত এক্সচেঞ্জ (DEX) ডিজাইনের সেরা অনুশীলন"
-description: "টোকেন সোয়াপ করার জন্য UX/UI সিদ্ধান্ত ব্যাখ্যা করার একটি নির্দেশিকা।"
+title: ডিসেন্ট্রালাইজড এক্সচেঞ্জ (DEX) ডিজাইনের সেরা অনুশীলন
+description: টোকেন সোয়াপ করার জন্য UX/UI সিদ্ধান্তগুলো ব্যাখ্যাকারী একটি গাইড।
lang: bn
---
-2018 সালে Uniswap চালু হওয়ার পর থেকে, কয়েক ডজন বিভিন্ন চেইন জুড়ে শত শত বিকেন্দ্রীভূত এক্সচেঞ্জ চালু হয়েছে।
-এর মধ্যে অনেকগুলি নতুন উপাদান প্রবর্তন করেছে বা তাদের নিজস্ব টুইস্ট যুক্ত করেছে, কিন্তু ইন্টারফেসটি সাধারণত একই রকম রয়েছে।
+2018 সালে Uniswap চালু হওয়ার পর থেকে, ডজন ডজন বিভিন্ন চেইনে শত শত ডিসেন্ট্রালাইজড এক্সচেঞ্জ চালু হয়েছে।
+এগুলোর মধ্যে অনেকগুলোই নতুন উপাদান নিয়ে এসেছে বা তাদের নিজস্ব বৈশিষ্ট্য যোগ করেছে, কিন্তু ইন্টারফেসটি সাধারণত একই রকম রয়ে গেছে।
-এর একটি কারণ হলো [জ্যাকবের আইন](https://lawsofux.com/jakobs-law/):
+এর একটি কারণ হলো [Jakob’s Law](https://lawsofux.com/jakobs-law/):
-> ব্যবহারকারীরা তাদের বেশিরভাগ সময় অন্যান্য সাইটে ব্যয় করে। এর মানে হল যে ব্যবহারকারীরা আপনার সাইটটিকে তাদের পরিচিত অন্যান্য সমস্ত সাইটের মতো একইভাবে কাজ করতে পছন্দ করে।
+> ব্যবহারকারীরা তাদের বেশিরভাগ সময় অন্যান্য সাইটে ব্যয় করে। এর মানে হলো ব্যবহারকারীরা চায় আপনার সাইটটিও তাদের পরিচিত অন্যান্য সাইটের মতোই কাজ করুক।
-Uniswap, Pancakeswap এবং Sushiswap-এর মতো প্রাথমিক উদ্ভাবকদের ধন্যবাদ, DeFi ব্যবহারকারীদের একটি DEX দেখতে কেমন তার একটি সম্মিলিত ধারণা রয়েছে।
-এই কারণে, "সেরা অনুশীলন" এর মতো কিছু এখন উদ্ভূত হচ্ছে। আমরা দেখতে পাই যে সাইট জুড়ে আরও বেশি করে ডিজাইনের সিদ্ধান্তগুলি মানসম্মত করা হচ্ছে। আপনি DEXes-এর বিবর্তনকে লাইভ পরীক্ষা করার একটি বিশাল উদাহরণ হিসেবে দেখতে পারেন। যে জিনিসগুলি কাজ করেছে সেগুলি থেকে গেছে, যেগুলি কাজ করেনি, সেগুলি ফেলে দেওয়া হয়েছে। ব্যক্তিত্বের জন্য এখনও জায়গা আছে, তবে কিছু নির্দিষ্ট মান রয়েছে যা একটি DEX-কে মেনে চলতে হবে।
+Uniswap, Pancakeswap এবং Sushiswap-এর মতো প্রাথমিক উদ্ভাবকদের ধন্যবাদ, DeFi ব্যবহারকারীদের একটি সাধারণ ধারণা আছে যে একটি DEX দেখতে কেমন হয়।
+এই কারণে, এখন "সেরা অনুশীলন" এর মতো কিছু একটা তৈরি হচ্ছে। আমরা দেখছি যে সাইটগুলোতে আরও বেশি ডিজাইনের সিদ্ধান্ত প্রমিত (standardized) হচ্ছে। আপনি DEX-এর বিবর্তনকে লাইভ টেস্টিংয়ের একটি বিশাল উদাহরণ হিসেবে দেখতে পারেন। যে বিষয়গুলো কাজ করেছে সেগুলো রয়ে গেছে, আর যেগুলো করেনি, সেগুলো বাদ দেওয়া হয়েছে। এখনও নিজস্বতা দেখানোর সুযোগ রয়েছে, তবে কিছু নির্দিষ্ট মান রয়েছে যা একটি DEX-এর মেনে চলা উচিত।
-এই নিবন্ধটি এর একটি সারসংক্ষেপ:
+এই আর্টিকেলটি নিচের বিষয়গুলোর একটি সারসংক্ষেপ:
+- কী কী অন্তর্ভুক্ত করতে হবে
+- কীভাবে এটিকে যতটা সম্ভব ব্যবহারযোগ্য করা যায়
+- ডিজাইন কাস্টমাইজ করার প্রধান উপায়গুলো
-- কী অন্তর্ভুক্ত করতে হবে
-- কীভাবে এটিকে যথাসম্ভব ব্যবহারযোগ্য করে তোলা যায়
-- ডিজাইন কাস্টমাইজ করার প্রধান উপায়
+উদাহরণ হিসেবে দেওয়া সব ওয়্যারফ্রেম বিশেষভাবে এই আর্টিকেলের জন্য তৈরি করা হয়েছে, যদিও এগুলো সবই বাস্তব প্রজেক্টের ওপর ভিত্তি করে তৈরি।
-সমস্ত উদাহরণ ওয়্যারফ্রেমগুলি বিশেষভাবে এই নিবন্ধটির জন্য তৈরি করা হয়েছিল, যদিও সেগুলি সবই বাস্তব প্রকল্পের উপর ভিত্তি করে তৈরি।
+নিচে Figma কিটটিও দেওয়া হয়েছে - নির্দ্বিধায় এটি ব্যবহার করুন এবং আপনার নিজের ওয়্যারফ্রেম তৈরির কাজ দ্রুত করুন!
-Figma কিটটি নীচে অন্তর্ভুক্ত করা হয়েছে - এটি ব্যবহার করতে এবং আপনার নিজের ওয়্যারফ্রেমগুলির গতি বাড়াতে দ্বিধা বোধ করবেন না!
-
-## একটি DEX-এর মৌলিক অ্যানাটমি {#basic-anatomy-of-a-dex}
+## একটি DEX-এর প্রাথমিক গঠন {#basic-anatomy-of-a-dex}
UI-তে সাধারণত তিনটি উপাদান থাকে:
+1. মূল ফর্ম (Main form)
+2. বাটন (Button)
+3. বিস্তারিত প্যানেল (Details panel)
-1. প্রধান ফর্ম
-2. বোতাম
-3. বিস্তারিত প্যানেল
-
-
-
-## ভিন্নতা {#variations}
-
-এই নিবন্ধে এটি একটি সাধারণ থিম হবে, তবে এই উপাদানগুলি সংগঠিত করার বিভিন্ন উপায় রয়েছে। “বিস্তারিত প্যানেল” হতে পারে:
+
-- বোতামের উপরে
-- বোতামের নীচে
-- একটি অ্যাকর্ডিয়ন প্যানেলে লুকানো
-- এবং/অথবা একটি “প্রিভিউ” মডালে
-N.B. একটি “প্রিভিউ” মডাল ঐচ্ছিক, তবে আপনি যদি মূল UI-তে খুব কম বিশদ বিবরণ দেখান তবে এটি অপরিহার্য হয়ে ওঠে।
+## ভ্যারিয়েশন {#variations}
-## প্রধান ফর্মের কাঠামো {#structure-of-the-main-form}
+এটি এই আর্টিকেলের একটি সাধারণ বিষয় হবে, তবে এই উপাদানগুলোকে বিভিন্ন উপায়ে সাজানো যেতে পারে। "বিস্তারিত প্যানেল" হতে পারে:
+- বাটনের ওপরে
+- বাটনের নিচে
+- একটি অ্যাকর্ডিয়ন প্যানেলে লুকানো
+- এবং/অথবা একটি "প্রিভিউ" মোডালে
+
+বি.দ্র. একটি "প্রিভিউ" মোডাল ঐচ্ছিক, তবে আপনি যদি মূল UI-তে খুব কম বিস্তারিত তথ্য দেখান, তবে এটি অপরিহার্য হয়ে ওঠে।
-এটি সেই বক্স যেখানে আপনি আসলে কোন টোকেনটি সোয়াপ করতে চান তা বেছে নেন। কম্পোনেন্টটিতে একটি ইনপুট ফিল্ড এবং একটি সারিতে একটি ছোট বোতাম রয়েছে।
+## মূল ফর্মের গঠন {#structure-of-the-main-form}
-DEX গুলি সাধারণত উপরে একটি এবং নীচে একটি সারিতে অতিরিক্ত বিবরণ প্রদর্শন করে, যদিও এটি ভিন্নভাবে কনফিগার করা যেতে পারে।
+এটি সেই বক্স যেখানে আপনি আসলে বেছে নেন কোন টোকেনটি আপনি সোয়াপ করতে চান। এই উপাদানটি একটি ইনপুট ফিল্ড এবং একটি সারিতে থাকা ছোট বাটন নিয়ে গঠিত।
-
+DEX-গুলো সাধারণত ওপরে একটি সারিতে এবং নিচে একটি সারিতে অতিরিক্ত বিস্তারিত তথ্য প্রদর্শন করে, যদিও এটি ভিন্নভাবেও কনফিগার করা যেতে পারে।
-## ভিন্নতা {#variations2}
+
-এখানে দুটি UI ভিন্নতা দেখানো হয়েছে; একটি কোনো সীমানা ছাড়াই, একটি খুব খোলা ডিজাইন তৈরি করে এবং অন্যটি যেখানে ইনপুট সারিতে একটি সীমানা রয়েছে, যা সেই উপাদানের উপর একটি ফোকাস তৈরি করে।
+## ভ্যারিয়েশন {#variations2}
-
+এখানে দুটি UI ভ্যারিয়েশন দেখানো হয়েছে; একটি কোনো বর্ডার ছাড়া, যা একটি খুব উন্মুক্ত ডিজাইন তৈরি করে, এবং অন্যটিতে ইনপুট সারিতে একটি বর্ডার রয়েছে, যা সেই উপাদানটির ওপর ফোকাস তৈরি করে।
-এই মৌলিক কাঠামোটি ডিজাইনে **চারটি মূল তথ্যের অংশ** দেখানোর অনুমতি দেয়: প্রতিটি কোণে একটি। যদি কেবল একটি উপরের/নীচের সারি থাকে, তবে কেবল দুটি জায়গা থাকে।
+
-DeFi-এর বিবর্তনের সময়, এখানে বিভিন্ন ধরনের জিনিস অন্তর্ভুক্ত করা হয়েছে।
+এই প্রাথমিক গঠনটি ডিজাইনে **চারটি মূল তথ্য** দেখানোর সুযোগ দেয়: প্রতিটি কোণায় একটি করে। যদি ওপরে/নিচে কেবল একটি সারি থাকে, তবে কেবল দুটি জায়গা থাকে।
-## অন্তর্ভুক্ত করার জন্য মূল তথ্য {#key-info-to-include}
+DeFi-এর বিবর্তনের সময়, এখানে অনেক ভিন্ন ভিন্ন বিষয় অন্তর্ভুক্ত করা হয়েছে।
-- ওয়ালেটের ব্যালেন্স
-- সর্বোচ্চ বোতাম
-- ফিয়াট সমতুল্য
-- “প্রাপ্ত” পরিমাণের উপর মূল্যের প্রভাব
+## যে মূল তথ্যগুলো অন্তর্ভুক্ত করতে হবে {#key-info-to-include}
-DeFi-এর প্রথম দিকে, ফিয়াট সমতুল্য প্রায়ই অনুপস্থিত ছিল। আপনি যদি কোনো ধরনের Web3 প্রকল্প তৈরি করেন, তাহলে ফিয়াট সমতুল্য দেখানো অপরিহার্য। ব্যবহারকারীরা এখনও স্থানীয় মুদ্রার পরিপ্রেক্ষিতে চিন্তা করে, তাই বাস্তব বিশ্বের মানসিক মডেলগুলির সাথে মেলানোর জন্য, এটি অন্তর্ভুক্ত করা উচিত।
+- ওয়ালেট ব্যালেন্স
+- ম্যাক্স (Max) বাটন
+- ফিয়াট সমতুল্য (Fiat equivalent)
+- "প্রাপ্ত" পরিমাণের ওপর প্রাইস ইমপ্যাক্ট (Price impact)
-দ্বিতীয় ফিল্ডে (যেখানে আপনি যে টোকেনটি সোয়াপ করছেন তা বেছে নেন) আপনি ইনপুট পরিমাণ এবং আনুমানিক আউটপুট পরিমাণের মধ্যে পার্থক্য গণনা করে ফিয়াট মুদ্রার পরিমাণের পাশে মূল্যের প্রভাবও অন্তর্ভুক্ত করতে পারেন। এটি অন্তর্ভুক্ত করার জন্য বেশ একটি দরকারী বিবরণ।
+DeFi-এর শুরুর দিকে, ফিয়াট সমতুল্য প্রায়ই অনুপস্থিত থাকত। আপনি যদি কোনো ধরনের ওয়েব3 প্রজেক্ট তৈরি করেন, তবে ফিয়াট সমতুল্য দেখানো অপরিহার্য। ব্যবহারকারীরা এখনও স্থানীয় মুদ্রার হিসেবে চিন্তা করে, তাই বাস্তব জগতের মানসিক মডেলের সাথে মেলাতে এটি অন্তর্ভুক্ত করা উচিত।
-শতাংশ বোতাম (যেমন, 25%, 50%, 75%) একটি দরকারী বৈশিষ্ট্য হতে পারে, তবে তারা আরও জায়গা নেয়, আরও কল টু অ্যাকশন যোগ করে এবং আরও মানসিক চাপ বাড়ায়। শতাংশ স্লাইডারের ক্ষেত্রেও একই। এই UI সিদ্ধান্তগুলির মধ্যে কিছু আপনার ব্র্যান্ড এবং আপনার ব্যবহারকারীর ধরনের উপর নির্ভর করবে।
+দ্বিতীয় ফিল্ডে (যেখানে আপনি যে টোকেনে সোয়াপ করছেন তা বেছে নেন) আপনি ইনপুট পরিমাণ এবং আনুমানিক আউটপুট পরিমাণের মধ্যে পার্থক্য হিসাব করে ফিয়াট মুদ্রার পরিমাণের পাশে প্রাইস ইমপ্যাক্টও অন্তর্ভুক্ত করতে পারেন। এটি অন্তর্ভুক্ত করার জন্য বেশ দরকারী একটি তথ্য।
-অতিরিক্ত বিবরণ প্রধান ফর্মের নীচে দেখানো যেতে পারে। যেহেতু এই ধরনের তথ্য বেশিরভাগ প্রো ব্যবহারকারীদের জন্য, তাই এর কোনো একটি অর্থপূর্ণ:
+শতাংশ বাটন (যেমন, 25%, 50%, 75%) একটি দরকারী ফিচার হতে পারে, তবে এগুলো বেশি জায়গা নেয়, আরও বেশি কল টু অ্যাকশন যোগ করে এবং মানসিক চাপ বাড়ায়। শতাংশ স্লাইডারের ক্ষেত্রেও একই কথা প্রযোজ্য। এই UI সিদ্ধান্তগুলোর কিছু আপনার ব্র্যান্ড এবং আপনার ব্যবহারকারীর ধরনের ওপর নির্ভর করবে।
-- এটিকে যতটা সম্ভব ন্যূনতম রাখুন, বা;
-- এটিকে একটি অ্যাকর্ডিয়ন প্যানেলে লুকান
+অতিরিক্ত বিস্তারিত তথ্য মূল ফর্মের নিচে দেখানো যেতে পারে। যেহেতু এই ধরনের তথ্য বেশিরভাগই প্রো ব্যবহারকারীদের জন্য, তাই এটি করা যৌক্তিক:
+- এটিকে যতটা সম্ভব সংক্ষিপ্ত রাখা, অথবা;
+- এটিকে একটি অ্যাকর্ডিয়ন প্যানেলে লুকিয়ে রাখা
-
+
-## অন্তর্ভুক্ত করার জন্য অতিরিক্ত তথ্য {#extra-info-to-include}
+## যে অতিরিক্ত তথ্য অন্তর্ভুক্ত করতে হবে {#extra-info-to-include}
-- টোকেনের মূল্য
-- স্লিপেজ
-- ন্যূনতম প্রাপ্ত
-- প্রত্যাশিত আউটপুট
-- মূল্যের প্রভাব
-- গ্যাস খরচ অনুমান
+- টোকেন প্রাইস
+- স্লিপেজ (Slippage)
+- সর্বনিম্ন প্রাপ্তি (Minimum received)
+- প্রত্যাশিত আউটপুট (Expected output)
+- প্রাইস ইমপ্যাক্ট (Price impact)
+- আনুমানিক গ্যাস খরচ
- অন্যান্য ফি
-- অর্ডার রাউটিং
+- অর্ডার রাউটিং (Order routing)
-যুক্তিযুক্তভাবে, এই বিবরণগুলির মধ্যে কিছু ঐচ্ছিক হতে পারে।
+যুক্তিসঙ্গতভাবে, এই বিস্তারিত তথ্যের কিছু ঐচ্ছিক হতে পারে।
-অর্ডার রাউটিং আকর্ষণীয়, কিন্তু বেশিরভাগ ব্যবহারকারীর জন্য খুব বেশি পার্থক্য তৈরি করে না।
+অর্ডার রাউটিং আকর্ষণীয়, তবে বেশিরভাগ ব্যবহারকারীর জন্য এটি খুব একটা পার্থক্য তৈরি করে না।
-কিছু অন্যান্য বিবরণ কেবল একই জিনিসকে ভিন্ন উপায়ে পুনর্ব্যক্ত করছে। উদাহরণস্বরূপ “ন্যূনতম প্রাপ্ত” এবং “স্লিপেজ” একই মুদ্রার দুটি পিঠ। যদি আপনার স্লিপেজ 1% এ সেট করা থাকে, তাহলে আপনি যে সর্বনিম্ন পরিমাণ পাওয়ার আশা করতে পারেন = প্রত্যাশিত আউটপুট-1%। কিছু UI প্রত্যাশিত পরিমাণ, সর্বনিম্ন পরিমাণ এবং স্লিপেজ দেখাবে… যা দরকারী কিন্তু সম্ভবত অতিরিক্ত।
+অন্যান্য কিছু বিস্তারিত তথ্য কেবল একই জিনিসকে ভিন্ন উপায়ে পুনরায় বলা। উদাহরণস্বরূপ "সর্বনিম্ন প্রাপ্তি" এবং "স্লিপেজ" একই মুদ্রার এপিঠ-ওপিঠ। যদি আপনার স্লিপেজ 1% এ সেট করা থাকে, তবে আপনি সর্বনিম্ন যা পাওয়ার আশা করতে পারেন = প্রত্যাশিত আউটপুট-1%। কিছু UI প্রত্যাশিত পরিমাণ, সর্বনিম্ন পরিমাণ এবং স্লিপেজ দেখাবে... যা দরকারী তবে সম্ভবত প্রয়োজনের চেয়ে বেশি।
-যাইহোক, বেশিরভাগ ব্যবহারকারী ডিফল্ট স্লিপেজ ছেড়ে দেবে।
+বেশিরভাগ ব্যবহারকারী ডিফল্ট স্লিপেজই রেখে দেবেন।
-“মূল্যের প্রভাব” প্রায়শই “টু” ফিল্ডে ফিয়াট সমতুল্যের পাশে বন্ধনীতে দেখানো হয়। এটি যোগ করার জন্য একটি দুর্দান্ত ux বিবরণ, কিন্তু যদি এটি এখানে দেখানো হয়, তবে কি এটি সত্যিই নীচে আবার দেখানোর প্রয়োজন আছে? এবং তারপর আবার একটি প্রিভিউ স্ক্রিনে?
+"প্রাইস ইমপ্যাক্ট" প্রায়ই "to" ফিল্ডে ফিয়াট সমতুল্যের পাশে ব্র্যাকেটে দেখানো হয়। এটি যোগ করার জন্য একটি দুর্দান্ত UX ডিটেইল, তবে এটি যদি এখানে দেখানো হয়, তবে কি এটি নিচে আবার দেখানোর সত্যিই প্রয়োজন আছে? এবং তারপর আবার একটি প্রিভিউ স্ক্রিনে?
-অনেক ব্যবহারকারী (বিশেষ করে যারা অল্প পরিমাণে সোয়াপ করে) এই বিবরণগুলি নিয়ে চিন্তা করবে না; তারা কেবল একটি সংখ্যা প্রবেশ করাবে এবং সোয়াপ চাপবে।
+অনেক ব্যবহারকারী (বিশেষ করে যারা অল্প পরিমাণ সোয়াপ করছেন) এই বিস্তারিত তথ্যগুলো নিয়ে মাথা ঘামাবেন না; তারা কেবল একটি সংখ্যা লিখবেন এবং সোয়াপ বাটনে চাপবেন।
-
+
-ঠিক কোন বিবরণ দেখানো হবে তা আপনার দর্শক এবং অ্যাপটির কেমন অনুভূতি দিতে চান তার উপর নির্ভর করবে।
+ঠিক কী কী বিস্তারিত তথ্য দেখানো হবে তা নির্ভর করবে আপনার অডিয়েন্স এবং আপনি অ্যাপটিতে কেমন অনুভূতি দিতে চান তার ওপর।
-আপনি যদি বিশদ প্যানেলে স্লিপেজ টলারেন্স অন্তর্ভুক্ত করেন, তবে আপনার এটিকে সরাসরি এখান থেকে সম্পাদনাযোগ্য করা উচিত। এটি একটি “এক্সিলারেটর”-এর একটি ভাল উদাহরণ; একটি নিট UX কৌশল যা অ্যাপটির সাধারণ ব্যবহারযোগ্যতাকে প্রভাবিত না করে অভিজ্ঞ ব্যবহারকারীদের প্রবাহকে ত্বরান্বিত করতে পারে।
+আপনি যদি বিস্তারিত প্যানেলে স্লিপেজ টলারেন্স অন্তর্ভুক্ত করেন, তবে আপনার এটি সরাসরি এখান থেকে এডিট করার ব্যবস্থাও রাখা উচিত। এটি একটি "অ্যাক্সিলারেটর"-এর ভালো উদাহরণ; একটি চমৎকার UX ট্রিক যা অ্যাপের সাধারণ ব্যবহারযোগ্যতাকে প্রভাবিত না করেই অভিজ্ঞ ব্যবহারকারীদের ফ্লো দ্রুত করতে পারে।
-
+
-শুধু একটি স্ক্রিনে একটি নির্দিষ্ট তথ্যের অংশ নিয়ে নয়, বরং সম্পূর্ণ প্রবাহ সম্পর্কে সাবধানে চিন্তা করা একটি ভাল ধারণা:
-প্রধান ফর্মে সংখ্যা প্রবেশ করানো → বিশদ স্ক্যান করা → প্রিভিউ স্ক্রিনে ক্লিক করা (যদি আপনার প্রিভিউ স্ক্রিন থাকে)।
-বিশদ প্যানেলটি কি সব সময় দৃশ্যমান হওয়া উচিত, নাকি ব্যবহারকারীকে এটি প্রসারিত করতে ক্লিক করতে হবে?
-আপনার কি একটি প্রিভিউ স্ক্রিন যোগ করে ঘর্ষণ তৈরি করা উচিত? এটি ব্যবহারকারীকে ধীর হতে এবং তাদের ট্রেড বিবেচনা করতে বাধ্য করে, যা দরকারী হতে পারে। কিন্তু তারা কি আবার একই তথ্য দেখতে চায়? এই মুহূর্তে তাদের জন্য সবচেয়ে দরকারী কী?
+কেবল একটি স্ক্রিনে একটি নির্দিষ্ট তথ্য নিয়ে নয়, বরং পুরো ফ্লো নিয়ে সাবধানে চিন্তা করা একটি ভালো ধারণা:
+মূল ফর্মে সংখ্যা লেখা → বিস্তারিত তথ্য স্ক্যান করা → প্রিভিউ স্ক্রিনে ক্লিক করা (যদি আপনার প্রিভিউ স্ক্রিন থাকে)।
+বিস্তারিত প্যানেল কি সবসময় দৃশ্যমান থাকা উচিত, নাকি ব্যবহারকারীকে এটি প্রসারিত করতে ক্লিক করতে হবে?
+আপনার কি একটি প্রিভিউ স্ক্রিন যোগ করে ফ্রিকশন তৈরি করা উচিত? এটি ব্যবহারকারীকে ধীর হতে এবং তাদের ট্রেড বিবেচনা করতে বাধ্য করে, যা দরকারী হতে পারে। কিন্তু তারা কি আবার একই তথ্য দেখতে চায়? এই মুহূর্তে তাদের জন্য সবচেয়ে দরকারী কী?
-## ডিজাইন বিকল্প {#design-options}
+## ডিজাইন অপশন {#design-options}
-যেমন উল্লেখ করা হয়েছে, এর বেশিরভাগই আপনার ব্যক্তিগত শৈলীর উপর নির্ভর করে
+যেমনটি উল্লেখ করা হয়েছে, এর অনেকটাই আপনার ব্যক্তিগত স্টাইলের ওপর নির্ভর করে
আপনার ব্যবহারকারী কে?
-আপনার ব্র্যান্ড কি?
-আপনি কি প্রতিটি বিবরণ দেখানো একটি “প্রো” ইন্টারফেস চান, নাকি আপনি ন্যূনতম হতে চান?
-এমনকি যদি আপনি প্রো ব্যবহারকারীদের লক্ষ্য করেন যারা সম্ভাব্য সমস্ত তথ্য চায়, আপনার এখনও অ্যালান কুপারের বিজ্ঞ কথাগুলি মনে রাখা উচিত:
+আপনার ব্র্যান্ড কী?
+আপনি কি প্রতিটি বিস্তারিত তথ্য দেখানো একটি "প্রো" ইন্টারফেস চান, নাকি আপনি মিনিমালিস্ট হতে চান?
+এমনকি আপনি যদি প্রো ব্যবহারকারীদের লক্ষ্য করেন যারা সম্ভাব্য সব তথ্য চায়, তবুও আপনার অ্যালান কুপারের (Alan Cooper) জ্ঞানী কথাগুলো মনে রাখা উচিত:
-> আপনার ইন্টারফেস যতই সুন্দর হোক, যতই শীতল হোক না কেন, যদি এর কম থাকত তবে ভাল হত।
+> আপনার ইন্টারফেস যতই সুন্দর হোক না কেন, যতই আকর্ষণীয় হোক না কেন, এটি যত কম হবে ততই ভালো।
-### কাঠামো {#structure}
+### গঠন {#structure}
-- বাম দিকে টোকেন, বা ডান দিকে টোকেন
-- ২টি সারি বা ৩টি
-- বোতামের উপরে বা নীচে বিশদ
-- বিশদ প্রসারিত, ছোট করা, বা দেখানো হয়নি
+- টোকেন বাম দিকে, নাকি টোকেন ডান দিকে
+- 2টি সারি নাকি 3টি
+- বিস্তারিত তথ্য বাটনের ওপরে নাকি নিচে
+- বিস্তারিত তথ্য প্রসারিত, সংকুচিত, নাকি দেখানো হয়নি
-### কম্পোনেন্ট শৈলী {#component-style}
+### কম্পোনেন্ট স্টাইল {#component-style}
-- খালি
-- আউটলাইন করা
-- ভরা
+- ফাঁকা (empty)
+- আউটলাইন করা (outlined)
+- ভরাট করা (filled)
-একটি বিশুদ্ধ UX দৃষ্টিকোণ থেকে, UI শৈলী আপনার ভাবনার চেয়ে কম গুরুত্বপূর্ণ। ভিজ্যুয়াল ট্রেন্ডগুলি চক্রাকারে আসে এবং যায়, এবং অনেক পছন্দই ব্যক্তিগত।
+একটি বিশুদ্ধ UX দৃষ্টিকোণ থেকে, UI স্টাইল আপনার ভাবনার চেয়ে কম গুরুত্বপূর্ণ। ভিজ্যুয়াল ট্রেন্ডগুলো চক্রাকারে আসে এবং যায়, এবং অনেক পছন্দই বিষয়ভিত্তিক (subjective)।
-এর জন্য একটি অনুভূতি পেতে - এবং বিভিন্ন কনফিগারেশন সম্পর্কে চিন্তা করার - সবচেয়ে সহজ উপায় হল কিছু উদাহরণ দেখা এবং তারপর নিজে কিছু পরীক্ষা করা।
+এটি অনুভব করার এবং বিভিন্ন কনফিগারেশন সম্পর্কে চিন্তা করার সবচেয়ে সহজ উপায় হলো কিছু উদাহরণ দেখা এবং তারপর নিজে কিছু পরীক্ষা-নিরীক্ষা করা।
-অন্তর্ভুক্ত Figma কিটটিতে খালি, আউটলাইন করা এবং ভরা কম্পোনেন্ট রয়েছে।
+অন্তর্ভুক্ত Figma কিটে ফাঁকা, আউটলাইন করা এবং ভরাট করা কম্পোনেন্ট রয়েছে।
-আপনি কীভাবে এটি সব একসাথে রাখতে পারেন তার বিভিন্ন উপায় দেখতে নীচের উদাহরণগুলি দেখুন:
+আপনি কীভাবে এগুলোকে একসাথে সাজাতে পারেন তার বিভিন্ন উপায় দেখতে নিচের উদাহরণগুলো দেখুন:
-
+
-
+
-
+
-
+
-
+
-
+
-## কিন্তু টোকেন কোন দিকে যাওয়া উচিত? {#but-which-side-should-the-token-go-on}
+## কিন্তু টোকেন কোন দিকে থাকা উচিত? {#but-which-side-should-the-token-go-on}
-মূল কথা হল যে এটি সম্ভবত ব্যবহারযোগ্যতার উপর খুব বেশি প্রভাব ফেলে না। তবে, কিছু বিষয় মাথায় রাখতে হবে, যা আপনাকে এক দিকে বা অন্য দিকে প্রভাবিত করতে পারে।
+মূল কথা হলো এটি সম্ভবত ব্যবহারযোগ্যতায় খুব বড় কোনো পার্থক্য তৈরি করে না। তবে কিছু বিষয় মনে রাখা উচিত, যা আপনাকে যেকোনো একদিকে প্রভাবিত করতে পারে।
-সময়ের সাথে সাথে ফ্যাশন পরিবর্তন দেখতে কিছুটা আকর্ষণীয় হয়েছে। Uniswap প্রাথমিকভাবে টোকেনটি বাম দিকে রেখেছিল, কিন্তু পরে এটি ডান দিকে সরিয়ে দিয়েছে। Sushiswap-ও একটি ডিজাইন আপগ্রেডের সময় এই পরিবর্তনটি করেছিল। বেশিরভাগ, কিন্তু সব নয়, প্রোটোকলগুলি অনুসরণ করেছে।
+সময়ের সাথে সাথে ফ্যাশনের পরিবর্তন দেখাটা বেশ আকর্ষণীয়। Uniswap-এ শুরুতে টোকেন বাম দিকে ছিল, কিন্তু পরে তা ডান দিকে সরিয়ে নেওয়া হয়েছে। Sushiswap-ও একটি ডিজাইন আপগ্রেডের সময় এই পরিবর্তন করেছে। বেশিরভাগ, তবে সব নয়, প্রটোকল এই পথ অনুসরণ করেছে।
-আর্থিক প্রথা ঐতিহ্যগতভাবে সংখ্যার আগে মুদ্রার প্রতীক রাখে, যেমন, $50, €50, £50, কিন্তু আমরা _বলি_ 50 ডলার, 50 ইউরো, 50 পাউন্ড।
+আর্থিক রীতি ঐতিহ্যগতভাবে সংখ্যার আগে মুদ্রার প্রতীক বসায়, যেমন, $50, €50, £50, কিন্তু আমরা *বলি* 50 ডলার, 50 ইউরো, 50 পাউন্ড।
-সাধারণ ব্যবহারকারীর জন্য - বিশেষ করে যে বাম থেকে ডানে, উপর থেকে নীচে পড়ে - ডানদিকে টোকেন সম্ভবত আরও স্বাভাবিক মনে হয়।
+সাধারণ ব্যবহারকারীর কাছে - বিশেষ করে যারা বাম থেকে ডানে, ওপর থেকে নিচে পড়েন - ডান দিকে টোকেন থাকাটা সম্ভবত বেশি স্বাভাবিক মনে হয়।
-
+
-বাম দিকে টোকেন এবং ডানদিকে সমস্ত সংখ্যা রাখা আনন্দদায়কভাবে প্রতিসম দেখায়, যা একটি প্লাস, তবে এই লেআউটের আরেকটি নেতিবাচক দিক রয়েছে।
+টোকেন বাম দিকে এবং সব সংখ্যা ডান দিকে রাখলে দেখতে সুন্দর প্রতিসম (symmetrical) লাগে, যা একটি ইতিবাচক দিক, তবে এই লেআউটের আরেকটি নেতিবাচক দিকও রয়েছে।
-নৈকট্যের আইন বলে যে কাছাকাছি থাকা আইটেমগুলি সম্পর্কিত হিসাবে বিবেচিত হয়। তদনুসারে, আমরা সম্পর্কিত আইটেমগুলি একে অপরের পাশে রাখতে চাই। টোকেন ব্যালেন্স সরাসরি টোকেনের সাথে সম্পর্কিত, এবং যখনই একটি নতুন টোকেন নির্বাচন করা হবে তখন এটি পরিবর্তিত হবে। তাই টোকেন ব্যালেন্স টোকেন নির্বাচন বোতামের পাশে থাকাটা কিছুটা বেশি অর্থপূর্ণ। এটি টোকেনের নীচে সরানো যেতে পারে, তবে এটি লেআউটের প্রতিসাম্য ভেঙে দেয়।
+নৈকট্যের সূত্র (law of proximity) বলে যে কাছাকাছি থাকা আইটেমগুলোকে সম্পর্কিত হিসেবে ধরা হয়। সেই অনুযায়ী, আমরা সম্পর্কিত আইটেমগুলোকে একে অপরের পাশে রাখতে চাই। টোকেন ব্যালেন্স সরাসরি টোকেনের সাথেই সম্পর্কিত, এবং যখনই নতুন কোনো টোকেন নির্বাচন করা হবে তখনই এটি পরিবর্তিত হবে। তাই টোকেন ব্যালেন্স টোকেন নির্বাচন বাটনের পাশে থাকাটা কিছুটা বেশি যৌক্তিক। এটিকে টোকেনের নিচে সরিয়ে নেওয়া যেতে পারে, তবে এটি লেআউটের প্রতিসাম্য (symmetry) ভেঙে দেয়।
-শেষ পর্যন্ত, উভয় বিকল্পের জন্যই প্লাস এবং মাইনাস রয়েছে, তবে এটি আকর্ষণীয় যে প্রবণতাটি ডানদিকে টোকেনের দিকে বলে মনে হচ্ছে।
+শেষ পর্যন্ত, উভয় অপশনের জন্যই সুবিধা এবং অসুবিধা রয়েছে, তবে এটি আকর্ষণীয় যে ট্রেন্ডটি ডান দিকে টোকেন রাখার দিকেই এগোচ্ছে বলে মনে হচ্ছে।
-## বোতামের আচরণ {#button-behavior}
+## বাটনের আচরণ {#button-behavior}
-অনুমোদনের জন্য একটি পৃথক বোতাম রাখবেন না। এছাড়াও অনুমোদনের জন্য একটি পৃথক ক্লিক রাখবেন না। ব্যবহারকারী সোয়াপ করতে চায়, তাই শুধু বোতামে “সোয়াপ” বলুন এবং প্রথম পদক্ষেপ হিসাবে অনুমোদন শুরু করুন। একটি মডাল একটি স্টেপারের সাথে অগ্রগতি দেখাতে পারে, বা একটি সাধারণ “tx 1 of 2 - approving” বিজ্ঞপ্তি।
+অনুমোদনের (Approve) জন্য আলাদা কোনো বাটন রাখবেন না। এছাড়া অনুমোদনের জন্য আলাদা কোনো ক্লিকও রাখবেন না। ব্যবহারকারী সোয়াপ করতে চান, তাই বাটনে কেবল "swap" লিখুন এবং প্রথম ধাপ হিসেবে অনুমোদন শুরু করুন। একটি মোডাল স্টেপারের মাধ্যমে অগ্রগতি দেখাতে পারে, অথবা একটি সাধারণ "tx 1 of 2 - approving" নোটিফিকেশন দেখাতে পারে।
-
+
-
+
-### প্রাসঙ্গিক সহায়তা হিসাবে বোতাম {#button-as-contextual-help}
+### প্রাসঙ্গিক সাহায্য হিসেবে বাটন {#button-as-contextual-help}
-বোতামটি একটি সতর্কতা হিসাবে দ্বিগুণ দায়িত্ব পালন করতে পারে!
+বাটনটি অ্যালার্ট হিসেবে দ্বৈত দায়িত্ব পালন করতে পারে!
-এটি আসলে Web3-এর বাইরে একটি মোটামুটি অস্বাভাবিক ডিজাইন প্যাটার্ন, কিন্তু এর মধ্যে এটি মানসম্মত হয়ে উঠেছে। এটি একটি ভাল উদ্ভাবন কারণ এটি স্থান বাঁচায় এবং মনোযোগ কেন্দ্রীভূত রাখে।
+এটি আসলে ওয়েব3-এর বাইরে বেশ অস্বাভাবিক একটি ডিজাইন প্যাটার্ন, তবে এর ভেতরে এটি স্ট্যান্ডার্ড হয়ে উঠেছে। এটি একটি ভালো উদ্ভাবন কারণ এটি জায়গা বাঁচায় এবং মনোযোগ ধরে রাখে।
-যদি প্রধান ক্রিয়া - সোয়াপ - একটি ত্রুটির কারণে অনুপলব্ধ হয়, তবে কারণটি বোতামের সাহায্যে ব্যাখ্যা করা যেতে পারে, যেমন:
+যদি কোনো ত্রুটির কারণে মূল কাজ - SWAP - অনুপলব্ধ থাকে, তবে এর কারণ বাটনের মাধ্যমে ব্যাখ্যা করা যেতে পারে, যেমন:
-- নেটওয়ার্ক পরিবর্তন করুন
-- ওয়ালেট সংযোগ করুন
+- নেটওয়ার্ক পরিবর্তন করুন (switch network)
+- ওয়ালেট কানেক্ট করুন (connect wallet)
- বিভিন্ন ত্রুটি
-বোতামটি যে ক্রিয়াটি সম্পাদন করা দরকার তার সাথে **ম্যাপ করা** যেতে পারে। উদাহরণস্বরূপ, যদি ব্যবহারকারী ভুল নেটওয়ার্কে থাকার কারণে সোয়াপ করতে না পারে, বোতামটিতে “ইথেরিয়ামে পরিবর্তন করুন” লেখা উচিত এবং ব্যবহারকারী যখন বোতামে ক্লিক করে, তখন এটি নেটওয়ার্কটিকে ইথেরিয়ামে পরিবর্তন করা উচিত। এটি ব্যবহারকারীর প্রবাহকে উল্লেখযোগ্যভাবে ত্বরান্বিত করে।
+বাটনটিকে যে কাজটি করতে হবে তার সাথে **ম্যাপ করা** যেতে পারে। উদাহরণস্বরূপ, যদি ব্যবহারকারী ভুল নেটওয়ার্কে থাকার কারণে সোয়াপ করতে না পারেন, তবে বাটনে লেখা উচিত "switch to Ethereum", এবং যখন ব্যবহারকারী বাটনে ক্লিক করবেন, তখন এটি নেটওয়ার্কটিকে ইথিরিয়ামে পরিবর্তন করবে। এটি ব্যবহারকারীর ফ্লো উল্লেখযোগ্যভাবে দ্রুত করে।
-
+
-
+
-## এই ফিগমা ফাইল দিয়ে আপনার নিজের তৈরি করুন {#build-your-own-with-this-figma-file}
+## এই figma ফাইলটি দিয়ে আপনার নিজেরটি তৈরি করুন {#build-your-own-with-this-figma-file}
-একাধিক প্রোটোকলের কঠোর পরিশ্রমের জন্য ধন্যবাদ, DEX ডিজাইন অনেক উন্নত হয়েছে। আমরা জানি ব্যবহারকারীর কী তথ্য প্রয়োজন, আমাদের কীভাবে এটি দেখানো উচিত এবং কীভাবে প্রবাহটিকে যতটা সম্ভব মসৃণ করা যায়।
-আশা করি এই নিবন্ধটি UX নীতির একটি ভালো ওভারভিউ প্রদান করে।
+একাধিক প্রটোকলের কঠোর পরিশ্রমের কারণে, DEX ডিজাইনের অনেক উন্নতি হয়েছে। আমরা জানি ব্যবহারকারীর কী তথ্য প্রয়োজন, আমাদের কীভাবে তা দেখানো উচিত এবং কীভাবে ফ্লোটিকে যতটা সম্ভব মসৃণ করা যায়।
+আশা করি এই আর্টিকেলটি UX নীতিগুলোর একটি শক্ত ওভারভিউ প্রদান করবে।
-আপনি যদি পরীক্ষা করতে চান, তাহলে অনুগ্রহ করে Figma ওয়্যারফ্রেম কিট ব্যবহার করতে দ্বিধা বোধ করবেন না। এটি যতটা সম্ভব সহজ রাখা হয়েছে, তবে বিভিন্ন উপায়ে মৌলিক কাঠামো তৈরি করার জন্য যথেষ্ট নমনীয়তা রয়েছে।
+আপনি যদি পরীক্ষা-নিরীক্ষা করতে চান, তবে নির্দ্বিধায় Figma ওয়্যারফ্রেম কিটটি ব্যবহার করুন। এটিকে যতটা সম্ভব সহজ রাখা হয়েছে, তবে বিভিন্ন উপায়ে প্রাথমিক গঠন তৈরি করার জন্য এতে যথেষ্ট নমনীয়তা রয়েছে।
-[Figma ওয়্যারফ্রেম কিট](https://www.figma.com/community/file/1393606680816807382/dex-wireframes-kit)
+[Figma ওয়্যারফ্রেম কিট](https://www.figma.com/community/file/1393606680816807382/dex-wireframes-kit)
-DeFi বিকশিত হতে থাকবে, এবং উন্নতির জন্য সর্বদা জায়গা আছে।
+DeFi-এর বিবর্তন চলতেই থাকবে, এবং উন্নতির সুযোগ সবসময়ই থাকে।
-শুভকামনা!
+শুভকামনা!
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/design-and-ux/heuristics-for-web3/index.md b/public/content/translations/bn/developers/docs/design-and-ux/heuristics-for-web3/index.md
index f850ddfce06..6087909bc1b 100644
--- a/public/content/translations/bn/developers/docs/design-and-ux/heuristics-for-web3/index.md
+++ b/public/content/translations/bn/developers/docs/design-and-ux/heuristics-for-web3/index.md
@@ -1,138 +1,132 @@
---
-title: "Web3 ইন্টারফেস ডিজাইনের জন্য ৭টি হিউরিস্টিকস"
-description: "Web3-এর ব্যবহারযোগ্যতা উন্নত করার নীতিমালা"
+title: ওয়েব3 ইন্টারফেস ডিজাইনের জন্য ৭টি হিউরিস্টিকস
+description: ওয়েব3 এর ব্যবহারযোগ্যতা উন্নত করার নীতিসমূহ
lang: bn
---
-ব্যবহারযোগ্যতার হিউরিস্টিকস হল ব্যাপক “সাধারণ নিয়ম” যা আপনি আপনার সাইটের ব্যবহারযোগ্যতা পরিমাপ করতে ব্যবহার করতে পারেন।
-এখানকার ৭টি হিউরিস্টিকস বিশেষভাবে Web3-এর জন্য তৈরি করা হয়েছে এবং Jakob Nielsen-এর [ইন্টারঅ্যাকশন ডিজাইনের জন্য ১০টি সাধারণ নীতি](https://www.nngroup.com/articles/ten-usability-heuristics/)-এর পাশাপাশি ব্যবহার করা উচিত।
+ব্যবহারযোগ্যতার হিউরিস্টিকস (Usability heuristics) হলো সাধারণ "বাস্তবসম্মত নিয়ম" (rules of thumb) যা আপনি আপনার সাইটের ব্যবহারযোগ্যতা পরিমাপ করতে ব্যবহার করতে পারেন।
+এখানকার ৭টি হিউরিস্টিকস বিশেষভাবে ওয়েব3 (Web3)-এর জন্য তৈরি করা হয়েছে এবং এগুলোকে জ্যাকব নিয়েলসেনের (Jakob Nielsen) [ইন্টারঅ্যাকশন ডিজাইনের ১০টি সাধারণ নীতির](https://www.nngroup.com/articles/ten-usability-heuristics/) পাশাপাশি ব্যবহার করা উচিত।
-## web3-এর জন্য সাতটি ব্যবহারযোগ্যতার হিউরিস্টিকস {#seven-usability-heuristics-for-web3}
+## ওয়েব3 এর জন্য সাতটি ব্যবহারযোগ্যতার হিউরিস্টিকস {#seven-usability-heuristics-for-web3}
-1. কাজের পরে প্রতিক্রিয়া
+1. কাজের পরে ফিডব্যাক
2. নিরাপত্তা এবং বিশ্বাস
-3. সবচেয়ে গুরুত্বপূর্ণ তথ্য স্পষ্ট
-4. সহজবোধ্য পরিভাষা
+3. সবচেয়ে গুরুত্বপূর্ণ তথ্যটি স্পষ্ট
+4. বোধগম্য পরিভাষা
5. কাজগুলো যতটা সম্ভব সংক্ষিপ্ত
-6. নেটওয়ার্ক সংযোগ দৃশ্যমান এবং নমনীয়
-7. অ্যাপ থেকে নিয়ন্ত্রণ, ওয়ালেট থেকে নয়
+6. নেটওয়ার্ক সংযোগগুলো দৃশ্যমান এবং নমনীয়
+7. ওয়ালেট থেকে নয়, অ্যাপ থেকে নিয়ন্ত্রণ
-## সংজ্ঞা এবং উদাহরণ {#definitions-and-examples}
-### 1. কাজের পরে প্রতিক্রিয়া {#feedback-follows-action}
+## সংজ্ঞা এবং উদাহরণ {#definitions-and-examples}
-**যখন কিছু ঘটেছে, বা ঘটছে, তখন তা স্পষ্ট হওয়া উচিত।**
+### 1. কাজের পরে ফিডব্যাক {#feedback-follows-action}
-ব্যবহারকারীরা তাদের পূর্ববর্তী পদক্ষেপের ফলাফলের উপর ভিত্তি করে তাদের পরবর্তী পদক্ষেপের বিষয়ে সিদ্ধান্ত নেয়। তাই এটা অপরিহার্য যে তারা সিস্টেমের অবস্থা সম্পর্কে অবগত থাকে। Web3-তে এটি বিশেষভাবে গুরুত্বপূর্ণ কারণ লেনদেনগুলি ব্লকচেইনে জমা হতে কখনও কখনও একটি সংক্ষিপ্ত সময় নিতে পারে। যদি তাদের অপেক্ষা করার জন্য কোনো প্রতিক্রিয়া না থাকে, তাহলে ব্যবহারকারীরা নিশ্চিত হতে পারে না যে কিছু ঘটেছে কিনা।
+**যখন কিছু ঘটেছে বা ঘটছে, তখন তা স্পষ্ট হওয়া উচিত।**
-**পরামর্শ:**
+ব্যবহারকারীরা তাদের পূর্ববর্তী পদক্ষেপের ফলাফলের ওপর ভিত্তি করে পরবর্তী পদক্ষেপের সিদ্ধান্ত নেন। তাই সিস্টেমের অবস্থা সম্পর্কে তাদের অবগত থাকা অপরিহার্য। ওয়েব3-তে এটি বিশেষভাবে গুরুত্বপূর্ণ কারণ ব্লকচেইন-এ লেনদেন সম্পন্ন হতে মাঝে মাঝে কিছুটা সময় লাগতে পারে। যদি অপেক্ষা করার জন্য কোনো ফিডব্যাক না থাকে, তবে ব্যবহারকারীরা নিশ্চিত হতে পারেন না যে আদৌ কিছু ঘটেছে কি না।
-- মেসেজিং, নোটিফিকেশন এবং অন্যান্য সতর্কবার্তার মাধ্যমে ব্যবহারকারীকে জানান।
-- অপেক্ষার সময় স্পষ্টভাবে জানান।
-- যদি কোনো কাজে কয়েক সেকেন্ডের বেশি সময় লাগে, তাহলে একটি টাইমার বা একটি অ্যানিমেশন দিয়ে ব্যবহারকারীকে আশ্বস্ত করুন যাতে তারা অনুভব করে যে কিছু ঘটছে।
-- যদি একটি প্রক্রিয়ায় একাধিক ধাপ থাকে, তাহলে প্রতিটি ধাপ দেখান।
+**টিপস:**
+- মেসেজিং, নোটিফিকেশন এবং অন্যান্য অ্যালার্টের মাধ্যমে ব্যবহারকারীকে জানান।
+- অপেক্ষার সময় স্পষ্টভাবে জানিয়ে দিন।
+- যদি কোনো কাজে কয়েক সেকেন্ডের বেশি সময় লাগে, তবে একটি টাইমার বা অ্যানিমেশন দিয়ে ব্যবহারকারীকে আশ্বস্ত করুন যাতে তাদের মনে হয় যে কিছু একটা হচ্ছে।
+- যদি কোনো প্রক্রিয়ায় একাধিক ধাপ থাকে, তবে প্রতিটি ধাপ দেখান।
**উদাহরণ:**
-একটি লেনদেনের সাথে জড়িত প্রতিটি ধাপ দেখানো ব্যবহারকারীদের জানতে সাহায্য করে যে তারা প্রক্রিয়ার কোথায় আছে। উপযুক্ত আইকন ব্যবহারকারীকে তাদের কাজের স্থিতি জানতে দেয়।
-
-
+একটি লেনদেন-এর সাথে জড়িত প্রতিটি ধাপ দেখালে ব্যবহারকারীরা বুঝতে পারেন যে তারা প্রক্রিয়ার কোন পর্যায়ে আছেন। উপযুক্ত আইকনগুলো ব্যবহারকারীকে তাদের কাজের অবস্থা সম্পর্কে জানতে সাহায্য করে।
-### 2. নিরাপত্তা এবং বিশ্বাস অন্তর্নির্মিত {#security-and-trust-are-backed-in}
+
-নিরাপত্তাকে অগ্রাধিকার দেওয়া উচিত, এবং এটি ব্যবহারকারীর জন্য জোর দেওয়া উচিত।
-লোকেরা তাদের ডেটা সম্পর্কে গভীরভাবে যত্ন নেয়। নিরাপত্তা প্রায়শই ব্যবহারকারীদের জন্য একটি প্রাথমিক উদ্বেগের বিষয়, তাই ডিজাইনের সমস্ত স্তরে এটি বিবেচনা করা উচিত। আপনার সর্বদা আপনার ব্যবহারকারীদের বিশ্বাস অর্জনের চেষ্টা করা উচিত, কিন্তু আপনি যেভাবে এটি করেন তা বিভিন্ন অ্যাপে বিভিন্ন অর্থ বোঝাতে পারে। এটি একটি পরবর্তী চিন্তা হওয়া উচিত নয়, বরং এটি সচেতনভাবে সর্বত্র ডিজাইন করা উচিত। সামাজিক চ্যানেল এবং নথিপত্র সহ ব্যবহারকারীর অভিজ্ঞতার সর্বত্র বিশ্বাস তৈরি করুন, এবং চূড়ান্ত UI। বিকেন্দ্রীকরণের স্তর, ট্রেজারি মাল্টি-সিগ স্ট্যাটাস, এবং দলটির পরিচয় প্রকাশ করা হয়েছে কিনা, এই সবই ব্যবহারকারীদের বিশ্বাসকে প্রভাবিত করে
+### 2. নিরাপত্তা এবং বিশ্বাস অন্তর্নিহিত থাকে {#security-and-trust-are-backed-in}
-**পরামর্শ:**
+নিরাপত্তাকে অগ্রাধিকার দেওয়া উচিত এবং ব্যবহারকারীর জন্য এর ওপর জোর দেওয়া উচিত।
+মানুষ তাদের ডেটা নিয়ে গভীরভাবে চিন্তা করে। নিরাপত্তা প্রায়শই ব্যবহারকারীদের জন্য একটি প্রাথমিক উদ্বেগের বিষয়, তাই ডিজাইনের সব স্তরে এটি বিবেচনা করা উচিত। আপনার সবসময় ব্যবহারকারীদের বিশ্বাস অর্জনের চেষ্টা করা উচিত, তবে আপনি কীভাবে এটি করবেন তা বিভিন্ন অ্যাপে ভিন্ন হতে পারে। এটি কোনো পরের চিন্তার বিষয় হওয়া উচিত নয়, বরং শুরু থেকেই সচেতনভাবে ডিজাইন করা উচিত। সোশ্যাল চ্যানেল এবং ডকুমেন্টেশনসহ চূড়ান্ত UI পর্যন্ত পুরো ব্যবহারকারীর অভিজ্ঞতায় বিশ্বাস গড়ে তুলুন। ডিসেন্ট্রালাইজেশন-এর স্তর, ট্রেজারি মাল্টিসিগ (multi-sig) স্ট্যাটাস এবং টিম ডক্সড (doxxed) কি না, এই বিষয়গুলো ব্যবহারকারীদের বিশ্বাসকে প্রভাবিত করে।
-- আপনার অডিট গর্বের সাথে তালিকাভুক্ত করুন
+**টিপস:**
+- গর্বের সাথে আপনার অডিটগুলোর তালিকা দিন
- একাধিক অডিট করান
-- আপনার ডিজাইন করা যেকোনো নিরাপত্তা ফিচারের বিজ্ঞাপন দিন
-- অন্তর্নিহিত ইন্টিগ্রেশন সহ সম্ভাব্য ঝুঁকিগুলি তুলে ধরুন
-- কৌশলের জটিলতা সম্পর্কে জানান
-- নন-UI সমস্যাগুলি বিবেচনা করুন যা আপনার ব্যবহারকারীদের নিরাপত্তার ধারণাকে প্রভাবিত করতে পারে
-
-**উদাহরণ:**
-ফুটারের মধ্যে আপনার অডিট একটি বিশিষ্ট আকারে অন্তর্ভুক্ত করুন।
+- আপনার ডিজাইন করা যেকোনো নিরাপত্তা ফিচারের প্রচার করুন
+- অন্তর্নিহিত ইন্টিগ্রেশনসহ সম্ভাব্য ঝুঁকিগুলো তুলে ধরুন
+- কৌশলগুলোর জটিলতা সম্পর্কে জানান
+- নন-UI সমস্যাগুলো বিবেচনা করুন যা আপনার ব্যবহারকারীদের নিরাপত্তার ধারণাকে প্রভাবিত করতে পারে
-
+**উদাহরণ:**
+ফুটারে একটি স্পষ্ট আকারে আপনার অডিটগুলো অন্তর্ভুক্ত করুন।
-### 3. সবচেয়ে গুরুত্বপূর্ণ তথ্য স্পষ্ট {#the-most-important-info-is-obvious}
+
-জটিল সিস্টেমের জন্য, শুধুমাত্র সবচেয়ে প্রাসঙ্গিক ডেটা দেখান। কোনটি সবচেয়ে গুরুত্বপূর্ণ তা নির্ধারণ করুন, এবং এর প্রদর্শনকে অগ্রাধিকার দিন।
-অতিরিক্ত তথ্য বিভ্রান্তিকর হতে পারে এবং ব্যবহারকারীরা সাধারণত সিদ্ধান্ত নেওয়ার সময় একটি তথ্যের উপর নির্ভর করে। DeFi-তে, এটি সম্ভবত ইয়েল্ড অ্যাপে APR এবং লেন্ডিং অ্যাপে LTV হবে।
+### 3. সবচেয়ে গুরুত্বপূর্ণ তথ্যটি স্পষ্ট {#the-most-important-info-is-obvious}
-**পরামর্শ:**
+জটিল সিস্টেমের জন্য, শুধুমাত্র সবচেয়ে প্রাসঙ্গিক ডেটা দেখান। কোনটি সবচেয়ে গুরুত্বপূর্ণ তা নির্ধারণ করুন এবং এর প্রদর্শনকে অগ্রাধিকার দিন।
+অতিরিক্ত তথ্য বিভ্রান্তিকর হতে পারে এবং সিদ্ধান্ত নেওয়ার সময় ব্যবহারকারীরা সাধারণত একটি তথ্যের ওপর নির্ভর করেন। ডিফাই (DeFi)-তে, এটি সম্ভবত ইল্ড (yield) অ্যাপগুলোতে APR এবং লেন্ডিং (lending) অ্যাপগুলোতে LTV হবে।
-- ব্যবহারকারী গবেষণা সবচেয়ে গুরুত্বপূর্ণ মেট্রিক উন্মোচন করবে
-- মূল তথ্য বড় করুন, এবং অন্যান্য বিবরণ ছোট এবং অগোচরে রাখুন
-- মানুষ পড়ে না, তারা স্ক্যান করে; নিশ্চিত করুন আপনার ডিজাইন স্ক্যানযোগ্য
+**টিপস:**
+- ব্যবহারকারী গবেষণা সবচেয়ে গুরুত্বপূর্ণ মেট্রিকটি উন্মোচন করবে
+- মূল তথ্যটি বড় করে দেখান এবং অন্যান্য বিবরণ ছোট ও বাধাহীন রাখুন
+- মানুষ পড়ে না, তারা স্ক্যান করে; নিশ্চিত করুন যে আপনার ডিজাইনটি স্ক্যানযোগ্য
-**উদাহরণ:** পূর্ণ রঙের বড় টোকেন স্ক্যান করার সময় খুঁজে পাওয়া সহজ। APR বড় এবং একটি অ্যাকসেন্ট রঙে হাইলাইট করা হয়েছে।
+**উদাহরণ:** স্ক্যান করার সময় সম্পূর্ণ রঙের বড় টোকেনগুলো সহজেই খুঁজে পাওয়া যায়। APR বড় এবং একটি অ্যাকসেন্ট রঙে হাইলাইট করা হয়েছে।
-
+
-### ৪. স্পষ্ট পরিভাষা {#clear-terminology}
+### 4. স্পষ্ট পরিভাষা {#clear-terminology}
-পরিভাষা সহজবোধ্য এবং উপযুক্ত হওয়া উচিত।
-প্রযুক্তিগত পরিভাষা একটি বিশাল বাধা হতে পারে, কারণ এর জন্য একটি সম্পূর্ণ নতুন মানসিক মডেল তৈরির প্রয়োজন হয়। ব্যবহারকারীরা ডিজাইনটিকে এমন শব্দ, বাক্যাংশ এবং ধারণার সাথে সম্পর্কিত করতে পারে না যা তারা ইতিমধ্যে জানে। সবকিছু বিভ্রান্তিকর এবং অপরিচিত মনে হয়, এবং এমনকি এটি ব্যবহার করার চেষ্টা করার আগেও একটি খাড়া শেখার বক্ররেখা রয়েছে। একজন ব্যবহারকারী কিছু টাকা সঞ্চয় করতে চেয়ে DeFi-তে আসতে পারে, এবং তারা যা খুঁজে পায় তা হল: মাইনিং, ফার্মিং, স্টেকিং, এমিশন, ব্রাইব, ভল্ট, লকার, veTokens, ভেস্টিং, ইপকস, ডিসেন্ট্রালাইজড অ্যালগরিদম, প্রোটোকল-ওনড লিকুইডিটি…
-সহজ পরিভাষা ব্যবহার করার চেষ্টা করুন যা সবচেয়ে বিস্তৃত গোষ্ঠীর মানুষ বুঝতে পারবে। শুধুমাত্র আপনার প্রকল্পের জন্য একেবারে নতুন পরিভাষা উদ্ভাবন করবেন না।
-
-**পরামর্শ:**
+পরিভাষা বোধগম্য এবং উপযুক্ত হওয়া উচিত।
+প্রযুক্তিগত শব্দজট একটি বড় বাধা হতে পারে, কারণ এর জন্য সম্পূর্ণ নতুন একটি মানসিক মডেল তৈরি করার প্রয়োজন হয়। ব্যবহারকারীরা তাদের আগে থেকে জানা শব্দ, বাক্যাংশ এবং ধারণাগুলোর সাথে ডিজাইনটিকে মেলাতে পারেন না। সবকিছু বিভ্রান্তিকর এবং অপরিচিত মনে হয়, এবং এটি ব্যবহার করার চেষ্টা করার আগেই তাদের অনেক কিছু শিখতে হয়। একজন ব্যবহারকারী কিছু টাকা জমানোর উদ্দেশ্যে ডিফাই (DeFi)-তে আসতে পারেন, কিন্তু তারা যা দেখতে পান তা হলো: মাইনিং, ফার্মিং, স্টেকিং, এমিশনস, ব্রাইবস, ভল্টস, লকারস, veTokens, ভেস্টিং, এপোক, ডিসেন্ট্রালাইজড এ্যালগরিদম, প্রটোকল-মালিকানাধীন লিকুইডিটি...
+সহজ শব্দ ব্যবহার করার চেষ্টা করুন যা বেশিরভাগ মানুষ বুঝতে পারবে। শুধুমাত্র আপনার প্রজেক্টের জন্য সম্পূর্ণ নতুন শব্দ আবিষ্কার করবেন না।
+**টিপস:**
- সহজ এবং সামঞ্জস্যপূর্ণ পরিভাষা ব্যবহার করুন
- যতটা সম্ভব বিদ্যমান ভাষা ব্যবহার করুন
-- আপনার নিজস্ব পরিভাষা তৈরি করবেন না
-- প্রচলিত নিয়মগুলি অনুসরণ করুন যেমনটি সেগুলি প্রদর্শিত হয়
-- যতটা সম্ভব ব্যবহারকারীদের শিক্ষিত করুন
+- নিজের তৈরি করা শব্দ ব্যবহার করবেন না
+- প্রচলিত নিয়মগুলো অনুসরণ করুন
+- ব্যবহারকারীদের যতটা সম্ভব শিক্ষিত করুন
**উদাহরণ:**
-“আপনার পুরস্কার” একটি ব্যাপকভাবে বোঝা, নিরপেক্ষ পরিভাষা; এই প্রকল্পের জন্য তৈরি করা কোনো নতুন শব্দ নয়। বাস্তব বিশ্বের মানসিক মডেলগুলির সাথে মেলানোর জন্য পুরস্কারগুলি USD-তে নির্ধারিত হয়, যদিও পুরস্কারগুলি নিজেরাই অন্য টোকেনে থাকে।
-
-
-
-### ৫। কাজগুলো যতটা সম্ভব সংক্ষিপ্ত {#actions-are-as-short-as-possible}
-
-উপ-কাজগুলিকে গোষ্ঠীবদ্ধ করে ব্যবহারকারীর ইন্টারঅ্যাকশনের গতি বাড়ান।
-এটি স্মার্ট কন্ট্র্যাক্ট স্তরে, এবং UI-তেও করা যেতে পারে। একটি সাধারণ কাজ সম্পন্ন করতে ব্যবহারকারীকে সিস্টেমের এক অংশ থেকে অন্য অংশে – অথবা সিস্টেমটি পুরোপুরি ছেড়ে যেতে হবে না।
+"আপনার রিওয়ার্ডস" (Your rewards) একটি ব্যাপকভাবে বোধগম্য, নিরপেক্ষ শব্দ; এটি এই প্রজেক্টের জন্য তৈরি করা কোনো নতুন শব্দ নয়। বাস্তব জগতের মানসিক মডেলের সাথে মেলাতে রিওয়ার্ডগুলো USD-তে দেখানো হয়, এমনকি যদি রিওয়ার্ডগুলো অন্য কোনো টোকেন-এও থাকে।
-**পরামর্শ:**
+
-- যেখানে সম্ভব অন্যান্য কাজের সাথে "অনুমোদন" একত্রিত করুন
-- সাইনিং পদক্ষেপগুলি যতটা সম্ভব কাছাকাছি একত্রিত করুন
+### 5. কাজগুলো যতটা সম্ভব সংক্ষিপ্ত {#actions-are-as-short-as-possible}
-**উদাহরণ:** “তারল্য যোগ করুন” এবং “স্টেক” একত্রিত করা একটি অ্যাক্সিলারেটরের একটি সহজ উদাহরণ যা একজন ব্যবহারকারীর সময় এবং গ্যাস উভয়ই বাঁচায়।
+সাব-অ্যাকশনগুলোকে একত্রিত করে ব্যবহারকারীর ইন্টারঅ্যাকশন দ্রুত করুন।
+এটি স্মার্ট কন্ট্রাক্ট স্তরে এবং UI-তেও করা যেতে পারে। একটি সাধারণ কাজ সম্পন্ন করার জন্য ব্যবহারকারীকে সিস্টেমের এক অংশ থেকে অন্য অংশে যেতে হবে না – বা সিস্টেমটি পুরোপুরি ছেড়ে যেতে হবে না।
-
+**টিপস:**
+- যেখানে সম্ভব অন্যান্য কাজের সাথে "Approve" একত্রিত করুন
+- সাইনিং (signing) ধাপগুলোকে যতটা সম্ভব একসাথে যুক্ত করুন
-### ৬. নেটওয়ার্ক সংযোগ দৃশ্যমান এবং নমনীয় {#network-connections-are-visible-and-flexible}
+**উদাহরণ:** "অ্যাড লিকুইডিটি" (add liquidity) এবং "স্টেক" (stake) একত্রিত করা একটি অ্যাক্সিলারেটরের সহজ উদাহরণ যা ব্যবহারকারীর সময় এবং গ্যাস উভয়ই বাঁচায়।
-ব্যবহারকারীকে জানান তারা কোন নেটওয়ার্কে সংযুক্ত আছে, এবং নেটওয়ার্ক পরিবর্তন করার জন্য স্পষ্ট শর্টকাট প্রদান করুন।
-এটি মাল্টিচেইন অ্যাপে বিশেষভাবে গুরুত্বপূর্ণ। সংযোগ বিচ্ছিন্ন থাকা অবস্থায় বা একটি অসমর্থিত নেটওয়ার্কে সংযুক্ত থাকা অবস্থায়ও অ্যাপের প্রধান ফাংশনগুলি দৃশ্যমান থাকা উচিত।
+
-**পরামর্শ:**
+### 6. নেটওয়ার্ক সংযোগগুলো দৃশ্যমান এবং নমনীয় {#network-connections-are-visible-and-flexible}
-- সংযোগ বিচ্ছিন্ন থাকা অবস্থায় অ্যাপের যতটা সম্ভব দেখান
-- ব্যবহারকারী বর্তমানে কোন নেটওয়ার্কে সংযুক্ত আছে তা দেখান
-- নেটওয়ার্ক পরিবর্তন করতে ব্যবহারকারীকে ওয়ালেটে যেতে বাধ্য করবেন না
-- যদি অ্যাপটি ব্যবহারকারীকে নেটওয়ার্ক পরিবর্তন করতে বলে, তবে প্রধান কল টু অ্যাকশন থেকে কাজটি প্রম্পট করুন
-- যদি অ্যাপটিতে একাধিক নেটওয়ার্কের জন্য মার্কেট বা ভল্ট থাকে, তবে স্পষ্টভাবে বলুন ব্যবহারকারী বর্তমানে কোন সেটটি দেখছে
+ব্যবহারকারী কোন নেটওয়ার্ক-এর সাথে সংযুক্ত আছেন তা তাদের জানান এবং নেটওয়ার্ক পরিবর্তন করার জন্য স্পষ্ট শর্টকাট প্রদান করুন।
+এটি মাল্টিচেইন অ্যাপগুলোতে বিশেষভাবে গুরুত্বপূর্ণ। সংযোগ বিচ্ছিন্ন থাকলে বা অসমর্থিত নেটওয়ার্ক-এর সাথে সংযুক্ত থাকলেও অ্যাপের মূল ফাংশনগুলো দৃশ্যমান থাকা উচিত।
-**উদাহরণ:** ব্যবহারকারীকে দেখান তারা কোন নেটওয়ার্কে সংযুক্ত আছে, এবং অ্যাপবারে তাদের এটি পরিবর্তন করার অনুমতি দিন।
+**টিপস:**
+- সংযোগ বিচ্ছিন্ন থাকা অবস্থায় অ্যাপের যতটা সম্ভব অংশ দেখান
+- ব্যবহারকারী বর্তমানে কোন নেটওয়ার্ক-এর সাথে সংযুক্ত আছেন তা দেখান
+- নেটওয়ার্ক পরিবর্তন করার জন্য ব্যবহারকারীকে ওয়ালেট-এ যেতে বাধ্য করবেন না
+- যদি অ্যাপটির জন্য ব্যবহারকারীকে নেটওয়ার্ক পরিবর্তন করতে হয়, তবে মূল কল টু অ্যাকশন (call to action) থেকে কাজটি করার জন্য প্রম্পট করুন
+- যদি অ্যাপটিতে একাধিক নেটওয়ার্ক-এর জন্য মার্কেট বা ভল্ট থাকে, তবে ব্যবহারকারী বর্তমানে কোন সেটটি দেখছেন তা স্পষ্টভাবে উল্লেখ করুন
-
+**উদাহরণ:** অ্যাপবারে ব্যবহারকারীকে দেখান যে তারা কোন নেটওয়ার্ক-এর সাথে সংযুক্ত আছেন এবং তাদের এটি পরিবর্তন করার অনুমতি দিন।
-### ৭. অ্যাপ থেকে নিয়ন্ত্রণ, ওয়ালেট থেকে নয় {#control-from-the-app-not-the-wallet}
+
-UI-এর উচিত ব্যবহারকারীকে তার যা কিছু জানা দরকার তা বলা এবং তার যা কিছু করা দরকার তার উপর নিয়ন্ত্রণ দেওয়া।
-Web3-তে, এমন কিছু কাজ আছে যা আপনি UI-তে করেন, এবং এমন কিছু কাজ আছে যা আপনি ওয়ালেটে করেন। সাধারণত, আপনি UI-তে একটি কাজ শুরু করেন, এবং তারপর ওয়ালেটে তা নিশ্চিত করেন। যদি এই দুটি ধারা সাবধানে একত্রিত না করা হয় তবে ব্যবহারকারীরা অস্বস্তি বোধ করতে পারে।
+### 7. ওয়ালেট থেকে নয়, অ্যাপ থেকে নিয়ন্ত্রণ {#control-from-the-app-not-the-wallet}
-**পরামর্শ:**
+UI-এর উচিত ব্যবহারকারীকে তাদের প্রয়োজনীয় সবকিছু জানানো এবং তাদের যা করতে হবে তার ওপর নিয়ন্ত্রণ দেওয়া।
+ওয়েব3-তে, কিছু কাজ আপনি UI-তে করেন এবং কিছু কাজ আপনি ওয়ালেট-এ করেন। সাধারণত, আপনি UI-তে একটি কাজ শুরু করেন এবং তারপর ওয়ালেট-এ তা নিশ্চিত করেন। যদি এই দুটি দিক সতর্কতার সাথে একত্রিত করা না হয়, তবে ব্যবহারকারীরা অস্বস্তি বোধ করতে পারেন।
-- UI-তে প্রতিক্রিয়ার মাধ্যমে সিস্টেমের স্থিতি জানান
-- তাদের ইতিহাসের একটি রেকর্ড রাখুন
-- পুরানো লেনদেনের জন্য ব্লক এক্সপ্লোরারের লিঙ্ক প্রদান করুন
-- নেটওয়ার্ক পরিবর্তন করার জন্য শর্টকাট প্রদান করুন।
+**টিপস:**
+- UI-তে ফিডব্যাকের মাধ্যমে সিস্টেমের অবস্থা জানান
+- তাদের হিস্ট্রির একটি রেকর্ড রাখুন
+- পুরোনো লেনদেন-এর জন্য ব্লক এক্সপ্লোরার-এর লিঙ্ক প্রদান করুন
+- নেটওয়ার্ক পরিবর্তন করার জন্য শর্টকাট প্রদান করুন।
-একটি সূক্ষ্ম কন্টেইনার ব্যবহারকারীকে দেখায় তাদের ওয়ালেটে কোন প্রাসঙ্গিক টোকেন আছে, এবং প্রধান CTA নেটওয়ার্ক পরিবর্তন করার জন্য একটি শর্টকাট প্রদান করে।
+**উদাহরণ:** একটি সূক্ষ্ম কন্টেইনার ব্যবহারকারীকে দেখায় যে তাদের ওয়ালেট-এ কী কী প্রাসঙ্গিক টোকেন রয়েছে এবং মূল CTA নেটওয়ার্ক পরিবর্তন করার জন্য একটি শর্টকাট প্রদান করে।
-
+
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/design-and-ux/index.md b/public/content/translations/bn/developers/docs/design-and-ux/index.md
index ad5c5f16890..aa82e5bdecb 100644
--- a/public/content/translations/bn/developers/docs/design-and-ux/index.md
+++ b/public/content/translations/bn/developers/docs/design-and-ux/index.md
@@ -1,71 +1,72 @@
---
-title: "Web3 তে ডিজাইন এবং UX"
-description: "Web3 স্পেস এবং ইথেরিয়াম-এ UX ডিজাইন এবং গবেষণার ভূমিকা"
+title: ওয়েব3-তে ডিজাইন এবং UX
+description: ওয়েব3 স্পেস এবং ইথিরিয়ামে UX ডিজাইন এবং গবেষণার পরিচিতি
lang: bn
---
-আপনি কি ইথেরিয়াম দিয়ে ডিজাইন করার ক্ষেত্রে নতুন? এটি আপনার জন্য সঠিক জায়গা। Web3 ডিজাইন এবং গবেষণার মূল বিষয়গুলির সাথে আপনাকে পরিচয় করিয়ে দেওয়ার জন্য ইথেরিয়াম কমিউনিটি রিসোর্স লিখেছে। আপনি এমন মূল ধারণাগুলি সম্পর্কে শিখবেন যা আপনার পরিচিত অন্যান্য অ্যাপ ডিজাইন থেকে ভিন্ন হতে পারে।
+আপনি কি ইথিরিয়ামের সাথে ডিজাইনে নতুন? এটি আপনার জন্য সঠিক জায়গা। ইথিরিয়াম কমিউনিটি আপনাকে ওয়েব3 ডিজাইন এবং গবেষণার বেসিক বিষয়গুলোর সাথে পরিচয় করিয়ে দেওয়ার জন্য রিসোর্স তৈরি করেছে। আপনি এমন কিছু মূল কনসেপ্ট সম্পর্কে জানবেন যা আপনার পরিচিত অন্যান্য অ্যাপ ডিজাইন থেকে আলাদা হতে পারে।
-প্রথমে Web3 সম্পর্কে আরও প্রাথমিক ধারণা প্রয়োজন? [**লার্ন হাব**](/learn/) দেখুন।
+প্রথমে ওয়েব3 সম্পর্কে আরও বেসিক ধারণা প্রয়োজন? [**লার্ন হাব**](/learn/) দেখুন।
-## ব্যবহারকারী গবেষণা দিয়ে শুরু করুন {#start-with-user-research}
+## ইউজার রিসার্চ দিয়ে শুরু করুন {#start-with-user-research}
-কার্যকরী ডিজাইন শুধুমাত্র দৃশ্যত আকর্ষণীয় ব্যবহারকারী ইন্টারফেস তৈরি করার মধ্যেই সীমাবদ্ধ নয়। এর মধ্যে ব্যবহারকারীর প্রয়োজন, উদ্দেশ্য এবং চালিকা শক্তি সম্পর্কে গভীর উপলব্ধি অর্জন করা জড়িত। অতএব, আমরা দৃঢ়ভাবে সুপারিশ করি যে সমস্ত ডিজাইনার একটি ডিজাইন প্রক্রিয়া, যেমন [**ডাবল ডায়মন্ড প্রক্রিয়া**](https://en.wikipedia.org/wiki/Double_Diamond_\(design_process_model\)) গ্রহণ করুন, যাতে তাদের কাজ ইচ্ছাকৃত এবং উদ্দেশ্যপ্রণোদিত হয়।
+কার্যকর ডিজাইন শুধুমাত্র দৃষ্টিনন্দন ইউজার ইন্টারফেস তৈরির মধ্যেই সীমাবদ্ধ নয়। এর সাথে ইউজারের চাহিদা, উদ্দেশ্য এবং চালিকাশক্তি সম্পর্কে গভীর ধারণা অর্জন করা জড়িত। তাই, আমরা সব ডিজাইনারকে একটি ডিজাইন প্রক্রিয়া গ্রহণ করার জন্য জোরালোভাবে সুপারিশ করছি, যেমন [**ডাবল ডায়মন্ড প্রসেস**](), যাতে তাদের কাজ সুচিন্তিত এবং উদ্দেশ্যমূলক হয়।
-- [Web3-এর আরও বেশি UX গবেষক এবং ডিজাইনার প্রয়োজন](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - বর্তমান ডিজাইন পরিপক্কতার একটি সংক্ষিপ্ত বিবরণ
-- [web3-এ UX গবেষণার জন্য একটি সহজ নির্দেশিকা](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - কিভাবে গবেষণা করতে হয় তার সহজ নির্দেশিকা
-- [Web3-তে UX সিদ্ধান্ত গ্রহণের পদ্ধতি](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - পরিমাণগত এবং গুণগত গবেষণা এবং দুটির মধ্যে পার্থক্যের একটি সংক্ষিপ্ত বিবরণ (ভিডিও, ৬ মিনিট)
-- [web3-এ একজন ux গবেষক হওয়া](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - web3-এ একজন UX গবেষক হতে কেমন লাগে তার উপর একটি ব্যক্তিগত মতামত
+- [Web3 needs more UX Researchers and Designers](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - বর্তমান ডিজাইন ম্যাচিউরিটির একটি ওভারভিউ
+- [A simple guide to UX Research in web3](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - কীভাবে গবেষণা করতে হয় তার সহজ গাইড
+- [How to Approach UX Decisions in Web3](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - কোয়ান্টিটেটিভ এবং কোয়ালিটেটিভ গবেষণার একটি সংক্ষিপ্ত ওভারভিউ এবং এই দুইয়ের মধ্যে পার্থক্য (ভিডিও, 6 মিনিট)
+- [Being a ux researcher in web3](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - ওয়েব3-তে একজন UX গবেষক হওয়ার অভিজ্ঞতা সম্পর্কে একটি ব্যক্তিগত দৃষ্টিভঙ্গি
-## web3-তে গবেষণামূলক অধ্যয়ন {#research-in-web3}
+## ওয়েব3-তে গবেষণামূলক স্টাডি {#research-in-web3}
-এটি web3-তে করা ব্যবহারকারী গবেষণার একটি সংকলিত তালিকা যা ডিজাইন এবং পণ্য সংক্রান্ত সিদ্ধান্তে সাহায্য করতে পারে অথবা নিজের অধ্যয়ন পরিচালনা করার জন্য অনুপ্রেরণা হিসাবে কাজ করতে পারে।
+এটি ওয়েব3-তে করা ইউজার রিসার্চের একটি বাছাইকৃত তালিকা যা ডিজাইন এবং প্রোডাক্টের সিদ্ধান্ত নিতে সাহায্য করতে পারে অথবা নিজস্ব স্টাডি পরিচালনার জন্য অনুপ্রেরণা হিসেবে কাজ করতে পারে।
-| ফোকাসের ক্ষেত্র | নাম |
-| :------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| ক্রিপ্টো অনবোর্ডিং | [The Reown Pulse 2024: ক্রিপ্টো গ্রাহকের অনুভূতি এবং ব্যবহার](https://reown.com/blog/unveiling-walletconnects-consumer-crypto-report) |
-| ক্রিপ্টো অনবোর্ডিং | [CRADL: ক্রিপটোকারেন্সিতে UX](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) |
-| ক্রিপ্টো অনবোর্ডিং | [CRADL: ক্রিপটোকারেন্সিতে অনবোর্ডিং](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) |
-| ক্রিপ্টো অনবোর্ডিং | [Bitcoin UX রিপোর্ট](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) |
-| ক্রিপ্টো অনবোর্ডিং | [ConSensys: বিশ্বজুড়ে Web3 ধারণা বিষয়ক অবস্থা 2023](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) |
-| ক্রিপ্টো অনবোর্ডিং | [NEAR: গ্রহণযোগ্যতার দিকে যাত্রাকে ত্বরান্বিত করা](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) |
-| স্টেকিং | [OpenUX: Rocket Pool নোড অপারেটর UX](https://storage.googleapis.com/rocketpool/RocketPool-NodeOperator-UX-Report-Jan-2024.pdf) |
-| স্টেকিং | [স্টেকিং: মূল প্রবণতা, শিক্ষণীয় বিষয় এবং পূর্বাভাস - Eth স্ট্যাকার](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) |
-| স্টেকিং | [মাল্টি অ্যাপ স্টেকিং](https://github.com/threshold-network/UX-User-Research/blob/main/Multi-App%20Staking%20\(MAS\)/iterative-user-study/MAS%20Iterative%20User%20Study.pdf) |
-| DAO | [2022 DAO গবেষণা আপডেট: DAO নির্মাতাদের কী প্রয়োজন?](https://blog.aragon.org/2022-dao-research-update/) |
-| DeFi | [কভারেজ পুল](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) |
-| DeFi | [ConSensys: DeFi ব্যবহারকারী গবেষণা রিপোর্ট 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) |
-| মেটাভার্স | [মেটাভার্স: ব্যবহারকারী গবেষণা রিপোর্ট](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) |
-| মেটাভার্স | [সাফারিতে যাওয়া: মেটাভার্সে ব্যবহারকারীদের নিয়ে গবেষণা](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (ভিডিও, 27 মিনিট) |
+| ফোকাসের ক্ষেত্র | নাম |
+| :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ক্রিপ্টো অনবোর্ডিং | [The Reown Pulse 2024: Crypto Consumer Sentiment & Usage](https://reown.com/blog/unveiling-walletconnects-consumer-crypto-report) |
+| ক্রিপ্টো অনবোর্ডিং | [CRADL: UX in Cryptocurrency](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) |
+| ক্রিপ্টো অনবোর্ডিং | [CRADL: Onboarding to Cryptocurrency](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) |
+| ক্রিপ্টো অনবোর্ডিং | [Bitcoin UX report](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) |
+| ক্রিপ্টো অনবোর্ডিং | [ConSensys: The State of Web3 perception around the world 2023](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) |
+| ক্রিপ্টো অনবোর্ডিং | [NEAR: Accelerating the journey towards adoption](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) |
+| স্টেকিং | [OpenUX: Rocket Pool Node Operator UX](https://storage.googleapis.com/rocketpool/RocketPool-NodeOperator-UX-Report-Jan-2024.pdf) |
+| স্টেকিং | [Staking: Key trends, takeaways, and predictions - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) |
+| স্টেকিং | [Multi App Staking]() |
+| DAO | [2022 DAO Research Update: What do DAO Builders Need?](https://blog.aragon.org/2022-dao-research-update/) |
+| DeFi | [Coverage pools](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) |
+| DeFi | [ConSensys: DeFi User Research Report 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) |
+| মেটাভার্স | [Metaverse: User Research Report](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) |
+| মেটাভার্স | [Going on Safari: Researching Users in the Metaverse](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (ভিডিও, 27 মিনিট) |
-## web3-এর জন্য ডিজাইন {#design-for-web3}
+## ওয়েব3-এর জন্য ডিজাইন {#design-for-web3}
-- [Web3 UX ডিজাইন হ্যান্ডবুক](https://web3ux.design/) - Web3 অ্যাপ ডিজাইন করার জন্য ব্যবহারিক নির্দেশিকা
-- [Web3 ডিজাইন নীতি](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - ব্লকচেইন ভিত্তিক ডিএ্যাপস-এর জন্য UX নিয়মের একটি কাঠামো
-- [ব্লকচেইন ডিজাইন নীতি](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e) - IBM-এর ব্লকচেইন ডিজাইন দলের শেখা পাঠ
-- [Neueux.com](https://neueux.com/apps) - বিভিন্ন ফিল্টারিং বিকল্প সহ ব্যবহারকারী ফ্লো-এর UI লাইব্রেরি
-- [Web3-এর ব্যবহারযোগ্যতার সংকট: আপনার যা জানা দরকার!](https://www.youtube.com/watch?v=oBSXT_6YDzg) - ডেভেলপার কেন্দ্রিক প্রকল্প নির্মাণের সমস্যাগুলির উপর একটি প্যানেল আলোচনা (ভিডিও, 34 মিনিট)
+- [Web3 Design Playbook](https://learnweb3.design/) - ডিজাইনার এবং প্রতিষ্ঠাতাদের জন্য Web3 UX নীতি, DeFi প্যাটার্ন, গভর্নেন্স ডিজাইন, ওয়ালেট UX এবং প্রটোকল-লেভেল চিন্তাভাবনার উপর ফ্রেমওয়ার্ক এবং নোটের একটি বিস্তৃত সংগ্রহ
+- [Web3 UX Design Handbook](https://web3ux.design/) - Web3 অ্যাপ ডিজাইন করার প্র্যাক্টিক্যাল গাইড
+- [Web3 Design Principles](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - ব্লকচেইন ভিত্তিক ডিএ্যাপস-এর জন্য UX নিয়মের একটি ফ্রেমওয়ার্ক
+- [Blockchain Design Principles](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e) - IBM-এর ব্লকচেইন ডিজাইন টিমের শেখা বিষয়গুলো
+- [Neueux.com](https://neueux.com/apps) - বিভিন্ন ফিল্টারিং অপশনসহ ইউজার ফ্লো-এর UI লাইব্রেরি
+- [Web3's Usability Crisis: What You NEED to Know!](https://www.youtube.com/watch?v=oBSXT_6YDzg) - ডেভেলপার-কেন্দ্রিক প্রজেক্ট তৈরির ত্রুটিগুলো নিয়ে একটি প্যানেল আলোচনা (ভিডিও, 34 মিনিট)
## শুরু করা {#getting-started}
-- [Web3-এর জন্য হিউরিস্টিকস](/developers/docs/design-and-ux/heuristics-for-web3/) - Web3 ইন্টারফেস ডিজাইনের জন্য 7টি হিউরিস্টিকস
-- [DEX ডিজাইন সেরা অভ্যাস](/developers/docs/design-and-ux/dex-design-best-practice/) - ডিসেন্ট্রালাইজড এক্সচেঞ্জ ডিজাইন করার জন্য একটি নির্দেশিকা
+- [Heuristics for Web3](/developers/docs/design-and-ux/heuristics-for-web3/) - Web3 ইন্টারফেস ডিজাইনের জন্য 7টি হিউরিস্টিকস
+- [DEX Design Best Practices](/developers/docs/design-and-ux/dex-design-best-practice/) - ডিসেন্ট্রালাইজড এক্সচেঞ্জ ডিজাইন করার একটি গাইড
-## Web3 ডিজাইন কেস স্টাডি {#design-case-studies}
+## ওয়েব3 ডিজাইন কেস স্টাডি {#design-case-studies}
- [Deep Work Studio](https://www.deepwork.studio/case-studies)
-- [OpenSea-তে একটি NFT বিক্রি করা](https://builtformars.com/case-studies/opensea)
-- [ওয়ালেট UX টিয়ারডাউন: কিভাবে ওয়ালেট পরিবর্তন করা প্রয়োজন](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (ভিডিও, 20 মিনিট)
+- [Selling an NFT on OpenSea](https://builtformars.com/case-studies/opensea)
+- [Wallet UX teardown how wallets need to change](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (ভিডিও, 20 মিনিট)
## ডিজাইন বাউন্টি {#bounties}
- [Dework](https://app.dework.xyz/bounties)
-- [Buildbox হ্যাক্যাথন](https://app.buidlbox.io/)
-- [ETHGlobal হ্যাক্যাথন](https://ethglobal.com/)
+- [Buildbox hackathons](https://app.buidlbox.io/)
+- [ETHGlobal hackathons](https://ethglobal.com/)
## ডিজাইন DAO এবং কমিউনিটি {#design-daos-and-communities}
-পেশাদার কমিউনিটি-চালিত সংস্থাগুলিতে জড়িত হন বা অন্যান্য সদস্যদের সাথে ডিজাইন এবং গবেষণা সম্পর্কিত বিষয় এবং প্রবণতা নিয়ে আলোচনা করার জন্য ডিজাইন গ্রুপে যোগ দিন।
+পেশাদার কমিউনিটি-চালিত সংস্থাগুলোতে যুক্ত হোন অথবা অন্যান্য সদস্যদের সাথে ডিজাইন এবং গবেষণা সম্পর্কিত বিষয় ও ট্রেন্ড নিয়ে আলোচনা করতে ডিজাইন গ্রুপগুলোতে যোগ দিন।
- [Vectordao.com](https://vectordao.com/)
- [Deepwork.studio](https://www.deepwork.studio/)
@@ -74,13 +75,13 @@ lang: bn
## ডিজাইন সিস্টেম এবং অন্যান্য ডিজাইন রিসোর্স {#design-systems-and-resources}
-- [Optimism ডিজাইন](https://www.figma.com/@optimism) (Figma)
-- [Ethereum.org ডিজাইন সিস্টেম](https://www.figma.com/@ethdotorg) (Figma)
-- [Finity, Polygon-এর একটি ডিজাইন সিস্টেম](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma)
-- [Kleros ডিজাইন সিস্টেম](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma)
-- [Safe ডিজাইন সিস্টেম](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma)
-- [ENS ডিজাইন সিস্টেম](https://thorin.ens.domains/)
-- [Mirror ডিজাইন সিস্টেম](https://degen-xyz.vercel.app/)
+- [Optimism Design](https://www.figma.com/@optimism) (Figma)
+- [Ethereum.org Design system](https://www.figma.com/@ethdotorg) (Figma)
+- [Finity, a design system by Polygon](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma)
+- [Kleros Design System](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma)
+- [Safe Design System](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma)
+- [ENS Design system](https://thorin.ens.domains/)
+- [Mirror Design System](https://degen-xyz.vercel.app/)
-**এই পৃষ্ঠায় তালিকাভুক্ত নিবন্ধ এবং প্রকল্পগুলি অফিসিয়াল অনুমোদন নয়**, এবং শুধুমাত্র তথ্যের উদ্দেশ্যে প্রদান করা হয়েছে।
-আমরা আমাদের [তালিকাভুক্তকরণ নীতি](/contributing/design/adding-design-resources)-এর মানদণ্ডের উপর ভিত্তি করে এই পৃষ্ঠায় লিঙ্ক যুক্ত করি। আপনি যদি চান আমরা কোনো প্রকল্প/নিবন্ধ যোগ করি, তাহলে [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md)-এ এই পৃষ্ঠাটি সম্পাদনা করুন।
+**এই পৃষ্ঠায় তালিকাভুক্ত আর্টিকেল এবং প্রজেক্টগুলো কোনো অফিসিয়াল অনুমোদন নয়**, এবং এগুলো শুধুমাত্র তথ্য প্রদানের উদ্দেশ্যে দেওয়া হয়েছে।
+আমরা আমাদের [লিস্টিং পলিসি](/contributing/design/adding-design-resources)-এর মানদণ্ডের ওপর ভিত্তি করে এই পৃষ্ঠায় লিংক যোগ করি। আপনি যদি চান আমরা কোনো প্রজেক্ট/আর্টিকেল যোগ করি, তবে [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md)-এ এই পৃষ্ঠাটি এডিট করুন।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/development-networks/index.md b/public/content/translations/bn/developers/docs/development-networks/index.md
index c48e8c3e96b..cd9f76802bc 100644
--- a/public/content/translations/bn/developers/docs/development-networks/index.md
+++ b/public/content/translations/bn/developers/docs/development-networks/index.md
@@ -1,71 +1,75 @@
---
-title: "ডেভেলপমেন্ট নেটওয়ার্ক"
-description: "ডেভেলপমেন্ট নেটওয়ার্ক এবং ইথেরিয়াম অ্যাপ্লিকেশন তৈরিতে সাহায্য করার জন্য উপলব্ধ টুলগুলির একটি ওভারভিউ।"
+title: ডেভেলপমেন্ট নেটওয়ার্ক
+description: ডেভেলপমেন্ট নেটওয়ার্ক এবং ইথিরিয়াম অ্যাপ্লিকেশন তৈরিতে সাহায্য করার জন্য উপলব্ধ টুলগুলোর একটি ওভারভিউ।
lang: bn
---
-স্মার্ট কন্ট্র্যাক্ট সহ একটি ইথেরিয়াম অ্যাপ্লিকেশন তৈরি করার সময়, আপনি এটিকে ডিপ্লয় করার আগে এটি কীভাবে কাজ করে তা দেখার জন্য একটি স্থানীয় নেটওয়ার্কে চালাতে চাইবেন।
+স্মার্ট কন্ট্রাক্ট দিয়ে একটি [ইথিরিয়াম](/) অ্যাপ্লিকেশন তৈরি করার সময়, এটি ডিপ্লয় করার আগে কীভাবে কাজ করে তা দেখার জন্য আপনি এটিকে একটি লোকাল নেটওয়ার্কে চালাতে চাইবেন।
-ওয়েব ডেভেলপমেন্টের জন্য আপনি আপনার কম্পিউটারে যেভাবে একটি স্থানীয় সার্ভার চালাতে পারেন, সেভাবেই আপনার dapp পরীক্ষা করার জন্য একটি স্থানীয় ব্লকচেইন ইনস্ট্যান্স তৈরি করতে আপনি একটি ডেভেলপমেন্ট নেটওয়ার্ক ব্যবহার করতে পারেন। এই ইথেরিয়াম ডেভেলপমেন্ট নেটওয়ার্কগুলি এমন বৈশিষ্ট্য সরবরাহ করে যা একটি পাবলিক টেস্টনেটের চেয়ে অনেক দ্রুত পুনরাবৃত্তির অনুমতি দেয় (উদাহরণস্বরূপ আপনাকে টেস্টনেট ফসেট থেকে ETH অর্জন করার সাথে ডিল করতে হবে না)।
+ওয়েব ডেভেলপমেন্টের জন্য আপনি যেমন আপনার কম্পিউটারে একটি লোকাল সার্ভার চালাতে পারেন, ঠিক তেমনি আপনার ডিএ্যাপ পরীক্ষা করার জন্য একটি লোকাল ব্লকচেইন ইনস্ট্যান্স তৈরি করতে আপনি একটি ডেভেলপমেন্ট নেটওয়ার্ক ব্যবহার করতে পারেন। এই ইথিরিয়াম ডেভেলপমেন্ট নেটওয়ার্কগুলো এমন সব ফিচার প্রদান করে যা একটি পাবলিক টেস্টনেট-এর চেয়ে অনেক দ্রুত ইটারেশনের সুযোগ দেয় (উদাহরণস্বরূপ, আপনাকে কোনো টেস্টনেট ফাসেট থেকে ETH সংগ্রহ করার ঝামেলা পোহাতে হবে না)।
## পূর্বশর্ত {#prerequisites}
-ডেভেলপমেন্ট নেটওয়ার্কে প্রবেশ করার আগে আপনার [ইথেরিয়াম স্ট্যাকের মূল বিষয়গুলি](/developers/docs/ethereum-stack/) এবং [ইথেরিয়াম নেটওয়ার্কগুলি](/developers/docs/networks/) বোঝা উচিত।
+ডেভেলপমেন্ট নেটওয়ার্ক সম্পর্কে জানার আগে আপনার [ইথিরিয়াম স্ট্যাকের বেসিক](/developers/docs/ethereum-stack/) এবং [ইথিরিয়াম নেটওয়ার্ক](/developers/docs/networks/) সম্পর্কে বোঝা উচিত।
-## একটি ডেভেলপমেন্ট নেটওয়ার্ক কী? {#what-is-a-development-network}
+## ডেভেলপমেন্ট নেটওয়ার্ক কী? {#what-is-a-development-network}
-ডেভেলপমেন্ট নেটওয়ার্কগুলি মূলত ইথেরিয়াম ক্লায়েন্ট (ইথেরিয়ামের বাস্তবায়ন) যা বিশেষত স্থানীয় ডেভেলপমেন্টের জন্য ডিজাইন করা হয়েছে।
+ডেভেলপমেন্ট নেটওয়ার্কগুলো মূলত ইথিরিয়াম ক্লায়েন্ট (ইথিরিয়ামের ইমপ্লিমেন্টেশন) যা বিশেষভাবে লোকাল ডেভেলপমেন্টের জন্য ডিজাইন করা হয়েছে।
-**কেন শুধু স্থানীয়ভাবে একটি স্ট্যান্ডার্ড ইথেরিয়াম নোড চালাবেন না?**
+**কেন শুধু একটি স্ট্যান্ডার্ড ইথিরিয়াম নোড লোকালি চালানো হয় না?**
-আপনি _পারেন_ [একটি নোড চালাতে](/developers/docs/nodes-and-clients/#running-your-own-node) কিন্তু যেহেতু ডেভেলপমেন্ট নেটওয়ার্কগুলি ডেভেলপমেন্টের জন্য উদ্দেশ্য-নির্মিত, তাই তারা প্রায়শই সুবিধাজনক বৈশিষ্ট্য সহ আসে যেমন:
+আপনি চাইলে [একটি নোড চালাতে পারেন](/developers/docs/nodes-and-clients/#running-your-own-node), কিন্তু যেহেতু ডেভেলপমেন্ট নেটওয়ার্কগুলো বিশেষভাবে ডেভেলপমেন্টের উদ্দেশ্যে তৈরি, তাই এগুলোতে প্রায়ই সুবিধাজনক ফিচার থাকে, যেমন:
-- আপনার স্থানীয় ব্লকচেইনকে ডেটা দিয়ে নির্ণায়কভাবে সীড করা (যেমন, ETH ব্যালেন্স সহ অ্যাকাউন্ট)।
-- এটি প্রাপ্ত প্রতিটি ট্রানজ্যাকশনের সাথে সাথে, ক্রমানুসারে এবং কোনো বিলম্ব ছাড়াই ব্লক তৈরি করা
+- আপনার লোকাল ব্লকচেইনকে ডেটা দিয়ে ডিটারমিনিস্টিকভাবে সিড করা (যেমন, ETH ব্যালেন্সসহ অ্যাকাউন্ট)
+- প্রতিটি লেনদেন পাওয়ার সাথে সাথে কোনো বিলম্ব ছাড়াই ক্রমানুসারে তাৎক্ষণিকভাবে ব্লকস তৈরি করা
- উন্নত ডিবাগিং এবং লগিং কার্যকারিতা
-## উপলব্ধ টুলস {#available-projects}
+## উপলব্ধ টুলগুলো {#available-projects}
-**নোট**: বেশিরভাগ [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/) একটি অন্তর্নির্মিত ডেভেলপমেন্ট নেটওয়ার্ক অন্তর্ভুক্ত করে। আপনার [স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করতে](/developers/local-environment/) আমরা একটি ফ্রেমওয়ার্ক দিয়ে শুরু করার পরামর্শ দিই।
+**নোট**: বেশিরভাগ [ডেভেলপমেন্ট ফ্রেমওয়ার্কে](/developers/docs/frameworks/) একটি বিল্ট-ইন ডেভেলপমেন্ট নেটওয়ার্ক অন্তর্ভুক্ত থাকে। আমরা আপনার [লোকাল ডেভেলপমেন্ট পরিবেশ সেট আপ](/developers/local-environment/) করার জন্য একটি ফ্রেমওয়ার্ক দিয়ে শুরু করার পরামর্শ দিই।
-### Hardhat নেটওয়ার্ক {#hardhat-network}
+### Hardhat Network {#hardhat-network}
-ডেভেলপমেন্টের জন্য ডিজাইন করা একটি স্থানীয় ইথেরিয়াম নেটওয়ার্ক। এটি আপনাকে আপনার কন্ট্র্যাক্ট ডিপ্লয় করতে, আপনার পরীক্ষা চালাতে এবং আপনার কোড ডিবাগ করতে দেয়।
+ডেভেলপমেন্টের জন্য ডিজাইন করা একটি লোকাল ইথিরিয়াম নেটওয়ার্ক। এটি আপনাকে আপনার কন্ট্রাক্ট ডিপ্লয় করতে, টেস্ট রান করতে এবং কোড ডিবাগ করতে দেয়।
-Hardhat নেটওয়ার্ক Hardhat-এর সাথে বিল্ট-ইন আসে, যা পেশাদারদের জন্য একটি ইথেরিয়াম ডেভেলপমেন্ট এনভায়রনমেন্ট।
+Hardhat Network পেশাদারদের জন্য একটি ইথিরিয়াম ডেভেলপমেন্ট পরিবেশ Hardhat-এর সাথে বিল্ট-ইন আসে।
- [ওয়েবসাইট](https://hardhat.org/)
- [GitHub](https://github.com/NomicFoundation/hardhat)
-### স্থানীয় বিকন চেইন {#local-beacon-chains}
+### লোকাল বিকন চেইন {#local-beacon-chains}
-কিছু কনসেন্সাস ক্লায়েন্টের পরীক্ষার উদ্দেশ্যে স্থানীয় বিকন চেইন চালু করার জন্য অন্তর্নির্মিত টুলস রয়েছে। Lighthouse, Nimbus এবং Lodestar-এর জন্য নির্দেশাবলী উপলব্ধ আছে:
+কিছু কনসেন্সাস ক্লায়েন্ট-এর টেস্টিংয়ের উদ্দেশ্যে লোকাল বিকন চেইন চালু করার জন্য বিল্ট-ইন টুল রয়েছে। Lighthouse, Nimbus এবং Lodestar-এর জন্য নির্দেশিকা উপলব্ধ রয়েছে:
-- [Lodestar ব্যবহার করে স্থানীয় টেস্টনেট](https://chainsafe.github.io/lodestar/contribution/advanced-topics/setting-up-a-testnet#post-merge-local-testnet/)
-- [Lighthouse ব্যবহার করে স্থানীয় টেস্টনেট](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets)
+- [Lodestar ব্যবহার করে লোকাল টেস্টনেট](https://chainsafe.github.io/lodestar/contribution/advanced-topics/setting-up-a-testnet#post-merge-local-testnet/)
+- [Lighthouse ব্যবহার করে লোকাল টেস্টনেট](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets)
-### পাবলিক ইথেরিয়াম টেস্ট-চেইন {#public-beacon-testchains}
+### পাবলিক ইথিরিয়াম টেস্ট-চেইন {#public-beacon-testchains}
-ইথেরিয়ামের দুটি রক্ষণাবেক্ষণ করা পাবলিক টেস্ট ইমপ্লিমেন্টেশনও রয়েছে: Sepolia এবং Hoodi। দীর্ঘমেয়াদী সাপোর্ট সহ প্রস্তাবিত টেস্টনেট হলো Hoodi, যেখানে যে কেউ ভ্যালিডেট করতে স্বাধীন। Sepolia একটি অনুমতিপ্রাপ্ত ভ্যালিডেটর সেট ব্যবহার করে, যার অর্থ এই টেস্টনেটে নতুন ভ্যালিডেটরদের জন্য কোনো সাধারণ অ্যাক্সেস নেই।
+ইথিরিয়ামের দুটি মেইনটেইন করা পাবলিক টেস্ট ইমপ্লিমেন্টেশনও রয়েছে: Sepolia এবং Hoodi। দীর্ঘমেয়াদী সাপোর্টসহ প্রস্তাবিত টেস্টনেট হলো Hoodi, যেখানে যে কেউ স্বাধীনভাবে ভ্যালিডেট করতে পারে। Sepolia একটি পারমিশনড ভ্যালিডেটর সেট ব্যবহার করে, যার মানে হলো এই টেস্টনেট-এ নতুন ভ্যালিডেটরস-এর জন্য কোনো সাধারণ অ্যাক্সেস নেই।
- [Hoodi স্টেকিং লঞ্চপ্যাড](https://hoodi.launchpad.ethereum.org/)
-### Kurtosis ইথেরিয়াম প্যাকেজ {#kurtosis}
+### Kurtosis ইথিরিয়াম প্যাকেজ {#kurtosis}
-Kurtosis হলো মাল্টি-কন্টেইনার টেস্ট এনভায়রনমেন্টের জন্য একটি বিল্ড সিস্টেম যা ডেভেলপারদের স্থানীয়ভাবে ব্লকচেইন নেটওয়ার্কের পুনরুৎপাদনযোগ্য ইনস্ট্যান্স চালু করতে সক্ষম করে।
+Kurtosis হলো মাল্টি-কন্টেইনার টেস্ট পরিবেশের জন্য একটি বিল্ড সিস্টেম যা ডেভেলপারদের লোকালি ব্লকচেইন নেটওয়ার্কের রিপ্রোডিউসিবল ইনস্ট্যান্স চালু করতে সক্ষম করে।
-ইথেরিয়াম Kurtosis প্যাকেজটি Docker বা Kubernetes-এর উপর একটি প্যারামিটারাইজযোগ্য, অত্যন্ত স্কেলেবল এবং ব্যক্তিগত ইথেরিয়াম টেস্টনেটকে দ্রুত ইনস্ট্যান্টিয়েট করতে ব্যবহার করা যেতে পারে। প্যাকেজটি সমস্ত প্রধান এক্সিকিউশন লেয়ার (EL) এবং কনসেন্সাস লেয়ার (CL) ক্লায়েন্টদের সাপোর্ট করে। Kurtosis সুন্দরভাবে ইথেরিয়াম কোর ইনফ্রাস্ট্রাকচার সম্পর্কিত ভ্যালিডেশন এবং টেস্টিং ওয়ার্কফ্লোতে ব্যবহারের জন্য একটি প্রতিনিধিত্বকারী নেটওয়ার্কের জন্য সমস্ত স্থানীয় পোর্ট ম্যাপিং এবং পরিষেবা সংযোগগুলি পরিচালনা করে।
+ইথিরিয়াম Kurtosis প্যাকেজটি Docker বা Kubernetes-এর ওপর একটি প্যারামিটারাইজেবল, হাইলি স্কেলেবল এবং প্রাইভেট ইথিরিয়াম টেস্টনেট দ্রুত ইনস্ট্যানশিয়েট করতে ব্যবহার করা যেতে পারে। প্যাকেজটি সমস্ত প্রধান এক্সিকিউশন লেয়ার (EL) এবং কনসেন্সাস লেয়ার (CL) ক্লায়েন্ট সমর্থন করে। ইথিরিয়াম কোর ইনফ্রাস্ট্রাকচার সম্পর্কিত ভ্যালিডেশন এবং টেস্টিং ওয়ার্কফ্লোতে ব্যবহার করার জন্য Kurtosis একটি রিপ্রেজেন্টেটিভ নেটওয়ার্কের জন্য সমস্ত লোকাল পোর্ট ম্যাপিং এবং সার্ভিস কানেকশনগুলো সুন্দরভাবে পরিচালনা করে।
-- [ইথেরিয়াম নেটওয়ার্ক প্যাকেজ](https://github.com/kurtosis-tech/ethereum-package)
+- [ইথিরিয়াম নেটওয়ার্ক প্যাকেজ](https://github.com/kurtosis-tech/ethereum-package)
- [ওয়েবসাইট](https://www.kurtosis.com/)
- [GitHub](https://github.com/kurtosis-tech/kurtosis)
-- [নথিপত্র](https://docs.kurtosis.com/)
+- [ডকুমেন্টেশন](https://docs.kurtosis.com/)
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত টপিকগুলো {#related-topics}
-- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
-- [একটি স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করুন](/developers/local-environment/)
+- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
+- [একটি লোকাল ডেভেলপমেন্ট পরিবেশ সেট আপ করুন](/developers/local-environment/)
+
+## টিউটোরিয়াল: ইথিরিয়ামে ডেভেলপমেন্ট নেটওয়ার্ক এবং টেস্টিং পরিবেশ {#tutorials}
+
+- [একটি মাল্টি-ক্লায়েন্ট লোকাল ইথিরিয়াম টেস্টনেট দিয়ে ডিএ্যাপস তৈরি এবং পরীক্ষা করুন](/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/) _– ডিএ্যাপ ডেভেলপমেন্ট এবং টেস্টিংয়ের জন্য Kurtosis দিয়ে কীভাবে একটি লোকাল মাল্টি-ক্লায়েন্ট ইথিরিয়াম টেস্টনেট চালু করবেন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/ethereum-stack/index.md b/public/content/translations/bn/developers/docs/ethereum-stack/index.md
index 8e68181c133..9bb9662cccd 100644
--- a/public/content/translations/bn/developers/docs/ethereum-stack/index.md
+++ b/public/content/translations/bn/developers/docs/ethereum-stack/index.md
@@ -1,61 +1,61 @@
---
-title: "Ethereum স্ট্যাকের ভূমিকা"
-description: "Ethereum স্ট্যাকের বিভিন্ন লেয়ার এবং কীভাবে সেগুলি একসাথে ফিট করে তার একটি ওয়াকথ্রু।"
+title: ইথিরিয়াম স্ট্যাকের পরিচিতি
+description: ইথিরিয়াম স্ট্যাকের বিভিন্ন লেয়ার এবং সেগুলো কীভাবে একসাথে কাজ করে তার একটি নির্দেশিকা।
lang: bn
---
-যেকোনও সফটওয়্যার স্ট্যাকের মতোই, আপনার লক্ষ্যের উপর নির্ভর করে সম্পূর্ণ "Ethereum স্ট্যাক" প্রজেক্ট থেকে প্রজেক্টে ভিন্ন হবে।
+যেকোনো সফটওয়্যার স্ট্যাকের মতো, সম্পূর্ণ "ইথিরিয়াম স্ট্যাক" আপনার লক্ষ্যের ওপর ভিত্তি করে প্রজেক্ট অনুযায়ী ভিন্ন হবে।
-তবে, Ethereum-এর মূল উপাদান রয়েছে যা সফটওয়্যার অ্যাপ্লিকেশনগুলি কীভাবে Ethereum ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করে তার জন্য একটি মানসিক মডেল প্রদান করতে সহায়তা করে। স্ট্যাকের লেয়ারগুলি বোঝা আপনাকে সেই বিভিন্ন উপায়গুলি বুঝতে সাহায্য করবে যার মাধ্যমে Ethereum সফ্টওয়্যার প্রজেক্টগুলিতে একত্রিত করা যেতে পারে।
+তবে, ইথিরিয়ামের কিছু মূল উপাদান রয়েছে যা সফটওয়্যার অ্যাপ্লিকেশনগুলো কীভাবে ইথিরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করে তার একটি মানসিক মডেল প্রদান করতে সাহায্য করে। স্ট্যাকের লেয়ারগুলো বুঝতে পারলে ইথিরিয়ামকে কীভাবে বিভিন্ন উপায়ে সফটওয়্যার প্রজেক্টে যুক্ত করা যায় তা বুঝতে আপনার সুবিধা হবে।
-## স্তর 1: Ethereum ভার্চুয়াল মেশিন {#ethereum-virtual-machine}
+## লেভেল 1: ইথিরিয়াম ভার্চুয়াল মেশিন {#ethereum-virtual-machine}
-[Ethereum ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/) হলো Ethereum-এ স্মার্ট কন্ট্র্যাক্টের জন্য রানটাইম এনভায়রনমেন্ট। Ethereum ব্লকচেইনের সমস্ত স্মার্ট কন্ট্র্যাক্ট এবং অবস্থার পরিবর্তন [ট্রানজ্যাকশন](/developers/docs/transactions/) দ্বারা নির্বাহ করা হয়। EVM, Ethereum নেটওয়ার্কের সমস্ত ট্রানজ্যাকশন প্রসেসিং পরিচালনা করে।
+[ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/) হলো ইথিরিয়ামে স্মার্ট কন্ট্রাক্টের রানটাইম এনভায়রনমেন্ট। ইথিরিয়াম ব্লকচেইনে সমস্ত স্মার্ট কন্ট্রাক্ট এবং স্টেট পরিবর্তনগুলো [লেনদেন](/developers/docs/transactions/)-এর মাধ্যমে এক্সিকিউট করা হয়। EVM ইথিরিয়াম নেটওয়ার্কের সমস্ত লেনদেন প্রক্রিয়াকরণ পরিচালনা করে।
-যেকোনো ভার্চুয়াল মেশিনের মতোই, EVM এক্সিকিউটিং কোড এবং এক্সিকিউটিং মেশিন (একটি Ethereum নোড) এর মধ্যে একটি অ্যাবস্ট্র্যাকশন লেভেল তৈরি করে। বর্তমানে, EVM বিশ্বজুড়ে বিতরণ করা হাজার হাজার নোডে চলছে।
+যেকোনো ভার্চুয়াল মেশিনের মতো, EVM এক্সিকিউটিং কোড এবং এক্সিকিউটিং মেশিনের (একটি ইথিরিয়াম নোড) মধ্যে একটি অ্যাবস্ট্রাকশন লেয়ার তৈরি করে। বর্তমানে, EVM বিশ্বজুড়ে ডিস্ট্রিবিউটেড হাজার হাজার নোডে চলছে।
-ভিতরে ভিতরে, EVM নির্দিষ্ট কাজ সম্পাদন করার জন্য অপকোড নির্দেশাবলীর একটি সেট ব্যবহার করে। এই (140টি অনন্য) অপকোডগুলি EVM-কে [Turing-complete](https://en.wikipedia.org/wiki/Turing_completeness) হতে দেয়, যার মানে হল পর্যাপ্ত রিসোর্স থাকলে EVM প্রায় যেকোনো কিছু গণনা করতে সক্ষম।
+নেপথ্যে, EVM নির্দিষ্ট কাজগুলো এক্সিকিউট করার জন্য এক সেট অপকোড (opcode) নির্দেশাবলী ব্যবহার করে। এই (140টি অনন্য) অপকোডগুলো EVM-কে [টুরিং-কমপ্লিট (Turing-complete)](https://en.wikipedia.org/wiki/Turing_completeness) হতে সাহায্য করে, যার মানে হলো পর্যাপ্ত রিসোর্স দেওয়া হলে EVM প্রায় যেকোনো কিছু গণনা করতে সক্ষম।
-একজন ডিএ্যাপ ডেভেলপার হিসেবে, আপনার EVM সম্পর্কে এর অস্তিত্ব এবং এটি ডাউনটাইম ছাড়াই নির্ভরযোগ্যভাবে Ethereum-এর সমস্ত অ্যাপ্লিকেশনকে শক্তি জোগায়, এর বাইরে খুব বেশি কিছু জানার দরকার নেই।
+একজন ডিএ্যাপ ডেভেলপার হিসেবে, EVM সম্পর্কে আপনার খুব বেশি কিছু জানার প্রয়োজন নেই, শুধু এটুকু জানলেই হবে যে এর অস্তিত্ব রয়েছে এবং এটি কোনো ডাউনটাইম ছাড়াই ইথিরিয়ামের সমস্ত অ্যাপ্লিকেশনকে নির্ভরযোগ্যভাবে শক্তি যোগায়।
-## স্তর 2: স্মার্ট কন্ট্র্যাক্ট {#smart-contracts}
+## লেভেল 2: স্মার্ট কন্ট্রাক্ট {#smart-contracts}
-[স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) হলো এক্সিকিউটেবল প্রোগ্রাম যা Ethereum ব্লকচেইনে চলে।
+[স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) হলো এক্সিকিউটেবল প্রোগ্রাম যা ইথিরিয়াম ব্লকচেইনে চলে।
-স্মার্ট কন্ট্র্যাক্টগুলি নির্দিষ্ট [প্রোগ্রামিং ভাষা](/developers/docs/smart-contracts/languages/) ব্যবহার করে লেখা হয় যা EVM বাইটকোডে (অপকোড নামক নিম্ন-স্তরের মেশিন নির্দেশাবলী) কম্পাইল হয়।
+স্মার্ট কন্ট্রাক্টগুলো নির্দিষ্ট [প্রোগ্রামিং ভাষা](/developers/docs/smart-contracts/languages/) ব্যবহার করে লেখা হয় যা EVM বাইটকোডে (লো-লেভেল মেশিন নির্দেশাবলী যাকে অপকোড বলা হয়) কম্পাইল হয়।
-স্মার্ট কন্ট্র্যাক্টগুলি কেবল ওপেন সোর্স লাইব্রেরি হিসেবেই কাজ করে না, তারা মূলত ওপেন API পরিষেবা যা সর্বদা চালু থাকে এবং বন্ধ করা যায় না। স্মার্ট কন্ট্র্যাক্টগুলি পাবলিক ফাংশন সরবরাহ করে যার সাথে ব্যবহারকারী এবং অ্যাপ্লিকেশনগুলি ([ডিএ্যাপস](/developers/docs/dapps/)) অনুমতি ছাড়াই ইন্টারঅ্যাক্ট করতে পারে। যেকোনো অ্যাপ্লিকেশন ফাংশনালিটি কম্পোজ করার জন্য ডিপ্লয় করা স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টিগ্রেট করতে পারে, যেমন [ডেটা ফিড](/developers/docs/oracles/) যোগ করা বা টোকেন সোয়াপ সমর্থন করা। এছাড়াও, যে কেউ তাদের অ্যাপ্লিকেশনের প্রয়োজন মেটাতে কাস্টম ফাংশনালিটি যোগ করার জন্য Ethereum-এ নতুন স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করতে পারে।
+স্মার্ট কন্ট্রাক্টগুলো কেবল ওপেন সোর্স লাইব্রেরি হিসেবেই কাজ করে না, এগুলো মূলত ওপেন API পরিষেবা যা সবসময় চলতে থাকে এবং এগুলোকে বন্ধ করা যায় না। স্মার্ট কন্ট্রাক্টগুলো পাবলিক ফাংশন প্রদান করে যার সাথে ব্যবহারকারী এবং অ্যাপ্লিকেশনগুলো ([ডিএ্যাপস](/developers/docs/dapps/)) কোনো অনুমতি ছাড়াই ইন্টারঅ্যাক্ট করতে পারে। যেকোনো অ্যাপ্লিকেশন ডিপ্লয় করা স্মার্ট কন্ট্রাক্টের সাথে যুক্ত হয়ে কার্যকারিতা তৈরি করতে পারে, যেমন [ডেটা ফিড](/developers/docs/oracles/) যোগ করা বা টোকেন সোয়াপ সমর্থন করা। এছাড়া, যেকোনো ব্যক্তি তাদের অ্যাপ্লিকেশনের চাহিদা মেটাতে কাস্টম কার্যকারিতা যোগ করার জন্য ইথিরিয়ামে নতুন স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে পারে।
-একজন ডিএ্যাপ ডেভেলপার হিসেবে, আপনি যদি Ethereum ব্লকচেইনে কাস্টম ফাংশনালিটি যোগ করতে চান তবেই আপনাকে স্মার্ট কন্ট্র্যাক্ট লিখতে হবে। আপনি হয়তো দেখবেন যে আপনি শুধুমাত্র বিদ্যমান স্মার্ট কন্ট্র্যাক্টগুলির সাথে ইন্টিগ্রেট করেই আপনার প্রজেক্টের বেশিরভাগ বা সমস্ত প্রয়োজন পূরণ করতে পারেন, উদাহরণস্বরূপ যদি আপনি স্টেবলকয়েনে পেমেন্ট সমর্থন করতে চান বা টোকেনের ডিসেন্ট্রালাইজড এক্সচেঞ্জ সক্ষম করতে চান।
+একজন ডিএ্যাপ ডেভেলপার হিসেবে, আপনি যদি ইথিরিয়াম ব্লকচেইনে কাস্টম কার্যকারিতা যোগ করতে চান তবেই আপনাকে স্মার্ট কন্ট্রাক্ট লিখতে হবে। আপনি হয়তো দেখতে পাবেন যে শুধুমাত্র বিদ্যমান স্মার্ট কন্ট্রাক্টগুলোর সাথে যুক্ত হয়েই আপনি আপনার প্রজেক্টের বেশিরভাগ বা সমস্ত চাহিদা পূরণ করতে পারেন, উদাহরণস্বরূপ যদি আপনি স্টেবলকয়েনে পেমেন্ট সমর্থন করতে চান বা টোকেনের ডিসেন্ট্রালাইজড এক্সচেঞ্জ সক্ষম করতে চান।
-## স্তর 3: Ethereum নোড {#ethereum-nodes}
+## লেভেল 3: ইথিরিয়াম নোড {#ethereum-nodes}
-একটি অ্যাপ্লিকেশনের Ethereum ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য, এটিকে অবশ্যই একটি [Ethereum নোডের](/developers/docs/nodes-and-clients/) সাথে সংযোগ স্থাপন করতে হবে। একটি নোডের সাথে সংযোগ স্থাপন করলে আপনি ব্লকচেইন ডেটা পড়তে এবং/অথবা নেটওয়ার্কে ট্রানজ্যাকশন পাঠাতে পারবেন।
+একটি অ্যাপ্লিকেশনের ইথিরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য, এটিকে অবশ্যই একটি [ইথিরিয়াম নোড](/developers/docs/nodes-and-clients/)-এর সাথে সংযুক্ত হতে হবে। একটি নোডের সাথে সংযুক্ত হলে আপনি ব্লকচেইন ডেটা পড়তে পারবেন এবং/অথবা নেটওয়ার্কে লেনদেন পাঠাতে পারবেন।
-Ethereum নোড হলো সফটওয়্যার চালিত কম্পিউটার - একটি Ethereum ক্লায়েন্ট। একটি ক্লায়েন্ট হলো Ethereum-এর একটি বাস্তবায়ন যা প্রতিটি ব্লকের সমস্ত ট্রানজ্যাকশন যাচাই করে, নেটওয়ার্ককে সুরক্ষিত এবং ডেটাকে নির্ভুল রাখে। **Ethereum নোডগুলিই হলো Ethereum ব্লকচেইন**। তারা সম্মিলিতভাবে Ethereum ব্লকচেইনের অবস্থা সংরক্ষণ করে এবং ব্লকচেইনের অবস্থা পরিবর্তন করার জন্য ট্রানজ্যাকশনের উপর কনসেন্সাসে পৌঁছায়।
+ইথিরিয়াম নোডগুলো হলো এমন কম্পিউটার যা সফটওয়্যার চালায় - একটি ইথিরিয়াম ক্লায়েন্ট। ক্লায়েন্ট হলো ইথিরিয়ামের একটি ইমপ্লিমেন্টেশন যা প্রতিটি ব্লকের সমস্ত লেনদেন যাচাই করে, নেটওয়ার্ককে সুরক্ষিত রাখে এবং ডেটা নির্ভুল রাখে। **ইথিরিয়াম নোডগুলোই হলো ইথিরিয়াম ব্লকচেইন**। এগুলো সম্মিলিতভাবে ইথিরিয়াম ব্লকচেইনের স্টেট সংরক্ষণ করে এবং ব্লকচেইনের স্টেট পরিবর্তন করার জন্য লেনদেনের ওপর কনসেন্সাস-এ পৌঁছায়।
-আপনার অ্যাপ্লিকেশনটিকে একটি Ethereum নোডের সাথে ([JSON-RPC API](/developers/docs/apis/json-rpc/) এর মাধ্যমে) সংযোগ করে, আপনার অ্যাপ্লিকেশনটি ব্লকচেইন থেকে ডেটা পড়তে (যেমন ব্যবহারকারী অ্যাকাউন্টের ব্যালেন্স) এবং নেটওয়ার্কে নতুন ট্রানজ্যাকশন ব্রডকাস্ট করতে (যেমন ব্যবহারকারী অ্যাকাউন্টগুলির মধ্যে ETH স্থানান্তর করা বা স্মার্ট কন্ট্র্যাক্টের ফাংশনগুলি এক্সিকিউট করা) সক্ষম হয়।
+আপনার অ্যাপ্লিকেশনকে একটি ইথিরিয়াম নোডের সাথে সংযুক্ত করার মাধ্যমে ([JSON-RPC API](/developers/docs/apis/json-rpc/)-এর মাধ্যমে), আপনার অ্যাপ্লিকেশন ব্লকচেইন থেকে ডেটা পড়তে সক্ষম হয় (যেমন ব্যবহারকারীর একাউন্ট ব্যালেন্স) এবং সেইসাথে নেটওয়ার্কে নতুন লেনদেন সম্প্রচার করতে পারে (যেমন ব্যবহারকারীর একাউন্টগুলোর মধ্যে ETH স্থানান্তর করা বা স্মার্ট কন্ট্রাক্টের ফাংশনগুলো এক্সিকিউট করা)।
-## স্তর 4: Ethereum ক্লায়েন্ট API {#ethereum-client-apis}
+## লেভেল 4: ইথিরিয়াম ক্লায়েন্ট API {#ethereum-client-apis}
-অনেক সুবিধাজনক লাইব্রেরি (Ethereum-এর ওপেন সোর্স কমিউনিটি দ্বারা নির্মিত এবং রক্ষণাবেক্ষণ করা) আপনার অ্যাপ্লিকেশনগুলিকে Ethereum ব্লকচেইনের সাথে সংযোগ স্থাপন এবং যোগাযোগ করতে দেয়।
+অনেক সুবিধাজনক লাইব্রেরি (যা ইথিরিয়ামের ওপেন সোর্স কমিউনিটি দ্বারা তৈরি এবং পরিচালিত) আপনার অ্যাপ্লিকেশনগুলোকে ইথিরিয়াম ব্লকচেইনের সাথে সংযুক্ত হতে এবং যোগাযোগ করতে দেয়।
-যদি আপনার ব্যবহারকারী-মুখী অ্যাপ্লিকেশনটি একটি ওয়েব অ্যাপ হয়, আপনি সরাসরি আপনার ফ্রন্টএন্ডে একটি [JavaScript API](/developers/docs/apis/javascript/) `npm install` করতে পারেন। অথবা হয়তো আপনি একটি [Python](/developers/docs/programming-languages/python/) বা [Java](/developers/docs/programming-languages/java/) API ব্যবহার করে এই ফাংশনালিটি সার্ভার-সাইডে বাস্তবায়ন করতে পছন্দ করবেন।
+আপনার ব্যবহারকারী-মুখী অ্যাপ্লিকেশনটি যদি একটি ওয়েব অ্যাপ হয়, তবে আপনি সরাসরি আপনার ফ্রন্টএন্ডে একটি [জাভাস্ক্রিপ্ট API](/developers/docs/apis/javascript/) `npm install` করতে পারেন। অথবা হয়তো আপনি একটি [পাইথন](/developers/docs/programming-languages/python/) বা [জাভা](/developers/docs/programming-languages/java/) API ব্যবহার করে সার্ভার-সাইডে এই কার্যকারিতাটি ইমপ্লিমেন্ট করতে চাইবেন।
-যদিও এই API-গুলি স্ট্যাকের একটি অপরিহার্য অংশ নয়, তবে তারা সরাসরি একটি Ethereum নোডের সাথে ইন্টারঅ্যাক্ট করার অনেক জটিলতাকে অ্যাবস্ট্রাক্ট করে। তারা ইউটিলিটি ফাংশনও (যেমন, ETH-কে Gwei-তে রূপান্তর করা) সরবরাহ করে, তাই একজন ডেভেলপার হিসেবে আপনি Ethereum ক্লায়েন্টের জটিলতা নিয়ে কম সময় ব্যয় করতে পারেন এবং আপনার অ্যাপ্লিকেশনের নির্দিষ্ট ফাংশনালিটির উপর বেশি সময় মনোযোগ দিতে পারেন।
+যদিও এই API-গুলো স্ট্যাকের কোনো প্রয়োজনীয় অংশ নয়, এগুলো সরাসরি একটি ইথিরিয়াম নোডের সাথে ইন্টারঅ্যাক্ট করার অনেক জটিলতা দূর করে। এগুলো ইউটিলিটি ফাংশনও প্রদান করে (যেমন, ETH-কে Gwei-তে রূপান্তর করা) যাতে একজন ডেভেলপার হিসেবে আপনি ইথিরিয়াম ক্লায়েন্টগুলোর জটিলতা নিয়ে কম সময় ব্যয় করতে পারেন এবং আপনার অ্যাপ্লিকেশনের নির্দিষ্ট কার্যকারিতার ওপর বেশি সময় ফোকাস করতে পারেন।
-## স্তর 5: এন্ড-ইউজার অ্যাপ্লিকেশন {#end-user-applications}
+## লেভেল 5: এন্ড-ইউজার অ্যাপ্লিকেশন {#end-user-applications}
-স্ট্যাকের সর্বোচ্চ স্তরে রয়েছে ব্যবহারকারী-মুখী অ্যাপ্লিকেশন। এগুলি হলো স্ট্যান্ডার্ড অ্যাপ্লিকেশন যা আপনি আজ নিয়মিত ব্যবহার করেন এবং তৈরি করেন: প্রাথমিকভাবে ওয়েব এবং মোবাইল অ্যাপ।
+স্ট্যাকের শীর্ষ লেভেলে রয়েছে ব্যবহারকারী-মুখী অ্যাপ্লিকেশনগুলো। এগুলো হলো সেই স্ট্যান্ডার্ড অ্যাপ্লিকেশন যা আপনি বর্তমানে নিয়মিত ব্যবহার করেন এবং তৈরি করেন: মূলত ওয়েব এবং মোবাইল অ্যাপ।
-আপনি যেভাবে এই ইউজার ইন্টারফেসগুলি ডেভেলপ করেন তা মূলত অপরিবর্তিত থাকে। প্রায়শই ব্যবহারকারীদের জানার প্রয়োজন হবে না যে তারা যে অ্যাপ্লিকেশনটি ব্যবহার করছে তা একটি ব্লকচেইন ব্যবহার করে তৈরি করা হয়েছে।
+আপনি যেভাবে এই ইউজার ইন্টারফেসগুলো তৈরি করেন তা মূলত অপরিবর্তিত থাকে। প্রায়শই ব্যবহারকারীদের জানার প্রয়োজন হবে না যে তারা যে অ্যাপ্লিকেশনটি ব্যবহার করছে তা একটি ব্লকচেইন ব্যবহার করে তৈরি করা হয়েছে।
## আপনার স্ট্যাক বেছে নিতে প্রস্তুত? {#ready-to-choose-your-stack}
-আপনার Ethereum অ্যাপ্লিকেশনের জন্য একটি [লোকাল ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ](/developers/local-environment/) করতে আমাদের গাইডটি দেখুন।
+আপনার ইথিরিয়াম অ্যাপ্লিকেশনের জন্য [একটি লোকাল ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার](/developers/local-environment/) আমাদের গাইডটি দেখুন।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [একটি ওয়েব 3.0 অ্যাপ্লিকেশনের আর্কিটেকচার](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _প্রীতি কাসিরেড্ডি_
+- [একটি ওয়েব 3.0 অ্যাপ্লিকেশনের আর্কিটেকচার](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _প্রীতি কাসিরেড্ডি_
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/evm/index.md b/public/content/translations/bn/developers/docs/evm/index.md
index 91ff30ed91d..3cda364e9cf 100644
--- a/public/content/translations/bn/developers/docs/evm/index.md
+++ b/public/content/translations/bn/developers/docs/evm/index.md
@@ -1,88 +1,93 @@
---
-title: "ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)"
-description: "ইথেরিয়াম ভার্চুয়াল মেশিনের একটি পরিচিতি এবং এটি কীভাবে স্টেট, ট্রানজ্যাকশন এবং স্মার্ট কন্ট্র্যাক্টের সাথে সম্পর্কিত।"
+title: ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)
+description: ইথিরিয়াম ভার্চুয়াল মেশিন এবং স্টেট, লেনদেন ও স্মার্ট কন্ট্রাক্টের সাথে এর সম্পর্ক সম্পর্কে একটি পরিচিতি।
lang: bn
---
-ইথেরিয়াম ভার্চুয়াল মেশিন (EVM) একটি বিকেন্দ্রীভূত ভার্চুয়াল এনভায়রনমেন্ট যা সমস্ত Ethereum নোড জুড়ে ধারাবাহিকভাবে এবং সুরক্ষিতভাবে কোড এক্সিকিউট করে। নোডগুলি স্মার্ট কন্ট্র্যাক্ট এক্সিকিউট করার জন্য EVM চালায়, "[gas](/developers/docs/gas/)" ব্যবহার করে [অপারেশনগুলির](/developers/docs/evm/opcodes/) জন্য প্রয়োজনীয় কম্পিউটেশনাল প্রচেষ্টা পরিমাপ করে, যা কার্যকর রিসোর্স বরাদ্দ এবং নেটওয়ার্ক নিরাপত্তা নিশ্চিত করে।
+ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) হলো একটি ডিসেন্ট্রালাইজড ভার্চুয়াল পরিবেশ যা সমস্ত [Ethereum](/) নোড জুড়ে ধারাবাহিকভাবে এবং নিরাপদে কোড এক্সিকিউট করে। নোডগুলো স্মার্ট কন্ট্রাক্ট এক্সিকিউট করার জন্য EVM চালায়, [অপারেশনগুলোর](/developers/docs/evm/opcodes/) জন্য প্রয়োজনীয় কম্পিউটেশনাল প্রচেষ্টা পরিমাপ করতে "[গ্যাস](/developers/docs/gas/)" ব্যবহার করে, যা দক্ষ রিসোর্স বরাদ্দ এবং নেটওয়ার্ক নিরাপত্তা নিশ্চিত করে।
## পূর্বশর্ত {#prerequisites}
-EVM বোঝার জন্য কম্পিউটার সায়েন্সের কিছু সাধারণ পরিভাষা যেমন [bytes](https://wikipedia.org/wiki/Byte), [memory](https://wikipedia.org/wiki/Computer_memory), এবং একটি [stack](https://wikipedia.org/wiki/Stack_\(abstract_data_type\)) এর সাথে প্রাথমিক পরিচিতি থাকা প্রয়োজন। ক্রিপ্টোগ্রাফি/ব্লকচেইন ধারণা যেমন [hash functions](https://wikipedia.org/wiki/Cryptographic_hash_function) এবং [Merkle tree](https://wikipedia.org/wiki/Merkle_tree) এর সাথে পরিচিতি থাকলেও সহায়ক হবে।
+EVM বোঝার জন্য কম্পিউটার বিজ্ঞানের সাধারণ পরিভাষা যেমন [বাইট](https://wikipedia.org/wiki/Byte), [মেমরি](https://wikipedia.org/wiki/Computer_memory) এবং [স্ট্যাক]() সম্পর্কে প্রাথমিক ধারণা থাকা প্রয়োজন। এছাড়া ক্রিপ্টোগ্রাফি/ব্লকচেইন ধারণা যেমন [হ্যাস ফাংশন](https://wikipedia.org/wiki/Cryptographic_hash_function) এবং [মার্কেল ট্রি](https://wikipedia.org/wiki/Merkle_tree) সম্পর্কে ধারণা থাকাও সহায়ক হবে।
## লেজার থেকে স্টেট মেশিন {#from-ledger-to-state-machine}
-Bitcoin-এর মতো ব্লকচেইন বর্ণনা করার জন্য প্রায়শই 'ডিস্ট্রিবিউটেড লেজার'-এর উপমা ব্যবহার করা হয়, যা ক্রিপ্টোগ্রাফির মৌলিক টুলস ব্যবহার করে একটি বিকেন্দ্রীভূত কারেন্সি সক্ষম করে। লেজারটি কার্যকলাপের একটি রেকর্ড বজায় রাখে যা একটি নির্দিষ্ট নিয়মাবলীর সেটকে মেনে চলে, যা নির্ধারণ করে যে কেউ লেজারটি পরিবর্তন করার জন্য কী করতে পারে এবং কী করতে পারে না। উদাহরণস্বরূপ, একটি Bitcoin অ্যাড্রেস আগে যা পেয়েছে তার থেকে বেশি Bitcoin খরচ করতে পারে না। এই নিয়মগুলি Bitcoin এবং অন্যান্য অনেক ব্লকচেইনের সমস্ত ট্রানজ্যাকশনের ভিত্তি।
+বিটকয়েনের মতো ব্লকচেইন বর্ণনা করতে প্রায়শই 'ডিস্ট্রিবিউটেড লেজার' এর উপমা ব্যবহার করা হয়, যা ক্রিপ্টোগ্রাফি এর মৌলিক সরঞ্জামগুলো ব্যবহার করে একটি ডিসেন্ট্রালাইজড মুদ্রা সক্ষম করে। লেজার কার্যকলাপের একটি রেকর্ড বজায় রাখে যা অবশ্যই কিছু নিয়মের সেট মেনে চলে, যা নির্ধারণ করে লেজার পরিবর্তন করার জন্য কেউ কী করতে পারে এবং কী করতে পারে না। উদাহরণস্বরূপ, একটি বিটকয়েন এডড্রেস পূর্বে প্রাপ্ত পরিমাণের চেয়ে বেশি বিটকয়েন ব্যয় করতে পারে না। এই নিয়মগুলো বিটকয়েন এবং অন্যান্য অনেক ব্লকচেইন এর সমস্ত লেনদেন এর ভিত্তি।
-যদিও Ethereum-এর নিজস্ব নেটিভ ক্রিপটোকারেন্সি (ইথার) আছে যা প্রায় একই স্বজ্ঞাত নিয়মগুলি অনুসরণ করে, এটি একটি অনেক বেশি শক্তিশালী ফাংশনও সক্ষম করে: [smart contracts](/developers/docs/smart-contracts/)। এই আরও জটিল বৈশিষ্ট্যের জন্য, একটি আরও পরিশীলিত উপমার প্রয়োজন। ডিস্ট্রিবিউটেড লেজারের পরিবর্তে, Ethereum একটি ডিস্ট্রিবিউটেড [state machine](https://wikipedia.org/wiki/Finite-state_machine)। Ethereum-এর স্টেট হল একটি বিশাল ডেটা স্ট্রাকচার যা শুধুমাত্র সমস্ত অ্যাকাউন্ট এবং ব্যালেন্সই ধরে রাখে না, বরং একটি _মেশিন স্টেট_ ধারণ করে, যা একটি পূর্ব-নির্ধারিত নিয়মাবলীর সেট অনুযায়ী ব্লক থেকে ব্লকে পরিবর্তন হতে পারে, এবং যা ইচ্ছামত মেশিন কোড এক্সিকিউট করতে পারে। ব্লক থেকে ব্লকে স্টেট পরিবর্তনের নির্দিষ্ট নিয়মগুলি EVM দ্বারা সংজ্ঞায়িত হয়।
+যদিও ইথিরিয়ামের নিজস্ব নেটিভ ক্রিপটোকারেন্সি (ইথার) রয়েছে যা প্রায় হুবহু একই স্বজ্ঞাত নিয়ম অনুসরণ করে, এটি আরও অনেক শক্তিশালী ফাংশন সক্ষম করে: [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)। এই আরও জটিল বৈশিষ্ট্যের জন্য, আরও পরিশীলিত উপমা প্রয়োজন। একটি ডিস্ট্রিবিউটেড লেজার এর পরিবর্তে, ইথিরিয়াম হলো একটি ডিস্ট্রিবিউটেড [স্টেট মেশিন](https://wikipedia.org/wiki/Finite-state_machine)। ইথিরিয়ামের স্টেট হলো একটি বিশাল ডেটা স্ট্রাকচার যা কেবল সমস্ত একাউন্ট এবং ব্যালেন্সই ধারণ করে না, বরং একটি _মেশিন স্টেট_ ধারণ করে, যা পূর্ব-নির্ধারিত নিয়মের সেট অনুযায়ী ব্লক থেকে ব্লকে পরিবর্তিত হতে পারে এবং যা যেকোনো মেশিন কোড এক্সিকিউট করতে পারে। ব্লক থেকে ব্লকে স্টেট পরিবর্তনের নির্দিষ্ট নিয়মগুলো EVM দ্বারা সংজ্ঞায়িত করা হয়।
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে অভিযোজিত ডায়াগ্রাম_
+
+_চিত্রটি [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে গৃহীত_
-## Ethereum স্টেট ট্রানজিশন ফাংশন {#the-ethereum-state-transition-function}
+## ইথিরিয়াম স্টেট ট্রানজিশন ফাংশন {#the-ethereum-state-transition-function}
-EVM একটি গাণিতিক ফাংশনের মতো আচরণ করে: একটি ইনপুট দিলে, এটি একটি ডিটারমিনিস্টিক আউটপুট তৈরি করে। অতএব, Ethereum-কে আরও আনুষ্ঠানিকভাবে একটি **স্টেট ট্রানজিশন ফাংশন** হিসেবে বর্ণনা করা বেশ সহায়ক:
+EVM একটি গাণিতিক ফাংশনের মতো আচরণ করে: একটি ইনপুট দেওয়া হলে, এটি একটি ডিটারমিনিস্টিক আউটপুট তৈরি করে। তাই ইথিরিয়ামকে আরও আনুষ্ঠানিকভাবে একটি **স্টেট ট্রানজিশন ফাংশন** হিসেবে বর্ণনা করা বেশ সহায়ক:
```
Y(S, T)= S'
```
-একটি পুরানো বৈধ স্টেট `(S)` এবং নতুন বৈধ ট্রানজ্যাকশনের সেট `(T)` দেওয়া হলে, Ethereum স্টেট ট্রানজিশন ফাংশন `Y(S, T)` একটি নতুন বৈধ আউটপুট স্টেট `S'` তৈরি করে।
+একটি পুরানো বৈধ স্টেট `(S)` এবং বৈধ লেনদেন এর একটি নতুন সেট `(T)` দেওয়া হলে, ইথিরিয়াম স্টেট ট্রানজিশন ফাংশন `Y(S, T)` একটি নতুন বৈধ আউটপুট স্টেট `S'` তৈরি করে।
### স্টেট {#state}
-Ethereum-এর প্রসঙ্গে, স্টেট হল একটি বিশাল ডেটা স্ট্রাকচার যা [modified Merkle Patricia Trie](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) নামে পরিচিত, যা সমস্ত [অ্যাকাউন্টকে](/developers/docs/accounts/) হ্যাসের মাধ্যমে লিঙ্ক করে রাখে এবং ব্লকচেইনে সংরক্ষিত একটি একক রুট হ্যাসে পরিণত করা যায়।
+ইথিরিয়ামের প্রেক্ষাপটে, স্টেট হলো একটি বিশাল ডেটা স্ট্রাকচার যাকে [মডিফাইড মার্কেল প্যাট্রিসিয়া ট্রাই](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) বলা হয়, যা সমস্ত [একাউন্ট](/developers/docs/accounts/) হ্যাস দ্বারা সংযুক্ত রাখে এবং ব্লকচেইন এ সংরক্ষিত একটি একক রুট হ্যাস এ হ্রাসযোগ্য।
### লেনদেন {#transactions}
-লেনদেন হল অ্যাকাউন্ট থেকে ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত নির্দেশাবলী। দুই ধরনের ট্রানজ্যাকশন আছে: যেগুলি মেসেজ কলের ফলে হয় এবং যেগুলি কন্ট্র্যাক্ট তৈরির ফলে হয়।
+লেনদেন হলো একাউন্ট থেকে ক্রিপ্টোগ্রাফিক ভাবে স্বাক্ষরিত নির্দেশাবলী। দুই ধরনের লেনদেন রয়েছে: যেগুলো মেসেজ কলের ফলাফল এবং যেগুলো কন্ট্রাক্ট তৈরির ফলাফল।
-কন্ট্র্যাক্ট তৈরির ফলে একটি নতুন কন্ট্র্যাক্ট অ্যাকাউন্ট তৈরি হয়, যেখানে কম্পাইল করা [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/anatomy/) বাইটকোড থাকে। যখনই অন্য কোনো অ্যাকাউন্ট সেই কন্ট্র্যাক্টে মেসেজ কল করে, তখন এটি তার বাইটকোড এক্সিকিউট করে।
+কন্ট্রাক্ট তৈরির ফলে কম্পাইল করা [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/anatomy/) বাইটকোড ধারণকারী একটি নতুন কন্ট্রাক্ট একাউন্ট তৈরি হয়। যখনই অন্য কোনো একাউন্ট সেই কন্ট্রাক্টে মেসেজ কল করে, এটি তার বাইটকোড এক্সিকিউট করে।
## EVM নির্দেশাবলী {#evm-instructions}
-EVM একটি 1024 আইটেমের ডেপথ সহ [স্ট্যাক মেশিন](https://wikipedia.org/wiki/Stack_machine) হিসাবে এক্সিকিউট করে। প্রতিটি আইটেম একটি 256-বিটের শব্দ, যা 256-বিট ক্রিপ্টোগ্রাফি (যেমন Keccak-256 হ্যাস বা secp256k1 সিগনেচার) এর সাথে ব্যবহারের সুবিধার জন্য বেছে নেওয়া হয়েছিল।
+EVM 1024 আইটেমের গভীরতা সহ একটি [স্ট্যাক মেশিন](https://wikipedia.org/wiki/Stack_machine) হিসেবে এক্সিকিউট হয়। প্রতিটি আইটেম একটি 256-বিট শব্দ, যা 256-বিট ক্রিপ্টোগ্রাফি (যেমন Keccak-256 হ্যাস বা secp256k1 সিগনেচার) এর সাথে ব্যবহারের সুবিধার জন্য বেছে নেওয়া হয়েছিল।
-এক্সিকিউশনের সময়, EVM একটি ক্ষণস্থায়ী _মেমরি_ (একটি শব্দ-অ্যাড্রেসড বাইট অ্যারে হিসাবে) বজায় রাখে, যা ট্রানজ্যাকশনের মধ্যে স্থায়ী হয় না।
+এক্সিকিউশনের সময়, EVM একটি ক্ষণস্থায়ী _মেমরি_ (একটি শব্দ-সম্বোধিত বাইট অ্যারে হিসেবে) বজায় রাখে, যা লেনদেন এর মধ্যে স্থায়ী হয় না।
-### ক্ষণস্থায়ী স্টোরেজ
+### ট্রানজিয়েন্ট স্টোরেজ
-ক্ষণস্থায়ী স্টোরেজ হল একটি প্রতি-ট্রানজ্যাকশন কী-ভ্যালু স্টোর যা `TSTORE` এবং `TLOAD` অপকোডের মাধ্যমে অ্যাক্সেস করা হয়। এটি একই ট্রানজ্যাকশনের সময় সমস্ত অভ্যন্তরীণ কলের মধ্যে স্থায়ী হয় কিন্তু ট্রানজ্যাকশনের শেষে মুছে যায়। মেমরির মতো নয়, ক্ষণস্থায়ী স্টোরেজ এক্সিকিউশন ফ্রেমের পরিবর্তে EVM স্টেটের অংশ হিসাবে মডেল করা হয়, তবুও এটি গ্লোবাল স্টেটে প্রতিশ্রুতিবদ্ধ নয়। ক্ষণস্থায়ী স্টোরেজ একটি ট্রানজ্যাকশনের সময় অভ্যন্তরীণ কলের মধ্যে গ্যাস-সাশ্রয়ী অস্থায়ী স্টেট শেয়ারিং সক্ষম করে।
+ট্রানজিয়েন্ট স্টোরেজ হলো একটি প্রতি-লেনদেন কী-ভ্যালু স্টোর যা `TSTORE` এবং `TLOAD` অপকোডের মাধ্যমে এক্সেস করা হয়। এটি একই লেনদেন এর সময় সমস্ত অভ্যন্তরীণ কল জুড়ে স্থায়ী হয় তবে লেনদেন এর শেষে মুছে ফেলা হয়। মেমরির বিপরীতে, ট্রানজিয়েন্ট স্টোরেজকে এক্সিকিউশন ফ্রেমের পরিবর্তে EVM স্টেট এর অংশ হিসেবে মডেল করা হয়, তবুও এটি গ্লোবাল স্টেট এ প্রতিশ্রুতিবদ্ধ নয়। ট্রানজিয়েন্ট স্টোরেজ একটি লেনদেন এর সময় অভ্যন্তরীণ কল জুড়ে গ্যাস-সাশ্রয়ী অস্থায়ী স্টেট শেয়ারিং সক্ষম করে।
-### সংগ্রহস্থল
+### স্টোরেজ
-কন্ট্র্যাক্টে একটি Merkle Patricia _স্টোরেজ_ ট্রাই (একটি শব্দ-অ্যাড্রেসযোগ্য শব্দ অ্যারে হিসাবে) থাকে, যা সংশ্লিষ্ট অ্যাকাউন্টের সাথে যুক্ত এবং গ্লোবাল স্টেটের অংশ। এই স্থায়ী স্টোরেজ ক্ষণস্থায়ী স্টোরেজ থেকে আলাদা, যা শুধুমাত্র একটি একক ট্রানজ্যাকশনের সময়কালের জন্য উপলব্ধ এবং অ্যাকাউন্টের স্থায়ী স্টোরেজ ট্রাই-এর অংশ গঠন করে না।
+কন্ট্রাক্টগুলোতে একটি মার্কেল প্যাট্রিসিয়া _স্টোরেজ_ ট্রাই (একটি শব্দ-সম্বোধনযোগ্য শব্দ অ্যারে হিসেবে) থাকে, যা সংশ্লিষ্ট একাউন্ট এর সাথে যুক্ত এবং গ্লোবাল স্টেট এর অংশ। এই স্থায়ী স্টোরেজটি ট্রানজিয়েন্ট স্টোরেজ থেকে আলাদা, যা শুধুমাত্র একটি একক লেনদেন এর সময়কালের জন্য উপলব্ধ এবং একাউন্ট এর স্থায়ী স্টোরেজ ট্রাইয়ের অংশ গঠন করে না।
-### Opcodes
+### অপকোডস
-কম্পাইল করা স্মার্ট কন্ট্র্যাক্ট বাইটকোড একাধিক EVM [opcodes](/developers/docs/evm/opcodes) হিসাবে এক্সিকিউট হয়, যা `XOR`, `AND`, `ADD`, `SUB` ইত্যাদির মতো স্ট্যান্ডার্ড স্ট্যাক অপারেশন সম্পাদন করে। EVM এছাড়াও `ADDRESS`, `BALANCE`, `BLOCKHASH` ইত্যাদির মতো বেশ কিছু ব্লকচেইন-নির্দিষ্ট স্ট্যাক অপারেশন প্রয়োগ করে। অপকোড সেটে `TSTORE` এবং `TLOAD` অন্তর্ভুক্ত রয়েছে, যা ক্ষণস্থায়ী স্টোরেজে অ্যাক্সেস প্রদান করে।
+কম্পাইল করা স্মার্ট কন্ট্রাক্ট বাইটকোড বেশ কয়েকটি EVM [অপকোড](/developers/docs/evm/opcodes) হিসেবে এক্সিকিউট হয়, যা `XOR`, `AND`, `ADD`, `SUB` ইত্যাদির মতো স্ট্যান্ডার্ড স্ট্যাক অপারেশন সম্পাদন করে। EVM বেশ কয়েকটি ব্লকচেইন-নির্দিষ্ট স্ট্যাক অপারেশনও প্রয়োগ করে, যেমন `ADDRESS`, `BALANCE`, `BLOCKHASH` ইত্যাদি। অপকোড সেটে `TSTORE` এবং `TLOAD` ও অন্তর্ভুক্ত রয়েছে, যা ট্রানজিয়েন্ট স্টোরেজে এক্সেস প্রদান করে।
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে অভিযোজিত ডায়াগ্রাম_
+
+_চিত্রগুলো [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে গৃহীত_
## EVM ইমপ্লিমেন্টেশন {#evm-implementations}
-EVM-এর সমস্ত ইমপ্লিমেন্টেশনকে অবশ্যই Ethereum Yellowpaper-এ বর্ণিত স্পেসিফিকেশন মেনে চলতে হবে।
+EVM এর সমস্ত ইমপ্লিমেন্টেশন অবশ্যই ইথিরিয়াম ইয়েলোপেপারে বর্ণিত স্পেসিফিকেশন মেনে চলতে হবে।
-Ethereum-এর দশ বছরের ইতিহাসে, EVM-এর বেশ কিছু সংশোধন হয়েছে, এবং বিভিন্ন প্রোগ্রামিং ভাষায় EVM-এর বেশ কিছু ইমপ্লিমেন্টেশন রয়েছে।
+ইথিরিয়ামের দশ বছরের ইতিহাসে, EVM বেশ কয়েকটি রিভিশনের মধ্য দিয়ে গেছে এবং বিভিন্ন প্রোগ্রামিং ভাষায় EVM এর বেশ কয়েকটি ইমপ্লিমেন্টেশন রয়েছে।
-[Ethereum এক্সিকিউশন ক্লায়েন্টগুলিতে](/developers/docs/nodes-and-clients/#execution-clients) একটি EVM ইমপ্লিমেন্টেশন অন্তর্ভুক্ত থাকে। এছাড়াও, একাধিক স্বতন্ত্র ইমপ্লিমেন্টেশন রয়েছে, যার মধ্যে রয়েছে:
+[ইথিরিয়াম এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) একটি EVM ইমপ্লিমেন্টেশন অন্তর্ভুক্ত করে। উপরন্তু, একাধিক স্বতন্ত্র ইমপ্লিমেন্টেশন রয়েছে, যার মধ্যে রয়েছে:
- [Py-EVM](https://github.com/ethereum/py-evm) - _Python_
- [evmone](https://github.com/ethereum/evmone) - _C++_
- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_
- [revm](https://github.com/bluealloy/revm) - _Rust_
-## আরও পড়ুন {#further-reading}
+## আরও পঠন {#further-reading}
-- [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf)
-- [Jellopaper ওরফে KEVM: K-তে EVM-এর সেম্যান্টিক্স](https://jellopaper.org/)
-- [The Beigepaper](https://github.com/chronaeon/beigepaper)
-- [Ethereum ভার্চুয়াল মেশিন অপকোড](https://www.ethervm.io/)
-- [Ethereum ভার্চুয়াল মেশিন অপকোড ইন্টারঅ্যাক্টিভ রেফারেন্স](https://www.evm.codes/)
-- [Solidity-র ডকুমেন্টেশনে একটি সংক্ষিপ্ত পরিচিতি](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6)
-- [মাস্টারিং Ethereum - দি Ethereum ভার্চুয়াল মেশিন](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc)
+- [ইথিরিয়াম ইয়েলোপেপার](https://ethereum.github.io/yellowpaper/paper.pdf)
+- [জেলোপেপার বা KEVM: K-তে EVM এর শব্দার্থবিদ্যা](https://jellopaper.org/)
+- [দ্য বেইজপেপার](https://github.com/chronaeon/beigepaper)
+- [ইথিরিয়াম ভার্চুয়াল মেশিন অপকোডস](https://www.ethervm.io/)
+- [ইথিরিয়াম ভার্চুয়াল মেশিন অপকোডস ইন্টারেক্টিভ রেফারেন্স](https://www.evm.codes/)
+- [সলিডিটির ডকুমেন্টেশনে একটি সংক্ষিপ্ত পরিচিতি](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6)
+- [মাস্টারিং ইথিরিয়াম - ইথিরিয়াম ভার্চুয়াল মেশিন](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc)
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়সমূহ {#related-topics}
- [গ্যাস](/developers/docs/gas/)
+
+## টিউটোরিয়াল: ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) / ইথিরিয়ামে অপকোডস {#tutorials}
+
+- [ইয়েলো পেপারের EVM স্পেসিফিকেশন বোঝা](/developers/tutorials/yellow-paper-evm/) _– ইথিরিয়াম ইয়েলো পেপার থেকে আনুষ্ঠানিক EVM স্পেকের একটি নির্দেশিত ওয়াকথ্রু।_
+- [একটি কন্ট্রাক্ট রিভার্স ইঞ্জিনিয়ারিং](/developers/tutorials/reverse-engineering-a-contract/) _– EVM অপকোড ব্যবহার করে কীভাবে একটি কম্পাইল করা স্মার্ট কন্ট্রাক্ট রিভার্স-ইঞ্জিনিয়ার করতে হয়।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/evm/opcodes/index.md b/public/content/translations/bn/developers/docs/evm/opcodes/index.md
index 9740ce20db4..dde11cd812e 100644
--- a/public/content/translations/bn/developers/docs/evm/opcodes/index.md
+++ b/public/content/translations/bn/developers/docs/evm/opcodes/index.md
@@ -1,177 +1,177 @@
---
-title: "EVM-এর জন্য অপকোডসমূহ"
-description: "ইথেরিয়াম ভার্চুয়াল মেশিনের জন্য উপলব্ধ সমস্ত অপকোডের একটি তালিকা।"
+title: EVM-এর জন্য অপকোড
+description: ইথিরিয়াম ভার্চুয়াল মেশিন-এর জন্য উপলব্ধ সমস্ত অপকোডের একটি তালিকা।
lang: bn
---
-## একনজরে {#overview}
+## ওভারভিউ {#overview}
-এটি [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes)-এ EVM রেফারেন্স পেজের একটি আপডেট করা সংস্করণ।
-এছাড়াও এটি [ইয়োলো পেপার](https://ethereum.github.io/yellowpaper/paper.pdf), [জেলো পেপার](https://jellopaper.org/evm/), এবং [geth](https://github.com/ethereum/go-ethereum) ইমপ্লিমেন্টেশন থেকে নেওয়া হয়েছে।
-এটি একটি সহজলভ্য রেফারেন্স হিসেবে তৈরি করা হয়েছে, তবে এটি বিশেষভাবে কঠোর নয়।
-আপনি যদি সঠিকতার ব্যাপারে নিশ্চিত হতে চান এবং প্রতিটি এজ কেস সম্পর্কে অবগত থাকতে চান, তবে জেলো পেপার বা ক্লায়েন্ট ইমপ্লিমেন্টেশন ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।
+এটি [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes)-এ থাকা EVM রেফারেন্স পেজের একটি আপডেট করা সংস্করণ।
+এছাড়াও এটি [Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf), [Jello Paper](https://jellopaper.org/evm/), এবং [geth](https://github.com/ethereum/go-ethereum) ইমপ্লিমেন্টেশন থেকে নেওয়া হয়েছে।
+এটি একটি সহজলভ্য রেফারেন্স হিসেবে তৈরি করা হয়েছে, তবে এটি খুব বেশি কঠোর বা বিস্তারিত নয়।
+আপনি যদি সঠিকতা সম্পর্কে নিশ্চিত হতে চান এবং প্রতিটি এজ কেস সম্পর্কে সচেতন থাকতে চান, তবে Jello Paper বা একটি ক্লায়েন্ট ইমপ্লিমেন্টেশন ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।
একটি ইন্টারেক্টিভ রেফারেন্স খুঁজছেন? [evm.codes](https://www.evm.codes/) দেখুন।
ডাইনামিক গ্যাস খরচের অপারেশনগুলোর জন্য, [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md) দেখুন।
-💡 দ্রুত টিপ: সম্পূর্ণ লাইন দেখতে, ডেস্কটপে অনুভূমিকভাবে স্ক্রল করার জন্য `[shift] + scroll` ব্যবহার করুন।
+💡 কুইক টিপ: সম্পূর্ণ লাইন দেখতে, ডেস্কটপে অনুভূমিকভাবে স্ক্রোল করতে `[shift] + scroll` ব্যবহার করুন।
-| স্ট্যাক | নাম | গ্যাস | প্রাথমিক স্ট্যাক | ফলাফল স্ট্যাক | Mem / সংগ্রহস্থল | নোট | |
-| :-----: | :------------- | :---------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
-| 00 | STOP | 0 | | | | এক্সিকিউশন থামিয়ে দিন | |
-| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 যোগ মডিউলো 2\*\*256 | |
-| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 গুণ মডিউলো 2\*\*256 | |
-| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 বিয়োগ মডিউলো 2\*\*256 | |
-| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 ভাগ | |
-| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 ভাগ | |
-| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 মডিউলাস | |
-| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 মডিউলাস | |
-| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 যোগ মডিউলো N | |
-| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 গুণ মডিউলো N | |
-| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 এক্সপোনেনশিয়েশন মডিউলো 2\*\*256 | |
-| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x`-কে `(b+1)` বাইট থেকে 32 বাইটে প্রসারিত করুন | |
-| 0C-0F | _অবৈধ_ | | | | | | |
-| 10 | LT | 3 | `a, b` | `a < b` | | uint256 এর থেকে ছোট | |
-| 11 | GT | 3 | `a, b` | `a > b` | | uint256 এর থেকে বড় | |
-| 12 | SLT | 3 | `a, b` | `a < b` | | int256 এর থেকে ছোট | |
-| 13 | SGT | 3 | `a, b` | `a > b` | | int256 এর থেকে বড় | |
-| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 সমতা | |
-| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero | |
-| 16 | AND | 3 | `a, b` | `a && b` | | বিটওয়াইজ AND | |
-| 17 | OR | 3 | `a, b` | `a \\|\\| b` | | বিটওয়াইজ OR | |
-| 18 | XOR | 3 | `a, b` | `a ^ b` | | বিটওয়াইজ XOR | |
-| 19 | NOT | 3 | `a` | `~a` | | বিটওয়াইজ NOT | |
-| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | বাম দিক থেকে (u)int256 `x` এর `i`তম বাইট | |
-| 1B | SHL | 3 | `shift, val` | `val << shift` | | বামে শিফট করুন | |
-| 1C | SHR | 3 | `shift, val` | `val >> shift` | | লজিক্যাল শিফট রাইট | |
-| 1D | SAR | 3 | `shift, val` | `val >> shift` | | অ্যারিথমেটিক শিফট রাইট | |
-| 1E-1F | _অবৈধ_ | | | | | | |
-| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 | |
-| 21-2F | _অবৈধ_ | | | | | | |
-| 30 | ADDRESS | 2 | `.` | `address(this)` | | এক্সিকিউটিং কনট্র্যাক্টের ঠিকানা | |
-| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | ব্যালেন্স, wei-তে | |
-| 32 | ORIGIN | 2 | `.` | `tx.origin` | | যে ঠিকানা থেকে tx শুরু হয়েছে | |
-| 33 | CALLER | 2 | `.` | `msg.sender` | | msg প্রেরকের ঠিকানা | |
-| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg ভ্যালু, wei-তে | |
-| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | `idx` ইনডেক্সে msg ডেটা থেকে ওয়ার্ড পড়ুন | |
-| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | msg ডেটার দৈর্ঘ্য, বাইটে | |
-| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | msg ডেটা কপি করুন | |
-| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | এক্সিকিউটিং কনট্র্যাক্টের কোডের দৈর্ঘ্য, বাইটে | |
-| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | এক্সিকিউটিং কনট্র্যাক্টের বাইটকোড কপি করুন |
-| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | tx-এর গ্যাস প্রাইস, প্রতি ইউনিট গ্যাসের জন্য wei-তে [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) | |
-| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | addr-এ কোডের সাইজ, বাইটে | |
-| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | `addr` থেকে কোড কপি করুন | |
-| 3D | RETURNDATASIZE | 2 | `.` | `size` | | শেষ এক্সটার্নাল কল থেকে ফেরত আসা ডেটার সাইজ, বাইটে | |
-| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | শেষ এক্সটার্নাল কল থেকে ফেরত আসা ডেটা কপি করুন | |
-| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `হ্যাস` | | হ্যাস = addr.exists ? keccak256(addr.code) : 0 | |
-| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | | |
-| 41 | COINBASE | 2 | `.` | `block.coinbase` | | বর্তমান ব্লকের প্রপোজারের ঠিকানা | |
-| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | বর্তমান ব্লকের টাইমস্ট্যাম্প | |
-| 43 | NUMBER | 2 | `.` | `block.number` | | বর্তমান ব্লকের নম্বর | |
-| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | র্যান্ডমনেস বিকন | |
-| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | বর্তমান ব্লকের গ্যাস লিমিট | |
-| 46 | CHAINID | 2 | `.` | `chain_id` | | বর্তমান [চেইন আইডি](https://eips.ethereum.org/EIPS/eip-155) স্ট্যাকে পুশ করুন | |
-| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | এক্সিকিউটিং কনট্র্যাক্টের ব্যালেন্স, wei-তে | |
-| 48 | BASEFEE | 2 | `.` | `block.basefee` | | বর্তমান ব্লকের বেস ফি | |
-| 49 | BLOBHASH | 3 | `idx` | `tx.blob_versioned_hashes[idx]` | | [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) | |
-| 4A | BLOBBASEFEE | 2 | `.` | `block.blobbasefee` | | বর্তমান ব্লকের ব্লব বেস ফি ([EIP-7516](https://eips.ethereum.org/EIPS/eip-7516)) | |
-| 4B-4F | _অবৈধ_ | | | | | | |
-| 50 | POP | 2 | `_anon` | `.` | | স্ট্যাকের শীর্ষ থেকে আইটেম সরান এবং এটি বাতিল করুন | |
-| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | অফসেট `ost`-এ মেমরি থেকে ওয়ার্ড পড়ুন | |
-| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | মেমরিতে একটি ওয়ার্ড লিখুন | |
-| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | মেমরিতে একটি একক বাইট লিখুন | |
-| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `সংগ্রহস্থল[key]` | | সংগ্রহস্থল থেকে ওয়ার্ড পড়ুন | |
-| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | সংগ্রহস্থল[key] := val | সংগ্রহস্থলে ওয়ার্ড লিখুন | |
-| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` চিহ্নিত করুন যে `pc` শুধুমাত্র তখনই নির্ধারিত হবে যদি `dst` একটি বৈধ জাম্পডেস্ট হয় | |
-| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ?` dst : $pc + 1` | |
-| 58 | PC | 2 | `.` | `$pc` | | প্রোগ্রাম কাউন্টার | |
-| 59 | MSIZE | 2 | `.` | `len(mem)` | | বর্তমান এক্সিকিউশন কনটেক্সটে মেমরির সাইজ, বাইটে | |
-| 5A | GAS | 2 | `.` | `gasRemaining` | | | |
-| 5B | JUMPDEST | 1 | | | বৈধ জাম্প ডেস্টিনেশন চিহ্নিত করুন | একটি বৈধ জাম্প ডেস্টিনেশন উদাহরণস্বরূপ একটি জাম্প ডেস্টিনেশন পুশ ডেটার ভিতরে নয় | |
-| 5C | TLOAD | 100 | `key` | `tstorage[key]` | | ট্রানজিয়েন্ট সংগ্রহস্থল থেকে ওয়ার্ড পড়ুন ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | |
-| 5D | TSTORE | 100 | `key, val` | `.` | tstorage[key] := val | ট্রানজিয়েন্ট সংগ্রহস্থলে ওয়ার্ড লিখুন ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | |
-| 5E | MCOPY | 3+3\*words+[A0](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `dstOst, ost, len` | `.` | mem[dstOst] := mem[ost:ost+len] | মেমরি এক এলাকা থেকে অন্য এলাকায় কপি করুন ([EIP-5656](https://eips.ethereum.org/EIPS/eip-5656)) | |
-| 5F | PUSH0 | 2 | `.` | `uint8` | | স্ট্যাকে ধ্রুবক মান 0 পুশ করুন | |
-| 60 | PUSH1 | 3 | `.` | `uint8` | | স্ট্যাকে 1-বাইট মান পুশ করুন | |
-| 61 | PUSH2 | 3 | `.` | `uint16` | | স্ট্যাকে 2-বাইট মান পুশ করুন | |
-| 62 | PUSH3 | 3 | `.` | `uint24` | | স্ট্যাকে 3-বাইট মান পুশ করুন | |
-| 63 | PUSH4 | 3 | `.` | `uint32` | | স্ট্যাকে 4-বাইট মান পুশ করুন | |
-| 64 | PUSH5 | 3 | `.` | `uint40` | | স্ট্যাকে 5-বাইট মান পুশ করুন | |
-| 65 | PUSH6 | 3 | `.` | `uint48` | | স্ট্যাকে 6-বাইট মান পুশ করুন | |
-| 66 | PUSH7 | 3 | `.` | `uint56` | | স্ট্যাকে 7-বাইট মান পুশ করুন | |
-| 67 | PUSH8 | 3 | `.` | `uint64` | | স্ট্যাকে 8-বাইট মান পুশ করুন | |
-| 68 | PUSH9 | 3 | `.` | `uint72` | | স্ট্যাকে 9-বাইট মান পুশ করুন | |
-| 69 | PUSH10 | 3 | `.` | `uint80` | | স্ট্যাকে 10-বাইট মান পুশ করুন | |
-| 6A | PUSH11 | 3 | `.` | `uint88` | | স্ট্যাকে 11-বাইট মান পুশ করুন | |
-| 6B | PUSH12 | 3 | `.` | `uint96` | | স্ট্যাকে 12-বাইট মান পুশ করুন | |
-| 6C | PUSH13 | 3 | `.` | `uint104` | | স্ট্যাকে 13-বাইট মান পুশ করুন | |
-| 6D | PUSH14 | 3 | `.` | `uint112` | | স্ট্যাকে 14-বাইট মান পুশ করুন | |
-| 6E | PUSH15 | 3 | `.` | `uint120` | | স্ট্যাকে 15-বাইট মান পুশ করুন | |
-| 6F | PUSH16 | 3 | `.` | `uint128` | | স্ট্যাকে 16-বাইট মান পুশ করুন | |
-| 70 | PUSH17 | 3 | `.` | `uint136` | | স্ট্যাকে 17-বাইট মান পুশ করুন | |
-| 71 | PUSH18 | 3 | `.` | `uint144` | | স্ট্যাকে 18-বাইট মান পুশ করুন | |
-| 72 | PUSH19 | 3 | `.` | `uint152` | | স্ট্যাকে 19-বাইট মান পুশ করুন | |
-| 73 | PUSH20 | 3 | `.` | `uint160` | | স্ট্যাকে 20-বাইট মান পুশ করুন | |
-| 74 | PUSH21 | 3 | `.` | `uint168` | | স্ট্যাকে 21-বাইট মান পুশ করুন | |
-| 75 | PUSH22 | 3 | `.` | `uint176` | | স্ট্যাকে 22-বাইট মান পুশ করুন | |
-| 76 | PUSH23 | 3 | `.` | `uint184` | | স্ট্যাকে 23-বাইট মান পুশ করুন | |
-| 77 | PUSH24 | 3 | `.` | `uint192` | | স্ট্যাকে 24-বাইট মান পুশ করুন | |
-| 78 | PUSH25 | 3 | `.` | `uint200` | | স্ট্যাকে 25-বাইট মান পুশ করুন | |
-| 79 | PUSH26 | 3 | `.` | `uint208` | | স্ট্যাকে 26-বাইট মান পুশ করুন | |
-| 7A | PUSH27 | 3 | `.` | `uint216` | | স্ট্যাকে 27-বাইট মান পুশ করুন | |
-| 7B | PUSH28 | 3 | `.` | `uint224` | | স্ট্যাকে 28-বাইট মান পুশ করুন | |
-| 7C | PUSH29 | 3 | `.` | `uint232` | | স্ট্যাকে 29-বাইট মান পুশ করুন | |
-| 7D | PUSH30 | 3 | `.` | `uint240` | | স্ট্যাকে 30-বাইট মান পুশ করুন | |
-| 7E | PUSH31 | 3 | `.` | `uint248` | | স্ট্যাকে 31-বাইট মান পুশ করুন | |
-| 7F | PUSH32 | 3 | `.` | `uint256` | | স্ট্যাকে 32-বাইট মান পুশ করুন | |
-| 80 | DUP1 | 3 | `a` | `a, a` | | স্ট্যাকের ১ম মানটি ক্লোন করুন | |
-| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | স্ট্যাকের ২য় মানটি ক্লোন করুন | |
-| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | স্ট্যাকের ৩য় মানটি ক্লোন করুন | |
-| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | স্ট্যাকের ৪র্থ মানটি ক্লোন করুন | |
-| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ৫ম মানটি ক্লোন করুন | |
-| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ৬ষ্ঠ মানটি ক্লোন করুন | |
-| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ৭ম মানটি ক্লোন করুন | |
-| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ৮ম মানটি ক্লোন করুন | |
-| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ৯ম মানটি ক্লোন করুন | |
-| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ১০ম মানটি ক্লোন করুন | |
-| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ১১তম মানটি ক্লোন করুন | |
-| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ১২তম মানটি ক্লোন করুন | |
-| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ১৩তম মানটি ক্লোন করুন | |
-| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ১৪তম মানটি ক্লোন করুন | |
-| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ১৫তম মানটি ক্লোন করুন | |
-| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের ১৬তম মানটি ক্লোন করুন | |
-| 90 | SWAP1 | 3 | `a, b` | `b, a` | | | |
-| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | | |
-| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | | |
-| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | | |
-| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | | |
-| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) | |
-| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) | |
-| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG2(memory[ost:ost+len-1], topic0, topic1) | |
-| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | |
-| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | |
-| A5-EF | _অবৈধ_ | | | | | | |
-| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) | |
-| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | গ্যাস, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `গ্যাস, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL-এর মতোই, কিন্তু আসল msg.sender এবং msg.value প্রচার করে না | |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | mem[ost:ost+len-1] রিটার্ন করুন | |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `গ্যাস, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | |
-| F6-F9 | _অবৈধ_ | | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `গ্যাস, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | | |
-| FB-FC | _অবৈধ_ | | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) | |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | মনোনীত অবৈধ অপকোড - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | সমস্ত ETH `addr`-এ পাঠায়; যদি একটি কনট্র্যাক্ট তৈরি করার একই ট্রানজ্যাকশনে এটি এক্সিকিউট করা হয়, তবে এটি কনট্র্যাক্টটি ধ্বংস করে দেয় | |
+| Stack | Name | Gas | Initial Stack | Resulting Stack | Mem / Storage | Notes |
+| :---: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------- | :------------------------------ | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |
+| 00 | STOP | 0 | | | | এক্সিকিউশন থামানো |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 যোগফল মডুলো 2\*\*256 |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 গুণফল মডুলো 2\*\*256 |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 বিয়োগফল মডুলো 2\*\*256 |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 ভাগফল |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 ভাগফল |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 মডুলাস |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 মডুলাস |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 যোগফল মডুলো N |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 গুণফল মডুলো N |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 এক্সপোনেনসিয়েশন মডুলো 2\*\*256 |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [সাইন এক্সটেন্ড](https://wikipedia.org/wiki/Sign_extension) `x` কে `(b+1)` বাইট থেকে 32 বাইটে রূপান্তর |
+| 0C-0F | _অবৈধ_ |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 লেস-দ্যান (ছোট) |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 গ্রেটার-দ্যান (বড়) |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 লেস-দ্যান (ছোট) |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 গ্রেটার-দ্যান (বড়) |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 সমতা |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 ইজ-জিরো (শূন্য কিনা) |
+| 16 | AND | 3 | `a, b` | `a && b` | | বিটওয়াইজ AND |
+| 17 | OR | 3 | `a, b` | `a \|\| b` | | বিটওয়াইজ OR |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | বিটওয়াইজ XOR |
+| 19 | NOT | 3 | `a` | `~a` | | বিটওয়াইজ NOT |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | বাম দিক থেকে (u)int256 `x` এর `i`-তম বাইট |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | শিফট লেফট |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | লজিক্যাল শিফট রাইট |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | অ্যারিথমেটিক শিফট রাইট |
+| 1E-1F | _অবৈধ_ |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
+| 21-2F | _অবৈধ_ |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | এক্সিকিউটিং কন্ট্রাক্টের এডড্রেস |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | ব্যালেন্স, wei তে |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | যে এডড্রেস থেকে লেনদেনটি (tx) শুরু হয়েছে |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | msg প্রেরকের এডড্রেস |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg ভ্যালু, wei তে |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | msg ডাটার ইনডেক্স `idx` থেকে শব্দ (word) পড়া |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | msg ডাটার দৈর্ঘ্য, বাইটে |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | msg ডাটা কপি করা |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | এক্সিকিউটিং কন্ট্রাক্টের কোডের দৈর্ঘ্য, বাইটে |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | এক্সিকিউটিং কন্ট্রাক্টের বাইটকোড কপি করা |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | লেনদেনের গ্যাস প্রাইস, প্রতি ইউনিট গ্যাসে wei হিসেবে [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | `addr` এ থাকা কোডের আকার, বাইটে |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | `addr` থেকে কোড কপি করা |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | সর্বশেষ এক্সটার্নাল কল থেকে রিটার্ন করা ডাটার আকার, বাইটে |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | সর্বশেষ এক্সটার্নাল কল থেকে রিটার্ন করা ডাটা কপি করা |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | বর্তমান ব্লকের প্রপোজারের এডড্রেস |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | বর্তমান ব্লকের টাইমস্ট্যাম্প |
+| 43 | NUMBER | 2 | `.` | `block.number` | | বর্তমান ব্লকের নম্বর |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | র্যান্ডমনেস বিকন |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | বর্তমান ব্লকের গ্যাস লিমিট |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | বর্তমান [চেইন আইডি](https://eips.ethereum.org/EIPS/eip-155) স্ট্যাকে পুশ করা |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | এক্সিকিউটিং কন্ট্রাক্টের ব্যালেন্স, wei তে |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | বর্তমান ব্লকের বেস ফি |
+| 49 | BLOBHASH | 3 | `idx` | `tx.blob_versioned_hashes[idx]` | | [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) |
+| 4A | BLOBBASEFEE | 2 | `.` | `block.blobbasefee` | | বর্তমান ব্লকের ব্লব বেস ফি ([EIP-7516](https://eips.ethereum.org/EIPS/eip-7516)) |
+| 4B-4F | _অবৈধ_ |
+| 50 | POP | 2 | `_anon` | `.` | | স্ট্যাকের শীর্ষ থেকে আইটেমটি সরিয়ে ফেলা এবং বাতিল করা |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | অফসেট `ost` এ মেমরি থেকে শব্দ (word) পড়া |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | মেমরিতে একটি শব্দ (word) লেখা |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | মেমরিতে একটি একক বাইট লেখা |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | স্টোরেজ থেকে শব্দ (word) পড়া |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | স্টোরেজে শব্দ (word) লেখা |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` চিহ্নিত করে যে `pc` শুধুমাত্র তখনই অ্যাসাইন করা হয় যদি `dst` একটি বৈধ jumpdest হয় |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
+| 58 | PC | 2 | `.` | `$pc` | | প্রোগ্রাম কাউন্টার |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | বর্তমান এক্সিকিউশন কনটেক্সটে মেমরির আকার, বাইটে |
+| 5A | GAS | 2 | `.` | `gasRemaining` | |
+| 5B | JUMPDEST | 1 | | | বৈধ জাম্প গন্তব্য চিহ্নিত করা | একটি বৈধ জাম্প গন্তব্য, উদাহরণস্বরূপ এমন একটি জাম্প গন্তব্য যা পুশ ডাটার ভিতরে নেই |
+| 5C | TLOAD | 100 | `key` | `tstorage[key]` | | ট্রানজিয়েন্ট স্টোরেজ থেকে শব্দ (word) পড়া ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) |
+| 5D | TSTORE | 100 | `key, val` | `.` | tstorage[key] := val | ট্রানজিয়েন্ট স্টোরেজে শব্দ (word) লেখা ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) |
+| 5E | MCOPY | 3+3\*words+[A0](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `dstOst, ost, len` | `.` | mem[dstOst] := mem[ost:ost+len] | এক এলাকা থেকে অন্য এলাকায় মেমরি কপি করা ([EIP-5656](https://eips.ethereum.org/EIPS/eip-5656)) |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | স্ট্যাকে ধ্রুবক মান 0 পুশ করা |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | স্ট্যাকে 1-বাইট মান পুশ করা |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | স্ট্যাকে 2-বাইট মান পুশ করা |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | স্ট্যাকে 3-বাইট মান পুশ করা |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | স্ট্যাকে 4-বাইট মান পুশ করা |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | স্ট্যাকে 5-বাইট মান পুশ করা |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | স্ট্যাকে 6-বাইট মান পুশ করা |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | স্ট্যাকে 7-বাইট মান পুশ করা |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | স্ট্যাকে 8-বাইট মান পুশ করা |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | স্ট্যাকে 9-বাইট মান পুশ করা |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | স্ট্যাকে 10-বাইট মান পুশ করা |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | স্ট্যাকে 11-বাইট মান পুশ করা |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | স্ট্যাকে 12-বাইট মান পুশ করা |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | স্ট্যাকে 13-বাইট মান পুশ করা |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | স্ট্যাকে 14-বাইট মান পুশ করা |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | স্ট্যাকে 15-বাইট মান পুশ করা |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | স্ট্যাকে 16-বাইট মান পুশ করা |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | স্ট্যাকে 17-বাইট মান পুশ করা |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | স্ট্যাকে 18-বাইট মান পুশ করা |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | স্ট্যাকে 19-বাইট মান পুশ করা |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | স্ট্যাকে 20-বাইট মান পুশ করা |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | স্ট্যাকে 21-বাইট মান পুশ করা |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | স্ট্যাকে 22-বাইট মান পুশ করা |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | স্ট্যাকে 23-বাইট মান পুশ করা |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | স্ট্যাকে 24-বাইট মান পুশ করা |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | স্ট্যাকে 25-বাইট মান পুশ করা |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | স্ট্যাকে 26-বাইট মান পুশ করা |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | স্ট্যাকে 27-বাইট মান পুশ করা |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | স্ট্যাকে 28-বাইট মান পুশ করা |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | স্ট্যাকে 29-বাইট মান পুশ করা |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | স্ট্যাকে 30-বাইট মান পুশ করা |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | স্ট্যাকে 31-বাইট মান পুশ করা |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | স্ট্যাকে 32-বাইট মান পুশ করা |
+| 80 | DUP1 | 3 | `a` | `a, a` | | স্ট্যাকের 1ম মান ক্লোন করা |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | স্ট্যাকের 2য় মান ক্লোন করা |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | স্ট্যাকের 3য় মান ক্লোন করা |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | স্ট্যাকের 4র্থ মান ক্লোন করা |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 5ম মান ক্লোন করা |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 6ষ্ঠ মান ক্লোন করা |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 7ম মান ক্লোন করা |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 8ম মান ক্লোন করা |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 9ম মান ক্লোন করা |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 10ম মান ক্লোন করা |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 11তম মান ক্লোন করা |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 12তম মান ক্লোন করা |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 13তম মান ক্লোন করা |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 14তম মান ক্লোন করা |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 15তম মান ক্লোন করা |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | স্ট্যাকের 16তম মান ক্লোন করা |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG2(memory[ost:ost+len-1], topic0, topic1) |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
+| A5-EF | _অবৈধ_ |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL এর মতই, কিন্তু মূল msg.sender এবং msg.value প্রচার করে না |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
+| F6-F9 | _অবৈধ_ |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata |
+| FB-FC | _অবৈধ_ |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | নির্ধারিত অবৈধ অপকোড - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | `addr` এ সমস্ত ETH পাঠায়; যদি একটি কন্ট্রাক্ট তৈরি হওয়ার একই লেনদেনে এক্সিকিউট করা হয় তবে এটি কন্ট্রাক্টটি ধ্বংস করে দেয় |
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/frameworks/index.md b/public/content/translations/bn/developers/docs/frameworks/index.md
index 9ee95d623cc..fd848464276 100644
--- a/public/content/translations/bn/developers/docs/frameworks/index.md
+++ b/public/content/translations/bn/developers/docs/frameworks/index.md
@@ -1,141 +1,136 @@
---
-title: "ডিএ্যাপ ডেভেলপমেন্ট ফ্রেমওয়ার্কস"
-description: "ফ্রেমওয়ার্কের সুবিধাগুলো অন্বেষণ করুন এবং উপলব্ধ বিকল্পগুলির তুলনা করুন।"
+title: ডিএ্যাপ ডেভেলপমেন্ট ফ্রেমওয়ার্ক
+description: ফ্রেমওয়ার্কের সুবিধাগুলো অন্বেষণ করুন এবং উপলব্ধ বিকল্পগুলোর তুলনা করুন।
lang: bn
---
-## ফ্রেমওয়ার্কের ভূমিকা {#introduction-to-frameworks}
+## ফ্রেমওয়ার্কের পরিচিতি {#introduction-to-frameworks}
-একটি পূর্ণাঙ্গ ডিএ্যাপ তৈরি করার জন্য
-বিভিন্ন ধরনের প্রযুক্তির প্রয়োজন হয়। সফ্টওয়্যার ফ্রেমওয়ার্কগুলোতে প্রয়োজনীয় অনেক
-ফিচার অন্তর্ভুক্ত থাকে অথবা আপনার পছন্দের টুলগুলো বেছে নেওয়ার জন্য সহজ প্লাগইন সিস্টেম সরবরাহ করে।
+একটি পূর্ণাঙ্গ ডিএ্যাপ তৈরি করতে বিভিন্ন প্রযুক্তির প্রয়োজন হয়। সফটওয়্যার ফ্রেমওয়ার্কগুলোতে প্রয়োজনীয় অনেক ফিচার অন্তর্ভুক্ত থাকে বা আপনার পছন্দসই টুলগুলো বেছে নেওয়ার জন্য সহজ প্লাগইন সিস্টেম প্রদান করে।
-ফ্রেমওয়ার্কগুলো অনেক আউট-অফ-দ্য-বক্স কার্যকারিতা সহ আসে,
-যেমন:
+ফ্রেমওয়ার্কগুলো অনেক আউট-অফ-দ্য-বক্স কার্যকারিতা নিয়ে আসে, যেমন:
-- একটি স্থানীয় ব্লকচেইন মুহুর্তে স্পিন আপ করার ফিচারসমূহ।
-- আপনার স্মার্ট কন্ট্র্যাক্ট গুলি কম্পাইল এবং পরীক্ষা করার ইউটিলিটি সমূহ।
-- একই প্রজেক্ট/রিপোজিটরির মধ্যে আপনার ইউজার-ফেসিং অ্যাপ্লিকেশন তৈরি করার জন্য ক্লায়েন্ট ডেভেলপমেন্ট অ্যাড-অন।
-- Ethereum নেটওয়ার্কের সাথে সংযোগ স্থাপন এবং কন্ট্র্যাক্ট ডেপ্লয় করার জন্য কনফিগারেশন,
- সেটা স্থানীয়ভাবে চলমান কোনো ইনস্ট্যান্স হোক, অথবা Ethereum-এর কোনো পাবলিক নেটওয়ার্ক।
-- ডিসেন্ট্রালাইজড অ্যাপ ডিস্ট্রিবিউশন - IPFS-এর মতো স্টোরেজ
- বিকল্পগুলির সাথে ইন্টিগ্রেশন।
+- একটি লোকাল ব্লকচেইন ইনস্ট্যান্স চালু করার ফিচার।
+- আপনার স্মার্ট কন্ট্রাক্ট কম্পাইল এবং টেস্ট করার ইউটিলিটি।
+- একই প্রজেক্ট/রিপোজিটরির মধ্যে আপনার ব্যবহারকারী-মুখী অ্যাপ্লিকেশন তৈরি করার জন্য ক্লায়েন্ট ডেভেলপমেন্ট অ্যাড-অন।
+- ইথিরিয়াম নেটওয়ার্কের সাথে সংযোগ স্থাপন এবং কন্ট্রাক্ট ডিপ্লয় করার কনফিগারেশন, তা স্থানীয়ভাবে চলমান ইনস্ট্যান্স হোক বা ইথিরিয়ামের কোনো পাবলিক নেটওয়ার্ক হোক।
+- ডিসেন্ট্রালাইজড অ্যাপ ডিস্ট্রিবিউশন - IPFS-এর মতো স্টোরেজ বিকল্পগুলোর সাথে ইন্টিগ্রেশন।
## পূর্বশর্ত {#prerequisites}
-ফ্রেমওয়ার্কগুলিতে প্রবেশ করার আগে, আমরা আপনাকে প্রথমে আমাদের [ডিএ্যাপস](/developers/docs/dapps/) এবং [Ethereum স্ট্যাক](/developers/docs/ethereum-stack/) এর ভূমিকা পড়ে নেওয়ার পরামর্শ দিচ্ছি।
+ফ্রেমওয়ার্কগুলোতে প্রবেশ করার আগে, আমরা সুপারিশ করি যে আপনি প্রথমে [ডিএ্যাপস](/developers/docs/dapps/) এবং [ইথিরিয়াম স্ট্যাক](/developers/docs/ethereum-stack/)-এর পরিচিতি পড়ে নিন।
-## উপলব্ধ ফ্রেমওয়ার্ক {#available-frameworks}
+## উপলব্ধ ফ্রেমওয়ার্কগুলো {#available-frameworks}
-**Foundry** - **_Foundry হলো Ethereum অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি অত্যন্ত দ্রুত, পোর্টেবল এবং মডুলার টুলকিট_**
+**Foundry** - **_Foundry হলো ইথিরিয়াম অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি অত্যন্ত দ্রুত, পোর্টেবল এবং মডুলার টুলকিট_**
- [Foundry ইনস্টল করুন](https://book.getfoundry.sh/)
- [Foundry বই](https://book.getfoundry.sh/)
- [টেলিগ্রামে Foundry কমিউনিটি চ্যাট](https://t.me/foundry_support)
-- [অসাম Foundry](https://github.com/crisgarner/awesome-foundry)
+- [Awesome Foundry](https://github.com/crisgarner/awesome-foundry)
-**Hardhat -** **_পেশাদারদের জন্য Ethereum ডেভেলপমেন্ট এনভায়রনমেন্ট।_**
+**Hardhat -** **_পেশাদারদের জন্য ইথিরিয়াম ডেভেলপমেন্ট পরিবেশ।_**
- [hardhat.org](https://hardhat.org)
- [GitHub](https://github.com/nomiclabs/hardhat)
-**Ape -** **_Pythonistas, ডেটা সায়েন্টিস্ট এবং সিকিউরিটি পেশাদারদের জন্য স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্ট টুল।_**
+**Ape -** **_পাইথনিস্টা, ডেটা সায়েন্টিস্ট এবং সিকিউরিটি প্রফেশনালদের জন্য স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট টুল।_**
- [ডকুমেন্টেশন](https://docs.apeworx.io/ape/stable/)
- [GitHub](https://github.com/ApeWorX/ape)
-**Web3j -** **_JVM-এ ব্লকচেইন অ্যাপ্লিকেশন ডেভেলপ করার জন্য একটি প্ল্যাটফর্ম।_**
+**Web3j -** **_JVM-এ ব্লকচেইন অ্যাপ্লিকেশন ডেভেলপ করার একটি প্ল্যাটফর্ম।_**
- [হোমপেজ](https://www.web3labs.com/web3j-sdk)
- [ডকুমেন্টেশন](https://docs.web3j.io)
- [GitHub](https://github.com/web3j/web3j)
-**ethers-kt -** **_EVM-ভিত্তিক ব্লকচেইনের জন্য অ্যাসিঙ্ক, হাই-পারফরম্যান্স Kotlin/Java/Android লাইব্রেরি।_**
+**ethers-kt -** **_EVM-ভিত্তিক ব্লকচেইনগুলোর জন্য অ্যাসিঙ্ক, হাই-পারফরম্যান্স Kotlin/Java/Android লাইব্রেরি।_**
- [GitHub](https://github.com/Kr1ptal/ethers-kt)
- [উদাহরণ](https://github.com/Kr1ptal/ethers-kt/tree/master/examples)
- [Discord](https://discord.gg/rx35NzQGSb)
-**Create Eth App -** **_এক কমান্ডে Ethereum-চালিত অ্যাপ তৈরি করুন। বেছে নেওয়ার জন্য UI ফ্রেমওয়ার্ক এবং DeFi টেমপ্লেটের বিস্তৃত সম্ভার সহ আসে।_**
+**Create Eth App -** **_এক কমান্ডে ইথিরিয়াম-চালিত অ্যাপ তৈরি করুন। এটি বেছে নেওয়ার জন্য বিভিন্ন UI ফ্রেমওয়ার্ক এবং DeFi টেমপ্লেটের বিস্তৃত অফার নিয়ে আসে।_**
- [GitHub](https://github.com/paulrberg/create-eth-app)
- [টেমপ্লেট](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates)
-**Scaffold-Eth -** **_Ethers.js + Hardhat + web3-এর জন্য React কম্পোনেন্ট এবং হুকস: স্মার্ট কন্ট্র্যাক্ট দ্বারা চালিত ডিসেন্ট্রালাইজড এপ্লিকেশন তৈরি শুরু করার জন্য আপনার যা কিছু প্রয়োজন।_**
+**Scaffold-Eth -** **_ওয়েব3-এর জন্য Ethers.js + Hardhat + React কম্পোনেন্ট এবং হুক: স্মার্ট কন্ট্রাক্ট দ্বারা চালিত ডিসেন্ট্রালাইজড এপ্লিকেশন তৈরি শুরু করার জন্য আপনার যা কিছু প্রয়োজন।_**
- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2)
-**Tenderly -** **_Web3 ডেভেলপমেন্ট প্ল্যাটফর্ম যা ব্লকচেইন ডেভেলপারদের স্মার্ট কন্ট্র্যাক্ট তৈরি, পরীক্ষা, ডিবাগ, নিরীক্ষণ এবং পরিচালনা করতে এবং ডিএ্যাপ UX উন্নত করতে সক্ষম করে।_**
+**Tenderly -** **_ওয়েব3 ডেভেলপমেন্ট প্ল্যাটফর্ম যা ব্লকচেইন ডেভেলপারদের স্মার্ট কন্ট্রাক্ট তৈরি, টেস্ট, ডিবাগ, মনিটর এবং পরিচালনা করতে এবং ডিএ্যাপ UX উন্নত করতে সক্ষম করে।_**
- [ওয়েবসাইট](https://tenderly.co/)
- [ডকুমেন্টেশন](https://docs.tenderly.co/)
-**The Graph -** **_দক্ষভাবে ব্লকচেইন ডেটা কোয়েরি করার জন্য The Graph।_**
+**The Graph -** **_ব্লকচেইন ডেটা দক্ষতার সাথে কোয়েরি করার জন্য The Graph।_**
- [ওয়েবসাইট](https://thegraph.com/)
- [টিউটোরিয়াল](/developers/tutorials/the-graph-fixing-web3-data-querying/)
-**Alchemy -** **_Ethereum ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
+**Alchemy -** **_ইথিরিয়াম ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
- [alchemy.com](https://www.alchemy.com/)
- [GitHub](https://github.com/alchemyplatform)
- [Discord](https://discord.com/invite/alchemyplatform)
-**NodeReal -** **_Ethereum ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
+**NodeReal -** **_ইথিরিয়াম ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
- [Nodereal.io](https://nodereal.io/)
- [GitHub](https://github.com/node-real)
- [Discord](https://discord.gg/V5k5gsuE)
-**thirdweb SDK -** **_আমাদের শক্তিশালী SDK এবং CLI ব্যবহার করে এমন web3 অ্যাপ্লিকেশন তৈরি করুন যা আপনার স্মার্ট কন্ট্র্যাক্টগুলির সাথে ইন্টারঅ্যাক্ট করতে পারে।_**
+**thirdweb SDK -** **_আমাদের শক্তিশালী SDK এবং CLI ব্যবহার করে ওয়েব3 অ্যাপ্লিকেশন তৈরি করুন যা আপনার স্মার্ট কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারে।_**
- [ডকুমেন্টেশন](https://portal.thirdweb.com/sdk/)
- [GitHub](https://github.com/thirdweb-dev/)
-**Chainstack -** **_Web3 (Ethereum এবং অন্যান্য) ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
+**Chainstack -** **_ওয়েব3 (ইথিরিয়াম এবং অন্যান্য) ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
- [chainstack.com](https://www.chainstack.com/)
- [GitHub](https://github.com/chainstack)
- [Discord](https://discord.gg/BSb5zfp9AT)
-**Crossmint -** **_এন্টারপ্রাইজ-গ্রেড web3 ডেভেলপমেন্ট প্ল্যাটফর্ম, যা আপনাকে সমস্ত প্রধান চেইন EVM চেইন (এবং অন্যন্য) -এ NFT অ্যাপ্লিকেশন তৈরি করতে দেয়।_**
+**Crossmint -** **_এন্টারপ্রাইজ-গ্রেড ওয়েব3 ডেভেলপমেন্ট প্ল্যাটফর্ম, যা আপনাকে সমস্ত প্রধান চেইন EVM চেইন (এবং অন্যান্য)-এ NFT অ্যাপ্লিকেশন তৈরি করতে দেয়।_**
- [ওয়েবসাইট](https://www.crossmint.com)
-- [নথিপত্র](https://docs.crossmint.com)
+- [ডকুমেন্টেশন](https://docs.crossmint.com)
- [Discord](https://discord.com/invite/crossmint)
-**Brownie -** **_পাইথন-ভিত্তিক ডেভেলপমেন্ট এনভায়রনমেন্ট এবং টেস্টিং ফ্রেমওয়ার্ক।_**
+**Brownie -** **_পাইথন-ভিত্তিক ডেভেলপমেন্ট পরিবেশ এবং টেস্টিং ফ্রেমওয়ার্ক।_**
- [ডকুমেন্টেশন](https://eth-brownie.readthedocs.io/en/latest/)
- [GitHub](https://github.com/eth-brownie/brownie)
-- **Brownie বর্তমানে আনমেইনটেইন্ড**
+- **Brownie বর্তমানে রক্ষণাবেক্ষণ করা হচ্ছে না**
-**OpenZeppelin SDK -** **_চূড়ান্ত স্মার্ট কন্ট্র্যাক্ট টুলকিট: আপনাকে স্মার্ট কন্ট্র্যাক্ট ডেভেলপ, কম্পাইল, আপগ্রেড, ডেপ্লয় এবং তার সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করার জন্য টুলের একটি স্যুট।_**
+**OpenZeppelin SDK -** **_চূড়ান্ত স্মার্ট কন্ট্রাক্ট টুলকিট: স্মার্ট কন্ট্রাক্ট ডেভেলপ, কম্পাইল, আপগ্রেড, ডিপ্লয় এবং ইন্টারঅ্যাক্ট করতে সাহায্য করার জন্য টুলের একটি স্যুট।_**
- [OpenZeppelin Defender SDK](https://docs.openzeppelin.com/defender/sdk)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk)
- [কমিউনিটি ফোরাম](https://forum.openzeppelin.com/c/support/17)
-- **OpenZeppelin SDK-এর ডেভেলপমেন্ট শেষ হয়ে গেছে**
+- **OpenZeppelin SDK ডেভেলপমেন্ট শেষ হয়েছে**
-**Catapulta -** **_মাল্টি-চেইন স্মার্ট কন্ট্র্যাক্ট ডেপ্লয়মেন্ট টুল, ব্লক এক্সপ্লোরারে ভেরিফিকেশন অটোমেট করে, ডেপ্লয় করা স্মার্ট কন্ট্র্যাক্টের ট্র্যাক রাখে এবং ডেপ্লয়মেন্ট রিপোর্ট শেয়ার করে, Foundry এবং Hardhat প্রজেক্টের জন্য প্লাগ-এন-প্লে।_**
+**Catapulta -** **_মাল্টি-চেইন স্মার্ট কন্ট্রাক্ট ডিপ্লয়মেন্ট টুল, ব্লক এক্সপ্লোরারগুলোতে ভেরিফিকেশন স্বয়ংক্রিয় করে, ডিপ্লয় করা স্মার্ট কন্ট্রাক্টগুলোর ট্র্যাক রাখে এবং ডিপ্লয়মেন্ট রিপোর্ট শেয়ার করে, Foundry এবং Hardhat প্রজেক্টগুলোর জন্য প্লাগ-অ্যান্ড-প্লে।_**
- [Github](https://github.com/catapulta-sh)
-**GoldRush (Covalent দ্বারা চালিত) -** **_GoldRush ডেভেলপার, বিশ্লেষক এবং এন্টারপ্রাইজদের জন্য সবচেয়ে ব্যাপক ব্লকচেইন ডেটা API স্যুট অফার করে। আপনি একটি DeFi ড্যাশবোর্ড, একটি ওয়ালেট, একটি ট্রেডিং বট, একটি AI এজেন্ট বা একটি কমপ্লায়েন্স প্ল্যাটফর্ম তৈরি করুন না কেন, ডেটা APIগুলি আপনার প্রয়োজনীয় অনচেইন ডেটাতে দ্রুত, নির্ভুল এবং ডেভেলপার-বান্ধব অ্যাক্সেস প্রদান করে_**
+**GoldRush (Covalent দ্বারা চালিত) -** **_GoldRush ডেভেলপার, বিশ্লেষক এবং এন্টারপ্রাইজগুলোর জন্য সবচেয়ে ব্যাপক ব্লকচেইন ডেটা API স্যুট অফার করে। আপনি একটি DeFi ড্যাশবোর্ড, একটি ওয়ালেট, একটি ট্রেডিং বট, একটি AI এজেন্ট বা একটি কমপ্লায়েন্স প্ল্যাটফর্ম তৈরি করুন না কেন, ডেটা API-গুলো আপনার প্রয়োজনীয় অপরিহার্য অনচেইন ডেটাতে দ্রুত, নির্ভুল এবং ডেভেলপার-বান্ধব অ্যাক্সেস প্রদান করে_**
- [ওয়েবসাইট](https://goldrush.dev/)
- [ডকুমেন্টেশন](https://goldrush.dev/docs/chains/ethereum)
- [GitHub](https://github.com/covalenthq)
- [Discord](https://www.covalenthq.com/discord/)
-**Wake -** **_কন্ট্র্যাক্ট টেস্টিং, ফাজিং, ডেপ্লয়মেন্ট, ভালনারেবিলিটি স্ক্যানিং এবং কোড নেভিগেশনের জন্য অল-ইন-ওয়ান পাইথন ফ্রেমওয়ার্ক।_**
+**Wake -** **_কন্ট্রাক্ট টেস্টিং, ফাজিং, ডিপ্লয়মেন্ট, ভালনারেবিলিটি স্ক্যানিং এবং কোড নেভিগেশনের জন্য অল-ইন-ওয়ান পাইথন ফ্রেমওয়ার্ক।_**
- [হোমপেজ](https://getwake.io/)
- [ডকুমেন্টেশন](https://ackeeblockchain.com/wake/docs/latest/)
- [GitHub](https://github.com/Ackee-Blockchain/wake)
-- [VS কোড এক্সটেনশন](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity)
+- [VS Code এক্সটেনশন](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity)
-**Veramo -** **_ওপেন সোর্স, মডুলার এবং অ্যাগনস্টিক ফ্রেমওয়ার্ক যা ডিসেন্ট্রালাইজড এপ্লিকেশন ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনে ডিসেন্ট্রালাইজড আইডেন্টিটি এবং ভেরিফাইয়েবল ক্রেডেনশিয়াল তৈরি করা সহজ করে তোলে।_**
+**Veramo -** **_ওপেন সোর্স, মডুলার এবং অ্যাগনোস্টিক ফ্রেমওয়ার্ক যা ডিসেন্ট্রালাইজড এপ্লিকেশন ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনগুলোতে ডিসেন্ট্রালাইজড আইডেন্টিটি এবং যাচাইযোগ্য শংসাপত্র তৈরি করা সহজ করে তোলে।_**
- [হোমপেজ](https://veramo.io/)
- [ডকুমেন্টেশন](https://veramo.io/docs/basics/introduction)
@@ -145,8 +140,12 @@ lang: bn
## আরও পড়ুন {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত টপিকগুলো {#related-topics}
-- [একটি স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করুন](/developers/local-environment/)
+- [একটি লোকাল ডেভেলপমেন্ট পরিবেশ সেট আপ করুন](/developers/local-environment/)
+
+## টিউটোরিয়াল: ইথিরিয়ামে ডেভেলপমেন্ট ফ্রেমওয়ার্ক {#tutorials}
+
+- [নতুনদের জন্য হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট – ফুলস্ট্যাক](/developers/tutorials/hello-world-smart-contract-fullstack/) _– Hardhat ব্যবহার করে একটি হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট তৈরি এবং ডিপ্লয় করুন, তারপর এটিকে একটি ফ্রন্টএন্ডের সাথে সংযুক্ত করুন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/gas/index.md b/public/content/translations/bn/developers/docs/gas/index.md
index b64a77cef54..47ea6557758 100644
--- a/public/content/translations/bn/developers/docs/gas/index.md
+++ b/public/content/translations/bn/developers/docs/gas/index.md
@@ -1,151 +1,151 @@
---
-title: "গ্যাস এবং ফি"
-metaTitle: "Ethereum গ্যাস এবং ফি: টেকনিক্যাল ওভারভিউ"
-description: "Ethereum গ্যাস ফি, সেগুলি কীভাবে গণনা করা হয় এবং নেটওয়ার্ক নিরাপত্তা এবং লেনদেন প্রক্রিয়াকরণে তাদের ভূমিকা সম্পর্কে জানুন।"
+title: গ্যাস এবং ফি
+metaTitle: "ইথিরিয়াম গ্যাস এবং ফি: টেকনিক্যাল ওভারভিউ"
+description: ইথিরিয়াম গ্যাস ফি, এগুলো কীভাবে হিসাব করা হয় এবং নেটওয়ার্ক নিরাপত্তা ও লেনদেন প্রক্রিয়াকরণে এদের ভূমিকা সম্পর্কে জানুন।
lang: bn
---
-গ্যাস Ethereum নেটওয়ার্কের জন্য অপরিহার্য। এটি সেই জ্বালানি যা এটিকে কাজ করার অনুমতি দেয়, ঠিক যেমন একটি গাড়ি চালানোর জন্য গ্যাসোলিনের প্রয়োজন হয়।
+[Ethereum](/) নেটওয়ার্কের জন্য গ্যাস অপরিহার্য। এটি এমন একটি জ্বালানি যা এটিকে কাজ করতে সাহায্য করে, ঠিক যেমন একটি গাড়ি চালানোর জন্য গ্যাসোলিন প্রয়োজন।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [লেনদেন](/developers/docs/transactions/) এবং [EVM](/developers/docs/evm/) সম্পর্কে পড়ার পরামর্শ দিচ্ছি।
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [লেনদেন](/developers/docs/transactions/) এবং [EVM](/developers/docs/evm/) সম্পর্কে পড়ে নিন।
-## Ethereum-এ গ্যাস সম্পর্কে জানুন: তারা কীভাবে কাজ করে এবং কীভাবে গ্যাস ফি কম দিতে হয়? {#what-is-gas}
+## গ্যাস কী? {#what-is-gas}
-গ্যাস বলতে সেই একককে বোঝায় যা Ethereum নেটওয়ার্কে নির্দিষ্ট ক্রিয়াকলাপ সম্পাদনের জন্য প্রয়োজনীয় কম্পিউটেশনাল প্রচেষ্টার পরিমাণ পরিমাপ করে।
+গ্যাস বলতে সেই একককে বোঝায় যা ইথিরিয়াম নেটওয়ার্কে নির্দিষ্ট অপারেশনগুলো সম্পাদন করতে প্রয়োজনীয় কম্পিউটেশনাল প্রচেষ্টার পরিমাণ পরিমাপ করে।
-যেহেতু প্রতিটি Ethereum লেনদেন কার্যকর করার জন্য কম্পিউটেশনাল রিসোর্স প্রয়োজন, তাই সেই রিসোর্সের জন্য অর্থ প্রদান করতে হয় যাতে Ethereum স্প্যামের জন্য ঝুঁকিপূর্ণ না হয় এবং অসীম কম্পিউটেশনাল লুপে আটকে না যায়। গণনার জন্য অর্থপ্রদান একটি গ্যাস ফি আকারে করা হয়।
+যেহেতু প্রতিটি ইথিরিয়াম লেনদেন সম্পাদনের জন্য কম্পিউটেশনাল রিসোর্সের প্রয়োজন হয়, তাই ইথিরিয়াম যাতে স্প্যামের শিকার না হয় এবং অসীম কম্পিউটেশনাল লুপে আটকে না যায় তা নিশ্চিত করতে সেই রিসোর্সগুলোর জন্য মূল্য পরিশোধ করতে হয়। কম্পিউটেশনের জন্য এই পেমেন্ট গ্যাস ফি হিসেবে দেওয়া হয়।
-গ্যাস ফি হল **কিছু অপারেশন করার জন্য ব্যবহৃত গ্যাসের পরিমাণ, প্রতি ইউনিট গ্যাসের খরচ দ্বারা গুণিত**। লেনদেন সফল বা ব্যর্থ হোক না কেন ফি প্রদান করা হয়।
+গ্যাস ফি হলো **কোনো অপারেশন করতে ব্যবহৃত গ্যাসের পরিমাণ, যাকে প্রতি ইউনিট গ্যাসের খরচ দিয়ে গুণ করা হয়**। লেনদেন সফল হোক বা ব্যর্থ হোক, এই ফি পরিশোধ করতে হয়।
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে অভিযোজিত ডায়াগ্রাম_
+
+_চিত্রটি [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে নেওয়া হয়েছে_
-গ্যাস ফি অবশ্যই Ethereum-এর নেটিভ কারেন্সি, ইথার (ETH)-এ পরিশোধ করতে হবে। গ্যাসের দাম সাধারণত gwei-তে উদ্ধৃত করা হয়, যা ETH-এর একটি একক। প্রতি gwei এক বিলিয়নের এক ভাগ ETH (0.000000001 ETH বা 10-9 ETH)-এর সমান।
+গ্যাস ফি ইথিরিয়ামের নিজস্ব মুদ্রা, ইথার (ETH)-এ পরিশোধ করতে হয়। গ্যাস প্রাইস সাধারণত gwei-তে উল্লেখ করা হয়, যা ETH-এর একটি একক। প্রতিটি gwei হলো একটি ETH-এর এক বিলিয়ন ভাগের এক ভাগ (0.000000001 ETH বা 10-9 ETH)।
-উদাহরণস্বরূপ, আপনার গ্যাস খরচ 0.000000001 ইথার বলার পরিবর্তে, আপনি বলতে পারেন আপনার গ্যাস খরচ 1 gwei।
+উদাহরণস্বরূপ, আপনার গ্যাসের খরচ 0.000000001 ইথার বলার পরিবর্তে, আপনি বলতে পারেন আপনার গ্যাসের খরচ 1 gwei।
-'gwei' শব্দটি 'giga-wei'-এর একটি সংক্ষিপ্ত রূপ, যার অর্থ 'বিলিয়ন wei'। এক gwei এক বিলিয়ন wei এর সমান। Wei নিজেই ([বি-মানি](https://www.investopedia.com/terms/b/bmoney.asp)-এর স্রষ্টা [ওয়েই ডাই](https://wikipedia.org/wiki/Wei_Dai)-এর নামে নামকরণ করা হয়েছে) ETH-এর ক্ষুদ্রতম একক।
+'gwei' শব্দটি 'giga-wei'-এর সংক্ষিপ্ত রূপ, যার অর্থ 'বিলিয়ন wei'। এক gwei সমান এক বিলিয়ন wei। Wei নিজেই ([b-money](https://www.investopedia.com/terms/b/bmoney.asp)-এর স্রষ্টা [Wei Dai](https://wikipedia.org/wiki/Wei_Dai)-এর নামানুসারে) ETH-এর সবচেয়ে ছোট একক।
-## গ্যাস ফি কীভাবে গণনা করা হয়? {#how-are-gas-fees-calculated}
+## গ্যাস ফি কীভাবে হিসাব করা হয়? {#how-are-gas-fees-calculated}
-আপনি যখন একটি লেনদেন জমা দেন তখন আপনি যে পরিমাণ গ্যাস দিতে ইচ্ছুক তা সেট করতে পারেন। একটি নির্দিষ্ট পরিমাণ গ্যাস অফার করার মাধ্যমে, আপনি পরবর্তী ব্লকে আপনার লেনদেন অন্তর্ভুক্ত করার জন্য বিড করছেন। আপনি যদি খুব কম অফার করেন, তাহলে ভ্যালিডেটররা আপনার লেনদেন অন্তর্ভুক্ত করার জন্য বেছে নেওয়ার সম্ভাবনা কম, যার অর্থ আপনার লেনদেন দেরিতে বা একেবারেই কার্যকর নাও হতে পারে। আপনি যদি খুব বেশি অফার করেন, তাহলে আপনি কিছু ETH নষ্ট করতে পারেন। তাহলে, আপনি কীভাবে বলবেন যে কত টাকা দিতে হবে?
+আপনি যখন কোনো লেনদেন সাবমিট করেন তখন আপনি কত পরিমাণ গ্যাস দিতে ইচ্ছুক তা নির্ধারণ করতে পারেন। একটি নির্দিষ্ট পরিমাণ গ্যাস অফার করার মাধ্যমে, আপনি আপনার লেনদেনটি পরবর্তী ব্লকে অন্তর্ভুক্ত করার জন্য বিড করছেন। আপনি যদি খুব কম অফার করেন, তবে ভ্যালিডেটরস আপনার লেনদেনটি অন্তর্ভুক্ত করার জন্য বেছে নেওয়ার সম্ভাবনা কম, যার মানে আপনার লেনদেনটি দেরিতে কার্যকর হতে পারে বা একেবারেই নাও হতে পারে। আপনি যদি খুব বেশি অফার করেন, তবে আপনি কিছু ETH নষ্ট করতে পারেন। তাহলে, আপনি কীভাবে বুঝবেন কত দিতে হবে?
-আপনি যে মোট গ্যাস প্রদান করেন তা দুটি উপাদানে বিভক্ত: `বেস ফি` এবং `প্রায়োরিটি ফি` (টিপ)।
+আপনি যে মোট গ্যাস প্রদান করেন তা দুটি উপাদানে বিভক্ত: `base fee` (বেস ফি) এবং `priority fee` (প্রায়োরিটি ফি বা টিপ)।
-`বেস ফি` প্রোটোকল দ্বারা সেট করা হয়—আপনার লেনদেন বৈধ বলে বিবেচিত হওয়ার জন্য আপনাকে অন্তত এই পরিমাণ অর্থ প্রদান করতে হবে। `প্রায়োরিটি ফি` হল একটি টিপ যা আপনি বেস ফি-তে যোগ করেন যাতে আপনার লেনদেনটি ভ্যালিডেটরদের কাছে আকর্ষণীয় হয় যাতে তারা পরবর্তী ব্লকে অন্তর্ভুক্ত করার জন্য এটি বেছে নেয়।
+`base fee` প্রটোকল দ্বারা নির্ধারিত হয়—আপনার লেনদেনটি বৈধ হিসেবে বিবেচিত হওয়ার জন্য আপনাকে অন্তত এই পরিমাণ অর্থ প্রদান করতে হবে। `priority fee` হলো একটি টিপ যা আপনি বেস ফি-এর সাথে যোগ করেন যাতে আপনার লেনদেনটি ভ্যালিডেটরস-এর কাছে আকর্ষণীয় হয় এবং তারা এটিকে পরবর্তী ব্লকে অন্তর্ভুক্ত করার জন্য বেছে নেয়।
-একটি লেনদেন যা শুধুমাত্র `বেস ফি` প্রদান করে তা প্রযুক্তিগতভাবে বৈধ কিন্তু অন্তর্ভুক্ত হওয়ার সম্ভাবনা কম কারণ এটি ভ্যালিডেটরদের অন্য কোনো লেনদেনের চেয়ে এটি বেছে নেওয়ার জন্য কোনো প্রণোদনা প্রদান করে না। 'সঠিক' `প্রায়োরিটি` ফি আপনার লেনদেন পাঠানোর সময় নেটওয়ার্ক ব্যবহারের দ্বারা নির্ধারিত হয়—যদি অনেক চাহিদা থাকে তাহলে আপনাকে আপনার `প্রায়োরিটি` ফি বেশি সেট করতে হতে পারে, কিন্তু যখন চাহিদা কম থাকে তখন আপনি কম অর্থ প্রদান করতে পারেন।
+একটি লেনদেন যা শুধুমাত্র `base fee` প্রদান করে তা প্রযুক্তিগতভাবে বৈধ কিন্তু অন্তর্ভুক্ত হওয়ার সম্ভাবনা কম কারণ এটি ভ্যালিডেটরস-কে অন্য কোনো লেনদেনের চেয়ে এটিকে বেছে নেওয়ার জন্য কোনো ইনসেনটিভ দেয় না। 'সঠিক' `priority` ফি নির্ধারিত হয় আপনি যখন আপনার লেনদেন পাঠান তখনকার নেটওয়ার্ক ব্যবহারের ওপর ভিত্তি করে—যদি অনেক চাহিদা থাকে তবে আপনাকে আপনার `priority` ফি বেশি নির্ধারণ করতে হতে পারে, কিন্তু যখন চাহিদা কম থাকে তখন আপনি কম দিতে পারেন।
-উদাহরণস্বরূপ, ধরা যাক জর্ডানকে টেলরকে 1 ETH দিতে হবে। একটি ETH স্থানান্তরের জন্য 21,000 ইউনিট গ্যাস প্রয়োজন, এবং বেস ফি হল 10 gwei। জর্ডান 2 gwei এর একটি টিপ অন্তর্ভুক্ত করে।
+উদাহরণস্বরূপ, ধরুন জর্ডানকে টেলরকে 1 ETH দিতে হবে। একটি ETH ট্রান্সফারের জন্য 21,000 ইউনিট গ্যাস প্রয়োজন, এবং বেস ফি হলো 10 gwei। জর্ডান 2 gwei-এর একটি টিপ অন্তর্ভুক্ত করে।
মোট ফি এখন এর সমান হবে:
-`ব্যবহৃত গ্যাসের ইউনিট * (বেস ফি + প্রায়োরিটি ফি)`
+`ব্যবহৃত গ্যাসের ইউনিট * (বেস ফি + প্রায়োরিটি ফি)`
-যেখানে `বেস ফি` প্রোটোকল দ্বারা সেট করা একটি মান এবং `প্রায়োরিটি ফি` হল ভ্যালিডেটরের জন্য টিপ হিসাবে ব্যবহারকারী দ্বারা সেট করা একটি মান।
+যেখানে `base fee` হলো প্রটোকল দ্বারা নির্ধারিত একটি মান এবং `priority fee` হলো ব্যবহারকারী দ্বারা ভ্যালিডেটর-কে টিপ হিসেবে দেওয়া একটি মান।
যেমন, `21,000 * (10 + 2) = 252,000 gwei` (0.000252 ETH)।
-জর্ডান যখন টাকা পাঠাবে, তখন জর্ডানের অ্যাকাউন্ট থেকে 1.000252 ETH কেটে নেওয়া হবে। টেলরের অ্যাকাউন্টে 1.0000 ETH জমা হবে। ভ্যালিডেটর 0.000042 ETH এর টিপ গ্রহণ করে। 0.00021 ETH এর `বেস ফি` বার্ন করা হয়।
+যখন জর্ডান টাকা পাঠায়, তখন জর্ডানের একাউন্ট থেকে 1.000252 ETH কেটে নেওয়া হবে। টেলরের একাউন্টে 1.0000 ETH জমা হবে। ভ্যালিডেটর 0.000042 ETH-এর টিপ পাবে। 0.00021 ETH-এর `base fee` পুড়িয়ে ফেলা (বার্ন করা) হবে।
### বেস ফি {#base-fee}
-প্রতিটি ব্লকের একটি বেস ফি থাকে যা একটি রিজার্ভ মূল্য হিসাবে কাজ করে। একটি ব্লকে অন্তর্ভুক্তির জন্য যোগ্য হতে, প্রতি গ্যাসের জন্য প্রস্তাবিত মূল্য কমপক্ষে বেস ফি-র সমান হতে হবে। বেস ফি বর্তমান ব্লক থেকে স্বাধীনভাবে গণনা করা হয় এবং পরিবর্তে এর আগের ব্লকগুলি দ্বারা নির্ধারিত হয়, যা ব্যবহারকারীদের জন্য লেনদেন ফি আরও অনুমানযোগ্য করে তোলে। ব্লক তৈরি করা হলে এই **বেস ফি \"বার্ন\" করা হয়**, এটিকে প্রচলন থেকে সরিয়ে দেওয়া হয়।
+প্রতিটি ব্লকের একটি বেস ফি থাকে যা রিজার্ভ প্রাইস হিসেবে কাজ করে। একটি ব্লকে অন্তর্ভুক্ত হওয়ার যোগ্য হতে হলে প্রতি গ্যাসের অফার করা মূল্য অন্তত বেস ফি-এর সমান হতে হবে। বেস ফি বর্তমান ব্লকের ওপর নির্ভর না করে স্বাধীনভাবে হিসাব করা হয় এবং এর পরিবর্তে এর আগের ব্লকস দ্বারা নির্ধারিত হয়, যা ব্যবহারকারীদের জন্য লেনদেন ফি-কে আরও অনুমানযোগ্য করে তোলে। যখন ব্লক তৈরি হয় তখন এই **বেস ফি "পুড়িয়ে ফেলা" (বার্ন করা) হয়**, যা এটিকে সার্কুলেশন থেকে সরিয়ে দেয়।
-বেস ফি একটি সূত্র দ্বারা গণনা করা হয় যা পূর্ববর্তী ব্লকের আকারের (সমস্ত লেনদেনের জন্য ব্যবহৃত গ্যাসের পরিমাণ) সাথে লক্ষ্য আকারের (গ্যাস সীমার অর্ধেক) তুলনা করে। যদি লক্ষ্য ব্লকের আকার লক্ষ্যের উপরে বা নীচে থাকে, তবে বেস ফি প্রতি ব্লকে সর্বোচ্চ 12.5% বৃদ্ধি বা হ্রাস পাবে। এই সূচকীয় বৃদ্ধি ব্লক সাইজকে অনির্দিষ্টকালের জন্য উচ্চ রাখা অর্থনৈতিকভাবে অকার্যকর করে তোলে।
+বেস ফি এমন একটি সূত্র দ্বারা হিসাব করা হয় যা পূর্ববর্তী ব্লকের আকার (সমস্ত লেনদেনের জন্য ব্যবহৃত গ্যাসের পরিমাণ) টার্গেট আকারের (গ্যাস লিমিট-এর অর্ধেক) সাথে তুলনা করে। যদি টার্গেট ব্লকের আকার টার্গেটের উপরে বা নিচে থাকে, তবে বেস ফি প্রতি ব্লকে সর্বোচ্চ 12.5% বৃদ্ধি বা হ্রাস পাবে। এই সূচকীয় বৃদ্ধি ব্লকের আকার অনির্দিষ্টকালের জন্য বেশি থাকাকে অর্থনৈতিকভাবে অকার্যকর করে তোলে।
-| ব্লক নম্বর | অন্তর্ভুক্ত গ্যাস | ফি বৃদ্ধি | বর্তমান বেস ফি |
-| ---------- | ----------------: | --------------------: | -------------------------: |
-| 1 | 18M | 0% | 100 gwei |
-| 2 | 36M | 0% | 100 gwei |
-| 3 | 36M | 12.5% | 112.5 gwei |
-| 4 | 36M | 12.5% | 126.6 gwei |
-| 5 | 36M | 12.5% | 142.4 gwei |
-| 6 | 36M | 12.5% | 160.2 gwei |
-| 7 | 36M | 12.5% | 180.2 gwei |
-| 8 | 36M | 12.5% | 202.7 gwei |
+| ব্লক নম্বর | অন্তর্ভুক্ত গ্যাস | ফি বৃদ্ধি | বর্তমান বেস ফি |
+| ------------ | -----------: | -----------: | ---------------: |
+| 1 | 18M | 0% | 100 gwei |
+| 2 | 36M | 0% | 100 gwei |
+| 3 | 36M | 12.5% | 112.5 gwei |
+| 4 | 36M | 12.5% | 126.6 gwei |
+| 5 | 36M | 12.5% | 142.4 gwei |
+| 6 | 36M | 12.5% | 160.2 gwei |
+| 7 | 36M | 12.5% | 180.2 gwei |
+| 8 | 36M | 12.5% | 202.7 gwei |
-উপরের সারণীতে, 36 মিলিয়নকে গ্যাস সীমা হিসাবে ব্যবহার করে একটি উদাহরণ দেখানো হয়েছে। এই উদাহরণটি অনুসরণ করে, 9 নম্বর ব্লকে একটি লেনদেন তৈরি করতে, একটি ওয়ালেট ব্যবহারকারীকে নিশ্চিতভাবে জানিয়ে দেবে যে পরবর্তী ব্লকে যোগ করার জন্য **সর্বোচ্চ বেস ফি** হল `বর্তমান বেস ফি * 112.5%` বা `202.7 gwei * 112.5% = 228.1 gwei`।
+উপরের টেবিলে, 36 মিলিয়ন গ্যাস লিমিট হিসেবে ব্যবহার করে একটি উদাহরণ দেখানো হয়েছে। এই উদাহরণ অনুসরণ করে, 9 নম্বর ব্লকে একটি লেনদেন তৈরি করতে, একটি ওয়ালেট ব্যবহারকারীকে নিশ্চিতভাবে জানাবে যে পরবর্তী ব্লকে যোগ করার জন্য **সর্বোচ্চ বেস ফি** হলো `বর্তমান বেস ফি * 112.5%` বা `202.7 gwei * 112.5% = 228.1 gwei`।
-এটিও মনে রাখা গুরুত্বপূর্ণ যে আমরা সম্পূর্ণ ব্লকের বর্ধিত স্পাইক দেখতে পাওয়ার সম্ভাবনা কম কারণ একটি সম্পূর্ণ ব্লকের আগে বেস ফি যে গতিতে বৃদ্ধি পায়।
+এটিও মনে রাখা গুরুত্বপূর্ণ যে আমরা পূর্ণ ব্লকের দীর্ঘায়িত স্পাইক দেখার সম্ভাবনা কম কারণ একটি পূর্ণ ব্লকের আগে বেস ফি যে গতিতে বৃদ্ধি পায়।
-| ব্লক নম্বর | অন্তর্ভুক্ত গ্যাস | ফি বৃদ্ধি | বর্তমান বেস ফি |
-| --------------------------------------------------- | --------------------------------------------------: | --------------------: | --------------------------------------------------: |
-| 30 | 36M | 12.5% | 2705.6 gwei |
-| ... | ... | 12.5% | ... |
-| 50 | 36M | 12.5% | 28531.3 gwei |
-| ... | ... | 12.5% | ... |
-| 100 | 36M | 12.5% | 10302608.6 gwei |
+| ব্লক নম্বর | অন্তর্ভুক্ত গ্যাস | ফি বৃদ্ধি | বর্তমান বেস ফি |
+| ------------ | -----------: | -----------: | ---------------: |
+| 30 | 36M | 12.5% | 2705.6 gwei |
+| ... | ... | 12.5% | ... |
+| 50 | 36M | 12.5% | 28531.3 gwei |
+| ... | ... | 12.5% | ... |
+| 100 | 36M | 12.5% | 10302608.6 gwei |
### প্রায়োরিটি ফি (টিপস) {#priority-fee}
-প্রায়োরিটি ফি (টিপ) ভ্যালিডেটরদের একটি ব্লকের লেনদেনের সংখ্যা সর্বাধিক করতে উৎসাহিত করে, যা শুধুমাত্র ব্লক গ্যাস সীমা দ্বারা সীমাবদ্ধ। টিপস ছাড়া, একজন যুক্তিসঙ্গত ভ্যালিডেটর কোনো সরাসরি এক্সিকিউশন লেয়ার বা কনসেন্সাস লেয়ারের জরিমানা ছাড়াই কম—এমনকি শূন্য—লেনদেন অন্তর্ভুক্ত করতে পারে, কারণ স্টেকিং রিওয়ার্ড একটি ব্লকে কতগুলি লেনদেন আছে তার থেকে স্বাধীন। অতিরিক্তভাবে, টিপস ব্যবহারকারীদের একই ব্লকের মধ্যে অগ্রাধিকারের জন্য অন্যদেরকে ছাড়িয়ে যেতে দেয়, যা কার্যকরভাবে জরুরি অবস্থার সংকেত দেয়।
+প্রায়োরিটি ফি (টিপ) ভ্যালিডেটরস-কে একটি ব্লকে লেনদেনের সংখ্যা সর্বাধিক করতে উৎসাহিত করে, যা শুধুমাত্র ব্লক গ্যাস লিমিট দ্বারা সীমাবদ্ধ। টিপস ছাড়া, একজন যুক্তিসঙ্গত ভ্যালিডেটর কোনো সরাসরি এক্সিকিউশন লেয়ার বা কনসেন্সাস লেয়ার জরিমানা ছাড়াই কম—বা এমনকি শূন্য—লেনদেন অন্তর্ভুক্ত করতে পারে, কারণ স্টেকিং রিওয়ার্ড একটি ব্লকে কতগুলো লেনদেন আছে তার ওপর নির্ভর করে না। উপরন্তু, টিপস ব্যবহারকারীদের একই ব্লকের মধ্যে অগ্রাধিকারের জন্য অন্যদের চেয়ে বেশি বিড করার অনুমতি দেয়, যা কার্যকরভাবে জরুরিতার সংকেত দেয়।
### সর্বোচ্চ ফি {#maxfee}
-নেটওয়ার্কে একটি লেনদেন সম্পাদনের জন্য, ব্যবহারকারীরা তাদের লেনদেন কার্যকর করার জন্য যে সর্বোচ্চ সীমা দিতে ইচ্ছুক তা নির্দিষ্ট করতে পারে। এই ঐচ্ছিক প্যারামিটারটি `maxFeePerGas` নামে পরিচিত। একটি লেনদেন কার্যকর করার জন্য, সর্বোচ্চ ফি অবশ্যই বেস ফি এবং টিপের যোগফলকে অতিক্রম করতে হবে। লেনদেন প্রেরককে সর্বোচ্চ ফি এবং বেস ফি ও টিপের যোগফলের মধ্যে পার্থক্য ফেরত দেওয়া হয়।
+নেটওয়ার্কে একটি লেনদেন সম্পাদন করতে, ব্যবহারকারীরা তাদের লেনদেন সম্পাদনের জন্য তারা যে সর্বোচ্চ সীমা প্রদান করতে ইচ্ছুক তা নির্দিষ্ট করতে পারেন। এই ঐচ্ছিক প্যারামিটারটি `maxFeePerGas` নামে পরিচিত। একটি লেনদেন সম্পাদনের জন্য, সর্বোচ্চ ফি অবশ্যই বেস ফি এবং টিপের যোগফলের চেয়ে বেশি হতে হবে। লেনদেন প্রেরককে সর্বোচ্চ ফি এবং বেস ফি ও টিপের যোগফলের মধ্যে পার্থক্য ফেরত দেওয়া হয়।
### ব্লকের আকার {#block-size}
-প্রতিটি ব্লকের একটি লক্ষ্য আকার থাকে যা বর্তমান গ্যাস সীমার অর্ধেক, তবে ব্লক সীমা পর্যন্ত না পৌঁছানো পর্যন্ত (লক্ষ্য ব্লক আকারের 2 গুণ) নেটওয়ার্কের চাহিদা অনুযায়ী ব্লকের আকার বাড়বে বা কমবে। প্রোটোকলটি _tâtonnement_ প্রক্রিয়ার মাধ্যমে লক্ষ্যে একটি ভারসাম্য গড় ব্লক আকার অর্জন করে। এর মানে হল যদি ব্লকের আকার লক্ষ্য ব্লকের আকারের চেয়ে বড় হয়, প্রোটোকল নিম্নলিখিত ব্লকের জন্য বেস ফি বাড়িয়ে দেবে। একইভাবে, যদি ব্লকের আকার লক্ষ্য ব্লকের আকারের চেয়ে কম হয় তবে প্রোটোকল বেস ফি কমিয়ে দেবে।
+প্রতিটি ব্লকের একটি টার্গেট আকার থাকে যা বর্তমান গ্যাস লিমিট-এর অর্ধেক, তবে নেটওয়ার্কের চাহিদা অনুযায়ী ব্লকস-এর আকার বৃদ্ধি বা হ্রাস পাবে, যতক্ষণ না ব্লক লিমিট পৌঁছায় (টার্গেট ব্লকের আকারের 2 গুণ)। প্রটোকল _tâtonnement_ প্রক্রিয়ার মাধ্যমে টার্গেটে একটি ভারসাম্যপূর্ণ গড় ব্লকের আকার অর্জন করে। এর মানে হলো যদি ব্লকের আকার টার্গেট ব্লকের আকারের চেয়ে বড় হয়, তবে প্রটোকল পরবর্তী ব্লকের জন্য বেস ফি বৃদ্ধি করবে। একইভাবে, যদি ব্লকের আকার টার্গেট ব্লকের আকারের চেয়ে ছোট হয়, তবে প্রটোকল বেস ফি হ্রাস করবে।
-বেস ফি যে পরিমাণে সামঞ্জস্য করা হয় তা বর্তমান ব্লক আকার লক্ষ্য থেকে কত দূরে তার সমানুপাতিক। এটি একটি খালি ব্লকের জন্য -12.5% থেকে একটি রৈখিক গণনা, লক্ষ্য আকারে 0%, গ্যাস সীমায় পৌঁছানো একটি ব্লকের জন্য +12.5% পর্যন্ত। ভ্যালিডেটর সংকেতের উপর ভিত্তি করে, সেইসাথে নেটওয়ার্ক আপগ্রেডের মাধ্যমে সময়ের সাথে সাথে গ্যাস সীমা ওঠানামা করতে পারে। আপনি [এখানে সময়ের সাথে সাথে গ্যাস সীমার পরিবর্তন দেখতে পারেন](https://eth.blockscout.com/stats/averageGasLimit?interval=threeMonths)।
+বেস ফি যে পরিমাণ সমন্বয় করা হয় তা বর্তমান ব্লকের আকার টার্গেট থেকে কতটা দূরে তার সমানুপাতিক। এটি একটি রৈখিক হিসাব যা একটি খালি ব্লকের জন্য -12.5%, টার্গেট আকারে 0%, এবং গ্যাস লিমিট-এ পৌঁছানো একটি ব্লকের জন্য +12.5% পর্যন্ত। গ্যাস লিমিট সময়ের সাথে সাথে ভ্যালিডেটর সিগন্যালিংয়ের পাশাপাশি নেটওয়ার্ক আপগ্রেডের মাধ্যমে ওঠানামা করতে পারে। আপনি [এখানে সময়ের সাথে সাথে গ্যাস লিমিট-এর পরিবর্তনগুলো দেখতে পারেন](https://eth.blockscout.com/stats/averageGasLimit?interval=threeMonths)।
-[ব্লক সম্পর্কে আরও](/developers/docs/blocks/)
+[ব্লকস সম্পর্কে আরও জানুন](/developers/docs/blocks/)
-### অনুশীলনে গ্যাস ফি গণনা করা {#calculating-fees-in-practice}
+### বাস্তবে গ্যাস ফি হিসাব করা {#calculating-fees-in-practice}
-আপনার লেনদেন কার্যকর করার জন্য আপনি কত টাকা দিতে ইচ্ছুক তা আপনি স্পষ্টভাবে বলতে পারেন। যাইহোক, বেশিরভাগ ওয়ালেট প্রদানকারী তাদের ব্যবহারকারীদের উপর চাপানো জটিলতা কমাতে স্বয়ংক্রিয়ভাবে একটি প্রস্তাবিত লেনদেন ফি (বেস ফি + প্রস্তাবিত প্রায়োরিটি ফি) সেট করবে।
+আপনার লেনদেন সম্পাদন করতে আপনি কত টাকা দিতে ইচ্ছুক তা আপনি স্পষ্টভাবে উল্লেখ করতে পারেন। তবে, বেশিরভাগ ওয়ালেট প্রদানকারী তাদের ব্যবহারকারীদের ওপর জটিলতার বোঝা কমাতে স্বয়ংক্রিয়ভাবে একটি প্রস্তাবিত লেনদেন ফি (বেস ফি + প্রস্তাবিত প্রায়োরিটি ফি) নির্ধারণ করবে।
## গ্যাস ফি কেন বিদ্যমান? {#why-do-gas-fees-exist}
-সংক্ষেপে, গ্যাস ফি Ethereum নেটওয়ার্ককে সুরক্ষিত রাখতে সাহায্য করে। নেটওয়ার্কে নির্বাহ করা প্রতিটি গণনার জন্য একটি ফি প্রয়োজন করে, আমরা খারাপ অভিনেতাদের নেটওয়ার্ক স্প্যামিং থেকে বিরত রাখি। কোডে দুর্ঘটনাজনিত বা প্রতিকূল অসীম লুপ বা অন্যান্য গণনামূলক অপচয় এড়াতে, প্রতিটি লেনদেনকে কোড এক্সিকিউশনের কতগুলি গণনামূলক পদক্ষেপ ব্যবহার করতে পারে তার একটি সীমা সেট করতে হবে। গণনার মৌলিক একক হল \"গ্যাস\"।
+সংক্ষেপে, গ্যাস ফি ইথিরিয়াম নেটওয়ার্ক সুরক্ষিত রাখতে সাহায্য করে। নেটওয়ার্কে সম্পাদিত প্রতিটি কম্পিউটেশনের জন্য একটি ফি প্রয়োজন করার মাধ্যমে, আমরা খারাপ অভিনেতাদের নেটওয়ার্কে স্প্যাম করা থেকে বিরত রাখি। কোডে দুর্ঘটনাবশত বা ক্ষতিকারক অসীম লুপ বা অন্যান্য কম্পিউটেশনাল অপচয় এড়াতে, প্রতিটি লেনদেনের জন্য এটি কোড এক্সিকিউশনের কতগুলো কম্পিউটেশনাল ধাপ ব্যবহার করতে পারে তার একটি সীমা নির্ধারণ করা প্রয়োজন। কম্পিউটেশনের মৌলিক একক হলো "গ্যাস"।
-যদিও একটি লেনদেনে একটি সীমা অন্তর্ভুক্ত থাকে, একটি লেনদেনে ব্যবহৃত না হওয়া কোনো গ্যাস ব্যবহারকারীকে ফেরত দেওয়া হয় (যেমন, `max fee - (base fee + tip)` ফেরত দেওয়া হয়)।
+যদিও একটি লেনদেনে একটি সীমা অন্তর্ভুক্ত থাকে, লেনদেনে ব্যবহৃত না হওয়া যেকোনো গ্যাস ব্যবহারকারীকে ফেরত দেওয়া হয় (যেমন, `সর্বোচ্চ ফি - (বেস ফি + টিপ)` ফেরত দেওয়া হয়)।
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে অভিযোজিত ডায়াগ্রাম_
+
+_চিত্রটি [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে নেওয়া হয়েছে_
-## গ্যাস সীমা কি? {#what-is-gas-limit}
+## গ্যাস লিমিট কী? {#what-is-gas-limit}
-গ্যাস সীমা বলতে একটি লেনদেনে আপনি যে পরিমাণ গ্যাস ব্যবহার করতে ইচ্ছুক তা বোঝায়। [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) জড়িত আরও জটিল লেনদেনগুলির জন্য আরও গণনামূলক কাজ প্রয়োজন, তাই তাদের একটি সাধারণ অর্থপ্রদানের চেয়ে উচ্চতর গ্যাস সীমার প্রয়োজন। একটি স্ট্যান্ডার্ড ETH স্থানান্তরের জন্য 21,000 ইউনিট গ্যাসের একটি গ্যাস সীমা প্রয়োজন।
+গ্যাস লিমিট বলতে আপনি একটি লেনদেনে সর্বোচ্চ যে পরিমাণ গ্যাস ব্যবহার করতে ইচ্ছুক তা বোঝায়। [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) জড়িত আরও জটিল লেনদেনের জন্য আরও বেশি কম্পিউটেশনাল কাজের প্রয়োজন হয়, তাই সেগুলোর জন্য একটি সাধারণ পেমেন্টের চেয়ে বেশি গ্যাস লিমিট প্রয়োজন। একটি স্ট্যান্ডার্ড ETH ট্রান্সফারের জন্য 21,000 ইউনিট গ্যাসের গ্যাস লিমিট প্রয়োজন।
-উদাহরণস্বরূপ, আপনি যদি একটি সাধারণ ETH স্থানান্তরের জন্য 50,000 এর একটি গ্যাস সীমা রাখেন, EVM 21,000 ব্যবহার করবে এবং আপনি অবশিষ্ট 29,000 ফেরত পাবেন। যাইহোক, আপনি যদি খুব কম গ্যাস নির্দিষ্ট করেন, উদাহরণস্বরূপ, একটি সাধারণ ETH স্থানান্তরের জন্য 20,000 এর গ্যাস সীমা, লেনদেনটি বৈধতা পর্বের সময় ব্যর্থ হবে। এটি একটি ব্লকে অন্তর্ভুক্ত করার আগে প্রত্যাখ্যান করা হবে এবং কোনো গ্যাস খরচ হবে না। অন্যদিকে, যদি কোনো লেনদেন কার্যকর করার সময় গ্যাস ফুরিয়ে যায় (যেমন, একটি স্মার্ট কন্ট্র্যাক্ট মাঝপথে সমস্ত গ্যাস ব্যবহার করে), EVM যেকোনো পরিবর্তন ফিরিয়ে দেবে, কিন্তু প্রদত্ত সমস্ত গ্যাস এখনও সম্পাদিত কাজের জন্য ব্যবহার করা হবে।
+উদাহরণস্বরূপ, আপনি যদি একটি সাধারণ ETH ট্রান্সফারের জন্য 50,000 গ্যাস লিমিট রাখেন, তবে EVM 21,000 ব্যবহার করবে এবং আপনি বাকি 29,000 ফেরত পাবেন। তবে, আপনি যদি খুব কম গ্যাস নির্দিষ্ট করেন, উদাহরণস্বরূপ, একটি সাধারণ ETH ট্রান্সফারের জন্য 20,000 গ্যাস লিমিট, তবে লেনদেনটি ভ্যালিডেশন পর্যায়ে ব্যর্থ হবে। এটি একটি ব্লকে অন্তর্ভুক্ত হওয়ার আগেই প্রত্যাখ্যাত হবে এবং কোনো গ্যাস ব্যবহৃত হবে না। অন্যদিকে, যদি এক্সিকিউশনের সময় কোনো লেনদেনের গ্যাস শেষ হয়ে যায় (যেমন, একটি স্মার্ট কন্ট্রাক্ট অর্ধেক পথেই সমস্ত গ্যাস ব্যবহার করে ফেলে), তবে EVM যেকোনো পরিবর্তন বাতিল করবে, কিন্তু সম্পাদিত কাজের জন্য প্রদত্ত সমস্ত গ্যাস তবুও ব্যবহৃত হবে।
-## কেন গ্যাস ফি এত বেশি হতে পারে? {#why-can-gas-fees-get-so-high}
+## গ্যাস ফি এত বেশি হতে পারে কেন? {#why-can-gas-fees-get-so-high}
-Ethereum-এর জনপ্রিয়তার কারণে গ্যাস ফি বেশি হয়। যদি খুব বেশি চাহিদা থাকে, ব্যবহারকারীদের অবশ্যই অন্যান্য ব্যবহারকারীদের লেনদেনকে ছাড়িয়ে যাওয়ার চেষ্টা করার জন্য উচ্চতর টিপ পরিমাণ অফার করতে হবে। একটি উচ্চতর টিপ আপনার লেনদেনকে পরবর্তী ব্লকে যাওয়ার সম্ভাবনা বাড়িয়ে তুলতে পারে। এছাড়াও, আরও জটিল স্মার্ট কন্ট্র্যাক্ট অ্যাপগুলি তাদের ফাংশনগুলিকে সমর্থন করার জন্য প্রচুর অপারেশন করতে পারে, যার ফলে তারা প্রচুর গ্যাস গ্রহণ করে।
+উচ্চ গ্যাস ফি ইথিরিয়ামের জনপ্রিয়তার কারণে হয়। যদি খুব বেশি চাহিদা থাকে, তবে ব্যবহারকারীদের অন্যান্য ব্যবহারকারীদের লেনদেনের চেয়ে বেশি বিড করার চেষ্টা করার জন্য উচ্চতর টিপের পরিমাণ অফার করতে হবে। একটি উচ্চতর টিপ আপনার লেনদেনটি পরবর্তী ব্লকে যাওয়ার সম্ভাবনা বাড়িয়ে তুলতে পারে। এছাড়াও, আরও জটিল স্মার্ট কন্ট্রাক্ট অ্যাপগুলো তাদের ফাংশনগুলোকে সমর্থন করার জন্য অনেক অপারেশন করতে পারে, যার ফলে তারা প্রচুর গ্যাস ব্যবহার করে।
-## গ্যাস খরচ কমানোর উদ্যোগ {#initiatives-to-reduce-gas-costs}
+## গ্যাসের খরচ কমানোর উদ্যোগ {#initiatives-to-reduce-gas-costs}
-Ethereum [স্কেলেবিলিটি আপগ্রেড](/roadmap/) শেষ পর্যন্ত গ্যাস ফি সংক্রান্ত কিছু সমস্যা সমাধান করবে, যা ফলস্বরূপ, প্ল্যাটফর্মটিকে প্রতি সেকেন্ডে হাজার হাজার লেনদেন প্রক্রিয়া করতে এবং বিশ্বব্যাপী স্কেল করতে সক্ষম করবে।
+ইথিরিয়াম [স্কেলিং আপগ্রেড](/roadmap/) শেষ পর্যন্ত কিছু গ্যাস ফি সমস্যার সমাধান করবে, যা ফলস্বরূপ, প্ল্যাটফর্মটিকে প্রতি সেকেন্ডে হাজার হাজার লেনদেন প্রক্রিয়া করতে এবং বিশ্বব্যাপী স্কেল করতে সক্ষম করবে।
-লেয়ার 2 স্কেলিং হল গ্যাস খরচ, ব্যবহারকারীর অভিজ্ঞতা এবং স্কেলেবিলিটি ব্যাপকভাবে উন্নত করার একটি প্রাথমিক উদ্যোগ।
+লেয়ার ২ স্কেলিং হলো গ্যাসের খরচ, ব্যবহারকারীর অভিজ্ঞতা এবং স্কেলেবিলিটি ব্যাপকভাবে উন্নত করার একটি প্রাথমিক উদ্যোগ।
-[লেয়ার 2 স্কেলিং সম্পর্কে আরও](/developers/docs/scaling/#layer-2-scaling)
+[লেয়ার ২ স্কেলিং সম্পর্কে আরও জানুন](/developers/docs/scaling/#layer-2-scaling)
-## গ্যাস ফি পর্যবেক্ষণ {#monitoring-gas-fees}
+## গ্যাস ফি মনিটরিং {#monitoring-gas-fees}
-আপনি যদি গ্যাসের দাম নিরীক্ষণ করতে চান, যাতে আপনি কম খরচে আপনার ETH পাঠাতে পারেন, আপনি বিভিন্ন টুল ব্যবহার করতে পারেন যেমন:
+আপনি যদি গ্যাস প্রাইস মনিটর করতে চান, যাতে আপনি কম খরচে আপনার ETH পাঠাতে পারেন, তবে আপনি বিভিন্ন টুল ব্যবহার করতে পারেন যেমন:
-- [Etherscan](https://etherscan.io/gastracker) _লেনদেনের গ্যাস মূল্যের অনুমানকারী_
-- [Blockscout](https://eth.blockscout.com/gas-tracker) _ওপেন সোর্স লেনদেন গ্যাস মূল্য অনুমানকারী_
-- [ETH Gas Tracker](https://www.ethgastracker.com/) _লেনদেন ফি কমাতে এবং অর্থ সঞ্চয় করতে Ethereum এবং L2 গ্যাসের দাম নিরীক্ষণ এবং ট্র্যাক করুন_
-- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _গ্যাস অনুমানকারী ক্রোম এক্সটেনশন যা টাইপ 0 লিগ্যাসি লেনদেন এবং টাইপ 2 EIP-1559 লেনদেন উভয়ই সমর্থন করে।_
-- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _মেইননেট, আরবিট্রাম এবং পলিগনে বিভিন্ন ধরনের লেনদেনের জন্য আপনার স্থানীয় মুদ্রায় গ্যাস ফি গণনা করুন।_
+- [Etherscan](https://etherscan.io/gastracker) _লেনদেন গ্যাস প্রাইস এস্টিমেটর_
+- [Blockscout](https://eth.blockscout.com/gas-tracker) _ওপেন সোর্স লেনদেন গ্যাস প্রাইস এস্টিমেটর_
+- [ETH Gas Tracker](https://www.ethgastracker.com/) _লেনদেন ফি কমাতে এবং অর্থ সাশ্রয় করতে ইথিরিয়াম এবং L2 গ্যাস প্রাইস মনিটর এবং ট্র্যাক করুন_
+- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _গ্যাস এস্টিমেটিং ক্রোম এক্সটেনশন যা টাইপ 0 লিগ্যাসি লেনদেন এবং টাইপ 2 EIP-1559 লেনদেন উভয়কেই সমর্থন করে।_
+- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _মেইননেট, Arbitrum এবং Polygon-এ বিভিন্ন ধরনের লেনদেনের জন্য আপনার স্থানীয় মুদ্রায় গ্যাস ফি হিসাব করুন।_
## সম্পর্কিত টুলস {#related-tools}
-- [ব্লকনেটিভ'স গ্যাস প্ল্যাটফর্ম](https://www.blocknative.com/gas) _ব্লকনেটিভ'স গ্লোবাল মেমপুল ডেটা প্ল্যাটফর্ম দ্বারা চালিত গ্যাস অনুমান API_
-- [গ্যাস নেটওয়ার্ক](https://gas.network) অনচেইন গ্যাস ওরাকেলস। 35+ চেইনের জন্য সমর্থন।
+- [Blocknative's Gas Platform](https://www.blocknative.com/gas) _Blocknative-এর গ্লোবাল মেমপুল ডাটা প্ল্যাটফর্ম দ্বারা চালিত গ্যাস এস্টিমেশন API_
+- [Gas Network](https://gas.network) অনচেইন গ্যাস ওরাকলস। 35+ চেইনের জন্য সমর্থন।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [Ethereum গ্যাস ব্যাখ্যা করা হয়েছে](https://defiprime.com/gas)
-- [আপনার স্মার্ট কন্ট্র্যাক্টের গ্যাস খরচ কমানো](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
-- [ডেভেলপারদের জন্য গ্যাস অপ্টিমাইজেশান কৌশল](https://www.alchemy.com/overviews/solidity-gas-optimization)
-- [EIP-1559 ডক্স](https://eips.ethereum.org/EIPS/eip-1559)।
-- [টিম বেইকোর EIP-1559 রিসোর্স](https://hackmd.io/@timbeiko/1559-resources)
-- [EIP-1559: মেমস থেকে মেকানিজম আলাদা করা](https://web.archive.org/web/20241126205908/https://research.2077.xyz/eip-1559-separating-mechanisms-from-memes)
+- [Ethereum Gas Explained](https://defiprime.com/gas)
+- [Reducing the gas consumption of your Smart Contracts](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
+- [Gas Optimization Strategies for Developers](https://www.alchemy.com/overviews/solidity-gas-optimization)
+- [EIP-1559 docs](https://eips.ethereum.org/EIPS/eip-1559).
+- [Tim Beiko's EIP-1559 Resources](https://hackmd.io/@timbeiko/1559-resources)
+- [EIP-1559: Separating Mechanisms From Memes](https://web.archive.org/web/20241126205908/https://research.2077.xyz/eip-1559-separating-mechanisms-from-memes)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/ides/index.md b/public/content/translations/bn/developers/docs/ides/index.md
index cd4d276908f..09f37df0063 100644
--- a/public/content/translations/bn/developers/docs/ides/index.md
+++ b/public/content/translations/bn/developers/docs/ides/index.md
@@ -1,64 +1,64 @@
---
-title: "ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্টস (IDEs)"
-description: "ইথেরিয়াম বিকাশের জন্য ওয়েব-ভিত্তিক এবং ডেস্কটপ IDEs সম্পর্কে জানুন, যার মধ্যে রয়েছে Remix, VS কোড, এবং জনপ্রিয় প্লাগইন।"
+title: ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্টস (IDEs)
+description: ইথিরিয়াম ডেভেলপমেন্টের জন্য ওয়েব-ভিত্তিক এবং ডেস্কটপ IDE সম্পর্কে জানুন, যার মধ্যে Remix, VS Code এবং জনপ্রিয় প্লাগইনগুলো অন্তর্ভুক্ত।
lang: bn
---
-যখন একটি [ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE)](https://wikipedia.org/wiki/Integrated_development_environment) সেট আপ করার কথা আসে, তখন ইথেরিয়াম-এ অ্যাপ্লিকেশন প্রোগ্রামিং করা অন্য যেকোনো সফ্টওয়্যার প্রজেক্ট প্রোগ্রামিং করার মতোই। বেছে নেওয়ার জন্য অনেক বিকল্প আছে, তাই দিনের শেষে, এমন IDE বা কোড এডিটর বেছে নিন যা আপনার পছন্দের জন্য সবচেয়ে উপযুক্ত। সম্ভবত আপনার ইথেরিয়াম বিকাশের জন্য সেরা IDE পছন্দ হলো সেই IDE যা আপনি ইতিমধ্যেই প্রথাগত সফ্টওয়্যার বিকাশের জন্য ব্যবহার করেন।
+যখন একটি [ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE)](https://wikipedia.org/wiki/Integrated_development_environment) সেট আপ করার কথা আসে, তখন ইথিরিয়ামে অ্যাপ্লিকেশন প্রোগ্রামিং করা অন্য যেকোনো সফটওয়্যার প্রজেক্ট প্রোগ্রামিং করার মতোই। বেছে নেওয়ার জন্য অনেক বিকল্প রয়েছে, তাই দিন শেষে, আপনার পছন্দের সাথে সবচেয়ে মানানসই IDE বা কোড এডিটর বেছে নিন। সম্ভবত আপনার ইথিরিয়াম ডেভেলপমেন্টের জন্য সেরা IDE পছন্দটি হলো সেই IDE যা আপনি ইতিমধ্যে ঐতিহ্যবাহী সফটওয়্যার ডেভেলপমেন্টের জন্য ব্যবহার করেন।
## ওয়েব-ভিত্তিক IDEs {#web-based-ides}
-আপনি যদি একটি [লোকাল ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার](/developers/local-environment/) আগে কোড নিয়ে নাড়াচাড়া করতে চান, তাহলে এই ওয়েব অ্যাপগুলি ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট বিকাশের জন্য বিশেষভাবে তৈরি করা হয়েছে।
+আপনি যদি [লোকাল ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ](/developers/local-environment/) করার আগে কোড নিয়ে কাজ করতে চান, তবে এই ওয়েব অ্যাপগুলো ইথিরিয়াম স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের জন্য কাস্টম-বিল্ট।
-**[Remix](https://remix.ethereum.org/)** - **_অন্তর্নির্মিত স্ট্যাটিক বিশ্লেষণ এবং একটি টেস্ট ব্লকচেইন ভার্চুয়াল মেশিন সহ ওয়েব-ভিত্তিক IDE_**
+**[Remix](https://remix.ethereum.org/)** - **_বিল্ট-ইন স্ট্যাটিক অ্যানালাইসিস এবং একটি টেস্ট ব্লকচেইন ভার্চুয়াল মেশিন সহ ওয়েব-ভিত্তিক IDE_**
-- [ডক্স](https://remix-ide.readthedocs.io/en/latest/#)
+- [ডকুমেন্টেশন](https://remix-ide.readthedocs.io/en/latest/#)
- [Gitter](https://gitter.im/ethereum/remix)
**[ChainIDE](https://chainide.com/)** - **_একটি ক্লাউড-ভিত্তিক মাল্টি-চেইন IDE_**
-- [ডক্স](https://chainide.gitbook.io/chainide-english-1/)
+- [ডকুমেন্টেশন](https://chainide.gitbook.io/chainide-english-1/)
- [হেল্প ফোরাম](https://forum.chainide.com/)
-**[Replit (Solidity স্টার্টার - বিটা)](https://replit.com/@replit/Solidity-starter-beta)** - **_হট রিলোডিং, ত্রুটি পরীক্ষা এবং প্রথম-শ্রেণীর টেস্টনেট সমর্থন সহ Ethereum-এর জন্য একটি কাস্টমাইজযোগ্য ডেভেলপমেন্ট এনভায়রনমেন্ট_**
+**[Replit (Solidity Starter - Beta)](https://replit.com/@replit/Solidity-starter-beta)** - **_হট রিলোডিং, এরর চেকিং এবং ফার্স্ট-ক্লাস টেস্টনেট সাপোর্ট সহ ইথিরিয়ামের জন্য একটি কাস্টমাইজযোগ্য ডেভেলপমেন্ট এনভায়রনমেন্ট_**
-- [ডক্স](https://docs.replit.com/)
+- [ডকুমেন্টেশন](https://docs.replit.com/)
-**[Tenderly Sandbox](https://sandbox.tenderly.co/)** - **_একটি দ্রুত প্রোটোটাইপিং এনভায়রনমেন্ট যেখানে আপনি সলিডিটি এবং জাভাস্ক্রিপ্ট ব্যবহার করে ব্রাউজারে স্মার্ট কন্ট্র্যাক্ট লিখতে, এক্সিকিউট করতে এবং ডিবাগ করতে পারেন_**
+**[Tenderly Sandbox](https://sandbox.tenderly.co/)** - **_একটি দ্রুত প্রোটোটাইপিং এনভায়রনমেন্ট যেখানে আপনি Solidity এবং JavaScript ব্যবহার করে ব্রাউজারে স্মার্ট কন্ট্রাক্ট লিখতে, এক্সিকিউট করতে এবং ডিবাগ করতে পারেন_**
-**[EthFiddle](https://ethfiddle.com/)** - **_ওয়েব-ভিত্তিক IDE যা আপনাকে আপনার স্মার্ট কন্ট্র্যাক্ট লিখতে, কম্পাইল করতে এবং ডিবাগ করতে দেয়_**
+**[EthFiddle](https://ethfiddle.com/)** - **_ওয়েব-ভিত্তিক IDE যা আপনাকে আপনার স্মার্ট কন্ট্রাক্ট লিখতে, কম্পাইল করতে এবং ডিবাগ করতে দেয়_**
- [Gitter](https://gitter.im/loomnetwork/ethfiddle)
## ডেস্কটপ IDEs {#desktop-ides}
-বেশিরভাগ প্রতিষ্ঠিত IDEs-এ Ethereum ডেভেলপমেন্টের অভিজ্ঞতা বাড়ানোর জন্য প্লাগইন তৈরি করা হয়েছে। ন্যূনতমপক্ষে, তারা [স্মার্ট কন্ট্র্যাক্ট ভাষাগুলির](/developers/docs/smart-contracts/languages/) জন্য সিনট্যাক্স হাইলাইটিং প্রদান করে।
+বেশিরভাগ প্রতিষ্ঠিত IDE ইথিরিয়াম ডেভেলপমেন্ট অভিজ্ঞতা উন্নত করতে প্লাগইন তৈরি করেছে। অন্ততপক্ষে, তারা [স্মার্ট কন্ট্রাক্ট ভাষার](/developers/docs/smart-contracts/languages/) জন্য সিনট্যাক্স হাইলাইটিং প্রদান করে।
-**ভিজ্যুয়াল স্টুডিও কোড -** **_অফিসিয়াল ইথেরিয়াম সমর্থন সহ পেশাদার ক্রস-প্ল্যাটফর্ম IDE_**
+**Visual Studio Code -** **_অফিসিয়াল ইথিরিয়াম সাপোর্ট সহ প্রফেশনাল ক্রস-প্ল্যাটফর্ম IDE_**
-- [ভিজ্যুয়াল স্টুডিও কোড](https://code.visualstudio.com/)
-- [কোড স্যাম্পেল](https://github.com/Azure-Samples/blockchain/blob/master/blockchain-workbench/application-and-smart-contract-samples/readme.md)
+- [Visual Studio Code](https://code.visualstudio.com/)
+- [কোড স্যাম্পল](https://github.com/Azure-Samples/blockchain/blob/master/blockchain-workbench/application-and-smart-contract-samples/readme.md)
- [GitHub](https://github.com/microsoft/vscode)
-**JetBrains IDEs (IntelliJ IDEA, ইত্যাদি) -** **_সফ্টওয়্যার ডেভেলপার এবং টিমের জন্য প্রয়োজনীয় টুলস_**
+**JetBrains IDEs (IntelliJ IDEA, ইত্যাদি) -** **_সফটওয়্যার ডেভেলপার এবং টিমের জন্য প্রয়োজনীয় টুলস_**
- [JetBrains](https://www.jetbrains.com/)
- [GitHub](https://github.com/JetBrains)
- [IntelliJ Solidity](https://github.com/intellij-solidity/intellij-solidity/)
-**Remix ডেস্কটপ -** **_আপনার লোকাল মেশিনে Remix IDE-এর অভিজ্ঞতা নিন_**
+**Remix Desktop -** **_আপনার লোকাল মেশিনে Remix IDE এর অভিজ্ঞতা নিন_**
- [ডাউনলোড](https://github.com/ethereum/remix-desktop/releases)
- [GitHub](https://github.com/ethereum/remix-desktop)
## প্লাগইন এবং এক্সটেনশন {#plugins-extensions}
-- [solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) - ভিজ্যুয়াল স্টুডিও কোডের জন্য Ethereum সলিডিটি ল্যাঙ্গুয়েজ
-- [VS কোডের জন্য সলিডিটি + হার্ডহ্যাট](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) - হার্ডহ্যাট টিমের দ্বারা সলিডিটি এবং হার্ডহ্যাট সাপোর্ট
-- [Prettier Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) - prettier ব্যবহার করে কোড ফরমেটার
+- [solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) - Visual Studio Code এর জন্য ইথিরিয়াম Solidity ভাষা
+- [Solidity + Hardhat for VS Code](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) - Hardhat টিমের দ্বারা Solidity এবং Hardhat সাপোর্ট
+- [Prettier Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) - prettier ব্যবহার করে কোড ফরম্যাটার
## আরও পড়ুন {#further-reading}
-- [Ethereum IDEs](https://www.alchemy.com/list-of/web3-ides-on-ethereum) _- Alchemy-র Ethereum IDEs-এর তালিকা_
+- [ইথিরিয়াম IDEs](https://www.alchemy.com/list-of/web3-ides-on-ethereum) _- Alchemy এর ইথিরিয়াম IDE এর তালিকা_
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/index.md b/public/content/translations/bn/developers/docs/index.md
index 815146c14a8..693f99ba7a4 100644
--- a/public/content/translations/bn/developers/docs/index.md
+++ b/public/content/translations/bn/developers/docs/index.md
@@ -1,25 +1,25 @@
---
-title: "ইথেরিয়াম উন্নয়ন নথিপত্র"
-description: "ethereum.org ডেভেলপার নথিপত্রের সূচনা।"
+title: ইথিরিয়াম ডেভেলপমেন্ট ডকুমেন্টেশন
+description: ethereum.org ডেভেলপার ডকুমেন্টেশনের পরিচিতি।
lang: bn
---
-এই নথিপত্রটি আপনাকে Ethereum দিয়ে তৈরি করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। এটি একটি ধারণা হিসাবে Ethereum-কে কভার করে, Ethereum টেক স্ট্যাক ব্যাখ্যা করে এবং আরও জটিল অ্যাপ্লিকেশন এবং ব্যবহারের ক্ষেত্রের জন্য উন্নত বিষয়গুলি নথিভুক্ত করে।
+এই ডকুমেন্টেশনটি আপনাকে [ইথিরিয়াম](/)-এর সাথে তৈরি করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। এটি একটি ধারণা হিসেবে ইথিরিয়ামকে কভার করে, ইথিরিয়াম টেক স্ট্যাক ব্যাখ্যা করে এবং আরও জটিল অ্যাপ্লিকেশন ও ব্যবহারের ক্ষেত্রের জন্য উন্নত বিষয়গুলো নথিভুক্ত করে।
-এটি একটি ওপেন-সোর্স কমিউনিটির প্রচেষ্টা, তাই নির্দ্বিধায় নতুন বিষয় প্রস্তাব করুন, নতুন কনটেন্ট যোগ করুন এবং যেখানেই আপনি মনে করেন এটি সহায়ক হতে পারে সেখানে উদাহরণ দিন। সমস্ত নথিপত্র GitHub-এর মাধ্যমে সম্পাদনা করা যেতে পারে – আপনি যদি নিশ্চিত না হন কীভাবে করবেন, [এই নির্দেশাবলী অনুসরণ করুন](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md)।
+এটি একটি ওপেন-সোর্স কমিউনিটি প্রচেষ্টা, তাই নতুন বিষয়ের পরামর্শ দিতে, নতুন কন্টেন্ট যোগ করতে এবং যেখানেই আপনার মনে হয় এটি সহায়ক হতে পারে সেখানে উদাহরণ প্রদান করতে নির্দ্বিধায় এগিয়ে আসুন। সমস্ত ডকুমেন্টেশন GitHub-এর মাধ্যমে এডিট করা যেতে পারে – আপনি যদি নিশ্চিত না হন কীভাবে করতে হবে, তবে [এই নির্দেশিকাগুলো অনুসরণ করুন](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md)।
-## উন্নয়ন মডিউল {#development-modules}
+## ডেভেলপমেন্ট মডিউল {#development-modules}
-যদি এটি Ethereum উন্নয়নে আপনার প্রথম প্রচেষ্টা হয়, আমরা শুরু থেকে শুরু করে একটি বইয়ের মতো করে এগিয়ে যাওয়ার পরামর্শ দিই।
+যদি এটি ইথিরিয়াম ডেভেলপমেন্টে আপনার প্রথম প্রচেষ্টা হয়, তবে আমরা শুরু থেকে শুরু করার এবং একটি বইয়ের মতো ধাপে ধাপে এগিয়ে যাওয়ার পরামর্শ দিই।
-### মৌলিক বিষয় {#foundational-topics}
+### মৌলিক বিষয়গুলো {#foundational-topics}
-### Ethereum স্ট্যাক {#ethereum-stack}
+### ইথিরিয়াম স্ট্যাক {#ethereum-stack}
-### উন্নত {#advanced}
+### অ্যাডভান্সড {#advanced}
-
+
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/intro-to-ether/index.md b/public/content/translations/bn/developers/docs/intro-to-ether/index.md
index 4ebeba1b6c1..52e2432a575 100644
--- a/public/content/translations/bn/developers/docs/intro-to-ether/index.md
+++ b/public/content/translations/bn/developers/docs/intro-to-ether/index.md
@@ -1,78 +1,78 @@
---
-title: "ইথারের টেকনিক্যাল ভূমিকা"
-description: "ইথার ক্রিপটোকারেন্সি সম্পর্কে একজন ডেভেলপারের জন্য একটি ভূমিকা।"
+title: ইথারের প্রযুক্তিগত পরিচিতি
+description: ইথার ক্রিপ্টোকারেন্সির সাথে একজন ডেভেলপারের পরিচিতি।
lang: bn
---
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালভাবে বুঝতে আপনাকে সাহায্য করার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [ইথেরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ুন।
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [ইথিরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ার পরামর্শ দিচ্ছি।
-## à¦à§à¦°à¦¿à¦ªà¦à§à¦à¦¾à¦°à§à¦¨à§à¦¸à¦¿ à¦à§? {#what-is-a-cryptocurrency}
+## ক্রিপটোকারেন্সি কী? {#what-is-a-cryptocurrency}
-একটি ক্রিপটোকারেন্সি হল একটি ব্লকচেইন-ভিত্তিক লেজার দ্বারা সুরক্ষিত বিনিময়ের একটি মাধ্যম।
+ক্রিপটোকারেন্সি হলো বিনিময়ের একটি মাধ্যম যা ব্লকচেইন-ভিত্তিক লেজার দ্বারা সুরক্ষিত।
-বিনিময়ের একটি মাধ্যম হল পণ্য এবং পরিষেবার জন্য অর্থপ্রদান হিসাবে ব্যাপকভাবে গৃহীত যে কোনও কিছু এবং একটি লেজার হল একটি ডেটা স্টোর যা লেনদেনের ট্র্যাক রাখে। ব্লকচেইন প্রযুক্তি ব্যবহারকারীদের লেজার বজায় রাখার জন্য একটি বিশ্বস্ত তৃতীয় পক্ষের উপর নির্ভর না করে লেজারে লেনদেন করার অনুমতি দেয়।
+বিনিময়ের মাধ্যম হলো এমন কিছু যা পণ্য এবং পরিষেবার অর্থপ্রদান হিসেবে ব্যাপকভাবে গৃহীত হয়, এবং লেজার হলো একটি ডেটা স্টোর যা লেনদেন ট্র্যাক করে। ব্লকচেইন প্রযুক্তি ব্যবহারকারীদের লেজার রক্ষণাবেক্ষণের জন্য কোনো বিশ্বস্ত তৃতীয় পক্ষের ওপর নির্ভর না করেই লেজারে লেনদেন করার সুযোগ দেয়।
-সাতোশি নাকামোতোর তৈরি প্রথম ক্রিপটোকারেন্সি ছিল বিটকয়েন। 2009 সালে বিটকয়েন প্রকাশের পর থেকে, লোকেরা বিভিন্ন ব্লকচেইন জুড়ে হাজার হাজার ক্রিপ্টোকারেন্সি তৈরি করেছে।
+প্রথম ক্রিপটোকারেন্সি ছিল বিটকয়েন, যা সাতোশি নাকামোতো তৈরি করেছিলেন। 2009 সালে বিটকয়েন প্রকাশের পর থেকে, মানুষ বিভিন্ন ব্লকচেইনে হাজার হাজার ক্রিপটোকারেন্সি তৈরি করেছে।
## ইথার কী? {#what-is-ether}
-**ইথার (ETH)** হল Ethereum নেটওয়ার্কে অনেক কিছুর জন্য ব্যবহৃত ক্রিপটোকারেন্সি। মৌলিকভাবে, এটি লেনদেন ফি-এর জন্য অর্থপ্রদানের একমাত্র গ্রহণযোগ্য ফর্ম, এবং [The Merge](/roadmap/merge)-এর পরে, Mainnet-এ ব্লকগুলিকে যাচাই এবং প্রস্তাব করার জন্য ইথার প্রয়োজন। ইথার [DeFi](/defi) ঋণদানের বাজারে জামানতের প্রাথমিক রূপ হিসাবে, NFT মার্কেটপ্লেসে অ্যাকাউন্টের একক হিসাবে, পরিষেবা সম্পাদন বা বাস্তব-বিশ্বের পণ্য বিক্রির জন্য অর্জিত অর্থপ্রদান হিসাবে এবং আরও অনেক কিছুতে ব্যবহৃত হয়।
+**ইথার (ETH)** হলো একটি ক্রিপটোকারেন্সি যা ইথিরিয়াম নেটওয়ার্কের অনেক কাজে ব্যবহৃত হয়। মৌলিকভাবে, এটি ট্রানজেকশন ফি প্রদানের একমাত্র গ্রহণযোগ্য মাধ্যম, এবং [দ্য মার্জ](/roadmap/merge)-এর পর, মেইননেট-এ ব্লকস যাচাই এবং প্রস্তাব করার জন্য ইথার প্রয়োজন। ইথার [DeFi](/defi) লেন্ডিং মার্কেটে কোল্যাটারালের প্রাথমিক রূপ হিসেবে, NFT মার্কেটপ্লেসে একাউন্ট-এর একক হিসেবে, পরিষেবা প্রদান বা বাস্তব-বিশ্বের পণ্য বিক্রির জন্য অর্জিত পেমেন্ট হিসেবে এবং আরও অনেক ক্ষেত্রে ব্যবহৃত হয়।
-Ethereum ডেভেলপারদের [**ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপস)**](/developers/docs/dapps) তৈরি করার অনুমতি দেয়, যা সকলেই কম্পিউটিং পাওয়ারের একটি পুল শেয়ার করে। এই শেয়ার করা পুলটি সসীম, তাই এটি কে ব্যবহার করবে তা নির্ধারণ করার জন্য Ethereum-এর একটি পদ্ধতির প্রয়োজন। অন্যথায়, একটি ডিএ্যাপ ঘটনাক্রমে বা দূষিতভাবে সমস্ত নেটওয়ার্ক রিসোর্স ব্যবহার করতে পারে, যা অন্যদের এটি অ্যাক্সেস করতে বাধা দেবে।
+ইথিরিয়াম ডেভেলপারদের [**ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপস)**](/developers/docs/dapps) তৈরি করার সুযোগ দেয়, যা কম্পিউটিং পাওয়ারের একটি পুল শেয়ার করে। এই শেয়ার করা পুলটি সসীম, তাই ইথিরিয়ামের এমন একটি মেকানিজম প্রয়োজন যা নির্ধারণ করবে কে এটি ব্যবহার করতে পারবে। অন্যথায়, একটি ডিএ্যাপ ভুলবশত বা ইচ্ছাকৃতভাবে সমস্ত নেটওয়ার্ক রিসোর্স ব্যবহার করে ফেলতে পারে, যা অন্যদের এটি অ্যাক্সেস করতে বাধা দেবে।
-ইথার ক্রিপটোকারেন্সি Ethereum-এর কম্পিউটিং পাওয়ারের জন্য একটি মূল্য নির্ধারণ প্রক্রিয়া সমর্থন করে। যখন ব্যবহারকারীরা একটি লেনদেন করতে চায়, তখন তাদের ব্লকচেইনে তাদের লেনদেনকে স্বীকৃতি দেওয়ার জন্য ইথার দিতে হবে। এই ব্যবহারের খরচগুলি [গ্যাস ফি](/developers/docs/gas/) হিসাবে পরিচিত, এবং গ্যাস ফি লেনদেন সম্পাদনের জন্য প্রয়োজনীয় কম্পিউটিং শক্তির পরিমাণ এবং সেই সময়ে কম্পিউটিং শক্তির জন্য নেটওয়ার্ক-ব্যাপী চাহিদার উপর নির্ভর করে।
+ইথার ক্রিপটোকারেন্সি ইথিরিয়ামের কম্পিউটিং পাওয়ারের জন্য একটি প্রাইসিং মেকানিজম সমর্থন করে। যখন ব্যবহারকারীরা কোনো লেনদেন করতে চান, তখন ব্লকচেইন-এ তাদের লেনদেন স্বীকৃতি পাওয়ার জন্য তাদের অবশ্যই ইথার প্রদান করতে হবে। এই ব্যবহারের খরচগুলো [গ্যাস ফি](/developers/docs/gas/) হিসেবে পরিচিত, এবং গ্যাস ফি নির্ভর করে লেনদেন সম্পন্ন করতে প্রয়োজনীয় কম্পিউটিং পাওয়ারের পরিমাণ এবং সেই সময়ে কম্পিউটিং পাওয়ারের জন্য নেটওয়ার্ক-ব্যাপী চাহিদার ওপর।
-অতএব, এমনকি যদি একটি দূষিত ডিএ্যাপ একটি অসীম লুপ জমা দেয়, লেনদেনটি অবশেষে ইথারের বাইরে চলে যাবে এবং শেষ হয়ে যাবে, নেটওয়ার্কটিকে স্বাভাবিক অবস্থায় ফিরে আসতে দেবে।
+অতএব, এমনকি যদি কোনো ক্ষতিকারক ডিএ্যাপ একটি অসীম লুপ জমা দেয়, তবুও লেনদেন-এর ইথার শেষ হয়ে যাবে এবং এটি বন্ধ হয়ে যাবে, যার ফলে নেটওয়ার্ক স্বাভাবিক অবস্থায় ফিরে আসতে পারবে।
-Ethereum এবং ইথারকে [এক করে ফেলা সাধারণ](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845) — যখন লোকেরা "Ethereum-এর মূল্য" উল্লেখ করে, তখন তারা ইথারের মূল্য বর্ণনা করে।
+ইথিরিয়াম এবং ইথারকে [একত্রিত করা সাধারণ বিষয়](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845) — যখন মানুষ "ইথিরিয়ামের দাম" উল্লেখ করে, তখন তারা মূলত ইথারের দাম বর্ণনা করে।
-## ইথার মিন্টিং {#minting-ether}
+## ইথার মিন্ট করা {#minting-ether}
-মিন্টিং হল এমন একটি প্রক্রিয়া যেখানে Ethereum লেজারে নতুন ইথার তৈরি হয়। অন্তর্নিহিত Ethereum প্রোটোকল নতুন ইথার তৈরি করে, এবং একজন ব্যবহারকারীর পক্ষে ইথার তৈরি করা সম্ভব নয়।
+মিন্ট করা হলো এমন একটি প্রক্রিয়া যার মাধ্যমে ইথিরিয়াম লেজার-এ নতুন ইথার তৈরি হয়। অন্তর্নিহিত ইথিরিয়াম প্রটোকল নতুন ইথার তৈরি করে, এবং কোনো ব্যবহারকারীর পক্ষে ইথার তৈরি করা সম্ভব নয়।
-প্রতিটি প্রস্তাবিত ব্লকের জন্য একটি পুরস্কার হিসাবে এবং কনসেন্সাসে পৌঁছানোর সাথে সম্পর্কিত অন্যান্য যাচাইকারী কার্যকলাপের জন্য প্রতিটি যুগ চেকপয়েন্টে ইথার মিন্ট করা হয়। ইস্যু করা মোট পরিমাণ যাচাইকারীর সংখ্যা এবং তারা কত ইথার স্টেক করেছে তার উপর নির্ভর করে। এই মোট ইস্যুয়েন্সটি আদর্শ ক্ষেত্রে যাচাইকারীদের মধ্যে সমানভাবে বিভক্ত হয় যে সমস্ত যাচাইকারী সৎ এবং অনলাইন, কিন্তু বাস্তবে, এটি যাচাইকারীর কার্যকারিতার উপর ভিত্তি করে পরিবর্তিত হয়। মোট ইস্যুয়েন্সের প্রায় 1/8 ব্লক প্রস্তাবকের কাছে যায়; বাকিটা অন্যান্য যাচাইকারীদের মধ্যে বিতরণ করা হয়। ব্লক প্রস্তাবকরা লেনদেন ফি এবং MEV-সম্পর্কিত আয় থেকে টিপসও পান, কিন্তু এগুলি পুনর্ব্যবহৃত ইথার থেকে আসে, নতুন ইস্যুয়েন্স থেকে নয়।
+প্রস্তাবিত প্রতিটি ব্লক-এর জন্য পুরস্কার হিসেবে এবং কনসেন্সাস পৌঁছানোর সাথে সম্পর্কিত অন্যান্য ভ্যালিডেটর কার্যকলাপের জন্য প্রতিটি এপোক চেকপয়েন্টে ইথার মিন্ট করা হয়। ইস্যু করা মোট পরিমাণ নির্ভর করে ভ্যালিডেটরস-এর সংখ্যা এবং তারা কত ইথার স্টেক করেছে তার ওপর। এই মোট ইস্যুয়েন্স আদর্শ ক্ষেত্রে ভ্যালিডেটরস-এর মধ্যে সমানভাবে ভাগ করা হয় যখন সমস্ত ভ্যালিডেটরস সৎ এবং অনলাইনে থাকে, তবে বাস্তবে, এটি ভ্যালিডেটর পারফরম্যান্সের ওপর ভিত্তি করে পরিবর্তিত হয়। মোট ইস্যুয়েন্স-এর প্রায় 1/8 অংশ ব্লক প্রপোজার পায়; বাকি অংশ অন্যান্য ভ্যালিডেটরস-এর মধ্যে ডিস্ট্রিবিউটেড হয়। ব্লক প্রপোজার-রা ট্রানজেকশন ফি এবং MEV-সম্পর্কিত আয় থেকেও টিপস পায়, তবে এগুলো রিসাইকেল করা ইথার থেকে আসে, নতুন ইস্যুয়েন্স থেকে নয়।
## ইথার বার্ন করা {#burning-ether}
-ব্লক রিওয়ার্ডের মাধ্যমে ইথার তৈরির পাশাপাশি, 'বার্নিং' নামক একটি প্রক্রিয়ার মাধ্যমে ইথার ধ্বংস করা যেতে পারে। যখন ইথার বার্ন করা হয়, তখন এটি স্থায়ীভাবে প্রচলন থেকে সরানো হয়।
+ব্লক রিওয়ার্ড-এর মাধ্যমে ইথার তৈরি করার পাশাপাশি, 'বার্নিং' নামক একটি প্রক্রিয়ার মাধ্যমে ইথার ধ্বংস করা যেতে পারে। যখন ইথার বার্ন করা হয়, তখন এটি স্থায়ীভাবে সার্কুলেশন থেকে সরিয়ে ফেলা হয়।
-Ethereum-এর প্রতিটি লেনদেনে ইথার বার্ন হয়। যখন ব্যবহারকারীরা তাদের লেনদেনের জন্য অর্থ প্রদান করে, তখন একটি বেস গ্যাস ফি, যা লেনদেনের চাহিদা অনুযায়ী নেটওয়ার্ক দ্বারা সেট করা হয়, তা ধ্বংস হয়ে যায়। এটি, পরিবর্তনশীল ব্লক আকার এবং একটি সর্বোচ্চ গ্যাস ফি সহ, Ethereum-এ লেনদেন ফি অনুমানকে সহজ করে। যখন নেটওয়ার্কের চাহিদা বেশি থাকে, তখন [ব্লকগুলি](https://eth.blockscout.com/block/22580057) তাদের মিন্ট করার চেয়ে বেশি ইথার বার্ন করতে পারে, যা কার্যকরভাবে ইথার ইস্যুয়েন্সকে অফসেট করে।
+ইথিরিয়ামের প্রতিটি লেনদেন-এ ইথার বার্ন হয়। যখন ব্যবহারকারীরা তাদের লেনদেন-এর জন্য অর্থ প্রদান করে, তখন লেনদেনের চাহিদা অনুযায়ী নেটওয়ার্ক দ্বারা নির্ধারিত একটি বেস গ্যাস ফি ধ্বংস হয়ে যায়। এটি, পরিবর্তনশীল ব্লক সাইজ এবং সর্বোচ্চ গ্যাস ফি-এর সাথে মিলে, ইথিরিয়ামে ট্রানজেকশন ফি অনুমান করা সহজ করে তোলে। যখন নেটওয়ার্ক চাহিদা বেশি থাকে, তখন [ব্লকস](https://eth.blockscout.com/block/22580057) মিন্ট করার চেয়ে বেশি ইথার বার্ন করতে পারে, যা কার্যকরভাবে ইথার ইস্যুয়েন্স-কে অফসেট করে।
-বেস ফি বার্ন করা একজন ব্লক প্রযোজকের লেনদেন ম্যানিপুলেট করার ক্ষমতাকে বাধা দেয়। উদাহরণস্বরূপ, যদি ব্লক প্রযোজকরা বেস ফি পেতেন, তাহলে তারা বিনামূল্যে তাদের নিজস্ব লেনদেন অন্তর্ভুক্ত করতে পারত এবং অন্য সবার জন্য বেস ফি বাড়িয়ে দিত। বিকল্পভাবে, তারা অফচেইনে কিছু ব্যবহারকারীকে বেস ফি ফেরত দিতে পারে, যা একটি আরও অস্বচ্ছ এবং জটিল লেনদেন ফি বাজারের দিকে নিয়ে যায়।
+বেস ফি বার্ন করা ব্লক প্রডিউসারের লেনদেন ম্যানিপুলেট করার ক্ষমতাকে বাধাগ্রস্ত করে। উদাহরণস্বরূপ, যদি ব্লক প্রডিউসাররা বেস ফি পেত, তবে তারা বিনামূল্যে তাদের নিজস্ব লেনদেন অন্তর্ভুক্ত করতে পারত এবং অন্য সবার জন্য বেস ফি বাড়িয়ে দিতে পারত। বিকল্পভাবে, তারা কিছু ব্যবহারকারীকে অফচেইন-এ বেস ফি ফেরত দিতে পারত, যা আরও অস্বচ্ছ এবং জটিল ট্রানজেকশন ফি মার্কেটের দিকে পরিচালিত করত।
-## ইথারের বিভাজন {#denominations}
+## ইথারের ডিনোমিনেশন {#denominations}
-যেহেতু Ethereum-এ অনেক লেনদেনের মান কম, তাই ইথারের বেশ কয়েকটি বিভাজন রয়েছে যা অ্যাকাউন্টের ছোট একক হিসাবে উল্লেখ করা যেতে পারে। এই বিভাজনগুলির মধ্যে, Wei এবং gwei বিশেষভাবে গুরুত্বপূর্ণ।
+যেহেতু ইথিরিয়ামে অনেক লেনদেন-এর মান ছোট, তাই ইথারের বেশ কয়েকটি ডিনোমিনেশন রয়েছে যা একাউন্ট-এর ছোট একক হিসেবে উল্লেখ করা যেতে পারে। এই ডিনোমিনেশনগুলোর মধ্যে, Wei এবং gwei বিশেষভাবে গুরুত্বপূর্ণ।
-Wei হল ইথারের ক্ষুদ্রতম সম্ভাব্য পরিমাণ, এবং ফলস্বরূপ, অনেক প্রযুক্তিগত বাস্তবায়ন, যেমন [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf), Wei-তে সমস্ত গণনা ভিত্তি করবে।
+Wei হলো ইথারের সম্ভাব্য সবচেয়ে ছোট পরিমাণ, এবং এর ফলে, অনেক প্রযুক্তিগত বাস্তবায়ন, যেমন [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf), সমস্ত হিসাব Wei-তে ভিত্তি করে করবে।
-Gwei, গিগা-ওয়েই এর সংক্ষিপ্ত রূপ, প্রায়শই Ethereum-এ গ্যাস খরচ বর্ণনা করতে ব্যবহৃত হয়।
+Gwei, যা giga-wei-এর সংক্ষিপ্ত রূপ, প্রায়শই ইথিরিয়ামে গ্যাস খরচ বর্ণনা করতে ব্যবহৃত হয়।
-| বিভাজন | ইথারে মান | সাধারণ ব্যবহার |
-| ------ | ---------------- | ------------------------- |
-| Wei | 10-18 | প্রযুক্তিগত বাস্তবায়ন |
-| Gwei | 10-9 | মানুষের পাঠযোগ্য গ্যাস ফি |
+| ডিনোমিনেশন | ইথারে মান | সাধারণ ব্যবহার |
+| ------------ | ---------------- | ------------------------- |
+| Wei | 10-18 | প্রযুক্তিগত বাস্তবায়ন |
+| Gwei | 10-9 | মানুষের পড়ার যোগ্য গ্যাস ফি |
-## ইথার স্থানান্তর করা {#transferring-ether}
+## ইথার ট্রান্সফার করা {#transferring-ether}
-Ethereum-এর প্রতিটি লেনদেনে একটি `value` ক্ষেত্র থাকে, যা প্রেরকের ঠিকানা থেকে প্রাপকের ঠিকানায় পাঠানোর জন্য wei-তে নির্ধারিত স্থানান্তরিত করা ইথারের পরিমাণ নির্দিষ্ট করে।
+ইথিরিয়ামের প্রতিটি লেনদেন-এ একটি `value` ফিল্ড থাকে, যা প্রেরকের এডড্রেস থেকে প্রাপকের এডড্রেস-এ পাঠানোর জন্য wei-তে ডিনোমিনেট করা ইথারের পরিমাণ নির্দিষ্ট করে।
-যখন প্রাপকের ঠিকানা একটি [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) হয়, তখন এই স্থানান্তরিত ইথারটি স্মার্ট কন্ট্র্যাক্ট তার কোড কার্যকর করার সময় গ্যাসের জন্য অর্থ প্রদান করতে ব্যবহার করা যেতে পারে।
+যখন প্রাপকের এডড্রেস একটি [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) হয়, তখন এই ট্রান্সফার করা ইথার গ্যাস-এর জন্য অর্থ প্রদান করতে ব্যবহৃত হতে পারে যখন স্মার্ট কন্ট্রাক্ট তার কোড এক্সিকিউট করে।
-[লেনদেন সম্পর্কে আরও](/developers/docs/transactions/)
+[লেনদেন সম্পর্কে আরও জানুন](/developers/docs/transactions/)
-## ইথার কোয়েরি করা {#querying-ether}
+## ইথার কোয়েরি করা {#querying-ether}
-ব্যবহারকারীরা অ্যাকাউন্টের `balance` ক্ষেত্রটি পরিদর্শন করে যেকোনো [অ্যাকাউন্টের](/developers/docs/accounts/) ইথার ব্যালেন্স জিজ্ঞাসা করতে পারে, যা wei-তে নির্ধারিত ইথার হোল্ডিং দেখায়।
+ব্যবহারকারীরা যেকোনো [একাউন্ট](/developers/docs/accounts/)-এর `balance` ফিল্ড পরিদর্শন করে তার ইথার ব্যালেন্স কোয়েরি করতে পারেন, যা wei-তে ডিনোমিনেট করা ইথার হোল্ডিং দেখায়।
-[Etherscan](https://etherscan.io) এবং [Blockscout](https://eth.blockscout.com) হল ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলির মাধ্যমে ঠিকানার ব্যালেন্স পরিদর্শন করার জন্য জনপ্রিয় টুল। উদাহরণস্বরূপ, [এই Blockscout পৃষ্ঠাটি](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) Ethereum Foundation-এর ব্যালেন্স দেখায়। অ্যাকাউন্ট ব্যালেন্স ওয়ালেট ব্যবহার করে বা সরাসরি নোডগুলিতে অনুরোধ করে জিজ্ঞাসা করা যেতে পারে।
+ওয়েব-ভিত্তিক অ্যাপ্লিকেশনের মাধ্যমে এডড্রেস ব্যালেন্স পরিদর্শন করার জন্য [Etherscan](https://etherscan.io) এবং [Blockscout](https://eth.blockscout.com) জনপ্রিয় টুল। উদাহরণস্বরূপ, [এই Blockscout পেজটি](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) ইথিরিয়াম ফাউন্ডেশনের ব্যালেন্স দেখায়। একাউন্ট ব্যালেন্স ওয়ালেট ব্যবহার করে বা সরাসরি নোড-এ রিকোয়েস্ট করেও কোয়েরি করা যেতে পারে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- [ইথার এবং Ethereum সংজ্ঞায়িত করা](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) – _CME Group_
-- [Ethereum Whitepaper](/whitepaper/): Ethereum-এর জন্য মূল প্রস্তাব। এই নথিতে ইথারের একটি বিবরণ এবং এটি তৈরির পেছনের প্রেরণা অন্তর্ভুক্ত রয়েছে।
-- [Gwei ক্যালকুলেটর](https://www.alchemy.com/gwei-calculator): wei, gwei এবং ইথার সহজে রূপান্তর করতে এই gwei ক্যালকুলেটরটি ব্যবহার করুন। কেবলমাত্র যেকোনো পরিমাণ wei, gwei, বা ETH প্লাগ ইন করুন এবং স্বয়ংক্রিয়ভাবে রূপান্তর গণনা করুন।
+- [ইথার এবং ইথিরিয়ামের সংজ্ঞা](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) – _CME Group_
+- [ইথিরিয়াম হোয়াইটপেপার](/whitepaper/): ইথিরিয়ামের মূল প্রস্তাবনা। এই নথিতে ইথারের বর্ণনা এবং এটি তৈরির পেছনের উদ্দেশ্য অন্তর্ভুক্ত রয়েছে।
+- [Gwei ক্যালকুলেটর](https://www.alchemy.com/gwei-calculator): wei, gwei এবং ইথার সহজে রূপান্তর করতে এই gwei ক্যালকুলেটরটি ব্যবহার করুন। শুধু যেকোনো পরিমাণ wei, gwei বা ETH ইনপুট দিন এবং স্বয়ংক্রিয়ভাবে রূপান্তর হিসাব করুন।
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/intro-to-ethereum/index.md b/public/content/translations/bn/developers/docs/intro-to-ethereum/index.md
index ffba041234d..cbc25d8f20b 100644
--- a/public/content/translations/bn/developers/docs/intro-to-ethereum/index.md
+++ b/public/content/translations/bn/developers/docs/intro-to-ethereum/index.md
@@ -1,124 +1,124 @@
---
-title: "ইথেরিয়ামের প্রযুক্তিগত ভূমিকা"
-description: "Ethereum-এর মূল ধারণাগুলির সাথে একজন ড্যাপ (dapp) ডেভেলপারের পরিচিতি।"
+title: ইথিরিয়ামের টেকনিক্যাল পরিচিতি
+description: একজন ডিএ্যাপ ডেভেলপারের জন্য ইথিরিয়ামের মূল ধারণাগুলোর পরিচিতি।
lang: bn
---
-## বà§à¦²à¦à¦à§à¦à¦¨ à¦à§? {#what-is-a-blockchain}
+## ব্লকচেইন কী? {#what-is-a-blockchain}
-ব্লকচেইন হলো একটি পাবলিক ডাটাবেস যা একটি নেটওয়ার্কের অনেক কম্পিউটারে আপডেট এবং শেয়ার করা হয়।
+ব্লকচেইন হলো একটি পাবলিক ডাটাবেস যা একটি নেটওয়ার্ক এর অনেকগুলো কম্পিউটারের মধ্যে আপডেট এবং শেয়ার করা হয়।
-"ব্লক" বলতে বোঝায় ডেটা এবং স্টেট যা "ব্লক" নামে পরিচিত পরপর গ্রুপে সংরক্ষণ করা হয়। আপনি যদি অন্য কাউকে ETH পাঠান, লেনদেন সফল হওয়ার জন্য লেনদেনের ডেটা একটি ব্লকে যোগ করতে হবে।
+"ব্লক" বলতে ডাটা এবং স্টেটকে বোঝায় যা "ব্লকস" নামে পরিচিত ধারাবাহিক গ্রুপে সংরক্ষিত থাকে। আপনি যদি অন্য কাউকে ETH পাঠান, তবে লেনদেন সফল হওয়ার জন্য লেনদেন ডাটা একটি ব্লকে যুক্ত করতে হবে।
-"চেইন" বলতে বোঝায় যে প্রতিটি ব্লক ক্রিপ্টোগ্রাফিকভাবে তার প্যারেন্টকে রেফারেন্স করে। অন্য কথায়, ব্লকগুলো একসাথে চেইন করা হয়। একটি ব্লকের ডেটা পরবর্তী সমস্ত ব্লক পরিবর্তন না করে পরিবর্তন করা যায় না, যার জন্য পুরো নেটওয়ার্কের কনসেন্সাস প্রয়োজন হবে।
+"চেইন" বলতে বোঝায় যে প্রতিটি ব্লক ক্রিপ্টোগ্রাফিক ভাবে তার প্যারেন্টকে রেফারেন্স করে। অন্য কথায়, ব্লকস একসাথে চেইন করা হয়। একটি ব্লকের ডাটা পরবর্তী সমস্ত ব্লকস পরিবর্তন না করে পরিবর্তন করা যায় না, যার জন্য পুরো নেটওয়ার্ক এর কনসেন্সাস প্রয়োজন হবে।
-নেটওয়ার্কের প্রতিটি কম্পিউটারকে অবশ্যই প্রতিটি নতুন ব্লক এবং পুরো চেইনের উপর একমত হতে হবে। এই কম্পিউটারগুলি "নোড" নামে পরিচিত। নোডগুলি নিশ্চিত করে যে ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করা প্রত্যেকের কাছে একই ডেটা রয়েছে। এই ডিস্ট্রিবিউটেড চুক্তি সম্পন্ন করার জন্য, ব্লকচেইনগুলির একটি কনসেন্সাস মেকানিজম প্রয়োজন।
+নেটওয়ার্ক এর প্রতিটি কম্পিউটারকে অবশ্যই প্রতিটি নতুন ব্লক এবং সামগ্রিকভাবে চেইনের বিষয়ে একমত হতে হবে। এই কম্পিউটারগুলো "নোড" হিসেবে পরিচিত। নোডস নিশ্চিত করে যে ব্লকচেইন এর সাথে ইন্টারঅ্যাক্ট করা প্রত্যেকের কাছে একই ডাটা রয়েছে। এই ডিস্ট্রিবিউটেড চুক্তি সম্পন্ন করার জন্য, ব্লকচেইনগুলোর একটি কনসেন্সাস মেকানিজম প্রয়োজন।
-Ethereum একটি [প্রুফ-অফ-স্টেক-ভিত্তিক কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/pos/) ব্যবহার করে। যে কেউ চেইনে নতুন ব্লক যোগ করতে চায় তাকে অবশ্যই জামানত হিসাবে ETH - Ethereum-এর নেটিভ মুদ্রা - স্টেক করতে হবে এবং ভ্যালিডেটর সফ্টওয়্যার চালাতে হবে। এই "ভ্যালিডেটরদের" তখন এলোমেলোভাবে ব্লক প্রস্তাব করার জন্য নির্বাচন করা যেতে পারে যা অন্যান্য ভ্যালিডেটররা পরীক্ষা করে এবং ব্লকচেইনে যোগ করে। পুরস্কার এবং শাস্তির একটি সিস্টেম রয়েছে যা অংশগ্রহণকারীদের সৎ হতে এবং যতটা সম্ভব অনলাইনে উপলব্ধ থাকতে দৃঢ়ভাবে উৎসাহিত করে।
+[Ethereum](/) একটি [প্রুফ-অফ-স্টেক-ভিত্তিক কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/pos/) ব্যবহার করে। যে কেউ চেইনে নতুন ব্লকস যোগ করতে চাইলে তাকে অবশ্যই জামানত হিসেবে ETH - ইথিরিয়ামের নিজস্ব মুদ্রা - স্টেক করতে হবে এবং ভ্যালিডেটর সফটওয়্যার চালাতে হবে। এই "ভ্যালিডেটরস" তারপর এলোমেলোভাবে ব্লক প্রস্তাব করার জন্য নির্বাচিত হতে পারে যা অন্যান্য ভ্যালিডেটরস চেক করে এবং ব্লকচেইন এ যোগ করে। এখানে পুরস্কার এবং জরিমানার একটি সিস্টেম রয়েছে যা অংশগ্রহণকারীদের সৎ হতে এবং যতটা সম্ভব অনলাইনে উপলব্ধ থাকতে দৃঢ়ভাবে উৎসাহিত করে।
-আপনি যদি দেখতে চান কিভাবে ব্লকচেইন ডেটা হ্যাস করা হয় এবং পরবর্তীতে ব্লক রেফারেন্সের ইতিহাসে যুক্ত করা হয়, তাহলে অ্যান্ডার্স ব্রাউনওয়ার্থের [এই ডেমোটি](https://andersbrownworth.com/blockchain/blockchain) দেখতে ভুলবেন না এবং নীচের ভিডিওটি দেখুন।
+আপনি যদি দেখতে চান কীভাবে ব্লকচেইন ডাটা হ্যাস করা হয় এবং পরবর্তীতে ব্লক রেফারেন্সের ইতিহাসে যুক্ত করা হয়, তবে Anders Brownworth-এর [এই ডেমোটি](https://andersbrownworth.com/blockchain/blockchain) দেখতে ভুলবেন না এবং নিচের ভিডিওটি দেখুন।
-ব্লকচেইনে অ্যান্ডার্সের হ্যাস ব্যাখ্যা দেখুন:
+ব্লকচেইনে হ্যাস সম্পর্কে Anders-এর ব্যাখ্যা দেখুন:
-## ইথেরিয়াম কী? {#what-is-ethereum}
+## ইথিরিয়াম কী? {#what-is-ethereum}
-Ethereum হল একটি ব্লকচেইন যার মধ্যে একটি কম্পিউটার এমবেড করা আছে। এটি একটি বিকেন্দ্রীভূত, অনুমতিহীন, সেন্সরশিপ-প্রতিরোধী উপায়ে অ্যাপ এবং সংস্থা তৈরির ভিত্তি।
+ইথিরিয়াম হলো একটি ব্লকচেইন যার মধ্যে একটি কম্পিউটার এম্বেড করা আছে। এটি একটি ডিসেন্ট্রালাইজড, পারমিশনলেস এবং সেন্সরশিপ-প্রতিরোধী উপায়ে অ্যাপ এবং সংস্থা তৈরির ভিত্তি।
-Ethereum ইউনিভার্সে, একটি একক, ক্যানোনিকাল কম্পিউটার রয়েছে (যাকে ইথিরিয়াম ভার্চুয়াল মেশিন বা EVM বলা হয়) যার স্টেটের উপর Ethereum নেটওয়ার্কের সবাই একমত। Ethereum নেটওয়ার্কে অংশগ্রহণকারী প্রত্যেকে (প্রতিটি Ethereum নোড) এই কম্পিউটারের স্টেটের একটি অনুলিপি রাখে। অতিরিক্তভাবে, যেকোনো অংশগ্রহণকারী এই কম্পিউটারকে নির্বিচারে গণনা সম্পাদন করার জন্য একটি অনুরোধ ব্রডকাস্ট করতে পারে। যখনই এই ধরনের একটি অনুরোধ ব্রডকাস্ট করা হয়, নেটওয়ার্কের অন্যান্য অংশগ্রহণকারীরা গণনাটি যাচাই, বৈধকরণ এবং সম্পাদন ("এক্সিকিউট") করে। এই এক্সিকিউশন EVM-এ একটি স্টেট পরিবর্তনের কারণ হয়, যা পুরো নেটওয়ার্কে কমিটেড এবং প্রচারিত হয়।
+ইথিরিয়াম জগতে, একটি একক, ক্যানোনিকাল কম্পিউটার রয়েছে (যাকে ইথিরিয়াম ভার্চুয়াল মেশিন বা EVM বলা হয়) যার স্টেট এর বিষয়ে ইথিরিয়াম নেটওয়ার্ক এর সবাই একমত। ইথিরিয়াম নেটওয়ার্ক এ অংশগ্রহণকারী প্রত্যেকে (প্রতিটি ইথিরিয়াম নোড) এই কম্পিউটারের স্টেট এর একটি কপি রাখে। উপরন্তু, যেকোনো অংশগ্রহণকারী এই কম্পিউটারকে ইচ্ছামতো কম্পিউটেশন করার জন্য একটি অনুরোধ ব্রডকাস্ট করতে পারে। যখনই এই ধরনের কোনো অনুরোধ ব্রডকাস্ট করা হয়, নেটওয়ার্ক এর অন্যান্য অংশগ্রহণকারীরা কম্পিউটেশনটি যাচাই, ভ্যালিডেট এবং সম্পাদন ("এক্সিকিউট") করে। এই এক্সিকিউশনের ফলে EVM-এ একটি স্টেট পরিবর্তন ঘটে, যা কমিট করা হয় এবং পুরো নেটওয়ার্ক জুড়ে ছড়িয়ে দেওয়া হয়।
-গণনার জন্য অনুরোধগুলিকে লেনদেনের অনুরোধ বলা হয়; সমস্ত লেনদেনের রেকর্ড এবং EVM-এর বর্তমান স্টেট ব্লকচেইনে সংরক্ষণ করা হয়, যা ঘুরেফিরে সমস্ত নোড দ্বারা সংরক্ষণ করা হয় এবং সম্মত হয়।
+কম্পিউটেশনের অনুরোধগুলোকে লেনদেন অনুরোধ বলা হয়; সমস্ত লেনদেন এর রেকর্ড এবং EVM-এর বর্তমান স্টেট ব্লকচেইন এ সংরক্ষিত হয়, যা আবার সমস্ত নোডস দ্বারা সংরক্ষিত এবং সম্মত হয়।
-ক্রিপ্টোগ্রাফিক মেকানিজম নিশ্চিত করে যে একবার লেনদেন বৈধ হিসাবে যাচাই করা হয়ে গেলে এবং ব্লকচেইনে যুক্ত করা হলে, সেগুলি পরে বিকৃত করা যাবে না। একই মেকানিজমগুলি এটাও নিশ্চিত করে যে সমস্ত লেনদেন উপযুক্ত "অনুমতি" সহ স্বাক্ষরিত এবং কার্যকর করা হয়েছে (এলিসের অ্যাকাউন্ট থেকে ডিজিটাল সম্পদ পাঠানোর ক্ষমতা এলিস ছাড়া আর কারো থাকা উচিত নয়)।
+ক্রিপ্টোগ্রাফিক মেকানিজম নিশ্চিত করে যে একবার লেনদেন বৈধ হিসেবে যাচাই করা হলে এবং ব্লকচেইন এ যুক্ত করা হলে, পরে সেগুলোতে কোনো পরিবর্তন করা যাবে না। একই মেকানিজম এটিও নিশ্চিত করে যে সমস্ত লেনদেন উপযুক্ত "পারমিশন" সহ সাইন এবং এক্সিকিউট করা হয়েছে (অ্যালিস ছাড়া অন্য কারও অ্যালিসের একাউন্ট থেকে ডিজিটাল সম্পদ পাঠাতে সক্ষম হওয়া উচিত নয়)।
## ইথার কী? {#what-is-ether}
-**Ether (ETH)** হল Ethereum-এর নেটিভ ক্রিপটোকারেন্সি। ETH-এর উদ্দেশ্য হল গণনার জন্য একটি বাজারের সুযোগ দেওয়া। এই ধরনের একটি বাজার অংশগ্রহণকারীদের লেনদেনের অনুরোধ যাচাই ও কার্যকর করতে এবং নেটওয়ার্কে গণনামূলক রিসোর্স সরবরাহ করতে একটি অর্থনৈতিক উৎসাহ প্রদান করে।
+**ইথার (ETH)** হলো ইথিরিয়ামের নিজস্ব ক্রিপটোকারেন্সি। ETH-এর উদ্দেশ্য হলো কম্পিউটেশনের জন্য একটি বাজার তৈরি করা। এই ধরনের বাজার অংশগ্রহণকারীদের লেনদেন অনুরোধ যাচাই ও এক্সিকিউট করতে এবং নেটওয়ার্ক এ কম্পিউটেশনাল রিসোর্স প্রদান করার জন্য একটি অর্থনৈতিক প্রণোদনা প্রদান করে।
-যেকোনো অংশগ্রহণকারী যিনি একটি লেনদেনের অনুরোধ ব্রডকাস্ট করেন তাকে অবশ্যই বাউন্টি হিসাবে নেটওয়ার্কে কিছু পরিমাণ ETH অফার করতে হবে। নেটওয়ার্ক বাউন্টির একটি অংশ পুড়িয়ে ফেলবে এবং বাকিটা তাকে পুরস্কার দেবে যে অবশেষে লেনদেন যাচাই, সম্পাদন, ব্লকচেইনে কমিট করা এবং নেটওয়ার্কে ব্রডকাস্ট করার কাজ করে।
+যে কোনো অংশগ্রহণকারী যিনি একটি লেনদেন অনুরোধ ব্রডকাস্ট করেন তাকে অবশ্যই নেটওয়ার্ক কে বাউন্টি হিসেবে কিছু পরিমাণ ETH অফার করতে হবে। নেটওয়ার্ক বাউন্টির একটি অংশ বার্ন করবে এবং বাকি অংশ তাকে পুরস্কৃত করবে যে শেষ পর্যন্ত লেনদেন যাচাই, এক্সিকিউট, ব্লকচেইন এ কমিট এবং নেটওয়ার্ক এ ব্রডকাস্ট করার কাজটি করবে।
-প্রদত্ত ETH-এর পরিমাণ গণনার জন্য প্রয়োজনীয় রিসোর্সের সাথে সঙ্গতিপূর্ণ। এই বাউন্টিগুলি দূষিত অংশগ্রহণকারীদের ইচ্ছাকৃতভাবে অসীম গণনা বা অন্যান্য রিসোর্স-ইনটেনসিভ স্ক্রিপ্ট চালানোর অনুরোধ করে নেটওয়ার্ককে বাধা দেওয়া থেকে বিরত রাখে, কারণ এই অংশগ্রহণকারীদের গণনার রিসোর্সের জন্য অর্থ প্রদান করতে হয়।
+প্রদত্ত ETH-এর পরিমাণ কম্পিউটেশন করার জন্য প্রয়োজনীয় রিসোর্সের সাথে সামঞ্জস্যপূর্ণ। এই বাউন্টিগুলো ক্ষতিকারক অংশগ্রহণকারীদের অসীম কম্পিউটেশন বা অন্যান্য রিসোর্স-নিবিড় স্ক্রিপ্ট এক্সিকিউট করার অনুরোধ করে ইচ্ছাকৃতভাবে নেটওয়ার্ক জ্যাম করা থেকেও বাধা দেয়, কারণ এই অংশগ্রহণকারীদের কম্পিউটেশন রিসোর্সের জন্য অর্থ প্রদান করতে হবে।
-ETH তিনটি প্রধান উপায়ে নেটওয়ার্কে ক্রিপ্টো-অর্থনৈতিক নিরাপত্তা প্রদান করতেও ব্যবহৃত হয়: ১) এটি ভ্যালিডেটরদের পুরস্কৃত করার একটি উপায় হিসাবে ব্যবহৃত হয় যারা ব্লক প্রস্তাব করে বা অন্যান্য ভ্যালিডেটরদের অসাধু আচরণের কথা জানায়; ২) এটি ভ্যালিডেটরদের দ্বারা স্টেক করা হয়, যা অসাধু আচরণের বিরুদ্ধে জামানত হিসাবে কাজ করে—যদি ভ্যালিডেটররা অসদাচরণ করার চেষ্টা করে তবে তাদের ETH ধ্বংস করা যেতে পারে; ৩) এটি নতুন প্রস্তাবিত ব্লকগুলির জন্য 'ভোট' ওজন করতে ব্যবহৃত হয়, যা কনসেন্সাস মেকানিজমের ফর্ক-চয়েস অংশে ফিড করে।
+ETH নেটওয়ার্ক কে ক্রিপ্টো-অর্থনৈতিক নিরাপত্তা প্রদান করতে তিনটি প্রধান উপায়ে ব্যবহৃত হয়: 1) এটি সেই ভ্যালিডেটরসদের পুরস্কৃত করার মাধ্যম হিসেবে ব্যবহৃত হয় যারা ব্লকস প্রস্তাব করে বা অন্যান্য ভ্যালিডেটরসদের অসৎ আচরণ ধরিয়ে দেয়; 2) এটি ভ্যালিডেটরসদের দ্বারা স্টেক করা হয়, যা অসৎ আচরণের বিরুদ্ধে জামানত হিসেবে কাজ করে—যদি ভ্যালিডেটরসরা অসদাচরণ করার চেষ্টা করে তবে তাদের ETH ধ্বংস করা যেতে পারে; 3) এটি নতুন প্রস্তাবিত ব্লকস এর জন্য 'ভোট' ওজন করতে ব্যবহৃত হয়, যা কনসেন্সাস মেকানিজম এর ফর্ক-চয়েস অংশে যুক্ত হয়।
## স্মার্ট কন্ট্রাক্ট কী? {#what-are-smart-contracts}
-বাস্তবে, অংশগ্রহণকারীরা যখনই EVM-এ গণনার অনুরোধ করতে চায়, প্রতিবার নতুন কোড লেখে না। বরং, অ্যাপ্লিকেশন ডেভেলপাররা প্রোগ্রাম (পুনরায় ব্যবহারযোগ্য কোড স্নিপেট) EVM স্টেটে আপলোড করে এবং ব্যবহারকারীরা বিভিন্ন প্যারামিটার সহ এই কোড স্নিপেটগুলি চালানোর জন্য অনুরোধ করে। আমরা নেটওয়ার্কে আপলোড করা এবং চালানো প্রোগ্রামগুলিকে "স্মার্ট কন্ট্রাক্ট" বলি।
+বাস্তবে, অংশগ্রহণকারীরা যখনই EVM-এ কম্পিউটেশনের অনুরোধ করতে চায় তখনই নতুন কোড লেখে না। বরং, অ্যাপ্লিকেশন ডেভেলপাররা EVM স্টেট এ প্রোগ্রাম (কোডের পুনঃব্যবহারযোগ্য স্নিপেট) আপলোড করে এবং ব্যবহারকারীরা বিভিন্ন প্যারামিটার সহ এই কোড স্নিপেটগুলো এক্সিকিউট করার অনুরোধ করে। নেটওয়ার্ক এ আপলোড করা এবং এক্সিকিউট করা প্রোগ্রামগুলোকে আমরা "স্মার্ট কন্ট্রাক্ট" বলি।
-খুব প্রাথমিক স্তরে, আপনি একটি স্মার্ট কন্ট্রাক্টকে এক ধরনের ভেন্ডিং মেশিনের মতো ভাবতে পারেন: একটি স্ক্রিপ্ট যা নির্দিষ্ট প্যারামিটার দিয়ে কল করা হলে, নির্দিষ্ট শর্ত পূরণ হলে কিছু কাজ বা গণনা করে। উদাহরণস্বরূপ, একটি সাধারণ ভেন্ডর স্মার্ট কন্ট্রাক্ট একটি ডিজিটাল সম্পদের মালিকানা তৈরি এবং বরাদ্দ করতে পারে যদি কলার একটি নির্দিষ্ট প্রাপককে ETH পাঠায়।
+খুব প্রাথমিক স্তরে, আপনি একটি স্মার্ট কন্ট্রাক্ট কে এক ধরণের ভেন্ডিং মেশিনের মতো ভাবতে পারেন: একটি স্ক্রিপ্ট যা নির্দিষ্ট প্যারামিটার সহ কল করা হলে, নির্দিষ্ট শর্ত পূরণ হলে কিছু কাজ বা কম্পিউটেশন সম্পাদন করে। উদাহরণস্বরূপ, একটি সাধারণ ভেন্ডর স্মার্ট কন্ট্রাক্ট একটি ডিজিটাল সম্পদের মালিকানা তৈরি এবং বরাদ্দ করতে পারে যদি কলার একটি নির্দিষ্ট প্রাপককে ETH পাঠায়।
-যেকোনো ডেভেলপার একটি স্মার্ট কন্ট্রাক্ট তৈরি করতে এবং এটিকে নেটওয়ার্কের কাছে পাবলিক করতে পারে, ব্লকচেইনকে তার ডেটা লেয়ার হিসাবে ব্যবহার করে, নেটওয়ার্কে প্রদত্ত একটি ফি-এর বিনিময়ে। যেকোনো ব্যবহারকারী তখন স্মার্ট কন্ট্রাক্টকে তার কোড চালানোর জন্য কল করতে পারে, আবারও নেটওয়ার্কে প্রদত্ত একটি ফি-এর বিনিময়ে।
+যেকোনো ডেভেলপার একটি স্মার্ট কন্ট্রাক্ট তৈরি করতে পারে এবং নেটওয়ার্ক কে ফি প্রদান করে ব্লকচেইন কে এর ডাটা লেয়ার হিসেবে ব্যবহার করে নেটওয়ার্ক এ পাবলিক করতে পারে। যেকোনো ব্যবহারকারী তখন স্মার্ট কন্ট্রাক্ট কল করে এর কোড এক্সিকিউট করতে পারে, যার জন্য আবার নেটওয়ার্ক কে ফি দিতে হয়।
-এইভাবে, স্মার্ট কন্ট্রাক্টের মাধ্যমে, ডেভেলপাররা নির্বিচারে জটিল ব্যবহারকারী-মুখী অ্যাপ এবং পরিষেবা যেমন: মার্কেটপ্লেস, আর্থিক উপকরণ, গেম ইত্যাদি তৈরি এবং ডেপ্লয় করতে পারে।
+সুতরাং, স্মার্ট কন্ট্রাক্ট এর মাধ্যমে, ডেভেলপাররা ইচ্ছামতো জটিল ব্যবহারকারী-মুখী অ্যাপ এবং পরিষেবা তৈরি এবং ডিপ্লয় করতে পারে যেমন: মার্কেটপ্লেস, আর্থিক সরঞ্জাম, গেমস ইত্যাদি।
## পরিভাষা {#terminology}
### ব্লকচেইন {#blockchain}
-নেটওয়ার্কের ইতিহাসে Ethereum নেটওয়ার্কে কমিট করা সমস্ত ব্লকের ক্রম। এরকম নামকরণ করা হয়েছে কারণ প্রতিটি ব্লকে পূর্ববর্তী ব্লকের একটি রেফারেন্স থাকে, যা আমাদের সমস্ত ব্লকের উপর একটি ক্রম বজায় রাখতে সাহায্য করে (এবং এইভাবে সঠিক ইতিহাসের উপরও)।
+নেটওয়ার্ক এর ইতিহাসে ইথিরিয়াম নেটওয়ার্ক এ কমিট করা সমস্ত ব্লকস এর ক্রম। এর নামকরণ এমন করা হয়েছে কারণ প্রতিটি ব্লকে আগের ব্লকের একটি রেফারেন্স থাকে, যা আমাদের সমস্ত ব্লকস এর (এবং এইভাবে সুনির্দিষ্ট ইতিহাসের) উপর একটি ক্রম বজায় রাখতে সাহায্য করে।
### ETH {#eth}
-**Ether (ETH)** হল Ethereum-এর নেটিভ ক্রিপটোকারেন্সি। ব্যবহারকারীরা তাদের কোড এক্সিকিউশন অনুরোধগুলি পূরণ করার জন্য অন্যান্য ব্যবহারকারীদের ETH প্রদান করে।
+**ইথার (ETH)** হলো ইথিরিয়ামের নিজস্ব ক্রিপটোকারেন্সি। ব্যবহারকারীরা তাদের কোড এক্সিকিউশন অনুরোধ পূরণের জন্য অন্যান্য ব্যবহারকারীদের ETH প্রদান করে।
-[ETH সম্পর্কে আরও](/developers/docs/intro-to-ether/)
+[ETH সম্পর্কে আরও জানুন](/developers/docs/intro-to-ether/)
### EVM {#evm}
-ইথিরিয়াম ভার্চুয়াল মেশিন হল গ্লোবাল ভার্চুয়াল কম্পিউটার যার স্টেট Ethereum নেটওয়ার্কের প্রত্যেক অংশগ্রহণকারী সংরক্ষণ করে এবং তাতে একমত হয়। যেকোনো অংশগ্রহণকারী EVM-এ নির্বিচারে কোড চালানোর জন্য অনুরোধ করতে পারে; কোড এক্সিকিউশন EVM-এর স্টেট পরিবর্তন করে।
+ইথিরিয়াম ভার্চুয়াল মেশিন হলো গ্লোবাল ভার্চুয়াল কম্পিউটার যার স্টেট ইথিরিয়াম নেটওয়ার্ক এর প্রতিটি অংশগ্রহণকারী সংরক্ষণ করে এবং একমত হয়। যেকোনো অংশগ্রহণকারী EVM-এ ইচ্ছামতো কোড এক্সিকিউট করার অনুরোধ করতে পারে; কোড এক্সিকিউশন EVM-এর স্টেট পরিবর্তন করে।
-[EVM সম্পর্কে আরও](/developers/docs/evm/)
+[EVM সম্পর্কে আরও জানুন](/developers/docs/evm/)
-### নোড {#nodes}
+### নোডস {#nodes}
-বাস্তব-জীবনের মেশিন যা EVM স্টেট সংরক্ষণ করছে। নোডগুলি একে অপরের সাথে যোগাযোগ করে EVM স্টেট এবং নতুন স্টেট পরিবর্তন সম্পর্কে তথ্য প্রচার করতে। যেকোনো ব্যবহারকারী একটি নোড থেকে কোড এক্সিকিউশন অনুরোধ ব্রডকাস্ট করে কোড এক্সিকিউশনের জন্য অনুরোধ করতে পারে। Ethereum নেটওয়ার্ক নিজেই সমস্ত Ethereum নোড এবং তাদের যোগাযোগের সমষ্টি।
+বাস্তব জীবনের মেশিনগুলো যা EVM স্টেট সংরক্ষণ করছে। নোডস EVM স্টেট এবং নতুন স্টেট পরিবর্তন সম্পর্কে তথ্য প্রচার করতে একে অপরের সাথে যোগাযোগ করে। যেকোনো ব্যবহারকারী একটি নোড থেকে কোড এক্সিকিউশন অনুরোধ ব্রডকাস্ট করে কোড এক্সিকিউট করার অনুরোধ করতে পারে। ইথিরিয়াম নেটওয়ার্ক নিজেই সমস্ত ইথিরিয়াম নোডস এবং তাদের যোগাযোগের সমষ্টি।
-[নোড সম্পর্কে আরও](/developers/docs/nodes-and-clients/)
+[নোডস সম্পর্কে আরও জানুন](/developers/docs/nodes-and-clients/)
-### অ্যাকাউন্ট {#accounts}
+### একাউন্ট {#accounts}
-যেখানে ETH সংরক্ষণ করা হয়। ব্যবহারকারীরা অ্যাকাউন্ট শুরু করতে পারে, অ্যাকাউন্টে ETH জমা করতে পারে এবং তাদের অ্যাকাউন্ট থেকে অন্য ব্যবহারকারীদের কাছে ETH স্থানান্তর করতে পারে। অ্যাকাউন্ট এবং অ্যাকাউন্ট ব্যালেন্স EVM-এর একটি বড় টেবিলে সংরক্ষণ করা হয়; এগুলি সামগ্রিক EVM স্টেটের একটি অংশ।
+যেখানে ETH সংরক্ষণ করা হয়। ব্যবহারকারীরা একাউন্ট চালু করতে পারে, একাউন্ট এ ETH জমা করতে পারে এবং তাদের একাউন্ট থেকে অন্য ব্যবহারকারীদের কাছে ETH স্থানান্তর করতে পারে। একাউন্ট এবং একাউন্ট ব্যালেন্স EVM-এর একটি বড় টেবিলে সংরক্ষিত থাকে; এগুলো সামগ্রিক EVM স্টেট এর একটি অংশ।
-[অ্যাকাউন্ট সম্পর্কে আরও](/developers/docs/accounts/)
+[একাউন্ট সম্পর্কে আরও জানুন](/developers/docs/accounts/)
### লেনদেন {#transactions}
-একটি "লেনদেনের অনুরোধ" হল EVM-এ কোড এক্সিকিউশনের অনুরোধের আনুষ্ঠানিক পরিভাষা, এবং একটি "লেনদেন" হল একটি পূরণ করা লেনদেনের অনুরোধ এবং EVM স্টেটের সংশ্লিষ্ট পরিবর্তন। যেকোনো ব্যবহারকারী একটি নোড থেকে নেটওয়ার্কে একটি লেনদেনের অনুরোধ ব্রডকাস্ট করতে পারে। লেনদেনের অনুরোধটি সম্মত EVM স্টেটকে প্রভাবিত করার জন্য, এটিকে অন্য নোড দ্বারা যাচাই, এক্সিকিউট এবং "নেটওয়ার্কে কমিট" করতে হবে। যেকোনো কোড এক্সিকিউশন EVM-এ একটি স্টেট পরিবর্তনের কারণ হয়; কমিট করার পরে, এই স্টেট পরিবর্তনটি নেটওয়ার্কের সমস্ত নোডে ব্রডকাস্ট করা হয়। লেনদেনের কিছু উদাহরণ:
+একটি "লেনদেন অনুরোধ" হলো EVM-এ কোড এক্সিকিউট করার অনুরোধের আনুষ্ঠানিক শব্দ, এবং একটি "লেনদেন" হলো একটি পূর্ণ লেনদেন অনুরোধ এবং EVM স্টেট এ সম্পর্কিত পরিবর্তন। যেকোনো ব্যবহারকারী একটি নোড থেকে নেটওয়ার্ক এ একটি লেনদেন অনুরোধ ব্রডকাস্ট করতে পারে। লেনদেন অনুরোধটি সম্মত EVM স্টেট কে প্রভাবিত করার জন্য, এটি অবশ্যই অন্য একটি নোড দ্বারা যাচাই, এক্সিকিউট এবং "নেটওয়ার্ক এ কমিট" করতে হবে। যেকোনো কোড এক্সিকিউট করার ফলে EVM-এ একটি স্টেট পরিবর্তন ঘটে; কমিট করার পর, এই স্টেট পরিবর্তনটি নেটওয়ার্ক এর সমস্ত নোডস এ ব্রডকাস্ট করা হয়। লেনদেন এর কিছু উদাহরণ:
-- আমার অ্যাকাউন্ট থেকে এলিসের অ্যাকাউন্টে X ETH পাঠান।
-- কিছু স্মার্ট কন্ট্রাক্ট কোড EVM স্টেটে প্রকাশ করুন।
-- EVM-এ ঠিকানা X-এ থাকা স্মার্ট কন্ট্রাক্টের কোড, আর্গুমেন্ট Y সহ এক্সিকিউট করুন।
+- আমার একাউন্ট থেকে অ্যালিসের একাউন্ট এ X ETH পাঠান।
+- EVM স্টেট এ কিছু স্মার্ট কন্ট্রাক্ট কোড প্রকাশ করুন।
+- EVM-এ এডড্রেস X-এ স্মার্ট কন্ট্রাক্ট এর কোড আর্গুমেন্ট Y সহ এক্সিকিউট করুন।
-[লেনদেন সম্পর্কে আরও](/developers/docs/transactions/)
+[লেনদেন সম্পর্কে আরও জানুন](/developers/docs/transactions/)
-### ব্লক {#blocks}
+### ব্লকস {#blocks}
-লেনদেনের পরিমাণ খুব বেশি, তাই লেনদেনগুলি ব্যাচে বা ব্লকে "কমিটেড" হয়। ব্লকগুলিতে সাধারণত কয়েক ডজন থেকে শত শত লেনদেন থাকে।
+লেনদেন এর পরিমাণ অনেক বেশি, তাই লেনদেন ব্যাচ বা ব্লকস এ "কমিট" করা হয়। ব্লকস এ সাধারণত কয়েক ডজন থেকে শত শত লেনদেন থাকে।
-[ব্লক সম্পর্কে আরও](/developers/docs/blocks/)
+[ব্লকস সম্পর্কে আরও জানুন](/developers/docs/blocks/)
### স্মার্ট কন্ট্রাক্ট {#smart-contracts}
-কোডের একটি পুনঃব্যবহারযোগ্য স্নিপেট (একটি প্রোগ্রাম) যা একজন ডেভেলপার EVM স্টেটে প্রকাশ করে। যেকোনো ব্যক্তি একটি লেনদেনের অনুরোধ করে স্মার্ট কন্ট্রাক্ট কোডটি এক্সিকিউট করার জন্য অনুরোধ করতে পারে। কারণ ডেভেলপাররা EVM-এ নির্বিচারে এক্সিকিউটেবল অ্যাপ্লিকেশন লিখতে পারে (গেম, মার্কেটপ্লেস, আর্থিক উপকরণ, ইত্যাদি) স্মার্ট কন্ট্রাক্ট প্রকাশ করার মাধ্যমে, এগুলিকে প্রায়ই [ডিএ্যাপস, বা ডিসেন্ট্রালাইজড এপ্লিকেশন](/developers/docs/dapps/) বলা হয়।
+কোডের একটি পুনঃব্যবহারযোগ্য স্নিপেট (একটি প্রোগ্রাম) যা একজন ডেভেলপার EVM স্টেট এ প্রকাশ করে। যে কেউ একটি লেনদেন অনুরোধ করে স্মার্ট কন্ট্রাক্ট কোড এক্সিকিউট করার অনুরোধ করতে পারে। যেহেতু ডেভেলপাররা স্মার্ট কন্ট্রাক্ট প্রকাশ করে EVM-এ ইচ্ছামতো এক্সিকিউটেবল অ্যাপ্লিকেশন (গেমস, মার্কেটপ্লেস, আর্থিক সরঞ্জাম ইত্যাদি) লিখতে পারে, তাই এগুলোকে প্রায়শই [ডিএ্যাপস, বা ডিসেন্ট্রালাইজড অ্যাপস](/developers/docs/dapps/) বলা হয়।
-[স্মার্ট কন্ট্রাক্ট সম্পর্কে আরও](/developers/docs/smart-contracts/)
+[স্মার্ট কন্ট্রাক্ট সম্পর্কে আরও জানুন](/developers/docs/smart-contracts/)
## আরও পড়ুন {#further-reading}
-- [Ethereum হোয়াইটপেপার](/whitepaper/)
-- [Ethereum কীভাবে কাজ করে?](https://medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369) - _প্রীতি কাসিরেড্ডি_ (**বিশেষ দ্রষ্টব্য** এই রিসোর্সটি এখনও মূল্যবান তবে সচেতন থাকুন যে এটি [The Merge](/roadmap/merge)-এর পূর্ববর্তী এবং তাই এখনও Ethereum-এর প্রুফ-অফ-ওয়ার্ক মেকানিজমকে বোঝায় - Ethereum এখন আসলে [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) ব্যবহার করে সুরক্ষিত)
+- [ইথিরিয়াম হোয়াইটপেপার](/whitepaper/)
+- [ইথিরিয়াম আসলে কীভাবে কাজ করে?](https://medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369) - _Preethi Kasireddy_ (**দ্রষ্টব্য** এই রিসোর্সটি এখনও মূল্যবান তবে মনে রাখবেন যে এটি [দ্য মার্জ](/roadmap/merge) এর আগের এবং তাই এখনও ইথিরিয়ামের প্রুফ-অফ-ওয়ার্ক মেকানিজম কে নির্দেশ করে - ইথিরিয়াম আসলে এখন [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) ব্যবহার করে সুরক্ষিত)
-### আপনি কি দেখে শিখতে বেশি পছন্দ করেন? {#visual-learner}
+### ভিজ্যুয়াল লার্নার? {#visual-learner}
-এই ভিডিও সিরিজটি মৌলিক বিষয়গুলির একটি পুঙ্খানুপুঙ্খ অন্বেষণ অফার করে:
+এই ভিডিও সিরিজটি মৌলিক বিষয়গুলোর একটি পুঙ্খানুপুঙ্খ অন্বেষণ অফার করে:
-[Ethereum বেসিকস প্লেলিস্ট](https://youtube.com/playlist?list=PLqgutSGloqiJyyoL0zvLVFPS-GMD2wKa5&si=kZTf5I7PKGTXDsOZ)
+[ইথিরিয়াম বেসিকস প্লেলিস্ট](https://youtube.com/playlist?list=PLqgutSGloqiJyyoL0zvLVFPS-GMD2wKa5&si=kZTf5I7PKGTXDsOZ)
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [একজন ডেভেলপারের জন্য Ethereum-এর নির্দেশিকা, পর্ব ১](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– Python এবং web3.py ব্যবহার করে Ethereum-এর একটি খুব শিক্ষানবিস-বান্ধব অন্বেষণ_
+- [ইথিরিয়ামে একজন ডেভেলপারের গাইড, পর্ব ১](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– পাইথন এবং web3.py ব্যবহার করে ইথিরিয়ামের একটি খুব শিক্ষানবিস-বান্ধব অন্বেষণ_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/mev/index.md b/public/content/translations/bn/developers/docs/mev/index.md
index 1b20d0d5e9d..4381c60b8b0 100644
--- a/public/content/translations/bn/developers/docs/mev/index.md
+++ b/public/content/translations/bn/developers/docs/mev/index.md
@@ -1,221 +1,221 @@
---
-title: "ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু (MEV)"
-description: "ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু (MEV)-এর একটি ভূমিকা"
+title: ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু (MEV)
+description: ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু (MEV)-এর পরিচিতি
lang: bn
---
-ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু (MEV) বলতে একটি ব্লকে লেনদেন অন্তর্ভুক্ত করা, বাদ দেওয়া এবং ক্রম পরিবর্তন করার মাধ্যমে স্ট্যান্ডার্ড ব্লক রিওয়ার্ড এবং গ্যাস ফি-এর অতিরিক্ত ব্লক উৎপাদন থেকে যে সর্বোচ্চ ভ্যালু বের করা যায়, তাকে বোঝায়।
+ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু (MEV) বলতে একটি ব্লকে লেনদেন অন্তর্ভুক্ত, বাদ দেওয়া এবং এর ক্রম পরিবর্তন করার মাধ্যমে স্ট্যান্ডার্ড ব্লক রিওয়ার্ড এবং গ্যাস ফি-এর অতিরিক্ত ব্লক উৎপাদন থেকে যে সর্বোচ্চ মান বের করা যায় তাকে বোঝায়।
## ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু {#maximal-extractable-value}
-ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু প্রথম [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/)-এর প্রেক্ষাপটে প্রয়োগ করা হয়েছিল এবং প্রাথমিকভাবে একে "মাইনার এক্সট্রাক্টবল ভ্যালু" হিসাবে উল্লেখ করা হয়েছিল। এর কারণ হল, প্রুফ-অফ-ওয়ার্কে মাইনাররা লেনদেন অন্তর্ভুক্ত করা, বাদ দেওয়া এবং ক্রম নিয়ন্ত্রণ করে। তবে, [দ্য মার্জ](/roadmap/merge)-এর মাধ্যমে প্রুফ-অফ-স্টেক-এ স্থানান্তরের পর থেকে, ভ্যালিডেটররা এই ভূমিকাগুলির জন্য দায়ী, এবং মাইনিং এখন আর Ethereum প্রোটোকলের অংশ নয়। তবে, ভ্যালু বের করার পদ্ধতিগুলো এখনও বিদ্যমান, তাই এখন এর পরিবর্তে "ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু" শব্দটি ব্যবহার করা হয়।
+ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু প্রথম [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/)-এর প্রেক্ষাপটে প্রয়োগ করা হয়েছিল এবং প্রাথমিকভাবে একে "মাইনার এক্সট্রাক্টবল ভ্যালু" বলা হতো। এর কারণ হলো প্রুফ-অফ-ওয়ার্ক-এ, মাইনাররা লেনদেন অন্তর্ভুক্ত, বাদ দেওয়া এবং ক্রম নির্ধারণ নিয়ন্ত্রণ করে। তবে, [The Merge](/roadmap/merge)-এর মাধ্যমে প্রুফ-অফ-স্টেক-এ রূপান্তরের পর থেকে ভ্যালিডেটরস এই ভূমিকাগুলোর জন্য দায়ী, এবং মাইনিং আর [Ethereum](/)-এর প্রটোকল-এর অংশ নয়। ভ্যালু এক্সট্রাকশন পদ্ধতিগুলো এখনও বিদ্যমান, তাই এখন এর পরিবর্তে "ম্যাক্সিমাল এক্সট্রাক্টবল ভ্যালু" শব্দটি ব্যবহৃত হয়।
## পূর্বশর্ত {#prerequisites}
-নিশ্চিত করুন যে আপনি [লেনদেন](/developers/docs/transactions/), [ব্লক](/developers/docs/blocks/), [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) এবং [গ্যাস](/developers/docs/gas/) সম্পর্কে পরিচিত। [ডিঅ্যাপস](/apps/) এবং [ডিফাই](/defi/)-এর সাথে পরিচিতি থাকাও সহায়ক।
+নিশ্চিত করুন যে আপনি [লেনদেন](/developers/docs/transactions/), [ব্লকস](/developers/docs/blocks/), [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) এবং [গ্যাস](/developers/docs/gas/)-এর সাথে পরিচিত। [ডিএ্যাপস](/apps/) এবং [DeFi](/defi/)-এর সাথে পরিচিতিও সহায়ক।
-## MEV এক্সট্র্যাকশন {#mev-extraction}
+## MEV এক্সট্রাকশন {#mev-extraction}
-তত্ত্বগতভাবে, MEV সম্পূর্ণরূপে ভ্যালিডেটরদের কাছে জমা হয় কারণ তারাই একমাত্র পক্ষ যারা একটি লাভজনক MEV সুযোগের এক্সিকিউশন নিশ্চিত করতে পারে। তবে, বাস্তবে, MEV-এর একটি বড় অংশ "সার্চার" নামে পরিচিত স্বাধীন নেটওয়ার্ক অংশগ্রহণকারীদের দ্বারা বের করা হয়। সার্চাররা ব্লকচেইন ডেটার উপর জটিল অ্যালগরিদম চালায় লাভজনক MEV সুযোগ শনাক্ত করার জন্য এবং তাদের কাছে বট থাকে যা স্বয়ংক্রিয়ভাবে সেই লাভজনক লেনদেনগুলি নেটওয়ার্কে জমা দেয়।
+তাত্ত্বিকভাবে MEV সম্পূর্ণভাবে ভ্যালিডেটরস-এর কাছে জমা হয় কারণ তারাই একমাত্র পক্ষ যারা একটি লাভজনক MEV সুযোগের এক্সিকিউশন নিশ্চিত করতে পারে। তবে বাস্তবে, MEV-এর একটি বড় অংশ স্বাধীন নেটওয়ার্ক অংশগ্রহণকারীদের দ্বারা এক্সট্রাক্ট করা হয় যাদের "সার্চার" বলা হয়। সার্চাররা লাভজনক MEV সুযোগগুলো শনাক্ত করতে ব্লকচেইন ডেটার উপর জটিল এ্যালগরিদম চালায় এবং সেই লাভজনক লেনদেনগুলো স্বয়ংক্রিয়ভাবে নেটওয়ার্ক-এ জমা দেওয়ার জন্য তাদের বট থাকে।
-ভ্যালিডেটররা যাইহোক সম্পূর্ণ MEV পরিমাণের একটি অংশ পায় কারণ সার্চাররা তাদের লাভজনক লেনদেনগুলিকে একটি ব্লকে অন্তর্ভুক্ত করার উচ্চতর সম্ভাবনার বিনিময়ে উচ্চ গ্যাস ফি (যা ভ্যালিডেটরের কাছে যায়) দিতে ইচ্ছুক। ধরে নেওয়া যাক সার্চাররা অর্থনৈতিকভাবে যুক্তিসঙ্গত, একজন সার্চার যে গ্যাস ফি দিতে ইচ্ছুক তা তার MEV-এর ১০০% পর্যন্ত একটি পরিমাণ হবে (কারণ গ্যাস ফি বেশি হলে, সার্চার টাকা হারাবে)।
+ভ্যালিডেটরস যেকোনোভাবেই সম্পূর্ণ MEV পরিমাণের একটি অংশ পায় কারণ সার্চাররা তাদের লাভজনক লেনদেনগুলো একটি ব্লকে অন্তর্ভুক্ত হওয়ার উচ্চতর সম্ভাবনার বিনিময়ে উচ্চ গ্যাস ফি (যা ভ্যালিডেটর-এর কাছে যায়) দিতে ইচ্ছুক থাকে। সার্চাররা অর্থনৈতিকভাবে যুক্তিসঙ্গত বলে ধরে নিলে, একজন সার্চার যে গ্যাস ফি দিতে ইচ্ছুক তা সার্চারের MEV-এর 100% পর্যন্ত হতে পারে (কারণ গ্যাস ফি বেশি হলে সার্চারের লোকসান হবে)।
-এর সাথে, কিছু অত্যন্ত প্রতিযোগিতামূলক MEV সুযোগের জন্য, যেমন [DEX আরবিট্রেজ](#mev-examples-dex-arbitrage), সার্চারদের তাদের মোট MEV আয়ের ৯০% বা তারও বেশি ভ্যালিডেটরকে গ্যাস ফি হিসাবে দিতে হতে পারে কারণ অনেক লোক একই লাভজনক আরবিট্রেজ ট্রেড চালাতে চায়। এর কারণ হল, তাদের আরবিট্রেজ লেনদেন যে চলবে তা নিশ্চিত করার একমাত্র উপায় হল যদি তারা সর্বোচ্চ গ্যাস মূল্যে লেনদেনটি জমা দেয়।
+এর সাথে, কিছু অত্যন্ত প্রতিযোগিতামূলক MEV সুযোগের জন্য, যেমন [DEX আরবিট্রেজ](#mev-examples-dex-arbitrage), সার্চারদের তাদের মোট MEV আয়ের 90% বা তারও বেশি গ্যাস ফি হিসেবে ভ্যালিডেটর-কে দিতে হতে পারে কারণ অনেকেই একই লাভজনক আরবিট্রেজ ট্রেড চালাতে চায়। এর কারণ হলো তাদের আরবিট্রেজ লেনদেন চলবে তা নিশ্চিত করার একমাত্র উপায় হলো যদি তারা সর্বোচ্চ গ্যাস প্রাইস দিয়ে লেনদেন জমা দেয়।
-### গ্যাস গল্ফিং {#mev-extraction-gas-golfing}
+### গ্যাস গলফিং {#mev-extraction-gas-golfing}
-এই ডাইনামিকটি "গ্যাস গল্ফিং"-এ ভালো হওয়াকে - লেনদেনগুলিকে এমনভাবে প্রোগ্রামিং করা যাতে তারা সর্বনিম্ন পরিমাণ গ্যাস ব্যবহার করে - একটি প্রতিযোগিতামূলক সুবিধা তৈরি করেছে, কারণ এটি সার্চারদের তাদের মোট গ্যাস ফি স্থির রেখে একটি উচ্চতর গ্যাস মূল্য সেট করতে দেয় (যেহেতু গ্যাস ফি = গ্যাস মূল্য \* ব্যবহৃত গ্যাস)।
+এই গতিশীলতা "গ্যাস গলফিং"-এ দক্ষ হওয়াকে — লেনদেনগুলো এমনভাবে প্রোগ্রাম করা যাতে তারা সবচেয়ে কম পরিমাণ গ্যাস ব্যবহার করে — একটি প্রতিযোগিতামূলক সুবিধা করে তুলেছে, কারণ এটি সার্চারদের তাদের মোট গ্যাস ফি স্থির রেখে একটি উচ্চতর গ্যাস প্রাইস সেট করতে দেয় (যেহেতু গ্যাস ফি = গ্যাস প্রাইস \* ব্যবহৃত গ্যাস)।
-কিছু সুপরিচিত গ্যাস গল্ফ কৌশলের মধ্যে রয়েছে: শূন্যের দীর্ঘ স্ট্রিং দিয়ে শুরু হওয়া অ্যাড্রেস ব্যবহার করা (যেমন, [0x0000000000C521824EaFf97Eac7B73B084ef9306](https://eth.blockscout.com/address/0x0000000000C521824EaFf97Eac7B73B084ef9306)) কারণ সেগুলি সঞ্চয় করতে কম জায়গা (এবং তাই গ্যাস) নেয়; এবং চুক্তিতে ছোট [ERC-20](/developers/docs/standards/tokens/erc-20/) টোকেন ব্যালেন্স রেখে দেওয়া, কারণ একটি স্টোরেজ স্লট আপডেট করার চেয়ে একটি স্টোরেজ স্লট ইনিশিয়ালাইজ করতে (যদি ব্যালেন্স 0 হয়) বেশি গ্যাস খরচ হয়। গ্যাস ব্যবহার কমানোর জন্য আরও কৌশল খুঁজে বের করা সার্চারদের মধ্যে গবেষণার একটি সক্রিয় ক্ষেত্র।
+কয়েকটি সুপরিচিত গ্যাস গলফ কৌশলের মধ্যে রয়েছে: শূন্যের দীর্ঘ স্ট্রিং দিয়ে শুরু হওয়া এডড্রেস ব্যবহার করা (যেমন, [0x0000000000C521824EaFf97Eac7B73B084ef9306](https://eth.blockscout.com/address/0x0000000000C521824EaFf97Eac7B73B084ef9306)) কারণ এগুলো সংরক্ষণ করতে কম জায়গা (এবং তাই গ্যাস) নেয়; এবং চুক্তিতে ছোট [ERC-20](/developers/docs/standards/tokens/erc-20/) টোকেন ব্যালেন্স রেখে দেওয়া, কারণ একটি স্টোরেজ স্লট আপডেট করার চেয়ে এটি ইনিশিয়ালাইজ করতে (যদি ব্যালেন্স 0 হয়) বেশি গ্যাস খরচ হয়। গ্যাস ব্যবহার কমানোর জন্য আরও কৌশল খুঁজে বের করা সার্চারদের মধ্যে গবেষণার একটি সক্রিয় ক্ষেত্র।
-### জেনারেলাইজড ফ্রন্টরানার {#mev-extraction-generalized-frontrunners}
+### জেনারেলাইজড ফ্রন্টরানারস {#mev-extraction-generalized-frontrunners}
-লাভজনক MEV সুযোগ সনাক্ত করার জন্য জটিল অ্যালগরিদম প্রোগ্রামিং করার পরিবর্তে, কিছু সার্চার জেনারেলাইজড ফ্রন্টরানার চালায়। জেনারেলাইজড ফ্রন্টরানার হল এমন বট যা লাভজনক লেনদেন সনাক্ত করতে মেমপুল দেখে। ফ্রন্টরানার সম্ভাব্য লাভজনক লেনদেনের কোড কপি করবে, অ্যাড্রেসগুলিকে ফ্রন্টরানারের অ্যাড্রেস দিয়ে প্রতিস্থাপন করবে, এবং পরিবর্তিত লেনদেনটি ফ্রন্টরানারের অ্যাড্রেসে লাভ এনে দেয় কিনা তা দুবার পরীক্ষা করার জন্য স্থানীয়ভাবে লেনদেনটি চালাবে। যদি লেনদেনটি সত্যিই লাভজনক হয়, ফ্রন্টরানার পরিবর্তিত লেনদেনটি প্রতিস্থাপিত অ্যাড্রেস এবং একটি উচ্চতর গ্যাস মূল্য সহ জমা দেবে, মূল লেনদেনকে "ফ্রন্টরানিং" করবে এবং মূল সার্চারের MEV পাবে।
+লাভজনক MEV সুযোগগুলো শনাক্ত করতে জটিল এ্যালগরিদম প্রোগ্রাম করার পরিবর্তে, কিছু সার্চার জেনারেলাইজড ফ্রন্টরানার চালায়। জেনারেলাইজড ফ্রন্টরানার হলো এমন বট যা লাভজনক লেনদেন শনাক্ত করতে মেমপুল পর্যবেক্ষণ করে। ফ্রন্টরানার সম্ভাব্য লাভজনক লেনদেনের কোড কপি করবে, এডড্রেস-গুলো ফ্রন্টরানারের এডড্রেস দিয়ে প্রতিস্থাপন করবে এবং পরিবর্তিত লেনদেনটি ফ্রন্টরানারের এডড্রেস-এ লাভ নিয়ে আসে কিনা তা দুবার চেক করতে স্থানীয়ভাবে লেনদেনটি চালাবে। যদি লেনদেনটি সত্যিই লাভজনক হয়, তবে ফ্রন্টরানার প্রতিস্থাপিত এডড্রেস এবং উচ্চতর গ্যাস প্রাইস সহ পরিবর্তিত লেনদেনটি জমা দেবে, মূল লেনদেনটিকে "ফ্রন্টরানিং" করবে এবং মূল সার্চারের MEV পাবে।
-### ফ্ল্যাশবট {#mev-extraction-flashbots}
+### ফ্ল্যাশবটস {#mev-extraction-flashbots}
-ফ্ল্যাশবট হল একটি স্বাধীন প্রকল্প যা এক্সিকিউশন ক্লায়েন্টদের একটি পরিষেবা দিয়ে প্রসারিত করে যা সার্চারদের পাবলিক মেমপুলে প্রকাশ না করে ভ্যালিডেটরদের কাছে MEV লেনদেন জমা দেওয়ার অনুমতি দেয়। এটি লেনদেনগুলিকে জেনারেলাইজড ফ্রন্টরানারদের দ্বারা ফ্রন্টরান হওয়া থেকে বাধা দেয়।
+ফ্ল্যাশবটস (Flashbots) হলো একটি স্বাধীন প্রজেক্ট যা এক্সিকিউশন ক্লায়েন্ট-গুলোকে এমন একটি পরিষেবার সাথে প্রসারিত করে যা সার্চারদের পাবলিক মেমপুলে প্রকাশ না করেই ভ্যালিডেটরস-এর কাছে MEV লেনদেন জমা দিতে দেয়। এটি জেনারেলাইজড ফ্রন্টরানারদের দ্বারা লেনদেনগুলোকে ফ্রন্টরান হওয়া থেকে বাধা দেয়।
-## MEV উদাহরণ {#mev-examples}
+## MEV-এর উদাহরণ {#mev-examples}
-ব্লকচেইনে MEV কয়েকটি উপায়ে আবির্ভূত হয়।
+ব্লকচেইন-এ MEV কয়েকটি উপায়ে আবির্ভূত হয়।
### DEX আরবিট্রেজ {#mev-examples-dex-arbitrage}
-[ডিসেন্ট্রালাইজড এক্সচেঞ্জ](/glossary/#dex) (DEX) আরবিট্রেজ হল সবচেয়ে সহজ এবং সবচেয়ে পরিচিত MEV সুযোগ। ফলস্বরূপ, এটি সবচেয়ে প্রতিযোগিতামূলকও।
+[ডিসেন্ট্রালাইজড এক্সচেঞ্জ](/glossary/#dex) (DEX) আরবিট্রেজ হলো সবচেয়ে সহজ এবং সুপরিচিত MEV সুযোগ। ফলস্বরূপ, এটি সবচেয়ে প্রতিযোগিতামূলকও।
-এটি এইভাবে কাজ করে: যদি দুটি DEX দুটি ভিন্ন মূল্যে একটি টোকেন অফার করে, তবে কেউ কম মূল্যের DEX-এ টোকেনটি কিনতে পারে এবং এটিকে একটি একক, অ্যাটমিক লেনদেনে উচ্চ মূল্যের DEX-এ বিক্রি করতে পারে। ব্লকচেইনের মেকানিক্সের জন্য ধন্যবাদ, এটি সত্যিকারের, ঝুঁকিমুক্ত আরবিট্রেজ।
+এটি এভাবে কাজ করে: যদি দুটি DEX একটি টোকেন দুটি ভিন্ন দামে অফার করে, তবে কেউ কম দামের DEX-এ টোকেনটি কিনতে পারে এবং একটি একক, পারমাণবিক লেনদেনে বেশি দামের DEX-এ বিক্রি করতে পারে। ব্লকচেইন-এর মেকানিক্সের কারণে, এটি একটি সত্যিকারের, ঝুঁকিমুক্ত আরবিট্রেজ।
-[এখানে](https://eth.blockscout.com/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4) একটি লাভজনক আরবিট্রেজ লেনদেনের উদাহরণ যেখানে একজন সার্চার Uniswap বনাম Sushiswap-এ ETH/DAI পেয়ারের ভিন্ন মূল্যের সুবিধা নিয়ে 1,000 ETH কে 1,045 ETH-এ পরিণত করেছে।
+[এখানে একটি লাভজনক আরবিট্রেজ লেনদেনের উদাহরণ রয়েছে](https://eth.blockscout.com/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4) যেখানে একজন সার্চার Uniswap বনাম Sushiswap-এ ETH/DAI পেয়ারের ভিন্ন দামের সুযোগ নিয়ে 1,000 ETH-কে 1,045 ETH-এ পরিণত করেছে।
-### লিকুইডেশন {#mev-examples-liquidations}
+### লিকুইডেশনস {#mev-examples-liquidations}
-লেন্ডিং প্রোটোকল লিকুইডেশন আরেকটি সুপরিচিত MEV সুযোগ উপস্থাপন করে।
+লেন্ডিং প্রটোকল লিকুইডেশনস আরেকটি সুপরিচিত MEV সুযোগ উপস্থাপন করে।
-মেকার এবং অ্যাভের মতো লেন্ডিং প্রোটোকলগুলির জন্য ব্যবহারকারীদের কিছু কোল্যাটারাল (যেমন, ETH) জমা করতে হয়। এই জমাকৃত কোল্যাটারাল তারপর অন্য ব্যবহারকারীদের ধার দেওয়ার জন্য ব্যবহৃত হয়।
+Maker এবং Aave-এর মতো লেন্ডিং প্রটোকল-গুলোতে ব্যবহারকারীদের কিছু জামানত (যেমন, ETH) জমা দিতে হয়। এই জমাকৃত জামানত তারপর অন্যান্য ব্যবহারকারীদের ঋণ দিতে ব্যবহৃত হয়।
-ব্যবহারকারীরা তখন তাদের প্রয়োজনের উপর নির্ভর করে অন্যদের কাছ থেকে সম্পদ এবং টোকেন ধার করতে পারে (যেমন, আপনি যদি একটি MakerDAO গভর্নেন্স প্রস্তাবে ভোট দিতে চান তবে আপনি MKR ধার করতে পারেন) তাদের জমাকৃত কোল্যাটারালের একটি নির্দিষ্ট শতাংশ পর্যন্ত। উদাহরণস্বরূপ, যদি ধার করার পরিমাণ সর্বোচ্চ ৩০% হয়, একজন ব্যবহারকারী যিনি প্রোটোকলে ১০০ DAI জমা দেন তিনি অন্য একটি সম্পদের ৩০ DAI মূল্যের পর্যন্ত ধার করতে পারেন। প্রোটোকলটি সঠিক ধার করার ক্ষমতার শতাংশ নির্ধারণ করে।
+ব্যবহারকারীরা তারপর তাদের প্রয়োজনের উপর নির্ভর করে অন্যদের কাছ থেকে সম্পদ এবং টোকেন ধার করতে পারে (যেমন, আপনি যদি MakerDAO গভর্নেন্স প্রস্তাবে ভোট দিতে চান তবে আপনি MKR ধার করতে পারেন) তাদের জমাকৃত জামানতের একটি নির্দিষ্ট শতাংশ পর্যন্ত। উদাহরণস্বরূপ, যদি ধারের পরিমাণ সর্বোচ্চ 30% হয়, তবে যে ব্যবহারকারী প্রটোকল-এ 100 DAI জমা দেয় সে অন্য সম্পদের 30 DAI মূল্য পর্যন্ত ধার করতে পারে। প্রটোকল সঠিক ঋণ নেওয়ার ক্ষমতার শতাংশ নির্ধারণ করে।
-একজন ঋণগ্রহীতার কোল্যাটারালের মূল্য যেমন ওঠানামা করে, তেমনি তাদের ধার করার ক্ষমতাও ওঠানামা করে। যদি, বাজারের ওঠানামার কারণে, ধার করা সম্পদের মূল্য তাদের কোল্যাটারালের মূল্যের ৩০% অতিক্রম করে (আবার, সঠিক শতাংশ প্রোটোকল দ্বারা নির্ধারিত হয়), প্রোটোকলটি সাধারণত যে কাউকে কোল্যাটারাল লিকুইডেট করার অনুমতি দেয়, সঙ্গে সঙ্গে ঋণদাতাদের পরিশোধ করে (এটি ঐতিহ্যবাহী অর্থায়নে [মার্জিন কল](https://www.investopedia.com/terms/m/margincall.asp) কীভাবে কাজ করে তার অনুরূপ)। লিকুইডেট হলে, ঋণগ্রহীতাকে সাধারণত একটি মোটা লিকুইডেশন ফি দিতে হয়, যার কিছু অংশ লিকুইডেটরের কাছে যায় - এখানেই MEV সুযোগ আসে।
+ঋণগ্রহীতার জামানতের মান ওঠানামা করার সাথে সাথে তাদের ঋণ নেওয়ার ক্ষমতাও ওঠানামা করে। যদি, বাজারের ওঠানামার কারণে, ধার করা সম্পদের মান তাদের জামানতের মানের 30% ছাড়িয়ে যায় (আবার, সঠিক শতাংশ প্রটোকল দ্বারা নির্ধারিত হয়), প্রটোকল সাধারণত যে কাউকে জামানত লিকুইডেট করার অনুমতি দেয়, তাৎক্ষণিকভাবে ঋণদাতাদের অর্থ প্রদান করে (এটি প্রথাগত অর্থায়নে [মার্জিন কল](https://www.investopedia.com/terms/m/margincall.asp) কীভাবে কাজ করে তার অনুরূপ)। লিকুইডেট করা হলে, ঋণগ্রহীতাকে সাধারণত একটি মোটা লিকুইডেশন ফি দিতে হয়, যার কিছু অংশ লিকুইডেটরের কাছে যায় — আর এখানেই MEV সুযোগ আসে।
-সার্চাররা যত দ্রুত সম্ভব ব্লকচেইন ডেটা পার্স করার জন্য প্রতিযোগিতা করে তা নির্ধারণ করতে যে কোন ঋণগ্রহীতাদের লিকুইডেট করা যেতে পারে এবং একটি লিকুইডেশন লেনদেন জমা দেওয়ার জন্য প্রথম হতে এবং নিজেদের জন্য লিকুইডেশন ফি সংগ্রহ করতে।
+কোন ঋণগ্রহীতাদের লিকুইডেট করা যেতে পারে তা নির্ধারণ করতে এবং লিকুইডেশন লেনদেন জমা দেওয়ার প্রথম ব্যক্তি হতে এবং নিজেদের জন্য লিকুইডেশন ফি সংগ্রহ করতে সার্চাররা যত দ্রুত সম্ভব ব্লকচেইন ডেটা পার্স করার জন্য প্রতিযোগিতা করে।
### স্যান্ডউইচ ট্রেডিং {#mev-examples-sandwich-trading}
-স্যান্ডউইচ ট্রেডিং MEV এক্সট্র্যাকশনের আরেকটি সাধারণ পদ্ধতি।
+স্যান্ডউইচ ট্রেডিং হলো MEV এক্সট্রাকশনের আরেকটি সাধারণ পদ্ধতি।
-স্যান্ডউইচ করতে, একজন সার্চার বড় DEX ট্রেডের জন্য মেমপুল দেখবে। উদাহরণস্বরূপ, ধরুন কেউ Uniswap-এ DAI দিয়ে ১০,০০০ UNI কিনতে চায়। এই মাত্রার একটি ট্রেড UNI/DAI পেয়ারে একটি অর্থপূর্ণ প্রভাব ফেলবে, যা সম্ভাব্যভাবে DAI-এর তুলনায় UNI-এর দাম উল্লেখযোগ্যভাবে বাড়িয়ে দেবে।
+স্যান্ডউইচ করার জন্য, একজন সার্চার বড় DEX ট্রেডের জন্য মেমপুল পর্যবেক্ষণ করবে। উদাহরণস্বরূপ, ধরুন কেউ Uniswap-এ DAI দিয়ে 10,000 UNI কিনতে চায়। এই মাত্রার একটি ট্রেড UNI/DAI পেয়ারের উপর একটি অর্থপূর্ণ প্রভাব ফেলবে, যা সম্ভাব্যভাবে DAI-এর তুলনায় UNI-এর দাম উল্লেখযোগ্যভাবে বাড়িয়ে তুলবে।
-একজন সার্চার UNI/DAI পেয়ারে এই বড় ট্রেডের আনুমানিক মূল্য প্রভাব গণনা করতে পারে এবং বড় ট্রেডের ঠিক _আগে_ একটি সর্বোত্তম বাই অর্ডার এক্সিকিউট করতে পারে, সস্তায় UNI কিনে, তারপর বড় ট্রেডের ঠিক _পরে_ একটি সেল অর্ডার এক্সিকিউট করতে পারে, বড় অর্ডারের কারণে সৃষ্ট উচ্চ মূল্যে এটি বিক্রি করে।
+একজন সার্চার UNI/DAI পেয়ারের উপর এই বড় ট্রেডের আনুমানিক মূল্যের প্রভাব গণনা করতে পারে এবং বড় ট্রেডের ঠিক _আগে_ একটি সর্বোত্তম বাই অর্ডার এক্সিকিউট করতে পারে, সস্তায় UNI কিনতে পারে, তারপর বড় ট্রেডের ঠিক _পরে_ একটি সেল অর্ডার এক্সিকিউট করতে পারে, বড় অর্ডারের কারণে সৃষ্ট উচ্চ মূল্যে এটি বিক্রি করতে পারে।
-স্যান্ডউইচিং, তবে, আরও ঝুঁকিপূর্ণ কারণ এটি অ্যাটমিক নয় (উপরে বর্ণিত DEX আরবিট্রেজের মতো নয়) এবং এটি একটি [সালমোনেলা অ্যাটাক](https://github.com/Defi-Cartel/salmonella)-এর জন্য প্রবণ।
+তবে, স্যান্ডউইচিং বেশি ঝুঁকিপূর্ণ কারণ এটি পারমাণবিক নয় (উপরে বর্ণিত DEX আরবিট্রেজের বিপরীতে) এবং এটি একটি [সালমোনেলা এ্যাটাক](https://github.com/Defi-Cartel/salmonella)-এর প্রবণ।
### NFT MEV {#mev-examples-nfts}
NFT স্পেসে MEV একটি উদীয়মান ঘটনা, এবং এটি অগত্যা লাভজনক নয়।
-তবে, যেহেতু NFT লেনদেনগুলি অন্য সমস্ত Ethereum লেনদেন দ্বারা শেয়ার করা একই ব্লকচেইনে ঘটে, তাই সার্চাররা NFT বাজারে ঐতিহ্যবাহী MEV সুযোগগুলিতে ব্যবহৃত কৌশলগুলির মতো একই কৌশল ব্যবহার করতে পারে।
+তবে, যেহেতু NFT লেনদেনগুলো অন্যান্য সমস্ত Ethereum লেনদেনের দ্বারা শেয়ার করা একই ব্লকচেইন-এ ঘটে, তাই সার্চাররা NFT মার্কেটেও প্রথাগত MEV সুযোগগুলোতে ব্যবহৃত কৌশলগুলোর মতো একই কৌশল ব্যবহার করতে পারে।
-উদাহরণস্বরূপ, যদি একটি জনপ্রিয় NFT ড্রপ থাকে এবং একজন সার্চার একটি নির্দিষ্ট NFT বা NFT-এর সেট চায়, তবে তারা এমনভাবে একটি লেনদেন প্রোগ্রাম করতে পারে যাতে তারা NFT কেনার জন্য লাইনে প্রথম থাকে, অথবা তারা একটি একক লেনদেনে NFT-এর পুরো সেটটি কিনতে পারে। অথবা যদি একটি NFT [ভুলবশত কম দামে তালিকাভুক্ত হয়](https://www.theblockcrypto.com/post/113546/mistake-sees-69000-cryptopunk-sold-for-less-than-a-cent), একজন সার্চার অন্য ক্রেতাদের ফ্রন্টরান করতে পারে এবং সস্তায় এটি তুলে নিতে পারে।
+উদাহরণস্বরূপ, যদি একটি জনপ্রিয় NFT ড্রপ থাকে এবং একজন সার্চার একটি নির্দিষ্ট NFT বা NFT-এর সেট চায়, তবে তারা এমন একটি লেনদেন প্রোগ্রাম করতে পারে যাতে তারা NFT কেনার জন্য লাইনে প্রথম হয়, অথবা তারা একটি একক লেনদেনে NFT-এর সম্পূর্ণ সেট কিনতে পারে। অথবা যদি একটি NFT [ভুলবশত কম দামে তালিকাভুক্ত হয়](https://www.theblockcrypto.com/post/113546/mistake-sees-69000-cryptopunk-sold-for-less-than-a-cent), তবে একজন সার্চার অন্যান্য ক্রেতাদের ফ্রন্টরান করতে পারে এবং এটি সস্তায় কিনে নিতে পারে।
-NFT MEV-এর একটি বিশিষ্ট উদাহরণ ঘটেছিল যখন একজন সার্চার ফ্লোর প্রাইসে প্রতিটি ক্রিপ্টোপাঙ্ক [কিনতে](https://eth.blockscout.com/address/0x650dCdEB6ecF05aE3CAF30A70966E2F395d5E9E5?tab=txs) ৭ মিলিয়ন ডলার খরচ করেছিল। একজন ব্লকচেইন গবেষক [টুইটারে ব্যাখ্যা করেছেন](https://twitter.com/IvanBogatyy/status/1422232184493121538) কিভাবে ক্রেতা তাদের কেনাকাটা গোপন রাখতে একজন MEV প্রদানকারীর সাথে কাজ করেছিল।
+NFT MEV-এর একটি বিশিষ্ট উদাহরণ ঘটেছিল যখন একজন সার্চার প্রাইস ফ্লোরে প্রতিটি ক্রিপ্টোপাঙ্ক (Cryptopunk) [কিনতে](https://eth.blockscout.com/address/0x650dCdEB6ecF05aE3CAF30A70966E2F395d5E9E5?tab=txs) $7 মিলিয়ন খরচ করেছিল। একজন ব্লকচেইন গবেষক [টুইটারে ব্যাখ্যা করেছেন](https://twitter.com/IvanBogatyy/status/1422232184493121538) কীভাবে ক্রেতা তাদের কেনাকাটা গোপন রাখতে একজন MEV প্রদানকারীর সাথে কাজ করেছিল।
### দ্য লং টেইল {#mev-examples-long-tail}
-DEX আরবিট্রেজ, লিকুইডেশন এবং স্যান্ডউইচ ট্রেডিং সবই খুব পরিচিত MEV সুযোগ এবং নতুন সার্চারদের জন্য লাভজনক হওয়ার সম্ভাবনা কম। তবে, কম পরিচিত MEV সুযোগের একটি দীর্ঘ তালিকা রয়েছে (NFT MEV তর্কসাপেক্ষে এমনই একটি সুযোগ)।
+DEX আরবিট্রেজ, লিকুইডেশনস এবং স্যান্ডউইচ ট্রেডিং সবই খুব সুপরিচিত MEV সুযোগ এবং নতুন সার্চারদের জন্য লাভজনক হওয়ার সম্ভাবনা কম। তবে, কম পরিচিত MEV সুযোগগুলোর একটি দীর্ঘ লেজ (long tail) রয়েছে (NFT MEV যুক্তিযুক্তভাবে এমনই একটি সুযোগ)।
-যারা সবে শুরু করছেন সেই সার্চাররা এই দীর্ঘ তালিকায় MEV অনুসন্ধান করে আরও সাফল্য পেতে সক্ষম হতে পারেন। ফ্ল্যাশবটের [MEV জব বোর্ড](https://github.com/flashbots/mev-job-board) কিছু উদীয়মান সুযোগ তালিকাভুক্ত করে।
+যে সার্চাররা সবেমাত্র শুরু করছেন তারা এই দীর্ঘ লেজে MEV অনুসন্ধান করে আরও সাফল্য পেতে পারেন। ফ্ল্যাশবটসের [MEV জব বোর্ড](https://github.com/flashbots/mev-job-board) কিছু উদীয়মান সুযোগ তালিকাভুক্ত করে।
## MEV-এর প্রভাব {#effects-of-mev}
-MEV সব খারাপ নয় — Ethereum-এ MEV-এর ইতিবাচক এবং নেতিবাচক উভয় পরিণতি রয়েছে।
+MEV পুরোপুরি খারাপ নয় — Ethereum-এ MEV-এর ইতিবাচক এবং নেতিবাচক উভয় পরিণতি রয়েছে।
### ভালো দিক {#effects-of-mev-the-good}
-অনেক ডিফাই প্রকল্প তাদের প্রোটোকলের উপযোগিতা এবং স্থিতিশীলতা নিশ্চিত করতে অর্থনৈতিকভাবে যুক্তিসঙ্গত অভিনেতাদের উপর নির্ভর করে। উদাহরণস্বরূপ, DEX আরবিট্রেজ নিশ্চিত করে যে ব্যবহারকারীরা তাদের টোকেনের জন্য সেরা, সবচেয়ে সঠিক মূল্য পায়, এবং ঋণদাতাদের পরিশোধ করা নিশ্চিত করতে লেন্ডিং প্রোটোকলগুলি দ্রুত লিকুইডেশনের উপর নির্ভর করে যখন ঋণগ্রহীতারা কোল্যাটার্যালাইজেশন অনুপাতের নিচে নেমে যায়।
+অনেক DeFi প্রজেক্ট তাদের প্রটোকল-গুলোর উপযোগিতা এবং স্থিতিশীলতা নিশ্চিত করতে অর্থনৈতিকভাবে যুক্তিসঙ্গত অভিনেতাদের উপর নির্ভর করে। উদাহরণস্বরূপ, DEX আরবিট্রেজ নিশ্চিত করে যে ব্যবহারকারীরা তাদের টোকেন-গুলোর জন্য সেরা, সবচেয়ে সঠিক দাম পায় এবং ঋণগ্রহীতারা যখন জামানত অনুপাতের নিচে নেমে যায় তখন ঋণদাতারা তাদের অর্থ ফেরত পায় তা নিশ্চিত করতে লেন্ডিং প্রটোকল-গুলো দ্রুত লিকুইডেশনস-এর উপর নির্ভর করে।
-অর্থনৈতিক অদক্ষতা খোঁজা এবং ঠিক করা এবং প্রোটোকলের অর্থনৈতিক প্রণোদনার সুবিধা নেওয়া যুক্তিসঙ্গত সার্চার ছাড়া, ডিফাই প্রোটোকল এবং সাধারণভাবে ডিঅ্যাপসগুলি আজকের মতো শক্তিশালী নাও হতে পারে।
+যুক্তিসঙ্গত সার্চাররা অর্থনৈতিক অদক্ষতাগুলো অনুসন্ধান এবং সংশোধন না করলে এবং প্রটোকল-গুলোর অর্থনৈতিক প্রণোদনার সুবিধা না নিলে, সাধারণভাবে DeFi প্রটোকল এবং ডিএ্যাপস আজকের মতো শক্তিশালী নাও হতে পারে।
### খারাপ দিক {#effects-of-mev-the-bad}
-অ্যাপ্লিকেশন লেয়ারে, MEV-এর কিছু রূপ, যেমন স্যান্ডউইচ ট্রেডিং, ব্যবহারকারীদের জন্য নিঃসন্দেহে একটি খারাপ অভিজ্ঞতার কারণ হয়। যেসব ব্যবহারকারীরা স্যান্ডউইচের শিকার হন তারা তাদের ট্রেডে বর্ধিত স্লিপেজ এবং খারাপ এক্সিকিউশনের সম্মুখীন হন।
+এ্যাপ্লিকেশন লেয়ারে, স্যান্ডউইচ ট্রেডিংয়ের মতো কিছু ধরণের MEV ব্যবহারকারীদের জন্য একটি দ্ব্যর্থহীনভাবে খারাপ অভিজ্ঞতার দিকে নিয়ে যায়। যে ব্যবহারকারীরা স্যান্ডউইচড হন তারা তাদের ট্রেডে বর্ধিত স্লিপেজ এবং খারাপ এক্সিকিউশনের সম্মুখীন হন।
-নেটওয়ার্ক লেয়ারে, জেনারেলাইজড ফ্রন্টরানার এবং তারা যে গ্যাস-মূল্যের নিলামে প্রায়ই অংশ নেয় (যখন দুই বা ততোধিক ফ্রন্টরানার তাদের লেনদেনকে পরবর্তী ব্লকে অন্তর্ভুক্ত করার জন্য তাদের নিজস্ব লেনদেনের গ্যাস মূল্য ক্রমাগত বাড়িয়ে প্রতিযোগিতা করে) তার ফলে নেটওয়ার্ক কনজেশন এবং অন্য সবার জন্য যারা সাধারণ লেনদেন চালানোর চেষ্টা করছে তাদের জন্য উচ্চ গ্যাস মূল্য হয়।
+নেটওয়ার্ক লেয়ারে, জেনারেলাইজড ফ্রন্টরানাররা এবং তারা প্রায়শই যে গ্যাস-প্রাইস নিলামে জড়িত থাকে (যখন দুই বা ততোধিক ফ্রন্টরানার তাদের নিজস্ব লেনদেনের গ্যাস প্রাইস ক্রমান্বয়ে বাড়িয়ে পরবর্তী ব্লকে তাদের লেনদেন অন্তর্ভুক্ত করার জন্য প্রতিযোগিতা করে) তার ফলে নেটওয়ার্ক কনজেশন হয় এবং নিয়মিত লেনদেন চালানোর চেষ্টা করা অন্য সবার জন্য উচ্চ গ্যাস প্রাইস হয়।
-ব্লকের _ভিতরে_ যা ঘটছে তার বাইরেও, MEV ব্লকের _মধ্যে_ ক্ষতিকর প্রভাব ফেলতে পারে। যদি একটি ব্লকে উপলব্ধ MEV স্ট্যান্ডার্ড ব্লক রিওয়ার্ডকে উল্লেখযোগ্যভাবে ছাড়িয়ে যায়, তাহলে ভ্যালিডেটররা ব্লক রিঅর্গানাইজ করতে এবং নিজেদের জন্য MEV ক্যাপচার করতে উৎসাহিত হতে পারে, যার ফলে ব্লকচেইন রিঅর্গানাইজেশন এবং কনসেন্সাস অস্থিতিশীলতা দেখা দেয়।
+ব্লকস-এর _ভিতরে_ যা ঘটছে তার বাইরে, ব্লকস-এর _মধ্যে_ MEV-এর ক্ষতিকারক প্রভাব থাকতে পারে। যদি একটি ব্লকে উপলব্ধ MEV স্ট্যান্ডার্ড ব্লক রিওয়ার্ড-কে উল্লেখযোগ্যভাবে ছাড়িয়ে যায়, তবে ভ্যালিডেটরস ব্লকগুলো রিঅর্গানাইজ করতে এবং নিজেদের জন্য MEV ক্যাপচার করতে উৎসাহিত হতে পারে, যার ফলে ব্লকচেইন রি-অর্গানাইজেশন এবং কনসেন্সাস অস্থিতিশীলতা দেখা দেয়।
-ব্লকচেইন রিঅর্গানাইজেশনের এই সম্ভাবনা [পূর্বে বিটকয়েন ব্লকচেইনে অন্বেষণ করা হয়েছে](https://dl.acm.org/doi/10.1145/2976749.2978408)। যেহেতু বিটকয়েনের ব্লক রিওয়ার্ড অর্ধেক হয়ে যায় এবং লেনদেন ফি ব্লক রিওয়ার্ডের একটি বৃহত্তর এবং বৃহত্তর অংশ তৈরি করে, এমন পরিস্থিতি দেখা দেয় যেখানে মাইনারদের জন্য পরবর্তী ব্লকের রিওয়ার্ড ছেড়ে দেওয়া এবং পরিবর্তে উচ্চতর ফি সহ অতীতের ব্লকগুলি রিমাইন করা অর্থনৈতিকভাবে যুক্তিসঙ্গত হয়ে ওঠে। MEV-এর বৃদ্ধির সাথে সাথে, Ethereum-এও একই ধরণের পরিস্থিতি ঘটতে পারে, যা ব্লকচেইনের অখণ্ডতাকে হুমকির মুখে ফেলবে।
+ব্লকচেইন রি-অর্গানাইজেশনের এই সম্ভাবনা [আগে বিটকয়েন ব্লকচেইন-এ অন্বেষণ করা হয়েছে](https://dl.acm.org/doi/10.1145/2976749.2978408)। যেহেতু বিটকয়েনের ব্লক রিওয়ার্ড অর্ধেক হয়ে যায় এবং ট্রানজেকশন ফি ব্লক রিওয়ার্ড-এর একটি বৃহত্তর অংশ তৈরি করে, এমন পরিস্থিতির উদ্ভব হয় যেখানে মাইনারদের জন্য পরবর্তী ব্লকের পুরষ্কার ছেড়ে দেওয়া এবং এর পরিবর্তে উচ্চ ফি সহ অতীতের ব্লকগুলো পুনরায় মাইন করা অর্থনৈতিকভাবে যুক্তিসঙ্গত হয়ে ওঠে। MEV-এর বৃদ্ধির সাথে সাথে, Ethereum-এ একই ধরণের পরিস্থিতি ঘটতে পারে, যা ব্লকচেইন-এর অখণ্ডতাকে হুমকির মুখে ফেলতে পারে।
## MEV-এর অবস্থা {#state-of-mev}
-২০২১ সালের শুরুতে MEV এক্সট্র্যাকশন ব্যাপকভাবে বৃদ্ধি পায়, যার ফলে বছরের প্রথম কয়েক মাসে অত্যন্ত উচ্চ গ্যাস মূল্য দেখা যায়। ফ্ল্যাশবটের MEV রিলে-এর উত্থান জেনারেলাইজড ফ্রন্টরানারদের কার্যকারিতা হ্রাস করেছে এবং গ্যাস মূল্যের নিলাম অফচেইনে নিয়ে গেছে, যা সাধারণ ব্যবহারকারীদের জন্য গ্যাস মূল্য কমিয়েছে।
+2021 সালের শুরুর দিকে MEV এক্সট্রাকশন ফুলেফেঁপে ওঠে, যার ফলে বছরের প্রথম কয়েক মাসে অত্যন্ত উচ্চ গ্যাস প্রাইস দেখা দেয়। ফ্ল্যাশবটসের MEV রিলে-এর উত্থান জেনারেলাইজড ফ্রন্টরানারদের কার্যকারিতা হ্রাস করেছে এবং গ্যাস প্রাইস নিলামকে অফচেইন নিয়ে গেছে, যা সাধারণ ব্যবহারকারীদের জন্য গ্যাস প্রাইস কমিয়েছে।
-যদিও অনেক সার্চার এখনও MEV থেকে ভালো অর্থ উপার্জন করছে, সুযোগগুলি আরও পরিচিত হওয়ার সাথে সাথে এবং আরও বেশি সার্চার একই সুযোগের জন্য প্রতিযোগিতা করার সাথে সাথে, ভ্যালিডেটররা আরও বেশি মোট MEV আয় ক্যাপচার করবে (কারণ মূলত উপরে বর্ণিত একই ধরণের গ্যাস নিলাম ফ্ল্যাশবটেও ঘটে, যদিও ব্যক্তিগতভাবে, এবং ভ্যালিডেটররা ফলস্বরূপ গ্যাস আয় ক্যাপচার করবে)। MEV শুধুমাত্র Ethereum-এর জন্য অনন্য নয়, এবং Ethereum-এ সুযোগগুলি আরও প্রতিযোগিতামূলক হওয়ার সাথে সাথে সার্চাররা Binance Smart Chain-এর মতো বিকল্প ব্লকচেইনে চলে যাচ্ছে, যেখানে Ethereum-এর মতো একই রকম MEV সুযোগ কম প্রতিযোগিতা সহ বিদ্যমান।
+যদিও অনেক সার্চার এখনও MEV থেকে ভালো অর্থ উপার্জন করছে, সুযোগগুলো আরও সুপরিচিত হওয়ার সাথে সাথে এবং আরও বেশি সংখ্যক সার্চার একই সুযোগের জন্য প্রতিযোগিতা করার কারণে, ভ্যালিডেটরস আরও বেশি মোট MEV আয় ক্যাপচার করবে (কারণ উপরে বর্ণিত একই ধরণের গ্যাস নিলাম ফ্ল্যাশবটসেও ঘটে, যদিও ব্যক্তিগতভাবে, এবং ভ্যালিডেটরস ফলস্বরূপ গ্যাস আয় ক্যাপচার করবে)। MEV শুধুমাত্র Ethereum-এর জন্য অনন্য নয়, এবং Ethereum-এ সুযোগগুলো আরও প্রতিযোগিতামূলক হওয়ার সাথে সাথে, সার্চাররা Binance Smart Chain-এর মতো বিকল্প ব্লকচেইন-গুলোতে চলে যাচ্ছে, যেখানে কম প্রতিযোগিতার সাথে Ethereum-এর মতো একই MEV সুযোগ বিদ্যমান।
-অন্যদিকে, প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেকে রূপান্তর এবং রোলআপ ব্যবহার করে Ethereum স্কেল করার চলমান প্রচেষ্টা সবই MEV ল্যান্ডস্কেপকে এমনভাবে পরিবর্তন করে যা এখনও কিছুটা অস্পষ্ট। প্রুফ-অফ-ওয়ার্কের সম্ভাব্যতা মডেলের তুলনায় সামান্য আগে থেকে পরিচিত গ্যারান্টিযুক্ত ব্লক-প্রস্তাবকদের থাকা MEV এক্সট্র্যাকশনের গতিশীলতাকে কীভাবে পরিবর্তন করে বা যখন [একক গোপন নেতা নির্বাচন](https://ethresear.ch/t/secret-non-single-leader-election/11789) এবং [ডিস্ট্রিবিউটেড ভ্যালিডেটর প্রযুক্তি](/staking/dvt/) প্রয়োগ করা হবে তখন এটি কীভাবে ব্যাহত হবে তা এখনও ভালভাবে জানা যায়নি। একইভাবে, যখন বেশিরভাগ ব্যবহারকারী কার্যকলাপ Ethereum থেকে এবং এর লেয়ার 2 রোলআপ এবং শার্ডগুলিতে স্থানান্তরিত হয় তখন কী MEV সুযোগ বিদ্যমান থাকে তা এখনও দেখা বাকি।
+অন্যদিকে, প্রুফ-অফ-ওয়ার্ক থেকে প্রুফ-অফ-স্টেক-এ রূপান্তর এবং রেলআপস ব্যবহার করে Ethereum-কে স্কেল করার চলমান প্রচেষ্টা সবই MEV ল্যান্ডস্কেপকে এমনভাবে পরিবর্তন করে যা এখনও কিছুটা অস্পষ্ট। এটি এখনও ভালোভাবে জানা যায়নি যে সামান্য আগে থেকে পরিচিত গ্যারান্টিযুক্ত ব্লক প্রপোজার থাকা প্রুফ-অফ-ওয়ার্ক-এর সম্ভাব্য মডেলের তুলনায় MEV এক্সট্রাকশনের গতিশীলতাকে কীভাবে পরিবর্তন করে বা যখন [সিঙ্গেল সিক্রেট লিডার ইলেকশন](https://ethresear.ch/t/secret-non-single-leader-election/11789) এবং [ডিস্ট্রিবিউটেড ভ্যালিডেটর প্রযুক্তি](/staking/dvt/) বাস্তবায়িত হবে তখন এটি কীভাবে ব্যাহত হবে। একইভাবে, এটি দেখার বিষয় যে যখন বেশিরভাগ ব্যবহারকারীর কার্যকলাপ Ethereum থেকে দূরে এবং এর লেয়ার ২ রেলআপস এবং শার্ডগুলোতে পোর্ট করা হয় তখন কী MEV সুযোগ বিদ্যমান থাকে।
-## Ethereum প্রুফ-অফ-স্টেক (PoS)-এ MEV {#mev-in-ethereum-proof-of-stake}
+## ইথিরিয়াম প্রুফ-অফ-স্টেক (PoS)-এ MEV {#mev-in-ethereum-proof-of-stake}
-যেমনটি ব্যাখ্যা করা হয়েছে, সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা এবং কনসেন্সাস-লেয়ার সুরক্ষার জন্য MEV-এর নেতিবাচক প্রভাব রয়েছে। কিন্তু Ethereum-এর একটি প্রুফ-অফ-স্টেক কনসেন্সাসে রূপান্তর ("দ্য মার্জ" নামে পরিচিত) সম্ভাব্যভাবে নতুন MEV-সম্পর্কিত ঝুঁকি তৈরি করে:
+যেমনটি ব্যাখ্যা করা হয়েছে, সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা এবং কনসেন্সাস লেয়ার নিরাপত্তার জন্য MEV-এর নেতিবাচক প্রভাব রয়েছে। কিন্তু একটি প্রুফ-অফ-স্টেক কনসেন্সাস-এ Ethereum-এর রূপান্তর (যাকে "The Merge" বলা হয়) সম্ভাব্যভাবে নতুন MEV-সম্পর্কিত ঝুঁকি প্রবর্তন করে:
### ভ্যালিডেটর সেন্ট্রালাইজেশন {#validator-centralization}
-মার্জ-পরবর্তী Ethereum-এ, ভ্যালিডেটররা (32 ETH-এর নিরাপত্তা আমানত করার পর) বিকন চেইনে যোগ করা ব্লকের বৈধতার উপর কনসেন্সাসে আসে। যেহেতু 32 ETH অনেকের নাগালের বাইরে হতে পারে, তাই [একটি স্টেকিং পুলে যোগদান করা](/staking/pools/) একটি আরও সম্ভাব্য বিকল্প হতে পারে। তবুও, [সোলো স্টেকারদের](/staking/solo/) একটি স্বাস্থ্যকর বন্টন আদর্শ, কারণ এটি ভ্যালিডেটরদের সেন্ট্রালাইজেশন প্রশমিত করে এবং Ethereum-এর নিরাপত্তা উন্নত করে।
+মার্জ-পরবর্তী Ethereum-এ, ভ্যালিডেটরস (32 ETH-এর নিরাপত্তা আমানত করে) বিকন চেইন-এ যোগ করা ব্লকস-এর বৈধতার বিষয়ে কনসেন্সাস-এ আসে। যেহেতু 32 ETH অনেকের নাগালের বাইরে হতে পারে, তাই [একটি স্টেকিং পুল-এ যোগদান করা](/staking/pools/) আরও সম্ভাব্য বিকল্প হতে পারে। তা সত্ত্বেও, [সোলো স্টেকার](/staking/solo/)-দের একটি স্বাস্থ্যকর বন্টন আদর্শ, কারণ এটি ভ্যালিডেটরস-এর সেন্ট্রালাইজেশন হ্রাস করে এবং Ethereum-এর নিরাপত্তা উন্নত করে।
-তবে, বিশ্বাস করা হয় যে MEV এক্সট্র্যাকশন ভ্যালিডেটর সেন্ট্রালাইজেশন ত্বরান্বিত করতে সক্ষম। এর আংশিক কারণ হল, যেহেতু ভ্যালিডেটররা মাইনারদের আগের তুলনায় [ব্লক প্রস্তাব করার জন্য কম উপার্জন করে](/roadmap/merge/issuance/#how-the-merge-impacts-ETH-supply), MEV এক্সট্র্যাকশন [দ্য মার্জ](/roadmap/merge/) থেকে ভ্যালিডেটরদের উপার্জন ব্যাপকভাবে [প্রভাবিত করেছে](https://github.com/flashbots/eth2-research/blob/main/notebooks/mev-in-eth2/eth2-mev-calc.ipynb)।
+তবে, MEV এক্সট্রাকশন ভ্যালিডেটর সেন্ট্রালাইজেশনকে ত্বরান্বিত করতে সক্ষম বলে মনে করা হয়। এটি আংশিকভাবে কারণ, যেহেতু ভ্যালিডেটরস পূর্বে মাইনারদের তুলনায় [ব্লক প্রস্তাব করার জন্য কম উপার্জন করে](/roadmap/merge/issuance/#how-the-merge-impacts-ETH-supply), তাই [The Merge](/roadmap/merge/)-এর পর থেকে MEV এক্সট্রাকশন ব্যাপকভাবে [ভ্যালিডেটর উপার্জনকে প্রভাবিত করেছে](https://github.com/flashbots/eth2-research/blob/main/notebooks/mev-in-eth2/eth2-mev-calc.ipynb)।
-বৃহত্তর স্টেকিং পুলগুলির MEV সুযোগগুলি ক্যাপচার করার জন্য প্রয়োজনীয় অপ্টিমাইজেশনে বিনিয়োগ করার জন্য সম্ভবত আরও বেশি রিসোর্স থাকবে। এই পুলগুলি যত বেশি MEV এক্সট্র্যাক্ট করবে, তাদের MEV-এক্সট্র্যাকশন ক্ষমতা উন্নত করার জন্য (এবং সামগ্রিক রাজস্ব বাড়ানোর জন্য) তাদের তত বেশি রিসোর্স থাকবে, যা মূলত [ইকোনমিক্স অফ স্কেল](https://www.investopedia.com/terms/e/economiesofscale.asp#) তৈরি করে।
+বৃহত্তর স্টেকিং পুল-গুলোর সম্ভবত MEV সুযোগগুলো ক্যাপচার করার জন্য প্রয়োজনীয় অপ্টিমাইজেশনে বিনিয়োগ করার জন্য আরও সংস্থান থাকবে। এই পুলগুলো যত বেশি MEV এক্সট্রাক্ট করবে, তাদের MEV-এক্সট্রাকশন ক্ষমতা উন্নত করার (এবং সামগ্রিক আয় বাড়ানোর) জন্য তাদের তত বেশি সংস্থান থাকবে, যা মূলত [ইকোনোমিকস অফ স্কেল](https://www.investopedia.com/terms/e/economiesofscale.asp#) তৈরি করবে।
-তাদের হাতে কম রিসোর্স থাকায়, সোলো স্টেকাররা MEV সুযোগ থেকে লাভ করতে অক্ষম হতে পারে। এটি স্বাধীন ভ্যালিডেটরদের উপর তাদের আয় বাড়াতে শক্তিশালী স্টেকিং পুলগুলিতে যোগদানের জন্য চাপ বাড়াতে পারে, যা Ethereum-এ ডিসেন্ট্রালাইজেশন হ্রাস করে।
+তাদের নিষ্পত্তিতে কম সংস্থান থাকায়, সোলো স্টেকাররা MEV সুযোগগুলো থেকে লাভ করতে অক্ষম হতে পারে। এটি স্বাধীন ভ্যালিডেটরস-এর উপর তাদের উপার্জন বাড়ানোর জন্য শক্তিশালী স্টেকিং পুল-গুলোতে যোগদানের চাপ বাড়িয়ে তুলতে পারে, যা Ethereum-এ ডিসেন্ট্রালাইজেশন হ্রাস করে।
-### পারমিশনড মেমপুল {#permissioned-mempools}
+### পারমিশনড মেমপুলস {#permissioned-mempools}
-স্যান্ডউইচিং এবং ফ্রন্টরানিং অ্যাটাকের প্রতিক্রিয়ায়, ট্রেডাররা লেনদেনের গোপনীয়তার জন্য ভ্যালিডেটরদের সাথে অফচেইন ডিল করা শুরু করতে পারে। একটি সম্ভাব্য MEV লেনদেন পাবলিক মেমপুলে পাঠানোর পরিবর্তে, ট্রেডার এটি সরাসরি ভ্যালিডেটরের কাছে পাঠায়, যিনি এটিকে একটি ব্লকে অন্তর্ভুক্ত করেন এবং ট্রেডারের সাথে লাভ ভাগ করে নেন।
+স্যান্ডউইচিং এবং ফ্রন্টরানিং এ্যাটাকের প্রতিক্রিয়া হিসেবে, ট্রেডাররা লেনদেনের গোপনীয়তার জন্য ভ্যালিডেটরস-এর সাথে অফচেইন চুক্তি পরিচালনা শুরু করতে পারে। পাবলিক মেমপুলে একটি সম্ভাব্য MEV লেনদেন পাঠানোর পরিবর্তে, ট্রেডার এটি সরাসরি ভ্যালিডেটর-এর কাছে পাঠায়, যে এটি একটি ব্লকে অন্তর্ভুক্ত করে এবং ট্রেডারের সাথে লাভ ভাগ করে নেয়।
-“ডার্ক পুল” হল এই ব্যবস্থার একটি বৃহত্তর সংস্করণ এবং এটি পারমিশনড, শুধুমাত্র-অ্যাক্সেস মেমপুল হিসাবে কাজ করে যা নির্দিষ্ট ফি দিতে ইচ্ছুক ব্যবহারকারীদের জন্য উন্মুক্ত। এই প্রবণতা Ethereum-এর পারমিশনলেসনেস এবং ট্রাস্টলেসনেস হ্রাস করবে এবং সম্ভাব্যভাবে ব্লকচেইনকে একটি “পে-টু-প্লে” মেকানিজমে রূপান্তরিত করবে যা সর্বোচ্চ দরদাতাকে সুবিধা দেয়।
+"ডার্ক পুলস" হলো এই ব্যবস্থার একটি বৃহত্তর সংস্করণ এবং নির্দিষ্ট ফি দিতে ইচ্ছুক ব্যবহারকারীদের জন্য উন্মুক্ত পারমিশনড, শুধুমাত্র-অ্যাক্সেস মেমপুল হিসেবে কাজ করে। এই প্রবণতা Ethereum-এর পারমিশনলেসনেস এবং ট্রাস্টলেসনেস হ্রাস করবে এবং সম্ভাব্যভাবে ব্লকচেইন-কে একটি "পে-টু-প্লে" মেকানিজমে রূপান্তরিত করবে যা সর্বোচ্চ দরদাতাকে সমর্থন করে।
-পারমিশনড মেমপুলগুলি আগের বিভাগে বর্ণিত সেন্ট্রালাইজেশন ঝুঁকিগুলিও ত্বরান্বিত করবে। একাধিক ভ্যালিডেটর চালানো বড় পুলগুলি সম্ভবত ট্রেডার এবং ব্যবহারকারীদের লেনদেনের গোপনীয়তা অফার করে উপকৃত হবে, যা তাদের MEV আয় বৃদ্ধি করবে।
+পারমিশনড মেমপুলগুলো পূর্ববর্তী বিভাগে বর্ণিত সেন্ট্রালাইজেশন ঝুঁকিগুলোকেও ত্বরান্বিত করবে। একাধিক ভ্যালিডেটরস চালানো বড় পুলগুলো সম্ভবত ট্রেডার এবং ব্যবহারকারীদের লেনদেনের গোপনীয়তা প্রদান করে উপকৃত হবে, যা তাদের MEV আয় বাড়িয়ে তুলবে।
-মার্জ-পরবর্তী Ethereum-এ এই MEV-সম্পর্কিত সমস্যাগুলির বিরুদ্ধে লড়াই করা গবেষণার একটি মূল ক্ষেত্র। আজ পর্যন্ত, দ্য মার্জের পরে Ethereum-এর ডিসেন্ট্রালাইজেশন এবং সুরক্ষার উপর MEV-এর নেতিবাচক প্রভাব কমাতে প্রস্তাবিত দুটি সমাধান হল [**প্রপোজার-বিল্ডার সেপারেশন (PBS)**](/roadmap/pbs/) এবং [**বিল্ডার API**](https://github.com/ethereum/builder-specs)।
+মার্জ-পরবর্তী Ethereum-এ এই MEV-সম্পর্কিত সমস্যাগুলোর বিরুদ্ধে লড়াই করা গবেষণার একটি মূল ক্ষেত্র। আজ পর্যন্ত, The Merge-এর পরে Ethereum-এর ডিসেন্ট্রালাইজেশন এবং নিরাপত্তার উপর MEV-এর নেতিবাচক প্রভাব কমানোর জন্য প্রস্তাবিত দুটি সমাধান হলো [**প্রপোজার-বিল্ডার সেপারেশন (PBS)**](/roadmap/pbs/) এবং [**বিল্ডার API**](https://github.com/ethereum/builder-specs)।
### প্রপোজার-বিল্ডার সেপারেশন {#proposer-builder-separation}
-প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক উভয় ক্ষেত্রেই, একটি নোড যা একটি ব্লক তৈরি করে তা কনসেন্সাসে অংশগ্রহণকারী অন্যান্য নোডগুলির কাছে চেইনে যোগ করার জন্য এটি প্রস্তাব করে। একটি নতুন ব্লক ক্যানোনিকাল চেইনের অংশ হয়ে যায় যখন অন্য একজন মাইনার এর উপরে তৈরি করে (PoW-তে) অথবা এটি বেশিরভাগ ভ্যালিডেটরের কাছ থেকে অ্যাটেস্টেশন পায় (PoS-তে)।
+প্রুফ-অফ-ওয়ার্ক এবং প্রুফ-অফ-স্টেক উভয় ক্ষেত্রেই, একটি নোড যা একটি ব্লক তৈরি করে তা কনসেন্সাস-এ অংশগ্রহণকারী অন্যান্য নোড-গুলোতে চেইনে যুক্ত করার জন্য প্রস্তাব করে। একটি নতুন ব্লক ক্যানোনিকাল চেইনের অংশ হয়ে যায় যখন অন্য একজন মাইনার এর উপরে তৈরি করে (PoW-তে) বা এটি বেশিরভাগ ভ্যালিডেটরস-এর কাছ থেকে এটেস্টেশন পায় (PoS-এ)।
-ব্লক প্রডিউসার এবং ব্লক প্রপোজার ভূমিকার সংমিশ্রণই পূর্বে বর্ণিত বেশিরভাগ MEV-সম্পর্কিত সমস্যা তৈরি করে। উদাহরণস্বরূপ, কনসেন্সাস নোডগুলি MEV আয় সর্বাধিক করার জন্য [টাইম-ব্যান্ডিট অ্যাটাকে](https://www.mev.wiki/attack-examples/time-bandit-attack) চেইন রিঅর্গানাইজেশন ট্রিগার করতে উৎসাহিত হয়।
+ব্লক প্রডিউসার এবং ব্লক প্রপোজার ভূমিকার সংমিশ্রণই পূর্বে বর্ণিত বেশিরভাগ MEV-সম্পর্কিত সমস্যাগুলোর পরিচয় দেয়। উদাহরণস্বরূপ, কনসেন্সাস নোড-গুলো MEV উপার্জন সর্বাধিক করার জন্য [টাইম-ব্যান্ডিট এ্যাটাকস](https://www.mev.wiki/attack-examples/time-bandit-attack)-এ চেইন রিঅর্গানাইজেশন ট্রিগার করতে উৎসাহিত হয়।
-[প্রপোজার-বিল্ডার সেপারেশন](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) (PBS) MEV-এর প্রভাব প্রশমিত করার জন্য ডিজাইন করা হয়েছে, বিশেষ করে কনসেন্সাস লেয়ারে। PBS-এর প্রধান বৈশিষ্ট্য হল ব্লক প্রডিউসার এবং ব্লক প্রপোজার নিয়মের পৃথকীকরণ। ভ্যালিডেটররা এখনও ব্লক প্রস্তাব এবং ভোট দেওয়ার জন্য দায়ী, কিন্তু **ব্লক বিল্ডার** নামক একটি নতুন শ্রেণীর বিশেষায়িত সত্তাকে লেনদেন অর্ডার করা এবং ব্লক তৈরির দায়িত্ব দেওয়া হয়েছে।
+[প্রপোজার-বিল্ডার সেপারেশন](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) (PBS) MEV-এর প্রভাব কমানোর জন্য ডিজাইন করা হয়েছে, বিশেষ করে কনসেন্সাস লেয়ার-এ। PBS-এর প্রধান বৈশিষ্ট্য হলো ব্লক প্রডিউসার এবং ব্লক প্রপোজার নিয়মের পৃথকীকরণ। ভ্যালিডেটরস এখনও ব্লকস প্রস্তাব এবং ভোট দেওয়ার জন্য দায়ী, তবে **ব্লক বিল্ডারস** নামক একটি নতুন শ্রেণীর বিশেষ সত্তাকে লেনদেন অর্ডার করা এবং ব্লকস তৈরি করার দায়িত্ব দেওয়া হয়েছে।
-PBS-এর অধীনে, একজন ব্লক বিল্ডার একটি লেনদেন বান্ডিল তৈরি করে এবং একটি বিকন চেইন ব্লকে ("এক্সিকিউশন পেলোড" হিসাবে) অন্তর্ভুক্তির জন্য একটি বিড রাখে। পরবর্তী ব্লক প্রস্তাব করার জন্য নির্বাচিত ভ্যালিডেটর তারপর বিভিন্ন বিড পরীক্ষা করে এবং সর্বোচ্চ ফি সহ বান্ডিলটি বেছে নেয়। PBS মূলত একটি নিলাম বাজার তৈরি করে, যেখানে বিল্ডাররা ব্লকস্পেস বিক্রি করা ভ্যালিডেটরদের সাথে আলোচনা করে।
+PBS-এর অধীনে, একজন ব্লক বিল্ডার একটি লেনদেন বান্ডিল তৈরি করে এবং একটি বিকন চেইন ব্লকে ( "এক্সিকিউশন পেলোড" হিসেবে) অন্তর্ভুক্তির জন্য একটি বিড রাখে। পরবর্তী ব্লক প্রস্তাব করার জন্য নির্বাচিত ভ্যালিডেটর তারপর বিভিন্ন বিড চেক করে এবং সর্বোচ্চ ফি সহ বান্ডিলটি বেছে নেয়। PBS মূলত একটি নিলাম বাজার তৈরি করে, যেখানে বিল্ডাররা ব্লকস্পেস বিক্রি করা ভ্যালিডেটরস-এর সাথে আলোচনা করে।
-বর্তমান PBS ডিজাইনগুলি একটি [কমিট-রিভিল স্কিম](https://gitcoin.co/blog/commit-reveal-scheme-on-ethereum/) ব্যবহার করে যেখানে বিল্ডাররা শুধুমাত্র তাদের বিডের সাথে একটি ব্লকের বিষয়বস্তুর (ব্লক হেডার) একটি ক্রিপ্টোগ্রাফিক কমিটমেন্ট প্রকাশ করে। বিজয়ী বিড গ্রহণ করার পরে, প্রপোজার একটি স্বাক্ষরিত ব্লক প্রস্তাব তৈরি করে যাতে ব্লক হেডার অন্তর্ভুক্ত থাকে। ব্লক বিল্ডারের স্বাক্ষরিত ব্লক প্রস্তাব দেখার পরে সম্পূর্ণ ব্লক বডি প্রকাশ করার কথা, এবং চূড়ান্ত হওয়ার আগে এটিকে ভ্যালিডেটরদের কাছ থেকে পর্যাপ্ত [অ্যাটেস্টেশন](/glossary/#attestation) পেতে হবে।
+বর্তমান PBS ডিজাইনগুলো একটি [কমিট-রিভিল স্কিম](https://gitcoin.co/blog/commit-reveal-scheme-on-ethereum/) ব্যবহার করে যেখানে বিল্ডাররা শুধুমাত্র তাদের বিডের সাথে একটি ব্লকের বিষয়বস্তুর (ব্লক হেডার) প্রতি একটি ক্রিপ্টোগ্রাফিক প্রতিশ্রুতি প্রকাশ করে। বিজয়ী বিড গ্রহণ করার পর, প্রপোজার একটি স্বাক্ষরিত ব্লক প্রস্তাব তৈরি করে যা ব্লক হেডার অন্তর্ভুক্ত করে। স্বাক্ষরিত ব্লক প্রস্তাব দেখার পর ব্লক বিল্ডারের সম্পূর্ণ ব্লক বডি প্রকাশ করার কথা, এবং এটি চূড়ান্ত হওয়ার আগে ভ্যালিডেটরস-এর কাছ থেকে পর্যাপ্ত [এটেস্টেশন](/glossary/#attestation) পেতে হবে।
-#### প্রপোজার-বিল্ডার সেপারেশন কীভাবে MEV-এর প্রভাব প্রশমিত করে? {#how-does-pbs-curb-mev-impact}
+#### প্রপোজার-বিল্ডার সেপারেশন কীভাবে MEV-এর প্রভাব কমায়? {#how-does-pbs-curb-mev-impact}
-ইন-প্রোটোকল প্রপোজার-বিল্ডার সেপারেশন ভ্যালিডেটরদের আওতা থেকে MEV এক্সট্র্যাকশন সরিয়ে দিয়ে কনসেন্সাসের উপর MEV-এর প্রভাব হ্রাস করে। পরিবর্তে, বিশেষায়িত হার্ডওয়্যার চালানো ব্লক বিল্ডাররা ভবিষ্যতে MEV সুযোগগুলি ক্যাপচার করবে।
+ইন-প্রটোকল প্রপোজার-বিল্ডার সেপারেশন ভ্যালিডেটরস-এর আওতা থেকে MEV এক্সট্রাকশন সরিয়ে কনসেন্সাস-এর উপর MEV-এর প্রভাব হ্রাস করে। এর পরিবর্তে, বিশেষ হার্ডওয়্যার চালানো ব্লক বিল্ডাররা সামনের দিকে MEV সুযোগগুলো ক্যাপচার করবে।
-তবে, এটি ভ্যালিডেটরদের MEV-সম্পর্কিত আয় থেকে সম্পূর্ণরূপে বাদ দেয় না, কারণ বিল্ডারদের তাদের ব্লক ভ্যালিডেটরদের দ্বারা গৃহীত হওয়ার জন্য উচ্চ বিড করতে হবে। তবুও, ভ্যালিডেটররা আর সরাসরি MEV আয় অপ্টিমাইজ করার উপর মনোনিবেশ না করায়, টাইম-ব্যান্ডিট অ্যাটাকের হুমকি হ্রাস পায়।
+এটি ভ্যালিডেটরস-কে MEV-সম্পর্কিত আয় থেকে পুরোপুরি বাদ দেয় না, কারণ বিল্ডারদের তাদের ব্লকস ভ্যালিডেটরস দ্বারা গ্রহণ করার জন্য উচ্চ বিড করতে হবে। তা সত্ত্বেও, ভ্যালিডেটরস আর সরাসরি MEV আয় অপ্টিমাইজ করার দিকে মনোনিবেশ না করায়, টাইম-ব্যান্ডিট এ্যাটাকস-এর হুমকি হ্রাস পায়।
-প্রপোজার-বিল্ডার সেপারেশন MEV-এর সেন্ট্রালাইজেশন ঝুঁকিও হ্রাস করে। উদাহরণস্বরূপ, কমিট-রিভিল স্কিম ব্যবহার করলে বিল্ডারদের ভ্যালিডেটরদের উপর বিশ্বাস রাখার প্রয়োজন দূর হয় যে তারা MEV সুযোগ চুরি করবে না বা অন্য বিল্ডারদের কাছে এটি প্রকাশ করবে না। এটি সোলো স্টেকারদের MEV থেকে উপকৃত হওয়ার জন্য বাধা কমিয়ে দেয়, অন্যথায়, বিল্ডাররা অফচেইন খ্যাতি সহ বড় পুলগুলিকে সুবিধা দেওয়ার এবং তাদের সাথে অফচেইন ডিল করার দিকে ঝুঁকবে।
+প্রপোজার-বিল্ডার সেপারেশন MEV-এর সেন্ট্রালাইজেশন ঝুঁকিও কমায়। উদাহরণস্বরূপ, একটি কমিট-রিভিল স্কিমের ব্যবহার বিল্ডারদের ভ্যালিডেটরস-কে বিশ্বাস করার প্রয়োজনীয়তা দূর করে যে তারা MEV সুযোগ চুরি করবে না বা অন্য বিল্ডারদের কাছে এটি প্রকাশ করবে না। এটি সোলো স্টেকারদের MEV থেকে উপকৃত হওয়ার বাধা কমিয়ে দেয়, অন্যথায়, বিল্ডাররা অফচেইন খ্যাতি সহ বড় পুলগুলোকে সমর্থন করার এবং তাদের সাথে অফচেইন চুক্তি পরিচালনা করার দিকে ঝুঁকবে।
-একইভাবে, ভ্যালিডেটরদের বিল্ডারদের উপর বিশ্বাস রাখতে হবে না যে তারা ব্লক বডি আটকে রাখবে না বা অবৈধ ব্লক প্রকাশ করবে না কারণ পেমেন্ট শর্তহীন। প্রস্তাবিত ব্লকটি অনুপলব্ধ বা অন্য ভ্যালিডেটরদের দ্বারা অবৈধ ঘোষিত হলেও ভ্যালিডেটরের ফি এখনও প্রসেস হয়। পরবর্তী ক্ষেত্রে, ব্লকটি কেবল বাতিল করা হয়, যা ব্লক বিল্ডারকে সমস্ত লেনদেন ফি এবং MEV আয় হারাতে বাধ্য করে।
+একইভাবে, ভ্যালিডেটরস-কে বিল্ডারদের বিশ্বাস করতে হবে না যে তারা ব্লক বডি আটকে রাখবে না বা অবৈধ ব্লকস প্রকাশ করবে না কারণ পেমেন্ট শর্তহীন। প্রস্তাবিত ব্লকটি অনুপলব্ধ হলেও বা অন্যান্য ভ্যালিডেটরস দ্বারা অবৈধ ঘোষণা করা হলেও ভ্যালিডেটরের ফি এখনও প্রক্রিয়া করে। পরবর্তী ক্ষেত্রে, ব্লকটি কেবল বাতিল করা হয়, যা ব্লক বিল্ডারকে সমস্ত ট্রানজেকশন ফি এবং MEV আয় হারাতে বাধ্য করে।
### বিল্ডার API {#builder-api}
-যদিও প্রপোজার-বিল্ডার সেপারেশন MEV এক্সট্র্যাকশনের প্রভাব কমানোর প্রতিশ্রুতি দেয়, এটি বাস্তবায়নের জন্য কনসেন্সাস প্রোটোকলে পরিবর্তনের প্রয়োজন। বিশেষত, বিকন চেইনের [ফর্ক চয়েস](/developers/docs/consensus-mechanisms/pos/#fork-choice) নিয়মটি আপডেট করার প্রয়োজন হবে। [বিল্ডার API](https://github.com/ethereum/builder-specs) হল একটি অস্থায়ী সমাধান যা প্রপোজার-বিল্ডার সেপারেশনের একটি কার্যকরী বাস্তবায়ন প্রদানের লক্ষ্যে, যদিও উচ্চতর বিশ্বাস অনুমানের সাথে।
+যদিও প্রপোজার-বিল্ডার সেপারেশন MEV এক্সট্রাকশনের প্রভাব কমানোর প্রতিশ্রুতি দেয়, এটি বাস্তবায়নের জন্য কনসেন্সাস প্রটোকল-এ পরিবর্তনের প্রয়োজন। বিশেষ করে, বিকন চেইন-এ [ফর্ক চয়েস](/developers/docs/consensus-mechanisms/pos/#fork-choice) নিয়ম আপডেট করতে হবে। [বিল্ডার API](https://github.com/ethereum/builder-specs) হলো একটি অস্থায়ী সমাধান যার লক্ষ্য প্রপোজার-বিল্ডার সেপারেশনের একটি কার্যকরী বাস্তবায়ন প্রদান করা, যদিও উচ্চতর বিশ্বাসের অনুমানের সাথে।
-বিল্ডার API হল [ইঞ্জিন API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)-এর একটি পরিবর্তিত সংস্করণ যা কনসেন্সাস লেয়ার ক্লায়েন্টরা এক্সিকিউশন লেয়ার ক্লায়েন্টদের কাছ থেকে এক্সিকিউশন পেলোড অনুরোধ করতে ব্যবহার করে। [অনেস্ট ভ্যালিডেটর স্পেসিফিকেশন](https://github.com/ethereum/consensus-specs/blob/master/specs/bellatrix/validator.md)-এ যেমন বর্ণিত হয়েছে, ব্লক প্রস্তাবের দায়িত্বের জন্য নির্বাচিত ভ্যালিডেটররা একটি সংযুক্ত এক্সিকিউশন ক্লায়েন্টের কাছ থেকে একটি লেনদেন বান্ডিলের অনুরোধ করে, যা তারা প্রস্তাবিত বিকন চেইন ব্লকে অন্তর্ভুক্ত করে।
+বিল্ডার API হলো [ইঞ্জিন API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)-এর একটি পরিবর্তিত সংস্করণ যা কনসেন্সাস লেয়ার ক্লায়েন্ট-গুলো দ্বারা এক্সিকিউশন লেয়ার ক্লায়েন্ট-গুলোর কাছ থেকে এক্সিকিউশন পেলোডগুলোর অনুরোধ করতে ব্যবহৃত হয়। [সৎ ভ্যালিডেটর স্পেসিফিকেশন](https://github.com/ethereum/consensus-specs/blob/master/specs/bellatrix/validator.md)-এ বর্ণিত হিসেবে, ব্লক প্রস্তাবের দায়িত্বের জন্য নির্বাচিত ভ্যালিডেটরস একটি সংযুক্ত এক্সিকিউশন ক্লায়েন্ট থেকে একটি লেনদেন বান্ডিলের অনুরোধ করে, যা তারা প্রস্তাবিত বিকন চেইন ব্লকে অন্তর্ভুক্ত করে।
-বিল্ডার API ভ্যালিডেটর এবং এক্সিকিউশন-লেয়ার ক্লায়েন্টদের মধ্যে একটি মিডলওয়্যার হিসাবেও কাজ করে; কিন্তু এটি ভিন্ন কারণ এটি বিকন চেইনের ভ্যালিডেটরদের বাহ্যিক সত্তা থেকে ব্লক সোর্স করতে দেয় (একটি এক্সিকিউশন ক্লায়েন্ট ব্যবহার করে স্থানীয়ভাবে একটি ব্লক তৈরির পরিবর্তে)।
+বিল্ডার API ভ্যালিডেটরস এবং এক্সিকিউশন-লেয়ার ক্লায়েন্ট-গুলোর মধ্যে একটি মিডলওয়্যার হিসেবেও কাজ করে; তবে এটি ভিন্ন কারণ এটি বিকন চেইন-এর ভ্যালিডেটরস-কে বাহ্যিক সত্তা থেকে ব্লকস সোর্স করার অনুমতি দেয় (একটি এক্সিকিউশন ক্লায়েন্ট ব্যবহার করে স্থানীয়ভাবে একটি ব্লক তৈরি করার পরিবর্তে)।
-নীচে বিল্ডার API কীভাবে কাজ করে তার একটি ওভারভিউ দেওয়া হল:
+নিচে বিল্ডার API কীভাবে কাজ করে তার একটি ওভারভিউ দেওয়া হলো:
-1. বিল্ডার API ভ্যালিডেটরকে এক্সিকিউশন লেয়ার ক্লায়েন্ট চালানো ব্লক বিল্ডারদের একটি নেটওয়ার্কের সাথে সংযুক্ত করে। PBS-এর মতো, বিল্ডাররা হল বিশেষায়িত পক্ষ যারা রিসোর্স-ইনটেনসিভ ব্লক-বিল্ডিংয়ে বিনিয়োগ করে এবং MEV + অগ্রাধিকার টিপস থেকে অর্জিত আয় সর্বাধিক করার জন্য বিভিন্ন কৌশল ব্যবহার করে।
+1. বিল্ডার API ভ্যালিডেটর-কে এক্সিকিউশন লেয়ার ক্লায়েন্ট চালানো ব্লক বিল্ডারদের একটি নেটওয়ার্ক-এর সাথে সংযুক্ত করে। PBS-এর মতো, বিল্ডাররা হলো বিশেষ পক্ষ যারা সম্পদ-নিবিড় ব্লক-বিল্ডিংয়ে বিনিয়োগ করে এবং MEV + অগ্রাধিকার টিপস থেকে অর্জিত আয় সর্বাধিক করতে বিভিন্ন কৌশল ব্যবহার করে।
-2. একজন ভ্যালিডেটর (একটি কনসেন্সাস লেয়ার ক্লায়েন্ট চালাচ্ছেন) বিল্ডারদের নেটওয়ার্ক থেকে বিডের সাথে এক্সিকিউশন পেলোডের অনুরোধ করে। বিল্ডারদের বিডগুলিতে এক্সিকিউশন পেলোড হেডার—পেলোডের বিষয়বস্তুর একটি ক্রিপ্টোগ্রাফিক কমিটমেন্ট—এবং ভ্যালিডেটরকে প্রদেয় একটি ফি থাকবে।
+2. একজন ভ্যালিডেটর (একটি কনসেন্সাস লেয়ার ক্লায়েন্ট চালানো) বিল্ডারদের নেটওয়ার্ক থেকে বিডের সাথে এক্সিকিউশন পেলোডগুলোর অনুরোধ করে। বিল্ডারদের বিডগুলোতে এক্সিকিউশন পেলোড হেডার—পেলোডের বিষয়বস্তুর প্রতি একটি ক্রিপ্টোগ্রাফিক প্রতিশ্রুতি—এবং ভ্যালিডেটর-কে প্রদান করার জন্য একটি ফি থাকবে।
-3. ভ্যালিডেটর আগত বিডগুলি পর্যালোচনা করে এবং সর্বোচ্চ ফি সহ এক্সিকিউশন পেলোডটি বেছে নেয়। বিল্ডার API ব্যবহার করে, ভ্যালিডেটর একটি "ব্লাইন্ডেড" বিকন ব্লক প্রস্তাব তৈরি করে যাতে শুধুমাত্র তাদের স্বাক্ষর এবং এক্সিকিউশন পেলোড হেডার অন্তর্ভুক্ত থাকে এবং এটি বিল্ডারের কাছে পাঠায়।
+3. ভ্যালিডেটর আগত বিডগুলো পর্যালোচনা করে এবং সর্বোচ্চ ফি সহ এক্সিকিউশন পেলোড বেছে নেয়। বিল্ডার API ব্যবহার করে, ভ্যালিডেটর একটি "ব্লাইন্ডেড" বিকন ব্লক প্রস্তাব তৈরি করে যা শুধুমাত্র তাদের স্বাক্ষর এবং এক্সিকিউশন পেলোড হেডার অন্তর্ভুক্ত করে এবং এটি বিল্ডারের কাছে পাঠায়।
-4. বিল্ডার API চালানো বিল্ডার ব্লাইন্ডেড ব্লক প্রস্তাব দেখার পরে সম্পূর্ণ এক্সিকিউশন পেলোড সহ প্রতিক্রিয়া জানাবে বলে আশা করা হয়। এটি ভ্যালিডেটরকে একটি "স্বাক্ষরিত" বিকন ব্লক তৈরি করতে দেয়, যা তারা পুরো নেটওয়ার্কে প্রচার করে।
+4. বিল্ডার API চালানো বিল্ডার ব্লাইন্ডেড ব্লক প্রস্তাব দেখার পর সম্পূর্ণ এক্সিকিউশন পেলোডের সাথে সাড়া দেবে বলে আশা করা হয়। এটি ভ্যালিডেটর-কে একটি "স্বাক্ষরিত" বিকন ব্লক তৈরি করতে দেয়, যা তারা পুরো নেটওয়ার্ক জুড়ে প্রচার করে।
-5. বিল্ডার API ব্যবহারকারী একজন ভ্যালিডেটর এখনও স্থানীয়ভাবে একটি ব্লক তৈরি করবেন বলে আশা করা হয় যদি ব্লক বিল্ডার দ্রুত প্রতিক্রিয়া জানাতে ব্যর্থ হয়, যাতে তারা ব্লক প্রস্তাবের রিওয়ার্ড থেকে বঞ্চিত না হয়। তবে, ভ্যালিডেটর এখন-প্রকাশিত লেনদেন বা অন্য একটি সেট ব্যবহার করে অন্য কোনো ব্লক তৈরি করতে পারে না, কারণ এটি _ইকুইভোকেশন_ (একই স্লটের মধ্যে দুটি ব্লকে স্বাক্ষর করা) এর সমান হবে, যা একটি স্ল্যাশেবল অফেন্স।
+5. বিল্ডার API ব্যবহার করা একজন ভ্যালিডেটর-কে এখনও স্থানীয়ভাবে একটি ব্লক তৈরি করার আশা করা হয় যদি ব্লক বিল্ডার দ্রুত সাড়া দিতে ব্যর্থ হয়, যাতে তারা ব্লক প্রস্তাবের পুরষ্কারগুলো মিস না করে। তবে, ভ্যালিডেটর এখন-প্রকাশিত লেনদেন বা অন্য সেট ব্যবহার করে অন্য ব্লক তৈরি করতে পারে না, কারণ এটি _ইকুইভোকেশন_ (একই স্লটের মধ্যে দুটি ব্লক স্বাক্ষর করা) এর সমতুল্য হবে, যা একটি স্ল্যাশেবল অপরাধ।
-বিল্ডার API-এর একটি উদাহরণ বাস্তবায়ন হল [MEV Boost](https://github.com/flashbots/mev-boost), যা [ফ্ল্যাশবট নিলাম প্রক্রিয়া](https://docs.flashbots.net/flashbots-auction/overview)-এর একটি উন্নতি যা Ethereum-এ MEV-এর নেতিবাচক বহিরাগত প্রভাব রোধ করার জন্য ডিজাইন করা হয়েছে। ফ্ল্যাশবট নিলাম প্রুফ-অফ-স্টেক-এ ভ্যালিডেটরদের লাভজনক ব্লক তৈরির কাজ **সার্চার** নামক বিশেষায়িত পক্ষগুলির কাছে আউটসোর্স করার অনুমতি দেয়।
-
+বিল্ডার API-এর একটি উদাহরণ বাস্তবায়ন হলো [MEV Boost](https://github.com/flashbots/mev-boost), যা Ethereum-এ MEV-এর নেতিবাচক বাহ্যিকতা রোধ করার জন্য ডিজাইন করা [ফ্ল্যাশবটস নিলাম মেকানিজম](https://docs.flashbots.net/flashbots-auction/overview)-এর একটি উন্নতি। ফ্ল্যাশবটস নিলাম প্রুফ-অফ-স্টেক-এ ভ্যালিডেটরস-কে লাভজনক ব্লকস তৈরি করার কাজ **সার্চার** নামক বিশেষ পক্ষগুলোর কাছে আউটসোর্স করার অনুমতি দেয়।
+
-সার্চাররা লাভজনক MEV সুযোগ খোঁজে এবং ব্লকে অন্তর্ভুক্তির জন্য একটি [সিলড-প্রাইস বিড](https://en.wikipedia.org/wiki/First-price_sealed-bid_auction) সহ ব্লক প্রপোজারদের কাছে লেনদেন বান্ডিল পাঠায়। mev-geth চালানো ভ্যালিডেটর, যা go-ethereum (Geth) ক্লায়েন্টের একটি ফর্কড সংস্করণ, তাকে শুধুমাত্র সবচেয়ে বেশি লাভ সহ বান্ডিলটি বেছে নিতে হবে এবং এটিকে নতুন ব্লকের অংশ হিসাবে অন্তর্ভুক্ত করতে হবে। ব্লক প্রপোজারদের (ভ্যালিডেটরদের) স্প্যাম এবং অবৈধ লেনদেন থেকে রক্ষা করতে, লেনদেন বান্ডিলগুলি প্রপোজারের কাছে যাওয়ার আগে ভ্যালিডেশনের জন্য **রিলেয়ারদের** মাধ্যমে যায়।
+সার্চাররা লাভজনক MEV সুযোগগুলো খোঁজে এবং ব্লকে অন্তর্ভুক্তির জন্য একটি [সিলড-প্রাইস বিড](https://en.wikipedia.org/wiki/First-price_sealed-bid_auction)-এর সাথে ব্লক প্রপোজার-দের কাছে লেনদেন বান্ডিল পাঠায়। mev-geth চালানো ভ্যালিডেটর, যা go-ethereum (Geth) ক্লায়েন্ট-এর একটি ফর্কড সংস্করণ, তাকে শুধুমাত্র সবচেয়ে বেশি লাভজনক বান্ডিলটি বেছে নিতে হবে এবং এটিকে নতুন ব্লকের অংশ হিসেবে অন্তর্ভুক্ত করতে হবে। ব্লক প্রপোজার-দের (ভ্যালিডেটরস) স্প্যাম এবং অবৈধ লেনদেন থেকে রক্ষা করার জন্য, লেনদেন বান্ডিলগুলো প্রপোজারের কাছে যাওয়ার আগে বৈধকরণের জন্য **রিলেয়ার**-দের মধ্য দিয়ে যায়।
-MEV Boost মূল ফ্ল্যাশবট নিলামের একই কার্যকারিতা বজায় রাখে, যদিও Ethereum-এর প্রুফ-অফ-স্টেকে পরিবর্তনের জন্য ডিজাইন করা নতুন বৈশিষ্ট্যগুলির সাথে। সার্চাররা এখনও ব্লকে অন্তর্ভুক্তির জন্য লাভজনক MEV লেনদেন খুঁজে পায়, কিন্তু **বিল্ডার** নামক একটি নতুন শ্রেণীর বিশেষায়িত পক্ষ লেনদেন এবং বান্ডিলগুলিকে ব্লকে একত্রিত করার জন্য দায়ী। একজন বিল্ডার সার্চারদের কাছ থেকে সিলড-প্রাইস বিড গ্রহণ করে এবং সবচেয়ে লাভজনক অর্ডারিং খুঁজে পেতে অপ্টিমাইজেশন চালায়।
+MEV Boost মূল ফ্ল্যাশবটস নিলামের একই কাজগুলো বজায় রাখে, যদিও প্রুফ-অফ-স্টেক-এ Ethereum-এর পরিবর্তনের জন্য ডিজাইন করা নতুন বৈশিষ্ট্যগুলোর সাথে। সার্চাররা এখনও ব্লকস-এ অন্তর্ভুক্তির জন্য লাভজনক MEV লেনদেন খুঁজে পায়, তবে **বিল্ডারস** নামক একটি নতুন শ্রেণীর বিশেষ পক্ষ লেনদেন এবং বান্ডিলগুলোকে ব্লকস-এ একত্রিত করার জন্য দায়ী। একজন বিল্ডার সার্চারদের কাছ থেকে সিলড-প্রাইস বিড গ্রহণ করে এবং সবচেয়ে লাভজনক অর্ডারিং খুঁজে পেতে অপ্টিমাইজেশন চালায়।
-রিলেয়ার এখনও প্রপোজারের কাছে পাঠানোর আগে লেনদেন বান্ডিলগুলি ভ্যালিডেট করার জন্য দায়ী। তবে, MEV Boost **এসক্রো** চালু করে যা বিল্ডারদের দ্বারা প্রেরিত ব্লক বডি এবং ভ্যালিডেটরদের দ্বারা প্রেরিত ব্লক হেডার সংরক্ষণ করে [ডেটা প্রাপ্যতা](/developers/docs/data-availability/) প্রদানের জন্য দায়ী। এখানে, একটি রিলে-এর সাথে সংযুক্ত একজন ভ্যালিডেটর উপলব্ধ এক্সিকিউশন পেলোডের জন্য জিজ্ঞাসা করে এবং সর্বোচ্চ বিড + MEV টিপস সহ পেলোড হেডার নির্বাচন করতে MEV Boost-এর অর্ডারিং অ্যালগরিদম ব্যবহার করে।
+রিলেয়ার এখনও লেনদেন বান্ডিলগুলো প্রপোজারের কাছে পাঠানোর আগে বৈধ করার জন্য দায়ী। তবে, MEV Boost বিল্ডারদের দ্বারা প্রেরিত ব্লক বডি এবং ভ্যালিডেটরস দ্বারা প্রেরিত ব্লক হেডার সংরক্ষণ করে [ডাটা এভেইলএবিলিটি](/developers/docs/data-availability/) প্রদানের জন্য দায়ী **এসক্রো** প্রবর্তন করে। এখানে, একটি রিলের সাথে সংযুক্ত একজন ভ্যালিডেটর উপলব্ধ এক্সিকিউশন পেলোডগুলোর জন্য জিজ্ঞাসা করে এবং সর্বোচ্চ বিড + MEV টিপস সহ পেলোড হেডার নির্বাচন করতে MEV Boost-এর অর্ডারিং এ্যালগরিদম ব্যবহার করে।
-#### বিল্ডার API কীভাবে MEV-এর প্রভাব প্রশমিত করে? {#how-does-builder-api-curb-mev-impact}
+#### বিল্ডার API কীভাবে MEV-এর প্রভাব কমায়? {#how-does-builder-api-curb-mev-impact}
-বিল্ডার API-এর মূল সুবিধা হল MEV সুযোগগুলিতে অ্যাক্সেসকে গণতান্ত্রিক করার সম্ভাবনা। কমিট-রিভিল স্কিম ব্যবহার করা বিশ্বাসের অনুমান দূর করে এবং MEV থেকে উপকৃত হতে চাওয়া ভ্যালিডেটরদের জন্য প্রবেশের বাধা হ্রাস করে। এটি সোলো স্টেকারদের MEV লাভ বাড়ানোর জন্য বড় স্টেকিং পুলগুলির সাথে একীভূত হওয়ার চাপ কমাতে হবে।
+বিল্ডার API-এর মূল সুবিধা হলো MEV সুযোগগুলোতে অ্যাক্সেসকে গণতান্ত্রিক করার সম্ভাবনা। কমিট-রিভিল স্কিম ব্যবহার করা বিশ্বাসের অনুমানগুলো দূর করে এবং MEV থেকে উপকৃত হতে চাওয়া ভ্যালিডেটরস-এর জন্য প্রবেশের বাধা কমায়। এটি MEV লাভ বাড়ানোর জন্য বড় স্টেকিং পুল-গুলোর সাথে একীভূত হওয়ার জন্য সোলো স্টেকারদের উপর চাপ কমানো উচিত।
-বিল্ডার API-এর ব্যাপক বাস্তবায়ন ব্লক বিল্ডারদের মধ্যে বৃহত্তর প্রতিযোগিতাকে উৎসাহিত করবে, যা সেন্সরশিপ প্রতিরোধ বাড়ায়। যেহেতু ভ্যালিডেটররা একাধিক বিল্ডারের কাছ থেকে বিড পর্যালোচনা করে, এক বা একাধিক ব্যবহারকারী লেনদেন সেন্সর করার উদ্দেশ্যে একজন বিল্ডারকে সফল হওয়ার জন্য অন্য সমস্ত নন-সেন্সরিং বিল্ডারদের ছাড়িয়ে যেতে হবে। এটি ব্যবহারকারীদের সেন্সর করার খরচ নাটকীয়ভাবে বাড়িয়ে দেয় এবং এই অনুশীলনকে নিরুৎসাহিত করে।
+বিল্ডার API-এর ব্যাপক বাস্তবায়ন ব্লক বিল্ডারদের মধ্যে বৃহত্তর প্রতিযোগিতাকে উৎসাহিত করবে, যা সেন্সরশিপ প্রতিরোধ ক্ষমতা বাড়ায়। যেহেতু ভ্যালিডেটরস একাধিক বিল্ডারের বিড পর্যালোচনা করে, তাই এক বা একাধিক ব্যবহারকারীর লেনদেন সেন্সর করার অভিপ্রায়ে একজন বিল্ডারকে সফল হওয়ার জন্য অন্য সমস্ত নন-সেন্সরিং বিল্ডারদের ছাড়িয়ে যেতে হবে। এটি ব্যবহারকারীদের সেন্সর করার খরচ নাটকীয়ভাবে বাড়িয়ে দেয় এবং অনুশীলনটিকে নিরুৎসাহিত করে।
-কিছু প্রকল্প, যেমন MEV Boost, একটি সামগ্রিক কাঠামোর অংশ হিসাবে বিল্ডার API ব্যবহার করে যা নির্দিষ্ট পক্ষগুলির জন্য লেনদেনের গোপনীয়তা প্রদানের জন্য ডিজাইন করা হয়েছে, যেমন ফ্রন্টরানিং/স্যান্ডউইচিং অ্যাটাক এড়াতে চাওয়া ট্রেডাররা। এটি ব্যবহারকারী এবং ব্লক বিল্ডারদের মধ্যে একটি ব্যক্তিগত যোগাযোগ চ্যানেল সরবরাহ করে অর্জন করা হয়। পূর্বে বর্ণিত পারমিশনড মেমপুলগুলির থেকে ভিন্ন, এই পদ্ধতিটি নিম্নলিখিত কারণগুলির জন্য উপকারী:
+কিছু প্রজেক্ট, যেমন MEV Boost, নির্দিষ্ট পক্ষগুলোকে লেনদেনের গোপনীয়তা প্রদানের জন্য ডিজাইন করা একটি সামগ্রিক কাঠামোর অংশ হিসেবে বিল্ডার API ব্যবহার করে, যেমন ট্রেডাররা ফ্রন্টরানিং/স্যান্ডউইচিং এ্যাটাক এড়ানোর চেষ্টা করছে। এটি ব্যবহারকারী এবং ব্লক বিল্ডারদের মধ্যে একটি ব্যক্তিগত যোগাযোগ চ্যানেল প্রদান করে অর্জন করা হয়। পূর্বে বর্ণিত পারমিশনড মেমপুলগুলোর বিপরীতে, এই পদ্ধতিটি নিম্নলিখিত কারণগুলোর জন্য উপকারী:
-1. বাজারে একাধিক বিল্ডারের অস্তিত্ব সেন্সর করা অবাস্তব করে তোলে, যা ব্যবহারকারীদের উপকৃত করে। বিপরীতে, সেন্ট্রালাইজড এবং বিশ্বাস-ভিত্তিক ডার্ক পুলগুলির অস্তিত্ব কয়েকজন ব্লক বিল্ডারের হাতে ক্ষমতা কেন্দ্রীভূত করবে এবং সেন্সর করার সম্ভাবনা বাড়িয়ে দেবে।
+1. বাজারে একাধিক বিল্ডারের অস্তিত্ব সেন্সরিংকে অবাস্তব করে তোলে, যা ব্যবহারকারীদের উপকৃত করে। বিপরীতে, কেন্দ্রীভূত এবং বিশ্বাস-ভিত্তিক ডার্ক পুলগুলোর অস্তিত্ব কয়েকজন ব্লক বিল্ডারের হাতে ক্ষমতা কেন্দ্রীভূত করবে এবং সেন্সরিংয়ের সম্ভাবনা বাড়িয়ে তুলবে।
-2. বিল্ডার API সফ্টওয়্যারটি ওপেন-সোর্স, যা যে কাউকে ব্লক-বিল্ডার পরিষেবা অফার করার অনুমতি দেয়। এর মানে হল ব্যবহারকারীরা কোনো নির্দিষ্ট ব্লক বিল্ডার ব্যবহার করতে বাধ্য নন এবং এটি Ethereum-এর নিরপেক্ষতা এবং পারমিশনলেসনেস উন্নত করে। অধিকন্তু, MEV-সন্ধানী ট্রেডাররা ব্যক্তিগত লেনদেন চ্যানেল ব্যবহার করে অনিচ্ছাকৃতভাবে সেন্ট্রালাইজেশনে অবদান রাখবে না।
+2. বিল্ডার API সফ্টওয়্যারটি ওপেন-সোর্স, যা যে কাউকে ব্লক-বিল্ডার পরিষেবা অফার করতে দেয়। এর মানে হলো ব্যবহারকারীদের কোনো নির্দিষ্ট ব্লক বিল্ডার ব্যবহার করতে বাধ্য করা হয় না এবং এটি Ethereum-এর নিরপেক্ষতা এবং পারমিশনলেসনেস উন্নত করে। তদুপরি, MEV-সন্ধানী ট্রেডাররা ব্যক্তিগত লেনদেন চ্যানেল ব্যবহার করে অসাবধানতাবশত সেন্ট্রালাইজেশনে অবদান রাখবে না।
## সম্পর্কিত রিসোর্স {#related-resources}
-- [ফ্ল্যাশবট ডক্স](https://docs.flashbots.net/)
-- [ফ্ল্যাশবট গিটহাব](https://github.com/flashbots/pm)
+- [ফ্ল্যাশবটস ডক্স](https://docs.flashbots.net/)
+- [ফ্ল্যাশবটস গিটহাব](https://github.com/flashbots/pm)
- [mevboost.org](https://www.mevboost.org/) - _MEV-Boost রিলে এবং ব্লক বিল্ডারদের জন্য রিয়েল-টাইম পরিসংখ্যান সহ ট্র্যাকার_
## আরও পড়ুন {#further-reading}
-- [মাইনার-এক্সট্র্যাক্টেবল ভ্যালু (MEV) কী?](https://blog.chain.link/what-is-miner-extractable-value-mev/)
+- [মাইনার-এক্সট্রাক্টবল ভ্যালু (MEV) কী?](https://blog.chain.link/what-is-miner-extractable-value-mev/)
- [MEV এবং আমি](https://www.paradigm.xyz/2021/02/mev-and-me)
-- [Ethereum একটি অন্ধকার জঙ্গল](https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest/)
-- [অন্ধকার জঙ্গল থেকে পলায়ন](https://samczsun.com/escaping-the-dark-forest/)
-- [ফ্ল্যাশবট: MEV সংকটের ফ্রন্টরানিং](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752)
-- [@bertcmiller-এর MEV থ্রেড](https://twitter.com/bertcmiller/status/1402665992422047747)
-- [MEV-Boost: মার্জ রেডি ফ্ল্যাশবট আর্কিটেকচার](https://ethresear.ch/t/mev-boost-merge-ready-flashbots-architecture/11177)
+- [ইথিরিয়াম হলো একটি ডার্ক ফরেস্ট](https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest/)
+- [ডার্ক ফরেস্ট থেকে পালানো](https://samczsun.com/escaping-the-dark-forest/)
+- [ফ্ল্যাশবটস: MEV ক্রাইসিস ফ্রন্টরানিং](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752)
+- [@bertcmiller-এর MEV থ্রেডস](https://twitter.com/bertcmiller/status/1402665992422047747)
+- [MEV-Boost: মার্জ রেডি ফ্ল্যাশবটস আর্কিটেকচার](https://ethresear.ch/t/mev-boost-merge-ready-flashbots-architecture/11177)
- [MEV Boost কী](https://www.alchemy.com/overviews/mev-boost)
- [কেন mev-boost চালাবেন?](https://writings.flashbots.net/writings/why-run-mevboost/)
-- [দ্য হিচহাইকারস গাইড টু Ethereum](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum)
+- [দ্য হিচহাইকারস গাইড টু ইথিরিয়াম](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/networking-layer/index.md b/public/content/translations/bn/developers/docs/networking-layer/index.md
index 157a2fb0e8e..67105c1b858 100644
--- a/public/content/translations/bn/developers/docs/networking-layer/index.md
+++ b/public/content/translations/bn/developers/docs/networking-layer/index.md
@@ -1,163 +1,163 @@
---
-title: "নেটওয়ার্কিং লেয়ার"
-description: "ইথেরিয়ামের নেটওয়ার্কিং লেয়ারের একটি ভূমিকা।"
+title: নেটওয়ার্কিং লেয়ার
+description: ইথিরিয়ামের নেটওয়ার্কিং লেয়ারের একটি পরিচিতি।
lang: bn
sidebarDepth: 2
---
-ইথেরিয়াম হল একটি পিয়ার-টু-পিয়ার নেটওয়ার্ক যেখানে হাজার হাজার নোড রয়েছে যেগুলিকে অবশ্যই প্রমিত প্রোটোকল ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে সক্ষম হতে হবে। "নেটওয়ার্কিং লেয়ার" হল প্রোটোকলের স্ট্যাক যা সেই নোডগুলিকে একে অপরকে খুঁজে পেতে এবং তথ্য বিনিময় করতে দেয়। এর মধ্যে নেটওয়ার্কের মাধ্যমে তথ্যের "গসিপিং" (এক-থেকে-অনেক যোগাযোগ) এবং নির্দিষ্ট নোডগুলির মধ্যে অনুরোধ এবং প্রতিক্রিয়ার সোয়াপিং (এক-থেকে-এক যোগাযোগ) অন্তর্ভুক্ত রয়েছে। প্রতিটি নোডকে অবশ্যই নির্দিষ্ট নেটওয়ার্কিং নিয়ম মেনে চলতে হবে যাতে তারা সঠিক তথ্য প্রেরণ এবং গ্রহণ করছে তা নিশ্চিত করা যায়।
+[Ethereum](/) হলো হাজার হাজার নোড সম্বলিত একটি পিয়ার-টু-পিয়ার নেটওয়ার্ক, যেগুলোকে অবশ্যই স্ট্যান্ডার্ডাইজড প্রটোকল ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে সক্ষম হতে হবে। "নেটওয়ার্কিং লেয়ার" হলো প্রটোকলের একটি স্ট্যাক যা এই নোডগুলোকে একে অপরকে খুঁজে পেতে এবং তথ্য আদান-প্রদান করতে সাহায্য করে। এর মধ্যে নেটওয়ার্কের মাধ্যমে তথ্য "গসিপিং" (একের-সাথে-অনেকের যোগাযোগ) করার পাশাপাশি নির্দিষ্ট নোডগুলোর মধ্যে রিকোয়েস্ট এবং রেসপন্স সোয়াপ (একের-সাথে-একের যোগাযোগ) করা অন্তর্ভুক্ত। সঠিক তথ্য পাঠানো এবং গ্রহণ করা নিশ্চিত করতে প্রতিটি নোডকে অবশ্যই নির্দিষ্ট নেটওয়ার্কিং নিয়ম মেনে চলতে হবে।
-ক্লায়েন্ট সফটওয়্যারের দুটি অংশ রয়েছে (এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট), প্রতিটির নিজস্ব স্বতন্ত্র নেটওয়ার্কিং স্ট্যাক রয়েছে। অন্যান্য ইথেরিয়াম নোডের সাথে যোগাযোগের পাশাপাশি, এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টদের একে অপরের সাথে যোগাযোগ করতে হয়। এই পৃষ্ঠাটি সেই প্রোটোকলগুলির একটি পরিচায়ক ব্যাখ্যা প্রদান করে যা এই যোগাযোগকে সক্ষম করে।
+ক্লায়েন্ট সফটওয়্যারের দুটি অংশ রয়েছে (এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট), যার প্রতিটির নিজস্ব আলাদা নেটওয়ার্কিং স্ট্যাক রয়েছে। অন্যান্য ইথিরিয়াম নোডের সাথে যোগাযোগ করার পাশাপাশি, এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টগুলোকে একে অপরের সাথেও যোগাযোগ করতে হয়। এই পেজটি সেই প্রটোকলগুলোর একটি প্রাথমিক ব্যাখ্যা দেয় যা এই যোগাযোগকে সম্ভব করে তোলে।
-এক্সিকিউশন ক্লায়েন্টরা এক্সিকিউশন-লেয়ার পিয়ার-টু-পিয়ার নেটওয়ার্কের মাধ্যমে ট্রানজ্যাকশন গসিপ করে। এর জন্য প্রমাণীকৃত পিয়ারদের মধ্যে এনক্রিপ্ট করা যোগাযোগের প্রয়োজন। যখন একজন ভ্যালিডেটরকে একটি ব্লক প্রস্তাব করার জন্য নির্বাচন করা হয়, তখন নোডের স্থানীয় ট্রানজ্যাকশন পুল থেকে ট্রানজ্যাকশনগুলি একটি স্থানীয় RPC সংযোগের মাধ্যমে কনসেন্সাস ক্লায়েন্টদের কাছে পাঠানো হবে, যা বিকন ব্লকে প্যাকেজ করা হবে। কনসেন্সাস ক্লায়েন্টরা তখন তাদের পিটুপি (p2p) নেটওয়ার্কে বিকন ব্লকগুলি গসিপ করবে। এর জন্য দুটি পৃথক পিটুপি (p2p) নেটওয়ার্ক প্রয়োজন: একটি ট্রানজ্যাকশন গসিপের জন্য এক্সিকিউশন ক্লায়েন্টদের সংযোগ করে এবং অন্যটি ব্লক গসিপের জন্য কনসেন্সাস ক্লায়েন্টদের সংযোগ করে।
+এক্সিকিউশন ক্লায়েন্টগুলো এক্সিকিউশন লেয়ার পিয়ার-টু-পিয়ার নেটওয়ার্কের মাধ্যমে লেনদেন গসিপ করে। এর জন্য অথেনটিকেটেড পিয়ারদের মধ্যে এনক্রিপ্টেড যোগাযোগ প্রয়োজন। যখন কোনো ভ্যালিডেটর একটি ব্লক প্রস্তাব করার জন্য নির্বাচিত হয়, তখন নোডের লোকাল ট্রানজেকশন পুল থেকে লেনদেনগুলো একটি লোকাল RPC কানেকশনের মাধ্যমে কনসেন্সাস ক্লায়েন্টগুলোতে পাঠানো হবে, যা বিকন ব্লকে প্যাকেজ করা হবে। এরপর কনসেন্সাস ক্লায়েন্টগুলো তাদের p2p নেটওয়ার্ক জুড়ে বিকন ব্লকগুলো গসিপ করবে। এর জন্য দুটি আলাদা p2p নেটওয়ার্ক প্রয়োজন: একটি লেনদেন গসিপের জন্য এক্সিকিউশন ক্লায়েন্টগুলোকে সংযুক্ত করে এবং অন্যটি ব্লক গসিপের জন্য কনসেন্সাস ক্লায়েন্টগুলোকে সংযুক্ত করে।
## পূর্বশর্ত {#prerequisites}
-ইথেরিয়াম [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) সম্পর্কে কিছু জ্ঞান এই পৃষ্ঠাটি বোঝার জন্য সহায়ক হবে।
+এই পেজটি বোঝার জন্য ইথিরিয়াম [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) সম্পর্কে কিছু জ্ঞান থাকা সহায়ক হবে।
## এক্সিকিউশন লেয়ার {#execution-layer}
-এক্সিকিউশন লেয়ারের নেটওয়ার্কিং প্রোটোকল দুটি স্ট্যাকে বিভক্ত:
+এক্সিকিউশন লেয়ারের নেটওয়ার্কিং প্রটোকলগুলো দুটি স্ট্যাকে বিভক্ত:
-- ডিসকভারি স্ট্যাক: UDP-এর উপর নির্মিত এবং একটি নতুন নোডকে সংযোগ করার জন্য পিয়ার খুঁজে পেতে সাহায্য করে।
+- ডিসকভারি স্ট্যাক: এটি UDP-এর উপর তৈরি এবং একটি নতুন নোডকে কানেক্ট করার জন্য পিয়ার খুঁজে পেতে সাহায্য করে
-- DevP2P স্ট্যাক: TCP-এর উপরে বসে এবং নোডগুলিকে তথ্য বিনিময় করতে সক্ষম করে।
+- DevP2P স্ট্যাক: এটি TCP-এর উপর থাকে এবং নোডগুলোকে তথ্য আদান-প্রদান করতে সক্ষম করে
-দুটি স্ট্যাকই সমান্তরালভাবে কাজ করে। ডিসকভারি স্ট্যাক নতুন নেটওয়ার্ক অংশগ্রহণকারীদের নেটওয়ার্কে ফিড করে, এবং DevP2P স্ট্যাক তাদের মিথস্ক্রিয়া সক্ষম করে।
+উভয় স্ট্যাক সমান্তরালভাবে কাজ করে। ডিসকভারি স্ট্যাক নতুন নেটওয়ার্ক অংশগ্রহণকারীদের নেটওয়ার্কে যুক্ত করে, এবং DevP2P স্ট্যাক তাদের মিথস্ক্রিয়া সক্ষম করে।
### ডিসকভারি {#discovery}
-ডিসকভারি হল নেটওয়ার্কে অন্যান্য নোড খুঁজে বের করার প্রক্রিয়া। এটি বুটনোডগুলির একটি ছোট সেট ব্যবহার করে বুটস্ট্র্যাপ করা হয় (নোড যাদের ঠিকানা ক্লায়েন্টে [হার্ডকোড করা](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go) থাকে যাতে সেগুলি অবিলম্বে খুঁজে পাওয়া যায় এবং ক্লায়েন্টকে পিয়ারদের সাথে সংযোগ করতে পারে)। এই বুটনোডগুলি শুধুমাত্র একটি নতুন নোডকে এক সেট পিয়ারদের সাথে পরিচয় করিয়ে দেওয়ার জন্য বিদ্যমান - এটিই তাদের একমাত্র উদ্দেশ্য, তারা চেইন সিঙ্ক করার মতো সাধারণ ক্লায়েন্ট কাজগুলিতে অংশ নেয় না, এবং সেগুলি শুধুমাত্র প্রথমবার ক্লায়েন্ট চালু করার সময় ব্যবহৃত হয়।
+ডিসকভারি হলো নেটওয়ার্কে অন্যান্য নোড খুঁজে পাওয়ার প্রক্রিয়া। এটি বুটনোডের একটি ছোট সেট ব্যবহার করে বুটস্ট্র্যাপ করা হয় (যে নোডগুলোর এডড্রেস ক্লায়েন্টে [হার্ডকোড](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go) করা থাকে যাতে সেগুলোকে তাৎক্ষণিকভাবে খুঁজে পাওয়া যায় এবং ক্লায়েন্টকে পিয়ারদের সাথে কানেক্ট করা যায়)। এই বুটনোডগুলোর অস্তিত্ব শুধুমাত্র একটি নতুন নোডকে একদল পিয়ারের সাথে পরিচয় করিয়ে দেওয়ার জন্য - এটাই তাদের একমাত্র উদ্দেশ্য, তারা চেইন সিঙ্ক করার মতো সাধারণ ক্লায়েন্ট কাজগুলোতে অংশগ্রহণ করে না, এবং এগুলো শুধুমাত্র প্রথমবার কোনো ক্লায়েন্ট চালু করার সময়ই ব্যবহার করা হয়।
-নোড-বুটনোড মিথস্ক্রিয়ার জন্য ব্যবহৃত প্রোটোকল হল [Kademlia](https://medium.com/coinmonks/a-brief-overview-of-kademlia-and-its-use-in-various-decentralized-platforms-da08a7f72b8f)-এর একটি পরিবর্তিত রূপ যা নোডের তালিকা শেয়ার করার জন্য একটি [ডিস্ট্রিবিউটেড হ্যাস টেবিল](https://en.wikipedia.org/wiki/Distributed_hash_table) ব্যবহার করে। প্রতিটি নোডের কাছে এই টেবিলের একটি সংস্করণ রয়েছে যেখানে তার নিকটতম পিয়ারদের সাথে সংযোগ করার জন্য প্রয়োজনীয় তথ্য থাকে। এই 'নৈকট্য' ভৌগোলিক নয় - দূরত্ব নোডের আইডির সাদৃশ্য দ্বারা সংজ্ঞায়িত করা হয়। প্রতিটি নোডের টেবিল একটি নিরাপত্তা বৈশিষ্ট্য হিসাবে নিয়মিত রিফ্রেশ করা হয়। উদাহরণস্বরূপ, [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) ডিসকভারি প্রোটোকলে, নোডগুলি 'বিজ্ঞাপন' পাঠাতে সক্ষম যা ক্লায়েন্ট সমর্থন করে এমন সাবপ্রোটোকলগুলি প্রদর্শন করে, যা পিয়ারদেরকে এমন প্রোটোকল সম্পর্কে আলোচনা করতে দেয় যা তারা উভয়ই যোগাযোগের জন্য ব্যবহার করতে পারে।
+নোড-বুটনোড মিথস্ক্রিয়ার জন্য ব্যবহৃত প্রটোকলটি হলো [Kademlia](https://medium.com/coinmonks/a-brief-overview-of-kademlia-and-its-use-in-various-decentralized-platforms-da08a7f72b8f)-এর একটি পরিবর্তিত রূপ যা নোডগুলোর তালিকা শেয়ার করার জন্য একটি [ডিস্ট্রিবিউটেড হ্যাস টেবিল](https://en.wikipedia.org/wiki/Distributed_hash_table) ব্যবহার করে। প্রতিটি নোডের কাছে এই টেবিলের একটি সংস্করণ থাকে যাতে এর নিকটতম পিয়ারদের সাথে কানেক্ট করার জন্য প্রয়োজনীয় তথ্য থাকে। এই 'নৈকট্য' ভৌগোলিক নয় - দূরত্ব নোডের আইডির মিল দ্বারা সংজ্ঞায়িত করা হয়। নিরাপত্তা বৈশিষ্ট্য হিসেবে প্রতিটি নোডের টেবিল নিয়মিত রিফ্রেশ করা হয়। উদাহরণস্বরূপ, [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5)-এ, ডিসকভারি প্রটোকল নোডগুলো 'অ্যাড' পাঠাতেও সক্ষম যা ক্লায়েন্ট সমর্থন করে এমন সাবপ্রটোকলগুলো প্রদর্শন করে, যার ফলে পিয়াররা যোগাযোগের জন্য উভয়েই ব্যবহার করতে পারে এমন প্রটোকলগুলো নিয়ে আলোচনা করতে পারে।
-ডিসকভারি PING-PONG খেলার মাধ্যমে শুরু হয়। একটি সফল PING-PONG নতুন নোডটিকে একটি বুটনোডের সাথে "বন্ড" করে। নেটওয়ার্কে প্রবেশকারী একটি নতুন নোডের অস্তিত্ব সম্পর্কে একটি বুটনোডকে সতর্ক করে এমন প্রাথমিক বার্তাটি হল একটি `PING`। এই `PING`-এ নতুন নোড, বুটনোড এবং একটি মেয়াদ শেষ হওয়ার টাইম-স্ট্যাম্প সম্পর্কে হ্যাশ করা তথ্য অন্তর্ভুক্ত থাকে। বুটনোড `PING` গ্রহণ করে এবং `PING` হ্যাস ধারণকারী একটি `PONG` ফেরত দেয়। যদি `PING` এবং `PONG` হ্যাস মিলে যায় তবে নতুন নোড এবং বুটনোডের মধ্যে সংযোগটি যাচাই করা হয় এবং বলা হয় যে তারা "বন্ডেড" হয়েছে।
+ডিসকভারি শুরু হয় PING-PONG গেমের মাধ্যমে। একটি সফল PING-PONG নতুন নোডটিকে একটি বুটনোডের সাথে "বন্ড" করে। নেটওয়ার্কে প্রবেশ করা একটি নতুন নোডের অস্তিত্ব সম্পর্কে বুটনোডকে সতর্ক করার প্রাথমিক মেসেজটি হলো একটি `PING`। এই `PING`-এ নতুন নোড, বুটনোড এবং একটি এক্সপায়ারি টাইম-স্ট্যাম্প সম্পর্কে হ্যাস করা তথ্য অন্তর্ভুক্ত থাকে। বুটনোড `PING` গ্রহণ করে এবং `PING` হ্যাস ধারণকারী একটি `PONG` ফেরত দেয়। যদি `PING` এবং `PONG` হ্যাস মিলে যায় তবে নতুন নোড এবং বুটনোডের মধ্যে কানেকশন যাচাই করা হয় এবং বলা হয় যে তারা "বন্ডেড" হয়েছে।
-একবার বন্ডেড হয়ে গেলে, নতুন নোড বুটনোডকে একটি `FIND-NEIGHBOURS` অনুরোধ পাঠাতে পারে। বুটনোড দ্বারা ফেরত দেওয়া ডেটাতে এমন পিয়ারদের একটি তালিকা অন্তর্ভুক্ত থাকে যার সাথে নতুন নোড সংযোগ করতে পারে। যদি নোডগুলি বন্ডেড না হয়, `FIND-NEIGHBOURS` অনুরোধটি ব্যর্থ হবে, তাই নতুন নোডটি নেটওয়ার্কে প্রবেশ করতে পারবে না।
+একবার বন্ডেড হয়ে গেলে, নতুন নোডটি বুটনোডকে একটি `FIND-NEIGHBOURS` রিকোয়েস্ট পাঠাতে পারে। বুটনোড দ্বারা ফেরত দেওয়া ডেটাতে এমন পিয়ারদের একটি তালিকা অন্তর্ভুক্ত থাকে যাদের সাথে নতুন নোডটি কানেক্ট করতে পারে। যদি নোডগুলো বন্ডেড না হয়, তবে `FIND-NEIGHBOURS` রিকোয়েস্ট ব্যর্থ হবে, তাই নতুন নোডটি নেটওয়ার্কে প্রবেশ করতে পারবে না।
-নতুন নোডটি বুটনোড থেকে প্রতিবেশীদের একটি তালিকা পাওয়ার পরে, এটি তাদের প্রত্যেকের সাথে একটি PING-PONG এক্সচেঞ্জ শুরু করে। সফল PING-PONG নতুন নোডকে তার প্রতিবেশীদের সাথে বন্ড করে, বার্তা বিনিময় সক্ষম করে।
+নতুন নোডটি বুটনোড থেকে প্রতিবেশীদের একটি তালিকা পাওয়ার পর, এটি তাদের প্রত্যেকের সাথে PING-PONG আদান-প্রদান শুরু করে। সফল PING-PONG নতুন নোডটিকে তার প্রতিবেশীদের সাথে বন্ড করে, যা মেসেজ আদান-প্রদান সক্ষম করে।
```
-ক্লায়েন্ট শুরু করুন --> বুটনোডে সংযোগ করুন --> বুটনোডে বন্ড করুন --> প্রতিবেশী খুঁজুন --> প্রতিবেশীদের সাথে বন্ড করুন
+start client --> connect to bootnode --> bond to bootnode --> find neighbours --> bond to neighbours
```
-এক্সিকিউশন ক্লায়েন্টরা বর্তমানে [Discv4](https://github.com/ethereum/devp2p/blob/master/discv4.md) ডিসকভারি প্রোটোকল ব্যবহার করছে এবং [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) প্রোটোকলে স্থানান্তরিত করার জন্য একটি সক্রিয় প্রচেষ্টা চলছে।
+এক্সিকিউশন ক্লায়েন্টগুলো বর্তমানে [Discv4](https://github.com/ethereum/devp2p/blob/master/discv4.md) ডিসকভারি প্রটোকল ব্যবহার করছে এবং [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) প্রটোকলে মাইগ্রেট করার জন্য একটি সক্রিয় প্রচেষ্টা চলছে।
-#### ENR: ইথেরিয়াম নোড রেকর্ডস {#enr}
+#### ENR: ইথিরিয়াম নোড রেকর্ডস {#enr}
-[ইথেরিয়াম নোড রেকর্ড (ENR)](/developers/docs/networking-layer/network-addresses/) হল একটি অবজেক্ট যা তিনটি মৌলিক উপাদান ধারণ করে: একটি স্বাক্ষর (কিছু সম্মত পরিচয় স্কিম অনুযায়ী তৈরি রেকর্ড বিষয়বস্তুর হ্যাস), একটি ক্রম সংখ্যা যা রেকর্ডের পরিবর্তনগুলি ট্র্যাক করে, এবং কি:মান জোড়ার একটি নির্বিচারে তালিকা। এটি একটি ভবিষ্যৎ-প্রমাণ বিন্যাস যা নতুন পিয়ারদের মধ্যে সনাক্তকারী তথ্যের সহজ বিনিময়কে অনুমতি দেয় এবং এটি ইথেরিয়াম নোডগুলির জন্য পছন্দের [নেটওয়ার্ক ঠিকানা](/developers/docs/networking-layer/network-addresses) বিন্যাস।
+[ইথিরিয়াম নোড রেকর্ড (ENR)](/developers/docs/networking-layer/network-addresses/) হলো এমন একটি অবজেক্ট যাতে তিনটি মৌলিক উপাদান থাকে: একটি সিগনেচার (কোনো সম্মত আইডেন্টিটি স্কিম অনুযায়ী তৈরি করা রেকর্ড কন্টেন্টের হ্যাস), একটি সিকোয়েন্স নম্বর যা রেকর্ডের পরিবর্তনগুলো ট্র্যাক করে এবং key:value পেয়ারের একটি আরবিট্রারি তালিকা। এটি একটি ফিউচার-প্রুফ ফরম্যাট যা নতুন পিয়ারদের মধ্যে আইডেন্টিফাইং তথ্যের সহজ আদান-প্রদানের অনুমতি দেয় এবং এটি ইথিরিয়াম নোডগুলোর জন্য পছন্দের [নেটওয়ার্ক এডড্রেস](/developers/docs/networking-layer/network-addresses) ফরম্যাট।
-#### কেন ডিসকভারি UDP-এর উপর নির্মিত? {#why-udp}
+#### ডিসকভারি কেন UDP-এর উপর তৈরি? {#why-udp}
-UDP কোনো ত্রুটি পরীক্ষা, ব্যর্থ প্যাকেট পুনরায় পাঠানো, বা গতিশীলভাবে সংযোগ খোলা এবং বন্ধ করা সমর্থন করে না - পরিবর্তে এটি কেবল একটি লক্ষ্যে তথ্যের একটি অবিচ্ছিন্ন স্রোত পাঠায়, তা সফলভাবে প্রাপ্ত হয়েছে কিনা তা নির্বিশেষে। এই ন্যূনতম কার্যকারিতা ন্যূনতম ওভারহেডেও অনুবাদ করে, যা এই ধরণের সংযোগকে খুব দ্রুত করে তোলে। ডিসকভারির জন্য, যেখানে একটি নোড কেবল তার উপস্থিতি জানাতে চায় যাতে পরে একটি পিয়ারের সাথে একটি আনুষ্ঠানিক সংযোগ স্থাপন করা যায়, UDP যথেষ্ট। যাইহোক, বাকি নেটওয়ার্কিং স্ট্যাকের জন্য, UDP উদ্দেশ্যের জন্য উপযুক্ত নয়। নোডগুলির মধ্যে তথ্যগত বিনিময় বেশ জটিল এবং তাই একটি আরও সম্পূর্ণ বৈশিষ্ট্যযুক্ত প্রোটোকল প্রয়োজন যা পুনরায় পাঠানো, ত্রুটি পরীক্ষা ইত্যাদি সমর্থন করতে পারে। TCP-এর সাথে সম্পর্কিত অতিরিক্ত ওভারহেড অতিরিক্ত কার্যকারিতার জন্য মূল্যবান। অতএব, P2P স্ট্যাকের বেশিরভাগই TCP-এর উপর কাজ করে।
+UDP কোনো এরর চেকিং, ব্যর্থ প্যাকেট পুনরায় পাঠানো, বা ডায়নামিকভাবে কানেকশন খোলা এবং বন্ধ করা সমর্থন করে না - এর পরিবর্তে এটি সফলভাবে গৃহীত হয়েছে কিনা তা বিবেচনা না করেই একটি টার্গেটে তথ্যের একটি অবিচ্ছিন্ন স্ট্রিম ফায়ার করে। এই ন্যূনতম কার্যকারিতা ন্যূনতম ওভারহেডেও রূপান্তরিত হয়, যা এই ধরনের কানেকশনকে খুব দ্রুত করে তোলে। ডিসকভারির জন্য, যেখানে একটি নোড কেবল তার উপস্থিতি জানাতে চায় যাতে পরে একটি পিয়ারের সাথে একটি আনুষ্ঠানিক কানেকশন স্থাপন করা যায়, সেখানে UDP যথেষ্ট। তবে, নেটওয়ার্কিং স্ট্যাকের বাকি অংশের জন্য, UDP উপযুক্ত নয়। নোডগুলোর মধ্যে তথ্য আদান-প্রদান বেশ জটিল এবং তাই এমন একটি আরও সম্পূর্ণ বৈশিষ্ট্যযুক্ত প্রটোকল প্রয়োজন যা পুনরায় পাঠানো, এরর চেকিং ইত্যাদি সমর্থন করতে পারে। TCP-এর সাথে যুক্ত অতিরিক্ত ওভারহেড অতিরিক্ত কার্যকারিতার জন্য মূল্যবান। তাই, P2P স্ট্যাকের বেশিরভাগ অংশ TCP-এর উপর কাজ করে।
### DevP2P {#devp2p}
-DevP2P নিজেই প্রোটোকলের একটি সম্পূর্ণ স্ট্যাক যা ইথেরিয়াম পিয়ার-টু-পিয়ার নেটওয়ার্ক প্রতিষ্ঠা এবং বজায় রাখার জন্য প্রয়োগ করে। নতুন নোড নেটওয়ার্কে প্রবেশ করার পরে, তাদের মিথস্ক্রিয়া [DevP2P](https://github.com/ethereum/devp2p) স্ট্যাকের প্রোটোকল দ্বারা পরিচালিত হয়। এগুলি সবই TCP-এর উপরে বসে এবং RLPx ট্রান্সপোর্ট প্রোটোকল, ওয়্যার প্রোটোকল এবং বেশ কয়েকটি সাব-প্রোটোকল অন্তর্ভুক্ত করে। [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md) হল নোডগুলির মধ্যে সেশন শুরু করা, প্রমাণীকরণ করা এবং বজায় রাখার জন্য পরিচালিত প্রোটোকল। RLPx RLP (Recursive Length Prefix) ব্যবহার করে বার্তা এনকোড করে যা নোডগুলির মধ্যে পাঠানোর জন্য ডেটাকে একটি ন্যূনতম কাঠামোতে এনকোড করার একটি খুব স্থান-দক্ষ পদ্ধতি।
+DevP2P নিজেই প্রটোকলের একটি সম্পূর্ণ স্ট্যাক যা ইথিরিয়াম পিয়ার-টু-পিয়ার নেটওয়ার্ক স্থাপন এবং বজায় রাখার জন্য প্রয়োগ করে। নতুন নোডগুলো নেটওয়ার্কে প্রবেশ করার পর, তাদের মিথস্ক্রিয়াগুলো [DevP2P](https://github.com/ethereum/devp2p) স্ট্যাকের প্রটোকল দ্বারা পরিচালিত হয়। এগুলো সবই TCP-এর উপর থাকে এবং এর মধ্যে RLPx ট্রান্সপোর্ট প্রটোকল, ওয়্যার প্রটোকল এবং বেশ কয়েকটি সাব-প্রটোকল অন্তর্ভুক্ত রয়েছে। [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md) হলো নোডগুলোর মধ্যে সেশন শুরু, প্রমাণীকরণ এবং বজায় রাখার প্রটোকল। RLPx RLP (Recursive Length Prefix) ব্যবহার করে মেসেজ এনকোড করে যা নোডগুলোর মধ্যে পাঠানোর জন্য ডেটাকে একটি ন্যূনতম স্ট্রাকচারে এনকোড করার একটি খুব স্পেস-এফিশিয়েন্ট পদ্ধতি।
-দুটি নোডের মধ্যে একটি RLPx সেশন একটি প্রাথমিক ক্রিপ্টোগ্রাফিক হ্যান্ডশেক দিয়ে শুরু হয়। এর মধ্যে নোড একটি প্রমাণীকরণ বার্তা পাঠায় যা পরে পিয়ার দ্বারা যাচাই করা হয়। সফল যাচাইকরণের পরে, পিয়ারটি সূচনাকারী নোডে ফেরত পাঠানোর জন্য একটি প্রমাণীকরণ-স্বীকৃতি বার্তা তৈরি করে। এটি একটি কী-বিনিময় প্রক্রিয়া যা নোডগুলিকে ব্যক্তিগতভাবে এবং সুরক্ষিতভাবে যোগাযোগ করতে সক্ষম করে। একটি সফল ক্রিপ্টোগ্রাফিক হ্যান্ডশেক তখন উভয় নোডকে একে অপরকে "অন দ্য ওয়্যার" একটি "হ্যালো" বার্তা পাঠাতে ট্রিগার করে। ওয়্যার প্রোটোকল হ্যালো বার্তাগুলির একটি সফল বিনিময়ের মাধ্যমে শুরু করা হয়।
+দুটি নোডের মধ্যে একটি RLPx সেশন একটি প্রাথমিক ক্রিপ্টোগ্রাফিক হ্যান্ডশেকের মাধ্যমে শুরু হয়। এর মধ্যে নোডটি একটি অথ মেসেজ পাঠায় যা পরে পিয়ার দ্বারা যাচাই করা হয়। সফল যাচাইকরণের পর, পিয়ার ইনিশিয়েটর নোডে ফেরত পাঠানোর জন্য একটি অথ-অ্যাকনলেজমেন্ট মেসেজ তৈরি করে। এটি একটি কি-এক্সচেঞ্জ প্রক্রিয়া যা নোডগুলোকে ব্যক্তিগতভাবে এবং নিরাপদে যোগাযোগ করতে সক্ষম করে। একটি সফল ক্রিপ্টোগ্রাফিক হ্যান্ডশেক তারপর উভয় নোডকে "অন দ্য ওয়্যার" একে অপরকে একটি "হ্যালো" মেসেজ পাঠাতে ট্রিগার করে। ওয়্যার প্রটোকলটি হ্যালো মেসেজের সফল আদান-প্রদানের মাধ্যমে শুরু হয়।
-হ্যালো বার্তাগুলিতে রয়েছে:
+হ্যালো মেসেজগুলোতে থাকে:
-- প্রোটোকল সংস্করণ
-- ক্লায়েন্ট আইডি
+- প্রটোকল ভার্সন
+- ক্লায়েন্ট আইডি
- পোর্ট
- নোড আইডি
-- সমর্থিত সাব-প্রোটোকলের তালিকা
+- সমর্থিত সাব-প্রটোকলগুলোর তালিকা
-এটি একটি সফল মিথস্ক্রিয়ার জন্য প্রয়োজনীয় তথ্য কারণ এটি নির্ধারণ করে যে উভয় নোডের মধ্যে কোন ক্ষমতাগুলি ভাগ করা হয়েছে এবং যোগাযোগটি কনফিগার করে। এখানে একটি সাব-প্রোটোকল আলোচনার প্রক্রিয়া রয়েছে যেখানে প্রতিটি নোড দ্বারা সমর্থিত সাব-প্রোটোকলগুলির তালিকা তুলনা করা হয় এবং যেগুলি উভয় নোডের জন্য সাধারণ সেগুলি সেশনে ব্যবহার করা যেতে পারে।
+এটি একটি সফল মিথস্ক্রিয়ার জন্য প্রয়োজনীয় তথ্য কারণ এটি সংজ্ঞায়িত করে যে উভয় নোডের মধ্যে কোন ক্ষমতাগুলো শেয়ার করা হয়েছে এবং যোগাযোগ কনফিগার করে। সাব-প্রটোকল নেগোসিয়েশনের একটি প্রক্রিয়া রয়েছে যেখানে প্রতিটি নোড দ্বারা সমর্থিত সাব-প্রটোকলগুলোর তালিকা তুলনা করা হয় এবং যেগুলো উভয় নোডের জন্য সাধারণ সেগুলো সেশনে ব্যবহার করা যেতে পারে।
-হ্যালো বার্তাগুলির পাশাপাশি, ওয়্যার প্রোটোকল একটি "ডিসকানেক্ট" বার্তাও পাঠাতে পারে যা একটি পিয়ারকে সতর্ক করে যে সংযোগটি বন্ধ করা হবে। ওয়্যার প্রোটোকলে PING এবং PONG বার্তাও অন্তর্ভুক্ত রয়েছে যা একটি সেশন খোলা রাখার জন্য পর্যায়ক্রমে পাঠানো হয়। RLPx এবং ওয়্যার প্রোটোকল এক্সচেঞ্জগুলি তাই নোডগুলির মধ্যে যোগাযোগের ভিত্তি স্থাপন করে, একটি নির্দিষ্ট সাব-প্রোটোকল অনুসারে দরকারী তথ্য বিনিময়ের জন্য ভারা প্রদান করে।
+হ্যালো মেসেজগুলোর পাশাপাশি, ওয়্যার প্রটোকল একটি "ডিসকানেক্ট" মেসেজও পাঠাতে পারে যা একটি পিয়ারকে সতর্ক করে যে কানেকশনটি বন্ধ হয়ে যাবে। ওয়্যার প্রটোকলে PING এবং PONG মেসেজও অন্তর্ভুক্ত থাকে যা একটি সেশন খোলা রাখার জন্য পর্যায়ক্রমে পাঠানো হয়। RLPx এবং ওয়্যার প্রটোকল এক্সচেঞ্জগুলো তাই নোডগুলোর মধ্যে যোগাযোগের ভিত্তি স্থাপন করে, একটি নির্দিষ্ট সাব-প্রটোকল অনুযায়ী দরকারী তথ্য আদান-প্রদানের জন্য স্ক্যাফোল্ডিং প্রদান করে।
-### সাব-প্রোটোকল {#sub-protocols}
+### সাব-প্রটোকল {#sub-protocols}
-#### ওয়্যার প্রোটোকল {#wire-protocol}
+#### ওয়্যার প্রটোকল {#wire-protocol}
-একবার পিয়াররা সংযুক্ত হলে এবং একটি RLPx সেশন শুরু হলে, ওয়্যার প্রোটোকল নির্ধারণ করে যে পিয়াররা কীভাবে যোগাযোগ করে। প্রাথমিকভাবে, ওয়্যার প্রোটোকল তিনটি প্রধান কাজ সংজ্ঞায়িত করেছে: চেইন সিঙ্ক্রোনাইজেশন, ব্লক প্রচার এবং লেনদেন বিনিময়। যাইহোক, একবার ইথেরিয়াম প্রুফ-অফ-স্টেকে স্যুইচ করলে, ব্লক প্রচার এবং চেইন সিঙ্ক্রোনাইজেশন কনসেন্সাস লেয়ারের অংশ হয়ে যায়। লেনদেন বিনিময় এখনও এক্সিকিউশন ক্লায়েন্টদের আওতায় রয়েছে। লেনদেন বিনিময় বলতে নোডগুলির মধ্যে মুলতুবি লেনদেন বিনিময় করা বোঝায় যাতে ব্লক নির্মাতারা পরবর্তী ব্লকে অন্তর্ভুক্ত করার জন্য তাদের কিছু নির্বাচন করতে পারে। এই কাজগুলি সম্পর্কে বিস্তারিত তথ্য [এখানে](https://github.com/ethereum/devp2p/blob/master/caps/eth.md) উপলব্ধ। এই সাব-প্রোটোকলগুলিকে সমর্থনকারী ক্লায়েন্টরা [JSON-RPC](/developers/docs/apis/json-rpc/) এর মাধ্যমে সেগুলি প্রকাশ করে।
+একবার পিয়াররা কানেক্ট হয়ে গেলে এবং একটি RLPx সেশন শুরু হলে, ওয়্যার প্রটোকল সংজ্ঞায়িত করে যে পিয়াররা কীভাবে যোগাযোগ করবে। প্রাথমিকভাবে, ওয়্যার প্রটোকল তিনটি প্রধান কাজ সংজ্ঞায়িত করেছিল: চেইন সিঙ্ক্রোনাইজেশন, ব্লক প্রোপাগেশন এবং লেনদেন এক্সচেঞ্জ। তবে, ইথিরিয়াম প্রুফ-অফ-স্টেক-এ স্যুইচ করার পর, ব্লক প্রোপাগেশন এবং চেইন সিঙ্ক্রোনাইজেশন কনসেন্সাস লেয়ারের অংশ হয়ে যায়। লেনদেন এক্সচেঞ্জ এখনও এক্সিকিউশন ক্লায়েন্টগুলোর এখতিয়ারে রয়েছে। লেনদেন এক্সচেঞ্জ বলতে নোডগুলোর মধ্যে পেন্ডিং লেনদেন আদান-প্রদান করা বোঝায় যাতে ব্লক বিল্ডাররা পরবর্তী ব্লকে অন্তর্ভুক্ত করার জন্য সেগুলোর মধ্যে কিছু নির্বাচন করতে পারে। এই কাজগুলো সম্পর্কে বিস্তারিত তথ্য [এখানে](https://github.com/ethereum/devp2p/blob/master/caps/eth.md) পাওয়া যাবে। যে ক্লায়েন্টগুলো এই সাব-প্রটোকলগুলোকে সমর্থন করে তারা সেগুলোকে [JSON-RPC](/developers/docs/apis/json-rpc/)-এর মাধ্যমে এক্সপোজ করে।
-#### les (লাইট ইথেরিয়াম সাবপ্রোটোকল) {#les}
+#### les (লাইট ইথিরিয়াম সাবপ্রটোকল) {#les}
-এটি লাইট ক্লায়েন্ট সিঙ্ক করার জন্য একটি ন্যূনতম প্রোটোকল। ঐতিহ্যগতভাবে এই প্রোটোকলটি খুব কমই ব্যবহৃত হয়েছে কারণ সম্পূর্ণ নোডগুলিকে উৎসাহিত না হয়ে লাইট ক্লায়েন্টদের ডেটা পরিবেশন করতে হয়। এক্সিকিউশন ক্লায়েন্টদের ডিফল্ট আচরণ হল les এর মাধ্যমে লাইট ক্লায়েন্টের ডেটা পরিবেশন না করা। les [স্পেক](https://github.com/ethereum/devp2p/blob/master/caps/les.md)-এ আরও তথ্য উপলব্ধ।
+এটি লাইট ক্লায়েন্ট সিঙ্ক করার জন্য একটি ন্যূনতম প্রটোকল। ঐতিহ্যগতভাবে এই প্রটোকলটি খুব কমই ব্যবহৃত হয়েছে কারণ ফুল নোডগুলোকে কোনো ইনসেনটিভ ছাড়াই লাইট ক্লায়েন্টদের ডেটা পরিবেশন করতে হয়। এক্সিকিউশন ক্লায়েন্টগুলোর ডিফল্ট আচরণ হলো les-এর মাধ্যমে লাইট ক্লায়েন্ট ডেটা পরিবেশন না করা। les [স্পেক](https://github.com/ethereum/devp2p/blob/master/caps/les.md)-এ আরও তথ্য পাওয়া যাবে।
#### স্ন্যাপ {#snap}
-[স্ন্যাপ প্রোটোকল](https://github.com/ethereum/devp2p/blob/master/caps/snap.md#ethereum-snapshot-protocol-snap) হল একটি ঐচ্ছিক এক্সটেনশন যা পিয়ারদের সাম্প্রতিক স্টেটগুলির স্ন্যাপশট বিনিময় করতে দেয়, যা পিয়ারদের মধ্যবর্তী Merkle ট্রাই নোড ডাউনলোড না করেই অ্যাকাউন্ট এবং স্টোরেজ ডেটা যাচাই করতে দেয়।
+[স্ন্যাপ প্রটোকল](https://github.com/ethereum/devp2p/blob/master/caps/snap.md#ethereum-snapshot-protocol-snap) হলো একটি ঐচ্ছিক এক্সটেনশন যা পিয়ারদের সাম্প্রতিক স্টেটগুলোর স্ন্যাপশট আদান-প্রদান করতে দেয়, যার ফলে পিয়াররা ইন্টারমিডিয়েট মার্কেল ট্রাই নোডগুলো ডাউনলোড না করেই একাউন্ট এবং স্টোরেজ ডেটা যাচাই করতে পারে।
-#### উইট (উইটনেস প্রোটোকল) {#wit}
+#### উইট (উইটনেস প্রটোকল) {#wit}
-[উইটনেস প্রোটোকল](https://github.com/ethereum/devp2p/blob/master/caps/wit.md#ethereum-witness-protocol-wit) হল একটি ঐচ্ছিক এক্সটেনশন যা পিয়ারদের মধ্যে স্টেট উইটনেস বিনিময়কে সক্ষম করে, যা ক্লায়েন্টদের চেইনের শীর্ষে সিঙ্ক করতে সাহায্য করে।
+[উইটনেস প্রটোকল](https://github.com/ethereum/devp2p/blob/master/caps/wit.md#ethereum-witness-protocol-wit) হলো একটি ঐচ্ছিক এক্সটেনশন যা পিয়ারদের মধ্যে স্টেট উইটনেস আদান-প্রদান সক্ষম করে, যা ক্লায়েন্টদের চেইনের টিপে সিঙ্ক করতে সাহায্য করে।
-#### হুইসপার {#whisper}
+#### হুইস্পার {#whisper}
-হুইসপার একটি প্রোটোকল ছিল যার লক্ষ্য ছিল ব্লকচেইনে কোনো তথ্য না লিখে পিয়ারদের মধ্যে সুরক্ষিত মেসেজিং প্রদান করা। এটি DevP2P ওয়্যার প্রোটোকলের অংশ ছিল কিন্তু এখন এটি বাতিল করা হয়েছে। অনুরূপ লক্ষ্য নিয়ে অন্যান্য [সম্পর্কিত প্রকল্প](https://wakunetwork.com/) বিদ্যমান।
+হুইস্পার ছিল এমন একটি প্রটোকল যার লক্ষ্য ছিল ব্লকচেইনে কোনো তথ্য না লিখেই পিয়ারদের মধ্যে নিরাপদ মেসেজিং প্রদান করা। এটি DevP2P ওয়্যার প্রটোকলের অংশ ছিল কিন্তু এখন এটি বাতিল করা হয়েছে। একই ধরনের লক্ষ্য নিয়ে অন্যান্য [সম্পর্কিত প্রজেক্ট](https://wakunetwork.com/) বিদ্যমান রয়েছে।
-## কনসেন্সাস লেয়ার {#consensus-layer}
+## কনসেন্সাস লেয়ার {#consensus-layer}
-কনসেন্সাস ক্লায়েন্টরা একটি ভিন্ন স্পেসিফিকেশন সহ একটি পৃথক পিয়ার-টু-পিয়ার নেটওয়ার্কে অংশগ্রহণ করে। কনসেন্সাস ক্লায়েন্টদের ব্লক গসিপে অংশ নিতে হবে যাতে তারা পিয়ারদের থেকে নতুন ব্লক পেতে পারে এবং যখন তাদের ব্লক প্রস্তাবক হওয়ার পালা আসে তখন সেগুলি সম্প্রচার করতে পারে। এক্সিকিউশন লেয়ারের মতো, এর জন্য প্রথমে একটি ডিসকভারি প্রোটোকল প্রয়োজন যাতে একটি নোড পিয়ার খুঁজে পেতে পারে এবং ব্লক, অ্যাটেস্টেশন ইত্যাদি বিনিময়ের জন্য সুরক্ষিত সেশন স্থাপন করতে পারে।
+কনসেন্সাস ক্লায়েন্টগুলো একটি ভিন্ন স্পেসিফিকেশন সহ একটি আলাদা পিয়ার-টু-পিয়ার নেটওয়ার্কে অংশগ্রহণ করে। কনসেন্সাস ক্লায়েন্টগুলোকে ব্লক গসিপে অংশগ্রহণ করতে হয় যাতে তারা পিয়ারদের কাছ থেকে নতুন ব্লক গ্রহণ করতে পারে এবং যখন তাদের ব্লক প্রপোজার হওয়ার পালা আসে তখন সেগুলো ব্রডকাস্ট করতে পারে। এক্সিকিউশন লেয়ারের মতো, এর জন্য প্রথমে একটি ডিসকভারি প্রটোকল প্রয়োজন যাতে একটি নোড পিয়ার খুঁজে পেতে পারে এবং ব্লক, এটেস্টেশন ইত্যাদি আদান-প্রদানের জন্য নিরাপদ সেশন স্থাপন করতে পারে।
### ডিসকভারি {#consensus-discovery}
-এক্সিকিউশন ক্লায়েন্টদের মতো, কনসেন্সাস ক্লায়েন্টরা পিয়ার খুঁজে বের করার জন্য UDP-এর উপর [discv5](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#the-discovery-domain-discv5) ব্যবহার করে। discv5-এর কনসেন্সাস লেয়ারের বাস্তবায়ন এক্সিকিউশন ক্লায়েন্টদের থেকে শুধুমাত্র এই কারণে ভিন্ন যে এটি একটি অ্যাডাপ্টার অন্তর্ভুক্ত করে যা discv5-কে একটি [libP2P](https://libp2p.io/) স্ট্যাকের সাথে সংযুক্ত করে, DevP2P-কে বাতিল করে দেয়। এক্সিকিউশন লেয়ারের RLPx সেশনগুলি libP2P-এর নয়েজ সুরক্ষিত চ্যানেল হ্যান্ডশেকের পক্ষে বাতিল করা হয়েছে।
+এক্সিকিউশন ক্লায়েন্টগুলোর মতো, কনসেন্সাস ক্লায়েন্টগুলো পিয়ার খোঁজার জন্য UDP-এর উপর [discv5](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#the-discovery-domain-discv5) ব্যবহার করে। discv5-এর কনসেন্সাস লেয়ার ইমপ্লিমেন্টেশন এক্সিকিউশন ক্লায়েন্টগুলোর থেকে শুধুমাত্র এই দিক থেকে আলাদা যে এটিতে discv5-কে একটি [libP2P](https://libp2p.io/) স্ট্যাকের সাথে সংযুক্ত করার জন্য একটি অ্যাডাপ্টর অন্তর্ভুক্ত রয়েছে, যা DevP2P-কে বাতিল করে। এক্সিকিউশন লেয়ারের RLPx সেশনগুলো libP2P-এর নয়েজ সিকিউর চ্যানেল হ্যান্ডশেকের পক্ষে বাতিল করা হয়েছে।
### ENRs {#consensus-enr}
-কনসেন্সাস নোডগুলির জন্য ENR-এ নোডের পাবলিক কি, আইপি ঠিকানা, UDP এবং TCP পোর্ট এবং দুটি কনসেন্সাস-নির্দিষ্ট ফিল্ড অন্তর্ভুক্ত রয়েছে: অ্যাটেস্টেশন সাবনেট বিটফিল্ড এবং `eth2` কি। পূর্বেরটি নোডগুলির জন্য নির্দিষ্ট অ্যাটেস্টেশন গসিপ সাব-নেটওয়ার্কে অংশগ্রহণকারী পিয়ারদের খুঁজে পাওয়া সহজ করে তোলে। `eth2` কি-তে নোডটি কোন ইথেরিয়াম ফর্ক সংস্করণ ব্যবহার করছে সে সম্পর্কে তথ্য রয়েছে, যা নিশ্চিত করে যে পিয়াররা সঠিক ইথেরিয়ামের সাথে সংযোগ স্থাপন করছে।
+কনসেন্সাস নোডগুলোর জন্য ENR-এ নোডের পাবলিক কি, আইপি এডড্রেস, UDP এবং TCP পোর্ট এবং দুটি কনসেন্সাস-নির্দিষ্ট ফিল্ড অন্তর্ভুক্ত থাকে: এটেস্টেশন সাবনেট বিটফিল্ড এবং `eth2` কি। প্রথমটি নোডগুলোর জন্য নির্দিষ্ট এটেস্টেশন গসিপ সাব-নেটওয়ার্কগুলোতে অংশগ্রহণকারী পিয়ারদের খুঁজে পাওয়া সহজ করে তোলে। `eth2` কিতে নোডটি কোন ইথিরিয়াম ফর্ক ভার্সন ব্যবহার করছে সে সম্পর্কে তথ্য থাকে, যা নিশ্চিত করে যে পিয়াররা সঠিক ইথিরিয়ামের সাথে কানেক্ট হচ্ছে।
### libP2P {#libp2p}
-libP2P স্ট্যাক ডিসকভারির পরে সমস্ত যোগাযোগ সমর্থন করে। ক্লায়েন্টরা তাদের ENR-এ সংজ্ঞায়িত হিসাবে IPv4 এবং/অথবা IPv6-এ ডায়াল এবং শুনতে পারে। libP2P লেয়ারের প্রোটোকলগুলিকে গসিপ এবং req/resp ডোমেনে বিভক্ত করা যেতে পারে।
+libP2P স্ট্যাক ডিসকভারির পর সমস্ত যোগাযোগ সমর্থন করে। ক্লায়েন্টরা তাদের ENR-এ সংজ্ঞায়িত অনুযায়ী IPv4 এবং/অথবা IPv6-এ ডায়াল করতে এবং শুনতে পারে। libP2P লেয়ারের প্রটোকলগুলোকে গসিপ এবং req/resp ডোমেইনে উপবিভক্ত করা যেতে পারে।
### গসিপ {#gossip}
-গসিপ ডোমেনে এমন সমস্ত তথ্য অন্তর্ভুক্ত থাকে যা নেটওয়ার্ক জুড়ে দ্রুত ছড়িয়ে পড়তে হবে। এর মধ্যে রয়েছে বিকন ব্লক, প্রুফ, অ্যাটেস্টেশন, এক্সিট এবং স্ল্যাশিং। এটি libP2P gossipsub v1 ব্যবহার করে প্রেরণ করা হয় এবং প্রতিটি নোডে স্থানীয়ভাবে সংরক্ষিত বিভিন্ন মেটাডেটার উপর নির্ভর করে, যার মধ্যে গসিপ পেলোড গ্রহণ এবং প্রেরণের সর্বোচ্চ আকার অন্তর্ভুক্ত রয়েছে। গসিপ ডোমেন সম্পর্কে বিস্তারিত তথ্য [এখানে](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub) উপলব্ধ।
+গসিপ ডোমেইনে এমন সমস্ত তথ্য অন্তর্ভুক্ত থাকে যা নেটওয়ার্ক জুড়ে দ্রুত ছড়িয়ে পড়তে হয়। এর মধ্যে বিকন ব্লক, প্রুফ, এটেস্টেশন, এক্সিট এবং স্ল্যাশিং অন্তর্ভুক্ত রয়েছে। এটি libP2P gossipsub v1 ব্যবহার করে ট্রান্সমিট করা হয় এবং প্রতিটি নোডে স্থানীয়ভাবে সংরক্ষিত বিভিন্ন মেটাডেটার উপর নির্ভর করে, যার মধ্যে গ্রহণ এবং ট্রান্সমিট করার জন্য গসিপ পেলোডের সর্বোচ্চ আকার অন্তর্ভুক্ত। গসিপ ডোমেইন সম্পর্কে বিস্তারিত তথ্য [এখানে](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub) পাওয়া যাবে।
-### অনুরোধ-প্রতিক্রিয়া {#request-response}
+### রিকোয়েস্ট-রেসপন্স {#request-response}
-অনুরোধ-প্রতিক্রিয়া ডোমেনে ক্লায়েন্টদের তাদের পিয়ারদের কাছ থেকে নির্দিষ্ট তথ্য অনুরোধ করার জন্য প্রোটোকল রয়েছে। উদাহরণগুলির মধ্যে রয়েছে নির্দিষ্ট রুট হ্যাসগুলির সাথে মিলে যাওয়া বা স্লটগুলির একটি পরিসরের মধ্যে নির্দিষ্ট বিকন ব্লকগুলির অনুরোধ করা। প্রতিক্রিয়াগুলি সর্বদা snappy-সংকুচিত SSZ এনকোডেড বাইট হিসাবে ফেরত দেওয়া হয়।
+রিকোয়েস্ট-রেসপন্স ডোমেইনে ক্লায়েন্টদের তাদের পিয়ারদের কাছ থেকে নির্দিষ্ট তথ্যের রিকোয়েস্ট করার জন্য প্রটোকল থাকে। উদাহরণগুলোর মধ্যে নির্দিষ্ট রুট হ্যাসের সাথে মিলে যাওয়া বা স্লটের একটি রেঞ্জের মধ্যে নির্দিষ্ট বিকন ব্লকের রিকোয়েস্ট করা অন্তর্ভুক্ত। রেসপন্সগুলো সর্বদা স্ন্যাপি-কম্প্রেসড SSZ এনকোডেড বাইট হিসেবে ফেরত দেওয়া হয়।
-## কনসেন্সাস ক্লায়েন্ট কেন RLP-এর চেয়ে SSZ পছন্দ করে? {#ssz-vs-rlp}
+## কনসেন্সাস ক্লায়েন্ট কেন RLP-এর চেয়ে SSZ পছন্দ করে? {#ssz-vs-rlp}
-SSZ মানে হল সিম্পল সিরিয়ালাইজেশন। এটি নির্দিষ্ট অফসেট ব্যবহার করে যা একটি এনকোড করা বার্তার সম্পূর্ণ কাঠামো ডিকোড না করেই পৃথক অংশগুলি ডিকোড করা সহজ করে তোলে, যা কনসেন্সাস ক্লায়েন্টের জন্য খুব দরকারী কারণ এটি এনকোড করা বার্তাগুলি থেকে দক্ষতার সাথে নির্দিষ্ট তথ্য গ্রহণ করতে পারে। এটি Merkleization-এর জন্য সম্পর্কিত দক্ষতা লাভের সাথে Merkle প্রোটোকলের সাথে একীভূত করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে। যেহেতু কনসেন্সাস লেয়ারের সমস্ত হ্যাস হল Merkle রুট, এটি একটি উল্লেখযোগ্য উন্নতি যোগ করে। SSZ মানের অনন্য উপস্থাপনাও নিশ্চিত করে।
+SSZ মানে হলো সিম্পল সিরিয়ালাইজেশন। এটি ফিক্সড অফসেট ব্যবহার করে যা সম্পূর্ণ স্ট্রাকচার ডিকোড না করেই একটি এনকোড করা মেসেজের পৃথক অংশগুলো ডিকোড করা সহজ করে তোলে, যা কনসেন্সাস ক্লায়েন্টের জন্য খুব দরকারী কারণ এটি এনকোড করা মেসেজগুলো থেকে নির্দিষ্ট তথ্যের টুকরোগুলো দক্ষতার সাথে গ্রহণ করতে পারে। এটি বিশেষভাবে মার্কেল প্রটোকলগুলোর সাথে একীভূত করার জন্যও ডিজাইন করা হয়েছে, যার সাথে মার্কেলিজেশনের জন্য সম্পর্কিত দক্ষতার লাভ রয়েছে। যেহেতু কনসেন্সাস লেয়ারের সমস্ত হ্যাস হলো মার্কেল রুট, তাই এটি একটি উল্লেখযোগ্য উন্নতি যোগ করে। SSZ ভ্যালুগুলোর অনন্য উপস্থাপনারও গ্যারান্টি দেয়।
-## এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টদের সংযোগ করা {#connecting-clients}
+## এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টগুলোকে সংযুক্ত করা {#connecting-clients}
-কনসেন্সাস এবং এক্সিকিউশন উভয় ক্লায়েন্টই সমান্তরালভাবে চলে। তাদের সংযুক্ত থাকা প্রয়োজন যাতে কনসেন্সাস ক্লায়েন্ট এক্সিকিউশন ক্লায়েন্টকে নির্দেশনা দিতে পারে, এবং এক্সিকিউশন ক্লায়েন্ট বিকন ব্লকে অন্তর্ভুক্ত করার জন্য কনসেন্সাস ক্লায়েন্টকে লেনদেনের বান্ডিল পাঠাতে পারে। দুটি ক্লায়েন্টের মধ্যে যোগাযোগ একটি স্থানীয় RPC সংযোগ ব্যবহার করে অর্জন করা যেতে পারে। ['ইঞ্জিন-API'](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) নামে পরিচিত একটি API দুটি ক্লায়েন্টের মধ্যে প্রেরিত নির্দেশাবলীকে সংজ্ঞায়িত করে। যেহেতু উভয় ক্লায়েন্টই একটি একক নেটওয়ার্ক পরিচয়ের পিছনে বসে, তারা একটি ENR (ইথেরিয়াম নোড রেকর্ড) ভাগ করে নেয় যাতে প্রতিটি ক্লায়েন্টের জন্য একটি পৃথক কি থাকে (eth1 কি এবং eth2 কি)।
+কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্ট উভয়ই সমান্তরালভাবে চলে। তাদের সংযুক্ত হওয়া প্রয়োজন যাতে কনসেন্সাস ক্লায়েন্ট এক্সিকিউশন ক্লায়েন্টকে নির্দেশাবলী প্রদান করতে পারে, এবং এক্সিকিউশন ক্লায়েন্ট বিকন ব্লকে অন্তর্ভুক্ত করার জন্য কনসেন্সাস ক্লায়েন্টকে লেনদেনের বান্ডিল পাঠাতে পারে। দুটি ক্লায়েন্টের মধ্যে যোগাযোগ একটি লোকাল RPC কানেকশন ব্যবহার করে অর্জন করা যেতে পারে। ['Engine-API'](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) নামে পরিচিত একটি API দুটি ক্লায়েন্টের মধ্যে পাঠানো নির্দেশাবলী সংজ্ঞায়িত করে। যেহেতু উভয় ক্লায়েন্ট একটি একক নেটওয়ার্ক আইডেন্টিটির পিছনে থাকে, তাই তারা একটি ENR (ইথিরিয়াম নোড রেকর্ড) শেয়ার করে যাতে প্রতিটি ক্লায়েন্টের জন্য একটি আলাদা কি (eth1 কি এবং eth2 কি) থাকে।
-নিয়ন্ত্রণ প্রবাহের একটি সারাংশ নীচে দেখানো হয়েছে, প্রাসঙ্গিক নেটওয়ার্কিং স্ট্যাকটি বন্ধনীতে রয়েছে।
+কন্ট্রোল ফ্লো-এর একটি সারসংক্ষেপ নিচে দেখানো হলো, ব্র্যাকেটে প্রাসঙ্গিক নেটওয়ার্কিং স্ট্যাক দেওয়া আছে।
-### যখন কনসেন্সাস ক্লায়েন্ট ব্লক প্রযোজক নয়: {#when-consensus-client-is-not-block-producer}
+### যখন কনসেন্সাস ক্লায়েন্ট ব্লক প্রডিউসার নয়: {#when-consensus-client-is-not-block-producer}
-- কনসেন্সাস ক্লায়েন্ট ব্লক গসিপ প্রোটোকলের মাধ্যমে একটি ব্লক গ্রহণ করে (কনসেন্সাস p2p)
-- কনসেন্সাস ক্লায়েন্ট ব্লকটি প্রাক-যাচাই করে, অর্থাৎ, এটি সঠিক মেটাডেটা সহ একটি বৈধ প্রেরকের কাছ থেকে এসেছে তা নিশ্চিত করে।
-- ব্লকের লেনদেনগুলি একটি এক্সিকিউশন পেলোড হিসাবে এক্সিকিউশন লেয়ারে পাঠানো হয় (স্থানীয় RPC সংযোগ)
-- এক্সিকিউশন লেয়ার লেনদেনগুলি সম্পাদন করে এবং ব্লক হেডারের স্টেট যাচাই করে (অর্থাৎ, হ্যাসগুলি মিলেছে কিনা তা পরীক্ষা করে)
-- এক্সিকিউশন লেয়ার বৈধকরণ ডেটা কনসেন্সাস লেয়ারে ফেরত পাঠায়, ব্লকটি এখন যাচাইকৃত বলে বিবেচিত হয় (স্থানীয় RPC সংযোগ)
-- কনসেন্সাস লেয়ার ব্লকটিকে তার নিজস্ব ব্লকচেইনের শীর্ষে যুক্ত করে এবং এটির অ্যাটেস্টেশন করে, নেটওয়ার্কে অ্যাটেস্টেশন সম্প্রচার করে (কনসেন্সাস p2p)
+- কনসেন্সাস ক্লায়েন্ট ব্লক গসিপ প্রটোকলের (কনসেন্সাস p2p) মাধ্যমে একটি ব্লক গ্রহণ করে
+- কনসেন্সাস ক্লায়েন্ট ব্লকটিকে প্রি-ভ্যালিডেট করে, অর্থাৎ, নিশ্চিত করে যে এটি সঠিক মেটাডেটা সহ একজন বৈধ প্রেরকের কাছ থেকে এসেছে
+- ব্লকের লেনদেনগুলো একটি এক্সিকিউশন পেলোড (লোকাল RPC কানেকশন) হিসেবে এক্সিকিউশন লেয়ারে পাঠানো হয়
+- এক্সিকিউশন লেয়ার লেনদেনগুলো এক্সিকিউট করে এবং ব্লক হেডারে স্টেট যাচাই করে (অর্থাৎ, হ্যাসগুলো মেলে কিনা তা চেক করে)
+- এক্সিকিউশন লেয়ার ভ্যালিডেশন ডেটা কনসেন্সাস লেয়ারে ফেরত পাঠায়, ব্লকটি এখন ভ্যালিডেটেড বলে বিবেচিত হয় (লোকাল RPC কানেকশন)
+- কনসেন্সাস লেয়ার তার নিজস্ব ব্লকচেইনের হেডে ব্লক যোগ করে এবং এটি এটেস্ট করে, নেটওয়ার্কের মাধ্যমে এটেস্টেশন ব্রডকাস্ট করে (কনসেন্সাস p2p)
-### যখন কনসেন্সাস ক্লায়েন্ট ব্লক প্রযোজক: {#when-consensus-client-is-block-producer}
+### যখন কনসেন্সাস ক্লায়েন্ট ব্লক প্রডিউসার হয়: {#when-consensus-client-is-block-producer}
-- কনসেন্সাস ক্লায়েন্ট নোটিশ পায় যে এটি পরবর্তী ব্লক প্রযোজক (কনসেন্সাস p2p)
-- কনসেন্সাস লেয়ার এক্সিকিউশন ক্লায়েন্টে `create block` পদ্ধতি কল করে (স্থানীয় RPC)
-- এক্সিকিউশন লেয়ার ট্রানজ্যাকশন মেমপুল অ্যাক্সেস করে যা ট্রানজ্যাকশন গসিপ প্রোটোকল দ্বারা জনবহুল হয়েছে (এক্সিকিউশন p2p)
-- এক্সিকিউশন ক্লায়েন্ট লেনদেনগুলিকে একটি ব্লকে বান্ডিল করে, লেনদেনগুলি সম্পাদন করে এবং একটি ব্লক হ্যাস তৈরি করে
-- কনসেন্সাস ক্লায়েন্ট এক্সিকিউশন ক্লায়েন্ট থেকে লেনদেন এবং ব্লক হ্যাস গ্রহণ করে এবং সেগুলিকে বিকন ব্লকে যোগ করে (স্থানীয় RPC)
-- কনসেন্সাস ক্লায়েন্ট ব্লক গসিপ প্রোটোকলের মাধ্যমে ব্লকটি সম্প্রচার করে (কনসেন্সাস p2p)
-- অন্যান্য ক্লায়েন্টরা ব্লক গসিপ প্রোটোকলের মাধ্যমে প্রস্তাবিত ব্লকটি গ্রহণ করে এবং উপরে বর্ণিত হিসাবে যাচাই করে (কনসেন্সাস p2p)
+- কনসেন্সাস ক্লায়েন্ট নোটিশ পায় যে এটি পরবর্তী ব্লক প্রডিউসার (কনসেন্সাস p2p)
+- কনসেন্সাস লেয়ার এক্সিকিউশন ক্লায়েন্টে `create block` মেথড কল করে (লোকাল RPC)
+- এক্সিকিউশন লেয়ার ট্রানজেকশন মেমপুলে অ্যাক্সেস করে যা ট্রানজেকশন গসিপ প্রটোকল (এক্সিকিউশন p2p) দ্বারা পপুলেট করা হয়েছে
+- এক্সিকিউশন ক্লায়েন্ট লেনদেনগুলোকে একটি ব্লকে বান্ডিল করে, লেনদেনগুলো এক্সিকিউট করে এবং একটি ব্লক হ্যাস তৈরি করে
+- কনসেন্সাস ক্লায়েন্ট এক্সিকিউশন ক্লায়েন্ট থেকে লেনদেন এবং ব্লক হ্যাস গ্রহণ করে এবং সেগুলোকে বিকন ব্লকে যোগ করে (লোকাল RPC)
+- কনসেন্সাস ক্লায়েন্ট ব্লক গসিপ প্রটোকলের মাধ্যমে ব্লকটি ব্রডকাস্ট করে (কনসেন্সাস p2p)
+- অন্যান্য ক্লায়েন্টরা ব্লক গসিপ প্রটোকলের মাধ্যমে প্রস্তাবিত ব্লকটি গ্রহণ করে এবং উপরে বর্ণিত অনুযায়ী যাচাই করে (কনসেন্সাস p2p)
-একবার ব্লকটি পর্যাপ্ত ভ্যালিডেটর দ্বারা অ্যাটেস্টেড হয়ে গেলে এটি চেইনের শীর্ষে যুক্ত হয়, ন্যায্য বলে বিবেচিত হয় এবং অবশেষে চূড়ান্ত হয়।
+একবার ব্লকটি পর্যাপ্ত ভ্যালিডেটরস দ্বারা এটেস্ট করা হলে এটি চেইনের হেডে যোগ করা হয়, জাস্টিফাই করা হয় এবং শেষ পর্যন্ত ফাইনাল করা হয়।
-
-
+
+
-[ethresear.ch](https://ethresear.ch/t/eth1-eth2-client-relationship/7248) থেকে কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্টদের জন্য নেটওয়ার্ক লেয়ার স্কিম্যাটিক
+কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্টগুলোর জন্য নেটওয়ার্ক লেয়ার স্কিম্যাটিক, [ethresear.ch](https://ethresear.ch/t/eth1-eth2-client-relationship/7248) থেকে
## আরও পড়ুন {#further-reading}
[DevP2P](https://github.com/ethereum/devp2p)
[LibP2p](https://github.com/libp2p/specs)
-[কনসেন্সাস লেয়ার নেটওয়ার্ক স্পেকস](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#enr-structure)
+[কনসেন্সাস লেয়ার নেটওয়ার্ক স্পেকস](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#enr-structure)
[kademlia থেকে discv5](https://vac.dev/kademlia-to-discv5)
[kademlia পেপার](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf)
-[ইথেরিয়াম p2p-এর ভূমিকা](https://p2p.paris/en/talks/intro-ethereum-networking/)
+[ইথিরিয়াম p2p পরিচিতি](https://p2p.paris/en/talks/intro-ethereum-networking/)
[eth1/eth2 সম্পর্ক](http://ethresear.ch/t/eth1-eth2-client-relationship/7248)
-[মার্জ এবং eth2 ক্লায়েন্ট বিশদ ভিডিও](https://www.youtube.com/watch?v=zNIrIninMgg)
+[মার্জ এবং eth2 ক্লায়েন্ট ডিটেইলস ভিডিও](https://www.youtube.com/watch?v=zNIrIninMgg)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/networking-layer/network-addresses/index.md b/public/content/translations/bn/developers/docs/networking-layer/network-addresses/index.md
index b49a04b4966..f76aa3f44de 100644
--- a/public/content/translations/bn/developers/docs/networking-layer/network-addresses/index.md
+++ b/public/content/translations/bn/developers/docs/networking-layer/network-addresses/index.md
@@ -1,39 +1,39 @@
---
-title: "নেটওয়ার্ক অ্যাড্রেস"
-description: "নেটওয়ার্ক অ্যাড্রেসের একটি ভূমিকা।"
+title: নেটওয়ার্ক এডড্রেস
+description: নেটওয়ার্ক এডড্রেসের একটি পরিচিতি।
lang: bn
sidebarDepth: 2
---
-Ethereum নোডগুলিকে পিয়ারদের সঙ্গে কানেক্ট করতে নিজেদের কিছু প্রাথমিক তথ্য দিয়ে শনাক্ত করতে হয়। যেকোনো সম্ভাব্য পিয়ার যাতে এই তথ্যটি ব্যাখ্যা করতে পারে তা নিশ্চিত করার জন্য, এটি তিনটি প্রমিত ফরম্যাটের মধ্যে একটিতে রিলে করা হয় যা যেকোনো Ethereum নোড বুঝতে পারে: multiaddr, enode, বা Ethereum Node Records (ENRs)। ENR হলো Ethereum নেটওয়ার্ক অ্যাড্রেসের জন্য বর্তমান স্ট্যান্ডার্ড।
+[Ethereum](/) নোডগুলোকে পিয়ারদের সাথে সংযুক্ত হওয়ার জন্য কিছু প্রাথমিক তথ্য দিয়ে নিজেদের পরিচয় দিতে হয়। যেকোনো সম্ভাব্য পিয়ার যাতে এই তথ্য বুঝতে পারে তা নিশ্চিত করতে, এটি তিনটি প্রমিত ফরম্যাটের যেকোনো একটিতে রিলে করা হয় যা যেকোনো ইথিরিয়াম নোড বুঝতে পারে: multiaddr, enode, অথবা Ethereum Node Records (ENRs)। ENR হলো ইথিরিয়াম নেটওয়ার্ক এডড্রেসের বর্তমান স্ট্যান্ডার্ড।
## পূর্বশর্ত {#prerequisites}
-এই পেজটি বোঝার জন্য Ethereum-এর [নেটওয়ার্কিং লেয়ার](/developers/docs/networking-layer/) সম্পর্কে কিছু ধারণা থাকা প্রয়োজন।
+এই পৃষ্ঠাটি বোঝার জন্য ইথিরিয়ামের [নেটওয়ার্কিং লেয়ার](/developers/docs/networking-layer/)-এর কিছু ধারণা থাকা প্রয়োজন।
## Multiaddr {#multiaddr}
-আসল Ethereum নোড অ্যাড্রেস ফরম্যাটটি ছিল 'multiaddr' ('multi-addresses'-এর সংক্ষিপ্ত রূপ)। Multiaddr হলো একটি সর্বজনীন ফরম্যাট যা পিয়ার-টু-পিয়ার নেটওয়ার্কের জন্য ডিজাইন করা হয়েছে। অ্যাড্রেসগুলিকে কী-ভ্যালু পেয়ার হিসাবে উপস্থাপন করা হয়, যেখানে কী এবং ভ্যালুগুলি একটি ফরোয়ার্ড স্ল্যাশ দিয়ে আলাদা করা থাকে। উদাহরণস্বরূপ, IPv4 অ্যাড্রেস `192.168.22.27` সহ একটি নোডের জন্য multiaddr, যা TCP পোর্ট `33000`-এ লিসেন করে, সেটি দেখতে এইরকম:
+আসল ইথিরিয়াম নোড এডড্রেস ফরম্যাটটি ছিল 'multiaddr' ('multi-addresses'-এর সংক্ষিপ্ত রূপ)। Multiaddr হলো পিয়ার-টু-পিয়ার নেটওয়ার্কের জন্য ডিজাইন করা একটি সার্বজনীন ফরম্যাট। এডড্রেসগুলোকে কি-ভ্যালু (key-value) জোড়া হিসেবে উপস্থাপন করা হয় যেখানে কি এবং ভ্যালুগুলো একটি ফরোয়ার্ড স্ল্যাশ দিয়ে আলাদা করা থাকে। উদাহরণস্বরূপ, `192.168.22.27` IPv4 এডড্রেস এবং `33000` TCP পোর্টে লিসেন করা একটি নোডের multiaddr দেখতে এরকম হয়:
`/ip4/192.168.22.27/tcp/33000`
-একটি Ethereum নোডের জন্য, multiaddr-এ নোড-ID থাকে (তাদের পাবলিক কী-এর একটি হ্যাস):
+একটি ইথিরিয়াম নোডের জন্য, multiaddr-এ নোড-আইডি (তাদের পাবলিক কি-এর একটি হ্যাস) থাকে:
`/ip4/192.168.22.27/tcp/33000/p2p/5t7Nv7dG2d6ffbvAiewVsEwWweU3LdebSqX2y1bPrW8br`
## Enode {#enode}
-একটি enode হলো একটি URL অ্যাড্রেস ফর্ম্যাট ব্যবহার করে একটি Ethereum নোড শনাক্ত করার একটি উপায়। হেক্সাডেসিমাল নোড-ID ইউআরএলের ইউজারনেম অংশে এনকোড করা হয় এবং @ চিহ্ন ব্যবহার করে হোস্ট থেকে আলাদা করা হয়। হোস্টনেম শুধুমাত্র একটি আইপি অ্যাড্রেস হিসাবে দেওয়া যেতে পারে; ডিএনএস নাম অনুমোদিত নয়। হোস্টনেম সেকশনের পোর্টটি হল টিসিপি লিসেনিং পোর্ট। যদি TCP এবং UDP (ডিসকভারি) পোর্ট ভিন্ন হয়, তাহলে UDP পোর্টটিকে একটি ক্যোয়ারী প্যারামিটার "discport" হিসেবে উল্লেখ করা হয়।
+Enode হলো URL এডড্রেস ফরম্যাট ব্যবহার করে একটি ইথিরিয়াম নোড শনাক্ত করার একটি উপায়। হেক্সাডেসিমাল নোড-আইডিটি URL-এর ইউজারনেম অংশে এনকোড করা থাকে যা একটি @ চিহ্ন ব্যবহার করে হোস্ট থেকে আলাদা করা হয়। হোস্টনেম শুধুমাত্র একটি IP এডড্রেস হিসেবে দেওয়া যেতে পারে; DNS নাম অনুমোদিত নয়। হোস্টনেম সেকশনের পোর্টটি হলো TCP লিসেনিং পোর্ট। যদি TCP এবং UDP (ডিসকভারি) পোর্ট আলাদা হয়, তবে UDP পোর্টটিকে "discport" কোয়েরি প্যারামিটার হিসেবে নির্দিষ্ট করা হয়।
-নিম্নলিখিত উদাহরণে, নোড URLটি `10.3.58.6` আইপি অ্যাড্রেস, `30303` টিসিপি পোর্ট এবং `30301` ইউডিপি ডিসকভারি পোর্ট সহ একটি নোড বর্ণনা করে।
+নিচের উদাহরণে, নোড URL-টি `10.3.58.6` IP এডড্রেস, `30303` TCP পোর্ট এবং `30301` UDP ডিসকভারি পোর্ট বিশিষ্ট একটি নোডকে বর্ণনা করে।
`enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@10.3.58.6:30303?discport=30301`
-## Ethereum Node Records (ENRs) {#enr}
+## ইথিরিয়াম নোড রেকর্ডস (ENRs) {#enr}
-Ethereum Node Records (ENRs) হল Ethereum-এ নেটওয়ার্ক অ্যাড্রেসের জন্য একটি প্রমিত বিন্যাস। এগুলি multiaddr এবং enode-কে প্রতিস্থাপন করে। এগুলি বিশেষত দরকারী কারণ এগুলি নোডগুলির মধ্যে বৃহত্তর তথ্য বিনিময়ের অনুমতি দেয়। ENR-এ একটি স্বাক্ষর, ক্রম সংখ্যা এবং স্বাক্ষর তৈরি ও যাচাই করতে ব্যবহৃত পরিচয় স্কিমের বিশদ বিবরণ সম্বলিত ক্ষেত্র রয়েছে। ENR-কে কী-ভ্যালু পেয়ার হিসাবে সংগঠিত নির্বিচারে ডেটা দিয়েও পপুলেট করা যেতে পারে। এই কী-ভ্যালু পেয়ারগুলিতে নোডের আইপি অ্যাড্রেস এবং নোডটি যে সাব-প্রোটোকলগুলি ব্যবহার করতে সক্ষম সে সম্পর্কে তথ্য থাকে। কনসেন্সাস ক্লায়েন্টরা বুট নোড শনাক্ত করার জন্য একটি [নির্দিষ্ট ENR কাঠামো](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#enr-structure) ব্যবহার করে এবং এতে একটি `eth2` ফিল্ডও অন্তর্ভুক্ত থাকে, যেখানে বর্তমান Ethereum ফর্ক এবং অ্যাটেস্টেশন গসিপ সাবনেট (এটি নোডকে এমন এক বিশেষ শ্রেণীর পিয়ারদের সঙ্গে যুক্ত করে যাদের অ্যাটেস্টেশন একত্রিত করা হয়) সম্পর্কে তথ্য থাকে।
+ইথিরিয়াম নোড রেকর্ডস (ENRs) হলো ইথিরিয়ামে নেটওয়ার্ক এডড্রেসের জন্য একটি প্রমিত ফরম্যাট। এগুলো multiaddr এবং enode-কে প্রতিস্থাপন করে। এগুলো বিশেষভাবে কার্যকর কারণ এগুলো নোডগুলোর মধ্যে আরও বেশি তথ্য বিনিময়ের সুযোগ দেয়। ENR-এ একটি সিগনেচার, সিকোয়েন্স নম্বর এবং সিগনেচার তৈরি ও যাচাই করতে ব্যবহৃত আইডেন্টিটি স্কিমের বিস্তারিত ফিল্ড থাকে। ENR-কে কি-ভ্যালু জোড়া হিসেবে সাজানো যেকোনো ডেটা দিয়েও পূরণ করা যেতে পারে। এই কি-ভ্যালু জোড়াগুলোতে নোডের IP এডড্রেস এবং নোডটি যেসব সাব-প্রটোকল ব্যবহার করতে সক্ষম সেগুলোর তথ্য থাকে। কনসেন্সাস ক্লায়েন্ট বুট নোড শনাক্ত করতে একটি [নির্দিষ্ট ENR স্ট্রাকচার](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md#enr-structure) ব্যবহার করে এবং এতে একটি `eth2` ফিল্ডও অন্তর্ভুক্ত থাকে যেখানে বর্তমান ইথিরিয়াম ফর্ক এবং এটেস্টেশন গসিপ সাবনেটের তথ্য থাকে (এটি নোডটিকে নির্দিষ্ট কিছু পিয়ারের সাথে সংযুক্ত করে যাদের এটেস্টেশন একসাথে এগ্রিগেট করা হয়)।
## আরও পড়ুন {#further-reading}
-- [EIP-778: Ethereum Node Records (ENR)](https://eips.ethereum.org/EIPS/eip-778)
-- [LibP2P: Multiaddr-Enode-ENR?!](https://consensys.net/diligence/blog/2020/09/libp2p-multiaddr-enode-enr/)
+- [EIP-778: ইথিরিয়াম নোড রেকর্ডস (ENR)](https://eips.ethereum.org/EIPS/eip-778)
+- [LibP2P: Multiaddr-Enode-ENR?!](https://consensys.net/diligence/blog/2020/09/libp2p-multiaddr-enode-enr/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/bn/developers/docs/networking-layer/portal-network/index.md
index 7533e6175db..56cd3733eec 100644
--- a/public/content/translations/bn/developers/docs/networking-layer/portal-network/index.md
+++ b/public/content/translations/bn/developers/docs/networking-layer/portal-network/index.md
@@ -1,89 +1,89 @@
---
-title: "পোর্টাল নেটওয়ার্ক"
-description: "পোর্টাল নেটওয়ার্কের একটি সংক্ষিপ্ত বিবরণ - একটি ইন-ডেভেলপমেন্ট নেটওয়ার্ক যা স্বল্প-সম্পদ ক্লায়েন্টদের সমর্থন করার জন্য ডিজাইন করা হয়েছে।"
+title: পোর্টাল নেটওয়ার্ক
+description: পোর্টাল নেটওয়ার্কের একটি ওভারভিউ - এটি একটি ইন-ডেভেলপমেন্ট নেটওয়ার্ক যা লো-রিসোর্স ক্লায়েন্টদের সাপোর্ট করার জন্য ডিজাইন করা হয়েছে।
lang: bn
---
-ইথেরিয়াম হলো এমন একটি নেটওয়ার্ক যা ইথেরিয়াম ক্লায়েন্ট সফ্টওয়্যার চালিত কম্পিউটারগুলির সমন্বয়ে গঠিত। এই কম্পিউটারগুলির প্রত্যেকটিকে একটি 'নোড' বলা হয়। ক্লায়েন্ট সফ্টওয়্যার একটি নোডকে ইথেরিয়াম নেটওয়ার্কে ডেটা পাঠানো এবং গ্রহণ করার অনুমতি দেয় এবং ইথেরিয়াম প্রোটোকল নিয়ম অনুসারে ডেটা যাচাই করে। নোডগুলি তাদের ডিস্ক সংগ্রহস্থলে প্রচুর ঐতিহাসিক ডেটা রাখে এবং নেটওয়ার্কের অন্যান্য নোড থেকে ব্লক হিসাবে পরিচিত তথ্যের নতুন প্যাকেট গ্রহণ করার সময় তাতে যোগ করে। একটি নোডের কাছে নেটওয়ার্কের বাকি অংশের সাথে সামঞ্জস্যপূর্ণ তথ্য আছে কিনা তা সর্বদা পরীক্ষা করার জন্য এটি প্রয়োজনীয়। এর মানে হল একটি নোড চালানোর জন্য অনেক ডিস্ক স্পেস প্রয়োজন হতে পারে। কিছু নোড অপারেশনের জন্য প্রচুর RAMও প্রয়োজন হতে পারে।
+[ইথিরিয়াম](/) হলো এমন একটি নেটওয়ার্ক যা ইথিরিয়াম ক্লায়েন্ট সফটওয়্যার চালানো কম্পিউটারগুলো দিয়ে গঠিত। এই কম্পিউটারগুলোর প্রতিটিকে 'নোড' (node) বলা হয়। ক্লায়েন্ট সফটওয়্যার একটি নোডকে ইথিরিয়াম নেটওয়ার্কে ডাটা পাঠাতে এবং গ্রহণ করতে দেয় এবং ইথিরিয়াম প্রটোকল রুলস অনুযায়ী ডাটা যাচাই করে। নোডগুলো তাদের ডিস্ক স্টোরেজে প্রচুর ঐতিহাসিক ডাটা রাখে এবং নেটওয়ার্কের অন্যান্য নোড থেকে নতুন তথ্যের প্যাকেট (যা ব্লকস নামে পরিচিত) পেলে তা যোগ করে। একটি নোডের কাছে থাকা তথ্য নেটওয়ার্কের বাকি অংশের সাথে সামঞ্জস্যপূর্ণ কিনা তা সর্বদা চেক করার জন্য এটি প্রয়োজনীয়। এর মানে হলো একটি নোড চালানোর জন্য প্রচুর ডিস্ক স্পেসের প্রয়োজন হতে পারে। কিছু নোড অপারেশনের জন্য প্রচুর RAM-ও লাগতে পারে।
-এই ডিস্ক সংগ্রহস্থলের সমস্যা সমাধানের জন্য, 'লাইট' নোড তৈরি করা হয়েছে যা নিজেরাই সমস্ত তথ্য সংগ্রহ করার পরিবর্তে সম্পূর্ণ নোড থেকে তথ্যের জন্য অনুরোধ করে। যাইহোক, এর মানে হল লাইট নোড স্বাধীনভাবে তথ্য যাচাই করে না এবং পরিবর্তে অন্য একটি নোডের উপর বিশ্বাস রাখে। এর মানে হল যে সম্পূর্ণ নোডগুলিকে সেই লাইট নোডগুলিকে পরিষেবা দেওয়ার জন্য অতিরিক্ত কাজ করতে হয়।
+এই ডিস্ক স্টোরেজ সমস্যাটি এড়াতে, 'লাইট' (light) নোড তৈরি করা হয়েছে যা নিজেরাই সব তথ্য সংরক্ষণ করার পরিবর্তে ফুল নোডগুলোর কাছে তথ্যের জন্য রিকোয়েস্ট করে। তবে, এর মানে হলো লাইট নোড স্বাধীনভাবে তথ্য যাচাই করছে না এবং এর পরিবর্তে অন্য একটি নোডকে বিশ্বাস করছে। এর মানে এটাও যে, ওই লাইট নোডগুলোকে সার্ভিস দেওয়ার জন্য ফুল নোডগুলোকে অতিরিক্ত কাজ করতে হয়।
-পোর্টাল নেটওয়ার্ক হলো ইথেরিয়ামের জন্য একটি নতুন নেটওয়ার্কিং ডিজাইন, যার লক্ষ্য হলো নেটওয়ার্ক জুড়ে ছোট ছোট অংশে প্রয়োজনীয় ডেটা ভাগ করে সম্পূর্ণ নোডগুলির উপর বিশ্বাস স্থাপন বা অতিরিক্ত চাপ না দিয়েই "লাইট" নোডগুলির জন্য ডেটা প্রাপ্যতার সমস্যার সমাধান করা।
+পোর্টাল নেটওয়ার্ক হলো ইথিরিয়ামের জন্য একটি নতুন নেটওয়ার্কিং ডিজাইন, যার লক্ষ্য হলো নেটওয়ার্ক জুড়ে প্রয়োজনীয় ডাটা ছোট ছোট অংশে শেয়ার করার মাধ্যমে ফুল নোডগুলোকে বিশ্বাস না করে বা তাদের ওপর অতিরিক্ত চাপ না দিয়ে "লাইট" নোডগুলোর জন্য ডাটা এভেইলএবিলিটি সমস্যার সমাধান করা।
-[নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) সম্পর্কে আরও জানুন
+[নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) সম্পর্কে আরও জানুন
-## আমাদের কেন পোর্টাল নেটওয়ার্ক প্রয়োজন {#why-do-we-need-portal-network}
+## আমাদের কেন পোর্টাল নেটওয়ার্ক প্রয়োজন {#why-do-we-need-portal-network}
-ইথেরিয়াম নোডগুলি ইথেরিয়াম ব্লকচেইনের নিজস্ব সম্পূর্ণ বা আংশিক অনুলিপি সংরক্ষণ করে। এই স্থানীয় অনুলিপিটি লেনদেন যাচাই করতে এবং নোডটি সঠিক চেইন অনুসরণ করছে তা নিশ্চিত করতে ব্যবহৃত হয়। এই স্থানীয়ভাবে সংরক্ষিত ডেটা নোডগুলিকে অন্য কোনো সত্তার উপর বিশ্বাস না করেই স্বাধীনভাবে যাচাই করার অনুমতি দেয় যে আগত ডেটা বৈধ এবং সঠিক।
+ইথিরিয়াম নোডগুলো ইথিরিয়াম ব্লকচেইন-এর নিজস্ব সম্পূর্ণ বা আংশিক কপি সংরক্ষণ করে। এই লোকাল কপিটি লেনদেন যাচাই করতে এবং নোডটি সঠিক চেইন অনুসরণ করছে কিনা তা নিশ্চিত করতে ব্যবহৃত হয়। এই লোকালি সংরক্ষিত ডাটা নোডগুলোকে অন্য কোনো সত্তাকে বিশ্বাস করার প্রয়োজন ছাড়াই ইনকামিং ডাটা বৈধ এবং সঠিক কিনা তা স্বাধীনভাবে যাচাই করতে দেয়।
-ব্লকচেইনের এই স্থানীয় অনুলিপি এবং সংশ্লিষ্ট স্টেট ও রসিদ ডেটা নোডের হার্ড ডিস্কে অনেক জায়গা নেয়। উদাহরণস্বরূপ, একটি কনসেন্সাস ক্লায়েন্টের সাথে যুক্ত [Geth](https://geth.ethereum.org) ব্যবহার করে একটি নোড চালানোর জন্য একটি 2TB হার্ড ডিস্কের সুপারিশ করা হয়। স্ন্যাপ সিঙ্ক ব্যবহার করে, যা শুধুমাত্র তুলনামূলকভাবে সাম্প্রতিক ব্লকের একটি সেট থেকে চেইন ডেটা সঞ্চয় করে, Geth সাধারণত প্রায় 650GB ডিস্ক স্পেস দখল করে কিন্তু প্রতি সপ্তাহে প্রায় 14GB হারে বৃদ্ধি পায় (আপনি পর্যায়ক্রমে নোডটিকে ছেঁটে 650GB-তে নামিয়ে আনতে পারেন)।
+ব্লকচেইন এবং এর সাথে সম্পর্কিত স্টেট ও রিসিপ্ট ডাটার এই লোকাল কপিটি নোডের হার্ড ডিস্কে প্রচুর জায়গা নেয়। উদাহরণস্বরূপ, একটি কনসেন্সাস ক্লায়েন্ট-এর সাথে যুক্ত [Geth](https://geth.ethereum.org) ব্যবহার করে একটি নোড চালানোর জন্য 2TB হার্ড ডিস্কের সুপারিশ করা হয়। স্ন্যাপ সিঙ্ক (snap sync) ব্যবহার করলে, যা শুধুমাত্র তুলনামূলকভাবে সাম্প্রতিক ব্লকস থেকে চেইন ডাটা সংরক্ষণ করে, Geth সাধারণত প্রায় 650GB ডিস্ক স্পেস দখল করে কিন্তু প্রতি সপ্তাহে প্রায় 14GB করে বৃদ্ধি পায় (আপনি পর্যায়ক্রমে নোডটিকে প্রুন করে আবার 650GB-তে নামিয়ে আনতে পারেন)।
-এর মানে হলো নোড চালানো ব্যয়বহুল হতে পারে, কারণ ইথেরিয়ামের জন্য প্রচুর পরিমাণে ডিস্ক স্পেস উৎসর্গ করতে হয়। ইথেরিয়াম রোডম্যাপে এই সমস্যার বেশ কয়েকটি সমাধান রয়েছে, যার মধ্যে রয়েছে [হিস্টোরি এক্সপায়ারি](/roadmap/statelessness/#history-expiry), [স্টেট এক্সপায়ারি](/roadmap/statelessness/#state-expiry) এবং [স্টেটলেসনেস](/roadmap/statelessness/)। যাইহোক, এগুলি বাস্তবায়ন হতে সম্ভবত আরও বেশ কয়েক বছর সময় লাগবে। এছাড়াও [লাইট নোড](/developers/docs/nodes-and-clients/light-clients/) রয়েছে যা চেইন ডেটার নিজস্ব অনুলিপি সংরক্ষণ করে না, তারা সম্পূর্ণ নোড থেকে তাদের প্রয়োজনীয় ডেটার জন্য অনুরোধ করে। যাইহোক, এর মানে হল লাইট নোডগুলিকে সৎ ডেটা প্রদানের জন্য সম্পূর্ণ নোডগুলির উপর বিশ্বাস করতে হয় এবং এটি সেই সম্পূর্ণ নোডগুলির উপরও চাপ সৃষ্টি করে যাদের লাইট নোডগুলির প্রয়োজনীয় ডেটা পরিবেশন করতে হয়।
+এর মানে হলো নোড চালানো ব্যয়বহুল হতে পারে, কারণ ইথিরিয়ামের জন্য প্রচুর পরিমাণে ডিস্ক স্পেস ডেডিকেট করতে হয়। ইথিরিয়াম রোডম্যাপ-এ এই সমস্যার বেশ কয়েকটি সমাধান রয়েছে, যার মধ্যে [হিস্ট্রি এক্সপায়ারি](/roadmap/statelessness/#history-expiry), [স্টেট এক্সপায়ারি](/roadmap/statelessness/#state-expiry) এবং [স্টেটলেসনেস](/roadmap/statelessness/) অন্তর্ভুক্ত। তবে, এগুলো বাস্তবায়িত হতে সম্ভবত আরও কয়েক বছর সময় লাগবে। এছাড়াও [লাইট নোড](/developers/docs/nodes-and-clients/light-clients/) রয়েছে যেগুলো চেইন ডাটার নিজস্ব কপি সেভ করে না, তারা তাদের প্রয়োজনীয় ডাটা ফুল নোডগুলোর কাছে রিকোয়েস্ট করে। তবে, এর মানে হলো লাইট নোডগুলোকে সৎ ডাটা দেওয়ার জন্য ফুল নোডগুলোকে বিশ্বাস করতে হয় এবং এটি ফুল নোডগুলোর ওপর চাপ সৃষ্টি করে যাদের লাইট নোডগুলোর প্রয়োজনীয় ডাটা সার্ভ করতে হয়।
-পোর্টাল নেটওয়ার্কের লক্ষ্য হল লাইট নোডগুলিকে তাদের ডেটা পাওয়ার জন্য একটি বিকল্প উপায় প্রদান করা, যার জন্য সম্পূর্ণ নোডগুলির দ্বারা করা কাজের উপর বিশ্বাস স্থাপন বা উল্লেখযোগ্যভাবে কাজ যোগ করার প্রয়োজন হয় না। এটি সম্পন্ন করার উপায় হল ইথেরিয়াম নোডগুলির জন্য নেটওয়ার্ক জুড়ে ডেটা ভাগ করার একটি নতুন উপায় চালু করা।
+পোর্টাল নেটওয়ার্কের লক্ষ্য হলো লাইট নোডগুলোর ডাটা পাওয়ার জন্য একটি বিকল্প উপায় প্রদান করা, যার জন্য ফুল নোডগুলোকে বিশ্বাস করার বা তাদের কাজের পরিমাণ উল্লেখযোগ্যভাবে বাড়ানোর প্রয়োজন হয় না। এটি করার উপায় হলো ইথিরিয়াম নোডগুলোর জন্য নেটওয়ার্ক জুড়ে ডাটা শেয়ার করার একটি নতুন পদ্ধতি চালু করা।
-## পোর্টাল নেটওয়ার্ক কীভাবে কাজ করে? {#how-does-portal-network-work}
+## পোর্টাল নেটওয়ার্ক কীভাবে কাজ করে? {#how-does-portal-network-work}
-ইথেরিয়াম নোডগুলির কঠোর প্রোটোকল রয়েছে যা নির্ধারণ করে যে তারা একে অপরের সাথে কীভাবে যোগাযোগ করবে। এক্সিকিউশন ক্লায়েন্টগুলি [DevP2P](/developers/docs/networking-layer/#devp2p) নামে পরিচিত সাবপ্রোটোকলগুলির একটি সেট ব্যবহার করে যোগাযোগ করে, যেখানে কনসেন্সাস ক্লায়েন্টগুলি [libP2P](/developers/docs/networking-layer/#libp2p) নামক সাবপ্রোটোকলগুলির একটি ভিন্ন স্ট্যাক ব্যবহার করে। এগুলি নোডগুলির মধ্যে যে ধরনের ডেটা পাস করা যায় তা নির্ধারণ করে।
+ইথিরিয়াম নোডগুলোর কঠোর প্রটোকল রয়েছে যা নির্ধারণ করে তারা কীভাবে একে অপরের সাথে যোগাযোগ করবে। এক্সিকিউশন ক্লায়েন্ট সাবপ্রটোকলের একটি সেট ব্যবহার করে যোগাযোগ করে যা [DevP2P](/developers/docs/networking-layer/#devp2p) নামে পরিচিত, অন্যদিকে কনসেন্সাস ক্লায়েন্ট সাবপ্রটোকলের একটি ভিন্ন স্ট্যাক ব্যবহার করে যাকে [libP2P](/developers/docs/networking-layer/#libp2p) বলা হয়। এগুলো নির্ধারণ করে যে নোডগুলোর মধ্যে কী ধরনের ডাটা আদান-প্রদান করা যেতে পারে।
-
+
-নোডগুলি [JSON-RPC API](/developers/docs/apis/json-rpc/) এর মাধ্যমে নির্দিষ্ট ডেটাও পরিবেশন করতে পারে, যা হলো সেই পদ্ধতি যার মাধ্যমে অ্যাপ এবং ওয়ালেটগুলি ইথেরিয়াম নোডগুলির সাথে তথ্য বিনিময় করে। যাইহোক, এর কোনোটিই লাইট ক্লায়েন্টদের কাছে ডেটা পরিবেশন করার জন্য আদর্শ প্রোটোকল নয়।
+নোডগুলো [JSON-RPC API](/developers/docs/apis/json-rpc/)-এর মাধ্যমে নির্দিষ্ট ডাটাও সার্ভ করতে পারে, এভাবেই অ্যাপ এবং ওয়ালেট ইথিরিয়াম নোডগুলোর সাথে তথ্য সোয়াপ করে। তবে, এগুলোর কোনোটিই লাইট ক্লায়েন্টদের ডাটা সার্ভ করার জন্য আদর্শ প্রটোকল নয়।
-লাইট ক্লায়েন্টরা বর্তমানে DevP2P বা libP2p-এর মাধ্যমে চেইন ডেটার নির্দিষ্ট অংশের জন্য অনুরোধ করতে পারে না কারণ সেই প্রোটোকলগুলি শুধুমাত্র চেইন সিঙ্ক্রোনাইজেশন এবং ব্লক ও লেনদেনের গসিপিং সক্ষম করার জন্য ডিজাইন করা হয়েছে। লাইট ক্লায়েন্টরা এই তথ্য ডাউনলোড করতে চায় না কারণ এটি তাদের "লাইট" থাকা থেকে বিরত রাখবে।
+লাইট ক্লায়েন্টরা বর্তমানে DevP2P বা libP2p-এর মাধ্যমে চেইন ডাটার নির্দিষ্ট অংশের জন্য রিকোয়েস্ট করতে পারে না কারণ ওই প্রটোকলগুলো শুধুমাত্র চেইন সিঙ্ক্রোনাইজেশন এবং ব্লকস ও লেনদেন-এর গসিপিং সক্ষম করার জন্য ডিজাইন করা হয়েছে। লাইট ক্লায়েন্টরা এই তথ্য ডাউনলোড করতে চায় না কারণ এটি তাদের "লাইট" হওয়া থেকে বিরত করবে।
-JSON-RPC API-ও লাইট ক্লায়েন্ট ডেটা অনুরোধের জন্য একটি আদর্শ পছন্দ নয়, কারণ এটি একটি নির্দিষ্ট সম্পূর্ণ নোড বা কেন্দ্রীভূত RPC প্রদানকারীর সাথে সংযোগের উপর নির্ভর করে যা ডেটা পরিবেশন করতে পারে। এর মানে হল লাইট ক্লায়েন্টকে সেই নির্দিষ্ট নোড/প্রদানকারীর সৎ থাকার উপর বিশ্বাস করতে হয়, এবং সম্পূর্ণ নোডটিকেও অনেক লাইট ক্লায়েন্টের থেকে প্রচুর অনুরোধ সামলাতে হতে পারে, যা তাদের ব্যান্ডউইথের প্রয়োজনীয়তা বাড়িয়ে তোলে।
+JSON-RPC API-ও লাইট ক্লায়েন্ট ডাটা রিকোয়েস্টের জন্য একটি আদর্শ পছন্দ নয়, কারণ এটি একটি নির্দিষ্ট ফুল নোড বা সেন্ট্রালাইজড RPC প্রোভাইডারের সাথে সংযোগের ওপর নির্ভর করে যা ডাটা সার্ভ করতে পারে। এর মানে হলো লাইট ক্লায়েন্টকে সৎ হওয়ার জন্য ওই নির্দিষ্ট নোড/প্রোভাইডারকে বিশ্বাস করতে হবে, এবং ফুল নোডটিকে অনেক লাইট ক্লায়েন্টের কাছ থেকে প্রচুর রিকোয়েস্ট হ্যান্ডেল করতে হতে পারে, যা তাদের ব্যান্ডউইথ রিকোয়ারমেন্ট বাড়িয়ে দেয়।
-পোর্টাল নেটওয়ার্কের মূল উদ্দেশ্য হল বিদ্যমান ইথেরিয়াম ক্লায়েন্টদের ডিজাইন সীমাবদ্ধতার বাইরে, বিশেষ করে লাইটনেসের জন্য নির্মাণ করে, পুরো ডিজাইনটি পুনর্বিবেচনা করা।
+পোর্টাল নেটওয়ার্কের উদ্দেশ্য হলো বিদ্যমান ইথিরিয়াম ক্লায়েন্টগুলোর ডিজাইনের সীমাবদ্ধতার বাইরে, বিশেষভাবে লাইটনেসের জন্য তৈরি করে পুরো ডিজাইনটি নিয়ে নতুন করে ভাবা।
-পোর্টাল নেটওয়ার্কের মূল ধারণা হল একটি [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (Bittorrent-এর মতো) ব্যবহার করে একটি লাইটওয়েট DevP2P স্টাইলের পিয়ার-টু-পিয়ার বিকেন্দ্রীভূত নেটওয়ার্কের মাধ্যমে লাইট ক্লায়েন্টদের প্রয়োজনীয় তথ্য, যেমন ঐতিহাসিক ডেটা এবং চেইনের বর্তমান হেডের পরিচয়, পরিবেশন করার মাধ্যমে বর্তমান নেটওয়ার্কিং স্ট্যাকের সেরা অংশগুলি গ্রহণ করা।
+পোর্টাল নেটওয়ার্কের মূল ধারণা হলো বর্তমান নেটওয়ার্কিং স্ট্যাকের সেরা অংশগুলো নেওয়া, যাতে লাইট ক্লায়েন্টদের প্রয়োজনীয় তথ্য, যেমন ঐতিহাসিক ডাটা এবং চেইনের বর্তমান হেডের পরিচয়, একটি [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (বিউটরেন্টের মতো) ব্যবহার করে একটি লাইটওয়েট DevP2P স্টাইলের পিয়ার-টু-পিয়ার ডিসেন্ট্রালাইজড নেটওয়ার্কের মাধ্যমে সার্ভ করা যায়।
-এর ধারণাটি হলো প্রতিটি নোডে মোট ঐতিহাসিক ইথেরিয়াম ডেটার ছোট অংশ এবং কিছু নির্দিষ্ট নোডের দায়িত্ব যোগ করা। তারপর, অনুরোধ করা নির্দিষ্ট ডেটা সংরক্ষণকারী নোডগুলি খুঁজে বের করে এবং তাদের থেকে তা পুনরুদ্ধার করে অনুরোধগুলি পরিবেশন করা হয়।
+ধারণাটি হলো প্রতিটি নোডে মোট ঐতিহাসিক ইথিরিয়াম ডাটার ছোট অংশ এবং কিছু নির্দিষ্ট নোডের দায়িত্ব যোগ করা। তারপর, যে নির্দিষ্ট ডাটার রিকোয়েস্ট করা হয়েছিল তা সংরক্ষণকারী নোডগুলো খুঁজে বের করে এবং তাদের কাছ থেকে তা পুনরুদ্ধার করে রিকোয়েস্টগুলো সার্ভ করা হয়।
-এটি লাইট নোডগুলির একটি একক নোড খুঁজে বের করা এবং তাদের প্রচুর পরিমাণে ডেটা ফিল্টার ও পরিবেশন করার অনুরোধ করার সাধারণ মডেলটিকে উল্টে দেয়; পরিবর্তে, তারা দ্রুত নোডগুলির একটি বড় নেটওয়ার্ক ফিল্টার করে যার প্রতিটি অল্প পরিমাণে ডেটা পরিচালনা করে।
+এটি লাইট নোডগুলোর একটি একক নোড খুঁজে বের করা এবং তাদের বিপুল পরিমাণ ডাটা ফিল্টার ও সার্ভ করার রিকোয়েস্ট করার সাধারণ মডেলটিকে উল্টে দেয়; এর পরিবর্তে, তারা দ্রুত নোডগুলোর একটি বড় নেটওয়ার্ক ফিল্টার করে যা প্রত্যেকে অল্প পরিমাণ ডাটা হ্যান্ডেল করে।
-এর লক্ষ্য হলো লাইটওয়েট পোর্টাল ক্লায়েন্টদের একটি বিকেন্দ্রীভূত নেটওয়ার্ককে নিম্নলিখিত কাজগুলো করার অনুমতি দেওয়া:
+লক্ষ্য হলো লাইটওয়েট পোর্টাল ক্লায়েন্টগুলোর একটি ডিসেন্ট্রালাইজড নেটওয়ার্ককে নিম্নলিখিত কাজগুলো করতে দেওয়া:
- চেইনের হেড ট্র্যাক করা
-- সাম্প্রতিক এবং ঐতিহাসিক চেইন ডেটা সিঙ্ক করা
-- স্টেট ডেটা পুনরুদ্ধার করা
-- লেনদেন সম্প্রচার করা
-- [EVM](/developers/docs/evm/) ব্যবহার করে লেনদেন নির্বাহ করা
+- সাম্প্রতিক এবং ঐতিহাসিক চেইন ডাটা সিঙ্ক করা
+- স্টেট ডাটা পুনরুদ্ধার করা
+- লেনদেন ব্রডকাস্ট করা
+- [EVM](/developers/docs/evm/) ব্যবহার করে লেনদেন এক্সিকিউট করা
-এই নেটওয়ার্ক ডিজাইনের সুবিধাগুলি হল:
+এই নেটওয়ার্ক ডিজাইনের সুবিধাগুলো হলো:
-- কেন্দ্রীভূত প্রদানকারীদের উপর নির্ভরতা হ্রাস করা
-- ইন্টারনেট ব্যান্ডউইথ ব্যবহার হ্রাস করা
-- ন্যূনতম বা শূন্য সিঙ্কিং
-- সম্পদ-সীমাবদ্ধ ডিভাইসগুলিতে অ্যাক্সেসযোগ্য (\<1 GB RAM, \<100 MB ডিস্ক স্পেস, 1 CPU)
+- সেন্ট্রালাইজড প্রোভাইডারদের ওপর নির্ভরতা কমানো
+- ইন্টারনেট ব্যান্ডউইথ ব্যবহার কমানো
+- সিঙ্কিং কমানো বা শূন্য করা
+- রিসোর্স-সীমাবদ্ধ ডিভাইসগুলোতে অ্যাক্সেসযোগ্য (<1 GB RAM, <100 MB ডিস্ক স্পেস, 1 CPU)
-নীচের টেবিলটি বিদ্যমান ক্লায়েন্টদের সেই ফাংশনগুলি দেখায় যা পোর্টাল নেটওয়ার্ক দ্বারা সরবরাহ করা যেতে পারে, যা ব্যবহারকারীদের খুব কম-রিসোর্স ডিভাইসে এই ফাংশনগুলি অ্যাক্সেস করতে সক্ষম করে।
+নিচের টেবিলটি বিদ্যমান ক্লায়েন্টগুলোর ফাংশনগুলো দেখায় যা পোর্টাল নেটওয়ার্ক দ্বারা সরবরাহ করা যেতে পারে, যা ব্যবহারকারীদের খুব লো-রিসোর্স ডিভাইসগুলোতে এই ফাংশনগুলো অ্যাক্সেস করতে সক্ষম করে।
-### পোর্টাল নেটওয়ার্কসমূহ
+### পোর্টাল নেটওয়ার্কগুলো
-| বিকন লাইট ক্লায়েন্ট | স্টেট নেটওয়ার্ক | লেনদেন গসিপ | হিস্টোরি নেটওয়ার্ক |
-| -------------------- | -------------------------------------- | ---------------- | ------------------- |
-| বিকন চেইন লাইট | অ্যাকাউন্ট এবং কন্ট্র্যাক্ট সংগ্রহস্থল | লাইটওয়েট মেমপুল | হেডার |
-| প্রোটোকল ডেটা | | | ব্লক বডি |
-| | | | রসিদ |
+| বিকন লাইট ক্লায়েন্ট | স্টেট নেটওয়ার্ক | ট্রানজেকশন গসিপ | হিস্ট্রি নেটওয়ার্ক |
+| ------------------- | ---------------------------- | ------------------- | --------------- |
+| বিকন চেইন লাইট | একাউন্ট এবং কন্ট্রাক্ট স্টোরেজ | লাইটওয়েট মেমপুল | হেডারস |
+| প্রটোকল ডাটা | | | ব্লক বডিস |
+| | | | রিসিপ্টস |
-## ডিফল্টরূপে ক্লায়েন্ট ডাইভারসিটি {#client-diversity-as-default}
+## ডিফল্টরূপে ক্লায়েন্ট ডাইভার্সিটি {#client-diversity-as-default}
-পোর্টাল নেটওয়ার্ক ডেভেলপাররাও প্রথম দিন থেকেই চারটি পৃথক পোর্টাল নেটওয়ার্ক ক্লায়েন্ট তৈরি করার ডিজাইনের সিদ্ধান্ত নিয়েছিল।
+পোর্টাল নেটওয়ার্ক ডেভেলপাররাও প্রথম দিন থেকেই চারটি আলাদা পোর্টাল নেটওয়ার্ক ক্লায়েন্ট তৈরি করার ডিজাইন চয়েস নিয়েছিলেন।
-পোর্টাল নেটওয়ার্ক ক্লায়েন্টগুলি হল:
+পোর্টাল নেটওয়ার্ক ক্লায়েন্টগুলো হলো:
-- [Trin](https://github.com/ethereum/trin): রাস্ট-এ লেখা
-- [Fluffy](https://fluffy.guide): নিম-এ লেখা
-- [Ultralight](https://github.com/ethereumjs/ultralight): টাইপস্ক্রিপ্ট-এ লেখা
-- [Shisui](https://github.com/zen-eth/shisui): গো-তে লেখা
+- [Trin](https://github.com/ethereum/trin): Rust-এ লেখা
+- [Fluffy](https://fluffy.guide): Nim-এ লেখা
+- [Ultralight](https://github.com/ethereumjs/ultralight): Typescript-এ লেখা
+- [Shisui](https://github.com/zen-eth/shisui): Go-তে লেখা
-একাধিক স্বাধীন ক্লায়েন্ট ইমপ্লিমেন্টেশন থাকা ইথেরিয়াম নেটওয়ার্কের স্থিতিস্থাপকতা এবং বিকেন্দ্রীকরণকে বাড়িয়ে তোলে।
+একাধিক স্বাধীন ক্লায়েন্ট ইমপ্লিমেন্টেশন থাকা ইথিরিয়াম নেটওয়ার্কের স্থিতিস্থাপকতা এবং ডিসেন্ট্রালাইজেশন বাড়ায়।
-যদি একটি ক্লায়েন্ট সমস্যা বা দুর্বলতার সম্মুখীন হয়, তবে অন্যান্য ক্লায়েন্টরা মসৃণভাবে কাজ চালিয়ে যেতে পারে, যা একটি একক ব্যর্থতার বিন্দুকে প্রতিরোধ করে। উপরন্তু, বিভিন্ন ক্লায়েন্ট ইমপ্লিমেন্টেশন উদ্ভাবন এবং প্রতিযোগিতাকে উৎসাহিত করে, যা ইকোসিস্টেমের মধ্যে উন্নতির চালিকাশক্তি এবং মনোকালচার ঝুঁকি হ্রাস করে।
+যদি একটি ক্লায়েন্ট সমস্যা বা দুর্বলতার সম্মুখীন হয়, তবে অন্যান্য ক্লায়েন্টগুলো মসৃণভাবে কাজ চালিয়ে যেতে পারে, যা সিঙ্গেল পয়েন্ট অফ ফেইলিওর প্রতিরোধ করে। এছাড়াও, বৈচিত্র্যময় ক্লায়েন্ট ইমপ্লিমেন্টেশন উদ্ভাবন এবং প্রতিযোগিতাকে উৎসাহিত করে, যা ইকোসিস্টেমের মধ্যে উন্নতি সাধন করে এবং মনোকালচার ঝুঁকি কমায়।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [পোর্টাল নেটওয়ার্ক (পাইপার মেরিয়াম ডেভকন বোগোটাতে)](https://www.youtube.com/watch?v=0stc9jnQLXA)।
-- [পোর্টাল নেটওয়ার্ক ডিসকর্ড](https://discord.gg/CFFnmE7Hbs)
-- [পোর্টাল নেটওয়ার্ক ওয়েবসাইট](https://www.ethportal.net/)
+- [পোর্টাল নেটওয়ার্ক (ডেভকন বোগোটায় পাইপার মেরিয়াম)](https://www.youtube.com/watch?v=0stc9jnQLXA)।
+- [পোর্টাল নেটওয়ার্ক ডিসকর্ড](https://discord.gg/CFFnmE7Hbs)
+- [পোর্টাল নেটওয়ার্ক ওয়েবসাইট](https://www.ethportal.net/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/networks/index.md b/public/content/translations/bn/developers/docs/networks/index.md
index f0f61ab3297..2ecdb719887 100644
--- a/public/content/translations/bn/developers/docs/networks/index.md
+++ b/public/content/translations/bn/developers/docs/networks/index.md
@@ -1,216 +1,216 @@
---
-title: "নেটওয়ার্ক"
-description: "ইথেরিয়াম নেটওয়ার্কের একটি সংক্ষিপ্ত বিবরণ এবং আপনার অ্যাপ্লিকেশন পরীক্ষা করার জন্য টেস্টনেট ইথার (ETH) কোথা থেকে পাবেন।"
+title: নেটওয়ার্ক
+description: ইথিরিয়ামের নেটওয়ার্কগুলোর একটি ওভারভিউ এবং আপনার অ্যাপ্লিকেশন পরীক্ষা করার জন্য কোথা থেকে টেস্টনেট ইথার (ETH) পাবেন।
lang: bn
---
-ইথেরিয়াম নেটওয়ার্কগুলি হলো সংযুক্ত কম্পিউটারগুলির একটি গ্রুপ যা ইথেরিয়াম প্রোটোকল ব্যবহার করে একে অপরের সাথে যোগাযোগ করে। শুধুমাত্র একটি ইথেরিয়াম মেইননেট আছে, তবে একই প্রোটোকলের নিয়ম মেনে চলা স্বাধীন নেটওয়ার্কগুলি পরীক্ষা এবং ডেভেলপমেন্টের উদ্দেশ্যে তৈরি করা যেতে পারে। অনেকগুলি স্বাধীন "নেটওয়ার্ক" আছে যা একে অপরের সাথে ইন্টারঅ্যাক্ট না করে প্রোটোকল মেনে চলে। আপনি এমনকি আপনার স্মার্ট কন্ট্র্যাক্ট এবং web3 অ্যাপগুলি পরীক্ষা করার জন্য নিজের কম্পিউটারে স্থানীয়ভাবে একটি শুরু করতে পারেন।
+[Ethereum](/) নেটওয়ার্ক হলো সংযুক্ত কম্পিউটারের গ্রুপ যা ইথিরিয়াম প্রটোকল ব্যবহার করে যোগাযোগ করে। ইথিরিয়াম মেইননেট (Mainnet) মাত্র একটিই আছে, তবে টেস্টিং এবং ডেভেলপমেন্টের উদ্দেশ্যে একই প্রটোকল নিয়ম মেনে স্বাধীন নেটওয়ার্ক তৈরি করা যেতে পারে। এমন অনেক স্বাধীন "নেটওয়ার্ক" রয়েছে যা একে অপরের সাথে যোগাযোগ না করেই প্রটোকল মেনে চলে। আপনি আপনার স্মার্ট কন্ট্রাক্ট এবং ওয়েব3 (web3) অ্যাপগুলো পরীক্ষা করার জন্য নিজের কম্পিউটারে লোকালি একটি নেটওয়ার্ক চালু করতে পারেন।
-আপনার ইথেরিয়াম অ্যাকাউন্ট বিভিন্ন নেটওয়ার্কে কাজ করবে, কিন্তু আপনার অ্যাকাউন্টের ব্যালেন্স এবং ট্রানজ্যাকশনের ইতিহাস প্রধান ইথেরিয়াম নেটওয়ার্ক থেকে স্থানান্তরিত হবে না। পরীক্ষার উদ্দেশ্যে, কোন নেটওয়ার্কগুলি উপলব্ধ এবং কীভাবে টেস্টনেট ETH নিয়ে পরীক্ষা নিরীক্ষা করা যায় তা জানা দরকার। সাধারণত, নিরাপত্তার কথা ভেবে, মেইননেট অ্যাকাউন্ট টেস্টনেটে বা টেস্টনেটের অ্যাকাউন্ট মেইননেটে পুনরায় ব্যবহার করার সুপারিশ করা হয় না।
+আপনার ইথিরিয়াম একাউন্ট বিভিন্ন নেটওয়ার্কে কাজ করবে, তবে আপনার একাউন্ট ব্যালেন্স এবং লেনদেনের ইতিহাস মূল ইথিরিয়াম নেটওয়ার্ক থেকে স্থানান্তরিত হবে না। টেস্টিংয়ের উদ্দেশ্যে, কোন নেটওয়ার্কগুলো উপলব্ধ এবং পরীক্ষা করার জন্য কীভাবে টেস্টনেট ETH পাওয়া যায় তা জানা দরকারী। সাধারণভাবে, নিরাপত্তার কথা বিবেচনা করে, টেস্টনেটে মেইননেট একাউন্ট বা মেইননেটে টেস্টনেট একাউন্ট পুনরায় ব্যবহার করার পরামর্শ দেওয়া হয় না।
## পূর্বশর্ত {#prerequisites}
-বিভিন্ন নেটওয়ার্ক সম্পর্কে পড়ার আগে আপনার [ইথেরিয়ামের মূল বিষয়গুলি](/developers/docs/intro-to-ethereum/) বোঝা উচিত, কারণ টেস্ট নেটওয়ার্কগুলি আপনাকে ইথেরিয়ামের একটি সস্তা, নিরাপদ সংস্করণ দেবে যা নিয়ে আপনি পরীক্ষা করতে পারবেন।
+বিভিন্ন নেটওয়ার্ক সম্পর্কে পড়ার আগে আপনার [ইথিরিয়ামের বেসিক](/developers/docs/intro-to-ethereum/) বোঝা উচিত, কারণ টেস্ট নেটওয়ার্কগুলো আপনাকে পরীক্ষা করার জন্য ইথিরিয়ামের একটি সস্তা এবং নিরাপদ সংস্করণ প্রদান করবে।
-## পাবলিক নেটওয়ার্ক {#public-networks}
+## পাবলিক নেটওয়ার্ক {#public-networks}
-ইন্টারনেট সংযোগ আছে এমন বিশ্বের যে কেউ পাবলিক নেটওয়ার্কগুলিতে অ্যাক্সেস করতে পারে। যে কেউ একটি পাবলিক ব্লকচেইনে ট্রানজ্যাকশন পড়তে বা তৈরি করতে পারে এবং কার্যকর হওয়া ট্রানজ্যাকশনগুলি যাচাই করতে পারে। পিয়ারদের মধ্যে কনসেন্সাস ট্রানজ্যাকশনগুলির অন্তর্ভুক্তি এবং নেটওয়ার্কের স্টেট সম্পর্কে সিদ্ধান্ত নেয়।
+ইন্টারনেট সংযোগ থাকা বিশ্বের যে কেউ পাবলিক নেটওয়ার্কগুলোতে প্রবেশ করতে পারে। যে কেউ একটি পাবলিক ব্লকচেইন-এ লেনদেন পড়তে বা তৈরি করতে পারে এবং সম্পাদিত লেনদেনগুলো যাচাই করতে পারে। পিয়ারদের মধ্যে কনসেন্সাস লেনদেনের অন্তর্ভুক্তি এবং নেটওয়ার্কের স্টেট নির্ধারণ করে।
-### ইথেরিয়াম মেইননেট {#ethereum-mainnet}
+### ইথিরিয়াম মেইননেট {#ethereum-mainnet}
-মেইননেট হল প্রাথমিক পাবলিক ইথেরিয়াম প্রোডাকশন ব্লকচেইন, যেখানে ডিস্ট্রিবিউটেড লেজারে আসল মূল্যের ট্রানজ্যাকশনগুলি ঘটে।
+মেইননেট হলো প্রাথমিক পাবলিক ইথিরিয়াম প্রোডাকশন ব্লকচেইন, যেখানে ডিস্ট্রিবিউটেড লেজার-এ প্রকৃত-মূল্যের লেনদেন ঘটে।
-যখন মানুষ এবং এক্সচেঞ্জগুলি ETH-এর দাম নিয়ে আলোচনা করে, তারা মেইননেট ETH সম্পর্কে কথা বলে।
+যখন মানুষ এবং এক্সচেঞ্জগুলো ETH-এর দাম নিয়ে আলোচনা করে, তখন তারা মেইননেট ETH-এর কথাই বলে।
-### ইথেরিয়াম টেস্টনেট {#ethereum-testnets}
+### ইথিরিয়াম টেস্টনেট {#ethereum-testnets}
-মেইননেট ছাড়াও, পাবলিক টেস্টনেট রয়েছে। এইগুলি এমন নেটওয়ার্ক যা প্রোটোকল ডেভেলপার বা স্মার্ট কন্ট্র্যাক্ট ডেভেলপাররা মেইননেটে ডিপ্লয়মেন্টের আগে প্রোডাকশনের মতো পরিবেশে প্রোটোকল আপগ্রেড এবং সম্ভাব্য স্মার্ট কন্ট্র্যাক্ট উভয়ই পরীক্ষা করার জন্য ব্যবহার করে। এটিকে প্রোডাকশন বনাম স্টেজিং সার্ভারের একটি উপমা হিসেবে ভাবুন।
+মেইননেট ছাড়াও, পাবলিক টেস্টনেট রয়েছে। এগুলো হলো এমন নেটওয়ার্ক যা প্রটোকল ডেভেলপার বা স্মার্ট কন্ট্রাক্ট ডেভেলপাররা মেইননেটে ডিপ্লয় করার আগে প্রোডাকশনের মতো পরিবেশে প্রটোকল আপগ্রেড এবং সম্ভাব্য স্মার্ট কন্ট্রাক্ট উভয়ই পরীক্ষা করার জন্য ব্যবহার করে। এটিকে প্রোডাকশন বনাম স্টেজিং সার্ভারের একটি অ্যানালগ হিসেবে ভাবুন।
-আপনার লেখা যেকোনো কন্ট্র্যাক্ট কোড মেইননেটে ডিপ্লয় করার আগে একটি টেস্টনেটে পরীক্ষা করা উচিত। যেসব ডিএ্যাপস বিদ্যমান স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টিগ্রেট করে, তাদের বেশিরভাগ প্রজেক্টের কপি টেস্টনেটে ডিপ্লয় করা আছে।
+মেইননেটে ডিপ্লয় করার আগে আপনার লেখা যেকোনো কন্ট্রাক্ট কোড একটি টেস্টনেটে পরীক্ষা করা উচিত। বিদ্যমান স্মার্ট কন্ট্রাক্টগুলোর সাথে ইন্টিগ্রেট করা ডিএ্যাপস-এর মধ্যে, বেশিরভাগ প্রজেক্টের কপি টেস্টনেটে ডিপ্লয় করা থাকে।
-বেশিরভাগ টেস্টনেট একটি পারমিশনড প্রুফ-অফ-অথরিটি কনসেন্সাস মেকানিজম ব্যবহার করে শুরু হয়েছিল। এর মানে হল অল্প সংখ্যক নোডকে ট্রানজ্যাকশন যাচাই করতে এবং নতুন ব্লক তৈরি করার জন্য বেছে নেওয়া হয় – এই প্রক্রিয়ায় তারা তাদের পরিচয় স্টেক করে। বিকল্পভাবে, কিছু টেস্টনেটে একটি উন্মুক্ত প্রুফ-অফ-স্টেক কনসেন্সাস মেকানিজম রয়েছে যেখানে প্রত্যেকে ইথেরিয়াম মেইননেটের মতোই একটি ভ্যালিডেটর চালানোর পরীক্ষা করতে পারে।
+বেশিরভাগ টেস্টনেট একটি পারমিশনড প্রুফ-অফ-অথরিটি কনসেন্সাস মেকানিজম ব্যবহার করে শুরু হয়েছিল। এর মানে হলো লেনদেন যাচাই করতে এবং নতুন ব্লক তৈরি করতে অল্প সংখ্যক নোড বেছে নেওয়া হয় – এই প্রক্রিয়ায় তাদের পরিচয় স্টেকিং করা হয়। বিকল্পভাবে, কিছু টেস্টনেটে একটি উন্মুক্ত প্রুফ-অফ-স্টেক কনসেন্সাস মেকানিজম রয়েছে যেখানে ইথিরিয়াম মেইননেটের মতোই সবাই একটি ভ্যালিডেটর চালানোর পরীক্ষা করতে পারে।
-টেস্টনেটে ETH-এর কোনো আসল মূল্য থাকার কথা নয়; তবে, কিছু নির্দিষ্ট ধরনের টেস্টনেট ETH-এর জন্য বাজার তৈরি হয়েছে যা দুর্লভ বা পাওয়া কঠিন হয়ে পড়েছে। যেহেতু ইথেরিয়ামের সাথে (এমনকি টেস্টনেটেও) ইন্টারঅ্যাক্ট করার জন্য আপনার ETH প্রয়োজন, তাই বেশিরভাগ মানুষ ফসেট থেকে বিনামূল্যে টেস্টনেট ETH পায়। বেশিরভাগ ফসেট হল ওয়েবঅ্যাপ যেখানে আপনি একটি অ্যাড্রেস ইনপুট করতে পারেন যেখানে আপনি ETH পাঠানোর অনুরোধ করেন।
+টেস্টনেটে ETH-এর কোনো বাস্তব মূল্য থাকার কথা নয়; তবে, নির্দিষ্ট ধরণের টেস্টনেট ETH-এর জন্য বাজার তৈরি হয়েছে যা দুষ্প্রাপ্য বা পাওয়া কঠিন হয়ে পড়েছে। যেহেতু ইথিরিয়ামের সাথে প্রকৃতপক্ষে ইন্টারঅ্যাক্ট করার জন্য আপনার ETH প্রয়োজন (এমনকি টেস্টনেটেও), তাই বেশিরভাগ মানুষ ফাসেট থেকে বিনামূল্যে টেস্টনেট ETH পায়। বেশিরভাগ ফাসেট হলো ওয়েবঅ্যাপ যেখানে আপনি একটি এডড্রেস ইনপুট করতে পারেন যেখানে আপনি ETH পাঠানোর অনুরোধ করেন।
#### আমার কোন টেস্টনেট ব্যবহার করা উচিত?
-ক্লায়েন্ট ডেভেলপাররা বর্তমানে যে দুটি পাবলিক টেস্টনেট রক্ষণাবেক্ষণ করছেন সেগুলি হল সেপোলিয়া এবং হুডি। সেপোলিয়া হল কন্ট্র্যাক্ট এবং অ্যাপ্লিকেশন ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশন পরীক্ষা করার একটি নেটওয়ার্ক। হুডি নেটওয়ার্ক প্রোটোকল ডেভেলপারদের নেটওয়ার্ক আপগ্রেড পরীক্ষা করতে দেয় এবং স্টেকারদের ভ্যালিডেটর চালানো পরীক্ষা করতে দেয়।
+ক্লায়েন্ট ডেভেলপাররা বর্তমানে যে দুটি পাবলিক টেস্টনেট রক্ষণাবেক্ষণ করছে তা হলো Sepolia এবং Hoodi। Sepolia হলো কন্ট্রাক্ট এবং অ্যাপ্লিকেশন ডেভেলপারদের তাদের অ্যাপ্লিকেশন পরীক্ষা করার জন্য একটি নেটওয়ার্ক। Hoodi নেটওয়ার্ক প্রটোকল ডেভেলপারদের নেটওয়ার্ক আপগ্রেড পরীক্ষা করতে দেয় এবং স্টেকারদের ভ্যালিডেটর চালানোর পরীক্ষা করতে দেয়।
-#### সেপোলিয়া {#sepolia}
+#### Sepolia {#sepolia}
-**অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য সেপোলিয়া হল সুপারিশকৃত ডিফল্ট টেস্টনেট**। সেপোলিয়া নেটওয়ার্ক একটি পারমিশনড ভ্যালিডেটর সেট ব্যবহার করে যা ক্লায়েন্ট ও টেস্টিং টিম দ্বারা নিয়ন্ত্রিত হয়।
+**অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য Sepolia হলো প্রস্তাবিত ডিফল্ট টেস্টনেট**। Sepolia নেটওয়ার্ক ক্লায়েন্ট এবং টেস্টিং টিম দ্বারা নিয়ন্ত্রিত একটি পারমিশনড ভ্যালিডেটর সেট ব্যবহার করে।
##### রিসোর্স
-- [ওয়েবসাইট](https://sepolia.dev/)
+- [ওয়েবসাইট](https://sepolia.dev/)
- [গিটহাব](https://github.com/eth-clients/sepolia)
-- [অটারস্ক্যান](https://sepolia.otterscan.io/)
-- [ইথারস্ক্যান](https://sepolia.etherscan.io)
-- [ব্লকস্কাউট](https://eth-sepolia.blockscout.com/)
+- [Otterscan](https://sepolia.otterscan.io/)
+- [Etherscan](https://sepolia.etherscan.io)
+- [Blockscout](https://eth-sepolia.blockscout.com/)
-##### ফসেট
+##### ফাসেট
-- [অ্যালকেমি সেপোলিয়া ফসেট](https://www.alchemy.com/faucets/ethereum-sepolia)
-- [চেইন প্ল্যাটফর্ম সেপোলিয়া ফসেট](https://faucet.chainplatform.co/faucets/ethereum-sepolia/)
-- [চেইনস্ট্যাক সেপোলিয়া ফসেট](https://faucet.chainstack.com/sepolia-testnet-faucet)
-- [ইথেরিয়াম ইকোসিস্টেম ফসেট](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia)
-- [ethfaucet.com সেপোলিয়া ফসেট](https://ethfaucet.com/networks/ethereum)
-- [Google ক্লাউড Web3 সেপোলিয়া ফসেট](https://cloud.google.com/application/web3/faucet/ethereum/sepolia)
-- [গ্র্যাবটিথ](https://grabteeth.xyz/)
-- [ইনফিউরা সেপোলিয়া ফসেট](https://www.infura.io/faucet)
-- [PoW ফসেট](https://sepolia-faucet.pk910.de/)
-- [কুইকনোড সেপোলিয়া ফসেট](https://faucet.quicknode.com/ethereum/sepolia)
+- [Alchemy Sepolia Faucet](https://www.alchemy.com/faucets/ethereum-sepolia)
+- [Chain Platform Sepolia Faucet](https://faucet.chainplatform.co/faucets/ethereum-sepolia/)
+- [Chainstack Sepolia Faucet](https://faucet.chainstack.com/sepolia-testnet-faucet)
+- [Ethereum Ecosystem Faucet](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia)
+- [ethfaucet.com Sepolia Faucet](https://ethfaucet.com/networks/ethereum)
+- [Google Cloud Web3 Sepolia Faucet](https://cloud.google.com/application/web3/faucet/ethereum/sepolia)
+- [Grabteeth](https://grabteeth.xyz/)
+- [Infura Sepolia Faucet](https://www.infura.io/faucet)
+- [PoW Faucet](https://sepolia-faucet.pk910.de/)
+- [QuickNode Sepolia Faucet](https://faucet.quicknode.com/ethereum/sepolia)
-#### হুডি {#hoodi}
+#### Hoodi {#hoodi}
-হুডি হলো ভ্যালিডেটিং এবং স্টেকিং পরীক্ষা করার জন্য একটি টেস্টনেট। যারা টেস্টনেট ভ্যালিডেটর চালাতে চান তাদের জন্য হুডি নেটওয়ার্কটি উন্মুক্ত। যেসব স্টেকাররা প্রোটোকল আপগ্রেডগুলি মেইননেটে ডিপ্লয় করার আগে পরীক্ষা করতে চান, তাদের হুডি ব্যবহার করা উচিত।
+Hoodi হলো ভ্যালিডেটিং এবং স্টেকিং পরীক্ষা করার জন্য একটি টেস্টনেট। Hoodi নেটওয়ার্কটি এমন ব্যবহারকারীদের জন্য উন্মুক্ত যারা একটি টেস্টনেট ভ্যালিডেটর চালাতে চান। মেইননেটে ডিপ্লয় করার আগে যে স্টেকাররা প্রটোকল আপগ্রেড পরীক্ষা করতে চান তাদের তাই Hoodi ব্যবহার করা উচিত।
- উন্মুক্ত ভ্যালিডেটর সেট, স্টেকাররা নেটওয়ার্ক আপগ্রেড পরীক্ষা করতে পারে
-- বড় স্টেট, জটিল স্মার্ট কন্ট্র্যাক্ট ইন্টারঅ্যাকশন পরীক্ষা করার জন্য উপযোগী
-- সিঙ্ক হতে বেশি সময় লাগে এবং একটি নোড চালানোর জন্য আরও বেশি স্টোরেজ প্রয়োজন
+- বড় স্টেট, জটিল স্মার্ট কন্ট্রাক্ট ইন্টারঅ্যাকশন পরীক্ষা করার জন্য দরকারী
+- সিঙ্ক হতে বেশি সময় লাগে এবং একটি নোড চালানোর জন্য বেশি স্টোরেজ প্রয়োজন
##### রিসোর্স
-- [ওয়েবসাইট](https://hoodi.ethpandaops.io/)
+- [ওয়েবসাইট](https://hoodi.ethpandaops.io/)
- [গিটহাব](https://github.com/eth-clients/hoodi)
- [এক্সপ্লোরার](https://explorer.hoodi.ethpandaops.io/)
-- [চেকপয়েন্ট সিঙ্ক](https://checkpoint-sync.hoodi.ethpandaops.io/)
-- [অটারস্ক্যান](https://hoodi.otterscan.io/)
-- [ইথারস্ক্যান](https://hoodi.etherscan.io/)
+- [চেকপয়েন্ট সিঙ্ক](https://checkpoint-sync.hoodi.ethpandaops.io/)
+- [Otterscan](https://hoodi.otterscan.io/)
+- [Etherscan](https://hoodi.etherscan.io/)
-##### ফসেট
+##### ফাসেট
-- [চেইন প্ল্যাটফর্ম হুডি ফসেট](https://faucet.chainplatform.co/faucets/ethereum-hoodi/)
-- [হুডি ফসেট](https://hoodi.ethpandaops.io/)
-- [PoW ফসেট](https://hoodi-faucet.pk910.de/)
+- [Chain Platform Hoodi Faucet](https://faucet.chainplatform.co/faucets/ethereum-hoodi/)
+- [Hoodi Faucet](https://hoodi.ethpandaops.io/)
+- [PoW Faucet](https://hoodi-faucet.pk910.de/)
-#### এফেমেরি {#ephemery}
+#### Ephemery {#ephemery}
-এফেমেরি হল এক বিশেষ ধরনের টেস্টনেট যা প্রতি মাসে সম্পূর্ণভাবে রিসেট হয়। এক্সিকিউশন এবং কনসেন্সাস স্টেট প্রতি ২৮ দিনে জেনেসিসে ফিরে যায়, যার মানে হল টেস্টনেটে যা কিছু ঘটে তা ক্ষণস্থায়ী। এটি স্বল্পমেয়াদী পরীক্ষা, দ্রুত নোড বুটস্ট্র্যাপ এবং 'হ্যালো ওয়ার্ল্ড' ধরনের অ্যাপ্লিকেশনের জন্য আদর্শ, যাদের স্থায়িত্বের প্রয়োজন নেই।
+Ephemery হলো এক অনন্য ধরণের টেস্টনেট যা প্রতি মাসে সম্পূর্ণভাবে রিসেট হয়। এক্সিকিউশন এবং কনসেন্সাস স্টেট প্রতি 28 দিনে জেনেসিসে ফিরে যায়, যার মানে টেস্টনেটে যা কিছু ঘটে তা ক্ষণস্থায়ী। এটি স্বল্পমেয়াদী টেস্টিং, দ্রুত নোড বুটস্ট্র্যাপ এবং 'hello world' ধরণের অ্যাপ্লিকেশনগুলোর জন্য আদর্শ করে তোলে যেগুলোর স্থায়ীত্বের প্রয়োজন নেই।
-- সর্বদা নতুন স্টেট, ভ্যালিডেটর এবং অ্যাপের স্বল্পমেয়াদী পরীক্ষা
-- শুধুমাত্র কন্ট্র্যাক্টের বেসিক সেট অন্তর্ভুক্ত
-- উন্মুক্ত ভ্যালিডেটর সেট এবং বড় আকারের ফান্ড সহজে অ্যাক্সেসযোগ্য
-- সবচেয়ে ছোট নোডের প্রয়োজনীয়তা এবং দ্রুততম সিঙ্ক, গড়ে <5GB
+- সর্বদা ফ্রেশ স্টেট, ভ্যালিডেটর এবং অ্যাপগুলোর স্বল্পমেয়াদী টেস্টিং
+- শুধুমাত্র কন্ট্রাক্টের বেসিক সেট অন্তর্ভুক্ত করে
+- উন্মুক্ত ভ্যালিডেটর সেট এবং প্রচুর পরিমাণে ফান্ড অ্যাক্সেস করা সহজ
+- সবচেয়ে ছোট নোড রিকোয়ারমেন্ট এবং দ্রুততম সিঙ্ক, গড়ে <5GB
##### রিসোর্স
-- [ওয়েবসাইট](https://ephemery.dev/)
+- [ওয়েবসাইট](https://ephemery.dev/)
- [গিটহাব](https://github.com/ephemery-testnet/ephemery-resources)
- [কমিউনিটি চ্যাট](https://matrix.to/#/#staker-testnet:matrix.org)
-- [ব্লকস্কাউট](https://explorer.ephemery.dev/)
-- [অটারস্ক্যান](https://otter.bordel.wtf/)
+- [Blockscout](https://explorer.ephemery.dev/)
+- [Otterscan](https://otter.bordel.wtf/)
- [বিকন এক্সপ্লোরার](https://beaconlight.ephemery.dev/)
-- [চেকপয়েন্ট সিঙ্ক](https://checkpoint-sync.ephemery.ethpandaops.io)
+- [চেকপয়েন্ট সিঙ্ক](https://checkpoint-sync.ephemery.ethpandaops.io)
- [লঞ্চপ্যাড](https://launchpad.ephemery.dev/)
-#### ফসেট
+#### ফাসেট
-- [বোরডেল ফসেট](https://faucet.bordel.wtf/)
-- [Pk910 PoW ফসেট](https://ephemery-faucet.pk910.de/)
+- [Bordel Faucet](https://faucet.bordel.wtf/)
+- [Pk910 PoW Faucet](https://ephemery-faucet.pk910.de/)
-#### হোলস্কি (অপ্রচলিত) {#holesky}
+#### Holesky (বাতিল) {#holesky}
-হোলস্কি টেস্টনেট সেপ্টেম্বর 2025 থেকে অপ্রচলিত। স্টেকিং অপারেটর এবং ইনফ্রাস্ট্রাকচার প্রদানকারীদের পরিবর্তে ভ্যালিডেটর পরীক্ষার জন্য হুডি ব্যবহার করা উচিত।
+Holesky টেস্টনেটটি সেপ্টেম্বর 2025 থেকে বাতিল করা হয়েছে। স্টেকিং অপারেটর এবং ইনফ্রাস্ট্রাকচার প্রোভাইডারদের ভ্যালিডেটর টেস্টিংয়ের জন্য এর পরিবর্তে Hoodi ব্যবহার করা উচিত।
-- [হোলস্কি টেস্টনেট শাটডাউন ঘোষণা](https://blog.ethereum.org/2025/09/01/holesky-shutdown-announcement) - _EF ব্লগ, ১-সেপ্টেম্বর-২০২৫_
-- [হোলস্কি এবং হুডি টেস্টনেট আপডেট](https://blog.ethereum.org/2025/03/18/hoodi-holesky) - _EF ব্লগ, ১৮-মার্চ-২০২৫_
+- [Holesky টেস্টনেট শাটডাউন ঘোষণা](https://blog.ethereum.org/2025/09/01/holesky-shutdown-announcement) - _EF ব্লগ, 1-সেপ্টেম্বর-2025_
+- [Holesky এবং Hoodi টেস্টনেট আপডেট](https://blog.ethereum.org/2025/03/18/hoodi-holesky) - _EF ব্লগ, 18-মার্চ-2025_
-### লেয়ার 2 টেস্টনেট {#layer-2-testnets}
+### লেয়ার ২ টেস্টনেট {#layer-2-testnets}
-[লেয়ার 2 (L2)](/layer-2/) হল একটি সম্মিলিত শব্দ যা ইথেরিয়াম স্কেলিং সলিউশনের একটি নির্দিষ্ট সেটকে বর্ণনা করতে ব্যবহৃত হয়। একটি লেয়ার 2 হল একটি আলাদা ব্লকচেইন যা ইথেরিয়ামকে প্রসারিত করে এবং ইথেরিয়ামের নিরাপত্তার নিশ্চয়তা উত্তরাধিকার সূত্রে পায়। লেয়ার 2 টেস্টনেট সাধারণত পাবলিক ইথেরিয়াম টেস্টনেটের সাথে দৃঢ়ভাবে সংযুক্ত থাকে।
+[লেয়ার ২ (L2)](/layer-2/) হলো ইথিরিয়াম স্কেলিং সলিউশনগুলোর একটি নির্দিষ্ট সেট বর্ণনা করার জন্য একটি যৌথ শব্দ। একটি লেয়ার ২ হলো একটি পৃথক ব্লকচেইন যা ইথিরিয়ামকে প্রসারিত করে এবং ইথিরিয়ামের নিরাপত্তার নিশ্চয়তাগুলো উত্তরাধিকার সূত্রে পায়। লেয়ার ২ টেস্টনেটগুলো সাধারণত পাবলিক ইথিরিয়াম টেস্টনেটগুলোর সাথে শক্তভাবে যুক্ত থাকে।
-#### আরবিট্রাম সেপোলিয়া {#arbitrum-sepolia}
+#### Arbitrum Sepolia {#arbitrum-sepolia}
-[আরবিট্রাম](https://arbitrum.io/)-এর জন্য একটি টেস্টনেট।
+[Arbitrum](https://arbitrum.io/)-এর জন্য একটি টেস্টনেট।
##### রিসোর্স
-- [ইথারস্ক্যান](https://sepolia.arbiscan.io/)
-- [ব্লকস্কাউট](https://sepolia-explorer.arbitrum.io/)
+- [Etherscan](https://sepolia.arbiscan.io/)
+- [Blockscout](https://sepolia-explorer.arbitrum.io/)
-##### ফসেট
+##### ফাসেট
-- [অ্যালকেমি আরবিট্রাম সেপোলিয়া ফসেট](https://www.alchemy.com/faucets/arbitrum-sepolia)
-- [চেইনলিংক আরবিট্রাম সেপোলিয়া ফসেট](https://faucets.chain.link/arbitrum-sepolia)
-- [ethfaucet.com আরবিট্রাম সেপোলিয়া ফসেট](https://ethfaucet.com/networks/arbitrum)
-- [কুইকনোড আরবিট্রাম সেপোলিয়া ফসেট](https://faucet.quicknode.com/arbitrum/sepolia)
+- [Alchemy Arbitrum Sepolia Faucet](https://www.alchemy.com/faucets/arbitrum-sepolia)
+- [Chainlink Arbitrum Sepolia faucet](https://faucets.chain.link/arbitrum-sepolia)
+- [ethfaucet.com Arbitrum Sepolia Faucet](https://ethfaucet.com/networks/arbitrum)
+- [QuickNode Arbitrum Sepolia Faucet](https://faucet.quicknode.com/arbitrum/sepolia)
-#### অপ্টিমিস্টিক সেপোলিয়া {#optimistic-sepolia}
+#### Optimistic Sepolia {#optimistic-sepolia}
-[অপ্টিমিজম](https://www.optimism.io/)-এর জন্য একটি টেস্টনেট।
+[Optimism](https://www.optimism.io/)-এর জন্য একটি টেস্টনেট।
##### রিসোর্স
-- [ইথারস্ক্যান](https://sepolia-optimistic.etherscan.io/)
-- [ব্লকস্কাউট](https://optimism-sepolia.blockscout.com/)
+- [Etherscan](https://sepolia-optimistic.etherscan.io/)
+- [Blockscout](https://optimism-sepolia.blockscout.com/)
-##### ফসেট
+##### ফাসেট
-- [অ্যালকেমি ফসেট](https://www.alchemy.com/faucets/optimism-sepolia)
-- [চেইনলিংক ফসেট](https://faucets.chain.link/optimism-sepolia)
-- [ethfaucet.com অপ্টিমিজম সেপোলিয়া ফসেট](https://ethfaucet.com/networks/optimism)
-- [টেস্টনেট ফসেট](https://docs.optimism.io/builders/tools/build/faucets)
+- [Alchemy Faucet](https://www.alchemy.com/faucets/optimism-sepolia)
+- [Chainlink Faucet](https://faucets.chain.link/optimism-sepolia)
+- [ethfaucet.com Optimism Sepolia Faucet](https://ethfaucet.com/networks/optimism)
+- [Testnet Faucet](https://docs.optimism.io/builders/tools/build/faucets)
-#### স্টার্কনেট সেপোলিয়া {#starknet-sepolia}
+#### Starknet Sepolia {#starknet-sepolia}
-[স্টার্কনেট](https://www.starknet.io)-এর জন্য একটি টেস্টনেট।
+[Starknet](https://www.starknet.io)-এর জন্য একটি টেস্টনেট।
##### রিসোর্স
-- [স্টার্কস্ক্যান](https://sepolia.voyager.online/)
+- [Voyager Sepolia Scan](https://sepolia.voyager.online/)
-##### ফসেট
+##### ফাসেট
-- [অ্যালকেমি ফসেট](https://www.alchemy.com/faucets/starknet-sepolia)
-- [ব্লাস্ট স্টার্কনেট সেপোলিয়া ফসেট](https://blastapi.io/faucets/starknet-sepolia-eth)
-- [স্টার্কনেট ফসেট](https://starknet-faucet.vercel.app/)
+- [Alchemy Faucet](https://www.alchemy.com/faucets/starknet-sepolia)
+- [Blast Starknet Sepolia Faucet](https://blastapi.io/faucets/starknet-sepolia-eth)
+- [Starknet Faucet](https://starknet-faucet.vercel.app/)
-## প্রাইভেট নেটওয়ার্ক {#private-networks}
+## প্রাইভেট নেটওয়ার্ক {#private-networks}
-একটি ইথেরিয়াম নেটওয়ার্ক একটি প্রাইভেট নেটওয়ার্ক যদি এর নোডগুলি কোনো পাবলিক নেটওয়ার্কের (অর্থাৎ, মেইননেট বা একটি টেস্টনেট) সাথে সংযুক্ত না থাকে। এই প্রসঙ্গে, প্রাইভেট মানে শুধুমাত্র সংরক্ষিত বা বিচ্ছিন্ন, সুরক্ষিত বা নিরাপদ নয়।
+একটি ইথিরিয়াম নেটওয়ার্ক হলো একটি প্রাইভেট নেটওয়ার্ক যদি এর নোডগুলো কোনো পাবলিক নেটওয়ার্কের (যেমন, মেইননেট বা একটি টেস্টনেট) সাথে সংযুক্ত না থাকে। এই প্রেক্ষাপটে, প্রাইভেট বলতে সুরক্ষিত বা নিরাপদ বোঝায় না, বরং সংরক্ষিত বা বিচ্ছিন্ন বোঝায়।
-### ডেভেলপমেন্ট নেটওয়ার্ক {#development-networks}
+### ডেভেলপমেন্ট নেটওয়ার্ক {#development-networks}
-একটি ইথেরিয়াম অ্যাপ্লিকেশন ডেভেলপ করার জন্য, আপনি এটি ডিপ্লয় করার আগে এটি কীভাবে কাজ করে তা দেখতে একটি প্রাইভেট নেটওয়ার্কে চালাতে চাইবেন। আপনি যেমন ওয়েব ডেভেলপমেন্টের জন্য আপনার কম্পিউটারে একটি লোকাল সার্ভার তৈরি করেন, তেমনি আপনার dapp পরীক্ষা করার জন্য একটি লোকাল ব্লকচেইন ইনস্ট্যান্স তৈরি করতে পারেন। এটি একটি পাবলিক টেস্টনেটের চেয়ে অনেক দ্রুত পুনরাবৃত্তির সুযোগ দেয়।
+একটি ইথিরিয়াম অ্যাপ্লিকেশন তৈরি করতে, এটি ডিপ্লয় করার আগে এটি কীভাবে কাজ করে তা দেখার জন্য আপনি এটিকে একটি প্রাইভেট নেটওয়ার্কে চালাতে চাইবেন। ওয়েব ডেভেলপমেন্টের জন্য আপনি যেভাবে আপনার কম্পিউটারে একটি লোকাল সার্ভার তৈরি করেন, ঠিক সেভাবেই আপনি আপনার ডিএ্যাপ পরীক্ষা করার জন্য একটি লোকাল ব্লকচেইন ইনস্ট্যান্স তৈরি করতে পারেন। এটি একটি পাবলিক টেস্টনেটের চেয়ে অনেক দ্রুত ইটারেশনের অনুমতি দেয়।
-এটিতে সহায়তা করার জন্য নিবেদিত প্রকল্প এবং টুলস রয়েছে। [ডেভেলপমেন্ট নেটওয়ার্ক](/developers/docs/development-networks/) সম্পর্কে আরও জানুন।
+এতে সহায়তা করার জন্য নিবেদিত প্রজেক্ট এবং টুল রয়েছে। [ডেভেলপমেন্ট নেটওয়ার্ক](/developers/docs/development-networks/) সম্পর্কে আরও জানুন।
-### কনসোর্টিয়াম নেটওয়ার্ক {#consortium-networks}
+### কনসোর্টিয়াম নেটওয়ার্ক {#consortium-networks}
-কনসেন্সাস প্রক্রিয়াটি বিশ্বস্ত নোডগুলির একটি পূর্ব-নির্ধারিত সেট দ্বারা নিয়ন্ত্রিত হয়। উদাহরণস্বরূপ, পরিচিত একাডেমিক প্রতিষ্ঠানগুলির একটি প্রাইভেট নেটওয়ার্ক যেখানে প্রতিটি একটি একক নোড পরিচালনা করে, এবং ব্লকগুলি নেটওয়ার্কের মধ্যে স্বাক্ষরকারীদের একটি থ্রেশহোল্ড দ্বারা যাচাই করা হয়।
+কনসেন্সাস প্রক্রিয়াটি বিশ্বস্ত নোডগুলোর একটি পূর্ব-নির্ধারিত সেট দ্বারা নিয়ন্ত্রিত হয়। উদাহরণস্বরূপ, পরিচিত একাডেমিক প্রতিষ্ঠানগুলোর একটি প্রাইভেট নেটওয়ার্ক যার প্রতিটি একটি একক নোড পরিচালনা করে এবং নেটওয়ার্কের মধ্যে স্বাক্ষরকারীদের একটি থ্রেশহোল্ড দ্বারা ব্লকস যাচাই করা হয়।
-যদি একটি পাবলিক ইথেরিয়াম নেটওয়ার্ক পাবলিক ইন্টারনেটের মতো হয়, একটি কনসোর্টিয়াম নেটওয়ার্ক একটি প্রাইভেট ইন্ট্রানেটের মতো।
+যদি একটি পাবলিক ইথিরিয়াম নেটওয়ার্ক পাবলিক ইন্টারনেটের মতো হয়, তবে একটি কনসোর্টিয়াম নেটওয়ার্ক একটি প্রাইভেট ইন্ট্রানেটের মতো।
-## কেন ইথেরিয়াম টেস্টনেটগুলির নাম মেট্রো স্টেশনের নামে রাখা হয়? {#why-naming}
+## কেন ইথিরিয়াম টেস্টনেটগুলোর নামকরণ মেট্রো স্টেশনের নামে করা হয়েছে? {#why-naming}
-অনেক ইথেরিয়াম টেস্টনেটের নাম বাস্তব-জগতের মেট্রো বা ট্রেন স্টেশনের নামে রাখা হয়েছে। এই নামকরণের ঐতিহ্যটি প্রথম দিকে শুরু হয়েছিল এবং এটি সেইসব বিশ্বব্যাপী শহরগুলিকে প্রতিফলিত করে যেখানে কন্ট্রিবিউটররা বসবাস করেছেন বা কাজ করেছেন। এটি প্রতীকী, স্মরণীয় এবং ব্যবহারিক। ঠিক যেমন টেস্টনেটগুলি ইথেরিয়াম মেইননেট থেকে বিচ্ছিন্ন, মেট্রো লাইনগুলি ভূপৃষ্ঠের ট্র্যাফিক থেকে আলাদাভাবে চলে।
+অনেক ইথিরিয়াম টেস্টনেটের নামকরণ বাস্তব-বিশ্বের মেট্রো বা ট্রেন স্টেশনের নামে করা হয়েছে। এই নামকরণের ঐতিহ্যটি প্রথম দিকে শুরু হয়েছিল এবং এটি সেই বৈশ্বিক শহরগুলোকে প্রতিফলিত করে যেখানে অবদানকারীরা বসবাস করেছেন বা কাজ করেছেন। এটি প্রতীকী, স্মরণীয় এবং ব্যবহারিক। ঠিক যেমন টেস্টনেটগুলো ইথিরিয়াম মেইননেট থেকে বিচ্ছিন্ন, মেট্রো লাইনগুলোও সারফেস ট্রাফিক থেকে আলাদাভাবে চলে।
-### সাধারণভাবে ব্যবহৃত এবং লিগ্যাসি টেস্টনেট {#common-and-legacy-testnets}
+### সাধারণত ব্যবহৃত এবং লিগ্যাসি টেস্টনেট {#common-and-legacy-testnets}
-- **সেপোলিয়া** - এথেন্স, গ্রীসের একটি মেট্রো-সংযুক্ত এলাকা। বর্তমানে স্মার্ট কন্ট্র্যাক্ট এবং dApp পরীক্ষার জন্য ব্যবহৃত হয়।
-- **হুডি** - ভারতের বেঙ্গালুরুর হুডি মেট্রো স্টেশনের নামে নামকরণ করা হয়েছে। ভ্যালিডেটর এবং প্রোটোকল আপগ্রেড পরীক্ষার জন্য ব্যবহৃত হয়।
-- **গোয়েরলি** _(অপ্রচলিত)_ - জার্মানির বার্লিনের গোর্লিটজার বাহনহফের নামে নামকরণ করা হয়েছে।
-- **রিঙ্কেবি** _(অপ্রচলিত)_ - একটি মেট্রো স্টেশনসহ স্টকহোমের একটি শহরতলির নামে নামকরণ করা হয়েছে।
-- **রোপস্টেন** _(অপ্রচলিত)_ - স্টকহোমের একটি এলাকা এবং প্রাক্তন ফেরি/মেট্রো টার্মিনালকে বোঝায়।
-- **কোভান** _(অপ্রচলিত)_ - সিঙ্গাপুরের একটি এমআরটি স্টেশনের নামে নামকরণ করা হয়েছে।
-- **মর্ডেন** _(অপ্রচলিত)_ - লন্ডনের একটি আন্ডারগ্রাউন্ড স্টেশনের নামে নামকরণ করা হয়েছে। ইথেরিয়ামের প্রথম পাবলিক টেস্টনেট।
+- **Sepolia** - গ্রিসের এথেন্সে একটি মেট্রো-সংযুক্ত এলাকা। বর্তমানে স্মার্ট কন্ট্রাক্ট এবং ডিএ্যাপ টেস্টিংয়ের জন্য ব্যবহৃত হয়।
+- **Hoodi** - ভারতের বেঙ্গালুরুতে Hoodi মেট্রো স্টেশনের নামে নামকরণ করা হয়েছে। ভ্যালিডেটর এবং প্রটোকল আপগ্রেড টেস্টিংয়ের জন্য ব্যবহৃত হয়।
+- **Goerli** _(বাতিল)_ - জার্মানির বার্লিনে Görlitzer Bahnhof-এর নামে নামকরণ করা হয়েছে।
+- **Rinkeby** _(বাতিল)_ - একটি মেট্রো স্টেশন সহ স্টকহোমের একটি শহরতলির নামে নামকরণ করা হয়েছে।
+- **Ropsten** _(বাতিল)_ - স্টকহোমের একটি এলাকা এবং প্রাক্তন ফেরি/মেট্রো টার্মিনালকে বোঝায়।
+- **Kovan** _(বাতিল)_ - সিঙ্গাপুরের একটি MRT স্টেশনের নামে নামকরণ করা হয়েছে।
+- **Morden** _(বাতিল)_ - লন্ডনের একটি আন্ডারগ্রাউন্ড স্টেশনের নামে নামকরণ করা হয়েছে। ইথিরিয়ামের প্রথম পাবলিক টেস্টনেট।
-### অন্যান্য বিশেষায়িত টেস্টনেট {#other-testnets}
+### অন্যান্য বিশেষায়িত টেস্টনেট {#other-testnets}
-কিছু টেস্টনেট স্বল্পমেয়াদী বা আপগ্রেড-নির্দিষ্ট পরীক্ষার জন্য তৈরি করা হয়েছিল এবং সেগুলি অগত্যা মেট্রো-থিমযুক্ত নয়:
+কিছু টেস্টনেট স্বল্পমেয়াদী বা আপগ্রেড-নির্দিষ্ট টেস্টিংয়ের জন্য তৈরি করা হয়েছিল এবং সেগুলো অগত্যা মেট্রো-থিমযুক্ত নয়:
-- **হোলস্কি** _(অপ্রচলিত)_ - প্রাগের হোলসোভিস স্টেশনের নামে নামকরণ করা হয়েছে। ভ্যালিডেটর পরীক্ষার জন্য ব্যবহৃত; ২০২৫ সালে অপ্রচলিত।
-- **কিলন**, **ঝেজিয়াং**, **শানডং**, **প্রেটার**, **পাইরমন্ট**, **অলিম্পিক** _(সবই অপ্রচলিত)_ এবং **এফেমেরি** - দ্য মার্জ, সাংহাই-এর মতো আপগ্রেড সিমুলেশন বা ভ্যালিডেটর পরীক্ষার জন্য বিশেষভাবে তৈরি করা হয়েছে। কিছু নাম মেট্রো-ভিত্তিক না হয়ে আঞ্চলিক বা থিম্যাটিক।
+- **Holesky** _(বাতিল)_ - প্রাগের Holešovice স্টেশনের নামে নামকরণ করা হয়েছে। ভ্যালিডেটর টেস্টিংয়ের জন্য ব্যবহৃত হয়; 2025 সালে বাতিল করা হয়েছে।
+- **Kiln**, **Zhejiang**, **Shandong**, **Prater**, **Pyrmont**, **Olympic** _(সবগুলো বাতিল)_ এবং **Ephemery** - দ্য মার্জ (The Merge), সাংহাই (Shanghai) বা ভ্যালিডেটর এক্সপেরিমেন্টের মতো আপগ্রেড সিমুলেশনের জন্য উদ্দেশ্যমূলকভাবে তৈরি। কিছু নাম মেট্রো-ভিত্তিক হওয়ার পরিবর্তে আঞ্চলিক বা থিম্যাটিক।
-মেট্রো স্টেশনের নাম ব্যবহার করা ডেভেলপারদের সাংখ্যিক চেইন আইডি-র উপর নির্ভর না করে দ্রুত টেস্টনেট সনাক্ত করতে এবং মনে রাখতে সাহায্য করে। এটি ইথেরিয়ামের সংস্কৃতিকেও প্রতিফলিত করে: ব্যবহারিক, বিশ্বব্যাপী এবং মানব-কেন্দ্রিক।
+মেট্রো স্টেশনের নাম ব্যবহার করা ডেভেলপারদের নিউমেরিক চেইন আইডিগুলোর উপর নির্ভর না করেই দ্রুত টেস্টনেটগুলো শনাক্ত করতে এবং মনে রাখতে সাহায্য করে। এটি ইথিরিয়ামের সংস্কৃতিকেও প্রতিফলিত করে: ব্যবহারিক, বৈশ্বিক এবং মানব-কেন্দ্রিক।
-## সম্পর্কিত টুলস {#related-tools}
+## সম্পর্কিত টুল {#related-tools}
-- [চেইনলিস্ট](https://chainlist.org/) _EVM নেটওয়ার্কের তালিকা যা ওয়ালেট এবং প্রোভাইডারদের সঠিক চেইন আইডি এবং নেটওয়ার্ক আইডির সাথে সংযুক্ত করে_
-- [EVM-ভিত্তিক চেইন](https://github.com/ethereum-lists/chains) _চেইন মেটাডেটার গিটহাব রিপো যা চেইনলিস্টকে শক্তি জোগায়_
+- [Chainlist](https://chainlist.org/) _ওয়ালেট এবং প্রোভাইডারদের উপযুক্ত চেইন আইডি এবং নেটওয়ার্ক আইডির সাথে সংযুক্ত করার জন্য EVM নেটওয়ার্কগুলোর তালিকা_
+- [EVM-ভিত্তিক চেইন](https://github.com/ethereum-lists/chains) _চেইন মেটাডেটার গিটহাব রেপো যা Chainlist-কে শক্তি যোগায়_
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [প্রস্তাব: অনুমানযোগ্য ইথেরিয়াম টেস্টনেট জীবনচক্র](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
-- [ইথেরিয়াম টেস্টনেটগুলির বিবর্তন](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
+- [প্রস্তাবনা: প্রেডিক্টেবল ইথিরিয়াম টেস্টনেট লাইফসাইকেল](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
+- [ইথিরিয়াম টেস্টনেটগুলোর বিবর্তন](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/archive-nodes/index.md
index 92c17b5d9d1..76598edfee9 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/archive-nodes/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/archive-nodes/index.md
@@ -1,81 +1,81 @@
---
-title: "ইথেরিয়াম আর্কাইভ নোড"
-description: "আর্কাইভ নোডগুলির একটি ওভারভিউ"
+title: ইথিরিয়াম আর্কাইভ নোড
+description: আর্কাইভ নোডগুলোর একটি ওভারভিউ
lang: bn
sidebarDepth: 2
---
-একটি আর্কাইভ নোড হলো একটি ইথেরিয়াম ক্লায়েন্টের একটি ইনস্ট্যান্স যা সমস্ত ঐতিহাসিক স্টেটগুলির একটি আর্কাইভ তৈরি করার জন্য কনফিগার করা থাকে। এটি নির্দিষ্ট কিছু ব্যবহারের ক্ষেত্রে একটি দরকারী টুল কিন্তু একটি সম্পূর্ণ নোড চালানোর চেয়ে এটি চালানো আরও কঠিন হতে পারে।
+একটি আর্কাইভ নোড হলো একটি [Ethereum](/) ক্লায়েন্ট এর ইনস্ট্যান্স যা সমস্ত ঐতিহাসিক স্টেটগুলোর একটি আর্কাইভ তৈরি করার জন্য কনফিগার করা হয়। এটি নির্দিষ্ট কিছু ব্যবহারের ক্ষেত্রে একটি দরকারী টুল, তবে একটি ফুল নোডের চেয়ে এটি চালানো কিছুটা কঠিন হতে পারে।
## পূর্বশর্ত {#prerequisites}
-আপনার একটি [ইথেরিয়াম নোড](/developers/docs/nodes-and-clients/)-এর ধারণা, [এর আর্কিটেকচার](/developers/docs/nodes-and-clients/node-architecture/), [সিঙ্ক কৌশল](/developers/docs/nodes-and-clients/#sync-modes), [এটি চালানোর](/developers/docs/nodes-and-clients/run-a-node/) এবং [ব্যবহার করার](/developers/docs/apis/json-rpc/) অভ্যাসগুলি বোঝা উচিত।
+আপনার একটি [ইথিরিয়াম নোড](/developers/docs/nodes-and-clients/), [এর আর্কিটেকচার](/developers/docs/nodes-and-clients/node-architecture/), [সিঙ্ক স্ট্র্যাটেজি](/developers/docs/nodes-and-clients/#sync-modes), এবং এগুলো [চালানো](/developers/docs/nodes-and-clients/run-a-node/) ও [ব্যবহার করার](/developers/docs/apis/json-rpc/) পদ্ধতি সম্পর্কে ধারণা থাকা উচিত।
-## একটি আর্কাইভ নোড কী
+## আর্কাইভ নোড কী
-একটি আর্কাইভ নোডের গুরুত্ব বোঝার জন্য, আসুন "স্টেট"-এর ধারণাটি স্পষ্ট করি। ইথেরিয়ামকে একটি _লেনদেন-ভিত্তিক স্টেট মেশিন_ হিসেবে উল্লেখ করা যেতে পারে। এটি অ্যাকাউন্ট এবং অ্যাপ্লিকেশনগুলি নিয়ে গঠিত যা তাদের স্টেট পরিবর্তনকারী লেনদেনগুলি কার্যকর করে। প্রতিটি অ্যাকাউন্ট এবং চুক্তি সম্পর্কে তথ্য সহ গ্লোবাল ডেটা স্টেট নামক একটি ট্রাই ডেটাবেসে সংরক্ষণ করা হয়। এটি এক্সিকিউশন লেয়ার (EL) ক্লায়েন্ট দ্বারা পরিচালিত হয় এবং এর মধ্যে রয়েছে:
+একটি আর্কাইভ নোডের গুরুত্ব বোঝার জন্য, চলুন "স্টেট" এর ধারণাটি পরিষ্কার করি। ইথিরিয়ামকে একটি _লেনদেন-ভিত্তিক স্টেট মেশিন_ বলা যেতে পারে। এটি একাউন্ট এবং অ্যাপ্লিকেশন নিয়ে গঠিত যা লেনদেন সম্পাদন করে এবং তাদের স্টেট পরিবর্তন করে। প্রতিটি একাউন্ট এবং কন্ট্রাক্ট সম্পর্কে তথ্যসহ গ্লোবাল ডাটা স্টেট নামক একটি ট্রাই (trie) ডাটাবেসে সংরক্ষিত থাকে। এটি এক্সিকিউশন লেয়ার (EL) ক্লায়েন্ট দ্বারা পরিচালিত হয় এবং এর মধ্যে অন্তর্ভুক্ত থাকে:
-- অ্যাকাউন্টের ব্যালেন্স এবং ননসেস
-- চুক্তির কোড এবং স্টোরেজ
-- কনসেন্সাস-সম্পর্কিত ডেটা, যেমন, স্টেকিং ডিপোজিট চুক্তি
+- একাউন্ট ব্যালেন্স এবং নন্স
+- কন্ট্রাক্ট কোড এবং স্টোরেজ
+- কনসেন্সাস-সম্পর্কিত ডাটা, যেমন, স্টেকিং ডিপোজিট কন্টাক্ট
-নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করতে, নতুন ব্লক যাচাই এবং তৈরি করতে, ইথেরিয়াম ক্লায়েন্টদের সবচেয়ে সাম্প্রতিক পরিবর্তনগুলির সাথে (চেইনের অগ্রভাগ) তাল মিলিয়ে চলতে হবে এবং তাই বর্তমান স্টেট বজায় রাখতে হবে। একটি এক্সিকিউশন লেয়ার ক্লায়েন্ট যা একটি সম্পূর্ণ নোড হিসাবে কনফিগার করা আছে তা নেটওয়ার্কের সর্বশেষ স্টেট যাচাই করে এবং অনুসরণ করে কিন্তু শুধুমাত্র অতীতের কয়েকটি স্টেট ক্যাশে করে, যেমন, শেষ 128টি ব্লকের সাথে যুক্ত স্টেট, যাতে এটি চেইন রিঅর্গগুলি পরিচালনা করতে পারে এবং সাম্প্রতিক ডেটাতে দ্রুত অ্যাক্সেস সরবরাহ করতে পারে। সাম্প্রতিক স্টেট হলো যা সমস্ত ক্লায়েন্টের আগত লেনদেন যাচাই করতে এবং নেটওয়ার্ক ব্যবহার করতে প্রয়োজন।
+নেটওয়ার্ক এর সাথে ইন্টারঅ্যাক্ট করতে, নতুন ব্লকস যাচাই এবং তৈরি করতে, ইথিরিয়াম ক্লায়েন্টগুলোকে সাম্প্রতিক পরিবর্তনগুলোর (চেইনের শীর্ষ) সাথে এবং সেই অনুযায়ী বর্তমান স্টেটের সাথে আপডেট থাকতে হয়। একটি ফুল নোড হিসেবে কনফিগার করা এক্সিকিউশন লেয়ার ক্লায়েন্ট নেটওয়ার্ক এর সর্বশেষ স্টেট যাচাই এবং অনুসরণ করে, তবে এটি শুধুমাত্র অতীতের কয়েকটি স্টেট ক্যাশ করে রাখে, যেমন, শেষ 128টি ব্লকের সাথে সম্পর্কিত স্টেট, যাতে এটি চেইন রিঅর্গানাইজেশন (reorgs) সামলাতে পারে এবং সাম্প্রতিক ডাটায় দ্রুত অ্যাক্সেস প্রদান করতে পারে। আগত লেনদেন যাচাই করতে এবং নেটওয়ার্ক ব্যবহার করতে সমস্ত ক্লায়েন্ট এর সাম্প্রতিক স্টেট প্রয়োজন হয়।
-আপনি একটি নির্দিষ্ট ব্লকে স্টেটকে একটি ক্ষণস্থায়ী নেটওয়ার্ক স্ন্যাপশট হিসাবে এবং আর্কাইভকে একটি হিস্ট্রি রিপ্লে হিসাবে কল্পনা করতে পারেন।
+আপনি স্টেটকে একটি নির্দিষ্ট ব্লকে নেটওয়ার্ক এর ক্ষণস্থায়ী স্ন্যাপশট হিসেবে এবং আর্কাইভকে ইতিহাসের রিপ্লে হিসেবে কল্পনা করতে পারেন।
-ঐতিহাসিক স্টেটগুলি নিরাপদে ছাঁটাই করা যেতে পারে কারণ নেটওয়ার্ক পরিচালনার জন্য এগুলির প্রয়োজন নেই এবং ক্লায়েন্টের জন্য সমস্ত পুরানো ডেটা রাখা অপ্রয়োজনীয়ভাবে বাহুল্য হবে। কিছু সাম্প্রতিক ব্লকের (যেমন, হেডের 128টি ব্লক আগে) আগে বিদ্যমান স্টেটগুলি কার্যকরভাবে ফেলে দেওয়া হয়। সম্পূর্ণ নোডগুলি শুধুমাত্র ঐতিহাসিক ব্লকচেইন ডেটা (ব্লক এবং লেনদেন) এবং মাঝে মাঝে ঐতিহাসিক স্ন্যাপশট রাখে যা তারা অনুরোধের ভিত্তিতে পুরানো স্টেটগুলি পুনরায় তৈরি করতে ব্যবহার করতে পারে। তারা EVM-এ অতীতের লেনদেনগুলি পুনরায় কার্যকর করে এটি করে, যা কম্পিউটেশনালি চাহিদাপূর্ণ হতে পারে যখন কাঙ্ক্ষিত স্টেটটি নিকটতম স্ন্যাপশট থেকে অনেক দূরে থাকে।
+ঐতিহাসিক স্টেটগুলো নিরাপদে প্রুন (prune) বা মুছে ফেলা যায় কারণ নেটওয়ার্ক পরিচালনার জন্য এগুলো প্রয়োজনীয় নয় এবং ক্লায়েন্ট এর জন্য সমস্ত পুরনো ডাটা রাখা অযথাই অপ্রয়োজনীয় হবে। কিছু সাম্প্রতিক ব্লকের আগে (যেমন, হেডের 128 ব্লক আগে) বিদ্যমান স্টেটগুলো কার্যকরভাবে ফেলে দেওয়া হয়। ফুল নোডগুলো শুধুমাত্র ঐতিহাসিক ব্লকচেইন ডাটা (ব্লকস এবং লেনদেন) এবং মাঝে মাঝে ঐতিহাসিক স্ন্যাপশটগুলো রাখে যা তারা অনুরোধের ভিত্তিতে পুরনো স্টেটগুলো পুনরায় তৈরি করতে ব্যবহার করতে পারে। তারা EVM-এ অতীতের লেনদেন পুনরায় এক্সিকিউট করে এটি করে, যা কম্পিউটেশনালভাবে অনেক বেশি চাহিদাপূর্ণ হতে পারে যখন কাঙ্ক্ষিত স্টেটটি নিকটতম স্ন্যাপশট থেকে অনেক দূরে থাকে।
-যাইহোক, এর মানে হল যে একটি সম্পূর্ণ নোডে একটি ঐতিহাসিক স্টেট অ্যাক্সেস করতে অনেক কম্পিউটেশন লাগে। ক্লায়েন্টের অতীতের সমস্ত লেনদেন কার্যকর করতে এবং জেনেসিস থেকে একটি ঐতিহাসিক স্টেট গণনা করার প্রয়োজন হতে পারে। আর্কাইভ নোডগুলি শুধুমাত্র সবচেয়ে সাম্প্রতিক স্টেটগুলি সংরক্ষণ করে নয়, বরং প্রতিটি ব্লকের পরে তৈরি প্রতিটি ঐতিহাসিক স্টেটও সংরক্ষণ করে এর সমাধান করে। এটি মূলত বৃহত্তর ডিস্ক স্পেসের প্রয়োজনের সাথে একটি আপস করে।
+তবে, এর মানে হলো একটি ফুল নোডে ঐতিহাসিক স্টেটে অ্যাক্সেস করতে প্রচুর কম্পিউটেশনাল শক্তির প্রয়োজন হয়। ক্লায়েন্টকে হয়তো অতীতের সমস্ত লেনদেন এক্সিকিউট করতে হতে পারে এবং জেনেসিস থেকে একটি ঐতিহাসিক স্টেট গণনা করতে হতে পারে। আর্কাইভ নোডগুলো শুধুমাত্র সাম্প্রতিক স্টেটগুলোই নয়, বরং প্রতিটি ব্লকের পরে তৈরি হওয়া প্রতিটি ঐতিহাসিক স্টেট সংরক্ষণ করে এই সমস্যার সমাধান করে। এটি মূলত বড় ডিস্ক স্পেসের প্রয়োজনীয়তার সাথে একটি ট্রেড-অফ করে।
-এটা মনে রাখা গুরুত্বপূর্ণ যে নেটওয়ার্ক সমস্ত ঐতিহাসিক ডেটা রাখা এবং সরবরাহ করার জন্য আর্কাইভ নোডগুলির উপর নির্ভর করে না। উপরে উল্লিখিত হিসাবে, সমস্ত ঐতিহাসিক অন্তর্বর্তী স্টেটগুলি একটি সম্পূর্ণ নোড থেকে প্রাপ্ত করা যেতে পারে। যেকোনো সম্পূর্ণ নোড দ্বারা লেনদেনগুলি সংরক্ষণ করা হয় (বর্তমানে 400G-এর কম) এবং পুরো আর্কাইভটি তৈরি করতে পুনরায় প্লে করা যেতে পারে।
+এটি মনে রাখা গুরুত্বপূর্ণ যে নেটওয়ার্ক সমস্ত ঐতিহাসিক ডাটা রাখা এবং প্রদান করার জন্য আর্কাইভ নোডগুলোর উপর নির্ভর করে না। উপরে উল্লিখিত হিসেবে, সমস্ত ঐতিহাসিক অন্তর্বর্তীকালীন স্টেটগুলো একটি ফুল নোডে তৈরি করা যেতে পারে। লেনদেন যেকোনো ফুল নোড দ্বারা সংরক্ষিত হয় (বর্তমানে 400G এর কম) এবং পুরো আর্কাইভ তৈরি করতে পুনরায় প্লে করা যেতে পারে।
-### ব্যবহার
+### ব্যবহারের ক্ষেত্র
-ইথেরিয়ামের নিয়মিত ব্যবহার যেমন লেনদেন পাঠানো, চুক্তি স্থাপন করা, কনসেন্সাস যাচাই করা ইত্যাদির জন্য ঐতিহাসিক স্টেটগুলিতে অ্যাক্সেসের প্রয়োজন হয় না। নেটওয়ার্কের সাথে একটি স্ট্যান্ডার্ড ইন্টারঅ্যাকশনের জন্য ব্যবহারকারীদের কখনো একটি আর্কাইভ নোডের প্রয়োজন হয় না।
+ইথিরিয়ামের নিয়মিত ব্যবহার যেমন লেনদেন পাঠানো, কন্ট্রাক্ট ডিপ্লয় করা, কনসেন্সাস যাচাই করা ইত্যাদির জন্য ঐতিহাসিক স্টেটগুলোতে অ্যাক্সেসের প্রয়োজন হয় না। নেটওয়ার্ক এর সাথে সাধারণ ইন্টারঅ্যাকশনের জন্য ব্যবহারকারীদের কখনোই আর্কাইভ নোডের প্রয়োজন হয় না।
-স্টেট আর্কাইভের প্রধান সুবিধা হলো ঐতিহাসিক স্টেটগুলি সম্পর্কে ক্যোয়ারিগুলিতে দ্রুত অ্যাক্সেস। উদাহরণস্বরূপ, আর্কাইভ নোড দ্রুত ফলাফল দেবে যেমন:
+স্টেট আর্কাইভের প্রধান সুবিধা হলো ঐতিহাসিক স্টেটগুলো সম্পর্কে প্রশ্নের দ্রুত অ্যাক্সেস। উদাহরণস্বরূপ, আর্কাইভ নোড দ্রুত এই ধরনের ফলাফল প্রদান করবে:
-- _অ্যাকাউন্ট 0x1337...-এর ETH ব্যালেন্স কত ছিল_ ব্লক 15537393-এ?_
-- _ব্লক 1920000-এ চুক্তি 0x-এ টোকেন 0x-এর ব্যালেন্স কত?_
+- _15537393 ব্লকে 0x1337... একাউন্ট এর ETH ব্যালেন্স কত ছিল?_
+- _1920000 ব্লকে 0x কন্ট্রাক্ট এ 0x টোকেন এর ব্যালেন্স কত?_
-উপরে যেমন ব্যাখ্যা করা হয়েছে, একটি সম্পূর্ণ নোডকে EVM এক্সিকিউশনের মাধ্যমে এই ডেটা তৈরি করতে হবে যা CPU ব্যবহার করে এবং সময় নেয়। আর্কাইভ নোডগুলি ডিস্কে সেগুলি অ্যাক্সেস করে এবং অবিলম্বে প্রতিক্রিয়া পরিবেশন করে। এটি অবকাঠামোর নির্দিষ্ট কিছু অংশের জন্য একটি দরকারী বৈশিষ্ট্য, উদাহরণস্বরূপ:
+উপরে ব্যাখ্যা করা হয়েছে যে, একটি ফুল নোডকে EVM এক্সিকিউশনের মাধ্যমে এই ডাটা তৈরি করতে হবে যা CPU ব্যবহার করে এবং সময় নেয়। আর্কাইভ নোডগুলো ডিস্কে সেগুলোতে অ্যাক্সেস করে এবং তাৎক্ষণিকভাবে রেসপন্স প্রদান করে। এটি ইনফ্রাস্ট্রাকচারের নির্দিষ্ট অংশগুলোর জন্য একটি দরকারী বৈশিষ্ট্য, উদাহরণস্বরূপ:
-- ব্লক এক্সপ্লোরারের মতো পরিষেবা প্রদানকারী
+- সার্ভিস প্রোভাইডার যেমন ব্লক এক্সপ্লোরার
- গবেষক
- নিরাপত্তা বিশ্লেষক
-- Dapp ডেভেলপার
-- অডিটিং এবং কমপ্লায়েন্স
+- ডিএ্যাপ ডেভেলপার
+- অডিটিং এবং কমপ্লায়েন্স
-বিভিন্ন বিনামূল্যে [পরিষেবা](/developers/docs/nodes-and-clients/nodes-as-a-service/) রয়েছে যা ঐতিহাসিক ডেটাতে অ্যাক্সেসেরও অনুমতি দেয়। যেহেতু একটি আর্কাইভ নোড চালানো আরও চাহিদাপূর্ণ, এই অ্যাক্সেস বেশিরভাগই সীমিত এবং শুধুমাত্র মাঝে মাঝে অ্যাক্সেসের জন্য কাজ করে। যদি আপনার প্রকল্পের ঐতিহাসিক ডেটাতে ক্রমাগত অ্যাক্সেসের প্রয়োজন হয়, তবে আপনার নিজের একটি চালানোর কথা বিবেচনা করা উচিত।
+বিভিন্ন বিনামূল্যের [সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service/) রয়েছে যা ঐতিহাসিক ডাটায় অ্যাক্সেসের অনুমতি দেয়। যেহেতু একটি আর্কাইভ নোড চালানো বেশি চাহিদাপূর্ণ, তাই এই অ্যাক্সেস বেশিরভাগ ক্ষেত্রেই সীমিত এবং শুধুমাত্র মাঝে মাঝে অ্যাক্সেসের জন্য কাজ করে। যদি আপনার প্রজেক্টে ঐতিহাসিক ডাটায় নিয়মিত অ্যাক্সেসের প্রয়োজন হয়, তবে আপনার নিজের একটি চালানো বিবেচনা করা উচিত।
-## বাস্তবায়ন এবং ব্যবহার
+## ইমপ্লিমেন্টেশন এবং ব্যবহার
-এই প্রসঙ্গে আর্কাইভ নোড মানে ব্যবহারকারী-মুখী এক্সিকিউশন লেয়ার ক্লায়েন্টদের দ্বারা পরিবেশিত ডেটা কারণ তারা স্টেট ডেটাবেস পরিচালনা করে এবং JSON-RPC এন্ডপয়েন্ট সরবরাহ করে। কনফিগারেশন অপশন, সিঙ্ক সময় এবং ডেটাবেস আকার ক্লায়েন্ট ভেদে ভিন্ন হতে পারে। বিস্তারিত জানতে, অনুগ্রহ করে আপনার ক্লায়েন্ট দ্বারা প্রদত্ত ডকুমেন্টেশন দেখুন।
+এই প্রসঙ্গে আর্কাইভ নোড বলতে ব্যবহারকারীর মুখোমুখি এক্সিকিউশন লেয়ার ক্লায়েন্ট দ্বারা পরিবেশিত ডাটা বোঝায় কারণ তারা স্টেট ডাটাবেস পরিচালনা করে এবং JSON-RPC এন্ডপয়েন্ট প্রদান করে। কনফিগারেশন অপশন, সিঙ্ক টাইম এবং ডাটাবেসের আকার ক্লায়েন্ট অনুযায়ী পরিবর্তিত হতে পারে। বিস্তারিত জানার জন্য, অনুগ্রহ করে আপনার ক্লায়েন্ট দ্বারা প্রদত্ত ডকুমেন্টেশন দেখুন।
-আপনার নিজের আর্কাইভ নোড শুরু করার আগে, ক্লায়েন্টগুলির মধ্যে পার্থক্য এবং বিশেষ করে বিভিন্ন [হার্ডওয়্যার প্রয়োজনীয়তা](/developers/docs/nodes-and-clients/run-a-node/#requirements) সম্পর্কে জানুন। বেশিরভাগ ক্লায়েন্ট এই বৈশিষ্ট্যের জন্য অপ্টিমাইজ করা হয় না এবং তাদের আর্কাইভগুলির জন্য 12TB-র বেশি জায়গার প্রয়োজন হয়। বিপরীতে, Erigon-এর মতো বাস্তবায়নগুলি একই ডেটা 3TB-র কম জায়গায় সংরক্ষণ করতে পারে যা তাদের একটি আর্কাইভ নোড চালানোর সবচেয়ে কার্যকর উপায় করে তোলে।
+আপনার নিজের আর্কাইভ নোড শুরু করার আগে, ক্লায়েন্টগুলোর মধ্যে পার্থক্য এবং বিশেষ করে বিভিন্ন [হার্ডওয়্যার প্রয়োজনীয়তা](/developers/docs/nodes-and-clients/run-a-node/#requirements) সম্পর্কে জানুন। বেশিরভাগ ক্লায়েন্ট এই বৈশিষ্ট্যের জন্য অপ্টিমাইজ করা নয় এবং তাদের আর্কাইভগুলোর জন্য 12TB এর বেশি স্পেস প্রয়োজন। এর বিপরীতে, Erigon এর মতো ইমপ্লিমেন্টেশনগুলো একই ডাটা 3TB এর নিচে সংরক্ষণ করতে পারে যা তাদের একটি আর্কাইভ নোড চালানোর সবচেয়ে কার্যকর উপায় করে তোলে।
-## সুপারিশকৃত অভ্যাস
+## প্রস্তাবিত অনুশীলন
-[একটি নোড চালানোর জন্য সাধারণ সুপারিশগুলি](/developers/docs/nodes-and-clients/run-a-node/) ছাড়াও, একটি আর্কাইভ নোড হার্ডওয়্যার এবং রক্ষণাবেক্ষণে আরও চাহিদাপূর্ণ হতে পারে। Erigon-এর [মূল বৈশিষ্ট্যগুলি](https://github.com/ledgerwatch/erigon#key-features) বিবেচনা করে, সবচেয়ে বাস্তবসম্মত পদ্ধতি হল [Erigon](/developers/docs/nodes-and-clients/#erigon) ক্লায়েন্ট বাস্তবায়ন ব্যবহার করা।
+একটি নোড চালানোর জন্য সাধারণ [সুপারিশগুলো](/developers/docs/nodes-and-clients/run-a-node/) ছাড়াও, একটি আর্কাইভ নোড হার্ডওয়্যার এবং রক্ষণাবেক্ষণের ক্ষেত্রে বেশি চাহিদাপূর্ণ হতে পারে। Erigon এর [মূল বৈশিষ্ট্যগুলো](https://github.com/ledgerwatch/erigon#key-features) বিবেচনা করে, সবচেয়ে ব্যবহারিক পদ্ধতি হলো [Erigon](/developers/docs/nodes-and-clients/#erigon) ক্লায়েন্ট ইমপ্লিমেন্টেশন ব্যবহার করা।
-### হার্ডওয়্যার
+### হার্ডওয়্যার
-সর্বদা একটি ক্লায়েন্টের ডকুমেন্টেশনে একটি নির্দিষ্ট মোডের জন্য হার্ডওয়্যার প্রয়োজনীয়তা যাচাই করা নিশ্চিত করুন।
-আর্কাইভ নোডগুলির জন্য সবচেয়ে বড় প্রয়োজন হলো ডিস্ক স্পেস। ক্লায়েন্টের উপর নির্ভর করে, এটি 3TB থেকে 12TB পর্যন্ত পরিবর্তিত হয়। যদিও HDD বড় পরিমাণে ডেটার জন্য একটি ভালো সমাধান হিসাবে বিবেচিত হতে পারে, এটি সিঙ্ক করা এবং চেইনের হেড ক্রমাগত আপডেট করার জন্য SSD ড্রাইভের প্রয়োজন হবে। [SATA](https://www.cleverfiles.com/help/sata-hard-drive.html) ড্রাইভগুলি যথেষ্ট ভালো কিন্তু এটি একটি নির্ভরযোগ্য মানের হওয়া উচিত, অন্তত [TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences)। যথেষ্ট স্লট সহ একটি ডেস্কটপ কম্পিউটার বা একটি সার্ভারে ডিস্কগুলি লাগানো যেতে পারে। এই ধরনের ডেডিকেটেড ডিভাইস উচ্চ আপটাইম নোড চালানোর জন্য আদর্শ। এটি একটি ল্যাপটপে চালানো সম্পূর্ণ সম্ভব কিন্তু বহনযোগ্যতা একটি অতিরিক্ত খরচে আসবে।
+সর্বদা একটি ক্লায়েন্ট এর ডকুমেন্টেশনে নির্দিষ্ট মোডের জন্য হার্ডওয়্যার প্রয়োজনীয়তা যাচাই করতে ভুলবেন না।
+আর্কাইভ নোডগুলোর জন্য সবচেয়ে বড় প্রয়োজনীয়তা হলো ডিস্ক স্পেস। ক্লায়েন্ট এর উপর নির্ভর করে, এটি 3TB থেকে 12TB পর্যন্ত পরিবর্তিত হয়। যদিও প্রচুর পরিমাণ ডাটার জন্য HDD-কে একটি ভালো সমাধান হিসেবে বিবেচনা করা যেতে পারে, তবে এটি সিঙ্ক করতে এবং চেইনের হেড ক্রমাগত আপডেট করতে SSD ড্রাইভের প্রয়োজন হবে। [SATA](https://www.cleverfiles.com/help/sata-hard-drive.html) ড্রাইভগুলো যথেষ্ট ভালো তবে এটি একটি নির্ভরযোগ্য মানের হওয়া উচিত, অন্তত [TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences)। ডিস্কগুলো একটি ডেস্কটপ কম্পিউটার বা পর্যাপ্ত স্লটসহ একটি সার্ভারে লাগানো যেতে পারে। এই ধরনের ডেডিকেটেড ডিভাইসগুলো উচ্চ আপটাইম নোড চালানোর জন্য আদর্শ। এটি একটি ল্যাপটপে চালানো সম্পূর্ণ সম্ভব তবে পোর্টেবিলিটির জন্য অতিরিক্ত খরচ হবে।
-সমস্ত ডেটা একটি ভলিউমে ফিট করতে হবে, তাই ডিস্কগুলিকে যুক্ত করতে হবে, যেমন, [RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0) বা LVM দিয়ে। [ZFS](https://en.wikipedia.org/wiki/ZFS) ব্যবহার করাও বিবেচনা করার মতো হতে পারে কারণ এটি "কপি-অন-রাইট" সমর্থন করে যা নিশ্চিত করে যে ডেটা কোনো নিম্ন-স্তরের ত্রুটি ছাড়াই ডিস্কে সঠিকভাবে লেখা হয়েছে।
+সমস্ত ডাটা একটি ভলিউমে ফিট করা প্রয়োজন, তাই ডিস্কগুলোকে যুক্ত করতে হবে, যেমন, [RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0) বা LVM দিয়ে। [ZFS](https://en.wikipedia.org/wiki/ZFS) ব্যবহার করাও বিবেচনা করার মতো হতে পারে কারণ এটি "Copy-on-write" সমর্থন করে যা নিশ্চিত করে যে কোনো লো লেভেল ত্রুটি ছাড়াই ডাটা সঠিকভাবে ডিস্কে লেখা হয়েছে।
-আকস্মিক ডেটাবেস দুর্নীতি প্রতিরোধে আরও স্থিতিশীলতা এবং নিরাপত্তার জন্য, বিশেষ করে একটি পেশাদার সেটআপে, আপনার সিস্টেম সমর্থন করলে [ECC মেমরি](https://en.wikipedia.org/wiki/ECC_memory) ব্যবহার করার কথা বিবেচনা করুন। RAM-এর আকার সাধারণত একটি সম্পূর্ণ নোডের জন্য যা প্রয়োজন তার সমান রাখার পরামর্শ দেওয়া হয় কিন্তু আরও বেশি RAM সিঙ্ক্রোনাইজেশনের গতি বাড়াতে সাহায্য করতে পারে।
+দুর্ঘটনাবশত ডাটাবেস করাপশন রোধে আরও স্থিতিশীলতা এবং নিরাপত্তার জন্য, বিশেষ করে একটি পেশাদার সেটআপে, আপনার সিস্টেম সমর্থন করলে [ECC memory](https://en.wikipedia.org/wiki/ECC_memory) ব্যবহার করার কথা বিবেচনা করুন। RAM এর আকার সাধারণত একটি ফুল নোডের মতোই হওয়ার পরামর্শ দেওয়া হয় তবে বেশি RAM সিঙ্ক্রোনাইজেশন ত্বরান্বিত করতে সাহায্য করতে পারে।
-প্রাথমিক সিঙ্কের সময়, আর্কাইভ মোডে ক্লায়েন্টরা জেনেসিস থেকে প্রতিটি লেনদেন সম্পাদন করবে। এক্সিকিউশনের গতি বেশিরভাগই CPU দ্বারা সীমিত, তাই একটি দ্রুততর CPU প্রাথমিক সিঙ্কের সময় সাহায্য করতে পারে। একটি গড় ভোক্তা কম্পিউটারে, প্রাথমিক সিঙ্ক এক মাস পর্যন্ত সময় নিতে পারে।
+প্রাথমিক সিঙ্কের সময়, আর্কাইভ মোডে থাকা ক্লায়েন্টগুলো জেনেসিস থেকে প্রতিটি লেনদেন এক্সিকিউট করবে। এক্সিকিউশন স্পিড বেশিরভাগই CPU দ্বারা সীমাবদ্ধ থাকে, তাই একটি দ্রুততর CPU প্রাথমিক সিঙ্ক টাইমে সাহায্য করতে পারে। একটি সাধারণ কনজিউমার কম্পিউটারে, প্রাথমিক সিঙ্ক হতে এক মাস পর্যন্ত সময় লাগতে পারে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ইথেরিয়াম সম্পূর্ণ নোড বনাম আর্কাইভ নোড](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _কুইকনোড, সেপ্টেম্বর ২০২২_
-- [আপনার নিজের ইথেরিয়াম আর্কাইভ নোড তৈরি করা](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _থমাস জে রাশ, আগস্ট ২০২১_
-- [পরিষেবা হিসাবে Erigon, Erigon-এর RPC এবং TrueBlocks (স্ক্রেপ এবং API) কীভাবে সেট আপ করবেন](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– ম্যাগনাস হ্যানসন, সেপ্টেম্বর ২০২২-এ আপডেট করা হয়েছে_
+- [ইথিরিয়াম ফুল নোড বনাম আর্কাইভ নোড](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _QuickNode, সেপ্টেম্বর 2022_
+- [আপনার নিজের ইথিরিয়াম আর্কাইভ নোড তৈরি করা](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _Thomas Jay Rush, আগস্ট 2021_
+- [কীভাবে Erigon, Erigon এর RPC এবং TrueBlocks (স্ক্র্যাপ এবং API) সার্ভিস হিসেবে সেট আপ করবেন](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– Magnus Hansson, আপডেট করা হয়েছে সেপ্টেম্বর 2022_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
-- [একটি নোড চালানো](/developers/docs/nodes-and-clients/run-a-node/)
+- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
+- [একটি নোড চালানো](/developers/docs/nodes-and-clients/run-a-node/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/bootnodes/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/bootnodes/index.md
index 4be6be63fa8..776dcdfca66 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/bootnodes/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/bootnodes/index.md
@@ -1,14 +1,14 @@
---
-title: "ইথেরিয়াম বুটনোডে ভূমিকা"
-description: "বুটনোডগুলি বোঝার জন্য আপনার প্রয়োজনীয় প্রাথমিক তথ্য"
+title: ইথিরিয়াম বুটনোড পরিচিতি
+description: বুটনোড বোঝার জন্য আপনার প্রয়োজনীয় প্রাথমিক তথ্য
lang: bn
---
-যখন একটি নতুন নোড ইথেরিয়াম নেটওয়ার্কে যোগ দেয়, তখন নতুন পিয়ারদের আবিষ্কার করার জন্য এটিকে ইতিমধ্যেই নেটওয়ার্কে থাকা নোডগুলির সাথে সংযোগ স্থাপন করতে হয়। ইথেরিয়াম নেটওয়ার্কে এই এন্ট্রি পয়েন্টগুলিকে বুটনোড বলা হয়। ক্লায়েন্টদের মধ্যে সাধারণত বুটনোডগুলির একটি তালিকা হার্ডকোড করা থাকে। এই বুটনোডগুলি সাধারণত ইথেরিয়াম ফাইন্ডেশনের ডেভঅপস টিম বা ক্লায়েন্ট টিম নিজেরাই চালায়। মনে রাখবেন যে বুটনোডগুলি স্ট্যাটিক নোডের মতো নয়। স্ট্যাটিক নোডগুলিকে বারবার কল করা হয়, যেখানে বুটনোডগুলিকে কেবল তখনই কল করা হয় যদি সংযোগ করার জন্য যথেষ্ট পিয়ার না থাকে এবং একটি নোডকে কিছু নতুন সংযোগ বুটস্ট্র্যাপ করতে হয়।
+যখন একটি নতুন নোড ইথিরিয়াম নেটওয়ার্ক-এ যুক্ত হয়, তখন নতুন পিয়ার (peers) আবিষ্কার করার জন্য এটিকে নেটওয়ার্ক-এ আগে থেকেই থাকা নোডগুলোর সাথে সংযুক্ত হতে হয়। ইথিরিয়াম নেটওয়ার্ক-এর এই এন্ট্রি পয়েন্টগুলোকে বুটনোড (bootnodes) বলা হয়। ক্লায়েন্ট-গুলোর মধ্যে সাধারণত বুটনোডের একটি তালিকা হার্ডকোড করা থাকে। এই বুটনোডগুলো সাধারণত ইথিরিয়াম ফাউন্ডেশনের ডেভঅপস (devops) টিম বা ক্লায়েন্ট টিমগুলো নিজেরাই পরিচালনা করে। মনে রাখবেন যে বুটনোড এবং স্ট্যাটিক নোড এক নয়। স্ট্যাটিক নোডগুলোকে বারবার কল করা হয়, যেখানে বুটনোডগুলোকে শুধুমাত্র তখনই কল করা হয় যখন সংযুক্ত হওয়ার জন্য পর্যাপ্ত পিয়ার থাকে না এবং একটি নোড-এর কিছু নতুন সংযোগ বুটস্ট্র্যাপ করার প্রয়োজন হয়।
-## একটি বুটনোডের সাথে সংযোগ করুন {#connect-to-a-bootnode}
+## একটি বুটনোডের সাথে সংযুক্ত হোন {#connect-to-a-bootnode}
-বেশিরভাগ ক্লায়েন্টের একটি বিল্টইন বুটনোডের তালিকা থাকে, তবে আপনি নিজের বুটনোডও চালাতে চাইতে পারেন, বা ক্লায়েন্টের হার্ডকোডেড তালিকার অংশ নয় এমন একটি ব্যবহার করতে পারেন। এই ক্ষেত্রে, আপনি আপনার ক্লায়েন্ট শুরু করার সময় সেগুলি নির্দিষ্ট করতে পারেন, যেমনটি নিচে দেখানো হয়েছে (উদাহরণটি Geth-এর জন্য, অনুগ্রহ করে আপনার ক্লায়েন্টের নথিপত্র দেখুন):
+বেশিরভাগ ক্লায়েন্ট-এর মধ্যে বুটনোডের একটি তালিকা বিল্ট-ইন থাকে, তবে আপনি হয়তো নিজের বুটনোড চালাতে চাইতে পারেন, অথবা এমন একটি ব্যবহার করতে চাইতে পারেন যা ক্লায়েন্ট-এর হার্ডকোড করা তালিকার অংশ নয়। এই ক্ষেত্রে, আপনার ক্লায়েন্ট চালু করার সময় আপনি সেগুলোকে নিচের মতো করে নির্দিষ্ট করে দিতে পারেন (উদাহরণটি Geth-এর জন্য, অনুগ্রহ করে আপনার ক্লায়েন্ট-এর ডকুমেন্টেশন চেক করুন):
```
geth --bootnodes "enode://@:"
@@ -16,16 +16,16 @@ geth --bootnodes "enode://@:"
## একটি বুটনোড চালান {#run-a-bootnode}
-বুটনোডগুলি সম্পূর্ণ নোড যা NAT-এর ([Network Address Translation](https://www.geeksforgeeks.org/network-address-translation-nat/)) পিছনে নেই। প্রতিটি সম্পূর্ণ নোড একটি বুটনোড হিসাবে কাজ করতে পারে যতক্ষণ না এটি সর্বজনীনভাবে উপলব্ধ থাকে।
+বুটনোড হলো ফুল নোড যা কোনো NAT ([Network Address Translation](https://www.geeksforgeeks.org/network-address-translation-nat/))-এর পিছনে থাকে না। প্রতিটি ফুল নোড একটি বুটনোড হিসেবে কাজ করতে পারে যতক্ষণ না এটি সর্বজনীনভাবে বা পাবলিকলি উপলব্ধ থাকে।
-আপনি যখন একটি নোড শুরু করেন, তখন এটি আপনার [enode](/developers/docs/networking-layer/network-addresses/#enode) লগ করা উচিত, যা একটি সর্বজনীন শনাক্তকারী যা অন্যরা আপনার নোডের সাথে সংযোগ করতে ব্যবহার করতে পারে।
+যখন আপনি একটি নোড চালু করেন, তখন এটি আপনার [enode](/developers/docs/networking-layer/network-addresses/#enode) লগ করবে, যা একটি পাবলিক আইডেন্টিফায়ার এবং অন্যরা আপনার নোড-এর সাথে সংযুক্ত হতে এটি ব্যবহার করতে পারে।
-enode সাধারণত প্রতিটি রিস্টার্টে পুনরায় তৈরি করা হয়, তাই আপনার বুটনোডের জন্য একটি স্থায়ী enode কীভাবে তৈরি করবেন সে সম্পর্কে আপনার ক্লায়েন্টের নথিপত্র দেখতে ভুলবেন না।
+enode সাধারণত প্রতিটি রিস্টার্টের সময় পুনরায় জেনারেট হয়, তাই আপনার বুটনোডের জন্য কীভাবে একটি স্থায়ী enode তৈরি করবেন সে সম্পর্কে আপনার ক্লায়েন্ট-এর ডকুমেন্টেশন দেখে নিন।
-একটি ভাল বুটনোড হওয়ার জন্য এটির সাথে সংযোগ করতে পারে এমন পিয়ারের সর্বোচ্চ সংখ্যা বাড়ানো একটি ভাল ধারণা। অনেক পিয়ারের সাথে একটি বুটনোড চালানো ব্যান্ডউইথের প্রয়োজনীয়তাকে উল্লেখযোগ্যভাবে বাড়িয়ে তুলবে।
+একটি ভালো বুটনোড হওয়ার জন্য এর সাথে সংযুক্ত হতে পারে এমন পিয়ারের সর্বোচ্চ সংখ্যা বৃদ্ধি করা একটি ভালো ধারণা। অনেক পিয়ারের সাথে একটি বুটনোড চালালে ব্যান্ডউইথের প্রয়োজনীয়তা উল্লেখযোগ্যভাবে বৃদ্ধি পাবে।
-## উপলব্ধ বুটনোড {#available-bootnodes}
+## উপলব্ধ বুটনোডসমূহ {#available-bootnodes}
-go-ethereum-এর মধ্যে বিল্টইন বুটনোডের একটি তালিকা [এখানে](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23) পাওয়া যাবে। এই বুটনোডগুলি ইথেরিয়াম ফাইন্ডেশন এবং go-ethereum টিম দ্বারা রক্ষণাবেক্ষণ করা হয়।
+go-ethereum-এর মধ্যে থাকা বিল্ট-ইন বুটনোডগুলোর একটি তালিকা [এখানে](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23) পাওয়া যাবে। এই বুটনোডগুলো ইথিরিয়াম ফাউন্ডেশন এবং go-ethereum টিম দ্বারা পরিচালিত হয়।
-স্বেচ্ছাসেবকদের দ্বারা রক্ষণাবেক্ষণ করা বুটনোডগুলির অন্যান্য তালিকা উপলব্ধ আছে। অনুগ্রহ করে নিশ্চিত করুন যে সর্বদা অন্তত একটি অফিসিয়াল বুটনোড অন্তর্ভুক্ত করা হয়েছে, অন্যথায় আপনি একটি এক্লিপ্স অ্যাটাকের শিকার হতে পারেন।
+স্বেচ্ছাসেবকদের দ্বারা পরিচালিত বুটনোডগুলোর অন্যান্য তালিকাও উপলব্ধ রয়েছে। অনুগ্রহ করে সর্বদা অন্তত একটি অফিসিয়াল বুটনোড অন্তর্ভুক্ত করার বিষয়টি নিশ্চিত করুন, অন্যথায় আপনি এক্লিপস অ্যাটাক (eclipse attack)-এর শিকার হতে পারেন।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/client-diversity/index.md
index e1a7caa174d..5da09b26f99 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -1,47 +1,47 @@
---
-title: "ক্লায়েন্ট বৈচিত্র্য"
-description: "Ethereum ক্লায়েন্ট বৈচিত্র্যের গুরুত্বের একটি উচ্চ স্তরের ব্যাখ্যা।"
+title: ক্লায়েন্ট ডাইভার্সিটি
+description: ইথিরিয়াম ক্লায়েন্ট ডাইভার্সিটির গুরুত্ব সম্পর্কে একটি উচ্চ স্তরের ব্যাখ্যা।
lang: bn
sidebarDepth: 2
---
-একটি Ethereum নোডের আচরণ এটি যে ক্লায়েন্ট সফ্টওয়্যার চালায় তার দ্বারা নিয়ন্ত্রিত হয়। বেশ কয়েকটি প্রোডাকশন-লেভেলের Ethereum ক্লায়েন্ট রয়েছে, প্রতিটি আলাদা দল দ্বারা বিভিন্ন ভাষায় তৈরি এবং রক্ষণাবেক্ষণ করা হয়। ক্লায়েন্টগুলি একটি সাধারণ স্পেসিফিকেশনে তৈরি করা হয়েছে যা নিশ্চিত করে যে ক্লায়েন্টরা নির্বিঘ্নে একে অপরের সাথে যোগাযোগ করে এবং একই কার্যকারিতা রয়েছে এবং একটি সমতুল্য ব্যবহারকারীর অভিজ্ঞতা প্রদান করে। যাইহোক, এই মুহূর্তে নোড জুড়ে ক্লায়েন্টদের বন্টন এই নেটওয়ার্ক শক্তিশালীকরণের পূর্ণ সম্ভাবনাকে কাজে লাগানোর জন্য যথেষ্ট সমান নয়। আদর্শগতভাবে, ব্যবহারকারীরা নেটওয়ার্কে যতটা সম্ভব ক্লায়েন্ট বৈচিত্র্য আনতে বিভিন্ন ক্লায়েন্ট জুড়ে মোটামুটি সমানভাবে বিভক্ত হয়।
+একটি [ইথিরিয়াম](/) নোডের আচরণ এটি যে ক্লায়েন্ট সফটওয়্যার চালায় তার দ্বারা নিয়ন্ত্রিত হয়। বেশ কয়েকটি প্রোডাকশন-লেভেলের ইথিরিয়াম ক্লায়েন্ট রয়েছে, যার প্রতিটি আলাদা টিমের দ্বারা বিভিন্ন ভাষায় তৈরি এবং রক্ষণাবেক্ষণ করা হয়। ক্লায়েন্টগুলো একটি সাধারণ স্পেসিফিকেশনের ওপর ভিত্তি করে তৈরি করা হয় যা নিশ্চিত করে যে ক্লায়েন্টগুলো একে অপরের সাথে নির্বিঘ্নে যোগাযোগ করতে পারে, একই কার্যকারিতা থাকে এবং সমতুল্য ব্যবহারকারীর অভিজ্ঞতা প্রদান করে। তবে, এই মুহূর্তে নোডগুলোর মধ্যে ক্লায়েন্টগুলোর বন্টন এই নেটওয়ার্কের সুরক্ষাকে তার পূর্ণ সম্ভাবনায় উপলব্ধি করার জন্য যথেষ্ট সমান নয়। আদর্শভাবে, নেটওয়ার্কে যতটা সম্ভব ক্লায়েন্ট ডাইভার্সিটি আনতে ব্যবহারকারীরা বিভিন্ন ক্লায়েন্টের মধ্যে মোটামুটি সমানভাবে বিভক্ত হন।
## পূর্বশর্ত {#prerequisites}
-আপনি যদি ইতিমধ্যেই নোড এবং ক্লায়েন্টগুলি কী তা না বোঝেন, তাহলে [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) দেখুন। গ্লসারিতে [এক্সিকিউশন](/glossary/#execution-layer) এবং [কনসেন্সাস](/glossary/#consensus-layer) লেয়ারগুলি সংজ্ঞায়িত করা হয়েছে।
+আপনি যদি ইতিমধ্যে নোড এবং ক্লায়েন্ট কী তা না বুঝে থাকেন, তবে [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) দেখে নিন। [এক্সিকিউশন](/glossary/#execution-layer) এবং [কনসেন্সাস](/glossary/#consensus-layer) লেয়ারগুলো শব্দকোষে সংজ্ঞায়িত করা হয়েছে।
-## একাধিক ক্লায়েন্ট কেন আছে? {#why-multiple-clients}
+## কেন একাধিক ক্লায়েন্ট রয়েছে? {#why-multiple-clients}
-একাধিক, স্বাধীনভাবে বিকশিত এবং রক্ষণাবেক্ষণ করা ক্লায়েন্ট বিদ্যমান কারণ ক্লায়েন্ট বৈচিত্র্য নেটওয়ার্ককে আক্রমণ এবং বাগের বিরুদ্ধে আরও স্থিতিস্থাপক করে তোলে। একাধিক ক্লায়েন্ট Ethereum-এর জন্য একটি অনন্য শক্তি - অন্যান্য ব্লকচেইন একটি একক ক্লায়েন্টের অভ্রান্ততার উপর নির্ভর করে। যাইহোক, একাধিক ক্লায়েন্ট উপলব্ধ থাকাই যথেষ্ট নয়, সেগুলিকে কমিউনিটি দ্বারা গ্রহণ করতে হবে এবং মোট সক্রিয় নোডগুলিকে তাদের মধ্যে তুলনামূলকভাবে সমানভাবে বিতরণ করতে হবে।
+একাধিক, স্বাধীনভাবে তৈরি এবং রক্ষণাবেক্ষণ করা ক্লায়েন্ট বিদ্যমান কারণ ক্লায়েন্ট ডাইভার্সিটি নেটওয়ার্কটিকে আক্রমণ এবং বাগের বিরুদ্ধে আরও স্থিতিস্থাপক করে তোলে। একাধিক ক্লায়েন্ট থাকা ইথিরিয়ামের একটি অনন্য শক্তি - অন্যান্য ব্লকচেইনগুলো একটি একক ক্লায়েন্টের অভ্রান্ততার উপর নির্ভর করে। তবে, শুধুমাত্র একাধিক ক্লায়েন্ট উপলব্ধ থাকাই যথেষ্ট নয়, সেগুলোকে কমিউনিটি দ্বারা গ্রহণ করতে হবে এবং মোট সক্রিয় নোডগুলোকে তাদের মধ্যে তুলনামূলকভাবে সমানভাবে বিতরণ করতে হবে।
-## ক্লায়েন্ট বৈচিত্র্য কেন গুরুত্বপূর্ণ? {#client-diversity-importance}
+## ক্লায়েন্ট ডাইভার্সিটি কেন গুরুত্বপূর্ণ? {#client-diversity-importance}
-অনেকগুলি স্বাধীনভাবে বিকশিত এবং রক্ষণাবেক্ষণ করা ক্লায়েন্ট থাকা একটি বিকেন্দ্রীভূত নেটওয়ার্কের স্বাস্থ্যের জন্য অত্যাবশ্যক। আসুন কারণগুলো অন্বেষণ করি।
+একটি ডিসেন্ট্রালাইজড নেটওয়ার্কের স্বাস্থ্যের জন্য স্বাধীনভাবে তৈরি এবং রক্ষণাবেক্ষণ করা অনেকগুলো ক্লায়েন্ট থাকা অত্যন্ত গুরুত্বপূর্ণ। আসুন এর কারণগুলো অন্বেষণ করি।
### বাগ {#bugs}
-Ethereum নোডগুলির একটি সংখ্যালঘুকে প্রতিনিধিত্ব করার সময় একটি পৃথক ক্লায়েন্টের একটি বাগ নেটওয়ার্কের জন্য কম ঝুঁকির। অনেক ক্লায়েন্ট জুড়ে নোডগুলির মোটামুটি সমান বন্টনের সাথে, বেশিরভাগ ক্লায়েন্টের একটি ভাগ করা সমস্যায় ভোগার সম্ভাবনা কম, এবং ফলস্বরূপ, নেটওয়ার্কটি আরও শক্তিশালী।
+একটি নির্দিষ্ট ক্লায়েন্টের বাগ নেটওয়ার্কের জন্য কম ঝুঁকির কারণ হয় যখন এটি ইথিরিয়াম নোডগুলোর একটি সংখ্যালঘুকে প্রতিনিধিত্ব করে। অনেকগুলো ক্লায়েন্টের মধ্যে নোডগুলোর মোটামুটি সমান বন্টনের ফলে, বেশিরভাগ ক্লায়েন্টের একটি সাধারণ সমস্যায় ভোগার সম্ভাবনা কম থাকে এবং এর ফলে নেটওয়ার্কটি আরও শক্তিশালী হয়।
### আক্রমণের বিরুদ্ধে স্থিতিস্থাপকতা {#resilience}
-ক্লায়েন্ট বৈচিত্র্য আক্রমণের বিরুদ্ধে স্থিতিস্থাপকতাও প্রদান করে। উদাহরণস্বরূপ, একটি আক্রমণ যা [একটি নির্দিষ্ট ক্লায়েন্টকে](https://twitter.com/vdWijden/status/1437712249926393858) চেইনের একটি নির্দিষ্ট শাখায় নিয়ে যাওয়ার জন্য প্রতারণা করে তা সফল হওয়ার সম্ভাবনা কম কারণ অন্যান্য ক্লায়েন্টদের একই উপায়ে শোষণযোগ্য হওয়ার সম্ভাবনা কম এবং ক্যানোনিকাল চেইনটি ত্রুটিমুক্ত থাকে। কম ক্লায়েন্ট বৈচিত্র্য প্রভাবশালী ক্লায়েন্টের উপর একটি হ্যাকের সাথে যুক্ত ঝুঁকি বাড়ায়। ক্লায়েন্ট বৈচিত্র্য ইতিমধ্যেই নেটওয়ার্কে ক্ষতিকারক আক্রমণের বিরুদ্ধে একটি গুরুত্বপূর্ণ প্রতিরক্ষা হিসাবে প্রমাণিত হয়েছে, উদাহরণস্বরূপ, 2016 সালে সাংহাই ডিনায়েল-অফ-সার্ভিস আক্রমণটি সম্ভব হয়েছিল কারণ আক্রমণকারীরা প্রভাবশালী ক্লায়েন্টকে (Geth) প্রতি ব্লকে হাজার হাজার বার একটি ধীরগতির ডিস্ক i/o অপারেশন চালানোর জন্য প্রতারণা করতে সক্ষম হয়েছিল। কারণ বিকল্প ক্লায়েন্টরাও অনলাইনে ছিল যারা দুর্বলতা ভাগ করে নেয়নি, Ethereum আক্রমণ প্রতিহত করতে এবং Geth-এর দুর্বলতা সংশোধন করার সময় কাজ চালিয়ে যেতে সক্ষম হয়েছিল।
+ক্লায়েন্ট ডাইভার্সিটি আক্রমণের বিরুদ্ধে স্থিতিস্থাপকতাও প্রদান করে। উদাহরণস্বরূপ, একটি আক্রমণ যা [একটি নির্দিষ্ট ক্লায়েন্টকে প্রতারিত করে](https://twitter.com/vdWijden/status/1437712249926393858) চেইনের একটি নির্দিষ্ট শাখায় নিয়ে যায়, তার সফল হওয়ার সম্ভাবনা কম কারণ অন্যান্য ক্লায়েন্টগুলোকে একইভাবে শোষণ করার সম্ভাবনা কম এবং ক্যানোনিকাল চেইনটি অবিকৃত থাকে। কম ক্লায়েন্ট ডাইভার্সিটি প্রভাবশালী ক্লায়েন্টের উপর হ্যাকের সাথে যুক্ত ঝুঁকি বাড়ায়। ক্লায়েন্ট ডাইভার্সিটি ইতিমধ্যে নেটওয়ার্কে ক্ষতিকারক আক্রমণের বিরুদ্ধে একটি গুরুত্বপূর্ণ প্রতিরক্ষা হিসেবে প্রমাণিত হয়েছে, উদাহরণস্বরূপ 2016 সালের সাংহাই ডিনায়াল-অফ-সার্ভিস আক্রমণটি সম্ভব হয়েছিল কারণ আক্রমণকারীরা প্রভাবশালী ক্লায়েন্টকে (Geth) প্রতারিত করে প্রতি ব্লকে হাজার হাজার বার একটি ধীর গতির ডিস্ক i/o অপারেশন চালাতে সক্ষম হয়েছিল। যেহেতু বিকল্প ক্লায়েন্টগুলোও অনলাইনে ছিল যেগুলোতে এই দুর্বলতা ছিল না, তাই ইথিরিয়াম আক্রমণটি প্রতিহত করতে এবং কাজ চালিয়ে যেতে সক্ষম হয়েছিল যখন Geth-এর দুর্বলতাটি ঠিক করা হচ্ছিল।
### প্রুফ-অফ-স্টেক ফাইনালিটি {#finality}
-Ethereum নোডের 33% এর বেশি সহ একটি কনসেন্সাস ক্লায়েন্টের একটি বাগ কনসেন্সাস লেয়ারকে চূড়ান্ত করা থেকে আটকাতে পারে, যার অর্থ ব্যবহারকারীরা বিশ্বাস করতে পারে না যে লেনদেনগুলি কোনও সময়ে ফিরিয়ে দেওয়া বা পরিবর্তন করা হবে না। এটি Ethereum-এর উপরে নির্মিত অনেক অ্যাপের জন্য, বিশেষ করে DeFi-এর জন্য খুব সমস্যাযুক্ত হবে।
+33%-এর বেশি ইথিরিয়াম নোড থাকা একটি কনসেন্সাস ক্লায়েন্টে কোনো বাগ থাকলে তা কনসেন্সাস লেয়ারকে চূড়ান্ত হতে বাধা দিতে পারে, যার অর্থ ব্যবহারকারীরা বিশ্বাস করতে পারবেন না যে কোনো এক পর্যায়ে লেনদেনগুলো বাতিল বা পরিবর্তন করা হবে না। এটি ইথিরিয়ামের উপর তৈরি অনেক অ্যাপের জন্য, বিশেষ করে DeFi-এর জন্য খুবই সমস্যামূলক হবে।
- আরও খারাপ, দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতা সহ একটি ক্লায়েন্টের একটি গুরুতর বাগ চেইনটিকে ভুলভাবে বিভক্ত এবং চূড়ান্ত করতে পারে, যার ফলে একটি বড় সংখ্যক ভ্যালিডেটর একটি অবৈধ চেইনে আটকে যায়। যদি তারা সঠিক চেইনে পুনরায় যোগ দিতে চায়, তবে এই ভ্যালিডেটররা স্ল্যাশিং বা একটি ধীর এবং ব্যয়বহুল স্বেচ্ছায় প্রত্যাহার এবং পুনরায় সক্রিয়করণের মুখোমুখি হয়। একটি স্ল্যাশিং এর মাত্রা দোষী নোডের সংখ্যার সাথে পরিমাপ করা হয় যার দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতা সর্বাধিক (32 ETH) স্ল্যাশ করা হয়।
+ আরও খারাপ বিষয় হলো, দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতা থাকা একটি ক্লায়েন্টে কোনো গুরুতর বাগ চেইনটিকে ভুলভাবে বিভক্ত এবং চূড়ান্ত করতে পারে, যার ফলে ভ্যালিডেটরসদের একটি বড় অংশ একটি অবৈধ চেইনে আটকে যেতে পারে। যদি তারা সঠিক চেইনে পুনরায় যোগ দিতে চায়, তবে এই ভ্যালিডেটরসরা স্ল্যাশিং বা একটি ধীর এবং ব্যয়বহুল স্বেচ্ছায় প্রত্যাহার এবং পুনরায় সক্রিয়করণের সম্মুখীন হয়। স্ল্যাশিংয়ের মাত্রা দোষী নোডগুলোর সংখ্যার সাথে বৃদ্ধি পায়, যেখানে দুই-তৃতীয়াংশ সংখ্যাগরিষ্ঠতা সর্বাধিক স্ল্যাশড (32 ETH) হয়।
-যদিও এগুলি অসম্ভাব্য পরিস্থিতি, Ethereum ইকোসিস্টেম সক্রিয় নোড জুড়ে ক্লায়েন্টদের বন্টন সমান করে তাদের ঝুঁকি কমাতে পারে। আদর্শগতভাবে, কোনো কনসেন্সাস ক্লায়েন্টই মোট নোডের 33% শেয়ারে পৌঁছাতে পারবে না।
+যদিও এগুলো অসম্ভাব্য পরিস্থিতি, ইথিরিয়াম ইকোসিস্টেম সক্রিয় নোডগুলোর মধ্যে ক্লায়েন্টগুলোর বন্টন সমান করে তাদের ঝুঁকি হ্রাস করতে পারে। আদর্শভাবে, কোনো কনসেন্সাস ক্লায়েন্ট কখনোই মোট নোডের 33% শেয়ারে পৌঁছাবে না।
-### ভাগ করা দায়িত্ব {#responsibility}
+### ভাগ করা দায়িত্ব {#responsibility}
-সংখ্যাগরিষ্ঠ ক্লায়েন্ট থাকার একটি মানবিক মূল্যও রয়েছে। এটি একটি ছোট ডেভেলপমেন্ট দলের উপর অতিরিক্ত চাপ এবং দায়িত্ব চাপিয়ে দেয়। ক্লায়েন্ট বৈচিত্র্য যত কম হবে, সংখ্যাগরিষ্ঠ ক্লায়েন্ট রক্ষণাবেক্ষণকারী ডেভেলপারদের উপর দায়িত্বের বোঝা তত বেশি হবে। এই দায়িত্বটি একাধিক দলে ছড়িয়ে দেওয়া Ethereum-এর নোডগুলির নেটওয়ার্ক এবং এর লোকজনের নেটওয়ার্ক উভয়ের স্বাস্থ্যের জন্যই ভাল।
+সংখ্যাগরিষ্ঠ ক্লায়েন্ট থাকার একটি মানবিক মূল্যও রয়েছে। এটি একটি ছোট ডেভেলপমেন্ট টিমের উপর অতিরিক্ত চাপ এবং দায়িত্ব চাপিয়ে দেয়। ক্লায়েন্ট ডাইভার্সিটি যত কম হবে, সংখ্যাগরিষ্ঠ ক্লায়েন্ট রক্ষণাবেক্ষণকারী ডেভেলপারদের জন্য দায়িত্বের বোঝাও তত বেশি হবে। একাধিক টিমের মধ্যে এই দায়িত্ব ছড়িয়ে দেওয়া ইথিরিয়ামের নোড নেটওয়ার্ক এবং এর মানুষের নেটওয়ার্ক উভয়ের স্বাস্থ্যের জন্যই ভালো।
-## বর্তমান ক্লায়েন্ট বৈচিত্র্য {#current-client-diversity}
+## বর্তমান ক্লায়েন্ট ডাইভার্সিটি {#current-client-diversity}
-### এক্সিকিউশন ক্লায়েন্ট {#execution-clients-breakdown}
+### এক্সিকিউশন ক্লায়েন্ট {#execution-clients-breakdown}
-### কনসেন্সাস ক্লায়েন্ট {#consensus-clients-breakdown}
+### কনসেন্সাস ক্লায়েন্ট {#consensus-clients-breakdown}
-এই ডায়াগ্রামটি পুরানো হতে পারে — আপ-টু-ডেট তথ্যের জন্য [ethernodes.org](https://ethernodes.org) এবং [clientdiversity.org](https://clientdiversity.org)-এ যান।
+এই ডায়াগ্রামটি পুরানো হতে পারে — আপ-টু-ডেট তথ্যের জন্য [ethernodes.org](https://ethernodes.org) এবং [clientdiversity.org](https://clientdiversity.org)-এ যান।
-উপরের দুটি পাই চার্ট এক্সিকিউশন এবং কনসেন্সাস লেয়ারের জন্য বর্তমান ক্লায়েন্ট বৈচিত্র্যের স্ন্যাপশট দেখায় (অক্টোবর 2025-এ লেখার সময়)। ক্লায়েন্ট বৈচিত্র্য বছরের পর বছর ধরে উন্নত হয়েছে, এবং এক্সিকিউশন লেয়ারে [Geth](https://geth.ethereum.org/)-এর আধিপত্য হ্রাস পেয়েছে, যেখানে [Nethermind](https://www.nethermind.io/nethermind-client) খুব কাছাকাছি দ্বিতীয়, [Besu](https://besu.hyperledger.org/) তৃতীয় এবং [Erigon](https://github.com/ledgerwatch/erigon) চতুর্থ, এবং অন্যান্য ক্লায়েন্টরা নেটওয়ার্কের 3% এরও কম অংশ নিয়ে গঠিত। কনসেন্সাস লেয়ারে সর্বাধিক ব্যবহৃত ক্লায়েন্ট—[Lighthouse](https://lighthouse.sigmaprime.io/)—দ্বিতীয় সর্বাধিক ব্যবহৃত ক্লায়েন্টের খুব কাছাকাছি। [Prysm](https://prysmaticlabs.com/#projects) এবং [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) যথাক্রমে ~31% এবং ~14% গঠন করে, এবং অন্যান্য ক্লায়েন্ট খুব কমই ব্যবহৃত হয়।
+উপরের দুটি পাই চার্ট এক্সিকিউশন এবং কনসেন্সাস লেয়ারগুলোর জন্য বর্তমান ক্লায়েন্ট ডাইভার্সিটির স্ন্যাপশট দেখায় (অক্টোবর 2025-এ লেখার সময়)। বছরের পর বছর ধরে ক্লায়েন্ট ডাইভার্সিটির উন্নতি হয়েছে, এবং এক্সিকিউশন লেয়ারে [Geth](https://geth.ethereum.org/)-এর আধিপত্য হ্রাস পেয়েছে, যেখানে [Nethermind](https://www.nethermind.io/nethermind-client) খুব কাছাকাছি দ্বিতীয় স্থানে, [Besu](https://besu.hyperledger.org/) তৃতীয় এবং [Erigon](https://github.com/ledgerwatch/erigon) চতুর্থ স্থানে রয়েছে, এবং অন্যান্য ক্লায়েন্টগুলো নেটওয়ার্কের 3%-এরও কম অংশ গঠন করে। কনসেন্সাস লেয়ারে সবচেয়ে বেশি ব্যবহৃত ক্লায়েন্ট—[Lighthouse](https://lighthouse.sigmaprime.io/)—দ্বিতীয় সর্বাধিক ব্যবহৃত ক্লায়েন্টের বেশ কাছাকাছি। [Prysm](https://prysmaticlabs.com/#projects) এবং [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) যথাক্রমে ~31% এবং ~14% তৈরি করে, এবং অন্যান্য ক্লায়েন্টগুলো খুব কমই ব্যবহৃত হয়।
-এক্সিকিউশন লেয়ারের ডেটা ২৬-অক্টোবর-২০২৫ তারিখে [supermajority.info](https://supermajority.info/) থেকে পাওয়া গেছে। [মাইকেল স্প্রুলের](https://github.com/sigp/blockprint) কাছ থেকে কনসেন্সাস ক্লায়েন্টদের জন্য ডেটা পাওয়া গেছে। কনসেন্সাস ক্লায়েন্টের ডেটা পাওয়া আরও কঠিন কারণ কনসেন্সাস লেয়ার ক্লায়েন্টদের কাছে সবসময় দ্ব্যর্থহীন ট্রেস থাকে না যা তাদের সনাক্ত করতে ব্যবহার করা যেতে পারে। ডেটা একটি শ্রেণিবিন্যাস অ্যালগরিদম ব্যবহার করে তৈরি করা হয়েছিল যা কখনও কখনও কিছু সংখ্যালঘু ক্লায়েন্টকে বিভ্রান্ত করে (আরও বিশদ বিবরণের জন্য [এখানে](https://twitter.com/sproulM_/status/1440512518242197516) দেখুন)। উপরের ডায়াগ্রামে, এই ধরনের দ্ব্যর্থবোধক শ্রেণীবিন্যাসকে একটি দ্বৈত লেবেল (যেমন Nimbus/Teku) হিসেবে দেখানো হয়েছে। তথাপি, এটা স্পষ্ট যে নেটওয়ার্কের বেশিরভাগই Prysm চালাচ্ছে। শুধুমাত্র স্ন্যাপশট হওয়া সত্ত্বেও, ডায়াগ্রামের মানগুলি ক্লায়েন্ট বৈচিত্র্যের বর্তমান অবস্থার একটি ভাল সাধারণ ধারণা প্রদান করে।
+এক্সিকিউশন লেয়ারের ডেটা 26-অক্টোবর-2025 তারিখে [supermajority.info](https://supermajority.info/) থেকে সংগ্রহ করা হয়েছিল। কনসেন্সাস ক্লায়েন্টগুলোর ডেটা [Michael Sproul](https://github.com/sigp/blockprint) থেকে সংগ্রহ করা হয়েছিল। কনসেন্সাস ক্লায়েন্টের ডেটা পাওয়া আরও কঠিন কারণ কনসেন্সাস লেয়ার ক্লায়েন্টগুলোর সবসময় দ্ব্যর্থহীন ট্রেস থাকে না যা তাদের সনাক্ত করতে ব্যবহার করা যেতে পারে। ডেটাটি একটি ক্লাসিফিকেশন এ্যালগরিদম ব্যবহার করে তৈরি করা হয়েছিল যা কখনও কখনও কিছু সংখ্যালঘু ক্লায়েন্টকে বিভ্রান্ত করে (আরও বিশদ বিবরণের জন্য [এখানে](https://twitter.com/sproulM_/status/1440512518242197516) দেখুন)। উপরের ডায়াগ্রামে, এই অস্পষ্ট ক্লাসিফিকেশনগুলোকে একটি either/or লেবেল দিয়ে বিবেচনা করা হয়েছে (যেমন Nimbus/Teku)। তা সত্ত্বেও, এটি স্পষ্ট যে নেটওয়ার্কের বেশিরভাগ অংশ Prysm চালাচ্ছে। শুধুমাত্র স্ন্যাপশট হওয়া সত্ত্বেও, ডায়াগ্রামের মানগুলো বর্তমান ক্লায়েন্ট ডাইভার্সিটির অবস্থার একটি ভালো সাধারণ ধারণা প্রদান করে।
-কনসেন্সাস লেয়ারের জন্য আপ-টু-ডেট ক্লায়েন্ট ডাইভারসিটি ডেটা এখন [clientdiversity.org](https://clientdiversity.org/)-এ উপলব্ধ।
+কনসেন্সাস লেয়ারের জন্য আপ-টু-ডেট ক্লায়েন্ট ডাইভার্সিটি ডেটা এখন [clientdiversity.org](https://clientdiversity.org/)-এ উপলব্ধ।
## এক্সিকিউশন লেয়ার {#execution-layer}
-এখন পর্যন্ত, ক্লায়েন্ট বৈচিত্র্য নিয়ে কথোপকথন মূলত কনসেন্সাস লেয়ারের উপর দৃষ্টি নিবদ্ধ করেছে। যাইহোক, এক্সিকিউশন ক্লায়েন্ট [Geth](https://geth.ethereum.org) বর্তমানে সমস্ত নোডের প্রায় 85% এর জন্য দায়ী। এই শতাংশটি কনসেন্সাস ক্লায়েন্টদের মতো একই কারণে সমস্যাযুক্ত। উদাহরণস্বরূপ, লেনদেন হ্যান্ডলিং বা এক্সিকিউশন পেলোড তৈরিতে প্রভাব ফেলে এমন Geth-এর একটি বাগ কনসেন্সাস ক্লায়েন্টদের সমস্যাযুক্ত বা বাগযুক্ত লেনদেন চূড়ান্ত করতে পারে। অতএব, Ethereum এক্সিকিউশন ক্লায়েন্টদের আরও সমান বন্টনের সাথে স্বাস্থ্যকর হবে, আদর্শভাবে কোনও ক্লায়েন্ট নেটওয়ার্কের 33% এর বেশি প্রতিনিধিত্ব করবে না।
+এখন পর্যন্ত, ক্লায়েন্ট ডাইভার্সিটি নিয়ে আলোচনা মূলত কনসেন্সাস লেয়ারের উপর দৃষ্টি নিবদ্ধ করেছে। তবে, এক্সিকিউশন ক্লায়েন্ট [Geth](https://geth.ethereum.org) বর্তমানে সমস্ত নোডের প্রায় 85% দখল করে আছে। এই শতাংশটি কনসেন্সাস ক্লায়েন্টগুলোর মতো একই কারণে সমস্যামূলক। উদাহরণস্বরূপ, Geth-এ লেনদেন পরিচালনা বা এক্সিকিউশন পেলোড তৈরিকে প্রভাবিত করে এমন একটি বাগ কনসেন্সাস ক্লায়েন্টগুলোকে সমস্যামূলক বা বাগযুক্ত লেনদেন চূড়ান্ত করার দিকে পরিচালিত করতে পারে। অতএব, এক্সিকিউশন ক্লায়েন্টগুলোর আরও সমান বন্টনের সাথে ইথিরিয়াম স্বাস্থ্যকর হবে, আদর্শভাবে কোনো ক্লায়েন্ট নেটওয়ার্কের 33%-এর বেশি প্রতিনিধিত্ব করবে না।
-## একটি সংখ্যালঘু ক্লায়েন্ট ব্যবহার করুন {#use-minority-client}
+## একটি সংখ্যালঘু ক্লায়েন্ট ব্যবহার করুন {#use-minority-client}
-ক্লায়েন্ট বৈচিত্র্য মোকাবেলার জন্য সংখ্যালঘু ক্লায়েন্ট বেছে নেওয়ার জন্য স্বতন্ত্র ব্যবহারকারীদের চেয়ে বেশি প্রয়োজন - এর জন্য ভ্যালিডেটর পুল এবং প্রধান ডিএ্যাপস এবং এক্সচেঞ্জের মতো প্রতিষ্ঠানগুলিকেও ক্লায়েন্ট পরিবর্তন করতে হবে। যাইহোক, সমস্ত ব্যবহারকারী বর্তমান ভারসাম্যহীনতা সংশোধন করতে এবং সমস্ত উপলব্ধ Ethereum সফ্টওয়্যার ব্যবহারকে স্বাভাবিক করার জন্য তাদের অংশ করতে পারে। The Merge-এর পরে, সমস্ত নোড অপারেটরদের একটি এক্সিকিউশন ক্লায়েন্ট এবং একটি কনসেন্সাস ক্লায়েন্ট চালাতে হবে। নীচে প্রস্তাবিত ক্লায়েন্টদের সংমিশ্রণ বেছে নেওয়া ক্লায়েন্টের বৈচিত্র্য বাড়াতে সাহায্য করবে।
+ক্লায়েন্ট ডাইভার্সিটি মোকাবেলার জন্য শুধুমাত্র ব্যক্তিগত ব্যবহারকারীদের সংখ্যালঘু ক্লায়েন্ট বেছে নেওয়ার চেয়ে আরও বেশি কিছু প্রয়োজন - এর জন্য ভ্যালিডেটর পুল এবং প্রধান ডিএ্যাপস এবং এক্সচেঞ্জগুলোর মতো প্রতিষ্ঠানগুলোকেও ক্লায়েন্ট পরিবর্তন করতে হবে। তবে, সমস্ত ব্যবহারকারী বর্তমান ভারসাম্যহীনতা দূর করতে এবং উপলব্ধ সমস্ত ইথিরিয়াম সফটওয়্যারের ব্যবহার স্বাভাবিক করতে তাদের ভূমিকা পালন করতে পারেন। দ্য মার্জের পরে, সমস্ত নোড অপারেটরদের একটি এক্সিকিউশন ক্লায়েন্ট এবং একটি কনসেন্সাস ক্লায়েন্ট চালাতে হবে। নিচে প্রস্তাবিত ক্লায়েন্টগুলোর সংমিশ্রণ বেছে নেওয়া ক্লায়েন্ট ডাইভার্সিটি বাড়াতে সাহায্য করবে।
-### এক্সিকিউশন ক্লায়েন্ট {#execution-clients}
+### এক্সিকিউশন ক্লায়েন্ট {#execution-clients}
- [Besu](https://www.hyperledger.org/use/besu)
- [Nethermind](https://downloads.nethermind.io/)
@@ -100,11 +100,11 @@ data={[
- [Prysm](https://prysm.offchainlabs.com/docs/)
- [Grandine](https://docs.grandine.io/)
-প্রযুক্তিগত ব্যবহারকারীরা সংখ্যালঘু ক্লায়েন্টদের জন্য আরও টিউটোরিয়াল এবং ডকুমেন্টেশন লিখে এবং তাদের নোড-অপারেটিং সহকর্মীদের প্রভাবশালী ক্লায়েন্টদের থেকে দূরে সরে যেতে উত্সাহিত করে এই প্রক্রিয়াটিকে ত্বরান্বিত করতে সহায়তা করতে পারে। একটি সংখ্যালঘু কনসেন্সাস ক্লায়েন্টে স্যুইচ করার জন্য নির্দেশিকা [clientdiversity.org](https://clientdiversity.org/) এ উপলব্ধ।
+প্রযুক্তিগত ব্যবহারকারীরা সংখ্যালঘু ক্লায়েন্টগুলোর জন্য আরও টিউটোরিয়াল এবং ডকুমেন্টেশন লিখে এবং তাদের নোড-অপারেটিং সহকর্মীদের প্রভাবশালী ক্লায়েন্টগুলো থেকে দূরে সরে যেতে উৎসাহিত করে এই প্রক্রিয়াটিকে ত্বরান্বিত করতে সাহায্য করতে পারেন। একটি সংখ্যালঘু কনসেন্সাস ক্লায়েন্টে স্যুইচ করার গাইডগুলো [clientdiversity.org](https://clientdiversity.org/)-এ উপলব্ধ।
-## ক্লায়েন্ট বৈচিত্র্য ড্যাশবোর্ড {#client-diversity-dashboards}
+## ক্লায়েন্ট ডাইভার্সিটি ড্যাশবোর্ড {#client-diversity-dashboards}
-বেশ কয়েকটি ড্যাশবোর্ড এক্সিকিউশন এবং কনসেন্সাস লেয়ারের জন্য রিয়েল-টাইম ক্লায়েন্ট বৈচিত্র্যের পরিসংখ্যান দেয়।
+বেশ কয়েকটি ড্যাশবোর্ড এক্সিকিউশন এবং কনসেন্সাস লেয়ারের জন্য রিয়েল-টাইম ক্লায়েন্ট ডাইভার্সিটি পরিসংখ্যান দেয়।
**কনসেন্সাস লেয়ার:**
@@ -116,17 +116,17 @@ data={[
- [supermajority.info](https://supermajority.info//)
- [Ethernodes](https://ethernodes.org/)
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [Ethereum-এর কনসেন্সাস লেয়ারে ক্লায়েন্ট বৈচিত্র্য](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA)
-- [Ethereum Merge: নিজের ঝুঁকিতে সংখ্যাগরিষ্ঠ ক্লায়েন্ট চালান!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _ড্যানক্র্যাড ফিস্ট, ২৪ মার্চ ২০২২_
-- [ক্লায়েন্ট বৈচিত্র্যের গুরুত্ব](https://our.status.im/the-importance-of-client-diversity/)
-- [ইথেরিয়াম নোড পরিষেবাগুলির তালিকা](https://ethereumnodes.com/)
-- [ক্লায়েন্ট বৈচিত্র্য সমস্যার \"পাঁচটি কেন\"](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
-- [Ethereum ডাইভারসিটি এবং কিভাবে এর সমাধান করা যায় (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
+- [ইথিরিয়ামের কনসেন্সাস লেয়ারে ক্লায়েন্ট ডাইভার্সিটি](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA)
+- [ইথিরিয়াম মার্জ: নিজের ঝুঁকিতে মেজরিটি ক্লায়েন্ট চালান!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest, March 24 2022_
+- [ক্লায়েন্ট ডাইভার্সিটির গুরুত্ব](https://our.status.im/the-importance-of-client-diversity/)
+- [ইথিরিয়াম নোড পরিষেবাগুলোর তালিকা](https://ethereumnodes.com/)
+- [ক্লায়েন্ট ডাইভার্সিটি সমস্যার "ফাইভ হোয়াইস"](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
+- [ইথিরিয়াম ডাইভার্সিটি এবং কীভাবে এটি সমাধান করবেন (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
- [clientdiversity.org](https://clientdiversity.org/)
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [একটি Ethereum নোড চালান](/run-a-node/)
-- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
+- [একটি ইথিরিয়াম নোড চালান](/run-a-node/)
+- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/index.md
index 91650759a6a..d6652f5648f 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/index.md
@@ -1,319 +1,319 @@
---
-title: "নোড ও ক্লায়েন্ট"
-description: "ইথেরিয়াম নোড এবং ক্লায়েন্ট সফ্টওয়্যারের একটি সংক্ষিপ্ত বিবরণ, সাথে কীভাবে একটি নোড সেট আপ করতে হয় এবং কেন আপনার এটি করা উচিত।"
+title: নোড এবং ক্লায়েন্ট
+description: ইথেরিয়াম নোড এবং ক্লায়েন্ট সফটওয়্যারের একটি ওভারভিউ, সাথে কীভাবে একটি নোড সেট আপ করতে হয় এবং কেন আপনার এটি করা উচিত।
lang: bn
sidebarDepth: 2
---
-ইথেরিয়াম হল কম্পিউটারগুলির (নোড হিসাবে পরিচিত) একটি বিতরণ করা নেটওয়ার্ক যা এমন সফ্টওয়্যার চালায় যা ব্লক এবং লেনদেনের ডেটা যাচাই করতে পারে। আপনার কম্পিউটারকে একটি ইথেরিয়াম নোডে পরিণত করার জন্য সফ্টওয়্যারটি অবশ্যই আপনার কম্পিউটারে চালাতে হবে। একটি নোড তৈরি করার জন্য দুটি পৃথক সফ্টওয়্যার ('ক্লায়েন্ট' হিসাবে পরিচিত) প্রয়োজন।
+[ইথেরিয়াম](/) হলো কম্পিউটারের একটি ডিস্ট্রিবিউটেড নেটওয়ার্ক (যা নোড হিসেবে পরিচিত) যা এমন সফটওয়্যার চালায় যা ব্লকস এবং লেনদেন ডেটা যাচাই করতে পারে। আপনার কম্পিউটারকে একটি ইথেরিয়াম নোডে পরিণত করতে সফটওয়্যারটি অবশ্যই আপনার কম্পিউটারে চালাতে হবে। একটি নোড তৈরি করতে দুটি আলাদা সফটওয়্যারের (যা 'ক্লায়েন্ট' নামে পরিচিত) প্রয়োজন হয়।
## পূর্বশর্ত {#prerequisites}
-গভীরে যাওয়ার আগে এবং একটি ইথেরিয়াম ক্লায়েন্টের নিজস্ব উদাহরণ চালানোর আগে আপনার একটি পিয়ার-টু-পিয়ার নেটওয়ার্কের ধারণা এবং [EVM-এর মূল বিষয়গুলি](/developers/docs/evm/) বোঝা উচিত। আমাদের [ইথেরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) দেখুন।
+আরও গভীরে যাওয়ার আগে এবং আপনার নিজস্ব ইথেরিয়াম ক্লায়েন্ট চালানোর আগে আপনার পিয়ার-টু-পিয়ার নেটওয়ার্কের ধারণা এবং [ইভিএম-এর বেসিক](/developers/docs/evm/) বোঝা উচিত। আমাদের [ইথেরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) দেখে নিন।
-আপনি যদি নোডের বিষয়ে নতুন হন, তাহলে আমরা প্রথমে [একটি ইথেরিয়াম নোড চালানো](/run-a-node)-র উপর আমাদের ব্যবহারকারী-বান্ধব ভূমিকাটি দেখার পরামর্শ দিই।
+আপনি যদি নোড বিষয়ে নতুন হয়ে থাকেন, তবে আমরা প্রথমে [একটি ইথেরিয়াম নোড চালানো](/run-a-node) সম্পর্কে আমাদের ব্যবহারকারী-বান্ধব পরিচিতিটি দেখার পরামর্শ দিই।
## নোড এবং ক্লায়েন্ট কী? {#what-are-nodes-and-clients}
-একটি "নোড" হল ইথেরিয়াম ক্লায়েন্ট সফ্টওয়্যারের যেকোনো উদাহরণ যা ইথেরিয়াম সফ্টওয়্যার চালিত অন্যান্য কম্পিউটারের সাথে সংযুক্ত থাকে এবং একটি নেটওয়ার্ক তৈরি করে। একটি ক্লায়েন্ট হল ইথেরিয়ামের একটি বাস্তবায়ন যা প্রোটোকলের নিয়ম অনুসারে ডেটা যাচাই করে এবং নেটওয়ার্ককে সুরক্ষিত রাখে। একটি নোডকে দুটি ক্লায়েন্ট চালাতে হয়: একটি কনসেন্সাস ক্লায়েন্ট এবং একটি এক্সিকিউশন ক্লায়েন্ট।
+একটি "নোড" হলো ইথেরিয়াম ক্লায়েন্ট সফটওয়্যারের যেকোনো ইনস্ট্যান্স যা ইথেরিয়াম সফটওয়্যার চালানো অন্যান্য কম্পিউটারের সাথে সংযুক্ত হয়ে একটি নেটওয়ার্ক তৈরি করে। একটি ক্লায়েন্ট হলো ইথেরিয়ামের একটি বাস্তবায়ন যা প্রটোকল নিয়মের বিপরীতে ডেটা যাচাই করে এবং নেটওয়ার্ক সুরক্ষিত রাখে। একটি নোডকে দুটি ক্লায়েন্ট চালাতে হয়: একটি কনসেন্সাস ক্লায়েন্ট এবং একটি এক্সিকিউশন ক্লায়েন্ট।
-- এক্সিকিউশন ক্লায়েন্ট (এক্সিকিউশন ইঞ্জিন, EL ক্লায়েন্ট বা পূর্বে Eth1 ক্লায়েন্ট নামেও পরিচিত) নেটওয়ার্কে সম্প্রচারিত নতুন লেনদেন শোনে, সেগুলিকে EVM-এ কার্যকর করে এবং সমস্ত বর্তমান ইথেরিয়াম ডেটার সর্বশেষ অবস্থা এবং ডেটাবেস ধারণ করে।
-- কনসেন্সাস ক্লায়েন্ট (বিকন নোড, CL ক্লায়েন্ট বা পূর্বে Eth2 ক্লায়েন্ট নামেও পরিচিত) প্রুফ-অফ-স্টেক কনসেন্সাস অ্যালগরিদম প্রয়োগ করে, যা এক্সিকিউশন ক্লায়েন্ট থেকে যাচাইকৃত ডেটার উপর ভিত্তি করে নেটওয়ার্ককে চুক্তিতে পৌঁছাতে সক্ষম করে। এছাড়াও একটি তৃতীয় সফ্টওয়্যার আছে, যা একটি 'ভ্যালিডেটর' হিসাবে পরিচিত যা কনসেন্সাস ক্লায়েন্টে যোগ করা যেতে পারে, যা একটি নোডকে নেটওয়ার্ক সুরক্ষিত করতে অংশগ্রহণ করার অনুমতি দেয়।
+- এক্সিকিউশন ক্লায়েন্ট (যা এক্সিকিউশন ইঞ্জিন, ইএল ক্লায়েন্ট বা পূর্বে ইথ১ ক্লায়েন্ট নামেও পরিচিত) নেটওয়ার্কে সম্প্রচারিত নতুন লেনদেন শোনে, সেগুলোকে ইভিএম-এ এক্সিকিউট করে এবং সমস্ত বর্তমান ইথেরিয়াম ডেটার সর্বশেষ স্টেট এবং ডাটাবেস ধারণ করে।
+- কনসেন্সাস ক্লায়েন্ট (যা বিকন নোড, সিএল ক্লায়েন্ট বা পূর্বে ইথ২ ক্লায়েন্ট নামেও পরিচিত) প্রুফ-অফ-স্টেক কনসেন্সাস এ্যালগরিদম বাস্তবায়ন করে, যা নেটওয়ার্ককে এক্সিকিউশন ক্লায়েন্ট থেকে যাচাইকৃত ডেটার উপর ভিত্তি করে চুক্তিতে পৌঁছাতে সক্ষম করে। এছাড়াও একটি তৃতীয় সফটওয়্যার রয়েছে, যা 'ভ্যালিডেটর' নামে পরিচিত, এটি কনসেন্সাস ক্লায়েন্টের সাথে যুক্ত করা যেতে পারে, যা একটি নোডকে নেটওয়ার্ক সুরক্ষিত করতে অংশগ্রহণ করার অনুমতি দেয়।
-এই ক্লায়েন্টরা ইথেরিয়াম চেইনের হেডের ট্র্যাক রাখতে একসাথে কাজ করে এবং ব্যবহারকারীদের ইথেরিয়াম নেটওয়ার্কের সাথে যোগাযোগ করতে দেয়। একাধিক সফ্টওয়্যার একসাথে কাজ করার এই মডুলার ডিজাইনকে [এনক্যাপসুলেটেড কমপ্লেক্সিটি](https://vitalik.eth.limo/general/2022/02/28/complexity.html) বলা হয়। এই পদ্ধতিটি নির্বিঘ্নে [দ্য মার্জ](/roadmap/merge) কার্যকর করা সহজ করেছে, ক্লায়েন্ট সফ্টওয়্যার বজায় রাখা এবং বিকাশ করা সহজ করে তোলে এবং পৃথক ক্লায়েন্টদের পুনঃব্যবহার সক্ষম করে, উদাহরণস্বরূপ, [লেয়ার 2 ইকোসিস্টেমে](/layer-2/)।
+এই ক্লায়েন্টগুলো ইথেরিয়াম চেইনের হেডের ট্র্যাক রাখতে একসাথে কাজ করে এবং ব্যবহারকারীদের ইথেরিয়াম নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়। একাধিক সফটওয়্যার একসাথে কাজ করার এই মডুলার ডিজাইনকে [এনক্যাপসুলেটেড কমপ্লেক্সিটি](https://vitalik.eth.limo/general/2022/02/28/complexity.html) বলা হয়। এই পদ্ধতিটি [দ্য মার্জ](/roadmap/merge) নির্বিঘ্নে সম্পাদন করা সহজ করেছে, ক্লায়েন্ট সফটওয়্যার রক্ষণাবেক্ষণ এবং বিকাশ করা সহজ করে তোলে এবং পৃথক ক্লায়েন্টগুলোর পুনঃব্যবহার সক্ষম করে, উদাহরণস্বরূপ, [লেয়ার ২ ইকোসিস্টেমে](/layer-2/)।
-
-একটি কাপলড এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টের সরলীকৃত ডায়াগ্রাম।
+
+একটি কাপলড এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টের সরলীকৃত ডায়াগ্রাম।
-### ক্লায়েন্ট বৈচিত্র্য {#client-diversity}
+### ক্লায়েন্ট ডাইভার্সিটি {#client-diversity}
-[এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) উভয়ই বিভিন্ন দল দ্বারা তৈরি বিভিন্ন প্রোগ্রামিং ভাষায় বিদ্যমান।
+[এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) উভয়ই বিভিন্ন দলের দ্বারা তৈরি বিভিন্ন প্রোগ্রামিং ভাষায় বিদ্যমান।
-একাধিক ক্লায়েন্ট বাস্তবায়ন একটি একক কোডবেসের উপর নির্ভরতা হ্রাস করে নেটওয়ার্ককে আরও শক্তিশালী করে তুলতে পারে। আদর্শ লক্ষ্য হল কোনও ক্লায়েন্টের নেটওয়ার্কে আধিপত্য ছাড়াই বৈচিত্র্য অর্জন করা, যার ফলে ব্যর্থতার একটি সম্ভাব্য একক পয়েন্ট দূর করা যায়।
-ভাষার বৈচিত্র্য একটি বিস্তৃত ডেভেলপার সম্প্রদায়কে আমন্ত্রণ জানায় এবং তাদের পছন্দের ভাষায় ইন্টিগ্রেশন তৈরি করতে দেয়।
+একাধিক ক্লায়েন্ট বাস্তবায়ন একটি একক কোডবেসের উপর নির্ভরতা কমিয়ে নেটওয়ার্ককে শক্তিশালী করতে পারে। আদর্শ লক্ষ্য হলো কোনো ক্লায়েন্ট নেটওয়ার্কে আধিপত্য বিস্তার না করে বৈচিত্র্য অর্জন করা, যার ফলে সম্ভাব্য সিঙ্গেল পয়েন্ট অফ ফেইলিওর দূর হয়।
+ভাষার বৈচিত্র্য একটি বৃহত্তর ডেভেলপার সম্প্রদায়কেও আমন্ত্রণ জানায় এবং তাদের পছন্দের ভাষায় ইন্টিগ্রেশন তৈরি করার অনুমতি দেয়।
-[ক্লায়েন্ট ডাইভারসিটি](/developers/docs/nodes-and-clients/client-diversity/) সম্পর্কে আরও জানুন।
+[ক্লায়েন্ট ডাইভার্সিটি](/developers/docs/nodes-and-clients/client-diversity/) সম্পর্কে আরও জানুন।
-এই বাস্তবায়নগুলির মধ্যে যা সাধারণ তা হল তারা সবাই একটি একক স্পেসিফিকেশন অনুসরণ করে। স্পেসিফিকেশনগুলি নির্দেশ করে যে ইথেরিয়াম নেটওয়ার্ক এবং ব্লকচেইন কীভাবে কাজ করে। প্রতিটি প্রযুক্তিগত বিবরণ সংজ্ঞায়িত করা হয়েছে এবং স্পেসিফিকেশনগুলি এভাবে পাওয়া যেতে পারে:
+এই বাস্তবায়নগুলোর মধ্যে সাধারণ বিষয় হলো এগুলো সবই একটি একক স্পেসিফিকেশন অনুসরণ করে। স্পেসিফিকেশনগুলো নির্দেশ করে কীভাবে ইথেরিয়াম নেটওয়ার্ক এবং ব্লকচেইন কাজ করে। প্রতিটি প্রযুক্তিগত বিবরণ সংজ্ঞায়িত করা হয়েছে এবং স্পেসিফিকেশনগুলো নিচে পাওয়া যেতে পারে:
-- মূলত, [ইথেরিয়াম ইয়েলো পেপার](https://ethereum.github.io/yellowpaper/paper.pdf)
+- মূলত, [ইথেরিয়াম ইয়েলো পেপার](https://ethereum.github.io/yellowpaper/paper.pdf)
- [এক্সিকিউশন স্পেকস](https://github.com/ethereum/execution-specs/)
- [কনসেন্সাস স্পেকস](https://github.com/ethereum/consensus-specs)
-- [EIPs](https://eips.ethereum.org/) বিভিন্ন [নেটওয়ার্ক আপগ্রেডে](/ethereum-forks/) প্রয়োগ করা হয়েছে
+- বিভিন্ন [নেটওয়ার্ক আপগ্রেডে](/ethereum-forks/) বাস্তবায়িত [EIPs](https://eips.ethereum.org/)
-### নেটওয়ার্কে নোড ট্র্যাক করা {#network-overview}
+### নেটওয়ার্কে নোড ট্র্যাকিং {#network-overview}
-একাধিক ট্র্যাকার ইথেরিয়াম নেটওয়ার্কের নোডগুলির একটি রিয়েল-টাইম ওভারভিউ অফার করে। মনে রাখবেন যে বিকেন্দ্রীভূত নেটওয়ার্কগুলির প্রকৃতির কারণে, এই ক্রলারগুলি কেবল নেটওয়ার্কের একটি সীমিত ভিউ প্রদান করতে পারে এবং বিভিন্ন ফলাফল রিপোর্ট করতে পারে।
+একাধিক ট্র্যাকার ইথেরিয়াম নেটওয়ার্কে নোডগুলোর একটি রিয়েল-টাইম ওভারভিউ প্রদান করে। মনে রাখবেন যে ডিসেন্ট্রালাইজড নেটওয়ার্কগুলোর প্রকৃতির কারণে, এই ক্রলারগুলো কেবল নেটওয়ার্কের একটি সীমিত দৃশ্য প্রদান করতে পারে এবং ভিন্ন ফলাফল রিপোর্ট করতে পারে।
-- Etherscan দ্বারা [নোডের মানচিত্র](https://etherscan.io/nodetracker)
-- Bitfly দ্বারা [Ethernodes](https://ethernodes.org/)
-- Chainsafe দ্বারা [Nodewatch](https://www.nodewatch.io/), কনসেন্সাস নোড ক্রল করা
-- [Monitoreth](https://monitoreth.io/) - MigaLabs দ্বারা, একটি ডিস্ট্রিবিউটেড নেটওয়ার্ক মনিটরিং টুল
-- [সাপ্তাহিক নেটওয়ার্ক স্বাস্থ্য প্রতিবেদন](https://probelab.io) - ProbeLab দ্বারা, [নেবুলা ক্রলার](https://github.com/dennis-tra/nebula) এবং অন্যান্য টুল ব্যবহার করে
+- ইথারস্ক্যান দ্বারা [নোডের ম্যাপ](https://etherscan.io/nodetracker)
+- বিটফ্লাই দ্বারা [ইথারনোডস](https://ethernodes.org/)
+- চেইনসেফ দ্বারা [নোডওয়াচ](https://www.nodewatch.io/), কনসেন্সাস নোড ক্রল করছে
+- মিগাল্যাবস দ্বারা [মনিটরিথ](https://monitoreth.io/), একটি ডিস্ট্রিবিউটেড নেটওয়ার্ক মনিটরিং টুল
+- প্রোবল্যাব দ্বারা [সাপ্তাহিক নেটওয়ার্ক হেলথ রিপোর্ট](https://probelab.io), [নেবুলা ক্রলার](https://github.com/dennis-tra/nebula) এবং অন্যান্য টুল ব্যবহার করে
-## নোডের প্রকারভেদ {#node-types}
+## নোডের ধরন {#node-types}
-আপনি যদি [নিজের নোড চালাতে](/developers/docs/nodes-and-clients/run-a-node/) চান, তাহলে আপনার বোঝা উচিত যে বিভিন্ন ধরণের নোড রয়েছে যা ভিন্নভাবে ডেটা ব্যবহার করে। আসলে, ক্লায়েন্টরা তিন ধরণের নোড চালাতে পারে: লাইট, ফুল এবং আর্কাইভ। এছাড়াও বিভিন্ন সিঙ্ক কৌশলের বিকল্প রয়েছে যা দ্রুত সিঙ্ক্রোনাইজেশন সময় সক্ষম করে। সিঙ্ক্রোনাইজেশন বলতে বোঝায় এটি কত দ্রুত ইথেরিয়ামের অবস্থার সবচেয়ে আপ-টু-ডেট তথ্য পেতে পারে।
+আপনি যদি [আপনার নিজস্ব নোড চালাতে](/developers/docs/nodes-and-clients/run-a-node/) চান, তবে আপনার বোঝা উচিত যে বিভিন্ন ধরণের নোড রয়েছে যা ভিন্নভাবে ডেটা গ্রহণ করে। প্রকৃতপক্ষে, ক্লায়েন্টরা তিন ধরণের নোড চালাতে পারে: লাইট, ফুল এবং আর্কাইভ। বিভিন্ন সিঙ্ক স্ট্র্যাটেজির বিকল্পও রয়েছে যা দ্রুত সিঙ্ক্রোনাইজেশন সময় সক্ষম করে। সিঙ্ক্রোনাইজেশন বলতে বোঝায় এটি কত দ্রুত ইথেরিয়ামের স্টেটের সবচেয়ে আপ-টু-ডেট তথ্য পেতে পারে।
### ফুল নোড {#full-node}
-ফুল নোডগুলি ব্লকচেইনের একটি ব্লক-বাই-ব্লক বৈধতা সম্পাদন করে, যার মধ্যে প্রতিটি ব্লকের জন্য ব্লক বডি এবং স্টেট ডেটা ডাউনলোড এবং যাচাই করা অন্তর্ভুক্ত। ফুল নোডের বিভিন্ন ক্লাস রয়েছে - কিছু জেনেসিস ব্লক থেকে শুরু হয় এবং ব্লকচেইনের পুরো ইতিহাসে প্রতিটি একক ব্লক যাচাই করে। অন্যরা তাদের যাচাইকরণ একটি সাম্প্রতিক ব্লক থেকে শুরু করে যা তারা বিশ্বাস করে যে বৈধ (যেমন, Geth-এর 'স্ন্যাপ সিঙ্ক')। যাচাইকরণ যেখানেই শুরু হোক না কেন, ফুল নোডগুলি শুধুমাত্র তুলনামূলকভাবে সাম্প্রতিক ডেটার (সাধারণত সবচেয়ে সাম্প্রতিক 128টি ব্লক) একটি স্থানীয় কপি রাখে, যা ডিস্ক স্পেস বাঁচানোর জন্য পুরানো ডেটা মুছে ফেলার অনুমতি দেয়। প্রয়োজনে পুরোনো ডেটা পুনরায় তৈরি করা যেতে পারে।
+ফুল নোডগুলো ব্লকচেইনের ব্লক-বাই-ব্লক ভ্যালিডেশন করে, যার মধ্যে প্রতিটি ব্লকের জন্য ব্লক বডি এবং স্টেট ডেটা ডাউনলোড এবং যাচাই করা অন্তর্ভুক্ত। ফুল নোডের বিভিন্ন ক্লাস রয়েছে - কিছু জেনেসিস ব্লক থেকে শুরু হয় এবং ব্লকচেইনের সম্পূর্ণ ইতিহাসের প্রতিটি ব্লক যাচাই করে। অন্যরা তাদের যাচাইকরণ আরও সাম্প্রতিক ব্লকে শুরু করে যা তারা বৈধ বলে বিশ্বাস করে (যেমন, Geth-এর 'স্ন্যাপ সিঙ্ক')। যাচাইকরণ যেখান থেকেই শুরু হোক না কেন, ফুল নোডগুলো কেবল তুলনামূলকভাবে সাম্প্রতিক ডেটার একটি স্থানীয় অনুলিপি রাখে (সাধারণত সবচেয়ে সাম্প্রতিক 128টি ব্লক), যা ডিস্ক স্পেস বাঁচাতে পুরানো ডেটা মুছে ফেলার অনুমতি দেয়। প্রয়োজন হলে পুরানো ডেটা পুনরায় তৈরি করা যেতে পারে।
-- সম্পূর্ণ ব্লকচেইন ডেটা সঞ্চয় করে (যদিও এটি পর্যায়ক্রমে ছাঁটাই করা হয় তাই একটি ফুল নোড জেনেসিস পর্যন্ত সমস্ত স্টেট ডেটা সঞ্চয় করে না)
-- ব্লক যাচাইকরণে অংশ নেয়, সমস্ত ব্লক এবং স্টেট যাচাই করে।
-- সমস্ত স্টেট হয় স্থানীয় স্টোরেজ থেকে পুনরুদ্ধার করা যেতে পারে বা একটি ফুল নোড দ্বারা 'স্ন্যাপশট' থেকে পুনরায় তৈরি করা যেতে পারে।
-- নেটওয়ার্কে পরিষেবা দেয় এবং অনুরোধের ভিত্তিতে ডেটা সরবরাহ করে।
+- সম্পূর্ণ ব্লকচেইন ডেটা সংরক্ষণ করে (যদিও এটি পর্যায়ক্রমে প্রুন করা হয় যাতে একটি ফুল নোড জেনেসিস পর্যন্ত সমস্ত স্টেট ডেটা সংরক্ষণ না করে)
+- ব্লক ভ্যালিডেশনে অংশগ্রহণ করে, সমস্ত ব্লকস এবং স্টেট যাচাই করে।
+- সমস্ত স্টেট স্থানীয় স্টোরেজ থেকে পুনরুদ্ধার করা যেতে পারে বা একটি ফুল নোড দ্বারা 'স্ন্যাপশট' থেকে পুনরায় তৈরি করা যেতে পারে।
+- নেটওয়ার্ককে পরিষেবা দেয় এবং অনুরোধে ডেটা সরবরাহ করে।
### আর্কাইভ নোড {#archive-node}
-আর্কাইভ নোডগুলি হল ফুল নোড যা জেনেসিস থেকে প্রতিটি ব্লক যাচাই করে এবং ডাউনলোড করা কোনও ডেটা কখনও মুছে ফেলে না।
+আর্কাইভ নোডগুলো হলো ফুল নোড যা জেনেসিস থেকে প্রতিটি ব্লক যাচাই করে এবং ডাউনলোড করা কোনো ডেটা কখনো মুছে ফেলে না।
-- ফুল নোডে রাখা সবকিছু সঞ্চয় করে এবং ঐতিহাসিক স্টেটের একটি আর্কাইভ তৈরি করে। আপনার যদি ব্লক #4,000,000-এ একটি অ্যাকাউন্টের ব্যালেন্সের মতো কিছু জিজ্ঞাসা করার প্রয়োজন হয়, বা ট্রেসিং ব্যবহার করে যাচাই না করে সহজভাবে এবং নির্ভরযোগ্যভাবে আপনার নিজের লেনদেন সেট পরীক্ষা করার প্রয়োজন হয়, তবে এটির প্রয়োজন।
-- এই ডেটা টেরাবাইট ইউনিটের প্রতিনিধিত্ব করে, যা আর্কাইভ নোডগুলিকে গড় ব্যবহারকারীদের জন্য কম আকর্ষণীয় করে তোলে তবে ব্লক এক্সপ্লোরার, ওয়ালেট বিক্রেতা এবং চেইন অ্যানালিটিক্সের মতো পরিষেবাগুলির জন্য সুবিধাজনক হতে পারে।
+- ফুল নোডে রাখা সবকিছু সংরক্ষণ করে এবং ঐতিহাসিক স্টেটের একটি আর্কাইভ তৈরি করে। এটি প্রয়োজন হয় যদি আপনি ব্লক #4,000,000-এ একাউন্ট ব্যালেন্সের মতো কিছু জিজ্ঞাসা করতে চান, বা ট্রেসিং ব্যবহার করে যাচাই না করেই আপনার নিজস্ব লেনদেন সেট সহজভাবে এবং নির্ভরযোগ্যভাবে পরীক্ষা করতে চান।
+- এই ডেটা টেরাবাইট ইউনিট উপস্থাপন করে, যা আর্কাইভ নোডগুলোকে সাধারণ ব্যবহারকারীদের জন্য কম আকর্ষণীয় করে তোলে তবে ব্লক এক্সপ্লোরার, ওয়ালেট ভেন্ডর এবং চেইন অ্যানালিটিক্সের মতো পরিষেবাগুলোর জন্য কার্যকর হতে পারে।
-আর্কাইভ ছাড়া অন্য কোনো মোডে ক্লায়েন্ট সিঙ্ক করার ফলে ছাঁটাই করা ব্লকচেইন ডেটা হবে। এর মানে হল, সমস্ত ঐতিহাসিক স্টেটের কোনো আর্কাইভ নেই তবে ফুল নোড প্রয়োজনে সেগুলি তৈরি করতে সক্ষম।
+আর্কাইভ ছাড়া অন্য কোনো মোডে ক্লায়েন্ট সিঙ্ক করার ফলে প্রুন করা ব্লকচেইন ডেটা তৈরি হবে। এর মানে হলো, সমস্ত ঐতিহাসিক স্টেটের কোনো আর্কাইভ নেই তবে ফুল নোড চাহিবা মাত্র সেগুলো তৈরি করতে সক্ষম।
[আর্কাইভ নোড](/developers/docs/nodes-and-clients/archive-nodes) সম্পর্কে আরও জানুন।
### লাইট নোড {#light-node}
-প্রতিটি ব্লক ডাউনলোড করার পরিবর্তে, লাইট নোডগুলি কেবল ব্লক হেডার ডাউনলোড করে। এই হেডারগুলিতে ব্লকগুলির বিষয়বস্তু সম্পর্কে সংক্ষিপ্ত তথ্য থাকে। লাইট নোডের প্রয়োজনীয় অন্য যেকোনো তথ্য একটি ফুল নোড থেকে অনুরোধ করা হয়। লাইট নোড তখন ব্লক হেডারগুলিতে স্টেট রুটের বিপরীতে তারা যে ডেটা পায় তা স্বাধীনভাবে যাচাই করতে পারে। লাইট নোড ব্যবহারকারীদেরকে শক্তিশালী হার্ডওয়্যার বা ফুল নোড চালানোর জন্য প্রয়োজনীয় উচ্চ ব্যান্ডউইথ ছাড়াই ইথেরিয়াম নেটওয়ার্কে অংশগ্রহণ করতে সক্ষম করে। অবশেষে, লাইট নোডগুলি মোবাইল ফোন বা এমবেডেড ডিভাইসে চলতে পারে। লাইট নোডগুলি কনসেন্সাসে অংশ নেয় না (অর্থাৎ, তারা ভ্যালিডেটর হতে পারে না), তবে তারা একটি ফুল নোডের মতো একই কার্যকারিতা এবং নিরাপত্তা গ্যারান্টি সহ ইথেরিয়াম ব্লকচেইনে অ্যাক্সেস করতে পারে।
+প্রতিটি ব্লক ডাউনলোড করার পরিবর্তে, লাইট নোডগুলো কেবল ব্লক হেডার ডাউনলোড করে। এই হেডারগুলোতে ব্লকের বিষয়বস্তু সম্পর্কে সারসংক্ষেপ তথ্য থাকে। লাইট নোডের প্রয়োজনীয় অন্য যেকোনো তথ্য একটি ফুল নোড থেকে অনুরোধ করা হয়। লাইট নোড তখন ব্লক হেডারের স্টেট রুটের বিপরীতে প্রাপ্ত ডেটা স্বাধীনভাবে যাচাই করতে পারে। লাইট নোডগুলো ব্যবহারকারীদের শক্তিশালী হার্ডওয়্যার বা ফুল নোড চালানোর জন্য প্রয়োজনীয় উচ্চ ব্যান্ডউইথ ছাড়াই ইথেরিয়াম নেটওয়ার্কে অংশগ্রহণ করতে সক্ষম করে। শেষ পর্যন্ত, লাইট নোডগুলো মোবাইল ফোন বা এমবেডেড ডিভাইসে চলতে পারে। লাইট নোডগুলো কনসেন্সাসে অংশগ্রহণ করে না (অর্থাৎ, তারা ভ্যালিডেটর হতে পারে না), তবে তারা একটি ফুল নোডের মতো একই কার্যকারিতা এবং সুরক্ষা গ্যারান্টি সহ ইথেরিয়াম ব্লকচেইন অ্যাক্সেস করতে পারে।
-লাইট ক্লায়েন্টগুলি ইথেরিয়ামের জন্য সক্রিয় বিকাশের একটি ক্ষেত্র এবং আমরা শীঘ্রই কনসেন্সাস লেয়ার এবং এক্সিকিউশন লেয়ারের জন্য নতুন লাইট ক্লায়েন্ট দেখার আশা করি।
-[গসিপ নেটওয়ার্ক](https://www.ethportal.net/) এর মাধ্যমে লাইট ক্লায়েন্ট ডেটা সরবরাহ করার সম্ভাব্য রুটও রয়েছে। এটি সুবিধাজনক কারণ গসিপ নেটওয়ার্ক অনুরোধ পরিবেশন করার জন্য ফুল নোডের প্রয়োজন ছাড়াই লাইট নোডগুলির একটি নেটওয়ার্ক সমর্থন করতে পারে।
+লাইট ক্লায়েন্টগুলো ইথেরিয়ামের জন্য সক্রিয় বিকাশের একটি ক্ষেত্র এবং আমরা শীঘ্রই কনসেন্সাস লেয়ার এবং এক্সিকিউশন লেয়ারের জন্য নতুন লাইট ক্লায়েন্ট দেখার আশা করি।
+[গসিপ নেটওয়ার্কের](https://www.ethportal.net/) মাধ্যমে লাইট ক্লায়েন্ট ডেটা সরবরাহ করার সম্ভাব্য উপায়ও রয়েছে। এটি সুবিধাজনক কারণ গসিপ নেটওয়ার্ক অনুরোধগুলো পরিবেশন করার জন্য ফুল নোডের প্রয়োজন ছাড়াই লাইট নোডগুলোর একটি নেটওয়ার্ক সমর্থন করতে পারে।
-ইথেরিয়াম এখনও লাইট নোডের একটি বড় জনসংখ্যা সমর্থন করে না, তবে লাইট নোড সমর্থন একটি এমন ক্ষেত্র যা অদূর ভবিষ্যতে দ্রুত বিকশিত হবে বলে আশা করা হচ্ছে। বিশেষ করে, [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios), এবং [LodeStar](https://lodestar.chainsafe.io/)-এর মতো ক্লায়েন্টরা বর্তমানে লাইট নোডগুলিতে খুব বেশি মনোনিবেশ করছে।
+ইথেরিয়াম এখনো বিপুল সংখ্যক লাইট নোড সমর্থন করে না, তবে লাইট নোড সমর্থন এমন একটি ক্ষেত্র যা অদূর ভবিষ্যতে দ্রুত বিকাশ লাভ করবে বলে আশা করা হচ্ছে। বিশেষ করে, [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios), এবং [LodeStar](https://lodestar.chainsafe.io/)-এর মতো ক্লায়েন্টগুলো বর্তমানে লাইট নোডগুলোর উপর ব্যাপকভাবে দৃষ্টি নিবদ্ধ করছে।
-## আমার কেন একটি ইথেরিয়াম নোড চালানো উচিত? {#why-should-i-run-an-ethereum-node}
+## কেন আমার একটি ইথেরিয়াম নোড চালানো উচিত? {#why-should-i-run-an-ethereum-node}
-একটি নোড চালানো আপনাকে সরাসরি, বিশ্বাসহীনভাবে এবং ব্যক্তিগতভাবে ইথেরিয়াম ব্যবহার করার অনুমতি দেয় এবং একই সাথে নেটওয়ার্ককে আরও শক্তিশালী এবং বিকেন্দ্রীভূত রেখে সমর্থন করে।
+একটি নোড চালানো আপনাকে সরাসরি, বিশ্বাসযোগ্যভাবে এবং ব্যক্তিগতভাবে ইথেরিয়াম ব্যবহার করার অনুমতি দেয় এবং এটিকে আরও শক্তিশালী এবং ডিসেন্ট্রালাইজড রেখে নেটওয়ার্ককে সমর্থন করে।
### আপনার জন্য সুবিধা {#benefits-to-you}
-আপনার নিজের নোড চালানো আপনাকে একটি ব্যক্তিগত, স্বয়ংসম্পূর্ণ এবং বিশ্বাসহীন পদ্ধতিতে ইথেরিয়াম ব্যবহার করতে সক্ষম করে। আপনাকে নেটওয়ার্ককে বিশ্বাস করার দরকার নেই কারণ আপনি আপনার ক্লায়েন্টের সাথে নিজেই ডেটা যাচাই করতে পারেন। "বিশ্বাস করবেন না, যাচাই করুন" একটি জনপ্রিয় ব্লকচেইন মন্ত্র।
+আপনার নিজস্ব নোড চালানো আপনাকে ব্যক্তিগত, স্বয়ংসম্পূর্ণ এবং বিশ্বাসযোগ্য পদ্ধতিতে ইথেরিয়াম ব্যবহার করতে সক্ষম করে। আপনার নেটওয়ার্ককে বিশ্বাস করার দরকার নেই কারণ আপনি আপনার ক্লায়েন্টের সাথে নিজেই ডেটা যাচাই করতে পারেন। "বিশ্বাস করবেন না, যাচাই করুন" একটি জনপ্রিয় ব্লকচেইন মন্ত্র।
-- আপনার নোড নিজেই কনসেন্সাস নিয়মগুলির বিরুদ্ধে সমস্ত লেনদেন এবং ব্লক যাচাই করে। এর মানে হল আপনাকে নেটওয়ার্কের অন্য কোনও নোডের উপর নির্ভর করতে হবে না বা তাদের পুরোপুরি বিশ্বাস করতে হবে না।
-- আপনি আপনার নিজের নোডের সাথে একটি ইথেরিয়াম ওয়ালেট ব্যবহার করতে পারেন। আপনি আরও সুরক্ষিতভাবে এবং ব্যক্তিগতভাবে ডিএ্যাপস ব্যবহার করতে পারেন কারণ আপনাকে মধ্যস্থতাকারীদের কাছে আপনার ঠিকানা এবং ব্যালেন্স ফাঁস করতে হবে না। সবকিছু আপনার নিজের ক্লায়েন্ট দিয়ে পরীক্ষা করা যেতে পারে। [MetaMask](https://metamask.io), [Frame](https://frame.sh/), এবং [অন্যান্য অনেক ওয়ালেট](/wallets/find-wallet/) RPC-আমদানি অফার করে, যা তাদের আপনার নোড ব্যবহার করার অনুমতি দেয়।
-- আপনি অন্যান্য পরিষেবাগুলি চালাতে এবং স্ব-হোস্ট করতে পারেন যা ইথেরিয়াম থেকে ডেটার উপর নির্ভর করে। উদাহরণস্বরূপ, এটি একটি বিকন চেইন ভ্যালিডেটর, লেয়ার 2-এর মতো সফ্টওয়্যার, অবকাঠামো, ব্লক এক্সপ্লোরার, পেমেন্ট প্রসেসর ইত্যাদি হতে পারে।
-- আপনি আপনার নিজস্ব কাস্টম [RPC এন্ডপয়েন্ট](/developers/docs/apis/json-rpc/) প্রদান করতে পারেন। আপনি এমনকি এই এন্ডপয়েন্টগুলি প্রকাশ্যে সম্প্রদায়ের কাছে অফার করতে পারেন যাতে তারা বড় সেন্ট্রালাইজড প্রদানকারীদের এড়াতে পারে।
-- আপনি **ইন্টার-প্রসেস কমিউনিকেশনস (IPC)** ব্যবহার করে আপনার নোডের সাথে সংযোগ স্থাপন করতে পারেন বা আপনার প্রোগ্রামকে একটি প্লাগইন হিসাবে লোড করার জন্য নোডটি পুনরায় লিখতে পারেন। এটি কম লেটেন্সি প্রদান করে, যা অনেক সাহায্য করে, যেমন, ওয়েব3 লাইব্রেরি ব্যবহার করে প্রচুর ডেটা প্রক্রিয়া করার সময় বা যখন আপনাকে যত দ্রুত সম্ভব আপনার লেনদেন প্রতিস্থাপন করতে হবে (যেমন, ফ্রন্টরানিং)।
-- আপনি নেটওয়ার্ক সুরক্ষিত করতে এবং পুরস্কার অর্জন করতে সরাসরি ETH স্টেক করতে পারেন। শুরু করতে [একক স্টেকিং](/staking/solo/) দেখুন।
+- আপনার নোড নিজেই কনসেন্সাস নিয়মের বিপরীতে সমস্ত লেনদেন এবং ব্লকস যাচাই করে। এর মানে হলো আপনাকে নেটওয়ার্কের অন্য কোনো নোডের ওপর নির্ভর করতে হবে না বা তাদের পুরোপুরি বিশ্বাস করতে হবে না।
+- আপনি আপনার নিজস্ব নোডের সাথে একটি ইথেরিয়াম ওয়ালেট ব্যবহার করতে পারেন। আপনি ডিএ্যাপস আরও নিরাপদে এবং ব্যক্তিগতভাবে ব্যবহার করতে পারেন কারণ আপনাকে মধ্যস্থতাকারীদের কাছে আপনার এডড্রেস এবং ব্যালেন্স ফাঁস করতে হবে না। সবকিছু আপনার নিজস্ব ক্লায়েন্ট দিয়ে চেক করা যেতে পারে। [MetaMask](https://metamask.io), [Frame](https://frame.sh/), এবং [অন্যান্য অনেক ওয়ালেট](/wallets/find-wallet/) RPC-ইমপোর্টিং অফার করে, যা তাদের আপনার নোড ব্যবহার করার অনুমতি দেয়।
+- আপনি অন্যান্য পরিষেবা চালাতে এবং সেলফ-হোস্ট করতে পারেন যা ইথেরিয়াম থেকে ডেটার উপর নির্ভর করে। উদাহরণস্বরূপ, এটি একটি বিকন চেইন ভ্যালিডেটর, লেয়ার ২ এর মতো সফটওয়্যার, পরিকাঠামো, ব্লক এক্সপ্লোরার, পেমেন্ট প্রসেসর ইত্যাদি হতে পারে।
+- আপনি আপনার নিজস্ব কাস্টম [RPC এন্ডপয়েন্ট](/developers/docs/apis/json-rpc/) প্রদান করতে পারেন। এমনকি আপনি এই এন্ডপয়েন্টগুলো সম্প্রদায়কে সর্বজনীনভাবে অফার করতে পারেন যাতে তারা বড় সেন্ট্রালাইজড প্রদানকারীদের এড়াতে পারে।
+- আপনি **ইন্টার-প্রসেস কমিউনিকেশনস (IPC)** ব্যবহার করে আপনার নোডের সাথে সংযোগ করতে পারেন বা আপনার প্রোগ্রামটিকে প্লাগইন হিসেবে লোড করতে নোডটি পুনরায় লিখতে পারেন। এটি কম লেটেন্সি প্রদান করে, যা অনেক সাহায্য করে, যেমন, ওয়েব3 লাইব্রেরি ব্যবহার করে প্রচুর ডেটা প্রসেস করার সময় বা যখন আপনাকে যত দ্রুত সম্ভব আপনার লেনদেন প্রতিস্থাপন করতে হবে (অর্থাৎ, ফ্রন্টরানিং)।
+- নেটওয়ার্ক সুরক্ষিত করতে এবং পুরষ্কার অর্জন করতে আপনি সরাসরি ETH স্টেক করতে পারেন। শুরু করতে [সোলো স্টেকিং](/staking/solo/) দেখুন।
-
+
-### নেটওয়ার্কের সুবিধা {#network-benefits}
+### নেটওয়ার্ক সুবিধা {#network-benefits}
-ইথেরিয়ামের স্বাস্থ্য, নিরাপত্তা এবং কর্মক্ষম স্থিতিস্থাপকতার জন্য বিভিন্ন ধরণের নোড থাকা গুরুত্বপূর্ণ।
+ইথেরিয়ামের স্বাস্থ্য, নিরাপত্তা এবং অপারেশনাল স্থিতিস্থাপকতার জন্য নোডগুলোর একটি বৈচিত্র্যময় সেট গুরুত্বপূর্ণ।
-- ফুল নোডগুলি কনসেন্সাস নিয়মগুলি প্রয়োগ করে যাতে তাদের এমন ব্লকগুলি গ্রহণ করতে প্রতারিত করা না যায় যা সেগুলি অনুসরণ করে না। এটি নেটওয়ার্কে অতিরিক্ত নিরাপত্তা প্রদান করে কারণ যদি সমস্ত নোড লাইট নোড হত, যা সম্পূর্ণ যাচাই করে না, তবে ভ্যালিডেটররা নেটওয়ার্কে আক্রমণ করতে পারত।
-- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/#what-is-pos)-এর ক্রিপ্টো-অর্থনৈতিক প্রতিরক্ষা অতিক্রমকারী একটি আক্রমণের ক্ষেত্রে, সৎ চেইন অনুসরণ করতে বেছে নেওয়া ফুল নোডগুলির দ্বারা একটি সামাজিক পুনরুদ্ধার করা যেতে পারে।
-- নেটওয়ার্কে আরও নোড থাকার ফলে একটি আরও বৈচিত্র্যময় এবং শক্তিশালী নেটওয়ার্ক তৈরি হয়, যা বিকেন্দ্রীকরণের চূড়ান্ত লক্ষ্য, যা একটি সেন্সরশিপ-প্রতিরোধী এবং নির্ভরযোগ্য সিস্টেম সক্ষম করে।
-- ফুল নোডগুলি লাইটওয়েট ক্লায়েন্টদের জন্য ব্লকচেইন ডেটাতে অ্যাক্সেস সরবরাহ করে যা এর উপর নির্ভর করে। লাইট নোডগুলি পুরো ব্লকচেইন সঞ্চয় করে না, পরিবর্তে তারা [ব্লক হেডারগুলিতে স্টেট রুট](/developers/docs/blocks/#block-anatomy) এর মাধ্যমে ডেটা যাচাই করে। প্রয়োজনে তারা ফুল নোড থেকে আরও তথ্য অনুরোধ করতে পারে।
+- ফুল নোডগুলো কনসেন্সাস নিয়ম প্রয়োগ করে যাতে তারা এমন ব্লকস গ্রহণ করতে প্রতারিত না হয় যা সেগুলো অনুসরণ করে না। এটি নেটওয়ার্কে অতিরিক্ত নিরাপত্তা প্রদান করে কারণ যদি সমস্ত নোড লাইট নোড হয়, যা সম্পূর্ণ যাচাইকরণ করে না, তবে ভ্যালিডেটরস নেটওয়ার্কে আক্রমণ করতে পারে।
+- এমন একটি আক্রমণের ক্ষেত্রে যা [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/#what-is-pos)-এর ক্রিপ্টো-অর্থনৈতিক প্রতিরক্ষাকে অতিক্রম করে, সৎ চেইন অনুসরণ করতে বেছে নেওয়া ফুল নোডগুলোর দ্বারা একটি সামাজিক পুনরুদ্ধার করা যেতে পারে।
+- নেটওয়ার্কে আরও নোডের ফলে আরও বৈচিত্র্যময় এবং শক্তিশালী নেটওয়ার্ক তৈরি হয়, যা ডিসেন্ট্রালাইজেশনের চূড়ান্ত লক্ষ্য, যা একটি সেন্সরশিপ-প্রতিরোধী এবং নির্ভরযোগ্য সিস্টেম সক্ষম করে।
+- ফুল নোডগুলো লাইটওয়েট ক্লায়েন্টদের জন্য ব্লকচেইন ডেটাতে অ্যাক্সেস প্রদান করে যা এর উপর নির্ভর করে। লাইট নোডগুলো পুরো ব্লকচেইন সংরক্ষণ করে না, পরিবর্তে তারা [ব্লক হেডারে স্টেট রুট](/developers/docs/blocks/#block-anatomy)-এর মাধ্যমে ডেটা যাচাই করে। প্রয়োজন হলে তারা ফুল নোড থেকে আরও তথ্যের অনুরোধ করতে পারে।
-আপনি যদি একটি ফুল নোড চালান, তবে পুরো ইথেরিয়াম নেটওয়ার্ক এটি থেকে উপকৃত হয়, এমনকি যদি আপনি একটি ভ্যালিডেটর নাও চালান।
+আপনি যদি একটি ফুল নোড চালান, তবে পুরো ইথেরিয়াম নেটওয়ার্ক এটি থেকে উপকৃত হয়, এমনকি আপনি ভ্যালিডেটর না চালালেও।
-## আপনার নিজের নোড চালানো {#running-your-own-node}
+## আপনার নিজস্ব নোড চালানো {#running-your-own-node}
-আপনার নিজের ইথেরিয়াম ক্লায়েন্ট চালাতে আগ্রহী?
+আপনার নিজস্ব ইথেরিয়াম ক্লায়েন্ট চালাতে আগ্রহী?
-নতুনদের জন্য বন্ধুত্বপূর্ণ পরিচিতির জন্য আরও জানতে আমাদের [একটি নোড চালান](/run-a-node) পৃষ্ঠাটি দেখুন।
+নতুনদের জন্য বন্ধুত্বপূর্ণ পরিচিতির জন্য আরও জানতে আমাদের [একটি নোড চালান](/run-a-node) পৃষ্ঠায় যান।
-আপনি যদি আরও বেশি প্রযুক্তিগত ব্যবহারকারী হন, তাহলে কীভাবে [আপনার নিজের নোড চালু করবেন](/developers/docs/nodes-and-clients/run-a-node/) সে সম্পর্কে আরও বিশদ এবং বিকল্পগুলিতে ডুব দিন।
+আপনি যদি আরও বেশি প্রযুক্তিগত ব্যবহারকারী হন, তবে কীভাবে [আপনার নিজস্ব নোড স্পিন আপ করবেন](/developers/docs/nodes-and-clients/run-a-node/) সে সম্পর্কে আরও বিশদ এবং বিকল্পগুলোতে ডুব দিন।
-## বিকল্প {#alternatives}
+## বিকল্পসমূহ {#alternatives}
-আপনার নিজের নোড সেট আপ করতে আপনার সময় এবং রিসোর্স খরচ হতে পারে তবে আপনাকে সবসময় নিজের ইনস্ট্যান্স চালানোর প্রয়োজন নেই। এই ক্ষেত্রে, আপনি একটি তৃতীয় পক্ষের API প্রদানকারী ব্যবহার করতে পারেন। এই পরিষেবাগুলি ব্যবহার করার একটি সংক্ষিপ্ত বিবরণের জন্য, [পরিষেবা হিসাবে নোডগুলি](/developers/docs/nodes-and-clients/nodes-as-a-service/) দেখুন।
+আপনার নিজস্ব নোড সেট আপ করতে আপনার সময় এবং সংস্থান ব্যয় হতে পারে তবে আপনাকে সর্বদা আপনার নিজস্ব ইনস্ট্যান্স চালানোর প্রয়োজন নেই। এই ক্ষেত্রে, আপনি একটি থার্ড পার্টি API প্রদানকারী ব্যবহার করতে পারেন। এই পরিষেবাগুলো ব্যবহারের একটি ওভারভিউয়ের জন্য, [পরিষেবা হিসেবে নোড](/developers/docs/nodes-and-clients/nodes-as-a-service/) দেখুন।
-যদি কেউ আপনার সম্প্রদায়ে একটি পাবলিক API সহ একটি ইথেরিয়াম নোড চালায়, আপনি কাস্টম RPC এর মাধ্যমে আপনার ওয়ালেটগুলিকে একটি কমিউনিটি নোডে নির্দেশ করতে পারেন এবং কিছু এলোমেলো বিশ্বস্ত তৃতীয় পক্ষের তুলনায় আরও বেশি গোপনীয়তা অর্জন করতে পারেন।
+যদি কেউ আপনার সম্প্রদায়ে একটি পাবলিক API সহ একটি ইথেরিয়াম নোড চালায়, তবে আপনি কাস্টম RPC-এর মাধ্যমে আপনার ওয়ালেটগুলোকে একটি কমিউনিটি নোডে নির্দেশ করতে পারেন এবং কোনো র্যান্ডম বিশ্বস্ত থার্ড পার্টির চেয়ে বেশি গোপনীয়তা অর্জন করতে পারেন।
-অন্যদিকে, আপনি যদি একটি ক্লায়েন্ট চালান, আপনি এটি আপনার বন্ধুদের সাথে শেয়ার করতে পারেন যাদের এটির প্রয়োজন হতে পারে।
+অন্যদিকে, আপনি যদি একটি ক্লায়েন্ট চালান, তবে আপনি এটি আপনার বন্ধুদের সাথে শেয়ার করতে পারেন যাদের এটি প্রয়োজন হতে পারে।
-## এক্সিকিউশন ক্লায়েন্ট {#execution-clients}
+## এক্সিকিউশন ক্লায়েন্ট {#execution-clients}
-ইথেরিয়াম সম্প্রদায় একাধিক ওপেন-সোর্স এক্সিকিউশন ক্লায়েন্ট (পূর্বে 'Eth1 ক্লায়েন্ট', বা শুধু 'ইথেরিয়াম ক্লায়েন্ট' নামে পরিচিত) রক্ষণাবেক্ষণ করে, যা বিভিন্ন দল বিভিন্ন প্রোগ্রামিং ভাষা ব্যবহার করে তৈরি করেছে। এটি নেটওয়ার্ককে আরও শক্তিশালী এবং আরও [বৈচিত্র্যময়](/developers/docs/nodes-and-clients/client-diversity/) করে তোলে। আদর্শ লক্ষ্য হল কোনো একক ব্যর্থতার বিন্দু কমাতে কোনো ক্লায়েন্টের আধিপত্য ছাড়াই বৈচিত্র্য অর্জন করা।
+ইথেরিয়াম সম্প্রদায় একাধিক ওপেন-সোর্স এক্সিকিউশন ক্লায়েন্ট (পূর্বে 'ইথ১ ক্লায়েন্ট' বা শুধু 'ইথেরিয়াম ক্লায়েন্ট' নামে পরিচিত) বজায় রাখে, যা বিভিন্ন প্রোগ্রামিং ভাষা ব্যবহার করে বিভিন্ন দলের দ্বারা তৈরি করা হয়েছে। এটি নেটওয়ার্ককে আরও শক্তিশালী এবং আরও [বৈচিত্র্যময়](/developers/docs/nodes-and-clients/client-diversity/) করে তোলে। আদর্শ লক্ষ্য হলো কোনো সিঙ্গেল পয়েন্ট অফ ফেইলিওর কমানোর জন্য কোনো ক্লায়েন্টের আধিপত্য ছাড়াই বৈচিত্র্য অর্জন করা।
-এই টেবিলটি বিভিন্ন ক্লায়েন্টের সারসংক্ষেপ করে। তারা সবাই [ক্লায়েন্ট পরীক্ষা](https://github.com/ethereum/tests) পাস করে এবং নেটওয়ার্ক আপগ্রেডের সাথে আপডেট থাকার জন্য সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয়।
+এই টেবিলটি বিভিন্ন ক্লায়েন্টের সারসংক্ষেপ দেয়। তাদের সবাই [ক্লায়েন্ট পরীক্ষা](https://github.com/ethereum/tests) পাস করে এবং নেটওয়ার্ক আপগ্রেডের সাথে আপডেট থাকার জন্য সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয়।
-| ক্লায়েন্ট | ভাষা | অপারেটিং সিস্টেম | নেটওয়ার্ক | সিঙ্ক কৌশল | স্টেট ছাঁটাই |
-| ------------------------------------------------------------------------------------------- | ------------------------ | -------------------------- | ------------------------ | ---------------------------------------------------------------------------------- | ------------------- |
-| [Geth](https://geth.ethereum.org/) | যান | লিনাক্স, উইন্ডোজ, ম্যাকওএস | মেইননেট, সেপোলিয়া, হুডি | [স্ন্যাপ](#snap-sync), [ফুল](#full-sync) | আর্কাইভ, ছাঁটাই করা |
-| [Nethermind](https://www.nethermind.io/) | C#, .NET | লিনাক্স, উইন্ডোজ, ম্যাকওএস | মেইননেট, সেপোলিয়া, হুডি | [স্ন্যাপ](#snap-sync) (পরিষেবা ছাড়া), ফাস্ট, [ফুল](#full-sync) | আর্কাইভ, ছাঁটাই করা |
-| [Besu](https://besu.hyperledger.org/en/stable/) | জাভা | লিনাক্স, উইন্ডোজ, ম্যাকওএস | মেইননেট, সেপোলিয়া, হুডি | [স্ন্যাপ](#snap-sync), [ফাস্ট](#fast-sync), [ফুল](#full-sync) | আর্কাইভ, ছাঁটাই করা |
-| [Erigon](https://github.com/ledgerwatch/erigon) | যান | লিনাক্স, উইন্ডোজ, ম্যাকওএস | মেইননেট, সেপোলিয়া, হুডি | [ফুল](#full-sync) | আর্কাইভ, ছাঁটাই করা |
-| [Reth](https://reth.rs/) | রাস্ট | লিনাক্স, উইন্ডোজ, ম্যাকওএস | মেইননেট, সেপোলিয়া, হুডি | [ফুল](#full-sync) | আর্কাইভ, ছাঁটাই করা |
-| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(বিটা)_ | টাইপস্ক্রিপ্ট | লিনাক্স, উইন্ডোজ, ম্যাকওএস | সেপোলিয়া, হুডি | [ফুল](#full-sync) | ছাঁটাই করা |
+| ক্লায়েন্ট | ভাষা | অপারেটিং সিস্টেম | নেটওয়ার্ক | সিঙ্ক স্ট্র্যাটেজি | স্টেট প্রুনিং |
+| ------------------------------------------------------------------------ | ---------- | --------------------- | ------------------------- | -------------------------------------------------------------- | --------------- |
+| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | মেইননেট, Sepolia, Hoodi | [স্ন্যাপ](#snap-sync), [ফুল](#full-sync) | আর্কাইভ, প্রুনড |
+| [Nethermind](https://www.nethermind.io/) | C#, .NET | Linux, Windows, macOS | মেইননেট, Sepolia, Hoodi | [স্ন্যাপ](#snap-sync) (সার্ভিং ছাড়া), ফাস্ট, [ফুল](#full-sync) | আর্কাইভ, প্রুনড |
+| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | মেইননেট, Sepolia, Hoodi | [স্ন্যাপ](#snap-sync), [ফাস্ট](#fast-sync), [ফুল](#full-sync) | আর্কাইভ, প্রুনড |
+| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | মেইননেট, Sepolia, Hoodi | [ফুল](#full-sync) | আর্কাইভ, প্রুনড |
+| [Reth](https://reth.rs/) | Rust | Linux, Windows, macOS | মেইননেট, Sepolia, Hoodi | [ফুল](#full-sync) | আর্কাইভ, প্রুনড |
+| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(বিটা)_ | TypeScript | Linux, Windows, macOS | Sepolia, Hoodi | [ফুল](#full-sync) | প্রুনড |
-সমর্থিত নেটওয়ার্ক সম্পর্কে আরও জানতে, [ইথেরিয়াম নেটওয়ার্ক](/developers/docs/networks/) সম্পর্কে পড়ুন।
+সমর্থিত নেটওয়ার্ক সম্পর্কে আরও জানতে, [ইথেরিয়াম নেটওয়ার্ক](/developers/docs/networks/) পড়ুন।
-প্রতিটি ক্লায়েন্টের নিজস্ব ব্যবহার এবং সুবিধা রয়েছে, তাই আপনার নিজের পছন্দের উপর ভিত্তি করে একটি বেছে নেওয়া উচিত। বৈচিত্র্য বিভিন্ন বৈশিষ্ট্য এবং ব্যবহারকারী দর্শকদের উপর বাস্তবায়ন ফোকাস করার অনুমতি দেয়। আপনি বৈশিষ্ট্য, সমর্থন, প্রোগ্রামিং ভাষা বা লাইসেন্সের উপর ভিত্তি করে একটি ক্লায়েন্ট বেছে নিতে পারেন।
+প্রতিটি ক্লায়েন্টের অনন্য ব্যবহারের ক্ষেত্রে এবং সুবিধা রয়েছে, তাই আপনার নিজের পছন্দের উপর ভিত্তি করে একটি বেছে নেওয়া উচিত। বৈচিত্র্য বাস্তবায়নগুলোকে বিভিন্ন বৈশিষ্ট্য এবং ব্যবহারকারী দর্শকদের উপর দৃষ্টি নিবদ্ধ করার অনুমতি দেয়। আপনি বৈশিষ্ট্য, সমর্থন, প্রোগ্রামিং ভাষা বা লাইসেন্সের উপর ভিত্তি করে একটি ক্লায়েন্ট বেছে নিতে চাইতে পারেন।
### Besu {#besu}
-হাইপারলেজার বেসু পাবলিক এবং অনুমতিপ্রাপ্ত নেটওয়ার্কের জন্য একটি এন্টারপ্রাইজ-গ্রেড ইথেরিয়াম ক্লায়েন্ট। এটি ট্রেসিং থেকে GraphQL পর্যন্ত সমস্ত ইথেরিয়াম মেইননেট বৈশিষ্ট্য চালায়, এর ব্যাপক পর্যবেক্ষণ রয়েছে এবং এটি ConsenSys দ্বারা সমর্থিত, উভয়ই উন্মুক্ত কমিউনিটি চ্যানেলে এবং উদ্যোগগুলির জন্য বাণিজ্যিক SLA-এর মাধ্যমে। এটি জাভাতে লেখা এবং অ্যাপাচি 2.0 লাইসেন্সপ্রাপ্ত।
+হাইপারলেজার বেসু (Hyperledger Besu) হলো পাবলিক এবং পারমিশনড নেটওয়ার্কের জন্য একটি এন্টারপ্রাইজ-গ্রেড ইথেরিয়াম ক্লায়েন্ট। এটি ট্রেসিং থেকে শুরু করে গ্রাফকিউএল (GraphQL) পর্যন্ত ইথেরিয়াম মেইননেটের সমস্ত বৈশিষ্ট্য চালায়, এর ব্যাপক মনিটরিং রয়েছে এবং এটি কনসেনসিস (ConsenSys) দ্বারা সমর্থিত, উভয়ই ওপেন কমিউনিটি চ্যানেলে এবং এন্টারপ্রাইজগুলোর জন্য বাণিজ্যিক SLA-এর মাধ্যমে। এটি জাভাতে লেখা এবং অ্যাপাচি 2.0 লাইসেন্সপ্রাপ্ত।
-বেসুর বিস্তৃত [নথিপত্র](https://besu.hyperledger.org/en/stable/) আপনাকে এর বৈশিষ্ট্য এবং সেটআপের সমস্ত বিবরণ দিয়ে গাইড করবে।
+বেসুর ব্যাপক [ডকুমেন্টেশন](https://besu.hyperledger.org/en/stable/) আপনাকে এর বৈশিষ্ট্য এবং সেটআপের সমস্ত বিবরণের মাধ্যমে গাইড করবে।
### Erigon {#erigon}
-Erigon, যা পূর্বে টার্বো-গেথ নামে পরিচিত ছিল, এটি গো ইথেরিয়ামের একটি ফর্ক হিসাবে শুরু হয়েছিল যা গতি এবং ডিস্ক-স্পেস দক্ষতার দিকে ভিত্তিক। Erigon হল ইথেরিয়ামের একটি সম্পূর্ণ পুনঃস্থাপিত বাস্তবায়ন, যা বর্তমানে Go-তে লেখা কিন্তু অন্যান্য ভাষায় বাস্তবায়ন উন্নয়নাধীন রয়েছে। Erigon-এর লক্ষ্য হল ইথেরিয়ামের একটি দ্রুত, আরও মডুলার এবং আরও অপ্টিমাইজড বাস্তবায়ন প্রদান করা। এটি প্রায় 2TB ডিস্ক স্পেস ব্যবহার করে 3 দিনেরও কম সময়ে একটি সম্পূর্ণ আর্কাইভ নোড সিঙ্ক করতে পারে।
+এরিগন (Erigon), যা পূর্বে টার্বো-গেথ (Turbo-Geth) নামে পরিচিত ছিল, গতি এবং ডিস্ক-স্পেস দক্ষতার দিকে ভিত্তিক গো ইথেরিয়ামের একটি ফর্ক হিসেবে শুরু হয়েছিল। এরিগন হলো ইথেরিয়ামের একটি সম্পূর্ণ পুনঃনির্মিত বাস্তবায়ন, যা বর্তমানে গো-তে লেখা তবে অন্যান্য ভাষায় বাস্তবায়ন বিকাশের অধীনে রয়েছে। এরিগনের লক্ষ্য হলো ইথেরিয়ামের একটি দ্রুত, আরও মডুলার এবং আরও অপ্টিমাইজ করা বাস্তবায়ন প্রদান করা। এটি 3 দিনেরও কম সময়ে প্রায় 2TB ডিস্ক স্পেস ব্যবহার করে একটি সম্পূর্ণ আর্কাইভ নোড সিঙ্ক করতে পারে।
-### গো ইথেরিয়াম {#geth}
+### Go Ethereum {#geth}
-গো ইথেরিয়াম (সংক্ষেপে Geth) হল ইথেরিয়াম প্রোটোকলের মূল বাস্তবায়নগুলির মধ্যে একটি। বর্তমানে, এটি সবচেয়ে বিস্তৃত ক্লায়েন্ট যার সবচেয়ে বড় ব্যবহারকারী বেস এবং ব্যবহারকারী ও ডেভেলপারদের জন্য বিভিন্ন ধরনের টুলিং রয়েছে। এটি Go-তে লেখা, সম্পূর্ণরূপে ওপেন সোর্স এবং GNU LGPL v3-এর অধীনে লাইসেন্সপ্রাপ্ত।
+গো ইথেরিয়াম (সংক্ষেপে Geth) হলো ইথেরিয়াম প্রটোকলের মূল বাস্তবায়নগুলোর মধ্যে একটি। বর্তমানে, এটি ব্যবহারকারী এবং ডেভেলপারদের জন্য সবচেয়ে বড় ব্যবহারকারী বেস এবং বিভিন্ন ধরণের টুলিং সহ সবচেয়ে বিস্তৃত ক্লায়েন্ট। এটি গো-তে লেখা, সম্পূর্ণ ওপেন সোর্স এবং GNU LGPL v3-এর অধীনে লাইসেন্সপ্রাপ্ত।
-Geth সম্পর্কে আরও জানতে এর [নথিপত্র](https://geth.ethereum.org/docs/) দেখুন।
+এর [ডকুমেন্টেশনে](https://geth.ethereum.org/docs) Geth সম্পর্কে আরও জানুন।
### Nethermind {#nethermind}
-Nethermind হল C# .NET টেক স্ট্যাক দিয়ে তৈরি একটি ইথেরিয়াম বাস্তবায়ন, যা LGPL-3.0 দিয়ে লাইসেন্সপ্রাপ্ত এবং ARM সহ সমস্ত প্রধান প্ল্যাটফর্মে চলে। এটি দুর্দান্ত পারফরম্যান্স অফার করে:
+নেদারমাইন্ড (Nethermind) হলো C# .NET টেক স্ট্যাক দিয়ে তৈরি একটি ইথেরিয়াম বাস্তবায়ন, যা LGPL-3.0 এর সাথে লাইসেন্সপ্রাপ্ত, এআরএম (ARM) সহ সমস্ত প্রধান প্ল্যাটফর্মে চলছে। এটি দুর্দান্ত পারফরম্যান্স অফার করে:
-- একটি অপ্টিমাইজড ভার্চুয়াল মেশিন
+- একটি অপ্টিমাইজ করা ভার্চুয়াল মেশিন
- স্টেট অ্যাক্সেস
-- নেটওয়ার্কিং এবং প্রোমিথিউস/গ্রাফানা ড্যাশবোর্ড, seq এন্টারপ্রাইজ লগিং সাপোর্ট, JSON-RPC ট্রেসিং এবং অ্যানালিটিক্স প্লাগইনের মতো সমৃদ্ধ বৈশিষ্ট্য।
+- নেটওয়ার্কিং এবং প্রমিথিউস/গ্রাফানা ড্যাশবোর্ড, সিক এন্টারপ্রাইজ লগিং সাপোর্ট, JSON-RPC ট্রেসিং এবং অ্যানালিটিক্স প্লাগইনগুলোর মতো সমৃদ্ধ বৈশিষ্ট্য।
-Nethermind-এর [বিস্তারিত নথিপত্র](https://docs.nethermind.io), শক্তিশালী ডেভ সাপোর্ট, একটি অনলাইন কমিউনিটি এবং প্রিমিয়াম ব্যবহারকারীদের জন্য 24/7 সাপোর্ট রয়েছে।
+নেদারমাইন্ডের [বিস্তারিত ডকুমেন্টেশন](https://docs.nethermind.io), শক্তিশালী ডেভ সাপোর্ট, একটি অনলাইন কমিউনিটি এবং প্রিমিয়াম ব্যবহারকারীদের জন্য 24/7 সাপোর্ট উপলব্ধ রয়েছে।
### Reth {#reth}
-Reth (রাস্ট ইথেরিয়ামের সংক্ষিপ্ত রূপ) হল একটি ইথেরিয়াম ফুল নোড বাস্তবায়ন যা ব্যবহারকারী-বান্ধব, অত্যন্ত মডুলার, দ্রুত এবং দক্ষ হওয়ার উপর দৃষ্টি নিবদ্ধ করে। Reth মূলত Paradigm দ্বারা নির্মিত এবং চালিত হয়েছিল, এবং এটি অ্যাপাচি এবং এমআইটি লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।
+রেথ (Reth - রাস্ট ইথেরিয়ামের সংক্ষিপ্ত রূপ) হলো একটি ইথেরিয়াম ফুল নোড বাস্তবায়ন যা ব্যবহারকারী-বান্ধব, অত্যন্ত মডুলার, দ্রুত এবং দক্ষ হওয়ার উপর দৃষ্টি নিবদ্ধ করে। রেথ মূলত প্যারাডাইম (Paradigm) দ্বারা নির্মিত এবং চালিত হয়েছিল এবং এটি অ্যাপাচি এবং এমআইটি লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।
-Reth প্রোডাকশন-রেডি, এবং স্টেকিং বা হাই-আপটাইম পরিষেবার মতো মিশন-ক্রিটিক্যাল পরিবেশে ব্যবহারের জন্য উপযুক্ত। RPC, MEV, ইন্ডেক্সিং, সিমুলেশন এবং P2P কার্যকলাপের মতো ক্ষেত্রে যেখানে দুর্দান্ত মার্জিন সহ উচ্চ কার্যকারিতা প্রয়োজন সেখানে ভাল কাজ করে।
+রেথ প্রোডাকশন রেডি, এবং মিশন-ক্রিটিক্যাল পরিবেশে যেমন স্টেকিং বা হাই-আপটাইম পরিষেবাগুলোতে ব্যবহারের জন্য উপযুক্ত। এমন ব্যবহারের ক্ষেত্রে ভালো পারফর্ম করে যেখানে দুর্দান্ত মার্জিন সহ উচ্চ পারফরম্যান্সের প্রয়োজন হয় যেমন RPC, MEV, ইনডেক্সিং, সিমুলেশন এবং P2P ক্রিয়াকলাপ।
-[Reth Book](https://reth.rs/) বা [Reth GitHub repo](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth) দেখে আরও জানুন।
+[রেথ বুক](https://reth.rs/) বা [রেথ গিটহাব রেপো](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth) দেখে আরও জানুন।
-### উন্নয়নাধীন {#execution-in-development}
+### In development {#execution-in-development}
-এই ক্লায়েন্টগুলি এখনও বিকাশের প্রাথমিক পর্যায়ে রয়েছে এবং এখনও প্রোডাকশন ব্যবহারের জন্য সুপারিশ করা হয় না।
+এই ক্লায়েন্টগুলো এখনো বিকাশের প্রাথমিক পর্যায়ে রয়েছে এবং এখনো প্রোডাকশন ব্যবহারের জন্য সুপারিশ করা হয় না।
#### EthereumJS {#ethereumjs}
-EthereumJS এক্সিকিউশন ক্লায়েন্ট (EthereumJS) টাইপস্ক্রিপ্টে লেখা এবং বেশ কয়েকটি প্যাকেজ নিয়ে গঠিত, যার মধ্যে ব্লক, ট্রানজ্যাকশন এবং মার্কল-প্যাট্রিসিয়া ট্রাই ক্লাস দ্বারা প্রতিনিধিত্বকারী মূল ইথেরিয়াম প্রিমিটিভস এবং ইথেরিয়াম ভার্চুয়াল মেশিন (EVM), একটি ব্লকচেইন ক্লাস এবং DevP2P নেটওয়ার্কিং স্ট্যাকের একটি বাস্তবায়ন সহ মূল ক্লায়েন্ট উপাদান অন্তর্ভুক্ত রয়েছে।
+ইথেরিয়ামজেএস এক্সিকিউশন ক্লায়েন্ট (EthereumJS) টাইপস্ক্রিপ্টে লেখা এবং বেশ কয়েকটি প্যাকেজ নিয়ে গঠিত, যার মধ্যে রয়েছে ব্লক, ট্রানজ্যাকশন এবং মার্কেল-প্যাট্রিসিয়া ট্রাই ক্লাস দ্বারা উপস্থাপিত মূল ইথেরিয়াম প্রিমিটিভস এবং ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)-এর বাস্তবায়ন, একটি ব্লকচেইন ক্লাস এবং DevP2P নেটওয়ার্কিং স্ট্যাক সহ মূল ক্লায়েন্ট উপাদান।
-এর [নথিপত্র](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master) পড়ে এটি সম্পর্কে আরও জানুন।
+এর [ডকুমেন্টেশন](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master) পড়ে এটি সম্পর্কে আরও জানুন
## কনসেন্সাস ক্লায়েন্ট {#consensus-clients}
-[কনসেন্সাস আপগ্রেড](/roadmap/beacon-chain/) সমর্থন করার জন্য একাধিক কনসেন্সাস ক্লায়েন্ট (পূর্বে 'Eth2' ক্লায়েন্ট হিসাবে পরিচিত) রয়েছে। তারা ফর্ক-চয়েস অ্যালগরিদম, অ্যাটেস্টেশন প্রক্রিয়াকরণ এবং [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) পুরস্কার এবং জরিমানা পরিচালনা সহ সমস্ত কনসেন্সাস-সম্পর্কিত যুক্তির জন্য দায়ী।
+[কনসেন্সাস আপগ্রেড](/roadmap/beacon-chain/) সমর্থন করার জন্য একাধিক কনসেন্সাস ক্লায়েন্ট (পূর্বে 'ইথ২' ক্লায়েন্ট নামে পরিচিত) রয়েছে। তারা ফর্ক-চয়েস এ্যালগরিদম, এটেস্টেশন প্রসেসিং এবং [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) পুরষ্কার এবং জরিমানা পরিচালনা সহ সমস্ত কনসেন্সাস-সম্পর্কিত লজিকের জন্য দায়ী।
-| ক্লায়েন্ট | ভাষা | অপারেটিং সিস্টেম | নেটওয়ার্ক |
-| ------------------------------------------------------------- | ------------- | -------------------------- | ---------------------------------------------------------------- |
-| [Lighthouse](https://lighthouse.sigmaprime.io/) | রাস্ট | লিনাক্স, উইন্ডোজ, ম্যাকওএস | বিকন চেইন, হুডি, পিয়ারমন্ট, সেপোলিয়া এবং আরও অনেক কিছু |
-| [Lodestar](https://lodestar.chainsafe.io/) | টাইপস্ক্রিপ্ট | লিনাক্স, উইন্ডোজ, ম্যাকওএস | বিকন চেইন, হুডি, সেপোলিয়া এবং আরও অনেক কিছু |
-| [Nimbus](https://nimbus.team/) | নিম | লিনাক্স, উইন্ডোজ, ম্যাকওএস | বিকন চেইন, হুডি, সেপোলিয়া এবং আরও অনেক কিছু |
-| [Prysm](https://prysm.offchainlabs.com/docs/) | যান | লিনাক্স, উইন্ডোজ, ম্যাকওএস | বিকন চেইন, Gnosis, হুডি, পিয়ারমন্ট, সেপোলিয়া এবং আরও অনেক কিছু |
-| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | জাভা | লিনাক্স, উইন্ডোজ, ম্যাকওএস | বিকন চেইন, Gnosis, হুডি, সেপোলিয়া এবং আরও অনেক কিছু |
-| [Grandine](https://docs.grandine.io/) | রাস্ট | লিনাক্স, উইন্ডোজ, ম্যাকওএস | বিকন চেইন, হুডি, সেপোলিয়া এবং আরও অনেক কিছু |
+| ক্লায়েন্ট | ভাষা | অপারেটিং সিস্টেম | নেটওয়ার্ক |
+| ------------------------------------------------------------- | ---------- | --------------------- | --------------------------------------------------------- |
+| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | বিকন চেইন, Hoodi, Pyrmont, Sepolia, এবং আরও অনেক |
+| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | বিকন চেইন, Hoodi, Sepolia, এবং আরও অনেক |
+| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | বিকন চেইন, Hoodi, Sepolia, এবং আরও অনেক |
+| [Prysm](https://prysm.offchainlabs.com/docs/) | Go | Linux, Windows, macOS | বিকন চেইন, Gnosis, Hoodi, Pyrmont, Sepolia, এবং আরও অনেক |
+| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux, Windows, macOS | বিকন চেইন, Gnosis, Hoodi, Sepolia, এবং আরও অনেক |
+| [Grandine](https://docs.grandine.io/) | Rust | Linux, Windows, macOS | বিকন চেইন, Hoodi, Sepolia, এবং আরও অনেক |
### Lighthouse {#lighthouse}
-Lighthouse হল একটি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন যা রাস্টে অ্যাপাচি-২.০ লাইসেন্সের অধীনে লেখা। এটি সিগমা প্রাইম দ্বারা রক্ষণাবেক্ষণ করা হয় এবং বিকন চেইন জেনেসিস থেকে স্থিতিশীল এবং প্রোডাকশন-রেডি। বিভিন্ন এন্টারপ্রাইজ, স্টেকিং পুল এবং ব্যক্তিরা এর উপর নির্ভর করে। ডেস্কটপ পিসি থেকে শুরু করে অত্যাধুনিক স্বয়ংক্রিয় স্থাপনা পর্যন্ত বিস্তৃত পরিবেশে সুরক্ষিত, কার্যক্ষম এবং আন্তঃক্রিয়াশীল হওয়াই এর লক্ষ্য।
+লাইটহাউস (Lighthouse) হলো অ্যাপাচি-2.0 লাইসেন্সের অধীনে রাস্টে লেখা একটি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন। এটি সিগমা প্রাইম (Sigma Prime) দ্বারা রক্ষণাবেক্ষণ করা হয় এবং বিকন চেইন জেনেসিস থেকে স্থিতিশীল এবং প্রোডাকশন-রেডি। এটি বিভিন্ন এন্টারপ্রাইজ, স্টেকিং পুল এবং ব্যক্তিদের দ্বারা নির্ভর করা হয়। এর লক্ষ্য হলো ডেস্কটপ পিসি থেকে শুরু করে অত্যাধুনিক স্বয়ংক্রিয় স্থাপনা পর্যন্ত বিস্তৃত পরিবেশে সুরক্ষিত, পারফরম্যান্ট এবং ইন্টারঅপারেবল হওয়া।
-[Lighthouse Book](https://lighthouse-book.sigmaprime.io/)-এ নথিপত্র পাওয়া যাবে।
+ডকুমেন্টেশন [লাইটহাউস বুকে](https://lighthouse-book.sigmaprime.io/) পাওয়া যাবে
### Lodestar {#lodestar}
-Lodestar হল একটি প্রোডাকশন-রেডি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন যা টাইপস্ক্রিপ্টে এলজিপিএল-৩.০ লাইসেন্সের অধীনে লেখা। এটি ChainSafe সিস্টেম দ্বারা রক্ষণাবেক্ষণ করা হয় এবং এটি একক-স্টেকার, ডেভেলপার এবং গবেষকদের জন্য নতুনতম কনসেন্সাস ক্লায়েন্ট। Lodestar একটি বিকন নোড এবং ভ্যালিডেটর ক্লায়েন্ট নিয়ে গঠিত যা ইথেরিয়াম প্রোটোকলের জাভাস্ক্রিপ্ট বাস্তবায়ন দ্বারা চালিত। Lodestar-এর লক্ষ্য হল লাইট ক্লায়েন্টদের সাথে ইথেরিয়ামের ব্যবহারযোগ্যতা উন্নত করা, ডেভেলপারদের একটি বৃহত্তর গোষ্ঠীর কাছে অ্যাক্সেসযোগ্যতা প্রসারিত করা এবং ইকোসিস্টেমের বৈচিত্র্যে আরও অবদান রাখা।
+লোডস্টার (Lodestar) হলো LGPL-3.0 লাইসেন্সের অধীনে টাইপস্ক্রিপ্টে লেখা একটি প্রোডাকশন-রেডি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন। এটি চেইনসেফ সিস্টেমস (ChainSafe Systems) দ্বারা রক্ষণাবেক্ষণ করা হয় এবং এটি সোলো-স্টেকার, ডেভেলপার এবং গবেষকদের জন্য কনসেন্সাস ক্লায়েন্টগুলোর মধ্যে নতুন। লোডস্টার একটি বিকন নোড এবং ভ্যালিডেটর ক্লায়েন্ট নিয়ে গঠিত যা ইথেরিয়াম প্রটোকলগুলোর জাভাস্ক্রিপ্ট বাস্তবায়ন দ্বারা চালিত। লোডস্টারের লক্ষ্য হলো লাইট ক্লায়েন্টগুলোর সাথে ইথেরিয়ামের ব্যবহারযোগ্যতা উন্নত করা, ডেভেলপারদের একটি বৃহত্তর গোষ্ঠীর কাছে অ্যাক্সেসযোগ্যতা প্রসারিত করা এবং ইকোসিস্টেমের বৈচিত্র্যে আরও অবদান রাখা।
-[Lodestar ওয়েবসাইট](https://lodestar.chainsafe.io/)-এ আরও তথ্য পাওয়া যাবে।
+আরও তথ্য [লোডস্টার ওয়েবসাইটে](https://lodestar.chainsafe.io/) পাওয়া যাবে
### Nimbus {#nimbus}
-Nimbus হল একটি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন যা নিম-এ অ্যাপাচি-২.০ লাইসেন্সের অধীনে লেখা। এটি একটি প্রোডাকশন-রেডি ক্লায়েন্ট যা একক-স্টেকার এবং স্টেকিং পুল দ্বারা ব্যবহৃত হয়। Nimbus রিসোর্স দক্ষতার জন্য ডিজাইন করা হয়েছে, যা স্থিতিশীলতা বা পুরস্কারের কার্যকারিতার সাথে আপস না করে রিসোর্স-সীমাবদ্ধ ডিভাইস এবং এন্টারপ্রাইজ অবকাঠামোতে সহজে চালানো সহজ করে তোলে। একটি হালকা রিসোর্স ফুটপ্রিন্ট মানে নেটওয়ার্ক যখন চাপে থাকে তখন ক্লায়েন্টের নিরাপত্তার একটি বৃহত্তর মার্জিন থাকে।
+নিম্বাস (Nimbus) হলো অ্যাপাচি-2.0 লাইসেন্সের অধীনে নিমে (Nim) লেখা একটি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন। এটি সোলো-স্টেকার এবং স্টেকিং পুল দ্বারা ব্যবহৃত একটি প্রোডাকশন-রেডি ক্লায়েন্ট। নিম্বাস রিসোর্স দক্ষতার জন্য ডিজাইন করা হয়েছে, যা স্থিতিশীলতা বা পুরষ্কার পারফরম্যান্সের সাথে আপস না করে সমান স্বাচ্ছন্দ্যের সাথে রিসোর্স-সীমাবদ্ধ ডিভাইস এবং এন্টারপ্রাইজ পরিকাঠামোতে চালানো সহজ করে তোলে। একটি হালকা রিসোর্স ফুটপ্রিন্ট মানে নেটওয়ার্ক যখন চাপের মধ্যে থাকে তখন ক্লায়েন্টের সুরক্ষার একটি বৃহত্তর মার্জিন থাকে।
-[Nimbus ডক্স](https://nimbus.guide/)-এ আরও জানুন
+[নিম্বাস ডক্সে](https://nimbus.guide/) আরও জানুন
### Prysm {#prysm}
-Prysm হল একটি পূর্ণ-বৈশিষ্ট্যযুক্ত, ওপেন সোর্স কনসেন্সাস ক্লায়েন্ট যা Go-তে GPL-3.0 লাইসেন্সের অধীনে লেখা। এতে একটি ঐচ্ছিক ওয়েবঅ্যাপ UI রয়েছে এবং এটি বাড়িতে স্টেক করা এবং প্রাতিষ্ঠানিক উভয় ব্যবহারকারীর জন্য ব্যবহারকারীর অভিজ্ঞতা, নথিপত্র এবং কনফিগারযোগ্যতাকে অগ্রাধিকার দেয়।
+প্রিজম (Prysm) হলো GPL-3.0 লাইসেন্সের অধীনে গো-তে লেখা একটি পূর্ণ-বৈশিষ্ট্যযুক্ত, ওপেন সোর্স কনসেন্সাস ক্লায়েন্ট। এটিতে একটি ঐচ্ছিক ওয়েবঅ্যাপ UI রয়েছে এবং স্টেক-অ্যাট-হোম এবং প্রাতিষ্ঠানিক ব্যবহারকারী উভয়ের জন্য ব্যবহারকারীর অভিজ্ঞতা, ডকুমেন্টেশন এবং কনফিগারযোগ্যতাকে অগ্রাধিকার দেয়।
-আরও জানতে [Prysm ডক্স](https://prysm.offchainlabs.com/docs/) দেখুন।
+আরও জানতে [প্রিজম ডক্সে](https://prysm.offchainlabs.com/docs/) যান।
### Teku {#teku}
-Teku হল আসল বিকন চেইন জেনেসিস ক্লায়েন্টদের মধ্যে একটি। সাধারণ লক্ষ্যগুলির (নিরাপত্তা, দৃঢ়তা, স্থিতিশীলতা, ব্যবহারযোগ্যতা, কার্যকারিতা) পাশাপাশি, Teku বিশেষভাবে বিভিন্ন কনসেন্সাস ক্লায়েন্ট মানগুলির সাথে সম্পূর্ণভাবে মেনে চলার লক্ষ্য রাখে।
+টেকু (Teku) হলো মূল বিকন চেইন জেনেসিস ক্লায়েন্টগুলোর মধ্যে একটি। সাধারণ লক্ষ্যগুলোর (নিরাপত্তা, দৃঢ়তা, স্থিতিশীলতা, ব্যবহারযোগ্যতা, পারফরম্যান্স) পাশাপাশি, টেকু বিশেষভাবে সমস্ত বিভিন্ন কনসেন্সাস ক্লায়েন্ট মানগুলো সম্পূর্ণরূপে মেনে চলার লক্ষ্য রাখে।
-Teku খুব নমনীয় স্থাপনার বিকল্পগুলি অফার করে। বিকন নোড এবং ভ্যালিডেটর ক্লায়েন্টকে একটি একক প্রক্রিয়া হিসাবে একসাথে চালানো যেতে পারে, যা একক স্টেকারদের জন্য অত্যন্ত সুবিধাজনক, বা অত্যাধুনিক স্টেকিং অপারেশনের জন্য নোডগুলি আলাদাভাবে চালানো যেতে পারে। এছাড়াও, Teku সাইনিং কী নিরাপত্তা এবং স্ল্যাশিং সুরক্ষার জন্য [Web3Signer](https://github.com/ConsenSys/web3signer/) এর সাথে সম্পূর্ণরূপে আন্তঃক্রিয়াশীল।
+টেকু খুব নমনীয় স্থাপনার বিকল্প অফার করে। বিকন নোড এবং ভ্যালিডেটর ক্লায়েন্ট একসাথে একটি একক প্রক্রিয়া হিসেবে চালানো যেতে পারে, যা সোলো স্টেকারদের জন্য অত্যন্ত সুবিধাজনক, বা অত্যাধুনিক স্টেকিং ক্রিয়াকলাপের জন্য নোডগুলো আলাদাভাবে চালানো যেতে পারে। উপরন্তু, টেকু সাইনিং কি নিরাপত্তা এবং স্ল্যাশিং সুরক্ষার জন্য [Web3Signer](https://github.com/ConsenSys/web3signer/)-এর সাথে সম্পূর্ণরূপে ইন্টারঅপারেবল।
-Teku জাভাতে লেখা এবং অ্যাপাচি 2.0 লাইসেন্সপ্রাপ্ত। এটি ConsenSys-এর প্রোটোকল টিম দ্বারা তৈরি করা হয়েছে যা বেসু এবং Web3Signer-এর জন্যও দায়ী। [Teku ডক্স](https://docs.teku.consensys.net/en/latest/)-এ আরও জানুন।
+টেকু জাভাতে লেখা এবং অ্যাপাচি 2.0 লাইসেন্সপ্রাপ্ত। এটি কনসেনসিসের প্রটোকল দল দ্বারা তৈরি করা হয়েছে যা বেসু এবং Web3Signer-এর জন্যও দায়ী। [টেকু ডক্সে](https://docs.teku.consensys.net/en/latest/) আরও জানুন।
### Grandine {#grandine}
-Grandine হল একটি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন, যা রাস্টে GPL-3.0 লাইসেন্সের অধীনে লেখা। এটি গ্র্যান্ডাইন কোর টিম দ্বারা রক্ষণাবেক্ষণ করা হয় এবং এটি দ্রুত, উচ্চ-কার্যক্ষম এবং হালকা। এটি রাস্পবেরি পাই-এর মতো কম-রিসোর্স ডিভাইসে চালিত একক স্টেকার থেকে শুরু করে হাজার হাজার ভ্যালিডেটর চালানো বড় প্রাতিষ্ঠানিক স্টেকার পর্যন্ত বিস্তৃত স্টেকারদের জন্য উপযুক্ত।
+গ্র্যান্ডিন (Grandine) হলো একটি কনসেন্সাস ক্লায়েন্ট বাস্তবায়ন, যা GPL-3.0 লাইসেন্সের অধীনে রাস্টে লেখা। এটি গ্র্যান্ডিন কোর টিম দ্বারা রক্ষণাবেক্ষণ করা হয় এবং এটি দ্রুত, উচ্চ-পারফরম্যান্স এবং লাইটওয়েট। এটি রাস্পবেরি পাই-এর মতো কম-রিসোর্স ডিভাইসে চলা সোলো স্টেকার থেকে শুরু করে হাজার হাজার ভ্যালিডেটরস চালানো বড় প্রাতিষ্ঠানিক স্টেকার পর্যন্ত বিস্তৃত স্টেকারদের জন্য উপযুক্ত।
-[Grandine Book](https://docs.grandine.io/)-এ নথিপত্র পাওয়া যাবে।
+ডকুমেন্টেশন [গ্র্যান্ডিন বুকে](https://docs.grandine.io/) পাওয়া যাবে
## সিঙ্ক্রোনাইজেশন মোড {#sync-modes}
-নেটওয়ার্কের বর্তমান ডেটা অনুসরণ এবং যাচাই করতে, ইথেরিয়াম ক্লায়েন্টকে সর্বশেষ নেটওয়ার্ক স্টেটের সাথে সিঙ্ক করতে হবে। এটি পিয়ারদের থেকে ডেটা ডাউনলোড করে, ক্রিপ্টোগ্রাফিকভাবে তাদের অখণ্ডতা যাচাই করে এবং একটি স্থানীয় ব্লকচেইন ডেটাবেস তৈরি করে করা হয়।
+নেটওয়ার্কে বর্তমান ডেটা অনুসরণ এবং যাচাই করতে, ইথেরিয়াম ক্লায়েন্টকে সর্বশেষ নেটওয়ার্ক স্টেটের সাথে সিঙ্ক করতে হবে। এটি পিয়ারদের থেকে ডেটা ডাউনলোড করে, ক্রিপ্টোগ্রাফিকভাবে তাদের অখণ্ডতা যাচাই করে এবং একটি স্থানীয় ব্লকচেইন ডাটাবেস তৈরি করে করা হয়।
-সিঙ্ক্রোনাইজেশন মোডগুলি বিভিন্ন ট্রেড-অফ সহ এই প্রক্রিয়ার বিভিন্ন পদ্ধতির প্রতিনিধিত্ব করে। ক্লায়েন্টরা তাদের সিঙ্ক অ্যালগরিদম বাস্তবায়নেও ভিন্ন হয়। বাস্তবায়নের নির্দিষ্ট বিবরণের জন্য সর্বদা আপনার নির্বাচিত ক্লায়েন্টের অফিসিয়াল নথিপত্র দেখুন।
+সিঙ্ক্রোনাইজেশন মোডগুলো বিভিন্ন ট্রেড-অফ সহ এই প্রক্রিয়ার বিভিন্ন পদ্ধতির প্রতিনিধিত্ব করে। ক্লায়েন্টরাও তাদের সিঙ্ক এ্যালগরিদম বাস্তবায়নে ভিন্ন হয়। বাস্তবায়নের সুনির্দিষ্ট তথ্যের জন্য সর্বদা আপনার নির্বাচিত ক্লায়েন্টের অফিসিয়াল ডকুমেন্টেশন দেখুন।
-### এক্সিকিউশন লেয়ার সিঙ্ক মোড {#execution-layer-sync-modes}
+### এক্সিকিউশন লেয়ার সিঙ্ক মোড {#execution-layer-sync-modes}
-এক্সিকিউশন লেয়ারটি বিভিন্ন ব্যবহারের ক্ষেত্রে উপযুক্ত করার জন্য বিভিন্ন মোডে চালানো যেতে পারে, ব্লকচেইনের ওয়ার্ল্ড স্টেট পুনরায় কার্যকর করা থেকে শুরু করে একটি বিশ্বস্ত চেকপয়েন্ট থেকে চেইনের ডগা দিয়ে সিঙ্ক করা পর্যন্ত।
+এক্সিকিউশন লেয়ার বিভিন্ন ব্যবহারের ক্ষেত্রে মানানসই করার জন্য বিভিন্ন মোডে চালানো যেতে পারে, ব্লকচেইনের ওয়ার্ল্ড স্টেট পুনরায় এক্সিকিউট করা থেকে শুরু করে একটি বিশ্বস্ত চেকপয়েন্ট থেকে চেইনের টিপের সাথে সিঙ্ক করা পর্যন্ত।
#### ফুল সিঙ্ক {#full-sync}
-একটি ফুল সিঙ্ক সমস্ত ব্লক (হেডার এবং ব্লক বডি সহ) ডাউনলোড করে এবং জেনেসিস থেকে প্রতিটি ব্লক কার্যকর করে ক্রমবর্ধমানভাবে ব্লকচেইনের স্টেট পুনরায় তৈরি করে।
+একটি ফুল সিঙ্ক সমস্ত ব্লকস (হেডার এবং ব্লক বডি সহ) ডাউনলোড করে এবং জেনেসিস থেকে প্রতিটি ব্লক এক্সিকিউট করে ক্রমবর্ধমানভাবে ব্লকচেইনের স্টেট পুনরায় তৈরি করে।
-- প্রতিটি লেনদেন যাচাই করে বিশ্বাস কমায় এবং সর্বোচ্চ নিরাপত্তা প্রদান করে।
-- ক্রমবর্ধমান লেনদেনের সংখ্যার সাথে, সমস্ত লেনদেন প্রক্রিয়া করতে দিন থেকে সপ্তাহ সময় লাগতে পারে।
+- বিশ্বাস কমিয়ে দেয় এবং প্রতিটি লেনদেন যাচাই করে সর্বোচ্চ নিরাপত্তা প্রদান করে।
+- লেনদেনের সংখ্যা বৃদ্ধির সাথে সাথে, সমস্ত লেনদেন প্রক্রিয়া করতে কয়েক দিন থেকে কয়েক সপ্তাহ সময় লাগতে পারে।
-[আর্কাইভ নোড](#archive-node) প্রতিটি ব্লকের প্রতিটি লেনদেনের দ্বারা করা স্টেট পরিবর্তনের একটি সম্পূর্ণ ইতিহাস তৈরি করতে (এবং ধরে রাখতে) একটি ফুল সিঙ্ক সম্পাদন করে।
+[আর্কাইভ নোডগুলো](#archive-node) প্রতিটি ব্লকে প্রতিটি লেনদেনের দ্বারা করা স্টেট পরিবর্তনের একটি সম্পূর্ণ ইতিহাস তৈরি (এবং ধরে রাখতে) একটি ফুল সিঙ্ক সম্পাদন করে।
#### ফাস্ট সিঙ্ক {#fast-sync}
-একটি ফুল সিঙ্কের মতো, একটি ফাস্ট সিঙ্ক সমস্ত ব্লক (হেডার, লেনদেন এবং রসিদ সহ) ডাউনলোড করে। যাইহোক, ঐতিহাসিক লেনদেনগুলি পুনরায় প্রক্রিয়া করার পরিবর্তে, একটি ফাস্ট সিঙ্ক রসিদগুলির উপর নির্ভর করে যতক্ষণ না এটি একটি সাম্প্রতিক হেডে পৌঁছায়, যখন এটি একটি ফুল নোড সরবরাহ করার জন্য ব্লক আমদানি এবং প্রক্রিয়াকরণে স্যুইচ করে।
+একটি ফুল সিঙ্কের মতো, একটি ফাস্ট সিঙ্ক সমস্ত ব্লকস (হেডার, লেনদেন এবং রসিদ সহ) ডাউনলোড করে। তবে, ঐতিহাসিক লেনদেনগুলো পুনরায় প্রক্রিয়া করার পরিবর্তে, একটি ফাস্ট সিঙ্ক রসিদগুলোর উপর নির্ভর করে যতক্ষণ না এটি একটি সাম্প্রতিক হেডে পৌঁছায়, যখন এটি একটি ফুল নোড প্রদান করতে ব্লকস আমদানি এবং প্রক্রিয়া করতে স্যুইচ করে।
-- ফাস্ট সিঙ্ক কৌশল।
+- ফাস্ট সিঙ্ক স্ট্র্যাটেজি।
- ব্যান্ডউইথ ব্যবহারের পক্ষে প্রক্রিয়াকরণের চাহিদা হ্রাস করে।
#### স্ন্যাপ সিঙ্ক {#snap-sync}
-স্ন্যাপ সিঙ্কগুলিও চেইনকে ব্লক-বাই-ব্লক যাচাই করে। যাইহোক, জেনেসিস ব্লক থেকে শুরু করার পরিবর্তে, একটি স্ন্যাপ সিঙ্ক একটি সাম্প্রতিক 'বিশ্বস্ত' চেকপয়েন্ট থেকে শুরু হয় যা সত্যিকারের ব্লকচেইনের অংশ হিসাবে পরিচিত। নোড একটি নির্দিষ্ট বয়সের চেয়ে পুরানো ডেটা মুছে ফেলার সময় পর্যায়ক্রমিক চেকপয়েন্টগুলি সংরক্ষণ করে। এই স্ন্যাপশটগুলি চিরতরে সঞ্চয় করার পরিবর্তে প্রয়োজন অনুসারে স্টেট ডেটা পুনরায় তৈরি করতে ব্যবহৃত হয়।
+স্ন্যাপ সিঙ্কগুলোও চেইন ব্লক-বাই-ব্লক যাচাই করে। তবে, জেনেসিস ব্লকে শুরু করার পরিবর্তে, একটি স্ন্যাপ সিঙ্ক আরও সাম্প্রতিক 'বিশ্বস্ত' চেকপয়েন্টে শুরু হয় যা সত্য ব্লকচেইনের অংশ হিসেবে পরিচিত। নোড পর্যায়ক্রমিক চেকপয়েন্টগুলো সংরক্ষণ করে একটি নির্দিষ্ট বয়সের চেয়ে পুরানো ডেটা মুছে ফেলার সময়। এই স্ন্যাপশটগুলো চিরতরে সংরক্ষণ করার পরিবর্তে প্রয়োজন অনুযায়ী স্টেট ডেটা পুনরায় তৈরি করতে ব্যবহৃত হয়।
-- দ্রুততম সিঙ্ক কৌশল, বর্তমানে ইথেরিয়াম মেইননেটে ডিফল্ট।
-- নিরাপত্তার সাথে আপস না করে প্রচুর ডিস্ক ব্যবহার এবং নেটওয়ার্ক ব্যান্ডউইথ সাশ্রয় করে।
+- দ্রুততম সিঙ্ক স্ট্র্যাটেজি, বর্তমানে ইথেরিয়াম মেইননেটে ডিফল্ট।
+- নিরাপত্তা বিসর্জন না দিয়ে প্রচুর ডিস্ক ব্যবহার এবং নেটওয়ার্ক ব্যান্ডউইথ বাঁচায়।
-[স্ন্যাপ সিঙ্ক সম্পর্কে আরও](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)।
+[স্ন্যাপ সিঙ্ক সম্পর্কে আরও জানুন](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)।
#### লাইট সিঙ্ক {#light-sync}
-লাইট ক্লায়েন্ট মোড সমস্ত ব্লক হেডার, ব্লক ডেটা ডাউনলোড করে এবং এলোমেলোভাবে কিছু যাচাই করে। শুধুমাত্র বিশ্বস্ত চেকপয়েন্ট থেকে চেইনের ডগা সিঙ্ক করে।
+লাইট ক্লায়েন্ট মোড সমস্ত ব্লক হেডার, ব্লক ডেটা ডাউনলোড করে এবং কিছু এলোমেলোভাবে যাচাই করে। শুধুমাত্র বিশ্বস্ত চেকপয়েন্ট থেকে চেইনের টিপ সিঙ্ক করে।
-- ডেভেলপার এবং কনসেন্সাস মেকানিজমের উপর আস্থা রেখে শুধুমাত্র সর্বশেষ স্টেট পায়।
-- ক্লায়েন্ট কয়েক মিনিটের মধ্যে বর্তমান নেটওয়ার্ক স্টেটের সাথে ব্যবহারের জন্য প্রস্তুত।
+- ডেভেলপার এবং কনসেন্সাস মেকানিজমের উপর বিশ্বাসের উপর নির্ভর করে শুধুমাত্র সর্বশেষ স্টেট পায়।
+- কয়েক মিনিটের মধ্যে বর্তমান নেটওয়ার্ক স্টেটের সাথে ব্যবহার করার জন্য ক্লায়েন্ট প্রস্তুত।
-**NB** লাইট সিঙ্ক এখনও প্রুফ-অফ-স্টেক ইথেরিয়ামের সাথে কাজ করে না - লাইট সিঙ্কের নতুন সংস্করণ শীঘ্রই পাঠানো উচিত!
+**দ্রষ্টব্য** লাইট সিঙ্ক এখনো প্রুফ-অফ-স্টেক ইথেরিয়ামের সাথে কাজ করে না - লাইট সিঙ্কের নতুন সংস্করণগুলো শীঘ্রই আসা উচিত!
-[লাইট ক্লায়েন্ট সম্পর্কে আরও](/developers/docs/nodes-and-clients/light-clients/)
+[লাইট ক্লায়েন্ট সম্পর্কে আরও জানুন](/developers/docs/nodes-and-clients/light-clients/)
-### কনসেন্সাস লেয়ার সিঙ্ক মোড {#consensus-layer-sync-modes}
+### কনসেন্সাস লেয়ার সিঙ্ক মোড {#consensus-layer-sync-modes}
#### অপ্টিমিস্টিক সিঙ্ক {#optimistic-sync}
-অপ্টিমিস্টিক সিঙ্ক হল একটি পোস্ট-মার্জ সিঙ্ক্রোনাইজেশন কৌশল যা অপ্ট-ইন এবং ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছে, যা এক্সিকিউশন নোডগুলিকে প্রতিষ্ঠিত পদ্ধতির মাধ্যমে সিঙ্ক করতে দেয়। এক্সিকিউশন ইঞ্জিন সম্পূর্ণরূপে যাচাই না করে _আশাবাদীভাবে_ বিকন ব্লক আমদানি করতে পারে, সর্বশেষ হেড খুঁজে পেতে পারে, এবং তারপর উপরের পদ্ধতিগুলির সাথে চেইন সিঙ্ক করা শুরু করতে পারে। তারপর, এক্সিকিউশন ক্লায়েন্ট ধরা পড়ার পরে, এটি কনসেন্সাস ক্লায়েন্টকে বিকন চেইনের লেনদেনের বৈধতা সম্পর্কে অবহিত করবে।
+অপ্টিমিস্টিক সিঙ্ক হলো একটি পোস্ট-মার্জ সিঙ্ক্রোনাইজেশন স্ট্র্যাটেজি যা অপ্ট-ইন এবং ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছে, যা এক্সিকিউশন নোডগুলোকে প্রতিষ্ঠিত পদ্ধতির মাধ্যমে সিঙ্ক করার অনুমতি দেয়। এক্সিকিউশন ইঞ্জিন _অপ্টিমিস্টিকভাবে_ বিকন ব্লকগুলো সম্পূর্ণরূপে যাচাই না করেই আমদানি করতে পারে, সর্বশেষ হেড খুঁজে পেতে পারে এবং তারপরে উপরের পদ্ধতিগুলোর সাথে চেইন সিঙ্ক করা শুরু করতে পারে। তারপরে, এক্সিকিউশন ক্লায়েন্ট ধরে ফেলার পরে, এটি বিকন চেইনে লেনদেনের বৈধতা সম্পর্কে কনসেন্সাস ক্লায়েন্টকে অবহিত করবে।
-[অপ্টিমিস্টিক সিঙ্ক সম্পর্কে আরও](https://github.com/ethereum/consensus-specs/blob/master/sync/optimistic.md)
+[অপ্টিমিস্টিক সিঙ্ক সম্পর্কে আরও জানুন](https://github.com/ethereum/consensus-specs/blob/master/sync/optimistic.md)
#### চেকপয়েন্ট সিঙ্ক {#checkpoint-sync}
-একটি চেকপয়েন্ট সিঙ্ক, যা দুর্বল সাবজেক্টিভিটি সিঙ্ক নামেও পরিচিত, একটি বিকন নোড সিঙ্ক করার জন্য একটি উচ্চতর ব্যবহারকারীর অভিজ্ঞতা তৈরি করে। এটি [দুর্বল সাবজেক্টিভিটি](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/) অনুমানের উপর ভিত্তি করে যা জেনেসিসের পরিবর্তে একটি সাম্প্রতিক দুর্বল সাবজেক্টিভিটি চেকপয়েন্ট থেকে বিকন চেইন সিঙ্ক করতে সক্ষম করে। চেকপয়েন্ট সিঙ্কগুলি [জেনেসিস](/glossary/#genesis-block) থেকে সিঙ্ক করার মতো একই বিশ্বাস অনুমানের সাথে প্রাথমিক সিঙ্কের সময়কে উল্লেখযোগ্যভাবে দ্রুত করে তোলে।
+একটি চেকপয়েন্ট সিঙ্ক, যা উইক সাবজেক্টিভিটি সিঙ্ক নামেও পরিচিত, একটি বিকন নোড সিঙ্ক করার জন্য একটি উচ্চতর ব্যবহারকারীর অভিজ্ঞতা তৈরি করে। এটি [উইক সাবজেক্টিভিটি](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/)-এর অনুমানের উপর ভিত্তি করে যা জেনেসিসের পরিবর্তে সাম্প্রতিক উইক সাবজেক্টিভিটি চেকপয়েন্ট থেকে বিকন চেইন সিঙ্ক করতে সক্ষম করে। চেকপয়েন্ট সিঙ্কগুলো [জেনেসিস](/glossary/#genesis-block) থেকে সিঙ্ক করার মতো অনুরূপ বিশ্বাসের অনুমানের সাথে প্রাথমিক সিঙ্ক সময়কে উল্লেখযোগ্যভাবে দ্রুত করে তোলে।
-বাস্তবে, এর মানে হল আপনার নোড সাম্প্রতিক চূড়ান্ত স্টেট ডাউনলোড করতে একটি দূরবর্তী পরিষেবার সাথে সংযোগ করে এবং সেই বিন্দু থেকে ডেটা যাচাই করা চালিয়ে যায়। ডেটা সরবরাহকারী তৃতীয় পক্ষ বিশ্বস্ত এবং সাবধানে বাছাই করা উচিত।
+অনুশীলনে, এর মানে হলো আপনার নোড সাম্প্রতিক চূড়ান্ত স্টেটগুলো ডাউনলোড করতে একটি দূরবর্তী পরিষেবার সাথে সংযোগ করে এবং সেই বিন্দু থেকে ডেটা যাচাই করা চালিয়ে যায়। ডেটা প্রদানকারী থার্ড পার্টি বিশ্বস্ত এবং সাবধানে বাছাই করা উচিত।
-[চেকপয়েন্ট সিঙ্ক](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice) সম্পর্কে আরও
+[চেকপয়েন্ট সিঙ্ক](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice) সম্পর্কে আরও জানুন
## আরও পড়ুন {#further-reading}
-- [ইথেরিয়াম 101 - পার্ট 2 - নোড বোঝা](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– উইল বার্নস, 13 ফেব্রুয়ারী 2019_
-- [ইথেরিয়াম ফুল নোড চালানো: সামান্য অনুপ্রাণিতদের জন্য একটি নির্দেশিকা](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– জাস্টিন লেরক্স, 7 নভেম্বর 2019_
+- [ইথেরিয়াম 101 - পার্ট 2 - নোড বোঝা](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– উইল বার্নস, 13 ফেব্রুয়ারি 2019_
+- [ইথেরিয়াম ফুল নোড চালানো: খুব কম অনুপ্রাণিতদের জন্য একটি গাইড](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– জাস্টিন লেরক্স, 7 নভেম্বর 2019_
## সম্পর্কিত বিষয় {#related-topics}
-- [ব্লক](/developers/docs/blocks/)
+- [ব্লকস](/developers/docs/blocks/)
- [নেটওয়ার্ক](/developers/docs/networks/)
## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [শুধু মাইক্রোএসডি কার্ড ফ্ল্যাশ করে আপনার রাস্পবেরি পাই 4 কে একটি ভ্যালিডেটর নোডে পরিণত করুন – ইনস্টলেশন গাইড](/developers/tutorials/run-node-raspberry-pi/) _– আপনার রাস্পবেরি পাই 4 ফ্ল্যাশ করুন, একটি ইথারনেট কেবল প্লাগ ইন করুন, এসএসডি ডিস্ক সংযোগ করুন এবং রাস্পবেরি পাই 4 কে একটি সম্পূর্ণ ইথেরিয়াম নোডে পরিণত করতে ডিভাইসটি চালু করুন যা এক্সিকিউশন লেয়ার (মেইননেট) এবং / অথবা কনসেন্সাস লেয়ার (বিকন চেইন / ভ্যালিডেটর) চালায়।_
+- [শুধুমাত্র মাইক্রোএসডি কার্ড ফ্ল্যাশ করে আপনার রাস্পবেরি পাই 4-কে একটি ভ্যালিডেটর নোডে পরিণত করুন – ইনস্টলেশন গাইড](/developers/tutorials/run-node-raspberry-pi/) _– আপনার রাস্পবেরি পাই 4 ফ্ল্যাশ করুন, একটি ইথারনেট কেবল প্লাগ ইন করুন, এসএসডি ডিস্ক সংযুক্ত করুন এবং রাস্পবেরি পাই 4-কে এক্সিকিউশন লেয়ার (মেইননেট) এবং / অথবা কনসেন্সাস লেয়ার (বিকন চেইন / ভ্যালিডেটর) চালানো একটি সম্পূর্ণ ইথেরিয়াম নোডে পরিণত করতে ডিভাইসটি চালু করুন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/light-clients/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/light-clients/index.md
index f08840cdaf3..6038ff5c9ea 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/light-clients/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/light-clients/index.md
@@ -1,61 +1,61 @@
---
-title: "লাইট ক্লায়েন্ট"
-description: "ইথেরিয়াম লাইট ক্লায়েন্টের ভূমিকা।"
+title: লাইট ক্লায়েন্ট
+description: ইথিরিয়াম লাইট ক্লায়েন্টের পরিচিতি।
lang: bn
---
-একটি সম্পূর্ণ নোড চালানো হলো ইথেরিয়ামের সাথে ইন্টারঅ্যাক্ট করার সবচেয়ে বিশ্বাসহীন, ব্যক্তিগত, বিকেন্দ্রীভূত এবং সেন্সরশিপ প্রতিরোধী উপায়। একটি সম্পূর্ণ নোডের মাধ্যমে আপনি ব্লকচেইনের নিজস্ব একটি কপি রাখেন যা আপনি তাৎক্ষণিকভাবে জিজ্ঞাসা করতে পারেন এবং আপনি ইথেরিয়ামের পিয়ার-টু-পিয়ার নেটওয়ার্কে সরাসরি অ্যাক্সেস পান। যাইহোক, একটি সম্পূর্ণ নোড চালানোর জন্য উল্লেখযোগ্য পরিমাণে মেমরি, স্টোরেজ এবং সিপিইউ প্রয়োজন। এর মানে হল প্রত্যেকের পক্ষে তাদের নিজস্ব নোড চালানো সম্ভব নয়। ইথেরিয়াম রোডম্যাপে এর বেশ কয়েকটি সমাধান রয়েছে, যার মধ্যে স্টেটলেসনেস অন্তর্ভুক্ত, কিন্তু সেগুলো বাস্তবায়ন হতে এখনও বেশ কয়েক বছর বাকি। স্বল্পমেয়াদী সমাধান হলো একটি সম্পূর্ণ নোড চালানোর কিছু সুবিধার সাথে আপস করা, যাতে বড় আকারের পারফরম্যান্স উন্নতি হয় এবং নোডগুলিকে খুব কম হার্ডওয়্যার প্রয়োজনীয়তা দিয়ে চালানো যায়। যে নোডগুলি এই আপস করে, সেগুলি লাইট নোড হিসাবে পরিচিত।
+একটি ফুল নোড চালানো হলো [Ethereum](/)-এর সাথে ইন্টারঅ্যাক্ট করার সবচেয়ে ট্রাস্টলেস, ব্যক্তিগত, ডিসেন্ট্রালাইজড এবং সেন্সরশিপ প্রতিরোধী উপায়। একটি ফুল নোডের মাধ্যমে আপনি ব্লকচেইন-এর নিজস্ব কপি রাখতে পারেন, যা আপনি তাৎক্ষণিকভাবে কোয়েরি করতে পারেন এবং ইথিরিয়ামের পিয়ার-টু-পিয়ার নেটওয়ার্কে সরাসরি অ্যাক্সেস পান। তবে, একটি ফুল নোড চালানোর জন্য প্রচুর পরিমাণে মেমরি, স্টোরেজ এবং CPU প্রয়োজন হয়। এর মানে হলো সবার পক্ষে নিজেদের নোড চালানো সম্ভব নয়। ইথিরিয়াম রোডম্যাপ-এ এর বেশ কয়েকটি সমাধান রয়েছে, যার মধ্যে স্টেটলেসনেস অন্তর্ভুক্ত, তবে এগুলো বাস্তবায়িত হতে আরও কয়েক বছর সময় লাগবে। স্বল্পমেয়াদী সমাধান হলো ফুল নোড চালানোর কিছু সুবিধা ত্যাগ করে পারফরম্যান্সের বড় ধরনের উন্নতি করা, যা খুব কম হার্ডওয়্যার রিকোয়ারমেন্টের সাথে নোড চালানোর সুযোগ দেয়। যে নোডগুলো এই আপস করে, সেগুলোকে লাইট নোড বলা হয়।
-## একটি লাইট ক্লায়েন্ট কি {#what-is-a-light-client}
+## লাইট ক্লায়েন্ট কী {#what-is-a-light-client}
-একটি লাইট নোড হলো একটি নোড যা লাইট ক্লায়েন্ট সফ্টওয়্যার চালায়। ব্লকচেইন ডেটার স্থানীয় কপি রাখা এবং স্বাধীনভাবে সমস্ত পরিবর্তন যাচাই করার পরিবর্তে, তারা কোনো সরবরাহকারীর কাছ থেকে প্রয়োজনীয় ডেটা অনুরোধ করে। সরবরাহকারী একটি সম্পূর্ণ নোডের সাথে সরাসরি সংযোগ বা কোনো কেন্দ্রীভূত RPC সার্ভারের মাধ্যমে হতে পারে। ডেটাটি তখন লাইট নোড দ্বারা যাচাই করা হয়, যা এটিকে চেইনের হেডের সাথে তাল মিলিয়ে চলতে দেয়। লাইট নোড শুধুমাত্র ব্লক হেডার প্রসেস করে, মাঝে মাঝে প্রকৃত ব্লকের বিষয়বস্তু ডাউনলোড করে। নোডগুলি তাদের লাইটনেসের দিক থেকে ভিন্ন হতে পারে, যা তারা যে লাইট এবং সম্পূর্ণ ক্লায়েন্ট সফ্টওয়্যারের সংমিশ্রণ চালায় তার উপর নির্ভর করে। উদাহরণস্বরূপ, সবচেয়ে হালকা কনফিগারেশন হবে একটি লাইট এক্সিকিউশন ক্লায়েন্ট এবং একটি লাইট কনসেন্সাস ক্লায়েন্ট চালানো। এটাও সম্ভবত যে অনেক নোড সম্পূর্ণ এক্সিকিউশন ক্লায়েন্টের সাথে লাইট কনসেন্সাস ক্লায়েন্ট চালাবে, অথবা এর বিপরীতও হতে পারে।
+লাইট নোড হলো এমন একটি নোড যা লাইট ক্লায়েন্ট সফটওয়্যার চালায়। ব্লকচেইন ডেটার লোকাল কপি রাখা এবং স্বাধীনভাবে সমস্ত পরিবর্তন যাচাই করার পরিবর্তে, তারা কোনো প্রোভাইডারের কাছ থেকে প্রয়োজনীয় ডেটার অনুরোধ করে। প্রোভাইডারটি কোনো ফুল নোডের সাথে সরাসরি সংযুক্ত হতে পারে অথবা কোনো সেন্ট্রালাইজড RPC সার্ভারের মাধ্যমে হতে পারে। এরপর ডেটাটি লাইট নোড দ্বারা যাচাই করা হয়, যা এটিকে চেইনের হেডের সাথে তাল মিলিয়ে চলতে সাহায্য করে। লাইট নোড শুধুমাত্র ব্লক হেডার প্রসেস করে, এবং মাঝে মাঝে আসল ব্লক কন্টেন্ট ডাউনলোড করে। নোডগুলো কতটা হালকা হবে তা নির্ভর করে তারা কোন ধরনের লাইট এবং ফুল ক্লায়েন্ট সফটওয়্যারের সংমিশ্রণ চালাচ্ছে তার ওপর। উদাহরণস্বরূপ, সবচেয়ে হালকা কনফিগারেশন হবে একটি লাইট এক্সিকিউশন ক্লায়েন্ট এবং একটি লাইট কনসেন্সাস ক্লায়েন্ট চালানো। এটাও সম্ভব যে অনেক নোড ফুল এক্সিকিউশন ক্লায়েন্ট-এর সাথে লাইট কনসেন্সাস ক্লায়েন্ট চালানো বেছে নেবে, অথবা এর বিপরীতটাও হতে পারে।
-## লাইট ক্লায়েন্ট কিভাবে কাজ করে? {#how-do-light-clients-work}
+## লাইট ক্লায়েন্ট কীভাবে কাজ করে? {#how-do-light-clients-work}
-যখন ইথেরিয়াম একটি প্রুফ-অফ-স্টেক ভিত্তিক কনসেন্সাস মেকানিজম ব্যবহার করা শুরু করে, তখন বিশেষভাবে লাইট ক্লায়েন্টদের সমর্থন করার জন্য নতুন পরিকাঠামো চালু করা হয়েছিল। এটি কাজ করার পদ্ধতি হলো প্রতি 1.1 দিনে এলোমেলোভাবে 512 জন ভ্যালিডেটরের একটি উপসেট নির্বাচন করা যারা একটি **সিঙ্ক কমিটি** হিসেবে কাজ করবে। সিঙ্ক কমিটি সাম্প্রতিক ব্লকগুলির হেডারে স্বাক্ষর করে। প্রতিটি ব্লক হেডারে সিঙ্ক কমিটির ভ্যালিডেটরদের একত্রিত স্বাক্ষর এবং একটি "বিটফিল্ড" থাকে যা দেখায় কোন ভ্যালিডেটররা স্বাক্ষর করেছে এবং কোনটি করেনি। প্রতিটি হেডারে পরবর্তী ব্লকে স্বাক্ষর করার জন্য প্রত্যাশিত ভ্যালিডেটরদের একটি তালিকাও অন্তর্ভুক্ত থাকে। এর মানে হল একটি লাইট ক্লায়েন্ট দ্রুত দেখতে পারে যে সিঙ্ক কমিটি তাদের প্রাপ্ত ডেটাতে স্বাক্ষর করেছে, এবং তারা এটিও পরীক্ষা করতে পারে যে সিঙ্ক কমিটি আসল কি না, আগের ব্লকে যা আশা করতে বলা হয়েছিল তার সাথে প্রাপ্ত কমিটির তুলনা করে। এইভাবে, লাইট ক্লায়েন্টটি আসলে ব্লকটি ডাউনলোড না করেই সর্বশেষ ইথেরিয়াম ব্লক সম্পর্কে তার জ্ঞান আপডেট রাখতে পারে, শুধুমাত্র হেডারটি ডাউনলোড করে যা সংক্ষিপ্ত তথ্য ধারণ করে।
+যখন ইথিরিয়াম প্রুফ-অফ-স্টেক ভিত্তিক কনসেন্সাস মেকানিজম ব্যবহার করা শুরু করে, তখন বিশেষভাবে লাইট ক্লায়েন্ট-কে সাপোর্ট করার জন্য নতুন ইনফ্রাস্ট্রাকচার চালু করা হয়। এটি যেভাবে কাজ করে তা হলো, প্রতি 1.1 দিনে 512 জন ভ্যালিডেটরস-এর একটি সাবসেটকে দৈবচয়নে নির্বাচন করা হয়, যারা একটি **সিঙ্ক কমিটি (sync committee)** হিসেবে কাজ করে। সিঙ্ক কমিটি সাম্প্রতিক ব্লকস-এর হেডারে স্বাক্ষর করে। প্রতিটি ব্লক হেডারে সিঙ্ক কমিটির ভ্যালিডেটরস-এর একত্রিত স্বাক্ষর এবং একটি "বিটফিল্ড" থাকে, যা দেখায় কোন ভ্যালিডেটরস স্বাক্ষর করেছে এবং কারা করেনি। প্রতিটি হেডারে পরবর্তী ব্লক স্বাক্ষরে অংশগ্রহণ করতে পারে এমন ভ্যালিডেটরস-এর একটি তালিকাও অন্তর্ভুক্ত থাকে। এর মানে হলো একটি লাইট ক্লায়েন্ট দ্রুত দেখতে পারে যে সিঙ্ক কমিটি তাদের প্রাপ্ত ডেটায় স্বাক্ষর করেছে কিনা, এবং তারা পূর্ববর্তী ব্লকে যে সিঙ্ক কমিটির আশা করেছিল তার সাথে প্রাপ্ত সিঙ্ক কমিটির তুলনা করে যাচাই করতে পারে যে এটি আসল কিনা। এইভাবে, লাইট ক্লায়েন্ট আসল ব্লকটি ডাউনলোড না করেই, শুধুমাত্র হেডার (যাতে সারসংক্ষেপ তথ্য থাকে) ব্যবহার করে সর্বশেষ ইথিরিয়াম ব্লক সম্পর্কে তার জ্ঞান আপডেট রাখতে পারে।
-এক্সিকিউশন লেয়ারে একটি লাইট এক্সিকিউশন ক্লায়েন্টের জন্য কোনো একক স্পেসিফিকেশন নেই। একটি লাইট এক্সিকিউশন ক্লায়েন্টের পরিধি একটি সম্পূর্ণ এক্সিকিউশন ক্লায়েন্টের "লাইট মোড" থেকে ভিন্ন হতে পারে, যার একটি সম্পূর্ণ নোডের সমস্ত EVM এবং নেটওয়ার্কিং কার্যকারিতা রয়েছে কিন্তু শুধুমাত্র ব্লক হেডার যাচাই করে, সংশ্লিষ্ট ডেটা ডাউনলোড না করে, অথবা এটি আরও একটি ছোট ক্লায়েন্ট হতে পারে যা ইথেরিয়ামের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি RPC প্রদানকারীর কাছে অনুরোধ ফরোয়ার্ড করার উপর ব্যাপকভাবে নির্ভর করে।
+এক্সিকিউশন লেয়ার-এ লাইট এক্সিকিউশন ক্লায়েন্ট-এর জন্য কোনো একক স্পেসিফিকেশন নেই। একটি লাইট এক্সিকিউশন ক্লায়েন্ট-এর পরিধি একটি ফুল এক্সিকিউশন ক্লায়েন্ট-এর "লাইট মোড" থেকে শুরু করে (যার একটি ফুল নোড-এর সমস্ত EVM এবং নেটওয়ার্কিং কার্যকারিতা রয়েছে কিন্তু সংশ্লিষ্ট ডেটা ডাউনলোড না করে শুধুমাত্র ব্লক হেডার যাচাই করে) এমন একটি সংক্ষিপ্ত ক্লায়েন্ট পর্যন্ত হতে পারে, যা ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করার জন্য RPC প্রোভাইডারের কাছে রিকোয়েস্ট ফরোয়ার্ড করার ওপর ব্যাপকভাবে নির্ভর করে।
-## লাইট ক্লায়েন্ট কেন গুরুত্বপূর্ণ? {#why-are-light-clients-important}
+## লাইট ক্লায়েন্ট কেন গুরুত্বপূর্ণ? {#why-are-light-clients-important}
-লাইট ক্লায়েন্টগুলি গুরুত্বপূর্ণ কারণ তারা ব্যবহারকারীদের ইনকামিং ডেটা যাচাই করার অনুমতি দেয়, তাদের ডেটা প্রদানকারী সঠিক এবং সৎ বলে অন্ধভাবে বিশ্বাস করার পরিবর্তে, যখন একটি সম্পূর্ণ নোডের কম্পিউটেশনাল রিসোর্সের একটি ক্ষুদ্র অংশ ব্যবহার করে। লাইট ক্লায়েন্টরা যে ডেটা পায় তা ব্লক হেডারের সাথে মিলিয়ে পরীক্ষা করা যেতে পারে, যা তারা জানে যে 512 জন ইথেরিয়াম ভ্যালিডেটরের একটি র্যান্ডম সেটের অন্তত 2/3 দ্বারা স্বাক্ষরিত হয়েছে। এটি একটি খুব শক্তিশালী প্রমাণ যে ডেটা সঠিক।
+লাইট ক্লায়েন্ট গুরুত্বপূর্ণ কারণ এগুলো ব্যবহারকারীদের তাদের ডেটা প্রোভাইডার সঠিক এবং সৎ কিনা তা অন্ধভাবে বিশ্বাস করার পরিবর্তে ইনকামিং ডেটা যাচাই করার সুযোগ দেয়, যেখানে একটি ফুল নোড-এর কম্পিউটেশনাল রিসোর্সের খুব সামান্য অংশ ব্যবহৃত হয়। লাইট ক্লায়েন্ট যে ডেটা গ্রহণ করে তা ব্লক হেডারগুলোর বিপরীতে যাচাই করা যেতে পারে, যা তারা জানে যে 512 জন ইথিরিয়াম ভ্যালিডেটরস-এর একটি র্যান্ডম সেটের অন্তত 2/3 অংশ দ্বারা স্বাক্ষরিত হয়েছে। এটি ডেটা সঠিক হওয়ার একটি অত্যন্ত শক্তিশালী প্রমাণ।
-লাইট ক্লায়েন্ট শুধুমাত্র অল্প পরিমাণে কম্পিউটিং শক্তি, মেমরি এবং স্টোরেজ ব্যবহার করে, তাই এটি একটি মোবাইল ফোনে চালানো যেতে পারে, একটি অ্যাপে এমবেড করা যেতে পারে বা একটি ব্রাউজারের অংশ হিসাবে ব্যবহার করা যেতে পারে। লাইট ক্লায়েন্ট হল ইথেরিয়ামে ট্রাস্ট-মিনিমাইজড অ্যাক্সেসকে ঠিক ততটাই ঘর্ষণহীন করার একটি উপায় যতটা একটি তৃতীয় পক্ষের প্রদানকারীকে বিশ্বাস করা।
+লাইট ক্লায়েন্ট শুধুমাত্র সামান্য পরিমাণ কম্পিউটিং পাওয়ার, মেমরি এবং স্টোরেজ ব্যবহার করে, তাই এটি মোবাইল ফোনে চালানো যেতে পারে, কোনো অ্যাপে এম্বেড করা যেতে পারে বা ব্রাউজারের অংশ হিসেবে ব্যবহার করা যেতে পারে। লাইট ক্লায়েন্ট হলো ইথিরিয়ামে ট্রাস্ট-মিনিমাইজড অ্যাক্সেসকে থার্ড-পার্টি প্রোভাইডারকে বিশ্বাস করার মতোই বাধাহীন করার একটি উপায়।
-আসুন একটি সহজ উদাহরণ নেওয়া যাক। ভাবুন আপনি আপনার অ্যাকাউন্টের ব্যালেন্স চেক করতে চান। এটি করার জন্য আপনাকে একটি ইথেরিয়াম নোডে একটি অনুরোধ করতে হবে। সেই নোডটি আপনার ব্যালেন্সের জন্য ইথেরিয়াম স্টেটের স্থানীয় কপি পরীক্ষা করবে এবং আপনাকে তা ফিরিয়ে দেবে। আপনার যদি একটি নোডে সরাসরি অ্যাক্সেস না থাকে, তবে এমন কেন্দ্রীভূত অপারেটর রয়েছে যারা এই ডেটা একটি পরিষেবা হিসাবে সরবরাহ করে। আপনি তাদের কাছে একটি অনুরোধ পাঠাতে পারেন, তারা তাদের নোড পরীক্ষা করে এবং ফলাফলটি আপনাকে ফিরিয়ে পাঠায়। এর সমস্যা হলো আপনাকে তখন প্রদানকারীকে বিশ্বাস করতে হবে যে তারা আপনাকে সঠিক তথ্য দিচ্ছে। আপনি যদি নিজের জন্য এটি যাচাই করতে না পারেন তবে আপনি কখনই সত্যিই জানতে পারবেন না যে তথ্যটি সঠিক।
+চলুন একটি সহজ উদাহরণ দেওয়া যাক। ধরুন আপনি আপনার একাউন্ট ব্যালেন্স চেক করতে চান। এটি করার জন্য আপনাকে একটি ইথিরিয়াম নোড-এ রিকোয়েস্ট পাঠাতে হবে। সেই নোডটি আপনার ব্যালেন্সের জন্য ইথিরিয়াম স্টেট-এর লোকাল কপি চেক করবে এবং আপনাকে তা ফেরত পাঠাবে। যদি আপনার কোনো নোড-এ সরাসরি অ্যাক্সেস না থাকে, তবে সেন্ট্রালাইজড অপারেটর রয়েছে যারা এই ডেটা একটি সার্ভিস হিসেবে প্রদান করে। আপনি তাদের কাছে রিকোয়েস্ট পাঠাতে পারেন, তারা তাদের নোড চেক করে এবং ফলাফল আপনাকে ফেরত পাঠায়। এর সমস্যা হলো আপনাকে তখন বিশ্বাস করতে হবে যে প্রোভাইডার আপনাকে সঠিক তথ্য দিচ্ছে। আপনি যদি নিজে যাচাই করতে না পারেন, তবে আপনি কখনোই নিশ্চিতভাবে জানতে পারবেন না যে তথ্যটি সঠিক কিনা।
-একটি লাইট ক্লায়েন্ট এই সমস্যার সমাধান করে। আপনি এখনও কিছু বাহ্যিক প্রদানকারীর কাছ থেকে ডেটা অনুরোধ করেন, কিন্তু যখন আপনি ডেটা ফিরে পান তখন এটি একটি প্রুফের সাথে আসে যা আপনার লাইট নোড ব্লক হেডারে প্রাপ্ত তথ্যের সাথে পরীক্ষা করতে পারে। এর মানে হল ইথেরিয়াম কোনো বিশ্বস্ত অপারেটরের পরিবর্তে আপনার ডেটার সঠিকতা যাচাই করছে।
+একটি লাইট ক্লায়েন্ট এই সমস্যার সমাধান করে। আপনি এখনও কোনো এক্সটার্নাল প্রোভাইডারের কাছে ডেটার জন্য রিকোয়েস্ট করেন, কিন্তু যখন আপনি ডেটা ফেরত পান, তখন এটি একটি প্রমাণের সাথে আসে যা আপনার লাইট নোড ব্লক হেডারে প্রাপ্ত তথ্যের বিপরীতে যাচাই করতে পারে। এর মানে হলো কোনো বিশ্বস্ত অপারেটরের পরিবর্তে ইথিরিয়াম আপনার ডেটার সঠিকতা যাচাই করছে।
-## লাইট ক্লায়েন্টরা কী কী উদ্ভাবনকে সক্ষম করে? {#what-innovations-do-light-clients-enable}
+## লাইট ক্লায়েন্ট কী কী উদ্ভাবন সক্ষম করে? {#what-innovations-do-light-clients-enable}
-লাইট ক্লায়েন্টদের প্রাথমিক সুবিধা হলো আরও বেশি লোককে নগণ্য হার্ডওয়্যার প্রয়োজনীয়তা এবং তৃতীয় পক্ষের উপর ন্যূনতম নির্ভরতার সাথে স্বাধীনভাবে ইথেরিয়াম অ্যাক্সেস করতে সক্ষম করা। এটি ব্যবহারকারীদের জন্য ভাল কারণ তারা তাদের নিজস্ব ডেটা যাচাই করতে পারে এবং এটি নেটওয়ার্কের জন্য ভাল কারণ এটি চেইন যাচাইকারী নোডের সংখ্যা এবং বৈচিত্র্য বাড়ায়।
+লাইট ক্লায়েন্টের প্রাথমিক সুবিধা হলো এটি আরও বেশি মানুষকে নগণ্য হার্ডওয়্যার রিকোয়ারমেন্ট এবং থার্ড-পার্টির ওপর ন্যূনতম নির্ভরতার সাথে স্বাধীনভাবে ইথিরিয়ামে অ্যাক্সেস করতে সক্ষম করে। এটি ব্যবহারকারীদের জন্য ভালো কারণ তারা তাদের নিজস্ব ডেটা যাচাই করতে পারে এবং এটি নেটওয়ার্ক-এর জন্যও ভালো কারণ এটি চেইন যাচাইকারী নোড-এর সংখ্যা এবং বৈচিত্র্য বৃদ্ধি করে।
-খুব ছোট স্টোরেজ, মেমরি এবং প্রসেসিং পাওয়ার সহ ডিভাইসগুলিতে ইথেরিয়াম নোড চালানোর ক্ষমতা লাইট ক্লায়েন্টদের দ্বারা আনলক করা উদ্ভাবনের অন্যতম প্রধান ক্ষেত্র। যেখানে আজ ইথেরিয়াম নোডগুলির জন্য প্রচুর কম্পিউটিং রিসোর্স প্রয়োজন, সেখানে লাইট ক্লায়েন্টগুলি ব্রাউজারে এম্বেড করা যেতে পারে, মোবাইল ফোনে চালানো যেতে পারে এবং সম্ভবত স্মার্টওয়াচের মতো ছোট ডিভাইসগুলিতেও চালানো যেতে পারে। এর মানে হল এমবেডেড ক্লায়েন্ট সহ ইথেরিয়াম ওয়ালেটগুলি একটি মোবাইল ফোনে চলতে পারে। এর মানে হল মোবাইল ওয়ালেটগুলি অনেক বেশি বিকেন্দ্রীভূত হতে পারে কারণ তাদের ডেটার জন্য কেন্দ্রীভূত ডেটা প্রদানকারীদের বিশ্বাস করতে হবে না।
+খুব কম স্টোরেজ, মেমরি এবং প্রসেসিং পাওয়ার সম্পন্ন ডিভাইসে ইথিরিয়াম নোড চালানোর ক্ষমতা হলো লাইট ক্লায়েন্ট দ্বারা উন্মোচিত উদ্ভাবনের অন্যতম প্রধান ক্ষেত্র। যেখানে বর্তমানে ইথিরিয়াম নোড-এর জন্য প্রচুর কম্পিউটিং রিসোর্সের প্রয়োজন হয়, সেখানে লাইট ক্লায়েন্ট ব্রাউজারে এম্বেড করা যেতে পারে, মোবাইল ফোনে চালানো যেতে পারে এবং হয়তো স্মার্ট ওয়াচের মতো আরও ছোট ডিভাইসেও চালানো যেতে পারে। এর মানে হলো এম্বেডেড ক্লায়েন্টসহ ইথিরিয়াম ওয়ালেট মোবাইল ফোনে চলতে পারে। এর মানে হলো মোবাইল ওয়ালেটগুলো আরও বেশি ডিসেন্ট্রালাইজড হতে পারে কারণ তাদের ডেটার জন্য সেন্ট্রালাইজড ডেটা প্রোভাইডারদের বিশ্বাস করতে হবে না।
-এর একটি সম্প্রসারণ হলো **ইন্টারনেট অফ থিংস (IoT)** ডিভাইসগুলিকে সক্ষম করা। একটি লাইট ক্লায়েন্ট কিছু টোকেন ব্যালেন্স বা NFT-এর মালিকানা দ্রুত প্রমাণ করতে ব্যবহার করা যেতে পারে, সিঙ্ক কমিটি দ্বারা প্রদত্ত সমস্ত নিরাপত্তা গ্যারান্টি সহ, যা একটি IoT নেটওয়ার্কে কিছু পদক্ষেপ ট্রিগার করে। ভাবুন একটি [বাইসাইকেল ভাড়ার পরিষেবা](https://youtu.be/ZHNrAXf3RDE?t=929) যা একটি এমবেডেড লাইট ক্লায়েন্ট সহ একটি অ্যাপ ব্যবহার করে দ্রুত যাচাই করে যে আপনি ভাড়া পরিষেবার NFT-এর মালিক এবং যদি তাই হয়, তবে আপনার জন্য একটি বাইসাইকেল আনলক করে দেয়!
+এর একটি সম্প্রসারণ হলো **ইন্টারনেট অফ থিংস (IoT)** ডিভাইসগুলোকে সক্ষম করা। সিঙ্ক কমিটি দ্বারা প্রদত্ত সমস্ত নিরাপত্তা গ্যারান্টিসহ কোনো টোকেন ব্যালেন্স বা NFT-এর মালিকানা দ্রুত প্রমাণ করতে একটি লাইট ক্লায়েন্ট ব্যবহার করা যেতে পারে, যা কোনো IoT নেটওয়ার্ক-এ কোনো অ্যাকশন ট্রিগার করতে পারে। কল্পনা করুন একটি [সাইকেল ভাড়ার সার্ভিস](https://youtu.be/ZHNrAXf3RDE?t=929) যা একটি এম্বেডেড লাইট ক্লায়েন্টসহ একটি অ্যাপ ব্যবহার করে দ্রুত যাচাই করে যে আপনার কাছে রেন্টাল সার্ভিসের NFT আছে কিনা এবং যদি থাকে, তবে আপনার চালানোর জন্য একটি সাইকেল আনলক করে দেয়!
-ইথেরিয়াম রোলআপগুলিও লাইট ক্লায়েন্ট থেকে উপকৃত হবে। রোলআপগুলির জন্য একটি বড় সমস্যা হলো ব্রিজগুলিকে লক্ষ্য করে হ্যাক করা, যা ইথেরিয়াম মেইননেট থেকে একটি রোলআপে ফান্ড স্থানান্তর করার অনুমতি দেয়। একটি দুর্বলতা হলো ওরাকল যা রোলআপগুলি ব্যবহার করে এটি সনাক্ত করতে যে কোনো ব্যবহারকারী ব্রিজে একটি ডিপোজিট করেছে। যদি একটি ওরাকল খারাপ ডেটা ফিড করে, তবে তারা রোলআপকে ভাবতে বাধ্য করতে পারে যে ব্রিজে একটি ডিপোজিট হয়েছে এবং ভুলভাবে ফান্ড প্রকাশ করতে পারে। রোলআপে এমবেড করা একটি লাইট ক্লায়েন্ট করাপ্টেড ওরাকলদের বিরুদ্ধে সুরক্ষা দিতে ব্যবহার করা যেতে পারে কারণ ব্রিজে করা ডিপোজিটটি একটি প্রুফ সহ আসতে পারে যা কোনো টোকেন রিলিজ করার আগে রোলআপ দ্বারা যাচাই করা যেতে পারে। একই ধারণা অন্যান্য ইন্টারচেইন ব্রিজেও প্রয়োগ করা যেতে পারে।
+ইথিরিয়াম রেলআপস-ও লাইট ক্লায়েন্ট থেকে উপকৃত হবে। রেলআপস-এর জন্য একটি বড় সমস্যা হলো সেই ব্রিজ-গুলোকে টার্গেট করে হ্যাক করা, যা ইথিরিয়াম মেইননেট থেকে একটি রোলআপ-এ ফান্ড ট্রান্সফার করার অনুমতি দেয়। একটি দুর্বলতা হলো সেই ওরাকল-গুলো যা রেলআপস ব্যবহার করে শনাক্ত করতে যে কোনো ব্যবহারকারী ব্রিজ-এ ডিপোজিট করেছে কিনা। যদি কোনো ওরাকল ভুল ডেটা প্রদান করে, তবে তারা রোলআপ-কে ধোঁকা দিয়ে ভাবতে বাধ্য করতে পারে যে ব্রিজ-এ একটি ডিপোজিট হয়েছে এবং ভুলভাবে ফান্ড রিলিজ করতে পারে। রোলআপ-এ এম্বেড করা একটি লাইট ক্লায়েন্ট করাপ্টেড ওরাকল-এর বিরুদ্ধে সুরক্ষা দিতে ব্যবহার করা যেতে পারে, কারণ ব্রিজ-এ ডিপোজিট একটি প্রমাণের সাথে আসতে পারে যা কোনো টোকেন রিলিজ করার আগে রোলআপ দ্বারা যাচাই করা যেতে পারে। একই ধারণা অন্যান্য ইন্টারচেইন ব্রিজ-এর ক্ষেত্রেও প্রয়োগ করা যেতে পারে।
-লাইট ক্লায়েন্টগুলি ইথেরিয়াম ওয়ালেট আপগ্রেড করতেও ব্যবহার করা যেতে পারে। একটি RPC প্রদানকারীর দেওয়া ডেটার উপর বিশ্বাস করার পরিবর্তে, আপনার ওয়ালেট একটি এমবেডেড লাইট ক্লায়েন্ট ব্যবহার করে আপনাকে উপস্থাপিত ডেটা সরাসরি যাচাই করতে পারে। এটি আপনার ওয়ালেটে নিরাপত্তা যোগ করবে। যদি আপনার RPC প্রদানকারী অসৎ হয় এবং আপনাকে ভুল ডেটা সরবরাহ করে, এমবেডেড লাইট ক্লায়েন্ট আপনাকে তা বলে দিতে পারে!
+ইথিরিয়াম ওয়ালেট আপগ্রেড করতেও লাইট ক্লায়েন্ট ব্যবহার করা যেতে পারে। কোনো RPC প্রোভাইডারের দেওয়া ডেটা বিশ্বাস করার পরিবর্তে, আপনার ওয়ালেট একটি এম্বেডেড লাইট ক্লায়েন্ট ব্যবহার করে আপনাকে দেখানো ডেটা সরাসরি যাচাই করতে পারে। এটি আপনার ওয়ালেটে নিরাপত্তা যোগ করবে। যদি আপনার RPC প্রোভাইডার অসৎ হয় এবং আপনাকে ভুল ডেটা প্রদান করে, তবে এম্বেডেড লাইট ক্লায়েন্ট আপনাকে তা জানিয়ে দিতে পারবে!
-## লাইট ক্লায়েন্ট ডেভেলপমেন্টের বর্তমান অবস্থা কী? {#current-state-of-development}
+## লাইট ক্লায়েন্ট ডেভেলপমেন্টের বর্তমান অবস্থা কী? {#current-state-of-development}
-এক্সিকিউশন, কনসেন্সাস এবং সম্মিলিত এক্সিকিউশন/কনসেন্সাস লাইট ক্লায়েন্ট সহ বেশ কয়েকটি লাইট ক্লায়েন্ট ডেভেলপমেন্টের অধীনে রয়েছে। এই পৃষ্ঠাটি লেখার সময় আমরা যে লাইট ক্লায়েন্ট ইমপ্লিমেন্টেশনগুলি সম্পর্কে জানি সেগুলি হলো:
+বর্তমানে বেশ কয়েকটি লাইট ক্লায়েন্ট ডেভেলপমেন্টের পর্যায়ে রয়েছে, যার মধ্যে এক্সিকিউশন, কনসেন্সাস এবং সম্মিলিত এক্সিকিউশন/কনসেন্সাস লাইট ক্লায়েন্ট অন্তর্ভুক্ত। এই পেজটি লেখার সময় আমরা যে লাইট ক্লায়েন্ট ইমপ্লিমেন্টেশনগুলোর কথা জানি সেগুলো হলো:
-- [Lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client): TypeScript-এ কনসেন্সাস লাইট ক্লায়েন্ট
-- [Helios](https://github.com/a16z/helios): Rust-এ সম্মিলিত এক্সিকিউশন এবং কনসেন্সাস লাইট ক্লায়েন্ট
-- [Geth](https://github.com/ethereum/go-ethereum/tree/master/beacon/light): Go-তে এক্সিকিউশন ক্লায়েন্টের জন্য লাইট মোড (ডেভেলপমেন্ট চলছে)
-- [Nimbus](https://nimbus.guide/el-light-client.html): Nim-এ কনসেন্সাস লাইট ক্লায়েন্ট
+- [Lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client): টাইপস্ক্রিপ্টে (TypeScript) তৈরি কনসেন্সাস লাইট ক্লায়েন্ট
+- [Helios](https://github.com/a16z/helios): রাস্টে (Rust) তৈরি সম্মিলিত এক্সিকিউশন এবং কনসেন্সাস লাইট ক্লায়েন্ট
+- [Geth](https://github.com/ethereum/go-ethereum/tree/master/beacon/light): গো-তে (Go) তৈরি এক্সিকিউশন ক্লায়েন্ট-এর জন্য লাইট মোড (ডেভেলপমেন্ট চলছে)
+- [Nimbus](https://nimbus.guide/el-light-client.html): নিমে (Nim) তৈরি কনসেন্সাস লাইট ক্লায়েন্ট
-আমাদের জানামতে, এগুলির কোনোটিই এখনও প্রোডাকশন-রেডি বলে বিবেচিত নয়।
+আমাদের জানামতে এগুলোর কোনোটিই এখনও প্রোডাকশন-রেডি হিসেবে বিবেচিত হয়নি।
-লাইট ক্লায়েন্টরা যেভাবে ইথেরিয়াম ডেটা অ্যাক্সেস করতে পারে তা উন্নত করার জন্য অনেক কাজ করা হচ্ছে। বর্তমানে, লাইট ক্লায়েন্টরা একটি ক্লায়েন্ট/সার্ভার মডেল ব্যবহার করে সম্পূর্ণ নোডগুলিতে RPC অনুরোধের উপর নির্ভর করে, কিন্তু ভবিষ্যতে ডেটা আরও বিকেন্দ্রীভূত উপায়ে অনুরোধ করা যেতে পারে, যেমন [পোর্টাল নেটওয়ার্ক](https://www.ethportal.net/) এর মতো একটি ডেডিকেটেড নেটওয়ার্ক ব্যবহার করে, যা পিয়ার-টু-পিয়ার গসিপ প্রোটোকল ব্যবহার করে লাইট ক্লায়েন্টদের ডেটা পরিবেশন করতে পারে।
+লাইট ক্লায়েন্টগুলো কীভাবে ইথিরিয়াম ডেটা অ্যাক্সেস করতে পারে তার উপায়গুলো উন্নত করার জন্যও অনেক কাজ করা হচ্ছে। বর্তমানে, লাইট ক্লায়েন্টগুলো ক্লায়েন্ট/সার্ভার মডেল ব্যবহার করে ফুল নোড-এ RPC রিকোয়েস্টের ওপর নির্ভর করে, তবে ভবিষ্যতে [Portal Network](https://www.ethportal.net/)-এর মতো একটি ডেডিকেটেড নেটওয়ার্ক ব্যবহার করে আরও ডিসেন্ট্রালাইজড উপায়ে ডেটার রিকোয়েস্ট করা যেতে পারে, যা পিয়ার-টু-পিয়ার গসিপ প্রটোকল ব্যবহার করে লাইট ক্লায়েন্টগুলোকে ডেটা সরবরাহ করতে পারে।
-অন্যান্য [রোডম্যাপ](/roadmap/) আইটেম যেমন [Verkle trees](/roadmap/verkle-trees/) এবং [statelessness](/roadmap/statelessness/) অবশেষে লাইট ক্লায়েন্টদের নিরাপত্তা গ্যারান্টিকে সম্পূর্ণ ক্লায়েন্টদের সমান করে তুলবে।
+অন্যান্য [রোডম্যাপ](/roadmap/) আইটেম যেমন [Verkle trees](/roadmap/verkle-trees/) এবং [statelessness](/roadmap/statelessness/) শেষ পর্যন্ত লাইট ক্লায়েন্টের নিরাপত্তা গ্যারান্টিকে ফুল ক্লায়েন্টের সমান করে তুলবে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [Geth লাইট ক্লায়েন্টদের উপর জোল্ট ফেলফোডি](https://www.youtube.com/watch?v=EPZeFXau-RE)
-- [লাইট ক্লায়েন্ট নেটওয়ার্কিং-এর উপর ইথান কিসলিং](https://www.youtube.com/watch?v=85MeiMA4dD8)
-- [দ্য মার্জের পরে লাইট ক্লায়েন্টদের উপর ইথান কিসলিং](https://www.youtube.com/watch?v=ZHNrAXf3RDE)
-- [পাইপার মেরিয়াম: কার্যকরী লাইট ক্লায়েন্টের দিকে সর্পিল পথ](https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/)
+- [Geth লাইট ক্লায়েন্ট সম্পর্কে Zsolt Felfodhi](https://www.youtube.com/watch?v=EPZeFXau-RE)
+- [লাইট ক্লায়েন্ট নেটওয়ার্কিং সম্পর্কে Etan Kissling](https://www.youtube.com/watch?v=85MeiMA4dD8)
+- [দ্য মার্জ-এর পর লাইট ক্লায়েন্ট সম্পর্কে Etan Kissling](https://www.youtube.com/watch?v=ZHNrAXf3RDE)
+- [Piper Merriam: ফাংশনাল লাইট ক্লায়েন্টের আঁকাবাঁকা পথ](https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/node-architecture/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/node-architecture/index.md
index 79542f7bc9f..2b34b3b82aa 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/node-architecture/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/node-architecture/index.md
@@ -1,59 +1,59 @@
---
-title: "নোড আর্কিটেকচার"
-description: "ইথেরিয়াম নোডগুলি কীভাবে সংগঠিত হয় তার একটি ভূমিকা।"
+title: নোড আর্কিটেকচার
+description: ইথিরিয়াম নোডগুলো কীভাবে সংগঠিত হয় তার পরিচিতি।
lang: bn
---
-একটি ইথেরিয়াম নোড দুটি ক্লায়েন্ট নিয়ে গঠিত: একটি [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং একটি [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients)। একটি নতুন ব্লক প্রস্তাব করতে হলে, একটি নোডকে অবশ্যই একটি [ভ্যালিডেটর ক্লায়েন্ট](#validators)ও চালাতে হবে।
+একটি ইথিরিয়াম নোড দুটি ক্লায়েন্ট নিয়ে গঠিত: একটি [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং একটি [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients)। একটি নোডকে নতুন ব্লক প্রস্তাব করার জন্য, এটিকে অবশ্যই একটি [ভ্যালিডেটর](#validators) ক্লায়েন্ট চালাতে হবে।
-যখন ইথেরিয়াম [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/) ব্যবহার করত, তখন একটি সম্পূর্ণ ইথেরিয়াম নোড চালানোর জন্য একটি এক্সিকিউশন ক্লায়েন্টই যথেষ্ট ছিল। যাইহোক, [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pow/) প্রয়োগ করার পর থেকে, এক্সিকিউশন ক্লায়েন্টটিকে অবশ্যই [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) নামক আরেকটি সফ্টওয়্যারের সাথে একত্রে ব্যবহার করতে হবে।
+যখন ইথিরিয়াম [প্রুফ-অফ-ওয়ার্ক](/developers/docs/consensus-mechanisms/pow/) ব্যবহার করত, তখন একটি সম্পূর্ণ ইথিরিয়াম নোড চালানোর জন্য একটি এক্সিকিউশন ক্লায়েন্টই যথেষ্ট ছিল। তবে, [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) বাস্তবায়নের পর থেকে, এক্সিকিউশন ক্লায়েন্টকে অবশ্যই [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) নামক আরেকটি সফটওয়্যারের সাথে ব্যবহার করতে হবে।
-নীচের ডায়াগ্রামটি দুটি ইথেরিয়াম ক্লায়েন্টের মধ্যে সম্পর্ক দেখায়। দুটি ক্লায়েন্ট তাদের নিজ নিজ পিয়ার-টু-পিয়ার (P2P) নেটওয়ার্কের সাথে সংযুক্ত হয়। আলাদা P2P নেটওয়ার্কের প্রয়োজন হয়, কারণ এক্সিকিউশন ক্লায়েন্টরা তাদের P2P নেটওয়ার্কের মাধ্যমে লেনদেন গসিপ করে, যা তাদের স্থানীয় লেনদেন পুল পরিচালনা করতে সক্ষম করে, অন্যদিকে কনসেন্সাস ক্লায়েন্টরা তাদের P2P নেটওয়ার্কের মাধ্যমে ব্লক গসিপ করে, যা কনসেন্সাস এবং চেইন বৃদ্ধি সক্ষম করে।
+নিচের চিত্রটি দুটি ইথিরিয়াম ক্লায়েন্টের মধ্যে সম্পর্ক দেখায়। দুটি ক্লায়েন্ট তাদের নিজস্ব পিয়ার-টু-পিয়ার (P2P) নেটওয়ার্কের সাথে সংযুক্ত থাকে। আলাদা P2P নেটওয়ার্কের প্রয়োজন হয় কারণ এক্সিকিউশন ক্লায়েন্টগুলো তাদের P2P নেটওয়ার্কে লেনদেন গসিপ করে, যা তাদের লোকাল ট্রানজেকশন পুল পরিচালনা করতে সক্ষম করে, অন্যদিকে কনসেন্সাস ক্লায়েন্টগুলো তাদের P2P নেটওয়ার্কে ব্লকস গসিপ করে, যা কনসেন্সাস এবং চেইন বৃদ্ধিতে সক্ষম করে।
-
+
-_এক্সিকিউশন ক্লায়েন্টের জন্য Erigon, Nethermind, এবং Besu সহ বেশ কয়েকটি বিকল্প রয়েছে।_
+_এক্সিকিউশন ক্লায়েন্টের জন্য Erigon, Nethermind এবং Besu সহ বেশ কয়েকটি বিকল্প রয়েছে_।
-এই দুই-ক্লায়েন্ট কাঠামোটি কাজ করার জন্য, কনসেন্সাস ক্লায়েন্টদের অবশ্যই এক্সিকিউশন ক্লায়েন্টের কাছে লেনদেনের বান্ডিল পাঠাতে হবে। এক্সিকিউশন ক্লায়েন্ট স্থানীয়ভাবে লেনদেনগুলি কার্যকর করে যাচাই করে যে, লেনদেনগুলি ইথেরিয়ামের কোনো নিয়ম লঙ্ঘন করছে না এবং ইথেরিয়ামের স্টেটে প্রস্তাবিত আপডেটটি সঠিক। যখন একটি নোডকে ব্লক প্রযোজক হিসাবে নির্বাচন করা হয়, তখন তার কনসেন্সাস ক্লায়েন্ট ইনস্ট্যান্স নতুন ব্লকে অন্তর্ভুক্ত করার জন্য এক্সিকিউশন ক্লায়েন্টের কাছ থেকে লেনদেনের বান্ডিলের অনুরোধ করে এবং গ্লোবাল স্টেট আপডেট করার জন্য সেগুলি কার্যকর করে। কনসেন্সাস ক্লায়েন্ট [ইঞ্জিন API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) ব্যবহার করে একটি স্থানীয় RPC সংযোগের মাধ্যমে এক্সিকিউশন ক্লায়েন্টকে চালনা করে।
+এই দুই-ক্লায়েন্ট কাঠামো কাজ করার জন্য, কনসেন্সাস ক্লায়েন্টগুলোকে অবশ্যই এক্সিকিউশন ক্লায়েন্টের কাছে লেনদেনের বান্ডিল পাঠাতে হবে। এক্সিকিউশন ক্লায়েন্ট লেনদেনগুলো স্থানীয়ভাবে এক্সিকিউট করে যাচাই করে যে লেনদেনগুলো ইথিরিয়ামের কোনো নিয়ম লঙ্ঘন করে না এবং ইথিরিয়ামের স্টেট-এর প্রস্তাবিত আপডেট সঠিক। যখন একটি নোডকে ব্লক প্রডিউসার হিসেবে নির্বাচিত করা হয়, তখন এর কনসেন্সাস ক্লায়েন্ট ইনস্ট্যান্স নতুন ব্লকে অন্তর্ভুক্ত করার জন্য এক্সিকিউশন ক্লায়েন্টের কাছে লেনদেনের বান্ডিলের অনুরোধ করে এবং গ্লোবাল স্টেট আপডেট করার জন্য সেগুলো এক্সিকিউট করে। কনসেন্সাস ক্লায়েন্ট [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) ব্যবহার করে একটি লোকাল RPC কানেকশনের মাধ্যমে এক্সিকিউশন ক্লায়েন্টকে পরিচালনা করে।
-## এক্সিকিউশন ক্লায়েন্ট কী করে? {#execution-client}
+## এক্সিকিউশন ক্লায়েন্ট কী করে? {#execution-client}
-এক্সিকিউশন ক্লায়েন্ট লেনদেন যাচাইকরণ, পরিচালনা এবং গসিপের জন্য দায়ী, সেইসাথে স্টেট ম্যানেজমেন্ট এবং ইথেরিয়াম ভার্চুয়াল মেশিন ([EVM](/developers/docs/evm/)) সমর্থন করার জন্য। এটি ব্লক তৈরি, ব্লক গসিপিং বা কনসেন্সাস লজিক পরিচালনা করার জন্য দায়ী **নয়**। এগুলো কনসেন্সাস ক্লায়েন্টের দায়িত্বের মধ্যে পড়ে।
+এক্সিকিউশন ক্লায়েন্ট লেনদেন যাচাইকরণ, পরিচালনা এবং গসিপের পাশাপাশি স্টেট ম্যানেজমেন্ট এবং ইথিরিয়াম ভার্চুয়াল মেশিন ([EVM](/developers/docs/evm/)) সমর্থন করার জন্য দায়ী। এটি ব্লক তৈরি, ব্লক গসিপিং বা কনসেন্সাস লজিক পরিচালনার জন্য দায়ী **নয়**। এগুলো কনসেন্সাস ক্লায়েন্টের আওতাভুক্ত।
-এক্সিকিউশন ক্লায়েন্ট এক্সিকিউশন পেলোড তৈরি করে - লেনদেনের তালিকা, আপডেট করা স্টেট ট্রাই এবং অন্যান্য এক্সিকিউশন-সম্পর্কিত ডেটা। কনসেন্সাস ক্লায়েন্টরা প্রতিটি ব্লকে এক্সিকিউশন পেলোড অন্তর্ভুক্ত করে। এক্সিকিউশন ক্লায়েন্ট নতুন ব্লকের লেনদেনগুলি পুনরায় কার্যকর করে সেগুলি বৈধ কিনা তা নিশ্চিত করার জন্যও দায়ী। লেনদেন কার্যকর করা হয় এক্সিকিউশন ক্লায়েন্টের এমবেডেড কম্পিউটারে, যা [ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm) নামে পরিচিত।
+এক্সিকিউশন ক্লায়েন্ট এক্সিকিউশন পেলোড তৈরি করে - লেনদেনের তালিকা, আপডেট করা স্টেট ট্রাই এবং অন্যান্য এক্সিকিউশন-সম্পর্কিত ডেটা। কনসেন্সাস ক্লায়েন্টগুলো প্রতিটি ব্লকে এক্সিকিউশন পেলোড অন্তর্ভুক্ত করে। এক্সিকিউশন ক্লায়েন্ট নতুন ব্লকে লেনদেনগুলো বৈধ কিনা তা নিশ্চিত করার জন্য পুনরায় এক্সিকিউট করার জন্যও দায়ী। লেনদেন এক্সিকিউট করার কাজটি এক্সিকিউশন ক্লায়েন্টের এমবেডেড কম্পিউটারে করা হয়, যা [ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm) নামে পরিচিত।
-এক্সিকিউশন ক্লায়েন্ট [RPC পদ্ধতি](/developers/docs/apis/json-rpc)-এর মাধ্যমে ইথেরিয়ামের জন্য একটি ইউজার ইন্টারফেসও প্রদান করে, যা ব্যবহারকারীদের ইথেরিয়াম ব্লকচেইন জিজ্ঞাসা করতে, লেনদেন জমা দিতে এবং স্মার্ট কন্ট্র্যাক্ট স্থাপন করতে সক্ষম করে। RPC কলগুলি সাধারণত [Web3js](https://docs.web3js.org/), [Web3py](https://web3py.readthedocs.io/en/v5/) এর মতো লাইব্রেরি দ্বারা বা ব্রাউজার ওয়ালেটের মতো ব্যবহারকারী-ইন্টারফেস দ্বারা পরিচালিত হয়।
+এক্সিকিউশন ক্লায়েন্ট [RPC methods](/developers/docs/apis/json-rpc)-এর মাধ্যমে ইথিরিয়ামে একটি ইউজার ইন্টারফেসও অফার করে যা ব্যবহারকারীদের ইথিরিয়াম ব্লকচেইন কোয়েরি করতে, লেনদেন জমা দিতে এবং স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে সক্ষম করে। RPC কলগুলো সাধারণত [Web3js](https://docs.web3js.org/), [Web3py](https://web3py.readthedocs.io/en/v5/)-এর মতো লাইব্রেরি বা ব্রাউজার ওয়ালেট-এর মতো ইউজার-ইন্টারফেস দ্বারা পরিচালিত হয়।
-সংক্ষেপে, এক্সিকিউশন ক্লায়েন্ট হল:
+সংক্ষেপে, এক্সিকিউশন ক্লায়েন্ট হলো:
-- ইথেরিয়ামের একটি ব্যবহারকারী গেটওয়ে
-- ইথেরিয়াম ভার্চুয়াল মেশিন, ইথেরিয়ামের স্টেট এবং লেনদেন পুলের হোম।
+- ইথিরিয়ামের একটি ইউজার গেটওয়ে
+- ইথিরিয়াম ভার্চুয়াল মেশিন, ইথিরিয়ামের স্টেট এবং ট্রানজেকশন পুলের আবাসস্থল।
-## কনসেন্সাস ক্লায়েন্ট কী করে? {#consensus-client}
+## কনসেন্সাস ক্লায়েন্ট কী করে? {#consensus-client}
-কনসেন্সাস ক্লায়েন্ট সেই সমস্ত লজিক নিয়ে কাজ করে যা একটি নোডকে ইথেরিয়াম নেটওয়ার্কের সাথে সিঙ্কে থাকতে সক্ষম করে। এর মধ্যে রয়েছে পিয়ারদের কাছ থেকে ব্লক গ্রহণ করা এবং একটি ফর্ক চয়েস অ্যালগরিদম চালানো, যা নিশ্চিত করে যে নোডটি সর্বদা সেই চেইনটিকেই অনুসরণ করে যেখানে প্রত্যয়নের সঞ্চয় সবচেয়ে বেশি (ভ্যালিডেটরের কার্যকর ব্যালেন্স দ্বারা ভারযুক্ত)। এক্সিকিউশন ক্লায়েন্টের মতো, কনসেন্সাস ক্লায়েন্টদেরও নিজস্ব P2P নেটওয়ার্ক রয়েছে যার মাধ্যমে তারা ব্লক এবং প্রত্যয়ন শেয়ার করে।
+কনসেন্সাস ক্লায়েন্ট এমন সমস্ত লজিক নিয়ে কাজ করে যা একটি নোডকে ইথিরিয়াম নেটওয়ার্কের সাথে সিঙ্কে থাকতে সক্ষম করে। এর মধ্যে রয়েছে পিয়ারদের কাছ থেকে ব্লকস গ্রহণ করা এবং একটি ফর্ক চয়েস এ্যালগরিদম চালানো যাতে নোডটি সর্বদা সবচেয়ে বেশি এটেস্টেশন (ভ্যালিডেটর ইফেক্টিভ ব্যালেন্স দ্বারা ওয়েটেড) জমা হওয়া চেইনটিকে অনুসরণ করে। এক্সিকিউশন ক্লায়েন্টের মতো, কনসেন্সাস ক্লায়েন্টগুলোর নিজস্ব P2P নেটওয়ার্ক রয়েছে যার মাধ্যমে তারা ব্লকস এবং এটেস্টেশন শেয়ার করে।
-কনসেন্সাস ক্লায়েন্ট ব্লকের প্রত্যয়ন বা প্রস্তাবনায় অংশ নেয় না - এটি একটি ভ্যালিডেটর দ্বারা করা হয়, যা কনসেন্সাস ক্লায়েন্টের একটি ঐচ্ছিক অ্যাড-অন। একটি ভ্যালিডেটর ছাড়া কনসেন্সাস ক্লায়েন্ট শুধুমাত্র চেইনের হেডের সাথে তাল মিলিয়ে চলে, যা নোডটিকে সিঙ্কড থাকতে দেয়। এটি একজন ব্যবহারকারীকে তাদের এক্সিকিউশন ক্লায়েন্ট ব্যবহার করে ইথেরিয়ামের সাথে লেনদেন করতে সক্ষম করে, এই আত্মবিশ্বাসের সাথে যে তারা সঠিক চেইনে আছে।
+কনসেন্সাস ক্লায়েন্ট ব্লকস এটেস্ট বা প্রস্তাব করায় অংশগ্রহণ করে না - এটি একটি ভ্যালিডেটর দ্বারা করা হয়, যা কনসেন্সাস ক্লায়েন্টের একটি ঐচ্ছিক অ্যাড-অন। ভ্যালিডেটর ছাড়া একটি কনসেন্সাস ক্লায়েন্ট শুধুমাত্র চেইনের হেডের সাথে তাল মিলিয়ে চলে, যা নোডটিকে সিঙ্ক থাকতে দেয়। এটি একজন ব্যবহারকারীকে তাদের এক্সিকিউশন ক্লায়েন্ট ব্যবহার করে ইথিরিয়ামের সাথে লেনদেন করতে সক্ষম করে, এই আত্মবিশ্বাসের সাথে যে তারা সঠিক চেইনে রয়েছে।
-## ভ্যালিডেটর {#validators}
+## ভ্যালিডেটরস {#validators}
-স্টেকিং এবং ভ্যালিডেটর সফ্টওয়্যার চালানো একটি নোডকে একটি নতুন ব্লক প্রস্তাব করার জন্য নির্বাচিত হওয়ার যোগ্য করে তোলে। নোড অপারেটররা ডিপোজিট কন্ট্র্যাক্টে 32 ETH জমা করে তাদের কনসেন্সাস ক্লায়েন্টে একটি ভ্যালিডেটর যোগ করতে পারে। ভ্যালিডেটর ক্লায়েন্টটি কনসেন্সাস ক্লায়েন্টের সাথে বান্ডিল করা থাকে এবং যেকোনো সময় একটি নোডে যোগ করা যেতে পারে। ভ্যালিডেটর প্রত্যয়ন এবং ব্লক প্রস্তাবনা পরিচালনা করে। এটি একটি নোডকে জরিমানা বা স্ল্যাশিংয়ের মাধ্যমে পুরস্কার অর্জন করতে বা ETH হারাতে সক্ষম করে।
+স্টেকিং এবং ভ্যালিডেটর সফটওয়্যার চালানো একটি নোডকে নতুন ব্লক প্রস্তাব করার জন্য নির্বাচিত হওয়ার যোগ্য করে তোলে। নোড অপারেটররা ডিপোজিট কন্টাক্ট-এ 32 ETH জমা দিয়ে তাদের কনসেন্সাস ক্লায়েন্টগুলোতে একটি ভ্যালিডেটর যোগ করতে পারে। ভ্যালিডেটর ক্লায়েন্ট কনসেন্সাস ক্লায়েন্টের সাথে বান্ডিল হিসেবে আসে এবং যেকোনো সময় একটি নোডে যোগ করা যেতে পারে। ভ্যালিডেটর এটেস্টেশন এবং ব্লক প্রস্তাবনাগুলো পরিচালনা করে। এটি একটি নোডকে পুরষ্কার অর্জন করতে বা জরিমানা বা স্ল্যাশিং-এর মাধ্যমে ETH হারাতেও সক্ষম করে।
[স্টেকিং সম্পর্কে আরও জানুন](/staking/)।
-## একটি নোডের উপাদানগুলির তুলনা {#node-comparison}
+## নোডের উপাদানগুলোর তুলনা {#node-comparison}
-| এক্সিকিউশন ক্লায়েন্ট | কনসেন্সাস ক্লায়েন্ট | ভ্যালিডেটর |
-| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
-| তার P2P নেটওয়ার্কের মাধ্যমে লেনদেন গসিপ করে | তার P2P নেটওয়ার্কের মাধ্যমে ব্লক এবং প্রত্যয়ন গসিপ করে | ব্লক প্রস্তাব করে |
-| লেনদেন কার্যকর/পুনরায় কার্যকর করে | ফর্ক চয়েস অ্যালগরিদম চালায় | পুরস্কার/জরিমানা অর্জন করে |
-| আগত স্টেট পরিবর্তন যাচাই করে | চেইনের হেডের ট্র্যাক রাখে | প্রত্যয়ন তৈরি করে |
-| স্টেট এবং রসিদ ট্রাই পরিচালনা করে | বিকন স্টেট পরিচালনা করে (কনসেন্সাস এবং এক্সিকিউশন তথ্য ধারণ করে) | স্টেক করার জন্য 32 ETH প্রয়োজন |
-| এক্সিকিউশন পেলোড তৈরি করে | RANDAO-তে সঞ্চিত র্যান্ডমনেসের ট্র্যাক রাখে (একটি অ্যালগরিদম যা ভ্যালিডেটর নির্বাচন এবং অন্যান্য কনসেন্সাস অপারেশনের জন্য যাচাইযোগ্য র্যান্ডমনেস সরবরাহ করে) | স্ল্যাশড হতে পারে |
-| ইথেরিয়ামের সাথে ইন্টারঅ্যাক্ট করার জন্য JSON-RPC API প্রকাশ করে | জাস্টিফিকেশন এবং ফাইনালইজেশনের ট্র্যাক রাখে | |
+| এক্সিকিউশন ক্লায়েন্ট | কনসেন্সাস ক্লায়েন্ট | ভ্যালিডেটর |
+| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| এর P2P নেটওয়ার্কে লেনদেন গসিপ করে | এর P2P নেটওয়ার্কে ব্লকস এবং এটেস্টেশন গসিপ করে | ব্লকস প্রস্তাব করে |
+| লেনদেন এক্সিকিউট/পুনরায় এক্সিকিউট করে | ফর্ক চয়েস এ্যালগরিদম চালায় | পুরষ্কার/জরিমানা অর্জন করে |
+| আগত স্টেট পরিবর্তনগুলো যাচাই করে | চেইনের হেডের ট্র্যাক রাখে | এটেস্টেশন তৈরি করে |
+| স্টেট এবং রিসিপ্ট ট্রাই পরিচালনা করে | বিকন স্টেট পরিচালনা করে (কনসেন্সাস এবং এক্সিকিউশন তথ্য ধারণ করে) | 32 ETH স্টেকিং করা প্রয়োজন |
+| এক্সিকিউশন পেলোড তৈরি করে | RANDAO-তে জমা হওয়া র্যান্ডমনেসের ট্র্যাক রাখে (একটি এ্যালগরিদম যা ভ্যালিডেটর নির্বাচন এবং অন্যান্য কনসেন্সাস অপারেশনের জন্য যাচাইযোগ্য র্যান্ডমনেস প্রদান করে) | স্ল্যাশ করা যেতে পারে |
+| ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করার জন্য JSON-RPC API এক্সপোজ করে | জাস্টিফিকেশন এবং ফাইনালাইজেশনের ট্র্যাক রাখে | |
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
- [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos)
- [ব্লক প্রস্তাবনা](/developers/docs/consensus-mechanisms/pos/block-proposal)
-- [ভ্যালিডেটরের পুরস্কার এবং জরিমানা](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
+- [ভ্যালিডেটর পুরষ্কার এবং জরিমানা](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
index 4b9ce174d30..d6824c1de2e 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -1,416 +1,417 @@
---
-title: "একটি পরিষেবা হিসাবে নোড"
-description: "নোড পরিষেবাগুলির একটি প্রাথমিক-স্তরের সংক্ষিপ্ত বিবরণ, সুবিধা এবং অসুবিধা এবং জনপ্রিয় সরবরাহকারী।"
+title: সার্ভিস হিসেবে নোড
+description: নোড সার্ভিস, এর সুবিধা-অসুবিধা এবং জনপ্রিয় প্রোভাইডারদের একটি প্রাথমিক ওভারভিউ।
lang: bn
sidebarDepth: 2
---
## ভূমিকা {#Introduction}
-আপনার নিজের [ইথেরিয়াম নোড](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) চালানো চ্যালেঞ্জিং হতে পারে, বিশেষ করে যখন শুরু করা হয় বা দ্রুত স্কেলিং করা হয়। এমন [অনেক পরিষেবা](#popular-node-services) রয়েছে যা আপনার জন্য অপ্টিমাইজড নোড পরিকাঠামো চালায়, তাই আপনি পরিবর্তে আপনার অ্যাপ্লিকেশন বা পণ্য বিকাশের দিকে মনোনিবেশ করতে পারেন। নোড পরিষেবাগুলি কীভাবে কাজ করে, সেগুলি ব্যবহারের সুবিধা এবং অসুবিধাগুলি আমরা ব্যাখ্যা করব এবং আপনি যদি শুরু করতে আগ্রহী হন তবে সরবরাহকারীদের তালিকাভুক্ত করব।
+আপনার নিজস্ব [ইথিরিয়াম নোড](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) চালানো চ্যালেঞ্জিং হতে পারে, বিশেষ করে যখন আপনি শুরু করছেন বা দ্রুত স্কেলিং করছেন। এমন [বেশ কিছু সার্ভিস](#popular-node-services) রয়েছে যা আপনার জন্য অপ্টিমাইজ করা নোড ইনফ্রাস্ট্রাকচার চালায়, যাতে আপনি এর পরিবর্তে আপনার অ্যাপ্লিকেশন বা প্রোডাক্ট ডেভেলপমেন্টে ফোকাস করতে পারেন। আমরা ব্যাখ্যা করব কীভাবে নোড সার্ভিসগুলো কাজ করে, এগুলো ব্যবহারের সুবিধা ও অসুবিধা কী এবং আপনি যদি শুরু করতে আগ্রহী হন তবে প্রোভাইডারদের একটি তালিকাও দেব।
## পূর্বশর্ত {#prerequisites}
-নোড এবং ক্লায়েন্ট কী তা নিয়ে যদি আপনার ইতিমধ্যে কোনো ধারণা না থাকে, তবে [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) দেখুন।
+নোড এবং ক্লায়েন্ট কী সে সম্পর্কে যদি আপনার আগে থেকে ধারণা না থাকে, তবে [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/) দেখে নিন।
-## স্ট্যাকার {#stakoooooooooooooors}
+## স্টেকারস {#stakoooooooooooooors}
-সোলো স্ট্যাকারদের তৃতীয় পক্ষের প্রদানকারীদের উপর নির্ভর না করে তাদের নিজস্ব পরিকাঠামো চালাতে হবে। এর অর্থ হল একটি কনসেন্সাস ক্লায়েন্টের সাথে মিলিত একটি এক্সিকিউশন ক্লায়েন্ট চালানো। [দ্য মার্জ](/roadmap/merge) এর আগে, শুধুমাত্র একটি কনসেন্সাস ক্লায়েন্ট চালানো এবং এক্সিকিউশন ডেটার জন্য একটি কেন্দ্রীভূত প্রদানকারী ব্যবহার করা সম্ভব ছিল; এটি আর সম্ভব নয় - একজন সোলো স্ট্যাকারকে অবশ্যই উভয় ক্লায়েন্ট চালাতে হবে। তবে, এই প্রক্রিয়াটি সহজ করার জন্য পরিষেবা উপলব্ধ রয়েছে।
+সোলো স্টেকারদের থার্ড-পার্টি প্রোভাইডারদের ওপর নির্ভর না করে নিজেদের ইনফ্রাস্ট্রাকচার চালাতে হবে। এর মানে হলো একটি কনসেন্সাস ক্লায়েন্ট এর সাথে যুক্ত একটি এক্সিকিউশন ক্লায়েন্ট চালানো। [দ্য মার্জ](/roadmap/merge)-এর আগে, শুধুমাত্র একটি কনসেন্সাস ক্লায়েন্ট চালানো এবং এক্সিকিউশন ডেটার জন্য একটি সেন্ট্রালাইজড প্রোভাইডার ব্যবহার করা সম্ভব ছিল; এটি আর সম্ভব নয় - একজন সোলো স্টেকারকে অবশ্যই উভয় ক্লায়েন্ট চালাতে হবে। তবে, এই প্রক্রিয়াটিকে সহজ করার জন্য কিছু সার্ভিস উপলব্ধ রয়েছে।
-[একটি নোড চালানোর বিষয়ে আরও পড়ুন](/developers/docs/nodes-and-clients/run-a-node/)।
+[নোড চালানো সম্পর্কে আরও পড়ুন](/developers/docs/nodes-and-clients/run-a-node/)।
-এই পৃষ্ঠায় বর্ণিত পরিষেবাগুলি নন-স্টেকিং নোডগুলির জন্য।
+এই পৃষ্ঠায় বর্ণিত সার্ভিসগুলো নন-স্টেকিং নোডগুলোর জন্য।
-## নোড পরিষেবাগুলি কীভাবে কাজ করে? {#how-do-node-services-work}
+## নোড সার্ভিসগুলো কীভাবে কাজ করে? {#how-do-node-services-work}
-নোড পরিষেবা প্রদানকারীরা আপনার জন্য পর্দার আড়ালে ডিস্ট্রিবিউটেড নোড ক্লায়েন্ট চালায়, তাই আপনাকে এটি করতে হবে না।
+নোড সার্ভিস প্রোভাইডাররা আপনার জন্য পর্দার আড়ালে ডিস্ট্রিবিউটেড নোড ক্লায়েন্ট চালায়, তাই আপনাকে এটি করতে হবে না।
-এই পরিষেবাগুলি সাধারণত একটি API কী প্রদান করে যা আপনি ব্লকচেইনে লিখতে এবং থেকে পড়তে ব্যবহার করতে পারেন। তারা প্রায়শই মেইননেট ছাড়াও [ইথেরিয়াম টেস্টনেট](/developers/docs/networks/#ethereum-testnets)-এ অ্যাক্সেস অন্তর্ভুক্ত করে।
+এই সার্ভিসগুলো সাধারণত একটি API কি প্রদান করে যা আপনি ব্লকচেইন থেকে পড়তে এবং লিখতে ব্যবহার করতে পারেন। এগুলোতে প্রায়শই মেইননেট এর পাশাপাশি [ইথিরিয়াম টেস্টনেট](/developers/docs/networks/#ethereum-testnets)-এ অ্যাক্সেস অন্তর্ভুক্ত থাকে।
-কিছু পরিষেবা আপনাকে আপনার নিজস্ব ডেডিকেটেড নোড অফার করে যা তারা আপনার জন্য পরিচালনা করে, যখন অন্যরা নোড জুড়ে কার্যকলাপ বিতরণ করতে লোড ব্যালেন্সার ব্যবহার করে।
+কিছু সার্ভিস আপনাকে আপনার নিজস্ব ডেডিকেটেড নোড অফার করে যা তারা আপনার জন্য পরিচালনা করে, অন্যদিকে অন্যরা নোডগুলোর মধ্যে অ্যাক্টিভিটি ডিস্ট্রিবিউট করতে লোড ব্যালেন্সার ব্যবহার করে।
-প্রায় সমস্ত নোড পরিষেবাগুলিকে একীভূত করা অত্যন্ত সহজ, আপনার স্ব-হোস্ট করা নোডকে অদলবদল করার জন্য আপনার কোডে এক লাইনের পরিবর্তন জড়িত, বা এমনকি পরিষেবাগুলির মধ্যে স্যুইচ করাও।
+প্রায় সব নোড সার্ভিস ইন্টিগ্রেট করা অত্যন্ত সহজ, আপনার সেলফ-হোস্টেড নোড পরিবর্তন করতে বা এমনকি সার্ভিসগুলোর মধ্যে সুইচ করতে আপনার কোডে এক লাইনের পরিবর্তন করতে হয়।
-প্রায়শই নোড পরিষেবাগুলি বিভিন্ন ধরণের [নোড ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং [প্রকার](/developers/docs/nodes-and-clients/#node-types) চালাবে, যা আপনাকে একটি API-তে ক্লায়েন্ট নির্দিষ্ট পদ্ধতি ছাড়াও সম্পূর্ণ এবং আর্কাইভ নোড অ্যাক্সেস করার অনুমতি দেবে।
+প্রায়শই নোড সার্ভিসগুলো বিভিন্ন ধরনের [নোড ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং [প্রকার](/developers/docs/nodes-and-clients/#node-types) চালাবে, যা আপনাকে একটি API-তে ক্লায়েন্ট নির্দিষ্ট মেথডগুলোর পাশাপাশি ফুল এবং আর্কাইভ নোডগুলোতে অ্যাক্সেস করার অনুমতি দেয়।
-এটা মনে রাখা গুরুত্বপূর্ণ যে নোড পরিষেবাগুলি আপনার প্রাইভেট কী বা তথ্য সঞ্চয় করে না এবং করা উচিতও নয়।
+এটি মনে রাখা গুরুত্বপূর্ণ যে নোড সার্ভিসগুলো আপনার প্রাইভেট কি বা তথ্য সংরক্ষণ করে না এবং করা উচিতও নয়।
-## একটি নোড পরিষেবা ব্যবহারের সুবিধা কী কী? {#benefits-of-using-a-node-service}
+## নোড সার্ভিস ব্যবহারের সুবিধাগুলো কী কী? {#benefits-of-using-a-node-service}
-একটি নোড পরিষেবা ব্যবহারের প্রধান সুবিধা হল নিজে নোড রক্ষণাবেক্ষণ এবং পরিচালনার জন্য ইঞ্জিনিয়ারিং সময় ব্যয় করতে না হওয়া। এটি আপনাকে পরিকাঠামো রক্ষণাবেক্ষণ নিয়ে চিন্তা না করে আপনার পণ্য তৈরির দিকে মনোনিবেশ করতে দেয়।
+নোড সার্ভিস ব্যবহারের প্রধান সুবিধা হলো আপনাকে নিজে নোডগুলো মেইনটেইন এবং ম্যানেজ করার জন্য ইঞ্জিনিয়ারিং সময় ব্যয় করতে হবে না। এটি আপনাকে ইনফ্রাস্ট্রাকচার মেইনটেন্যান্স নিয়ে চিন্তা করার পরিবর্তে আপনার প্রোডাক্ট তৈরিতে ফোকাস করতে দেয়।
-স্টোরেজ থেকে শুরু করে ব্যান্ডউইথ এবং মূল্যবান ইঞ্জিনিয়ারিং সময় পর্যন্ত আপনার নিজের নোড চালানো খুব ব্যয়বহুল হতে পারে। স্কেলিং করার সময় আরও নোড চালু করা, সর্বশেষ সংস্করণে নোড আপগ্রেড করা এবং স্টেট সামঞ্জস্য নিশ্চিত করার মতো জিনিসগুলি আপনার কাঙ্খিত web3 পণ্যে রিসোর্স তৈরি এবং ব্যয় করা থেকে বিভ্রান্ত করতে পারে।
+আপনার নিজস্ব নোড চালানো স্টোরেজ থেকে শুরু করে ব্যান্ডউইথ এবং মূল্যবান ইঞ্জিনিয়ারিং সময় পর্যন্ত খুব ব্যয়বহুল হতে পারে। স্কেলিং করার সময় আরও নোড স্পিন আপ করা, নোডগুলোকে লেটেস্ট ভার্সনে আপগ্রেড করা এবং স্টেট কনসিস্টেন্সি নিশ্চিত করার মতো বিষয়গুলো আপনার কাঙ্ক্ষিত ওয়েব3 প্রোডাক্ট তৈরি এবং রিসোর্স ব্যয় করা থেকে মনোযোগ সরিয়ে নিতে পারে।
-## একটি নোড পরিষেবা ব্যবহারের অসুবিধাগুলি কী কী? {#cons-of-using-a-node-service}
+## নোড সার্ভিস ব্যবহারের অসুবিধাগুলো কী কী? {#cons-of-using-a-node-service}
-একটি নোড পরিষেবা ব্যবহার করে আপনি আপনার পণ্যের পরিকাঠামোগত দিকটিকে কেন্দ্রীভূত করছেন। এই কারণে, যে প্রকল্পগুলি বিকেন্দ্রীকরণকে সর্বোচ্চ গুরুত্ব দেয় তারা তৃতীয় পক্ষের কাছে আউটসোর্স করার পরিবর্তে স্ব-হোস্টিং নোড পছন্দ করতে পারে।
+একটি নোড সার্ভিস ব্যবহার করে আপনি আপনার প্রোডাক্টের ইনফ্রাস্ট্রাকচার দিকটিকে সেন্ট্রালাইজ করছেন। এই কারণে, যেসব প্রজেক্ট ডিসেন্ট্রালাইজেশনকে সর্বোচ্চ গুরুত্ব দেয় তারা থার্ড-পার্টিকে আউটসোর্স করার পরিবর্তে সেলফ-হোস্টিং নোড পছন্দ করতে পারে।
-আপনার নিজের নোড চালানোর [সুবিধা](/developers/docs/nodes-and-clients/#benefits-to-you) সম্পর্কে আরও পড়ুন।
+[আপনার নিজস্ব নোড চালানোর সুবিধাগুলো](/developers/docs/nodes-and-clients/#benefits-to-you) সম্পর্কে আরও পড়ুন।
-## জনপ্রিয় নোড পরিষেবা {#popular-node-services}
+## জনপ্রিয় নোড সার্ভিসগুলো {#popular-node-services}
-এখানে কিছু জনপ্রিয় ইথেরিয়াম নোড প্রদানকারীর একটি তালিকা রয়েছে, যদি কোনোটি অনুপস্থিত থাকে তবে নির্দ্বিধায় যোগ করুন! প্রতিটি নোড পরিষেবা বিনামূল্যে বা অর্থপ্রদানের স্তর ছাড়াও বিভিন্ন সুবিধা এবং বৈশিষ্ট্য অফার করে, সিদ্ধান্ত নেওয়ার আগে আপনার প্রয়োজন অনুসারে কোনটি সবচেয়ে উপযুক্ত তা আপনার অনুসন্ধান করা উচিত।
+এখানে সবচেয়ে জনপ্রিয় কিছু ইথিরিয়াম নোড প্রোভাইডারের একটি তালিকা দেওয়া হলো, যদি কোনোটি বাদ পড়ে থাকে তবে নির্দ্বিধায় যোগ করুন! প্রতিটি নোড সার্ভিস ফ্রি বা পেইড টিয়ারের পাশাপাশি বিভিন্ন সুবিধা এবং ফিচার অফার করে, সিদ্ধান্ত নেওয়ার আগে আপনার প্রয়োজন অনুযায়ী কোনটি সবচেয়ে উপযুক্ত তা আপনার যাচাই করা উচিত।
- [**Alchemy**](https://alchemy.com/)
- - [ডক্স](https://www.alchemy.com/docs/)
- - বৈশিষ্ট্য
- - প্রতি মাসে 300M কম্পিউট ইউনিট সহ বৃহত্তম বিনামূল্যে স্তর (~30M getLatestBlock অনুরোধ)
- - Polygon, Starknet, Optimism, Arbitrum-এর জন্য মাল্টিচেইন সমর্থন
- - বৃহত্তম ইথেরিয়াম ডিএ্যাপস এবং DeFi লেনদেন ভলিউমের প্রায় ৭০% শক্তি যোগাচ্ছে
- - Alchemy Notify-এর মাধ্যমে রিয়েল-টাইম ওয়েবহুক সতর্কতা
- - শ্রেণী-সেরা সমর্থন এবং নির্ভরযোগ্যতা / স্থিতিশীলতা
- - Alchemy'র NFT API
+ - [ডকুমেন্টেশন](https://www.alchemy.com/docs/)
+ - ফিচারসমূহ
+ - প্রতি মাসে 300M কম্পিউট ইউনিট সহ সবচেয়ে বড় ফ্রি টিয়ার (~30M getLatestBlock রিকোয়েস্ট)
+ - Polygon, Starknet, Optimism, Arbitrum-এর জন্য মাল্টিচেইন সাপোর্ট
+ - সবচেয়ে বড় ইথিরিয়াম ডিএ্যাপস এবং DeFi লেনদেন ভলিউমের ~70% পাওয়ার করছে
+ - Alchemy Notify-এর মাধ্যমে রিয়েল-টাইম ওয়েবহুক অ্যালার্ট
+ - সেরা সাপোর্ট এবং নির্ভরযোগ্যতা / স্থিতিশীলতা
+ - Alchemy-এর NFT API
- রিকোয়েস্ট এক্সপ্লোরার, মেমপুল ওয়াচার এবং কম্পোজার সহ ড্যাশবোর্ড
- - ইন্টিগ্রেটেড টেস্টনেট ফসেট অ্যাক্সেস
- - 18 হাজার ব্যবহারকারী সহ সক্রিয় ডিসকর্ড নির্মাতা সম্প্রদায়
+ - ইন্টিগ্রেটেড টেস্টনেট ফাসেট অ্যাক্সেস
+ - 18k ব্যবহারকারী সহ সক্রিয় ডিসকর্ড বিল্ডার কমিউনিটি
- [**Allnodes**](https://www.allnodes.com/)
- - [ডক্স](https://docs.allnodes.com/)
- - বৈশিষ্ট্য
- - Allnodes পোর্টফোলিও পৃষ্ঠায় তৈরি PublicNode টোকেন সহ কোনো রেট সীমা নেই।
- - [PublicNode](https://www.publicnode.com)-এ গোপনীয়তা কেন্দ্রিক বিনামূল্যে rpc এন্ডপয়েন্ট (100+ ব্লকচেইন)
- - 90+ ব্লকচেইনের জন্য রেট সীমা ছাড়া ডেডিকেটেড নোড
+ - [ডকুমেন্টেশন](https://docs.allnodes.com/)
+ - ফিচারসমূহ
+ - Allnodes পোর্টফোলিও পেজে তৈরি PublicNode টোকেনের সাথে কোনো রেট লিমিট নেই।
+ - [PublicNode](https://www.publicnode.com)-এ প্রাইভেসি ফোকাসড ফ্রি rpc এন্ডপয়েন্ট (100+ ব্লকচেইন)
+ - 90+ ব্লকচেইনের জন্য রেট লিমিট ছাড়া ডেডিকেটেড নোড
- 30+ ব্লকচেইনের জন্য ডেডিকেটেড আর্কাইভ নোড
- - 3টি অঞ্চলে উপলব্ধ (মার্কিন যুক্তরাষ্ট্র, ইইউ, এশিয়া)
+ - 3টি অঞ্চলে উপলব্ধ (US, EU, Asia)
- [PublicNode](https://www.publicnode.com/snapshots)-এ 100+ ব্লকচেইনের জন্য স্ন্যাপশট
- - 99.90%-99.98% আপটাইম SLA সহ 24/7 প্রযুক্তিগত সহায়তা (প্ল্যানের উপর নির্ভর করে)।
- - ঘন্টা প্রতি অর্থপ্রদান মূল্য
- - ক্রেডিট কার্ড, পেপ্যাল বা ক্রিপ্টো দিয়ে অর্থ প্রদান করুন
+ - 99.90%-99.98% আপটাইম SLA সহ 24/7 টেকনিক্যাল সাপোর্ট (প্ল্যানের ওপর নির্ভর করে)।
+ - প্রতি ঘণ্টা অনুযায়ী প্রাইসিং
+ - ক্রেডিট কার্ড, পেপ্যাল বা ক্রিপটোর মাধ্যমে পেমেন্ট করুন
- [**All That Node**](https://allthatnode.com/)
- - [ডক্স](https://docs.allthatnode.com/)
- - বৈশিষ্ট্য
- - বিনামূল্যে স্তর সহ প্রতিদিন 50,000 অনুরোধ
- - 40 টিরও বেশি প্রোটোকলের জন্য সমর্থন
- - JSON-RPC (EVM, Tendermint), REST, এবং Websocket API সমর্থিত
- - আর্কাইভ ডেটাতে সীমাহীন অ্যাক্সেস
- - 24/7 প্রযুক্তিগত সহায়তা এবং 99.9% এর বেশি আপটাইম
- - একাধিক চেইনে ফসেট উপলব্ধ
- - সীমাহীন সংখ্যক API কী সহ সীমাহীন এন্ডপয়েন্ট অ্যাক্সেস
- - ট্রেস/ডিবাগ API সমর্থিত
- - স্বয়ংক্রিয় আপডেট
+ - [ডকুমেন্টেশন](https://docs.allthatnode.com/)
+ - ফিচারসমূহ
+ - ফ্রি টিয়ারের সাথে প্রতিদিন 50,000 রিকোয়েস্ট
+ - 40টিরও বেশি প্রোটোকলের জন্য সাপোর্ট
+ - JSON-RPC (EVM, Tendermint), REST, এবং Websocket API সাপোর্টেড
+ - আর্কাইভ ডেটাতে আনলিমিটেড অ্যাক্সেস
+ - 24/7 টেকনিক্যাল সাপোর্ট এবং 99.9% এর বেশি আপটাইম
+ - মাল্টি চেইনে ফাসেট উপলব্ধ
+ - সীমাহীন সংখ্যক API কি সহ আনলিমিটেড এন্ডপয়েন্ট অ্যাক্সেস
+ - ট্রেস/ডিবাগ API সাপোর্টেড
+ - অটোমেটেড আপডেট
- [**Amazon Managed Blockchain**](https://aws.amazon.com/managed-blockchain/)
- - [ডক্স](https://aws.amazon.com/managed-blockchain/resources/)
- - বৈশিষ্ট্য
- - সম্পূর্ণরূপে পরিচালিত ইথেরিয়াম নোড
+ - [ডকুমেন্টেশন](https://aws.amazon.com/managed-blockchain/resources/)
+ - ফিচারসমূহ
+ - সম্পূর্ণরূপে পরিচালিত ইথিরিয়াম নোড
- ছয়টি অঞ্চলে উপলব্ধ
- - HTTP এবং নিরাপদ ওয়েবসকেটের উপর JSON-RPC
- - 3টি চেইন সমর্থন করে
- - SLA, AWS সহায়তা 24/7
+ - HTTP এবং সুরক্ষিত WebSockets-এর ওপর JSON-RPC
+ - 3টি চেইন সাপোর্ট করে
+ - SLA, AWS সাপোর্ট 24/7
- Go-ethereum এবং Lighthouse
- [**Ankr**](https://www.ankr.com/)
- - [ডক্স](https://docs.ankr.com/)
- - বৈশিষ্ট্য
- - Ankr প্রোটোকল - 8+ চেইনের জন্য পাবলিক RPC API এন্ডপয়েন্টগুলিতে খোলা অ্যাক্সেস
- - নিকটতম উপলব্ধ নোডে একটি দ্রুত এবং নির্ভরযোগ্য গেটওয়ের জন্য লোড ব্যালেন্সিং এবং নোড স্বাস্থ্য পর্যবেক্ষণ
- - WSS এন্ডপয়েন্ট এবং আনক্যাপড রেট সীমা সক্ষমকারী প্রিমিয়াম স্তর
- - 40+ চেইনের জন্য এক-ক্লিকে সম্পূর্ণ নোড এবং ভ্যালিডেটর নোড স্থাপন
- - প্রয়োজন অনুযায়ী স্কেল করুন
- - বিশ্লেষণ টুলস
+ - [ডকুমেন্টেশন](https://docs.ankr.com/)
+ - ফিচারসমূহ
+ - Ankr প্রোটোকল - 8+ চেইনের জন্য পাবলিক RPC API এন্ডপয়েন্টগুলোতে ওপেন অ্যাক্সেস
+ - নিকটতম উপলব্ধ নোডে একটি দ্রুত এবং নির্ভরযোগ্য গেটওয়ের জন্য লোড ব্যালেন্সিং এবং নোড হেলথ মনিটরিং
+ - WSS এন্ডপয়েন্ট এবং আনক্যাপড রেট লিমিট এনাবল করা প্রিমিয়াম টিয়ার
+ - 40+ চেইনের জন্য ওয়ান-ক্লিক ফুল নোড এবং ভ্যালিডেটর নোড ডিপ্লয়মেন্ট
+ - প্রয়োজন অনুযায়ী স্কেল করুন
+ - অ্যানালিটিক্স টুলস
- ড্যাশবোর্ড
- RPC, HTTPS এবং WSS এন্ডপয়েন্ট
- - সরাসরি সহায়তা
+ - সরাসরি সাপোর্ট
- [**Blast**](https://blastapi.io/)
- - [ডক্স](https://docs.blastapi.io/)
- - বৈশিষ্ট্য
- - RPC এবং WSS সমর্থন
- - মাল্টি-রিজিওন নোড হোস্টিং
- - বিকেন্দ্রীভূত পরিকাঠামো
+ - [ডকুমেন্টেশন](https://docs.blastapi.io/)
+ - ফিচারসমূহ
+ - RPC এবং WSS সাপোর্ট
+ - মাল্টি-রিজিয়ন নোড হোস্টিং
+ - ডিসেন্ট্রালাইজড ইনফ্রাস্ট্রাকচার
- পাবলিক API
- ডেডিকেটেড ফ্রি প্ল্যান
- - মাল্টিচেইন সমর্থন (17+ ব্লকচেইন)
+ - মাল্টিচেইন সাপোর্ট (17+ ব্লকচেইন)
- আর্কাইভ নোড
- - 24/7 ডিসকর্ড সহায়তা
- - 24/7 পর্যবেক্ষণ এবং সতর্কতা
- - 99.9% এর একটি সামগ্রিক SLA
- - ক্রিপ্টোতে অর্থপ্রদান করুন
+ - 24/7 ডিসকর্ড সাপোর্ট
+ - 24/7 মনিটরিং এবং অ্যালার্ট
+ - সামগ্রিক 99.9% SLA
+ - ক্রিপটোতে পেমেন্ট করুন
- [**BlockDaemon**](https://blockdaemon.com/)
- - [ডক্স](https://ubiquity.docs.blockdaemon.com/)
+ - [ডকুমেন্টেশন](https://ubiquity.docs.blockdaemon.com/)
- সুবিধাসমূহ
- ড্যাশবোর্ড
- - নোড প্রতি ভিত্তি
- - বিশ্লেষণ
+ - প্রতি নোড ভিত্তিতে
+ - অ্যানালিটিক্স
- [**BlockPI**](https://blockpi.io/)
- - [ডক্স](https://docs.blockpi.io/)
- - বৈশিষ্ট্য
- - শক্তিশালী এবং ডিস্ট্রিবিউটেড নোড কাঠামো
+ - [ডকুমেন্টেশন](https://docs.blockpi.io/)
+ - ফিচারসমূহ
+ - শক্তিশালী এবং ডিস্ট্রিবিউটেড নোড স্ট্রাকচার
- 40টি পর্যন্ত HTTPS এবং WSS এন্ডপয়েন্ট
- - বিনামূল্যে সাইনআপ প্যাকেজ এবং মাসিক প্যাকেজ
- - ট্রেস পদ্ধতি + আর্কাইভ ডেটা সমর্থন
- - 90 দিন পর্যন্ত বৈধতার প্যাকেজ
- - কাস্টম প্ল্যান এবং ব্যবহারের ভিত্তিতে অর্থপ্রদান
- - ক্রিপ্টোতে অর্থপ্রদান করুন
- - সরাসরি সহায়তা এবং প্রযুক্তিগত সহায়তা
+ - ফ্রি সাইনআপ প্যাকেজ এবং মাসিক প্যাকেজ
+ - ট্রেস মেথড + আর্কাইভ ডেটা সাপোর্ট
+ - 90 দিন পর্যন্ত মেয়াদের প্যাকেজ
+ - কাস্টম প্ল্যান এবং পে-অ্যাজ-ইউ-গো পেমেন্ট
+ - ক্রিপটোতে পেমেন্ট করুন
+ - সরাসরি সাপোর্ট এবং টেকনিক্যাল সাপোর্ট
- [**Chainbase**](https://www.chainbase.com/)
- - [ডক্স](https://docs.chainbase.com)
- - বৈশিষ্ট্য
- - অত্যন্ত উপলব্ধ, দ্রুত এবং স্কেলযোগ্য RPC পরিষেবা
- - মাল্টি-চেইন সমর্থন
- - বিনামূল্যে ট্যারিফ
- - ব্যবহারকারী-বান্ধব ড্যাশবোর্ড
- - RPC এর বাইরে ব্লকচেইন ডেটা পরিষেবা প্রদান করে
+ - [ডকুমেন্টেশন](https://docs.chainbase.com)
+ - ফিচারসমূহ
+ - অত্যন্ত সহজলভ্য, দ্রুত এবং স্কেলেবল RPC সার্ভিস
+ - মাল্টি-চেইন সাপোর্ট
+ - ফ্রি ট্যারিফ
+ - ইউজার-ফ্রেন্ডলি ড্যাশবোর্ড
+ - RPC-এর বাইরে ব্লকচেইন ডেটা সার্ভিস প্রদান করে
- [**Chainstack**](https://chainstack.com/)
- - [ডক্স](https://docs.chainstack.com/)
- - বৈশিষ্ট্য
- - বিনামূল্যে শেয়ার্ড নোড
+ - [ডকুমেন্টেশন](https://docs.chainstack.com/)
+ - ফিচারসমূহ
+ - ফ্রি শেয়ার্ড নোড
- শেয়ার্ড আর্কাইভ নোড
- - GraphQL সমর্থন
+ - GraphQL সাপোর্ট
- RPC এবং WSS এন্ডপয়েন্ট
- - ডেডিকেটেড সম্পূর্ণ এবং আর্কাইভ নোড
- - ডেডিকেটেড স্থাপনার জন্য দ্রুত সিঙ্ক সময়
- - আপনার ক্লাউড আনুন
- - ঘন্টা প্রতি অর্থপ্রদান মূল্য
- - সরাসরি 24/7 সহায়তা
+ - ডেডিকেটেড ফুল এবং আর্কাইভ নোড
+ - ডেডিকেটেড ডিপ্লয়মেন্টের জন্য দ্রুত সিঙ্ক টাইম
+ - আপনার ক্লাউড নিয়ে আসুন
+ - প্রতি ঘণ্টা অনুযায়ী প্রাইসিং
+ - সরাসরি 24/7 সাপোর্ট
- [**dRPC**](https://drpc.org/)
- - [ডক্স](https://drpc.org/docs)
- - NodeCloud: প্লাগ-এন-প্লে RPC ইনফ্রা $10 (USD) থেকে শুরু—সম্পূর্ণ গতি, কোনো সীমা নেই
- - NodeCloud বৈশিষ্ট্য:
- - 185টি নেটওয়ার্কের জন্য API সমর্থন
- - 40+ প্রদানকারীর ডিস্ট্রিবিউটেড পুল
- - নয়টি (9) জিও-ক্লাস্টার সহ বিশ্বব্যাপী কভারেজ
- - AI-চালিত লোড ব্যালেন্সিং সিস্টেম
- - পে-অ্যাজ-ইউ-গো ফ্ল্যাট প্রাইসিং—কোনো বৃদ্ধি নেই, মেয়াদ শেষ নেই, কোনো লক-ইন নেই
- - সীমাহীন কী, গ্র্যানুলার কী টুইকস, দলের ভূমিকা, ফ্রন্ট-এন্ড সুরক্ষা
- - প্রতি পদ্ধতিতে 20 কম্পিউট ইউনিট (সিইউ) এ ফ্ল্যাট রেট
+ - [ডকুমেন্টেশন](https://drpc.org/docs)
+ - NodeCloud: প্লাগ-এন-প্লে RPC ইনফ্রা $10 (USD) থেকে শুরু—ফুল স্পিড, কোনো লিমিট নেই
+ - NodeCloud ফিচারসমূহ:
+ - 185টি নেটওয়ার্কের জন্য API সাপোর্ট
+ - 40+ প্রোভাইডারের ডিস্ট্রিবিউটেড পুল
+ - নয়টি (9) জিও-ক্লাস্টার সহ গ্লোবাল কভারেজ
+ - AI-পাওয়ার্ড লোড ব্যালেন্সিং সিস্টেম
+ - পে-অ্যাজ-ইউ-গো ফ্ল্যাট প্রাইসিং—কোনো বৃদ্ধি নেই, কোনো মেয়াদোত্তীর্ণ নেই, কোনো লক-ইন নেই
+ - আনলিমিটেড কি, গ্র্যানুলার কি টুইক, টিম রোল, ফ্রন্ট-এন্ড প্রোটেকশন
+ - প্রতি মেথডে 20 কম্পিউট ইউনিট (CUs) ফ্ল্যাট রেট
- [পাবলিক এন্ডপয়েন্ট চেইনলিস্ট](https://drpc.org/chainlist)
- - [মূল্য ক্যালকুলেটর](https://drpc.org/pricing#calculator)
- - NodeCore: সম্পূর্ণ নিয়ন্ত্রণ চাওয়া সংস্থাগুলির জন্য ওপেন-সোর্স স্ট্যাক
+ - [প্রাইসিং ক্যালকুলেটর](https://drpc.org/pricing#calculator)
+ - NodeCore: সম্পূর্ণ নিয়ন্ত্রণ চাওয়া সংস্থাগুলোর জন্য ওপেন-সোর্স স্ট্যাক
- [**GetBlock**](https://getblock.io/)
- - [ডক্স](https://getblock.io/docs/get-started/authentication-with-api-key/)
- - বৈশিষ্ট্য
- - 40+ ব্লকচেইন নোডগুলিতে অ্যাক্সেস
- - 40হাজার বিনামূল্যে দৈনিক অনুরোধ
- - সীমাহীন সংখ্যক API কী
- - 1GB/সেকেন্ডে উচ্চ সংযোগ গতি
+ - [ডকুমেন্টেশন](https://getblock.io/docs/get-started/authentication-with-api-key/)
+ - ফিচারসমূহ
+ - 40+ ব্লকচেইন নোডে অ্যাক্সেস
+ - প্রতিদিন 40K ফ্রি রিকোয়েস্ট
+ - আনলিমিটেড সংখ্যক API কি
+ - 1GB/sec-এ উচ্চ কানেকশন স্পিড
- ট্রেস+আর্কাইভ
- - উন্নত বিশ্লেষণ
- - স্বয়ংক্রিয় আপডেট
- - প্রযুক্তিগত সহায়তা
+ - অ্যাডভান্সড অ্যানালিটিক্স
+ - অটোমেটেড আপডেট
+ - টেকনিক্যাল সাপোর্ট
- [**InfStones**](https://infstones.com/)
- - বৈশিষ্ট্য
- - বিনামূল্যে স্তর বিকল্প
- - প্রয়োজন অনুযায়ী স্কেল করুন
- - বিশ্লেষণ
+ - ফিচারসমূহ
+ - ফ্রি টিয়ার অপশন
+ - প্রয়োজন অনুযায়ী স্কেল করুন
+ - অ্যানালিটিক্স
- ড্যাশবোর্ড
- - অনন্য API এন্ডপয়েন্ট
- - ডেডিকেটেড সম্পূর্ণ নোড
- - ডেডিকেটেড স্থাপনার জন্য দ্রুত সিঙ্ক সময়
- - সরাসরি 24/7 সহায়তা
- - 50+ ব্লকচেইন নোডগুলিতে অ্যাক্সেস
+ - ইউনিক API এন্ডপয়েন্ট
+ - ডেডিকেটেড ফুল নোড
+ - ডেডিকেটেড ডিপ্লয়মেন্টের জন্য দ্রুত সিঙ্ক টাইম
+ - সরাসরি 24/7 সাপোর্ট
+ - 50+ ব্লকচেইন নোডে অ্যাক্সেস
- [**Infura**](https://infura.io/)
- - [ডক্স](https://infura.io/docs)
- - বৈশিষ্ট্য
- - বিনামূল্যে স্তর বিকল্প
- - প্রয়োজন অনুযায়ী স্কেল করুন
- - অর্থপ্রদত্ত আর্কাইভাল ডেটা
- - সরাসরি সহায়তা
+ - [ডকুমেন্টেশন](https://infura.io/docs)
+ - ফিচারসমূহ
+ - ফ্রি টিয়ার অপশন
+ - প্রয়োজন অনুযায়ী স্কেল করুন
+ - পেইড আর্কাইভাল ডেটা
+ - সরাসরি সাপোর্ট
- ড্যাশবোর্ড
- [**Kaleido**](https://kaleido.io/)
- - [ডক্স](https://docs.kaleido.io/)
- - বৈশিষ্ট্য
- - বিনামূল্যে স্টার্টার স্তর
- - এক-ক্লিকে ইথেরিয়াম নোড স্থাপন
- - কাস্টমাইজযোগ্য ক্লায়েন্ট এবং অ্যালগরিদম (Geth, Quorum এবং Besu || PoA, IBFT এবং Raft)
- - 500+ প্রশাসনিক এবং পরিষেবা API
- - ইথেরিয়াম লেনদেন জমা দেওয়ার জন্য রেস্টফুল ইন্টারফেস (Apache Kafka সমর্থিত)
- - ইভেন্ট বিতরণের জন্য আউটবাউন্ড স্ট্রিম (Apache Kafka সমর্থিত)
- - "অফচেইন" এবং আনুষঙ্গিক পরিষেবাগুলির গভীর সংগ্রহ (যেমন, দ্বিপাক্ষিক এনক্রিপ্ট করা মেসেজিং পরিবহন)
- - গভর্নেন্স এবং ভূমিকা-ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ সহ সহজবোধ্য নেটওয়ার্ক অনবোর্ডিং
- - প্রশাসক এবং শেষ ব্যবহারকারী উভয়ের জন্য পরিশীলিত ব্যবহারকারী ব্যবস্থাপনা
- - অত্যন্ত স্কেলযোগ্য, স্থিতিস্থাপক, এন্টারপ্রাইজ-গ্রেড পরিকাঠামো
- - ক্লাউড HSM প্রাইভেট কী ব্যবস্থাপনা
- - ইথেরিয়াম মেইননেট টিথারিং
- - ISO 27k এবং SOC 2, টাইপ 2 সার্টিফিকেশন
- - ডাইনামিক রানটাইম কনফিগারেশন (যেমন, ক্লাউড ইন্টিগ্রেশন যোগ করা, নোড ইনগ্রেস পরিবর্তন করা, ইত্যাদি)
- - মাল্টি-ক্লাউড, মাল্টি-রিজিওন এবং হাইব্রিড ডেপ্লয়মেন্ট অর্কেস্ট্রেশনের জন্য সমর্থন
- - সাধারণ ঘন্টায় SaaS-ভিত্তিক মূল্য নির্ধারণ
- - SLA এবং 24x7 সহায়তা
+ - [ডকুমেন্টেশন](https://docs.kaleido.io/)
+ - ফিচারসমূহ
+ - ফ্রি স্টার্টার টিয়ার
+ - ওয়ান-ক্লিক ইথিরিয়াম নোড ডিপ্লয়মেন্ট
+ - কাস্টমাইজেবল ক্লায়েন্ট এবং অ্যালগরিদম (Geth, Quorum এবং Besu || PoA, IBFT এবং Raft)
+ - 500+ অ্যাডমিনিস্ট্রেটিভ এবং সার্ভিস API
+ - ইথিরিয়াম লেনদেন সাবমিশনের জন্য RESTful ইন্টারফেস (Apache Kafka ব্যাকড)
+ - ইভেন্ট ডেলিভারির জন্য আউটবাউন্ড স্ট্রিম (Apache Kafka ব্যাকড)
+ - "অফচেইন" এবং আনুষঙ্গিক সার্ভিসের গভীর সংগ্রহ (যেমন, দ্বিপাক্ষিক এনক্রিপ্টেড মেসেজিং ট্রান্সপোর্ট)
+ - গভর্নেন্স এবং রোল-বেসড অ্যাক্সেস কন্ট্রোল সহ সহজবোধ্য নেটওয়ার্ক অনবোর্ডিং
+ - অ্যাডমিনিস্ট্রেটর এবং এন্ড-ইউজার উভয়ের জন্য অত্যাধুনিক ইউজার ম্যানেজমেন্ট
+ - অত্যন্ত স্কেলেবল, স্থিতিস্থাপক, এন্টারপ্রাইজ-গ্রেড ইনফ্রাস্ট্রাকচার
+ - ক্লাউড HSM প্রাইভেট কি ম্যানেজমেন্ট
+ - ইথিরিয়াম মেইননেট টিথারিং
+ - ISO 27k এবং SOC 2, Type 2 সার্টিফিকেশন
+ - ডায়নামিক রানটাইম কনফিগারেশন (যেমন, ক্লাউড ইন্টিগ্রেশন যোগ করা, নোড ইনগ্রেস পরিবর্তন করা ইত্যাদি)
+ - মাল্টি-ক্লাউড, মাল্টি-রিজিয়ন এবং হাইব্রিড ডিপ্লয়মেন্ট অর্কেস্ট্রেশনের জন্য সাপোর্ট
+ - সহজ প্রতি ঘণ্টা SaaS-ভিত্তিক প্রাইসিং
+ - SLA এবং 24x7 সাপোর্ট
- [**Lava Network**](https://www.lavanet.xyz/)
- - [ডক্স](https://docs.lavanet.xyz/)
- - বৈশিষ্ট্য
- - বিনামূল্যে টেস্টনেট ব্যবহার
- - উচ্চ আপটাইমের জন্য বিকেন্দ্রীভূত রিডানডেন্সি
+ - [ডকুমেন্টেশন](https://docs.lavanet.xyz/)
+ - ফিচারসমূহ
+ - ফ্রি টেস্টনেট ব্যবহার
+ - উচ্চ আপটাইমের জন্য ডিসেন্ট্রালাইজড রিডানডেন্সি
- ওপেন-সোর্স
- - সম্পূর্ণ বিকেন্দ্রীভূত SDK
+ - সম্পূর্ণ ডিসেন্ট্রালাইজড SDK
- Ethers.js ইন্টিগ্রেশন
- - স্বজ্ঞাত প্রকল্প ব্যবস্থাপনা ইন্টারফেস
- - কনসেন্সাস-ভিত্তিক ডেটা অখণ্ডতা
- - মাল্টি-চেইন সমর্থন
+ - ইন্টুইটিভ প্রজেক্ট ম্যানেজমেন্ট ইন্টারফেস
+ - কনসেন্সাস-ভিত্তিক ডেটা ইন্টিগ্রিটি
+ - মাল্টি-চেইন সাপোর্ট
- [**Moralis**](https://moralis.io/)
- - [ডক্স](https://docs.moralis.io/)
- - বৈশিষ্ট্য
- - বিনামূল্যে শেয়ার্ড নোড
- - বিনামূল্যে শেয়ার্ড আর্কাইভ নোড
- - গোপনীয়তা কেন্দ্রিক (নো লগ নীতি)
- - ক্রস চেইন সমর্থন
- - প্রয়োজন অনুযায়ী স্কেল করুন
+ - [ডকুমেন্টেশন](https://docs.moralis.io/)
+ - ফিচারসমূহ
+ - ফ্রি শেয়ার্ড নোড
+ - ফ্রি শেয়ার্ড আর্কাইভ নোড
+ - প্রাইভেসি ফোকাসড (নো লগ পলিসি)
+ - ক্রস চেইন সাপোর্ট
+ - প্রয়োজন অনুযায়ী স্কেল করুন
- ড্যাশবোর্ড
- - অনন্য ইথেরিয়াম SDK
- - অনন্য API এন্ডপয়েন্ট
- - সরাসরি, প্রযুক্তিগত সহায়তা
+ - ইউনিক ইথিরিয়াম SDK
+ - ইউনিক API এন্ডপয়েন্ট
+ - সরাসরি, টেকনিক্যাল সাপোর্ট
- [**NodeReal MegaNode**](https://nodereal.io/)
- - [ডক্স](https://docs.nodereal.io/docs/introduction)
- - বৈশিষ্ট্য
- - নির্ভরযোগ্য, দ্রুত এবং স্কেলযোগ্য RPC API পরিষেবা
- - web3 ডেভেলপারদের জন্য উন্নত API
- - মাল্টি-চেইন সমর্থন
+ - [ডকুমেন্টেশন](https://docs.nodereal.io/docs/introduction)
+ - ফিচারসমূহ
+ - নির্ভরযোগ্য, দ্রুত এবং স্কেলেবল RPC API সার্ভিস
+ - ওয়েব3 ডেভেলপারদের জন্য উন্নত API
+ - মাল্টি-চেইন সাপোর্ট
- বিনামূল্যে শুরু করুন
- [**NOWNodes**](https://nownodes.io/)
- - বৈশিষ্ট্য
- - 50+ ব্লকচেইন নোডগুলিতে অ্যাক্সেস
- - বিনামূল্যে API কী
+ - ফিচারসমূহ
+ - 50+ ব্লকচেইন নোডে অ্যাক্সেস
+ - ফ্রি API কি
- ব্লক এক্সপ্লোরার
- - API প্রতিক্রিয়া সময় ⩽ 1 সেকেন্ড
- - 24/7 সহায়তা দল
- - ব্যক্তিগত অ্যাকাউন্ট ম্যানেজার
+ - API রেসপন্স টাইম ⩽ 1 সেকেন্ড
+ - 24/7 সাপোর্ট টিম
+ - পার্সোনাল অ্যাকাউন্ট ম্যানেজার
- শেয়ার্ড, আর্কাইভ, ব্যাকআপ এবং ডেডিকেটেড নোড
- [**Pocket Network**](https://www.pokt.network/)
- - [ডক্স](https://docs.pokt.network/)
- - বৈশিষ্ট্য
- - বিকেন্দ্রীভূত RPC প্রোটোকল এবং মার্কেটপ্লেস
- - প্রতিদিন 1M অনুরোধ বিনামূল্যে স্তর (প্রতি এন্ডপয়েন্টে, সর্বোচ্চ 2)
- - প্রি-স্টেক+ প্রোগ্রাম (যদি আপনার প্রতিদিন 1M এর বেশি অনুরোধের প্রয়োজন হয়)
- - 15+ ব্লকচেইন সমর্থিত
- - 6400+ নোড অ্যাপ্লিকেশন পরিবেশন করার জন্য POKT আয় করছে
- - আর্কাইভাল নোড, ট্রেসিং সহ আর্কাইভাল নোড, এবং টেস্টনেট নোড সমর্থন
- - ইথেরিয়াম মেইননেট নোড ক্লায়েন্ট বৈচিত্র্য
- - ব্যর্থতার কোনো একক পয়েন্ট নেই
+ - [ডকুমেন্টেশন](https://docs.pokt.network/)
+ - ফিচারসমূহ
+ - ডিসেন্ট্রালাইজড RPC প্রোটোকল এবং মার্কেটপ্লেস
+ - প্রতিদিন 1M রিকোয়েস্ট ফ্রি টিয়ার (প্রতি এন্ডপয়েন্ট, সর্বোচ্চ 2টি)
+ - প্রি-স্টেক+ প্রোগ্রাম (যদি আপনার প্রতিদিন 1M এর বেশি রিকোয়েস্টের প্রয়োজন হয়)
+ - 15+ ব্লকচেইন সাপোর্টেড
+ - অ্যাপ্লিকেশন সার্ভ করার জন্য 6400+ নোড POKT উপার্জন করছে
+ - আর্কাইভাল নোড, ট্রেসিং সহ আর্কাইভাল নোড এবং টেস্টনেট নোড সাপোর্ট
+ - ইথিরিয়াম মেইননেট নোড ক্লায়েন্ট ডাইভার্সিটি
+ - কোনো সিঙ্গেল পয়েন্ট অফ ফেইলিওর নেই
- জিরো ডাউনটাইম
- - সাশ্রয়ী নিকট-শূন্য টোকেনমিক্স (নেটওয়ার্ক ব্যান্ডউইথের জন্য একবার POKT স্টেক করুন)
- - কোনো মাসিক খরচ নেই, আপনার পরিকাঠামোকে একটি সম্পদে পরিণত করুন
- - প্রোটোকলের মধ্যে লোড-ব্যালেন্সিং অন্তর্নির্মিত
- - প্রয়োজন অনুসারে প্রতিদিনের অনুরোধ এবং প্রতি ঘন্টায় নোডের সংখ্যা অসীমভাবে স্কেল করুন
- - সবচেয়ে ব্যক্তিগত, সেন্সরশিপ-প্রতিরোধী বিকল্প
- - হ্যান্ডস-অন ডেভেলপার সহায়তা
- - [Pocket Portal](https://bit.ly/ETHorg_POKTportal) ড্যাশবোর্ড এবং বিশ্লেষণ
+ - সাশ্রয়ী নিয়ার-জিরো টোকেনোমিক্স (নেটওয়ার্ক ব্যান্ডউইথের জন্য একবার POKT স্টেক করুন)
+ - কোনো মাসিক সাঙ্ক কস্ট নেই, আপনার ইনফ্রাস্ট্রাকচারকে সম্পদে পরিণত করুন
+ - প্রোটোকলে বিল্ট-ইন লোড-ব্যালেন্সিং
+ - আপনার প্রয়োজন অনুযায়ী প্রতিদিন রিকোয়েস্টের সংখ্যা এবং প্রতি ঘণ্টায় নোড অসীমভাবে স্কেল করুন
+ - সবচেয়ে প্রাইভেট, সেন্সরশিপ-প্রতিরোধী অপশন
+ - হ্যান্ডস-অন ডেভেলপার সাপোর্ট
+ - [Pocket Portal](https://bit.ly/ETHorg_POKTportal) ড্যাশবোর্ড এবং অ্যানালিটিক্স
- [**QuickNode**](https://www.quicknode.com)
- - [ডক্স](https://www.quicknode.com/docs/)
- - বৈশিষ্ট্য
- - 24/7 প্রযুক্তিগত সহায়তা এবং ডেভ ডিসকর্ড সম্প্রদায়
- - জিও-ব্যালেন্সড, মাল্টি ক্লাউড/মেটাল, লো-লেটেন্সি নেটওয়ার্ক
- - মাল্টিচেইন সমর্থন (Optimism, Arbitrum, Polygon + 11 অন্যান্য)
+ - [ডকুমেন্টেশন](https://www.quicknode.com/docs/)
+ - ফিচারসমূহ
+ - 24/7 টেকনিক্যাল সাপোর্ট এবং ডেভ ডিসকর্ড কমিউনিটি
+ - জিও-ব্যালেন্সড, মাল্টি ক্লাউড/মেটাল, লো-ল্যাটেন্সি নেটওয়ার্ক
+ - মাল্টিচেইন সাপোর্ট (Optimism, Arbitrum, Polygon + আরও 11টি)
- গতি এবং স্থিতিশীলতার জন্য মিডল-লেয়ার (কল রাউটিং, ক্যাশে, ইনডেক্সিং)
- - ওয়েবহুকসের মাধ্যমে স্মার্ট-কন্ট্রাক্ট মনিটরিং
- - স্বজ্ঞাত ড্যাশবোর্ড, বিশ্লেষণ স্যুট, RPC কম্পোজার
- - উন্নত নিরাপত্তা বৈশিষ্ট্য (JWT, মাস্কিং, হোয়াইটলিস্টিং)
- - NFT ডেটা এবং বিশ্লেষণ API
+ - ওয়েবহুকের মাধ্যমে স্মার্ট-কন্ট্রাক্ট মনিটরিং
+ - ইন্টুইটিভ ড্যাশবোর্ড, অ্যানালিটিক্স স্যুট, RPC কম্পোজার
+ - অ্যাডভান্সড সিকিউরিটি ফিচার (JWT, মাস্কিং, হোয়াইটলিস্টিং)
+ - NFT ডেটা এবং অ্যানালিটিক্স API
- [SOC2 সার্টিফাইড](https://www.quicknode.com/security)
- - ডেভেলপারদের থেকে এন্টারপ্রাইজের জন্য উপযুক্ত
+ - ডেভেলপার থেকে এন্টারপ্রাইজ পর্যন্ত উপযুক্ত
- [**Rivet**](https://rivet.cloud/)
- - [ডক্স](https://rivet.readthedocs.io/en/latest/)
- - বৈশিষ্ট্য
- - বিনামূল্যে স্তর বিকল্প
- - প্রয়োজন অনুযায়ী স্কেল করুন
+ - [ডকুমেন্টেশন](https://rivet.readthedocs.io/en/latest/)
+ - ফিচারসমূহ
+ - ফ্রি টিয়ার অপশন
+ - প্রয়োজন অনুযায়ী স্কেল করুন
- [**SenseiNode**](https://senseinode.com)
- - [ডক্স](https://docs.senseinode.com/)
- - বৈশিষ্ট্য
+ - [ডকুমেন্টেশন](https://docs.senseinode.com/)
+ - ফিচারসমূহ
- ডেডিকেটেড এবং শেয়ার্ড নোড
- ড্যাশবোর্ড
- - ল্যাটিন আমেরিকার বিভিন্ন স্থানে একাধিক হোস্টিং প্রদানকারীর উপর AWS থেকে হোস্টিং করা
+ - ল্যাটিন আমেরিকার বিভিন্ন লোকেশনে একাধিক হোস্টিং প্রোভাইডারে AWS-এর বাইরে হোস্টিং
- Prysm এবং Lighthouse ক্লায়েন্ট
- [**SettleMint**](https://console.settlemint.com/)
- - [ডক্স](https://docs.settlemint.com/)
- - বৈশিষ্ট্য
- - বিনামূল্যে ট্রায়াল
- - প্রয়োজন অনুযায়ী স্কেল করুন
- - GraphQL সমর্থন
+ - [ডকুমেন্টেশন](https://docs.settlemint.com/)
+ - ফিচারসমূহ
+ - ফ্রি ট্রায়াল
+ - প্রয়োজন অনুযায়ী স্কেল করুন
+ - GraphQL সাপোর্ট
- RPC এবং WSS এন্ডপয়েন্ট
- - ডেডিকেটেড সম্পূর্ণ নোড
- - আপনার ক্লাউড আনুন
- - বিশ্লেষণ টুলস
+ - ডেডিকেটেড ফুল নোড
+ - আপনার ক্লাউড নিয়ে আসুন
+ - অ্যানালিটিক্স টুলস
- ড্যাশবোর্ড
- - ঘন্টা প্রতি অর্থপ্রদান মূল্য
- - সরাসরি সহায়তা
+ - প্রতি ঘণ্টা অনুযায়ী প্রাইসিং
+ - সরাসরি সাপোর্ট
- [**Tenderly**](https://tenderly.co/web3-gateway)
- - [ডক্স](https://docs.tenderly.co/web3-gateway/web3-gateway)
- - বৈশিষ্ট্য
- - বিনামূল্যে স্তর, প্রতি মাসে 25 মিলিয়ন Tenderly ইউনিট সহ
- - ঐতিহাসিক ডেটাতে বিনামূল্যে অ্যাক্সেস
- - 8x পর্যন্ত দ্রুত রিড-হেভি ওয়ার্কলোড
- - 100% সামঞ্জস্যপূর্ণ রিড অ্যাক্সেস
+ - [ডকুমেন্টেশন](https://docs.tenderly.co/web3-gateway/web3-gateway)
+ - ফিচারসমূহ
+ - প্রতি মাসে 25 মিলিয়ন Tenderly ইউনিট সহ ফ্রি টিয়ার
+ - ঐতিহাসিক ডেটাতে ফ্রি অ্যাক্সেস
+ - 8 গুণ পর্যন্ত দ্রুত রিড-হেভি ওয়ার্কলোড
+ - 100% কনসিস্টেন্ট রিড অ্যাক্সেস
- JSON-RPC এন্ডপয়েন্ট
- UI-ভিত্তিক RPC রিকোয়েস্ট বিল্ডার এবং রিকোয়েস্ট প্রিভিউ
- - Tenderly-এর ডেভেলপমেন্ট, ডিবাগিং এবং টেস্টিং টুলসের সাথে শক্তভাবে সমন্বিত
+ - Tenderly-এর ডেভেলপমেন্ট, ডিবাগিং এবং টেস্টিং টুলগুলোর সাথে শক্তভাবে ইন্টিগ্রেটেড
- লেনদেন সিমুলেশন
- - ব্যবহারের বিশ্লেষণ এবং ফিল্টারিং
- - সহজ অ্যাক্সেস কী ব্যবস্থাপনা
- - চ্যাট, ইমেল এবং ডিসকর্ডের মাধ্যমে ডেডিকেটেড ইঞ্জিনিয়ারিং সহায়তা
+ - ইউসেজ অ্যানালিটিক্স এবং ফিল্টারিং
+ - সহজ অ্যাক্সেস কি ম্যানেজমেন্ট
+ - চ্যাট, ইমেইল এবং ডিসকর্ডের মাধ্যমে ডেডিকেটেড ইঞ্জিনিয়ারিং সাপোর্ট
- [**Tokenview**](https://services.tokenview.io/)
- - [ডক্স](https://services.tokenview.io/docs?type=nodeService)
- - বৈশিষ্ট্য
- - 24/7 প্রযুক্তিগত সহায়তা এবং ডেভ টেলিগ্রাম সম্প্রদায়
- - মাল্টিচেইন সমর্থন (Bitcoin, Ethereum, Tron, BNB Smart Chain, Ethereum Classic)
- - RPC এবং WSS উভয় এন্ডপয়েন্টই ব্যবহারের জন্য খোলা
- - আর্কাইভ ডেটা API-তে সীমাহীন অ্যাক্সেস
+ - [ডকুমেন্টেশন](https://services.tokenview.io/docs?type=nodeService)
+ - ফিচারসমূহ
+ - 24/7 টেকনিক্যাল সাপোর্ট এবং ডেভ টেলিগ্রাম কমিউনিটি
+ - মাল্টিচেইন সাপোর্ট (Bitcoin, Ethereum, Tron, BNB Smart Chain, Ethereum Classic)
+ - RPC এবং WSS উভয় এন্ডপয়েন্ট ব্যবহারের জন্য উন্মুক্ত
+ - আর্কাইভ ডেটা API-তে আনলিমিটেড অ্যাক্সেস
- রিকোয়েস্ট এক্সপ্লোরার এবং মেমপুল ওয়াচার সহ ড্যাশবোর্ড
- NFT ডেটা API এবং ওয়েবহুক নোটিফাই
- - ক্রিপ্টোতে অর্থপ্রদান করুন
- - অতিরিক্ত আচরণের প্রয়োজনীয়তার জন্য বাহ্যিক সমর্থন
+ - ক্রিপটোতে পেমেন্ট করুন
+ - অতিরিক্ত বিহেভিয়ার রিকোয়ারমেন্টের জন্য এক্সটার্নাল সাপোর্ট
- [**Watchdata**](https://watchdata.io/)
- - [ডক্স](https://docs.watchdata.io/)
- - বৈশিষ্ট্য
+ - [ডকুমেন্টেশন](https://docs.watchdata.io/)
+ - ফিচারসমূহ
- ডেটা নির্ভরযোগ্যতা
- - কোনো ডাউনটাইম ছাড়াই নিরবচ্ছিন্ন সংযোগ
+ - কোনো ডাউনটাইম ছাড়াই নিরবচ্ছিন্ন কানেকশন
- প্রসেস অটোমেশন
- - বিনামূল্যে ট্যারিফ
- - উচ্চ সীমা যা যেকোনো ব্যবহারকারীর জন্য উপযুক্ত
- - বিভিন্ন নোডের জন্য সমর্থন
+ - ফ্রি ট্যারিফ
+ - যেকোনো ব্যবহারকারীর জন্য উপযুক্ত উচ্চ লিমিট
+ - বিভিন্ন নোডের জন্য সাপোর্ট
- রিসোর্স স্কেলিং
- - উচ্চ প্রক্রিয়াকরণ গতি
+ - উচ্চ প্রসেসিং স্পিড
- [**ZMOK**](https://zmok.io/)
- - [ডক্স](https://docs.zmok.io/)
- - বৈশিষ্ট্য
- - একটি পরিষেবা হিসাবে ফ্রন্ট-রানিং
- - অনুসন্ধান/ফিল্টারিং পদ্ধতি সহ বিশ্বব্যাপী লেনদেন মেমপুল
- - লেনদেন পাঠানোর জন্য সীমাহীন TX ফি এবং অসীম গ্যাস
- - নতুন ব্লকের দ্রুততম প্রাপ্তি এবং ব্লকচেইন পড়া
- - প্রতি API কলে সেরা মূল্যের গ্যারান্টি
+ - [ডকুমেন্টেশন](https://docs.zmok.io/)
+ - ফিচারসমূহ
+ - সার্ভিস হিসেবে ফ্রন্ট-রানিং
+ - সার্চ/ফিল্টারিং মেথড সহ গ্লোবাল লেনদেন মেমপুল
+ - লেনদেন পাঠানোর জন্য আনলিমিটেড TX ফি এবং অসীম গ্যাস
+ - নতুন ব্লক পাওয়া এবং ব্লকচেইন পড়ার দ্রুততম উপায়
+ - প্রতি API কলে সেরা দামের গ্যারান্টি
- [**Zeeve**](https://www.zeeve.io/)
- - [ডক্স](https://www.zeeve.io/docs/)
- - বৈশিষ্ট্য
- - এন্টারপ্রাইজ-গ্রেড নো-কোড অটোমেশন প্ল্যাটফর্ম যা ব্লকচেইন নোড এবং নেটওয়ার্কগুলির স্থাপন, পর্যবেক্ষণ এবং ব্যবস্থাপনা প্রদান করে
- - 30+ সমর্থিত প্রোটোকল এবং ইন্টিগ্রেশন, এবং আরও যোগ করা হচ্ছে
- - বাস্তব-বিশ্ব ব্যবহারের ক্ষেত্রে বিকেন্দ্রীভূত স্টোরেজ, বিকেন্দ্রীভূত পরিচয় এবং ব্লকচেইন লেজার ডেটা API-এর মতো মূল্য সংযোজিত web3 পরিকাঠামো পরিষেবা
- - 24/7 সহায়তা এবং সক্রিয় পর্যবেক্ষণ সর্বদা নোডগুলির স্বাস্থ্য নিশ্চিত করে।
- - RPC এন্ডপয়েন্টগুলি API-তে প্রমাণীকৃত অ্যাক্সেস, স্বজ্ঞাত ড্যাশবোর্ড এবং বিশ্লেষণ সহ ঝামেলা-মুক্ত ব্যবস্থাপনা অফার করে।
- - পরিচালিত ক্লাউড এবং আপনার নিজস্ব ক্লাউড উভয় বিকল্পই প্রদান করে এবং AWS, Azure, Google Cloud, Digital Ocean এবং অন-প্রেমিসের মতো সমস্ত প্রধান ক্লাউড প্রদানকারীকে সমর্থন করে।
- - আমরা প্রতিবার আপনার ব্যবহারকারীর নিকটতম নোডে পৌঁছানোর জন্য বুদ্ধিমান রাউটিং ব্যবহার করি
+ - [ডকুমেন্টেশন](https://www.zeeve.io/docs/)
+ - ফিচারসমূহ
+ - এন্টারপ্রাইজ-গ্রেড নো-কোড অটোমেশন প্ল্যাটফর্ম যা ব্লকচেইন নোড এবং নেটওয়ার্কগুলোর ডিপ্লয়মেন্ট, মনিটরিং এবং ম্যানেজমেন্ট প্রদান করে
+ - 30+ সাপোর্টেড প্রোটোকল এবং ইন্টিগ্রেশন, এবং আরও যোগ করা হচ্ছে
+ - রিয়েল-ওয়ার্ল্ড ইউজ কেসের জন্য ডিসেন্ট্রালাইজড স্টোরেজ, ডিসেন্ট্রালাইজড আইডেন্টিটি এবং ব্লকচেইন লেজার ডেটা API-এর মতো ভ্যালু অ্যাডেড ওয়েব3 ইনফ্রাস্ট্রাকচার সার্ভিস
+ - 24/7 সাপোর্ট এবং প্রোঅ্যাক্টিভ মনিটরিং সব সময় নোডগুলোর স্বাস্থ্য নিশ্চিত করে।
+ - RPC এন্ডপয়েন্টগুলো API-তে অথেনটিকেটেড অ্যাক্সেস, ইন্টুইটিভ ড্যাশবোর্ড এবং অ্যানালিটিক্স সহ ঝামেলামুক্ত ম্যানেজমেন্ট অফার করে।
+ - ম্যানেজড ক্লাউড এবং আপনার নিজস্ব ক্লাউড নিয়ে আসার অপশন উভয়ই প্রদান করে এবং AWS, Azure, Google Cloud, Digital Ocean এবং অন-প্রিমাইসের মতো সমস্ত প্রধান ক্লাউড প্রোভাইডারকে সাপোর্ট করে।
+ - আমরা প্রতিবার আপনার ব্যবহারকারীর নিকটতম নোডে হিট করার জন্য ইন্টেলিজেন্ট রাউটিং ব্যবহার করি
-## আরও পড়ুন {#further-reading}
-- [ইথেরিয়াম নোড পরিষেবাগুলির তালিকা](https://ethereumnodes.com/)
+## আরও পড়ুন {#further-reading}
-## সম্পর্কিত বিষয় {#related-topics}
+- [ইথিরিয়াম নোড সার্ভিসের তালিকা](https://ethereumnodes.com/)
-- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
+## সম্পর্কিত টপিকগুলো {#related-topics}
-## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
+- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
-- [Alchemy ব্যবহার করে ইথেরিয়াম ডেভেলপমেন্ট শুরু করা](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/)
-- [web3 এবং Alchemy ব্যবহার করে লেনদেন পাঠানোর নির্দেশিকা](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
+## সম্পর্কিত টিউটোরিয়ালগুলো {#related-tutorials}
+
+- [Alchemy ব্যবহার করে ইথিরিয়াম ডেভেলপমেন্ট শুরু করা](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/)
+- [ওয়েব3 এবং Alchemy ব্যবহার করে লেনদেন পাঠানোর গাইড](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/bn/developers/docs/nodes-and-clients/run-a-node/index.md
index 2c63ae1dc63..fb3b4e1070e 100644
--- a/public/content/translations/bn/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/public/content/translations/bn/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -1,184 +1,184 @@
---
-title: "আপনার নিজের ইথেরিয়াম নোড স্পিন আপ করুন"
-description: "একটি ইথেরিয়াম ক্লায়েন্টের নিজস্ব ইনস্ট্যান্স চালানোর জন্য একটি সাধারণ ভূমিকা।"
+title: আপনার নিজস্ব ইথিরিয়াম নোড চালু করুন
+description: ইথিরিয়াম ক্লায়েন্টের নিজস্ব ইনস্ট্যান্স চালানোর সাধারণ পরিচিতি।
lang: bn
sidebarDepth: 2
---
-আপনার নিজের নোড চালানো আপনাকে বিভিন্ন সুবিধা প্রদান করে, নতুন সম্ভাবনার দ্বার উন্মোচন করে, এবং ইকোসিস্টেমকে সমর্থন করতে সাহায্য করে। এই পৃষ্ঠাটি আপনাকে আপনার নিজের নোড স্পিন আপ করার এবং ইথেরিয়াম লেনদেন যাচাই করার ক্ষেত্রে অংশ নিতে গাইড করবে।
+আপনার নিজস্ব নোড চালানো আপনাকে বিভিন্ন সুবিধা প্রদান করে, নতুন সম্ভাবনা উন্মোচন করে এবং ইকোসিস্টেমকে সমর্থন করতে সাহায্য করে। এই পেজটি আপনাকে আপনার নিজস্ব নোড চালু করতে এবং [Ethereum](/) লেনদেন যাচাইকরণে অংশ নিতে গাইড করবে।
-মনে রাখবেন যে [দ্য মার্জ](/roadmap/merge)-এর পরে, একটি ইথেরিয়াম নোড চালানোর জন্য দুটি ক্লায়েন্ট প্রয়োজন; একটি **এক্সিকিউশন লেয়ার (EL)** ক্লায়েন্ট এবং একটি **কনসেন্সাস লেয়ার (CL)** ক্লায়েন্ট। এই পৃষ্ঠাটি দেখাবে কিভাবে একটি ইথেরিয়াম নোড চালানোর জন্য এই দুটি ক্লায়েন্ট ইনস্টল, কনফিগার এবং সংযোগ করতে হয়।
+মনে রাখবেন যে [The Merge](/roadmap/merge)-এর পরে, একটি ইথিরিয়াম নোড চালানোর জন্য দুটি ক্লায়েন্ট প্রয়োজন; একটি **এক্সিকিউশন লেয়ার (EL)** ক্লায়েন্ট এবং একটি **কনসেন্সাস লেয়ার (CL)** ক্লায়েন্ট। এই পেজটি দেখাবে কীভাবে একটি ইথিরিয়াম নোড চালানোর জন্য এই দুটি ক্লায়েন্ট ইনস্টল, কনফিগার এবং সংযুক্ত করতে হয়।
## পূর্বশর্ত {#prerequisites}
-একটি ইথেরিয়াম নোড কী এবং কেন আপনি একটি ক্লায়েন্ট চালাতে চাইতে পারেন তা আপনার বোঝা উচিত। এটি [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)-এ আলোচনা করা হয়েছে।
+একটি ইথিরিয়াম নোড কী এবং কেন আপনি একটি ক্লায়েন্ট চালাতে চাইতে পারেন তা আপনার বোঝা উচিত। এটি [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)-এ কভার করা হয়েছে।
-আপনি যদি একটি নোড চালানোর বিষয়ে নতুন হন, অথবা একটি কম প্রযুক্তিগত পথের সন্ধান করছেন, আমরা প্রথমে [একটি ইথেরিয়াম নোড চালানো](/run-a-node)-এর উপর আমাদের ব্যবহারকারী-বান্ধব ভূমিকাটি দেখার সুপারিশ করি।
+আপনি যদি নোড চালানোর বিষয়ে নতুন হন, বা কম প্রযুক্তিগত পথ খুঁজছেন, তবে আমরা প্রথমে [একটি ইথিরিয়াম নোড চালানো](/run-a-node) সম্পর্কে আমাদের ব্যবহারকারী-বান্ধব পরিচিতিটি দেখার পরামর্শ দিই।
-## একটি পদ্ধতি বেছে নেওয়া {#choosing-approach}
+## একটি পদ্ধতি বেছে নেওয়া {#choosing-approach}
-আপনার নোড স্পিন আপ করার প্রথম ধাপ হল আপনার পদ্ধতি বেছে নেওয়া। প্রয়োজনীয়তা এবং বিভিন্ন সম্ভাবনার উপর ভিত্তি করে, আপনাকে অবশ্যই ক্লায়েন্ট ইমপ্লিমেন্টেশন (এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট উভয়ই), পরিবেশ (হার্ডওয়্যার, সিস্টেম) এবং ক্লায়েন্ট সেটিংসের জন্য প্যারামিটার নির্বাচন করতে হবে।
+আপনার নোড চালু করার প্রথম ধাপ হলো আপনার পদ্ধতি বেছে নেওয়া। প্রয়োজনীয়তা এবং বিভিন্ন সম্ভাবনার উপর ভিত্তি করে, আপনাকে অবশ্যই ক্লায়েন্ট ইমপ্লিমেন্টেশন (এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট উভয়ের), পরিবেশ (হার্ডওয়্যার, সিস্টেম) এবং ক্লায়েন্ট সেটিংসের জন্য প্যারামিটার নির্বাচন করতে হবে।
-এই পৃষ্ঠাটি আপনাকে এই সিদ্ধান্তগুলির মাধ্যমে গাইড করবে এবং আপনার ইথেরিয়াম ইনস্ট্যান্স চালানোর জন্য সবচেয়ে উপযুক্ত উপায় খুঁজে পেতে সাহায্য করবে।
+এই পেজটি আপনাকে এই সিদ্ধান্তগুলোর মাধ্যমে গাইড করবে এবং আপনার ইথিরিয়াম ইনস্ট্যান্স চালানোর সবচেয়ে উপযুক্ত উপায় খুঁজে পেতে সাহায্য করবে।
-ক্লায়েন্ট ইমপ্লিমেন্টেশন থেকে বেছে নিতে, সমস্ত উপলব্ধ মেইননেট প্রস্তুত [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients), [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) দেখুন এবং [ক্লায়েন্ট ডাইভারসিটি](/developers/docs/nodes-and-clients/client-diversity) সম্পর্কে জানুন।
+ক্লায়েন্ট ইমপ্লিমেন্টেশন থেকে বেছে নিতে, উপলব্ধ সমস্ত মেইননেট প্রস্তুত [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients), [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) দেখুন এবং [ক্লায়েন্ট ডাইভার্সিটি](/developers/docs/nodes-and-clients/client-diversity) সম্পর্কে জানুন।
-ক্লায়েন্টদের [প্রয়োজনীয়তা](#requirements) বিবেচনা করে, সফটওয়্যারটি আপনার নিজের [হার্ডওয়্যারে নাকি ক্লাউডে](#local-vs-cloud) চালাবেন কিনা তা স্থির করুন।
+ক্লায়েন্টদের [প্রয়োজনীয়তা](#requirements) বিবেচনা করে, আপনার নিজস্ব [হার্ডওয়্যার বা ক্লাউডে](#local-vs-cloud) সফটওয়্যারটি চালাবেন কিনা তা সিদ্ধান্ত নিন।
-পরিবেশ প্রস্তুত করার পরে, নির্বাচিত ক্লায়েন্টগুলি হয় [শিক্ষানবিস-বান্ধব ইন্টারফেস](#automatized-setup) দিয়ে অথবা উন্নত বিকল্প সহ একটি টার্মিনাল ব্যবহার করে [ম্যানুয়ালি](#manual-setup) ইনস্টল করুন।
+পরিবেশ প্রস্তুত করার পরে, নির্বাচিত ক্লায়েন্টগুলো [নতুনদের জন্য উপযুক্ত ইন্টারফেস](#automatized-setup) দিয়ে বা উন্নত বিকল্পগুলোর সাথে একটি টার্মিনাল ব্যবহার করে [ম্যানুয়ালি](#manual-setup) ইনস্টল করুন।
-যখন নোডটি চলছে এবং সিঙ্ক হচ্ছে, তখন আপনি এটি [ব্যবহার করার](#using-the-node) জন্য প্রস্তুত, কিন্তু এর [রক্ষণাবেক্ষণের](#operating-the-node) দিকে নজর রাখতে ভুলবেন না।
+যখন নোডটি চলছে এবং সিঙ্ক হচ্ছে, তখন আপনি এটি [ব্যবহার করতে](#using-the-node) প্রস্তুত, তবে এর [রক্ষণাবেক্ষণের](#operating-the-node) দিকে নজর রাখতে ভুলবেন না।
-
+
-### পরিবেশ এবং হার্ডওয়্যার {#environment-and-hardware}
+### পরিবেশ এবং হার্ডওয়্যার {#environment-and-hardware}
-#### স্থানীয় বা ক্লাউড {#local-vs-cloud}
+#### লোকাল বা ক্লাউড {#local-vs-cloud}
-ইথেরিয়াম ক্লায়েন্টগুলি সাধারণ মানের কম্পিউটারে চলতে পারে এবং এর জন্য কোনো বিশেষ হার্ডওয়্যারের প্রয়োজন হয় না, যেমন উদাহরণস্বরূপ মাইনিং মেশিন। অতএব, আপনার প্রয়োজনের উপর ভিত্তি করে নোড স্থাপন করার জন্য আপনার কাছে বিভিন্ন বিকল্প রয়েছে।
-সহজ করার জন্য, আসুন একটি স্থানীয় ফিজিক্যাল মেশিন এবং একটি ক্লাউড সার্ভার উভয় ক্ষেত্রেই একটি নোড চালানোর কথা ভাবি:
+ইথিরিয়াম ক্লায়েন্টগুলো সাধারণ ব্যবহারকারীদের কম্পিউটারে চলতে সক্ষম এবং এর জন্য কোনো বিশেষ হার্ডওয়্যারের প্রয়োজন নেই, যেমন মাইনিং মেশিন। তাই, আপনার প্রয়োজন অনুযায়ী নোড ডিপ্লয় করার জন্য আপনার কাছে বিভিন্ন বিকল্প রয়েছে।
+সহজ করার জন্য, আসুন একটি লোকাল ফিজিক্যাল মেশিন এবং একটি ক্লাউড সার্ভার উভয়টিতে একটি নোড চালানোর কথা ভাবি:
- ক্লাউড
- - প্রদানকারীরা উচ্চ সার্ভার আপটাইম এবং স্ট্যাটিক পাবলিক আইপি ঠিকানা অফার করে
- - নিজের তৈরির চেয়ে একটি ডেডিকেটেড বা ভার্চুয়াল সার্ভার পাওয়া বেশি আরামদায়ক হতে পারে
- - বোঝাপড়াটি হল একটি তৃতীয় পক্ষকে - সার্ভার প্রদানকারীকে বিশ্বাস করা
- - সম্পূর্ণ নোডের জন্য প্রয়োজনীয় স্টোরেজ আকারের কারণে, একটি ভাড়া করা সার্ভারের দাম বেশি হতে পারে
-- নিজস্ব হার্ডওয়্যার
- - আরও বিশ্বাসহীন এবং সার্বভৌম পদ্ধতি
- - এককালীন বিনিয়োগ
- - পূর্ব-কনফিগার করা মেশিন কেনার একটি বিকল্প
- - আপনাকে শারীরিকভাবে মেশিন এবং নেটওয়ার্কিং প্রস্তুত করতে, রক্ষণাবেক্ষণ করতে এবং সম্ভাব্যভাবে সমস্যা সমাধান করতে হবে
+ - প্রোভাইডাররা উচ্চ সার্ভার আপটাইম এবং স্ট্যাটিক পাবলিক আইপি এডড্রেস অফার করে
+ - ডেডিকেটেড বা ভার্চুয়াল সার্ভার পাওয়া নিজের তৈরি করার চেয়ে বেশি আরামদায়ক হতে পারে
+ - ট্রেড অফ হলো একটি তৃতীয় পক্ষ - সার্ভার প্রোভাইডারের উপর বিশ্বাস করা
+ - ফুল নোডের জন্য প্রয়োজনীয় স্টোরেজ সাইজের কারণে, ভাড়া করা সার্ভারের দাম বেশি হতে পারে
+- নিজস্ব হার্ডওয়্যার
+ - আরও ট্রাস্টলেস এবং স্বাধীন পদ্ধতি
+ - এককালীন বিনিয়োগ
+ - প্রি-কনফিগার করা মেশিন কেনার একটি বিকল্প
+ - আপনাকে শারীরিকভাবে মেশিন এবং নেটওয়ার্কিং প্রস্তুত, রক্ষণাবেক্ষণ এবং সম্ভাব্য সমস্যা সমাধান করতে হবে
-উভয় বিকল্পেরই বিভিন্ন সুবিধা রয়েছে যা উপরে সংক্ষিপ্ত করা হয়েছে। আপনি যদি একটি ক্লাউড সমাধান খুঁজছেন, তাহলে অনেক ঐতিহ্যবাহী ক্লাউড কম্পিউটিং প্রদানকারী ছাড়াও, নোড স্থাপনের উপর কেন্দ্র করে এমন পরিষেবাও রয়েছে। হোস্ট করা নোডগুলির আরও বিকল্পের জন্য [পরিষেবা হিসাবে নোড](/developers/docs/nodes-and-clients/nodes-as-a-service/) দেখুন।
+উভয় বিকল্পের বিভিন্ন সুবিধা উপরে সংক্ষেপে দেওয়া হয়েছে। আপনি যদি ক্লাউড সলিউশন খুঁজছেন, তবে অনেক ঐতিহ্যবাহী ক্লাউড কম্পিউটিং প্রোভাইডারের পাশাপাশি, নোড ডিপ্লয় করার উপর দৃষ্টি নিবদ্ধ করা পরিষেবাও রয়েছে। হোস্টেড নোডগুলোর আরও বিকল্পের জন্য [নোডস অ্যাজ আ সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service/) দেখুন।
-#### হার্ডওয়্যার {#hardware}
+#### হার্ডওয়্যার {#hardware}
-তবে, একটি সেন্সরশিপ-প্রতিরোধী, বিকেন্দ্রীভূত নেটওয়ার্কের ক্লাউড প্রদানকারীদের উপর নির্ভর করা উচিত নয়। পরিবর্তে, আপনার নিজের স্থানীয় হার্ডওয়্যারে আপনার নোড চালানো ইকোসিস্টেমের জন্য স্বাস্থ্যকর। [অনুমান](https://www.ethernodes.org/networkType/cl/Hosting) দেখায় যে নোডগুলির একটি বড় অংশ ক্লাউডে চলে, যা ব্যর্থতার একটি একক বিন্দু হয়ে উঠতে পারে।
+তবে, একটি সেন্সরশিপ-প্রতিরোধী, ডিসেন্ট্রালাইজড নেটওয়ার্কের ক্লাউড প্রোভাইডারদের উপর নির্ভর করা উচিত নয়। এর পরিবর্তে, আপনার নিজস্ব লোকাল হার্ডওয়্যারে আপনার নোড চালানো ইকোসিস্টেমের জন্য স্বাস্থ্যকর। [অনুমান](https://www.ethernodes.org/networkType/cl/Hosting) দেখায় যে নোডগুলোর একটি বড় অংশ ক্লাউডে চলে, যা ব্যর্থতার একটি একক বিন্দু (single point of failure) হয়ে উঠতে পারে।
-ইথেরিয়াম ক্লায়েন্ট আপনার কম্পিউটার, ল্যাপটপ, সার্ভার বা এমনকি একটি একক-বোর্ড কম্পিউটারেও চলতে পারে। যদিও আপনার ব্যক্তিগত কম্পিউটারে ক্লায়েন্ট চালানো সম্ভব, শুধুমাত্র আপনার নোডের জন্য একটি ডেডিকেটেড মেশিন থাকা এর কর্মক্ষমতা এবং নিরাপত্তা উল্লেখযোগ্যভাবে বাড়াতে পারে এবং আপনার প্রাথমিক কম্পিউটারের উপর প্রভাব কমিয়ে আনতে পারে।
+ইথিরিয়াম ক্লায়েন্টগুলো আপনার কম্পিউটার, ল্যাপটপ, সার্ভার বা এমনকি একটি সিঙ্গেল-বোর্ড কম্পিউটারেও চলতে পারে। যদিও আপনার ব্যক্তিগত কম্পিউটারে ক্লায়েন্ট চালানো সম্ভব, শুধুমাত্র আপনার নোডের জন্য একটি ডেডিকেটেড মেশিন থাকা এর পারফরম্যান্স এবং নিরাপত্তা উল্লেখযোগ্যভাবে বাড়াতে পারে এবং আপনার প্রাথমিক কম্পিউটারের উপর প্রভাব কমাতে পারে।
-আপনার নিজের হার্ডওয়্যার ব্যবহার করা খুব সহজ হতে পারে। আরও প্রযুক্তিগত ব্যক্তিদের জন্য অনেক সহজ বিকল্পের পাশাপাশি উন্নত সেটআপও রয়েছে। তাহলে আসুন আপনার মেশিনে ইথেরিয়াম ক্লায়েন্ট চালানোর জন্য প্রয়োজনীয়তা এবং উপায়গুলো দেখে নেওয়া যাক।
+আপনার নিজস্ব হার্ডওয়্যার ব্যবহার করা খুব সহজ হতে পারে। আরও প্রযুক্তিগত ব্যক্তিদের জন্য অনেক সহজ বিকল্পের পাশাপাশি উন্নত সেটআপ রয়েছে। তাই আসুন আপনার মেশিনে ইথিরিয়াম ক্লায়েন্ট চালানোর প্রয়োজনীয়তা এবং উপায়গুলো দেখে নিই।
-#### প্রয়োজনীয়তা {#requirements}
+#### প্রয়োজনীয়তা {#requirements}
-হার্ডওয়্যারের প্রয়োজনীয়তা ক্লায়েন্ট ভেদে ভিন্ন হয় কিন্তু সাধারণত ততটা বেশি হয় না, কারণ নোডটিকে শুধু সিঙ্কড থাকতে হয়। এটিকে মাইনিংয়ের সাথে গুলিয়ে ফেলবেন না, যার জন্য অনেক বেশি কম্পিউটিং পাওয়ার প্রয়োজন। তবে, আরও শক্তিশালী হার্ডওয়্যারের সাথে সিঙ্কের সময় এবং কর্মক্ষমতা উন্নত হয়।
+হার্ডওয়্যারের প্রয়োজনীয়তা ক্লায়েন্ট অনুযায়ী ভিন্ন হয় তবে সাধারণত খুব বেশি হয় না কারণ নোডটিকে শুধু সিঙ্ক থাকতে হয়। এটিকে মাইনিংয়ের সাথে গুলিয়ে ফেলবেন না, যার জন্য অনেক বেশি কম্পিউটিং শক্তির প্রয়োজন। তবে আরও শক্তিশালী হার্ডওয়্যারের সাথে সিঙ্ক করার সময় এবং পারফরম্যান্স উন্নত হয়।
-কোনো ক্লায়েন্ট ইনস্টল করার আগে, অনুগ্রহ করে নিশ্চিত করুন যে আপনার কম্পিউটারে এটি চালানোর জন্য পর্যাপ্ত রিসোর্স আছে। আপনি নিচে ন্যূনতম এবং প্রস্তাবিত প্রয়োজনীয়তাগুলি খুঁজে পেতে পারেন।
+কোনো ক্লায়েন্ট ইনস্টল করার আগে, অনুগ্রহ করে নিশ্চিত করুন যে আপনার কম্পিউটারে এটি চালানোর জন্য পর্যাপ্ত রিসোর্স রয়েছে। আপনি নিচে ন্যূনতম এবং প্রস্তাবিত প্রয়োজনীয়তাগুলো খুঁজে পেতে পারেন।
-আপনার হার্ডওয়্যারের জন্য প্রধান বাধা হল বেশিরভাগ ক্ষেত্রে ডিস্কের স্থান। ইথেরিয়াম ব্লকচেইন সিঙ্ক করা খুব ইনপুট/আউটপুট নিবিড় এবং এর জন্য অনেক জায়গার প্রয়োজন হয়। সিঙ্ক্রোনাইজেশনের পরেও শত শত GB খালি জায়গা সহ একটি **সলিড-স্টেট ড্রাইভ (SSD)** থাকা সবচেয়ে ভালো।
+আপনার হার্ডওয়্যারের জন্য প্রধান বাধা হলো ডিস্ক স্পেস। ইথিরিয়াম ব্লকচেইন সিঙ্ক করা খুব ইনপুট/আউটপুট নিবিড় এবং এর জন্য প্রচুর স্পেস প্রয়োজন। সিঙ্ক্রোনাইজেশনের পরেও শত শত GB ফ্রি স্পেস সহ একটি **সলিড-স্টেট ড্রাইভ (SSD)** থাকা সবচেয়ে ভালো।
-ডেটাবেসের আকার এবং প্রাথমিক সিঙ্ক্রোনাইজেশনের গতি নির্বাচিত ক্লায়েন্ট, এর কনফিগারেশন এবং [সিঙ্ক স্ট্র্যাটেজির](/developers/docs/nodes-and-clients/#sync-modes) উপর নির্ভর করে।
+ডাটাবেসের আকার এবং প্রাথমিক সিঙ্ক্রোনাইজেশনের গতি নির্বাচিত ক্লায়েন্ট, এর কনফিগারেশন এবং [সিঙ্ক স্ট্র্যাটেজি](/developers/docs/nodes-and-clients/#sync-modes)-এর উপর নির্ভর করে।
-এছাড়াও নিশ্চিত করুন যে আপনার ইন্টারনেট সংযোগ একটি [ব্যান্ডউইথ ক্যাপ](https://wikipedia.org/wiki/Data_cap) দ্বারা সীমাবদ্ধ নয়। একটি আনমিটারড সংযোগ ব্যবহার করার সুপারিশ করা হয় কারণ প্রাথমিক সিঙ্ক এবং নেটওয়ার্কে সম্প্রচারিত ডেটা আপনার সীমা অতিক্রম করতে পারে।
+এছাড়াও নিশ্চিত করুন যে আপনার ইন্টারনেট সংযোগ কোনো [ব্যান্ডউইথ ক্যাপ](https://wikipedia.org/wiki/Data_cap) দ্বারা সীমাবদ্ধ নয়। একটি আনমিটারড সংযোগ ব্যবহার করার পরামর্শ দেওয়া হয় কারণ প্রাথমিক সিঙ্ক এবং নেটওয়ার্ক-এ সম্প্রচারিত ডাটা আপনার সীমা অতিক্রম করতে পারে।
##### অপারেটিং সিস্টেম
-সমস্ত ক্লায়েন্ট প্রধান অপারেটিং সিস্টেমগুলিকে সমর্থন করে - Linux, MacOS, Windows। এর মানে হল আপনি আপনার জন্য সবচেয়ে উপযুক্ত অপারেটিং সিস্টেম (OS) দিয়ে নিয়মিত ডেস্কটপ বা সার্ভার মেশিনে নোড চালাতে পারেন। সম্ভাব্য সমস্যা এবং নিরাপত্তা দুর্বলতা এড়াতে নিশ্চিত করুন যে আপনার OS আপ টু ডেট আছে।
+সমস্ত ক্লায়েন্ট প্রধান অপারেটিং সিস্টেমগুলো সমর্থন করে - Linux, MacOS, Windows। এর মানে হলো আপনি আপনার জন্য সবচেয়ে উপযুক্ত অপারেটিং সিস্টেম (OS) সহ সাধারণ ডেস্কটপ বা সার্ভার মেশিনে নোড চালাতে পারেন। সম্ভাব্য সমস্যা এবং নিরাপত্তা দুর্বলতা এড়াতে আপনার OS আপ টু ডেট আছে কিনা তা নিশ্চিত করুন।
-##### ন্যূনতম প্রয়োজনীয়তা
+##### ন্যূনতম প্রয়োজনীয়তা
-- ২+ কোর সহ CPU
-- ৮ GB RAM
-- ২TB SSD
-- ১০+ MBit/s ব্যান্ডউইথ
+- 2+ কোর সহ CPU
+- 8 GB RAM
+- 2TB SSD
+- 10+ MBit/s ব্যান্ডউইথ
##### প্রস্তাবিত স্পেসিফিকেশন
-- ৪+ কোর সহ দ্রুত CPU
-- ১৬ GB+ RAM
-- ২+TB সহ দ্রুত SSD
-- ২৫+ MBit/s ব্যান্ডউইথ
+- 4+ কোর সহ দ্রুত CPU
+- 16 GB+ RAM
+- 2+TB সহ দ্রুত SSD
+- 25+ MBit/s ব্যান্ডউইথ
-আপনার বেছে নেওয়া সিঙ্ক মোড এবং ক্লায়েন্ট স্থানের প্রয়োজনীয়তাকে প্রভাবিত করবে, তবে আমরা নিচে প্রতিটি ক্লায়েন্টের জন্য আপনার প্রয়োজনীয় ডিস্কের স্থান অনুমান করেছি।
+আপনার বেছে নেওয়া সিঙ্ক মোড এবং ক্লায়েন্ট স্পেসের প্রয়োজনীয়তাকে প্রভাবিত করবে, তবে আমরা নিচে প্রতিটি ক্লায়েন্টের জন্য আপনার প্রয়োজনীয় ডিস্ক স্পেস অনুমান করেছি।
-| ক্লায়েন্ট | ডিস্কের আকার (স্ন্যাপ সিঙ্ক) | ডিস্কের আকার (সম্পূর্ণ আর্কাইভ) |
-| ---------- | ----------------------------------------------- | -------------------------------------------------- |
-| Besu | ৮০০GB+ | ১২TB+ |
-| Erigon | প্রযোজ্য নয় | ২.৫TB+ |
-| Geth | ৫০০GB+ | ১২TB+ |
-| Nethermind | ৫০০GB+ | ১২TB+ |
-| Reth | প্রযোজ্য নয় | ২.২TB+ |
+| ক্লায়েন্ট | ডিস্ক সাইজ (স্ন্যাপ সিঙ্ক) | ডিস্ক সাইজ (ফুল আর্কাইভ) |
+| ---------- | --------------------- | ------------------------ |
+| Besu | 800GB+ | 12TB+ |
+| Erigon | N/A | 2.5TB+ |
+| Geth | 500GB+ | 12TB+ |
+| Nethermind | 500GB+ | 12TB+ |
+| Reth | N/A | 2.2TB+ |
-- দ্রষ্টব্য: Erigon এবং Reth স্ন্যাপ সিঙ্ক অফার করে না, কিন্তু ফুল প্রুনিং সম্ভব (Erigon-এর জন্য ~২TB, Reth-এর জন্য ~১.২TB)
+- দ্রষ্টব্য: Erigon এবং Reth স্ন্যাপ সিঙ্ক অফার করে না, তবে ফুল প্রুনিং সম্ভব (Erigon-এর জন্য ~2TB, Reth-এর জন্য ~1.2TB)
-কনসেন্সাস ক্লায়েন্টদের জন্য, স্থানের প্রয়োজনীয়তা ক্লায়েন্ট ইমপ্লিমেন্টেশন এবং সক্রিয় করা বৈশিষ্ট্যগুলির (যেমন, ভ্যালিডেটর স্ল্যাশার) উপরও নির্ভর করে, তবে সাধারণত বীকন ডেটার জন্য আরও ২০০GB প্রয়োজন হয়। বিপুল সংখ্যক ভ্যালিডেটরের সাথে, ব্যান্ডউইথ লোডও বৃদ্ধি পায়। আপনি [এই বিশ্লেষণে কনসেন্সাস ক্লায়েন্টের প্রয়োজনীয়তার বিবরণ](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc) খুঁজে পেতে পারেন।
+কনসেন্সাস ক্লায়েন্টগুলোর জন্য, স্পেসের প্রয়োজনীয়তা ক্লায়েন্ট ইমপ্লিমেন্টেশন এবং সক্ষম করা বৈশিষ্ট্যগুলোর (যেমন, ভ্যালিডেটর স্ল্যাশার) উপরও নির্ভর করে তবে সাধারণত বিকন ডাটার জন্য আরও 200GB প্রয়োজন বলে ধরে নেওয়া হয়। বিপুল সংখ্যক ভ্যালিডেটরস-এর সাথে, ব্যান্ডউইথ লোডও বৃদ্ধি পায়। আপনি [এই বিশ্লেষণে কনসেন্সাস ক্লায়েন্টের প্রয়োজনীয়তার বিশদ বিবরণ](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc) খুঁজে পেতে পারেন।
-#### প্লাগ-এন্ড-প্লে সমাধান {#plug-and-play}
+#### প্লাগ-অ্যান্ড-প্লে সলিউশন {#plug-and-play}
-আপনার নিজের হার্ডওয়্যার দিয়ে একটি নোড চালানোর সবচেয়ে সহজ বিকল্প হল প্লাগ-এন্ড-প্লে বক্স ব্যবহার করা। বিক্রেতাদের থেকে পূর্ব-কনফিগার করা মেশিনগুলি সবচেয়ে সহজ অভিজ্ঞতা প্রদান করে: অর্ডার করুন, সংযোগ করুন, চালান। সফটওয়্যারটি পর্যবেক্ষণ এবং নিয়ন্ত্রণ করার জন্য একটি স্বজ্ঞাত গাইড এবং ড্যাশবোর্ডের সাথে সবকিছু পূর্ব-কনফিগার করা থাকে এবং স্বয়ংক্রিয়ভাবে চলে।
+আপনার নিজস্ব হার্ডওয়্যার দিয়ে একটি নোড চালানোর সবচেয়ে সহজ বিকল্প হলো প্লাগ-অ্যান্ড-প্লে বক্স ব্যবহার করা। বিক্রেতাদের কাছ থেকে প্রি-কনফিগার করা মেশিনগুলো সবচেয়ে সহজ অভিজ্ঞতা প্রদান করে: অর্ডার করুন, সংযুক্ত করুন, চালান। সবকিছু প্রি-কনফিগার করা থাকে এবং সফটওয়্যারটি পর্যবেক্ষণ ও নিয়ন্ত্রণের জন্য একটি স্বজ্ঞাত গাইড এবং ড্যাশবোর্ডের সাথে স্বয়ংক্রিয়ভাবে চলে।
- [DappNode](https://dappnode.io/)
- [Avado](https://ava.do/)
-#### একটি একক-বোর্ড কম্পিউটারে ইথেরিয়াম {#ethereum-on-a-single-board-computer}
+#### সিঙ্গেল-বোর্ড কম্পিউটারে ইথিরিয়াম {#ethereum-on-a-single-board-computer}
-একটি ইথেরিয়াম নোড চালানোর একটি সহজ এবং সস্তা উপায় হল একটি একক বোর্ড কম্পিউটার ব্যবহার করা, এমনকি Raspberry Pi-এর মতো একটি ARM আর্কিটেকচার সহ। [ARM-এ ইথেরিয়াম](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) Raspberry Pi এবং অন্যান্য ARM বোর্ডের জন্য একাধিক এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টের সহজে চালানোর মতো ইমেজ সরবরাহ করে।
+একটি ইথিরিয়াম নোড চালানোর একটি সহজ এবং সস্তা উপায় হলো একটি সিঙ্গেল বোর্ড কম্পিউটার ব্যবহার করা, এমনকি Raspberry Pi-এর মতো একটি ARM আর্কিটেকচারের সাথেও। [Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) Raspberry Pi এবং অন্যান্য ARM বোর্ডের জন্য একাধিক এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টের সহজে চালানো যায় এমন ইমেজ প্রদান করে।
-এই ধরনের ছোট, সাশ্রয়ী এবং দক্ষ ডিভাইসগুলি বাড়িতে একটি নোড চালানোর জন্য আদর্শ কিন্তু তাদের সীমিত কর্মক্ষমতা মনে রাখবেন।
+এই ধরনের ছোট, সাশ্রয়ী মূল্যের এবং দক্ষ ডিভাইসগুলো বাড়িতে একটি নোড চালানোর জন্য আদর্শ তবে তাদের সীমিত পারফরম্যান্সের কথা মাথায় রাখবেন।
-## নোডটি স্পিন আপ করা {#spinning-up-node}
+## নোড চালু করা {#spinning-up-node}
-আসল ক্লায়েন্ট সেটআপ সরাসরি ক্লায়েন্ট সফটওয়্যার সেট আপ করে, স্বয়ংক্রিয় লঞ্চার দিয়ে বা ম্যানুয়ালি করা যেতে পারে।
+প্রকৃত ক্লায়েন্ট সেটআপ স্বয়ংক্রিয় লঞ্চার দিয়ে বা ম্যানুয়ালি, সরাসরি ক্লায়েন্ট সফটওয়্যার সেট আপ করে করা যেতে পারে।
-কম উন্নত ব্যবহারকারীদের জন্য, প্রস্তাবিত পদ্ধতি হল একটি লঞ্চার ব্যবহার করা, এটি এমন একটি সফটওয়্যার যা আপনাকে ইনস্টলেশনের মাধ্যমে গাইড করে এবং ক্লায়েন্ট সেটআপ প্রক্রিয়াটি স্বয়ংক্রিয় করে তোলে। তবে, যদি আপনার টার্মিনাল ব্যবহারের কিছু অভিজ্ঞতা থাকে, তবে ম্যানুয়াল সেটআপের ধাপগুলি অনুসরণ করা সহজ হওয়া উচিত।
+কম উন্নত ব্যবহারকারীদের জন্য, প্রস্তাবিত পদ্ধতি হলো একটি লঞ্চার ব্যবহার করা, এমন একটি সফটওয়্যার যা আপনাকে ইনস্টলেশনের মাধ্যমে গাইড করে এবং ক্লায়েন্ট সেটআপ প্রক্রিয়া স্বয়ংক্রিয় করে। তবে, আপনার যদি টার্মিনাল ব্যবহারের কিছু অভিজ্ঞতা থাকে, তবে ম্যানুয়াল সেটআপের ধাপগুলো অনুসরণ করা সহজ হওয়া উচিত।
### গাইডেড সেটআপ {#automatized-setup}
-একাধিক ব্যবহারকারী-বান্ধব প্রকল্পের লক্ষ্য একটি ক্লায়েন্ট সেট আপ করার অভিজ্ঞতা উন্নত করা। এই লঞ্চারগুলি স্বয়ংক্রিয় ক্লায়েন্ট ইনস্টলেশন এবং কনফিগারেশন প্রদান করে, কিছুর মধ্যে এমনকি ক্লায়েন্টদের গাইডেড সেটআপ এবং পর্যবেক্ষণের জন্য একটি গ্রাফিকাল ইন্টারফেসও অফার করা হয়।
+একাধিক ব্যবহারকারী-বান্ধব প্রজেক্টের লক্ষ্য হলো ক্লায়েন্ট সেট আপ করার অভিজ্ঞতা উন্নত করা। এই লঞ্চারগুলো স্বয়ংক্রিয় ক্লায়েন্ট ইনস্টলেশন এবং কনফিগারেশন প্রদান করে, যার মধ্যে কয়েকটি ক্লায়েন্টদের গাইডেড সেটআপ এবং পর্যবেক্ষণের জন্য একটি গ্রাফিকাল ইন্টারফেসও অফার করে।
-নিচে কয়েকটি প্রকল্প রয়েছে যা আপনাকে মাত্র কয়েকটি ক্লিকে ক্লায়েন্ট ইনস্টল এবং নিয়ন্ত্রণ করতে সাহায্য করতে পারে:
+নিচে কয়েকটি প্রজেক্ট দেওয়া হলো যা আপনাকে মাত্র কয়েকটি ক্লিকে ক্লায়েন্ট ইনস্টল এবং নিয়ন্ত্রণ করতে সাহায্য করতে পারে:
-- [DappNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DappNode শুধুমাত্র একজন বিক্রেতার কাছ থেকে একটি মেশিনের সাথে আসে না। সফটওয়্যারটি, আসল নোড লঞ্চার এবং অনেক বৈশিষ্ট্য সহ নিয়ন্ত্রণ কেন্দ্র যেকোনো হার্ডওয়্যারে ব্যবহার করা যেতে পারে।
-- [EthPillar](https://www.coincashew.com/coins/overview-eth/ethpillar) - একটি পূর্ণ নোড সেটআপ করার দ্রুততম এবং সহজতম উপায়। এক-লাইনের সেটআপ টুল এবং নোড ম্যানেজমেন্ট TUI। বিনামূল্যে। ওপেন সোর্স। একক স্টেকারদের দ্বারা ইথেরিয়াম-এর জন্য পাবলিক গুডস। ARM64 এবং AMD64 সমর্থন।
-- [eth-docker](https://eth-docker.net/) - ডকার ব্যবহার করে স্বয়ংক্রিয় সেটআপ যা সহজ এবং নিরাপদ স্টেকিংয়ের উপর দৃষ্টি নিবদ্ধ করে, প্রাথমিক টার্মিনাল এবং ডকার জ্ঞান প্রয়োজন, কিছুটা বেশি উন্নত ব্যবহারকারীদের জন্য প্রস্তাবিত।
-- [Stereum](https://stereum-dev.github.io/ethereum-node-web-docs) - একটি GUI সেটআপ গাইড, নিয়ন্ত্রণ কেন্দ্র, এবং অন্যান্য অনেক বৈশিষ্ট্য সহ SSH সংযোগের মাধ্যমে একটি দূরবর্তী সার্ভারে ক্লায়েন্ট ইনস্টল করার জন্য লঞ্চার।
-- [Sedge](https://docs.sedge.nethermind.io/docs/intro) - নোড সেটআপ টুল যা CLI উইজার্ড ব্যবহার করে স্বয়ংক্রিয়ভাবে একটি ডকার কনফিগারেশন তৈরি করে। Nethermind দ্বারা Go-তে লেখা।
+- [DappNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DappNode শুধুমাত্র একজন বিক্রেতার কাছ থেকে একটি মেশিন নিয়ে আসে না। সফটওয়্যার, প্রকৃত নোড লঞ্চার এবং অনেক বৈশিষ্ট্য সহ কন্ট্রোল সেন্টার যেকোনো হার্ডওয়্যারে ব্যবহার করা যেতে পারে।
+- [EthPillar](https://www.coincashew.com/coins/overview-eth/ethpillar) - একটি ফুল নোড সেটআপ করার দ্রুততম এবং সহজ উপায়। ওয়ান-লাইনার সেটআপ টুল এবং নোড ম্যানেজমেন্ট TUI। বিনামূল্যে। ওপেন সোর্স। সোলো স্টেকারদের দ্বারা ইথিরিয়ামের জন্য পাবলিক গুডস। ARM64 এবং AMD64 সমর্থন।
+- [eth-docker](https://eth-docker.net/) - সহজ এবং নিরাপদ স্টেকিং-এর উপর দৃষ্টি নিবদ্ধ করে ডকার ব্যবহার করে স্বয়ংক্রিয় সেটআপ, প্রাথমিক টার্মিনাল এবং ডকার জ্ঞান প্রয়োজন, একটু বেশি উন্নত ব্যবহারকারীদের জন্য প্রস্তাবিত।
+- [Stereum](https://stereum-dev.github.io/ethereum-node-web-docs) - একটি GUI সেটআপ গাইড, কন্ট্রোল সেন্টার এবং অন্যান্য অনেক বৈশিষ্ট্য সহ SSH সংযোগের মাধ্যমে রিমোট সার্ভারে ক্লায়েন্ট ইনস্টল করার জন্য লঞ্চার।
+- [Sedge](https://docs.sedge.nethermind.io/docs/intro) - নোড সেটআপ টুল যা CLI উইজার্ড ব্যবহার করে স্বয়ংক্রিয়ভাবে একটি ডকার কনফিগারেশন তৈরি করে। Nethermind দ্বারা Go-তে লেখা।
-### ম্যানুয়াল ক্লায়েন্ট সেটআপ {#manual-setup}
+### ম্যানুয়াল ক্লায়েন্ট সেটআপ {#manual-setup}
-অন্য বিকল্পটি হল ক্লায়েন্ট সফটওয়্যারটি ম্যানুয়ালি ডাউনলোড, যাচাই এবং কনফিগার করা। যদিও কিছু ক্লায়েন্ট একটি গ্রাফিকাল ইন্টারফেস অফার করে, একটি ম্যানুয়াল সেটআপের জন্য এখনও টার্মিনালের সাথে প্রাথমিক দক্ষতার প্রয়োজন হয় কিন্তু এটি অনেক বেশি বহুমুখিতা অফার করে।
+অন্য বিকল্পটি হলো ম্যানুয়ালি ক্লায়েন্ট সফটওয়্যার ডাউনলোড, যাচাই এবং কনফিগার করা। এমনকি যদি কিছু ক্লায়েন্ট একটি গ্রাফিকাল ইন্টারফেস অফার করে, তবুও একটি ম্যানুয়াল সেটআপের জন্য টার্মিনালের সাথে প্রাথমিক দক্ষতার প্রয়োজন হয় তবে এটি অনেক বেশি বহুমুখিতা প্রদান করে।
-যেমনটি আগে ব্যাখ্যা করা হয়েছে, আপনার নিজের ইথেরিয়াম নোড সেট আপ করার জন্য একজোড়া কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্ট চালাতে হবে। কিছু ক্লায়েন্টে অন্য ধরণের একটি লাইট ক্লায়েন্ট অন্তর্ভুক্ত থাকতে পারে এবং অন্য কোনো সফটওয়্যারের প্রয়োজন ছাড়াই সিঙ্ক হতে পারে। তবে, সম্পূর্ণ বিশ্বাসহীন যাচাইয়ের জন্য উভয় ইমপ্লিমেন্টেশন প্রয়োজন।
+যেমন আগে ব্যাখ্যা করা হয়েছে, আপনার নিজস্ব ইথিরিয়াম নোড সেট আপ করার জন্য এক জোড়া কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্ট চালানোর প্রয়োজন হবে। কিছু ক্লায়েন্ট অন্য ধরনের একটি লাইট ক্লায়েন্ট অন্তর্ভুক্ত করতে পারে এবং অন্য কোনো সফটওয়্যারের প্রয়োজন ছাড়াই সিঙ্ক করতে পারে। তবে, সম্পূর্ণ ট্রাস্টলেস যাচাইকরণের জন্য উভয় ইমপ্লিমেন্টেশন প্রয়োজন।
-#### ক্লায়েন্ট সফটওয়্যার পাওয়া {#getting-the-client}
+#### ক্লায়েন্ট সফটওয়্যার পাওয়া {#getting-the-client}
-প্রথমে, আপনাকে আপনার পছন্দের [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) সফটওয়্যার পেতে হবে।
+প্রথমে, আপনাকে আপনার পছন্দের [এক্সিকিউশন ক্লায়েন্ট](/developers/docs/nodes-and-clients/#execution-clients) এবং [কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/#consensus-clients) সফটওয়্যার সংগ্রহ করতে হবে।
-আপনি কেবল একটি এক্সিকিউটেবল অ্যাপ্লিকেশন বা ইনস্টলেশন প্যাকেজ ডাউনলোড করতে পারেন যা আপনার অপারেটিং সিস্টেম এবং আর্কিটেকচারের জন্য উপযুক্ত। ডাউনলোড করা প্যাকেজগুলির স্বাক্ষর এবং চেকসাম সবসময় যাচাই করুন। কিছু ক্লায়েন্ট সহজ ইনস্টলেশন এবং আপডেটের জন্য রিপোজিটরি বা ডকার ইমেজও অফার করে। সমস্ত ক্লায়েন্ট ওপেন সোর্স, তাই আপনি সোর্স থেকে সেগুলি তৈরি করতে পারেন। এটি একটি আরও উন্নত পদ্ধতি, কিন্তু কিছু ক্ষেত্রে, এটির প্রয়োজন হতে পারে।
+আপনি সহজেই একটি এক্সিকিউটেবল অ্যাপ্লিকেশন বা ইনস্টলেশন প্যাকেজ ডাউনলোড করতে পারেন যা আপনার অপারেটিং সিস্টেম এবং আর্কিটেকচারের জন্য উপযুক্ত। সর্বদা ডাউনলোড করা প্যাকেজগুলোর সিগনেচার এবং চেকসাম যাচাই করুন। কিছু ক্লায়েন্ট সহজ ইনস্টলেশন এবং আপডেটের জন্য রিপোজিটরি বা ডকার ইমেজও অফার করে। সমস্ত ক্লায়েন্ট ওপেন সোর্স, তাই আপনি সোর্স থেকেও সেগুলো তৈরি করতে পারেন। এটি একটি আরও উন্নত পদ্ধতি, তবে কিছু ক্ষেত্রে, এটি প্রয়োজনীয় হতে পারে।
-প্রতিটি ক্লায়েন্ট ইনস্টল করার নির্দেশাবলী উপরের ক্লায়েন্ট তালিকার সাথে লিঙ্ক করা নথিপত্রে সরবরাহ করা হয়েছে।
+প্রতিটি ক্লায়েন্ট ইনস্টল করার নির্দেশাবলী উপরের ক্লায়েন্ট তালিকায় লিঙ্ক করা ডকুমেন্টেশনে দেওয়া আছে।
-এখানে ক্লায়েন্টদের রিলিজ পৃষ্ঠাগুলি রয়েছে যেখানে আপনি তাদের পূর্ব-নির্মিত বাইনারি বা ইনস্টলেশনের নির্দেশাবলী খুঁজে পেতে পারেন:
+এখানে ক্লায়েন্টদের রিলিজ পেজগুলো দেওয়া হলো যেখানে আপনি তাদের প্রি-বিল্ট বাইনারি বা ইনস্টলেশনের নির্দেশাবলী খুঁজে পেতে পারেন:
-##### এক্সিকিউশন ক্লায়েন্ট
+##### এক্সিকিউশন ক্লায়েন্ট
- [Besu](https://github.com/hyperledger/besu/releases)
- [Erigon](https://github.com/ledgerwatch/erigon/releases)
-- [Geth](https://geth.ethereum.org/downloads/)
+- [Geth](https://geth.ethereum.org/downloads)
- [Nethermind](https://downloads.nethermind.io/)
- [Reth](https://reth.rs/installation/installation.html)
-এটিও লক্ষ্য করার মতো যে ক্লায়েন্ট ডাইভারসিটি [এক্সিকিউশন লেয়ারের](/developers/docs/nodes-and-clients/client-diversity/#execution-layer) একটি সমস্যা। পাঠকদের একটি সংখ্যালঘু এক্সিকিউশন ক্লায়েন্ট চালানোর কথা বিবেচনা করার পরামর্শ দেওয়া হয়।
+এটিও লক্ষণীয় যে ক্লায়েন্ট ডাইভার্সিটি [এক্সিকিউশন লেয়ার-এ একটি সমস্যা](/developers/docs/nodes-and-clients/client-diversity/#execution-layer)। পাঠকদের একটি মাইনরিটি এক্সিকিউশন ক্লায়েন্ট চালানোর কথা বিবেচনা করার পরামর্শ দেওয়া হচ্ছে।
-##### কনসেন্সাস ক্লায়েন্ট
+##### কনসেন্সাস ক্লায়েন্ট
- [Lighthouse](https://github.com/sigp/lighthouse/releases/latest)
-- [Lodestar](https://chainsafe.github.io/lodestar/run/getting-started/installation#build-from-source/) (একটি পূর্ব-নির্মিত বাইনারি প্রদান করে না, শুধুমাত্র একটি ডকার ইমেজ বা সোর্স থেকে তৈরি করতে হয়)
+- [Lodestar](https://chainsafe.github.io/lodestar/run/getting-started/installation#build-from-source/) (একটি প্রি-বিল্ট বাইনারি প্রদান করে না, শুধুমাত্র একটি ডকার ইমেজ বা সোর্স থেকে তৈরি করতে হয়)
- [Nimbus](https://github.com/status-im/nimbus-eth2/releases/latest)
- [Prysm](https://github.com/prysmaticlabs/prysm/releases/latest)
- [Teku](https://github.com/ConsenSys/teku/releases)
-ভ্যালিডেটর চালানো কনসেন্সাস নোডগুলির জন্য [ক্লায়েন্ট ডাইভারসিটি](/developers/docs/nodes-and-clients/client-diversity/) অত্যন্ত গুরুত্বপূর্ণ। যদি সংখ্যাগরিষ্ঠ ভ্যালিডেটর একটি একক ক্লায়েন্ট ইমপ্লিমেন্টেশন চালায়, তাহলে নেটওয়ার্ক নিরাপত্তা ঝুঁকির মধ্যে থাকে। তাই একটি সংখ্যালঘু ক্লায়েন্ট বেছে নেওয়ার কথা বিবেচনা করার পরামর্শ দেওয়া হয়।
+ভ্যালিডেটরস চালানো কনসেন্সাস নোডগুলোর জন্য [ক্লায়েন্ট ডাইভার্সিটি](/developers/docs/nodes-and-clients/client-diversity/) অত্যন্ত গুরুত্বপূর্ণ। যদি বেশিরভাগ ভ্যালিডেটরস একটি একক ক্লায়েন্ট ইমপ্লিমেন্টেশন চালায়, তবে নেটওয়ার্ক নিরাপত্তা ঝুঁকির মধ্যে পড়ে। তাই একটি মাইনরিটি ক্লায়েন্ট বেছে নেওয়ার কথা বিবেচনা করার পরামর্শ দেওয়া হচ্ছে।
-[সর্বশেষ নেটওয়ার্ক ক্লায়েন্ট ব্যবহার দেখুন](https://clientdiversity.org/) এবং [ক্লায়েন্ট ডাইভারসিটি](/developers/docs/nodes-and-clients/client-diversity) সম্পর্কে আরও জানুন।
+[সর্বশেষ নেটওয়ার্ক ক্লায়েন্ট ব্যবহার দেখুন](https://clientdiversity.org/) এবং [ক্লায়েন্ট ডাইভার্সিটি](/developers/docs/nodes-and-clients/client-diversity) সম্পর্কে আরও জানুন।
-##### সফটওয়্যার যাচাই করা
+##### সফটওয়্যার যাচাই করা
-ইন্টারনেট থেকে সফটওয়্যার ডাউনলোড করার সময়, এর অখণ্ডতা যাচাই করার পরামর্শ দেওয়া হয়। এই পদক্ষেপটি ঐচ্ছিক কিন্তু বিশেষত ইথেরিয়াম ক্লায়েন্টের মতো গুরুত্বপূর্ণ অবকাঠামো অংশের সাথে, সম্ভাব্য আক্রমণ ভেক্টর সম্পর্কে সচেতন থাকা এবং সেগুলি এড়ানো গুরুত্বপূর্ণ। আপনি যদি একটি পূর্ব-নির্মিত বাইনারি ডাউনলোড করেন, তবে আপনাকে এটি বিশ্বাস করতে হবে এবং ঝুঁকি নিতে হবে যে একজন আক্রমণকারী এক্সিকিউটেবলটিকে একটি ক্ষতিকারকটির সাথে অদলবদল করতে পারে।
+ইন্টারনেট থেকে সফটওয়্যার ডাউনলোড করার সময়, এর অখণ্ডতা যাচাই করার পরামর্শ দেওয়া হয়। এই ধাপটি ঐচ্ছিক তবে বিশেষ করে ইথিরিয়াম ক্লায়েন্টের মতো গুরুত্বপূর্ণ পরিকাঠামোর ক্ষেত্রে, সম্ভাব্য আক্রমণের ভেক্টরগুলো সম্পর্কে সচেতন হওয়া এবং সেগুলো এড়ানো গুরুত্বপূর্ণ। আপনি যদি একটি প্রি-বিল্ট বাইনারি ডাউনলোড করেন, তবে আপনাকে এটি বিশ্বাস করতে হবে এবং ঝুঁকি নিতে হবে যে একজন আক্রমণকারী এক্সিকিউটেবলটিকে একটি ক্ষতিকারক দিয়ে অদলবদল করতে পারে।
-ডেভেলপাররা তাদের PGP কী দিয়ে প্রকাশিত বাইনারিগুলিতে স্বাক্ষর করে যাতে আপনি ক্রিপ্টোগ্রাফিকভাবে যাচাই করতে পারেন যে আপনি ঠিক সেই সফটওয়্যারটি চালাচ্ছেন যা তারা তৈরি করেছে। আপনাকে শুধু ডেভেলপারদের দ্বারা ব্যবহৃত পাবলিক কীগুলি পেতে হবে, যা ক্লায়েন্ট রিলিজ পৃষ্ঠাগুলিতে বা নথিপত্রে পাওয়া যাবে। ক্লায়েন্ট রিলিজ এবং এর স্বাক্ষর ডাউনলোড করার পরে, আপনি একটি PGP ইমপ্লিমেন্টেশন ব্যবহার করতে পারেন, যেমন, [GnuPG](https://gnupg.org/download/index.html) সহজেই সেগুলি যাচাই করতে। `gpg` ব্যবহার করে ওপেন-সোর্স সফটওয়্যার যাচাই করার একটি টিউটোরিয়াল দেখুন [লিনাক্স](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) বা [উইন্ডোজ/ম্যাকওএস](https://freedom.press/training/verifying-open-source-software/) এ।
+ডেভেলপাররা তাদের PGP কি দিয়ে রিলিজ করা বাইনারিগুলোতে স্বাক্ষর করে যাতে আপনি ক্রিপ্টোগ্রাফিকভাবে যাচাই করতে পারেন যে আপনি ঠিক তাদের তৈরি করা সফটওয়্যারটি চালাচ্ছেন। আপনাকে শুধু ডেভেলপারদের দ্বারা ব্যবহৃত পাবলিক কি সংগ্রহ করতে হবে, যা ক্লায়েন্ট রিলিজ পেজ বা ডকুমেন্টেশনে পাওয়া যেতে পারে। ক্লায়েন্ট রিলিজ এবং এর সিগনেচার ডাউনলোড করার পরে, আপনি সহজেই সেগুলো যাচাই করতে একটি PGP ইমপ্লিমেন্টেশন ব্যবহার করতে পারেন, যেমন, [GnuPG](https://gnupg.org/download/index.html)। [linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) বা [Windows/MacOS](https://freedom.press/training/verifying-open-source-software/)-এ `gpg` ব্যবহার করে ওপেন-সোর্স সফটওয়্যার যাচাই করার একটি টিউটোরিয়াল দেখুন।
-যাচাইকরণের আরেকটি রূপ হল এটি নিশ্চিত করা যে আপনি যে সফটওয়্যারটি ডাউনলোড করেছেন তার হ্যাস, একটি অনন্য ক্রিপ্টোগ্রাফিক ফিঙ্গারপ্রিন্ট, ডেভেলপারদের দ্বারা প্রদত্তটির সাথে মেলে। এটি PGP ব্যবহারের চেয়েও সহজ, এবং কিছু ক্লায়েন্ট শুধুমাত্র এই বিকল্পটি অফার করে। শুধু ডাউনলোড করা সফটওয়্যারে হ্যাস ফাংশনটি চালান এবং রিলিজ পৃষ্ঠা থেকে এটির সাথে তুলনা করুন। উদাহরণস্বরূপ:
+যাচাইকরণের আরেকটি রূপ হলো আপনি যে সফটওয়্যারটি ডাউনলোড করেছেন তার হ্যাস, একটি অনন্য ক্রিপ্টোগ্রাফিক ফিঙ্গারপ্রিন্ট, ডেভেলপারদের দেওয়া হ্যাসের সাথে মেলে কিনা তা নিশ্চিত করা। এটি PGP ব্যবহার করার চেয়েও সহজ, এবং কিছু ক্লায়েন্ট শুধুমাত্র এই বিকল্পটি অফার করে। শুধু ডাউনলোড করা সফটওয়্যারে হ্যাস ফাংশনটি চালান এবং রিলিজ পেজ থেকে পাওয়া হ্যাসের সাথে তুলনা করুন। উদাহরণস্বরূপ:
```sh
sha256sum teku-22.6.1.tar.gz
@@ -186,60 +186,60 @@ sha256sum teku-22.6.1.tar.gz
9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
```
-#### ক্লায়েন্ট সেটআপ {#client-setup}
+#### ক্লায়েন্ট সেটআপ {#client-setup}
-ক্লায়েন্ট সফটওয়্যার ইনস্টল, ডাউনলোড বা কম্পাইল করার পরে, আপনি এটি চালানোর জন্য প্রস্তুত। এর মানে শুধু এই যে এটি সঠিক কনফিগারেশনের সাথে এক্সিকিউট করতে হবে। ক্লায়েন্টরা সমৃদ্ধ কনফিগারেশন বিকল্প অফার করে, যা বিভিন্ন বৈশিষ্ট্য সক্রিয় করতে পারে।
+ক্লায়েন্ট সফটওয়্যার ইনস্টল, ডাউনলোড বা কম্পাইল করার পরে, আপনি এটি চালানোর জন্য প্রস্তুত। এর মানে হলো এটিকে সঠিক কনফিগারেশনের সাথে এক্সিকিউট করতে হবে। ক্লায়েন্টরা সমৃদ্ধ কনফিগারেশন বিকল্প অফার করে, যা বিভিন্ন বৈশিষ্ট্য সক্ষম করতে পারে।
-আসুন এমন বিকল্পগুলি দিয়ে শুরু করি যা ক্লায়েন্টের কর্মক্ষমতা এবং ডেটা ব্যবহারকে উল্লেখযোগ্যভাবে প্রভাবিত করতে পারে। [সিঙ্ক মোড](/developers/docs/nodes-and-clients/#sync-modes) ব্লকচেইন ডেটা ডাউনলোড এবং যাচাই করার বিভিন্ন পদ্ধতির প্রতিনিধিত্ব করে। নোড শুরু করার আগে, আপনার কোন নেটওয়ার্ক এবং সিঙ্ক মোড ব্যবহার করতে হবে তা সিদ্ধান্ত নেওয়া উচিত। সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলি যা বিবেচনা করতে হবে তা হল ডিস্কের স্থান এবং ক্লায়েন্টের জন্য প্রয়োজনীয় সিঙ্ক সময়। কোন সিঙ্ক মোড ডিফল্ট তা নির্ধারণ করতে ক্লায়েন্টের ডক্সে মনোযোগ দিন। যদি এটি আপনার জন্য উপযুক্ত না হয়, তবে নিরাপত্তা, উপলব্ধ ডেটা এবং খরচের উপর ভিত্তি করে অন্য একটি বেছে নিন। সিঙ্ক্রোনাইজেশন অ্যালগরিদম ছাড়াও, আপনি বিভিন্ন ধরণের পুরানো ডেটার ছাঁটাইও সেট করতে পারেন। প্রুনিং পুরানো ডেটা মুছে ফেলতে সক্ষম করে, যেমন, সাম্প্রতিক ব্লকগুলি থেকে পৌঁছানো যায় না এমন স্টেট ট্রাই নোডগুলি অপসারণ করা।
+আসুন এমন বিকল্পগুলো দিয়ে শুরু করি যা ক্লায়েন্টের পারফরম্যান্স এবং ডাটা ব্যবহারকে উল্লেখযোগ্যভাবে প্রভাবিত করতে পারে। [সিঙ্ক মোড](/developers/docs/nodes-and-clients/#sync-modes) ব্লকচেইন ডাটা ডাউনলোড এবং যাচাই করার বিভিন্ন পদ্ধতির প্রতিনিধিত্ব করে। নোড শুরু করার আগে, আপনার সিদ্ধান্ত নেওয়া উচিত কোন নেটওয়ার্ক এবং সিঙ্ক মোড ব্যবহার করবেন। বিবেচনা করার সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলো হলো ডিস্ক স্পেস এবং ক্লায়েন্টের প্রয়োজনীয় সিঙ্ক সময়। কোন সিঙ্ক মোডটি ডিফল্ট তা নির্ধারণ করতে ক্লায়েন্টের ডক্সের দিকে মনোযোগ দিন। যদি সেটি আপনার জন্য উপযুক্ত না হয়, তবে নিরাপত্তার স্তর, উপলব্ধ ডাটা এবং খরচের উপর ভিত্তি করে অন্য একটি বেছে নিন। সিঙ্ক্রোনাইজেশন এ্যালগরিদম ছাড়াও, আপনি বিভিন্ন ধরণের পুরানো ডাটার প্রুনিং সেট করতে পারেন। প্রুনিং পুরানো ডাটা মুছে ফেলতে সক্ষম করে, অর্থাৎ, সাম্প্রতিক ব্লকস থেকে পৌঁছানো যায় না এমন স্টেট ট্রাই নোডগুলো সরিয়ে দেয়।
-অন্যান্য মৌলিক কনফিগারেশন বিকল্পগুলি হল, যেমন, একটি নেটওয়ার্ক বেছে নেওয়া - মেইননেট বা টেস্টনেট, RPC বা WebSocket-এর জন্য HTTP এন্ডপয়েন্ট সক্রিয় করা ইত্যাদি। আপনি ক্লায়েন্টের নথিপত্রে সমস্ত বৈশিষ্ট্য এবং বিকল্প খুঁজে পেতে পারেন। বিভিন্ন ক্লায়েন্ট কনফিগারেশন সরাসরি CLI বা কনফিগ ফাইলে সংশ্লিষ্ট ফ্ল্যাগগুলির সাথে ক্লায়েন্টকে কার্যকর করে সেট করা যেতে পারে। প্রতিটি ক্লায়েন্ট কিছুটা ভিন্ন; কনফিগারেশন বিকল্পের বিশদ বিবরণের জন্য অনুগ্রহ করে সর্বদা এর অফিসিয়াল নথিপত্র বা সহায়তা পৃষ্ঠা দেখুন।
+অন্যান্য প্রাথমিক কনফিগারেশন বিকল্পগুলো হলো, যেমন, একটি নেটওয়ার্ক বেছে নেওয়া - মেইননেট বা টেস্টনেট, RPC বা WebSockets-এর জন্য HTTP এন্ডপয়েন্ট সক্ষম করা ইত্যাদি। আপনি ক্লায়েন্টের ডকুমেন্টেশনে সমস্ত বৈশিষ্ট্য এবং বিকল্প খুঁজে পেতে পারেন। সরাসরি CLI বা কনফিগ ফাইলে সংশ্লিষ্ট ফ্ল্যাগগুলোর সাথে ক্লায়েন্ট এক্সিকিউট করে বিভিন্ন ক্লায়েন্ট কনফিগারেশন সেট করা যেতে পারে। প্রতিটি ক্লায়েন্ট একটু আলাদা; কনফিগ বিকল্পগুলোর বিশদ বিবরণের জন্য অনুগ্রহ করে সর্বদা এর অফিসিয়াল ডকুমেন্টেশন বা হেল্প পেজ দেখুন।
-পরীক্ষার উদ্দেশ্যে, আপনি টেস্টনেট নেটওয়ার্কগুলির একটিতে একটি ক্লায়েন্ট চালাতে পছন্দ করতে পারেন। [সমর্থিত নেটওয়ার্কগুলির সংক্ষিপ্ত বিবরণ দেখুন](/developers/docs/nodes-and-clients/#execution-clients)।
+পরীক্ষার উদ্দেশ্যে, আপনি টেস্টনেট নেটওয়ার্কগুলোর একটিতে একটি ক্লায়েন্ট চালানো পছন্দ করতে পারেন। [সমর্থিত নেটওয়ার্কগুলোর ওভারভিউ দেখুন](/developers/docs/nodes-and-clients/#execution-clients)।
-মৌলিক কনফিগারেশন সহ এক্সিকিউশন ক্লায়েন্ট চালানোর উদাহরণ পরবর্তী বিভাগে পাওয়া যাবে।
+প্রাথমিক কনফিগারেশন সহ এক্সিকিউশন ক্লায়েন্ট চালানোর উদাহরণ পরবর্তী বিভাগে পাওয়া যাবে।
-#### এক্সিকিউশন ক্লায়েন্ট শুরু করা {#starting-the-execution-client}
+#### এক্সিকিউশন ক্লায়েন্ট শুরু করা {#starting-the-execution-client}
-ইথেরিয়াম ক্লায়েন্ট সফটওয়্যার শুরু করার আগে, আপনার পরিবেশ প্রস্তুত কিনা তা শেষবারের মতো পরীক্ষা করুন। উদাহরণস্বরূপ, নিশ্চিত করুন:
+ইথিরিয়াম ক্লায়েন্ট সফটওয়্যার শুরু করার আগে, আপনার পরিবেশ প্রস্তুত কিনা তা শেষবার পরীক্ষা করুন। উদাহরণস্বরূপ, নিশ্চিত করুন:
-- নির্বাচিত নেটওয়ার্ক এবং সিঙ্ক মোড বিবেচনা করে পর্যাপ্ত ডিস্ক স্পেস রয়েছে।
-- মেমরি এবং সিপিইউ অন্যান্য প্রোগ্রাম দ্বারা বন্ধ করা হয়নি।
-- অপারেটিং সিস্টেম সর্বশেষ সংস্করণে আপডেট করা হয়েছে।
-- সিস্টেমের সঠিক সময় এবং তারিখ আছে।
-- আপনার রাউটার এবং ফায়ারওয়াল লিসেনিং পোর্টে সংযোগ গ্রহণ করে। ডিফল্টরূপে ইথেরিয়াম ক্লায়েন্টরা একটি লিসেনার (TCP) পোর্ট এবং একটি ডিসকভারি (UDP) পোর্ট ব্যবহার করে, উভয়ই ডিফল্টরূপে ৩০৩০৩ পোর্টে।
+- নির্বাচিত নেটওয়ার্ক এবং সিঙ্ক মোড বিবেচনা করে পর্যাপ্ত ডিস্ক স্পেস রয়েছে।
+- মেমরি এবং CPU অন্যান্য প্রোগ্রাম দ্বারা স্থগিত করা হয়নি।
+- অপারেটিং সিস্টেম সর্বশেষ সংস্করণে আপডেট করা হয়েছে।
+- সিস্টেমে সঠিক সময় এবং তারিখ রয়েছে।
+- আপনার রাউটার এবং ফায়ারওয়াল লিসেনিং পোর্টে সংযোগ গ্রহণ করে। ডিফল্টরূপে ইথিরিয়াম ক্লায়েন্টগুলো একটি লিসেনার (TCP) পোর্ট এবং একটি ডিসকভারি (UDP) পোর্ট ব্যবহার করে, উভয়ই ডিফল্টরূপে 30303-এ থাকে।
-সবকিছু ঠিকঠাক কাজ করছে কিনা তা নিশ্চিত করতে সাহায্য করার জন্য প্রথমে আপনার ক্লায়েন্ট একটি টেস্টনেটে চালান।
+সবকিছু সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে সাহায্য করার জন্য প্রথমে একটি টেস্টনেট-এ আপনার ক্লায়েন্ট চালান।
-শুরুতে আপনাকে ডিফল্ট নয় এমন কোনো ক্লায়েন্ট সেটিংস ঘোষণা করতে হবে। আপনার পছন্দের কনফিগারেশন ঘোষণা করতে আপনি ফ্ল্যাগ বা কনফিগ ফাইল ব্যবহার করতে পারেন। প্রতিটি ক্লায়েন্টের বৈশিষ্ট্য এবং কনফিগার সিনট্যাক্সের সেট আলাদা। নির্দিষ্ট বিবরণের জন্য আপনার ক্লায়েন্টের নথিপত্র দেখুন।
+শুরুতে ডিফল্ট নয় এমন যেকোনো ক্লায়েন্ট সেটিংস আপনাকে ঘোষণা করতে হবে। আপনার পছন্দের কনফিগারেশন ঘোষণা করতে আপনি ফ্ল্যাগ বা কনফিগ ফাইল ব্যবহার করতে পারেন। প্রতিটি ক্লায়েন্টের বৈশিষ্ট্যের সেট এবং কনফিগ সিনট্যাক্স আলাদা। সুনির্দিষ্ট তথ্যের জন্য আপনার ক্লায়েন্টের ডকুমেন্টেশন দেখুন।
-এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট [ইঞ্জিন API](https://github.com/ethereum/execution-apis/tree/main/src/engine)-তে নির্দিষ্ট একটি প্রমাণীকৃত এন্ডপয়েন্টের মাধ্যমে যোগাযোগ করে। একটি কনসেন্সাস ক্লায়েন্টের সাথে সংযোগ স্থাপন করার জন্য, এক্সিকিউশন ক্লায়েন্টকে অবশ্যই একটি পরিচিত পথে একটি [`jwtsecret`](https://jwt.io/) তৈরি করতে হবে। নিরাপত্তা এবং স্থিতিশীলতার কারণে, ক্লায়েন্টদের একই মেশিনে চলা উচিত, এবং উভয় ক্লায়েন্টেরই এই পথটি জানা আবশ্যক কারণ এটি তাদের মধ্যে একটি স্থানীয় RPC সংযোগ প্রমাণীকরণের জন্য ব্যবহৃত হয়। এক্সিকিউশন ক্লায়েন্টকে অবশ্যই প্রমাণীকৃত API-গুলির জন্য একটি লিসেনিং পোর্ট নির্ধারণ করতে হবে।
+এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্টগুলো [Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine)-এ নির্দিষ্ট করা একটি প্রমাণীকৃত এন্ডপয়েন্টের মাধ্যমে যোগাযোগ করে। একটি কনসেন্সাস ক্লায়েন্টের সাথে সংযোগ করার জন্য, এক্সিকিউশন ক্লায়েন্টকে অবশ্যই একটি পরিচিত পাথে একটি [`jwtsecret`](https://jwt.io/) তৈরি করতে হবে। নিরাপত্তা এবং স্থিতিশীলতার কারণে, ক্লায়েন্টদের একই মেশিনে চালানো উচিত এবং উভয় ক্লায়েন্টকে অবশ্যই এই পাথটি জানতে হবে কারণ এটি তাদের মধ্যে একটি লোকাল RPC সংযোগ প্রমাণীকরণ করতে ব্যবহৃত হয়। এক্সিকিউশন ক্লায়েন্টকে অবশ্যই প্রমাণীকৃত API-গুলোর জন্য একটি লিসেনিং পোর্ট সংজ্ঞায়িত করতে হবে।
-এই টোকেনটি ক্লায়েন্ট সফটওয়্যার দ্বারা স্বয়ংক্রিয়ভাবে তৈরি হয়, কিন্তু কিছু ক্ষেত্রে, আপনাকে এটি নিজে করতে হতে পারে। আপনি [OpenSSL](https://www.openssl.org/) ব্যবহার করে এটি তৈরি করতে পারেন:
+এই টোকেনটি ক্লায়েন্ট সফটওয়্যার দ্বারা স্বয়ংক্রিয়ভাবে তৈরি হয়, তবে কিছু ক্ষেত্রে, আপনাকে এটি নিজে করতে হতে পারে। আপনি [OpenSSL](https://www.openssl.org/) ব্যবহার করে এটি তৈরি করতে পারেন:
```sh
openssl rand -hex 32 > jwtsecret
```
-#### একটি এক্সিকিউশন ক্লায়েন্ট চালানো {#running-an-execution-client}
+#### একটি এক্সিকিউশন ক্লায়েন্ট চালানো {#running-an-execution-client}
-এই বিভাগটি আপনাকে এক্সিকিউশন ক্লায়েন্ট শুরু করার মাধ্যমে গাইড করবে। এটি শুধুমাত্র একটি মৌলিক কনফিগারেশনের উদাহরণ হিসাবে কাজ করে, যা এই সেটিংসের সাথে ক্লায়েন্ট শুরু করবে:
+এই বিভাগটি আপনাকে এক্সিকিউশন ক্লায়েন্ট শুরু করার মাধ্যমে গাইড করবে। এটি শুধুমাত্র একটি প্রাথমিক কনফিগারেশনের উদাহরণ হিসেবে কাজ করে, যা এই সেটিংসগুলোর সাথে ক্লায়েন্ট শুরু করবে:
-- আমাদের উদাহরণগুলিতে কোন নেটওয়ার্কে সংযোগ করতে হবে, মেইননেট নির্দিষ্ট করে
- - আপনি এর পরিবর্তে আপনার সেটআপের প্রাথমিক পরীক্ষার জন্য [টেস্টনেটগুলির মধ্যে একটি](/developers/docs/networks/) বেছে নিতে পারেন
-- ডেটা ডিরেক্টরি সংজ্ঞায়িত করে, যেখানে ব্লকচেইন সহ সমস্ত ডেটা সংরক্ষণ করা হবে
- - নিশ্চিত করুন যে পথটি একটি আসল পথের সাথে প্রতিস্থাপন করা হয়েছে, যেমন, আপনার বাহ্যিক ড্রাইভে নির্দেশ করে
-- ক্লায়েন্টের সাথে যোগাযোগের জন্য ইন্টারফেস সক্ষম করে
- - কনসেন্সাস ক্লায়েন্টের সাথে যোগাযোগের জন্য JSON-RPC এবং ইঞ্জিন API সহ
-- প্রমাণীকৃত API-এর জন্য `jwtsecret`-এর পাথ সংজ্ঞায়িত করে
- - উদাহরণ পথটিকে একটি আসল পথের সাথে প্রতিস্থাপন করা নিশ্চিত করুন যা ক্লায়েন্টদের দ্বারা অ্যাক্সেস করা যেতে পারে, যেমন, `/tmp/jwtsecret`
+- সংযোগ করার জন্য নেটওয়ার্ক নির্দিষ্ট করে, আমাদের উদাহরণগুলোতে মেইননেট
+ - আপনি এর পরিবর্তে আপনার সেটআপের প্রাথমিক পরীক্ষার জন্য [টেস্টনেটগুলোর একটি](/developers/docs/networks/) বেছে নিতে পারেন
+- ডাটা ডিরেক্টরি সংজ্ঞায়িত করে, যেখানে ব্লকচেইন সহ সমস্ত ডাটা সংরক্ষণ করা হবে
+ - পাথটিকে একটি বাস্তব পাথ দিয়ে প্রতিস্থাপন করতে ভুলবেন না, যেমন, আপনার এক্সটার্নাল ড্রাইভ নির্দেশ করে
+- ক্লায়েন্টের সাথে যোগাযোগের জন্য ইন্টারফেস সক্ষম করে
+ - কনসেন্সাস ক্লায়েন্টের সাথে যোগাযোগের জন্য JSON-RPC এবং Engine API সহ
+- প্রমাণীকৃত API-এর জন্য `jwtsecret`-এর পাথ সংজ্ঞায়িত করে
+ - উদাহরণ পাথটিকে একটি বাস্তব পাথ দিয়ে প্রতিস্থাপন করতে ভুলবেন না যা ক্লায়েন্টদের দ্বারা অ্যাক্সেস করা যেতে পারে, যেমন, `/tmp/jwtsecret`
-অনুগ্রহ করে মনে রাখবেন যে এটি শুধুমাত্র একটি মৌলিক উদাহরণ, অন্য সমস্ত সেটিংস ডিফল্ট হিসাবে সেট করা হবে। ডিফল্ট মান, সেটিংস এবং বৈশিষ্ট্য সম্পর্কে জানতে প্রতিটি ক্লায়েন্টের নথিপত্রে মনোযোগ দিন। আরও বৈশিষ্ট্যের জন্য, উদাহরণস্বরূপ ভ্যালিডেটর চালানো, পর্যবেক্ষণ ইত্যাদি, অনুগ্রহ করে নির্দিষ্ট ক্লায়েন্টের নথিপত্র দেখুন।
+অনুগ্রহ করে মনে রাখবেন যে এটি শুধুমাত্র একটি প্রাথমিক উদাহরণ, অন্যান্য সমস্ত সেটিংস ডিফল্ট হিসেবে সেট করা হবে। ডিফল্ট মান, সেটিংস এবং বৈশিষ্ট্যগুলো সম্পর্কে জানতে প্রতিটি ক্লায়েন্টের ডকুমেন্টেশনের দিকে মনোযোগ দিন। আরও বৈশিষ্ট্যের জন্য, উদাহরণস্বরূপ ভ্যালিডেটরস চালানো, পর্যবেক্ষণ ইত্যাদির জন্য, অনুগ্রহ করে নির্দিষ্ট ক্লায়েন্টের ডকুমেন্টেশন দেখুন।
-> লক্ষ্য করুন যে উদাহরণগুলিতে ব্যাকস্ল্যাশগুলি `` শুধুমাত্র বিন্যাসের উদ্দেশ্যে; কনফিগারেশন ফ্ল্যাগগুলি একটি একক লাইনে সংজ্ঞায়িত করা যেতে পারে।
+> মনে রাখবেন যে উদাহরণগুলোতে ব্যাকস্ল্যাশ `\` শুধুমাত্র ফরম্যাটিংয়ের উদ্দেশ্যে দেওয়া হয়েছে; কনফিগ ফ্ল্যাগগুলো একটি একক লাইনে সংজ্ঞায়িত করা যেতে পারে।
##### Besu চালানো
-এই উদাহরণটি মেইননেটে Besu শুরু করে, `/data/ethereum`-এ ডিফল্ট বিন্যাসে ব্লকচেইন ডেটা সংরক্ষণ করে, কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য JSON-RPC এবং ইঞ্জিন RPC সক্ষম করে। ইঞ্জিন API টোকেন `jwtsecret` দিয়ে প্রমাণীকৃত এবং শুধুমাত্র `localhost` থেকে কল করার অনুমতি দেওয়া হয়।
+এই উদাহরণটি মেইননেট-এ Besu শুরু করে, `/data/ethereum`-এ ডিফল্ট ফরম্যাটে ব্লকচেইন ডাটা সংরক্ষণ করে, কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য JSON-RPC এবং Engine RPC সক্ষম করে। Engine API টোকেন `jwtsecret` দিয়ে প্রমাণীকৃত হয় এবং শুধুমাত্র `localhost` থেকে কল করার অনুমতি দেওয়া হয়।
```sh
besu --network=mainnet \
@@ -251,17 +251,17 @@ besu --network=mainnet \
--engine-jwt-secret=/path/to/jwtsecret
```
-Besu একটি লঞ্চার বিকল্পের সাথেও আসে যা একাধিক প্রশ্ন জিজ্ঞাসা করবে এবং কনফিগারেশন ফাইল তৈরি করবে। ইন্টারেক্টিভ লঞ্চারটি ব্যবহার করে চালান:
+Besu একটি লঞ্চার বিকল্পের সাথেও আসে যা একাধিক প্রশ্ন জিজ্ঞাসা করবে এবং কনফিগ ফাইল তৈরি করবে। এটি ব্যবহার করে ইন্টারেক্টিভ লঞ্চার চালান:
```sh
besu --Xlauncher
```
-[Besu-এর নথিপত্রে](https://besu.hyperledger.org/public-networks/get-started/start-node/) অতিরিক্ত বিকল্প এবং কনফিগারেশনের বিবরণ রয়েছে।
+[Besu-এর ডকুমেন্টেশনে](https://besu.hyperledger.org/public-networks/get-started/start-node/) অতিরিক্ত বিকল্প এবং কনফিগারেশনের বিশদ বিবরণ রয়েছে।
##### Erigon চালানো
-এই উদাহরণটি মেইননেটে Erigon শুরু করে, `/data/ethereum`-এ ব্লকচেইন ডেটা সংরক্ষণ করে, JSON-RPC সক্ষম করে, কোন নেমস্পেসগুলি অনুমোদিত তা সংজ্ঞায়িত করে এবং কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য প্রমাণীকরণ সক্ষম করে যা `jwtsecret` পাথ দ্বারা সংজ্ঞায়িত করা হয়।
+এই উদাহরণটি মেইননেট-এ Erigon শুরু করে, `/data/ethereum`-এ ব্লকচেইন ডাটা সংরক্ষণ করে, JSON-RPC সক্ষম করে, কোন নেমস্পেসগুলো অনুমোদিত তা সংজ্ঞায়িত করে এবং কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য প্রমাণীকরণ সক্ষম করে যা `jwtsecret` পাথ দ্বারা সংজ্ঞায়িত করা হয়।
```sh
erigon --chain mainnet \
@@ -270,11 +270,11 @@ erigon --chain mainnet \
--authrpc.jwtsecret=/path/to/jwtsecret
```
-Erigon ডিফল্টরূপে ৮GB HDD দিয়ে একটি সম্পূর্ণ সিঙ্ক সম্পাদন করে যার ফলে ২TB-এর বেশি আর্কাইভ ডেটা হবে। `datadir` পর্যাপ্ত খালি স্থান সহ ডিস্কের দিকে নির্দেশ করছে কিনা তা নিশ্চিত করুন অথবা `--prune` ফ্ল্যাগের দিকে নজর দিন যা বিভিন্ন ধরণের ডেটা ছাঁটাই করতে পারে। আরও জানতে Erigon-এর `--help` দেখুন।
+Erigon ডিফল্টরূপে 8GB HDD-এর সাথে একটি ফুল সিঙ্ক সম্পাদন করে যার ফলে 2TB-এর বেশি আর্কাইভ ডাটা তৈরি হবে। নিশ্চিত করুন যে `datadir` পর্যাপ্ত ফ্রি স্পেস সহ ডিস্ক নির্দেশ করছে বা `--prune` ফ্ল্যাগটি দেখুন যা বিভিন্ন ধরণের ডাটা ট্রিম করতে পারে। আরও জানতে Erigon-এর `--help` চেক করুন।
##### Geth চালানো
-এই উদাহরণটি মেইননেটে Geth শুরু করে, `/data/ethereum`-এ ব্লকচেইন ডেটা সংরক্ষণ করে, JSON-RPC সক্ষম করে এবং কোন নেমস্পেসগুলি অনুমোদিত তা সংজ্ঞায়িত করে। এটি কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য প্রমাণীকরণও সক্ষম করে যার জন্য `jwtsecret`-এর পথ প্রয়োজন এবং কোন সংযোগগুলি অনুমোদিত তা সংজ্ঞায়িত করে, আমাদের উদাহরণে শুধুমাত্র `localhost` থেকে।
+এই উদাহরণটি মেইননেট-এ Geth শুরু করে, `/data/ethereum`-এ ব্লকচেইন ডাটা সংরক্ষণ করে, JSON-RPC সক্ষম করে এবং কোন নেমস্পেসগুলো অনুমোদিত তা সংজ্ঞায়িত করে। এটি কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য প্রমাণীকরণও সক্ষম করে যার জন্য `jwtsecret`-এর পাথ প্রয়োজন এবং কোন সংযোগগুলো অনুমোদিত তা সংজ্ঞায়িত করার বিকল্পও প্রয়োজন, আমাদের উদাহরণে শুধুমাত্র `localhost` থেকে।
```sh
geth --mainnet \
@@ -285,11 +285,11 @@ geth --mainnet \
--authrpc.jwtsecret=/path/to/jwtsecret
```
-[সমস্ত কনফিগারেশন বিকল্পের জন্য ডক্স দেখুন](https://geth.ethereum.org/docs/fundamentals/command-line-options) এবং [একটি কনসেন্সাস ক্লায়েন্টের সাথে Geth চালানো](https://geth.ethereum.org/docs/getting-started/consensus-clients) সম্পর্কে আরও জানুন।
+[সমস্ত কনফিগারেশন বিকল্পের জন্য ডক্স](https://geth.ethereum.org/docs/fundamentals/command-line-options) চেক করুন এবং [একটি কনসেন্সাস ক্লায়েন্টের সাথে Geth চালানো](https://geth.ethereum.org/docs/getting-started/consensus-clients) সম্পর্কে আরও জানুন।
##### Nethermind চালানো
-Nethermind বিভিন্ন [ইনস্টলেশন বিকল্প](https://docs.nethermind.io/get-started/installing-nethermind) অফার করে। প্যাকেজটি একটি গাইডেড সেটআপ সহ একটি লঞ্চার সহ বিভিন্ন বাইনারি নিয়ে আসে, যা আপনাকে ইন্টারেক্টিভভাবে কনফিগারেশন তৈরি করতে সাহায্য করবে। বিকল্পভাবে, আপনি রানার খুঁজে পাবেন যা নিজেই এক্সিকিউটেবল এবং আপনি এটি কেবল কনফিগারেশন ফ্ল্যাগ দিয়ে চালাতে পারেন। JSON-RPC ডিফল্টরূপে সক্রিয় থাকে।
+Nethermind বিভিন্ন [ইনস্টলেশন বিকল্প](https://docs.nethermind.io/get-started/installing-nethermind) অফার করে। প্যাকেজটি বিভিন্ন বাইনারি নিয়ে আসে, যার মধ্যে একটি গাইডেড সেটআপ সহ একটি লঞ্চার রয়েছে, যা আপনাকে ইন্টারেক্টিভভাবে কনফিগারেশন তৈরি করতে সাহায্য করবে। বিকল্পভাবে, আপনি রানার খুঁজে পেতে পারেন যা নিজেই এক্সিকিউটেবল এবং আপনি এটিকে শুধু কনফিগ ফ্ল্যাগ দিয়ে চালাতে পারেন। JSON-RPC ডিফল্টরূপে সক্ষম করা থাকে।
```sh
Nethermind.Runner --config mainnet \
@@ -297,13 +297,13 @@ Nethermind.Runner --config mainnet \
--JsonRpc.JwtSecretFile=/path/to/jwtsecret
```
-Nethermind ডক্স কনসেন্সাস ক্লায়েন্টের সাথে Nethermind চালানোর উপর একটি [সম্পূর্ণ গাইড](https://docs.nethermind.io/get-started/running-node/) অফার করে।
+Nethermind ডক্স কনসেন্সাস ক্লায়েন্টের সাথে Nethermind চালানোর বিষয়ে একটি [সম্পূর্ণ গাইড](https://docs.nethermind.io/get-started/running-node/) অফার করে।
-একটি এক্সিকিউশন ক্লায়েন্ট তার মূল ফাংশন, নির্বাচিত এন্ডপয়েন্ট শুরু করবে এবং পিয়ারদের সন্ধান শুরু করবে। সফলভাবে পিয়ারদের আবিষ্কার করার পরে, ক্লায়েন্ট সিঙ্ক্রোনাইজেশন শুরু করে। এক্সিকিউশন ক্লায়েন্ট কনসেন্সাস ক্লায়েন্টের কাছ থেকে সংযোগের জন্য অপেক্ষা করবে। ক্লায়েন্ট সফলভাবে বর্তমান স্টেটে সিঙ্ক হয়ে গেলে বর্তমান ব্লকচেইন ডেটা উপলব্ধ হবে।
+একটি এক্সিকিউশন ক্লায়েন্ট এর মূল ফাংশন, নির্বাচিত এন্ডপয়েন্টগুলো শুরু করবে এবং পিয়ারদের সন্ধান করতে শুরু করবে। সফলভাবে পিয়ারদের আবিষ্কার করার পরে, ক্লায়েন্ট সিঙ্ক্রোনাইজেশন শুরু করে। এক্সিকিউশন ক্লায়েন্ট কনসেন্সাস ক্লায়েন্ট থেকে একটি সংযোগের জন্য অপেক্ষা করবে। ক্লায়েন্ট সফলভাবে বর্তমান স্টেট-এ সিঙ্ক হয়ে গেলে বর্তমান ব্লকচেইন ডাটা উপলব্ধ হবে।
##### Reth চালানো
-এই উদাহরণটি মেইননেটে Reth শুরু করে, ডিফল্ট ডেটা অবস্থান ব্যবহার করে। JSON-RPC এবং ইঞ্জিন RPC প্রমাণীকরণ সক্ষম করে কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য যা `jwtsecret` পাথ দ্বারা সংজ্ঞায়িত করা হয়, শুধুমাত্র `localhost` থেকে কল করার অনুমতি দেওয়া হয়।
+এই উদাহরণটি ডিফল্ট ডাটা লোকেশন ব্যবহার করে মেইননেট-এ Reth শুরু করে। কনসেন্সাস ক্লায়েন্ট সংযোগ করার জন্য JSON-RPC এবং Engine RPC প্রমাণীকরণ সক্ষম করে যা `jwtsecret` পাথ দ্বারা সংজ্ঞায়িত করা হয়, যেখানে শুধুমাত্র `localhost` থেকে কল করার অনুমতি দেওয়া হয়।
```sh
reth node \
@@ -312,23 +312,23 @@ reth node \
--authrpc.port 8551
```
-ডিফল্ট ডেটা ডিরেক্টরি সম্পর্কে আরও জানতে [Reth কনফিগার করা](https://reth.rs/run/config.html?highlight=data%20directory#configuring-reth) দেখুন। [Reth-এর নথিপত্রে](https://reth.rs/run/mainnet.html) অতিরিক্ত বিকল্প এবং কনফিগারেশনের বিবরণ রয়েছে।
+ডিফল্ট ডাটা ডিরেক্টরি সম্পর্কে আরও জানতে [Reth কনফিগার করা](https://reth.rs/run/config.html?highlight=data%20directory#configuring-reth) দেখুন। [Reth-এর ডকুমেন্টেশনে](https://reth.rs/run/mainnet.html) অতিরিক্ত বিকল্প এবং কনফিগারেশনের বিশদ বিবরণ রয়েছে।
-#### কনসেন্সাস ক্লায়েন্ট শুরু করা {#starting-the-consensus-client}
+#### কনসেন্সাস ক্লায়েন্ট শুরু করা {#starting-the-consensus-client}
-এক্সিকিউশন ক্লায়েন্টের সাথে একটি স্থানীয় RPC সংযোগ স্থাপন করতে কনসেন্সাস ক্লায়েন্টকে সঠিক পোর্ট কনফিগারেশনের সাথে শুরু করতে হবে। কনসেন্সাস ক্লায়েন্টগুলিকে কনফিগারেশন আর্গুমেন্ট হিসাবে উন্মুক্ত এক্সিকিউশন ক্লায়েন্ট পোর্টের সাথে চালাতে হবে।
+এক্সিকিউশন ক্লায়েন্টের সাথে একটি লোকাল RPC সংযোগ স্থাপন করতে কনসেন্সাস ক্লায়েন্টকে অবশ্যই সঠিক পোর্ট কনফিগারেশনের সাথে শুরু করতে হবে। কনসেন্সাস ক্লায়েন্টগুলোকে কনফিগারেশন আর্গুমেন্ট হিসেবে এক্সপোজ করা এক্সিকিউশন ক্লায়েন্ট পোর্টের সাথে চালাতে হবে।
-কনসেন্সাস ক্লায়েন্টকে তাদের মধ্যে RPC সংযোগ প্রমাণীকরণের জন্য এক্সিকিউশন ক্লায়েন্টের `jwt-secret`-এর পথও প্রয়োজন। উপরের এক্সিকিউশন উদাহরণগুলির মতো, প্রতিটি কনসেন্সাস ক্লায়েন্টের একটি কনফিগারেশন ফ্ল্যাগ রয়েছে যা jwt টোকেন ফাইলের পথটি আর্গুমেন্ট হিসাবে নেয়। এটি অবশ্যই এক্সিকিউশন ক্লায়েন্টকে দেওয়া `jwtsecret` পাথের সাথে সামঞ্জস্যপূর্ণ হতে হবে।
+তাদের মধ্যে RPC সংযোগ প্রমাণীকরণ করার জন্য কনসেন্সাস ক্লায়েন্টের এক্সিকিউশন ক্লায়েন্টের `jwt-secret`-এর পাথও প্রয়োজন। উপরের এক্সিকিউশন উদাহরণগুলোর মতো, প্রতিটি কনসেন্সাস ক্লায়েন্টের একটি কনফিগারেশন ফ্ল্যাগ থাকে যা jwt টোকেন ফাইল পাথকে একটি আর্গুমেন্ট হিসেবে নেয়। এটি অবশ্যই এক্সিকিউশন ক্লায়েন্টকে দেওয়া `jwtsecret` পাথের সাথে সামঞ্জস্যপূর্ণ হতে হবে।
-আপনি যদি একটি ভ্যালিডেটর চালানোর পরিকল্পনা করেন, তাহলে ফি প্রাপকের ইথেরিয়াম ঠিকানা নির্দিষ্ট করে একটি কনফিগারেশন ফ্ল্যাগ যোগ করতে ভুলবেন না। এখানে আপনার ভ্যালিডেটরের জন্য ইথার পুরস্কার জমা হয়। প্রতিটি কনসেন্সাস ক্লায়েন্টের একটি বিকল্প আছে, যেমন, `--suggested-fee-recipient=0xabcd1`, যা আর্গুমেন্ট হিসাবে একটি ইথেরিয়াম ঠিকানা নেয়।
+আপনি যদি একটি ভ্যালিডেটর চালানোর পরিকল্পনা করেন, তবে ফি প্রাপকের ইথিরিয়াম এডড্রেস নির্দিষ্ট করে একটি কনফিগারেশন ফ্ল্যাগ যোগ করতে ভুলবেন না। এখানেই আপনার ভ্যালিডেটরের জন্য ইথার রিওয়ার্ড জমা হয়। প্রতিটি কনসেন্সাস ক্লায়েন্টের একটি বিকল্প থাকে, যেমন, `--suggested-fee-recipient=0xabcd1`, যা একটি ইথিরিয়াম এডড্রেসকে আর্গুমেন্ট হিসেবে নেয়।
-একটি টেস্টনেটে একটি বীকন নোড শুরু করার সময়, আপনি [চেকপয়েন্ট সিঙ্ক](https://notes.ethereum.org/@launchpad/checkpoint-sync)-এর জন্য একটি পাবলিক এন্ডপয়েন্ট ব্যবহার করে উল্লেখযোগ্য সিঙ্কিং সময় বাঁচাতে পারেন।
+একটি টেস্টনেট-এ একটি বিকন নোড শুরু করার সময়, আপনি [চেকপয়েন্ট সিঙ্ক](https://notes.ethereum.org/@launchpad/checkpoint-sync)-এর জন্য একটি পাবলিক এন্ডপয়েন্ট ব্যবহার করে উল্লেখযোগ্য সিঙ্কিং সময় বাঁচাতে পারেন।
-#### একটি কনসেন্সাস ক্লায়েন্ট চালানো {#running-a-consensus-client}
+#### একটি কনসেন্সাস ক্লায়েন্ট চালানো {#running-a-consensus-client}
##### Lighthouse চালানো
-Lighthouse চালানোর আগে, [Lighthouse Book](https://lighthouse-book.sigmaprime.io/installation.html)-এ কীভাবে এটি ইনস্টল এবং কনফিগার করতে হয় সে সম্পর্কে আরও জানুন।
+Lighthouse চালানোর আগে, [Lighthouse Book](https://lighthouse-book.sigmaprime.io/installation.html)-এ কীভাবে এটি ইনস্টল এবং কনফিগার করতে হয় সে সম্পর্কে আরও জানুন।
```sh
lighthouse beacon_node \
@@ -341,7 +341,7 @@ lighthouse beacon_node \
##### Lodestar চালানো
-Lodestar সফটওয়্যার কম্পাইল করে বা ডকার ইমেজ ডাউনলোড করে ইনস্টল করুন। [ডক্স](https://chainsafe.github.io/lodestar/) এবং আরও ব্যাপক [সেটআপ গাইড](https://hackmd.io/@philknows/rk5cDvKmK) এ আরও জানুন।
+Lodestar সফটওয়্যারটি কম্পাইল করে বা ডকার ইমেজ ডাউনলোড করে ইনস্টল করুন। [ডক্স](https://chainsafe.github.io/lodestar/) এবং আরও ব্যাপক [সেটআপ গাইড](https://hackmd.io/@philknows/rk5cDvKmK)-এ আরও জানুন।
```sh
lodestar beacon \
@@ -354,8 +354,8 @@ lodestar beacon \
##### Nimbus চালানো
-Nimbus কনসেন্সাস এবং এক্সিকিউশন উভয় ক্লায়েন্টের সাথেই আসে। এটি এমনকি খুব সাধারণ কম্পিউটিং পাওয়ার সহ বিভিন্ন ডিভাইসেও চলতে পারে।
-[ডিপেন্ডেন্সি এবং Nimbus নিজে ইনস্টল করার পরে](https://nimbus.guide/quick-start.html), আপনি এর কনসেন্সাস ক্লায়েন্ট চালাতে পারেন:
+Nimbus কনসেন্সাস এবং এক্সিকিউশন ক্লায়েন্ট উভয়ের সাথেই আসে। এটি খুব সাধারণ কম্পিউটিং শক্তি সহ বিভিন্ন ডিভাইসে চালানো যেতে পারে।
+[ডিপেন্ডেন্সি এবং Nimbus নিজে ইনস্টল করার](https://nimbus.guide/quick-start.html) পরে, আপনি এর কনসেন্সাস ক্লায়েন্ট চালাতে পারেন:
```sh
nimbus_beacon_node \
@@ -367,7 +367,7 @@ nimbus_beacon_node \
##### Prysm চালানো
-Prysm একটি স্ক্রিপ্টের সাথে আসে যা সহজ স্বয়ংক্রিয় ইনস্টলেশন করতে দেয়। [Prysm ডক্স](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/)-এ বিশদ বিবরণ পাওয়া যাবে।
+Prysm স্ক্রিপ্টের সাথে আসে যা সহজে স্বয়ংক্রিয় ইনস্টলেশনের অনুমতি দেয়। বিস্তারিত [Prysm ডক্স](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/)-এ পাওয়া যাবে।
```sh
./prysm.sh beacon-chain \
@@ -386,98 +386,98 @@ teku --network mainnet \
--ee-jwt-secret-file "/path/to/jwtsecret"
```
-যখন একটি কনসেন্সাস ক্লায়েন্ট ডিপোজিট কন্ট্র্যাক্ট পড়তে এবং ভ্যালিডেটরদের শনাক্ত করতে এক্সিকিউশন ক্লায়েন্টের সাথে সংযোগ স্থাপন করে, তখন এটি অন্যান্য বীকন নোড পিয়ারদের সাথেও সংযোগ স্থাপন করে এবং জেনেসিস থেকে কনসেন্সাস স্লট সিঙ্ক করা শুরু করে। একবার বীকন নোড বর্তমান ইপকে পৌঁছে গেলে, বীকন API আপনার ভ্যালিডেটরদের জন্য ব্যবহারযোগ্য হয়ে ওঠে। [বীকন নোড API](https://eth2docs.vercel.app/) সম্পর্কে আরও জানুন।
+যখন একটি কনসেন্সাস ক্লায়েন্ট ডিপোজিট কন্টাক্ট পড়তে এবং ভ্যালিডেটরস সনাক্ত করতে এক্সিকিউশন ক্লায়েন্টের সাথে সংযোগ করে, তখন এটি অন্যান্য বিকন নোড পিয়ারদের সাথেও সংযোগ করে এবং জেনেসিস থেকে কনসেন্সাস স্লটগুলো সিঙ্ক করা শুরু করে। বিকন নোড বর্তমান এপোক-এ পৌঁছানোর পরে, বিকন API আপনার ভ্যালিডেটরস-এর জন্য ব্যবহারযোগ্য হয়ে ওঠে। [বিকন নোড API](https://eth2docs.vercel.app/) সম্পর্কে আরও জানুন।
-### ভ্যালিডেটর যোগ করা {#adding-validators}
+### ভ্যালিডেটরস যোগ করা {#adding-validators}
-একটি কনসেন্সাস ক্লায়েন্ট ভ্যালিডেটরদের সংযোগের জন্য একটি বীকন নোড হিসাবে কাজ করে। প্রতিটি কনসেন্সাস ক্লায়েন্টের নিজস্ব ভ্যালিডেটর সফটওয়্যার রয়েছে যা তাদের নিজ নিজ নথিপত্রে বিশদভাবে বর্ণনা করা হয়েছে।
+একটি কনসেন্সাস ক্লায়েন্ট ভ্যালিডেটরস-এর সংযোগ করার জন্য একটি বিকন নোড হিসেবে কাজ করে। প্রতিটি কনসেন্সাস ক্লায়েন্টের নিজস্ব ভ্যালিডেটর সফটওয়্যার রয়েছে যা এর নিজ নিজ ডকুমেন্টেশনে বিস্তারিতভাবে বর্ণনা করা হয়েছে।
-আপনার নিজের ভ্যালিডেটর চালানো [একক স্টেকিং](/staking/solo/) করার সুযোগ দেয়, যা ইথেরিয়াম নেটওয়ার্ককে সমর্থন করার জন্য সবচেয়ে প্রভাবশালী এবং বিশ্বাসহীন পদ্ধতি। তবে, এর জন্য ৩২ ETH জমা দিতে হবে। আপনার নিজের নোডে কম পরিমাণে ভ্যালিডেটর চালানোর জন্য, অনুমতিহীন নোড অপারেটর সহ একটি বিকেন্দ্রীভূত পুল, যেমন [রকেট পুল](https://rocketpool.net/node-operators), আপনার আগ্রহের কারণ হতে পারে।
+আপনার নিজস্ব ভ্যালিডেটর চালানো [সোলো স্টেকিং](/staking/solo/)-এর অনুমতি দেয়, যা ইথিরিয়াম নেটওয়ার্ককে সমর্থন করার সবচেয়ে প্রভাবশালী এবং ট্রাস্টলেস পদ্ধতি। তবে, এর জন্য 32 ETH ডিপোজিট প্রয়োজন। অল্প পরিমাণ দিয়ে আপনার নিজস্ব নোডে একটি ভ্যালিডেটর চালানোর জন্য, পারমিশনলেস নোড অপারেটরদের সাথে একটি ডিসেন্ট্রালাইজড পুল, যেমন [Rocket Pool](https://rocketpool.net/node-operators), আপনার আগ্রহের হতে পারে।
-স্টেকিং এবং ভ্যালিডেটর কী জেনারেশন শুরু করার সবচেয়ে সহজ উপায় হল [হুডি টেস্টনেট স্টেকিং লঞ্চপ্যাড](https://hoodi.launchpad.ethereum.org/) ব্যবহার করা, যা আপনাকে [হুডিতে নোড চালিয়ে](https://notes.ethereum.org/@launchpad/hoodi) আপনার সেটআপ পরীক্ষা করার অনুমতি দেয়। আপনি যখন মেইননেটের জন্য প্রস্তুত হবেন, তখন আপনি [মেইননেট স্টেকিং লঞ্চপ্যাড](https://launchpad.ethereum.org/) ব্যবহার করে এই ধাপগুলি পুনরাবৃত্তি করতে পারেন।
+স্টেকিং এবং ভ্যালিডেটর কি জেনারেশন শুরু করার সবচেয়ে সহজ উপায় হলো [Hoodi Testnet Staking Launchpad](https://hoodi.launchpad.ethereum.org/) ব্যবহার করা, যা আপনাকে [Hoodi-তে নোড চালিয়ে](https://notes.ethereum.org/@launchpad/hoodi) আপনার সেটআপ পরীক্ষা করার অনুমতি দেয়। আপনি যখন মেইননেট-এর জন্য প্রস্তুত হবেন, তখন আপনি [Mainnet Staking Launchpad](https://launchpad.ethereum.org/) ব্যবহার করে এই ধাপগুলোর পুনরাবৃত্তি করতে পারেন।
-স্টেকিং বিকল্পগুলির একটি সংক্ষিপ্ত বিবরণের জন্য [স্টেকিং পৃষ্ঠা](/staking) দেখুন।
+স্টেকিং বিকল্পগুলো সম্পর্কে একটি ওভারভিউয়ের জন্য [স্টেকিং পেজ](/staking) দেখুন।
### নোড ব্যবহার করা {#using-the-node}
-এক্সিকিউশন ক্লায়েন্টরা [RPC API এন্ডপয়েন্ট](/developers/docs/apis/json-rpc/) অফার করে যা আপনি লেনদেন জমা দিতে, ইথেরিয়াম নেটওয়ার্কে স্মার্ট কন্ট্র্যাক্টগুলির সাথে ইন্টারঅ্যাক্ট করতে বা বিভিন্ন উপায়ে স্থাপন করতে ব্যবহার করতে পারেন:
+এক্সিকিউশন ক্লায়েন্টগুলো [RPC API এন্ডপয়েন্ট](/developers/docs/apis/json-rpc/) অফার করে যা আপনি লেনদেন জমা দিতে, ইথিরিয়াম নেটওয়ার্ক-এ বিভিন্ন উপায়ে স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করতে বা ডিপ্লয় করতে ব্যবহার করতে পারেন:
-- একটি উপযুক্ত প্রোটোকল দিয়ে ম্যানুয়ালি তাদের কল করা (যেমন, `curl` ব্যবহার করে)
+- একটি উপযুক্ত প্রটোকল দিয়ে ম্যানুয়ালি তাদের কল করা (যেমন, `curl` ব্যবহার করে)
- একটি প্রদত্ত কনসোল সংযুক্ত করা (যেমন, `geth attach`)
-- web3 লাইব্রেরি ব্যবহার করে অ্যাপ্লিকেশনগুলিতে সেগুলি প্রয়োগ করা, যেমন, [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview), [ethers](https://github.com/ethers-io/ethers.js/)
+- ওয়েব3 লাইব্রেরি ব্যবহার করে অ্যাপ্লিকেশনগুলোতে তাদের ইমপ্লিমেন্ট করা, যেমন, [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview), [ethers](https://github.com/ethers-io/ethers.js/)
-বিভিন্ন ক্লায়েন্টের RPC এন্ডপয়েন্টগুলির বিভিন্ন ইমপ্লিমেন্টেশন রয়েছে। কিন্তু একটি স্ট্যান্ডার্ড JSON-RPC আছে যা আপনি প্রতিটি ক্লায়েন্টের সাথে ব্যবহার করতে পারেন। একটি সংক্ষিপ্ত বিবরণের জন্য [JSON-RPC ডক্স](/developers/docs/apis/json-rpc/) পড়ুন। ইথেরিয়াম নেটওয়ার্ক থেকে তথ্যের প্রয়োজন হয় এমন অ্যাপ্লিকেশনগুলি এই RPC ব্যবহার করতে পারে। উদাহরণস্বরূপ, জনপ্রিয় ওয়ালেট MetaMask আপনাকে [আপনার নিজস্ব RPC এন্ডপয়েন্টে সংযোগ করতে](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node) দেয় যার শক্তিশালী গোপনীয়তা এবং নিরাপত্তা সুবিধা রয়েছে।
+বিভিন্ন ক্লায়েন্টের RPC এন্ডপয়েন্টগুলোর বিভিন্ন ইমপ্লিমেন্টেশন রয়েছে। তবে একটি স্ট্যান্ডার্ড JSON-RPC রয়েছে যা আপনি প্রতিটি ক্লায়েন্টের সাথে ব্যবহার করতে পারেন। একটি ওভারভিউয়ের জন্য [JSON-RPC ডক্স পড়ুন](/developers/docs/apis/json-rpc/)। ইথিরিয়াম নেটওয়ার্ক থেকে তথ্যের প্রয়োজন এমন অ্যাপ্লিকেশনগুলো এই RPC ব্যবহার করতে পারে। উদাহরণস্বরূপ, জনপ্রিয় ওয়ালেট MetaMask আপনাকে [আপনার নিজস্ব RPC এন্ডপয়েন্টের সাথে সংযোগ করতে](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node) দেয় যার শক্তিশালী গোপনীয়তা এবং নিরাপত্তা সুবিধা রয়েছে।
-কনসেন্সাস ক্লায়েন্টরা সকলেই একটি [বীকন API](https://ethereum.github.io/beacon-APIs) প্রকাশ করে যা কনসেন্সাস ক্লায়েন্টের স্থিতি পরীক্ষা করতে বা [Curl](https://curl.se)-এর মতো সরঞ্জাম ব্যবহার করে অনুরোধ পাঠিয়ে ব্লক এবং কনসেন্সাস ডেটা ডাউনলোড করতে ব্যবহার করা যেতে পারে। এই বিষয়ে আরও তথ্য প্রতিটি কনসেন্সাস ক্লায়েন্টের জন্য নথিপত্রে পাওয়া যাবে।
+সমস্ত কনসেন্সাস ক্লায়েন্ট একটি [বিকন API](https://ethereum.github.io/beacon-APIs) এক্সপোজ করে যা কনসেন্সাস ক্লায়েন্টের স্ট্যাটাস চেক করতে বা [Curl](https://curl.se)-এর মতো টুল ব্যবহার করে রিকোয়েস্ট পাঠিয়ে ব্লকস এবং কনসেন্সাস ডাটা ডাউনলোড করতে ব্যবহার করা যেতে পারে। প্রতিটি কনসেন্সাস ক্লায়েন্টের ডকুমেন্টেশনে এই বিষয়ে আরও তথ্য পাওয়া যাবে।
#### RPC-তে পৌঁছানো {#reaching-rpc}
-এক্সিকিউশন ক্লায়েন্ট JSON-RPC-এর জন্য ডিফল্ট পোর্ট হল `8545` কিন্তু আপনি কনফিগারেশনে স্থানীয় এন্ডপয়েন্টগুলির পোর্ট পরিবর্তন করতে পারেন। ডিফল্টরূপে, RPC ইন্টারফেস শুধুমাত্র আপনার কম্পিউটারের লোকালহোস্টে পৌঁছানো যায়। এটিকে দূর থেকে অ্যাক্সেসযোগ্য করতে, আপনি ঠিকানাটি `0.0.0.0`-এ পরিবর্তন করে এটিকে সর্বজনীনভাবে প্রকাশ করতে চাইতে পারেন। এটি এটিকে স্থানীয় নেটওয়ার্ক এবং পাবলিক আইপি ঠিকানার মাধ্যমে পৌঁছানো সম্ভব করবে। বেশিরভাগ ক্ষেত্রে আপনাকে আপনার রাউটারে পোর্ট ফরওয়ার্ডিং সেট আপ করতে হবে।
+এক্সিকিউশন ক্লায়েন্ট JSON-RPC-এর জন্য ডিফল্ট পোর্ট হলো `8545` তবে আপনি কনফিগারেশনে লোকাল এন্ডপয়েন্টগুলোর পোর্ট পরিবর্তন করতে পারেন। ডিফল্টরূপে, RPC ইন্টারফেসটি শুধুমাত্র আপনার কম্পিউটারের লোকালহোস্টে পৌঁছানো যায়। এটিকে দূরবর্তীভাবে অ্যাক্সেসযোগ্য করার জন্য, আপনি এডড্রেসটিকে `0.0.0.0`-এ পরিবর্তন করে এটিকে সর্বজনীনভাবে এক্সপোজ করতে চাইতে পারেন। এটি এটিকে লোকাল নেটওয়ার্ক এবং পাবলিক আইপি এডড্রেসগুলোর মাধ্যমে পৌঁছানো সম্ভব করবে। বেশিরভাগ ক্ষেত্রে আপনাকে আপনার রাউটারে পোর্ট ফরওয়ার্ডিং সেট আপ করতে হবে।
-ইন্টারনেটে পোর্টগুলি প্রকাশ করার সময় সতর্ক থাকুন কারণ এটি ইন্টারনেটের যে কাউকে আপনার নোড নিয়ন্ত্রণ করতে দেবে। ক্ষতিকারক অভিনেতারা আপনার নোড অ্যাক্সেস করে আপনার সিস্টেমকে ডাউন করতে বা আপনার তহবিল চুরি করতে পারে যদি আপনি আপনার ক্লায়েন্টকে ওয়ালেট হিসাবে ব্যবহার করেন।
+ইন্টারনেটে পোর্ট এক্সপোজ করার ক্ষেত্রে সতর্কতা অবলম্বন করুন কারণ এটি ইন্টারনেটের যে কাউকে আপনার নোড নিয়ন্ত্রণ করতে দেবে। ক্ষতিকারক ব্যক্তিরা আপনার সিস্টেম ডাউন করতে বা আপনি যদি আপনার ক্লায়েন্টকে ওয়ালেট হিসেবে ব্যবহার করেন তবে আপনার ফান্ড চুরি করতে আপনার নোড অ্যাক্সেস করতে পারে।
-এর একটি উপায় হল সম্ভাব্য ক্ষতিকারক RPC পদ্ধতিগুলিকে পরিবর্তনযোগ্য হওয়া থেকে বিরত রাখা। উদাহরণস্বরূপ, Geth-এর সাথে, আপনি একটি ফ্ল্যাগ দিয়ে পরিবর্তনযোগ্য পদ্ধতি ঘোষণা করতে পারেন: `--http.api web3,eth,txpool`।
+এর একটি উপায় হলো সম্ভাব্য ক্ষতিকারক RPC মেথডগুলোকে পরিবর্তনযোগ্য হওয়া থেকে প্রতিরোধ করা। উদাহরণস্বরূপ, Geth-এর সাথে, আপনি একটি ফ্ল্যাগ দিয়ে পরিবর্তনযোগ্য মেথডগুলো ঘোষণা করতে পারেন: `--http.api web3,eth,txpool`।
-RPC ইন্টারফেসে অ্যাক্সেস এজ লেয়ার API বা ওয়েব সার্ভার অ্যাপ্লিকেশন, যেমন Nginx, তৈরি করে এবং সেগুলিকে আপনার ক্লায়েন্টের স্থানীয় ঠিকানা এবং পোর্টের সাথে সংযোগ করে বাড়ানো যেতে পারে। একটি মধ্যম স্তরের ব্যবহার ডেভেলপারদের RPC ইন্টারফেসে নিরাপদ `https` সংযোগের জন্য একটি শংসাপত্র সেটআপ করার ক্ষমতাও দিতে পারে।
+এজ লেয়ার API বা ওয়েব সার্ভার অ্যাপ্লিকেশন, যেমন Nginx, ডেভেলপ করার মাধ্যমে এবং সেগুলোকে আপনার ক্লায়েন্টের লোকাল এডড্রেস এবং পোর্টের সাথে সংযুক্ত করার মাধ্যমে RPC ইন্টারফেসে অ্যাক্সেস প্রসারিত করা যেতে পারে। একটি মিডল লেয়ার ব্যবহার করা ডেভেলপারদের RPC ইন্টারফেসে নিরাপদ `https` সংযোগের জন্য একটি সার্টিফিকেট সেটআপ করার ক্ষমতাও দিতে পারে।
-আপনার নোডের RPC এন্ডপয়েন্টে অ্যাক্সেস দেওয়ার একমাত্র উপায় একটি ওয়েব সার্ভার, একটি প্রক্সি বা বাহ্যিকমুখী Rest API সেট আপ করা নয়। একটি সর্বজনীনভাবে পৌঁছানো যায় এমন এন্ডপয়েন্ট সেট আপ করার আরেকটি গোপনীয়তা-সংরক্ষণকারী উপায় হল আপনার নিজের [Tor](https://www.torproject.org/) অনিয়ন সার্ভিসে নোডটি হোস্ট করা। এটি আপনাকে একটি স্ট্যাটিক পাবলিক আইপি ঠিকানা বা খোলা পোর্ট ছাড়াই আপনার স্থানীয় নেটওয়ার্কের বাইরে RPC-তে পৌঁছাতে দেবে। তবে, এই কনফিগারেশনটি ব্যবহার করলে RPC এন্ডপয়েন্টটি শুধুমাত্র Tor নেটওয়ার্কের মাধ্যমে অ্যাক্সেসযোগ্য হতে পারে যা সমস্ত অ্যাপ্লিকেশন দ্বারা সমর্থিত নয় এবং সংযোগ সমস্যা হতে পারে।
+একটি ওয়েব সার্ভার, একটি প্রক্সি বা এক্সটার্নাল ফেসিং Rest API সেট আপ করা আপনার নোডের RPC এন্ডপয়েন্টে অ্যাক্সেস দেওয়ার একমাত্র উপায় নয়। সর্বজনীনভাবে পৌঁছানো যায় এমন একটি এন্ডপয়েন্ট সেট আপ করার আরেকটি গোপনীয়তা-সংরক্ষণকারী উপায় হলো আপনার নিজস্ব [Tor](https://www.torproject.org/) অনিয়ন সার্ভিসে নোডটি হোস্ট করা। এটি আপনাকে একটি স্ট্যাটিক পাবলিক আইপি এডড্রেস বা খোলা পোর্ট ছাড়াই আপনার লোকাল নেটওয়ার্কের বাইরে RPC-তে পৌঁছাতে দেবে। তবে, এই কনফিগারেশন ব্যবহার করা শুধুমাত্র Tor নেটওয়ার্কের মাধ্যমে RPC এন্ডপয়েন্ট অ্যাক্সেসযোগ্য হওয়ার অনুমতি দিতে পারে যা সমস্ত অ্যাপ্লিকেশন দ্বারা সমর্থিত নয় এবং এর ফলে সংযোগ সমস্যা হতে পারে।
-এটি করার জন্য, আপনাকে আপনার নিজের [অনিয়ন পরিষেবা](https://community.torproject.org/onion-services/) তৈরি করতে হবে। আপনার নিজের হোস্ট করার জন্য অনিয়ন পরিষেবা সেটআপের উপর [নথিপত্র](https://community.torproject.org/onion-services/setup/) দেখুন। আপনি এটিকে একটি ওয়েব সার্ভারের দিকে নির্দেশ করতে পারেন যার প্রক্সি RPC পোর্টে আছে অথবা সরাসরি RPC-তে।
+এটি করার জন্য, আপনাকে আপনার নিজস্ব [অনিয়ন সার্ভিস](https://community.torproject.org/onion-services/) তৈরি করতে হবে। আপনার নিজস্ব হোস্ট করার জন্য অনিয়ন সার্ভিস সেটআপের [ডকুমেন্টেশন](https://community.torproject.org/onion-services/setup/) চেকআউট করুন। আপনি এটিকে RPC পোর্টে প্রক্সি সহ একটি ওয়েব সার্ভারে বা সরাসরি RPC-তে নির্দেশ করতে পারেন।
-পরিশেষে, অভ্যন্তরীণ নেটওয়ার্কগুলিতে অ্যাক্সেস দেওয়ার সবচেয়ে জনপ্রিয় উপায়গুলির মধ্যে একটি হল একটি VPN সংযোগের মাধ্যমে। আপনার ব্যবহারের ক্ষেত্র এবং আপনার নোডে অ্যাক্সেসের প্রয়োজন এমন ব্যবহারকারীর পরিমাণের উপর নির্ভর করে, একটি নিরাপদ VPN সংযোগ একটি বিকল্প হতে পারে। [OpenVPN](https://openvpn.net/) একটি পূর্ণ-বৈশিষ্ট্যযুক্ত SSL VPN যা শিল্প-মান SSL/TLS প্রোটোকল ব্যবহার করে OSI লেয়ার ২ বা ৩ নিরাপদ নেটওয়ার্ক এক্সটেনশন প্রয়োগ করে, শংসাপত্র, স্মার্ট কার্ড, এবং/অথবা ব্যবহারকারীর নাম/পাসওয়ার্ড শংসাপত্রের উপর ভিত্তি করে নমনীয় ক্লায়েন্ট প্রমাণীকরণ পদ্ধতি সমর্থন করে, এবং VPN ভার্চুয়াল ইন্টারফেসে প্রয়োগ করা ফায়ারওয়াল নিয়ম ব্যবহার করে ব্যবহারকারী বা গোষ্ঠী-নির্দিষ্ট অ্যাক্সেস নিয়ন্ত্রণ নীতিগুলির অনুমতি দেয়।
+সবশেষে, এবং অভ্যন্তরীণ নেটওয়ার্কগুলোতে অ্যাক্সেস দেওয়ার অন্যতম জনপ্রিয় উপায় হলো একটি VPN সংযোগের মাধ্যমে। আপনার ব্যবহারের ক্ষেত্র এবং আপনার নোডে অ্যাক্সেস প্রয়োজন এমন ব্যবহারকারীদের পরিমাণের উপর নির্ভর করে, একটি নিরাপদ VPN সংযোগ একটি বিকল্প হতে পারে। [OpenVPN](https://openvpn.net/) হলো একটি ফুল-ফিচারড SSL VPN যা ইন্ডাস্ট্রি স্ট্যান্ডার্ড SSL/TLS প্রটোকল ব্যবহার করে OSI লেয়ার 2 বা 3 নিরাপদ নেটওয়ার্ক এক্সটেনশন ইমপ্লিমেন্ট করে, সার্টিফিকেট, স্মার্ট কার্ড এবং/অথবা ইউজারনেম/পাসওয়ার্ড ক্রেডেনশিয়ালের উপর ভিত্তি করে নমনীয় ক্লায়েন্ট প্রমাণীকরণ মেথড সমর্থন করে এবং VPN ভার্চুয়াল ইন্টারফেসে প্রয়োগ করা ফায়ারওয়াল নিয়ম ব্যবহার করে ব্যবহারকারী বা গ্রুপ-নির্দিষ্ট অ্যাক্সেস কন্ট্রোল পলিসির অনুমতি দেয়।
### নোড পরিচালনা করা {#operating-the-node}
-আপনার নোডটি সঠিকভাবে চলছে কিনা তা নিশ্চিত করতে আপনার নিয়মিত এটি পর্যবেক্ষণ করা উচিত। আপনাকে মাঝে মাঝে রক্ষণাবেক্ষণের কাজ করতে হতে পারে।
+আপনার নোডটি সঠিকভাবে চলছে কিনা তা নিশ্চিত করতে আপনার নিয়মিত এটি পর্যবেক্ষণ করা উচিত। আপনার মাঝে মাঝে রক্ষণাবেক্ষণ করার প্রয়োজন হতে পারে।
#### একটি নোড অনলাইনে রাখা {#keeping-node-online}
-আপনার নোডকে সব সময় অনলাইনে থাকতে হবে না, তবে নেটওয়ার্কের সাথে সিঙ্কে রাখতে এটিকে যতটা সম্ভব অনলাইনে রাখা উচিত। আপনি এটি পুনরায় চালু করতে বন্ধ করতে পারেন, তবে মনে রাখবেন যে:
+আপনার নোডটি সবসময় অনলাইনে থাকতে হবে না, তবে নেটওয়ার্ক-এর সাথে সিঙ্ক রাখতে আপনার এটি যতটা সম্ভব অনলাইনে রাখা উচিত। আপনি এটি রিস্টার্ট করার জন্য বন্ধ করতে পারেন, তবে মনে রাখবেন যে:
-- বন্ধ হতে কয়েক মিনিট সময় লাগতে পারে যদি সাম্প্রতিক স্টেট এখনও ডিস্কে লেখা হচ্ছে।
-- জোর করে বন্ধ করলে ডাটাবেসের ক্ষতি হতে পারে যার ফলে আপনাকে পুরো নোডটি পুনরায় সিঙ্ক করতে হবে।
-- আপনার ক্লায়েন্ট নেটওয়ার্কের সাথে সিঙ্ক থেকে বেরিয়ে যাবে এবং আপনি যখন এটি পুনরায় চালু করবেন তখন এটি পুনরায় সিঙ্ক করতে হবে। যদিও নোডটি শেষবার বন্ধ হওয়ার স্থান থেকে সিঙ্ক করা শুরু করতে পারে, তবে এটি কতক্ষণ অফলাইন ছিল তার উপর নির্ভর করে প্রক্রিয়াটি সময় নিতে পারে।
+- যদি সাম্প্রতিক স্টেট এখনও ডিস্কে লেখা হতে থাকে তবে বন্ধ হতে কয়েক মিনিট সময় লাগতে পারে।
+- জোরপূর্বক বন্ধ করা ডাটাবেসের ক্ষতি করতে পারে যার ফলে আপনাকে সম্পূর্ণ নোডটি পুনরায় সিঙ্ক করতে হবে।
+- আপনার ক্লায়েন্ট নেটওয়ার্ক-এর সাথে সিঙ্কের বাইরে চলে যাবে এবং আপনি যখন এটি রিস্টার্ট করবেন তখন পুনরায় সিঙ্ক করার প্রয়োজন হবে। যদিও নোডটি শেষবার যেখানে বন্ধ হয়েছিল সেখান থেকে সিঙ্ক করা শুরু করতে পারে, তবে এটি কতক্ষণ অফলাইনে ছিল তার উপর নির্ভর করে প্রক্রিয়াটিতে সময় লাগতে পারে।
-_এটি কনসেন্সাস লেয়ার ভ্যালিডেটর নোডগুলিতে প্রযোজ্য নয়।_ আপনার নোড অফলাইন করলে এটি নির্ভরশীল সমস্ত পরিষেবাগুলিকে প্রভাবিত করবে। আপনি যদি _স্টেকিং_ উদ্দেশ্যে একটি নোড চালাচ্ছেন তবে আপনার ডাউনটাইম যতটা সম্ভব কম করার চেষ্টা করা উচিত।
+_এটি কনসেন্সাস লেয়ার ভ্যালিডেটর নোডগুলোর ক্ষেত্রে প্রযোজ্য নয়।_ আপনার নোড অফলাইনে নেওয়া এর উপর নির্ভরশীল সমস্ত পরিষেবাকে প্রভাবিত করবে। আপনি যদি _স্টেকিং_ উদ্দেশ্যে একটি নোড চালান তবে আপনার ডাউনটাইম যতটা সম্ভব কমানোর চেষ্টা করা উচিত।
-#### ক্লায়েন্ট পরিষেবা তৈরি করা {#creating-client-services}
+#### ক্লায়েন্ট সার্ভিস তৈরি করা {#creating-client-services}
-স্টার্টআপে আপনার ক্লায়েন্টদের স্বয়ংক্রিয়ভাবে চালানোর জন্য একটি পরিষেবা তৈরি করার কথা বিবেচনা করুন। উদাহরণস্বরূপ, লিনাক্স সার্ভারে, একটি পরিষেবা তৈরি করা ভাল অভ্যাস হবে, যেমন, `systemd` দিয়ে, যা সঠিক কনফিগারেশন সহ ক্লায়েন্টকে কার্যকর করে, সীমিত সুযোগ-সুবিধা সহ একজন ব্যবহারকারীর অধীনে এবং স্বয়ংক্রিয়ভাবে পুনরায় চালু হয়।
+স্টার্টআপে আপনার ক্লায়েন্টগুলোকে স্বয়ংক্রিয়ভাবে চালানোর জন্য একটি সার্ভিস তৈরি করার কথা বিবেচনা করুন। উদাহরণস্বরূপ, Linux সার্ভারগুলোতে, একটি ভালো অনুশীলন হবে একটি সার্ভিস তৈরি করা, যেমন, `systemd` দিয়ে, যা সীমিত সুবিধা সহ একজন ব্যবহারকারীর অধীনে সঠিক কনফিগ সহ ক্লায়েন্টকে এক্সিকিউট করে এবং স্বয়ংক্রিয়ভাবে রিস্টার্ট হয়।
-#### ক্লায়েন্ট আপডেট করা {#updating-clients}
+#### ক্লায়েন্ট আপডেট করা {#updating-clients}
-আপনাকে আপনার ক্লায়েন্ট সফটওয়্যারটি সর্বশেষ নিরাপত্তা প্যাচ, বৈশিষ্ট্য এবং [EIP](/eips/)-এর সাথে আপ-টু-ডেট রাখতে হবে। বিশেষ করে [হার্ড ফর্কের](/ethereum-forks/) আগে, নিশ্চিত করুন যে আপনি সঠিক ক্লায়েন্ট সংস্করণ চালাচ্ছেন।
+আপনাকে আপনার ক্লায়েন্ট সফটওয়্যারটি সর্বশেষ নিরাপত্তা প্যাচ, বৈশিষ্ট্য এবং [EIPs](/eips/)-এর সাথে আপ-টু-ডেট রাখতে হবে। বিশেষ করে [হার্ড ফর্ক](/ethereum-forks/)-এর আগে, নিশ্চিত করুন যে আপনি সঠিক ক্লায়েন্ট সংস্করণগুলো চালাচ্ছেন।
-> গুরুত্বপূর্ণ নেটওয়ার্ক আপডেটের আগে, EF তার [ব্লগে](https://blog.ethereum.org) একটি পোস্ট প্রকাশ করে। আপনার নোডের আপডেটের প্রয়োজন হলে আপনার মেইলে একটি বিজ্ঞপ্তি পেতে আপনি [এই ঘোষণাগুলিতে সদস্যতা নিতে পারেন](https://blog.ethereum.org/category/protocol#subscribe)।
+> গুরুত্বপূর্ণ নেটওয়ার্ক আপডেটের আগে, EF এর [ব্লগে](https://blog.ethereum.org) একটি পোস্ট প্রকাশ করে। আপনার নোডের আপডেটের প্রয়োজন হলে আপনার মেইলে একটি বিজ্ঞপ্তি পেতে আপনি [এই ঘোষণাগুলোতে সাবস্ক্রাইব করতে পারেন](https://blog.ethereum.org/category/protocol#subscribe)।
-ক্লায়েন্ট আপডেট করা খুব সহজ। প্রতিটি ক্লায়েন্টের তাদের নথিপত্রে নির্দিষ্ট নির্দেশাবলী রয়েছে, তবে প্রক্রিয়াটি সাধারণত শুধু সর্বশেষ সংস্করণ ডাউনলোড করা এবং নতুন এক্সিকিউটেবল দিয়ে ক্লায়েন্টটি পুনরায় চালু করা। ক্লায়েন্টটি যেখান থেকে ছেড়েছিল সেখান থেকে শুরু করা উচিত, তবে আপডেটগুলি প্রয়োগ করা সহ।
+ক্লায়েন্ট আপডেট করা খুব সহজ। প্রতিটি ক্লায়েন্টের তাদের ডকুমেন্টেশনে নির্দিষ্ট নির্দেশাবলী রয়েছে, তবে প্রক্রিয়াটি সাধারণত শুধুমাত্র সর্বশেষ সংস্করণ ডাউনলোড করা এবং নতুন এক্সিকিউটেবলের সাথে ক্লায়েন্ট রিস্টার্ট করা। ক্লায়েন্টটি যেখানে ছেড়েছিল সেখান থেকে শুরু করা উচিত, তবে আপডেটগুলো প্রয়োগ করার সাথে।
-প্রতিটি ক্লায়েন্ট ইমপ্লিমেন্টেশনের একটি মানব-পাঠযোগ্য সংস্করণ স্ট্রিং রয়েছে যা পিয়ার-টু-পিয়ার প্রোটোকলে ব্যবহৃত হয় তবে এটি কমান্ড লাইন থেকেও অ্যাক্সেসযোগ্য। এই সংস্করণ স্ট্রিং ব্যবহারকারীদের পরীক্ষা করতে দেয় যে তারা সঠিক সংস্করণ চালাচ্ছে এবং ব্লক এক্সপ্লোরার এবং অন্যান্য বিশ্লেষণাত্মক সরঞ্জামগুলিকে নেটওয়ার্কে নির্দিষ্ট ক্লায়েন্টগুলির বিতরণ পরিমাপ করতে আগ্রহী করে তোলে। সংস্করণ স্ট্রিং সম্পর্কে আরও তথ্যের জন্য অনুগ্রহ করে স্বতন্ত্র ক্লায়েন্টের নথিপত্র দেখুন।
+প্রতিটি ক্লায়েন্ট ইমপ্লিমেন্টেশনের একটি হিউম্যান-রিডেবল ভার্সন স্ট্রিং থাকে যা পিয়ার-টু-পিয়ার প্রটোকলে ব্যবহৃত হয় তবে কমান্ড লাইন থেকেও অ্যাক্সেসযোগ্য। এই ভার্সন স্ট্রিং ব্যবহারকারীদের তারা সঠিক সংস্করণ চালাচ্ছে কিনা তা পরীক্ষা করতে দেয় এবং ব্লক এক্সপ্লোরার এবং অন্যান্য বিশ্লেষণাত্মক টুলগুলোকে নেটওয়ার্ক-এ নির্দিষ্ট ক্লায়েন্টদের ডিস্ট্রিবিউশন পরিমাপ করতে আগ্রহী হতে দেয়। ভার্সন স্ট্রিং সম্পর্কে আরও তথ্যের জন্য অনুগ্রহ করে পৃথক ক্লায়েন্ট ডকুমেন্টেশন দেখুন।
-#### অতিরিক্ত পরিষেবা চালানো {#running-additional-services}
+#### অতিরিক্ত সার্ভিস চালানো {#running-additional-services}
-আপনার নিজের নোড চালানো আপনাকে এমন পরিষেবাগুলি ব্যবহার করতে দেয় যার জন্য ইথেরিয়াম ক্লায়েন্ট RPC-তে সরাসরি অ্যাক্সেস প্রয়োজন। এগুলি হল ইথেরিয়াম-এর উপর নির্মিত পরিষেবা যেমন [লেয়ার ২ সমাধান](/developers/docs/scaling/#layer-2-scaling), ওয়ালেটের জন্য ব্যাকএন্ড, ব্লক এক্সপ্লোরার, ডেভেলপার টুল এবং অন্যান্য ইথেরিয়াম অবকাঠামো।
+আপনার নিজস্ব নোড চালানো আপনাকে এমন সার্ভিসগুলো ব্যবহার করতে দেয় যার জন্য ইথিরিয়াম ক্লায়েন্ট RPC-তে সরাসরি অ্যাক্সেস প্রয়োজন। এগুলো হলো ইথিরিয়ামের উপরে তৈরি করা সার্ভিস যেমন [লেয়ার ২ সলিউশন](/developers/docs/scaling/#layer-2-scaling), ওয়ালেটের জন্য ব্যাকএন্ড, ব্লক এক্সপ্লোরার, ডেভেলপার টুল এবং অন্যান্য ইথিরিয়াম পরিকাঠামো।
#### নোড পর্যবেক্ষণ করা {#monitoring-the-node}
-আপনার নোড সঠিকভাবে পর্যবেক্ষণ করতে, মেট্রিক্স সংগ্রহ করার কথা বিবেচনা করুন। ক্লায়েন্টরা মেট্রিক্স এন্ডপয়েন্ট সরবরাহ করে যাতে আপনি আপনার নোড সম্পর্কে ব্যাপক ডেটা পেতে পারেন। [InfluxDB](https://www.influxdata.com/get-influxdb/) বা [Prometheus](https://prometheus.io/)-এর মতো টুল ব্যবহার করে ডেটাবেস তৈরি করুন যা আপনি [Grafana](https://grafana.com/)-এর মতো সফটওয়্যারে ভিজ্যুয়ালাইজেশন এবং চার্টে পরিণত করতে পারেন। এই সফটওয়্যারটি ব্যবহার করার জন্য অনেক সেটআপ এবং আপনার নোড এবং পুরো নেটওয়ার্ককে ভিজ্যুয়ালাইজ করার জন্য বিভিন্ন Grafana ড্যাশবোর্ড রয়েছে। উদাহরণস্বরূপ, [Geth পর্যবেক্ষণের উপর টিউটোরিয়াল](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/) দেখুন।
+আপনার নোড সঠিকভাবে পর্যবেক্ষণ করতে, মেট্রিক্স সংগ্রহ করার কথা বিবেচনা করুন। ক্লায়েন্টরা মেট্রিক্স এন্ডপয়েন্ট প্রদান করে যাতে আপনি আপনার নোড সম্পর্কে ব্যাপক ডাটা পেতে পারেন। [InfluxDB](https://www.influxdata.com/get-influxdb/) বা [Prometheus](https://prometheus.io/)-এর মতো টুল ব্যবহার করে ডাটাবেস তৈরি করুন যা আপনি [Grafana](https://grafana.com/)-এর মতো সফটওয়্যারে ভিজ্যুয়ালাইজেশন এবং চার্টে পরিণত করতে পারেন। এই সফটওয়্যারটি ব্যবহার করার জন্য অনেক সেটআপ রয়েছে এবং আপনার নোড এবং সামগ্রিকভাবে নেটওয়ার্ক ভিজ্যুয়ালাইজ করার জন্য বিভিন্ন Grafana ড্যাশবোর্ড রয়েছে। উদাহরণস্বরূপ, [Geth পর্যবেক্ষণ করার টিউটোরিয়াল](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/) দেখুন।
-আপনার পর্যবেক্ষণের অংশ হিসাবে, আপনার মেশিনের কর্মক্ষমতার দিকে নজর রাখতে ভুলবেন না। আপনার নোডের প্রাথমিক সিঙ্কের সময়, ক্লায়েন্ট সফটওয়্যারটি সিপিইউ এবং র্যামের উপর খুব ভারী হতে পারে। Grafana ছাড়াও, আপনি আপনার OS দ্বারা প্রদত্ত টুল যেমন `htop` বা `uptime` ব্যবহার করতে পারেন এটি করার জন্য।
+আপনার পর্যবেক্ষণের অংশ হিসেবে, আপনার মেশিনের পারফরম্যান্সের দিকে নজর রাখতে ভুলবেন না। আপনার নোডের প্রাথমিক সিঙ্কের সময়, ক্লায়েন্ট সফটওয়্যারটি CPU এবং RAM-এর উপর খুব ভারী হতে পারে। Grafana ছাড়াও, আপনি এটি করতে আপনার OS অফার করে এমন টুল যেমন `htop` বা `uptime` ব্যবহার করতে পারেন।
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- [ইথেরিয়াম স্টেকিং গাইড](https://github.com/SomerEsat/ethereum-staking-guides) - _সোমার এসাত, প্রায়শই আপডেট করা হয়_
-- [গাইড | কীভাবে মেইননেটে ইথেরিয়াম স্টেকিংয়ের জন্য একটি ভ্যালিডেটর সেটআপ করবেন](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew, প্রায়শই আপডেট করা হয়_
-- [টেস্টনেটে ভ্যালিডেটর চালানোর উপর ETHStaker গাইড](https://github.com/remyroy/ethstaker#guides) – _ETHStaker, নিয়মিত আপডেট করা হয়_
-- [ইথেরিয়াম নোডের জন্য স্যাম্পেল AWS ব্লকচেইন নোড রানার অ্যাপ](https://aws-samples.github.io/aws-blockchain-node-runners/docs/Blueprints/Ethereum) - _AWS, প্রায়শই আপডেট করা হয়_
-- [নোড অপারেটরদের জন্য দ্য মার্জ FAQ](https://notes.ethereum.org/@launchpad/node-faq-merge) - _জুলাই ২০২২_
-- [একটি ইথেরিয়াম পূর্ণ যাচাইকৃত নোড হতে হার্ডওয়্যার প্রয়োজনীয়তা বিশ্লেষণ](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– আলবার্ট পালাউ, ২৪ সেপ্টেম্বর ২০১৮_
-- [ইথেরিয়াম ফুল নোড চালানো: সামান্য অনুপ্রাণিতদের জন্য একটি নির্দেশিকা](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– জাস্টিন লেরক্স, 7 নভেম্বর 2019_
-- [ইথেরিয়াম মেইননেটে একটি হাইপারলেজার বেসু নোড চালানো: সুবিধা, প্রয়োজনীয়তা এবং সেটআপ](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– ফেলিপ ফারাগি, ৭ মে ২০২০_
-- [পর্যবেক্ষণ স্ট্যাকের সাথে নেদারমাইন্ড ইথেরিয়াম ক্লায়েন্ট স্থাপন](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, ৮ জুলাই ২০২০_
+- [ইথিরিয়াম স্টেকিং গাইড](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat, প্রায়ই আপডেট করা হয়_
+- [গাইড | মেইননেটে ইথিরিয়াম স্টেকিংয়ের জন্য কীভাবে একটি ভ্যালিডেটর সেটআপ করবেন](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew, প্রায়ই আপডেট করা হয়_
+- [টেস্টনেটে ভ্যালিডেটরস চালানোর বিষয়ে ETHStaker গাইড](https://github.com/remyroy/ethstaker#guides) – _ETHStaker, নিয়মিত আপডেট করা হয়_
+- [ইথিরিয়াম নোডগুলোর জন্য নমুনা AWS ব্লকচেইন নোড রানার অ্যাপ](https://aws-samples.github.io/aws-blockchain-node-runners/docs/Blueprints/Ethereum) - _AWS, প্রায়ই আপডেট করা হয়_
+- [নোড অপারেটরদের জন্য The Merge FAQ](https://notes.ethereum.org/@launchpad/node-faq-merge) - _জুলাই ২০২২_
+- [একটি ইথিরিয়াম ফুল ভ্যালিডেটেড নোড হওয়ার জন্য হার্ডওয়্যারের প্রয়োজনীয়তা বিশ্লেষণ করা](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, ২৪ সেপ্টেম্বর ২০১৮_
+- [ইথিরিয়াম ফুল নোড চালানো: খুব কম অনুপ্রাণিতদের জন্য একটি গাইড](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, ৭ নভেম্বর ২০১৯_
+- [ইথিরিয়াম মেইননেটে একটি Hyperledger Besu নোড চালানো: সুবিধা, প্রয়োজনীয়তা এবং সেটআপ](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, ৭ মে ২০২০_
+- [মনিটরিং স্ট্যাকের সাথে Nethermind ইথিরিয়াম ক্লায়েন্ট ডিপ্লয় করা](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, ৮ জুলাই ২০২০_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
-- [ব্লক](/developers/docs/blocks/)
-- [নেটওয়ার্ক](/developers/docs/networks/)
+- [নোড এবং ক্লায়েন্ট](/developers/docs/nodes-and-clients/)
+- [ব্লকস](/developers/docs/blocks/)
+- [নেটওয়ার্ক](/developers/docs/networks/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/oracles/index.md b/public/content/translations/bn/developers/docs/oracles/index.md
index 0079ec11446..d1fcc47498f 100644
--- a/public/content/translations/bn/developers/docs/oracles/index.md
+++ b/public/content/translations/bn/developers/docs/oracles/index.md
@@ -1,116 +1,116 @@
---
-title: "ওরাকেলস"
-description: "ওরাকেলস ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টকে বাস্তব-বিশ্বের ডেটাতে অ্যাক্সেস প্রদান করে, ব্যবহারকারীদের জন্য আরও বেশি ব্যবহারের ক্ষেত্র এবং বৃহত্তর মান আনলক করে।"
+title: ওরাকল
+description: ওরাকল ইথিরিয়াম স্মার্ট কন্ট্রাক্টগুলোকে বাস্তব-জগতের ডেটায় অ্যাক্সেস প্রদান করে, যা ব্যবহারকারীদের জন্য আরও বেশি ব্যবহার-ক্ষেত্র এবং বৃহত্তর মান উন্মুক্ত করে।
lang: bn
---
-ওরাকেলস হল এমন অ্যাপ্লিকেশন যা ডেটা ফিড তৈরি করে যা স্মার্ট কন্ট্র্যাক্টের জন্য ব্লকচেইনে অফচেইন ডেটা উৎস উপলব্ধ করে। এটি প্রয়োজনীয় কারণ Ethereum-ভিত্তিক স্মার্ট কন্ট্র্যাক্টগুলি ডিফল্টরূপে, ব্লকচেইন নেটওয়ার্কের বাইরে সঞ্চিত তথ্য অ্যাক্সেস করতে পারে না।
+ওরাকল হলো এমন অ্যাপ্লিকেশন যা ডেটা ফিড তৈরি করে, যা স্মার্ট কন্ট্রাক্টের জন্য ব্লকচেইনে অফচেইন ডেটা সোর্সগুলোকে সহজলভ্য করে। এটি প্রয়োজনীয় কারণ ইথিরিয়াম-ভিত্তিক স্মার্ট কন্ট্রাক্টগুলো ডিফল্টভাবে ব্লকচেইন নেটওয়ার্কের বাইরে সংরক্ষিত তথ্যে অ্যাক্সেস করতে পারে না।
-স্মার্ট কন্ট্র্যাক্টকে অফচেইন ডেটা ব্যবহার করে কার্যকর করার ক্ষমতা দেওয়া ডিসেন্ট্রালাইজড এপ্লিকেশনগুলির উপযোগিতা এবং মান প্রসারিত করে। উদাহরণস্বরূপ, অনচেইন প্রেডিকশন মার্কেটগুলি ওরাকেলের উপর নির্ভর করে ফলাফলের তথ্য সরবরাহ করার জন্য যা তারা ব্যবহারকারীর পূর্বাভাসকে যাচাই করতে ব্যবহার করে। ধরুন অ্যালিস 20 ETH বাজি ধরেছে কে পরবর্তী মার্কিন যুক্তরাষ্ট্রের প্রেসিডেন্ট হবে। সেক্ষেত্রে, অ্যালিস পেআউটের জন্য যোগ্য কিনা তা নির্ধারণ করতে এবং নির্বাচনের ফলাফল নিশ্চিত করতে প্রেডিকশন-মার্কেট ডিএ্যাপটির একটি ওরাকেলের প্রয়োজন।
+অফচেইন ডেটা ব্যবহার করে স্মার্ট কন্ট্রাক্টগুলোকে কার্যকর করার ক্ষমতা প্রদান করা ডিসেন্ট্রালাইজড এপ্লিকেশন-এর উপযোগিতা এবং মান বৃদ্ধি করে। উদাহরণস্বরূপ, অনচেইন প্রেডিকশন মার্কেটগুলো ফলাফলের তথ্য প্রদানের জন্য ওরাকলের ওপর নির্ভর করে, যা তারা ব্যবহারকারীদের প্রেডিকশন যাচাই করতে ব্যবহার করে। ধরুন অ্যালিস 20 ETH বাজি ধরেছে যে কে পরবর্তী মার্কিন প্রেসিডেন্ট হবে। সেক্ষেত্রে, প্রেডিকশন-মার্কেট ডিএ্যাপ-এর নির্বাচনের ফলাফল নিশ্চিত করতে এবং অ্যালিস পেআউটের জন্য যোগ্য কিনা তা নির্ধারণ করতে একটি ওরাকল প্রয়োজন।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি ধরে নেয় যে পাঠক [নোড](/developers/docs/nodes-and-clients/), [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/), এবং [EVM](/developers/docs/evm/) সহ Ethereum-এর মৌলিক বিষয়গুলির সাথে পরিচিত। আপনার [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) এবং [স্মার্ট কন্ট্র্যাক্ট অ্যানাটমি](/developers/docs/smart-contracts/anatomy/), বিশেষ করে [ইভেন্ট](/glossary/#events) সম্পর্কেও ভালো ধারণা থাকা উচিত।
+এই পৃষ্ঠাটি ধরে নেয় যে পাঠক [Ethereum](/) এর মৌলিক বিষয়গুলোর সাথে পরিচিত, যার মধ্যে রয়েছে [নোড](/developers/docs/nodes-and-clients/), [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/), এবং [EVM](/developers/docs/evm/)। আপনার [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) এবং [স্মার্ট কন্ট্রাক্ট অ্যানাটমি](/developers/docs/smart-contracts/anatomy/)-এর ওপরও ভালো ধারণা থাকা উচিত, বিশেষ করে [ইভেন্ট](/glossary/#events) সম্পর্কে।
-## একটি ব্লকচেইন ওরাকেল কী? {#what-is-a-blockchain-oracle}
+## ব্লকচেইন ওরাকল কী? {#what-is-a-blockchain-oracle}
-ওরাকেলস হল এমন অ্যাপ্লিকেশন যা ব্লকচেইনে চলমান স্মার্ট কন্ট্র্যাক্টে বাহ্যিক তথ্য (অর্থাৎ, অফচেইন সঞ্চিত তথ্য) উৎস, যাচাই এবং প্রেরণ করে। অফচেইন ডেটা “পুল” করা এবং এটিকে Ethereum-এ সম্প্রচার করা ছাড়াও, ওরাকেলগুলি ব্লকচেইন থেকে বাহ্যিক সিস্টেমে তথ্য “পুশ” করতে পারে, যেমন, ব্যবহারকারী একটি Ethereum লেনদেনের মাধ্যমে একটি ফি পাঠালে একটি স্মার্ট লক আনলক করা।
+ওরাকল হলো এমন অ্যাপ্লিকেশন যা ব্লকচেইনে চলমান স্মার্ট কন্ট্রাক্টগুলোতে বাহ্যিক তথ্য (অর্থাৎ, অফচেইন সংরক্ষিত তথ্য) সংগ্রহ, যাচাই এবং প্রেরণ করে। অফচেইন ডেটা "টেনে আনা" এবং ইথিরিয়ামে সম্প্রচার করার পাশাপাশি, ওরাকল ব্লকচেইন থেকে বাহ্যিক সিস্টেমে তথ্য "পুশ" করতে পারে, যেমন, ব্যবহারকারী ইথিরিয়াম লেনদেন-এর মাধ্যমে ফি পাঠালে একটি স্মার্ট লক আনলক করা।
-একটি ওরাকেল ছাড়া, একটি স্মার্ট কন্ট্র্যাক্ট সম্পূর্ণরূপে অনচেইন ডেটার মধ্যে সীমাবদ্ধ থাকবে।
+একটি ওরাকল ছাড়া, একটি স্মার্ট কন্ট্রাক্ট সম্পূর্ণভাবে অনচেইন ডেটার মধ্যে সীমাবদ্ধ থাকবে।
-ওরাকেলস ডেটার উৎস (এক বা একাধিক উৎস), ট্রাস্ট মডেল (কেন্দ্রীয় বা বিকেন্দ্রীভূত), এবং সিস্টেম আর্কিটেকচার (অবিলম্বে-পড়া, প্রকাশ-সাবস্ক্রাইব, এবং অনুরোধ-প্রতিক্রিয়া) এর উপর ভিত্তি করে ভিন্ন হয়। আমরা ওরাকলের মধ্যে পার্থক্য করতে পারি যে তারা অনচেইন কন্ট্র্যাক্ট (ইনপুট ওরাকেল) দ্বারা ব্যবহারের জন্য বাহ্যিক ডেটা পুনরুদ্ধার করে, ব্লকচেইন থেকে অফচেইন অ্যাপ্লিকেশনে (আউটপুট ওরাকেল) তথ্য পাঠায়, বা অফচেইন (কম্পিউটেশনাল ওরাকেল) কম্পিউটেশনাল কাজ করে।
+ডেটার উৎস (এক বা একাধিক উৎস), ট্রাস্ট মডেল (কেন্দ্রীভূত বা ডিসেন্ট্রালাইজড), এবং সিস্টেম আর্কিটেকচার (ইমিডিয়েট-রিড, পাবলিশ-সাবস্ক্রাইব, এবং রিকোয়েস্ট-রেসপন্স)-এর ওপর ভিত্তি করে ওরাকলগুলো ভিন্ন হয়। আমরা ওরাকলগুলোর মধ্যে পার্থক্য করতে পারি এই ভিত্তিতে যে তারা অনচেইন কন্ট্রাক্টগুলোর ব্যবহারের জন্য বাহ্যিক ডেটা পুনরুদ্ধার করে (ইনপুট ওরাকল), ব্লকচেইন থেকে অফচেইন অ্যাপ্লিকেশনগুলোতে তথ্য পাঠায় (আউটপুট ওরাকল), নাকি অফচেইন গণনামূলক কাজ সম্পাদন করে (কম্পিউটেশনাল ওরাকল)।
-## স্মার্ট কন্ট্র্যাক্টের ওরাকেলের প্রয়োজন কেন? {#why-do-smart-contracts-need-oracles}
+## স্মার্ট কন্ট্রাক্টগুলোর কেন ওরাকল প্রয়োজন? {#why-do-smart-contracts-need-oracles}
-অনেক ডেভেলপার স্মার্ট কন্ট্র্যাক্টকে ব্লকচেইনের নির্দিষ্ট ঠিকানায় চলমান কোড হিসাবে দেখেন। যাইহোক, [স্মার্ট কন্ট্র্যাক্টের একটি আরও সাধারণ দৃষ্টিভঙ্গি](/smart-contracts/) হল যে সেগুলি স্ব-নির্বাহী সফ্টওয়্যার প্রোগ্রাম যা নির্দিষ্ট শর্ত পূরণ হয়ে গেলে পক্ষগুলির মধ্যে চুক্তি প্রয়োগ করতে সক্ষম - তাই “স্মার্ট কন্ট্র্যাক্ট” শব্দটি।
+অনেক ডেভেলপার স্মার্ট কন্ট্রাক্টগুলোকে ব্লকচেইনের নির্দিষ্ট এডড্রেস-এ চলমান কোড হিসেবে দেখেন। তবে, [স্মার্ট কন্ট্রাক্টগুলোর একটি সাধারণ দৃষ্টিভঙ্গি](/smart-contracts/) হলো এগুলো স্বয়ংক্রিয়ভাবে নির্বাহযোগ্য সফটওয়্যার প্রোগ্রাম যা নির্দিষ্ট শর্ত পূরণ হলে পক্ষগুলোর মধ্যে চুক্তি কার্যকর করতে সক্ষম - তাই এদের "স্মার্ট কন্ট্রাক্ট" বলা হয়।
-কিন্তু মানুষের মধ্যে চুক্তি কার্যকর করার জন্য স্মার্ট কন্ট্র্যাক্ট ব্যবহার করা সহজ নয়, কারণ Ethereum নির্ধারক। একটি [নির্ধারক সিস্টেম](https://en.wikipedia.org/wiki/Deterministic_algorithm) হল এমন একটি যা একটি প্রাথমিক অবস্থা এবং একটি নির্দিষ্ট ইনপুট দেওয়া হলে সর্বদা একই ফলাফল তৈরি করে, যার অর্থ ইনপুট থেকে আউটপুট গণনা করার প্রক্রিয়াতে কোনও এলোমেলোতা বা ভিন্নতা নেই।
+কিন্তু মানুষের মধ্যে চুক্তি কার্যকর করার জন্য স্মার্ট কন্ট্রাক্ট ব্যবহার করা সহজ নয়, কারণ ইথিরিয়াম হলো ডিটারমিনিস্টিক (নির্ধারণমূলক)। একটি [ডিটারমিনিস্টিক সিস্টেম](https://en.wikipedia.org/wiki/Deterministic_algorithm) হলো এমন একটি সিস্টেম যা একটি প্রাথমিক স্টেট এবং একটি নির্দিষ্ট ইনপুট দেওয়া হলে সর্বদা একই ফলাফল তৈরি করে, যার অর্থ ইনপুট থেকে আউটপুট গণনা করার প্রক্রিয়ায় কোনো এলোমেলোতা বা ভিন্নতা নেই।
-নির্ধারক এক্সিকিউশন অর্জনের জন্য, ব্লকচেইনগুলি _শুধুমাত্র_ ব্লকচেইনেই সঞ্চিত ডেটা ব্যবহার করে সাধারণ বাইনারি (সত্য/মিথ্যা) প্রশ্নগুলির উপর কনসেন্সাস পৌঁছানোর জন্য নোডগুলিকে সীমাবদ্ধ করে। এই ধরনের প্রশ্নের উদাহরণগুলির মধ্যে রয়েছে:
+ডিটারমিনিস্টিক এক্সিকিউশন অর্জন করতে, ব্লকচেইনগুলো নোড-গুলোকে _শুধুমাত্র_ ব্লকচেইনে সংরক্ষিত ডেটা ব্যবহার করে সাধারণ বাইনারি (সত্য/মিথ্যা) প্রশ্নগুলোতে কনসেন্সাস-এ পৌঁছানোর মধ্যে সীমাবদ্ধ করে। এই ধরনের প্রশ্নের উদাহরণগুলোর মধ্যে রয়েছে:
-- “অ্যাকাউন্টের মালিক (একটি পাবলিক কী দ্বারা চিহ্নিত) কি এই লেনদেনটি জোড়া প্রাইভেট কী দিয়ে স্বাক্ষর করেছেন?”
-- “এই অ্যাকাউন্টে লেনদেন কভার করার জন্য যথেষ্ট তহবিল আছে কি?”
-- “এই স্মার্ট কন্ট্র্যাক্টের প্রেক্ষাপটে এই লেনদেনটি বৈধ?”, ইত্যাদি।
+- "একাউন্ট মালিক (একটি পাবলিক কি দ্বারা চিহ্নিত) কি জোড়া প্রাইভেট কি দিয়ে এই লেনদেন স্বাক্ষর করেছেন?"
+- "এই একাউন্ট-এ কি লেনদেন কভার করার জন্য পর্যাপ্ত ফান্ড আছে?"
+- "এই লেনদেন কি এই স্মার্ট কন্ট্রাক্ট-এর প্রেক্ষাপটে বৈধ?", ইত্যাদি।
-যদি ব্লকচেইনগুলি বাহ্যিক উত্স থেকে (অর্থাৎ, বাস্তব বিশ্ব থেকে) তথ্য পায়, তবে নির্ধারকতা অর্জন করা অসম্ভব হবে, যা নোডগুলিকে ব্লকচেইনের অবস্থার পরিবর্তনে একমত হতে বাধা দেবে। উদাহরণস্বরূপ একটি স্মার্ট কন্ট্র্যাক্ট নিন যা একটি প্রচলিত মূল্য API থেকে প্রাপ্ত বর্তমান ETH-USD বিনিময় হারের উপর ভিত্তি করে একটি লেনদেন সম্পাদন করে। এই সংখ্যাটি ঘন ঘন পরিবর্তন হওয়ার সম্ভাবনা রয়েছে (উল্লেখ করার মতো নয় যে APIটি বাতিল বা হ্যাক হতে পারে), যার অর্থ একই কন্ট্র্যাক্ট কোড নির্বাহকারী নোডগুলি বিভিন্ন ফলাফলে পৌঁছাবে।
+যদি ব্লকচেইনগুলো বাহ্যিক উৎস (অর্থাৎ, বাস্তব জগত) থেকে তথ্য গ্রহণ করে, তবে ডিটারমিনিজম অর্জন করা অসম্ভব হবে, যা নোড-গুলোকে ব্লকচেইনের স্টেট-এর পরিবর্তনের বৈধতার বিষয়ে একমত হতে বাধা দেবে। উদাহরণস্বরূপ একটি স্মার্ট কন্ট্রাক্ট নিন যা একটি ঐতিহ্যবাহী প্রাইস API থেকে প্রাপ্ত বর্তমান ETH-USD বিনিময় হারের ওপর ভিত্তি করে একটি লেনদেন সম্পাদন করে। এই সংখ্যাটি ঘন ঘন পরিবর্তিত হওয়ার সম্ভাবনা রয়েছে (API-টি বাতিল বা হ্যাক হতে পারে তা উল্লেখ না করলেও চলে), যার অর্থ একই কন্ট্রাক্ট কোড এক্সিকিউট করা নোড-গুলো ভিন্ন ভিন্ন ফলাফলে পৌঁছাবে।
-Ethereum-এর মতো একটি পাবলিক ব্লকচেইনের জন্য, বিশ্বজুড়ে হাজার হাজার নোড লেনদেন প্রক্রিয়াকরণ করে, নির্ধারকতা অত্যন্ত গুরুত্বপূর্ণ। সত্যের উৎস হিসাবে কাজ করার জন্য কোনও কেন্দ্রীয় কর্তৃপক্ষ না থাকায়, একই লেনদেন প্রয়োগ করার পরে একই অবস্থায় পৌঁছানোর জন্য নোডগুলির পদ্ধতির প্রয়োজন। এমন একটি ক্ষেত্রে যেখানে নোড A একটি স্মার্ট কন্ট্র্যাক্টের কোড চালায় এবং ফলস্বরূপ "3" পায়, যখন নোড B একই লেনদেন চালানোর পরে "7" পায়, যা কনসেন্সাস ভেঙে দেবে এবং একটি ডিসেন্ট্রালাইজড কম্পিউটিং প্ল্যাটফর্ম হিসাবে Ethereum-এর মানকে নির্মূল করবে।
+ইথিরিয়ামের মতো একটি পাবলিক ব্লকচেইনের জন্য, যেখানে বিশ্বজুড়ে হাজার হাজার নোড লেনদেন প্রসেস করছে, ডিটারমিনিজম অত্যন্ত গুরুত্বপূর্ণ। সত্যের উৎস হিসেবে কাজ করার জন্য কোনো কেন্দ্রীয় কর্তৃপক্ষ না থাকায়, একই লেনদেন প্রয়োগ করার পর একই স্টেট-এ পৌঁছানোর জন্য নোড-গুলোর মেকানিজম প্রয়োজন। এমন একটি ক্ষেত্র যেখানে নোড A একটি স্মার্ট কন্ট্রাক্ট-এর কোড এক্সিকিউট করে এবং ফলাফল হিসেবে "3" পায়, যেখানে নোড B একই লেনদেন চালানোর পর "7" পায়, তা কনসেন্সাস ভেঙে দেবে এবং একটি ডিসেন্ট্রালাইজড কম্পিউটিং প্ল্যাটফর্ম হিসেবে ইথিরিয়ামের মান নষ্ট করবে।
-এই দৃশ্যকল্পটি বাহ্যিক উৎস থেকে তথ্য টানতে ব্লকচেইন ডিজাইন করার সমস্যাটিকেও তুলে ধরে। যাইহোক, ওরাকেলস অফচেইন উৎস থেকে তথ্য নিয়ে এবং স্মার্ট কন্ট্র্যাক্টের ব্যবহারের জন্য ব্লকচেইনে সংরক্ষণ করে এই সমস্যার সমাধান করে। যেহেতু অনচেইনে সঞ্চিত তথ্য অপরিবর্তনীয় এবং সর্বজনীনভাবে উপলব্ধ, তাই Ethereum নোডগুলি কনসেন্সাস না ভেঙে অবস্থার পরিবর্তনগুলি গণনা করতে ওরাকেল আমদানি করা অফচেইন ডেটা নিরাপদে ব্যবহার করতে পারে।
+এই দৃশ্যপটটি বাহ্যিক উৎস থেকে তথ্য টেনে আনার জন্য ব্লকচেইন ডিজাইন করার সমস্যাটিও তুলে ধরে। তবে, ওরাকলগুলো অফচেইন উৎস থেকে তথ্য নিয়ে এবং স্মার্ট কন্ট্রাক্টগুলোর ব্যবহারের জন্য ব্লকচেইনে সংরক্ষণ করে এই সমস্যার সমাধান করে। যেহেতু অনচেইন সংরক্ষিত তথ্য অপরিবর্তনীয় এবং সর্বজনীনভাবে উপলব্ধ, তাই ইথিরিয়াম নোড-গুলো কনসেন্সাস না ভেঙে স্টেট পরিবর্তন গণনা করতে ওরাকল দ্বারা আমদানিকৃত অফচেইন ডেটা নিরাপদে ব্যবহার করতে পারে।
-এটি করার জন্য, একটি ওরাকেল সাধারণত একটি স্মার্ট কন্ট্র্যাক্ট অনচেইনে চলমান এবং কিছু অফচেইন উপাদান দিয়ে তৈরি। অনচেইন কন্ট্র্যাক্ট অন্যান্য স্মার্ট কন্ট্র্যাক্ট থেকে ডেটার জন্য অনুরোধ গ্রহণ করে, যা এটি অফচেইন উপাদানে (একটি ওরাকেল নোড বলা হয়) প্রেরণ করে। এই ওরাকেল নোড ডেটা উৎস জিজ্ঞাসা করতে পারে—উদাহরণস্বরূপ, অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API) ব্যবহার করে—এবং স্মার্ট কন্ট্র্যাক্টের সংগ্রহস্থলে অনুরোধ করা ডেটা সঞ্চয় করতে লেনদেন পাঠাতে পারে।
+এটি করার জন্য, একটি ওরাকল সাধারণত অনচেইন চলমান একটি স্মার্ট কন্ট্রাক্ট এবং কিছু অফচেইন উপাদান নিয়ে গঠিত হয়। অনচেইন কন্ট্রাক্ট অন্যান্য স্মার্ট কন্ট্রাক্ট থেকে ডেটার জন্য অনুরোধ গ্রহণ করে, যা এটি অফচেইন উপাদানে (যাকে ওরাকল নোড বলা হয়) পাঠায়। এই ওরাকল নোড ডেটা উৎসগুলোতে কোয়েরি করতে পারে—উদাহরণস্বরূপ, অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (APIs) ব্যবহার করে—এবং স্মার্ট কন্ট্রাক্ট-এর স্টোরেজে অনুরোধকৃত ডেটা সংরক্ষণ করতে লেনদেন পাঠাতে পারে।
-মূলত, একটি ব্লকচেইন ওরাকেল ব্লকচেইন এবং বাহ্যিক পরিবেশের মধ্যে তথ্যের ব্যবধানকে ব্রিজ করে, “হাইব্রিড স্মার্ট কন্ট্র্যাক্ট” তৈরি করে। একটি হাইব্রিড স্মার্ট কন্ট্র্যাক্ট হল এমন একটি যা অনচেইন কন্ট্র্যাক্ট কোড এবং অফচেইন পরিকাঠামোর সংমিশ্রণের উপর ভিত্তি করে কাজ করে। ডিসেন্ট্রালাইজড প্রেডিকশন মার্কেটগুলি হাইব্রিড স্মার্ট কন্ট্র্যাক্টের একটি চমৎকার উদাহরণ। অন্যান্য উদাহরণের মধ্যে শস্য বীমা স্মার্ট কন্ট্র্যাক্ট অন্তর্ভুক্ত থাকতে পারে যা অর্থ প্রদান করে যখন ওরাকেলের একটি সেট নির্ধারণ করে যে নির্দিষ্ট আবহাওয়ার ঘটনা ঘটেছে।
+মূলত, একটি ব্লকচেইন ওরাকল ব্লকচেইন এবং বাহ্যিক পরিবেশের মধ্যে তথ্যের ব্যবধান দূর করে, "হাইব্রিড স্মার্ট কন্ট্রাক্ট" তৈরি করে। একটি হাইব্রিড স্মার্ট কন্ট্রাক্ট হলো এমন একটি কন্ট্রাক্ট যা অনচেইন কন্ট্রাক্ট কোড এবং অফচেইন পরিকাঠামোর সমন্বয়ের ওপর ভিত্তি করে কাজ করে। ডিসেন্ট্রালাইজড প্রেডিকশন মার্কেটগুলো হাইব্রিড স্মার্ট কন্ট্রাক্ট-এর একটি চমৎকার উদাহরণ। অন্যান্য উদাহরণের মধ্যে শস্য বীমা স্মার্ট কন্ট্রাক্ট অন্তর্ভুক্ত থাকতে পারে যা তখন পেআউট দেয় যখন একগুচ্ছ ওরাকল নির্ধারণ করে যে নির্দিষ্ট আবহাওয়া পরিস্থিতি ঘটেছে।
-## ওরাকেল সমস্যাটি কী? {#the-oracle-problem}
+## ওরাকল প্রবলেম কী? {#the-oracle-problem}
-ওরাকেলস একটি গুরুত্বপূর্ণ সমস্যার সমাধান করে, তবে কিছু জটিলতাও নিয়ে আসে, যেমন:
+ওরাকলগুলো একটি গুরুত্বপূর্ণ সমস্যার সমাধান করে, তবে কিছু জটিলতাও তৈরি করে, যেমন:
-- আমরা কীভাবে যাচাই করব যে ইনজেক্ট করা তথ্য সঠিক উৎস থেকে নেওয়া হয়েছে বা এতে কোনও কারচুপি করা হয়নি?
+- আমরা কীভাবে যাচাই করব যে ইনজেক্ট করা তথ্য সঠিক উৎস থেকে বের করা হয়েছে বা এর সাথে কোনো কারচুপি করা হয়নি?
-- আমরা কীভাবে নিশ্চিত করব যে এই ডেটা সর্বদা উপলব্ধ এবং নিয়মিত আপডেট করা হয়?
+- আমরা কীভাবে নিশ্চিত করব যে এই ডেটা সর্বদা উপলব্ধ এবং নিয়মিত আপডেট করা হয়?
-তথাকথিত “ওরাকেল সমস্যা” ব্লকচেইন ওরাকেল ব্যবহার করে স্মার্ট কন্ট্র্যাক্টে ইনপুট পাঠানোর সাথে আসা সমস্যাগুলিকে প্রদর্শন করে। একটি স্মার্ট কন্ট্র্যাক্ট সঠিকভাবে কার্যকর করার জন্য একটি ওরাকেল থেকে ডেটা সঠিক হতে হবে। অধিকন্তু, সঠিক তথ্য প্রদানের জন্য ওরাকেল অপারেটরদের ‘বিশ্বাস’ করা স্মার্ট কন্ট্র্যাক্টের ‘বিশ্বাসহীন’ দিকটিকে দুর্বল করে।
+তথাকথিত "ওরাকল প্রবলেম" স্মার্ট কন্ট্রাক্টগুলোতে ইনপুট পাঠাতে ব্লকচেইন ওরাকল ব্যবহারের সাথে আসা সমস্যাগুলো প্রদর্শন করে। একটি স্মার্ট কন্ট্রাক্ট সঠিকভাবে এক্সিকিউট করার জন্য একটি ওরাকল থেকে আসা ডেটা অবশ্যই সঠিক হতে হবে। এছাড়া, সঠিক তথ্য প্রদানের জন্য ওরাকল অপারেটরদের ওপর 'বিশ্বাস' করতে হওয়া স্মার্ট কন্ট্রাক্টগুলোর 'ট্রাস্টলেস' দিকটিকে ক্ষুণ্ন করে।
-বিভিন্ন ওরাকেল ওরাকেল সমস্যার বিভিন্ন সমাধান অফার করে, যা আমরা পরে অন্বেষণ করব। ওরাকেলস সাধারণত নিম্নলিখিত চ্যালেঞ্জগুলি কতটা ভালোভাবে পরিচালনা করতে পারে তার উপর ভিত্তি করে মূল্যায়ন করা হয়:
+বিভিন্ন ওরাকল ওরাকল সমস্যার বিভিন্ন সমাধান অফার করে, যা আমরা পরে অন্বেষণ করব। ওরাকলগুলো সাধারণত নিচের চ্যালেঞ্জগুলো কতটা ভালোভাবে সামলাতে পারে তার ওপর মূল্যায়ন করা হয়:
-1. **সঠিকতা**: একটি ওরাকেল অবৈধ অফচেইন ডেটার উপর ভিত্তি করে স্মার্ট কন্ট্র্যাক্টকে অবস্থার পরিবর্তন ঘটাতে দেবে না। একটি ওরাকেলকে অবশ্যই ডেটার _সত্যতা_ এবং _অখণ্ডতা_ নিশ্চিত করতে হবে। সত্যতা মানে ডেটা সঠিক উৎস থেকে পাওয়া গেছে, যখন অখণ্ডতা মানে ডেটা অক্ষত ছিল (অর্থাৎ, পরিবর্তিত হয়নি) অনচেইনে পাঠানোর আগে।
+1. **সঠিকতা (Correctness)**: একটি ওরাকলের কারণে স্মার্ট কন্ট্রাক্টগুলোর অবৈধ অফচেইন ডেটার ওপর ভিত্তি করে স্টেট পরিবর্তন ট্রিগার করা উচিত নয়। একটি ওরাকলকে অবশ্যই ডেটার _সত্যতা (authenticity)_ এবং _অখণ্ডতা (integrity)_ গ্যারান্টি দিতে হবে। সত্যতা মানে ডেটা সঠিক উৎস থেকে পাওয়া গেছে, আর অখণ্ডতা মানে অনচেইন পাঠানোর আগে ডেটা অক্ষত ছিল (অর্থাৎ, পরিবর্তন করা হয়নি)।
-2. **উপলব্ধতা**: একটি ওরাকেল স্মার্ট কন্ট্র্যাক্টগুলিকে কাজ চালানো এবং অবস্থার পরিবর্তন ঘটাতে দেরি বা বাধা দেবে না। এর মানে হল যে একটি ওরাকেল থেকে ডেটা অবশ্যই কোনো বাধা ছাড়াই _অনুরোধে উপলব্ধ_ থাকতে হবে।
+2. **প্রাপ্যতা (Availability)**: একটি ওরাকলের স্মার্ট কন্ট্রাক্টগুলোকে কাজ সম্পাদন করতে এবং স্টেট পরিবর্তন ট্রিগার করতে বিলম্ব বা বাধা দেওয়া উচিত নয়। এর মানে হলো একটি ওরাকল থেকে ডেটা কোনো বাধা ছাড়াই _অনুরোধে উপলব্ধ_ হতে হবে।
-3. **ইনসেনটিভ সামঞ্জস্য**: একটি ওরাকেলকে অফচেইন ডেটা প্রদানকারীদের স্মার্ট কন্ট্র্যাক্টে সঠিক তথ্য জমা দেওয়ার জন্য উৎসাহিত করা উচিত। ইনসেনটিভ সামঞ্জস্যের মধ্যে _অ্যাট্রিবিউটেবিলিটি_ এবং _অ্যাকাউন্টেবিলিটি_ জড়িত। অ্যাট্রিবিউটেবিলিটি একটি বাহ্যিক তথ্যের একটি অংশকে তার প্রদানকারীর সাথে লিঙ্ক করার অনুমতি দেয়, যখন অ্যাকাউন্টেবিলিটি ডেটা প্রদানকারীদের তারা যে তথ্য দেয় তার সাথে বন্ড করে, যাতে তাদের প্রদত্ত তথ্যের মানের উপর ভিত্তি করে পুরস্কৃত বা দণ্ডিত করা যায়।
+3. **ইনসেনটিভ সামঞ্জস্যতা (Incentive compatibility)**: একটি ওরাকলের অফচেইন ডেটা প্রদানকারীদের স্মার্ট কন্ট্রাক্টগুলোতে সঠিক তথ্য জমা দিতে উৎসাহিত করা উচিত। ইনসেনটিভ সামঞ্জস্যতার মধ্যে _অ্যাট্রিবিউটেবিলিটি (attributability)_ এবং _জবাবদিহিতা (accountability)_ জড়িত। অ্যাট্রিবিউটেবিলিটি বাহ্যিক তথ্যের একটি অংশকে এর প্রদানকারীর সাথে যুক্ত করার অনুমতি দেয়, অন্যদিকে জবাবদিহিতা ডেটা প্রদানকারীদের তাদের দেওয়া তথ্যের সাথে আবদ্ধ করে, যাতে প্রদত্ত তথ্যের মানের ওপর ভিত্তি করে তাদের পুরস্কৃত বা শাস্তি দেওয়া যায়।
-## একটি ব্লকচেইন ওরাকেল পরিষেবা কীভাবে কাজ করে? {#how-does-a-blockchain-oracle-service-work}
+## একটি ব্লকচেইন ওরাকল পরিষেবা কীভাবে কাজ করে? {#how-does-a-blockchain-oracle-service-work}
### ব্যবহারকারী {#users}
-ব্যবহারকারীরা হল সত্তা (যেমন, স্মার্ট কন্ট্র্যাক্ট) যাদের নির্দিষ্ট কাজগুলি সম্পূর্ণ করার জন্য ব্লকচেইনের বাইরে তথ্যের প্রয়োজন হয়। একটি ওরাকেল পরিষেবার প্রাথমিক কর্মপ্রবাহ ব্যবহারকারীর ওরাকেল কন্ট্র্যাক্টে একটি ডেটা অনুরোধ পাঠানোর মাধ্যমে শুরু হয়। ডেটা অনুরোধগুলি সাধারণত নিম্নলিখিত কিছু বা সমস্ত প্রশ্নের উত্তর দেবে:
+ব্যবহারকারী হলো এমন সত্তা (অর্থাৎ, স্মার্ট কন্ট্রাক্ট) যাদের নির্দিষ্ট কাজ সম্পন্ন করতে ব্লকচেইনের বাইরের তথ্যের প্রয়োজন হয়। একটি ওরাকল পরিষেবার প্রাথমিক ওয়ার্কফ্লো শুরু হয় ব্যবহারকারীর ওরাকল কন্ট্রাক্ট-এ ডেটা অনুরোধ পাঠানোর মাধ্যমে। ডেটা অনুরোধগুলো সাধারণত নিচের কিছু বা সমস্ত প্রশ্নের উত্তর দেবে:
-1. অফচেইন নোড অনুরোধ করা তথ্যের জন্য কোন উৎসগুলির সাথে পরামর্শ করতে পারে?
+1. অনুরোধকৃত তথ্যের জন্য অফচেইন নোড-গুলো কোন উৎসগুলোর সাথে পরামর্শ করতে পারে?
-2. রিপোর্টাররা কীভাবে ডেটা উৎস থেকে তথ্য প্রক্রিয়া করে এবং দরকারী ডেটা পয়েন্ট বের করে?
+2. রিপোর্টাররা কীভাবে ডেটা উৎস থেকে তথ্য প্রসেস করে এবং দরকারী ডেটা পয়েন্টগুলো বের করে?
-3. ডেটা পুনরুদ্ধারে কতগুলি ওরাকেল নোড অংশগ্রহণ করতে পারে?
+3. ডেটা পুনরুদ্ধারে কতগুলো ওরাকল নোড অংশগ্রহণ করতে পারে?
-4. ওরাকেল রিপোর্টে অসঙ্গতিগুলি কীভাবে পরিচালনা করা উচিত?
+4. ওরাকল রিপোর্টগুলোতে অসঙ্গতি কীভাবে পরিচালনা করা উচিত?
-5. জমাগুলি ফিল্টার করতে এবং রিপোর্টগুলিকে একটি একক মানে একত্রিত করতে কোন পদ্ধতি প্রয়োগ করা উচিত?
+5. সাবমিশন ফিল্টার করতে এবং রিপোর্টগুলোকে একটি একক ভ্যালুতে একত্রিত করতে কোন পদ্ধতি প্রয়োগ করা উচিত?
-### ওরাকেল কন্ট্র্যাক্ট {#oracle-contract}
+### ওরাকল কন্ট্রাক্ট {#oracle-contract}
-ওরাকেল কন্ট্র্যাক্ট হল ওরাকেল পরিষেবার জন্য অনচেইন উপাদান। এটি অন্যান্য কন্ট্র্যাক্ট থেকে ডেটা অনুরোধের জন্য শোনে, ওরাকেল নোডগুলিতে ডেটা কোয়েরি রিলে করে এবং ক্লায়েন্ট কন্ট্র্যাক্টগুলিতে ফেরত ডেটা সম্প্রচার করে। এই কন্ট্র্যাক্টটি অনুরোধকারী কন্ট্র্যাক্টে পাঠানোর জন্য একটি সামগ্রিক মান তৈরি করতে ফেরত ডেটা পয়েন্টগুলিতে কিছু গণনাও করতে পারে।
+ওরাকল কন্ট্রাক্ট হলো ওরাকল পরিষেবার জন্য অনচেইন উপাদান। এটি অন্যান্য কন্ট্রাক্ট থেকে ডেটা অনুরোধ শোনে, ওরাকল নোড-গুলোতে ডেটা কোয়েরি রিলে করে এবং ক্লায়েন্ট কন্ট্রাক্টগুলোতে ফিরে আসা ডেটা সম্প্রচার করে। এই কন্ট্রাক্ট অনুরোধকারী কন্ট্রাক্ট-এ পাঠানোর জন্য একটি সামগ্রিক ভ্যালু তৈরি করতে ফিরে আসা ডেটা পয়েন্টগুলোতে কিছু গণনাও করতে পারে।
-ওরাকেল কন্ট্র্যাক্ট কিছু ফাংশন প্রকাশ করে যা ক্লায়েন্ট কন্ট্র্যাক্টগুলি ডেটা অনুরোধ করার সময় কল করে। একটি নতুন কোয়েরি পাওয়ার পরে, স্মার্ট কন্ট্র্যাক্ট ডেটা অনুরোধের বিবরণ সহ একটি [লগ ইভেন্ট](/developers/docs/smart-contracts/anatomy/#events-and-logs) নির্গত করবে। এটি লগে সাবস্ক্রাইব করা অফচেইন নোডগুলিকে অবহিত করে (সাধারণত JSON-RPC `eth_subscribe` কমান্ডের মতো কিছু ব্যবহার করে), যারা লগ ইভেন্টে সংজ্ঞায়িত ডেটা পুনরুদ্ধার করতে এগিয়ে যায়।
+ওরাকল কন্ট্রাক্ট কিছু ফাংশন প্রকাশ করে যা ক্লায়েন্ট কন্ট্রাক্টগুলো ডেটা অনুরোধ করার সময় কল করে। একটি নতুন কোয়েরি পাওয়ার পর, স্মার্ট কন্ট্রাক্ট ডেটা অনুরোধের বিবরণসহ একটি [লগ ইভেন্ট](/developers/docs/smart-contracts/anatomy/#events-and-logs) নির্গত করবে। এটি লগে সাবস্ক্রাইব করা অফচেইন নোড-গুলোকে (সাধারণত JSON-RPC `eth_subscribe` কমান্ডের মতো কিছু ব্যবহার করে) অবহিত করে, যারা লগ ইভেন্টে সংজ্ঞায়িত ডেটা পুনরুদ্ধার করতে এগিয়ে যায়।
-Pedro Costa-এর দ্বারা নিচে একটি [উদাহরণ ওরাকেল কন্ট্র্যাক্ট](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) দেওয়া হল। এটি একটি সাধারণ ওরাকেল পরিষেবা যা অন্যান্য স্মার্ট কন্ট্র্যাক্টের অনুরোধে অফচেইন API জিজ্ঞাসা করতে পারে এবং অনুরোধ করা তথ্য ব্লকচেইনে সংরক্ষণ করতে পারে:
+নিচে পেড্রো কস্তার একটি [উদাহরণ ওরাকল কন্ট্রাক্ট](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) দেওয়া হলো। এটি একটি সাধারণ ওরাকল পরিষেবা যা অন্যান্য স্মার্ট কন্ট্রাক্ট-এর অনুরোধে অফচেইন API-গুলোতে কোয়েরি করতে পারে এবং ব্লকচেইনে অনুরোধকৃত তথ্য সংরক্ষণ করতে পারে:
```solidity
pragma solidity >=0.4.21 <0.6.0;
contract Oracle {
- Request[] requests; //কন্ট্র্যাক্টে করা অনুরোধের তালিকা
- uint currentId = 0; //ক্রমবর্ধমান অনুরোধ আইডি
- uint minQuorum = 2; //চূড়ান্ত ফলাফল ঘোষণার আগে প্রাপ্ত প্রতিক্রিয়ার সর্বনিম্ন সংখ্যা
- uint totalOracleCount = 3; // হার্ডকোডেড ওরাকেল সংখ্যা
+ Request[] requests; // কন্ট্রাক্টে করা অনুরোধের তালিকা
+ uint currentId = 0; // বর্ধমান রিকোয়েস্ট আইডি
+ uint minQuorum = 2; // চূড়ান্ত ফলাফল ঘোষণার আগে গ্রহণ করার জন্য ন্যূনতম রেসপন্সের সংখ্যা
+ uint totalOracleCount = 3; // হার্ডকোড করা ওরাকলের সংখ্যা
- // একটি সাধারণ এপিআই অনুরোধ সংজ্ঞায়িত করে
+ // একটি সাধারণ এপিআই রিকোয়েস্ট নির্ধারণ করে
struct Request {
- uint id; //অনুরোধ আইডি
- string urlToQuery; //API ইউআরএল
- string attributeToFetch; //প্রতিক্রিয়ায় পুনরুদ্ধার করার জন্য json অ্যাট্রিবিউট (কী)
- string agreedValue; //কী থেকে মান
- mapping(uint => string) answers; //ওরাকেল দ্বারা প্রদত্ত উত্তর
- mapping(address => uint) quorum; //ওরাকেল যা উত্তরটি জিজ্ঞাসা করবে (1=ওরাকেল ভোট দেয়নি, 2=ওরাকেল ভোট দিয়েছে)
+ uint id; // রিকোয়েস্ট আইডি
+ string urlToQuery; // এপিআই ইউআরএল
+ string attributeToFetch; // রেসপন্সে পুনরুদ্ধার করার জন্য জেসন অ্যাট্রিবিউট (কী)
+ string agreedValue; // কী থেকে প্রাপ্ত মান
+ mapping(uint => string) answers; // ওরাকলগুলোর দেওয়া উত্তর
+ mapping(address => uint) quorum; // যে ওরাকলগুলো উত্তরের জন্য কোয়েরি করবে (১=ওরাকল ভোট দেয়নি, ২=ওরাকল ভোট দিয়েছে)
}
- //ইভেন্ট যা ব্লকচেইনের বাইরে ওরাকেলকে ট্রিগার করে
+ // যে ইভেন্ট ব্লকচেইনের বাইরের ওরাকলকে ট্রিগার করে
event NewRequest (
uint id,
string urlToQuery,
string attributeToFetch
);
- //যখন চূড়ান্ত ফলাফলের উপর একটি কনসেন্সাস থাকে তখন ট্রিগার হয়
+ // চূড়ান্ত ফলাফলের উপর কনসেন্সাস হলে ট্রিগার হয়
event UpdatedRequest (
uint id,
string urlToQuery,
@@ -127,23 +127,23 @@ contract Oracle {
uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, ""));
Request storage r = requests[length-1];
- // হার্ডকোডেড ওরাকেলের ঠিকানা
+ // হার্ডকোড করা ওরাকলগুলোর ঠিকানা
r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1;
r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1;
r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1;
- // ব্লকচেইনের বাইরে ওরাকেল দ্বারা সনাক্ত করার জন্য একটি ইভেন্ট চালু করুন
+ // ব্লকচেইনের বাইরের ওরাকল দ্বারা শনাক্ত করার জন্য একটি ইভেন্ট চালু করুন
emit NewRequest (
currentId,
_urlToQuery,
_attributeToFetch
);
- // অনুরোধ আইডি বাড়ান
+ // রিকোয়েস্ট আইডি বৃদ্ধি করুন
currentId++;
}
- //ওরাকেল দ্বারা তার উত্তর রেকর্ড করার জন্য কল করা হয়
+ // উত্তর রেকর্ড করার জন্য ওরাকল দ্বারা কল করা হয়
function updateRequest (
uint _id,
string memory _valueRetrieved
@@ -151,18 +151,18 @@ contract Oracle {
Request storage currRequest = requests[_id];
- //বিশ্বস্ত ওরাকেলের তালিকায় ওরাকেল আছে কিনা তা পরীক্ষা করুন
- //এবং যদি ওরাকেল এখনও ভোট না দিয়ে থাকে
+ // ওরাকলটি বিশ্বস্ত ওরাকলের তালিকায় আছে কিনা তা চেক করুন
+ // এবং ওরাকলটি এখনও ভোট না দিয়ে থাকলে
if(currRequest.quorum[address(msg.sender)] == 1){
- //চিহ্নিত করা যে এই ঠিকানাটি ভোট দিয়েছে
+ // এই ঠিকানাটি ভোট দিয়েছে তা চিহ্নিত করা হচ্ছে
currRequest.quorum[msg.sender] = 2;
- //উত্তরগুলির "অ্যারে" এর মাধ্যমে পুনরাবৃত্তি করুন যতক্ষণ না একটি অবস্থান খালি থাকে এবং পুনরুদ্ধার করা মানটি সংরক্ষণ করুন
+ // কোনো স্থান ফাঁকা না পাওয়া পর্যন্ত উত্তরের "অ্যারে" এর মধ্য দিয়ে ইটারেট করুন এবং প্রাপ্ত মানটি সেভ করুন
uint tmpI = 0;
bool found = false;
while(!found) {
- //প্রথম খালি স্লট খুঁজুন
+ // প্রথম ফাঁকা স্লটটি খুঁজুন
if(bytes(currRequest.answers[tmpI]).length == 0){
found = true;
currRequest.answers[tmpI] = _valueRetrieved;
@@ -172,8 +172,8 @@ contract Oracle {
uint currentQuorum = 0;
- //ওরাকেল তালিকার মাধ্যমে পুনরাবৃত্তি করুন এবং পর্যাপ্ত ওরাকেল (ন্যূনতম কোরাম) আছে কিনা তা পরীক্ষা করুন
- //বর্তমানটির মতো একই উত্তর ভোট দিয়েছে
+ // ওরাকল তালিকার মধ্য দিয়ে ইটারেট করুন এবং পর্যাপ্ত ওরাকল (ন্যূনতম কোরাম) আছে কিনা তা চেক করুন
+ // বর্তমান উত্তরের মতো একই উত্তরে ভোট দিয়েছে কিনা
for(uint i = 0; i < totalOracleCount; i++){
bytes memory a = bytes(currRequest.answers[i]);
bytes memory b = bytes(_valueRetrieved);
@@ -196,129 +196,129 @@ contract Oracle {
}
```
-### ওরাকেল নোড {#oracle-nodes}
+### ওরাকল নোড {#oracle-nodes}
-ওরাকেল নোড হল ওরাকেল পরিষেবার অফচেইন উপাদান। এটি বাহ্যিক উৎস থেকে তথ্য বের করে, যেমন তৃতীয় পক্ষের সার্ভারে হোস্ট করা API, এবং স্মার্ট কন্ট্র্যাক্ট দ্বারা ব্যবহারের জন্য এটি অনচেইন রাখে। ওরাকেল নোড অনচেইন ওরাকেল কন্ট্র্যাক্ট থেকে ইভেন্ট শোনে এবং লগে বর্ণিত কাজটি সম্পূর্ণ করতে এগিয়ে যায়।
+ওরাকল নোড হলো ওরাকল পরিষেবার অফচেইন উপাদান। এটি থার্ড-পার্টি সার্ভারে হোস্ট করা API-এর মতো বাহ্যিক উৎস থেকে তথ্য বের করে এবং স্মার্ট কন্ট্রাক্টগুলোর ব্যবহারের জন্য এটি অনচেইন রাখে। ওরাকল নোড-গুলো অনচেইন ওরাকল কন্ট্রাক্ট থেকে ইভেন্টগুলো শোনে এবং লগে বর্ণিত কাজ সম্পন্ন করতে এগিয়ে যায়।
-ওরাকেল নোডগুলির জন্য একটি সাধারণ কাজ হল একটি API পরিষেবাতে একটি [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) অনুরোধ পাঠানো, প্রাসঙ্গিক ডেটা বের করার জন্য প্রতিক্রিয়া পার্স করা, একটি ব্লকচেইন-পঠনযোগ্য আউটপুটে ফর্ম্যাট করা, এবং এটিকে ওরাকেল কন্ট্র্যাক্টে একটি লেনদেনে অন্তর্ভুক্ত করে অনচেইন পাঠানো। ওরাকেল নোডকে “সত্যতা প্রমাণ” ব্যবহার করে জমা দেওয়া তথ্যের বৈধতা এবং অখণ্ডতা প্রত্যয়ন করতেও হতে পারে, যা আমরা পরে অন্বেষণ করব।
+ওরাকল নোড-গুলোর জন্য একটি সাধারণ কাজ হলো একটি API পরিষেবাতে একটি [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) অনুরোধ পাঠানো, প্রাসঙ্গিক ডেটা বের করার জন্য রেসপন্স পার্স করা, ব্লকচেইন-পঠনযোগ্য আউটপুটে ফর্ম্যাট করা এবং ওরাকল কন্ট্রাক্ট-এ একটি লেনদেন-এ অন্তর্ভুক্ত করে এটি অনচেইন পাঠানো। ওরাকল নোড-কে "অথেন্টিসিটি প্রুফ" ব্যবহার করে জমা দেওয়া তথ্যের বৈধতা এবং অখণ্ডতা প্রমাণ করারও প্রয়োজন হতে পারে, যা আমরা পরে অন্বেষণ করব।
-গ্যাসের খরচ এবং ব্লকের আকারের সীমাবদ্ধতার কারণে কম্পিউটেশনাল ওরাকেলগুলি অফচেইন নোডের উপর নির্ভর করে এমন কম্পিউটেশনাল কাজগুলি সম্পাদন করতে যা অনচেইনে চালানো অব্যবহারিক হবে। উদাহরণস্বরূপ, ওরাকেল নোডকে একটি যাচাইযোগ্য র্যান্ডম ফিগার তৈরি করার দায়িত্ব দেওয়া হতে পারে (যেমন, ব্লকচেইন-ভিত্তিক গেমগুলির জন্য)।
+গ্যাস খরচ এবং ব্লক সাইজ সীমার কারণে অনচেইন এক্সিকিউট করা অবাস্তব হবে এমন গণনামূলক কাজগুলো সম্পাদন করতে কম্পিউটেশনাল ওরাকলগুলোও অফচেইন নোড-গুলোর ওপর নির্ভর করে। উদাহরণস্বরূপ, ওরাকল নোড-কে একটি যাচাইযোগ্য র্যান্ডম সংখ্যা তৈরি করার দায়িত্ব দেওয়া হতে পারে (যেমন, ব্লকচেইন-ভিত্তিক গেমগুলোর জন্য)।
-## ওরাকেল ডিজাইন প্যাটার্ন {#oracle-design-patterns}
+## ওরাকল ডিজাইন প্যাটার্ন {#oracle-design-patterns}
-ওরাকেলস বিভিন্ন ধরনের হয়, যার মধ্যে রয়েছে _immediate-read_, _publish-subscribe_, এবং _request-response_, যার মধ্যে পরবর্তী দুটি Ethereum স্মার্ট কন্ট্র্যাক্টগুলির মধ্যে সবচেয়ে জনপ্রিয়। এখানে আমরা সংক্ষেপে প্রকাশ-সাবস্ক্রাইব এবং অনুরোধ-প্রতিক্রিয়া মডেলগুলি বর্ণনা করি।
+ওরাকলগুলো বিভিন্ন ধরনের হয়, যার মধ্যে রয়েছে _ইমিডিয়েট-রিড_, _পাবলিশ-সাবস্ক্রাইব_, এবং _রিকোয়েস্ট-রেসপন্স_, যার মধ্যে শেষের দুটি ইথিরিয়াম স্মার্ট কন্ট্রাক্টগুলোর মধ্যে সবচেয়ে জনপ্রিয়। এখানে আমরা সংক্ষেপে পাবলিশ-সাবস্ক্রাইব এবং রিকোয়েস্ট-রেসপন্স মডেলগুলো বর্ণনা করছি।
-### প্রকাশ-সাবস্ক্রাইব ওরাকেল {#publish-subscribe-oracles}
+### পাবলিশ-সাবস্ক্রাইব ওরাকল {#publish-subscribe-oracles}
-এই ধরনের ওরাকেল একটি “ডেটা ফিড” প্রকাশ করে যা অন্যান্য কন্ট্র্যাক্ট তথ্যের জন্য নিয়মিত পড়তে পারে। এই ক্ষেত্রে ডেটা ঘন ঘন পরিবর্তিত হবে বলে আশা করা হয়, তাই ক্লায়েন্ট কন্ট্র্যাক্টগুলিকে ওরাকেলের সংগ্রহস্থলে ডেটার আপডেটের জন্য শুনতে হবে। একটি উদাহরণ হল একটি ওরাকেল যা ব্যবহারকারীদের সর্বশেষ ETH-USD মূল্যের তথ্য প্রদান করে।
+এই ধরনের ওরাকল একটি "ডেটা ফিড" প্রকাশ করে যা অন্যান্য কন্ট্রাক্ট তথ্যের জন্য নিয়মিত পড়তে পারে। এই ক্ষেত্রে ডেটা ঘন ঘন পরিবর্তিত হবে বলে আশা করা হয়, তাই ক্লায়েন্ট কন্ট্রাক্টগুলোকে ওরাকলের স্টোরেজে ডেটার আপডেটের জন্য শুনতে হবে। একটি উদাহরণ হলো একটি ওরাকল যা ব্যবহারকারীদের সর্বশেষ ETH-USD মূল্যের তথ্য প্রদান করে।
-### অনুরোধ-প্রতিক্রিয়া ওরাকেল {#request-response-oracles}
+### রিকোয়েস্ট-রেসপন্স ওরাকল {#request-response-oracles}
-একটি অনুরোধ-প্রতিক্রিয়া সেটআপ ক্লায়েন্ট কন্ট্র্যাক্টকে একটি প্রকাশ-সাবস্ক্রাইব ওরাকেল দ্বারা প্রদত্ত ডেটা ছাড়া অন্য যেকোনো ডেটা অনুরোধ করার অনুমতি দেয়। যখন ডেটাসেট একটি স্মার্ট কন্ট্র্যাক্টের সংগ্রহস্থলে সংরক্ষণ করার জন্য খুব বড় হয়, এবং/অথবা ব্যবহারকারীদের যেকোনো সময়ে ডেটার একটি ছোট অংশের প্রয়োজন হয় তখন অনুরোধ-প্রতিক্রিয়া ওরাকেলগুলি আদর্শ।
+একটি রিকোয়েস্ট-রেসপন্স সেটআপ ক্লায়েন্ট কন্ট্রাক্ট-কে পাবলিশ-সাবস্ক্রাইব ওরাকল দ্বারা প্রদত্ত ডেটা ছাড়া অন্য যেকোনো ডেটার অনুরোধ করার অনুমতি দেয়। রিকোয়েস্ট-রেসপন্স ওরাকলগুলো তখন আদর্শ হয় যখন ডেটাসেটটি একটি স্মার্ট কন্ট্রাক্ট-এর স্টোরেজে সংরক্ষণ করার জন্য খুব বড় হয়, এবং/অথবা ব্যবহারকারীদের যেকোনো সময়ে ডেটার শুধুমাত্র একটি ছোট অংশের প্রয়োজন হবে।
-যদিও প্রকাশ-সাবস্ক্রাইব মডেলের চেয়ে বেশি জটিল, অনুরোধ-প্রতিক্রিয়া ওরাকেলগুলি মূলত আমরা পূর্ববর্তী বিভাগে যা বর্ণনা করেছি। ওরাকেলের একটি অনচেইন উপাদান থাকবে যা একটি ডেটা অনুরোধ গ্রহণ করে এবং প্রক্রিয়াকরণের জন্য এটি একটি অফচেইন নোডে প্রেরণ করে।
+পাবলিশ-সাবস্ক্রাইব মডেলের চেয়ে বেশি জটিল হলেও, রিকোয়েস্ট-রেসপন্স ওরাকলগুলো মূলত আমরা আগের বিভাগে যা বর্ণনা করেছি তাই। ওরাকলের একটি অনচেইন উপাদান থাকবে যা একটি ডেটা অনুরোধ গ্রহণ করে এবং প্রসেসিংয়ের জন্য এটি একটি অফচেইন নোড-এ পাঠায়।
-ডেটা কোয়েরি শুরু করা ব্যবহারকারীদের অবশ্যই অফচেইন উৎস থেকে তথ্য পুনরুদ্ধারের খরচ বহন করতে হবে। ক্লায়েন্ট কন্ট্র্যাক্টকে অবশ্যই অনুরোধে নির্দিষ্ট করা কলব্যাক ফাংশনের মাধ্যমে প্রতিক্রিয়া ফেরত দেওয়ার জন্য ওরাকেল কন্ট্র্যাক্ট দ্বারা হওয়া গ্যাস খরচ কভার করার জন্য তহবিল সরবরাহ করতে হবে।
+ডেটা কোয়েরি শুরু করা ব্যবহারকারীদের অফচেইন উৎস থেকে তথ্য পুনরুদ্ধারের খরচ বহন করতে হবে। ক্লায়েন্ট কন্ট্রাক্ট-কে অনুরোধে নির্দিষ্ট করা কলব্যাক ফাংশনের মাধ্যমে রেসপন্স ফেরত দেওয়ার সময় ওরাকল কন্ট্রাক্ট দ্বারা হওয়া গ্যাস খরচ কভার করার জন্য ফান্ডও প্রদান করতে হবে।
-## কেন্দ্রীয় বনাম বিকেন্দ্রীভূত ওরাকেল {#types-of-oracles}
+## কেন্দ্রীভূত বনাম ডিসেন্ট্রালাইজড ওরাকল {#types-of-oracles}
-### কেন্দ্রীয় ওরাকেল {#centralized-oracles}
+### কেন্দ্রীভূত ওরাকল {#centralized-oracles}
-একটি কেন্দ্রীয় ওরাকেল একটি একক সত্তা দ্বারা নিয়ন্ত্রিত হয় যা অফচেইন তথ্য একত্রিত করার জন্য এবং অনুরোধ অনুযায়ী ওরাকেল কন্ট্র্যাক্টের ডেটা আপডেট করার জন্য দায়ী। কেন্দ্রীয় ওরাকেলগুলি দক্ষ কারণ তারা সত্যের একটি একক উৎসের উপর নির্ভর করে। তারা এমন ক্ষেত্রে আরও ভাল কাজ করতে পারে যেখানে মালিকানাধীন ডেটাসেটগুলি মালিক দ্বারা সরাসরি একটি বহুল স্বীকৃত স্বাক্ষর সহ প্রকাশিত হয়। তবে, এর কিছু অসুবিধাও রয়েছে:
+একটি কেন্দ্রীভূত ওরাকল একটি একক সত্তা দ্বারা নিয়ন্ত্রিত হয় যা অফচেইন তথ্য একত্রিত করার এবং অনুরোধ অনুযায়ী ওরাকল কন্ট্রাক্ট-এর ডেটা আপডেট করার জন্য দায়ী। কেন্দ্রীভূত ওরাকলগুলো দক্ষ কারণ তারা সত্যের একটি একক উৎসের ওপর নির্ভর করে। তারা এমন ক্ষেত্রে আরও ভালোভাবে কাজ করতে পারে যেখানে মালিক দ্বারা সরাসরি একটি ব্যাপকভাবে গৃহীত স্বাক্ষরের সাথে মালিকানাধীন ডেটাসেটগুলো প্রকাশিত হয়। তবে, এগুলো কিছু অসুবিধাও নিয়ে আসে:
#### কম সঠিকতার গ্যারান্টি {#low-correctness-guarantees}
-কেন্দ্রীয় ওরাকেলগুলির সাথে, প্রদত্ত তথ্য সঠিক কিনা তা নিশ্চিত করার কোনও উপায় নেই। এমনকি "খ্যাতিমান" প্রদানকারীরাও অসৎ হতে পারে বা হ্যাক হতে পারে। যদি ওরাকেলটি দুর্নীতিগ্রস্ত হয়ে পড়ে, তবে স্মার্ট কন্ট্র্যাক্টগুলি খারাপ ডেটার উপর ভিত্তি করে কার্যকর হবে।
+কেন্দ্রীভূত ওরাকলগুলোর সাথে, প্রদত্ত তথ্য সঠিক কিনা তা নিশ্চিত করার কোনো উপায় নেই। এমনকি "স্বনামধন্য" প্রদানকারীরাও দুর্বৃত্ত হয়ে যেতে পারে বা হ্যাক হতে পারে। যদি ওরাকলটি দূষিত হয়ে যায়, তবে স্মার্ট কন্ট্রাক্টগুলো খারাপ ডেটার ওপর ভিত্তি করে এক্সিকিউট হবে।
#### দুর্বল প্রাপ্যতা {#poor-availability}
-কেন্দ্রীয় ওরাকেলগুলি সর্বদা অন্যান্য স্মার্ট কন্ট্র্যাক্টগুলিতে অফচেইন ডেটা উপলব্ধ করার নিশ্চয়তা দেয় না। যদি প্রদানকারী পরিষেবাটি বন্ধ করার সিদ্ধান্ত নেয় বা কোনও হ্যাকার ওরাকেলের অফচেইন উপাদান হাইজ্যাক করে, তবে আপনার স্মার্ট কন্ট্র্যাক্টটি ডিনায়েল-অফ-সার্ভিস (DoS) আক্রমণের ঝুঁকিতে থাকে।
+কেন্দ্রীভূত ওরাকলগুলো সর্বদা অন্যান্য স্মার্ট কন্ট্রাক্ট-এর কাছে অফচেইন ডেটা উপলব্ধ করার গ্যারান্টি দেয় না। যদি প্রদানকারী পরিষেবাটি বন্ধ করার সিদ্ধান্ত নেয় বা কোনো হ্যাকার ওরাকলের অফচেইন উপাদান হাইজ্যাক করে, তবে আপনার স্মার্ট কন্ট্রাক্ট ডিনায়াল অফ সার্ভিস (DoS) আক্রমণের ঝুঁকিতে থাকে।
#### দুর্বল ইনসেনটিভ সামঞ্জস্যতা {#poor-incentive-compatibility}
-কেন্দ্রীয় ওরাকেলগুলিতে প্রায়শই ডেটা প্রদানকারীর জন্য সঠিক/অপরিবর্তিত তথ্য পাঠানোর জন্য দুর্বলভাবে ডিজাইন করা বা অস্তিত্বহীন ইনসেনটিভ থাকে। সঠিকতার জন্য একটি ওরাকেলকে অর্থ প্রদান করা সততার নিশ্চয়তা দেয় না। স্মার্ট কন্ট্র্যাক্ট দ্বারা নিয়ন্ত্রিত মূল্যের পরিমাণ বাড়ার সাথে সাথে এই সমস্যাটি আরও বড় হয়।
+কেন্দ্রীভূত ওরাকলগুলোতে প্রায়শই ডেটা প্রদানকারীর সঠিক/অপরিবর্তিত তথ্য পাঠানোর জন্য দুর্বলভাবে ডিজাইন করা বা অস্তিত্বহীন ইনসেনটিভ থাকে। সঠিকতার জন্য একটি ওরাকলকে অর্থ প্রদান করা সততার গ্যারান্টি দেয় না। স্মার্ট কন্ট্রাক্ট দ্বারা নিয়ন্ত্রিত ভ্যালুর পরিমাণ বাড়ার সাথে সাথে এই সমস্যাটি আরও বড় হয়।
-### বিকেন্দ্রীভূত ওরাকেল {#decentralized-oracles}
+### ডিসেন্ট্রালাইজড ওরাকল {#decentralized-oracles}
-ডিসেন্ট্রালাইজড ওরাকেলগুলি ব্যর্থতার একক পয়েন্টগুলি দূর করে কেন্দ্রীয় ওরাকেলগুলির সীমাবদ্ধতাগুলি কাটিয়ে ওঠার জন্য ডিজাইন করা হয়েছে। একটি ডিসেন্ট্রালাইজড ওরাকেল পরিষেবা একটি পিয়ার-টু-পিয়ার নেটওয়ার্কে একাধিক অংশগ্রহণকারী নিয়ে গঠিত যা একটি স্মার্ট কন্ট্র্যাক্টে পাঠানোর আগে অফচেইন ডেটার উপর কনসেন্সাস গঠন করে।
+ডিসেন্ট্রালাইজড ওরাকলগুলো সিঙ্গেল পয়েন্ট অফ ফেইলিওর দূর করে কেন্দ্রীভূত ওরাকলগুলোর সীমাবদ্ধতা কাটিয়ে ওঠার জন্য ডিজাইন করা হয়েছে। একটি ডিসেন্ট্রালাইজড ওরাকল পরিষেবা একটি পিয়ার-টু-পিয়ার নেটওয়ার্কে একাধিক অংশগ্রহণকারী নিয়ে গঠিত যারা একটি স্মার্ট কন্ট্রাক্ট-এ পাঠানোর আগে অফচেইন ডেটার ওপর কনসেন্সাস গঠন করে।
-একটি ডিসেন্ট্রালাইজড ওরাকেল (আদর্শভাবে) অনুমতিহীন, বিশ্বাসহীন এবং একটি কেন্দ্রীয় পক্ষের প্রশাসন থেকে মুক্ত হওয়া উচিত; বাস্তবে, ওরাকেলগুলির মধ্যে ডিসেন্ট্রালাইজেশন একটি স্পেকট্রামের উপর রয়েছে। সেখানে আধা-ডিসেন্ট্রালাইজড ওরাকেল নেটওয়ার্ক রয়েছে যেখানে যে কেউ অংশগ্রহণ করতে পারে, কিন্তু একজন “মালিক” সহ যিনি ঐতিহাসিক কর্মক্ষমতার উপর ভিত্তি করে নোড অনুমোদন এবং অপসারণ করেন। সম্পূর্ণ ডিসেন্ট্রালাইজড ওরাকেল নেটওয়ার্কও বিদ্যমান: এগুলি সাধারণত স্বতন্ত্র ব্লকচেইন হিসাবে চলে এবং নোডগুলির সমন্বয় এবং দুর্ব্যবহারের শাস্তির জন্য সংজ্ঞায়িত কনসেন্সাস মেকানিজম রয়েছে।
+একটি ডিসেন্ট্রালাইজড ওরাকল (আদর্শভাবে) পারমিশনলেস, ট্রাস্টলেস এবং একটি কেন্দ্রীয় পক্ষের প্রশাসন থেকে মুক্ত হওয়া উচিত; বাস্তবে, ওরাকলগুলোর মধ্যে বিকেন্দ্রীকরণ একটি বর্ণালীতে থাকে। আধা-ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্ক রয়েছে যেখানে যে কেউ অংশগ্রহণ করতে পারে, তবে একজন "মালিক" থাকে যে ঐতিহাসিক পারফরম্যান্সের ওপর ভিত্তি করে নোড-গুলোকে অনুমোদন করে এবং সরিয়ে দেয়। সম্পূর্ণ ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কও বিদ্যমান: এগুলো সাধারণত স্বতন্ত্র ব্লকচেইন হিসেবে চলে এবং নোড-গুলোর সমন্বয় এবং অসদাচরণের শাস্তির জন্য সংজ্ঞায়িত কনসেন্সাস মেকানিজম থাকে।
-ডিসেন্ট্রালাইজড ওরাকেল ব্যবহার করার নিম্নলিখিত সুবিধাগুলি রয়েছে:
+ডিসেন্ট্রালাইজড ওরাকল ব্যবহার করার নিম্নলিখিত সুবিধাগুলো রয়েছে:
### উচ্চ সঠিকতার গ্যারান্টি {#high-correctness-guarantees}
-ডিসেন্ট্রালাইজড ওরাকেলগুলি বিভিন্ন পদ্ধতির ব্যবহার করে ডেটার সঠিকতা অর্জনের চেষ্টা করে। এর মধ্যে রয়েছে ফেরত তথ্যের সত্যতা এবং অখণ্ডতা প্রত্যয়নকারী প্রমাণ ব্যবহার করা এবং একাধিক সত্তাকে সম্মিলিতভাবে অফচেইন ডেটার বৈধতার উপর একমত হওয়ার প্রয়োজন।
+ডিসেন্ট্রালাইজড ওরাকলগুলো বিভিন্ন পদ্ধতি ব্যবহার করে ডেটার সঠিকতা অর্জনের চেষ্টা করে। এর মধ্যে রয়েছে ফিরে আসা তথ্যের সত্যতা এবং অখণ্ডতা প্রমাণকারী প্রুফ ব্যবহার করা এবং অফচেইন ডেটার বৈধতার বিষয়ে সম্মিলিতভাবে একমত হওয়ার জন্য একাধিক সত্তার প্রয়োজন হওয়া।
-#### সত্যতা প্রমাণ {#authenticity-proofs}
+#### অথেন্টিসিটি প্রুফ {#authenticity-proofs}
-সত্যতা প্রমাণ হল ক্রিপ্টোগ্রাফিক পদ্ধতি যা বাহ্যিক উৎস থেকে পুনরুদ্ধার করা তথ্যের স্বাধীন যাচাইকরণের সুবিধা দেয়। এই প্রমাণগুলি তথ্যের উৎস যাচাই করতে পারে এবং পুনরুদ্ধারের পরে ডেটাতে সম্ভাব্য পরিবর্তনগুলি সনাক্ত করতে পারে।
+অথেন্টিসিটি প্রুফ হলো ক্রিপ্টোগ্রাফিক মেকানিজম যা বাহ্যিক উৎস থেকে পুনরুদ্ধার করা তথ্যের স্বাধীন যাচাইকরণ সক্ষম করে। এই প্রুফগুলো তথ্যের উৎস যাচাই করতে পারে এবং পুনরুদ্ধারের পরে ডেটাতে সম্ভাব্য পরিবর্তনগুলো সনাক্ত করতে পারে।
-সত্যতা প্রমাণের উদাহরণগুলির মধ্যে রয়েছে:
+অথেন্টিসিটি প্রুফ-এর উদাহরণগুলোর মধ্যে রয়েছে:
-**ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) প্রমাণ**: ওরাকেল নোড প্রায়ই ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) প্রোটোকলের উপর ভিত্তি করে একটি সুরক্ষিত HTTP সংযোগ ব্যবহার করে বাহ্যিক উৎস থেকে ডেটা পুনরুদ্ধার করে। কিছু ডিসেন্ট্রালাইজড ওরাকেল TLS সেশনগুলি যাচাই করার জন্য (অর্থাৎ, একটি নোড এবং একটি নির্দিষ্ট সার্ভারের মধ্যে তথ্যের বিনিময় নিশ্চিত করা) এবং সেশনের বিষয়বস্তু পরিবর্তন করা হয়নি তা নিশ্চিত করার জন্য সত্যতা প্রমাণ ব্যবহার করে।
+**ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) প্রুফ**: ওরাকল নোড-গুলো প্রায়শই ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) প্রটোকল-এর ওপর ভিত্তি করে একটি সুরক্ষিত HTTP সংযোগ ব্যবহার করে বাহ্যিক উৎস থেকে ডেটা পুনরুদ্ধার করে। কিছু ডিসেন্ট্রালাইজড ওরাকল TLS সেশন যাচাই করতে (অর্থাৎ, একটি নোড এবং একটি নির্দিষ্ট সার্ভারের মধ্যে তথ্যের আদান-প্রদান নিশ্চিত করতে) এবং সেশনের বিষয়বস্তু পরিবর্তন করা হয়নি তা নিশ্চিত করতে অথেন্টিসিটি প্রুফ ব্যবহার করে।
-**ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (TEE) প্রত্যয়ন**: একটি [ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) হল একটি স্যান্ডবক্সড কম্পিউটেশনাল পরিবেশ যা তার হোস্ট সিস্টেমের অপারেশনাল প্রক্রিয়া থেকে বিচ্ছিন্ন। TEE নিশ্চিত করে যে কম্পিউটেশন পরিবেশে সংরক্ষিত/ব্যবহৃত যে কোনো অ্যাপ্লিকেশন কোড বা ডেটা অখণ্ডতা, গোপনীয়তা এবং অপরিবর্তনীয়তা বজায় রাখে। ব্যবহারকারীরা বিশ্বস্ত এক্সিকিউশন পরিবেশে একটি অ্যাপ্লিকেশন ইনস্ট্যান্স চলছে তা প্রমাণ করার জন্য একটি প্রত্যয়নও তৈরি করতে পারে।
+**ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (TEE) এটেস্টেশন**: একটি [ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) হলো একটি স্যান্ডবক্সযুক্ত গণনামূলক পরিবেশ যা এর হোস্ট সিস্টেমের অপারেশনাল প্রক্রিয়াগুলো থেকে বিচ্ছিন্ন। TEE-গুলো নিশ্চিত করে যে কম্পিউটেশন পরিবেশে সংরক্ষিত/ব্যবহৃত যেকোনো অ্যাপ্লিকেশন কোড বা ডেটা অখণ্ডতা, গোপনীয়তা এবং ইমমিউটেবল বৈশিষ্ট্য বজায় রাখে। ব্যবহারকারীরা একটি অ্যাপ্লিকেশন ইনস্ট্যান্স ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্টের মধ্যে চলছে তা প্রমাণ করার জন্য একটি এটেস্টেশন-ও তৈরি করতে পারে।
-ডিসেন্ট্রালাইজড ওরাকেলগুলির নির্দিষ্ট শ্রেণীগুলি ওরাকেল নোড অপারেটরদের TEE প্রত্যয়ন প্রদান করতে চায়। এটি একজন ব্যবহারকারীকে নিশ্চিত করে যে নোড অপারেটর একটি বিশ্বস্ত এক্সিকিউশন পরিবেশে ওরাকেল ক্লায়েন্টের একটি ইনস্ট্যান্স চালাচ্ছে। TEE গুলি বাহ্যিক প্রক্রিয়াগুলিকে একটি অ্যাপ্লিকেশনের কোড এবং ডেটা পরিবর্তন বা পড়া থেকে বাধা দেয়, তাই, সেই প্রত্যয়নগুলি প্রমাণ করে যে ওরাকেল নোড তথ্যটিকে অক্ষত এবং গোপনীয় রেখেছে।
+নির্দিষ্ট শ্রেণীর ডিসেন্ট্রালাইজড ওরাকলগুলোর জন্য ওরাকল নোড অপারেটরদের TEE এটেস্টেশন প্রদান করতে হয়। এটি একজন ব্যবহারকারীকে নিশ্চিত করে যে নোড অপারেটর একটি ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্টে ওরাকল ক্লায়েন্ট-এর একটি ইনস্ট্যান্স চালাচ্ছে। TEE-গুলো বাহ্যিক প্রক্রিয়াগুলোকে একটি অ্যাপ্লিকেশনের কোড এবং ডেটা পরিবর্তন বা পড়া থেকে বাধা দেয়, তাই, এই এটেস্টেশন-গুলো প্রমাণ করে যে ওরাকল নোড তথ্য অক্ষত এবং গোপন রেখেছে।
-#### তথ্যের কনসেন্সাস-ভিত্তিক যাচাইকরণ {#consensus-based-validation-of-information}
+#### তথ্যের কনসেন্সাস-ভিত্তিক বৈধতা {#consensus-based-validation-of-information}
-কেন্দ্রীয় ওরাকেলগুলি স্মার্ট কন্ট্র্যাক্টে ডেটা সরবরাহ করার সময় সত্যের একটি একক উৎসের উপর নির্ভর করে, যা ভুল তথ্য প্রকাশের সম্ভাবনা তৈরি করে। ডিসেন্ট্রালাইজড ওরাকেলগুলি অফচেইন তথ্য জিজ্ঞাসা করার জন্য একাধিক ওরাকেল নোডের উপর নির্ভর করে এই সমস্যার সমাধান করে। একাধিক উৎস থেকে ডেটা তুলনা করে, ডিসেন্ট্রালাইজড ওরাকেলগুলি অনচেইন কন্ট্র্যাক্টে অবৈধ তথ্য পাঠানোর ঝুঁকি হ্রাস করে।
+স্মার্ট কন্ট্রাক্টগুলোতে ডেটা প্রদান করার সময় কেন্দ্রীভূত ওরাকলগুলো সত্যের একটি একক উৎসের ওপর নির্ভর করে, যা ভুল তথ্য প্রকাশের সম্ভাবনা তৈরি করে। ডিসেন্ট্রালাইজড ওরাকলগুলো অফচেইন তথ্যের কোয়েরি করার জন্য একাধিক ওরাকল নোড-এর ওপর নির্ভর করে এই সমস্যার সমাধান করে। একাধিক উৎস থেকে ডেটা তুলনা করে, ডিসেন্ট্রালাইজড ওরাকলগুলো অনচেইন কন্ট্রাক্টগুলোতে অবৈধ তথ্য পাঠানোর ঝুঁকি কমায়।
-তবে, ডিসেন্ট্রালাইজড ওরাকেলগুলিকে একাধিক অফচেইন উৎস থেকে পুনরুদ্ধার করা তথ্যের অসঙ্গতিগুলি মোকাবেলা করতে হবে। তথ্যের মধ্যে পার্থক্য কমানো এবং ওরাকেল কন্ট্র্যাক্টে পাঠানো ডেটা ওরাকেল নোডগুলির সম্মিলিত মতামতকে প্রতিফলিত করে তা নিশ্চিত করার জন্য, ডিসেন্ট্রালাইজড ওরাকেলগুলি নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করে:
+তবে, ডিসেন্ট্রালাইজড ওরাকলগুলোকে একাধিক অফচেইন উৎস থেকে পুনরুদ্ধার করা তথ্যের অসঙ্গতিগুলো মোকাবেলা করতে হবে। তথ্যের পার্থক্য কমানোর জন্য এবং ওরাকল কন্ট্রাক্ট-এ পাঠানো ডেটা ওরাকল নোড-গুলোর সম্মিলিত মতামত প্রতিফলিত করে তা নিশ্চিত করতে, ডিসেন্ট্রালাইজড ওরাকলগুলো নিম্নলিখিত মেকানিজমগুলো ব্যবহার করে:
-##### ডেটার সঠিকতার উপর ভোট/স্টেকিং
+##### ডেটার সঠিকতার ওপর ভোটিং/স্টেকিং
-কিছু ডিসেন্ট্রালাইজড ওরাকেল নেটওয়ার্ক অংশগ্রহণকারীদের ডেটা কোয়েরিগুলির উত্তরের সঠিকতার উপর ভোট বা স্টেক করতে চায় (যেমন, "2020 সালের মার্কিন নির্বাচনে কে জিতেছে?") নেটওয়ার্কের নেটিভ টোকেন ব্যবহার করে। একটি অ্যাগ্রিগেশন প্রোটোকল তারপর ভোট এবং স্টেকগুলিকে একত্রিত করে এবং সংখ্যাগরিষ্ঠদের দ্বারা সমর্থিত উত্তরটিকে বৈধ হিসাবে নেয়।
+কিছু ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কের অংশগ্রহণকারীদের নেটওয়ার্কের নেটিভ টোকেন ব্যবহার করে ডেটা কোয়েরির উত্তরের সঠিকতার ওপর ভোট দিতে বা স্টেক করতে হয় (যেমন, "2020 সালের মার্কিন নির্বাচনে কে জিতেছে?")। একটি অ্যাগ্রিগেশন প্রটোকল তারপর ভোট এবং স্টেক-গুলোকে একত্রিত করে এবং সংখ্যাগরিষ্ঠ দ্বারা সমর্থিত উত্তরটিকে বৈধ হিসেবে গ্রহণ করে।
-যে নোডগুলির উত্তর সংখ্যাগরিষ্ঠদের উত্তর থেকে বিচ্যুত হয় তাদের টোকেনগুলি অন্যদের মধ্যে বিতরণ করে শাস্তি দেওয়া হয় যারা আরও সঠিক মান প্রদান করে। ডেটা সরবরাহ করার আগে নোডগুলিকে একটি বন্ড প্রদান করতে বাধ্য করা সৎ প্রতিক্রিয়াগুলিকে উৎসাহিত করে কারণ তারা রিটার্ন সর্বাধিক করার উদ্দেশ্যে যুক্তিযুক্ত অর্থনৈতিক অভিনেতা হিসাবে বিবেচিত হয়।
+যে নোড-গুলোর উত্তর সংখ্যাগরিষ্ঠ উত্তর থেকে বিচ্যুত হয় তাদের টোকেনগুলো অন্যদের মধ্যে বিতরণ করে শাস্তি দেওয়া হয় যারা আরও সঠিক ভ্যালু প্রদান করে। ডেটা প্রদান করার আগে নোড-গুলোকে একটি বন্ড প্রদান করতে বাধ্য করা সৎ প্রতিক্রিয়াগুলোকে উৎসাহিত করে কারণ তাদের যুক্তিসঙ্গত অর্থনৈতিক অভিনেতা হিসেবে ধরে নেওয়া হয় যারা রিটার্ন সর্বাধিক করতে ইচ্ছুক।
-স্টেকিং/ভোটিং ডিসেন্ট্রালাইজড ওরাকেলগুলিকে [Sybil আক্রমণ](/glossary/#sybil-attack) থেকে রক্ষা করে যেখানে ক্ষতিকারক অভিনেতারা কনসেন্সাস সিস্টেমকে গেম করার জন্য একাধিক পরিচয় তৈরি করে। যাইহোক, স্টেকিং “ফ্রিলোডিং” (ওরাকেল নোডগুলি অন্যদের থেকে তথ্য অনুলিপি করা) এবং “অলস যাচাইকরণ” (ওরাকেল নোডগুলি নিজেরাই তথ্য যাচাই না করে সংখ্যাগরিষ্ঠদের অনুসরণ করা) প্রতিরোধ করতে পারে না।
+স্টেকিং/ভোটিং ডিসেন্ট্রালাইজড ওরাকলগুলোকে [সাইবিল এ্যাটাক](/glossary/#sybil-attack) থেকেও রক্ষা করে যেখানে ক্ষতিকারক অভিনেতারা কনসেন্সাস সিস্টেমকে ম্যানিপুলেট করার জন্য একাধিক পরিচয় তৈরি করে। তবে, স্টেকিং "ফ্রিলোডিং" (ওরাকল নোড-গুলো অন্যদের থেকে তথ্য কপি করে) এবং "অলস বৈধতা" (ওরাকল নোড-গুলো তথ্য নিজে যাচাই না করে সংখ্যাগরিষ্ঠকে অনুসরণ করে) প্রতিরোধ করতে পারে না।
-##### শেলিং পয়েন্ট পদ্ধতি
+##### শেলিং পয়েন্ট মেকানিজম
-[শেলিং পয়েন্ট](https://en.wikipedia.org/wiki/Focal_point_\(game_theory\)) হল একটি গেম-থিওরি ধারণা যা অনুমান করে যে একাধিক সত্তা সর্বদা কোনো যোগাযোগ ছাড়াই কোনো সমস্যার একটি সাধারণ সমাধানে ডিফল্ট হবে। শেলিং-পয়েন্ট পদ্ধতিগুলি প্রায়শই ডিসেন্ট্রালাইজড ওরাকেল নেটওয়ার্কগুলিতে ব্যবহৃত হয় যাতে নোডগুলি ডেটা অনুরোধের উত্তরে কনসেন্সাস পৌঁছাতে পারে।
+[শেলিং পয়েন্ট]() হলো একটি গেম-থিওরি ধারণা যা ধরে নেয় যে কোনো যোগাযোগের অনুপস্থিতিতে একাধিক সত্তা সর্বদা একটি সমস্যার সাধারণ সমাধানে ডিফল্ট হবে। শেলিং-পয়েন্ট মেকানিজমগুলো প্রায়শই ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কগুলোতে ব্যবহৃত হয় যাতে নোড-গুলো ডেটা অনুরোধের উত্তরগুলোতে কনসেন্সাস-এ পৌঁছাতে পারে।
-এর জন্য একটি প্রাথমিক ধারণা ছিল [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed), একটি প্রস্তাবিত ডেটা ফিড যেখানে অংশগ্রহণকারীরা "স্কেলার" প্রশ্নগুলির প্রতিক্রিয়া জমা দেয় (প্রশ্নগুলির উত্তরগুলি মাত্রা দ্বারা বর্ণনা করা হয়, যেমন, "ETH-এর দাম কত?"), একটি আমানত সহ। যে ব্যবহারকারীরা 25তম এবং 75তম [পার্সেন্টাইল](https://en.wikipedia.org/wiki/Percentile) এর মধ্যে মান প্রদান করে তাদের পুরস্কৃত করা হয়, যখন যাদের মান মধ্যম মান থেকে ব্যাপকভাবে বিচ্যুত হয় তাদের দণ্ডিত করা হয়।
+এর জন্য একটি প্রাথমিক ধারণা ছিল [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed), একটি প্রস্তাবিত ডেটা ফিড যেখানে অংশগ্রহণকারীরা একটি ডিপোজিটের সাথে "স্কেলার" প্রশ্নগুলোর (যে প্রশ্নগুলোর উত্তর মাত্রা দ্বারা বর্ণনা করা হয়, যেমন, "ETH এর দাম কত?") প্রতিক্রিয়া জমা দেয়। যে ব্যবহারকারীরা 25 তম এবং 75 তম [পার্সেন্টাইল](https://en.wikipedia.org/wiki/Percentile)-এর মধ্যে ভ্যালু প্রদান করে তাদের পুরস্কৃত করা হয়, অন্যদিকে যাদের ভ্যালু মিডিয়ান ভ্যালু থেকে ব্যাপকভাবে বিচ্যুত হয় তাদের শাস্তি দেওয়া হয়।
-যদিও শেলিংকয়েন আজ বিদ্যমান নেই, তবে বেশ কয়েকটি ডিসেন্ট্রালাইজড ওরাকেল—বিশেষত [মেকার প্রোটোকলের ওরাকেলস](https://docs.makerdao.com/smart-contract-modules/oracle-module)—ওরাকেল ডেটার সঠিকতা উন্নত করতে শেলিং-পয়েন্ট পদ্ধতি ব্যবহার করে। প্রতিটি মেকার ওরাকেল নোড ("রিলের" এবং "ফিড") এর একটি অফচেইন P2P নেটওয়ার্ক নিয়ে গঠিত যা জামানত সম্পদের জন্য বাজারের মূল্য জমা দেয় এবং একটি অনচেইন “মিডিয়ানাইজার” কন্ট্র্যাক্ট যা সমস্ত প্রদত্ত মানের মধ্যম গণনা করে। নির্দিষ্ট বিলম্বের সময়কাল শেষ হয়ে গেলে, এই মধ্যম মানটি সংশ্লিষ্ট সম্পদের জন্য নতুন রেফারেন্স মূল্য হয়ে যায়।
+যদিও SchellingCoin আজ বিদ্যমান নেই, বেশ কয়েকটি ডিসেন্ট্রালাইজড ওরাকল—বিশেষ করে [Maker Protocol’s Oracles](https://docs.makerdao.com/smart-contract-modules/oracle-module)—ওরাকল ডেটার সঠিকতা উন্নত করতে শেলিং-পয়েন্ট মেকানিজম ব্যবহার করে। প্রতিটি মেকার ওরাকল নোড-গুলোর ("রিলেয়ার" এবং "ফিড") একটি অফচেইন P2P নেটওয়ার্ক নিয়ে গঠিত যারা কোল্যাটারাল অ্যাসেটগুলোর জন্য বাজার মূল্য জমা দেয় এবং একটি অনচেইন "মিডিয়ানাইজার" কন্ট্রাক্ট যা সমস্ত প্রদত্ত ভ্যালুর মিডিয়ান গণনা করে। নির্দিষ্ট বিলম্বের সময় শেষ হয়ে গেলে, এই মিডিয়ান ভ্যালুটি সংশ্লিষ্ট অ্যাসেটের জন্য নতুন রেফারেন্স প্রাইস হয়ে যায়।
-শেলিং পয়েন্ট পদ্ধতি ব্যবহার করে এমন ওরাকেলগুলির অন্যান্য উদাহরণগুলির মধ্যে রয়েছে [চেইনলিঙ্ক অফচেইন রিপোর্টিং](https://docs.chain.link/architecture-overview/off-chain-reporting) এবং [উইটনেট](https://witnet.io/)। উভয় সিস্টেমে, পিয়ার-টু-পিয়ার নেটওয়ার্কের ওরাকেল নোডগুলির প্রতিক্রিয়াগুলিকে একটি একক সামগ্রিক মানে একত্রিত করা হয়, যেমন একটি গড় বা মধ্যম। নোডগুলিকে তাদের প্রতিক্রিয়াগুলি সামগ্রিক মানের সাথে কতটা সারিবদ্ধ বা বিচ্যুত হয় তার উপর ভিত্তি করে পুরস্কৃত বা দণ্ডিত করা হয়।
+শেলিং পয়েন্ট মেকানিজম ব্যবহার করে এমন ওরাকলগুলোর অন্যান্য উদাহরণের মধ্যে রয়েছে [Chainlink Offchain Reporting](https://docs.chain.link/architecture-overview/off-chain-reporting) এবং [Witnet](https://witnet.io/)। উভয় সিস্টেমে, পিয়ার-টু-পিয়ার নেটওয়ার্কে ওরাকল নোড-গুলোর প্রতিক্রিয়াগুলো একটি একক সামগ্রিক ভ্যালুতে একত্রিত করা হয়, যেমন একটি গড় বা মিডিয়ান। নোড-গুলোকে তাদের প্রতিক্রিয়াগুলো সামগ্রিক ভ্যালুর সাথে কতটা সামঞ্জস্যপূর্ণ বা বিচ্যুত হয় তার ওপর ভিত্তি করে পুরস্কৃত বা শাস্তি দেওয়া হয়।
-শেলিং পয়েন্ট পদ্ধতিগুলি আকর্ষণীয় কারণ তারা অনচেইন ফুটপ্রিন্ট হ্রাস করে (শুধুমাত্র একটি লেনদেন পাঠাতে হবে) এবং বিকেন্দ্রীকরণের নিশ্চয়তা দেয়। পরেরটি সম্ভব কারণ নোডগুলিকে গড়/মধ্যম মান তৈরি করে এমন অ্যালগরিদমে খাওয়ানোর আগে জমা দেওয়া প্রতিক্রিয়ার তালিকায় স্বাক্ষর করতে হবে।
+শেলিং পয়েন্ট মেকানিজমগুলো আকর্ষণীয় কারণ এগুলো বিকেন্দ্রীকরণের গ্যারান্টি দেওয়ার সাথে সাথে অনচেইন ফুটপ্রিন্ট কম করে (শুধুমাত্র একটি লেনদেন পাঠাতে হয়)। শেষেরটি সম্ভব কারণ গড়/মিডিয়ান ভ্যালু তৈরি করে এমন এ্যালগরিদম-এ ফিড করার আগে নোড-গুলোকে অবশ্যই জমা দেওয়া প্রতিক্রিয়াগুলোর তালিকায় সাইন অফ করতে হবে।
### প্রাপ্যতা {#availability}
-ডিসেন্ট্রালাইজড ওরাকেল পরিষেবা স্মার্ট কন্ট্র্যাক্টগুলিতে অফচেইন ডেটার উচ্চ প্রাপ্যতা নিশ্চিত করে। এটি অফচেইন তথ্যের উৎস এবং অনচেইনে তথ্য স্থানান্তরের জন্য দায়ী নোড উভয়কেই বিকেন্দ্রীকরণ করে অর্জন করা হয়।
+ডিসেন্ট্রালাইজড ওরাকল পরিষেবাগুলো স্মার্ট কন্ট্রাক্টগুলোতে অফচেইন ডেটার উচ্চ প্রাপ্যতা নিশ্চিত করে। এটি অফচেইন তথ্যের উৎস এবং অনচেইন তথ্য স্থানান্তরের জন্য দায়ী নোড উভয়কেই বিকেন্দ্রীকরণ করে অর্জন করা হয়।
-এটি ফল্ট-টলারেন্স নিশ্চিত করে কারণ ওরাকেল কন্ট্র্যাক্ট অন্যান্য কন্ট্র্যাক্ট থেকে কোয়েরি কার্যকর করার জন্য একাধিক নোডের (যারা একাধিক ডেটা উৎসের উপরও নির্ভর করে) উপর নির্ভর করতে পারে। উৎস _এবং_ নোড-অপারেটর স্তরে ডিসেন্ট্রালাইজেশন অত্যন্ত গুরুত্বপূর্ণ—একই উৎস থেকে পুনরুদ্ধার করা তথ্য পরিবেশনকারী ওরাকেল নোডগুলির একটি নেটওয়ার্ক একটি কেন্দ্রীয় ওরাকেলের মতো একই সমস্যায় পড়বে।
+এটি ফল্ট-টলারেন্স নিশ্চিত করে কারণ ওরাকল কন্ট্রাক্ট অন্যান্য কন্ট্রাক্ট থেকে কোয়েরি এক্সিকিউট করার জন্য একাধিক নোড-এর (যারা একাধিক ডেটা উৎসের ওপরও নির্ভর করে) ওপর নির্ভর করতে পারে। উৎস _এবং_ নোড-অপারেটর স্তরে বিকেন্দ্রীকরণ অত্যন্ত গুরুত্বপূর্ণ—একই উৎস থেকে পুনরুদ্ধার করা তথ্য পরিবেশনকারী ওরাকল নোড-গুলোর একটি নেটওয়ার্ক একটি কেন্দ্রীভূত ওরাকলের মতো একই সমস্যার সম্মুখীন হবে।
-স্টেক-ভিত্তিক ওরাকেলগুলির পক্ষে ডেটা অনুরোধে দ্রুত সাড়া দিতে ব্যর্থ হওয়া নোড অপারেটরদের স্ল্যাশ করাও সম্ভব। এটি ওরাকেল নোডগুলিকে ফল্ট-টলারেন্ট পরিকাঠামোতে বিনিয়োগ করতে এবং সময়মতো ডেটা সরবরাহ করতে উল্লেখযোগ্যভাবে উৎসাহিত করে।
+স্টেক-ভিত্তিক ওরাকলগুলোর পক্ষে ডেটা অনুরোধগুলোতে দ্রুত সাড়া দিতে ব্যর্থ হওয়া নোড অপারেটরদের স্ল্যাশিং করাও সম্ভব। এটি ওরাকল নোড-গুলোকে ফল্ট-টলারেন্ট পরিকাঠামোতে বিনিয়োগ করতে এবং সময়মতো ডেটা প্রদান করতে উল্লেখযোগ্যভাবে উৎসাহিত করে।
### ভালো ইনসেনটিভ সামঞ্জস্যতা {#good-incentive-compatibility}
-ডিসেন্ট্রালাইজড ওরাকেলগুলি ওরাকেল নোডগুলির মধ্যে [বাইজেন্টাইন](https://en.wikipedia.org/wiki/Byzantine_fault) আচরণ প্রতিরোধ করার জন্য বিভিন্ন ইনসেনটিভ ডিজাইন প্রয়োগ করে। বিশেষত, তারা _অ্যাট্রিবিউটেবিলিটি_ এবং _অ্যাকাউন্টেবিলিটি_ অর্জন করে:
+ডিসেন্ট্রালাইজড ওরাকলগুলো ওরাকল নোড-গুলোর মধ্যে [বাইজেন্টাইন](https://en.wikipedia.org/wiki/Byzantine_fault) আচরণ প্রতিরোধ করার জন্য বিভিন্ন ইনসেনটিভ ডিজাইন প্রয়োগ করে। বিশেষ করে, তারা _অ্যাট্রিবিউটেবিলিটি_ এবং _জবাবদিহিতা_ অর্জন করে:
-1. ডিসেন্ট্রালাইজড ওরাকেল নোডগুলিকে প্রায়শই ডেটা অনুরোধের প্রতিক্রিয়ায় তারা যে ডেটা সরবরাহ করে তাতে স্বাক্ষর করতে হয়। এই তথ্যটি ওরাকেল নোডগুলির ঐতিহাসিক কর্মক্ষমতা মূল্যায়নে সাহায্য করে, যাতে ব্যবহারকারীরা ডেটা অনুরোধ করার সময় অবিশ্বস্ত ওরাকেল নোডগুলিকে ফিল্টার করতে পারে। একটি উদাহরণ হল উইটনেটের [অ্যালগরিদমিক রেপুটেশন সিস্টেম](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system)।
+1. ডিসেন্ট্রালাইজড ওরাকল নোড-গুলোকে প্রায়শই ডেটা অনুরোধের প্রতিক্রিয়ায় তাদের দেওয়া ডেটাতে স্বাক্ষর করতে হয়। এই তথ্যটি ওরাকল নোড-গুলোর ঐতিহাসিক পারফরম্যান্স মূল্যায়নে সাহায্য করে, যাতে ব্যবহারকারীরা ডেটা অনুরোধ করার সময় অবিশ্বস্ত ওরাকল নোড-গুলোকে ফিল্টার করতে পারে। একটি উদাহরণ হলো Witnet-এর [Algorithmic Reputation System](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system)।
-2. ডিসেন্ট্রালাইজড ওরাকেলগুলি—যেমনটি আগে ব্যাখ্যা করা হয়েছে—নোডগুলিকে তারা জমা দেওয়া ডেটার সত্যতার উপর তাদের আস্থার উপর একটি স্টেক রাখতে বলতে পারে। যদি দাবিটি সঠিক হয়, তবে এই স্টেকটি সৎ পরিষেবার জন্য পুরষ্কার সহ ফেরত দেওয়া যেতে পারে। কিন্তু তথ্যটি ভুল হলে এটি স্ল্যাশও করা যেতে পারে, যা অ্যাকাউন্টেবিলিটির কিছু পরিমাপ সরবরাহ করে।
+2. ডিসেন্ট্রালাইজড ওরাকলগুলো—যেমনটি আগে ব্যাখ্যা করা হয়েছে—নোড-গুলোকে তাদের জমা দেওয়া ডেটার সত্যতার ওপর তাদের আস্থার ওপর একটি স্টেক রাখতে বলতে পারে। যদি দাবিটি সঠিক প্রমাণিত হয়, তবে এই স্টেকটি সৎ পরিষেবার জন্য পুরস্কারের সাথে ফেরত দেওয়া যেতে পারে। তবে তথ্যটি ভুল হলে এটি স্ল্যাশিং-ও করা যেতে পারে, যা জবাবদিহিতার কিছু পরিমাপ প্রদান করে।
-## স্মার্ট কন্ট্র্যাক্টে ওরাকেলের অ্যাপ্লিকেশন {#applications-of-oracles-in-smart-contracts}
+## স্মার্ট কন্ট্রাক্টগুলোতে ওরাকলের অ্যাপ্লিকেশন {#applications-of-oracles-in-smart-contracts}
-Ethereum-এ ওরাকেলের জন্য নিম্নলিখিতগুলি সাধারণ ব্যবহারের ক্ষেত্র:
+ইথিরিয়ামে ওরাকলের সাধারণ ব্যবহার-ক্ষেত্রগুলো নিচে দেওয়া হলো:
-### আর্থিক তথ্য পুনরুদ্ধার করা {#retrieving-financial-data}
+### আর্থিক ডেটা পুনরুদ্ধার করা {#retrieving-financial-data}
-[ডিসেন্ট্রালাইজড ফাইন্যান্স](/defi/) (DeFi) অ্যাপ্লিকেশনগুলি পিয়ার-টু-পিয়ার ঋণ, ধার এবং সম্পদ ট্রেড করার অনুমতি দেয়। এর জন্য প্রায়শই বিভিন্ন আর্থিক তথ্যের প্রয়োজন হয়, যার মধ্যে বিনিময় হারের ডেটা (ক্রিপ্টোকারেন্সির ফিয়াট মান গণনা করতে বা টোকেনের মূল্য তুলনা করতে) এবং মূলধন বাজারের ডেটা (টোকেনাইজড সম্পদের মূল্য গণনা করতে, যেমন সোনা বা মার্কিন ডলার) অন্তর্ভুক্ত।
+[ডিসেন্ট্রালাইজড ফাইন্যান্স](/defi/) (DeFi) অ্যাপ্লিকেশনগুলো পিয়ার-টু-পিয়ার ঋণ দেওয়া, ধার নেওয়া এবং অ্যাসেট ট্রেডিংয়ের অনুমতি দেয়। এর জন্য প্রায়শই বিভিন্ন আর্থিক তথ্য পাওয়ার প্রয়োজন হয়, যার মধ্যে রয়েছে বিনিময় হারের ডেটা (ক্রিপটোকারেন্সি-গুলোর ফিয়াট ভ্যালু গণনা করার জন্য বা টোকেন-এর দাম তুলনা করার জন্য) এবং ক্যাপিটাল মার্কেট ডেটা (টোকেনাইজড অ্যাসেটগুলোর ভ্যালু গণনা করার জন্য, যেমন সোনা বা মার্কিন ডলার)।
-উদাহরণস্বরূপ, একটি DeFi ঋণ প্রোটোকলকে জামানত হিসাবে জমা দেওয়া সম্পদের (যেমন, ETH) বর্তমান বাজার মূল্য জিজ্ঞাসা করতে হবে। এটি কন্ট্র্যাক্টকে জামানত সম্পদের মূল্য নির্ধারণ করতে এবং সিস্টেম থেকে কতটা ধার করা যায় তা নির্ধারণ করতে দেয়।
+উদাহরণস্বরূপ, একটি DeFi লেন্ডিং প্রটোকল-এর কোল্যাটারাল হিসেবে জমা দেওয়া অ্যাসেটগুলোর (যেমন, ETH) বর্তমান বাজার মূল্যের কোয়েরি করতে হবে। এটি কন্ট্রাক্ট-কে কোল্যাটারাল অ্যাসেটগুলোর ভ্যালু নির্ধারণ করতে এবং সিস্টেম থেকে এটি কতটা ধার নিতে পারে তা নির্ধারণ করতে দেয়।
-DeFi-তে জনপ্রিয় “প্রাইস ওরাকেল” (যেমনটি প্রায়শই বলা হয়) এর মধ্যে রয়েছে চেইনলিঙ্ক প্রাইস ফিড, কম্পাউন্ড প্রোটোকলের [ওপেন প্রাইস ফিড](https://compound.finance/docs/prices), ইউনিসওয়াপের [টাইম-ওয়েটেড অ্যাভারেজ প্রাইস (TWAP)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles), এবং [মেকার ওরাকেলস](https://docs.makerdao.com/smart-contract-modules/oracle-module)।
+DeFi-তে জনপ্রিয় "প্রাইস ওরাকল" (যেমনটি তাদের প্রায়শই বলা হয়) এর মধ্যে রয়েছে Chainlink Price Feeds, Compound Protocol-এর [Open Price Feed](https://compound.finance/docs/prices), Uniswap-এর [Time-Weighted Average Prices (TWAPs)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles), এবং [Maker Oracles](https://docs.makerdao.com/smart-contract-modules/oracle-module)।
-নির্মাতাদের তাদের প্রকল্পে এই প্রাইস ওরাকেলগুলিকে একীভূত করার আগে তাদের সাথে আসা সতর্কতাগুলি বোঝা উচিত। এই [প্রবন্ধটি](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/) উল্লিখিত যেকোনো প্রাইস ওরাকেল ব্যবহার করার পরিকল্পনা করার সময় কী বিবেচনা করতে হবে তার একটি বিশদ বিশ্লেষণ প্রদান করে।
+নির্মাতাদের তাদের প্রজেক্টে এগুলোকে একীভূত করার আগে এই প্রাইস ওরাকলগুলোর সাথে আসা সতর্কতাগুলো বোঝা উচিত। এই [নিবন্ধটি](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/) উল্লিখিত প্রাইস ওরাকলগুলোর যেকোনো একটি ব্যবহার করার পরিকল্পনা করার সময় কী বিবেচনা করতে হবে তার একটি বিশদ বিশ্লেষণ প্রদান করে।
-নিচে একটি উদাহরণ দেওয়া হল যে আপনি কীভাবে একটি চেইনলিঙ্ক প্রাইস ফিড ব্যবহার করে আপনার স্মার্ট কন্ট্র্যাক্টে সর্বশেষ ETH মূল্য পুনরুদ্ধার করতে পারেন:
+নিচে একটি উদাহরণ দেওয়া হলো যে কীভাবে আপনি একটি Chainlink প্রাইস ফিড ব্যবহার করে আপনার স্মার্ট কন্ট্রাক্ট-এ সর্বশেষ ETH মূল্য পুনরুদ্ধার করতে পারেন:
```solidity
pragma solidity ^0.6.7;
@@ -329,18 +329,16 @@ contract PriceConsumerV3 {
AggregatorV3Interface internal priceFeed;
- /**
- * নেটওয়ার্ক: কোভান
+ /* *
+ * নেটওয়ার্ক: Kovan
* অ্যাগ্রিগেটর: ETH/USD
- * ঠিকানা: 0x9326BFA02ADD2366b30bacB125260Af641031331
- */
+ * ঠিকানা: 0x9326BFA02ADD2366b30bacB125260Af641031331 */
constructor() public {
priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
}
- /**
- * সর্বশেষ মূল্য প্রদান করে
- */
+ /* *
+ * সর্বশেষ মূল্য রিটার্ন করে */
function getLatestPrice() public view returns (int) {
(
uint80 roundID,
@@ -354,80 +352,84 @@ contract PriceConsumerV3 {
}
```
-### যাচাইযোগ্য এলোমেলোতা তৈরি করা {#generating-verifiable-randomness}
+### যাচাইযোগ্য র্যান্ডমনেস তৈরি করা {#generating-verifiable-randomness}
-কিছু ব্লকচেইন অ্যাপ্লিকেশন, যেমন ব্লকচেইন-ভিত্তিক গেম বা লটারি স্কিমগুলির জন্য কার্যকরভাবে কাজ করার জন্য একটি উচ্চ স্তরের অনির্দেশ্যতা এবং এলোমেলোতার প্রয়োজন হয়। যাইহোক, ব্লকচেইনের নির্ধারক এক্সিকিউশন এলোমেলোতা দূর করে।
+নির্দিষ্ট ব্লকচেইন অ্যাপ্লিকেশন, যেমন ব্লকচেইন-ভিত্তিক গেম বা লটারি স্কিমগুলোর কার্যকরভাবে কাজ করার জন্য উচ্চ স্তরের অনির্দেশ্যতা এবং র্যান্ডমনেস প্রয়োজন। তবে, ব্লকচেইনগুলোর ডিটারমিনিস্টিক এক্সিকিউশন র্যান্ডমনেস দূর করে।
-মূল পদ্ধতিটি ছিল `blockhash`-এর মতো ছদ্ম-এলোমেলো ক্রিপ্টোগ্রাফিক ফাংশন ব্যবহার করা, কিন্তু এগুলি [মাইনারদের দ্বারা ম্যানিপুলেট](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.) করা যেত প্রুফ-অফ-ওয়ার্ক অ্যালগরিদমের সমাধান করা। এছাড়াও, Ethereum-এর [প্রুফ-অফ-স্টেকে স্যুইচ](/roadmap/merge/) মানে ডেভেলপাররা আর অনচেইন এলোমেলোতার জন্য `blockhash`-এর উপর নির্ভর করতে পারে না। বিকন চেইনের [RANDAO পদ্ধতি](https://eth2book.info/altair/part2/building_blocks/randomness) এর পরিবর্তে এলোমেলোতার একটি বিকল্প উৎস প্রদান করে।
+মূল পদ্ধতিটি ছিল সিউডোর্যান্ডম ক্রিপ্টোগ্রাফিক ফাংশন ব্যবহার করা, যেমন `blockhash`, কিন্তু এগুলো প্রুফ-অফ-ওয়ার্ক এ্যালগরিদম সমাধানকারী [মাইনারদের দ্বারা ম্যানিপুলেট করা যেতে পারে](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.)। এছাড়া, ইথিরিয়ামের [প্রুফ-অফ-স্টেক-এ রূপান্তর](/roadmap/merge/)-এর অর্থ হলো ডেভেলপাররা অনচেইন র্যান্ডমনেস-এর জন্য আর `blockhash`-এর ওপর নির্ভর করতে পারবে না। বিকন চেইন-এর [RANDAO মেকানিজম](https://eth2book.info/altair/part2/building_blocks/randomness) এর পরিবর্তে র্যান্ডমনেস-এর একটি বিকল্প উৎস প্রদান করে।
-অফচেইনে র্যান্ডম মান তৈরি করা এবং এটি অনচেইনে পাঠানো সম্ভব, কিন্তু এটি করা ব্যবহারকারীদের উপর উচ্চ বিশ্বাসের প্রয়োজনীয়তা আরোপ করে। তাদের বিশ্বাস করতে হবে যে মানটি সত্যিই অনির্দেশ্য পদ্ধতির মাধ্যমে তৈরি করা হয়েছিল এবং ট্রানজিটে পরিবর্তিত হয়নি।
+অফচেইন র্যান্ডম ভ্যালু তৈরি করা এবং এটি অনচেইন পাঠানো সম্ভব, তবে এটি করা ব্যবহারকারীদের ওপর উচ্চ আস্থার প্রয়োজনীয়তা আরোপ করে। তাদের অবশ্যই বিশ্বাস করতে হবে যে ভ্যালুটি সত্যিই অনির্দেশ্য মেকানিজমের মাধ্যমে তৈরি করা হয়েছিল এবং ট্রানজিটে পরিবর্তন করা হয়নি।
-অফচেইন কম্পিউটেশনের জন্য ডিজাইন করা ওরাকেলস অফচেইনে সুরক্ষিতভাবে এলোমেলো ফলাফল তৈরি করে এই সমস্যার সমাধান করে যা তারা অনচেইনে সম্প্রচার করে ক্রিপ্টোগ্রাফিক প্রমাণের সাথে প্রক্রিয়ার অনির্দেশ্যতা প্রত্যয়ন করে। একটি উদাহরণ হল [চেইনলিঙ্ক VRF](https://docs.chain.link/docs/chainlink-vrf/) (যাচাইযোগ্য র্যান্ডম ফাংশন), যা একটি প্রমাণযোগ্য ন্যায্য এবং ট্যাম্পার-প্রুফ র্যান্ডম নম্বর জেনারেটর (RNG) যা অনির্দেশ্য ফলাফলের উপর নির্ভরশীল অ্যাপ্লিকেশনগুলির জন্য নির্ভরযোগ্য স্মার্ট কন্ট্র্যাক্ট তৈরির জন্য দরকারী।
+অফচেইন কম্পিউটেশনের জন্য ডিজাইন করা ওরাকলগুলো অফচেইন নিরাপদে র্যান্ডম ফলাফল তৈরি করে এই সমস্যার সমাধান করে যা তারা প্রক্রিয়ার অনির্দেশ্যতা প্রমাণকারী ক্রিপ্টোগ্রাফিক প্রুফ-এর সাথে অনচেইন সম্প্রচার করে। একটি উদাহরণ হলো [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/) (Verifiable Random Function), যা একটি প্রমাণযোগ্যভাবে ন্যায্য এবং টেম্পার-প্রুফ র্যান্ডম নম্বর জেনারেটর (RNG) যা অনির্দেশ্য ফলাফলের ওপর নির্ভর করে এমন অ্যাপ্লিকেশনগুলোর জন্য নির্ভরযোগ্য স্মার্ট কন্ট্রাক্ট তৈরির জন্য দরকারী।
-### ইভেন্টের জন্য ফলাফল পাওয়া {#getting-outcomes-for-events}
+### ইভেন্টগুলোর জন্য ফলাফল পাওয়া {#getting-outcomes-for-events}
-ওরাকেল দিয়ে, বাস্তব-বিশ্বের ইভেন্টগুলিতে সাড়া দেয় এমন স্মার্ট কন্ট্র্যাক্ট তৈরি করা সহজ। ওরাকেল পরিষেবাগুলি কন্ট্র্যাক্টগুলিকে অফচেইন উপাদানগুলির মাধ্যমে বাহ্যিক API-তে সংযোগ করতে এবং সেই ডেটা উৎস থেকে তথ্য ব্যবহার করার অনুমতি দিয়ে এটি সম্ভব করে। উদাহরণস্বরূপ, পূর্বে উল্লিখিত প্রেডিকশন ড্যাপটি একটি বিশ্বস্ত অফচেইন উৎস (যেমন, অ্যাসোসিয়েটেড প্রেস) থেকে নির্বাচনের ফলাফল ফেরাতে একটি ওরাকেলকে অনুরোধ করতে পারে।
+ওরাকলের সাহায্যে, বাস্তব-জগতের ইভেন্টগুলোতে সাড়া দেয় এমন স্মার্ট কন্ট্রাক্ট তৈরি করা সহজ। ওরাকল পরিষেবাগুলো কন্ট্রাক্টগুলোকে অফচেইন উপাদানগুলোর মাধ্যমে বাহ্যিক API-গুলোর সাথে সংযোগ করতে এবং সেই ডেটা উৎসগুলো থেকে তথ্য গ্রহণ করার অনুমতি দিয়ে এটি সম্ভব করে তোলে। উদাহরণস্বরূপ, আগে উল্লিখিত প্রেডিকশন ডিএ্যাপ একটি বিশ্বস্ত অফচেইন উৎস (যেমন, অ্যাসোসিয়েটেড প্রেস) থেকে নির্বাচনের ফলাফল ফেরত দেওয়ার জন্য একটি ওরাকলকে অনুরোধ করতে পারে।
-বাস্তব-বিশ্বের ফলাফলের উপর ভিত্তি করে ডেটা পুনরুদ্ধার করার জন্য ওরাকেল ব্যবহার করা অন্যান্য অভিনব ব্যবহারের ক্ষেত্রগুলিকে সক্ষম করে; উদাহরণস্বরূপ, একটি ডিসেন্ট্রালাইজড বীমা পণ্য কার্যকরভাবে কাজ করার জন্য আবহাওয়া, দুর্যোগ ইত্যাদি সম্পর্কে সঠিক তথ্যের প্রয়োজন।
+বাস্তব-জগতের ফলাফলের ওপর ভিত্তি করে ডেটা পুনরুদ্ধার করতে ওরাকল ব্যবহার করা অন্যান্য অভিনব ব্যবহার-ক্ষেত্রগুলোকে সক্ষম করে; উদাহরণস্বরূপ, একটি ডিসেন্ট্রালাইজড বীমা পণ্যের কার্যকরভাবে কাজ করার জন্য আবহাওয়া, দুর্যোগ ইত্যাদি সম্পর্কে সঠিক তথ্যের প্রয়োজন।
-### স্মার্ট কন্ট্র্যাক্ট স্বয়ংক্রিয় করা {#automating-smart-contracts}
+### স্মার্ট কন্ট্রাক্ট স্বয়ংক্রিয় করা {#automating-smart-contracts}
-স্মার্ট কন্ট্র্যাক্টগুলি স্বয়ংক্রিয়ভাবে চলে না; বরং, একটি বাহ্যিকভাবে মালিকানাধীন অ্যাকাউন্ট (EOA), বা অন্য কোনো কন্ট্র্যাক্ট অ্যাকাউন্টকে, কন্ট্র্যাক্টের কোড কার্যকর করার জন্য সঠিক ফাংশনগুলিকে ট্রিগার করতে হবে। বেশিরভাগ ক্ষেত্রে, কন্ট্র্যাক্টের ফাংশনগুলির বেশিরভাগই পাবলিক এবং EOA এবং অন্যান্য কন্ট্র্যাক্ট দ্বারা আহ্বান করা যেতে পারে।
+স্মার্ট কন্ট্রাক্টগুলো স্বয়ংক্রিয়ভাবে চলে না; বরং, একটি এক্সটার্নালি ওনড একাউন্ট (EOA), বা অন্য একটি কন্ট্রাক্ট একাউন্ট-কে কন্ট্রাক্ট-এর কোড এক্সিকিউট করার জন্য সঠিক ফাংশনগুলো ট্রিগার করতে হবে। বেশিরভাগ ক্ষেত্রে, কন্ট্রাক্ট-এর ফাংশনগুলোর বড় অংশ সর্বজনীন এবং EOA এবং অন্যান্য কন্ট্রাক্ট দ্বারা আহ্বান করা যেতে পারে।
-কিন্তু একটি কন্ট্র্যাক্টের মধ্যে _প্রাইভেট ফাংশন_ও রয়েছে যা অন্যদের কাছে অ্যাক্সেসযোগ্য নয়; কিন্তু যা একটি dApp-এর সামগ্রিক কার্যকারিতার জন্য গুরুত্বপূর্ণ। উদাহরণগুলির মধ্যে রয়েছে একটি `mintERC721Token()` ফাংশন যা পর্যায়ক্রমে ব্যবহারকারীদের জন্য নতুন NFT তৈরি করে, একটি প্রেডিকশন মার্কেটে পেআউট দেওয়ার জন্য একটি ফাংশন, বা একটি DEX-এ স্টেক করা টোকেনগুলি আনলক করার জন্য একটি ফাংশন।
+তবে একটি কন্ট্রাক্ট-এর মধ্যে _প্রাইভেট ফাংশনও_ রয়েছে যা অন্যদের কাছে অ্যাক্সেসযোগ্য নয়; কিন্তু যা একটি ডিএ্যাপ-এর সামগ্রিক কার্যকারিতার জন্য অত্যন্ত গুরুত্বপূর্ণ। উদাহরণগুলোর মধ্যে রয়েছে একটি `mintERC721Token()` ফাংশন যা পর্যায়ক্রমে ব্যবহারকারীদের জন্য নতুন NFT মিন্ট করে, একটি প্রেডিকশন মার্কেটে পেআউট দেওয়ার জন্য একটি ফাংশন, বা একটি DEX-এ স্টেক করা টোকেন আনলক করার জন্য একটি ফাংশন।
-অ্যাপ্লিকেশনটি মসৃণভাবে চালু রাখার জন্য ডেভেলপারদের নির্দিষ্ট বিরতিতে এই ধরনের ফাংশনগুলিকে ট্রিগার করতে হবে। যাইহোক, এটি ডেভেলপারদের জন্য জাগতিক কাজগুলিতে আরও ঘন্টা নষ্ট করতে পারে, যে কারণে স্মার্ট কন্ট্র্যাক্টগুলির এক্সিকিউশন স্বয়ংক্রিয় করা আকর্ষণীয়।
+অ্যাপ্লিকেশনটি সুচারুভাবে চালানোর জন্য ডেভেলপারদের বিরতিতে এই ধরনের ফাংশনগুলো ট্রিগার করতে হবে। তবে, এটি ডেভেলপারদের জন্য জাগতিক কাজগুলোতে আরও বেশি সময় নষ্ট করতে পারে, যে কারণে স্মার্ট কন্ট্রাক্ট-এর এক্সিকিউশন স্বয়ংক্রিয় করা আকর্ষণীয়।
-কিছু ডিসেন্ট্রালাইজড ওরাকেল নেটওয়ার্ক অটোমেশন পরিষেবা অফার করে, যা অফচেইন ওরাকেল নোডগুলিকে ব্যবহারকারীর দ্বারা সংজ্ঞায়িত প্যারামিটার অনুযায়ী স্মার্ট কন্ট্র্যাক্ট ফাংশনগুলিকে ট্রিগার করার অনুমতি দেয়। সাধারণত, এর জন্য ওরাকেল পরিষেবার সাথে টার্গেট কন্ট্র্যাক্ট “নিবন্ধন” করতে হবে, ওরাকেল অপারেটরকে অর্থ প্রদানের জন্য তহবিল সরবরাহ করতে হবে এবং কন্ট্র্যাক্ট ট্রিগার করার শর্ত বা সময় নির্দিষ্ট করতে হবে।
+কিছু ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্ক অটোমেশন পরিষেবা অফার করে, যা অফচেইন ওরাকল নোড-গুলোকে ব্যবহারকারী দ্বারা সংজ্ঞায়িত প্যারামিটার অনুযায়ী স্মার্ট কন্ট্রাক্ট ফাংশনগুলো ট্রিগার করার অনুমতি দেয়। সাধারণত, এর জন্য ওরাকল পরিষেবার সাথে টার্গেট কন্ট্রাক্ট "নিবন্ধন" করা, ওরাকল অপারেটরকে অর্থ প্রদানের জন্য ফান্ড প্রদান করা এবং কন্ট্রাক্ট ট্রিগার করার শর্ত বা সময় নির্দিষ্ট করা প্রয়োজন।
-চেইনলিঙ্কের [কিপার নেটওয়ার্ক](https://chain.link/keepers) স্মার্ট কন্ট্র্যাক্টগুলির জন্য একটি বিশ্বাসযোগ্য এবং ডিসেন্ট্রালাইজড পদ্ধতিতে নিয়মিত রক্ষণাবেক্ষণের কাজগুলি আউটসোর্স করার বিকল্প সরবরাহ করে। আপনার কন্ট্র্যাক্ট কিপার-সামঞ্জস্যপূর্ণ করার এবং আপকিপ পরিষেবা ব্যবহার করার বিষয়ে তথ্যের জন্য অফিসিয়াল [কিপারের নথিপত্র](https://docs.chain.link/docs/chainlink-keepers/introduction/) পড়ুন।
+Chainlink-এর [Keeper Network](https://chain.link/keepers) স্মার্ট কন্ট্রাক্টগুলোর জন্য একটি ট্রাস্ট মিনিমাইজড এবং ডিসেন্ট্রালাইজড পদ্ধতিতে নিয়মিত রক্ষণাবেক্ষণের কাজগুলো আউটসোর্স করার বিকল্প প্রদান করে। আপনার কন্ট্রাক্ট-কে Keeper-সামঞ্জস্যপূর্ণ করা এবং Upkeep পরিষেবা ব্যবহার করার তথ্যের জন্য অফিসিয়াল [Keeper's documentation](https://docs.chain.link/docs/chainlink-keepers/introduction/) পড়ুন।
-## কীভাবে ব্লকচেইন ওরাকেল ব্যবহার করবেন {#use-blockchain-oracles}
+## কীভাবে ব্লকচেইন ওরাকল ব্যবহার করবেন {#use-blockchain-oracles}
-আপনার Ethereum dApp-এ আপনি একাধিক ওরাকেল অ্যাপ্লিকেশন সংহত করতে পারেন:
+আপনার ইথিরিয়াম ডিএ্যাপ-এ আপনি একাধিক ওরাকল অ্যাপ্লিকেশন একীভূত করতে পারেন:
-**[Chainlink](https://chain.link/)** - _Chainlink ডিসেন্ট্রালাইজড ওরাকেল নেটওয়ার্ক যেকোনো ব্লকচেইনে উন্নত স্মার্ট কন্ট্র্যাক্ট সমর্থন করার জন্য ট্যাম্পার-প্রুফ ইনপুট, আউটপুট এবং কম্পিউটেশন সরবরাহ করে।_
+**[Chainlink](https://chain.link/)** - _Chainlink ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্কগুলো যেকোনো ব্লকচেইনে উন্নত স্মার্ট কন্ট্রাক্টগুলোকে সমর্থন করার জন্য টেম্পার-প্রুফ ইনপুট, আউটপুট এবং কম্পিউটেশন প্রদান করে।_
-**[RedStone Oracles](https://redstone.finance/)** - _RedStone একটি ডিসেন্ট্রালাইজড মডুলার ওরাকেল যা গ্যাস-অপ্টিমাইজড ডেটা ফিড সরবরাহ করে। এটি উদীয়মান সম্পদ, যেমন লিকুইড স্টেকিং টোকেন (LSTs), লিকুইড রিস্টেকিং টোকেন (LRTs), এবং বিটকয়েন স্টেকিং ডেরিভেটিভের জন্য মূল্য ফিড অফার করতে বিশেষায়িত।_
+**[RedStone Oracles](https://redstone.finance/)** - _RedStone হলো একটি ডিসেন্ট্রালাইজড মডুলার ওরাকল যা গ্যাস-অপ্টিমাইজড ডেটা ফিড প্রদান করে। এটি উদীয়মান অ্যাসেটগুলোর জন্য প্রাইস ফিড অফার করতে পারদর্শী, যেমন লিকুইড স্টেকিং টোকেন (LSTs), লিকুইড রিস্টেকিং টোকেন (LRTs), এবং বিটকয়েন স্টেকিং ডেরিভেটিভস।_
-**[Chronicle](https://chroniclelabs.org/)** - _Chronicle সত্যিকারের পরিমাপযোগ্য, খরচ-দক্ষ, ডিসেন্ট্রালাইজড এবং যাচাইযোগ্য ওরাকেল তৈরি করে অনচেইনে ডেটা স্থানান্তরের বর্তমান সীমাবদ্ধতাগুলি কাটিয়ে উঠেছে।_
+**[Chronicle](https://chroniclelabs.org/)** - _Chronicle সত্যিকারের স্কেলেবল, সাশ্রয়ী, ডিসেন্ট্রালাইজড এবং যাচাইযোগ্য ওরাকল তৈরি করে অনচেইন ডেটা স্থানান্তরের বর্তমান সীমাবদ্ধতাগুলো অতিক্রম করে।_
-**[Witnet](https://witnet.io/)** - _Witnet একটি অনুমতিহীন, ডিসেন্ট্রালাইজড এবং সেন্সরশিপ-প্রতিরোধী ওরাকেল যা স্মার্ট কন্ট্র্যাক্টগুলিকে শক্তিশালী ক্রিপ্টো-অর্থনৈতিক গ্যারান্টি সহ বাস্তব বিশ্বের ইভেন্টগুলিতে প্রতিক্রিয়া জানাতে সাহায্য করে।_
+**[Witnet](https://witnet.io/)** - _Witnet হলো একটি পারমিশনলেস, ডিসেন্ট্রালাইজড এবং সেন্সরশিপ-প্রতিরোধী ওরাকল যা স্মার্ট কন্ট্রাক্টগুলোকে শক্তিশালী ক্রিপ্টো-অর্থনৈতিক গ্যারান্টিসহ বাস্তব জগতের ইভেন্টগুলোতে প্রতিক্রিয়া জানাতে সাহায্য করে।_
-**[UMA Oracle](https://uma.xyz)** - _UMA-র অপ্টিমিস্টিক ওরাকেল স্মার্ট কন্ট্র্যাক্টগুলিকে দ্রুত এবং বিভিন্ন অ্যাপ্লিকেশনের জন্য যেকোনো ধরনের ডেটা গ্রহণ করার অনুমতি দেয়, যার মধ্যে রয়েছে বীমা, আর্থিক ডেরিভেটিভ এবং প্রেডিকশন মার্কেট।_
+**[UMA Oracle](https://uma.xyz)** - _UMA-এর অপ্টিমেস্টিক ওরাকল স্মার্ট কন্ট্রাক্টগুলোকে বীমা, আর্থিক ডেরিভেটিভস এবং প্রেডিকশন মার্কেটসহ বিভিন্ন অ্যাপ্লিকেশনের জন্য দ্রুত এবং যেকোনো ধরনের ডেটা গ্রহণ করার অনুমতি দেয়।_
-**[Tellor](https://tellor.io/)** - _Tellor হল আপনার স্মার্ট কন্ট্র্যাক্টের জন্য একটি স্বচ্ছ এবং অনুমতিহীন ওরাকেল প্রোটোকল যা প্রয়োজনে যেকোনো ডেটা সহজেই পেতে পারে।_
+**[Tellor](https://tellor.io/)** - _Tellor হলো আপনার স্মার্ট কন্ট্রাক্ট-এর জন্য একটি স্বচ্ছ এবং পারমিশনলেস ওরাকল প্রটোকল যাতে যখনই প্রয়োজন হয় সহজেই যেকোনো ডেটা পাওয়া যায়।_
-**[Band Protocol](https://bandprotocol.com/)** - _Band Protocol হল একটি ক্রস-চেইন ডেটা ওরাকেল প্ল্যাটফর্ম যা বাস্তব-বিশ্বের ডেটা এবং API গুলিকে একত্রিত করে এবং স্মার্ট কন্ট্র্যাক্টের সাথে সংযুক্ত করে।_
+**[Band Protocol](https://bandprotocol.com/)** - _Band Protocol হলো একটি ক্রস-চেইন ডেটা ওরাকল প্ল্যাটফর্ম যা বাস্তব-জগতের ডেটা এবং API-গুলোকে স্মার্ট কন্ট্রাক্ট-এর সাথে একত্রিত করে এবং সংযুক্ত করে।_
-**[Pyth Network](https://pyth.network/)** - _Pyth নেটওয়ার্ক হল একটি প্রথম-পক্ষের আর্থিক ওরাকেল নেটওয়ার্ক যা একটি ট্যাম্পার-প্রতিরোধী, ডিসেন্ট্রালাইজড এবং স্ব-টেকসই পরিবেশে অবিচ্ছিন্ন বাস্তব-বিশ্বের ডেটা অনচেইনে প্রকাশ করার জন্য ডিজাইন করা হয়েছে।_
+**[Pyth Network](https://pyth.network/)** - _Pyth নেটওয়ার্ক হলো একটি ফার্স্ট-পার্টি আর্থিক ওরাকল নেটওয়ার্ক যা একটি টেম্পার-প্রতিরোধী, ডিসেন্ট্রালাইজড এবং স্ব-টেকসই পরিবেশে অনচেইন অবিচ্ছিন্ন বাস্তব-জগতের ডেটা প্রকাশ করার জন্য ডিজাইন করা হয়েছে।_
-**[API3 DAO](https://www.api3.org/)** - _API3 DAO প্রথম-পক্ষের ওরাকেল সমাধান সরবরাহ করছে যা স্মার্ট কন্ট্র্যাক্টের জন্য একটি ডিসেন্ট্রালাইজড সমাধানে বৃহত্তর উৎস স্বচ্ছতা, নিরাপত্তা এবং পরিমাপযোগ্যতা সরবরাহ করে_
+**[API3 DAO](https://www.api3.org/)** - _API3 DAO ফার্স্ট-পার্টি ওরাকল সলিউশন সরবরাহ করছে যা স্মার্ট কন্ট্রাক্টগুলোর জন্য একটি ডিসেন্ট্রালাইজড সলিউশনে বৃহত্তর উৎস স্বচ্ছতা, নিরাপত্তা এবং স্কেলিং প্রদান করে।_
-**[Supra](https://supra.com/)** - ক্রস-চেইন সমাধানগুলির একটি উল্লম্বভাবে সমন্বিত টুলকিট যা সমস্ত ব্লকচেইন, পাবলিক (L1s এবং L2s) বা প্রাইভেট (এন্টারপ্রাইজ), আন্তঃলিঙ্ক করে, ডিসেন্ট্রালাইজড ওরাকেল মূল্য ফিড সরবরাহ করে যা অনচেইন এবং অফচেইন ব্যবহারের ক্ষেত্রে ব্যবহার করা যেতে পারে।
+**[Supra](https://supra.com/)** - ক্রস-চেইন সলিউশনগুলোর একটি উল্লম্বভাবে সমন্বিত টুলকিট যা সমস্ত ব্লকচেইন, পাবলিক (L1s এবং L2s) বা প্রাইভেট (এন্টারপ্রাইজ)-কে আন্তঃসংযোগ করে, ডিসেন্ট্রালাইজড ওরাকল প্রাইস ফিড প্রদান করে যা অনচেইন এবং অফচেইন ব্যবহার-ক্ষেত্রগুলোর জন্য ব্যবহার করা যেতে পারে।
-**[Gas Network](https://gas.network/)** - ব্লকচেইন জুড়ে রিয়েল-টাইম গ্যাস মূল্যের ডেটা সরবরাহকারী একটি বিতরণ করা ওরাকেল প্ল্যাটফর্ম। অনচেইনে নেতৃস্থানীয় গ্যাস মূল্য ডেটা প্রদানকারীদের থেকে ডেটা আনার মাধ্যমে, Gas Network আন্তঃকার্যক্ষমতা চালনা করতে সাহায্য করছে। Gas Network 35টিরও বেশি চেইনের জন্য ডেটা সমর্থন করে, যার মধ্যে Ethereum Mainnet এবং অনেক নেতৃস্থানীয় L2s রয়েছে।
+**[Gas Network](https://gas.network/)** - একটি ডিস্ট্রিবিউটেড ওরাকল প্ল্যাটফর্ম যা ব্লকচেইন জুড়ে রিয়েল-টাইম গ্যাস প্রাইস ডেটা প্রদান করে। শীর্ষস্থানীয় গ্যাস প্রাইস ডেটা প্রদানকারীদের থেকে ডেটা অনচেইন এনে, Gas Network ইন্টারঅপারেবিলিটি চালাতে সাহায্য করছে। Gas Network ইথিরিয়াম মেইননেট এবং অনেক শীর্ষস্থানীয় L2s সহ 35 টিরও বেশি চেইনের জন্য ডেটা সমর্থন করে।
-## আরও পড়ুন {#further-reading}
+**[DIA](https://www.diadata.org/)** - একটি ক্রস-চেইন ওরাকল নেটওয়ার্ক যা সমস্ত প্রধান অ্যাসেট ক্লাস জুড়ে 20,000+ অ্যাসেটের জন্য যাচাইযোগ্য ডেটা ফিড সরবরাহ করে। DIA সরাসরি 100+ প্রাথমিক বাজার থেকে কাঁচা ট্রেড ডেটা সংগ্রহ করে এবং এটি অনচেইন গণনা করে, যেকোনো ব্যবহার ক্ষেত্রের জন্য কাস্টম কনফিগারেশনের সাথে সম্পূর্ণ ডেটা স্বচ্ছতা এবং যাচাইযোগ্যতা নিশ্চিত করে।
-**প্রবন্ধ**
+**[Stork](https://stork.network)** - Stork অতি-নিম্ন লেটেন্সিতে প্রাইস ডেটা সরবরাহ করে, পারপেচুয়াল মার্কেট, লেন্ডিং প্রটোকল এবং DeFi ইকোসিস্টেমসহ বিস্তৃত ব্যবহার-ক্ষেত্রগুলোকে সমর্থন করে, তালিকাভুক্তির সাথে সাথে নতুন অ্যাসেটগুলো দ্রুত সমর্থিত হয়।
-- [একটি ব্লকচেইন ওরাকেল কী?](https://chain.link/education/blockchain-oracles) — _Chainlink_
-- [একটি ব্লকচেইন ওরাকেল কী?](https://medium.com/better-programming/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_
-- [ডিসেন্ট্রালাইজড ওরাকেলস: একটি ব্যাপক সংক্ষিপ্ত বিবরণ](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_
-- [Ethereum-এ একটি ব্লকচেইন ওরাকেল বাস্তবায়ন](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_
-- [স্মার্ট কন্ট্র্যাক্টগুলি কেন API কল করতে পারে না?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_
-- [তাহলে আপনি একটি প্রাইস ওরাকেল ব্যবহার করতে চান](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_
+## আরও পড়ুন {#further-reading}
+
+**নিবন্ধ**
+
+- [What Is a Blockchain Oracle?](https://chain.link/education/blockchain-oracles) — _Chainlink_
+- [What is a Blockchain Oracle?](https://medium.com/better-programming/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_
+- [Decentralised Oracles: a comprehensive overview](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_
+- [Implementing a Blockchain Oracle on Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_
+- [Why can't smart contracts make API calls?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_
+- [So you want to use a price oracle](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_
**ভিডিও**
-- [ওরাকেলস এবং ব্লকচেইন ইউটিলিটির সম্প্রসারণ](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_
+- [Oracles and the Expansion of Blockchain Utility](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_
-**টিউটোরিয়াল**
+**টিউটোরিয়াল**
-- [Solidity-তে Ethereum-এর বর্তমান মূল্য কীভাবে আনবেন](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_
-- [ওরাকেল ডেটা ব্যবহার করা](https://docs.chroniclelabs.org/Developers/tutorials/Remix) — _Chronicle_
+- [How to Fetch the Current Price of Ethereum in Solidity](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_
+- [Consuming Oracle Data](https://docs.chroniclelabs.org/Developers/tutorials/Remix) — _Chronicle_
-**দৃষ্টান্তমূলক প্রকল্প**
+**উদাহরণ প্রজেক্ট**
-- [Solidity-তে Ethereum-এর জন্য সম্পূর্ণ চেইনলিঙ্ক স্টার্টার প্রজেক্ট](https://github.com/hackbg/chainlink-fullstack) — _HackBG_
+- [Full Chainlink starter project for Ethereum in Solidity](https://github.com/hackbg/chainlink-fullstack) — _HackBG_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/dart/index.md b/public/content/translations/bn/developers/docs/programming-languages/dart/index.md
index 86aeb16860d..4ef04a87c58 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/dart/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/dart/index.md
@@ -1,32 +1,30 @@
---
-title: "ডার্ট ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "ডার্ট ভাষা ব্যবহার করে ইথেরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন"
+title: ডার্ট ডেভেলপারদের জন্য ইথিরিয়াম
+description: ডার্ট ভাষা ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
lang: bn
incomplete: true
---
-## স্মার্ট কন্ট্র্যাক্ট এবং Solidity ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
+## স্মার্ট কন্ট্রাক্ট এবং সলিডিটি (Solidity) ভাষার সাথে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
## টিউটোরিয়াল {#tutorials}
-- [ফ্লাটার এবং ব্লকচেইন – হ্যালো ওয়ার্ল্ড ডিএ্যাপ](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/) আপনাকে শুরু করার জন্য সমস্ত ধাপের মধ্যে দিয়ে নিয়ে যায়:
- 1. [Solidity](https://soliditylang.org/)-তে একটি স্মার্ট কন্ট্র্যাক্ট লেখা
- 2. ডার্টে একটি ইউজার ইন্টারফেস লেখা
-- [ফ্লাটার দিয়ে একটি মোবাইল ডিএ্যাপ তৈরি করা](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) অনেক ছোট, যা ভালো হতে পারে
- যদি আপনি ইতিমধ্যেই মূল বিষয়গুলো জেনে থাকেন
-- আপনি যদি একটি ভিডিও দেখে শিখতে পছন্দ করেন, তাহলে আপনি [আপনার প্রথম ব্লকচেইন ফ্লাটার অ্যাপ তৈরি করুন](https://www.youtube.com/watch?v=3Eeh3pJ6PeA) দেখতে পারেন, যা প্রায় এক ঘন্টা দীর্ঘ
-- আপনি যদি অধৈর্য হন, তাহলে আপনি [ফ্লাটার এবং ডার্ট দিয়ে ইথেরিয়ামে একটি ব্লকচেইন ডিসেন্ট্রালাইজড-অ্যাপ তৈরি করা](https://www.youtube.com/watch?v=jaMFEOCq_1s) পছন্দ করতে পারেন, যা মাত্র প্রায় বিশ মিনিটের
-- [WalletConnect দ্বারা Web3Modal এর সাথে ফ্লাটার অ্যাপ্লিকেশনে MetaMask সংহত করা](https://www.youtube.com/watch?v=v_M2buHCpc4) - এই ছোট ভিডিওটি আপনাকে WalletConnect এর [Web3Modal](https://pub.dev/packages/web3modal_flutter) লাইব্রেরি দিয়ে আপনার ফ্লাটার অ্যাপ্লিকেশনগুলিতে MetaMask সংহত করার ধাপগুলির মধ্যে দিয়ে নিয়ে যায়
-- [সলিডিটি এবং ফ্লাটার সহ মোবাইল ব্লকচেইন ডেভেলপার বুটক্যাম্প কোর্স](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - ফুল স্ট্যাক মোবাইল ব্লকচেইন ডেভেলপার কোর্স প্লেলিস্ট
+- [ফ্লাটার এবং ব্লকচেইন – হ্যালো ওয়ার্ল্ড ডিএ্যাপ (Flutter and Blockchain – Hello World Dapp)](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/) আপনাকে শুরু করার জন্য সমস্ত ধাপের মধ্য দিয়ে নিয়ে যায়:
+ 1. [Solidity](https://soliditylang.org/)-তে একটি স্মার্ট কন্ট্রাক্ট লেখা
+ 2. ডার্ট (Dart)-এ একটি ইউজার ইন্টারফেস লেখা
+- [ফ্লাটার দিয়ে একটি মোবাইল ডিএ্যাপ তৈরি করা (Building a Mobile dapp with Flutter)](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) অনেক ছোট, যা আপনার জন্য ভালো হতে পারে যদি আপনি ইতিমধ্যে বেসিক বিষয়গুলো জানেন
+- আপনি যদি ভিডিও দেখে শিখতে পছন্দ করেন, তবে আপনি [আপনার প্রথম ব্লকচেইন ফ্লাটার অ্যাপ তৈরি করুন (Build Your First Blockchain Flutter App)](https://www.youtube.com/watch?v=3Eeh3pJ6PeA) দেখতে পারেন, যা প্রায় এক ঘণ্টা দীর্ঘ
+- আপনি যদি অধৈর্য হন, তবে আপনি [ইথিরিয়ামে ফ্লাটার এবং ডার্ট দিয়ে একটি ব্লকচেইন ডিসেন্ট্রালাইজড এপ্লিকেশন তৈরি করা (Building a Blockchain Decentralized-app with Flutter and Dart on Ethereum)](https://www.youtube.com/watch?v=jaMFEOCq_1s) পছন্দ করতে পারেন, যা মাত্র বিশ মিনিটের মতো
+- [WalletConnect-এর Web3Modal দিয়ে ফ্লাটার অ্যাপ্লিকেশনে MetaMask ইন্টিগ্রেট করা (Integrating MetaMask in Flutter application with Web3Modal by WalletConnect)](https://www.youtube.com/watch?v=v_M2buHCpc4) - এই ছোট ভিডিওটি আপনাকে WalletConnect-এর [Web3Modal](https://pub.dev/packages/web3modal_flutter) লাইব্রেরি দিয়ে আপনার ফ্লাটার অ্যাপ্লিকেশনগুলোতে MetaMask ইন্টিগ্রেট করার ধাপগুলোর মধ্য দিয়ে নিয়ে যায়
+- [সলিডিটি এবং ফ্লাটার সহ মোবাইল ব্লকচেইন ডেভেলপার বুটক্যাম্প কোর্স (Mobile Blockchain Developer Bootcamp Course With Solidity & Flutter)](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - ফুল স্ট্যাক মোবাইল ব্লকচেইন ডেভেলপার কোর্সের প্লেলিস্ট
-## ইথেরিয়াম ক্লায়েন্টদের সাথে কাজ করা {#working-with-ethereum-clients}
+## ইথিরিয়াম ক্লায়েন্ট নিয়ে কাজ করা {#working-with-ethereum-clients}
-আপনি ইথেরিয়াম ব্যবহার করে ডিসেন্ট্রালাইজড এপ্লিকেশনস (বা "ডিএ্যাপস") তৈরি করতে পারেন যা ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলি ব্যবহার করে।
-ডার্টের জন্য অন্তত দুটি বর্তমানে রক্ষণাবেক্ষণ করা লাইব্রেরি রয়েছে যা ইথেরিয়ামের
-[JSON-RPC API](/developers/docs/apis/json-rpc/) ব্যবহার করে।
+আপনি ইথিরিয়াম ব্যবহার করে ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে পারেন যা ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো কাজে লাগায়।
+ইথিরিয়ামের জন্য [JSON-RPC API](/developers/docs/apis/json-rpc/) ব্যবহার করতে ডার্টের জন্য বর্তমানে রক্ষণাবেক্ষণ করা অন্তত দুটি লাইব্রেরি রয়েছে।
1. [pwa.ir থেকে Web3dart](https://pub.dev/packages/web3dart)
-2. [darticulate.com থেকে ইথেরিয়াম 5.0.0](https://pub.dev/packages/ethereum)
+1. [darticulate.com থেকে Ethereum 5.0.0](https://pub.dev/packages/ethereum)
-এছাড়াও অতিরিক্ত লাইব্রেরি রয়েছে যা আপনাকে নির্দিষ্ট ইথেরিয়াম অ্যাড্রেসগুলি পরিচালনা করতে, অথবা আপনাকে বিভিন্ন ক্রিপ্টোকারেন্সির মূল্য পুনরুদ্ধার করতে দেয়।
-[আপনি এখানে সম্পূর্ণ তালিকাটি দেখতে পারেন](https://pub.dev/dart/packages?q=ethereum)।
+এছাড়াও অতিরিক্ত লাইব্রেরি রয়েছে যা আপনাকে নির্দিষ্ট ইথিরিয়াম এডড্রেস ম্যানিপুলেট করতে দেয়, বা যা আপনাকে বিভিন্ন ক্রিপটোকারেন্সি-এর দাম পুনরুদ্ধার করতে দেয়।
+[আপনি এখানে সম্পূর্ণ তালিকা দেখতে পারেন](https://pub.dev/dart/packages?q=ethereum)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/delphi/index.md b/public/content/translations/bn/developers/docs/programming-languages/delphi/index.md
index c59d86259e8..60e12674b56 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/delphi/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/delphi/index.md
@@ -1,56 +1,56 @@
---
-title: "ডেলফি ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "ডেলফি প্রোগ্রামিং ভাষা ব্যবহার করে কীভাবে ইথেরিয়ামের জন্য ডেভেলপ করতে হয় তা শিখুন"
+title: ডেলফি ডেভেলপারদের জন্য ইথিরিয়াম
+description: ডেলফি প্রোগ্রামিং ভাষা ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
lang: bn
incomplete: true
---
-ডেলফি প্রোগ্রামিং ভাষা ব্যবহার করে কীভাবে ইথেরিয়ামের জন্য ডেভেলপ করতে হয় তা শিখুন
+ডেলফি প্রোগ্রামিং ভাষা ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
-ইথেরিয়াম ব্যবহার করে বিকেন্দ্রীভূত অ্যাপ্লিকেশন (বা "ড্যাপস") তৈরি করুন যেগুলো ক্রিপ্টোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলোকে কাজে লাগায়।. এই ড্যাপগুলো বিশ্বাসযোগ্য হতে পারে, অর্থাৎ এগুলোকে একবার ইথেরিয়ামে প্রয়োগ করা হয়ে গেলে, এগুলো সবসময় প্রোগ্রামড হিসেবে চলতে থাকবে।. নতুন ধরণের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদকে নিয়ন্ত্রণ করতে পারে।. এগুলো বিকেন্দ্রীভূত হতে পারে, যার মানে কোন একক সত্ত্বা বা ব্যক্তি এগুলো নিয়ন্ত্রণ করেনা এবং এগুলো সেন্সর করা প্রায় অসম্ভব।.
+ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো কাজে লাগায় এমন ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো বিশ্বস্ত হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডিপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম করা অনুযায়ী চলবে। নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে। এগুলো ডিসেন্ট্রালাইজড হতে পারে, যার মানে হলো কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব।
-ডেলফি প্রোগ্রামিং ভাষা ব্যবহার করে ইথেরিয়ামের উপরে ডিসেন্ট্রালাইজড এপ্লিকেশন তৈরি করুন এবং স্মার্ট কন্ট্র্যাক্টগুলির সাথে ইন্টারঅ্যাক্ট করুন!
+ইথিরিয়ামের উপর ডিসেন্ট্রালাইজড এপ্লিকেশন তৈরি করুন এবং ডেলফি প্রোগ্রামিং ভাষা ব্যবহার করে স্মার্ট কন্ট্রাক্ট এর সাথে ইন্টারঅ্যাক্ট করুন!
-## স্মার্ট কন্ট্র্যাক্ট এবং সলিডিটি ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-the-solidity-language}
+## স্মার্ট কন্ট্রাক্ট এবং Solidity ভাষার সাথে শুরু করা {#getting-started-with-smart-contracts-and-the-solidity-language}
-**ডেলফির সাথে ইথেরিয়ামকে একীভূত করার জন্য আপনার প্রথম পদক্ষেপ নিন**
+**ইথিরিয়ামের সাথে ডেলফি ইন্টিগ্রেট করার জন্য আপনার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক নির্দেশিকা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [ব্লকচেইন ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-## নতুনদের জন্য রেফারেন্স এবং লিঙ্ক {#beginner-references-and-links}
+## নতুনদের জন্য রেফারেন্স এবং লিংক {#beginner-references-and-links}
-**ডেলফেরাম লাইব্রেরির পরিচিতি**
+**Delphereum লাইব্রেরির পরিচিতি**
-- [ডেলফেরাম কী?](https://github.com/svanas/delphereum/blob/master/README.md)
-- [একটি স্থানীয় (ইন-মেমরি) ব্লকচেইনের সাথে ডেলফিকে সংযুক্ত করা](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0)
-- [ইথেরিয়াম মেইননেটের সাথে ডেলফিকে সংযুক্ত করা](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83)
-- [স্মার্ট কন্ট্র্যাক্টগুলির সাথে ডেলফিকে সংযুক্ত করা](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1)
+- [Delphereum কী?](https://github.com/svanas/delphereum/blob/master/README.md)
+- [একটি লোকাল (ইন-মেমরি) ব্লকচেইন এর সাথে ডেলফি কানেক্ট করা](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0)
+- [ইথিরিয়াম মেইননেট এর সাথে ডেলফি কানেক্ট করা](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83)
+- [স্মার্ট কন্ট্রাক্ট এর সাথে ডেলফি কানেক্ট করা](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1)
-**এখন সেটআপ বাদ দিয়ে সরাসরি কিছু নমুনা দেখতে চান?**
+**আপাতত সেটআপ বাদ দিয়ে সরাসরি স্যাম্পলে যেতে চান?**
-- [একটি 3-মিনিটের স্মার্ট কন্ট্র্যাক্ট এবং ডেলফি - পর্ব 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d)
-- [একটি 3-মিনিটের স্মার্ট কন্ট্র্যাক্ট এবং ডেলফি - পর্ব 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b)
+- [৩-মিনিটের স্মার্ট কন্ট্রাক্ট এবং ডেলফি - পর্ব 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d)
+- [৩-মিনিটের স্মার্ট কন্ট্রাক্ট এবং ডেলফি - পর্ব 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b)
-## মধ্যবর্তী স্তরের নিবন্ধ {#intermediate-articles}
+## ইন্টারমিডিয়েট আর্টিকেল {#intermediate-articles}
-- [ডেলফিতে একটি ইথেরিয়াম-স্বাক্ষরিত মেসেজ সিগনেচার তৈরি করা](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b)
-- [ডেলফির সাথে ইথার স্থানান্তর করা](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4)
-- [ডেলফির সাথে ERC-20 টোকেন স্থানান্তর করা](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d)
+- [ডেলফিতে একটি ইথিরিয়াম-স্বাক্ষরিত মেসেজ সিগনেচার তৈরি করা](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b)
+- [ডেলফির মাধ্যমে ইথার ট্রান্সফার করা](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4)
+- [ডেলফির মাধ্যমে ERC-20 টোকেন ট্রান্সফার করা](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d)
-## উন্নত ব্যবহারের প্যাটার্ন {#advanced-use-patterns}
+## অ্যাডভান্সড ব্যবহারের ধরন {#advanced-use-patterns}
-- [ডেলফি এবং ইথেরিয়াম নেম সার্ভিস (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7)
-- [কুইকনোড, ইথেরিয়াম এবং ডেলফি](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23)
-- [ডেলফি এবং ইথেরিয়াম ডার্ক ফরেস্ট](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93)
-- [ডেলফিতে একটি টোকেনের বিনিময়ে অন্য টোকেন সোয়াপ করা](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7)
+- [ডেলফি এবং ইথিরিয়াম নেম সার্ভিস (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7)
+- [QuikNode, ইথিরিয়াম এবং ডেলফি](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23)
+- [ডেলফি এবং ইথিরিয়াম ডার্ক ফরেস্ট](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93)
+- [ডেলফিতে একটি টোকেন এর বদলে অন্যটি সোয়াপ করা](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7)
-আরও সংস্থান খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন।
+আরও রিসোর্স খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/bn/developers/docs/programming-languages/dot-net/index.md
index 30a7ffbf4de..2ee112c00b8 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/dot-net/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/dot-net/index.md
@@ -1,86 +1,86 @@
---
-title: "ডটনেট ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "শিখুন কীভাবে ডটনেটভিত্তিক প্রজেক্ট ও টুলিঙ ব্যবহার করে ইথেরিয়ামের জন্য ডেভেলপ করা যায়"
+title: .NET ডেভেলপারদের জন্য ইথিরিয়াম
+description: .NET-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
lang: bn
incomplete: true
---
-.NET-ভিত্তিক প্রজেক্ট ও টুলিং ব্যবহার করে কীভাবে ইথেরিয়ামের জন্য ডেভেলপ করা যায় তা শিখুন
+.NET-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
-ইথেরিয়াম ব্যবহার করে বিকেন্দ্রীভূত অ্যাপ্লিকেশন (বা "ড্যাপস") তৈরি করুন যেগুলো ক্রিপ্টোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলোকে কাজে লাগায়।. এই ড্যাপগুলো বিশ্বাসযোগ্য হতে পারে, অর্থাৎ এগুলোকে একবার ইথেরিয়ামে প্রয়োগ করা হয়ে গেলে, এগুলো সবসময় প্রোগ্রামড হিসেবে চলতে থাকবে।. নতুন ধরণের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদকে নিয়ন্ত্রণ করতে পারে।. এগুলো বিকেন্দ্রীভূত হতে পারে, যার মানে কোন একক সত্ত্বা বা ব্যক্তি এগুলো নিয়ন্ত্রণ করেনা এবং এগুলো সেন্সর করা প্রায় অসম্ভব।.
+ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো কাজে লাগিয়ে ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো বিশ্বস্ত হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডেপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম অনুযায়ী চলবে। নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে। এগুলো ডিসেন্ট্রালাইজড হতে পারে, যার মানে হলো কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব।
-মাইক্রোসফট প্রযুক্তি স্ট্যাকের বিভিন্ন টুলস ও ল্যাঙ্গুয়েজ ব্যবহার করে ইথেরিয়ামে বিকেন্দ্রীভূত অ্যাপ্লিকেশন তৈরি করুন এবং স্মার্ট কন্ট্র্যাক্টগুলোর সাথে ইন্টারেক্ট করুন - C#, # ভিজুয়াল ব্যাসিক .NET, F#-কে সমর্থন করে, .NET ফ্রেমওয়ার্ক/.NET Core/.NET স্ট্যান্ডার্ড জুড়ে VSCode ও ভিজুয়াল স্টুডিওর মতো টুলিং-এ।. মাইক্রোসফট অ্যাজিওর ব্লকচেইন ব্যবহার করে কয়েক মিনিটের মধ্যে অ্যাজিওর-এ একটি ইথেরিয়াম ব্লকচেইন ডেপ্লয় করুন।. .NET এর প্রতি ভালবাসাকে ইথেরিয়ামে নিয়ে আসুন!
+ইথিরিয়ামের উপর ডিসেন্ট্রালাইজড এপ্লিকেশন তৈরি করুন এবং মাইক্রোসফট টেকনোলজি স্ট্যাকের টুল এবং ভাষা ব্যবহার করে স্মার্ট কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করুন - .NET Framework/.NET Core/.NET Standard জুড়ে VSCode এবং Visual Studio-এর মতো টুলিংয়ে C#, # Visual Basic .NET, F# সমর্থন করে। মাইক্রোসফট অ্যাজিউর ব্লকচেইন (Microsoft Azure Blockchain) ব্যবহার করে কয়েক মিনিটের মধ্যে অ্যাজিউরে (Azure) একটি ইথিরিয়াম ব্লকচেইন ডেপ্লয় করুন। .NET-এর প্রতি ভালোবাসাকে ইথিরিয়ামে নিয়ে আসুন!
-## স্মার্ট কন্ট্র্যাক্ট এবং সলিডিটি ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-the-solidity-language}
+## স্মার্ট কন্ট্রাক্ট এবং সলিডিটি (Solidity) ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-the-solidity-language}
-**ডটনেটের সাথে ইথেরিয়ামকে যুক্ত করার প্রথম পদক্ষেপ নিন**
+**.NET-কে ইথিরিয়ামের সাথে ইন্টিগ্রেট করার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক ধারণা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [ব্লকচেইন ব্যাখ্যা (Blockchain Explained)](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা (Understanding Smart Contracts)](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লেখা (Write your First Smart Contract)](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে সলিডিটি কম্পাইল এবং ডেপ্লয় করতে হয় তা শিখুন (Learn How to Compile and Deploy Solidity)](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-## নতুনদের জন্য রেফারেন্স এবং লিঙ্ক {#beginner-references-and-links}
+## নতুনদের জন্য রেফারেন্স এবং লিংক {#beginner-references-and-links}
-**Nethereum লাইব্রেরি এবং VS কোড সলিডিটির পরিচিতি**
+**Nethereum লাইব্রেরি এবং VS Code Solidity-এর পরিচিতি**
-- [Nethereum, শুরু করা](https://docs.nethereum.com/en/latest/getting-started/)
-- [VS কোড সলিডিটি ইনস্টল করা](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity)
-- [ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট তৈরি এবং কল করার জন্য একজন .NET ডেভেলপারের ওয়ার্কফ্লো](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
-- [Nethereum-এর সাথে স্মার্ট কন্ট্র্যাক্টের ইন্টিগ্রেশন](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm)
-- [Nethereum-এর সাথে .NET এবং ইথেরিয়াম ব্লকচেইন স্মার্ট কন্ট্র্যাক্ট ইন্টারফেস করা](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), এছাড়াও [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)
+- [Nethereum, শুরু করা (Getting Started)](https://docs.nethereum.com/en/latest/getting-started/)
+- [VS Code Solidity ইনস্টল করা](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity)
+- [ইথিরিয়াম স্মার্ট কন্ট্রাক্ট তৈরি এবং কল করার জন্য একজন .NET ডেভেলপারের ওয়ার্কফ্লো](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
+- [Nethereum-এর সাথে স্মার্ট কন্ট্রাক্ট ইন্টিগ্রেশন](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm)
+- [Nethereum-এর সাথে .NET এবং ইথিরিয়াম ব্লকচেইন স্মার্ট কন্ট্রাক্ট ইন্টারফেসিং](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), এছাড়াও [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)-এ উপলব্ধ
- [Nethereum - ব্লকচেইনের জন্য একটি ওপেন সোর্স .NET ইন্টিগ্রেশন লাইব্রেরি](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/)
-- [Nethereum ব্যবহার করে SQL ডেটাবেসে ইথেরিয়াম ট্রানজ্যাকশন লেখা](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36)
-- [C# এবং VisualStudio ব্যবহার করে কীভাবে সহজে ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট ডেপ্লয় করা যায় তা দেখুন](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
+- [Nethereum ব্যবহার করে SQL ডাটাবেসে ইথিরিয়াম লেনদেন লেখা](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36)
+- [C# এবং VisualStudio ব্যবহার করে কীভাবে সহজে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট ডেপ্লয় করা যায় তা দেখুন](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
-**এখন সেটআপ বাদ দিয়ে সরাসরি কিছু নমুনা দেখতে চান?**
+**আপাতত সেটআপ এড়িয়ে সরাসরি স্যাম্পলে যেতে চান?**
-- [প্লেগ্রাউন্ড](http://playground.nethereum.com/) - ইথেরিয়ামের সাথে ইন্টারঅ্যাক্ট করুন এবং ব্রাউজারের মাধ্যমে কীভাবে Nethereum ব্যবহার করতে হয় তা শিখুন।
- - অ্যাকাউন্ট ব্যালেন্স কোয়েরি করুন [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
- - ERC20 স্মার্ট কন্ট্র্যাক্ট ব্যালেন্স কোয়েরি করুন [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
- - একটি অ্যাকাউন্টে ইথার ট্রান্সফার করুন [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
- - ... এবং আরো!
+- [Playground](http://playground.nethereum.com/) - ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করুন এবং ব্রাউজারের মাধ্যমে কীভাবে Nethereum ব্যবহার করতে হয় তা শিখুন।
+ - একাউন্ট ব্যালেন্স কোয়েরি করুন [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
+ - ERC20 স্মার্ট কন্ট্রাক্ট ব্যালেন্স কোয়েরি করুন [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
+ - একটি একাউন্টে ইথার ট্রান্সফার করুন [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
+ - ... এবং আরও অনেক কিছু!
-## মধ্যবর্তী স্তরের নিবন্ধ {#intermediate-articles}
+## ইন্টারমিডিয়েট আর্টিকেল {#intermediate-articles}
-- [Nethereum ওয়ার্কবুক/নমুনা লিস্ট](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/)
+- [Nethereum ওয়ার্কবুক/স্যাম্পল লিস্ট](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/)
- [আপনার নিজস্ব ডেভেলপমেন্ট টেস্টচেইন ডেপ্লয় করুন](https://github.com/Nethereum/Testchains)
-- [সলিডিটির জন্য VSCode কোডজেন প্লাগইন](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/)
-- [ইউনিটি এবং ইথেরিয়াম: কেন এবং কীভাবে](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how)
-- [ইথেরিয়াম ডিএ্যাপস-এর জন্য ASP.NET Core ওয়েব API তৈরি করুন](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/)
-- [একটি সাপ্লাই চেইন ট্র্যাকিং সিস্টেম বাস্তবায়নের জন্য Nethereum Web3 ব্যবহার করা](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4)
-- [Nethereum ব্লক প্রসেসিং](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/), সাথে [C# প্লেগ্রাউন্ড নমুনা](http://playground.nethereum.com/csharp/id/1025)
-- [Nethereum ওয়েবসকেট স্ট্রিমিং](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/)
+- [সলিডিটির জন্য VSCode Codegen প্লাগইন](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/)
+- [Unity এবং ইথিরিয়াম: কেন এবং কীভাবে](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how)
+- [ইথিরিয়াম ডিএ্যাপস-এর জন্য ASP.NET Core Web API তৈরি করুন](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/)
+- [সাপ্লাই চেইন ট্র্যাকিং সিস্টেম বাস্তবায়নের জন্য Nethereum Web3 ব্যবহার করা](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4)
+- [Nethereum ব্লক প্রসেসিং](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/), সাথে [C# Playground স্যাম্পল](http://playground.nethereum.com/csharp/id/1025)
+- [Nethereum Websocket স্ট্রিমিং](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/)
- [Kaleido এবং Nethereum](https://kaleido.io/kaleido-and-nethereum/)
- [Quorum এবং Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md)
-## উন্নত ব্যবহারের প্যাটার্ন {#advanced-use-patterns}
+## অ্যাডভান্সড ব্যবহারের ধরন {#advanced-use-patterns}
- [Azure Key Vault এবং Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum)
- [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid)
- [Ujo Nethereum ব্যাকএন্ড রেফারেন্স আর্কিটেকচার](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/)
-## .NET প্রজেক্ট, টুলস এবং অন্যান্য মজার জিনিস {#dot-net-projects-tools-and-other-fun-stuff}
+## .NET প্রজেক্ট, টুল এবং অন্যান্য মজার বিষয় {#dot-net-projects-tools-and-other-fun-stuff}
-- [Nethereum প্লেগ্রাউন্ড](http://playground.nethereum.com/) - _ব্রাউজারে Nethereum কোড স্নিপেট কম্পাইল, তৈরি এবং রান করুন_
-- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Blazor-এ UI সহ Nethereum কোডজেন_
-- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _একটি .NET Wasm SPA লাইট ব্লকচেইন এক্সপ্লোরার এবং একটি সাধারণ ওয়ালেট_
-- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) - _একটি বিজনেস রুলস ইঞ্জিন (.NET প্ল্যাটফর্ম এবং ইথেরিয়াম প্ল্যাটফর্ম উভয়ের জন্য) যা অন্তর্নিহিতভাবে মেটাডেটা-চালিত_
-- [Nethermind](https://github.com/NethermindEth/nethermind) - _Linux, Windows, MacOS-এর জন্য একটি .NET কোর ইথেরিয়াম ক্লায়েন্ট_
-- [eth-utils](https://github.com/ethereum/eth-utils/) - _Ethereum সম্পর্কিত কোডবেসের সাথে কাজ করার জন্য ইউটিলিটি ফাংশন_
-- [TestChains](https://github.com/Nethereum/TestChains) - _দ্রুত প্রতিক্রিয়ার জন্য আগে থেকে কনফিগার করা .NET ডেভচেইনস (PoA)_
+- [Nethereum Playground](http://playground.nethereum.com/) - _ব্রাউজারে Nethereum কোড স্নিপেট কম্পাইল, তৈরি এবং রান করুন_
+- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Blazor-এ UI সহ Nethereum codegen_
+- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _একটি .NET Wasm SPA লাইট ব্লকচেইন এক্সপ্লোরার এবং সাধারণ ওয়ালেট_
+- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) - _একটি বিজনেস রুলস ইঞ্জিন (.NET প্ল্যাটফর্ম এবং ইথিরিয়াম প্ল্যাটফর্ম উভয়ের জন্য) যা মূলত মেটাডাটা-চালিত_
+- [Nethermind](https://github.com/NethermindEth/nethermind) - _Linux, Windows, MacOS-এর জন্য একটি .NET Core ইথিরিয়াম ক্লায়েন্ট_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _ইথিরিয়াম সম্পর্কিত কোডবেস নিয়ে কাজ করার জন্য ইউটিলিটি ফাংশন_
+- [TestChains](https://github.com/Nethereum/TestChains) - _দ্রুত রেসপন্সের জন্য প্রি-কনফিগার করা .NET ডেভচেইন (PoA)_
-আরও সংস্থান খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন।
+আরও রিসোর্স খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন।
## .NET কমিউনিটি কন্ট্রিবিউটর {#dot-net-community-contributors}
-Nethereum-এ আমরা বেশিরভাগ সময় [Gitter](https://gitter.im/Nethereum/Nethereum)-এ কাটাই, যেখানে সবাই প্রশ্ন জিজ্ঞাসা করতে/উত্তর দিতে, সাহায্য নিতে, বা শুধু আড্ডা দিতে পারেন। নির্দ্বিধায় [Nethereum GitHub রিপোজিটরি](https://github.com/Nethereum)-তে একটি PR করুন বা একটি ইস্যু খুলুন, অথবা আমাদের অনেক সাইড/নমুনা প্রজেক্ট ব্রাউজ করুন। আমাদেরকে [Discord](https://discord.gg/jQPrR58FxX)-এও পাবেন!
+Nethereum-এ, আমরা বেশিরভাগ সময় [Gitter](https://gitter.im/Nethereum/Nethereum)-এ আড্ডা দিই যেখানে যে কেউ প্রশ্ন করতে/উত্তর দিতে, সাহায্য পেতে বা শুধু সময় কাটাতে আসতে পারেন। নির্দ্বিধায় একটি PR করুন বা [Nethereum GitHub রিপোজিটরিতে](https://github.com/Nethereum) একটি ইস্যু খুলুন, অথবা আমাদের অনেক সাইড/স্যাম্পল প্রজেক্টগুলো ব্রাউজ করুন। আপনি আমাদের [Discord](https://discord.gg/jQPrR58FxX)-এও খুঁজে পেতে পারেন!
-আপনি যদি Nethermind-এ নতুন হন এবং শুরু করার জন্য সাহায্যের প্রয়োজন হয়, তাহলে আমাদের [Discord](http://discord.gg/PaCMRFdvWT)-এ যোগ দিন। আপনার প্রশ্নের উত্তর দেওয়ার জন্য আমাদের ডেভেলপাররা প্রস্তুত আছেন। [Nethermind GitHub রিপোজিটরি](https://github.com/NethermindEth/nethermind)-তে একটি PR খুলতে বা কোনো ইস্যু জানাতে দ্বিধা করবেন না।
+আপনি যদি Nethermind-এ নতুন হয়ে থাকেন এবং শুরু করার জন্য সাহায্যের প্রয়োজন হয়, তাহলে আমাদের [Discord](http://discord.gg/PaCMRFdvWT)-এ যোগ দিন। আপনার প্রশ্নের উত্তর দেওয়ার জন্য আমাদের ডেভেলপাররা প্রস্তুত আছেন। [Nethermind GitHub রিপোজিটরিতে](https://github.com/NethermindEth/nethermind) একটি PR খুলতে বা কোনো ইস্যু উত্থাপন করতে দ্বিধা করবেন না।
-## অন্যান্য একত্রিত তালিকা {#other-aggregated-lists}
+## অন্যান্য অ্যাগ্রিগেটেড লিস্ট {#other-aggregated-lists}
-[অফিসিয়াল Nethereum সাইট](https://nethereum.com/)
-[অফিসিয়াল Nethermind সাইট](https://nethermind.io/)
+[অফিসিয়াল Nethereum সাইট](https://nethereum.com/)
+[অফিসিয়াল Nethermind সাইট](https://nethermind.io/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/elixir/index.md b/public/content/translations/bn/developers/docs/programming-languages/elixir/index.md
index 41724e01cec..8d98a7716f8 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/elixir/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/elixir/index.md
@@ -1,55 +1,55 @@
---
-title: "এলিক্সির ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "এলিক্সির-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে কীভাবে ইথেরিয়ামের জন্য ডেভেলপ করা যায় তা জানুন।"
+title: এলিক্সির (Elixir) ডেভেলপারদের জন্য ইথিরিয়াম
+description: এলিক্সির-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন।
lang: bn
incomplete: false
---
-এলিক্সির-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে কীভাবে ইথেরিয়ামের জন্য ডেভেলপ করা যায় তা জানুন।
+এলিক্সির-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন।
-ইথেরিয়াম ব্যবহার করে বিকেন্দ্রীভূত অ্যাপ্লিকেশন (বা "ড্যাপস") তৈরি করুন যেগুলো ক্রিপ্টোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলোকে কাজে লাগায়।. এই ডিএ্যাপসগুলো ট্রাস্টলেস হতে পারে, যার মানে হলো একবার এগুলো ইথেরিয়ামে ডেপ্লয় করা হয়ে গেলে, এগুলো সর্বদা প্রোগ্রাম অনুযায়ী চলবে। তারা নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করতে ডিজিটাল অ্যাসেট নিয়ন্ত্রণ করতে পারে। এগুলো বিকেন্দ্রীভূত হতে পারে, যার মানে কোন একক সত্ত্বা বা ব্যক্তি এগুলো নিয়ন্ত্রণ করেনা এবং এগুলো সেন্সর করা প্রায় অসম্ভব।.
+ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো কাজে লাগিয়ে ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো ট্রাস্টলেস হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডেপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম করা অনুযায়ী চলবে। নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করতে এগুলো ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে। এগুলো ডিসেন্ট্রালাইজড হতে পারে, যার মানে হলো কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব।
-## স্মার্ট কন্ট্র্যাক্ট এবং Solidity ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
+## স্মার্ট কন্ট্রাক্ট এবং সলিডিটি (Solidity) ভাষার সাথে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
-**এলিক্সিরের সাথে ইথেরিয়ামকে একীভূত করার জন্য আপনার প্রথম পদক্ষেপ নিন**
+**ইথিরিয়ামের সাথে এলিক্সিরকে ইন্টিগ্রেট করার জন্য আপনার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান ? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক ধারণা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [ব্লকচেইন ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে সলিডিটি কম্পাইল এবং ডেপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-## নতুনদের জন্য নিবন্ধ {#beginner-articles}
+## নতুনদের জন্য আর্টিকেল {#beginner-articles}
-- [অবশেষে ইথেরিয়াম অ্যাকাউন্ট বোঝা](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
-- [Ethers — এলিক্সিরের জন্য একটি প্রথম-শ্রেণীর ইথেরিয়াম Web3 লাইব্রেরি](https://medium.com/@alisinabh/announcing-ethers-a-first-class-ethereum-web3-library-for-elixir-1d64e9409122)
+- [অবশেষে ইথিরিয়াম একাউন্ট বোঝা](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [Ethers — এলিক্সিরের জন্য একটি ফার্স্ট-ক্লাস ইথিরিয়াম ওয়েব3 (Web3) লাইব্রেরি](https://medium.com/@alisinabh/announcing-ethers-a-first-class-ethereum-web3-library-for-elixir-1d64e9409122)
-## মধ্যবর্তী স্তরের নিবন্ধ {#intermediate-articles}
+## ইন্টারমিডিয়েট আর্টিকেল {#intermediate-articles}
-- [এলিক্সির দিয়ে কীভাবে র ইথেরিয়াম কন্ট্র্যাক্ট ট্রানজ্যাকশনে সাইন করতে হয়](https://kohlerjp.medium.com/how-to-sign-raw-ethereum-contract-transactions-with-elixir-f8822bcc813b)
-- [ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট এবং এলিক্সির](https://medium.com/agile-alpha/ethereum-smart-contracts-and-elixir-c7c4b239ddb4)
+- [কীভাবে এলিক্সির দিয়ে র (raw) ইথিরিয়াম কন্ট্রাক্ট লেনদেন সাইন করবেন](https://kohlerjp.medium.com/how-to-sign-raw-ethereum-contract-transactions-with-elixir-f8822bcc813b)
+- [ইথিরিয়াম স্মার্ট কন্ট্রাক্ট এবং এলিক্সির](https://medium.com/agile-alpha/ethereum-smart-contracts-and-elixir-c7c4b239ddb4)
## এলিক্সির প্রজেক্ট এবং টুলস {#elixir-projects-and-tools}
### সক্রিয় {#active}
-- [block_keys](https://github.com/ExWeb3/block_keys) - _এলিক্সিরে BIP32 এবং BIP44 ইমপ্লিমেন্টেশন (ডিটারমিনিস্টিক ওয়ালেটের জন্য মাল্টি-অ্যাকাউন্ট হায়ারার্কি)_
-- [ethereumex](https://github.com/mana-ethereum/ethereumex) - _ইথেরিয়াম ব্লকচেইনের জন্য এলিক্সির JSON-RPC ক্লায়েন্ট_
-- [ethers](https://github.com/ExWeb3/elixir_ethers) - _এলিক্সির ব্যবহার করে ইথেরিয়ামের স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি বিস্তৃত Web3 লাইব্রেরি_
-- [ethers_kms](https://github.com/ExWeb3/elixir_ethers_kms) - _Ethers-এর জন্য একটি KMS সাইনার লাইব্রেরি (AWS KMS দিয়ে ট্রানজ্যাকশন সাইন করুন)_
-- [ex_abi](https://github.com/poanetwork/ex_abi) - _এলিক্সিরে ইথেরিয়াম ABI পার্সার/ডিকোডার/এনকোডার ইমপ্লিমেন্টেশন_
-- [ex_keccak](https://github.com/ExWeb3/ex_keccak) - _একটি NIF বিল্ট tiny-keccak রাস্ট ক্রেট ব্যবহার করে Keccak SHA3-256 হ্যাস গণনা করার জন্য এলিক্সির লাইব্রেরি_
-- [ex_rlp](https://github.com/mana-ethereum/ex_rlp) - _ইথেরিয়ামের RLP (রিকرسیভ লেংথ প্রিফিক্স) এনকোডিংয়ের এলিক্সির ইমপ্লিমেন্টেশন_
+- [block_keys](https://github.com/ExWeb3/block_keys) - _এলিক্সিরে BIP32 এবং BIP44 ইমপ্লিমেন্টেশন (ডিটারমিনিস্টিক ওয়ালেট-এর জন্য মাল্টি-একাউন্ট হায়ারার্কি)_
+- [ethereumex](https://github.com/mana-ethereum/ethereumex) - _ইথিরিয়াম ব্লকচেইন-এর জন্য এলিক্সির JSON-RPC ক্লায়েন্ট_
+- [ethers](https://github.com/ExWeb3/elixir_ethers) - _এলিক্সির ব্যবহার করে ইথিরিয়ামে স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করার জন্য একটি বিস্তৃত ওয়েব3 (Web3) লাইব্রেরি_
+- [ethers_kms](https://github.com/ExWeb3/elixir_ethers_kms) - _Ethers-এর জন্য একটি KMS সাইনার লাইব্রেরি (AWS KMS দিয়ে লেনদেন সাইন করুন)_
+- [ex_abi](https://github.com/poanetwork/ex_abi) - _এলিক্সিরে ইথিরিয়াম ABI পার্সার/ডিকোডার/এনকোডার ইমপ্লিমেন্টেশন_
+- [ex_keccak](https://github.com/ExWeb3/ex_keccak) - _NIF বিল্ট tiny-keccak Rust ক্রেট ব্যবহার করে Keccak SHA3-256 হ্যাস কম্পিউট করার জন্য এলিক্সির লাইব্রেরি_
+- [ex_rlp](https://github.com/mana-ethereum/ex_rlp) - _ইথিরিয়ামের RLP (Recursive Length Prefix) এনকোডিং-এর এলিক্সির ইমপ্লিমেন্টেশন_
-### আর্কাইভ করা / আর রক্ষণাবেক্ষণ করা হয় না {#archived--no-longer-maintained}
+### আর্কাইভ করা / আর রক্ষণাবেক্ষণ করা হয় না {#archived--no-longer-maintained}
-- [eth](https://hex.pm/packages/eth) - _এলিক্সিরের জন্য ইথেরিয়াম ইউটিলিটি_
-- [exw3](https://github.com/hswick/exw3) - _এলিক্সিরের জন্য উচ্চ স্তরের ইথেরিয়াম RPC ক্লায়েন্ট_
-- [mana](https://github.com/mana-ethereum/mana) - _এলিক্সিরে লেখা ইথেরিয়াম ফুল নোড ইমপ্লিমেন্টেশন_
+- [eth](https://hex.pm/packages/eth) - _এলিক্সিরের জন্য ইথিরিয়াম ইউটিলিটি_
+- [exw3](https://github.com/hswick/exw3) - _এলিক্সিরের জন্য হাই লেভেল ইথিরিয়াম RPC ক্লায়েন্ট_
+- [mana](https://github.com/mana-ethereum/mana) - _এলিক্সিরে লেখা ইথিরিয়াম ফুল নোড ইমপ্লিমেন্টেশন_
-আরও সংস্থান খুঁজছেন? আমাদের [ডেভেলপারদের হোম](/developers/) দেখুন।
+আরও রিসোর্স খুঁজছেন? [আমাদের ডেভেলপারদের হোমপেজ](/developers/) দেখুন।
## এলিক্সির কমিউনিটি কন্ট্রিবিউটর {#elixir-community-contributors}
-[এলিক্সিরের স্ল্যাক #ethereum চ্যানেলটি](https://elixir-lang.slack.com/archives/C5RPZ3RJL) একটি দ্রুত বর্ধনশীল কমিউনিটির হোস্ট এবং এটি উপরের যেকোনো প্রজেক্ট এবং সম্পর্কিত বিষয়ে আলোচনার জন্য একটি ডেডিকেটেড রিসোর্স।
+[এলিক্সিরের স্ল্যাক #ethereum চ্যানেল](https://elixir-lang.slack.com/archives/C5RPZ3RJL) হলো একটি দ্রুত বর্ধনশীল কমিউনিটির হোস্ট এবং এটি উপরের যেকোনো প্রজেক্ট এবং সম্পর্কিত বিষয় নিয়ে আলোচনার জন্য একটি ডেডিকেটেড রিসোর্স।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/golang/index.md b/public/content/translations/bn/developers/docs/programming-languages/golang/index.md
index d269121e21c..da1efd708ec 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/golang/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/golang/index.md
@@ -1,84 +1,84 @@
---
-title: "গো(Go) ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "শিখুন কিভাবে গো-ভিত্তিক প্রজেক্ট ও টুল ব্যবহার করে ইথেরিয়ামের জন্য ডেভেলপ করা যায়"
+title: গো (Go) ডেভেলপারদের জন্য ইথিরিয়াম
+description: গো-ভিত্তিক (Go-based) প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
lang: bn
incomplete: true
---
-শিখুন কিভাবে গো-ভিত্তিক প্রজেক্ট ও টুল ব্যবহার করে ইথেরিয়ামের জন্য ডেভেলপ করা যায়
+গো-ভিত্তিক (Go-based) প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
-ইথেরিয়াম ব্যবহার করে ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করুন। এই ড্যাপগুলো বিশ্বাসযোগ্য হতে পারে, অর্থাৎ এগুলোকে একবার ইথেরিয়ামে প্রয়োগ করা হয়ে গেলে, এগুলো সবসময় প্রোগ্রামড হিসেবে চলতে থাকবে।. এগুলি বিকেন্দ্রীভূত, যার অর্থ এগুলি একটি পিয়ার-টু-পিয়ার নেটওয়ার্কে চলে এবং ব্যর্থতার কোনও একক বিন্দু নেই। কোনও একক সত্তা বা ব্যক্তি তাদের নিয়ন্ত্রণ করে না এবং তাদের সেন্সর করা প্রায় অসম্ভব। নতুন ধরনের এপ্লিকেশন তৈরি করার জন্য তারা ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে।
+ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো বিশ্বস্ত হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডেপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম অনুযায়ী চলবে। এগুলো ডিসেন্ট্রালাইজড, যার মানে হলো এগুলো একটি পিয়ার-টু-পিয়ার নেটওয়ার্কে চলে এবং এগুলোর কোনো একক ব্যর্থতার বিন্দু (single point of failure) নেই। কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব। নতুন ধরনের অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে।
-## স্মার্ট কন্ট্র্যাক্ট এবং Solidity ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
+## স্মার্ট কন্ট্রাক্ট এবং Solidity ভাষার সাথে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
-**গো-এর সাথে ইথেরিয়ামকে একীভূত করার জন্য প্রথম পদক্ষেপ নিন**
+**ইথিরিয়ামের সাথে Go ইন্টিগ্রেট করার জন্য আপনার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক ধারণা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-- [কন্ট্র্যাক্ট টিউটোরিয়াল](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial)
+- [ব্লকচেইন ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লেখা](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে Solidity কম্পাইল এবং ডেপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [কন্ট্রাক্ট টিউটোরিয়াল](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial)
-## শিক্ষানবিশদের জন্য প্রবন্ধ এবং বই {#beginner-articles-and-books}
+## নতুনদের জন্য আর্টিকেল এবং বই {#beginner-articles-and-books}
-- [Geth দিয়ে শুরু করুন](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458)
-- [Ethereum-এর সাথে সংযোগ করতে Golang ব্যবহার করুন](https://www.youtube.com/watch?v=-7uChuO_VzM)
-- [Golang ব্যবহার করে Ethereum স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করুন](https://www.youtube.com/watch?v=pytGqQmDslE)
-- [Go-তে Ethereum স্মার্ট কন্ট্র্যাক্ট পরীক্ষা এবং ডিপ্লয় করার জন্য একটি ধাপে ধাপে নির্দেশিকা](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78)
-- [ই-বুক: Go দিয়ে Ethereum ডেভেলপমেন্ট](https://goethereumbook.org/) - _Go দিয়ে Ethereum এপ্লিকেশন ডেভেলপ করুন_
+- [Geth এর সাথে শুরু করা](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458)
+- [ইথিরিয়ামের সাথে কানেক্ট করতে Golang ব্যবহার করুন](https://www.youtube.com/watch?v=-7uChuO_VzM)
+- [Golang ব্যবহার করে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট ডেপ্লয় করুন](https://www.youtube.com/watch?v=pytGqQmDslE)
+- [Go-তে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট টেস্টিং এবং ডেপ্লয় করার ধাপে ধাপে গাইড](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78)
+- [ই-বুক: Go এর সাথে ইথিরিয়াম ডেভেলপমেন্ট](https://goethereumbook.org/) - _Go দিয়ে ইথিরিয়াম অ্যাপ্লিকেশন ডেভেলপ করুন_
-## মধ্যবর্তী স্তরের প্রবন্ধ এবং ডক্স {#intermediate-articles-and-docs}
+## ইন্টারমিডিয়েট আর্টিকেল এবং ডক্স {#intermediate-articles-and-docs}
-- [Go Ethereum ডকুমেন্টেশন](https://geth.ethereum.org/docs/) - _অফিসিয়াল Ethereum Golang-এর জন্য ডকুমেন্টেশন_
-- [Erigon প্রোগ্রামারদের জন্য নির্দেশিকা](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _স্টেট ট্রি, মাল্টি-প্রুফস, এবং লেনদেন প্রক্রিয়াকরণ সহ সচিত্র নির্দেশিকা_
-- [Erigon এবং স্টেটলেস Ethereum](https://youtu.be/3-Mn7OckSus?t=394) - _2020 Ethereum কমিউনিটি কনফারেন্স (EthCC 3)_
-- [Erigon: Ethereum ক্লায়েন্ট অপ্টিমাইজ করা](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 Devcon 4_
+- [Go Ethereum ডকুমেন্টেশন](https://geth.ethereum.org/docs) - _অফিসিয়াল ইথিরিয়াম Golang এর ডকুমেন্টেশন_
+- [Erigon প্রোগ্রামার গাইড](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _স্টেট ট্রি, মাল্টি-প্রুফ এবং লেনদেন প্রসেসিং সহ সচিত্র গাইড_
+- [Erigon এবং স্টেটলেস ইথিরিয়াম](https://youtu.be/3-Mn7OckSus?t=394) - _2020 ইথিরিয়াম কমিউনিটি কনফারেন্স (EthCC 3)_
+- [Erigon: ইথিরিয়াম ক্লায়েন্ট অপ্টিমাইজ করা](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 Devcon 4_
- [Go Ethereum GoDoc](https://godoc.org/github.com/ethereum/go-ethereum)
-- [Geth এর সাথে Go তে একটি ডিএ্যাপ তৈরি করা](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/)
-- [Golang এবং Geth এর সাথে Ethereum প্রাইভেট নেটওয়ার্কে কাজ করুন](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php)
-- [Go এর সাথে Ethereum এ সলিডিটি কন্ট্র্যাক্টের ইউনিট টেস্টিং](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281)
-- [লাইব্রেরি হিসেবে Geth ব্যবহারের জন্য দ্রুত রেফারেন্স](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e)
+- [Geth এর সাথে Go-তে একটি ডিএ্যাপ তৈরি করা](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/)
+- [Golang এবং Geth এর সাথে ইথিরিয়াম প্রাইভেট নেটওয়ার্কে কাজ করা](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php)
+- [Go এর সাথে ইথিরিয়ামে Solidity কন্ট্রাক্ট ইউনিট টেস্টিং](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281)
+- [লাইব্রেরি হিসেবে Geth ব্যবহার করার জন্য কুইক রেফারেন্স](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e)
-## উন্নত ব্যবহারের প্যাটার্ন {#advanced-use-patterns}
+## অ্যাডভান্সড ব্যবহারের ধরন {#advanced-use-patterns}
- [GETH সিমুলেটেড ব্যাকএন্ড](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top)
-- [Ethereum এবং Quorum ব্যবহার করে ব্লকচেইন-অ্যাজ-এ-সার্ভিস অ্যাপস](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html)
-- [Ethereum ব্লকচেইন অ্যাপ্লিকেশনে ডিস্ট্রিবিউটেড স্টোরেজ IPFS এবং Swarm](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html)
-- [মোবাইল ক্লায়েন্ট: লাইব্রেরি এবং ইনপ্রোক Ethereum নোড](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes)
-- [নেটিভ ডিএ্যাপস: Ethereum কন্ট্র্যাক্টে Go বাইন্ডিং](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts)
+- [ইথিরিয়াম এবং Quorum ব্যবহার করে ব্লকচেইন-অ্যাজ-এ-সার্ভিস অ্যাপস](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html)
+- [ইথিরিয়াম ব্লকচেইন অ্যাপ্লিকেশনে ডিস্ট্রিবিউটেড স্টোরেজ IPFS এবং Swarm](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html)
+- [মোবাইল ক্লায়েন্ট: লাইব্রেরি এবং ইনপ্রক ইথিরিয়াম নোড](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes)
+- [নেটিভ ডিএ্যাপস: ইথিরিয়াম কন্ট্রাক্টের সাথে Go বাইন্ডিং](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts)
## Go প্রজেক্ট এবং টুলস {#go-projects-and-tools}
-- [Geth / Go Ethereum](https://github.com/ethereum/go-ethereum) - _Ethereum প্রোটোকলের অফিসিয়াল Go প্রয়োগ_
-- [Go Ethereum কোড অ্যানালাইসিস](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Go Ethereum সোর্স কোডের পর্যালোচনা এবং বিশ্লেষণ_
-- [Erigon](https://github.com/ledgerwatch/erigon) - _Go Ethereum-এর একটি দ্রুততর ডেরিভেটিভ, আর্কাইভ নোডগুলিতে ফোকাস সহ_
-- [Golem](https://github.com/golemfactory/golem) - _Golem কম্পিউটিং পাওয়ারের জন্য একটি বিশ্বব্যাপী বাজার তৈরি করছে_
-- [Quorum](https://github.com/jpmorganchase/quorum) - _ডেটা গোপনীয়তা সমর্থনকারী Ethereum-এর একটি অনুমতিপ্রাপ্ত প্রয়োগ_
-- [Prysm](https://github.com/prysmaticlabs/prysm) - _Ethereum 'Serenity' 2.0 Go প্রয়োগ_
-- [Eth Tweet](https://github.com/yep/eth-tweet) - _বিকেন্দ্রীভূত টুইটার: Ethereum ব্লকচেইনে চালিত একটি মাইক্রোব্লগিং পরিষেবা_
-- [Plasma MVP Golang](https://github.com/kyokan/plasma) — _মিনিমাম ভায়াবল প্লাজমা স্পেসিফিকেশনের Golang প্রয়োগ এবং এক্সটেনশন_
-- [ওপেন Ethereum মাইনিং পুল](https://github.com/sammy007/open-ethereum-pool) - _একটি ওপেন সোর্স Ethereum মাইনিং পুল_
-- [Ethereum HD ওয়ালেট](https://github.com/miguelmota/go-ethereum-hdwallet) - _Go-তে Ethereum HD ওয়ালেট ডেরিভেশন_
-- [Multi Geth](https://github.com/multi-geth/multi-geth) - _বিভিন্ন ধরনের Ethereum নেটওয়ার্কের জন্য সমর্থন_
-- [Geth লাইট ক্লায়েন্ট](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _লাইট Ethereum সাবপ্রোটোকলের Geth প্রয়োগ_
-- [Ethereum Golang SDK](https://github.com/everFinance/goether) - _Golang-এ একটি সাধারণ Ethereum ওয়ালেট প্রয়োগ এবং ইউটিলিটি_
-- [Covalent Golang SDK](https://github.com/covalenthq/covalent-api-sdk-go) - _200+ ব্লকচেইনের জন্য Go SDK-এর মাধ্যমে কার্যকরী ব্লকচেইন ডেটা অ্যাক্সেস_
-
-আরও সংস্থান খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন
-
-## Go কমিউনিটির অবদানকারীরা {#go-community-contributors}
+- [Geth / Go Ethereum](https://github.com/ethereum/go-ethereum) - _ইথিরিয়াম প্রটোকলের অফিসিয়াল Go ইমপ্লিমেন্টেশন_
+- [Go Ethereum কোড অ্যানালাইসিস](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Go Ethereum সোর্স কোডের রিভিউ এবং অ্যানালাইসিস_
+- [Erigon](https://github.com/ledgerwatch/erigon) - _আর্কাইভ নোডের উপর ফোকাস সহ Go Ethereum এর দ্রুততর ডেরিভেটিভ_
+- [Golem](https://github.com/golemfactory/golem) - _Golem কম্পিউটিং পাওয়ারের জন্য একটি গ্লোবাল মার্কেট তৈরি করছে_
+- [Quorum](https://github.com/jpmorganchase/quorum) - _ডেটা প্রাইভেসি সমর্থনকারী ইথিরিয়ামের একটি পারমিশনড ইমপ্লিমেন্টেশন_
+- [Prysm](https://github.com/prysmaticlabs/prysm) - _ইথিরিয়াম 'Serenity' 2.0 Go ইমপ্লিমেন্টেশন_
+- [Eth Tweet](https://github.com/yep/eth-tweet) - _ডিসেন্ট্রালাইজড টুইটার: ইথিরিয়াম ব্লকচেইনে চলা একটি মাইক্রোব্লগিং সার্ভিস_
+- [Plasma MVP Golang](https://github.com/kyokan/plasma) — _মিনিমাম ভায়াবল প্লাজমা স্পেসিফিকেশনের Golang ইমপ্লিমেন্টেশন এবং এক্সটেনশন_
+- [Open Ethereum Mining Pool](https://github.com/sammy007/open-ethereum-pool) - _একটি ওপেন সোর্স ইথিরিয়াম মাইনিং পুল_
+- [Ethereum HD Wallet](https://github.com/miguelmota/go-ethereum-hdwallet) - _Go-তে ইথিরিয়াম HD ওয়ালেট ডেরিভেশন_
+- [Multi Geth](https://github.com/multi-geth/multi-geth) - _ইথিরিয়াম নেটওয়ার্কের অনেক প্রজাতির জন্য সাপোর্ট_
+- [Geth Light Client](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _লাইট ইথিরিয়াম সাবপ্রটোকলের Geth ইমপ্লিমেন্টেশন_
+- [Ethereum Golang SDK](https://github.com/everFinance/goether) - _Golang-এ একটি সাধারণ ইথিরিয়াম ওয়ালেট ইমপ্লিমেন্টেশন এবং ইউটিলিটি_
+- [Covalent Golang SDK](https://github.com/covalenthq/covalent-api-sdk-go) - _200+ ব্লকচেইনের জন্য Go SDK এর মাধ্যমে দক্ষ ব্লকচেইন ডেটা অ্যাক্সেস_
+
+আরও রিসোর্স খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন
+
+## Go কমিউনিটি কন্ট্রিবিউটর {#go-community-contributors}
- [Geth Discord](https://discordapp.com/invite/nthXNEv)
-- [Geth Gitter](https://gitter.im/ethereum/go-ethereum)
+- [Geth Gist](https://gitter.im/ethereum/go-ethereum)
- [Gophers Slack](https://invite.slack.golangbridge.org/) - [#ethereum চ্যানেল](https://gophers.slack.com/messages/C9HP1S9V2)
- [StackExchange - Ethereum](https://ethereum.stackexchange.com/)
- [Multi Geth Gitter](https://gitter.im/ethoxy/multi-geth)
- [Ethereum Gitter](https://gitter.im/ethereum/home)
-- [Geth লাইট ক্লায়েন্ট Gitter](https://gitter.im/ethereum/light-client)
+- [Geth light Client Gitter](https://gitter.im/ethereum/light-client)
-## অন্যান্য একত্রিত তালিকা {#other-aggregated-lists}
+## অন্যান্য অ্যাগ্রিগেটেড তালিকা {#other-aggregated-lists}
- [Awesome Ethereum](https://github.com/btomashvili/awesome-ethereum)
-- [Consensys: Ethereum ডেভেলপার টুলসের একটি নির্দিষ্ট তালিকা](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [GitHub সোর্স](https://github.com/ConsenSys/ethereum-developer-tools-list)
+- [Consensys: ইথিরিয়াম ডেভেলপার টুলসের একটি চূড়ান্ত তালিকা](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [GitHub সোর্স](https://github.com/ConsenSys/ethereum-developer-tools-list)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/index.md b/public/content/translations/bn/developers/docs/programming-languages/index.md
index c308a23547d..975e0657d8f 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/index.md
@@ -1,33 +1,31 @@
---
-title: "প্রোগ্রামিং ল্যাঙ্গুয়েজ"
-description: "জাভাস্ক্রিপ্ট, পাইথন, গো, রাস্ট এবং আরও অনেক কিছু সহ বিভিন্ন প্রোগ্রামিং ভাষার জন্য ইথেরিয়াম ডেভেলপমেন্ট রিসোর্স আবিষ্কার করুন।"
+title: প্রোগ্রামিং ভাষা
+description: জাভাস্ক্রিপ্ট (JavaScript), পাইথন (Python), গো (Go), রাস্ট (Rust) এবং আরও অনেক প্রোগ্রামিং ভাষার জন্য ইথিরিয়াম ডেভেলপমেন্ট রিসোর্সগুলো আবিষ্কার করুন।
lang: bn
---
-একটি সাধারণ ভুল ধারণা হল যে Ethereum-এর উপর ভিত্তি করে তৈরি করার জন্য ডেভেলপারদের অবশ্যই [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) লিখতে হবে। এটা মিথ্যা।
-ইথেরিয়াম নেটওয়ার্ক এবং কমিউনিটির অন্যতম সৌন্দর্য হল যে আপনি যেকোনো প্রোগ্রামিং ভাষাতেই [অংশগ্রহণ](/community/) করতে পারবেন।
+একটি সাধারণ ভুল ধারণা হলো যে ইথিরিয়ামে কিছু তৈরি করতে হলে ডেভেলপারদের অবশ্যই [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) লিখতে হবে। এটি ভুল।
+ইথিরিয়াম নেটওয়ার্ক এবং কমিউনিটির অন্যতম সৌন্দর্য হলো আপনি প্রায় যেকোনো প্রোগ্রামিং ভাষায় [অংশগ্রহণ](/community/) করতে পারবেন।
-ইথেরিয়াম এবং তার কমিউনিটি ওপেন সোর্সকে গ্রহণ করেছে। আপনি বিভিন্ন ভাষায় কমিউনিটি প্রজেক্ট খুঁজে পেতে পারেন - ক্লায়েন্ট ইমপ্লিমেন্টেশন, API, ডেভেলপমেন্ট ফ্রেমওয়ার্ক, টেস্টিং টুলস।
+ইথিরিয়াম এবং এর কমিউনিটি ওপেন সোর্সকে গ্রহণ করে। আপনি বিভিন্ন ভাষায় কমিউনিটি প্রজেক্টগুলো খুঁজে পেতে পারেন - ক্লায়েন্ট ইমপ্লিমেন্টেশন, API, ডেভেলপমেন্ট ফ্রেমওয়ার্ক, টেস্টিং টুলস।
## আপনার ভাষা বেছে নিন {#data}
-প্রজেক্ট, রিসোর্স, এবং ভার্চুয়াল কমিউনিটি খুঁজে পেতে আপনার পছন্দের প্রোগ্রামিং ভাষা নির্বাচন করুন:
+প্রজেক্ট, রিসোর্স এবং ভার্চুয়াল কমিউনিটিগুলো খুঁজে পেতে আপনার পছন্দের প্রোগ্রামিং ভাষা নির্বাচন করুন:
-- [ডার্ট ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/dart/)
-- [ডেলফি ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/delphi/)
-- [.NET ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/dot-net/)
-- [এলিক্সির ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/elixir/)
-- [গো ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/golang/)
-- [জাভা ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/java/)
-- [জাভাস্ক্রিপ্ট ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/javascript/)
-- [পাইথন ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/python/)
-- [রুবি ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/ruby/)
-- [রাস্ট ডেভেলপারদের জন্য ইথেরিয়াম](/developers/docs/programming-languages/rust/)
+- [ডার্ট (Dart) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/dart/)
+- [ডেলফি (Delphi) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/delphi/)
+- [.NET ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/dot-net/)
+- [এলিক্সির (Elixir) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/elixir/)
+- [গো (Go) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/golang/)
+- [জাভা (Java) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/java/)
+- [জাভাস্ক্রিপ্ট (JavaScript) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/javascript/)
+- [পাইথন (Python) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/python/)
+- [রুবি (Ruby) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/ruby/)
+- [রাস্ট (Rust) ডেভেলপারদের জন্য ইথিরিয়াম](/developers/docs/programming-languages/rust/)
### আমার ভাষা সমর্থিত না হলে কী হবে {#other-lang}
-আপনি যদি কোনও অতিরিক্ত প্রোগ্রামিং ভাষার জন্য রিসোর্সের সাথে লিঙ্ক করতে চান বা একটি ভার্চুয়াল কমিউনিটির দিকে নির্দেশ করতে চান, তবে আপনি একটি [ইস্যু খোলার](https://github.com/ethereum/ethereum-org-website/issues/new/choose) মাধ্যমে একটি নতুন পেজের জন্য অনুরোধ করতে পারেন।
+আপনি যদি কোনো অতিরিক্ত প্রোগ্রামিং ভাষার জন্য রিসোর্স লিঙ্ক করতে চান বা কোনো ভার্চুয়াল কমিউনিটির দিকে নির্দেশ করতে চান, তবে আপনি [একটি ইস্যু ওপেন করে](https://github.com/ethereum/ethereum-org-website/issues/new/choose) নতুন পেজের জন্য অনুরোধ করতে পারেন।
-আপনি যদি বর্তমানে অসমর্থিত কোনো ভাষা ব্যবহার করে ব্লকচেইনের সাথে ইন্টারফেস করার জন্য কোড লিখতে চান
-আপনি ইথেরিয়াম নেটওয়ার্কের সাথে সংযোগ করতে [JSON-RPC ইন্টারফেস](/developers/docs/apis/json-rpc/) ব্যবহার করতে পারেন। TCP/IP ব্যবহার করতে পারে এমন যেকোনো প্রোগ্রামিং
-ভাষা এই ইন্টারফেসটি ব্যবহার করতে পারে।
+আপনি যদি বর্তমানে অসমর্থিত কোনো ভাষা ব্যবহার করে ব্লকচেইনের সাথে ইন্টারফেস করার জন্য কোড লিখতে চান, তবে আপনি ইথিরিয়াম নেটওয়ার্কের সাথে কানেক্ট করতে [JSON-RPC ইন্টারফেস](/developers/docs/apis/json-rpc/) ব্যবহার করতে পারেন। TCP/IP ব্যবহার করতে পারে এমন যেকোনো প্রোগ্রামিং ভাষা এই ইন্টারফেসটি ব্যবহার করতে পারে।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/java/index.md b/public/content/translations/bn/developers/docs/programming-languages/java/index.md
index 2855e9ebf2b..90150f3a1c6 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/java/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/java/index.md
@@ -1,64 +1,63 @@
---
-title: "জাভা ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "শিখুন কীভাবে জাভা-ভিত্তিক প্রজেক্ট ও টুল ব্যবহার করে ইথেরিয়ামের জন্য ডেভেলপ করা যায়"
+title: জাভা ডেভেলপারদের জন্য ইথিরিয়াম
+description: জাভা-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
lang: bn
incomplete: true
---
-জাভা-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে Ethereum-এর জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
+জাভা-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
-ইথেরিয়াম ব্যবহার করে বিকেন্দ্রীভূত অ্যাপ্লিকেশন (বা "ড্যাপস") তৈরি করুন যেগুলো ক্রিপ্টোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলোকে কাজে লাগায়।. এই ড্যাপগুলো বিশ্বাসযোগ্য হতে পারে, অর্থাৎ এগুলোকে একবার ইথেরিয়ামে প্রয়োগ করা হয়ে গেলে, এগুলো সবসময় প্রোগ্রামড হিসেবে চলতে থাকবে।. নতুন ধরণের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদকে নিয়ন্ত্রণ করতে পারে।. এগুলো বিকেন্দ্রীভূত হতে পারে, যার মানে কোন একক সত্ত্বা বা ব্যক্তি এগুলো নিয়ন্ত্রণ করেনা এবং এগুলো সেন্সর করা প্রায় অসম্ভব।.
+ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো কাজে লাগিয়ে ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো বিশ্বস্ত হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডেপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম অনুযায়ী চলবে। নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করতে এগুলো ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে। এগুলো ডিসেন্ট্রালাইজড হতে পারে, যার মানে হলো কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব।
-## স্মার্ট কন্ট্র্যাক্ট এবং Solidity ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
+## স্মার্ট কন্ট্রাক্ট এবং Solidity ভাষার সাথে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
-**জাভার সাথে ইথেরিয়ামকে একীভূত করার জন্য প্রথম পদক্ষেপ নিন**
+**ইথিরিয়ামের সাথে জাভা ইন্টিগ্রেট করার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান? [ethereum.org/learn](/learn/) অথবা [ethereum.org/developers.](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক ধারণা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers.](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [ব্লকচেইন ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে Solidity কম্পাইল এবং ডেপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-## ইথেরিয়াম ক্লায়েন্টদের সাথে কাজ করা {#working-with-ethereum-clients}
+## ইথিরিয়াম ক্লায়েন্ট নিয়ে কাজ করা {#working-with-ethereum-clients}
-দুটি নেতৃস্থানীয় Java Ethereum ক্লায়েন্ট, [Web3J](https://github.com/web3j/web3j) এবং Hyperledger Besu কীভাবে ব্যবহার করতে হয় তা শিখুন
+দুটি শীর্ষস্থানীয় জাভা ইথিরিয়াম ক্লায়েন্ট, [Web3J](https://github.com/web3j/web3j) এবং Hyperledger Besu কীভাবে ব্যবহার করতে হয় তা শিখুন
-- [Java, Eclipse, এবং Web3J-এর সাথে একটি Ethereum ক্লায়েন্টের সাথে সংযোগ স্থাপন করা](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j)
-- [Java এবং Web3j দিয়ে একটি Ethereum অ্যাকাউন্ট পরিচালনা করা](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
-- [আপনার স্মার্ট কন্ট্র্যাক্ট থেকে একটি Java র্যাপার তৈরি করুন](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
-- [একটি Ethereum স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করা](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
-- [Ethereum স্মার্ট কন্ট্র্যাক্ট ইভেন্টগুলির জন্য শোনা](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java)
-- [Linux-এর সাথে Java Ethereum ক্লায়েন্ট Besu (Pantheon) ব্যবহার করা](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux)
-- [Java ইন্টিগ্রেশন টেস্টে একটি Hyperledger Besu (Pantheon) নোড চালানো](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests)
-- [Web3j চিট শিট](https://kauri.io/web3j-cheat-sheet-\(java-ethereum\)/5dfa1ea941ac3d0001ce1d90/c)
+- [জাভা, Eclipse এবং Web3J এর মাধ্যমে একটি ইথিরিয়াম ক্লায়েন্ট এর সাথে কানেক্ট করা](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j)
+- [জাভা এবং Web3j এর মাধ্যমে একটি ইথিরিয়াম একাউন্ট পরিচালনা করা](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
+- [আপনার স্মার্ট কন্ট্রাক্ট থেকে একটি জাভা র্যাপার তৈরি করা](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
+- [একটি ইথিরিয়াম স্মার্ট কন্ট্রাক্ট এর সাথে ইন্টারঅ্যাক্ট করা](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
+- [ইথিরিয়াম স্মার্ট কন্ট্রাক্ট ইভেন্টগুলোর জন্য লিসেন করা](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java)
+- [লিনাক্সের সাথে জাভা ইথিরিয়াম ক্লায়েন্ট Besu (Pantheon) ব্যবহার করা](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux)
+- [জাভা ইন্টিগ্রেশন টেস্টে একটি Hyperledger Besu (Pantheon) নোড চালানো](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests)
+- [Web3j চিট শিট]()
-[ethers-kt](https://github.com/Kr1ptal/ethers-kt) কীভাবে ব্যবহার করতে হয় তা শিখুন, এটি EVM-ভিত্তিক ব্লকচেইনগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য একটি অ্যাসিঙ্ক, উচ্চ-পারফরম্যান্সের Kotlin লাইব্রেরি। JVM এবং Android প্ল্যাটফর্মকে লক্ষ্য করা হয়েছে।
-
-- [ERC20 টোকেন ট্রান্সফার](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt)
-- [ইভেন্ট লিসেনিং সহ UniswapV2 সোয়াপ](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt)
+EVM-ভিত্তিক ব্লকচেইনগুলোর সাথে ইন্টারঅ্যাক্ট করার জন্য একটি অ্যাসিঙ্ক, হাই-পারফরম্যান্স কোটলিন লাইব্রেরি [ethers-kt](https://github.com/Kr1ptal/ethers-kt) কীভাবে ব্যবহার করতে হয় তা শিখুন। এটি JVM এবং অ্যান্ড্রয়েড প্ল্যাটফর্মগুলোকে টার্গেট করে।
+- [ERC20 টোকেন ট্রান্সফার করা](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt)
+- [ইভেন্ট লিসেনিং এর সাথে UniswapV2 সোয়াপ](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt)
- [ETH / ERC20 ব্যালেন্স ট্র্যাকার](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt)
-## মধ্যবর্তী স্তরের নিবন্ধ {#intermediate-articles}
+## ইন্টারমিডিয়েট আর্টিকেল {#intermediate-articles}
-- [IPFS সহ একটি Java অ্যাপ্লিকেশনে সংগ্রহস্থল পরিচালনা করা](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs)
-- [Web3j সহ Java-তে ERC20 টোকেন পরিচালনা করা](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j)
-- [Web3j ট্রানজ্যাকশন ম্যানেজার](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers)
+- [IPFS এর মাধ্যমে একটি জাভা অ্যাপ্লিকেশনে স্টোরেজ পরিচালনা করা](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs)
+- [Web3j এর মাধ্যমে জাভাতে ERC20 টোকেন পরিচালনা করা](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j)
+- [Web3j ট্রানজেকশন ম্যানেজার](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers)
-## উন্নত ব্যবহারের প্যাটার্ন {#advanced-use-patterns}
+## অ্যাডভান্সড ব্যবহারের প্যাটার্ন {#advanced-use-patterns}
-- [একটি Java স্মার্ট কন্ট্র্যাক্ট ডেটা ক্যাশে তৈরি করতে Eventeum ব্যবহার করা](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
+- [একটি জাভা স্মার্ট কন্ট্রাক্ট ডাটা ক্যাশ তৈরি করতে Eventeum ব্যবহার করা](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
-## Java প্রজেক্ট এবং টুলস {#java-projects-and-tools}
+## জাভা প্রজেক্ট এবং টুলস {#java-projects-and-tools}
-- [Web3J (Ethereum ক্লায়েন্টদের সাথে ইন্টারঅ্যাক্ট করার জন্য লাইব্রেরি)](https://github.com/web3j/web3j)
-- [ethers-kt (EVM-ভিত্তিক ব্লকচেইনের জন্য অ্যাসিঙ্ক, উচ্চ-পারফরম্যান্স Kotlin/Java/Android লাইব্রেরি।)](https://github.com/Kr1ptal/ethers-kt)
+- [Web3J (ইথিরিয়াম ক্লায়েন্ট এর সাথে ইন্টারঅ্যাক্ট করার লাইব্রেরি)](https://github.com/web3j/web3j)
+- [ethers-kt (EVM-ভিত্তিক ব্লকচেইনগুলোর জন্য অ্যাসিঙ্ক, হাই-পারফরম্যান্স কোটলিন/জাভা/অ্যান্ড্রয়েড লাইব্রেরি।)](https://github.com/Kr1ptal/ethers-kt)
- [Eventeum (ইভেন্ট লিসেনার)](https://github.com/ConsenSys/eventeum)
- [Mahuta (IPFS ডেভ টুলস)](https://github.com/ConsenSys/mahuta)
-আরও সংস্থান খুঁজছেন? [ethereum.org/developers.](/developers/) দেখুন।
+আরও রিসোর্স খুঁজছেন? [ethereum.org/developers.](/developers/) দেখুন।
-## Java কমিউনিটির অবদানকারীরা {#java-community-contributors}
+## জাভা কমিউনিটি কন্ট্রিবিউটর {#java-community-contributors}
- [IO Builders](https://io.builders)
-- [Kauri](https://kauri.io)
+- [Kauri](https://kauri.io)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/javascript/index.md b/public/content/translations/bn/developers/docs/programming-languages/javascript/index.md
index 99098b0fdd7..2c3a5b870d6 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/javascript/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/javascript/index.md
@@ -1,72 +1,72 @@
---
-title: "জাভাস্ক্রিপ্ট ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "শিখুন কীভাবে জাভাস্ক্রিপ্ট-ভিত্তিক প্রজেক্ট ও টুল ব্যবহার করে ইথেরিয়ামের জন্য ডেভেলপ করা যায়."
+title: জাভাস্ক্রিপ্ট ডেভেলপারদের জন্য ইথিরিয়াম
+description: জাভাস্ক্রিপ্ট-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন।
lang: bn
---
-ইথেরিয়াম ইকোসিস্টেমের সবচেয়ে জনপ্রিয় ভাষাগুলোর মধ্যে জাভাস্ক্রিপ্ট অন্যতম। আসলে, ইথেরিয়ামকে যতটা সম্ভব জাভাস্ক্রিপ্টে আনার জন্য একটি [দল](https://github.com/ethereumjs) উৎসর্গীকৃত।
+ইথিরিয়াম ইকোসিস্টেমে জাভাস্ক্রিপ্ট অন্যতম জনপ্রিয় ভাষা। বস্তুত, একটি [দল](https://github.com/ethereumjs) ইথিরিয়ামের যতটা সম্ভব অংশ জাভাস্ক্রিপ্টে নিয়ে আসার জন্য নিবেদিতভাবে কাজ করছে।
-[স্ট্যাকের সমস্ত স্তরেই](/developers/docs/ethereum-stack/) জাভাস্ক্রিপ্ট (বা এর কাছাকাছি কিছু) লেখার সুযোগ রয়েছে।
+[স্ট্যাকের সব স্তরে](/developers/docs/ethereum-stack/) জাভাস্ক্রিপ্ট (বা এর কাছাকাছি কিছু) লেখার সুযোগ রয়েছে।
-## ইথেরিয়ামের সাথে ইন্টার্যাক্ট করুন {#interact-with-ethereum}
+## ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করুন {#interact-with-ethereum}
-### JavaScript API লাইব্রেরি {#javascript-api-libraries}
+### জাভাস্ক্রিপ্ট এপিআই লাইব্রেরি {#javascript-api-libraries}
-আপনি যদি ব্লকচেইন কোয়েরি করতে, লেনদেন পাঠাতে এবং আরও অনেক কিছুর জন্য জাভাস্ক্রিপ্ট লিখতে চান, তবে এটি করার সবচেয়ে সুবিধাজনক উপায় হলো একটি [জাভাস্ক্রিপ্ট API লাইব্রেরি](/developers/docs/apis/javascript/) ব্যবহার করা। এই API-গুলি ডেভেলপারদের [ইথেরিয়াম নেটওয়ার্কের নোডগুলির](/developers/docs/nodes-and-clients/) সাথে সহজে ইন্টার্যাক্ট করার সুযোগ দেয়।
+আপনি যদি ব্লকচেইন কোয়েরি করতে, লেনদেন পাঠাতে এবং আরও অনেক কিছুর জন্য জাভাস্ক্রিপ্ট লিখতে চান, তবে এটি করার সবচেয়ে সুবিধাজনক উপায় হলো একটি [জাভাস্ক্রিপ্ট এপিআই লাইব্রেরি](/developers/docs/apis/javascript/) ব্যবহার করা। এই এপিআইগুলো ডেভেলপারদের সহজেই [ইথিরিয়াম নেটওয়ার্কের নোডগুলোর](/developers/docs/nodes-and-clients/) সাথে ইন্টারঅ্যাক্ট করার সুযোগ দেয়।
-আপনি ইথেরিয়ামে স্মার্ট কন্ট্র্যাক্টগুলোর সাথে ইন্টার্যাক্ট করতে এই লাইব্রেরিগুলো ব্যবহার করতে পারেন, তাই এমন একটি ডিএ্যাপ তৈরি করা সম্ভব যেখানে আপনি আগে থেকে বিদ্যমান কন্ট্র্যাক্টগুলোর সাথে ইন্টার্যাক্ট করার জন্য শুধু জাভাস্ক্রিপ্ট ব্যবহার করবেন।
+আপনি ইথিরিয়ামে স্মার্ট কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করতে এই লাইব্রেরিগুলো ব্যবহার করতে পারেন, তাই এমন একটি ডিএ্যাপ তৈরি করা সম্ভব যেখানে আপনি আগে থেকে বিদ্যমান কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করতে শুধুমাত্র জাভাস্ক্রিপ্ট ব্যবহার করবেন।
-**দেখে নিন**
+**চেক আউট করুন**
- [Web3.js](https://web3js.readthedocs.io)
-- [Ethers.js](https://ethers.org) – _জাভাস্ক্রিপ্ট এবং টাইপস্ক্রিপ্টে ইথেরিয়াম ওয়ালেট বাস্তবায়ন এবং ইউটিলিটি অন্তর্ভুক্ত করে।_
-- [viem](https://viem.sh) – _ইথেরিয়ামের জন্য একটি টাইপস্ক্রিপ্ট ইন্টারফেস যা ইথেরিয়ামের সাথে ইন্টার্যাক্ট করার জন্য নিম্ন-স্তরের স্টেটলেস প্রিমিটিভ প্রদান করে।_
-- [Drift](https://ryangoree.github.io/drift/) – _একটি টাইপস্ক্রিপ্ট মেটা-লাইব্রেরি যাতে বিল্ট-ইন ক্যাশিং, হুক এবং টেস্ট মক রয়েছে, যা web3 লাইব্রেরি জুড়ে সহজ ইথেরিয়াম ডেভেলপমেন্টের জন্য ব্যবহৃত হয়।_
+- [Ethers.js](https://ethers.org) – _জাভাস্ক্রিপ্ট এবং টাইপস্ক্রিপ্টে ইথিরিয়াম ওয়ালেট ইমপ্লিমেন্টেশন এবং ইউটিলিটি অন্তর্ভুক্ত করে।_
+- [viem](https://viem.sh) – _ইথিরিয়ামের জন্য একটি টাইপস্ক্রিপ্ট ইন্টারফেস যা ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করার জন্য লো-লেভেল স্টেটলেস প্রিমিটিভ প্রদান করে।_
+- [Drift](https://ryangoree.github.io/drift/) – _ওয়েব3 লাইব্রেরিগুলো জুড়ে অনায়াসে ইথিরিয়াম ডেভেলপমেন্টের জন্য বিল্ট-ইন ক্যাশিং, হুক এবং টেস্ট মকসহ একটি টাইপস্ক্রিপ্ট মেটা-লাইব্রেরি।_
### স্মার্ট কন্ট্রাক্ট {#smart-contracts}
-আপনি যদি একজন জাভাস্ক্রিপ্ট ডেভেলপার হন এবং নিজের স্মার্ট কন্ট্র্যাক্ট লিখতে চান, তবে আপনি [Solidity](https://solidity.readthedocs.io)-এর সাথে পরিচিত হতে পারেন। এটি সবচেয়ে জনপ্রিয় স্মার্ট কন্ট্র্যাক্ট ভাষা এবং এটি সিনট্যাক্টিকভাবে জাভাস্ক্রিপ্টের অনুরূপ, যা শেখা সহজ করে তুলতে পারে।
+আপনি যদি একজন জাভাস্ক্রিপ্ট ডেভেলপার হন এবং নিজের স্মার্ট কন্ট্রাক্ট লিখতে চান, তবে আপনি [Solidity](https://solidity.readthedocs.io)-এর সাথে পরিচিত হতে চাইতে পারেন। এটি সবচেয়ে জনপ্রিয় স্মার্ট কন্ট্রাক্ট ভাষা এবং এটি সিনট্যাক্টিক্যালি জাভাস্ক্রিপ্টের মতো, যা এটি শেখা সহজ করে তুলতে পারে।
-[স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) সম্পর্কে আরও জানুন।
+[স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) সম্পর্কে আরও জানুন।
-## প্রোটোকলটি বুঝুন {#understand-the-protocol}
+## প্রটোকল বুঝুন {#understand-the-protocol}
### ইথিরিয়াম ভার্চুয়াল মেশিন {#the-ethereum-virtual-machine}
-[ইথেরিয়ামের ভার্চুয়াল মেশিনের](/developers/docs/evm/) একটি জাভাস্ক্রিপ্ট ইমপ্লিমেন্টেশন রয়েছে। এটি সর্বশেষ ফর্ক নিয়ম সমর্থন করে। ফর্ক নিয়মগুলো পরিকল্পিত আপগ্রেডের ফলে EVM-এ করা পরিবর্তনগুলিকে বোঝায়।
+[ইথিরিয়ামের ভার্চুয়াল মেশিনের](/developers/docs/evm/) একটি জাভাস্ক্রিপ্ট ইমপ্লিমেন্টেশন রয়েছে। এটি সর্বশেষ ফর্ক নিয়মগুলো সমর্থন করে। ফর্ক নিয়ম বলতে পরিকল্পিত আপগ্রেডের ফলে EVM-এ করা পরিবর্তনগুলোকে বোঝায়।
-এটি বিভিন্ন জাভাস্ক্রিপ্ট প্যাকেজে বিভক্ত যা আপনি আরও ভালোভাবে বোঝার জন্য দেখতে পারেন:
+এটি বিভিন্ন জাভাস্ক্রিপ্ট প্যাকেজে বিভক্ত করা হয়েছে যা আপনি আরও ভালোভাবে বোঝার জন্য চেক আউট করতে পারেন:
-- অ্যাকাউন্ট
-- ব্লক
+- একাউন্ট
+- ব্লকস
- ব্লকচেইন নিজেই
-- লেনদেনসমূহ
-- এবং আরও...
+- লেনদেন
+- এবং আরও অনেক কিছু...
-এটি আপনাকে "একটি অ্যাকাউন্টের ডেটা কাঠামো কী?"-এর মতো বিষয়গুলি বুঝতে সাহায্য করবে।
+এটি আপনাকে "একটি একাউন্টের ডাটা স্ট্রাকচার কী?" এর মতো বিষয়গুলো বুঝতে সাহায্য করবে।
-আপনি যদি কোড পড়তে পছন্দ করেন, তবে আমাদের ডক্স পড়ার একটি দুর্দান্ত বিকল্প হতে পারে এই জাভাস্ক্রিপ্ট।
+আপনি যদি কোড পড়তে পছন্দ করেন, তবে এই জাভাস্ক্রিপ্টটি আমাদের ডক্স পড়ার একটি দুর্দান্ত বিকল্প হতে পারে।
-**EVM দেখে নিন**
+**EVM চেক আউট করুন**
[`@ethereumjs/evm`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm)
-### নোড এবং ক্লায়েন্ট {#nodes-and-clients}
+### নোড এবং ক্লায়েন্ট {#nodes-and-clients}
-একটি Ethereumjs ক্লায়েন্ট সক্রিয় ডেভেলপমেন্টে রয়েছে যা আপনাকে আপনার বোধগম্য ভাষায়, অর্থাৎ জাভাস্ক্রিপ্টে ইথেরিয়াম ক্লায়েন্টগুলি কীভাবে কাজ করে তা খতিয়ে দেখতে দেয়!
+একটি Ethereumjs ক্লায়েন্ট সক্রিয় ডেভেলপমেন্টে রয়েছে যা আপনাকে আপনার বোধগম্য ভাষায় ইথিরিয়াম ক্লায়েন্টগুলো কীভাবে কাজ করে তা গভীরভাবে জানার সুযোগ দেয়; জাভাস্ক্রিপ্ট!
-**ক্লায়েন্টটি দেখুন**
+**ক্লায়েন্ট চেক আউট করুন**
[`@ethereumjs/client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client)
-## অন্যান্য প্রকল্প {#other-projects}
+## অন্যান্য প্রজেক্ট {#other-projects}
-ইথেরিয়াম জাভাস্ক্রিপ্টের জগতে আরও অনেক কিছু চলছে, যার মধ্যে রয়েছে:
+ইথিরিয়াম জাভাস্ক্রিপ্টের জগতে আরও অনেক কিছু ঘটছে, যার মধ্যে রয়েছে:
- ওয়ালেট ইউটিলিটির লাইব্রেরি।
-- ইথেরিয়াম কী জেনারেট, ইম্পোর্ট এবং এক্সপোর্ট করার টুলস।
-- `merkle-patricia-tree`-এর একটি ইমপ্লিমেন্টেশন – এটি একটি ডেটা কাঠামো যা ইথেরিয়াম ইয়েলো পেপারে বর্ণিত আছে।
+- ইথিরিয়াম কি (key) জেনারেট, ইমপোর্ট এবং এক্সপোর্ট করার টুল।
+- `merkle-patricia-tree`-এর একটি ইমপ্লিমেন্টেশন – ইথিরিয়াম ইয়েলো পেপারে বর্ণিত একটি ডাটা স্ট্রাকচার।
-[EthereumJS রেপোতে](https://github.com/ethereumjs) আপনার সবচেয়ে আগ্রহের বিষয়গুলো নিয়ে অনুসন্ধান করুন।
+[EthereumJS রিপো](https://github.com/ethereumjs)-তে আপনার সবচেয়ে বেশি আগ্রহের বিষয়গুলো গভীরভাবে জানুন
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/python/index.md b/public/content/translations/bn/developers/docs/programming-languages/python/index.md
index ff784fb44c4..cf8317d5c16 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/python/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/python/index.md
@@ -1,99 +1,99 @@
---
-title: "পাইথন ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "শিখুন কিভাবে পাইথন-ভিত্তিক প্রজেক্ট ও টুল ব্যবহার করে ইথেরিয়ামের জন্য ডেভেলপ করা যায়"
+title: পাইথন ডেভেলপারদের জন্য ইথিরিয়াম
+description: পাইথন-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
lang: bn
incomplete: true
---
-পাইথন-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে Ethereum-এর জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
+পাইথন-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
-ইথেরিয়াম ব্যবহার করে বিকেন্দ্রীভূত অ্যাপ্লিকেশন (বা "ড্যাপস") তৈরি করুন যেগুলো ক্রিপ্টোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলোকে কাজে লাগায়।. এই ড্যাপগুলো বিশ্বাসযোগ্য হতে পারে, অর্থাৎ এগুলোকে একবার ইথেরিয়ামে প্রয়োগ করা হয়ে গেলে, এগুলো সবসময় প্রোগ্রামড হিসেবে চলতে থাকবে।. নতুন ধরণের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদকে নিয়ন্ত্রণ করতে পারে।. এগুলো বিকেন্দ্রীভূত হতে পারে, যার মানে কোন একক সত্ত্বা বা ব্যক্তি এগুলো নিয়ন্ত্রণ করেনা এবং এগুলো সেন্সর করা প্রায় অসম্ভব।.
+ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো কাজে লাগিয়ে ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো বিশ্বস্ত হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডেপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম অনুযায়ী চলবে। নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে। এগুলো ডিসেন্ট্রালাইজড হতে পারে, যার মানে হলো কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব।
-## স্মার্ট কন্ট্র্যাক্ট এবং Solidity ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
+## স্মার্ট কন্ট্রাক্ট এবং Solidity ভাষার সাথে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
-**পাইথনের সাথে ইথেরিয়ামকে একীভূত করার জন্য প্রথম পদক্ষেপ নিন**
+**ইথিরিয়ামের সাথে পাইথন ইন্টিগ্রেট করার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক ধারণা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-- [ব্লকচেইনে পাইথনের অবস্থা ২০২৩ রিপোর্ট](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023)
+- [ব্লকচেইন ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে Solidity কম্পাইল এবং ডেপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [ব্লকচেইনে পাইথনের অবস্থা 2023 রিপোর্ট](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023)
-## নতুনদের জন্য নিবন্ধ {#beginner-articles}
+## নতুনদের জন্য আর্টিকেল {#beginner-articles}
- [web3.py ওভারভিউ](https://web3py.readthedocs.io/en/latest/overview.html)
-- [Ethereum পাইথন ইকোসিস্টেম ট্যুর](https://snakecharmers.ethereum.org/python-ecosystem/)
-- [Ethereum-এর জন্য একজন (পাইথন) ডেভেলপারের নির্দেশিকা](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/)
-- [পুরস্কার-যোগ্য: একটি Ethereum পাইথন হ্যাকাথন নির্দেশিকা](https://snakecharmers.ethereum.org/prize-worthy/)
-- [Vyper-এর সাথে স্মার্ট কন্ট্র্যাক্টের একটি ভূমিকা](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/)
-- [পাইথন ফ্লাস্ক ব্যবহার করে কীভাবে Ethereum কন্ট্র্যাক্ট ডেভেলপ করবেন?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e)
-- [Web3.py-এর ভূমিকা · পাইথন ডেভেলপারদের জন্য Ethereum](https://www.dappuniversity.com/articles/web3-py-intro)
-- [পাইথন এবং web3.py ব্যবহার করে কীভাবে একটি স্মার্ট কন্ট্র্যাক্ট ফাংশন কল করবেন](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
+- [ইথিরিয়াম পাইথন ইকোসিস্টেম ট্যুর](https://snakecharmers.ethereum.org/python-ecosystem/)
+- [ইথিরিয়ামের জন্য একজন (পাইথন) ডেভেলপারের গাইড](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/)
+- [প্রাইজ-ওয়ার্দি: একটি ইথিরিয়াম পাইথন হ্যাকাথন গাইড](https://snakecharmers.ethereum.org/prize-worthy/)
+- [Vyper-এর সাথে স্মার্ট কন্ট্রাক্টের পরিচিতি](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/)
+- [পাইথন Flask ব্যবহার করে কীভাবে ইথিরিয়াম কন্ট্রাক্ট তৈরি করবেন?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e)
+- [Web3.py পরিচিতি · পাইথন ডেভেলপারদের জন্য ইথিরিয়াম](https://www.dappuniversity.com/articles/web3-py-intro)
+- [পাইথন এবং web3.py ব্যবহার করে কীভাবে একটি স্মার্ট কন্ট্রাক্ট ফাংশন কল করবেন](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
-## মধ্যবর্তী স্তরের নিবন্ধ {#intermediate-articles}
+## মধ্যবর্তী আর্টিকেল {#intermediate-articles}
-- [web3.py-এর বন্ধুরা: Ape-এর ভূমিকা](https://snakecharmers.ethereum.org/intro-to-ape/)
+- [web3.py-এর বন্ধুরা: Ape পরিচিতি](https://snakecharmers.ethereum.org/intro-to-ape/)
- [পাইথন প্রোগ্রামারদের জন্য ডিএ্যাপ ডেভেলপমেন্ট](https://www.youtube.com/watch?v=tE-8bG35VNw)
-- [একটি পাইথন Ethereum ইন্টারফেস তৈরি করা: পর্ব ১](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d)
-- [পাইথনে Ethereum স্মার্ট কন্ট্র্যাক্ট: একটি (প্রায়) ব্যাপক নির্দেশিকা](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
+- [একটি পাইথন ইথিরিয়াম ইন্টারফেস তৈরি করা: পর্ব 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d)
+- [পাইথনে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট: একটি বিস্তারিত গাইড](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
## উন্নত ব্যবহারের প্যাটার্ন {#advanced-use-patterns}
-- [web3.py প্যাটার্নস: রিয়েল-টাইম ইভেন্ট সাবস্ক্রিপশন](https://snakecharmers.ethereum.org/subscriptions/)
-- [web3.py প্যাটার্নস: WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/)
-- [পাইথন ব্যবহার করে Ethereum স্মার্ট কন্ট্র্যাক্ট কম্পাইল, ডিপ্লয় এবং কল করা](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
-- [Slither দিয়ে Solidity স্মার্ট কন্ট্র্যাক্ট বিশ্লেষণ করুন](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
-- [ব্লকচেইন ফিনটেক টিউটোরিয়াল: পাইথন দিয়ে ঋণদান এবং ঋণগ্রহণ](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/)
+- [web3.py প্যাটার্ন: রিয়েল-টাইম ইভেন্ট সাবস্ক্রিপশন](https://snakecharmers.ethereum.org/subscriptions/)
+- [web3.py প্যাটার্ন: WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/)
+- [পাইথন ব্যবহার করে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট কম্পাইল, ডেপ্লয় এবং কল করা](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
+- [Slither-এর সাহায্যে Solidity স্মার্ট কন্ট্রাক্ট বিশ্লেষণ করুন](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
+- [ব্লকচেইন ফিনটেক টিউটোরিয়াল: পাইথনের সাহায্যে ঋণ দেওয়া এবং নেওয়া](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/)
-## আর্কাইভ করা নিবন্ধ
+## আর্কাইভ করা আর্টিকেল
-- [পাইথন এবং ব্রাউনি দিয়ে আপনার নিজস্ব ERC20 টোকেন ডিপ্লয় করুন](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58)
-- [স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করতে ব্রাউনি এবং পাইথন ব্যবহার করা](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
-- [ব্রাউনি দিয়ে OpenSea-তে NFT তৈরি করা](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/)
+- [পাইথন এবং Brownie-এর সাহায্যে আপনার নিজস্ব ERC20 টোকেন ডেপ্লয় করুন](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58)
+- [স্মার্ট কন্ট্রাক্ট ডেপ্লয় করতে Brownie এবং পাইথন ব্যবহার করা](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
+- [Brownie-এর সাহায্যে OpenSea-তে NFT তৈরি করা](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/)
## পাইথন প্রজেক্ট এবং টুলস {#python-projects-and-tools}
-### সক্রিয়: {#active}
+### সক্রিয়: {#active}
-- [Web3.py](https://github.com/ethereum/web3.py) - _Ethereum-এর সাথে ইন্টারঅ্যাক্ট করার জন্য পাইথন লাইব্রেরি_
-- [Vyper](https://github.com/ethereum/vyper/) - _EVM-এর জন্য পাইথনিক স্মার্ট কন্ট্র্যাক্ট ভাষা_
-- [Ape](https://github.com/ApeWorX/ape) - _পাইথনিস্টা, ডেটা সায়েন্টিস্ট এবং সিকিউরিটি পেশাদারদের জন্য স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্ট টুল_
-- [py-evm](https://github.com/ethereum/py-evm) - _ইথিরিয়াম ভার্চুয়াল মেশিনের বাস্তবায়ন_
-- [eth-tester](https://github.com/ethereum/eth-tester) - _Ethereum-ভিত্তিক অ্যাপ্লিকেশন পরীক্ষা করার জন্য টুলস_
-- [eth-utils](https://github.com/ethereum/eth-utils/) - _Ethereum সম্পর্কিত কোডবেসের সাথে কাজ করার জন্য ইউটিলিটি ফাংশন_
-- [py-solc-x](https://pypi.org/project/py-solc-x/) - _0.5.x সমর্থন সহ solc solidity কম্পাইলারের চারপাশে পাইথন র্যাপার_
-- [pymaker](https://github.com/makerdao/pymaker) - _মেকার কন্ট্র্যাক্টের জন্য পাইথন API_
-- [siwe](https://github.com/signinwithethereum/siwe-py) - _পাইথনের জন্য Ethereum (siwe) দিয়ে সাইন ইন করুন_
-- [Web3 DeFi for Ethereum integrations](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _ERC-20, Uniswap এবং অন্যান্য জনপ্রিয় প্রজেক্টের জন্য প্রস্তুত ইন্টিগ্রেশন সহ একটি পাইথন প্যাকেজ_
-- [Wake](https://getwake.io) - _কন্ট্র্যাক্ট টেস্টিং, ফাজিং, ডিপ্লয়মেন্ট, ভালনারেবিলিটি স্ক্যানিং এবং কোড নেভিগেশনের জন্য অল-ইন-ওয়ান পাইথন ফ্রেমওয়ার্ক (ল্যাঙ্গুয়েজ সার্ভার - [Tools for Solidity](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_
+- [Web3.py](https://github.com/ethereum/web3.py) - _ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করার জন্য পাইথন লাইব্রেরি_
+- [Vyper](https://github.com/ethereum/vyper/) - _EVM-এর জন্য পাইথনিক স্মার্ট কন্ট্রাক্ট ভাষা_
+- [Ape](https://github.com/ApeWorX/ape) - _পাইথনিস্টা, ডেটা সায়েন্টিস্ট এবং সিকিউরিটি প্রফেশনালদের জন্য স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট টুল_
+- [py-evm](https://github.com/ethereum/py-evm) - _ইথিরিয়াম ভার্চুয়াল মেশিন-এর ইমপ্লিমেন্টেশন_
+- [eth-tester](https://github.com/ethereum/eth-tester) - _ইথিরিয়াম-ভিত্তিক অ্যাপ্লিকেশন টেস্টিংয়ের টুলস_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _ইথিরিয়াম সম্পর্কিত কোডবেস নিয়ে কাজ করার জন্য ইউটিলিটি ফাংশন_
+- [py-solc-x](https://pypi.org/project/py-solc-x/) - _0.5.x সাপোর্টসহ solc solidity কম্পাইলারের জন্য পাইথন র্যাপার_
+- [pymaker](https://github.com/makerdao/pymaker) - _Maker কন্ট্রাক্টের জন্য পাইথন API_
+- [siwe](https://github.com/signinwithethereum/siwe-py) - _পাইথনের জন্য Sign in with Ethereum (siwe)_
+- [ইথিরিয়াম ইন্টিগ্রেশনের জন্য Web3 DeFi](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _ERC-20, Uniswap এবং অন্যান্য জনপ্রিয় প্রজেক্টের রেডি ইন্টিগ্রেশনসহ একটি পাইথন প্যাকেজ_
+- [Wake](https://getwake.io) - _কন্ট্রাক্ট টেস্টিং, ফাজিং, ডেপ্লয়মেন্ট, ভালনারেবিলিটি স্ক্যানিং এবং কোড নেভিগেশনের জন্য অল-ইন-ওয়ান পাইথন ফ্রেমওয়ার্ক (ল্যাঙ্গুয়েজ সার্ভার - [Tools for Solidity](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_
-### আর্কাইভ করা / আর রক্ষণাবেক্ষণ করা হয় না: {#archived--no-longer-maintained}
+### আর্কাইভ করা / আর রক্ষণাবেক্ষণ করা হয় না: {#archived--no-longer-maintained}
-- [Trinity](https://github.com/ethereum/trinity) - _Ethereum পাইথন ক্লায়েন্ট_
-- [Mamba](https://github.com/arjunaskykok/mamba) - _Vyper ভাষায় লেখা স্মার্ট কন্ট্র্যাক্ট লেখা, কম্পাইল এবং ডিপ্লয় করার ফ্রেমওয়ার্ক_
-- [Brownie](https://github.com/eth-brownie/brownie) - _Ethereum স্মার্ট কন্ট্র্যাক্ট ডিপ্লয়, পরীক্ষা এবং ইন্টারঅ্যাক্ট করার জন্য পাইথন ফ্রেমওয়ার্ক_
-- [pydevp2p](https://github.com/ethereum/pydevp2p) - _Ethereum P2P স্ট্যাকের বাস্তবায়ন_
-- [py-wasm](https://github.com/ethereum/py-wasm) - _ওয়েব অ্যাসেম্বলি ইন্টারপ্রিটারের পাইথন বাস্তবায়ন_
+- [Trinity](https://github.com/ethereum/trinity) - _ইথিরিয়াম পাইথন ক্লায়েন্ট_
+- [Mamba](https://github.com/arjunaskykok/mamba) - _Vyper ভাষায় লেখা স্মার্ট কন্ট্রাক্ট লেখা, কম্পাইল এবং ডেপ্লয় করার ফ্রেমওয়ার্ক_
+- [Brownie](https://github.com/eth-brownie/brownie) - _ইথিরিয়াম স্মার্ট কন্ট্রাক্ট ডেপ্লয়, টেস্ট এবং ইন্টারঅ্যাক্ট করার জন্য পাইথন ফ্রেমওয়ার্ক_
+- [pydevp2p](https://github.com/ethereum/pydevp2p) - _ইথিরিয়াম P2P স্ট্যাকের ইমপ্লিমেন্টেশন_
+- [py-wasm](https://github.com/ethereum/py-wasm) - _ওয়েব অ্যাসেম্বলি ইন্টারপ্রেটারের পাইথন ইমপ্লিমেন্টেশন_
-আরও সংস্থান খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন।
+আরও রিসোর্স খুঁজছেন? [ethereum.org/developers](/developers/) দেখুন।
-## পাইথন টুলিং ব্যবহারকারী প্রজেক্ট {#projects-using-python-tooling}
+## পাইথন টুলিং ব্যবহার করা প্রজেক্ট {#projects-using-python-tooling}
-নিম্নলিখিত Ethereum-ভিত্তিক প্রজেক্টগুলি এই পৃষ্ঠায় উল্লিখিত টুলস ব্যবহার করে। সম্পর্কিত ওপেন-সোর্স রিপোজিটরিগুলি উদাহরণ কোড এবং সেরা অনুশীলনের জন্য একটি ভাল রেফারেন্স হিসাবে কাজ করে।
+নিচের ইথিরিয়াম-ভিত্তিক প্রজেক্টগুলো এই পেজে উল্লেখিত টুলস ব্যবহার করে। সম্পর্কিত ওপেন-সোর্স রিপোজিটরিগুলো উদাহরণ কোড এবং সেরা অনুশীলনের জন্য একটি ভালো রেফারেন্স হিসেবে কাজ করে।
- [Yearn Finance](https://yearn.finance/) এবং [Yearn Vault Contracts রিপোজিটরি](https://github.com/yearn/yearn-vaults)
-- [Curve](https://www.curve.finance/) এবং [Curve স্মার্ট কন্ট্র্যাক্ট রিপোজিটরি](https://github.com/curvefi/curve-contract)
-- [BadgerDAO](https://badger.com/) এবং [Brownie টুলচেইন ব্যবহারকারী স্মার্ট কন্ট্র্যাক্ট](https://github.com/Badger-Finance/badger-system)
-- [Sushi](https://sushi.com/) তাদের ভেস্টিং চুক্তিগুলি পরিচালনা এবং ডিপ্লয় করার জন্য [পাইথন ব্যবহার করে](https://github.com/sushiswap/sushi-vesting-protocols)
-- [Alpha Venture DAO](https://alphaventuredao.io/), যা Alpha Homora-এর জন্য বিখ্যাত, [স্মার্ট কন্ট্র্যাক্ট পরীক্ষা এবং ডিপ্লয় করতে Brownie ব্যবহার করে](https://github.com/AlphaFinanceLab/alpha-staking-contract)
+- [Curve](https://www.curve.finance/) এবং [Curve স্মার্ট কন্ট্রাক্ট রিপোজিটরি](https://github.com/curvefi/curve-contract)
+- [BadgerDAO](https://badger.com/) এবং [Brownie টুলচেইন ব্যবহার করা স্মার্ট কন্ট্রাক্ট](https://github.com/Badger-Finance/badger-system)
+- [Sushi](https://sushi.com/) তাদের [ভেস্টিং কন্ট্রাক্ট পরিচালনা এবং ডেপ্লয় করতে পাইথন](https://github.com/sushiswap/sushi-vesting-protocols) ব্যবহার করে
+- Alpha Homora-এর জন্য বিখ্যাত [Alpha Finance](https://alphaventuredao.io/), [স্মার্ট কন্ট্রাক্ট টেস্ট এবং ডেপ্লয় করতে Brownie](https://github.com/AlphaFinanceLab/alpha-staking-contract) ব্যবহার করে
## পাইথন কমিউনিটি আলোচনা {#python-community-contributors}
-- Web3.py এবং অন্যান্য পাইথন ফ্রেমওয়ার্ক আলোচনার জন্য [Ethereum পাইথন কমিউনিটি ডিসকর্ড](https://discord.gg/9zk7snTfWe)
-- Vyper স্মার্ট কন্ট্র্যাক্ট প্রোগ্রামিং আলোচনার জন্য [Vyper ডিসকর্ড](https://discord.gg/SdvKC79cJk)
+- Web3.py এবং অন্যান্য পাইথন ফ্রেমওয়ার্ক আলোচনার জন্য [ইথিরিয়াম পাইথন কমিউনিটি ডিসকর্ড](https://discord.gg/9zk7snTfWe)
+- Vyper স্মার্ট কন্ট্রাক্ট প্রোগ্রামিং আলোচনার জন্য [Vyper ডিসকর্ড](https://discord.gg/SdvKC79cJk)
## অন্যান্য একত্রিত তালিকা {#other-aggregated-lists}
-Vyper উইকিতে Vyper-এর জন্য [রিসোর্সের একটি অবিশ্বাস্য তালিকা](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) রয়েছে
\ No newline at end of file
+Vyper উইকিতে [Vyper-এর জন্য রিসোর্সের একটি চমৎকার তালিকা](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) রয়েছে
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/ruby/index.md b/public/content/translations/bn/developers/docs/programming-languages/ruby/index.md
index c7b657121c9..6731965d11b 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/ruby/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/ruby/index.md
@@ -1,60 +1,60 @@
---
-title: "রুবি ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "রুবি-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে কীভাবে ইথেরিয়ামের জন্য ডেভেলপ করতে হয় তা শিখুন।"
+title: রুবি ডেভেলপারদের জন্য ইথিরিয়াম
+description: রুবি-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন।
lang: bn
incomplete: false
---
-রুবি-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে কীভাবে ইথেরিয়ামের জন্য ডেভেলপ করতে হয় তা শিখুন।
+রুবি-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন।
-ইথেরিয়াম ব্যবহার করে বিকেন্দ্রীভূত অ্যাপ্লিকেশন (বা "ড্যাপস") তৈরি করুন যেগুলো ক্রিপ্টোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলোকে কাজে লাগায়।. এই ডিএ্যাপসগুলো ট্রাস্টলেস হতে পারে, যার মানে হলো একবার এগুলো ইথেরিয়ামে ডেপ্লয় করা হয়ে গেলে, এগুলো সর্বদা প্রোগ্রাম অনুযায়ী চলবে। তারা নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করতে ডিজিটাল অ্যাসেট নিয়ন্ত্রণ করতে পারে। এগুলো বিকেন্দ্রীভূত হতে পারে, যার মানে কোন একক সত্ত্বা বা ব্যক্তি এগুলো নিয়ন্ত্রণ করেনা এবং এগুলো সেন্সর করা প্রায় অসম্ভব।.
+ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো ব্যবহার করে এমন ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো ট্রাস্টলেস হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডিপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম অনুযায়ী চলবে। এগুলো নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করতে ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে। এগুলো ডিসেন্ট্রালাইজড হতে পারে, যার মানে হলো কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব।
-## স্মার্ট কন্ট্র্যাক্ট এবং Solidity ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
+## স্মার্ট কন্ট্রাক্ট এবং Solidity ভাষার সাথে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
-**রুবি-এর সাথে ইথেরিয়ামকে একীভূত করার জন্য প্রথম পদক্ষেপ নিন**
+**ইথিরিয়ামের সাথে রুবিকে ইন্টিগ্রেট করার জন্য আপনার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক নির্দেশিকা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [ব্লকচেইন ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-## নতুনদের জন্য নিবন্ধ {#beginner-articles}
+## নতুনদের জন্য আর্টিকেল {#beginner-articles}
-- [অবশেষে ইথেরিয়াম অ্যাকাউন্ট বোঝা](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
-- [অবশেষে MetaMask-এর সাথে Rails ব্যবহারকারীদের প্রমাণীকরণ](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj)
-- [রুবি ব্যবহার করে কীভাবে ইথেরিয়াম নেটওয়ার্কের সাথে সংযোগ স্থাপন করবেন](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby)
-- [রুবি-তে কীভাবে একটি নতুন ইথেরিয়াম অ্যাড্রেস তৈরি করবেন](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby)
+- [অবশেষে ইথিরিয়াম একাউন্ট বোঝা](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [অবশেষে MetaMask-এর মাধ্যমে Rails ব্যবহারকারীদের প্রমাণীকরণ করা](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj)
+- [রুবির মাধ্যমে কীভাবে ইথিরিয়াম নেটওয়ার্ক-এর সাথে কানেক্ট করবেন](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby)
+- [রুবির মাধ্যমে কীভাবে একটি নতুন ইথিরিয়াম এডড্রেস তৈরি করবেন](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby)
-## মধ্যবর্তী স্তরের নিবন্ধ {#intermediate-articles}
+## মধ্যবর্তী আর্টিকেল {#intermediate-articles}
-- [রুবি সহ ব্লকচেইন অ্যাপ](https://www.nopio.com/blog/blockchain-app-ruby/)
-- [স্মার্ট কন্ট্র্যাক্ট এক্সিকিউট করতে ইথেরিয়ামের সাথে সংযুক্ত রুবি ব্যবহার করুন](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9)
+- [রুবির সাথে ব্লকচেইন অ্যাপ](https://www.nopio.com/blog/blockchain-app-ruby/)
+- [স্মার্ট কন্ট্রাক্ট এক্সিকিউট করতে ইথিরিয়ামের সাথে কানেক্টেড রুবি ব্যবহার করুন](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9)
## রুবি প্রজেক্ট এবং টুলস {#ruby-projects-and-tools}
### সক্রিয় {#active}
-- [eth.rb](https://github.com/q9f/eth.rb) - _ইথেরিয়াম অ্যাকাউন্ট, মেসেজ এবং ট্রানজ্যাকশন পরিচালনা করার জন্য রুবি লাইব্রেরি এবং RPC-ক্লায়েন্ট_
-- [keccak.rb](https://github.com/q9f/keccak.rb) - _ইথেরিয়াম দ্বারা ব্যবহৃত Keccak (SHA3) হ্যাস_
-- [siwe-ruby](https://github.com/signinwithethereum/siwe-ruby) - _Sign-In with Ethereum-এর রুবি ইমপ্লিমেন্টেশন_
-- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _রেলস জেম যা SIWE লোকাল সাইন ইন রুট যোগ করে_
-- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _কাস্টম কন্ট্রোলারের সাথে রুবি অন রেলস ব্যবহার করে SIWE-এর উদাহরণ_
-- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _সাইন ইন উইথ ইথেরিয়াম (SIWE)-এর জন্য OmniAuth কৌশল_
+- [eth.rb](https://github.com/q9f/eth.rb) - _ইথিরিয়াম একাউন্ট, মেসেজ এবং লেনদেন পরিচালনা করার জন্য রুবি লাইব্রেরি এবং RPC-ক্লায়েন্ট_
+- [keccak.rb](https://github.com/q9f/keccak.rb) - _ইথিরিয়াম দ্বারা ব্যবহৃত Keccak (SHA3) হ্যাস_
+- [siwe-ruby](https://github.com/signinwithethereum/siwe-ruby) - _ইথিরিয়ামের সাথে সাইন-ইন এর রুবি ইমপ্লিমেন্টেশন_
+- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _Rails জেম যা SIWE লোকাল সাইন ইন রুট যোগ করে_
+- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _কাস্টম কন্ট্রোলারের সাথে Ruby on Rails ব্যবহার করে SIWE উদাহরণ_
+- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _ইথিরিয়ামের সাথে সাইন ইন (SIWE) এর জন্য OmniAuth কৌশল_
- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _NFT মালিকানার মাধ্যমে প্রমাণীকরণের জন্য OmniAuth কৌশল_
-- [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails) - _ইথেরিয়াম অন রেলস টেমপ্লেট যা রুবি অন রেলস-এর সাথে MetaMask সংযোগ করার অনুমতি দেয়_
+- [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails) - _Ethereum on Rails টেমপ্লেট যা MetaMask-কে Ruby on Rails-এর সাথে কানেক্ট করার অনুমতি দেয়_
-### আর্কাইভ করা / আর রক্ষণাবেক্ষণ করা হয় না {#archived--no-longer-maintained}
+### আর্কাইভ করা / আর রক্ষণাবেক্ষণ করা হয় না {#archived--no-longer-maintained}
-- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _রুবি সহ ইথেরিয়াম নোডের RPC মেথড কল করা_
-- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _BIP32 স্ট্যান্ডার্ড অনুসারে একটি হায়ারারকিকাল ডিটারমিনিস্টিক ওয়ালেট থেকে ETH অ্যাড্রেস তৈরি করার জন্য রুবি লাইব্রেরি_
-- [etherlite](https://github.com/budacom/etherlite) - _রুবি অন রেলসের জন্য ইথেরিয়াম ইন্টিগ্রেশন_
-- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _ট্রানজ্যাকশন পাঠানো, কন্ট্র্যাক্ট তৈরি এবং তার সাথে ইন্টারঅ্যাক্ট করার জন্য JSON-RPC ইন্টারফেস ব্যবহার করে রুবি ইথেরিয়াম ক্লায়েন্ট এবং ইথেরিয়াম নোডের সাথে কাজ করার জন্য দরকারী টুলকিট_
-- [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _OmniAuth-এর জন্য ইথেরিয়াম প্রোভাইডার কৌশল প্রয়োগ করে_
+- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _রুবির মাধ্যমে ইথিরিয়াম নোড-এর RPC মেথড কল করা_
+- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _BIP32 স্ট্যান্ডার্ড অনুযায়ী একটি হায়ারার্কিক্যাল ডিটারমিনিস্টিক ওয়ালেট থেকে ETH এডড্রেস তৈরি করার রুবি লাইব্রেরি_
+- [etherlite](https://github.com/budacom/etherlite) - _Ruby on Rails-এর জন্য ইথিরিয়াম ইন্টিগ্রেশন_
+- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _লেনদেন পাঠানো, কন্ট্রাক্ট তৈরি এবং ইন্টারঅ্যাক্ট করার জন্য JSON-RPC ইন্টারফেস ব্যবহার করে রুবি ইথিরিয়াম ক্লায়েন্ট, সেইসাথে ইথিরিয়াম নোড-এর সাথে কাজ করার জন্য দরকারী টুলকিট_
+- [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _OmniAuth-এর জন্য ইথিরিয়াম প্রোভাইডার কৌশল ইমপ্লিমেন্ট করে_
-আরও সংস্থান খুঁজছেন? আমাদের [ডেভেলপারদের হোম](/developers/) দেখুন।
+আরও রিসোর্স খুঁজছেন? [আমাদের ডেভেলপারদের হোম](/developers/) দেখুন।
## রুবি কমিউনিটির অবদানকারীগণ {#ruby-community-contributors}
-[ইথেরিয়াম রুবি টেলিগ্রাম গ্রুপ](https://t.me/ruby_eth) একটি দ্রুত বর্ধনশীল সম্প্রদায়ের হোস্ট এবং এটি উপরের যেকোনো প্রজেক্ট এবং সম্পর্কিত বিষয় নিয়ে আলোচনার জন্য নিবেদিত রিসোর্স।
+[ইথিরিয়াম রুবি টেলিগ্রাম গ্রুপ](https://t.me/ruby_eth) হলো একটি দ্রুত বর্ধনশীল কমিউনিটির হোস্ট এবং এটি উপরের যেকোনো প্রজেক্ট এবং সম্পর্কিত বিষয় নিয়ে আলোচনার জন্য একটি ডেডিকেটেড রিসোর্স।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/programming-languages/rust/index.md b/public/content/translations/bn/developers/docs/programming-languages/rust/index.md
index e0fb7b950c8..bdbc78b3a34 100644
--- a/public/content/translations/bn/developers/docs/programming-languages/rust/index.md
+++ b/public/content/translations/bn/developers/docs/programming-languages/rust/index.md
@@ -1,65 +1,63 @@
---
-title: "রাস্ট ডেভেলপারদের জন্য ইথেরিয়াম"
-description: "শিখুন কীভাবে রাস্ট-ভিত্তিক প্রজেক্ট ও টুল ব্যবহার করে ইথেরিয়ামের জন্য ডেভেলপ করা যায়"
+title: রাস্ট ডেভেলপারদের জন্য ইথিরিয়াম
+description: রাস্ট-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
lang: bn
incomplete: true
---
-রাস্ট-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথেরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
+রাস্ট-ভিত্তিক প্রজেক্ট এবং টুলিং ব্যবহার করে ইথিরিয়ামের জন্য কীভাবে ডেভেলপ করতে হয় তা শিখুন
-ইথেরিয়াম ব্যবহার করে বিকেন্দ্রীভূত অ্যাপ্লিকেশন (বা "ড্যাপস") তৈরি করুন যেগুলো ক্রিপ্টোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলোকে কাজে লাগায়।. এই ড্যাপগুলো বিশ্বাসযোগ্য হতে পারে, অর্থাৎ এগুলোকে একবার ইথেরিয়ামে প্রয়োগ করা হয়ে গেলে, এগুলো সবসময় প্রোগ্রামড হিসেবে চলতে থাকবে।. নতুন ধরণের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদকে নিয়ন্ত্রণ করতে পারে।. এগুলো বিকেন্দ্রীভূত হতে পারে, যার মানে কোন একক সত্ত্বা বা ব্যক্তি এগুলো নিয়ন্ত্রণ করেনা এবং এগুলো সেন্সর করা প্রায় অসম্ভব।.
+ক্রিপটোকারেন্সি এবং ব্লকচেইন প্রযুক্তির সুবিধাগুলো কাজে লাগিয়ে ডিসেন্ট্রালাইজড এপ্লিকেশন (বা "ডিএ্যাপস") তৈরি করতে ইথিরিয়াম ব্যবহার করুন। এই ডিএ্যাপসগুলো বিশ্বস্ত হতে পারে, যার মানে হলো একবার ইথিরিয়ামে ডেপ্লয় করা হলে, এগুলো সবসময় প্রোগ্রাম অনুযায়ী চলবে। নতুন ধরনের আর্থিক অ্যাপ্লিকেশন তৈরি করার জন্য এগুলো ডিজিটাল সম্পদ নিয়ন্ত্রণ করতে পারে। এগুলো ডিসেন্ট্রালাইজড হতে পারে, যার মানে হলো কোনো একক সত্তা বা ব্যক্তি এগুলোকে নিয়ন্ত্রণ করে না এবং এগুলো সেন্সর করা প্রায় অসম্ভব।
-## স্মার্ট কন্ট্র্যাক্ট এবং Solidity ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
+## স্মার্ট কন্ট্রাক্ট এবং সলিডিটি (Solidity) ভাষা দিয়ে শুরু করা {#getting-started-with-smart-contracts-and-solidity}
-**রাস্ট-এর সাথে ইথেরিয়ামকে একীভূত করার জন্য প্রথম পদক্ষেপ নিন**
+**ইথিরিয়ামের সাথে রাস্ট (Rust) ইন্টিগ্রেট করার প্রথম পদক্ষেপ নিন**
-একদম প্রথম থেকে শুরু করতে চান ? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
+প্রথমে আরও প্রাথমিক ধারণা প্রয়োজন? [ethereum.org/learn](/learn/) বা [ethereum.org/developers](/developers/) দেখুন।
-- [ব্লকচেইনের ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [স্মার্ট কন্ট্র্যাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্টটি লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
-- [কীভাবে Solidity কম্পাইল এবং ডিপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [ব্লকচেইন ব্যাখ্যা](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [স্মার্ট কন্ট্রাক্ট বোঝা](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট লিখুন](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [কীভাবে সলিডিটি (Solidity) কম্পাইল এবং ডেপ্লয় করতে হয় তা শিখুন](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
-## নতুনদের জন্য নিবন্ধ {#beginner-articles}
+## নতুনদের জন্য আর্টিকেল {#beginner-articles}
-- [The Rust Ethereum Client](https://openethereum.github.io/) \* **দ্রষ্টব্য যে OpenEthereum [ডেপ্রিকেটেড হয়ে গেছে](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) এবং এটি আর রক্ষণাবেক্ষণ করা হচ্ছে না।** এটি সতর্কতার সাথে ব্যবহার করুন এবং অন্য কোনো ক্লায়েন্ট ইমপ্লিমেন্টেশনে স্যুইচ করা শ্রেয়।
-- [রাস্ট ব্যবহার করে ইথেরিয়ামে লেনদেন পাঠানো](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/)
-- [কোভান-এর জন্য রাস্ট Wasm-এ কীভাবে কন্ট্র্যাক্ট লিখতে হয় তার একটি ধাপে ধাপে নির্দেশিকা](https://github.com/paritytech/pwasm-tutorial)
+- [দ্য রাস্ট ইথিরিয়াম ক্লায়েন্ট](https://openethereum.github.io/) \* **মনে রাখবেন যে OpenEthereum [বাতিল করা হয়েছে](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) এবং এটি আর রক্ষণাবেক্ষণ করা হচ্ছে না।** এটি সতর্কতার সাথে ব্যবহার করুন এবং অন্য কোনো ক্লায়েন্ট ইমপ্লিমেন্টেশনে চলে যাওয়া ভালো।
+- [রাস্ট ব্যবহার করে ইথিরিয়ামে লেনদেন পাঠানো](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/)
+- [কোভানের (Kovan) জন্য রাস্ট Wasm-এ কীভাবে কন্ট্রাক্ট লিখতে হয় তার ধাপে ধাপে টিউটোরিয়াল](https://github.com/paritytech/pwasm-tutorial)
-## মধ্যবর্তী স্তরের নিবন্ধ {#intermediate-articles}
+## মধ্যম স্তরের আর্টিকেল {#intermediate-articles}
## উন্নত ব্যবহারের প্যাটার্ন {#advanced-use-patterns}
-- [ইথেরিয়ামের মতো নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করার জন্য pwasm_ethereum externs লাইব্রেরি](https://github.com/openethereum/pwasm-ethereum)
-
+- [ইথিরিয়ামের মতো নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করার জন্য pwasm_ethereum এক্সটার্নস লাইব্রেরি](https://github.com/openethereum/pwasm-ethereum)
- [জাভাস্ক্রিপ্ট এবং রাস্ট ব্যবহার করে একটি ডিসেন্ট্রালাইজড চ্যাট তৈরি করুন](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52)
+- [Vue.js এবং রাস্ট ব্যবহার করে একটি ডিসেন্ট্রালাইজড টুডু (Todo) অ্যাপ তৈরি করুন](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb)
-- [Vue.js এবং রাস্ট ব্যবহার করে একটি ডিসেন্ট্রালাইজড টুডু অ্যাপ তৈরি করুন](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb)
-
-- [রাস্ট-এ একটি ব্লকচেইন তৈরি করুন](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/)
+- [রাস্টে একটি ব্লকচেইন তৈরি করুন](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/)
## রাস্ট প্রজেক্ট এবং টুলস {#rust-projects-and-tools}
-- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _ইথেরিয়ামের মতো নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করার জন্য externs-এর সংগ্রহ_
-- [Lighthouse](https://github.com/sigp/lighthouse) - _দ্রুত ইথেরিয়াম কনসেন্সাস লেয়ার ক্লায়েন্ট_
-- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _WebAssembly-এর একটি ডিটারমিনিস্টিক সাবসেট ব্যবহার করে ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট এক্সিকিউশন লেয়ারের প্রস্তাবিত পুনঃনকশা_
+- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _ইথিরিয়ামের মতো নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করার জন্য এক্সটার্নসের সংগ্রহ_
+- [Lighthouse](https://github.com/sigp/lighthouse) - _দ্রুত ইথিরিয়াম কনসেন্সাস লেয়ার ক্লায়েন্ট_
+- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _WebAssembly-এর একটি ডিটারমিনিস্টিক সাবসেট ব্যবহার করে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট এক্সিকিউশন লেয়ার-এর প্রস্তাবিত রিডিজাইন_
- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS API রেফারেন্স_
-- [Solaris](https://github.com/paritytech/sol-rs) - _নেটিভ প্যারিটি ক্লায়েন্ট EVM ব্যবহার করে সলিডিটি স্মার্ট কন্ট্র্যাক্টের ইউনিট টেস্ট হারনেস।_
-- [SputnikVM](https://github.com/rust-blockchain/evm) - _রাস্ট ইথেরিয়াম ভার্চুয়াল মেশিন ইমপ্লিমেন্টেশন_
-- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _রাস্ট-এ ওয়েভলেট স্মার্ট কন্ট্র্যাক্ট_
-- [Foundry](https://github.com/foundry-rs/foundry) - _ইথেরিয়াম অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য টুলকিট_
-- [Alloy](https://alloy.rs) - _ইথেরিয়াম এবং অন্যান্য EVM-ভিত্তিক চেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য উচ্চ-পারফরম্যান্স, সু-পরীক্ষিত ও ডকুমেন্টেড লাইব্রেরি।_
-- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _ইথেরিয়াম লাইব্রেরি এবং ওয়ালেট ইমপ্লিমেন্টেশন_
-- [SewUp](https://github.com/second-state/SewUp) - _একটি লাইব্রেরি যা আপনাকে রাস্টের সাহায্যে আপনার ইথেরিয়াম ওয়েব অ্যাসেম্বলি চুক্তি তৈরি করতে সাহায্য করে এবং এটি একটি সাধারণ ব্যাকএন্ডে ডেভেলপ করার মতোই_
-- [Substreams](https://github.com/streamingfast/substreams) - _সমান্তরাল ব্লকচেইন ডেটা ইন্ডেক্সিং প্রযুক্তি_
-- [Reth](https://github.com/paradigmxyz/reth) Reth (রাস্ট ইথেরিয়ামের সংক্ষিপ্ত রূপ) একটি নতুন ইথেরিয়াম ফুল-নোড ইমপ্লিমেন্টেশন
-- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _ইথেরিয়াম ইকোসিস্টেমে রাস্ট-এ লেখা প্রজেক্টগুলির একটি কিউরেটেড সংগ্রহ_
+- [Solaris](https://github.com/paritytech/sol-rs) - _নেটিভ প্যারিটি ক্লায়েন্ট EVM ব্যবহার করে সলিডিটি স্মার্ট কন্ট্রাক্ট ইউনিট টেস্ট হারনেস।_
+- [SputnikVM](https://github.com/rust-blockchain/evm) - _রাস্ট ইথিরিয়াম ভার্চুয়াল মেশিন ইমপ্লিমেন্টেশন_
+- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _রাস্টে ওয়েভলেট (Wavelet) স্মার্ট কন্ট্রাক্ট_
+- [Foundry](https://github.com/foundry-rs/foundry) - _ইথিরিয়াম অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য টুলকিট_
+- [Alloy](https://alloy.rs) - _ইথিরিয়াম এবং অন্যান্য EVM-ভিত্তিক চেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য উচ্চ-পারফরম্যান্স, সু-পরীক্ষিত এবং ডকুমেন্টেড লাইব্রেরি।_
+- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _ইথিরিয়াম লাইব্রেরি এবং ওয়ালেট ইমপ্লিমেন্টেশন_
+- [SewUp](https://github.com/second-state/SewUp) - _রাস্টের সাহায্যে আপনার ইথিরিয়াম ওয়েবঅ্যাসেম্বলি কন্ট্রাক্ট তৈরি করতে এবং সাধারণ ব্যাকএন্ডের মতো ডেভেলপ করতে সাহায্য করার জন্য একটি লাইব্রেরি_
+- [Substreams](https://github.com/streamingfast/substreams) - _প্যারালালাইজড ব্লকচেইন ডেটা ইনডেক্সিং প্রযুক্তি_
+- [Reth](https://github.com/paradigmxyz/reth) Reth (রাস্ট ইথিরিয়ামের সংক্ষিপ্ত রূপ) হলো একটি নতুন ইথিরিয়াম ফুল-নোড ইমপ্লিমেন্টেশন
+- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _রাস্টে লেখা ইথিরিয়াম ইকোসিস্টেমের প্রজেক্টগুলোর একটি কিউরেটেড সংগ্রহ_
-আরও সংস্থান খুঁজছেন? [ethereum.org/developers.](/developers/) দেখুন।
+আরও রিসোর্স খুঁজছেন? [ethereum.org/developers.](/developers/) দেখুন।
-## রাস্ট কমিউনিটি অবদানকারী {#rust-community-contributors}
+## রাস্ট কমিউনিটি কন্ট্রিবিউটর {#rust-community-contributors}
- [Ethereum WebAssembly](https://gitter.im/ewasm/Lobby)
- [Oasis Gitter](https://gitter.im/Oasis-official/Lobby)
- [Parity Gitter](https://gitter.im/paritytech/parity)
-- [Enigma](https://discord.gg/SJK32GY)
+- [Enigma](https://discord.gg/SJK32GY)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/scaling/index.md b/public/content/translations/bn/developers/docs/scaling/index.md
index 25b432837f4..e5a8d7f5ece 100644
--- a/public/content/translations/bn/developers/docs/scaling/index.md
+++ b/public/content/translations/bn/developers/docs/scaling/index.md
@@ -1,113 +1,118 @@
---
-title: "স্কেলিং"
-description: "ইথেরিয়াম কমিউনিটির দ্বারা বর্তমানে তৈরি করা বিভিন্ন স্কেলিং বিকল্পগুলির একটি ভূমিকা।"
+title: স্কেলিং
+description: ইথিরিয়াম কমিউনিটি দ্বারা বর্তমানে ডেভেলপ করা বিভিন্ন স্কেলিং বিকল্পের একটি পরিচিতি।
lang: bn
sidebarDepth: 3
---
## স্কেলিং ওভারভিউ {#scaling-overview}
-যেহেতু ইথেরিয়াম ব্যবহারকারীর সংখ্যা বৃদ্ধি পেয়েছে, তাই ব্লকচেইনটি নির্দিষ্ট ক্ষমতার সীমাবদ্ধতায় পৌঁছেছে। এটি নেটওয়ার্ক ব্যবহারের খরচ বাড়িয়েছে, যার ফলে "স্কেলিং সমাধান"-এর প্রয়োজন তৈরি হয়েছে। একাধিক সমাধান নিয়ে গবেষণা, পরীক্ষা এবং প্রয়োগ করা হচ্ছে যা একই ধরনের লক্ষ্য অর্জনের জন্য বিভিন্ন পদ্ধতি গ্রহণ করে।
+[Ethereum](/) ব্যবহারকারীর সংখ্যা বাড়ার সাথে সাথে, ব্লকচেইন কিছু নির্দিষ্ট ধারণক্ষমতার সীমায় পৌঁছেছে। এটি নেটওয়ার্ক ব্যবহারের খরচ বাড়িয়ে দিয়েছে, যার ফলে "স্কেলিং সলিউশন" এর প্রয়োজনীয়তা তৈরি হয়েছে। একই লক্ষ্য অর্জনের জন্য বিভিন্ন পদ্ধতি গ্রহণ করে এমন একাধিক সলিউশন নিয়ে গবেষণা, পরীক্ষা এবং বাস্তবায়ন করা হচ্ছে।
-স্কেলেবিলিটির মূল লক্ষ্য হল বিকেন্দ্রীকরণ বা নিরাপত্তা বিসর্জন না দিয়ে লেনদেনের গতি (দ্রুত ফাইনালিটি) এবং লেনদেনের থ্রুপুট (প্রতি সেকেন্ডে উচ্চ সংখ্যক লেনদেন) বৃদ্ধি করা। লেয়ার 1 ইথেরিয়াম ব্লকচেইনে, উচ্চ চাহিদার কারণে লেনদেন ধীরগতির হয় এবং [গ্যাস মূল্য](/developers/docs/gas/) অকার্যকর হয়ে পড়ে। গতি এবং থ্রুপুটের দিক থেকে নেটওয়ার্কের ক্ষমতা বৃদ্ধি করা ইথেরিয়ামের অর্থপূর্ণ এবং ব্যাপক গ্রহণের জন্য অপরিহার্য।
+স্কেলেবিলিটির মূল লক্ষ্য হলো ডিসেন্ট্রালাইজেশন বা নিরাপত্তা বিসর্জন না দিয়ে লেনদেন এর গতি (দ্রুততর ফাইনালিটি) এবং লেনদেন থ্রুপুট (প্রতি সেকেন্ডে অধিক সংখ্যক লেনদেন) বৃদ্ধি করা। লেয়ার 1 ইথিরিয়াম ব্লকচেইন-এ, উচ্চ চাহিদার কারণে লেনদেন ধীর হয়ে যায় এবং অবাস্তব [গ্যাস প্রাইস](/developers/docs/gas/) তৈরি হয়। গতি এবং থ্রুপুটের দিক থেকে নেটওয়ার্ক ক্যাপাসিটি বৃদ্ধি করা ইথিরিয়ামের অর্থবহ এবং ব্যাপক গ্রহণের জন্য অপরিহার্য।
-গতি এবং থ্রুপুট গুরুত্বপূর্ণ হলেও, এটি অপরিহার্য যে এই লক্ষ্যগুলি সক্ষমকারী স্কেলিং সমাধানগুলি বিকেন্দ্রীভূত এবং নিরাপদ থাকে। নোড অপারেটরদের জন্য প্রবেশের বাধা কম রাখা কেন্দ্রীভূত এবং অনিরাপদ কম্পিউটিং শক্তির দিকে অগ্রগতি রোধ করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
+যদিও গতি এবং থ্রুপুট গুরুত্বপূর্ণ, তবে এটি অপরিহার্য যে এই লক্ষ্যগুলো অর্জনকারী স্কেলিং সলিউশনগুলো ডিসেন্ট্রালাইজড এবং সুরক্ষিত থাকে। নোড অপারেটরদের জন্য প্রবেশের বাধা কম রাখা সেন্ট্রালাইজড এবং অনিরাপদ কম্পিউটিং পাওয়ারের দিকে অগ্রসর হওয়া রোধ করতে অত্যন্ত গুরুত্বপূর্ণ।
-ধারণাগতভাবে আমরা প্রথমে স্কেলিংকে অনচেইন স্কেলিং বা অফচেইন স্কেলিং হিসাবে শ্রেণীবদ্ধ করি।
+ধারণাগতভাবে আমরা প্রথমে স্কেলিং-কে অনচেইন স্কেলিং বা অফচেইন স্কেলিং হিসেবে শ্রেণীবদ্ধ করি।
## পূর্বশর্ত {#prerequisites}
-আপনার সমস্ত foundational বিষয় সম্পর্কে একটি ভাল ধারণা থাকা উচিত। স্কেলিং সমাধানগুলি প্রয়োগ করা একটি উন্নত বিষয় কারণ প্রযুক্তিটি কম পরীক্ষিত এবং এটি নিয়ে গবেষণা ও উন্নয়ন অব্যাহত রয়েছে।
+আপনার সমস্ত মৌলিক বিষয় সম্পর্কে ভালো ধারণা থাকা উচিত। স্কেলিং সলিউশন বাস্তবায়ন করা একটি উন্নত বিষয় কারণ এই প্রযুক্তিটি কম পরীক্ষিত, এবং এটি নিয়ে ক্রমাগত গবেষণা ও উন্নয়ন চলছে।
## অনচেইন স্কেলিং {#onchain-scaling}
-অনচেইন স্কেলিংয়ের জন্য ইথেরিয়াম প্রোটোকলে (লেয়ার 1 [মেইননেট](/glossary/#mainnet)) পরিবর্তন প্রয়োজন। অনেক দিন ধরেই, ব্লকচেইন শার্ডিং ইথেরিয়ামকে স্কেল করবে বলে আশা করা হয়েছিল। এতে ভ্যালিডেটরদের উপসেট দ্বারা যাচাই করার জন্য ব্লকচেইনকে আলাদা খণ্ডে (শার্ড) বিভক্ত করার বিষয়টি জড়িত ছিল। তবে, লেয়ার-2 রোলআপের মাধ্যমে স্কেলিং প্রাথমিক স্কেলিং কৌশল হিসাবে স্থান করে নিয়েছে। এটি ইথেরিয়াম ব্লকের সাথে সংযুক্ত ডেটার একটি নতুন সস্তা ফর্মের সংযোজন দ্বারা সমর্থিত যা ব্যবহারকারীদের জন্য রোলআপগুলিকে সস্তা করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
+অনচেইন স্কেলিং-এর জন্য ইথিরিয়াম প্রটোকল (লেয়ার 1 [মেইননেট](/glossary/#mainnet))-এ পরিবর্তনের প্রয়োজন হয়। দীর্ঘকাল ধরে, ব্লকচেইন শার্ডিং ইথিরিয়ামকে স্কেল করবে বলে আশা করা হয়েছিল। এর মধ্যে ব্লকচেইন-কে আলাদা অংশে (শার্ড) বিভক্ত করা অন্তর্ভুক্ত ছিল যা ভ্যালিডেটরস-এর সাবসেট দ্বারা যাচাই করা হবে। তবে, লেয়ার 2 রেলআপস দ্বারা স্কেলিং প্রাথমিক স্কেলিং কৌশল হিসেবে জায়গা করে নিয়েছে। এটি ইথিরিয়াম ব্লকস-এর সাথে যুক্ত একটি নতুন সস্তা ডেটা ফর্মের সংযোজন দ্বারা সমর্থিত যা ব্যবহারকারীদের জন্য রেলআপস-কে সস্তা করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
### শার্ডিং {#sharding}
-শার্ডিং হল একটি ডেটাবেস বিভক্ত করার প্রক্রিয়া। ভ্যালিডেটরদের উপসেটগুলি পুরো ইথেরিয়ামের ট্র্যাক রাখার পরিবর্তে স্বতন্ত্র শার্ডগুলির জন্য দায়ী থাকবে। শার্ডিং দীর্ঘ সময়ের জন্য ইথেরিয়াম [রোডম্যাপে](/roadmap/) ছিল, এবং এটি একসময় দ্য মার্জ-এর আগে প্রুফ-অফ-স্টেক-এ পাঠানোর উদ্দেশ্যে ছিল। যাইহোক, [লেয়ার 2 রোলআপ](#layer-2-scaling)-এর দ্রুত বিকাশ এবং [ড্যাঙ্কশার্ডিং](/roadmap/danksharding) (ইথেরিয়াম ব্লকে রোলআপ ডেটার ব্লব যোগ করা যা ভ্যালিডেটরদের দ্বারা খুব দক্ষতার সাথে যাচাই করা যায়) আবিষ্কার ইথেরিয়াম সম্প্রদায়কে শার্ডিং দ্বারা স্কেলিংয়ের পরিবর্তে রোলআপ-কেন্দ্রিক স্কেলিংকে সমর্থন করতে পরিচালিত করেছে। এটি ইথেরিয়ামের কনসেন্সাস যুক্তিকে আরও সহজ রাখতেও সাহায্য করবে।
+শার্ডিং হলো একটি ডাটাবেস বিভক্ত করার প্রক্রিয়া। সম্পূর্ণ ইথিরিয়ামের ট্র্যাক রাখার পরিবর্তে ভ্যালিডেটরস-এর সাবসেটগুলো পৃথক শার্ডের জন্য দায়ী থাকবে। শার্ডিং দীর্ঘকাল ধরে ইথিরিয়াম [রোডম্যাপ](/roadmap/)-এ ছিল, এবং একসময় দ্য মার্জ-এর আগে প্রুফ-অফ-স্টেক-এ শিপ করার উদ্দেশ্য ছিল। তবে, [লেয়ার 2 রেলআপস](#layer-2-scaling)-এর দ্রুত বিকাশ এবং [Danksharding](/roadmap/danksharding) আবিষ্কার (ইথিরিয়াম ব্লকস-এ রোলআপ ডেটার ব্লব যুক্ত করা যা ভ্যালিডেটরস দ্বারা খুব দক্ষতার সাথে যাচাই করা যেতে পারে) ইথিরিয়াম কমিউনিটিকে শার্ডিং দ্বারা স্কেলিং-এর পরিবর্তে রোলআপ-কেন্দ্রিক স্কেলিং-এর পক্ষে নিয়ে গেছে। এটি ইথিরিয়ামের কনসেন্সাস লজিককে আরও সহজ রাখতেও সাহায্য করবে।
## অফচেইন স্কেলিং {#offchain-scaling}
-অফচেইন সমাধানগুলি লেয়ার 1 মেইননেট থেকে আলাদাভাবে প্রয়োগ করা হয় - তাদের বিদ্যমান ইথেরিয়াম প্রোটোকলে কোনও পরিবর্তনের প্রয়োজন হয় না। কিছু সমাধান, যা "লেয়ার 2" সমাধান হিসাবে পরিচিত, তাদের নিরাপত্তা সরাসরি লেয়ার 1 ইথেরিয়াম কনসেন্সাস থেকে পায়, যেমন [অপ্টিমিস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/), [জিরো-নলেজ রোলআপ](/developers/docs/scaling/zk-rollups/) বা [স্টেট চ্যানেল](/developers/docs/scaling/state-channels/)। অন্যান্য সমাধানগুলির মধ্যে মেইননেট থেকে আলাদাভাবে তাদের নিরাপত্তা প্রাপ্ত বিভিন্ন ধরণের নতুন চেইন তৈরি করা জড়িত, যেমন [সাইডচেইন](#sidechains), [ভ্যালিডিয়াম](#validium), বা [প্লাসমা চেইন](#plasma)। এই সমাধানগুলি মেইননেটের সাথে যোগাযোগ করে কিন্তু বিভিন্ন লক্ষ্য অর্জনের জন্য তাদের নিরাপত্তা ভিন্নভাবে গ্রহণ করে।
+অফচেইন সলিউশনগুলো লেয়ার 1 মেইননেট থেকে আলাদাভাবে বাস্তবায়িত হয় - এগুলোর জন্য বিদ্যমান ইথিরিয়াম প্রটোকল-এ কোনো পরিবর্তনের প্রয়োজন হয় না। কিছু সলিউশন, যা "লেয়ার 2" সলিউশন হিসেবে পরিচিত, তাদের নিরাপত্তা সরাসরি লেয়ার 1 ইথিরিয়াম কনসেন্সাস থেকে গ্রহণ করে, যেমন [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/), [জিরো-নলেজ রোলআপ](/developers/docs/scaling/zk-rollups/) বা [স্টেট চ্যানেল](/developers/docs/scaling/state-channels/)। অন্যান্য সলিউশনগুলোর মধ্যে বিভিন্ন রূপে নতুন চেইন তৈরি করা অন্তর্ভুক্ত যা মেইননেট থেকে আলাদাভাবে তাদের নিরাপত্তা গ্রহণ করে, যেমন [সাইডচেইন](#sidechains), [ভ্যালিডিয়াম](#validium), বা [প্লাজমা চেইন](#plasma)। এই সলিউশনগুলো মেইননেট-এর সাথে যোগাযোগ করে কিন্তু বিভিন্ন লক্ষ্য অর্জনের জন্য ভিন্নভাবে তাদের নিরাপত্তা গ্রহণ করে।
### লেয়ার 2 স্কেলিং {#layer-2-scaling}
-এই অফচেইন সমাধানগুলির বিভাগটি মেইননেট ইথেরিয়াম থেকে তার নিরাপত্তা লাভ করে।
+অফচেইন সলিউশনের এই বিভাগটি মেইননেট ইথিরিয়াম থেকে এর নিরাপত্তা গ্রহণ করে।
-লেয়ার 2 হল সেইসব সমাধানগুলির জন্য একটি সম্মিলিত শব্দ যা আপনার অ্যাপ্লিকেশনকে মেইননেটের শক্তিশালী বিকেন্দ্রীভূত সুরক্ষা মডেলের সুবিধা গ্রহণ করার সময় ইথেরিয়াম মেইননেট (লেয়ার 1) এর বাইরে লেনদেন পরিচালনা করে স্কেল করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। নেটওয়ার্ক ব্যস্ত থাকলে লেনদেনের গতি কমে যায়, যা নির্দিষ্ট ধরনের ডিএ্যাপস-এর জন্য ব্যবহারকারীর অভিজ্ঞতাকে খারাপ করে তোলে। এবং নেটওয়ার্ক যত ব্যস্ত হয়, লেনদেন প্রেরকরা একে অপরকে ছাপিয়ে যাওয়ার লক্ষ্যে গ্যাস মূল্য বৃদ্ধি পায়। এটি ইথেরিয়াম ব্যবহারকে খুব ব্যয়বহুল করে তুলতে পারে।
+লেয়ার 2 হলো এমন সলিউশনগুলোর একটি সমষ্টিগত শব্দ যা মেইননেট-এর শক্তিশালী ডিসেন্ট্রালাইজড সিকিউরিটি মডেলের সুবিধা গ্রহণ করার পাশাপাশি ইথিরিয়াম মেইননেট (লেয়ার 1)-এর বাইরে লেনদেন পরিচালনা করে আপনার অ্যাপ্লিকেশনকে স্কেল করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। নেটওয়ার্ক ব্যস্ত থাকলে লেনদেন-এর গতি কমে যায়, যা নির্দিষ্ট ধরণের ডিএ্যাপস-এর জন্য ব্যবহারকারীর অভিজ্ঞতাকে খারাপ করে তোলে। এবং নেটওয়ার্ক যত ব্যস্ত হয়, গ্যাস প্রাইস তত বৃদ্ধি পায় কারণ লেনদেন প্রেরকরা একে অপরকে ছাড়িয়ে যাওয়ার চেষ্টা করে। এটি ইথিরিয়াম ব্যবহার করাকে খুব ব্যয়বহুল করে তুলতে পারে।
-অধিকাংশ লেয়ার 2 সমাধান একটি সার্ভার বা সার্ভারের ক্লাস্টারের চারপাশে কেন্দ্রীভূত, যার প্রত্যেকটিকে নোড, ভ্যালিডেটর, অপারেটর, সিকোয়েন্সার, ব্লক উৎপাদক বা অনুরূপ শব্দ হিসাবে উল্লেখ করা যেতে পারে। বাস্তবায়নের উপর নির্ভর করে, এই লেয়ার 2 নোডগুলি ব্যবহারকারী ব্যক্তি, ব্যবসা বা সত্তা দ্বারা, অথবা কোনও তৃতীয় পক্ষের অপারেটর দ্বারা, অথবা ব্যক্তিদের একটি বড় গোষ্ঠী দ্বারা (মেইননেটের অনুরূপ) চালানো হতে পারে। সাধারণভাবে বলতে গেলে, লেনদেনগুলি সরাসরি লেয়ার 1 (মেইননেট)-এ জমা দেওয়ার পরিবর্তে এই লেয়ার 2 নোডগুলিতে জমা দেওয়া হয়। কিছু সমাধানের জন্য, লেয়ার 2 ইনস্ট্যান্স সেগুলিকে লেয়ার 1-এ নোঙ্গর করার আগে গ্রুপে ব্যাচ করে, যার পরে সেগুলি লেয়ার 1 দ্বারা সুরক্ষিত হয় এবং পরিবর্তন করা যায় না। এটি কীভাবে করা হয় তার বিবরণ বিভিন্ন লেয়ার 2 প্রযুক্তি এবং বাস্তবায়নের মধ্যে উল্লেখযোগ্যভাবে পরিবর্তিত হয়।
+বেশিরভাগ লেয়ার 2 সলিউশন একটি সার্ভার বা সার্ভারের ক্লাস্টারকে কেন্দ্র করে থাকে, যার প্রতিটিকে নোড, ভ্যালিডেটর, অপারেটর, সিকোয়েন্সার, ব্লক প্রডিউসার বা অনুরূপ শব্দ হিসেবে উল্লেখ করা যেতে পারে। বাস্তবায়নের ওপর নির্ভর করে, এই লেয়ার 2 নোড-গুলো ব্যক্তি, ব্যবসা বা সত্তা দ্বারা পরিচালিত হতে পারে যারা এগুলো ব্যবহার করে, অথবা কোনো 3য় পক্ষের অপারেটর দ্বারা, বা ব্যক্তিদের একটি বড় গ্রুপ দ্বারা (মেইননেট-এর মতো) পরিচালিত হতে পারে। সাধারণভাবে বলতে গেলে, লেনদেন-গুলো সরাসরি লেয়ার 1 (মেইননেট)-এ জমা দেওয়ার পরিবর্তে এই লেয়ার 2 নোড-গুলোতে জমা দেওয়া হয়। কিছু সলিউশনের জন্য, লেয়ার 2 ইনস্ট্যান্স তারপর সেগুলোকে লেয়ার 1-এ অ্যাঙ্কর করার আগে গ্রুপে ব্যাচ করে, যার পরে সেগুলো লেয়ার 1 দ্বারা সুরক্ষিত হয় এবং পরিবর্তন করা যায় না। এটি কীভাবে করা হয় তার বিশদ বিবরণ বিভিন্ন লেয়ার 2 প্রযুক্তি এবং বাস্তবায়নের মধ্যে উল্লেখযোগ্যভাবে পরিবর্তিত হয়।
-একটি নির্দিষ্ট লেয়ার 2 ইনস্ট্যান্স অনেক অ্যাপ্লিকেশনের দ্বারা উন্মুক্ত এবং শেয়ার করা হতে পারে, অথবা একটি প্রকল্প দ্বারা ডিপ্লয় করা হতে পারে এবং শুধুমাত্র তাদের অ্যাপ্লিকেশন সমর্থন করার জন্য উৎসর্গীকৃত হতে পারে।
+একটি নির্দিষ্ট লেয়ার 2 ইনস্ট্যান্স উন্মুক্ত হতে পারে এবং অনেক অ্যাপ্লিকেশন দ্বারা শেয়ার করা যেতে পারে, অথবা একটি প্রজেক্ট দ্বারা ডেপ্লয় করা হতে পারে এবং শুধুমাত্র তাদের অ্যাপ্লিকেশনকে সমর্থন করার জন্য নিবেদিত হতে পারে।
-#### লেয়ার 2 কেন প্রয়োজন? {#why-is-layer-2-needed}
+#### লেয়ার 2 কেন প্রয়োজন? {#why-is-layer-2-needed}
-- প্রতি সেকেন্ডে লেনদেন বৃদ্ধি ব্যবহারকারীর অভিজ্ঞতাকে ব্যাপকভাবে উন্নত করে এবং মেইননেট ইথেরিয়ামে নেটওয়ার্কের যানজট কমায়।
-- লেনদেনগুলি মেইননেট ইথেরিয়ামে একটি একক লেনদেনে রোল আপ করা হয়, যা ব্যবহারকারীদের জন্য গ্যাস ফি হ্রাস করে এবং ইথেরিয়ামকে সর্বত্র মানুষের জন্য আরও অন্তর্ভুক্তিমূলক এবং অ্যাক্সেসযোগ্য করে তোলে।
-- স্কেলেবিলিটির কোনো আপডেট বিকেন্দ্রীকরণ বা নিরাপত্তার খরচে হওয়া উচিত নয় – লেয়ার 2 ইথেরিয়ামের উপরে তৈরি হয়।
-- এপ্লিকেশন-নির্দিষ্ট লেয়ার 2 নেটওয়ার্ক রয়েছে যা স্কেলে সম্পদের সাথে কাজ করার সময় তাদের নিজস্ব দক্ষতার সেট নিয়ে আসে।
+- প্রতি সেকেন্ডে বর্ধিত লেনদেন ব্যবহারকারীর অভিজ্ঞতাকে ব্যাপকভাবে উন্নত করে, এবং মেইননেট ইথিরিয়ামে নেটওয়ার্ক কনজেশন কমায়।
+- লেনদেন-গুলো মেইননেট ইথিরিয়ামে একটি একক লেনদেন-এ রোলআপ করা হয়, যা ব্যবহারকারীদের জন্য গ্যাস ফি হ্রাস করে এবং ইথিরিয়ামকে সব জায়গার মানুষের জন্য আরও অন্তর্ভুক্তিমূলক এবং অ্যাক্সেসযোগ্য করে তোলে।
+- স্কেলেবিলিটির যেকোনো আপডেট ডিসেন্ট্রালাইজেশন বা নিরাপত্তার বিনিময়ে হওয়া উচিত নয় – লেয়ার 2 ইথিরিয়ামের ওপর তৈরি হয়।
+- অ্যাপ্লিকেশন-নির্দিষ্ট লেয়ার 2 নেটওয়ার্ক রয়েছে যা স্কেলে অ্যাসেট নিয়ে কাজ করার সময় তাদের নিজস্ব দক্ষতার সেট নিয়ে আসে।
-[লেয়ার 2 সম্পর্কে আরও জানুন](/layer-2/)।
+[লেয়ার 2 সম্পর্কে আরও জানুন](/layer-2/)।
-#### রোলআপ {#rollups}
+#### রেলআপস {#rollups}
-রোলআপগুলি লেয়ার 1-এর বাইরে লেনদেন সম্পাদন করে এবং তারপর ডেটা লেয়ার 1-এ পোস্ট করা হয় যেখানে কনসেন্সাস পৌঁছানো হয়। যেহেতু লেনদেনের ডেটা লেয়ার 1 ব্লকে অন্তর্ভুক্ত করা হয়, এটি রোলআপগুলিকে নেটিভ ইথেরিয়াম নিরাপত্তা দ্বারা সুরক্ষিত করার অনুমতি দেয়।
+রেলআপস লেয়ার 1-এর বাইরে লেনদেন এক্সিকিউশন সম্পাদন করে এবং তারপর ডেটা লেয়ার 1-এ পোস্ট করা হয় যেখানে কনসেন্সাস অর্জিত হয়। যেহেতু লেনদেন ডেটা লেয়ার 1 ব্লকস-এ অন্তর্ভুক্ত থাকে, এটি রেলআপস-কে নেটিভ ইথিরিয়াম নিরাপত্তা দ্বারা সুরক্ষিত হওয়ার অনুমতি দেয়।
-ভিন্ন নিরাপত্তা মডেল সহ দুই ধরনের রোলআপ রয়েছে:
+ভিন্ন নিরাপত্তা মডেলসহ দুই ধরণের রেলআপস রয়েছে:
-- **অপ্টিমিস্টিক রোলআপ**: ধরে নেয় যে লেনদেনগুলি ডিফল্টরূপে বৈধ এবং শুধুমাত্র একটি চ্যালেঞ্জের ক্ষেত্রে, একটি [**ফ্রড প্রুফ**](/glossary/#fraud-proof)-এর মাধ্যমে গণনা চালায়। [অপ্টিমিস্টিক রোলআপ সম্পর্কে আরও জানুন](/developers/docs/scaling/optimistic-rollups/)।
-- **জিরো-নলেজ রোলআপ**: অফচেইন গণনা চালায় এবং চেইনে একটি [**ভ্যালিডিটি প্রুফ**](/glossary/#validity-proof) জমা দেয়। [জিরো-নলেজ রোলআপ সম্পর্কে আরও জানুন](/developers/docs/scaling/zk-rollups/)।
+- **অপ্টিমেস্টিক রোলআপ**: ডিফল্টভাবে লেনদেন-গুলোকে বৈধ বলে ধরে নেয় এবং শুধুমাত্র একটি চ্যালেঞ্জের ক্ষেত্রে, একটি [**ফ্রড প্রুফ**](/glossary/#fraud-proof)-এর মাধ্যমে কম্পিউটেশন চালায়। [অপ্টিমেস্টিক রোলআপ সম্পর্কে আরও জানুন](/developers/docs/scaling/optimistic-rollups/)।
+- **জিরো-নলেজ রোলআপ**: অফচেইন কম্পিউটেশন চালায় এবং চেইনে একটি [**ভ্যালিডিটি প্রুফ**](/glossary/#validity-proof) জমা দেয়। [জিরো-নলেজ রোলআপ সম্পর্কে আরও জানুন](/developers/docs/scaling/zk-rollups/)।
#### স্টেট চ্যানেল {#channels}
-স্টেট চ্যানেলগুলি মাল্টিসিগ কন্ট্রাক্ট ব্যবহার করে অংশগ্রহণকারীদের দ্রুত এবং অবাধে অফচেইন লেনদেন করতে সক্ষম করে, তারপর মেইননেটের সাথে ফাইনালিটি সেটল করে। এটি নেটওয়ার্কের যানজট, ফি এবং বিলম্ব কমিয়ে দেয়। দুই ধরনের চ্যানেল হল বর্তমানে স্টেট চ্যানেল এবং পেমেন্ট চ্যানেল।
+স্টেট চ্যানেলগুলো অংশগ্রহণকারীদের দ্রুত এবং স্বাধীনভাবে অফচেইন লেনদেন করতে সক্ষম করার জন্য মাল্টিসিগ কন্ট্রাক্ট ব্যবহার করে, তারপর মেইননেট-এর সাথে ফাইনালিটি নিষ্পত্তি করে। এটি নেটওয়ার্ক কনজেশন, ফি এবং বিলম্ব কমিয়ে দেয়। বর্তমানে দুই ধরণের চ্যানেল হলো স্টেট চ্যানেল এবং পেমেন্ট চ্যানেল।
[স্টেট চ্যানেল](/developers/docs/scaling/state-channels/) সম্পর্কে আরও জানুন।
### সাইডচেইন {#sidechains}
-একটি সাইডচেইন হল একটি স্বাধীন EVM-সামঞ্জস্যপূর্ণ ব্লকচেইন যা মেইননেটের সমান্তরালে চলে। এগুলি টু-ওয়ে ব্রিজের মাধ্যমে ইথেরিয়ামের সাথে সামঞ্জস্যপূর্ণ এবং তাদের নিজস্ব নির্বাচিত কনসেন্সাস এবং ব্লক প্যারামিটারের নিয়ম অনুসারে চলে।
+একটি সাইডচেইন হলো একটি স্বাধীন EVM-সামঞ্জস্যপূর্ণ ব্লকচেইন যা মেইননেট-এর সমান্তরালে চলে। এগুলো টু-ওয়ে ব্রিজের মাধ্যমে ইথিরিয়ামের সাথে সামঞ্জস্যপূর্ণ এবং কনসেন্সাস ও ব্লক প্যারামিটারের নিজস্ব নির্বাচিত নিয়মের অধীনে চলে।
[সাইডচেইন](/developers/docs/scaling/sidechains/) সম্পর্কে আরও জানুন।
-### প্লাসমা {#plasma}
+### প্লাজমা {#plasma}
-একটি প্লাসমা চেইন একটি পৃথক ব্লকচেইন যা মূল ইথেরিয়াম চেইনের সাথে নোঙ্গর করা হয় এবং বিরোধের সালিশি করতে ফ্রড প্রুফ (যেমন [অপ্টিমিস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/)) ব্যবহার করে।
+একটি প্লাজমা চেইন হলো একটি পৃথক ব্লকচেইন যা মূল ইথিরিয়াম চেইনের সাথে যুক্ত থাকে এবং বিরোধ নিষ্পত্তির জন্য ফ্রড প্রুফ (যেমন [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/)) ব্যবহার করে।
-[প্লাসমা](/developers/docs/scaling/plasma/) সম্পর্কে আরও জানুন।
+[প্লাজমা](/developers/docs/scaling/plasma/) সম্পর্কে আরও জানুন।
-### ভ্যালিডিয়াম {#validium}
+### ভ্যালিডিয়াম {#validium}
-একটি ভ্যালিডিয়াম চেইন জিরো-নলেজ রোলআপের মতো ভ্যালিডিটি প্রুফ ব্যবহার করে কিন্তু ডেটা মূল লেয়ার 1 ইথেরিয়াম চেইনে সংরক্ষণ করা হয় না। এটি প্রতি ভ্যালিডিয়াম চেইনে প্রতি সেকেন্ডে 10k লেনদেনের দিকে নিয়ে যেতে পারে এবং একাধিক চেইন সমান্তরালে চালানো যেতে পারে।
+একটি ভ্যালিডিয়াম চেইন জিরো-নলেজ রোলআপ-এর মতো ভ্যালিডিটি প্রুফ ব্যবহার করে কিন্তু ডেটা মূল লেয়ার 1 ইথিরিয়াম চেইনে সংরক্ষণ করা হয় না। এটি প্রতি ভ্যালিডিয়াম চেইনে সেকেন্ডে 10k লেনদেন-এর দিকে নিয়ে যেতে পারে এবং একাধিক চেইন সমান্তরালভাবে চালানো যেতে পারে।
-[ভ্যালিডিয়াম](/developers/docs/scaling/validium/) সম্পর্কে আরও জানুন।
+[ভ্যালিডিয়াম](/developers/docs/scaling/validium/) সম্পর্কে আরও জানুন।
-## এতগুলি স্কেলিং সমাধানের প্রয়োজন কেন? {#why-do-we-need-these}
+## কেন এতগুলো স্কেলিং সলিউশন প্রয়োজন? {#why-do-we-need-these}
-- একাধিক সমাধান নেটওয়ার্কের যেকোনো একটি অংশে সামগ্রিক যানজট কমাতে সাহায্য করতে পারে এবং ব্যর্থতার একক পয়েন্টগুলিও প্রতিরোধ করতে পারে।
-- সমগ্রটি তার অংশগুলির যোগফলের চেয়ে বড়। বিভিন্ন সমাধান বিদ্যমান থাকতে পারে এবং সামঞ্জস্যপূর্ণভাবে কাজ করতে পারে, যা ভবিষ্যতের লেনদেনের গতি এবং থ্রুপুটের উপর একটি সূচকীয় প্রভাবের জন্য অনুমতি দেয়।
-- সমস্ত সমাধানের জন্য সরাসরি ইথেরিয়াম কনসেন্সাস অ্যালগরিদম ব্যবহার করার প্রয়োজন হয় না, এবং বিকল্পগুলি এমন সুবিধা দিতে পারে যা অন্যথায় পাওয়া কঠিন হবে।
+- একাধিক সলিউশন নেটওয়ার্ক-এর যেকোনো এক অংশের সামগ্রিক কনজেশন কমাতে সাহায্য করতে পারে এবং সিঙ্গেল পয়েন্ট অফ ফেইলিওর প্রতিরোধ করতে পারে।
+- সম্পূর্ণটি এর অংশগুলোর যোগফলের চেয়ে বড়। বিভিন্ন সলিউশন বিদ্যমান থাকতে পারে এবং সামঞ্জস্যপূর্ণভাবে কাজ করতে পারে, যা ভবিষ্যতের লেনদেন-এর গতি এবং থ্রুপুটের ওপর একটি সূচকীয় প্রভাবের অনুমতি দেয়।
+- সব সলিউশনের জন্য সরাসরি ইথিরিয়াম কনসেন্সাস এ্যালগরিদম ব্যবহার করার প্রয়োজন হয় না, এবং বিকল্পগুলো এমন সুবিধা দিতে পারে যা অন্যথায় পাওয়া কঠিন হবে।
-## আপনি কি দেখে শিখতে বেশি পছন্দ করেন? {#visual-learner}
+## ভিজ্যুয়াল লার্নারদের জন্য {#visual-learner}
-_দ্রষ্টব্য ভিডিওর ব্যাখ্যায় সমস্ত অফচেইন স্কেলিং সমাধান বোঝাতে "লেয়ার 2" শব্দটি ব্যবহার করা হয়েছে, যেখানে আমরা "লেয়ার 2" কে একটি অফচেইন সমাধান হিসাবে আলাদা করি যা লেয়ার 1 মেইননেট কনসেন্সাসের মাধ্যমে তার নিরাপত্তা অর্জন করে।_
+_লক্ষ্য করুন ভিডিওর ব্যাখ্যায় সমস্ত অফচেইন স্কেলিং সলিউশন বোঝাতে "লেয়ার 2" শব্দটি ব্যবহার করা হয়েছে, যেখানে আমরা "লেয়ার 2"-কে এমন একটি অফচেইন সলিউশন হিসেবে আলাদা করি যা লেয়ার 1 মেইননেট কনসেন্সাস-এর মাধ্যমে এর নিরাপত্তা গ্রহণ করে।_
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- [একটি রোলআপ-কেন্দ্রিক ইথেরিয়াম রোডম্যাপ](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _Vitalik Buterin_
-- [ইথেরিয়ামের জন্য লেয়ার 2 স্কেলিং সমাধানগুলির উপর আপ-টু-ডেট বিশ্লেষণ](https://www.l2beat.com/)
-- [ইথেরিয়াম লেয়ার 2 স্কেলিং সমাধানগুলির মূল্যায়ন: একটি তুলনামূলক কাঠামো](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)
-- [রোলআপের একটি অসম্পূর্ণ গাইড](https://vitalik.eth.limo/general/2021/01/05/rollup.html)
-- [ইথেরিয়াম-চালিত ZK-রোলআপ: বিশ্ব সেরা](https://hackmd.io/@canti/rkUT0BD8K)
-- [অপ্টিমিস্টিক রোলআপ বনাম ZK রোলআপ](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/)
-- [কেন উচ্চ স্কেলেবিলিটির জন্য রোলআপ + ডেটা শার্ডই একমাত্র টেকসই সমাধান](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)
-- [কোন ধরনের লেয়ার 3 বোধগম্য?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html)
-- [ডেটা উপলব্ধতা অথবা: কীভাবে রোলআপগুলি চিন্তা করা বন্ধ করতে এবং Ethereum-কে ভালোবাসতে শিখেছে](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
-- [ইথেরিয়াম রোলআপের ব্যবহারিক নির্দেশিকা](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [একটি রোলআপ-কেন্দ্রিক ইথিরিয়াম রোডম্যাপ](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _ভিটালিক বুটেরিন_
+- [ইথিরিয়ামের জন্য লেয়ার 2 স্কেলিং সলিউশনের আপ-টু-ডেট অ্যানালিটিক্স](https://www.l2beat.com/)
+- [ইথিরিয়াম লেয়ার 2 স্কেলিং সলিউশন মূল্যায়ন: একটি তুলনামূলক ফ্রেমওয়ার্ক](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)
+- [রেলআপস-এর একটি অসম্পূর্ণ গাইড](https://vitalik.eth.limo/general/2021/01/05/rollup.html)
+- [ইথিরিয়াম-চালিত ZK-রোলআপস: ওয়ার্ল্ড বিটারস](https://hackmd.io/@canti/rkUT0BD8K)
+- [অপ্টিমেস্টিক রোলআপ বনাম ZK রোলআপস](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/)
+- [কেন রেলআপস + ডেটা শার্ডগুলো উচ্চ স্কেলেবিলিটির জন্য একমাত্র টেকসই সলিউশন](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)
+- [কী ধরণের লেয়ার 3 অর্থবহ?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html)
+- [ডেটা অ্যাভেইলেবিলিটি অথবা: কীভাবে রেলআপস চিন্তা করা বন্ধ করতে এবং ইথিরিয়ামকে ভালোবাসতে শিখেছে](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
+- [ইথিরিয়াম রেলআপস-এর প্র্যাকটিক্যাল গাইড](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
+
+## টিউটোরিয়াল: ইথিরিয়ামে স্কেলেবল লেয়ার 2 তৈরি করুন {#tutorials}
+
+- [অল ইউ ক্যান ক্যাশ](/developers/tutorials/all-you-can-cache/) _– রেলআপস-এ কলডেটা খরচ কমাতে কীভাবে একটি ক্যাশিং কন্ট্রাক্ট তৈরি এবং ব্যবহার করবেন।_
+- [কলডেটা অপ্টিমাইজেশনের জন্য শর্ট ABI](/developers/tutorials/short-abi/) _– লেয়ার 2 লেনদেন-এর জন্য কলডেটা খরচ কমাতে কীভাবে ছোট ABI ব্যবহার করবেন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/bn/developers/docs/scaling/optimistic-rollups/index.md
index fe0b94bc2f4..33342d9c7c0 100644
--- a/public/content/translations/bn/developers/docs/scaling/optimistic-rollups/index.md
+++ b/public/content/translations/bn/developers/docs/scaling/optimistic-rollups/index.md
@@ -1,265 +1,269 @@
---
-title: "অপ্টিমেস্টিক রোলআপ"
-description: "অপ্টিমেস্টিক রোলআপ-এর একটি ভূমিকা—Ethereum কমিউনিটি দ্বারা ব্যবহৃত একটি স্কেলিং সমাধান।"
+title: অপ্টিমেস্টিক রোলআপস
+description: অপ্টিমেস্টিক রোলআপের পরিচিতি—ইথিরিয়াম কমিউনিটি দ্বারা ব্যবহৃত একটি স্কেলিং সমাধান।
lang: bn
---
-অপ্টিমেস্টিক রোলআপ হলো লেয়ার 2 (L2) প্রোটোকল যা Ethereum-এর বেস লেয়ারের থ্রুপুট বাড়ানোর জন্য ডিজাইন করা হয়েছে। তারা অফচেইনে লেনদেন প্রসেস করে প্রধান Ethereum চেইনের উপর কম্পিউটেশন কমিয়ে দেয়, যা প্রসেসিং স্পিডে উল্লেখযোগ্য উন্নতি প্রদান করে। অন্যান্য স্কেলিং সমাধান, যেমন [সাইডচেইন](/developers/docs/scaling/sidechains/)-এর মতো নয়, অপ্টিমেস্টিক রোলআপ অনচেইনে লেনদেনের ফলাফল প্রকাশ করে মেইননেট থেকে নিরাপত্তা অর্জন করে, অথবা [প্লাসমা চেইন](/developers/docs/scaling/plasma/), যা Ethereum-এ জালিয়াতির প্রমাণ সহ লেনদেন যাচাই করে, কিন্তু লেনদেনের ডেটা অন্য কোথাও সংরক্ষণ করে।
+অপ্টিমেস্টিক রোলআপস হলো লেয়ার ২ (L2) প্রটোকল যা ইথিরিয়ামের বেস লেয়ারের থ্রুপুট বাড়ানোর জন্য ডিজাইন করা হয়েছে। এগুলো অফচেইনে লেনদেন প্রসেস করার মাধ্যমে মূল [Ethereum](/) চেইনে কম্পিউটেশন কমায়, যা প্রসেসিং স্পিডে উল্লেখযোগ্য উন্নতি প্রদান করে। অন্যান্য স্কেলিং সমাধান, যেমন [sidechains](/developers/docs/scaling/sidechains/)-এর বিপরীতে, অপ্টিমেস্টিক রোলআপস অনচেইনে লেনদেনের ফলাফল প্রকাশ করে মেইননেট থেকে নিরাপত্তা লাভ করে, অথবা [plasma chains](/developers/docs/scaling/plasma/), যা ফ্রড প্রুফ দিয়ে ইথিরিয়ামে লেনদেন যাচাই করে, কিন্তু লেনদেনের ডাটা অন্য কোথাও সংরক্ষণ করে।
-যেহেতু কম্পিউটেশন Ethereum ব্যবহারের একটি ধীর এবং ব্যয়বহুল অংশ, অপ্টিমেস্টিক রোলআপ স্কেলেবিলিটিতে 10-100x পর্যন্ত উন্নতি অফার করতে পারে। অপ্টিমেস্টিক রোলআপগুলি `calldata` হিসাবে বা [blobs](/roadmap/danksharding/)-এ Ethereum-এ লেনদেন লেখে, যা ব্যবহারকারীদের জন্য গ্যাসের খরচ কমায়।
+যেহেতু ইথিরিয়াম ব্যবহারের ক্ষেত্রে কম্পিউটেশন হলো ধীর এবং ব্যয়বহুল অংশ, তাই অপ্টিমেস্টিক রোলআপস স্কেলিং-এ 10-100x পর্যন্ত উন্নতি দিতে পারে। অপ্টিমেস্টিক রোলআপস ইথিরিয়ামে লেনদেনগুলোকে `calldata` হিসেবে বা [blobs](/roadmap/danksharding/)-এ লেখে, যা ব্যবহারকারীদের জন্য গ্যাস খরচ কমায়।
## পূর্বশর্ত {#prerequisites}
-আপনার [ইথেরিয়াম স্কেলিং](/developers/docs/scaling/) এবং [লেয়ার 2](/layer-2/) সম্পর্কিত আমাদের পেজগুলি পড়া এবং বোঝা উচিত।
+আপনার আমাদের [Ethereum scaling](/developers/docs/scaling/) এবং [layer 2](/layer-2/) পেজগুলো পড়া এবং বোঝা উচিত।
## অপ্টিমেস্টিক রোলআপ কী? {#what-is-an-optimistic-rollup}
-একটি অপ্টিমেস্টিক রোলআপ হলো Ethereum স্কেলিংয়ের একটি পদ্ধতি যা অফচেইনে কম্পিউটেশন এবং স্টেট স্টোরেজকে স্থানান্তর করে। অপ্টিমেস্টিক রোলআপ Ethereum-এর বাইরে লেনদেন কার্যকর করে, কিন্তু লেনদেনের ডেটা মেইননেটে `calldata` হিসাবে বা [blobs](/roadmap/danksharding/)-এ পোস্ট করে।
+অপ্টিমেস্টিক রোলআপ হলো ইথিরিয়াম স্কেলিং করার একটি পদ্ধতি যেখানে কম্পিউটেশন এবং স্টেট স্টোরেজ অফচেইনে সরিয়ে নেওয়া হয়। অপ্টিমেস্টিক রোলআপস ইথিরিয়ামের বাইরে লেনদেন এক্সিকিউট করে, কিন্তু লেনদেনের ডাটা মেইননেটে `calldata` হিসেবে বা [blobs](/roadmap/danksharding/)-এ পোস্ট করে।
-অপ্টিমেস্টিক রোলআপ অপারেটররা Ethereum-এ জমা দেওয়ার আগে একাধিক অফচেইন লেনদেনকে বড় ব্যাচে একত্রে বান্ডিল করে। এই পদ্ধতিটি প্রতিটি ব্যাচে একাধিক লেনদেনের মধ্যে নির্দিষ্ট খরচ ছড়িয়ে দেয়, যা শেষ-ব্যবহারকারীদের জন্য ফি কমিয়ে দেয়। অপ্টিমেস্টিক রোলআপগুলি Ethereum-এ পোস্ট করা ডেটার পরিমাণ কমাতে কম্প্রেশন কৌশলও ব্যবহার করে।
+অপ্টিমেস্টিক রোলআপ অপারেটররা ইথিরিয়ামে সাবমিট করার আগে একাধিক অফচেইন লেনদেন একসাথে বড় ব্যাচে বান্ডিল করে। এই পদ্ধতিটি প্রতিটি ব্যাচের একাধিক লেনদেনের মধ্যে নির্দিষ্ট খরচ ছড়িয়ে দিতে সক্ষম করে, যা সাধারণ ব্যবহারকারীদের জন্য ফি কমায়। অপ্টিমেস্টিক রোলআপস ইথিরিয়ামে পোস্ট করা ডাটার পরিমাণ কমানোর জন্য কম্প্রেশন টেকনিকও ব্যবহার করে।
-অপ্টিমেস্টিক রোলআপগুলিকে “অপ্টিমিস্টিক” বলে মনে করা হয় কারণ তারা ধরে নেয় অফচেইন লেনদেনগুলি বৈধ এবং অনচেইনে পোস্ট করা লেনদেন ব্যাচগুলির জন্য বৈধতার প্রমাণ প্রকাশ করে না। এটি অপ্টিমেস্টিক রোলআপগুলিকে [জিরো-নলেজ রোলআপ](/developers/docs/scaling/zk-rollups) থেকে আলাদা করে যা অফচেইন লেনদেনের জন্য ক্রিপ্টোগ্রাফিক [বৈধতার প্রমাণ](/glossary/#validity-proof) প্রকাশ করে।
+অপ্টিমেস্টিক রোলআপগুলোকে "অপ্টিমেস্টিক" (আশাবাদী) হিসেবে বিবেচনা করা হয় কারণ তারা ধরে নেয় যে অফচেইন লেনদেনগুলো বৈধ এবং অনচেইনে পোস্ট করা লেনদেনের ব্যাচগুলোর জন্য ভ্যালিডিটি প্রুফ প্রকাশ করে না। এটি অপ্টিমেস্টিক রোলআপগুলোকে [zero-knowledge rollups](/developers/docs/scaling/zk-rollups) থেকে আলাদা করে যা অফচেইন লেনদেনের জন্য ক্রিপ্টোগ্রাফিক [proofs of validity](/glossary/#validity-proof) প্রকাশ করে।
-অপ্টিমেস্টিক রোলআপগুলি পরিবর্তে একটি জালিয়াতি-প্রমাণকারী স্কিমের উপর নির্ভর করে যেখানে লেনদেনগুলি সঠিকভাবে গণনা করা হয়নি এমন ক্ষেত্রে সনাক্ত করতে। Ethereum-এ একটি রোলআপ ব্যাচ জমা দেওয়ার পরে, একটি সময় উইন্ডো থাকে (যাকে একটি চ্যালেঞ্জ পিরিয়ড বলা হয়) যার সময় যে কেউ একটি [ফ্রড প্রুফ](/glossary/#fraud-proof) গণনা করে একটি রোলআপ লেনদেনের ফলাফলকে চ্যালেঞ্জ করতে পারে।
+এর পরিবর্তে অপ্টিমেস্টিক রোলআপস এমন ক্ষেত্রগুলো শনাক্ত করতে একটি ফ্রড-প্রুভিং স্কিমের ওপর নির্ভর করে যেখানে লেনদেনগুলো সঠিকভাবে হিসাব করা হয়নি। ইথিরিয়ামে একটি রোলআপ ব্যাচ সাবমিট করার পর, একটি নির্দিষ্ট সময়সীমা থাকে (যাকে চ্যালেঞ্জ পিরিয়ড বলা হয়) যার মধ্যে যে কেউ একটি [fraud proof](/glossary/#fraud-proof) কম্পিউট করে রোলআপ লেনদেনের ফলাফলকে চ্যালেঞ্জ করতে পারে।
-যদি ফ্রড প্রুফ সফল হয়, রোলআপ প্রোটোকল লেনদেন(গুলি) পুনরায় কার্যকর করে এবং রোলআপের স্টেট সেই অনুযায়ী আপডেট করে। একটি সফল ফ্রড প্রুফের অন্য প্রভাব হল যে একটি ব্লকে ভুলভাবে কার্যকর করা লেনদেন অন্তর্ভুক্ত করার জন্য দায়ী সিকোয়েন্সার একটি জরিমানা পায়।
+যদি ফ্রড প্রুফ সফল হয়, তবে রোলআপ প্রটোকল লেনদেন(গুলো) পুনরায় এক্সিকিউট করে এবং সেই অনুযায়ী রোলআপের স্টেট আপডেট করে। একটি সফল ফ্রড প্রুফের আরেকটি প্রভাব হলো যে সিকোয়েন্সার একটি ব্লকে ভুলভাবে এক্সিকিউট হওয়া লেনদেন অন্তর্ভুক্ত করার জন্য দায়ী, সে শাস্তি পায়।
-যদি রোলআপ ব্যাচটি চ্যালেঞ্জ পিরিয়ড শেষ হওয়ার পরে বিনা প্রতিদ্বন্দ্বিতায় থাকে (অর্থাৎ, সমস্ত লেনদেন সঠিকভাবে কার্যকর করা হয়), তবে এটি Ethereum-এ বৈধ এবং গৃহীত বলে বিবেচিত হয়। অন্যরা একটি অসমর্থিত রোলআপ ব্লকের উপর নির্মাণ চালিয়ে যেতে পারে, কিন্তু একটি সতর্কতার সাথে: যদি পূর্বে প্রকাশিত একটি ভুলভাবে সম্পাদিত লেনদেনের উপর ভিত্তি করে লেনদেনের ফলাফলগুলি বিপরীত হয়ে যাবে।
+চ্যালেঞ্জ পিরিয়ড শেষ হওয়ার পর যদি রোলআপ ব্যাচটি চ্যালেঞ্জবিহীন থাকে (অর্থাৎ, সমস্ত লেনদেন সঠিকভাবে এক্সিকিউট হয়েছে), তবে এটি বৈধ বলে বিবেচিত হয় এবং ইথিরিয়ামে গৃহীত হয়। অন্যরা একটি আনকনফার্মড রোলআপ ব্লকের ওপর কাজ চালিয়ে যেতে পারে, তবে একটি শর্ত থাকে: যদি এটি পূর্বে প্রকাশিত কোনো ভুলভাবে এক্সিকিউট হওয়া লেনদেনের ওপর ভিত্তি করে হয়, তবে লেনদেনের ফলাফল বাতিল করা হবে।
-## অপ্টিমেস্টিক রোলআপগুলি কীভাবে Ethereum-এর সাথে ইন্টারঅ্যাক্ট করে? {#optimistic-rollups-and-Ethereum}
+## অপ্টিমেস্টিক রোলআপস কীভাবে ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করে? {#optimistic-rollups-and-Ethereum}
-অপ্টিমেস্টিক রোলআপগুলি হলো [অফচেইন স্কেলিং সলিউশন](/developers/docs/scaling/#offchain-scaling) যা Ethereum-এর উপরে কাজ করার জন্য তৈরি করা হয়েছে। প্রতিটি অপ্টিমেস্টিক রোলআপ Ethereum নেটওয়ার্কে স্থাপন করা স্মার্ট কন্ট্র্যাক্টের একটি সেট দ্বারা পরিচালিত হয়। অপ্টিমেস্টিক রোলআপগুলি মূল Ethereum চেইনের বাইরে লেনদেন প্রক্রিয়া করে, কিন্তু একটি অনচেইন রোলআপ চুক্তিতে অফচেইন লেনদেন (ব্যাচে) পোস্ট করে। Ethereum ব্লকচেইনের মতো, এই লেনদেন রেকর্ডটি অপরিবর্তনীয় এবং "অপ্টিমেস্টিক রোলআপ চেইন" গঠন করে।
+অপ্টিমেস্টিক রোলআপস হলো [offchain scaling solutions](/developers/docs/scaling/#offchain-scaling) যা ইথিরিয়ামের ওপর কাজ করার জন্য তৈরি করা হয়েছে। প্রতিটি অপ্টিমেস্টিক রোলআপ ইথিরিয়াম নেটওয়ার্কে ডিপ্লয় করা এক সেট স্মার্ট কন্ট্রাক্ট দ্বারা পরিচালিত হয়। অপ্টিমেস্টিক রোলআপস মূল ইথিরিয়াম চেইনের বাইরে লেনদেন প্রসেস করে, কিন্তু অফচেইন লেনদেনগুলো (ব্যাচ আকারে) একটি অনচেইন রোলআপ কন্ট্রাক্টে পোস্ট করে। ইথিরিয়াম ব্লকচেইনের মতো, এই লেনদেনের রেকর্ডটি ইমমিউটেবল এবং এটি "অপ্টিমেস্টিক রোলআপ চেইন" গঠন করে।
-একটি অপ্টিমেস্টিক রোলআপের আর্কিটেকচারে নিম্নলিখিত অংশগুলি রয়েছে:
+একটি অপ্টিমেস্টিক রোলআপের আর্কিটেকচার নিচের অংশগুলো নিয়ে গঠিত:
-**অনচেইন চুক্তি**: অপ্টিমেস্টিক রোলআপের অপারেশন Ethereum-এ চলমান স্মার্ট কন্ট্র্যাক্ট দ্বারা নিয়ন্ত্রিত হয়। এর মধ্যে রয়েছে এমন চুক্তি যা রোলআপ ব্লকগুলি সংরক্ষণ করে, রোলআপে স্টেট আপডেটগুলি পর্যবেক্ষণ করে এবং ব্যবহারকারীর আমানত ট্র্যাক করে। এই অর্থে, Ethereum অপ্টিমেস্টিক রোলআপগুলির জন্য বেস লেয়ার বা "লেয়ার 1" হিসাবে কাজ করে।
+**অনচেইন কন্ট্রাক্টস**: অপ্টিমেস্টিক রোলআপের কার্যক্রম ইথিরিয়ামে চলা স্মার্ট কন্ট্রাক্ট দ্বারা নিয়ন্ত্রিত হয়। এর মধ্যে এমন কন্ট্রাক্ট অন্তর্ভুক্ত থাকে যা রোলআপ ব্লক সংরক্ষণ করে, রোলআপে স্টেট আপডেট মনিটর করে এবং ব্যবহারকারীর ডিপোজিট ট্র্যাক করে। এই অর্থে, ইথিরিয়াম অপ্টিমেস্টিক রোলআপের জন্য বেস লেয়ার বা "লেয়ার 1" হিসেবে কাজ করে।
-**অফচেইন ভার্চুয়াল মেশিন (VM)**: যদিও অপ্টিমেস্টিক রোলআপ প্রোটোকল পরিচালনাকারী চুক্তিগুলি Ethereum-এ চলে, রোলআপ প্রোটোকল [Ethereum ভার্চুয়াল মেশিন](/developers/docs/evm/) থেকে আলাদা একটি ভার্চুয়াল মেশিনে গণনা এবং স্টেট স্টোরেজ সম্পাদন করে। অফচেইন VM হল যেখানে অ্যাপ্লিকেশনগুলি থাকে এবং স্টেটের পরিবর্তনগুলি কার্যকর করা হয়; এটি একটি অপ্টিমেস্টিক রোলআপের জন্য উপরের লেয়ার বা "লেয়ার 2" হিসাবে কাজ করে।
+**অফচেইন ভার্চুয়াল মেশিন (VM)**: যদিও অপ্টিমেস্টিক রোলআপ প্রটোকল পরিচালনাকারী কন্ট্রাক্টগুলো ইথিরিয়ামে চলে, রোলআপ প্রটোকল [Ethereum Virtual Machine](/developers/docs/evm/) থেকে আলাদা অন্য একটি ভার্চুয়াল মেশিনে কম্পিউটেশন এবং স্টেট স্টোরেজ সম্পন্ন করে। অফচেইন VM-এ অ্যাপ্লিকেশনগুলো থাকে এবং স্টেট পরিবর্তনগুলো এক্সিকিউট হয়; এটি একটি অপ্টিমেস্টিক রোলআপের জন্য আপার লেয়ার বা "লেয়ার ২" হিসেবে কাজ করে।
-যেহেতু অপ্টিমেস্টিক রোলআপগুলি EVM-এর জন্য লিখিত বা কম্পাইল করা প্রোগ্রামগুলি চালানোর জন্য ডিজাইন করা হয়েছে, অফচেইন VM অনেক EVM ডিজাইন স্পেস অন্তর্ভুক্ত করে। অতিরিক্তভাবে, অনচেইনে গণনা করা ফ্রড প্রুফগুলি Ethereum নেটওয়ার্ককে অফচেইন VM-এ গণনা করা স্টেট পরিবর্তনের বৈধতা প্রয়োগ করতে দেয়।
+যেহেতু অপ্টিমেস্টিক রোলআপগুলো EVM-এর জন্য লেখা বা কম্পাইল করা প্রোগ্রাম চালানোর জন্য ডিজাইন করা হয়েছে, তাই অফচেইন VM অনেক EVM ডিজাইন স্পেকস অন্তর্ভুক্ত করে। অধিকন্তু, অনচেইনে কম্পিউট করা ফ্রড প্রুফ ইথিরিয়াম নেটওয়ার্ককে অফচেইন VM-এ কম্পিউট করা স্টেট পরিবর্তনের বৈধতা প্রয়োগ করতে দেয়।
-অপ্টিমেস্টিক রোলআপগুলিকে 'হাইব্রিড স্কেলিং সমাধান' হিসাবে বর্ণনা করা হয় কারণ, যদিও তারা পৃথক প্রোটোকল হিসাবে বিদ্যমান, তাদের নিরাপত্তা বৈশিষ্ট্যগুলি Ethereum থেকে প্রাপ্ত। অন্যান্য জিনিসের মধ্যে, Ethereum একটি রোলআপের অফচেইন গণনার সঠিকতা এবং গণনার পিছনে ডেটার প্রাপ্যতা নিশ্চিত করে। এটি অপ্টিমেস্টিক রোলআপগুলিকে বিশুদ্ধ অফচেইন স্কেলিং প্রোটোকলগুলির (যেমন, [সাইডচেইন](/developers/docs/scaling/sidechains/)) চেয়ে বেশি সুরক্ষিত করে যা নিরাপত্তার জন্য Ethereum-এর উপর নির্ভর করে না।
+অপ্টিমেস্টিক রোলআপগুলোকে 'হাইব্রিড স্কেলিং সলিউশন' হিসেবে বর্ণনা করা হয় কারণ, যদিও এগুলো আলাদা প্রটোকল হিসেবে বিদ্যমান, এদের নিরাপত্তা বৈশিষ্ট্যগুলো ইথিরিয়াম থেকে প্রাপ্ত। অন্যান্য বিষয়ের মধ্যে, ইথিরিয়াম একটি রোলআপের অফচেইন কম্পিউটেশনের সঠিকতা এবং কম্পিউটেশনের পেছনের ডাটা এভেইলএবিলিটি নিশ্চিত করে। এটি অপ্টিমেস্টিক রোলআপগুলোকে বিশুদ্ধ অফচেইন স্কেলিং প্রটোকলগুলোর (যেমন, [sidechains](/developers/docs/scaling/sidechains/)) চেয়ে বেশি সুরক্ষিত করে তোলে যা নিরাপত্তার জন্য ইথিরিয়ামের ওপর নির্ভর করে না।
-অপ্টিমেস্টিক রোলআপগুলি নিম্নলিখিতগুলির জন্য প্রধান Ethereum প্রোটোকলের উপর নির্ভর করে:
+অপ্টিমেস্টিক রোলআপস নিচের বিষয়গুলোর জন্য মূল ইথিরিয়াম প্রটোকলের ওপর নির্ভর করে:
-### ডেটা প্রাপ্যতা {#data-availability}
+### ডাটা এভেইলএবিলিটি {#data-availability}
-যেমন উল্লেখ করা হয়েছে, অপ্টিমেস্টিক রোলআপগুলি Ethereum-এ `calldata` বা [blobs](/roadmap/danksharding/) হিসাবে লেনদেনের ডেটা পোস্ট করে। যেহেতু রোলআপ চেইনের এক্সিকিউশন জমাকৃত লেনদেনের উপর ভিত্তি করে হয়, তাই যে কেউ Ethereum-এর বেস লেয়ারে নোঙর করা এই তথ্য ব্যবহার করে রোলআপের স্টেট কার্যকর করতে এবং স্টেট ট্রানজিশনের সঠিকতা যাচাই করতে পারে।
+যেমনটি উল্লেখ করা হয়েছে, অপ্টিমেস্টিক রোলআপস ইথিরিয়ামে লেনদেনের ডাটা `calldata` বা [blobs](/roadmap/danksharding/) হিসেবে পোস্ট করে। যেহেতু রোলআপ চেইনের এক্সিকিউশন সাবমিট করা লেনদেনের ওপর ভিত্তি করে হয়, তাই যে কেউ এই তথ্য ব্যবহার করে—যা ইথিরিয়ামের বেস লেয়ারে নোঙর করা থাকে—রোলআপের স্টেট এক্সিকিউট করতে এবং স্টেট ট্রানজিশনের সঠিকতা যাচাই করতে পারে।
-[ডেটা প্রাপ্যতা](/developers/docs/data-availability/) অত্যন্ত গুরুত্বপূর্ণ কারণ স্টেট ডেটাতে অ্যাক্সেস ছাড়া, চ্যালেঞ্জাররা অবৈধ রোলআপ অপারেশনগুলির বিরুদ্ধে বিতর্ক করার জন্য ফ্রড প্রুফ তৈরি করতে পারে না। Ethereum ডেটা প্রাপ্যতা প্রদান করার সাথে সাথে, রোলআপ অপারেটরদের দূষিত কাজ (যেমন, অবৈধ ব্লক জমা দেওয়া) থেকে রক্ষা পাওয়ার ঝুঁকি হ্রাস পায়।
+[Data availability](/developers/docs/data-availability/) অত্যন্ত গুরুত্বপূর্ণ কারণ স্টেট ডাটায় অ্যাক্সেস ছাড়া, চ্যালেঞ্জাররা অবৈধ রোলআপ অপারেশনগুলোর বিরোধিতা করার জন্য ফ্রড প্রুফ তৈরি করতে পারে না। ইথিরিয়াম ডাটা এভেইলএবিলিটি প্রদান করায়, রোলআপ অপারেটরদের ক্ষতিকারক কাজ (যেমন, অবৈধ ব্লক সাবমিট করা) করে পার পেয়ে যাওয়ার ঝুঁকি কমে যায়।
-### সেন্সরশিপ প্রতিরোধ {#censorship-resistance}
+### সেন্সরশিপ রেজিস্ট্যান্স {#censorship-resistance}
-অপ্টিমেস্টিক রোলআপগুলি সেন্সরশিপ প্রতিরোধের জন্য Ethereum-এর উপরও নির্ভর করে। একটি অপ্টিমেস্টিক রোলআপে একটি কেন্দ্রীভূত সত্তা (অপারেটর) লেনদেন প্রক্রিয়াকরণ এবং Ethereum-এ রোলআপ ব্লক জমা দেওয়ার জন্য দায়ী। এর কিছু প্রভাব রয়েছে:
+অপ্টিমেস্টিক রোলআপস সেন্সরশিপ রেজিস্ট্যান্সের জন্যও ইথিরিয়ামের ওপর নির্ভর করে। একটি অপ্টিমেস্টিক রোলআপে একটি সেন্ট্রালাইজড সত্তা (অপারেটর) লেনদেন প্রসেস করার এবং ইথিরিয়ামে রোলআপ ব্লক সাবমিট করার জন্য দায়ী থাকে। এর কিছু প্রভাব রয়েছে:
-- রোলআপ অপারেটররা সম্পূর্ণরূপে অফলাইনে গিয়ে ব্যবহারকারীদের সেন্সর করতে পারে, অথবা নির্দিষ্ট লেনদেন সহ ব্লক তৈরি করতে অস্বীকার করে।
+- রোলআপ অপারেটররা সম্পূর্ণ অফলাইনে গিয়ে, অথবা নির্দিষ্ট লেনদেন অন্তর্ভুক্ত করে এমন ব্লক তৈরি করতে অস্বীকার করে ব্যবহারকারীদের সেন্সর করতে পারে।
-- রোলআপ অপারেটররা মালিকানার মের্কেল প্রুফের জন্য প্রয়োজনীয় স্টেট ডেটা আটকে রেখে রোলআপ চুক্তিতে জমা করা তহবিল ব্যবহারকারীদের উত্তোলন করতে বাধা দিতে পারে। স্টেট ডেটা আটকে রাখা ব্যবহারকারীদের কাছ থেকে রোলআপের স্টেট গোপন করতে পারে এবং তাদের রোলআপের সাথে ইন্টারঅ্যাক্ট করতে বাধা দিতে পারে।
+- রোলআপ অপারেটররা মালিকানার মার্কেল প্রুফের জন্য প্রয়োজনীয় স্টেট ডাটা আটকে রেখে ব্যবহারকারীদের রোলআপ কন্ট্রাক্টে জমা করা ফান্ড তুলতে বাধা দিতে পারে। স্টেট ডাটা আটকে রাখা ব্যবহারকারীদের কাছ থেকে রোলআপের স্টেট গোপন করতে পারে এবং তাদের রোলআপের সাথে ইন্টারঅ্যাক্ট করতে বাধা দিতে পারে।
-অপ্টিমেস্টিক রোলআপগুলি অপারেটরদের Ethereum-এ স্টেট আপডেটের সাথে সম্পর্কিত ডেটা প্রকাশ করতে বাধ্য করে এই সমস্যার সমাধান করে। অনচেইনে রোলআপ ডেটা প্রকাশ করার নিম্নলিখিত সুবিধা রয়েছে:
+অপ্টিমেস্টিক রোলআপস অপারেটরদের ইথিরিয়ামে স্টেট আপডেটের সাথে সম্পর্কিত ডাটা প্রকাশ করতে বাধ্য করে এই সমস্যার সমাধান করে। অনচেইনে রোলআপ ডাটা প্রকাশ করার নিচের সুবিধাগুলো রয়েছে:
-- যদি একটি অপ্টিমেস্টিক রোলআপ অপারেটর অফলাইনে চলে যায় বা লেনদেন ব্যাচ তৈরি করা বন্ধ করে দেয়, তবে অন্য একটি নোড উপলব্ধ ডেটা ব্যবহার করে রোলআপের শেষ স্টেট পুনরুৎপাদন করতে এবং ব্লক উৎপাদন চালিয়ে যেতে পারে।
+- যদি কোনো অপ্টিমেস্টিক রোলআপ অপারেটর অফলাইনে যায় বা লেনদেনের ব্যাচ তৈরি করা বন্ধ করে দেয়, তবে অন্য একটি নোড উপলব্ধ ডাটা ব্যবহার করে রোলআপের শেষ স্টেট পুনরুৎপাদন করতে পারে এবং ব্লক তৈরি চালিয়ে যেতে পারে।
-- ব্যবহারকারীরা তহবিলের মালিকানা প্রমাণকারী মের্কেল প্রুফ তৈরি করতে এবং রোলআপ থেকে তাদের সম্পদ উত্তোলন করতে লেনদেনের ডেটা ব্যবহার করতে পারে।
+- ব্যবহারকারীরা লেনদেনের ডাটা ব্যবহার করে ফান্ডের মালিকানা প্রমাণ করার জন্য মার্কেল প্রুফ তৈরি করতে পারে এবং রোলআপ থেকে তাদের সম্পদ তুলে নিতে পারে।
-- ব্যবহারকারীরা সিকোয়েন্সারের কাছে না দিয়ে L1-এ তাদের লেনদেন জমা দিতে পারে, সেক্ষেত্রে সিকোয়েন্সারকে একটি নির্দিষ্ট সময়সীমার মধ্যে লেনদেনটি অন্তর্ভুক্ত করতে হবে যাতে বৈধ ব্লক তৈরি করা চালিয়ে যেতে পারে।
+- ব্যবহারকারীরা সিকোয়েন্সারের পরিবর্তে L1-এ তাদের লেনদেন সাবমিট করতে পারে, সেক্ষেত্রে বৈধ ব্লক তৈরি চালিয়ে যাওয়ার জন্য সিকোয়েন্সারকে একটি নির্দিষ্ট সময়সীমার মধ্যে লেনদেনটি অন্তর্ভুক্ত করতে হবে।
-### নিষ্পত্তি {#settlement}
+### সেটেলমেন্ট {#settlement}
-অপ্টিমেস্টিক রোলআপের প্রেক্ষাপটে Ethereum-এর আরেকটি ভূমিকা হল একটি সেটেলমেন্ট লেয়ার। একটি সেটেলমেন্ট লেয়ার সমগ্র ব্লকচেইন ইকোসিস্টেমকে নোঙ্গর করে, নিরাপত্তা প্রতিষ্ঠা করে, এবং যদি অন্য চেইনে (এই ক্ষেত্রে অপ্টিমেস্টিক রোলআপ) কোনো বিরোধ দেখা দেয় যার জন্য সালিশের প্রয়োজন হয় তবে উদ্দেশ্যমূলক ফাইনালিটি প্রদান করে।
+অপ্টিমেস্টিক রোলআপের প্রেক্ষাপটে ইথিরিয়াম যে আরেকটি ভূমিকা পালন করে তা হলো সেটেলমেন্ট লেয়ার। একটি সেটেলমেন্ট লেয়ার সম্পূর্ণ ব্লকচেইন ইকোসিস্টেমকে নোঙর করে, নিরাপত্তা প্রতিষ্ঠা করে এবং অন্য কোনো চেইনে (এক্ষেত্রে অপ্টিমেস্টিক রোলআপস) কোনো বিরোধ দেখা দিলে অবজেক্টিভ ফাইনালিটি প্রদান করে যার জন্য সালিশির প্রয়োজন হয়।
-Ethereum মেইননেট অপ্টিমেস্টিক রোলআপগুলির জন্য ফ্রড প্রুফ যাচাই করতে এবং বিরোধ নিষ্পত্তির জন্য একটি হাব সরবরাহ করে। তাছাড়া, রোলআপে পরিচালিত লেনদেনগুলি শুধুমাত্র চূড়ান্ত হয় _পরে_ যখন রোলআপ ব্লকটি Ethereum-এ গৃহীত হয়। একবার একটি রোলআপ লেনদেন Ethereum-এর বেস লেয়ারে প্রতিশ্রুতিবদ্ধ হলে, এটি রোল ব্যাক করা যাবে না (একটি চেইন পুনর্গঠনের অত্যন্ত অসম্ভাব্য ঘটনা ছাড়া)।
+ইথিরিয়াম মেইননেট অপ্টিমেস্টিক রোলআপগুলোর জন্য ফ্রড প্রুফ যাচাই করতে এবং বিরোধ নিষ্পত্তি করতে একটি হাব প্রদান করে। অধিকন্তু, রোলআপে পরিচালিত লেনদেনগুলো কেবল ইথিরিয়ামে রোলআপ ব্লক গৃহীত হওয়ার _পরই_ চূড়ান্ত হয়। একবার একটি রোলআপ লেনদেন ইথিরিয়ামের বেস লেয়ারে কমিট হয়ে গেলে, এটি আর রোলব্যাক করা যায় না (চেইন রিঅর্গানাইজেশনের অত্যন্ত বিরল ঘটনা ছাড়া)।
-## অপ্টিমেস্টিক রোলআপগুলি কীভাবে কাজ করে? {#how-optimistic-rollups-work}
+## অপ্টিমেস্টিক রোলআপস কীভাবে কাজ করে? {#how-optimistic-rollups-work}
-### লেনদেন সম্পাদন এবং একত্রীকরণ {#transaction-execution-and-aggregation}
+### লেনদেন এক্সিকিউশন এবং এগ্রিগেশন {#transaction-execution-and-aggregation}
-ব্যবহারকারীরা "অপারেটর"দের কাছে লেনদেন জমা দেন, যা অপ্টিমেস্টিক রোলআপে লেনদেন প্রক্রিয়াকরণের জন্য দায়ী নোড। এছাড়াও একটি "ভ্যালিডেটর" বা "এগ্রিগেটর" হিসাবে পরিচিত, অপারেটর লেনদেনগুলি একত্রিত করে, অন্তর্নিহিত ডেটা সংকুচিত করে এবং Ethereum-এ ব্লকটি প্রকাশ করে।
+ব্যবহারকারীরা "অপারেটরদের" কাছে লেনদেন সাবমিট করে, যারা হলো অপ্টিমেস্টিক রোলআপে লেনদেন প্রসেস করার জন্য দায়ী নোড। "ভ্যালিডেটর" বা "এগ্রিগেটর" হিসেবেও পরিচিত, অপারেটর লেনদেনগুলো এগ্রিগেট করে, অন্তর্নিহিত ডাটা কম্প্রেস করে এবং ইথিরিয়ামে ব্লক প্রকাশ করে।
-যদিও যে কেউ একজন ভ্যালিডেটর হতে পারে, অপ্টিমেস্টিক রোলআপ ভ্যালিডেটরদের অবশ্যই ব্লক তৈরির আগে একটি বন্ড প্রদান করতে হবে, অনেকটা [প্রুফ-অফ-স্টেক সিস্টেমের](/developers/docs/consensus-mechanisms/pos/) মতো। এই বন্ডটি স্ল্যাশ করা যেতে পারে যদি ভ্যালিডেটর একটি অবৈধ ব্লক পোস্ট করে বা একটি পুরানো-কিন্তু-অবৈধ ব্লকের উপর তৈরি করে (এমনকি যদি তাদের ব্লকটি বৈধ হয়)। এইভাবে অপ্টিমেস্টিক রোলআপগুলি ভ্যালিডেটরদের সৎভাবে কাজ করা নিশ্চিত করতে ক্রিপ্টো-অর্থনৈতিক প্রণোদনা ব্যবহার করে।
+যদিও যে কেউ ভ্যালিডেটর হতে পারে, অপ্টিমেস্টিক রোলআপ ভ্যালিডেটরদের ব্লক তৈরি করার আগে একটি বন্ড প্রদান করতে হয়, অনেকটা [proof-of-stake system](/developers/docs/consensus-mechanisms/pos/)-এর মতো। যদি ভ্যালিডেটর একটি অবৈধ ব্লক পোস্ট করে বা একটি পুরানো-কিন্তু-অবৈধ ব্লকের ওপর তৈরি করে (এমনকি তাদের ব্লকটি বৈধ হলেও) তবে এই বন্ডটি স্ল্যাশিং করা হতে পারে। এভাবে অপ্টিমেস্টিক রোলআপস ভ্যালিডেটররা সততার সাথে কাজ করে তা নিশ্চিত করতে ক্রিপ্টোইকোনমিক ইনসেনটিভ ব্যবহার করে।
-অপ্টিমেস্টিক রোলআপ চেইনের অন্যান্য ভ্যালিডেটরদের রোলআপের স্টেটের তাদের কপি ব্যবহার করে জমা দেওয়া লেনদেনগুলি কার্যকর করার আশা করা হয়। যদি একজন ভ্যালিডেটরের চূড়ান্ত স্টেট অপারেটরের প্রস্তাবিত স্টেট থেকে ভিন্ন হয়, তবে তারা একটি চ্যালেঞ্জ শুরু করতে পারে এবং একটি ফ্রড প্রুফ গণনা করতে পারে।
+অপ্টিমেস্টিক রোলআপ চেইনের অন্যান্য ভ্যালিডেটররা রোলআপের স্টেটের তাদের কপি ব্যবহার করে সাবমিট করা লেনদেনগুলো এক্সিকিউট করবে বলে আশা করা হয়। যদি কোনো ভ্যালিডেটরের চূড়ান্ত স্টেট অপারেটরের প্রস্তাবিত স্টেট থেকে আলাদা হয়, তবে তারা একটি চ্যালেঞ্জ শুরু করতে পারে এবং একটি ফ্রড প্রুফ কম্পিউট করতে পারে।
-কিছু অপ্টিমেস্টিক রোলআপ একটি অনুমতিহীন ভ্যালিডেটর সিস্টেম ত্যাগ করতে পারে এবং চেইন কার্যকর করার জন্য একটি একক "সিকোয়েন্সার" ব্যবহার করতে পারে। একজন ভ্যালিডেটরের মতো, সিকোয়েন্সার লেনদেন প্রক্রিয়া করে, রোলআপ ব্লক তৈরি করে এবং L1 চেইনে (Ethereum) রোলআপ লেনদেন জমা দেয়।
+কিছু অপ্টিমেস্টিক রোলআপ পারমিশনলেস ভ্যালিডেটর সিস্টেম বাদ দিয়ে চেইন এক্সিকিউট করার জন্য একটি একক "সিকোয়েন্সার" ব্যবহার করতে পারে। ভ্যালিডেটরের মতো, সিকোয়েন্সার লেনদেন প্রসেস করে, রোলআপ ব্লক তৈরি করে এবং L1 চেইনে (ইথিরিয়াম) রোলআপ লেনদেন সাবমিট করে।
-সিকোয়েন্সার একটি নিয়মিত রোলআপ অপারেটর থেকে ভিন্ন কারণ তাদের লেনদেন ক্রম করার উপর বৃহত্তর নিয়ন্ত্রণ রয়েছে। এছাড়াও, সিকোয়েন্সারের রোলআপ চেইনে অগ্রাধিকার অ্যাক্সেস রয়েছে এবং অনচেইন চুক্তিতে লেনদেন জমা দেওয়ার জন্য একমাত্র অনুমোদিত সত্তা। নন-সিকোয়েন্সার নোড বা নিয়মিত ব্যবহারকারীদের থেকে লেনদেনগুলি কেবল একটি পৃথক ইনবক্সে সারিবদ্ধ থাকে যতক্ষণ না সিকোয়েন্সার সেগুলিকে একটি নতুন ব্যাচে অন্তর্ভুক্ত করে।
+সিকোয়েন্সার একজন সাধারণ রোলআপ অপারেটরের চেয়ে আলাদা কারণ লেনদেনের ক্রম নির্ধারণের ওপর তাদের বেশি নিয়ন্ত্রণ থাকে। এছাড়া, সিকোয়েন্সারের রোলআপ চেইনে অগ্রাধিকারমূলক অ্যাক্সেস থাকে এবং এটিই একমাত্র সত্তা যা অনচেইন কন্ট্রাক্টে লেনদেন সাবমিট করার জন্য অনুমোদিত। নন-সিকোয়েন্সার নোড বা সাধারণ ব্যবহারকারীদের লেনদেনগুলো কেবল একটি আলাদা ইনবক্সে সারিবদ্ধ থাকে যতক্ষণ না সিকোয়েন্সার সেগুলোকে একটি নতুন ব্যাচে অন্তর্ভুক্ত করে।
-#### Ethereum-এ রোলআপ ব্লক জমা দেওয়া {#submitting-blocks-to-ethereum}
+#### ইথিরিয়ামে রোলআপ ব্লক সাবমিট করা {#submitting-blocks-to-ethereum}
-যেমন উল্লেখ করা হয়েছে, একটি অপ্টিমেস্টিক রোলআপের অপারেটর একটি ব্যাচে অফচেইন লেনদেনগুলি বান্ডিল করে এবং নোটরাইজেশনের জন্য Ethereum-এ পাঠায়। এই প্রক্রিয়ায় লেনদেন-সম্পর্কিত ডেটা সংকুচিত করা এবং এটি `calldata` বা ব্লবগুলিতে Ethereum-এ প্রকাশ করা জড়িত।
+যেমনটি উল্লেখ করা হয়েছে, একটি অপ্টিমেস্টিক রোলআপের অপারেটর অফচেইন লেনদেনগুলোকে একটি ব্যাচে বান্ডিল করে এবং নোটারাইজেশনের জন্য ইথিরিয়ামে পাঠায়। এই প্রক্রিয়ায় লেনদেন-সম্পর্কিত ডাটা কম্প্রেস করা এবং ইথিরিয়ামে `calldata` হিসেবে বা ব্লবসে প্রকাশ করা জড়িত।
-`calldata` একটি স্মার্ট কন্ট্র্যাক্টের একটি অপরিবর্তনযোগ্য, অ-স্থায়ী এলাকা যা বেশিরভাগ ক্ষেত্রে [মেমরির](/developers/docs/smart-contracts/anatomy/#memory) মতো আচরণ করে। যদিও `calldata` ব্লকচেইনের [ইতিহাস লগগুলির](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) অংশ হিসাবে অনচেইনে স্থায়ী থাকে, এটি Ethereum-এর স্টেটের অংশ হিসাবে সংরক্ষণ করা হয় না। যেহেতু `calldata` Ethereum-এর স্টেটের কোনো অংশ স্পর্শ করে না, তাই এটি অনচেইনে ডেটা সংরক্ষণের জন্য স্টেট থেকে সস্তা।
+`calldata` হলো একটি স্মার্ট কন্ট্রাক্টের একটি নন-মডিফায়েবল, নন-পারসিস্টেন্ট এরিয়া যা বেশিরভাগ ক্ষেত্রে [memory](/developers/docs/smart-contracts/anatomy/#memory)-এর মতো আচরণ করে। যদিও `calldata` ব্লকচেইনের [history logs](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)-এর অংশ হিসেবে অনচেইনে থাকে, এটি ইথিরিয়ামের স্টেটের অংশ হিসেবে সংরক্ষিত হয় না। যেহেতু `calldata` ইথিরিয়ামের স্টেটের কোনো অংশ স্পর্শ করে না, তাই অনচেইনে ডাটা সংরক্ষণের জন্য এটি স্টেটের চেয়ে সস্তা।
-`calldata` কীওয়ার্ডটি সলিডিটিতে এক্সিকিউশন সময়ে একটি স্মার্ট কন্ট্র্যাক্ট ফাংশনে আর্গুমেন্ট পাস করতেও ব্যবহৃত হয়। `calldata` একটি লেনদেনের সময় কল করা ফাংশনটিকে শনাক্ত করে এবং বাইটের একটি নির্বিচারে ক্রম আকারে ফাংশনে ইনপুট ধারণ করে।
+`calldata` কিওয়ার্ডটি সলিডিটিতে এক্সিকিউশনের সময় একটি স্মার্ট কন্ট্রাক্ট ফাংশনে আর্গুমেন্ট পাস করতেও ব্যবহৃত হয়। `calldata` একটি লেনদেনের সময় কল করা ফাংশনটিকে শনাক্ত করে এবং বাইটের একটি আরবিট্রারি সিকোয়েন্স আকারে ফাংশনের ইনপুটগুলো ধারণ করে।
-অপ্টিমেস্টিক রোলআপের প্রেক্ষাপটে, `calldata` অনচেইন চুক্তিতে সংকুচিত লেনদেনের ডেটা পাঠাতে ব্যবহৃত হয়। রোলআপ অপারেটর রোলআপ চুক্তিতে প্রয়োজনীয় ফাংশন কল করে এবং সংকুচিত ডেটা ফাংশন আর্গুমেন্ট হিসাবে পাস করে একটি নতুন ব্যাচ যোগ করে। `calldata` ব্যবহার করা ব্যবহারকারীর ফি হ্রাস করে কারণ রোলআপগুলির বেশিরভাগ খরচ অনচেইনে ডেটা সংরক্ষণ থেকে আসে।
+অপ্টিমেস্টিক রোলআপের প্রেক্ষাপটে, অনচেইন কন্ট্রাক্টে কম্প্রেস করা লেনদেনের ডাটা পাঠাতে `calldata` ব্যবহৃত হয়। রোলআপ অপারেটর রোলআপ কন্ট্রাক্টে প্রয়োজনীয় ফাংশন কল করে এবং কম্প্রেস করা ডাটাকে ফাংশন আর্গুমেন্ট হিসেবে পাস করে একটি নতুন ব্যাচ যোগ করে। `calldata` ব্যবহার করলে ব্যবহারকারীর ফি কমে যায় কারণ রোলআপগুলোর বেশিরভাগ খরচ অনচেইনে ডাটা সংরক্ষণ থেকে আসে।
-এই ধারণাটি কীভাবে কাজ করে তা দেখানোর জন্য একটি রোলআপ ব্যাচ জমা দেওয়ার [একটি উদাহরণ](https://eth.blockscout.com/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591) এখানে দেওয়া হল। সিকোয়েন্সার `appendSequencerBatch()` পদ্ধতিটি আহ্বান করেছে এবং `calldata` ব্যবহার করে ইনপুট হিসাবে সংকুচিত লেনদেনের ডেটা পাস করেছে।
+এই ধারণাটি কীভাবে কাজ করে তা দেখানোর জন্য এখানে একটি রোলআপ ব্যাচ সাবমিশনের [an example](https://eth.blockscout.com/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591) দেওয়া হলো। সিকোয়েন্সার `appendSequencerBatch()` মেথডটি ইনভোক করেছে এবং `calldata` ব্যবহার করে কম্প্রেস করা লেনদেনের ডাটাকে ইনপুট হিসেবে পাস করেছে।
-কিছু রোলআপ এখন Ethereum-এ লেনদেনের ব্যাচ পোস্ট করতে ব্লব ব্যবহার করে।
+কিছু রোলআপ এখন ইথিরিয়ামে লেনদেনের ব্যাচ পোস্ট করতে ব্লবস ব্যবহার করে।
-ব্লবগুলি অপরিবর্তনযোগ্য এবং অ-স্থায়ী (ঠিক `calldata`-এর মতো) কিন্তু ~18 দিন পরে ইতিহাস থেকে ছেঁটে ফেলা হয়। ব্লব সম্পর্কে আরও তথ্যের জন্য, দেখুন [ড্যাঙ্কশার্ডিং](/roadmap/danksharding)।
+ব্লবস নন-মডিফায়েবল এবং নন-পারসিস্টেন্ট (`calldata`-এর মতোই) তবে ~18 দিন পর ইতিহাস থেকে মুছে ফেলা হয়। ব্লবস সম্পর্কে আরও তথ্যের জন্য, [Danksharding](/roadmap/danksharding) দেখুন।
-### স্টেট কমিটমেন্ট {#state-commitments}
+### স্টেট কমিটমেন্টস {#state-commitments}
-যেকোনো সময়ে, অপ্টিমেস্টিক রোলআপের স্টেট (অ্যাকাউন্ট, ব্যালেন্স, কন্ট্র্যাক্ট কোড, ইত্যাদি) একটি [মের্কেল ট্রি](/whitepaper/#merkle-trees) হিসাবে সংগঠিত হয় যাকে “স্টেট ট্রি” বলা হয়। এই মের্কেল ট্রি-এর রুট (স্টেট রুট), যা রোলআপের সর্বশেষ স্টেটকে নির্দেশ করে, তা হ্যাশ করে রোলআপ চুক্তিতে সংরক্ষণ করা হয়। চেইনের প্রতিটি স্টেট ট্রানজিশন একটি নতুন রোলআপ স্টেট তৈরি করে, যা একজন অপারেটর একটি নতুন স্টেট রুট গণনা করে প্রতিশ্রুতিবদ্ধ হয়।
+যেকোনো সময়ে, অপ্টিমেস্টিক রোলআপের স্টেট (একাউন্ট, ব্যালেন্স, কন্ট্রাক্ট কোড ইত্যাদি) একটি "স্টেট ট্রি" নামক [Merkle tree](/whitepaper/#merkle-trees) হিসেবে সাজানো থাকে। এই মার্কেল ট্রির রুট (স্টেট রুট), যা রোলআপের সর্বশেষ স্টেটকে রেফারেন্স করে, তা হ্যাস করা হয় এবং রোলআপ কন্ট্রাক্টে সংরক্ষণ করা হয়। চেইনে প্রতিটি স্টেট ট্রানজিশন একটি নতুন রোলআপ স্টেট তৈরি করে, যা একজন অপারেটর একটি নতুন স্টেট রুট কম্পিউট করে কমিট করে।
-অপারেটরকে ব্যাচ পোস্ট করার সময় পুরানো স্টেট রুট এবং নতুন স্টেট রুট উভয়ই জমা দিতে হয়। যদি পুরানো স্টেট রুট অনচেইন চুক্তিতে বিদ্যমান স্টেট রুটের সাথে মিলে যায়, তবে পরেরটি বাতিল করা হয় এবং নতুন স্টেট রুট দ্বারা প্রতিস্থাপিত হয়।
+ব্যাচ পোস্ট করার সময় অপারেটরকে পুরানো স্টেট রুট এবং নতুন স্টেট রুট উভয়ই সাবমিট করতে হয়। যদি পুরানো স্টেট রুট অনচেইন কন্ট্রাক্টে বিদ্যমান স্টেট রুটের সাথে মিলে যায়, তবে পরেরটি বাতিল করা হয় এবং নতুন স্টেট রুট দিয়ে প্রতিস্থাপন করা হয়।
-রোলআপ অপারেটরকে লেনদেন ব্যাচের জন্যও একটি মের্কেল রুট প্রতিশ্রুতিবদ্ধ করতে হয়। এটি যে কাউকে একটি [মের্কেল প্রুফ](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) উপস্থাপন করে ব্যাচে (L1-এ) একটি লেনদেন অন্তর্ভুক্ত করার প্রমাণ করতে দেয়।
+রোলআপ অপারেটরকে লেনদেনের ব্যাচের জন্যও একটি মার্কেল রুট কমিট করতে হয়। এটি যে কাউকে একটি [Merkle proof](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) উপস্থাপন করে ব্যাচে (L1-এ) একটি লেনদেনের অন্তর্ভুক্তি প্রমাণ করতে দেয়।
-স্টেট প্রতিশ্রুতি, বিশেষ করে স্টেট রুট, একটি অপ্টিমেস্টিক রোলআপে স্টেট পরিবর্তনের সঠিকতা প্রমাণ করার জন্য প্রয়োজনীয়। রোলআপ চুক্তি অপারেটরদের থেকে নতুন স্টেট রুটগুলি পোস্ট করার সাথে সাথেই গ্রহণ করে, কিন্তু পরে রোলআপকে তার সঠিক স্টেটে পুনরুদ্ধার করার জন্য অবৈধ স্টেট রুটগুলি মুছে ফেলতে পারে।
+স্টেট কমিটমেন্টস, বিশেষ করে স্টেট রুটস, একটি অপ্টিমেস্টিক রোলআপে স্টেট পরিবর্তনের সঠিকতা প্রমাণের জন্য প্রয়োজনীয়। রোলআপ কন্ট্রাক্ট অপারেটরদের কাছ থেকে নতুন স্টেট রুটগুলো পোস্ট করার পরপরই গ্রহণ করে, তবে পরে রোলআপটিকে তার সঠিক স্টেটে ফিরিয়ে আনতে অবৈধ স্টেট রুটগুলো মুছে ফেলতে পারে।
-### জালিয়াতি প্রমাণ {#fraud-proving}
+### ফ্রড প্রুভিং {#fraud-proving}
-যেমন ব্যাখ্যা করা হয়েছে, অপ্টিমেস্টিক রোলআপগুলি যে কাউকে বৈধতার প্রমাণ না দিয়ে ব্লক প্রকাশ করার অনুমতি দেয়। তবে, চেইনটি নিরাপদ থাকে তা নিশ্চিত করার জন্য, অপ্টিমেস্টিক রোলআপগুলি একটি সময় উইন্ডো নির্দিষ্ট করে যার সময় যে কেউ একটি স্টেট ট্রানজিশনকে বিতর্ক করতে পারে। অতএব, রোলআপ ব্লকগুলিকে “অ্যাসারশন” বলা হয় কারণ যে কেউ তাদের বৈধতাকে বিতর্ক করতে পারে।
+যেমনটি ব্যাখ্যা করা হয়েছে, অপ্টিমেস্টিক রোলআপস যে কাউকে ভ্যালিডিটি প্রুফ প্রদান না করেই ব্লক প্রকাশ করতে দেয়। তবে, চেইনটি নিরাপদ থাকে তা নিশ্চিত করতে, অপ্টিমেস্টিক রোলআপস একটি সময়সীমা নির্দিষ্ট করে যার মধ্যে যে কেউ একটি স্টেট ট্রানজিশনের বিরোধিতা করতে পারে। তাই, রোলআপ ব্লকগুলোকে "অ্যাসারশনস" বলা হয় কারণ যে কেউ তাদের বৈধতার বিরোধিতা করতে পারে।
-যদি কেউ একটি অ্যাসারশন নিয়ে বিতর্ক করে, তবে রোলআপ প্রোটোকল ফ্রড প্রুফ গণনা শুরু করবে। প্রত্যেক প্রকারের ফ্রড প্রুফ ইন্টারেক্টিভ—অন্য কেউ এটি চ্যালেঞ্জ করার আগে কাউকে একটি অ্যাসারশন পোস্ট করতে হবে। পার্থক্যটি ফ্রড প্রুফ গণনা করতে কত রাউন্ডের মিথস্ক্রিয়া প্রয়োজন তার মধ্যে নিহিত।
+যদি কেউ কোনো অ্যাসারশনের বিরোধিতা করে, তবে রোলআপ প্রটোকল ফ্রড প্রুফ কম্পিউটেশন শুরু করবে। প্রতিটি ধরনের ফ্রড প্রুফ ইন্টারঅ্যাকটিভ—অন্য কেউ এটিকে চ্যালেঞ্জ করার আগে কাউকে অবশ্যই একটি অ্যাসারশন পোস্ট করতে হবে। পার্থক্যটি হলো ফ্রড প্রুফ কম্পিউট করতে কত রাউন্ড ইন্টারঅ্যাকশনের প্রয়োজন হয় তার মধ্যে।
-একক-রাউন্ডের ইন্টারেক্টিভ প্রমাণ প্রকল্পগুলি অবৈধ অ্যাসারশন সনাক্ত করতে L1-এ বিতর্কিত লেনদেনগুলি পুনরায় চালায়। রোলআপ প্রোটোকল একটি ভেরিফায়ার চুক্তি ব্যবহার করে L1 (Ethereum)-এ বিতর্কিত লেনদেনের পুনরায় এক্সিকিউশন অনুকরণ করে, যেখানে গণনা করা স্টেট রুট নির্ধারণ করে কে চ্যালেঞ্জে জিতবে। তবে, চ্যালেঞ্জারের দাবি যদি রোলআপের সঠিক স্টেট সম্পর্কে সঠিক হয়, তবে অপারেটরকে তার বন্ড স্ল্যাশ করে শাস্তি দেওয়া হয়।
+সিঙ্গেল-রাউন্ড ইন্টারঅ্যাকটিভ প্রুভিং স্কিমগুলো অবৈধ অ্যাসারশন শনাক্ত করতে L1-এ বিরোধপূর্ণ লেনদেনগুলো রিপ্লে করে। রোলআপ প্রটোকল একটি ভেরিফায়ার কন্ট্রাক্ট ব্যবহার করে L1-এ (ইথিরিয়াম) বিরোধপূর্ণ লেনদেনের রি-এক্সিকিউশন এমুলেট করে, যেখানে কম্পিউট করা স্টেট রুট নির্ধারণ করে কে চ্যালেঞ্জে জিতবে। যদি রোলআপের সঠিক স্টেট সম্পর্কে চ্যালেঞ্জারের দাবি সঠিক হয়, তবে অপারেটরের বন্ড স্ল্যাশিং করে তাকে শাস্তি দেওয়া হয়।
-তবে, জালিয়াতি সনাক্ত করতে L1-এ লেনদেন পুনরায় কার্যকর করার জন্য পৃথক লেনদেনের জন্য স্টেট প্রতিশ্রুতি প্রকাশ করতে হয় এবং রোলআপগুলিকে অনচেইনে প্রকাশ করতে হবে এমন ডেটার পরিমাণ বাড়িয়ে দেয়। লেনদেন পুনরায় প্লে করাও উল্লেখযোগ্য গ্যাস খরচ করে। এই কারণগুলির জন্য, অপ্টিমেস্টিক রোলআপগুলি মাল্টি-রাউন্ড ইন্টারেক্টিভ প্রুভিং-এ স্যুইচ করছে, যা একই উদ্দেশ্য (অর্থাৎ, অবৈধ রোলআপ অপারেশন সনাক্ত করা) আরও দক্ষতার সাথে অর্জন করে।
+তবে, জালিয়াতি শনাক্ত করতে L1-এ লেনদেন রি-এক্সিকিউট করার জন্য পৃথক লেনদেনের স্টেট কমিটমেন্ট প্রকাশ করা প্রয়োজন এবং এটি রোলআপগুলোকে অনচেইনে প্রকাশ করতে হবে এমন ডাটা বৃদ্ধি করে। লেনদেন রিপ্লে করার ফলে উল্লেখযোগ্য গ্যাস খরচও হয়। এই কারণগুলোর জন্য, অপ্টিমেস্টিক রোলআপস মাল্টি-রাউন্ড ইন্টারঅ্যাকটিভ প্রুভিং-এ স্যুইচ করছে, যা আরও দক্ষতার সাথে একই উদ্দেশ্য (অর্থাৎ, অবৈধ রোলআপ অপারেশন শনাক্ত করা) অর্জন করে।
-#### মাল্টি-রাউন্ড ইন্টারেক্টিভ প্রুভিং {#multi-round-interactive-proving}
+#### মাল্টি-রাউন্ড ইন্টারঅ্যাকটিভ প্রুভিং {#multi-round-interactive-proving}
-মাল্টি-রাউন্ড ইন্টারেক্টিভ প্রুভিং-এ অ্যাসার্টার এবং চ্যালেঞ্জারের মধ্যে একটি ব্যাক-এন্ড-ফোর্থ প্রোটোকল জড়িত থাকে যা একটি L1 ভেরিফায়ার চুক্তি দ্বারা তত্ত্বাবধান করা হয়, যা শেষ পর্যন্ত মিথ্যাবাদী পক্ষকে সিদ্ধান্ত নেয়। একটি L2 নোড একটি অ্যাসারশনকে চ্যালেঞ্জ করার পরে, অ্যাসার্টারকে বিতর্কিত অ্যাসারশনটিকে দুটি সমান অর্ধে ভাগ করতে হয়। এই ক্ষেত্রে প্রতিটি পৃথক অ্যাসারশনে অন্যটির মতো একই সংখ্যক গণনার ধাপ থাকবে।
+মাল্টি-রাউন্ড ইন্টারঅ্যাকটিভ প্রুভিং-এ অ্যাসার্টার এবং চ্যালেঞ্জারের মধ্যে একটি ব্যাক-অ্যান্ড-ফোর্থ প্রটোকল জড়িত থাকে যা একটি L1 ভেরিফায়ার কন্ট্রাক্ট দ্বারা তদারকি করা হয়, যা শেষ পর্যন্ত মিথ্যাবাদী পক্ষকে নির্ধারণ করে। একটি L2 নোড একটি অ্যাসারশনকে চ্যালেঞ্জ করার পর, অ্যাসার্টারকে বিরোধপূর্ণ অ্যাসারশনটিকে দুটি সমান ভাগে ভাগ করতে হয়। এক্ষেত্রে প্রতিটি পৃথক অ্যাসারশনে অন্যটির সমান সংখ্যক কম্পিউটেশন স্টেপ থাকবে।
-চ্যালেঞ্জার তখন বেছে নেবে সে কোন অ্যাসারশনকে চ্যালেঞ্জ করতে চায়। বিভাজন প্রক্রিয়া (যাকে “বাইসেকশন প্রোটোকল” বলা হয়) চলতে থাকে যতক্ষণ না উভয় পক্ষ এক্সিকিউশনের একটি _একক_ ধাপ সম্পর্কে একটি অ্যাসারশন নিয়ে বিতর্ক করছে। এই সময়ে, L1 চুক্তিটি নির্দেশ (এবং এর ফলাফল) মূল্যায়ন করে বিতর্কটির সমাধান করবে যাতে প্রতারণামূলক পক্ষকে ধরা যায়।
+চ্যালেঞ্জার তখন বেছে নেবে সে কোন অ্যাসারশনটিকে চ্যালেঞ্জ করতে চায়। ভাগ করার প্রক্রিয়াটি (যাকে "বাইসেকশন প্রটোকল" বলা হয়) চলতে থাকে যতক্ষণ না উভয় পক্ষ এক্সিকিউশনের একটি _একক_ স্টেপ সম্পর্কে একটি অ্যাসারশনের বিরোধিতা করে। এই পর্যায়ে, L1 কন্ট্রাক্ট প্রতারক পক্ষকে ধরার জন্য নির্দেশ (এবং এর ফলাফল) মূল্যায়ন করে বিরোধের সমাধান করবে।
-অ্যাসার্টারকে বিতর্কিত একক-ধাপ গণনার বৈধতা যাচাই করে একটি “এক-ধাপ প্রমাণ” সরবরাহ করতে হবে। যদি অ্যাসার্টার এক-ধাপ প্রমাণ সরবরাহ করতে ব্যর্থ হয়, অথবা L1 ভেরিফায়ার প্রমাণটি অবৈধ বলে মনে করে, তবে তারা চ্যালেঞ্জে হেরে যায়।
+অ্যাসার্টারকে বিরোধপূর্ণ সিঙ্গেল-স্টেপ কম্পিউটেশনের বৈধতা যাচাই করে একটি "ওয়ান-স্টেপ প্রুফ" প্রদান করতে হয়। যদি অ্যাসার্টার ওয়ান-স্টেপ প্রুফ প্রদান করতে ব্যর্থ হয়, বা L1 ভেরিফায়ার প্রুফটিকে অবৈধ বলে মনে করে, তবে তারা চ্যালেঞ্জে হেরে যায়।
এই ধরনের ফ্রড প্রুফ সম্পর্কে কিছু নোট:
-1. মাল্টি-রাউন্ড ইন্টারেক্টিভ ফ্রড প্রুভিং দক্ষ বলে মনে করা হয় কারণ এটি বিতর্ক সালিশে L1 চেইনকে যে কাজটি করতে হবে তা হ্রাস করে। পুরো লেনদেনটি পুনরায় প্লে করার পরিবর্তে, L1 চেইনকে কেবল রোলআপের এক্সিকিউশনে একটি ধাপ পুনরায় কার্যকর করতে হবে।
+1. মাল্টি-রাউন্ড ইন্টারঅ্যাকটিভ ফ্রড প্রুভিং দক্ষ বলে বিবেচিত হয় কারণ এটি বিরোধ সালিশিতে L1 চেইনকে যে কাজ করতে হয় তা কমিয়ে দেয়। সম্পূর্ণ লেনদেন রিপ্লে করার পরিবর্তে, L1 চেইনকে কেবল রোলআপের এক্সিকিউশনের একটি স্টেপ রি-এক্সিকিউট করতে হয়।
-2. বাইসেকশন প্রোটোকলগুলি অনচেইনে পোস্ট করা ডেটার পরিমাণ হ্রাস করে (প্রতিটি লেনদেনের জন্য স্টেট কমিট প্রকাশ করার প্রয়োজন নেই)। এছাড়াও, অপ্টিমেস্টিক রোলআপ লেনদেনগুলি Ethereum-এর গ্যাস লিমিট দ্বারা সীমাবদ্ধ নয়। বিপরীতে, লেনদেন পুনরায় কার্যকর করা অপ্টিমেস্টিক রোলআপগুলিকে অবশ্যই নিশ্চিত করতে হবে যে একটি L2 লেনদেনের গ্যাস লিমিট কম রয়েছে যাতে এটি একটি একক Ethereum লেনদেনের মধ্যে তার এক্সিকিউশন অনুকরণ করতে পারে।
+2. বাইসেকশন প্রটোকলগুলো অনচেইনে পোস্ট করা ডাটার পরিমাণ কমায় (প্রতিটি লেনদেনের জন্য স্টেট কমিট প্রকাশ করার প্রয়োজন নেই)। এছাড়া, অপ্টিমেস্টিক রোলআপ লেনদেনগুলো ইথিরিয়ামের গ্যাস লিমিট দ্বারা সীমাবদ্ধ নয়। বিপরীতভাবে, লেনদেন রি-এক্সিকিউট করা অপ্টিমেস্টিক রোলআপগুলোকে অবশ্যই নিশ্চিত করতে হবে যে একটি একক ইথিরিয়াম লেনদেনের মধ্যে এর এক্সিকিউশন এমুলেট করার জন্য একটি L2 লেনদেনের গ্যাস লিমিট কম থাকে।
-3. দূষিত অ্যাসার্টারের বন্ডের একটি অংশ চ্যালেঞ্জারকে পুরস্কৃত করা হয়, যখন অন্য অংশটি পুড়িয়ে ফেলা হয়। বার্নিং ভ্যালিডেটরদের মধ্যে যোগসাজশ প্রতিরোধ করে; যদি দুটি ভ্যালিডেটর ভুয়া চ্যালেঞ্জ শুরু করার জন্য যোগসাজশ করে, তবে তারা এখনও পুরো স্টেকের একটি উল্লেখযোগ্য অংশ বাজেয়াপ্ত করবে।
+3. ক্ষতিকারক অ্যাসার্টারের বন্ডের একটি অংশ চ্যালেঞ্জারকে পুরস্কৃত করা হয়, যখন অন্য অংশটি বার্ন করা হয়। বার্নিং ভ্যালিডেটরদের মধ্যে যোগসাজশ প্রতিরোধ করে; যদি দুজন ভ্যালিডেটর ভুয়া চ্যালেঞ্জ শুরু করার জন্য যোগসাজশ করে, তবুও তারা সম্পূর্ণ স্টেকের একটি উল্লেখযোগ্য অংশ হারাবে।
-4. মাল্টি-রাউন্ড ইন্টারেক্টিভ প্রুভিং-এর জন্য উভয় পক্ষকে (অ্যাসার্টার এবং চ্যালেঞ্জার) নির্দিষ্ট সময় উইন্ডোর মধ্যে পদক্ষেপ নিতে হয়। সময়সীমা শেষ হওয়ার আগে কাজ করতে ব্যর্থ হলে খেলাপি পক্ষ চ্যালেঞ্জটি বাজেয়াপ্ত করে।
+4. মাল্টি-রাউন্ড ইন্টারঅ্যাকটিভ প্রুভিং-এ উভয় পক্ষকে (অ্যাসার্টার এবং চ্যালেঞ্জার) নির্দিষ্ট সময়সীমার মধ্যে পদক্ষেপ নিতে হয়। সময়সীমা শেষ হওয়ার আগে কাজ করতে ব্যর্থ হলে ডিফল্টিং পক্ষ চ্যালেঞ্জটি হারায়।
#### অপ্টিমেস্টিক রোলআপের জন্য ফ্রড প্রুফ কেন গুরুত্বপূর্ণ {#fraud-proof-benefits}
-ফ্রড প্রুফগুলি গুরুত্বপূর্ণ কারণ তারা অপ্টিমেস্টিক রোলআপগুলিতে _বিশ্বাসহীন ফাইনালিটি_ সহজতর করে। ট্রাস্টলেস ফাইনালিটি হল অপ্টিমেস্টিক রোলআপের একটি গুণ যা নিশ্চিত করে যে একটি লেনদেন - যতক্ষণ এটি বৈধ - অবশেষে নিশ্চিত করা হবে।
+ফ্রড প্রুফ গুরুত্বপূর্ণ কারণ এগুলো অপ্টিমেস্টিক রোলআপে _ট্রাস্টলেস ফাইনালিটি_ সহজতর করে। ট্রাস্টলেস ফাইনালিটি হলো অপ্টিমেস্টিক রোলআপের একটি গুণ যা গ্যারান্টি দেয় যে একটি লেনদেন—যতক্ষণ এটি বৈধ—অবশেষে কনফার্ম হবে।
-দূষিত নোডগুলি মিথ্যা চ্যালেঞ্জ শুরু করে একটি বৈধ রোলআপ ব্লকের নিশ্চিতকরণ বিলম্বিত করার চেষ্টা করতে পারে। তবে, ফ্রড প্রুফগুলি অবশেষে রোলআপ ব্লকের বৈধতা প্রমাণ করবে এবং এটি নিশ্চিত করার কারণ হবে।
+ক্ষতিকারক নোডগুলো মিথ্যা চ্যালেঞ্জ শুরু করে একটি বৈধ রোলআপ ব্লকের কনফার্মেশন বিলম্বিত করার চেষ্টা করতে পারে। তবে, ফ্রড প্রুফ শেষ পর্যন্ত রোলআপ ব্লকের বৈধতা প্রমাণ করবে এবং এটিকে কনফার্ম করবে।
-এটি অপ্টিমেস্টিক রোলআপের আরেকটি নিরাপত্তা বৈশিষ্ট্যের সাথেও সম্পর্কিত: চেইনের বৈধতা _একটি_ সৎ নোডের অস্তিত্বের উপর নির্ভর করে। সৎ নোডটি বৈধ অ্যাসারশন পোস্ট করে বা অবৈধ অ্যাসারশন বিতর্ক করে চেইনটিকে সঠিকভাবে এগিয়ে নিয়ে যেতে পারে। যে কোনো ক্ষেত্রেই, সৎ নোডের সাথে বিতর্কে প্রবেশকারী দূষিত নোডগুলি ফ্রড প্রুভিং প্রক্রিয়ার সময় তাদের স্টেক হারাবে।
+এটি অপ্টিমেস্টিক রোলআপের আরেকটি নিরাপত্তা বৈশিষ্ট্যের সাথেও সম্পর্কিত: চেইনের বৈধতা _একটি_ সৎ নোডের অস্তিত্বের ওপর নির্ভর করে। সৎ নোডটি বৈধ অ্যাসারশন পোস্ট করে বা অবৈধ অ্যাসারশনের বিরোধিতা করে চেইনটিকে সঠিকভাবে এগিয়ে নিতে পারে। যাই হোক না কেন, যে ক্ষতিকারক নোডগুলো সৎ নোডের সাথে বিরোধে জড়ায় তারা ফ্রড প্রুভিং প্রক্রিয়ার সময় তাদের স্টেক হারাবে।
-### L1/L2 আন্তঃকার্যক্ষমতা {#l1-l2-interoperability}
+### L1/L2 ইন্টারঅপারেবিলিটি {#l1-l2-interoperability}
-অপ্টিমেস্টিক রোলআপগুলি Ethereum মেইননেটের সাথে আন্তঃকার্যক্ষমতার জন্য ডিজাইন করা হয়েছে এবং ব্যবহারকারীদের L1 এবং L2 এর মধ্যে বার্তা এবং নির্বিচারে ডেটা পাস করার অনুমতি দেয়। তারা EVM-এর সাথেও সামঞ্জস্যপূর্ণ, তাই আপনি অপ্টিমেস্টিক রোলআপগুলিতে বিদ্যমান [ডিএ্যাপস](/developers/docs/dapps/) পোর্ট করতে পারেন বা Ethereum ডেভেলপমেন্ট টুল ব্যবহার করে নতুন ডিএ্যাপস তৈরি করতে পারেন।
+অপ্টিমেস্টিক রোলআপস ইথিরিয়াম মেইননেটের সাথে ইন্টারঅপারেবিলিটির জন্য ডিজাইন করা হয়েছে এবং ব্যবহারকারীদের L1 এবং L2-এর মধ্যে মেসেজ এবং আরবিট্রারি ডাটা পাস করতে দেয়। এগুলো EVM-এর সাথেও সামঞ্জস্যপূর্ণ, তাই আপনি বিদ্যমান [dapps](/developers/docs/dapps/) অপ্টিমেস্টিক রোলআপে পোর্ট করতে পারেন বা ইথিরিয়াম ডেভেলপমেন্ট টুলস ব্যবহার করে নতুন ডিএ্যাপস তৈরি করতে পারেন।
-#### ১. সম্পদ চলাচল {#asset-movement}
+#### ১. অ্যাসেট মুভমেন্ট {#asset-movement}
##### রোলআপে প্রবেশ করা
-একটি অপ্টিমেস্টিক রোলআপ ব্যবহার করতে, ব্যবহারকারীরা L1-এ রোলআপের [ব্রিজ](/developers/docs/bridges/) চুক্তিতে ETH, ERC-20 টোকেন এবং অন্যান্য গৃহীত সম্পদ জমা দেয়। ব্রিজ চুক্তিটি লেনদেনটি L2-এ রিলে করবে, যেখানে একটি সমতুল্য পরিমাণ সম্পদ মিন্ট করা হয় এবং অপ্টিমেস্টিক রোলআপে ব্যবহারকারীর নির্বাচিত ঠিকানায় পাঠানো হয়।
+একটি অপ্টিমেস্টিক রোলআপ ব্যবহার করতে, ব্যবহারকারীরা L1-এ রোলআপের [bridge](/developers/docs/bridges/) কন্ট্রাক্টে ETH, ERC-20 টোকেন এবং অন্যান্য গৃহীত সম্পদ জমা করে। ব্রিজ কন্ট্রাক্ট লেনদেনটিকে L2-তে রিলে করবে, যেখানে সমপরিমাণ সম্পদ মিন্ট করা হয় এবং অপ্টিমেস্টিক রোলআপে ব্যবহারকারীর নির্বাচিত এডড্রেসে পাঠানো হয়।
-ব্যবহারকারী-উৎপাদিত লেনদেন (যেমন একটি L1 > L2 আমানত) সাধারণত সারিবদ্ধ থাকে যতক্ষণ না সিকোয়েন্সার সেগুলিকে রোলআপ চুক্তিতে পুনরায় জমা দেয়। তবে, সেন্সরশিপ প্রতিরোধ রক্ষা করার জন্য, অপ্টিমেস্টিক রোলআপগুলি ব্যবহারকারীদের একটি লেনদেন সরাসরি অনচেইন রোলআপ চুক্তিতে জমা দেওয়ার অনুমতি দেয় যদি এটি অনুমোদিত সর্বোচ্চ সময়ের চেয়ে বেশি বিলম্বিত হয়ে থাকে।
+ব্যবহারকারী-উত্পন্ন লেনদেনগুলো (যেমন একটি L1 > L2 ডিপোজিট) সাধারণত সারিবদ্ধ থাকে যতক্ষণ না সিকোয়েন্সার সেগুলোকে রোলআপ কন্ট্রাক্টে পুনরায় সাবমিট করে। তবে, সেন্সরশিপ রেজিস্ট্যান্স বজায় রাখতে, অপ্টিমেস্টিক রোলআপস ব্যবহারকারীদের সরাসরি অনচেইন রোলআপ কন্ট্রাক্টে একটি লেনদেন সাবমিট করার অনুমতি দেয় যদি এটি অনুমোদিত সর্বোচ্চ সময়ের চেয়ে বেশি বিলম্বিত হয়।
-কিছু অপ্টিমেস্টিক রোলআপ সিকোয়েন্সারদের ব্যবহারকারীদের সেন্সর করা থেকে বিরত রাখতে আরও সহজবোধ্য পদ্ধতি গ্রহণ করে। এখানে, একটি ব্লক রোলআপ চেইনে প্রক্রিয়া করা লেনদেনগুলি ছাড়াও পূর্ববর্তী ব্লক (যেমন, আমানত) থেকে L1 চুক্তিতে জমা দেওয়া সমস্ত লেনদেন দ্বারা সংজ্ঞায়িত করা হয়। যদি একজন সিকোয়েন্সার একটি L1 লেনদেন উপেক্ষা করে, তবে এটি (প্রমাণযোগ্যভাবে) ভুল স্টেট রুট প্রকাশ করবে; তাই, সিকোয়েন্সাররা L1-এ পোস্ট করার পরে ব্যবহারকারী-উৎপাদিত বার্তাগুলি বিলম্বিত করতে পারে না।
+কিছু অপ্টিমেস্টিক রোলআপ সিকোয়েন্সারদের ব্যবহারকারীদের সেন্সর করা থেকে বিরত রাখতে আরও সহজবোধ্য পদ্ধতি গ্রহণ করে। এখানে, একটি ব্লক রোলআপ চেইনে প্রসেস করা লেনদেনগুলো ছাড়াও পূর্ববর্তী ব্লকের পর থেকে L1 কন্ট্রাক্টে সাবমিট করা সমস্ত লেনদেন (যেমন, ডিপোজিট) দ্বারা সংজ্ঞায়িত করা হয়। যদি কোনো সিকোয়েন্সার একটি L1 লেনদেন উপেক্ষা করে, তবে এটি (প্রমাণযোগ্যভাবে) ভুল স্টেট রুট প্রকাশ করবে; তাই, সিকোয়েন্সাররা একবার L1-এ পোস্ট করা ব্যবহারকারী-উত্পন্ন মেসেজগুলো বিলম্বিত করতে পারে না।
##### রোলআপ থেকে প্রস্থান করা
-একটি অপ্টিমেস্টিক রোলআপ থেকে Ethereum-এ উত্তোলন করা জালিয়াতি প্রমাণ স্কিমের কারণে আরও কঠিন। যদি একজন ব্যবহারকারী L1-এ এসক্রো করা তহবিল উত্তোলনের জন্য একটি L2 > L1 লেনদেন শুরু করেন, তবে তাদের অবশ্যই চ্যালেঞ্জ পিরিয়ড—প্রায় সাত দিন স্থায়ী—শেষ না হওয়া পর্যন্ত অপেক্ষা করতে হবে। তবুও, উত্তোলন প্রক্রিয়াটি নিজেই মোটামুটি সহজবোধ্য।
+ফ্রড প্রুভিং স্কিমের কারণে একটি অপ্টিমেস্টিক রোলআপ থেকে ইথিরিয়ামে ফান্ড তোলা বেশি কঠিন। যদি কোনো ব্যবহারকারী L1-এ এসক্রো করা ফান্ড তোলার জন্য একটি L2 > L1 লেনদেন শুরু করে, তবে তাদের চ্যালেঞ্জ পিরিয়ড—যা প্রায় সাত দিন স্থায়ী হয়—শেষ হওয়া পর্যন্ত অপেক্ষা করতে হবে। তা সত্ত্বেও, তোলার প্রক্রিয়াটি নিজেই বেশ সহজবোধ্য।
-L2 রোলআপে প্রত্যাহারের অনুরোধ শুরু হওয়ার পরে, লেনদেনটি পরবর্তী ব্যাচে অন্তর্ভুক্ত করা হয়, যখন রোলআপে ব্যবহারকারীর সম্পদ পুড়িয়ে ফেলা হয়। একবার ব্যাচটি Ethereum-এ প্রকাশিত হলে, ব্যবহারকারী ব্লকে তাদের প্রস্থান লেনদেনের অন্তর্ভুক্তি যাচাই করে একটি মের্কেল প্রুফ গণনা করতে পারে। তারপর এটি L1-এ লেনদেন চূড়ান্ত করতে এবং মেইননেটে তহবিল উত্তোলনের জন্য বিলম্বের সময় অপেক্ষা করার বিষয়।
+L2 রোলআপে তোলার অনুরোধ শুরু হওয়ার পর, লেনদেনটি পরবর্তী ব্যাচে অন্তর্ভুক্ত করা হয়, যখন রোলআপে ব্যবহারকারীর সম্পদগুলো বার্ন করা হয়। একবার ব্যাচটি ইথিরিয়ামে প্রকাশিত হলে, ব্যবহারকারী ব্লকে তাদের এক্সিট লেনদেনের অন্তর্ভুক্তি যাচাই করে একটি মার্কেল প্রুফ কম্পিউট করতে পারে। তারপর L1-এ লেনদেন চূড়ান্ত করতে এবং মেইননেটে ফান্ড তোলার জন্য বিলম্বের সময়কাল পার হওয়া পর্যন্ত অপেক্ষা করার বিষয়।
-Ethereum-এ তহবিল উত্তোলনের আগে এক সপ্তাহ অপেক্ষা এড়াতে, অপ্টিমেস্টিক রোলআপ ব্যবহারকারীরা একজন **লিকুইডিটি প্রোভাইডার** (LP) নিয়োগ করতে পারে। একজন লিকুইডিটি প্রোভাইডার একটি মুলতুবি L2 উত্তোলনের মালিকানা গ্রহণ করে এবং ব্যবহারকারীকে L1-এ (একটি ফি-এর বিনিময়ে) অর্থ প্রদান করে।
+ইথিরিয়ামে ফান্ড তোলার আগে এক সপ্তাহ অপেক্ষা করা এড়াতে, অপ্টিমেস্টিক রোলআপ ব্যবহারকারীরা একজন **লিকুইডিটি প্রোভাইডার** (LP) নিয়োগ করতে পারে। একজন লিকুইডিটি প্রোভাইডার একটি পেন্ডিং L2 তোলার মালিকানা গ্রহণ করে এবং L1-এ ব্যবহারকারীকে অর্থ প্রদান করে (একটি ফির বিনিময়ে)।
-লিকুইডিটি প্রোভাইডাররা তহবিল প্রকাশের আগে ব্যবহারকারীর প্রত্যাহারের অনুরোধের বৈধতা পরীক্ষা করতে পারে (চেইনটি নিজেরাই কার্যকর করে)। এইভাবে তাদের নিশ্চয়তা রয়েছে যে লেনদেনটি অবশেষে নিশ্চিত করা হবে (অর্থাৎ, বিশ্বাসহীন ফাইনালিটি)।
+লিকুইডিটি প্রোভাইডাররা ফান্ড রিলিজ করার আগে ব্যবহারকারীর তোলার অনুরোধের বৈধতা পরীক্ষা করতে পারে (নিজেদের চেইন এক্সিকিউট করে)। এভাবে তাদের নিশ্চয়তা থাকে যে লেনদেনটি শেষ পর্যন্ত কনফার্ম হবে (অর্থাৎ, ট্রাস্টলেস ফাইনালিটি)।
-#### 2. EVM কম্প্যাটিবিলিটি {#evm-compatibility}
+#### ২. EVM সামঞ্জস্যতা {#evm-compatibility}
-ডেভেলপারদের জন্য, অপ্টিমেস্টিক রোলআপগুলির সুবিধা হল তাদের সামঞ্জস্যতা—অথবা, আরও ভালভাবে বললে, [ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/)-এর সাথে সমতা। EVM-সামঞ্জস্যপূর্ণ রোলআপগুলি [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf)-এর স্পেসিফিকেশন মেনে চলে এবং বাইটকোড লেভেলে EVM সমর্থন করে।
+ডেভেলপারদের জন্য, অপ্টিমেস্টিক রোলআপের সুবিধা হলো [Ethereum Virtual Machine (EVM)](/developers/docs/evm/)-এর সাথে তাদের সামঞ্জস্যতা—বা আরও ভালোভাবে বললে, সমতা। EVM-সামঞ্জস্যপূর্ণ রোলআপগুলো [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf)-এর স্পেসিফিকেশনগুলো মেনে চলে এবং বাইটকোড স্তরে EVM সমর্থন করে।
-অপ্টিমেস্টিক রোলআপগুলিতে EVM-সামঞ্জস্যতার নিম্নলিখিত সুবিধা রয়েছে:
+অপ্টিমেস্টিক রোলআপে EVM-সামঞ্জস্যতার নিচের সুবিধাগুলো রয়েছে:
-i. ডেভেলপাররা কোডবেসগুলি ব্যাপকভাবে পরিবর্তন না করেই Ethereum-এ বিদ্যমান স্মার্ট কন্ট্র্যাক্টগুলি অপ্টিমেস্টিক রোলআপ চেইনে স্থানান্তর করতে পারে। এটি L2-এ Ethereum স্মার্ট কন্ট্র্যাক্ট স্থাপন করার সময় ডেভেলপমেন্ট টিমের সময় বাঁচাতে পারে।
+i. ডেভেলপাররা কোডবেস ব্যাপকভাবে পরিবর্তন না করেই ইথিরিয়ামে বিদ্যমান স্মার্ট কন্ট্রাক্টগুলোকে অপ্টিমেস্টিক রোলআপ চেইনে মাইগ্রেট করতে পারে। এটি L2-তে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার সময় ডেভেলপমেন্ট টিমের সময় বাঁচাতে পারে।
-ii. অপ্টিমেস্টিক রোলআপ ব্যবহারকারী ডেভেলপার এবং প্রজেক্ট টিমগুলি Ethereum-এর অবকাঠামোর সুবিধা নিতে পারে। এর মধ্যে রয়েছে প্রোগ্রামিং ভাষা, কোড লাইব্রেরি, টেস্টিং টুলস, ক্লায়েন্ট সফটওয়্যার, ডিপ্লয়মেন্ট ইনফ্রাস্ট্রাকচার ইত্যাদি।
+ii. অপ্টিমেস্টিক রোলআপ ব্যবহারকারী ডেভেলপার এবং প্রজেক্ট টিমগুলো ইথিরিয়ামের ইনফ্রাস্ট্রাকচারের সুবিধা নিতে পারে। এর মধ্যে প্রোগ্রামিং ভাষা, কোড লাইব্রেরি, টেস্টিং টুলস, ক্লায়েন্ট সফটওয়্যার, ডিপ্লয়মেন্ট ইনফ্রাস্ট্রাকচার ইত্যাদি অন্তর্ভুক্ত।
-বিদ্যমান টুলিং ব্যবহার করা গুরুত্বপূর্ণ কারণ এই টুলগুলি বছরের পর বছর ধরে ব্যাপকভাবে অডিট করা, ডিবাগ করা এবং উন্নত করা হয়েছে। এটি Ethereum ডেভেলপারদের একটি সম্পূর্ণ নতুন ডেভেলপমেন্ট স্ট্যাক দিয়ে কীভাবে তৈরি করতে হয় তা শেখার প্রয়োজনীয়তাও দূর করে।
+বিদ্যমান টুলিং ব্যবহার করা গুরুত্বপূর্ণ কারণ এই টুলগুলো বছরের পর বছর ধরে ব্যাপকভাবে অডিট, ডিবাগ এবং উন্নত করা হয়েছে। এটি ইথিরিয়াম ডেভেলপারদের সম্পূর্ণ নতুন ডেভেলপমেন্ট স্ট্যাক দিয়ে কীভাবে তৈরি করতে হয় তা শেখার প্রয়োজনীয়তাও দূর করে।
-#### 3. ক্রস-চেইন কন্ট্র্যাক্ট কল {#cross-chain-contract-calls}
+#### ৩. ক্রস-চেইন কন্ট্রাক্ট কলস {#cross-chain-contract-calls}
-ব্যবহারকারীরা (বাহ্যিকভাবে মালিকানাধীন অ্যাকাউন্ট) রোলআপ চুক্তিতে একটি লেনদেন জমা দিয়ে বা একজন সিকোয়েন্সার বা ভ্যালিডেটর তাদের জন্য এটি করার মাধ্যমে L2 চুক্তিগুলির সাথে ইন্টারঅ্যাক্ট করে। অপ্টিমেস্টিক রোলআপগুলি Ethereum-এ কন্ট্র্যাক্ট অ্যাকাউন্টগুলিকে L1 এবং L2 এর মধ্যে বার্তা রিলে করতে এবং ডেটা পাস করার জন্য ব্রিজিং চুক্তি ব্যবহার করে L2 চুক্তিগুলির সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়। এর মানে হল আপনি একটি L2 অপ্টিমেস্টিক রোলআপে চুক্তির অন্তর্গত ফাংশনগুলি আহ্বান করার জন্য Ethereum মেইননেটে একটি L1 চুক্তি প্রোগ্রাম করতে পারেন।
+ব্যবহারকারীরা (এক্সটার্নালি ওনড একাউন্ট) রোলআপ কন্ট্রাক্টে একটি লেনদেন সাবমিট করে বা তাদের জন্য কোনো সিকোয়েন্সার বা ভ্যালিডেটর দিয়ে এটি করিয়ে L2 কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করে। অপ্টিমেস্টিক রোলআপস ইথিরিয়ামে কন্ট্রাক্ট একাউন্টগুলোকে L1 এবং L2-এর মধ্যে মেসেজ রিলে করতে এবং ডাটা পাস করতে ব্রিজিং কন্ট্রাক্ট ব্যবহার করে L2 কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়। এর মানে হলো আপনি একটি L2 অপ্টিমেস্টিক রোলআপে কন্ট্রাক্টের অন্তর্গত ফাংশনগুলো ইনভোক করার জন্য ইথিরিয়াম মেইননেটে একটি L1 কন্ট্রাক্ট প্রোগ্রাম করতে পারেন।
-ক্রস-চেইন কন্ট্র্যাক্ট কলগুলি অ্যাসিঙ্ক্রোনাসভাবে ঘটে—অর্থাৎ কলটি প্রথমে শুরু হয়, তারপর পরবর্তী সময়ে কার্যকর করা হয়। এটি Ethereum-এ দুটি চুক্তির মধ্যে কল থেকে ভিন্ন, যেখানে কলটি অবিলম্বে ফলাফল তৈরি করে।
+ক্রস-চেইন কন্ট্রাক্ট কলগুলো অ্যাসিঙ্ক্রোনাসভাবে ঘটে—যার মানে কলটি প্রথমে শুরু হয়, তারপর পরে এক্সিকিউট হয়। এটি ইথিরিয়ামে দুটি কন্ট্রাক্টের মধ্যে কলের চেয়ে আলাদা, যেখানে কলটি অবিলম্বে ফলাফল তৈরি করে।
-ক্রস-চেইন কন্ট্র্যাক্ট কলের একটি উদাহরণ হল পূর্বে বর্ণিত টোকেন জমা। L1-এ একটি চুক্তি ব্যবহারকারীর টোকেন এসক্রো করে এবং রোলআপে সমান পরিমাণ টোকেন মিন্ট করার জন্য একটি জোড়া L2 চুক্তিতে একটি বার্তা পাঠায়।
+ক্রস-চেইন কন্ট্রাক্ট কলের একটি উদাহরণ হলো পূর্বে বর্ণিত টোকেন ডিপোজিট। L1-এ একটি কন্ট্রাক্ট ব্যবহারকারীর টোকেনগুলো এসক্রো করে এবং রোলআপে সমপরিমাণ টোকেন মিন্ট করার জন্য একটি পেয়ার করা L2 কন্ট্রাক্টে একটি মেসেজ পাঠায়।
-যেহেতু ক্রস-চেইন মেসেজ কলের ফলে চুক্তি সম্পাদন হয়, তাই প্রেরককে সাধারণত গণনার জন্য [গ্যাস খরচ](/developers/docs/gas/) কভার করতে হয়। টার্গেট চেইনে লেনদেন ব্যর্থ হওয়া থেকে বিরত রাখতে একটি উচ্চ গ্যাস লিমিট সেট করার পরামর্শ দেওয়া হয়। টোকেন ব্রিজিং পরিস্থিতি একটি ভাল উদাহরণ; যদি লেনদেনের L1 দিকটি (টোকেন জমা দেওয়া) কাজ করে, কিন্তু L2 দিকটি (নতুন টোকেন মিন্ট করা) কম গ্যাসের কারণে ব্যর্থ হয়, তবে জমাটি পুনরুদ্ধারযোগ্য হয়ে যায়।
+যেহেতু ক্রস-চেইন মেসেজ কলগুলোর ফলে কন্ট্রাক্ট এক্সিকিউশন হয়, তাই প্রেরককে সাধারণত কম্পিউটেশনের জন্য [gas costs](/developers/docs/gas/) কভার করতে হয়। টার্গেট চেইনে লেনদেন ব্যর্থ হওয়া রোধ করতে একটি উচ্চ গ্যাস লিমিট সেট করার পরামর্শ দেওয়া হয়। টোকেন ব্রিজিং দৃশ্যপট একটি ভালো উদাহরণ; যদি লেনদেনের L1 দিকটি (টোকেন জমা করা) কাজ করে, কিন্তু L2 দিকটি (নতুন টোকেন মিন্ট করা) কম গ্যাসের কারণে ব্যর্থ হয়, তবে ডিপোজিটটি পুনরুদ্ধার অযোগ্য হয়ে যায়।
-অবশেষে, আমাদের উল্লেখ করা উচিত যে চুক্তিগুলির মধ্যে L2 > L1 মেসেজ কলগুলিকে বিলম্বের জন্য অ্যাকাউন্ট করতে হবে (L1 > L2 কলগুলি সাধারণত কিছু মিনিট পরে কার্যকর করা হয়)। এর কারণ হল অপ্টিমেস্টিক রোলআপ থেকে মেইননেটে পাঠানো বার্তাগুলি চ্যালেঞ্জ উইন্ডো শেষ না হওয়া পর্যন্ত কার্যকর করা যায় না।
+পরিশেষে, আমাদের লক্ষ্য করা উচিত যে কন্ট্রাক্টগুলোর মধ্যে L2 > L1 মেসেজ কলগুলোতে বিলম্বের হিসাব রাখতে হবে (L1 > L2 কলগুলো সাধারণত কয়েক মিনিট পরে এক্সিকিউট হয়)। এর কারণ হলো অপ্টিমেস্টিক রোলআপ থেকে মেইননেটে পাঠানো মেসেজগুলো চ্যালেঞ্জ উইন্ডোর মেয়াদ শেষ না হওয়া পর্যন্ত এক্সিকিউট করা যায় না।
## অপ্টিমেস্টিক রোলআপ ফি কীভাবে কাজ করে? {#how-do-optimistic-rollup-fees-work}
-অপ্টিমেস্টিক রোলআপগুলি Ethereum-এর মতোই একটি গ্যাস ফি স্কিম ব্যবহার করে, যা বোঝায় যে ব্যবহারকারীরা প্রতি লেনদেনের জন্য কত অর্থ প্রদান করে। অপ্টিমেস্টিক রোলআপগুলিতে চার্জ করা ফি নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে:
+অপ্টিমেস্টিক রোলআপস ইথিরিয়ামের মতোই একটি গ্যাস ফি স্কিম ব্যবহার করে, যা নির্দেশ করে ব্যবহারকারীরা প্রতি লেনদেনে কত টাকা দেয়। অপ্টিমেস্টিক রোলআপে চার্জ করা ফি নিচের উপাদানগুলোর ওপর নির্ভর করে:
-1. **স্টেট রাইট**: অপ্টিমেস্টিক রোলআপগুলি Ethereum-এ একটি `blob`, বা "বাইনারি লার্জ অবজেক্ট" হিসাবে লেনদেনের ডেটা এবং ব্লক হেডার (পূর্ববর্তী ব্লক হেডার হ্যাশ, স্টেট রুট, ব্যাচ রুট সমন্বিত) প্রকাশ করে। [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) অনচেইনে ডেটা অন্তর্ভুক্ত করার জন্য একটি সাশ্রয়ী সমাধান প্রবর্তন করেছে। একটি `blob` হল একটি নতুন লেনদেন ক্ষেত্র যা রোলআপগুলিকে Ethereum L1-এ সংকুচিত স্টেট ট্রানজিশন ডেটা পোস্ট করার অনুমতি দেয়। `calldata`-এর বিপরীতে, যা স্থায়ীভাবে অনচেইনে থাকে, ব্লবগুলি স্বল্পস্থায়ী এবং [4096 epochs](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147) (প্রায় 18 দিন) পরে ক্লায়েন্টদের থেকে ছেঁটে ফেলা যেতে পারে। সংকুচিত লেনদেনের ব্যাচ পোস্ট করতে ব্লব ব্যবহার করে, অপ্টিমেস্টিক রোলআপগুলি L1-এ লেনদেন লেখার খরচ উল্লেখযোগ্যভাবে কমাতে পারে।
+1. **স্টেট রাইট**: অপ্টিমেস্টিক রোলআপস লেনদেনের ডাটা এবং ব্লক হেডার (পূর্ববর্তী ব্লক হেডার হ্যাস, স্টেট রুট, ব্যাচ রুট নিয়ে গঠিত) ইথিরিয়ামে একটি `blob`, বা "বাইনারি লার্জ অবজেক্ট" হিসেবে প্রকাশ করে। [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) অনচেইনে ডাটা অন্তর্ভুক্ত করার জন্য একটি সাশ্রয়ী সমাধান চালু করেছে। একটি `blob` হলো একটি নতুন লেনদেন ফিল্ড যা রোলআপগুলোকে ইথিরিয়াম L1-এ কম্প্রেস করা স্টেট ট্রানজিশন ডাটা পোস্ট করতে দেয়। `calldata`-এর বিপরীতে, যা স্থায়ীভাবে অনচেইনে থাকে, ব্লবস স্বল্পস্থায়ী এবং [4096 epochs](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147) (প্রায় 18 দিন) পরে ক্লায়েন্টদের থেকে মুছে ফেলা যায়। কম্প্রেস করা লেনদেনের ব্যাচ পোস্ট করতে ব্লবস ব্যবহার করে, অপ্টিমেস্টিক রোলআপস L1-এ লেনদেন লেখার খরচ উল্লেখযোগ্যভাবে কমাতে পারে।
-2. **ব্লব গ্যাস ব্যবহৃত**: ব্লব-বহনকারী লেনদেনগুলি [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) দ্বারা প্রবর্তিত একটির অনুরূপ একটি গতিশীল ফি প্রক্রিয়া ব্যবহার করে। টাইপ-3 লেনদেনের জন্য গ্যাস ফি ব্লবের জন্য বেস ফি বিবেচনা করে, যা নেটওয়ার্ক দ্বারা ব্লব-স্পেস চাহিদা এবং প্রেরিত লেনদেনের ব্লব-স্পেস ব্যবহারের উপর ভিত্তি করে নির্ধারিত হয়।
+2. **ব্যবহৃত ব্লব গ্যাস**: ব্লব-বহনকারী লেনদেনগুলো [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) দ্বারা প্রবর্তিত মেকানিজমের মতো একটি ডায়নামিক ফি মেকানিজম ব্যবহার করে। টাইপ-3 লেনদেনের জন্য গ্যাস ফি ব্লবসের বেস ফি বিবেচনা করে, যা ব্লব-স্পেসের চাহিদা এবং পাঠানো লেনদেনের ব্লব-স্পেস ব্যবহারের ওপর ভিত্তি করে নেটওয়ার্ক দ্বারা নির্ধারিত হয়।
-3. **L2 অপারেটর ফি**: এটি রোলআপ নোডগুলিকে লেনদেন প্রক্রিয়াকরণে ব্যয়িত গণনামূলক খরচের জন্য ক্ষতিপূরণ হিসাবে প্রদত্ত পরিমাণ, অনেকটা Ethereum-এ গ্যাস ফি-এর মতো। রোলআপ নোডগুলি কম লেনদেন ফি চার্জ করে কারণ L2-এর উচ্চ প্রক্রিয়াকরণ ক্ষমতা রয়েছে এবং নেটওয়ার্ক কনজেশনের মুখোমুখি হয় না যা Ethereum-এর ভ্যালিডেটরদের উচ্চ ফি সহ লেনদেনকে অগ্রাধিকার দিতে বাধ্য করে।
+3. **L2 অপারেটর ফি**: এটি হলো লেনদেন প্রসেস করার সময় হওয়া কম্পিউটেশনাল খরচের ক্ষতিপূরণ হিসেবে রোলআপ নোডগুলোকে দেওয়া পরিমাণ, অনেকটা ইথিরিয়ামের গ্যাস ফির মতো। রোলআপ নোডগুলো কম লেনদেন ফি চার্জ করে কারণ L2-গুলোর প্রসেসিং ক্ষমতা বেশি থাকে এবং তারা নেটওয়ার্ক কনজেশনের সম্মুখীন হয় না যা ইথিরিয়ামের ভ্যালিডেটরদের উচ্চ ফি সহ লেনদেনগুলোকে অগ্রাধিকার দিতে বাধ্য করে।
-অপ্টিমেস্টিক রোলআপগুলি ব্যবহারকারীদের জন্য ফি হ্রাস করার জন্য বেশ কয়েকটি প্রক্রিয়া প্রয়োগ করে, যার মধ্যে রয়েছে লেনদেন ব্যাচিং এবং ডেটা প্রকাশনার খরচ কমাতে `calldata` সংকুচিত করা। Ethereum-ভিত্তিক অপ্টিমেস্টিক রোলআপগুলি ব্যবহার করতে কত খরচ হয় তার একটি রিয়েল-টাইম ওভারভিউয়ের জন্য আপনি [L2 ফি ট্র্যাকার](https://l2fees.info/) পরীক্ষা করতে পারেন।
+অপ্টিমেস্টিক রোলআপস ব্যবহারকারীদের জন্য ফি কমানোর জন্য বেশ কয়েকটি মেকানিজম প্রয়োগ করে, যার মধ্যে রয়েছে লেনদেন ব্যাচ করা এবং ডাটা প্রকাশের খরচ কমাতে `calldata` কম্প্রেস করা। ইথিরিয়াম-ভিত্তিক অপ্টিমেস্টিক রোলআপ ব্যবহার করতে কত খরচ হয় তার রিয়েল-টাইম ওভারভিউয়ের জন্য আপনি [L2 fee tracker](https://l2fees.info/) চেক করতে পারেন।
-## অপ্টিমেস্টিক রোলআপগুলি কীভাবে Ethereum স্কেল করে? {#scaling-ethereum-with-optimistic-rollups}
+## অপ্টিমেস্টিক রোলআপস কীভাবে ইথিরিয়াম স্কেল করে? {#scaling-ethereum-with-optimistic-rollups}
-যেমন ব্যাখ্যা করা হয়েছে, অপ্টিমেস্টিক রোলআপগুলি ডেটা প্রাপ্যতা নিশ্চিত করার জন্য Ethereum-এ সংকুচিত লেনদেনের ডেটা প্রকাশ করে। অনচেইনে প্রকাশিত ডেটা সংকুচিত করার ক্ষমতা অপ্টিমেস্টিক রোলআপগুলির সাথে Ethereum-এ থ্রুপুট স্কেল করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
+যেমনটি ব্যাখ্যা করা হয়েছে, অপ্টিমেস্টিক রোলআপস ডাটা এভেইলএবিলিটি গ্যারান্টি দিতে ইথিরিয়ামে কম্প্রেস করা লেনদেনের ডাটা প্রকাশ করে। অনচেইনে প্রকাশিত ডাটা কম্প্রেস করার ক্ষমতা অপ্টিমেস্টিক রোলআপের মাধ্যমে ইথিরিয়ামে থ্রুপুট স্কেল করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
-প্রধান Ethereum চেইন ব্লকগুলি কত ডেটা ধারণ করতে পারে তার উপর সীমা রাখে, যা গ্যাস ইউনিটে চিহ্নিত করা হয় ([গড় ব্লক সাইজ](/developers/docs/blocks/#block-size) 15 মিলিয়ন গ্যাস)। যদিও এটি প্রতিটি লেনদেন কত গ্যাস ব্যবহার করতে পারে তা সীমাবদ্ধ করে, এর মানে হল আমরা লেনদেন-সম্পর্কিত ডেটা হ্রাস করে প্রতি ব্লকে প্রক্রিয়াকৃত লেনদেন বাড়াতে পারি—সরাসরি স্কেলেবিলিটি উন্নত করে।
+মূল ইথিরিয়াম চেইন ব্লকগুলো কত ডাটা ধারণ করতে পারে তার ওপর সীমা নির্ধারণ করে, যা গ্যাস ইউনিটে প্রকাশ করা হয় ([average block size](/developers/docs/blocks/#block-size) হলো 15 মিলিয়ন গ্যাস)। যদিও এটি প্রতিটি লেনদেন কতটা গ্যাস ব্যবহার করতে পারে তা সীমাবদ্ধ করে, এর মানে হলো আমরা লেনদেন-সম্পর্কিত ডাটা কমিয়ে প্রতি ব্লকে প্রসেস করা লেনদেন বাড়াতে পারি—যা সরাসরি স্কেলাবিলিটি উন্নত করে।
-অপ্টিমেস্টিক রোলআপগুলি লেনদেন ডেটা কম্প্রেশন অর্জন করতে এবং TPS রেট উন্নত করতে বেশ কয়েকটি কৌশল ব্যবহার করে। উদাহরণস্বরূপ, এই [আর্টিকেল](https://vitalik.eth.limo/general/2021/01/05/rollup.html) তুলনা করে যে একটি সাধারণ ব্যবহারকারী লেনদেন (ইথার পাঠানো) মেইননেটে কতটা ডেটা তৈরি করে তার সাথে একই লেনদেন একটি রোলআপে কতটা ডেটা তৈরি করে:
+অপ্টিমেস্টিক রোলআপস লেনদেনের ডাটা কম্প্রেশন অর্জন করতে এবং TPS রেট উন্নত করতে বেশ কয়েকটি কৌশল ব্যবহার করে। উদাহরণস্বরূপ, এই [article](https://vitalik.eth.limo/general/2021/01/05/rollup.html) মেইননেটে একটি বেসিক ব্যবহারকারী লেনদেন (ইথার পাঠানো) যে ডাটা তৈরি করে তার সাথে একটি রোলআপে একই লেনদেন কতটা ডাটা তৈরি করে তার তুলনা করে:
-| প্যারামিটার | ইথেরিয়াম (L1) | রোলআপ (L2) |
-| ----------- | ---------------------------------------------------- | ------------------------------------ |
-| নন্স | ~3 | 0 |
-| গ্যাসপ্রাইস | ~8 | 0-0.5 |
-| গ্যাস | 3 | 0-0.5 |
-| প্রতি | 21 | 4 |
-| মান | 9 | ~3 |
-| স্বাক্ষর | ~68 (2 + 33 + 33) | ~0.5 |
-| থেকে | 0 (স্বাক্ষর থেকে পুনরুদ্ধার করা) | 4 |
-| **মোট** | **~112 বাইট** | **~12 বাইট** |
+| প্যারামিটার | ইথিরিয়াম (L1) | রোলআপ (L2) |
+| --------- | ---------------------- | ------------- |
+| নন্স | ~3 | 0 |
+| গ্যাস প্রাইস | ~8 | 0-0.5 |
+| গ্যাস | 3 | 0-0.5 |
+| টু | 21 | 4 |
+| ভ্যালু | 9 | ~3 |
+| সিগনেচার | ~68 (2 + 33 + 33) | ~0.5 |
+| ফ্রম | 0 (সিগনেচার থেকে রিকভার করা) | 4 |
+| **মোট** | **~112 বাইটস** | **~12 বাইটস** |
-এই পরিসংখ্যানগুলির উপর কিছু মোটামুটি গণনা করা একটি অপ্টিমেস্টিক রোলআপ দ্বারা প্রদত্ত স্কেলেবিলিটি উন্নতিগুলি দেখাতে সাহায্য করতে পারে:
+এই পরিসংখ্যানগুলোর ওপর কিছু মোটামুটি হিসাব করলে একটি অপ্টিমেস্টিক রোলআপ দ্বারা প্রদত্ত স্কেলাবিলিটি উন্নতিগুলো দেখাতে সাহায্য করতে পারে:
-1. প্রতিটি ব্লকের লক্ষ্য আকার 15 মিলিয়ন গ্যাস এবং এক বাইট ডেটা যাচাই করতে 16 গ্যাস খরচ হয়। গড় ব্লক সাইজকে 16 গ্যাস (15,000,000/16) দিয়ে ভাগ করলে দেখা যায় যে গড় ব্লকটি **937,500 বাইট ডেটা** ধারণ করতে পারে।
-2. যদি একটি বেসিক রোলআপ লেনদেন 12 বাইট ব্যবহার করে, তবে গড় Ethereum ব্লক **78,125 রোলআপ লেনদেন** (937,500/12) বা **39 রোলআপ ব্যাচ** (যদি প্রতিটি ব্যাচে গড়ে 2,000 লেনদেন থাকে) প্রক্রিয়া করতে পারে।
-3. যদি Ethereum-এ প্রতি 15 সেকেন্ডে একটি নতুন ব্লক তৈরি করা হয়, তবে রোলআপের প্রক্রিয়াকরণের গতি মোটামুটি **প্রতি সেকেন্ডে 5,208 লেনদেন** হবে। এটি একটি Ethereum ব্লক ধারণ করতে পারে এমন বেসিক রোলআপ লেনদেনের সংখ্যাকে (**78,125**) গড় ব্লক সময় (**15 সেকেন্ড**) দ্বারা ভাগ করে করা হয়।
+1. প্রতিটি ব্লকের টার্গেট সাইজ হলো 15 মিলিয়ন গ্যাস এবং এক বাইট ডাটা যাচাই করতে 16 গ্যাস খরচ হয়। গড় ব্লক সাইজকে 16 গ্যাস দিয়ে ভাগ করলে (15,000,000/16) দেখা যায় গড় ব্লক **937,500 বাইট ডাটা** ধারণ করতে পারে।
+2. যদি একটি বেসিক রোলআপ লেনদেন 12 বাইট ব্যবহার করে, তবে গড় ইথিরিয়াম ব্লক **78,125 রোলআপ লেনদেন** (937,500/12) বা **39 রোলআপ ব্যাচ** (যদি প্রতিটি ব্যাচ গড়ে 2,000 লেনদেন ধারণ করে) প্রসেস করতে পারে।
+3. যদি ইথিরিয়ামে প্রতি 15 সেকেন্ডে একটি নতুন ব্লক তৈরি হয়, তবে রোলআপের প্রসেসিং স্পিড হবে প্রায় **5,208 লেনদেন প্রতি সেকেন্ডে**। এটি একটি ইথিরিয়াম ব্লক ধারণ করতে পারে এমন বেসিক রোলআপ লেনদেনের সংখ্যাকে (**78,125**) গড় ব্লক টাইম (**15 সেকেন্ড**) দিয়ে ভাগ করে করা হয়।
-এটি একটি মোটামুটি আশাবাদী অনুমান, কারণ অপ্টিমেস্টিক রোলআপ লেনদেনগুলি সম্ভবত Ethereum-এ একটি সম্পূর্ণ ব্লক গঠন করতে পারে না। তবে, এটি একটি মোটামুটি ধারণা দিতে পারে যে অপ্টিমেস্টিক রোলআপগুলি Ethereum ব্যবহারকারীদের কতটা স্কেলেবিলিটি লাভ করতে পারে (বর্তমান বাস্তবায়নগুলি 2,000 TPS পর্যন্ত অফার করে)।
+এটি একটি মোটামুটি আশাবাদী অনুমান, কারণ অপ্টিমেস্টিক রোলআপ লেনদেনগুলো ইথিরিয়ামে একটি সম্পূর্ণ ব্লক গঠন করতে পারে না। তবে, এটি একটি মোটামুটি ধারণা দিতে পারে যে অপ্টিমেস্টিক রোলআপস ইথিরিয়াম ব্যবহারকারীদের কতটা স্কেলাবিলিটি লাভ দিতে পারে (বর্তমান ইমপ্লিমেন্টেশনগুলো 2,000 TPS পর্যন্ত অফার করে)।
-Ethereum-এ [ডেটা শার্ডিং](/roadmap/danksharding/) প্রবর্তন অপ্টিমেস্টিক রোলআপগুলিতে স্কেলেবিলিটি উন্নত করবে বলে আশা করা হচ্ছে। যেহেতু রোলআপ লেনদেনগুলিকে অন্যান্য নন-রোলআপ লেনদেনগুলির সাথে ব্লকস্পেস ভাগ করতে হয়, তাই তাদের প্রক্রিয়াকরণ ক্ষমতা প্রধান Ethereum চেইনে ডেটা থ্রুপুট দ্বারা সীমিত। ড্যাঙ্কশার্ডিং L2 চেইনগুলির জন্য প্রতি ব্লকে ডেটা প্রকাশ করার জন্য উপলব্ধ স্থান বাড়াবে, ব্যয়বহুল, স্থায়ী `CALLDATA`-এর পরিবর্তে সস্তা, অস্থায়ী "ব্লব" স্টোরেজ ব্যবহার করে।
+ইথিরিয়ামে [data sharding](/roadmap/danksharding/) প্রবর্তনের ফলে অপ্টিমেস্টিক রোলআপে স্কেলাবিলিটি উন্নত হবে বলে আশা করা হচ্ছে। যেহেতু রোলআপ লেনদেনগুলোকে অন্যান্য নন-রোলআপ লেনদেনের সাথে ব্লকস্পেস শেয়ার করতে হয়, তাই তাদের প্রসেসিং ক্ষমতা মূল ইথিরিয়াম চেইনে ডাটা থ্রুপুট দ্বারা সীমাবদ্ধ। ডাঙ্কশার্ডিং ব্যয়বহুল, স্থায়ী `CALLDATA`-এর পরিবর্তে সস্তা, অস্থায়ী "ব্লব" স্টোরেজ ব্যবহার করে প্রতি ব্লকে ডাটা প্রকাশ করার জন্য L2 চেইনগুলোর জন্য উপলব্ধ স্থান বৃদ্ধি করবে।
### অপ্টিমেস্টিক রোলআপের সুবিধা এবং অসুবিধা {#optimistic-rollups-pros-and-cons}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
-| নিরাপত্তা বা বিশ্বাসহীনতা বিসর্জন না দিয়ে স্কেলেবিলিটিতে ব্যাপক উন্নতি প্রদান করে। | সম্ভাব্য জালিয়াতি চ্যালেঞ্জের কারণে লেনদেন চূড়ান্তকরণে বিলম্ব। |
-| লেনদেনের ডেটা লেয়ার 1 চেইনে সংরক্ষণ করা হয়, যা স্বচ্ছতা, নিরাপত্তা, সেন্সরশিপ-প্রতিরোধ এবং বিকেন্দ্রীকরণ উন্নত করে। | কেন্দ্রীভূত রোলআপ অপারেটর (সিকোয়েন্সার) লেনদেনের ক্রমকে প্রভাবিত করতে পারে। |
-| ফ্রড প্রুভিং বিশ্বাসহীন ফাইনালিটির গ্যারান্টি দেয় এবং সৎ সংখ্যালঘুদের চেইন সুরক্ষিত করার সুযোগ করে দেয়। | যদি কোনো সৎ নোড না থাকে তবে একজন দূষিত অপারেটর অবৈধ ব্লক এবং স্টেট প্রতিশ্রুতি পোস্ট করে তহবিল চুরি করতে পারে। |
-| ফ্রড প্রুফ গণনা করা নিয়মিত L2 নোডের জন্য উন্মুক্ত, বৈধতা প্রমাণের (ZK-রোলআপগুলিতে ব্যবহৃত) বিপরীতে যার জন্য বিশেষ হার্ডওয়্যার প্রয়োজন। | নিরাপত্তা মডেলটি অন্তত একটি সৎ নোডের উপর নির্ভর করে যা রোলআপ লেনদেন সম্পাদন করে এবং অবৈধ স্টেট ট্রানজিশনকে চ্যালেঞ্জ করার জন্য ফ্রড প্রুফ জমা দেয়। |
-| রোলআপগুলি "বিশ্বাসহীন লাইভনেস" থেকে উপকৃত হয় (যে কেউ লেনদেন সম্পাদন করে এবং অ্যাসারশন পোস্ট করে চেইনকে এগিয়ে নিয়ে যেতে পারে) | ব্যবহারকারীদের Ethereum-এ তহবিল ফেরত নেওয়ার আগে এক সপ্তাহের চ্যালেঞ্জ পিরিয়ড শেষ হওয়ার জন্য অপেক্ষা করতে হবে। |
-| অপ্টিমেস্টিক রোলআপগুলি চেইনে নিরাপত্তা বাড়ানোর জন্য সু-পরিকল্পিত ক্রিপ্টো-অর্থনৈতিক প্রণোদনার উপর নির্ভর করে। | রোলআপগুলিকে সমস্ত লেনদেন ডেটা অনচেইনে পোস্ট করতে হবে, যা খরচ বাড়াতে পারে। |
-| EVM এবং সলিডিটির সাথে সামঞ্জস্যতা ডেভেলপারদের Ethereum-নেটিভ স্মার্ট কন্ট্র্যাক্টগুলি রোলআপে পোর্ট করতে বা নতুন ডিএ্যাপস তৈরি করতে বিদ্যমান টুলিং ব্যবহার করার অনুমতি দেয়। | |
+| সুবিধা | অসুবিধা |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+| নিরাপত্তা বা ট্রাস্টলেসনেস বিসর্জন না দিয়েই স্কেলাবিলিটিতে ব্যাপক উন্নতি প্রদান করে। | সম্ভাব্য ফ্রড চ্যালেঞ্জের কারণে লেনদেনের ফাইনালিটিতে বিলম্ব। |
+| লেনদেনের ডাটা লেয়ার 1 চেইনে সংরক্ষিত থাকে, যা স্বচ্ছতা, নিরাপত্তা, সেন্সরশিপ-রেজিস্ট্যান্স এবং ডিসেন্ট্রালাইজেশন উন্নত করে। | সেন্ট্রালাইজড রোলআপ অপারেটররা (সিকোয়েন্সার) লেনদেনের ক্রমকে প্রভাবিত করতে পারে। |
+| ফ্রড প্রুভিং ট্রাস্টলেস ফাইনালিটির গ্যারান্টি দেয় এবং সৎ সংখ্যালঘুদের চেইন সুরক্ষিত করার অনুমতি দেয়। | যদি কোনো সৎ নোড না থাকে তবে একজন ক্ষতিকারক অপারেটর অবৈধ ব্লক এবং স্টেট কমিটমেন্ট পোস্ট করে ফান্ড চুরি করতে পারে। |
+| ফ্রড প্রুফ কম্পিউট করা সাধারণ L2 নোডের জন্য উন্মুক্ত, ভ্যালিডিটি প্রুফের (ZK-রোলআপে ব্যবহৃত) বিপরীতে যার জন্য বিশেষ হার্ডওয়্যার প্রয়োজন। | সিকিউরিটি মডেল অন্তত একটি সৎ নোডের ওপর নির্ভর করে যা রোলআপ লেনদেন এক্সিকিউট করে এবং অবৈধ স্টেট ট্রানজিশনকে চ্যালেঞ্জ করতে ফ্রড প্রুফ সাবমিট করে। |
+| রোলআপগুলো "ট্রাস্টলেস লাইভনেস" থেকে উপকৃত হয় (যে কেউ লেনদেন এক্সিকিউট করে এবং অ্যাসারশন পোস্ট করে চেইনটিকে এগিয়ে নিতে বাধ্য করতে পারে) | ইথিরিয়ামে ফান্ড ফেরত নেওয়ার আগে ব্যবহারকারীদের এক সপ্তাহের চ্যালেঞ্জ পিরিয়ডের মেয়াদ শেষ হওয়া পর্যন্ত অপেক্ষা করতে হবে। |
+| অপ্টিমেস্টিক রোলআপস চেইনে নিরাপত্তা বাড়াতে সু-পরিকল্পিত ক্রিপ্টোইকোনমিক ইনসেনটিভের ওপর নির্ভর করে। | রোলআপগুলোকে অবশ্যই সমস্ত লেনদেনের ডাটা অনচেইনে পোস্ট করতে হবে, যা খরচ বাড়াতে পারে। |
+| EVM এবং সলিডিটির সাথে সামঞ্জস্যতা ডেভেলপারদের ইথিরিয়াম-নেটিভ স্মার্ট কন্ট্রাক্টগুলোকে রোলআপে পোর্ট করতে বা নতুন ডিএ্যাপস তৈরি করতে বিদ্যমান টুলিং ব্যবহার করতে দেয়। |
-### অপ্টিমেস্টিক রোলআপের একটি ভিজ্যুয়াল ব্যাখ্যা {#optimistic-video}
+### অপ্টিমেস্টিক রোলআপের একটি ভিজ্যুয়াল ব্যাখ্যা {#optimistic-video}
-আপনি কি দেখে শিখতে বেশি পছন্দ করেন? Finematics কীভাবে অপ্টিমেস্টিক রোলআপ ব্যাখ্যা করে তা দেখুন:
+ভিজ্যুয়ালি শিখতে বেশি পছন্দ করেন? Finematics-এর অপ্টিমেস্টিক রোলআপের ব্যাখ্যা দেখুন:
-## অপ্টিমেস্টিক রোলআপ সম্পর্কে আরও পড়ুন
+## অপ্টিমেস্টিক রোলআপ সম্পর্কে আরও পড়া
-- [অপ্টিমেস্টিক রোলআপগুলি কীভাবে কাজ করে (সম্পূর্ণ নির্দেশিকা)](https://www.alchemy.com/overviews/optimistic-rollups)
-- [একটি ব্লকচেইন রোলআপ কি? একটি প্রযুক্তিগত ভূমিকা](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction)
-- [আরবিট্রামের জন্য অপরিহার্য নির্দেশিকা](https://www.bankless.com/the-essential-guide-to-arbitrum)
-- [Ethereum রোলআপগুলির জন্য ব্যবহারিক নির্দেশিকা](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
-- [Ethereum L2-গুলিতে ফ্রড প্রুফগুলির অবস্থা](https://web.archive.org/web/20241124154627/https://research.2077.xyz/the-state-of-fraud-proofs-in-ethereum-l2s)
-- [অপটিমিজমের রোলআপ সত্যিই কীভাবে কাজ করে?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work)
-- [OVM ডিপ ডাইভ](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52)
-- [অপ্টিমিস্টিক ভার্চুয়াল মেশিন কী?](https://www.alchemy.com/overviews/optimistic-virtual-machine)
+- [How do optimistic rollups work (The Complete guide)](https://www.alchemy.com/overviews/optimistic-rollups)
+- [What is a Blockchain Rollup? A Technical Introduction](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction)
+- [The Essential Guide to Arbitrum](https://www.bankless.com/the-essential-guide-to-arbitrum)
+- [The Practical Guide To Ethereum Rollups](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [The State Of Fraud Proofs In Ethereum L2s](https://web.archive.org/web/20241124154627/https://research.2077.xyz/the-state-of-fraud-proofs-in-ethereum-l2s)
+- [How does Optimism's Rollup really work?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work)
+- [OVM Deep Dive](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52)
+- [What is the Optimistic Virtual Machine?](https://www.alchemy.com/overviews/optimistic-virtual-machine)
+
+## টিউটোরিয়াল: ইথিরিয়ামে অপ্টিমেস্টিক রোলআপস এবং ব্রিজ {#tutorials}
+
+- [Optimism standard bridge contract walkthrough](/developers/tutorials/optimism-std-bridge-annotated-code/) _– L1 এবং L2-এর মধ্যে সম্পদ স্থানান্তরের জন্য অপ্টিমিজম স্ট্যান্ডার্ড ব্রিজের একটি টীকাযুক্ত কোড ওয়াকথ্রু।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/scaling/plasma/index.md b/public/content/translations/bn/developers/docs/scaling/plasma/index.md
index 372ac88109a..06247b6e273 100644
--- a/public/content/translations/bn/developers/docs/scaling/plasma/index.md
+++ b/public/content/translations/bn/developers/docs/scaling/plasma/index.md
@@ -1,176 +1,180 @@
---
-title: "প্লাসমা চেন"
-description: "Ethereum কমিউনিটি দ্বারা বর্তমানে ব্যবহৃত একটি স্কেলিং সমাধান হিসাবে প্লাসমা চেনের একটি ভূমিকা।"
+title: প্লাজমা চেইন
+description: ইথিরিয়াম কমিউনিটি দ্বারা বর্তমানে ব্যবহৃত একটি স্কেলিং সমাধান হিসেবে প্লাজমা চেইনের পরিচিতি।
lang: bn
incomplete: true
sidebarDepth: 3
---
-একটি প্লাসমা চেন হলো Ethereum Mainnet-এ নোঙর করা একটি পৃথক ব্লকচেইন কিন্তু ব্লক বৈধতার জন্য নিজস্ব প্রক্রিয়ার সাথে অফচেইনে লেনদেন সম্পাদন করে। প্লাসমা চেনকে কখনও কখনও "শিশু" চেন হিসাবে উল্লেখ করা হয়, যা মূলত Ethereum Mainnet-এর ছোট অনুলিপি। প্লাসমা চেন বিবাদের মীমাংসা করার জন্য [ফ্রড প্রুফ](/glossary/#fraud-proof) ব্যবহার করে (যেমন [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/))।
+একটি প্লাজমা চেইন হলো একটি আলাদা ব্লকচেইন যা [Ethereum](/) মেইননেট-এর সাথে যুক্ত থাকে কিন্তু ব্লক যাচাইকরণের নিজস্ব মেকানিজম ব্যবহার করে অফচেইন লেনদেন সম্পাদন করে। প্লাজমা চেইনগুলোকে কখনও কখনও "চাইল্ড" চেইন বলা হয়, যা মূলত ইথিরিয়াম মেইননেট-এর ছোট কপি। প্লাজমা চেইনগুলো বিরোধ নিষ্পত্তির জন্য [ফ্রড প্রুফ](/glossary/#fraud-proof) (যেমন [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/)) ব্যবহার করে।
-Merkle ট্রি এই চেইনগুলির একটি অন্তহীন স্ট্যাক তৈরি করতে সক্ষম করে যা প্যারেন্ট চেইন (Ethereum Mainnet সহ) থেকে ব্যান্ডউইথ অফলোড করার জন্য কাজ করতে পারে। যাইহোক, যদিও এই চেইনগুলি Ethereum থেকে কিছু নিরাপত্তা অর্জন করে (ফ্রড প্রুফের মাধ্যমে), তাদের নিরাপত্তা এবং দক্ষতা বিভিন্ন ডিজাইনের সীমাবদ্ধতার দ্বারা প্রভাবিত হয়।
+Merkle ট্রি এই চেইনগুলোর একটি অন্তহীন স্ট্যাক তৈরি করতে সক্ষম করে যা প্যারেন্ট চেইনগুলো (ইথিরিয়াম মেইননেট সহ) থেকে ব্যান্ডউইথ অফলোড করার কাজ করতে পারে। তবে, যদিও এই চেইনগুলো ইথিরিয়াম থেকে কিছু নিরাপত্তা লাভ করে (ফ্রড প্রুফ-এর মাধ্যমে), তাদের নিরাপত্তা এবং কার্যকারিতা বেশ কিছু ডিজাইন সীমাবদ্ধতার দ্বারা প্রভাবিত হয়।
## পূর্বশর্ত {#prerequisites}
-আপনার সমস্ত ভিত্তিগত বিষয়গুলির একটি ভাল ধারণা এবং [Ethereum স্কেলিং](/developers/docs/scaling/) সম্পর্কে একটি উচ্চ-স্তরের ধারণা থাকা উচিত।
+আপনার সমস্ত মৌলিক বিষয় সম্পর্কে ভালো ধারণা এবং [ইথিরিয়াম স্কেলিং](/developers/docs/scaling/) সম্পর্কে একটি উচ্চ-স্তরের ধারণা থাকা উচিত।
-## প্লাসমা কি?
+## প্লাজমা কী?
-Plasma হলো Ethereum-এর মতো পাবলিক ব্লকচেইনে স্কেলেবিলিটি উন্নত করার জন্য একটি ফ্রেমওয়ার্ক। মূল [Plasma হোয়াইটপেপার](http://plasma.io/plasma.pdf)-এ বর্ণিত হিসাবে, প্লাসমা চেন অন্য একটি ব্লকচেইনের (যাকে "রুট চেন" বলা হয়) উপরে তৈরি করা হয়েছে। প্রতিটি "শিশু চেন" রুট চেন থেকে প্রসারিত হয় এবং সাধারণত প্যারেন্ট চেইনে ডিপ্লয় করা একটি স্মার্ট কন্ট্র্যাক্ট দ্বারা পরিচালিত হয়।
+প্লাজমা হলো ইথিরিয়ামের মতো পাবলিক ব্লকচেইনগুলোতে স্কেলেবিলিটি উন্নত করার একটি ফ্রেমওয়ার্ক। মূল [Plasma whitepaper](http://plasma.io/plasma.pdf)-এ বর্ণিত হিসেবে, প্লাজমা চেইনগুলো অন্য একটি ব্লকচেইনের (যাকে "রুট চেইন" বলা হয়) উপরে তৈরি করা হয়। প্রতিটি "চাইল্ড চেইন" রুট চেইন থেকে প্রসারিত হয় এবং সাধারণত প্যারেন্ট চেইনে ডিপ্লয় করা একটি স্মার্ট কন্ট্রাক্ট দ্বারা পরিচালিত হয়।
-প্লাসমা কন্ট্র্যাক্ট, অন্যান্য কাজের মধ্যে, একটি [ব্রিজ](/developers/docs/bridges/) হিসাবে কাজ করে যা ব্যবহারকারীদের Ethereum Mainnet এবং প্লাসমা চেনের মধ্যে অ্যাসেট স্থানান্তর করতে দেয়। যদিও এটি তাদের [সাইডচেইন](/developers/docs/scaling/sidechains/)-এর অনুরূপ করে তোলে, প্লাসমা চেনগুলি—অন্তত, কিছুটা হলেও—Ethereum Mainnet-এর নিরাপত্তা থেকে উপকৃত হয়। এটি সাইডচেইনের মতো নয় যা শুধুমাত্র তাদের নিরাপত্তার জন্য দায়ী।
+প্লাজমা কন্ট্রাক্ট অন্যান্য কাজের পাশাপাশি একটি [ব্রিজ](/developers/docs/bridges/) হিসেবে কাজ করে যা ব্যবহারকারীদের ইথিরিয়াম মেইননেট এবং প্লাজমা চেইনের মধ্যে সম্পদ স্থানান্তর করতে দেয়। যদিও এটি তাদেরকে [সাইডচেইন](/developers/docs/scaling/sidechains/)-এর মতো করে তোলে, প্লাজমা চেইনগুলো—অন্তত কিছুটা হলেও—ইথিরিয়াম মেইননেট-এর নিরাপত্তা থেকে উপকৃত হয়। এটি সাইডচেইনগুলোর মতো নয়, যা তাদের নিজস্ব নিরাপত্তার জন্য সম্পূর্ণভাবে দায়ী।
-## প্লাসমা কিভাবে কাজ করে?
+## প্লাজমা কীভাবে কাজ করে?
-প্লাসমা ফ্রেমওয়ার্কের মূল উপাদানগুলি হলো:
+প্লাজমা ফ্রেমওয়ার্কের মৌলিক উপাদানগুলো হলো:
-### অফ-চেন কম্পিউটেশন {#offchain-computation}
+### অফচেইন কম্পিউটেশন {#offchain-computation}
-Ethereum-এর বর্তমান প্রসেসিং স্পিড প্রতি সেকেন্ডে ~ 15-20 লেনদেনের মধ্যে সীমাবদ্ধ, যা আরও ব্যবহারকারীকে হ্যান্ডেল করার জন্য স্কেলিং-এর স্বল্পমেয়াদী সম্ভাবনাকে হ্রাস করে। এই সমস্যাটি মূলত বিদ্যমান কারণ Ethereum-এর [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) এর জন্য ব্লকচেইনের স্টেটের প্রতিটি আপডেট যাচাই করার জন্য অনেক পিয়ার-টু-পিয়ার নোডের প্রয়োজন হয়।
+ইথিরিয়ামের বর্তমান প্রসেসিং স্পিড প্রতি সেকেন্ডে ~ 15-20 লেনদেনের মধ্যে সীমাবদ্ধ, যা আরও বেশি ব্যবহারকারী সামলানোর জন্য স্কেলিং-এর স্বল্পমেয়াদী সম্ভাবনা কমিয়ে দেয়। এই সমস্যাটি মূলত বিদ্যমান কারণ ইথিরিয়ামের [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/)-এর জন্য ব্লকচেইনের স্টেট-এর প্রতিটি আপডেট যাচাই করতে অনেক পিয়ার-টু-পিয়ার নোড-এর প্রয়োজন হয়।
-যদিও Ethereum-এর কনসেন্সাস মেকানিজম নিরাপত্তার জন্য প্রয়োজনীয়, এটি প্রতিটি ব্যবহারের ক্ষেত্রে প্রযোজ্য নাও হতে পারে। উদাহরণস্বরূপ, অ্যালিসকে এক কাপ কফির জন্য ববকে তার দৈনিক পেমেন্ট পুরো Ethereum নেটওয়ার্ক দ্বারা যাচাই করার প্রয়োজন নাও হতে পারে কারণ উভয় পক্ষের মধ্যে কিছু বিশ্বাস বিদ্যমান।
+যদিও ইথিরিয়ামের কনসেন্সাস মেকানিজম নিরাপত্তার জন্য প্রয়োজনীয়, এটি প্রতিটি ব্যবহারের ক্ষেত্রে প্রযোজ্য নাও হতে পারে। উদাহরণস্বরূপ, এক কাপ কফির জন্য ববকে দেওয়া অ্যালিসের প্রতিদিনের পেমেন্ট পুরো ইথিরিয়াম নেটওয়ার্ক দ্বারা যাচাই করার প্রয়োজন নাও হতে পারে, কারণ উভয় পক্ষের মধ্যে কিছুটা বিশ্বাস বিদ্যমান।
-প্লাসমা মনে করে যে Ethereum Mainnet-কে সমস্ত লেনদেন যাচাই করার প্রয়োজন নেই। পরিবর্তে, আমরা Mainnet-এর বাইরে লেনদেন প্রক্রিয়া করতে পারি, যা নোডগুলিকে প্রতিটি লেনদেন যাচাই করা থেকে মুক্ত করে।
+প্লাজমা মনে করে যে ইথিরিয়াম মেইননেট-এর সমস্ত লেনদেন যাচাই করার প্রয়োজন নেই। এর পরিবর্তে, আমরা মেইননেট-এর বাইরে লেনদেন প্রক্রিয়া করতে পারি, যা নোড-গুলোকে প্রতিটি লেনদেন যাচাই করার কাজ থেকে মুক্ত করে।
-অফ-চেন কম্পিউটেশন প্রয়োজন কারণ প্লাসমা চেইন গতি এবং খরচের জন্য অপ্টিমাইজ করতে পারে। উদাহরণস্বরূপ, একটি প্লাসমা চেইন লেনদেনের অর্ডার এবং এক্সিকিউশন পরিচালনা করার জন্য একটি একক "অপারেটর" ব্যবহার করতে পারে—এবং প্রায়শই তাই করে। শুধুমাত্র একটি সত্তা লেনদেন যাচাই করার ফলে, একটি প্লাসমা চেইনে প্রসেসিং সময় Ethereum Mainnet-এর চেয়ে দ্রুত হয়।
+অফচেইন কম্পিউটেশন প্রয়োজনীয় কারণ প্লাজমা চেইনগুলো গতি এবং খরচের জন্য অপ্টিমাইজ করতে পারে। উদাহরণস্বরূপ, একটি প্লাজমা চেইন লেনদেনের ক্রম এবং সম্পাদন পরিচালনা করতে একটি একক "অপারেটর" ব্যবহার করতে পারে—এবং প্রায়শই করে। শুধুমাত্র একটি সত্তা লেনদেন যাচাই করার কারণে, প্লাজমা চেইনে প্রসেসিং সময় ইথিরিয়াম মেইননেট-এর চেয়ে দ্রুত হয়।
-### স্টেট কমিটমেন্ট {#state-commitments}
+### স্টেট কমিটমেন্টস {#state-commitments}
-যদিও প্লাসমা অফচেইনে লেনদেন সম্পাদন করে, সেগুলি প্রধান Ethereum এক্সিকিউশন লেয়ারে সেটেল করা হয়—অন্যথায়, প্লাসমা চেনগুলি Ethereum-এর নিরাপত্তা গ্যারান্টি থেকে উপকৃত হতে পারে না। কিন্তু প্লাসমা চেইনের স্টেট না জেনে অফচেইন লেনদেন চূড়ান্ত করা হলে নিরাপত্তা মডেলটি ভেঙে যাবে এবং অবৈধ লেনদেনের বিস্তার ঘটবে। এই কারণেই অপারেটরকে, প্লাসমা চেইনে ব্লক তৈরির জন্য দায়ী সত্তা, পর্যায়ক্রমে Ethereum-এ "স্টেট কমিটমেন্ট" প্রকাশ করতে হয়।
+যদিও প্লাজমা অফচেইন লেনদেন সম্পাদন করে, সেগুলো মূল ইথিরিয়াম এক্সিকিউশন লেয়ার-এ সেটেল করা হয়—অন্যথায়, প্লাজমা চেইনগুলো ইথিরিয়ামের নিরাপত্তা গ্যারান্টি থেকে উপকৃত হতে পারে না। কিন্তু প্লাজমা চেইনের স্টেট না জেনে অফচেইন লেনদেন চূড়ান্ত করা নিরাপত্তা মডেলকে ভেঙে দেবে এবং অবৈধ লেনদেনের বিস্তার ঘটাবে। এই কারণেই অপারেটর, যে সত্তা প্লাজমা চেইনে ব্লক তৈরি করার জন্য দায়ী, তাকে পর্যায়ক্রমে ইথিরিয়ামে "স্টেট কমিটমেন্টস" প্রকাশ করতে হয়।
-একটি [কমিটমেন্ট স্কিম](https://en.wikipedia.org/wiki/Commitment_scheme) হলো একটি ক্রিপ্টোগ্রাফিক কৌশল যা অন্য পক্ষের কাছে প্রকাশ না করে একটি মান বা বিবৃতির প্রতি প্রতিশ্রুতিবদ্ধ হওয়ার জন্য ব্যবহৃত হয়। কমিটমেন্টগুলি এই অর্থে "বাধ্যতামূলক" যে একবার আপনি এটির প্রতি প্রতিশ্রুতিবদ্ধ হয়ে গেলে আপনি মান বা বিবৃতি পরিবর্তন করতে পারবেন না। প্লাসমার স্টেট কমিটমেন্টগুলি "Merkle রুট" (একটি [Merkle ট্রি](/whitepaper/#merkle-trees) থেকে প্রাপ্ত) আকার নেয় যা অপারেটর নির্দিষ্ট সময় অন্তর Ethereum চেইনের প্লাসমা কন্ট্র্যাক্টে পাঠায়।
+একটি [কমিটমেন্ট স্কিম](https://en.wikipedia.org/wiki/Commitment_scheme) হলো অন্য পক্ষের কাছে প্রকাশ না করে কোনো মান বা বিবৃতির প্রতি প্রতিশ্রুতিবদ্ধ হওয়ার একটি ক্রিপ্টোগ্রাফিক কৌশল। কমিটমেন্টগুলো এই অর্থে "বাধ্যতামূলক" যে আপনি একবার প্রতিশ্রুতিবদ্ধ হওয়ার পরে মান বা বিবৃতি পরিবর্তন করতে পারবেন না। প্লাজমাতে স্টেট কমিটমেন্টগুলো "Merkle roots" (একটি [Merkle tree](/whitepaper/#merkle-trees) থেকে প্রাপ্ত) এর রূপ নেয় যা অপারেটর নির্দিষ্ট বিরতিতে ইথিরিয়াম চেইনের প্লাজমা কন্ট্রাক্টে পাঠায়।
-Merkle রুট হলো ক্রিপ্টোগ্রাফিক প্রিমিটিভ যা বিপুল পরিমাণ তথ্য সংকুচিত করতে সক্ষম। একটি Merkle রুট (এই ক্ষেত্রে "ব্লক রুট"ও বলা হয়) একটি ব্লকের সমস্ত লেনদেনকে উপস্থাপন করতে পারে। Merkle রুটগুলি এটি যাচাই করা সহজ করে তোলে যে একটি ছোট ডেটা একটি বড় ডেটাসেটের অংশ। উদাহরণস্বরূপ, একটি নির্দিষ্ট ব্লকে একটি লেনদেনের অন্তর্ভুক্তি প্রমাণ করার জন্য একজন ব্যবহারকারী একটি [Merkle প্রুফ](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content) তৈরি করতে পারেন।
+Merkle রুটগুলো হলো ক্রিপ্টোগ্রাফিক প্রিমিটিভ যা বিপুল পরিমাণ তথ্য সংকুচিত করতে সক্ষম করে। একটি Merkle রুট (যাকে এই ক্ষেত্রে "ব্লক রুট"ও বলা হয়) একটি ব্লকের সমস্ত লেনদেন উপস্থাপন করতে পারে। Merkle রুটগুলো এটি যাচাই করাও সহজ করে তোলে যে একটি ছোট ডেটা বৃহত্তর ডেটাসেটের অংশ। উদাহরণস্বরূপ, একজন ব্যবহারকারী একটি নির্দিষ্ট ব্লকে একটি লেনদেনের অন্তর্ভুক্তি প্রমাণ করতে একটি [Merkle proof](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content) তৈরি করতে পারেন।
-অফচেইনের স্টেট সম্পর্কে Ethereum-কে তথ্য প্রদানের জন্য Merkle রুট গুরুত্বপূর্ণ। আপনি Merkle রুটগুলিকে "সেভ পয়েন্ট" হিসাবে ভাবতে পারেন: অপারেটর বলছে, "এটি সময়ের x বিন্দুতে প্লাসমা চেইনের স্টেট, এবং এটি তার প্রমাণ হিসাবে Merkle রুট।" অপারেটর একটি Merkle রুটের সাথে প্লাসমা চেইনের _বর্তমান স্টেটের_ প্রতি প্রতিশ্রুতিবদ্ধ হচ্ছে, যে কারণে এটিকে "স্টেট কমিটমেন্ট" বলা হয়।
+ইথিরিয়ামকে অফচেইন-এর স্টেট সম্পর্কে তথ্য প্রদানের জন্য Merkle রুটগুলো গুরুত্বপূর্ণ। আপনি Merkle রুটগুলোকে "সেভ পয়েন্ট" হিসেবে ভাবতে পারেন: অপারেটর বলছে, "এটি x সময়ে প্লাজমা চেইনের স্টেট, এবং এটি প্রমাণ হিসেবে Merkle রুট।" অপারেটর একটি Merkle রুটের সাথে প্লাজমা চেইনের _বর্তমান স্টেট_-এর প্রতি প্রতিশ্রুতিবদ্ধ হচ্ছে, যে কারণে একে "স্টেট কমিটমেন্ট" বলা হয়।
-### প্রবেশ এবং প্রস্থান {#entries-and-exits}
+### এন্ট্রি এবং এক্সিট {#entries-and-exits}
-Ethereum ব্যবহারকারীদের প্লাসমা-র সুবিধা নিতে, Mainnet এবং প্লাসমা চেইনের মধ্যে ফান্ড স্থানান্তরের জন্য একটি মেকানিজম থাকা প্রয়োজন। তবে, আমরা প্লাসমা চেইনের একটি অ্যাড্রেসে ইচ্ছামত ইথার পাঠাতে পারি না—এই চেইনগুলি বেমানান, তাই লেনদেনটি হয় ব্যর্থ হবে অথবা ফান্ড হারিয়ে যাবে।
+ইথিরিয়াম ব্যবহারকারীদের প্লাজমার সুবিধা নেওয়ার জন্য, মেইননেট এবং প্লাজমা চেইনগুলোর মধ্যে তহবিল স্থানান্তরের একটি মেকানিজম থাকা প্রয়োজন। তবে আমরা ইচ্ছামতো প্লাজমা চেইনের কোনো এডড্রেস-এ ইথার পাঠাতে পারি না—এই চেইনগুলো বেমানান, তাই লেনদেনটি হয় ব্যর্থ হবে অথবা তহবিল হারিয়ে যাবে।
-প্লাসমা ব্যবহারকারীর প্রবেশ এবং প্রস্থান প্রক্রিয়া করার জন্য Ethereum-এ চলমান একটি মাস্টার কন্ট্র্যাক্ট ব্যবহার করে। এই মাস্টার কন্ট্র্যাক্টটি স্টেট কমিটমেন্ট (পূর্বে ব্যাখ্যা করা হয়েছে) ট্র্যাক করার এবং ফ্রড প্রুফের মাধ্যমে অসৎ আচরণকে শাস্তি দেওয়ার জন্যও দায়ী (এ সম্পর্কে পরে আরও আলোচনা করা হবে)।
+প্লাজমা ব্যবহারকারীর এন্ট্রি এবং এক্সিট প্রক্রিয়া করার জন্য ইথিরিয়ামে চলমান একটি মাস্টার কন্ট্রাক্ট ব্যবহার করে। এই মাস্টার কন্ট্রাক্টটি স্টেট কমিটমেন্টগুলো ট্র্যাক করার (আগে ব্যাখ্যা করা হয়েছে) এবং ফ্রড প্রুফ-এর মাধ্যমে অসৎ আচরণের শাস্তি দেওয়ার জন্যও দায়ী (এ সম্পর্কে পরে আরও আলোচনা করা হবে)।
-#### প্লাসমা চেইনে প্রবেশ করা {#entering-the-plasma-chain}
+#### প্লাজমা চেইনে প্রবেশ করা {#entering-the-plasma-chain}
-প্লাসমা চেইনে প্রবেশ করার জন্য, অ্যালিসকে (ব্যবহারকারী) প্লাসমা কন্ট্র্যাক্টে ETH বা যেকোনো ERC-20 টোকেন জমা দিতে হবে। প্লাসমা অপারেটর, যে কন্ট্র্যাক্ট ডিপোজিট পর্যবেক্ষণ করে, অ্যালিসের প্রাথমিক জমার সমান পরিমাণ অর্থ পুনরায় তৈরি করে এবং প্লাসমা চেইনে তার অ্যাড্রেসে ছেড়ে দেয়। অ্যালিসকে চাইল্ড চেইনে ফান্ড প্রাপ্তির সত্যায়ন করতে হবে এবং তারপরে এই ফান্ড লেনদেনের জন্য ব্যবহার করতে পারবে।
+প্লাজমা চেইনে প্রবেশ করতে, অ্যালিসকে (ব্যবহারকারী) প্লাজমা কন্ট্রাক্টে ETH বা যেকোনো ERC-20 টোকেন জমা দিতে হবে। প্লাজমা অপারেটর, যিনি কন্ট্রাক্ট ডিপোজিটগুলো পর্যবেক্ষণ করেন, অ্যালিসের প্রাথমিক জমার সমান একটি পরিমাণ পুনরায় তৈরি করেন এবং প্লাজমা চেইনে তার এডড্রেস-এ রিলিজ করেন। অ্যালিসকে চাইল্ড চেইনে তহবিল পাওয়ার বিষয়টি প্রত্যয়ন করতে হয় এবং তারপর তিনি এই তহবিলগুলো লেনদেনের জন্য ব্যবহার করতে পারেন।
-#### প্লাসমা চেইন থেকে প্রস্থান করা {#exiting-the-plasma-chain}
+#### প্লাজমা চেইন থেকে প্রস্থান করা {#exiting-the-plasma-chain}
-প্লাসমা চেইন থেকে প্রস্থান করা এতে প্রবেশ করার চেয়ে বিভিন্ন কারণে আরও জটিল। সবচেয়ে বড় কারণ হল, যদিও Ethereum-এর কাছে প্লাসমা চেইনের স্টেট সম্পর্কে তথ্য রয়েছে, তবে এটি যাচাই করতে পারে না যে তথ্যটি সত্য কি না। একজন দুರುದ್ದেশ্যপূর্ণ ব্যবহারকারী একটি ভুল দাবি করতে পারে ("আমার কাছে 1000 ETH আছে") এবং দাবিটি সমর্থন করার জন্য জাল প্রমাণ সরবরাহ করে পার পেয়ে যেতে পারে।
+বেশ কয়েকটি কারণে প্লাজমা চেইন থেকে প্রস্থান করা এতে প্রবেশ করার চেয়ে বেশি জটিল। সবচেয়ে বড় কারণ হলো, যদিও ইথিরিয়ামের কাছে প্লাজমা চেইনের স্টেট সম্পর্কে তথ্য থাকে, এটি যাচাই করতে পারে না যে তথ্যটি সত্য কি না। একজন ক্ষতিকারক ব্যবহারকারী একটি ভুল দাবি করতে পারে ("আমার কাছে 1000 ETH আছে") এবং দাবিটিকে সমর্থন করার জন্য জাল প্রমাণ প্রদান করে পার পেয়ে যেতে পারে।
-দুರುದ್ದেশ্যপূর্ণ উইথড্রয়াল রোধ করতে, একটি "চ্যালেঞ্জ পিরিয়ড" চালু করা হয়েছে। চ্যালেঞ্জ পিরিয়ডের সময় (সাধারণত এক সপ্তাহ), যে কেউ একটি ফ্রড-প্রুফ ব্যবহার করে একটি উইথড্রয়াল অনুরোধকে চ্যালেঞ্জ করতে পারে। যদি চ্যালেঞ্জ সফল হয়, তবে উইথড্রয়াল অনুরোধটি প্রত্যাখ্যান করা হয়।
+ক্ষতিকারক প্রত্যাহার রোধ করতে, একটি "চ্যালেঞ্জ পিরিয়ড" চালু করা হয়েছে। চ্যালেঞ্জ পিরিয়ডের সময় (সাধারণত এক সপ্তাহ), যে কেউ একটি ফ্রড প্রুফ ব্যবহার করে প্রত্যাহারের অনুরোধকে চ্যালেঞ্জ করতে পারে। যদি চ্যালেঞ্জটি সফল হয়, তবে প্রত্যাহারের অনুরোধটি প্রত্যাখ্যান করা হয়।
-যাইহোক, সাধারণত ব্যবহারকারীরা সৎ হন এবং তাদের মালিকানাধীন ফান্ড সম্পর্কে সঠিক দাবি করেন। এই পরিস্থিতিতে, অ্যালিস রুট চেইনে (Ethereum) একটি উইথড্রয়াল অনুরোধ শুরু করবে প্লাসমা কন্ট্র্যাক্টে একটি লেনদেন জমা দিয়ে।
+তবে, সাধারণত এমনটি হয় যে ব্যবহারকারীরা সৎ এবং তাদের মালিকানাধীন তহবিল সম্পর্কে সঠিক দাবি করে। এই পরিস্থিতিতে, অ্যালিস প্লাজমা কন্ট্রাক্টে একটি লেনদেন জমা দিয়ে রুট চেইনে (ইথিরিয়াম) একটি প্রত্যাহারের অনুরোধ শুরু করবে।
-তাকে অবশ্যই একটি Merkle প্রুফ সরবরাহ করতে হবে যা যাচাই করবে যে প্লাসমা চেইনে তার ফান্ড তৈরির একটি লেনদেন একটি ব্লকে অন্তর্ভুক্ত ছিল। এটি প্লাসমার পুনরাবৃত্তির জন্য প্রয়োজনীয়, যেমন [প্লাসমা MVP](https://www.learnplasma.org/en/learn/mvp.html), যা একটি [Unspent Transaction Output (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) মডেল ব্যবহার করে।
+তাকে অবশ্যই একটি Merkle প্রমাণ প্রদান করতে হবে যা যাচাই করে যে প্লাজমা চেইনে তার তহবিল তৈরি করার একটি লেনদেন একটি ব্লকে অন্তর্ভুক্ত ছিল। এটি প্লাজমার ইটারেশনগুলোর জন্য প্রয়োজনীয়, যেমন [Plasma MVP](https://www.learnplasma.org/en/learn/mvp.html), যা একটি [Unspent Transaction Output (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) মডেল ব্যবহার করে।
-অন্যান্য, যেমন [প্লাসমা ক্যাশ](https://www.learnplasma.org/en/learn/cash.html), UTXO-এর পরিবর্তে ফান্ডকে [নন-ফাঞ্জিবল টোকেন](/developers/docs/standards/tokens/erc-721/) হিসাবে উপস্থাপন করে। এই ক্ষেত্রে, উইথড্র করার জন্য প্লাসমা চেইনে টোকেনের মালিকানার প্রমাণ প্রয়োজন। এটি টোকেন সম্পর্কিত দুটি সর্বশেষ লেনদেন জমা দিয়ে এবং সেই লেনদেনগুলির একটি ব্লকে অন্তর্ভুক্তি যাচাই করে একটি Merkle প্রুফ সরবরাহ করে করা হয়।
+অন্যান্য, যেমন [Plasma Cash](https://www.learnplasma.org/en/learn/cash.html), UTXO-এর পরিবর্তে তহবিলগুলোকে [নন-ফান্জেবল টোকেন](/developers/docs/standards/tokens/erc-721/) হিসেবে উপস্থাপন করে। এই ক্ষেত্রে প্রত্যাহার করার জন্য, প্লাজমা চেইনে টোকেনগুলোর মালিকানার প্রমাণ প্রয়োজন। এটি টোকেনটির সাথে জড়িত সর্বশেষ দুটি লেনদেন জমা দিয়ে এবং একটি ব্লকে সেই লেনদেনগুলোর অন্তর্ভুক্তি যাচাই করার জন্য একটি Merkle প্রমাণ প্রদান করে করা হয়।
-ব্যবহারকারীকে সৎ আচরণের গ্যারান্টি হিসাবে উইথড্রয়াল অনুরোধে একটি বন্ডও যোগ করতে হবে। যদি একজন চ্যালেঞ্জার অ্যালিসের উইথড্রয়াল অনুরোধটি অবৈধ প্রমাণ করে, তবে তার বন্ড কেটে নেওয়া হয় এবং এর কিছু অংশ পুরস্কার হিসাবে চ্যালেঞ্জারের কাছে যায়।
+সৎ আচরণের গ্যারান্টি হিসেবে ব্যবহারকারীকে প্রত্যাহারের অনুরোধের সাথে একটি বন্ডও যোগ করতে হবে। যদি কোনো চ্যালেঞ্জার অ্যালিসের প্রত্যাহারের অনুরোধটি অবৈধ প্রমাণ করে, তবে তার বন্ডটি স্ল্যাশ করা হয় এবং এর কিছু অংশ চ্যালেঞ্জারকে পুরস্কার হিসেবে দেওয়া হয়।
-যদি চ্যালেঞ্জ পিরিয়ড কেউ ফ্রড-প্রুফ প্রদান না করেই শেষ হয়ে যায়, তাহলে অ্যালিসের উইথড্রয়াল অনুরোধটি বৈধ বলে বিবেচিত হয়, যা তাকে Ethereum-এর প্লাসমা কন্ট্র্যাক্ট থেকে ডিপোজিট পুনরুদ্ধার করতে দেয়।
+যদি কেউ ফ্রড প্রুফ প্রদান না করেই চ্যালেঞ্জ পিরিয়ড পার হয়ে যায়, তবে অ্যালিসের প্রত্যাহারের অনুরোধটি বৈধ বলে বিবেচিত হয়, যা তাকে ইথিরিয়ামে প্লাজমা কন্ট্রাক্ট থেকে জমা পুনরুদ্ধার করতে দেয়।
-### বিরোধ সালিশ {#dispute-arbitration}
+### বিরোধ নিষ্পত্তি {#dispute-arbitration}
-যেকোনো ব্লকচেইনের মতো, অংশগ্রহণকারীরা দুರುದ್ದেশ্যপূর্ণভাবে কাজ করলে (যেমন, ফান্ড ডাবল-স্পেন্ডিং করলে) লেনদেনের অখণ্ডতা প্রয়োগ করার জন্য প্লাসমা চেইনের একটি মেকানিজমের প্রয়োজন। এই লক্ষ্যে, প্লাসমা চেনগুলি স্টেট ট্রানজিশনের বৈধতা সম্পর্কিত বিরোধগুলির সালিশ করার জন্য এবং খারাপ আচরণকে শাস্তি দেওয়ার জন্য ফ্রড প্রুফ ব্যবহার করে। ফ্রড প্রুফ একটি মেকানিজম হিসাবে ব্যবহৃত হয় যার মাধ্যমে একটি প্লাসমা চাইল্ড চেন তার প্যারেন্ট চেইন বা রুট চেইনে একটি অভিযোগ দায়ের করে।
+যেকোনো ব্লকচেইনের মতো, অংশগ্রহণকারীরা ক্ষতিকারক আচরণ করলে (যেমন, ডাবল-স্পেন্ডিং ফান্ড) লেনদেনের অখণ্ডতা প্রয়োগ করার জন্য প্লাজমা চেইনগুলোর একটি মেকানিজম প্রয়োজন। এই লক্ষ্যে, প্লাজমা চেইনগুলো স্টেট ট্রানজিশনের বৈধতা সম্পর্কিত বিরোধ নিষ্পত্তি করতে এবং খারাপ আচরণের শাস্তি দিতে ফ্রড প্রুফ ব্যবহার করে। ফ্রড প্রুফগুলো এমন একটি মেকানিজম হিসেবে ব্যবহৃত হয় যার মাধ্যমে একটি প্লাজমা চাইল্ড চেইন তার প্যারেন্ট চেইন বা রুট চেইনে অভিযোগ দায়ের করে।
-একটি ফ্রড-প্রুফ হলো কেবল একটি দাবি যে একটি নির্দিষ্ট স্টেট ট্রানজিশন অবৈধ। একটি উদাহরণ হলো যদি একজন ব্যবহারকারী (অ্যালিস) একই ফান্ড দুবার খরচ করার চেষ্টা করে। হতে পারে সে ববের সাথে একটি লেনদেনে UTXO খরচ করেছে এবং অন্য একটি লেনদেনে একই UTXO (যা এখন ববের) খরচ করতে চায়।
+একটি ফ্রড প্রুফ হলো কেবল একটি দাবি যে একটি নির্দিষ্ট স্টেট ট্রানজিশন অবৈধ। একটি উদাহরণ হলো যদি কোনো ব্যবহারকারী (অ্যালিস) একই তহবিল দুবার ব্যয় করার চেষ্টা করে। সম্ভবত সে ববের সাথে একটি লেনদেনে UTXO ব্যয় করেছে এবং অন্য একটি লেনদেনে একই UTXO (যা এখন ববের) ব্যয় করতে চায়।
-উইথড্রয়ালটি প্রতিরোধ করতে, বব একটি পূর্ববর্তী লেনদেনে অ্যালিসের উক্ত UTXO খরচ করার প্রমাণ এবং একটি ব্লকে লেনদেনটির অন্তর্ভুক্তির একটি Merkle প্রুফ সরবরাহ করে একটি ফ্রড-প্রুফ তৈরি করবে। একই প্রক্রিয়া প্লাসমা ক্যাশে কাজ করে—ববকে প্রমাণ দিতে হবে যে অ্যালিস যে টোকেনগুলি উইথড্র করার চেষ্টা করছে তা সে আগে স্থানান্তর করেছিল।
+প্রত্যাহার রোধ করতে, বব পূর্ববর্তী লেনদেনে অ্যালিসের উক্ত UTXO ব্যয় করার প্রমাণ এবং একটি ব্লকে লেনদেনের অন্তর্ভুক্তির একটি Merkle প্রমাণ প্রদান করে একটি ফ্রড প্রুফ তৈরি করবে। একই প্রক্রিয়া Plasma Cash-এ কাজ করে—ববকে প্রমাণ দিতে হবে যে অ্যালিস আগে যে টোকেনগুলো প্রত্যাহার করার চেষ্টা করছে তা স্থানান্তর করেছিল।
-যদি ববের চ্যালেঞ্জ সফল হয়, তবে অ্যালিসের উইথড্রয়াল অনুরোধ বাতিল করা হয়। তবে, এই পদ্ধতিটি উইথড্রয়াল অনুরোধের জন্য চেইন দেখার ববের ক্ষমতার উপর নির্ভর করে। যদি বব অফলাইনে থাকে, তাহলে চ্যালেঞ্জ পিরিয়ড শেষ হয়ে গেলে অ্যালিস দুರುದ್ದেশ্যপূর্ণ উইথড্রয়ালটি প্রক্রিয়া করতে পারে।
+যদি ববের চ্যালেঞ্জ সফল হয়, তবে অ্যালিসের প্রত্যাহারের অনুরোধ বাতিল করা হয়। তবে, এই পদ্ধতিটি প্রত্যাহারের অনুরোধের জন্য চেইনটি পর্যবেক্ষণ করার ববের ক্ষমতার উপর নির্ভর করে। যদি বব অফলাইনে থাকে, তবে চ্যালেঞ্জ পিরিয়ড পার হয়ে গেলে অ্যালিস ক্ষতিকারক প্রত্যাহার প্রক্রিয়া করতে পারে।
-## প্লাসমায় মাস এক্সিট সমস্যা {#the-mass-exit-problem-in-plasma}
+## প্লাজমাতে ম্যাস এক্সিট সমস্যা {#the-mass-exit-problem-in-plasma}
-মাস এক্সিট সমস্যাটি ঘটে যখন বিপুল সংখ্যক ব্যবহারকারী একই সময়ে একটি প্লাসমা চেইন থেকে উইথড্র করার চেষ্টা করে। এই সমস্যাটি কেন বিদ্যমান তা প্লাসমার সবচেয়ে বড় সমস্যাগুলির মধ্যে একটির সাথে সম্পর্কিত: **ডেটা অনুপলব্ধতা**।
+ম্যাস এক্সিট সমস্যা তখন ঘটে যখন বিপুল সংখ্যক ব্যবহারকারী একই সময়ে প্লাজমা চেইন থেকে প্রত্যাহার করার চেষ্টা করে। এই সমস্যাটি কেন বিদ্যমান তা প্লাজমার সবচেয়ে বড় সমস্যাগুলোর একটির সাথে সম্পর্কিত: **ডেটা অনুপলব্ধতা (data unavailability)**।
-ডেটা উপলব্ধতা হলো এটি যাচাই করার ক্ষমতা যে একটি প্রস্তাবিত ব্লকের জন্য তথ্য আসলে ব্লকচেইন নেটওয়ার্কে প্রকাশিত হয়েছিল। একটি ব্লক "অনুপলব্ধ" হয় যদি প্রযোজক ব্লকটি নিজেই প্রকাশ করে কিন্তু ব্লক তৈরি করতে ব্যবহৃত ডেটা আটকে রাখে।
+ডাটা এভেইলএবিলিটি হলো এটি যাচাই করার ক্ষমতা যে একটি প্রস্তাবিত ব্লকের তথ্য আসলে ব্লকচেইন নেটওয়ার্ক-এ প্রকাশিত হয়েছিল। একটি ব্লক "অনুপলব্ধ" হয় যদি প্রযোজক ব্লকটি নিজেই প্রকাশ করে কিন্তু ব্লক তৈরি করতে ব্যবহৃত ডেটা আটকে রাখে।
-নোডগুলিকে ব্লক ডাউনলোড করতে এবং লেনদেনের বৈধতা যাচাই করতে সক্ষম হতে হলে ব্লকগুলি উপলব্ধ থাকতে হবে। ব্লকচেইনগুলি ব্লক প্রযোজকদের সমস্ত লেনদেনের ডেটা অনচেইনে পোস্ট করতে বাধ্য করে ডেটা উপলব্ধতা নিশ্চিত করে।
+নোড-গুলো যদি ব্লকটি ডাউনলোড করতে এবং লেনদেনের বৈধতা যাচাই করতে সক্ষম হয় তবে ব্লকস অবশ্যই উপলব্ধ থাকতে হবে। ব্লকচেইনগুলো ব্লক প্রযোজকদের সমস্ত লেনদেনের ডেটা অনচেইন পোস্ট করতে বাধ্য করে ডাটা এভেইলএবিলিটি নিশ্চিত করে।
-ডেটা উপলব্ধতা Ethereum-এর বেস লেয়ারে নির্মিত অফচেইন স্কেলিং প্রোটোকলগুলিকে সুরক্ষিত করতেও সহায়তা করে। এই চেইনগুলির অপারেটরদের Ethereum-এ লেনদেনের ডেটা প্রকাশ করতে বাধ্য করার মাধ্যমে, যে কেউ চেইনের সঠিক স্টেট উল্লেখ করে ফ্রড প্রুফ তৈরি করে অবৈধ ব্লককে চ্যালেঞ্জ করতে পারে।
+ডাটা এভেইলএবিলিটি ইথিরিয়ামের বেস লেয়ারে তৈরি অফচেইন স্কেলিং প্রটোকল সুরক্ষিত করতেও সাহায্য করে। এই চেইনগুলোর অপারেটরদের ইথিরিয়ামে লেনদেনের ডেটা প্রকাশ করতে বাধ্য করার মাধ্যমে, যে কেউ চেইনের সঠিক স্টেট উল্লেখ করে ফ্রড প্রুফ তৈরি করে অবৈধ ব্লকগুলোকে চ্যালেঞ্জ করতে পারে।
-প্লাসমা চেইনগুলি প্রাথমিকভাবে অপারেটরের সাথে লেনদেনের ডেটা সঞ্চয় করে এবং **Mainnet-এ কোনো ডেটা প্রকাশ করে না** (অর্থাৎ, পর্যায়ক্রমিক স্টেট কমিটমেন্ট ছাড়া)। এর মানে হল ব্যবহারকারীদের অবৈধ লেনদেনকে চ্যালেঞ্জ করে ফ্রড প্রুফ তৈরি করার প্রয়োজন হলে ব্লক ডেটা সরবরাহের জন্য অপারেটরের উপর নির্ভর করতে হবে। যদি এই সিস্টেমটি কাজ করে, তবে ব্যবহারকারীরা সর্বদা ফান্ড সুরক্ষিত করতে ফ্রড প্রুফ ব্যবহার করতে পারে।
+প্লাজমা চেইনগুলো প্রাথমিকভাবে অপারেটরের কাছে লেনদেনের ডেটা সংরক্ষণ করে এবং **মেইননেট-এ কোনো ডেটা প্রকাশ করে না** (অর্থাৎ, পর্যায়ক্রমিক স্টেট কমিটমেন্টগুলো ছাড়া)। এর মানে হলো ব্যবহারকারীদের অবৈধ লেনদেনকে চ্যালেঞ্জ করে ফ্রড প্রুফ তৈরি করার প্রয়োজন হলে ব্লক ডেটা প্রদানের জন্য অপারেটরের উপর নির্ভর করতে হবে। যদি এই সিস্টেমটি কাজ করে, তবে ব্যবহারকারীরা সর্বদা তহবিল সুরক্ষিত করতে ফ্রড প্রুফ ব্যবহার করতে পারে।
-সমস্যাটি শুরু হয় যখন অপারেটর, শুধু কোনো ব্যবহারকারী নয়, দুರುದ್ದেশ্যপূর্ণভাবে কাজ করা পক্ষ হয়। যেহেতু অপারেটর ব্লকচেইনের একমাত্র নিয়ন্ত্রণে থাকে, তাই তাদের কাছে প্লাসমা চেইনে ব্যবহারকারীদের অন্তর্গত ফান্ড চুরির মতো বড় স্কেলে অবৈধ স্টেট ট্রানজিশন এগিয়ে নিয়ে যাওয়ার জন্য আরও বেশি প্রণোদনা থাকে।
+সমস্যাটি তখন শুরু হয় যখন অপারেটর, শুধু কোনো ব্যবহারকারী নয়, ক্ষতিকারকভাবে কাজ করা পক্ষ হয়। যেহেতু অপারেটর ব্লকচেইনের একক নিয়ন্ত্রণে থাকে, তাই তাদের বৃহত্তর স্কেলে অবৈধ স্টেট ট্রানজিশন অগ্রসর করার জন্য আরও বেশি প্রণোদনা থাকে, যেমন প্লাজমা চেইনে ব্যবহারকারীদের তহবিল চুরি করা।
-এই ক্ষেত্রে, ক্লাসিক ফ্রড-প্রুফ সিস্টেম কাজ করে না। অপারেটর সহজেই অ্যালিস এবং ববের ফান্ড তাদের ওয়ালেটে স্থানান্তর করার একটি অবৈধ লেনদেন করতে পারে এবং ফ্রড-প্রুফ তৈরির জন্য প্রয়োজনীয় ডেটা লুকিয়ে রাখতে পারে। এটি সম্ভব কারণ অপারেটরকে ব্যবহারকারী বা Mainnet-এর কাছে ডেটা উপলব্ধ করতে হয় না।
+এই ক্ষেত্রে, ক্লাসিক ফ্রড প্রুফ সিস্টেম ব্যবহার করা কাজ করে না। অপারেটর সহজেই অ্যালিস এবং ববের তহবিল তাদের ওয়ালেটে স্থানান্তর করার একটি অবৈধ লেনদেন করতে পারে এবং ফ্রড প্রুফ তৈরি করার জন্য প্রয়োজনীয় ডেটা লুকিয়ে রাখতে পারে। এটি সম্ভব কারণ অপারেটরকে ব্যবহারকারী বা মেইননেট-এর কাছে ডেটা উপলব্ধ করার প্রয়োজন নেই।
-অতএব, সবচেয়ে আশাবাদী সমাধান হল প্লাসমা চেইন থেকে ব্যবহারকারীদের একটি "মাস এক্সিট" করার চেষ্টা করা। মাস এক্সিট দুರುದ್ದেশ্যপূর্ণ অপারেটরের ফান্ড চুরির পরিকল্পনাকে ধীর করে দেয় এবং ব্যবহারকারীদের জন্য কিছু সুরক্ষা প্রদান করে। প্রতিটি UTXO (বা টোকেন) কখন তৈরি হয়েছিল তার উপর ভিত্তি করে উইথড্রয়াল অনুরোধগুলি অর্ডার করা হয়, যা দুರುದ್ದেশ্যপূর্ণ অপারেটরদের সৎ ব্যবহারকারীদের ফ্রন্ট-রানিং করা থেকে বাধা দেয়।
+অতএব, সবচেয়ে আশাবাদী সমাধান হলো প্লাজমা চেইন থেকে ব্যবহারকারীদের একটি "ম্যাস এক্সিট" বা গণপ্রস্থানের চেষ্টা করা। ম্যাস এক্সিট ক্ষতিকারক অপারেটরের তহবিল চুরি করার পরিকল্পনাকে ধীর করে দেয় এবং ব্যবহারকারীদের জন্য কিছু মাত্রায় সুরক্ষা প্রদান করে। প্রতিটি UTXO (বা টোকেন) কখন তৈরি হয়েছিল তার উপর ভিত্তি করে প্রত্যাহারের অনুরোধগুলো ক্রমানুসারে সাজানো হয়, যা ক্ষতিকারক অপারেটরদের সৎ ব্যবহারকারীদের ফ্রন্ট-রানিং করা থেকে বাধা দেয়।
-তবুও, মাস এক্সিটের সময় উইথড্রয়াল অনুরোধগুলির বৈধতা যাচাই করার জন্য আমাদের এখনও একটি উপায় প্রয়োজন—সুবিধাবাদী ব্যক্তিদের বিশৃঙ্খলার মধ্যে অবৈধ এক্সিট প্রক্রিয়া করে লাভবান হওয়া থেকে বিরত রাখার জন্য। সমাধানটি সহজ: ব্যবহারকারীদের তাদের টাকা বের করার জন্য চেইনের শেষ **বৈধ স্টেট** পোস্ট করতে হবে।
+তা সত্ত্বেও, ম্যাস এক্সিটের সময় প্রত্যাহারের অনুরোধগুলোর বৈধতা যাচাই করার জন্য আমাদের এখনও একটি উপায় প্রয়োজন—যাতে সুবিধাবাদী ব্যক্তিরা বিশৃঙ্খলার সুযোগ নিয়ে অবৈধ প্রস্থান প্রক্রিয়া করে লাভবান হতে না পারে। সমাধানটি সহজ: ব্যবহারকারীদের তাদের অর্থ প্রস্থান করার জন্য চেইনের সর্বশেষ **বৈধ স্টেট** পোস্ট করতে হবে।
-কিন্তু এই পদ্ধতির এখনও সমস্যা আছে। উদাহরণস্বরূপ, যদি একটি প্লাসমা চেইনের সমস্ত ব্যবহারকারীকে প্রস্থান করতে হয় (যা একজন দুರುದ್ದেশ্যপূর্ণ অপারেটরের ক্ষেত্রে সম্ভব), তবে প্লাসমা চেইনের সম্পূর্ণ বৈধ স্টেটটি একবারে Ethereum-এর বেস লেয়ারে ডাম্প করতে হবে। প্লাসমা চেইনের অবাধ আকার (উচ্চ থ্রুপুট = আরও ডেটা) এবং Ethereum-এর প্রসেসিং স্পিডের সীমাবদ্ধতার সাথে, এটি একটি আদর্শ সমাধান নয়।
+কিন্তু এই পদ্ধতিতে এখনও সমস্যা রয়েছে। উদাহরণস্বরূপ, যদি একটি প্লাজমা চেইনের সমস্ত ব্যবহারকারীকে প্রস্থান করতে হয় (যা একটি ক্ষতিকারক অপারেটরের ক্ষেত্রে সম্ভব), তবে প্লাজমা চেইনের সম্পূর্ণ বৈধ স্টেট একবারে ইথিরিয়ামের বেস লেয়ারে ডাম্প করতে হবে। প্লাজমা চেইনগুলোর নির্বিচার আকার (উচ্চ থ্রুপুট = আরও ডেটা) এবং ইথিরিয়ামের প্রসেসিং গতির সীমাবদ্ধতার কারণে, এটি একটি আদর্শ সমাধান নয়।
-যদিও এক্সিট গেমগুলি তাত্ত্বিকভাবে শুনতে ভাল লাগে, বাস্তব-জীবনের মাস এক্সিটগুলি সম্ভবত Ethereum-এ নেটওয়ার্ক-ব্যাপী কনজেশন ট্রিগার করবে। Ethereum-এর কার্যকারিতার ক্ষতি করার পাশাপাশি, একটি খারাপভাবে সমন্বিত মাস এক্সিটের অর্থ হল যে অপারেটর প্লাসমা চেইনের প্রতিটি অ্যাকাউন্ট খালি করার আগে ব্যবহারকারীরা ফান্ড উইথড্র করতে অক্ষম হতে পারে।
+যদিও এক্সিট গেমগুলো তত্ত্বে ভালো শোনায়, বাস্তব জীবনের ম্যাস এক্সিটগুলো সম্ভবত ইথিরিয়ামেই নেটওয়ার্ক-ব্যাপী যানজট সৃষ্টি করবে। ইথিরিয়ামের কার্যকারিতার ক্ষতি করার পাশাপাশি, একটি দুর্বলভাবে সমন্বিত ম্যাস এক্সিটের অর্থ হলো অপারেটর প্লাজমা চেইনের প্রতিটি একাউন্ট খালি করার আগে ব্যবহারকারীরা তহবিল প্রত্যাহার করতে অক্ষম হতে পারে।
-## প্লাসমার সুবিধা এবং অসুবিধা {#pros-and-cons-of-plasma}
+## প্লাজমার সুবিধা এবং অসুবিধা {#pros-and-cons-of-plasma}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| উচ্চ থ্রুপুট এবং প্রতি লেনদেনে কম খরচ অফার করে। | সাধারণ কম্পিউটেশন সমর্থন করে না (স্মার্ট কন্ট্র্যাক্ট চালাতে পারে না)। শুধুমাত্র বেসিক টোকেন ট্রান্সফার, সোয়াপ এবং কয়েকটি অন্যান্য লেনদেনের ধরন প্রেডিকেট লজিকের মাধ্যমে সমর্থিত। |
-| যেকোনো ব্যবহারকারীর মধ্যে লেনদেনের জন্য ভালো (যদি উভয়ই প্লাসমা চেইনে প্রতিষ্ঠিত থাকে তবে প্রতি ব্যবহারকারী জোড়ার জন্য কোনো ওভারহেড নেই) | আপনার ফান্ডের নিরাপত্তা নিশ্চিত করার জন্য পর্যায়ক্রমে নেটওয়ার্ক দেখতে হবে (লাইভনেস প্রয়োজনীয়তা) বা এই দায়িত্ব অন্য কাউকে অর্পণ করতে হবে। |
-| প্লাসমা চেইনগুলিকে নির্দিষ্ট ব্যবহারের ক্ষেত্রে মানিয়ে নেওয়া যেতে পারে যা মূল চেইনের সাথে সম্পর্কিত নয়। ব্যবসা সহ যে কেউ, বিভিন্ন প্রসঙ্গে কাজ করে এমন স্কেলেবল ইনফ্রাস্ট্রাকচার প্রদানের জন্য প্লাসমা স্মার্ট কন্ট্র্যাক্ট কাস্টমাইজ করতে পারে। | ডেটা সংরক্ষণ এবং অনুরোধের ভিত্তিতে তা পরিবেশন করার জন্য এক বা একাধিক অপারেটরের উপর নির্ভর করে। |
-| কম্পিউটেশন এবং স্টোরেজ অফচেনে স্থানান্তরিত করে Ethereum Mainnet-এর উপর লোড কমায়। | চ্যালেঞ্জের সুযোগ দেওয়ার জন্য উইথড্রয়াল বেশ কয়েক দিন বিলম্বিত হয়। ফাঞ্জিবল অ্যাসেটের জন্য, এটি লিকুইডিটি প্রোভাইডারদের দ্বারা প্রশমিত করা যেতে পারে, তবে এর সাথে একটি মূলধন ব্যয় জড়িত। |
-| | যদি অনেক ব্যবহারকারী একই সাথে প্রস্থান করার চেষ্টা করে, Ethereum Mainnet কনজেস্টেড হয়ে যেতে পারে। |
+| সুবিধা | অসুবিধা |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| উচ্চ থ্রুপুট এবং প্রতি লেনদেনে কম খরচ অফার করে। | সাধারণ কম্পিউটেশন সমর্থন করে না (স্মার্ট কন্ট্রাক্ট চালাতে পারে না)। প্রেডিকেট লজিকের মাধ্যমে শুধুমাত্র মৌলিক টোকেন স্থানান্তর, সোয়াপ এবং আরও কয়েকটি লেনদেনের ধরন সমর্থিত। |
+| নির্বিচার ব্যবহারকারীদের মধ্যে লেনদেনের জন্য ভালো (যদি উভয়ই প্লাজমা চেইনে প্রতিষ্ঠিত হয় তবে প্রতি ব্যবহারকারী জোড়ার জন্য কোনো ওভারহেড নেই) | আপনার তহবিলের নিরাপত্তা নিশ্চিত করতে পর্যায়ক্রমে নেটওয়ার্ক পর্যবেক্ষণ করতে হবে (লাইভনেস প্রয়োজনীয়তা) বা এই দায়িত্ব অন্য কাউকে অর্পণ করতে হবে। |
+| প্লাজমা চেইনগুলোকে নির্দিষ্ট ব্যবহারের ক্ষেত্রে মানিয়ে নেওয়া যেতে পারে যা মূল চেইনের সাথে সম্পর্কিত নয়। ব্যবসা প্রতিষ্ঠান সহ যে কেউ বিভিন্ন প্রেক্ষাপটে কাজ করে এমন স্কেলেবল পরিকাঠামো প্রদান করতে প্লাজমা স্মার্ট কন্ট্রাক্ট কাস্টমাইজ করতে পারে। | ডেটা সংরক্ষণ করতে এবং অনুরোধের ভিত্তিতে এটি পরিবেশন করতে এক বা একাধিক অপারেটরের উপর নির্ভর করে। |
+| কম্পিউটেশন এবং স্টোরেজ অফচেইন সরিয়ে ইথিরিয়াম মেইননেট-এর উপর লোড কমায়। | চ্যালেঞ্জের অনুমতি দেওয়ার জন্য প্রত্যাহার কয়েক দিন বিলম্বিত হয়। ফান্জেবল সম্পদের জন্য, এটি লিকুইডিটি প্রদানকারীদের দ্বারা প্রশমিত করা যেতে পারে, তবে এর সাথে সম্পর্কিত মূলধন খরচ রয়েছে। |
+| | যদি খুব বেশি ব্যবহারকারী একই সাথে প্রস্থান করার চেষ্টা করে, তবে ইথিরিয়াম মেইননেট যানজটপূর্ণ হতে পারে। |
-## প্লাসমা বনাম লেয়ার 2 স্কেলিং প্রোটোকল {#plasma-vs-layer-2}
+## প্লাজমা বনাম লেয়ার ২ স্কেলিং প্রটোকল {#plasma-vs-layer-2}
-যদিও প্লাসমা একসময় Ethereum-এর জন্য একটি দরকারী স্কেলিং সমাধান হিসাবে বিবেচিত হত, তবে এটি এখন [লেয়ার 2 (L2) স্কেলিং প্রোটোকল](/layer-2/)-এর পক্ষে বাদ দেওয়া হয়েছে। L2 স্কেলিং সমাধানগুলি প্লাসমার বেশ কয়েকটি সমস্যার প্রতিকার করে:
+যদিও প্লাজমা একসময় ইথিরিয়ামের জন্য একটি দরকারী স্কেলিং সমাধান হিসেবে বিবেচিত হতো, তবে [লেয়ার ২ (L2) স্কেলিং প্রটোকল](/layer-2/)-এর পক্ষে এটি বাদ দেওয়া হয়েছে। L2 স্কেলিং সমাধানগুলো প্লাজমার বেশ কয়েকটি সমস্যার প্রতিকার করে:
-### দক্ষতা {#efficiency}
+### কার্যকারিতা {#efficiency}
-[জিরো-নলেজ রোলআপ](/developers/docs/scaling/zk-rollups) অফচেইনে প্রক্রিয়াকৃত প্রতিটি ব্যাচ লেনদেনের বৈধতার ক্রিপ্টোগ্রাফিক প্রুফ তৈরি করে। এটি ব্যবহারকারী (এবং অপারেটরদের) অবৈধ স্টেট ট্রানজিশন অগ্রসর করা থেকে বিরত রাখে, যা চ্যালেঞ্জ পিরিয়ড এবং এক্সিট গেমের প্রয়োজনীয়তা দূর করে। এর মানে হল ব্যবহারকারীদের তাদের ফান্ড সুরক্ষিত করার জন্য পর্যায়ক্রমে চেইন দেখতে হবে না।
+[জিরো-নলেজ রোলআপ](/developers/docs/scaling/zk-rollups) অফচেইন প্রক্রিয়া করা লেনদেনের প্রতিটি ব্যাচের বৈধতার ক্রিপ্টোগ্রাফিক প্রমাণ তৈরি করে। এটি ব্যবহারকারীদের (এবং অপারেটরদের) অবৈধ স্টেট ট্রানজিশন অগ্রসর করা থেকে বাধা দেয়, চ্যালেঞ্জ পিরিয়ড এবং এক্সিট গেমের প্রয়োজনীয়তা দূর করে। এর মানে হলো ব্যবহারকারীদের তাদের তহবিল সুরক্ষিত করতে পর্যায়ক্রমে চেইনটি পর্যবেক্ষণ করতে হবে না।
-### স্মার্ট কন্ট্র্যাক্টের জন্য সমর্থন {#support-for-smart-contracts}
+### স্মার্ট কন্ট্রাক্ট-এর জন্য সমর্থন {#support-for-smart-contracts}
-প্লাসমা ফ্রেমওয়ার্কের আরেকটি সমস্যা ছিল [Ethereum স্মার্ট কন্ট্র্যাক্টের এক্সিকিউশন সমর্থন করার অক্ষমতা](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4)। ফলস্বরূপ, প্লাসমার বেশিরভাগ ইমপ্লিমেন্টেশনগুলি মূলত সাধারণ পেমেন্ট বা ERC-20 টোকেনের বিনিময়ের জন্য নির্মিত হয়েছিল।
+প্লাজমা ফ্রেমওয়ার্কের আরেকটি সমস্যা ছিল [ইথিরিয়াম স্মার্ট কন্ট্রাক্ট-এর সম্পাদন সমর্থন করতে অক্ষমতা](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4)। ফলস্বরূপ, প্লাজমার বেশিরভাগ বাস্তবায়ন মূলত সাধারণ পেমেন্ট বা ERC-20 টোকেন বিনিময়ের জন্য তৈরি করা হয়েছিল।
-বিপরীতে, অপ্টিমেস্টিক রোলআপ, [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/) এর সাথে সামঞ্জস্যপূর্ণ এবং Ethereum-নেটিভ [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) চালাতে পারে, যা তাদের [ডিসেন্ট্রালাইজড এপ্লিকেশন](/developers/docs/dapps/) স্কেলিং করার জন্য একটি দরকারী এবং _নিরাপদ_ সমাধান করে তোলে। একইভাবে, [EVM (zkEVM) এর একটি জিরো-নলেজ ইমপ্লিমেন্টেশন তৈরি করার](https://ethresear.ch/t/a-zk-evm-specification/11549) পরিকল্পনা চলছে যা ZK-রোলআপগুলিকে নির্বিচারে লজিক প্রক্রিয়া করতে এবং স্মার্ট কন্ট্র্যাক্ট এক্সিকিউট করার অনুমতি দেবে।
+বিপরীতভাবে, অপ্টিমেস্টিক রোলআপ, [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)-এর সাথে সামঞ্জস্যপূর্ণ এবং ইথিরিয়াম-নেটিভ [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) চালাতে পারে, যা তাদেরকে [ডিসেন্ট্রালাইজড এপ্লিকেশন](/developers/docs/dapps/) স্কেলিং-এর জন্য একটি দরকারী এবং _নিরাপদ_ সমাধান করে তোলে। একইভাবে, [EVM-এর একটি জিরো-নলেজ বাস্তবায়ন (zkEVM) তৈরি করার](https://ethresear.ch/t/a-zk-evm-specification/11549) পরিকল্পনা চলছে যা ZK-রোলআপগুলোকে নির্বিচার লজিক প্রক্রিয়া করতে এবং স্মার্ট কন্ট্রাক্ট সম্পাদন করতে অনুমতি দেবে।
### ডেটা অনুপলব্ধতা {#data-unavailability}
-আগেই ব্যাখ্যা করা হয়েছে, প্লাসমা ডেটা উপলব্ধতা সমস্যায় ভোগে। যদি একজন দুರುದ್ದেশ্যপূর্ণ অপারেটর প্লাসমা চেইনে একটি অবৈধ ট্রানজিশন অগ্রসর করে, তবে ব্যবহারকারীরা এটিকে চ্যালেঞ্জ করতে অক্ষম হবে কারণ অপারেটর ফ্রড-প্রুফ তৈরির জন্য প্রয়োজনীয় ডেটা আটকে রাখতে পারে। রোলআপগুলি অপারেটরদের Ethereum-এ লেনদেনের ডেটা পোস্ট করতে বাধ্য করে এই সমস্যাটি সমাধান করে, যার ফলে যে কেউ চেইনের স্টেট যাচাই করতে এবং প্রয়োজনে ফ্রড প্রুফ তৈরি করতে পারে।
+আগে যেমন ব্যাখ্যা করা হয়েছে, প্লাজমা ডাটা এভেইলএবিলিটি সমস্যায় ভোগে। যদি কোনো ক্ষতিকারক অপারেটর প্লাজমা চেইনে একটি অবৈধ ট্রানজিশন অগ্রসর করে, তবে ব্যবহারকারীরা এটিকে চ্যালেঞ্জ করতে অক্ষম হবে কারণ অপারেটর ফ্রড প্রুফ তৈরি করার জন্য প্রয়োজনীয় ডেটা আটকে রাখতে পারে। রেলআপস অপারেটরদের ইথিরিয়ামে লেনদেনের ডেটা পোস্ট করতে বাধ্য করে এই সমস্যার সমাধান করে, যা যে কাউকে চেইনের স্টেট যাচাই করতে এবং প্রয়োজনে ফ্রড প্রুফ তৈরি করতে দেয়।
-### মাস এক্সিট সমস্যা {#mass-exit-problem}
+### ম্যাস এক্সিট সমস্যা {#mass-exit-problem}
-ZK-রোলআপ এবং অপ্টিমেস্টিক রোলআপ উভয়ই প্লাসমার মাস এক্সিট সমস্যাটি বিভিন্ন উপায়ে সমাধান করে। উদাহরণস্বরূপ, একটি ZK-রোলআপ ক্রিপ্টোগ্রাফিক মেকানিজমের উপর নির্ভর করে যা নিশ্চিত করে যে অপারেটররা কোনো পরিস্থিতিতেই ব্যবহারকারীর ফান্ড চুরি করতে পারে না।
+ZK-রোলআপ এবং অপ্টিমেস্টিক রোলআপ উভয়ই বিভিন্ন উপায়ে প্লাজমার ম্যাস এক্সিট সমস্যার সমাধান করে। উদাহরণস্বরূপ, একটি ZK-রোলআপ ক্রিপ্টোগ্রাফিক মেকানিজমের উপর নির্ভর করে যা নিশ্চিত করে যে অপারেটররা কোনো পরিস্থিতিতেই ব্যবহারকারীর তহবিল চুরি করতে পারবে না।
-একইভাবে, অপ্টিমেস্টিক রোলআপগুলি উইথড্রয়ালের উপর একটি বিলম্ব সময় আরোপ করে যার সময় যে কেউ একটি চ্যালেঞ্জ শুরু করতে পারে এবং দুರುದ್ದেশ্যপূর্ণ উইথড্রয়াল অনুরোধগুলি প্রতিরোধ করতে পারে। যদিও এটি প্লাসমার অনুরূপ, পার্থক্য হল যে ভেরিফায়ারদের ফ্রড প্রুফ তৈরির জন্য প্রয়োজনীয় ডেটাতে অ্যাক্সেস রয়েছে। এইভাবে, রোলআপ ব্যবহারকারীদের জন্য Ethereum Mainnet-এ একটি উন্মত্ত, "প্রথম-বেরিয়ে-যাওয়া" মাইগ্রেশনে জড়িত হওয়ার প্রয়োজন নেই।
+একইভাবে, অপ্টিমেস্টিক রোলআপ প্রত্যাহারের উপর একটি বিলম্বের সময়কাল আরোপ করে যার সময় যে কেউ একটি চ্যালেঞ্জ শুরু করতে পারে এবং ক্ষতিকারক প্রত্যাহারের অনুরোধগুলো প্রতিরোধ করতে পারে। যদিও এটি প্লাজমার মতো, পার্থক্য হলো যাচাইকারীদের ফ্রড প্রুফ তৈরি করার জন্য প্রয়োজনীয় ডেটাতে অ্যাক্সেস রয়েছে। সুতরাং, রোলআপ ব্যবহারকারীদের ইথিরিয়াম মেইননেট-এ একটি উন্মত্ত, "আগে বের হওয়ার" মাইগ্রেশনে জড়িত হওয়ার কোনো প্রয়োজন নেই।
-## প্লাসমা কিভাবে সাইডচেইন এবং শার্ডিং থেকে আলাদা? {#plasma-sidechains-sharding}
+## প্লাজমা কীভাবে সাইডচেইন এবং শার্ডিং থেকে আলাদা? {#plasma-sidechains-sharding}
-প্লাসমা, সাইডচেইন এবং শার্ডিং মোটামুটি অনুরূপ কারণ তারা সকলেই কোনো না কোনোভাবে Ethereum Mainnet-এর সাথে সংযুক্ত। তবে, এই সংযোগগুলির স্তর এবং শক্তি ভিন্ন হয়, যা প্রতিটি স্কেলিং সমাধানের নিরাপত্তা বৈশিষ্ট্যকে প্রভাবিত করে।
+প্লাজমা, সাইডচেইন এবং শার্ডিং বেশ একই রকম কারণ এগুলো সবই কোনো না কোনোভাবে ইথিরিয়াম মেইননেট-এর সাথে সংযুক্ত। তবে, এই সংযোগগুলোর স্তর এবং শক্তি পরিবর্তিত হয়, যা প্রতিটি স্কেলিং সমাধানের নিরাপত্তা বৈশিষ্ট্যগুলোকে প্রভাবিত করে।
-### প্লাসমা বনাম সাইডচেইন {#plasma-vs-sidechains}
+### প্লাজমা বনাম সাইডচেইন {#plasma-vs-sidechains}
-একটি [সাইডচেইন](/developers/docs/scaling/sidechains/) হলো একটি স্বাধীনভাবে পরিচালিত ব্লকচেইন যা একটি দ্বিমুখী ব্রিজের মাধ্যমে Ethereum Mainnet-এর সাথে সংযুক্ত। [ব্রিজ](/bridges/) ব্যবহারকারীদের দুটি ব্লকচেইনের মধ্যে টোকেন বিনিময় করে সাইডচেইনে লেনদেন করার অনুমতি দেয়, যা Ethereum Mainnet-এর কনজেশন কমায় এবং স্কেলেবিলিটি উন্নত করে।
-সাইডচেইনগুলি একটি পৃথক কনসেন্সাস মেকানিজম ব্যবহার করে এবং সাধারণত Ethereum Mainnet-এর থেকে অনেক ছোট হয়। ফলস্বরূপ, এই চেইনগুলিতে অ্যাসেট ব্রিজ করার ক্ষেত্রে ঝুঁকি বৃদ্ধি পায়; সাইডচেইন মডেলে Ethereum Mainnet থেকে উত্তরাধিকারসূত্রে প্রাপ্ত নিরাপত্তা গ্যারান্টির অভাবের কারণে, ব্যবহারকারীরা সাইডচেইনে আক্রমণের ফলে ফান্ড হারানোর ঝুঁকিতে থাকে।
+একটি [সাইডচেইন](/developers/docs/scaling/sidechains/) হলো একটি স্বাধীনভাবে পরিচালিত ব্লকচেইন যা একটি দ্বিমুখী ব্রিজ-এর মাধ্যমে ইথিরিয়াম মেইননেট-এর সাথে সংযুক্ত। [ব্রিজ](/bridges/) ব্যবহারকারীদের সাইডচেইনে লেনদেন করার জন্য দুটি ব্লকচেইনের মধ্যে টোকেন বিনিময় করতে দেয়, যা ইথিরিয়াম মেইননেট-এ যানজট কমায় এবং স্কেলেবিলিটি উন্নত করে।
+সাইডচেইনগুলো একটি পৃথক কনসেন্সাস মেকানিজম ব্যবহার করে এবং সাধারণত ইথিরিয়াম মেইননেট-এর চেয়ে অনেক ছোট হয়। ফলস্বরূপ, এই চেইনগুলোতে সম্পদ ব্রিজিং করার সাথে বর্ধিত ঝুঁকি জড়িত থাকে; সাইডচেইন মডেলে ইথিরিয়াম মেইননেট থেকে উত্তরাধিকারসূত্রে প্রাপ্ত নিরাপত্তা গ্যারান্টির অভাবের কারণে, ব্যবহারকারীরা সাইডচেইনে আক্রমণের ক্ষেত্রে তহবিল হারানোর ঝুঁকিতে থাকে।
-বিপরীতে, প্লাসমা চেইনগুলি Mainnet থেকে তাদের নিরাপত্তা অর্জন করে। এটি তাদের সাইডচেইনগুলির চেয়ে পরিমাপযোগ্যভাবে বেশি নিরাপদ করে তোলে। সাইডচেইন এবং প্লাসমা চেইন উভয়েরই আলাদা কনসেন্সাস প্রোটোকল থাকতে পারে, তবে পার্থক্য হল যে প্লাসমা চেইনগুলি Ethereum Mainnet-এ প্রতিটি ব্লকের জন্য Merkle রুট প্রকাশ করে। ব্লক রুট হলো তথ্যের ছোট অংশ যা আমরা প্লাসমা চেইনে ঘটে যাওয়া লেনদেন সম্পর্কে তথ্য যাচাই করতে ব্যবহার করতে পারি। যদি একটি প্লাসমা চেইনে কোনো আক্রমণ হয়, ব্যবহারকারীরা উপযুক্ত প্রুফ ব্যবহার করে নিরাপদে তাদের ফান্ড Mainnet-এ ফেরত উইথড্র করতে পারে।
+বিপরীতভাবে, প্লাজমা চেইনগুলো মেইননেট থেকে তাদের নিরাপত্তা লাভ করে। এটি তাদেরকে সাইডচেইনের চেয়ে পরিমাপযোগ্যভাবে বেশি সুরক্ষিত করে তোলে। সাইডচেইন এবং প্লাজমা চেইন উভয়েরই আলাদা কনসেন্সাস প্রটোকল থাকতে পারে, তবে পার্থক্য হলো প্লাজমা চেইনগুলো ইথিরিয়াম মেইননেট-এ প্রতিটি ব্লকের জন্য Merkle রুট প্রকাশ করে। ব্লক রুটগুলো হলো তথ্যের ছোট টুকরো যা আমরা প্লাজমা চেইনে ঘটা লেনদেন সম্পর্কে তথ্য যাচাই করতে ব্যবহার করতে পারি। যদি প্লাজমা চেইনে কোনো আক্রমণ ঘটে, তবে ব্যবহারকারীরা উপযুক্ত প্রমাণ ব্যবহার করে নিরাপদে তাদের তহবিল মেইননেট-এ প্রত্যাহার করতে পারে।
-### প্লাসমা বনাম শার্ডিং {#plasma-vs-sharding}
+### প্লাজমা বনাম শার্ডিং {#plasma-vs-sharding}
-প্লাসমা চেইন এবং শার্ড চেইন উভয়ই পর্যায়ক্রমে Ethereum Mainnet-এ ক্রিপ্টোগ্রাফিক প্রুফ প্রকাশ করে। তবে, উভয়েরই আলাদা নিরাপত্তা বৈশিষ্ট্য রয়েছে।
+প্লাজমা চেইন এবং শার্ড চেইন উভয়ই পর্যায়ক্রমে ইথিরিয়াম মেইননেট-এ ক্রিপ্টোগ্রাফিক প্রমাণ প্রকাশ করে। তবে, উভয়েরই আলাদা নিরাপত্তা বৈশিষ্ট্য রয়েছে।
-শার্ড চেইনগুলি প্রতিটি ডেটা শার্ড সম্পর্কে বিস্তারিত তথ্য সম্বলিত "কোলেশন হেডার" Mainnet-এ কমিট করে। Mainnet-এর নোডগুলি ডেটা শার্ডের বৈধতা যাচাই করে এবং প্রয়োগ করে, যা অবৈধ শার্ড ট্রানজিশনের সম্ভাবনা হ্রাস করে এবং নেটওয়ার্ককে দুರುದ್ದেশ্যপূর্ণ কার্যকলাপ থেকে রক্ষা করে।
+শার্ড চেইনগুলো মেইননেট-এ "কোলেশন হেডার" কমিট করে যাতে প্রতিটি ডেটা শার্ড সম্পর্কে বিস্তারিত তথ্য থাকে। মেইননেট-এর নোড-গুলো ডেটা শার্ডগুলোর বৈধতা যাচাই করে এবং প্রয়োগ করে, যা অবৈধ শার্ড ট্রানজিশনের সম্ভাবনা কমায় এবং ক্ষতিকারক কার্যকলাপের বিরুদ্ধে নেটওয়ার্ক-কে রক্ষা করে।
-প্লাসমা আলাদা কারণ Mainnet শুধুমাত্র চাইল্ড চেইনের স্টেট সম্পর্কে ন্যূনতম তথ্য পায়। এর মানে হল Mainnet চাইল্ড চেইনগুলিতে পরিচালিত লেনদেন কার্যকরভাবে যাচাই করতে পারে না, যা তাদের কম নিরাপদ করে তোলে।
+প্লাজমা আলাদা কারণ মেইননেট চাইল্ড চেইনগুলোর স্টেট সম্পর্কে শুধুমাত্র ন্যূনতম তথ্য পায়। এর মানে হলো মেইননেট কার্যকরভাবে চাইল্ড চেইনগুলোতে পরিচালিত লেনদেন যাচাই করতে পারে না, যা তাদেরকে কম সুরক্ষিত করে তোলে।
-**দ্রষ্টব্য** যে Ethereum ব্লকচেইনের শার্ডিং আর রোডম্যাপে নেই। এটি রোলআপ এবং [Danksharding](/roadmap/danksharding) এর মাধ্যমে স্কেলিং দ্বারা প্রতিস্থাপিত হয়েছে।
+**দ্রষ্টব্য** যে ইথিরিয়াম ব্লকচেইন শার্ডিং করা আর রোডম্যাপ-এ নেই। এটি রেলআপস এবং [Danksharding](/roadmap/danksharding)-এর মাধ্যমে স্কেলিং দ্বারা প্রতিস্থাপিত হয়েছে।
-### প্লাসমা ব্যবহার করুন {#use-plasma}
+### প্লাজমা ব্যবহার করুন {#use-plasma}
-একাধিক প্রকল্প প্লাসমার ইমপ্লিমেন্টেশন সরবরাহ করে যা আপনি আপনার ডিএ্যাপস-এ একীভূত করতে পারেন:
+একাধিক প্রজেক্ট প্লাজমার বাস্তবায়ন প্রদান করে যা আপনি আপনার ডিএ্যাপস-এ একীভূত করতে পারেন:
- [Polygon](https://polygon.technology/) (পূর্বে Matic Network)
## আরও পড়ুন {#further-reading}
-- [প্লাসমা শিখুন](https://www.learnplasma.org/en/)
-- ["শেয়ারড সিকিউরিটি" কী এবং কেন এটি এত গুরুত্বপূর্ণ তার একটি দ্রুত অনুস্মারক](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/)
-- [সাইডচেইন বনাম প্লাসমা বনাম শার্ডিং](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html)
-- [প্লাসমা বোঝা, পর্ব 1: মূল বিষয়গুলি](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
-- [প্লাসমার জীবন ও মৃত্যু](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
+- [Learn Plasma](https://www.learnplasma.org/en/)
+- [A quick reminder of what "shared security" means and why it's so important](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/)
+- [Sidechains vs Plasma vs Sharding](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html)
+- [Understanding Plasma, Part 1: The Basics](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
+- [The Life and Death of Plasma](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
+
+## টিউটোরিয়াল: ইথিরিয়ামে প্লাজমা চেইন {#tutorials}
+
+- [গোপনীয়তা রক্ষা করে এমন একটি অ্যাপ-নির্দিষ্ট প্লাজমা লিখুন](/developers/tutorials/app-plasma/) _– জিরো-নলেজ প্রমাণ এবং অফচেইন উপাদানগুলো ব্যবহার করে একটি গোপনীয়তা-সংরক্ষণকারী প্লাজমা অ্যাপ্লিকেশন তৈরি করুন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/scaling/sidechains/index.md b/public/content/translations/bn/developers/docs/scaling/sidechains/index.md
index b229dbefb95..8ab48ef689b 100644
--- a/public/content/translations/bn/developers/docs/scaling/sidechains/index.md
+++ b/public/content/translations/bn/developers/docs/scaling/sidechains/index.md
@@ -1,64 +1,64 @@
---
-title: "সাইডচেইন্স"
-description: "স্কেলিং সমাধান হিসাবে সাইডচেইনগুলির একটি ভূমিকা যা বর্তমানে ইথেরিয়াম কমিউনিটি ব্যবহার করছে।"
+title: সাইডচেইন
+description: ইথিরিয়াম কমিউনিটি দ্বারা বর্তমানে ব্যবহৃত একটি স্কেলিং সলিউশন হিসেবে সাইডচেইনের পরিচিতি।
lang: bn
sidebarDepth: 3
---
-একটি সাইডচেইন হল একটি পৃথক ব্লকচেইন যা ইথেরিয়াম থেকে স্বাধীনভাবে চলে এবং একটি দ্বিমুখী ব্রিজের মাধ্যমে ইথেরিয়াম মেইননেটের সাথে সংযুক্ত থাকে। সাইডচেইনগুলির পৃথক ব্লক প্যারামিটার এবং [কনসেন্সাস অ্যালগরিদম](/developers/docs/consensus-mechanisms/) থাকতে পারে, যা প্রায়শই লেনদেনের কার্যকর প্রক্রিয়াকরণের জন্য ডিজাইন করা হয়। একটি সাইডচেইন ব্যবহার করার ক্ষেত্রে কিছু আপস জড়িত থাকে, কারণ তারা ইথেরিয়ামের নিরাপত্তা বৈশিষ্ট্যগুলি উত্তরাধিকার সূত্রে পায় না। [লেয়ার 2 স্কেলিং সমাধান](/layer-2/) -এর থেকে ভিন্ন, সাইডচেইনগুলি স্টেট পরিবর্তন এবং লেনদেনের ডেটা ইথেরিয়াম মেইননেটে আবার পোস্ট করে না।
+একটি সাইডচেইন হলো একটি আলাদা ব্লকচেইন যা [ইথিরিয়াম](/)-এর স্বাধীনভাবে চলে এবং একটি টু-ওয়ে ব্রিজ দ্বারা ইথিরিয়াম মেইননেট-এর সাথে সংযুক্ত থাকে। সাইডচেইনের আলাদা ব্লক প্যারামিটার এবং [কনসেন্সাস এ্যালগরিদম](/developers/docs/consensus-mechanisms/) থাকতে পারে, যা প্রায়শই লেনদেনগুলো দক্ষতার সাথে প্রসেস করার জন্য ডিজাইন করা হয়। তবে, একটি সাইডচেইন ব্যবহার করার ক্ষেত্রে কিছু ট্রেড-অফ বা আপস করতে হয়, কারণ এগুলো ইথিরিয়ামের নিরাপত্তা বৈশিষ্ট্যগুলো উত্তরাধিকারসূত্রে পায় না। [লেয়ার ২ স্কেলিং সলিউশন](/layer-2/)-এর বিপরীতে, সাইডচেইনগুলো স্টেট পরিবর্তন এবং লেনদেনের ডাটা ইথিরিয়াম মেইননেট-এ ফেরত পাঠায় না।
-সাইডচেইনগুলি উচ্চ থ্রুপুট ([স্কেলেবিলিটি ট্রাইলেমা](https://vitalik.eth.limo/general/2021/05/23/scaling.html)) অর্জনের জন্য বিকেন্দ্রীকরণ বা নিরাপত্তার কিছু পরিমাণ ত্যাগ করে। তবে, ইথেরিয়াম বিকেন্দ্রীকরণ এবং নিরাপত্তার সাথে আপস না করে স্কেলিং করতে প্রতিশ্রুতিবদ্ধ।
+উচ্চ থ্রুপুট অর্জনের জন্য সাইডচেইনগুলো কিছু মাত্রায় বিকেন্দ্রীকরণ বা নিরাপত্তাও বিসর্জন দেয় ([স্কেলেবিলিটি ট্রাইলেমা](https://vitalik.eth.limo/general/2021/05/23/scaling.html))। তবে, ইথিরিয়াম বিকেন্দ্রীকরণ এবং নিরাপত্তার সাথে আপস না করে স্কেলিং করতে প্রতিশ্রুতিবদ্ধ।
-## সাইডচেইনগুলি কীভাবে কাজ করে? {#how-do-sidechains-work}
+## সাইডচেইন কীভাবে কাজ করে? {#how-do-sidechains-work}
-সাইডচেইনগুলি হল স্বাধীন ব্লকচেইন, যার ভিন্ন ইতিহাস, ডেভেলপমেন্ট রোডম্যাপ এবং ডিজাইনের বিবেচ্য বিষয় রয়েছে। যদিও একটি সাইডচেইন ইথেরিয়ামের সাথে কিছু উপরিভাগের স্তরের মিল থাকতে পারে, তবে এর বেশ কয়েকটি স্বতন্ত্র বৈশিষ্ট্য রয়েছে।
+সাইডচেইনগুলো হলো স্বাধীন ব্লকচেইন, যেগুলোর আলাদা ইতিহাস, ডেভেলপমেন্ট রোডম্যাপ এবং ডিজাইনের বিবেচ্য বিষয় রয়েছে। যদিও একটি সাইডচেইনের সাথে ইথিরিয়ামের কিছু বাহ্যিক মিল থাকতে পারে, তবে এর বেশ কয়েকটি স্বতন্ত্র বৈশিষ্ট্য রয়েছে।
-### কনসেন্সাস অ্যালগরিদম {#consensus-algorithms}
+### কনসেন্সাস এ্যালগরিদম {#consensus-algorithms}
-সাইডচেইনগুলিকে অনন্য করে তোলে এমন একটি গুণ (অর্থাৎ, ইথেরিয়াম থেকে ভিন্ন) হল ব্যবহৃত কনসেন্সাস অ্যালগরিদম। সাইডচেইনগুলি কনসেন্সাসের জন্য ইথেরিয়ামের উপর নির্ভর করে না এবং তাদের প্রয়োজন অনুসারে বিকল্প কনসেন্সাস প্রোটোকল বেছে নিতে পারে। সাইডচেইনে ব্যবহৃত কনসেন্সাস অ্যালগরিদমের কিছু উদাহরণ হল:
+সাইডচেইনগুলোকে অনন্য (অর্থাৎ, ইথিরিয়াম থেকে আলাদা) করে তোলে এমন একটি গুণ হলো ব্যবহৃত কনসেন্সাস এ্যালগরিদম। সাইডচেইনগুলো কনসেন্সাস-এর জন্য ইথিরিয়ামের ওপর নির্ভর করে না এবং তাদের প্রয়োজন অনুযায়ী বিকল্প কনসেন্সাস প্রটোকল বেছে নিতে পারে। সাইডচেইনে ব্যবহৃত কনসেন্সাস এ্যালগরিদম-এর কিছু উদাহরণ হলো:
-- [প্রুফ-অফ-অথোরিটি](/developers/docs/consensus-mechanisms/poa/)
+- [প্রুফ-অফ-অথরিটি](/developers/docs/consensus-mechanisms/poa/)
- [ডেলিগেটেড প্রুফ-অফ-স্টেক](https://en.bitcoin.it/wiki/Delegated_proof_of_stake)
- [বাইজেন্টাইন ফল্ট টলারেন্স](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained)।
-ইথেরিয়ামের মতো, সাইডচেইনগুলিতে ভ্যালিডেটিং নোড রয়েছে যা লেনদেন যাচাই এবং প্রক্রিয়া করে, ব্লক তৈরি করে এবং ব্লকচেইন স্টেট সংরক্ষণ করে। ভ্যালিডেটররা নেটওয়ার্ক জুড়ে কনসেন্সাস বজায় রাখার জন্য এবং এটিকে ক্ষতিকারক আক্রমণের বিরুদ্ধে সুরক্ষিত করার জন্যও দায়ী।
+ইথিরিয়ামের মতো, সাইডচেইনেও ভ্যালিডেটিং নোড থাকে যা লেনদেন যাচাই ও প্রসেস করে, ব্লকস তৈরি করে এবং ব্লকচেইন স্টেট সংরক্ষণ করে। ভ্যালিডেটরস নেটওয়ার্ক জুড়ে কনসেন্সাস বজায় রাখতে এবং ক্ষতিকারক আক্রমণ থেকে এটিকে সুরক্ষিত রাখার জন্যও দায়ী।
#### ব্লক প্যারামিটার {#block-parameters}
-ইথেরিয়াম [ব্লক টাইম](/developers/docs/blocks/#block-time) (অর্থাৎ নতুন ব্লক তৈরি করতে যে সময় লাগে) এবং [ব্লক সাইজ](/developers/docs/blocks/#block-size) (অর্থাৎ প্রতি ব্লকে থাকা ডেটার পরিমাণ যা গ্যাসে পরিমাপ করা হয়) এর উপর সীমা রাখে। বিপরীতভাবে, সাইডচেইনগুলি প্রায়শই উচ্চ থ্রুপুট, দ্রুত লেনদেন এবং কম ফি অর্জনের জন্য ভিন্ন প্যারামিটার গ্রহণ করে, যেমন দ্রুত ব্লক টাইম এবং উচ্চ গ্যাস লিমিট।
+ইথিরিয়াম [ব্লক টাইম](/developers/docs/blocks/#block-time) (অর্থাৎ, নতুন ব্লকস তৈরি করতে যে সময় লাগে) এবং [ব্লক সাইজ](/developers/docs/blocks/#block-size) (অর্থাৎ, গ্যাস দ্বারা পরিমাপকৃত প্রতি ব্লকে থাকা ডাটার পরিমাণ)-এর ওপর সীমা নির্ধারণ করে। বিপরীতভাবে, সাইডচেইনগুলো প্রায়শই উচ্চ থ্রুপুট, দ্রুত লেনদেন এবং কম ফি অর্জনের জন্য দ্রুত ব্লক টাইম এবং উচ্চতর গ্যাস লিমিট-এর মতো ভিন্ন প্যারামিটার গ্রহণ করে।
-যদিও এর কিছু সুবিধা রয়েছে, নেটওয়ার্ক বিকেন্দ্রীকরণ এবং নিরাপত্তার জন্য এর গুরুতর প্রভাব রয়েছে। ব্লক প্যারামিটার, যেমন দ্রুত ব্লক টাইম এবং বড় ব্লক সাইজ, একটি সম্পূর্ণ নোড চালানোর অসুবিধা বাড়িয়ে দেয়—যার ফলে কয়েকটি "সুপারনোড" চেইন সুরক্ষিত করার জন্য দায়ী থাকে। এই ধরনের পরিস্থিতিতে, ভ্যালিডেটরদের যোগসাজশ বা চেইনের ক্ষতিকারক দখলের সম্ভাবনা বেড়ে যায়।
+যদিও এর কিছু সুবিধা রয়েছে, তবে নেটওয়ার্ক বিকেন্দ্রীকরণ এবং নিরাপত্তার ওপর এর গুরুতর প্রভাব রয়েছে। ব্লক প্যারামিটার, যেমন দ্রুত ব্লক টাইম এবং বড় ব্লক সাইজ, একটি ফুল নোড চালানোর অসুবিধা বাড়িয়ে দেয়—যার ফলে চেইন সুরক্ষিত করার দায়িত্ব কয়েকটি "সুপারনোড"-এর ওপর বর্তায়। এমন পরিস্থিতিতে, ভ্যালিডেটরদের যোগসাজশ বা চেইনের ক্ষতিকারক দখলের সম্ভাবনা বেড়ে যায়।
-বিকেন্দ্রীকরণের ক্ষতি না করে ব্লকচেইন স্কেল করার জন্য, একটি নোড চালানো সবার জন্য উন্মুক্ত থাকতে হবে—অগত্যা বিশেষ হার্ডওয়্যার সহ দলগুলির জন্য নয়। এই কারণেই ইথেরিয়াম নেটওয়ার্কে প্রত্যেকে যাতে [একটি ফুল নোড চালাতে পারে](/developers/docs/nodes-and-clients/#why-should-i-run-an-ethereum-node) তা নিশ্চিত করার জন্য প্রচেষ্টা চলছে।
+বিকেন্দ্রীকরণের ক্ষতি না করে ব্লকচেইনগুলোকে স্কেল করার জন্য, একটি নোড চালানো সবার জন্য উন্মুক্ত হতে হবে—শুধুমাত্র বিশেষ হার্ডওয়্যার থাকা পক্ষগুলোর জন্য নয়। এ কারণেই ইথিরিয়াম নেটওয়ার্কে সবাই যাতে একটি [ফুল নোড চালাতে পারে](/developers/docs/nodes-and-clients/#why-should-i-run-an-ethereum-node) তা নিশ্চিত করার জন্য প্রচেষ্টা চলছে।
-### EVM কম্প্যাটিবিলিটি {#evm-compatibility}
+### ইভিএম (EVM) সামঞ্জস্যতা {#evm-compatibility}
-কিছু সাইডচেইন EVM-কম্প্যাটিবল এবং [ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/) -এর জন্য তৈরি করা কন্ট্র্যাক্টগুলি এক্সিকিউট করতে সক্ষম। EVM-কম্প্যাটিবল সাইডচেইনগুলি [Solidity-তে লেখা](/developers/docs/smart-contracts/languages/) স্মার্ট কন্ট্র্যাক্টগুলিকে সমর্থন করে, সেইসাথে অন্যান্য EVM স্মার্ট কন্ট্র্যাক্ট ভাষাগুলিকেও, যার মানে হল ইথেরিয়াম মেইননেটের জন্য লেখা স্মার্ট কন্ট্র্যাক্টগুলি EVM-কম্প্যাটিবল সাইডচেইনেও কাজ করবে।
+কিছু সাইডচেইন ইভিএম-সামঞ্জস্যপূর্ণ এবং [ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/)-এর জন্য তৈরি করা কন্ট্রাক্টগুলো এক্সিকিউট করতে সক্ষম। ইভিএম-সামঞ্জস্যপূর্ণ সাইডচেইনগুলো [Solidity-তে লেখা](/developers/docs/smart-contracts/languages/) স্মার্ট কন্ট্রাক্ট, সেইসাথে অন্যান্য ইভিএম স্মার্ট কন্ট্রাক্ট ভাষা সমর্থন করে, যার মানে হলো ইথিরিয়াম মেইননেট-এর জন্য লেখা স্মার্ট কন্ট্রাক্টগুলো ইভিএম-সামঞ্জস্যপূর্ণ সাইডচেইনেও কাজ করবে।
-এর মানে হল আপনি যদি আপনার [ডিএ্যাপ](/developers/docs/dapps/) একটি সাইডচেইনে ব্যবহার করতে চান, তবে এটি শুধুমাত্র আপনার [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) এই সাইডচেইনে ডিপ্লয় করার বিষয়। এটি দেখতে, অনুভব করতে এবং কাজ করতে ঠিক মেইননেটের মতোই—আপনি সলিডিটিতে কন্ট্র্যাক্ট লেখেন, এবং সাইডচেইন RPC-এর মাধ্যমে চেইনের সাথে ইন্টারঅ্যাক্ট করেন।
+এর মানে হলো আপনি যদি একটি সাইডচেইনে আপনার [ডিএ্যাপ](/developers/docs/dapps/) ব্যবহার করতে চান, তবে এটি শুধুমাত্র এই সাইডচেইনে আপনার [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) ডিপ্লয় করার বিষয়। এটি দেখতে, অনুভব করতে এবং কাজ করতে ঠিক মেইননেট-এর মতোই—আপনি Solidity-তে কন্ট্রাক্ট লেখেন এবং সাইডচেইনের RPC-এর মাধ্যমে চেইনের সাথে ইন্টারঅ্যাক্ট করেন।
-যেহেতু সাইডচেইনগুলি EVM-কম্প্যাটিবল, তাই সেগুলিকে ইথেরিয়াম-নেটিভ ডিএ্যাপস-এর জন্য একটি দরকারী [স্কেলিং সমাধান](/developers/docs/scaling/) হিসাবে বিবেচনা করা হয়। একটি সাইডচেইনে আপনার ডিএ্যাপ থাকলে, ব্যবহারকারীরা কম গ্যাস ফি এবং দ্রুত লেনদেন উপভোগ করতে পারেন, বিশেষ করে যদি মেইননেট কনজেস্টেড থাকে।
+যেহেতু সাইডচেইনগুলো ইভিএম-সামঞ্জস্যপূর্ণ, তাই এগুলোকে ইথিরিয়াম-নেটিভ ডিএ্যাপস-এর জন্য একটি দরকারী [স্কেলিং সলিউশন](/developers/docs/scaling/) হিসেবে বিবেচনা করা হয়। একটি সাইডচেইনে আপনার ডিএ্যাপ থাকলে, ব্যবহারকারীরা কম গ্যাস ফি এবং দ্রুত লেনদেন উপভোগ করতে পারে, বিশেষ করে যদি মেইননেট যানজটপূর্ণ থাকে।
-তবে, যেমন পূর্বে ব্যাখ্যা করা হয়েছে, একটি সাইডচেইন ব্যবহার করার মধ্যে উল্লেখযোগ্য আপস জড়িত। প্রতিটি সাইডচেইন তার নিরাপত্তার জন্য দায়ী এবং ইথেরিয়ামের নিরাপত্তা বৈশিষ্ট্য উত্তরাধিকার সূত্রে পায় না। এটি ক্ষতিকারক আচরণের সম্ভাবনা বাড়ায় যা আপনার ব্যবহারকারীদের প্রভাবিত করতে পারে বা তাদের তহবিলকে ঝুঁকির মধ্যে ফেলতে পারে।
+তবে, যেমনটি আগে ব্যাখ্যা করা হয়েছে, একটি সাইডচেইন ব্যবহার করার ক্ষেত্রে উল্লেখযোগ্য ট্রেড-অফ জড়িত। প্রতিটি সাইডচেইন তার নিজস্ব নিরাপত্তার জন্য দায়ী এবং ইথিরিয়ামের নিরাপত্তা বৈশিষ্ট্যগুলো উত্তরাধিকারসূত্রে পায় না। এটি ক্ষতিকারক আচরণের সম্ভাবনা বাড়িয়ে দেয় যা আপনার ব্যবহারকারীদের প্রভাবিত করতে পারে বা তাদের ফান্ড ঝুঁকিতে ফেলতে পারে।
-### সম্পদ চলাচল {#asset-movement}
+### সম্পদ স্থানান্তর {#asset-movement}
-একটি পৃথক ব্লকচেইনকে ইথেরিয়াম মেইননেটের একটি সাইডচেইন হতে হলে, ইথেরিয়াম মেইননেট থেকে এবং এতে সম্পদের স্থানান্তর সহজতর করার ক্ষমতা প্রয়োজন। ইথেরিয়ামের সাথে এই আন্তঃকার্যক্ষমতা একটি ব্লকচেইন ব্রিজ ব্যবহার করে অর্জন করা হয়। [ব্রিজগুলি](/bridges/) ইথেরিয়াম মেইননেট এবং একটি সাইডচেইনে ডিপ্লয় করা স্মার্ট কন্ট্র্যাক্ট ব্যবহার করে তাদের মধ্যে তহবিলের ব্রিজিং নিয়ন্ত্রণ করে।
+একটি আলাদা ব্লকচেইনকে ইথিরিয়াম মেইননেট-এর সাইডচেইন হওয়ার জন্য, ইথিরিয়াম মেইননেট থেকে এবং সেখানে সম্পদ স্থানান্তরের সুবিধা দেওয়ার ক্ষমতা থাকতে হবে। ইথিরিয়ামের সাথে এই ইন্টারঅপারেবিলিটি একটি ব্লকচেইন ব্রিজ ব্যবহার করে অর্জন করা হয়। [ব্রিজ](/bridges/) ইথিরিয়াম মেইননেট এবং একটি সাইডচেইনে ডিপ্লয় করা স্মার্ট কন্ট্রাক্ট ব্যবহার করে তাদের মধ্যে ফান্ডের ব্রিজিং নিয়ন্ত্রণ করে।
-যদিও ব্রিজগুলি ব্যবহারকারীদের ইথেরিয়াম এবং সাইডচেইনের মধ্যে তহবিল সরাতে সাহায্য করে, সম্পদগুলি শারীরিকভাবে দুটি চেইনের মধ্যে সরানো হয় না। পরিবর্তে, চেইন জুড়ে মান স্থানান্তরের জন্য সাধারণত মিন্টিং এবং বার্নিং জড়িত এমন প্রক্রিয়াগুলি ব্যবহৃত হয়। [ব্রিজগুলি কীভাবে কাজ করে](/developers/docs/bridges/#how-do-bridges-work) সে সম্পর্কে আরও জানুন।
+যদিও ব্রিজগুলো ব্যবহারকারীদের ইথিরিয়াম এবং সাইডচেইনের মধ্যে ফান্ড স্থানান্তর করতে সাহায্য করে, তবে সম্পদগুলো শারীরিকভাবে দুটি চেইনের মধ্যে স্থানান্তরিত হয় না। এর পরিবর্তে, চেইন জুড়ে ভ্যালু স্থানান্তরের জন্য সাধারণত মিন্টিং এবং বার্নিং জড়িত এমন মেকানিজম ব্যবহার করা হয়। [ব্রিজ কীভাবে কাজ করে](/developers/docs/bridges/#how-do-bridges-work) সে সম্পর্কে আরও জানুন।
## সাইডচেইনের সুবিধা এবং অসুবিধা {#pros-and-cons-of-sidechains}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
-| সাইডচেইনের অন্তর্নিহিত প্রযুক্তি সুপ্রতিষ্ঠিত এবং ব্যাপক গবেষণা ও ডিজাইনের উন্নতি থেকে উপকৃত হয়। | সাইডচেইনগুলি স্কেলেবিলিটির জন্য কিছুটা বিকেন্দ্রীকরণ এবং ট্রাস্টলেসনেসের সাথে আপস করে। |
-| সাইডচেইনগুলি সাধারণ গণনা সমর্থন করে এবং EVM কম্প্যাটিবিলিটি অফার করে (তারা ইথেরিয়াম-নেটিভ ডিএ্যাপস চালাতে পারে)। | একটি সাইডচেইন একটি পৃথক কনসেন্সাস মেকানিজম ব্যবহার করে এবং ইথেরিয়ামের নিরাপত্তা গ্যারান্টি থেকে উপকৃত হয় না। |
-| সাইডচেইনগুলি দক্ষতার সাথে লেনদেন প্রক্রিয়া করতে এবং ব্যবহারকারীদের জন্য লেনদেন ফি কমাতে ভিন্ন কনসেন্সাস মডেল ব্যবহার করে। | সাইডচেইনগুলির জন্য উচ্চতর বিশ্বাসের অনুমান প্রয়োজন (যেমন, ক্ষতিকারক সাইডচেইন ভ্যালিডেটরদের একটি কোরাম জালিয়াতি করতে পারে)। |
-| EVM-কম্প্যাটিবল সাইডচেইনগুলি ডিএ্যাপস-কে তাদের ইকোসিস্টেম প্রসারিত করতে দেয়। | |
+| সুবিধা | অসুবিধা |
+| --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
+| সাইডচেইনের অন্তর্নিহিত প্রযুক্তি সুপ্রতিষ্ঠিত এবং ব্যাপক গবেষণা ও ডিজাইনের উন্নতি থেকে উপকৃত হয়। | সাইডচেইনগুলো স্কেলেবিলিটির জন্য কিছু মাত্রায় বিকেন্দ্রীকরণ এবং ট্রাস্টলেসনেস-এর সাথে আপস করে। |
+| সাইডচেইনগুলো সাধারণ কম্পিউটেশন সমর্থন করে এবং ইভিএম সামঞ্জস্যতা প্রদান করে (এগুলো ইথিরিয়াম-নেটিভ ডিএ্যাপস চালাতে পারে)। | একটি সাইডচেইন একটি আলাদা কনসেন্সাস মেকানিজম ব্যবহার করে এবং ইথিরিয়ামের নিরাপত্তা গ্যারান্টি থেকে উপকৃত হয় না। |
+| সাইডচেইনগুলো লেনদেন দক্ষতার সাথে প্রসেস করতে এবং ব্যবহারকারীদের জন্য ট্রানজেকশন ফি কমাতে ভিন্ন কনসেন্সাস মডেল ব্যবহার করে। | সাইডচেইনগুলোতে উচ্চতর আস্থার অনুমান প্রয়োজন (যেমন, ক্ষতিকারক সাইডচেইন ভ্যালিডেটরদের একটি কোরাম জালিয়াতি করতে পারে)। |
+| ইভিএম-সামঞ্জস্যপূর্ণ সাইডচেইনগুলো ডিএ্যাপস-কে তাদের ইকোসিস্টেম প্রসারিত করার অনুমতি দেয়। | |
### সাইডচেইন ব্যবহার করুন {#use-sidechains}
-একাধিক প্রকল্প সাইডচেইনের ইমপ্লিমেন্টেশন সরবরাহ করে যা আপনি আপনার ডিএ্যাপস-এ ইন্টিগ্রেট করতে পারেন:
+একাধিক প্রজেক্ট সাইডচেইনের ইমপ্লিমেন্টেশন প্রদান করে যা আপনি আপনার ডিএ্যাপস-এ ইন্টিগ্রেট করতে পারেন:
- [Polygon PoS](https://polygon.technology/solutions/polygon-pos)
- [Skale](https://skale.network/)
@@ -66,8 +66,8 @@ sidebarDepth: 3
- [Loom Network](https://loomx.io/)
- [Metis Andromeda](https://www.metis.io/)
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [সাইডচেইনের মাধ্যমে ইথেরিয়াম ডিএ্যাপস স্কেলিং](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _৮ ফেব্রুয়ারি, ২০১৮ - Georgios Konstantopoulos_
+- [Scaling Ethereum dapps through Sidechains](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _ফেব্রুয়ারি 8, 2018 - জর্জিওস কনস্ট্যান্টোপোলোস_
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/scaling/state-channels/index.md b/public/content/translations/bn/developers/docs/scaling/state-channels/index.md
index 2baf906be61..7e941d8b1c1 100644
--- a/public/content/translations/bn/developers/docs/scaling/state-channels/index.md
+++ b/public/content/translations/bn/developers/docs/scaling/state-channels/index.md
@@ -1,247 +1,247 @@
---
-title: "স্টেট চ্যানেল"
-description: "স্টেট চ্যানেল এবং পেমেন্ট চ্যানেলগুলির একটি পরিচিতি, যা বর্তমানে ইথেরিয়াম কমিউনিটি দ্বারা একটি স্কেলিং সমাধান হিসাবে ব্যবহৃত হয়।"
+title: স্টেট চ্যানেল
+description: ইথিরিয়াম কমিউনিটি দ্বারা বর্তমানে ব্যবহৃত একটি স্কেলিং সমাধান হিসেবে স্টেট চ্যানেল এবং পেমেন্ট চ্যানেলের পরিচিতি।
lang: bn
sidebarDepth: 3
---
-স্টেট চ্যানেলগুলি অংশগ্রহণকারীদের ইথেরিয়াম মেইননেটের সাথে ন্যূনতম মিথস্ক্রিয়া রেখে অফচেইনে নিরাপদে লেনদেন করার অনুমতি দেয়। চ্যানেলের পিয়াররা চ্যানেলটি খুলতে এবং বন্ধ করতে শুধুমাত্র দুটি অনচেইন লেনদেন জমা দেওয়ার সময় যেকোনো সংখ্যক অফচেইন লেনদেন পরিচালনা করতে পারে। এটি অত্যন্ত উচ্চ লেনদেন থ্রুপুট করার সুযোগ দেয় এবং ব্যবহারকারীদের জন্য কম খরচের কারণ হয়।
+স্টেট চ্যানেল অংশগ্রহণকারীদের নিরাপদে অফচেইন লেনদেন করার সুযোগ দেয়, যেখানে [Ethereum](/) মেইননেট-এর সাথে ইন্টারঅ্যাকশন ন্যূনতম রাখা হয়। চ্যানেল পিয়াররা অফচেইনে ইচ্ছামতো সংখ্যক লেনদেন পরিচালনা করতে পারে এবং চ্যানেলটি খুলতে ও বন্ধ করতে শুধুমাত্র দুটি অনচেইন লেনদেন সাবমিট করতে হয়। এটি অত্যন্ত উচ্চ লেনদেন থ্রুপুট প্রদান করে এবং ব্যবহারকারীদের জন্য খরচ কমায়।
## পূর্বশর্ত {#prerequisites}
-আপনার [ইথেরিয়াম স্কেলিং](/developers/docs/scaling/) এবং [লেয়ার 2](/layer-2/) সম্পর্কিত আমাদের পেজগুলি পড়া এবং বোঝা উচিত।
+আপনার আমাদের [ইথিরিয়াম স্কেলিং](/developers/docs/scaling/) এবং [লেয়ার ২](/layer-2/) পেজগুলো পড়া এবং বোঝা উচিত।
-## চ্যানেল কি? {#what-are-channels}
+## চ্যানেল কী? {#what-are-channels}
-পাবলিক ব্লকচেইন, যেমন ইথেরিয়াম, তাদের ডিস্ট্রিবিউটেড আর্কিটেকচারের কারণে স্কেলেবিলিটি চ্যালেঞ্জের সম্মুখীন হয়: অনচেইন লেনদেন অবশ্যই সমস্ত নোড দ্বারা কার্যকর করতে হবে। নোডগুলিকে সাধারণ হার্ডওয়্যার ব্যবহার করে একটি ব্লকের লেনদেনের পরিমাণ সামলাতে সক্ষম হতে হয়, যা নেটওয়ার্ককে ডিসেন্ট্রালাইজড রাখার জন্য লেনদেনের থ্রুপুটের উপর একটি সীমা আরোপ করে। ব্লকচেইন চ্যানেলগুলি ব্যবহারকারীদের অফচেইনে ইন্টারঅ্যাক্ট করার অনুমতি দিয়ে এই সমস্যার সমাধান করে এবং চূড়ান্ত নিষ্পত্তির জন্য মূল চেইনের নিরাপত্তার উপর নির্ভর করে।
+পাবলিক ব্লকচেইন, যেমন ইথিরিয়াম, তাদের ডিস্ট্রিবিউটেড আর্কিটেকচারের কারণে স্কেলেবিলিটি চ্যালেঞ্জের সম্মুখীন হয়: অনচেইন লেনদেন অবশ্যই সমস্ত নোড দ্বারা এক্সিকিউট হতে হবে। নেটওয়ার্ক ডিসেন্ট্রালাইজড রাখার জন্য লেনদেন থ্রুপুটের উপর একটি সীমা আরোপ করে, সাধারণ হার্ডওয়্যার ব্যবহার করে নোডগুলোকে একটি ব্লকের লেনদেনের পরিমাণ পরিচালনা করতে সক্ষম হতে হয়। ব্লকচেইন চ্যানেলগুলো ব্যবহারকারীদের অফচেইনে ইন্টারঅ্যাক্ট করার সুযোগ দিয়ে এই সমস্যার সমাধান করে, যেখানে চূড়ান্ত নিষ্পত্তির জন্য মূল চেইনের নিরাপত্তার উপর নির্ভর করা হয়।
-চ্যানেলগুলি হল সাধারণ পিয়ার-টু-পিয়ার প্রোটোকল যা দুটি পক্ষকে নিজেদের মধ্যে অনেক লেনদেন করতে দেয় এবং তারপর শুধুমাত্র চূড়ান্ত ফলাফল ব্লকচেইনে পোস্ট করতে হয়। চ্যানেলটি ক্রিপ্টোগ্রাফি ব্যবহার করে প্রমাণ করে যে তাদের দ্বারা তৈরি করা সারাংশ ডেটা সত্যিই মধ্যবর্তী লেনদেনের একটি বৈধ সেটের ফলাফল। একটি ["মাল্টিসিগ"](/developers/docs/smart-contracts/#multisig) স্মার্ট কন্ট্র্যাক্ট নিশ্চিত করে যে লেনদেনগুলি সঠিক পক্ষ দ্বারা স্বাক্ষরিত হয়।
+চ্যানেল হলো সাধারণ পিয়ার-টু-পিয়ার প্রটোকল যা দুটি পক্ষকে নিজেদের মধ্যে অনেক লেনদেন করার সুযোগ দেয় এবং তারপর শুধুমাত্র চূড়ান্ত ফলাফল ব্লকচেইনে পোস্ট করে। চ্যানেলটি ক্রিপ্টোগ্রাফি ব্যবহার করে প্রমাণ করে যে তাদের তৈরি করা সারসংক্ষেপ ডেটা সত্যিই বৈধ মধ্যবর্তী লেনদেনের একটি সেটের ফলাফল। একটি ["মাল্টিসিগ"](/developers/docs/smart-contracts/#multisig) স্মার্ট কন্ট্রাক্ট নিশ্চিত করে যে লেনদেনগুলো সঠিক পক্ষ দ্বারা স্বাক্ষরিত হয়েছে।
-চ্যানেলগুলির সাহায্যে, আগ্রহী পক্ষগুলির দ্বারা স্টেট পরিবর্তনগুলি কার্যকর এবং বৈধ করা হয়, যা ইথেরিয়ামের এক্সিকিউশন লেয়ারে গণনা কমিয়ে দেয়। এটি ইথেরিয়ামের উপর কনজেশন হ্রাস করে এবং ব্যবহারকারীদের জন্য লেনদেন প্রক্রিয়াকরণের গতি বৃদ্ধি করে।
+চ্যানেলগুলোর মাধ্যমে, স্টেট পরিবর্তনগুলো আগ্রহী পক্ষগুলোর দ্বারা এক্সিকিউট এবং যাচাই করা হয়, যা ইথিরিয়ামের এক্সিকিউশন লেয়ার-এ কম্পিউটেশন কমিয়ে দেয়। এটি ইথিরিয়ামে কনজেশন কমায় এবং ব্যবহারকারীদের জন্য লেনদেন প্রক্রিয়াকরণের গতিও বাড়ায়।
-প্রতিটি চ্যানেল ইথেরিয়ামে চালিত একটি [মাল্টিসিগ স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/#multisig) দ্বারা পরিচালিত হয়। একটি চ্যানেল খুলতে, অংশগ্রহণকারীরা চ্যানেল কন্ট্র্যাক্টটি অনচেইনে ডেপ্লয় করে এবং এতে অর্থ জমা করে। উভয় পক্ষ চ্যানেলের স্টেট শুরু করার জন্য সম্মিলিতভাবে একটি স্টেট আপডেটে স্বাক্ষর করে, যার পরে তারা দ্রুত এবং অবাধে অফচেইনে লেনদেন করতে পারে।
+প্রতিটি চ্যানেল ইথিরিয়ামে চলা একটি [মাল্টিসিগ স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/#multisig) দ্বারা পরিচালিত হয়। একটি চ্যানেল খুলতে, অংশগ্রহণকারীরা চ্যানেল কন্ট্রাক্টটি অনচেইনে ডিপ্লয় করে এবং এতে ফান্ড জমা করে। উভয় পক্ষ সম্মিলিতভাবে চ্যানেলের স্টেট ইনিশিয়ালাইজ করার জন্য একটি স্টেট আপডেটে স্বাক্ষর করে, যার পরে তারা দ্রুত এবং স্বাধীনভাবে অফচেইনে লেনদেন করতে পারে।
-চ্যানেলটি বন্ধ করার জন্য, অংশগ্রহণকারীরা চ্যানেলের সর্বশেষ সম্মত স্টেট অনচেইনে জমা দেয়। এরপরে, স্মার্ট কন্ট্র্যাক্টটি চ্যানেলের চূড়ান্ত স্টেটে প্রতিটি অংশগ্রহণকারীর ব্যালেন্স অনুযায়ী লক করা তহবিল বিতরণ করে।
+চ্যানেলটি বন্ধ করতে, অংশগ্রহণকারীরা চ্যানেলের সর্বশেষ সম্মত স্টেট অনচেইনে সাবমিট করে। এরপর, স্মার্ট কন্ট্রাক্ট চ্যানেলের চূড়ান্ত স্টেটে প্রতিটি অংশগ্রহণকারীর ব্যালেন্স অনুযায়ী লক করা ফান্ড বিতরণ করে।
-পিয়ার-টু-পিয়ার চ্যানেলগুলি এমন পরিস্থিতিতে বিশেষভাবে উপযোগী যেখানে কিছু পূর্বনির্ধারিত অংশগ্রহণকারী দৃশ্যমান ওভারহেড ছাড়াই উচ্চ ফ্রিকোয়েন্সিতে লেনদেন করতে চায়। ব্লকচেইন চ্যানেলগুলি দুটি বিভাগে বিভক্ত: **পেমেন্ট চ্যানেল** এবং **স্টেট চ্যানেল**।
+পিয়ার-টু-পিয়ার চ্যানেলগুলো বিশেষ করে এমন পরিস্থিতির জন্য উপযোগী যেখানে কিছু পূর্বনির্ধারিত অংশগ্রহণকারী দৃশ্যমান ওভারহেড ছাড়াই উচ্চ ফ্রিকোয়েন্সিতে লেনদেন করতে চায়। ব্লকচেইন চ্যানেল দুটি ক্যাটাগরিতে পড়ে: **পেমেন্ট চ্যানেল** এবং **স্টেট চ্যানেল**।
## পেমেন্ট চ্যানেল {#payment-channels}
-একটি পেমেন্ট চ্যানেলকে দুইজন ব্যবহারকারী দ্বারা সম্মিলিতভাবে রক্ষণাবেক্ষণ করা একটি "দ্বিমুখী লেজার" হিসাবে সবচেয়ে ভালোভাবে বর্ণনা করা হয়। লেজারের প্রাথমিক ব্যালেন্স হল চ্যানেল খোলার পর্যায়ে অনচেইন চুক্তিতে লক করা জমার যোগফল। পেমেন্ট চ্যানেল ট্রান্সফার তাৎক্ষণিকভাবে এবং প্রকৃত ব্লকচেইনের সম্পৃক্ততা ছাড়াই করা যেতে পারে, শুধুমাত্র একটি প্রাথমিক এককালীন অনচেইন তৈরি এবং চ্যানেলের চূড়ান্ত বন্ধ করা ছাড়া।
+একটি পেমেন্ট চ্যানেলকে সবচেয়ে ভালোভাবে বর্ণনা করা যায় একটি "টু-ওয়ে লেজার" হিসেবে যা যৌথভাবে দুজন ব্যবহারকারী দ্বারা পরিচালিত হয়। লেজার-এর প্রাথমিক ব্যালেন্স হলো চ্যানেল খোলার পর্যায়ে অনচেইন কন্ট্রাক্টে লক করা জমার যোগফল। পেমেন্ট চ্যানেল ট্রান্সফারগুলো তাৎক্ষণিকভাবে এবং প্রকৃত ব্লকচেইনের সম্পৃক্ততা ছাড়াই সম্পন্ন করা যেতে পারে, শুধুমাত্র প্রাথমিক এককালীন অনচেইন তৈরি এবং শেষ পর্যন্ত চ্যানেল বন্ধ করা ছাড়া।
-লেজারের ব্যালেন্সের আপডেটগুলির (যেমন, পেমেন্ট চ্যানেলের স্টেট) জন্য চ্যানেলের সকল পক্ষের অনুমোদন প্রয়োজন। চ্যানেলের সকল অংশগ্রহণকারীর দ্বারা স্বাক্ষরিত একটি চ্যানেল আপডেটকে চূড়ান্ত বলে মনে করা হয়, অনেকটা ইথেরিয়ামের একটি লেনদেনের মতো।
+লেজার-এর ব্যালেন্স (অর্থাৎ, পেমেন্ট চ্যানেলের স্টেট) আপডেট করার জন্য চ্যানেলের সকল পক্ষের অনুমোদন প্রয়োজন। চ্যানেলের সকল অংশগ্রহণকারী দ্বারা স্বাক্ষরিত একটি চ্যানেল আপডেট চূড়ান্ত বলে বিবেচিত হয়, অনেকটা ইথিরিয়ামের একটি লেনদেনের মতো।
-পেমেন্ট চ্যানেলগুলি ছিল প্রাচীনতম স্কেলিং সমাধানগুলির মধ্যে একটি যা সাধারণ ব্যবহারকারীর মিথস্ক্রিয়া (যেমন, ETH স্থানান্তর, অ্যাটমিক সোয়াপ, মাইক্রোপেমেন্ট) এর ব্যয়বহুল অনচেইন কার্যকলাপ কমানোর জন্য ডিজাইন করা হয়েছিল। চ্যানেলের অংশগ্রহণকারীরা নিজেদের মধ্যে সীমাহীন পরিমাণে তাত্ক্ষণিক, ফি-বিহীন লেনদেন পরিচালনা করতে পারে যতক্ষণ না তাদের স্থানান্তরের মোট যোগফল জমাকৃত টোকেনকে অতিক্রম করে।
+পেমেন্ট চ্যানেলগুলো ছিল প্রাথমিক স্কেলিং সমাধানগুলোর মধ্যে একটি যা সাধারণ ব্যবহারকারীর ইন্টারঅ্যাকশনের (যেমন, ETH ট্রান্সফার, অ্যাটমিক সোয়াপ, মাইক্রোপেমেন্ট) ব্যয়বহুল অনচেইন কার্যকলাপ কমানোর জন্য ডিজাইন করা হয়েছিল। চ্যানেল অংশগ্রহণকারীরা একে অপরের মধ্যে সীমাহীন পরিমাণ তাৎক্ষণিক, ফি-মুক্ত লেনদেন পরিচালনা করতে পারে যতক্ষণ না তাদের ট্রান্সফারের নিট যোগফল জমা করা টোকেন-এর চেয়ে বেশি হয়।
## স্টেট চ্যানেল {#state-channels}
-অফচেইন পেমেন্ট সমর্থন করা ছাড়া, পেমেন্ট চ্যানেলগুলি সাধারণ স্টেট ট্রানজিশন লজিক পরিচালনার জন্য উপযোগী প্রমাণিত হয়নি। স্টেট চ্যানেলগুলি এই সমস্যার সমাধান করতে এবং সাধারণ-উদ্দেশ্য গণনার স্কেলিংয়ের জন্য চ্যানেলগুলিকে উপযোগী করতে তৈরি করা হয়েছিল।
+অফচেইন পেমেন্ট সমর্থন করা ছাড়াও, পেমেন্ট চ্যানেলগুলো সাধারণ স্টেট ট্রানজিশন লজিক পরিচালনার জন্য কার্যকর প্রমাণিত হয়নি। এই সমস্যার সমাধান করতে এবং সাধারণ-উদ্দেশ্যের কম্পিউটেশন স্কেলিং-এর জন্য চ্যানেলগুলোকে উপযোগী করতে স্টেট চ্যানেল তৈরি করা হয়েছিল।
-স্টেট চ্যানেলগুলির সাথে এখনও পেমেন্ট চ্যানেলগুলির অনেক মিল রয়েছে। উদাহরণস্বরূপ, ব্যবহারকারীরা ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত বার্তা (লেনদেন) আদান-প্রদান করে ইন্টারঅ্যাক্ট করে, যা অন্য চ্যানেল অংশগ্রহণকারীদেরও স্বাক্ষর করতে হয়। যদি একটি প্রস্তাবিত স্টেট আপডেট সকল অংশগ্রহণকারীর দ্বারা স্বাক্ষরিত না হয়, তবে এটি অবৈধ বলে বিবেচিত হয়।
+স্টেট চ্যানেলগুলোর সাথে পেমেন্ট চ্যানেলগুলোর এখনও অনেক মিল রয়েছে। উদাহরণস্বরূপ, ব্যবহারকারীরা ক্রিপ্টোগ্রাফিক্যালি স্বাক্ষরিত মেসেজ (লেনদেন) আদান-প্রদানের মাধ্যমে ইন্টারঅ্যাক্ট করে, যা অন্যান্য চ্যানেল অংশগ্রহণকারীদেরও স্বাক্ষর করতে হবে। যদি একটি প্রস্তাবিত স্টেট আপডেট সকল অংশগ্রহণকারী দ্বারা স্বাক্ষরিত না হয়, তবে এটি অবৈধ বলে বিবেচিত হয়।
-যাইহোক, ব্যবহারকারীর ব্যালেন্স ধারণ করার পাশাপাশি, চ্যানেলটি চুক্তির স্টোরেজের বর্তমান স্টেটও ট্র্যাক করে (যেমন, চুক্তির ভেরিয়েবলের মান)।
+যাইহোক, ব্যবহারকারীর ব্যালেন্স ধরে রাখার পাশাপাশি, চ্যানেলটি কন্ট্রাক্টের স্টোরেজের বর্তমান স্টেট-ও ট্র্যাক করে (অর্থাৎ, কন্ট্রাক্ট ভেরিয়েবলগুলোর মান)।
-এটি দুইজন ব্যবহারকারীর মধ্যে অফচেইনে একটি স্মার্ট কন্ট্র্যাক্ট চালানো সম্ভব করে। এই পরিস্থিতিতে, স্মার্ট কন্ট্র্যাক্টের অভ্যন্তরীণ স্টেটের আপডেটগুলির জন্য শুধুমাত্র সেই পিয়ারদের অনুমোদন প্রয়োজন যারা চ্যানেলটি তৈরি করেছে।
+এটি দুজন ব্যবহারকারীর মধ্যে অফচেইনে একটি স্মার্ট কন্ট্রাক্ট এক্সিকিউট করা সম্ভব করে তোলে। এই পরিস্থিতিতে, স্মার্ট কন্ট্রাক্ট-এর অভ্যন্তরীণ স্টেট আপডেটের জন্য শুধুমাত্র চ্যানেল তৈরি করা পিয়ারদের অনুমোদন প্রয়োজন।
-যদিও এটি পূর্বে বর্ণিত স্কেলেবিলিটি সমস্যার সমাধান করে, তবে এর নিরাপত্তার উপর প্রভাব রয়েছে। ইথেরিয়ামে, স্টেট ট্রানজিশনের বৈধতা নেটওয়ার্কের কনসেন্সাস প্রোটোকল দ্বারা প্রয়োগ করা হয়। এটি একটি স্মার্ট কন্ট্র্যাক্টের স্টেটে একটি অবৈধ আপডেট প্রস্তাব করা বা স্মার্ট কন্ট্র্যাক্ট এক্সিকিউশন পরিবর্তন করা অসম্ভব করে তোলে।
+যদিও এটি পূর্বে বর্ণিত স্কেলেবিলিটি সমস্যার সমাধান করে, এর নিরাপত্তার জন্য কিছু প্রভাব রয়েছে। ইথিরিয়ামে, স্টেট ট্রানজিশনের বৈধতা নেটওয়ার্ক-এর কনসেন্সাস প্রটোকল দ্বারা প্রয়োগ করা হয়। এটি একটি স্মার্ট কন্ট্রাক্ট-এর স্টেটে একটি অবৈধ আপডেট প্রস্তাব করা বা স্মার্ট কন্ট্রাক্ট এক্সিকিউশন পরিবর্তন করা অসম্ভব করে তোলে।
-স্টেট চ্যানেলগুলির একই নিরাপত্তা গ্যারান্টি নেই। কিছু পরিমাণে, একটি স্টেট চ্যানেল হল মেইননেটের একটি ক্ষুদ্র সংস্করণ। নিয়ম প্রয়োগকারী অংশগ্রহণকারীদের একটি সীমিত সেটের সাথে, দূষিত আচরণের (যেমন, অবৈধ স্টেট আপডেটের প্রস্তাব) সম্ভাবনা বৃদ্ধি পায়। স্টেট চ্যানেলগুলি [ফ্রড প্রুফ](/glossary/#fraud-proof) ভিত্তিক একটি বিরোধ সালিশি সিস্টেম থেকে তাদের নিরাপত্তা অর্জন করে।
+স্টেট চ্যানেলগুলোর একই নিরাপত্তা গ্যারান্টি নেই। কিছুটা হলেও, একটি স্টেট চ্যানেল হলো মেইননেট-এর একটি ক্ষুদ্র সংস্করণ। নিয়ম প্রয়োগকারী সীমিত সংখ্যক অংশগ্রহণকারীর সাথে, ক্ষতিকারক আচরণের (যেমন, অবৈধ স্টেট আপডেটের প্রস্তাব দেওয়া) সম্ভাবনা বেড়ে যায়। স্টেট চ্যানেলগুলো [ফ্রড প্রুফ](/glossary/#fraud-proof)-এর উপর ভিত্তি করে একটি বিরোধ নিষ্পত্তি সিস্টেম থেকে তাদের নিরাপত্তা লাভ করে।
-## স্টেট চ্যানেলগুলি কীভাবে কাজ করে {#how-state-channels-work}
+## স্টেট চ্যানেল কীভাবে কাজ করে {#how-state-channels-work}
-মূলত, একটি স্টেট চ্যানেলের কার্যকলাপ হল ব্যবহারকারী এবং একটি ব্লকচেইন সিস্টেমের সাথে জড়িত মিথস্ক্রিয়ার একটি সেশন। ব্যবহারকারীরা বেশিরভাগই একে অপরের সাথে অফচেইনে যোগাযোগ করে এবং শুধুমাত্র অন্তর্নিহিত ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করে চ্যানেল খুলতে, চ্যানেল বন্ধ করতে বা অংশগ্রহণকারীদের মধ্যে সম্ভাব্য বিরোধ নিষ্পত্তি করতে।
+মূলত, একটি স্টেট চ্যানেলের কার্যকলাপ হলো ব্যবহারকারী এবং একটি ব্লকচেইন সিস্টেমের সাথে জড়িত ইন্টারঅ্যাকশনের একটি সেশন। ব্যবহারকারীরা বেশিরভাগই একে অপরের সাথে অফচেইনে যোগাযোগ করে এবং শুধুমাত্র চ্যানেল খুলতে, চ্যানেল বন্ধ করতে বা অংশগ্রহণকারীদের মধ্যে সম্ভাব্য বিরোধ নিষ্পত্তি করতে অন্তর্নিহিত ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করে।
-নিম্নলিখিত বিভাগটি একটি স্টেট চ্যানেলের মৌলিক কর্মপ্রবাহের রূপরেখা দেয়:
+নিচের অংশে একটি স্টেট চ্যানেলের প্রাথমিক ওয়ার্কফ্লো তুলে ধরা হলো:
### চ্যানেল খোলা {#opening-the-channel}
-একটি চ্যানেল খোলার জন্য অংশগ্রহণকারীদের মেইননেটে একটি স্মার্ট কন্ট্র্যাক্টে তহবিল প্রতিশ্রুতিবদ্ধ করতে হবে। এই ডিপোজিট একটি ভার্চুয়াল ট্যাব হিসাবেও কাজ করে, তাই অংশগ্রহণকারী অভিনেতারা অবিলম্বে পেমেন্ট নিষ্পত্তি করার প্রয়োজন ছাড়াই অবাধে লেনদেন করতে পারে। শুধুমাত্র যখন চ্যানেলটি অনচেইনে চূড়ান্ত করা হয়, তখনই দলগুলি একে অপরের সাথে নিষ্পত্তি করে এবং তাদের ট্যাব থেকে যা অবশিষ্ট থাকে তা তুলে নেয়।
+একটি চ্যানেল খোলার জন্য অংশগ্রহণকারীদের মেইননেট-এ একটি স্মার্ট কন্ট্রাক্ট-এ ফান্ড জমা করতে হয়। এই জমা একটি ভার্চুয়াল ট্যাব হিসেবেও কাজ করে, তাই অংশগ্রহণকারী অ্যাক্টররা তাৎক্ষণিকভাবে পেমেন্ট নিষ্পত্তি করার প্রয়োজন ছাড়াই স্বাধীনভাবে লেনদেন করতে পারে। শুধুমাত্র যখন চ্যানেলটি অনচেইনে চূড়ান্ত হয় তখনই পক্ষগুলো একে অপরের সাথে নিষ্পত্তি করে এবং তাদের ট্যাবের অবশিষ্ট অংশ তুলে নেয়।
-এই ডিপোজিট প্রতিটি অংশগ্রহণকারীর কাছ থেকে সৎ আচরণের গ্যারান্টি দেওয়ার জন্য একটি বন্ড হিসাবেও কাজ করে। বিরোধ নিষ্পত্তি পর্যায়ে আমানতকারীরা দূষিত কাজের জন্য দোষী সাব্যস্ত হলে, চুক্তি তাদের আমানত স্ল্যাশ করে।
+এই জমা প্রতিটি অংশগ্রহণকারীর সৎ আচরণের গ্যারান্টি দেওয়ার জন্য একটি বন্ড হিসেবেও কাজ করে। যদি বিরোধ নিষ্পত্তির পর্যায়ে আমানতকারীরা ক্ষতিকারক কাজের জন্য দোষী সাব্যস্ত হয়, তবে কন্ট্রাক্ট তাদের জমা স্ল্যাশ করে।
-চ্যানেল পিয়ারদের অবশ্যই একটি প্রাথমিক স্টেটে স্বাক্ষর করতে হবে, যার সাথে তারা সবাই একমত। এটি স্টেট চ্যানেলের জেনেসিস হিসাবে কাজ করে, যার পরে ব্যবহারকারীরা লেনদেন শুরু করতে পারে।
+চ্যানেল পিয়ারদের অবশ্যই একটি প্রাথমিক স্টেটে স্বাক্ষর করতে হবে, যেটিতে তারা সবাই সম্মত হয়। এটি স্টেট চ্যানেলের জেনেসিস হিসেবে কাজ করে, যার পরে ব্যবহারকারীরা লেনদেন শুরু করতে পারে।
### চ্যানেল ব্যবহার করা {#using-the-channel}
-চ্যানেলের স্টেট শুরু করার পরে, পিয়াররা লেনদেনে স্বাক্ষর করে এবং অনুমোদনের জন্য একে অপরের কাছে পাঠিয়ে ইন্টারঅ্যাক্ট করে। অংশগ্রহণকারীরা এই লেনদেনগুলির সাথে স্টেট আপডেট শুরু করে এবং অন্যদের থেকে স্টেট আপডেটগুলিতে স্বাক্ষর করে। প্রতিটি লেনদেন নিম্নলিখিতগুলি নিয়ে গঠিত:
+চ্যানেলের স্টেট ইনিশিয়ালাইজ করার পর, পিয়াররা লেনদেনে স্বাক্ষর করে এবং অনুমোদনের জন্য একে অপরের কাছে পাঠিয়ে ইন্টারঅ্যাক্ট করে। অংশগ্রহণকারীরা এই লেনদেনগুলোর মাধ্যমে স্টেট আপডেট শুরু করে এবং অন্যদের থেকে স্টেট আপডেটে স্বাক্ষর করে। প্রতিটি লেনদেনে নিম্নলিখিত বিষয়গুলো থাকে:
-- একটি **নন্স**, যা লেনদেনের জন্য একটি অনন্য আইডি হিসাবে কাজ করে এবং রিপ্লে অ্যাটাক প্রতিরোধ করে। এটি স্টেট আপডেটগুলি কোন ক্রমে ঘটেছে তাও চিহ্নিত করে (যা বিরোধ নিষ্পত্তির জন্য গুরুত্বপূর্ণ)
+- একটি **নন্স**, যা লেনদেনের জন্য একটি ইউনিক আইডি হিসেবে কাজ করে এবং রিপ্লে অ্যাটাক প্রতিরোধ করে। এটি স্টেট আপডেটগুলো কোন ক্রমে ঘটেছে তাও শনাক্ত করে (যা বিরোধ নিষ্পত্তির জন্য গুরুত্বপূর্ণ)
-- চ্যানেলের পুরানো স্টেট
+- চ্যানেলের পুরোনো স্টেট
- চ্যানেলের নতুন স্টেট
-- যে লেনদেনটি স্টেট ট্রানজিশন ট্রিগার করে (যেমন, এলিস ববকে 5 ETH পাঠায়)
+- যে লেনদেনটি স্টেট ট্রানজিশন ট্রিগার করে (যেমন, অ্যালিস ববকে 5 ETH পাঠায়)
-চ্যানেলের স্টেট আপডেটগুলি অনচেইনে সম্প্রচার করা হয় না যেমনটি সাধারণত ব্যবহারকারীরা মেইননেটে ইন্টারঅ্যাক্ট করার সময় হয়, যা অনচেইন ফুটপ্রিন্ট কমানোর জন্য স্টেট চ্যানেলগুলির লক্ষ্যের সাথে সামঞ্জস্যপূর্ণ। যতক্ষণ পর্যন্ত অংশগ্রহণকারীরা স্টেট আপডেটের বিষয়ে একমত হয়, ততক্ষণ সেগুলি একটি ইথেরিয়াম লেনদেনের মতোই চূড়ান্ত। অংশগ্রহণকারীদের শুধুমাত্র মেইননেটের কনসেন্সাসের উপর নির্ভর করতে হবে যদি কোনো বিরোধ দেখা দেয়।
+চ্যানেলে স্টেট আপডেটগুলো অনচেইনে ব্রডকাস্ট করা হয় না যেমনটি সাধারণত মেইননেট-এ ব্যবহারকারীরা ইন্টারঅ্যাক্ট করার সময় ঘটে, যা অনচেইন ফুটপ্রিন্ট কমানোর জন্য স্টেট চ্যানেলগুলোর লক্ষ্যের সাথে সামঞ্জস্যপূর্ণ। যতক্ষণ অংশগ্রহণকারীরা স্টেট আপডেটে সম্মত হয়, সেগুলো ইথিরিয়াম লেনদেনের মতোই চূড়ান্ত। অংশগ্রহণকারীদের শুধুমাত্র মেইননেট-এর কনসেন্সাস-এর উপর নির্ভর করতে হবে যদি কোনো বিরোধ দেখা দেয়।
### চ্যানেল বন্ধ করা {#closing-the-channel}
-একটি স্টেট চ্যানেল বন্ধ করার জন্য চ্যানেলের চূড়ান্ত, সম্মত স্টেট অনচেইন স্মার্ট কন্ট্র্যাক্টে জমা দিতে হয়। স্টেট আপডেটে উল্লেখিত বিবরণগুলির মধ্যে প্রতিটি অংশগ্রহণকারীর চালের সংখ্যা এবং অনুমোদিত লেনদেনের একটি তালিকা অন্তর্ভুক্ত থাকে।
+একটি স্টেট চ্যানেল বন্ধ করার জন্য চ্যানেলের চূড়ান্ত, সম্মত স্টেট অনচেইন স্মার্ট কন্ট্রাক্ট-এ সাবমিট করতে হয়। স্টেট আপডেটে উল্লেখিত বিবরণের মধ্যে প্রতিটি অংশগ্রহণকারীর মুভের সংখ্যা এবং অনুমোদিত লেনদেনের একটি তালিকা অন্তর্ভুক্ত থাকে।
-স্টেট আপডেটটি বৈধ কিনা তা যাচাই করার পরে (অর্থাৎ, এটি সমস্ত পক্ষের দ্বারা স্বাক্ষরিত), স্মার্ট কন্ট্র্যাক্ট চ্যানেলটি চূড়ান্ত করে এবং চ্যানেলের ফলাফল অনুসারে লক করা তহবিল বিতরণ করে। অফচেইনে করা পেমেন্টগুলি ইথেরিয়ামের স্টেটে প্রয়োগ করা হয় এবং প্রতিটি অংশগ্রহণকারী লক করা তহবিলের তাদের অবশিষ্ট অংশ গ্রহণ করে।
+স্টেট আপডেটটি বৈধ কিনা তা যাচাই করার পর (অর্থাৎ, এটি সকল পক্ষের দ্বারা স্বাক্ষরিত) স্মার্ট কন্ট্রাক্ট চ্যানেলটিকে চূড়ান্ত করে এবং চ্যানেলের ফলাফল অনুযায়ী লক করা ফান্ড বিতরণ করে। অফচেইনে করা পেমেন্টগুলো ইথিরিয়ামের স্টেটে প্রয়োগ করা হয় এবং প্রতিটি অংশগ্রহণকারী লক করা ফান্ডের তাদের অবশিষ্ট অংশ পায়।
-উপরে বর্ণিত দৃশ্যটি সুখী ক্ষেত্রে যা ঘটে তা উপস্থাপন করে। কখনও কখনও, ব্যবহারকারীরা একটি চুক্তিতে পৌঁছাতে এবং চ্যানেলটি চূড়ান্ত করতে অক্ষম হতে পারে (দুঃখজনক ঘটনা)। পরিস্থিতি সম্পর্কে নিম্নলিখিতগুলির যেকোনো একটি সত্য হতে পারে:
+উপরে বর্ণিত দৃশ্যপটটি একটি স্বাভাবিক বা হ্যাপি কেসে কী ঘটে তা উপস্থাপন করে। কখনও কখনও, ব্যবহারকারীরা একটি চুক্তিতে পৌঁছাতে এবং চ্যানেলটি চূড়ান্ত করতে অক্ষম হতে পারে (স্যাড কেস)। পরিস্থিতির ক্ষেত্রে নিচের যেকোনোটি সত্য হতে পারে:
-- অংশগ্রহণকারীরা অফলাইনে চলে যায় এবং স্টেট ট্রানজিশনের প্রস্তাব দিতে ব্যর্থ হয়
+- অংশগ্রহণকারীরা অফলাইনে চলে যায় এবং স্টেট ট্রানজিশন প্রস্তাব করতে ব্যর্থ হয়
-- অংশগ্রহণকারীরা বৈধ স্টেট আপডেটগুলিতে সহ-স্বাক্ষর করতে অস্বীকার করে
+- অংশগ্রহণকারীরা বৈধ স্টেট আপডেটে সহ-স্বাক্ষর করতে অস্বীকার করে
-- অংশগ্রহণকারীরা অনচেইন চুক্তিতে একটি পুরানো স্টেট আপডেট প্রস্তাব করে চ্যানেলটি চূড়ান্ত করার চেষ্টা করে
+- অংশগ্রহণকারীরা অনচেইন কন্ট্রাক্টে একটি পুরোনো স্টেট আপডেটের প্রস্তাব দিয়ে চ্যানেলটি চূড়ান্ত করার চেষ্টা করে
-- অংশগ্রহণকারীরা অন্যদের স্বাক্ষর করার জন্য অবৈধ স্টেট ট্রানজিশনের প্রস্তাব দেয়
+- অংশগ্রহণকারীরা অন্যদের স্বাক্ষর করার জন্য অবৈধ স্টেট ট্রানজিশনের প্রস্তাব দেয়
-যখনই একটি চ্যানেলে অংশগ্রহণকারী অভিনেতাদের মধ্যে কনসেন্সাস ভেঙে যায়, তখন শেষ বিকল্পটি হল চ্যানেলের চূড়ান্ত, বৈধ স্টেট প্রয়োগ করার জন্য মেইননেটের কনসেন্সাসের উপর নির্ভর করা। এই ক্ষেত্রে, স্টেট চ্যানেল বন্ধ করার জন্য অনচেইনে বিরোধ নিষ্পত্তি করতে হবে।
+যখনই একটি চ্যানেলে অংশগ্রহণকারী অ্যাক্টরদের মধ্যে কনসেন্সাস ভেঙে যায়, তখন শেষ বিকল্প হলো চ্যানেলের চূড়ান্ত, বৈধ স্টেট প্রয়োগ করার জন্য মেইননেট-এর কনসেন্সাস-এর উপর নির্ভর করা। এই ক্ষেত্রে, স্টেট চ্যানেল বন্ধ করার জন্য অনচেইনে বিরোধ নিষ্পত্তি করা প্রয়োজন।
-### বিরোধ নিষ্পত্তি করা {#settling-disputes}
+### বিরোধ নিষ্পত্তি {#settling-disputes}
-সাধারণত, একটি চ্যানেলের পক্ষগুলি আগে থেকেই চ্যানেলটি বন্ধ করার বিষয়ে একমত হয় এবং শেষ স্টেট ট্রানজিশনে সহ-স্বাক্ষর করে, যা তারা স্মার্ট কন্ট্র্যাক্টে জমা দেয়। একবার আপডেটটি অনচেইনে অনুমোদিত হলে, অফচেইন স্মার্ট কন্ট্র্যাক্টের সম্পাদন শেষ হয় এবং অংশগ্রহণকারীরা তাদের অর্থ নিয়ে চ্যানেল থেকে বেরিয়ে যায়।
+সাধারণত, একটি চ্যানেলের পক্ষগুলো আগে থেকেই চ্যানেল বন্ধ করতে সম্মত হয় এবং শেষ স্টেট ট্রানজিশনে সহ-স্বাক্ষর করে, যা তারা স্মার্ট কন্ট্রাক্ট-এ সাবমিট করে। একবার আপডেটটি অনচেইনে অনুমোদিত হলে, অফচেইন স্মার্ট কন্ট্রাক্ট-এর এক্সিকিউশন শেষ হয় এবং অংশগ্রহণকারীরা তাদের অর্থ নিয়ে চ্যানেল থেকে বেরিয়ে যায়।
-যাইহোক, একটি পক্ষ তাদের প্রতিপক্ষের অনুমোদনের জন্য অপেক্ষা না করেই স্মার্ট কন্ট্র্যাক্টের এক্সিকিউশন শেষ করতে এবং চ্যানেলটি চূড়ান্ত করার জন্য একটি অনচেইন অনুরোধ জমা দিতে পারে। যদি পূর্বে বর্ণিত কোনো কনসেন্সাস-ভঙ্গকারী পরিস্থিতি ঘটে, তবে যেকোনো পক্ষ চ্যানেলটি বন্ধ করতে এবং তহবিল বিতরণের জন্য অনচেইন চুক্তিটি ট্রিগার করতে পারে। এটি **ট্রাস্টলেসনেস** প্রদান করে, যা নিশ্চিত করে যে সৎ দলগুলি অন্য পক্ষের ক্রিয়াকলাপ নির্বিশেষে যেকোনো সময়ে তাদের আমানত থেকে বেরিয়ে যেতে পারে।
+যাইহোক, এক পক্ষ তাদের প্রতিপক্ষের অনুমোদনের জন্য অপেক্ষা না করেই স্মার্ট কন্ট্রাক্ট-এর এক্সিকিউশন শেষ করতে এবং চ্যানেলটি চূড়ান্ত করতে একটি অনচেইন অনুরোধ সাবমিট করতে পারে। যদি পূর্বে বর্ণিত কনসেন্সাস-ভঙ্গকারী পরিস্থিতিগুলোর কোনোটি ঘটে, তবে যেকোনো পক্ষ চ্যানেল বন্ধ করতে এবং ফান্ড বিতরণ করতে অনচেইন কন্ট্রাক্ট ট্রিগার করতে পারে। এটি **ট্রাস্টলেসনেস** প্রদান করে, যা নিশ্চিত করে যে সৎ পক্ষগুলো অন্য পক্ষের কাজ নির্বিশেষে যেকোনো সময় তাদের জমা নিয়ে বেরিয়ে যেতে পারে।
-চ্যানেল থেকে প্রস্থান প্রক্রিয়া করার জন্য, ব্যবহারকারীকে এপ্লিকেশনের সর্বশেষ বৈধ স্টেট আপডেটটি অনচেইন চুক্তিতে জমা দিতে হবে। যদি এটি যাচাই হয় (অর্থাৎ, এতে সমস্ত পক্ষের স্বাক্ষর থাকে), তাহলে তহবিল তাদের পক্ষে পুনরায় বিতরণ করা হয়।
+চ্যানেল এক্সিট প্রক্রিয়া করার জন্য, ব্যবহারকারীকে অবশ্যই অ্যাপ্লিকেশনের সর্বশেষ বৈধ স্টেট আপডেট অনচেইন কন্ট্রাক্টে সাবমিট করতে হবে। যদি এটি যাচাই করা হয় (অর্থাৎ, এটি সকল পক্ষের স্বাক্ষর বহন করে), তবে ফান্ড তাদের অনুকূলে পুনরায় বিতরণ করা হয়।
-তবে, একক-ব্যবহারকারী প্রস্থান অনুরোধ কার্যকর করতে একটি বিলম্ব আছে। যদি চ্যানেলটি শেষ করার অনুরোধ সর্বসম্মতভাবে অনুমোদিত হয়, তাহলে অনচেইন প্রস্থান লেনদেনটি অবিলম্বে কার্যকর করা হয়।
+যাইহোক, সিঙ্গেল-ইউজার এক্সিট অনুরোধগুলো এক্সিকিউট করতে কিছুটা বিলম্ব হয়। যদি চ্যানেলটি শেষ করার অনুরোধ সর্বসম্মতিক্রমে অনুমোদিত হয়, তবে অনচেইন এক্সিট লেনদেন তাৎক্ষণিকভাবে এক্সিকিউট করা হয়।
-জালিয়াতির সম্ভাবনার কারণে একক-ব্যবহারকারী প্রস্থানের ক্ষেত্রে বিলম্বটি কার্যকর হয়। উদাহরণস্বরূপ, একজন চ্যানেল অংশগ্রহণকারী অনচেইনে একটি পুরানো স্টেট আপডেট জমা দিয়ে ইথেরিয়ামে চ্যানেলটি চূড়ান্ত করার চেষ্টা করতে পারে।
+প্রতারণামূলক কাজের সম্ভাবনার কারণে সিঙ্গেল-ইউজার এক্সিটে বিলম্ব ঘটে। উদাহরণস্বরূপ, একজন চ্যানেল অংশগ্রহণকারী অনচেইনে একটি পুরোনো স্টেট আপডেট সাবমিট করে ইথিরিয়ামে চ্যানেলটি চূড়ান্ত করার চেষ্টা করতে পারে।
-একটি প্রতিরোধ ব্যবস্থা হিসাবে, স্টেট চ্যানেলগুলি সৎ ব্যবহারকারীদের চ্যানেলের সর্বশেষ বৈধ স্টেট অনচেইনে জমা দিয়ে অবৈধ স্টেট আপডেটগুলিকে চ্যালেঞ্জ করার অনুমতি দেয়। স্টেট চ্যানেলগুলি এমনভাবে ডিজাইন করা হয়েছে যাতে নতুন, সম্মত স্টেট আপডেটগুলি পুরানো স্টেট আপডেটগুলিকে ছাপিয়ে যায়।
+একটি প্রতিরোধমূলক ব্যবস্থা হিসেবে, স্টেট চ্যানেলগুলো সৎ ব্যবহারকারীদের অনচেইনে চ্যানেলের সর্বশেষ, বৈধ স্টেট সাবমিট করে অবৈধ স্টেট আপডেটগুলোকে চ্যালেঞ্জ করার সুযোগ দেয়। স্টেট চ্যানেলগুলো এমনভাবে ডিজাইন করা হয়েছে যাতে নতুন, সম্মত স্টেট আপডেটগুলো পুরোনো স্টেট আপডেটগুলোকে বাতিল করে দেয়।
-একবার একটি পিয়ার অনচেইন বিরোধ-নিষ্পত্তি সিস্টেমটি ট্রিগার করলে, অন্য পক্ষকে একটি সময়সীমার মধ্যে (যাকে চ্যালেঞ্জ উইন্ডো বলা হয়) সাড়া দিতে হবে। এটি ব্যবহারকারীদের প্রস্থান লেনদেনকে চ্যালেঞ্জ করার অনুমতি দেয়, বিশেষ করে যদি অন্য পক্ষ একটি বাসি আপডেট প্রয়োগ করে।
+একবার একজন পিয়ার অনচেইন বিরোধ-নিষ্পত্তি সিস্টেম ট্রিগার করলে, অন্য পক্ষকে একটি সময়সীমার মধ্যে (যাকে চ্যালেঞ্জ উইন্ডো বলা হয়) সাড়া দিতে হয়। এটি ব্যবহারকারীদের এক্সিট লেনদেনকে চ্যালেঞ্জ করার সুযোগ দেয়, বিশেষ করে যদি অন্য পক্ষ একটি পুরোনো আপডেট প্রয়োগ করে।
-যাই হোক না কেন, চ্যানেল ব্যবহারকারীদের সর্বদা শক্তিশালী ফাইনালিটি গ্যারান্টি থাকে: যদি তাদের দখলে থাকা স্টেট ট্রানজিশনটি সমস্ত সদস্য দ্বারা স্বাক্ষরিত হয় এবং এটি সবচেয়ে সাম্প্রতিক আপডেট হয়, তবে এটি একটি নিয়মিত অনচেইন লেনদেনের সমান ফাইনালিটি সহ। তাদের এখনও অন্য পক্ষকে অনচেইনে চ্যালেঞ্জ করতে হবে, কিন্তু একমাত্র সম্ভাব্য ফলাফল হল সর্বশেষ বৈধ স্টেট চূড়ান্ত করা, যা তারা ধরে রাখে।
+যাই হোক না কেন, চ্যানেল ব্যবহারকারীদের সবসময় শক্তিশালী ফাইনালিটি গ্যারান্টি থাকে: যদি তাদের কাছে থাকা স্টেট ট্রানজিশনটি সকল সদস্য দ্বারা স্বাক্ষরিত হয় এবং এটি সবচেয়ে সাম্প্রতিক আপডেট হয়, তবে এটি একটি নিয়মিত অনচেইন লেনদেনের সমান ফাইনালিটি সম্পন্ন। তাদের এখনও অন্য পক্ষকে অনচেইনে চ্যালেঞ্জ করতে হবে, তবে একমাত্র সম্ভাব্য ফলাফল হলো সর্বশেষ বৈধ স্টেট চূড়ান্ত করা, যা তাদের কাছে রয়েছে।
-### স্টেট চ্যানেলগুলি ইথেরিয়ামের সাথে কীভাবে ইন্টারঅ্যাক্ট করে? {#how-do-state-channels-interact-with-ethereum}
+### স্টেট চ্যানেলগুলো ইথিরিয়ামের সাথে কীভাবে ইন্টারঅ্যাক্ট করে? {#how-do-state-channels-interact-with-ethereum}
-যদিও তারা অফচেইন প্রোটোকল হিসাবে বিদ্যমান, স্টেট চ্যানেলগুলির একটি অনচেইন উপাদান রয়েছে: চ্যানেল খোলার সময় ইথেরিয়ামে স্থাপন করা স্মার্ট কন্ট্র্যাক্ট। এই চুক্তিটি চ্যানেলে জমা করা সম্পদ নিয়ন্ত্রণ করে, স্টেট আপডেট যাচাই করে এবং অংশগ্রহণকারীদের মধ্যে বিরোধের সালিশি করে।
+যদিও এগুলো অফচেইন প্রটোকল হিসেবে বিদ্যমান, স্টেট চ্যানেলগুলোর একটি অনচেইন উপাদান রয়েছে: চ্যানেল খোলার সময় ইথিরিয়ামে ডিপ্লয় করা স্মার্ট কন্ট্রাক্ট। এই কন্ট্রাক্ট চ্যানেলে জমা করা সম্পদ নিয়ন্ত্রণ করে, স্টেট আপডেট যাচাই করে এবং অংশগ্রহণকারীদের মধ্যে বিরোধ নিষ্পত্তি করে।
-[লেয়ার 2](/layer-2/) স্কেলিং সমাধানগুলির বিপরীতে, স্টেট চ্যানেলগুলি মেইননেটে লেনদেনের ডেটা বা স্টেট প্রতিশ্রুতি প্রকাশ করে না। তবে, তারা মেইননেটের সাথে আরও বেশি সংযুক্ত, যেমন [সাইডচেইন](/developers/docs/scaling/sidechains/) এর চেয়ে, যা তাদের কিছুটা নিরাপদ করে তোলে।
+[লেয়ার ২](/layer-2/) স্কেলিং সমাধানগুলোর বিপরীতে, স্টেট চ্যানেলগুলো মেইননেট-এ লেনদেনের ডেটা বা স্টেট কমিটমেন্ট প্রকাশ করে না। যাইহোক, এগুলো [সাইডচেইন](/developers/docs/scaling/sidechains/)-এর চেয়ে মেইননেট-এর সাথে বেশি সংযুক্ত, যা এগুলোকে কিছুটা বেশি নিরাপদ করে তোলে।
-স্টেট চ্যানেলগুলি নিম্নলিখিতগুলির জন্য মূল ইথেরিয়াম প্রোটোকলের উপর নির্ভর করে:
+স্টেট চ্যানেলগুলো নিম্নলিখিত বিষয়গুলোর জন্য মূল ইথিরিয়াম প্রটোকলের উপর নির্ভর করে:
#### ১. লাইভনেস {#liveness}
-চ্যানেল খোলার সময় স্থাপন করা অনচেইন চুক্তিটি চ্যানেলের কার্যকারিতার জন্য দায়ী। যদি চুক্তিটি ইথেরিয়ামে চলমান থাকে, তবে চ্যানেলটি সর্বদা ব্যবহারের জন্য উপলব্ধ। বিপরীতে, একটি সাইডচেইন সর্বদা ব্যর্থ হতে পারে, এমনকি যদি মেইননেট চালু থাকে, যা ব্যবহারকারীর তহবিলকে ঝুঁকির মধ্যে ফেলে।
+চ্যানেল খোলার সময় ডিপ্লয় করা অনচেইন কন্ট্রাক্ট চ্যানেলের কার্যকারিতার জন্য দায়ী। যদি কন্ট্রাক্টটি ইথিরিয়ামে চলতে থাকে, তবে চ্যানেলটি সবসময় ব্যবহারের জন্য উপলব্ধ থাকে। বিপরীতভাবে, একটি সাইডচেইন সবসময় ব্যর্থ হতে পারে, এমনকি মেইননেট চালু থাকলেও, যা ব্যবহারকারীর ফান্ডকে ঝুঁকিতে ফেলে।
-#### 2. নিরাপত্তা {#security}
+#### ২. নিরাপত্তা {#security}
-কিছু পরিমাণে, স্টেট চ্যানেলগুলি নিরাপত্তা প্রদান এবং ব্যবহারকারীদের দূষিত পিয়ারদের থেকে রক্ষা করার জন্য ইথেরিয়ামের উপর নির্ভর করে। পরবর্তী বিভাগগুলিতে আলোচনা করা হয়েছে, চ্যানেলগুলি একটি ফ্রড প্রুফ প্রক্রিয়া ব্যবহার করে যা ব্যবহারকারীদের একটি অবৈধ বা বাসি আপডেট দিয়ে চ্যানেল চূড়ান্ত করার প্রচেষ্টাকে চ্যালেঞ্জ করতে দেয়।
+কিছুটা হলেও, স্টেট চ্যানেলগুলো নিরাপত্তা প্রদান করতে এবং ক্ষতিকারক পিয়ারদের থেকে ব্যবহারকারীদের রক্ষা করতে ইথিরিয়ামের উপর নির্ভর করে। পরবর্তী বিভাগগুলোতে যেমন আলোচনা করা হয়েছে, চ্যানেলগুলো একটি ফ্রড প্রুফ মেকানিজম ব্যবহার করে যা ব্যবহারকারীদের একটি অবৈধ বা পুরোনো আপডেটের মাধ্যমে চ্যানেল চূড়ান্ত করার প্রচেষ্টাকে চ্যালেঞ্জ করতে দেয়।
-এই ক্ষেত্রে, সৎ পক্ষ যাচাইয়ের জন্য অনচেইন চুক্তিতে ফ্রড প্রুফ হিসাবে চ্যানেলের সর্বশেষ বৈধ স্টেট সরবরাহ করে। ফ্রড প্রুফগুলি পারস্পরিক অবিশ্বাসী পক্ষগুলিকে প্রক্রিয়ায় তাদের তহবিল ঝুঁকি না নিয়ে অফচেইন লেনদেন পরিচালনা করতে সক্ষম করে।
+এই ক্ষেত্রে, সৎ পক্ষ যাচাইকরণের জন্য অনচেইন কন্ট্রাক্টে ফ্রড প্রুফ হিসেবে চ্যানেলের সর্বশেষ বৈধ স্টেট প্রদান করে। ফ্রড প্রুফগুলো পারস্পরিক অবিশ্বাসী পক্ষগুলোকে এই প্রক্রিয়ায় তাদের ফান্ড ঝুঁকিতে না ফেলে অফচেইন লেনদেন পরিচালনা করতে সক্ষম করে।
-#### 3. ফাইনালিটি {#finality}
+#### ৩. ফাইনালিটি {#finality}
-চ্যানেল ব্যবহারকারীদের দ্বারা সম্মিলিতভাবে স্বাক্ষরিত স্টেট আপডেটগুলি অনচেইন লেনদেনের মতোই ভালো বলে বিবেচিত হয়। তবুও, সমস্ত ইন-চ্যানেল কার্যকলাপ শুধুমাত্র তখনই সত্যিকারের ফাইনালিটি অর্জন করে যখন চ্যানেলটি ইথেরিয়ামে বন্ধ করা হয়।
+চ্যানেল ব্যবহারকারীদের দ্বারা সম্মিলিতভাবে স্বাক্ষরিত স্টেট আপডেটগুলোকে অনচেইন লেনদেনের মতোই ভালো বলে মনে করা হয়। তবুও, চ্যানেলের ভিতরের সমস্ত কার্যকলাপ শুধুমাত্র তখনই প্রকৃত ফাইনালিটি অর্জন করে যখন চ্যানেলটি ইথিরিয়ামে বন্ধ করা হয়।
-আশাবাদী ক্ষেত্রে, উভয় পক্ষই সহযোগিতা করতে পারে এবং চূড়ান্ত স্টেট আপডেটে স্বাক্ষর করতে পারে এবং চ্যানেলটি বন্ধ করতে অনচেইনে জমা দিতে পারে, যার পরে তহবিলগুলি চ্যানেলের চূড়ান্ত স্টেট অনুসারে বিতরণ করা হয়। হতাশাবাদী ক্ষেত্রে, যেখানে কেউ অনচেইনে একটি ভুল স্টেট আপডেট পোস্ট করে প্রতারণা করার চেষ্টা করে, তাদের লেনদেনটি চ্যালেঞ্জ উইন্ডো শেষ না হওয়া পর্যন্ত চূড়ান্ত হয় না।
+অপ্টিমিস্টিক ক্ষেত্রে, উভয় পক্ষ সহযোগিতা করতে পারে এবং চূড়ান্ত স্টেট আপডেটে স্বাক্ষর করতে পারে এবং চ্যানেলটি বন্ধ করতে অনচেইনে সাবমিট করতে পারে, যার পরে চ্যানেলের চূড়ান্ত স্টেট অনুযায়ী ফান্ড বিতরণ করা হয়। পেসিমিস্টিক ক্ষেত্রে, যেখানে কেউ অনচেইনে একটি ভুল স্টেট আপডেট পোস্ট করে প্রতারণা করার চেষ্টা করে, তাদের লেনদেন চ্যালেঞ্জ উইন্ডো শেষ না হওয়া পর্যন্ত চূড়ান্ত হয় না।
-## ভার্চুয়াল স্টেট চ্যানেল {#virtual-state-channels}
+## ভার্চুয়াল স্টেট চ্যানেল {#virtual-state-channels}
-একটি স্টেট চ্যানেলের একটি সরল বাস্তবায়ন হবে যখন দুইজন ব্যবহারকারী অফচেইনে একটি এপ্লিকেশন চালাতে চায় তখন একটি নতুন চুক্তি স্থাপন করা। এটি কেবল অসম্ভবই নয়, এটি স্টেট চ্যানেলগুলির ব্যয়-কার্যকারিতাও বাতিল করে দেয় (অনচেইন লেনদেনের খরচ দ্রুত বাড়তে পারে)।
+একটি স্টেট চ্যানেলের সাধারণ ইমপ্লিমেন্টেশন হবে একটি নতুন কন্ট্রাক্ট ডিপ্লয় করা যখন দুজন ব্যবহারকারী অফচেইনে একটি অ্যাপ্লিকেশন এক্সিকিউট করতে চায়। এটি কেবল অবাস্তবই নয়, এটি স্টেট চ্যানেলগুলোর ব্যয়-কার্যকারিতাকেও অস্বীকার করে (অনচেইন লেনদেনের খরচ দ্রুত বাড়তে পারে)।
-এই সমস্যার সমাধান করতে, "ভার্চুয়াল চ্যানেল" তৈরি করা হয়েছিল। নিয়মিত চ্যানেলগুলির বিপরীতে যেগুলির জন্য খোলা এবং বন্ধ করার জন্য অনচেইন লেনদেনের প্রয়োজন হয়, একটি ভার্চুয়াল চ্যানেল মূল চেইনের সাথে ইন্টারঅ্যাক্ট না করেই খোলা, কার্যকর করা এবং চূড়ান্ত করা যেতে পারে। এই পদ্ধতি ব্যবহার করে অফচেইনে বিরোধ নিষ্পত্তি করাও সম্ভব।
+এই সমস্যার সমাধান করতে, "ভার্চুয়াল চ্যানেল" তৈরি করা হয়েছিল। নিয়মিত চ্যানেলগুলোর বিপরীতে যেগুলোতে খুলতে এবং শেষ করতে অনচেইন লেনদেনের প্রয়োজন হয়, একটি ভার্চুয়াল চ্যানেল মূল চেইনের সাথে ইন্টারঅ্যাক্ট না করেই খোলা, এক্সিকিউট এবং চূড়ান্ত করা যেতে পারে। এই পদ্ধতি ব্যবহার করে অফচেইনে বিরোধ নিষ্পত্তি করাও সম্ভব।
-এই সিস্টেমটি তথাকথিত "লেজার চ্যানেল" এর অস্তিত্বের উপর নির্ভর করে, যা অনচেইনে অর্থায়ন করা হয়েছে। দুই পক্ষের মধ্যে ভার্চুয়াল চ্যানেলগুলি একটি বিদ্যমান লেজার চ্যানেলের উপরে তৈরি করা যেতে পারে, লেজার চ্যানেলের মালিক(রা) একটি মধ্যস্থতাকারী হিসাবে কাজ করে।
+এই সিস্টেমটি তথাকথিত "লেজার চ্যানেল"-এর অস্তিত্বের উপর নির্ভর করে, যেগুলোতে অনচেইনে ফান্ড দেওয়া হয়েছে। দুটি পক্ষের মধ্যে ভার্চুয়াল চ্যানেলগুলো একটি বিদ্যমান লেজার চ্যানেলের উপরে তৈরি করা যেতে পারে, যেখানে লেজার চ্যানেলের মালিক(রা) মধ্যস্থতাকারী হিসেবে কাজ করে।
-প্রতিটি ভার্চুয়াল চ্যানেলের ব্যবহারকারীরা একটি নতুন চুক্তির উদাহরণের মাধ্যমে ইন্টারঅ্যাক্ট করে, লেজার চ্যানেল একাধিক চুক্তির উদাহরণ সমর্থন করতে সক্ষম। লেজার চ্যানেলের স্টেটে একাধিক চুক্তি স্টোরেজ স্টেটও রয়েছে, যা বিভিন্ন ব্যবহারকারীর মধ্যে অফচেইনে অ্যাপ্লিকেশনগুলির সমান্তরাল সম্পাদনের অনুমতি দেয়।
+প্রতিটি ভার্চুয়াল চ্যানেলের ব্যবহারকারীরা একটি নতুন কন্ট্রাক্ট ইনস্ট্যান্সের মাধ্যমে ইন্টারঅ্যাক্ট করে, যেখানে লেজার চ্যানেল একাধিক কন্ট্রাক্ট ইনস্ট্যান্স সমর্থন করতে সক্ষম। লেজার চ্যানেলের স্টেটে একাধিক কন্ট্রাক্ট স্টোরেজ স্টেটও থাকে, যা বিভিন্ন ব্যবহারকারীর মধ্যে অফচেইনে অ্যাপ্লিকেশনগুলোর সমান্তরাল এক্সিকিউশনের সুযোগ দেয়।
-নিয়মিত চ্যানেলগুলির মতোই, ব্যবহারকারীরা স্টেট মেশিনের অগ্রগতির জন্য স্টেট আপডেট বিনিময় করে। বিরোধ দেখা না দিলে, মধ্যস্থতাকারীকে শুধুমাত্র চ্যানেল খোলার বা বন্ধ করার সময় যোগাযোগ করতে হবে।
+নিয়মিত চ্যানেলগুলোর মতোই, ব্যবহারকারীরা স্টেট মেশিনকে এগিয়ে নিতে স্টেট আপডেট আদান-প্রদান করে। যদি কোনো বিরোধ দেখা না দেয়, তবে মধ্যস্থতাকারীর সাথে শুধুমাত্র চ্যানেল খোলার বা শেষ করার সময় যোগাযোগ করতে হয়।
-### ভার্চুয়াল পেমেন্ট চ্যানেল {#virtual-payment-channels}
+### ভার্চুয়াল পেমেন্ট চ্যানেল {#virtual-payment-channels}
-ভার্চুয়াল পেমেন্ট চ্যানেলগুলি ভার্চুয়াল স্টেট চ্যানেলগুলির মতো একই ধারণা নিয়ে কাজ করে: একই নেটওয়ার্কের সাথে সংযুক্ত অংশগ্রহণকারীরা অনচেইনে একটি নতুন চ্যানেল না খুলেই বার্তা পাঠাতে পারে। ভার্চুয়াল পেমেন্ট চ্যানেলগুলিতে, মান স্থানান্তর এক বা একাধিক মধ্যস্থতাকারীর মাধ্যমে পরিচালিত হয়, এই গ্যারান্টি সহ যে শুধুমাত্র উদ্দেশ্যপ্রণোদিত প্রাপকই স্থানান্তরিত তহবিল পেতে পারে।
+ভার্চুয়াল পেমেন্ট চ্যানেলগুলো ভার্চুয়াল স্টেট চ্যানেলগুলোর মতো একই ধারণায় কাজ করে: একই নেটওয়ার্ক-এর সাথে সংযুক্ত অংশগ্রহণকারীরা অনচেইনে একটি নতুন চ্যানেল খোলার প্রয়োজন ছাড়াই মেসেজ পাঠাতে পারে। ভার্চুয়াল পেমেন্ট চ্যানেলগুলোতে, ভ্যালু ট্রান্সফারগুলো এক বা একাধিক মধ্যস্থতাকারীর মাধ্যমে রাউট করা হয়, এই গ্যারান্টি সহ যে শুধুমাত্র উদ্দিষ্ট প্রাপকই ট্রান্সফার করা ফান্ড গ্রহণ করতে পারে।
-## স্টেট চ্যানেলের এপ্লিকেশন {#applications-of-state-channels}
+## স্টেট চ্যানেলের অ্যাপ্লিকেশন {#applications-of-state-channels}
-### পেমেন্টস {#payments}
+### পেমেন্ট {#payments}
-প্রাথমিক ব্লকচেইন চ্যানেলগুলি ছিল সাধারণ প্রোটোকল যা দুজন অংশগ্রহণকারীকে মেইননেটে উচ্চ লেনদেন ফি প্রদান না করেই অফচেইনে দ্রুত, কম-ফি স্থানান্তর পরিচালনা করতে দেয়। আজও, পেমেন্ট চ্যানেলগুলি ইথার এবং টোকেন বিনিময় এবং জমার জন্য ডিজাইন করা অ্যাপ্লিকেশনগুলির জন্য উপযোগী।
+প্রাথমিক ব্লকচেইন চ্যানেলগুলো ছিল সাধারণ প্রটোকল যা দুজন অংশগ্রহণকারীকে মেইননেট-এ উচ্চ লেনদেন ফি প্রদান না করেই অফচেইনে দ্রুত, কম-ফি ট্রান্সফার পরিচালনা করার সুযোগ দিত। বর্তমানে, পেমেন্ট চ্যানেলগুলো এখনও ইথার এবং টোকেন আদান-প্রদান এবং জমার জন্য ডিজাইন করা অ্যাপ্লিকেশনগুলোর জন্য উপযোগী।
-চ্যানেল-ভিত্তিক পেমেন্টের নিম্নলিখিত সুবিধা রয়েছে:
+চ্যানেল-ভিত্তিক পেমেন্টগুলোর নিম্নলিখিত সুবিধা রয়েছে:
-1. **থ্রুপুট**: প্রতি চ্যানেলে অফচেইন লেনদেনের পরিমাণ ইথেরিয়ামের থ্রুপুটের সাথে সম্পর্কহীন, যা বিভিন্ন কারণ দ্বারা প্রভাবিত হয়, বিশেষ করে ব্লক সাইজ এবং ব্লক সময়। অফচেইনে লেনদেন সম্পাদন করে, ব্লকচেইন চ্যানেলগুলি উচ্চতর থ্রুপুট অর্জন করতে পারে।
+1. **থ্রুপুট**: প্রতি চ্যানেলে অফচেইন লেনদেনের পরিমাণ ইথিরিয়ামের থ্রুপুটের সাথে সম্পর্কযুক্ত নয়, যা বিভিন্ন কারণ, বিশেষ করে ব্লক সাইজ এবং ব্লক টাইমের দ্বারা প্রভাবিত হয়। অফচেইনে লেনদেন এক্সিকিউট করার মাধ্যমে, ব্লকচেইন চ্যানেলগুলো উচ্চতর থ্রুপুট অর্জন করতে পারে।
-2. **গোপনীয়তা**: যেহেতু চ্যানেলগুলি অফচেইনে বিদ্যমান, তাই অংশগ্রহণকারীদের মধ্যে মিথস্ক্রিয়ার বিবরণ ইথেরিয়ামের পাবলিক ব্লকচেইনে রেকর্ড করা হয় না। চ্যানেল ব্যবহারকারীদের শুধুমাত্র চ্যানেল ফান্ডিং এবং বন্ধ করার সময় বা বিরোধ নিষ্পত্তি করার সময় অনচেইনে ইন্টারঅ্যাক্ট করতে হয়। এইভাবে, চ্যানেলগুলি সেইসব ব্যক্তিদের জন্য উপযোগী যারা আরও ব্যক্তিগত লেনদেন চান।
+2. **গোপনীয়তা**: যেহেতু চ্যানেলগুলো অফচেইনে বিদ্যমান, অংশগ্রহণকারীদের মধ্যে ইন্টারঅ্যাকশনের বিবরণ ইথিরিয়ামের পাবলিক ব্লকচেইনে রেকর্ড করা হয় না। চ্যানেল ব্যবহারকারীদের শুধুমাত্র চ্যানেল ফান্ডিং এবং বন্ধ করার সময় বা বিরোধ নিষ্পত্তির সময় অনচেইনে ইন্টারঅ্যাক্ট করতে হয়। সুতরাং, চ্যানেলগুলো এমন ব্যক্তিদের জন্য উপযোগী যারা আরও ব্যক্তিগত লেনদেন চান।
-3. **লেটেন্সি**: চ্যানেল অংশগ্রহণকারীদের মধ্যে পরিচালিত অফচেইন লেনদেনগুলি তাত্ক্ষণিকভাবে নিষ্পত্তি করা যেতে পারে, যদি উভয় পক্ষই সহযোগিতা করে, যা বিলম্ব কমায়। বিপরীতে, মেইননেটে একটি লেনদেন পাঠানোর জন্য নোডগুলিকে লেনদেন প্রক্রিয়া করতে, লেনদেন সহ একটি নতুন ব্লক তৈরি করতে এবং কনসেন্সাসে পৌঁছানোর জন্য অপেক্ষা করতে হয়। ব্যবহারকারীদের একটি লেনদেন চূড়ান্ত হিসাবে বিবেচনা করার আগে আরও ব্লক নিশ্চিতকরণের জন্য অপেক্ষা করতে হতে পারে।
+3. **ল্যাটেন্সি**: চ্যানেল অংশগ্রহণকারীদের মধ্যে পরিচালিত অফচেইন লেনদেনগুলো তাৎক্ষণিকভাবে নিষ্পত্তি করা যেতে পারে, যদি উভয় পক্ষ সহযোগিতা করে, যা বিলম্ব কমায়। বিপরীতে, মেইননেট-এ একটি লেনদেন পাঠানোর জন্য নোডগুলোর লেনদেন প্রক্রিয়া করার, লেনদেনের সাথে একটি নতুন ব্লক তৈরি করার এবং কনসেন্সাস-এ পৌঁছানোর জন্য অপেক্ষা করতে হয়। একটি লেনদেন চূড়ান্ত বিবেচনা করার আগে ব্যবহারকারীদের আরও ব্লক কনফার্মেশনের জন্য অপেক্ষা করতে হতে পারে।
-4. **খরচ**: স্টেট চ্যানেলগুলি এমন পরিস্থিতিতে বিশেষভাবে উপযোগী যেখানে অংশগ্রহণকারীদের একটি সেট দীর্ঘ সময় ধরে অনেক স্টেট আপডেট বিনিময় করবে। একমাত্র খরচ হল স্টেট চ্যানেল স্মার্ট কন্ট্র্যাক্ট খোলা এবং বন্ধ করা; চ্যানেল খোলা এবং বন্ধ করার মধ্যে প্রতিটি স্টেট পরিবর্তন আগেরটির চেয়ে সস্তা হবে কারণ নিষ্পত্তির খরচ সেই অনুযায়ী বিতরণ করা হয়।
+4. **খরচ**: স্টেট চ্যানেলগুলো বিশেষ করে এমন পরিস্থিতিতে উপযোগী যেখানে একদল অংশগ্রহণকারী দীর্ঘ সময় ধরে অনেক স্টেট আপডেট আদান-প্রদান করবে। শুধুমাত্র স্টেট চ্যানেল স্মার্ট কন্ট্রাক্ট খোলা এবং বন্ধ করার খরচ বহন করতে হয়; চ্যানেল খোলা এবং বন্ধ করার মধ্যে প্রতিটি স্টেট পরিবর্তন আগেরটির চেয়ে সস্তা হবে কারণ নিষ্পত্তির খরচ সেই অনুযায়ী বিতরণ করা হয়।
-[রোলআপস](/developers/docs/scaling/#rollups) এর মতো লেয়ার 2 সমাধানগুলিতে স্টেট চ্যানেলগুলি প্রয়োগ করা, পেমেন্টের জন্য সেগুলিকে আরও আকর্ষণীয় করে তুলতে পারে। যদিও চ্যানেলগুলি সস্তা পেমেন্টের অফার করে, খোলার পর্যায়ে মেইননেটে অনচেইন চুক্তি সেট আপ করার খরচ ব্যয়বহুল হতে পারে—বিশেষ করে যখন গ্যাসের ফি বেড়ে যায়। ইথেরিয়াম-ভিত্তিক রোলআপগুলি [কম লেনদেন ফি](https://l2fees.info/) অফার করে এবং সেটআপ ফি কমিয়ে চ্যানেল অংশগ্রহণকারীদের জন্য ওভারহেড কমাতে পারে।
+লেয়ার ২ সমাধানগুলোতে স্টেট চ্যানেলগুলো ইমপ্লিমেন্ট করা, যেমন [রেলআপস](/developers/docs/scaling/#rollups), সেগুলোকে পেমেন্টের জন্য আরও আকর্ষণীয় করে তুলতে পারে। যদিও চ্যানেলগুলো সস্তা পেমেন্ট অফার করে, খোলার পর্যায়ে মেইননেট-এ অনচেইন কন্ট্রাক্ট সেট আপ করার খরচ ব্যয়বহুল হতে পারে—বিশেষ করে যখন গ্যাস ফি বেড়ে যায়। ইথিরিয়াম-ভিত্তিক রেলআপস [কম লেনদেন ফি](https://l2fees.info/) অফার করে এবং সেটআপ ফি কমিয়ে চ্যানেল অংশগ্রহণকারীদের জন্য ওভারহেড কমাতে পারে।
### মাইক্রোট্রানজ্যাকশন {#microtransactions}
-মাইক্রোট্রানজ্যাকশন হল কম-মূল্যের পেমেন্ট (যেমন, এক ডলারের ভগ্নাংশের চেয়ে কম) যা ব্যবসাগুলি লোকসান না করে প্রক্রিয়া করতে পারে না। এই সত্তাগুলিকে পেমেন্ট পরিষেবা প্রদানকারীদের অর্থ প্রদান করতে হয়, যা তারা করতে পারে না যদি গ্রাহকের পেমেন্টে মার্জিন লাভ করার জন্য খুব কম হয়।
+মাইক্রোট্রানজ্যাকশন হলো কম-মূল্যের পেমেন্ট (যেমন, এক ডলারের ভগ্নাংশের চেয়েও কম) যা ব্যবসা প্রতিষ্ঠানগুলো লোকসান ছাড়া প্রক্রিয়া করতে পারে না। এই সত্তাগুলোকে পেমেন্ট সার্ভিস প্রোভাইডারদের অর্থ প্রদান করতে হয়, যা তারা করতে পারে না যদি গ্রাহকের পেমেন্টের মার্জিন লাভ করার জন্য খুব কম হয়।
-পেমেন্ট চ্যানেলগুলি মাইক্রোট্রানজ্যাকশনের সাথে যুক্ত ওভারহেড কমিয়ে এই সমস্যার সমাধান করে। উদাহরণস্বরূপ, একটি ইন্টারনেট পরিষেবা প্রদানকারী (ISP) একজন গ্রাহকের সাথে একটি পেমেন্ট চ্যানেল খুলতে পারে, যা তাদের পরিষেবা ব্যবহার করার সময় প্রতিবার ছোট পেমেন্ট স্ট্রিম করতে দেয়।
+পেমেন্ট চ্যানেলগুলো মাইক্রোট্রানজ্যাকশনের সাথে যুক্ত ওভারহেড কমিয়ে এই সমস্যার সমাধান করে। উদাহরণস্বরূপ, একজন ইন্টারনেট সার্ভিস প্রোভাইডার (ISP) একজন গ্রাহকের সাথে একটি পেমেন্ট চ্যানেল খুলতে পারে, যা তাদের প্রতিবার পরিষেবা ব্যবহার করার সময় ছোট পেমেন্ট স্ট্রিম করার সুযোগ দেয়।
-চ্যানেল খোলা এবং বন্ধ করার খরচ ছাড়াও, অংশগ্রহণকারীদের মাইক্রোট্রানজ্যাকশনে আর কোনো খরচ হয় না (কোনো গ্যাস ফি নেই)। এটি একটি উইন-উইন পরিস্থিতি কারণ গ্রাহকরা পরিষেবাগুলির জন্য কত টাকা দেবেন সে বিষয়ে আরও নমনীয়তা পান এবং ব্যবসাগুলি লাভজনক মাইক্রোট্রানজ্যাকশন থেকে বঞ্চিত হয় না।
+চ্যানেল খোলা এবং বন্ধ করার খরচ ছাড়াও, অংশগ্রহণকারীদের মাইক্রোট্রানজ্যাকশনে আর কোনো খরচ বহন করতে হয় না (কোনো গ্যাস ফি নেই)। এটি একটি উইন-উইন পরিস্থিতি কারণ গ্রাহকদের পরিষেবার জন্য কত টাকা দিতে হবে সে বিষয়ে আরও নমনীয়তা থাকে এবং ব্যবসা প্রতিষ্ঠানগুলো লাভজনক মাইক্রোট্রানজ্যাকশন থেকে বঞ্চিত হয় না।
-### ডিসেন্ট্রালাইজড এপ্লিকেশন {#decentralized-applications}
+### ডিসেন্ট্রালাইজড অ্যাপ্লিকেশন {#decentralized-applications}
-পেমেন্ট চ্যানেলগুলির মতো, স্টেট চ্যানেলগুলি স্টেট মেশিনের চূড়ান্ত স্টেট অনুসারে শর্তসাপেক্ষ পেমেন্ট করতে পারে। স্টেট চ্যানেলগুলি যেকোনো স্টেট ট্রানজিশন লজিককেও সমর্থন করতে পারে, যা তাদের অফচেইনে জেনেরিক অ্যাপস চালানোর জন্য উপযোগী করে তোলে।
+পেমেন্ট চ্যানেলগুলোর মতো, স্টেট চ্যানেলগুলো স্টেট মেশিনের চূড়ান্ত স্টেট অনুযায়ী শর্তসাপেক্ষ পেমেন্ট করতে পারে। স্টেট চ্যানেলগুলো ইচ্ছামতো স্টেট ট্রানজিশন লজিকও সমর্থন করতে পারে, যা সেগুলোকে অফচেইনে জেনেরিক অ্যাপ এক্সিকিউট করার জন্য উপযোগী করে তোলে।
-স্টেট চ্যানেলগুলি প্রায়শই সাধারণ টার্ন-ভিত্তিক অ্যাপ্লিকেশনগুলিতে সীমাবদ্ধ থাকে, কারণ এটি অনচেইন চুক্তিতে প্রতিশ্রুতিবদ্ধ তহবিল পরিচালনা করা সহজ করে তোলে। এছাড়াও, সীমিত সংখ্যক পক্ষ ব্যবধানে অফচেইন অ্যাপ্লিকেশনটির স্টেট আপডেট করার সাথে সাথে, অসৎ আচরণকে শাস্তি দেওয়া তুলনামূলকভাবে সহজ।
+স্টেট চ্যানেলগুলো প্রায়শই সাধারণ টার্ন-ভিত্তিক অ্যাপ্লিকেশনগুলোর মধ্যে সীমাবদ্ধ থাকে, কারণ এটি অনচেইন কন্ট্রাক্টে প্রতিশ্রুতিবদ্ধ ফান্ড পরিচালনা করা সহজ করে তোলে। এছাড়াও, সীমিত সংখ্যক পক্ষ বিরতিতে অফচেইন অ্যাপ্লিকেশনের স্টেট আপডেট করার ফলে, অসৎ আচরণের শাস্তি দেওয়া তুলনামূলকভাবে সহজ।
-একটি স্টেট চ্যানেল অ্যাপ্লিকেশনের কার্যকারিতাও এর ডিজাইনের উপর নির্ভর করে। উদাহরণস্বরূপ, একজন ডেভেলপার একবার অ্যাপ চ্যানেল চুক্তিটি অনচেইনে স্থাপন করতে পারে এবং অন্যান্য খেলোয়াড়দের অনচেইনে না গিয়েই অ্যাপটি পুনরায় ব্যবহার করার অনুমতি দিতে পারে। এই ক্ষেত্রে, প্রাথমিক অ্যাপ চ্যানেলটি একাধিক ভার্চুয়াল চ্যানেল সমর্থনকারী একটি লেজার চ্যানেল হিসাবে কাজ করে, প্রতিটি অফচেইনে অ্যাপের স্মার্ট কন্ট্র্যাক্টের একটি নতুন উদাহরণ চালাচ্ছে।
+একটি স্টেট চ্যানেল অ্যাপ্লিকেশনের দক্ষতা এর ডিজাইনের উপরও নির্ভর করে। উদাহরণস্বরূপ, একজন ডেভেলপার অ্যাপ চ্যানেল কন্ট্রাক্টটি একবার অনচেইনে ডিপ্লয় করতে পারে এবং অন্যান্য খেলোয়াড়দের অনচেইনে না গিয়েই অ্যাপটি পুনরায় ব্যবহার করার সুযোগ দিতে পারে। এই ক্ষেত্রে, প্রাথমিক অ্যাপ চ্যানেলটি একাধিক ভার্চুয়াল চ্যানেল সমর্থনকারী একটি লেজার চ্যানেল হিসেবে কাজ করে, যার প্রতিটি অফচেইনে অ্যাপের স্মার্ট কন্ট্রাক্ট-এর একটি নতুন ইনস্ট্যান্স চালায়।
-স্টেট চ্যানেল অ্যাপ্লিকেশনগুলির জন্য একটি সম্ভাব্য ব্যবহারের ক্ষেত্র হল সাধারণ দুই-খেলোয়াড়ের গেম, যেখানে গেমের ফলাফলের উপর ভিত্তি করে তহবিল বিতরণ করা হয়। এখানে সুবিধা হল যে খেলোয়াড়দের একে অপরকে বিশ্বাস করতে হবে না (ট্রাস্টলেসনেস) এবং অনচেইন চুক্তি, খেলোয়াড়রা নয়, তহবিল বরাদ্দ এবং বিরোধ নিষ্পত্তি নিয়ন্ত্রণ করে (বিকেন্দ্রীকরণ)।
+স্টেট চ্যানেল অ্যাপ্লিকেশনগুলোর একটি সম্ভাব্য ইউজ-কেস হলো সাধারণ দুই-খেলোয়াড়ের গেম, যেখানে গেমের ফলাফলের উপর ভিত্তি করে ফান্ড বিতরণ করা হয়। এখানকার সুবিধা হলো খেলোয়াড়দের একে অপরকে বিশ্বাস করতে হয় না (ট্রাস্টলেসনেস) এবং অনচেইন কন্ট্রাক্ট, খেলোয়াড়রা নয়, ফান্ডের বরাদ্দ এবং বিরোধ নিষ্পত্তি নিয়ন্ত্রণ করে (ডিসেন্ট্রালাইজেশন)।
-স্টেট চ্যানেল অ্যাপগুলির অন্যান্য সম্ভাব্য ব্যবহারের ক্ষেত্রে ENS নামের মালিকানা, NFT লেজার এবং আরও অনেক কিছু অন্তর্ভুক্ত রয়েছে।
+স্টেট চ্যানেল অ্যাপগুলোর অন্যান্য সম্ভাব্য ইউজ-কেসগুলোর মধ্যে রয়েছে ENS নামের মালিকানা, NFT লেজার এবং আরও অনেক কিছু।
-### পারমাণবিক স্থানান্তর {#atomic-transfers}
+### অ্যাটমিক ট্রান্সফার {#atomic-transfers}
-প্রাথমিক পেমেন্ট চ্যানেলগুলি দুই পক্ষের মধ্যে স্থানান্তরে সীমাবদ্ধ ছিল, যা তাদের ব্যবহারযোগ্যতা সীমিত করেছিল। যাইহোক, ভার্চুয়াল চ্যানেলগুলির প্রবর্তন ব্যক্তিদের মধ্যস্থতাকারীদের মাধ্যমে (অর্থাৎ, একাধিক p2p চ্যানেল) স্থানান্তর রুট করার অনুমতি দেয়, অনচেইনে একটি নতুন চ্যানেল না খুলেই।
+প্রাথমিক পেমেন্ট চ্যানেলগুলো দুটি পক্ষের মধ্যে ট্রান্সফারের মধ্যে সীমাবদ্ধ ছিল, যা তাদের ব্যবহারযোগ্যতা সীমিত করেছিল। যাইহোক, ভার্চুয়াল চ্যানেলগুলোর প্রবর্তন ব্যক্তিদের অনচেইনে একটি নতুন চ্যানেল খোলার প্রয়োজন ছাড়াই মধ্যস্থতাকারীদের (অর্থাৎ, একাধিক p2p চ্যানেল) মাধ্যমে ট্রান্সফার রাউট করার সুযোগ দেয়।
-সাধারণত "মাল্টি-হপ ট্রান্সফার" হিসাবে বর্ণিত, রাউটেড পেমেন্টগুলি পারমাণবিক (অর্থাৎ, হয় লেনদেনের সমস্ত অংশ সফল হয় বা এটি সম্পূর্ণ ব্যর্থ হয়)। পারমাণবিক স্থানান্তরগুলি [Hashed Timelock Contracts (HTLCs)](https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts) ব্যবহার করে যাতে নিশ্চিত করা যায় যে পেমেন্ট শুধুমাত্র নির্দিষ্ট শর্ত পূরণ হলেই মুক্তি পায়, যার ফলে প্রতিপক্ষের ঝুঁকি কমে যায়।
+সাধারণত "মাল্টি-হপ ট্রান্সফার" হিসেবে বর্ণিত, রাউট করা পেমেন্টগুলো অ্যাটমিক হয় (অর্থাৎ, লেনদেনের সমস্ত অংশ সফল হয় অথবা এটি পুরোপুরি ব্যর্থ হয়)। অ্যাটমিক ট্রান্সফারগুলো [Hashed Timelock Contracts (HTLCs)](https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts) ব্যবহার করে নিশ্চিত করে যে পেমেন্টটি শুধুমাত্র নির্দিষ্ট শর্ত পূরণ হলেই রিলিজ করা হবে, যার ফলে কাউন্টারপার্টি ঝুঁকি কমে যায়।
## স্টেট চ্যানেল ব্যবহারের অসুবিধা {#drawbacks-of-state-channels}
### লাইভনেস অনুমান {#liveness-assumptions}
-দক্ষতা নিশ্চিত করতে, স্টেট চ্যানেলগুলি চ্যানেল অংশগ্রহণকারীদের বিরোধে সাড়া দেওয়ার ক্ষমতার উপর সময়সীমা রাখে। এই নিয়মটি অনুমান করে যে পিয়াররা সর্বদা অনলাইন থাকবে চ্যানেলের কার্যকলাপ নিরীক্ষণ করতে এবং প্রয়োজনে চ্যালেঞ্জের প্রতিদ্বন্দ্বিতা করতে।
+দক্ষতা নিশ্চিত করতে, স্টেট চ্যানেলগুলো চ্যানেল অংশগ্রহণকারীদের বিরোধের জবাব দেওয়ার ক্ষমতার উপর সময়সীমা নির্ধারণ করে। এই নিয়মটি অনুমান করে যে পিয়াররা চ্যানেল কার্যকলাপ নিরীক্ষণ করতে এবং প্রয়োজনে চ্যালেঞ্জের প্রতিদ্বন্দ্বিতা করতে সবসময় অনলাইনে থাকবে।
-বাস্তবে, ব্যবহারকারীরা তাদের নিয়ন্ত্রণের বাইরের কারণে অফলাইনে যেতে পারে (যেমন, দুর্বল ইন্টারনেট সংযোগ, যান্ত্রিক ব্যর্থতা, ইত্যাদি)। যদি একজন সৎ ব্যবহারকারী অফলাইনে চলে যায়, তবে একটি দূষিত পিয়ার অ্যাডজুডিকেটর চুক্তিতে পুরানো মধ্যবর্তী স্টেটগুলি উপস্থাপন করে এবং প্রতিশ্রুতিবদ্ধ তহবিল চুরি করে পরিস্থিতির সুযোগ নিতে পারে।
+বাস্তবে, ব্যবহারকারীরা তাদের নিয়ন্ত্রণের বাইরের কারণে অফলাইনে যেতে পারে (যেমন, দুর্বল ইন্টারনেট সংযোগ, যান্ত্রিক ত্রুটি ইত্যাদি)। যদি একজন সৎ ব্যবহারকারী অফলাইনে যায়, তবে একজন ক্ষতিকারক পিয়ার অ্যাডজুডিকেটর কন্ট্রাক্টে পুরোনো মধ্যবর্তী স্টেটগুলো উপস্থাপন করে পরিস্থিতিকে কাজে লাগাতে পারে এবং প্রতিশ্রুতিবদ্ধ ফান্ড চুরি করতে পারে।
-কিছু চ্যানেল "ওয়াচটাওয়ার" ব্যবহার করে—সত্তা যা অন্যদের পক্ষে অনচেইন বিরোধের ঘটনাগুলি দেখার এবং প্রয়োজনীয় পদক্ষেপ নেওয়ার জন্য দায়ী, যেমন সংশ্লিষ্ট পক্ষগুলিকে সতর্ক করা। তবে, এটি একটি স্টেট চ্যানেল ব্যবহারের খরচ বাড়াতে পারে।
+কিছু চ্যানেল "ওয়াচটাওয়ার" ব্যবহার করে—যে সত্তাগুলো অন্যদের পক্ষে অনচেইন বিরোধের ঘটনাগুলো দেখার এবং সংশ্লিষ্ট পক্ষগুলোকে সতর্ক করার মতো প্রয়োজনীয় ব্যবস্থা নেওয়ার জন্য দায়ী। যাইহোক, এটি একটি স্টেট চ্যানেল ব্যবহারের খরচ বাড়াতে পারে।
### ডেটা অনুপলব্ধতা {#data-unavailability}
-পূর্বে ব্যাখ্যা করা হয়েছে, একটি অবৈধ বিরোধকে চ্যালেঞ্জ করার জন্য স্টেট চ্যানেলের সর্বশেষ, বৈধ স্টেট উপস্থাপন করতে হবে। এটি একটি অনুমানের উপর ভিত্তি করে আরেকটি নিয়ম—যে ব্যবহারকারীদের চ্যানেলের সর্বশেষ স্টেটে অ্যাক্সেস রয়েছে।
+যেমনটি আগে ব্যাখ্যা করা হয়েছে, একটি অবৈধ বিরোধকে চ্যালেঞ্জ করার জন্য স্টেট চ্যানেলের সর্বশেষ, বৈধ স্টেট উপস্থাপন করা প্রয়োজন। এটি একটি অনুমানের উপর ভিত্তি করে আরেকটি নিয়ম—যে ব্যবহারকারীদের চ্যানেলের সর্বশেষ স্টেটে অ্যাক্সেস রয়েছে।
-যদিও চ্যানেল ব্যবহারকারীদের অফচেইন অ্যাপ্লিকেশন স্টেটের কপি সংরক্ষণ করার আশা করা যুক্তিসঙ্গত, এই ডেটা ত্রুটি বা যান্ত্রিক ব্যর্থতার কারণে হারিয়ে যেতে পারে। যদি ব্যবহারকারীর কাছে ডেটা ব্যাক আপ না থাকে, তবে তারা কেবল আশা করতে পারে যে অন্য পক্ষ তাদের দখলে থাকা পুরানো স্টেট ট্রানজিশন ব্যবহার করে একটি অবৈধ প্রস্থান অনুরোধ চূড়ান্ত করবে না।
+যদিও চ্যানেল ব্যবহারকারীদের অফচেইন অ্যাপ্লিকেশন স্টেটের কপি সংরক্ষণ করার প্রত্যাশা করা যুক্তিসঙ্গত, এই ডেটা ত্রুটি বা যান্ত্রিক ব্যর্থতার কারণে হারিয়ে যেতে পারে। যদি ব্যবহারকারীর কাছে ডেটা ব্যাক আপ করা না থাকে, তবে তারা কেবল আশা করতে পারে যে অন্য পক্ষ তাদের কাছে থাকা পুরোনো স্টেট ট্রানজিশন ব্যবহার করে একটি অবৈধ এক্সিট অনুরোধ চূড়ান্ত করবে না।
-ইথেরিয়াম ব্যবহারকারীদের এই সমস্যার সাথে মোকাবিলা করতে হবে না কারণ নেটওয়ার্ক ডেটা প্রাপ্যতার উপর নিয়ম প্রয়োগ করে। লেনদেনের ডেটা সমস্ত নোড দ্বারা সংরক্ষণ এবং প্রচারিত হয় এবং প্রয়োজনে ব্যবহারকারীদের ডাউনলোডের জন্য উপলব্ধ থাকে।
+ইথিরিয়াম ব্যবহারকারীদের এই সমস্যাটি মোকাবেলা করতে হয় না কারণ নেটওয়ার্ক ডেটা উপলব্ধতার উপর নিয়ম প্রয়োগ করে। লেনদেনের ডেটা সমস্ত নোড দ্বারা সংরক্ষণ এবং প্রচার করা হয় এবং প্রয়োজনে ব্যবহারকারীদের ডাউনলোড করার জন্য উপলব্ধ থাকে।
-### তারল্য সমস্যা {#liquidity-issues}
+### লিকুইডিটি সমস্যা {#liquidity-issues}
-একটি ব্লকচেইন চ্যানেল প্রতিষ্ঠা করতে, অংশগ্রহণকারীদের চ্যানেলের জীবনচক্রের জন্য একটি অনচেইন স্মার্ট কন্ট্র্যাক্টে তহবিল লক করতে হবে। এটি চ্যানেল ব্যবহারকারীদের তারল্য হ্রাস করে এবং যারা মেইননেটে তহবিল লক করে রাখতে পারে তাদের জন্য চ্যানেলগুলি সীমাবদ্ধ করে।
+একটি ব্লকচেইন চ্যানেল স্থাপন করতে, অংশগ্রহণকারীদের চ্যানেলের জীবনচক্রের জন্য একটি অনচেইন স্মার্ট কন্ট্রাক্ট-এ ফান্ড লক করতে হবে। এটি চ্যানেল ব্যবহারকারীদের লিকুইডিটি কমায় এবং চ্যানেলগুলোকে তাদের মধ্যে সীমাবদ্ধ করে যারা মেইননেট-এ ফান্ড লক করে রাখতে পারে।
-তবে, একটি অফচেইন পরিষেবা প্রদানকারী (OSP) দ্বারা পরিচালিত লেজার চ্যানেলগুলি ব্যবহারকারীদের জন্য তারল্য সমস্যা কমাতে পারে। একটি লেজার চ্যানেলের সাথে সংযুক্ত দুটি পিয়ার একটি ভার্চুয়াল চ্যানেল তৈরি করতে পারে, যা তারা যখনই চায় তখন সম্পূর্ণ অফচেইনে খুলতে এবং চূড়ান্ত করতে পারে।
+যাইহোক, লেজার চ্যানেলগুলো—যা একটি অফচেইন সার্ভিস প্রোভাইডার (OSP) দ্বারা পরিচালিত হয়—ব্যবহারকারীদের জন্য লিকুইডিটি সমস্যা কমাতে পারে। একটি লেজার চ্যানেলের সাথে সংযুক্ত দুজন পিয়ার একটি ভার্চুয়াল চ্যানেল তৈরি করতে পারে, যা তারা যেকোনো সময় সম্পূর্ণ অফচেইনে খুলতে এবং চূড়ান্ত করতে পারে।
-অফচেইন পরিষেবা প্রদানকারীরা একাধিক পিয়ারের সাথে চ্যানেলও খুলতে পারে, যা তাদের পেমেন্ট রাউটিংয়ের জন্য উপযোগী করে তোলে। অবশ্যই, ব্যবহারকারীদের তাদের পরিষেবার জন্য OSP-কে ফি দিতে হবে, যা কারো কারো জন্য অনাকাঙ্ক্ষিত হতে পারে।
+অফচেইন সার্ভিস প্রোভাইডাররা একাধিক পিয়ারের সাথে চ্যানেলও খুলতে পারে, যা সেগুলোকে পেমেন্ট রাউটিংয়ের জন্য উপযোগী করে তোলে। অবশ্যই, ব্যবহারকারীদের তাদের পরিষেবার জন্য OSP-দের ফি প্রদান করতে হবে, যা কারও কারও জন্য অবাঞ্ছিত হতে পারে।
### গ্রিফিং অ্যাটাক {#griefing-attacks}
-গ্রিফিং অ্যাটাক হল ফ্রড প্রুফ-ভিত্তিক সিস্টেমের একটি সাধারণ বৈশিষ্ট্য। একটি গ্রিফিং অ্যাটাক সরাসরি আক্রমণকারীর উপকার করে না তবে শিকারের জন্য দুঃখ (অর্থাৎ, ক্ষতি) ঘটায়, তাই এই নাম।
+গ্রিফিং অ্যাটাক হলো ফ্রড প্রুফ-ভিত্তিক সিস্টেমগুলোর একটি সাধারণ বৈশিষ্ট্য। একটি গ্রিফিং অ্যাটাক আক্রমণকারীকে সরাসরি উপকৃত করে না তবে শিকারের জন্য গ্রিফ (অর্থাৎ, ক্ষতি) সৃষ্টি করে, তাই এই নাম।
-ফ্রড প্রুফিং গ্রিফিং অ্যাটাকের জন্য সংবেদনশীল কারণ সৎ পক্ষকে প্রতিটি বিরোধের, এমনকি অবৈধগুলিরও, প্রতিক্রিয়া জানাতে হবে, নতুবা তাদের তহবিল হারানোর ঝুঁকি থাকে। একজন দূষিত অংশগ্রহণকারী বারবার অনচেইনে বাসি স্টেট ট্রানজিশন পোস্ট করার সিদ্ধান্ত নিতে পারে, যা সৎ পক্ষকে বৈধ স্টেট দিয়ে প্রতিক্রিয়া জানাতে বাধ্য করে। সেই অনচেইন লেনদেনগুলির খরচ দ্রুত বাড়তে পারে, যার ফলে সৎ দলগুলি প্রক্রিয়ায় হেরে যায়।
+ফ্রড প্রুভিং গ্রিফিং অ্যাটাকের জন্য সংবেদনশীল কারণ সৎ পক্ষকে প্রতিটি বিরোধের জবাব দিতে হবে, এমনকি অবৈধগুলোরও, নতুবা তাদের ফান্ড হারানোর ঝুঁকি থাকে। একজন ক্ষতিকারক অংশগ্রহণকারী বারবার অনচেইনে পুরোনো স্টেট ট্রানজিশন পোস্ট করার সিদ্ধান্ত নিতে পারে, যা সৎ পক্ষকে বৈধ স্টেটের সাথে সাড়া দিতে বাধ্য করে। সেই অনচেইন লেনদেনগুলোর খরচ দ্রুত বাড়তে পারে, যার ফলে সৎ পক্ষগুলো এই প্রক্রিয়ায় ক্ষতিগ্রস্ত হয়।
### পূর্বনির্ধারিত অংশগ্রহণকারী সেট {#predefined-participant-sets}
-ডিজাইন অনুসারে, একটি স্টেট চ্যানেল গঠনকারী অংশগ্রহণকারীদের সংখ্যা তার জীবনকাল জুড়ে স্থির থাকে। এর কারণ হল অংশগ্রহণকারী সেট আপডেট করা চ্যানেলের ক্রিয়াকলাপকে জটিল করে তুলবে, বিশেষ করে চ্যানেল ফান্ডিং বা বিরোধ নিষ্পত্তি করার সময়। অংশগ্রহণকারী যোগ বা অপসারণের জন্য অতিরিক্ত অনচেইন কার্যকলাপের প্রয়োজন হবে, যা ব্যবহারকারীদের জন্য ওভারহেড বাড়ায়।
+ডিজাইন অনুযায়ী, একটি স্টেট চ্যানেল গঠনকারী অংশগ্রহণকারীদের সংখ্যা এর জীবনকাল জুড়ে নির্দিষ্ট থাকে। এর কারণ হলো অংশগ্রহণকারী সেট আপডেট করা চ্যানেলের কাজকে জটিল করে তুলবে, বিশেষ করে যখন চ্যানেলে ফান্ড দেওয়া হয় বা বিরোধ নিষ্পত্তি করা হয়। অংশগ্রহণকারীদের যোগ করা বা অপসারণ করার জন্যও অতিরিক্ত অনচেইন কার্যকলাপের প্রয়োজন হবে, যা ব্যবহারকারীদের জন্য ওভারহেড বাড়ায়।
-যদিও এটি স্টেট চ্যানেলগুলিকে যুক্তিযুক্ত করা সহজ করে তোলে, এটি অ্যাপ্লিকেশন ডেভেলপারদের জন্য চ্যানেল ডিজাইনের উপযোগিতা সীমাবদ্ধ করে। এটি আংশিকভাবে ব্যাখ্যা করে কেন রোলআপগুলির মতো অন্যান্য স্কেলিং সমাধানগুলির পক্ষে স্টেট চ্যানেলগুলি বাদ দেওয়া হয়েছে।
+যদিও এটি স্টেট চ্যানেলগুলোকে বোঝা সহজ করে তোলে, এটি অ্যাপ্লিকেশন ডেভেলপারদের কাছে চ্যানেল ডিজাইনের উপযোগিতা সীমিত করে। এটি আংশিকভাবে ব্যাখ্যা করে কেন স্টেট চ্যানেলগুলোকে অন্যান্য স্কেলিং সমাধান, যেমন রেলআপস-এর পক্ষে বাদ দেওয়া হয়েছে।
-### সমান্তরাল লেনদেন প্রক্রিয়াকরণ {#parallel-transaction-processing}
+### সমান্তরাল লেনদেন প্রক্রিয়াকরণ {#parallel-transaction-processing}
-স্টেট চ্যানেলের অংশগ্রহণকারীরা পালাক্রমে স্টেট আপডেট পাঠায়, যে কারণে তারা "টার্ন-ভিত্তিক অ্যাপ্লিকেশন" (যেমন, একটি দুই-খেলোয়াড়ের দাবা খেলা) এর জন্য সবচেয়ে ভালো কাজ করে। এটি একযোগে স্টেট আপডেটগুলি পরিচালনা করার প্রয়োজনীয়তা দূর করে এবং বাসি আপডেট পোস্টারদের শাস্তি দেওয়ার জন্য অনচেইন চুক্তির কাজ কমিয়ে দেয়। যাইহোক, এই ডিজাইনের একটি পার্শ্ব-প্রতিক্রিয়া হল যে লেনদেনগুলি একে অপরের উপর নির্ভরশীল, যা লেটেন্সি বাড়ায় এবং সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা হ্রাস করে।
+স্টেট চ্যানেলে অংশগ্রহণকারীরা পালাক্রমে স্টেট আপডেট পাঠায়, যে কারণে এগুলো "টার্ন-ভিত্তিক অ্যাপ্লিকেশন" (যেমন, দুই-খেলোয়াড়ের দাবা খেলা)-এর জন্য সবচেয়ে ভালো কাজ করে। এটি যুগপৎ স্টেট আপডেটগুলো পরিচালনা করার প্রয়োজনীয়তা দূর করে এবং পুরোনো আপডেট পোস্টারদের শাস্তি দেওয়ার জন্য অনচেইন কন্ট্রাক্ট-এর কাজ কমায়। যাইহোক, এই ডিজাইনের একটি পার্শ্ব-প্রতিক্রিয়া হলো লেনদেনগুলো একে অপরের উপর নির্ভরশীল, যা ল্যাটেন্সি বাড়ায় এবং সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা হ্রাস করে।
-কিছু স্টেট চ্যানেল এই সমস্যার সমাধান করে একটি "ফুল-ডুপ্লেক্স" ডিজাইন ব্যবহার করে যা অফচেইন স্টেটকে দুটি একমুখী "সিমপ্লেক্স" স্টেটে বিভক্ত করে, যা একযোগে স্টেট আপডেটের অনুমতি দেয়। এই ধরনের ডিজাইনগুলি অফচেইন থ্রুপুট উন্নত করে এবং লেনদেনের বিলম্ব কমায়।
+কিছু স্টেট চ্যানেল একটি "ফুল-ডুপ্লেক্স" ডিজাইন ব্যবহার করে এই সমস্যার সমাধান করে যা অফচেইন স্টেটকে দুটি একমুখী "সিমপ্লেক্স" স্টেটে আলাদা করে, যা সমসাময়িক স্টেট আপডেটের সুযোগ দেয়। এই ধরনের ডিজাইনগুলো অফচেইন থ্রুপুট উন্নত করে এবং লেনদেনের বিলম্ব কমায়।
## স্টেট চ্যানেল ব্যবহার করুন {#use-state-channels}
-একাধিক প্রকল্প স্টেট চ্যানেলগুলির বাস্তবায়ন সরবরাহ করে যা আপনি আপনার ডিএ্যাপস-এ একীভূত করতে পারেন:
+একাধিক প্রজেক্ট স্টেট চ্যানেলগুলোর ইমপ্লিমেন্টেশন প্রদান করে যা আপনি আপনার ডিএ্যাপস-এ ইন্টিগ্রেট করতে পারেন:
- [Connext](https://connext.network/)
- [Kchannels](https://www.kchannels.io/)
@@ -249,13 +249,13 @@ sidebarDepth: 3
- [Raiden](https://raiden.network/)
- [Statechannels.org](https://statechannels.org/)
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
**স্টেট চ্যানেল**
-- [Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– Josh Stark, Feb 12 2018_
-- [State Channels - an explanation](https://www.jeffcoleman.ca/state-channels/) _Nov 6, 2015 - Jeff Coleman_
+- [Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– জশ স্টার্ক, ১২ ফেব্রুয়ারি ২০১৮_
+- [State Channels - an explanation](https://www.jeffcoleman.ca/state-channels/) _৬ নভেম্বর ২০১৫ - জেফ কোলম্যান_
- [Basics of State Channels](https://unlock-protocol.github.io/ethhub/ethereum-roadmap/layer-2-scaling/state-channels/) _District0x_
- [Blockchain State Channels: A State of the Art](https://ieeexplore.ieee.org/document/9627997)
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/scaling/validium/index.md b/public/content/translations/bn/developers/docs/scaling/validium/index.md
index 0ea343bbf0b..943f12a5023 100644
--- a/public/content/translations/bn/developers/docs/scaling/validium/index.md
+++ b/public/content/translations/bn/developers/docs/scaling/validium/index.md
@@ -1,166 +1,165 @@
---
-title: "ভ্যালিডিয়াম"
-description: "বর্তমানে Ethereum কমিউনিটি দ্বারা ব্যবহৃত একটি স্কেলিং সমাধান হিসাবে ভ্যালিডিয়ামের একটি পরিচিতি।"
+title: ভ্যালিডিয়াম (Validium)
+description: ইথিরিয়াম কমিউনিটি দ্বারা বর্তমানে ব্যবহৃত একটি স্কেলিং সলিউশন হিসেবে ভ্যালিডিয়ামের পরিচিতি।
lang: bn
sidebarDepth: 3
---
-ভ্যালিডিয়াম একটি [স্কেলিং সমাধান](/developers/docs/scaling/) যা [ZK-রোলআপস](/developers/docs/scaling/zk-rollups/)-এর মতো বৈধতা প্রমাণ ব্যবহার করে লেনদেনের অখণ্ডতা প্রয়োগ করে, কিন্তু Ethereum মেইননেটে লেনদেনের ডেটা সংরক্ষণ করে না। যদিও অফচেইন ডেটা প্রাপ্যতা ট্রেড-অফ প্রবর্তন করে, এটি স্কেলেবিলিটিতে ব্যাপক উন্নতির কারণ হতে পারে (ভ্যালিডিয়াম প্রতি সেকেন্ডে [~9,000 লেনদেন, বা তার বেশি](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263) প্রক্রিয়া করতে পারে)।
+ভ্যালিডিয়াম হলো একটি [স্কেলিং](/developers/docs/scaling/) সলিউশন যা [ZK-rollups](/developers/docs/scaling/zk-rollups/)-এর মতো ভ্যালিডিটি প্রুফ ব্যবহার করে লেনদেন-এর অখণ্ডতা নিশ্চিত করে, কিন্তু [Ethereum](/) মেইননেট-এ লেনদেন ডাটা সংরক্ষণ করে না। যদিও অফচেইন ডাটা এভেইলএবিলিটি কিছু আপস (trade-offs) তৈরি করে, এটি স্কেলিং-এ ব্যাপক উন্নতি আনতে পারে (ভ্যালিডিয়াম প্রতি সেকেন্ডে [~9,000 বা তার বেশি লেনদেন](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263) প্রসেস করতে পারে)।
## পূর্বশর্ত {#prerequisites}
-আপনার [Ethereum স্কেলিং](/developers/docs/scaling/) এবং [লেয়ার 2](/layer-2) সম্পর্কিত আমাদের পৃষ্ঠাটি পড়া এবং বোঝা উচিত।
+আপনার আমাদের [ইথিরিয়াম স্কেলিং](/developers/docs/scaling/) এবং [লেয়ার ২](/layer-2) পেজটি পড়া এবং বোঝা উচিত।
-## ভ্যালিডিয়াম কি? {#what-is-validium}
+## ভ্যালিডিয়াম কী? {#what-is-validium}
-ভ্যালিডিয়াম হল স্কেলিং সমাধান যা Ethereum মেইননেটের বাইরে লেনদেন প্রক্রিয়া করে থ্রুপুট উন্নত করার জন্য ডিজাইন করা অফচেইন ডেটা প্রাপ্যতা এবং গণনা ব্যবহার করে। জিরো-নলেজ রোলআপ (ZK-রোলআপ) এর মতো, ভ্যালিডিয়াম Ethereum-এ অফচেইন লেনদেন যাচাই করতে [জিরো-নলেজ প্রমাণ](/glossary/#zk-proof) প্রকাশ করে। এটি অবৈধ স্টেট ট্রানজিশন প্রতিরোধ করে এবং একটি ভ্যালিডিয়াম চেইনের নিরাপত্তা গ্যারান্টি বাড়ায়।
+ভ্যালিডিয়াম হলো এমন স্কেলিং সলিউশন যা অফচেইন ডাটা এভেইলএবিলিটি এবং কম্পিউটেশন ব্যবহার করে ইথিরিয়াম মেইননেট-এর বাইরে লেনদেন প্রসেস করার মাধ্যমে থ্রুপুট উন্নত করার জন্য ডিজাইন করা হয়েছে। জিরো-নলেজ রোলআপ (ZK-rollups)-এর মতো, ভ্যালিডিয়াম ইথিরিয়ামে অফচেইন লেনদেন যাচাই করার জন্য [জিরো-নলেজ প্রুফ](/glossary/#zk-proof) প্রকাশ করে। এটি অবৈধ স্টেট ট্রানজিশন প্রতিরোধ করে এবং একটি ভ্যালিডিয়াম চেইনের নিরাপত্তা গ্যারান্টি বাড়ায়।
-এই "বৈধতা প্রমাণ" গুলি ZK-SNARKs (জিরো-নলেজ সাক্সিন্ট নন-ইন্টারেক্টিভ আর্গুমেন্ট অফ নলেজ) বা ZK-STARKs (জিরো-নলেজ স্কেলেবল ট্রান্সপারেন্ট আর্গুমেন্ট অফ নলেজ) আকারে আসতে পারে। [জিরো-নলেজ প্রমাণ](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) সম্পর্কে আরও জানুন।
+এই "ভ্যালিডিটি প্রুফ" গুলো ZK-SNARKs (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) বা ZK-STARKs (Zero-Knowledge Scalable Transparent ARgument of Knowledge) আকারে আসতে পারে। [জিরো-নলেজ প্রুফ](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) সম্পর্কে আরও জানুন।
-ভ্যালিডিয়াম ব্যবহারকারীদের তহবিল Ethereum-এর একটি স্মার্ট কন্ট্র্যাক্ট দ্বারা নিয়ন্ত্রিত হয়। ভ্যালিডিয়ামগুলি প্রায়-তাত্ক্ষণিক উত্তোলন অফার করে, অনেকটা ZK-রোলআপগুলির মতোই; একবার মেইননেটে একটি উত্তোলনের অনুরোধের জন্য বৈধতা প্রমাণ যাচাই হয়ে গেলে, ব্যবহারকারীরা [মার্কেল প্রমাণ](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) প্রদান করে তহবিল উত্তোলন করতে পারেন। মার্কেল প্রমাণ একটি যাচাইকৃত লেনদেন ব্যাচে ব্যবহারকারীর উত্তোলন লেনদেনের অন্তর্ভুক্তিকে যাচাই করে, যা অনচেইন কন্ট্র্যাক্টকে উত্তোলন প্রক্রিয়া করার অনুমতি দেয়।
+ভ্যালিডিয়াম ব্যবহারকারীদের ফান্ড ইথিরিয়ামের একটি স্মার্ট কন্ট্রাক্ট দ্বারা নিয়ন্ত্রিত হয়। ভ্যালিডিয়াম ZK-rollups-এর মতোই প্রায়-তাৎক্ষণিক উত্তোলনের সুবিধা দেয়; মেইননেট-এ উত্তোলনের অনুরোধের জন্য ভ্যালিডিটি প্রুফ যাচাই হয়ে গেলে, ব্যবহারকারীরা [মার্কেল প্রুফ (Merkle proofs)](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) প্রদান করে ফান্ড উত্তোলন করতে পারেন। মার্কেল প্রুফ একটি যাচাইকৃত লেনদেন ব্যাচে ব্যবহারকারীর উত্তোলনের লেনদেন অন্তর্ভুক্তির বিষয়টি যাচাই করে, যা অনচেইন কন্ট্রাক্টকে উত্তোলন প্রসেস করার অনুমতি দেয়।
-যাইহোক, ভ্যালিডিয়াম ব্যবহারকারীদের তহবিল ফ্রিজ করা এবং উত্তোলন সীমাবদ্ধ করা যেতে পারে। এটি ঘটতে পারে যদি ভ্যালিডিয়াম চেইনের ডেটা প্রাপ্যতা পরিচালকরা ব্যবহারকারীদের থেকে অফচেইন স্টেট ডেটা আটকে রাখে। লেনদেনের ডেটাতে অ্যাক্সেস ছাড়া, ব্যবহারকারীরা তহবিলের মালিকানা প্রমাণ করতে এবং উত্তোলন কার্যকর করার জন্য প্রয়োজনীয় মার্কেল প্রমাণ গণনা করতে পারে না।
+তবে, ভ্যালিডিয়াম ব্যবহারকারীদের ফান্ড ফ্রিজ হয়ে যেতে পারে এবং উত্তোলন সীমিত হতে পারে। এটি ঘটতে পারে যদি ভ্যালিডিয়াম চেইনের ডাটা এভেইলএবিলিটি ম্যানেজাররা ব্যবহারকারীদের কাছ থেকে অফচেইন স্টেট ডাটা আটকে রাখে। লেনদেন ডাটায় অ্যাক্সেস ছাড়া, ব্যবহারকারীরা ফান্ডের মালিকানা প্রমাণ করতে এবং উত্তোলন কার্যকর করতে প্রয়োজনীয় মার্কেল প্রুফ গণনা করতে পারবেন না।
-এটি ভ্যালিডিয়াম এবং ZK-রোলআপগুলির মধ্যে প্রধান পার্থক্য—ডেটা প্রাপ্যতা স্পেকট্রামে তাদের অবস্থান। উভয় সমাধানই ডেটা স্টোরেজকে ভিন্নভাবে দেখে, যা নিরাপত্তা এবং বিশ্বাসহীনতার জন্য প্রভাব ফেলে।
+এটিই ভ্যালিডিয়াম এবং ZK-rollups-এর মধ্যে প্রধান পার্থক্য—ডাটা এভেইলএবিলিটি স্পেকট্রামে তাদের অবস্থান। উভয় সলিউশন ডাটা স্টোরেজের ক্ষেত্রে ভিন্নভাবে কাজ করে, যার প্রভাব নিরাপত্তা এবং ট্রাস্টলেসনেসের (trustlessness) ওপর পড়ে।
-## ভ্যালিডিয়ামগুলি কীভাবে Ethereum-এর সাথে ইন্টারঅ্যাক্ট করে? {#how-do-validiums-interact-with-ethereum}
+## ভ্যালিডিয়াম কীভাবে ইথিরিয়ামের সাথে কাজ করে? {#how-do-validiums-interact-with-ethereum}
-ভ্যালিডিয়াম হল স্কেলিং প্রোটোকল যা বিদ্যমান Ethereum চেইনের উপরে তৈরি করা হয়েছে। যদিও এটি অফচেইন লেনদেন সম্পাদন করে, একটি ভ্যালিডিয়াম চেইন মেইননেটে স্থাপন করা স্মার্ট কন্ট্র্যাক্টের একটি সংগ্রহ দ্বারা পরিচালিত হয় যার মধ্যে রয়েছে:
+ভ্যালিডিয়াম হলো বিদ্যমান ইথিরিয়াম চেইনের ওপর তৈরি স্কেলিং প্রটোকল। যদিও এটি অফচেইন লেনদেন সম্পাদন করে, একটি ভ্যালিডিয়াম চেইন মেইননেট-এ ডিপ্লয় করা স্মার্ট কন্ট্রাক্ট-এর একটি সংগ্রহ দ্বারা পরিচালিত হয়, যার মধ্যে রয়েছে:
-1. **যাচাইকারী চুক্তি**: যাচাইকারী চুক্তি স্টেট আপডেট করার সময় ভ্যালিডিয়াম অপারেটর দ্বারা জমা দেওয়া প্রুফের বৈধতা যাচাই করে। এর মধ্যে রয়েছে অফচেইন লেনদেনের সঠিকতার প্রত্যয়নকারী বৈধতা প্রমাণ এবং অফচেইন লেনদেন ডেটার অস্তিত্ব যাচাইকারী ডেটা প্রাপ্যতা প্রমাণ।
+1. **ভেরিফায়ার কন্ট্রাক্ট (Verifier contract)**: ভেরিফায়ার কন্ট্রাক্ট স্টেট আপডেট করার সময় ভ্যালিডিয়াম অপারেটর দ্বারা জমা দেওয়া প্রুফগুলোর বৈধতা যাচাই করে। এর মধ্যে রয়েছে অফচেইন লেনদেন-এর সঠিকতা প্রমাণকারী ভ্যালিডিটি প্রুফ এবং অফচেইন লেনদেন ডাটার অস্তিত্ব যাচাইকারী ডাটা এভেইলএবিলিটি প্রুফ।
-2. **প্রধান চুক্তি**: প্রধান চুক্তি ব্লক প্রযোজকদের দ্বারা জমা দেওয়া স্টেট প্রতিশ্রুতি (মার্কেল রুট) সংরক্ষণ করে এবং একবার অনচেইনে একটি বৈধতা প্রমাণ যাচাই হয়ে গেলে ভ্যালিডিয়ামের স্টেট আপডেট করে। এই চুক্তিটি ভ্যালিডিয়াম চেইনে জমা এবং উত্তোলন প্রক্রিয়াও করে।
+2. **মেইন কন্ট্রাক্ট (Main contract)**: মেইন কন্ট্রাক্ট ব্লক প্রডিউসারদের জমা দেওয়া স্টেট কমিটমেন্ট (মার্কেল রুট) সংরক্ষণ করে এবং অনচেইন-এ একটি ভ্যালিডিটি প্রুফ যাচাই হওয়ার পর ভ্যালিডিয়ামের স্টেট আপডেট করে। এই কন্ট্রাক্ট ভ্যালিডিয়াম চেইনে ডিপোজিট এবং উত্তোলনও প্রসেস করে।
-ভ্যালিডিয়ামগুলি নিম্নলিখিতগুলির জন্য প্রধান Ethereum চেইনের উপরও নির্ভর করে:
+ভ্যালিডিয়াম নিচের বিষয়গুলোর জন্যও মূল ইথিরিয়াম চেইনের ওপর নির্ভর করে:
-### নিষ্পত্তি {#settlement}
+### সেটেলমেন্ট {#settlement}
-একটি ভ্যালিডিয়ামে সম্পাদিত লেনদেনগুলি সম্পূর্ণরূপে নিশ্চিত করা যায় না যতক্ষণ না মূল চেইন তাদের বৈধতা যাচাই করে। একটি ভ্যালিডিয়ামে পরিচালিত সমস্ত কাজ অবশেষে মেইননেটে নিষ্পত্তি করতে হবে। Ethereum ব্লকচেইন ভ্যালিডিয়াম ব্যবহারকারীদের জন্য "নিষ্পত্তি গ্যারান্টি" প্রদান করে, যার অর্থ অফচেইন লেনদেনগুলি একবার অনচেইনে প্রতিশ্রুতিবদ্ধ হলে বিপরীত বা পরিবর্তন করা যায় না।
+ভ্যালিডিয়ামে সম্পাদিত লেনদেন ততক্ষণ পর্যন্ত সম্পূর্ণ নিশ্চিত করা যায় না যতক্ষণ না প্যারেন্ট চেইন তাদের বৈধতা যাচাই করে। ভ্যালিডিয়ামে পরিচালিত সমস্ত কাজ শেষ পর্যন্ত মেইননেট-এ সেটেল হতে হবে। ইথিরিয়াম ব্লকচেইন ভ্যালিডিয়াম ব্যবহারকারীদের জন্য "সেটেলমেন্ট গ্যারান্টি" প্রদান করে, যার অর্থ হলো একবার অনচেইন-এ কমিট করা হলে অফচেইন লেনদেন আর পরিবর্তন বা বাতিল করা যায় না।
### নিরাপত্তা {#security}
-Ethereum, একটি নিষ্পত্তি স্তর হিসাবে কাজ করে, ভ্যালিডিয়ামে স্টেট ট্রানজিশনের বৈধতার নিশ্চয়তা দেয়। ভ্যালিডিয়াম চেইনে সম্পাদিত অফচেইন লেনদেনগুলি বেস Ethereum লেয়ারের একটি স্মার্ট কন্ট্র্যাক্টের মাধ্যমে যাচাই করা হয়।
+ইথিরিয়াম, একটি সেটেলমেন্ট লেয়ার হিসেবে কাজ করে, ভ্যালিডিয়ামে স্টেট ট্রানজিশনের বৈধতারও গ্যারান্টি দেয়। ভ্যালিডিয়াম চেইনে সম্পাদিত অফচেইন লেনদেন বেস ইথিরিয়াম লেয়ারে একটি স্মার্ট কন্ট্রাক্ট-এর মাধ্যমে যাচাই করা হয়।
-যদি অনচেইন যাচাইকারী চুক্তি প্রমাণটিকে অবৈধ মনে করে, তবে লেনদেনগুলি প্রত্যাখ্যান করা হয়। এর মানে হল যে অপারেটরদের ভ্যালিডিয়ামের স্টেট আপডেট করার আগে Ethereum প্রোটোকল দ্বারা প্রয়োগ করা বৈধতার শর্তাবলী পূরণ করতে হবে।
+যদি অনচেইন ভেরিফায়ার কন্ট্রাক্ট প্রুফটিকে অবৈধ মনে করে, তবে লেনদেন বাতিল করা হয়। এর মানে হলো ভ্যালিডিয়ামের স্টেট আপডেট করার আগে অপারেটরদের অবশ্যই ইথিরিয়াম প্রটোকল দ্বারা প্রয়োগ করা বৈধতার শর্ত পূরণ করতে হবে।
-## ভ্যালিডিয়াম কিভাবে কাজ করে? {#how-does-validium-work}
+## ভ্যালিডিয়াম কীভাবে কাজ করে? {#how-does-validium-work}
### লেনদেন {#transactions}
-ব্যবহারকারীরা অপারেটরের কাছে লেনদেন জমা দেয়, একটি নোড যা ভ্যালিডিয়াম চেইনে লেনদেন সম্পাদনের জন্য দায়ী। কিছু ভ্যালিডিয়াম চেইন চালানোর জন্য একজন একক অপারেটর ব্যবহার করতে পারে বা অপারেটরদের ঘোরানোর জন্য একটি [প্রুফ-অফ-স্টেক (PoS)](/developers/docs/consensus-mechanisms/pos/) ব্যবস্থার উপর নির্ভর করতে পারে।
+ব্যবহারকারীরা অপারেটরের কাছে লেনদেন জমা দেয়, যা ভ্যালিডিয়াম চেইনে লেনদেন সম্পাদনের জন্য দায়ী একটি নোড। কিছু ভ্যালিডিয়াম চেইন চালানোর জন্য একক অপারেটর ব্যবহার করতে পারে অথবা অপারেটরদের রোটেট করার জন্য একটি [প্রুফ-অফ-স্টেক (PoS)](/developers/docs/consensus-mechanisms/pos/) কনসেন্সাস মেকানিজম-এর ওপর নির্ভর করতে পারে।
-অপারেটর লেনদেনগুলিকে একটি ব্যাচে একত্রিত করে এবং প্রমাণের জন্য একটি প্রমাণ সার্কিটে পাঠায়। প্রমাণ সার্কিট লেনদেন ব্যাচ (এবং অন্যান্য প্রাসঙ্গিক ডেটা) ইনপুট হিসাবে গ্রহণ করে এবং অপারেশনগুলি সঠিকভাবে সঞ্চালিত হয়েছে তা যাচাই করে একটি বৈধতা প্রমাণ আউটপুট করে।
+অপারেটর লেনদেনগুলোকে একটি ব্যাচে একত্রিত করে এবং প্রমাণের জন্য একটি প্রুভিং সার্কিটে পাঠায়। প্রুভিং সার্কিট লেনদেন ব্যাচ (এবং অন্যান্য প্রাসঙ্গিক ডাটা) ইনপুট হিসেবে গ্রহণ করে এবং একটি ভ্যালিডিটি প্রুফ আউটপুট দেয় যা যাচাই করে যে অপারেশনগুলো সঠিকভাবে সম্পন্ন হয়েছে।
### স্টেট কমিটমেন্ট {#state-commitments}
-ভ্যালিডিয়ামের স্টেটকে একটি মার্কেল ট্রি হিসাবে হ্যাশ করা হয় যার রুট Ethereum-এর প্রধান চুক্তিতে সংরক্ষণ করা হয়। মার্কেল রুট, যা স্টেট রুট নামেও পরিচিত, ভ্যালিডিয়ামের অ্যাকাউন্ট এবং ব্যালেন্সের বর্তমান স্টেটের প্রতি একটি ক্রিপ্টোগ্রাফিক প্রতিশ্রুতি হিসাবে কাজ করে।
+ভ্যালিডিয়ামের স্টেট একটি মার্কেল ট্রি হিসেবে হ্যাশ করা হয় যার রুট ইথিরিয়ামের মেইন কন্ট্রাক্ট-এ সংরক্ষিত থাকে। মার্কেল রুট, যা স্টেট রুট নামেও পরিচিত, ভ্যালিডিয়ামে একাউন্ট এবং ব্যালেন্সের বর্তমান স্টেট-এর প্রতি একটি ক্রিপ্টোগ্রাফিক কমিটমেন্ট হিসেবে কাজ করে।
-একটি স্টেট আপডেট করার জন্য, অপারেটরকে একটি নতুন স্টেট রুট গণনা করতে হবে (লেনদেন সম্পাদনের পরে) এবং এটি অনচেইন চুক্তিতে জমা দিতে হবে। যদি বৈধতা প্রমাণটি সঠিক হয়, প্রস্তাবিত স্টেটটি গৃহীত হয় এবং ভ্যালিডিয়াম নতুন স্টেট রুটে চলে যায়।
+একটি স্টেট আপডেট করার জন্য, অপারেটরকে অবশ্যই একটি নতুন স্টেট রুট গণনা করতে হবে (লেনদেন সম্পাদনের পরে) এবং এটি অনচেইন কন্ট্রাক্ট-এ জমা দিতে হবে। যদি ভ্যালিডিটি প্রুফ সঠিক প্রমাণিত হয়, প্রস্তাবিত স্টেট গৃহীত হয় এবং ভ্যালিডিয়াম নতুন স্টেট রুটে চলে যায়।
-### আমানত এবং উত্তোলন {#deposits-and-withdrawals}
+### ডিপোজিট এবং উত্তোলন {#deposits-and-withdrawals}
-ব্যবহারকারীরা অনচেইন চুক্তিতে ETH (বা যেকোনো ERC-সামঞ্জস্যপূর্ণ টোকেন) জমা করে Ethereum থেকে একটি ভ্যালিডিয়ামে তহবিল স্থানান্তর করে। চুক্তিটি ভ্যালিডিয়াম অফচেইনে ডিপোজিট ইভেন্টটি রিলে করে, যেখানে ব্যবহারকারীর ঠিকানা তাদের জমার সমান পরিমাণ দিয়ে ক্রেডিট করা হয়। অপারেটর এই ডিপোজিট লেনদেনটিকে একটি নতুন ব্যাচেও অন্তর্ভুক্ত করে।
+ব্যবহারকারীরা অনচেইন কন্ট্রাক্ট-এ ETH (বা যেকোনো ERC-সামঞ্জস্যপূর্ণ টোকেন) জমা দিয়ে ইথিরিয়াম থেকে ভ্যালিডিয়ামে ফান্ড স্থানান্তর করে। কন্ট্রাক্টটি ডিপোজিট ইভেন্টটিকে ভ্যালিডিয়াম অফচেইন-এ রিলে করে, যেখানে ব্যবহারকারীর এডড্রেস-এ তাদের জমার সমপরিমাণ অর্থ ক্রেডিট করা হয়। অপারেটর এই ডিপোজিট লেনদেনটিকে একটি নতুন ব্যাচেও অন্তর্ভুক্ত করে।
-মেইননেটে তহবিল ফেরত পাঠানোর জন্য, একজন ভ্যালিডিয়াম ব্যবহারকারী একটি উত্তোলন লেনদেন শুরু করে এবং এটি অপারেটরের কাছে জমা দেয় যিনি উত্তোলনের অনুরোধটি যাচাই করেন এবং এটিকে একটি ব্যাচে অন্তর্ভুক্ত করেন। সিস্টেম থেকে বের হওয়ার আগে ভ্যালিডিয়াম চেইনে ব্যবহারকারীর সম্পদও ধ্বংস হয়ে যায়। ব্যাচের সাথে যুক্ত বৈধতা প্রমাণ যাচাই হয়ে গেলে, ব্যবহারকারী তাদের প্রাথমিক জমার অবশিষ্টাংশ উত্তোলন করতে প্রধান চুক্তিকে কল করতে পারেন।
+মেইননেট-এ ফান্ড ফেরত নেওয়ার জন্য, একজন ভ্যালিডিয়াম ব্যবহারকারী একটি উত্তোলনের লেনদেন শুরু করেন এবং এটি অপারেটরের কাছে জমা দেন, যিনি উত্তোলনের অনুরোধটি যাচাই করেন এবং এটিকে একটি ব্যাচে অন্তর্ভুক্ত করেন। সিস্টেম থেকে বের হওয়ার আগে ভ্যালিডিয়াম চেইনে ব্যবহারকারীর সম্পদগুলোও ধ্বংস করা হয়। ব্যাচের সাথে যুক্ত ভ্যালিডিটি প্রুফ যাচাই হয়ে গেলে, ব্যবহারকারী তাদের প্রাথমিক জমার অবশিষ্ট অংশ উত্তোলনের জন্য মেইন কন্ট্রাক্ট কল করতে পারেন।
-একটি সেন্সরশিপ-বিরোধী ব্যবস্থা হিসাবে, ভ্যালিডিয়াম প্রোটোকল ব্যবহারকারীদের অপারেটরের মাধ্যমে না গিয়ে সরাসরি ভ্যালিডিয়াম চুক্তি থেকে উত্তোলন করার অনুমতি দেয়। এই ক্ষেত্রে, ব্যবহারকারীদের যাচাইকারী চুক্তিতে একটি মার্কেল প্রমাণ প্রদান করতে হবে যা স্টেট রুটে একটি অ্যাকাউন্টের অন্তর্ভুক্তি দেখায়। যদি প্রমাণটি গৃহীত হয়, ব্যবহারকারী ভ্যালিডিয়াম থেকে তাদের তহবিল বের করার জন্য প্রধান চুক্তির উত্তোলন ফাংশনকে কল করতে পারে।
+একটি অ্যান্টি-সেন্সরশিপ মেকানিজম হিসেবে, ভ্যালিডিয়াম প্রটোকল ব্যবহারকারীদের অপারেটরের মাধ্যমে না গিয়ে সরাসরি ভ্যালিডিয়াম কন্ট্রাক্ট থেকে উত্তোলনের অনুমতি দেয়। এই ক্ষেত্রে, ব্যবহারকারীদের ভেরিফায়ার কন্ট্রাক্ট-এ একটি মার্কেল প্রুফ প্রদান করতে হবে যা স্টেট রুটে একটি একাউন্ট-এর অন্তর্ভুক্তি দেখায়। যদি প্রুফটি গৃহীত হয়, ব্যবহারকারী ভ্যালিডিয়াম থেকে তাদের ফান্ড বের করার জন্য মেইন কন্ট্রাক্ট-এর উত্তোলন ফাংশন কল করতে পারেন।
-### ব্যাচ জমা {#batch-submission}
+### ব্যাচ জমা দেওয়া {#batch-submission}
-এক ব্যাচ লেনদেন সম্পাদন করার পরে, অপারেটর সংশ্লিষ্ট বৈধতা প্রমাণটি যাচাইকারী চুক্তিতে জমা দেয় এবং প্রধান চুক্তিতে একটি নতুন স্টেট রুটের প্রস্তাব দেয়। যদি প্রমাণটি বৈধ হয়, প্রধান চুক্তিটি ভ্যালিডিয়ামের স্টেট আপডেট করে এবং ব্যাচের লেনদেনের ফলাফল চূড়ান্ত করে।
+এক ব্যাচ লেনদেন সম্পাদনের পর, অপারেটর সংশ্লিষ্ট ভ্যালিডিটি প্রুফ ভেরিফায়ার কন্ট্রাক্ট-এ জমা দেয় এবং মেইন কন্ট্রাক্ট-এ একটি নতুন স্টেট রুট প্রস্তাব করে। যদি প্রুফটি বৈধ হয়, মেইন কন্ট্রাক্ট ভ্যালিডিয়ামের স্টেট আপডেট করে এবং ব্যাচের লেনদেন-এর ফলাফল চূড়ান্ত করে।
-একটি ZK-রোলআপের বিপরীতে, একটি ভ্যালিডিয়ামের ব্লক প্রযোজকদের লেনদেন ব্যাচের জন্য লেনদেন ডেটা প্রকাশ করার প্রয়োজন নেই (শুধুমাত্র ব্লক হেডার)। এটি ভ্যালিডিয়ামকে একটি সম্পূর্ণরূপে অফচেইন স্কেলিং প্রোটোকল করে তোলে, "হাইব্রিড" স্কেলিং প্রোটোকলের (অর্থাৎ, [লেয়ার 2](/layer-2/)) বিপরীতে যা ব্লব ডেটা, `calldata`, বা উভয়ের সংমিশ্রণ ব্যবহার করে প্রধান Ethereum চেইনে স্টেট ডেটা প্রকাশ করে।
+একটি ZK-রোলআপের বিপরীতে, ভ্যালিডিয়ামে ব্লক প্রডিউসারদের লেনদেন ব্যাচের জন্য লেনদেন ডাটা প্রকাশ করার প্রয়োজন হয় না (শুধুমাত্র ব্লক হেডার)। এটি ভ্যালিডিয়ামকে একটি সম্পূর্ণ অফচেইন স্কেলিং প্রটোকল করে তোলে, যা "হাইব্রিড" স্কেলিং প্রটোকলগুলোর (যেমন, [লেয়ার ২](/layer-2/)) বিপরীত, যেগুলো ব্লব ডাটা, `calldata`, বা উভয়ের সংমিশ্রণ ব্যবহার করে মূল ইথিরিয়াম চেইনে স্টেট ডাটা প্রকাশ করে।
-### ডেটা প্রাপ্যতা {#data-availability}
+### ডাটা এভেইলএবিলিটি {#data-availability}
-উল্লিখিত হিসাবে, ভ্যালিডিয়ামগুলি একটি অফচেইন ডেটা প্রাপ্যতা মডেল ব্যবহার করে, যেখানে অপারেটররা Ethereum মেইননেটের বাইরে সমস্ত লেনদেন ডেটা সংরক্ষণ করে। ভ্যালিডিয়ামের কম অনচেইন ডেটা ফুটপ্রিন্ট স্কেলেবিলিটি উন্নত করে (থ্রুপুট Ethereum-এর ডেটা প্রক্রিয়াকরণ ক্ষমতা দ্বারা সীমাবদ্ধ নয়) এবং ব্যবহারকারীর ফি হ্রাস করে (অনচেইনে ডেটা প্রকাশের খরচ কম)।
+যেমনটি উল্লেখ করা হয়েছে, ভ্যালিডিয়াম একটি অফচেইন ডাটা এভেইলএবিলিটি মডেল ব্যবহার করে, যেখানে অপারেটররা ইথিরিয়াম মেইননেট-এর বাইরে সমস্ত লেনদেন ডাটা সংরক্ষণ করে। ভ্যালিডিয়ামের কম অনচেইন ডাটা ফুটপ্রিন্ট স্কেলিং উন্নত করে (থ্রুপুট ইথিরিয়ামের ডাটা প্রসেসিং ক্ষমতা দ্বারা সীমাবদ্ধ নয়) এবং ব্যবহারকারীর ফি কমায় (অনচেইন-এ ডাটা প্রকাশের খরচ কম)।
-অফচেইন ডেটা প্রাপ্যতা, যাইহোক, একটি সমস্যা উপস্থাপন করে: মার্কেল প্রমাণ তৈরি বা যাচাই করার জন্য প্রয়োজনীয় ডেটা অনুপলব্ধ হতে পারে। এর মানে হল যে অপারেটররা দূষিতভাবে কাজ করলে ব্যবহারকারীরা অনচেইন চুক্তি থেকে তহবিল উত্তোলন করতে অক্ষম হতে পারে।
+তবে, অফচেইন ডাটা এভেইলএবিলিটি একটি সমস্যা তৈরি করে: মার্কেল প্রুফ তৈরি বা যাচাই করার জন্য প্রয়োজনীয় ডাটা অনুপলব্ধ হতে পারে। এর মানে হলো অপারেটররা যদি ক্ষতিকারক আচরণ করে তবে ব্যবহারকারীরা অনচেইন কন্ট্রাক্ট থেকে ফান্ড উত্তোলন করতে অক্ষম হতে পারেন।
-বিভিন্ন ভ্যালিডিয়াম সমাধান স্টেট ডেটার স্টোরেজকে বিকেন্দ্রীকরণ করে এই সমস্যার সমাধান করার চেষ্টা করে। এর মধ্যে ব্লক প্রযোজকদের অন্তর্নিহিত ডেটা "ডেটা প্রাপ্যতা ব্যবস্থাপকদের" কাছে পাঠাতে বাধ্য করা জড়িত যারা অফচেইন ডেটা সংরক্ষণ এবং অনুরোধে ব্যবহারকারীদের জন্য উপলব্ধ করার জন্য দায়ী।
+বিভিন্ন ভ্যালিডিয়াম সলিউশন স্টেট ডাটার স্টোরেজ ডিসেন্ট্রালাইজড করে এই সমস্যার সমাধান করার চেষ্টা করে। এর মধ্যে ব্লক প্রডিউসারদের অন্তর্নিহিত ডাটা "ডাটা এভেইলএবিলিটি ম্যানেজারদের" কাছে পাঠাতে বাধ্য করা অন্তর্ভুক্ত, যারা অফচেইন ডাটা সংরক্ষণ এবং অনুরোধের ভিত্তিতে ব্যবহারকারীদের কাছে এটি উপলব্ধ করার জন্য দায়ী।
-ভ্যালিডিয়ামে ডেটা প্রাপ্যতা পরিচালকরা প্রতিটি ভ্যালিডিয়াম ব্যাচে স্বাক্ষর করে অফচেইন লেনদেনের জন্য ডেটার প্রাপ্যতা প্রত্যয়ন করে। এই স্বাক্ষরগুলি "প্রাপ্যতা প্রমাণ" এর একটি রূপ গঠন করে যা অনচেইন যাচাইকারী চুক্তি স্টেট আপডেট অনুমোদন করার আগে পরীক্ষা করে।
+ভ্যালিডিয়ামে ডাটা এভেইলএবিলিটি ম্যানেজাররা প্রতিটি ভ্যালিডিয়াম ব্যাচে স্বাক্ষর করে অফচেইন লেনদেন-এর জন্য ডাটার উপলব্ধতা প্রত্যয়ন করে। এই স্বাক্ষরগুলো এক ধরণের "এভেইলএবিলিটি প্রুফ" গঠন করে যা অনচেইন ভেরিফায়ার কন্ট্রাক্ট স্টেট আপডেট অনুমোদন করার আগে পরীক্ষা করে।
-ভ্যালিডিয়াম ডেটা প্রাপ্যতা ব্যবস্থাপনার ক্ষেত্রে তাদের দৃষ্টিভঙ্গিতে ভিন্ন। কেউ কেউ স্টেট ডেটা সংরক্ষণ করার জন্য বিশ্বস্ত পক্ষের উপর নির্ভর করে, অন্যরা এই কাজের জন্য এলোমেলোভাবে নির্ধারিত যাচাইকারীদের ব্যবহার করে।
+ডাটা এভেইলএবিলিটি ম্যানেজমেন্টের ক্ষেত্রে ভ্যালিডিয়ামগুলোর পদ্ধতি ভিন্ন। কিছু স্টেট ডাটা সংরক্ষণের জন্য বিশ্বস্ত পক্ষের ওপর নির্ভর করে, আবার অন্যগুলো এই কাজের জন্য এলোমেলোভাবে নির্ধারিত ভ্যালিডেটরস ব্যবহার করে।
-#### ডেটা প্রাপ্যতা কমিটি (DAC) {#data-availability-committee}
+#### ডাটা এভেইলএবিলিটি কমিটি (DAC) {#data-availability-committee}
-অফচেইন ডেটার প্রাপ্যতা নিশ্চিত করতে, কিছু ভ্যালিডিয়াম সমাধান বিশ্বস্ত সত্তার একটি গ্রুপ নিয়োগ করে, যা সম্মিলিতভাবে ডেটা প্রাপ্যতা কমিটি (DAC) নামে পরিচিত, স্টেটের কপি সংরক্ষণ করতে এবং ডেটা প্রাপ্যতার প্রমাণ সরবরাহ করতে। DAC প্রয়োগ করা সহজ এবং কম সমন্বয়ের প্রয়োজন কারণ সদস্যপদ কম।
+অফচেইন ডাটার উপলব্ধতা নিশ্চিত করতে, কিছু ভ্যালিডিয়াম সলিউশন বিশ্বস্ত সত্তার একটি গ্রুপ নিয়োগ করে, যা সম্মিলিতভাবে ডাটা এভেইলএবিলিটি কমিটি (DAC) নামে পরিচিত, স্টেটের কপি সংরক্ষণ করতে এবং ডাটা এভেইলএবিলিটি-এর প্রমাণ প্রদান করতে। DAC গুলো বাস্তবায়ন করা সহজ এবং সদস্য সংখ্যা কম হওয়ায় কম সমন্বয়ের প্রয়োজন হয়।
-যাইহোক, ব্যবহারকারীদের প্রয়োজন হলে ডেটা উপলব্ধ করার জন্য DAC-কে বিশ্বাস করতে হবে (যেমন, মার্কেল প্রমাণ তৈরি করার জন্য)। ডেটা প্রাপ্যতা কমিটির সদস্যদের [একজন দূষিত অভিনেতা দ্বারা আপোস করার](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view) সম্ভাবনা রয়েছে যারা তখন অফচেইন ডেটা আটকে রাখতে পারে।
+তবে, ব্যবহারকারীদের অবশ্যই বিশ্বাস করতে হবে যে প্রয়োজন হলে (যেমন, মার্কেল প্রুফ তৈরি করার জন্য) DAC ডাটা উপলব্ধ করবে। ডাটা এভেইলএবিলিটি কমিটির সদস্যদের [কোনো ক্ষতিকারক অ্যাক্টর দ্বারা আপস হওয়ার](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view) সম্ভাবনা রয়েছে, যারা পরবর্তীতে অফচেইন ডাটা আটকে রাখতে পারে।
-[ভ্যালিডিয়ামে ডেটা প্রাপ্যতা কমিটি সম্পর্কে আরও জানুন](https://medium.com/starkware/data-availability-e5564c416424)।
+[ভ্যালিডিয়ামে ডাটা এভেইলএবিলিটি কমিটি সম্পর্কে আরও জানুন](https://medium.com/starkware/data-availability-e5564c416424)।
-#### বন্ডেড ডেটা প্রাপ্যতা {#bonded-data-availability}
+#### বন্ডেড ডাটা এভেইলএবিলিটি {#bonded-data-availability}
-অন্যান্য ভ্যালিডিয়ামগুলিতে অফলাইন ডেটা সংরক্ষণের দায়িত্বে থাকা অংশগ্রহণকারীদের তাদের ভূমিকা গ্রহণ করার আগে একটি স্মার্ট কন্ট্র্যাক্টে টোকেন স্টেক (অর্থাৎ, লক আপ) করতে হয়। এই স্টেক ডেটা প্রাপ্যতা পরিচালকদের মধ্যে সৎ আচরণের গ্যারান্টি দেওয়ার জন্য একটি "বন্ড" হিসাবে কাজ করে এবং বিশ্বাসের অনুমান হ্রাস করে। যদি এই অংশগ্রহণকারীরা ডেটার প্রাপ্যতা প্রমাণ করতে ব্যর্থ হয়, তাহলে বন্ডটি স্ল্যাশ করা হয়।
+অন্যান্য ভ্যালিডিয়ামে অফলাইন ডাটা সংরক্ষণের দায়িত্বে থাকা অংশগ্রহণকারীদের তাদের ভূমিকা গ্রহণ করার আগে একটি স্মার্ট কন্ট্রাক্ট-এ টোকেন স্টেক (অর্থাৎ, লক আপ) করতে হয়। এই স্টেক ডাটা এভেইলএবিলিটি ম্যানেজারদের মধ্যে সৎ আচরণের গ্যারান্টি দিতে একটি "বন্ড" হিসেবে কাজ করে এবং বিশ্বাসের অনুমান কমায়। যদি এই অংশগ্রহণকারীরা ডাটা এভেইলএবিলিটি প্রমাণ করতে ব্যর্থ হয়, তবে বন্ডটি স্ল্যাশ করা হয়।
-একটি বন্ডেড ডেটা প্রাপ্যতা স্কিমে, যে কেউ প্রয়োজনীয় স্টেক প্রদান করার পরে অফচেইন ডেটা ধরে রাখার জন্য নির্ধারিত হতে পারে। এটি যোগ্য ডেটা প্রাপ্যতা পরিচালকদের পুলকে প্রসারিত করে, ডেটা প্রাপ্যতা কমিটি (DACs) কে প্রভাবিত করে এমন কেন্দ্রীকরণ হ্রাস করে। আরও গুরুত্বপূর্ণভাবে, এই পদ্ধতিটি দূষিত কার্যকলাপ প্রতিরোধ করার জন্য ক্রিপ্টোঅর্থনৈতিক প্রণোদনার উপর নির্ভর করে, যা ভ্যালিডিয়ামে অফলাইন ডেটা সুরক্ষিত করার জন্য বিশ্বস্ত পক্ষ নিয়োগের চেয়ে যথেষ্ট বেশি সুরক্ষিত।
+একটি বন্ডেড ডাটা এভেইলএবিলিটি স্কিমে, প্রয়োজনীয় স্টেক প্রদান করার পর যে কাউকে অফচেইন ডাটা রাখার দায়িত্ব দেওয়া যেতে পারে। এটি যোগ্য ডাটা এভেইলএবিলিটি ম্যানেজারদের পুলকে প্রসারিত করে, যা ডাটা এভেইলএবিলিটি কমিটিগুলোকে (DACs) প্রভাবিত করা সেন্ট্রালাইজেশন হ্রাস করে। আরও গুরুত্বপূর্ণভাবে, এই পদ্ধতিটি ক্ষতিকারক কার্যকলাপ প্রতিরোধ করতে ক্রিপ্টো-অর্থনৈতিক প্রণোদনার ওপর নির্ভর করে, যা ভ্যালিডিয়ামে অফলাইন ডাটা সুরক্ষিত করার জন্য বিশ্বস্ত পক্ষ নিয়োগের চেয়ে উল্লেখযোগ্যভাবে বেশি নিরাপদ।
-[ভ্যালিডিয়ামে বন্ডেড ডেটা প্রাপ্যতা সম্পর্কে আরও জানুন](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)।
+[ভ্যালিডিয়ামে বন্ডেড ডাটা এভেইলএবিলিটি সম্পর্কে আরও জানুন](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)।
-## ভলিশন এবং ভ্যালিডিয়াম {#volitions-and-validium}
+## ভোলিশন এবং ভ্যালিডিয়াম {#volitions-and-validium}
-ভ্যালিডিয়ামগুলি অনেক সুবিধা প্রদান করে তবে ট্রেড-অফের সাথে আসে (সবচেয়ে উল্লেখযোগ্যভাবে, ডেটা প্রাপ্যতা)। কিন্তু, অনেক স্কেলিং সমাধানের মতো, ভ্যালিডিয়ামগুলি নির্দিষ্ট ব্যবহারের ক্ষেত্রে উপযুক্ত—এই কারণেই ভলিশন তৈরি করা হয়েছিল।
+ভ্যালিডিয়াম অনেক সুবিধা দেয় কিন্তু কিছু আপস (trade-offs) নিয়ে আসে (সবচেয়ে উল্লেখযোগ্যভাবে, ডাটা এভেইলএবিলিটি)। কিন্তু, অনেক স্কেলিং সলিউশনের মতো, ভ্যালিডিয়াম নির্দিষ্ট ব্যবহারের ক্ষেত্রে উপযুক্ত—যে কারণে ভোলিশন (volitions) তৈরি করা হয়েছিল।
-ভলিশন একটি ZK-রোলআপ এবং ভ্যালিডিয়াম চেইনকে একত্রিত করে এবং ব্যবহারকারীদের দুটি স্কেলিং সমাধানের মধ্যে স্যুইচ করার অনুমতি দেয়। ভলিশনগুলির সাথে, ব্যবহারকারীরা নির্দিষ্ট লেনদেনের জন্য ভ্যালিডিয়ামের অফচেইন ডেটা প্রাপ্যতার সুবিধা নিতে পারে, প্রয়োজনে একটি অনচেইন ডেটা প্রাপ্যতা সমাধানে (ZK-রোলআপ) স্যুইচ করার স্বাধীনতা বজায় রেখে। এটি মূলত ব্যবহারকারীদের তাদের অনন্য পরিস্থিতি দ্বারা নির্ধারিত ট্রেড-অফ বেছে নেওয়ার স্বাধীনতা দেয়।
+ভোলিশন একটি ZK-রোলআপ এবং ভ্যালিডিয়াম চেইনকে একত্রিত করে এবং ব্যবহারকারীদের দুটি স্কেলিং সলিউশনের মধ্যে পরিবর্তন করার অনুমতি দেয়। ভোলিশনের মাধ্যমে, ব্যবহারকারীরা নির্দিষ্ট লেনদেন-এর জন্য ভ্যালিডিয়ামের অফচেইন ডাটা এভেইলএবিলিটি-এর সুবিধা নিতে পারেন, পাশাপাশি প্রয়োজন হলে একটি অনচেইন ডাটা এভেইলএবিলিটি সলিউশনে (ZK-রোলআপ) পরিবর্তন করার স্বাধীনতা বজায় রাখতে পারেন। এটি মূলত ব্যবহারকারীদের তাদের অনন্য পরিস্থিতি অনুযায়ী আপস (trade-offs) বেছে নেওয়ার স্বাধীনতা দেয়।
-একটি বিকেন্দ্রীভূত এক্সচেঞ্জ (DEX) উচ্চ-মূল্যের ট্রেডের জন্য একটি ভ্যালিডিয়ামের স্কেলেবল এবং ব্যক্তিগত পরিকাঠামো ব্যবহার করতে পছন্দ করতে পারে। এটি এমন ব্যবহারকারীদের জন্য একটি ZK-রোলআপও ব্যবহার করতে পারে যারা একটি ZK-রোলআপের উচ্চতর নিরাপত্তা গ্যারান্টি এবং বিশ্বাসহীনতা চান।
+একটি ডিসেন্ট্রালাইজড এক্সচেঞ্জ (DEX) উচ্চ-মূল্যের ট্রেডের জন্য ভ্যালিডিয়ামের স্কেলেবল এবং ব্যক্তিগত পরিকাঠামো ব্যবহার করতে পছন্দ করতে পারে। এটি এমন ব্যবহারকারীদের জন্য একটি ZK-রোলআপও ব্যবহার করতে পারে যারা ZK-রোলআপের উচ্চতর নিরাপত্তা গ্যারান্টি এবং ট্রাস্টলেসনেস চান।
-## ভ্যালিডিয়াম এবং EVM সামঞ্জস্যতা {#validiums-and-evm-compatibility}
+## ভ্যালিডিয়াম এবং EVM সামঞ্জস্যতা {#validiums-and-evm-compatibility}
-ZK-রোলআপের মতো, ভ্যালিডিয়ামগুলি বেশিরভাগই সাধারণ অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেমন টোকেন সোয়াপ এবং অর্থপ্রদান। জিরো-নলেজ প্রমাণ সার্কিটে [EVM](/developers/docs/evm/) নির্দেশাবলী প্রমাণের যথেষ্ট ওভারহেডের কারণে ভ্যালিডিয়ামগুলির মধ্যে সাধারণ গণনা এবং স্মার্ট কন্ট্র্যাক্ট এক্সিকিউশন বাস্তবায়ন করা কঠিন।
+ZK-রোলআপের মতো, ভ্যালিডিয়াম বেশিরভাগই সাধারণ অ্যাপ্লিকেশনগুলোর জন্য উপযুক্ত, যেমন টোকেন সোয়াপ এবং পেমেন্ট। একটি জিরো-নলেজ প্রুফ সার্কিটে [EVM](/developers/docs/evm/) নির্দেশাবলী প্রমাণ করার উল্লেখযোগ্য ওভারহেডের কারণে ভ্যালিডিয়ামগুলোর মধ্যে সাধারণ কম্পিউটেশন এবং স্মার্ট কন্ট্রাক্ট এক্সিকিউশন সমর্থন করা কঠিন।
-কিছু ভ্যালিডিয়াম প্রকল্প দক্ষ প্রমাণের জন্য অপ্টিমাইজ করা কাস্টম বাইটকোড তৈরি করে EVM-সামঞ্জস্যপূর্ণ ভাষা (যেমন, সলিডিটি, ভাইপার) কম্পাইল করে এই সমস্যাটিকে পাশ কাটিয়ে যাওয়ার চেষ্টা করে। এই পদ্ধতির একটি অসুবিধা হল যে নতুন জিরো-নলেজ প্রমাণ-বান্ধব VMগুলি গুরুত্বপূর্ণ EVM অপকোডগুলিকে সমর্থন নাও করতে পারে, এবং ডেভেলপারদের একটি সর্বোত্তম অভিজ্ঞতার জন্য সরাসরি উচ্চ-স্তরের ভাষায় লিখতে হবে। এটি আরও বেশি সমস্যা তৈরি করে: এটি ডেভেলপারদের একটি সম্পূর্ণ নতুন ডেভেলপমেন্ট স্ট্যাক দিয়ে ডিএ্যাপস তৈরি করতে বাধ্য করে এবং বর্তমান Ethereum পরিকাঠামোর সাথে সামঞ্জস্যতা ভঙ্গ করে।
+কিছু ভ্যালিডিয়াম প্রজেক্ট EVM-সামঞ্জস্যপূর্ণ ভাষাগুলোকে (যেমন, Solidity, Vyper) দক্ষ প্রমাণের জন্য অপ্টিমাইজ করা কাস্টম বাইটকোড তৈরিতে কম্পাইল করে এই সমস্যাটি এড়িয়ে যাওয়ার চেষ্টা করে। এই পদ্ধতির একটি অসুবিধা হলো যে নতুন জিরো-নলেজ প্রুফ-বান্ধব VM গুলো গুরুত্বপূর্ণ EVM অপকোড সমর্থন নাও করতে পারে, এবং ডেভেলপারদের একটি সর্বোত্তম অভিজ্ঞতার জন্য সরাসরি উচ্চ-স্তরের ভাষায় লিখতে হয়। এটি আরও বেশি সমস্যা তৈরি করে: এটি ডেভেলপারদের সম্পূর্ণ নতুন ডেভেলপমেন্ট স্ট্যাক দিয়ে ডিএ্যাপস তৈরি করতে বাধ্য করে এবং বর্তমান ইথিরিয়াম পরিকাঠামোর সাথে সামঞ্জস্যতা ভেঙে দেয়।
-কিছু দল, যাইহোক, ZK-প্রমাণ সার্কিটের জন্য বিদ্যমান EVM অপকোডগুলিকে অপ্টিমাইজ করার চেষ্টা করছে। এর ফলে একটি জিরো-নলেজ Ethereum ভার্চুয়াল মেশিন (zkEVM) তৈরি হবে, যা একটি EVM-সামঞ্জস্যপূর্ণ VM যা প্রোগ্রামের সম্পাদনের সঠিকতা যাচাই করার জন্য প্রমাণ তৈরি করে। একটি zkEVM-এর সাথে, ভ্যালিডিয়াম চেইনগুলি অফচেইনে স্মার্ট কন্ট্র্যাক্ট সম্পাদন করতে পারে এবং Ethereum-এ একটি অফচেইন গণনা যাচাই করার জন্য বৈধতা প্রমাণ জমা দিতে পারে (এটি পুনরায় কার্যকর না করে)।
+তবে, কিছু দল ZK-প্রুভিং সার্কিটের জন্য বিদ্যমান EVM অপকোডগুলো অপ্টিমাইজ করার চেষ্টা করছে। এর ফলে একটি জিরো-নলেজ ইথিরিয়াম ভার্চুয়াল মেশিন (zkEVM) তৈরি হবে, যা একটি EVM-সামঞ্জস্যপূর্ণ VM যা প্রোগ্রাম এক্সিকিউশনের সঠিকতা যাচাই করার জন্য প্রুফ তৈরি করে। একটি zkEVM-এর সাহায্যে, ভ্যালিডিয়াম চেইনগুলো অফচেইন-এ স্মার্ট কন্ট্রাক্ট এক্সিকিউট করতে পারে এবং ইথিরিয়ামে একটি অফচেইন কম্পিউটেশন যাচাই করার জন্য (এটি পুনরায় এক্সিকিউট না করেই) ভ্যালিডিটি প্রুফ জমা দিতে পারে।
[zkEVMs সম্পর্কে আরও জানুন](https://www.alchemy.com/overviews/zkevm)।
-## ভ্যালিডিয়ামগুলি কীভাবে Ethereum স্কেল করে? {#scaling-ethereum-with-validiums}
+## ভ্যালিডিয়াম কীভাবে ইথিরিয়ামকে স্কেল করে? {#scaling-ethereum-with-validiums}
-### 1. অফচেইন ডেটা স্টোরেজ {#offchain-data-storage}
+### ১. অফচেইন ডাটা স্টোরেজ {#offchain-data-storage}
-লেয়ার 2 স্কেলিং প্রকল্প, যেমন অপ্টিমিস্টিক রোলআপ এবং ZK-রোলআপ, L1-এ কিছু লেনদেন ডেটা প্রকাশ করে নিরাপত্তার জন্য বিশুদ্ধ অফচেইন স্কেলিং প্রোটোকলের (যেমন, [প্লাজমা](/developers/docs/scaling/plasma/)) অসীম স্কেলেবিলিটি ট্রেড করে। কিন্তু এর মানে হল রোলআপের স্কেলেবিলিটি বৈশিষ্ট্যগুলি Ethereum মেইননেটে ডেটা ব্যান্ডউইথ দ্বারা সীমাবদ্ধ ([ডেটা শার্ডিং](/roadmap/danksharding/) এই কারণে Ethereum-এর ডেটা স্টোরেজ ক্ষমতা উন্নত করার প্রস্তাব করে)।
+লেয়ার ২ স্কেলিং প্রজেক্টগুলো, যেমন অপ্টিমেস্টিক রোলআপ এবং ZK-রোলআপ, L1-এ কিছু লেনদেন ডাটা প্রকাশ করে নিরাপত্তার জন্য বিশুদ্ধ অফচেইন স্কেলিং প্রটোকলগুলোর (যেমন, [প্লাজমা](/developers/docs/scaling/plasma/)) অসীম স্কেলেবিলিটির সাথে আপস করে। কিন্তু এর মানে হলো রেলআপস-এর স্কেলেবিলিটি বৈশিষ্ট্যগুলো ইথিরিয়াম মেইননেট-এ ডাটা ব্যান্ডউইথ দ্বারা সীমাবদ্ধ (এই কারণে [ডাটা শার্ডিং](/roadmap/danksharding/) ইথিরিয়ামের ডাটা স্টোরেজ ক্ষমতা উন্নত করার প্রস্তাব দেয়)।
-ভ্যালিডিয়ামগুলি সমস্ত লেনদেন ডেটা অফচেইনে রেখে এবং প্রধান Ethereum চেইনে স্টেট আপডেট রিলে করার সময় শুধুমাত্র স্টেট প্রতিশ্রুতি (এবং বৈধতা প্রমাণ) পোস্ট করে স্কেলেবিলিটি অর্জন করে। বৈধতা প্রমাণের অস্তিত্ব, যাইহোক, প্লাজমা এবং [সাইডচেইন](/developers/docs/scaling/sidechains/) সহ অন্যান্য বিশুদ্ধ অফচেইন স্কেলিং সমাধানগুলির চেয়ে ভ্যালিডিয়ামকে উচ্চতর নিরাপত্তা গ্যারান্টি দেয়। অফচেইন লেনদেন যাচাই করার আগে Ethereum-কে যে পরিমাণ ডেটা প্রক্রিয়া করতে হয় তা হ্রাস করে, ভ্যালিডিয়াম ডিজাইনগুলি মেইননেটে থ্রুপুটকে ব্যাপকভাবে প্রসারিত করে।
+ভ্যালিডিয়াম সমস্ত লেনদেন ডাটা অফচেইন রেখে এবং মূল ইথিরিয়াম চেইনে স্টেট আপডেট রিলে করার সময় শুধুমাত্র স্টেট কমিটমেন্ট (এবং ভ্যালিডিটি প্রুফ) পোস্ট করে স্কেলেবিলিটি অর্জন করে। তবে, ভ্যালিডিটি প্রুফ-এর অস্তিত্ব ভ্যালিডিয়ামকে প্লাজমা এবং [সাইডচেইন](/developers/docs/scaling/sidechains/) সহ অন্যান্য বিশুদ্ধ অফচেইন স্কেলিং সলিউশনের চেয়ে উচ্চতর নিরাপত্তা গ্যারান্টি দেয়। অফচেইন লেনদেন যাচাই করার আগে ইথিরিয়ামকে যে পরিমাণ ডাটা প্রসেস করতে হয় তা হ্রাস করে, ভ্যালিডিয়াম ডিজাইনগুলো মেইননেট-এ থ্রুপুট ব্যাপকভাবে প্রসারিত করে।
-### 2. পুনরাবৃত্তিমূলক প্রমাণ {#recursive-proofs}
+### ২. রিকার্সিভ প্রুফ {#recursive-proofs}
-একটি পুনরাবৃত্তিমূলক প্রমাণ হল একটি বৈধতা প্রমাণ যা অন্যান্য প্রমাণের বৈধতা যাচাই করে। এই "প্রুফের প্রমাণ" গুলি পুনরাবৃত্তিমূলকভাবে একাধিক প্রমাণ একত্রিত করে তৈরি করা হয় যতক্ষণ না সমস্ত পূর্ববর্তী প্রমাণ যাচাই করে একটি চূড়ান্ত প্রমাণ তৈরি হয়। পুনরাবৃত্তিমূলক প্রমাণগুলি প্রতি বৈধতা প্রমাণে যাচাই করা যায় এমন লেনদেনের সংখ্যা বাড়িয়ে ব্লকচেইন প্রক্রিয়াকরণের গতি স্কেল করে।
+একটি রিকার্সিভ প্রুফ হলো একটি ভ্যালিডিটি প্রুফ যা অন্যান্য প্রুফের বৈধতা যাচাই করে। এই "প্রুফ অফ প্রুফস" গুলো একাধিক প্রুফকে রিকার্সিভভাবে একত্রিত করে তৈরি করা হয় যতক্ষণ না পূর্ববর্তী সমস্ত প্রুফ যাচাইকারী একটি চূড়ান্ত প্রুফ তৈরি হয়। রিকার্সিভ প্রুফ প্রতি ভ্যালিডিটি প্রুফ-এ যাচাই করা যায় এমন লেনদেন-এর সংখ্যা বাড়িয়ে ব্লকচেইন প্রসেসিং গতি স্কেল করে।
-সাধারণত, ভ্যালিডিয়াম অপারেটর যাচাইকরণের জন্য Ethereum-এ জমা দেওয়া প্রতিটি বৈধতা প্রমাণ একটি একক ব্লকের অখণ্ডতা যাচাই করে। যেখানে একটি একক পুনরাবৃত্তিমূলক প্রমাণ একই সময়ে বেশ কয়েকটি ভ্যালিডিয়াম ব্লকের বৈধতা নিশ্চিত করতে ব্যবহার করা যেতে পারে—এটি সম্ভব কারণ প্রমাণ সার্কিটটি পুনরাবৃত্তিমূলকভাবে বেশ কয়েকটি ব্লক প্রমাণকে একটি চূড়ান্ত প্রমাণে একত্রিত করতে পারে। যদি অনচেইন যাচাইকারী চুক্তি পুনরাবৃত্তিমূলক প্রমাণ গ্রহণ করে, তবে সমস্ত অন্তর্নিহিত ব্লক অবিলম্বে চূড়ান্ত করা হয়।
+সাধারণত, ভ্যালিডিয়াম অপারেটর যাচাইকরণের জন্য ইথিরিয়ামে যে প্রতিটি ভ্যালিডিটি প্রুফ জমা দেয় তা একটি একক ব্লক-এর অখণ্ডতা যাচাই করে। যেখানে একটি একক রিকার্সিভ প্রুফ একই সাথে বেশ কয়েকটি ভ্যালিডিয়াম ব্লক-এর বৈধতা নিশ্চিত করতে ব্যবহার করা যেতে পারে—এটি সম্ভব কারণ প্রুভিং সার্কিট রিকার্সিভভাবে বেশ কয়েকটি ব্লক প্রুফকে একটি চূড়ান্ত প্রুফে একত্রিত করতে পারে। যদি অনচেইন ভেরিফায়ার কন্ট্রাক্ট রিকার্সিভ প্রুফ গ্রহণ করে, তবে সমস্ত অন্তর্নিহিত ব্লকগুলো অবিলম্বে চূড়ান্ত করা হয়।
-## ভ্যালিডিয়ামের সুবিধা এবং অসুবিধা {#pros-and-cons-of-validium}
+## ভ্যালিডিয়ামের সুবিধা এবং অসুবিধা {#pros-and-cons-of-validium}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| --------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| বৈধতা প্রমাণগুলি অফচেইন লেনদেনের অখণ্ডতা প্রয়োগ করে এবং অপারেটরদের অবৈধ স্টেট আপডেট চূড়ান্ত করা থেকে বিরত রাখে। | বৈধতা প্রমাণ তৈরির জন্য বিশেষ হার্ডওয়্যারের প্রয়োজন, যা একটি কেন্দ্রীকরণের ঝুঁকি তৈরি করে। |
-| ব্যবহারকারীদের জন্য মূলধনের দক্ষতা বাড়ায় (Ethereum-এ তহবিল উত্তোলনে কোনো বিলম্ব নেই) | সাধারণ গণনা/স্মার্ট কন্ট্র্যাক্টের জন্য সীমিত সমর্থন; উন্নয়নের জন্য বিশেষ ভাষার প্রয়োজন। |
-| উচ্চ-মূল্যের অ্যাপ্লিকেশনগুলিতে জালিয়াতি-প্রমাণ ভিত্তিক সিস্টেমগুলির দ্বারা সম্মুখীন হওয়া নির্দিষ্ট অর্থনৈতিক আক্রমণের জন্য ঝুঁকিপূর্ণ নয়। | ZK প্রমাণ তৈরি করতে উচ্চ কম্পিউটেশনাল শক্তি প্রয়োজন; কম থ্রুপুট অ্যাপ্লিকেশনের জন্য সাশ্রয়ী নয়। |
-| Ethereum মেইননেটে কলডেটা পোস্ট না করে ব্যবহারকারীদের জন্য গ্যাস ফি কমায়। | ধীর বিষয়ভিত্তিক চূড়ান্ততার সময় (একটি ZK প্রমাণ তৈরি করতে 10-30 মিনিট) কিন্তু সম্পূর্ণ চূড়ান্ততায় দ্রুত কারণ কোনো বিরোধের সময় বিলম্ব নেই। |
-| ট্রেডিং বা ব্লকচেইন গেমিংয়ের মতো নির্দিষ্ট ব্যবহারের ক্ষেত্রে উপযুক্ত, যা লেনদেনের গোপনীয়তা এবং স্কেলেবিলিটিকে অগ্রাধিকার দেয়। | ব্যবহারকারীদের তহবিল উত্তোলন থেকে বিরত রাখা যেতে পারে কারণ মালিকানার মার্কেল প্রমাণ তৈরির জন্য অফচেইন ডেটা সর্বদা উপলব্ধ থাকা প্রয়োজন। |
-| অফচেইন ডেটা প্রাপ্যতা উচ্চ স্তরের থ্রুপুট প্রদান করে এবং স্কেলেবিলিটি বাড়ায়। | নিরাপত্তা মডেলটি বিশ্বাসের অনুমান এবং ক্রিপ্টোঅর্থনৈতিক প্রণোদনার উপর নির্ভর করে, ZK-রোলআপগুলির বিপরীতে, যা সম্পূর্ণরূপে ক্রিপ্টোগ্রাফিক নিরাপত্তা ব্যবস্থার উপর নির্ভর করে। |
+| সুবিধা (Pros) | অসুবিধা (Cons) |
+| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ভ্যালিডিটি প্রুফ অফচেইন লেনদেন-এর অখণ্ডতা নিশ্চিত করে এবং অপারেটরদের অবৈধ স্টেট আপডেট চূড়ান্ত করতে বাধা দেয়। | ভ্যালিডিটি প্রুফ তৈরি করার জন্য বিশেষ হার্ডওয়্যারের প্রয়োজন হয়, যা সেন্ট্রালাইজেশনের ঝুঁকি তৈরি করে। |
+| ব্যবহারকারীদের জন্য মূলধনের দক্ষতা বাড়ায় (ইথিরিয়ামে ফান্ড উত্তোলনে কোনো বিলম্ব নেই)। | সাধারণ কম্পিউটেশন/স্মার্ট কন্ট্রাক্ট-এর জন্য সীমিত সমর্থন; ডেভেলপমেন্টের জন্য বিশেষ ভাষার প্রয়োজন। |
+| উচ্চ-মূল্যের অ্যাপ্লিকেশনগুলোতে ফ্রড প্রুফ ভিত্তিক সিস্টেমগুলোর সম্মুখীন হওয়া নির্দিষ্ট অর্থনৈতিক আক্রমণের জন্য ঝুঁকিপূর্ণ নয়। | ZK প্রুফ তৈরি করতে উচ্চ কম্পিউটেশনাল শক্তির প্রয়োজন; কম থ্রুপুট অ্যাপ্লিকেশনগুলোর জন্য সাশ্রয়ী নয়। |
+| ইথিরিয়াম মেইননেট-এ কলডাটা (calldata) পোস্ট না করে ব্যবহারকারীদের জন্য গ্যাস ফি কমায়। | ধীর সাবজেক্টিভ ফাইনালিটি সময় (একটি ZK প্রুফ তৈরি করতে ১০-৩০ মিনিট) কিন্তু সম্পূর্ণ ফাইনালিটি-তে দ্রুত কারণ কোনো বিরোধের সময় বিলম্ব নেই। |
+| নির্দিষ্ট ব্যবহারের ক্ষেত্রে উপযুক্ত, যেমন ট্রেডিং বা ব্লকচেইন গেমিং যা লেনদেন-এর গোপনীয়তা এবং স্কেলেবিলিটিকে অগ্রাধিকার দেয়। | ব্যবহারকারীদের ফান্ড উত্তোলন থেকে বিরত রাখা যেতে পারে কারণ মালিকানার মার্কেল প্রুফ তৈরি করার জন্য অফচেইন ডাটা সবসময় উপলব্ধ থাকা প্রয়োজন। |
+| অফচেইন ডাটা এভেইলএবিলিটি উচ্চ স্তরের থ্রুপুট প্রদান করে এবং স্কেলেবিলিটি বাড়ায়। | সিকিউরিটি মডেল বিশ্বাসের অনুমান এবং ক্রিপ্টো-অর্থনৈতিক প্রণোদনার ওপর নির্ভর করে, ZK-রোলআপের বিপরীতে, যা সম্পূর্ণরূপে ক্রিপ্টোগ্রাফিক সিকিউরিটি মেকানিজমের ওপর নির্ভর করে। |
-### ভ্যালিডিয়াম/ভলিশন ব্যবহার করুন {#use-validium-and-volitions}
+### ভ্যালিডিয়াম/ভোলিশন ব্যবহার করুন {#use-validium-and-volitions}
-একাধিক প্রকল্প ভ্যালিডিয়াম এবং ভলিশনের বাস্তবায়ন প্রদান করে যা আপনি আপনার ডিএ্যাপসগুলিতে একীভূত করতে পারেন:
+একাধিক প্রজেক্ট ভ্যালিডিয়াম এবং ভোলিশনের ইমপ্লিমেন্টেশন প্রদান করে যা আপনি আপনার ডিএ্যাপস-এ ইন্টিগ্রেট করতে পারেন:
-**StarkWare StarkEx** - _StarkEx হল একটি Ethereum লেয়ার 2 (L2) স্কেলেবিলিটি সমাধান যা বৈধতা প্রমাণের উপর ভিত্তি করে। এটি ZK-রোলআপ বা ভ্যালিডিয়াম ডেটা-প্রাপ্যতা মোডে কাজ করতে পারে।_
+**StarkWare StarkEx** - _StarkEx হলো একটি ইথিরিয়াম লেয়ার ২ (L2) স্কেলেবিলিটি সলিউশন যা ভ্যালিডিটি প্রুফ-এর ওপর ভিত্তি করে তৈরি। এটি ZK-রোলআপ বা ভ্যালিডিয়াম ডাটা-এভেইলএবিলিটি মোডে কাজ করতে পারে।_
-- [নথিপত্র](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium)
-- [ওয়েবসাইট](https://starkware.co/starkex/)
+- [ডকুমেন্টেশন](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium)
+- [ওয়েবসাইট](https://starkware.co/starkex/)
-**Matter Labs zkPorter**- _zkPorter একটি লেয়ার 2 স্কেলিং প্রোটোকল যা ডেটা প্রাপ্যতার সাথে মোকাবিলা করে একটি হাইব্রিড পদ্ধতির মাধ্যমে যা zkRollup এবং শার্ডিং-এর ধারণাগুলিকে একত্রিত করে। এটি নির্বিচারে অনেক শার্ড সমর্থন করতে পারে, প্রতিটির নিজস্ব ডেটা প্রাপ্যতা নীতি রয়েছে।_
+**Matter Labs zkPorter**- _zkPorter হলো একটি লেয়ার ২ স্কেলিং প্রটোকল যা একটি হাইব্রিড পদ্ধতির মাধ্যমে ডাটা এভেইলএবিলিটি মোকাবেলা করে যা zkRollup এবং শার্ডিং-এর ধারণাগুলোকে একত্রিত করে। এটি ইচ্ছামতো অনেকগুলো শার্ড সমর্থন করতে পারে, যার প্রতিটির নিজস্ব ডাটা এভেইলএবিলিটি পলিসি রয়েছে।_
- [ব্লগ](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
-- [নথিপত্র](https://docs.zksync.io/zksync-protocol/rollup/data-availability)
-- [ওয়েবসাইট](https://zksync.io/)
+- [ডকুমেন্টেশন](https://docs.zksync.io/zksync-protocol/rollup/data-availability)
+- [ওয়েবসাইট](https://zksync.io/)
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ভ্যালিডিয়াম এবং লেয়ার 2 টু-বাই-টু — ইস্যু নং 99](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
-- [ZK-রোলআপ বনাম ভ্যালিডিয়াম](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)
-- [ভলিশন এবং উদীয়মান ডেটা প্রাপ্যতা স্পেকট্রাম](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb)
-- [রোলআপ, ভ্যালিডিয়াম এবং ভলিশন: হটেস্ট Ethereum স্কেলিং সলিউশন সম্পর্কে জানুন](https://medium.com/coinmonks/rollups-vs-validiums-vs-volitions-d76300170f4a)
-- [ইথেরিয়াম রোলআপের ব্যবহারিক নির্দেশিকা](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [ভ্যালিডিয়াম এবং লেয়ার ২ টু-বাই-টু — ইস্যু নং ৯৯](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
+- [ZK-রোলআপ বনাম ভ্যালিডিয়াম](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)
+- [ভোলিশন এবং ইমার্জিং ডাটা এভেইলএবিলিটি স্পেকট্রাম](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb)
+- [ইথিরিয়াম রেলআপস-এর প্র্যাকটিক্যাল গাইড](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/bn/developers/docs/scaling/zk-rollups/index.md
index 6c107495df6..a4fea0bceb1 100644
--- a/public/content/translations/bn/developers/docs/scaling/zk-rollups/index.md
+++ b/public/content/translations/bn/developers/docs/scaling/zk-rollups/index.md
@@ -1,268 +1,274 @@
---
-title: "জিরো-নলেজ রোলআপস"
-description: "জিরো-নলেজ রোলআপগুলির একটি ভূমিকা—ইথেরিয়াম কমিউনিটি দ্বারা ব্যবহৃত একটি স্কেলিং সমাধান।"
+title: জিরো-নলেজ রেলআপস
+description: জিরো-নলেজ রেলআপস-এর একটি পরিচিতি—ইথিরিয়াম কমিউনিটি দ্বারা ব্যবহৃত একটি স্কেলিং সমাধান।
lang: bn
---
-জিরো-নলেজ রোলআপস (ZK-rollups) হল লেয়ার 2 [স্কেলিং সলিউশন](/developers/docs/scaling/) যা ইথেরিয়াম মেইননেটে কম্পিউটেশন এবং স্টেট-স্টোরেজ অফচেইনে স্থানান্তরিত করার মাধ্যমে থ্রুপুট বৃদ্ধি করে। ZK-রোলআপস একটি ব্যাচে হাজার হাজার লেনদেন প্রক্রিয়া করতে পারে এবং তারপরে মেইননেটে শুধুমাত্র কিছু ন্যূনতম সারাংশ ডেটা পোস্ট করতে পারে। এই সারাংশ ডেটা ইথেরিয়াম স্টেটে যে পরিবর্তনগুলি করা উচিত তা সংজ্ঞায়িত করে এবং কিছু ক্রিপ্টোগ্রাফিক প্রমাণ যা নিশ্চিত করে যে সেই পরিবর্তনগুলি সঠিক।
+জিরো-নলেজ রেলআপস (ZK-rollups) হলো লেয়ার ২ [স্কেলিং সমাধান](/developers/docs/scaling/) যা কম্পিউটেশন এবং স্টেট-স্টোরেজ অফচেইন সরিয়ে নিয়ে [Ethereum](/) মেইননেট-এ থ্রুপুট বৃদ্ধি করে। ZK-রেলআপস একটি ব্যাচে হাজার হাজার লেনদেন প্রসেস করতে পারে এবং তারপর মেইননেট-এ শুধুমাত্র কিছু ন্যূনতম সারাংশ ডাটা পোস্ট করে। এই সারাংশ ডাটা ইথিরিয়াম স্টেট-এ যে পরিবর্তনগুলো করা উচিত তা নির্ধারণ করে এবং কিছু ক্রিপ্টোগ্রাফিক প্রমাণ দেয় যে সেই পরিবর্তনগুলো সঠিক।
## পূর্বশর্ত {#prerequisites}
-আপনার [Ethereum স্কেলিং](/developers/docs/scaling/) এবং [লেয়ার 2](/layer-2) সম্পর্কিত আমাদের পৃষ্ঠাটি পড়া এবং বোঝা উচিত।
+আপনার [ইথিরিয়াম স্কেলিং](/developers/docs/scaling/) এবং [লেয়ার ২](/layer-2) বিষয়ক আমাদের পেজটি পড়া এবং বোঝা উচিত।
-## জিরো-নলেজ রোলআপস কি? {#what-are-zk-rollups}
+## জিরো-নলেজ রেলআপস কী? {#what-are-zk-rollups}
-**জিরো-নলেজ রোলআপস (ZK-rollups)** লেনদেনগুলিকে ব্যাচে বান্ডিল (বা 'রোল আপ') করে যা অফচেইনে কার্যকর করা হয়। অফচেইন কম্পিউটেশন ব্লকচেইনে পোস্ট করা ডেটার পরিমাণ কমিয়ে দেয়। ZK-রোলআপ অপারেটররা প্রতিটি লেনদেন পৃথকভাবে পাঠানোর পরিবর্তে একটি ব্যাচের সমস্ত লেনদেন উপস্থাপন করার জন্য প্রয়োজনীয় পরিবর্তনগুলির একটি সারাংশ জমা দেয়। তারা তাদের পরিবর্তনের সঠিকতা প্রমাণ করার জন্য [ভ্যালিডিটি প্রুফ](/glossary/#validity-proof) তৈরি করে।
+**জিরো-নলেজ রেলআপস (ZK-rollups)** লেনদেনগুলোকে ব্যাচে বান্ডিল (বা 'রোল আপ') করে যা অফচেইন এক্সিকিউট করা হয়। অফচেইন কম্পিউটেশন ব্লকচেইন-এ পোস্ট করতে হওয়া ডাটার পরিমাণ কমায়। ZK-রোলআপ অপারেটররা প্রতিটি লেনদেন আলাদাভাবে পাঠানোর পরিবর্তে একটি ব্যাচের সমস্ত লেনদেন উপস্থাপন করার জন্য প্রয়োজনীয় পরিবর্তনগুলোর একটি সারাংশ জমা দেয়। তারা তাদের পরিবর্তনগুলোর সঠিকতা প্রমাণ করার জন্য [ভ্যালিডিটি প্রুফ](/glossary/#validity-proof) তৈরি করে।
-ZK-রোলআপের স্টেট ইথেরিয়াম নেটওয়ার্কে ডিপ্লয় করা একটি স্মার্ট কন্ট্র্যাক্ট দ্বারা রক্ষণাবেক্ষণ করা হয়। এই স্টেট আপডেট করার জন্য, ZK-রোলআপ নোডগুলিকে যাচাইকরণের জন্য একটি ভ্যালিডিটি প্রুফ জমা দিতে হবে। উল্লিখিত হিসাবে, ভ্যালিডিটি প্রুফ হল একটি ক্রিপ্টোগ্রাফিক নিশ্চয়তা যে রোলআপ দ্বারা প্রস্তাবিত স্টেট-পরিবর্তনটি প্রদত্ত ব্যাচের লেনদেনগুলি কার্যকর করার প্রকৃত ফলাফল। এর মানে হল যে ZK-রোলআপসকে [অপ্টিমিস্টিক রোলআপস](/developers/docs/scaling/optimistic-rollups/) এর মতো সমস্ত লেনদেনের ডেটা অনচেইনে পোস্ট করার পরিবর্তে ইথেরিয়ামে লেনদেন চূড়ান্ত করার জন্য শুধুমাত্র ভ্যালিডিটি প্রুফ প্রদান করতে হবে।
+ZK-রোলআপ-এর স্টেট ইথিরিয়াম নেটওয়ার্ক-এ ডেপ্লয় করা একটি স্মার্ট কন্ট্রাক্ট দ্বারা পরিচালিত হয়। এই স্টেট আপডেট করার জন্য, ZK-রোলআপ নোড-গুলোকে ভেরিফিকেশনের জন্য একটি ভ্যালিডিটি প্রুফ জমা দিতে হবে। যেমনটি উল্লেখ করা হয়েছে, ভ্যালিডিটি প্রুফ হলো একটি ক্রিপ্টোগ্রাফিক নিশ্চয়তা যে রোলআপ দ্বারা প্রস্তাবিত স্টেট-পরিবর্তনটি সত্যিই প্রদত্ত লেনদেন ব্যাচ এক্সিকিউট করার ফলাফল। এর মানে হলো যে ZK-রেলআপস-এর ইথিরিয়াম-এ লেনদেন চূড়ান্ত করার জন্য শুধুমাত্র ভ্যালিডিটি প্রুফ প্রদান করতে হয়, [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/)-এর মতো সমস্ত লেনদেন ডাটা অনচেইন পোস্ট করার পরিবর্তে।
-একটি ZK-রোলআপ থেকে ইথেরিয়ামে তহবিল স্থানান্তরের সময় কোন বিলম্ব হয় না কারণ ZK-রোলআপ কন্ট্র্যাক্ট ভ্যালিডিটি প্রুফ যাচাই করার পরেই এক্সিট লেনদেনগুলি কার্যকর করা হয়। বিপরীতে, অপ্টিমিস্টিক রোলআপগুলি থেকে তহবিল তোলার ক্ষেত্রে বিলম্ব হতে পারে যাতে যে কেউ একটি [ফ্রড প্রুফ](/glossary/#fraud-proof) দিয়ে এক্সিট লেনদেনকে চ্যালেঞ্জ করতে পারে।
+একটি ZK-রোলআপ থেকে ইথিরিয়াম-এ ফান্ড স্থানান্তর করার সময় কোনো বিলম্ব হয় না কারণ ZK-রোলআপ কন্ট্রাক্ট ভ্যালিডিটি প্রুফ যাচাই করার পর এক্সিট লেনদেন এক্সিকিউট করা হয়। বিপরীতভাবে, অপ্টিমেস্টিক রেলআপস থেকে ফান্ড উত্তোলনে বিলম্ব হয় যাতে যে কেউ একটি [ফ্রড প্রুফ](/glossary/#fraud-proof) দিয়ে এক্সিট লেনদেনকে চ্যালেঞ্জ করতে পারে।
-ZK-রোলআপস ইথেরিয়ামে `calldata` হিসাবে লেনদেন লেখে। স্মার্ট কন্ট্র্যাক্ট ফাংশনে এক্সটার্নাল কলে অন্তর্ভুক্ত ডেটা `calldata`-তে স্টোর করা হয়। `calldata`-তে থাকা তথ্য ব্লকচেইনে প্রকাশ করা হয়, যা যে কাউকে স্বাধীনভাবে রোলআপের স্টেট পুনর্গঠন করার অনুমতি দেয়। ZK-রোলআপস লেনদেনের ডেটা কমাতে কম্প্রেশন কৌশল ব্যবহার করে—উদাহরণস্বরূপ, অ্যাকাউন্টগুলিকে একটি অ্যাড্রেসের পরিবর্তে একটি ইনডেক্স দ্বারা উপস্থাপন করা হয়, যা 28 বাইট ডেটা সাশ্রয় করে। অনচেইন ডেটা প্রকাশনা রোলআপগুলির জন্য একটি উল্লেখযোগ্য ব্যয়, তাই ডেটা কম্প্রেশন ব্যবহারকারীদের জন্য ফি কমাতে পারে।
+ZK-রেলআপস ইথিরিয়াম-এ `calldata` হিসেবে লেনদেন লেখে। `calldata` হলো যেখানে স্মার্ট কন্ট্রাক্ট ফাংশনগুলোর এক্সটার্নাল কলে অন্তর্ভুক্ত ডাটা সংরক্ষিত হয়। `calldata`-এর তথ্য ব্লকচেইন-এ প্রকাশিত হয়, যা যে কাউকে স্বাধীনভাবে রোলআপ-এর স্টেট পুনর্গঠন করতে দেয়। ZK-রেলআপস লেনদেন ডাটা কমানোর জন্য কম্প্রেশন কৌশল ব্যবহার করে—উদাহরণস্বরূপ, একাউন্ট-গুলোকে একটি এডড্রেস-এর পরিবর্তে একটি ইনডেক্স দ্বারা উপস্থাপন করা হয়, যা 28 বাইট ডাটা বাঁচায়। অনচেইন ডাটা প্রকাশনা রেলআপস-এর জন্য একটি উল্লেখযোগ্য খরচ, তাই ডাটা কম্প্রেশন ব্যবহারকারীদের জন্য ফি কমাতে পারে।
-## ZK-রোলআপস কীভাবে ইথেরিয়ামের সাথে ইন্টারঅ্যাক্ট করে? {#zk-rollups-and-ethereum}
+## ZK-রেলআপস কীভাবে ইথিরিয়াম-এর সাথে ইন্টারঅ্যাক্ট করে? {#zk-rollups-and-ethereum}
-একটি ZK-রোলআপ চেইন একটি অফচেইন প্রোটোকল যা ইথেরিয়াম ব্লকচেইনের উপরে কাজ করে এবং অনচেইন ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট দ্বারা পরিচালিত হয়। ZK-রোলআপস মেইননেটের বাইরে লেনদেন কার্যকর করে, কিন্তু পর্যায়ক্রমে অফচেইন লেনদেনের ব্যাচগুলি একটি অনচেইন রোলআপ কন্ট্র্যাক্টে কমিট করে। এই লেনদেনের রেকর্ডটি ইথেরিয়াম ব্লকচেইনের মতোই অপরিবর্তনীয় এবং এটি ZK-রোলআপ চেইন গঠন করে।
+একটি ZK-রোলআপ চেইন হলো একটি অফচেইন প্রটোকল যা ইথিরিয়াম ব্লকচেইন-এর উপরে কাজ করে এবং অনচেইন ইথিরিয়াম স্মার্ট কন্ট্রাক্ট দ্বারা পরিচালিত হয়। ZK-রেলআপস মেইননেট-এর বাইরে লেনদেন এক্সিকিউট করে, কিন্তু পর্যায়ক্রমে অফচেইন লেনদেন ব্যাচগুলোকে একটি অনচেইন রোলআপ কন্ট্রাক্ট-এ কমিট করে। এই লেনদেন রেকর্ডটি ইমমিউটেবল, অনেকটা ইথিরিয়াম ব্লকচেইন-এর মতো, এবং ZK-রোলআপ চেইন গঠন করে।
-ZK-রোলআপের মূল আর্কিটেকচারটি নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:
+ZK-রোলআপ-এর মূল আর্কিটেকচার নিচের উপাদানগুলো নিয়ে গঠিত:
-1. **অনচেইন কন্ট্র্যাক্ট**: যেমন উল্লেখ করা হয়েছে, ZK-রোলআপ প্রোটোকল ইথেরিয়ামে চলমান স্মার্ট কন্ট্র্যাক্ট দ্বারা নিয়ন্ত্রিত হয়। এর মধ্যে রয়েছে প্রধান কন্ট্র্যাক্ট যা রোলআপ ব্লক সঞ্চয় করে, ডিপোজিট ট্র্যাক করে এবং স্টেট আপডেটগুলি নিরীক্ষণ করে। অন্য একটি অনচেইন কন্ট্র্যাক্ট (ভেরিফায়ার কন্ট্র্যাক্ট) ব্লক প্রোডিউসারদের দ্বারা জমা দেওয়া জিরো-নলেজ প্রুফ যাচাই করে। এইভাবে, ইথেরিয়াম ZK-রোলআপের জন্য বেস লেয়ার বা "লেয়ার 1" হিসাবে কাজ করে।
+1. **অনচেইন কন্ট্রাক্টস**: যেমনটি উল্লেখ করা হয়েছে, ZK-রোলআপ প্রটোকল ইথিরিয়াম-এ চলা স্মার্ট কন্ট্রাক্ট দ্বারা নিয়ন্ত্রিত হয়। এর মধ্যে মূল কন্ট্রাক্ট অন্তর্ভুক্ত যা রোলআপ ব্লকস সংরক্ষণ করে, ডিপোজিট ট্র্যাক করে এবং স্টেট আপডেটগুলো মনিটর করে। আরেকটি অনচেইন কন্ট্রাক্ট (ভেরিফায়ার কন্ট্রাক্ট) ব্লক প্রডিউসারদের দ্বারা জমা দেওয়া জিরো-নলেজ প্রুফগুলো যাচাই করে। এইভাবে, ইথিরিয়াম ZK-রোলআপ-এর জন্য বেস লেয়ার বা "লেয়ার 1" হিসেবে কাজ করে।
-2. **অফচেইন ভার্চুয়াল মেশিন (VM)**: যদিও ZK-রোলআপ প্রোটোকল ইথেরিয়ামে থাকে, লেনদেন কার্যকর করা এবং স্টেট স্টোরেজ একটি পৃথক ভার্চুয়াল মেশিনে ঘটে যা [EVM](/developers/docs/evm/) থেকে স্বাধীন। এই অফচেইন VM টি ZK-রোলআপে লেনদেনের জন্য এক্সিকিউশন এনভায়রনমেন্ট এবং ZK-রোলআপ প্রোটোকলের জন্য সেকেন্ডারি লেয়ার বা "লেয়ার 2" হিসাবে কাজ করে। ইথেরিয়াম মেইননেটে যাচাইকৃত ভ্যালিডিটি প্রুফগুলি অফচেইন VM-এ স্টেট ট্রানজিশনের সঠিকতার গ্যারান্টি দেয়।
+2. **অফচেইন ভার্চুয়াল মেশিন (VM)**: যদিও ZK-রোলআপ প্রটোকল ইথিরিয়াম-এ থাকে, লেনদেন এক্সিকিউশন এবং স্টেট স্টোরেজ [EVM](/developers/docs/evm/)-এর থেকে স্বাধীন একটি পৃথক ভার্চুয়াল মেশিনে ঘটে। এই অফচেইন VM হলো ZK-রোলআপ-এ লেনদেন-এর জন্য এক্সিকিউশন পরিবেশ এবং ZK-রোলআপ প্রটোকল-এর জন্য সেকেন্ডারি লেয়ার বা "লেয়ার ২" হিসেবে কাজ করে। ইথিরিয়াম মেইননেট-এ যাচাইকৃত ভ্যালিডিটি প্রুফ অফচেইন VM-এ স্টেট ট্রানজিশনগুলোর সঠিকতার নিশ্চয়তা দেয়।
-ZK-রোলআপগুলি হল "হাইব্রিড স্কেলিং সমাধান"—অফচেইন প্রোটোকল যা স্বাধীনভাবে কাজ করে কিন্তু ইথেরিয়াম থেকে নিরাপত্তা অর্জন করে। বিশেষভাবে, ইথেরিয়াম নেটওয়ার্ক ZK-রোলআপে স্টেট আপডেটের বৈধতা প্রয়োগ করে এবং রোলআপের স্টেটের প্রতিটি আপডেটের পিছনে ডেটার প্রাপ্যতা নিশ্চিত করে। ফলস্বরূপ, ZK-রোলআপগুলি বিশুদ্ধ অফচেইন স্কেলিং সমাধানগুলির চেয়ে যথেষ্ট নিরাপদ, যেমন [সাইডচেইন](/developers/docs/scaling/sidechains/), যা তাদের নিরাপত্তা বৈশিষ্ট্যের জন্য দায়ী, বা [ভ্যালিডিয়াম](/developers/docs/scaling/validium/), যা ভ্যালিডিটি প্রুফ সহ ইথেরিয়ামে লেনদেন যাচাই করে, কিন্তু লেনদেনের ডেটা অন্য কোথাও সঞ্চয় করে।
+ZK-রেলআপস হলো "হাইব্রিড স্কেলিং সমাধান"—অফচেইন প্রটোকল যা স্বাধীনভাবে কাজ করে কিন্তু ইথিরিয়াম থেকে নিরাপত্তা লাভ করে। বিশেষভাবে, ইথিরিয়াম নেটওয়ার্ক ZK-রোলআপ-এ স্টেট আপডেটগুলোর বৈধতা প্রয়োগ করে এবং রোলআপ-এর স্টেট-এ প্রতিটি আপডেটের পিছনে ডাটা এভেইলএবিলিটি নিশ্চিত করে। ফলস্বরূপ, ZK-রেলআপস বিশুদ্ধ অফচেইন স্কেলিং সমাধানগুলোর চেয়ে উল্লেখযোগ্যভাবে বেশি নিরাপদ, যেমন [সাইডচেইন](/developers/docs/scaling/sidechains/), যা তাদের নিজস্ব নিরাপত্তা বৈশিষ্ট্যের জন্য দায়ী, অথবা [ভ্যালিডিয়ামস](/developers/docs/scaling/validium/), যা ভ্যালিডিটি প্রুফ দিয়ে ইথিরিয়াম-এ লেনদেন যাচাই করে, কিন্তু লেনদেন ডাটা অন্য কোথাও সংরক্ষণ করে।
-ZK-রোলআপস নিম্নলিখিতগুলির জন্য প্রধান ইথেরিয়াম প্রোটোকলের উপর নির্ভর করে:
+ZK-রেলআপস নিচের বিষয়গুলোর জন্য মূল ইথিরিয়াম প্রটোকল-এর উপর নির্ভর করে:
-### ডেটা প্রাপ্যতা {#data-availability}
+### ডাটা এভেইলএবিলিটি {#data-availability}
-ZK-রোলআপস অফচেইনে প্রক্রিয়া করা প্রতিটি লেনদেনের জন্য স্টেট ডেটা ইথেরিয়ামে প্রকাশ করে। এই ডেটা দিয়ে, ব্যক্তি বা ব্যবসার পক্ষে রোলআপের স্টেট পুনরুৎপাদন করা এবং নিজেরাই চেইনটি ভ্যালিডেট করা সম্ভব। ইথেরিয়াম এই ডেটা `calldata` হিসাবে নেটওয়ার্কের সমস্ত অংশগ্রহণকারীদের জন্য উপলব্ধ করে।
+ZK-রেলআপস অফচেইন প্রসেস করা প্রতিটি লেনদেন-এর জন্য স্টেট ডাটা ইথিরিয়াম-এ প্রকাশ করে। এই ডাটা দিয়ে, ব্যক্তি বা ব্যবসার পক্ষে রোলআপ-এর স্টেট পুনরুৎপাদন করা এবং চেইনটিকে নিজেরাই যাচাই করা সম্ভব। ইথিরিয়াম এই ডাটা নেটওয়ার্ক-এর সমস্ত অংশগ্রহণকারীদের কাছে `calldata` হিসেবে উপলব্ধ করে।
-ZK-রোলআপসকে অনচেইনে বেশি লেনদেনের ডেটা প্রকাশ করতে হয় না কারণ ভ্যালিডিটি প্রুফগুলি ইতিমধ্যেই স্টেট ট্রানজিশনের সত্যতা যাচাই করে। তবুও, অনচেইনে ডেটা সঞ্চয় করা এখনও গুরুত্বপূর্ণ কারণ এটি L2 চেইনের স্টেটের অনুমতিহীন, স্বাধীন যাচাইকরণের অনুমতি দেয় যা পরিবর্তে যে কাউকে লেনদেনের ব্যাচ জমা দেওয়ার অনুমতি দেয়, যা ক্ষতিকারক অপারেটরদের চেইন সেন্সর করা বা ফ্রিজ করা থেকে বাধা দেয়।
+ZK-রেলআপস-এর অনচেইন খুব বেশি লেনদেন ডাটা প্রকাশ করার প্রয়োজন নেই কারণ ভ্যালিডিটি প্রুফ ইতিমধ্যেই স্টেট ট্রানজিশনগুলোর সত্যতা যাচাই করে। তা সত্ত্বেও, অনচেইন ডাটা সংরক্ষণ করা এখনও গুরুত্বপূর্ণ কারণ এটি L2 চেইন-এর স্টেট-এর পারমিশনলেস, স্বাধীন যাচাইকরণের অনুমতি দেয় যা ফলস্বরূপ যে কাউকে লেনদেন-এর ব্যাচ জমা দেওয়ার অনুমতি দেয়, ক্ষতিকারক অপারেটরদের চেইন সেন্সর করা বা ফ্রিজ করা থেকে বাধা দেয়।
-রোলআপের সাথে ইন্টারঅ্যাক্ট করার জন্য ব্যবহারকারীদের জন্য অনচেইন প্রয়োজন। স্টেট ডেটাতে অ্যাক্সেস ছাড়া ব্যবহারকারীরা তাদের অ্যাকাউন্টের ব্যালেন্স জিজ্ঞাসা করতে বা স্টেট তথ্যের উপর নির্ভরশীল লেনদেন (যেমন, উইথড্রল) শুরু করতে পারে না।
+ব্যবহারকারীদের রোলআপ-এর সাথে ইন্টারঅ্যাক্ট করার জন্য অনচেইন প্রয়োজন। স্টেট ডাটা-তে অ্যাক্সেস ছাড়া ব্যবহারকারীরা তাদের একাউন্ট ব্যালেন্স জিজ্ঞাসা করতে পারে না বা স্টেট তথ্যের উপর নির্ভর করে এমন লেনদেন (যেমন, উত্তোলন) শুরু করতে পারে না।
-### লেনদেনের ফাইনালিটি {#transaction-finality}
+### লেনদেন ফাইনালিটি {#transaction-finality}
-ইথেরিয়াম ZK-রোলআপগুলির জন্য একটি সেটেলমেন্ট লেয়ার হিসাবে কাজ করে: L2 লেনদেনগুলি তখনই চূড়ান্ত হয় যদি L1 কন্ট্র্যাক্ট ভ্যালিডিটি প্রুফ গ্রহণ করে। এটি ক্ষতিকারক অপারেটরদের চেইন নষ্ট করার ঝুঁকি (যেমন, রোলআপ তহবিল চুরি করা) দূর করে কারণ প্রতিটি লেনদেন অবশ্যই মেইননেটে অনুমোদিত হতে হবে। এছাড়াও, ইথেরিয়াম গ্যারান্টি দেয় যে ব্যবহারকারীর ক্রিয়াকলাপগুলি একবার L1-এ চূড়ান্ত হয়ে গেলে আর উল্টানো যাবে না।
+ইথিরিয়াম ZK-রেলআপস-এর জন্য একটি সেটেলমেন্ট লেয়ার হিসেবে কাজ করে: L2 লেনদেন শুধুমাত্র তখনই চূড়ান্ত হয় যদি L1 কন্ট্রাক্ট ভ্যালিডিটি প্রুফ গ্রহণ করে। এটি ক্ষতিকারক অপারেটরদের চেইন দুর্নীতিগ্রস্ত করার (যেমন, রোলআপ ফান্ড চুরি করা) ঝুঁকি দূর করে কারণ প্রতিটি লেনদেন মেইননেট-এ অনুমোদিত হতে হবে। এছাড়াও, ইথিরিয়াম গ্যারান্টি দেয় যে ব্যবহারকারীর অপারেশনগুলো L1-এ চূড়ান্ত হওয়ার পরে আর রিভার্স করা যাবে না।
### সেন্সরশিপ প্রতিরোধ {#censorship-resistance}
-বেশিরভাগ ZK-রোলআপ লেনদেন কার্যকর করতে, ব্যাচ তৈরি করতে এবং L1-এ ব্লক জমা দিতে একটি "সুপারনোড" (অপারেটর) ব্যবহার করে। যদিও এটি দক্ষতা নিশ্চিত করে, এটি সেন্সরশিপের ঝুঁকি বাড়ায়: ক্ষতিকারক ZK-রোলআপ অপারেটররা ব্যবহারকারীদের লেনদেনগুলিকে ব্যাচে অন্তর্ভুক্ত করতে অস্বীকার করে তাদের সেন্সর করতে পারে।
+বেশিরভাগ ZK-রেলআপস লেনদেন এক্সিকিউট করতে, ব্যাচ তৈরি করতে এবং L1-এ ব্লকস জমা দিতে একটি "সুপারনোড" (অপারেটর) ব্যবহার করে। যদিও এটি দক্ষতা নিশ্চিত করে, এটি সেন্সরশিপের ঝুঁকি বাড়ায়: ক্ষতিকারক ZK-রোলআপ অপারেটররা ব্যবহারকারীদের লেনদেন ব্যাচে অন্তর্ভুক্ত করতে অস্বীকার করে তাদের সেন্সর করতে পারে।
-একটি নিরাপত্তা ব্যবস্থা হিসাবে, ZK-রোলআপগুলি ব্যবহারকারীদের সরাসরি মেইননেটে রোলআপ কন্ট্র্যাক্টে লেনদেন জমা দেওয়ার অনুমতি দেয় যদি তারা মনে করে যে তারা অপারেটর দ্বারা সেন্সর করা হচ্ছে। এটি ব্যবহারকারীদের অপারেটরের অনুমতির উপর নির্ভর না করে ZK-রোলআপ থেকে ইথেরিয়ামে একটি এক্সিট করতে বাধ্য করতে দেয়।
+একটি নিরাপত্তা ব্যবস্থা হিসেবে, ZK-রেলআপস ব্যবহারকারীদের সরাসরি মেইননেট-এ রোলআপ কন্ট্রাক্ট-এ লেনদেন জমা দেওয়ার অনুমতি দেয় যদি তারা মনে করে যে তারা অপারেটর দ্বারা সেন্সর হচ্ছে। এটি ব্যবহারকারীদের অপারেটরের অনুমতির উপর নির্ভর না করে ZK-রোলআপ থেকে ইথিরিয়াম-এ জোরপূর্বক এক্সিট করার অনুমতি দেয়।
-## ZK-রোলআপস কীভাবে কাজ করে? {#how-do-zk-rollups-work}
+## ZK-রেলআপস কীভাবে কাজ করে? {#how-do-zk-rollups-work}
### লেনদেন {#transactions}
-ZK-রোলআপে ব্যবহারকারীরা লেনদেনে সাইন করে এবং প্রক্রিয়াকরণ এবং পরবর্তী ব্যাচে অন্তর্ভুক্তির জন্য L2 অপারেটরদের কাছে জমা দেয়। কিছু ক্ষেত্রে, অপারেটর একটি কেন্দ্রীভূত সত্তা, যাকে সিকোয়েন্সার বলা হয়, যে লেনদেন সম্পাদন করে, সেগুলোকে ব্যাচে একত্রিত করে এবং L1-এ জমা দেয়। এই সিস্টেমের সিকোয়েন্সারই একমাত্র সত্তা যা L2 ব্লক তৈরি করতে এবং ZK-রোলআপ কন্ট্র্যাক্টে রোলআপ লেনদেন যোগ করার অনুমতি পায়।
+ZK-রোলআপ-এর ব্যবহারকারীরা লেনদেন সাইন করে এবং প্রসেসিং ও পরবর্তী ব্যাচে অন্তর্ভুক্তির জন্য L2 অপারেটরদের কাছে জমা দেয়। কিছু ক্ষেত্রে, অপারেটর হলো একটি সেন্ট্রালাইজড সত্তা, যাকে সিকোয়েন্সার বলা হয়, যে লেনদেন এক্সিকিউট করে, সেগুলোকে ব্যাচে একত্রিত করে এবং L1-এ জমা দেয়। এই সিস্টেমে সিকোয়েন্সার হলো একমাত্র সত্তা যাকে L2 ব্লকস তৈরি করতে এবং ZK-রোলআপ কন্ট্রাক্ট-এ রোলআপ লেনদেন যোগ করার অনুমতি দেওয়া হয়।
-অন্যান্য ZK-রোলআপগুলি একটি [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) ভ্যালিডেটর সেট ব্যবহার করে অপারেটরের ভূমিকা ঘোরাতে পারে। সম্ভাব্য অপারেটররা রোলআপ কন্ট্র্যাক্টে তহবিল জমা দেয়, প্রতিটি স্টেকের আকার স্টেকারের পরবর্তী রোলআপ ব্যাচ তৈরি করার জন্য নির্বাচিত হওয়ার সম্ভাবনাকে প্রভাবিত করে। অপারেটরের স্টেক স্ল্যাশ করা যেতে পারে যদি তারা দূষিতভাবে কাজ করে, যা তাদের বৈধ ব্লক পোস্ট করতে উৎসাহিত করে।
+অন্যান্য ZK-রেলআপস একটি [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos/) ভ্যালিডেটর সেট ব্যবহার করে অপারেটরের ভূমিকা রোটেট করতে পারে। সম্ভাব্য অপারেটররা রোলআপ কন্ট্রাক্ট-এ ফান্ড জমা দেয়, যেখানে প্রতিটি স্টেক-এর আকার পরবর্তী রোলআপ ব্যাচ তৈরি করার জন্য নির্বাচিত হওয়ার স্টেকার-এর সম্ভাবনাকে প্রভাবিত করে। অপারেটর যদি ক্ষতিকারকভাবে কাজ করে তবে তার স্টেক স্ল্যাশিং হতে পারে, যা তাদের বৈধ ব্লকস পোস্ট করতে উৎসাহিত করে।
-#### কীভাবে ZK-রোলআপগুলি ইথেরিয়ামে লেনদেনের ডেটা প্রকাশ করে {#how-zk-rollups-publish-transaction-data-on-ethereum}
+#### ZK-রেলআপস কীভাবে ইথিরিয়াম-এ লেনদেন ডাটা প্রকাশ করে {#how-zk-rollups-publish-transaction-data-on-ethereum}
-যেমনটি ব্যাখ্যা করা হয়েছে, লেনদেনের ডেটা ইথেরিয়ামে `calldata` হিসাবে প্রকাশিত হয়। `calldata` হল একটি স্মার্ট কন্ট্র্যাক্টের একটি ডেটা ক্ষেত্র যা একটি ফাংশনে আর্গুমেন্ট পাস করতে ব্যবহৃত হয় এবং [মেমরি](/developers/docs/smart-contracts/anatomy/#memory)-এর মতো আচরণ করে। যদিও `calldata` ইথেরিয়ামের স্টেটের অংশ হিসেবে সংরক্ষিত হয় না, এটি ইথেরিয়াম চেইনের [হিস্ট্রি লগ](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) এর অংশ হিসেবে অনচেইনে স্থায়ী থাকে। `calldata` ইথেরিয়ামের স্টেটকে প্রভাবিত করে না, যা এটিকে অনচেইনে ডেটা সংরক্ষণের একটি সস্তা উপায় করে তোলে।
+যেমনটি ব্যাখ্যা করা হয়েছে, লেনদেন ডাটা ইথিরিয়াম-এ `calldata` হিসেবে প্রকাশিত হয়। `calldata` হলো একটি স্মার্ট কন্ট্রাক্ট-এর একটি ডাটা এরিয়া যা একটি ফাংশনে আর্গুমেন্ট পাস করতে ব্যবহৃত হয় এবং [মেমরি](/developers/docs/smart-contracts/anatomy/#memory)-এর মতো আচরণ করে। যদিও `calldata` ইথিরিয়াম-এর স্টেট-এর অংশ হিসেবে সংরক্ষিত হয় না, এটি ইথিরিয়াম চেইন-এর [হিস্ট্রি লগস](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)-এর অংশ হিসেবে অনচেইন থেকে যায়। `calldata` ইথিরিয়াম-এর স্টেট-কে প্রভাবিত করে না, যা এটিকে অনচেইন ডাটা সংরক্ষণ করার একটি সস্তা উপায় করে তোলে।
-`calldata` কীওয়ার্ডটি প্রায়শই একটি লেনদেন দ্বারা কল করা স্মার্ট কন্ট্র্যাক্ট পদ্ধতিকে চিহ্নিত করে এবং পদ্ধতিটির ইনপুটগুলিকে একটি নির্বিচার বাইট সিকোয়েন্স আকারে ধারণ করে। ZK-রোলআপগুলি সংকুচিত লেনদেনের ডেটা অনচেইনে প্রকাশ করতে `calldata` ব্যবহার করে; রোলআপ অপারেটর কেবল রোলআপ কন্ট্র্যাক্টে প্রয়োজনীয় ফাংশন কল করে একটি নতুন ব্যাচ যোগ করে এবং সংকুচিত ডেটা ফাংশন আর্গুমেন্ট হিসাবে পাস করে। এটি ব্যবহারকারীদের জন্য খরচ কমাতে সাহায্য করে কারণ রোলআপ ফি-এর একটি বড় অংশ অনচেইনে লেনদেন ডেটা সংরক্ষণে যায়।
+`calldata` কিওয়ার্ডটি প্রায়শই একটি লেনদেন দ্বারা কল করা স্মার্ট কন্ট্রাক্ট মেথডটিকে চিহ্নিত করে এবং বাইটের একটি আরবিট্রারি সিকোয়েন্স আকারে মেথডটিতে ইনপুট ধারণ করে। ZK-রেলআপস অনচেইন সংকুচিত লেনদেন ডাটা প্রকাশ করতে `calldata` ব্যবহার করে; রোলআপ অপারেটর কেবল রোলআপ কন্ট্রাক্ট-এ প্রয়োজনীয় ফাংশন কল করে একটি নতুন ব্যাচ যোগ করে এবং সংকুচিত ডাটা ফাংশন আর্গুমেন্ট হিসেবে পাস করে। এটি ব্যবহারকারীদের জন্য খরচ কমাতে সাহায্য করে কারণ রোলআপ ফি-এর একটি বড় অংশ অনচেইন লেনদেন ডাটা সংরক্ষণের দিকে যায়।
-### স্টেট কমিটমেন্ট {#state-commitments}
+### স্টেট কমিটমেন্টস {#state-commitments}
-ZK-রোলআপের স্টেট, যার মধ্যে L2 অ্যাকাউন্ট এবং ব্যালেন্স অন্তর্ভুক্ত, একটি [Merkle ট্রি](/whitepaper/#merkle-trees) হিসাবে উপস্থাপন করা হয়। Merkle ট্রির রুটের (Merkle রুট) একটি ক্রিপ্টোগ্রাফিক হ্যাশ অনচেইন কন্ট্র্যাক্টে সংরক্ষণ করা হয়, যা রোলআপ প্রোটোকলকে ZK-রোলআপের স্টেটের পরিবর্তনগুলি ট্র্যাক করার অনুমতি দেয়।
+ZK-রোলআপ-এর স্টেট, যার মধ্যে L2 একাউন্ট এবং ব্যালেন্স অন্তর্ভুক্ত, একটি [মার্কেল ট্রি](/whitepaper/#merkle-trees) হিসেবে উপস্থাপন করা হয়। মার্কেল ট্রি-এর রুটের (মার্কেল রুট) একটি ক্রিপ্টোগ্রাফিক হ্যাস অনচেইন কন্ট্রাক্ট-এ সংরক্ষিত থাকে, যা রোলআপ প্রটোকল-কে ZK-রোলআপ-এর স্টেট-এ পরিবর্তনগুলো ট্র্যাক করতে দেয়।
-রোলআপটি একটি নতুন সেট লেনদেন কার্যকর করার পরে একটি নতুন স্টেটে রূপান্তরিত হয়। যে অপারেটর স্টেট ট্রানজিশন শুরু করেছে তাকে একটি নতুন স্টেট রুট গণনা করতে হবে এবং অনচেইন কন্ট্র্যাক্টে জমা দিতে হবে। যদি ব্যাচের সাথে যুক্ত ভ্যালিডিটি প্রুফ ভেরিফায়ার কন্ট্র্যাক্ট দ্বারা প্রমাণীকৃত হয়, তবে নতুন Merkle রুটটি ZK-রোলআপের ক্যানোনিকাল স্টেট রুটে পরিণত হয়।
+লেনদেন-এর একটি নতুন সেট এক্সিকিউট করার পরে রোলআপ একটি নতুন স্টেট-এ ট্রানজিশন করে। যে অপারেটর স্টেট ট্রানজিশন শুরু করেছে তাকে একটি নতুন স্টেট রুট গণনা করতে হবে এবং অনচেইন কন্ট্রাক্ট-এ জমা দিতে হবে। যদি ব্যাচের সাথে যুক্ত ভ্যালিডিটি প্রুফ ভেরিফায়ার কন্ট্রাক্ট দ্বারা প্রমাণীকৃত হয়, তবে নতুন মার্কেল রুট ZK-রোলআপ-এর ক্যানোনিকাল স্টেট রুট হয়ে যায়।
-স্টেট রুট গণনা করার পাশাপাশি, ZK-রোলআপ অপারেটর একটি ব্যাচ রুটও তৈরি করে—একটি Merkle ট্রির রুট যা একটি ব্যাচের সমস্ত লেনদেন নিয়ে গঠিত। যখন একটি নতুন ব্যাচ জমা দেওয়া হয়, তখন রোলআপ কন্ট্র্যাক্টটি ব্যাচ রুট সংরক্ষণ করে, যা ব্যবহারকারীদের একটি লেনদেন (যেমন, একটি উইথড্রয়াল অনুরোধ) ব্যাচে অন্তর্ভুক্ত ছিল তা প্রমাণ করতে দেয়। ব্যবহারকারীদের লেনদেনের বিবরণ, ব্যাচ রুট এবং অন্তর্ভুক্তি পথ দেখানো একটি [Merkle প্রুফ](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) প্রদান করতে হবে।
+স্টেট রুট গণনা করার পাশাপাশি, ZK-রোলআপ অপারেটর একটি ব্যাচ রুটও তৈরি করে—একটি মার্কেল ট্রি-এর রুট যা একটি ব্যাচের সমস্ত লেনদেন নিয়ে গঠিত। যখন একটি নতুন ব্যাচ জমা দেওয়া হয়, রোলআপ কন্ট্রাক্ট ব্যাচ রুট সংরক্ষণ করে, যা ব্যবহারকারীদের প্রমাণ করতে দেয় যে একটি লেনদেন (যেমন, একটি উত্তোলনের অনুরোধ) ব্যাচে অন্তর্ভুক্ত ছিল। ব্যবহারকারীদের লেনদেন-এর বিবরণ, ব্যাচ রুট এবং অন্তর্ভুক্তি পথ দেখানো একটি [মার্কেল প্রুফ](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) প্রদান করতে হবে।
### ভ্যালিডিটি প্রুফ {#validity-proofs}
-ZK-রোলআপ অপারেটর L1 কন্ট্র্যাক্টে যে নতুন স্টেট রুট জমা দেয় তা হল রোলআপের স্টেটের আপডেটের ফলাফল। ধরা যাক অ্যালিস ববকে 10টি টোকেন পাঠায়, অপারেটর কেবল অ্যালিসের ব্যালেন্স 10 কমিয়ে দেয় এবং ববের ব্যালেন্স 10 বাড়িয়ে দেয়। অপারেটর তারপর আপডেটেড অ্যাকাউন্টের ডেটা হ্যাশ করে, রোলআপের Merkle ট্রি পুনর্নির্মাণ করে, এবং নতুন Merkle রুটটি অনচেইন কন্ট্র্যাক্টে জমা দেয়।
+ZK-রোলআপ অপারেটর L1 কন্ট্রাক্ট-এ যে নতুন স্টেট রুট জমা দেয় তা হলো রোলআপ-এর স্টেট-এ আপডেটের ফলাফল। ধরুন এলিস ববকে 10 টোকেন পাঠায়, অপারেটর কেবল এলিসের ব্যালেন্স 10 কমিয়ে দেয় এবং ববের ব্যালেন্স 10 বাড়িয়ে দেয়। অপারেটর তারপর আপডেট করা একাউন্ট ডাটা হ্যাস করে, রোলআপ-এর মার্কেল ট্রি পুনর্নির্মাণ করে এবং নতুন মার্কেল রুট অনচেইন কন্ট্রাক্ট-এ জমা দেয়।
-কিন্তু রোলআপ কন্ট্র্যাক্ট প্রস্তাবিত স্টেট কমিটমেন্টটি স্বয়ংক্রিয়ভাবে গ্রহণ করবে না যতক্ষণ না অপারেটর প্রমাণ করে যে নতুন Merkle রুটটি রোলআপের স্টেটে সঠিক আপডেটের ফলে হয়েছে। ZK-রোলআপ অপারেটর এটি একটি ভ্যালিডিটি প্রুফ তৈরি করে করে, যা একটি সংক্ষিপ্ত ক্রিপ্টোগ্রাফিক কমিটমেন্ট যা ব্যাচড লেনদেনের সঠিকতা যাচাই করে।
+কিন্তু রোলআপ কন্ট্রাক্ট স্বয়ংক্রিয়ভাবে প্রস্তাবিত স্টেট কমিটমেন্ট গ্রহণ করবে না যতক্ষণ না অপারেটর প্রমাণ করে যে নতুন মার্কেল রুট রোলআপ-এর স্টেট-এ সঠিক আপডেটের ফলে হয়েছে। ZK-রোলআপ অপারেটর একটি ভ্যালিডিটি প্রুফ তৈরি করে এটি করে, যা ব্যাচ করা লেনদেন-এর সঠিকতা যাচাই করার একটি সংক্ষিপ্ত ক্রিপ্টোগ্রাফিক কমিটমেন্ট।
-ভ্যালিডিটি প্রুফগুলি পক্ষগুলিকে বিবৃতিটি প্রকাশ না করেই একটি বিবৃতির সঠিকতা প্রমাণ করার অনুমতি দেয়—তাই, এগুলিকে জিরো-নলেজ প্রুফও বলা হয়। ZK-রোলআপগুলি ইথেরিয়ামে লেনদেন পুনরায় কার্যকর না করেই অফচেইন স্টেট ট্রানজিশনের সঠিকতা নিশ্চিত করতে ভ্যালিডিটি প্রুফ ব্যবহার করে। এই প্রমাণগুলি একটি [ZK-SNARK](https://arxiv.org/abs/2202.06877) (জিরো-নলেজ সাক্সিন্ট নন-ইন্টারেক্টিভ আর্গুমেন্ট অফ নলেজ) বা [ZK-STARK](https://eprint.iacr.org/2018/046) (জিরো-নলেজ স্কেলেবল ট্রান্সপারেন্ট আর্গুমেন্ট অফ নলেজ) আকারে আসতে পারে।
+ভ্যালিডিটি প্রুফ পক্ষগুলোকে স্টেটমেন্টটি প্রকাশ না করেই একটি স্টেটমেন্টের সঠিকতা প্রমাণ করার অনুমতি দেয়—তাই, এগুলোকে জিরো-নলেজ প্রুফও বলা হয়। ZK-রেলআপস ইথিরিয়াম-এ লেনদেন পুনরায় এক্সিকিউট না করেই অফচেইন স্টেট ট্রানজিশনগুলোর সঠিকতা নিশ্চিত করতে ভ্যালিডিটি প্রুফ ব্যবহার করে। এই প্রুফগুলো একটি [ZK-SNARK](https://arxiv.org/abs/2202.06877) (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) বা [ZK-STARK](https://eprint.iacr.org/2018/046) (Zero-Knowledge Scalable Transparent Argument of Knowledge) আকারে আসতে পারে।
-SNARKs এবং STARKs উভয়ই ZK-রোলআপগুলিতে অফচেইন গণনার অখণ্ডতা প্রমাণ করতে সাহায্য করে, যদিও প্রতিটি প্রুফের ধরনের স্বতন্ত্র বৈশিষ্ট্য রয়েছে।
+SNARKs এবং STARKs উভয়ই ZK-রেলআপস-এ অফচেইন কম্পিউটেশনের অখণ্ডতা প্রমাণ করতে সাহায্য করে, যদিও প্রতিটি প্রুফ টাইপের স্বতন্ত্র বৈশিষ্ট্য রয়েছে।
**ZK-SNARKs**
-ZK-SNARK প্রোটোকল কাজ করার জন্য, একটি কমন রেফারেন্স স্ট্রিং (CRS) তৈরি করা প্রয়োজন: CRS ভ্যালিডিটি প্রুফ প্রমাণ এবং যাচাই করার জন্য পাবলিক প্যারামিটার সরবরাহ করে। প্রুভিং সিস্টেমের নিরাপত্তা CRS সেটআপের উপর নির্ভর করে; যদি পাবলিক প্যারামিটার তৈরি করতে ব্যবহৃত তথ্য ক্ষতিকারক অভিনেতাদের দখলে চলে যায় তবে তারা মিথ্যা ভ্যালিডিটি প্রুফ তৈরি করতে সক্ষম হতে পারে।
+ZK-SNARK প্রটোকল কাজ করার জন্য, একটি কমন রেফারেন্স স্ট্রিং (CRS) তৈরি করা প্রয়োজন: CRS ভ্যালিডিটি প্রুফ প্রমাণ এবং যাচাই করার জন্য পাবলিক প্যারামিটার প্রদান করে। প্রুভিং সিস্টেমের নিরাপত্তা CRS সেটআপের উপর নির্ভর করে; যদি পাবলিক প্যারামিটার তৈরি করতে ব্যবহৃত তথ্য ক্ষতিকারক অভিনেতাদের দখলে চলে যায় তবে তারা মিথ্যা ভ্যালিডিটি প্রুফ তৈরি করতে সক্ষম হতে পারে।
-কিছু ZK-রোলআপ একটি [মাল্টি-পার্টি কম্পিউটেশন সেরেমনি (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) ব্যবহার করে এই সমস্যার সমাধান করার চেষ্টা করে, যেখানে বিশ্বস্ত ব্যক্তিরা ZK-SNARK সার্কিটের জন্য পাবলিক প্যারামিটার তৈরি করে। প্রতিটি পক্ষ CRS নির্মাণের জন্য কিছু র্যান্ডমনেস (যাকে "টক্সিক ওয়েস্ট" বলা হয়) অবদান রাখে, যা তাদের অবশ্যই অবিলম্বে ধ্বংস করতে হবে।
+কিছু ZK-রেলআপস বিশ্বস্ত ব্যক্তিদের জড়িত করে একটি [মাল্টি-পার্টি কম্পিউটেশন সেরিমনি (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) ব্যবহার করে এই সমস্যার সমাধান করার চেষ্টা করে, যাতে ZK-SNARK সার্কিটের জন্য পাবলিক প্যারামিটার তৈরি করা যায়। প্রতিটি পক্ষ CRS নির্মাণের জন্য কিছু র্যান্ডমনেস (যাকে "টক্সিক ওয়েস্ট" বলা হয়) অবদান রাখে, যা তাদের অবিলম্বে ধ্বংস করতে হবে।
-ট্রাস্টেড সেটআপ ব্যবহার করা হয় কারণ তারা CRS সেটআপের নিরাপত্তা বাড়ায়। যতক্ষণ পর্যন্ত একজন সৎ অংশগ্রহণকারী তাদের ইনপুট ধ্বংস করে, ততক্ষণ ZK-SNARK সিস্টেমের নিরাপত্তা নিশ্চিত করা হয়। তবুও, এই পদ্ধতির জন্য জড়িতদের তাদের নমুনা র্যান্ডমনেস মুছে ফেলার উপর এবং সিস্টেমের নিরাপত্তা গ্যারান্টিকে দুর্বল না করার উপর বিশ্বাস রাখতে হয়।
+ট্রাস্টেড সেটআপগুলো ব্যবহৃত হয় কারণ এগুলো CRS সেটআপের নিরাপত্তা বাড়ায়। যতক্ষণ পর্যন্ত একজন সৎ অংশগ্রহণকারী তাদের ইনপুট ধ্বংস করে, ZK-SNARK সিস্টেমের নিরাপত্তা নিশ্চিত করা হয়। তবুও, এই পদ্ধতির জন্য জড়িতদের তাদের স্যাম্পল করা র্যান্ডমনেস মুছে ফেলার এবং সিস্টেমের নিরাপত্তা গ্যারান্টিগুলোকে ক্ষুণ্ন না করার জন্য বিশ্বাস করা প্রয়োজন।
-বিশ্বাসের অনুমান বাদ দিলে, ZK-SNARK গুলি তাদের ছোট প্রুফ সাইজ এবং কনস্ট্যান্ট-টাইম ভেরিফিকেশনের জন্য জনপ্রিয়। যেহেতু L1-এ প্রুফ ভেরিফিকেশন একটি ZK-রোলআপ পরিচালনার বৃহত্তর খরচ গঠন করে, L2 গুলি ZK-SNARK ব্যবহার করে এমন প্রুফ তৈরি করে যা মেইননেটে দ্রুত এবং সস্তায় যাচাই করা যায়।
+ট্রাস্ট অনুমানগুলো বাদ দিলে, ZK-SNARKs তাদের ছোট প্রুফ সাইজ এবং কনস্ট্যান্ট-টাইম ভেরিফিকেশনের জন্য জনপ্রিয়। যেহেতু L1-এ প্রুফ ভেরিফিকেশন একটি ZK-রোলআপ পরিচালনার বৃহত্তর খরচ গঠন করে, L2s ZK-SNARKs ব্যবহার করে এমন প্রুফ তৈরি করে যা মেইননেট-এ দ্রুত এবং সস্তায় যাচাই করা যায়।
**ZK-STARKs**
-ZK-SNARKs-এর মতো, ZK-STARKs ইনপুট প্রকাশ না করেই অফচেইন গণনার বৈধতা প্রমাণ করে। যাইহোক, ZK-STARKs তাদের স্কেলেবিলিটি এবং স্বচ্ছতার কারণে ZK-SNARKs-এর উপর একটি উন্নতি হিসাবে বিবেচিত হয়।
+ZK-SNARKs-এর মতো, ZK-STARKs ইনপুটগুলো প্রকাশ না করেই অফচেইন কম্পিউটেশনের বৈধতা প্রমাণ করে। তবে, ZK-STARKs-কে তাদের স্কেলেবিলিটি এবং স্বচ্ছতার কারণে ZK-SNARKs-এর একটি উন্নতি হিসেবে বিবেচনা করা হয়।
-ZK-STARKs 'স্বচ্ছ', কারণ তারা কমন রেফারেন্স স্ট্রিং (CRS) এর বিশ্বস্ত সেটআপ ছাড়াই কাজ করতে পারে। এর পরিবর্তে, ZK-STARKs প্রমাণ তৈরি এবং যাচাই করার জন্য প্যারামিটার সেট আপ করতে সর্বজনীনভাবে যাচাইযোগ্য র্যান্ডমনেসের উপর নির্ভর করে।
+ZK-STARKs হলো 'স্বচ্ছ', কারণ এগুলো একটি কমন রেফারেন্স স্ট্রিং (CRS)-এর ট্রাস্টেড সেটআপ ছাড়াই কাজ করতে পারে। পরিবর্তে, ZK-STARKs প্রুফ তৈরি এবং যাচাই করার জন্য প্যারামিটার সেট আপ করতে সর্বজনীনভাবে যাচাইযোগ্য র্যান্ডমনেস-এর উপর নির্ভর করে।
-ZK-STARKs আরও বেশি স্কেলেবিলিটি প্রদান করে কারণ ভ্যালিডিটি প্রুফ প্রমাণ এবং যাচাই করার জন্য প্রয়োজনীয় সময় অন্তর্নিহিত গণনার জটিলতার সাথে _কোয়াসিলিনিয়ারলি_ বৃদ্ধি পায়। ZK-SNARKs-এর সাথে, প্রুভিং এবং ভেরিফিকেশন সময় অন্তর্নিহিত গণনার আকারের সাথে _লিনিয়ারলি_ স্কেল করে। এর মানে হল যখন বড় ডেটাসেট জড়িত থাকে তখন ZK-STARKs প্রুভিং এবং ভেরিফিকেশনের জন্য ZK-SNARKs-এর চেয়ে কম সময় নেয়, যা তাদের উচ্চ-ভলিউম অ্যাপ্লিকেশনের জন্য উপযোগী করে তোলে।
+ZK-STARKs আরও স্কেলেবিলিটি প্রদান করে কারণ ভ্যালিডিটি প্রুফ প্রমাণ এবং যাচাই করার জন্য প্রয়োজনীয় সময় অন্তর্নিহিত কম্পিউটেশনের জটিলতার সাথে সম্পর্কিতভাবে _কোয়াসিলিনিয়ারলি_ বৃদ্ধি পায়। ZK-SNARKs-এর সাথে, প্রমাণ এবং যাচাইকরণের সময় অন্তর্নিহিত কম্পিউটেশনের আকারের সাথে সম্পর্কিতভাবে _লিনিয়ারলি_ স্কেল করে। এর মানে হলো যখন বড় ডেটাসেট জড়িত থাকে তখন প্রমাণ এবং যাচাই করার জন্য ZK-STARKs-এর ZK-SNARKs-এর চেয়ে কম সময় লাগে, যা এগুলোকে হাই-ভলিউম অ্যাপ্লিকেশনের জন্য দরকারী করে তোলে।
-ZK-STARKs কোয়ান্টাম কম্পিউটারের বিরুদ্ধেও সুরক্ষিত, যেখানে ZK-SNARKs-এ ব্যবহৃত এলিপটিক কার্ভ ক্রিপ্টোগ্রাফি (ECC) কোয়ান্টাম কম্পিউটিং আক্রমণের জন্য সংবেদনশীল বলে ব্যাপকভাবে বিশ্বাস করা হয়। ZK-STARKs-এর অসুবিধা হল যে তারা বড় প্রুফ সাইজ তৈরি করে, যা ইথেরিয়ামে যাচাই করা আরও ব্যয়বহুল।
+ZK-STARKs কোয়ান্টাম কম্পিউটারের বিরুদ্ধেও নিরাপদ, যেখানে ZK-SNARKs-এ ব্যবহৃত এলিপটিক কার্ভ ক্রিপ্টোগ্রাফি (ECC) ব্যাপকভাবে কোয়ান্টাম কম্পিউটিং আক্রমণের জন্য সংবেদনশীল বলে মনে করা হয়। ZK-STARKs-এর নেতিবাচক দিক হলো যে এগুলো বড় প্রুফ সাইজ তৈরি করে, যা ইথিরিয়াম-এ যাচাই করা বেশি ব্যয়বহুল।
-#### ZK-রোলআপগুলিতে ভ্যালিডিটি প্রুফগুলি কীভাবে কাজ করে? {#validity-proofs-in-zk-rollups}
+#### ZK-রেলআপস-এ ভ্যালিডিটি প্রুফ কীভাবে কাজ করে? {#validity-proofs-in-zk-rollups}
##### প্রুফ জেনারেশন
-লেনদেন গ্রহণ করার আগে, অপারেটর স্বাভাবিক চেকগুলি সম্পাদন করবে। এর মধ্যে রয়েছে নিশ্চিত করা:
+লেনদেন গ্রহণ করার আগে, অপারেটর স্বাভাবিক চেকগুলো সম্পাদন করবে। এর মধ্যে নিশ্চিত করা অন্তর্ভুক্ত যে:
-- প্রেরক এবং প্রাপকের অ্যাকাউন্টগুলি স্টেট ট্রি-এর অংশ।
-- লেনদেন প্রক্রিয়া করার জন্য প্রেরকের কাছে পর্যাপ্ত তহবিল রয়েছে।
-- লেনদেনটি সঠিক এবং রোলআপে প্রেরকের পাবলিক কী-এর সাথে মিলে যায়।
+- প্রেরক এবং প্রাপক একাউন্ট স্টেট ট্রি-এর অংশ।
+- লেনদেন প্রসেস করার জন্য প্রেরকের কাছে পর্যাপ্ত ফান্ড রয়েছে।
+- লেনদেনটি সঠিক এবং রোলআপ-এ প্রেরকের পাবলিক কি-এর সাথে মেলে।
- প্রেরকের নন্স সঠিক, ইত্যাদি।
-একবার ZK-রোলআপ নোডে পর্যাপ্ত লেনদেন হয়ে গেলে, এটি সেগুলিকে একটি ব্যাচে একত্রিত করে এবং প্রুভিং সার্কিটের জন্য ইনপুট কম্পাইল করে একটি সংক্ষিপ্ত ZK-প্রুফে কম্পাইল করে। এর মধ্যে রয়েছে:
+একবার ZK-রোলআপ নোড-এ পর্যাপ্ত লেনদেন হয়ে গেলে, এটি সেগুলোকে একটি ব্যাচে একত্রিত করে এবং প্রুভিং সার্কিটের জন্য ইনপুটগুলো কম্পাইল করে যাতে একটি সংক্ষিপ্ত ZK-প্রুফ-এ কম্পাইল করা যায়। এর মধ্যে অন্তর্ভুক্ত:
-- ব্যাচের সমস্ত লেনদেন নিয়ে গঠিত একটি Merkle ট্রি রুট।
-- ব্যাচে অন্তর্ভুক্তি প্রমাণ করার জন্য লেনদেনের জন্য Merkle প্রুফ।
-- লেনদেনের প্রতিটি প্রেরক-প্রাপক জোড়ার জন্য Merkle প্রুফ প্রমাণ করতে যে সেই অ্যাকাউন্টগুলি রোলআপের স্টেট ট্রি-এর অংশ।
-- একটি সেট ইন্টারমিডিয়েট স্টেট রুট, প্রতিটি লেনদেনের জন্য স্টেট আপডেট প্রয়োগ করার পরে স্টেট রুট আপডেট করে প্রাপ্ত (যেমন, প্রেরকের অ্যাকাউন্ট কমানো এবং প্রাপকের অ্যাকাউন্ট বাড়ানো)।
+- ব্যাচের সমস্ত লেনদেন নিয়ে গঠিত একটি মার্কেল ট্রি রুট।
+- ব্যাচে অন্তর্ভুক্তি প্রমাণ করার জন্য লেনদেন-এর জন্য মার্কেল প্রুফ।
+- লেনদেন-এ প্রতিটি প্রেরক-প্রাপক জোড়ার জন্য মার্কেল প্রুফ প্রমাণ করার জন্য যে সেই একাউন্ট-গুলো রোলআপ-এর স্টেট ট্রি-এর অংশ।
+- ইন্টারমিডিয়েট স্টেট রুটগুলোর একটি সেট, যা প্রতিটি লেনদেন-এর জন্য স্টেট আপডেট প্রয়োগ করার পরে স্টেট রুট আপডেট করা থেকে প্রাপ্ত (অর্থাৎ, প্রেরক একাউন্ট কমানো এবং প্রাপক একাউন্ট বাড়ানো)।
-প্রুভিং সার্কিট প্রতিটি লেনদেনের উপর "লুপিং" করে ভ্যালিডিটি প্রুফ গণনা করে এবং লেনদেন প্রক্রিয়া করার আগে অপারেটরের করা একই চেক সম্পাদন করে। প্রথমে, এটি প্রদত্ত Merkle প্রুফ ব্যবহার করে যাচাই করে যে প্রেরকের অ্যাকাউন্টটি বিদ্যমান স্টেট রুটের অংশ। তারপর এটি প্রেরকের ব্যালেন্স কমায়, তাদের নন্স বাড়ায়, আপডেটেড অ্যাকাউন্টের ডেটা হ্যাশ করে এবং একটি নতুন Merkle রুট তৈরি করতে Merkle প্রুফের সাথে একত্রিত করে।
+প্রুভিং সার্কিট প্রতিটি লেনদেন-এর উপর "লুপিং" করে এবং লেনদেন প্রসেস করার আগে অপারেটর যে চেকগুলো সম্পন্ন করেছিল তা সম্পাদন করে ভ্যালিডিটি প্রুফ গণনা করে। প্রথমে, এটি প্রদত্ত মার্কেল প্রুফ ব্যবহার করে যাচাই করে যে প্রেরকের একাউন্ট বিদ্যমান স্টেট রুটের অংশ। তারপর এটি প্রেরকের ব্যালেন্স কমায়, তাদের নন্স বাড়ায়, আপডেট করা একাউন্ট ডাটা হ্যাস করে এবং একটি নতুন মার্কেল রুট তৈরি করতে মার্কেল প্রুফ-এর সাথে একত্রিত করে।
-এই Merkle রুটটি ZK-রোলআপের স্টেটের একমাত্র পরিবর্তনকে প্রতিফলিত করে: প্রেরকের ব্যালেন্স এবং নন্সের পরিবর্তন। এটি সম্ভব কারণ অ্যাকাউন্টের অস্তিত্ব প্রমাণ করতে ব্যবহৃত Merkle প্রুফটি নতুন স্টেট রুট বের করতে ব্যবহৃত হয়।
+এই মার্কেল রুট ZK-রোলআপ-এর স্টেট-এ একমাত্র পরিবর্তন প্রতিফলিত করে: প্রেরকের ব্যালেন্স এবং নন্স-এ একটি পরিবর্তন। এটি সম্ভব কারণ একাউন্ট-এর অস্তিত্ব প্রমাণ করতে ব্যবহৃত মার্কেল প্রুফ নতুন স্টেট রুট বের করতে ব্যবহৃত হয়।
-প্রুভিং সার্কিট প্রাপকের অ্যাকাউন্টে একই প্রক্রিয়া সম্পাদন করে। এটি পরীক্ষা করে যে প্রাপকের অ্যাকাউন্টটি ইন্টারমিডিয়েট স্টেট রুটের অধীনে বিদ্যমান কিনা (Merkle প্রুফ ব্যবহার করে), তাদের ব্যালেন্স বাড়ায়, অ্যাকাউন্টের ডেটা পুনরায় হ্যাশ করে এবং একটি নতুন স্টেট রুট তৈরি করতে Merkle প্রুফের সাথে একত্রিত করে।
+প্রুভিং সার্কিট প্রাপকের একাউন্ট-এ একই প্রক্রিয়া সম্পাদন করে। এটি চেক করে যে প্রাপকের একাউন্ট ইন্টারমিডিয়েট স্টেট রুটের অধীনে বিদ্যমান কিনা (মার্কেল প্রুফ ব্যবহার করে), তাদের ব্যালেন্স বাড়ায়, একাউন্ট ডাটা পুনরায় হ্যাস করে এবং একটি নতুন স্টেট রুট তৈরি করতে মার্কেল প্রুফ-এর সাথে একত্রিত করে।
-প্রক্রিয়াটি প্রতিটি লেনদেনের জন্য পুনরাবৃত্তি হয়; প্রতিটি "লুপ" প্রেরকের অ্যাকাউন্ট আপডেট করে একটি নতুন স্টেট রুট তৈরি করে এবং প্রাপকের অ্যাকাউন্ট আপডেট করে একটি পরবর্তী নতুন রুট তৈরি করে। যেমন ব্যাখ্যা করা হয়েছে, স্টেট রুটের প্রতিটি আপডেট রোলআপের স্টেট ট্রি-এর একটি অংশের পরিবর্তনকে প্রতিনিধিত্ব করে।
+প্রক্রিয়াটি প্রতিটি লেনদেন-এর জন্য পুনরাবৃত্তি হয়; প্রতিটি "লুপ" প্রেরকের একাউন্ট আপডেট করা থেকে একটি নতুন স্টেট রুট তৈরি করে এবং প্রাপকের একাউন্ট আপডেট করা থেকে পরবর্তী একটি নতুন রুট তৈরি করে। যেমনটি ব্যাখ্যা করা হয়েছে, স্টেট রুটের প্রতিটি আপডেট রোলআপ-এর স্টেট ট্রি-এর একটি অংশের পরিবর্তনকে উপস্থাপন করে।
-ZK-প্রুভিং সার্কিট পুরো লেনদেন ব্যাচের উপর পুনরাবৃত্তি করে, আপডেটের ক্রম যাচাই করে যা শেষ লেনদেন কার্যকর হওয়ার পরে একটি চূড়ান্ত স্টেট রুটের ফল দেয়। গণনাকৃত শেষ Merkle রুটটি ZK-রোলআপের নতুন ক্যানোনিকাল স্টেট রুটে পরিণত হয়।
+ZK-প্রুভিং সার্কিট সম্পূর্ণ লেনদেন ব্যাচের উপর পুনরাবৃত্তি করে, আপডেটের ক্রম যাচাই করে যা শেষ লেনদেন এক্সিকিউট হওয়ার পরে একটি চূড়ান্ত স্টেট রুটে পরিণত হয়। গণনা করা শেষ মার্কেল রুট ZK-রোলআপ-এর নতুন ক্যানোনিকাল স্টেট রুট হয়ে যায়।
##### প্রুফ ভেরিফিকেশন
-প্রুভিং সার্কিট স্টেট আপডেটের সঠিকতা যাচাই করার পরে, L2 অপারেটর গণনাকৃত ভ্যালিডিটি প্রুফটি L1-এর ভেরিফায়ার কন্ট্র্যাক্টে জমা দেয়। কন্ট্র্যাক্টের ভেরিফিকেশন সার্কিট প্রুফের বৈধতা যাচাই করে এবং প্রুফের অংশ গঠনকারী পাবলিক ইনপুটগুলিও পরীক্ষা করে:
+প্রুভিং সার্কিট স্টেট আপডেটগুলোর সঠিকতা যাচাই করার পরে, L2 অপারেটর L1-এ ভেরিফায়ার কন্ট্রাক্ট-এ গণনা করা ভ্যালিডিটি প্রুফ জমা দেয়। কন্ট্রাক্ট-এর ভেরিফিকেশন সার্কিট প্রুফ-এর বৈধতা যাচাই করে এবং প্রুফ-এর অংশ গঠনকারী পাবলিক ইনপুটগুলোও চেক করে:
-- **প্রি-স্টেট রুট**: ZK-রোলআপের পুরানো স্টেট রুট (অর্থাৎ, ব্যাচড লেনদেন কার্যকর হওয়ার আগে), যা L2 চেইনের শেষ পরিচিত বৈধ স্টেটকে প্রতিফলিত করে।
+- **প্রি-স্টেট রুট**: ZK-রোলআপ-এর পুরানো স্টেট রুট (অর্থাৎ, ব্যাচ করা লেনদেন এক্সিকিউট হওয়ার আগে), যা L2 চেইন-এর সর্বশেষ পরিচিত বৈধ স্টেট প্রতিফলিত করে।
-- **পোস্ট-স্টেট রুট**: ZK-রোলআপের নতুন স্টেট রুট (অর্থাৎ, ব্যাচড লেনদেন কার্যকর হওয়ার পরে), যা L2 চেইনের নতুন স্টেটকে প্রতিফলিত করে। পোস্ট-স্টেট রুট হল প্রুভিং সার্কিটে স্টেট আপডেট প্রয়োগ করার পরে প্রাপ্ত চূড়ান্ত রুট।
+- **পোস্ট-স্টেট রুট**: ZK-রোলআপ-এর নতুন স্টেট রুট (অর্থাৎ, ব্যাচ করা লেনদেন এক্সিকিউট হওয়ার পরে), যা L2 চেইন-এর নতুন স্টেট প্রতিফলিত করে। পোস্ট-স্টেট রুট হলো প্রুভিং সার্কিটে স্টেট আপডেট প্রয়োগ করার পরে প্রাপ্ত চূড়ান্ত রুট।
-- **ব্যাচ রুট**: ব্যাচের Merkle রুট, যা ব্যাচের লেনদেনগুলি _merklizing_ করে এবং ট্রি-এর রুট হ্যাশ করে প্রাপ্ত হয়।
+- **ব্যাচ রুট**: ব্যাচের মার্কেল রুট, যা ব্যাচে লেনদেন _মার্কেলাইজিং_ করে এবং ট্রি-এর রুট হ্যাস করে প্রাপ্ত হয়।
-- **লেনদেন ইনপুট**: জমা দেওয়া ব্যাচের অংশ হিসাবে কার্যকর করা লেনদেনের সাথে যুক্ত ডেটা।
+- **লেনদেন ইনপুটস**: জমা দেওয়া ব্যাচের অংশ হিসেবে এক্সিকিউট করা লেনদেন-এর সাথে যুক্ত ডাটা।
-যদি প্রুফটি সার্কিটকে সন্তুষ্ট করে (অর্থাৎ, এটি বৈধ), তবে এর মানে হল যে একটি বৈধ লেনদেনের ক্রম বিদ্যমান যা রোলআপটিকে পূর্ববর্তী স্টেট (প্রি-স্টেট রুট দ্বারা ক্রিপ্টোগ্রাফিকভাবে ফিঙ্গারপ্রিন্ট করা) থেকে একটি নতুন স্টেটে (পোস্ট-স্টেট রুট দ্বারা ক্রিপ্টোগ্রাফিকভাবে ফিঙ্গারপ্রিন্ট করা) রূপান্তরিত করে। যদি প্রি-স্টেট রুটটি রোলআপ কন্ট্র্যাক্টে সংরক্ষিত রুটের সাথে মিলে যায়, এবং প্রুফটি বৈধ হয়, তবে রোলআপ কন্ট্র্যাক্টটি প্রুফ থেকে পোস্ট-স্টেট রুট নেয় এবং রোলআপের পরিবর্তিত স্টেটকে প্রতিফলিত করতে তার স্টেট ট্রি আপডেট করে।
+যদি প্রুফ সার্কিটকে সন্তুষ্ট করে (অর্থাৎ, এটি বৈধ), এর মানে হলো যে বৈধ লেনদেন-এর একটি ক্রম বিদ্যমান যা রোলআপ-কে পূর্ববর্তী স্টেট (প্রি-স্টেট রুট দ্বারা ক্রিপ্টোগ্রাফিকভাবে ফিঙ্গারপ্রিন্ট করা) থেকে একটি নতুন স্টেট-এ (পোস্ট-স্টেট রুট দ্বারা ক্রিপ্টোগ্রাফিকভাবে ফিঙ্গারপ্রিন্ট করা) ট্রানজিশন করে। যদি প্রি-স্টেট রুট রোলআপ কন্ট্রাক্ট-এ সংরক্ষিত রুটের সাথে মেলে এবং প্রুফ বৈধ হয়, তবে রোলআপ কন্ট্রাক্ট প্রুফ থেকে পোস্ট-স্টেট রুট নেয় এবং রোলআপ-এর পরিবর্তিত স্টেট প্রতিফলিত করতে এর স্টেট ট্রি আপডেট করে।
-### প্রবেশ এবং প্রস্থান {#entries-and-exits}
+### এন্ট্রি এবং এক্সিট {#entries-and-exits}
-ব্যবহারকারীরা L1 চেইনে ডিপ্লয় করা রোলআপের কন্ট্র্যাক্টে টোকেন জমা দিয়ে ZK-রোলআপে প্রবেশ করে। এই লেনদেনটি কিউতে থাকে কারণ শুধুমাত্র অপারেটররাই রোলআপ কন্ট্র্যাক্টে লেনদেন জমা দিতে পারে।
+ব্যবহারকারীরা L1 চেইন-এ ডেপ্লয় করা রোলআপ-এর কন্ট্রাক্ট-এ টোকেন জমা দিয়ে ZK-রোলআপ-এ প্রবেশ করে। এই লেনদেনটি সারিবদ্ধ করা হয় কারণ শুধুমাত্র অপারেটররা রোলআপ কন্ট্রাক্ট-এ লেনদেন জমা দিতে পারে।
-যদি পেন্ডিং ডিপোজিট কিউ পূর্ণ হতে শুরু করে, ZK-রোলআপ অপারেটর ডিপোজিট লেনদেনগুলি নিয়ে রোলআপ কন্ট্র্যাক্টে জমা দেবে। একবার ব্যবহারকারীর তহবিল রোলআপে চলে গেলে, তারা প্রক্রিয়াকরণের জন্য অপারেটরের কাছে লেনদেন পাঠিয়ে লেনদেন শুরু করতে পারে। ব্যবহারকারীরা তাদের অ্যাকাউন্টের ডেটা হ্যাশ করে, হ্যাশটি রোলআপ কন্ট্র্যাক্টে পাঠিয়ে এবং বর্তমান স্টেট রুটের বিপরীতে যাচাই করার জন্য একটি Merkle প্রুফ প্রদান করে রোলআপে ব্যালেন্স যাচাই করতে পারে।
+যদি পেন্ডিং ডিপোজিট কিউ পূর্ণ হতে শুরু করে, ZK-রোলআপ অপারেটর ডিপোজিট লেনদেনগুলো নেবে এবং সেগুলোকে রোলআপ কন্ট্রাক্ট-এ জমা দেবে। একবার ব্যবহারকারীর ফান্ড রোলআপ-এ চলে গেলে, তারা প্রসেসিংয়ের জন্য অপারেটরের কাছে লেনদেন পাঠিয়ে লেনদেন শুরু করতে পারে। ব্যবহারকারীরা তাদের একাউন্ট ডাটা হ্যাস করে, রোলআপ কন্ট্রাক্ট-এ হ্যাস পাঠিয়ে এবং বর্তমান স্টেট রুটের বিপরীতে যাচাই করার জন্য একটি মার্কেল প্রুফ প্রদান করে রোলআপ-এ ব্যালেন্স যাচাই করতে পারে।
-একটি ZK-রোলআপ থেকে L1-এ উইথড্র করা সহজবোধ্য। ব্যবহারকারী রোলআপে তাদের সম্পদ বার্ন করার জন্য একটি নির্দিষ্ট অ্যাকাউন্টে পাঠিয়ে এক্সিট লেনদেন শুরু করে। যদি অপারেটর পরবর্তী ব্যাচে লেনদেনটি অন্তর্ভুক্ত করে, তবে ব্যবহারকারী অনচেইন কন্ট্র্যাক্টে একটি উইথড্রয়াল অনুরোধ জমা দিতে পারে। এই উইথড্রয়াল অনুরোধে নিম্নলিখিতগুলি অন্তর্ভুক্ত থাকবে:
+একটি ZK-রোলআপ থেকে L1-এ উত্তোলন করা সহজ। ব্যবহারকারী রোলআপ-এ তাদের সম্পদ বার্ন করার জন্য একটি নির্দিষ্ট একাউন্ট-এ পাঠিয়ে এক্সিট লেনদেন শুরু করে। যদি অপারেটর পরবর্তী ব্যাচে লেনদেনটি অন্তর্ভুক্ত করে, তবে ব্যবহারকারী অনচেইন কন্ট্রাক্ট-এ একটি উত্তোলনের অনুরোধ জমা দিতে পারে। এই উত্তোলনের অনুরোধে নিচের বিষয়গুলো অন্তর্ভুক্ত থাকবে:
-- Merkle প্রুফ যা একটি লেনদেন ব্যাচে বার্ন অ্যাকাউন্টে ব্যবহারকারীর লেনদেনের অন্তর্ভুক্তি প্রমাণ করে
+- একটি লেনদেন ব্যাচে বার্ন একাউন্ট-এ ব্যবহারকারীর লেনদেন-এর অন্তর্ভুক্তি প্রমাণকারী মার্কেল প্রুফ
-- লেনদেনের ডেটা
+- লেনদেন ডাটা
- ব্যাচ রুট
-- ডিপোজিট করা তহবিল গ্রহণ করার জন্য L1 অ্যাড্রেস
+- জমা করা ফান্ড গ্রহণ করার জন্য L1 এডড্রেস
-রোলআপ কন্ট্র্যাক্ট লেনদেনের ডেটা হ্যাশ করে, ব্যাচ রুট বিদ্যমান কিনা তা পরীক্ষা করে এবং লেনদেন হ্যাশটি ব্যাচ রুটের অংশ কিনা তা পরীক্ষা করতে Merkle প্রুফ ব্যবহার করে। এরপরে, কন্ট্র্যাক্টটি এক্সিট লেনদেন কার্যকর করে এবং ব্যবহারকারীর নির্বাচিত L1 অ্যাড্রেসে তহবিল পাঠায়।
+রোলআপ কন্ট্রাক্ট লেনদেন ডাটা হ্যাস করে, ব্যাচ রুট বিদ্যমান কিনা তা চেক করে এবং লেনদেন হ্যাস ব্যাচ রুটের অংশ কিনা তা চেক করতে মার্কেল প্রুফ ব্যবহার করে। এরপর, কন্ট্রাক্ট এক্সিট লেনদেন এক্সিকিউট করে এবং L1-এ ব্যবহারকারীর নির্বাচিত এডড্রেস-এ ফান্ড পাঠায়।
-## ZK-রোলআপস এবং EVM সামঞ্জস্যতা {#zk-rollups-and-evm-compatibility}
+## ZK-রেলআপস এবং EVM সামঞ্জস্যতা {#zk-rollups-and-evm-compatibility}
-অপ্টিমিস্টিক রোলআপগুলির মতো নয়, ZK-রোলআপগুলি [ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/) এর সাথে সহজে সামঞ্জস্যপূর্ণ নয়। সার্কিটে সাধারণ-উদ্দেশ্যের EVM গণনা প্রমাণ করা সহজ গণনা (যেমন পূর্বে বর্ণিত টোকেন স্থানান্তর) প্রমাণ করার চেয়ে আরও কঠিন এবং সম্পদ-নিবিড়।
+অপ্টিমেস্টিক রেলআপস-এর বিপরীতে, ZK-রেলআপস [ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/)-এর সাথে সহজে সামঞ্জস্যপূর্ণ নয়। সার্কিটে সাধারণ-উদ্দেশ্য EVM কম্পিউটেশন প্রমাণ করা সহজ কম্পিউটেশন (যেমন পূর্বে বর্ণিত টোকেন স্থানান্তর) প্রমাণ করার চেয়ে বেশি কঠিন এবং সম্পদ-নিবিড়।
-যাইহোক, [জিরো-নলেজ প্রযুক্তিতে অগ্রগতি](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now) জিরো-নলেজ প্রুফে EVM গণনা মোড়ানোর বিষয়ে নতুন আগ্রহ জাগিয়ে তুলছে। এই প্রচেষ্টাগুলি একটি জিরো-নলেজ EVM (zkEVM) বাস্তবায়ন তৈরির দিকে পরিচালিত যা প্রোগ্রামের কার্যকরীকরণের সঠিকতা দক্ষতার সাথে যাচাই করতে পারে। একটি zkEVM সার্কিটে প্রমাণ/যাচাইকরণের জন্য বিদ্যমান EVM অপকোডগুলি পুনরায় তৈরি করে, যা স্মার্ট কন্ট্র্যাক্ট কার্যকর করার অনুমতি দেয়।
+তবে, [জিরো-নলেজ প্রযুক্তিতে অগ্রগতি](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now) জিরো-নলেজ প্রুফ-এ EVM কম্পিউটেশন র্যাপ করার ক্ষেত্রে নতুন করে আগ্রহ জাগিয়ে তুলছে। এই প্রচেষ্টাগুলো একটি জিরো-নলেজ EVM (zkEVM) ইমপ্লিমেন্টেশন তৈরি করার দিকে পরিচালিত যা দক্ষতার সাথে প্রোগ্রাম এক্সিকিউশনের সঠিকতা যাচাই করতে পারে। একটি zkEVM সার্কিটে প্রমাণ/যাচাই করার জন্য বিদ্যমান EVM অপকোডগুলো পুনরায় তৈরি করে, যা স্মার্ট কন্ট্রাক্ট এক্সিকিউট করার অনুমতি দেয়।
-EVM-এর মতো, কিছু ইনপুটে গণনা সম্পাদনের পরে একটি zkEVM স্টেটগুলির মধ্যে রূপান্তরিত হয়। পার্থক্য হল যে zkEVM প্রোগ্রামের কার্যকরীকরণের প্রতিটি পদক্ষেপের সঠিকতা যাচাই করতে জিরো-নলেজ প্রুফও তৈরি করে। ভ্যালিডিটি প্রুফগুলি VM-এর স্টেট (মেমরি, স্ট্যাক, স্টোরেজ) স্পর্শকারী ক্রিয়াকলাপের সঠিকতা এবং গণনা নিজেই যাচাই করতে পারে (অর্থাৎ, ক্রিয়াকলাপটি সঠিক অপকোড কল করেছে এবং সেগুলি সঠিকভাবে কার্যকর করেছে কিনা?)।
+EVM-এর মতো, কিছু ইনপুটে কম্পিউটেশন সম্পাদন করার পরে একটি zkEVM স্টেটগুলোর মধ্যে ট্রানজিশন করে। পার্থক্য হলো যে zkEVM প্রোগ্রামের এক্সিকিউশনের প্রতিটি ধাপের সঠিকতা যাচাই করার জন্য জিরো-নলেজ প্রুফও তৈরি করে। ভ্যালিডিটি প্রুফ সেই অপারেশনগুলোর সঠিকতা যাচাই করতে পারে যা VM-এর স্টেট (মেমরি, স্ট্যাক, স্টোরেজ) এবং কম্পিউটেশন নিজেই স্পর্শ করে (অর্থাৎ, অপারেশনটি কি সঠিক অপকোডগুলোকে কল করেছে এবং সেগুলোকে সঠিকভাবে এক্সিকিউট করেছে?)।
-EVM-সামঞ্জস্যপূর্ণ ZK-রোলআপগুলির প্রবর্তন ডেভেলপারদের জিরো-নলেজ প্রুফের স্কেলেবিলিটি এবং নিরাপত্তা গ্যারান্টিগুলির লিভারেজ নিতে সাহায্য করবে বলে আশা করা হচ্ছে। আরও গুরুত্বপূর্ণভাবে, নেটিভ ইথেরিয়াম পরিকাঠামোর সাথে সামঞ্জস্যতার মানে হল ডেভেলপাররা পরিচিত (এবং যুদ্ধ-পরীক্ষিত) টুলিং এবং ভাষা ব্যবহার করে ZK-বান্ধব ডিঅ্যাপস তৈরি করতে পারে।
+EVM-সামঞ্জস্যপূর্ণ ZK-রেলআপস-এর প্রবর্তন ডেভেলপারদের জিরো-নলেজ প্রুফ-এর স্কেলেবিলিটি এবং নিরাপত্তা গ্যারান্টিগুলো কাজে লাগাতে সাহায্য করবে বলে আশা করা হচ্ছে। আরও গুরুত্বপূর্ণভাবে, নেটিভ ইথিরিয়াম পরিকাঠামোর সাথে সামঞ্জস্যতার অর্থ হলো ডেভেলপাররা পরিচিত (এবং পরীক্ষিত) টুলিং এবং ভাষা ব্যবহার করে ZK-বান্ধব ডিএ্যাপস তৈরি করতে পারে।
## ZK-রোলআপ ফি কীভাবে কাজ করে? {#how-do-zk-rollup-fees-work}
-ব্যবহারকারীরা ZK-রোলআপে লেনদেনের জন্য কত টাকা প্রদান করেন তা ইথেরিয়াম মেইননেটের মতোই গ্যাস ফি-এর উপর নির্ভরশীল। যাইহোক, গ্যাস ফি L2-তে ভিন্নভাবে কাজ করে এবং নিম্নলিখিত খরচ দ্বারা প্রভাবিত হয়:
+ZK-রেলআপস-এ লেনদেন-এর জন্য ব্যবহারকারীরা কত টাকা দেয় তা গ্যাস ফি-এর উপর নির্ভর করে, ঠিক ইথিরিয়াম মেইননেট-এর মতো। তবে, গ্যাস ফি L2-এ ভিন্নভাবে কাজ করে এবং নিচের খরচগুলো দ্বারা প্রভাবিত হয়:
-1. **স্টেট রাইট**: ইথেরিয়ামের স্টেটে লেখার জন্য একটি নির্দিষ্ট খরচ আছে (অর্থাৎ, ইথেরিয়াম ব্লকচেইনে একটি লেনদেন জমা দেওয়া)। ZK-রোলআপগুলি লেনদেন ব্যাচ করে এবং একাধিক ব্যবহারকারীর মধ্যে নির্দিষ্ট খরচ ছড়িয়ে দিয়ে এই খরচ কমায়।
+1. **স্টেট রাইট**: ইথিরিয়াম-এর স্টেট-এ লেখার জন্য একটি নির্দিষ্ট খরচ রয়েছে (অর্থাৎ, ইথিরিয়াম ব্লকচেইন-এ একটি লেনদেন জমা দেওয়া)। ZK-রেলআপস লেনদেন ব্যাচ করে এবং একাধিক ব্যবহারকারীর মধ্যে নির্দিষ্ট খরচ ছড়িয়ে দিয়ে এই খরচ কমায়।
-2. **ডেটা প্রকাশনা**: ZK-রোলআপগুলি প্রতিটি লেনদেনের জন্য স্টেট ডেটা `calldata` হিসাবে ইথেরিয়ামে প্রকাশ করে। `calldata` খরচ বর্তমানে [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) দ্বারা নিয়ন্ত্রিত হয়, যা `calldata`-এর নন-জিরো বাইটের জন্য 16 গ্যাস এবং জিরো বাইটের জন্য 4 গ্যাস খরচ নির্ধারণ করে। প্রতিটি লেনদেনের জন্য প্রদত্ত খরচটি প্রভাবিত হয় তার জন্য কতটা `calldata` অনচেইনে পোস্ট করতে হবে তার উপর।
+2. **ডাটা প্রকাশনা**: ZK-রেলআপস প্রতিটি লেনদেন-এর জন্য স্টেট ডাটা ইথিরিয়াম-এ `calldata` হিসেবে প্রকাশ করে। `calldata` খরচ বর্তমানে [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) দ্বারা পরিচালিত হয়, যা যথাক্রমে নন-জিরো বাইটের জন্য 16 গ্যাস এবং `calldata`-এর জিরো বাইটের জন্য 4 গ্যাস খরচ নির্ধারণ করে। প্রতিটি লেনদেন-এ প্রদত্ত খরচ এর জন্য অনচেইন কতটা `calldata` পোস্ট করতে হবে তার দ্বারা প্রভাবিত হয়।
-3. **L2 অপারেটর ফি**: এটি রোলআপ অপারেটরকে লেনদেন প্রক্রিয়াকরণে ব্যয়িত গণনামূলক খরচের ক্ষতিপূরণ হিসাবে প্রদত্ত পরিমাণ, অনেকটা ইথেরিয়াম মেইননেটে [লেনদেনের "অগ্রাধিকার ফি (টিপস)"](/developers/docs/gas/#how-are-gas-fees-calculated) এর মতো।
+3. **L2 অপারেটর ফি**: এটি লেনদেন প্রসেস করার ক্ষেত্রে হওয়া কম্পিউটেশনাল খরচের ক্ষতিপূরণ হিসেবে রোলআপ অপারেটরকে দেওয়া পরিমাণ, অনেকটা ইথিরিয়াম মেইননেট-এ [লেনদেন "প্রায়োরিটি ফি (টিপস)"](/developers/docs/gas/#how-are-gas-fees-calculated)-এর মতো।
-4. **প্রুফ জেনারেশন এবং ভেরিফিকেশন**: ZK-রোলআপ অপারেটরদের লেনদেন ব্যাচের জন্য ভ্যালিডিটি প্রুফ তৈরি করতে হবে, যা সম্পদ-নিবিড়। মেইননেটে জিরো-নলেজ প্রুফ যাচাই করতেও গ্যাস খরচ হয় (~ 500,000 গ্যাস)।
+4. **প্রুফ জেনারেশন এবং ভেরিফিকেশন**: ZK-রোলআপ অপারেটরদের অবশ্যই লেনদেন ব্যাচের জন্য ভ্যালিডিটি প্রুফ তৈরি করতে হবে, যা সম্পদ-নিবিড়। মেইননেট-এ জিরো-নলেজ প্রুফ যাচাই করতেও গ্যাস খরচ হয় (~ 500,000 গ্যাস)।
-লেনদেন ব্যাচ করা ছাড়াও, ZK-রোলআপগুলি লেনদেনের ডেটা সংকুচিত করে ব্যবহারকারীদের জন্য ফি কমায়। আপনি ইথেরিয়াম ZK-রোলআপগুলি ব্যবহার করতে কত খরচ হয় তার একটি [রিয়েল-টাইম ওভারভিউ](https://l2fees.info/) দেখতে পারেন।
+লেনদেন ব্যাচ করার পাশাপাশি, ZK-রেলআপস লেনদেন ডাটা সংকুচিত করে ব্যবহারকারীদের জন্য ফি কমায়। আপনি ইথিরিয়াম ZK-রেলআপস ব্যবহার করতে কত খরচ হয় তার [একটি রিয়েল-টাইম ওভারভিউ দেখতে পারেন](https://l2fees.info/)।
-## কীভাবে ZK-রোলআপগুলি ইথেরিয়াম স্কেল করে? {#scaling-ethereum-with-zk-rollups}
+## ZK-রেলআপস কীভাবে ইথিরিয়াম স্কেল করে? {#scaling-ethereum-with-zk-rollups}
-### লেনদেন ডেটা কম্প্রেশন {#transaction-data-compression}
+### লেনদেন ডাটা কম্প্রেশন {#transaction-data-compression}
-ZK-রোলআপগুলি অফচেইনে গণনা নিয়ে ইথেরিয়ামের বেস লেয়ারে থ্রুপুট বাড়ায়, তবে স্কেলিংয়ের জন্য আসল বুস্টটি আসে লেনদেনের ডেটা সংকুচিত করা থেকে। ইথেরিয়ামের [ব্লক সাইজ](/developers/docs/blocks/#block-size) প্রতিটি ব্লকে থাকা ডেটার পরিমাণ এবং, ফলস্বরূপ, প্রতি ব্লকে প্রক্রিয়াকৃত লেনদেনের সংখ্যা সীমিত করে। লেনদেন-সম্পর্কিত ডেটা সংকুচিত করার মাধ্যমে, ZK-রোলআপগুলি প্রতি ব্লকে প্রক্রিয়াকৃত লেনদেনের সংখ্যা উল্লেখযোগ্যভাবে বাড়িয়ে দেয়।
+ZK-রেলআপস কম্পিউটেশন অফচেইন নিয়ে ইথিরিয়াম-এর বেস লেয়ারে থ্রুপুট প্রসারিত করে, কিন্তু স্কেলিং-এর জন্য আসল বুস্ট আসে লেনদেন ডাটা সংকুচিত করা থেকে। ইথিরিয়াম-এর [ব্লক সাইজ](/developers/docs/blocks/#block-size) প্রতিটি ব্লক যে ডাটা ধারণ করতে পারে তা সীমিত করে এবং এর সম্প্রসারণ হিসেবে, প্রতি ব্লক-এ প্রসেস করা লেনদেন-এর সংখ্যা সীমিত করে। লেনদেন-সম্পর্কিত ডাটা সংকুচিত করে, ZK-রেলআপস প্রতি ব্লক-এ প্রসেস করা লেনদেন-এর সংখ্যা উল্লেখযোগ্যভাবে বৃদ্ধি করে।
-ZK-রোলআপগুলি অপ্টিমিস্টিক রোলআপগুলির চেয়ে ভালভাবে লেনদেনের ডেটা সংকুচিত করতে পারে কারণ তাদের প্রতিটি লেনদেন ভ্যালিডেট করার জন্য প্রয়োজনীয় সমস্ত ডেটা পোস্ট করতে হয় না। তাদের কেবল রোলআপে অ্যাকাউন্ট এবং ব্যালেন্সের সর্বশেষ স্টেট পুনর্নির্মাণের জন্য প্রয়োজনীয় ন্যূনতম ডেটা পোস্ট করতে হয়।
+ZK-রেলআপস অপ্টিমেস্টিক রেলআপস-এর চেয়ে ভালোভাবে লেনদেন ডাটা সংকুচিত করতে পারে কারণ তাদের প্রতিটি লেনদেন যাচাই করার জন্য প্রয়োজনীয় সমস্ত ডাটা পোস্ট করতে হয় না। তাদের শুধুমাত্র রোলআপ-এ একাউন্ট এবং ব্যালেন্সের সর্বশেষ স্টেট পুনর্নির্মাণের জন্য প্রয়োজনীয় ন্যূনতম ডাটা পোস্ট করতে হয়।
-### পুনরাবৃত্তিমূলক প্রমাণ {#recursive-proofs}
+### রিকার্সিভ প্রুফ {#recursive-proofs}
-জিরো-নলেজ প্রুফের একটি সুবিধা হল যে প্রুফগুলি অন্যান্য প্রুফ যাচাই করতে পারে। উদাহরণস্বরূপ, একটি একক ZK-SNARK অন্যান্য ZK-SNARK যাচাই করতে পারে। এই ধরনের "প্রুফ-অফ-প্রুফ" কে রিকারসিভ প্রুফ বলা হয় এবং এটি ZK-রোলআপে থ্রুপুট নাটকীয়ভাবে বাড়িয়ে দেয়।
+জিরো-নলেজ প্রুফ-এর একটি সুবিধা হলো যে প্রুফগুলো অন্যান্য প্রুফ যাচাই করতে পারে। উদাহরণস্বরূপ, একটি একক ZK-SNARK অন্যান্য ZK-SNARKs যাচাই করতে পারে। এই ধরনের "প্রুফ-অফ-প্রুফস"-কে রিকার্সিভ প্রুফ বলা হয় এবং ZK-রেলআপস-এ নাটকীয়ভাবে থ্রুপুট বৃদ্ধি করে।
-বর্তমানে, ভ্যালিডিটি প্রুফগুলি ব্লক-বাই-ব্লক ভিত্তিতে তৈরি করা হয় এবং যাচাইকরণের জন্য L1 কন্ট্র্যাক্টে জমা দেওয়া হয়। যাইহোক, একক ব্লক প্রুফ যাচাই করা ZK-রোলআপগুলির দ্বারা অর্জিত থ্রুপুটকে সীমিত করে কারণ অপারেটর একটি প্রুফ জমা দিলে কেবল একটি ব্লকই চূড়ান্ত করা যায়।
+বর্তমানে, ভ্যালিডিটি প্রুফ ব্লক-বাই-ব্লক ভিত্তিতে তৈরি করা হয় এবং যাচাইকরণের জন্য L1 কন্ট্রাক্ট-এ জমা দেওয়া হয়। তবে, একক ব্লক প্রুফ যাচাই করা ZK-রেলআপস যে থ্রুপুট অর্জন করতে পারে তা সীমিত করে কারণ অপারেটর যখন একটি প্রুফ জমা দেয় তখন শুধুমাত্র একটি ব্লক চূড়ান্ত করা যায়।
-তবে, রিকারসিভ প্রুফগুলি একটি ভ্যালিডিটি প্রুফ দিয়ে বেশ কয়েকটি ব্লক চূড়ান্ত করা সম্ভব করে। এর কারণ হল প্রুভিং সার্কিট রিকারসিভভাবে একাধিক ব্লক প্রুফ একত্রিত করে যতক্ষণ না একটি চূড়ান্ত প্রুফ তৈরি হয়। L2 অপারেটর এই রিকারসিভ প্রুফ জমা দেয়, এবং যদি কন্ট্র্যাক্টটি এটি গ্রহণ করে, তবে সমস্ত প্রাসঙ্গিক ব্লকগুলি অবিলম্বে চূড়ান্ত হয়ে যাবে। রিকারসিভ প্রুফের সাথে, ইথেরিয়ামে নির্দিষ্ট বিরতিতে চূড়ান্ত করা ZK-রোলআপ লেনদেনের সংখ্যা বৃদ্ধি পায়।
+তবে, রিকার্সিভ প্রুফ একটি ভ্যালিডিটি প্রুফ দিয়ে বেশ কয়েকটি ব্লক চূড়ান্ত করা সম্ভব করে তোলে। এর কারণ হলো প্রুভিং সার্কিট রিকার্সিভভাবে একাধিক ব্লক প্রুফ একত্রিত করে যতক্ষণ না একটি চূড়ান্ত প্রুফ তৈরি হয়। L2 অপারেটর এই রিকার্সিভ প্রুফ জমা দেয়, এবং যদি কন্ট্রাক্ট এটি গ্রহণ করে, তবে সমস্ত প্রাসঙ্গিক ব্লকস তাৎক্ষণিকভাবে চূড়ান্ত করা হবে। রিকার্সিভ প্রুফ-এর সাথে, ইথিরিয়াম-এ বিরতিতে চূড়ান্ত করা যায় এমন ZK-রোলআপ লেনদেন-এর সংখ্যা বৃদ্ধি পায়।
-### ZK-রোলআপের সুবিধা এবং অসুবিধা {#zk-rollups-pros-and-cons}
+### ZK-রেলআপস-এর সুবিধা এবং অসুবিধা {#zk-rollups-pros-and-cons}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| ভ্যালিডিটি প্রুফগুলি অফচেইন লেনদেনের সঠিকতা নিশ্চিত করে এবং অপারেটরদের অবৈধ স্টেট ট্রানজিশন কার্যকর করা থেকে বিরত রাখে। | ভ্যালিডিটি প্রুফ গণনা এবং যাচাই করার সাথে যুক্ত খরচ যথেষ্ট এবং এটি রোলআপ ব্যবহারকারীদের জন্য ফি বাড়াতে পারে। |
-| দ্রুত লেনদেনের ফাইনালিটি অফার করে কারণ L1-এ ভ্যালিডিটি প্রুফ যাচাই হয়ে গেলে স্টেট আপডেটগুলি অনুমোদিত হয়। | জিরো-নলেজ প্রযুক্তির জটিলতার কারণে EVM-সামঞ্জস্যপূর্ণ ZK-রোলআপ তৈরি করা কঠিন। |
-| নিরাপত্তার জন্য বিশ্বাসহীন ক্রিপ্টোগ্রাফিক পদ্ধতির উপর নির্ভর করে, [অপ্টিমিস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons)-এর মতো উৎসাহিত অভিনেতাদের সততার উপর নয়। | ভ্যালিডিটি প্রুফ তৈরি করার জন্য বিশেষ হার্ডওয়্যার প্রয়োজন, যা কয়েকটি পক্ষের দ্বারা চেইনের কেন্দ্রীভূত নিয়ন্ত্রণকে উৎসাহিত করতে পারে। |
-| অফচেইন স্টেট পুনরুদ্ধার করার জন্য প্রয়োজনীয় ডেটা L1-এ সঞ্চয় করে, যা নিরাপত্তা, সেন্সরশিপ-প্রতিরোধ এবং বিকেন্দ্রীকরণের গ্যারান্টি দেয়। | কেন্দ্রীভূত অপারেটররা (সিকোয়েন্সার) লেনদেনের ক্রমকে প্রভাবিত করতে পারে। |
-| ব্যবহারকারীরা বৃহত্তর মূলধন দক্ষতা থেকে উপকৃত হন এবং বিলম্ব ছাড়াই L2 থেকে তহবিল তুলতে পারেন। | হার্ডওয়্যারের প্রয়োজনীয়তা অংশগ্রহণকারীদের সংখ্যা কমাতে পারে যারা চেইনকে অগ্রগতি করতে বাধ্য করতে পারে, যা ক্ষতিকারক অপারেটরদের রোলআপের স্টেট ফ্রিজ করা এবং ব্যবহারকারীদের সেন্সর করার ঝুঁকি বাড়ায়। |
-| লাইভনেস অনুমানের উপর নির্ভর করে না এবং ব্যবহারকারীদের তাদের তহবিল রক্ষা করার জন্য চেইন ভ্যালিডেট করতে হয় না। | কিছু প্রুভিং সিস্টেমের (যেমন, ZK-SNARK) জন্য একটি বিশ্বস্ত সেটআপ প্রয়োজন যা, যদি ভুলভাবে পরিচালনা করা হয়, তবে একটি ZK-রোলআপের নিরাপত্তা মডেলকে সম্ভাব্যভাবে আপস করতে পারে। |
-| উন্নত ডেটা কম্প্রেশন ইথেরিয়ামে `calldata` প্রকাশ করার খরচ কমাতে এবং ব্যবহারকারীদের জন্য রোলআপ ফি কমাতে সাহায্য করতে পারে। | |
+| সুবিধা | অসুবিধা |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ভ্যালিডিটি প্রুফ অফচেইন লেনদেন-এর সঠিকতা নিশ্চিত করে এবং অপারেটরদের অবৈধ স্টেট ট্রানজিশন এক্সিকিউট করা থেকে বাধা দেয়। | ভ্যালিডিটি প্রুফ গণনা এবং যাচাই করার সাথে যুক্ত খরচ যথেষ্ট এবং রোলআপ ব্যবহারকারীদের জন্য ফি বাড়াতে পারে। |
+| দ্রুত লেনদেন ফাইনালিটি অফার করে কারণ L1-এ ভ্যালিডিটি প্রুফ যাচাই হওয়ার পরে স্টেট আপডেটগুলো অনুমোদিত হয়। | জিরো-নলেজ প্রযুক্তির জটিলতার কারণে EVM-সামঞ্জস্যপূর্ণ ZK-রেলআপস তৈরি করা কঠিন। |
+| নিরাপত্তার জন্য ট্রাস্টলেস ক্রিপ্টোগ্রাফিক মেকানিজমের উপর নির্ভর করে, [অপ্টিমেস্টিক রেলআপস](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons)-এর মতো উৎসাহিত অভিনেতাদের সততার উপর নয়। | ভ্যালিডিটি প্রুফ তৈরি করার জন্য বিশেষ হার্ডওয়্যার প্রয়োজন, যা কয়েকটি পক্ষের দ্বারা চেইনের সেন্ট্রালাইজড নিয়ন্ত্রণকে উৎসাহিত করতে পারে। |
+| L1-এ অফচেইন স্টেট পুনরুদ্ধার করার জন্য প্রয়োজনীয় ডাটা সংরক্ষণ করে, যা নিরাপত্তা, সেন্সরশিপ-প্রতিরোধ এবং ডিসেন্ট্রালাইজেশন গ্যারান্টি দেয়। | সেন্ট্রালাইজড অপারেটররা (সিকোয়েন্সার) লেনদেন-এর ক্রমকে প্রভাবিত করতে পারে। |
+| ব্যবহারকারীরা বৃহত্তর মূলধন দক্ষতা থেকে উপকৃত হয় এবং বিলম্ব ছাড়াই L2 থেকে ফান্ড উত্তোলন করতে পারে। | হার্ডওয়্যার প্রয়োজনীয়তা অংশগ্রহণকারীদের সংখ্যা কমাতে পারে যারা চেইনটিকে অগ্রগতি করতে বাধ্য করতে পারে, ক্ষতিকারক অপারেটরদের রোলআপ-এর স্টেট ফ্রিজ করার এবং ব্যবহারকারীদের সেন্সর করার ঝুঁকি বাড়ায়। |
+| লাইভনেস অনুমানের উপর নির্ভর করে না এবং ব্যবহারকারীদের তাদের ফান্ড রক্ষা করার জন্য চেইন যাচাই করতে হয় না। | কিছু প্রুভিং সিস্টেম (যেমন, ZK-SNARK) একটি ট্রাস্টেড সেটআপের প্রয়োজন যা, যদি ভুলভাবে পরিচালনা করা হয়, তবে সম্ভাব্যভাবে একটি ZK-রোলআপ-এর নিরাপত্তা মডেলের সাথে আপস করতে পারে। |
+| আরও ভালো ডাটা কম্প্রেশন ইথিরিয়াম-এ `calldata` প্রকাশের খরচ কমাতে এবং ব্যবহারকারীদের জন্য রোলআপ ফি কমানোর ক্ষেত্রে সাহায্য করতে পারে। | |
-### ZK-রোলআপের একটি ভিজ্যুয়াল ব্যাখ্যা {#zk-video}
+### ZK-রেলআপস-এর একটি ভিজ্যুয়াল ব্যাখ্যা {#zk-video}
-Finematics কে ZK-রোলআপ ব্যাখ্যা করতে দেখুন:
+Finematics-এর ZK-রেলআপস ব্যাখ্যা দেখুন:
-## কে একটি zkEVM-এ কাজ করছে? {#zkevm-projects}
+
+## কে zkEVM নিয়ে কাজ করছে? {#zkevm-projects}
-L2 বনাম L1-এর জন্য zkEVM
+L2 বনাম L1 এর জন্য zkEVM
-নিচের প্রকল্পগুলো লেয়ার ২ রেলআপস তৈরি করতে zkEVM প্রযুক্তি ব্যবহার করে। L1 ব্লক যাচাইকরণের জন্য zkEVM ব্যবহারের বিষয়েও গবেষণা চলছে, যা ভ্যালিডেটরদের লেনদেন পুনরায় কার্যকর না করেই ইথেরিয়াম ব্লক যাচাই করতে সক্ষম করবে।
+নিচের প্রজেক্টগুলো লেয়ার ২ রেলআপস তৈরি করতে zkEVM প্রযুক্তি ব্যবহার করে। [L1 ব্লক ভেরিফিকেশন](/roadmap/zkevm/)-এর জন্য zkEVM ব্যবহার করার বিষয়েও গবেষণা চলছে, যা ভ্যালিডেটরস-দের লেনদেন পুনরায় এক্সিকিউট না করেই ইথিরিয়াম ব্লকস যাচাই করতে সক্ষম করবে।
+zkEVM নিয়ে কাজ করা প্রজেক্টগুলোর মধ্যে রয়েছে:
-zkEVMs-এ কাজ করা প্রকল্পগুলির মধ্যে রয়েছে:
-
-- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVM হল ইথেরিয়াম ফাউন্ডেশন দ্বারা অর্থায়ন করা একটি প্রকল্প যা একটি EVM-সামঞ্জস্যপূর্ণ ZK-রোলআপ এবং ইথেরিয়াম ব্লকের জন্য ভ্যালিডিটি প্রুফ তৈরির একটি প্রক্রিয়া তৈরি করার জন্য।_
+- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVM হলো ইথিরিয়াম ফাউন্ডেশন দ্বারা অর্থায়িত একটি প্রজেক্ট যা একটি EVM-সামঞ্জস্যপূর্ণ ZK-রোলআপ এবং ইথিরিয়াম ব্লকস-এর জন্য ভ্যালিডিটি প্রুফ তৈরি করার একটি মেকানিজম তৈরি করে।_
-- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _একটি বিকেন্দ্রীভূত ZK রোলআপ ইথেরিয়াম মেইননেটে একটি জিরো-নলেজ ইথেরিয়াম ভার্চুয়াল মেশিন (zkEVM) নিয়ে কাজ করছে যা স্বচ্ছ উপায়ে ইথেরিয়াম লেনদেন সম্পাদন করে, যার মধ্যে রয়েছে জিরো-নলেজ-প্রুফ ভ্যালিডেশন সহ স্মার্ট কন্ট্র্যাক্ট।_
+- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _হলো ইথিরিয়াম মেইননেট-এ একটি ডিসেন্ট্রালাইজড ZK রোলআপ যা একটি জিরো-নলেজ ইথিরিয়াম ভার্চুয়াল মেশিন (zkEVM)-এ কাজ করে যা জিরো-নলেজ-প্রুফ ভ্যালিডেশন সহ স্মার্ট কন্ট্রাক্ট সহ একটি স্বচ্ছ উপায়ে ইথিরিয়াম লেনদেন এক্সিকিউট করে।_
-- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll একটি প্রযুক্তি-চালিত কোম্পানি যা ইথেরিয়ামের জন্য একটি নেটিভ zkEVM লেয়ার 2 সমাধান তৈরির কাজ করছে।_
+- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll হলো একটি প্রযুক্তি-চালিত কোম্পানি যা ইথিরিয়াম-এর জন্য একটি নেটিভ zkEVM লেয়ার ২ সলিউশন তৈরি করার কাজ করছে।_
-- **[Taiko](https://taiko.xyz)** - _Taiko একটি বিকেন্দ্রীভূত, ইথেরিয়াম-সমতুল্য ZK-রোলআপ (একটি [টাইপ 1 ZK-EVM](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))।_
+- **[Taiko](https://taiko.xyz)** - _Taiko হলো একটি ডিসেন্ট্রালাইজড, ইথিরিয়াম-সমতুল্য ZK-রোলআপ (একটি [টাইপ 1 ZK-EVM](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))।_
-- **[ZKsync](https://docs.zksync.io/)** - _ZKsync Era হল Matter Labs দ্বারা নির্মিত একটি EVM-সামঞ্জস্যপূর্ণ ZK রোলআপ, যা নিজস্ব zkEVM দ্বারা চালিত।_
+- **[ZKsync](https://docs.zksync.io/)** - _ZKsync Era হলো Matter Labs দ্বারা নির্মিত একটি EVM-সামঞ্জস্যপূর্ণ ZK রোলআপ, যা এর নিজস্ব zkEVM দ্বারা চালিত।_
-- **[Starknet](https://starkware.co/starknet/)** - _StarkNet হল StarkWare দ্বারা নির্মিত একটি EVM-সামঞ্জস্যপূর্ণ লেয়ার 2 স্কেলিং সমাধান।_
+- **[Starknet](https://starkware.co/starknet/)** - _StarkNet হলো StarkWare দ্বারা নির্মিত একটি EVM-সামঞ্জস্যপূর্ণ লেয়ার ২ স্কেলিং সমাধান।_
-- **[Morph](https://www.morphl2.io/)** - _Morph হল একটি হাইব্রিড রোলআপ স্কেলিং সমাধান যা লেয়ার 2 স্টেট চ্যালেঞ্জ সমস্যার সমাধানের জন্য zk-প্রুফ ব্যবহার করে।_
+- **[Morph](https://www.morphl2.io/)** - _Morph হলো একটি হাইব্রিড রোলআপ স্কেলিং সমাধান যা লেয়ার ২ স্টেট চ্যালেঞ্জ সমস্যা সমাধানের জন্য zk-প্রুফ ব্যবহার করে।_
-- **[Linea](https://linea.build)** - _Linea হল Consensys দ্বারা নির্মিত একটি ইথেরিয়াম-সমতুল্য zkEVM লেয়ার 2, যা সম্পূর্ণরূপে ইথেরিয়াম ইকোসিস্টেমের সাথে সারিবদ্ধ।_
+- **[Linea](https://linea.build)** - _Linea হলো Consensys দ্বারা নির্মিত একটি ইথিরিয়াম-সমতুল্য zkEVM লেয়ার ২, যা ইথিরিয়াম ইকোসিস্টেমের সাথে সম্পূর্ণভাবে সংযুক্ত।_
-## ZK-রোলআপ পড়ার বিষয়ে আরও পড়ুন {#further-reading-on-zk-rollups}
+## ZK-রেলআপস সম্পর্কে আরও পড়া {#further-reading-on-zk-rollups}
-- [জিরো-নলেজ রোলআপস কি?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
-- [জিরো-নলেজ রোলআপস কি?](https://alchemy.com/blog/zero-knowledge-rollups)
-- [Ethereum রোলআপগুলির জন্য ব্যবহারিক নির্দেশিকা](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [জিরো-নলেজ রেলআপস কী?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
+- [জিরো-নলেজ রেলআপস কী?](https://alchemy.com/blog/zero-knowledge-rollups)
+- [ইথিরিয়াম রেলআপস-এর ব্যবহারিক গাইড](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
- [STARKs বনাম SNARKs](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
-- [zkEVM কি?](https://www.alchemy.com/overviews/zkevm)
-- [ZK-EVM প্রকারগুলি: ইথেরিয়াম-সমতুল্য, EVM-সমতুল্য, টাইপ 1, টাইপ 4, এবং অন্যান্য ক্রিপ্টিক বাজওয়ার্ড](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4)
-- [zkEVM-এর ভূমিকা](https://hackmd.io/@yezhang/S1_KMMbGt)
-- [ZK-EVM L2 গুলি কী?](https://linea.mirror.xyz/qD18IaQ4BROn_Y40EBMTUTdJHYghUtdECscSWyMvm8M)
+- [zkEVM কী?](https://www.alchemy.com/overviews/zkevm)
+- [ZK-EVM প্রকার: ইথিরিয়াম-সমতুল্য, EVM-সমতুল্য, টাইপ 1, টাইপ 4, এবং অন্যান্য ক্রিপ্টিক বাজওয়ার্ড](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4)
+- [zkEVM পরিচিতি](https://hackmd.io/@yezhang/S1_KMMbGt)
+- [ZK-EVM L2s কী?](https://linea.mirror.xyz/qD18IaQ4BROn_Y40EBMTUTdJHYghUtdECscSWyMvm8M)
- [অসাধারণ-zkEVM রিসোর্স](https://github.com/LuozhuZhang/awesome-zkevm)
- [ZK-SNARKS আন্ডার দ্য হুড](https://vitalik.eth.limo/general/2017/02/01/zk_snarks.html)
- [SNARKs কীভাবে সম্ভব?](https://vitalik.eth.limo/general/2021/01/26/snarks.html)
+
+## টিউটোরিয়াল: ইথিরিয়াম-এ গোপনীয়তা এবং জিরো-নলেজ {#tutorials}
+
+- [একটি গোপন স্টেট-এর জন্য জিরো-নলেজ ব্যবহার করা](/developers/tutorials/secret-state/) _– অন-চেইন গোপন গেম স্টেট বজায় রাখতে কীভাবে ZK প্রুফ এবং অফচেইন সার্ভার উপাদানগুলো ব্যবহার করবেন।_
+- [স্টিলথ এডড্রেস ব্যবহার করা](/developers/tutorials/stealth-addr/) _– কীভাবে ERC-5564 স্টিলথ এডড্রেস ক্রিপ্টোগ্রাফিক কি ডেরিভেশন ব্যবহার করে বেনামী ETH স্থানান্তর সক্ষম করে।_
+- [web2 প্রমাণীকরণের জন্য ইথিরিয়াম ব্যবহার করা](/developers/tutorials/ethereum-for-web2-auth/) _– SAML-ভিত্তিক web2 প্রমাণীকরণ সিস্টেমের সাথে ইথিরিয়াম ওয়ালেট সিগনেচার কীভাবে একীভূত করবেন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/bn/developers/docs/smart-contracts/anatomy/index.md
index feed35981a0..b0beb665a48 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/anatomy/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/anatomy/index.md
@@ -1,22 +1,22 @@
---
-title: "স্মার্ট কন্ট্র্যাক্টের অ্যানাটমি"
-description: "একটি স্মার্ট কন্ট্রাক্টের অ্যানাটমির উপর একটি গভীর দৃষ্টিপাত – ফাংশন, ডেটা এবং ভেরিয়েবল।"
+title: স্মার্ট কন্ট্রাক্টের গঠন
+description: একটি স্মার্ট কন্ট্রাক্টের গঠনের বিস্তারিত রূপ – ফাংশন, ডেটা এবং ভেরিয়েবল।
lang: bn
---
-স্মার্ট কন্ট্র্যাক্ট হল এমন একটি প্রোগ্রাম যা Ethereum-এর একটি ঠিকানায় চলে। এগুলি ডেটা এবং ফাংশন দ্বারা গঠিত যা একটি লেনদেন পাওয়ার পরে এক্সিকিউট করতে পারে। এখানে একটি স্মার্ট কন্ট্র্যাক্ট কী দিয়ে তৈরি তার একটি ওভারভিউ দেওয়া হল।
+একটি স্মার্ট কন্ট্রাক্ট হলো এমন একটি প্রোগ্রাম যা ইথেরিয়ামের একটি এডড্রেস-এ রান করে। এগুলো ডেটা এবং ফাংশন দিয়ে তৈরি যা কোনো লেনদেন গ্রহণ করার পর এক্সিকিউট হতে পারে। নিচে একটি স্মার্ট কন্ট্রাক্টের গঠনের সংক্ষিপ্ত বিবরণ দেওয়া হলো।
## পূর্বশর্ত {#prerequisites}
-প্রথমে আপনি [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) সম্পর্কে পড়েছেন তা নিশ্চিত করুন। এই ডকুমেন্টটি ধরে নিচ্ছে যে আপনি ইতিমধ্যে JavaScript বা Python-এর মতো প্রোগ্রামিং ভাষার সাথে পরিচিত।
+প্রথমে নিশ্চিত করুন যে আপনি [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) সম্পর্কে পড়েছেন। এই ডকুমেন্টটি ধরে নেয় যে আপনি ইতিমধ্যেই JavaScript বা Python-এর মতো প্রোগ্রামিং ভাষার সাথে পরিচিত।
## ডেটা {#data}
-যেকোনো কন্ট্রাক্ট ডেটা অবশ্যই একটি অবস্থানে বরাদ্দ করতে হবে: হয় `storage`-এ বা `memory`-তে। একটি স্মার্ট কন্ট্র্যাক্টে সংগ্রহস্থল পরিবর্তন করা ব্যয়বহুল, তাই আপনার ডেটা কোথায় থাকবে তা আপনাকে বিবেচনা করতে হবে।
+যেকোনো কন্ট্রাক্ট ডেটাকে অবশ্যই একটি লোকেশনে অ্যাসাইন করতে হবে: হয় `storage` অথবা `memory`-তে। একটি স্মার্ট কন্ট্রাক্টে স্টোরেজ পরিবর্তন করা ব্যয়বহুল, তাই আপনার ডেটা কোথায় থাকা উচিত তা বিবেচনা করা প্রয়োজন।
-### সংগ্রহস্থল {#storage}
+### স্টোরেজ {#storage}
-স্থায়ী ডেটাকে সংগ্রহস্থল হিসাবে উল্লেখ করা হয় এবং স্টেট ভেরিয়েবল দ্বারা উপস্থাপিত হয়। এই মানগুলি ব্লকচেইনে স্থায়ীভাবে সংরক্ষণ করা হয়। আপনাকে টাইপটি ডিক্লেয়ার করতে হবে যাতে কন্ট্রাক্টটি কম্পাইল করার সময় ব্লকচেইনে কতটা সংগ্রহস্থলের প্রয়োজন তা ট্র্যাক রাখতে পারে।
+স্থায়ী ডেটাকে স্টোরেজ বলা হয় এবং এটি স্টেট ভেরিয়েবল দ্বারা উপস্থাপন করা হয়। এই মানগুলো ব্লকচেইন-এ স্থায়ীভাবে সংরক্ষিত হয়। আপনাকে এর ধরন (type) ঘোষণা করতে হবে যাতে কম্পাইল করার সময় কন্ট্রাক্টটি ট্র্যাক করতে পারে যে ব্লকচেইন-এ এর কতটুকু স্টোরেজ প্রয়োজন।
```solidity
// সলিডিটি উদাহরণ
@@ -31,63 +31,63 @@ contract SimpleStorage {
storedData: int128
```
-আপনি যদি আগে থেকেই অবজেক্ট-ওরিয়েন্টেড ভাষা প্রোগ্রাম করে থাকেন, তাহলে আপনি সম্ভবত বেশিরভাগ টাইপের সাথে পরিচিত হবেন। যাইহোক, আপনি যদি Ethereum ডেভেলপমেন্টে নতুন হন তবে `address` আপনার কাছে নতুন হওয়া উচিত।
+আপনি যদি ইতিমধ্যেই অবজেক্ট-ওরিয়েন্টেড ভাষায় প্রোগ্রামিং করে থাকেন, তবে আপনি সম্ভবত বেশিরভাগ ধরনের (types) সাথেই পরিচিত হবেন। তবে, আপনি যদি [Ethereum](/) ডেভেলপমেন্টে নতুন হয়ে থাকেন, তাহলে `address` আপনার কাছে নতুন মনে হতে পারে।
-একটি `address` টাইপ একটি Ethereum ঠিকানা ধারণ করতে পারে যা 20 বাইট বা 160 বিটের সমান। এটি একটি অগ্রগামী 0x সহ হেক্সাডেসিমেল নোটেশনে রিটার্ন করে।
+একটি `address` টাইপ একটি ইথেরিয়াম এডড্রেস ধারণ করতে পারে যা 20 বাইট বা 160 বিটের সমান। এটি 0x দিয়ে শুরু হওয়া হেক্সাডেসিমাল নোটেশনে রিটার্ন করে।
-অন্যান্য টাইপের মধ্যে রয়েছে:
+অন্যান্য টাইপগুলোর মধ্যে রয়েছে:
-- বুলিয়ান
-- পূর্ণসংখ্যা
-- ফিক্সড পয়েন্ট সংখ্যা
-- নির্দিষ্ট-আকারের বাইট অ্যারে
-- ডাইনামিকভাবে আকারযুক্ত বাইট অ্যারে
-- যৌক্তিক এবং পূর্ণসংখ্যা লিটারেল
-- স্ট্রিং লিটারেল
-- হেক্সাডেসিমেল লিটারেল
-- এনুমস
+- বুলিয়ান (boolean)
+- ইন্টিজার (integer)
+- ফিক্সড পয়েন্ট নাম্বার (fixed point numbers)
+- ফিক্সড-সাইজ বাইট অ্যারে (fixed-size byte arrays)
+- ডায়নামিকালি সাইজড বাইট অ্যারে (dynamically sized byte arrays)
+- র্যাশনাল এবং ইন্টিজার লিটারেল (rational and integer literals)
+- স্ট্রিং লিটারেল (string literals)
+- হেক্সাডেসিমাল লিটারেল (hexadecimal literals)
+- এনাম (enums)
-আরো ব্যাখ্যার জন্য, ডক্স দেখুন:
+আরও ব্যাখ্যার জন্য, ডক্সগুলো দেখুন:
-- [Vyper টাইপ দেখুন](https://docs.vyperlang.org/en/v0.1.0-beta.6/types.html#value-types)
-- [Solidity টাইপ দেখুন](https://docs.soliditylang.org/en/latest/types.html#value-types)
+- [Vyper টাইপগুলো দেখুন](https://docs.vyperlang.org/en/v0.1.0-beta.6/types.html#value-types)
+- [Solidity টাইপগুলো দেখুন](https://docs.soliditylang.org/en/latest/types.html#value-types)
### মেমরি {#memory}
-যে মানগুলি শুধুমাত্র একটি কন্ট্রাক্ট ফাংশনের এক্সিকিউশনের জীবনকালের জন্য সংরক্ষণ করা হয় তাকে মেমরি ভেরিয়েবল বলা হয়। যেহেতু এগুলি ব্লকচেইনে স্থায়ীভাবে সংরক্ষণ করা হয় না, তাই এগুলি ব্যবহার করা অনেক সস্তা।
+যেসব মান শুধুমাত্র একটি কন্ট্রাক্ট ফাংশন এক্সিকিউট হওয়ার সময়কালের জন্য সংরক্ষিত থাকে, সেগুলোকে মেমরি ভেরিয়েবল বলা হয়। যেহেতু এগুলো ব্লকচেইন-এ স্থায়ীভাবে সংরক্ষিত হয় না, তাই এগুলো ব্যবহার করা অনেক সস্তা।
-[Solidity ডক্স](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#storage-memory-and-the-stack)-এ EVM কীভাবে ডেটা (Storage, Memory, এবং Stack) স্টোর করে সে সম্পর্কে আরও জানুন।
+ইভিএম (EVM) কীভাবে ডেটা সংরক্ষণ করে (স্টোরেজ, মেমরি এবং স্ট্যাক) সে সম্পর্কে [Solidity ডক্স](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#storage-memory-and-the-stack)-এ আরও জানুন।
### এনভায়রনমেন্ট ভেরিয়েবল {#environment-variables}
-আপনার কন্ট্রাক্টে আপনি যে ভেরিয়েবলগুলি সংজ্ঞায়িত করেন সেগুলি ছাড়াও, কিছু বিশেষ গ্লোবাল ভেরিয়েবল রয়েছে। এগুলি প্রাথমিকভাবে ব্লকচেইন বা বর্তমান লেনদেন সম্পর্কে তথ্য প্রদানের জন্য ব্যবহৃত হয়।
+আপনার কন্ট্রাক্টে সংজ্ঞায়িত ভেরিয়েবলগুলো ছাড়াও, কিছু বিশেষ গ্লোবাল ভেরিয়েবল রয়েছে। এগুলো মূলত ব্লকচেইন বা বর্তমান লেনদেন সম্পর্কে তথ্য প্রদান করতে ব্যবহৃত হয়।
উদাহরণ:
-| **Prop** | **স্টেট ভেরিয়েবল** | **বিবরণ** |
-| ----------------- | ------------------- | ---------------------------------------------- |
-| `block.timestamp` | uint256 | বর্তমান ব্লক ইপক টাইমস্ট্যাম্প |
-| `msg.sender` | address | বার্তার প্রেরক (বর্তমান কল) |
+| **প্রপার্টি** | **স্টেট ভেরিয়েবল** | **বিবরণ** |
+| ----------------- | ------------------ | ------------------------------------ |
+| `block.timestamp` | uint256 | বর্তমান ব্লক এপোক টাইমস্ট্যাম্প |
+| `msg.sender` | address | মেসেজ প্রেরক (বর্তমান কল) |
## ফাংশন {#functions}
-সবচেয়ে সহজ ভাষায়, ফাংশনগুলি ইনকামিং লেনদেনের প্রতিক্রিয়া হিসাবে তথ্য পেতে বা সেট করতে পারে।
+সহজ কথায়, ফাংশনগুলো আগত লেনদেন-এর প্রতিক্রিয়ায় তথ্য পেতে বা সেট করতে পারে।
-দুই ধরনের ফাংশন কল আছে:
+দুই ধরনের ফাংশন কল রয়েছে:
-- `internal` – এগুলি একটি EVM কল তৈরি করে না
- - ইন্টারনাল ফাংশন এবং স্টেট ভেরিয়েবল শুধুমাত্র ইন্টারনালি অ্যাক্সেস করা যেতে পারে (যেমন, বর্তমান কন্ট্রাক্ট বা এটি থেকে প্রাপ্ত কন্ট্রাক্টের মধ্যে থেকে)
-- `external` – এগুলি একটি EVM কল তৈরি করে
- - এক্সটার্নাল ফাংশনগুলি কন্ট্রাক্ট ইন্টারফেসের অংশ, যার মানে হল সেগুলি অন্যান্য কন্ট্রাক্ট থেকে এবং লেনদেনের মাধ্যমে কল করা যেতে পারে। একটি এক্সটার্নাল ফাংশন `f` ইন্টারনালি কল করা যায় না (যেমন, `f()` কাজ করে না, কিন্তু `this.f()` কাজ করে)।
+- `internal` – এগুলো কোনো EVM কল তৈরি করে না
+ - ইন্টারনাল ফাংশন এবং স্টেট ভেরিয়েবলগুলো শুধুমাত্র অভ্যন্তরীণভাবে অ্যাক্সেস করা যায় (অর্থাৎ, বর্তমান কন্ট্রাক্ট বা এটি থেকে উদ্ভূত কন্ট্রাক্টগুলোর ভেতর থেকে)
+- `external` – এগুলো একটি EVM কল তৈরি করে
+ - এক্সটার্নাল ফাংশনগুলো কন্ট্রাক্ট ইন্টারফেসের অংশ, যার মানে এগুলো অন্যান্য কন্ট্রাক্ট থেকে এবং লেনদেন-এর মাধ্যমে কল করা যেতে পারে। একটি এক্সটার্নাল ফাংশন `f` অভ্যন্তরীণভাবে কল করা যায় না (অর্থাৎ, `f()` কাজ করে না, তবে `this.f()` কাজ করে)।
-এগুলি `public` বা `private`ও হতে পারে
+এগুলো `public` বা `private` ও হতে পারে
-- `public` ফাংশনগুলি কন্ট্রাক্টের মধ্যে থেকে ইন্টারনালি বা মেসেজের মাধ্যমে এক্সটারনালি কল করা যেতে পারে
-- `private` ফাংশনগুলি শুধুমাত্র সেই কন্ট্রাক্টের জন্য দৃশ্যমান যেখানে সেগুলি সংজ্ঞায়িত করা হয়েছে এবং প্রাপ্ত কন্ট্রাক্টে নয়
+- `public` ফাংশনগুলো কন্ট্রাক্টের ভেতর থেকে অভ্যন্তরীণভাবে বা মেসেজের মাধ্যমে বাহ্যিকভাবে কল করা যেতে পারে
+- `private` ফাংশনগুলো শুধুমাত্র সেই কন্ট্রাক্টের জন্যই দৃশ্যমান যেখানে সেগুলো সংজ্ঞায়িত করা হয়েছে এবং উদ্ভূত কন্ট্রাক্টগুলোতে নয়
-ফাংশন এবং স্টেট ভেরিয়েবল উভয়ই পাবলিক বা প্রাইভেট করা যেতে পারে
+ফাংশন এবং স্টেট ভেরিয়েবল উভয়কেই পাবলিক বা প্রাইভেট করা যেতে পারে
-এখানে একটি কন্ট্রাক্টে একটি স্টেট ভেরিয়েবল আপডেট করার জন্য একটি ফাংশন দেওয়া হল:
+একটি কন্ট্রাক্টে স্টেট ভেরিয়েবল আপডেট করার জন্য এখানে একটি ফাংশন দেওয়া হলো:
```solidity
// সলিডিটি উদাহরণ
@@ -96,13 +96,13 @@ function update_name(string value) public {
}
```
-- `string` টাইপের `value` প্যারামিটারটি `update_name` ফাংশনে পাস করা হয়েছে
-- এটি `public` হিসাবে ডিক্লেয়ার করা হয়েছে, যার অর্থ যে কেউ এটি অ্যাক্সেস করতে পারে
-- এটি `view` হিসাবে ডিক্লেয়ার করা হয়নি, তাই এটি কন্ট্রাক্টের স্টেট পরিবর্তন করতে পারে
+- `string` টাইপের প্যারামিটার `value` ফাংশনে পাস করা হয়েছে: `update_name`
+- এটি `public` হিসেবে ঘোষণা করা হয়েছে, যার মানে যে কেউ এটি অ্যাক্সেস করতে পারে
+- এটি `view` হিসেবে ঘোষণা করা হয়নি, তাই এটি কন্ট্রাক্ট স্টেট পরিবর্তন করতে পারে
### ভিউ ফাংশন {#view-functions}
-এই ফাংশনগুলি কন্ট্রাক্টের ডেটার স্টেট পরিবর্তন না করার প্রতিশ্রুতি দেয়। সাধারণ উদাহরণ হল "গেটার" ফাংশন – উদাহরণস্বরূপ, আপনি এটি ব্যবহারকারীর ব্যালেন্স গ্রহণ করতে ব্যবহার করতে পারেন।
+এই ফাংশনগুলো কন্ট্রাক্টের ডেটার স্টেট পরিবর্তন না করার প্রতিশ্রুতি দেয়। সাধারণ উদাহরণ হলো "গেটার" (getter) ফাংশন – উদাহরণস্বরূপ, আপনি কোনো ব্যবহারকারীর ব্যালেন্স জানতে এটি ব্যবহার করতে পারেন।
```solidity
// সলিডিটি উদাহরণ
@@ -120,29 +120,29 @@ def readName() -> string:
return dappName
```
-স্টেট পরিবর্তন করা বলতে যা বোঝায়:
+স্টেট পরিবর্তন হিসেবে যা বিবেচনা করা হয়:
1. স্টেট ভেরিয়েবলে লেখা।
2. [ইভেন্ট এমিট করা](https://docs.soliditylang.org/en/v0.7.0/contracts.html#events)।
3. [অন্যান্য কন্ট্রাক্ট তৈরি করা](https://docs.soliditylang.org/en/v0.7.0/control-structures.html#creating-contracts)।
4. `selfdestruct` ব্যবহার করা।
5. কলের মাধ্যমে ইথার পাঠানো।
-6. `view` বা `pure` হিসাবে চিহ্নিত নয় এমন কোনো ফাংশন কল করা।
-7. নিম্ন-স্তরের কল ব্যবহার করা।
-8. ইনলাইন অ্যাসেম্বলি ব্যবহার করা যাতে নির্দিষ্ট অপকোড থাকে।
+6. `view` বা `pure` হিসেবে চিহ্নিত নয় এমন কোনো ফাংশন কল করা।
+7. লো-লেভেল কল ব্যবহার করা।
+8. নির্দিষ্ট অপকোড (opcodes) ধারণকারী ইনলাইন অ্যাসেম্বলি ব্যবহার করা।
### কনস্ট্রাক্টর ফাংশন {#constructor-functions}
-`constructor` ফাংশনগুলি শুধুমাত্র একবার এক্সিকিউট করা হয় যখন কন্ট্রাক্টটি প্রথমবার ডেপ্লয় করা হয়। অনেক ক্লাস-ভিত্তিক প্রোগ্রামিং ভাষার `constructor`-এর মতো, এই ফাংশনগুলি প্রায়শই স্টেট ভেরিয়েবলগুলিকে তাদের নির্দিষ্ট মানগুলিতে ইনিশিয়ালাইজ করে।
+`constructor` ফাংশনগুলো শুধুমাত্র একবার এক্সিকিউট হয় যখন কন্ট্রাক্টটি প্রথমবার ডিপ্লয় করা হয়। অনেক ক্লাস-ভিত্তিক প্রোগ্রামিং ভাষার `constructor`-এর মতো, এই ফাংশনগুলো প্রায়শই স্টেট ভেরিয়েবলগুলোকে তাদের নির্দিষ্ট মান দিয়ে ইনিশিয়ালাইজ করে।
```solidity
// সলিডিটি উদাহরণ
-// কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করে, `owner`-কে
-// কন্ট্রাক্ট নির্মাতার ঠিকানায় সেট করে।
+// কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করে, `owner` সেট করে
+// কন্ট্রাক্ট তৈরি কারীর ঠিকানায়।
constructor() public {
- // সমস্ত স্মার্ট কন্ট্র্যাক্ট তার ফাংশন ট্রিগার করতে এক্সটার্নাল লেনদেনের উপর নির্ভর করে।
- // `msg` একটি গ্লোবাল ভেরিয়েবল যা প্রদত্ত লেনদেনের প্রাসঙ্গিক ডেটা অন্তর্ভুক্ত করে,
- // যেমন প্রেরকের ঠিকানা এবং লেনদেনে অন্তর্ভুক্ত ETH মান।
+ // সব স্মার্ট কন্ট্রাক্ট এর ফাংশনগুলো ট্রিগার করার জন্য এক্সটার্নাল ট্রানজেকশনের ওপর নির্ভর করে।
+ // `msg` হলো একটি গ্লোবাল ভেরিয়েবল যা প্রদত্ত ট্রানজেকশনের প্রাসঙ্গিক ডেটা ধারণ করে,
+ // যেমন প্রেরকের ঠিকানা এবং ট্রানজেকশনে অন্তর্ভুক্ত ETH এর পরিমাণ।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
owner = msg.sender;
}
@@ -158,23 +158,23 @@ def __init__(_beneficiary: address, _bidding_time: uint256):
self.auctionEnd = self.auctionStart + _bidding_time
```
-### অন্তর্নির্মিত ফাংশন {#built-in-functions}
+### বিল্ট-ইন ফাংশন {#built-in-functions}
-আপনার কন্ট্রাক্টে আপনি যে ভেরিয়েবল এবং ফাংশনগুলি সংজ্ঞায়িত করেন সেগুলি ছাড়াও, কিছু বিশেষ অন্তর্নির্মিত ফাংশন রয়েছে। সবচেয়ে সুস্পষ্ট উদাহরণ হল:
+আপনার কন্ট্রাক্টে সংজ্ঞায়িত ভেরিয়েবল এবং ফাংশনগুলো ছাড়াও, কিছু বিশেষ বিল্ট-ইন ফাংশন রয়েছে। সবচেয়ে সুস্পষ্ট উদাহরণ হলো:
- `address.send()` – Solidity
- `send(address)` – Vyper
-এগুলি কন্ট্রাক্টগুলিকে অন্য অ্যাকাউন্টে ETH পাঠাতে দেয়।
+এগুলো কন্ট্রাক্টগুলোকে অন্যান্য একাউন্ট-এ ETH পাঠানোর অনুমতি দেয়।
## ফাংশন লেখা {#writing-functions}
-আপনার ফাংশনের প্রয়োজন:
+আপনার ফাংশনের জন্য প্রয়োজন:
- প্যারামিটার ভেরিয়েবল এবং টাইপ (যদি এটি প্যারামিটার গ্রহণ করে)
-- ইন্টারনাল/এক্সটার্নাল ডিক্লেয়ারেশন
-- pure/view/payable-এর ডিক্লেয়ারেশন
-- রিটার্নস টাইপ (যদি এটি একটি মান রিটার্ন করে)
+- internal/external এর ঘোষণা
+- pure/view/payable এর ঘোষণা
+- রিটার্ন টাইপ (যদি এটি কোনো মান রিটার্ন করে)
```solidity
pragma solidity >=0.4.0 <=0.6.0;
@@ -182,7 +182,7 @@ pragma solidity >=0.4.0 <=0.6.0;
contract ExampleDapp {
string dapp_name; // স্টেট ভেরিয়েবল
- // কন্ট্রাক্টটি ডেপ্লয় করার সময় কল করা হয় এবং মানটি ইনিশিয়ালাইজ করে
+ // কন্ট্রাক্ট ডিপ্লয় করার সময় কল করা হয় এবং মান ইনিশিয়ালাইজ করে
constructor() public {
dapp_name = "My Example dapp";
}
@@ -199,47 +199,47 @@ contract ExampleDapp {
}
```
-একটি সম্পূর্ণ কন্ট্রাক্ট দেখতে এরকম হতে পারে। এখানে `constructor` ফাংশন `dapp_name` ভেরিয়েবলের জন্য একটি প্রাথমিক মান প্রদান করে।
+একটি সম্পূর্ণ কন্ট্রাক্ট দেখতে অনেকটা এরকম হতে পারে। এখানে `constructor` ফাংশনটি `dapp_name` ভেরিয়েবলের জন্য একটি প্রাথমিক মান প্রদান করে।
## ইভেন্ট এবং লগ {#events-and-logs}
-ইভেন্টগুলি আপনার স্মার্ট কন্ট্র্যাক্টকে আপনার ফ্রন্টএন্ড বা অন্যান্য সাবস্ক্রাইবিং অ্যাপ্লিকেশনের সাথে যোগাযোগ করতে সক্ষম করে। একবার একটি লেনদেন যাচাই এবং একটি ব্লকে যোগ করা হলে, স্মার্ট কন্ট্র্যাক্টগুলি ইভেন্ট এবং লগ তথ্য এমিট করতে পারে, যা ফ্রন্টএন্ড তখন প্রক্রিয়া এবং ব্যবহার করতে পারে।
+ইভেন্টগুলো আপনার স্মার্ট কন্ট্রাক্টকে আপনার ফ্রন্টএন্ড বা অন্যান্য সাবস্ক্রাইবিং অ্যাপ্লিকেশনের সাথে যোগাযোগ করতে সক্ষম করে। একবার একটি লেনদেন যাচাই হয়ে একটি ব্লক-এ যুক্ত হলে, স্মার্ট কন্ট্রাক্টগুলো ইভেন্ট এমিট করতে এবং তথ্য লগ করতে পারে, যা ফ্রন্টএন্ড পরবর্তীতে প্রসেস এবং ব্যবহার করতে পারে।
-## টিকাসহ উদাহরণ {#annotated-examples}
+## টীকাযুক্ত উদাহরণ {#annotated-examples}
-এইগুলি হল Solidity-তে লেখা কিছু উদাহরণ। আপনি যদি কোডটি নিয়ে খেলতে চান, তাহলে আপনি [Remix](http://remix.ethereum.org)-এ তাদের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
+এগুলো Solidity-তে লেখা কিছু উদাহরণ। আপনি যদি কোড নিয়ে কাজ করতে চান, তবে আপনি [Remix](http://remix.ethereum.org)-এ সেগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারেন।
### হ্যালো ওয়ার্ল্ড {#hello-world}
```solidity
-// সেমান্টিক ভার্শনিং ব্যবহার করে Solidity-এর সংস্করণ নির্দিষ্ট করে।
+// সিমেন্টিক ভার্সনিং ব্যবহার করে সলিডিটির ভার্সন নির্দিষ্ট করে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
pragma solidity ^0.5.10;
-// `HelloWorld` নামের একটি কন্ট্রাক্ট সংজ্ঞায়িত করে।
-// একটি কন্ট্রাক্ট হল ফাংশন এবং ডেটার (তার স্টেট) একটি সংগ্রহ।
-// একবার ডেপ্লয় করা হলে, একটি কন্ট্রাক্ট Ethereum ব্লকচেইনের একটি নির্দিষ্ট ঠিকানায় থাকে।
+// `HelloWorld` নামের একটি কন্ট্রাক্ট ডিফাইন করে।
+// একটি কন্ট্রাক্ট হলো ফাংশন এবং ডেটার (এর স্টেট) একটি সংগ্রহ।
+// একবার ডিপ্লয় করা হলে, একটি কন্ট্রাক্ট ইথেরিয়াম ব্লকচেইনের একটি নির্দিষ্ট ঠিকানায় অবস্থান করে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {
- // `string` টাইপের একটি স্টেট ভেরিয়েবল `message` ডিক্লেয়ার করে।
- // স্টেট ভেরিয়েবল হল এমন ভেরিয়েবল যার মান স্থায়ীভাবে কন্ট্রাক্টের সংগ্রহস্থলে সংরক্ষণ করা হয়।
- // `public` কীওয়ার্ডটি একটি কন্ট্রাক্টের বাইরে থেকে ভেরিয়েবলগুলিকে অ্যাক্সেসযোগ্য করে তোলে
- // এবং একটি ফাংশন তৈরি করে যা অন্য কন্ট্রাক্ট বা ক্লায়েন্টরা মান অ্যাক্সেস করার জন্য কল করতে পারে।
+ // `string` টাইপের একটি স্টেট ভেরিয়েবল `message` ডিক্লেয়ার করে।
+ // স্টেট ভেরিয়েবল হলো এমন ভেরিয়েবল যার মান কন্ট্রাক্ট স্টোরেজে স্থায়ীভাবে সংরক্ষিত থাকে।
+ // `public` কিওয়ার্ড ভেরিয়েবলগুলোকে কন্ট্রাক্টের বাইরে থেকে অ্যাক্সেসযোগ্য করে তোলে
+ // এবং এমন একটি ফাংশন তৈরি করে যা অন্য কন্ট্রাক্ট বা ক্লায়েন্টরা মান অ্যাক্সেস করতে কল করতে পারে।
string public message;
- // অনেক ক্লাস-ভিত্তিক অবজেক্ট-ওরিয়েন্টেড ভাষার মতো, একটি কনস্ট্রাক্টর হল
- // একটি বিশেষ ফাংশন যা শুধুমাত্র কন্ট্রাক্ট তৈরির সময় এক্সিকিউট করা হয়।
- // কনস্ট্রাক্টরগুলি কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।
+ // অনেক ক্লাস-ভিত্তিক অবজেক্ট-ওরিয়েন্টেড ভাষার মতো, একটি কনস্ট্রাক্টর হলো
+ // একটি বিশেষ ফাংশন যা শুধুমাত্র কন্ট্রাক্ট তৈরির সময় এক্সিকিউট হয়।
+ // কনস্ট্রাক্টরগুলো কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
constructor(string memory initMessage) public {
- // একটি স্ট্রিং আর্গুমেন্ট `initMessage` গ্রহণ করে এবং মানটি সেট করে
- // কন্ট্রাক্টের `message` সংগ্রহস্থল ভেরিয়েবলে)।
+ // একটি স্ট্রিং আর্গুমেন্ট `initMessage` গ্রহণ করে এবং মান সেট করে
+ // কন্ট্রাক্টের `message` স্টোরেজ ভেরিয়েবলে)।
message = initMessage;
}
// একটি পাবলিক ফাংশন যা একটি স্ট্রিং আর্গুমেন্ট গ্রহণ করে
- // এবং `message` সংগ্রহস্থল ভেরিয়েবল আপডেট করে।
+ // এবং `message` স্টোরেজ ভেরিয়েবল আপডেট করে।
function update(string memory newMessage) public {
message = newMessage;
}
@@ -252,69 +252,69 @@ contract HelloWorld {
pragma solidity ^0.5.10;
contract Token {
- // একটি `address` একটি ইমেল ঠিকানার সাথে তুলনীয় - এটি Ethereum-এ একটি অ্যাকাউন্ট শনাক্ত করতে ব্যবহৃত হয়।
- // ঠিকানাগুলি একটি স্মার্ট কন্ট্র্যাক্ট বা একটি এক্সটার্নাল (ব্যবহারকারী) অ্যাকাউন্টকে প্রতিনিধিত্ব করতে পারে।
+ // একটি `address` ইমেইল ঠিকানার সাথে তুলনীয় - এটি ইথেরিয়ামে একটি অ্যাকাউন্ট শনাক্ত করতে ব্যবহৃত হয়।
+ // ঠিকানাগুলো একটি স্মার্ট কন্ট্রাক্ট বা এক্সটার্নাল (ব্যবহারকারী) অ্যাকাউন্টকে উপস্থাপন করতে পারে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/types.html#address
address public owner;
// একটি `mapping` মূলত একটি হ্যাস টেবিল ডেটা স্ট্রাকচার।
- // এই `mapping` একটি আনসাইন্ড ইন্টিজার (টোকেন ব্যালেন্স) একটি ঠিকানায় (টোকেন হোল্ডার) বরাদ্দ করে।
+ // এই `mapping` একটি ঠিকানায় (টোকেন হোল্ডার) একটি আনসাইনড ইন্টিজার (টোকেন ব্যালেন্স) অ্যাসাইন করে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/types.html#mapping-types
mapping (address => uint) public balances;
- // ইভেন্টগুলি ব্লকচেইনে কার্যকলাপ লগ করার অনুমতি দেয়।
- // Ethereum ক্লায়েন্টরা কন্ট্রাক্ট স্টেট পরিবর্তনের প্রতিক্রিয়া জানাতে ইভেন্ট শুনতে পারে।
+ // ইভেন্টগুলো ব্লকচেইনে অ্যাক্টিভিটি লগ করার অনুমতি দেয়।
+ // কন্ট্রাক্ট স্টেট পরিবর্তনের প্রতিক্রিয়া জানাতে ইথেরিয়াম ক্লায়েন্টরা ইভেন্টগুলো শুনতে পারে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events
event Transfer(address from, address to, uint amount);
- // কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করে, `owner`-কে
- // কন্ট্রাক্ট নির্মাতার ঠিকানায় সেট করে।
+ // কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করে, `owner` সেট করে
+ // কন্ট্রাক্ট তৈরি কারীর ঠিকানায়।
constructor() public {
- // সমস্ত স্মার্ট কন্ট্র্যাক্ট তার ফাংশন ট্রিগার করতে এক্সটার্নাল লেনদেনের উপর নির্ভর করে।
- // `msg` একটি গ্লোবাল ভেরিয়েবল যা প্রদত্ত লেনদেনের প্রাসঙ্গিক ডেটা অন্তর্ভুক্ত করে,
- // যেমন প্রেরকের ঠিকানা এবং লেনদেনে অন্তর্ভুক্ত ETH মান।
+ // সব স্মার্ট কন্ট্রাক্ট এর ফাংশনগুলো ট্রিগার করার জন্য এক্সটার্নাল ট্রানজেকশনের ওপর নির্ভর করে।
+ // `msg` হলো একটি গ্লোবাল ভেরিয়েবল যা প্রদত্ত ট্রানজেকশনের প্রাসঙ্গিক ডেটা ধারণ করে,
+ // যেমন প্রেরকের ঠিকানা এবং ট্রানজেকশনে অন্তর্ভুক্ত ETH এর পরিমাণ।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
owner = msg.sender;
}
- // নতুন টোকেনের একটি পরিমাণ তৈরি করে এবং সেগুলিকে একটি ঠিকানায় পাঠায়।
+ // কিছু পরিমাণ নতুন টোকেন তৈরি করে এবং সেগুলো একটি ঠিকানায় পাঠায়।
function mint(address receiver, uint amount) public {
- // `require` একটি নিয়ন্ত্রণ কাঠামো যা নির্দিষ্ট শর্ত প্রয়োগ করতে ব্যবহৃত হয়।
- // যদি একটি `require` স্টেটমেন্ট `false` হিসাবে মূল্যায়ন করে, একটি ব্যতিক্রম ট্রিগার হয়,
- // যা বর্তমান কলের সময় স্টেটে করা সমস্ত পরিবর্তন ফিরিয়ে দেয়।
+ // `require` হলো একটি কন্ট্রোল স্ট্রাকচার যা নির্দিষ্ট শর্ত প্রয়োগ করতে ব্যবহৃত হয়।
+ // যদি একটি `require` স্টেটমেন্ট `false` হয়, তবে একটি এক্সেপশন ট্রিগার হয়,
+ // যা বর্তমান কলের সময় স্টেটে করা সমস্ত পরিবর্তন রিভার্ট করে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
- // শুধুমাত্র কন্ট্রাক্টের মালিক এই ফাংশনটি কল করতে পারেন
- require(msg.sender == owner, "আপনি মালিক নন।");
+ // শুধুমাত্র কন্ট্রাক্ট ওনার এই ফাংশনটি কল করতে পারেন
+ require(msg.sender == owner, "You are not the owner.");
// টোকেনের সর্বোচ্চ পরিমাণ প্রয়োগ করে
- require(amount < 1e60, "সর্বোচ্চ ইস্যুয়েন্স অতিক্রম করেছে");
+ require(amount < 1e60, "Maximum issuance exceeded");
- // `receiver`-এর ব্যালেন্স `amount` দ্বারা বৃদ্ধি করে
+ // `receiver` এর ব্যালেন্স `amount` পরিমাণ বাড়ায়
balances[receiver] += amount;
}
- // যেকোনো কলার থেকে একটি ঠিকানায় বিদ্যমান টোকেনের একটি পরিমাণ পাঠায়।
+ // যেকোনো কলার থেকে একটি ঠিকানায় কিছু পরিমাণ বিদ্যমান টোকেন পাঠায়।
function transfer(address receiver, uint amount) public {
- // প্রেরকের পাঠানোর জন্য যথেষ্ট টোকেন থাকতে হবে
- require(amount <= balances[msg.sender], "অপর্যাপ্ত ব্যালেন্স।");
+ // প্রেরকের কাছে পাঠানোর জন্য পর্যাপ্ত টোকেন থাকতে হবে
+ require(amount <= balances[msg.sender], "Insufficient balance.");
- // দুটি ঠিকানার টোকেন ব্যালেন্স সামঞ্জস্য করে
+ // দুটি ঠিকানার টোকেন ব্যালেন্স অ্যাডজাস্ট করে
balances[msg.sender] -= amount;
balances[receiver] += amount;
- // পূর্বে সংজ্ঞায়িত ইভেন্ট এমিট করে
+ // আগে ডিফাইন করা ইভেন্ট এমিট করে
emit Transfer(msg.sender, receiver, amount);
}
}
```
-### অনন্য ডিজিটাল সম্পদ {#unique-digital-asset}
+### ইউনিক ডিজিটাল অ্যাসেট {#unique-digital-asset}
```solidity
pragma solidity ^0.5.10;
-// বর্তমান কন্ট্রাক্টে অন্যান্য ফাইল থেকে প্রতীক ইম্পোর্ট করে।
+// অন্যান্য ফাইল থেকে বর্তমান কন্ট্রাক্টে সিম্বল ইমপোর্ট করে।
// এই ক্ষেত্রে, OpenZeppelin থেকে হেল্পার কন্ট্রাক্টের একটি সিরিজ।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#importing-other-source-files
@@ -323,65 +323,65 @@ import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol
import "../node_modules/@openzeppelin/contracts/introspection/ERC165.sol";
import "../node_modules/@openzeppelin/contracts/math/SafeMath.sol";
-// `is` কীওয়ার্ডটি এক্সটার্নাল কন্ট্রাক্ট থেকে ফাংশন এবং কীওয়ার্ড উত্তরাধিকার সূত্রে পেতে ব্যবহৃত হয়।
-// এই ক্ষেত্রে, `CryptoPizza` `IERC721` এবং `ERC165` কন্ট্রাক্ট থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।
+// `is` কিওয়ার্ডটি এক্সটার্নাল কন্ট্রাক্ট থেকে ফাংশন এবং কিওয়ার্ড ইনহেরিট করতে ব্যবহৃত হয়।
+// এই ক্ষেত্রে, `CryptoPizza` `IERC721` এবং `ERC165` কন্ট্রাক্ট থেকে ইনহেরিট করে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#inheritance
contract CryptoPizza is IERC721, ERC165 {
- // নিরাপদে গাণিতিক ক্রিয়াকলাপ সম্পাদনের জন্য OpenZeppelin-এর SafeMath লাইব্রেরি ব্যবহার করে।
+ // নিরাপদে গাণিতিক অপারেশন করতে OpenZeppelin এর SafeMath লাইব্রেরি ব্যবহার করে।
// আরও জানুন: https://docs.openzeppelin.com/contracts/2.x/api/math#SafeMath
using SafeMath for uint256;
- // সলিডিটিতে ধ্রুবক স্টেট ভেরিয়েবলগুলি অন্যান্য ভাষার মতোই
- // কিন্তু আপনাকে অবশ্যই একটি এক্সপ্রেশন থেকে বরাদ্দ করতে হবে যা কম্পাইলের সময় ধ্রুবক।
+ // সলিডিটিতে কনস্ট্যান্ট স্টেট ভেরিয়েবলগুলো অন্যান্য ভাষার মতোই
+ // তবে আপনাকে এমন একটি এক্সপ্রেশন থেকে অ্যাসাইন করতে হবে যা কম্পাইল টাইমে কনস্ট্যান্ট থাকে।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables
uint256 constant dnaDigits = 10;
uint256 constant dnaModulus = 10 ** dnaDigits;
bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
- // স্ট্রাক্ট টাইপ আপনাকে আপনার নিজের টাইপ সংজ্ঞায়িত করতে দেয়
+ // স্ট্রাক্ট টাইপ আপনাকে আপনার নিজস্ব টাইপ ডিফাইন করতে দেয়
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs
struct Pizza {
string name;
uint256 dna;
}
- // পিৎজা স্ট্রাক্টের একটি খালি অ্যারে তৈরি করে
+ // Pizza স্ট্রাক্টের একটি খালি অ্যারে তৈরি করে
Pizza[] public pizzas;
- // পিৎজা আইডি থেকে তার মালিকের ঠিকানায় ম্যাপিং
+ // পিজা আইডি থেকে এর ওনারের ঠিকানায় ম্যাপিং
mapping(uint256 => address) public pizzaToOwner;
- // মালিকের ঠিকানা থেকে মালিকানাধীন টোকেনের সংখ্যায় ম্যাপিং
+ // ওনারের ঠিকানা থেকে মালিকানাধীন টোকেনের সংখ্যায় ম্যাপিং
mapping(address => uint256) public ownerPizzaCount;
- // টোকেন আইডি থেকে অনুমোদিত ঠিকানায় ম্যাপিং
+ // টোকেন আইডি থেকে অনুমোদিত ঠিকানায় ম্যাপিং
mapping(uint256 => address) pizzaApprovals;
- // আপনি ম্যাপিং নেস্ট করতে পারেন, এই উদাহরণটি অপারেটর অনুমোদনের জন্য মালিককে ম্যাপ করে
+ // আপনি ম্যাপিং নেস্ট করতে পারেন, এই উদাহরণটি ওনার থেকে অপারেটর অ্যাপ্রুভালে ম্যাপ করে
mapping(address => mapping(address => bool)) private operatorApprovals;
- // স্ট্রিং (নাম) এবং ডিএনএ থেকে একটি র্যান্ডম পিৎজা তৈরি করার জন্য ইন্টারনাল ফাংশন
+ // স্ট্রিং (নাম) এবং ডিএনএ থেকে একটি র্যান্ডম পিজা তৈরি করার ইন্টারনাল ফাংশন
function _createPizza(string memory _name, uint256 _dna)
- // `internal` কীওয়ার্ডটির অর্থ হল এই ফাংশনটি শুধুমাত্র দৃশ্যমান
- // এই কন্ট্রাক্ট এবং এই কন্ট্রাক্ট থেকে প্রাপ্ত কন্ট্রাক্টের মধ্যে
+ // `internal` কিওয়ার্ডের মানে হলো এই ফাংশনটি শুধুমাত্র দৃশ্যমান
+ // এই কন্ট্রাক্ট এবং এই কন্ট্রাক্ট থেকে ডিরাইভ করা কন্ট্রাক্টগুলোর মধ্যে
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters
internal
- // `isUnique` একটি ফাংশন মডিফায়ার যা পিৎজা আগে থেকেই বিদ্যমান কিনা তা পরীক্ষা করে
+ // `isUnique` হলো একটি ফাংশন মডিফায়ার যা পিজাটি আগে থেকেই আছে কিনা তা চেক করে
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers
isUnique(_name, _dna)
{
- // পিৎজাকে পিৎজার অ্যারেতে যোগ করে এবং আইডি পায়
+ // পিজাদের অ্যারেতে পিজা যোগ করে এবং আইডি পায়
uint256 id = SafeMath.sub(pizzas.push(Pizza(_name, _dna)), 1);
- // পিৎজার মালিক বর্তমান ব্যবহারকারীর সমান কিনা তা পরীক্ষা করে
+ // পিজার ওনার বর্তমান ব্যবহারকারীর সমান কিনা তা চেক করে
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
- // মনে রাখবেন যে address(0) হল শূন্য ঠিকানা,
+ // খেয়াল রাখবেন যে address(0) হলো জিরো অ্যাড্রেস,
// যা নির্দেশ করে যে pizza[id] এখনও কোনো নির্দিষ্ট ব্যবহারকারীকে বরাদ্দ করা হয়নি।
assert(pizzaToOwner[id] == address(0));
- // পিৎজাকে মালিকের সাথে ম্যাপ করে
+ // পিজাকে ওনারের সাথে ম্যাপ করে
pizzaToOwner[id] = msg.sender;
ownerPizzaCount[msg.sender] = SafeMath.add(
ownerPizzaCount[msg.sender],
@@ -389,36 +389,37 @@ contract CryptoPizza is IERC721, ERC165 {
);
}
- // স্ট্রিং (নাম) থেকে একটি র্যান্ডম পিৎজা তৈরি করে
+ // স্ট্রিং (নাম) থেকে একটি র্যান্ডম পিজা তৈরি করে
function createRandomPizza(string memory _name) public {
uint256 randDna = generateRandomDna(_name, msg.sender);
_createPizza(_name, randDna);
}
- // স্ট্রিং (নাম) এবং মালিকের (নির্মাতা) ঠিকানা থেকে র্যান্ডম ডিএনএ তৈরি করে
+ // স্ট্রিং (নাম) এবং ওনারের (তৈরি কারী) ঠিকানা থেকে র্যান্ডম ডিএনএ জেনারেট করে
function generateRandomDna(string memory _str, address _owner)
public
- // `pure` হিসাবে চিহ্নিত ফাংশনগুলি স্টেট থেকে পড়া বা পরিবর্তন না করার প্রতিশ্রুতি দেয়
+ // `pure` হিসেবে চিহ্নিত ফাংশনগুলো স্টেট থেকে রিড বা মডিফাই না করার প্রতিশ্রুতি দেয়
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions
pure
returns (uint256)
{
- // স্ট্রিং (নাম) + ঠিকানা (মালিক) থেকে র্যান্ডম ইউইন্ট তৈরি করে
+ // স্ট্রিং (নাম) + ঠিকানা (ওনার) থেকে র্যান্ডম uint জেনারেট করে
uint256 rand = uint256(keccak256(abi.encodePacked(_str))) +
uint256(_owner);
rand = rand % dnaModulus;
return rand;
}
- // মালিক দ্বারা পাওয়া পিৎজার অ্যারে রিটার্ন করে
+ // ওনারের পাওয়া পিজাদের অ্যারে রিটার্ন করে
function getPizzasByOwner(address _owner)
public
- // `view` হিসাবে চিহ্নিত ফাংশনগুলি স্টেট পরিবর্তন না করার প্রতিশ্রুতি দেয়
+ // `view` হিসেবে চিহ্নিত ফাংশনগুলো স্টেট মডিফাই না করার প্রতিশ্রুতি দেয়
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions
view
returns (uint256[] memory)
{
- // শুধুমাত্র এই ফাংশন কলের জীবনচক্রের জন্য মান সঞ্চয় করতে `memory` সংগ্রহস্থল অবস্থান ব্যবহার করে।
+ // মান সংরক্ষণ করতে `memory` স্টোরেজ লোকেশন ব্যবহার করে শুধুমাত্র
+ // এই ফাংশন কলের লাইফসাইকেলের জন্য।
// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack
uint256[] memory result = new uint256[](ownerPizzaCount[_owner]);
uint256 counter = 0;
@@ -431,29 +432,28 @@ contract CryptoPizza is IERC721, ERC165 {
return result;
}
- // পিৎজা এবং মালিকানা অন্য ঠিকানায় স্থানান্তর করে
+ // অন্য ঠিকানায় পিজা এবং মালিকানা ট্রান্সফার করে
function transferFrom(address _from, address _to, uint256 _pizzaId) public {
- require(_from != address(0) && _to != address(0), "অবৈধ ঠিকানা।");
- require(_exists(_pizzaId), "পিৎজা বিদ্যমান নেই।");
- require(_from != _to, "একই ঠিকানায় স্থানান্তর করা যাবে না।");
- require(_isApprovedOrOwner(msg.sender, _pizzaId), "ঠিকানাটি অনুমোদিত নয়।");
+ require(_from != address(0) && _to != address(0), "Invalid address.");
+ require(_exists(_pizzaId), "Pizza does not exist.");
+ require(_from != _to, "Cannot transfer to the same address.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
ownerPizzaCount[_to] = SafeMath.add(ownerPizzaCount[_to], 1);
ownerPizzaCount[_from] = SafeMath.sub(ownerPizzaCount[_from], 1);
pizzaToOwner[_pizzaId] = _to;
- // ইম্পোর্ট করা IERC721 কন্ট্রাক্টে সংজ্ঞায়িত ইভেন্ট এমিট করে
+ // ইমপোর্ট করা IERC721 কন্ট্রাক্টে ডিফাইন করা ইভেন্ট এমিট করে
emit Transfer(_from, _to, _pizzaId);
_clearApproval(_to, _pizzaId);
}
- /**
- * একটি প্রদত্ত টোকেন আইডির মালিকানা নিরাপদে অন্য ঠিকানায় স্থানান্তর করে
- * যদি টার্গেট ঠিকানা একটি কন্ট্রাক্ট হয়, তবে এটি অবশ্যই `onERC721Received` প্রয়োগ করবে,
- * যা একটি নিরাপদ স্থানান্তরের উপর কল করা হয়, এবং ম্যাজিক মান রিটার্ন করে
- * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`;
- * অন্যথায়, স্থানান্তরটি ফিরিয়ে দেওয়া হয়।
- */
+ /* *
+ * একটি প্রদত্ত টোকেন আইডির মালিকানা নিরাপদে অন্য ঠিকানায় ট্রান্সফার করে
+ * যদি টার্গেট ঠিকানাটি একটি কন্ট্রাক্ট হয়, তবে এটিকে অবশ্যই `onERC721Received` ইমপ্লিমেন্ট করতে হবে,
+ * যা একটি নিরাপদ ট্রান্সফারের সময় কল করা হয়, এবং ম্যাজিক ভ্যালু রিটার্ন করে
+ * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`;
+ * অন্যথায়, ট্রান্সফারটি রিভার্ট করা হয়। */
function safeTransferFrom(address from, address to, uint256 pizzaId)
public
{
@@ -461,13 +461,12 @@ contract CryptoPizza is IERC721, ERC165 {
this.safeTransferFrom(from, to, pizzaId, "");
}
- /**
- * একটি প্রদত্ত টোকেন আইডির মালিকানা নিরাপদে অন্য ঠিকানায় স্থানান্তর করে
- * যদি টার্গেট ঠিকানা একটি কন্ট্রাক্ট হয়, তবে এটি অবশ্যই `onERC721Received` প্রয়োগ করবে,
- * যা একটি নিরাপদ স্থানান্তরের উপর কল করা হয়, এবং ম্যাজিক মান রিটার্ন করে
- * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`;
- * অন্যথায়, স্থানান্তরটি ফিরিয়ে দেওয়া হয়।
- */
+ /* *
+ * একটি প্রদত্ত টোকেন আইডির মালিকানা নিরাপদে অন্য ঠিকানায় ট্রান্সফার করে
+ * যদি টার্গেট ঠিকানাটি একটি কন্ট্রাক্ট হয়, তবে এটিকে অবশ্যই `onERC721Received` ইমপ্লিমেন্ট করতে হবে,
+ * যা একটি নিরাপদ ট্রান্সফারের সময় কল করা হয়, এবং ম্যাজিক ভ্যালু রিটার্ন করে
+ * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`;
+ * অন্যথায়, ট্রান্সফারটি রিভার্ট করা হয়। */
function safeTransferFrom(
address from,
address to,
@@ -475,13 +474,12 @@ contract CryptoPizza is IERC721, ERC165 {
bytes memory _data
) public {
this.transferFrom(from, to, pizzaId);
- require(_checkOnERC721Received(from, to, pizzaId, _data), "অবশ্যই onERC721Received প্রয়োগ করতে হবে।");
+ require(_checkOnERC721Received(from, to, pizzaId, _data), "Must implement onERC721Received.");
}
- /**
- * একটি টার্গেট ঠিকানায় `onERC721Received`-কে আহ্বান করার জন্য ইন্টারনাল ফাংশন
- * যদি টার্গেট ঠিকানা একটি কন্ট্রাক্ট না হয় তবে কলটি এক্সিকিউট করা হয় না
- */
+ /* *
+ * একটি টার্গেট ঠিকানায় `onERC721Received` ইনভোক করার ইন্টারনাল ফাংশন
+ * টার্গেট ঠিকানাটি কন্ট্রাক্ট না হলে কলটি এক্সিকিউট হয় না */
function _checkOnERC721Received(
address from,
address to,
@@ -501,13 +499,13 @@ contract CryptoPizza is IERC721, ERC165 {
return (retval == _ERC721_RECEIVED);
}
- // একটি পিৎজা বার্ন করে - টোকেন সম্পূর্ণরূপে ধ্বংস করে
- // `external` ফাংশন মডিফায়ারের অর্থ হল এই ফাংশনটি
- // কন্ট্রাক্ট ইন্টারফেসের অংশ এবং অন্যান্য কন্ট্রাক্ট এটিকে কল করতে পারে
+ // একটি পিজা বার্ন করে - টোকেনটি সম্পূর্ণ ধ্বংস করে
+ // `external` ফাংশন মডিফায়ারের মানে হলো এই ফাংশনটি
+ // কন্ট্রাক্ট ইন্টারফেসের অংশ এবং অন্যান্য কন্ট্রাক্ট এটি কল করতে পারে
function burn(uint256 _pizzaId) external {
- require(msg.sender != address(0), "অবৈধ ঠিকানা।");
- require(_exists(_pizzaId), "পিৎজা বিদ্যমান নেই।");
- require(_isApprovedOrOwner(msg.sender, _pizzaId), "ঠিকানাটি অনুমোদিত নয়।");
+ require(msg.sender != address(0), "Invalid address.");
+ require(_exists(_pizzaId), "Pizza does not exist.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
ownerPizzaCount[msg.sender] = SafeMath.sub(
ownerPizzaCount[msg.sender],
@@ -516,58 +514,55 @@ contract CryptoPizza is IERC721, ERC165 {
pizzaToOwner[_pizzaId] = address(0);
}
- // ঠিকানা দ্বারা পিৎজার সংখ্যা রিটার্ন করে
+ // ঠিকানা অনুযায়ী পিজার সংখ্যা রিটার্ন করে
function balanceOf(address _owner) public view returns (uint256 _balance) {
return ownerPizzaCount[_owner];
}
- // আইডি দ্বারা পাওয়া পিৎজার মালিককে রিটার্ন করে
+ // আইডি দ্বারা পাওয়া পিজার ওনার রিটার্ন করে
function ownerOf(uint256 _pizzaId) public view returns (address _owner) {
address owner = pizzaToOwner[_pizzaId];
- require(owner != address(0), "অবৈধ পিৎজা আইডি।");
+ require(owner != address(0), "Invalid Pizza ID.");
return owner;
}
- // পিৎজার মালিকানা স্থানান্তরের জন্য অন্য ঠিকানাকে অনুমোদন দেয়
+ // পিজার মালিকানা ট্রান্সফার করতে অন্য ঠিকানাকে অনুমোদন দেয়
function approve(address _to, uint256 _pizzaId) public {
- require(msg.sender == pizzaToOwner[_pizzaId], "অবশ্যই পিৎজার মালিক হতে হবে।");
+ require(msg.sender == pizzaToOwner[_pizzaId], "Must be the Pizza owner.");
pizzaApprovals[_pizzaId] = _to;
emit Approval(msg.sender, _to, _pizzaId);
}
- // নির্দিষ্ট পিৎজার জন্য অনুমোদিত ঠিকানা রিটার্ন করে
+ // নির্দিষ্ট পিজার জন্য অনুমোদিত ঠিকানা রিটার্ন করে
function getApproved(uint256 _pizzaId)
public
view
returns (address operator)
{
- require(_exists(_pizzaId), "পিৎজা বিদ্যমান নেই।");
+ require(_exists(_pizzaId), "Pizza does not exist.");
return pizzaApprovals[_pizzaId];
}
- /**
- * একটি প্রদত্ত টোকেন আইডির বর্তমান অনুমোদন পরিষ্কার করার জন্য প্রাইভেট ফাংশন
- * যদি প্রদত্ত ঠিকানাটি টোকেনের মালিক না হয় তবে ফিরিয়ে দেয়
- */
+ /* *
+ * একটি প্রদত্ত টোকেন আইডির বর্তমান অনুমোদন ক্লিয়ার করার প্রাইভেট ফাংশন
+ * প্রদত্ত ঠিকানাটি টোকেনের প্রকৃত ওনার না হলে রিভার্ট করে */
function _clearApproval(address owner, uint256 _pizzaId) private {
- require(pizzaToOwner[_pizzaId] == owner, "অবশ্যই পিৎজার মালিক হতে হবে।");
- require(_exists(_pizzaId), "পিৎজা বিদ্যমান নেই।");
+ require(pizzaToOwner[_pizzaId] == owner, "Must be pizza owner.");
+ require(_exists(_pizzaId), "Pizza does not exist.");
if (pizzaApprovals[_pizzaId] != address(0)) {
pizzaApprovals[_pizzaId] = address(0);
}
}
- /*
- * একটি প্রদত্ত অপারেটরের অনুমোদন সেট বা আনসেট করে
- * একজন অপারেটর প্রেরকের পক্ষ থেকে তার সমস্ত টোকেন স্থানান্তর করার অনুমতি পায়
- */
+ /* * একটি প্রদত্ত অপারেটরের অনুমোদন সেট বা আনসেট করে
+ * একজন অপারেটর প্রেরকের পক্ষে তার সমস্ত টোকেন ট্রান্সফার করার অনুমতি পায় */
function setApprovalForAll(address to, bool approved) public {
- require(to != msg.sender, "নিজের ঠিকানা অনুমোদন করা যাবে না");
+ require(to != msg.sender, "Cannot approve own address");
operatorApprovals[msg.sender][to] = approved;
emit ApprovalForAll(msg.sender, to, approved);
}
- // একটি প্রদত্ত মালিক দ্বারা একজন অপারেটর অনুমোদিত কিনা তা বলে
+ // একজন অপারেটর একটি প্রদত্ত ওনার দ্বারা অনুমোদিত কিনা তা বলে
function isApprovedForAll(address owner, address operator)
public
view
@@ -576,27 +571,27 @@ contract CryptoPizza is IERC721, ERC165 {
return operatorApprovals[owner][operator];
}
- // পিৎজার মালিকানা নেয় - শুধুমাত্র অনুমোদিত ব্যবহারকারীদের জন্য
+ // পিজার মালিকানা নেয় - শুধুমাত্র অনুমোদিত ব্যবহারকারীদের জন্য
function takeOwnership(uint256 _pizzaId) public {
- require(_isApprovedOrOwner(msg.sender, _pizzaId), "ঠিকানাটি অনুমোদিত নয়।");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
address owner = this.ownerOf(_pizzaId);
this.transferFrom(owner, msg.sender, _pizzaId);
}
- // পিৎজা বিদ্যমান কিনা তা পরীক্ষা করে
+ // পিজা আছে কিনা তা চেক করে
function _exists(uint256 pizzaId) internal view returns (bool) {
address owner = pizzaToOwner[pizzaId];
return owner != address(0);
}
- // ঠিকানাটি মালিক বা পিৎজা স্থানান্তরের জন্য অনুমোদিত কিনা তা পরীক্ষা করে
+ // ঠিকানাটি ওনার কিনা বা পিজা ট্রান্সফার করার জন্য অনুমোদিত কিনা তা চেক করে
function _isApprovedOrOwner(address spender, uint256 pizzaId)
internal
view
returns (bool)
{
address owner = pizzaToOwner[pizzaId];
- // solium চেক অক্ষম করুন কারণ
+ // solium চেক নিষ্ক্রিয় করুন কারণ
// https://github.com/duaraghav8/Solium/issues/175
// solium-disable-next-line operator-whitespace
return (spender == owner ||
@@ -604,7 +599,7 @@ contract CryptoPizza is IERC721, ERC165 {
this.isApprovedForAll(owner, spender));
}
- // পিৎজা অনন্য এবং এখনও বিদ্যমান নেই কিনা তা পরীক্ষা করুন
+ // পিজাটি ইউনিক কিনা এবং এখনও বিদ্যমান নেই কিনা তা চেক করুন
modifier isUnique(string memory _name, uint256 _dna) {
bool result = true;
for (uint256 i = 0; i < pizzas.length; i++) {
@@ -616,19 +611,19 @@ contract CryptoPizza is IERC721, ERC165 {
result = false;
}
}
- require(result, "এই নামের পিৎজা ইতিমধ্যে বিদ্যমান।");
+ require(result, "Pizza with such name already exists.");
_;
}
// টার্গেট ঠিকানাটি একটি কন্ট্রাক্ট কিনা তা রিটার্ন করে
function isContract(address account) internal view returns (bool) {
uint256 size;
- // বর্তমানে একটি ঠিকানায় একটি কন্ট্রাক্ট আছে কিনা তা পরীক্ষা করার জন্য এর থেকে ভালো কোনো উপায় নেই
- // সেই ঠিকানার কোডের আকার পরীক্ষা করা ছাড়া।
- // এটি কীভাবে কাজ করে সে সম্পর্কে আরও জানতে দেখুন https://ethereum.stackexchange.com/a/14016/36603
- // ।
- // TODO Serenity রিলিজের আগে এটি আবার পরীক্ষা করুন, কারণ তখন সমস্ত ঠিকানা
- // কন্ট্রাক্ট হবে।
+ // বর্তমানে কোনো ঠিকানায় কন্ট্রাক্ট আছে কিনা তা চেক করার এর চেয়ে ভালো কোনো উপায় নেই
+ // সেই ঠিকানায় কোডের সাইজ চেক করা ছাড়া।
+ // দেখুন https://ethereum.stackexchange.com/a/14016/36603
+ // এটি কীভাবে কাজ করে সে সম্পর্কে আরও বিস্তারিত জানতে।
+ // TODO Serenity রিলিজের আগে এটি আবার চেক করুন, কারণ তখন সমস্ত ঠিকানা হবে
+ // কন্ট্রাক্ট।
// solium-disable-next-line security/no-inline-assembly
assembly {
size := extcodesize(account)
@@ -640,18 +635,18 @@ contract CryptoPizza is IERC721, ERC165 {
## আরও পড়ুন {#further-reading}
-স্মার্ট কন্ট্র্যাক্টগুলির একটি আরো সম্পূর্ণ ওভারভিউর জন্য Solidity এবং Vyper-এর ডকুমেন্টেশন দেখুন:
+স্মার্ট কন্ট্রাক্ট সম্পর্কে আরও সম্পূর্ণ ধারণা পেতে Solidity এবং Vyper-এর ডকুমেন্টেশন দেখুন:
- [Solidity](https://docs.soliditylang.org/)
- [Vyper](https://docs.vyperlang.org/en/stable/)
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/)
+- [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)
- [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)
## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [কন্ট্রাক্টের আকারের সীমার সাথে লড়াই করার জন্য কন্ট্রাক্ট ছোট করা](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– আপনার স্মার্ট কন্ট্র্যাক্টের আকার কমানোর জন্য কিছু ব্যবহারিক টিপস।_
-- [ইভেন্টের মাধ্যমে স্মার্ট কন্ট্র্যাক্ট থেকে ডেটা লগ করা](/developers/tutorials/logging-events-smart-contracts/) _– স্মার্ট কন্ট্র্যাক্ট ইভেন্টের একটি ভূমিকা এবং আপনি ডেটা লগ করতে কীভাবে সেগুলি ব্যবহার করতে পারেন।_
-- [Solidity থেকে অন্যান্য কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করুন](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– কীভাবে একটি বিদ্যমান কন্ট্রাক্ট থেকে একটি স্মার্ট কন্ট্র্যাক্ট ডেপ্লয় করবেন এবং এটির সাথে ইন্টারঅ্যাক্ট করবেন।_
+- [কন্ট্রাক্ট সাইজ লিমিট মোকাবেলা করতে কন্ট্রাক্ট ছোট করা](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– আপনার স্মার্ট কন্ট্রাক্টের আকার কমানোর জন্য কিছু ব্যবহারিক টিপস।_
+- [ইভেন্টের মাধ্যমে স্মার্ট কন্ট্রাক্ট থেকে ডেটা লগ করা](/developers/tutorials/logging-events-smart-contracts/) _– স্মার্ট কন্ট্রাক্ট ইভেন্টগুলোর একটি পরিচিতি এবং কীভাবে আপনি সেগুলো ডেটা লগ করতে ব্যবহার করতে পারেন।_
+- [Solidity থেকে অন্যান্য কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করা](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– কীভাবে একটি বিদ্যমান কন্ট্রাক্ট থেকে একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করবেন এবং এর সাথে ইন্টারঅ্যাক্ট করবেন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/bn/developers/docs/smart-contracts/compiling/index.md
index 72f1f4b35cc..fd9d27377b7 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/compiling/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/compiling/index.md
@@ -1,19 +1,19 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট কম্পাইল করা"
-description: "স্মার্ট কন্ট্র্যাক্ট কেন কম্পাইল করতে হবে এবং কম্পাইলেশন আসলে কী করে তার একটি ব্যাখ্যা।"
+title: স্মার্ট কন্ট্রাক্ট কম্পাইল করা
+description: কেন আপনার স্মার্ট কন্ট্রাক্ট কম্পাইল করা প্রয়োজন এবং কম্পাইলেশন আসলে কী করে তার একটি ব্যাখ্যা।
lang: bn
incomplete: true
---
-আপনার কন্ট্র্যাক্টটি আপনাকে কম্পাইল করতে হবে যাতে আপনার ওয়েব অ্যাপ এবং ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) এটি বুঝতে পারে।
+আপনার ওয়েব অ্যাপ এবং ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) যেন আপনার কন্ট্রাক্ট বুঝতে পারে, সেজন্য আপনাকে এটি কম্পাইল করতে হবে।
## পূর্বশর্ত {#prerequisites}
-কম্পাইলেশন সম্পর্কে পড়ার আগে আমাদের [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) এবং [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/) এর পরিচিতি পড়ে নেওয়াটা আপনার জন্য সহায়ক হতে পারে।
+কম্পাইলেশন সম্পর্কে পড়ার আগে আমাদের [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) এবং [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)-এর পরিচিতি পড়ে নেওয়া আপনার জন্য সহায়ক হতে পারে।
## EVM {#the-evm}
-আপনার কন্ট্র্যাক্টটি চালানোর জন্য [EVM](/developers/docs/evm/)-এর কাছে এটি **বাইটকোডে** থাকা প্রয়োজন। কম্পাইলেশন এটিকে পরিবর্তন করে:
+[EVM](/developers/docs/evm/) যেন আপনার কন্ট্রাক্ট রান করতে পারে, সেজন্য এটিকে **বাইটকোড**-এ থাকতে হবে। কম্পাইলেশন এটিকে পরিবর্তন করে:
```solidity
pragma solidity 0.4.24;
@@ -27,25 +27,25 @@ contract Greeter {
}
```
-**এইরূপে**
+**এতে রূপান্তর করে**
```
PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x46 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x80 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT 0xec 0xe 0xf5 0xf8 SLT 0xc7 0x2d STATICCALL ADDRESS SHR 0xdb COINBASE 0xb1 BALANCE 0xe8 0xf8 DUP14 0xda 0xad DUP13 LOG1 0x4c 0xb4 0x26 0xc2 DELEGATECALL PUSH7 0x8994D3E002900
```
-এগুলোকে **অপকোড** বলা হয়। EVM অপকোডগুলি হল নিম্ন-স্তরের নির্দেশাবলী যা ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) এক্সিকিউট করতে পারে। প্রতিটি অপকোড একটি নির্দিষ্ট অপারেশনকে প্রতিনিধিত্ব করে, যেমন গাণিতিক অপারেশন, লজিক্যাল অপারেশন, ডেটা ম্যানিপুলেশন, কন্ট্রোল ফ্লো ইত্যাদি।
+এগুলোকে **অপকোড (opcodes)** বলা হয়। EVM অপকোড হলো লো-লেভেল ইনস্ট্রাকশন যা ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) এক্সিকিউট করতে পারে। প্রতিটি অপকোড একটি নির্দিষ্ট অপারেশনকে উপস্থাপন করে, যেমন গাণিতিক অপারেশন, লজিক্যাল অপারেশন, ডেটা ম্যানিপুলেশন, কন্ট্রোল ফ্লো ইত্যাদি।
-[অপকোড সম্পর্কে আরও](/developers/docs/evm/opcodes/)
+[অপকোড সম্পর্কে আরও জানুন](/developers/docs/evm/opcodes/)
-## ওয়েব অ্যাপ্লিকেশন {#web-applications}
+## ওয়েব অ্যাপ্লিকেশন {#web-applications}
-কম্পাইলার **অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI)**-ও তৈরি করবে, যা আপনার অ্যাপ্লিকেশনের কন্ট্র্যাক্ট বুঝতে এবং কন্ট্র্যাক্টের ফাংশন কল করার জন্য প্রয়োজন।
+কম্পাইলার **অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI)**-ও তৈরি করবে, যা আপনার অ্যাপ্লিকেশনের জন্য কন্ট্রাক্ট বুঝতে এবং কন্ট্রাক্টের ফাংশনগুলো কল করতে প্রয়োজন।
-ABI হল একটি JSON ফাইল যা ডেপ্লয়েড কন্ট্র্যাক্ট এবং এর স্মার্ট কন্ট্র্যাক্টের ফাংশনগুলিকে বর্ণনা করে। এটি web2 এবং web3-এর মধ্যে সেতুবন্ধন করতে সাহায্য করে।
+ABI হলো একটি JSON ফাইল যা ডিপ্লয় করা কন্ট্রাক্ট এবং এর স্মার্ট কন্ট্রাক্ট ফাংশনগুলো বর্ণনা করে। এটি web2 এবং ওয়েব3-এর মধ্যে ব্যবধান দূর করতে সাহায্য করে।
-আপনার ওয়েব অ্যাপের ইন্টারফেস থেকে আপনার স্মার্ট কন্ট্র্যাক্ট কল করার জন্য একটি [জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি](/developers/docs/apis/javascript/) **ABI** রিড করবে।
+আপনার ওয়েব অ্যাপের ইন্টারফেসে আপনার স্মার্ট কন্ট্রাক্ট কল করার জন্য একটি [জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি](/developers/docs/apis/javascript/) **ABI** রিড করবে।
-নিচে ERC-20 টোকেন কন্ট্র্যাক্টের জন্য ABI দেওয়া হল। একটি ERC-20 হল একটি টোকেন যা আপনি ইথেরিয়াম-এ ট্রেড করতে পারেন।
+নিচে ERC-20 টোকেন কন্ট্রাক্টের জন্য ABI দেওয়া হলো। ERC-20 হলো এমন একটি টোকেন যা আপনি ইথিরিয়ামে ট্রেড করতে পারেন।
```json
[
@@ -272,11 +272,11 @@ ABI হল একটি JSON ফাইল যা ডেপ্লয়েড কন
]
```
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- [ABI স্পেক](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– Solidity_
+- [ABI স্পেসিফিকেশন](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– সলিডিটি_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়বস্তু {#related-topics}
-- [জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি](/developers/docs/apis/javascript/)
-- [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)
+- [জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি](/developers/docs/apis/javascript/)
+- [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/composability/index.md b/public/content/translations/bn/developers/docs/smart-contracts/composability/index.md
index e82a5a39ff3..d4997885ac2 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/composability/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/composability/index.md
@@ -1,76 +1,76 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট কম্পোজেবিলিটি"
-description: "বিদ্যমান উপাদানগুলি পুনঃব্যবহার করে কীভাবে লেগো ব্লকের মতো স্মার্ট কন্ট্র্যাক্টগুলিকে একত্রিত করে জটিল ডিএ্যাপস তৈরি করা যায় তা জানুন।"
+title: স্মার্ট কন্ট্রাক্ট কম্পোজেবিলিটি
+description: বিদ্যমান উপাদানগুলো পুনরায় ব্যবহার করে জটিল ডিএ্যাপস তৈরি করতে কীভাবে স্মার্ট কন্ট্রাক্টগুলোকে লেগো ব্লকের মতো একত্রিত করা যায় তা জানুন।
lang: bn
incomplete: true
---
-## একটি সংক্ষিপ্ত ভূমিকা {#a-brief-introduction}
+## একটি সংক্ষিপ্ত পরিচিতি {#a-brief-introduction}
-স্মার্ট কন্ট্র্যাক্টগুলি Ethereum-এ পাবলিক এবং সেগুলিকে ওপেন API হিসাবে ভাবা যেতে পারে। একজন ডিএ্যাপ ডেভেলপার হওয়ার জন্য আপনাকে নিজের স্মার্ট কন্ট্র্যাক্ট লিখতে হবে না, আপনাকে শুধু জানতে হবে কিভাবে তাদের সাথে ইন্টারঅ্যাক্ট করতে হয়। উদাহরণস্বরূপ, আপনি আপনার অ্যাপে সমস্ত টোকেন সোয়াপ লজিক পরিচালনা করার জন্য একটি ডিসেন্ট্রালাইজড এক্সচেঞ্জ [Uniswap](https://uniswap.exchange/swap)-এর বিদ্যমান স্মার্ট কন্ট্র্যাক্টগুলি ব্যবহার করতে পারেন – আপনাকে প্রথম থেকে শুরু করতে হবে না। তাদের কিছু [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) এবং [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts) কন্ট্র্যাক্ট দেখুন।
+ইথিরিয়ামে স্মার্ট কন্ট্রাক্টগুলো পাবলিক এবং এগুলোকে ওপেন এপিআই (API) হিসেবে বিবেচনা করা যেতে পারে। একজন ডিএ্যাপ ডেভেলপার হওয়ার জন্য আপনাকে নিজের স্মার্ট কন্ট্রাক্ট লিখতে হবে না, আপনাকে শুধু জানতে হবে কীভাবে সেগুলোর সাথে ইন্টারঅ্যাক্ট করতে হয়। উদাহরণস্বরূপ, আপনার অ্যাপে সমস্ত টোকেন সোয়াপ লজিক পরিচালনা করতে আপনি একটি ডিসেন্ট্রালাইজড এক্সচেঞ্জ, [Uniswap](https://uniswap.exchange/swap)-এর বিদ্যমান স্মার্ট কন্ট্রাক্টগুলো ব্যবহার করতে পারেন – আপনাকে একদম শুরু থেকে শুরু করতে হবে না। তাদের কিছু [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) এবং [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts) কন্ট্রাক্ট দেখে নিতে পারেন।
## কম্পোজেবিলিটি কী? {#what-is-composability}
-কম্পোজেবিলিটি হলো নতুন সিস্টেম বা আউটপুট তৈরি করার জন্য স্বতন্ত্র উপাদানগুলিকে একত্রিত করা। সফ্টওয়্যার ডেভেলপমেন্টে, কম্পোজেবিলিটি মানে ডেভেলপাররা নতুন অ্যাপ্লিকেশন তৈরি করতে বিদ্যমান সফ্টওয়্যার উপাদানগুলি পুনরায় ব্যবহার করতে পারে। কম্পোজেবিলিটি বোঝার একটি ভালো উপায় হলো কম্পোজেবল উপাদানগুলিকে লেগো ব্লকের মতো মনে করা। প্রতিটি লেগো অন্যটির সাথে একত্রিত হতে পারে, যা আপনাকে বিভিন্ন লেগো একত্রিত করে জটিল কাঠামো তৈরি করার সুযোগ দেয়।
+কম্পোজেবিলিটি হলো নতুন সিস্টেম বা আউটপুট তৈরি করতে আলাদা আলাদা উপাদানগুলোকে একত্রিত করা। সফটওয়্যার ডেভেলপমেন্টে, কম্পোজেবিলিটি বলতে বোঝায় ডেভেলপাররা নতুন অ্যাপ্লিকেশন তৈরি করতে বিদ্যমান সফটওয়্যার উপাদানগুলো পুনরায় ব্যবহার করতে পারেন। কম্পোজেবিলিটি বোঝার একটি ভালো উপায় হলো কম্পোজেবল উপাদানগুলোকে লেগো ব্লক হিসেবে চিন্তা করা। প্রতিটি লেগো অন্যটির সাথে যুক্ত করা যেতে পারে, যা আপনাকে বিভিন্ন লেগো একত্রিত করে জটিল কাঠামো তৈরি করতে দেয়।
-ইথেরিয়ামে, প্রতিটি স্মার্ট কন্ট্র্যাক্ট এক ধরনের লেগো—আপনি আপনার প্রকল্পের জন্য বিল্ডিং ব্লক হিসাবে অন্যান্য প্রকল্পের স্মার্ট কন্ট্র্যাক্ট ব্যবহার করতে পারেন। এর মানে হল আপনাকে চাকা নতুন করে উদ্ভাবন করতে বা প্রথম থেকে তৈরি করতে সময় ব্যয় করতে হবে না।
+ইথিরিয়ামে, প্রতিটি স্মার্ট কন্ট্রাক্ট এক ধরণের লেগো—আপনি আপনার প্রজেক্টের বিল্ডিং ব্লক হিসেবে অন্যান্য প্রজেক্টের স্মার্ট কন্ট্রাক্ট ব্যবহার করতে পারেন। এর মানে হলো আপনাকে নতুন করে চাকা আবিষ্কার করতে বা একদম শুরু থেকে তৈরি করতে সময় ব্যয় করতে হবে না।
## কম্পোজেবিলিটি কীভাবে কাজ করে? {#how-does-composability-work}
-ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টগুলি পাবলিক API-এর মতো, তাই যে কেউ কন্ট্র্যাক্টটির সাথে ইন্টারঅ্যাক্ট করতে পারে বা অতিরিক্ত কার্যকারিতার জন্য সেগুলিকে ডিএ্যাপসগুলিতে একীভূত করতে পারে। স্মার্ট কন্ট্র্যাক্ট কম্পোজেবিলিটি সাধারণত তিনটি নীতির উপর ভিত্তি করে কাজ করে: মডুলারিটি, স্বায়ত্তশাসন, এবং আবিষ্কারযোগ্যতা:
+ইথিরিয়াম স্মার্ট কন্ট্রাক্টগুলো পাবলিক এপিআই (API)-এর মতো, তাই যে কেউ কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারে বা অতিরিক্ত কার্যকারিতার জন্য সেগুলোকে ডিএ্যাপস-এ ইন্টিগ্রেট করতে পারে। স্মার্ট কন্ট্রাক্ট কম্পোজেবিলিটি সাধারণত তিনটি নীতির ওপর কাজ করে: মডুলারিটি, অটোনমি এবং ডিসকভারেবিলিটি:
-**১. মডুলারিটি**: এটি একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য স্বতন্ত্র উপাদানগুলির ক্ষমতা। ইথেরিয়ামে, প্রতিটি স্মার্ট কন্ট্র্যাক্টের একটি নির্দিষ্ট ব্যবহারের ক্ষেত্র রয়েছে (যেমনটি Uniswap-এর উদাহরণে দেখানো হয়েছে)।
+**1. মডুলারিটি**: এটি হলো নির্দিষ্ট কাজ সম্পাদন করার জন্য পৃথক উপাদানগুলোর ক্ষমতা। ইথিরিয়ামে, প্রতিটি স্মার্ট কন্ট্রাক্ট-এর একটি নির্দিষ্ট ব্যবহার ক্ষেত্র রয়েছে (যেমনটি Uniswap-এর উদাহরণে দেখানো হয়েছে)।
-**২. স্বায়ত্তশাসন**: কম্পোজেবল উপাদানগুলিকে অবশ্যই স্বাধীনভাবে কাজ করতে সক্ষম হতে হবে। ইথেরিয়ামের প্রতিটি স্মার্ট কন্ট্র্যাক্ট স্ব-নির্বাহী এবং সিস্টেমের অন্যান্য অংশের উপর নির্ভর না করে কাজ করতে পারে।
+**2. অটোনমি**: কম্পোজেবল উপাদানগুলোকে স্বাধীনভাবে কাজ করতে সক্ষম হতে হবে। ইথিরিয়ামে প্রতিটি স্মার্ট কন্ট্রাক্ট স্বয়ংক্রিয়ভাবে এক্সিকিউট হয় এবং সিস্টেমের অন্যান্য অংশের ওপর নির্ভর না করেই কাজ করতে পারে।
-**৩. আবিষ্কারযোগ্যতা**: ডেভেলপাররা বাহ্যিক কন্ট্র্যাক্ট কল করতে বা অ্যাপ্লিকেশনগুলিতে সফ্টওয়্যার লাইব্রেরিগুলিকে একীভূত করতে পারে না যদি আগেরগুলি সর্বজনীনভাবে উপলব্ধ না হয়। ডিজাইন অনুসারে, স্মার্ট কন্ট্র্যাক্টগুলি ওপেন-সোর্স; যে কেউ একটি স্মার্ট কন্ট্র্যাক্ট কল করতে বা একটি কোডবেস ফর্ক করতে পারে।
+**3. ডিসকভারেবিলিটি**: ডেভেলপাররা এক্সটার্নাল কন্ট্রাক্ট কল করতে বা অ্যাপ্লিকেশনে সফটওয়্যার লাইব্রেরি ইন্টিগ্রেট করতে পারবেন না যদি সেগুলো পাবলিকলি এভেইলেবল না হয়। ডিজাইন অনুযায়ী, স্মার্ট কন্ট্রাক্টগুলো ওপেন-সোর্স; যে কেউ একটি স্মার্ট কন্ট্রাক্ট কল করতে পারে বা একটি কোডবেস ফর্ক করতে পারে।
## কম্পোজেবিলিটির সুবিধা {#benefits-of-composability}
-### সংক্ষিপ্ত ডেভেলপমেন্ট চক্র {#shorter-development-cycle}
+### সংক্ষিপ্ত ডেভেলপমেন্ট সাইকেল {#shorter-development-cycle}
-কম্পোজেবিলিটি [ডিএ্যাপস](/apps/#what-are-dapps) তৈরি করার সময় ডেভেলপারদের যে কাজ করতে হয় তা কমিয়ে দেয়। [নাভাল রবিকান্ত যেমন বলেছেন:](https://twitter.com/naval/status/1444366754650656770) "ওপেন সোর্স মানে প্রতিটি সমস্যার সমাধান একবার করতে হবে।"
+কম্পোজেবিলিটি [ডিএ্যাপস](/apps/#what-are-dapps) তৈরি করার সময় ডেভেলপারদের কাজ কমিয়ে দেয়। [নাভাল রবিকান্ত যেমনটি বলেছেন:](https://twitter.com/naval/status/1444366754650656770) "ওপেন সোর্স মানে হলো প্রতিটি সমস্যার সমাধান একবারই করতে হয়।"
-যদি এমন একটি স্মার্ট কন্ট্র্যাক্ট থাকে যা একটি সমস্যার সমাধান করে, তবে অন্যান্য ডেভেলপাররা এটি পুনরায় ব্যবহার করতে পারে, তাই তাদের একই সমস্যার সমাধান করতে হবে না। এইভাবে, ডেভেলপাররা বিদ্যমান সফ্টওয়্যার লাইব্রেরিগুলি নিতে পারে এবং নতুন ডিএ্যাপস তৈরি করতে অতিরিক্ত কার্যকারিতা যোগ করতে পারে।
+যদি এমন কোনো স্মার্ট কন্ট্রাক্ট থাকে যা একটি সমস্যার সমাধান করে, তবে অন্যান্য ডেভেলপাররা এটি পুনরায় ব্যবহার করতে পারেন, যাতে তাদের একই সমস্যার সমাধান করতে না হয়। এভাবে, ডেভেলপাররা বিদ্যমান সফটওয়্যার লাইব্রেরিগুলো নিতে পারেন এবং নতুন ডিএ্যাপস তৈরি করতে অতিরিক্ত কার্যকারিতা যোগ করতে পারেন।
### বৃহত্তর উদ্ভাবন {#greater-innovation}
-কম্পোজেবিলিটি উদ্ভাবন এবং পরীক্ষাকে উৎসাহিত করে কারণ ডেভেলপাররা পছন্দসই ফলাফল তৈরি করতে ওপেন-সোর্স কোড পুনরায় ব্যবহার, পরিবর্তন, নকল বা একীভূত করতে স্বাধীন। ফলস্বরূপ, ডেভেলপমেন্ট দলগুলি মৌলিক কার্যকারিতার উপর কম সময় ব্যয় করে এবং নতুন বৈশিষ্ট্যগুলির সাথে পরীক্ষা করার জন্য আরও বেশি সময় বরাদ্দ করতে পারে।
+কম্পোজেবিলিটি উদ্ভাবন এবং পরীক্ষাকে উৎসাহিত করে কারণ ডেভেলপাররা কাঙ্ক্ষিত ফলাফল তৈরি করতে ওপেন-সোর্স কোড পুনরায় ব্যবহার, পরিবর্তন, ডুপ্লিকেট বা ইন্টিগ্রেট করতে স্বাধীন। ফলস্বরূপ, ডেভেলপমেন্ট টিমগুলো বেসিক কার্যকারিতার ওপর কম সময় ব্যয় করে এবং নতুন ফিচার নিয়ে পরীক্ষা-নিরীক্ষা করতে বেশি সময় বরাদ্দ করতে পারে।
-### উন্নত ব্যবহারকারী অভিজ্ঞতা {#better-user-experience}
+### উন্নত ইউজার এক্সপেরিয়েন্স {#better-user-experience}
-ইথেরিয়াম ইকোসিস্টেমের উপাদানগুলির মধ্যে ইন্টারঅপারেবিলিটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। ব্যবহারকারীরা যখন ডিএ্যাপসগুলি বাহ্যিক স্মার্ট কন্ট্র্যাক্টগুলিকে একীভূত করে তখন একটি খণ্ডিত ইকোসিস্টেমের তুলনায় বৃহত্তর কার্যকারিতা অ্যাক্সেস করতে পারে যেখানে অ্যাপ্লিকেশনগুলি যোগাযোগ করতে পারে না।
+ইথিরিয়াম ইকোসিস্টেমের উপাদানগুলোর মধ্যে ইন্টারঅপারেবিলিটি ইউজার এক্সপেরিয়েন্স উন্নত করে। যখন ডিএ্যাপস এক্সটার্নাল স্মার্ট কন্ট্রাক্ট ইন্টিগ্রেট করে তখন ব্যবহারকারীরা একটি খণ্ডিত ইকোসিস্টেমের (যেখানে অ্যাপ্লিকেশনগুলো যোগাযোগ করতে পারে না) তুলনায় বেশি কার্যকারিতা অ্যাক্সেস করতে পারে।
-আমরা ইন্টারঅপারেবিলিটির সুবিধাগুলি ব্যাখ্যা করার জন্য আরবিট্রেজ ট্রেডিং থেকে একটি উদাহরণ ব্যবহার করব:
+ইন্টারঅপারেবিলিটির সুবিধাগুলো বোঝাতে আমরা আরবিট্রেজ ট্রেডিং থেকে একটি উদাহরণ ব্যবহার করব:
-যদি `exchange A`-তে `exchange B`-এর চেয়ে বেশি দামে একটি টোকেন ট্রেড করা হয়, তাহলে আপনি মুনাফা অর্জনের জন্য দামের পার্থক্যের সুবিধা নিতে পারেন। যাইহোক, আপনি কেবল তখনই তা করতে পারবেন যদি আপনার লেনদেনের জন্য পর্যাপ্ত পুঁজি থাকে (অর্থাৎ, `exchange B` থেকে টোকেন কেনা এবং `exchange A`-তে বিক্রি করা)।
+যদি একটি টোকেন `exchange B`-এর চেয়ে `exchange A`-তে বেশি দামে ট্রেড হয়, তবে আপনি লাভের জন্য দামের পার্থক্যের সুবিধা নিতে পারেন। তবে, আপনি কেবল তখনই এটি করতে পারবেন যদি আপনার কাছে লেনদেন ফান্ড করার জন্য পর্যাপ্ত মূলধন থাকে (অর্থাৎ, `exchange B` থেকে টোকেন কেনা এবং `exchange A`-তে বিক্রি করা)।
-এমন একটি পরিস্থিতিতে যেখানে ট্রেডটি কভার করার জন্য আপনার কাছে পর্যাপ্ত তহবিল নেই, একটি ফ্ল্যাশ লোন আদর্শ হতে পারে। [ফ্ল্যাশ লোন](/defi/#flash-loans) অত্যন্ত প্রযুক্তিগত, তবে মূল ধারণাটি হলো আপনি সম্পদ ধার করতে পারেন (জামানত ছাড়াই) এবং _একই_ লেনদেনের মধ্যে তা ফেরত দিতে পারেন।
+এমন একটি পরিস্থিতিতে যেখানে ট্রেড কভার করার জন্য আপনার কাছে পর্যাপ্ত ফান্ড নেই, একটি ফ্ল্যাশ লোন আদর্শ হতে পারে। [ফ্ল্যাশ লোন](/defi/#flash-loans) অত্যন্ত টেকনিক্যাল, তবে মূল ধারণাটি হলো আপনি (জামানত ছাড়াই) অ্যাসেট ধার করতে পারেন এবং _একই_ লেনদেন-এর মধ্যে তা ফেরত দিতে পারেন।
-আমাদের প্রাথমিক উদাহরণে ফিরে গেলে, একজন আরবিট্রেজ ট্রেডার একটি বড় ফ্ল্যাশ লোন নিতে পারে, `exchange B` থেকে টোকেন কিনতে পারে, `exchange A`-তে সেগুলি বিক্রি করতে পারে, মূলধন + সুদ পরিশোধ করতে পারে এবং একই লেনদেনের মধ্যে লাভ রাখতে পারে। এই জটিল যুক্তির জন্য একাধিক কন্ট্র্যাক্টে কল একত্রিত করা প্রয়োজন, যা স্মার্ট কন্ট্র্যাক্টগুলিতে ইন্টারঅপারেবিলিটির অভাব থাকলে সম্ভব হতো না।
+আমাদের প্রাথমিক উদাহরণে ফিরে গেলে, একজন আরবিট্রেজ ট্রেডার একটি বড় ফ্ল্যাশ লোন নিতে পারেন, `exchange B` থেকে টোকেন কিনতে পারেন, সেগুলোকে `exchange A`-তে বিক্রি করতে পারেন, মূলধন + সুদ পরিশোধ করতে পারেন এবং একই লেনদেন-এর মধ্যে লাভ রাখতে পারেন। এই জটিল লজিকের জন্য একাধিক কন্ট্রাক্টে কল একত্রিত করা প্রয়োজন, যা স্মার্ট কন্ট্রাক্ট-এর ইন্টারঅপারেবিলিটি না থাকলে সম্ভব হতো না।
-## ইথেরিয়ামে কম্পোজেবিলিটির উদাহরণ {#composability-in-ethereum}
+## ইথিরিয়ামে কম্পোজেবিলিটির উদাহরণ {#composability-in-ethereum}
-### টোকেন সোয়াপ {#token-swaps}
+### টোকেন সোয়াপ {#token-swaps}
-আপনি যদি এমন একটি ডিএ্যাপ তৈরি করেন যার জন্য ETH-এ লেনদেন পরিশোধ করতে হয়, তবে আপনি টোকেন সোয়াপ লজিক একীভূত করে ব্যবহারকারীদের অন্যান্য ERC-20 টোকেনে অর্থ প্রদান করার অনুমতি দিতে পারেন। কন্ট্র্যাক্টটি কল করা ফাংশনটি এক্সিকিউট করার আগে কোডটি স্বয়ংক্রিয়ভাবে ব্যবহারকারীর টোকেনকে ETH-তে রূপান্তর করবে।
+যদি আপনি এমন একটি ডিএ্যাপ তৈরি করেন যার জন্য ETH-এ লেনদেন পরিশোধ করতে হয়, তবে আপনি টোকেন সোয়াপ লজিক ইন্টিগ্রেট করে ব্যবহারকারীদের অন্যান্য ERC-20 টোকেন-এ পেমেন্ট করার অনুমতি দিতে পারেন। কন্ট্রাক্ট কল করা ফাংশনটি এক্সিকিউট করার আগে কোডটি স্বয়ংক্রিয়ভাবে ব্যবহারকারীর টোকেন-কে ETH-এ রূপান্তর করবে।
### গভর্নেন্স {#governance}
-একটি [DAO](/dao/)-এর জন্য বেসপোক গভর্নেন্স সিস্টেম তৈরি করা ব্যয়বহুল এবং সময়সাপেক্ষ হতে পারে। পরিবর্তে, আপনি আপনার DAO বুটস্ট্র্যাপ করতে একটি ওপেন-সোর্স গভর্নেন্স টুলকিট ব্যবহার করতে পারেন, যেমন [Aragon ক্লায়েন্ট](https://client.aragon.org/), দ্রুত একটি গভর্নেন্স কাঠামো তৈরি করার জন্য।
+একটি [DAO](/dao/)-এর জন্য কাস্টম গভর্নেন্স সিস্টেম তৈরি করা ব্যয়বহুল এবং সময়সাপেক্ষ হতে পারে। এর পরিবর্তে, আপনি দ্রুত একটি গভর্নেন্স ফ্রেমওয়ার্ক তৈরি করতে আপনার DAO বুটস্ট্র্যাপ করার জন্য একটি ওপেন-সোর্স গভর্নেন্স টুলকিট ব্যবহার করতে পারেন, যেমন [Aragon Client](https://client.aragon.org/)।
-### পরিচয় ব্যবস্থাপনা {#identity-management}
+### আইডেন্টিটি ম্যানেজমেন্ট {#identity-management}
-একটি কাস্টম প্রমাণীকরণ সিস্টেম তৈরি করার বা কেন্দ্রীভূত প্রদানকারীদের উপর নির্ভর করার পরিবর্তে, আপনি ব্যবহারকারীদের জন্য প্রমাণীকরণ পরিচালনা করতে ডিসেন্ট্রালাইজড আইডেন্টিটি (DID) টুলস একীভূত করতে পারেন। একটি উদাহরণ হলো [SpruceID](https://www.spruceid.com/), একটি ওপেন-সোর্স টুলকিট যা "Sign in with Ethereum" কার্যকারিতা অফার করে যা ব্যবহারকারীদের একটি ইথেরিয়াম ওয়ালেট দিয়ে পরিচয় প্রমাণীকরণ করতে দেয়।
+একটি কাস্টম অথেনটিকেশন সিস্টেম তৈরি করার বা সেন্ট্রালাইজড প্রোভাইডারদের ওপর নির্ভর করার পরিবর্তে, আপনি ব্যবহারকারীদের জন্য অথেনটিকেশন পরিচালনা করতে ডিসেন্ট্রালাইজড আইডেন্টিটি (DID) টুলগুলো ইন্টিগ্রেট করতে পারেন। এর একটি উদাহরণ হলো [SpruceID](https://www.spruceid.com/), একটি ওপেন-সোর্স টুলকিট যা "Sign in with Ethereum" কার্যকারিতা অফার করে, যা ব্যবহারকারীদের একটি ইথিরিয়াম ওয়ালেট দিয়ে আইডেন্টিটি অথেনটিকেট করতে দেয়।
-## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
+## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [create-eth-app দিয়ে আপনার ডিএ্যাপ ফ্রন্টএন্ড ডেভেলপমেন্ট শুরু করুন](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _– বাক্সের বাইরে জনপ্রিয় স্মার্ট কন্ট্র্যাক্ট সহ অ্যাপ তৈরি করতে create-eth-app কীভাবে ব্যবহার করবেন তার একটি সংক্ষিপ্ত বিবরণ।_
+- [create-eth-app দিয়ে আপনার ডিএ্যাপ ফ্রন্টএন্ড ডেভেলপমেন্ট শুরু করুন](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _– জনপ্রিয় স্মার্ট কন্ট্রাক্টগুলোর সাথে অ্যাপ তৈরি করতে কীভাবে create-eth-app ব্যবহার করতে হয় তার একটি ওভারভিউ।_
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-- [কম্পোজেবিলিটিই উদ্ভাবন](https://a16zcrypto.com/posts/article/how-composability-unlocks-crypto-and-everything-else/)
-- [Web3-এর জন্য কম্পোজেবিলিটি কেন গুরুত্বপূর্ণ](https://hackernoon.com/why-composability-matters-for-web3)
-- [কম্পোজেবিলিটি কী?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.)
+- [কম্পোজেবিলিটি হলো ইনোভেশন](https://a16zcrypto.com/posts/article/how-composability-unlocks-crypto-and-everything-else/)
+- [ওয়েব3-এর জন্য কম্পোজেবিলিটি কেন গুরুত্বপূর্ণ](https://hackernoon.com/why-composability-matters-for-web3)
+- [কম্পোজেবিলিটি কী?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/bn/developers/docs/smart-contracts/deploying/index.md
index 6ce636a2adc..bee092e38e0 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/deploying/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/deploying/index.md
@@ -1,81 +1,81 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করা"
-description: "পূর্বশর্ত, টুলস এবং ডিপ্লয়মেন্টের ধাপসহ কীভাবে ইথেরিয়াম নেটওয়ার্কে স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করতে হয় তা শিখুন।"
+title: স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা
+description: ইথিরিয়াম নেটওয়ার্কে স্মার্ট কন্ট্রাক্ট কীভাবে ডিপ্লয় করতে হয়, এর পূর্বশর্ত, টুলস এবং ডিপ্লয়মেন্টের ধাপগুলো সম্পর্কে জানুন।
lang: bn
---
-একটি ইথেরিয়াম নেটওয়ার্কের ব্যবহারকারীদের কাছে উপলব্ধ করার জন্য আপনাকে আপনার স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করতে হবে।
+ইথিরিয়াম নেটওয়ার্কের ব্যবহারকারীদের জন্য আপনার স্মার্ট কন্ট্রাক্টটি সহজলভ্য করতে আপনাকে এটি ডিপ্লয় করতে হবে।
-একটি স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করতে, আপনাকে শুধুমাত্র কোনো প্রাপক নির্দিষ্ট না করে স্মার্ট কন্ট্র্যাক্টের কম্পাইল করা কোডসহ একটি ইথেরিয়াম লেনদেন পাঠাতে হবে।
+একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার জন্য, আপনাকে কেবল কোনো প্রাপক নির্দিষ্ট না করেই স্মার্ট কন্ট্রাক্টের কম্পাইল করা কোড সম্বলিত একটি ইথিরিয়াম লেনদেন পাঠাতে হবে।
## পূর্বশর্ত {#prerequisites}
-স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করার আগে আপনার [ইথেরিয়াম নেটওয়ার্ক](/developers/docs/networks/), [লেনদেন](/developers/docs/transactions/) এবং [স্মার্ট কন্ট্র্যাক্টের অ্যানাটমি](/developers/docs/smart-contracts/anatomy/) বোঝা উচিত।
+স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার আগে আপনার [ইথিরিয়াম নেটওয়ার্ক](/developers/docs/networks/), [লেনদেন](/developers/docs/transactions/) এবং [স্মার্ট কন্ট্রাক্টের গঠন](/developers/docs/smart-contracts/anatomy/) সম্পর্কে বোঝা উচিত।
-একটি কন্ট্র্যাক্ট ডিপ্লয় করতেও ইথার (ETH) খরচ হয় যেহেতু সেগুলি ব্লকচেইনে সংরক্ষিত থাকে, তাই আপনার ইথেরিয়ামের [গ্যাস এবং ফি](/developers/docs/gas/) এর সাথে পরিচিত হওয়া উচিত।
+একটি কন্ট্রাক্ট ডিপ্লয় করতে ইথার (ETH) খরচ হয় কারণ এগুলো ব্লকচেইনে সংরক্ষিত থাকে, তাই আপনার ইথিরিয়ামের [গ্যাস এবং ফি](/developers/docs/gas/) সম্পর্কে ধারণা থাকা উচিত।
-অবশেষে, এটি ডিপ্লয় করার আগে আপনাকে আপনার কন্ট্র্যাক্ট কম্পাইল করতে হবে, তাই নিশ্চিত করুন যে আপনি [স্মার্ট কন্ট্র্যাক্ট কম্পাইল করা](/developers/docs/smart-contracts/compiling/) সম্পর্কে পড়েছেন।
+সবশেষে, ডিপ্লয় করার আগে আপনাকে আপনার কন্ট্রাক্টটি কম্পাইল করতে হবে, তাই নিশ্চিত করুন যে আপনি [স্মার্ট কন্ট্রাক্ট কম্পাইল করা](/developers/docs/smart-contracts/compiling/) সম্পর্কে পড়েছেন।
-## কীভাবে একটি স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করবেন {#how-to-deploy-a-smart-contract}
+## কীভাবে একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করবেন {#how-to-deploy-a-smart-contract}
-### আপনার যা প্রয়োজন হবে {#what-youll-need}
+### আপনার যা যা প্রয়োজন হবে {#what-youll-need}
-- আপনার কন্ট্র্যাক্টের বাইটকোড – এটি [কম্পাইলেশন](/developers/docs/smart-contracts/compiling/) এর মাধ্যমে তৈরি হয়
-- গ্যাসের জন্য ETH – আপনি অন্যান্য লেনদেনের মতো আপনার গ্যাস লিমিট সেট করবেন তাই সচেতন থাকুন যে একটি সাধারণ ETH ট্রান্সফারের চেয়ে কন্ট্র্যাক্ট ডিপ্লয়মেন্টের জন্য অনেক বেশি গ্যাস প্রয়োজন।
-- একটি ডিপ্লয়মেন্ট স্ক্রিপ্ট বা প্লাগইন
-- একটি [ইথেরিয়াম নোড](/developers/docs/nodes-and-clients/) এ অ্যাক্সেস, হয় আপনার নিজের নোড চালিয়ে, একটি পাবলিক নোডের সাথে সংযোগ করে, অথবা একটি [নোড সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service/) ব্যবহার করে একটি API কী এর মাধ্যমে।
+- আপনার কন্ট্রাক্টের বাইটকোড – এটি [কম্পাইলেশন](/developers/docs/smart-contracts/compiling/)-এর মাধ্যমে তৈরি হয়
+- গ্যাসের জন্য ETH – আপনি অন্যান্য লেনদেনের মতোই আপনার গ্যাস লিমিট সেট করবেন, তাই মনে রাখবেন যে কন্ট্রাক্ট ডিপ্লয়মেন্টের জন্য একটি সাধারণ ETH ট্রান্সফারের চেয়ে অনেক বেশি গ্যাস প্রয়োজন হয়
+- একটি ডিপ্লয়মেন্ট স্ক্রিপ্ট বা প্লাগইন
+- একটি [ইথিরিয়াম নোড](/developers/docs/nodes-and-clients/)-এ অ্যাক্সেস, যা আপনি নিজের নোড চালিয়ে, কোনো পাবলিক নোডের সাথে সংযুক্ত হয়ে, অথবা [নোড সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service/) ব্যবহার করে API কি-এর মাধ্যমে পেতে পারেন
-### একটি স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করার পদক্ষেপ {#steps-to-deploy}
+### স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার ধাপসমূহ {#steps-to-deploy}
-সংশ্লিষ্ট পদক্ষেপগুলি সংশ্লিষ্ট ডেভেলপমেন্ট ফ্রেমওয়ার্কের উপর নির্ভর করবে। উদাহরণস্বরূপ, আপনি [আপনার কন্ট্র্যাক্ট ডিপ্লয় করার উপর Hardhat-এর ডকুমেন্টেশন](https://hardhat.org/docs/tutorial/deploying) অথবা [একটি স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় এবং ভেরিফাই করার উপর Foundry-এর ডকুমেন্টেশন](https://book.getfoundry.sh/forge/deploying) দেখতে পারেন। একবার ডিপ্লয় করা হলে, আপনার কন্ট্র্যাক্টের অন্যান্য [অ্যাকাউন্ট](/developers/docs/accounts/) এর মতো একটি ইথেরিয়াম অ্যাড্রেস থাকবে এবং [সোর্স কোড ভেরিফিকেশন টুলস](/developers/docs/smart-contracts/verifying/#source-code-verification-tools) ব্যবহার করে এটি ভেরিফাই করা যেতে পারে।
+এর নির্দিষ্ট ধাপগুলো নির্ভর করবে আপনি কোন ডেভেলপমেন্ট ফ্রেমওয়ার্ক ব্যবহার করছেন তার ওপর। উদাহরণস্বরূপ, আপনি [কন্ট্রাক্ট ডিপ্লয় করার বিষয়ে Hardhat-এর ডকুমেন্টেশন](https://hardhat.org/docs/tutorial/deploying) অথবা [স্মার্ট কন্ট্রাক্ট ডিপ্লয় এবং ভেরিফাই করার বিষয়ে Foundry-এর ডকুমেন্টেশন](https://book.getfoundry.sh/forge/deploying) দেখতে পারেন। একবার ডিপ্লয় হয়ে গেলে, অন্যান্য [একাউন্ট](/developers/docs/accounts/)-এর মতো আপনার কন্ট্রাক্টটিরও একটি ইথিরিয়াম এডড্রেস থাকবে এবং এটি [সোর্স কোড ভেরিফিকেশন টুলস](/developers/docs/smart-contracts/verifying/#source-code-verification-tools) ব্যবহার করে ভেরিফাই করা যাবে।
## সম্পর্কিত টুলস {#related-tools}
-**Remix - _Remix IDE ইথেরিয়ামের মতো ব্লকচেইনগুলির জন্য স্মার্ট কন্ট্র্যাক্ট ডেভেলপ, ডিপ্লয় এবং পরিচালনা করার অনুমতি দেয়_**
+**Remix - _Remix IDE ইথিরিয়ামের মতো ব্লকচেইনগুলোর জন্য স্মার্ট কন্ট্রাক্ট ডেভেলপ, ডিপ্লয় এবং পরিচালনা করার সুবিধা দেয়_**
- [Remix](https://remix.ethereum.org)
-**Tenderly - _Web3 ডেভেলপমেন্ট প্ল্যাটফর্ম যা স্মার্ট কন্ট্র্যাক্ট ডেভেলপ, পরীক্ষা, পর্যবেক্ষণ এবং পরিচালনা করার জন্য ডিবাগিং, অবজার্ভেবিলিটি এবং অবকাঠামো তৈরির ব্লক সরবরাহ করে_**
+**Tenderly - _ওয়েব3 ডেভেলপমেন্ট প্ল্যাটফর্ম যা স্মার্ট কন্ট্রাক্ট ডেভেলপ, টেস্টিং, মনিটরিং এবং পরিচালনার জন্য ডিবাগিং, অবজারভেবিলিটি এবং ইনফ্রাস্ট্রাকচার বিল্ডিং ব্লক প্রদান করে_**
- [tenderly.co](https://tenderly.co/)
- [Docs](https://docs.tenderly.co/)
- [GitHub](https://github.com/Tenderly)
- [Discord](https://discord.gg/eCWjuvt)
-**Hardhat - _আপনার ইথেরিয়াম সফটওয়্যার কম্পাইল, ডিপ্লয়, পরীক্ষা এবং ডিবাগ করার জন্য একটি ডেভেলপমেন্ট এনভায়রনমেন্ট_**
+**Hardhat - _আপনার ইথিরিয়াম সফটওয়্যার কম্পাইল, ডিপ্লয়, টেস্ট এবং ডিবাগ করার জন্য একটি ডেভেলপমেন্ট এনভায়রনমেন্ট_**
- [hardhat.org](https://hardhat.org/getting-started/)
-- [আপনার কন্ট্র্যাক্ট ডিপ্লয় করার ডকুমেন্টেশন](https://hardhat.org/docs/tutorial/deploying)
+- [আপনার কন্ট্রাক্ট ডিপ্লয় করার বিষয়ে ডক্স](https://hardhat.org/docs/tutorial/deploying)
- [GitHub](https://github.com/nomiclabs/hardhat)
- [Discord](https://discord.com/invite/TETZs2KK4k)
-**thirdweb - _একটিমাত্র কমান্ড ব্যবহার করে সহজেই যেকোনো EVM সামঞ্জস্যপূর্ণ চেইনে যেকোনো কন্ট্র্যাক্ট ডিপ্লয় করুন_**
+**thirdweb - _একটি মাত্র কমান্ড ব্যবহার করে যেকোনো EVM সামঞ্জস্যপূর্ণ চেইনে সহজেই যেকোনো কন্ট্রাক্ট ডিপ্লয় করুন_**
-- [নথিপত্র](https://portal.thirdweb.com/deploy/)
+- [ডকুমেন্টেশন](https://portal.thirdweb.com/deploy/)
-**Crossmint - _স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করতে, ক্রেডিট-কার্ড এবং ক্রস চেইন পেমেন্ট সক্ষম করতে এবং NFT তৈরি, বিতরণ, বিক্রি, সংরক্ষণ এবং সম্পাদনা করতে API ব্যবহার করার জন্য এন্টারপ্রাইজ-গ্রেড web3 ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
+**Crossmint - _স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে, ক্রেডিট-কার্ড এবং ক্রস চেইন পেমেন্ট সক্ষম করতে এবং NFT তৈরি, বিতরণ, বিক্রি, সংরক্ষণ এবং সম্পাদনা করার জন্য API ব্যবহার করতে এন্টারপ্রাইজ-গ্রেড ওয়েব3 ডেভেলপমেন্ট প্ল্যাটফর্ম।_**
- [crossmint.com](https://www.crossmint.com)
-- [নথিপত্র](https://docs.crossmint.com)
+- [ডকুমেন্টেশন](https://docs.crossmint.com)
- [Discord](https://discord.com/invite/crossmint)
-- [Blog](https://blog.crossmint.com)
+- [ব্লগ](https://blog.crossmint.com)
-## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
+## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [আপনার প্রথম স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করা](/developers/tutorials/deploying-your-first-smart-contract/) _– একটি ইথেরিয়াম টেস্ট নেটওয়ার্কে আপনার প্রথম স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করার একটি পরিচিতি।_
-- [হ্যালো ওয়ার্ল্ড | স্মার্ট কন্ট্র্যাক্ট টিউটোরিয়াল](/developers/tutorials/hello-world-smart-contract/) _– ইথেরিয়ামে একটি বেসিক স্মার্ট কন্ট্র্যাক্ট তৈরি এবং ডিপ্লয় করার জন্য একটি সহজবোধ্য টিউটোরিয়াল।_
-- [Solidity থেকে অন্যান্য কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করুন](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– কীভাবে একটি বিদ্যমান কন্ট্রাক্ট থেকে একটি স্মার্ট কন্ট্র্যাক্ট ডেপ্লয় করবেন এবং এটির সাথে ইন্টারঅ্যাক্ট করবেন।_
-- [কীভাবে আপনার কন্ট্র্যাক্টের আকার কমাবেন](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- কীভাবে আপনার কন্ট্র্যাক্টের আকার কমিয়ে সীমার নিচে রাখবেন এবং গ্যাসে সাশ্রয় করবেন_
+- [আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা](/developers/tutorials/deploying-your-first-smart-contract/) _– একটি ইথিরিয়াম টেস্টনেট-এ আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার পরিচিতি।_
+- [হ্যালো ওয়ার্ল্ড | স্মার্ট কন্ট্রাক্ট টিউটোরিয়াল](/developers/tutorials/hello-world-smart-contract/) _– ইথিরিয়ামে একটি বেসিক স্মার্ট কন্ট্রাক্ট তৈরি এবং ডিপ্লয় করার জন্য একটি সহজ টিউটোরিয়াল।_
+- [সলিডিটি থেকে অন্যান্য কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করা](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– কীভাবে একটি বিদ্যমান কন্ট্রাক্ট থেকে একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে হয় এবং এর সাথে ইন্টারঅ্যাক্ট করতে হয়।_
+- [কীভাবে আপনার কন্ট্রাক্টের আকার ছোট করবেন](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- কীভাবে আপনার কন্ট্রাক্টের আকার কমিয়ে সীমার মধ্যে রাখবেন এবং গ্যাস বাঁচাবেন_
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_
-- [Hardhat দিয়ে আপনার কন্ট্র্যাক্ট ডিপ্লয় করা](https://hardhat.org/docs/tutorial/deploying) - _Nomic Labs_
+- [Hardhat দিয়ে আপনার কন্ট্রাক্ট ডিপ্লয় করা](https://hardhat.org/docs/tutorial/deploying) - _Nomic Labs_
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
-- [একটি ইথেরিয়াম নোড চালান](/developers/docs/nodes-and-clients/run-a-node/)
-- [নোড-অ্যাস-এ-সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service)
+- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
+- [একটি ইথিরিয়াম নোড রান করুন](/developers/docs/nodes-and-clients/run-a-node/)
+- [নোডস-অ্যাজ-এ-সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/bn/developers/docs/smart-contracts/formal-verification/index.md
index d0adf996442..87d992b3c3b 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/formal-verification/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/formal-verification/index.md
@@ -1,148 +1,148 @@
---
-title: "স্মার্ট কন্ট্র্যাক্টের আনুষ্ঠানিক যাচাইকরণ"
-description: "ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টের জন্য আনুষ্ঠানিক যাচাইকরণের একটি সংক্ষিপ্ত বিবরণ"
+title: স্মার্ট কন্ট্রাক্টের ফরমাল ভেরিফিকেশন
+description: ইথিরিয়াম স্মার্ট কন্ট্রাক্টের জন্য ফরমাল ভেরিফিকেশনের একটি ওভারভিউ
lang: bn
---
-[স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) বিকেন্দ্রীভূত, ট্রাস্টলেস এবং শক্তিশালী অ্যাপ্লিকেশন তৈরি করা সম্ভব করে তুলছে যা নতুন ব্যবহারের ক্ষেত্র তৈরি করে এবং ব্যবহারকারীদের জন্য ভ্যালু আনলক করে। যেহেতু স্মার্ট কন্ট্র্যাক্টগুলি প্রচুর পরিমাণে ভ্যালু পরিচালনা করে, তাই ডেভেলপারদের জন্য নিরাপত্তা একটি গুরুত্বপূর্ণ বিবেচ্য বিষয়।
+[স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) ডিসেন্ট্রালাইজড, ট্রাস্টলেস এবং শক্তিশালী অ্যাপ্লিকেশন তৈরি করা সম্ভব করছে যা নতুন ইউজ-কেস নিয়ে আসে এবং ব্যবহারকারীদের জন্য ভ্যালু আনলক করে। যেহেতু স্মার্ট কন্ট্রাক্ট প্রচুর পরিমাণ ভ্যালু পরিচালনা করে, তাই ডেভেলপারদের জন্য নিরাপত্তা একটি অত্যন্ত গুরুত্বপূর্ণ বিবেচ্য বিষয়।
-আনুষ্ঠানিক যাচাইকরণ হল [স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা](/developers/docs/smart-contracts/security/) উন্নত করার জন্য প্রস্তাবিত কৌশলগুলির মধ্যে একটি। আনুষ্ঠানিক যাচাইকরণ, যা প্রোগ্রামগুলির নির্দিষ্টকরণ, নকশা এবং যাচাই করার জন্য [আনুষ্ঠানিক পদ্ধতি](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/) ব্যবহার করে, বছরের পর বছর ধরে গুরুত্বপূর্ণ হার্ডওয়্যার এবং সফ্টওয়্যার সিস্টেমগুলির সঠিকতা নিশ্চিত করতে ব্যবহৃত হয়ে আসছে।
+[স্মার্ট কন্ট্রাক্ট নিরাপত্তা](/developers/docs/smart-contracts/security/) উন্নত করার জন্য ফরমাল ভেরিফিকেশন একটি প্রস্তাবিত কৌশল। ফরমাল ভেরিফিকেশন, যা প্রোগ্রাম নির্দিষ্টকরণ, ডিজাইন এবং যাচাই করার জন্য [ফরমাল মেথড](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/) ব্যবহার করে, তা বছরের পর বছর ধরে গুরুত্বপূর্ণ হার্ডওয়্যার এবং সফটওয়্যার সিস্টেমের সঠিকতা নিশ্চিত করতে ব্যবহৃত হয়ে আসছে।
-স্মার্ট কন্ট্র্যাক্টে প্রয়োগ করা হলে, আনুষ্ঠানিক যাচাইকরণ প্রমাণ করতে পারে যে একটি কন্ট্র্যাক্টের ব্যবসায়িক যুক্তি একটি পূর্বনির্ধারিত স্পেসিফিকেশন পূরণ করে। কন্ট্র্যাক্ট কোডের সঠিকতা মূল্যায়নের জন্য অন্যান্য পদ্ধতির তুলনায়, যেমন টেস্টিং, আনুষ্ঠানিক যাচাইকরণ একটি স্মার্ট কন্ট্র্যাক্ট কার্যকরীভাবে সঠিক হওয়ার শক্তিশালী গ্যারান্টি দেয়।
+স্মার্ট কন্ট্রাক্টে প্রয়োগ করা হলে, ফরমাল ভেরিফিকেশন প্রমাণ করতে পারে যে একটি কন্ট্রাক্টের বিজনেস লজিক পূর্বনির্ধারিত স্পেসিফিকেশন পূরণ করে। কন্ট্রাক্ট কোডের সঠিকতা মূল্যায়নের অন্যান্য পদ্ধতি, যেমন টেস্টিং-এর তুলনায়, ফরমাল ভেরিফিকেশন আরও শক্তিশালী গ্যারান্টি দেয় যে একটি স্মার্ট কন্ট্রাক্ট কার্যকারিতার দিক থেকে সঠিক।
-## আনুষ্ঠানিক যাচাইকরণ কী? {#what-is-formal-verification}
+## ফরমাল ভেরিফিকেশন কী? {#what-is-formal-verification}
-আনুষ্ঠানিক যাচাইকরণ একটি আনুষ্ঠানিক স্পেসিফিকেশনের সাপেক্ষে একটি সিস্টেমের সঠিকতা মূল্যায়নের প্রক্রিয়াকে বোঝায়। সহজ ভাষায়, আনুষ্ঠানিক যাচাইকরণ আমাদের পরীক্ষা করার সুযোগ দেয় যে একটি সিস্টেমের আচরণ কিছু প্রয়োজনীয়তা পূরণ করে কিনা (অর্থাৎ, আমরা যা চাই তা করে)।
+ফরমাল ভেরিফিকেশন বলতে একটি ফরমাল স্পেসিফিকেশনের সাপেক্ষে কোনো সিস্টেমের সঠিকতা মূল্যায়নের প্রক্রিয়াকে বোঝায়। সহজ কথায়, ফরমাল ভেরিফিকেশন আমাদের পরীক্ষা করতে দেয় যে কোনো সিস্টেমের আচরণ কিছু প্রয়োজনীয়তা পূরণ করে কিনা (অর্থাৎ, এটি আমরা যা চাই তা করে কিনা)।
-সিস্টেমের প্রত্যাশিত আচরণ (এই ক্ষেত্রে একটি স্মার্ট কন্ট্র্যাক্ট) আনুষ্ঠানিক মডেলিং ব্যবহার করে বর্ণনা করা হয়, যেখানে স্পেসিফিকেশন ভাষা আনুষ্ঠানিক বৈশিষ্ট্য তৈরি করতে সক্ষম করে। আনুষ্ঠানিক যাচাইকরণ কৌশলগুলি তখন যাচাই করতে পারে যে একটি কন্ট্র্যাক্টের বাস্তবায়ন তার স্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ এবং পূর্বের সঠিকতার গাণিতিক প্রমাণ বের করতে পারে। যখন একটি কন্ট্র্যাক্ট তার স্পেসিফিকেশন পূরণ করে, তখন এটিকে "কার্যকরীভাবে সঠিক", "ডিজাইনের দ্বারা সঠিক", বা "নির্মাণের দ্বারা সঠিক" হিসাবে বর্ণনা করা হয়।
+সিস্টেমের (এই ক্ষেত্রে একটি স্মার্ট কন্ট্রাক্ট) প্রত্যাশিত আচরণগুলো ফরমাল মডেলিং ব্যবহার করে বর্ণনা করা হয়, যেখানে স্পেসিফিকেশন ল্যাঙ্গুয়েজগুলো ফরমাল প্রপার্টি তৈরি করতে সক্ষম করে। ফরমাল ভেরিফিকেশন কৌশলগুলো এরপর যাচাই করতে পারে যে একটি কন্ট্রাক্টের বাস্তবায়ন তার স্পেসিফিকেশন মেনে চলে এবং এর সঠিকতার গাণিতিক প্রমাণ বের করতে পারে। যখন একটি কন্ট্রাক্ট তার স্পেসিফিকেশন পূরণ করে, তখন এটিকে "কার্যকারিতার দিক থেকে সঠিক" (functionally correct), "ডিজাইন অনুযায়ী সঠিক" (correct by design), বা "গঠন অনুযায়ী সঠিক" (correct by construction) হিসেবে বর্ণনা করা হয়।
-### একটি আনুষ্ঠানিক মডেল কী? {#what-is-a-formal-model}
+### ফরমাল মডেল কী? {#what-is-a-formal-model}
-কম্পিউটার বিজ্ঞানে, একটি [আনুষ্ঠানিক মডেল](https://en.wikipedia.org/wiki/Model_of_computation) হল একটি গণনামূলক প্রক্রিয়ার গাণিতিক বিবরণ। প্রোগ্রামগুলিকে গাণিতিক ফাংশনে (সমীকরণ) বিমূর্ত করা হয়, মডেলটি বর্ণনা করে যে একটি ইনপুট দেওয়া হলে ফাংশনগুলির আউটপুটগুলি কীভাবে গণনা করা হয়।
+কম্পিউটার বিজ্ঞানে, একটি [ফরমাল মডেল](https://en.wikipedia.org/wiki/Model_of_computation) হলো একটি কম্পিউটেশনাল প্রক্রিয়ার গাণিতিক বর্ণনা। প্রোগ্রামগুলোকে গাণিতিক ফাংশনে (সমীকরণ) অ্যাবস্ট্রাক্ট করা হয়, যেখানে মডেলটি বর্ণনা করে যে একটি ইনপুট দেওয়া হলে ফাংশনগুলোর আউটপুট কীভাবে গণনা করা হয়।
-আনুষ্ঠানিক মডেলগুলি একটি বিমূর্ততার স্তর সরবরাহ করে যার উপর একটি প্রোগ্রামের আচরণের বিশ্লেষণ মূল্যায়ন করা যেতে পারে। আনুষ্ঠানিক মডেলের অস্তিত্ব একটি _আনুষ্ঠানিক স্পেসিফিকেশন_ তৈরির অনুমতি দেয়, যা প্রশ্নবিদ্ধ মডেলের পছন্দসই বৈশিষ্ট্যগুলি বর্ণনা করে।
+ফরমাল মডেলগুলো এমন একটি অ্যাবস্ট্রাকশন লেভেল প্রদান করে যার ওপর ভিত্তি করে একটি প্রোগ্রামের আচরণের বিশ্লেষণ মূল্যায়ন করা যেতে পারে। ফরমাল মডেলের অস্তিত্ব একটি _ফরমাল স্পেসিফিকেশন_ তৈরির সুযোগ দেয়, যা আলোচ্য মডেলের কাঙ্ক্ষিত প্রপার্টিগুলো বর্ণনা করে।
-আনুষ্ঠানিক যাচাইকরণের জন্য স্মার্ট কন্ট্র্যাক্ট মডেলিংয়ের জন্য বিভিন্ন কৌশল ব্যবহার করা হয়। উদাহরণস্বরূপ, কিছু মডেল একটি স্মার্ট কন্ট্র্যাক্টের উচ্চ-স্তরের আচরণ সম্পর্কে যুক্তি দেওয়ার জন্য ব্যবহৃত হয়। এই মডেলিং কৌশলগুলি স্মার্ট কন্ট্র্যাক্টগুলিতে একটি ব্ল্যাক-বক্স ভিউ প্রয়োগ করে, সেগুলিকে এমন সিস্টেম হিসাবে দেখে যা ইনপুট গ্রহণ করে এবং সেই ইনপুটগুলির উপর ভিত্তি করে গণনা সম্পাদন করে।
+ফরমাল ভেরিফিকেশনের জন্য স্মার্ট কন্ট্রাক্ট মডেলিং করতে বিভিন্ন কৌশল ব্যবহৃত হয়। উদাহরণস্বরূপ, কিছু মডেল একটি স্মার্ট কন্ট্রাক্টের হাই-লেভেল আচরণ সম্পর্কে যুক্তি দিতে ব্যবহৃত হয়। এই মডেলিং কৌশলগুলো স্মার্ট কন্ট্রাক্টে একটি ব্ল্যাক-বক্স ভিউ প্রয়োগ করে, সেগুলোকে এমন সিস্টেম হিসেবে দেখে যা ইনপুট গ্রহণ করে এবং সেই ইনপুটগুলোর ওপর ভিত্তি করে কম্পিউটেশন চালায়।
-উচ্চ-স্তরের মডেলগুলি স্মার্ট কন্ট্র্যাক্ট এবং বাহ্যিক এজেন্ট, যেমন এক্সটারনালি ওনড অ্যাকাউন্ট (EOAs), কন্ট্র্যাক্ট অ্যাকাউন্ট এবং ব্লকচেইন পরিবেশের মধ্যে সম্পর্কের উপর ফোকাস করে। এই ধরনের মডেলগুলি সেই বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করার জন্য উপযোগী যা নির্দিষ্ট করে যে নির্দিষ্ট ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রতিক্রিয়া হিসাবে একটি কন্ট্র্যাক্ট কীভাবে আচরণ করবে।
+হাই-লেভেল মডেলগুলো স্মার্ট কন্ট্রাক্ট এবং বাহ্যিক এজেন্ট, যেমন এক্সটার্নালি ওনড একাউন্ট (EOAs), কন্ট্রাক্ট একাউন্ট এবং ব্লকচেইন পরিবেশের মধ্যে সম্পর্কের ওপর ফোকাস করে। এই ধরনের মডেলগুলো এমন প্রপার্টি সংজ্ঞায়িত করতে কার্যকর যা নির্দিষ্ট ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রতিক্রিয়ায় একটি কন্ট্রাক্টের কীভাবে আচরণ করা উচিত তা নির্দিষ্ট করে।
-বিপরীতভাবে, অন্যান্য আনুষ্ঠানিক মডেলগুলি একটি স্মার্ট কন্ট্র্যাক্টের নিম্ন-স্তরের আচরণের উপর ফোকাস করে। যদিও উচ্চ-স্তরের মডেলগুলি একটি কন্ট্র্যাক্টের কার্যকারিতা সম্পর্কে যুক্তি দেখাতে সাহায্য করতে পারে, তারা বাস্তবায়নের অভ্যন্তরীণ কাজ সম্পর্কে বিশদ বিবরণ ক্যাপচার করতে ব্যর্থ হতে পারে। নিম্ন-স্তরের মডেলগুলি প্রোগ্রাম বিশ্লেষণে একটি হোয়াইট-বক্স ভিউ প্রয়োগ করে এবং একটি কন্ট্র্যাক্টের সম্পাদনের সাথে প্রাসঙ্গিক বৈশিষ্ট্যগুলি সম্পর্কে যুক্তি দেওয়ার জন্য স্মার্ট কন্ট্র্যাক্ট অ্যাপ্লিকেশনগুলির নিম্ন-স্তরের উপস্থাপনার উপর নির্ভর করে, যেমন প্রোগ্রাম ট্রেস এবং [কন্ট্রোল ফ্লো গ্রাফ](https://en.wikipedia.org/wiki/Control-flow_graph)।
+অন্যদিকে, অন্যান্য ফরমাল মডেলগুলো একটি স্মার্ট কন্ট্রাক্টের লো-লেভেল আচরণের ওপর ফোকাস করে। যদিও হাই-লেভেল মডেলগুলো একটি কন্ট্রাক্টের কার্যকারিতা সম্পর্কে যুক্তি দিতে সাহায্য করতে পারে, তবে সেগুলো বাস্তবায়নের অভ্যন্তরীণ কাজ সম্পর্কে বিস্তারিত তথ্য ক্যাপচার করতে ব্যর্থ হতে পারে। লো-লেভেল মডেলগুলো প্রোগ্রাম বিশ্লেষণে একটি হোয়াইট-বক্স ভিউ প্রয়োগ করে এবং একটি কন্ট্রাক্টের এক্সিকিউশনের সাথে প্রাসঙ্গিক প্রপার্টিগুলো সম্পর্কে যুক্তি দিতে স্মার্ট কন্ট্রাক্ট অ্যাপ্লিকেশনগুলোর লোয়ার-লেভেল রিপ্রেজেন্টেশন, যেমন প্রোগ্রাম ট্রেস এবং [কন্ট্রোল ফ্লো গ্রাফ](https://en.wikipedia.org/wiki/Control-flow_graph)-এর ওপর নির্ভর করে।
-নিম্ন-স্তরের মডেলগুলিকে আদর্শ হিসাবে বিবেচনা করা হয় কারণ তারা ইথেরিয়ামের এক্সিকিউশন পরিবেশে (অর্থাৎ, [EVM](/developers/docs/evm/)) একটি স্মার্ট কন্ট্র্যাক্টের প্রকৃত এক্সিকিউশনকে প্রতিনিধিত্ব করে। নিম্ন-স্তরের মডেলিং কৌশলগুলি স্মার্ট কন্ট্র্যাক্টে গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্য স্থাপন এবং সম্ভাব্য দুর্বলতা সনাক্ত করার জন্য বিশেষভাবে কার্যকর।
+লো-লেভেল মডেলগুলোকে আদর্শ হিসেবে বিবেচনা করা হয় কারণ এগুলো ইথিরিয়ামের এক্সিকিউশন পরিবেশে (অর্থাৎ, [EVM](/developers/docs/evm/)) একটি স্মার্ট কন্ট্রাক্টের প্রকৃত এক্সিকিউশন উপস্থাপন করে। লো-লেভেল মডেলিং কৌশলগুলো স্মার্ট কন্ট্রাক্টে গুরুত্বপূর্ণ নিরাপত্তা প্রপার্টি প্রতিষ্ঠা করতে এবং সম্ভাব্য দুর্বলতা শনাক্ত করতে বিশেষভাবে কার্যকর।
-### একটি আনুষ্ঠানিক স্পেসিফিকেশন কী? {#what-is-a-formal-specification}
+### ফরমাল স্পেসিফিকেশন কী? {#what-is-a-formal-specification}
-একটি স্পেসিফিকেশন কেবল একটি প্রযুক্তিগত প্রয়োজনীয়তা যা একটি নির্দিষ্ট সিস্টেমকে অবশ্যই পূরণ করতে হবে। প্রোগ্রামিং-এ, স্পেসিফিকেশন একটি প্রোগ্রামের এক্সিকিউশন সম্পর্কে সাধারণ ধারণা উপস্থাপন করে (অর্থাৎ, প্রোগ্রামের কী করা উচিত)।
+একটি স্পেসিফিকেশন হলো কেবল একটি প্রযুক্তিগত প্রয়োজনীয়তা যা একটি নির্দিষ্ট সিস্টেমকে অবশ্যই পূরণ করতে হবে। প্রোগ্রামিংয়ে, স্পেসিফিকেশনগুলো একটি প্রোগ্রামের এক্সিকিউশন সম্পর্কে সাধারণ ধারণা উপস্থাপন করে (অর্থাৎ, প্রোগ্রামটির কী করা উচিত)।
-স্মার্ট কন্ট্র্যাক্টের প্রসঙ্গে, আনুষ্ঠানিক স্পেসিফিকেশন বলতে বোঝায় _বৈশিষ্ট্য_—একটি কন্ট্র্যাক্টকে অবশ্যই যে প্রয়োজনীয়তাগুলি পূরণ করতে হবে তার আনুষ্ঠানিক বিবরণ। এই জাতীয় বৈশিষ্ট্যগুলিকে "ইনভ্যারিয়েন্টস" হিসাবে বর্ণনা করা হয় এবং একটি কন্ট্র্যাক্টের এক্সিকিউশন সম্পর্কে যৌক্তিক দাবি উপস্থাপন করে যা ব্যতিক্রম ছাড়াই প্রতিটি সম্ভাব্য পরিস্থিতিতে অবশ্যই সত্য থাকতে হবে।
+স্মার্ট কন্ট্রাক্টের প্রেক্ষাপটে, ফরমাল স্পেসিফিকেশন বলতে _প্রপার্টি_ বোঝায়—একটি কন্ট্রাক্টকে অবশ্যই পূরণ করতে হবে এমন প্রয়োজনীয়তাগুলোর ফরমাল বর্ণনা। এই ধরনের প্রপার্টিগুলোকে "ইনভ্যারিয়েন্ট" (invariants) হিসেবে বর্ণনা করা হয় এবং এগুলো একটি কন্ট্রাক্টের এক্সিকিউশন সম্পর্কে যৌক্তিক দাবি উপস্থাপন করে যা কোনো ব্যতিক্রম ছাড়াই প্রতিটি সম্ভাব্য পরিস্থিতিতে সত্য থাকতে হবে।
-এইভাবে, আমরা একটি আনুষ্ঠানিক স্পেসিফিকেশনকে একটি আনুষ্ঠানিক ভাষায় লেখা বিবৃতির সংগ্রহ হিসাবে ভাবতে পারি যা একটি স্মার্ট কন্ট্র্যাক্টের উদ্দেশ্যমূলক এক্সিকিউশনকে বর্ণনা করে। স্পেসিফিকেশন একটি কন্ট্র্যাক্টের বৈশিষ্ট্যগুলি কভার করে এবং বিভিন্ন পরিস্থিতিতে কন্ট্র্যাক্টটি কীভাবে আচরণ করা উচিত তা সংজ্ঞায়িত করে। আনুষ্ঠানিক যাচাইকরণের উদ্দেশ্য হল এটি নির্ধারণ করা যে একটি স্মার্ট কন্ট্র্যাক্টের এই বৈশিষ্ট্যগুলি (ইনভ্যারিয়েন্টস) আছে কিনা এবং এক্সিকিউশনের সময় এই বৈশিষ্ট্যগুলি লঙ্ঘিত হয় না।
+সুতরাং, আমরা একটি ফরমাল স্পেসিফিকেশনকে একটি ফরমাল ভাষায় লেখা স্টেটমেন্টের সংগ্রহ হিসেবে ভাবতে পারি যা একটি স্মার্ট কন্ট্রাক্টের উদ্দিষ্ট এক্সিকিউশন বর্ণনা করে। স্পেসিফিকেশনগুলো একটি কন্ট্রাক্টের প্রপার্টি কভার করে এবং বিভিন্ন পরিস্থিতিতে কন্ট্রাক্টটির কীভাবে আচরণ করা উচিত তা সংজ্ঞায়িত করে। ফরমাল ভেরিফিকেশনের উদ্দেশ্য হলো একটি স্মার্ট কন্ট্রাক্টের এই প্রপার্টিগুলো (ইনভ্যারিয়েন্ট) আছে কিনা এবং এক্সিকিউশনের সময় এই প্রপার্টিগুলো লঙ্ঘিত হয় না তা নির্ধারণ করা।
-স্মার্ট কন্ট্র্যাক্টের নিরাপদ বাস্তবায়নের বিকাশে আনুষ্ঠানিক স্পেসিফিকেশন অত্যন্ত গুরুত্বপূর্ণ। যে কন্ট্র্যাক্টগুলি ইনভ্যারিয়েন্টস বাস্তবায়ন করতে ব্যর্থ হয় বা এক্সিকিউশনের সময় তাদের বৈশিষ্ট্য লঙ্ঘিত হয় সেগুলি দুর্বলতার শিকার হয় যা কার্যকারিতার ক্ষতি করতে পারে বা দূষিত এক্সপ্লয়েটের কারণ হতে পারে।
+স্মার্ট কন্ট্রাক্টের নিরাপদ বাস্তবায়ন তৈরিতে ফরমাল স্পেসিফিকেশন অত্যন্ত গুরুত্বপূর্ণ। যেসব কন্ট্রাক্ট ইনভ্যারিয়েন্ট বাস্তবায়ন করতে ব্যর্থ হয় বা এক্সিকিউশনের সময় তাদের প্রপার্টি লঙ্ঘিত হয়, সেগুলো এমন দুর্বলতার ঝুঁকিতে থাকে যা কার্যকারিতার ক্ষতি করতে পারে বা ক্ষতিকারক এক্সপ্লয়েটের কারণ হতে পারে।
-## স্মার্ট কন্ট্র্যাক্টের জন্য আনুষ্ঠানিক স্পেসিফিকেশনের প্রকারভেদ {#formal-specifications-for-smart-contracts}
+## স্মার্ট কন্ট্রাক্টের জন্য ফরমাল স্পেসিফিকেশনের ধরন {#formal-specifications-for-smart-contracts}
-আনুষ্ঠানিক স্পেসিফিকেশন প্রোগ্রাম এক্সিকিউশনের সঠিকতা সম্পর্কে গাণিতিক যুক্তি প্রদান করে। আনুষ্ঠানিক মডেলের মতো, আনুষ্ঠানিক স্পেসিফিকেশনগুলি উচ্চ-স্তরের বৈশিষ্ট্য বা একটি কন্ট্র্যাক্ট বাস্তবায়নের নিম্ন-স্তরের আচরণ উভয়ই ক্যাপচার করতে পারে।
+ফরমাল স্পেসিফিকেশন প্রোগ্রাম এক্সিকিউশনের সঠিকতা সম্পর্কে গাণিতিক যুক্তি সক্ষম করে। ফরমাল মডেলের মতো, ফরমাল স্পেসিফিকেশনগুলো একটি কন্ট্রাক্ট বাস্তবায়নের হাই-লেভেল প্রপার্টি বা লো-লেভেল আচরণ ক্যাপচার করতে পারে।
-আনুষ্ঠানিক স্পেসিফিকেশনগুলি [প্রোগ্রাম লজিক](https://en.wikipedia.org/wiki/Logic_programming)-এর উপাদানগুলি ব্যবহার করে প্রাপ্ত করা হয়, যা একটি প্রোগ্রামের বৈশিষ্ট্য সম্পর্কে আনুষ্ঠানিক যুক্তির সুযোগ দেয়। একটি প্রোগ্রাম লজিকের আনুষ্ঠানিক নিয়ম রয়েছে যা একটি প্রোগ্রামের প্রত্যাশিত আচরণকে (গাণিতিক ভাষায়) প্রকাশ করে। আনুষ্ঠানিক স্পেসিফিকেশন তৈরিতে বিভিন্ন প্রোগ্রাম লজিক ব্যবহার করা হয়, যার মধ্যে রয়েছে [রিচেবিলিটি লজিক](https://en.wikipedia.org/wiki/Reachability_problem), [টেম্পোরাল লজিক](https://en.wikipedia.org/wiki/Temporal_logic), এবং [হোয়ার লজিক](https://en.wikipedia.org/wiki/Hoare_logic)।
+ফরমাল স্পেসিফিকেশনগুলো [প্রোগ্রাম লজিক](https://en.wikipedia.org/wiki/Logic_programming)-এর উপাদান ব্যবহার করে তৈরি করা হয়, যা একটি প্রোগ্রামের প্রপার্টি সম্পর্কে ফরমাল যুক্তির সুযোগ দেয়। একটি প্রোগ্রাম লজিকের ফরমাল নিয়ম রয়েছে যা (গাণিতিক ভাষায়) একটি প্রোগ্রামের প্রত্যাশিত আচরণ প্রকাশ করে। ফরমাল স্পেসিফিকেশন তৈরিতে বিভিন্ন প্রোগ্রাম লজিক ব্যবহৃত হয়, যার মধ্যে রয়েছে [রিচেবিলিটি লজিক](https://en.wikipedia.org/wiki/Reachability_problem), [টেম্পোরাল লজিক](https://en.wikipedia.org/wiki/Temporal_logic), এবং [হোর লজিক](https://en.wikipedia.org/wiki/Hoare_logic)।
-স্মার্ট কন্ট্র্যাক্টের জন্য আনুষ্ঠানিক স্পেসিফিকেশনগুলিকে বিস্তৃতভাবে **উচ্চ-স্তরের** বা **নিম্ন-স্তরের** স্পেসিফিকেশন হিসাবে শ্রেণীবদ্ধ করা যেতে পারে। একটি স্পেসিফিকেশন যে বিভাগেরই হোক না কেন, এটি অবশ্যই বিশ্লেষণের অধীনে থাকা সিস্টেমের বৈশিষ্ট্যকে পর্যাপ্ত এবং দ্ব্যর্থহীনভাবে বর্ণনা করবে।
+স্মার্ট কন্ট্রাক্টের জন্য ফরমাল স্পেসিফিকেশনগুলোকে বিস্তৃতভাবে **হাই-লেভেল** বা **লো-লেভেল** স্পেসিফিকেশন হিসেবে শ্রেণীবদ্ধ করা যেতে পারে। একটি স্পেসিফিকেশন যে ক্যাটাগরিরই হোক না কেন, এটিকে অবশ্যই বিশ্লেষণাধীন সিস্টেমের প্রপার্টি পর্যাপ্ত এবং দ্ব্যর্থহীনভাবে বর্ণনা করতে হবে।
-### উচ্চ-স্তরের স্পেসিফিকেশন {#high-level-specifications}
+### হাই-লেভেল স্পেসিফিকেশন {#high-level-specifications}
-নাম থেকেই বোঝা যায়, একটি উচ্চ-স্তরের স্পেসিফিকেশন (যাকে "মডেল-ভিত্তিক স্পেসিফিকেশন"ও বলা হয়) একটি প্রোগ্রামের উচ্চ-স্তরের আচরণ বর্ণনা করে। উচ্চ-স্তরের স্পেসিফিকেশনগুলি একটি স্মার্ট কন্ট্র্যাক্টকে একটি [ফাইনাইট স্টেট মেশিন](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM) হিসাবে মডেল করে, যা অপারেশন সম্পাদনের মাধ্যমে স্টেটগুলির মধ্যে পরিবর্তন করতে পারে, যেখানে টেম্পোরাল লজিক FSM মডেলের জন্য আনুষ্ঠানিক বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়।
+নাম থেকেই বোঝা যায়, একটি হাই-লেভেল স্পেসিফিকেশন (যাকে "মডেল-ওরিয়েন্টেড স্পেসিফিকেশন"ও বলা হয়) একটি প্রোগ্রামের হাই-লেভেল আচরণ বর্ণনা করে। হাই-লেভেল স্পেসিফিকেশনগুলো একটি স্মার্ট কন্ট্রাক্টকে একটি [ফাইনাইট স্টেট মেশিন](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM) হিসেবে মডেল করে, যা অপারেশন সম্পাদন করে স্টেটগুলোর মধ্যে ট্রানজিশন করতে পারে, যেখানে FSM মডেলের জন্য ফরমাল প্রপার্টি সংজ্ঞায়িত করতে টেম্পোরাল লজিক ব্যবহৃত হয়।
-[টেম্পোরাল লজিক](https://en.wikipedia.org/wiki/Temporal_logic) হল "সময়ের পরিপ্রেক্ষিতে যোগ্য প্রস্তাবনা সম্পর্কে যুক্তি দেওয়ার নিয়ম (যেমন, \"আমি _সর্বদা_ ক্ষুধার্ত\" বা \"আমি _অবশেষে_ ক্ষুধার্ত হব\")।" আনুষ্ঠানিক যাচাইকরণে প্রয়োগ করা হলে, স্টেট-মেশিন হিসাবে মডেল করা সিস্টেমের সঠিক আচরণ সম্পর্কে দাবি করার জন্য টেম্পোরাল লজিক ব্যবহার করা হয়। নির্দিষ্টভাবে, একটি টেম্পোরাল লজিক বর্ণনা করে যে একটি স্মার্ট কন্ট্র্যাক্ট ভবিষ্যতে কোন স্টেটগুলিতে থাকতে পারে এবং এটি কীভাবে স্টেটগুলির মধ্যে ট্রানজিশন করে।
+[টেম্পোরাল লজিক](https://en.wikipedia.org/wiki/Temporal_logic) হলো "সময়ের পরিপ্রেক্ষিতে যোগ্য প্রস্তাবনাগুলো সম্পর্কে যুক্তি দেওয়ার নিয়ম (যেমন, "আমি _সবসময়_ ক্ষুধার্ত" বা "আমি _অবশেষে_ ক্ষুধার্ত হবো")।" ফরমাল ভেরিফিকেশনে প্রয়োগ করা হলে, টেম্পোরাল লজিকগুলো স্টেট-মেশিন হিসেবে মডেল করা সিস্টেমগুলোর সঠিক আচরণ সম্পর্কে দাবি জানাতে ব্যবহৃত হয়। বিশেষভাবে, একটি টেম্পোরাল লজিক বর্ণনা করে যে একটি স্মার্ট কন্ট্রাক্ট ভবিষ্যতে কোন স্টেটগুলোতে থাকতে পারে এবং এটি কীভাবে স্টেটগুলোর মধ্যে ট্রানজিশন করে।
-উচ্চ-স্তরের স্পেসিফিকেশনগুলি সাধারণত স্মার্ট কন্ট্র্যাক্টের জন্য দুটি গুরুত্বপূর্ণ টেম্পোরাল বৈশিষ্ট্য ক্যাপচার করে: **নিরাপত্তা** এবং **লাইভনেস**। সুরক্ষা বৈশিষ্ট্যগুলি এই ধারণাটি উপস্থাপন করে যে "কখনো খারাপ কিছু ঘটে না" এবং সাধারণত ইনভ্যারিয়েন্স প্রকাশ করে। একটি সুরক্ষা বৈশিষ্ট্য সাধারণ সফ্টওয়্যারের প্রয়োজনীয়তাগুলিকে সংজ্ঞায়িত করতে পারে, যেমন [ডেডলক](https://www.techtarget.com/whatis/definition/deadlock) থেকে মুক্তি, বা কন্ট্র্যাক্টগুলির জন্য ডোমেন-নির্দিষ্ট বৈশিষ্ট্য প্রকাশ করতে পারে (যেমন, ফাংশনের জন্য অ্যাক্সেস কন্ট্রোলের উপর ইনভ্যারিয়েন্ট, স্টেট ভেরিয়েবলের গ্রহণযোগ্য মান, বা টোকেন ট্রান্সফারের শর্তাবলী)।
+হাই-লেভেল স্পেসিফিকেশনগুলো সাধারণত স্মার্ট কন্ট্রাক্টের জন্য দুটি গুরুত্বপূর্ণ টেম্পোরাল প্রপার্টি ক্যাপচার করে: **সেফটি** (safety) এবং **লাইভনেস** (liveness)। সেফটি প্রপার্টিগুলো এই ধারণা উপস্থাপন করে যে "কখনো খারাপ কিছু ঘটে না" এবং সাধারণত ইনভ্যারিয়েন্স প্রকাশ করে। একটি সেফটি প্রপার্টি সাধারণ সফটওয়্যার প্রয়োজনীয়তা সংজ্ঞায়িত করতে পারে, যেমন [ডেডলক](https://www.techtarget.com/whatis/definition/deadlock) থেকে মুক্তি, অথবা কন্ট্রাক্টের জন্য ডোমেইন-নির্দিষ্ট প্রপার্টি প্রকাশ করতে পারে (যেমন, ফাংশনগুলোর জন্য অ্যাক্সেস কন্ট্রোলের ইনভ্যারিয়েন্ট, স্টেট ভেরিয়েবলের গ্রহণযোগ্য মান, বা টোকেন ট্রান্সফারের শর্ত)।
-উদাহরণস্বরূপ এই নিরাপত্তা প্রয়োজনীয়তাটি নিন যা ERC-20 টোকেন কন্ট্র্যাক্টে `transfer()` বা `transferFrom()` ব্যবহারের শর্তগুলিকে কভার করে: _"একজন প্রেরকের ব্যালেন্স পাঠানোর জন্য অনুরোধ করা টোকেনের পরিমাণের চেয়ে কখনো কম হয় না।"_। একটি কন্ট্র্যাক্ট ইনভ্যারিয়েন্টের এই স্বাভাবিক-ভাষার বিবরণ একটি আনুষ্ঠানিক (গাণিতিক) স্পেসিফিকেশনে অনুবাদ করা যেতে পারে, যা পরে বৈধতার জন্য কঠোরভাবে পরীক্ষা করা যেতে পারে।
+উদাহরণস্বরূপ এই সেফটি প্রয়োজনীয়তাটি নিন যা ERC-20 টোকেন কন্ট্রাক্টে `transfer()` বা `transferFrom()` ব্যবহারের শর্তগুলো কভার করে: _"একজন প্রেরকের ব্যালেন্স কখনো পাঠানোর জন্য অনুরোধ করা টোকেনের পরিমাণের চেয়ে কম হয় না।"_। একটি কন্ট্রাক্ট ইনভ্যারিয়েন্টের এই সাধারণ ভাষার বর্ণনাকে একটি ফরমাল (গাণিতিক) স্পেসিফিকেশনে অনুবাদ করা যেতে পারে, যা পরে বৈধতার জন্য কঠোরভাবে পরীক্ষা করা যেতে পারে।
-লাইভনেস বৈশিষ্ট্যগুলি দাবি করে যে "অবশেষে ভাল কিছু ঘটে" এবং একটি কন্ট্র্যাক্টের বিভিন্ন স্টেটের মাধ্যমে অগ্রগতির ক্ষমতা নিয়ে উদ্বিগ্ন। লাইভনেস বৈশিষ্ট্যের একটি উদাহরণ হল "তারল্য", যা অনুরোধের ভিত্তিতে ব্যবহারকারীদের কাছে তার ব্যালেন্স ট্রান্সফার করার জন্য একটি কন্ট্র্যাক্টের ক্ষমতাকে বোঝায়। যদি এই সম্পত্তিটি লঙ্ঘিত হয়, ব্যবহারকারীরা কন্ট্র্যাক্টে সংরক্ষিত সম্পদ উত্তোলন করতে পারবেন না, যেমনটি [প্যারিটি ওয়ালেট ঘটনা](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html) এর সাথে ঘটেছিল।
+লাইভনেস প্রপার্টিগুলো দাবি করে যে "অবশেষে ভালো কিছু ঘটে" এবং এটি বিভিন্ন স্টেটের মাধ্যমে অগ্রসর হওয়ার জন্য একটি কন্ট্রাক্টের ক্ষমতার সাথে সম্পর্কিত। লাইভনেস প্রপার্টির একটি উদাহরণ হলো "লিকুইডিটি", যা অনুরোধের ভিত্তিতে ব্যবহারকারীদের কাছে এর ব্যালেন্স ট্রান্সফার করার জন্য একটি কন্ট্রাক্টের ক্ষমতাকে বোঝায়। যদি এই প্রপার্টি লঙ্ঘিত হয়, তবে ব্যবহারকারীরা কন্ট্রাক্টে সংরক্ষিত সম্পদ তুলতে পারবেন না, যেমনটি [প্যারিটি ওয়ালেট ঘটনায়](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html) ঘটেছিল।
-### নিম্ন-স্তরের স্পেসিফিকেশন {#low-level-specifications}
+### লো-লেভেল স্পেসিফিকেশন {#low-level-specifications}
-উচ্চ-স্তরের স্পেসিফিকেশনগুলি একটি কন্ট্র্যাক্টের ফাইনাইট-স্টেট মডেলকে একটি প্রারম্ভিক বিন্দু হিসাবে গ্রহণ করে এবং এই মডেলের পছন্দসই বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে। এর বিপরীতে, নিম্ন-স্তরের স্পেসিফিকেশনগুলি (যাকে "সম্পত্তি-ভিত্তিক স্পেসিফিকেশন"ও বলা হয়) প্রায়শই প্রোগ্রামগুলিকে (স্মার্ট কন্ট্র্যাক্ট) গাণিতিক ফাংশনের সংগ্রহ সম্বলিত সিস্টেম হিসাবে মডেল করে এবং এই ধরনের সিস্টেমের সঠিক আচরণ বর্ণনা করে।
+হাই-লেভেল স্পেসিফিকেশনগুলো একটি কন্ট্রাক্টের ফাইনাইট-স্টেট মডেলকে প্রারম্ভিক বিন্দু হিসেবে নেয় এবং এই মডেলের কাঙ্ক্ষিত প্রপার্টিগুলো সংজ্ঞায়িত করে। এর বিপরীতে, লো-লেভেল স্পেসিফিকেশনগুলো (যাকে "প্রপার্টি-ওরিয়েন্টেড স্পেসিফিকেশন"ও বলা হয়) প্রায়শই প্রোগ্রামগুলোকে (স্মার্ট কন্ট্রাক্ট) গাণিতিক ফাংশনের সংগ্রহ নিয়ে গঠিত সিস্টেম হিসেবে মডেল করে এবং এই ধরনের সিস্টেমের সঠিক আচরণ বর্ণনা করে।
-সহজ ভাষায়, নিম্ন-স্তরের স্পেসিফিকেশনগুলি _প্রোগ্রাম ট্রেস_ বিশ্লেষণ করে এবং এই ট্রেসগুলির উপর একটি স্মার্ট কন্ট্র্যাক্টের বৈশিষ্ট্যগুলি সংজ্ঞায়িত করার চেষ্টা করে। ট্রেস বলতে ফাংশন এক্সিকিউশনের ক্রম বোঝায় যা একটি স্মার্ট কন্ট্র্যাক্টের স্টেট পরিবর্তন করে; তাই, নিম্ন-স্তরের স্পেসিফিকেশনগুলি একটি কন্ট্র্যাক্টের অভ্যন্তরীণ এক্সিকিউশনের জন্য প্রয়োজনীয়তা নির্দিষ্ট করতে সাহায্য করে।
+সহজ কথায়, লো-লেভেল স্পেসিফিকেশনগুলো _প্রোগ্রাম ট্রেস_ বিশ্লেষণ করে এবং এই ট্রেসগুলোর ওপর একটি স্মার্ট কন্ট্রাক্টের প্রপার্টি সংজ্ঞায়িত করার চেষ্টা করে। ট্রেস বলতে ফাংশন এক্সিকিউশনের সিকোয়েন্স বোঝায় যা একটি স্মার্ট কন্ট্রাক্টের স্টেট পরিবর্তন করে; তাই, লো-লেভেল স্পেসিফিকেশনগুলো একটি কন্ট্রাক্টের অভ্যন্তরীণ এক্সিকিউশনের জন্য প্রয়োজনীয়তা নির্দিষ্ট করতে সাহায্য করে।
-নিম্ন-স্তরের আনুষ্ঠানিক স্পেসিফিকেশন হোয়ার-স্টাইল বৈশিষ্ট্য বা এক্সিকিউশন পাথের ইনভ্যারিয়েন্ট হিসাবে দেওয়া যেতে পারে।
+লো-লেভেল ফরমাল স্পেসিফিকেশনগুলো হোর-স্টাইল প্রপার্টি বা এক্সিকিউশন পাথের ইনভ্যারিয়েন্ট হিসেবে দেওয়া যেতে পারে।
-### হোয়ার-স্টাইল বৈশিষ্ট্য {#hoare-style-properties}
+### হোর-স্টাইল প্রপার্টি {#hoare-style-properties}
-[হোয়ার লজিক](https://en.wikipedia.org/wiki/Hoare_logic) স্মার্ট কন্ট্র্যাক্ট সহ প্রোগ্রামগুলির সঠিকতা সম্পর্কে যুক্তি দেওয়ার জন্য আনুষ্ঠানিক নিয়মের একটি সেট সরবরাহ করে। একটি হোয়ার-স্টাইল প্রপার্টি একটি হোয়ার ট্রিপল `{P}c{Q}` দ্বারা উপস্থাপিত হয়, যেখানে `c` একটি প্রোগ্রাম এবং `P` এবং `Q` হল `c`-এর (অর্থাৎ, প্রোগ্রাম) স্টেটের উপর প্রেডিকেট, যা আনুষ্ঠানিকভাবে যথাক্রমে _প্রিকন্ডিশন_ এবং _পোস্টকন্ডিশন_ হিসাবে বর্ণিত।
+[হোর লজিক](https://en.wikipedia.org/wiki/Hoare_logic) স্মার্ট কন্ট্রাক্টসহ প্রোগ্রামগুলোর সঠিকতা সম্পর্কে যুক্তি দেওয়ার জন্য ফরমাল নিয়মের একটি সেট প্রদান করে। একটি হোর-স্টাইল প্রপার্টি একটি হোর ট্রিপল `{P}c{Q}` দ্বারা উপস্থাপিত হয়, যেখানে `c` হলো একটি প্রোগ্রাম এবং `P` ও `Q` হলো `c` (অর্থাৎ, প্রোগ্রাম)-এর স্টেটের ওপর প্রেডিকেট, যা যথাক্রমে _প্রিকন্ডিশন_ এবং _পোস্টকন্ডিশন_ হিসেবে ফরমালভাবে বর্ণিত।
-একটি প্রিকন্ডিশন হল একটি প্রেডিকেট যা একটি ফাংশনের সঠিক এক্সিকিউশনের জন্য প্রয়োজনীয় শর্তাবলী বর্ণনা করে; কন্ট্র্যাক্টে কল করা ব্যবহারকারীদের অবশ্যই এই প্রয়োজনীয়তা পূরণ করতে হবে। একটি পোস্টকন্ডিশন হল একটি প্রেডিকেট যা একটি ফাংশন সঠিকভাবে এক্সিকিউট হলে যে শর্তটি প্রতিষ্ঠা করে তা বর্ণনা করে; ব্যবহারকারীরা ফাংশনে কল করার পরে এই শর্তটি সত্য হবে বলে আশা করতে পারেন। হোয়ার লজিকে একটি _ইনভ্যারিয়েন্ট_ হল একটি প্রেডিকেট যা একটি ফাংশনের এক্সিকিউশন দ্বারা সংরক্ষিত থাকে (অর্থাৎ, এটি পরিবর্তন হয় না)।
+একটি প্রিকন্ডিশন হলো একটি প্রেডিকেট যা একটি ফাংশনের সঠিক এক্সিকিউশনের জন্য প্রয়োজনীয় শর্তগুলো বর্ণনা করে; কন্ট্রাক্টে কল করা ব্যবহারকারীদের অবশ্যই এই প্রয়োজনীয়তা পূরণ করতে হবে। একটি পোস্টকন্ডিশন হলো একটি প্রেডিকেট যা এমন শর্ত বর্ণনা করে যা একটি ফাংশন সঠিকভাবে এক্সিকিউট হলে প্রতিষ্ঠিত হয়; ব্যবহারকারীরা ফাংশনে কল করার পরে এই শর্তটি সত্য হবে বলে আশা করতে পারেন। হোর লজিকে একটি _ইনভ্যারিয়েন্ট_ হলো একটি প্রেডিকেট যা একটি ফাংশনের এক্সিকিউশন দ্বারা সংরক্ষিত থাকে (অর্থাৎ, এটি পরিবর্তিত হয় না)।
-হোয়ার-স্টাইল স্পেসিফিকেশনগুলি হয় _আংশিক সঠিকতা_ বা _সম্পূর্ণ সঠিকতা_ নিশ্চিত করতে পারে। একটি কন্ট্র্যাক্ট ফাংশনের বাস্তবায়ন "আংশিকভাবে সঠিক" হয় যদি ফাংশনটি এক্সিকিউট হওয়ার আগে প্রিকন্ডিশনটি সত্য হয় এবং যদি এক্সিকিউশনটি শেষ হয় তবে পোস্টকন্ডিশনটিও সত্য হয়। সম্পূর্ণ সঠিকতার প্রমাণ পাওয়া যায় যদি ফাংশন এক্সিকিউট করার আগে একটি প্রিকন্ডিশন সত্য হয়, এক্সিকিউশনটি শেষ হওয়ার নিশ্চয়তা থাকে এবং যখন এটি হয়, তখন পোস্টকন্ডিশনটি সত্য হয়।
+হোর-স্টাইল স্পেসিফিকেশনগুলো _আংশিক সঠিকতা_ (partial correctness) বা _সম্পূর্ণ সঠিকতা_ (total correctness) গ্যারান্টি দিতে পারে। একটি কন্ট্রাক্ট ফাংশনের বাস্তবায়ন "আংশিকভাবে সঠিক" যদি ফাংশনটি এক্সিকিউট হওয়ার আগে প্রিকন্ডিশন সত্য হয় এবং যদি এক্সিকিউশন শেষ হয়, তবে পোস্টকন্ডিশনটিও সত্য হয়। সম্পূর্ণ সঠিকতার প্রমাণ পাওয়া যায় যদি ফাংশনটি এক্সিকিউট হওয়ার আগে একটি প্রিকন্ডিশন সত্য হয়, এক্সিকিউশন শেষ হওয়ার গ্যারান্টি থাকে এবং যখন এটি হয়, তখন পোস্টকন্ডিশন সত্য হয়।
-সম্পূর্ণ সঠিকতার প্রমাণ পাওয়া কঠিন কারণ কিছু এক্সিকিউশন শেষ হওয়ার আগে বিলম্বিত হতে পারে, বা একেবারেই শেষ নাও হতে পারে। তা সত্ত্বেও, এক্সিকিউশন শেষ হয় কিনা সেই প্রশ্নটি তর্কসাপেক্ষে একটি অমীমাংসিত বিষয় কারণ ইথেরিয়ামের গ্যাস মেকানিজম অসীম প্রোগ্রাম লুপ প্রতিরোধ করে (এক্সিকিউশন হয় সফলভাবে শেষ হয় অথবা 'আউট-অফ-গ্যাস' ত্রুটির কারণে শেষ হয়)।
+সম্পূর্ণ সঠিকতার প্রমাণ পাওয়া কঠিন কারণ কিছু এক্সিকিউশন শেষ হওয়ার আগে বিলম্বিত হতে পারে, বা কখনোই শেষ নাও হতে পারে। বলা বাহুল্য, এক্সিকিউশন শেষ হয় কিনা সেই প্রশ্নটি তর্কসাপেক্ষভাবে একটি অমীমাংসিত বিষয় কারণ ইথিরিয়ামের গ্যাস মেকানিজম অসীম প্রোগ্রাম লুপ প্রতিরোধ করে (এক্সিকিউশন সফলভাবে শেষ হয় বা 'আউট-অফ-গ্যাস' ত্রুটির কারণে শেষ হয়)।
-হোয়ার লজিক ব্যবহার করে তৈরি করা স্মার্ট কন্ট্র্যাক্ট স্পেসিফিকেশনগুলিতে একটি কন্ট্র্যাক্টে ফাংশন এবং লুপগুলির এক্সিকিউশনের জন্য প্রিকন্ডিশন, পোস্টকন্ডিশন এবং ইনভ্যারিয়েন্ট সংজ্ঞায়িত করা থাকবে। প্রিকন্ডিশনগুলিতে প্রায়শই একটি ফাংশনে ভুল ইনপুটের সম্ভাবনা অন্তর্ভুক্ত থাকে, পোস্টকন্ডিশনগুলি এই ধরনের ইনপুটগুলির প্রতি প্রত্যাশিত প্রতিক্রিয়া বর্ণনা করে (যেমন, একটি নির্দিষ্ট ব্যতিক্রম থ্রো করা)। এইভাবে হোয়ার-স্টাইল বৈশিষ্ট্যগুলি কন্ট্র্যাক্ট বাস্তবায়নের সঠিকতা নিশ্চিত করার জন্য কার্যকর।
+হোর লজিক ব্যবহার করে তৈরি স্মার্ট কন্ট্রাক্ট স্পেসিফিকেশনগুলোতে একটি কন্ট্রাক্টে ফাংশন এবং লুপের এক্সিকিউশনের জন্য প্রিকন্ডিশন, পোস্টকন্ডিশন এবং ইনভ্যারিয়েন্ট সংজ্ঞায়িত থাকবে। প্রিকন্ডিশনগুলোতে প্রায়শই একটি ফাংশনে ভুল ইনপুটের সম্ভাবনা অন্তর্ভুক্ত থাকে, যেখানে পোস্টকন্ডিশনগুলো এই ধরনের ইনপুটগুলোর প্রত্যাশিত প্রতিক্রিয়া বর্ণনা করে (যেমন, একটি নির্দিষ্ট এক্সেপশন থ্রো করা)। এইভাবে হোর-স্টাইল প্রপার্টিগুলো কন্ট্রাক্ট বাস্তবায়নের সঠিকতা নিশ্চিত করার জন্য কার্যকর।
-অনেক আনুষ্ঠানিক যাচাইকরণ ফ্রেমওয়ার্ক ফাংশনের সেমান্টিক সঠিকতা প্রমাণের জন্য হোয়ার-স্টাইল স্পেসিফিকেশন ব্যবহার করে। সলিডিটিতে `require` এবং `assert` স্টেটমেন্ট ব্যবহার করে সরাসরি কন্ট্র্যাক্ট কোডে হোয়ার-স্টাইল বৈশিষ্ট্য (অ্যাসারশন হিসাবে) যোগ করাও সম্ভব।
+অনেক ফরমাল ভেরিফিকেশন ফ্রেমওয়ার্ক ফাংশনগুলোর শব্দার্থিক সঠিকতা প্রমাণের জন্য হোর-স্টাইল স্পেসিফিকেশন ব্যবহার করে। সলিডিটিতে `require` এবং `assert` স্টেটমেন্ট ব্যবহার করে সরাসরি কন্ট্রাক্ট কোডে হোর-স্টাইল প্রপার্টি (অ্যাসারশন হিসেবে) যোগ করাও সম্ভব।
-`require` স্টেটমেন্টগুলি একটি প্রিকন্ডিশন বা ইনভ্যারিয়েন্ট প্রকাশ করে এবং প্রায়শই ব্যবহারকারীর ইনপুট যাচাই করতে ব্যবহৃত হয়, যখন `assert` নিরাপত্তার জন্য প্রয়োজনীয় একটি পোস্টকন্ডিশন ক্যাপচার করে। উদাহরণস্বরূপ, ফাংশনের জন্য সঠিক অ্যাক্সেস কন্ট্রোল (নিরাপত্তা বৈশিষ্ট্যের একটি উদাহরণ) কলিং অ্যাকাউন্টের পরিচয়ের উপর একটি প্রিকন্ডিশন চেক হিসাবে `require` ব্যবহার করে অর্জন করা যেতে পারে। একইভাবে, একটি কন্ট্র্যাক্টে স্টেট ভেরিয়েবলের অনুমোদিত মানের উপর একটি ইনভ্যারিয়েন্ট (যেমন, প্রচলনে থাকা মোট টোকেনের সংখ্যা) ফাংশন এক্সিকিউশনের পরে কন্ট্র্যাক্টের স্টেট নিশ্চিত করতে `assert` ব্যবহার করে লঙ্ঘন থেকে রক্ষা করা যেতে পারে।
+`require` স্টেটমেন্টগুলো একটি প্রিকন্ডিশন বা ইনভ্যারিয়েন্ট প্রকাশ করে এবং প্রায়শই ব্যবহারকারীর ইনপুট যাচাই করতে ব্যবহৃত হয়, যেখানে `assert` নিরাপত্তার জন্য প্রয়োজনীয় একটি পোস্টকন্ডিশন ক্যাপচার করে। উদাহরণস্বরূপ, ফাংশনগুলোর জন্য সঠিক অ্যাক্সেস কন্ট্রোল (একটি সেফটি প্রপার্টির উদাহরণ) কলিং একাউন্টের পরিচয়ের ওপর প্রিকন্ডিশন চেক হিসেবে `require` ব্যবহার করে অর্জন করা যেতে পারে। একইভাবে, একটি কন্ট্রাক্টে স্টেট ভেরিয়েবলের অনুমোদিত মানগুলোর ওপর একটি ইনভ্যারিয়েন্ট (যেমন, সার্কুলেশনে থাকা টোকেনের মোট সংখ্যা) ফাংশন এক্সিকিউশনের পরে কন্ট্রাক্টের স্টেট নিশ্চিত করতে `assert` ব্যবহার করে লঙ্ঘন থেকে রক্ষা করা যেতে পারে।
-### ট্রেস-স্তরের বৈশিষ্ট্য {#trace-level-properties}
+### ট্রেস-লেভেল প্রপার্টি {#trace-level-properties}
-ট্রেস-ভিত্তিক স্পেসিফিকেশনগুলি সেই অপারেশনগুলিকে বর্ণনা করে যা একটি কন্ট্র্যাক্টকে বিভিন্ন স্টেটের মধ্যে স্থানান্তর করে এবং এই অপারেশনগুলির মধ্যে সম্পর্ককে বর্ণনা করে। যেমনটি আগে ব্যাখ্যা করা হয়েছে, ট্রেস হল অপারেশনের ক্রম যা একটি কন্ট্র্যাক্টের স্টেটকে একটি নির্দিষ্ট উপায়ে পরিবর্তন করে।
+ট্রেস-ভিত্তিক স্পেসিফিকেশনগুলো এমন অপারেশন বর্ণনা করে যা একটি কন্ট্রাক্টকে বিভিন্ন স্টেটের মধ্যে ট্রানজিশন করে এবং এই অপারেশনগুলোর মধ্যে সম্পর্ক বর্ণনা করে। আগেই ব্যাখ্যা করা হয়েছে, ট্রেস হলো অপারেশনের সিকোয়েন্স যা একটি নির্দিষ্ট উপায়ে একটি কন্ট্রাক্টের স্টেট পরিবর্তন করে।
-এই পদ্ধতিটি স্মার্ট কন্ট্র্যাক্টের মডেলের উপর নির্ভর করে যা স্টেট-ট্রানজিশন সিস্টেম হিসাবে কিছু পূর্বনির্ধারিত স্টেট (স্টেট ভেরিয়েবল দ্বারা বর্ণিত) সহ পূর্বনির্ধারিত ট্রানজিশনের একটি সেট (কন্ট্র্যাক্ট ফাংশন দ্বারা বর্ণিত) নিয়ে গঠিত। উপরন্তু, একটি [কন্ট্রোল ফ্লো গ্রাফ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), যা একটি প্রোগ্রামের এক্সিকিউশন ফ্লো-এর একটি গ্রাফিকাল উপস্থাপনা, প্রায়শই একটি কন্ট্র্যাক্টের অপারেশনাল সেমান্টিকস বর্ণনা করার জন্য ব্যবহৃত হয়। এখানে, প্রতিটি ট্রেস কন্ট্রোল ফ্লো গ্রাফের একটি পথ হিসাবে উপস্থাপিত হয়।
+এই পদ্ধতিটি স্মার্ট কন্ট্রাক্টের মডেলের ওপর নির্ভর করে যা স্টেট-ট্রানজিশন সিস্টেম হিসেবে কিছু পূর্বনির্ধারিত স্টেট (স্টেট ভেরিয়েবল দ্বারা বর্ণিত) এবং পূর্বনির্ধারিত ট্রানজিশনের একটি সেট (কন্ট্রাক্ট ফাংশন দ্বারা বর্ণিত) নিয়ে গঠিত। উপরন্তু, একটি [কন্ট্রোল ফ্লো গ্রাফ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), যা একটি প্রোগ্রামের এক্সিকিউশন ফ্লো-এর একটি গ্রাফিকাল রিপ্রেজেন্টেশন, প্রায়শই একটি কন্ট্রাক্টের অপারেশনাল শব্দার্থবিদ্যা বর্ণনা করার জন্য ব্যবহৃত হয়। এখানে, প্রতিটি ট্রেস কন্ট্রোল ফ্লো গ্রাফে একটি পাথ হিসেবে উপস্থাপিত হয়।
-প্রাথমিকভাবে, ট্রেস-স্তরের স্পেসিফিকেশনগুলি স্মার্ট কন্ট্র্যাক্টগুলিতে অভ্যন্তরীণ এক্সিকিউশনের প্যাটার্ন সম্পর্কে যুক্তি দেওয়ার জন্য ব্যবহৃত হয়। ট্রেস-লেভেল স্পেসিফিকেশন তৈরি করে, আমরা একটি স্মার্ট কন্ট্র্যাক্টের জন্য গ্রহণযোগ্য এক্সিকিউশন পাথ (অর্থাৎ, স্টেট ট্রানজিশন) দাবি করি। সিম্বলিক এক্সিকিউশনের মতো কৌশল ব্যবহার করে, আমরা আনুষ্ঠানিকভাবে যাচাই করতে পারি যে এক্সিকিউশন কখনো আনুষ্ঠানিক মডেলে সংজ্ঞায়িত নয় এমন একটি পথ অনুসরণ করে না।
+প্রাথমিকভাবে, ট্রেস-লেভেল স্পেসিফিকেশনগুলো স্মার্ট কন্ট্রাক্টে অভ্যন্তরীণ এক্সিকিউশনের প্যাটার্ন সম্পর্কে যুক্তি দিতে ব্যবহৃত হয়। ট্রেস-লেভেল স্পেসিফিকেশন তৈরি করে, আমরা একটি স্মার্ট কন্ট্রাক্টের জন্য গ্রহণযোগ্য এক্সিকিউশন পাথ (অর্থাৎ, স্টেট ট্রানজিশন) দাবি করি। সিম্বলিক এক্সিকিউশনের মতো কৌশল ব্যবহার করে, আমরা ফরমালভাবে যাচাই করতে পারি যে এক্সিকিউশন কখনো এমন কোনো পাথ অনুসরণ করে না যা ফরমাল মডেলে সংজ্ঞায়িত নয়।
-আসুন ট্রেস-লেভেল বৈশিষ্ট্যগুলি বর্ণনা করার জন্য একটি [DAO](/dao/) কন্ট্র্যাক্টের একটি উদাহরণ ব্যবহার করি যার কিছু সর্বজনীনভাবে অ্যাক্সেসযোগ্য ফাংশন রয়েছে। এখানে, আমরা ধরে নিই যে DAO কন্ট্র্যাক্ট ব্যবহারকারীদের নিম্নলিখিত অপারেশনগুলি সম্পাদন করার অনুমতি দেয়:
+ট্রেস-লেভেল প্রপার্টি বর্ণনা করতে আসুন একটি [DAO](/dao/) কন্ট্রাক্টের উদাহরণ ব্যবহার করি যার কিছু সর্বজনীনভাবে অ্যাক্সেসযোগ্য ফাংশন রয়েছে। এখানে, আমরা ধরে নিই যে DAO কন্ট্রাক্ট ব্যবহারকারীদের নিম্নলিখিত অপারেশনগুলো সম্পাদন করতে দেয়:
-- তহবিল জমা দিন
+- ফান্ড জমা দেওয়া
-- তহবিল জমা দেওয়ার পরে একটি প্রস্তাবে ভোট দিন
+- ফান্ড জমা দেওয়ার পরে একটি প্রস্তাবে ভোট দেওয়া
-- যদি তারা কোনো প্রস্তাবে ভোট না দেয় তাহলে রিফান্ড দাবি করুন
+- যদি তারা কোনো প্রস্তাবে ভোট না দেয় তবে রিফান্ড দাবি করা
-উদাহরণস্বরূপ ট্রেস-স্তরের বৈশিষ্ট্যগুলি হতে পারে _"যে ব্যবহারকারীরা তহবিল জমা দেন না তারা কোনো প্রস্তাবে ভোট দিতে পারবেন না"_ অথবা _"যে ব্যবহারকারীরা কোনো প্রস্তাবে ভোট দেন না তাদের সর্বদা রিফান্ড দাবি করতে সক্ষম হওয়া উচিত"_। উভয় বৈশিষ্ট্যই এক্সিকিউশনের পছন্দের ক্রম দাবি করে (ভোট তহবিল জমা দেওয়ার _আগে_ হতে পারে না এবং রিফান্ড দাবি করা একটি প্রস্তাবে ভোট দেওয়ার _পরে_ হতে পারে না)।
+উদাহরণস্বরূপ ট্রেস-লেভেল প্রপার্টি হতে পারে _"যেসব ব্যবহারকারী ফান্ড জমা দেন না তারা কোনো প্রস্তাবে ভোট দিতে পারবেন না"_ বা _"যেসব ব্যবহারকারী কোনো প্রস্তাবে ভোট দেন না তাদের সর্বদা রিফান্ড দাবি করতে সক্ষম হওয়া উচিত"_। উভয় প্রপার্টি এক্সিকিউশনের পছন্দের সিকোয়েন্স দাবি করে (ফান্ড জমা দেওয়ার _আগে_ ভোট দেওয়া হতে পারে না এবং একটি প্রস্তাবে ভোট দেওয়ার _পরে_ রিফান্ড দাবি করা হতে পারে না)।
-## স্মার্ট কন্ট্র্যাক্টের আনুষ্ঠানিক যাচাইকরণের কৌশল {#formal-verification-techniques}
+## স্মার্ট কন্ট্রাক্টের ফরমাল ভেরিফিকেশনের কৌশল {#formal-verification-techniques}
### মডেল চেকিং {#model-checking}
-মডেল চেকিং একটি আনুষ্ঠানিক যাচাইকরণ কৌশল যেখানে একটি অ্যালগরিদম একটি স্মার্ট কন্ট্র্যাক্টের আনুষ্ঠানিক মডেলকে তার স্পেসিফিকেশনের বিপরীতে পরীক্ষা করে। মডেল চেকিং-এ স্মার্ট কন্ট্র্যাক্টগুলিকে প্রায়শই স্টেট-ট্রানজিশন সিস্টেম হিসাবে উপস্থাপন করা হয়, যখন অনুমোদিত কন্ট্র্যাক্ট স্টেটগুলির বৈশিষ্ট্যগুলি টেম্পোরাল লজিক ব্যবহার করে সংজ্ঞায়িত করা হয়।
+মডেল চেকিং হলো একটি ফরমাল ভেরিফিকেশন কৌশল যেখানে একটি অ্যালগরিদম একটি স্মার্ট কন্ট্রাক্টের ফরমাল মডেলকে এর স্পেসিফিকেশনের বিপরীতে পরীক্ষা করে। মডেল চেকিংয়ে স্মার্ট কন্ট্রাক্টগুলোকে প্রায়শই স্টেট-ট্রানজিশন সিস্টেম হিসেবে উপস্থাপন করা হয়, যেখানে অনুমোদিত কন্ট্রাক্ট স্টেটের প্রপার্টিগুলো টেম্পোরাল লজিক ব্যবহার করে সংজ্ঞায়িত করা হয়।
-মডেল চেকিং-এর জন্য একটি সিস্টেমের (অর্থাৎ, একটি কন্ট্র্যাক্ট) একটি বিমূর্ত গাণিতিক উপস্থাপনা তৈরি করতে হয় এবং [প্রোপোজিশনাল লজিক](https://www.baeldung.com/cs/propositional-logic)-এর মূলে থাকা সূত্র ব্যবহার করে এই সিস্টেমের বৈশিষ্ট্যগুলি প্রকাশ করতে হয়। এটি মডেল-চেকিং অ্যালগরিদমের কাজকে সহজ করে, যথা, প্রমাণ করা যে একটি গাণিতিক মডেল একটি প্রদত্ত যৌক্তিক সূত্রকে সন্তুষ্ট করে।
+মডেল চেকিংয়ের জন্য একটি সিস্টেমের (অর্থাৎ, একটি কন্ট্রাক্ট) একটি অ্যাবস্ট্রাক্ট গাণিতিক রিপ্রেজেন্টেশন তৈরি করা এবং [প্রোপোজিশনাল লজিক](https://www.baeldung.com/cs/propositional-logic)-এ নিহিত সূত্র ব্যবহার করে এই সিস্টেমের প্রপার্টিগুলো প্রকাশ করা প্রয়োজন। এটি মডেল-চেকিং অ্যালগরিদমের কাজকে সহজ করে, অর্থাৎ প্রমাণ করা যে একটি গাণিতিক মডেল একটি প্রদত্ত যৌক্তিক সূত্র পূরণ করে।
-আনুষ্ঠানিক যাচাইকরণে মডেল চেকিং প্রাথমিকভাবে টেম্পোরাল বৈশিষ্ট্যগুলি মূল্যায়ন করতে ব্যবহৃত হয় যা সময়ের সাথে একটি কন্ট্র্যাক্টের আচরণ বর্ণনা করে। স্মার্ট কন্ট্র্যাক্টের জন্য টেম্পোরাল বৈশিষ্ট্যগুলির মধ্যে রয়েছে _নিরাপত্তা_ এবং _লাইভনেস_, যা আমরা আগে ব্যাখ্যা করেছি।
+ফরমাল ভেরিফিকেশনে মডেল চেকিং প্রাথমিকভাবে টেম্পোরাল প্রপার্টি মূল্যায়ন করতে ব্যবহৃত হয় যা সময়ের সাথে সাথে একটি কন্ট্রাক্টের আচরণ বর্ণনা করে। স্মার্ট কন্ট্রাক্টের জন্য টেম্পোরাল প্রপার্টিগুলোর মধ্যে রয়েছে _সেফটি_ এবং _লাইভনেস_, যা আমরা আগেই ব্যাখ্যা করেছি।
-উদাহরণস্বরূপ, অ্যাক্সেস কন্ট্রোল সম্পর্কিত একটি নিরাপত্তা বৈশিষ্ট্য (যেমন, _শুধুমাত্র কন্ট্র্যাক্টের মালিক `selfdestruct` কল করতে পারে_) আনুষ্ঠানিক যুক্তিতে লেখা যেতে পারে। তারপরে, মডেল-চেকিং অ্যালগরিদম যাচাই করতে পারে যে কন্ট্র্যাক্টটি এই আনুষ্ঠানিক স্পেসিফিকেশন পূরণ করে কিনা।
+উদাহরণস্বরূপ, অ্যাক্সেস কন্ট্রোল সম্পর্কিত একটি নিরাপত্তা প্রপার্টি (যেমন, _শুধুমাত্র কন্ট্রাক্টের মালিক `selfdestruct` কল করতে পারেন_) ফরমাল লজিকে লেখা যেতে পারে। এরপর, মডেল-চেকিং অ্যালগরিদম যাচাই করতে পারে যে কন্ট্রাক্টটি এই ফরমাল স্পেসিফিকেশন পূরণ করে কিনা।
-মডেল চেকিং স্টেট স্পেস এক্সপ্লোরেশন ব্যবহার করে, যার মধ্যে একটি স্মার্ট কন্ট্র্যাক্টের সমস্ত সম্ভাব্য স্টেট তৈরি করা এবং এমন পৌঁছানোযোগ্য স্টেট খুঁজে বের করার চেষ্টা করা জড়িত যা সম্পত্তি লঙ্ঘনের কারণ হয়। যাইহোক, এটি অসীম সংখ্যক স্টেটের দিকে নিয়ে যেতে পারে (যা "স্টেট এক্সপ্লোশন সমস্যা" নামে পরিচিত), তাই মডেল চেকাররা স্মার্ট কন্ট্র্যাক্টের দক্ষ বিশ্লেষণ সম্ভব করার জন্য বিমূর্তকরণ কৌশলের উপর নির্ভর করে।
+মডেল চেকিং স্টেট স্পেস এক্সপ্লোরেশন ব্যবহার করে, যার মধ্যে একটি স্মার্ট কন্ট্রাক্টের সমস্ত সম্ভাব্য স্টেট তৈরি করা এবং এমন রিচেবল স্টেট খুঁজে বের করার চেষ্টা করা জড়িত যা প্রপার্টি লঙ্ঘনের কারণ হয়। তবে, এটি অসীম সংখ্যক স্টেটের দিকে নিয়ে যেতে পারে (যা "স্টেট এক্সপ্লোশন প্রবলেম" নামে পরিচিত), তাই মডেল চেকাররা স্মার্ট কন্ট্রাক্টের দক্ষ বিশ্লেষণ সম্ভব করতে অ্যাবস্ট্রাকশন কৌশলের ওপর নির্ভর করে।
### থিওরেম প্রুভিং {#theorem-proving}
-থিওরেম প্রুভিং হল স্মার্ট কন্ট্র্যাক্ট সহ প্রোগ্রামগুলির সঠিকতা সম্পর্কে গাণিতিকভাবে যুক্তি দেওয়ার একটি পদ্ধতি। এর মধ্যে একটি কন্ট্র্যাক্টের সিস্টেমের মডেল এবং তার স্পেসিফিকেশনগুলিকে গাণিতিক সূত্র (যুক্তি বিবৃতি) তে রূপান্তরিত করা জড়িত।
+থিওরেম প্রুভিং হলো স্মার্ট কন্ট্রাক্টসহ প্রোগ্রামগুলোর সঠিকতা সম্পর্কে গাণিতিকভাবে যুক্তি দেওয়ার একটি পদ্ধতি। এর মধ্যে একটি কন্ট্রাক্টের সিস্টেমের মডেল এবং এর স্পেসিফিকেশনগুলোকে গাণিতিক সূত্রে (লজিক স্টেটমেন্ট) রূপান্তর করা জড়িত।
-থিওরেম প্রুভিং-এর উদ্দেশ্য হল এই বিবৃতিগুলির মধ্যে যৌক্তিক সমতা যাচাই করা। "যৌক্তিক সমতা" (যাকে "যৌক্তিক দ্বি-প্রভাব"ও বলা হয়) দুটি বিবৃতির মধ্যে এক ধরনের সম্পর্ক যেমন প্রথম বিবৃতিটি সত্য _যদি এবং কেবল যদি_ দ্বিতীয় বিবৃতিটি সত্য হয়।
+থিওরেম প্রুভিংয়ের উদ্দেশ্য হলো এই স্টেটমেন্টগুলোর মধ্যে যৌক্তিক সমতা যাচাই করা। "যৌক্তিক সমতা" (যাকে "লজিক্যাল বাই-ইমপ্লিকেশন"ও বলা হয়) হলো দুটি স্টেটমেন্টের মধ্যে এক ধরনের সম্পর্ক যাতে প্রথম স্টেটমেন্টটি সত্য হয় _যদি এবং কেবল যদি_ দ্বিতীয় স্টেটমেন্টটি সত্য হয়।
-একটি কন্ট্র্যাক্টের মডেল এবং এর সম্পত্তি সম্পর্কে বিবৃতিগুলির মধ্যে প্রয়োজনীয় সম্পর্ক (যৌক্তিক সমতা) একটি প্রমাণযোগ্য বিবৃতি (থিওরেম বলা হয়) হিসাবে প্রণয়ন করা হয়। অনুমানের একটি আনুষ্ঠানিক সিস্টেম ব্যবহার করে, স্বয়ংক্রিয় থিওরেম প্রোভার থিওরেমের বৈধতা যাচাই করতে পারে। অন্য কথায়, একটি থিওরেম প্রোভার চূড়ান্তভাবে প্রমাণ করতে পারে যে একটি স্মার্ট কন্ট্র্যাক্টের মডেল তার স্পেসিফিকেশনগুলির সাথে অবিকল মেলে।
+একটি কন্ট্রাক্টের মডেল এবং এর প্রপার্টি সম্পর্কে স্টেটমেন্টগুলোর মধ্যে প্রয়োজনীয় সম্পর্ক (যৌক্তিক সমতা) একটি প্রমাণযোগ্য স্টেটমেন্ট (যাকে থিওরেম বলা হয়) হিসেবে প্রণয়ন করা হয়। ইনফারেন্সের একটি ফরমাল সিস্টেম ব্যবহার করে, স্বয়ংক্রিয় থিওরেম প্রুভার থিওরেমের বৈধতা যাচাই করতে পারে। অন্য কথায়, একটি থিওরেম প্রুভার চূড়ান্তভাবে প্রমাণ করতে পারে যে একটি স্মার্ট কন্ট্রাক্টের মডেল এর স্পেসিফিকেশনের সাথে হুবহু মিলে যায়।
-যেখানে মডেল চেকিং কন্ট্র্যাক্টগুলিকে সসীম স্টেট সহ ট্রানজিশন সিস্টেম হিসাবে মডেল করে, থিওরেম প্রুভিং অসীম-স্টেট সিস্টেমের বিশ্লেষণ পরিচালনা করতে পারে। যাইহোক, এর মানে হল একটি স্বয়ংক্রিয় থিওরেম প্রোভার সর্বদা জানতে পারে না যে একটি লজিক সমস্যা "নির্ণয়যোগ্য" কি না।
+যেখানে মডেল চেকিং কন্ট্রাক্টগুলোকে সসীম স্টেটসহ ট্রানজিশন সিস্টেম হিসেবে মডেল করে, সেখানে থিওরেম প্রুভিং অসীম-স্টেট সিস্টেমের বিশ্লেষণ পরিচালনা করতে পারে। তবে, এর মানে হলো একটি স্বয়ংক্রিয় থিওরেম প্রুভার সবসময় জানতে পারে না যে একটি লজিক সমস্যা "ডিসাইডেবল" কিনা।
-ফলস্বরূপ, সঠিকতার প্রমাণ পেতে থিওরেম প্রোভারকে গাইড করার জন্য প্রায়শই মানুষের সহায়তার প্রয়োজন হয়। থিওরেম প্রুভিং-এ মানুষের প্রচেষ্টার ব্যবহার এটিকে মডেল চেকিং-এর চেয়ে বেশি ব্যয়বহুল করে তোলে, যা সম্পূর্ণ স্বয়ংক্রিয়।
+ফলস্বরূপ, সঠিকতার প্রমাণ বের করতে থিওরেম প্রুভারকে গাইড করার জন্য প্রায়শই মানুষের সহায়তার প্রয়োজন হয়। থিওরেম প্রুভিংয়ে মানুষের প্রচেষ্টার ব্যবহার এটিকে মডেল চেকিংয়ের চেয়ে বেশি ব্যয়বহুল করে তোলে, যা সম্পূর্ণ স্বয়ংক্রিয়।
### সিম্বলিক এক্সিকিউশন {#symbolic-execution}
-সিম্বলিক এক্সিকিউশন হল _কংক্রিট মান_ (যেমন, `x == 5`)-এর পরিবর্তে _সিম্বলিক মান_ (যেমন, `x > 5`) ব্যবহার করে ফাংশনগুলি এক্সিকিউট করে একটি স্মার্ট কন্ট্র্যাক্ট বিশ্লেষণ করার একটি পদ্ধতি। একটি আনুষ্ঠানিক যাচাইকরণ কৌশল হিসাবে, সিম্বলিক এক্সিকিউশন একটি কন্ট্র্যাক্টের কোডে ট্রেস-স্তরের বৈশিষ্ট্য সম্পর্কে আনুষ্ঠানিকভাবে যুক্তি দিতে ব্যবহৃত হয়।
+সিম্বলিক এক্সিকিউশন হলো _কংক্রিট ভ্যালু_ (যেমন, `x == 5`)-এর পরিবর্তে _সিম্বলিক ভ্যালু_ (যেমন, `x > 5`) ব্যবহার করে ফাংশন এক্সিকিউট করার মাধ্যমে একটি স্মার্ট কন্ট্রাক্ট বিশ্লেষণ করার একটি পদ্ধতি। একটি ফরমাল ভেরিফিকেশন কৌশল হিসেবে, সিম্বলিক এক্সিকিউশন একটি কন্ট্রাক্টের কোডে ট্রেস-লেভেল প্রপার্টি সম্পর্কে ফরমালভাবে যুক্তি দিতে ব্যবহৃত হয়।
-সিম্বলিক এক্সিকিউশন একটি এক্সিকিউশন ট্রেসকে সিম্বলিক ইনপুট মানগুলির উপর একটি গাণিতিক সূত্র হিসাবে উপস্থাপন করে, অন্যথায় এটি একটি _পাথ প্রেডিকেট_ বলা হয়। একটি [SMT সলভার](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) একটি পাথ প্রেডিকেট "স্যাটিসফায়েবল" কিনা তা পরীক্ষা করতে ব্যবহৃত হয় (অর্থাৎ, এমন একটি মান বিদ্যমান যা সূত্রটিকে সন্তুষ্ট করতে পারে)। যদি একটি দুর্বল পথ স্যাটিসফায়েবল হয়, SMT সলভার একটি কংক্রিট মান তৈরি করবে যা সেই পথের দিকে এক্সিকিউশনকে চালিত করে।
+সিম্বলিক এক্সিকিউশন একটি এক্সিকিউশন ট্রেসকে সিম্বলিক ইনপুট ভ্যালুর ওপর একটি গাণিতিক সূত্র হিসেবে উপস্থাপন করে, যাকে অন্যথায় _পাথ প্রেডিকেট_ বলা হয়। একটি [SMT সলভার](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) ব্যবহার করা হয় এটি পরীক্ষা করার জন্য যে একটি পাথ প্রেডিকেট "স্যাটিসফায়েবল" কিনা (অর্থাৎ, এমন একটি মান বিদ্যমান যা সূত্রটি পূরণ করতে পারে)। যদি একটি দুর্বল পাথ স্যাটিসফায়েবল হয়, তবে SMT সলভার একটি কংক্রিট ভ্যালু তৈরি করবে যা এক্সিকিউশনকে সেই পাথের দিকে পরিচালিত করে।
-ধরা যাক, একটি স্মার্ট কন্ট্র্যাক্টের ফাংশন ইনপুট হিসাবে একটি `uint` মান (`x`) নেয় এবং যখন `x` `5`-এর চেয়ে বড় এবং `10`-এর চেয়ে কম হয় তখন রিভার্ট করে। একটি সাধারণ টেস্টিং পদ্ধতি ব্যবহার করে `x`-এর জন্য এমন একটি মান খুঁজে বের করা যা ত্রুটিটিকে ট্রিগার করে, তার জন্য কয়েক ডজন (বা তার বেশি) টেস্ট কেস চালানোর প্রয়োজন হবে, আসলে একটি ত্রুটি-সৃষ্টিকারী ইনপুট খুঁজে পাওয়ার কোনো নিশ্চয়তা ছাড়াই।
+ধরুন একটি স্মার্ট কন্ট্রাক্টের ফাংশন ইনপুট হিসেবে একটি `uint` ভ্যালু (`x`) নেয় এবং যখন `x` `5`-এর চেয়ে বড় এবং `10`-এর চেয়ে ছোট হয় তখন রিভার্ট করে। একটি সাধারণ টেস্টিং পদ্ধতি ব্যবহার করে ত্রুটি ট্রিগার করে এমন `x`-এর মান খুঁজে বের করার জন্য প্রকৃতপক্ষে একটি ত্রুটি-ট্রিগারিং ইনপুট খুঁজে পাওয়ার নিশ্চয়তা ছাড়াই কয়েক ডজন (বা তার বেশি) টেস্ট কেস চালানোর প্রয়োজন হবে।
-বিপরীতভাবে, একটি সিম্বলিক এক্সিকিউশন টুল ফাংশনটিকে সিম্বলিক মান দিয়ে এক্সিকিউট করবে: `X > 5 ∧ X < 10` (অর্থাৎ, `x` 5-এর চেয়ে বড় এবং `x` 10-এর চেয়ে কম)। সংশ্লিষ্ট পাথ প্রেডিকেট `x = X > 5 ∧ X < 10` তখন একটি SMT সলভারকে সমাধান করার জন্য দেওয়া হবে। যদি একটি নির্দিষ্ট মান `x = X > 5 ∧ X < 10` সূত্রটিকে সন্তুষ্ট করে, SMT সলভার এটি গণনা করবে—উদাহরণস্বরূপ, সলভার `x`-এর মান হিসাবে `7` তৈরি করতে পারে।
+অন্যদিকে, একটি সিম্বলিক এক্সিকিউশন টুল সিম্বলিক ভ্যালু দিয়ে ফাংশনটি এক্সিকিউট করবে: `X > 5 ∧ X < 10` (অর্থাৎ, `x` 5-এর চেয়ে বড় এবং `x` 10-এর চেয়ে ছোট)। সংশ্লিষ্ট পাথ প্রেডিকেট `x = X > 5 ∧ X < 10` এরপর সমাধানের জন্য একটি SMT সলভারকে দেওয়া হবে। যদি একটি নির্দিষ্ট মান `x = X > 5 ∧ X < 10` সূত্রটি পূরণ করে, তবে SMT সলভার এটি গণনা করবে—উদাহরণস্বরূপ, সলভার `x`-এর মান হিসেবে `7` তৈরি করতে পারে।
-কারণ সিম্বলিক এক্সিকিউশন একটি প্রোগ্রামের ইনপুটগুলির উপর নির্ভর করে, এবং সমস্ত পৌঁছানোযোগ্য স্টেট অন্বেষণ করার জন্য ইনপুটের সেট সম্ভাব্য অসীম, এটি এখনও এক ধরনের টেস্টিং। যাইহোক, উদাহরণে যেমন দেখানো হয়েছে, সিম্বলিক এক্সিকিউশন নিয়মিত টেস্টিংয়ের চেয়ে সম্পত্তি লঙ্ঘনকারী ইনপুট খুঁজে বের করার জন্য বেশি কার্যকর।
+যেহেতু সিম্বলিক এক্সিকিউশন একটি প্রোগ্রামের ইনপুটের ওপর নির্ভর করে এবং সমস্ত রিচেবল স্টেট এক্সপ্লোর করার জন্য ইনপুটের সেট সম্ভাব্যভাবে অসীম, তাই এটি এখনো এক ধরনের টেস্টিং। তবে, উদাহরণে দেখানো হয়েছে, প্রপার্টি লঙ্ঘন ট্রিগার করে এমন ইনপুট খুঁজে বের করার জন্য সিম্বলিক এক্সিকিউশন নিয়মিত টেস্টিংয়ের চেয়ে বেশি কার্যকর।
-উপরন্তু, সিম্বলিক এক্সিকিউশন অন্যান্য সম্পত্তি-ভিত্তিক কৌশল (যেমন, ফাজিং) এর চেয়ে কম ফলস পজিটিভ তৈরি করে যা এলোমেলোভাবে একটি ফাংশনে ইনপুট তৈরি করে। যদি সিম্বলিক এক্সিকিউশনের সময় একটি ত্রুটি স্টেট ট্রিগার হয়, তাহলে একটি কংক্রিট মান তৈরি করা সম্ভব যা ত্রুটিটি ট্রিগার করে এবং সমস্যাটি পুনরুত্পাদন করে।
+তাছাড়া, সিম্বলিক এক্সিকিউশন অন্যান্য প্রপার্টি-ভিত্তিক কৌশলগুলোর (যেমন, ফাজিং) তুলনায় কম ফলস পজিটিভ তৈরি করে যা এলোমেলোভাবে একটি ফাংশনে ইনপুট তৈরি করে। যদি সিম্বলিক এক্সিকিউশনের সময় একটি ত্রুটি স্টেট ট্রিগার হয়, তবে একটি কংক্রিট ভ্যালু তৈরি করা সম্ভব যা ত্রুটিটি ট্রিগার করে এবং সমস্যাটি পুনরুৎপাদন করে।
-সিম্বলিক এক্সিকিউশন সঠিকতার গাণিতিক প্রমাণের কিছু মাত্রাও প্রদান করতে পারে। ওভারফ্লো সুরক্ষা সহ একটি কন্ট্র্যাক্ট ফাংশনের নিম্নলিখিত উদাহরণটি বিবেচনা করুন:
+সিম্বলিক এক্সিকিউশন সঠিকতার কিছু মাত্রার গাণিতিক প্রমাণও প্রদান করতে পারে। ওভারফ্লো সুরক্ষা সহ একটি কন্ট্রাক্ট ফাংশনের নিম্নলিখিত উদাহরণটি বিবেচনা করুন:
```
function safe_add(uint x, uint y) returns(uint z){
@@ -155,130 +155,130 @@ function safe_add(uint x, uint y) returns(uint z){
}
```
-একটি ইন্টিজার ওভারফ্লো-এর ফলে সৃষ্ট এক্সিকিউশন ট্রেসকে সূত্রটি পূরণ করতে হবে: `z = x + y AND (z >= x) AND (z >= y) AND (z < x OR z < y)` এমন একটি সূত্রের সমাধান হওয়ার সম্ভাবনা কম, তাই এটি একটি গাণিতিক প্রমাণ হিসাবে কাজ করে যে `safe_add` ফাংশনটি কখনও ওভারফ্লো হয় না।
+একটি এক্সিকিউশন ট্রেস যার ফলে একটি ইন্টিজার ওভারফ্লো হয় তাকে এই সূত্রটি পূরণ করতে হবে: `z = x + y AND (z >= x) AND (z >= y) AND (z < x OR z < y)` এই ধরনের একটি সূত্র সমাধান হওয়ার সম্ভাবনা কম, তাই এটি একটি গাণিতিক প্রমাণ হিসেবে কাজ করে যে `safe_add` ফাংশনটি কখনো ওভারফ্লো হয় না।
-### স্মার্ট কন্ট্র্যাক্টের জন্য আনুষ্ঠানিক যাচাইকরণ কেন ব্যবহার করবেন? {#benefits-of-formal-verification}
+### স্মার্ট কন্ট্রাক্টের জন্য ফরমাল ভেরিফিকেশন কেন ব্যবহার করবেন? {#benefits-of-formal-verification}
-#### নির্ভরযোগ্যতার প্রয়োজন {#need-for-reliability}
+#### নির্ভরযোগ্যতার প্রয়োজনীয়তা {#need-for-reliability}
-আনুষ্ঠানিক যাচাইকরণ নিরাপত্তা-সংক্রান্ত সিস্টেমগুলির সঠিকতা মূল্যায়ন করতে ব্যবহৃত হয়, যার ব্যর্থতার ফলে মৃত্যু, আঘাত বা আর্থিক ধ্বংসের মতো বিধ্বংসী পরিণতি হতে পারে। স্মার্ট কন্ট্র্যাক্ট হল উচ্চ-মূল্যের অ্যাপ্লিকেশন যা বিপুল পরিমাণ মূল্য নিয়ন্ত্রণ করে, এবং ডিজাইনে সাধারণ ত্রুটি [ব্যবহারকারীদের জন্য অপূরণীয় ক্ষতির](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/) কারণ হতে পারে। যাইহোক, ডিপ্লয়মেন্টের আগে একটি কন্ট্র্যাক্টকে আনুষ্ঠানিকভাবে যাচাই করা এই গ্যারান্টি বাড়াতে পারে যে এটি ব্লকচেইনে চলার সময় প্রত্যাশিতভাবে কাজ করবে।
+ফরমাল ভেরিফিকেশন সেফটি-ক্রিটিকাল সিস্টেমের সঠিকতা মূল্যায়ন করতে ব্যবহৃত হয় যার ব্যর্থতা ধ্বংসাত্মক পরিণতি ডেকে আনতে পারে, যেমন মৃত্যু, আঘাত বা আর্থিক ধ্বংস। স্মার্ট কন্ট্রাক্ট হলো হাই-ভ্যালু অ্যাপ্লিকেশন যা প্রচুর পরিমাণ ভ্যালু নিয়ন্ত্রণ করে এবং ডিজাইনে সাধারণ ত্রুটি ব্যবহারকারীদের জন্য [অপূরণীয় ক্ষতির](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/) কারণ হতে পারে। তবে, ডিপ্লয়মেন্টের আগে একটি কন্ট্রাক্ট ফরমালভাবে যাচাই করা গ্যারান্টি বাড়াতে পারে যে এটি ব্লকচেইনে চলার পরে প্রত্যাশা অনুযায়ী কাজ করবে।
-নির্ভরযোগ্যতা যেকোনো স্মার্ট কন্ট্র্যাক্টে একটি অত্যন্ত আকাঙ্ক্ষিত গুণ, বিশেষ করে কারণ ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)-এ ডিপ্লয় করা কোড সাধারণত অপরিবর্তনীয়। লঞ্চ-পরবর্তী আপগ্রেডগুলি সহজে অ্যাক্সেসযোগ্য না হওয়ায়, কন্ট্র্যাক্টের নির্ভরযোগ্যতা নিশ্চিত করার প্রয়োজন আনুষ্ঠানিক যাচাইকরণকে অপরিহার্য করে তোলে। আনুষ্ঠানিক যাচাইকরণ ইন্টিজার আন্ডারফ্লো এবং ওভারফ্লো, রি-এন্ট্রেন্সি, এবং দুর্বল গ্যাস অপ্টিমাইজেশনের মতো জটিল সমস্যাগুলি সনাক্ত করতে সক্ষম, যা অডিটর এবং টেস্টারদের চোখ এড়িয়ে যেতে পারে।
+নির্ভরযোগ্যতা যেকোনো স্মার্ট কন্ট্রাক্টে একটি অত্যন্ত কাঙ্ক্ষিত গুণ, বিশেষ করে কারণ [ইথিরিয়াম](/) ভার্চুয়াল মেশিন (EVM)-এ ডিপ্লয় করা কোড সাধারণত ইমমিউটেবল হয়। লঞ্চ-পরবর্তী আপগ্রেডগুলো সহজে অ্যাক্সেসযোগ্য না হওয়ায়, কন্ট্রাক্টের নির্ভরযোগ্যতা গ্যারান্টি দেওয়ার প্রয়োজনীয়তা ফরমাল ভেরিফিকেশনকে প্রয়োজনীয় করে তোলে। ফরমাল ভেরিফিকেশন জটিল সমস্যাগুলো শনাক্ত করতে সক্ষম, যেমন ইন্টিজার আন্ডারফ্লো এবং ওভারফ্লো, রি-এন্ট্রান্সি এবং দুর্বল গ্যাস অপ্টিমাইজেশন, যা অডিটর এবং টেস্টারদের চোখ এড়িয়ে যেতে পারে।
-#### কার্যকরী সঠিকতা প্রমাণ করুন {#prove-functional-correctness}
+#### কার্যকারিতার সঠিকতা প্রমাণ করা {#prove-functional-correctness}
-প্রোগ্রাম টেস্টিং হল একটি স্মার্ট কন্ট্র্যাক্ট কিছু প্রয়োজনীয়তা পূরণ করে তা প্রমাণের সবচেয়ে সাধারণ পদ্ধতি। এর মধ্যে একটি কন্ট্র্যাক্টকে এটি যে ডেটা পরিচালনা করবে বলে আশা করা হয় তার একটি নমুনা দিয়ে এক্সিকিউট করা এবং এর আচরণ বিশ্লেষণ করা জড়িত। যদি কন্ট্র্যাক্টটি নমুনা ডেটার জন্য প্রত্যাশিত ফলাফল প্রদান করে, তবে ডেভেলপারদের কাছে এর সঠিকতার বস্তুনিষ্ঠ প্রমাণ থাকে।
+প্রোগ্রাম টেস্টিং হলো একটি স্মার্ট কন্ট্রাক্ট কিছু প্রয়োজনীয়তা পূরণ করে তা প্রমাণ করার সবচেয়ে সাধারণ পদ্ধতি। এর মধ্যে একটি কন্ট্রাক্টকে এমন ডেটার নমুনা দিয়ে এক্সিকিউট করা জড়িত যা এটি পরিচালনা করবে বলে আশা করা হয় এবং এর আচরণ বিশ্লেষণ করা। যদি কন্ট্রাক্টটি নমুনা ডেটার জন্য প্রত্যাশিত ফলাফল প্রদান করে, তবে ডেভেলপারদের কাছে এর সঠিকতার বস্তুনিষ্ঠ প্রমাণ থাকে।
-যাইহোক, এই পদ্ধতিটি এমন ইনপুট মানগুলির জন্য সঠিক এক্সিকিউশন প্রমাণ করতে পারে না যা নমুনার অংশ নয়। অতএব, একটি কন্ট্র্যাক্ট টেস্টিং বাগ সনাক্ত করতে সাহায্য করতে পারে (অর্থাৎ, যদি কিছু কোড পাথ এক্সিকিউশনের সময় কাঙ্ক্ষিত ফলাফল দিতে ব্যর্থ হয়), কিন্তু **এটি চূড়ান্তভাবে বাগের অনুপস্থিতি প্রমাণ করতে পারে না**।
+তবে, এই পদ্ধতিটি এমন ইনপুট ভ্যালুর জন্য সঠিক এক্সিকিউশন প্রমাণ করতে পারে না যা নমুনার অংশ নয়। অতএব, একটি কন্ট্রাক্ট পরীক্ষা করা বাগ শনাক্ত করতে সাহায্য করতে পারে (অর্থাৎ, যদি কিছু কোড পাথ এক্সিকিউশনের সময় কাঙ্ক্ষিত ফলাফল প্রদান করতে ব্যর্থ হয়), তবে **এটি চূড়ান্তভাবে বাগের অনুপস্থিতি প্রমাণ করতে পারে না**।
-বিপরীতভাবে, আনুষ্ঠানিক যাচাইকরণ আনুষ্ঠানিকভাবে প্রমাণ করতে পারে যে একটি স্মার্ট কন্ট্র্যাক্ট কন্ট্র্যাক্টটি একেবারেই না চালিয়ে অসীম পরিসরের এক্সিকিউশনের জন্য প্রয়োজনীয়তা পূরণ করে। এর জন্য একটি আনুষ্ঠানিক স্পেসিফিকেশন তৈরি করতে হবে যা সঠিক কন্ট্র্যাক্ট আচরণগুলিকে অবিকলভাবে বর্ণনা করে এবং কন্ট্র্যাক্টের সিস্টেমের একটি আনুষ্ঠানিক (গাণিতিক) মডেল তৈরি করতে হবে। তারপর আমরা কন্ট্র্যাক্টের মডেল এবং এর স্পেসিফিকেশনের মধ্যে সঙ্গতি পরীক্ষা করার জন্য একটি আনুষ্ঠানিক প্রমাণ পদ্ধতি অনুসরণ করতে পারি।
+অন্যদিকে, ফরমাল ভেরিফিকেশন ফরমালভাবে প্রমাণ করতে পারে যে একটি স্মার্ট কন্ট্রাক্ট কন্ট্রাক্টটি মোটেও না চালিয়ে অসীম পরিসরের এক্সিকিউশনের জন্য প্রয়োজনীয়তা পূরণ করে। এর জন্য একটি ফরমাল স্পেসিফিকেশন তৈরি করা প্রয়োজন যা সঠিকভাবে কন্ট্রাক্টের আচরণ বর্ণনা করে এবং কন্ট্রাক্টের সিস্টেমের একটি ফরমাল (গাণিতিক) মডেল তৈরি করে। তারপর আমরা কন্ট্রাক্টের মডেল এবং এর স্পেসিফিকেশনের মধ্যে সামঞ্জস্য পরীক্ষা করার জন্য একটি ফরমাল প্রমাণ পদ্ধতি অনুসরণ করতে পারি।
-আনুষ্ঠানিক যাচাইকরণের মাধ্যমে, একটি কন্ট্র্যাক্টের ব্যবসায়িক যুক্তি প্রয়োজনীয়তা পূরণ করে কিনা তা যাচাই করার প্রশ্নটি একটি গাণিতিক প্রস্তাব যা প্রমাণ বা অপ্রমাণ করা যেতে পারে। একটি প্রস্তাবকে আনুষ্ঠানিকভাবে প্রমাণ করে, আমরা সসীম সংখ্যক ধাপে অসীম সংখ্যক টেস্ট কেস যাচাই করতে পারি। এই পদ্ধতিতে আনুষ্ঠানিক যাচাইকরণের একটি স্পেসিফিকেশনের সাপেক্ষে একটি কন্ট্র্যাক্ট কার্যকরীভাবে সঠিক প্রমাণ করার আরও ভাল সম্ভাবনা রয়েছে।
+ফরমাল ভেরিফিকেশনের মাধ্যমে, একটি কন্ট্রাক্টের বিজনেস লজিক প্রয়োজনীয়তা পূরণ করে কিনা তা যাচাই করার প্রশ্নটি একটি গাণিতিক প্রস্তাবনা যা প্রমাণ বা খণ্ডন করা যেতে পারে। একটি প্রস্তাবনা ফরমালভাবে প্রমাণ করে, আমরা সসীম সংখ্যক ধাপের মাধ্যমে অসীম সংখ্যক টেস্ট কেস যাচাই করতে পারি। এইভাবে ফরমাল ভেরিফিকেশনের একটি স্পেসিফিকেশনের সাপেক্ষে একটি কন্ট্রাক্ট কার্যকারিতার দিক থেকে সঠিক তা প্রমাণ করার ভালো সম্ভাবনা রয়েছে।
-#### আদর্শ যাচাইকরণ লক্ষ্য {#ideal-verification-targets}
+#### আদর্শ ভেরিফিকেশন টার্গেট {#ideal-verification-targets}
-একটি যাচাইকরণ লক্ষ্য আনুষ্ঠানিকভাবে যাচাই করা হবে এমন সিস্টেমকে বর্ণনা করে। আনুষ্ঠানিক যাচাইকরণ "এম্বেডেড সিস্টেম" (সফ্টওয়্যারের ছোট, সহজ অংশ যা একটি বৃহত্তর সিস্টেমের অংশ গঠন করে) এ সবচেয়ে ভালভাবে ব্যবহৃত হয়। এগুলি বিশেষায়িত ডোমেনগুলির জন্যও আদর্শ যেগুলির নিয়ম কম, কারণ এটি ডোমেন-নির্দিষ্ট বৈশিষ্ট্য যাচাই করার জন্য টুলস পরিবর্তন করা সহজ করে তোলে।
+একটি ভেরিফিকেশন টার্গেট ফরমালভাবে যাচাই করা হবে এমন সিস্টেম বর্ণনা করে। ফরমাল ভেরিফিকেশন "এমবেডেড সিস্টেম" (ছোট, সাধারণ সফটওয়্যার যা একটি বড় সিস্টেমের অংশ গঠন করে)-এ সবচেয়ে ভালোভাবে ব্যবহৃত হয়। এগুলো এমন বিশেষ ডোমেইনের জন্যও আদর্শ যেখানে কয়েকটি নিয়ম রয়েছে, কারণ এটি ডোমেইন-নির্দিষ্ট প্রপার্টি যাচাই করার জন্য টুলগুলো পরিবর্তন করা সহজ করে তোলে।
-স্মার্ট কন্ট্র্যাক্ট—অন্তত, কিছু পরিমাণে—উভয় প্রয়োজনীয়তা পূরণ করে। উদাহরণস্বরূপ, ইথেরিয়াম কন্ট্র্যাক্টের ছোট আকার তাদের আনুষ্ঠানিক যাচাইকরণের জন্য উপযুক্ত করে তোলে। একইভাবে, EVM সহজ নিয়ম অনুসরণ করে, যা EVM-এ চলমান প্রোগ্রামগুলির জন্য সেমান্টিক বৈশিষ্ট্যগুলি নির্দিষ্ট করা এবং যাচাই করা সহজ করে তোলে।
+স্মার্ট কন্ট্রাক্ট—অন্তত, কিছুটা হলেও—উভয় প্রয়োজনীয়তা পূরণ করে। উদাহরণস্বরূপ, ইথিরিয়াম কন্ট্রাক্টের ছোট আকার সেগুলোকে ফরমাল ভেরিফিকেশনের উপযোগী করে তোলে। একইভাবে, EVM সাধারণ নিয়ম অনুসরণ করে, যা EVM-এ চলা প্রোগ্রামগুলোর জন্য শব্দার্থিক প্রপার্টি নির্দিষ্ট করা এবং যাচাই করা সহজ করে তোলে।
-### দ্রুততর ডেভেলপমেন্ট চক্র {#faster-development-cycle}
+### দ্রুত ডেভেলপমেন্ট সাইকেল {#faster-development-cycle}
-আনুষ্ঠানিক যাচাইকরণ কৌশল, যেমন মডেল চেকিং এবং সিম্বলিক এক্সিকিউশন, সাধারণত স্মার্ট কন্ট্র্যাক্ট কোডের নিয়মিত বিশ্লেষণের (টেস্টিং বা অডিটিংয়ের সময় সঞ্চালিত) চেয়ে বেশি কার্যকর। এর কারণ হল আনুষ্ঠানিক যাচাইকরণ দাবিগুলি পরীক্ষা করার জন্য সিম্বলিক মানের উপর নির্ভর করে ("যদি একজন ব্যবহারকারী _n_ ইথার উত্তোলন করার চেষ্টা করে?") টেস্টিং-এর বিপরীতে যা কংক্রিট মান ব্যবহার করে ("যদি একজন ব্যবহারকারী 5 ইথার উত্তোলন করার চেষ্টা করে?")।
+ফরমাল ভেরিফিকেশন কৌশল, যেমন মডেল চেকিং এবং সিম্বলিক এক্সিকিউশন, সাধারণত স্মার্ট কন্ট্রাক্ট কোডের নিয়মিত বিশ্লেষণের (টেস্টিং বা অডিটিংয়ের সময় সঞ্চালিত) চেয়ে বেশি কার্যকর। এর কারণ হলো ফরমাল ভেরিফিকেশন দাবিগুলো পরীক্ষা করার জন্য সিম্বলিক ভ্যালুর ওপর নির্ভর করে ("যদি কোনো ব্যবহারকারী _n_ ইথার তোলার চেষ্টা করে তবে কী হবে?") টেস্টিংয়ের বিপরীতে যা কংক্রিট ভ্যালু ব্যবহার করে ("যদি কোনো ব্যবহারকারী 5 ইথার তোলার চেষ্টা করে তবে কী হবে?")।
-সিম্বলিক ইনপুট ভেরিয়েবলগুলি কংক্রিট মানগুলির একাধিক শ্রেণীকে কভার করতে পারে, তাই আনুষ্ঠানিক যাচাইকরণ পদ্ধতিগুলি একটি ছোট সময়সীমার মধ্যে আরও বেশি কোড কভারেজের প্রতিশ্রুতি দেয়। কার্যকরভাবে ব্যবহার করা হলে, আনুষ্ঠানিক যাচাইকরণ ডেভেলপারদের জন্য ডেভেলপমেন্ট চক্রকে ত্বরান্বিত করতে পারে।
+সিম্বলিক ইনপুট ভেরিয়েবলগুলো কংক্রিট ভ্যালুর একাধিক ক্লাস কভার করতে পারে, তাই ফরমাল ভেরিফিকেশন পদ্ধতিগুলো অল্প সময়ের মধ্যে আরও বেশি কোড কভারেজের প্রতিশ্রুতি দেয়। কার্যকরভাবে ব্যবহার করা হলে, ফরমাল ভেরিফিকেশন ডেভেলপারদের জন্য ডেভেলপমেন্ট সাইকেল ত্বরান্বিত করতে পারে।
-আনুষ্ঠানিক যাচাইকরণ ব্যয়বহুল ডিজাইন ত্রুটি হ্রাস করে ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপস) তৈরির প্রক্রিয়াটিকেও উন্নত করে। দুর্বলতাগুলি ঠিক করার জন্য কন্ট্র্যাক্টগুলি আপগ্রেড করার (যেখানে সম্ভব) জন্য কোডবেসগুলির ব্যাপক পুনর্লিখন এবং ডেভেলপমেন্টে আরও বেশি প্রচেষ্টা ব্যয় করতে হয়। আনুষ্ঠানিক যাচাইকরণ কন্ট্র্যাক্ট বাস্তবায়নে অনেক ত্রুটি সনাক্ত করতে পারে যা টেস্টার এবং অডিটরদের চোখ এড়িয়ে যেতে পারে এবং একটি কন্ট্র্যাক্ট ডিপ্লয় করার আগে সেই সমস্যাগুলি সমাধান করার জন্য যথেষ্ট সুযোগ প্রদান করে।
+ফরমাল ভেরিফিকেশন ব্যয়বহুল ডিজাইনের ত্রুটি কমিয়ে ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপস) তৈরির প্রক্রিয়াকেও উন্নত করে। দুর্বলতাগুলো ঠিক করতে কন্ট্রাক্ট আপগ্রেড করার জন্য (যেখানে সম্ভব) কোডবেসগুলো ব্যাপকভাবে পুনরায় লেখা এবং ডেভেলপমেন্টে আরও বেশি প্রচেষ্টা ব্যয় করা প্রয়োজন। ফরমাল ভেরিফিকেশন কন্ট্রাক্ট বাস্তবায়নে অনেক ত্রুটি শনাক্ত করতে পারে যা টেস্টার এবং অডিটরদের চোখ এড়িয়ে যেতে পারে এবং একটি কন্ট্রাক্ট ডিপ্লয় করার আগে সেই সমস্যাগুলো ঠিক করার পর্যাপ্ত সুযোগ প্রদান করে।
-## আনুষ্ঠানিক যাচাইকরণের অসুবিধা {#drawbacks-of-formal-verification}
+## ফরমাল ভেরিফিকেশনের অসুবিধা {#drawbacks-of-formal-verification}
### কায়িক শ্রমের খরচ {#cost-of-manual-labor}
-আনুষ্ঠানিক যাচাইকরণ, বিশেষত আধা-স্বয়ংক্রিয় যাচাইকরণ যেখানে একজন মানুষ সঠিকতার প্রমাণ পেতে প্রোভারকে গাইড করে, তার জন্য যথেষ্ট কায়িক শ্রম প্রয়োজন। উপরন্তু, আনুষ্ঠানিক স্পেসিফিকেশন তৈরি করা একটি জটিল কার্যকলাপ যা উচ্চ স্তরের দক্ষতার দাবি রাখে।
+ফরমাল ভেরিফিকেশন, বিশেষ করে আধা-স্বয়ংক্রিয় ভেরিফিকেশন যেখানে একজন মানুষ সঠিকতার প্রমাণ বের করতে প্রুভারকে গাইড করে, এর জন্য যথেষ্ট কায়িক শ্রম প্রয়োজন। তাছাড়া, ফরমাল স্পেসিফিকেশন তৈরি করা একটি জটিল কাজ যার জন্য উচ্চ স্তরের দক্ষতা প্রয়োজন।
-এই কারণগুলি (প্রচেষ্টা এবং দক্ষতা) আনুষ্ঠানিক যাচাইকরণকে কন্ট্র্যাক্টে সঠিকতা মূল্যায়নের সাধারণ পদ্ধতি, যেমন টেস্টিং এবং অডিট, এর তুলনায় আরও বেশি দাবিদার এবং ব্যয়বহুল করে তোলে। তা সত্ত্বেও, স্মার্ট কন্ট্র্যাক্ট বাস্তবায়নে ত্রুটির খরচ বিবেচনা করে, একটি সম্পূর্ণ যাচাইকরণ অডিটের জন্য খরচ প্রদান করা বাস্তবসম্মত।
+এই বিষয়গুলো (প্রচেষ্টা এবং দক্ষতা) কন্ট্রাক্টে সঠিকতা মূল্যায়নের সাধারণ পদ্ধতি, যেমন টেস্টিং এবং অডিটের তুলনায় ফরমাল ভেরিফিকেশনকে আরও বেশি চাহিদাপূর্ণ এবং ব্যয়বহুল করে তোলে। তা সত্ত্বেও, স্মার্ট কন্ট্রাক্ট বাস্তবায়নে ত্রুটির খরচের কথা বিবেচনা করে একটি সম্পূর্ণ ভেরিফিকেশন অডিটের জন্য খরচ প্রদান করা বাস্তবসম্মত।
### ফলস নেগেটিভ {#false-negatives}
-আনুষ্ঠানিক যাচাইকরণ কেবল এটিই পরীক্ষা করতে পারে যে স্মার্ট কন্ট্র্যাক্টের এক্সিকিউশন আনুষ্ঠানিক স্পেসিফিকেশনের সাথে মেলে কিনা। যেমন, এটি নিশ্চিত করা গুরুত্বপূর্ণ যে স্পেসিফিকেশনটি একটি স্মার্ট কন্ট্র্যাক্টের প্রত্যাশিত আচরণগুলি সঠিকভাবে বর্ণনা করে।
+ফরমাল ভেরিফিকেশন কেবল পরীক্ষা করতে পারে যে স্মার্ট কন্ট্রাক্টের এক্সিকিউশন ফরমাল স্পেসিফিকেশনের সাথে মেলে কিনা। তাই, স্পেসিফিকেশনটি একটি স্মার্ট কন্ট্রাক্টের প্রত্যাশিত আচরণগুলো সঠিকভাবে বর্ণনা করে তা নিশ্চিত করা গুরুত্বপূর্ণ।
-যদি স্পেসিফিকেশনগুলি খারাপভাবে লেখা হয়, তবে সম্পত্তিগুলির লঙ্ঘন—যা দুর্বল এক্সিকিউশনের দিকে নির্দেশ করে—আনুষ্ঠানিক যাচাইকরণ অডিটের মাধ্যমে সনাক্ত করা যায় না। এই ক্ষেত্রে, একজন ডেভেলপার ভুলবশত ধরে নিতে পারেন যে কন্ট্র্যাক্টটি বাগ-মুক্ত।
+যদি স্পেসিফিকেশনগুলো খারাপভাবে লেখা হয়, তবে প্রপার্টিগুলোর লঙ্ঘন—যা দুর্বল এক্সিকিউশনের দিকে নির্দেশ করে—ফরমাল ভেরিফিকেশন অডিট দ্বারা শনাক্ত করা যাবে না। এই ক্ষেত্রে, একজন ডেভেলপার ভুলভাবে ধরে নিতে পারেন যে কন্ট্রাক্টটি বাগ-মুক্ত।
### পারফরম্যান্স সমস্যা {#performance-issues}
-আনুষ্ঠানিক যাচাইকরণ বেশ কিছু পারফরম্যান্স সমস্যার সম্মুখীন হয়। উদাহরণস্বরূপ, মডেল চেকিং এবং সিম্বলিক চেকিং-এর সময় যথাক্রমে সম্মুখীন হওয়া স্টেট এবং পাথ এক্সপ্লোশন সমস্যাগুলি যাচাইকরণ পদ্ধতিকে প্রভাবিত করতে পারে। এছাড়াও, আনুষ্ঠানিক যাচাইকরণ টুলগুলি প্রায়শই তাদের অন্তর্নিহিত লেয়ারে SMT সলভার এবং অন্যান্য কনস্ট্রেইন্ট সলভার ব্যবহার করে এবং এই সলভারগুলি গণনামূলকভাবে নিবিড় পদ্ধতির উপর নির্ভর করে।
+ফরমাল ভেরিফিকেশন বেশ কয়েকটি পারফরম্যান্স সমস্যার সম্মুখীন হয়। উদাহরণস্বরূপ, যথাক্রমে মডেল চেকিং এবং সিম্বলিক চেকিংয়ের সময় সম্মুখীন হওয়া স্টেট এবং পাথ এক্সপ্লোশন সমস্যাগুলো ভেরিফিকেশন পদ্ধতিগুলোকে প্রভাবিত করতে পারে। এছাড়াও, ফরমাল ভেরিফিকেশন টুলগুলো প্রায়শই তাদের অন্তর্নিহিত লেয়ারে SMT সলভার এবং অন্যান্য কনস্ট্রেইন্ট সলভার ব্যবহার করে এবং এই সলভারগুলো কম্পিউটেশনালি নিবিড় পদ্ধতির ওপর নির্ভর করে।
-এছাড়াও, প্রোগ্রাম যাচাইকারীদের জন্য একটি সম্পত্তি (একটি যৌক্তিক সূত্র হিসাবে বর্ণিত) সন্তুষ্ট করা যেতে পারে কিনা তা নির্ধারণ করা সবসময় সম্ভব নয় (the "[decidability problem](https://en.wikipedia.org/wiki/Decision_problem)") কারণ একটি প্রোগ্রাম কখনও শেষ নাও হতে পারে। যেমন, একটি কন্ট্র্যাক্টের জন্য কিছু সম্পত্তি প্রমাণ করা অসম্ভব হতে পারে যদিও এটি ভালভাবে নির্দিষ্ট করা থাকে।
+এছাড়াও, প্রোগ্রাম ভেরিফায়ারদের পক্ষে সবসময় নির্ধারণ করা সম্ভব নয় যে একটি প্রপার্টি (একটি যৌক্তিক সূত্র হিসেবে বর্ণিত) পূরণ করা যেতে পারে কিনা ("[ডিসাইডেবিলিটি প্রবলেম](https://en.wikipedia.org/wiki/Decision_problem)") কারণ একটি প্রোগ্রাম কখনোই শেষ নাও হতে পারে। তাই, একটি কন্ট্রাক্ট ভালোভাবে নির্দিষ্ট করা থাকলেও এর জন্য কিছু প্রপার্টি প্রমাণ করা অসম্ভব হতে পারে।
-## ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টের জন্য আনুষ্ঠানিক যাচাইকরণ টুলস {#formal-verification-tools}
+## ইথিরিয়াম স্মার্ট কন্ট্রাক্টের জন্য ফরমাল ভেরিফিকেশন টুল {#formal-verification-tools}
-### আনুষ্ঠানিক স্পেসিফিকেশন তৈরির জন্য স্পেসিফিকেশন ভাষা {#specification-languages}
+### ফরমাল স্পেসিফিকেশন তৈরির জন্য স্পেসিফিকেশন ল্যাঙ্গুয়েজ {#specification-languages}
-**Act**: _*Act স্টোরেজ আপডেট, প্রি/পোস্ট কন্ডিশন এবং কন্ট্র্যাক্ট ইনভ্যারিয়েন্টের স্পেসিফিকেশনের অনুমতি দেয়। এর টুল স্যুটেও Coq, SMT সলভার, বা hevm-এর মাধ্যমে অনেক বৈশিষ্ট্য প্রমাণ করতে সক্ষম প্রুফ ব্যাকএন্ড রয়েছে।*_
+**Act**: _*Act স্টোরেজ আপডেট, প্রি/পোস্ট কন্ডিশন এবং কন্ট্রাক্ট ইনভ্যারিয়েন্টের স্পেসিফিকেশন অনুমোদন করে। এর টুল স্যুটে প্রুফ ব্যাকএন্ডও রয়েছে যা Coq, SMT সলভার বা hevm-এর মাধ্যমে অনেক প্রপার্টি প্রমাণ করতে সক্ষম।*_
- [GitHub](https://github.com/ethereum/act)
-- [নথিপত্র](https://github.com/argotorg/act)
+- [Documentation](https://github.com/argotorg/act)
-**Scribble** - __Scribble স্পেসিফিকেশন ভাষায় কোড টীকাগুলিকে কংক্রিট অ্যাসারশনে রূপান্তরিত করে যা স্পেসিফিকেশন পরীক্ষা করে।__
+**Scribble** - _*Scribble স্পেসিফিকেশন ল্যাঙ্গুয়েজে কোড টীকাগুলোকে কংক্রিট অ্যাসারশনে রূপান্তরিত করে যা স্পেসিফিকেশন পরীক্ষা করে।*_
-- [নথিপত্র](https://docs.scribble.codes/)
+- [Documentation](https://docs.scribble.codes/)
-**Dafny** - __Dafny একটি যাচাইকরণ-প্রস্তুত প্রোগ্রামিং ভাষা যা কোডের সঠিকতা সম্পর্কে যুক্তি ও প্রমাণ করার জন্য উচ্চ-স্তরের টীকাগুলির উপর নির্ভর করে।__
+**Dafny** - _*Dafny হলো একটি ভেরিফিকেশন-রেডি প্রোগ্রামিং ভাষা যা কোডের সঠিকতা সম্পর্কে যুক্তি দিতে এবং প্রমাণ করতে হাই-লেভেল টীকাগুলোর ওপর নির্ভর করে।*_
- [GitHub](https://github.com/dafny-lang/dafny)
-### সঠিকতা পরীক্ষা করার জন্য প্রোগ্রাম ভেরিফায়ার {#program-verifiers}
+### সঠিকতা পরীক্ষা করার জন্য প্রোগ্রাম ভেরিফায়ার {#program-verifiers}
-**Certora Prover** - _Certora Prover স্মার্ট কন্ট্র্যাক্টে কোডের সঠিকতা পরীক্ষা করার জন্য একটি স্বয়ংক্রিয় আনুষ্ঠানিক যাচাইকরণ টুল। স্পেসিফিকেশনগুলি CVL (Certora Verification Language) এ লেখা হয়, যেখানে স্ট্যাটিক বিশ্লেষণ এবং কনস্ট্রেইন্ট-সলভিং এর সংমিশ্রণ ব্যবহার করে সম্পত্তি লঙ্ঘন সনাক্ত করা হয়।_
+**Certora Prover** - _Certora Prover হলো স্মার্ট কন্ট্রাক্টে কোডের সঠিকতা পরীক্ষা করার জন্য একটি স্বয়ংক্রিয় ফরমাল ভেরিফিকেশন টুল। স্পেসিফিকেশনগুলো CVL (Certora Verification Language)-এ লেখা হয়, যেখানে স্ট্যাটিক অ্যানালাইসিস এবং কনস্ট্রেইন্ট-সলভিংয়ের সংমিশ্রণ ব্যবহার করে প্রপার্টি লঙ্ঘন শনাক্ত করা হয়।_
-- [ওয়েবসাইট](https://www.certora.com/)
-- [নথিপত্র](https://docs.certora.com/en/latest/index.html)
+- [Website](https://www.certora.com/)
+- [Documentation](https://docs.certora.com/en/latest/index.html)
-**Solidity SMTChecker** - _*সলিডিটির SMTChecker হল SMT (Satisfiability Modulo Theories) এবং Horn সলভিং-এর উপর ভিত্তি করে একটি অন্তর্নির্মিত মডেল চেকার। এটি নিশ্চিত করে যে একটি কন্ট্র্যাক্টের সোর্স কোড কম্পাইলেশনের সময় স্পেসিফিকেশনগুলির সাথে মেলে কিনা এবং নিরাপত্তা বৈশিষ্ট্যগুলির লঙ্ঘনের জন্য স্ট্যাটিকালি পরীক্ষা করে।*_
+**Solidity SMTChecker** - _*সলিডিটির SMTChecker হলো SMT (Satisfiability Modulo Theories) এবং হর্ন সলভিংয়ের ওপর ভিত্তি করে একটি বিল্ট-ইন মডেল চেকার। এটি নিশ্চিত করে যে কম্পাইলেশনের সময় একটি কন্ট্রাক্টের সোর্স কোড স্পেসিফিকেশনের সাথে মেলে কিনা এবং স্ট্যাটিকভাবে সেফটি প্রপার্টির লঙ্ঘন পরীক্ষা করে।*_
- [GitHub](https://github.com/ethereum/solidity)
-**solc-verify** - __solc-verify হল সলিডিটি কম্পাইলারের একটি বর্ধিত সংস্করণ যা টীকা এবং মডুলার প্রোগ্রাম ভেরিফিকেশন ব্যবহার করে সলিডিটি কোডে স্বয়ংক্রিয় আনুষ্ঠানিক যাচাইকরণ সম্পাদন করতে পারে।__
+**solc-verify** - _*solc-verify হলো সলিডিটি কম্পাইলারের একটি বর্ধিত সংস্করণ যা টীকা এবং মডুলার প্রোগ্রাম ভেরিফিকেশন ব্যবহার করে সলিডিটি কোডে স্বয়ংক্রিয় ফরমাল ভেরিফিকেশন সম্পাদন করতে পারে।*_
- [GitHub](https://github.com/SRI-CSL/solidity)
-**KEVM** - _*KEVM হল K ফ্রেমওয়ার্কে লেখা ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)-এর একটি আনুষ্ঠানিক সেমান্টিকস। KEVM এক্সিকিউটেবল এবং রিচেবিলিটি লজিক ব্যবহার করে নির্দিষ্ট সম্পত্তি-সম্পর্কিত দাবি প্রমাণ করতে পারে।*_
+**KEVM** - _*KEVM হলো K ফ্রেমওয়ার্কে লেখা ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)-এর একটি ফরমাল শব্দার্থবিদ্যা। KEVM এক্সিকিউটেবল এবং রিচেবিলিটি লজিক ব্যবহার করে নির্দিষ্ট প্রপার্টি-সম্পর্কিত দাবি প্রমাণ করতে পারে।*_
- [GitHub](https://github.com/runtimeverification/evm-semantics)
-- [নথিপত্র](https://jellopaper.org/)
+- [Documentation](https://jellopaper.org/)
-### থিওরেম প্রুভিং-এর জন্য লজিক্যাল ফ্রেমওয়ার্ক {#theorem-provers}
+### থিওরেম প্রুভিংয়ের জন্য লজিক্যাল ফ্রেমওয়ার্ক {#theorem-provers}
-**Isabelle** - _Isabelle/HOL একটি প্রুফ অ্যাসিস্ট্যান্ট যা গাণিতিক সূত্রগুলিকে একটি আনুষ্ঠানিক ভাষায় প্রকাশ করতে দেয় এবং সেই সূত্রগুলি প্রমাণ করার জন্য টুলস সরবরাহ করে। প্রধান অ্যাপ্লিকেশন হল গাণিতিক প্রমাণের আনুষ্ঠানিকীকরণ এবং বিশেষ করে আনুষ্ঠানিক যাচাইকরণ, যার মধ্যে কম্পিউটার হার্ডওয়্যার বা সফ্টওয়্যারের সঠিকতা প্রমাণ করা এবং কম্পিউটার ভাষা এবং প্রোটোকলের বৈশিষ্ট্য প্রমাণ করা অন্তর্ভুক্ত।_
+**Isabelle** - _Isabelle/HOL হলো একটি প্রুফ অ্যাসিস্ট্যান্ট যা গাণিতিক সূত্রগুলোকে একটি ফরমাল ভাষায় প্রকাশ করার অনুমতি দেয় এবং সেই সূত্রগুলো প্রমাণ করার জন্য টুল প্রদান করে। প্রধান অ্যাপ্লিকেশন হলো গাণিতিক প্রমাণের ফরম্যালাইজেশন এবং বিশেষ করে ফরমাল ভেরিফিকেশন, যার মধ্যে কম্পিউটার হার্ডওয়্যার বা সফটওয়্যারের সঠিকতা প্রমাণ করা এবং কম্পিউটার ভাষা ও প্রটোকলের প্রপার্টি প্রমাণ করা অন্তর্ভুক্ত।_
- [GitHub](https://github.com/isabelle-prover)
-- [নথিপত্র](https://isabelle.in.tum.de/documentation.html)
+- [Documentation](https://isabelle.in.tum.de/documentation.html)
-**Rocq** - _Rocq একটি ইন্টারেক্টিভ থিওরেম প্রোভার যা আপনাকে থিওরেম ব্যবহার করে প্রোগ্রাম সংজ্ঞায়িত করতে এবং ইন্টারেক্টিভভাবে সঠিকতার মেশিন-চেকড প্রমাণ তৈরি করতে দেয়।_
+**Rocq** - _Rocq হলো একটি ইন্টারেক্টিভ থিওরেম প্রুভার যা আপনাকে থিওরেম ব্যবহার করে প্রোগ্রাম সংজ্ঞায়িত করতে এবং ইন্টারেক্টিভভাবে সঠিকতার মেশিন-চেকড প্রমাণ তৈরি করতে দেয়।_
- [GitHub](https://github.com/rocq-prover/rocq)
-- [নথিপত্র](https://rocq-prover.org/docs)
+- [Documentation](https://rocq-prover.org/docs)
-### স্মার্ট কন্ট্র্যাক্টে দুর্বল প্যাটার্ন সনাক্ত করার জন্য সিম্বলিক এক্সিকিউশন-ভিত্তিক টুলস {#symbolic-execution-tools}
+### স্মার্ট কন্ট্রাক্টে দুর্বল প্যাটার্ন শনাক্ত করার জন্য সিম্বলিক এক্সিকিউশন-ভিত্তিক টুল {#symbolic-execution-tools}
-**Manticore** - _*সিম্বলিক এক্সিকিউশনের উপর ভিত্তি করে EVM বাইটকোড বিশ্লেষণের জন্য একটি টুল।*_
+**Manticore** - _*সিম্বলিক এক্সিকিউশনের ওপর ভিত্তি করে EVM বাইটকোড বিশ্লেষণ করার একটি টুল।*_
- [GitHub](https://github.com/trailofbits/manticore)
-- [নথিপত্র](https://github.com/trailofbits/manticore/wiki)
+- [Documentation](https://github.com/trailofbits/manticore/wiki)
-**hevm** - __hevm হল EVM বাইটকোডের জন্য একটি সিম্বলিক এক্সিকিউশন ইঞ্জিন এবং ইকুইভ্যালেন্স চেকার।__
+**hevm** - _*hevm হলো EVM বাইটকোডের জন্য একটি সিম্বলিক এক্সিকিউশন ইঞ্জিন এবং ইকুইভ্যালেন্স চেকার।*_
- [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm)
-**Mythril** - _ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টে দুর্বলতা সনাক্ত করার জন্য একটি সিম্বলিক এক্সিকিউশন টুল_
+**Mythril** - _ইথিরিয়াম স্মার্ট কন্ট্রাক্টে দুর্বলতা শনাক্ত করার জন্য একটি সিম্বলিক এক্সিকিউশন টুল_
- [GitHub](https://github.com/ConsenSys/mythril-classic)
-- [নথিপত্র](https://mythril-classic.readthedocs.io/en/develop/)
+- [Documentation](https://mythril-classic.readthedocs.io/en/develop/)
## আরও পড়ুন {#further-reading}
-- [স্মার্ট কন্ট্র্যাক্টের আনুষ্ঠানিক যাচাইকরণ কীভাবে কাজ করে](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/)
-- [কীভাবে আনুষ্ঠানিক যাচাইকরণ ত্রুটিহীন স্মার্ট কন্ট্র্যাক্ট নিশ্চিত করতে পারে](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1)
-- [ইথেরিয়াম ইকোসিস্টেমে আনুষ্ঠানিক যাচাইকরণ প্রকল্পগুলির একটি সংক্ষিপ্ত বিবরণ](https://github.com/leonardoalt/ethereum_formal_verification_overview)
-- [ইথেরিয়াম 2.0 ডিপোজিট স্মার্ট কন্ট্র্যাক্টের এন্ড-টু-এন্ড আনুষ্ঠানিক যাচাইকরণ](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/)
-- [বিশ্বের সবচেয়ে জনপ্রিয় স্মার্ট কন্ট্র্যাক্টের আনুষ্ঠানিক যাচাইকরণ](https://www.zellic.io/blog/formal-verification-weth)
-- [SMTChecker এবং আনুষ্ঠানিক যাচাইকরণ](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html)
+- [স্মার্ট কন্ট্রাক্টের ফরমাল ভেরিফিকেশন কীভাবে কাজ করে](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/)
+- [কীভাবে ফরমাল ভেরিফিকেশন ত্রুটিহীন স্মার্ট কন্ট্রাক্ট নিশ্চিত করতে পারে](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1)
+- [ইথিরিয়াম ইকোসিস্টেমে ফরমাল ভেরিফিকেশন প্রজেক্টের একটি ওভারভিউ](https://github.com/leonardoalt/ethereum_formal_verification_overview)
+- [ইথিরিয়াম ২.০ ডিপোজিট স্মার্ট কন্ট্রাক্টের এন্ড-টু-এন্ড ফরমাল ভেরিফিকেশন](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/)
+- [বিশ্বের সবচেয়ে জনপ্রিয় স্মার্ট কন্ট্রাক্ট ফরমালভাবে যাচাই করা](https://www.zellic.io/blog/formal-verification-weth)
+- [SMTChecker এবং ফরমাল ভেরিফিকেশন](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/index.md b/public/content/translations/bn/developers/docs/smart-contracts/index.md
index 6ac2398a86f..65385f72fb7 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/index.md
@@ -1,59 +1,59 @@
---
-title: "স্মার্ট কন্ট্র্যাক্টের ভূমিকা"
-description: "স্মার্ট কন্ট্র্যাক্ট-এর একটি সংক্ষিপ্ত বিবরণ, তাদের অনন্য বৈশিষ্ট্য এবং সীমাবদ্ধতার উপর আলোকপাত করে।"
+title: স্মার্ট কন্ট্রাক্ট পরিচিতি
+description: স্মার্ট কন্ট্রাক্টগুলোর একটি ওভারভিউ, যেখানে এগুলোর অনন্য বৈশিষ্ট্য এবং সীমাবদ্ধতার ওপর ফোকাস করা হয়েছে।
lang: bn
---
-## স্মার্ট কন্ট্র্যাক্ট কি? {#what-is-a-smart-contract}
+## স্মার্ট কন্ট্রাক্ট কী? {#what-is-a-smart-contract}
-"স্মার্ট কন্ট্র্যাক্ট" হলো একটি প্রোগ্রাম যা Ethereum ব্লকচেইনে চলে। এটি কোড (এর ফাংশন) এবং ডেটা (এর স্টেট)-এর একটি সংগ্রহ যা Ethereum ব্লকচেইনের একটি নির্দিষ্ট ঠিকানায় থাকে।
+একটি "স্মার্ট কন্ট্রাক্ট" হলো মূলত একটি প্রোগ্রাম যা [Ethereum](/) ব্লকচেইন-এ রান করে। এটি হলো কোড (এর ফাংশন) এবং ডেটার (এর স্টেট) একটি সংগ্রহ, যা Ethereum ব্লকচেইন-এর একটি নির্দিষ্ট এডড্রেস-এ অবস্থান করে।
-স্মার্ট কন্ট্র্যাক্ট হলো এক ধরনের [Ethereum অ্যাকাউন্ট](/developers/docs/accounts/)। এর মানে হলো তাদের একটি ব্যালেন্স আছে এবং লেনদেনের লক্ষ্য হতে পারে। তবে এগুলো কোনো ব্যবহারকারী দ্বারা নিয়ন্ত্রিত হয় না, বরং এগুলো নেটওয়ার্কে স্থাপন করা হয় এবং প্রোগ্রাম অনুযায়ী চলে। ব্যবহারকারীর অ্যাকাউন্টগুলি তখন স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারে এমন লেনদেন জমা দিয়ে যা স্মার্ট কন্ট্র্যাক্টে সংজ্ঞায়িত একটি ফাংশন সম্পাদন করে। স্মার্ট কন্ট্র্যাক্টগুলি একটি নিয়মিত চুক্তির মতো নিয়ম সংজ্ঞায়িত করতে পারে এবং কোডের মাধ্যমে স্বয়ংক্রিয়ভাবে সেগুলি প্রয়োগ করতে পারে। স্মার্ট কন্ট্র্যাক্ট ডিফল্টরূপে মুছে ফেলা যায় না এবং তাদের সাথে ইন্টারঅ্যাকশন অপরিবর্তনীয়।
+স্মার্ট কন্ট্রাক্ট হলো এক ধরনের [Ethereum একাউন্ট](/developers/docs/accounts/)। এর মানে হলো এগুলোর একটি ব্যালেন্স থাকে এবং এগুলো লেনদেন-এর লক্ষ্য হতে পারে। তবে এগুলো কোনো ব্যবহারকারী দ্বারা নিয়ন্ত্রিত হয় না, বরং এগুলো নেটওয়ার্ক-এ ডিপ্লয় করা হয় এবং প্রোগ্রাম অনুযায়ী রান করে। ব্যবহারকারীর একাউন্টগুলো এরপর স্মার্ট কন্ট্রাক্ট-এ সংজ্ঞায়িত কোনো ফাংশন এক্সিকিউট করার জন্য লেনদেন সাবমিট করে স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করতে পারে। স্মার্ট কন্ট্রাক্টগুলো সাধারণ চুক্তির মতো নিয়ম নির্ধারণ করতে পারে এবং কোডের মাধ্যমে স্বয়ংক্রিয়ভাবে সেগুলো প্রয়োগ করতে পারে। ডিফল্টভাবে স্মার্ট কন্ট্রাক্টগুলো মুছে ফেলা যায় না এবং এগুলোর সাথে ইন্টারঅ্যাকশনগুলো অপরিবর্তনীয় (irreversible)।
## পূর্বশর্ত {#prerequisites}
-আপনি যদি সবে শুরু করেন বা একটি কম প্রযুক্তিগত ভূমিকা খুঁজছেন, আমরা আমাদের [স্মার্ট কন্ট্র্যাক্টের ভূমিকা](/smart-contracts/) পড়ার পরামর্শ দিই।
+আপনি যদি সবেমাত্র শুরু করে থাকেন বা কম প্রযুক্তিগত পরিচিতি খুঁজছেন, তবে আমরা আমাদের [স্মার্ট কন্ট্রাক্ট পরিচিতি](/smart-contracts/) পড়ার পরামর্শ দিই।
-স্মার্ট কন্ট্র্যাক্টের জগতে প্রবেশ করার আগে নিশ্চিত করুন যে আপনি [অ্যাকাউন্ট](/developers/docs/accounts/), [লেনদেন](/developers/docs/transactions/) এবং [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/) সম্পর্কে পড়েছেন।
+স্মার্ট কন্ট্রাক্ট-এর জগতে প্রবেশ করার আগে নিশ্চিত করুন যে আপনি [একাউন্ট](/developers/docs/accounts/), [লেনদেন](/developers/docs/transactions/) এবং [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/) সম্পর্কে পড়েছেন।
## একটি ডিজিটাল ভেন্ডিং মেশিন {#a-digital-vending-machine}
-[নিক জাবো](https://unenumerated.blogspot.com/) দ্বারা বর্ণিত একটি ভেন্ডিং মেশিন সম্ভবত স্মার্ট কন্ট্র্যাক্টের জন্য সেরা রূপক। সঠিক ইনপুট দিলে, একটি নির্দিষ্ট আউটপুট নিশ্চিত।
+স্মার্ট কন্ট্রাক্ট-এর জন্য সম্ভবত সেরা রূপক হলো একটি ভেন্ডিং মেশিন, যেমনটি [Nick Szabo](https://unenumerated.blogspot.com/) বর্ণনা করেছেন। সঠিক ইনপুট দিলে একটি নির্দিষ্ট আউটপুট নিশ্চিত করা যায়।
-একটি ভেন্ডিং মেশিন থেকে একটি স্ন্যাক পেতে:
+ভেন্ডিং মেশিন থেকে স্ন্যাকস পেতে:
```
money + snack selection = snack dispensed
```
-এই যুক্তিটি ভেন্ডিং মেশিনে প্রোগ্রাম করা আছে।
+এই লজিকটি ভেন্ডিং মেশিনে প্রোগ্রাম করা থাকে।
-একটি স্মার্ট কন্ট্র্যাক্ট, একটি ভেন্ডিং মেশিনের মতো, এর মধ্যে যুক্তি প্রোগ্রাম করা থাকে। এখানে একটি সহজ উদাহরণ দেওয়া হল যে এই ভেন্ডিং মেশিনটি যদি Solidity-তে লেখা একটি স্মার্ট কন্ট্র্যাক্ট হতো তবে কেমন দেখাতো:
+একটি স্মার্ট কন্ট্রাক্ট-এ ভেন্ডিং মেশিনের মতোই লজিক প্রোগ্রাম করা থাকে। এই ভেন্ডিং মেশিনটি Solidity-তে লেখা একটি স্মার্ট কন্ট্রাক্ট হলে কেমন দেখাতো, তার একটি সহজ উদাহরণ নিচে দেওয়া হলো:
```solidity
pragma solidity 0.8.7;
contract VendingMachine {
- // Declare state variables of the contract
+ // কন্ট্রাক্টের স্টেট ভেরিয়েবলগুলো ঘোষণা করুন
address public owner;
mapping (address => uint) public cupcakeBalances;
- // When 'VendingMachine' contract is deployed:
- // 1. set the deploying address as the owner of the contract
- // 2. set the deployed smart contract's cupcake balance to 100
+ // যখন 'VendingMachine' কন্ট্রাক্ট ডিপ্লয় করা হয়:
+ // ১. ডিপ্লয়িং অ্যাড্রেসকে কন্ট্রাক্টের মালিক হিসেবে সেট করুন
+ // ২. ডিপ্লয় করা স্মার্ট কন্ট্রাক্টের কাপকেক ব্যালেন্স ১০০-তে সেট করুন
constructor() {
owner = msg.sender;
cupcakeBalances[address(this)] = 100;
}
- // Allow the owner to increase the smart contract's cupcake balance
+ // মালিককে স্মার্ট কন্ট্রাক্টের কাপকেক ব্যালেন্স বাড়ানোর অনুমতি দিন
function refill(uint amount) public {
require(msg.sender == owner, "Only the owner can refill.");
cupcakeBalances[address(this)] += amount;
}
- // Allow anyone to purchase cupcakes
+ // যে কাউকে কাপকেক কেনার অনুমতি দিন
function purchase(uint amount) public payable {
require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
@@ -63,50 +63,54 @@ contract VendingMachine {
}
```
-যেভাবে একটি ভেন্ডিং মেশিন একজন বিক্রেতা কর্মচারীর প্রয়োজনীয়তা দূর করে, সেভাবেই স্মার্ট কন্ট্র্যাক্ট অনেক শিল্পে মধ্যস্থতাকারীদের প্রতিস্থাপন করতে পারে।
+ভেন্ডিং মেশিন যেমন বিক্রেতা কর্মীর প্রয়োজনীয়তা দূর করে, তেমনি স্মার্ট কন্ট্রাক্টগুলো অনেক শিল্পে মধ্যস্থতাকারীদের প্রতিস্থাপন করতে পারে।
-## অনুমতিহীন {#permissionless}
+## পারমিশনলেস {#permissionless}
-যে কেউ একটি স্মার্ট কন্ট্র্যাক্ট লিখতে এবং নেটওয়ার্কে এটি স্থাপন করতে পারে। আপনার শুধু একটি [স্মার্ট কন্ট্র্যাক্ট ল্যাঙ্গুয়েজ](/developers/docs/smart-contracts/languages/)-এ কোড করতে শেখা প্রয়োজন এবং আপনার কন্ট্র্যাক্ট স্থাপন করার জন্য যথেষ্ট ETH থাকতে হবে। একটি স্মার্ট কন্ট্র্যাক্ট স্থাপন করা প্রযুক্তিগতভাবে একটি লেনদেন, তাই আপনাকে [গ্যাস](/developers/docs/gas/) দিতে হবে ঠিক যেমন একটি সাধারণ ETH স্থানান্তরের জন্য গ্যাস দিতে হয়। তবে, কন্ট্র্যাক্ট স্থাপনের জন্য গ্যাসের খরচ অনেক বেশি।
+যে কেউ একটি স্মার্ট কন্ট্রাক্ট লিখতে পারে এবং এটি নেটওয়ার্ক-এ ডিপ্লয় করতে পারে। আপনাকে শুধু একটি [স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ](/developers/docs/smart-contracts/languages/)-এ কোড করা শিখতে হবে এবং আপনার কন্ট্রাক্ট ডিপ্লয় করার জন্য পর্যাপ্ত ETH থাকতে হবে। একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা প্রযুক্তিগতভাবে একটি লেনদেন, তাই একটি সাধারণ ETH ট্রান্সফারের জন্য যেমন গ্যাস ফি দিতে হয়, ঠিক একইভাবে আপনাকে [গ্যাস](/developers/docs/gas/) প্রদান করতে হবে। তবে, কন্ট্রাক্ট ডিপ্লয়মেন্টের জন্য গ্যাস খরচ অনেক বেশি।
-স্মার্ট কন্ট্র্যাক্ট লেখার জন্য Ethereum-এর ডেভেলপার-বান্ধব ভাষা রয়েছে:
+স্মার্ট কন্ট্রাক্ট লেখার জন্য Ethereum-এ ডেভেলপার-বান্ধব ল্যাঙ্গুয়েজ রয়েছে:
- Solidity
- Vyper
-[ভাষা সম্পর্কে আরও জানুন](/developers/docs/smart-contracts/languages/)
+[ল্যাঙ্গুয়েজ সম্পর্কে আরও জানুন](/developers/docs/smart-contracts/languages/)
-তবে, এগুলি স্থাপন করার আগে কম্পাইল করতে হবে যাতে Ethereum-এর ভার্চুয়াল মেশিন কন্ট্র্যাক্টটিকে ব্যাখ্যা এবং সংরক্ষণ করতে পারে। [কম্পাইলেশন সম্পর্কে আরও জানুন](/developers/docs/smart-contracts/compiling/)
+তবে, এগুলো ডিপ্লয় করার আগে অবশ্যই কম্পাইল করতে হবে যাতে ইথিরিয়াম ভার্চুয়াল মেশিন কন্ট্রাক্টটি বুঝতে এবং স্টোর করতে পারে। [কম্পাইলেশন সম্পর্কে আরও জানুন](/developers/docs/smart-contracts/compiling/)
## কম্পোজেবিলিটি {#composability}
-স্মার্ট কন্ট্র্যাক্টগুলি Ethereum-এ পাবলিক এবং সেগুলিকে ওপেন API হিসাবে ভাবা যেতে পারে। এর মানে হল আপনি আপনার নিজের স্মার্ট কন্ট্র্যাক্টে অন্যান্য স্মার্ট কন্ট্র্যাক্টকে কল করতে পারেন যা সম্ভব তার পরিধিকে ব্যাপকভাবে প্রসারিত করতে। কন্ট্র্যাক্টগুলি এমনকি অন্যান্য কন্ট্র্যাক্টও স্থাপন করতে পারে।
+স্মার্ট কন্ট্রাক্টগুলো Ethereum-এ পাবলিক থাকে এবং এগুলোকে ওপেন API হিসেবে বিবেচনা করা যেতে পারে। এর মানে হলো আপনি আপনার নিজের স্মার্ট কন্ট্রাক্ট-এ অন্যান্য স্মার্ট কন্ট্রাক্টগুলোকে কল করতে পারেন, যা এর সম্ভাবনাকে ব্যাপকভাবে প্রসারিত করে। এমনকি কন্ট্রাক্টগুলো অন্যান্য কন্ট্রাক্টও ডিপ্লয় করতে পারে।
-[স্মার্ট কন্ট্র্যাক্ট কম্পোজেবিলিটি](/developers/docs/smart-contracts/composability/) সম্পর্কে আরও জানুন।
+[স্মার্ট কন্ট্রাক্ট কম্পোজেবিলিটি](/developers/docs/smart-contracts/composability/) সম্পর্কে আরও জানুন।
## সীমাবদ্ধতা {#limitations}
-স্মার্ট কন্ট্র্যাক্টগুলি একা "বাস্তব-বিশ্বের" ঘটনা সম্পর্কে তথ্য পেতে পারে না কারণ তারা অফচেইন উৎস থেকে ডেটা পুনরুদ্ধার করতে পারে না। এর মানে হল তারা বাস্তব জগতের ঘটনাগুলিতে সাড়া দিতে পারে না। এটি ডিজাইন দ্বারাই করা হয়েছে। বাহ্যিক তথ্যের উপর নির্ভর করা কনসেন্সাসকে বিপন্ন করতে পারে, যা নিরাপত্তা এবং বিকেন্দ্রীকরণের জন্য গুরুত্বপূর্ণ।
+স্মার্ট কন্ট্রাক্টগুলো নিজে থেকে "বাস্তব-জগতের" ইভেন্ট সম্পর্কে তথ্য পেতে পারে না কারণ এগুলো অফচেইন সোর্স থেকে ডেটা সংগ্রহ করতে পারে না। এর মানে হলো এগুলো বাস্তব জগতের ইভেন্টগুলোতে সাড়া দিতে পারে না। এটি এভাবেই ডিজাইন করা হয়েছে। বাহ্যিক তথ্যের ওপর নির্ভর করলে কনসেন্সাস বিপন্ন হতে পারে, যা নিরাপত্তা এবং ডিসেন্ট্রালাইজেশন-এর জন্য গুরুত্বপূর্ণ।
-তবে, ব্লকচেইন অ্যাপ্লিকেশনগুলির জন্য অফচেইন ডেটা ব্যবহার করতে পারাটা গুরুত্বপূর্ণ। সমাধান হল [ ওরাকল](/developers/docs/oracles/) যা এমন টুলস যা অফচেইন ডেটা গ্রহণ করে এবং স্মার্ট কন্ট্র্যাক্ট-এর জন্য উপলব্ধ করে।
+তবে, ব্লকচেইন অ্যাপ্লিকেশনগুলোর জন্য অফচেইন ডেটা ব্যবহার করতে পারাটা গুরুত্বপূর্ণ। এর সমাধান হলো [ওরাকল](/developers/docs/oracles/), যা এমন কিছু টুল যা অফচেইন ডেটা গ্রহণ করে এবং তা স্মার্ট কন্ট্রাক্ট-এর জন্য সহজলভ্য করে তোলে।
-স্মার্ট কন্ট্র্যাক্টের আরেকটি সীমাবদ্ধতা হল সর্বোচ্চ কন্ট্র্যাক্টের আকার। একটি স্মার্ট কন্ট্র্যাক্ট সর্বোচ্চ 24KB হতে পারে নতুবা এটি গ্যাসের অভাবে চলবে না। এটি [The Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535) ব্যবহার করে এড়ানো যেতে পারে।
+স্মার্ট কন্ট্রাক্ট-এর আরেকটি সীমাবদ্ধতা হলো এর সর্বোচ্চ কন্ট্রাক্ট সাইজ। একটি স্মার্ট কন্ট্রাক্ট সর্বোচ্চ 24KB হতে পারে, অন্যথায় এর গ্যাস শেষ হয়ে যাবে। [The Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535) ব্যবহার করে এই সমস্যা এড়ানো যেতে পারে।
-## মাল্টিসিগ কন্ট্র্যাক্ট {#multisig}
+## মাল্টিসিগ কন্ট্রাক্ট {#multisig}
-মাল্টিসিগ (একাধিক-স্বাক্ষর) কন্ট্র্যাক্টগুলি হলো স্মার্ট কন্ট্র্যাক্ট অ্যাকাউন্ট যার একটি লেনদেন সম্পাদনের জন্য একাধিক বৈধ স্বাক্ষর প্রয়োজন। প্রচুর পরিমাণে ইথার বা অন্যান্য টোকেন ধারণকারী কন্ট্র্যাক্টের জন্য ব্যর্থতার একক পয়েন্ট এড়াতে এটি খুব দরকারী। মাল্টিসিগগুলি কন্ট্র্যাক্ট সম্পাদন এবং কী ম্যানেজমেন্টের দায়িত্ব একাধিক পক্ষের মধ্যে ভাগ করে দেয় এবং একটিমাত্র প্রাইভেট কী-এর ক্ষতি থেকে তহবিলের অপরিবর্তনীয় ক্ষতি প্রতিরোধ করে। এই কারণগুলির জন্য, মাল্টিসিগ কন্ট্র্যাক্টগুলি সাধারণ DAO গভর্নেন্সের জন্য ব্যবহার করা যেতে পারে। মাল্টিসিগগুলি কার্যকর করার জন্য M সম্ভাব্য গ্রহণযোগ্য স্বাক্ষরগুলির মধ্যে N টি স্বাক্ষর প্রয়োজন (যেখানে N ≤ M, এবং M > 1)। `N = 3, M = 5` এবং `N = 4, M = 7` সাধারণত ব্যবহৃত হয়। একটি 4/7 মাল্টিসিগ-এর জন্য সাতটি সম্ভাব্য বৈধ স্বাক্ষরের মধ্যে চারটি প্রয়োজন। এর মানে হল তিনটি স্বাক্ষর হারিয়ে গেলেও তহবিল এখনও পুনরুদ্ধারযোগ্য। এই ক্ষেত্রে, এর মানে হল যে কন্ট্র্যাক্ট কার্যকর করার জন্য বেশিরভাগ কী-হোল্ডারদের অবশ্যই সম্মত হতে হবে এবং স্বাক্ষর করতে হবে।
+মাল্টিসিগ (মাল্টিপল-সিগনেচার) কন্ট্রাক্ট হলো এমন স্মার্ট কন্ট্রাক্ট একাউন্ট, যেগুলোতে একটি লেনদেন এক্সিকিউট করার জন্য একাধিক বৈধ সিগনেচারের প্রয়োজন হয়। প্রচুর পরিমাণে ইথার বা অন্যান্য টোকেন ধারণকারী কন্ট্রাক্টগুলোর ক্ষেত্রে সিঙ্গেল পয়েন্ট অফ ফেইলিওর এড়াতে এটি খুবই কার্যকর। মাল্টিসিগগুলো একাধিক পক্ষের মধ্যে কন্ট্রাক্ট এক্সিকিউশন এবং কি (key) ম্যানেজমেন্টের দায়িত্ব ভাগ করে দেয় এবং একটি মাত্র প্রাইভেট কি হারানোর কারণে ফান্ডের অপরিবর্তনীয় ক্ষতি রোধ করে। এসব কারণে, মাল্টিসিগ কন্ট্রাক্টগুলো সাধারণ DAO গভর্নেন্স-এর জন্য ব্যবহার করা যেতে পারে। এক্সিকিউট করার জন্য মাল্টিসিগগুলোতে M সংখ্যক সম্ভাব্য গ্রহণযোগ্য সিগনেচারের মধ্যে N সংখ্যক সিগনেচার প্রয়োজন হয় (যেখানে N ≤ M, এবং M > 1)। সাধারণত `N = 3, M = 5` এবং `N = 4, M = 7` ব্যবহৃত হয়। একটি 4/7 মাল্টিসিগ-এ সাতটি সম্ভাব্য বৈধ সিগনেচারের মধ্যে চারটির প্রয়োজন হয়। এর মানে হলো তিনটি সিগনেচার হারিয়ে গেলেও ফান্ড পুনরুদ্ধার করা সম্ভব। এই ক্ষেত্রে, এর মানে এটাও যে কন্ট্রাক্টটি এক্সিকিউট করার জন্য বেশিরভাগ কি-হোল্ডারকে (key-holders) একমত হতে হবে এবং সাইন করতে হবে।
-## স্মার্ট কন্ট্র্যাক্ট রিসোর্স {#smart-contract-resources}
+## স্মার্ট কন্ট্রাক্ট রিসোর্স {#smart-contract-resources}
-**OpenZeppelin Contracts -** **_সুরক্ষিত স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্টের জন্য লাইব্রেরি।_**
+**OpenZeppelin Contracts -** **_নিরাপদ স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের জন্য লাইব্রেরি।_**
- [openzeppelin.com/contracts/](https://openzeppelin.com/contracts/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
-- [কমিউনিটি ফোরাম](https://forum.openzeppelin.com/c/general/16)
+- [Community Forum](https://forum.openzeppelin.com/c/general/16)
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- [Coinbase: স্মার্ট কন্ট্র্যাক্ট কি?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract)
-- [Chainlink: স্মার্ট কন্ট্র্যাক্ট কি?](https://chain.link/education/smart-contracts)
-- [ভিডিও: সহজ ভাষায় ব্যাখ্যা - স্মার্ট কন্ট্র্যাক্ট](https://youtu.be/ZE2HxTmxfrI)
+- [Coinbase: স্মার্ট কন্ট্রাক্ট কী?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract)
+- [Chainlink: স্মার্ট কন্ট্রাক্ট কী?](https://chain.link/education/smart-contracts)
+- [Video: সহজভাবে ব্যাখ্যা করা - স্মার্ট কন্ট্রাক্ট](https://youtu.be/ZE2HxTmxfrI)
- [Cyfrin Updraft: Web3 লার্নিং এবং অডিটিং প্ল্যাটফর্ম](https://updraft.cyfrin.io)
+
+## টিউটোরিয়াল: Ethereum-এ স্মার্ট কন্ট্রাক্ট সিগনেচার (EIP-1271) {#tutorials}
+
+- [EIP-1271: স্মার্ট কন্ট্রাক্ট সিগনেচার সাইন এবং ভেরিফাই করা](/developers/tutorials/eip-1271-smart-contract-signatures/) _– কীভাবে EIP-1271 স্মার্ট কন্ট্রাক্টগুলোকে সিগনেচার ভেরিফাই করতে সক্ষম করে, সাথে Safe ইমপ্লিমেন্টেশনের একটি ওয়াকথ্রু।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/languages/index.md b/public/content/translations/bn/developers/docs/smart-contracts/languages/index.md
index 300abaee9ef..fdaa66529ca 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/languages/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/languages/index.md
@@ -1,79 +1,79 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট ল্যাঙ্গুয়েজ"
-description: "দুটি প্রধান স্মার্ট কন্ট্র্যাক্ট ল্যাঙ্গুয়েজ – Solidity এবং Vyper-এর একটি সংক্ষিপ্ত বিবরণ এবং তুলনা।"
+title: স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ
+description: দুটি প্রধান স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ – Solidity এবং Vyper-এর একটি ওভারভিউ এবং তুলনা।
lang: bn
---
-Ethereum-এর একটি চমৎকার দিক হলো, স্মার্ট কন্ট্র্যাক্টগুলোকে তুলনামূলকভাবে ডেভেলপার-বান্ধব ল্যাঙ্গুয়েজ ব্যবহার করে প্রোগ্রাম করা যায়। আপনি যদি Python বা যেকোনো [কার্লি-ব্র্যাকেট ল্যাঙ্গুয়েজ](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages)-এ অভিজ্ঞ হন, তাহলে আপনি পরিচিত সিনট্যাক্সসহ একটি ল্যাঙ্গুয়েজ খুঁজে পেতে পারেন।
+[Ethereum](/)-এর একটি দারুণ দিক হলো স্মার্ট কন্ট্রাক্টগুলো তুলনামূলকভাবে ডেভেলপার-বান্ধব ল্যাঙ্গুয়েজ ব্যবহার করে প্রোগ্রাম করা যায়। আপনার যদি Python বা কোনো [কার্লি-ব্র্যাকেট ল্যাঙ্গুয়েজ](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages)-এর অভিজ্ঞতা থাকে, তবে আপনি পরিচিত সিনট্যাক্স সহ একটি ল্যাঙ্গুয়েজ খুঁজে পেতে পারেন।
-দুটি সর্বাধিক সক্রিয় এবং রক্ষণাবেক্ষণ করা ল্যাঙ্গুয়েজ হলো:
+সবচেয়ে সক্রিয় এবং রক্ষণাবেক্ষণ করা দুটি ল্যাঙ্গুয়েজ হলো:
- Solidity
- Vyper
-Remix IDE, Solidity এবং Vyper উভয় ক্ষেত্রেই কন্ট্র্যাক্ট তৈরি এবং পরীক্ষা করার জন্য একটি ব্যাপক ডেভেলপমেন্ট এনভায়রনমেন্ট সরবরাহ করে। কোডিং শুরু করতে [ইন-ব্রাউজার Remix IDE ব্যবহার করে দেখুন](https://remix.ethereum.org)।
+Remix IDE, Solidity এবং Vyper উভয় ক্ষেত্রেই কন্ট্রাক্ট তৈরি এবং পরীক্ষা করার জন্য একটি বিস্তৃত ডেভেলপমেন্ট পরিবেশ প্রদান করে। কোডিং শুরু করতে [ব্রাউজার-ভিত্তিক Remix IDE ব্যবহার করে দেখুন](https://remix.ethereum.org)।
-আরও অভিজ্ঞ ডেভেলপাররাও Yul, [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)-এর জন্য একটি মধ্যবর্তী ল্যাঙ্গুয়েজ, অথবা Yul+, যা Yul-এর একটি এক্সটেনশন, ব্যবহার করতে চাইতে পারেন।
+আরও অভিজ্ঞ ডেভেলপাররা হয়তো Yul ব্যবহার করতে চাইতে পারেন, যা [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)-এর জন্য একটি ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ, অথবা Yul+, যা Yul-এর একটি এক্সটেনশন।
-আপনি যদি কৌতূহলী হন এবং এমন নতুন ল্যাঙ্গুয়েজ পরীক্ষা করতে সাহায্য করতে চান যা এখনও ব্যাপকভাবে ডেভলপ করা হচ্ছে, তাহলে আপনি Fe নিয়ে পরীক্ষা করতে পারেন, এটি একটি উদীয়মান স্মার্ট কন্ট্র্যাক্ট ল্যাঙ্গুয়েজ যা বর্তমানে এখনও শৈশবাবস্থায় রয়েছে।
+আপনি যদি কৌতূহলী হন এবং এখনও ব্যাপকভাবে ডেভেলপমেন্টের অধীনে থাকা নতুন ল্যাঙ্গুয়েজগুলো পরীক্ষা করতে সাহায্য করতে চান, তবে আপনি Fe নিয়ে পরীক্ষা-নিরীক্ষা করতে পারেন, যা একটি উদীয়মান স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ এবং বর্তমানে এটি প্রাথমিক পর্যায়ে রয়েছে।
## পূর্বশর্ত {#prerequisites}
-প্রোগ্রামিং ল্যাঙ্গুয়েজের, বিশেষ করে JavaScript বা Python-এর পূর্ববর্তী জ্ঞান, আপনাকে স্মার্ট কন্ট্র্যাক্ট ল্যাঙ্গুয়েজগুলোর পার্থক্য বুঝতে সাহায্য করতে পারে। ল্যাঙ্গুয়েজগুলোর তুলনার গভীরে যাওয়ার আগে আমরা আপনাকে একটি ধারণা হিসেবে স্মার্ট কন্ট্র্যাক্টগুলো বোঝারও পরামর্শ দিই। [স্মার্ট কন্ট্র্যাক্টের ভূমিকা](/developers/docs/smart-contracts/)।
+প্রোগ্রামিং ল্যাঙ্গুয়েজ, বিশেষ করে JavaScript বা Python-এর পূর্ববর্তী জ্ঞান আপনাকে স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজগুলোর পার্থক্য বুঝতে সাহায্য করতে পারে। ল্যাঙ্গুয়েজের তুলনার গভীরে যাওয়ার আগে আমরা আপনাকে একটি ধারণা হিসেবে স্মার্ট কন্ট্রাক্টগুলো বোঝার পরামর্শ দিই। [স্মার্ট কন্ট্রাক্ট পরিচিতি](/developers/docs/smart-contracts/)।
## Solidity {#solidity}
-- স্মার্ট কন্ট্র্যাক্ট বাস্তবায়নের জন্য অবজেক্ট-ওরিয়েন্টেড, হাই-লেভেল ল্যাঙ্গুয়েজ।
-- কার্লি-ব্র্যাকেট ল্যাঙ্গুয়েজ যা C++ দ্বারা সবচেয়ে গভীরভাবে প্রভাবিত।
-- স্ট্যাটিক্যালি টাইপড (কম্পাইল করার সময় একটি ভেরিয়েবলের টাইপ জানা যায়)।
+- স্মার্ট কন্ট্রাক্ট বাস্তবায়নের জন্য অবজেক্ট-ওরিয়েন্টেড, হাই-লেভেল ল্যাঙ্গুয়েজ।
+- কার্লি-ব্র্যাকেট ল্যাঙ্গুয়েজ যা C++ দ্বারা সবচেয়ে গভীরভাবে প্রভাবিত হয়েছে।
+- স্ট্যাটিক্যালি টাইপড (কম্পাইল করার সময় ভেরিয়েবলের টাইপ জানা যায়)।
- সাপোর্ট করে:
- - ইনহেরিটেন্স (আপনি অন্যান্য কন্ট্র্যাক্টকে প্রসারিত করতে পারেন)।
- - লাইব্রেরি (আপনি পুনঃব্যবহারযোগ্য কোড তৈরি করতে পারেন যা আপনি বিভিন্ন কন্ট্র্যাক্ট থেকে কল করতে পারেন – যেমন অন্যান্য অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজে একটি স্ট্যাটিক ক্লাসের স্ট্যাটিক ফাংশন)।
- - জটিল ব্যবহারকারী-সংজ্ঞায়িত টাইপ।
+ - ইনহেরিটেন্স (আপনি অন্যান্য কন্ট্রাক্ট এক্সটেন্ড করতে পারেন)।
+ - লাইব্রেরি (আপনি পুনরায় ব্যবহারযোগ্য কোড তৈরি করতে পারেন যা আপনি বিভিন্ন কন্ট্রাক্ট থেকে কল করতে পারেন – যেমন অন্যান্য অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজে স্ট্যাটিক ক্লাসের স্ট্যাটিক ফাংশন)।
+ - জটিল ইউজার-ডিফাইনড টাইপ।
-### গুরুত্বপূর্ণ লিঙ্ক {#important-links}
+### গুরুত্বপূর্ণ লিংক {#important-links}
-- [নথিপত্র](https://docs.soliditylang.org/en/latest/)
+- [ডকুমেন্টেশন](https://docs.soliditylang.org/en/latest/)
- [Solidity ল্যাঙ্গুয়েজ পোর্টাল](https://soliditylang.org/)
-- [Solidity by Example](https://docs.soliditylang.org/en/latest/solidity-by-example.html)
+- [Solidity বাই এক্সাম্পল](https://docs.soliditylang.org/en/latest/solidity-by-example.html)
- [GitHub](https://github.com/ethereum/solidity/)
-- [Solidity Matrix চ্যাটরুম](https://gitter.im/ethereum/solidity) [Solidity Matrix চ্যাটরুম](https://matrix.to/#/#ethereum_solidity:gitter.im)-এর সাথে ব্রিজ করা
+- [Solidity Gitter চ্যাটরুম](https://gitter.im/ethereum/solidity) যা [Solidity Matrix চ্যাটরুম](https://matrix.to/#/#ethereum_solidity:gitter.im)-এর সাথে যুক্ত
- [চিট শিট](https://reference.auditless.com/cheatsheet)
- [Solidity ব্লগ](https://blog.soliditylang.org/)
-- [Solidity টুইটার](https://twitter.com/solidity_lang)
+- [Solidity Twitter](https://twitter.com/solidity_lang)
-### উদাহরণ কন্ট্র্যাক্ট {#example-contract}
+### উদাহরণ কন্ট্রাক্ট {#example-contract}
```solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0;
contract Coin {
- // The keyword "public" makes variables
- // accessible from other contracts
+ // "public" কিওয়ার্ডটি ভেরিয়েবলগুলোকে
+ // অন্যান্য কন্ট্রাক্ট থেকে অ্যাক্সেসযোগ্য করে তোলে
address public minter;
mapping (address => uint) public balances;
- // Events allow clients to react to specific
- // contract changes you declare
+ // ইভেন্টগুলো ক্লায়েন্টদের নির্দিষ্ট
+ // আপনার ঘোষণা করা কন্ট্রাক্ট পরিবর্তনের প্রতি প্রতিক্রিয়া জানাতে দেয়
event Sent(address from, address to, uint amount);
- // Constructor code is only run when the contract
- // is created
+ // কনস্ট্রাক্টর কোড শুধুমাত্র তখনই রান হয় যখন কন্ট্রাক্টটি
+ // তৈরি করা হয়
constructor() {
minter = msg.sender;
}
- // Sends an amount of newly created coins to an address
- // Can only be called by the contract creator
+ // একটি ঠিকানায় নতুন তৈরি করা কয়েনের একটি পরিমাণ পাঠায়
+ // শুধুমাত্র কন্ট্রাক্ট ক্রিয়েটর কল করতে পারেন
function mint(address receiver, uint amount) public {
require(msg.sender == minter);
require(amount < 1e60);
balances[receiver] += amount;
}
- // Sends an amount of existing coins
- // from any caller to an address
+ // বিদ্যমান কয়েনের একটি পরিমাণ পাঠায়
+ // যেকোনো কলার থেকে একটি ঠিকানায়
function send(address receiver, uint amount) public {
require(amount <= balances[msg.sender], "Insufficient balance.");
balances[msg.sender] -= amount;
@@ -83,7 +83,7 @@ contract Coin {
}
```
-এই উদাহরণটি আপনাকে Solidity কন্ট্র্যাক্টের সিনট্যাক্স কেমন সে সম্পর্কে একটি ধারণা দেবে। ফাংশন এবং ভেরিয়েবলগুলোর আরও বিস্তারিত বিবরণের জন্য, [ডকুমেন্টেশন দেখুন](https://docs.soliditylang.org/en/latest/contracts.html)।
+এই উদাহরণটি আপনাকে Solidity কন্ট্রাক্ট সিনট্যাক্স কেমন তা সম্পর্কে একটি ধারণা দেবে। ফাংশন এবং ভেরিয়েবলগুলোর আরও বিস্তারিত বর্ণনার জন্য, [ডকুমেন্টেশন দেখুন](https://docs.soliditylang.org/en/latest/contracts.html)।
## Vyper {#vyper}
@@ -91,147 +91,146 @@ contract Coin {
- স্ট্রং টাইপিং
- ছোট এবং বোধগম্য কম্পাইলার কোড
- দক্ষ বাইটকোড জেনারেশন
-- কন্ট্র্যাক্টগুলোকে আরও সুরক্ষিত এবং অডিট করা সহজ করার লক্ষ্যে এতে ইচ্ছাকৃতভাবে Solidity-এর চেয়ে কম বৈশিষ্ট্য রয়েছে। Vyper সাপোর্ট করে না:
+- কন্ট্রাক্টগুলোকে আরও সুরক্ষিত এবং অডিট করা সহজ করার লক্ষ্যে ইচ্ছাকৃতভাবে Solidity-এর চেয়ে কম ফিচার রাখা হয়েছে। Vyper যা সাপোর্ট করে না:
- মডিফায়ার
- ইনহেরিটেন্স
- ইনলাইন অ্যাসেম্বলি
- ফাংশন ওভারলোডিং
- অপারেটর ওভারলোডিং
- রিকার্সিভ কলিং
- - অসীম দৈর্ঘ্যের লুপ
- - বাইনারি ফিক্সড পয়েন্ট
+ - ইনফিনিট-লেংথ লুপ
+ - বাইনারি ফিক্সড পয়েন্ট
-আরও তথ্যের জন্য, [Vyper-এর মূলনীতি পড়ুন](https://vyper.readthedocs.io/en/latest/index.html)।
+আরও তথ্যের জন্য, [Vyper-এর যৌক্তিকতা পড়ুন](https://vyper.readthedocs.io/en/latest/index.html)।
-### গুরুত্বপূর্ণ লিঙ্ক {#important-links-1}
+### গুরুত্বপূর্ণ লিংক {#important-links-1}
-- [নথিপত্র](https://vyper.readthedocs.io)
-- [Vyper by Example](https://vyper.readthedocs.io/en/latest/vyper-by-example.html)
-- [More Vyper by Example](https://vyper-by-example.org/)
+- [ডকুমেন্টেশন](https://vyper.readthedocs.io)
+- [Vyper বাই এক্সাম্পল](https://vyper.readthedocs.io/en/latest/vyper-by-example.html)
+- [আরও Vyper বাই এক্সাম্পল](https://vyper-by-example.org/)
- [GitHub](https://github.com/vyperlang/vyper)
-- [Vyper কমিউনিটি ডিসকর্ড চ্যাট](https://discord.gg/SdvKC79cJk)
+- [Vyper কমিউনিটি Discord চ্যাট](https://discord.gg/SdvKC79cJk)
- [চিট শিট](https://reference.auditless.com/cheatsheet)
-- [Vyper-এর জন্য স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্ট ফ্রেমওয়ার্ক এবং টুলস](/developers/docs/programming-languages/python/)
-- [VyperPunk - Vyper স্মার্ট কন্ট্র্যাক্ট সুরক্ষিত করতে এবং হ্যাক করতে শিখুন](https://github.com/SupremacyTeam/VyperPunk)
+- [Vyper-এর জন্য স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট ফ্রেমওয়ার্ক এবং টুলস](/developers/docs/programming-languages/python/)
+- [VyperPunk - Vyper স্মার্ট কন্ট্রাক্ট সুরক্ষিত এবং হ্যাক করতে শিখুন](https://github.com/SupremacyTeam/VyperPunk)
- [ডেভেলপমেন্টের জন্য Vyper হাব](https://github.com/zcor/vyper-dev)
-- [Vyper গ্রেটেস্ট হিটস স্মার্ট কন্ট্র্যাক্টের উদাহরণ](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts)
+- [Vyper-এর সেরা স্মার্ট কন্ট্রাক্ট উদাহরণ](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts)
- [অসাধারণ Vyper কিউরেটেড রিসোর্স](https://github.com/spadebuilders/awesome-vyper)
### উদাহরণ {#example}
```python
-# Open Auction
+# উন্মুক্ত নিলাম
-# Auction params
-# Beneficiary receives money from the highest bidder
+# নিলামের প্যারামিটার
+# বেনিফিশিয়ারি সর্বোচ্চ দরদাতার কাছ থেকে টাকা পান
beneficiary: public(address)
auctionStart: public(uint256)
auctionEnd: public(uint256)
-# Current state of auction
+# নিলামের বর্তমান অবস্থা
highestBidder: public(address)
highestBid: public(uint256)
-# Set to true at the end, disallows any change
+# শেষে true সেট করা হয়, কোনো পরিবর্তনের অনুমতি দেয় না
ended: public(bool)
-# Keep track of refunded bids so we can follow the withdraw pattern
+# রিফান্ড করা বিডগুলোর ট্র্যাক রাখুন যাতে আমরা উইথড্র প্যাটার্ন অনুসরণ করতে পারি
pendingReturns: public(HashMap[address, uint256])
-# Create a simple auction with `_bidding_time`
-# seconds bidding time on behalf of the
-# beneficiary address `_beneficiary`.
+# `_bidding_time` দিয়ে একটি সাধারণ নিলাম তৈরি করুন
+# সেকেন্ড বিডিং সময়, যার পক্ষে
+# বেনিফিশিয়ারি ঠিকানা `_beneficiary`।
@external
def __init__(_beneficiary: address, _bidding_time: uint256):
self.beneficiary = _beneficiary
self.auctionStart = block.timestamp
self.auctionEnd = self.auctionStart + _bidding_time
-# Bid on the auction with the value sent
-# together with this transaction.
-# The value will only be refunded if the
-# auction is not won.
+# পাঠানো ভ্যালু দিয়ে নিলামে বিড করুন
+# এই ট্রানজ্যাকশনের সাথে।
+# ভ্যালু শুধুমাত্র তখনই রিফান্ড করা হবে যদি
+# নিলামে জয়ী না হয়।
@external
@payable
def bid():
- # Check if bidding period is over.
+ # বিডিংয়ের সময় শেষ হয়েছে কিনা তা চেক করুন।
assert block.timestamp < self.auctionEnd
- # Check if bid is high enough
+ # বিড যথেষ্ট বেশি কিনা তা চেক করুন
assert msg.value > self.highestBid
- # Track the refund for the previous high bidder
+ # পূর্ববর্তী সর্বোচ্চ দরদাতার রিফান্ড ট্র্যাক করুন
self.pendingReturns[self.highestBidder] += self.highestBid
- # Track new high bid
+ # নতুন সর্বোচ্চ বিড ট্র্যাক করুন
self.highestBidder = msg.sender
self.highestBid = msg.value
-# Withdraw a previously refunded bid. The withdraw pattern is
-# used here to avoid a security issue. If refunds were directly
-# sent as part of bid(), a malicious bidding contract could block
-# those refunds and thus block new higher bids from coming in.
+# পূর্বে রিফান্ড করা বিড উইথড্র করুন। উইথড্র প্যাটার্নটি
+# এখানে একটি নিরাপত্তা সমস্যা এড়াতে ব্যবহার করা হয়েছে। যদি রিফান্ড সরাসরি
+# bid() এর অংশ হিসেবে পাঠানো হতো, একটি ক্ষতিকারক বিডিং কন্ট্রাক্ট ব্লক করতে পারতো
+# সেই রিফান্ডগুলো এবং এর ফলে নতুন উচ্চতর বিড আসা ব্লক করতে পারতো।
@external
def withdraw():
pending_amount: uint256 = self.pendingReturns[msg.sender]
self.pendingReturns[msg.sender] = 0
send(msg.sender, pending_amount)
-# End the auction and send the highest bid
-# to the beneficiary.
+# নিলাম শেষ করুন এবং সর্বোচ্চ বিড পাঠান
+# বেনিফিশিয়ারির কাছে।
@external
def endAuction():
- # It is a good guideline to structure functions that interact
- # with other contracts (i.e., they call functions or send ether)
- # into three phases:
- # 1. checking conditions
- # 2. performing actions (potentially changing conditions)
- # 3. interacting with other contracts
- # If these phases are mixed up, the other contract could call
- # back into the current contract and modify the state or cause
- # effects (ether payout) to be performed multiple times.
- # If functions called internally include interaction with external
- # contracts, they also have to be considered interaction with
- # external contracts.
-
- # 1. Conditions
- # Check if auction endtime has been reached
+ # ইন্টারঅ্যাক্ট করে এমন ফাংশনগুলো গঠন করার জন্য এটি একটি ভালো গাইডলাইন
+ # অন্যান্য কন্ট্রাক্টের সাথে (অর্থাৎ, তারা ফাংশন কল করে বা ইথার পাঠায়)
+ # তিনটি ধাপে:
+ # ১. শর্ত চেক করা
+ # ২. কাজ সম্পাদন করা (সম্ভাব্যভাবে শর্ত পরিবর্তন করা)
+ # ৩. অন্যান্য কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করা
+ # যদি এই ধাপগুলো মিশে যায়, অন্য কন্ট্রাক্ট কল করতে পারে
+ # বর্তমান কন্ট্রাক্টে ফিরে এসে স্টেট পরিবর্তন করতে পারে বা
+ # প্রভাবগুলো (ইথার পেআউট) একাধিকবার সম্পাদন করতে পারে।
+ # যদি অভ্যন্তরীণভাবে কল করা ফাংশনগুলোতে বাহ্যিক কন্ট্রাক্টের সাথে ইন্টারঅ্যাকশন অন্তর্ভুক্ত থাকে,
+ # তবে সেগুলোকেও ইন্টারঅ্যাকশন হিসেবে বিবেচনা করতে হবে
+ # বাহ্যিক কন্ট্রাক্টের সাথে।
+
+ # ১. শর্তাবলী
+ # নিলামের শেষ সময় পৌঁছেছে কিনা তা চেক করুন
assert block.timestamp >= self.auctionEnd
- # Check if this function has already been called
+ # এই ফাংশনটি ইতিমধ্যে কল করা হয়েছে কিনা তা চেক করুন
assert not self.ended
- # 2. Effects
+ # ২. প্রভাব
self.ended = True
- # 3. Interaction
+ # ৩. ইন্টারঅ্যাকশন
send(self.beneficiary, self.highestBid)
```
-এই উদাহরণটি আপনাকে Vyper কন্ট্র্যাক্টের সিনট্যাক্স কেমন সে সম্পর্কে একটি ধারণা দেবে। ফাংশন এবং ভেরিয়েবলগুলোর আরও বিস্তারিত বিবরণের জন্য, [ডকুমেন্টেশন দেখুন](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction)।
+এই উদাহরণটি আপনাকে Vyper কন্ট্রাক্ট সিনট্যাক্স কেমন তা সম্পর্কে একটি ধারণা দেবে। ফাংশন এবং ভেরিয়েবলগুলোর আরও বিস্তারিত বর্ণনার জন্য, [ডকুমেন্টেশন দেখুন](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction)।
-## Yul and Yul+ {#yul}
+## Yul এবং Yul+ {#yul}
-আপনি যদি Ethereum-এ নতুন হন এবং এখনও স্মার্ট কন্ট্র্যাক্ট ল্যাঙ্গুয়েজ দিয়ে কোনো কোডিং না করে থাকেন, তবে আমরা Solidity বা Vyper দিয়ে শুরু করার পরামর্শ দিই। আপনি স্মার্ট কন্ট্র্যাক্টের নিরাপত্তার সেরা অনুশীলন এবং EVM-এর সাথে কাজ করার নির্দিষ্ট বিষয়গুলোর সাথে পরিচিত হওয়ার পরেই কেবল Yul বা Yul+ নিয়ে দেখুন।
+আপনি যদি ইথিরিয়ামে নতুন হন এবং এখনও স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ দিয়ে কোনো কোডিং না করে থাকেন, তবে আমরা Solidity বা Vyper দিয়ে শুরু করার পরামর্শ দিই। শুধুমাত্র তখনই Yul বা Yul+ দেখুন যখন আপনি স্মার্ট কন্ট্রাক্ট নিরাপত্তার সর্বোত্তম অনুশীলন এবং EVM-এর সাথে কাজ করার সুনির্দিষ্ট বিষয়গুলোর সাথে পরিচিত হবেন।
**Yul**
-- Ethereum-এর জন্য মধ্যবর্তী ল্যাঙ্গুয়েজ।
-- [EVM](/developers/docs/evm) এবং [Ewasm](https://github.com/ewasm), যা একটি Ethereum ফ্লেভারযুক্ত WebAssembly, সাপোর্ট করে এবং এটি উভয় প্ল্যাটফর্মের একটি ব্যবহারযোগ্য সাধারণ ডিনোমিনেটর হিসাবে ডিজাইন করা হয়েছে।
-- উচ্চ-স্তরের অপ্টিমাইজেশন পর্যায়ের জন্য ভালো টার্গেট যা EVM এবং Ewasm উভয় প্ল্যাটফর্মকে সমানভাবে উপকৃত করতে পারে।
+- ইথিরিয়ামের জন্য ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ।
+- [EVM](/developers/docs/evm) এবং [Ewasm](https://github.com/ewasm) (একটি ইথিরিয়াম ফ্লেভারড WebAssembly) সাপোর্ট করে এবং এটি উভয় প্ল্যাটফর্মের একটি ব্যবহারযোগ্য সাধারণ ডিনোমিনেটর হিসেবে ডিজাইন করা হয়েছে।
+- হাই-লেভেল অপ্টিমাইজেশন ধাপগুলোর জন্য ভালো টার্গেট যা EVM এবং Ewasm উভয় প্ল্যাটফর্মকে সমানভাবে উপকৃত করতে পারে।
**Yul+**
-- Yul-এর একটি নিম্ন-স্তরের, অত্যন্ত দক্ষ এক্সটেনশন।
-- প্রাথমিকভাবে একটি [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/) কন্ট্র্যাক্টের জন্য ডিজাইন করা হয়েছে।
-- Yul+-কে Yul-এর একটি পরীক্ষামূলক আপগ্রেড প্রস্তাব হিসাবে দেখা যেতে পারে, যা এতে নতুন বৈশিষ্ট্য যুক্ত করে।
+- Yul-এর একটি লো-লেভেল, অত্যন্ত দক্ষ এক্সটেনশন।
+- প্রাথমিকভাবে একটি [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/) কন্ট্রাক্টের জন্য ডিজাইন করা হয়েছে।
+- Yul+-কে Yul-এর একটি পরীক্ষামূলক আপগ্রেড প্রস্তাব হিসেবে দেখা যেতে পারে, যা এতে নতুন ফিচার যোগ করে।
-### গুরুত্বপূর্ণ লিঙ্ক {#important-links-2}
+### গুরুত্বপূর্ণ লিংক {#important-links-2}
-- [Yul নথিপত্র](https://docs.soliditylang.org/en/latest/yul.html)
-- [Yul+ নথিপত্র](https://github.com/fuellabs/yulp)
+- [Yul ডকুমেন্টেশন](https://docs.soliditylang.org/en/latest/yul.html)
+- [Yul+ ডকুমেন্টেশন](https://github.com/fuellabs/yulp)
- [Yul+ পরিচিতি পোস্ট](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f)
-### উদাহরণ কন্ট্র্যাক্ট {#example-contract-2}
+### উদাহরণ কন্ট্রাক্ট {#example-contract-2}
-নিম্নলিখিত সহজ উদাহরণটি একটি পাওয়ার ফাংশন বাস্তবায়ন করে। `solc --strict-assembly --bin input.yul` ব্যবহার করে এটি কম্পাইল করা যেতে পারে। উদাহরণটি
-input.yul ফাইলে সংরক্ষণ করা উচিত।
+নিচের সহজ উদাহরণটি একটি পাওয়ার ফাংশন বাস্তবায়ন করে। এটি `solc --strict-assembly --bin input.yul` ব্যবহার করে কম্পাইল করা যেতে পারে। উদাহরণটি input.yul ফাইলে সংরক্ষণ করা উচিত।
```
{
@@ -252,26 +251,26 @@ input.yul ফাইলে সংরক্ষণ করা উচিত।
}
```
-আপনি যদি ইতিমধ্যেই স্মার্ট কন্ট্র্যাক্টে বেশ অভিজ্ঞ হন, তাহলে Yul-এ একটি সম্পূর্ণ ERC20 ইমপ্লিমেন্টেশন [এখানে](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example) পাওয়া যাবে।
+আপনি যদি ইতিমধ্যে স্মার্ট কন্ট্রাক্ট সম্পর্কে বেশ অভিজ্ঞ হন, তবে Yul-এ একটি সম্পূর্ণ ERC20 ইমপ্লিমেন্টেশন [এখানে](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example) পাওয়া যাবে।
## Fe {#fe}
- ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)-এর জন্য স্ট্যাটিক্যালি টাইপড ল্যাঙ্গুয়েজ।
- Python এবং Rust দ্বারা অনুপ্রাণিত।
-- শেখা সহজ করার লক্ষ্য রাখে -- এমনকি Ethereum ইকোসিস্টেমে নতুন ডেভেলপারদের জন্যও।
-- Fe-এর ডেভেলপমেন্ট এখনও প্রাথমিক পর্যায়ে রয়েছে, ল্যাঙ্গুয়েজটির আলফা রিলিজ হয়েছিল জানুয়ারী ২০২১-এ।
+- শেখা সহজ হওয়ার লক্ষ্য রাখে -- এমনকি ইথিরিয়াম ইকোসিস্টেমে নতুন ডেভেলপারদের জন্যও।
+- Fe ডেভেলপমেন্ট এখনও প্রাথমিক পর্যায়ে রয়েছে, ল্যাঙ্গুয়েজটির আলফা রিলিজ 2021 সালের জানুয়ারিতে হয়েছিল।
-### গুরুত্বপূর্ণ লিঙ্ক {#important-links-3}
+### গুরুত্বপূর্ণ লিংক {#important-links-3}
- [GitHub](https://github.com/ethereum/fe)
-- [Fe ঘোষণা](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/)
+- [Fe ঘোষণা](https://blog.fe-lang.org/posts/fe-a-new-language-for-the-ethereum-ecosystem/)
- [Fe 2021 রোডম্যাপ](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg)
-- [Fe ডিসকর্ড চ্যাট](https://discord.com/invite/ywpkAXFjZH)
-- [Fe টুইটার](https://twitter.com/official_fe)
+- [Fe Discord চ্যাট](https://discord.com/invite/ywpkAXFjZH)
+- [Fe Twitter](https://twitter.com/official_fe)
-### উদাহরণ কন্ট্র্যাক্ট {#example-contract-3}
+### উদাহরণ কন্ট্রাক্ট {#example-contract-3}
-নিম্নলিখিতটি Fe-তে বাস্তবায়িত একটি সাধারণ কন্ট্র্যাক্ট।
+নিচে Fe-তে বাস্তবায়িত একটি সহজ কন্ট্রাক্ট দেওয়া হলো।
```
type BookMsg = bytes[100]
@@ -294,32 +293,32 @@ contract GuestBook:
## কীভাবে বেছে নেবেন {#how-to-choose}
-অন্যান্য যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজের মতোই, এটি মূলত সঠিক কাজের জন্য সঠিক টুল বেছে নেওয়ার এবং সেইসাথে ব্যক্তিগত পছন্দের বিষয়।
+অন্য যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজের মতো, এটি মূলত সঠিক কাজের জন্য সঠিক টুল বেছে নেওয়ার পাশাপাশি ব্যক্তিগত পছন্দের বিষয়।
-আপনি যদি এখনও কোনো ল্যাঙ্গুয়েজ চেষ্টা না করে থাকেন, তবে এখানে কয়েকটি বিষয় বিবেচনা করার জন্য দেওয়া হল:
+আপনি যদি এখনও কোনো ল্যাঙ্গুয়েজ চেষ্টা না করে থাকেন তবে এখানে কিছু বিষয় বিবেচনা করার আছে:
-### Solidity-র চমৎকার দিকগুলো কী? {#solidity-advantages}
+### Solidity-এর ভালো দিক কী? {#solidity-advantages}
-- আপনি যদি একজন শিক্ষানবিস হন, তাহলে অনেক টিউটোরিয়াল এবং শেখার টুলস রয়েছে। এ সম্পর্কে আরও দেখুন [কোডিং করে শিখুন](/developers/learning-tools/) বিভাগে।
+- আপনি যদি একজন শিক্ষানবিস হন, তবে সেখানে অনেক টিউটোরিয়াল এবং শেখার টুল রয়েছে। [কোডিংয়ের মাধ্যমে শিখুন](/developers/learning-tools/) বিভাগে সে সম্পর্কে আরও দেখুন।
- ভালো ডেভেলপার টুলিং উপলব্ধ।
-- Solidity-র একটি বড় ডেভেলপার কমিউনিটি রয়েছে, যার মানে হল আপনি খুব সম্ভবত আপনার প্রশ্নের উত্তর বেশ দ্রুত খুঁজে পাবেন।
+- Solidity-এর একটি বড় ডেভেলপার কমিউনিটি রয়েছে, যার মানে আপনি খুব দ্রুত আপনার প্রশ্নের উত্তর খুঁজে পাওয়ার সম্ভাবনা বেশি।
-### Vyper-এর চমৎকার দিকগুলো কী? {#vyper-advatages}
+### Vyper-এর ভালো দিক কী? {#vyper-advatages}
-- Python ডেভেলপারদের জন্য শুরু করার দারুণ উপায়, যারা স্মার্ট কন্ট্র্যাক্ট লিখতে চান।
-- Vyper-এ কম সংখ্যক বৈশিষ্ট্য রয়েছে যা এটিকে দ্রুত আইডিয়া প্রোটোটাইপ করার জন্য চমৎকার করে তোলে।
-- Vyper-এর লক্ষ্য হল অডিট করা সহজ এবং সর্বাধিক মানব-পাঠযোগ্য হওয়া।
+- স্মার্ট কন্ট্রাক্ট লিখতে চান এমন Python ডেভেলপারদের জন্য শুরু করার দারুণ উপায়।
+- Vyper-এ ফিচারের সংখ্যা কম যা এটিকে আইডিয়াগুলোর দ্রুত প্রোটোটাইপিংয়ের জন্য দারুণ করে তোলে।
+- Vyper-এর লক্ষ্য হলো অডিট করা সহজ এবং সর্বাধিক মানব-পাঠযোগ্য হওয়া।
-### Yul এবং Yul+-এর চমৎকার দিকগুলো কী? {#yul-advantages}
+### Yul এবং Yul+-এর ভালো দিক কী? {#yul-advantages}
-- সরল এবং কার্যকরী নিম্ন-স্তরের ল্যাঙ্গুয়েজ।
-- এটি র' EVM-এর অনেক কাছাকাছি যাওয়ার সুযোগ দেয়, যা আপনার কন্ট্র্যাক্টগুলোর গ্যাস ব্যবহার অপ্টিমাইজ করতে সাহায্য করতে পারে।
+- সহজ এবং কার্যকরী লো-লেভেল ল্যাঙ্গুয়েজ।
+- র (raw) EVM-এর অনেক কাছাকাছি যাওয়ার অনুমতি দেয়, যা আপনার কন্ট্রাক্টগুলোর গ্যাস ব্যবহার অপ্টিমাইজ করতে সাহায্য করতে পারে।
-## ল্যাঙ্গুয়েজগুলোর তুলনা {#language-comparisons}
+## ল্যাঙ্গুয়েজের তুলনা {#language-comparisons}
-বেসিক সিনট্যাক্স, কন্ট্র্যাক্ট লাইফসাইকেল, ইন্টারফেস, অপারেটর, ডেটা স্ট্রাকচার, ফাংশন, কন্ট্রোল ফ্লো এবং আরও অনেক কিছুর তুলনার জন্য Auditless-এর এই [চিটশিটটি](https://reference.auditless.com/cheatsheet/) দেখুন
+বেসিক সিনট্যাক্স, কন্ট্রাক্ট লাইফসাইকেল, ইন্টারফেস, অপারেটর, ডেটা স্ট্রাকচার, ফাংশন, কন্ট্রোল ফ্লো এবং আরও অনেক কিছুর তুলনার জন্য Auditless-এর এই [চিটশিটটি দেখুন](https://reference.auditless.com/cheatsheet/)
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- [OpenZeppelin-এর Solidity কন্ট্র্যাক্টস লাইব্রেরি](https://docs.openzeppelin.com/contracts/5.x/)
-- [Solidity by Example](https://solidity-by-example.org)
+- [OpenZeppelin-এর Solidity কন্ট্রাক্ট লাইব্রেরি](https://docs.openzeppelin.com/contracts/5.x/)
+- [Solidity বাই এক্সাম্পল](https://solidity-by-example.org)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/libraries/index.md b/public/content/translations/bn/developers/docs/smart-contracts/libraries/index.md
index 89475cd3e6b..9340312ca23 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/libraries/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/libraries/index.md
@@ -1,26 +1,26 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিসমূহ"
-description: "আপনার Ethereum ডেভেলপমেন্ট প্রজেক্টগুলোকে ত্বরান্বিত করতে পুনঃব্যবহারযোগ্য স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি এবং বিল্ডিং ব্লক আবিষ্কার করুন।"
+title: স্মার্ট কন্ট্রাক্ট লাইব্রেরি
+description: আপনার ইথিরিয়াম ডেভেলপমেন্ট প্রজেক্টগুলোকে ত্বরান্বিত করতে পুনরায় ব্যবহারযোগ্য স্মার্ট কন্ট্রাক্ট লাইব্রেরি এবং বিল্ডিং ব্লকগুলো আবিষ্কার করুন।
lang: bn
---
-আপনার প্রজেক্টের প্রতিটি স্মার্ট কন্ট্র্যাক্ট স্ক্র্যাচ থেকে লেখার দরকার নেই। অনেক ওপেন সোর্স স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি রয়েছে যা আপনার প্রজেক্টের জন্য পুনঃব্যবহারযোগ্য বিল্ডিং ব্লক সরবরাহ করে যা আপনাকে নতুন করে চাকা আবিষ্কার করা থেকে বাঁচাতে পারে।
+আপনার প্রজেক্টের প্রতিটি স্মার্ট কন্ট্রাক্ট একদম শুরু থেকে লেখার প্রয়োজন নেই। অনেক ওপেন সোর্স স্মার্ট কন্ট্রাক্ট লাইব্রেরি রয়েছে যা আপনার প্রজেক্টের জন্য পুনরায় ব্যবহারযোগ্য বিল্ডিং ব্লক প্রদান করে, যা আপনাকে একই কাজ বারবার করা থেকে বাঁচাতে পারে।
## পূর্বশর্ত {#prerequisites}
-স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিতে ঝাঁপিয়ে পড়ার আগে, একটি স্মার্ট কন্ট্র্যাক্টের গঠন সম্পর্কে একটি ভালো ধারণা থাকা জরুরি। আপনি যদি এখনও এটি না করে থাকেন তাহলে [স্মার্ট কন্ট্র্যাক্টের অ্যানাটমি](/developers/docs/smart-contracts/anatomy/) তে যান।
+স্মার্ট কন্ট্রাক্ট লাইব্রেরিতে যাওয়ার আগে, একটি স্মার্ট কন্ট্রাক্টের গঠন সম্পর্কে ভালো ধারণা থাকা ভালো। যদি আপনি এখনও তা না করে থাকেন, তবে [স্মার্ট কন্ট্রাক্ট অ্যানাটমি](/developers/docs/smart-contracts/anatomy/)-তে যান।
-## একটি লাইব্রেরিতে কী আছে {#whats-in-a-library}
+## একটি লাইব্রেরিতে কী থাকে {#whats-in-a-library}
-আপনি সাধারণত স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিতে দুই ধরণের বিল্ডিং ব্লক খুঁজে পেতে পারেন: পুনঃব্যবহারযোগ্য আচরণ যা আপনি আপনার কন্ট্র্যাক্টে যোগ করতে পারেন, এবং বিভিন্ন স্ট্যান্ডার্ডের বাস্তবায়ন।
+আপনি সাধারণত স্মার্ট কন্ট্রাক্ট লাইব্রেরিতে দুই ধরনের বিল্ডিং ব্লক খুঁজে পেতে পারেন: পুনরায় ব্যবহারযোগ্য আচরণ যা আপনি আপনার কন্ট্রাক্টে যোগ করতে পারেন এবং বিভিন্ন স্ট্যান্ডার্ডের ইমপ্লিমেন্টেশন।
### আচরণ {#behaviors}
-স্মার্ট কন্ট্র্যাক্ট লেখার সময়, একটি ভালো সম্ভাবনা রয়েছে যে আপনি নিজেকে বারবার একই ধরনের প্যাটার্ন লিখতে দেখবেন, যেমন একটি কন্ট্র্যাক্টে সুরক্ষিত অপারেশন চালানোর জন্য একটি _admin_ অ্যাড্রেস বরাদ্দ করা, অথবা একটি অপ্রত্যাশিত সমস্যার ক্ষেত্রে একটি জরুরি _pause_ বোতাম যোগ করা।
+স্মার্ট কন্ট্রাক্ট লেখার সময়, আপনি হয়তো একই প্যাটার্ন বারবার লিখবেন, যেমন একটি কন্ট্রাক্টে সুরক্ষিত অপারেশন চালানোর জন্য একটি _admin_ এডড্রেস নির্ধারণ করা, অথবা কোনো অপ্রত্যাশিত সমস্যার ক্ষেত্রে একটি জরুরি _pause_ বোতাম যোগ করা।
-স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি সাধারণত এই আচরণগুলির পুনঃব্যবহারযোগ্য বাস্তবায়ন Solidity-তে [লাইব্রেরি](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) হিসাবে বা [ইনহেরিটেন্স](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) এর মাধ্যমে সরবরাহ করে।
+স্মার্ট কন্ট্রাক্ট লাইব্রেরিগুলো সাধারণত Solidity-তে [লাইব্রেরি](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) হিসেবে বা [ইনহেরিটেন্স](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance)-এর মাধ্যমে এই আচরণগুলোর পুনরায় ব্যবহারযোগ্য ইমপ্লিমেন্টেশন প্রদান করে।
-উদাহরণস্বরূপ, নিচে [OpenZeppelin কন্ট্র্যাক্টস লাইব্রেরি](https://github.com/OpenZeppelin/openzeppelin-contracts) থেকে [`Ownable` কন্ট্র্যাক্টের](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) একটি সরলীকৃত সংস্করণ দেওয়া হলো, যা একটি কন্ট্র্যাক্টের মালিক হিসাবে একটি অ্যাড্রেসকে মনোনীত করে, এবং শুধুমাত্র সেই মালিকের কাছে একটি পদ্ধতির অ্যাক্সেস সীমাবদ্ধ করার জন্য একটি মডিফায়ার সরবরাহ করে।
+উদাহরণস্বরূপ, নিচে [OpenZeppelin Contracts লাইব্রেরি](https://github.com/OpenZeppelin/openzeppelin-contracts) থেকে [`Ownable` কন্ট্রাক্ট](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol)-এর একটি সরলীকৃত সংস্করণ দেওয়া হলো, যা একটি এডড্রেস-কে কন্ট্রাক্টের মালিক হিসেবে নির্ধারণ করে এবং শুধুমাত্র সেই মালিকের জন্য কোনো মেথডে অ্যাক্সেস সীমাবদ্ধ করার জন্য একটি মডিফায়ার প্রদান করে।
```solidity
contract Ownable {
@@ -37,35 +37,35 @@ contract Ownable {
}
```
-আপনার কন্ট্র্যাক্টে এই ধরনের একটি বিল্ডিং ব্লক ব্যবহার করার জন্য, আপনাকে প্রথমে এটি ইমপোর্ট করতে হবে এবং তারপরে আপনার নিজের কন্ট্র্যাক্টে এটি থেকে এক্সটেন্ড করতে হবে। এটি আপনাকে আপনার নিজের ফাংশন সুরক্ষিত করতে বেস `Ownable` কন্ট্র্যাক্ট দ্বারা প্রদত্ত মডিফায়ার ব্যবহার করার অনুমতি দেবে।
+আপনার কন্ট্রাক্টে এই ধরনের একটি বিল্ডিং ব্লক ব্যবহার করতে, আপনাকে প্রথমে এটি ইমপোর্ট করতে হবে এবং তারপর আপনার নিজের কন্ট্রাক্টে এটি থেকে এক্সটেন্ড করতে হবে। এটি আপনাকে আপনার নিজস্ব ফাংশনগুলো সুরক্ষিত করতে বেস `Ownable` কন্ট্রাক্ট দ্বারা প্রদত্ত মডিফায়ার ব্যবহার করার অনুমতি দেবে।
```solidity
-import ".../Ownable.sol"; // Path to the imported library
+import ".../Ownable.sol"; // ইমপোর্ট করা লাইব্রেরির পাথ
contract MyContract is Ownable {
- // The following function can only be called by the owner
+ // নিচের ফাংশনটি শুধুমাত্র মালিক কল করতে পারবেন
function secured() onlyOwner public {
msg.sender.transfer(1 ether);
}
}
```
-আরেকটি জনপ্রিয় উদাহরণ হল [SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math) বা [DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html)। এগুলি হল লাইব্রেরি (বেস কন্ট্র্যাক্টের বিপরীতে) যা ওভারফ্লো চেক সহ গাণিতিক ফাংশন সরবরাহ করে, যা ভাষা দ্বারা সরবরাহ করা হয় না। আপনার কন্ট্র্যাক্টকে ওভারফ্লো থেকে রক্ষা করার জন্য নেটিভ গাণিতিক ক্রিয়াকলাপের পরিবর্তে এই লাইব্রেরিগুলির যেকোনো একটি ব্যবহার করা একটি ভালো অভ্যাস, যার বিপর্যয়কর পরিণতি হতে পারে!
+আরেকটি জনপ্রিয় উদাহরণ হলো [SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math) বা [DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html)। এগুলো হলো লাইব্রেরি (বেস কন্ট্রাক্টের বিপরীতে) যা ওভারফ্লো চেকসহ গাণিতিক ফাংশন প্রদান করে, যা ভাষা দ্বারা প্রদান করা হয় না। আপনার কন্ট্রাক্টকে ওভারফ্লো থেকে রক্ষা করতে নেটিভ গাণিতিক অপারেশনের পরিবর্তে এই লাইব্রেরিগুলোর যেকোনো একটি ব্যবহার করা একটি ভালো অভ্যাস, কারণ ওভারফ্লোর পরিণতি ধ্বংসাত্মক হতে পারে!
-### স্ট্যান্ডার্ড {#standards}
+### স্ট্যান্ডার্ডস {#standards}
-[কম্পোজেবিলিটি এবং ইন্টারঅপারেবিলিটি](/developers/docs/smart-contracts/composability/) সহজতর করার জন্য, Ethereum কমিউনিটি **ERC** আকারে বেশ কয়েকটি স্ট্যান্ডার্ড সংজ্ঞায়িত করেছে। আপনি [স্ট্যান্ডার্ড](/developers/docs/standards/) বিভাগে তাদের সম্পর্কে আরও পড়তে পারেন।
+[কম্পোজেবিলিটি এবং ইন্টারঅপারেবিলিটি](/developers/docs/smart-contracts/composability/) সহজতর করতে, ইথিরিয়াম কমিউনিটি **ERC**-এর আকারে বেশ কয়েকটি স্ট্যান্ডার্ড সংজ্ঞায়িত করেছে। আপনি [স্ট্যান্ডার্ডস](/developers/docs/standards/) বিভাগে এগুলো সম্পর্কে আরও পড়তে পারেন।
-আপনার কন্ট্র্যাক্টের অংশ হিসাবে একটি ERC অন্তর্ভুক্ত করার সময়, নিজের তৈরি করার চেষ্টা না করে স্ট্যান্ডার্ড বাস্তবায়ন খোঁজা একটি ভালো ধারণা। অনেক স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিতে সবচেয়ে জনপ্রিয় ERC-গুলির জন্য বাস্তবায়ন অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, সর্বত্র বিদ্যমান [ERC20 ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড](/developers/tutorials/understand-the-erc-20-token-smart-contract/) [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) এবং [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20)-এ পাওয়া যাবে। এছাড়াও, কিছু ERC নিজেই ERC-এর অংশ হিসাবে ক্যানোনিকাল বাস্তবায়ন প্রদান করে।
+আপনার কন্ট্রাক্টের অংশ হিসেবে একটি ERC অন্তর্ভুক্ত করার সময়, নিজের মতো করে তৈরি করার চেষ্টা না করে স্ট্যান্ডার্ড ইমপ্লিমেন্টেশনগুলো খোঁজা ভালো। অনেক স্মার্ট কন্ট্রাক্ট লাইব্রেরিতে সবচেয়ে জনপ্রিয় ERC-গুলোর ইমপ্লিমেন্টেশন অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, সর্বত্র ব্যবহৃত [ERC20 ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড](/developers/tutorials/understand-the-erc-20-token-smart-contract/) [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) এবং [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20)-এ পাওয়া যেতে পারে। এছাড়া, কিছু ERC তাদের নিজস্ব অংশ হিসেবে ক্যানোনিকাল ইমপ্লিমেন্টেশনও প্রদান করে।
-এটি উল্লেখ করার মতো যে কিছু ERC স্বতন্ত্র নয়, তবে অন্যান্য ERC-এর সংযোজন। উদাহরণস্বরূপ, [ERC2612](https://eips.ethereum.org/EIPS/eip-2612) এর ব্যবহারযোগ্যতা উন্নত করার জন্য ERC20-তে একটি এক্সটেনশন যোগ করে।
+এটি উল্লেখ করা প্রয়োজন যে কিছু ERC স্বতন্ত্র নয়, বরং অন্যান্য ERC-এর সংযোজন। উদাহরণস্বরূপ, [ERC2612](https://eips.ethereum.org/EIPS/eip-2612) এর ব্যবহারযোগ্যতা উন্নত করতে ERC20-তে একটি এক্সটেনশন যোগ করে।
## কীভাবে একটি লাইব্রেরি যোগ করবেন {#how-to}
-আপনার প্রজেক্টে কীভাবে অন্তর্ভুক্ত করবেন তার নির্দিষ্ট নির্দেশাবলীর জন্য আপনি যে লাইব্রেরিটি অন্তর্ভুক্ত করছেন তার নথিপত্র দেখুন। বেশ কয়েকটি Solidity কন্ট্র্যাক্ট লাইব্রেরি `npm` ব্যবহার করে প্যাকেজ করা হয়, তাই আপনি শুধু `npm install` করে সেগুলিকে ইনস্টল করতে পারেন। কন্ট্র্যাক্ট [কম্পাইল](/developers/docs/smart-contracts/compiling/) করার জন্য বেশিরভাগ টুল আপনার `node_modules`-এ স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি খুঁজবে, তাই আপনি নিম্নলিখিতটি করতে পারেন:
+আপনার প্রজেক্টে কীভাবে এটি অন্তর্ভুক্ত করবেন তার নির্দিষ্ট নির্দেশাবলীর জন্য সর্বদা আপনি যে লাইব্রেরিটি অন্তর্ভুক্ত করছেন তার ডকুমেন্টেশন দেখুন। বেশ কয়েকটি Solidity কন্ট্রাক্ট লাইব্রেরি `npm` ব্যবহার করে প্যাকেজ করা হয়, তাই আপনি শুধু `npm install` করতে পারেন। কন্ট্রাক্ট [কম্পাইল](/developers/docs/smart-contracts/compiling/) করার বেশিরভাগ টুল স্মার্ট কন্ট্রাক্ট লাইব্রেরির জন্য আপনার `node_modules`-এ খুঁজবে, তাই আপনি নিচের কাজটি করতে পারেন:
```solidity
-// This will load the @openzeppelin/contracts library from your node_modules
+// এটি আপনার node_modules থেকে @openzeppelin/contracts লাইব্রেরিটি লোড করবে
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract MyNFT is ERC721 {
@@ -73,45 +73,45 @@ contract MyNFT is ERC721 {
}
```
-আপনি যে পদ্ধতিই ব্যবহার করুন না কেন, একটি লাইব্রেরি অন্তর্ভুক্ত করার সময়, সর্বদা [ভাষা](/developers/docs/smart-contracts/languages/) সংস্করণের দিকে নজর রাখুন। উদাহরণস্বরূপ, আপনি যদি Solidity 0.5-এ আপনার কন্ট্র্যাক্টগুলি লেখেন তবে আপনি Solidity 0.6-এর জন্য একটি লাইব্রেরি ব্যবহার করতে পারবেন না।
+আপনি যে পদ্ধতিই ব্যবহার করুন না কেন, একটি লাইব্রেরি অন্তর্ভুক্ত করার সময় সর্বদা [ভাষা](/developers/docs/smart-contracts/languages/)-এর সংস্করণের দিকে নজর রাখুন। উদাহরণস্বরূপ, আপনি যদি Solidity 0.5-এ আপনার কন্ট্রাক্ট লেখেন তবে আপনি Solidity 0.6-এর জন্য একটি লাইব্রেরি ব্যবহার করতে পারবেন না।
## কখন ব্যবহার করবেন {#when-to-use}
-আপনার প্রজেক্টের জন্য একটি স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি ব্যবহার করার বেশ কিছু সুবিধা আছে। প্রথম এবং সর্বাগ্রে, এটি আপনাকে ব্যবহারের জন্য প্রস্তুত বিল্ডিং ব্লক সরবরাহ করে আপনার সময় বাঁচায় যা আপনি আপনার সিস্টেমে অন্তর্ভুক্ত করতে পারেন, বরং সেগুলিকে নিজে কোড করার পরিবর্তে।
+আপনার প্রজেক্টের জন্য একটি স্মার্ট কন্ট্রাক্ট লাইব্রেরি ব্যবহার করার বেশ কয়েকটি সুবিধা রয়েছে। প্রথম এবং প্রধানত, এটি আপনাকে রেডি-টু-ইউজ বিল্ডিং ব্লক প্রদান করে আপনার সময় বাঁচায় যা আপনি আপনার সিস্টেমে অন্তর্ভুক্ত করতে পারেন, নিজে কোড করার পরিবর্তে।
-নিরাপত্তাও একটি বড় প্লাস। ওপেন সোর্স স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিগুলিও প্রায়শই ব্যাপকভাবে যাচাই করা হয়। যেহেতু অনেক প্রজেক্ট তাদের উপর নির্ভর করে, সেহেতু কমিউনিটির পক্ষ থেকে সেগুলিকে অবিরাম পর্যালোচনার অধীনে রাখার জন্য একটি শক্তিশালী প্রেরণা রয়েছে। পুনঃব্যবহারযোগ্য কন্ট্র্যাক্ট লাইব্রেরির চেয়ে অ্যাপ্লিকেশন কোডে ত্রুটি খুঁজে পাওয়া অনেক বেশি সাধারণ। কিছু লাইব্রেরি অতিরিক্ত নিরাপত্তার জন্য [বাহ্যিক অডিট](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits) এর মধ্য দিয়েও যায়।
+নিরাপত্তাও একটি বড় সুবিধা। ওপেন সোর্স স্মার্ট কন্ট্রাক্ট লাইব্রেরিগুলো প্রায়শই কঠোরভাবে যাচাই করা হয়। যেহেতু অনেক প্রজেক্ট এগুলোর ওপর নির্ভর করে, তাই কমিউনিটির দ্বারা এগুলোকে নিয়মিত পর্যালোচনার আওতায় রাখার একটি শক্তিশালী প্রণোদনা রয়েছে। পুনরায় ব্যবহারযোগ্য কন্ট্রাক্ট লাইব্রেরির চেয়ে অ্যাপ্লিকেশন কোডে ত্রুটি খুঁজে পাওয়া অনেক বেশি সাধারণ। কিছু লাইব্রেরি অতিরিক্ত নিরাপত্তার জন্য [এক্সটার্নাল অডিট](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits)-এর মধ্য দিয়েও যায়।
-তবে, স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি ব্যবহার করলে আপনার প্রজেক্টে এমন কোড অন্তর্ভুক্ত করার ঝুঁকি থাকে যার সাথে আপনি পরিচিত নন। একটি কন্ট্র্যাক্ট ইমপোর্ট করে সরাসরি আপনার প্রজেক্টে অন্তর্ভুক্ত করা লোভনীয়, কিন্তু সেই কন্ট্র্যাক্টটি কী করে সে সম্পর্কে ভালো ধারণা ছাড়া, আপনি একটি অপ্রত্যাশিত আচরণের কারণে অনিচ্ছাকৃতভাবে আপনার সিস্টেমে একটি সমস্যা তৈরি করতে পারেন। আপনি যে কোডটি ইমপোর্ট করছেন তার নথিপত্র পড়তে সর্বদা নিশ্চিত হন, এবং তারপর এটিকে আপনার প্রজেক্টের অংশ করার আগে কোডটি নিজেই পর্যালোচনা করুন!
+তবে, স্মার্ট কন্ট্রাক্ট লাইব্রেরি ব্যবহার করার ক্ষেত্রে আপনার প্রজেক্টে এমন কোড অন্তর্ভুক্ত করার ঝুঁকি থাকে যার সাথে আপনি পরিচিত নন। একটি কন্ট্রাক্ট ইমপোর্ট করে সরাসরি আপনার প্রজেক্টে অন্তর্ভুক্ত করা লোভনীয় হতে পারে, কিন্তু সেই কন্ট্রাক্টটি কী করে সে সম্পর্কে ভালো ধারণা না থাকলে, আপনি অপ্রত্যাশিত আচরণের কারণে আপনার সিস্টেমে অজান্তেই একটি সমস্যা তৈরি করতে পারেন। সর্বদা নিশ্চিত করুন যে আপনি যে কোডটি ইমপোর্ট করছেন তার ডকুমেন্টেশন পড়েছেন এবং তারপর এটিকে আপনার প্রজেক্টের অংশ করার আগে কোডটি নিজেই পর্যালোচনা করেছেন!
-সবশেষে, একটি লাইব্রেরি অন্তর্ভুক্ত করার সিদ্ধান্ত নেওয়ার সময়, এর সামগ্রিক ব্যবহার বিবেচনা করুন। একটি ব্যাপকভাবে গৃহীত লাইব্রেরির সুবিধা হলো একটি বৃহত্তর কমিউনিটি থাকা এবং সমস্যাগুলির জন্য আরও বেশি চোখ এটির দিকে নজর রাখা। স্মার্ট কন্ট্র্যাক্ট দিয়ে তৈরি করার সময় নিরাপত্তাই আপনার প্রধান ফোকাস হওয়া উচিত!
+সবশেষে, একটি লাইব্রেরি অন্তর্ভুক্ত করবেন কি না তা সিদ্ধান্ত নেওয়ার সময়, এর সামগ্রিক ব্যবহার বিবেচনা করুন। ব্যাপকভাবে গৃহীত একটি লাইব্রেরির সুবিধা হলো এর একটি বড় কমিউনিটি থাকে এবং আরও বেশি মানুষ এর সমস্যাগুলো খোঁজার জন্য নজর রাখে। স্মার্ট কন্ট্রাক্ট দিয়ে তৈরি করার সময় নিরাপত্তাই হওয়া উচিত আপনার প্রাথমিক ফোকাস!
## সম্পর্কিত টুলস {#related-tools}
-**OpenZeppelin Contracts -** **_সুরক্ষিত স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্টের জন্য সবচেয়ে জনপ্রিয় লাইব্রেরি।_**
+**OpenZeppelin Contracts -** **_নিরাপদ স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের জন্য সবচেয়ে জনপ্রিয় লাইব্রেরি।_**
-- [নথিপত্র](https://docs.openzeppelin.com/contracts/)
-- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
+- [ডকুমেন্টেশন](https://docs.openzeppelin.com/contracts/)
+- [গিটহাব](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [কমিউনিটি ফোরাম](https://forum.openzeppelin.com/c/general/16)
-**DappSys -** **_স্মার্ট-কন্ট্র্যাক্টের জন্য নিরাপদ, সহজ, নমনীয় বিল্ডিং-ব্লক।_**
+**DappSys -** **_স্মার্ট কন্ট্রাক্টের জন্য নিরাপদ, সহজ, নমনীয় বিল্ডিং-ব্লক।_**
-- [নথিপত্র](https://dappsys.readthedocs.io/)
-- [GitHub](https://github.com/dapphub/dappsys)
+- [ডকুমেন্টেশন](https://dappsys.readthedocs.io/)
+- [গিটহাব](https://github.com/dapphub/dappsys)
-**HQ20 -** **_কন্ট্র্যাক্ট, লাইব্রেরি এবং উদাহরণ সহ একটি Solidity প্রজেক্ট যা আপনাকে বাস্তব বিশ্বের জন্য সম্পূর্ণ বৈশিষ্ট্যযুক্ত ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।_**
+**HQ20 -** **_বাস্তব জগতের জন্য সম্পূর্ণ বৈশিষ্ট্যযুক্ত ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করতে সাহায্য করার জন্য কন্ট্রাক্ট, লাইব্রেরি এবং উদাহরণসহ একটি Solidity প্রজেক্ট।_**
-- [GitHub](https://github.com/HQ20/contracts)
+- [গিটহাব](https://github.com/HQ20/contracts)
-**thirdweb Solidity SDK -** **_দক্ষভাবে কাস্টম স্মার্ট কন্ট্র্যাক্ট তৈরি করার জন্য প্রয়োজনীয় টুলস সরবরাহ করে_**
+**thirdweb Solidity SDK -** **_কাস্টম স্মার্ট কন্ট্রাক্ট দক্ষতার সাথে তৈরি করার জন্য প্রয়োজনীয় টুলস প্রদান করে_**
-- [নথিপত্র](https://portal.thirdweb.com/contracts/build/overview)
-- [GitHub](https://github.com/thirdweb-dev/contracts)
+- [ডকুমেন্টেশন](https://portal.thirdweb.com/contracts/build/overview)
+- [গিটহাব](https://github.com/thirdweb-dev/contracts)
-## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
+## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [Ethereum ডেভেলপারদের জন্য নিরাপত্তা বিবেচনা](/developers/docs/smart-contracts/security/) _– লাইব্রেরি ব্যবহার সহ স্মার্ট কন্ট্র্যাক্ট তৈরি করার সময় নিরাপত্তা বিবেচনার উপর একটি টিউটোরিয়াল।_
-- [ERC-20 টোকেন স্মার্ট কন্ট্র্যাক্ট বুঝুন](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _-একাধিক লাইব্রেরি দ্বারা প্রদত্ত ERC20 স্ট্যান্ডার্ডের উপর টিউটোরিয়াল।_
+- [ইথিরিয়াম ডেভেলপারদের জন্য নিরাপত্তা বিবেচনা](/developers/docs/smart-contracts/security/) _– লাইব্রেরি ব্যবহারসহ স্মার্ট কন্ট্রাক্ট তৈরি করার সময় নিরাপত্তা বিবেচনার ওপর একটি টিউটোরিয়াল।_
+- [ERC-20 টোকেন স্মার্ট কন্ট্রাক্ট বুঝুন](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _-একাধিক লাইব্রেরি দ্বারা প্রদত্ত ERC20 স্ট্যান্ডার্ডের ওপর টিউটোরিয়াল।_
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/naming/index.md b/public/content/translations/bn/developers/docs/smart-contracts/naming/index.md
index b03d4a49f48..d8a080f0fc8 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/naming/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/naming/index.md
@@ -1,101 +1,101 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট-এর নামকরণ"
-description: "ENS-এর মাধ্যমে Ethereum স্মার্ট কন্ট্র্যাক্ট-এর নামকরণের জন্য সেরা অনুশীলন"
+title: স্মার্ট কন্ট্রাক্ট নামকরণ
+description: ENS এর মাধ্যমে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট নামকরণের সেরা অনুশীলন
lang: bn
---
-স্মার্ট কন্ট্র্যাক্টগুলি Ethereum-এর বিকেন্দ্রীভূত পরিকাঠামোর একটি ভিত্তি, যা স্বায়ত্তশাসিত অ্যাপ্লিকেশন এবং প্রোটোকল সক্ষম করে। কিন্তু চুক্তির ক্ষমতা বিকশিত হওয়ার সাথে সাথেও, ব্যবহারকারী এবং ডেভেলপাররা এখনও এই চুক্তিগুলি সনাক্ত করতে এবং রেফারেন্স করতে কাঁচা হেক্সাডেসিমেল ঠিকানার উপর নির্ভর করে।
+স্মার্ট কন্ট্রাক্ট হলো ইথিরিয়ামের ডিসেন্ট্রালাইজড অবকাঠামোর একটি মূল ভিত্তি, যা স্বায়ত্তশাসিত অ্যাপ্লিকেশন এবং প্রটোকলগুলোকে সক্ষম করে। কিন্তু কন্ট্রাক্টের সক্ষমতা বিকশিত হওয়ার পরও, ব্যবহারকারী এবং ডেভেলপাররা এখনও এই কন্ট্রাক্টগুলো শনাক্ত করতে এবং রেফারেন্স হিসেবে ব্যবহার করতে র (raw) হেক্সাডেসিমাল এডড্রেস এর উপর নির্ভর করে।
-[Ethereum Name Service (ENS)](https://ens.domains/)-এর মাধ্যমে স্মার্ট কন্ট্র্যাক্ট-এর নামকরণ হেক্সাডেসিমেল কন্ট্র্যাক্টের ঠিকানা দূর করে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং ঠিকানা বিষক্রিয়া এবং স্পুফিং আক্রমণের মতো আক্রমণ থেকে ঝুঁকি কমায়। এই নির্দেশিকা ব্যাখ্যা করে কেন স্মার্ট কন্ট্র্যাক্ট-এর নামকরণ গুরুত্বপূর্ণ, এটি কীভাবে প্রয়োগ করা যেতে পারে, এবং [Enscribe](https://www.enscribe.xyz) এর মতো উপলব্ধ টুলস যা প্রক্রিয়াটিকে সহজ করতে এবং ডেভেলপারদের এই অনুশীলনটি গ্রহণ করতে সাহায্য করে।
+[Ethereum Name Service (ENS)](https://ens.domains/) এর মাধ্যমে স্মার্ট কন্ট্রাক্ট এর নামকরণ হেক্সাডেসিমাল কন্ট্রাক্ট এডড্রেস দূর করে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং এডড্রেস পয়জনিং ও স্পুফিং এ্যাটাকের মতো ঝুঁকি কমায়। এই গাইডে ব্যাখ্যা করা হয়েছে কেন স্মার্ট কন্ট্রাক্ট এর নামকরণ গুরুত্বপূর্ণ, কীভাবে এটি বাস্তবায়ন করা যায় এবং প্রক্রিয়াটিকে সহজ করতে ও ডেভেলপারদের এই অনুশীলন গ্রহণে সহায়তা করতে [Enscribe](https://www.enscribe.xyz) এর মতো কী কী টুলস উপলব্ধ রয়েছে।
-## কেন স্মার্ট কন্ট্র্যাক্ট-এর নামকরণ করবেন? {#why-name-contracts}
+## কেন স্মার্ট কন্ট্রাক্ট এর নামকরণ করবেন? {#why-name-contracts}
-### মানুষের পাঠযোগ্য শনাক্তকারী {#human-readable-identifiers}
+### মানুষের পড়ার যোগ্য আইডেন্টিফায়ার {#human-readable-identifiers}
-`0x8f8e...f9e3`-এর মতো অস্বচ্ছ কন্ট্র্যাক্টের ঠিকানার সাথে ইন্টারঅ্যাক্ট করার পরিবর্তে, ডেভেলপার এবং ব্যবহারকারীরা `v2.myapp.eth`-এর মতো মানুষের পাঠযোগ্য নাম ব্যবহার করতে পারেন। এটি স্মার্ট কন্ট্র্যাক্ট ইন্টারঅ্যাকশনকে সহজ করে।
+`0x8f8e...f9e3` এর মতো অস্পষ্ট কন্ট্রাক্ট এডড্রেস এর সাথে ইন্টারঅ্যাক্ট করার পরিবর্তে, ডেভেলপার এবং ব্যবহারকারীরা `v2.myapp.eth` এর মতো মানুষের পড়ার যোগ্য নাম ব্যবহার করতে পারেন। এটি স্মার্ট কন্ট্রাক্ট এর ইন্টারঅ্যাকশনকে সহজ করে।
-এটি [Ethereum Name Service](https://ens.domains/)-এর মাধ্যমে সম্ভব হয়েছে যা Ethereum ঠিকানার জন্য একটি বিকেন্দ্রীভূত নামকরণের পরিষেবা প্রদান করে। এটি ডোমেন নেম সার্ভিস (DNS) এর অনুরূপ যা ইন্টারনেটের ব্যবহারকারীদের `104.18.176.152` এর মতো আইপি ঠিকানার পরিবর্তে ethereum.org এর মতো একটি নাম ব্যবহার করে নেটওয়ার্ক ঠিকানা অ্যাক্সেস করতে সক্ষম করে।
+এটি [Ethereum Name Service](https://ens.domains/) এর মাধ্যমে সম্ভব হয়েছে, যা ইথিরিয়াম এডড্রেস এর জন্য একটি ডিসেন্ট্রালাইজড নেমিং সার্ভিস প্রদান করে। এটি অনেকটা ডোমেইন নেম সার্ভিস (DNS) এর মতো, যা ইন্টারনেটের ব্যবহারকারীদের `104.18.176.152` এর মতো আইপি এডড্রেস এর পরিবর্তে ethereum.org এর মতো নাম ব্যবহার করে নেটওয়ার্ক এডড্রেস এ অ্যাক্সেস করতে সক্ষম করে।
### উন্নত নিরাপত্তা এবং বিশ্বাস {#improved-security-and-trust}
-নামযুক্ত চুক্তিগুলি ভুল ঠিকানায় দুর্ঘটনাজনিত লেনদেন কমাতে সাহায্য করে। এগুলি ব্যবহারকারীদের নির্দিষ্ট অ্যাপ বা ব্র্যান্ডের সাথে যুক্ত চুক্তিগুলি সনাক্ত করতেও সাহায্য করে। এটি খ্যাতির বিশ্বাসের একটি স্তর যোগ করে, বিশেষ করে যখন নামগুলি `uniswap.eth`-এর মতো সুপরিচিত মূল ডোমেনের সাথে সংযুক্ত থাকে।
+নামযুক্ত কন্ট্রাক্ট ভুল এডড্রেস এ দুর্ঘটনাবশত লেনদেন কমাতে সাহায্য করে। এগুলো ব্যবহারকারীদের নির্দিষ্ট অ্যাপ বা ব্র্যান্ডের সাথে যুক্ত কন্ট্রাক্ট শনাক্ত করতেও সাহায্য করে। এটি সুনামের দিক থেকে বিশ্বাসের একটি স্তর যোগ করে, বিশেষ করে যখন নামগুলো `uniswap.eth` এর মতো সুপরিচিত প্যারেন্ট ডোমেইনের সাথে যুক্ত থাকে।
-Ethereum ঠিকানার 42-অক্ষরের দৈর্ঘ্যের কারণে, ব্যবহারকারীদের পক্ষে ঠিকানায় ছোট পরিবর্তনগুলি সনাক্ত করা খুব কঠিন, যেখানে কয়েকটি অক্ষর পরিবর্তন করা হয়েছে। উদাহরণস্বরূপ, `0x58068646C148E313CB414E85d2Fe89dDc3426870`-এর মতো একটি ঠিকানা সাধারণত ওয়ালেটের মতো ব্যবহারকারী-মুখী অ্যাপ্লিকেশন দ্বারা `0x580...870`-তে ছোট করা হয়। একজন ব্যবহারকারীর এমন একটি দূষিত ঠিকানা লক্ষ্য করার সম্ভাবনা কম যেখানে কয়েকটি অক্ষর পরিবর্তন করা হয়েছে।
+ইথিরিয়াম এডড্রেস এর 42-অক্ষরের দৈর্ঘ্যের কারণে, ব্যবহারকারীদের জন্য এডড্রেস এর ছোটখাটো পরিবর্তন শনাক্ত করা খুব কঠিন, যেখানে কয়েকটি অক্ষর পরিবর্তন করা হয়েছে। উদাহরণস্বরূপ, `0x58068646C148E313CB414E85d2Fe89dDc3426870` এর মতো একটি এডড্রেস সাধারণত ওয়ালেট এর মতো ব্যবহারকারী-মুখী অ্যাপ্লিকেশনগুলোর মাধ্যমে `0x580...870` এ ছোট করা হয়। একজন ব্যবহারকারীর পক্ষে এমন একটি ক্ষতিকারক এডড্রেস লক্ষ্য করার সম্ভাবনা কম যেখানে কয়েকটি অক্ষর পরিবর্তন করা হয়েছে।
-এই ধরনের কৌশল ঠিকানা স্পুফিং এবং বিষপ্রয়োগের আক্রমণে ব্যবহৃত হয় যেখানে ব্যবহারকারীদের বিশ্বাস করানো হয় যে তারা সঠিক ঠিকানায় ইন্টারঅ্যাক্ট করছে বা তহবিল পাঠাচ্ছে, যখন বাস্তবে ঠিকানাটি কেবল সঠিক ঠিকানার অনুরূপ, কিন্তু একই নয়।
+এই ধরনের কৌশল এডড্রেস স্পুফিং এবং পয়জনিং এ্যাটাকগুলোতে ব্যবহার করা হয়, যেখানে ব্যবহারকারীদের বিশ্বাস করানো হয় যে তারা সঠিক এডড্রেস এর সাথে ইন্টারঅ্যাক্ট করছেন বা ফান্ড পাঠাচ্ছেন, যখন বাস্তবে এডড্রেসটি কেবল সঠিক এডড্রেস এর মতো দেখতে হয়, কিন্তু একই নয়।
-ওয়ালেট এবং কন্ট্র্যাক্টের জন্য ENS নামগুলি এই ধরণের আক্রমণ থেকে রক্ষা করে। DNS স্পুফিং অ্যাটাকের মতো, ENS স্পুফিং অ্যাটাকও হতে পারে, তবে, একজন ব্যবহারকারী হেক্সাডেসিমেল ঠিকানায় একটি ছোট পরিবর্তনের চেয়ে ENS নামে একটি ভুল বানান লক্ষ্য করার সম্ভাবনা বেশি।
+ওয়ালেট এবং কন্ট্রাক্ট এর জন্য ENS নামগুলো এই ধরনের এ্যাটাক থেকে রক্ষা করে। DNS স্পুফিং এ্যাটাকের মতো, ENS স্পুফিং এ্যাটাকও হতে পারে, তবে একজন ব্যবহারকারীর হেক্সাডেসিমাল এডড্রেস এর ছোট পরিবর্তনের চেয়ে ENS নামের বানান ভুল লক্ষ্য করার সম্ভাবনা বেশি।
-### ওয়ালেট এবং এক্সপ্লোরারদের জন্য আরও ভালো UX {#better-ux}
+### ওয়ালেট এবং এক্সপ্লোরারগুলোর জন্য উন্নত UX {#better-ux}
-যখন একটি স্মার্ট কন্ট্র্যাক্ট একটি ENS নামের সাথে কনফিগার করা হয়, তখন ওয়ালেট এবং ব্লকচেইন এক্সপ্লোরারের মতো অ্যাপগুলির জন্য হেক্সাডেসিমেল ঠিকানার পরিবর্তে স্মার্ট কন্ট্র্যাক্টের জন্য ENS নাম প্রদর্শন করা সম্ভব। এটি ব্যবহারকারীদের জন্য একটি উল্লেখযোগ্য ব্যবহারকারী অভিজ্ঞতা (UX) উন্নতি প্রদান করে।
+যখন একটি স্মার্ট কন্ট্রাক্ট একটি ENS নামের সাথে কনফিগার করা হয়, তখন ওয়ালেট এবং ব্লকচেইন এক্সপ্লোরারগুলোর মতো অ্যাপগুলোর পক্ষে হেক্সাডেসিমাল এডড্রেস এর পরিবর্তে স্মার্ট কন্ট্রাক্ট এর জন্য ENS নাম প্রদর্শন করা সম্ভব হয়। এটি ব্যবহারকারীদের জন্য একটি উল্লেখযোগ্য ইউজার এক্সপেরিয়েন্স (UX) উন্নতি প্রদান করে।
-উদাহরণস্বরূপ, Uniswap-এর মতো একটি অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সময়, ব্যবহারকারীরা সাধারণত দেখতে পাবেন যে তারা যে অ্যাপটির সাথে ইন্টারঅ্যাক্ট করছেন সেটি `uniswap.org` ওয়েবসাইটে হোস্ট করা হয়েছে, কিন্তু যদি Uniswap তাদের স্মার্ট কন্ট্র্যাক্টগুলির নাম ENS-এর সাথে না রাখে তবে তাদের একটি হেক্সাডেসিমেল কন্ট্র্যাক্ট ঠিকানা দেখানো হবে। যদি কন্ট্র্যাক্টটির নাম দেওয়া হয়, তাহলে তারা `v4.contracts.uniswap.eth` দেখতে পাবে যা অনেক বেশি কার্যকর।
+উদাহরণস্বরূপ, Uniswap এর মতো একটি অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সময়, ব্যবহারকারীরা সাধারণত দেখতে পাবেন যে তারা যে অ্যাপটির সাথে ইন্টারঅ্যাক্ট করছেন তা `uniswap.org` ওয়েবসাইটে হোস্ট করা হয়েছে, কিন্তু Uniswap যদি ENS এর মাধ্যমে তাদের স্মার্ট কন্ট্রাক্ট এর নামকরণ না করে থাকে তবে তাদের একটি হেক্সাডেসিমাল কন্ট্রাক্ট এডড্রেস দেখানো হবে। যদি কন্ট্রাক্টটির নামকরণ করা হয়, তবে এর পরিবর্তে তারা `v4.contracts.uniswap.eth` দেখতে পাবেন যা অনেক বেশি কার্যকর।
-## ডিপ্লয়মেন্টের সময় নামকরণ বনাম পোস্ট-ডিপ্লয়মেন্ট নামকরণ {#when-to-name}
+## ডিপ্লয়মেন্টের সময় বনাম ডিপ্লয়মেন্টের পরে নামকরণ {#when-to-name}
-দুটি পয়েন্ট আছে যেখানে স্মার্ট কন্ট্র্যাক্টের নামকরণ করা যেতে পারে:
+দুটি পর্যায়ে স্মার্ট কন্ট্রাক্ট এর নামকরণ করা যেতে পারে:
-- **ডিপ্লয়মেন্টের সময়**: কন্ট্র্যাক্টটি ডিপ্লয় করার সময় একটি ENS নাম বরাদ্দ করা।
-- **ডিপ্লয়মেন্টের পরে**: একটি বিদ্যমান কন্ট্র্যাক্ট ঠিকানাকে একটি নতুন ENS নামে ম্যাপ করা।
+- **ডিপ্লয়মেন্টের সময়**: কন্ট্রাক্টটি ডিপ্লয় করার সময় এতে একটি ENS নাম নির্ধারণ করা।
+- **ডিপ্লয়মেন্টের পরে**: একটি বিদ্যমান কন্ট্রাক্ট এডড্রেস কে একটি নতুন ENS নামের সাথে ম্যাপ করা।
-উভয় পদ্ধতির জন্য একটি ENS ডোমেনে মালিক বা পরিচালকের অ্যাক্সেসের প্রয়োজন হয় যাতে তারা ENS রেকর্ড তৈরি এবং সেট করতে পারে।
+উভয় পদ্ধতিতেই একটি ENS ডোমেইনে মালিক বা ম্যানেজারের অ্যাক্সেস থাকার উপর নির্ভর করে যাতে তারা ENS রেকর্ড তৈরি এবং সেট করতে পারে।
-## কন্ট্র্যাক্টের জন্য ENS নামকরণ কীভাবে কাজ করে {#how-ens-naming-works}
+## কন্ট্রাক্ট এর জন্য ENS নামকরণ কীভাবে কাজ করে {#how-ens-naming-works}
-ENS নামগুলি অনচেইনে সংরক্ষণ করা হয় এবং ENS সমাধানকারীদের মাধ্যমে Ethereum ঠিকানায় সমাধান করা হয়। একটি স্মার্ট কন্ট্র্যাক্টের নামকরণ করতে:
+ENS নামগুলো অনচেইন এ সংরক্ষিত থাকে এবং ENS রিসলভারের মাধ্যমে ইথিরিয়াম এডড্রেস এ রিসলভ হয়। একটি স্মার্ট কন্ট্রাক্ট এর নামকরণ করতে:
-1. একটি মূল ENS ডোমেইন নিবন্ধন বা নিয়ন্ত্রণ করুন (যেমন `myapp.eth`)
-2. একটি সাবডোমেন তৈরি করুন (যেমন `v1.myapp.eth`)
-3. সাবডোমেনের `address` রেকর্ডটি কন্ট্র্যাক্টের ঠিকানায় সেট করুন
-4. ENS-এ কন্ট্র্যাক্টের রিভার্স রেকর্ড সেট করুন যাতে এর ঠিকানার মাধ্যমে নামটি খুঁজে পাওয়া যায়
+1. একটি প্যারেন্ট ENS ডোমেইন নিবন্ধন বা নিয়ন্ত্রণ করুন (যেমন `myapp.eth`)
+2. একটি সাবডোমেইন তৈরি করুন (যেমন `v1.myapp.eth`)
+3. সাবডোমেইনের `address` রেকর্ডটি কন্ট্রাক্ট এডড্রেস এ সেট করুন
+4. এডড্রেস এর মাধ্যমে নামটি খুঁজে পাওয়ার জন্য কন্ট্রাক্ট এর রিভার্স রেকর্ডটি ENS এ সেট করুন
-ENS নামগুলি শ্রেণিবদ্ধ এবং সীমাহীন উপ-নাম সমর্থন করে। এই রেকর্ডগুলি সেট করার জন্য সাধারণত ENS রেজিস্ট্রি এবং পাবলিক সমাধানকারী কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করা জড়িত।
+ENS নামগুলো হায়ারার্কিকাল এবং সীমাহীন সাব-নাম সমর্থন করে। এই রেকর্ডগুলো সেট করার ক্ষেত্রে সাধারণত ENS রেজিস্ট্রি এবং পাবলিক রিসলভার কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করা জড়িত থাকে।
-## কন্ট্র্যাক্টের নামকরণের জন্য টুলস {#tools}
+## কন্ট্রাক্ট নামকরণের টুলস {#tools}
-স্মার্ট কন্ট্র্যাক্টের নামকরণের দুটি পদ্ধতি আছে। হয় কিছু ম্যানুয়াল পদক্ষেপ সহ [ENS অ্যাপ](https://app.ens.domains) ব্যবহার করে, অথবা [Enscribe](https://www.enscribe.xyz) ব্যবহার করে। এগুলি নীচে বর্ণিত হয়েছে।
+স্মার্ট কন্ট্রাক্ট নামকরণের দুটি পদ্ধতি রয়েছে। হয় কিছু ম্যানুয়াল ধাপের সাথে [ENS App](https://app.ens.domains) ব্যবহার করা, অথবা [Enscribe](https://www.enscribe.xyz) ব্যবহার করা। এগুলো নিচে তুলে ধরা হলো।
### ম্যানুয়াল ENS সেটআপ {#manual-ens-setup}
-[ENS অ্যাপ](https://app.ens.domains/) ব্যবহার করে, ডেভেলপাররা ম্যানুয়ালি উপ-নাম তৈরি করতে পারে এবং ফরওয়ার্ড ঠিকানা রেকর্ড সেট করতে পারে। যাইহোক, তারা ENS অ্যাপের মাধ্যমে নামের জন্য রিভার্স রেকর্ড সেট করে একটি স্মার্ট কন্ট্র্যাক্টের জন্য একটি প্রাথমিক নাম সেট করতে পারে না। ম্যানুয়াল পদক্ষেপ নিতে হবে যা [ENS ডক্স](https://docs.ens.domains/web/naming-contracts/)-এ কভার করা হয়েছে।
+[ENS App](https://app.ens.domains/) ব্যবহার করে, ডেভেলপাররা ম্যানুয়ালি সাব-নাম তৈরি করতে এবং ফরোয়ার্ড এডড্রেস রেকর্ড সেট করতে পারেন। তবে, তারা ENS অ্যাপের মাধ্যমে নামের জন্য রিভার্স রেকর্ড সেট করে একটি স্মার্ট কন্ট্রাক্ট এর জন্য প্রাইমারি নাম সেট করতে পারবেন না। এর জন্য ম্যানুয়াল পদক্ষেপ নিতে হবে যা [ENS docs](https://docs.ens.domains/web/naming-contracts/) এ কভার করা হয়েছে।
### Enscribe {#enscribe}
-[Enscribe](https://www.enscribe.xyz) ENS-এর মাধ্যমে স্মার্ট কন্ট্র্যাক্টের নামকরণ সহজ করে, এবং স্মার্ট কন্ট্র্যাক্টে ব্যবহারকারীর বিশ্বাস বাড়ায়। এটি প্রদান করে:
+[Enscribe](https://www.enscribe.xyz) ENS এর মাধ্যমে স্মার্ট কন্ট্রাক্ট নামকরণকে সহজ করে এবং স্মার্ট কন্ট্রাক্ট এর প্রতি ব্যবহারকারীর বিশ্বাস বাড়ায়। এটি প্রদান করে:
-- **অ্যাটমিক ডিপ্লয়মেন্ট এবং নামকরণ**: একটি নতুন কন্ট্র্যাক্ট ডিপ্লয় করার সময় একটি ENS নাম বরাদ্দ করুন
-- **পোস্ট-ডিপ্লয়মেন্ট নামকরণ**: ইতিমধ্যে-ডিপ্লয় করা কন্ট্র্যাক্টের সাথে নাম সংযুক্ত করুন
-- **মাল্টি-চেইন সমর্থন**: Ethereum এবং L2 নেটওয়ার্ক জুড়ে কাজ করে যেখানে ENS সমর্থিত
-- **কন্ট্র্যাক্ট যাচাইকরণ ডেটা**: ব্যবহারকারীদের জন্য বিশ্বাস বাড়াতে একাধিক উৎস থেকে প্রাপ্ত কন্ট্র্যাক্ট যাচাইকরণ ডেটা অন্তর্ভুক্ত করে
+- **অ্যাটমিক ডিপ্লয়মেন্ট এবং নামকরণ**: একটি নতুন কন্ট্রাক্ট ডিপ্লয় করার সময় একটি ENS নাম নির্ধারণ করা
+- **ডিপ্লয়মেন্ট-পরবর্তী নামকরণ**: ইতিমধ্যে ডিপ্লয় করা কন্ট্রাক্টগুলোতে নাম যুক্ত করা
+- **মাল্টি-চেইন সমর্থন**: ইথিরিয়াম এবং লেয়ার ২ (L2) নেটওয়ার্ক জুড়ে কাজ করে যেখানে ENS সমর্থিত
+- **কন্ট্রাক্ট ভেরিফিকেশন ডাটা**: ব্যবহারকারীদের জন্য বিশ্বাস বাড়াতে একাধিক সোর্স থেকে নেওয়া কন্ট্রাক্ট ভেরিফিকেশন ডাটা অন্তর্ভুক্ত করে
-Enscribe ব্যবহারকারীদের দ্বারা প্রদত্ত ENS নাম সমর্থন করে, অথবা যদি ব্যবহারকারীর কোনো ENS নাম না থাকে তবে তার নিজস্ব ডোমেন।
+Enscribe ব্যবহারকারীদের দেওয়া ENS নাম সমর্থন করে, অথবা ব্যবহারকারীর কোনো ENS নাম না থাকলে এর নিজস্ব ডোমেইন সমর্থন করে।
-আপনি স্মার্ট কন্ট্র্যাক্টের নামকরণ এবং দেখার জন্য [Enscribe অ্যাপ](https://app.enscribe.xyz) অ্যাক্সেস করতে পারেন।
+স্মার্ট কন্ট্রাক্ট এর নামকরণ এবং দেখার কাজ শুরু করতে আপনি [Enscribe App](https://app.enscribe.xyz) এ অ্যাক্সেস করতে পারেন।
## সেরা অনুশীলন {#best-practices}
-- **পরিষ্কার, সংস্করণযুক্ত নাম ব্যবহার করুন** যেমন `v1.myapp.eth` কন্ট্র্যাক্ট আপগ্রেডগুলিকে স্বচ্ছ করতে
-- **রিভার্স রেকর্ড সেট করুন** ওয়ালেট এবং ব্লকচেইন এক্সপ্লোরারের মতো অ্যাপে দৃশ্যমানতার জন্য কন্ট্র্যাক্টগুলিকে ENS নামের সাথে লিঙ্ক করতে।
-- **মেয়াদ শেষ হওয়ার তারিখগুলি ঘনিষ্ঠভাবে পর্যবেক্ষণ করুন** যদি আপনি মালিকানায় দুর্ঘটনাজনিত পরিবর্তন রোধ করতে চান
-- **কন্ট্র্যাক্টের উৎস যাচাই করুন** যাতে ব্যবহারকারীরা বিশ্বাস করতে পারে যে নামযুক্ত কন্ট্র্যাক্টটি প্রত্যাশিতভাবে আচরণ করে
+- কন্ট্রাক্ট আপগ্রেডগুলোকে স্বচ্ছ করতে `v1.myapp.eth` এর মতো **স্পষ্ট, ভার্সনযুক্ত নাম ব্যবহার করুন**
+- ওয়ালেট এবং ব্লকচেইন এক্সপ্লোরারগুলোর মতো অ্যাপগুলোতে দৃশ্যমানতার জন্য কন্ট্রাক্টগুলোকে ENS নামের সাথে লিঙ্ক করতে **রিভার্স রেকর্ড সেট করুন**।
+- মালিকানায় দুর্ঘটনাবশত পরিবর্তন রোধ করতে চাইলে **মেয়াদোত্তীর্ণের সময়গুলো নিবিড়ভাবে পর্যবেক্ষণ করুন**
+- **কন্ট্রাক্ট সোর্স ভেরিফাই করুন** যাতে ব্যবহারকারীরা বিশ্বাস করতে পারে যে নামযুক্ত কন্ট্রাক্টটি প্রত্যাশা অনুযায়ী আচরণ করবে
## ঝুঁকি {#risks}
-স্মার্ট কন্ট্র্যাক্টের নামকরণ Ethereum-এর ব্যবহারকারীদের জন্য উল্লেখযোগ্য সুবিধা প্রদান করে, তবে, ENS ডোমেনের মালিকদের তাদের ব্যবস্থাপনার ক্ষেত্রে সতর্ক থাকতে হবে। উল্লেখযোগ্য ঝুঁকির মধ্যে রয়েছে:
+স্মার্ট কন্ট্রাক্ট এর নামকরণ ইথিরিয়াম এর ব্যবহারকারীদের জন্য উল্লেখযোগ্য সুবিধা প্রদান করে, তবে, ENS ডোমেইনের মালিকদের তাদের পরিচালনার ক্ষেত্রে সতর্ক থাকতে হবে। উল্লেখযোগ্য ঝুঁকিগুলোর মধ্যে রয়েছে:
-- **মেয়াদ শেষ হওয়া**: DNS নামের মতোই, ENS নামের নিবন্ধনগুলি সীমিত সময়ের জন্য হয়। তাই মালিকদের তাদের ডোমেনের মেয়াদ শেষ হওয়ার তারিখগুলি পর্যবেক্ষণ করা এবং মেয়াদ শেষ হওয়ার অনেক আগেই সেগুলি নবায়ন করা অত্যাবশ্যক। ENS অ্যাপ এবং Enscribe উভয়ই ডোমেনের মালিকদের জন্য মেয়াদ শেষ হওয়ার সময় ভিজ্যুয়াল ইন্ডিকেটর সরবরাহ করে।
-- **মালিকানায় পরিবর্তন**: ENS রেকর্ডগুলি Ethereum-এ NFT হিসাবে উপস্থাপিত হয়, যেখানে একটি নির্দিষ্ট `.eth` ডোমেনের মালিকের দখলে সংশ্লিষ্ট NFT থাকে। সুতরাং যদি কোনো ভিন্ন অ্যাকাউন্ট এই NFT-এর মালিকানা নেয়, নতুন মালিক তাদের ইচ্ছামতো যেকোনো ENS রেকর্ড পরিবর্তন করতে পারে।
+- **মেয়াদোত্তীর্ণ**: DNS নামের মতোই, ENS নামের নিবন্ধনগুলো সীমিত সময়ের জন্য হয়। তাই এটি অত্যন্ত গুরুত্বপূর্ণ যে মালিকরা তাদের ডোমেইনের মেয়াদোত্তীর্ণের তারিখগুলো পর্যবেক্ষণ করেন এবং মেয়াদ শেষ হওয়ার আগেই সেগুলো রিনিউ করেন। ENS App এবং Enscribe উভয়ই ডোমেইন মালিকদের জন্য মেয়াদ শেষ হওয়ার সময় ভিজ্যুয়াল ইন্ডিকেটর প্রদান করে।
+- **মালিকানা পরিবর্তন**: ENS রেকর্ডগুলো ইথিরিয়াম এ NFT হিসেবে উপস্থাপন করা হয়, যেখানে একটি নির্দিষ্ট `.eth` ডোমেইনের মালিকের কাছে সংশ্লিষ্ট NFT থাকে। তাই যদি অন্য কোনো একাউন্ট এই NFT এর মালিকানা গ্রহণ করে, তবে নতুন মালিক তাদের ইচ্ছামতো যেকোনো ENS রেকর্ড পরিবর্তন করতে পারবেন।
-এই ধরনের ঝুঁকি কমাতে, `.eth` ২য় স্তরের ডোমেনের (2LD) মালিকের অ্যাকাউন্ট একটি মাল্টি-সিগ ওয়ালেটের মাধ্যমে সুরক্ষিত করা উচিত এবং কন্ট্র্যাক্টের নামকরণ পরিচালনার জন্য সাবডোমেন তৈরি করা উচিত। এইভাবে সাবডোমেন স্তরে মালিকানায় কোনো দুর্ঘটনাজনিত বা দূষিত পরিবর্তনের ক্ষেত্রে, সেগুলি 2LD মালিক দ্বারা ওভাররাইড করা যেতে পারে।
+এই ধরনের ঝুঁকি কমানোর জন্য, `.eth` ২য় স্তরের ডোমেইনগুলোর (2LD) মালিকের একাউন্ট একটি মাল্টিসিগ ওয়ালেট এর মাধ্যমে সুরক্ষিত করা উচিত এবং কন্ট্রাক্ট নামকরণ পরিচালনার জন্য সাবডোমেইন তৈরি করা উচিত। এইভাবে সাবডোমেইন স্তরে মালিকানায় কোনো দুর্ঘটনাবশত বা ক্ষতিকারক পরিবর্তন হলে, 2LD মালিক সেগুলো ওভাররাইড করতে পারবেন।
-## কন্ট্র্যাক্ট নামকরণের ভবিষ্যৎ {#future}
+## কন্ট্রাক্ট নামকরণের ভবিষ্যৎ {#future}
-কন্ট্র্যাক্টের নামকরণ ড্যাপ ডেভেলপমেন্টের জন্য একটি সেরা অনুশীলন হয়ে উঠছে, যেমনভাবে ডোমেন নামগুলি ওয়েবে আইপি ঠিকানা প্রতিস্থাপন করেছে। ওয়ালেট, এক্সপ্লোরার এবং ড্যাশবোর্ডের মতো আরও পরিকাঠামো কন্ট্র্যাক্টের জন্য ENS রেজোলিউশনকে একীভূত করার সাথে সাথে, নামযুক্ত কন্ট্র্যাক্টগুলি নিরাপত্তা উন্নত করবে এবং ইকোসিস্টেম জুড়ে ত্রুটিগুলি হ্রাস করবে।
+কন্ট্রাক্ট নামকরণ ডিএ্যাপ ডেভেলপমেন্টের জন্য একটি সেরা অনুশীলন হয়ে উঠছে, ঠিক যেমনভাবে ডোমেইন নামগুলো ওয়েবে আইপি এডড্রেস কে প্রতিস্থাপন করেছে। যেহেতু ওয়ালেট, এক্সপ্লোরার এবং ড্যাশবোর্ডের মতো আরও বেশি অবকাঠামো কন্ট্রাক্ট এর জন্য ENS রেজোলিউশনকে একীভূত করছে, নামযুক্ত কন্ট্রাক্টগুলো ইকোসিস্টেম জুড়ে নিরাপত্তা উন্নত করবে এবং ত্রুটি কমাবে।
-স্মার্ট কন্ট্র্যাক্টগুলিকে সহজে চেনা এবং সে সম্পর্কে যুক্তি তৈরি করার মাধ্যমে, নামকরণ Ethereum-এর ব্যবহারকারী এবং অ্যাপগুলির মধ্যে ব্যবধান পূরণ করতে সাহায্য করে, ব্যবহারকারীদের জন্য নিরাপত্তা এবং UX উভয়ই উন্নত করে।
+স্মার্ট কন্ট্রাক্ট গুলোকে সহজে চেনা এবং বোঝার উপযোগী করে তোলার মাধ্যমে, নামকরণ ইথিরিয়াম এ ব্যবহারকারী এবং অ্যাপগুলোর মধ্যে ব্যবধান দূর করতে সাহায্য করে, যা ব্যবহারকারীদের জন্য নিরাপত্তা এবং UX উভয়ই উন্নত করে।
## আরও পড়ুন {#further-reading}
-- [ENS-এর মাধ্যমে স্মার্ট কন্ট্র্যাক্ট-এর নামকরণ](https://docs.ens.domains/web/naming-contracts/)
-- [Enscribe-এর মাধ্যমে স্মার্ট কন্ট্র্যাক্ট-এর নামকরণ](https://www.enscribe.xyz/docs)।
+- [ENS এর মাধ্যমে স্মার্ট কন্ট্রাক্ট এর নামকরণ](https://docs.ens.domains/web/naming-contracts/)
+- [Enscribe এর মাধ্যমে স্মার্ট কন্ট্রাক্ট এর নামকরণ](https://www.enscribe.xyz/docs)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/security/index.md b/public/content/translations/bn/developers/docs/smart-contracts/security/index.md
index 7a8a17025a0..732a1174ee1 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/security/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/security/index.md
@@ -1,54 +1,54 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট সুরক্ষা"
-description: "সুরক্ষিত ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট তৈরির জন্য নির্দেশাবলীর একটি সংক্ষিপ্ত বিবরণ"
+title: স্মার্ট কন্ট্রাক্ট নিরাপত্তা
+description: নিরাপদ ইথিরিয়াম স্মার্ট কন্ট্রাক্ট তৈরির নির্দেশিকাগুলির একটি ওভারভিউ
lang: bn
---
-স্মার্ট কন্ট্র্যাক্টগুলো অত্যন্ত ফ্লেক্সিবল, এবং বিপুল পরিমাণ ভ্যালু ও ডেটা নিয়ন্ত্রণ করতে সক্ষম, যখন ব্লকচেইনে ডিপ্লয় করা কোডের উপর ভিত্তি করে অপরিবর্তনীয় লজিক চালায়। এটি ট্রাস্টলেস এবং ডিসেন্ট্রালাইজড এপ্লিকেশনগুলোর একটি প্রাণবন্ত ইকোসিস্টেম তৈরি করেছে যা লিগ্যাসি সিস্টেমের তুলনায় অনেক সুবিধা প্রদান করে। তারা স্মার্ট কন্ট্র্যাক্টে থাকা দুর্বলতাগুলোকে কাজে লাগিয়ে মুনাফা অর্জন করতে চাওয়া অ্যাটাকারদের জন্য সুযোগও তৈরি করে।
+স্মার্ট কন্ট্রাক্ট অত্যন্ত নমনীয় এবং প্রচুর পরিমাণ ভ্যালু ও ডেটা নিয়ন্ত্রণ করতে সক্ষম, যা ব্লকচেইন-এ ডিপ্লয় করা কোডের উপর ভিত্তি করে ইমমিউটেবল লজিক চালায়। এটি ট্রাস্টলেস এবং ডিসেন্ট্রালাইজড এপ্লিকেশন-এর একটি প্রাণবন্ত ইকোসিস্টেম তৈরি করেছে যা লিগ্যাসি সিস্টেমের তুলনায় অনেক সুবিধা প্রদান করে। এগুলো আক্রমণকারীদের জন্য স্মার্ট কন্ট্রাক্ট-এর দুর্বলতাগুলোকে কাজে লাগিয়ে লাভবান হওয়ার সুযোগও তৈরি করে।
-পাবলিক ব্লকচেইন, যেমন ইথেরিয়াম, স্মার্ট কন্ট্র্যাক্ট সুরক্ষিত করার বিষয়টিকে আরও জটিল করে তোলে। ডিপ্লয় করা কন্ট্র্যাক্ট কোড _সাধারণত_ নিরাপত্তা ত্রুটি প্যাচ করার জন্য পরিবর্তন করা যায় না, যেখানে স্মার্ট কন্ট্র্যাক্ট থেকে চুরি করা সম্পদগুলো ট্র্যাক করা অত্যন্ত কঠিন এবং অপরিবর্তনীয়তার কারণে বেশিরভাগই পুনরুদ্ধার করা যায় না।
+পাবলিক ব্লকচেইন, যেমন [ইথিরিয়াম](/), স্মার্ট কন্ট্রাক্ট সুরক্ষিত করার বিষয়টিকে আরও জটিল করে তোলে। ডিপ্লয় করা কন্ট্রাক্ট কোড _সাধারণত_ সিকিউরিটি ত্রুটিগুলো ঠিক করার জন্য পরিবর্তন করা যায় না, অন্যদিকে স্মার্ট কন্ট্রাক্ট থেকে চুরি হওয়া সম্পদ ট্র্যাক করা অত্যন্ত কঠিন এবং ইমমিউটেবল হওয়ার কারণে বেশিরভাগ ক্ষেত্রেই তা পুনরুদ্ধার করা অসম্ভব।
-যদিও পরিসংখ্যান ভিন্ন হতে পারে, তবে অনুমান করা হয় যে স্মার্ট কন্ট্র্যাক্টগুলোতে নিরাপত্তা ত্রুটির কারণে চুরি বা হারিয়ে যাওয়া মোট মূল্যের পরিমাণ সহজেই $1 বিলিয়নের বেশি। এর মধ্যে উচ্চ-প্রোফাইল ঘটনাগুলো অন্তর্ভুক্ত, যেমন [DAO হ্যাক](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3.6M ETH চুরি হয়েছে, যার আজকের মূল্যে $1B-এর বেশি), [প্যারিটি মাল্টি-সিগ ওয়ালেট হ্যাক](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach) (হ্যাকারদের কাছে $30M হারিয়েছে), এবং [প্যারিটি ফ্রোজেন ওয়ালেট সমস্যা](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (ETH-এ $300M-এর বেশি চিরতরে লক হয়ে গেছে)।
+যদিও পরিসংখ্যান ভিন্ন হতে পারে, তবে অনুমান করা হয় যে স্মার্ট কন্ট্রাক্ট-এর সিকিউরিটি ত্রুটির কারণে চুরি হওয়া বা হারিয়ে যাওয়া ভ্যালুর মোট পরিমাণ সহজেই 1 বিলিয়ন ডলারের বেশি। এর মধ্যে রয়েছে হাই-প্রোফাইল ঘটনা, যেমন [DAO হ্যাক](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3.6M ETH চুরি হয়েছে, যার বর্তমান মূল্য 1B ডলারের বেশি), [প্যারিটি মাল্টিসিগ ওয়ালেট হ্যাক](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach) (হ্যাকারদের কাছে 30M ডলার হারানো), এবং [প্যারিটি ফ্রোজেন ওয়ালেট ইস্যু](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (300M ডলারের বেশি ETH চিরতরে লক হয়ে যাওয়া)।
-উপরে উল্লিখিত সমস্যাগুলো ডেভেলপারদের জন্য সুরক্ষিত, মজবুত এবং স্থিতিস্থাপক স্মার্ট কন্ট্র্যাক্ট তৈরিতে প্রচেষ্টা বিনিয়োগ করা অপরিহার্য করে তোলে। স্মার্ট কন্ট্র্যাক্ট সুরক্ষা একটি গুরুতর ব্যবসা, এবং এটি এমন একটি বিষয় যা প্রত্যেক ডেভেলপারের ভালোভাবে শেখা উচিত। এই গাইডটি ইথেরিয়াম ডেভেলপারদের জন্য নিরাপত্তা বিবেচনার বিষয়গুলো কভার করবে এবং স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা উন্নত করার জন্য রিসোর্সগুলো অন্বেষণ করবে।
+উপরে উল্লিখিত সমস্যাগুলোর কারণে ডেভেলপারদের জন্য নিরাপদ, শক্তিশালী এবং স্থিতিস্থাপক স্মার্ট কন্ট্রাক্ট তৈরিতে প্রচেষ্টা বিনিয়োগ করা অপরিহার্য হয়ে ওঠে। স্মার্ট কন্ট্রাক্ট নিরাপত্তা একটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, এবং এটি শেখা প্রত্যেক ডেভেলপারের জন্যই ভালো হবে। এই নির্দেশিকাটি ইথিরিয়াম ডেভেলপারদের জন্য সিকিউরিটি বিবেচনাগুলো কভার করবে এবং স্মার্ট কন্ট্রাক্ট নিরাপত্তা উন্নত করার রিসোর্সগুলো অন্বেষণ করবে।
## পূর্বশর্ত {#prerequisites}
-নিরাপত্তার বিষয়টি মোকাবেলা করার আগে নিশ্চিত করুন যে আপনি [স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্টের মূল বিষয়গুলো](/developers/docs/smart-contracts/) সম্পর্কে পরিচিত।
+নিরাপত্তা নিয়ে কাজ শুরু করার আগে নিশ্চিত করুন যে আপনার [স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের মৌলিক বিষয়গুলো](/developers/docs/smart-contracts/) সম্পর্কে ভালো ধারণা আছে।
-## সুরক্ষিত ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট তৈরির জন্য নির্দেশিকা {#smart-contract-security-guidelines}
+## নিরাপদ ইথিরিয়াম স্মার্ট কন্ট্রাক্ট তৈরির নির্দেশিকা {#smart-contract-security-guidelines}
-### ১. সঠিক অ্যাক্সেস কন্ট্রোল ডিজাইন করুন {#design-proper-access-controls}
+### 1. সঠিক এক্সেস কন্ট্রোল ডিজাইন করুন {#design-proper-access-controls}
-স্মার্ট কন্ট্র্যাক্টে, `public` বা `external` হিসেবে চিহ্নিত ফাংশনগুলো যেকোনো এক্সটার্নালি ওনড অ্যাকাউন্ট (EOAs) বা কন্ট্র্যাক্ট অ্যাকাউন্ট দ্বারা কল করা যেতে পারে। ফাংশনগুলোর জন্য পাবলিক ভিজিবিলিটি নির্দিষ্ট করা প্রয়োজন যদি আপনি চান অন্যরা আপনার কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করুক। তবে, `private` হিসেবে চিহ্নিত ফাংশনগুলো শুধুমাত্র স্মার্ট কন্ট্র্যাক্টের মধ্যে থাকা ফাংশন দ্বারা কল করা যেতে পারে, এক্সটার্নাল অ্যাকাউন্ট দ্বারা নয়। প্রতিটি নেটওয়ার্ক অংশগ্রহণকারীকে কন্ট্র্যাক্ট ফাংশনে অ্যাক্সেস দেওয়া সমস্যা তৈরি করতে পারে, বিশেষ করে যদি এর মানে হয় যে কেউ সংবেদনশীল অপারেশন (যেমন, নতুন টোকেন মিন্ট করা) সম্পাদন করতে পারে।
+স্মার্ট কন্ট্রাক্ট-এ, `public` বা `external` হিসেবে চিহ্নিত ফাংশনগুলো যেকোনো এক্সটার্নালি ওনড একাউন্ট (EOAs) বা কন্ট্রাক্ট একাউন্ট দ্বারা কল করা যেতে পারে। আপনি যদি চান অন্যরা আপনার কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করুক, তবে ফাংশনগুলোর জন্য পাবলিক ভিজিবিলিটি নির্দিষ্ট করা প্রয়োজন। তবে `private` হিসেবে চিহ্নিত ফাংশনগুলো শুধুমাত্র স্মার্ট কন্ট্রাক্ট-এর ভেতরের ফাংশন দ্বারাই কল করা যায়, কোনো এক্সটার্নাল একাউন্ট দ্বারা নয়। নেটওয়ার্ক-এর প্রতিটি অংশগ্রহণকারীকে কন্ট্রাক্ট ফাংশনগুলোতে এক্সেস দেওয়া সমস্যার কারণ হতে পারে, বিশেষ করে যদি এর মানে হয় যে যেকেউ সংবেদনশীল কাজগুলো (যেমন, নতুন টোকেন মিন্ট করা) করতে পারে।
-স্মার্ট কন্ট্র্যাক্ট ফাংশনের অননুমোদিত ব্যবহার রোধ করতে, সুরক্ষিত অ্যাক্সেস কন্ট্রোল বাস্তবায়ন করা প্রয়োজন। অ্যাক্সেস কন্ট্রোল মেকানিজম একটি স্মার্ট কন্ট্র্যাক্টে নির্দিষ্ট ফাংশন ব্যবহার করার ক্ষমতাকে অনুমোদিত সত্তার মধ্যে সীমাবদ্ধ করে, যেমন কন্ট্র্যাক্ট পরিচালনার জন্য দায়ী অ্যাকাউন্টগুলো। স্মার্ট কন্ট্র্যাক্টে অ্যাক্সেস কন্ট্রোল বাস্তবায়নের জন্য **ওনেবল প্যাটার্ন** এবং **রোল-বেসড কন্ট্রোল** দুটি দরকারী প্যাটার্ন:
+স্মার্ট কন্ট্রাক্ট ফাংশনগুলোর অননুমোদিত ব্যবহার রোধ করতে, নিরাপদ এক্সেস কন্ট্রোল বাস্তবায়ন করা প্রয়োজন। এক্সেস কন্ট্রোল মেকানিজমগুলো একটি স্মার্ট কন্ট্রাক্ট-এর নির্দিষ্ট ফাংশনগুলো ব্যবহারের ক্ষমতা শুধুমাত্র অনুমোদিত সত্তাগুলোর মধ্যে সীমাবদ্ধ করে, যেমন কন্ট্রাক্ট পরিচালনার জন্য দায়ী একাউন্টগুলো। স্মার্ট কন্ট্রাক্ট-এ এক্সেস কন্ট্রোল বাস্তবায়নের জন্য **Ownable pattern** এবং **role-based control** হলো দুটি কার্যকরী প্যাটার্ন:
-#### ওনেবল প্যাটার্ন {#ownable-pattern}
+#### Ownable প্যাটার্ন {#ownable-pattern}
-ওনেবল প্যাটার্নে, কন্ট্র্যাক্ট-তৈরির প্রক্রিয়া চলাকালীন একটি অ্যাড্রেসকে কন্ট্র্যাক্টের “মালিক” হিসাবে সেট করা হয়। সুরক্ষিত ফাংশনগুলোতে একটি `OnlyOwner` মডিফায়ার বরাদ্দ করা হয়, যা নিশ্চিত করে যে কন্ট্র্যাক্টটি ফাংশনটি কার্যকর করার আগে কলিং অ্যাড্রেসের পরিচয় প্রমাণ করে। কন্ট্র্যাক্টের মালিক ছাড়া অন্য অ্যাড্রেস থেকে সুরক্ষিত ফাংশনে করা কলগুলো সর্বদা রিভার্ট হয়, যা অবাঞ্ছিত অ্যাক্সেস প্রতিরোধ করে।
+Ownable প্যাটার্নে, কন্ট্রাক্ট তৈরির প্রক্রিয়ার সময় একটি এডড্রেস-কে কন্ট্রাক্টের "মালিক" (owner) হিসেবে সেট করা হয়। সুরক্ষিত ফাংশনগুলোতে একটি `OnlyOwner` মডিফায়ার অ্যাসাইন করা হয়, যা নিশ্চিত করে যে ফাংশনটি এক্সিকিউট করার আগে কন্ট্রাক্টটি কলিং এডড্রেস-এর পরিচয় যাচাই করে। কন্ট্রাক্টের মালিক ছাড়া অন্য কোনো এডড্রেস থেকে সুরক্ষিত ফাংশনগুলোতে কল করা হলে তা সবসময় রিভার্ট হয়ে যায়, যা অবাঞ্ছিত এক্সেস প্রতিরোধ করে।
-#### ভূমিকা-ভিত্তিক অ্যাক্সেস কন্ট্রোল {#role-based-access-control}
+#### রোল-ভিত্তিক এক্সেস কন্ট্রোল {#role-based-access-control}
-একটি স্মার্ট কন্ট্র্যাক্টে একটি একক অ্যাড্রেসকে `Owner` হিসাবে নিবন্ধন করা সেন্ট্রালাইজেশনের ঝুঁকি তৈরি করে এবং একটি সিঙ্গেল পয়েন্ট-অফ-ফেলিওর উপস্থাপন করে। যদি মালিকের অ্যাকাউন্টের কী গুলো আপোস করা হয়, তাহলে অ্যাটাকাররা মালিকানাধীন কন্ট্র্যাক্টে আক্রমণ করতে পারে। এ কারণেই একাধিক প্রশাসনিক অ্যাকাউন্ট সহ একটি ভূমিকা-ভিত্তিক অ্যাক্সেস কন্ট্রোল প্যাটার্ন ব্যবহার করা একটি ভাল বিকল্প হতে পারে।
+একটি স্মার্ট কন্ট্রাক্ট-এ শুধুমাত্র একটি এডড্রেস-কে `Owner` হিসেবে রেজিস্টার করা সেন্ট্রালাইজেশনের ঝুঁকি তৈরি করে এবং এটি একটি সিঙ্গেল পয়েন্ট-অফ-ফেইলিওর (single point-of-failure) হিসেবে কাজ করে। যদি মালিকের একাউন্ট কি (keys) আপস করা হয়, তবে আক্রমণকারীরা মালিকানাধীন কন্ট্রাক্টে আক্রমণ করতে পারে। এই কারণেই একাধিক অ্যাডমিনিস্ট্রেটিভ একাউন্ট-এর সাথে একটি রোল-ভিত্তিক এক্সেস কন্ট্রোল প্যাটার্ন ব্যবহার করা একটি ভালো বিকল্প হতে পারে।
-ভূমিকা-ভিত্তিক অ্যাক্সেস কন্ট্রোলে, সংবেদনশীল ফাংশনগুলোতে অ্যাক্সেস বিশ্বস্ত অংশগ্রহণকারীদের একটি সেটের মধ্যে বিতরণ করা হয়। উদাহরণস্বরূপ, একটি অ্যাকাউন্ট টোকেন মিন্ট করার জন্য দায়ী হতে পারে, যখন অন্য একটি অ্যাকাউন্ট আপগ্রেড সম্পাদন করে বা কন্ট্র্যাক্টটি পজ করে। এইভাবে অ্যাক্সেস কন্ট্রোল ডিসেন্ট্রালাইজ করা সিঙ্গেল পয়েন্ট অফ ফেলিওর দূর করে এবং ব্যবহারকারীদের জন্য বিশ্বাসের অনুমান কমায়।
+রোল-ভিত্তিক এক্সেস কন্ট্রোলে, সংবেদনশীল ফাংশনগুলোর এক্সেস বিশ্বস্ত অংশগ্রহণকারীদের একটি সেটের মধ্যে ডিস্ট্রিবিউটেড থাকে। উদাহরণস্বরূপ, একটি একাউন্ট টোকেন মিন্ট করার জন্য দায়ী হতে পারে, যখন অন্য একটি একাউন্ট আপগ্রেড করে বা কন্ট্রাক্টটি পজ (pause) করে। এইভাবে এক্সেস কন্ট্রোল ডিসেন্ট্রালাইজড করা সিঙ্গেল পয়েন্ট অফ ফেইলিওর দূর করে এবং ব্যবহারকারীদের জন্য ট্রাস্ট অ্যাসাম্পশন (trust assumptions) কমায়।
##### মাল্টি-সিগনেচার ওয়ালেট ব্যবহার করা
-সুরক্ষিত অ্যাক্সেস কন্ট্রোল বাস্তবায়নের আরেকটি পদ্ধতি হল একটি কন্ট্র্যাক্ট পরিচালনা করার জন্য একটি [মাল্টি-সিগনেচার অ্যাকাউন্ট](/developers/docs/smart-contracts/#multisig) ব্যবহার করা। একটি সাধারণ EOA-এর মতো নয়, মাল্টি-সিগনেচার অ্যাকাউন্টগুলো একাধিক সত্তার মালিকানাধীন এবং লেনদেন সম্পাদন করার জন্য ন্যূনতম সংখ্যক অ্যাকাউন্ট থেকে স্বাক্ষরের প্রয়োজন হয়—ধরুন 5টির মধ্যে 3টি।
+নিরাপদ এক্সেস কন্ট্রোল বাস্তবায়নের আরেকটি পদ্ধতি হলো একটি কন্ট্রাক্ট পরিচালনা করার জন্য একটি [মাল্টি-সিগনেচার একাউন্ট](/developers/docs/smart-contracts/#multisig) ব্যবহার করা। একটি সাধারণ EOA-এর বিপরীতে, মাল্টি-সিগনেচার একাউন্টগুলো একাধিক সত্তার মালিকানাধীন থাকে এবং লেনদেন এক্সিকিউট করার জন্য ন্যূনতম সংখ্যক একাউন্ট থেকে সিগনেচারের প্রয়োজন হয়—যেমন 5 জনের মধ্যে 3 জন।
-অ্যাক্সেস কন্ট্রোলের জন্য একটি মাল্টিসিগ ব্যবহার করা সুরক্ষার একটি অতিরিক্ত লেয়ার যোগ করে কারণ টার্গেট কন্ট্র্যাক্টের উপর অ্যাকশনগুলোর জন্য একাধিক পক্ষের সম্মতি প্রয়োজন। এটি বিশেষভাবে উপযোগী যদি ওনেবল প্যাটার্ন ব্যবহার করা প্রয়োজন হয়, কারণ এটি একজন অ্যাটাকার বা দুর্বৃত্ত অভ্যন্তরীণ ব্যক্তির পক্ষে ক্ষতিকারক উদ্দেশ্যে সংবেদনশীল কন্ট্র্যাক্ট ফাংশনগুলোকে ম্যানিপুলেট করা আরও কঠিন করে তোলে।
+এক্সেস কন্ট্রোলের জন্য একটি মাল্টিসিগ ব্যবহার করা নিরাপত্তার একটি অতিরিক্ত স্তর যুক্ত করে, কারণ টার্গেট কন্ট্রাক্টে কোনো কাজ করার জন্য একাধিক পক্ষের সম্মতির প্রয়োজন হয়। এটি বিশেষভাবে কার্যকর যদি Ownable প্যাটার্ন ব্যবহার করা প্রয়োজনীয় হয়, কারণ এটি কোনো আক্রমণকারী বা ক্ষতিকারক ইনসাইডারের জন্য ক্ষতিকারক উদ্দেশ্যে সংবেদনশীল কন্ট্রাক্ট ফাংশনগুলোকে ম্যানিপুলেট করা আরও কঠিন করে তোলে।
-### 2. কন্ট্র্যাক্ট অপারেশন রক্ষা করতে require(), assert(), এবং revert() স্টেটমেন্ট ব্যবহার করুন {#use-require-assert-revert}
+### 2. কন্ট্রাক্ট অপারেশনগুলো সুরক্ষিত করতে require(), assert(), এবং revert() স্টেটমেন্ট ব্যবহার করুন {#use-require-assert-revert}
-যেমন উল্লেখ করা হয়েছে, একবার আপনার স্মার্ট কন্ট্র্যাক্ট ব্লকচেইনে ডিপ্লয় করা হলে যে কেউ পাবলিক ফাংশন কল করতে পারে। যেহেতু আপনি আগে থেকে জানতে পারবেন না যে এক্সটার্নাল অ্যাকাউন্টগুলো কীভাবে একটি কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করবে, তাই ডিপ্লয় করার আগে সমস্যাযুক্ত অপারেশনের বিরুদ্ধে অভ্যন্তরীণ সুরক্ষা প্রয়োগ করা আদর্শ। আপনি `require()`, `assert()`, এবং `revert()` স্টেটমেন্ট ব্যবহার করে স্মার্ট কন্ট্র্যাক্টে সঠিক আচরণ প্রয়োগ করতে পারেন যাতে এক্সিকিউশন নির্দিষ্ট প্রয়োজনীয়তা পূরণ করতে ব্যর্থ হলে ব্যতিক্রম ট্রিগার করে এবং স্টেট পরিবর্তনগুলো রিভার্ট করে।
+যেমনটি উল্লেখ করা হয়েছে, আপনার স্মার্ট কন্ট্রাক্ট একবার ব্লকচেইন-এ ডিপ্লয় হয়ে গেলে যেকেউ এর পাবলিক ফাংশনগুলো কল করতে পারে। যেহেতু আপনি আগে থেকে জানতে পারবেন না যে এক্সটার্নাল একাউন্টগুলো কীভাবে একটি কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করবে, তাই ডিপ্লয় করার আগে সমস্যামূলক অপারেশনগুলোর বিরুদ্ধে অভ্যন্তরীণ সুরক্ষামূলক ব্যবস্থা বাস্তবায়ন করা আদর্শ। আপনি `require()`, `assert()`, এবং `revert()` স্টেটমেন্টগুলো ব্যবহার করে স্মার্ট কন্ট্রাক্ট-এ সঠিক আচরণ নিশ্চিত করতে পারেন, যা নির্দিষ্ট শর্ত পূরণ করতে ব্যর্থ হলে এক্সেপশন ট্রিগার করে এবং স্টেট পরিবর্তনগুলো রিভার্ট করে।
-**`require()`**: `require` ফাংশনের শুরুতে সংজ্ঞায়িত করা হয় এবং এটি নিশ্চিত করে যে কল করা ফাংশনটি কার্যকর করার আগে পূর্বনির্ধারিত শর্তগুলো পূরণ করা হয়েছে। একটি ফাংশনের সাথে অগ্রসর হওয়ার আগে ব্যবহারকারীর ইনপুট ভ্যালিডেট করতে, স্টেট ভ্যারিয়েবল চেক করতে বা কলিং অ্যাকাউন্টের পরিচয় প্রমাণ করতে একটি `require` স্টেটমেন্ট ব্যবহার করা যেতে পারে।
+**`require()`**: `require` ফাংশনগুলোর শুরুতে সংজ্ঞায়িত করা হয় এবং এটি নিশ্চিত করে যে কল করা ফাংশনটি এক্সিকিউট হওয়ার আগে পূর্বনির্ধারিত শর্তগুলো পূরণ হয়েছে। একটি `require` স্টেটমেন্ট ব্যবহার করে ব্যবহারকারীর ইনপুট যাচাই করা, স্টেট ভেরিয়েবল চেক করা, অথবা কোনো ফাংশনের কাজ এগিয়ে নেওয়ার আগে কলিং একাউন্ট-এর পরিচয় যাচাই করা যেতে পারে।
-**`assert()`**: `assert()` অভ্যন্তরীণ ত্রুটি সনাক্ত করতে এবং আপনার কোডে “ইনভ্যারিয়েন্ট” এর লঙ্ঘন পরীক্ষা করতে ব্যবহৃত হয়। একটি ইনভ্যারিয়েন্ট হলো একটি কন্ট্র্যাক্টের স্টেট সম্পর্কে একটি যৌক্তিক দাবি যা সমস্ত ফাংশন এক্সিকিউশনের জন্য সত্য থাকা উচিত। একটি উদাহরণ ইনভ্যারিয়েন্ট হলো একটি টোকেন কন্ট্র্যাক্টের সর্বোচ্চ মোট সরবরাহ বা ব্যালেন্স। `assert()` ব্যবহার করা নিশ্চিত করে যে আপনার কন্ট্র্যাক্ট কখনও একটি দুর্বল স্টেটে পৌঁছায় না, এবং যদি পৌঁছায়, তবে স্টেট ভ্যারিয়েবলের সমস্ত পরিবর্তন রোল ব্যাক করা হয়।
+**`assert()`**: `assert()` ব্যবহার করা হয় অভ্যন্তরীণ ত্রুটি শনাক্ত করতে এবং আপনার কোডে "ইনভ্যারিয়েন্ট" (invariants)-এর লঙ্ঘন চেক করতে। একটি ইনভ্যারিয়েন্ট হলো একটি কন্ট্রাক্টের স্টেট সম্পর্কে একটি যৌক্তিক দাবি যা সমস্ত ফাংশন এক্সিকিউশনের জন্য সত্য হওয়া উচিত। একটি ইনভ্যারিয়েন্টের উদাহরণ হলো একটি টোকেন কন্ট্রাক্টের সর্বোচ্চ মোট সাপ্লাই বা ব্যালেন্স। `assert()` ব্যবহার করা নিশ্চিত করে যে আপনার কন্ট্রাক্ট কখনোই কোনো দুর্বল স্টেটে পৌঁছাবে না, এবং যদি পৌঁছায়ও, তবে স্টেট ভেরিয়েবলের সমস্ত পরিবর্তন রোল ব্যাক করা হয়।
-**`revert()`**: `revert()` একটি if-else স্টেটমেন্টে ব্যবহার করা যেতে পারে যা প্রয়োজনীয় শর্ত পূরণ না হলে একটি ব্যতিক্রম ট্রিগার করে। নিচের স্যাম্পল কন্ট্র্যাক্টটি ফাংশনের এক্সিকিউশন রক্ষা করতে `revert()` ব্যবহার করে:
+**`revert()`**: `revert()` একটি if-else স্টেটমেন্টে ব্যবহার করা যেতে পারে যা প্রয়োজনীয় শর্ত পূরণ না হলে একটি এক্সেপশন ট্রিগার করে। নিচের নমুনা কন্ট্রাক্টটি ফাংশনগুলোর এক্সিকিউশন সুরক্ষিত করতে `revert()` ব্যবহার করে:
```
pragma solidity ^0.8.4;
@@ -70,89 +70,89 @@ contract VendingMachine {
}
```
-### 3. স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করুন এবং কোডের সঠিকতা যাচাই করুন {#test-smart-contracts-and-verify-code-correctness}
+### 3. স্মার্ট কন্ট্রাক্ট পরীক্ষা করুন এবং কোডের সঠিকতা যাচাই করুন {#test-smart-contracts-and-verify-code-correctness}
-[ইথেরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/) এ চালিত কোডের অপরিবর্তনীয়তার অর্থ হলো স্মার্ট কন্ট্র্যাক্টগুলোর ডেভেলপমেন্ট পর্যায়ে উচ্চ স্তরের গুণমান মূল্যায়নের প্রয়োজন হয়। আপনার কন্ট্র্যাক্ট ব্যাপকভাবে পরীক্ষা করা এবং যেকোনো অপ্রত্যাশিত ফলাফলের জন্য এটি পর্যবেক্ষণ করা নিরাপত্তা অনেক উন্নত করবে এবং দীর্ঘমেয়াদে আপনার ব্যবহারকারীদের রক্ষা করবে।
+[ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)-এ চলা কোডের ইমমিউটেবল প্রকৃতির মানে হলো স্মার্ট কন্ট্রাক্টগুলো ডেভেলপমেন্ট পর্যায়ে উচ্চ স্তরের গুণমান মূল্যায়নের দাবি রাখে। আপনার কন্ট্রাক্টটি ব্যাপকভাবে পরীক্ষা করা এবং কোনো অপ্রত্যাশিত ফলাফলের জন্য এটি পর্যবেক্ষণ করা নিরাপত্তাকে অনেকাংশে উন্নত করবে এবং দীর্ঘমেয়াদে আপনার ব্যবহারকারীদের রক্ষা করবে।
-সাধারণ পদ্ধতি হলো ব্যবহারকারীদের কাছ থেকে কন্ট্র্যাক্ট যে মক ডেটা পাওয়ার আশা করে তা ব্যবহার করে ছোট ইউনিট টেস্ট লেখা। [ইউনিট টেস্টিং](/developers/docs/smart-contracts/testing/#unit-testing) নির্দিষ্ট ফাংশনের ফাংশনালিটি পরীক্ষা করার জন্য এবং একটি স্মার্ট কন্ট্র্যাক্ট প্রত্যাশিতভাবে কাজ করে তা নিশ্চিত করার জন্য ভালো।
+সাধারণ পদ্ধতি হলো মক ডেটা ব্যবহার করে ছোট ইউনিট টেস্ট লেখা, যা কন্ট্রাক্টটি ব্যবহারকারীদের কাছ থেকে পাবে বলে আশা করা হয়। নির্দিষ্ট ফাংশনগুলোর কার্যকারিতা পরীক্ষা করার জন্য এবং একটি স্মার্ট কন্ট্রাক্ট প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করার জন্য [ইউনিট টেস্টিং](/developers/docs/smart-contracts/testing/#unit-testing) ভালো।
-দুর্ভাগ্যবশত, বিচ্ছিন্নভাবে ব্যবহার করা হলে স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা উন্নত করার জন্য ইউনিট টেস্টিং ন্যূনতম কার্যকর। একটি ইউনিট টেস্ট প্রমাণ করতে পারে যে একটি ফাংশন মক ডেটার জন্য সঠিকভাবে এক্সিকিউট হয়, কিন্তু ইউনিট টেস্টগুলো ততটাই কার্যকর যতটা টেস্ট লেখা হয়। এটি মিস করা এজ কেস এবং দুর্বলতাগুলো সনাক্ত করা কঠিন করে তোলে যা আপনার স্মার্ট কন্ট্র্যাক্টের নিরাপত্তাকে ভেঙে দিতে পারে।
+দুর্ভাগ্যবশত, যখন আলাদাভাবে ব্যবহার করা হয় তখন স্মার্ট কন্ট্রাক্ট-এর নিরাপত্তা উন্নত করার জন্য ইউনিট টেস্টিং খুব কমই কার্যকর। একটি ইউনিট টেস্ট প্রমাণ করতে পারে যে একটি ফাংশন মক ডেটার জন্য সঠিকভাবে এক্সিকিউট হয়, কিন্তু ইউনিট টেস্টগুলো কেবল ততটাই কার্যকর যতটা টেস্ট লেখা হয়। এটি মিস হওয়া এজ কেস (edge cases) এবং দুর্বলতাগুলো শনাক্ত করা কঠিন করে তোলে যা আপনার স্মার্ট কন্ট্রাক্ট-এর নিরাপত্তা ভেঙে দিতে পারে।
-একটি ভালো পদ্ধতি হল [স্ট্যাটিক এবং ডাইনামিক বিশ্লেষণ](/developers/docs/smart-contracts/testing/#static-dynamic-analysis) ব্যবহার করে সম্পাদিত প্রপার্টি-বেসড টেস্টিংয়ের সাথে ইউনিট টেস্টিং একত্রিত করা। স্ট্যাটিক বিশ্লেষণ পৌঁছানোযোগ্য প্রোগ্রাম স্টেট এবং এক্সিকিউশন পাথ বিশ্লেষণ করতে নিম্ন-স্তরের উপস্থাপনার উপর নির্ভর করে, যেমন [কন্ট্রোল ফ্লো গ্রাফ](https://en.wikipedia.org/wiki/Control-flow_graph) এবং [অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি](https://deepsource.io/glossary/ast/)। এদিকে, ডাইনামিক বিশ্লেষণ কৌশল, যেমন [স্মার্ট কন্ট্র্যাক্ট ফাজিং](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry), নিরাপত্তা বৈশিষ্ট্য লঙ্ঘন করে এমন অপারেশন সনাক্ত করতে র্যান্ডম ইনপুট মান সহ কন্ট্র্যাক্ট কোড এক্সিকিউট করে।
+একটি ভালো পদ্ধতি হলো ইউনিট টেস্টিংয়ের সাথে [স্ট্যাটিক এবং ডায়নামিক অ্যানালাইসিস](/developers/docs/smart-contracts/testing/#static-dynamic-analysis) ব্যবহার করে করা প্রপার্টি-ভিত্তিক টেস্টিং একত্রিত করা। স্ট্যাটিক অ্যানালাইসিস পৌঁছানো যায় এমন প্রোগ্রাম স্টেট এবং এক্সিকিউশন পাথগুলো বিশ্লেষণ করতে লো-লেভেল রিপ্রেজেন্টেশন, যেমন [কন্ট্রোল ফ্লো গ্রাফ](https://en.wikipedia.org/wiki/Control-flow_graph) এবং [অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি](https://deepsource.io/glossary/ast/)-এর উপর নির্ভর করে। অন্যদিকে, ডায়নামিক অ্যানালাইসিস কৌশলগুলো, যেমন [স্মার্ট কন্ট্রাক্ট ফাজিং](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry), নিরাপত্তা বৈশিষ্ট্য লঙ্ঘন করে এমন অপারেশনগুলো শনাক্ত করতে র্যান্ডম ইনপুট ভ্যালু দিয়ে কন্ট্রাক্ট কোড এক্সিকিউট করে।
-[ফর্মাল ভেরিফিকেশন](/developers/docs/smart-contracts/formal-verification) স্মার্ট কন্ট্র্যাক্টে নিরাপত্তা বৈশিষ্ট্য যাচাই করার আরেকটি কৌশল। নিয়মিত পরীক্ষার মতো নয়, ফর্মাল ভেরিফিকেশন একটি স্মার্ট কন্ট্র্যাক্টে ত্রুটির অনুপস্থিতি নিশ্চিতভাবে প্রমাণ করতে পারে। এটি একটি ফর্মাল স্পেসিফিকেশন তৈরি করে অর্জন করা হয় যা পছন্দসই নিরাপত্তা বৈশিষ্ট্যগুলো ক্যাপচার করে এবং প্রমাণ করে যে কন্ট্র্যাক্টগুলোর একটি ফর্মাল মডেল এই স্পেসিফিকেশন মেনে চলে।
+স্মার্ট কন্ট্রাক্ট-এ নিরাপত্তা বৈশিষ্ট্য যাচাই করার আরেকটি কৌশল হলো [ফরমাল ভেরিফিকেশন](/developers/docs/smart-contracts/formal-verification)। সাধারণ টেস্টিংয়ের বিপরীতে, ফরমাল ভেরিফিকেশন একটি স্মার্ট কন্ট্রাক্ট-এ ত্রুটির অনুপস্থিতি চূড়ান্তভাবে প্রমাণ করতে পারে। এটি একটি ফরমাল স্পেসিফিকেশন তৈরি করে অর্জন করা হয় যা কাঙ্ক্ষিত নিরাপত্তা বৈশিষ্ট্যগুলো ক্যাপচার করে এবং প্রমাণ করে যে কন্ট্রাক্টগুলোর একটি ফরমাল মডেল এই স্পেসিফিকেশন মেনে চলে।
-### ৪. আপনার কোডের একটি স্বাধীন পর্যালোচনার জন্য অনুরোধ করুন {#get-independent-code-reviews}
+### 4. আপনার কোডের একটি স্বাধীন পর্যালোচনার জন্য জিজ্ঞাসা করুন {#get-independent-code-reviews}
-আপনার কন্ট্র্যাক্ট পরীক্ষা করার পরে, অন্যদের কোনো নিরাপত্তা সমস্যার জন্য সোর্স কোড চেক করতে বলা ভালো। টেস্টিং একটি স্মার্ট কন্ট্র্যাক্টের প্রতিটি ত্রুটি উন্মোচন করবে না, তবে একটি স্বাধীন পর্যালোচনা পাওয়া দুর্বলতা চিহ্নিত করার সম্ভাবনা বাড়িয়ে দেয়।
+আপনার কন্ট্রাক্ট পরীক্ষা করার পর, কোনো নিরাপত্তা সমস্যার জন্য সোর্স কোড চেক করতে অন্যদের বলা ভালো। টেস্টিং একটি স্মার্ট কন্ট্রাক্ট-এর প্রতিটি ত্রুটি উন্মোচন করবে না, তবে একটি স্বাধীন পর্যালোচনা পেলে দুর্বলতাগুলো শনাক্ত করার সম্ভাবনা বেড়ে যায়।
#### অডিট {#audits}
-একটি স্মার্ট কন্ট্র্যাক্ট অডিট কমিশন করা একটি স্বাধীন কোড রিভিউ পরিচালনা করার একটি উপায়। অডিটররা স্মার্ট কন্ট্র্যাক্টগুলো সুরক্ষিত এবং গুণমান ত্রুটি ও ডিজাইনের ভুল থেকে মুক্ত তা নিশ্চিত করতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।
+একটি স্মার্ট কন্ট্রাক্ট অডিট করানো হলো একটি স্বাধীন কোড পর্যালোচনা পরিচালনার একটি উপায়। স্মার্ট কন্ট্রাক্টগুলো নিরাপদ এবং গুণগত ত্রুটি ও ডিজাইনের ভুল থেকে মুক্ত তা নিশ্চিত করতে অডিটররা একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।
-তবুও, আপনার অডিটকে একটি অব্যর্থ সমাধান হিসেবে বিবেচনা করা উচিত নয়। স্মার্ট কন্ট্র্যাক্ট অডিট প্রতিটি বাগ ধরতে পারে না এবং বেশিরভাগই পর্যালোচনার একটি অতিরিক্ত রাউন্ড প্রদানের জন্য ডিজাইন করা হয়, যা প্রাথমিক ডেভেলপমেন্ট এবং পরীক্ষার সময় ডেভেলপারদের দ্বারা মিস করা সমস্যাগুলো সনাক্ত করতে সাহায্য করতে পারে। একটি স্মার্ট কন্ট্র্যাক্ট অডিটের সুবিধা সর্বাধিক করার জন্য আপনার অডিটরদের সাথে কাজ করার জন্য সেরা অনুশীলনগুলোও অনুসরণ করা উচিত, যেমন কোড সঠিকভাবে ডকুমেন্ট করা এবং ইনলাইন মন্তব্য যোগ করা।
+তা সত্ত্বেও, আপনার অডিটগুলোকে সব সমস্যার সমাধান (silver bullet) হিসেবে বিবেচনা করা এড়িয়ে চলা উচিত। স্মার্ট কন্ট্রাক্ট অডিট প্রতিটি বাগ ধরতে পারবে না এবং এগুলো মূলত পর্যালোচনার একটি অতিরিক্ত রাউন্ড প্রদান করার জন্য ডিজাইন করা হয়েছে, যা প্রাথমিক ডেভেলপমেন্ট এবং টেস্টিংয়ের সময় ডেভেলপারদের দ্বারা মিস হওয়া সমস্যাগুলো শনাক্ত করতে সাহায্য করতে পারে। একটি স্মার্ট কন্ট্রাক্ট অডিটের সুবিধা সর্বাধিক করতে আপনার অডিটরদের সাথে কাজ করার জন্য সর্বোত্তম অনুশীলনগুলোও অনুসরণ করা উচিত, যেমন কোড সঠিকভাবে ডকুমেন্ট করা এবং ইনলাইন কমেন্ট যোগ করা।
-- [স্মার্ট কন্ট্র্যাক্ট অডিটিং টিপস ও ট্রিকস](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_
-- [আপনার অডিট থেকে সর্বাধিক সুবিধা নিন](https://inference.ag/blog/2023-08-14-tips/) - _ইনফারেন্স_
+- [স্মার্ট কন্ট্রাক্ট অডিটিং টিপস এবং ট্রিকস](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_
+- [আপনার অডিটের সর্বোচ্চ ব্যবহার করুন](https://inference.ag/blog/2023-08-14-tips/) - _Inference_
#### বাগ বাউন্টি {#bug-bounties}
-একটি বাগ বাউন্টি প্রোগ্রাম সেট আপ করা এক্সটার্নাল কোড রিভিউ বাস্তবায়নের আরেকটি পদ্ধতি। একটি বাগ বাউন্টি হল এমন ব্যক্তিদের (সাধারণত হোয়াইটহ্যাট হ্যাকার) দেওয়া একটি আর্থিক পুরস্কার যারা একটি অ্যাপ্লিকেশনে দুর্বলতা আবিষ্কার করে।
+একটি বাগ বাউন্টি প্রোগ্রাম সেট আপ করা এক্সটার্নাল কোড পর্যালোচনা বাস্তবায়নের আরেকটি পদ্ধতি। বাগ বাউন্টি হলো একটি আর্থিক পুরস্কার যা সেই ব্যক্তিদের (সাধারণত হোয়াইটহ্যাট হ্যাকারদের) দেওয়া হয় যারা কোনো অ্যাপ্লিকেশনে দুর্বলতা আবিষ্কার করে।
-সঠিকভাবে ব্যবহার করা হলে, বাগ বাউন্টি হ্যাকার সম্প্রদায়ের সদস্যদের আপনার কোডকে গুরুতর ত্রুটির জন্য পরিদর্শন করার জন্য উৎসাহ দেয়। একটি বাস্তব-জীবনের উদাহরণ হল “ইনফিনিট মানি বাগ” যা একজন অ্যাটাকারকে [Optimism](https://www.optimism.io/)-এ সীমাহীন পরিমাণে ইথার তৈরি করতে দিত, যা Ethereum-এ চলমান একটি [লেয়ার 2](/layer-2/) প্রোটোকল। সৌভাগ্যবশত, একজন হোয়াইটহ্যাট হ্যাকার [ত্রুটিটি আবিষ্কার করেন](https://www.saurik.com/optimism.html) এবং টিমকে অবহিত করেন, [প্রক্রিয়াটিতে একটি বড় পেআউট অর্জন করেন](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/)।
+সঠিকভাবে ব্যবহার করা হলে, বাগ বাউন্টি হ্যাকার কমিউনিটির সদস্যদের আপনার কোডে গুরুতর ত্রুটিগুলো পরিদর্শন করার জন্য উৎসাহ দেয়। একটি বাস্তব জীবনের উদাহরণ হলো "ইনফিনিট মানি বাগ" যা একজন আক্রমণকারীকে ইথিরিয়ামে চলা একটি [লেয়ার ২](/layer-2/) প্রটোকল [Optimism](https://www.optimism.io/)-এ সীমাহীন পরিমাণ ইথার তৈরি করতে দিত। সৌভাগ্যবশত, একজন হোয়াইটহ্যাট হ্যাকার [ত্রুটিটি আবিষ্কার করেন](https://www.saurik.com/optimism.html) এবং টিমকে জানান, [যার ফলে তিনি একটি বড় অঙ্কের পুরস্কার অর্জন করেন](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/)।
-একটি দরকারী কৌশল হল একটি বাগ বাউন্টি প্রোগ্রামের পেআউটকে স্টেক করা ফান্ডের পরিমাণের অনুপাতে সেট করা। “[স্কেলিং বাগ বাউন্টি](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)” হিসাবে বর্ণিত, এই পদ্ধতিটি ব্যক্তিদের দুর্বলতাগুলো কাজে লাগানোর পরিবর্তে দায়িত্বশীলভাবে প্রকাশ করার জন্য আর্থিক উৎসাহ প্রদান করে।
+একটি কার্যকরী কৌশল হলো ঝুঁকিতে থাকা ফান্ডের পরিমাণের অনুপাতে একটি বাগ বাউন্টি প্রোগ্রামের পেআউট সেট করা। "[স্কেলিং বাগ বাউন্টি](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)" হিসেবে বর্ণিত এই পদ্ধতিটি ব্যক্তিদের দুর্বলতাগুলো কাজে লাগানোর পরিবর্তে দায়িত্বশীলভাবে প্রকাশ করার জন্য আর্থিক প্রণোদনা প্রদান করে।
-### ৫। স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্টের সময় সেরা অনুশীলনগুলো অনুসরণ করুন {#follow-smart-contract-development-best-practices}
+### 5. স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের সময় সর্বোত্তম অনুশীলনগুলো অনুসরণ করুন {#follow-smart-contract-development-best-practices}
-অডিট এবং বাগ বাউন্টির অস্তিত্ব উচ্চ-মানের কোড লেখার আপনার দায়িত্ব থেকে আপনাকে অব্যাহতি দেয় না। ভালো স্মার্ট কন্ট্র্যাক্ট সুরক্ষা সঠিক ডিজাইন এবং ডেভেলপমেন্ট প্রক্রিয়া অনুসরণ করার মাধ্যমে শুরু হয়:
+অডিট এবং বাগ বাউন্টির অস্তিত্ব আপনাকে উচ্চ-মানের কোড লেখার দায়িত্ব থেকে অব্যাহতি দেয় না। ভালো স্মার্ট কন্ট্রাক্ট নিরাপত্তা সঠিক ডিজাইন এবং ডেভেলপমেন্ট প্রক্রিয়া অনুসরণ করার মাধ্যমে শুরু হয়:
- সমস্ত কোড একটি ভার্সন কন্ট্রোল সিস্টেমে সংরক্ষণ করুন, যেমন git
-- সমস্ত কোড পরিবর্তন পুল রিকোয়েস্টের মাধ্যমে করুন
+- সমস্ত কোড পরিবর্তন পুল রিকোয়েস্টের (pull requests) মাধ্যমে করুন
-- নিশ্চিত করুন যে পুল রিকোয়েস্টগুলোতে অন্তত একজন স্বাধীন পর্যালোচক আছে—যদি আপনি কোনো প্রকল্পে একা কাজ করেন, তবে অন্য ডেভেলপার খুঁজে বের করার এবং কোড রিভিউ ট্রেড করার কথা বিবেচনা করুন
+- নিশ্চিত করুন যে পুল রিকোয়েস্টগুলোতে অন্তত একজন স্বাধীন পর্যালোচক আছে—যদি আপনি কোনো প্রজেক্টে একা কাজ করেন, তবে অন্যান্য ডেভেলপারদের খুঁজে বের করার এবং কোড পর্যালোচনার আদান-প্রদান করার কথা বিবেচনা করুন
-- স্মার্ট কন্ট্র্যাক্ট পরীক্ষা, কম্পাইল এবং ডিপ্লয় করার জন্য একটি [ডেভেলপমেন্ট এনভায়রনমেন্ট](/developers/docs/frameworks/) ব্যবহার করুন
+- স্মার্ট কন্ট্রাক্ট পরীক্ষা, কম্পাইল এবং ডিপ্লয় করার জন্য একটি [ডেভেলপমেন্ট এনভায়রনমেন্ট](/developers/docs/frameworks/) ব্যবহার করুন
-- আপনার কোডটি বেসিক কোড অ্যানালাইসিস টুলস, যেমন [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn), Mythril এবং Slither-এর মাধ্যমে চালান। আদর্শগতভাবে, প্রতিটি পুল রিকোয়েস্ট মার্জ করার আগে আপনার এটি করা উচিত এবং আউটপুটের পার্থক্য তুলনা করা উচিত
+- আপনার কোড বেসিক কোড অ্যানালাইসিস টুলগুলোর মাধ্যমে রান করুন, যেমন [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn), Mythril এবং Slither। আদর্শভাবে, প্রতিটি পুল রিকোয়েস্ট মার্জ হওয়ার আগে আপনার এটি করা উচিত এবং আউটপুটের পার্থক্যগুলো তুলনা করা উচিত
-- নিশ্চিত করুন যে আপনার কোড কোনো ত্রুটি ছাড়াই কম্পাইল হয়, এবং Solidity কম্পাইলার কোনো সতর্কতা জারি করে না
+- নিশ্চিত করুন যে আপনার কোড কোনো ত্রুটি ছাড়াই কম্পাইল হয় এবং Solidity কম্পাইলার কোনো ওয়ার্নিং দেয় না
-- আপনার কোড সঠিকভাবে ডকুমেন্ট করুন ([NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html) ব্যবহার করে) এবং কন্ট্র্যাক্ট আর্কিটেকচার সম্পর্কে বিস্তারিত সহজ-বোধ্য ভাষায় বর্ণনা করুন। এটি অন্যদের জন্য আপনার কোড অডিট এবং পর্যালোচনা করা সহজ করে তুলবে।
+- আপনার কোড সঠিকভাবে ডকুমেন্ট করুন ([NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html) ব্যবহার করে) এবং সহজে বোঝা যায় এমন ভাষায় কন্ট্রাক্ট আর্কিটেকচার সম্পর্কে বিস্তারিত বর্ণনা করুন। এটি অন্যদের জন্য আপনার কোড অডিট এবং পর্যালোচনা করা সহজ করে তুলবে।
-### ৬. মজবুত ডিজাস্টার রিকভারি প্ল্যান বাস্তবায়ন করুন {#implement-disaster-recovery-plans}
+### 6. শক্তিশালী ডিজাস্টার রিকভারি প্ল্যান বাস্তবায়ন করুন {#implement-disaster-recovery-plans}
-সুরক্ষিত অ্যাক্সেস কন্ট্রোল ডিজাইন করা, ফাংশন মডিফায়ার বাস্তবায়ন করা, এবং অন্যান্য পরামর্শগুলো স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা উন্নত করতে পারে, কিন্তু তারা ক্ষতিকারক এক্সপ্লয়েটের সম্ভাবনাকে বাতিল করতে পারে না। সুরক্ষিত স্মার্ট কন্ট্র্যাক্ট তৈরির জন্য “ব্যর্থতার জন্য প্রস্তুতি” এবং আক্রমণের বিরুদ্ধে কার্যকরভাবে প্রতিক্রিয়া জানানোর জন্য একটি ফলব্যাক প্ল্যান থাকা প্রয়োজন। একটি সঠিক ডিজাস্টার রিকভারি প্ল্যানে নিম্নলিখিত উপাদানগুলোর কিছু বা সবগুলো অন্তর্ভুক্ত থাকবে:
+নিরাপদ এক্সেস কন্ট্রোল ডিজাইন করা, ফাংশন মডিফায়ার বাস্তবায়ন করা এবং অন্যান্য পরামর্শগুলো স্মার্ট কন্ট্রাক্ট-এর নিরাপত্তা উন্নত করতে পারে, তবে এগুলো ক্ষতিকারক এক্সপ্লয়েটের সম্ভাবনাকে বাতিল করতে পারে না। নিরাপদ স্মার্ট কন্ট্রাক্ট তৈরি করার জন্য "ব্যর্থতার জন্য প্রস্তুতি" এবং আক্রমণের কার্যকরভাবে প্রতিক্রিয়া জানানোর জন্য একটি ফলব্যাক প্ল্যান থাকা প্রয়োজন। একটি সঠিক ডিজাস্টার রিকভারি প্ল্যানে নিচের কিছু বা সমস্ত উপাদান অন্তর্ভুক্ত থাকবে:
-#### কন্ট্র্যাক্ট আপগ্রেড {#contract-upgrades}
+#### কন্ট্রাক্ট আপগ্রেড {#contract-upgrades}
-যদিও Ethereum স্মার্ট কন্ট্র্যাক্টগুলো ডিফল্টভাবে অপরিবর্তনীয়, আপগ্রেড প্যাটার্ন ব্যবহার করে কিছু মাত্রার মিউটেবিলিটি অর্জন করা সম্ভব। কন্ট্র্যাক্ট আপগ্রেড করা সেইসব ক্ষেত্রে প্রয়োজন যেখানে একটি গুরুতর ত্রুটি আপনার পুরানো কন্ট্র্যাক্টকে অব্যবহারযোগ্য করে তোলে এবং নতুন লজিক ডিপ্লয় করা সবচেয়ে কার্যকর বিকল্প।
+যদিও ইথিরিয়াম স্মার্ট কন্ট্রাক্টগুলো ডিফল্টভাবে ইমমিউটেবল, আপগ্রেড প্যাটার্ন ব্যবহার করে কিছুটা মিউটেবিলিটি অর্জন করা সম্ভব। এমন ক্ষেত্রে কন্ট্রাক্ট আপগ্রেড করা প্রয়োজন যেখানে একটি গুরুতর ত্রুটি আপনার পুরোনো কন্ট্রাক্টটিকে অকেজো করে দেয় এবং নতুন লজিক ডিপ্লয় করা সবচেয়ে সম্ভাব্য বিকল্প হয়।
-কন্ট্র্যাক্ট আপগ্রেড মেকানিজমগুলো ভিন্নভাবে কাজ করে, কিন্তু “প্রক্সি প্যাটার্ন” স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার জন্য আরও জনপ্রিয় পদ্ধতিগুলোর মধ্যে একটি। [প্রক্সি প্যাটার্ন](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern) একটি অ্যাপ্লিকেশনের স্টেট এবং লজিককে _দুইটি_ কন্ট্র্যাক্টের মধ্যে বিভক্ত করে। প্রথম কন্ট্র্যাক্টটি (যাকে ‘প্রক্সি কন্ট্র্যাক্ট’ বলা হয়) স্টেট ভ্যারিয়েবল (যেমন, ব্যবহারকারীর ব্যালেন্স) স্টোর করে, যখন দ্বিতীয় কন্ট্র্যাক্টটি (যাকে ‘লজিক কন্ট্র্যাক্ট’ বলা হয়) কন্ট্র্যাক্ট ফাংশন এক্সিকিউট করার জন্য কোড ধারণ করে।
+কন্ট্রাক্ট আপগ্রেড মেকানিজমগুলো ভিন্নভাবে কাজ করে, তবে স্মার্ট কন্ট্রাক্ট আপগ্রেড করার জন্য "প্রক্সি প্যাটার্ন" হলো অন্যতম জনপ্রিয় পদ্ধতি। [প্রক্সি প্যাটার্ন](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern) একটি অ্যাপ্লিকেশনের স্টেট এবং লজিককে _দুটি_ কন্ট্রাক্টের মধ্যে বিভক্ত করে। প্রথম কন্ট্রাক্টটি (যাকে 'প্রক্সি কন্ট্রাক্ট' বলা হয়) স্টেট ভেরিয়েবলগুলো (যেমন, ব্যবহারকারীর ব্যালেন্স) সংরক্ষণ করে, যখন দ্বিতীয় কন্ট্রাক্টটি (যাকে 'লজিক কন্ট্রাক্ট' বলা হয়) কন্ট্রাক্ট ফাংশনগুলো এক্সিকিউট করার জন্য কোড ধারণ করে।
-অ্যাকাউন্টগুলো প্রক্সি কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করে, যা [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries) লো-লেভেল কল ব্যবহার করে সমস্ত ফাংশন কল লজিক কন্ট্র্যাক্টে প্রেরণ করে। একটি নিয়মিত মেসেজ কলের মতো নয়, `delegatecall()` নিশ্চিত করে যে লজিক কন্ট্র্যাক্টের অ্যাড্রেসে চলমান কোডটি কলিং কন্ট্র্যাক্টের প্রেক্ষাপটে এক্সিকিউট হয়। এর মানে হল লজিক কন্ট্র্যাক্টটি সর্বদা প্রক্সির স্টোরেজে লিখবে (এর নিজস্ব স্টোরেজের পরিবর্তে) এবং `msg.sender` ও `msg.value`-এর মূল মানগুলো সংরক্ষিত থাকবে।
+একাউন্টগুলো প্রক্সি কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করে, যা [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries) লো-লেভেল কল ব্যবহার করে সমস্ত ফাংশন কল লজিক কন্ট্রাক্টে পাঠায়। একটি সাধারণ মেসেজ কলের বিপরীতে, `delegatecall()` নিশ্চিত করে যে লজিক কন্ট্রাক্টের এডড্রেস-এ চলা কোডটি কলিং কন্ট্রাক্টের কনটেক্সটে এক্সিকিউট হয়। এর মানে হলো লজিক কন্ট্রাক্ট সবসময় প্রক্সির স্টোরেজে লিখবে (এর নিজস্ব স্টোরেজের পরিবর্তে) এবং `msg.sender` ও `msg.value`-এর আসল ভ্যালুগুলো সংরক্ষিত থাকে।
-লজিক কন্ট্র্যাক্টে কল ডেলিগেট করার জন্য প্রক্সি কন্ট্র্যাক্টের স্টোরেজে এর অ্যাড্রেস সংরক্ষণ করা প্রয়োজন। সুতরাং, কন্ট্র্যাক্টের লজিক আপগ্রেড করা শুধুমাত্র অন্য একটি লজিক কন্ট্র্যাক্ট ডিপ্লয় করা এবং প্রক্সি কন্ট্র্যাক্টে নতুন অ্যাড্রেস সংরক্ষণ করার বিষয়। যেহেতু প্রক্সি কন্ট্র্যাক্টে পরবর্তী কলগুলো স্বয়ংক্রিয়ভাবে নতুন লজিক কন্ট্র্যাক্টে রাউট করা হয়, আপনি আসলে কোড পরিবর্তন না করেই কন্ট্র্যাক্টটি “আপগ্রেড” করেছেন।
+লজিক কন্ট্রাক্টে কল ডেলিগেট করার জন্য প্রক্সি কন্ট্রাক্টের স্টোরেজে এর এডড্রেস সংরক্ষণ করা প্রয়োজন। তাই, কন্ট্রাক্টের লজিক আপগ্রেড করা মানে হলো কেবল আরেকটি লজিক কন্ট্রাক্ট ডিপ্লয় করা এবং প্রক্সি কন্ট্রাক্টে নতুন এডড্রেসটি সংরক্ষণ করা। যেহেতু প্রক্সি কন্ট্রাক্টে পরবর্তী কলগুলো স্বয়ংক্রিয়ভাবে নতুন লজিক কন্ট্রাক্টে রাউট করা হয়, তাই আপনি আসলে কোড পরিবর্তন না করেই কন্ট্রাক্টটি "আপগ্রেড" করে ফেলবেন।
-[কন্ট্র্যাক্ট আপগ্রেড করার বিষয়ে আরও জানুন](/developers/docs/smart-contracts/upgrading/)।
+[কন্ট্রাক্ট আপগ্রেড করা সম্পর্কে আরও জানুন](/developers/docs/smart-contracts/upgrading/)।
-#### জরুরী স্টপ {#emergency-stops}
+#### ইমার্জেন্সি স্টপ {#emergency-stops}
-যেমন উল্লেখ করা হয়েছে, ব্যাপক অডিটিং এবং টেস্টিং সম্ভবত একটি স্মার্ট কন্ট্র্যাক্টের সমস্ত বাগ আবিষ্কার করতে পারে না। ডিপ্লয়মেন্টের পরে যদি আপনার কোডে কোনো দুর্বলতা দেখা দেয়, তবে এটি প্যাচ করা অসম্ভব কারণ আপনি কন্ট্র্যাক্ট অ্যাড্রেসে চলমান কোড পরিবর্তন করতে পারবেন না। এছাড়াও, আপগ্রেড মেকানিজম (যেমন, প্রক্সি প্যাটার্ন) বাস্তবায়ন করতে সময় লাগতে পারে (এগুলোর জন্য প্রায়শই বিভিন্ন পক্ষের অনুমোদন প্রয়োজন হয়), যা শুধুমাত্র অ্যাটাকারদের আরও বেশি ক্ষতি করার জন্য আরও সময় দেয়।
+যেমনটি উল্লেখ করা হয়েছে, ব্যাপক অডিটিং এবং টেস্টিং একটি স্মার্ট কন্ট্রাক্ট-এর সমস্ত বাগ আবিষ্কার করতে পারে না। ডিপ্লয়মেন্টের পরে যদি আপনার কোডে কোনো দুর্বলতা দেখা দেয়, তবে এটি প্যাচ করা অসম্ভব কারণ আপনি কন্ট্রাক্ট এডড্রেস-এ চলা কোড পরিবর্তন করতে পারবেন না। এছাড়া, আপগ্রেড মেকানিজমগুলো (যেমন, প্রক্সি প্যাটার্ন) বাস্তবায়ন করতে সময় লাগতে পারে (এগুলোর জন্য প্রায়ই বিভিন্ন পক্ষের অনুমোদনের প্রয়োজন হয়), যা আক্রমণকারীদের আরও ক্ষতি করার জন্য কেবল আরও সময় দেয়।
-চূড়ান্ত বিকল্প হলো একটি “জরুরী স্টপ” ফাংশন বাস্তবায়ন করা যা একটি কন্ট্র্যাক্টে দুর্বল ফাংশনে কল ব্লক করে। জরুরী স্টপগুলোতে সাধারণত নিম্নলিখিত উপাদানগুলো থাকে:
+চূড়ান্ত বিকল্প হলো একটি "ইমার্জেন্সি স্টপ" ফাংশন বাস্তবায়ন করা যা একটি কন্ট্রাক্টে দুর্বল ফাংশনগুলোতে কল ব্লক করে। ইমার্জেন্সি স্টপগুলোতে সাধারণত নিচের উপাদানগুলো থাকে:
-1. একটি গ্লোবাল বুলিয়ান ভ্যারিয়েবল যা নির্দেশ করে স্মার্ট কন্ট্র্যাক্টটি বন্ধ স্টেটে আছে কি না। কন্ট্র্যাক্ট সেট আপ করার সময় এই ভ্যারিয়েবলটি `false` তে সেট করা হয়, কিন্তু কন্ট্র্যাক্টটি বন্ধ হয়ে গেলে এটি `true` তে রিভার্ট হবে।
+1. একটি গ্লোবাল বুলিয়ান ভেরিয়েবল যা নির্দেশ করে যে স্মার্ট কন্ট্রাক্টটি বন্ধ অবস্থায় আছে কিনা। কন্ট্রাক্ট সেট আপ করার সময় এই ভেরিয়েবলটি `false` হিসেবে সেট করা হয়, তবে কন্ট্রাক্টটি বন্ধ হয়ে গেলে এটি `true`-তে ফিরে যাবে।
-2. ফাংশনগুলো যা তাদের এক্সিকিউশনে বুলিয়ান ভ্যারিয়েবলকে রেফারেন্স করে। এই ধরনের ফাংশনগুলো তখন অ্যাক্সেসযোগ্য হয় যখন স্মার্ট কন্ট্র্যাক্টটি বন্ধ থাকে না, এবং যখন জরুরী স্টপ বৈশিষ্ট্যটি ট্রিগার করা হয় তখন অ্যাক্সেসযোগ্য থাকে না।
+2. এমন ফাংশন যা তাদের এক্সিকিউশনে বুলিয়ান ভেরিয়েবলকে রেফারেন্স করে। স্মার্ট কন্ট্রাক্ট বন্ধ না থাকলে এই ধরনের ফাংশনগুলো এক্সেসযোগ্য থাকে এবং ইমার্জেন্সি স্টপ ফিচার ট্রিগার হলে এগুলো এক্সেসযোগ্য থাকে না।
-3. একটি সত্তা যার জরুরী স্টপ ফাংশনে অ্যাক্সেস আছে, যা বুলিয়ান ভ্যারিয়েবলকে `true` তে সেট করে। ক্ষতিকারক অ্যাকশন প্রতিরোধ করার জন্য, এই ফাংশনে কল একটি বিশ্বস্ত অ্যাড্রেসে (যেমন, কন্ট্র্যাক্টের মালিক) সীমাবদ্ধ করা যেতে পারে।
+3. এমন একটি সত্তা যার ইমার্জেন্সি স্টপ ফাংশনে এক্সেস আছে, যা বুলিয়ান ভেরিয়েবলটিকে `true` হিসেবে সেট করে। ক্ষতিকারক কাজগুলো প্রতিরোধ করতে, এই ফাংশনে কলগুলো একটি বিশ্বস্ত এডড্রেস-এ (যেমন, কন্ট্রাক্টের মালিক) সীমাবদ্ধ করা যেতে পারে।
-একবার কন্ট্র্যাক্ট জরুরী স্টপ সক্রিয় করলে, নির্দিষ্ট ফাংশনগুলো কলযোগ্য হবে না। এটি গ্লোবাল ভ্যারিয়েবলকে রেফারেন্স করে এমন একটি মডিফায়ারে নির্বাচিত ফাংশনগুলো র্যাপ করে অর্জন করা হয়। নীচে [একটি উদাহরণ](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) দেওয়া হল যা কন্ট্র্যাক্টে এই প্যাটার্নের একটি বাস্তবায়ন বর্ণনা করে:
+একবার কন্ট্রাক্টটি ইমার্জেন্সি স্টপ সক্রিয় করলে, নির্দিষ্ট ফাংশনগুলো কল করা যাবে না। এটি গ্লোবাল ভেরিয়েবলকে রেফারেন্স করে এমন একটি মডিফায়ারে নির্বাচিত ফাংশনগুলোকে র্যাপ করে অর্জন করা হয়। নিচে কন্ট্রাক্টগুলোতে এই প্যাটার্নের একটি বাস্তবায়নের বর্ণনা দেওয়া [একটি উদাহরণ](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) দেওয়া হলো:
```solidity
-// This code has not been professionally audited and makes no promises about safety or correctness. Use at your own risk.
+// এই কোডটি পেশাদারভাবে অডিট করা হয়নি এবং এর নিরাপত্তা বা সঠিকতা সম্পর্কে কোনো প্রতিশ্রুতি দেয় না। নিজ ঝুঁকিতে ব্যবহার করুন।
contract EmergencyStop {
@@ -169,7 +169,7 @@ contract EmergencyStop {
}
modifier onlyAuthorized {
- // Check for authorization of msg.sender here
+ // এখানে msg.sender-এর অনুমোদন চেক করুন
_;
}
@@ -182,63 +182,63 @@ contract EmergencyStop {
}
function deposit() public payable stoppedInEmergency {
- // Deposit logic happening here
+ // এখানে ডিপোজিট লজিক সম্পন্ন হচ্ছে
}
function emergencyWithdraw() public onlyWhenStopped {
- // Emergency withdraw happening here
+ // এখানে জরুরি উত্তোলন সম্পন্ন হচ্ছে
}
}
```
-এই উদাহরণটি জরুরী স্টপের মৌলিক বৈশিষ্ট্যগুলো দেখায়:
+এই উদাহরণটি ইমার্জেন্সি স্টপের মৌলিক বৈশিষ্ট্যগুলো দেখায়:
-- `isStopped` একটি বুলিয়ান যা শুরুতে `false` এবং কন্ট্র্যাক্ট জরুরী মোডে প্রবেশ করলে `true` তে মূল্যায়ন করে।
+- `isStopped` হলো একটি বুলিয়ান যা শুরুতে `false` এবং কন্ট্রাক্টটি ইমার্জেন্সি মোডে প্রবেশ করলে `true` হিসেবে মূল্যায়ন করে।
-- ফাংশন মডিফায়ার `onlyWhenStopped` এবং `stoppedInEmergency` `isStopped` ভ্যারিয়েবলটি চেক করে। `stoppedInEmergency` সেই ফাংশনগুলো নিয়ন্ত্রণ করতে ব্যবহৃত হয় যা কন্ট্র্যাক্ট দুর্বল হলে অ্যাক্সেসযোগ্য হওয়া উচিত নয় (যেমন, `deposit()`)। এই ফাংশনগুলোতে কলগুলো কেবল রিভার্ট হবে।
+- ফাংশন মডিফায়ার `onlyWhenStopped` এবং `stoppedInEmergency` `isStopped` ভেরিয়েবলটি চেক করে। `stoppedInEmergency` ব্যবহার করা হয় এমন ফাংশনগুলো নিয়ন্ত্রণ করতে যা কন্ট্রাক্টটি দুর্বল হলে এক্সেসযোগ্য হওয়া উচিত নয় (যেমন, `deposit()`)। এই ফাংশনগুলোতে কলগুলো কেবল রিভার্ট হয়ে যাবে।
-`onlyWhenStopped` সেই ফাংশনগুলোর জন্য ব্যবহৃত হয় যা জরুরী অবস্থায় কলযোগ্য হওয়া উচিত (যেমন, `emergencyWithdraw()`)। এই ধরনের ফাংশনগুলো পরিস্থিতি সমাধানে সাহায্য করতে পারে, তাই “সীমাবদ্ধ ফাংশন” তালিকা থেকে তাদের বাদ দেওয়া হয়েছে।
+`onlyWhenStopped` এমন ফাংশনগুলোর জন্য ব্যবহার করা হয় যা ইমার্জেন্সির সময় কল করা উচিত (যেমন, `emergencyWithdraw()`)। এই ধরনের ফাংশনগুলো পরিস্থিতি সমাধানে সাহায্য করতে পারে, তাই এগুলোকে "সীমাবদ্ধ ফাংশন" তালিকা থেকে বাদ দেওয়া হয়।
-একটি জরুরী স্টপ ফাংশনালিটি ব্যবহার করা আপনার স্মার্ট কন্ট্র্যাক্টে গুরুতর দুর্বলতাগুলোর সাথে মোকাবিলা করার জন্য একটি কার্যকর স্টপগ্যাপ প্রদান করে। যাইহোক, এটি ব্যবহারকারীদের ডেভেলপারদের উপর বিশ্বাস করার প্রয়োজন বাড়িয়ে দেয় যে তারা স্বার্থপর কারণে এটি সক্রিয় করবে না। এই লক্ষ্যে, একটি অনচেন ভোটিং মেকানিজম, টাইমলক, বা একটি মাল্টিসিগ ওয়ালেট থেকে অনুমোদনের মাধ্যমে জরুরী স্টপের নিয়ন্ত্রণ ডিসেন্ট্রালাইজ করা সম্ভাব্য সমাধান।
+একটি ইমার্জেন্সি স্টপ কার্যকারিতা ব্যবহার করা আপনার স্মার্ট কন্ট্রাক্ট-এ গুরুতর দুর্বলতাগুলো মোকাবিলা করার জন্য একটি কার্যকর সাময়িক সমাধান প্রদান করে। তবে, এটি ব্যবহারকারীদের ডেভেলপারদের বিশ্বাস করার প্রয়োজনীয়তা বাড়ায় যাতে তারা নিজেদের স্বার্থে এটি সক্রিয় না করে। এই লক্ষ্যে, ইমার্জেন্সি স্টপের নিয়ন্ত্রণকে একটি অনচেইন ভোটিং মেকানিজম, টাইমক্লক, বা একটি মাল্টিসিগ ওয়ালেট থেকে অনুমোদনের অধীন করে ডিসেন্ট্রালাইজড করা সম্ভাব্য সমাধান হতে পারে।
#### ইভেন্ট মনিটরিং {#event-monitoring}
-[ইভেন্টস](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) আপনাকে স্মার্ট কন্ট্র্যাক্ট ফাংশনে কল ট্র্যাক করতে এবং স্টেট ভ্যারিয়েবলের পরিবর্তনগুলো নিরীক্ষণ করতে দেয়। আপনার স্মার্ট কন্ট্র্যাক্টকে এমনভাবে প্রোগ্রাম করা আদর্শ যে যখনই কোনো পক্ষ একটি নিরাপত্তা-গুরুত্বপূর্ণ অ্যাকশন নেয় (যেমন, ফান্ড উইথড্র করা) তখন এটি একটি ইভেন্ট নির্গত করে।
+[ইভেন্টগুলো](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) আপনাকে স্মার্ট কন্ট্রাক্ট ফাংশনগুলোতে কল ট্র্যাক করতে এবং স্টেট ভেরিয়েবলের পরিবর্তনগুলো মনিটর করতে দেয়। যখনই কোনো পক্ষ নিরাপত্তা-সংবেদনশীল কাজ (যেমন, ফান্ড তোলা) করে তখনই একটি ইভেন্ট এমিট করার জন্য আপনার স্মার্ট কন্ট্রাক্ট প্রোগ্রাম করা আদর্শ।
-ইভেন্টগুলো লগ করা এবং অফচেইনে সেগুলোকে মনিটর করা কন্ট্র্যাক্ট অপারেশনের উপর অন্তর্দৃষ্টি প্রদান করে এবং ক্ষতিকারক অ্যাকশনগুলোর দ্রুত আবিষ্কারে সহায়তা করে। এর মানে হল আপনার দল হ্যাকের বিরুদ্ধে দ্রুত প্রতিক্রিয়া জানাতে পারে এবং ব্যবহারকারীদের উপর প্রভাব কমাতে পদক্ষেপ নিতে পারে, যেমন ফাংশন পজ করা বা একটি আপগ্রেড সম্পাদন করা।
+ইভেন্টগুলো লগ করা এবং সেগুলোকে অফচেইন মনিটর করা কন্ট্রাক্ট অপারেশনগুলোর উপর অন্তর্দৃষ্টি প্রদান করে এবং ক্ষতিকারক কাজগুলো দ্রুত আবিষ্কার করতে সাহায্য করে। এর মানে হলো আপনার টিম হ্যাকের ক্ষেত্রে দ্রুত প্রতিক্রিয়া জানাতে পারে এবং ব্যবহারকারীদের উপর প্রভাব কমানোর জন্য পদক্ষেপ নিতে পারে, যেমন ফাংশনগুলো পজ করা বা একটি আপগ্রেড করা।
-আপনি একটি অফ-দ্য-শেল্ফ মনিটরিং টুলের জন্যও বেছে নিতে পারেন যা যখনই কেউ আপনার কন্ট্র্যাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করে তখন স্বয়ংক্রিয়ভাবে অ্যালার্ট ফরওয়ার্ড করে। এই টুলসগুলো আপনাকে বিভিন্ন ট্রিগারের উপর ভিত্তি করে কাস্টম অ্যালার্ট তৈরি করতে দেবে, যেমন লেনদেনের পরিমাণ, ফাংশন কলের ফ্রিকোয়েন্সি, বা জড়িত নির্দিষ্ট ফাংশন। উদাহরণস্বরূপ, আপনি একটি অ্যালার্ট প্রোগ্রাম করতে পারেন যা একটি একক লেনদেনে উইথড্র করা পরিমাণ একটি নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করলে আসে।
+আপনি একটি অফ-দ্য-শেল্ফ মনিটরিং টুলও বেছে নিতে পারেন যা যখনই কেউ আপনার কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করে তখনই স্বয়ংক্রিয়ভাবে অ্যালার্ট ফরোয়ার্ড করে। এই টুলগুলো আপনাকে বিভিন্ন ট্রিগারের উপর ভিত্তি করে কাস্টম অ্যালার্ট তৈরি করতে দেবে, যেমন লেনদেন ভলিউম, ফাংশন কলের ফ্রিকোয়েন্সি, বা জড়িত নির্দিষ্ট ফাংশনগুলো। উদাহরণস্বরূপ, আপনি এমন একটি অ্যালার্ট প্রোগ্রাম করতে পারেন যা একটি একক লেনদেন-এ তোলা ফান্ডের পরিমাণ একটি নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করলে আসে।
-### ৭. সুরক্ষিত গভর্নেন্স সিস্টেম ডিজাইন করুন {#design-secure-governance-systems}
+### 7. নিরাপদ গভর্নেন্স সিস্টেম ডিজাইন করুন {#design-secure-governance-systems}
-আপনি আপনার অ্যাপ্লিকেশনকে ডিসেন্ট্রালাইজড করতে চাইতে পারেন কমিউনিটির সদস্যদের কাছে কোর স্মার্ট কন্ট্র্যাক্টগুলোর নিয়ন্ত্রণ হস্তান্তর করে। এই ক্ষেত্রে, স্মার্ট কন্ট্র্যাক্ট সিস্টেমে একটি গভর্নেন্স মডিউল অন্তর্ভুক্ত থাকবে—একটি মেকানিজম যা কমিউনিটির সদস্যদের একটি অনচেন গভর্নেন্স সিস্টেমের মাধ্যমে প্রশাসনিক অ্যাকশন অনুমোদন করতে দেয়। উদাহরণস্বরূপ, একটি প্রক্সি কন্ট্র্যাক্টকে একটি নতুন ইমপ্লিমেন্টেশনে আপগ্রেড করার একটি প্রস্তাব টোকেন-হোল্ডারদের দ্বারা ভোট দেওয়া হতে পারে।
+আপনি কমিউনিটি সদস্যদের কাছে মূল স্মার্ট কন্ট্রাক্টগুলোর নিয়ন্ত্রণ হস্তান্তর করে আপনার অ্যাপ্লিকেশনটিকে ডিসেন্ট্রালাইজড করতে চাইতে পারেন। এই ক্ষেত্রে, স্মার্ট কন্ট্রাক্ট সিস্টেমে একটি গভর্নেন্স মডিউল অন্তর্ভুক্ত থাকবে—এমন একটি মেকানিজম যা কমিউনিটি সদস্যদের একটি অনচেইন গভর্নেন্স সিস্টেমের মাধ্যমে অ্যাডমিনিস্ট্রেটিভ কাজগুলো অনুমোদন করতে দেয়। উদাহরণস্বরূপ, একটি প্রক্সি কন্ট্রাক্টকে একটি নতুন ইমপ্লিমেন্টেশনে আপগ্রেড করার প্রস্তাবের উপর টোকেন-হোল্ডাররা ভোট দিতে পারে।
-ডিসেন্ট্রালাইজড গভর্নেন্স উপকারী হতে পারে, বিশেষ করে কারণ এটি ডেভেলপার এবং শেষ-ব্যবহারকারীদের স্বার্থকে একত্রিত করে। তা সত্ত্বেও, স্মার্ট কন্ট্র্যাক্ট গভর্নেন্স মেকানিজম ভুলভাবে বাস্তবায়িত হলে নতুন ঝুঁকি তৈরি করতে পারে। একটি সম্ভাব্য দৃশ্য হল যদি একজন অ্যাটাকার একটি [ফ্ল্যাশ লোন](/defi/#flash-loans) নিয়ে বিপুল পরিমাণ ভোটিং পাওয়ার (ধরে রাখা টোকেনের সংখ্যায় পরিমাপ করা) অর্জন করে এবং একটি ক্ষতিকারক প্রস্তাব পাস করিয়ে নেয়।
+ডিসেন্ট্রালাইজড গভর্নেন্স উপকারী হতে পারে, বিশেষ করে কারণ এটি ডেভেলপার এবং এন্ড-ইউজারদের স্বার্থকে একত্রিত করে। তা সত্ত্বেও, স্মার্ট কন্ট্রাক্ট গভর্নেন্স মেকানিজমগুলো ভুলভাবে বাস্তবায়িত হলে নতুন ঝুঁকি তৈরি করতে পারে। একটি সম্ভাব্য দৃশ্যপট হলো যদি কোনো আক্রমণকারী একটি [ফ্ল্যাশ লোন](/defi/#flash-loans) নিয়ে বিপুল ভোটিং পাওয়ার (ধরে রাখা টোকেনের সংখ্যায় পরিমাপ করা হয়) অর্জন করে এবং একটি ক্ষতিকারক প্রস্তাব পাস করিয়ে নেয়।
-অনচেন গভর্নেন্স সম্পর্কিত সমস্যা প্রতিরোধের একটি উপায় হল [একটি টাইমলক ব্যবহার করা](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/)। একটি টাইমলক একটি স্মার্ট কন্ট্র্যাক্টকে একটি নির্দিষ্ট পরিমাণ সময় অতিবাহিত না হওয়া পর্যন্ত নির্দিষ্ট অ্যাকশন এক্সিকিউট করা থেকে বিরত রাখে। অন্যান্য কৌশলগুলোর মধ্যে রয়েছে প্রতিটি টোকেনের জন্য একটি “ভোটিং ওয়েট” বরাদ্দ করা যা এটি কতক্ষণ ধরে লক করা হয়েছে তার উপর ভিত্তি করে, বা বর্তমান ব্লকের পরিবর্তে একটি ঐতিহাসিক সময়ে (উদাহরণস্বরূপ, অতীতে 2-3 ব্লক) একটি অ্যাড্রেসের ভোটিং পাওয়ার পরিমাপ করা। উভয় পদ্ধতিই অনচেন ভোট প্রভাবিত করার জন্য দ্রুত ভোটিং পাওয়ার জমা করার সম্ভাবনা কমিয়ে দেয়।
+অনচেইন গভর্নেন্স সম্পর্কিত সমস্যাগুলো প্রতিরোধের একটি উপায় হলো [একটি টাইমক্লক ব্যবহার করা](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/)। একটি টাইমক্লক একটি নির্দিষ্ট পরিমাণ সময় পার না হওয়া পর্যন্ত একটি স্মার্ট কন্ট্রাক্ট-কে নির্দিষ্ট কাজগুলো এক্সিকিউট করা থেকে বিরত রাখে। অন্যান্য কৌশলগুলোর মধ্যে রয়েছে প্রতিটি টোকেন কতক্ষণ ধরে লক করা আছে তার উপর ভিত্তি করে একটি "ভোটিং ওয়েট" (voting weight) অ্যাসাইন করা, অথবা বর্তমান ব্লকের পরিবর্তে একটি ঐতিহাসিক সময়ে (উদাহরণস্বরূপ, অতীতে 2-3 ব্লকস) একটি এডড্রেস-এর ভোটিং পাওয়ার পরিমাপ করা। উভয় পদ্ধতিই অনচেইন ভোটগুলো ঘোরানোর জন্য দ্রুত ভোটিং পাওয়ার সংগ্রহ করার সম্ভাবনা কমায়।
-শেয়ার করা লিঙ্কগুলোতে [সুরক্ষিত গভর্নেন্স সিস্টেম ডিজাইন করা](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/), [DAO-তে বিভিন্ন ভোটিং মেকানিজম](https://hackernoon.com/governance-is-the-holy-grail-for-daos), এবং [DeFi লিভারেজ করে সাধারণ DAO আক্রমণ ভেক্টর](https://dacian.me/dao-governance-defi-attacks) সম্পর্কে আরও জানুন।
+শেয়ার করা লিংকগুলোতে [নিরাপদ গভর্নেন্স সিস্টেম ডিজাইন করা](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/), [DAO-তে বিভিন্ন ভোটিং মেকানিজম](https://hackernoon.com/governance-is-the-holy-grail-for-daos), এবং [DeFi ব্যবহার করে সাধারণ DAO অ্যাটাক ভেক্টরগুলো](https://dacian.me/dao-governance-defi-attacks) সম্পর্কে আরও জানুন।
-### ৮. কোডের জটিলতা ন্যূনতম পর্যায়ে কমান {#reduce-code-complexity}
+### 8. কোডের জটিলতা সর্বনিম্নে কমিয়ে আনুন {#reduce-code-complexity}
-ঐতিহ্যবাহী সফটওয়্যার ডেভেলপাররা KISS (“keep it simple, stupid”) নীতির সাথে পরিচিত, যা সফটওয়্যার ডিজাইনে অপ্রয়োজনীয় জটিলতা আনা থেকে বিরত থাকার পরামর্শ দেয়। এটি দীর্ঘদিনের চিন্তাভাবনা অনুসরণ করে যে “জটিল সিস্টেমগুলো জটিল উপায়ে ব্যর্থ হয়” এবং ব্যয়বহুল ত্রুটির জন্য বেশি সংবেদনশীল।
+প্রথাগত সফটওয়্যার ডেভেলপাররা KISS ("keep it simple, stupid") নীতির সাথে পরিচিত, যা সফটওয়্যার ডিজাইনে অপ্রয়োজনীয় জটিলতা প্রবর্তনের বিরুদ্ধে পরামর্শ দেয়। এটি দীর্ঘদিনের চিন্তাধারা অনুসরণ করে যে "জটিল সিস্টেমগুলো জটিল উপায়ে ব্যর্থ হয়" এবং এগুলো ব্যয়বহুল ত্রুটির জন্য বেশি সংবেদনশীল।
-স্মার্ট কন্ট্র্যাক্ট লেখার সময় জিনিসগুলো সহজ রাখা বিশেষভাবে গুরুত্বপূর্ণ, কারণ স্মার্ট কন্ট্র্যাক্টগুলো সম্ভাব্যভাবে বিপুল পরিমাণ মূল্য নিয়ন্ত্রণ করে। স্মার্ট কন্ট্র্যাক্ট লেখার সময় সরলতা অর্জনের জন্য একটি টিপস হল বিদ্যমান লাইব্রেরি, যেমন [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/), যেখানে সম্ভব সেখানে পুনরায় ব্যবহার করা। যেহেতু এই লাইব্রেরিগুলো ডেভেলপারদের দ্বারা ব্যাপকভাবে অডিট এবং পরীক্ষা করা হয়েছে, তাই এগুলো ব্যবহার করলে স্ক্র্যাচ থেকে নতুন ফাংশনালিটি লিখে বাগ আনার সম্ভাবনা কমে যায়।
+স্মার্ট কন্ট্রাক্ট লেখার সময় জিনিসগুলো সহজ রাখা বিশেষ গুরুত্বপূর্ণ, কারণ স্মার্ট কন্ট্রাক্টগুলো সম্ভাব্যভাবে বিপুল পরিমাণ ভ্যালু নিয়ন্ত্রণ করে। স্মার্ট কন্ট্রাক্ট লেখার সময় সরলতা অর্জনের একটি টিপ হলো যেখানে সম্ভব বিদ্যমান লাইব্রেরিগুলো পুনরায় ব্যবহার করা, যেমন [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)। যেহেতু এই লাইব্রেরিগুলো ডেভেলপারদের দ্বারা ব্যাপকভাবে অডিট এবং পরীক্ষা করা হয়েছে, তাই এগুলো ব্যবহার করলে স্ক্র্যাচ থেকে নতুন কার্যকারিতা লিখে বাগ প্রবর্তনের সম্ভাবনা কমে যায়।
-আরেকটি সাধারণ পরামর্শ হল ছোট ফাংশন লেখা এবং একাধিক কন্ট্র্যাক্টে ব্যবসায়িক লজিক বিভক্ত করে কন্ট্র্যাক্টগুলোকে মডুলার রাখা। সহজ কোড লেখা কেবল একটি স্মার্ট কন্ট্র্যাক্টে আক্রমণের পৃষ্ঠকে কমায় না, এটি সামগ্রিক সিস্টেমের সঠিকতা সম্পর্কে যুক্তি দেওয়া এবং সম্ভাব্য ডিজাইনের ত্রুটিগুলো তাড়াতাড়ি সনাক্ত করা সহজ করে তোলে।
+আরেকটি সাধারণ পরামর্শ হলো ছোট ফাংশন লেখা এবং একাধিক কন্ট্রাক্ট জুড়ে বিজনেস লজিক বিভক্ত করে কন্ট্রাক্টগুলোকে মডুলার রাখা। সহজ কোড লেখা কেবল একটি স্মার্ট কন্ট্রাক্ট-এ অ্যাটাক সারফেস কমায় না, এটি সামগ্রিক সিস্টেমের সঠিকতা সম্পর্কে যুক্তি দেওয়া এবং সম্ভাব্য ডিজাইনের ত্রুটিগুলো আগে থেকেই শনাক্ত করা সহজ করে তোলে।
-### ৯. সাধারণ স্মার্ট কন্ট্র্যাক্ট দুর্বলতার বিরুদ্ধে প্রতিরক্ষা করুন {#mitigate-common-smart-contract-vulnerabilities}
+### 9. সাধারণ স্মার্ট কন্ট্রাক্ট দুর্বলতাগুলোর বিরুদ্ধে রক্ষা করুন {#mitigate-common-smart-contract-vulnerabilities}
-#### রিএন্ট্রেন্সি {#reentrancy}
+#### রিএন্ট্রান্সি (Reentrancy) {#reentrancy}
-EVM কনকারেন্সি অনুমতি দেয় না, যার মানে একটি মেসেজ কলে জড়িত দুটি কন্ট্র্যাক্ট একযোগে চলতে পারে না। একটি এক্সটার্নাল কল কলিং কন্ট্র্যাক্টের এক্সিকিউশন এবং মেমরিকে কলটি ফিরে না আসা পর্যন্ত পজ করে, যার পরে এক্সিকিউশন স্বাভাবিকভাবে চলতে থাকে। এই প্রক্রিয়াটিকে আনুষ্ঠানিকভাবে অন্য কন্ট্র্যাক্টে [কন্ট্রোল ফ্লো](https://www.computerhope.com/jargon/c/contflow.htm) স্থানান্তর হিসাবে বর্ণনা করা যেতে পারে।
+EVM কনকারেন্সি (concurrency) অনুমোদন করে না, যার মানে হলো একটি মেসেজ কলে জড়িত দুটি কন্ট্রাক্ট একই সাথে চলতে পারে না। একটি এক্সটার্নাল কল কলিং কন্ট্রাক্টের এক্সিকিউশন এবং মেমরি পজ করে যতক্ষণ না কলটি ফিরে আসে, যে পয়েন্টে এক্সিকিউশন স্বাভাবিকভাবে এগিয়ে যায়। এই প্রক্রিয়াটিকে আনুষ্ঠানিকভাবে অন্য একটি কন্ট্রাক্টে [কন্ট্রোল ফ্লো](https://www.computerhope.com/jargon/c/contflow.htm) স্থানান্তর হিসেবে বর্ণনা করা যেতে পারে।
-যদিও বেশিরভাগ ক্ষেত্রে এটি ক্ষতিকারক নয়, অবিশ্বস্ত কন্ট্র্যাক্টে কন্ট্রোল ফ্লো স্থানান্তর করা সমস্যা তৈরি করতে পারে, যেমন রিএন্ট্রেন্সি। একটি রিএন্ট্রেন্সি অ্যাটাক ঘটে যখন একটি ক্ষতিকারক কন্ট্র্যাক্ট মূল ফাংশন ইনভোকেশন সম্পূর্ণ হওয়ার আগে একটি দুর্বল কন্ট্র্যাক্টে আবার কল করে। এই ধরনের অ্যাটাক একটি উদাহরণের মাধ্যমে সবচেয়ে ভালো ব্যাখ্যা করা যায়।
+যদিও বেশিরভাগ ক্ষেত্রে ক্ষতিকারক নয়, অবিশ্বস্ত কন্ট্রাক্টগুলোতে কন্ট্রোল ফ্লো স্থানান্তর করা সমস্যা সৃষ্টি করতে পারে, যেমন রিএন্ট্রান্সি। একটি রিএন্ট্রান্সি আক্রমণ তখন ঘটে যখন একটি ক্ষতিকারক কন্ট্রাক্ট মূল ফাংশন ইনভোকেশন সম্পূর্ণ হওয়ার আগেই একটি দুর্বল কন্ট্রাক্টে কল ব্যাক করে। এই ধরনের আক্রমণ একটি উদাহরণ দিয়ে সবচেয়ে ভালোভাবে ব্যাখ্যা করা যায়।
-একটি সাধারণ স্মার্ট কন্ট্র্যাক্ট (‘ভিকটিম’) বিবেচনা করুন যা যে কাউকে ইথার জমা এবং উইথড্র করতে দেয়:
+একটি সাধারণ স্মার্ট কন্ট্রাক্ট ('Victim') বিবেচনা করুন যা যেকাউকে ইথার জমা দিতে এবং তুলতে দেয়:
```solidity
-// This contract is vulnerable. Do not use in production
+// এই কন্ট্রাক্টটি ঝুঁকিপূর্ণ। প্রোডাকশনে ব্যবহার করবেন না
contract Victim {
mapping (address => uint256) public balances;
@@ -256,17 +256,17 @@ contract Victim {
}
```
-এই কন্ট্র্যাক্টটি ব্যবহারকারীদের কন্ট্র্যাক্টে পূর্বে জমা করা ETH উইথড্র করার জন্য একটি `withdraw()` ফাংশন প্রকাশ করে। উইথড্রয়াল প্রসেস করার সময়, কন্ট্র্যাক্টটি নিম্নলিখিত অপারেশনগুলো সম্পাদন করে:
+এই কন্ট্রাক্টটি ব্যবহারকারীদের কন্ট্রাক্টে আগে জমা দেওয়া ETH তোলার অনুমতি দেওয়ার জন্য একটি `withdraw()` ফাংশন এক্সপোজ করে। একটি উইথড্রয়াল প্রসেস করার সময়, কন্ট্রাক্টটি নিচের অপারেশনগুলো করে:
1. ব্যবহারকারীর ETH ব্যালেন্স চেক করে
-2. কলিং অ্যাড্রেসে ফান্ড পাঠায়
-3. তাদের ব্যালেন্স 0 এ রিসেট করে, ব্যবহারকারীর কাছ থেকে অতিরিক্ত উইথড্রয়াল প্রতিরোধ করে
+2. কলিং এডড্রেস-এ ফান্ড পাঠায়
+3. তাদের ব্যালেন্স 0-তে রিসেট করে, ব্যবহারকারীর কাছ থেকে অতিরিক্ত উইথড্রয়াল প্রতিরোধ করে
-`Victim` কন্ট্র্যাক্টে `withdraw()` ফাংশনটি একটি “চেক-ইন্টারঅ্যাকশন-ইফেক্টস” প্যাটার্ন অনুসরণ করে। এটি _চেক_ করে যে এক্সিকিউশনের জন্য প্রয়োজনীয় শর্তগুলো পূরণ হয়েছে কিনা (যেমন, ব্যবহারকারীর একটি পজিটিভ ETH ব্যালেন্স আছে) এবং লেনদেনের _ইফেক্টস_ প্রয়োগ করার আগে (যেমন, ব্যবহারকারীর ব্যালেন্স কমানো) কলারের অ্যাড্রেসে ETH পাঠিয়ে _ইন্টারঅ্যাকশন_ সম্পাদন করে।
+`Victim` কন্ট্রাক্টে `withdraw()` ফাংশনটি একটি "চেকস-ইন্টারঅ্যাকশনস-ইফেক্টস" (checks-interactions-effects) প্যাটার্ন অনুসরণ করে। এটি _চেক_ করে যে এক্সিকিউশনের জন্য প্রয়োজনীয় শর্তগুলো পূরণ হয়েছে কিনা (অর্থাৎ, ব্যবহারকারীর একটি পজিটিভ ETH ব্যালেন্স আছে) এবং লেনদেন-এর _ইফেক্টগুলো_ প্রয়োগ করার আগে (অর্থাৎ, ব্যবহারকারীর ব্যালেন্স কমানো) কলারের এডড্রেস-এ ETH পাঠিয়ে _ইন্টারঅ্যাকশন_ করে।
-যদি `withdraw()` একটি এক্সটার্নালি ওনড অ্যাকাউন্ট (EOA) থেকে কল করা হয়, তবে ফাংশনটি প্রত্যাশিতভাবে এক্সিকিউট হয়: `msg.sender.call.value()` কলারকে ETH পাঠায়। যাইহোক, যদি `msg.sender` একটি স্মার্ট কন্ট্র্যাক্ট অ্যাকাউন্ট হয় যা `withdraw()` কল করে, তবে `msg.sender.call.value()` ব্যবহার করে ফান্ড পাঠানো সেই অ্যাড্রেসে সংরক্ষিত কোডকেও ট্রিগার করবে।
+যদি একটি এক্সটার্নালি ওনড একাউন্ট (EOA) থেকে `withdraw()` কল করা হয়, তবে ফাংশনটি প্রত্যাশা অনুযায়ী এক্সিকিউট হয়: `msg.sender.call.value()` কলারকে ETH পাঠায়। তবে, যদি `msg.sender` একটি স্মার্ট কন্ট্রাক্ট একাউন্ট হয় যা `withdraw()` কল করে, তবে `msg.sender.call.value()` ব্যবহার করে ফান্ড পাঠানো সেই এডড্রেস-এ সংরক্ষিত কোডকেও রান করতে ট্রিগার করবে।
-কল্পনা করুন এটি কন্ট্র্যাক্ট অ্যাড্রেসে ডিপ্লয় করা কোড:
+কল্পনা করুন এটি কন্ট্রাক্ট এডড্রেস-এ ডিপ্লয় করা কোড:
```solidity
contract Attacker {
@@ -283,13 +283,13 @@ contract Victim {
}
```
-এই কন্ট্র্যাক্টটি তিনটি জিনিস করার জন্য ডিজাইন করা হয়েছে:
+এই কন্ট্রাক্টটি তিনটি কাজ করার জন্য ডিজাইন করা হয়েছে:
-1. অন্য একটি অ্যাকাউন্ট থেকে একটি ডিপোজিট গ্রহণ করা (সম্ভবত অ্যাটাকারের EOA)
-2. ভিকটিম কন্ট্র্যাক্টে 1 ETH জমা করা
-3. স্মার্ট কন্ট্র্যাক্টে সংরক্ষিত 1 ETH উইথড্র করা
+1. অন্য একটি একাউন্ট থেকে একটি ডিপোজিট গ্রহণ করা (সম্ভবত আক্রমণকারীর EOA)
+2. Victim কন্ট্রাক্টে 1 ETH জমা দেওয়া
+3. স্মার্ট কন্ট্রাক্ট-এ সংরক্ষিত 1 ETH তুলে নেওয়া
-এখানে কোনো ভুল নেই, শুধুমাত্র `Attacker`-এর আরেকটি ফাংশন আছে যা `Victim`-এ আবার `withdraw()` কল করে যদি ইনকামিং `msg.sender.call.value` থেকে অবশিষ্ট গ্যাস 40,000 এর বেশি হয়। এটি `Attacker` কে `Victim`-এ পুনরায় প্রবেশ করার এবং `withdraw`-এর প্রথম ইনভোকেশন সম্পূর্ণ হওয়ার _আগে_ আরও ফান্ড উইথড্র করার ক্ষমতা দেয়। চক্রটি দেখতে এইরকম:
+এখানে কোনো ভুল নেই, তবে `Attacker`-এর আরেকটি ফাংশন আছে যা ইনকামিং `msg.sender.call.value` থেকে অবশিষ্ট গ্যাস 40,000-এর বেশি হলে `Victim`-এ আবার `withdraw()` কল করে। এটি `Attacker`-কে `Victim`-এ পুনরায় প্রবেশ করার এবং `withdraw`-এর প্রথম ইনভোকেশন সম্পূর্ণ হওয়ার _আগেই_ আরও ফান্ড তুলে নেওয়ার ক্ষমতা দেয়। সাইকেলটি দেখতে এরকম:
```solidity
- Attacker's EOA calls `Attacker.beginAttack()` with 1 ETH
@@ -304,13 +304,13 @@ contract Victim {
- `Victim` finally applies the results of the first transaction (and subsequent ones) to its state, so `Attacker`’s balance is set to 0
```
-সারাংশ হল যে যেহেতু ফাংশন এক্সিকিউশন সম্পূর্ণ না হওয়া পর্যন্ত কলারের ব্যালেন্স 0 এ সেট করা হয় না, তাই পরবর্তী ইনভোকেশনগুলো সফল হবে এবং কলারকে তাদের ব্যালেন্স একাধিকবার উইথড্র করতে দেবে। এই ধরনের অ্যাটাক একটি স্মার্ট কন্ট্র্যাক্টকে তার ফান্ড থেকে খালি করার জন্য ব্যবহার করা যেতে পারে, যেমনটি [2016 সালের DAO হ্যাক](https://www.coindesk.com/learn/understanding-the-dao-attack)-এ হয়েছিল। রিএন্ট্রেন্সি অ্যাটাক এখনও স্মার্ট কন্ট্র্যাক্টগুলোর জন্য একটি গুরুতর সমস্যা যেমন [রিএন্ট্রেন্সি এক্সপ্লয়েটের পাবলিক তালিকা](https://github.com/pcaversaccio/reentrancy-attacks) দেখায়।
+সারসংক্ষেপ হলো যেহেতু ফাংশন এক্সিকিউশন সম্পূর্ণ না হওয়া পর্যন্ত কলারের ব্যালেন্স 0-তে সেট করা হয় না, তাই পরবর্তী ইনভোকেশনগুলো সফল হবে এবং কলারকে একাধিকবার তাদের ব্যালেন্স তুলে নেওয়ার অনুমতি দেবে। এই ধরনের আক্রমণ একটি স্মার্ট কন্ট্রাক্ট-এর ফান্ড খালি করতে ব্যবহার করা যেতে পারে, যেমনটি [2016 DAO হ্যাক](https://www.coindesk.com/learn/understanding-the-dao-attack)-এ ঘটেছিল। রিএন্ট্রান্সি আক্রমণগুলো আজও স্মার্ট কন্ট্রাক্টগুলোর জন্য একটি গুরুতর সমস্যা, যেমনটি [রিএন্ট্রান্সি এক্সপ্লয়েটগুলোর পাবলিক লিস্টিং](https://github.com/pcaversaccio/reentrancy-attacks) দেখায়।
-##### কিভাবে রিএন্ট্রেন্সি অ্যাটাক প্রতিরোধ করা যায়
+##### কীভাবে রিএন্ট্রান্সি আক্রমণ প্রতিরোধ করবেন
-রিএন্ট্রেন্সির সাথে মোকাবিলা করার একটি পদ্ধতি হল [চেক-ইফেক্টস-ইন্টারঅ্যাকশন প্যাটার্ন](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern) অনুসরণ করা। এই প্যাটার্নটি ফাংশনগুলোর এক্সিকিউশনকে এমনভাবে অর্ডার করে যে এক্সিকিউশন এগিয়ে যাওয়ার আগে প্রয়োজনীয় চেক সম্পাদনকারী কোডটি প্রথমে আসে, তারপরে কন্ট্র্যাক্ট স্টেট ম্যানিপুলেটকারী কোড, এবং শেষে অন্য কন্ট্র্যাক্ট বা EOA-এর সাথে ইন্টারঅ্যাক্টকারী কোড আসে।
+রিএন্ট্রান্সি মোকাবিলার একটি পদ্ধতি হলো [চেকস-ইফেক্টস-ইন্টারঅ্যাকশনস প্যাটার্ন](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern) অনুসরণ করা। এই প্যাটার্নটি ফাংশনগুলোর এক্সিকিউশন এমনভাবে সাজায় যাতে এক্সিকিউশন এগিয়ে নেওয়ার আগে প্রয়োজনীয় চেকগুলো করে এমন কোড প্রথমে আসে, এরপর কন্ট্রাক্ট স্টেট ম্যানিপুলেট করে এমন কোড আসে এবং অন্যান্য কন্ট্রাক্ট বা EOA-এর সাথে ইন্টারঅ্যাক্ট করে এমন কোড সবার শেষে আসে।
-চেক-ইফেক্ট-ইন্টারঅ্যাকশন প্যাটার্নটি `Victim` কন্ট্র্যাক্টের একটি সংশোধিত সংস্করণে ব্যবহার করা হয়েছে যা নীচে দেখানো হয়েছে:
+চেকস-ইফেক্ট-ইন্টারঅ্যাকশন প্যাটার্নটি নিচে দেখানো `Victim` কন্ট্রাক্টের একটি সংশোধিত সংস্করণে ব্যবহার করা হয়েছে:
```solidity
contract NoLongerAVictim {
@@ -323,9 +323,9 @@ contract NoLongerAVictim {
}
```
-এই কন্ট্র্যাক্টটি ব্যবহারকারীর ব্যালেন্সের উপর একটি _চেক_ সম্পাদন করে, `withdraw()` ফাংশনের _ইফেক্টস_ প্রয়োগ করে (ব্যবহারকারীর ব্যালেন্স 0 এ রিসেট করে), এবং _ইন্টারঅ্যাকশন_ সম্পাদনের দিকে অগ্রসর হয় (ব্যবহারকারীর অ্যাড্রেসে ETH পাঠানো)। এটি নিশ্চিত করে যে কন্ট্র্যাক্টটি এক্সটার্নাল কলের আগে তার স্টোরেজ আপডেট করে, যা প্রথম অ্যাটাক সক্ষমকারী রি-এন্ট্রেন্সি শর্তটি দূর করে। `Attacker` কন্ট্র্যাক্টটি এখনও `NoLongerAVictim`-এ আবার কল করতে পারে, কিন্তু যেহেতু `balances[msg.sender]` 0 এ সেট করা হয়েছে, তাই অতিরিক্ত উইথড্রয়াল একটি ত্রুটি নিক্ষেপ করবে।
+এই কন্ট্রাক্টটি ব্যবহারকারীর ব্যালেন্সের উপর একটি _চেক_ করে, `withdraw()` ফাংশনের _ইফেক্টগুলো_ প্রয়োগ করে (ব্যবহারকারীর ব্যালেন্স 0-তে রিসেট করে), এবং _ইন্টারঅ্যাকশন_ করতে এগিয়ে যায় (ব্যবহারকারীর এডড্রেস-এ ETH পাঠানো)। এটি নিশ্চিত করে যে কন্ট্রাক্টটি এক্সটার্নাল কলের আগে এর স্টোরেজ আপডেট করে, যা প্রথম আক্রমণকে সক্ষম করা রি-এন্ট্রান্সি শর্তটি দূর করে। `Attacker` কন্ট্রাক্টটি এখনও `NoLongerAVictim`-এ কল ব্যাক করতে পারে, কিন্তু যেহেতু `balances[msg.sender]` 0-তে সেট করা হয়েছে, তাই অতিরিক্ত উইথড্রয়ালগুলো একটি ত্রুটি থ্রো করবে।
-আরেকটি বিকল্প হল একটি মিউচুয়াল এক্সক্লুশন লক (সাধারণত "মিউটেক্স" হিসাবে বর্ণিত) ব্যবহার করা যা একটি ফাংশন ইনভোকেশন সম্পূর্ণ না হওয়া পর্যন্ত একটি কন্ট্র্যাক্টের স্টেটের একটি অংশ লক করে। এটি একটি বুলিয়ান ভ্যারিয়েবল ব্যবহার করে বাস্তবায়িত হয় যা ফাংশন এক্সিকিউট হওয়ার আগে `true` তে সেট করা হয় এবং ইনভোকেশন শেষ হওয়ার পরে `false` তে ফিরে আসে। নীচের উদাহরণে যেমন দেখা যায়, একটি মিউটেক্স ব্যবহার করা একটি ফাংশনকে রিকার্সিভ কল থেকে রক্ষা করে যখন মূল ইনভোকেশন এখনও প্রসেস হচ্ছে, কার্যকরভাবে রিএন্ট্রেন্সি বন্ধ করে।
+আরেকটি বিকল্প হলো একটি মিউচুয়াল এক্সক্লুশন লক (সাধারণত "মিউটেক্স" হিসেবে বর্ণিত) ব্যবহার করা যা একটি ফাংশন ইনভোকেশন সম্পূর্ণ না হওয়া পর্যন্ত একটি কন্ট্রাক্টের স্টেটের একটি অংশ লক করে রাখে। এটি একটি বুলিয়ান ভেরিয়েবল ব্যবহার করে বাস্তবায়িত হয় যা ফাংশন এক্সিকিউট হওয়ার আগে `true` হিসেবে সেট করা হয় এবং ইনভোকেশন শেষ হওয়ার পরে `false`-এ ফিরে যায়। নিচের উদাহরণে যেমন দেখা গেছে, একটি মিউটেক্স ব্যবহার করা একটি ফাংশনকে রিকার্সিভ কলের বিরুদ্ধে রক্ষা করে যখন মূল ইনভোকেশনটি এখনও প্রসেস হচ্ছে, যা কার্যকরভাবে রিএন্ট্রান্সি বন্ধ করে।
```solidity
pragma solidity ^0.7.0;
@@ -340,8 +340,8 @@ contract MutexPattern {
_;
locked = false;
}
- // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again.
- // The `return` statement evaluates to `true` but still evaluates the `locked = false` statement in the modifier
+ // এই ফাংশনটি একটি মিউটেক্স দ্বারা সুরক্ষিত, তাই `msg.sender.call`-এর ভেতর থেকে রিএন্ট্রান্ট কলগুলো পুনরায় `withdraw` কল করতে পারবে না।
+ // `return` স্টেটমেন্টটি `true` হিসেবে মূল্যায়িত হয় কিন্তু তারপরও এটি মডিফায়ারে থাকা `locked = false` স্টেটমেন্টটিকে মূল্যায়ন করে
function withdraw(uint _amount) public payable noReentrancy returns(bool) {
require(balances[msg.sender] >= _amount, "No balance to withdraw.");
@@ -354,15 +354,15 @@ contract MutexPattern {
}
```
-আপনি একটি [পুল পেমেন্টস](https://docs.openzeppelin.com/contracts/5.x/api/utils#security#PullPayment) সিস্টেমও ব্যবহার করতে পারেন যা ব্যবহারকারীদের স্মার্ট কন্ট্র্যাক্ট থেকে ফান্ড উইথড্র করতে বলে, "পুশ পেমেন্টস" সিস্টেমের পরিবর্তে যা অ্যাকাউন্টগুলোতে ফান্ড পাঠায়। এটি অজানা অ্যাড্রেসে অনিচ্ছাকৃতভাবে কোড ট্রিগার করার সম্ভাবনা দূর করে (এবং নির্দিষ্ট ডিনায়াল-অফ-সার্ভিস অ্যাটাকও প্রতিরোধ করতে পারে)।
+আপনি একটি [পুল পেমেন্টস](https://docs.openzeppelin.com/contracts/5.x/api/utils#security#PullPayment) সিস্টেমও ব্যবহার করতে পারেন যার জন্য ব্যবহারকারীদের স্মার্ট কন্ট্রাক্টগুলো থেকে ফান্ড তুলতে হয়, একটি "পুশ পেমেন্টস" সিস্টেমের পরিবর্তে যা একাউন্টগুলোতে ফান্ড পাঠায়। এটি অজানা এডড্রেসগুলোতে অসাবধানতাবশত কোড ট্রিগার করার সম্ভাবনা দূর করে (এবং নির্দিষ্ট ডিনায়াল-অফ-সার্ভিস আক্রমণগুলোও প্রতিরোধ করতে পারে)।
-#### পূর্ণসংখ্যা আন্ডারফ্লো এবং ওভারফ্লো {#integer-underflows-and-overflows}
+#### ইন্টিজার আন্ডারফ্লো এবং ওভারফ্লো {#integer-underflows-and-overflows}
-একটি পূর্ণসংখ্যা ওভারফ্লো ঘটে যখন একটি গাণিতিক অপারেশনের ফলাফল মানের গ্রহণযোগ্য পরিসরের বাইরে চলে যায়, যার ফলে এটি সর্বনিম্ন প্রতিনিধিত্বযোগ্য মানে "রোল ওভার" করে। উদাহরণস্বরূপ, একটি `uint8` শুধুমাত্র 2^8-1=255 পর্যন্ত মান সংরক্ষণ করতে পারে। `255` এর চেয়ে বেশি মানের গাণিতিক অপারেশনগুলো ওভারফ্লো হবে এবং `uint`-কে `0` এ রিসেট করবে, যেমন একটি গাড়ির ওডোমিটার সর্বোচ্চ মাইলেজ (999999) পৌঁছানোর পরে 0 এ রিসেট হয়।
+একটি ইন্টিজার ওভারফ্লো তখন ঘটে যখন একটি গাণিতিক অপারেশনের ফলাফল ভ্যালুগুলোর গ্রহণযোগ্য রেঞ্জের বাইরে চলে যায়, যার ফলে এটি সর্বনিম্ন রিপ্রেজেন্টেবল ভ্যালুতে "রোল ওভার" করে। উদাহরণস্বরূপ, একটি `uint8` শুধুমাত্র 2^8-1=255 পর্যন্ত ভ্যালু সংরক্ষণ করতে পারে। গাণিতিক অপারেশনগুলো যার ফলে `255`-এর চেয়ে বেশি ভ্যালু আসে তা ওভারফ্লো হবে এবং `uint`-কে `0`-তে রিসেট করবে, ঠিক যেমন একটি গাড়ির ওডোমিটার সর্বোচ্চ মাইলেজ (999999) পৌঁছানোর পরে 0-তে রিসেট হয়।
-পূর্ণসংখ্যা আন্ডারফ্লো অনুরূপ কারণে ঘটে: একটি গাণিতিক অপারেশনের ফলাফল গ্রহণযোগ্য পরিসরের নীচে চলে যায়। ধরুন আপনি একটি `uint8`-এ `0` ডিক্রিমেন্ট করার চেষ্টা করেছেন, ফলাফলটি কেবল সর্বোচ্চ প্রতিনিধিত্বযোগ্য মানে (`255`) রোল ওভার করবে।
+ইন্টিজার আন্ডারফ্লো একই কারণে ঘটে: একটি গাণিতিক অপারেশনের ফলাফল গ্রহণযোগ্য রেঞ্জের নিচে চলে যায়। ধরুন আপনি একটি `uint8`-এ `0` কমানোর চেষ্টা করেছেন, ফলাফলটি কেবল সর্বোচ্চ রিপ্রেজেন্টেবল ভ্যালুতে (`255`) রোল ওভার করবে।
-পূর্ণসংখ্যা ওভারফ্লো এবং আন্ডারফ্লো উভয়ই একটি কন্ট্র্যাক্টের স্টেট ভ্যারিয়েবলে অপ্রত্যাশিত পরিবর্তন ঘটাতে পারে এবং অপরিকল্পিত এক্সিকিউশনের কারণ হতে পারে। নীচে একটি উদাহরণ দেখানো হয়েছে যা দেখায় কিভাবে একজন অ্যাটাকার একটি স্মার্ট কন্ট্র্যাক্টে গাণিতিক ওভারফ্লো ব্যবহার করে একটি অবৈধ অপারেশন সম্পাদন করতে পারে:
+ইন্টিজার ওভারফ্লো এবং আন্ডারফ্লো উভয়ই একটি কন্ট্রাক্টের স্টেট ভেরিয়েবলগুলোতে অপ্রত্যাশিত পরিবর্তন আনতে পারে এবং অপরিকল্পিত এক্সিকিউশনের কারণ হতে পারে। নিচে একটি উদাহরণ দেওয়া হলো যা দেখায় কীভাবে একজন আক্রমণকারী একটি অবৈধ অপারেশন করতে একটি স্মার্ট কন্ট্রাক্ট-এ গাণিতিক ওভারফ্লো কাজে লাগাতে পারে:
```
pragma solidity ^0.7.6;
@@ -433,144 +433,144 @@ contract Attack {
}
```
-##### কিভাবে পূর্ণসংখ্যা আন্ডারফ্লো এবং ওভারফ্লো প্রতিরোধ করা যায়
+##### কীভাবে ইন্টিজার আন্ডারফ্লো এবং ওভারফ্লো প্রতিরোধ করবেন
-ভার্সন 0.8.0 থেকে, Solidity কম্পাইলার সেই কোড প্রত্যাখ্যান করে যা পূর্ণসংখ্যা আন্ডারফ্লো এবং ওভারফ্লো ঘটায়। যাইহোক, একটি নিম্ন কম্পাইলার সংস্করণ দিয়ে কম্পাইল করা কন্ট্র্যাক্টগুলোতে হয় গাণিতিক অপারেশন জড়িত ফাংশনগুলোতে চেক সম্পাদন করা উচিত অথবা একটি লাইব্রেরি (যেমন, [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) ব্যবহার করা উচিত যা আন্ডারফ্লো/ওভারফ্লো জন্য চেক করে।
+0.8.0 ভার্সন থেকে, Solidity কম্পাইলার এমন কোড প্রত্যাখ্যান করে যার ফলে ইন্টিজার আন্ডারফ্লো এবং ওভারফ্লো হয়। তবে, নিম্ন কম্পাইলার ভার্সন দিয়ে কম্পাইল করা কন্ট্রাক্টগুলোর গাণিতিক অপারেশন জড়িত ফাংশনগুলোতে চেক করা উচিত অথবা এমন একটি লাইব্রেরি (যেমন, [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) ব্যবহার করা উচিত যা আন্ডারফ্লো/ওভারফ্লো চেক করে।
#### ওরাকল ম্যানিপুলেশন {#oracle-manipulation}
-[ওরাকলস](/developers/docs/oracles/) অফচেন তথ্য উৎস করে এবং স্মার্ট কন্ট্র্যাক্ট ব্যবহারের জন্য অনচেইনে পাঠায়। ওরাকলের সাহায্যে, আপনি এমন স্মার্ট কন্ট্র্যাক্ট ডিজাইন করতে পারেন যা অফচেন সিস্টেমের সাথে ইন্টারঅপারেট করে, যেমন মূলধনের বাজার, যা তাদের অ্যাপ্লিকেশনকে ব্যাপকভাবে প্রসারিত করে।
+[ওরাকলগুলো](/developers/docs/oracles/) অফচেইন তথ্যের উৎস হিসেবে কাজ করে এবং স্মার্ট কন্ট্রাক্টগুলোর ব্যবহারের জন্য এটি অনচেইন পাঠায়। ওরাকলগুলোর সাহায্যে, আপনি এমন স্মার্ট কন্ট্রাক্ট ডিজাইন করতে পারেন যা অফচেইন সিস্টেমগুলোর সাথে ইন্টারঅপারেট করে, যেমন ক্যাপিটাল মার্কেট, যা তাদের অ্যাপ্লিকেশনকে ব্যাপকভাবে প্রসারিত করে।
-কিন্তু যদি ওরাকলটি দুর্নীতিগ্রস্ত হয় এবং অনচেইনে ভুল তথ্য পাঠায়, স্মার্ট কন্ট্র্যাক্টগুলো ভুল ইনপুটের উপর ভিত্তি করে এক্সিকিউট হবে, যা সমস্যা সৃষ্টি করতে পারে। এটি “ওরাকল সমস্যা”র ভিত্তি, যা একটি ব্লকচেইন ওরাকল থেকে তথ্য সঠিক, আপ-টু-ডেট এবং সময়মত কিনা তা নিশ্চিত করার কাজ নিয়ে উদ্বিগ্ন।
+কিন্তু যদি ওরাকলটি দূষিত হয় এবং অনচেইন ভুল তথ্য পাঠায়, তবে স্মার্ট কন্ট্রাক্টগুলো ভুল ইনপুটের উপর ভিত্তি করে এক্সিকিউট হবে, যা সমস্যা সৃষ্টি করতে পারে। এটি হলো "ওরাকল প্রবলেম"-এর ভিত্তি, যা একটি ব্লকচেইন ওরাকল থেকে পাওয়া তথ্য সঠিক, আপ-টু-ডেট এবং সময়োপযোগী তা নিশ্চিত করার কাজের সাথে সম্পর্কিত।
-একটি সম্পর্কিত নিরাপত্তা উদ্বেগ হল একটি অনচেন ওরাকল, যেমন একটি ডিসেন্ট্রালাইজড এক্সচেঞ্জ, ব্যবহার করে একটি সম্পদের স্পট মূল্য পাওয়া। [ডিসেন্ট্রালাইজড ফাইন্যান্স (DeFi)](/defi/) শিল্পের লেন্ডিং প্ল্যাটফর্মগুলো প্রায়শই এটি করে ব্যবহারকারীর কোল্যাটেরালের মূল্য নির্ধারণ করতে, যাতে তারা কতটুকু ধার নিতে পারবে তা নির্ধারণ করা যায়।
+একটি সম্পর্কিত নিরাপত্তা উদ্বেগ হলো একটি অ্যাসেটের স্পট প্রাইস পেতে একটি অনচেইন ওরাকল ব্যবহার করা, যেমন একটি ডিসেন্ট্রালাইজড এক্সচেঞ্জ। [ডিসেন্ট্রালাইজড ফাইন্যান্স (DeFi)](/defi/) ইন্ডাস্ট্রিতে লেন্ডিং প্ল্যাটফর্মগুলো প্রায়ই একজন ব্যবহারকারীর কোল্যাটারালের ভ্যালু নির্ধারণ করতে এটি করে যাতে তারা কত ধার নিতে পারে তা নির্ধারণ করা যায়।
-DEX মূল্য প্রায়শই সঠিক হয়, মূলত আরবিট্রেজররা বাজারে প্যারিটি পুনরুদ্ধার করার কারণে। যাইহোক, তারা ম্যানিপুলেশনের জন্য উন্মুক্ত, বিশেষ করে যদি অনচেন ওরাকল ঐতিহাসিক ট্রেডিং প্যাটার্নের উপর ভিত্তি করে সম্পদের মূল্য গণনা করে (যেমনটি সাধারণত হয়)।
+DEX প্রাইসগুলো প্রায়ই সঠিক হয়, মূলত আরবিট্রেজাররা (arbitrageurs) মার্কেটে সমতা ফিরিয়ে আনার কারণে। তবে, এগুলো ম্যানিপুলেশনের জন্য উন্মুক্ত, বিশেষ করে যদি অনচেইন ওরাকল ঐতিহাসিক ট্রেডিং প্যাটার্নের উপর ভিত্তি করে অ্যাসেটের প্রাইস গণনা করে (যেমনটি সাধারণত হয়)।
-উদাহরণস্বরূপ, একজন অ্যাটাকার আপনার লেন্ডিং কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করার ঠিক আগে একটি ফ্ল্যাশ লোন নিয়ে একটি সম্পদের স্পট মূল্য কৃত্রিমভাবে পাম্প করতে পারে। সম্পদের মূল্যের জন্য DEX-কে কোয়েরি করলে একটি স্বাভাবিকের চেয়ে বেশি মান ফেরত আসবে (অ্যাটাকারের বড় “ক্রয় অর্ডার” সম্পদের চাহিদা বিকৃত করার কারণে), যা তাদের প্রয়োজনের চেয়ে বেশি ধার নিতে দেয়। এই ধরনের "ফ্ল্যাশ লোন অ্যাটাক" DeFi অ্যাপ্লিকেশনগুলোর মধ্যে মূল্য ওরাকলের উপর নির্ভরতা কাজে লাগাতে ব্যবহার করা হয়েছে, যা প্রোটোকলগুলোকে লক্ষ লক্ষ ডলারের ফান্ড হারিয়েছে।
+উদাহরণস্বরূপ, একজন আক্রমণকারী আপনার লেন্ডিং কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করার ঠিক আগে একটি ফ্ল্যাশ লোন নিয়ে কৃত্রিমভাবে একটি অ্যাসেটের স্পট প্রাইস পাম্প করতে পারে। অ্যাসেটের প্রাইসের জন্য DEX-এ কোয়েরি করলে একটি স্বাভাবিকের চেয়ে বেশি ভ্যালু ফিরে আসবে (আক্রমণকারীর বড় "বাই অর্ডার" অ্যাসেটের চাহিদাকে স্কিউ করার কারণে), যা তাদের উচিতের চেয়ে বেশি ধার নেওয়ার অনুমতি দেয়। এই ধরনের "ফ্ল্যাশ লোন আক্রমণগুলো" DeFi অ্যাপ্লিকেশনগুলোর মধ্যে প্রাইস ওরাকলগুলোর উপর নির্ভরতা কাজে লাগাতে ব্যবহার করা হয়েছে, যার ফলে প্রটোকলগুলোর মিলিয়ন মিলিয়ন ফান্ড নষ্ট হয়েছে।
-##### কিভাবে ওরাকল ম্যানিপুলেশন প্রতিরোধ করা যায়
+##### কীভাবে ওরাকল ম্যানিপুলেশন প্রতিরোধ করবেন
-[ওরাকল ম্যানিপুলেশন এড়ানোর](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) জন্য ন্যূনতম প্রয়োজনীয়তা হল একটি ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্ক ব্যবহার করা যা একাধিক উৎস থেকে তথ্য কোয়েরি করে যাতে সিঙ্গেল পয়েন্ট অফ ফেলিওর এড়ানো যায়। বেশিরভাগ ক্ষেত্রে, ডিসেন্ট্রালাইজড ওরাকলগুলোতে বিল্ট-ইন ক্রিপ্টোইকোনমিক ইনসেনটিভ থাকে যা ওরাকল নোডগুলোকে সঠিক তথ্য রিপোর্ট করতে উৎসাহিত করে, যা তাদের সেন্ট্রালাইজড ওরাকলের চেয়ে বেশি সুরক্ষিত করে তোলে।
+[ওরাকল ম্যানিপুলেশন এড়ানোর](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) ন্যূনতম প্রয়োজনীয়তা হলো একটি ডিসেন্ট্রালাইজড ওরাকল নেটওয়ার্ক ব্যবহার করা যা সিঙ্গেল পয়েন্ট অফ ফেইলিওর এড়াতে একাধিক উৎস থেকে তথ্য কোয়েরি করে। বেশিরভাগ ক্ষেত্রে, ডিসেন্ট্রালাইজড ওরাকলগুলোতে ওরাকল নোডগুলোকে সঠিক তথ্য রিপোর্ট করতে উৎসাহিত করার জন্য বিল্ট-ইন ক্রিপ্টোইকোনমিক প্রণোদনা থাকে, যা সেগুলোকে সেন্ট্রালাইজড ওরাকলগুলোর চেয়ে বেশি নিরাপদ করে তোলে।
-যদি আপনি সম্পদের মূল্যের জন্য একটি অনচেন ওরাকল কোয়েরি করার পরিকল্পনা করেন, তবে এমন একটি ব্যবহার করার কথা বিবেচনা করুন যা একটি টাইম-ওয়েটেড অ্যাভারেজ প্রাইস (TWAP) মেকানিজম বাস্তবায়ন করে। একটি [TWAP ওরাকল](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) দুটি ভিন্ন সময়ে (যা আপনি পরিবর্তন করতে পারেন) একটি সম্পদের মূল্য কোয়েরি করে এবং প্রাপ্ত গড়ের উপর ভিত্তি করে স্পট মূল্য গণনা করে। দীর্ঘ সময়কাল বেছে নেওয়া আপনার প্রোটোকলকে মূল্য ম্যানিপুলেশন থেকে রক্ষা করে কারণ সম্প্রতি এক্সিকিউট করা বড় অর্ডারগুলো সম্পদের মূল্যকে প্রভাবিত করতে পারে না।
+আপনি যদি অ্যাসেটের প্রাইসের জন্য একটি অনচেইন ওরাকল কোয়েরি করার পরিকল্পনা করেন, তবে এমন একটি ব্যবহার করার কথা বিবেচনা করুন যা একটি টাইম-ওয়েটেড অ্যাভারেজ প্রাইস (TWAP) মেকানিজম বাস্তবায়ন করে। একটি [TWAP ওরাকল](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) দুটি ভিন্ন সময়ে (যা আপনি পরিবর্তন করতে পারেন) একটি অ্যাসেটের প্রাইস কোয়েরি করে এবং প্রাপ্ত গড়ের উপর ভিত্তি করে স্পট প্রাইস গণনা করে। দীর্ঘ সময়কাল বেছে নেওয়া আপনার প্রটোকলকে প্রাইস ম্যানিপুলেশনের বিরুদ্ধে রক্ষা করে কারণ সম্প্রতি এক্সিকিউট হওয়া বড় অর্ডারগুলো অ্যাসেটের প্রাইসকে প্রভাবিত করতে পারে না।
-## ডেভেলপারদের জন্য স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা রিসোর্স {#smart-contract-security-resources-for-developers}
+## ডেভেলপারদের জন্য স্মার্ট কন্ট্রাক্ট সিকিউরিটি রিসোর্স {#smart-contract-security-resources-for-developers}
-### স্মার্ট কন্ট্র্যাক্ট বিশ্লেষণ এবং কোডের সঠিকতা যাচাই করার জন্য টুলস {#code-analysis-tools}
+### স্মার্ট কন্ট্রাক্ট বিশ্লেষণ এবং কোডের সঠিকতা যাচাই করার টুল {#code-analysis-tools}
-- **[টেস্টিং টুলস এবং লাইব্রেরি](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _স্মার্ট কন্ট্র্যাক্টে ইউনিট টেস্ট, স্ট্যাটিক বিশ্লেষণ এবং ডাইনামিক বিশ্লেষণ সম্পাদনের জন্য ইন্ডাস্ট্রি-স্ট্যান্ডার্ড টুলস এবং লাইব্রেরির সংগ্রহ।_
+- **[টেস্টিং টুল এবং লাইব্রেরি](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _স্মার্ট কন্ট্রাক্টগুলোতে ইউনিট টেস্ট, স্ট্যাটিক অ্যানালাইসিস এবং ডাইনামিক অ্যানালাইসিস করার জন্য ইন্ডাস্ট্রি-স্ট্যান্ডার্ড টুল এবং লাইব্রেরির সংগ্রহ।_
-- **[ফর্মাল ভেরিফিকেশন টুলস](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _স্মার্ট কন্ট্র্যাক্টে ফাংশনাল সঠিকতা যাচাই এবং ইনভ্যারিয়েন্ট চেক করার জন্য টুলস।_
+- **[ফরমাল ভেরিফিকেশন টুল](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _স্মার্ট কন্ট্রাক্টগুলোতে ফাংশনাল সঠিকতা যাচাই এবং ইনভ্যারিয়েন্ট চেক করার টুল।_
-- **[স্মার্ট কন্ট্র্যাক্ট অডিটিং পরিষেবা](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _ইথেরিয়াম ডেভেলপমেন্ট প্রজেক্টের জন্য স্মার্ট কন্ট্র্যাক্ট অডিটিং পরিষেবা প্রদানকারী সংস্থাগুলোর তালিকা।_
+- **[স্মার্ট কন্ট্রাক্ট অডিটিং সার্ভিস](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _ইথিরিয়াম ডেভেলপমেন্ট প্রজেক্টের জন্য স্মার্ট কন্ট্রাক্ট অডিটিং সার্ভিস প্রদানকারী সংস্থাগুলোর তালিকা।_
-- **[বাগ বাউন্টি প্ল্যাটফর্ম](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _বাগ বাউন্টি সমন্বয় এবং স্মার্ট কন্ট্র্যাক্টে গুরুতর দুর্বলতার দায়িত্বশীল প্রকাশের জন্য পুরস্কৃত করার প্ল্যাটফর্ম।_
+- **[বাগ বাউন্টি প্ল্যাটফর্ম](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _বাগ বাউন্টি পরিচালনা এবং স্মার্ট কন্ট্রাক্টগুলোর জটিল দুর্বলতাগুলো দায়িত্বশীলভাবে প্রকাশ করার জন্য পুরস্কৃত করার প্ল্যাটফর্ম।_
-- **[Fork Checker](https://forkchecker.hashex.org/)** - _একটি ফর্ক করা কন্ট্র্যাক্ট সম্পর্কিত সমস্ত উপলব্ধ তথ্য পরীক্ষা করার জন্য একটি বিনামূল্যের অনলাইন টুল।_
+- **[Fork Checker](https://forkchecker.hashex.org/)** - _ফর্ক করা কন্ট্রাক্ট সম্পর্কিত সমস্ত উপলব্ধ তথ্য চেক করার জন্য একটি বিনামূল্যের অনলাইন টুল।_
-- **[ABI Encoder](https://abi.hashex.org/)** - _আপনার Solidity কন্ট্র্যাক্ট ফাংশন এবং কনস্ট্রাক্টর আর্গুমেন্ট এনকোড করার জন্য একটি বিনামূল্যের অনলাইন পরিষেবা।_
+- **[ABI Encoder](https://abi.hashex.org/)** - _আপনার Solidity কন্ট্রাক্ট ফাংশন এবং কনস্ট্রাক্টর আর্গুমেন্ট এনকোড করার জন্য একটি বিনামূল্যের অনলাইন সার্ভিস।_
-- **[Aderyn](https://github.com/Cyfrin/aderyn)** - _Solidity স্ট্যাটিক অ্যানালাইজার, অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) ট্র্যাভার্স করে সন্দেহজনক দুর্বলতা চিহ্নিত করে এবং সহজে ব্যবহারযোগ্য মার্কডাউন ফরম্যাটে সমস্যাগুলো প্রিন্ট করে।_
+- **[Aderyn](https://github.com/Cyfrin/aderyn)** - _Solidity স্ট্যাটিক অ্যানালাইজার, যা সন্দেহজনক দুর্বলতাগুলো চিহ্নিত করতে অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) ট্রাভার্স করে এবং সহজে ব্যবহারযোগ্য মার্কডাউন ফরম্যাটে সমস্যাগুলো প্রিন্ট করে।_
-### স্মার্ট কন্ট্র্যাক্ট মনিটরিংয়ের জন্য টুলস {#smart-contract-monitoring-tools}
+### স্মার্ট কন্ট্রাক্ট মনিটরিং করার টুল {#smart-contract-monitoring-tools}
-- **[Tenderly রিয়েল-টাইম অ্যালার্টিং](https://tenderly.co/monitoring)** - _আপনার স্মার্ট কন্ট্র্যাক্ট বা ওয়ালেটে অস্বাভাবিক বা অপ্রত্যাশিত ইভেন্ট ঘটলে রিয়েল-টাইম নোটিফিকেশন পাওয়ার জন্য একটি টুল।_
+- **[Tenderly Real-Time Alerting](https://tenderly.co/monitoring)** - _আপনার স্মার্ট কন্ট্রাক্ট বা ওয়ালেটগুলোতে অস্বাভাবিক বা অপ্রত্যাশিত ঘটনা ঘটলে রিয়েল-টাইম নোটিফিকেশন পাওয়ার একটি টুল।_
-### স্মার্ট কন্ট্র্যাক্টের সুরক্ষিত প্রশাসনের জন্য টুলস {#smart-contract-administration-tools}
+### স্মার্ট কন্ট্রাক্টগুলোর নিরাপদ পরিচালনার টুল {#smart-contract-administration-tools}
-- **[Safe](https://safe.global/)** - _ইথেরিয়ামে চলমান স্মার্ট কন্ট্র্যাক্ট ওয়ালেট যার জন্য একটি লেনদেন ঘটার আগে ন্যূনতম সংখ্যক লোকের অনুমোদন প্রয়োজন (M-of-N)।_
+- **[Safe](https://safe.global/)** - _ইথিরিয়ামে চলা স্মার্ট কন্ট্রাক্ট ওয়ালেট, যেখানে কোনো লেনদেন সম্পন্ন হওয়ার আগে ন্যূনতম সংখ্যক মানুষের অনুমোদনের প্রয়োজন হয় (M-of-N)।_
-- **[OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)** - _কন্ট্র্যাক্ট মালিকানা, আপগ্রেড, অ্যাক্সেস কন্ট্রোল, গভর্নেন্স, পজেবিলিটি এবং আরও অনেক কিছু সহ প্রশাসনিক বৈশিষ্ট্য বাস্তবায়নের জন্য কন্ট্র্যাক্ট লাইব্রেরি।_
+- **[OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)** - _কন্ট্রাক্ট ওনারশিপ, আপগ্রেড, অ্যাক্সেস কন্ট্রোল, গভর্নেন্স, পজ করার ক্ষমতাসহ প্রশাসনিক ফিচারগুলো বাস্তবায়নের জন্য কন্ট্রাক্ট লাইব্রেরি।_
-### স্মার্ট কন্ট্র্যাক্ট অডিটিং পরিষেবা {#smart-contract-auditing-services}
+### স্মার্ট কন্ট্রাক্ট অডিটিং সার্ভিস {#smart-contract-auditing-services}
-- **[ConsenSys Diligence](https://diligence.consensys.io/)** - _স্মার্ট কন্ট্র্যাক্ট অডিটিং পরিষেবা যা ব্লকচেইন ইকোসিস্টেম জুড়ে প্রকল্পগুলোকে তাদের প্রোটোকলগুলো লঞ্চের জন্য প্রস্তুত এবং ব্যবহারকারীদের সুরক্ষার জন্য নির্মিত তা নিশ্চিত করতে সাহায্য করে।_
+- **[ConsenSys Diligence](https://diligence.consensys.io/)** - _স্মার্ট কন্ট্রাক্ট অডিটিং সার্ভিস, যা ব্লকচেইন ইকোসিস্টেমের প্রজেক্টগুলোকে তাদের প্রটোকল লঞ্চের জন্য প্রস্তুত করতে এবং ব্যবহারকারীদের সুরক্ষার জন্য তৈরি করতে সাহায্য করে।_
-- **[CertiK](https://www.certik.com/)** - _ব্লকচেইন নিরাপত্তা সংস্থা যা স্মার্ট কন্ট্র্যাক্ট এবং ব্লকচেইন নেটওয়ার্কে অত্যাধুনিক ফর্মাল ভেরিফিকেশন প্রযুক্তির ব্যবহারে অগ্রণী ভূমিকা পালন করছে।_
+- **[CertiK](https://www.certik.com/)** - _ব্লকচেইন সিকিউরিটি ফার্ম, যা স্মার্ট কন্ট্রাক্ট এবং ব্লকচেইন নেটওয়ার্কগুলোতে অত্যাধুনিক ফরমাল ভেরিফিকেশন প্রযুক্তির ব্যবহারে অগ্রণী ভূমিকা পালন করছে।_
-- **[Trail of Bits](https://www.trailofbits.com/)** - _সাইবারসিকিউরিটি কোম্পানি যা ঝুঁকি কমাতে এবং কোডকে শক্তিশালী করতে নিরাপত্তা গবেষণার সাথে একজন অ্যাটাকারের মানসিকতাকে একত্রিত করে।_
+- **[Trail of Bits](https://www.trailofbits.com/)** - _সাইবার সিকিউরিটি কোম্পানি, যা ঝুঁকি কমাতে এবং কোডকে শক্তিশালী করতে আক্রমণকারীর মানসিকতার সাথে সিকিউরিটি গবেষণার সমন্বয় করে।_
-- **[PeckShield](https://peckshield.com/)** - _ব্লকচেইন নিরাপত্তা সংস্থা যা সমগ্র ব্লকচেইন ইকোসিস্টেমের নিরাপত্তা, গোপনীয়তা এবং ব্যবহারযোগ্যতার জন্য পণ্য এবং পরিষেবা সরবরাহ করে।_
+- **[PeckShield](https://peckshield.com/)** - _ব্লকচেইন সিকিউরিটি কোম্পানি, যা সম্পূর্ণ ব্লকচেইন ইকোসিস্টেমের নিরাপত্তা, গোপনীয়তা এবং ব্যবহারযোগ্যতার জন্য প্রোডাক্ট ও সার্ভিস প্রদান করে।_
-- **[QuantStamp](https://quantstamp.com/)** - _নিরাপত্তা এবং ঝুঁকি মূল্যায়ন পরিষেবার মাধ্যমে ব্লকচেইন প্রযুক্তির মূলধারার গ্রহণকে সহজতরকারী অডিটিং পরিষেবা।_
+- **[QuantStamp](https://quantstamp.com/)** - _অডিটিং সার্ভিস, যা নিরাপত্তা এবং ঝুঁকি মূল্যায়ন সার্ভিসের মাধ্যমে ব্লকচেইন প্রযুক্তির মূলধারার গ্রহণকে সহজতর করে।_
-- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা সংস্থা যা ডিস্ট্রিবিউটেড সিস্টেমের জন্য নিরাপত্তা অডিট প্রদান করে।_
+- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _স্মার্ট কন্ট্রাক্ট সিকিউরিটি কোম্পানি, যা ডিস্ট্রিবিউটেড সিস্টেমগুলোর জন্য সিকিউরিটি অডিট প্রদান করে।_
-- **[Runtime Verification](https://runtimeverification.com/)** - _নিরাপত্তা সংস্থা যা স্মার্ট কন্ট্র্যাক্টের ফর্মাল মডেলিং এবং ভেরিফিকেশনে বিশেষজ্ঞ।_
+- **[Runtime Verification](https://runtimeverification.com/)** - _সিকিউরিটি কোম্পানি, যা স্মার্ট কন্ট্রাক্টগুলোর ফরমাল মডেলিং এবং ভেরিফিকেশনে বিশেষজ্ঞ।_
-- **[Hacken](https://hacken.io)** - _ওয়েব3 সাইবারসিকিউরিটি অডিটর যা ব্লকচেইন নিরাপত্তায় ৩৬০-ডিগ্রি পদ্ধতি নিয়ে আসে।_
+- **[Hacken](https://hacken.io)** - _ওয়েব3 সাইবার সিকিউরিটি অডিটর, যা ব্লকচেইন নিরাপত্তায় ৩৬০-ডিগ্রি পদ্ধতি নিয়ে আসে।_
-- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _Solidity এবং Cairo অডিটিং পরিষেবা, যা Ethereum এবং Starknet জুড়ে স্মার্ট কন্ট্র্যাক্টের অখণ্ডতা এবং ব্যবহারকারীদের নিরাপত্তা নিশ্চিত করে।_
+- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _Solidity এবং Cairo অডিটিং সার্ভিস, যা ইথিরিয়াম এবং Starknet জুড়ে স্মার্ট কন্ট্রাক্টগুলোর অখণ্ডতা এবং ব্যবহারকারীদের নিরাপত্তা নিশ্চিত করে।_
-- **[HashEx](https://hashex.org/)** - _HashEx ব্লকচেইন এবং স্মার্ট কন্ট্র্যাক্ট অডিটিংয়ে ফোকাস করে ক্রিপ্টোকারেন্সির নিরাপত্তা নিশ্চিত করতে, যেমন স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্ট, পেনিট্রেশন টেস্টিং, ব্লকচেইন কনসাল্টিং পরিষেবা প্রদান করে।_
+- **[HashEx](https://hashex.org/)** - _HashEx ক্রিপটোকারেন্সিগুলোর নিরাপত্তা নিশ্চিত করতে ব্লকচেইন এবং স্মার্ট কন্ট্রাক্ট অডিটিংয়ের ওপর ফোকাস করে, যা স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, পেনিট্রেশন টেস্টিং, ব্লকচেইন কনসাল্টিংয়ের মতো সার্ভিস প্রদান করে।_
-- **[Code4rena](https://code4rena.com/)** - _প্রতিযোগিতামূলক অডিট প্ল্যাটফর্ম যা স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা বিশেষজ্ঞদের দুর্বলতা খুঁজে বের করতে এবং ওয়েব3 কে আরও সুরক্ষিত করতে সাহায্য করার জন্য উৎসাহিত করে।_
+- **[Code4rena](https://code4rena.com/)** - _প্রতিযোগিতামূলক অডিট প্ল্যাটফর্ম, যা স্মার্ট কন্ট্রাক্ট সিকিউরিটি বিশেষজ্ঞদের দুর্বলতা খুঁজে বের করতে এবং ওয়েব3-কে আরও সুরক্ষিত করতে উৎসাহিত করে।_
-- **[CodeHawks](https://codehawks.com/)** - _প্রতিযোগিতামূলক অডিট প্ল্যাটফর্ম যা নিরাপত্তা গবেষকদের জন্য স্মার্ট কন্ট্র্যাক্ট অডিটিং প্রতিযোগিতার আয়োজন করে।_
+- **[CodeHawks](https://codehawks.com/)** - _প্রতিযোগিতামূলক অডিট প্ল্যাটফর্ম, যা সিকিউরিটি গবেষকদের জন্য স্মার্ট কন্ট্রাক্ট অডিটিং প্রতিযোগিতার আয়োজন করে।_
-- **[Cyfrin](https://cyfrin.io)** - _ওয়েব3 নিরাপত্তা পাওয়ারহাউস, যা পণ্য এবং স্মার্ট কন্ট্র্যাক্ট অডিটিং পরিষেবার মাধ্যমে ক্রিপ্টো নিরাপত্তাকে ইনকিউবেট করে।_
+- **[Cyfrin](https://cyfrin.io)** - _ওয়েব3 সিকিউরিটি পাওয়ারহাউস, যা প্রোডাক্ট এবং স্মার্ট কন্ট্রাক্ট অডিটিং সার্ভিসের মাধ্যমে ক্রিপ্টো সিকিউরিটিকে ইনকিউবেট করে।_
-- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)** - _ওয়েব3 নিরাপত্তা সংস্থা যা অভিজ্ঞ অডিটর এবং সেরা-শ্রেণীর টুলসের একটি দলের মাধ্যমে ব্লকচেইন সিস্টেমের জন্য নিরাপত্তা অডিট সরবরাহ করে।_
+- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)** - _ওয়েব3 সিকিউরিটি ফার্ম, যা অভিজ্ঞ অডিটরদের একটি দল এবং সেরা টুলগুলোর মাধ্যমে ব্লকচেইন সিস্টেমগুলোর জন্য সিকিউরিটি অডিট অফার করে।_
-- **[Oxorio](https://oxor.io/)** - _স্মার্ট কন্ট্র্যাক্ট অডিট এবং ব্লকচেইন নিরাপত্তা পরিষেবা যা EVM, Solidity, ZK, ক্রিপ্টো ফার্ম এবং DeFi প্রকল্পের জন্য ক্রস-চেইন প্রযুক্তিতে বিশেষজ্ঞ।_
+- **[Oxorio](https://oxor.io/)** - _ক্রিপ্টো ফার্ম এবং DeFi প্রজেক্টগুলোর জন্য EVM, Solidity, ZK, ক্রস-চেইন প্রযুক্তিতে দক্ষতাসম্পন্ন স্মার্ট কন্ট্রাক্ট অডিট এবং ব্লকচেইন সিকিউরিটি সার্ভিস।_
-- **[Inference](https://inference.ag/)** - _নিরাপত্তা অডিটিং কোম্পানি, যা EVM-ভিত্তিক ব্লকচেইনের জন্য স্মার্ট কন্ট্র্যাক্ট অডিটিংয়ে বিশেষজ্ঞ। এর বিশেষজ্ঞ অডিটরদের ধন্যবাদ, তারা সম্ভাব্য সমস্যাগুলো চিহ্নিত করে এবং ডিপ্লয়মেন্টের আগে সেগুলো সমাধানের জন্য কার্যকর সমাধান প্রস্তাব করে।_
+- **[Inference](https://inference.ag/)** - _সিকিউরিটি অডিটিং কোম্পানি, যা EVM-ভিত্তিক ব্লকচেইনগুলোর জন্য স্মার্ট কন্ট্রাক্ট অডিটিংয়ে বিশেষজ্ঞ। এর বিশেষজ্ঞ অডিটরদের ধন্যবাদ, তারা সম্ভাব্য সমস্যাগুলো চিহ্নিত করে এবং ডিপ্লয়মেন্টের আগে সেগুলো সমাধানের জন্য কার্যকর পরামর্শ দেয়।_
### বাগ বাউন্টি প্ল্যাটফর্ম {#bug-bounty-platforms}
-- **[Immunefi](https://immunefi.com/)** - _স্মার্ট কন্ট্র্যাক্ট এবং DeFi প্রকল্পগুলোর জন্য বাগ বাউন্টি প্ল্যাটফর্ম, যেখানে নিরাপত্তা গবেষকরা কোড পর্যালোচনা করে, দুর্বলতা প্রকাশ করে, অর্থ প্রদান পায় এবং ক্রিপ্টোকে আরও নিরাপদ করে তোলে।_
+- **[Immunefi](https://immunefi.com/)** - _স্মার্ট কন্ট্রাক্ট এবং DeFi প্রজেক্টগুলোর জন্য বাগ বাউন্টি প্ল্যাটফর্ম, যেখানে সিকিউরিটি গবেষকরা কোড রিভিউ করেন, দুর্বলতা প্রকাশ করেন, অর্থ পান এবং ক্রিপ্টোকে আরও নিরাপদ করেন।_
-- **[HackerOne](https://www.hackerone.com/)** - _দুর্বলতা সমন্বয় এবং বাগ বাউন্টি প্ল্যাটফর্ম যা ব্যবসাগুলোকে পেনিট্রেশন টেস্টার এবং সাইবারসিকিউরিটি গবেষকদের সাথে সংযুক্ত করে।_
+- **[HackerOne](https://www.hackerone.com/)** - _দুর্বলতা সমন্বয় এবং বাগ বাউন্টি প্ল্যাটফর্ম, যা ব্যবসাগুলোকে পেনিট্রেশন টেস্টার এবং সাইবার সিকিউরিটি গবেষকদের সাথে সংযুক্ত করে।_
-- **[HackenProof](https://hackenproof.com/)** - _ক্রিপ্টো প্রকল্পগুলোর (DeFi, স্মার্ট কন্ট্র্যাক্ট, ওয়ালেট, CEX এবং আরও অনেক কিছু) জন্য বিশেষজ্ঞ বাগ বাউন্টি প্ল্যাটফর্ম, যেখানে নিরাপত্তা পেশাদাররা ট্রায়াজ পরিষেবা প্রদান করে এবং গবেষকরা প্রাসঙ্গিক, যাচাইকৃত বাগ রিপোর্টের জন্য অর্থ প্রদান পায়।_
+- **[HackenProof](https://hackenproof.com/)** - _ক্রিপ্টো প্রজেক্টগুলোর (DeFi, স্মার্ট কন্ট্রাক্ট, ওয়ালেট, CEX এবং আরও অনেক কিছু) জন্য বিশেষজ্ঞ বাগ বাউন্টি প্ল্যাটফর্ম, যেখানে সিকিউরিটি পেশাদাররা ট্রায়াজ সার্ভিস প্রদান করেন এবং গবেষকরা প্রাসঙ্গিক, যাচাইকৃত বাগ রিপোর্টের জন্য অর্থ পান।_
-- **[Sherlock](https://www.sherlock.xyz/)** - _স্মার্ট কন্ট্র্যাক্ট নিরাপত্তার জন্য ওয়েব3-এর আন্ডাররাইটার, যেখানে অডিটরদের জন্য পেআউট স্মার্ট কন্ট্র্যাক্টের মাধ্যমে পরিচালিত হয় যাতে প্রাসঙ্গিক বাগগুলো ন্যায্যভাবে পরিশোধ করা হয় তা নিশ্চিত করা যায়।_
+- **[Sherlock](https://www.sherlock.xyz/)** - _স্মার্ট কন্ট্রাক্ট সিকিউরিটির জন্য ওয়েব3-তে আন্ডাররাইটার, যেখানে প্রাসঙ্গিক বাগগুলোর জন্য ন্যায্য অর্থ প্রদান নিশ্চিত করতে স্মার্ট কন্ট্রাক্টগুলোর মাধ্যমে অডিটরদের পেআউট পরিচালনা করা হয়।_
-- **[CodeHawks](https://www.codehawks.com/)** - _প্রতিযোগিতামূলক বাগ বাউন্টি প্ল্যাটফর্ম যেখানে অডিটররা নিরাপত্তা প্রতিযোগিতা এবং চ্যালেঞ্জে অংশ নেয় এবং (শীঘ্রই) তাদের নিজস্ব ব্যক্তিগত অডিটে অংশ নেবে।_
+- **[CodeHawks](https://www.codehawks.com/)** - _প্রতিযোগিতামূলক বাগ বাউন্টি প্ল্যাটফর্ম, যেখানে অডিটররা সিকিউরিটি প্রতিযোগিতা এবং চ্যালেঞ্জগুলোতে অংশ নেন এবং (শীঘ্রই) তাদের নিজস্ব প্রাইভেট অডিটেও অংশ নেবেন।_
-### পরিচিত স্মার্ট কন্ট্র্যাক্ট দুর্বলতা এবং এক্সপ্লয়েটের প্রকাশনা {#common-smart-contract-vulnerabilities-and-exploits}
+### পরিচিত স্মার্ট কন্ট্রাক্ট দুর্বলতা এবং এক্সপ্লয়েটগুলোর প্রকাশনা {#common-smart-contract-vulnerabilities-and-exploits}
-- **[ConsenSys: স্মার্ট কন্ট্র্যাক্টের পরিচিত অ্যাটাক](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _সবচেয়ে গুরুত্বপূর্ণ কন্ট্র্যাক্ট দুর্বলতার শিক্ষানবিস-বান্ধব ব্যাখ্যা, বেশিরভাগ ক্ষেত্রে স্যাম্পল কোড সহ।_
+- **[ConsenSys: Smart Contract Known Attacks](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _সবচেয়ে উল্লেখযোগ্য কন্ট্রাক্ট দুর্বলতাগুলোর শিক্ষানবিস-বান্ধব ব্যাখ্যা, যেখানে বেশিরভাগ ক্ষেত্রেই নমুনা কোড দেওয়া আছে।_
-- **[SWC রেজিস্ট্রি](https://swcregistry.io/)** - _কমন উইকনেস এনুমারেশন (CWE) আইটেমগুলোর একটি কিউরেটেড তালিকা যা ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টে প্রযোজ্য।_
+- **[SWC Registry](https://swcregistry.io/)** - _কমন উইকনেস এনামারেশন (CWE) আইটেমগুলোর কিউরেট করা তালিকা, যা ইথিরিয়াম স্মার্ট কন্ট্রাক্টগুলোতে প্রযোজ্য।_
-- **[Rekt](https://rekt.news/)** - _নিয়মিতভাবে আপডেট হওয়া উচ্চ-প্রোফাইল ক্রিপ্টো হ্যাক এবং এক্সপ্লয়েটের প্রকাশনা, সাথে বিস্তারিত পোস্ট-মর্টেম রিপোর্ট।_
+- **[Rekt](https://rekt.news/)** - _হাই-প্রোফাইল ক্রিপ্টো হ্যাক এবং এক্সপ্লয়েটগুলোর নিয়মিত আপডেট করা প্রকাশনা, সাথে বিস্তারিত পোস্ট-মর্টেম রিপোর্ট।_
-### স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা শেখার জন্য চ্যালেঞ্জ {#challenges-for-learning-smart-contract-security}
+### স্মার্ট কন্ট্রাক্ট সিকিউরিটি শেখার চ্যালেঞ্জ {#challenges-for-learning-smart-contract-security}
-- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _ব্লকচেইন নিরাপত্তা ওয়ারগেম, চ্যালেঞ্জ, এবং [ক্যাপচার দ্য ফ্ল্যাগ](https://www.webopedia.com/definitions/ctf-event/amp/) প্রতিযোগিতা এবং সমাধান রাইটআপের একটি কিউরেটেড তালিকা।_
+- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _ব্লকচেইন সিকিউরিটি ওয়ারগেম, চ্যালেঞ্জ এবং [Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/) প্রতিযোগিতা ও সমাধানের রাইটআপগুলোর কিউরেট করা তালিকা।_
-- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _DeFi স্মার্ট কন্ট্র্যাক্টের আক্রমণাত্মক নিরাপত্তা শেখার এবং বাগ-হান্টিং ও নিরাপত্তা অডিটিংয়ে দক্ষতা তৈরির জন্য ওয়ারগেম।_
+- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _DeFi স্মার্ট কন্ট্রাক্টগুলোর অফেন্সিভ সিকিউরিটি শিখতে এবং বাগ-হান্টিং ও সিকিউরিটি অডিটিংয়ে দক্ষতা তৈরি করার ওয়ারগেম।_
-- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _ওয়েব3/Solidity-ভিত্তিক ওয়ারগেম যেখানে প্রতিটি লেভেল একটি স্মার্ট কন্ট্র্যাক্ট যা 'হ্যাক' করতে হবে।_
+- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _ওয়েব3/Solidity-ভিত্তিক ওয়ারগেম, যেখানে প্রতিটি লেভেল হলো একটি স্মার্ট কন্ট্রাক্ট যাকে 'হ্যাক' করতে হবে।_
-- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _একটি ফ্যান্টাসি অ্যাডভেঞ্চারে সেট করা স্মার্ট কন্ট্র্যাক্ট হ্যাকিং চ্যালেঞ্জ। চ্যালেঞ্জটি সফলভাবে সম্পন্ন করলে একটি ব্যক্তিগত বাগ বাউন্টি প্রোগ্রামে অ্যাক্সেসও পাওয়া যায়।_
+- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _ফ্যান্টাসি অ্যাডভেঞ্চারের ওপর ভিত্তি করে তৈরি স্মার্ট কন্ট্রাক্ট হ্যাকিং চ্যালেঞ্জ। চ্যালেঞ্জটি সফলভাবে সম্পন্ন করলে একটি প্রাইভেট বাগ বাউন্টি প্রোগ্রামে অ্যাক্সেসও পাওয়া যায়।_
-### স্মার্ট কন্ট্র্যাক্ট সুরক্ষিত করার জন্য সেরা অনুশীলন {#smart-contract-security-best-practices}
+### স্মার্ট কন্ট্রাক্ট সুরক্ষিত করার সেরা অনুশীলন {#smart-contract-security-best-practices}
-- **[ConsenSys: ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা সেরা অনুশীলন](https://consensys.github.io/smart-contract-best-practices/)** - _ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট সুরক্ষিত করার জন্য নির্দেশাবলীর একটি বিস্তৃত তালিকা।_
+- **[ConsenSys: Ethereum Smart Contract Security Best Practices](https://consensys.github.io/smart-contract-best-practices/)** - _ইথিরিয়াম স্মার্ট কন্ট্রাক্টগুলো সুরক্ষিত করার জন্য নির্দেশিকাগুলোর একটি বিস্তৃত তালিকা।_
-- **[Nascent: সিম্পল সিকিউরিটি টুলকিট](https://github.com/nascentxyz/simple-security-toolkit)** - _স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্টের জন্য ব্যবহারিক নিরাপত্তা-কেন্দ্রিক গাইড এবং চেকলিস্টের সংগ্রহ।_
+- **[Nascent: Simple Security Toolkit](https://github.com/nascentxyz/simple-security-toolkit)** - _স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের জন্য ব্যবহারিক সিকিউরিটি-ফোকাসড গাইড এবং চেকলিস্টের সংগ্রহ।_
-- **[Solidity প্যাটার্নস](https://fravoll.github.io/solidity-patterns/)** - _স্মার্ট কন্ট্র্যাক্ট প্রোগ্রামিং ভাষা Solidity-এর জন্য সুরক্ষিত প্যাটার্ন এবং সেরা অনুশীলনের একটি দরকারী সংকলন।_
+- **[Solidity Patterns](https://fravoll.github.io/solidity-patterns/)** - _স্মার্ট কন্ট্রাক্ট প্রোগ্রামিং ভাষা Solidity-এর জন্য সুরক্ষিত প্যাটার্ন এবং সেরা অনুশীলনগুলোর দরকারী সংকলন।_
-- **[Solidity ডক্স: নিরাপত্তা বিবেচনা](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Solidity দিয়ে সুরক্ষিত স্মার্ট কন্ট্র্যাক্ট লেখার জন্য নির্দেশিকা।_
+- **[Solidity Docs: Security Considerations](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Solidity দিয়ে সুরক্ষিত স্মার্ট কন্ট্রাক্ট লেখার নির্দেশিকা।_
-- **[স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা যাচাইকরণ স্ট্যান্ডার্ড](https://github.com/securing/SCSVS)** - _ডেভেলপার, আর্কিটেক্ট, নিরাপত্তা পর্যালোচক এবং বিক্রেতাদের জন্য স্মার্ট কন্ট্র্যাক্টের নিরাপত্তা মানক করার জন্য তৈরি করা চৌদ্দ-অংশের চেকলিস্ট।_
+- **[Smart Contract Security Verification Standard](https://github.com/securing/SCSVS)** - _ডেভেলপার, আর্কিটেক্ট, সিকিউরিটি রিভিউয়ার এবং ভেন্ডরদের জন্য স্মার্ট কন্ট্রাক্টগুলোর নিরাপত্তাকে মানসম্মত করতে তৈরি করা চৌদ্দ-অংশের চেকলিস্ট।_
-- **[স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা এবং অডিটিং শিখুন](https://updraft.cyfrin.io/courses/security)** - _চূড়ান্ত স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা এবং অডিটিং কোর্স, যা স্মার্ট কন্ট্র্যাক্ট ডেভেলপারদের জন্য তৈরি করা হয়েছে যারা তাদের নিরাপত্তা সেরা অনুশীলনগুলো উন্নত করতে এবং নিরাপত্তা গবেষক হতে চান।_
+- **[Learn Smart Contract Security and Auditing](https://updraft.cyfrin.io/courses/security)** - _চূড়ান্ত স্মার্ট কন্ট্রাক্ট সিকিউরিটি এবং অডিটিং কোর্স, যা সেইসব স্মার্ট কন্ট্রাক্ট ডেভেলপারদের জন্য তৈরি করা হয়েছে যারা তাদের সিকিউরিটির সেরা অনুশীলনগুলোকে উন্নত করতে এবং সিকিউরিটি গবেষক হতে চান।_
-### স্মার্ট কন্ট্র্যাক্ট নিরাপত্তার উপর টিউটোরিয়াল {#tutorials-on-smart-contract-security}
+### স্মার্ট কন্ট্রাক্ট সিকিউরিটির ওপর টিউটোরিয়াল {#tutorials-on-smart-contract-security}
-- [কিভাবে সুরক্ষিত স্মার্ট কন্ট্র্যাক্ট লিখবেন](/developers/tutorials/secure-development-workflow/)
+- [কীভাবে সুরক্ষিত স্মার্ট কন্ট্রাক্ট লিখতে হয়](/developers/tutorials/secure-development-workflow/)
-- [স্মার্ট কন্ট্র্যাক্ট বাগ খুঁজে পেতে কিভাবে Slither ব্যবহার করবেন](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+- [স্মার্ট কন্ট্রাক্টের বাগ খুঁজতে কীভাবে Slither ব্যবহার করবেন](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
-- [স্মার্ট কন্ট্র্যাক্ট বাগ খুঁজে পেতে কিভাবে Manticore ব্যবহার করবেন](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
+- [স্মার্ট কন্ট্রাক্টের বাগ খুঁজতে কীভাবে Manticore ব্যবহার করবেন](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
-- [স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা নির্দেশিকা](/developers/tutorials/smart-contract-security-guidelines/)
+- [স্মার্ট কন্ট্রাক্ট সিকিউরিটি নির্দেশিকা](/developers/tutorials/smart-contract-security-guidelines/)
-- [কিভাবে আপনার টোকেন কন্ট্র্যাক্টকে নির্বিচারে টোকেনগুলোর সাথে নিরাপদে একীভূত করবেন](/developers/tutorials/token-integration-checklist/)
+- [কীভাবে আপনার টোকেন কন্ট্রাক্টকে নির্বিচারে টোকেনগুলোর সাথে নিরাপদে ইন্টিগ্রেট করবেন](/developers/tutorials/token-integration-checklist/)
-- [সাইফ্রিন আপড্রাফট - স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা এবং অডিটিং সম্পূর্ণ কোর্স](https://updraft.cyfrin.io/courses/security)
+- [Cyfrin Updraft - স্মার্ট কন্ট্রাক্ট সিকিউরিটি এবং অডিটিং ফুল কোর্স](https://updraft.cyfrin.io/courses/security)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/testing/index.md b/public/content/translations/bn/developers/docs/smart-contracts/testing/index.md
index 137986ef331..ba6c70575fd 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/testing/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/testing/index.md
@@ -1,60 +1,60 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট টেস্টিং"
-description: "ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করার জন্য কৌশল এবং বিবেচ্য বিষয়গুলির একটি সংক্ষিপ্ত বিবরণ।"
+title: স্মার্ট কন্ট্রাক্ট টেস্টিং
+description: ইথিরিয়াম স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের কৌশল এবং বিবেচ্য বিষয়গুলোর একটি ওভারভিউ।
lang: bn
---
-ইথেরিয়াম-এর মতো পাবলিক ব্লকচেইন অপরিবর্তনীয়, যা ডেপ্লয়মেন্টের পরে একটি স্মার্ট কন্ট্র্যাক্ট-এর কোড পরিবর্তন করা কঠিন করে তোলে। "ভার্চুয়াল আপগ্রেড" সম্পাদনের জন্য [কন্ট্র্যাক্ট আপগ্রেড প্যাটার্ন](/developers/docs/smart-contracts/upgrading/) বিদ্যমান, কিন্তু এগুলি বাস্তবায়ন করা কঠিন এবং এর জন্য সামাজিক কনসেন্সাস প্রয়োজন। অধিকন্তু, একটি আপগ্রেড শুধুমাত্র একটি ত্রুটি আবিষ্কৃত হওয়ার _পরেই_ তা ঠিক করতে পারে—যদি একজন আক্রমণকারী প্রথমে দুর্বলতাটি আবিষ্কার করে, তবে আপনার স্মার্ট কন্ট্র্যাক্ট একটি এক্সপ্লয়েটের ঝুঁকিতে থাকবে।
+ইথিরিয়ামের মতো পাবলিক ব্লকচেইনগুলো ইমমিউটেবল, যার ফলে ডিপ্লয়মেন্টের পরে একটি স্মার্ট কন্ট্রাক্ট কোড পরিবর্তন করা কঠিন হয়ে যায়। "ভার্চুয়াল আপগ্রেড" করার জন্য [কন্ট্রাক্ট আপগ্রেড প্যাটার্ন](/developers/docs/smart-contracts/upgrading/) বিদ্যমান, তবে এগুলো প্রয়োগ করা কঠিন এবং এর জন্য সামাজিক কনসেন্সাস প্রয়োজন। তাছাড়া, একটি আপগ্রেড শুধুমাত্র একটি ত্রুটি আবিষ্কার হওয়ার _পরেই_ ঠিক করতে পারে—যদি কোনো আক্রমণকারী প্রথমে দুর্বলতাটি আবিষ্কার করে, তবে আপনার স্মার্ট কন্ট্রাক্ট শোষণের ঝুঁকিতে থাকে।
-এই কারণগুলির জন্য, Mainnet-এ [ডেপ্লয়](/developers/docs/smart-contracts/deploying/) করার আগে স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করা [নিরাপত্তার](/developers/docs/smart-contracts/security/) জন্য একটি ন্যূনতম প্রয়োজনীয়তা। কন্ট্র্যাক্ট পরীক্ষা করা এবং কোডের সঠিকতা মূল্যায়নের জন্য অনেক কৌশল রয়েছে; আপনি কোনটি বেছে নেবেন তা আপনার প্রয়োজনের উপর নির্ভর করে। তা সত্ত্বেও, কন্ট্র্যাক্ট কোডে ছোট এবং বড় উভয় নিরাপত্তা ত্রুটি ধরার জন্য বিভিন্ন টুলস এবং পদ্ধতির সমন্বয়ে তৈরি একটি টেস্ট স্যুট আদর্শ।
+এই কারণগুলোর জন্য, মেইননেট-এ [ডিপ্লয়](/developers/docs/smart-contracts/deploying/) করার আগে স্মার্ট কন্ট্রাক্ট টেস্টিং করা [নিরাপত্তার](/developers/docs/smart-contracts/security/) জন্য একটি ন্যূনতম প্রয়োজনীয়তা। কন্ট্রাক্ট টেস্টিং এবং কোডের সঠিকতা মূল্যায়নের জন্য অনেক কৌশল রয়েছে; আপনি কোনটি বেছে নেবেন তা আপনার প্রয়োজনের উপর নির্ভর করে। তবুও, বিভিন্ন টুল এবং পদ্ধতির সমন্বয়ে তৈরি একটি টেস্ট স্যুট কন্ট্রাক্ট কোডের ছোট এবং বড় উভয় ধরনের নিরাপত্তা ত্রুটি ধরার জন্য আদর্শ।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি ইথেরিয়াম নেটওয়ার্কে ডেপ্লয় করার আগে কীভাবে স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করতে হয় তা ব্যাখ্যা করে। এটি ধরে নেওয়া হয়েছে যে আপনি [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/) সম্পর্কে পরিচিত।
+এই পেজটি ইথিরিয়াম নেটওয়ার্ক-এ ডিপ্লয় করার আগে কীভাবে স্মার্ট কন্ট্রাক্ট টেস্টিং করতে হয় তা ব্যাখ্যা করে। এটি ধরে নেয় যে আপনি [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)-এর সাথে পরিচিত।
-## স্মার্ট কন্ট্র্যাক্ট টেস্টিং কী? {#what-is-smart-contract-testing}
+## স্মার্ট কন্ট্রাক্ট টেস্টিং কী? {#what-is-smart-contract-testing}
-স্মার্ট কন্ট্র্যাক্ট টেস্টিং হল একটি স্মার্ট কন্ট্র্যাক্টের কোড প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা যাচাই করার প্রক্রিয়া। একটি নির্দিষ্ট স্মার্ট কন্ট্র্যাক্ট নির্ভরযোগ্যতা, ব্যবহারযোগ্যতা এবং নিরাপত্তার জন্য প্রয়োজনীয়তা পূরণ করে কিনা তা পরীক্ষা করার জন্য টেস্টিং উপযোগী।
+স্মার্ট কন্ট্রাক্ট টেস্টিং হলো এমন একটি প্রক্রিয়া যার মাধ্যমে যাচাই করা হয় যে একটি স্মার্ট কন্ট্রাক্ট-এর কোড প্রত্যাশা অনুযায়ী কাজ করছে কিনা। একটি নির্দিষ্ট স্মার্ট কন্ট্রাক্ট নির্ভরযোগ্যতা, ব্যবহারযোগ্যতা এবং নিরাপত্তার প্রয়োজনীয়তা পূরণ করে কিনা তা পরীক্ষা করার জন্য টেস্টিং কার্যকর।
-যদিও পদ্ধতিগুলো ভিন্ন হয়, তবে বেশিরভাগ টেস্টিং পদ্ধতির জন্য একটি স্মার্ট কন্ট্র্যাক্টকে ডেটার একটি ছোট নমুনা দিয়ে এক্সিকিউট করতে হয় যা এটি পরিচালনা করবে বলে আশা করা হয়। যদি কন্ট্র্যাক্টটি নমুনা ডেটার জন্য সঠিক ফলাফল দেয়, তবে ধরে নেওয়া হয় যে এটি সঠিকভাবে কাজ করছে। বেশিরভাগ টেস্টিং টুলস একটি কন্ট্র্যাক্টের এক্সিকিউশন প্রত্যাশিত ফলাফলের সাথে মেলে কিনা তা পরীক্ষা করার জন্য [টেস্ট কেস](https://en.m.wikipedia.org/wiki/Test_case) লেখা এবং এক্সিকিউট করার জন্য রিসোর্স সরবরাহ করে।
+যদিও পদ্ধতিগুলো ভিন্ন হতে পারে, বেশিরভাগ টেস্টিং পদ্ধতিতে একটি স্মার্ট কন্ট্রাক্ট-কে এমন কিছু ছোট ডেটা স্যাম্পল দিয়ে এক্সিকিউট করতে হয় যা এটি পরিচালনা করবে বলে আশা করা হয়। যদি কন্ট্রাক্টটি স্যাম্পল ডেটার জন্য সঠিক ফলাফল তৈরি করে, তবে ধরে নেওয়া হয় যে এটি সঠিকভাবে কাজ করছে। বেশিরভাগ টেস্টিং টুল [টেস্ট কেস](https://en.m.wikipedia.org/wiki/Test_case) লেখা এবং এক্সিকিউট করার জন্য রিসোর্স প্রদান করে, যাতে যাচাই করা যায় যে একটি কন্ট্রাক্ট-এর এক্সিকিউশন প্রত্যাশিত ফলাফলের সাথে মেলে কিনা।
-### স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করা কেন গুরুত্বপূর্ণ? {#importance-of-testing-smart-contracts}
+### স্মার্ট কন্ট্রাক্ট টেস্টিং করা কেন গুরুত্বপূর্ণ? {#importance-of-testing-smart-contracts}
-যেহেতু স্মার্ট কন্ট্র্যাক্ট প্রায়ই উচ্চ-মূল্যের আর্থিক সম্পদ পরিচালনা করে, তাই ছোটখাটো প্রোগ্রামিং ত্রুটি [ব্যবহারকারীদের জন্য বিশাল ক্ষতির](https://rekt.news/leaderboard/) কারণ হতে পারে এবং প্রায়শই হয়। তবে, কঠোর টেস্টিং একটি স্মার্ট কন্ট্র্যাক্টের কোডে থাকা ত্রুটি এবং সমস্যাগুলি আগে থেকে আবিষ্কার করতে এবং Mainnet-এ চালু করার আগে সেগুলি ঠিক করতে আপনাকে সাহায্য করতে পারে।
+যেহেতু স্মার্ট কন্ট্রাক্টগুলো প্রায়শই উচ্চ-মূল্যের আর্থিক সম্পদ পরিচালনা করে, তাই ছোটখাটো প্রোগ্রামিং ত্রুটিগুলো ব্যবহারকারীদের জন্য [বিপুল ক্ষতির](https://rekt.news/leaderboard/) কারণ হতে পারে এবং প্রায়শই হয়ে থাকে। তবে কঠোর টেস্টিং আপনাকে একটি স্মার্ট কন্ট্রাক্ট-এর কোডের ত্রুটি এবং সমস্যাগুলো প্রাথমিকভাবে আবিষ্কার করতে এবং মেইননেট-এ লঞ্চ করার আগে সেগুলো ঠিক করতে সাহায্য করতে পারে।
-যদিও একটি বাগ আবিষ্কৃত হলে কন্ট্র্যাক্ট আপগ্রেড করা সম্ভব, তবে আপগ্রেডগুলি জটিল এবং ভুলভাবে পরিচালনা করা হলে [ত্রুটির কারণ হতে পারে](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/)। একটি কন্ট্র্যাক্ট আপগ্রেড করা অপরিবর্তনীয়তার নীতিকে আরও অস্বীকার করে এবং ব্যবহারকারীদের উপর অতিরিক্ত বিশ্বাসের অনুমানের বোঝা চাপায়। বিপরীতভাবে, আপনার কন্ট্র্যাক্ট পরীক্ষা করার জন্য একটি ব্যাপক পরিকল্পনা স্মার্ট কন্ট্র্যাক্টের নিরাপত্তা ঝুঁকি কমায় এবং ডেপ্লয় করার পরে জটিল লজিক আপগ্রেড করার প্রয়োজন কমিয়ে দেয়।
+যদিও কোনো বাগ আবিষ্কৃত হলে একটি কন্ট্রাক্ট আপগ্রেড করা সম্ভব, তবে আপগ্রেডগুলো জটিল এবং সঠিকভাবে পরিচালনা না করা হলে [ত্রুটি দেখা দিতে পারে](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/)। একটি কন্ট্রাক্ট আপগ্রেড করা ইমমিউটেবল নীতির পরিপন্থী এবং ব্যবহারকারীদের উপর অতিরিক্ত বিশ্বাসের অনুমান চাপিয়ে দেয়। বিপরীতে, আপনার কন্ট্রাক্ট টেস্টিং করার জন্য একটি বিস্তৃত পরিকল্পনা স্মার্ট কন্ট্রাক্ট-এর নিরাপত্তা ঝুঁকি কমায় এবং ডিপ্লয় করার পরে জটিল লজিক আপগ্রেড করার প্রয়োজনীয়তা হ্রাস করে।
-## স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করার পদ্ধতি {#methods-for-testing-smart-contracts}
+## স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের পদ্ধতিগুলো {#methods-for-testing-smart-contracts}
-ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করার পদ্ধতি দুটি প্রধান বিভাগে পড়ে: **স্বয়ংক্রিয় টেস্টিং** এবং **ম্যানুয়াল টেস্টিং**। স্বয়ংক্রিয় টেস্টিং এবং ম্যানুয়াল টেস্টিং অনন্য সুবিধা এবং ট্রেডঅফ অফার করে, কিন্তু আপনি আপনার কন্ট্র্যাক্ট বিশ্লেষণ করার জন্য একটি শক্তিশালী পরিকল্পনা তৈরি করতে উভয়কে একত্রিত করতে পারেন।
+ইথিরিয়াম স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের পদ্ধতিগুলো দুটি বিস্তৃত বিভাগে পড়ে: **অটোমেটেড টেস্টিং** এবং **ম্যানুয়াল টেস্টিং**। অটোমেটেড টেস্টিং এবং ম্যানুয়াল টেস্টিং অনন্য সুবিধা এবং ট্রেডঅফ অফার করে, তবে আপনি আপনার কন্ট্রাক্টগুলো বিশ্লেষণ করার জন্য একটি শক্তিশালী পরিকল্পনা তৈরি করতে উভয়কে একত্রিত করতে পারেন।
-### স্বয়ংক্রিয় টেস্টিং {#automated-testing}
+### অটোমেটেড টেস্টিং {#automated-testing}
-স্বয়ংক্রিয় টেস্টিং এমন টুলস ব্যবহার করে যা এক্সিকিউশনের ত্রুটির জন্য একটি স্মার্ট কন্ট্র্যাক্টের কোড স্বয়ংক্রিয়ভাবে পরীক্ষা করে। স্বয়ংক্রিয় টেস্টিংয়ের সুবিধাটি কন্ট্র্যাক্টের কার্যকারিতার মূল্যায়নকে গাইড করার জন্য [স্ক্রিপ্ট](https://www.techtarget.com/whatis/definition/script?amp=1) ব্যবহার করা থেকে আসে। স্ক্রিপ্টেড টেস্টগুলি ন্যূনতম মানুষের হস্তক্ষেপের সাথে বারবার চালানোর জন্য সময়সূচী করা যেতে পারে, যা স্বয়ংক্রিয় টেস্টিংকে টেস্টিংয়ের ম্যানুয়াল পদ্ধতির চেয়ে আরও দক্ষ করে তোলে।
+অটোমেটেড টেস্টিং এমন টুল ব্যবহার করে যা স্বয়ংক্রিয়ভাবে একটি স্মার্ট কন্ট্রাক্ট-এর কোডে এক্সিকিউশনের ত্রুটিগুলো পরীক্ষা করে। অটোমেটেড টেস্টিংয়ের সুবিধা আসে কন্ট্রাক্ট কার্যকারিতা মূল্যায়নের জন্য [স্ক্রিপ্ট](https://www.techtarget.com/whatis/definition/script?amp=1) ব্যবহার করার মাধ্যমে। স্ক্রিপ্ট করা টেস্টগুলো ন্যূনতম মানুষের হস্তক্ষেপের সাথে বারবার চালানোর জন্য শিডিউল করা যেতে পারে, যা অটোমেটেড টেস্টিং-কে ম্যানুয়াল টেস্টিং পদ্ধতির চেয়ে বেশি দক্ষ করে তোলে।
-স্বয়ংক্রিয় টেস্টিং বিশেষভাবে উপযোগী যখন টেস্টগুলি পুনরাবৃত্তিমূলক এবং সময়সাপেক্ষ হয়; ম্যানুয়ালি সম্পাদন করা কঠিন; মানুষের ভুলের প্রবণ; অথবা জটিল কন্ট্র্যাক্ট ফাংশন মূল্যায়ন জড়িত থাকে। কিন্তু স্বয়ংক্রিয় টেস্টিং টুলসের কিছু অসুবিধা থাকতে পারে—এগুলো কিছু বাগ মিস করতে পারে এবং অনেক [ফলস পজিটিভ](https://www.contrastsecurity.com/glossary/false-positive) তৈরি করতে পারে। তাই, স্মার্ট কন্ট্র্যাক্টের জন্য স্বয়ংক্রিয় টেস্টিংয়ের সাথে ম্যানুয়াল টেস্টিং যুক্ত করা আদর্শ।
+অটোমেটেড টেস্টিং বিশেষত তখন কার্যকর যখন টেস্টগুলো পুনরাবৃত্তিমূলক এবং সময়সাপেক্ষ হয়; ম্যানুয়ালি করা কঠিন হয়; মানুষের ভুলের প্রবণতা থাকে; অথবা গুরুত্বপূর্ণ কন্ট্রাক্ট ফাংশন মূল্যায়নের সাথে জড়িত থাকে। তবে অটোমেটেড টেস্টিং টুলগুলোর কিছু অসুবিধাও থাকতে পারে—এগুলো নির্দিষ্ট কিছু বাগ মিস করতে পারে এবং অনেক [ফলস পজিটিভ](https://www.contrastsecurity.com/glossary/false-positive) তৈরি করতে পারে। তাই, স্মার্ট কন্ট্রাক্ট-এর জন্য ম্যানুয়াল টেস্টিংয়ের সাথে অটোমেটেড টেস্টিং যুক্ত করা আদর্শ।
### ম্যানুয়াল টেস্টিং {#manual-testing}
-ম্যানুয়াল টেস্টিং মানুষ-সহায়তায় করা হয় এবং এতে একটি স্মার্ট কন্ট্র্যাক্টের সঠিকতা বিশ্লেষণ করার সময় আপনার টেস্ট স্যুটের প্রতিটি টেস্ট কেস একের পর এক এক্সিকিউট করা জড়িত থাকে। এটি স্বয়ংক্রিয় টেস্টিংয়ের মতো নয়, যেখানে আপনি একই সাথে একটি কন্ট্র্যাক্টে একাধিক বিচ্ছিন্ন টেস্ট চালাতে পারেন এবং সমস্ত ব্যর্থ এবং পাস করা টেস্ট দেখানো একটি রিপোর্ট পেতে পারেন।
+ম্যানুয়াল টেস্টিং মানুষের সাহায্যে করা হয় এবং একটি স্মার্ট কন্ট্রাক্ট-এর সঠিকতা বিশ্লেষণ করার সময় আপনার টেস্ট স্যুটের প্রতিটি টেস্ট কেস একের পর এক এক্সিকিউট করার সাথে জড়িত। এটি অটোমেটেড টেস্টিংয়ের মতো নয় যেখানে আপনি একই সাথে একটি কন্ট্রাক্ট-এ একাধিক বিচ্ছিন্ন টেস্ট চালাতে পারেন এবং সমস্ত ব্যর্থ এবং পাস করা টেস্টগুলো দেখানো একটি রিপোর্ট পেতে পারেন।
-ম্যানুয়াল টেস্টিং একজন একক ব্যক্তি দ্বারা একটি লিখিত টেস্ট প্ল্যান অনুসরণ করে করা যেতে পারে যা বিভিন্ন টেস্ট সিনারিও কভার করে। ম্যানুয়াল টেস্টিংয়ের অংশ হিসাবে আপনি একাধিক ব্যক্তি বা গোষ্ঠীকে একটি নির্দিষ্ট সময়ের জন্য একটি স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করাতেও পারেন। টেস্টাররা কন্ট্র্যাক্টের প্রকৃত আচরণকে প্রত্যাশিত আচরণের সাথে তুলনা করবে এবং যেকোনো পার্থক্যকে একটি বাগ হিসেবে ফ্ল্যাগ করবে।
+ম্যানুয়াল টেস্টিং একজন ব্যক্তি দ্বারা একটি লিখিত টেস্ট প্ল্যান অনুসরণ করে করা যেতে পারে যা বিভিন্ন টেস্ট পরিস্থিতি কভার করে। ম্যানুয়াল টেস্টিংয়ের অংশ হিসেবে আপনি একাধিক ব্যক্তি বা গ্রুপকে একটি নির্দিষ্ট সময়ের মধ্যে একটি স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করাতেও পারেন। টেস্টাররা প্রত্যাশিত আচরণের বিপরীতে কন্ট্রাক্ট-এর প্রকৃত আচরণের তুলনা করবে এবং যেকোনো পার্থক্যকে বাগ হিসেবে চিহ্নিত করবে।
-কার্যকর ম্যানুয়াল টেস্টিংয়ের জন্য যথেষ্ট রিসোর্স (দক্ষতা, সময়, অর্থ এবং প্রচেষ্টা) প্রয়োজন, এবং টেস্ট এক্সিকিউট করার সময় মানুষের ভুলের কারণে কিছু ত্রুটি মিস করা সম্ভব। কিন্তু ম্যানুয়াল টেস্টিং উপকারীও হতে পারে—উদাহরণস্বরূপ, একজন মানুষ টেস্টার (যেমন, একজন অডিটর) এমন এজ কেস শনাক্ত করতে অন্তর্দৃষ্টি ব্যবহার করতে পারে যা একটি স্বয়ংক্রিয় টেস্টিং টুল মিস করবে।
+কার্যকর ম্যানুয়াল টেস্টিংয়ের জন্য উল্লেখযোগ্য রিসোর্স (দক্ষতা, সময়, অর্থ এবং প্রচেষ্টা) প্রয়োজন, এবং মানুষের ভুলের কারণে টেস্ট এক্সিকিউট করার সময় নির্দিষ্ট কিছু ত্রুটি মিস করা সম্ভব। তবে ম্যানুয়াল টেস্টিং উপকারীও হতে পারে—উদাহরণস্বরূপ, একজন মানব টেস্টার (যেমন, একজন অডিটর) এমন এজ কেসগুলো সনাক্ত করতে তার অন্তর্দৃষ্টি ব্যবহার করতে পারে যা একটি অটোমেটেড টেস্টিং টুল মিস করতে পারে।
-## স্মার্ট কন্ট্র্যাক্টের জন্য স্বয়ংক্রিয় টেস্টিং {#automated-testing-for-smart-contracts}
+## স্মার্ট কন্ট্রাক্ট-এর জন্য অটোমেটেড টেস্টিং {#automated-testing-for-smart-contracts}
### ইউনিট টেস্টিং {#unit-testing-for-smart-contracts}
-ইউনিট টেস্টিং কন্ট্র্যাক্ট ফাংশনগুলিকে আলাদাভাবে মূল্যায়ন করে এবং প্রতিটি কম্পোনেন্ট সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করে। ভালো ইউনিট টেস্ট সহজ, দ্রুত চালানোর মতো হওয়া উচিত এবং টেস্ট ব্যর্থ হলে কী ভুল হয়েছে তার একটি স্পষ্ট ধারণা প্রদান করা উচিত।
+ইউনিট টেস্টিং কন্ট্রাক্ট ফাংশনগুলোকে আলাদাভাবে মূল্যায়ন করে এবং প্রতিটি উপাদান সঠিকভাবে কাজ করে কিনা তা পরীক্ষা করে। ভালো ইউনিট টেস্টগুলো সহজ, দ্রুত চালানোর মতো হওয়া উচিত এবং টেস্ট ব্যর্থ হলে কী ভুল হয়েছে তার একটি পরিষ্কার ধারণা প্রদান করা উচিত।
-ফাংশনগুলি প্রত্যাশিত মান ফেরত দেয় কিনা এবং ফাংশন এক্সিকিউশনের পরে কন্ট্র্যাক্ট সংগ্রহস্থল সঠিকভাবে আপডেট হয় কিনা তা পরীক্ষা করার জন্য ইউনিট টেস্ট উপযোগী। অধিকন্তু, একটি কন্ট্র্যাক্টের কোডবেসে পরিবর্তন আনার পর ইউনিট টেস্ট চালালে এটি নিশ্চিত করা যায় যে নতুন লজিক যোগ করার ফলে কোনো ত্রুটি তৈরি হচ্ছে না। কার্যকরী ইউনিট টেস্ট চালানোর জন্য নিচে কিছু নির্দেশিকা দেওয়া হল:
+ইউনিট টেস্টগুলো ফাংশনগুলো প্রত্যাশিত মান প্রদান করে কিনা এবং ফাংশন এক্সিকিউশনের পরে কন্ট্রাক্ট স্টোরেজ সঠিকভাবে আপডেট হয় কিনা তা পরীক্ষা করার জন্য কার্যকর। তাছাড়া, একটি কন্ট্রাক্ট-এর কোডবেসে পরিবর্তন করার পরে ইউনিট টেস্ট চালানো নিশ্চিত করে যে নতুন লজিক যোগ করার ফলে কোনো ত্রুটি দেখা দেয়নি। কার্যকর ইউনিট টেস্ট চালানোর জন্য নিচে কিছু নির্দেশিকা দেওয়া হলো:
-#### স্মার্ট কন্ট্র্যাক্টের ইউনিট টেস্টিংয়ের জন্য নির্দেশিকা {#unit-testing-guidelines}
+#### স্মার্ট কন্ট্রাক্ট ইউনিট টেস্টিংয়ের জন্য নির্দেশিকা {#unit-testing-guidelines}
-##### ১. আপনার কন্ট্র্যাক্টের ব্যবসায়িক যুক্তি এবং কর্মপ্রবাহ বুঝুন
+##### ১. আপনার কন্ট্রাক্ট-এর বিজনেস লজিক এবং ওয়ার্কফ্লো বুঝুন
-ইউনিট টেস্ট লেখার আগে, একটি স্মার্ট কন্ট্র্যাক্ট কী কী কার্যকারিতা অফার করে এবং ব্যবহারকারীরা কীভাবে সেই ফাংশনগুলি অ্যাক্সেস এবং ব্যবহার করবে তা জানা সাহায্য করে। এটি বিশেষত [হ্যাপি পাথ টেস্ট](https://en.m.wikipedia.org/wiki/Happy_path) চালানোর জন্য উপযোগী যা নির্ধারণ করে যে একটি কন্ট্র্যাক্টের ফাংশনগুলি বৈধ ব্যবহারকারী ইনপুটের জন্য সঠিক আউটপুট ফেরত দেয় কিনা। আমরা [একটি নিলাম কন্ট্র্যাক্ট](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction)-এর এই (সংক্ষিপ্ত) উদাহরণ ব্যবহার করে এই ধারণাটি ব্যাখ্যা করব।
+ইউনিট টেস্ট লেখার আগে, একটি স্মার্ট কন্ট্রাক্ট কী কী কার্যকারিতা অফার করে এবং ব্যবহারকারীরা কীভাবে সেই ফাংশনগুলো অ্যাক্সেস এবং ব্যবহার করবে তা জানা সহায়ক। এটি বিশেষত [হ্যাপি পাথ টেস্ট](https://en.m.wikipedia.org/wiki/Happy_path) চালানোর জন্য কার্যকর যা নির্ধারণ করে যে একটি কন্ট্রাক্ট-এর ফাংশনগুলো বৈধ ব্যবহারকারীর ইনপুটগুলোর জন্য সঠিক আউটপুট প্রদান করে কিনা। আমরা [একটি নিলাম কন্ট্রাক্ট](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction)-এর এই (সংক্ষিপ্ত) উদাহরণটি ব্যবহার করে এই ধারণাটি ব্যাখ্যা করব
```solidity
constructor(
@@ -108,203 +108,209 @@ function auctionEnd() external {
}
```
-এটি একটি সাধারণ নিলাম কন্ট্র্যাক্ট যা বিডিং সময়কালে বিড গ্রহণ করার জন্য ডিজাইন করা হয়েছে। যদি `highestBid` বৃদ্ধি পায়, তাহলে পূর্ববর্তী সর্বোচ্চ দরদাতা তার টাকা ফেরত পায়; বিডিং সময়কাল শেষ হয়ে গেলে, `beneficiary` তার টাকা পেতে কন্ট্র্যাক্টটি কল করে।
+এটি একটি সাধারণ নিলাম কন্ট্রাক্ট যা বিডিং পিরিয়ডের সময় বিড গ্রহণ করার জন্য ডিজাইন করা হয়েছে। যদি `highestBid` বৃদ্ধি পায়, তবে পূর্ববর্তী সর্বোচ্চ দরদাতা তাদের অর্থ ফেরত পায়; বিডিং পিরিয়ড শেষ হয়ে গেলে, `beneficiary` তাদের অর্থ পাওয়ার জন্য কন্ট্রাক্ট-কে কল করে।
-এই ধরনের একটি কন্ট্র্যাক্টের জন্য ইউনিট টেস্টগুলি বিভিন্ন ফাংশন কভার করবে যা একজন ব্যবহারকারী কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করার সময় কল করতে পারে। একটি উদাহরণ হতে পারে একটি ইউনিট টেস্ট যা পরীক্ষা করে যে একজন ব্যবহারকারী নিলাম চলাকালীন বিড করতে পারে কিনা (অর্থাৎ, `bid()`-এ কল সফল হয়) অথবা একটি যা পরীক্ষা করে যে একজন ব্যবহারকারী বর্তমান `highestBid`-এর চেয়ে বেশি বিড করতে পারে কিনা।
+এই ধরনের একটি কন্ট্রাক্ট-এর জন্য ইউনিট টেস্টগুলো বিভিন্ন ফাংশন কভার করবে যা একজন ব্যবহারকারী কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করার সময় কল করতে পারে। একটি উদাহরণ হতে পারে এমন একটি ইউনিট টেস্ট যা পরীক্ষা করে যে নিলাম চলাকালীন কোনো ব্যবহারকারী বিড করতে পারে কিনা (অর্থাৎ, `bid()` কল সফল হয়) অথবা এমন একটি টেস্ট যা পরীক্ষা করে যে কোনো ব্যবহারকারী বর্তমান `highestBid`-এর চেয়ে বেশি বিড করতে পারে কিনা।
-একটি কন্ট্র্যাক্টের অপারেশনাল কর্মপ্রবাহ বোঝা ইউনিট টেস্ট লিখতে সাহায্য করে যা এক্সিকিউশন প্রয়োজনীয়তা পূরণ করে কিনা তা পরীক্ষা করে। উদাহরণস্বরূপ, নিলাম কন্ট্র্যাক্টটি নির্দিষ্ট করে যে নিলাম শেষ হয়ে গেলে ব্যবহারকারীরা বিড করতে পারবে না (অর্থাৎ, যখন `auctionEndTime`, `block.timestamp`-এর থেকে কম হয়)। সুতরাং, একজন ডেভেলপার একটি ইউনিট টেস্ট চালাতে পারেন যা পরীক্ষা করে যে নিলাম শেষ হয়ে গেলে `bid()` ফাংশনে কল সফল হয় না ব্যর্থ হয় (অর্থাৎ, যখন `auctionEndTime` > `block.timestamp`)।
+একটি কন্ট্রাক্ট-এর অপারেশনাল ওয়ার্কফ্লো বোঝা ইউনিট টেস্ট লিখতেও সাহায্য করে যা পরীক্ষা করে যে এক্সিকিউশন প্রয়োজনীয়তা পূরণ করে কিনা। উদাহরণস্বরূপ, নিলাম কন্ট্রাক্টটি নির্দিষ্ট করে যে নিলাম শেষ হয়ে গেলে ব্যবহারকারীরা বিড করতে পারবে না (অর্থাৎ, যখন `auctionEndTime`, `block.timestamp`-এর চেয়ে কম হয়)। সুতরাং, একজন ডেভেলপার এমন একটি ইউনিট টেস্ট চালাতে পারে যা পরীক্ষা করে যে নিলাম শেষ হয়ে গেলে `bid()` ফাংশনে কল সফল হয় নাকি ব্যর্থ হয় (অর্থাৎ, যখন `auctionEndTime` > `block.timestamp`)।
-##### 2. কন্ট্র্যাক্ট এক্সিকিউশন সম্পর্কিত সমস্ত অনুমান মূল্যায়ন করুন
+##### ২. কন্ট্রাক্ট এক্সিকিউশন সম্পর্কিত সমস্ত অনুমান মূল্যায়ন করুন
-একটি কন্ট্র্যাক্টের এক্সিকিউশন সম্পর্কে যেকোনো অনুমান নথিভুক্ত করা এবং সেই অনুমানগুলির বৈধতা যাচাই করার জন্য ইউনিট টেস্ট লেখা গুরুত্বপূর্ণ। অপ্রত্যাশিত এক্সিকিউশনের বিরুদ্ধে সুরক্ষা অফার করার পাশাপাশি, টেস্টিং অ্যাসারশন আপনাকে এমন অপারেশন সম্পর্কে ভাবতে বাধ্য করে যা একটি স্মার্ট কন্ট্র্যাক্টের নিরাপত্তা মডেলকে ভেঙে দিতে পারে। একটি দরকারী টিপ হল "হ্যাপি ইউজার টেস্ট" এর বাইরে গিয়ে নেগেটিভ টেস্ট লেখা যা পরীক্ষা করে যে একটি ফাংশন ভুল ইনপুটের জন্য ব্যর্থ হয় কিনা।
+একটি কন্ট্রাক্ট-এর এক্সিকিউশন সম্পর্কে যেকোনো অনুমান ডকুমেন্ট করা এবং সেই অনুমানগুলোর বৈধতা যাচাই করার জন্য ইউনিট টেস্ট লেখা গুরুত্বপূর্ণ। অপ্রত্যাশিত এক্সিকিউশনের বিরুদ্ধে সুরক্ষা প্রদান করার পাশাপাশি, টেস্টিং অ্যাসারশনগুলো আপনাকে এমন অপারেশনগুলো সম্পর্কে ভাবতে বাধ্য করে যা একটি স্মার্ট কন্ট্রাক্ট-এর নিরাপত্তা মডেল ভেঙে দিতে পারে। একটি দরকারী টিপ হলো "হ্যাপি ইউজার টেস্ট"-এর বাইরে গিয়ে নেতিবাচক টেস্ট লেখা যা পরীক্ষা করে যে ভুল ইনপুটগুলোর জন্য কোনো ফাংশন ব্যর্থ হয় কিনা।
-অনেক ইউনিট টেস্টিং ফ্রেমওয়ার্ক আপনাকে অ্যাসারশন তৈরি করতে দেয়—সাধারণ বিবৃতি যা বলে একটি কন্ট্র্যাক্ট কী করতে পারে এবং কী করতে পারে না—এবং সেই অ্যাসারশনগুলি এক্সিকিউশনের অধীনে টিকে থাকে কিনা তা দেখার জন্য টেস্ট চালাতে দেয়। পূর্বে বর্ণিত নিলাম কন্ট্র্যাক্টে কাজ করা একজন ডেভেলপার নেগেটিভ টেস্ট চালানোর আগে এর আচরণ সম্পর্কে নিম্নলিখিত অ্যাসারশনগুলি করতে পারেন:
+অনেক ইউনিট টেস্টিং ফ্রেমওয়ার্ক আপনাকে অ্যাসারশন তৈরি করতে দেয়—সহজ স্টেটমেন্ট যা বলে যে একটি কন্ট্রাক্ট কী করতে পারে এবং কী করতে পারে না—এবং এক্সিকিউশনের অধীনে সেই অ্যাসারশনগুলো টিকে থাকে কিনা তা দেখার জন্য টেস্ট চালাতে দেয়। পূর্বে বর্ণিত নিলাম কন্ট্রাক্ট-এ কাজ করা একজন ডেভেলপার নেতিবাচক টেস্ট চালানোর আগে এর আচরণ সম্পর্কে নিম্নলিখিত অ্যাসারশনগুলো তৈরি করতে পারে:
- নিলাম শেষ হয়ে গেলে বা শুরু না হলে ব্যবহারকারীরা বিড করতে পারবে না।
-- গ্রহণযোগ্য থ্রেশহোল্ডের নিচে বিড হলে নিলাম কন্ট্র্যাক্টটি রিভার্ট হয়ে যায়।
+- যদি কোনো বিড গ্রহণযোগ্য থ্রেশহোল্ডের নিচে হয় তবে নিলাম কন্ট্রাক্টটি রিভার্ট করে।
-- যে ব্যবহারকারীরা বিড জিততে ব্যর্থ হয় তাদের ফান্ড তাদের অ্যাকাউন্টে জমা করে দেওয়া হয়।
+- যে ব্যবহারকারীরা বিড জিততে ব্যর্থ হয় তাদের ফান্ড ক্রেডিট করা হয়
-**দ্রষ্টব্য**: অনুমান পরীক্ষা করার আরেকটি উপায় হল এমন টেস্ট লেখা যা একটি কন্ট্র্যাক্টে [ফাংশন মডিফায়ার](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) ট্রিগার করে, বিশেষ করে `require`, `assert`, এবং `if…else` স্টেটমেন্ট।
+**নোট**: অনুমানগুলো পরীক্ষা করার আরেকটি উপায় হলো এমন টেস্ট লেখা যা একটি কন্ট্রাক্ট-এ [ফাংশন মডিফায়ার](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) ট্রিগার করে, বিশেষ করে `require`, `assert`, এবং `if…else` স্টেটমেন্টগুলো।
-##### 3. কোড কভারেজ পরিমাপ করুন
+##### ৩. কোড কভারেজ পরিমাপ করুন
-[কোড কভারেজ](https://en.m.wikipedia.org/wiki/Code_coverage) একটি টেস্টিং মেট্রিক যা টেস্ট চলাকালীন আপনার কোডে এক্সিকিউট করা ব্রাঞ্চ, লাইন এবং স্টেটমেন্টের সংখ্যা ট্র্যাক করে। পরীক্ষা না করা দুর্বলতার ঝুঁকি কমাতে টেস্টগুলির ভালো কোড কভারেজ থাকা উচিত। পর্যাপ্ত কভারেজ ছাড়া, আপনি ভুলভাবে ধরে নিতে পারেন যে আপনার কন্ট্র্যাক্টটি সুরক্ষিত কারণ সমস্ত টেস্ট পাস হয়েছে, যদিও পরীক্ষা না করা কোড পাথে দুর্বলতা এখনও বিদ্যমান থাকতে পারে। তবে, উচ্চ কোড কভারেজ রেকর্ড করা এই নিশ্চয়তা দেয় যে একটি স্মার্ট কন্ট্র্যাক্টের সমস্ত স্টেটমেন্ট/ফাংশন সঠিকতার জন্য পর্যাপ্তভাবে পরীক্ষা করা হয়েছে।
+[কোড কভারেজ](https://en.m.wikipedia.org/wiki/Code_coverage) হলো একটি টেস্টিং মেট্রিক যা টেস্ট চলাকালীন এক্সিকিউট হওয়া আপনার কোডের ব্রাঞ্চ, লাইন এবং স্টেটমেন্টের সংখ্যা ট্র্যাক করে। টেস্ট না করা দুর্বলতার ঝুঁকি কমানোর জন্য টেস্টগুলোর ভালো কোড কভারেজ থাকা উচিত। পর্যাপ্ত কভারেজ ছাড়া, আপনি ভুলভাবে ধরে নিতে পারেন যে আপনার কন্ট্রাক্টটি সুরক্ষিত কারণ সমস্ত টেস্ট পাস করেছে, অথচ টেস্ট না করা কোড পাথগুলোতে এখনও দুর্বলতা থাকতে পারে। তবে উচ্চ কোড কভারেজ রেকর্ড করা এই নিশ্চয়তা দেয় যে একটি স্মার্ট কন্ট্রাক্ট-এর সমস্ত স্টেটমেন্ট/ফাংশন সঠিকতার জন্য পর্যাপ্তভাবে পরীক্ষা করা হয়েছে।
-##### ৪. সু-বিকশিত টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করুন
+##### ৪. সুগঠিত টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করুন
-আপনার স্মার্ট কন্ট্র্যাক্টের জন্য ইউনিট টেস্ট চালানোর জন্য ব্যবহৃত টুলগুলির গুণমান অত্যন্ত গুরুত্বপূর্ণ। একটি আদর্শ টেস্টিং ফ্রেমওয়ার্ক হল এমন একটি যা নিয়মিত রক্ষণাবেক্ষণ করা হয়; দরকারী বৈশিষ্ট্য (যেমন, লগিং এবং রিপোর্টিং ক্ষমতা) প্রদান করে; এবং অবশ্যই অন্য ডেভেলপারদের দ্বারা ব্যাপকভাবে ব্যবহৃত এবং পরীক্ষিত হতে হবে।
+আপনার স্মার্ট কন্ট্রাক্টগুলোর জন্য ইউনিট টেস্ট চালানোর ক্ষেত্রে ব্যবহৃত টুলগুলোর গুণমান অত্যন্ত গুরুত্বপূর্ণ। একটি আদর্শ টেস্টিং ফ্রেমওয়ার্ক হলো সেটি যা নিয়মিত রক্ষণাবেক্ষণ করা হয়; দরকারী বৈশিষ্ট্য প্রদান করে (যেমন, লগিং এবং রিপোর্টিং ক্ষমতা); এবং অবশ্যই অন্যান্য ডেভেলপারদের দ্বারা ব্যাপকভাবে ব্যবহৃত এবং পরীক্ষিত হতে হবে।
-Solidity স্মার্ট কন্ট্র্যাক্টের জন্য ইউনিট টেস্টিং ফ্রেমওয়ার্ক বিভিন্ন ভাষায় (বেশিরভাগ JavaScript, Python, এবং Rust) আসে। বিভিন্ন টেস্টিং ফ্রেমওয়ার্কের সাথে ইউনিট টেস্ট চালানো শুরু করার তথ্যের জন্য নীচের কিছু গাইড দেখুন:
+Solidity স্মার্ট কন্ট্রাক্টগুলোর জন্য ইউনিট টেস্টিং ফ্রেমওয়ার্কগুলো বিভিন্ন ভাষায় আসে (বেশিরভাগই JavaScript, Python, এবং Rust)। বিভিন্ন টেস্টিং ফ্রেমওয়ার্কের সাথে কীভাবে ইউনিট টেস্ট চালানো শুরু করবেন সে সম্পর্কে তথ্যের জন্য নিচের কিছু গাইড দেখুন:
-- **[Brownie দিয়ে ইউনিট টেস্ট চালানো](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)**
-- **[Foundry দিয়ে ইউনিট টেস্ট চালানো](https://book.getfoundry.sh/forge/writing-tests)**
-- **[Waffle দিয়ে ইউনিট টেস্ট চালানো](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)**
-- **[Remix দিয়ে ইউনিট টেস্ট চালানো](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)**
-- **[Ape দিয়ে ইউনিট টেস্ট চালানো](https://docs.apeworx.io/ape/stable/userguides/testing.html)**
-- **[Hardhat দিয়ে ইউনিট টেস্ট চালানো](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)**
-- **[Wake দিয়ে ইউনিট টেস্ট চালানো](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)**
+- **[Brownie-এর সাথে ইউনিট টেস্ট চালানো](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)**
+- **[Foundry-এর সাথে ইউনিট টেস্ট চালানো](https://book.getfoundry.sh/forge/writing-tests)**
+- **[Waffle-এর সাথে ইউনিট টেস্ট চালানো](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)**
+- **[Remix-এর সাথে ইউনিট টেস্ট চালানো](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)**
+- **[Ape-এর সাথে ইউনিট টেস্ট চালানো](https://docs.apeworx.io/ape/stable/userguides/testing.html)**
+- **[Hardhat-এর সাথে ইউনিট টেস্ট চালানো](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)**
+- **[Wake-এর সাথে ইউনিট টেস্ট চালানো](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)**
### ইন্টিগ্রেশন টেস্টিং {#integration-testing-for-smart-contracts}
-যেখানে ইউনিট টেস্টিং বিচ্ছিন্নভাবে কন্ট্র্যাক্ট ফাংশন ডিবাগ করে, সেখানে ইন্টিগ্রেশন টেস্টগুলি একটি স্মার্ট কন্ট্র্যাক্টের উপাদানগুলিকে সামগ্রিকভাবে মূল্যায়ন করে। ইন্টিগ্রেশন টেস্টিং ক্রস-কন্ট্র্যাক্ট কল বা একই স্মার্ট কন্ট্র্যাক্টে বিভিন্ন ফাংশনের মধ্যে মিথস্ক্রিয়া থেকে উদ্ভূত সমস্যাগুলি সনাক্ত করতে পারে। উদাহরণস্বরূপ, ইন্টিগ্রেশন টেস্ট [ইনহেরিটেন্স](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) এবং ডিপেন্ডেন্সি ইনজেকশনের মতো জিনিসগুলি সঠিকভাবে কাজ করে কিনা তা পরীক্ষা করতে সাহায্য করতে পারে।
+যেখানে ইউনিট টেস্টিং কন্ট্রাক্ট ফাংশনগুলোকে আলাদাভাবে ডিবাগ করে, সেখানে ইন্টিগ্রেশন টেস্টগুলো একটি স্মার্ট কন্ট্রাক্ট-এর উপাদানগুলোকে সামগ্রিকভাবে মূল্যায়ন করে। ইন্টিগ্রেশন টেস্টিং ক্রস-কন্ট্রাক্ট কল বা একই স্মার্ট কন্ট্রাক্ট-এর বিভিন্ন ফাংশনের মধ্যে ইন্টারঅ্যাকশন থেকে উদ্ভূত সমস্যাগুলো সনাক্ত করতে পারে। উদাহরণস্বরূপ, ইন্টিগ্রেশন টেস্টগুলো [ইনহেরিটেন্স](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) এবং ডিপেন্ডেন্সি ইনজেকশনের মতো বিষয়গুলো সঠিকভাবে কাজ করে কিনা তা পরীক্ষা করতে সাহায্য করতে পারে।
-আপনার কন্ট্র্যাক্টটি যদি একটি মডুলার আর্কিটেকচার গ্রহণ করে বা এক্সিকিউশনের সময় অন্য অনচেইন কন্ট্র্যাক্টের সাথে ইন্টারফেস করে তবে ইন্টিগ্রেশন টেস্টিং কার্যকর। ইন্টিগ্রেশন টেস্ট চালানোর একটি উপায় হল একটি নির্দিষ্ট উচ্চতায় [ব্লকচেইন ফর্ক](/glossary/#fork) করা ([Forge](https://book.getfoundry.sh/forge/fork-testing) বা [Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) এর মতো একটি টুল ব্যবহার করে) এবং আপনার কন্ট্র্যাক্ট এবং ডেপ্লয় করা কন্ট্র্যাক্টগুলির মধ্যে মিথস্ক্রিয়া অনুকরণ করা।
+ইন্টিগ্রেশন টেস্টিং কার্যকর যদি আপনার কন্ট্রাক্ট একটি মডুলার আর্কিটেকচার গ্রহণ করে বা এক্সিকিউশনের সময় অন্যান্য অনচেইন কন্ট্রাক্টগুলোর সাথে ইন্টারফেস করে। ইন্টিগ্রেশন টেস্ট চালানোর একটি উপায় হলো একটি নির্দিষ্ট উচ্চতায় [ব্লকচেইন ফর্ক](/glossary/#fork) করা ([Forge](https://book.getfoundry.sh/forge/fork-testing) বা [Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)-এর মতো টুল ব্যবহার করে) এবং আপনার কন্ট্রাক্ট ও ডিপ্লয় করা কন্ট্রাক্টগুলোর মধ্যে ইন্টারঅ্যাকশন সিমুলেট করা।
-ফর্ক করা ব্লকচেইনটি Mainnet-এর মতোই আচরণ করবে এবং সংশ্লিষ্ট স্টেট এবং ব্যালেন্সসহ অ্যাকাউন্ট থাকবে। কিন্তু এটি শুধুমাত্র একটি স্যান্ডবক্সড লোকাল ডেভেলপমেন্ট এনভায়রনমেন্ট হিসেবে কাজ করে, যার মানে হল আপনার লেনদেনের জন্য প্রকৃত ETH-এর প্রয়োজন হবে না, উদাহরণস্বরূপ, বা আপনার পরিবর্তনগুলি প্রকৃত ইথেরিয়াম প্রোটোকলকে প্রভাবিত করবে না।
+ফর্ক করা ব্লকচেইনটি মেইননেট-এর মতোই আচরণ করবে এবং এতে সংশ্লিষ্ট স্টেট এবং ব্যালেন্সসহ একাউন্ট থাকবে। তবে এটি শুধুমাত্র একটি স্যান্ডবক্সড লোকাল ডেভেলপমেন্ট এনভায়রনমেন্ট হিসেবে কাজ করে, যার মানে হলো লেনদেন-এর জন্য আপনার আসল ETH-এর প্রয়োজন হবে না, উদাহরণস্বরূপ, এবং আপনার পরিবর্তনগুলো আসল ইথিরিয়াম প্রটোকল-কে প্রভাবিত করবে না।
### প্রপার্টি-ভিত্তিক টেস্টিং {#property-based-testing-for-smart-contracts}
-প্রপার্টি-ভিত্তিক টেস্টিং হল একটি স্মার্ট কন্ট্র্যাক্ট কোনো নির্দিষ্ট প্রপার্টি পূরণ করে কিনা তা পরীক্ষা করার প্রক্রিয়া। প্রপার্টিগুলি একটি কন্ট্র্যাক্টের আচরণ সম্পর্কে এমন তথ্য দাবি করে যা বিভিন্ন পরিস্থিতিতে সত্য থাকবে বলে আশা করা হয়—একটি স্মার্ট কন্ট্র্যাক্ট প্রপার্টির উদাহরণ হতে পারে "কন্ট্র্যাক্টে গাণিতিক ক্রিয়াকলাপগুলি কখনও ওভারফ্লো বা আন্ডারফ্লো হয় না।"
+প্রপার্টি-ভিত্তিক টেস্টিং হলো এমন একটি প্রক্রিয়া যা পরীক্ষা করে যে একটি স্মার্ট কন্ট্রাক্ট কিছু সংজ্ঞায়িত প্রপার্টি পূরণ করে কিনা। প্রপার্টিগুলো একটি কন্ট্রাক্ট-এর আচরণ সম্পর্কে এমন তথ্য নিশ্চিত করে যা বিভিন্ন পরিস্থিতিতে সত্য থাকবে বলে আশা করা হয়—একটি স্মার্ট কন্ট্রাক্ট প্রপার্টির উদাহরণ হতে পারে "কন্ট্রাক্ট-এ গাণিতিক অপারেশনগুলো কখনই ওভারফ্লো বা আন্ডারফ্লো হয় না।"
-**স্ট্যাটিক বিশ্লেষণ** এবং **ডাইনামিক বিশ্লেষণ** হল প্রপার্টি-ভিত্তিক টেস্টিং সম্পাদনের দুটি সাধারণ কৌশল, এবং উভয়ই যাচাই করতে পারে যে একটি প্রোগ্রামের কোড (এই ক্ষেত্রে একটি স্মার্ট কন্ট্র্যাক্ট) কিছু পূর্বনির্ধারিত প্রপার্টি পূরণ করে। কিছু প্রপার্টি-ভিত্তিক টেস্টিং টুলস প্রত্যাশিত কন্ট্র্যাক্ট প্রপার্টি সম্পর্কে পূর্বনির্ধারিত নিয়ম নিয়ে আসে এবং সেই নিয়মগুলির বিরুদ্ধে কোডটি পরীক্ষা করে, অন্যগুলি আপনাকে একটি স্মার্ট কন্ট্র্যাক্টের জন্য কাস্টম প্রপার্টি তৈরি করতে দেয়।
+**স্ট্যাটিক অ্যানালাইসিস** এবং **ডাইনামিক অ্যানালাইসিস** হলো প্রপার্টি-ভিত্তিক টেস্টিং এক্সিকিউট করার দুটি সাধারণ কৌশল, এবং উভয়ই যাচাই করতে পারে যে একটি প্রোগ্রামের কোড (এই ক্ষেত্রে একটি স্মার্ট কন্ট্রাক্ট) কিছু পূর্বনির্ধারিত প্রপার্টি পূরণ করে কিনা। কিছু প্রপার্টি-ভিত্তিক টেস্টিং টুল প্রত্যাশিত কন্ট্রাক্ট প্রপার্টি সম্পর্কে পূর্বনির্ধারিত নিয়মগুলোর সাথে আসে এবং সেই নিয়মগুলোর বিপরীতে কোড পরীক্ষা করে, অন্যদিকে অন্যগুলো আপনাকে একটি স্মার্ট কন্ট্রাক্ট-এর জন্য কাস্টম প্রপার্টি তৈরি করতে দেয়।
-#### স্ট্যাটিক বিশ্লেষণ {#static-analysis}
+#### স্ট্যাটিক অ্যানালাইসিস {#static-analysis}
-একটি স্ট্যাটিক অ্যানালাইজার একটি স্মার্ট কন্ট্র্যাক্টের সোর্স কোড ইনপুট হিসাবে নেয় এবং একটি কন্ট্র্যাক্ট একটি প্রপার্টি পূরণ করে কিনা তা ঘোষণা করে ফলাফল আউটপুট দেয়। ডাইনামিক বিশ্লেষণের বিপরীতে, স্ট্যাটিক বিশ্লেষণে সঠিকতার জন্য একটি কন্ট্র্যাক্ট এক্সিকিউট করা জড়িত থাকে না। স্ট্যাটিক বিশ্লেষণ বরং একটি স্মার্ট কন্ট্র্যাক্ট এক্সিকিউশনের সময় যে সমস্ত সম্ভাব্য পথ নিতে পারে সে সম্পর্কে যুক্তি দেয় (অর্থাৎ, রানটাইমে কন্ট্র্যাক্টের অপারেশনের জন্য এর অর্থ কী হবে তা নির্ধারণ করতে সোর্স কোডের কাঠামো পরীক্ষা করে)।
+একটি স্ট্যাটিক অ্যানালাইজার একটি স্মার্ট কন্ট্রাক্ট-এর সোর্স কোড ইনপুট হিসেবে নেয় এবং একটি কন্ট্রাক্ট কোনো প্রপার্টি পূরণ করে কি না তা ঘোষণা করে ফলাফল আউটপুট দেয়। ডাইনামিক অ্যানালাইসিসের বিপরীতে, স্ট্যাটিক অ্যানালাইসিসে সঠিকতার জন্য বিশ্লেষণ করতে কোনো কন্ট্রাক্ট এক্সিকিউট করার প্রয়োজন হয় না। এর পরিবর্তে স্ট্যাটিক অ্যানালাইসিস এক্সিকিউশনের সময় একটি স্মার্ট কন্ট্রাক্ট নিতে পারে এমন সমস্ত সম্ভাব্য পাথ সম্পর্কে যুক্তি দেয় (অর্থাৎ, রানটাইমে কন্ট্রাক্ট-এর অপারেশনের জন্য এর অর্থ কী হবে তা নির্ধারণ করতে সোর্স কোডের কাঠামো পরীক্ষা করে)।
-[লিন্টিং](https://www.perforce.com/blog/qac/what-is-linting) এবং [স্ট্যাটিক টেস্টিং](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) হল কন্ট্র্যাক্টে স্ট্যাটিক বিশ্লেষণ চালানোর সাধারণ পদ্ধতি। উভয়ের জন্যই কন্ট্র্যাক্টের এক্সিকিউশনের নিম্ন-স্তরের উপস্থাপনা যেমন কম্পাইলার দ্বারা আউটপুট করা [অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) এবং [কন্ট্রোল ফ্লো গ্রাফ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) বিশ্লেষণ করা প্রয়োজন।
+[লিন্টিং](https://www.perforce.com/blog/qac/what-is-linting) এবং [স্ট্যাটিক টেস্টিং](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) হলো কন্ট্রাক্টগুলোতে স্ট্যাটিক অ্যানালাইসিস চালানোর সাধারণ পদ্ধতি। উভয়ের জন্যই একটি কন্ট্রাক্ট এক্সিকিউশনের লো-লেভেল রিপ্রেজেন্টেশন বিশ্লেষণ করা প্রয়োজন যেমন কম্পাইলার দ্বারা আউটপুট করা [অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) এবং [কন্ট্রোল ফ্লো গ্রাফ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/)।
-বেশিরভাগ ক্ষেত্রে, স্ট্যাটিক বিশ্লেষণ একটি কন্ট্র্যাক্টের কোডে অনিরাপদ কনস্ট্রাক্টের ব্যবহার, সিনট্যাক্স ত্রুটি, বা কোডিং স্ট্যান্ডার্ড লঙ্ঘনের মতো নিরাপত্তা সমস্যা সনাক্ত করার জন্য উপযোগী। তবে, স্ট্যাটিক অ্যানালাইজারগুলি গভীরতর দুর্বলতা সনাক্ত করতে সাধারণত অসম্পূর্ণ বলে পরিচিত, এবং অতিরিক্ত ফলস পজিটিভ তৈরি করতে পারে।
+বেশিরভাগ ক্ষেত্রে, স্ট্যাটিক অ্যানালাইসিস একটি কন্ট্রাক্ট-এর কোডে অনিরাপদ কনস্ট্রাক্টের ব্যবহার, সিনট্যাক্স ত্রুটি বা কোডিং স্ট্যান্ডার্ড লঙ্ঘনের মতো নিরাপত্তা সমস্যাগুলো সনাক্ত করার জন্য কার্যকর। তবে, স্ট্যাটিক অ্যানালাইজারগুলো সাধারণত গভীর দুর্বলতাগুলো সনাক্ত করতে অক্ষম বলে পরিচিত, এবং অতিরিক্ত ফলস পজিটিভ তৈরি করতে পারে।
-#### ডাইনামিক বিশ্লেষণ {#dynamic-analysis}
+#### ডাইনামিক অ্যানালাইসিস {#dynamic-analysis}
-ডাইনামিক বিশ্লেষণ একটি স্মার্ট কন্ট্র্যাক্টের ফাংশনগুলিতে সিম্বলিক ইনপুট (যেমন, [সিম্বলিক এক্সিকিউশনে](https://en.m.wikipedia.org/wiki/Symbolic_execution)) বা কংক্রিট ইনপুট (যেমন, [ফাজিং-এ](https://owasp.org/www-community/Fuzzing)) তৈরি করে তা দেখতে যে কোনো এক্সিকিউশন ট্রেস নির্দিষ্ট বৈশিষ্ট্য লঙ্ঘন করে কিনা। এই ধরনের প্রপার্টি-ভিত্তিক টেস্টিং ইউনিট টেস্ট থেকে ভিন্ন কারণ টেস্ট কেসগুলি একাধিক পরিস্থিতি কভার করে এবং একটি প্রোগ্রাম টেস্ট কেস তৈরির কাজ পরিচালনা করে।
+ডাইনামিক অ্যানালাইসিস একটি স্মার্ট কন্ট্রাক্ট-এর ফাংশনগুলোতে সিম্বলিক ইনপুট (যেমন, [সিম্বলিক এক্সিকিউশন](https://en.m.wikipedia.org/wiki/Symbolic_execution)-এ) বা কংক্রিট ইনপুট (যেমন, [ফাজিং](https://owasp.org/www-community/Fuzzing)-এ) তৈরি করে যাতে দেখা যায় যে কোনো এক্সিকিউশন ট্রেস নির্দিষ্ট প্রপার্টিগুলো লঙ্ঘন করে কিনা। এই ধরনের প্রপার্টি-ভিত্তিক টেস্টিং ইউনিট টেস্টগুলো থেকে আলাদা কারণ টেস্ট কেসগুলো একাধিক পরিস্থিতি কভার করে এবং একটি প্রোগ্রাম টেস্ট কেস তৈরির কাজ পরিচালনা করে।
-[ফাজিং](https://www.halborn.com/blog/post/what-is-fuzz-testing-fuzzing) স্মার্ট কন্ট্র্যাক্টে নির্বিচারে প্রপার্টি যাচাই করার জন্য একটি ডাইনামিক বিশ্লেষণ কৌশলের উদাহরণ। একটি ফাজার একটি টার্গেট কন্ট্র্যাক্টে একটি সংজ্ঞায়িত ইনপুট মানের র্যান্ডম বা ত্রুটিপূর্ণ ভিন্নতা দিয়ে ফাংশনগুলিকে কল করে। যদি স্মার্ট কন্ট্র্যাক্টটি একটি ত্রুটিপূর্ণ স্টেটে প্রবেশ করে (যেমন, যেখানে একটি অ্যাসারশন ব্যর্থ হয়), সমস্যাটি ফ্ল্যাগ করা হয় এবং দুর্বল পাথের দিকে এক্সিকিউশন চালনাকারী ইনপুটগুলি একটি রিপোর্টে তৈরি করা হয়।
+[ফাজিং](https://www.halborn.com/blog/post/what-is-fuzz-testing-fuzzing) হলো স্মার্ট কন্ট্রাক্টগুলোতে নির্বিচার প্রপার্টি যাচাই করার জন্য একটি ডাইনামিক অ্যানালাইসিস কৌশলের উদাহরণ। একটি ফাজার একটি সংজ্ঞায়িত ইনপুট ভ্যালুর র্যান্ডম বা বিকৃত বৈচিত্র্যসহ একটি টার্গেট কন্ট্রাক্ট-এ ফাংশনগুলোকে ইনভোক করে। যদি স্মার্ট কন্ট্রাক্টটি কোনো এরর স্টেট-এ প্রবেশ করে (যেমন, যেখানে একটি অ্যাসারশন ব্যর্থ হয়), তবে সমস্যাটি ফ্ল্যাগ করা হয় এবং যে ইনপুটগুলো এক্সিকিউশনকে দুর্বল পাথের দিকে নিয়ে যায় সেগুলো একটি রিপোর্টে তৈরি করা হয়।
-ফাজিং একটি স্মার্ট কন্ট্র্যাক্টের ইনপুট বৈধকরণ প্রক্রিয়া মূল্যায়নের জন্য উপযোগী কারণ অপ্রত্যাশিত ইনপুটগুলির অনুপযুক্ত হ্যান্ডলিংয়ের ফলে অনিচ্ছাকৃত এক্সিকিউশন হতে পারে এবং বিপজ্জনক প্রভাব তৈরি করতে পারে। এই ধরনের প্রপার্টি-ভিত্তিক টেস্টিং অনেক কারণে আদর্শ হতে পারে:
+ফাজিং একটি স্মার্ট কন্ট্রাক্ট-এর ইনপুট ভ্যালিডেশন মেকানিজম মূল্যায়ন করার জন্য কার্যকর কারণ অপ্রত্যাশিত ইনপুটগুলোর অনুপযুক্ত পরিচালনার ফলে অনাকাঙ্ক্ষিত এক্সিকিউশন হতে পারে এবং বিপজ্জনক প্রভাব তৈরি করতে পারে। এই ধরনের প্রপার্টি-ভিত্তিক টেস্টিং অনেক কারণে আদর্শ হতে পারে:
-1. **অনেক পরিস্থিতি কভার করার জন্য টেস্ট কেস লেখা কঠিন।** একটি প্রপার্টি টেস্টে শুধুমাত্র একটি আচরণ এবং আচরণের সাথে পরীক্ষা করার জন্য ডেটার একটি পরিসীমা সংজ্ঞায়িত করতে হয়—প্রোগ্রামটি সংজ্ঞায়িত প্রপার্টির উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে টেস্ট কেস তৈরি করে।
+1. **অনেক পরিস্থিতি কভার করার জন্য টেস্ট কেস লেখা কঠিন।** একটি প্রপার্টি টেস্টের জন্য শুধুমাত্র প্রয়োজন যে আপনি একটি আচরণ এবং সেই আচরণ পরীক্ষা করার জন্য ডেটার একটি রেঞ্জ সংজ্ঞায়িত করুন—প্রোগ্রামটি স্বয়ংক্রিয়ভাবে সংজ্ঞায়িত প্রপার্টির উপর ভিত্তি করে টেস্ট কেস তৈরি করে।
-2. **আপনার টেস্ট স্যুট প্রোগ্রামের মধ্যে সমস্ত সম্ভাব্য পথ পর্যাপ্তভাবে কভার নাও করতে পারে।** এমনকি 100% কভারেজ সহ, এজ কেসগুলি মিস করা সম্ভব।
+2. **আপনার টেস্ট স্যুট প্রোগ্রামের মধ্যে সমস্ত সম্ভাব্য পাথ পর্যাপ্তভাবে কভার নাও করতে পারে।** এমনকি ১০০% কভারেজ থাকা সত্ত্বেও, এজ কেসগুলো মিস করা সম্ভব।
-3. **ইউনিট টেস্ট প্রমাণ করে যে একটি কন্ট্র্যাক্ট নমুনা ডেটার জন্য সঠিকভাবে এক্সিকিউট হয়, কিন্তু কন্ট্র্যাক্টটি নমুনার বাইরের ইনপুটগুলির জন্য সঠিকভাবে এক্সিকিউট হয় কিনা তা অজানা থেকে যায়।** প্রপার্টি টেস্টগুলি একটি প্রদত্ত ইনপুট মানের একাধিক ভিন্নতা দিয়ে একটি টার্গেট কন্ট্র্যাক্ট এক্সিকিউট করে যা অ্যাসারশন ব্যর্থতার কারণ হয় এমন এক্সিকিউশন ট্রেস খুঁজে বের করতে। সুতরাং, একটি প্রপার্টি টেস্ট আরও বেশি গ্যারান্টি প্রদান করে যে একটি কন্ট্র্যাক্ট ইনপুট ডেটার একটি বিস্তৃত শ্রেণীর জন্য সঠিকভাবে এক্সিকিউট হয়।
+3. **ইউনিট টেস্টগুলো প্রমাণ করে যে একটি কন্ট্রাক্ট স্যাম্পল ডেটার জন্য সঠিকভাবে এক্সিকিউট করে, তবে স্যাম্পলের বাইরের ইনপুটগুলোর জন্য কন্ট্রাক্টটি সঠিকভাবে এক্সিকিউট করে কিনা তা অজানা থেকে যায়।** প্রপার্টি টেস্টগুলো একটি প্রদত্ত ইনপুট ভ্যালুর একাধিক বৈচিত্র্যসহ একটি টার্গেট কন্ট্রাক্ট এক্সিকিউট করে যাতে অ্যাসারশন ব্যর্থতার কারণ হওয়া এক্সিকিউশন ট্রেসগুলো খুঁজে পাওয়া যায়। সুতরাং, একটি প্রপার্টি টেস্ট আরও গ্যারান্টি প্রদান করে যে একটি কন্ট্রাক্ট ইনপুট ডেটার একটি বিস্তৃত ক্লাসের জন্য সঠিকভাবে এক্সিকিউট করে।
-### স্মার্ট কন্ট্র্যাক্টের জন্য প্রপার্টি-ভিত্তিক টেস্টিং চালানোর নির্দেশিকা {#running-property-based-tests}
+### স্মার্ট কন্ট্রাক্ট-এর জন্য প্রপার্টি-ভিত্তিক টেস্টিং চালানোর নির্দেশিকা {#running-property-based-tests}
-প্রপার্টি-ভিত্তিক টেস্টিং সাধারণত একটি প্রপার্টি (যেমন, [পূর্ণসংখ্যা ওভারফ্লোর](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow) অনুপস্থিতি) বা প্রপার্টিগুলির একটি সংগ্রহ সংজ্ঞায়িত করার মাধ্যমে শুরু হয় যা আপনি একটি স্মার্ট কন্ট্র্যাক্টে যাচাই করতে চান। প্রপার্টি টেস্ট লেখার সময় আপনাকে একটি মানের পরিসীমাও সংজ্ঞায়িত করতে হতে পারে যার মধ্যে প্রোগ্রামটি লেনদেন ইনপুটের জন্য ডেটা তৈরি করতে পারে।
+প্রপার্টি-ভিত্তিক টেস্টিং চালানো সাধারণত একটি প্রপার্টি (যেমন, [ইন্টিজার ওভারফ্লো](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow)-এর অনুপস্থিতি) বা প্রপার্টিগুলোর সংগ্রহ সংজ্ঞায়িত করার মাধ্যমে শুরু হয় যা আপনি একটি স্মার্ট কন্ট্রাক্ট-এ যাচাই করতে চান। প্রপার্টি টেস্ট লেখার সময় লেনদেন ইনপুটগুলোর জন্য প্রোগ্রামটি যে রেঞ্জের মধ্যে ডেটা তৈরি করতে পারে তা সংজ্ঞায়িত করারও প্রয়োজন হতে পারে।
-সঠিকভাবে কনফিগার করার পরে, প্রপার্টি টেস্টিং টুল আপনার স্মার্ট কন্ট্র্যাক্টের ফাংশনগুলিকে র্যান্ডমভাবে তৈরি করা ইনপুট দিয়ে এক্সিকিউট করবে। যদি কোনো অ্যাসারশন লঙ্ঘন হয়, তাহলে আপনার মূল্যায়নের অধীনে থাকা প্রপার্টি লঙ্ঘনকারী কংক্রিট ইনপুট ডেটা সহ একটি রিপোর্ট পাওয়া উচিত। বিভিন্ন টুলস দিয়ে প্রপার্টি-ভিত্তিক টেস্টিং চালানো শুরু করতে নীচের কিছু গাইড দেখুন:
+একবার সঠিকভাবে কনফিগার করা হলে, প্রপার্টি টেস্টিং টুলটি র্যান্ডমভাবে তৈরি করা ইনপুটগুলোর সাথে আপনার স্মার্ট কন্ট্রাক্ট ফাংশনগুলো এক্সিকিউট করবে। যদি কোনো অ্যাসারশন লঙ্ঘন হয়, তবে আপনার এমন কংক্রিট ইনপুট ডেটাসহ একটি রিপোর্ট পাওয়া উচিত যা মূল্যায়নের অধীনে থাকা প্রপার্টি লঙ্ঘন করে। বিভিন্ন টুলের সাথে প্রপার্টি-ভিত্তিক টেস্টিং চালানো শুরু করতে নিচের কিছু গাইড দেখুন:
-- **[Slither দিয়ে স্মার্ট কন্ট্র্যাক্টের স্ট্যাটিক বিশ্লেষণ](https://github.com/crytic/slither)**
-- **[Wake দিয়ে স্মার্ট কন্ট্র্যাক্টের স্ট্যাটিক বিশ্লেষণ](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)**
-- **[Brownie দিয়ে প্রপার্টি-ভিত্তিক টেস্টিং](https://eth-brownie.readthedocs.io/en/stable/tests-hypothesis-property.html)**
-- **[Foundry দিয়ে কন্ট্র্যাক্ট ফাজিং](https://book.getfoundry.sh/forge/fuzz-testing)**
-- **[Echidna দিয়ে কন্ট্র্যাক্ট ফাজিং](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)**
-- **[Wake দিয়ে কন্ট্র্যাক্ট ফাজিং](https://ackeeblockchain.com/wake/docs/latest/testing-framework/fuzzing/)**
-- **[Manticore দিয়ে স্মার্ট কন্ট্র্যাক্টের সিম্বলিক এক্সিকিউশন](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)**
-- **[Mythril দিয়ে স্মার্ট কন্ট্র্যাক্টের সিম্বলিক এক্সিকিউশন](https://mythril-classic.readthedocs.io/en/master/tutorial.html)**
+- **[Slither-এর সাথে স্মার্ট কন্ট্রাক্ট-এর স্ট্যাটিক অ্যানালাইসিস](https://github.com/crytic/slither)**
+- **[Wake-এর সাথে স্মার্ট কন্ট্রাক্ট-এর স্ট্যাটিক অ্যানালাইসিস](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)**
+- **[Brownie-এর সাথে প্রপার্টি-ভিত্তিক টেস্টিং](https://eth-brownie.readthedocs.io/en/stable/tests-hypothesis-property.html)**
+- **[Foundry-এর সাথে কন্ট্রাক্ট ফাজিং](https://book.getfoundry.sh/forge/fuzz-testing)**
+- **[Echidna-এর সাথে কন্ট্রাক্ট ফাজিং](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)**
+- **[Wake-এর সাথে কন্ট্রাক্ট ফাজিং](https://ackeeblockchain.com/wake/docs/latest/testing-framework/fuzzing/)**
+- **[Manticore-এর সাথে স্মার্ট কন্ট্রাক্ট-এর সিম্বলিক এক্সিকিউশন](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)**
+- **[Mythril-এর সাথে স্মার্ট কন্ট্রাক্ট-এর সিম্বলিক এক্সিকিউশন](https://mythril-classic.readthedocs.io/en/master/tutorial.html)**
-## স্মার্ট কন্ট্র্যাক্টের জন্য ম্যানুয়াল টেস্টিং {#manual-testing-for-smart-contracts}
+## স্মার্ট কন্ট্রাক্ট-এর জন্য ম্যানুয়াল টেস্টিং {#manual-testing-for-smart-contracts}
-স্মার্ট কন্ট্র্যাক্টের ম্যানুয়াল টেস্টিং প্রায়শই স্বয়ংক্রিয় টেস্ট চালানোর পরে ডেভেলপমেন্ট সাইকেলের পরবর্তী পর্যায়ে আসে। এই ধরনের টেস্টিং স্মার্ট কন্ট্র্যাক্টকে একটি সম্পূর্ণ সমন্বিত পণ্য হিসাবে মূল্যায়ন করে তা দেখতে যে এটি প্রযুক্তিগত প্রয়োজনীয়তাগুলিতে নির্দিষ্ট হিসাবে কাজ করে কিনা।
+স্মার্ট কন্ট্রাক্ট-এর ম্যানুয়াল টেস্টিং প্রায়শই অটোমেটেড টেস্ট চালানোর পরে ডেভেলপমেন্ট সাইকেলের শেষের দিকে আসে। এই ধরনের টেস্টিং স্মার্ট কন্ট্রাক্ট-কে একটি সম্পূর্ণ ইন্টিগ্রেটেড প্রোডাক্ট হিসেবে মূল্যায়ন করে যাতে দেখা যায় যে এটি প্রযুক্তিগত প্রয়োজনীয়তাগুলোতে নির্দিষ্ট করা অনুযায়ী কাজ করে কিনা।
-### একটি স্থানীয় ব্লকচেইনে কন্ট্র্যাক্ট টেস্টিং {#testing-on-local-blockchain}
+### একটি লোকাল ব্লকচেইন-এ কন্ট্রাক্ট টেস্টিং {#testing-on-local-blockchain}
-যদিও একটি স্থানীয় ডেভেলপমেন্ট পরিবেশে সঞ্চালিত স্বয়ংক্রিয় টেস্টিং দরকারী ডিবাগিং তথ্য সরবরাহ করতে পারে, আপনি জানতে চাইবেন আপনার স্মার্ট কন্ট্র্যাক্ট একটি প্রোডাকশন পরিবেশে কীভাবে আচরণ করে। তবে, মূল ইথেরিয়াম চেইনে ডেপ্লয় করতে গ্যাস ফি লাগে—এছাড়াও, আপনার স্মার্ট কন্ট্র্যাক্টে যদি এখনও বাগ থাকে তবে আপনি বা আপনার ব্যবহারকারীরা প্রকৃত অর্থ হারাতে পারেন।
+যদিও একটি লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টে করা অটোমেটেড টেস্টিং দরকারী ডিবাগিং তথ্য প্রদান করতে পারে, আপনি জানতে চাইবেন যে আপনার স্মার্ট কন্ট্রাক্ট একটি প্রোডাকশন এনভায়রনমেন্টে কীভাবে আচরণ করে। তবে, মূল ইথিরিয়াম চেইনে ডিপ্লয় করার জন্য গ্যাস ফি লাগে—তাছাড়া আপনার স্মার্ট কন্ট্রাক্ট-এ এখনও বাগ থাকলে আপনি বা আপনার ব্যবহারকারীরা আসল অর্থ হারাতে পারেন।
-Mainnet-এ টেস্টিং করার একটি প্রস্তাবিত বিকল্প হল আপনার কন্ট্র্যাক্টটিকে একটি স্থানীয় ব্লকচেইনে ([ডেভেলপমেন্ট নেটওয়ার্ক](/developers/docs/development-networks/) হিসাবেও পরিচিত) পরীক্ষা করা। একটি স্থানীয় ব্লকচেইন হল ইথেরিয়াম ব্লকচেইনের একটি অনুলিপি যা আপনার কম্পিউটারে স্থানীয়ভাবে চলে এবং যা ইথেরিয়ামের এক্সিকিউশন লেয়ারের আচরণকে অনুকরণ করে। যেমন, আপনি উল্লেখযোগ্য ওভারহেড ছাড়াই একটি কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য লেনদেন প্রোগ্রাম করতে পারেন।
+একটি লোকাল ব্লকচেইন-এ (যা [ডেভেলপমেন্ট নেটওয়ার্ক](/developers/docs/development-networks/) হিসেবেও পরিচিত) আপনার কন্ট্রাক্ট টেস্টিং করা মেইননেট-এ টেস্টিং করার একটি প্রস্তাবিত বিকল্প। একটি লোকাল ব্লকচেইন হলো আপনার কম্পিউটারে স্থানীয়ভাবে চলা ইথিরিয়াম ব্লকচেইন-এর একটি কপি যা ইথিরিয়াম-এর এক্সিকিউশন লেয়ার-এর আচরণ সিমুলেট করে। এর ফলে, আপনি উল্লেখযোগ্য ওভারহেড ছাড়াই একটি কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করার জন্য লেনদেন প্রোগ্রাম করতে পারেন।
-একটি স্থানীয় ব্লকচেইনে কন্ট্র্যাক্ট চালানো ম্যানুয়াল ইন্টিগ্রেশন টেস্টিংয়ের একটি রূপ হিসাবে কার্যকর হতে পারে। [স্মার্ট কন্ট্র্যাক্টগুলি অত্যন্ত কম্পোজেবল](/developers/docs/smart-contracts/composability/), যা আপনাকে বিদ্যমান প্রোটোকলগুলির সাথে একীভূত করার অনুমতি দেয়—কিন্তু আপনাকে এখনও নিশ্চিত করতে হবে যে এই ধরনের জটিল অনচেইন ইন্টারঅ্যাকশনগুলি সঠিক ফলাফল তৈরি করে।
+একটি লোকাল ব্লকচেইন-এ কন্ট্রাক্ট চালানো ম্যানুয়াল ইন্টিগ্রেশন টেস্টিংয়ের একটি রূপ হিসেবে কার্যকর হতে পারে। [স্মার্ট কন্ট্রাক্টগুলো অত্যন্ত কম্পোজেবল](/developers/docs/smart-contracts/composability/), যা আপনাকে বিদ্যমান প্রটোকলগুলোর সাথে ইন্টিগ্রেট করার অনুমতি দেয়—তবে আপনাকে এখনও নিশ্চিত করতে হবে যে এই ধরনের জটিল অনচেইন ইন্টারঅ্যাকশনগুলো সঠিক ফলাফল তৈরি করে।
-[ডেভেলপমেন্ট নেটওয়ার্ক সম্পর্কে আরও।](/developers/docs/development-networks/)
+[ডেভেলপমেন্ট নেটওয়ার্ক সম্পর্কে আরও জানুন।](/developers/docs/development-networks/)
-### টেস্টনেটে কন্ট্র্যাক্ট টেস্টিং {#testing-contracts-on-testnets}
+### টেস্টনেট-এ কন্ট্রাক্ট টেস্টিং {#testing-contracts-on-testnets}
-একটি টেস্ট নেটওয়ার্ক বা টেস্টনেট ঠিক ইথেরিয়াম Mainnet-এর মতো কাজ করে, তবে এটি এমন ইথার (ETH) ব্যবহার করে যার কোনো বাস্তব-বিশ্বের মূল্য নেই। একটি [টেস্টনেটে](/developers/docs/networks/#ethereum-testnets) আপনার কন্ট্র্যাক্ট ডেপ্লয় করার মানে হল যে কেউ এটির সাথে (যেমন, ডিএ্যাপ-এর ফ্রন্টএন্ডের মাধ্যমে) তহবিল ঝুঁকিতে না ফেলে ইন্টারঅ্যাক্ট করতে পারে।
+একটি টেস্ট নেটওয়ার্ক বা টেস্টনেট ঠিক ইথিরিয়াম মেইননেট-এর মতোই কাজ করে, তবে এটি এমন ইথার (ETH) ব্যবহার করে যার কোনো বাস্তব-বিশ্বের মূল্য নেই। একটি [টেস্টনেট](/developers/docs/networks/#ethereum-testnets)-এ আপনার কন্ট্রাক্ট ডিপ্লয় করার অর্থ হলো যে কেউ ফান্ড ঝুঁকিতে না ফেলেই এর সাথে ইন্টারঅ্যাক্ট করতে পারে (যেমন, ডিএ্যাপ-এর ফ্রন্টএন্ডের মাধ্যমে)।
-এই ধরনের ম্যানুয়াল টেস্টিং একজন ব্যবহারকারীর দৃষ্টিকোণ থেকে আপনার অ্যাপ্লিকেশনের এন্ড-টু-এন্ড ফ্লো মূল্যায়নের জন্য উপযোগী। এখানে, বিটা টেস্টাররা ট্রায়াল রান করতে পারে এবং কন্ট্র্যাক্টের ব্যবসায়িক যুক্তি এবং সামগ্রিক কার্যকারিতার সাথে সম্পর্কিত যেকোনো সমস্যা রিপোর্ট করতে পারে।
+এই ধরনের ম্যানুয়াল টেস্টিং ব্যবহারকারীর দৃষ্টিকোণ থেকে আপনার অ্যাপ্লিকেশনের এন্ড-টু-এন্ড ফ্লো মূল্যায়ন করার জন্য কার্যকর। এখানে, বিটা টেস্টাররাও ট্রায়াল রান করতে পারে এবং কন্ট্রাক্ট-এর বিজনেস লজিক এবং সামগ্রিক কার্যকারিতা নিয়ে কোনো সমস্যা রিপোর্ট করতে পারে।
-একটি স্থানীয় ব্লকচেইনে পরীক্ষা করার পরে একটি টেস্টনেটে ডেপ্লয় করা আদর্শ কারণ পরেরটি ইথিরিয়াম ভার্চুয়াল মেশিনের আচরণের কাছাকাছি। অতএব, অনেক ইথেরিয়াম-নেটিভ প্রকল্পের জন্য বাস্তব-বিশ্বের পরিস্থিতিতে একটি স্মার্ট কন্ট্র্যাক্টের অপারেশন মূল্যায়ন করতে টেস্টনেটে ডিএ্যাপস ডেপ্লয় করা সাধারণ।
+একটি লোকাল ব্লকচেইন-এ টেস্টিং করার পরে একটি টেস্টনেট-এ ডিপ্লয় করা আদর্শ কারণ এটি ইথিরিয়াম ভার্চুয়াল মেশিন-এর আচরণের কাছাকাছি। তাই, বাস্তব-বিশ্বের পরিস্থিতিতে একটি স্মার্ট কন্ট্রাক্ট-এর অপারেশন মূল্যায়ন করার জন্য অনেক ইথিরিয়াম-নেটিভ প্রজেক্টের টেস্টনেট-এ ডিএ্যাপস ডিপ্লয় করা সাধারণ।
-[ইথেরিয়াম টেস্টনেট সম্পর্কে আরও।](/developers/docs/development-networks/#public-beacon-testchains)
+[ইথিরিয়াম টেস্টনেট সম্পর্কে আরও জানুন।](/developers/docs/development-networks/#public-beacon-testchains)
-## টেস্টিং বনাম ফর্মাল ভেরিফিকেশন {#testing-vs-formal-verification}
+## টেস্টিং বনাম ফরমাল ভেরিফিকেশন {#testing-vs-formal-verification}
-যদিও টেস্টিং নিশ্চিত করতে সাহায্য করে যে একটি কন্ট্র্যাক্ট কিছু ডেটা ইনপুটের জন্য প্রত্যাশিত ফলাফল দেয়, এটি পরীক্ষার সময় ব্যবহৃত হয়নি এমন ইনপুটগুলির জন্য একই প্রমাণ চূড়ান্তভাবে করতে পারে না। অতএব, একটি স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করা "ফাংশনাল সঠিকতা"-র গ্যারান্টি দিতে পারে না (অর্থাৎ, এটি দেখাতে পারে না যে একটি প্রোগ্রাম _সমস্ত_ ইনপুট মানের সেটের জন্য প্রয়োজন অনুযায়ী আচরণ করে)।
+যদিও টেস্টিং নিশ্চিত করতে সাহায্য করে যে একটি কন্ট্রাক্ট কিছু ডেটা ইনপুটের জন্য প্রত্যাশিত ফলাফল প্রদান করে, এটি টেস্ট চলাকালীন ব্যবহৃত না হওয়া ইনপুটগুলোর জন্য চূড়ান্তভাবে একই প্রমাণ করতে পারে না। তাই, একটি স্মার্ট কন্ট্রাক্ট টেস্টিং করা "কার্যকরী সঠিকতা" গ্যারান্টি দিতে পারে না (অর্থাৎ, এটি দেখাতে পারে না যে একটি প্রোগ্রাম ইনপুট ভ্যালুগুলোর _সমস্ত_ সেটের জন্য প্রয়োজনীয় আচরণ করে)।
-ফর্মাল ভেরিফিকেশন হল একটি প্রোগ্রামের ফর্মাল মডেল একটি ফর্মাল স্পেসিফিকেশনের সাথে মেলে কিনা তা পরীক্ষা করে সফ্টওয়্যারের সঠিকতা মূল্যায়ন করার একটি পদ্ধতি। একটি ফর্মাল মডেল হল একটি প্রোগ্রামের একটি বিমূর্ত গাণিতিক উপস্থাপনা, যেখানে একটি ফর্মাল স্পেসিফিকেশন একটি প্রোগ্রামের বৈশিষ্ট্যগুলি (অর্থাৎ, প্রোগ্রামের এক্সিকিউশন সম্পর্কে যৌক্তিক দাবি) সংজ্ঞায়িত করে।
+ফরমাল ভেরিফিকেশন হলো প্রোগ্রামের একটি ফরমাল মডেল ফরমাল স্পেসিফিকেশনের সাথে মেলে কিনা তা পরীক্ষা করে সফটওয়্যারের সঠিকতা মূল্যায়ন করার একটি পদ্ধতি। একটি ফরমাল মডেল হলো একটি প্রোগ্রামের একটি বিমূর্ত গাণিতিক উপস্থাপনা, অন্যদিকে একটি ফরমাল স্পেসিফিকেশন একটি প্রোগ্রামের প্রপার্টিগুলো সংজ্ঞায়িত করে (অর্থাৎ, প্রোগ্রামের এক্সিকিউশন সম্পর্কে যৌক্তিক অ্যাসারশন)।
-যেহেতু প্রপার্টিগুলি গাণিতিক পরিভাষায় লেখা হয়, তাই সিস্টেমের একটি ফর্মাল (গাণিতিক) মডেল যৌক্তিক অনুমানের নিয়ম ব্যবহার করে একটি স্পেসিফিকেশন পূরণ করে কিনা তা যাচাই করা সম্ভব হয়। এইভাবে, বলা হয় যে ফর্মাল ভেরিফিকেশন টুলস একটি সিস্টেমের সঠিকতার ‘গাণিতিক প্রমাণ’ তৈরি করে।
+যেহেতু প্রপার্টিগুলো গাণিতিক পরিভাষায় লেখা হয়, তাই অনুমানের যৌক্তিক নিয়মগুলো ব্যবহার করে সিস্টেমের একটি ফরমাল (গাণিতিক) মডেল একটি স্পেসিফিকেশন পূরণ করে কিনা তা যাচাই করা সম্ভব হয়। সুতরাং, ফরমাল ভেরিফিকেশন টুলগুলো একটি সিস্টেমের সঠিকতার 'গাণিতিক প্রমাণ' তৈরি করে বলে বলা হয়।
-টেস্টিংয়ের বিপরীতে, ফর্মাল ভেরিফিকেশন একটি স্মার্ট কন্ট্র্যাক্টের এক্সিকিউশন _সমস্ত_ এক্সিকিউশনের জন্য একটি ফর্মাল স্পেসিফিকেশন পূরণ করে কিনা তা যাচাই করতে ব্যবহার করা যেতে পারে (অর্থাৎ, এতে কোনো বাগ নেই) নমুনা ডেটা দিয়ে এক্সিকিউট করার প্রয়োজন ছাড়াই। এটি কেবল কয়েক ডজন ইউনিট টেস্ট চালানোর সময় ব্যয় কমায় না, বরং এটি লুকানো দুর্বলতা ধরতে আরও কার্যকর। বলা বাহুল্য, ফর্মাল ভেরিফিকেশন কৌশলগুলি তাদের বাস্তবায়নের অসুবিধা এবং উপযোগিতার উপর নির্ভর করে একটি স্পেকট্রামে অবস্থান করে।
+টেস্টিংয়ের বিপরীতে, ফরমাল ভেরিফিকেশন ব্যবহার করে যাচাই করা যেতে পারে যে একটি স্মার্ট কন্ট্রাক্ট-এর এক্সিকিউশন স্যাম্পল ডেটার সাথে এক্সিকিউট করার প্রয়োজন ছাড়াই _সমস্ত_ এক্সিকিউশনের জন্য একটি ফরমাল স্পেসিফিকেশন পূরণ করে (অর্থাৎ, এতে কোনো বাগ নেই)। এটি কেবল ডজন ডজন ইউনিট টেস্ট চালানোর সময়ই কমায় না, বরং এটি লুকানো দুর্বলতাগুলো ধরতেও বেশি কার্যকর। তবে, ফরমাল ভেরিফিকেশন কৌশলগুলো তাদের বাস্তবায়নের অসুবিধা এবং উপযোগিতার উপর নির্ভর করে একটি স্পেকট্রামের উপর থাকে।
-[স্মার্ট কন্ট্র্যাক্টের জন্য ফর্মাল ভেরিফিকেশন সম্পর্কে আরও।](/developers/docs/smart-contracts/formal-verification)
+[স্মার্ট কন্ট্রাক্ট-এর জন্য ফরমাল ভেরিফিকেশন সম্পর্কে আরও জানুন।](/developers/docs/smart-contracts/formal-verification)
## টেস্টিং বনাম অডিট এবং বাগ বাউন্টি {#testing-vs-audits-bug-bounties}
-যেমন উল্লেখ করা হয়েছে, কঠোর টেস্টিং খুব কমই একটি কন্ট্র্যাক্টে বাগের অনুপস্থিতির গ্যারান্টি দিতে পারে; ফর্মাল ভেরিফিকেশন পদ্ধতিগুলি সঠিকতার শক্তিশালী আশ্বাস দিতে পারে তবে বর্তমানে ব্যবহার করা কঠিন এবং যথেষ্ট ব্যয়সাপেক্ষ।
+যেমনটি উল্লেখ করা হয়েছে, কঠোর টেস্টিং খুব কমই একটি কন্ট্রাক্ট-এ বাগের অনুপস্থিতির গ্যারান্টি দিতে পারে; ফরমাল ভেরিফিকেশন পদ্ধতিগুলো সঠিকতার শক্তিশালী নিশ্চয়তা প্রদান করতে পারে তবে বর্তমানে এগুলো ব্যবহার করা কঠিন এবং উল্লেখযোগ্য খরচ বহন করে।
-তবুও, আপনি একটি স্বাধীন কোড রিভিউ পেয়ে কন্ট্র্যাক্টের দুর্বলতা ধরার সম্ভাবনা আরও বাড়াতে পারেন। [স্মার্ট কন্ট্র্যাক্ট অডিট](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) এবং [বাগ বাউন্টি](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) হল আপনার কন্ট্র্যাক্টগুলি অন্যদের দ্বারা বিশ্লেষণ করানোর দুটি উপায়।
+তবুও, আপনি একটি স্বাধীন কোড রিভিউ পেয়ে কন্ট্রাক্ট-এর দুর্বলতাগুলো ধরার সম্ভাবনা আরও বাড়িয়ে তুলতে পারেন। [স্মার্ট কন্ট্রাক্ট অডিট](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) এবং [বাগ বাউন্টি](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) হলো অন্যদের দিয়ে আপনার কন্ট্রাক্টগুলো বিশ্লেষণ করানোর দুটি উপায়।
-স্মার্ট কন্ট্র্যাক্টে নিরাপত্তা ত্রুটি এবং দুর্বল ডেভেলপমেন্ট অনুশীলনের ঘটনা খুঁজে বের করতে অভিজ্ঞ অডিটরদের দ্বারা অডিট করা হয়। একটি অডিটে সাধারণত টেস্টিং (এবং সম্ভবত ফর্মাল ভেরিফিকেশন) এবং সম্পূর্ণ কোডবেসের একটি ম্যানুয়াল রিভিউ অন্তর্ভুক্ত থাকে।
+অডিটগুলো এমন অডিটরদের দ্বারা করা হয় যারা স্মার্ট কন্ট্রাক্ট-এ নিরাপত্তা ত্রুটি এবং দুর্বল ডেভেলপমেন্ট অনুশীলনের ঘটনাগুলো খুঁজে বের করতে অভিজ্ঞ। একটি অডিটে সাধারণত টেস্টিং (এবং সম্ভবত ফরমাল ভেরিফিকেশন) এর পাশাপাশি সম্পূর্ণ কোডবেসের একটি ম্যানুয়াল রিভিউ অন্তর্ভুক্ত থাকবে।
-বিপরীতভাবে, একটি বাগ বাউন্টি প্রোগ্রামে সাধারণত একজন ব্যক্তিকে (সাধারণত [হোয়াইটহ্যাট হ্যাকার](https://en.wikipedia.org/wiki/White_hat_\(computer_security\)) হিসাবে বর্ণিত) আর্থিক পুরস্কার অফার করা হয় যিনি একটি স্মার্ট কন্ট্র্যাক্টে একটি দুর্বলতা আবিষ্কার করেন এবং ডেভেলপারদের কাছে তা প্রকাশ করেন। বাগ বাউন্টি অডিটের মতোই, কারণ এতে অন্যদের স্মার্ট কন্ট্র্যাক্টে ত্রুটি খুঁজে পেতে সাহায্য করার জন্য বলা হয়।
+বিপরীতে, একটি বাগ বাউন্টি প্রোগ্রামে সাধারণত এমন একজন ব্যক্তিকে (যাদের সাধারণত [হোয়াইটহ্যাট হ্যাকার]() হিসেবে বর্ণনা করা হয়) আর্থিক পুরষ্কার দেওয়া জড়িত থাকে যে একটি স্মার্ট কন্ট্রাক্ট-এ দুর্বলতা আবিষ্কার করে এবং এটি ডেভেলপারদের কাছে প্রকাশ করে। বাগ বাউন্টিগুলো অডিটের মতোই কারণ এতে স্মার্ট কন্ট্রাক্ট-এ ত্রুটি খুঁজে পেতে অন্যদের সাহায্য চাওয়া জড়িত।
-প্রধান পার্থক্য হল বাগ বাউন্টি প্রোগ্রামগুলি বৃহত্তর ডেভেলপার/হ্যাকার সম্প্রদায়ের জন্য উন্মুক্ত এবং অনন্য দক্ষতা এবং অভিজ্ঞতা সহ বিস্তৃত শ্রেণীর নৈতিক হ্যাকার এবং স্বাধীন নিরাপত্তা পেশাদারদের আকর্ষণ করে। এটি স্মার্ট কন্ট্র্যাক্ট অডিটের চেয়ে একটি সুবিধা হতে পারে যা মূলত এমন দলগুলির উপর নির্ভর করে যাদের সীমিত বা সংকীর্ণ দক্ষতা থাকতে পারে।
+প্রধান পার্থক্য হলো যে বাগ বাউন্টি প্রোগ্রামগুলো বৃহত্তর ডেভেলপার/হ্যাকার কমিউনিটির জন্য উন্মুক্ত এবং অনন্য দক্ষতা ও অভিজ্ঞতাসম্পন্ন এথিক্যাল হ্যাকার এবং স্বাধীন নিরাপত্তা পেশাদারদের একটি বিস্তৃত শ্রেণিকে আকর্ষণ করে। এটি স্মার্ট কন্ট্রাক্ট অডিটের তুলনায় একটি সুবিধা হতে পারে যা মূলত এমন দলগুলোর উপর নির্ভর করে যাদের সীমিত বা সংকীর্ণ দক্ষতা থাকতে পারে।
-## টেস্টিং টুলস এবং লাইব্রেরি {#testing-tools-and-libraries}
+## টেস্টিং টুল এবং লাইব্রেরি {#testing-tools-and-libraries}
-### ইউনিট টেস্টিং টুলস {#unit-testing-tools}
+### ইউনিট টেস্টিং টুল {#unit-testing-tools}
-- **[solidity-coverage](https://github.com/sc-forks/solidity-coverage)** - _Solidity-তে লেখা স্মার্ট কন্ট্র্যাক্টের জন্য কোড কভারেজ টুল।_
+- **[solidity-coverage](https://github.com/sc-forks/solidity-coverage)** - _Solidity-তে লেখা স্মার্ট কন্ট্রাক্টগুলোর জন্য কোড কভারেজ টুল।_
-- **[Waffle](https://ethereum-waffle.readthedocs.io/en/latest/)** - _উন্নত স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্ট এবং টেস্টিংয়ের জন্য ফ্রেমওয়ার্ক (ethers.js-এর উপর ভিত্তি করে)।_
+- **[Waffle](https://ethereum-waffle.readthedocs.io/en/latest/)** - _উন্নত স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট এবং টেস্টিংয়ের জন্য ফ্রেমওয়ার্ক (ethers.js-এর উপর ভিত্তি করে)।_
-- **[Remix Tests](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** - _Solidity স্মার্ট কন্ট্র্যাক্ট টেস্টিং করার জন্য টুল। Remix IDE "Solidity Unit Testing" প্লাগইনের অধীনে কাজ করে যা একটি কন্ট্র্যাক্টের জন্য টেস্ট কেস লিখতে এবং চালাতে ব্যবহৃত হয়।_
+- **[Remix Tests](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** - _Solidity স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের জন্য টুল। Remix IDE "Solidity Unit Testing" প্লাগইনের অধীনে কাজ করে যা একটি কন্ট্রাক্ট-এর জন্য টেস্ট কেস লিখতে এবং চালাতে ব্যবহৃত হয়।_
-- **[OpenZeppelin Test Helpers](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** - _ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট টেস্টিংয়ের জন্য অ্যাসারশন লাইব্রেরি। নিশ্চিত করুন আপনার কন্ট্র্যাক্টগুলো প্রত্যাশা অনুযায়ী আচরণ করে!_
+- **[OpenZeppelin Test Helpers](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** - _ইথিরিয়াম স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের জন্য অ্যাসারশন লাইব্রেরি। নিশ্চিত করুন যে আপনার কন্ট্রাক্টগুলো প্রত্যাশা অনুযায়ী আচরণ করে!_
-- **[Brownie unit testing framework](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** - _ব্রাউনি পাইটেস্ট ব্যবহার করে, যা একটি বৈশিষ্ট্য-সমৃদ্ধ টেস্ট ফ্রেমওয়ার্ক যা আপনাকে ন্যূনতম কোড সহ ছোট টেস্ট লিখতে দেয়, বড় প্রকল্পগুলির জন্য ভালভাবে স্কেল করে এবং অত্যন্ত প্রসারণযোগ্য।_
+- **[Brownie unit testing framework](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** - _Brownie Pytest ব্যবহার করে, একটি বৈশিষ্ট্য-সমৃদ্ধ টেস্ট ফ্রেমওয়ার্ক যা আপনাকে ন্যূনতম কোডসহ ছোট টেস্ট লিখতে দেয়, বড় প্রজেক্টগুলোর জন্য ভালোভাবে স্কেল করে এবং অত্যন্ত এক্সটেন্ডেবল।_
-- **[Foundry Tests](https://github.com/foundry-rs/foundry/tree/master/crates/forge)** - _ফাউন্ড্রি ফোর্জ অফার করে, একটি দ্রুত এবং নমনীয় ইথেরিয়াম টেস্টিং ফ্রেমওয়ার্ক যা সাধারণ ইউনিট টেস্ট, গ্যাস অপ্টিমাইজেশন চেক এবং কন্ট্র্যাক্ট ফাজিং করতে সক্ষম।_
+- **[Foundry Tests](https://github.com/foundry-rs/foundry/tree/master/crates/forge)** - _Foundry Forge অফার করে, একটি দ্রুত এবং নমনীয় ইথিরিয়াম টেস্টিং ফ্রেমওয়ার্ক যা সাধারণ ইউনিট টেস্ট, গ্যাস অপ্টিমাইজেশন চেক এবং কন্ট্রাক্ট ফাজিং এক্সিকিউট করতে সক্ষম।_
-- **[Hardhat Tests](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** - _ethers.js, Mocha, এবং Chai-এর উপর ভিত্তি করে স্মার্ট কন্ট্র্যাক্ট টেস্টিংয়ের জন্য ফ্রেমওয়ার্ক।_
+- **[Hardhat Tests](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** - _ethers.js, Mocha, এবং Chai-এর উপর ভিত্তি করে স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের জন্য ফ্রেমওয়ার্ক।_
-- **[ApeWorx](https://docs.apeworx.io/ape/stable/userguides/testing.html)** - _ইথিরিয়াম ভার্চুয়াল মেশিনকে টার্গেট করে স্মার্ট কন্ট্র্যাক্টের জন্য পাইথন-ভিত্তিক ডেভেলপমেন্ট এবং টেস্টিং ফ্রেমওয়ার্ক।_
+- **[ApeWorx](https://docs.apeworx.io/ape/stable/userguides/testing.html)** - _ইথিরিয়াম ভার্চুয়াল মেশিন-কে টার্গেট করা স্মার্ট কন্ট্রাক্টগুলোর জন্য পাইথন-ভিত্তিক ডেভেলপমেন্ট এবং টেস্টিং ফ্রেমওয়ার্ক।_
-- **[Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** - _ইউনিট টেস্টিং এবং ফাজিংয়ের জন্য পাইথন-ভিত্তিক ফ্রেমওয়ার্ক, যা শক্তিশালী ডিবাগিং ক্ষমতা এবং ক্রস-চেইন টেস্টিং সমর্থন করে, সেরা ব্যবহারকারী অভিজ্ঞতা এবং পারফরম্যান্সের জন্য পাইটেস্ট এবং আনভিল ব্যবহার করে।_
+- **[Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** - _শক্তিশালী ডিবাগিং ক্ষমতা এবং ক্রস-চেইন টেস্টিং সাপোর্টসহ ইউনিট টেস্টিং এবং ফাজিংয়ের জন্য পাইথন-ভিত্তিক ফ্রেমওয়ার্ক, যা সেরা ব্যবহারকারীর অভিজ্ঞতা এবং পারফরম্যান্সের জন্য pytest এবং Anvil ব্যবহার করে।_
-### প্রপার্টি-ভিত্তিক টেস্টিং টুলস {#property-based-testing-tools}
+### প্রপার্টি-ভিত্তিক টেস্টিং টুল {#property-based-testing-tools}
-#### স্ট্যাটিক বিশ্লেষণ টুলস {#static-analysis-tools}
+#### স্ট্যাটিক অ্যানালাইসিস টুল {#static-analysis-tools}
-- **[Slither](https://github.com/crytic/slither)** - _দুর্বলতা খুঁজে বের করা, কোড বোঝা বাড়ানো এবং স্মার্ট কন্ট্র্যাক্টের জন্য কাস্টম বিশ্লেষণ লেখার জন্য পাইথন-ভিত্তিক সলিডিটি স্ট্যাটিক বিশ্লেষণ ফ্রেমওয়ার্ক।_
+- **[Slither](https://github.com/crytic/slither)** - _দুর্বলতা খুঁজে বের করতে, কোড বোঝার ক্ষমতা বাড়াতে এবং স্মার্ট কন্ট্রাক্টগুলোর জন্য কাস্টম বিশ্লেষণ লেখার জন্য পাইথন-ভিত্তিক Solidity স্ট্যাটিক অ্যানালাইসিস ফ্রেমওয়ার্ক।_
-- **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _Solidity স্মার্ট কন্ট্র্যাক্ট প্রোগ্রামিং ভাষার জন্য স্টাইল এবং নিরাপত্তা সেরা অনুশীলন প্রয়োগের জন্য লিন্টার।_
+- **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _Solidity স্মার্ট কন্ট্রাক্ট প্রোগ্রামিং ভাষার জন্য স্টাইল এবং নিরাপত্তা সর্বোত্তম অনুশীলনগুলো প্রয়োগ করার জন্য লিন্টার।_
-- **[Cyfrin Aderyn](https://cyfrin.io/tools/aderyn)** - _Rust-ভিত্তিক স্ট্যাটিক অ্যানালাইজার যা বিশেষভাবে Web3 স্মার্ট কন্ট্র্যাক্ট নিরাপত্তা এবং ডেভেলপমেন্টের জন্য ডিজাইন করা হয়েছে।_
+- **[Cyfrin Aderyn](https://cyfrin.io/tools/aderyn)** - _ওয়েব3 স্মার্ট কন্ট্রাক্ট নিরাপত্তা এবং ডেভেলপমেন্টের জন্য বিশেষভাবে ডিজাইন করা রাস্ট-ভিত্তিক স্ট্যাটিক অ্যানালাইজার।_
-- **[Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _দুর্বলতা এবং কোডের গুণমান ডিটেক্টর, কোড থেকে দরকারী তথ্য বের করার জন্য প্রিন্টার এবং কাস্টম সাবমডিউল লেখার সমর্থন সহ পাইথন-ভিত্তিক স্ট্যাটিক বিশ্লেষণ ফ্রেমওয়ার্ক।_
+- **[Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _দুর্বলতা এবং কোড কোয়ালিটি ডিটেক্টর, কোড থেকে দরকারী তথ্য বের করার জন্য প্রিন্টার এবং কাস্টম সাবমডিউল লেখার সাপোর্টসহ পাইথন-ভিত্তিক স্ট্যাটিক অ্যানালাইসিস ফ্রেমওয়ার্ক।_
-- **[Slippy](https://github.com/fvictorio/slippy)** - _Solidity-র জন্য একটি সহজ এবং শক্তিশালী লিন্টার।_
+- **[Slippy](https://github.com/fvictorio/slippy)** - _Solidity-এর জন্য একটি সহজ এবং শক্তিশালী লিন্টার।_
-#### ডাইনামিক বিশ্লেষণ টুলস {#dynamic-analysis-tools}
+#### ডাইনামিক অ্যানালাইসিস টুল {#dynamic-analysis-tools}
-- **[Echidna](https://github.com/crytic/echidna/)** - _প্রপার্টি-ভিত্তিক টেস্টিংয়ের মাধ্যমে স্মার্ট কন্ট্র্যাক্টে দুর্বলতা সনাক্ত করার জন্য দ্রুত কন্ট্র্যাক্ট ফাজার।_
+- **[Echidna](https://github.com/crytic/echidna/)** - _প্রপার্টি-ভিত্তিক টেস্টিংয়ের মাধ্যমে স্মার্ট কন্ট্রাক্টগুলোতে দুর্বলতা সনাক্ত করার জন্য দ্রুত কন্ট্রাক্ট ফাজার।_
-- **[Diligence Fuzzing](https://consensys.net/diligence/fuzzing/)** - _স্মার্ট কন্ট্র্যাক্ট কোডে প্রপার্টি লঙ্ঘন সনাক্ত করার জন্য স্বয়ংক্রিয় ফাজিং টুল।_
+- **[Diligence Fuzzing](https://consensys.net/diligence/fuzzing/)** - _স্মার্ট কন্ট্রাক্ট কোডে প্রপার্টি লঙ্ঘন সনাক্ত করার জন্য কার্যকর অটোমেটেড ফাজিং টুল।_
-- **[Manticore](https://manticore.readthedocs.io/en/latest/index.html)** - _EVM বাইটকোড বিশ্লেষণের জন্য ডাইনামিক সিম্বলিক এক্সিকিউশন ফ্রেমওয়ার্ক।_
+- **[Manticore](https://manticore.readthedocs.io/en/latest/index.html)** - _EVM বাইটকোড বিশ্লেষণ করার জন্য ডাইনামিক সিম্বলিক এক্সিকিউশন ফ্রেমওয়ার্ক।_
-- **[Mythril](https://github.com/ConsenSys/mythril-classic)** - _টেইন্ট বিশ্লেষণ, কনকোলিক বিশ্লেষণ এবং কন্ট্রোল ফ্লো চেকিং ব্যবহার করে কন্ট্র্যাক্টের দুর্বলতা সনাক্ত করার জন্য EVM বাইটকোড মূল্যায়ন টুল।_
+- **[Mythril](https://github.com/ConsenSys/mythril-classic)** - _টেইন্ট অ্যানালাইসিস, কনকোলিক অ্যানালাইসিস এবং কন্ট্রোল ফ্লো চেকিং ব্যবহার করে কন্ট্রাক্ট দুর্বলতা সনাক্ত করার জন্য EVM বাইটকোড অ্যাসেসমেন্ট টুল।_
-- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _স্ক্রিবল একটি স্পেসিফিকেশন ভাষা এবং রানটাইম ভেরিফিকেশন টুল যা আপনাকে স্মার্ট কন্ট্র্যাক্টগুলিকে এমন বৈশিষ্ট্যগুলির সাথে টীকা করতে দেয় যা আপনাকে ডিলিজেন্স ফাজিং বা মিথএক্স-এর মতো টুলস দিয়ে স্বয়ংক্রিয়ভাবে কন্ট্র্যাক্টগুলি পরীক্ষা করতে দেয়।_
+- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _Scribble হলো একটি স্পেসিফিকেশন ভাষা এবং রানটাইম ভেরিফিকেশন টুল যা আপনাকে প্রপার্টিগুলোর সাথে স্মার্ট কন্ট্রাক্টগুলো টীকা করতে দেয় যা আপনাকে Diligence Fuzzing বা MythX-এর মতো টুলগুলোর সাহায্যে স্বয়ংক্রিয়ভাবে কন্ট্রাক্টগুলো পরীক্ষা করতে দেয়।_
## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [বিভিন্ন টেস্টিং পণ্যের একটি সংক্ষিপ্ত বিবরণ এবং তুলনা](/developers/tutorials/guide-to-smart-contract-security-tools/) \_
-- [স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করার জন্য কীভাবে একিডনা ব্যবহার করবেন](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
-- [স্মার্ট কন্ট্র্যাক্ট বাগ খুঁজে পেতে কিভাবে Manticore ব্যবহার করবেন](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
-- [স্মার্ট কন্ট্র্যাক্ট বাগ খুঁজে পেতে কিভাবে Slither ব্যবহার করবেন](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
-- [টেস্টিংয়ের জন্য কীভাবে সলিডিটি কন্ট্র্যাক্ট মক করবেন](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
-- [ফাউন্ড্রি ব্যবহার করে সলিডিটিতে কীভাবে ইউনিট টেস্ট চালাবেন](https://www.rareskills.io/post/foundry-testing-solidity)
+- [বিভিন্ন টেস্টিং প্রোডাক্টের একটি ওভারভিউ এবং তুলনা](/developers/tutorials/guide-to-smart-contract-security-tools/) \_
+- [স্মার্ট কন্ট্রাক্ট টেস্টিং করতে কীভাবে Echidna ব্যবহার করবেন](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
+- [স্মার্ট কন্ট্রাক্ট-এর বাগ খুঁজে পেতে কীভাবে Manticore ব্যবহার করবেন](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
+- [স্মার্ট কন্ট্রাক্ট-এর বাগ খুঁজে পেতে কীভাবে Slither ব্যবহার করবেন](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+- [টেস্টিংয়ের জন্য কীভাবে Solidity কন্ট্রাক্ট মক করবেন](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
+- [Foundry ব্যবহার করে Solidity-তে কীভাবে ইউনিট টেস্ট চালাবেন](https://www.rareskills.io/post/foundry-testing-solidity)
## আরও পড়ুন {#further-reading}
-- [ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট টেস্টিংয়ের একটি গভীর নির্দেশিকা](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297)
-- [কীভাবে ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করবেন](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d)
-- [ডেভেলপারদের জন্য MolochDAO-এর ইউনিট টেস্টিং নির্দেশিকা](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide)
-- [কীভাবে একজন রকস্টারের মতো স্মার্ট কন্ট্র্যাক্ট পরীক্ষা করবেন](https://forum.openzeppelin.com/t/test-smart-contracts-like-a-rockstar/1001)
+- [ইথিরিয়াম স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের একটি গভীর গাইড](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297)
+- [কীভাবে ইথিরিয়াম স্মার্ট কন্ট্রাক্ট টেস্টিং করবেন](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d)
+- [ডেভেলপারদের জন্য MolochDAO-এর ইউনিট টেস্টিং গাইড](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide)
+- [কীভাবে একজন রকস্টারের মতো স্মার্ট কন্ট্রাক্ট টেস্টিং করবেন](https://forum.openzeppelin.com/t/test-smart-contracts-like-a-rockstar/1001)
+
+## টিউটোরিয়াল: ইথিরিয়াম-এ স্মার্ট কন্ট্রাক্ট টেস্টিং {#tutorials}
+
+- [একটি লোকাল, মাল্টি-ক্লায়েন্ট টেস্টনেট-এ কীভাবে একটি ডিএ্যাপ তৈরি এবং টেস্টিং করবেন](/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/) _– একটি লোকাল টেস্টনেট-এ একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা এবং টেস্ট করার ওয়াকথ্রু।_
+- [টেস্টিংয়ের জন্য কীভাবে Solidity স্মার্ট কন্ট্রাক্ট মক করবেন](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/) _– কীভাবে মক ডেটা ব্যবহার করতে হয় এবং ইউনিট টেস্টিং বাস্তবায়ন করতে হয় সে সম্পর্কে ইন্টারমিডিয়েট টিউটোরিয়াল।_
+- [স্মার্ট কন্ট্রাক্ট টেস্টিং করতে কীভাবে Echidna ব্যবহার করবেন](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/) _– ফাজিং এবং স্মার্ট কন্ট্রাক্ট টেস্টিংয়ের উন্নত পদ্ধতি।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/bn/developers/docs/smart-contracts/upgrading/index.md
index 1d10da24821..4905bf13461 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/upgrading/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/upgrading/index.md
@@ -1,165 +1,165 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করা"
-description: "ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টের জন্য আপগ্রেড প্যাটার্নের একটি সংক্ষিপ্ত বিবরণ"
+title: স্মার্ট কন্ট্রাক্ট আপগ্রেড করা
+description: ইথিরিয়াম স্মার্ট কন্ট্রাক্টের আপগ্রেড প্যাটার্নগুলোর একটি ওভারভিউ
lang: bn
---
-ইথেরিয়ামের স্মার্ট কন্ট্র্যাক্ট হলো স্ব-নির্বাহী প্রোগ্রাম যা Ethereum Virtual Machine (EVM)-এ চলে। এই প্রোগ্রামগুলো ডিজাইনের দ্বারা অপরিবর্তনীয়, যা কন্ট্র্যাক্ট স্থাপন করার পরে ব্যবসায়িক যুক্তিতে কোনো আপডেট করা থেকে বিরত রাখে।
+ইথিরিয়ামের স্মার্ট কন্ট্রাক্ট হলো স্বয়ংক্রিয়ভাবে নির্বাহিত প্রোগ্রাম যা ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)-এ রান করে। এই প্রোগ্রামগুলো ডিজাইনগতভাবেই ইমমিউটেবল, যা কন্ট্রাক্ট ডিপ্লয় হওয়ার পর এর বিজনেস লজিকে কোনো আপডেট করা প্রতিরোধ করে।
-যদিও স্মার্ট কন্ট্র্যাক্টের বিশ্বাসহীনতা, বিকেন্দ্রীকরণ এবং নিরাপত্তার জন্য অপরিবর্তনীয়তা প্রয়োজন, এটি কিছু ক্ষেত্রে একটি অসুবিধাও হতে পারে। উদাহরণস্বরূপ, অপরিবর্তনীয় কোড ডেভেলপারদের জন্য দুর্বল কন্ট্র্যাক্ট ঠিক করা অসম্ভব করে তুলতে পারে।
+যদিও স্মার্ট কন্ট্রাক্টের ট্রাস্টলেসনেস, ডিসেন্ট্রালাইজেশন এবং নিরাপত্তার জন্য ইমমিউটেবিলিটি প্রয়োজনীয়, কিছু ক্ষেত্রে এটি একটি অসুবিধাও হতে পারে। উদাহরণস্বরূপ, ইমমিউটেবল কোডের কারণে ডেভেলপারদের পক্ষে দুর্বল বা ত্রুটিপূর্ণ কন্ট্রাক্ট ঠিক করা অসম্ভব হয়ে যেতে পারে।
-যাইহোক, স্মার্ট কন্ট্র্যাক্ট উন্নত করার জন্য বর্ধিত গবেষণা বেশ কয়েকটি আপগ্রেড প্যাটার্নের প্রচলন ঘটিয়েছে। এই আপগ্রেড প্যাটার্নগুলো ডেভেলপারদের বিভিন্ন কন্ট্র্যাক্টে ব্যবসায়িক যুক্তি স্থাপন করে স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করতে সক্ষম করে (অপরিবর্তনীয়তা সংরক্ষণ করার সাথে সাথে)।
+তবে, স্মার্ট কন্ট্রাক্টের উন্নতির জন্য ক্রমবর্ধমান গবেষণার ফলে বেশ কয়েকটি আপগ্রেড প্যাটার্ন চালু হয়েছে। এই আপগ্রেড প্যাটার্নগুলো ডেভেলপারদের বিভিন্ন কন্ট্রাক্টে বিজনেস লজিক স্থাপন করে (ইমমিউটেবিলিটি বজায় রেখে) স্মার্ট কন্ট্রাক্ট আপগ্রেড করতে সক্ষম করে।
## পূর্বশর্ত {#prerequisites}
-আপনার [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/), [স্মার্ট কন্ট্র্যাক্টের অ্যানাটমি](/developers/docs/smart-contracts/anatomy/), এবং [Ethereum Virtual Machine (EVM)](/developers/docs/evm/) সম্পর্কে একটি ভালো ধারণা থাকা উচিত। এই গাইডটি আরও ধরে নেয় যে পাঠকদের স্মার্ট কন্ট্র্যাক্ট প্রোগ্রামিং সম্পর্কে ধারণা আছে।
+আপনার [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/), [স্মার্ট কন্ট্রাক্ট অ্যানাটমি](/developers/docs/smart-contracts/anatomy/) এবং [ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/) সম্পর্কে ভালো ধারণা থাকা উচিত। এই গাইডটি ধরে নেয় যে পাঠকদের স্মার্ট কন্ট্রাক্ট প্রোগ্রামিং সম্পর্কে ধারণা রয়েছে।
-## স্মার্ট কন্ট্র্যাক্ট আপগ্রেড কী? {#what-is-a-smart-contract-upgrade}
+## স্মার্ট কন্ট্রাক্ট আপগ্রেড কী? {#what-is-a-smart-contract-upgrade}
-একটি স্মার্ট কন্ট্র্যাক্ট আপগ্রেড হলো কন্ট্র্যাক্টের স্টেট সংরক্ষণ করে একটি স্মার্ট কন্ট্র্যাক্টের ব্যবসায়িক যুক্তির পরিবর্তন করা। এটা স্পষ্ট করা গুরুত্বপূর্ণ যে, বিশেষ করে স্মার্ট কন্ট্র্যাক্টের প্রসঙ্গে, আপগ্রেডযোগ্যতা এবং পরিবর্তনীয়তা একই জিনিস নয়।
+একটি স্মার্ট কন্ট্রাক্ট আপগ্রেড করার অর্থ হলো কন্ট্রাক্টের স্টেট বজায় রেখে এর বিজনেস লজিক পরিবর্তন করা। এটি স্পষ্ট করা গুরুত্বপূর্ণ যে আপগ্রেডযোগ্যতা (upgradeability) এবং পরিবর্তনযোগ্যতা (mutability) এক নয়, বিশেষ করে স্মার্ট কন্ট্রাক্টের প্রেক্ষাপটে।
-আপনি ইথেরিয়াম নেটওয়ার্কের কোনো ঠিকানায় স্থাপন করা প্রোগ্রাম এখনও পরিবর্তন করতে পারবেন না। কিন্তু যখন ব্যবহারকারীরা একটি স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করে তখন যে কোডটি নির্বাহ করা হয়, আপনি সেটি পরিবর্তন করতে পারেন।
+আপনি এখনও ইথিরিয়াম নেটওয়ার্ক-এর কোনো এডড্রেস-এ ডিপ্লয় করা প্রোগ্রাম পরিবর্তন করতে পারবেন না। তবে ব্যবহারকারীরা যখন কোনো স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করে তখন যে কোডটি এক্সিকিউট হয়, তা আপনি পরিবর্তন করতে পারেন।
-এটি নিম্নলিখিত পদ্ধতির মাধ্যমে করা যেতে পারে:
+এটি নিচের পদ্ধতিগুলোর মাধ্যমে করা যেতে পারে:
-1. একটি স্মার্ট কন্ট্র্যাক্টের একাধিক সংস্করণ তৈরি করা এবং পুরনো কন্ট্র্যাক্ট থেকে কন্ট্র্যাক্টের একটি নতুন ইনস্ট্যান্সে স্টেট (অর্থাৎ, ডেটা) স্থানান্তর করা।
+1. একটি স্মার্ট কন্ট্রাক্টের একাধিক সংস্করণ তৈরি করা এবং পুরানো কন্ট্রাক্ট থেকে নতুন কন্ট্রাক্টে স্টেট (অর্থাৎ, ডেটা) মাইগ্রেট করা।
-2. ব্যবসায়িক যুক্তি এবং স্টেট সংরক্ষণের জন্য পৃথক কন্ট্র্যাক্ট তৈরি করা।
+2. বিজনেস লজিক এবং স্টেট সংরক্ষণের জন্য আলাদা কন্ট্রাক্ট তৈরি করা।
-3. একটি অপরিবর্তনীয় প্রক্সি কন্ট্র্যাক্ট থেকে একটি পরিবর্তনযোগ্য লজিক কন্ট্র্যাক্টে ফাংশন কল অর্পণ করতে প্রক্সি প্যাটার্ন ব্যবহার করা।
+3. একটি ইমমিউটেবল প্রক্সি কন্ট্রাক্ট থেকে পরিবর্তনযোগ্য লজিক কন্ট্রাক্টে ফাংশন কল ডেলিগেট করার জন্য প্রক্সি প্যাটার্ন ব্যবহার করা।
-4. একটি অপরিবর্তনীয় প্রধান কন্ট্র্যাক্ট তৈরি করা যা নির্দিষ্ট ফাংশন নির্বাহ করার জন্য ফ্লেক্সিবল স্যাটেলাইট কন্ট্র্যাক্টের সাথে ইন্টারফেস করে এবং তার উপর নির্ভর করে।
+4. একটি ইমমিউটেবল মূল কন্ট্রাক্ট তৈরি করা যা নির্দিষ্ট ফাংশন এক্সিকিউট করার জন্য নমনীয় স্যাটেলাইট কন্ট্রাক্টগুলোর সাথে ইন্টারফেস করে এবং সেগুলোর ওপর নির্ভর করে।
-5. একটি প্রক্সি কন্ট্র্যাক্ট থেকে লজিক কন্ট্র্যাক্টে ফাংশন কল অর্পণ করার জন্য ডায়মন্ড প্যাটার্ন ব্যবহার করা।
+5. প্রক্সি কন্ট্রাক্ট থেকে লজিক কন্ট্রাক্টগুলোতে ফাংশন কল ডেলিগেট করার জন্য ডায়মন্ড প্যাটার্ন ব্যবহার করা।
-### আপগ্রেড প্রক্রিয়া #1: কন্ট্র্যাক্ট মাইগ্রেশন {#contract-migration}
+### আপগ্রেড মেকানিজম 1: কন্ট্রাক্ট মাইগ্রেশন {#contract-migration}
-কন্ট্র্যাক্ট মাইগ্রেশন ভার্সনিং-এর উপর ভিত্তি করে তৈরি—একই সফ্টওয়্যারের অনন্য স্টেট তৈরি এবং পরিচালনা করার ধারণা। কন্ট্র্যাক্ট মাইগ্রেশনের মধ্যে একটি বিদ্যমান স্মার্ট কন্ট্র্যাক্টের একটি নতুন ইনস্ট্যান্স স্থাপন করা এবং নতুন কন্ট্র্যাক্টে সংগ্রহস্থল এবং ব্যালেন্স স্থানান্তর করা অন্তর্ভুক্ত।
+কন্ট্রাক্ট মাইগ্রেশন ভার্সনিংয়ের ওপর ভিত্তি করে কাজ করে—যা একই সফটওয়্যারের ইউনিক স্টেট তৈরি এবং পরিচালনা করার একটি ধারণা। কন্ট্রাক্ট মাইগ্রেশনের মধ্যে বিদ্যমান স্মার্ট কন্ট্রাক্টের একটি নতুন ইনস্ট্যান্স ডিপ্লয় করা এবং নতুন কন্ট্রাক্টে স্টোরেজ ও ব্যালেন্স স্থানান্তর করা অন্তর্ভুক্ত।
-নতুন স্থাপিত কন্ট্র্যাক্টের একটি খালি সংগ্রহস্থল থাকবে, যা আপনাকে পুরনো কন্ট্র্যাক্ট থেকে ডেটা পুনরুদ্ধার করতে এবং এটি নতুন বাস্তবায়নে লিখতে দেবে। এরপরে, আপনাকে পুরনো কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করা সমস্ত কন্ট্র্যাক্ট আপডেট করতে হবে যাতে নতুন ঠিকানাটি প্রতিফলিত হয়।
+নতুন ডিপ্লয় করা কন্ট্রাক্টের স্টোরেজ খালি থাকবে, যা আপনাকে পুরানো কন্ট্রাক্ট থেকে ডেটা রিকভার করে নতুন ইমপ্লিমেন্টেশনে লেখার সুযোগ দেয়। এরপর, নতুন এডড্রেস প্রতিফলিত করার জন্য পুরানো কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করা সমস্ত কন্ট্রাক্ট আপডেট করতে হবে।
-কন্ট্র্যাক্ট মাইগ্রেশনের শেষ ধাপ হলো ব্যবহারকারীদের নতুন কন্ট্র্যাক্ট ব্যবহার শুরু করতে রাজি করানো। নতুন কন্ট্র্যাক্টের সংস্করণটি ব্যবহারকারীর ব্যালেন্স এবং ঠিকানাগুলো ধরে রাখবে, যা অপরিবর্তনীয়তা সংরক্ষণ করে। যদি এটি একটি টোকেন-ভিত্তিক কন্ট্র্যাক্ট হয়, তাহলে আপনাকে পুরনো কন্ট্র্যাক্টটি বাতিল করতে এবং নতুন কন্ট্র্যাক্টটি ব্যবহার করতে এক্সচেঞ্জগুলোর সাথেও যোগাযোগ করতে হবে।
+কন্ট্রাক্ট মাইগ্রেশনের শেষ ধাপ হলো ব্যবহারকারীদের নতুন কন্ট্রাক্ট ব্যবহারে স্যুইচ করতে রাজি করানো। নতুন কন্ট্রাক্ট সংস্করণটি ব্যবহারকারীর ব্যালেন্স এবং এডড্রেসগুলো ধরে রাখবে, যা ইমমিউটেবিলিটি বজায় রাখে। যদি এটি টোকেন-ভিত্তিক কন্ট্রাক্ট হয়, তবে পুরানো কন্ট্রাক্ট বাতিল করে নতুন কন্ট্রাক্ট ব্যবহার করার জন্য আপনাকে এক্সচেঞ্জগুলোর সাথেও যোগাযোগ করতে হবে।
-ব্যবহারকারীর ইন্টারঅ্যাকশনে বাধা না দিয়ে স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার জন্য কন্ট্র্যাক্ট মাইগ্রেশন একটি তুলনামূলকভাবে সহজ এবং নিরাপদ ব্যবস্থা। তবে, নতুন কন্ট্র্যাক্টে ব্যবহারকারীর সংগ্রহস্থল এবং ব্যালেন্স ম্যানুয়ালি স্থানান্তর করা সময়সাপেক্ষ এবং এতে উচ্চ গ্যাস খরচ হতে পারে।
+ব্যবহারকারীদের ইন্টারঅ্যাকশন ব্যাহত না করে স্মার্ট কন্ট্রাক্ট আপগ্রেড করার জন্য কন্ট্রাক্ট মাইগ্রেশন তুলনামূলকভাবে একটি সহজ এবং নিরাপদ উপায়। তবে, ম্যানুয়ালি ব্যবহারকারীর স্টোরেজ এবং ব্যালেন্স নতুন কন্ট্রাক্টে মাইগ্রেট করা সময়সাপেক্ষ এবং এতে উচ্চ গ্যাস খরচ হতে পারে।
-[কন্ট্র্যাক্ট মাইগ্রেশন সম্পর্কে আরও জানুন।](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)
+[কন্ট্রাক্ট মাইগ্রেশন সম্পর্কে আরও জানুন।](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)
-### আপগ্রেড প্রক্রিয়া #2: ডেটা পৃথকীকরণ {#data-separation}
+### আপগ্রেড মেকানিজম 2: ডেটা সেপারেশন {#data-separation}
-স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার আরেকটি পদ্ধতি হলো ব্যবসায়িক যুক্তি এবং ডেটা সংগ্রহস্থলকে পৃথক কন্ট্র্যাক্টে আলাদা করা। এর মানে হলো ব্যবহারকারীরা লজিক কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করে, যখন ডেটা সংগ্রহস্থল কন্ট্র্যাক্টে সংরক্ষণ করা হয়।
+স্মার্ট কন্ট্রাক্ট আপগ্রেড করার আরেকটি পদ্ধতি হলো বিজনেস লজিক এবং ডেটা স্টোরেজকে আলাদা কন্ট্রাক্টে বিভক্ত করা। এর মানে হলো ব্যবহারকারীরা লজিক কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করে, আর ডেটা স্টোরেজ কন্ট্রাক্টে সংরক্ষিত থাকে।
-লজিক কন্ট্র্যাক্টে সেই কোড থাকে যা ব্যবহারকারীরা অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করার সময় নির্বাহ করা হয়। এটি সংগ্রহস্থল কন্ট্র্যাক্টের ঠিকানাও ধরে রাখে এবং ডেটা পেতে ও সেট করতে এর সাথে ইন্টারঅ্যাক্ট করে।
+লজিক কন্ট্রাক্টে সেই কোড থাকে যা ব্যবহারকারীরা অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করার সময় এক্সিকিউট হয়। এটি স্টোরেজ কন্ট্রাক্টের এডড্রেসও ধারণ করে এবং ডেটা পেতে ও সেট করতে এর সাথে ইন্টারঅ্যাক্ট করে।
-এদিকে, সংগ্রহস্থল কন্ট্র্যাক্টটি স্মার্ট কন্ট্র্যাক্টের সাথে সম্পর্কিত স্টেট, যেমন ব্যবহারকারীর ব্যালেন্স এবং ঠিকানা, ধরে রাখে। মনে রাখবেন যে সংগ্রহস্থল কন্ট্র্যাক্টটি লজিক কন্ট্র্যাক্টের মালিকানাধীন এবং স্থাপনের সময় এটি লজিক কন্ট্র্যাক্টের ঠিকানা দিয়ে কনফিগার করা হয়। এটি অননুমোদিত কন্ট্র্যাক্টকে সংগ্রহস্থল কন্ট্র্যাক্টে কল করা বা এর ডেটা আপডেট করা থেকে বিরত রাখে।
+অন্যদিকে, স্টোরেজ কন্ট্রাক্ট স্মার্ট কন্ট্রাক্টের সাথে সম্পর্কিত স্টেট ধারণ করে, যেমন ব্যবহারকারীর ব্যালেন্স এবং এডড্রেস। মনে রাখবেন যে স্টোরেজ কন্ট্রাক্টটি লজিক কন্ট্রাক্টের মালিকানাধীন থাকে এবং ডিপ্লয়মেন্টের সময় লজিক কন্ট্রাক্টের এডড্রেস দিয়ে কনফিগার করা হয়। এটি অননুমোদিত কন্ট্রাক্টগুলোকে স্টোরেজ কন্ট্রাক্ট কল করা বা এর ডেটা আপডেট করা থেকে বিরত রাখে।
-ডিফল্টরূপে, সংগ্রহস্থল কন্ট্র্যাক্টটি অপরিবর্তনীয়—কিন্তু আপনি এটি যে লজিক কন্ট্র্যাক্টকে নির্দেশ করে তা একটি নতুন বাস্তবায়ন দিয়ে প্রতিস্থাপন করতে পারেন। এটি EVM-এ চালিত কোড পরিবর্তন করবে এবং সংগ্রহস্থল ও ব্যালেন্স অক্ষত রাখবে।
+ডিফল্টভাবে, স্টোরেজ কন্ট্রাক্ট ইমমিউটেবল—তবে এটি যে লজিক কন্ট্রাক্টকে নির্দেশ করে তা আপনি একটি নতুন ইমপ্লিমেন্টেশন দিয়ে প্রতিস্থাপন করতে পারেন। এটি EVM-এ রান করা কোড পরিবর্তন করবে, কিন্তু স্টোরেজ এবং ব্যালেন্স অক্ষুণ্ণ রাখবে।
-এই আপগ্রেড পদ্ধতি ব্যবহার করার জন্য সংগ্রহস্থল কন্ট্র্যাক্টে লজিক কন্ট্র্যাক্টের ঠিকানা আপডেট করতে হবে। পূর্বে ব্যাখ্যা করা কারণগুলোর জন্য আপনাকে অবশ্যই সংগ্রহস্থল কন্ট্র্যাক্টের ঠিকানা দিয়ে নতুন লজিক কন্ট্র্যাক্টটি কনফিগার করতে হবে।
+এই আপগ্রেড পদ্ধতি ব্যবহার করার জন্য স্টোরেজ কন্ট্রাক্টে লজিক কন্ট্রাক্টের এডড্রেস আপডেট করতে হবে। পূর্বে ব্যাখ্যা করা কারণগুলোর জন্য আপনাকে অবশ্যই নতুন লজিক কন্ট্রাক্টটিকে স্টোরেজ কন্ট্রাক্টের এডড্রেস দিয়ে কনফিগার করতে হবে।
-ডেটা পৃথকীকরণ প্যাটার্নটি কন্ট্র্যাক্ট মাইগ্রেশনের তুলনায় প্রয়োগ করা তর্কযোগ্যভাবে সহজ। তবে, ক্ষতিকারক আপগ্রেড থেকে স্মার্ট কন্ট্র্যাক্টকে রক্ষা করার জন্য আপনাকে একাধিক কন্ট্র্যাক্ট পরিচালনা করতে হবে এবং জটিল অনুমোদন স্কিম প্রয়োগ করতে হবে।
+কন্ট্রাক্ট মাইগ্রেশনের তুলনায় ডেটা সেপারেশন প্যাটার্ন বাস্তবায়ন করা তুলনামূলকভাবে সহজ। তবে, আপনাকে একাধিক কন্ট্রাক্ট পরিচালনা করতে হবে এবং ক্ষতিকারক আপগ্রেড থেকে স্মার্ট কন্ট্রাক্টগুলোকে রক্ষা করার জন্য জটিল অথোরাইজেশন স্কিম বাস্তবায়ন করতে হবে।
-### আপগ্রেড প্রক্রিয়া #3: প্রক্সি প্যাটার্ন {#proxy-patterns}
+### আপগ্রেড মেকানিজম 3: প্রক্সি প্যাটার্ন {#proxy-patterns}
-প্রক্সি প্যাটার্নও ব্যবসায়িক যুক্তি এবং ডেটাকে পৃথক কন্ট্র্যাক্টে রাখার জন্য ডেটা পৃথকীকরণ ব্যবহার করে। তবে, একটি প্রক্সি প্যাটার্নে, কোড নির্বাহের সময় সংগ্রহস্থল কন্ট্র্যাক্ট (যাকে প্রক্সি বলা হয়) লজিক কন্ট্র্যাক্টকে কল করে। এটি ডেটা পৃথকীকরণ পদ্ধতির বিপরীত, যেখানে লজিক কন্ট্র্যাক্ট সংগ্রহস্থল কন্ট্র্যাক্টকে কল করে।
+প্রক্সি প্যাটার্নও বিজনেস লজিক এবং ডেটাকে আলাদা কন্ট্রাক্টে রাখার জন্য ডেটা সেপারেশন ব্যবহার করে। তবে, প্রক্সি প্যাটার্নে স্টোরেজ কন্ট্রাক্ট (যাকে প্রক্সি বলা হয়) কোড এক্সিকিউশনের সময় লজিক কন্ট্রাক্টকে কল করে। এটি ডেটা সেপারেশন পদ্ধতির বিপরীত, যেখানে লজিক কন্ট্রাক্ট স্টোরেজ কন্ট্রাক্টকে কল করে।
-একটি প্রক্সি প্যাটার্নে যা ঘটে তা হলো:
+প্রক্সি প্যাটার্নে যা ঘটে তা হলো:
-1. ব্যবহারকারীরা প্রক্সি কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করে, যা ডেটা সংরক্ষণ করে, কিন্তু ব্যবসায়িক যুক্তি ধারণ করে না।
+1. ব্যবহারকারীরা প্রক্সি কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করে, যা ডেটা সংরক্ষণ করে, কিন্তু বিজনেস লজিক ধারণ করে না।
-2. প্রক্সি কন্ট্র্যাক্ট লজিক কন্ট্র্যাক্টের ঠিকানা সংরক্ষণ করে এবং `delegatecall` ফাংশন ব্যবহার করে সমস্ত ফাংশন কল লজিক কন্ট্র্যাক্টে (যা ব্যবসায়িক যুক্তি ধারণ করে) অর্পণ করে।
+2. প্রক্সি কন্ট্রাক্ট লজিক কন্ট্রাক্টের এডড্রেস সংরক্ষণ করে এবং `delegatecall` ফাংশন ব্যবহার করে সমস্ত ফাংশন কল লজিক কন্ট্রাক্টে (যা বিজনেস লজিক ধারণ করে) ডেলিগেট করে।
-3. কলটি লজিক কন্ট্র্যাক্টে ফরওয়ার্ড করার পরে, লজিক কন্ট্র্যাক্ট থেকে ফেরত আসা ডেটা পুনরুদ্ধার করা হয় এবং ব্যবহারকারীকে ফেরত দেওয়া হয়।
+3. কলটি লজিক কন্ট্রাক্টে ফরোয়ার্ড করার পর, লজিক কন্ট্রাক্ট থেকে রিটার্ন করা ডেটা পুনরুদ্ধার করে ব্যবহারকারীকে ফেরত দেওয়া হয়।
-প্রক্সি প্যাটার্ন ব্যবহার করার জন্য **delegatecall** ফাংশন সম্পর্কে বোঝার প্রয়োজন। মূলত, `delegatecall` হলো একটি অপকোড যা একটি কন্ট্র্যাক্টকে অন্য একটি কন্ট্র্যাক্ট কল করতে দেয়, যখন প্রকৃত কোড নির্বাহ কলিং কন্ট্র্যাক্টের প্রেক্ষাপটে ঘটে। প্রক্সি প্যাটার্নে `delegatecall` ব্যবহার করার একটি প্রভাব হলো যে প্রক্সি কন্ট্র্যাক্ট তার সংগ্রহস্থল থেকে পড়ে এবং লেখে এবং লজিক কন্ট্র্যাক্টে সংরক্ষিত যুক্তি নির্বাহ করে, যেন এটি একটি অভ্যন্তরীণ ফাংশন কল করছে।
+প্রক্সি প্যাটার্ন ব্যবহার করার জন্য **delegatecall** ফাংশন সম্পর্কে বোঝা প্রয়োজন। মূলত, `delegatecall` হলো একটি অপকোড যা একটি কন্ট্রাক্টকে অন্য একটি কন্ট্রাক্ট কল করার অনুমতি দেয়, যেখানে প্রকৃত কোড এক্সিকিউশন কলিং কন্ট্রাক্টের কনটেক্সটে ঘটে। প্রক্সি প্যাটার্নে `delegatecall` ব্যবহার করার একটি তাৎপর্য হলো যে প্রক্সি কন্ট্রাক্ট তার স্টোরেজে রিড এবং রাইট করে এবং লজিক কন্ট্রাক্টে সংরক্ষিত লজিক এমনভাবে এক্সিকিউট করে যেন এটি একটি ইন্টারনাল ফাংশন কল করছে।
-[Solidity ডকুমেন্টেশন](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries) থেকে:
+[সলিডিটি ডকুমেন্টেশন](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries) থেকে:
-> _মেসেজ কলের একটি বিশেষ ভ্যারিয়েন্ট রয়েছে, যার নাম **delegatecall**, যা একটি মেসেজ কলের মতোই, শুধুমাত্র এই तथ्यটি ছাড়া যে টার্গেট ঠিকানার কোডটি কলিং কন্ট্র্যাক্টের প্রেক্ষাপটে (অর্থাৎ, ঠিকানায়) নির্বাহ করা হয় এবং `msg.sender` ও `msg.value`-এর মান পরিবর্তন হয় না।_ _এর মানে হলো একটি কন্ট্র্যাক্ট রানটাইমে একটি ভিন্ন ঠিকানা থেকে ডাইনামিকভাবে কোড লোড করতে পারে।_ সংগ্রহস্থল, বর্তমান ঠিকানা এবং ব্যালেন্স এখনও কলিং কন্ট্র্যাক্টকে নির্দেশ করে, শুধুমাত্র কোডটি কল করা ঠিকানা থেকে নেওয়া হয়।_
+> _মেসেজ কলের একটি বিশেষ ভ্যারিয়েন্ট রয়েছে, যার নাম **delegatecall**, যা মেসেজ কলের মতোই, তবে পার্থক্য হলো টার্গেট এডড্রেসের কোডটি কলিং কন্ট্রাক্টের কনটেক্সটে (অর্থাৎ, এডড্রেসে) এক্সিকিউট হয় এবং `msg.sender` ও `msg.value` তাদের মান পরিবর্তন করে না।_ _এর মানে হলো একটি কন্ট্রাক্ট রানটাইমে ভিন্ন একটি এডড্রেস থেকে ডায়নামিকভাবে কোড লোড করতে পারে। স্টোরেজ, বর্তমান এডড্রেস এবং ব্যালেন্স এখনও কলিং কন্ট্রাক্টকেই নির্দেশ করে, শুধুমাত্র কোডটি কল করা এডড্রেস থেকে নেওয়া হয়।_
-প্রক্সি কন্ট্র্যাক্টটি জানে যে যখনই কোনো ব্যবহারকারী কোনো ফাংশন কল করে তখন `delegatecall` ইনভোক করতে হবে, কারণ এর মধ্যে একটি `fallback` ফাংশন বিল্ট-ইন রয়েছে। Solidity প্রোগ্রামিং-এ [ফলব্যাক ফাংশন](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function) তখনই নির্বাহ করা হয় যখন একটি ফাংশন কল কোনো কন্ট্র্যাক্টে নির্দিষ্ট করা ফাংশনগুলোর সাথে মেলে না।
+যখনই কোনো ব্যবহারকারী একটি ফাংশন কল করে, প্রক্সি কন্ট্রাক্ট জানে যে তাকে `delegatecall` ইনভোক করতে হবে কারণ এতে একটি `fallback` ফাংশন বিল্ট-ইন থাকে। সলিডিটি প্রোগ্রামিংয়ে [ফলব্যাক ফাংশন](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function) তখন এক্সিকিউট হয় যখন কোনো ফাংশন কল কন্ট্রাক্টে নির্দিষ্ট করা ফাংশনগুলোর সাথে মেলে না।
-প্রক্সি প্যাটার্ন কার্যকর করার জন্য একটি কাস্টম ফলব্যাক ফাংশন লেখা প্রয়োজন যা নির্দিষ্ট করে যে প্রক্সি কন্ট্র্যাক্টটি সমর্থন করে না এমন ফাংশন কলগুলো কীভাবে পরিচালনা করবে। এই ক্ষেত্রে প্রক্সির ফলব্যাক ফাংশনটি একটি delegatecall শুরু করার জন্য এবং ব্যবহারকারীর অনুরোধটি বর্তমান লজিক কন্ট্র্যাক্ট বাস্তবায়নে পুনরায় রুট করার জন্য প্রোগ্রাম করা হয়।
+প্রক্সি প্যাটার্ন কাজ করানোর জন্য একটি কাস্টম ফলব্যাক ফাংশন লিখতে হয় যা নির্দিষ্ট করে দেয় যে প্রক্সি কন্ট্রাক্ট কীভাবে সেই ফাংশন কলগুলো পরিচালনা করবে যা এটি সাপোর্ট করে না। এই ক্ষেত্রে প্রক্সির ফলব্যাক ফাংশনটি এমনভাবে প্রোগ্রাম করা হয় যাতে এটি একটি delegatecall শুরু করে এবং ব্যবহারকারীর রিকোয়েস্ট বর্তমান লজিক কন্ট্রাক্ট ইমপ্লিমেন্টেশনে রিরাউট করে।
-প্রক্সি কন্ট্র্যাক্টটি ডিফল্টরূপে অপরিবর্তনীয়, কিন্তু আপডেট করা ব্যবসায়িক যুক্তি সহ নতুন লজিক কন্ট্র্যাক্ট তৈরি করা যেতে পারে। আপগ্রেড করাটা তখন প্রক্সি কন্ট্র্যাক্টে উল্লেখিত লজিক কন্ট্র্যাক্টের ঠিকানা পরিবর্তন করার একটি ব্যাপার মাত্র।
+প্রক্সি কন্ট্রাক্ট ডিফল্টভাবে ইমমিউটেবল, তবে আপডেট করা বিজনেস লজিক সহ নতুন লজিক কন্ট্রাক্ট তৈরি করা যেতে পারে। এরপর আপগ্রেড করা মানে হলো প্রক্সি কন্ট্রাক্টে রেফারেন্স করা লজিক কন্ট্রাক্টের এডড্রেস পরিবর্তন করা।
-প্রক্সি কন্ট্র্যাক্টকে একটি নতুন লজিক কন্ট্র্যাক্টে নির্দেশ করার মাধ্যমে, ব্যবহারকারীরা যখন প্রক্সি কন্ট্র্যাক্ট ফাংশন কল করে তখন নির্বাহিত কোডটি পরিবর্তিত হয়। এটি আমাদেরকে ব্যবহারকারীদের একটি নতুন কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করতে না বলেই একটি কন্ট্র্যাক্টের যুক্তি আপগ্রেড করতে দেয়।
+প্রক্সি কন্ট্রাক্টকে একটি নতুন লজিক কন্ট্রাক্টের দিকে পয়েন্ট করার মাধ্যমে, ব্যবহারকারীরা প্রক্সি কন্ট্রাক্ট ফাংশন কল করার সময় যে কোডটি এক্সিকিউট হয় তা পরিবর্তিত হয়। এটি ব্যবহারকারীদের নতুন কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে না বলেই আমাদের একটি কন্ট্রাক্টের লজিক আপগ্রেড করার সুযোগ দেয়।
-প্রক্সি প্যাটার্ন স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার জন্য একটি জনপ্রিয় পদ্ধতি কারণ এটি কন্ট্র্যাক্ট মাইগ্রেশনের সাথে সম্পর্কিত অসুবিধাগুলো দূর করে। তবে, প্রক্সি প্যাটার্ন ব্যবহার করা আরও জটিল এবং ভুলভাবে ব্যবহার করা হলে [ফাংশন সিলেক্টর ক্ল্যাশ](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357)-এর মতো গুরুতর ত্রুটি সৃষ্টি করতে পারে।
+স্মার্ট কন্ট্রাক্ট আপগ্রেড করার জন্য প্রক্সি প্যাটার্ন একটি জনপ্রিয় পদ্ধতি কারণ এগুলো কন্ট্রাক্ট মাইগ্রেশনের সাথে যুক্ত অসুবিধাগুলো দূর করে। তবে, প্রক্সি প্যাটার্ন ব্যবহার করা বেশি জটিল এবং সঠিকভাবে ব্যবহার না করা হলে এটি [ফাংশন সিলেক্টর ক্ল্যাশ](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357)-এর মতো গুরুতর ত্রুটি তৈরি করতে পারে।
-[প্রক্সি প্যাটার্ন সম্পর্কে আরও জানুন।](https://blog.openzeppelin.com/proxy-patterns/)
+[প্রক্সি প্যাটার্ন সম্পর্কে আরও জানুন](https://blog.openzeppelin.com/proxy-patterns/)।
-### আপগ্রেড প্রক্রিয়া #4: স্ট্র্যাটেজি প্যাটার্ন {#strategy-pattern}
+### আপগ্রেড মেকানিজম 4: স্ট্র্যাটেজি প্যাটার্ন {#strategy-pattern}
-এই কৌশলটি [স্ট্র্যাটেজি প্যাটার্ন](https://en.wikipedia.org/wiki/Strategy_pattern) দ্বারা প্রভাবিত, যা নির্দিষ্ট বৈশিষ্ট্য প্রয়োগ করার জন্য অন্যান্য প্রোগ্রামের সাথে ইন্টারফেস করে এমন সফ্টওয়্যার প্রোগ্রাম তৈরি করতে উৎসাহিত করে। ইথেরিয়াম ডেভেলপমেন্টে স্ট্র্যাটেজি প্যাটার্ন প্রয়োগ করার অর্থ হলো এমন একটি স্মার্ট কন্ট্র্যাক্ট তৈরি করা যা অন্যান্য কন্ট্র্যাক্ট থেকে ফাংশন কল করে।
+এই কৌশলটি [স্ট্র্যাটেজি প্যাটার্ন](https://en.wikipedia.org/wiki/Strategy_pattern) দ্বারা প্রভাবিত, যা নির্দিষ্ট ফিচারগুলো বাস্তবায়নের জন্য অন্যান্য প্রোগ্রামের সাথে ইন্টারফেস করে এমন সফটওয়্যার প্রোগ্রাম তৈরি করতে উৎসাহিত করে। ইথিরিয়াম ডেভেলপমেন্টে স্ট্র্যাটেজি প্যাটার্ন প্রয়োগ করার অর্থ হলো এমন একটি স্মার্ট কন্ট্রাক্ট তৈরি করা যা অন্যান্য কন্ট্রাক্ট থেকে ফাংশন কল করে।
-এই ক্ষেত্রে প্রধান কন্ট্র্যাক্টটিতে মূল ব্যবসায়িক যুক্তি থাকে, কিন্তু এটি নির্দিষ্ট ফাংশন সম্পাদন করার জন্য অন্যান্য স্মার্ট কন্ট্র্যাক্টের ("স্যাটেলাইট কন্ট্র্যাক্ট") সাথে ইন্টারফেস করে। এই প্রধান কন্ট্র্যাক্টটি প্রতিটি স্যাটেলাইট কন্ট্র্যাক্টের ঠিকানা সংরক্ষণ করে এবং স্যাটেলাইট কন্ট্র্যাক্টের বিভিন্ন বাস্তবায়নের মধ্যে পরিবর্তন করতে পারে।
+এই ক্ষেত্রে মূল কন্ট্রাক্টে কোর বিজনেস লজিক থাকে, তবে নির্দিষ্ট ফাংশন এক্সিকিউট করার জন্য এটি অন্যান্য স্মার্ট কন্ট্রাক্টের ("স্যাটেলাইট কন্ট্রাক্ট") সাথে ইন্টারফেস করে। এই মূল কন্ট্রাক্টটি প্রতিটি স্যাটেলাইট কন্ট্রাক্টের এডড্রেসও সংরক্ষণ করে এবং স্যাটেলাইট কন্ট্রাক্টের বিভিন্ন ইমপ্লিমেন্টেশনের মধ্যে স্যুইচ করতে পারে।
-আপনি একটি নতুন স্যাটেলাইট কন্ট্র্যাক্ট তৈরি করতে পারেন এবং নতুন ঠিকানা দিয়ে প্রধান কন্ট্র্যাক্টটি কনফিগার করতে পারেন। এটি আপনাকে একটি স্মার্ট কন্ট্র্যাক্টের জন্য _স্ট্র্যাটেজি_ পরিবর্তন করতে (অর্থাৎ নতুন যুক্তি প্রয়োগ করতে) দেয়।
+আপনি একটি নতুন স্যাটেলাইট কন্ট্রাক্ট তৈরি করতে পারেন এবং নতুন এডড্রেস দিয়ে মূল কন্ট্রাক্টটি কনফিগার করতে পারেন। এটি আপনাকে একটি স্মার্ট কন্ট্রাক্টের জন্য _স্ট্র্যাটেজি_ পরিবর্তন করার (অর্থাৎ, নতুন লজিক ইমপ্লিমেন্ট করার) সুযোগ দেয়।
-যদিও এটি পূর্বে আলোচিত প্রক্সি প্যাটার্নের মতো, তবে স্ট্র্যাটেজি প্যাটার্নটি ভিন্ন কারণ প্রধান কন্ট্র্যাক্ট, যার সাথে ব্যবহারকারীরা ইন্টারঅ্যাক্ট করে, সেটি ব্যবসায়িক যুক্তি ধারণ করে। এই প্যাটার্নটি ব্যবহার করে আপনি মূল পরিকাঠামোকে প্রভাবিত না করে একটি স্মার্ট কন্ট্র্যাক্টে সীমিত পরিবর্তন আনার সুযোগ পান।
+পূর্বে আলোচিত প্রক্সি প্যাটার্নের মতো হলেও, স্ট্র্যাটেজি প্যাটার্নটি ভিন্ন কারণ মূল কন্ট্রাক্ট, যার সাথে ব্যবহারকারীরা ইন্টারঅ্যাক্ট করে, সেটি বিজনেস লজিক ধারণ করে। এই প্যাটার্নটি ব্যবহার করলে কোর ইনফ্রাস্ট্রাকচারকে প্রভাবিত না করেই স্মার্ট কন্ট্রাক্টে সীমিত পরিবর্তন আনার সুযোগ পাওয়া যায়।
-এর প্রধান অসুবিধা হলো এই প্যাটার্নটি বেশিরভাগ ক্ষেত্রে ছোটখাটো আপগ্রেড করার জন্য উপযোগী। এছাড়াও, যদি প্রধান কন্ট্র্যাক্টটি ক্ষতিগ্রস্ত হয় (যেমন, একটি হ্যাকের মাধ্যমে), আপনি এই আপগ্রেড পদ্ধতি ব্যবহার করতে পারবেন না।
+এর প্রধান অসুবিধা হলো এই প্যাটার্নটি মূলত ছোটখাটো আপগ্রেড রোল আউট করার জন্য বেশি কার্যকর। এছাড়া, যদি মূল কন্ট্রাক্টটি আপোসকৃত হয় (যেমন, হ্যাকের মাধ্যমে), তবে আপনি এই আপগ্রেড পদ্ধতি ব্যবহার করতে পারবেন না।
-### আপগ্রেড প্রক্রিয়া #5: ডায়মন্ড প্যাটার্ন {#diamond-pattern}
+### আপগ্রেড মেকানিজম 5: ডায়মন্ড প্যাটার্ন {#diamond-pattern}
-ডায়মন্ড প্যাটার্নকে প্রক্সি প্যাটার্নের একটি উন্নত সংস্করণ হিসেবে বিবেচনা করা যেতে পারে। ডায়মন্ড প্যাটার্নগুলো প্রক্সি প্যাটার্ন থেকে ভিন্ন কারণ ডায়মন্ড প্রক্সি কন্ট্র্যাক্ট একাধিক লজিক কন্ট্র্যাক্টে ফাংশন কল অর্পণ করতে পারে।
+ডায়মন্ড প্যাটার্নকে প্রক্সি প্যাটার্নের একটি উন্নত রূপ হিসেবে বিবেচনা করা যেতে পারে। ডায়মন্ড প্যাটার্ন প্রক্সি প্যাটার্ন থেকে আলাদা কারণ ডায়মন্ড প্রক্সি কন্ট্রাক্ট একাধিক লজিক কন্ট্রাক্টে ফাংশন কল ডেলিগেট করতে পারে।
-ডায়মন্ড প্যাটার্নে লজিক কন্ট্র্যাক্টগুলো _ফেসেট_ নামে পরিচিত। ডায়মন্ড প্যাটার্নটি কাজ করানোর জন্য, আপনাকে প্রক্সি কন্ট্র্যাক্টে একটি ম্যাপিং তৈরি করতে হবে যা বিভিন্ন ফেসেট ঠিকানায় [ফাংশন সিলেক্টর](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) ম্যাপ করে।
+ডায়মন্ড প্যাটার্নে লজিক কন্ট্রাক্টগুলো _ফ্যাসেট (facets)_ হিসেবে পরিচিত। ডায়মন্ড প্যাটার্ন কাজ করানোর জন্য, আপনাকে প্রক্সি কন্ট্রাক্টে একটি ম্যাপিং তৈরি করতে হবে যা [ফাংশন সিলেক্টরগুলোকে](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) বিভিন্ন ফ্যাসেট এডড্রেসের সাথে ম্যাপ করে।
-যখন একজন ব্যবহারকারী একটি ফাংশন কল করে, প্রক্সি কন্ট্র্যাক্ট সেই ফাংশনটি সম্পাদনের জন্য দায়ী ফেসেট খুঁজে বের করার জন্য ম্যাপিং পরীক্ষা করে। তারপর এটি `delegatecall` (ফলব্যাক ফাংশন ব্যবহার করে) ইনভোক করে এবং কলটি উপযুক্ত লজিক কন্ট্র্যাক্টে পুনঃনির্দেশিত করে।
+যখন কোনো ব্যবহারকারী একটি ফাংশন কল করে, প্রক্সি কন্ট্রাক্ট সেই ফাংশনটি এক্সিকিউট করার জন্য দায়ী ফ্যাসেটটি খুঁজে বের করতে ম্যাপিং চেক করে। এরপর এটি `delegatecall` ইনভোক করে (ফলব্যাক ফাংশন ব্যবহার করে) এবং কলটিকে উপযুক্ত লজিক কন্ট্রাক্টে রিডাইরেক্ট করে।
-প্রচলিত প্রক্সি আপগ্রেড প্যাটার্নের তুলনায় ডায়মন্ড আপগ্রেড প্যাটার্নের কিছু সুবিধা রয়েছে:
+প্রথাগত প্রক্সি আপগ্রেড প্যাটার্নের তুলনায় ডায়মন্ড আপগ্রেড প্যাটার্নের কিছু সুবিধা রয়েছে:
-1. এটি আপনাকে সমস্ত কোড পরিবর্তন না করে কন্ট্র্যাক্টের একটি ছোট অংশ আপগ্রেড করতে দেয়। আপগ্রেডের জন্য প্রক্সি প্যাটার্ন ব্যবহার করার জন্য একটি সম্পূর্ণ নতুন লজিক কন্ট্র্যাক্ট তৈরি করতে হয়, এমনকি ছোট আপগ্রেডের জন্যও।
+1. এটি আপনাকে সমস্ত কোড পরিবর্তন না করেই কন্ট্রাক্টের একটি ছোট অংশ আপগ্রেড করার অনুমতি দেয়। আপগ্রেডের জন্য প্রক্সি প্যাটার্ন ব্যবহার করলে ছোটখাটো আপগ্রেডের জন্যও সম্পূর্ণ নতুন লজিক কন্ট্রাক্ট তৈরি করতে হয়।
-2. সমস্ত স্মার্ট কন্ট্র্যাক্টের (প্রক্সি প্যাটার্নে ব্যবহৃত লজিক কন্ট্র্যাক্ট সহ) একটি 24KB আকারের সীমা রয়েছে, যা একটি সীমাবদ্ধতা হতে পারে—বিশেষ করে জটিল কন্ট্র্যাক্টের জন্য যার জন্য আরও ফাংশন প্রয়োজন। ডায়মন্ড প্যাটার্ন একাধিক লজিক কন্ট্র্যাক্টে ফাংশন বিভক্ত করে এই সমস্যার সমাধান করা সহজ করে তোলে।
+2. সমস্ত স্মার্ট কন্ট্রাক্টের (প্রক্সি প্যাটার্নে ব্যবহৃত লজিক কন্ট্রাক্ট সহ) 24KB সাইজ লিমিট থাকে, যা একটি সীমাবদ্ধতা হতে পারে—বিশেষ করে জটিল কন্ট্রাক্টগুলোর জন্য যেখানে আরও বেশি ফাংশন প্রয়োজন। ডায়মন্ড প্যাটার্ন একাধিক লজিক কন্ট্রাক্ট জুড়ে ফাংশনগুলোকে বিভক্ত করে এই সমস্যার সমাধান করা সহজ করে তোলে।
-3. প্রক্সি প্যাটার্নগুলো অ্যাক্সেস নিয়ন্ত্রণের জন্য একটি ক্যাচ-অল পদ্ধতি গ্রহণ করে। আপগ্রেড ফাংশনে অ্যাক্সেস থাকা একটি সত্তা _সম্পূর্ণ_ কন্ট্র্যাক্ট পরিবর্তন করতে পারে। কিন্তু ডায়মন্ড প্যাটার্ন একটি মডুলার অনুমতি পদ্ধতি সক্ষম করে, যেখানে আপনি সত্তাগুলোকে একটি স্মার্ট কন্ট্র্যাক্টের মধ্যে নির্দিষ্ট ফাংশন আপগ্রেড করতে সীমাবদ্ধ করতে পারেন।
+3. প্রক্সি প্যাটার্ন অ্যাক্সেস কন্ট্রোলের ক্ষেত্রে একটি ক্যাচ-অল (catch-all) পদ্ধতি গ্রহণ করে। আপগ্রেড ফাংশনে অ্যাক্সেস থাকা কোনো এনটিটি _সম্পূর্ণ_ কন্ট্রাক্ট পরিবর্তন করতে পারে। কিন্তু ডায়মন্ড প্যাটার্ন একটি মডুলার পারমিশন পদ্ধতি সক্ষম করে, যেখানে আপনি এনটিটিগুলোকে স্মার্ট কন্ট্রাক্টের মধ্যে নির্দিষ্ট ফাংশন আপগ্রেড করার মধ্যে সীমাবদ্ধ করতে পারেন।
-[ডায়মন্ড প্যাটার্ন সম্পর্কে আরও জানুন](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w)।
+[ডায়মন্ড প্যাটার্ন সম্পর্কে আরও জানুন](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w)।
-## স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার সুবিধা এবং অসুবিধা {#pros-and-cons-of-upgrading-smart-contracts}
+## স্মার্ট কন্ট্রাক্ট আপগ্রেড করার সুবিধা এবং অসুবিধা {#pros-and-cons-of-upgrading-smart-contracts}
-| যেসব বিষয়ে এর সুফল পাওয়া যায় | কনস |
-| ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
-| একটি স্মার্ট কন্ট্র্যাক্ট আপগ্রেড স্থাপনার পরবর্তী পর্যায়ে আবিষ্কৃত দুর্বলতাগুলো ঠিক করা সহজ করে তুলতে পারে। | স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করা কোডের অপরিবর্তনীয়তার ধারণাকে অস্বীকার করে, যা বিকেন্দ্রীকরণ এবং নিরাপত্তার উপর প্রভাব ফেলে। |
-| ডেভেলপাররা ডিসেন্ট্রালাইজড এপ্লিকেশনগুলোতে নতুন বৈশিষ্ট্য যোগ করতে লজিক আপগ্রেড ব্যবহার করতে পারেন। | ব্যবহারকারীদের অবশ্যই ডেভেলপারদের উপর বিশ্বাস রাখতে হবে যেন তারা ইচ্ছামত স্মার্ট কন্ট্র্যাক্ট পরিবর্তন না করে। |
-| স্মার্ট কন্ট্র্যাক্ট আপগ্রেডগুলো শেষ-ব্যবহারকারীদের জন্য নিরাপত্তা উন্নত করতে পারে কারণ বাগগুলো দ্রুত ঠিক করা যায়। | স্মার্ট কন্ট্র্যাক্টে আপগ্রেড কার্যকারিতা প্রোগ্রামিং করা জটিলতার আরও একটি স্তর যোগ করে এবং গুরুতর ত্রুটির সম্ভাবনা বাড়িয়ে তোলে। |
-| কন্ট্র্যাক্ট আপগ্রেড ডেভেলপারদের বিভিন্ন বৈশিষ্ট্য নিয়ে পরীক্ষা করার এবং সময়ের সাথে সাথে ডিএ্যাপস উন্নত করার জন্য আরও সুযোগ দেয়। | স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার সুযোগ ডেভেলপারদেরকে ডেভেলপমেন্ট পর্যায়ে যথাযথ সতর্কতা অবলম্বন না করেই দ্রুত প্রকল্প চালু করতে উৎসাহিত করতে পারে। |
-| | স্মার্ট কন্ট্র্যাক্টে নিরাপত্তাহীন অ্যাক্সেস কন্ট্রোল বা কেন্দ্রীকরণ ক্ষতিকারক অভিনেতাদের জন্য অননুমোদিত আপগ্রেড করা সহজ করে তুলতে পারে। |
+| সুবিধা | অসুবিধা |
+| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| একটি স্মার্ট কন্ট্রাক্ট আপগ্রেড ডিপ্লয়মেন্ট-পরবর্তী পর্যায়ে আবিষ্কৃত দুর্বলতাগুলো ঠিক করা সহজ করে তুলতে পারে। | স্মার্ট কন্ট্রাক্ট আপগ্রেড করা কোড ইমমিউটেবিলিটির ধারণাকে বাতিল করে দেয়, যার প্রভাব ডিসেন্ট্রালাইজেশন এবং নিরাপত্তার ওপর পড়ে। |
+| ডেভেলপাররা ডিসেন্ট্রালাইজড এপ্লিকেশন-এ নতুন ফিচার যোগ করতে লজিক আপগ্রেড ব্যবহার করতে পারেন। | ব্যবহারকারীদের অবশ্যই ডেভেলপারদের বিশ্বাস করতে হবে যে তারা ইচ্ছামতো স্মার্ট কন্ট্রাক্ট পরিবর্তন করবেন না। |
+| স্মার্ট কন্ট্রাক্ট আপগ্রেড এন্ড-ইউজারদের জন্য নিরাপত্তা উন্নত করতে পারে কারণ বাগগুলো দ্রুত ঠিক করা যায়। | স্মার্ট কন্ট্রাক্টে আপগ্রেড কার্যকারিতা প্রোগ্রাম করা জটিলতার আরেকটি স্তর যোগ করে এবং গুরুতর ত্রুটির সম্ভাবনা বাড়ায়। |
+| কন্ট্রাক্ট আপগ্রেড ডেভেলপারদের বিভিন্ন ফিচার নিয়ে পরীক্ষা-নিরীক্ষা করার এবং সময়ের সাথে সাথে ডিএ্যাপস উন্নত করার আরও সুযোগ দেয়। | স্মার্ট কন্ট্রাক্ট আপগ্রেড করার সুযোগ ডেভেলপারদের ডেভেলপমেন্ট পর্যায়ে যথাযথ সতর্কতা অবলম্বন না করেই দ্রুত প্রজেক্ট লঞ্চ করতে উৎসাহিত করতে পারে। |
+| | স্মার্ট কন্ট্রাক্টে অনিরাপদ অ্যাক্সেস কন্ট্রোল বা সেন্ট্রালাইজেশন ক্ষতিকারক অ্যাক্টরদের জন্য অননুমোদিত আপগ্রেড করা সহজ করে তুলতে পারে। |
-## স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার জন্য বিবেচনা {#considerations-for-upgrading-smart-contracts}
+## স্মার্ট কন্ট্রাক্ট আপগ্রেড করার ক্ষেত্রে বিবেচ্য বিষয়গুলো {#considerations-for-upgrading-smart-contracts}
-1. অননুমোদিত স্মার্ট কন্ট্র্যাক্ট আপগ্রেড প্রতিরোধ করতে নিরাপদ অ্যাক্সেস নিয়ন্ত্রণ/অনুমোদন প্রক্রিয়া ব্যবহার করুন, বিশেষ করে যদি প্রক্সি প্যাটার্ন, স্ট্র্যাটেজি প্যাটার্ন, বা ডেটা সেপারেশন ব্যবহার করেন। একটি উদাহরণ হলো আপগ্রেড ফাংশনে অ্যাক্সেস সীমাবদ্ধ করা, যাতে শুধুমাত্র কন্ট্র্যাক্টের মালিকই এটি কল করতে পারে।
+1. অননুমোদিত স্মার্ট কন্ট্রাক্ট আপগ্রেড প্রতিরোধ করতে নিরাপদ অ্যাক্সেস কন্ট্রোল/অথোরাইজেশন মেকানিজম ব্যবহার করুন, বিশেষ করে যদি প্রক্সি প্যাটার্ন, স্ট্র্যাটেজি প্যাটার্ন বা ডেটা সেপারেশন ব্যবহার করেন। এর একটি উদাহরণ হলো আপগ্রেড ফাংশনে অ্যাক্সেস সীমাবদ্ধ করা, যাতে শুধুমাত্র কন্ট্রাক্টের মালিক এটি কল করতে পারে।
-2. স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করা একটি জটিল কার্যকলাপ এবং দুর্বলতা সৃষ্টি রোধ করার জন্য উচ্চ স্তরের সতর্কতা প্রয়োজন।
+2. স্মার্ট কন্ট্রাক্ট আপগ্রেড করা একটি জটিল কাজ এবং দুর্বলতা তৈরি হওয়া রোধ করতে উচ্চ স্তরের সতর্কতা প্রয়োজন।
-3. আপগ্রেড বাস্তবায়নের প্রক্রিয়াকে বিকেন্দ্রীকরণ করে বিশ্বাসের অনুমান হ্রাস করুন। সম্ভাব্য কৌশলগুলোর মধ্যে রয়েছে আপগ্রেড নিয়ন্ত্রণের জন্য একটি [মাল্টি-সিগ ওয়ালেট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/#multisig) ব্যবহার করা, অথবা আপগ্রেড অনুমোদনের জন্য একটি [DAO-এর সদস্যদের](/dao/) ভোট দেওয়ার প্রয়োজন।
+3. আপগ্রেড বাস্তবায়নের প্রক্রিয়াটি ডিসেন্ট্রালাইজড করে ট্রাস্ট অ্যাসাম্পশন হ্রাস করুন। সম্ভাব্য কৌশলগুলোর মধ্যে রয়েছে আপগ্রেড নিয়ন্ত্রণ করতে একটি [মাল্টিসিগ ওয়ালেট কন্ট্রাক্ট](/developers/docs/smart-contracts/#multisig) ব্যবহার করা, অথবা আপগ্রেড অনুমোদনের জন্য [DAO-এর সদস্যদের](/dao/) ভোট দেওয়ার প্রয়োজন করা।
-4. কন্ট্র্যাক্ট আপগ্রেড করার সাথে জড়িত খরচ সম্পর্কে সচেতন থাকুন। উদাহরণস্বরূপ, কন্ট্র্যাক্ট মাইগ্রেশনের সময় একটি পুরানো কন্ট্র্যাক্ট থেকে একটি নতুন কন্ট্র্যাক্টে স্টেট (যেমন ব্যবহারকারীর ব্যালেন্স) অনুলিপি করতে একাধিক লেনদেনের প্রয়োজন হতে পারে, যার অর্থ আরও বেশি গ্যাস ফি।
+4. কন্ট্রাক্ট আপগ্রেড করার সাথে জড়িত খরচ সম্পর্কে সচেতন থাকুন। উদাহরণস্বরূপ, কন্ট্রাক্ট মাইগ্রেশনের সময় পুরানো কন্ট্রাক্ট থেকে নতুন কন্ট্রাক্টে স্টেট (যেমন, ব্যবহারকারীর ব্যালেন্স) কপি করার জন্য একাধিক লেনদেন-এর প্রয়োজন হতে পারে, যার অর্থ হলো আরও বেশি গ্যাস ফি।
-5. ব্যবহারকারীদের সুরক্ষার জন্য **টাইমলক** বাস্তবায়নের কথা বিবেচনা করুন। টাইমলক বলতে একটি সিস্টেমে পরিবর্তনের উপর প্রয়োগ করা একটি বিলম্বকে বোঝায়। আপগ্রেড নিয়ন্ত্রণের জন্য টাইমলক একটি মাল্টি-সিগ গভর্নেন্স সিস্টেমের সাথে মিলিত হতে পারে: যদি একটি প্রস্তাবিত পদক্ষেপ প্রয়োজনীয় অনুমোদনের থ্রেশহোল্ডে পৌঁছায়, তবে পূর্বনির্ধারিত বিলম্বের সময় শেষ না হওয়া পর্যন্ত এটি কার্যকর হয় না।
+5. ব্যবহারকারীদের সুরক্ষার জন্য **টাইমলক (timelocks)** বাস্তবায়নের কথা বিবেচনা করুন। টাইমলক বলতে কোনো সিস্টেমে পরিবর্তনের ওপর প্রয়োগ করা বিলম্বকে বোঝায়। আপগ্রেড নিয়ন্ত্রণ করতে টাইমলকগুলোকে একটি মাল্টিসিগ গভর্নেন্স সিস্টেমের সাথে যুক্ত করা যেতে পারে: যদি কোনো প্রস্তাবিত পদক্ষেপ প্রয়োজনীয় অনুমোদনের থ্রেশহোল্ডে পৌঁছায়, তবে পূর্বনির্ধারিত বিলম্বের সময়কাল শেষ না হওয়া পর্যন্ত এটি এক্সিকিউট হয় না।
-টাইমলক ব্যবহারকারীদের সিস্টেম থেকে বেরিয়ে যাওয়ার জন্য কিছু সময় দেয় যদি তারা প্রস্তাবিত পরিবর্তনের সাথে একমত না হয় (যেমন, লজিক আপগ্রেড বা নতুন ফি স্কিম)। টাইমলক ছাড়া, ব্যবহারকারীদের ডেভেলপারদের উপর বিশ্বাস করতে হবে যে তারা পূর্ব নোটিশ ছাড়াই একটি স্মার্ট কন্ট্র্যাক্টে ইচ্ছামত পরিবর্তন করবে না। এর অসুবিধা হলো টাইমলক দ্রুত দুর্বলতা প্যাচ করার ক্ষমতাকে সীমাবদ্ধ করে।
+টাইমলক ব্যবহারকারীদের সিস্টেম থেকে বেরিয়ে যাওয়ার জন্য কিছু সময় দেয় যদি তারা কোনো প্রস্তাবিত পরিবর্তনের (যেমন, লজিক আপগ্রেড বা নতুন ফি স্কিম) সাথে একমত না হয়। টাইমলক ছাড়া, ব্যবহারকারীদের ডেভেলপারদের বিশ্বাস করতে হয় যে তারা পূর্ব নোটিশ ছাড়াই স্মার্ট কন্ট্রাক্টে ইচ্ছামতো পরিবর্তন আনবেন না। এখানকার অসুবিধা হলো টাইমলকগুলো দ্রুত দুর্বলতাগুলো প্যাচ করার ক্ষমতাকে সীমাবদ্ধ করে।
## রিসোর্স {#resources}
-**OpenZeppelin আপগ্রেড প্লাগইন - _আপগ্রেডযোগ্য স্মার্ট কন্ট্র্যাক্ট স্থাপন এবং সুরক্ষিত করার জন্য একটি টুলস স্যুট।_**
+**OpenZeppelin Upgrades Plugins - _আপগ্রেডযোগ্য স্মার্ট কন্ট্রাক্ট ডিপ্লয় এবং সুরক্ষিত করার জন্য টুলের একটি স্যুট।_**
-- [GitHub](https://github.com/OpenZeppelin/openzeppelin-upgrades)
-- [নথিপত্র](https://docs.openzeppelin.com/upgrades)
+- [গিটহাব (GitHub)](https://github.com/OpenZeppelin/openzeppelin-upgrades)
+- [ডকুমেন্টেশন](https://docs.openzeppelin.com/upgrades)
## টিউটোরিয়াল {#tutorials}
-- প্যাট্রিক কলিন্সের [আপনার স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করা | ইউটিউব টিউটোরিয়াল](https://www.youtube.com/watch?v=bdXJmWajZRY)
-- অস্টিন গ্রিফিথের [ইথেরিয়াম স্মার্ট কন্ট্র্যাক্ট মাইগ্রেশন টিউটোরিয়াল](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd)
-- [স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার জন্য UUPS প্রক্সি প্যাটার্ন ব্যবহার করা](https://blog.logrocket.com/author/praneshas/) - লেখক প্রনেশ এ.এস
-- [Web3 টিউটোরিয়াল: OpenZeppelin ব্যবহার করে আপগ্রেডযোগ্য স্মার্ট কন্ট্র্যাক্ট (প্রক্সি) লিখুন](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) - লেখক fangjun.eth
+- [Upgrading your Smart Contracts | YouTube Tutorial](https://www.youtube.com/watch?v=bdXJmWajZRY) - Patrick Collins
+- [Ethereum Smart Contract Migration Tutorial](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd) - Austin Griffith
+- [Using the UUPS proxy pattern to upgrade smart contracts](https://blog.logrocket.com/author/praneshas/) - Pranesh A.S
+- [Web3 Tutorial: Write upgradeable smart contract (proxy) using OpenZeppelin](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) - fangjun.eth
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- সান্তিয়াগো প্যালাডিনোর [দ্য স্টেট অফ স্মার্ট কন্ট্র্যাক্ট আপগ্রেডস](https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/)
-- [একটি সলিডিটি স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করার একাধিক উপায়](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/) - ক্রিপ্টো মার্কেট পুল ব্লগ
-- [শিখুন: স্মার্ট কন্ট্র্যাক্ট আপগ্রেড করা](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) - OpenZeppelin ডক্স
-- [সলিডিটি কন্ট্র্যাক্টসের আপগ্রেডযোগ্যতার জন্য প্রক্সি প্যাটার্নস: ট্রান্সপারেন্ট বনাম UUPS প্রক্সি](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) - লেখক নবীন সাহু
-- নিক মুজের [ডায়মন্ড আপগ্রেড কীভাবে কাজ করে](https://dev.to/mudgen/how-diamond-upgrades-work-417j)
+- [The State of Smart Contract Upgrades](https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/) - Santiago Palladino
+- [Multiple ways to upgrade a Solidity smart contract](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/) - Crypto Market Pool ব্লগ
+- [Learn: Upgrading Smart Contracts](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) - OpenZeppelin ডক্স
+- [Proxy Patterns For Upgradeability Of Solidity Contracts: Transparent vs UUPS Proxies](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) - Naveen Sahu
+- [How Diamond Upgrades Work](https://dev.to/mudgen/how-diamond-upgrades-work-417j) - Nick Mudge
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/bn/developers/docs/smart-contracts/verifying/index.md
index 709fea47c2e..5ba7c036766 100644
--- a/public/content/translations/bn/developers/docs/smart-contracts/verifying/index.md
+++ b/public/content/translations/bn/developers/docs/smart-contracts/verifying/index.md
@@ -1,113 +1,113 @@
---
-title: "স্মার্ট কন্ট্র্যাক্ট যাচাই করা"
-description: "ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টের জন্য সোর্স কোড যাচাইকরণের একটি সংক্ষিপ্ত বিবরণ"
+title: স্মার্ট কন্ট্রাক্ট যাচাইকরণ
+description: ইথিরিয়াম স্মার্ট কন্ট্রাক্টের সোর্স কোড যাচাইকরণের একটি ওভারভিউ
lang: bn
---
-[স্মার্ট কন্ট্র্যাক্টগুলি](/developers/docs/smart-contracts/) “ট্রাস্টলেস” হওয়ার জন্য ডিজাইন করা হয়েছে, যার অর্থ ব্যবহারকারীদের একটি কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করার আগে তৃতীয় পক্ষের (যেমন, ডেভেলপার এবং কোম্পানি) উপর বিশ্বাস করার প্রয়োজন নেই। ট্রাস্টলেসনেসের জন্য একটি পূর্বশর্ত হিসাবে, ব্যবহারকারী এবং অন্যান্য ডেভেলপারদের অবশ্যই একটি স্মার্ট কন্ট্র্যাক্টের সোর্স কোড যাচাই করতে সক্ষম হতে হবে। সোর্স কোড যাচাইকরণ ব্যবহারকারী এবং ডেভেলপারদের নিশ্চিত করে যে প্রকাশিত কন্ট্র্যাক্ট কোডটি ইথেরিয়াম ব্লকচেইনে কন্ট্র্যাক্ট অ্যাড্রেসে চলমান একই কোড।
+[স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) "ট্রাস্টলেস" বা আস্থাহীন হওয়ার জন্য ডিজাইন করা হয়েছে, যার অর্থ হলো কোনো কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করার আগে ব্যবহারকারীদের তৃতীয় পক্ষের (যেমন, ডেভেলপার এবং কোম্পানি) ওপর আস্থা রাখতে হবে না। ট্রাস্টলেসনেসের একটি পূর্বশর্ত হিসেবে, ব্যবহারকারী এবং অন্যান্য ডেভেলপারদের অবশ্যই একটি স্মার্ট কন্ট্রাক্টের সোর্স কোড যাচাই করতে সক্ষম হতে হবে। সোর্স কোড যাচাইকরণ ব্যবহারকারী এবং ডেভেলপারদের আশ্বস্ত করে যে প্রকাশিত কন্ট্রাক্ট কোডটি ইথিরিয়াম ব্লকচেইন-এ কন্ট্রাক্ট এডড্রেস-এ চলা কোডের মতোই।
-"সোর্স কোড যাচাইকরণ" এবং "[প্রথাগত যাচাইকরণ](/developers/docs/smart-contracts/formal-verification/)"-এর মধ্যে পার্থক্য করা গুরুত্বপূর্ণ। সোর্স কোড যাচাইকরণ, যা নীচে বিস্তারিতভাবে ব্যাখ্যা করা হবে, এটি একটি উচ্চ-স্তরের ভাষায় (যেমন, সলিডিটি) একটি স্মার্ট কন্ট্র্যাক্টের প্রদত্ত সোর্স কোডটি কন্ট্র্যাক্ট অ্যাড্রেসে কার্যকর করার জন্য একই বাইটকোডে কম্পাইল করা হয়েছে কিনা তা যাচাই করাকে বোঝায়। তবে, প্রথাগত যাচাইকরণ একটি স্মার্ট কন্ট্র্যাক্টের সঠিকতা যাচাই করার বর্ণনা দেয়, যার অর্থ কন্ট্র্যাক্টটি প্রত্যাশা অনুযায়ী আচরণ করে। যদিও প্রসঙ্গ-নির্ভর, কন্ট্র্যাক্ট যাচাইকরণ সাধারণত সোর্স কোড যাচাইকরণকে বোঝায়।
+"সোর্স কোড যাচাইকরণ" এবং "[ফরমাল ভেরিফিকেশন](/developers/docs/smart-contracts/formal-verification/)"-এর মধ্যে পার্থক্য করা গুরুত্বপূর্ণ। সোর্স কোড যাচাইকরণ, যা নিচে বিস্তারিতভাবে ব্যাখ্যা করা হবে, বলতে বোঝায় যে একটি হাই-লেভেল ভাষায় (যেমন, Solidity) স্মার্ট কন্ট্রাক্টের দেওয়া সোর্স কোডটি কন্ট্রাক্ট এডড্রেস-এ এক্সিকিউট করার জন্য একই বাইটকোডে কম্পাইল হয় কিনা তা যাচাই করা। তবে, ফরমাল ভেরিফিকেশন একটি স্মার্ট কন্ট্রাক্টের সঠিকতা যাচাই করাকে বর্ণনা করে, যার অর্থ কন্ট্রাক্টটি প্রত্যাশা অনুযায়ী আচরণ করে। যদিও এটি প্রসঙ্গের ওপর নির্ভরশীল, কন্ট্রাক্ট যাচাইকরণ বলতে সাধারণত সোর্স কোড যাচাইকরণকেই বোঝায়।
## সোর্স কোড যাচাইকরণ কী? {#what-is-source-code-verification}
-[Ethereum Virtual Machine (EVM)](/developers/docs/evm/)-এ একটি স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করার আগে, ডেভেলপাররা কন্ট্র্যাক্টের সোর্স কোড—[Solidity-তে লেখা](/developers/docs/smart-contracts/languages/) নির্দেশাবলী বা অন্য কোনো উচ্চ-স্তরের প্রোগ্রামিং ভাষা—[কম্পাইল করে](/developers/docs/smart-contracts/compiling/) বাইটকোডে রূপান্তর করে। যেহেতু EVM উচ্চ-স্তরের নির্দেশাবলী বুঝতে পারে না, তাই EVM-এ কন্ট্র্যাক্টের যুক্তি কার্যকর করার জন্য সোর্স কোডকে বাইটকোডে (অর্থাৎ, নিম্ন-স্তরের, মেশিনের নির্দেশাবলী) কম্পাইল করা প্রয়োজন।
+[ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/)-এ একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার আগে, ডেভেলপাররা কন্ট্রাক্টের সোর্স কোড—[Solidity-তে লেখা](/developers/docs/smart-contracts/languages/) বা অন্য কোনো হাই-লেভেল প্রোগ্রামিং ভাষার নির্দেশাবলী—বাইটকোডে [কম্পাইল](/developers/docs/smart-contracts/compiling/) করেন। যেহেতু EVM হাই-লেভেল নির্দেশাবলী বুঝতে পারে না, তাই EVM-এ কন্ট্রাক্ট লজিক এক্সিকিউট করার জন্য সোর্স কোডকে বাইটকোডে (অর্থাৎ, লো-লেভেল, মেশিন নির্দেশাবলী) কম্পাইল করা প্রয়োজন।
-সোর্স কোড যাচাইকরণ হলো একটি স্মার্ট কন্ট্র্যাক্টের সোর্স কোড এবং কন্ট্র্যাক্ট তৈরির সময় ব্যবহৃত কম্পাইল করা বাইটকোডের তুলনা করে কোনো পার্থক্য শনাক্ত করা। স্মার্ট কন্ট্র্যাক্ট যাচাই করা গুরুত্বপূর্ণ কারণ বিজ্ঞাপিত কন্ট্র্যাক্ট কোডটি ব্লকচেইনে যা চলে তার থেকে ভিন্ন হতে পারে।
+সোর্স কোড যাচাইকরণ হলো কোনো পার্থক্য শনাক্ত করার জন্য একটি স্মার্ট কন্ট্রাক্টের সোর্স কোড এবং কন্ট্রাক্ট তৈরির সময় ব্যবহৃত কম্পাইল করা বাইটকোডের তুলনা করা। স্মার্ট কন্ট্রাক্ট যাচাই করা গুরুত্বপূর্ণ কারণ বিজ্ঞাপিত কন্ট্রাক্ট কোডটি ব্লকচেইন-এ চলা কোডের চেয়ে আলাদা হতে পারে।
-স্মার্ট কন্ট্র্যাক্ট যাচাইকরণ মেশিন কোড না পড়েই, এটি যে উচ্চ-স্তরের ভাষায় লেখা হয়েছে তার মাধ্যমে একটি কন্ট্র্যাক্ট কী করে তা তদন্ত করতে সক্ষম করে। ফাংশন, মান, এবং সাধারণত ভেরিয়েবলের নাম এবং মন্তব্যগুলি মূল সোর্স কোডের সাথে একই থাকে যা কম্পাইল এবং ডিপ্লয় করা হয়। এটি কোড পড়া অনেক সহজ করে তোলে। সোর্স যাচাইকরণ কোড ডকুমেন্টেশনের জন্যও বিধান করে, যাতে শেষ-ব্যবহারকারীরা জানতে পারে যে একটি স্মার্ট কন্ট্র্যাক্ট কী করার জন্য ডিজাইন করা হয়েছে।
+স্মার্ট কন্ট্রাক্ট যাচাইকরণ মেশিন কোড না পড়েই কন্ট্রাক্টটি যে হাই-লেভেল ভাষায় লেখা হয়েছে তার মাধ্যমে এটি কী করে তা তদন্ত করতে সক্ষম করে। ফাংশন, মান এবং সাধারণত ভেরিয়েবলের নাম ও মন্তব্যগুলো মূল সোর্স কোডের মতোই থাকে যা কম্পাইল এবং ডিপ্লয় করা হয়। এটি কোড পড়া অনেক সহজ করে তোলে। সোর্স যাচাইকরণ কোড ডকুমেন্টেশনেরও ব্যবস্থা করে, যাতে শেষ-ব্যবহারকারীরা জানতে পারে একটি স্মার্ট কন্ট্রাক্ট কী করার জন্য ডিজাইন করা হয়েছে।
### সম্পূর্ণ যাচাইকরণ কী? {#full-verification}
-সোর্স কোডের কিছু অংশ রয়েছে যা কম্পাইল করা বাইটকোডকে প্রভাবিত করে না যেমন মন্তব্য বা ভেরিয়েবলের নাম। তার মানে ভিন্ন ভেরিয়েবলের নাম এবং ভিন্ন মন্তব্য সহ দুটি সোর্স কোড উভয়ই একই কন্ট্র্যাক্ট যাচাই করতে সক্ষম হবে। এর ফলে, একজন দূষিত অভিনেতা সোর্স কোডের ভিতরে প্রতারণামূলক মন্তব্য যোগ করতে পারে বা বিভ্রান্তিকর ভেরিয়েবলের নাম দিতে পারে এবং মূল সোর্স কোড থেকে ভিন্ন একটি সোর্স কোড দিয়ে কন্ট্র্যাক্টটি যাচাই করাতে পারে।
+সোর্স কোডের কিছু অংশ আছে যা কম্পাইল করা বাইটকোডকে প্রভাবিত করে না যেমন মন্তব্য বা ভেরিয়েবলের নাম। এর মানে হলো ভিন্ন ভেরিয়েবলের নাম এবং ভিন্ন মন্তব্যসহ দুটি সোর্স কোড একই কন্ট্রাক্ট যাচাই করতে সক্ষম হবে। এর ফলে, একজন ক্ষতিকারক ব্যক্তি সোর্স কোডের ভেতরে প্রতারণামূলক মন্তব্য যোগ করতে পারে বা বিভ্রান্তিকর ভেরিয়েবলের নাম দিতে পারে এবং মূল সোর্স কোডের চেয়ে ভিন্ন একটি সোর্স কোড দিয়ে কন্ট্রাক্টটি যাচাই করিয়ে নিতে পারে।
-সোর্স কোডের নির্ভুলতার জন্য একটি _ক্রিপ্টোগ্রাফিক গ্যারান্টি_ এবং কম্পাইলেশন তথ্যের একটি _ফিঙ্গারপ্রিন্ট_ হিসাবে কাজ করার জন্য বাইটকোডে অতিরিক্ত ডেটা যুক্ত করে এটি এড়ানো সম্ভব। প্রয়োজনীয় তথ্য [Solidity-র কন্ট্র্যাক্ট মেটাডেটা]-তে (https://docs.soliditylang.org/en/v0.8.15/metadata.html) পাওয়া যায় এবং এই ফাইলের হ্যাস একটি কন্ট্র্যাক্টের বাইটকোডের সাথে যুক্ত করা হয়। আপনি এটি [মেটাডেটা প্লেগ্রাউন্ডে](https://playground.sourcify.dev) কার্যকর অবস্থায় দেখতে পারেন
+বাইটকোডে অতিরিক্ত ডেটা যুক্ত করে এটি এড়ানো সম্ভব যা সোর্স কোডের নির্ভুলতার জন্য একটি _ক্রিপ্টোগ্রাফিক গ্যারান্টি_ এবং কম্পাইলেশন তথ্যের একটি _ফিঙ্গারপ্রিন্ট_ হিসেবে কাজ করে। প্রয়োজনীয় তথ্য [Solidity-এর কন্ট্রাক্ট মেটাডেটা](https://docs.soliditylang.org/en/v0.8.15/metadata.html)-তে পাওয়া যায় এবং এই ফাইলের হ্যাস একটি কন্ট্রাক্টের বাইটকোডে যুক্ত করা হয়। আপনি এটি [মেটাডেটা প্লেগ্রাউন্ড](https://playground.sourcify.dev)-এ কাজ করতে দেখতে পারেন।
-মেটাডেটা ফাইলে সোর্স ফাইল এবং তাদের হ্যাস সহ কন্ট্র্যাক্টের কম্পাইলেশন সম্পর্কে তথ্য থাকে। মানে, যদি কোনো কম্পাইলেশন সেটিংস বা এমনকি সোর্স ফাইলগুলির মধ্যে একটিতে একটি বাইটও পরিবর্তন হয়, তবে মেটাডেটা ফাইলটি পরিবর্তিত হয়। ফলস্বরূপ মেটাডেটা ফাইলের হ্যাস, যা বাইটকোডের সাথে যুক্ত করা হয়, তাও পরিবর্তিত হয়। এর মানে হল যদি একটি কন্ট্র্যাক্টের বাইটকোড + সংযুক্ত মেটাডেটা হ্যাস প্রদত্ত সোর্স কোড এবং কম্পাইলেশন সেটিংসের সাথে মিলে যায়, আমরা নিশ্চিত হতে পারি যে এটি মূল কম্পাইলেশনে ব্যবহৃত ঠিক একই সোর্স কোড, এমনকি একটি বাইটও ভিন্ন নয়।
+মেটাডেটা ফাইলে সোর্স ফাইল এবং তাদের হ্যাস সহ কন্ট্রাক্টের কম্পাইলেশন সম্পর্কে তথ্য থাকে। এর মানে হলো, যদি কম্পাইলেশন সেটিংসের কোনোটি বা এমনকি সোর্স ফাইলগুলোর কোনো একটির একটি বাইটও পরিবর্তিত হয়, তবে মেটাডেটা ফাইলটি পরিবর্তিত হয়। ফলস্বরূপ মেটাডেটা ফাইলের হ্যাস, যা বাইটকোডে যুক্ত করা হয়, সেটিও পরিবর্তিত হয়। এর মানে হলো যদি কোনো কন্ট্রাক্টের বাইটকোড + যুক্ত করা মেটাডেটা হ্যাস প্রদত্ত সোর্স কোড এবং কম্পাইলেশন সেটিংসের সাথে মিলে যায়, তবে আমরা নিশ্চিত হতে পারি যে এটি ঠিক একই সোর্স কোড যা মূল কম্পাইলেশনে ব্যবহৃত হয়েছিল, এমনকি একটি বাইটও আলাদা নয়।
-এই ধরনের যাচাইকরণ যা মেটাডেটা হ্যাসকে লিভারেজ করে তাকে **"[সম্পূর্ণ যাচাইকরণ](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (এছাড়াও "নিখুঁত যাচাইকরণ") হিসাবে উল্লেখ করা হয়। যদি মেটাডেটা হ্যাসগুলি মেলে না বা যাচাইকরণে বিবেচনা করা না হয় তবে এটি একটি "আংশিক মিল" হবে, যা বর্তমানে কন্ট্র্যাক্ট যাচাই করার আরও সাধারণ উপায়। সম্পূর্ণ যাচাইকরণ ছাড়া যাচাইকৃত সোর্স কোডে প্রতিফলিত হবে না এমন [দূষিত কোড প্রবেশ করানো](https://samczsun.com/hiding-in-plain-sight/) সম্ভব। বেশিরভাগ ডেভেলপার সম্পূর্ণ যাচাইকরণ সম্পর্কে সচেতন নন এবং তাদের কম্পাইলেশনের মেটাডেটা ফাইল রাখেন না, তাই আংশিক যাচাইকরণ এখন পর্যন্ত কন্ট্র্যাক্ট যাচাই করার ডি ফ্যাক্টো পদ্ধতি হয়ে দাঁড়িয়েছে।
+এই ধরনের যাচাইকরণ যা মেটাডেটা হ্যাস ব্যবহার করে তাকে **"[সম্পূর্ণ যাচাইকরণ](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (বা "নিখুঁত যাচাইকরণ") বলা হয়। যদি মেটাডেটা হ্যাসগুলো না মেলে বা যাচাইকরণে বিবেচনা করা না হয় তবে এটি একটি "আংশিক মিল" হবে, যা বর্তমানে কন্ট্রাক্ট যাচাই করার আরও সাধারণ উপায়। সম্পূর্ণ যাচাইকরণ ছাড়া যাচাইকৃত সোর্স কোডে প্রতিফলিত হবে না এমন [ক্ষতিকারক কোড প্রবেশ করানো](https://samczsun.com/hiding-in-plain-sight/) সম্ভব। বেশিরভাগ ডেভেলপার সম্পূর্ণ যাচাইকরণ সম্পর্কে অবগত নন এবং তাদের কম্পাইলেশনের মেটাডেটা ফাইল রাখেন না, তাই আংশিক যাচাইকরণ এখন পর্যন্ত কন্ট্রাক্ট যাচাই করার ডি ফ্যাক্টো পদ্ধতি হয়ে দাঁড়িয়েছে।
## সোর্স কোড যাচাইকরণ কেন গুরুত্বপূর্ণ? {#importance-of-source-code-verification}
### ট্রাস্টলেসনেস {#trustlessness}
-ট্রাস্টলেসনেস তর্কযোগ্যভাবে স্মার্ট কন্ট্র্যাক্ট এবং [ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপস)](/developers/docs/dapps/)-এর জন্য সবচেয়ে বড় ভিত্তি। স্মার্ট কন্ট্র্যাক্টগুলি “অপরিবর্তনীয়” এবং পরিবর্তন করা যায় না; একটি কন্ট্র্যাক্ট শুধুমাত্র ডিপ্লয়মেন্টের সময় কোডে সংজ্ঞায়িত ব্যবসায়িক যুক্তি কার্যকর করবে। এর মানে হল ডেভেলপার এবং এন্টারপ্রাইজগুলি Ethereum-এ ডিপ্লয় করার পরে একটি কন্ট্র্যাক্টের কোড পরিবর্তন করতে পারে না।
+ট্রাস্টলেসনেস নিঃসন্দেহে স্মার্ট কন্ট্রাক্ট এবং [ডিসেন্ট্রালাইজড এপ্লিকেশন (ডিএ্যাপস)](/developers/docs/dapps/)-এর জন্য সবচেয়ে বড় ভিত্তি। স্মার্ট কন্ট্রাক্টগুলো "ইমমিউটেবল" এবং পরিবর্তন করা যায় না; একটি কন্ট্রাক্ট শুধুমাত্র ডিপ্লয়মেন্টের সময় কোডে সংজ্ঞায়িত বিজনেস লজিক এক্সিকিউট করবে। এর মানে হলো ডেভেলপার এবং এন্টারপ্রাইজগুলো ইথিরিয়াম-এ ডিপ্লয় করার পরে কোনো কন্ট্রাক্টের কোড টেম্পার করতে পারে না।
-একটি স্মার্ট কন্ট্র্যাক্টকে ট্রাস্টলেস হতে হলে, কন্ট্র্যাক্ট কোডটি স্বাধীন যাচাইকরণের জন্য উপলব্ধ থাকা উচিত। যদিও প্রতিটি স্মার্ট কন্ট্র্যাক্টের জন্য কম্পাইল করা বাইটকোড ব্লকচেইনে সর্বজনীনভাবে উপলব্ধ, নিম্ন-স্তরের ভাষা বোঝা কঠিন—ডেভেলপার এবং ব্যবহারকারী উভয়ের জন্যই।
+একটি স্মার্ট কন্ট্রাক্ট ট্রাস্টলেস হওয়ার জন্য, কন্ট্রাক্ট কোডটি স্বাধীন যাচাইকরণের জন্য উপলব্ধ হওয়া উচিত। যদিও প্রতিটি স্মার্ট কন্ট্রাক্টের জন্য কম্পাইল করা বাইটকোড ব্লকচেইন-এ সর্বজনীনভাবে উপলব্ধ, লো-লেভেল ভাষা বোঝা কঠিন—ডেভেলপার এবং ব্যবহারকারী উভয়ের জন্যই।
-প্রকল্পগুলি তাদের কন্ট্র্যাক্টের সোর্স কোড প্রকাশ করে বিশ্বাসের অনুমান হ্রাস করে। কিন্তু এটি আরেকটি সমস্যার দিকে নিয়ে যায়: প্রকাশিত সোর্স কোডটি কন্ট্র্যাক্ট বাইটকোডের সাথে মেলে কিনা তা যাচাই করা কঠিন। এই পরিস্থিতিতে, ট্রাস্টলেসনেসের মূল্য হারিয়ে যায় কারণ ব্যবহারকারীদের ব্লকচেইনে এটি ডিপ্লয় করার আগে ডেভেলপারদের উপর বিশ্বাস করতে হয় যে তারা কন্ট্র্যাক্টের ব্যবসায়িক যুক্তি পরিবর্তন করবে না (অর্থাৎ, বাইটকোড পরিবর্তন করে)।
+প্রজেক্টগুলো তাদের কন্ট্রাক্টের সোর্স কোড প্রকাশ করে আস্থার অনুমান কমায়। কিন্তু এটি আরেকটি সমস্যার দিকে নিয়ে যায়: প্রকাশিত সোর্স কোডটি কন্ট্রাক্ট বাইটকোডের সাথে মেলে কিনা তা যাচাই করা কঠিন। এই পরিস্থিতিতে, ট্রাস্টলেসনেসের মান হারিয়ে যায় কারণ ব্যবহারকারীদের ডেভেলপারদের ওপর আস্থা রাখতে হয় যে তারা ব্লকচেইন-এ ডিপ্লয় করার আগে কন্ট্রাক্টের বিজনেস লজিক পরিবর্তন করবে না (অর্থাৎ, বাইটকোড পরিবর্তন করে)।
-সোর্স কোড যাচাইকরণ টুলগুলি গ্যারান্টি দেয় যে একটি স্মার্ট কন্ট্র্যাক্টের সোর্স কোড ফাইলগুলি অ্যাসেম্বলি কোডের সাথে মেলে। ফলাফল হল একটি ট্রাস্টলেস ইকোসিস্টেম, যেখানে ব্যবহারকারীরা তৃতীয় পক্ষকে অন্ধভাবে বিশ্বাস করে না এবং পরিবর্তে একটি কন্ট্র্যাক্টে অর্থ জমা করার আগে কোড যাচাই করে।
+সোর্স কোড যাচাইকরণ টুলগুলো গ্যারান্টি দেয় যে একটি স্মার্ট কন্ট্রাক্টের সোর্স কোড ফাইলগুলো অ্যাসেম্বলি কোডের সাথে মেলে। এর ফলাফল হলো একটি ট্রাস্টলেস ইকোসিস্টেম, যেখানে ব্যবহারকারীরা অন্ধভাবে তৃতীয় পক্ষের ওপর আস্থা রাখে না এবং এর পরিবর্তে কোনো কন্ট্রাক্টে ফান্ড জমা করার আগে কোড যাচাই করে।
### ব্যবহারকারীর নিরাপত্তা {#user-safety}
-স্মার্ট কন্ট্র্যাক্টের সাথে, সাধারণত অনেক টাকা ঝুঁকির মধ্যে থাকে। এটি ব্যবহার করার আগে উচ্চতর নিরাপত্তা গ্যারান্টি এবং একটি স্মার্ট কন্ট্র্যাক্টের যুক্তি যাচাই করার আহ্বান জানায়। সমস্যা হল যে অসাধু ডেভেলপাররা একটি স্মার্ট কন্ট্র্যাক্টে দূষিত কোড প্রবেশ করিয়ে ব্যবহারকারীদের প্রতারিত করতে পারে। যাচাইকরণ ছাড়া, দূষিত স্মার্ট কন্ট্র্যাক্টগুলিতে [ব্যাকডোর](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), বিতর্কিত অ্যাক্সেস কন্ট্রোল মেকানিজম, শোষণযোগ্য দুর্বলতা এবং অন্যান্য জিনিস থাকতে পারে যা ব্যবহারকারীর নিরাপত্তাকে বিপন্ন করে এবং যা অলক্ষিত থেকে যাবে।
+স্মার্ট কন্ট্রাক্টের ক্ষেত্রে, সাধারণত প্রচুর অর্থ ঝুঁকিতে থাকে। এটি ব্যবহার করার আগে উচ্চতর নিরাপত্তা গ্যারান্টি এবং একটি স্মার্ট কন্ট্রাক্টের লজিক যাচাইকরণের দাবি রাখে। সমস্যা হলো অসাধু ডেভেলপাররা একটি স্মার্ট কন্ট্রাক্টে ক্ষতিকারক কোড প্রবেশ করিয়ে ব্যবহারকারীদের প্রতারিত করতে পারে। যাচাইকরণ ছাড়া, ক্ষতিকারক স্মার্ট কন্ট্রাক্টগুলোতে [ব্যাকডোর](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), বিতর্কিত অ্যাক্সেস কন্ট্রোল মেকানিজম, শোষণযোগ্য দুর্বলতা এবং অন্যান্য জিনিস থাকতে পারে যা ব্যবহারকারীর নিরাপত্তাকে বিপন্ন করে এবং যা শনাক্ত করা যায় না।
-একটি স্মার্ট কন্ট্র্যাক্টের সোর্স কোড ফাইল প্রকাশ করা আগ্রহী পক্ষগুলির জন্য, যেমন অডিটরদের, সম্ভাব্য অ্যাটাক ভেক্টরের জন্য কন্ট্র্যাক্টটি মূল্যায়ন করা সহজ করে তোলে। একাধিক পক্ষ স্বাধীনভাবে একটি স্মার্ট কন্ট্র্যাক্ট যাচাই করার ফলে, ব্যবহারকারীরা এর নিরাপত্তার শক্তিশালী গ্যারান্টি পায়।
+একটি স্মার্ট কন্ট্রাক্টের সোর্স কোড ফাইলগুলো প্রকাশ করা আগ্রহী ব্যক্তিদের জন্য, যেমন অডিটরদের জন্য, সম্ভাব্য আক্রমণ ভেক্টরগুলোর জন্য কন্ট্রাক্টটি মূল্যায়ন করা সহজ করে তোলে। একাধিক পক্ষ স্বাধীনভাবে একটি স্মার্ট কন্ট্রাক্ট যাচাই করার ফলে, ব্যবহারকারীদের এর নিরাপত্তার বিষয়ে শক্তিশালী গ্যারান্টি থাকে।
-## ইথেরিয়াম স্মার্ট কন্ট্র্যাক্টের জন্য সোর্স কোড কীভাবে যাচাই করবেন {#source-code-verification-for-ethereum-smart-contracts}
+## ইথিরিয়াম স্মার্ট কন্ট্রাক্টের জন্য সোর্স কোড কীভাবে যাচাই করবেন {#source-code-verification-for-ethereum-smart-contracts}
-[Ethereum-এ একটি স্মার্ট কন্ট্র্যাক্ট ডিপ্লয় করার জন্য](/developers/docs/smart-contracts/deploying/) একটি ডেটা পেলোড (কম্পাইল করা বাইটকোড) সহ একটি বিশেষ অ্যাড্রেসে একটি ট্রানজ্যাকশন পাঠাতে হয়। ডেটা পেলোডটি সোর্স কোড কম্পাইল করে তৈরি করা হয়, এর সাথে ট্রানজ্যাকশনের ডেটা পেলোডে কন্ট্র্যাক্ট ইনস্ট্যান্সের [কনস্ট্রাক্টর আর্গুমেন্টস](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) যুক্ত করা হয়। কম্পাইলেশন ডিটারমিনিস্টিক, যার অর্থ এটি সর্বদা একই আউটপুট (অর্থাৎ, কন্ট্র্যাক্ট বাইটকোড) তৈরি করে যদি একই সোর্স ফাইল এবং কম্পাইলেশন সেটিংস (যেমন, কম্পাইলার সংস্করণ, অপটিমাইজার) ব্যবহার করা হয়।
+[ইথিরিয়াম-এ একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার](/developers/docs/smart-contracts/deploying/) জন্য একটি বিশেষ এডড্রেস-এ ডেটা পেলোড (কম্পাইল করা বাইটকোড) সহ একটি লেনদেন পাঠানো প্রয়োজন। ডেটা পেলোডটি সোর্স কোড কম্পাইল করে তৈরি করা হয়, সাথে লেনদেন-এ ডেটা পেলোডে যুক্ত কন্ট্রাক্ট ইনস্ট্যান্সের [কনস্ট্রাক্টর আর্গুমেন্টগুলো](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) থাকে। কম্পাইলেশন ডিটারমিনিস্টিক, যার অর্থ হলো যদি একই সোর্স ফাইল এবং কম্পাইলেশন সেটিংস (যেমন, কম্পাইলার সংস্করণ, অপ্টিমাইজার) ব্যবহার করা হয় তবে এটি সর্বদা একই আউটপুট (অর্থাৎ, কন্ট্রাক্ট বাইটকোড) তৈরি করে।
-
+
-একটি স্মার্ট কন্ট্র্যাক্ট যাচাই করার ক্ষেত্রে মূলত নিম্নলিখিত পদক্ষেপগুলি জড়িত:
+একটি স্মার্ট কন্ট্রাক্ট যাচাই করার ক্ষেত্রে মূলত নিচের ধাপগুলো জড়িত থাকে:
-1. একটি কম্পাইলারে সোর্স ফাইল এবং কম্পাইলেশন সেটিংস ইনপুট করুন।
+1. একটি কম্পাইলারে সোর্স ফাইল এবং কম্পাইলেশন সেটিংস ইনপুট দিন।
-2. কম্পাইলার কন্ট্র্যাক্টের বাইটকোড আউটপুট করে
+2. কম্পাইলার কন্ট্রাক্টের বাইটকোড আউটপুট করে।
-3. একটি নির্দিষ্ট অ্যাড্রেসে ডিপ্লয় করা কন্ট্র্যাক্টের বাইটকোড পান
+3. একটি নির্দিষ্ট এডড্রেস-এ ডিপ্লয় করা কন্ট্রাক্টের বাইটকোড পান।
-4. ডিপ্লয় করা বাইটকোডের সাথে পুনরায় কম্পাইল করা বাইটকোডের তুলনা করুন। যদি কোডগুলি মিলে যায়, তাহলে কন্ট্র্যাক্টটি প্রদত্ত সোর্স কোড এবং কম্পাইলেশন সেটিংস দিয়ে যাচাই করা হয়।
+4. রিকম্পাইল করা বাইটকোডের সাথে ডিপ্লয় করা বাইটকোডের তুলনা করুন। যদি কোডগুলো মিলে যায়, তবে কন্ট্রাক্টটি প্রদত্ত সোর্স কোড এবং কম্পাইলেশন সেটিংসের সাথে যাচাই করা হয়।
-5. অতিরিক্তভাবে, যদি বাইটকোডের শেষে থাকা মেটাডেটা হ্যাসগুলি মিলে যায়, তবে এটি একটি সম্পূর্ণ মিল হবে।
+5. উপরন্তু, যদি বাইটকোডের শেষে মেটাডেটা হ্যাসগুলো মিলে যায়, তবে এটি একটি সম্পূর্ণ মিল হবে।
-মনে রাখবেন যে এটি যাচাইকরণের একটি সরল বর্ণনা এবং অনেক ব্যতিক্রম রয়েছে যা এর সাথে কাজ করবে না, যেমন [অপরিবর্তনীয় ভেরিয়েবল](https://docs.sourcify.dev/docs/immutables/) থাকা।
+মনে রাখবেন যে এটি যাচাইকরণের একটি সরলীকৃত বর্ণনা এবং এর অনেক ব্যতিক্রম রয়েছে যা এর সাথে কাজ করবে না যেমন [ইমমিউটেবল ভেরিয়েবল](https://docs.sourcify.dev/docs/immutables/) থাকা।
-## সোর্স কোড যাচাইকরণ টুল {#source-code-verification-tools}
+## সোর্স কোড যাচাইকরণ টুলস {#source-code-verification-tools}
-কন্ট্র্যাক্ট যাচাই করার প্রথাগত প্রক্রিয়াটি জটিল হতে পারে। এই কারণেই আমাদের কাছে Ethereum-এ ডিপ্লয় করা স্মার্ট কন্ট্র্যাক্টের জন্য সোর্স কোড যাচাই করার টুল রয়েছে। এই টুলগুলি সোর্স কোড যাচাইকরণের বড় অংশ স্বয়ংক্রিয় করে এবং ব্যবহারকারীদের সুবিধার জন্য যাচাইকৃত কন্ট্র্যাক্টগুলি কিউরেটও করে।
+কন্ট্রাক্ট যাচাই করার ঐতিহ্যগত প্রক্রিয়া জটিল হতে পারে। এই কারণেই ইথিরিয়াম-এ ডিপ্লয় করা স্মার্ট কন্ট্রাক্টের সোর্স কোড যাচাই করার জন্য আমাদের কাছে টুল রয়েছে। এই টুলগুলো সোর্স কোড যাচাইকরণের বড় অংশগুলোকে স্বয়ংক্রিয় করে এবং ব্যবহারকারীদের সুবিধার জন্য যাচাইকৃত কন্ট্রাক্টগুলো কিউরেট করে।
### Etherscan {#etherscan}
-যদিও বেশিরভাগ ক্ষেত্রে একটি [Ethereum ব্লকচেইন এক্সপ্লোরার](/developers/docs/data-and-analytics/block-explorers/) হিসাবে পরিচিত, Etherscan স্মার্ট কন্ট্র্যাক্ট ডেভেলপার এবং ব্যবহারকারীদের জন্য একটি [সোর্স কোড যাচাইকরণ পরিষেবা](https://etherscan.io/verifyContract)ও অফার করে।
+যদিও বেশিরভাগ ক্ষেত্রে একটি [ইথিরিয়াম ব্লক এক্সপ্লোরার](/developers/docs/data-and-analytics/block-explorers/) হিসেবে পরিচিত, Etherscan স্মার্ট কন্ট্রাক্ট ডেভেলপার এবং ব্যবহারকারীদের জন্য একটি [সোর্স কোড যাচাইকরণ পরিষেবাও](https://etherscan.io/verifyContract) অফার করে।
-Etherscan আপনাকে মূল ডেটা পেলোড (সোর্স কোড, লাইব্রেরি অ্যাড্রেস, কম্পাইলার সেটিংস, কন্ট্র্যাক্ট অ্যাড্রেস, ইত্যাদি) থেকে কন্ট্র্যাক্ট বাইটকোড পুনরায় কম্পাইল করার অনুমতি দেয়। যদি পুনরায় কম্পাইল করা বাইটকোড অনচেইন কন্ট্র্যাক্টের বাইটকোডের (এবং কনস্ট্রাক্টর প্যারামিটারের) সাথে যুক্ত হয়, তবে [কন্ট্র্যাক্টটি যাচাই করা হয়](https://info.etherscan.com/types-of-contract-verification/)।
+Etherscan আপনাকে মূল ডেটা পেলোড (সোর্স কোড, লাইব্রেরি এডড্রেস, কম্পাইলার সেটিংস, কন্ট্রাক্ট এডড্রেস ইত্যাদি) থেকে কন্ট্রাক্ট বাইটকোড রিকম্পাইল করার অনুমতি দেয়। যদি রিকম্পাইল করা বাইটকোডটি অনচেইন কন্ট্রাক্টের বাইটকোড (এবং কনস্ট্রাক্টর প্যারামিটার)-এর সাথে যুক্ত থাকে, তবে [কন্ট্রাক্টটি যাচাই করা হয়](https://info.etherscan.com/types-of-contract-verification/)।
-একবার যাচাই করা হয়ে গেলে, আপনার কন্ট্র্যাক্টের সোর্স কোড একটি "যাচাইকৃত" লেবেল পায় এবং অন্যদের অডিট করার জন্য Etherscan-এ প্রকাশিত হয়। এটি [যাচাইকৃত কন্ট্র্যাক্ট](https://etherscan.io/contractsVerified/) বিভাগেও যুক্ত হয়—যা যাচাইকৃত সোর্স কোড সহ স্মার্ট কন্ট্র্যাক্টের একটি রিপোজিটরি।
+একবার যাচাই হয়ে গেলে, আপনার কন্ট্রাক্টের সোর্স কোড একটি "Verified" লেবেল পায় এবং অন্যদের অডিট করার জন্য Etherscan-এ প্রকাশিত হয়। এটি [Verified Contracts](https://etherscan.io/contractsVerified/) বিভাগেও যুক্ত হয়—যা যাচাইকৃত সোর্স কোডসহ স্মার্ট কন্ট্রাক্টের একটি রিপোজিটরি।
-Etherscan কন্ট্র্যাক্ট যাচাই করার জন্য সবচেয়ে বেশি ব্যবহৃত টুল। তবে, Etherscan-এর কন্ট্র্যাক্ট যাচাইকরণের একটি অসুবিধা রয়েছে: এটি অনচেইন বাইটকোড এবং পুনরায় কম্পাইল করা বাইটকোডের **মেটাডেটা হ্যাস** তুলনা করতে ব্যর্থ হয়। তাই Etherscan-এ মিলগুলি আংশিক মিল।
+Etherscan হলো কন্ট্রাক্ট যাচাই করার জন্য সবচেয়ে বেশি ব্যবহৃত টুল। তবে, Etherscan-এর কন্ট্রাক্ট যাচাইকরণের একটি ত্রুটি রয়েছে: এটি অনচেইন বাইটকোড এবং রিকম্পাইল করা বাইটকোডের **মেটাডেটা হ্যাস** তুলনা করতে ব্যর্থ হয়। তাই Etherscan-এর মিলগুলো আংশিক মিল।
-[Etherscan-এ কন্ট্র্যাক্ট যাচাই করার বিষয়ে আরও জানুন](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327)।
+[Etherscan-এ কন্ট্রাক্ট যাচাইকরণ সম্পর্কে আরও জানুন](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327)।
### Blockscout {#blockscout}
-[Blockscout](https://blockscout.com/) একটি ওপেন-সোর্স ব্লকচেইন এক্সপ্লোরার যা স্মার্ট কন্ট্র্যাক্ট ডেভেলপার এবং ব্যবহারকারীদের জন্য একটি [কন্ট্র্যাক্ট যাচাইকরণ পরিষেবা](https://eth.blockscout.com/contract-verification)ও প্রদান করে। একটি ওপেন-সোর্স বিকল্প হিসাবে, Blockscout যাচাইকরণ কীভাবে সঞ্চালিত হয় তাতে স্বচ্ছতা অফার করে এবং যাচাইকরণ প্রক্রিয়া উন্নত করতে কমিউনিটির অবদানকে সক্ষম করে।
+[Blockscout](https://blockscout.com/) হলো একটি ওপেন-সোর্স ব্লক এক্সপ্লোরার যা স্মার্ট কন্ট্রাক্ট ডেভেলপার এবং ব্যবহারকারীদের জন্য একটি [কন্ট্রাক্ট যাচাইকরণ পরিষেবাও](https://eth.blockscout.com/contract-verification) প্রদান করে। একটি ওপেন-সোর্স বিকল্প হিসেবে, Blockscout কীভাবে যাচাইকরণ করা হয় তাতে স্বচ্ছতা প্রদান করে এবং যাচাইকরণ প্রক্রিয়া উন্নত করতে কমিউনিটির অবদান সক্ষম করে।
-অন্যান্য যাচাইকরণ পরিষেবার মতো, Blockscout আপনাকে বাইটকোড পুনরায় কম্পাইল করে এবং ডিপ্লয় করা কন্ট্র্যাক্টের সাথে তুলনা করে আপনার কন্ট্র্যাক্টের সোর্স কোড যাচাই করার অনুমতি দেয়। একবার যাচাই করা হয়ে গেলে, আপনার কন্ট্র্যাক্ট যাচাইকরণ স্ট্যাটাস পায় এবং সোর্স কোডটি অডিটিং এবং ইন্টারঅ্যাকশনের জন্য সর্বজনীনভাবে উপলব্ধ হয়। সহজ ব্রাউজিং এবং আবিষ্কারের জন্য যাচাইকৃত কন্ট্র্যাক্টগুলিও Blockscout-এর [যাচাইকৃত কন্ট্র্যাক্ট রিপোজিটরিতে](https://eth.blockscout.com/verified-contracts) তালিকাভুক্ত করা হয়।
+অন্যান্য যাচাইকরণ পরিষেবার মতো, Blockscout আপনাকে বাইটকোড রিকম্পাইল করে এবং ডিপ্লয় করা কন্ট্রাক্টের সাথে তুলনা করে আপনার কন্ট্রাক্টের সোর্স কোড যাচাই করার অনুমতি দেয়। একবার যাচাই হয়ে গেলে, আপনার কন্ট্রাক্ট যাচাইকরণের স্ট্যাটাস পায় এবং সোর্স কোডটি অডিটিং এবং ইন্টারঅ্যাকশনের জন্য সর্বজনীনভাবে উপলব্ধ হয়। সহজে ব্রাউজিং এবং আবিষ্কারের জন্য যাচাইকৃত কন্ট্রাক্টগুলো Blockscout-এর [যাচাইকৃত কন্ট্রাক্ট রিপোজিটরিতেও](https://eth.blockscout.com/verified-contracts) তালিকাভুক্ত করা হয়।
### Sourcify {#sourcify}
-[Sourcify](https://sourcify.dev/#/verifier) হল কন্ট্র্যাক্ট যাচাই করার জন্য আরেকটি টুল যা ওপেন-সোর্স এবং ডিসেন্ট্রালাইজড। এটি একটি ব্লক এক্সপ্লোরার নয় এবং শুধুমাত্র [বিভিন্ন EVM ভিত্তিক নেটওয়ার্কে](https://docs.sourcify.dev/docs/chains) কন্ট্র্যাক্ট যাচাই করে। এটি অন্যান্য টুলের জন্য একটি পাবলিক পরিকাঠামো হিসাবে কাজ করে যার উপর তারা নির্মাণ করতে পারে, এবং মেটাডেটা ফাইলে পাওয়া [ABI](/developers/docs/smart-contracts/compiling/#web-applications) এবং [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) মন্তব্য ব্যবহার করে আরও বেশি মানব-বান্ধব কন্ট্র্যাক্ট ইন্টারঅ্যাকশন সক্ষম করার লক্ষ্য রাখে।
+[Sourcify](https://sourcify.dev/#/verifier) হলো কন্ট্রাক্ট যাচাই করার আরেকটি টুল যা ওপেন-সোর্স এবং ডিসেন্ট্রালাইজড। এটি কোনো ব্লক এক্সপ্লোরার নয় এবং শুধুমাত্র [বিভিন্ন EVM ভিত্তিক নেটওয়ার্ক](https://docs.sourcify.dev/docs/chains)-এ কন্ট্রাক্ট যাচাই করে। এটি অন্যান্য টুলগুলোর জন্য এর ওপর ভিত্তি করে তৈরি করার জন্য একটি পাবলিক ইনফ্রাস্ট্রাকচার হিসেবে কাজ করে এবং মেটাডেটা ফাইলে পাওয়া [ABI](/developers/docs/smart-contracts/compiling/#web-applications) এবং [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) মন্তব্যগুলো ব্যবহার করে আরও মানব-বান্ধব কন্ট্রাক্ট ইন্টারঅ্যাকশন সক্ষম করার লক্ষ্য রাখে।
-Etherscan-এর মতো নয়, Sourcify মেটাডেটা হ্যাসের সাথে সম্পূর্ণ মিল সমর্থন করে। যাচাইকৃত কন্ট্র্যাক্টগুলি তার [পাবলিক রিপোজিটরিতে](https://docs.sourcify.dev/docs/repository/) HTTP এবং [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs)-এ পরিবেশন করা হয়, যা একটি ডিসেন্ট্রালাইজড, [কন্টেন্ট-অ্যাড্রেসড](https://docs.storacha.network/concepts/content-addressing/) স্টোরেজ। এটি IPFS-এর মাধ্যমে একটি কন্ট্র্যাক্টের মেটাডেটা ফাইল আনয়ন করার অনুমতি দেয় কারণ সংযুক্ত মেটাডেটা হ্যাসটি একটি IPFS হ্যাস।
+Etherscan-এর বিপরীতে, Sourcify মেটাডেটা হ্যাসের সাথে সম্পূর্ণ মিল সমর্থন করে। যাচাইকৃত কন্ট্রাক্টগুলো HTTP এবং [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs)-এ এর [পাবলিক রিপোজিটরিতে](https://docs.sourcify.dev/docs/repository/) পরিবেশন করা হয়, যা একটি ডিসেন্ট্রালাইজড, [কন্টেন্ট-অ্যাড্রেসড](https://docs.storacha.network/concepts/content-addressing/) স্টোরেজ। এটি IPFS-এর মাধ্যমে একটি কন্ট্রাক্টের মেটাডেটা ফাইল আনার অনুমতি দেয় কারণ যুক্ত করা মেটাডেটা হ্যাসটি একটি IPFS হ্যাস।
-অতিরিক্তভাবে, কেউ IPFS-এর মাধ্যমে সোর্স কোড ফাইলগুলিও পুনরুদ্ধার করতে পারে, কারণ এই ফাইলগুলির IPFS হ্যাসগুলিও মেটাডেটাতে পাওয়া যায়। একটি কন্ট্র্যাক্ট তার API বা [UI](https://sourcify.dev/#/verifier)-এর মাধ্যমে মেটাডেটা ফাইল এবং সোর্স ফাইল সরবরাহ করে, অথবা প্লাগইন ব্যবহার করে যাচাই করা যেতে পারে। Sourcify মনিটরিং টুল নতুন ব্লকে কন্ট্র্যাক্ট তৈরি হওয়ার বিষয় শোনে এবং যদি তাদের মেটাডেটা এবং সোর্স ফাইলগুলি IPFS-এ প্রকাশিত হয় তবে কন্ট্র্যাক্টগুলি যাচাই করার চেষ্টা করে।
+উপরন্তু, কেউ IPFS-এর মাধ্যমে সোর্স কোড ফাইলগুলোও পুনরুদ্ধার করতে পারে, কারণ এই ফাইলগুলোর IPFS হ্যাসগুলোও মেটাডেটাতে পাওয়া যায়। এর API বা [UI](https://sourcify.dev/#/verifier)-এর মাধ্যমে মেটাডেটা ফাইল এবং সোর্স ফাইলগুলো প্রদান করে বা প্লাগইনগুলো ব্যবহার করে একটি কন্ট্রাক্ট যাচাই করা যেতে পারে। Sourcify মনিটরিং টুল নতুন ব্লকস-এ কন্ট্রাক্ট তৈরি হওয়ার দিকেও নজর রাখে এবং যদি তাদের মেটাডেটা এবং সোর্স ফাইলগুলো IPFS-এ প্রকাশিত হয় তবে কন্ট্রাক্টগুলো যাচাই করার চেষ্টা করে।
-[Sourcify-তে কন্ট্র্যাক্ট যাচাই করার বিষয়ে আরও জানুন](https://soliditylang.org/blog/2020/06/25/sourcify-faq/)।
+[Sourcify-তে কন্ট্রাক্ট যাচাইকরণ সম্পর্কে আরও জানুন](https://soliditylang.org/blog/2020/06/25/sourcify-faq/)।
### Tenderly {#tenderly}
-[Tenderly প্ল্যাটফর্ম](https://tenderly.co/) Web3 ডেভেলপারদের স্মার্ট কন্ট্র্যাক্ট তৈরি, পরীক্ষা, নিরীক্ষণ এবং পরিচালনা করতে সক্ষম করে। অবজারভেবিলিটি এবং ইনফ্রাস্ট্রাকচার বিল্ডিং ব্লকের সাথে ডিবাগিং টুল একত্রিত করে, Tenderly ডেভেলপারদের স্মার্ট কন্ট্র্যাক্ট ডেভেলপমেন্ট ত্বরান্বিত করতে সাহায্য করে। Tenderly ফিচারগুলি সম্পূর্ণরূপে সক্ষম করতে, ডেভেলপারদের বিভিন্ন পদ্ধতি ব্যবহার করে [সোর্স কোড যাচাইকরণ করতে হবে](https://docs.tenderly.co/monitoring/contract-verification)।
+[Tenderly প্ল্যাটফর্ম](https://tenderly.co/) ওয়েব3 ডেভেলপারদের স্মার্ট কন্ট্রাক্ট তৈরি, পরীক্ষা, মনিটর এবং পরিচালনা করতে সক্ষম করে। ডিবাগিং টুলগুলোকে অবজারভেবিলিটি এবং ইনফ্রাস্ট্রাকচার বিল্ডিং ব্লকের সাথে একত্রিত করে, Tenderly ডেভেলপারদের স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট ত্বরান্বিত করতে সাহায্য করে। Tenderly-এর বৈশিষ্ট্যগুলো সম্পূর্ণরূপে সক্ষম করতে, ডেভেলপারদের বেশ কয়েকটি পদ্ধতি ব্যবহার করে [সোর্স কোড যাচাইকরণ সম্পাদন](https://docs.tenderly.co/monitoring/contract-verification) করতে হবে।
-একটি কন্ট্র্যাক্ট ব্যক্তিগতভাবে বা সর্বজনীনভাবে যাচাই করা সম্ভব। যদি ব্যক্তিগতভাবে যাচাই করা হয়, স্মার্ট কন্ট্র্যাক্টটি শুধুমাত্র আপনার (এবং আপনার প্রকল্পের অন্যান্য সদস্যদের) কাছে দৃশ্যমান হয়। একটি কন্ট্র্যাক্ট সর্বজনীনভাবে যাচাই করা হলে এটি Tenderly প্ল্যাটফর্ম ব্যবহারকারী প্রত্যেকের কাছে দৃশ্যমান হয়।
+একটি কন্ট্রাক্ট ব্যক্তিগতভাবে বা সর্বজনীনভাবে যাচাই করা সম্ভব। যদি ব্যক্তিগতভাবে যাচাই করা হয়, তবে স্মার্ট কন্ট্রাক্টটি শুধুমাত্র আপনার (এবং আপনার প্রজেক্টের অন্যান্য সদস্যদের) কাছে দৃশ্যমান হবে। একটি কন্ট্রাক্ট সর্বজনীনভাবে যাচাই করা হলে তা Tenderly প্ল্যাটফর্ম ব্যবহারকারী সবার কাছে দৃশ্যমান হয়।
-আপনি [ড্যাশবোর্ড](https://docs.tenderly.co/contract-verification), [Tenderly Hardhat প্লাগইন](https://docs.tenderly.co/contract-verification/hardhat), অথবা [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli) ব্যবহার করে আপনার কন্ট্র্যাক্ট যাচাই করতে পারেন।
+আপনি [ড্যাশবোর্ড](https://docs.tenderly.co/contract-verification), [Tenderly Hardhat প্লাগইন](https://docs.tenderly.co/contract-verification/hardhat), বা [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli) ব্যবহার করে আপনার কন্ট্রাক্টগুলো যাচাই করতে পারেন।
-ড্যাশবোর্ডের মাধ্যমে কন্ট্র্যাক্ট যাচাই করার সময়, আপনাকে Solidity কম্পাইলার দ্বারা তৈরি করা সোর্স ফাইল বা মেটাডেটা ফাইল, অ্যাড্রেস/নেটওয়ার্ক এবং কম্পাইলার সেটিংস আমদানি করতে হবে।
+ড্যাশবোর্ডের মাধ্যমে কন্ট্রাক্ট যাচাই করার সময়, আপনাকে Solidity কম্পাইলার দ্বারা তৈরি সোর্স ফাইল বা মেটাডেটা ফাইল, এডড্রেস/নেটওয়ার্ক এবং কম্পাইলার সেটিংস ইমপোর্ট করতে হবে।
-Tenderly Hardhat প্লাগইন ব্যবহার করলে কম পরিশ্রমে যাচাইকরণ প্রক্রিয়ার উপর আরও বেশি নিয়ন্ত্রণ পাওয়া যায়, যা আপনাকে স্বয়ংক্রিয় (নো-কোড) এবং ম্যানুয়াল (কোড-ভিত্তিক) যাচাইকরণের মধ্যে বেছে নিতে সক্ষম করে।
+Tenderly Hardhat প্লাগইন ব্যবহার করলে কম পরিশ্রমে যাচাইকরণ প্রক্রিয়ার ওপর আরও বেশি নিয়ন্ত্রণ পাওয়া যায়, যা আপনাকে স্বয়ংক্রিয় (নো-কোড) এবং ম্যানুয়াল (কোড-ভিত্তিক) যাচাইকরণের মধ্যে বেছে নিতে সক্ষম করে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [কন্ট্র্যাক্ট সোর্স কোড যাচাই করা](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/)
+- [কন্ট্রাক্ট সোর্স কোড যাচাইকরণ](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/index.md b/public/content/translations/bn/developers/docs/standards/index.md
index 59ea47cfc5a..d492e4d0b5c 100644
--- a/public/content/translations/bn/developers/docs/standards/index.md
+++ b/public/content/translations/bn/developers/docs/standards/index.md
@@ -1,59 +1,59 @@
---
-title: "ইথেরিয়াম ডেভেলপমেন্ট স্ট্যান্ডার্ড"
-description: "EIP, ERC-20 এবং ERC-721-এর মতো টোকেন স্ট্যান্ডার্ড এবং ডেভেলপমেন্ট কনভেনশন সহ ইথেরিয়াম স্ট্যান্ডার্ড সম্পর্কে জানুন।"
+title: ইথিরিয়াম ডেভেলপমেন্ট স্ট্যান্ডার্ডস
+description: ইথিরিয়াম স্ট্যান্ডার্ড সম্পর্কে জানুন, যার মধ্যে রয়েছে EIPs, ERC-20 এবং ERC-721 এর মতো টোকেন স্ট্যান্ডার্ড এবং ডেভেলপমেন্ট কনভেনশন।
lang: bn
incomplete: true
---
-## স্ট্যান্ডার্ডের ওভারভিউ {#standards-overview}
+## স্ট্যান্ডার্ড ওভারভিউ {#standards-overview}
-ইথেরিয়াম কমিউনিটি অনেক স্ট্যান্ডার্ড গ্রহণ করেছে যা বিভিন্ন ইমপ্লিমেন্টেশন জুড়ে প্রোজেক্টগুলিকে (যেমন [ইথেরিয়াম ক্লায়েন্ট](/developers/docs/nodes-and-clients/) এবং ওয়ালেটগুলি) ইন্টারঅপারেবল রাখতে সাহায্য করে এবং স্মার্ট কন্ট্র্যাক্ট ও ডিএ্যাপসগুলি যাতে কম্পোজেবল থাকে তা নিশ্চিত করে।
+ইথিরিয়াম কমিউনিটি অনেক স্ট্যান্ডার্ড গ্রহণ করেছে যা প্রজেক্টগুলোকে (যেমন [ইথিরিয়াম ক্লায়েন্ট](/developers/docs/nodes-and-clients/) এবং ওয়ালেট) বিভিন্ন ইমপ্লিমেন্টেশনের মধ্যে ইন্টারঅপারেবল রাখতে সাহায্য করে এবং নিশ্চিত করে যে স্মার্ট কন্ট্রাক্ট এবং ডিএ্যাপস কম্পোজেবল থাকে।
-সাধারণত স্ট্যান্ডার্ডগুলি [ইথেরিয়াম উন্নয়নের প্রস্তাব](/eips/) (EIPs) হিসাবে প্রবর্তিত হয়, যা কমিউনিটির সদস্যরা একটি [স্ট্যান্ডার্ড প্রক্রিয়ার](https://eips.ethereum.org/EIPS/eip-1) মাধ্যমে আলোচনা করেন।
+সাধারণত স্ট্যান্ডার্ডগুলো [ইথিরিয়াম ইমপ্রুভমেন্ট প্রপোজাল](/eips/) (EIPs) হিসেবে চালু করা হয়, যা কমিউনিটির সদস্যরা একটি [স্ট্যান্ডার্ড প্রক্রিয়ার](https://eips.ethereum.org/EIPS/eip-1) মাধ্যমে আলোচনা করেন।
-- [EIP-এর ভূমিকা](/eips/)
-- [EIP-গুলির তালিকা](https://eips.ethereum.org/)
-- [EIP GitHub রেপো](https://github.com/ethereum/EIPs)
-- [EIP ডিসকাশন বোর্ড](https://ethereum-magicians.org/c/eips)
-- [ইথেরিয়াম গভর্নেন্সের ভূমিকা](/governance/)
-- [ইথেরিয়াম গভর্নেন্স ওভারভিউ](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _মার্চ 31, 2019 - Boris Mann_
-- [ইথেরিয়াম প্রোটোকল ডেভেলপমেন্ট গভর্নেন্স এবং নেটওয়ার্ক আপগ্রেড কোঅর্ডিনেশন](https://hudsonjameson.com/posts/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _মার্চ 23, 2020 - Hudson Jameson_
-- [সমস্ত ইথেরিয়াম কোর ডেভ মিটিংয়ের প্লেলিস্ট](https://www.youtube.com/@EthereumProtocol) _(YouTube প্লেলিস্ট)_
+- [EIPs পরিচিতি](/eips/)
+- [EIPs এর তালিকা](https://eips.ethereum.org/)
+- [EIP গিটহাব রিপো (GitHub repo)](https://github.com/ethereum/EIPs)
+- [EIP আলোচনা বোর্ড](https://ethereum-magicians.org/c/eips)
+- [ইথিরিয়াম গভর্নেন্স পরিচিতি](/governance/)
+- [ইথিরিয়াম গভর্নেন্স ওভারভিউ](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _মার্চ 31, 2019 - বরিস মান (Boris Mann)_
+- [ইথিরিয়াম প্রটোকল ডেভেলপমেন্ট গভর্নেন্স এবং নেটওয়ার্ক আপগ্রেড কোঅর্ডিনেশন](https://hudsonjameson.com/posts/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _মার্চ 23, 2020 - হাডসন জেমসন (Hudson Jameson)_
+- [সকল ইথিরিয়াম কোর ডেভ মিটিংয়ের প্লেলিস্ট](https://www.youtube.com/@EthereumProtocol) _(ইউটিউব প্লেলিস্ট)_
-## স্ট্যান্ডার্ডের প্রকারভেদ {#types-of-standards}
+## স্ট্যান্ডার্ডের ধরন {#types-of-standards}
-3 ধরনের EIP আছে:
+3 ধরনের EIPs রয়েছে:
-- স্ট্যান্ডার্ড ট্র্যাক: এমন যেকোনো পরিবর্তন বর্ণনা করে যা বেশিরভাগ বা সমস্ত ইথেরিয়াম ইমপ্লিমেন্টেশনকে প্রভাবিত করে
-- [মেটা ট্র্যাক](https://eips.ethereum.org/meta): ইথেরিয়ামের চারপাশের একটি প্রক্রিয়া বর্ণনা করে বা একটি প্রক্রিয়ায় পরিবর্তনের প্রস্তাব দেয়
-- [ইনফরমেশনাল ট্র্যাক](https://eips.ethereum.org/informational): একটি ইথেরিয়াম ডিজাইন সমস্যা বর্ণনা করে বা ইথেরিয়াম কমিউনিটিকে সাধারণ নির্দেশিকা বা তথ্য প্রদান করে
+- স্ট্যান্ডার্ডস ট্র্যাক (Standards Track): এমন যেকোনো পরিবর্তনের বর্ণনা দেয় যা বেশিরভাগ বা সমস্ত ইথিরিয়াম ইমপ্লিমেন্টেশনকে প্রভাবিত করে
+- [মেটা ট্র্যাক (Meta Track)](https://eips.ethereum.org/meta): ইথিরিয়াম সম্পর্কিত কোনো প্রক্রিয়ার বর্ণনা দেয় বা কোনো প্রক্রিয়ায় পরিবর্তনের প্রস্তাব দেয়
+- [ইনফরমেশনাল ট্র্যাক (Informational Track)](https://eips.ethereum.org/informational): ইথিরিয়ামের ডিজাইনের কোনো সমস্যার বর্ণনা দেয় অথবা ইথিরিয়াম কমিউনিটিকে সাধারণ নির্দেশিকা বা তথ্য প্রদান করে
-উপরন্তু, স্ট্যান্ডার্ড ট্র্যাকটি 4টি বিভাগে বিভক্ত:
+এছাড়া, স্ট্যান্ডার্ড ট্র্যাককে 4টি ক্যাটাগরিতে ভাগ করা হয়েছে:
-- [কোর](https://eips.ethereum.org/core): এমন উন্নতি যার জন্য কনসেন্সাস ফর্ক প্রয়োজন
-- [নেটওয়ার্কিং](https://eips.ethereum.org/networking): devp2p এবং লাইট ইথেরিয়াম সাবপ্রোটোকলের উন্নতি, সেইসাথে whisper এবং swarm-এর নেটওয়ার্ক প্রোটোকল স্পেসিফিকেশনের প্রস্তাবিত উন্নতি।
-- [ইন্টারফেস](https://eips.ethereum.org/interface): ক্লায়েন্ট API/RPC স্পেসিফিকেশন এবং স্ট্যান্ডার্ডগুলির উন্নতি, এবং মেথডের নাম এবং কন্ট্র্যাক্ট ABI-এর মতো নির্দিষ্ট ল্যাঙ্গুয়েজ-লেভেল স্ট্যান্ডার্ড।
+- [কোর (Core)](https://eips.ethereum.org/core): এমন উন্নতি যার জন্য একটি কনসেন্সাস ফর্ক প্রয়োজন
+- [নেটওয়ার্কিং (Networking)](https://eips.ethereum.org/networking): devp2p এবং লাইট ইথিরিয়াম সাবপ্রটোকল (Light Ethereum Subprotocol) সম্পর্কিত উন্নতি, সেইসাথে whisper এবং swarm-এর নেটওয়ার্ক প্রটোকল স্পেসিফিকেশনের প্রস্তাবিত উন্নতি।
+- [ইন্টারফেস (Interface)](https://eips.ethereum.org/interface): ক্লায়েন্ট API/RPC স্পেসিফিকেশন এবং স্ট্যান্ডার্ড সম্পর্কিত উন্নতি, এবং মেথডের নাম ও কন্ট্রাক্ট ABI-এর মতো নির্দিষ্ট ল্যাঙ্গুয়েজ-লেভেল স্ট্যান্ডার্ড।
- [ERC](https://eips.ethereum.org/erc): অ্যাপ্লিকেশন-লেভেল স্ট্যান্ডার্ড এবং কনভেনশন
-এই বিভিন্ন প্রকার এবং বিভাগগুলির বিষয়ে আরও বিস্তারিত তথ্য [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types)-এ পাওয়া যাবে
+এই বিভিন্ন ধরন এবং ক্যাটাগরি সম্পর্কে আরও বিস্তারিত তথ্য [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types)-এ পাওয়া যাবে
### টোকেন স্ট্যান্ডার্ড {#token-standards}
-- [ERC-20](/developers/docs/standards/tokens/erc-20/) - ফাঞ্জিবল (বিনিময়যোগ্য) টোকেনের জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন ভোটিং টোকেন, স্টেকিং টোকেন বা ভার্চুয়াল কারেন্সি।
- - [ERC-223](/developers/docs/standards/tokens/erc-223/) - একটি ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড যা টোকেনগুলিকে ইথারের মতো আচরণ করতে সাহায্য করে এবং প্রাপকের দিকে টোকেন ট্রান্সফার হ্যান্ডলিং সমর্থন করে।
- - [ERC-1363](/developers/docs/standards/tokens/erc-1363/) - ERC-20 টোকেনের জন্য একটি এক্সটেনশন ইন্টারফেস যা একটি একক ট্রানজ্যাকশনে প্রাপক কন্ট্র্যাক্টে কলব্যাক এক্সিকিউট করা সমর্থন করে।
-- [ERC-721](/developers/docs/standards/tokens/erc-721/) - নন-ফাঞ্জিবল টোকেনের জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন কোনো শিল্পকর্ম বা গানের দলিল।
- - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - ধারাবাহিক টোকেন শনাক্তকারী ব্যবহার করে এক বা একাধিক নন-ফাঞ্জিবল টোকেন তৈরি/ট্রান্সফার করার সময় একটি স্ট্যান্ডার্ডাইজড ইভেন্ট নির্গত হয়।
+- [ERC-20](/developers/docs/standards/tokens/erc-20/) - ফান্জেবল (বিনিময়যোগ্য) টোকেনগুলোর জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন ভোটিং টোকেন, স্টেকিং টোকেন বা ভার্চুয়াল কারেন্সি।
+ - [ERC-223](/developers/docs/standards/tokens/erc-223/) - একটি ফান্জেবল টোকেন স্ট্যান্ডার্ড যা টোকেনগুলোকে ইথারের মতো আচরণ করতে সাহায্য করে এবং প্রাপকের দিকে টোকেন ট্রান্সফার হ্যান্ডলিং সমর্থন করে।
+ - [ERC-1363](/developers/docs/standards/tokens/erc-1363/) - ERC-20 টোকেনগুলোর জন্য একটি এক্সটেনশন ইন্টারফেস যা একটি একক লেনদেনে প্রাপক কন্ট্রাক্টগুলোতে কলব্যাক এক্সিকিউট করা সমর্থন করে।
+- [ERC-721](/developers/docs/standards/tokens/erc-721/) - নন-ফান্জেবল টোকেনগুলোর জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন কোনো শিল্পকর্ম বা গানের দলিল।
+ - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - একটি স্ট্যান্ডার্ডাইজড ইভেন্ট যা এক বা একাধিক নন-ফান্জেবল টোকেন তৈরি/ট্রান্সফার করার সময় পরপর টোকেন আইডেন্টিফায়ার ব্যবহার করে নির্গত হয়।
- [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400) - EIP-721 কনজিউমার রোলের জন্য ইন্টারফেস এক্সটেনশন।
- - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907) - ERC-721 টোকেনে সীমাবদ্ধ অনুমতিসহ একটি সময়-সীমিত রোল যোগ করুন।
-- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(সুপারিশ করা হয় না)** একটি টোকেন স্ট্যান্ডার্ড যা ERC-20-এর চেয়ে উন্নত।
-- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - একটি টোকেন স্ট্যান্ডার্ড যাতে ফাঞ্জিবল এবং নন-ফাঞ্জিবল উভয় অ্যাসেট থাকতে পারে।
-- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - একটি টোকেনাইজড ভল্ট স্ট্যান্ডার্ড যা ইল্ড-বিয়ারিং ভল্টের প্রযুক্তিগত প্যারামিটারগুলিকে অপটিমাইজ এবং ইউনিফাই করার জন্য ডিজাইন করা হয়েছে।
+ - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907) - ERC-721 টোকেনগুলোতে সীমাবদ্ধ পারমিশনসহ একটি সময়-সীমিত রোল যোগ করে।
+- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(সুপারিশকৃত নয়)** ERC-20 এর চেয়ে উন্নত একটি টোকেন স্ট্যান্ডার্ড।
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - একটি টোকেন স্ট্যান্ডার্ড যা ফান্জেবল এবং নন-ফান্জেবল উভয় ধরনের অ্যাসেট ধারণ করতে পারে।
+- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - একটি টোকেনাইজড ভল্ট স্ট্যান্ডার্ড যা ইল্ড-বেয়ারিং ভল্টগুলোর টেকনিক্যাল প্যারামিটারগুলোকে অপ্টিমাইজ এবং একীভূত করার জন্য ডিজাইন করা হয়েছে।
[টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/) সম্পর্কে আরও জানুন।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ইথেরিয়াম উন্নয়নের প্রস্তাব (EIPs)](/eips/)
+- [ইথিরিয়াম ইমপ্রুভমেন্ট প্রপোজাল (EIPs)](/eips/)
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/erc-1155/index.md b/public/content/translations/bn/developers/docs/standards/tokens/erc-1155/index.md
index db02b8c9ea2..2d610296a5c 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/erc-1155/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/erc-1155/index.md
@@ -1,35 +1,35 @@
---
-title: "ERC-1155 মাল্টি-টোকেন স্ট্যান্ডার্ড"
-description: "ERC-1155 সম্পর্কে জানুন, একটি মাল্টি-টোকেন স্ট্যান্ডার্ড যা একটি একক কন্ট্র্যাক্টে ফাঞ্জিবল এবং নন-ফাঞ্জিবল টোকেনকে একত্রিত করে।"
+title: ERC-1155 মাল্টি-টোকেন স্ট্যান্ডার্ড
+description: ERC-1155 সম্পর্কে জানুন, এটি একটি মাল্টি-টোকেন স্ট্যান্ডার্ড যা একটি একক কন্ট্রাক্টে ফান্জেবল এবং নন-ফান্জেবল টোকেনগুলোকে একত্রিত করে।
lang: bn
---
## ভূমিকা {#introduction}
-একাধিক টোকেন প্রকার পরিচালনাকারী কন্ট্র্যাক্টগুলির জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস। একটি একক ডেপ্লয়েড কন্ট্র্যাক্টে ফাঞ্জিবল টোকেন, নন-ফাঞ্জিবল টোকেন বা অন্যান্য কনফিগারেশনের (যেমন, সেমি-ফাঞ্জিবল টোকেন) যেকোনো সংমিশ্রণ অন্তর্ভুক্ত থাকতে পারে।
+একাধিক টোকেন টাইপ পরিচালনা করে এমন কন্ট্রাক্টগুলোর জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস। একটি একক ডেপ্লয় করা কন্ট্রাক্টে ফান্জেবল টোকেন, নন-ফান্জেবল টোকেন বা অন্যান্য কনফিগারেশনের (যেমন, সেমি-ফান্জেবল টোকেন) যেকোনো সমন্বয় অন্তর্ভুক্ত থাকতে পারে।
**মাল্টি-টোকেন স্ট্যান্ডার্ড বলতে কী বোঝায়?**
-এর ধারণাটি সহজ এবং এটি এমন একটি স্মার্ট কন্ট্র্যাক্ট ইন্টারফেস তৈরি করতে চায় যা যেকোনো সংখ্যক ফাঞ্জিবল এবং নন-ফাঞ্জিবল টোকেন প্রকারকে উপস্থাপন এবং নিয়ন্ত্রণ করতে পারে। এইভাবে, ERC-1155 টোকেন একটি [ERC-20](/developers/docs/standards/tokens/erc-20/) এবং [ERC-721](/developers/docs/standards/tokens/erc-721/) টোকেনের মতো একই কাজ করতে পারে, এবং এমনকি একই সময়ে উভয়ই করতে পারে। এটি ERC-20 এবং ERC-721 উভয় স্ট্যান্ডার্ডের কার্যকারিতা উন্নত করে, এটিকে আরও কার্যকর করে তোলে এবং সুস্পষ্ট ইমপ্লিমেন্টেশন ত্রুটি সংশোধন করে।
+ধারণাটি সহজ এবং এটি এমন একটি স্মার্ট কন্ট্রাক্ট ইন্টারফেস তৈরি করতে চায় যা যেকোনো সংখ্যক ফান্জেবল এবং নন-ফান্জেবল টোকেন টাইপকে উপস্থাপন এবং নিয়ন্ত্রণ করতে পারে। এইভাবে, ERC-1155 টোকেন একটি [ERC-20](/developers/docs/standards/tokens/erc-20/) এবং [ERC-721](/developers/docs/standards/tokens/erc-721/) টোকেনের মতো একই কাজ করতে পারে এবং এমনকি একই সাথে উভয় কাজও করতে পারে। এটি ERC-20 এবং ERC-721 উভয় স্ট্যান্ডার্ডের কার্যকারিতা উন্নত করে, এটিকে আরও দক্ষ করে তোলে এবং সুস্পষ্ট বাস্তবায়ন ত্রুটিগুলো সংশোধন করে।
-ERC-1155 টোকেনটি [EIP-1155](https://eips.ethereum.org/EIPS/eip-1155)-এ সম্পূর্ণরূপে বর্ণনা করা হয়েছে।
+ERC-1155 টোকেনটি [EIP-1155](https://eips.ethereum.org/EIPS/eip-1155)-এ সম্পূর্ণভাবে বর্ণনা করা হয়েছে।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/), [ERC-20](/developers/docs/standards/tokens/erc-20/) এবং [ERC-721](/developers/docs/standards/tokens/erc-721/) সম্পর্কে পড়ার পরামর্শ দিই।
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/), [ERC-20](/developers/docs/standards/tokens/erc-20/), এবং [ERC-721](/developers/docs/standards/tokens/erc-721/) সম্পর্কে পড়ুন।
-## ERC-1155 ফাংশন এবং বৈশিষ্ট্য: {#body}
+## ERC-1155 এর ফাংশন এবং বৈশিষ্ট্যসমূহ: {#body}
-- [ব্যাচ ট্রান্সফার](#batch_transfers): একটি কলে একাধিক অ্যাসেট ট্রান্সফার করুন।
-- [ব্যাচ ব্যালেন্স](#batch_balance): একটি কলে একাধিক অ্যাসেটের ব্যালেন্স পান।
-- [ব্যাচ অ্যাপ্রুভাল](#batch_approval): একটি অ্যাড্রেসে সমস্ত টোকেন অ্যাপ্রুভ করুন।
-- [হুক](#receive_hook): টোকেন হুক গ্রহণ করুন।
-- [NFT সাপোর্ট](#nft_support): সাপ্লাই মাত্র 1 হলে, এটিকে NFT হিসাবে গণ্য করুন।
+- [ব্যাচ ট্রান্সফার](#batch_transfers): একটি একক কলে একাধিক অ্যাসেট ট্রান্সফার করুন।
+- [ব্যাচ ব্যালেন্স](#batch_balance): একটি একক কলে একাধিক অ্যাসেটের ব্যালেন্স পান।
+- [ব্যাচ অ্যাপ্রুভাল](#batch_approval): একটি এডড্রেস-এ সমস্ত টোকেন অনুমোদন করুন।
+- [হুকস](#receive_hook): রিসিভ টোকেনস হুক।
+- [NFT সাপোর্ট](#nft_support): যদি সাপ্লাই শুধুমাত্র 1 হয়, তবে এটিকে NFT হিসেবে বিবেচনা করুন।
- [নিরাপদ ট্রান্সফার নিয়ম](#safe_transfer_rule): নিরাপদ ট্রান্সফারের জন্য নিয়মের সেট।
### ব্যাচ ট্রান্সফার {#batch-transfers}
-ব্যাচ ট্রান্সফারটি সাধারণ ERC-20 ট্রান্সফারের মতোই কাজ করে। আসুন সাধারণ ERC-20 `transferFrom` ফাংশনটি দেখি:
+ব্যাচ ট্রান্সফার সাধারণ ERC-20 ট্রান্সফারের মতোই কাজ করে। চলুন সাধারণ ERC-20 `transferFrom` ফাংশনটি দেখি:
```solidity
// ERC-20
@@ -45,17 +45,17 @@ function safeBatchTransferFrom(
) external;
```
-ERC-1155-এর একমাত্র পার্থক্য হলো আমরা মানগুলিকে একটি অ্যারে হিসাবে এবং আইডিগুলির একটি অ্যারেও পাস করি। উদাহরণস্বরূপ, `ids=[3, 6, 13]` এবং `values=[100, 200, 5]` দেওয়া থাকলে, ফলাফলস্বরূপ ট্রান্সফারগুলি হবে
+ERC-1155-এ একমাত্র পার্থক্য হলো আমরা ভ্যালুগুলোকে একটি অ্যারে হিসেবে পাস করি এবং আমরা id-গুলোর একটি অ্যারেও পাস করি। উদাহরণস্বরূপ, যদি `ids=[3, 6, 13]` এবং `values=[100, 200, 5]` দেওয়া হয়, তবে এর ফলে যে ট্রান্সফারগুলো হবে তা হলো
-1. `_from` থেকে `_to`-তে id 3 সহ 100টি টোকেন ট্রান্সফার করুন।
-2. `_from` থেকে `_to`-তে id 6 সহ 200টি টোকেন ট্রান্সফার করুন।
-3. `_from` থেকে `_to`-তে id 13 সহ 5টি টোকেন ট্রান্সফার করুন।
+1. `_from` থেকে `_to`-তে 3 id যুক্ত 100টি টোকেন ট্রান্সফার।
+2. `_from` থেকে `_to`-তে 6 id যুক্ত 200টি টোকেন ট্রান্সফার।
+3. `_from` থেকে `_to`-তে 13 id যুক্ত 5টি টোকেন ট্রান্সফার।
-ERC-1155-এ আমাদের কেবল `transferFrom` আছে, `transfer` নেই। এটিকে একটি সাধারণ `transfer`-এর মতো ব্যবহার করতে, শুধুমাত্র from অ্যাড্রেসটিকে ফাংশন কল করা অ্যাড্রেসে সেট করুন।
+ERC-1155-এ আমাদের শুধুমাত্র `transferFrom` আছে, কোনো `transfer` নেই। এটিকে একটি সাধারণ `transfer`-এর মতো ব্যবহার করতে, শুধুমাত্র from এডড্রেস-টিকে সেই এডড্রেস-এ সেট করুন যা ফাংশনটিকে কল করছে।
### ব্যাচ ব্যালেন্স {#batch-balance}
-সংশ্লিষ্ট ERC-20 `balanceOf` কলেরও ব্যাচ সাপোর্টসহ তার পার্টনার ফাংশন রয়েছে। মনে করিয়ে দেওয়া যাক, এটি হলো ERC-20 সংস্করণ:
+সংশ্লিষ্ট ERC-20 `balanceOf` কলেরও একইভাবে ব্যাচ সাপোর্টসহ এর পার্টনার ফাংশন রয়েছে। মনে করিয়ে দেওয়ার জন্য, এটি হলো ERC-20 সংস্করণ:
```solidity
// ERC-20
@@ -68,9 +68,9 @@ function balanceOfBatch(
) external view returns (uint256[] memory);
```
-ব্যালেন্স কলের জন্য আরও সহজ হলো, আমরা একটি কলে একাধিক ব্যালেন্স পুনরুদ্ধার করতে পারি। আমরা মালিকদের অ্যারে পাস করি, তারপরে টোকেন আইডিগুলির অ্যারে।
+ব্যালেন্স কলের জন্য এটি আরও সহজ, আমরা একটি একক কলে একাধিক ব্যালেন্স পুনরুদ্ধার করতে পারি। আমরা ওনারদের (owners) অ্যারে পাস করি, এরপর টোকেন id-গুলোর অ্যারে পাস করি।
-উদাহরণস্বরূপ `_ids=[3, 6, 13]` এবং `_owners=[0xbeef..., 0x1337..., 0x1111...]` দেওয়া থাকলে, রিটার্ন ভ্যালু হবে
+উদাহরণস্বরূপ, যদি `_ids=[3, 6, 13]` এবং `_owners=[0xbeef..., 0x1337..., 0x1111...]` দেওয়া হয়, তবে রিটার্ন ভ্যালু হবে
```solidity
[
@@ -95,11 +95,11 @@ function isApprovedForAll(
) external view returns (bool);
```
-অ্যাপ্রুভালগুলি ERC-20 থেকে কিছুটা আলাদা। নির্দিষ্ট পরিমাণ অ্যাপ্রুভ করার পরিবর্তে, আপনি `setApprovalForAll`-এর মাধ্যমে একজন অপারেটরকে অ্যাপ্রুভড বা নট অ্যাপ্রুভড হিসাবে সেট করেন।
+অ্যাপ্রুভালগুলো ERC-20 এর চেয়ে কিছুটা আলাদা। নির্দিষ্ট পরিমাণ অনুমোদন করার পরিবর্তে, আপনি `setApprovalForAll`-এর মাধ্যমে একজন অপারেটরকে অনুমোদিত বা অননুমোদিত হিসেবে সেট করেন।
-`isApprovedForAll`-এর মাধ্যমে বর্তমান স্ট্যাটাস পড়া যেতে পারে। আপনি যেমন দেখতে পাচ্ছেন, এটি একটি অল-অর-নাথিং অপারেশন। আপনি কতগুলি টোকেন অ্যাপ্রুভ করবেন বা এমনকি কোন টোকেন ক্লাস তাও নির্ধারণ করতে পারবেন না।
+বর্তমান স্ট্যাটাস পড়া `isApprovedForAll`-এর মাধ্যমে করা যেতে পারে। যেমনটি আপনি দেখতে পাচ্ছেন, এটি একটি অল-অর-নাথিং (all-or-nothing) অপারেশন। আপনি কতগুলো টোকেন অনুমোদন করবেন বা এমনকি কোন টোকেন ক্লাস তা নির্ধারণ করতে পারবেন না।
-এটি ইচ্ছাকৃতভাবে সরলতাকে মাথায় রেখে ডিজাইন করা হয়েছে। আপনি শুধুমাত্র একটি অ্যাড্রেসের জন্য সবকিছু অ্যাপ্রুভ করতে পারেন।
+এটি ইচ্ছাকৃতভাবে সরলতার কথা মাথায় রেখে ডিজাইন করা হয়েছে। আপনি শুধুমাত্র একটি এডড্রেস-এর জন্য সবকিছু অনুমোদন করতে পারেন।
### রিসিভ হুক {#receive-hook}
@@ -113,34 +113,34 @@ function onERC1155BatchReceived(
) external returns(bytes4);
```
-[EIP-165](https://eips.ethereum.org/EIPS/eip-165) সাপোর্ট দেওয়া থাকায়, ERC-1155 শুধুমাত্র স্মার্ট কন্ট্র্যাক্টের জন্য রিসিভ হুক সাপোর্ট করে। হুক ফাংশনটিকে অবশ্যই একটি ম্যাজিক পূর্বনির্ধারিত bytes4 ভ্যালু রিটার্ন করতে হবে যা এইরকম:
+[EIP-165](https://eips.ethereum.org/EIPS/eip-165) সাপোর্টের কারণে, ERC-1155 শুধুমাত্র স্মার্ট কন্ট্রাক্ট-এর জন্য রিসিভ হুক সাপোর্ট করে। হুক ফাংশনটিকে অবশ্যই একটি ম্যাজিক পূর্বনির্ধারিত bytes4 ভ্যালু রিটার্ন করতে হবে যা নিচে দেওয়া হলো:
```solidity
bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
```
-যখন রিসিভিং কন্ট্র্যাক্ট এই মানটি রিটার্ন করে, তখন ধরে নেওয়া হয় যে কন্ট্র্যাক্টটি ট্রান্সফার গ্রহণ করে এবং ERC-1155 টোকেনগুলি কীভাবে হ্যান্ডেল করতে হয় তা জানে। দারুণ, কোনো কন্ট্র্যাক্টে আর টোকেন আটকে থাকবে না!
+যখন রিসিভিং কন্ট্রাক্ট এই ভ্যালুটি রিটার্ন করে, তখন ধরে নেওয়া হয় যে কন্ট্রাক্টটি ট্রান্সফার গ্রহণ করে এবং জানে কীভাবে ERC-1155 টোকেনগুলো পরিচালনা করতে হয়। দারুণ, একটি কন্ট্রাক্ট-এ আর কোনো আটকে থাকা টোকেন নেই!
### NFT সাপোর্ট {#nft-support}
-যখন সাপ্লাই মাত্র একটি হয়, তখন টোকেনটি মূলত একটি নন-ফাঞ্জিবল টোকেন (NFT)। এবং ERC-721-এর জন্য স্ট্যান্ডার্ড হিসাবে, আপনি একটি মেটাডেটা URL সংজ্ঞায়িত করতে পারেন। URL-টি ক্লায়েন্টদের দ্বারা পড়া এবং পরিবর্তন করা যেতে পারে, [এখানে](https://eips.ethereum.org/EIPS/eip-1155#metadata) দেখুন।
+যখন সাপ্লাই শুধুমাত্র একটি হয়, তখন টোকেনটি মূলত একটি নন-ফান্জেবল টোকেন (NFT)। এবং ERC-721 এর স্ট্যান্ডার্ড অনুযায়ী, আপনি একটি মেটাডেটা URL সংজ্ঞায়িত করতে পারেন। URL-টি ক্লায়েন্ট-দের দ্বারা পড়া এবং পরিবর্তন করা যেতে পারে, [এখানে](https://eips.ethereum.org/EIPS/eip-1155#metadata) দেখুন।
### নিরাপদ ট্রান্সফার নিয়ম {#safe-transfer-rule}
-আমরা আগের ব্যাখ্যাগুলিতে ইতিমধ্যে কয়েকটি নিরাপদ ট্রান্সফার নিয়ম আলোচনা করেছি। তবে আসুন সবচেয়ে গুরুত্বপূর্ণ নিয়মগুলি দেখি:
+আমরা পূর্ববর্তী ব্যাখ্যাগুলোতে ইতিমধ্যে কয়েকটি নিরাপদ ট্রান্সফার নিয়ম নিয়ে আলোচনা করেছি। তবে চলুন সবচেয়ে গুরুত্বপূর্ণ নিয়মগুলো দেখি:
-1. কলারকে `_from` অ্যাড্রেসের জন্য টোকেন খরচ করার জন্য অ্যাপ্রুভড হতে হবে অথবা কলারকে `_from`-এর সমান হতে হবে।
-2. ট্রান্সফার কলটি অবশ্যই রিভার্ট হবে যদি
- 1. `_to` অ্যাড্রেস 0 হয়।
+1. কলারকে (caller) `_from` এডড্রেস-এর জন্য টোকেন খরচ করার অনুমোদন থাকতে হবে অথবা কলারকে `_from`-এর সমান হতে হবে।
+2. ট্রান্সফার কলটি অবশ্যই রিভার্ট (revert) হবে যদি
+ 1. `_to` এডড্রেস 0 হয়।
2. `_ids`-এর দৈর্ঘ্য `_values`-এর দৈর্ঘ্যের সমান না হয়।
- 3. `_ids`-এর মধ্যে থাকা টোকেন(গুলি)-র জন্য হোল্ডার(দের)-র ব্যালেন্স(গুলি)-র মধ্যে কোনোটি প্রাপকের কাছে পাঠানো `_values`-এর সংশ্লিষ্ট পরিমাণ(গুলি)-র থেকে কম হয়।
+ 3. `_ids`-এ থাকা টোকেন(গুলোর) জন্য হোল্ডার(দের) যেকোনো ব্যালেন্স প্রাপকের কাছে পাঠানো `_values`-এর সংশ্লিষ্ট পরিমাণ(গুলোর) চেয়ে কম হয়।
4. অন্য কোনো ত্রুটি ঘটে।
-_দ্রষ্টব্য_: হুকসহ সমস্ত ব্যাচ ফাংশন ব্যাচ ছাড়া সংস্করণ হিসাবেও বিদ্যমান। এটি গ্যাস দক্ষতার জন্য করা হয়েছে, কারণ শুধুমাত্র একটি অ্যাসেট ট্রান্সফার করাই সম্ভবত সবচেয়ে বেশি ব্যবহৃত উপায় হিসেবে থাকবে। নিরাপদ ট্রান্সফার নিয়মসহ ব্যাখ্যার সরলতার জন্য আমরা সেগুলোকে বাদ দিয়েছি। নামগুলি অভিন্ন, শুধু 'ব্যাচ' সরিয়ে দিন।
+_দ্রষ্টব্য_: হুকসহ সমস্ত ব্যাচ ফাংশন ব্যাচ ছাড়া সংস্করণ হিসেবেও বিদ্যমান। এটি গ্যাস দক্ষতার জন্য করা হয়েছে, কারণ শুধুমাত্র একটি অ্যাসেট ট্রান্সফার করাই সম্ভবত সবচেয়ে বেশি ব্যবহৃত উপায় হবে। নিরাপদ ট্রান্সফার নিয়মসহ ব্যাখ্যাগুলোতে সরলতার জন্য আমরা সেগুলোকে বাদ দিয়েছি। নামগুলো অভিন্ন, শুধু 'Batch' শব্দটি সরিয়ে দিন।
## আরও পড়ুন {#further-reading}
- [EIP-1155: মাল্টি টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-1155)
-- [ERC-1155: Openzeppelin ডক্স](https://docs.openzeppelin.com/contracts/5.x/erc1155)
-- [ERC-1155: GitHub রেপো](https://github.com/enjin/erc-1155)
-- [Alchemy NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart)
+- [ERC-1155: ওপেনজেপেলিন ডক্স](https://docs.openzeppelin.com/contracts/5.x/erc1155)
+- [ERC-1155: গিটহাব রিপো](https://github.com/enjin/erc-1155)
+- [অ্যালকেমি NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/erc-1363/index.md b/public/content/translations/bn/developers/docs/standards/tokens/erc-1363/index.md
index ed5d48775cb..6fb764e0e13 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/erc-1363/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/erc-1363/index.md
@@ -1,142 +1,132 @@
---
-title: "ERC-1363 প্রদেয় টোকেন স্ট্যান্ডার্ড"
-description: "ERC-1363 হল ERC-20 টোকেনগুলির জন্য একটি এক্সটেনশন ইন্টারফেস যা একটি একক লেনদেনের মধ্যে ট্রান্সফারের পরে প্রাপক কন্ট্র্যাক্টে বা অনুমোদনের পরে স্পেন্ডার কন্ট্র্যাক্টে কাস্টম লজিক এক্সিকিউট করা সমর্থন করে।"
+title: ERC-1363 পেয়েবল টোকেন স্ট্যান্ডার্ড
+description: ERC-1363 হলো ERC-20 টোকেনগুলোর জন্য একটি এক্সটেনশন ইন্টারফেস যা ট্রান্সফারের পরে প্রাপক কন্ট্রাক্টে বা অনুমোদনের পরে স্পেন্ডার কন্ট্রাক্টে কাস্টম লজিক এক্সিকিউট করতে সহায়তা করে, এবং এই সবকিছু একটিমাত্র লেনদেনের মধ্যেই সম্পন্ন হয়।
lang: bn
---
## ভূমিকা {#introduction}
-### ERC-1363 কি? {#what-is-erc1363}
+### ERC-1363 কী? {#what-is-erc1363}
-ERC-1363 হল ERC-20 টোকেনগুলির জন্য একটি এক্সটেনশন ইন্টারফেস যা একটি একক লেনদেনের মধ্যে ট্রান্সফারের পরে প্রাপক কন্ট্র্যাক্টে বা অনুমোদনের পরে স্পেন্ডার কন্ট্র্যাক্টে কাস্টম লজিক এক্সিকিউট করা সমর্থন করে।
+ERC-1363 হলো ERC-20 টোকেনগুলোর জন্য একটি এক্সটেনশন ইন্টারফেস যা ট্রান্সফারের পরে প্রাপক কন্ট্রাক্টে বা অনুমোদনের পরে স্পেন্ডার কন্ট্রাক্টে কাস্টম লজিক এক্সিকিউট করতে সহায়তা করে, এবং এই সবকিছু একটিমাত্র লেনদেনের মধ্যেই সম্পন্ন হয়।
### ERC-20 থেকে পার্থক্য {#erc20-differences}
-`transfer`, `transferFrom` এবং `approve`-এর মতো স্ট্যান্ডার্ড ERC-20 অপারেশনগুলি একটি পৃথক লেনদেন ছাড়া প্রাপক বা স্পেন্ডার কন্ট্র্যাক্টে কোড এক্সিকিউশনের অনুমতি দেয় না।
-এটি UI ডেভেলপমেন্টে জটিলতা নিয়ে আসে এবং গ্রহণে ঘর্ষণ সৃষ্টি করে কারণ ব্যবহারকারীদের প্রথম লেনদেনটি এক্সিকিউট হওয়ার জন্য অপেক্ষা করতে হয় এবং তারপর দ্বিতীয়টি জমা দিতে হয়।
-তাদেরকে দুবার GAS প্রদান করতে হয়।
+স্ট্যান্ডার্ড ERC-20 অপারেশন যেমন `transfer`, `transferFrom` এবং `approve`, আলাদা কোনো লেনদেন ছাড়া প্রাপক বা স্পেন্ডার কন্ট্রাক্টে কোড এক্সিকিউট করার অনুমতি দেয় না।
+এটি ইউজার ইন্টারফেস (UI) ডেভেলপমেন্টে জটিলতা তৈরি করে এবং গ্রহণের ক্ষেত্রে বাধা সৃষ্টি করে কারণ ব্যবহারকারীদের প্রথম লেনদেনটি এক্সিকিউট হওয়া পর্যন্ত অপেক্ষা করতে হয় এবং তারপর দ্বিতীয়টি সাবমিট করতে হয়।
+তাদেরকে দুইবার গ্যাস (GAS) ফি-ও দিতে হয়।
-ERC-1363 ফাঞ্জিবল টোকেনকে আরও সহজে কাজ সম্পাদন করতে এবং কোনো অফ-চেইন লিসেনার ব্যবহার না করেই কাজ করতে সক্ষম করে তোলে।
-এটি একটি একক লেনদেনে, একটি ট্রান্সফার বা অনুমোদনের পরে, একটি রিসিভার বা স্পেন্ডার কন্ট্র্যাক্টে একটি কলব্যাক করার অনুমতি দেয়।
+ERC-1363 ফাঞ্জিবল টোকেনগুলোকে আরও সহজে কাজ করতে এবং কোনো অফচেইন লিসেনার ব্যবহার ছাড়াই কাজ করতে সক্ষম করে তোলে।
+এটি একটি ট্রান্সফার বা অনুমোদনের পরে, একটিমাত্র লেনদেনের মাধ্যমে রিসিভার বা স্পেন্ডার কন্ট্রাক্টে কলব্যাক করার অনুমতি দেয়।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে নিম্নলিখিত বিষয়গুলি সম্পর্কে পড়ার পরামর্শ দিই:
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে এগুলো সম্পর্কে পড়ুন:
- [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/)
- [ERC-20](/developers/docs/standards/tokens/erc-20/)
-## বডি {#body}
+## মূল অংশ {#body}
-ERC-1363 `transfer`, `transferFrom` বা `approve`-এর পরে স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য ERC-20 টোকেনগুলির জন্য একটি স্ট্যান্ডার্ড API চালু করে।
+ERC-1363, ERC-20 টোকেনগুলোর জন্য একটি স্ট্যান্ডার্ড API নিয়ে এসেছে যাতে `transfer`, `transferFrom` বা `approve` এর পরে স্মার্ট কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করা যায়।
-এই স্ট্যান্ডার্ডটি টোকেন ট্রান্সফার করার জন্য প্রাথমিক কার্যকারিতা প্রদান করে, পাশাপাশি টোকেনগুলিকে অনুমোদিত হতে দেয় যাতে সেগুলি অন্য একটি অন-চেইন থার্ড পার্টি দ্বারা ব্যয় করা যায়, এবং তারপর রিসিভার বা স্পেন্ডার কন্ট্র্যাক্টে একটি কলব্যাক করে।
+এই স্ট্যান্ডার্ডটি টোকেন ট্রান্সফার করার প্রাথমিক কার্যকারিতা প্রদান করে, পাশাপাশি টোকেনগুলোকে অনুমোদন করার অনুমতি দেয় যাতে সেগুলো অন্য কোনো অনচেইন থার্ড পার্টি দ্বারা খরচ করা যায় এবং তারপর রিসিভার বা স্পেন্ডার কন্ট্রাক্টে কলব্যাক করা যায়।
-স্মার্ট কন্ট্র্যাক্টের অনেক প্রস্তাবিত ব্যবহার রয়েছে যা ERC-20 কলব্যাক গ্রহণ করতে পারে।
+স্মার্ট কন্ট্রাক্টগুলোর অনেক প্রস্তাবিত ব্যবহার রয়েছে যা ERC-20 কলব্যাক গ্রহণ করতে পারে।
উদাহরণস্বরূপ:
-- **ক্রাউডসেল**: পাঠানো টোকেনগুলি তাৎক্ষণিক পুরস্কার বরাদ্দকে ট্রিগার করে।
-- **পরিষেবা**: পেমেন্ট এক ধাপে পরিষেবা অ্যাক্সেস সক্রিয় করে।
-- **চালান**: টোকেনগুলি স্বয়ংক্রিয়ভাবে চালান নিষ্পত্তি করে।
-- **সাবস্ক্রিপশন**: বার্ষিক হার অনুমোদন করা প্রথম মাসের পেমেন্টের মধ্যে সাবস্ক্রিপশন সক্রিয় করে।
+- **ক্রাউডসেল**: পাঠানো টোকেনগুলো তাৎক্ষণিক রিওয়ার্ড বরাদ্দের ট্রিগার করে।
+- **পরিষেবা**: পেমেন্ট এক ধাপেই পরিষেবা অ্যাক্সেস সক্রিয় করে।
+- **ইনভয়েস**: টোকেনগুলো স্বয়ংক্রিয়ভাবে ইনভয়েস নিষ্পত্তি করে।
+- **সাবস্ক্রিপশন**: বার্ষিক রেট অনুমোদন করলে প্রথম মাসের পেমেন্টের মধ্যেই সাবস্ক্রিপশন সক্রিয় হয়ে যায়।
-এই কারণগুলির জন্য এটিকে মূলত **"প্রদেয় টোকেন"** নামকরণ করা হয়েছিল।
+এসব কারণে এর মূল নাম দেওয়া হয়েছিল **"পেয়েবল টোকেন"**।
-কলব্যাক আচরণটি এর উপযোগিতাকে আরও প্রসারিত করে, যার ফলে নিম্নলিখিতগুলির মতো নির্বিঘ্ন ইন্টারঅ্যাকশন সক্ষম হয়:
+কলব্যাক আচরণ এর উপযোগিতাকে আরও প্রসারিত করে, যা নিচের মতো নিরবচ্ছিন্ন ইন্টারঅ্যাকশনগুলোকে সক্ষম করে:
-- **স্টেকিং**: ট্রান্সফার করা টোকেন একটি স্টেকিং কন্ট্র্যাক্টে স্বয়ংক্রিয় লকিং ট্রিগার করে।
-- **ভোটিং**: প্রাপ্ত টোকেনগুলি একটি গভর্নেন্স সিস্টেমে ভোট রেজিস্টার করে।
-- **সোয়াপিং**: টোকেন অনুমোদনগুলি এক ধাপে সোয়াপ লজিক সক্রিয় করে।
+- **স্টেকিং**: ট্রান্সফার করা টোকেনগুলো একটি স্টেকিং কন্ট্রাক্টে স্বয়ংক্রিয় লকিং ট্রিগার করে।
+- **ভোটিং**: প্রাপ্ত টোকেনগুলো একটি গভর্নেন্স সিস্টেমে ভোট নিবন্ধন করে।
+- **সোয়াপিং**: টোকেন অনুমোদন এক ধাপেই সোয়াপ লজিক সক্রিয় করে।
-ERC-1363 টোকেনগুলি সেই সমস্ত ক্ষেত্রে নির্দিষ্ট ইউটিলিটির জন্য ব্যবহার করা যেতে পারে যেখানে একটি ট্রান্সফার বা অনুমোদন প্রাপ্তির পরে একটি কলব্যাক এক্সিকিউট করার প্রয়োজন হয়।
-ERC-1363 প্রাপকের টোকেন পরিচালনা করার ক্ষমতা যাচাই করে স্মার্ট কন্ট্র্যাক্টে টোকেন হারানো বা টোকেন লক হওয়া এড়াতেও উপযোগী।
+ERC-1363 টোকেনগুলো এমন সব ক্ষেত্রে নির্দিষ্ট উপযোগিতার জন্য ব্যবহার করা যেতে পারে যেখানে ট্রান্সফার বা অনুমোদন পাওয়ার পরে একটি কলব্যাক এক্সিকিউট করা প্রয়োজন।
+প্রাপকের টোকেন পরিচালনা করার ক্ষমতা যাচাই করার মাধ্যমে স্মার্ট কন্ট্রাক্টগুলোতে টোকেন হারানো বা টোকেন লক হওয়া এড়াতেও ERC-1363 কার্যকর।
-অন্যান্য ERC-20 এক্সটেনশন প্রস্তাবগুলির থেকে ভিন্ন, ERC-1363 ERC-20 `transfer` এবং `transferFrom` মেথডগুলিকে ওভাররাইড করে না এবং ERC-20 এর সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রেখে ইমপ্লিমেন্ট করার জন্য ইন্টারফেস আইডিগুলিকে সংজ্ঞায়িত করে।
+অন্যান্য ERC-20 এক্সটেনশন প্রস্তাবগুলোর বিপরীতে, ERC-1363, ERC-20 এর `transfer` এবং `transferFrom` মেথডগুলোকে ওভাররাইড করে না এবং ERC-20 এর সাথে ব্যাকওয়ার্ড সামঞ্জস্য বজায় রেখে ইমপ্লিমেন্ট করার জন্য ইন্টারফেস আইডিগুলো সংজ্ঞায়িত করে।
[EIP-1363](https://eips.ethereum.org/EIPS/eip-1363) থেকে:
-### মেথড {#methods}
+### মেথডগুলো {#methods}
-ERC-1363 স্ট্যান্ডার্ড ইমপ্লিমেন্ট করা স্মার্ট কন্ট্র্যাক্টগুলিকে `ERC1363` ইন্টারফেসের সমস্ত ফাংশন, পাশাপাশি `ERC20` এবং `ERC165` ইন্টারফেসগুলিও **অবশ্যই** ইমপ্লিমেন্ট করতে হবে।
+ERC-1363 স্ট্যান্ডার্ড ইমপ্লিমেন্ট করা স্মার্ট কন্ট্রাক্টগুলোকে **অবশ্যই** `ERC1363` ইন্টারফেসের সমস্ত ফাংশন, সেইসাথে `ERC20` এবং `ERC165` ইন্টারফেসগুলো ইমপ্লিমেন্ট করতে হবে।
```solidity
pragma solidity ^0.8.0;
-/**
+/* *
* @title ERC1363
- * @dev An extension interface for ERC-20 tokens that supports executing code on a recipient contract
- * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
- */
+ * @dev ERC-20 টোকেনগুলির জন্য একটি এক্সটেনশন ইন্টারফেস যা একটি একক লেনদেনে `transfer` বা `transferFrom`-এর পরে একটি প্রাপক চুক্তিতে কোড কার্যকর করা, বা `approve`-এর পরে একটি স্পেন্ডার চুক্তিতে কোড কার্যকর করা সমর্থন করে। */
interface ERC1363 is ERC20, ERC165 {
- /*
- * NOTE: the ERC-165 identifier for this interface is 0xb0202a11.
+ /* * NOTE: এই ইন্টারফেসের জন্য ERC-165 আইডেন্টিফায়ার হল 0xb0202a11।
* 0xb0202a11 ===
* bytes4(keccak256('transferAndCall(address,uint256)')) ^
* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
* bytes4(keccak256('approveAndCall(address,uint256)')) ^
- * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
- */
-
- /**
- * @dev Moves a `value` amount of tokens from the caller's account to `to`
- * and then calls `ERC1363Receiver::onTransferReceived` on `to`.
- * @param to The address to which tokens are being transferred.
- * @param value The amount of tokens to be transferred.
- * @return A boolean value indicating the operation succeeded unless throwing.
- */
+ * bytes4(keccak256('approveAndCall(address,uint256,bytes)')) */
+
+ /* *
+ * @dev কলারের অ্যাকাউন্ট থেকে `to`-তে `value` পরিমাণ টোকেন স্থানান্তর করে
+ * এবং তারপর `to`-তে `ERC1363Receiver::onTransferReceived` কল করে।
+ * @param to যে ঠিকানায় টোকেন স্থানান্তর করা হচ্ছে।
+ * @param value যে পরিমাণ টোকেন স্থানান্তর করা হবে।
+ * @return একটি বুলিয়ান মান যা নির্দেশ করে যে অপারেশনটি সফল হয়েছে যদি না থ্রো করা হয়। */
function transferAndCall(address to, uint256 value) external returns (bool);
- /**
- * @dev Moves a `value` amount of tokens from the caller's account to `to`
- * and then calls `ERC1363Receiver::onTransferReceived` on `to`.
- * @param to The address to which tokens are being transferred.
- * @param value The amount of tokens to be transferred.
- * @param data Additional data with no specified format, sent in call to `to`.
- * @return A boolean value indicating the operation succeeded unless throwing.
- */
+ /* *
+ * @dev কলারের অ্যাকাউন্ট থেকে `to`-তে `value` পরিমাণ টোকেন স্থানান্তর করে
+ * এবং তারপর `to`-তে `ERC1363Receiver::onTransferReceived` কল করে।
+ * @param to যে ঠিকানায় টোকেন স্থানান্তর করা হচ্ছে।
+ * @param value যে পরিমাণ টোকেন স্থানান্তর করা হবে।
+ * @param data কোনো নির্দিষ্ট বিন্যাস ছাড়া অতিরিক্ত ডেটা, যা `to`-তে কলে পাঠানো হয়।
+ * @return একটি বুলিয়ান মান যা নির্দেশ করে যে অপারেশনটি সফল হয়েছে যদি না থ্রো করা হয়। */
function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
- /**
- * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
- * and then calls `ERC1363Receiver::onTransferReceived` on `to`.
- * @param from The address from which to send tokens.
- * @param to The address to which tokens are being transferred.
- * @param value The amount of tokens to be transferred.
- * @return A boolean value indicating the operation succeeded unless throwing.
- */
+ /* *
+ * @dev অ্যালাউন্স মেকানিজম ব্যবহার করে `from` থেকে `to`-তে `value` পরিমাণ টোকেন স্থানান্তর করে
+ * এবং তারপর `to`-তে `ERC1363Receiver::onTransferReceived` কল করে।
+ * @param from যে ঠিকানা থেকে টোকেন পাঠানো হবে।
+ * @param to যে ঠিকানায় টোকেন স্থানান্তর করা হচ্ছে।
+ * @param value যে পরিমাণ টোকেন স্থানান্তর করা হবে।
+ * @return একটি বুলিয়ান মান যা নির্দেশ করে যে অপারেশনটি সফল হয়েছে যদি না থ্রো করা হয়। */
function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
- /**
- * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
- * and then calls `ERC1363Receiver::onTransferReceived` on `to`.
- * @param from The address from which to send tokens.
- * @param to The address to which tokens are being transferred.
- * @param value The amount of tokens to be transferred.
- * @param data Additional data with no specified format, sent in call to `to`.
- * @return A boolean value indicating the operation succeeded unless throwing.
- */
+ /* *
+ * @dev অ্যালাউন্স মেকানিজম ব্যবহার করে `from` থেকে `to`-তে `value` পরিমাণ টোকেন স্থানান্তর করে
+ * এবং তারপর `to`-তে `ERC1363Receiver::onTransferReceived` কল করে।
+ * @param from যে ঠিকানা থেকে টোকেন পাঠানো হবে।
+ * @param to যে ঠিকানায় টোকেন স্থানান্তর করা হচ্ছে।
+ * @param value যে পরিমাণ টোকেন স্থানান্তর করা হবে।
+ * @param data কোনো নির্দিষ্ট বিন্যাস ছাড়া অতিরিক্ত ডেটা, যা `to`-তে কলে পাঠানো হয়।
+ * @return একটি বুলিয়ান মান যা নির্দেশ করে যে অপারেশনটি সফল হয়েছে যদি না থ্রো করা হয়। */
function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
- /**
- * @dev Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens
- * and then calls `ERC1363Spender::onApprovalReceived` on `spender`.
- * @param spender The address which will spend the funds.
- * @param value The amount of tokens to be spent.
- * @return A boolean value indicating the operation succeeded unless throwing.
- */
+ /* *
+ * @dev কলারের টোকেনগুলির উপর `spender`-এর অ্যালাউন্স হিসাবে `value` পরিমাণ টোকেন সেট করে
+ * এবং তারপর `spender`-এ `ERC1363Spender::onApprovalReceived` কল করে।
+ * @param spender যে ঠিকানাটি ফান্ড খরচ করবে।
+ * @param value যে পরিমাণ টোকেন খরচ করা হবে।
+ * @return একটি বুলিয়ান মান যা নির্দেশ করে যে অপারেশনটি সফল হয়েছে যদি না থ্রো করা হয়। */
function approveAndCall(address spender, uint256 value) external returns (bool);
- /**
- * @dev Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens
- * and then calls `ERC1363Spender::onApprovalReceived` on `spender`.
- * @param spender The address which will spend the funds.
- * @param value The amount of tokens to be spent.
- * @param data Additional data with no specified format, sent in call to `spender`.
- * @return A boolean value indicating the operation succeeded unless throwing.
- */
+ /* *
+ * @dev কলারের টোকেনগুলির উপর `spender`-এর অ্যালাউন্স হিসাবে `value` পরিমাণ টোকেন সেট করে
+ * এবং তারপর `spender`-এ `ERC1363Spender::onApprovalReceived` কল করে।
+ * @param spender যে ঠিকানাটি ফান্ড খরচ করবে।
+ * @param value যে পরিমাণ টোকেন খরচ করা হবে।
+ * @param data কোনো নির্দিষ্ট বিন্যাস ছাড়া অতিরিক্ত ডেটা, যা `spender`-এ কলে পাঠানো হয়।
+ * @return একটি বুলিয়ান মান যা নির্দেশ করে যে অপারেশনটি সফল হয়েছে যদি না থ্রো করা হয়। */
function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
}
@@ -156,58 +146,52 @@ interface ERC165 {
}
```
-যে স্মার্ট কন্ট্র্যাক্ট `transferAndCall` বা `transferFromAndCall` এর মাধ্যমে ERC-1363 টোকেন গ্রহণ করতে চায়, তাকে **অবশ্যই** `ERC1363Receiver` ইন্টারফেসটি ইমপ্লিমেন্ট করতে হবে:
+যে স্মার্ট কন্ট্রাক্ট `transferAndCall` বা `transferFromAndCall` এর মাধ্যমে ERC-1363 টোকেন গ্রহণ করতে চায়, তাকে **অবশ্যই** `ERC1363Receiver` ইন্টারফেস ইমপ্লিমেন্ট করতে হবে:
```solidity
-/**
+/* *
* @title ERC1363Receiver
- * @dev Interface for any contract that wants to support `transferAndCall` or `transferFromAndCall` from ERC-1363 token contracts.
- */
+ * @dev যেকোনো চুক্তির জন্য ইন্টারফেস যা ERC-1363 টোকেন চুক্তিগুলি থেকে `transferAndCall` বা `transferFromAndCall` সমর্থন করতে চায়। */
interface ERC1363Receiver {
- /**
- * @dev Whenever ERC-1363 tokens are transferred to this contract via `ERC1363::transferAndCall` or `ERC1363::transferFromAndCall`
- * by `operator` from `from`, this function is called.
+ /* *
+ * @dev যখনই ERC-1363 টোকেনগুলি `from` থেকে `operator` দ্বারা `ERC1363::transferAndCall` বা `ERC1363::transferFromAndCall`-এর মাধ্যমে এই চুক্তিতে স্থানান্তরিত হয়, তখন এই ফাংশনটি কল করা হয়।
*
- * NOTE: To accept the transfer, this must return
+ * NOTE: স্থানান্তর গ্রহণ করতে, এটিকে অবশ্যই
* `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))`
- * (i.e. 0x88a7ca5c, or its own function selector).
+ * (অর্থাৎ 0x88a7ca5c, বা এর নিজস্ব ফাংশন সিলেক্টর) রিটার্ন করতে হবে।
*
- * @param operator The address which called `transferAndCall` or `transferFromAndCall` function.
- * @param from The address which are tokens transferred from.
- * @param value The amount of tokens transferred.
- * @param data Additional data with no specified format.
- * @return `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` if transfer is allowed unless throwing.
- */
+ * @param operator যে ঠিকানাটি `transferAndCall` বা `transferFromAndCall` ফাংশন কল করেছে।
+ * @param from যে ঠিকানা থেকে টোকেন স্থানান্তরিত হয়।
+ * @param value স্থানান্তরিত টোকেনের পরিমাণ।
+ * @param data কোনো নির্দিষ্ট বিন্যাস ছাড়া অতিরিক্ত ডেটা।
+ * @return `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` যদি স্থানান্তর অনুমোদিত হয় যদি না থ্রো করা হয়। */
function onTransferReceived(address operator, address from, uint256 value, bytes calldata data) external returns (bytes4);
}
```
-যে স্মার্ট কন্ট্র্যাক্ট `approveAndCall` এর মাধ্যমে ERC-1363 টোকেন গ্রহণ করতে চায়, তাকে **অবশ্যই** `ERC1363Spender` ইন্টারফেসটি ইমপ্লিমেন্ট করতে হবে:
+যে স্মার্ট কন্ট্রাক্ট `approveAndCall` এর মাধ্যমে ERC-1363 টোকেন গ্রহণ করতে চায়, তাকে **অবশ্যই** `ERC1363Spender` ইন্টারফেস ইমপ্লিমেন্ট করতে হবে:
```solidity
-/**
+/* *
* @title ERC1363Spender
- * @dev Interface for any contract that wants to support `approveAndCall` from ERC-1363 token contracts.
- */
+ * @dev যেকোনো চুক্তির জন্য ইন্টারফেস যা ERC-1363 টোকেন চুক্তিগুলি থেকে `approveAndCall` সমর্থন করতে চায়। */
interface ERC1363Spender {
- /**
- * @dev Whenever an ERC-1363 tokens `owner` approves this contract via `ERC1363::approveAndCall`
- * to spend their tokens, this function is called.
+ /* *
+ * @dev যখনই একজন ERC-1363 টোকেন `owner` তাদের টোকেন খরচ করার জন্য `ERC1363::approveAndCall`-এর মাধ্যমে এই চুক্তিটি অনুমোদন করে, তখন এই ফাংশনটি কল করা হয়।
*
- * NOTE: To accept the approval, this must return
+ * NOTE: অনুমোদন গ্রহণ করতে, এটিকে অবশ্যই
* `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))`
- * (i.e. 0x7b04a2d0, or its own function selector).
+ * (অর্থাৎ 0x7b04a2d0, বা এর নিজস্ব ফাংশন সিলেক্টর) রিটার্ন করতে হবে।
*
- * @param owner The address which called `approveAndCall` function and previously owned the tokens.
- * @param value The amount of tokens to be spent.
- * @param data Additional data with no specified format.
- * @return `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` if approval is allowed unless throwing.
- */
+ * @param owner যে ঠিকানাটি `approveAndCall` ফাংশন কল করেছে এবং পূর্বে টোকেনগুলির মালিক ছিল।
+ * @param value যে পরিমাণ টোকেন খরচ করা হবে।
+ * @param data কোনো নির্দিষ্ট বিন্যাস ছাড়া অতিরিক্ত ডেটা।
+ * @return `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` যদি অনুমোদন অনুমোদিত হয় যদি না থ্রো করা হয়। */
function onApprovalReceived(address owner, uint256 value, bytes calldata data) external returns (bytes4);
}
```
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-- [ERC-1363: প্রদেয় টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-1363)
-- [ERC-1363: GitHub রেপো](https://github.com/vittominacori/erc1363-payable-token)
+- [ERC-1363: পেয়েবল টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-1363)
+- [ERC-1363: গিটহাব রিপো](https://github.com/vittominacori/erc1363-payable-token)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/erc-20/index.md b/public/content/translations/bn/developers/docs/standards/tokens/erc-20/index.md
index c1832ddaae7..abb49a5f7d1 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/erc-20/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/erc-20/index.md
@@ -1,51 +1,46 @@
---
-title: "ERC-20 টোকেন স্ট্যান্ডার্ড"
-description: "ERC-20 সম্পর্কে জানুন, এটি Ethereum-এর ফানজিবল টোকেনগুলির জন্য একটি স্ট্যান্ডার্ড যা ইন্টারঅপারেবল টোকেন অ্যাপ্লিকেশনগুলিকে সক্ষম করে।"
+title: ERC-20 টোকেন স্ট্যান্ডার্ড
+description: ইথিরিয়ামে ফাঞ্জিবল টোকেনের স্ট্যান্ডার্ড ERC-20 সম্পর্কে জানুন, যা ইন্টারঅপারেবল টোকেন অ্যাপ্লিকেশন তৈরি করতে সক্ষম করে।
lang: bn
---
## ভূমিকা {#introduction}
-**টোকেন কি?**
+**টোকেন কী?**
-Ethereum-এ টোকেনগুলি কার্যত যেকোনো কিছুর প্রতিনিধিত্ব করতে পারে:
+টোকেন [ইথিরিয়াম](/)-এ কার্যত যেকোনো কিছুর প্রতিনিধিত্ব করতে পারে:
-- একটি অনলাইন প্ল্যাটফর্মে খ্যাতি পয়েন্ট
-- একটি গেমের কোনো চরিত্রের দক্ষতা
-- আর্থিক সম্পদ যেমন একটি কোম্পানির একটি শেয়ার
-- USD-এর মতো একটি ফিয়াট মুদ্রা
+- অনলাইন প্ল্যাটফর্মে রেপুটেশন পয়েন্ট
+- গেমের কোনো চরিত্রের দক্ষতা
+- কোম্পানির শেয়ারের মতো আর্থিক সম্পদ
+- USD-এর মতো ফিয়াট কারেন্সি
- এক আউন্স সোনা
-- এবং আরও...
+- এবং আরও অনেক কিছু...
-Ethereum-এর এমন একটি শক্তিশালী বৈশিষ্ট্য অবশ্যই একটি শক্তিশালী মান দ্বারা পরিচালিত হতে হবে, তাই না? ঠিক এখানেই
-ERC-20 তার ভূমিকা পালন করে! এই স্ট্যান্ডার্ডটি ডেভেলপারদের এমন টোকেন অ্যাপ্লিকেশন তৈরি করতে দেয় যা অন্যান্য পণ্য এবং পরিষেবাগুলির সাথে আন্তঃকার্যক্ষম। ERC-20 স্ট্যান্ডার্ডটি [ইথার](/glossary/#ether)-কে অতিরিক্ত কার্যকারিতা প্রদান করতেও ব্যবহৃত হয়।
+ইথিরিয়ামের এমন একটি শক্তিশালী বৈশিষ্ট্য অবশ্যই একটি শক্তিশালী স্ট্যান্ডার্ড দ্বারা পরিচালিত হওয়া উচিত, তাই না? ঠিক এখানেই ERC-20 তার ভূমিকা পালন করে! এই স্ট্যান্ডার্ডটি ডেভেলপারদের এমন টোকেন অ্যাপ্লিকেশন তৈরি করতে দেয় যা অন্যান্য পণ্য এবং পরিষেবার সাথে ইন্টারঅপারেবল। ERC-20 স্ট্যান্ডার্ডটি [ইথার](/glossary/#ether)-এ অতিরিক্ত কার্যকারিতা প্রদান করতেও ব্যবহৃত হয়।
-**ERC-20 কি?**
+**ERC-20 কী?**
-ERC-20 ফানজিবল টোকেনগুলির জন্য একটি স্ট্যান্ডার্ড চালু করেছে, অন্য কথায়, তাদের একটি বৈশিষ্ট্য রয়েছে যা প্রতিটি টোকেনকে অন্য টোকেনের সাথে হুবহু
-একই (ধরন এবং মূল্যে) করে তোলে। উদাহরণস্বরূপ, একটি ERC-20 টোকেন ঠিক ETH-এর মতো কাজ করে, যার অর্থ হল 1 টোকেন
-অন্যান্য সমস্ত টোকেনের সমান এবং সর্বদা সমান থাকবে।
+ERC-20 ফাঞ্জিবল টোকেনের জন্য একটি স্ট্যান্ডার্ড প্রবর্তন করে, অন্য কথায়, তাদের এমন একটি বৈশিষ্ট্য রয়েছে যা প্রতিটি টোকেনকে অন্য টোকেনের (ধরন এবং মূল্যের দিক থেকে) ঠিক একই রকম করে তোলে। উদাহরণস্বরূপ, একটি ERC-20 টোকেন ঠিক ETH-এর মতো কাজ করে, যার অর্থ 1 টোকেন সর্বদা অন্যান্য সমস্ত টোকেনের সমান হবে।
## পূর্বশর্ত {#prerequisites}
-- [অ্যাকাউন্টগুলি](/developers/docs/accounts)
-- [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/)
+- [একাউন্ট](/developers/docs/accounts)
+- [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)
- [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/)
-## বডি {#body}
+## মূল অংশ {#body}
-ERC-20 (Ethereum রিক্যুয়েস্ট ফর কমেন্টস 20), যা নভেম্বর 2015-এ ফ্যাবিয়ান ভোগেলস্টেলার দ্বারা প্রস্তাবিত, একটি টোকেন স্ট্যান্ডার্ড যা
-স্মার্ট কন্ট্র্যাক্টের মধ্যে টোকেনের জন্য একটি API প্রয়োগ করে।
+নভেম্বর 2015-এ Fabian Vogelsteller দ্বারা প্রস্তাবিত ERC-20 (Ethereum Request for Comments 20) হলো একটি টোকেন স্ট্যান্ডার্ড যা স্মার্ট কন্ট্রাক্ট-এর মধ্যে টোকেনের জন্য একটি API প্রয়োগ করে।
-ERC-20 যে উদাহরণমূলক কার্যকারিতাগুলি প্রদান করে:
+ERC-20 যে উদাহরণমূলক কার্যকারিতাগুলো প্রদান করে:
-- এক অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে টোকেন স্থানান্তর করা
-- একটি অ্যাকাউন্টের বর্তমান টোকেন ব্যালেন্স পান
-- নেটওয়ার্কে উপলব্ধ টোকেনের মোট সরবরাহ পান
-- একটি অ্যাকাউন্ট থেকে একটি পরিমাণ টোকেন কোনো তৃতীয় পক্ষের অ্যাকাউন্ট দ্বারা ব্যয় করা যাবে কিনা তা অনুমোদন করুন
+- এক একাউন্ট থেকে অন্য একাউন্টে টোকেন স্থানান্তর করা
+- একটি একাউন্টের বর্তমান টোকেন ব্যালেন্স পাওয়া
+- নেটওয়ার্ক-এ উপলব্ধ টোকেনের মোট সরবরাহ পাওয়া
+- একটি একাউন্ট থেকে নির্দিষ্ট পরিমাণ টোকেন কোনো থার্ড-পার্টি একাউন্ট দ্বারা ব্যয় করা যাবে কি না তা অনুমোদন করা
-যদি একটি স্মার্ট কন্ট্র্যাক্ট নিম্নলিখিত পদ্ধতি এবং ইভেন্টগুলি প্রয়োগ করে তবে এটিকে একটি ERC-20 টোকেন কন্ট্র্যাক্ট বলা যেতে পারে এবং, একবার ডিপ্লয় করা হলে, এটি
-Ethereum-এ তৈরি টোকেনগুলির ট্র্যাক রাখার জন্য দায়ী থাকবে।
+যদি একটি স্মার্ট কন্ট্রাক্ট নিচের মেথড এবং ইভেন্টগুলো প্রয়োগ করে তবে এটিকে একটি ERC-20 টোকেন কন্ট্রাক্ট বলা যেতে পারে এবং একবার ডিপ্লয় করা হলে, এটি ইথিরিয়ামে তৈরি করা টোকেনগুলোর ট্র্যাক রাখার জন্য দায়ী থাকবে।
[EIP-20](https://eips.ethereum.org/EIPS/eip-20) থেকে:
@@ -72,13 +67,11 @@ event Approval(address indexed _owner, address indexed _spender, uint256 _value)
### উদাহরণ {#web3py-example}
-আসুন দেখি Ethereum-এর যেকোনো ERC-20 টোকেন চুক্তি পরিদর্শন করার জন্য আমাদের কাজকে সহজ করতে একটি স্ট্যান্ডার্ড কতটা গুরুত্বপূর্ণ।
-যেকোনো ERC-20 টোকেনের জন্য একটি ইন্টারফেস তৈরি করতে আমাদের শুধু কন্ট্র্যাক্ট অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) প্রয়োজন। যেমন আপনি নিচে
-দেখতে পাচ্ছেন, এটিকে একটি ঝামেলাহীন উদাহরণ তৈরি করতে আমরা একটি সরলীকৃত ABI ব্যবহার করব।
+আসুন দেখি ইথিরিয়ামে যেকোনো ERC-20 টোকেন কন্ট্রাক্ট পরিদর্শন করা আমাদের জন্য সহজ করতে একটি স্ট্যান্ডার্ড কতটা গুরুত্বপূর্ণ। যেকোনো ERC-20 টোকেনের একটি ইন্টারফেস তৈরি করতে আমাদের শুধু কন্ট্রাক্ট অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) প্রয়োজন। নিচে দেখতে পাবেন যে আমরা একটি সরলীকৃত ABI ব্যবহার করব, যাতে এটি সহজে বোঝা যায় এমন একটি উদাহরণ হয়।
#### Web3.py উদাহরণ {#web3py-example}
-প্রথমে, নিশ্চিত করুন যে আপনি [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) পাইথন লাইব্রেরিটি ইনস্টল করেছেন:
+প্রথমে, নিশ্চিত করুন যে আপনি [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) পাইথন লাইব্রেরি ইনস্টল করেছেন:
```
pip install web3
@@ -90,13 +83,13 @@ from web3 import Web3
w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))
-dai_token_addr = "0x6B175474E89094C44Da98b954EedeAC495271d0F" # DAI
-weth_token_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # Wrapped ether (WETH)
+dai_token_addr = "0x6B175474E89094C44Da98b954EedeAC495271d0F" # DAI
+weth_token_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # র্যাপড ইথার (WETH)
-acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # Uniswap V2: DAI 2
+acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # ইউনিসোয়াপ ভি২: DAI 2
-# This is a simplified Contract Application Binary Interface (ABI) of an ERC-20 Token Contract.
-# It will expose only the methods: balanceOf(address), decimals(), symbol() and totalSupply()
+# এটি একটি ERC-20 টোকেন কন্ট্রাক্টের সরলীকৃত কন্ট্রাক্ট অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI)।
+# এটি শুধুমাত্র এই মেথডগুলো প্রকাশ করবে: balanceOf(address), decimals(), symbol() এবং totalSupply()
simplified_abi = [
{
'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}],
@@ -130,7 +123,7 @@ decimals = dai_contract.functions.decimals().call()
totalSupply = dai_contract.functions.totalSupply().call() / 10**decimals
addr_balance = dai_contract.functions.balanceOf(acc_address).call() / 10**decimals
-# DAI
+# DAI
print("===== %s =====" % symbol)
print("Total Supply:", totalSupply)
print("Addr Balance:", addr_balance)
@@ -141,52 +134,57 @@ decimals = weth_contract.functions.decimals().call()
totalSupply = weth_contract.functions.totalSupply().call() / 10**decimals
addr_balance = weth_contract.functions.balanceOf(acc_address).call() / 10**decimals
-# WETH
+# WETH
print("===== %s =====" % symbol)
print("Total Supply:", totalSupply)
print("Addr Balance:", addr_balance)
```
-## জ্ঞাত সমস্যা {#erc20-issues}
+## পরিচিত সমস্যাগুলো {#erc20-issues}
-### ERC-20 টোকেন গ্রহণ সমস্যা {#reception-issue}
+### ERC-20 টোকেন গ্রহণের সমস্যা {#reception-issue}
-**06/20/2024 অনুযায়ী এই সমস্যার কারণে কমপক্ষে $83,656,418 মূল্যের ERC-20 টোকেন হারিয়ে গেছে। মনে রাখবেন যে একটি বিশুদ্ধ ERC-20 ইমপ্লিমেন্টেশন এই সমস্যার জন্য ঝুঁকিপূর্ণ, যদি না আপনি নীচে তালিকাভুক্ত স্ট্যান্ডার্ডের উপরে অতিরিক্ত বিধিনিষেধের একটি সেট প্রয়োগ করেন।**
+**06/20/2024 তারিখ পর্যন্ত এই সমস্যার কারণে অন্তত $83,656,418 মূল্যের ERC-20 টোকেন হারিয়ে গেছে। মনে রাখবেন যে একটি বিশুদ্ধ ERC-20 ইমপ্লিমেন্টেশন এই সমস্যার সম্মুখীন হতে পারে, যদি না আপনি নিচে তালিকাভুক্ত স্ট্যান্ডার্ডের ওপর অতিরিক্ত কিছু বিধিনিষেধ প্রয়োগ করেন।**
-যখন ERC-20 টোকেন এমন একটি স্মার্ট কন্ট্রাক্টে পাঠানো হয় যা ERC-20 টোকেন পরিচালনা করার জন্য ডিজাইন করা হয়নি, তখন সেই টোকেনগুলি স্থায়ীভাবে হারিয়ে যেতে পারে। এটি ঘটে কারণ গ্রহণকারী কন্ট্র্যাক্টের আগত টোকেনগুলিকে চিনতে বা তার প্রতিক্রিয়া জানানোর কার্যকারিতা নেই এবং ERC-20 স্ট্যান্ডার্ডে গ্রহণকারী কন্ট্র্যাক্টকে আগত টোকেন সম্পর্কে অবহিত করার কোনো ব্যবস্থা নেই। এই সমস্যাটি যে প্রধান উপায়ে রূপ নেয় তা হল:
+যখন ERC-20 টোকেনগুলো এমন একটি স্মার্ট কন্ট্রাক্ট-এ পাঠানো হয় যা ERC-20 টোকেনগুলো পরিচালনা করার জন্য ডিজাইন করা হয়নি, তখন সেই টোকেনগুলো স্থায়ীভাবে হারিয়ে যেতে পারে। এটি ঘটে কারণ গ্রহণকারী কন্ট্রাক্টের ইনকামিং টোকেনগুলো শনাক্ত করার বা প্রতিক্রিয়া জানানোর কার্যকারিতা নেই এবং ইনকামিং টোকেনগুলো সম্পর্কে গ্রহণকারী কন্ট্রাক্টকে জানানোর জন্য ERC-20 স্ট্যান্ডার্ডে কোনো মেকানিজম নেই। এই সমস্যাটি মূলত যেভাবে রূপ নেয় তা হলো:
-1. টোকেন স্থানান্তর পদ্ধতি
-
-- ERC-20 টোকেনগুলি `transfer` বা `transferFrom` ফাংশন ব্যবহার করে স্থানান্তরিত হয়
- - যখন একজন ব্যবহারকারী এই ফাংশনগুলি ব্যবহার করে একটি কন্ট্র্যাক্ট ঠিকানায় টোকেন পাঠায়, তখন গ্রহণকারী কন্ট্র্যাক্টটি সেগুলি পরিচালনা করার জন্য ডিজাইন করা হয়েছে কিনা তা নির্বিশেষে টোকেনগুলি স্থানান্তরিত হয়
-
-2. বিজ্ঞপ্তির অভাব
- - গ্রহণকারী কন্ট্র্যাক্ট কোনো বিজ্ঞপ্তি বা কলব্যাক পায় না যে টোকেনগুলি এতে পাঠানো হয়েছে।
- - যদি গ্রহণকারী কন্ট্র্যাক্টে টোকেন পরিচালনা করার কোনো ব্যবস্থার অভাব থাকে (যেমন, একটি ফলব্যাক ফাংশন বা টোকেন গ্রহণ পরিচালনা করার জন্য একটি নিবেদিত ফাংশন), তাহলে টোকেনগুলি কার্যকরভাবে কন্ট্র্যাক্টের ঠিকানায় আটকে যায়।
-3. কোনো বিল্ট-ইন হ্যান্ডলিং নেই
- - ERC-20 স্ট্যান্ডার্ডে গ্রহণকারী কন্ট্র্যাক্টগুলি প্রয়োগ করার জন্য কোনো বাধ্যতামূলক ফাংশন অন্তর্ভুক্ত নেই, যার ফলে এমন একটি পরিস্থিতি তৈরি হয় যেখানে অনেক কন্ট্র্যাক্ট আগত টোকেনগুলি সঠিকভাবে পরিচালনা করতে অক্ষম।
+1. টোকেন ট্রান্সফার মেকানিজম
+ - ERC-20 টোকেনগুলো transfer বা transferFrom ফাংশন ব্যবহার করে স্থানান্তর করা হয়
+ - যখন কোনো ব্যবহারকারী এই ফাংশনগুলো ব্যবহার করে কোনো কন্ট্রাক্ট এডড্রেস-এ টোকেন পাঠান, তখন গ্রহণকারী কন্ট্রাক্টটি সেগুলো পরিচালনা করার জন্য ডিজাইন করা হোক বা না হোক, টোকেনগুলো স্থানান্তরিত হয়ে যায়
+2. নোটিফিকেশনের অভাব
+ - গ্রহণকারী কন্ট্রাক্ট কোনো নোটিফিকেশন বা কলব্যাক পায় না যে এতে টোকেন পাঠানো হয়েছে
+ - যদি গ্রহণকারী কন্ট্রাক্টে টোকেনগুলো পরিচালনা করার জন্য কোনো মেকানিজমের অভাব থাকে (যেমন, একটি ফলব্যাক ফাংশন বা টোকেন গ্রহণ পরিচালনা করার জন্য একটি ডেডিকেটেড ফাংশন), তবে টোকেনগুলো কার্যকরভাবে কন্ট্রাক্টের এডড্রেস-এ আটকে যায়
+3. কোনো বিল্ট-ইন হ্যান্ডলিং নেই
+ - ERC-20 স্ট্যান্ডার্ডে গ্রহণকারী কন্ট্রাক্টগুলোর প্রয়োগ করার জন্য কোনো বাধ্যতামূলক ফাংশন অন্তর্ভুক্ত নেই, যার ফলে এমন একটি পরিস্থিতির সৃষ্টি হয় যেখানে অনেক কন্ট্রাক্ট ইনকামিং টোকেনগুলো সঠিকভাবে পরিচালনা করতে অক্ষম হয়
**সম্ভাব্য সমাধান**
-যদিও ERC-20 এর সাথে এই সমস্যাটি সম্পূর্ণরূপে প্রতিরোধ করা সম্ভব নয়, তবে এমন কিছু পদ্ধতি রয়েছে যা শেষ ব্যবহারকারীর জন্য টোকেন হারানোর সম্ভাবনা উল্লেখযোগ্যভাবে হ্রাস করতে পারে:
+যদিও ERC-20 এর মাধ্যমে এই সমস্যাটি পুরোপুরি প্রতিরোধ করা সম্ভব নয়, তবে এমন কিছু পদ্ধতি রয়েছে যা শেষ ব্যবহারকারীর জন্য টোকেন হারানোর সম্ভাবনা উল্লেখযোগ্যভাবে হ্রাস করতে পারে:
-- সবচেয়ে সাধারণ সমস্যা হলো যখন একজন ব্যবহারকারী টোকেন কন্ট্র্যাক্টের ঠিকানাতেই টোকেন পাঠায় (যেমন, USDT টোকেন কন্ট্র্যাক্টের ঠিকানায় USDT জমা দেওয়া)। `transfer(..)` ফাংশনটিকে এই ধরনের স্থানান্তর প্রচেষ্টাগুলি প্রত্যাবর্তন করার জন্য সীমাবদ্ধ করার সুপারিশ করা হয়। `transfer(..)` ফাংশনের প্রয়োগের মধ্যে `require(_to != address(this));` চেক যোগ করার কথা বিবেচনা করুন।
-- `transfer(..)` ফাংশনটি সাধারণত কন্ট্র্যাক্টে টোকেন জমা করার জন্য ডিজাইন করা হয়নি। `approve(..) এবং `transferFrom(..)`প্যাটার্ন এর পরিবর্তে কন্ট্র্যাক্টে ERC-20 টোকেন জমা করতে ব্যবহৃত হয়। ট্রান্সফার ফাংশনটিকে সীমাবদ্ধ করে যেকোনো কন্ট্রাক্টে টোকেন জমা দেওয়া নিষিদ্ধ করা সম্ভব, তবে এটি এমন কন্ট্রাক্টগুলোর সাথে সামঞ্জস্যতা ভঙ্গ করতে পারে যেগুলো ধরে নেয় যে`trasnfer(..)` ফাংশন ব্যবহার করে কন্ট্রাক্টে টোকেন জমা করা যায় (যেমন, Uniswap লিকুইডিটি পুল)।
-- সর্বদা ধরে নিন যে ERC-20 টোকেনগুলি আপনার কন্ট্রাক্টে এসে জমা হতে পারে, এমনকি যদি আপনার কন্ট্রাক্টের কোনো টোকেন গ্রহণ করার কথা না থাকে। প্রাপকের পক্ষ থেকে দুর্ঘটনাজনিত জমা প্রতিরোধ বা প্রত্যাখ্যান করার কোনো উপায় নেই। এমন একটি ফাংশন প্রয়োগ করার পরামর্শ দেওয়া হয় যা দুর্ঘটনাক্রমে জমা হওয়া ERC-20 টোকেনগুলি বের করার অনুমতি দেবে।
+- সবচেয়ে সাধারণ সমস্যাটি হলো যখন কোনো ব্যবহারকারী টোকেন কন্ট্রাক্ট এডড্রেস-এ নিজেই টোকেন পাঠান (যেমন, USDT টোকেন কন্ট্রাক্টের এডড্রেস-এ USDT জমা করা)। এই ধরনের ট্রান্সফার প্রচেষ্টাগুলো রিভার্ট করার জন্য `transfer(..)` ফাংশনটিকে সীমাবদ্ধ করার পরামর্শ দেওয়া হয়। `transfer(..)` ফাংশনের ইমপ্লিমেন্টেশনের মধ্যে `require(_to != address(this));` চেক যোগ করার কথা বিবেচনা করুন।
+- সাধারণত `transfer(..)` ফাংশনটি কন্ট্রাক্টে টোকেন জমা করার জন্য ডিজাইন করা হয়নি। এর পরিবর্তে কন্ট্রাক্টে ERC-20 টোকেন জমা করতে `approve(..) & transferFrom(..)` প্যাটার্ন ব্যবহার করা হয়। ট্রান্সফার ফাংশনটিকে সীমাবদ্ধ করা সম্ভব যাতে এটি দিয়ে কোনো কন্ট্রাক্টে টোকেন জমা করা না যায়, তবে এটি এমন কন্ট্রাক্টগুলোর সাথে সামঞ্জস্যতা নষ্ট করতে পারে যেগুলো ধরে নেয় যে `transfer(..)` ফাংশন দিয়ে কন্ট্রাক্টে টোকেন জমা করা যেতে পারে (যেমন, Uniswap লিকুইডিটি পুল)।
+- সর্বদা ধরে নিন যে ERC-20 টোকেনগুলো আপনার কন্ট্রাক্টে এসে পৌঁছাতে পারে, এমনকি যদি আপনার কন্ট্রাক্টটি কখনো কোনো টোকেন গ্রহণ করার কথা না থাকে। প্রাপকের প্রান্তে দুর্ঘটনাবশত জমা হওয়া প্রতিরোধ বা প্রত্যাখ্যান করার কোনো উপায় নেই। এমন একটি ফাংশন প্রয়োগ করার পরামর্শ দেওয়া হয় যা দুর্ঘটনাবশত জমা হওয়া ERC-20 টোকেনগুলো বের করে আনতে দেয়।
- বিকল্প টোকেন স্ট্যান্ডার্ড ব্যবহার করার কথা বিবেচনা করুন।
-এই সমস্যা থেকে কিছু বিকল্প স্ট্যান্ডার্ড বেরিয়ে এসেছে যেমন [ERC-223](/developers/docs/standards/tokens/erc-223) বা [ERC-1363](/developers/docs/standards/tokens/erc-1363)।
+এই সমস্যা থেকে কিছু বিকল্প স্ট্যান্ডার্ড বেরিয়ে এসেছে যেমন [ERC-223](/developers/docs/standards/tokens/erc-223) বা [ERC-1363](/developers/docs/standards/tokens/erc-1363)।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
- [EIP-20: ERC-20 টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-20)
- [OpenZeppelin - টোকেন](https://docs.openzeppelin.com/contracts/3.x/tokens#ERC20)
- [OpenZeppelin - ERC-20 ইমপ্লিমেন্টেশন](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)
-- [Alchemy - সলিডিটি ERC20 টোকেনের জন্য গাইড](https://www.alchemy.com/overviews/erc20-solidity)
+- [Alchemy - সলিডিটি ERC20 টোকেনের গাইড](https://www.alchemy.com/overviews/erc20-solidity)
-## অন্যান্য ফানজিবল টোকেন স্ট্যান্ডার্ড {#fungible-token-standards}
+## অন্যান্য ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড {#fungible-token-standards}
- [ERC-223](/developers/docs/standards/tokens/erc-223)
- [ERC-1363](/developers/docs/standards/tokens/erc-1363)
- [ERC-777](/developers/docs/standards/tokens/erc-777)
- [ERC-4626 - টোকেনাইজড ভল্ট](/developers/docs/standards/tokens/erc-4626)
+
+## টিউটোরিয়াল: ইথিরিয়ামে ERC-20 দিয়ে তৈরি করুন {#tutorials}
+
+- [ERC-20 কন্ট্রাক্ট ওয়াক-থ্রু](/developers/tutorials/erc20-annotated-code/) _– OpenZeppelin ERC-20 কন্ট্রাক্ট ইমপ্লিমেন্টেশনের একটি লাইন-বাই-লাইন টীকাযুক্ত ওয়াক-থ্রু।_
+- [সেফটি রেলস সহ ERC-20](/developers/tutorials/erc20-with-safety-rails/) _– ব্যবহারকারীদের সাধারণ ভুল এড়াতে সাহায্য করার জন্য কীভাবে ERC-20 টোকেনে সেফগার্ড যোগ করবেন।_
+- [ethers.js ব্যবহার করে টোকেন পাঠানো](/developers/tutorials/send-token-ethersjs/) _– ethers.js ব্যবহার করে ERC-20 টোকেন স্থানান্তর করার জন্য নতুনদের উপযোগী একটি গাইড।_
+- [স্ক্যাম টোকেন দ্বারা ব্যবহৃত কিছু কৌশল এবং কীভাবে সেগুলো শনাক্ত করবেন](/developers/tutorials/scam-token-tricks/) _– স্ক্যাম ERC-20 টোকেন প্যাটার্ন এবং কীভাবে সেগুলো শনাক্ত করা যায় তার একটি বিস্তারিত আলোচনা।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/erc-223/index.md b/public/content/translations/bn/developers/docs/standards/tokens/erc-223/index.md
index f9fba93dc53..986d788958e 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/erc-223/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/erc-223/index.md
@@ -1,6 +1,6 @@
---
-title: "ERC-223 টোকেন স্ট্যান্ডার্ড"
-description: "ERC-223 ফাঞ্জিবল টোকেন স্ট্যান্ডার্ডের একটি সংক্ষিপ্ত বিবরণ, এটি কীভাবে কাজ করে, এবং ERC-20 এর সাথে একটি তুলনা।"
+title: ERC-223 টোকেন স্ট্যান্ডার্ড
+description: ERC-223 ফাঞ্জিবল টোকেন স্ট্যান্ডার্ডের একটি ওভারভিউ, এটি কীভাবে কাজ করে এবং ERC-20 এর সাথে একটি তুলনা।
lang: bn
---
@@ -8,37 +8,36 @@ lang: bn
### ERC-223 কী? {#what-is-erc223}
-ERC-223 হল ফাঞ্জিবল টোকেনের জন্য একটি স্ট্যান্ডার্ড, যা ERC-20 স্ট্যান্ডার্ডের অনুরূপ। মূল পার্থক্য হল ERC-223 শুধুমাত্র টোকেন API সংজ্ঞায়িত করে না, বরং প্রেরক থেকে প্রাপকের কাছে টোকেন স্থানান্তরের জন্য লজিকও সংজ্ঞায়িত করে। এটি একটি যোগাযোগ মডেল চালু করে যা প্রাপকের দিকে টোকেন স্থানান্তর পরিচালনা করার অনুমতি দেয়।
+ERC-223 হলো ফাঞ্জিবল টোকেনের জন্য একটি স্ট্যান্ডার্ড, যা অনেকটা ERC-20 স্ট্যান্ডার্ডের মতো। মূল পার্থক্য হলো ERC-223 শুধুমাত্র টোকেন API-ই সংজ্ঞায়িত করে না, বরং প্রেরক থেকে প্রাপকের কাছে টোকেন ট্রান্সফার করার লজিকও নির্ধারণ করে। এটি এমন একটি কমিউনিকেশন মডেল নিয়ে এসেছে যা প্রাপকের দিক থেকে টোকেন ট্রান্সফার পরিচালনা করার সুযোগ দেয়।
### ERC-20 থেকে পার্থক্য {#erc20-differences}
-ERC-223, ERC-20 এর কিছু সীমাবদ্ধতা মোকাবেলা করে এবং টোকেন কন্ট্র্যাক্ট এবং টোকেন গ্রহণ করতে পারে এমন একটি কন্ট্র্যাক্টের মধ্যে পারস্পরিক যোগাযোগের একটি নতুন পদ্ধতি চালু করে। এমন কিছু জিনিস আছে যা ERC-223 দিয়ে সম্ভব কিন্তু ERC-20 দিয়ে নয়:
+ERC-223, ERC-20 এর কিছু সীমাবদ্ধতা দূর করে এবং টোকেন কন্ট্রাক্ট ও টোকেন গ্রহণ করতে পারে এমন একটি কন্ট্রাক্টের মধ্যে ইন্টারঅ্যাকশনের একটি নতুন পদ্ধতি চালু করে। এমন কিছু বিষয় আছে যা ERC-223 এর মাধ্যমে সম্ভব কিন্তু ERC-20 এর মাধ্যমে নয়:
-- প্রাপকের দিকে টোকেন স্থানান্তর পরিচালনা: প্রাপকরা শনাক্ত করতে পারেন যে একটি ERC-223 টোকেন জমা দেওয়া হচ্ছে।
-- ভুলভাবে পাঠানো টোকেন প্রত্যাখ্যান: যদি একজন ব্যবহারকারী এমন কোনো কন্ট্র্যাক্টে ERC-223 টোকেন পাঠায় যা টোকেন গ্রহণ করার জন্য নয়, তাহলে কন্ট্র্যাক্টটি লেনদেন প্রত্যাখ্যান করতে পারে, যার ফলে টোকেনের ক্ষতি রোধ করা যায়।
-- স্থানান্তরে মেটাডেটা: ERC-223 টোকেনগুলিতে মেটাডেটা অন্তর্ভুক্ত থাকতে পারে, যা টোকেন লেনদেনের সাথে ইচ্ছামত তথ্য সংযুক্ত করার অনুমতি দেয়।
+- প্রাপকের দিক থেকে টোকেন ট্রান্সফার পরিচালনা: প্রাপকরা শনাক্ত করতে পারে যে একটি ERC-223 টোকেন জমা হচ্ছে।
+- ভুলভাবে পাঠানো টোকেন প্রত্যাখ্যান: যদি কোনো ব্যবহারকারী এমন কোনো কন্ট্রাক্টে ERC-223 টোকেন পাঠায় যার টোকেন গ্রহণ করার কথা নয়, তবে কন্ট্রাক্টটি লেনদেন প্রত্যাখ্যান করতে পারে, যা টোকেন হারানো প্রতিরোধ করে।
+- ট্রান্সফারে মেটাডেটা: ERC-223 টোকেনগুলোতে মেটাডেটা অন্তর্ভুক্ত থাকতে পারে, যা টোকেন লেনদেনের সাথে যেকোনো তথ্য যুক্ত করার সুযোগ দেয়।
## পূর্বশর্ত {#prerequisites}
-- [অ্যাকাউন্টগুলি](/developers/docs/accounts)
-- [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/)
+- [একাউন্ট](/developers/docs/accounts)
+- [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)
- [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/)
- [ERC-20](/developers/docs/standards/tokens/erc-20/)
-## বডি {#body}
+## মূল অংশ {#body}
-ERC-223 হল একটি টোকেন স্ট্যান্ডার্ড যা স্মার্ট কন্ট্র্যাক্টের মধ্যে টোকেনের জন্য একটি API প্রয়োগ করে। এটি সেইসব কন্ট্র্যাক্টের জন্যও একটি API ঘোষণা করে যেগুলি ERC-223 টোকেন গ্রহণ করার কথা। যে কন্ট্র্যাক্টগুলো ERC-223 রিসিভার API সমর্থন করে না, তারা ERC-223 টোকেন গ্রহণ করতে পারে না, যা ব্যবহারকারীর ত্রুটি প্রতিরোধ করে।
+ERC-223 হলো একটি টোকেন স্ট্যান্ডার্ড যা স্মার্ট কন্ট্রাক্টের মধ্যে টোকেনের জন্য একটি API প্রয়োগ করে। এটি এমন কন্ট্রাক্টগুলোর জন্যও একটি API ঘোষণা করে যাদের ERC-223 টোকেন গ্রহণ করার কথা। যেসব কন্ট্রাক্ট ERC-223 রিসিভার API সমর্থন করে না, তারা ERC-223 টোকেন গ্রহণ করতে পারে না, যা ব্যবহারকারীর ভুল প্রতিরোধ করে।
-যদি একটি স্মার্ট কন্ট্র্যাক্ট নিম্নলিখিত পদ্ধতি এবং ইভেন্টগুলি প্রয়োগ করে, তবে এটিকে একটি ERC-223 সামঞ্জস্যপূর্ণ টোকেন কন্ট্র্যাক্ট বলা যেতে পারে। একবার স্থাপন করা হলে, এটি
-Ethereum-এ তৈরি করা টোকেনগুলির ট্র্যাক রাখার জন্য দায়ী থাকবে।
+যদি একটি স্মার্ট কন্ট্রাক্ট নিচের মেথড এবং ইভেন্টগুলো প্রয়োগ করে, তবে এটিকে একটি ERC-223 সামঞ্জস্যপূর্ণ টোকেন কন্ট্রাক্ট বলা যেতে পারে। একবার ডিপ্লয় করা হলে, এটি ইথিরিয়ামে তৈরি করা টোকেনগুলোর ট্র্যাক রাখার জন্য দায়ী থাকবে।
-কন্ট্র্যাক্টটি শুধুমাত্র এই ফাংশনগুলি রাখতে বাধ্য নয় এবং একজন ডেভেলপার এই কন্ট্র্যাক্টে বিভিন্ন টোকেন স্ট্যান্ডার্ড থেকে অন্য কোনো বৈশিষ্ট্য যোগ করতে পারেন। উদাহরণস্বরূপ, `approve` এবং `transferFrom` ফাংশনগুলি ERC-223 স্ট্যান্ডার্ডের অংশ নয় তবে প্রয়োজনে এই ফাংশনগুলি প্রয়োগ করা যেতে পারে।
+কন্ট্রাক্টটিতে শুধুমাত্র এই ফাংশনগুলো থাকতেই হবে এমন কোনো বাধ্যবাধকতা নেই এবং একজন ডেভেলপার এই কন্ট্রাক্টে বিভিন্ন টোকেন স্ট্যান্ডার্ড থেকে অন্য যেকোনো ফিচার যোগ করতে পারেন। উদাহরণস্বরূপ, `approve` এবং `transferFrom` ফাংশনগুলো ERC-223 স্ট্যান্ডার্ডের অংশ নয়, তবে প্রয়োজন হলে এই ফাংশনগুলো প্রয়োগ করা যেতে পারে।
[EIP-223](https://eips.ethereum.org/EIPS/eip-223) থেকে:
### মেথড {#methods}
-ERC-223 টোকেনকে অবশ্যই নিম্নলিখিত পদ্ধতিগুলি প্রয়োগ করতে হবে:
+ERC-223 টোকেনকে অবশ্যই নিচের মেথডগুলো প্রয়োগ করতে হবে:
```solidity
function name() public view returns (string)
@@ -50,13 +49,13 @@ function transfer(address _to, uint256 _value) public returns (bool success)
function transfer(address _to, uint256 _value, bytes calldata _data) public returns (bool success)
```
-একটি কন্ট্র্যাক্ট যা ERC-223 টোকেন গ্রহণ করার কথা, তাকে অবশ্যই নিম্নলিখিত পদ্ধতিটি প্রয়োগ করতে হবে:
+যে কন্ট্রাক্টের ERC-223 টোকেন গ্রহণ করার কথা, তাকে অবশ্যই নিচের মেথডটি প্রয়োগ করতে হবে:
```solidity
function tokenReceived(address _from, uint _value, bytes calldata _data)
```
-যদি ERC-223 টোকেন এমন একটি কন্ট্র্যাক্টে পাঠানো হয় যা `tokenReceived(..)` ফাংশনটি প্রয়োগ করে না, তাহলে স্থানান্তরটি অবশ্যই ব্যর্থ হবে এবং টোকেনগুলি প্রেরকের ব্যালেন্স থেকে সরানো যাবে না।
+যদি ERC-223 টোকেন এমন কোনো কন্ট্রাক্টে পাঠানো হয় যা `tokenReceived(..)` ফাংশন প্রয়োগ করে না, তবে ট্রান্সফারটি অবশ্যই ব্যর্থ হবে এবং প্রেরকের ব্যালেন্স থেকে টোকেনগুলো সরানো যাবে না।
### ইভেন্ট {#events}
@@ -66,11 +65,11 @@ event Transfer(address indexed _from, address indexed _to, uint256 _value, bytes
### উদাহরণ {#examples}
-ERC-223 টোকেনের API, ERC-20-এর মতোই, তাই UI ডেভেলপমেন্টের দৃষ্টিকোণ থেকে কোনো পার্থক্য নেই। এখানে একমাত্র ব্যতিক্রম হল যে ERC-223 টোকেনগুলিতে `approve` + `transferFrom` ফাংশন নাও থাকতে পারে কারণ এই স্ট্যান্ডার্ডের জন্য এগুলি ঐচ্ছিক।
+ERC-223 টোকেনের API অনেকটা ERC-20 এর মতোই, তাই UI ডেভেলপমেন্টের দৃষ্টিকোণ থেকে কোনো পার্থক্য নেই। এখানে একমাত্র ব্যতিক্রম হলো ERC-223 টোকেনগুলোতে `approve` + `transferFrom` ফাংশন নাও থাকতে পারে, কারণ এই স্ট্যান্ডার্ডের জন্য এগুলো ঐচ্ছিক।
-#### Solidity উদাহরণ {#solidity-example}
+#### সলিডিটি উদাহরণ {#solidity-example}
-নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি বেসিক ERC-223 টোকেন কন্ট্র্যাক্ট কাজ করে:
+নিচের উদাহরণটি দেখায় কীভাবে একটি সাধারণ ERC-223 টোকেন কন্ট্রাক্ট কাজ করে:
```solidity
pragma solidity ^0.8.19;
@@ -116,22 +115,22 @@ contract VeryBasicERC223Token {
}
```
-এখন আমরা চাই যে অন্য একটি কন্ট্র্যাক্ট `tokenA`-এর ডিপোজিট গ্রহণ করুক, এই ভেবে যে tokenA একটি ERC-223 টোকেন। কন্ট্র্যাক্টটিকে অবশ্যই শুধু tokenA গ্রহণ করতে হবে এবং অন্য যেকোনো টোকেন প্রত্যাখ্যান করতে হবে। যখন কন্ট্র্যাক্টটি tokenA গ্রহণ করবে, তখন এটিকে অবশ্যই একটি `Deposit()` ইভেন্ট নির্গত করতে হবে এবং অভ্যন্তরীণ `deposits` ভ্যারিয়েবলের মান বাড়াতে হবে।
+এখন আমরা চাই অন্য একটি কন্ট্রাক্ট `tokenA` এর ডিপোজিট গ্রহণ করুক, ধরে নিচ্ছি যে tokenA হলো একটি ERC-223 টোকেন। কন্ট্রাক্টটিকে অবশ্যই শুধুমাত্র tokenA গ্রহণ করতে হবে এবং অন্য যেকোনো টোকেন প্রত্যাখ্যান করতে হবে। যখন কন্ট্রাক্টটি tokenA গ্রহণ করবে, তখন এটিকে অবশ্যই একটি `Deposit()` ইভেন্ট এমিট করতে হবে এবং অভ্যন্তরীণ `deposits` ভেরিয়েবলের মান বাড়াতে হবে।
-এখানে কোডটি দেওয়া হল:
+এখানে কোডটি দেওয়া হলো:
```solidity
contract RecipientContract is IERC223Recipient {
event Deposit(address whoSentTheTokens);
uint256 deposits = 0;
- address tokenA; // The only token that we want to accept.
+ address tokenA; // একমাত্র টোকেন যা আমরা গ্রহণ করতে চাই।
function tokenReceived(address _from, uint _value, bytes memory _data) public override
{
- // It is important to understand that within this function
- // msg.sender is the address of a token that is being received,
- // msg.value is always 0 as the token contract does not own or send ether in most cases,
- // _from is the sender of the token transfer,
- // _value is the amount of tokens that was deposited.
+ // এটি বোঝা গুরুত্বপূর্ণ যে এই ফাংশনের মধ্যে
+ // msg.sender হলো সেই টোকেনের ঠিকানা যা গ্রহণ করা হচ্ছে,
+ // msg.value সর্বদা 0 হয় কারণ বেশিরভাগ ক্ষেত্রে টোকেন কন্ট্রাক্ট ইথার ধারণ করে না বা পাঠায় না,
+ // _from হলো টোকেন ট্রান্সফারের প্রেরক,
+ // _value হলো জমা করা টোকেনের পরিমাণ।
require(msg.sender == tokenA);
deposits += _value;
emit Deposit(_from);
@@ -139,33 +138,33 @@ contract RecipientContract is IERC223Recipient {
}
```
-## সাধারণত জিজ্ঞাসিত প্রশ্নসমূহ {#faq}
+## সচরাচর জিজ্ঞাসিত প্রশ্ন {#faq}
-### আমরা যদি কন্ট্র্যাক্টে কিছু tokenB পাঠাই তাহলে কী হবে? {#sending-tokens}
+### যদি আমরা কন্ট্রাক্টে কিছু tokenB পাঠাই তবে কী হবে? {#sending-tokens}
-লেনদেনটি ব্যর্থ হবে, এবং টোকেনের স্থানান্তর ঘটবে না। টোকেনগুলি প্রেরকের ঠিকানায় ফেরত দেওয়া হবে।
+লেনদেন ব্যর্থ হবে এবং টোকেন ট্রান্সফার হবে না। টোকেনগুলো প্রেরকের এডড্রেসে ফেরত পাঠানো হবে।
-### আমরা কীভাবে এই কন্ট্র্যাক্টে ডিপোজিট করতে পারি? {#contract-deposits}
+### আমরা কীভাবে এই কন্ট্রাক্টে ডিপোজিট করতে পারি? {#contract-deposits}
-ERC-223 টোকেনের `transfer(address,uint256)` বা `transfer(address,uint256,bytes)` ফাংশন কল করুন, `RecipientContract`-এর ঠিকানা নির্দিষ্ট করে।
+ERC-223 টোকেনের `transfer(address,uint256)` অথবা `transfer(address,uint256,bytes)` ফাংশন কল করুন, যেখানে `RecipientContract` এর এডড্রেস উল্লেখ করতে হবে।
-### আমরা যদি এই কন্ট্র্যাক্টে একটি ERC-20 টোকেন স্থানান্তর করি তাহলে কী হবে? {#erc-20-transfers}
+### যদি আমরা এই কন্ট্রাক্টে একটি ERC-20 টোকেন ট্রান্সফার করি তবে কী হবে? {#erc-20-transfers}
-যদি `RecipientContract`-এ একটি ERC-20 টোকেন পাঠানো হয়, টোকেনগুলি স্থানান্তরিত হবে, কিন্তু স্থানান্তরটি স্বীকৃত হবে না (কোনও `Deposit()` ইভেন্ট ফায়ার করা হবে না, এবং ডিপোজিটের মান পরিবর্তন হবে না)। অবাঞ্ছিত ERC-20 ডিপোজিট ফিল্টার বা প্রতিরোধ করা যায় না।
+যদি `RecipientContract` এ একটি ERC-20 টোকেন পাঠানো হয়, তবে টোকেনগুলো ট্রান্সফার হবে, কিন্তু ট্রান্সফারটি শনাক্ত করা যাবে না (কোনো `Deposit()` ইভেন্ট ফায়ার হবে না এবং ডিপোজিটের মান পরিবর্তন হবে না)। অনাকাঙ্ক্ষিত ERC-20 ডিপোজিট ফিল্টার বা প্রতিরোধ করা যাবে না।
-### যদি আমরা টোকেন ডিপোজিট সম্পূর্ণ হওয়ার পরে কিছু ফাংশন এক্সিকিউট করতে চাই? {#function-execution}
+### টোকেন ডিপোজিট সম্পন্ন হওয়ার পর যদি আমরা কোনো ফাংশন এক্সিকিউট করতে চাই তবে কী হবে? {#function-execution}
-এর একাধিক উপায় আছে। এই উদাহরণে আমরা সেই পদ্ধতিটি অনুসরণ করব যা ERC-223 স্থানান্তরকে ইথার স্থানান্তরের অনুরূপ করে তোলে:
+এটি করার একাধিক উপায় রয়েছে। এই উদাহরণে আমরা এমন একটি পদ্ধতি অনুসরণ করব যা ERC-223 ট্রান্সফারকে ইথার ট্রান্সফারের অনুরূপ করে তোলে:
```solidity
contract RecipientContract is IERC223Recipient {
event Foo();
event Bar(uint256 someNumber);
- address tokenA; // The only token that we want to accept.
+ address tokenA; // একমাত্র টোকেন যা আমরা গ্রহণ করতে চাই।
function tokenReceived(address _from, uint _value, bytes memory _data) public override
{
require(msg.sender == tokenA);
- address(this).call(_data); // Handle incoming transaction and perform a subsequent function call.
+ address(this).call(_data); // আগত ট্রানজ্যাকশন পরিচালনা করুন এবং পরবর্তী ফাংশন কলটি সম্পাদন করুন।
}
function foo() public
{
@@ -178,21 +177,21 @@ contract RecipientContract is IERC223Recipient {
}
```
-যখন `RecipientContract` একটি ERC-223 টোকেন গ্রহণ করবে, তখন কন্ট্র্যাক্টটি টোকেন লেনদেনের `_data` প্যারামিটার হিসেবে এনকোড করা একটি ফাংশন এক্সিকিউট করবে, যা ইথার লেনদেনগুলি লেনদেনের `data` হিসেবে ফাংশন কল এনকোড করার পদ্ধতির অনুরূপ। আরও তথ্যের জন্য [ডেটা ফিল্ড](/developers/docs/transactions/#the-data-field) পড়ুন।
+যখন `RecipientContract` একটি ERC-223 টোকেন গ্রহণ করবে, তখন কন্ট্রাক্টটি টোকেন লেনদেনের `_data` প্যারামিটার হিসেবে এনকোড করা একটি ফাংশন এক্সিকিউট করবে, ঠিক যেভাবে ইথার লেনদেনগুলো ফাংশন কলগুলোকে লেনদেনের `data` হিসেবে এনকোড করে। আরও তথ্যের জন্য [ডেটা ফিল্ড](/developers/docs/transactions/#the-data-field) পড়ুন।
-উপরের উদাহরণে, `RecipientContract`-এর ঠিকানায় `transfer(address,uin256,bytes calldata _data)` ফাংশন দিয়ে একটি ERC-223 টোকেন স্থানান্তর করতে হবে। যদি ডেটা প্যারামিটার `0xc2985578` (`foo()` ফাংশনের সিগনেচার) হয়, তাহলে টোকেন ডিপোজিট পাওয়ার পরে foo() ফাংশনটি চালু হবে এবং Foo() ইভেন্টটি ফায়ার করা হবে।
+উপরের উদাহরণে একটি ERC-223 টোকেনকে অবশ্যই `transfer(address,uin256,bytes calldata _data)` ফাংশনের মাধ্যমে `RecipientContract` এর এডড্রেসে ট্রান্সফার করতে হবে। যদি ডেটা প্যারামিটার `0xc2985578` (একটি `foo()` ফাংশনের সিগনেচার) হয়, তবে টোকেন ডিপোজিট পাওয়ার পর foo() ফাংশনটি ইনভোক করা হবে এবং Foo() ইভেন্ট ফায়ার হবে।
-`_someNumber`-এর জন্য 12345 মান সহ টোকেন স্থানান্তরের `data`-তেও প্যারামিটার এনকোড করা যেতে পারে, উদাহরণস্বরূপ আমরা bar() ফাংশনটিকে কল করতে পারি। এই ক্ষেত্রে, `data` অবশ্যই `0x0423a13200000000000000000000000000000000000000000000000000000000000004d2` হতে হবে যেখানে `0x0423a132` হল `bar(uint256)` ফাংশনের সিগনেচার এবং `00000000000000000000000000000000000000000000000000000000000004d2` হল 12345 যা uint256 হিসেবে লেখা।
+প্যারামিটারগুলো টোকেন ট্রান্সফারের `data` তেও এনকোড করা যেতে পারে, উদাহরণস্বরূপ আমরা `_someNumber` এর জন্য 12345 মান দিয়ে bar() ফাংশন কল করতে পারি। এই ক্ষেত্রে `data` অবশ্যই `0x0423a13200000000000000000000000000000000000000000000000000000000000004d2` হতে হবে, যেখানে `0x0423a132` হলো `bar(uint256)` ফাংশনের সিগনেচার এবং `00000000000000000000000000000000000000000000000000000000000004d2` হলো uint256 হিসেবে 12345।
## সীমাবদ্ধতা {#limitations}
-যদিও ERC-223 ERC-20 স্ট্যান্ডার্ডে পাওয়া বেশ কিছু সমস্যার সমাধান করে, এটি তার নিজস্ব সীমাবদ্ধতা ছাড়া নয়:
+যদিও ERC-223, ERC-20 স্ট্যান্ডার্ডে পাওয়া বেশ কয়েকটি সমস্যার সমাধান করে, তবে এর নিজস্ব কিছু সীমাবদ্ধতাও রয়েছে:
-- গ্রহণযোগ্যতা এবং সামঞ্জস্যতা: ERC-223 এখনও ব্যাপকভাবে গৃহীত হয়নি, যা বিদ্যমান টুল এবং প্ল্যাটফর্মগুলির সাথে এর সামঞ্জস্যতা সীমিত করতে পারে।
-- পশ্চাৎগামী সামঞ্জস্যতা: ERC-223, ERC-20-এর সাথে পশ্চাৎগামী সামঞ্জস্যপূর্ণ নয়, যার অর্থ হল বিদ্যমান ERC-20 কন্ট্র্যাক্ট এবং টুলগুলি পরিবর্তন ছাড়া ERC-223 টোকেনগুলির সাথে কাজ করবে না।
-- গ্যাস খরচ: ERC-223 স্থানান্তরের অতিরিক্ত চেক এবং কার্যকারিতার ফলে ERC-20 লেনদেনের তুলনায় গ্যাসের খরচ বেশি হতে পারে।
+- গ্রহণ এবং সামঞ্জস্যতা: ERC-223 এখনও ব্যাপকভাবে গৃহীত হয়নি, যা বিদ্যমান টুল এবং প্ল্যাটফর্মগুলোর সাথে এর সামঞ্জস্যতা সীমিত করতে পারে।
+- ব্যাকওয়ার্ড সামঞ্জস্যতা: ERC-223, ERC-20 এর সাথে ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ নয়, যার অর্থ হলো বিদ্যমান ERC-20 কন্ট্রাক্ট এবং টুলগুলো কোনো পরিবর্তন ছাড়া ERC-223 টোকেনের সাথে কাজ করবে না।
+- গ্যাস খরচ: ERC-223 ট্রান্সফারে অতিরিক্ত চেক এবং কার্যকারিতার কারণে ERC-20 লেনদেনের তুলনায় গ্যাস খরচ বেশি হতে পারে।
## আরও পড়ুন {#further-reading}
- [EIP-223: ERC-223 টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-223)
-- [প্রাথমিক ERC-223 প্রস্তাব](https://github.com/ethereum/eips/issues/223)
+- [প্রাথমিক ERC-223 প্রস্তাবনা](https://github.com/ethereum/eips/issues/223)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/bn/developers/docs/standards/tokens/erc-4626/index.md
index bcf842491ab..f03d1275f8e 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/erc-4626/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/erc-4626/index.md
@@ -1,198 +1,198 @@
---
-title: "ERC-4626 টোকেনাইজড ভল্ট স্ট্যান্ডার্ড"
-description: "ইল্ড বেয়ারিং ভল্টের জন্য একটি স্ট্যান্ডার্ড।"
+title: ERC-4626 টোকেনাইজড ভল্ট স্ট্যান্ডার্ড
+description: ইল্ড বিয়ারিং ভল্টের জন্য একটি স্ট্যান্ডার্ড।
lang: bn
---
## ভূমিকা {#introduction}
-ERC-4626 হলো ইল্ড-বেয়ারিং ভল্টের প্রযুক্তিগত প্যারামিটারগুলিকে অপ্টিমাইজ এবং একত্রিত করার জন্য একটি স্ট্যান্ডার্ড। এটি টোকেনাইজড ইল্ড-বেয়ারিং ভল্টের জন্য একটি স্ট্যান্ডার্ড API প্রদান করে যা একটি একক অন্তর্নিহিত ERC-20 টোকেনের শেয়ারের প্রতিনিধিত্ব করে। ERC-4626, ERC-20 ব্যবহারকারী টোকেনাইজড ভল্টের জন্য একটি ঐচ্ছিক এক্সটেনশনের রূপরেখাও দেয়, যা টোকেন জমা, উত্তোলন এবং ব্যালেন্স পড়ার জন্য প্রাথমিক কার্যকারিতা প্রদান করে।
+ERC-4626 হলো ইল্ড-বিয়ারিং ভল্টগুলোর টেকনিক্যাল প্যারামিটার অপ্টিমাইজ এবং একীভূত করার একটি স্ট্যান্ডার্ড। এটি টোকেনাইজড ইল্ড-বিয়ারিং ভল্টগুলোর জন্য একটি স্ট্যান্ডার্ড API প্রদান করে যা একটি একক আন্ডারলাইং ERC-20 টোকেনের শেয়ার উপস্থাপন করে। ERC-4626 টোকেনাইজড ভল্টগুলোর জন্য একটি ঐচ্ছিক এক্সটেনশনের রূপরেখাও দেয় যা ERC-20 ব্যবহার করে, টোকেন জমা দেওয়া, তোলা এবং ব্যালেন্স পড়ার জন্য মৌলিক কার্যকারিতা প্রদান করে।
-**ইল্ড-বেয়ারিং ভল্টে ERC-4626-এর ভূমিকা**
+**ইল্ড-বিয়ারিং ভল্টে ERC-4626 এর ভূমিকা**
-লেন্ডিং বাজার, অ্যাগ্রিগেটর এবং সহজাতভাবে সুদ-বাহী টোকেন বিভিন্ন কৌশল কার্যকর করার মাধ্যমে ব্যবহারকারীদের তাদের ক্রিপ্টো টোকেনে সেরা ইল্ড খুঁজে পেতে সাহায্য করে। এই কৌশলগুলি সামান্য ভিন্নতার সাথে করা হয়, যা ত্রুটি-প্রবণ হতে পারে বা ডেভেলপমেন্ট রিসোর্স নষ্ট করতে পারে।
+লেন্ডিং মার্কেট, এগ্রিগেটর এবং অন্তর্নিহিতভাবে সুদ-বহনকারী টোকেনগুলো বিভিন্ন কৌশল প্রয়োগ করে ব্যবহারকারীদের তাদের ক্রিপ্টো টোকেনগুলোতে সেরা ইল্ড খুঁজে পেতে সহায়তা করে। এই কৌশলগুলো সামান্য ভিন্নতার সাথে করা হয়, যা ত্রুটিপূর্ণ হতে পারে বা ডেভেলপমেন্ট রিসোর্স নষ্ট করতে পারে।
-ইল্ড-বেয়ারিং ভল্টে ERC-4626 আরও সামঞ্জস্যপূর্ণ এবং শক্তিশালী বাস্তবায়ন প্যাটার্ন তৈরি করার মাধ্যমে ইন্টিগ্রেশন প্রচেষ্টা কমাবে এবং ডেভেলপারদের থেকে সামান্য বিশেষায়িত প্রচেষ্টার সাথে বিভিন্ন অ্যাপ্লিকেশনে ইল্ডে অ্যাক্সেস আনলক করবে।
+ইল্ড-বিয়ারিং ভল্টগুলোতে ERC-4626 আরও সামঞ্জস্যপূর্ণ এবং শক্তিশালী ইমপ্লিমেন্টেশন প্যাটার্ন তৈরি করে ইন্টিগ্রেশন প্রচেষ্টা কমিয়ে আনবে এবং ডেভেলপারদের সামান্য বিশেষ প্রচেষ্টার মাধ্যমে বিভিন্ন অ্যাপ্লিকেশনে ইল্ড অ্যাক্সেস আনলক করবে।
-ERC-4626 টোকেনটি [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626)-তে সম্পূর্ণরূপে বর্ণনা করা হয়েছে।
+ERC-4626 টোকেনটি [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626)-এ সম্পূর্ণভাবে বর্ণনা করা হয়েছে।
-**অ্যাসিঙ্ক্রোনাস ভল্ট এক্সটেনশন (ERC-7540)**
+**অ্যাসিনক্রোনাস ভল্ট এক্সটেনশন (ERC-7540)**
-ERC-4626 একটি সীমা পর্যন্ত অ্যাটমিক ডিপোজিট এবং রিডেম্পশনের জন্য অপ্টিমাইজ করা হয়েছে। সীমা পৌঁছে গেলে, কোনো নতুন ডিপোজিট বা রিডেম্পশন জমা দেওয়া যাবে না। এই সীমাবদ্ধতাটি ভল্টের সাথে ইন্টারফেস করার পূর্বশর্ত হিসেবে অ্যাসিঙ্ক্রোনাস অ্যাকশন বা বিলম্ব সহ কোনো স্মার্ট কন্ট্র্যাক্ট সিস্টেমের জন্য ভালোভাবে কাজ করে না (যেমন, রিয়েল-ওয়ার্ল্ড অ্যাসেট প্রোটোকল, আন্ডারকোল্যাটারাইজড লেন্ডিং প্রোটোকল, ক্রস-চেইন লেন্ডিং প্রোটোকল, লিকুইড স্টেকিং টোকেন বা বিমা সুরক্ষা মডিউল)।
+ERC-4626 একটি নির্দিষ্ট সীমা পর্যন্ত অ্যাটমিক ডিপোজিট এবং রিডেম্পশনের জন্য অপ্টিমাইজ করা হয়েছে। যদি সীমা পৌঁছে যায়, তবে নতুন কোনো ডিপোজিট বা রিডেম্পশন জমা দেওয়া যাবে না। এই সীমাবদ্ধতা এমন কোনো স্মার্ট কন্ট্রাক্ট সিস্টেমের জন্য ভালোভাবে কাজ করে না যেখানে ভল্টের সাথে ইন্টারফেস করার পূর্বশর্ত হিসেবে অ্যাসিনক্রোনাস অ্যাকশন বা বিলম্ব থাকে (যেমন, রিয়েল-ওয়ার্ল্ড অ্যাসেট প্রটোকল, আন্ডারকোল্যাটারাইজড লেন্ডিং প্রটোকল, ক্রস-চেইন লেন্ডিং প্রটোকল, লিকুইড স্টেকিং টোকেন, বা ইন্স্যুরেন্স সেফটি মডিউল)।
-ERC-7540 অ্যাসিঙ্ক্রোনাস ব্যবহারের ক্ষেত্রে ERC-4626 ভল্টের উপযোগিতা প্রসারিত করে। বিদ্যমান ভল্ট ইন্টারফেস (`deposit`/`withdraw`/`mint`/`redeem`) অ্যাসিঙ্ক্রোনাস অনুরোধ দাবি করতে সম্পূর্ণরূপে ব্যবহৃত হয়।
+ERC-7540 অ্যাসিনক্রোনাস ব্যবহারের ক্ষেত্রে ERC-4626 ভল্টগুলোর উপযোগিতা প্রসারিত করে। বিদ্যমান ভল্ট ইন্টারফেস (`deposit`/`withdraw`/`mint`/`redeem`) অ্যাসিনক্রোনাস রিকোয়েস্ট ক্লেইম করার জন্য পুরোপুরি ব্যবহার করা হয়।
-ERC-7540 এক্সটেনশনটি [ERC-7540](https://eips.ethereum.org/EIPS/eip-7540)-তে সম্পূর্ণরূপে বর্ণনা করা হয়েছে।
+ERC-7540 এক্সটেনশনটি [ERC-7540](https://eips.ethereum.org/EIPS/eip-7540)-এ সম্পূর্ণভাবে বর্ণনা করা হয়েছে।
**মাল্টি-অ্যাসেট ভল্ট এক্সটেনশন (ERC-7575)**
-ERC-4626 দ্বারা সমর্থিত নয় এমন একটি অনুপস্থিত ব্যবহারের ক্ষেত্র হলো এমন ভল্ট যার একাধিক সম্পদ বা এন্ট্রি পয়েন্ট রয়েছে যেমন লিকুইডিটি প্রোভাইডার (LP) টোকেন। ERC-4626-কে নিজেই একটি ERC-20 হতে হয় বলে, এইগুলি সাধারণত অসুবিধাজনক বা অ-সম্মত হয়।
+ERC-4626 দ্বারা সমর্থিত নয় এমন একটি অনুপস্থিত ব্যবহারের ক্ষেত্র হলো এমন ভল্ট যেখানে একাধিক অ্যাসেট বা এন্ট্রি পয়েন্ট থাকে, যেমন লিকুইডিটি প্রোভাইডার (LP) টোকেন। ERC-4626 এর নিজেরই একটি ERC-20 হওয়ার প্রয়োজনীয়তার কারণে এগুলো সাধারণত পরিচালনা করা কঠিন বা নন-কমপ্লায়েন্ট হয়।
-ERC-7575 একাধিক সম্পদ সহ ভল্টের জন্য সমর্থন যোগ করে এবং ERC-4626 বাস্তবায়ন থেকে ERC-20 টোকেন বাস্তবায়নকে বাহ্যিক করে।
+ERC-7575 ERC-4626 ইমপ্লিমেন্টেশন থেকে ERC-20 টোকেন ইমপ্লিমেন্টেশনকে এক্সটার্নালাইজ করে একাধিক অ্যাসেট সহ ভল্টগুলোর জন্য সমর্থন যোগ করে।
-ERC-7575 এক্সটেনশনটি [ERC-7575](https://eips.ethereum.org/EIPS/eip-7575)-তে সম্পূর্ণরূপে বর্ণনা করা হয়েছে।
+ERC-7575 এক্সটেনশনটি [ERC-7575](https://eips.ethereum.org/EIPS/eip-7575)-এ সম্পূর্ণভাবে বর্ণনা করা হয়েছে।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আরও ভালভাবে বুঝতে, আমরা আপনাকে প্রথমে [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/) এবং [ERC-20](/developers/docs/standards/tokens/erc-20/) সম্পর্কে পড়ার পরামর্শ দিই।
+এই পৃষ্ঠাটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/) এবং [ERC-20](/developers/docs/standards/tokens/erc-20/) সম্পর্কে পড়ুন।
## ERC-4626 ফাংশন এবং বৈশিষ্ট্য: {#body}
### মেথড {#methods}
-#### সম্পদ {#asset}
+#### asset {#asset}
```solidity
function asset() public view returns (address assetTokenAddress)
```
-এই ফাংশনটি অ্যাকাউন্টিং, জমা দেওয়া, এবং উত্তোলনের জন্য ভল্টে ব্যবহৃত অন্তর্নিহিত টোকেনের ঠিকানাটি ফেরত দেয়।
+এই ফাংশনটি অ্যাকাউন্টিং, ডিপোজিট এবং উত্তোলনের জন্য ভল্টে ব্যবহৃত আন্ডারলাইং টোকেনের এডড্রেস রিটার্ন করে।
-#### মোট সম্পদ {#totalassets}
+#### totalAssets {#totalassets}
```solidity
function totalAssets() public view returns (uint256)
```
-এই ফাংশনটি ভল্টে রাখা অন্তর্নিহিত সম্পদের মোট পরিমাণ প্রদান করে।
+এই ফাংশনটি ভল্টে থাকা আন্ডারলাইং অ্যাসেটের মোট পরিমাণ রিটার্ন করে।
-#### শেয়ারে রূপান্তর {#convertoshares}
+#### convertToShares {#convertoshares}
```solidity
function convertToShares(uint256 assets) public view returns (uint256 shares)
```
-এই ফাংশনটি প্রদত্ত `assets`-এর পরিমাণের জন্য ভল্ট দ্বারা বিনিময় করা হবে এমন `shares`-এর পরিমাণ প্রদান করে।
+এই ফাংশনটি প্রদান করা `assets`-এর পরিমাণের জন্য ভল্ট দ্বারা বিনিময় করা `shares`-এর পরিমাণ রিটার্ন করে।
-#### সম্পদে রূপান্তর {#convertoassets}
+#### convertToAssets {#convertoassets}
```solidity
function convertToAssets(uint256 shares) public view returns (uint256 assets)
```
-এই ফাংশনটি প্রদত্ত `shares`-এর পরিমাণের জন্য ভল্ট দ্বারা বিনিময় করা হবে এমন `assets`-এর পরিমাণ প্রদান করে।
+এই ফাংশনটি প্রদান করা `shares`-এর পরিমাণের জন্য ভল্ট দ্বারা বিনিময় করা `assets`-এর পরিমাণ রিটার্ন করে।
-#### সর্বোচ্চ জমা {#maxdeposit}
+#### maxDeposit {#maxdeposit}
```solidity
function maxDeposit(address receiver) public view returns (uint256 maxAssets)
```
-এই ফাংশনটি অন্তর্নিহিত সম্পদের সর্বোচ্চ পরিমাণ প্রদান করে যা একটি একক [`deposit`](#deposit) কলে জমা করা যেতে পারে, এবং `receiver`-এর জন্য শেয়ারগুলি মিন্ট করা হয়।
+এই ফাংশনটি আন্ডারলাইং অ্যাসেটের সর্বোচ্চ পরিমাণ রিটার্ন করে যা একটি একক [`deposit`](#deposit) কলে জমা করা যেতে পারে, যেখানে `receiver`-এর জন্য শেয়ার মিন্ট করা হয়।
-#### ডিপোজিটের প্রিভিউ {#previewdeposit}
+#### previewDeposit {#previewdeposit}
```solidity
function previewDeposit(uint256 assets) public view returns (uint256 shares)
```
-এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের জমার প্রভাব সিমুলেট করতে দেয়।
+এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের ডিপোজিটের প্রভাব সিমুলেট করার অনুমতি দেয়।
-#### জমা {#deposit}
+#### deposit {#deposit}
```solidity
function deposit(uint256 assets, address receiver) public returns (uint256 shares)
```
-এই ফাংশনটি ভল্টে অন্তর্নিহিত টোকেনের `assets` জমা করে এবং `receiver`-কে `shares`-এর মালিকানা প্রদান করে।
+এই ফাংশনটি ভল্টে আন্ডারলাইং টোকেনের `assets` জমা করে এবং `receiver`-কে `shares`-এর মালিকানা প্রদান করে।
-#### সর্বোচ্চ মিন্ট {#maxmint}
+#### maxMint {#maxmint}
```solidity
function maxMint(address receiver) public view returns (uint256 maxShares)
```
-এই ফাংশনটি একটি একক [`mint`](#mint) কলে মিন্ট করা যেতে পারে এমন শেয়ারের সর্বোচ্চ পরিমাণ প্রদান করে, যেখানে শেয়ারগুলো `receiver`-এর জন্য মিন্ট করা হয়।
+এই ফাংশনটি শেয়ারের সর্বোচ্চ পরিমাণ রিটার্ন করে যা একটি একক [`mint`](#mint) কলে মিন্ট করা যেতে পারে, যেখানে `receiver`-এর জন্য শেয়ার মিন্ট করা হয়।
-#### মিন্টের প্রিভিউ {#previewmint}
+#### previewMint {#previewmint}
```solidity
function previewMint(uint256 shares) public view returns (uint256 assets)
```
-এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের মিন্টের প্রভাব সিমুলেট করতে দেয়।
+এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের মিন্টের প্রভাব সিমুলেট করার অনুমতি দেয়।
-#### মিন্ট {#mint}
+#### mint {#mint}
```solidity
function mint(uint256 shares, address receiver) public returns (uint256 assets)
```
-এই ফাংশনটি অন্তর্নিহিত টোকেনের `assets` জমা করার মাধ্যমে `receiver`-কে ঠিক `shares` পরিমাণ ভল্ট শেয়ার মিন্ট করে।
+এই ফাংশনটি আন্ডারলাইং টোকেনের `assets` জমা করে `receiver`-কে ঠিক `shares` পরিমাণ ভল্ট শেয়ার মিন্ট করে।
-#### সর্বোচ্চ উত্তোলন {#maxwithdraw}
+#### maxWithdraw {#maxwithdraw}
```solidity
function maxWithdraw(address owner) public view returns (uint256 maxAssets)
```
-এই ফাংশনটি অন্তর্নিহিত সম্পদের সর্বোচ্চ পরিমাণ প্রদান করে যা একটি একক [`withdraw`](#withdraw) কলের মাধ্যমে `owner`-এর ব্যালেন্স থেকে উত্তোলন করা যেতে পারে।
+এই ফাংশনটি আন্ডারলাইং অ্যাসেটের সর্বোচ্চ পরিমাণ রিটার্ন করে যা একটি একক [`withdraw`](#withdraw) কলের মাধ্যমে `owner` ব্যালেন্স থেকে তোলা যেতে পারে।
-#### উত্তোলনের প্রিভিউ {#previewwithdraw}
+#### previewWithdraw {#previewwithdraw}
```solidity
function previewWithdraw(uint256 assets) public view returns (uint256 shares)
```
-এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের উত্তোলনের প্রভাব সিমুলেট করতে দেয়।
+এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের উত্তোলনের প্রভাব সিমুলেট করার অনুমতি দেয়।
-#### উত্তোলন {#withdraw}
+#### withdraw {#withdraw}
```solidity
function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
```
-এই ফাংশনটি `owner`-এর থেকে `shares` বার্ন করে এবং ভল্ট থেকে `receiver`-কে ঠিক `assets` টোকেন পাঠায়।
+এই ফাংশনটি `owner` থেকে `shares` বার্ন করে এবং ভল্ট থেকে `receiver`-কে ঠিক `assets` টোকেন পাঠায়।
-#### সর্বোচ্চ রিডিম {#maxredeem}
+#### maxRedeem {#maxredeem}
```solidity
function maxRedeem(address owner) public view returns (uint256 maxShares)
```
-এই ফাংশনটি একটি [`redeem`](#redeem) কলের মাধ্যমে `owner`-এর ব্যালেন্স থেকে রিডিম করা যেতে পারে এমন শেয়ারের সর্বোচ্চ পরিমাণ প্রদান করে।
+এই ফাংশনটি শেয়ারের সর্বোচ্চ পরিমাণ রিটার্ন করে যা একটি [`redeem`](#redeem) কলের মাধ্যমে `owner` ব্যালেন্স থেকে রিডিম করা যেতে পারে।
-#### রিডিমের প্রিভিউ {#previewredeem}
+#### previewRedeem {#previewredeem}
```solidity
function previewRedeem(uint256 shares) public view returns (uint256 assets)
```
-এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের রিডেম্পশনের প্রভাব সিমুলেট করতে দেয়।
+এই ফাংশনটি ব্যবহারকারীদের বর্তমান ব্লকে তাদের রিডেম্পশনের প্রভাব সিমুলেট করার অনুমতি দেয়।
-#### রিডিম {#redeem}
+#### redeem {#redeem}
```solidity
function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
```
-এই ফাংশনটি `owner`-এর থেকে নির্দিষ্ট সংখ্যক `shares` রিডিম করে এবং ভল্ট থেকে `receiver`-কে অন্তর্নিহিত টোকেনের `assets` পাঠায়।
+এই ফাংশনটি `owner` থেকে একটি নির্দিষ্ট সংখ্যক `shares` রিডিম করে এবং ভল্ট থেকে `receiver`-কে আন্ডারলাইং টোকেনের `assets` পাঠায়।
-#### মোট সরবরাহ {#totalsupply}
+#### totalSupply {#totalsupply}
```solidity
function totalSupply() public view returns (uint256)
```
-প্রচলিত আনরিডিমড ভল্ট শেয়ারের মোট সংখ্যা প্রদান করে।
+সার্কুলেশনে থাকা আনরিডিমড ভল্ট শেয়ারের মোট সংখ্যা রিটার্ন করে।
-#### ব্যালেন্স {#balanceof}
+#### balanceOf {#balanceof}
```solidity
function balanceOf(address owner) public view returns (uint256)
```
-`owner`-এর কাছে বর্তমানে থাকা ভল্ট শেয়ারের মোট পরিমাণ প্রদান করে।
+বর্তমানে `owner`-এর কাছে থাকা ভল্ট শেয়ারের মোট পরিমাণ রিটার্ন করে।
### ইন্টারফেসের ম্যাপ {#mapOfTheInterface}
-
+
### ইভেন্ট {#events}
#### ডিপোজিট ইভেন্ট
-[`mint`](#mint) এবং [`deposit`](#deposit) মেথডের মাধ্যমে যখন টোকেন ভল্টে জমা করা হয় তখন **অবশ্যই** এমিট করতে হবে।
+[`mint`](#mint) এবং [`deposit`](#deposit) মেথডের মাধ্যমে ভল্টে টোকেন জমা করার সময় **অবশ্যই** এমিট করতে হবে।
```solidity
event Deposit(
@@ -203,11 +203,11 @@ event Deposit(
)
```
-যেখানে `sender` হলো সেই ব্যবহারকারী যিনি `shares`-এর জন্য `assets` বিনিময় করেছেন, এবং সেই `shares` `owner`-এর কাছে স্থানান্তর করেছেন।
+যেখানে `sender` হলো সেই ব্যবহারকারী যিনি `shares`-এর বিনিময়ে `assets` এক্সচেঞ্জ করেছেন এবং সেই `shares` গুলো `owner`-এর কাছে ট্রান্সফার করেছেন।
-#### উত্তোলন ইভেন্ট
+#### উইথড্র ইভেন্ট
-[`redeem`](#redeem) বা [`withdraw`](#withdraw) মেথডে যখন একজন আমানতকারী ভল্ট থেকে শেয়ার উত্তোলন করেন তখন **অবশ্যই** এমিট করতে হবে।
+[`redeem`](#redeem) বা [`withdraw`](#withdraw) মেথডে কোনো আমানতকারী ভল্ট থেকে শেয়ার তোলার সময় **অবশ্যই** এমিট করতে হবে।
```solidity
event Withdraw(
@@ -219,9 +219,9 @@ event Withdraw(
)
```
-যেখানে `sender` হলো সেই ব্যবহারকারী যিনি উত্তোলনটি ট্রিগার করেছেন এবং `owner`-এর মালিকানাধীন `shares`-কে `assets`-এর জন্য বিনিময় করেছেন। `receiver` হলো সেই ব্যবহারকারী যিনি উত্তোলিত `assets` পেয়েছেন।
+যেখানে `sender` হলো সেই ব্যবহারকারী যিনি উত্তোলন ট্রিগার করেছেন এবং `owner`-এর মালিকানাধীন `shares`-এর বিনিময়ে `assets` এক্সচেঞ্জ করেছেন। `receiver` হলো সেই ব্যবহারকারী যিনি উত্তোলিত `assets` পেয়েছেন।
## আরও পড়ুন {#further-reading}
- [EIP-4626: টোকেনাইজড ভল্ট স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-4626)
-- [ERC-4626: GitHub রিপো](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
+- [ERC-4626: গিটহাব রিপো (GitHub Repo)](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/erc-721/index.md b/public/content/translations/bn/developers/docs/standards/tokens/erc-721/index.md
index 7f92cd21e16..46d2729e7bf 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/erc-721/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/erc-721/index.md
@@ -1,45 +1,34 @@
---
-title: "ERC-721 নন-ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড"
-description: "ERC-721 সম্পর্কে জানুন, ইথেরিয়ামে অনন্য ডিজিটাল সম্পদের প্রতিনিধিত্বকারী নন-ফাঞ্জিবল টোকেন (NFTs)-এর জন্য একটি স্ট্যান্ডার্ড।"
+title: ERC-721 নন-ফান্জেবল টোকেন স্ট্যান্ডার্ড
+description: ERC-721 সম্পর্কে জানুন, যা ইথিরিয়ামে অনন্য ডিজিটাল সম্পদের প্রতিনিধিত্বকারী নন-ফান্জেবল টোকেন (NFTs)-এর স্ট্যান্ডার্ড।
lang: bn
---
## ভূমিকা {#introduction}
-**নন-ফাঞ্জিবল টোকেন কী?**
+**নন-ফান্জেবল টোকেন কী?**
-একটি নন-ফাঞ্জিবল টোকেন (NFT) কোনো কিছু বা কাউকে একটি অনন্য উপায়ে শনাক্ত করতে ব্যবহৃত হয়। এই ধরনের টোকেন এমন প্ল্যাটফর্মে ব্যবহারের জন্য উপযুক্ত যা সংগ্রহযোগ্য আইটেম, অ্যাক্সেস কী, লটারির টিকিট, কনসার্ট এবং
-খেলার ম্যাচের জন্য সংখ্যাযুক্ত আসন ইত্যাদি অফার করে। এই বিশেষ ধরনের টোকেনের অসাধারণ সম্ভাবনা রয়েছে তাই এর জন্য একটি সঠিক স্ট্যান্ডার্ড প্রয়োজন, ERC-721
-সেই সমাধান নিয়ে এসেছে!
+একটি নন-ফান্জেবল টোকেন (NFT) কোনো কিছু বা কাউকে অনন্য উপায়ে শনাক্ত করতে ব্যবহৃত হয়। এই ধরনের টোকেন এমন প্ল্যাটফর্মগুলোতে ব্যবহারের জন্য উপযুক্ত যা সংগ্রহযোগ্য আইটেম, অ্যাক্সেস কী, লটারির টিকিট, কনসার্ট এবং স্পোর্টস ম্যাচের জন্য নম্বরযুক্ত আসন ইত্যাদি অফার করে। এই বিশেষ ধরনের টোকেনের আশ্চর্যজনক সম্ভাবনা রয়েছে, তাই এর একটি সঠিক স্ট্যান্ডার্ড থাকা প্রাপ্য, আর ERC-721 সেই সমস্যার সমাধান নিয়ে এসেছে!
**ERC-721 কী?**
-ERC-721, NFT-এর জন্য একটি স্ট্যান্ডার্ড চালু করে, অন্য কথায়, এই ধরনের টোকেন অনন্য এবং একই স্মার্ট কন্ট্র্যাক্ট থেকে অন্য টোকেনের চেয়ে ভিন্ন মান
-থাকতে পারে, সম্ভবত এর বয়স, বিরলতা বা এমনকি এর ভিজ্যুয়ালের মতো অন্য কিছুর কারণে।
-অপেক্ষা করুন, ভিজ্যুয়াল?
+ERC-721 NFT-এর জন্য একটি স্ট্যান্ডার্ড প্রবর্তন করে, অন্য কথায়, এই ধরনের টোকেন অনন্য এবং একই স্মার্ট কন্ট্রাক্ট থেকে আসা অন্য টোকেনের চেয়ে এর মান ভিন্ন হতে পারে, হতে পারে এর বয়স, বিরলতা বা এমনকি এর ভিজ্যুয়ালের মতো অন্য কিছুর কারণে। একটু দাঁড়ান, ভিজ্যুয়াল?
-হ্যাঁ! সমস্ত NFT-এর `tokenId` নামক একটি `uint256` ভেরিয়েবল আছে, তাই যেকোনো ERC-721 কন্ট্র্যাক্টের জন্য, `contract address, uint256 tokenId` জোড়াটি
-বিশ্বব্যাপী অনন্য হতে হবে। বলা বাহুল্য, একটি dapp-এর একটি "কনভার্টার" থাকতে পারে যা
-ইনপুট হিসাবে `tokenId` ব্যবহার করে এবং জম্বি, অস্ত্র, দক্ষতা বা আশ্চর্যজনক কিটিদের মতো দুর্দান্ত কিছুর একটি চিত্র আউটপুট করে!
+হ্যাঁ! সমস্ত NFT-তে `tokenId` নামক একটি `uint256` ভেরিয়েবল থাকে, তাই যেকোনো ERC-721 কন্ট্রাক্টের জন্য, `contract address, uint256 tokenId` জোড়াটি বিশ্বব্যাপী অনন্য হতে হবে। বলা যায়, একটি ডিএ্যাপ-এ এমন একটি "কনভার্টার" থাকতে পারে যা `tokenId`-কে ইনপুট হিসেবে ব্যবহার করে এবং জম্বি, অস্ত্র, দক্ষতা বা চমৎকার বিড়ালছানার মতো দারুণ কিছুর ছবি আউটপুট হিসেবে দেয়!
## পূর্বশর্ত {#prerequisites}
-- [অ্যাকাউন্ট](/developers/docs/accounts/)
-- [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/)
+- [একাউন্ট](/developers/docs/accounts/)
+- [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)
- [টোকেন স্ট্যান্ডার্ড](/developers/docs/standards/tokens/)
-## বডি {#body}
+## মূল অংশ {#body}
-ERC-721 (Ethereum Request for Comments 721), যা উইলিয়াম এন্টিকেন, ডিটার শার্লি, জ্যাকব ইভান্স,
-নাস্টাসিয়া শ্যাক্স দ্বারা জানুয়ারী 2018-এ প্রস্তাবিত, এটি একটি নন-ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড যা স্মার্ট কন্ট্র্যাক্টের মধ্যে টোকেনগুলির জন্য একটি API প্রয়োগ করে।
+ERC-721 ([Ethereum](/) Request for Comments 721), যা 2018 সালের জানুয়ারিতে উইলিয়াম এন্ট্রিকেন, ডিটার শার্লি, জ্যাকব ইভান্স এবং নাস্তাসিয়া শ্যাক্স দ্বারা প্রস্তাবিত হয়েছিল, এটি একটি নন-ফান্জেবল টোকেন স্ট্যান্ডার্ড যা স্মার্ট কন্ট্রাক্ট-এর মধ্যে টোকেনগুলোর জন্য একটি API বাস্তবায়ন করে।
-এটি একটি অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে টোকেন স্থানান্তর করা, একটি অ্যাকাউন্টের বর্তমান টোকেন ব্যালেন্স
-পাওয়া, একটি নির্দিষ্ট টোকেনের মালিক কে তা জানা এবং নেটওয়ার্কে উপলব্ধ টোকেনের মোট সরবরাহ জানার মতো কার্যকারিতা প্রদান করে।
-এগুলি ছাড়াও, এটিতে আরও কিছু কার্যকারিতা রয়েছে, যেমন কোনও অ্যাকাউন্ট থেকে একটি নির্দিষ্ট পরিমাণ টোকেন একটি তৃতীয় পক্ষের অ্যাকাউন্টের দ্বারা
-স্থানান্তর করার অনুমোদন দেওয়া।
+এটি এক একাউন্ট থেকে অন্য একাউন্টে টোকেন স্থানান্তর করা, একটি একাউন্টের বর্তমান টোকেন ব্যালেন্স জানা, একটি নির্দিষ্ট টোকেনের মালিককে খুঁজে বের করা এবং নেটওয়ার্ক-এ উপলব্ধ টোকেনের মোট সরবরাহ জানার মতো কার্যকারিতা প্রদান করে। এগুলোর পাশাপাশি এর আরও কিছু কার্যকারিতা রয়েছে, যেমন একটি একাউন্ট থেকে নির্দিষ্ট পরিমাণ টোকেন তৃতীয় পক্ষের একাউন্ট দ্বারা সরানো যেতে পারে তা অনুমোদন করা।
-যদি একটি স্মার্ট কন্ট্র্যাক্ট নিম্নলিখিত পদ্ধতি এবং ইভেন্টগুলি প্রয়োগ করে তবে এটিকে একটি ERC-721 নন-ফাঞ্জিবল টোকেন কন্ট্র্যাক্ট বলা যেতে পারে
-এবং, একবার ডিপ্লয় করা হলে, এটি ইথেরিয়ামে তৈরি টোকেনগুলির ট্র্যাক রাখার জন্য দায়ী থাকবে।
+যদি একটি স্মার্ট কন্ট্রাক্ট নিচের মেথড এবং ইভেন্টগুলো বাস্তবায়ন করে, তবে এটিকে একটি ERC-721 নন-ফান্জেবল টোকেন কন্ট্রাক্ট বলা যেতে পারে এবং একবার ডিপ্লয় করা হলে, এটি ইথিরিয়ামে তৈরি করা টোকেনগুলোর ট্র্যাক রাখার জন্য দায়ী থাকবে।
[EIP-721](https://eips.ethereum.org/EIPS/eip-721) থেকে:
@@ -67,13 +56,11 @@ ERC-721 (Ethereum Request for Comments 721), যা উইলিয়াম এ
### উদাহরণ {#web3py-example}
-আসুন দেখি কীভাবে একটি স্ট্যান্ডার্ড ইথেরিয়ামের যেকোনো ERC-721 টোকেন কন্ট্র্যাক্ট পরীক্ষা করার জন্য আমাদের জন্য জিনিসগুলিকে সহজ করে তোলে।
-যেকোনো ERC-721 টোকেনের একটি ইন্টারফেস তৈরি করতে আমাদের শুধুমাত্র কন্ট্র্যাক্ট অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) প্রয়োজন। যেমন আপনি নিচে
-দেখতে পাচ্ছেন, এটিকে একটি ঝামেলাহীন উদাহরণ তৈরি করতে আমরা একটি সরলীকৃত ABI ব্যবহার করব।
+আসুন দেখি ইথিরিয়ামে যেকোনো ERC-721 টোকেন কন্ট্রাক্ট পরিদর্শন করা আমাদের জন্য সহজ করতে একটি স্ট্যান্ডার্ড কতটা গুরুত্বপূর্ণ। যেকোনো ERC-721 টোকেনের জন্য একটি ইন্টারফেস তৈরি করতে আমাদের শুধু কন্ট্রাক্ট অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) প্রয়োজন। নিচে দেখতে পাবেন যে আমরা একটি সরলীকৃত ABI ব্যবহার করব, যাতে এটি সহজে বোঝা যায় এমন একটি উদাহরণ হয়।
#### Web3.py উদাহরণ {#web3py-example}
-প্রথমে, নিশ্চিত করুন যে আপনি [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) পাইথন লাইব্রেরিটি ইনস্টল করেছেন:
+প্রথমে, নিশ্চিত করুন যে আপনি [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) পাইথন লাইব্রেরি ইনস্টল করেছেন:
```
pip install web3
@@ -86,12 +73,12 @@ from web3._utils.events import get_event_data
w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))
-ck_token_addr = "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d" # CryptoKitties Contract
+ck_token_addr = "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d" # ক্রিপ্টোকিটিজ কন্ট্রাক্ট
-acc_address = "0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C" # CryptoKitties Sales Auction
+acc_address = "0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C" # ক্রিপ্টোকিটিজ বিক্রির নিলাম
-# This is a simplified Contract Application Binary Interface (ABI) of an ERC-721 NFT Contract.
-# It will expose only the methods: balanceOf(address), name(), ownerOf(tokenId), symbol(), totalSupply()
+# এটি একটি ERC-721 NFT কন্ট্রাক্টের সরলীকৃত কন্ট্রাক্ট অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI)।
+# এটি শুধুমাত্র এই মেথডগুলো প্রকাশ করবে: balanceOf(address), name(), ownerOf(tokenId), symbol(), totalSupply()
simplified_abi = [
{
'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}],
@@ -149,7 +136,7 @@ print(f"{name} [{symbol}] NFTs in Auctions: {kitties_auctions}")
pregnant_kitties = ck_contract.functions.pregnantKitties().call()
print(f"{name} [{symbol}] NFTs Pregnants: {pregnant_kitties}")
-# Using the Transfer Event ABI to get info about transferred Kitties.
+# ট্রান্সফার হওয়া কিটিজ সম্পর্কে তথ্য পেতে ট্রান্সফার ইভেন্ট ABI ব্যবহার করা হচ্ছে।
tx_event_abi = {
'anonymous': False,
'inputs': [
@@ -160,7 +147,7 @@ tx_event_abi = {
'type': 'event'
}
-# We need the event's signature to filter the logs
+# লগগুলো ফিল্টার করার জন্য আমাদের ইভেন্টের সিগনেচার প্রয়োজন
event_signature = w3.keccak(text="Transfer(address,address,uint256)").hex()
logs = w3.eth.get_logs({
@@ -169,25 +156,25 @@ logs = w3.eth.get_logs({
"topics": [event_signature]
})
-# Notes:
-# - Increase the number of blocks up from 120 if no Transfer event is returned.
-# - If you didn't find any Transfer event you can also try to get a tokenId at:
-# https://etherscan.io/address/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d#events
-# Click to expand the event's logs and copy its "tokenId" argument
+# দ্রষ্টব্য:
+# - যদি কোনো ট্রান্সফার ইভেন্ট না পাওয়া যায়, তবে ব্লকের সংখ্যা ১২০ থেকে বাড়িয়ে দিন।
+# - যদি আপনি কোনো ট্রান্সফার ইভেন্ট খুঁজে না পান, তবে আপনি এখান থেকেও একটি tokenId পাওয়ার চেষ্টা করতে পারেন:
+# https://etherscan.io/address/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d#events
+# ইভেন্টের লগগুলো প্রসারিত করতে ক্লিক করুন এবং এর "tokenId" আর্গুমেন্টটি কপি করুন
recent_tx = [get_event_data(w3.codec, tx_event_abi, log)["args"] for log in logs]
if recent_tx:
- kitty_id = recent_tx[0]['tokenId'] # Paste the "tokenId" here from the link above
+ kitty_id = recent_tx[0]['tokenId'] # উপরের লিংক থেকে "tokenId" এখানে পেস্ট করুন
is_pregnant = ck_contract.functions.isPregnant(kitty_id).call()
print(f"{name} [{symbol}] NFTs {kitty_id} is pregnant: {is_pregnant}")
```
-CryptoKitties কন্ট্র্যাক্টে স্ট্যান্ডার্ড ইভেন্টগুলি ছাড়াও কিছু আকর্ষণীয় ইভেন্ট রয়েছে।
+ক্রিপ্টোকিটিজ (CryptoKitties) কন্ট্রাক্টে স্ট্যান্ডার্ড ইভেন্টগুলো ছাড়াও কিছু আকর্ষণীয় ইভেন্ট রয়েছে।
-আসুন তাদের মধ্যে দুটি পরীক্ষা করি, `Pregnant` এবং `Birth`।
+আসুন সেগুলোর মধ্যে দুটি পরীক্ষা করে দেখি, `Pregnant` এবং `Birth`।
```python
-# Using the Pregnant and Birth Events ABI to get info about new Kitties.
+# নতুন কিটিজ সম্পর্কে তথ্য পেতে প্রেগন্যান্ট এবং বার্থ ইভেন্ট ABI ব্যবহার করা হচ্ছে।
ck_extra_events_abi = [
{
'anonymous': False,
@@ -211,13 +198,13 @@ ck_extra_events_abi = [
'type': 'event'
}]
-# We need the event's signature to filter the logs
+# লগগুলো ফিল্টার করার জন্য আমাদের ইভেন্টের সিগনেচার প্রয়োজন
ck_event_signatures = [
w3.keccak(text="Pregnant(address,uint256,uint256,uint256)").hex(),
w3.keccak(text="Birth(address,uint256,uint256,uint256,uint256)").hex(),
]
-# Here is a Pregnant Event:
+# এখানে একটি প্রেগন্যান্ট ইভেন্ট দেওয়া হলো:
# - https://etherscan.io/tx/0xc97eb514a41004acc447ac9d0d6a27ea6da305ac8b877dff37e49db42e1f8cef#eventlog
pregnant_logs = w3.eth.get_logs({
"fromBlock": w3.eth.block_number - 120,
@@ -227,7 +214,7 @@ pregnant_logs = w3.eth.get_logs({
recent_pregnants = [get_event_data(w3.codec, ck_extra_events_abi[0], log)["args"] for log in pregnant_logs]
-# Here is a Birth Event:
+# এখানে একটি বার্থ ইভেন্ট দেওয়া হলো:
# - https://etherscan.io/tx/0x3978028e08a25bb4c44f7877eb3573b9644309c044bf087e335397f16356340a
birth_logs = w3.eth.get_logs({
"fromBlock": w3.eth.block_number - 120,
@@ -238,26 +225,28 @@ birth_logs = w3.eth.get_logs({
recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] for log in birth_logs]
```
-## জনপ্রিয় NFT {#popular-nfts}
-
-- [Etherscan NFT Tracker](https://etherscan.io/nft-top-contracts) স্থানান্তরের ভলিউম অনুসারে ইথেরিয়ামের শীর্ষস্থানীয় NFT-এর তালিকা করে।
-- [CryptoKitties](https://www.cryptokitties.co/) হল প্রজননযোগ্য, সংগ্রহযোগ্য এবং অত্যন্ত আরাধ্য প্রাণীদের কেন্দ্র করে একটি গেম,
- যাদের আমরা CryptoKitties বলি।
-- [Sorare](https://sorare.com/) একটি বিশ্বব্যাপী ফ্যান্টাসি ফুটবল খেলা যেখানে আপনি সীমিত সংস্করণের সংগ্রহযোগ্য জিনিস সংগ্রহ করতে পারেন,
- আপনার দল পরিচালনা করতে পারেন এবং পুরস্কার অর্জনের জন্য প্রতিযোগিতা করতে পারেন।
-- [The Ethereum Name Service (ENS)](https://ens.domains/) সহজ, মানুষের পাঠযোগ্য নাম ব্যবহার করে ব্লকচেইনের
- ভিতরে এবং বাইরে উভয় রিসোর্স অ্যাড্রেস করার জন্য একটি নিরাপদ ও বিকেন্দ্রীভূত উপায় অফার করে।
-- [POAP](https://poap.xyz) যারা ইভেন্টে যোগ দেয় বা নির্দিষ্ট কাজ সম্পন্ন করে তাদের বিনামূল্যে NFT সরবরাহ করে। POAP তৈরি এবং বিতরণ করা বিনামূল্যে।
-- [Unstoppable Domains](https://unstoppabledomains.com/) হল একটি সান ফ্রান্সিসকো-ভিত্তিক কোম্পানি যা
- ব্লকচেইনে ডোমেইন তৈরি করে। ব্লকচেইন ডোমেইনগুলি ক্রিপ্টোকারেন্সি অ্যাড্রেসগুলিকে মানুষের পাঠযোগ্য নাম দিয়ে প্রতিস্থাপন করে এবং সেন্সরশিপ-প্রতিরোধী ওয়েবসাইটগুলিকে
- সক্ষম করতে ব্যবহার করা যেতে পারে।
-- [Gods Unchained Cards](https://godsunchained.com/) হল Ethereum ব্লকচেইনের একটি TCG যা ইন-গেম অ্যাসেটগুলিতে প্রকৃত মালিকানা আনতে
- NFT ব্যবহার করে।
-- [Bored Ape Yacht Club](https://boredapeyachtclub.com) হলো ১০,০০০টি অনন্য NFT-এর একটি সংগ্রহ, যা একটি প্রমাণযোগ্য-বিরল শিল্পকর্ম হওয়ার পাশাপাশি ক্লাবের সদস্যপদ টোকেন হিসেবে কাজ করে, যা সদস্যদের জন্য বিভিন্ন সুযোগ-সুবিধা প্রদান করে এবং সম্প্রদায়ের প্রচেষ্টার ফলে সময়ের সাথে সাথে এর সুবিধা বাড়তে থাকে।
+## জনপ্রিয় NFTs {#popular-nfts}
+
+- [Etherscan NFT Tracker](https://etherscan.io/nft-top-contracts) ট্রান্সফার ভলিউম অনুযায়ী ইথিরিয়ামের শীর্ষ NFT-গুলোর তালিকা করে।
+- [CryptoKitties](https://www.cryptokitties.co/) হলো প্রজননযোগ্য, সংগ্রহযোগ্য এবং অত্যন্ত আরাধ্য প্রাণীদের কেন্দ্র করে তৈরি একটি গেম, যাদের আমরা ক্রিপ্টোকিটিজ (CryptoKitties) বলি।
+- [Sorare](https://sorare.com/) হলো একটি গ্লোবাল ফ্যান্টাসি ফুটবল গেম যেখানে আপনি সীমিত সংস্করণের সংগ্রহযোগ্য আইটেম সংগ্রহ করতে পারেন, আপনার দল পরিচালনা করতে পারেন এবং পুরস্কার জেতার জন্য প্রতিযোগিতা করতে পারেন।
+- [The Ethereum Name Service (ENS)](https://ens.domains/) সহজ, মানুষের পাঠযোগ্য নাম ব্যবহার করে ব্লকচেইন-এর ভেতরে এবং বাইরে উভয় ক্ষেত্রেই রিসোর্সগুলোকে অ্যাড্রেস করার একটি নিরাপদ এবং ডিসেন্ট্রালাইজড উপায় অফার করে।
+- [POAP](https://poap.xyz) ইভেন্টে অংশগ্রহণকারী বা নির্দিষ্ট কাজ সম্পন্নকারী ব্যক্তিদের বিনামূল্যে NFT প্রদান করে। POAP তৈরি এবং বিতরণ করা সম্পূর্ণ বিনামূল্যে।
+- [Unstoppable Domains](https://unstoppabledomains.com/) হলো সান ফ্রান্সিসকো-ভিত্তিক একটি কোম্পানি যা ব্লকচেইন-এ ডোমেইন তৈরি করে। ব্লকচেইন ডোমেইনগুলো ক্রিপটোকারেন্সি এডড্রেস-কে মানুষের পাঠযোগ্য নাম দিয়ে প্রতিস্থাপন করে এবং সেন্সরশিপ-প্রতিরোধী ওয়েবসাইটগুলো সক্ষম করতে ব্যবহার করা যেতে পারে।
+- [Gods Unchained Cards](https://godsunchained.com/) হলো ইথিরিয়াম ব্লকচেইন-এর ওপর একটি TCG যা ইন-গেম অ্যাসেটগুলোতে প্রকৃত মালিকানা আনতে NFT ব্যবহার করে।
+- [Bored Ape Yacht Club](https://boredapeyachtclub.com) হলো 10,000টি অনন্য NFT-এর একটি সংগ্রহ, যা একটি প্রমাণিত-বিরল শিল্পকর্ম হওয়ার পাশাপাশি ক্লাবের সদস্যপদ টোকেন হিসেবে কাজ করে, যা সদস্যদের এমন সব সুবিধা প্রদান করে যা সময়ের সাথে সাথে কমিউনিটির প্রচেষ্টার ফলে বৃদ্ধি পায়।
## আরও পড়ুন {#further-reading}
-- [EIP-721: ERC-721 নন-ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-721)
-- [OpenZeppelin - ERC-721 ডকস](https://docs.openzeppelin.com/contracts/3.x/erc721)
+- [EIP-721: ERC-721 নন-ফান্জেবল টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-721)
+- [OpenZeppelin - ERC-721 ডক্স](https://docs.openzeppelin.com/contracts/3.x/erc721)
- [OpenZeppelin - ERC-721 ইমপ্লিমেন্টেশন](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol)
- [Alchemy NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart)
+
+## টিউটোরিয়াল: ইথিরিয়ামে নন-ফান্জেবল টোকেন (ERC-721) দিয়ে তৈরি করুন {#tutorials}
+
+- [Vyper ERC-721 কন্ট্রাক্ট ওয়াকথ্রু](/developers/tutorials/erc-721-vyper-annotated-code/) _– Vyper-এ লেখা একটি সম্পূর্ণ ERC-721 NFT কন্ট্রাক্টের টীকাযুক্ত ওয়াকথ্রু।_
+- [কীভাবে একটি NFT লিখতে এবং ডিপ্লয় করতে হয় (পর্ব 1/3)](/developers/tutorials/how-to-write-and-deploy-an-nft/) _– আপনার প্রথম ERC-721 স্মার্ট কন্ট্রাক্ট লেখা এবং ডিপ্লয় করার ধাপে ধাপে গাইড।_
+- [কীভাবে একটি NFT মিন্ট করবেন (পর্ব 2/3)](/developers/tutorials/how-to-mint-an-nft/) _– আপনার ডিপ্লয় করা স্মার্ট কন্ট্রাক্ট এবং Web3 ব্যবহার করে কীভাবে একটি ERC-721 NFT মিন্ট করবেন।_
+- [কীভাবে আপনার ওয়ালেটে আপনার NFT দেখবেন (পর্ব 3/3)](/developers/tutorials/how-to-view-nft-in-metamask/) _– ডিপ্লয়মেন্টের পর MetaMask-এ আপনার মিন্ট করা NFT কীভাবে প্রদর্শন করবেন।_
+- [NFT মিন্টার টিউটোরিয়াল](/developers/tutorials/nft-minter/) _– React ফ্রন্টএন্ড, MetaMask এবং Alchemy দিয়ে একটি ফুল-স্ট্যাক NFT মিন্টিং ডিএ্যাপ তৈরি করুন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/erc-777/index.md b/public/content/translations/bn/developers/docs/standards/tokens/erc-777/index.md
index fff9952c48e..3fc56d2d818 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/erc-777/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/erc-777/index.md
@@ -1,45 +1,45 @@
---
-title: "ERC-777 টোকেন স্ট্যান্ডার্ড"
-description: "ERC-777 সম্পর্কে জানুন, হুকসহ একটি উন্নত ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড, যদিও নিরাপত্তার জন্য ERC-20 সুপারিশ করা হয়।"
+title: ERC-777 টোকেন স্ট্যান্ডার্ড
+description: ERC-777 সম্পর্কে জানুন, যা হুকসহ একটি উন্নত ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড, যদিও নিরাপত্তার জন্য ERC-20 সুপারিশ করা হয়।
lang: bn
---
-## সতর্কবার্তা {#warning}
+## সতর্কতা {#warning}
-**ERC-777 সঠিকভাবে প্রয়োগ করা কঠিন, কারণ এটি [বিভিন্ন ধরনের আক্রমণের জন্য ঝুঁকিপূর্ণ](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/2620)। এর পরিবর্তে [ERC-20](/developers/docs/standards/tokens/erc-20/) ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।** এই পেজটি একটি ঐতিহাসিক আর্কাইভ হিসেবে রয়ে গেছে।
+**ERC-777 সঠিকভাবে প্রয়োগ করা কঠিন, কারণ এটি [বিভিন্ন ধরনের আক্রমণের প্রতি সংবেদনশীল](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/2620)। এর পরিবর্তে [ERC-20](/developers/docs/standards/tokens/erc-20/) ব্যবহার করার সুপারিশ করা হয়।** এই পেজটি একটি ঐতিহাসিক আর্কাইভ হিসেবে রাখা হয়েছে।
## ভূমিকা? {#introduction}
-ERC-777 একটি ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড যা বিদ্যমান [ERC-20](/developers/docs/standards/tokens/erc-20/) স্ট্যান্ডার্ডকে উন্নত করে।
+ERC-777 হলো একটি ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড যা বিদ্যমান [ERC-20](/developers/docs/standards/tokens/erc-20/) স্ট্যান্ডার্ডকে উন্নত করে।
## পূর্বশর্ত {#prerequisites}
-এই পেজটি আরও ভালোভাবে বোঝার জন্য, আমরা আপনাকে প্রথমে [ERC-20](/developers/docs/standards/tokens/erc-20/) সম্পর্কে পড়ার পরামর্শ দিচ্ছি।
+এই পেজটি ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করি আপনি প্রথমে [ERC-20](/developers/docs/standards/tokens/erc-20/) সম্পর্কে পড়ুন।
-## ERC-20-এর উপর ERC-777 কী কী উন্নতি প্রস্তাব করে? {#-erc-777-vs-erc-20}
+## ERC-20 এর তুলনায় ERC-777 কী কী উন্নতির প্রস্তাব দেয়? {#-erc-777-vs-erc-20}
-ERC-777, ERC-20-এর উপর নিম্নলিখিত উন্নতিগুলো প্রদান করে।
+ERC-777, ERC-20 এর তুলনায় নিচের উন্নতিগুলো প্রদান করে।
### হুকস {#hooks}
-হুকস হলো একটি ফাংশন যা একটি স্মার্ট কন্ট্র্যাক্টের কোডে বর্ণনা করা থাকে। কন্ট্র্যাক্টের মাধ্যমে টোকেন পাঠানো বা গ্রহণ করা হলে হুকস কল করা হয়। এটি একটি স্মার্ট কন্ট্র্যাক্টকে আগত বা বহির্গামী টোকেনের প্রতি প্রতিক্রিয়া জানাতে অনুমতি দেয়।
+হুকস হলো স্মার্ট কন্ট্রাক্ট এর কোডে বর্ণিত একটি ফাংশন। যখন কন্ট্রাক্টের মাধ্যমে টোকেন পাঠানো বা গ্রহণ করা হয় তখন হুকস কল করা হয়। এটি একটি স্মার্ট কন্ট্রাক্ট-কে ইনকামিং বা আউটগোয়িং টোকেনগুলোর প্রতি প্রতিক্রিয়া জানাতে দেয়।
-[ERC-1820](https://eips.ethereum.org/EIPS/eip-1820) স্ট্যান্ডার্ড ব্যবহার করে হুকসগুলো রেজিস্টার এবং আবিষ্কার করা হয়।
+হুকগুলো [ERC-1820](https://eips.ethereum.org/EIPS/eip-1820) স্ট্যান্ডার্ড ব্যবহার করে রেজিস্টার এবং ডিসকভার করা হয়।
#### হুকস কেন দারুণ? {#why-are-hooks-great}
-1. হুকস একটি একক লেনদেনে একটি কন্ট্র্যাক্টে টোকেন পাঠানো এবং কন্ট্র্যাক্টটিকে অবহিত করার অনুমতি দেয়, যা [ERC-20](https://eips.ethereum.org/EIPS/eip-20)-এর মতো নয়, যেখানে এটি অর্জন করার জন্য একটি ডাবল কল (`approve`/`transferFrom`) প্রয়োজন।
-2. যেসব কন্ট্র্যাক্ট হুকস রেজিস্টার করেনি সেগুলো ERC-777-এর সাথে বেমানান। গ্রহণকারী কন্ট্র্যাক্টটি একটি হুক রেজিস্টার না করলে প্রেরণকারী কন্ট্র্যাক্ট লেনদেনটি বাতিল করে দেবে। এটি নন-ERC-777 স্মার্ট কন্ট্র্যাক্টে দুর্ঘটনাজনিত ট্রান্সফার প্রতিরোধ করে।
-3. হুকস লেনদেন প্রত্যাখ্যান করতে পারে।
+1. হুকস একটি কন্ট্রাক্টে টোকেন পাঠাতে এবং একটি একক লেনদেন এর মাধ্যমে কন্ট্রাক্টকে অবহিত করতে দেয়, যা [ERC-20](https://eips.ethereum.org/EIPS/eip-20) এর মতো নয়, যেখানে এটি অর্জন করতে ডাবল কল (`approve`/`transferFrom`) প্রয়োজন হয়।
+2. যেসব কন্ট্রাক্ট হুক রেজিস্টার করেনি সেগুলো ERC-777 এর সাথে বেমানান। যখন গ্রহণকারী কন্ট্রাক্ট কোনো হুক রেজিস্টার করে না, তখন প্রেরণকারী কন্ট্রাক্ট লেনদেন বাতিল করে দেবে। এটি নন-ERC-777 স্মার্ট কন্ট্রাক্ট-এ দুর্ঘটনাবশত ট্রান্সফার প্রতিরোধ করে।
+3. হুকস লেনদেন বাতিল করতে পারে।
-### ডেসিমেল {#decimals}
+### ডেসিম্যালস {#decimals}
-এই স্ট্যান্ডার্ডটি ERC-20-তে `decimals`-কে ঘিরে তৈরি হওয়া বিভ্রান্তিরও সমাধান করে। এই স্বচ্ছতা ডেভেলপার অভিজ্ঞতাকে উন্নত করে।
+এই স্ট্যান্ডার্ডটি ERC-20 তে সৃষ্ট `decimals` সম্পর্কিত বিভ্রান্তিরও সমাধান করে। এই স্পষ্টতা ডেভেলপারদের অভিজ্ঞতা উন্নত করে।
-### ERC-20-এর সাথে পশ্চাৎমুখী সামঞ্জস্য {#backwards-compatibility-with-erc-20}
+### ERC-20 এর সাথে ব্যাকওয়ার্ডস কম্প্যাটিবিলিটি {#backwards-compatibility-with-erc-20}
-ERC-777 কন্ট্র্যাক্টগুলোর সাথে এমনভাবে ইন্টারঅ্যাক্ট করা যেতে পারে যেন তারা ERC-20 কন্ট্র্যাক্ট।
+ERC-777 কন্ট্রাক্টগুলোর সাথে এমনভাবে ইন্টারঅ্যাক্ট করা যায় যেন সেগুলো ERC-20 কন্ট্রাক্ট।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
-[EIP-777: টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-777)
+[EIP-777: টোকেন স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-777)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/standards/tokens/index.md b/public/content/translations/bn/developers/docs/standards/tokens/index.md
index 07874cfbb41..8ed629eb861 100644
--- a/public/content/translations/bn/developers/docs/standards/tokens/index.md
+++ b/public/content/translations/bn/developers/docs/standards/tokens/index.md
@@ -1,41 +1,41 @@
---
-title: "টোকেন স্ট্যান্ডার্ড"
-description: "ফাঞ্জিবল এবং নন-ফাঞ্জিবল টোকেনগুলির জন্য ERC-20, ERC-721, এবং ERC-1155 সহ Ethereum টোকেন স্ট্যান্ডার্ডগুলি এক্সপ্লোর করুন।"
+title: টোকেন স্ট্যান্ডার্ড
+description: ফান্জেবল এবং নন-ফান্জেবল টোকেনের জন্য ERC-20, ERC-721 এবং ERC-1155 সহ ইথিরিয়াম টোকেন স্ট্যান্ডার্ডগুলো এক্সপ্লোর করুন।
lang: bn
incomplete: true
---
## ভূমিকা {#introduction}
-অনেক Ethereum ডেভেলপমেন্ট স্ট্যান্ডার্ড টোকেন ইন্টারফেসের উপর ফোকাস করে। এই স্ট্যান্ডার্ডগুলি স্মার্ট কন্ট্র্যাক্টগুলি যাতে কম্পোজেবল থাকে তা নিশ্চিত করতে সাহায্য করে, তাই যখন কোনো নতুন প্রজেক্ট একটি টোকেন ইস্যু করে, তখন তা বিদ্যমান ডিসেন্ট্রালাইজড এক্সচেঞ্জ এবং অ্যাপ্লিকেশনের সাথে সামঞ্জস্যপূর্ণ থাকে।
+অনেক [Ethereum](/) ডেভেলপমেন্ট স্ট্যান্ডার্ড টোকেন ইন্টারফেসের উপর ফোকাস করে। এই স্ট্যান্ডার্ডগুলো নিশ্চিত করতে সাহায্য করে যে স্মার্ট কন্ট্রাক্ট কম্পোজেবল থাকে, তাই যখন কোনো নতুন প্রজেক্ট একটি টোকেন ইস্যু করে, তখন এটি বিদ্যমান ডিসেন্ট্রালাইজড এক্সচেঞ্জ এবং অ্যাপ্লিকেশনগুলোর সাথে সামঞ্জস্যপূর্ণ থাকে।
-টোকেন স্ট্যান্ডার্ডগুলি নির্ধারণ করে যে টোকেনগুলি কীভাবে Ethereum ইকোসিস্টেম জুড়ে আচরণ করে এবং ইন্টারঅ্যাক্ট করে। এগুলি ডেভেলপারদের জন্য নতুন করে চাকা আবিষ্কার না করেই নির্মাণ করা সহজ করে তোলে, নিশ্চিত করে যে টোকেনগুলি ওয়ালেট, এক্সচেঞ্জ এবং DeFi প্ল্যাটফর্মগুলির সাথে নির্বিঘ্নে কাজ করে। গেমিং, গভর্নেন্স বা অন্যান্য ব্যবহারের ক্ষেত্রে যাই হোক না কেন, এই স্ট্যান্ডার্ডগুলি সামঞ্জস্যতা প্রদান করে এবং Ethereum-কে আরও আন্তঃসংযুক্ত করে তোলে।
+টোকেন স্ট্যান্ডার্ডগুলো নির্ধারণ করে যে ইথিরিয়াম ইকোসিস্টেম জুড়ে টোকেনগুলো কীভাবে আচরণ করবে এবং ইন্টারঅ্যাক্ট করবে। এগুলো ডেভেলপারদের জন্য নতুন করে সবকিছু তৈরি না করেই কাজ করা সহজ করে তোলে, যা নিশ্চিত করে যে টোকেনগুলো ওয়ালেট, এক্সচেঞ্জ এবং ডিফাই (DeFi) প্ল্যাটফর্মগুলোর সাথে নির্বিঘ্নে কাজ করে। গেমিং, গভর্নেন্স বা অন্যান্য ব্যবহার ক্ষেত্রেই হোক না কেন, এই স্ট্যান্ডার্ডগুলো ধারাবাহিকতা প্রদান করে এবং ইথিরিয়ামকে আরও বেশি আন্তঃসংযুক্ত করে তোলে।
## পূর্বশর্ত {#prerequisites}
-- [Ethereum ডেভেলপমেন্ট স্ট্যান্ডার্ড](/developers/docs/standards/)
-- [স্মার্ট কন্ট্র্যাক্ট](/developers/docs/smart-contracts/)
+- [ইথিরিয়াম ডেভেলপমেন্ট স্ট্যান্ডার্ড](/developers/docs/standards/)
+- [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/)
## টোকেন স্ট্যান্ডার্ড {#token-standards}
-এখানে Ethereum-এর সবচেয়ে জনপ্রিয় কিছু টোকেন স্ট্যান্ডার্ড রয়েছে:
+ইথিরিয়ামের সবচেয়ে জনপ্রিয় কিছু টোকেন স্ট্যান্ডার্ড নিচে দেওয়া হলো:
-- [ERC-20](/developers/docs/standards/tokens/erc-20/) - ফাঞ্জিবল (বিনিময়যোগ্য) টোকেনের জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন ভোটিং টোকেন, স্টেকিং টোকেন বা ভার্চুয়াল কারেন্সি।
+- [ERC-20](/developers/docs/standards/tokens/erc-20/) - ফান্জেবল (বিনিময়যোগ্য) টোকেনগুলোর জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন ভোটিং টোকেন, স্টেকিং টোকেন বা ভার্চুয়াল কারেন্সি।
-### NFT স্ট্যান্ডার্ড {#nft-standards}
+### এনএফটি (NFT) স্ট্যান্ডার্ড {#nft-standards}
-- [ERC-721](/developers/docs/standards/tokens/erc-721/) - নন-ফাঞ্জিবল টোকেনের জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন কোনো শিল্পকর্ম বা গানের দলিল।
-- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 আরও দক্ষ ট্রেড এবং লেনদেনের বান্ডলিংয়ের অনুমতি দেয় – এইভাবে খরচ সাশ্রয় হয়। এই টোকেন স্ট্যান্ডার্ডটি ইউটিলিটি টোকেন (যেমন $BNB বা $BAT) এবং ক্রিপ্টোপাঙ্কসের মতো নন-ফাঞ্জিবল টোকেন উভয়ই তৈরি করার অনুমতি দেয়।
+- [ERC-721](/developers/docs/standards/tokens/erc-721/) - নন-ফান্জেবল টোকেন এর জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস, যেমন আর্টওয়ার্ক বা গানের দলিল।
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 আরও দক্ষ ট্রেড এবং লেনদেন বান্ডিল করার অনুমতি দেয় – যার ফলে খরচ বাঁচে। এই টোকেন স্ট্যান্ডার্ডটি ইউটিলিটি টোকেন (যেমন $BNB বা $BAT) এবং CryptoPunks-এর মতো নন-ফান্জেবল টোকেন উভয়ই তৈরি করার অনুমতি দেয়।
-[ERC](https://eips.ethereum.org/erc) প্রস্তাবগুলির সম্পূর্ণ তালিকা।
+[ERC](https://eips.ethereum.org/erc) প্রস্তাবনার সম্পূর্ণ তালিকা।
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
+## সম্পর্কিত টিউটোরিয়াল {#related-tutorials}
-- [টোকেন ইন্টিগ্রেশন চেকলিস্ট](/developers/tutorials/token-integration-checklist/) _– টোকেনগুলির সাথে ইন্টারঅ্যাক্ট করার সময় বিবেচনা করার মতো বিষয়গুলির একটি চেকলিস্ট।_
-- [ERC20 টোকেন স্মার্ট কন্ট্র্যাক্ট বুঝুন](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– একটি Ethereum টেস্ট নেটওয়ার্কে আপনার প্রথম স্মার্ট কন্ট্র্যাক্ট স্থাপন করার একটি ভূমিকা।_
-- [একটি সলিডিটি স্মার্ট কন্ট্র্যাক্ট থেকে ERC20 টোকেনগুলির স্থানান্তর এবং অনুমোদন](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– সলিডিটি ভাষা ব্যবহার করে একটি টোকেনের সাথে ইন্টারঅ্যাক্ট করার জন্য কীভাবে একটি স্মার্ট কন্ট্র্যাক্ট ব্যবহার করবেন।_
-- [একটি ERC721 মার্কেট বাস্তবায়ন করা [একটি কীভাবে-করবেন গাইড]](/developers/tutorials/how-to-implement-an-erc721-market/) _– কীভাবে একটি ডিসেন্ট্রালাইজড ক্লাসিফাইড বোর্ডে বিক্রয়ের জন্য টোকেনাইজড আইটেম রাখতে হয়।_
+- [টোকেন ইন্টিগ্রেশন চেকলিস্ট](/developers/tutorials/token-integration-checklist/) _– টোকেনগুলোর সাথে ইন্টারঅ্যাক্ট করার সময় বিবেচনা করার মতো বিষয়গুলোর একটি চেকলিস্ট।_
+- [ERC20 টোকেন স্মার্ট কন্ট্রাক্ট বোঝা](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– একটি ইথিরিয়াম টেস্ট নেটওয়ার্কে আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার একটি পরিচিতি।_
+- [Solidity স্মার্ট কন্ট্রাক্ট থেকে ERC20 টোকেন ট্রান্সফার এবং অনুমোদন](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– Solidity ভাষা ব্যবহার করে একটি টোকেনের সাথে ইন্টারঅ্যাক্ট করার জন্য কীভাবে একটি স্মার্ট কন্ট্রাক্ট ব্যবহার করবেন।_
+- [একটি ERC721 মার্কেট বাস্তবায়ন [একটি নির্দেশিকা]](/developers/tutorials/how-to-implement-an-erc721-market/) _– কীভাবে একটি ডিসেন্ট্রালাইজড ক্লাসিফায়েড বোর্ডে বিক্রির জন্য টোকেনাইজড আইটেমগুলো রাখবেন।_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/storage/index.md b/public/content/translations/bn/developers/docs/storage/index.md
index 6e1902f018b..5a7cffd26af 100644
--- a/public/content/translations/bn/developers/docs/storage/index.md
+++ b/public/content/translations/bn/developers/docs/storage/index.md
@@ -1,46 +1,46 @@
---
-title: "বিকেন্দ্রীভূত স্টোরেজ"
-description: "বিকেন্দ্রীভূত স্টোরেজ কী এবং একটি ডিএ্যাপ-এ এটিকে সংযুক্ত করার জন্য উপলব্ধ টুলসের সংক্ষিপ্ত বিবরণ।"
+title: ডিসেন্ট্রালাইজড স্টোরেজ
+description: ডিসেন্ট্রালাইজড স্টোরেজ কী এবং একটি ডিএ্যাপ-এ এটি ইন্টিগ্রেট করার জন্য উপলব্ধ টুলগুলোর ওভারভিউ।
lang: bn
---
-একটি একক কোম্পানি বা সংস্থা দ্বারা পরিচালিত একটি কেন্দ্রীভূত সার্ভারের বিপরীতে, বিকেন্দ্রীভূত স্টোরেজ সিস্টেমগুলি ব্যবহারকারী-অপারেটরদের একটি পিয়ার-টু-পিয়ার নেটওয়ার্ক নিয়ে গঠিত যারা সামগ্রিক ডেটার একটি অংশ ধরে রাখে, একটি স্থিতিস্থাপক ফাইল স্টোরেজ শেয়ারিং সিস্টেম তৈরি করে। এগুলি একটি ব্লকচেইন-ভিত্তিক অ্যাপ্লিকেশন বা যেকোনো পিয়ার-টু-পিয়ার-ভিত্তিক নেটওয়ার্কে থাকতে পারে।
+একটি একক কোম্পানি বা সংস্থা দ্বারা পরিচালিত সেন্ট্রালাইজড সার্ভারের বিপরীতে, ডিসেন্ট্রালাইজড স্টোরেজ সিস্টেমগুলো ব্যবহারকারী-অপারেটরদের একটি পিয়ার-টু-পিয়ার নেটওয়ার্ক নিয়ে গঠিত যারা সামগ্রিক ডাটার একটি অংশ ধারণ করে, যা একটি স্থিতিস্থাপক ফাইল স্টোরেজ শেয়ারিং সিস্টেম তৈরি করে। এগুলো একটি ব্লকচেইন-ভিত্তিক অ্যাপ্লিকেশন বা যেকোনো পিয়ার-টু-পিয়ার-ভিত্তিক নেটওয়ার্কে থাকতে পারে।
-Ethereum নিজেই একটি বিকেন্দ্রীভূত স্টোরেজ সিস্টেম হিসেবে ব্যবহার করা যেতে পারে, এবং সমস্ত স্মার্ট কন্ট্র্যাক্টে কোড স্টোরেজের ক্ষেত্রে এটি তাই। তবে, যখন বিপুল পরিমাণ ডেটার কথা আসে, Ethereum সেটির জন্য ডিজাইন করা হয়নি। চেইনটি ক্রমাগত বৃদ্ধি পাচ্ছে, কিন্তু লেখার সময়, Ethereum চেইনটি প্রায় 500GB - 1TB ([ক্লায়েন্টের উপর নির্ভর করে](https://etherscan.io/chartsync/chaindefault)), এবং নেটওয়ার্কের প্রতিটি নোডকে সমস্ত ডেটা স্টোর করতে সক্ষম হতে হবে। যদি চেইনটি বিপুল পরিমাণ ডেটা (ধরা যাক 5TB) পর্যন্ত প্রসারিত হয়, তবে সমস্ত নোডের জন্য তা চালানো সম্ভব হবে না। এছাড়াও, মেইননেটে এত ডেটা স্থাপন করার খরচ [গ্যাস](/developers/docs/gas) ফি-এর কারণে অত্যধিক ব্যয়বহুল হবে।
+ইথিরিয়াম নিজেই একটি ডিসেন্ট্রালাইজড স্টোরেজ সিস্টেম হিসেবে ব্যবহৃত হতে পারে, এবং সমস্ত স্মার্ট কন্ট্রাক্ট-এ কোড স্টোরেজের ক্ষেত্রে এটি তাই। তবে, যখন প্রচুর পরিমাণ ডাটার কথা আসে, তখন ইথিরিয়াম সেটির জন্য ডিজাইন করা হয়নি। চেইনটি ক্রমাগত বৃদ্ধি পাচ্ছে, কিন্তু লেখার সময়, ইথিরিয়াম চেইনটি প্রায় 500GB - 1TB ([ক্লায়েন্টের উপর নির্ভর করে](https://etherscan.io/chartsync/chaindefault)), এবং নেটওয়ার্কের প্রতিটি নোড-কে সমস্ত ডাটা সংরক্ষণ করতে সক্ষম হতে হবে। যদি চেইনটি প্রচুর পরিমাণ ডাটায় (ধরা যাক 5TBs) প্রসারিত হয়, তবে সমস্ত নোড-এর পক্ষে চলা চালিয়ে যাওয়া সম্ভব হবে না। এছাড়া, মেইননেট-এ এত বেশি ডাটা ডিপ্লয় করার খরচ [গ্যাস](/developers/docs/gas) ফি-এর কারণে অত্যন্ত ব্যয়বহুল হবে।
-এই সীমাবদ্ধতার কারণে, বিকেন্দ্রীভূত উপায়ে বিপুল পরিমাণ ডেটা স্টোর করার জন্য আমাদের একটি ভিন্ন চেইন বা পদ্ধতির প্রয়োজন।
+এই সীমাবদ্ধতাগুলোর কারণে, ডিসেন্ট্রালাইজড উপায়ে প্রচুর পরিমাণ ডাটা সংরক্ষণ করার জন্য আমাদের একটি ভিন্ন চেইন বা পদ্ধতির প্রয়োজন।
-বিকেন্দ্রীভূত স্টোরেজ (dStorage) বিকল্পগুলি দেখার সময়, একজন ব্যবহারকারীকে কয়েকটি বিষয় মনে রাখতে হবে।
+ডিসেন্ট্রালাইজড স্টোরেজ (dStorage) বিকল্পগুলো দেখার সময়, একজন ব্যবহারকারীকে কয়েকটি বিষয় মনে রাখতে হবে।
-- স্থায়িত্ব ব্যবস্থা / প্রণোদনা কাঠামো
-- ডেটা ধারণ প্রয়োগ
-- বিকেন্দ্রীকরণ
+- পারসিস্টেন্স মেকানিজম / ইনসেনটিভ স্ট্রাকচার
+- ডাটা রিটেনশন এনফোর্সমেন্ট
+- ডিসেন্ট্রালিটি
- কনসেন্সাস
-## স্থায়িত্ব ব্যবস্থা / প্রণোদনা কাঠামো {#persistence-mechanism}
+## পারসিস্টেন্স মেকানিজম / ইনসেনটিভ স্ট্রাকচার {#persistence-mechanism}
### ব্লকচেইন-ভিত্তিক {#blockchain-based}
-ডেটার একটি অংশকে চিরকাল স্থায়ী করার জন্য, আমাদের একটি স্থায়িত্ব ব্যবস্থা ব্যবহার করতে হবে। উদাহরণস্বরূপ, Ethereum-এ, স্থায়িত্ব ব্যবস্থাটি হল যে একটি নোড চালানোর সময় পুরো চেইনটিকে বিবেচনায় নিতে হবে। ডেটার নতুন অংশগুলি চেইনের শেষে যুক্ত হয়, এবং এটি বাড়তে থাকে - যার জন্য প্রতিটি নোডকে সমস্ত এমবেডেড ডেটা প্রতিলিপি করতে হয়।
+কোনো ডাটা চিরকাল ধরে রাখার জন্য, আমাদের একটি পারসিস্টেন্স মেকানিজম ব্যবহার করতে হবে। উদাহরণস্বরূপ, ইথিরিয়ামে, পারসিস্টেন্স মেকানিজম হলো একটি নোড চালানোর সময় পুরো চেইনটিকে বিবেচনায় নিতে হয়। ডাটার নতুন অংশগুলো চেইনের শেষে যুক্ত হয়, এবং এটি ক্রমাগত বৃদ্ধি পেতে থাকে - যার ফলে প্রতিটি নোড-কে সমস্ত এমবেডেড ডাটা প্রতিলিপি করতে হয়।
-এটি **ব্লকচেইন-ভিত্তিক** স্থায়িত্ব হিসাবে পরিচিত।
+এটি **ব্লকচেইন-ভিত্তিক** পারসিস্টেন্স হিসেবে পরিচিত।
-ব্লকচেইন-ভিত্তিক স্থায়িত্বের সমস্যা হল যে চেইনটি রক্ষণাবেক্ষণ এবং সমস্ত ডেটা সম্ভাব্যভাবে স্টোর করার জন্য অনেক বড় হয়ে যেতে পারে (যেমন, [অনেক সূত্র](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/) অনুমান করে যে ইন্টারনেটের জন্য 40 জেটা বাইটের বেশি স্টোরেজ ক্ষমতা প্রয়োজন)।
+ব্লকচেইন-ভিত্তিক পারসিস্টেন্সের সমস্যা হলো চেইনটি এত বড় হয়ে যেতে পারে যে সমস্ত ডাটা রক্ষণাবেক্ষণ এবং সংরক্ষণ করা সম্ভব নাও হতে পারে (যেমন, [অনেক সূত্র](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/) অনুমান করে যে ইন্টারনেটের জন্য 40 জেটাবাইটের বেশি স্টোরেজ ক্ষমতার প্রয়োজন)।
-ব্লকচেইনে অবশ্যই কোনো ধরনের প্রণোদনা কাঠামো থাকতে হবে। ব্লকচেইন-ভিত্তিক স্থায়িত্বের জন্য, ভ্যালিডেটরকে একটি অর্থ প্রদান করা হয়। যখন ডেটা চেইনে যোগ করা হয়, ভ্যালিডেটরদের ডেটা যোগ করার জন্য অর্থ প্রদান করা হয়।
+ব্লকচেইন-এ অবশ্যই কোনো ধরনের ইনসেনটিভ স্ট্রাকচার থাকতে হবে। ব্লকচেইন-ভিত্তিক পারসিস্টেন্সের জন্য, ভ্যালিডেটর-কে একটি পেমেন্ট দেওয়া হয়। যখন চেইনে ডাটা যোগ করা হয়, তখন ভ্যালিডেটরস-দের ডাটা যোগ করার জন্য অর্থ প্রদান করা হয়।
-ব্লকচেইন-ভিত্তিক স্থায়িত্ব সহ প্ল্যাটফর্ম:
+ব্লকচেইন-ভিত্তিক পারসিস্টেন্স সহ প্ল্যাটফর্মগুলো:
-- ইথেরিয়াম
+- ইথিরিয়াম
- [Arweave](https://www.arweave.org/)
-### চুক্তি-ভিত্তিক {#contract-based}
+### কন্ট্রাক্ট-ভিত্তিক {#contract-based}
-**চুক্তি-ভিত্তিক** স্থায়িত্বের অন্তর্নিহিত ধারণাটি হলো যে ডেটা প্রতিটি নোড দ্বারা প্রতিলিপি করা যায় না এবং চিরতরে স্টোর করা যায় না, এবং এর পরিবর্তে অবশ্যই চুক্তিভিত্তিক চুক্তির মাধ্যমে রক্ষণাবেক্ষণ করতে হবে। এগুলি একাধিক নোডের সাথে করা চুক্তি, যারা একটি নির্দিষ্ট সময়ের জন্য ডেটার একটি অংশ ধরে রাখার প্রতিশ্রুতি দিয়েছে। ডেটা স্থায়ী রাখার জন্য যখনই এগুলির মেয়াদ শেষ হয়ে যায়, তখন অবশ্যই ফেরত বা নবায়ন করতে হবে।
+**কন্ট্রাক্ট-ভিত্তিক** পারসিস্টেন্সের ধারণা হলো যে ডাটা প্রতিটি নোড দ্বারা প্রতিলিপি করা এবং চিরকাল সংরক্ষণ করা যায় না, বরং কন্ট্রাক্ট চুক্তির মাধ্যমে রক্ষণাবেক্ষণ করতে হবে। এগুলো হলো একাধিক নোড-এর সাথে করা চুক্তি যা একটি নির্দিষ্ট সময়ের জন্য ডাটার একটি অংশ ধরে রাখার প্রতিশ্রুতি দেয়। ডাটা ধরে রাখার জন্য যখনই তাদের মেয়াদ শেষ হয় তখন তাদের রিফান্ড বা রিনিউ করতে হবে।
-বেশিরভাগ ক্ষেত্রে, সমস্ত ডেটা অনচেইনে স্টোর করার পরিবর্তে, চেইনে ডেটা কোথায় অবস্থিত তার হ্যাস স্টোর করা হয়। এইভাবে, পুরো চেইনকে সমস্ত ডেটা রাখার জন্য স্কেল করার প্রয়োজন হয় না।
+বেশিরভাগ ক্ষেত্রে, সমস্ত ডাটা অনচেইন সংরক্ষণ করার পরিবর্তে, চেইনে ডাটা কোথায় অবস্থিত তার হ্যাস সংরক্ষণ করা হয়। এইভাবে, সমস্ত ডাটা রাখার জন্য পুরো চেইনটিকে স্কেল করার প্রয়োজন হয় না।
-চুক্তি-ভিত্তিক স্থায়িত্ব সহ প্ল্যাটফর্ম:
+কন্ট্রাক্ট-ভিত্তিক পারসিস্টেন্স সহ প্ল্যাটফর্মগুলো:
- [Filecoin](https://docs.filecoin.io/basics/what-is-filecoin)
- [Skynet](https://sia.tech/)
@@ -50,30 +50,30 @@ Ethereum নিজেই একটি বিকেন্দ্রীভূত
- [Swarm](https://www.ethswarm.org/)
- [4EVERLAND](https://www.4everland.org/)
-### অতিরিক্ত বিবেচনা {#additional-consideration}
+### অতিরিক্ত বিবেচ্য বিষয়গুলো {#additional-consideration}
-IPFS হল ফাইল, ওয়েবসাইট, অ্যাপ্লিকেশন এবং ডেটা স্টোর এবং অ্যাক্সেস করার জন্য একটি বিতরণকৃত সিস্টেম। এটির কোনো অন্তর্নির্মিত প্রণোদনা প্রকল্প নেই, কিন্তু এর পরিবর্তে দীর্ঘমেয়াদী স্থায়িত্বের জন্য উপরের যেকোনো চুক্তি-ভিত্তিক প্রণোদনা সমাধানের সাথে ব্যবহার করা যেতে পারে। IPFS-এ ডেটা স্থায়ী করার আরেকটি উপায় হল একটি পিনিং পরিষেবার সাথে কাজ করা, যা আপনার জন্য আপনার ডেটা "পিন" করবে। আপনি এমনকি নিজের IPFS নোড চালাতে পারেন এবং বিনামূল্যে আপনার এবং/অথবা অন্যদের ডেটা স্থায়ী করতে নেটওয়ার্কে অবদান রাখতে পারেন!
+IPFS হলো ফাইল, ওয়েবসাইট, অ্যাপ্লিকেশন এবং ডাটা সংরক্ষণ এবং অ্যাক্সেস করার জন্য একটি ডিস্ট্রিবিউটেড সিস্টেম। এর কোনো বিল্ট-ইন ইনসেনটিভ স্কিম নেই, তবে দীর্ঘমেয়াদী পারসিস্টেন্সের জন্য উপরের যেকোনো কন্ট্রাক্ট-ভিত্তিক ইনসেনটিভ সমাধানের সাথে এটি ব্যবহার করা যেতে পারে। IPFS-এ ডাটা ধরে রাখার আরেকটি উপায় হলো একটি পিনিং সার্ভিসের সাথে কাজ করা, যা আপনার জন্য আপনার ডাটা "পিন" করবে। আপনি এমনকি আপনার নিজস্ব IPFS নোড চালাতে পারেন এবং আপনার এবং/অথবা অন্যদের ডাটা বিনামূল্যে ধরে রাখতে নেটওয়ার্কে অবদান রাখতে পারেন!
- [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/)
-- [Pinata](https://www.pinata.cloud/) _(IPFS পিনিং পরিষেবা)_
-- [web3.storage](https://web3.storage/) _(IPFS/Filecoin পিনিং পরিষেবা)_
-- [Infura](https://infura.io/product/ipfs) _(IPFS পিনিং পরিষেবা)_
+- [Pinata](https://www.pinata.cloud/) _(IPFS পিনিং সার্ভিস)_
+- [web3.storage](https://web3.storage/) _(IPFS/Filecoin পিনিং সার্ভিস)_
+- [Infura](https://infura.io/product/ipfs) _(IPFS পিনিং সার্ভিস)_
- [IPFS Scan](https://ipfs-scan.io) _(IPFS পিনিং এক্সপ্লোরার)_
-- [4EVERLAND](https://www.4everland.org/)_(IPFS পিনিং পরিষেবা)_
-- [Filebase](https://filebase.com) _(IPFS পিনিং পরিষেবা)_
-- [Spheron Network](https://spheron.network/) _(IPFS/Filecoin পিনিং পরিষেবা)_
+- [4EVERLAND](https://www.4everland.org/)_(IPFS পিনিং সার্ভিস)_
+- [Filebase](https://filebase.com) _(IPFS পিনিং সার্ভিস)_
+- [Spheron Network](https://spheron.network/) _(IPFS/Filecoin পিনিং সার্ভিস)_
-SWARM হল একটি বিকেন্দ্রীভূত ডেটা স্টোরেজ এবং বিতরণ প্রযুক্তি, একটি স্টোরেজ প্রণোদনা সিস্টেম এবং একটি স্টোরেজ ভাড়া মূল্য ওরাকল সহ।
+SWARM হলো একটি স্টোরেজ ইনসেনটিভ সিস্টেম এবং একটি স্টোরেজ রেন্ট প্রাইস ওরাকল সহ একটি ডিসেন্ট্রালাইজড ডাটা স্টোরেজ এবং ডিস্ট্রিবিউশন প্রযুক্তি।
-## ডেটা ধারণ {#data-retention}
+## ডাটা রিটেনশন {#data-retention}
-ডেটা ধরে রাখার জন্য, সিস্টেমগুলিতে অবশ্যই ডেটা ধরে রাখা নিশ্চিত করার জন্য কোনো ধরনের ব্যবস্থা থাকতে হবে।
+ডাটা ধরে রাখার জন্য, সিস্টেমগুলোতে ডাটা ধরে রাখা নিশ্চিত করার জন্য কোনো ধরনের মেকানিজম থাকতে হবে।
-### চ্যালেঞ্জ ব্যবস্থা {#challenge-mechanism}
+### চ্যালেঞ্জ মেকানিজম {#challenge-mechanism}
-ডেটা ধরে রাখা নিশ্চিত করার অন্যতম জনপ্রিয় উপায় হল কোনো ধরনের ক্রিপ্টোগ্রাফিক চ্যালেঞ্জ ব্যবহার করা, যা নোডগুলিকে জারি করা হয় তা নিশ্চিত করার জন্য যে তাদের কাছে এখনও ডেটা রয়েছে। একটি সহজ উদাহরণ হল Arweave-এর প্রুফ-অফ-অ্যাক্সেস। তারা নোডগুলিকে একটি চ্যালেঞ্জ জারি করে দেখার জন্য যে তাদের কাছে সবচেয়ে সাম্প্রতিক ব্লক এবং অতীতের একটি র্যান্ডম ব্লকের ডেটা আছে কিনা। যদি নোডটি উত্তর দিতে না পারে, তবে তাদেরকে জরিমানা করা হয়।
+ডাটা ধরে রাখা নিশ্চিত করার অন্যতম জনপ্রিয় উপায় হলো কোনো ধরনের ক্রিপ্টোগ্রাফিক চ্যালেঞ্জ ব্যবহার করা যা নোড-গুলোকে দেওয়া হয় যাতে তারা এখনও ডাটাটি রেখেছে কিনা তা নিশ্চিত করা যায়। একটি সহজ উদাহরণ হলো Arweave-এর প্রুফ-অফ-অ্যাক্সেস। তারা নোড-গুলোকে একটি চ্যালেঞ্জ দেয় যাতে দেখা যায় যে তাদের কাছে সবচেয়ে সাম্প্রতিক ব্লক এবং অতীতের একটি র্যান্ডম ব্লক উভয় স্থানেই ডাটা আছে কিনা। যদি নোড উত্তর দিতে না পারে, তবে তাদের জরিমানা করা হয়।
-একটি চ্যালেঞ্জ ব্যবস্থা সহ dStorage-এর প্রকারভেদ:
+চ্যালেঞ্জ মেকানিজম সহ dStorage-এর ধরন:
- Züs
- Skynet
@@ -82,135 +82,135 @@ SWARM হল একটি বিকেন্দ্রীভূত ডেটা
- Crust Network
- 4EVERLAND
-### বিকেন্দ্রীকরণ {#decentrality}
+### ডিসেন্ট্রালিটি {#decentrality}
-প্ল্যাটফর্মগুলির বিকেন্দ্রীকরণের স্তর পরিমাপ করার জন্য দুর্দান্ত কোনো টুল নেই, কিন্তু সাধারণভাবে, আপনি এমন টুলস ব্যবহার করতে চাইবেন যেগুলিতে কোনো ধরনের KYC নেই, প্রমাণ দেওয়ার জন্য যে সেগুলি কেন্দ্রীভূত নয়।
+প্ল্যাটফর্মগুলোর ডিসেন্ট্রালাইজেশন-এর স্তর পরিমাপ করার জন্য খুব ভালো টুল নেই, তবে সাধারণভাবে, আপনি এমন টুলগুলো ব্যবহার করতে চাইবেন যেগুলোতে কোনো ধরনের KYC নেই যাতে প্রমাণ করা যায় যে সেগুলো সেন্ট্রালাইজড নয়।
-KYC ছাড়া বিকেন্দ্রীভূত টুলস:
+KYC ছাড়া ডিসেন্ট্রালাইজড টুলগুলো:
- Skynet
- Arweave
- Filecoin
- IPFS
-- ইথেরিয়াম
+- ইথিরিয়াম
- Crust Network
- 4EVERLAND
### কনসেন্সাস {#consensus}
-এই টুলগুলির বেশিরভাগেরই নিজস্ব [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) রয়েছে, কিন্তু সাধারণত সেগুলি [**প্রুফ-অফ-ওয়ার্ক (PoW)**](/developers/docs/consensus-mechanisms/pow/) বা [**প্রুফ-অফ-স্টেক (PoS)**](/developers/docs/consensus-mechanisms/pos/)-এর উপর ভিত্তি করে তৈরি।
+এই টুলগুলোর বেশিরভাগেরই নিজস্ব সংস্করণের একটি [কনসেন্সাস মেকানিজম](/developers/docs/consensus-mechanisms/) রয়েছে তবে সাধারণত এগুলো [**প্রুফ-অফ-ওয়ার্ক (PoW)**](/developers/docs/consensus-mechanisms/pow/) বা [**প্রুফ-অফ-স্টেক (PoS)**](/developers/docs/consensus-mechanisms/pos/)-এর উপর ভিত্তি করে তৈরি।
-প্রুফ-অফ-ওয়ার্ক ভিত্তিক:
+প্রুফ-অফ-ওয়ার্ক ভিত্তিক:
- Skynet
- Arweave
প্রুফ-অফ-স্টেক ভিত্তিক:
-- ইথেরিয়াম
+- ইথিরিয়াম
- Filecoin
- Züs
- Crust Network
-## সম্পর্কিত টুলস {#related-tools}
+## সম্পর্কিত টুলগুলো {#related-tools}
-**IPFS - _ইন্টারপ্ল্যানেটারি ফাইল সিস্টেম হল Ethereum-এর জন্য একটি বিকেন্দ্রীভূত স্টোরেজ ও ফাইল রেফারেন্সিং সিস্টেম।_**
+**IPFS - _ইন্টারপ্ল্যানেটারি ফাইল সিস্টেম হলো ইথিরিয়ামের জন্য একটি ডিসেন্ট্রালাইজড স্টোরেজ এবং ফাইল রেফারেন্সিং সিস্টেম।_**
- [Ipfs.io](https://ipfs.io/)
-- [নথিপত্র](https://docs.ipfs.io/)
+- [ডকুমেন্টেশন](https://docs.ipfs.io/)
- [GitHub](https://github.com/ipfs/ipfs)
-**Storj DCS - _ডেভেলপারদের জন্য নিরাপদ, ব্যক্তিগত এবং S3-সামঞ্জস্যপূর্ণ বিকেন্দ্রীভূত ক্লাউড অবজেক্ট স্টোরেজ।_**
+**Storj DCS - _ডেভেলপারদের জন্য সুরক্ষিত, ব্যক্তিগত এবং S3-সামঞ্জস্যপূর্ণ ডিসেন্ট্রালাইজড ক্লাউড অবজেক্ট স্টোরেজ।_**
- [Storj.io](https://storj.io/)
-- [নথিপত্র](https://docs.storj.io/)
+- [ডকুমেন্টেশন](https://docs.storj.io/)
- [GitHub](https://github.com/storj/storj)
-**Sia - _একটি বিশ্বাসহীন ক্লাউড স্টোরেজ মার্কেটপ্লেস তৈরি করতে ক্রিপ্টোগ্রাফি ব্যবহার করে, ক্রেতা এবং বিক্রেতাদের সরাসরি লেনদেন করার অনুমতি দেয়।_**
+**Sia - _একটি ট্রাস্টলেস ক্লাউড স্টোরেজ মার্কেটপ্লেস তৈরি করতে ক্রিপ্টোগ্রাফি ব্যবহার করে, যা ক্রেতা এবং বিক্রেতাদের সরাসরি লেনদেন করতে দেয়।_**
- [Skynet.net](https://sia.tech/)
-- [নথিপত্র](https://docs.sia.tech/)
+- [ডকুমেন্টেশন](https://docs.sia.tech/)
- [GitHub](https://github.com/SiaFoundation/)
-**Filecoin - _Filecoin তৈরি করেছে IPFS-এর পেছনের একই দল। এটি IPFS আদর্শের উপরে একটি প্রণোদনা লেয়ার।_**
+**Filecoin - _Filecoin তৈরি করেছে IPFS-এর পেছনের একই দল। এটি IPFS আদর্শের উপরে একটি ইনসেনটিভ লেয়ার।_**
- [Filecoin.io](https://filecoin.io/)
-- [নথিপত্র](https://docs.filecoin.io/)
+- [ডকুমেন্টেশন](https://docs.filecoin.io/)
- [GitHub](https://github.com/filecoin-project/)
-**Arweave - _Arweave ডেটা স্টোর করার জন্য একটি dStorage প্ল্যাটফর্ম।_**
+**Arweave - _Arweave হলো ডাটা সংরক্ষণের জন্য একটি dStorage প্ল্যাটফর্ম।_**
- [Arweave.org](https://www.arweave.org/)
-- [নথিপত্র](https://docs.arweave.org/info/)
+- [ডকুমেন্টেশন](https://docs.arweave.org/info/)
- [Arweave](https://github.com/ArweaveTeam/arweave/)
-**Züs - _Züs হল শার্ডিং এবং ব্লবার সহ একটি প্রুফ-অফ-স্টেক dStorage প্ল্যাটফর্ম।_**
+**Züs - _Züs হলো শার্ডিং এবং ব্লবার সহ একটি প্রুফ-অফ-স্টেক dStorage প্ল্যাটফর্ম।_**
- [zus.network](https://zus.network/)
-- [নথিপত্র](https://docs.zus.network/zus-docs/)
+- [ডকুমেন্টেশন](https://docs.zus.network/zus-docs/)
- [GitHub](https://github.com/0chain/)
-**Crust Network - _Crust হল IPFS-এর উপরে একটি dStorage প্ল্যাটফর্ম।_**
+**Crust Network - _Crust হলো IPFS-এর উপরে একটি dStorage প্ল্যাটফর্ম।_**
- [Crust.network](https://crust.network)
-- [নথিপত্র](https://wiki.crust.network)
+- [ডকুমেন্টেশন](https://wiki.crust.network)
- [GitHub](https://github.com/crustio)
-**Swarm - _Ethereum web3 স্ট্যাকের জন্য একটি বন্টিত স্টোরেজ প্ল্যাটফর্ম ও বিষয়বস্তু বণ্টন পরিষেবা।_**
+**Swarm - _ইথিরিয়াম ওয়েব3 স্ট্যাকের জন্য একটি ডিস্ট্রিবিউটেড স্টোরেজ প্ল্যাটফর্ম এবং কন্টেন্ট ডিস্ট্রিবিউশন সার্ভিস।_**
- [EthSwarm.org](https://www.ethswarm.org/)
-- [নথিপত্র](https://docs.ethswarm.org/)
+- [ডকুমেন্টেশন](https://docs.ethswarm.org/)
- [GitHub](https://github.com/ethersphere/)
-**OrbitDB - _IPFS-এর উপর একটি বিকেন্দ্রীভূত পিয়ার টু পিয়ার ডেটাবেস।_**
+**OrbitDB - _IPFS-এর উপরে একটি ডিসেন্ট্রালাইজড পিয়ার টু পিয়ার ডাটাবেস।_**
- [OrbitDB.org](https://orbitdb.org/)
-- [নথিপত্র](https://github.com/orbitdb/field-manual/)
+- [ডকুমেন্টেশন](https://github.com/orbitdb/field-manual/)
- [GitHub](https://github.com/orbitdb/orbit-db/)
-**Aleph.im - _বিকেন্দ্রীভূত ক্লাউড প্রকল্প (ডাটাবেস, ফাইল স্টোরেজ, কম্পিউটিং এবং DID)। অফচেইন এবং অনচেইন পিয়ার-টু-পিয়ার প্রযুক্তির একটি অনন্য মিশ্রণ। IPFS এবং মাল্টি-চেইন সামঞ্জস্য।_**
+**Aleph.im - _ডিসেন্ট্রালাইজড ক্লাউড প্রজেক্ট (ডাটাবেস, ফাইল স্টোরেজ, কম্পিউটিং এবং DID)। অফচেইন এবং অনচেইন পিয়ার-টু-পিয়ার প্রযুক্তির একটি অনন্য মিশ্রণ। IPFS এবং মাল্টি-চেইন সামঞ্জস্যতা।_**
- [Aleph.im](https://aleph.cloud/)
-- [নথিপত্র](https://docs.aleph.cloud/)
+- [ডকুমেন্টেশন](https://docs.aleph.cloud/)
- [GitHub](https://github.com/aleph-im/)
-**Ceramic - _ডেটা-সমৃদ্ধ এবং আকর্ষক অ্যাপ্লিকেশনের জন্য ব্যবহারকারী-নিয়ন্ত্রিত IPFS ডাটাবেস স্টোরেজ।_**
+**Ceramic - _ডাটা-সমৃদ্ধ এবং আকর্ষণীয় অ্যাপ্লিকেশনগুলোর জন্য ব্যবহারকারী-নিয়ন্ত্রিত IPFS ডাটাবেস স্টোরেজ।_**
- [Ceramic.network](https://ceramic.network/)
-- [নথিপত্র](https://developers.ceramic.network/)
+- [ডকুমেন্টেশন](https://developers.ceramic.network/)
- [GitHub](https://github.com/ceramicnetwork/js-ceramic/)
-**Filebase - _S3-সামঞ্জস্যপূর্ণ বিকেন্দ্রীভূত স্টোরেজ এবং জিও-রিডান্ড্যান্ট IPFS পিনিং পরিষেবা। Filebase-এর মাধ্যমে IPFS-এ আপলোড করা সমস্ত ফাইল বিশ্বজুড়ে 3x প্রতিলিপিসহ Filebase পরিকাঠামোতে স্বয়ংক্রিয়ভাবে পিন করা হয়।_**
+**Filebase - _S3-সামঞ্জস্যপূর্ণ ডিসেন্ট্রালাইজড স্টোরেজ এবং জিও-রিডান্ড্যান্ট IPFS পিনিং সার্ভিস। Filebase-এর মাধ্যমে IPFS-এ আপলোড করা সমস্ত ফাইল বিশ্বজুড়ে 3x রেপ্লিকেশন সহ স্বয়ংক্রিয়ভাবে Filebase পরিকাঠামোতে পিন করা হয়।_**
- [Filebase.com](https://filebase.com/)
-- [নথিপত্র](https://docs.filebase.com/)
+- [ডকুমেন্টেশন](https://docs.filebase.com/)
- [GitHub](https://github.com/filebase)
-**4EVERLAND - _একটি Web 3.0 ক্লাউড কম্পিউটিং প্ল্যাটফর্ম যা স্টোরেজ, কম্পিউট এবং নেটওয়ার্কিং মূল ক্ষমতাগুলিকে একীভূত করে, S3 সামঞ্জস্যপূর্ণ এবং IPFS ও Arweave-এর মতো বিকেন্দ্রীভূত স্টোরেজ নেটওয়ার্কগুলিতে সিঙ্ক্রোনাস ডেটা স্টোরেজ সরবরাহ করে।_**
+**4EVERLAND - _একটি ওয়েব 3.0 ক্লাউড কম্পিউটিং প্ল্যাটফর্ম যা স্টোরেজ, কম্পিউট এবং নেটওয়ার্কিং কোর ক্ষমতাগুলোকে একীভূত করে, S3 সামঞ্জস্যপূর্ণ এবং IPFS এবং Arweave-এর মতো ডিসেন্ট্রালাইজড স্টোরেজ নেটওয়ার্কগুলোতে সিঙ্ক্রোনাস ডাটা স্টোরেজ প্রদান করে।_**
- [4everland.org](https://www.4everland.org/)
-- [নথিপত্র](https://docs.4everland.org/)
+- [ডকুমেন্টেশন](https://docs.4everland.org/)
- [GitHub](https://github.com/4everland)
**Kaleido - _ক্লিক-বাটন IPFS নোড সহ একটি ব্লকচেইন-অ্যাজ-এ-সার্ভিস প্ল্যাটফর্ম_**
- [Kaleido](https://kaleido.io/)
-- [নথিপত্র](https://docs.kaleido.io/kaleido-services/ipfs/)
+- [ডকুমেন্টেশন](https://docs.kaleido.io/kaleido-services/ipfs/)
- [GitHub](https://github.com/kaleido-io)
-**Spheron Network - _Spheron হল একটি প্ল্যাটফর্ম-অ্যাজ-এ-সার্ভিস (PaaS) যা ডিএ্যাপস-এর জন্য ডিজাইন করা হয়েছে যা তাদের অ্যাপ্লিকেশনগুলিকে সেরা পারফরম্যান্স সহ বিকেন্দ্রীভূত ইনফ্রাতে লঞ্চ করতে চায়। এটি কম্পিউট, বিকেন্দ্রীভূত স্টোরেজ, CDN এবং ওয়েব হোস্টিং আউট অফ দ্য বক্স সরবরাহ করে।_**
+**Spheron Network - _Spheron হলো একটি প্ল্যাটফর্ম-অ্যাজ-এ-সার্ভিস (PaaS) যা সেরা পারফরম্যান্স সহ ডিসেন্ট্রালাইজড ইনফ্রাস্ট্রাকচারে তাদের অ্যাপ্লিকেশনগুলো লঞ্চ করতে চাওয়া ডিএ্যাপস-এর জন্য ডিজাইন করা হয়েছে। এটি কম্পিউট, ডিসেন্ট্রালাইজড স্টোরেজ, CDN এবং ওয়েব হোস্টিং প্রদান করে।_**
- [spheron.network](https://spheron.network/)
-- [নথিপত্র](https://docs.spheron.network/)
+- [ডকুমেন্টেশন](https://docs.spheron.network/)
- [GitHub](https://github.com/spheronFdn)
-## আরও পড়ুন {#further-reading}
+## আরও পড়াশোনা {#further-reading}
-- [বিকেন্দ্রীভূত স্টোরেজ কী?](https://coinmarketcap.com/academy/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_
-- [বিকেন্দ্রীভূত স্টোরেজ সম্পর্কে পাঁচটি সাধারণ মিথের অবসান](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
+- [ডিসেন্ট্রালাইজড স্টোরেজ কী?](https://coinmarketcap.com/academy/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_
+- [ডিসেন্ট্রালাইজড স্টোরেজ সম্পর্কে পাঁচটি সাধারণ মিথ ভাঙা](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_আপনাকে সাহায্য করেছে এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত টপিকগুলো {#related-topics}
-- [ডেভেলপমেন্ট ফ্রেমওয়ার্ক](/developers/docs/frameworks/)
+- [ডেভেলপমেন্ট ফ্রেমওয়ার্কগুলো](/developers/docs/frameworks/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/transactions/index.md b/public/content/translations/bn/developers/docs/transactions/index.md
index 9148e645114..debda0d1075 100644
--- a/public/content/translations/bn/developers/docs/transactions/index.md
+++ b/public/content/translations/bn/developers/docs/transactions/index.md
@@ -1,41 +1,41 @@
---
-title: "লেনদেনসমূহ"
-description: "ইথেরিয়াম লেনদেনের একটি সংক্ষিপ্ত বিবরণ – এটি কীভাবে কাজ করে, তাদের ডেটা কাঠামো, এবং কীভাবে একটি অ্যাপ্লিকেশনের মাধ্যমে সেগুলি পাঠাতে হয়।"
+title: লেনদেন
+description: ইথিরিয়াম লেনদেনের একটি ওভারভিউ – এগুলো কীভাবে কাজ করে, এদের ডাটা স্ট্রাকচার এবং কীভাবে একটি অ্যাপ্লিকেশনের মাধ্যমে এগুলো পাঠানো যায়।
lang: bn
---
-লেনদেন হল অ্যাকাউন্ট থেকে ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত নির্দেশাবলী। একটি অ্যাকাউন্ট ইথেরিয়াম নেটওয়ার্কের স্টেট আপডেট করার জন্য একটি লেনদেন শুরু করবে। সবচেয়ে সহজ লেনদেন হল এক অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে ETH স্থানান্তর করা।
+লেনদেন হলো একাউন্ট থেকে আসা ক্রিপ্টোগ্রাফিক্যালি সাইন করা নির্দেশাবলী। একটি একাউন্ট [Ethereum](/) নেটওয়ার্ক-এর স্টেট আপডেট করার জন্য একটি লেনদেন শুরু করবে। সবচেয়ে সহজ লেনদেন হলো এক একাউন্ট থেকে অন্য একাউন্টে ETH ট্রান্সফার করা।
## পূর্বশর্ত {#prerequisites}
-এই পৃষ্ঠাটি আপনাকে আরও ভালোভাবে বুঝতে সাহায্য করার জন্য, আমরা সুপারিশ করি যে আপনি প্রথমে [অ্যাকাউন্ট](/developers/docs/accounts/) এবং আমাদের [ইথেরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ুন।
+এই পেজটি আরও ভালোভাবে বোঝার জন্য, আমরা সুপারিশ করছি যে আপনি প্রথমে [একাউন্ট](/developers/docs/accounts/) এবং আমাদের [ইথিরিয়ামের পরিচিতি](/developers/docs/intro-to-ethereum/) পড়ে নিন।
## লেনদেন কী? {#whats-a-transaction}
-একটি ইথেরিয়াম লেনদেন বলতে একটি বাহ্যিকভাবে-মালিকানাধীন অ্যাকাউন্ট দ্বারা শুরু করা একটি ক্রিয়াকে বোঝায়, অন্য কথায় একটি মানুষের দ্বারা পরিচালিত অ্যাকাউন্ট, কোনো চুক্তি নয়। উদাহরণস্বরূপ, যদি বব অ্যালিসকে 1 ETH পাঠায়, ববের অ্যাকাউন্ট থেকে ডেবিট করতে হবে এবং অ্যালিসের অ্যাকাউন্টে ক্রেডিট করতে হবে। এই স্টেট-পরিবর্তনকারী ক্রিয়াটি একটি লেনদেনের মধ্যে সঞ্চালিত হয়।
+একটি ইথিরিয়াম লেনদেন বলতে একটি এক্সটার্নালি ওনড একাউন্ট দ্বারা শুরু করা একটি কাজকে বোঝায়, অন্য কথায় এটি এমন একটি একাউন্ট যা মানুষের দ্বারা পরিচালিত হয়, কোনো কন্ট্রাক্ট দ্বারা নয়। উদাহরণস্বরূপ, যদি Bob, Alice-কে 1 ETH পাঠায়, তবে Bob-এর একাউন্ট থেকে ডেবিট হতে হবে এবং Alice-এর একাউন্টে ক্রেডিট হতে হবে। স্টেট পরিবর্তনকারী এই কাজটি একটি লেনদেনের মধ্যেই ঘটে।
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে অভিযোজিত চিত্র_
+
+_চিত্রটি [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে নেওয়া হয়েছে_
-লেনদেন, যা EVM-এর স্টেট পরিবর্তন করে, সেগুলিকে পুরো নেটওয়ার্কে সম্প্রচার করা প্রয়োজন। যেকোনো নোড EVM-এ একটি লেনদেন কার্যকর করার জন্য একটি অনুরোধ সম্প্রচার করতে পারে; এটি ঘটার পরে, একজন ভ্যালিডেটর লেনদেনটি কার্যকর করবে এবং ফলস্বরূপ স্টেট পরিবর্তনটি নেটওয়ার্কের বাকি অংশে প্রচার করবে।
+লেনদেন, যা EVM-এর স্টেট পরিবর্তন করে, তা পুরো নেটওয়ার্ক-এ ব্রডকাস্ট করা প্রয়োজন। যেকোনো নোড EVM-এ একটি লেনদেন এক্সিকিউট করার জন্য রিকোয়েস্ট ব্রডকাস্ট করতে পারে; এটি হওয়ার পর, একজন ভ্যালিডেটর লেনদেনটি এক্সিকিউট করবে এবং এর ফলে হওয়া স্টেট পরিবর্তনটি নেটওয়ার্ক-এর বাকি অংশে ছড়িয়ে দেবে।
-লেনদেনের জন্য একটি ফি প্রয়োজন এবং একটি বৈধ ব্লকে অন্তর্ভুক্ত থাকতে হবে। এই সংক্ষিপ্ত বিবরণটিকে সহজ করার জন্য আমরা অন্য কোথাও গ্যাস ফি এবং যাচাইকরণ কভার করব।
+লেনদেনের জন্য একটি ফি প্রয়োজন এবং এটি অবশ্যই একটি ভ্যালিডেটেড ব্লক-এ অন্তর্ভুক্ত হতে হবে। এই ওভারভিউটিকে আরও সহজ করার জন্য আমরা গ্যাস ফি এবং ভ্যালিডেশন অন্য জায়গায় আলোচনা করব।
-একটি জমা দেওয়া লেনদেনে নিম্নলিখিত তথ্য অন্তর্ভুক্ত থাকে:
+সাবমিট করা একটি লেনদেনে নিচের তথ্যগুলো থাকে:
-- `from` – প্রেরকের ঠিকানা, যিনি লেনদেনে স্বাক্ষর করবেন। এটি একটি বাহ্যিকভাবে-মালিকানাধীন অ্যাকাউন্ট হবে কারণ চুক্তি অ্যাকাউন্টগুলি লেনদেন পাঠাতে পারে না
-- `to` – গ্রহণকারীর ঠিকানা (যদি একটি বাহ্যিকভাবে-মালিকানাধীন অ্যাকাউন্ট হয়, লেনদেনটি মান স্থানান্তর করবে। যদি একটি চুক্তি অ্যাকাউন্ট হয়, লেনদেনটি চুক্তির কোড কার্যকর করবে)
-- `signature` – প্রেরকের শনাক্তকারী। এটি তৈরি হয় যখন প্রেরকের ব্যক্তিগত কী লেনদেনে স্বাক্ষর করে এবং নিশ্চিত করে যে প্রেরক এই লেনদেনের অনুমোদন দিয়েছেন
-- `nonce` - একটি ক্রমানুসারে ক্রমবর্ধমান কাউন্টার যা অ্যাকাউন্ট থেকে লেনদেন নম্বর নির্দেশ করে
-- `value` – প্রেরক থেকে প্রাপকের কাছে স্থানান্তরের জন্য ETH-এর পরিমাণ (WEI-তে চিহ্নিত, যেখানে 1ETH সমান 1e+18wei)
-- `input data` – ঐচ্ছিক ডেটা অন্তর্ভুক্ত করার জন্য ঐচ্ছিক ফিল্ড
-- `gasLimit` – লেনদেনের দ্বারা ব্যবহার করা যেতে পারে এমন গ্যাস ইউনিটের সর্বোচ্চ পরিমাণ। [EVM](/developers/docs/evm/opcodes) প্রতিটি গণনামূলক ধাপের জন্য প্রয়োজনীয় গ্যাস ইউনিট নির্দিষ্ট করে
-- `maxPriorityFeePerGas` - ভ্যালিডেটরের জন্য একটি টিপ হিসাবে অন্তর্ভুক্ত করার জন্য ব্যবহৃত গ্যাসের সর্বোচ্চ মূল্য
-- `maxFeePerGas` - লেনদেনের জন্য প্রতি ইউনিট গ্যাসের সর্বোচ্চ ফি দিতে ইচ্ছুক (`baseFeePerGas` এবং `maxPriorityFeePerGas` সহ)
+- `from` – প্রেরকের এডড্রেস, যিনি লেনদেনে সাইন করবেন। এটি একটি এক্সটার্নালি ওনড একাউন্ট হবে কারণ কন্ট্রাক্ট একাউন্ট লেনদেন পাঠাতে পারে না
+- `to` – প্রাপকের এডড্রেস (যদি এটি একটি এক্সটার্নালি ওনড একাউন্ট হয়, তবে লেনদেনটি ভ্যালু ট্রান্সফার করবে। যদি এটি একটি কন্ট্রাক্ট একাউন্ট হয়, তবে লেনদেনটি কন্ট্রাক্ট কোড এক্সিকিউট করবে)
+- `signature` – প্রেরকের আইডেন্টিফায়ার। এটি তখন তৈরি হয় যখন প্রেরকের প্রাইভেট কি লেনদেনে সাইন করে এবং নিশ্চিত করে যে প্রেরক এই লেনদেনটি অনুমোদন করেছেন
+- `nonce` - একটি ক্রমান্বয়ে বৃদ্ধি পাওয়া কাউন্টার যা একাউন্ট থেকে লেনদেনের নম্বর নির্দেশ করে
+- `value` – প্রেরক থেকে প্রাপকের কাছে ট্রান্সফার করার জন্য ETH-এর পরিমাণ (WEI-তে ডিনোমিনেট করা, যেখানে 1ETH সমান 1e+18wei)
+- `input data` – যেকোনো ডাটা অন্তর্ভুক্ত করার জন্য অপশনাল ফিল্ড
+- `gasLimit` – লেনদেনের মাধ্যমে খরচ হতে পারে এমন গ্যাস ইউনিটের সর্বোচ্চ পরিমাণ। [EVM](/developers/docs/evm/opcodes) প্রতিটি কম্পিউটেশনাল ধাপের জন্য প্রয়োজনীয় গ্যাস ইউনিট নির্দিষ্ট করে
+- `maxPriorityFeePerGas` - ভ্যালিডেটর-কে টিপ হিসেবে দেওয়ার জন্য খরচ হওয়া গ্যাস-এর সর্বোচ্চ মূল্য
+- `maxFeePerGas` - লেনদেনের জন্য প্রতি ইউনিট গ্যাস-এর সর্বোচ্চ ফি যা দিতে ইচ্ছুক (`baseFeePerGas` এবং `maxPriorityFeePerGas` সহ)
-গ্যাস হল একটি ভ্যালিডেটর দ্বারা লেনদেন প্রক্রিয়া করার জন্য প্রয়োজনীয় গণনার একটি রেফারেন্স। ব্যবহারকারীদের এই গণনার জন্য একটি ফি দিতে হবে। `gasLimit` এবং `maxPriorityFeePerGas` ভ্যালিডেটরকে দেওয়া সর্বোচ্চ লেনদেন ফি নির্ধারণ করে। [গ্যাস সম্পর্কে আরও জানুন](/developers/docs/gas/)।
+গ্যাস হলো একজন ভ্যালিডেটর দ্বারা লেনদেন প্রসেস করার জন্য প্রয়োজনীয় কম্পিউটেশনের একটি রেফারেন্স। ব্যবহারকারীদের এই কম্পিউটেশনের জন্য একটি ফি দিতে হয়। `gasLimit` এবং `maxPriorityFeePerGas` ভ্যালিডেটর-কে দেওয়া সর্বোচ্চ ট্রানজেকশন ফি নির্ধারণ করে। [গ্যাস সম্পর্কে আরও জানুন](/developers/docs/gas/)।
-লেনদেন অবজেক্টটি দেখতে কিছুটা এরকম হবে:
+লেনদেন অবজেক্টটি দেখতে অনেকটা এরকম হবে:
```js
{
@@ -49,11 +49,11 @@ _[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm
}
```
-কিন্তু একটি লেনদেন অবজেক্টকে প্রেরকের ব্যক্তিগত কী ব্যবহার করে স্বাক্ষর করতে হবে। এটি প্রমাণ করে যে লেনদেনটি শুধুমাত্র প্রেরকের কাছ থেকে আসতে পারে এবং প্রতারণামূলকভাবে পাঠানো হয়নি।
+তবে একটি লেনদেন অবজেক্টে প্রেরকের প্রাইভেট কি ব্যবহার করে সাইন করা প্রয়োজন। এটি প্রমাণ করে যে লেনদেনটি শুধুমাত্র প্রেরকের কাছ থেকেই এসেছে এবং প্রতারণামূলকভাবে পাঠানো হয়নি।
-Geth-এর মতো একটি ইথেরিয়াম ক্লায়েন্ট এই স্বাক্ষর প্রক্রিয়াটি পরিচালনা করবে।
+Geth-এর মতো একটি ইথিরিয়াম ক্লায়েন্ট এই সাইনিং প্রক্রিয়াটি পরিচালনা করবে।
-উদাহরণ [JSON-RPC](/developers/docs/apis/json-rpc) কল:
+উদাহরণস্বরূপ [JSON-RPC](/developers/docs/apis/json-rpc) কল:
```json
{
@@ -75,7 +75,7 @@ Geth-এর মতো একটি ইথেরিয়াম ক্লায়ে
}
```
-উদাহরণ প্রতিক্রিয়া:
+উদাহরণস্বরূপ রেসপন্স:
```json
{
@@ -100,51 +100,51 @@ Geth-এর মতো একটি ইথেরিয়াম ক্লায়ে
}
```
-- `raw` হল [রিকার্সিভ লেংথ প্রিফিক্স (RLP)](/developers/docs/data-structures-and-encoding/rlp) এনকোডেড ফর্মের স্বাক্ষরিত লেনদেন
-- `tx` হল JSON ফর্মের স্বাক্ষরিত লেনদেন
+- `raw` হলো [Recursive Length Prefix (RLP)](/developers/docs/data-structures-and-encoding/rlp) এনকোড করা ফর্মে সাইন করা লেনদেন
+- `tx` হলো JSON ফর্মে সাইন করা লেনদেন
-স্বাক্ষর হ্যাসের মাধ্যমে, লেনদেনটি ক্রিপ্টোগ্রাফিকভাবে প্রমাণ করা যেতে পারে যে এটি প্রেরকের কাছ থেকে এসেছে এবং নেটওয়ার্কে জমা দেওয়া হয়েছে।
+সিগনেচার হ্যাস-এর মাধ্যমে, লেনদেনটি ক্রিপ্টোগ্রাফিক্যালি প্রমাণ করা যায় যে এটি প্রেরকের কাছ থেকে এসেছে এবং নেটওয়ার্ক-এ সাবমিট করা হয়েছে।
-### ডেটা ফিল্ড {#the-data-field}
+### ডাটা ফিল্ড {#the-data-field}
-বেশিরভাগ লেনদেন একটি বাহ্যিকভাবে-মালিকানাধীন অ্যাকাউন্ট থেকে একটি চুক্তিতে অ্যাক্সেস করে।
-বেশিরভাগ চুক্তি Solidity-তে লেখা হয় এবং [অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI)](/glossary/#abi) অনুসারে তাদের ডেটা ফিল্ড ব্যাখ্যা করে।
+অধিকাংশ লেনদেন একটি এক্সটার্নালি ওনড একাউন্ট থেকে একটি কন্ট্রাক্ট এক্সেস করে।
+বেশিরভাগ কন্ট্রাক্ট Solidity-তে লেখা হয় এবং [application binary interface (ABI)](/glossary/#abi) অনুযায়ী তাদের ডাটা ফিল্ড ইন্টারপ্রেট করে।
-প্রথম চারটি বাইট নির্দিষ্ট করে যে কোন ফাংশনটি কল করতে হবে, ফাংশনের নাম এবং আর্গুমেন্টের হ্যাস ব্যবহার করে।
-আপনি মাঝে মাঝে [এই ডাটাবেসটি](https://www.4byte.directory/signatures/) ব্যবহার করে নির্বাচক থেকে ফাংশনটি সনাক্ত করতে পারেন।
+প্রথম চারটি বাইট ফাংশনের নাম এবং আর্গুমেন্টগুলোর হ্যাস ব্যবহার করে কোন ফাংশনটি কল করতে হবে তা নির্দিষ্ট করে।
+আপনি মাঝে মাঝে [এই ডাটাবেস](https://www.4byte.directory/signatures/) ব্যবহার করে সিলেক্টর থেকে ফাংশনটি শনাক্ত করতে পারেন।
-বাকি কলডেটা হল আর্গুমেন্ট, [ABI স্পেসিফিকেশনে নির্দিষ্ট করা হিসাবে এনকোড করা হয়েছে](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding)।
+বাকি কলডাটা হলো আর্গুমেন্ট, যা [ABI স্পেসিফিকেশনে নির্দিষ্ট করা অনুযায়ী এনকোড করা হয়](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding)।
উদাহরণস্বরূপ, আসুন [এই লেনদেনটি](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1) দেখি।
-কলডেটা দেখতে **আরো দেখতে ক্লিক করুন** ব্যবহার করুন।
+কলডাটা দেখতে **Click to see More** ব্যবহার করুন।
-ফাংশন নির্বাচকটি হল `0xa9059cbb`। এই স্বাক্ষর সহ বেশ কয়েকটি [পরিচিত ফাংশন](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb) রয়েছে।
-এই ক্ষেত্রে [চুক্তির উৎস কোড](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) Etherscan-এ আপলোড করা হয়েছে, তাই আমরা জানি ফাংশনটি হল `transfer(address,uint256)`।
+ফাংশন সিলেক্টর হলো `0xa9059cbb`। এই সিগনেচারের সাথে বেশ কয়েকটি [পরিচিত ফাংশন রয়েছে](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb)।
+এক্ষেত্রে [কন্ট্রাক্ট সোর্স কোড](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) Etherscan-এ আপলোড করা হয়েছে, তাই আমরা জানি ফাংশনটি হলো `transfer(address,uint256)`।
-বাকি ডেটা হল:
+বাকি ডাটা হলো:
```
0000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279
000000000000000000000000000000000000000000000000000000003b0559f4
```
-ABI স্পেসিফিকেশন অনুযায়ী, পূর্ণসংখ্যার মান (যেমন ঠিকানা, যা 20-বাইট পূর্ণসংখ্যা) ABI-তে 32-বাইট শব্দ হিসাবে প্রদর্শিত হয়, সামনে শূন্য দিয়ে প্যাড করা হয়।
-সুতরাং আমরা জানি যে `to` ঠিকানাটি হল [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279)।
-`value` হল 0x3b0559f4 = 990206452।
+ABI স্পেসিফিকেশন অনুযায়ী, ইন্টিজার ভ্যালুগুলো (যেমন এডড্রেস, যা 20-বাইট ইন্টিজার) ABI-তে 32-বাইট ওয়ার্ড হিসেবে উপস্থিত হয়, যার সামনে শূন্য দিয়ে প্যাড করা থাকে।
+তাই আমরা জানি যে `to` এডড্রেস হলো [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279)।
+`value` হলো 0x3b0559f4 = 990206452।
-## লেনদেনের প্রকার {#types-of-transactions}
+## লেনদেনের ধরন {#types-of-transactions}
-ইথেরিয়ামে কয়েক ধরনের লেনদেন রয়েছে:
+ইথিরিয়ামে কয়েক ধরনের লেনদেন রয়েছে:
-- নিয়মিত লেনদেন: এক অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে একটি লেনদেন।
-- চুক্তি স্থাপনার লেনদেন: একটি 'to' ঠিকানা ছাড়া একটি লেনদেন, যেখানে ডেটা ফিল্ড চুক্তির কোডের জন্য ব্যবহৃত হয়।
-- একটি চুক্তির সম্পাদন: একটি লেনদেন যা একটি স্থাপন করা স্মার্ট কন্ট্র্যাক্টের সাথে ইন্টারঅ্যাক্ট করে। এই ক্ষেত্রে, 'to' ঠিকানাটি হল স্মার্ট কন্ট্র্যাক্টের ঠিকানা।
+- সাধারণ লেনদেন: এক একাউন্ট থেকে অন্য একাউন্টে লেনদেন।
+- কন্ট্রাক্ট ডেপ্লয়মেন্ট লেনদেন: 'to' এডড্রেস ছাড়া একটি লেনদেন, যেখানে ডাটা ফিল্ডটি কন্ট্রাক্ট কোডের জন্য ব্যবহৃত হয়।
+- কন্ট্রাক্ট এক্সিকিউশন: একটি লেনদেন যা ডেপ্লয় করা স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করে। এক্ষেত্রে, 'to' এডড্রেস হলো স্মার্ট কন্ট্রাক্ট এডড্রেস।
-### গ্যাসের উপর {#on-gas}
+### গ্যাস সম্পর্কে {#on-gas}
-উল্লিখিত হিসাবে, লেনদেন সম্পাদনের জন্য [গ্যাস](/developers/docs/gas/) খরচ হয়। সাধারণ স্থানান্তর লেনদেনের জন্য 21000 ইউনিট গ্যাস প্রয়োজন।
+যেমনটি উল্লেখ করা হয়েছে, লেনদেন এক্সিকিউট করতে [গ্যাস](/developers/docs/gas/) খরচ হয়। সাধারণ ট্রান্সফার লেনদেনের জন্য 21000 ইউনিট গ্যাস প্রয়োজন।
-সুতরাং ববকে অ্যালিসকে 1 ETH পাঠাতে 190 gwei-এর একটি `baseFeePerGas` এবং 10 gwei-এর একটি `maxPriorityFeePerGas`-এ, ববকে নিম্নলিখিত ফি দিতে হবে:
+তাই Bob যদি Alice-কে 190 gwei `baseFeePerGas` এবং 10 gwei `maxPriorityFeePerGas`-এ 1 ETH পাঠাতে চায়, তবে Bob-কে নিচের ফি দিতে হবে:
```
(190 + 10) * 21000 = 4,200,000 gwei
@@ -152,82 +152,81 @@ ABI স্পেসিফিকেশন অনুযায়ী, পূর্
0.0042 ETH
```
-ববের অ্যাকাউন্ট ডেবিট হবে **-1.0042 ETH** (অ্যালিসের জন্য 1 ETH + গ্যাস ফিতে 0.0042 ETH)
+Bob-এর একাউন্ট থেকে ডেবিট হবে **-1.0042 ETH** (Alice-এর জন্য 1 ETH + গ্যাস ফি হিসেবে 0.0042 ETH)
-অ্যালিসের অ্যাকাউন্ট ক্রেডিট হবে **+1.0 ETH**
+Alice-এর একাউন্টে ক্রেডিট হবে **+1.0 ETH**
-বেস ফি পুড়িয়ে ফেলা হবে **-0.00399 ETH**
+বেস ফি বার্ন হবে **-0.00399 ETH**
-ভ্যালিডেটর টিপ রাখে **+0.000210 ETH**
+ভ্যালিডেটর টিপ হিসেবে রাখবে **+0.000210 ETH**
-
-_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে অভিযোজিত ডায়াগ্রাম_
-একটি লেনদেনে ব্যবহৃত না হওয়া যেকোনো গ্যাস ব্যবহারকারীর অ্যাকাউন্টে ফেরত দেওয়া হয়।
+
+_চিত্রটি [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) থেকে নেওয়া হয়েছে_
-### স্মার্ট কন্ট্র্যাক্ট মিথস্ক্রিয়া {#smart-contract-interactions}
+লেনদেনে ব্যবহৃত না হওয়া যেকোনো গ্যাস ব্যবহারকারীর একাউন্ট-এ রিফান্ড করা হয়।
-একটি স্মার্ট কন্ট্র্যাক্ট জড়িত যেকোনো লেনদেনের জন্য গ্যাস প্রয়োজন।
+### স্মার্ট কন্ট্রাক্ট ইন্টারঅ্যাকশন {#smart-contract-interactions}
-স্মার্ট কন্ট্র্যাক্টগুলোতে [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) বা [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) ফাংশন হিসেবে পরিচিত ফাংশনও থাকতে পারে, যা চুক্তির স্টেট পরিবর্তন করে না। এইভাবে, একটি EOA থেকে এই ফাংশনগুলিকে কল করার জন্য কোনও গ্যাসের প্রয়োজন হবে না। এই পরিস্থিতির জন্য অন্তর্নিহিত RPC কল হল [`eth_call`](/developers/docs/apis/json-rpc#eth_call)।
+স্মার্ট কন্ট্রাক্ট জড়িত এমন যেকোনো লেনদেনের জন্য গ্যাস প্রয়োজন।
-`eth_call` ব্যবহার করে অ্যাক্সেস করার থেকে ভিন্ন, এই `view` বা `pure` ফাংশনগুলো সাধারণত অভ্যন্তরীণভাবেও কল করা হয় (অর্থাৎ, চুক্তি থেকে বা অন্য চুক্তি থেকে) যার জন্য গ্যাস খরচ হয়।
+স্মার্ট কন্ট্রাক্ট-এ [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) বা [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) ফাংশন নামে পরিচিত ফাংশনও থাকতে পারে, যা কন্ট্রাক্টের স্টেট পরিবর্তন করে না। তাই, একটি EOA থেকে এই ফাংশনগুলো কল করার জন্য কোনো গ্যাস প্রয়োজন হবে না। এই পরিস্থিতির জন্য অন্তর্নিহিত RPC কল হলো [`eth_call`](/developers/docs/apis/json-rpc#eth_call)।
-## লেনদেন জীবনচক্র {#transaction-lifecycle}
+`eth_call` ব্যবহার করে এক্সেস করার বিপরীতে, এই `view` বা `pure` ফাংশনগুলো সাধারণত ইন্টারনালিও কল করা হয় (অর্থাৎ, কন্ট্রাক্ট থেকে বা অন্য কোনো কন্ট্রাক্ট থেকে) যার জন্য গ্যাস খরচ হয়।
-একবার লেনদেন জমা দেওয়া হলে নিম্নলিখিতগুলি ঘটে:
+## লেনদেনের লাইফসাইকেল {#transaction-lifecycle}
-1. একটি লেনদেন হ্যাস ক্রিপ্টোগ্রাফিকভাবে তৈরি হয়:
+লেনদেন সাবমিট করার পর নিচের ঘটনাগুলো ঘটে:
+
+1. একটি ট্রানজেকশন হ্যাস ক্রিপ্টোগ্রাফিক্যালি তৈরি হয়:
`0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017`
-2. লেনদেনটি তারপর নেটওয়ার্কে সম্প্রচার করা হয় এবং একটি লেনদেন পুলে যোগ করা হয় যা অন্যান্য সমস্ত মুলতুবি থাকা নেটওয়ার্ক লেনদেন নিয়ে গঠিত।
-3. একজন ভ্যালিডেটরকে অবশ্যই আপনার লেনদেন বাছাই করতে হবে এবং লেনদেনটি যাচাই করার জন্য এবং এটিকে "সফল" হিসাবে বিবেচনা করার জন্য এটিকে একটি ব্লকে অন্তর্ভুক্ত করতে হবে।
-4. সময়ের সাথে সাথে আপনার লেনদেন ধারণকারী ব্লকটি "যৌক্তিক" এবং তারপর "চূড়ান্ত" এ আপগ্রেড করা হবে। এই আপগ্রেডগুলি এটিকে আরও
- অনেক বেশি নিশ্চিত করে যে আপনার লেনদেন সফল হয়েছে এবং কখনও পরিবর্তন করা হবে না। একবার একটি ব্লক "চূড়ান্ত" হয়ে গেলে এটি শুধুমাত্র একটি নেটওয়ার্ক স্তরের আক্রমণের
- দ্বারা পরিবর্তন করা যেতে পারে যার জন্য বহু বিলিয়ন ডলার খরচ হবে।
+2. এরপর লেনদেনটি নেটওয়ার্ক-এ ব্রডকাস্ট করা হয় এবং অন্যান্য সমস্ত পেন্ডিং নেটওয়ার্ক লেনদেন নিয়ে গঠিত একটি ট্রানজেকশন পুলে যোগ করা হয়।
+3. লেনদেনটি ভেরিফাই করতে এবং এটিকে "সফল" হিসেবে বিবেচনা করার জন্য একজন ভ্যালিডেটর-কে অবশ্যই আপনার লেনদেনটি বেছে নিতে হবে এবং এটিকে একটি ব্লক-এ অন্তর্ভুক্ত করতে হবে।
+4. সময় যাওয়ার সাথে সাথে আপনার লেনদেন ধারণকারী ব্লকটি "জাস্টিফাইড" এবং তারপর "ফাইনাল" হিসেবে আপগ্রেড হবে। এই আপগ্রেডগুলো নিশ্চিত করে যে আপনার লেনদেনটি সফল হয়েছে এবং এটি আর কখনো পরিবর্তন করা হবে না। একবার একটি ব্লক "ফাইনাল" হয়ে গেলে, এটি শুধুমাত্র একটি নেটওয়ার্ক লেভেলের এ্যাটাক দ্বারাই পরিবর্তন করা সম্ভব, যার জন্য বিলিয়ন বিলিয়ন ডলার খরচ হবে।
-## একটি ভিজ্যুয়াল ডেমো {#a-visual-demo}
+## একটি ভিজ্যুয়াল ডেমো {#a-visual-demo}
-অস্টিনকে দেখুন আপনাকে লেনদেন, গ্যাস এবং মাইনিং এর মাধ্যমে নিয়ে যেতে।
+অস্টিনকে লেনদেন, গ্যাস এবং মাইনিং সম্পর্কে বিস্তারিত আলোচনা করতে দেখুন।
## টাইপড ট্রানজেকশন এনভেলপ {#typed-transaction-envelope}
-ইথেরিয়ামের মূলত লেনদেনের জন্য একটি ফর্ম্যাট ছিল। প্রতিটি লেনদেনে একটি ননস, গ্যাস প্রাইস, গ্যাস লিমিট, টু এড্রেস, ভ্যালু, ডেটা, v, r, এবং s ছিল। এই ক্ষেত্রগুলি [RLP-এনকোডেড](/developers/docs/data-structures-and-encoding/rlp/), দেখতে কিছুটা এইরকম:
+ইথিরিয়ামে প্রাথমিকভাবে লেনদেনের জন্য একটি ফরম্যাট ছিল। প্রতিটি লেনদেনে একটি নন্স, গ্যাস প্রাইস, গ্যাস লিমিট, to এডড্রেস, ভ্যালু, ডাটা, v, r এবং s অন্তর্ভুক্ত ছিল। এই ফিল্ডগুলো [RLP-এনকোড করা](/developers/docs/data-structures-and-encoding/rlp/), যা দেখতে অনেকটা এরকম:
`RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`
-ইথেরিয়াম একাধিক ধরনের লেনদেন সমর্থন করার জন্য বিকশিত হয়েছে যাতে অ্যাক্সেস লিস্ট এবং [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) এর মতো নতুন বৈশিষ্ট্যগুলিকে লিগ্যাসি লেনদেন ফর্ম্যাটকে প্রভাবিত না করেই প্রয়োগ করা যায়।
+ইথিরিয়াম একাধিক ধরনের লেনদেন সাপোর্ট করার জন্য বিবর্তিত হয়েছে যাতে লিগ্যাসি লেনদেন ফরম্যাটগুলোকে প্রভাবিত না করেই এক্সেস লিস্ট এবং [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)-এর মতো নতুন ফিচারগুলো ইমপ্লিমেন্ট করা যায়।
-[EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) এই আচরণের জন্য অনুমতি দেয়। লেনদেনগুলিকে ব্যাখ্যা করা হয়:
+[EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) এই আচরণের অনুমতি দেয়। লেনদেনগুলোকে এভাবে ইন্টারপ্রেট করা হয়:
`TransactionType || TransactionPayload`
-যেখানে ক্ষেত্রগুলি সংজ্ঞায়িত করা হয়েছে:
+যেখানে ফিল্ডগুলো এভাবে সংজ্ঞায়িত করা হয়েছে:
- `TransactionType` - 0 এবং 0x7f-এর মধ্যে একটি সংখ্যা, মোট 128টি সম্ভাব্য লেনদেনের ধরনের জন্য।
-- `TransactionPayload` - লেনদেনের ধরন দ্বারা সংজ্ঞায়িত একটি নির্বিচারে বাইট অ্যারে।
+- `TransactionPayload` - লেনদেনের ধরন দ্বারা সংজ্ঞায়িত একটি আরবিট্রারি বাইট অ্যারে।
-`TransactionType` মানের উপর ভিত্তি করে, একটি লেনদেনকে শ্রেণীবদ্ধ করা যেতে পারে:
+`TransactionType` ভ্যালুর ওপর ভিত্তি করে, একটি লেনদেনকে এভাবে শ্রেণীবদ্ধ করা যেতে পারে:
-1. **টাইপ 0 (লিগ্যাসি) লেনদেন:** ইথেরিয়ামের লঞ্চের পর থেকে ব্যবহৃত মূল লেনদেন ফর্ম্যাট। তারা [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) থেকে ডাইনামিক গ্যাস ফি গণনা বা স্মার্ট কন্ট্র্যাক্টের জন্য অ্যাক্সেস তালিকার মতো বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে না। [রিকার্সিভ লেংথ প্রিফিক্স (RLP)](/developers/docs/data-structures-and-encoding/rlp) এনকোডিং ব্যবহার করার সময় লিগ্যাসি লেনদেনগুলিতে তাদের সিরিয়ালাইজড আকারে তাদের ধরন নির্দেশ করে একটি নির্দিষ্ট উপসর্গ নেই, যা বাইট `0xf8` দিয়ে শুরু হয়। এই লেনদেনগুলির জন্য TransactionType মান হল `0x0`।
+1. **টাইপ 0 (লিগ্যাসি) লেনদেন:** ইথিরিয়াম লঞ্চ হওয়ার পর থেকে ব্যবহৃত মূল লেনদেন ফরম্যাট। এগুলোতে [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) থেকে আসা ফিচারগুলো অন্তর্ভুক্ত নেই, যেমন ডাইনামিক গ্যাস ফি ক্যালকুলেশন বা স্মার্ট কন্ট্রাক্ট-এর জন্য এক্সেস লিস্ট। লিগ্যাসি লেনদেনগুলোর সিরিয়ালাইজড ফর্মে তাদের ধরন নির্দেশ করার জন্য কোনো নির্দিষ্ট প্রিফিক্স থাকে না, [Recursive Length Prefix (RLP)](/developers/docs/data-structures-and-encoding/rlp) এনকোডিং ব্যবহার করার সময় এগুলো `0xf8` বাইট দিয়ে শুরু হয়। এই লেনদেনগুলোর জন্য TransactionType ভ্যালু হলো `0x0`।
-2. **টাইপ 1 লেনদেন:** ইথেরিয়ামের [বার্লিন আপগ্রেড](/ethereum-forks/#berlin) এর অংশ হিসাবে [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) এ প্রবর্তিত, এই লেনদেনগুলিতে একটি `accessList` প্যারামিটার অন্তর্ভুক্ত রয়েছে। এই তালিকাটি ঠিকানা এবং স্টোরেজ কীগুলি নির্দিষ্ট করে যা লেনদেন অ্যাক্সেস করার আশা করে, যা স্মার্ট কন্ট্র্যাক্ট জড়িত জটিল লেনদেনের জন্য সম্ভাব্য [গ্যাস](/developers/docs/gas/) খরচ কমাতে সাহায্য করে। EIP-1559 ফি বাজারের পরিবর্তন টাইপ 1 লেনদেনে অন্তর্ভুক্ত নয়। টাইপ 1 লেনদেনে একটি `yParity` প্যারামিটারও অন্তর্ভুক্ত থাকে, যা `0x0` বা `0x1` হতে পারে, যা secp256k1 স্বাক্ষরের y-মানের প্যারিটি নির্দেশ করে। এগুলিকে বাইট `0x01` দিয়ে শুরু করে চিহ্নিত করা হয় এবং তাদের TransactionType মান হল `0x1`।
+2. **টাইপ 1 লেনদেন:** ইথিরিয়ামের [বার্লিন আপগ্রেড](/ethereum-forks/#berlin)-এর অংশ হিসেবে [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)-এ প্রবর্তিত, এই লেনদেনগুলোতে একটি `accessList` প্যারামিটার অন্তর্ভুক্ত থাকে। এই তালিকাটি সেই এডড্রেস এবং স্টোরেজ কি-গুলো নির্দিষ্ট করে যা লেনদেনটি এক্সেস করবে বলে আশা করা হয়, যা স্মার্ট কন্ট্রাক্ট জড়িত জটিল লেনদেনের জন্য সম্ভাব্যভাবে [গ্যাস](/developers/docs/gas/) খরচ কমাতে সাহায্য করে। EIP-1559 ফি মার্কেট পরিবর্তনগুলো টাইপ 1 লেনদেনে অন্তর্ভুক্ত নয়। টাইপ 1 লেনদেনে একটি `yParity` প্যারামিটারও থাকে, যা `0x0` বা `0x1` হতে পারে, যা secp256k1 সিগনেচারের y-ভ্যালুর প্যারিটি নির্দেশ করে। এগুলো `0x01` বাইট দিয়ে শুরু হওয়ার মাধ্যমে শনাক্ত করা হয় এবং এদের TransactionType ভ্যালু হলো `0x1`।
-3. **টাইপ 2 লেনদেন**, যা সাধারণত EIP-1559 লেনদেন হিসাবে পরিচিত, হল ইথেরিয়ামের [লন্ডন আপগ্রেড](/ethereum-forks/#london) এর [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) এ প্রবর্তিত লেনদেন। তারা ইথেরিয়াম নেটওয়ার্কে স্ট্যান্ডার্ড লেনদেনের ধরন হয়ে উঠেছে। এই লেনদেনগুলি একটি নতুন ফি বাজার ব্যবস্থা প্রবর্তন করে যা লেনদেন ফি একটি বেস ফি এবং একটি অগ্রাধিকার ফিতে বিভক্ত করে পূর্বাভাসের উন্নতি করে। এগুলি বাইট `0x02` দিয়ে শুরু হয় এবং `maxPriorityFeePerGas` এবং `maxFeePerGas` এর মতো ক্ষেত্রগুলি অন্তর্ভুক্ত করে। টাইপ 2 লেনদেন এখন তাদের নমনীয়তা এবং দক্ষতার কারণে ডিফল্ট, বিশেষ করে উচ্চ নেটওয়ার্ক কনজেশনের সময় ব্যবহারকারীদের লেনদেন ফি আরও অনুমানযোগ্যভাবে পরিচালনা করতে সাহায্য করার ক্ষমতার জন্য অনুকূল। এই লেনদেনগুলির জন্য TransactionType মান হল `0x2`।
+3. **টাইপ 2 লেনদেন**, যা সাধারণত EIP-1559 লেনদেন হিসেবে পরিচিত, এগুলো ইথিরিয়ামের [লন্ডন আপগ্রেড](/ethereum-forks/#london)-এ [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)-এর মাধ্যমে প্রবর্তিত লেনদেন। এগুলো ইথিরিয়াম নেটওয়ার্ক-এ স্ট্যান্ডার্ড লেনদেনের ধরনে পরিণত হয়েছে। এই লেনদেনগুলো একটি নতুন ফি মার্কেট মেকানিজম প্রবর্তন করে যা ট্রানজেকশন ফি-কে একটি বেস ফি এবং একটি প্রায়োরিটি ফি-তে আলাদা করে প্রেডিক্টেবিলিটি উন্নত করে। এগুলো `0x02` বাইট দিয়ে শুরু হয় এবং এতে `maxPriorityFeePerGas` এবং `maxFeePerGas`-এর মতো ফিল্ড অন্তর্ভুক্ত থাকে। টাইপ 2 লেনদেনগুলো এখন তাদের ফ্লেক্সিবিলিটি এবং দক্ষতার কারণে ডিফল্ট, বিশেষ করে উচ্চ নেটওয়ার্ক কনজেশনের সময় ব্যবহারকারীদের ট্রানজেকশন ফি আরও প্রেডিক্টেবলভাবে পরিচালনা করতে সাহায্য করার ক্ষমতার জন্য এগুলো বেশি পছন্দ করা হয়। এই লেনদেনগুলোর জন্য TransactionType ভ্যালু হলো `0x2`।
-4. **টাইপ 3 (ব্লব) লেনদেন** ইথেরিয়ামের [ডেনকুন আপগ্রেড](/ethereum-forks/#dencun) এর অংশ হিসাবে [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) তে প্রবর্তিত হয়েছিল। এই লেনদেনগুলি "ব্লব" ডেটা (বাইনারি লার্জ অবজেক্ট) আরও দক্ষতার সাথে পরিচালনা করার জন্য ডিজাইন করা হয়েছে, বিশেষ করে লেয়ার 2 রোলআপগুলিকে কম খরচে ইথেরিয়াম নেটওয়ার্কে ডেটা পোস্ট করার একটি উপায় প্রদান করে উপকৃত করে। ব্লব লেনদেনগুলিতে `blobVersionedHashes`, `maxFeePerBlobGas` এবং `blobGasPrice` এর মতো অতিরিক্ত ক্ষেত্র অন্তর্ভুক্ত রয়েছে। তারা বাইট `0x03` দিয়ে শুরু করে, এবং তাদের TransactionType মান হল `0x3`। ব্লব লেনদেন ইথেরিয়ামের ডেটা প্রাপ্যতা এবং স্কেলিং ক্ষমতার একটি উল্লেখযোগ্য উন্নতির প্রতিনিধিত্ব করে।
+4. **টাইপ 3 (ব্লব) লেনদেন** ইথিরিয়ামের [ডেনকুন আপগ্রেড](/ethereum-forks/#dencun)-এর অংশ হিসেবে [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)-এ প্রবর্তিত হয়েছিল। এই লেনদেনগুলো "ব্লব" ডাটা (বাইনারি লার্জ অবজেক্টস) আরও দক্ষতার সাথে পরিচালনা করার জন্য ডিজাইন করা হয়েছে, বিশেষ করে ইথিরিয়াম নেটওয়ার্ক-এ কম খরচে ডাটা পোস্ট করার একটি উপায় প্রদান করে লেয়ার ২ রেলআপস-কে উপকৃত করে। ব্লব লেনদেনে `blobVersionedHashes`, `maxFeePerBlobGas` এবং `blobGasPrice`-এর মতো অতিরিক্ত ফিল্ড অন্তর্ভুক্ত থাকে। এগুলো `0x03` বাইট দিয়ে শুরু হয় এবং এদের TransactionType ভ্যালু হলো `0x3`। ব্লব লেনদেন ইথিরিয়ামের ডাটা এভেইলএবিলিটি এবং স্কেলিং ক্ষমতার একটি উল্লেখযোগ্য উন্নতির প্রতিনিধিত্ব করে।
-5. **টাইপ 4 লেনদেন** ইথেরিয়ামের [Pectra আপগ্রেড](/roadmap/pectra/) এর অংশ হিসেবে [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) তে চালু করা হয়েছিল। এই লেনদেনগুলি অ্যাকাউন্ট অ্যাবস্ট্রাকশনের সাথে ফরোয়ার্ড-সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছে। এগুলি EOA-কে তাদের মূল কার্যকারিতা আপস না করে অস্থায়ীভাবে স্মার্ট কন্ট্র্যাক্ট অ্যাকাউন্টের মতো আচরণ করতে দেয়। এগুলিতে একটি `authorization_list` প্যারামিটার অন্তর্ভুক্ত থাকে, যা নির্দিষ্ট করে যে স্মার্ট কন্ট্র্যাক্টে EOA তার কর্তৃত্ব অর্পণ করে। লেনদেনের পরে, EOA-এর কোড ফিল্ডে অর্পিত স্মার্ট কন্ট্র্যাক্টের ঠিকানা থাকবে।
+5. **টাইপ 4 লেনদেন** ইথিরিয়ামের [পেক্ট্রা আপগ্রেড](/roadmap/pectra/)-এর অংশ হিসেবে [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702)-এ প্রবর্তিত হয়েছিল। এই লেনদেনগুলো একাউন্ট অ্যাবস্ট্রাকশনের সাথে ফরোয়ার্ড-কম্প্যাটিবল হওয়ার জন্য ডিজাইন করা হয়েছে। এগুলো EOA-গুলোকে তাদের মূল কার্যকারিতার সাথে আপস না করে সাময়িকভাবে স্মার্ট কন্ট্রাক্ট একাউন্ট-এর মতো আচরণ করার অনুমতি দেয়। এগুলোতে একটি `authorization_list` প্যারামিটার অন্তর্ভুক্ত থাকে, যা সেই স্মার্ট কন্ট্রাক্ট-কে নির্দিষ্ট করে যার কাছে EOA তার কর্তৃত্ব অর্পণ করে। লেনদেনের পর, EOA-এর কোড ফিল্ডে অর্পিত স্মার্ট কন্ট্রাক্ট-এর এডড্রেস থাকবে।
-## আরও পড়ুন {#further-reading}
+## আরও পড়ুন {#further-reading}
- [EIP-2718: টাইপড ট্রানজেকশন এনভেলপ](https://eips.ethereum.org/EIPS/eip-2718)
-_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!_
+_এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পেজটি এডিট করুন এবং এটি যোগ করুন!_
-## সম্পর্কিত বিষয় {#related-topics}
+## সম্পর্কিত বিষয়গুলো {#related-topics}
-- [অ্যাকাউন্ট](/developers/docs/accounts/)
-- [ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/)
-- [গ্যাস](/developers/docs/gas/)
+- [একাউন্ট](/developers/docs/accounts/)
+- [ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)](/developers/docs/evm/)
+- [গ্যাস](/developers/docs/gas/)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/docs/web2-vs-web3/index.md b/public/content/translations/bn/developers/docs/web2-vs-web3/index.md
index 54f7042b4a8..3679208697f 100644
--- a/public/content/translations/bn/developers/docs/web2-vs-web3/index.md
+++ b/public/content/translations/bn/developers/docs/web2-vs-web3/index.md
@@ -1,62 +1,62 @@
---
-title: "Web2 বনাম Web3"
-description: "কেন্দ্রীভূত Web2 পরিষেবাগুলির সাথে ইথেরিয়াম ব্লকচেইন প্রযুক্তির উপর নির্মিত বিকেন্দ্রীভূত Web3 অ্যাপ্লিকেশনগুলির তুলনা করুন।"
+title: Web2 বনাম ওয়েব3
+description: ইথিরিয়াম ব্লকচেইন প্রযুক্তিতে তৈরি ডিসেন্ট্রালাইজড ওয়েব3 অ্যাপ্লিকেশনের সাথে সেন্ট্রালাইজড Web2 পরিষেবার তুলনা করুন।
lang: bn
---
-Web2 বলতে ইন্টারনেটের সেই সংস্করণকে বোঝায় যা আমরা বেশিরভাগই আজ জানি। এমন একটি ইন্টারনেট যা আপনার ব্যক্তিগত তথ্যের বিনিময়ে পরিষেবা প্রদানকারী সংস্থাগুলির দ্বারা প্রভাবিত। Web3, ইথেরিয়ামের প্রেক্ষাপটে, ব্লকচেইনে চালিত বিকেন্দ্রীভূত অ্যাপগুলিকে বোঝায়। এগুলি এমন অ্যাপ যা তাদের ব্যক্তিগত ডেটাকে নগদীকরণ না করেই যে কাউকে অংশগ্রহণের অনুমতি দেয়।
+Web2 বলতে ইন্টারনেটের সেই সংস্করণকে বোঝায় যা আমরা আজ বেশিরভাগই জানি। এমন একটি ইন্টারনেট যা কোম্পানিগুলোর দ্বারা নিয়ন্ত্রিত, যারা আপনার ব্যক্তিগত ডেটার বিনিময়ে পরিষেবা প্রদান করে। ওয়েব3, [Ethereum](/)-এর প্রেক্ষাপটে, ব্লকচেইন-এ চলা ডিসেন্ট্রালাইজড অ্যাপগুলোকে বোঝায়। এগুলো এমন অ্যাপ যা যে কাউকে তাদের ব্যক্তিগত ডেটা নগদীকরণ ছাড়াই অংশগ্রহণ করার অনুমতি দেয়।
-আরও নতুনদের জন্য উপযুক্ত রিসোর্স খুঁজছেন? আমাদের [web3 পরিচিতি](/web3/) দেখুন।
+আরও শিক্ষানবিস-বান্ধব রিসোর্স খুঁজছেন? আমাদের [ওয়েব3 পরিচিতি](/web3/) দেখুন।
-## Web3-এর সুবিধা {#web3-benefits}
+## ওয়েব3 এর সুবিধা {#web3-benefits}
-অনেক Web3 ডেভেলপার ইথেরিয়ামের অন্তর্নিহিত বিকেন্দ্রীকরণের কারণে ডিএ্যাপস তৈরি করতে বেছে নিয়েছেন:
+অনেক ওয়েব3 ডেভেলপার ডিএ্যাপস তৈরি করা বেছে নিয়েছেন কারণ ইথিরিয়ামের অন্তর্নিহিত ডিসেন্ট্রালাইজেশন:
-- নেটওয়ার্কে থাকা যে কেউ পরিষেবাটি ব্যবহার করার অনুমতি পাবে – বা অন্য কথায়, অনুমতির প্রয়োজন নেই।
+- নেটওয়ার্ক-এ থাকা যে কারো পরিষেবাটি ব্যবহার করার অনুমতি রয়েছে – বা অন্য কথায়, অনুমতির প্রয়োজন নেই।
- কেউ আপনাকে ব্লক করতে বা পরিষেবাটিতে আপনার অ্যাক্সেস অস্বীকার করতে পারবে না।
-- নেটিভ টোকেন, ইথার (ETH)-এর মাধ্যমে পেমেন্টগুলি বিল্ট-ইন থাকে।
-- ইথেরিয়াম হল টিউরিং-সম্পূর্ণ, যার অর্থ আপনি প্রায় সবকিছুই প্রোগ্রাম করতে পারেন।
+- পেমেন্টগুলো নেটিভ টোকেন, ইথার (ETH)-এর মাধ্যমে বিল্ট-ইন থাকে।
+- ইথিরিয়াম হলো টুরিং-কমপ্লিট, যার মানে আপনি প্রায় যেকোনো কিছু প্রোগ্রাম করতে পারেন।
-## বাস্তবসম্মত তুলনা {#practical-comparisons}
+## ব্যবহারিক তুলনা {#practical-comparisons}
-| Web2 | Web3 |
-| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
-| টুইটার যেকোনো অ্যাকাউন্ট বা টুইট সেন্সর করতে পারে | Web3 টুইটগুলি সেন্সর করা যাবে না কারণ নিয়ন্ত্রণ বিকেন্দ্রীভূত |
-| পেমেন্ট পরিষেবা নির্দিষ্ট ধরণের কাজের জন্য পেমেন্টের অনুমতি না দেওয়ার সিদ্ধান্ত নিতে পারে | Web3 পেমেন্ট অ্যাপগুলির জন্য কোনো ব্যক্তিগত ডেটার প্রয়োজন হয় না এবং পেমেন্ট আটকাতে পারে না |
-| গিগ-ইকোনমি অ্যাপের সার্ভার ডাউন হয়ে যেতে পারে এবং কর্মীদের আয়কে প্রভাবিত করতে পারে | Web3 সার্ভারগুলি ডাউন হতে পারে না – তারা তাদের ব্যাকএন্ড হিসাবে ইথেরিয়াম ব্যবহার করে, যা হাজার হাজার কম্পিউটারের একটি বিকেন্দ্রীভূত নেটওয়ার্ক |
+| Web2 | Web3 |
+| -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
+| Twitter যেকোনো অ্যাকাউন্ট বা টুইট সেন্সর করতে পারে | ওয়েব3 টুইটগুলো সেন্সর করা যাবে না কারণ নিয়ন্ত্রণ ডিসেন্ট্রালাইজড |
+| পেমেন্ট পরিষেবা নির্দিষ্ট ধরনের কাজের জন্য পেমেন্ট অনুমোদন না করার সিদ্ধান্ত নিতে পারে | ওয়েব3 পেমেন্ট অ্যাপগুলোতে কোনো ব্যক্তিগত ডেটার প্রয়োজন হয় না এবং পেমেন্ট আটকাতে পারে না |
+| গিগ-ইকোনমি অ্যাপগুলোর সার্ভার ডাউন হতে পারে এবং কর্মীদের আয়কে প্রভাবিত করতে পারে | ওয়েব3 সার্ভারগুলো ডাউন হতে পারে না – তারা তাদের ব্যাকএন্ড হিসেবে ইথিরিয়াম ব্যবহার করে, যা 1000-এর বেশি কম্পিউটারের একটি ডিসেন্ট্রালাইজড নেটওয়ার্ক |
-এর মানে এই নয় যে সমস্ত পরিষেবাকে একটি ডিঅ্যাপ-এ পরিণত করতে হবে। এই উদাহরণগুলি web2 এবং web3 পরিষেবাগুলির মধ্যে প্রধান পার্থক্যগুলির দৃষ্টান্তমূলক।
+এর মানে এই নয় যে সমস্ত পরিষেবাকে একটি ডিএ্যাপ-এ পরিণত করতে হবে। এই উদাহরণগুলো Web2 এবং ওয়েব3 পরিষেবাগুলোর মধ্যে প্রধান পার্থক্যগুলো তুলে ধরে।
-## Web3-এর সীমাবদ্ধতা {#web3-limitations}
+## ওয়েব3 এর সীমাবদ্ধতা {#web3-limitations}
-Web3-এর বর্তমানে কিছু সীমাবদ্ধতা রয়েছে:
+ওয়েব3 এর বর্তমানে কিছু সীমাবদ্ধতা রয়েছে:
-- স্কেলেবিলিটি – web3-এ লেনদেন ধীর হয় কারণ সেগুলি বিকেন্দ্রীভূত। স্টেট-এর পরিবর্তন, যেমন একটি পেমেন্ট, একটি নোড দ্বারা প্রক্রিয়া করা এবং পুরো নেটওয়ার্কে প্রচারিত হওয়া প্রয়োজন।
-- UX – web3 অ্যাপ্লিকেশনগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য অতিরিক্ত পদক্ষেপ, সফ্টওয়্যার এবং শিক্ষার প্রয়োজন হতে পারে। এটি গ্রহণের ক্ষেত্রে একটি বাধা হতে পারে।
-- অ্যাক্সেসযোগ্যতা – আধুনিক ওয়েব ব্রাউজারগুলিতে ইন্টিগ্রেশনের অভাব বেশিরভাগ ব্যবহারকারীর জন্য web3-কে কম অ্যাক্সেসযোগ্য করে তোলে।
-- খরচ – সবচেয়ে সফল ডিএ্যাপস তাদের কোডের খুব ছোট অংশ ব্লকচেইনে রাখে কারণ এটি ব্যয়বহুল।
+- স্কেলেবিলিটি – ওয়েব3 তে লেনদেন ধীরগতির কারণ এগুলো ডিসেন্ট্রালাইজড। স্টেট-এর পরিবর্তন, যেমন একটি পেমেন্ট, একটি নোড দ্বারা প্রসেস করা এবং পুরো নেটওয়ার্ক জুড়ে ছড়িয়ে দেওয়া প্রয়োজন।
+- ইউজার এক্সপেরিয়েন্স (UX) – ওয়েব3 অ্যাপ্লিকেশনগুলোর সাথে ইন্টারঅ্যাক্ট করার জন্য অতিরিক্ত পদক্ষেপ, সফ্টওয়্যার এবং শিক্ষার প্রয়োজন হতে পারে। এটি গ্রহণের ক্ষেত্রে একটি বাধা হতে পারে।
+- অ্যাক্সেসিবিলিটি – আধুনিক ওয়েব ব্রাউজারগুলোতে ইন্টিগ্রেশনের অভাব ওয়েব3 কে বেশিরভাগ ব্যবহারকারীর কাছে কম অ্যাক্সেসযোগ্য করে তোলে।
+- খরচ – বেশিরভাগ সফল ডিএ্যাপস তাদের কোডের খুব ছোট অংশ ব্লকচেইন-এ রাখে কারণ এটি ব্যয়বহুল।
-## কেন্দ্রীকরণ বনাম বিকেন্দ্রীকরণ {#centralization-vs-decentralization}
+## সেন্ট্রালাইজেশন বনাম ডিসেন্ট্রালাইজেশন {#centralization-vs-decentralization}
-নীচের সারণীতে, আমরা কেন্দ্রীভূত এবং বিকেন্দ্রীভূত ডিজিটাল নেটওয়ার্কগুলির কিছু ব্যাপক সুবিধা এবং অসুবিধা তালিকাভুক্ত করেছি।
+নিচের টেবিলে, আমরা সেন্ট্রালাইজড এবং ডিসেন্ট্রালাইজড ডিজিটাল নেটওয়ার্ক-গুলোর কিছু সাধারণ সুবিধা এবং অসুবিধা তালিকাভুক্ত করেছি।
-| কেন্দ্রীভূত সিস্টেম | বিকেন্দ্রীভূত সিস্টেম |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| কম নেটওয়ার্ক ব্যাস (সমস্ত অংশগ্রহণকারী একটি কেন্দ্রীয় কর্তৃপক্ষের সাথে সংযুক্ত); তথ্য দ্রুত প্রচারিত হয়, কারণ প্রচার একটি কেন্দ্রীয় কর্তৃপক্ষ দ্বারা প্রচুর কম্পিউটেশনাল রিসোর্স সহ পরিচালিত হয়। | নেটওয়ার্কের সবচেয়ে দূরের অংশগ্রহণকারীরা একে অপরের থেকে সম্ভাব্যভাবে অনেক দূরে থাকতে পারে। নেটওয়ার্কের এক প্রান্ত থেকে সম্প্রচারিত তথ্য অন্য প্রান্তে পৌঁছতে অনেক সময় লাগতে পারে। |
-| সাধারণত উচ্চতর পারফরম্যান্স (উচ্চতর থ্রুপুট, কম মোট কম্পিউটেশনাল রিসোর্স ব্যয় করা হয়) এবং বাস্তবায়ন করা সহজ। | সাধারণত কম পারফরম্যান্স (নিম্ন থ্রুপুট, বেশি মোট কম্পিউটেশনাল রিসোর্স ব্যয় করা হয়) এবং বাস্তবায়ন করা আরও জটিল। |
-| পরস্পরবিরোধী ডেটার ক্ষেত্রে, সমাধান স্পষ্ট এবং সহজ: সত্যের চূড়ান্ত উৎস হল কেন্দ্রীয় কর্তৃপক্ষ। | বিরোধ নিষ্পত্তির জন্য একটি প্রোটোকল (প্রায়শই জটিল) প্রয়োজন, যদি সহকর্মীরা ডেটার স্টেট সম্পর্কে পরস্পরবিরোধী দাবি করে যার উপর অংশগ্রহণকারীদের সিঙ্ক্রোনাইজ করার কথা। |
-| ব্যর্থতার একক বিন্দু: ক্ষতিকারক অভিনেতারা কেন্দ্রীয় কর্তৃপক্ষকে লক্ষ্য করে নেটওয়ার্কটি ডাউন করতে সক্ষম হতে পারে। | ব্যর্থতার কোনো একক বিন্দু নেই: নেটওয়ার্ক এখনও কাজ করতে পারে এমনকি যদি অংশগ্রহণকারীদের একটি বড় অংশ আক্রমণ/সরিয়ে দেওয়া হয়। |
-| নেটওয়ার্ক অংশগ্রহণকারীদের মধ্যে সমন্বয় অনেক সহজ, এবং একটি কেন্দ্রীয় কর্তৃপক্ষ দ্বারা পরিচালিত হয়। কেন্দ্রীয় কর্তৃপক্ষ খুব কম ঘর্ষণে নেটওয়ার্ক অংশগ্রহণকারীদের আপগ্রেড, প্রোটোকল আপডেট ইত্যাদি গ্রহণ করতে বাধ্য করতে পারে। | সমন্বয় প্রায়শই কঠিন, কারণ নেটওয়ার্ক-স্তরের সিদ্ধান্ত, প্রোটোকল আপগ্রেড ইত্যাদিতে কোনো একক এজেন্টের চূড়ান্ত বক্তব্য নেই। সবচেয়ে খারাপ ক্ষেত্রে, প্রোটোকল পরিবর্তন সম্পর্কে মতবিরোধ থাকলে নেটওয়ার্ক বিভক্ত হওয়ার প্রবণতা থাকে। |
-| কেন্দ্রীয় কর্তৃপক্ষ ডেটা সেন্সর করতে পারে, যা নেটওয়ার্কের কিছু অংশকে বাকি নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করা থেকে সম্ভাব্যভাবে বিচ্ছিন্ন করে দেয়। | সেন্সরশিপ অনেক কঠিন, কারণ নেটওয়ার্ক জুড়ে তথ্য প্রচারের অনেক উপায় রয়েছে। |
-| নেটওয়ার্কে অংশগ্রহণ কেন্দ্রীয় কর্তৃপক্ষ দ্বারা নিয়ন্ত্রিত হয়। | যে কেউ নেটওয়ার্কে অংশগ্রহণ করতে পারে; কোনো “গেটকিপার” নেই। আদর্শগতভাবে, অংশগ্রহণের খরচ খুব কম। |
+| সেন্ট্রালাইজড সিস্টেম | ডিসেন্ট্রালাইজড সিস্টেম |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| কম নেটওয়ার্ক ব্যাস (সমস্ত অংশগ্রহণকারী একটি কেন্দ্রীয় কর্তৃপক্ষের সাথে সংযুক্ত থাকে); তথ্য দ্রুত ছড়িয়ে পড়ে, কারণ প্রচুর কম্পিউটেশনাল রিসোর্স সহ একটি কেন্দ্রীয় কর্তৃপক্ষ দ্বারা প্রচার পরিচালনা করা হয়। | নেটওয়ার্ক-এর সবচেয়ে দূরের অংশগ্রহণকারীরা সম্ভাব্যভাবে একে অপরের থেকে অনেক দূরে থাকতে পারে। নেটওয়ার্ক-এর একপাশ থেকে সম্প্রচারিত তথ্য অন্য পাশে পৌঁছাতে দীর্ঘ সময় নিতে পারে। |
+| সাধারণত উচ্চতর পারফরম্যান্স (উচ্চ থ্রুপুট, কম মোট কম্পিউটেশনাল রিসোর্স ব্যয় হয়) এবং বাস্তবায়ন করা সহজ। | সাধারণত নিম্ন পারফরম্যান্স (নিম্ন থ্রুপুট, বেশি মোট কম্পিউটেশনাল রিসোর্স ব্যয় হয়) এবং বাস্তবায়ন করা আরও জটিল। |
+| সাংঘর্ষিক ডেটার ক্ষেত্রে, সমাধান স্পষ্ট এবং সহজ: সত্যের চূড়ান্ত উৎস হলো কেন্দ্রীয় কর্তৃপক্ষ। | বিরোধ নিষ্পত্তির জন্য একটি প্রটোকল (প্রায়শই জটিল) প্রয়োজন, যদি পিয়াররা ডেটার স্টেট সম্পর্কে সাংঘর্ষিক দাবি করে যার উপর অংশগ্রহণকারীদের সিঙ্ক্রোনাইজ হওয়ার কথা। |
+| সিঙ্গেল পয়েন্ট অফ ফেইলিওর: ক্ষতিকারক ব্যক্তিরা কেন্দ্রীয় কর্তৃপক্ষকে লক্ষ্য করে নেটওয়ার্ক ডাউন করে দিতে পারে। | কোনো সিঙ্গেল পয়েন্ট অফ ফেইলিওর নেই: অংশগ্রহণকারীদের একটি বড় অংশ আক্রান্ত/বাদ পড়লেও নেটওয়ার্ক কাজ করতে পারে। |
+| নেটওয়ার্ক অংশগ্রহণকারীদের মধ্যে সমন্বয় অনেক সহজ, এবং এটি একটি কেন্দ্রীয় কর্তৃপক্ষ দ্বারা পরিচালিত হয়। কেন্দ্রীয় কর্তৃপক্ষ খুব কম ঘর্ষণের সাথে নেটওয়ার্ক অংশগ্রহণকারীদের আপগ্রেড, প্রটোকল আপডেট ইত্যাদি গ্রহণ করতে বাধ্য করতে পারে। | সমন্বয় প্রায়শই কঠিন, কারণ নেটওয়ার্ক-স্তরের সিদ্ধান্ত, প্রটোকল আপগ্রেড ইত্যাদিতে কোনো একক এজেন্টের চূড়ান্ত বক্তব্য থাকে না। সবচেয়ে খারাপ ক্ষেত্রে, প্রটোকল পরিবর্তন সম্পর্কে মতবিরোধ থাকলে নেটওয়ার্ক ভেঙে যাওয়ার প্রবণতা থাকে। |
+| কেন্দ্রীয় কর্তৃপক্ষ ডেটা সেন্সর করতে পারে, সম্ভাব্যভাবে নেটওয়ার্ক-এর কিছু অংশকে বাকি নেটওয়ার্ক-এর সাথে ইন্টারঅ্যাক্ট করা থেকে বিচ্ছিন্ন করে দিতে পারে। | সেন্সরশিপ অনেক কঠিন, কারণ নেটওয়ার্ক জুড়ে তথ্য ছড়িয়ে পড়ার অনেক উপায় রয়েছে। |
+| নেটওয়ার্ক-এ অংশগ্রহণ কেন্দ্রীয় কর্তৃপক্ষ দ্বারা নিয়ন্ত্রিত হয়। | যে কেউ নেটওয়ার্ক-এ অংশগ্রহণ করতে পারে; কোনো "গেটকিপার" নেই। আদর্শভাবে, অংশগ্রহণের খরচ খুব কম। |
-মনে রাখবেন যে এগুলি সাধারণ প্যাটার্ন যা প্রতিটি নেটওয়ার্কে সত্য নাও হতে পারে। তাছাড়া, বাস্তবে একটি নেটওয়ার্ক কতটা কেন্দ্রীভূত/বিকেন্দ্রীভূত তা একটি স্পেকট্রামের উপর নির্ভর করে; কোনো নেটওয়ার্কই সম্পূর্ণ কেন্দ্রীভূত বা সম্পূর্ণ বিকেন্দ্রীভূত নয়।
+মনে রাখবেন যে এগুলো সাধারণ প্যাটার্ন যা প্রতিটি নেটওয়ার্ক-এ সত্য নাও হতে পারে। তদুপরি, বাস্তবে একটি নেটওয়ার্ক কতটা সেন্ট্রালাইজড/ডিসেন্ট্রালাইজড তা একটি স্পেকট্রামের উপর নির্ভর করে; কোনো নেটওয়ার্ক-ই সম্পূর্ণ সেন্ট্রালাইজড বা সম্পূর্ণ ডিসেন্ট্রালাইজড নয়।
## আরও পড়ুন {#further-reading}
-- [Web3 কী?](/web3/) - _ethereum.org_
-- [একটি ওয়েব 3.0 অ্যাপ্লিকেশনের আর্কিটেকচার](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _প্রীতি কাসিরেড্ডি_
-- [বিকেন্দ্রীকরণের অর্থ](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _৬ ফেব্রুয়ারী, ২০১৭ - Vitalik Buterin_
-- [কেন বিকেন্দ্রীকরণ গুরুত্বপূর্ণ](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) _১৮ ফেব্রুয়ারী, ২০১৮ - Chris Dixon_
-- [Web 3.0 কী এবং কেন এটি গুরুত্বপূর্ণ](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _৩১ ডিসেম্বর, ২০১৯ - Max Mersch and Richard Muirhead_
-- [কেন আমাদের Web 3.0 প্রয়োজন](https://gavofyork.medium.com/why-we-need-web-3-0-5da4f2bf95ab) _১২ সেপ্টেম্বর, ২০১৮ - Gavin Wood_
+- [ওয়েব3 কী?](/web3/) - _ethereum.org_
+- [দ্য আর্কিটেকচার অফ আ ওয়েব 3.0 অ্যাপ্লিকেশন](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [দ্য মিনিং অফ ডিসেন্ট্রালাইজেশন](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _ফেব্রুয়ারি 6, 2017 - Vitalik Buterin_
+- [হোয়াই ডিসেন্ট্রালাইজেশন ম্যাটারস](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) _ফেব্রুয়ারি 18, 2018 - Chris Dixon_
+- [হোয়াট ইজ ওয়েব 3.0 অ্যান্ড হোয়াই ইট ম্যাটারস](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _ডিসেম্বর 31, 2019 - Max Mersch এবং Richard Muirhead_
+- [হোয়াই উই নিড ওয়েব 3.0](https://gavofyork.medium.com/why-we-need-web-3-0-5da4f2bf95ab) _সেপ্টেম্বর 12, 2018 - Gavin Wood_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/bn/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
new file mode 100644
index 00000000000..554a1ceb52d
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -0,0 +1,301 @@
+---
+title: পাইথন ডেভেলপারদের জন্য ইথিরিয়াম পরিচিতি, পর্ব 1
+description: ইথিরিয়াম ডেভেলপমেন্টের একটি পরিচিতি, বিশেষ করে যারা পাইথন প্রোগ্রামিং ভাষা জানেন তাদের জন্য এটি বেশ উপকারী
+author: মার্ক গ্যারো
+lang: bn
+tags: ["python", "web3.py"]
+skill: beginner
+breadcrumb: পাইথনের সাথে ইথিরিয়াম
+published: 2020-09-08
+source: Snake charmers
+sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/
+---
+
+সুতরাং, আপনি ইথিরিয়াম সম্পর্কে শুনেছেন এবং এর গভীরে প্রবেশ করতে প্রস্তুত? এই পোস্টটি দ্রুত কিছু ব্লকচেইন বেসিক কভার করবে, তারপর আপনাকে একটি সিমুলেটেড ইথিরিয়াম নোড এর সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করবে – ব্লক ডেটা পড়া, একাউন্ট ব্যালেন্স চেক করা এবং লেনদেন পাঠানো। এর পাশাপাশি, আমরা অ্যাপ তৈরির ঐতিহ্যবাহী পদ্ধতি এবং এই নতুন ডিসেন্ট্রালাইজড প্যারাডাইমের মধ্যে পার্থক্যগুলো তুলে ধরব।
+
+## (সফট) পূর্বশর্ত {#soft-prerequisites}
+
+এই পোস্টটি বিভিন্ন ধরনের ডেভেলপারদের কাছে বোধগম্য করার চেষ্টা করা হয়েছে। এতে [Python tools](/developers/docs/programming-languages/python/) যুক্ত থাকবে, তবে এগুলো কেবল ধারণাগুলো বোঝানোর একটি মাধ্যম – আপনি যদি পাইথন ডেভেলপার নাও হন, তাতে কোনো সমস্যা নেই। তবে, আপনি আগে থেকেই কিছু বিষয় জানেন বলে আমি ধরে নেব, যাতে আমরা দ্রুত ইথিরিয়াম-সম্পর্কিত বিষয়গুলোতে এগিয়ে যেতে পারি।
+
+অনুমানসমূহ:
+
+- আপনি টার্মিনাল ব্যবহার করতে পারেন,
+- আপনি পাইথন কোডের কয়েক লাইন লিখেছেন,
+- আপনার মেশিনে পাইথন ভার্সন 3.6 বা তার বেশি ইনস্টল করা আছে (একটি [virtual environment](https://realpython.com/effective-python-environment/#virtual-environments) ব্যবহার করার জন্য জোরালোভাবে উৎসাহিত করা হচ্ছে), এবং
+- আপনি পাইথনের প্যাকেজ ইনস্টলার `pip` ব্যবহার করেছেন।
+ আবারও বলছি, যদি এর কোনোটি সত্য না হয়, বা আপনি এই আর্টিকেলের কোডগুলো নিজে চেষ্টা করার পরিকল্পনা না করেন, তবুও আপনি সহজেই এটি অনুসরণ করতে পারবেন।
+
+## ব্লকচেইন, সংক্ষেপে {#blockchains-briefly}
+
+ইথিরিয়ামকে বর্ণনা করার অনেক উপায় আছে, তবে এর মূলে রয়েছে একটি ব্লকচেইন। ব্লকচেইনগুলো ব্লকস এর একটি সিরিজ দিয়ে তৈরি, তাই চলুন সেখান থেকেই শুরু করি। সহজ কথায়, ইথিরিয়াম ব্লকচেইন এর প্রতিটি ব্লক হলো কিছু মেটাডেটা এবং লেনদেন এর একটি তালিকা। JSON ফরম্যাটে, এটি দেখতে অনেকটা এরকম:
+
+```json
+{
+ "number": 1234567,
+ "hash": "0xabc123...",
+ "parentHash": "0xdef456...",
+ ...,
+ "transactions": [...]
+}
+```
+
+প্রতিটি [ব্লক](/developers/docs/blocks/) এর আগের ব্লকটির একটি রেফারেন্স থাকে; `parentHash` হলো মূলত আগের ব্লকটির হ্যাস।
+
+নোট: ইথিরিয়াম নির্দিষ্ট আকারের মান ("হ্যাস") তৈরি করতে নিয়মিত হ্যাস ফাংশন ব্যবহার করে। ইথিরিয়ামে হ্যাস একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, তবে আপাতত আপনি এগুলোকে ইউনিক আইডি হিসেবে ভাবতে পারেন。
+
+
+
+_একটি ব্লকচেইন মূলত একটি লিংকড লিস্ট; প্রতিটি ব্লকে আগের ব্লকের একটি রেফারেন্স থাকে।_
+
+এই ডেটা স্ট্রাকচারটি নতুন কিছু নয়, তবে নেটওয়ার্ক পরিচালনাকারী নিয়মগুলো (যেমন, পিয়ার-টু-পিয়ার প্রটোকল) নতুন। এখানে কোনো কেন্দ্রীয় কর্তৃপক্ষ নেই; নেটওয়ার্ক টিকিয়ে রাখার জন্য পিয়ারদের নেটওয়ার্ককে অবশ্যই সহযোগিতা করতে হবে এবং পরবর্তী ব্লকে কোন লেনদেন অন্তর্ভুক্ত করা হবে তা নির্ধারণ করতে প্রতিযোগিতা করতে হবে। সুতরাং, আপনি যখন কোনো বন্ধুকে কিছু টাকা পাঠাতে চান, তখন আপনাকে সেই লেনদেনটি নেটওয়ার্ক এ ব্রডকাস্ট করতে হবে, তারপর এটি একটি আসন্ন ব্লকে অন্তর্ভুক্ত হওয়ার জন্য অপেক্ষা করতে হবে।
+
+এক ব্যবহারকারীর কাছ থেকে অন্য ব্যবহারকারীর কাছে সত্যিই টাকা পাঠানো হয়েছে কিনা তা ব্লকচেইন এর যাচাই করার একমাত্র উপায় হলো সেই ব্লকচেইন এর নিজস্ব (অর্থাৎ, তৈরি এবং পরিচালিত) একটি কারেন্সি ব্যবহার করা। ইথিরিয়ামে, এই কারেন্সিকে ইথার বলা হয় এবং ইথিরিয়াম ব্লকচেইন এ একাউন্ট ব্যালেন্সের একমাত্র অফিসিয়াল রেকর্ড থাকে।
+
+## একটি নতুন প্যারাডাইম {#a-new-paradigm}
+
+এই নতুন ডিসেন্ট্রালাইজড টেক স্ট্যাক নতুন ডেভেলপার টুলস তৈরি করেছে। এই ধরনের টুলস অনেক প্রোগ্রামিং ভাষায় বিদ্যমান, তবে আমরা পাইথনের দৃষ্টিকোণ থেকে দেখব। আবারও বলছি: পাইথন আপনার পছন্দের ভাষা না হলেও, এটি অনুসরণ করতে খুব একটা সমস্যা হওয়ার কথা নয়।
+
+যেসব পাইথন ডেভেলপার ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করতে চান, তারা সম্ভবত [Web3.py](https://web3py.readthedocs.io/) ব্যবহার করবেন। Web3.py হলো এমন একটি লাইব্রেরি যা একটি ইথিরিয়াম নোড এর সাথে কানেক্ট করার এবং সেখান থেকে ডেটা পাঠানো ও গ্রহণ করার প্রক্রিয়াকে অনেক সহজ করে দেয়।
+
+নোট: "ইথিরিয়াম নোড" এবং "ইথিরিয়াম ক্লায়েন্ট" শব্দ দুটি একে অপরের পরিপূরক হিসেবে ব্যবহৃত হয়। উভয় ক্ষেত্রেই, এটি এমন একটি সফটওয়্যারকে বোঝায় যা ইথিরিয়াম নেটওয়ার্ক এর একজন অংশগ্রহণকারী চালায়। এই সফটওয়্যারটি ব্লক ডেটা পড়তে পারে, চেইনে নতুন ব্লকস যুক্ত হলে আপডেট পেতে পারে, নতুন লেনদেন ব্রডকাস্ট করতে পারে এবং আরও অনেক কিছু করতে পারে। প্রযুক্তিগতভাবে, ক্লায়েন্ট হলো সফটওয়্যার, আর নোড হলো সেই কম্পিউটার যা সফটওয়্যারটি চালায়。
+
+[ইথিরিয়াম ক্লায়েন্ট](/developers/docs/nodes-and-clients/) গুলোকে [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTP, বা Websockets এর মাধ্যমে পৌঁছানোর জন্য কনফিগার করা যেতে পারে, তাই Web3.py-কেও এই কনফিগারেশনটি মিরর করতে হবে। Web3.py এই কানেকশন অপশনগুলোকে **প্রোভাইডার** হিসেবে উল্লেখ করে। আপনার নোড এর সাথে Web3.py ইনস্ট্যান্স লিঙ্ক করতে আপনি এই তিনটি প্রোভাইডারের মধ্যে একটি বেছে নিতে চাইবেন।
+
+
+
+_একই প্রটোকলের মাধ্যমে যোগাযোগ করার জন্য ইথিরিয়াম নোড এবং Web3.py কনফিগার করুন, যেমন, এই ডায়াগ্রামে IPC।_
+
+Web3.py সঠিকভাবে কনফিগার হয়ে গেলে, আপনি ব্লকচেইন এর সাথে ইন্টারঅ্যাক্ট করা শুরু করতে পারেন। সামনে কী আসতে চলেছে তার একটি প্রিভিউ হিসেবে এখানে Web3.py ব্যবহারের কয়েকটি উদাহরণ দেওয়া হলো:
+
+```python
+# ব্লক ডেটা পড়ুন:
+w3.eth.get_block('latest')
+
+# একটি লেনদেন পাঠান:
+w3.eth.send_transaction({'from': ..., 'to': ..., 'value': ...})
+```
+
+## ইনস্টলেশন {#installation}
+
+এই ওয়াকথ্রুতে, আমরা কেবল একটি পাইথন ইন্টারপ্রেটারের মধ্যে কাজ করব। আমরা কোনো ডিরেক্টরি, ফাইল, ক্লাস বা ফাংশন তৈরি করব না।
+
+নোট: নিচের উদাহরণগুলোতে, যে কমান্ডগুলো `$` দিয়ে শুরু হয় সেগুলো টার্মিনালে চালানোর উদ্দেশ্যে দেওয়া হয়েছে। (`$` টাইপ করবেন না, এটি কেবল লাইনের শুরু নির্দেশ করে।)
+
+প্রথমে, এক্সপ্লোর করার জন্য একটি ইউজার-ফ্রেন্ডলি পরিবেশ পেতে [IPython](https://ipython.org/) ইনস্টল করুন। IPython অন্যান্য ফিচারের পাশাপাশি ট্যাব কমপ্লিশন অফার করে, যা Web3.py এর মধ্যে কী কী করা সম্ভব তা দেখা অনেক সহজ করে তোলে।
+
+```bash
+pip install ipython
+```
+
+Web3.py `web3` নামে পাবলিশ করা হয়েছে। এটি এভাবে ইনস্টল করুন:
+
+```bash
+pip install web3
+```
+
+আরেকটি বিষয় – আমরা পরে একটি ব্লকচেইন সিমুলেট করতে যাচ্ছি, যার জন্য আরও কয়েকটি ডিপেন্ডেন্সি প্রয়োজন। আপনি সেগুলো এর মাধ্যমে ইনস্টল করতে পারেন:
+
+```bash
+pip install 'web3[tester]'
+```
+
+আপনি কাজ শুরু করার জন্য পুরোপুরি প্রস্তুত!
+
+নোট: `web3[tester]` প্যাকেজটি পাইথন 3.10.xx পর্যন্ত কাজ করে।
+
+## একটি স্যান্ডবক্স চালু করুন {#spin-up-a-sandbox}
+
+আপনার টার্মিনালে `ipython` চালিয়ে একটি নতুন পাইথন এনভায়রনমেন্ট খুলুন। এটি `python` চালানোর মতোই, তবে এতে আরও অনেক অতিরিক্ত সুবিধা রয়েছে।
+
+```bash
+ipython
+```
+
+এটি আপনি যে পাইথন এবং IPython ভার্সন চালাচ্ছেন সে সম্পর্কে কিছু তথ্য প্রিন্ট করবে, তারপর আপনি ইনপুটের জন্য অপেক্ষারত একটি প্রম্পট দেখতে পাবেন:
+
+```python
+In [1]:
+```
+
+আপনি এখন একটি ইন্টারেক্টিভ পাইথন শেল দেখছেন। মূলত, এটি কাজ করার জন্য একটি স্যান্ডবক্স। আপনি যদি এতদূর এসে থাকেন, তবে এখন Web3.py ইমপোর্ট করার সময়:
+
+```python
+In [1]: from web3 import Web3
+```
+
+## Web3 মডিউলের পরিচিতি {#introducing-the-web3-module}
+
+ইথিরিয়ামের একটি গেটওয়ে হওয়ার পাশাপাশি, [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) মডিউল কিছু সুবিধাজনক ফাংশন অফার করে। চলুন কয়েকটি এক্সপ্লোর করি।
+
+একটি ইথিরিয়াম অ্যাপ্লিকেশনে, আপনার সাধারণত কারেন্সি ডিনোমিনেশন কনভার্ট করার প্রয়োজন হবে। Web3 মডিউল ঠিক এই কাজের জন্যই কয়েকটি হেল্পার মেথড প্রদান করে: [from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei) এবং [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei)।
+
+
+নোট: কম্পিউটার দশমিক গণিত পরিচালনা করতে বেশ খারাপ। এটি এড়াতে, ডেভেলপাররা প্রায়শই ডলারের পরিমাণ সেন্টে স্টোর করে। উদাহরণস্বরূপ, $5.99 দামের একটি আইটেম ডেটাবেসে 599 হিসেবে স্টোর করা হতে পারে।
+
+ইথার এ লেনদেন পরিচালনা করার সময় একই ধরনের প্যাটার্ন ব্যবহার করা হয়। তবে, দুটি দশমিক বিন্দুর পরিবর্তে, ইথারে 18টি থাকে! ইথারের সবচেয়ে ছোট ডিনোমিনেশনকে wei বলা হয়, তাই লেনদেন পাঠানোর সময় এই মানটিই নির্দিষ্ট করা হয়।
+
+1 ইথার = 1000000000000000000 wei
+
+1 wei = 0.000000000000000001 ইথার
+
+
+
+কিছু মান wei-তে এবং wei থেকে কনভার্ট করার চেষ্টা করুন। মনে রাখবেন যে ইথার এবং wei এর মধ্যে [অনেক ডিনোমিনেশনের নাম রয়েছে](https://web3py.readthedocs.io/en/stable/troubleshooting.html#how-do-i-convert-currency-denominations)। এগুলোর মধ্যে অন্যতম পরিচিত হলো **gwei**, কারণ ট্রানজেকশন ফি প্রায়শই এভাবেই উপস্থাপন করা হয়।
+
+```python
+In [2]: Web3.to_wei(1, 'ether')
+Out[2]: 1000000000000000000
+
+In [3]: Web3.from_wei(500000000, 'gwei')
+Out[3]: Decimal('0.5')
+```
+
+Web3 মডিউলের অন্যান্য ইউটিলিটি মেথডগুলোর মধ্যে রয়েছে ডেটা ফরম্যাট কনভার্টার (যেমন, [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), এডড্রেস হেল্পার (যেমন, [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)), এবং হ্যাস ফাংশন (যেমন, [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak))। এগুলোর অনেকগুলোই সিরিজের পরবর্তী অংশে কভার করা হবে। সমস্ত উপলব্ধ মেথড এবং প্রপার্টি দেখতে, `Web3.` টাইপ করে এবং পিরিয়ডের পরে দুবার ট্যাব কী চেপে IPython এর অটো-কমপ্লিট ব্যবহার করুন।
+
+## চেইনের সাথে কথা বলুন {#talk-to-the-chain}
+
+সুবিধাজনক মেথডগুলো চমৎকার, তবে চলুন ব্লকচেইন এর দিকে এগিয়ে যাই। পরবর্তী ধাপ হলো একটি ইথিরিয়াম নোড এর সাথে যোগাযোগ করার জন্য Web3.py কনফিগার করা। এখানে আমাদের কাছে IPC, HTTP, বা Websocket প্রোভাইডার ব্যবহার করার অপশন রয়েছে।
+
+আমরা এই পথে যাব না, তবে HTTP প্রোভাইডার ব্যবহার করে একটি সম্পূর্ণ ওয়ার্কফ্লোর উদাহরণ দেখতে অনেকটা এরকম হতে পারে:
+
+- একটি ইথিরিয়াম নোড ডাউনলোড করুন, যেমন, [Geth](https://geth.ethereum.org/)।
+- একটি টার্মিনাল উইন্ডোতে Geth চালু করুন এবং এটি নেটওয়ার্ক সিঙ্ক করার জন্য অপেক্ষা করুন। ডিফল্ট HTTP পোর্ট হলো `8545`, তবে এটি কনফিগারযোগ্য।
+- Web3.py-কে `localhost:8545` এ HTTP এর মাধ্যমে নোড এর সাথে কানেক্ট করতে বলুন।
+ `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))`
+- নোড এর সাথে ইন্টারঅ্যাক্ট করতে `w3` ইনস্ট্যান্স ব্যবহার করুন।
+
+যদিও এটি করার একটি "বাস্তব" উপায়, সিঙ্কিং প্রক্রিয়ায় কয়েক ঘণ্টা সময় লাগে এবং আপনি যদি কেবল একটি ডেভেলপমেন্ট এনভায়রনমেন্ট চান তবে এটি অপ্রয়োজনীয়। Web3.py এই উদ্দেশ্যে একটি চতুর্থ প্রোভাইডার, **EthereumTesterProvider** প্রকাশ করে। এই টেস্টার প্রোভাইডারটি শিথিল পারমিশন এবং কাজ করার জন্য ফেক কারেন্সিসহ একটি সিমুলেটেড ইথিরিয়াম নোড এর সাথে লিঙ্ক করে।
+
+
+
+_EthereumTesterProvider একটি সিমুলেটেড নোডের সাথে কানেক্ট করে এবং দ্রুত ডেভেলপমেন্ট এনভায়রনমেন্টের জন্য বেশ সুবিধাজনক।_
+
+সেই সিমুলেটেড নোডটিকে [eth-tester](https://github.com/ethereum/eth-tester) বলা হয় এবং আমরা এটিকে `pip install web3[tester]` কমান্ডের অংশ হিসেবে ইনস্টল করেছি। এই টেস্টার প্রোভাইডার ব্যবহার করার জন্য Web3.py কনফিগার করা খুবই সহজ:
+
+```python
+In [4]: w3 = Web3(Web3.EthereumTesterProvider())
+```
+
+এখন আপনি চেইনে সার্ফ করার জন্য প্রস্তুত! যদিও মানুষ এমনটা বলে না। আমি এইমাত্র এটা বানালাম। চলুন একটি দ্রুত ট্যুর দেওয়া যাক।
+
+## দ্রুত ট্যুর {#the-quick-tour}
+
+প্রথমেই, একটি স্যানিটি চেক:
+
+```python
+In [5]: w3.is_connected()
+Out[5]: True
+```
+
+যেহেতু আমরা টেস্টার প্রোভাইডার ব্যবহার করছি, তাই এটি খুব একটা মূল্যবান টেস্ট নয়, তবে যদি এটি ফেইল করে, তবে সম্ভবত আপনি `w3` ভেরিয়েবল ইনস্ট্যানশিয়েট করার সময় ভুল কিছু টাইপ করেছেন। আপনি ভেতরের বন্ধনীগুলো অন্তর্ভুক্ত করেছেন কিনা তা দুবার চেক করুন, অর্থাৎ, `Web3.EthereumTesterProvider()`।
+
+## ট্যুর স্টপ #1: [একাউন্ট](/developers/docs/accounts/) {#tour-stop-1-accounts}
+
+সুবিধার জন্য, টেস্টার প্রোভাইডার কিছু একাউন্ট তৈরি করেছে এবং সেগুলোতে টেস্ট ইথার প্রিলোড করেছে।
+
+প্রথমে, চলুন সেই একাউন্টগুলোর একটি তালিকা দেখি:
+
+```python
+In [6]: w3.eth.accounts
+Out[6]: ['0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
+ '0x2B5AD5c4795c026514f8317c7a215E218DcCD6cF',
+ '0x6813Eb9362372EEF6200f3b1dbC3f819671cBA69', ...]
+```
+
+আপনি যদি এই কমান্ডটি চালান, তবে আপনার দশটি স্ট্রিংয়ের একটি তালিকা দেখা উচিত যা `0x` দিয়ে শুরু হয়। এর প্রতিটি হলো একটি **পাবলিক এডড্রেস** এবং এটি কোনো না কোনোভাবে একটি চেকিং একাউন্টের একাউন্ট নম্বরের মতো। কেউ আপনাকে ইথার পাঠাতে চাইলে আপনি তাকে এই এডড্রেসটি প্রদান করবেন।
+
+যেমনটি উল্লেখ করা হয়েছে, টেস্টার প্রোভাইডার এই প্রতিটি একাউন্টে কিছু টেস্ট ইথার প্রিলোড করেছে। চলুন জেনে নিই প্রথম একাউন্টে কত আছে:
+
+```python
+In [7]: w3.eth.get_balance(w3.eth.accounts[0])
+Out[7]: 1000000000000000000000000
+```
+
+অনেকগুলো শূন্য! ফেক ব্যাংকে যাওয়ার আগে, কারেন্সি ডিনোমিনেশন সম্পর্কে আগের সেই লেসনটি মনে করুন। ইথারের মানগুলো সবচেয়ে ছোট ডিনোমিনেশন, wei-তে উপস্থাপন করা হয়। এটিকে ইথারে কনভার্ট করুন:
+
+```python
+In [8]: w3.from_wei(1000000000000000000000000, 'ether')
+Out[8]: Decimal('1000000')
+```
+
+এক মিলিয়ন টেস্ট ইথার — এখনও খুব একটা খারাপ নয়।
+
+## ট্যুর স্টপ #2: ব্লক ডেটা {#tour-stop-2-block-data}
+
+চলুন এই সিমুলেটেড ব্লকচেইন এর স্টেট একবার দেখে নিই:
+
+```python
+In [9]: w3.eth.get_block('latest')
+Out[9]: AttributeDict({
+ 'number': 0,
+ 'hash': HexBytes('0x9469878...'),
+ 'parentHash': HexBytes('0x0000000...'),
+ ...
+ 'transactions': []
+})
+```
+
+একটি ব্লক সম্পর্কে অনেক তথ্য রিটার্ন করা হয়, তবে এখানে কেবল কয়েকটি বিষয় উল্লেখ করা হলো:
+
+- ব্লক নম্বর হলো শূন্য — আপনি যত আগেই টেস্টার প্রোভাইডার কনফিগার করুন না কেন। আসল ইথিরিয়াম নেটওয়ার্ক এর মতো, যা প্রতি 12 সেকেন্ডে একটি নতুন ব্লক যোগ করে, এই সিমুলেশনটি ততক্ষণ অপেক্ষা করবে যতক্ষণ না আপনি এটিকে কোনো কাজ দেন।
+- `transactions` হলো একটি খালি তালিকা, একই কারণে: আমরা এখনও কিছু করিনি। এই প্রথম ব্লকটি হলো একটি **খালি ব্লক**, কেবল চেইনটি শুরু করার জন্য।
+- খেয়াল করুন যে `parentHash` হলো কেবল একগুচ্ছ খালি বাইট। এটি নির্দেশ করে যে এটি চেইনের প্রথম ব্লক, যা **জেনেসিস ব্লক** নামেও পরিচিত।
+
+## ট্যুর স্টপ #3: [লেনদেন](/developers/docs/transactions/) {#tour-stop-3-transactions}
+
+পেন্ডিং লেনদেন না হওয়া পর্যন্ত আমরা ব্লক শূন্যতেই আটকে আছি, তাই চলুন একটি লেনদেন করি। এক একাউন্ট থেকে অন্য একাউন্টে কিছু টেস্ট ইথার পাঠান:
+
+```python
+In [10]: tx_hash = w3.eth.send_transaction({
+ 'from': w3.eth.accounts[0],
+ 'to': w3.eth.accounts[1],
+ 'value': w3.to_wei(3, 'ether'),
+ 'gas': 21000
+})
+```
+
+সাধারণত এই পর্যায়ে আপনার লেনদেনটি একটি নতুন ব্লকে অন্তর্ভুক্ত হওয়ার জন্য আপনাকে কয়েক সেকেন্ড অপেক্ষা করতে হবে। সম্পূর্ণ প্রক্রিয়াটি অনেকটা এরকম:
+
+1. একটি লেনদেন সাবমিট করুন এবং ট্রানজেকশন হ্যাস ধরে রাখুন। লেনদেন ধারণকারী ব্লকটি তৈরি এবং ব্রডকাস্ট না হওয়া পর্যন্ত, লেনদেনটি "পেন্ডিং" থাকে।
+ `tx_hash = w3.eth.send_transaction({ … })`
+2. লেনদেনটি একটি ব্লকে অন্তর্ভুক্ত হওয়ার জন্য অপেক্ষা করুন:
+ `w3.eth.wait_for_transaction_receipt(tx_hash)`
+3. অ্যাপ্লিকেশন লজিক চালিয়ে যান। সফল লেনদেন দেখতে:
+ `w3.eth.get_transaction(tx_hash)`
+
+আমাদের সিমুলেটেড এনভায়রনমেন্ট তাৎক্ষণিকভাবে একটি নতুন ব্লকে লেনদেনটি যোগ করবে, তাই আমরা সাথে সাথেই লেনদেনটি দেখতে পারি:
+
+```python
+In [11]: w3.eth.get_transaction(tx_hash)
+Out[11]: AttributeDict({
+ 'hash': HexBytes('0x15e9fb95dc39...'),
+ 'blockNumber': 1,
+ 'transactionIndex': 0,
+ 'from': '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
+ 'to': '0x2B5AD5c4795c026514f8317c7a215E218DcCD6cF',
+ 'value': 3000000000000000000,
+ ...
+})
+```
+
+আপনি এখানে কিছু পরিচিত বিবরণ দেখতে পাবেন: `from`, `to`, এবং `value` ফিল্ডগুলো আমাদের `send_transaction` কলের ইনপুটগুলোর সাথে মিলে যাওয়া উচিত। আরেকটি আশ্বস্ত করার মতো বিষয় হলো যে এই লেনদেনটি 1 নম্বর ব্লকের মধ্যে প্রথম লেনদেন (`'transactionIndex': 0`) হিসেবে অন্তর্ভুক্ত করা হয়েছিল।
+
+আমরা জড়িত দুটি একাউন্টের ব্যালেন্স চেক করেও সহজেই এই লেনদেনের সফলতা যাচাই করতে পারি। তিন ইথার এক একাউন্ট থেকে অন্য একাউন্টে স্থানান্তরিত হওয়া উচিত।
+
+```python
+In [12]: w3.eth.get_balance(w3.eth.accounts[0])
+Out[12]: 999996999979000000000000
+
+In [13]: w3.eth.get_balance(w3.eth.accounts[1])
+Out[13]: 1000003000000000000000000
+```
+
+পরেরটি ঠিক আছে বলে মনে হচ্ছে! ব্যালেন্স 1,000,000 থেকে 1,000,003 ইথারে গেছে। কিন্তু প্রথম একাউন্টের কী হলো? মনে হচ্ছে এটি তিন ইথারের চেয়ে সামান্য বেশি হারিয়েছে। হায়, জীবনে কোনো কিছুই বিনামূল্যে পাওয়া যায় না, এবং ইথিরিয়াম পাবলিক নেটওয়ার্ক ব্যবহার করার জন্য আপনাকে আপনার পিয়ারদের তাদের সমর্থনমূলক ভূমিকার জন্য ক্ষতিপূরণ দিতে হবে। যে একাউন্টটি লেনদেন সাবমিট করেছে তার থেকে একটি ছোট ট্রানজেকশন ফি কেটে নেওয়া হয়েছে - এই ফি হলো পোড়ানো গ্যাস এর পরিমাণ (একটি ETH ট্রান্সফারের জন্য 21000 ইউনিট গ্যাস) গুণিতক একটি বেস ফি যা নেটওয়ার্ক অ্যাক্টিভিটি অনুযায়ী পরিবর্তিত হয় এবং একটি টিপ যা সেই ভ্যালিডেটর এর কাছে যায় যে লেনদেনটিকে একটি ব্লকে অন্তর্ভুক্ত করে।
+
+[গ্যাস](/developers/docs/gas/#post-london) সম্পর্কে আরও জানুন
+
+নোট: পাবলিক নেটওয়ার্ক এ, নেটওয়ার্ক এর চাহিদা এবং আপনি কত দ্রুত একটি লেনদেন প্রসেস করতে চান তার ওপর ভিত্তি করে ট্রানজেকশন ফি পরিবর্তনশীল। আপনি যদি ফি কীভাবে গণনা করা হয় তার একটি ব্রেকডাউন জানতে আগ্রহী হন, তবে কীভাবে লেনদেন একটি ব্লকে অন্তর্ভুক্ত করা হয় সে সম্পর্কে আমার আগের পোস্টটি দেখুন。
+
+## এবং শ্বাস নিন {#and-breathe}
+
+আমরা বেশ কিছুক্ষণ ধরে এটি নিয়ে কাজ করছি, তাই বিরতি নেওয়ার জন্য এটি একটি ভালো জায়গা বলে মনে হচ্ছে। এই যাত্রা চলতেই থাকবে, এবং আমরা এই সিরিজের দ্বিতীয় পর্বে এক্সপ্লোর করা চালিয়ে যাব। সামনে যে কনসেপ্টগুলো আসবে: একটি আসল নোড এর সাথে কানেক্ট করা, স্মার্ট কন্ট্রাক্ট, এবং টোকেন। কোনো ফলো-আপ প্রশ্ন আছে? আমাকে জানান! আপনার ফিডব্যাক প্রভাবিত করবে যে আমরা এখান থেকে কোথায় যাব। [Twitter](https://twitter.com/wolovim) এর মাধ্যমে রিকোয়েস্ট স্বাগত।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/ai-trading-agent/index.md b/public/content/translations/bn/developers/tutorials/ai-trading-agent/index.md
index 27730f4807f..ff9d550fb07 100644
--- a/public/content/translations/bn/developers/tutorials/ai-trading-agent/index.md
+++ b/public/content/translations/bn/developers/tutorials/ai-trading-agent/index.md
@@ -1,59 +1,60 @@
---
-title: "ইথেরিয়ামে আপনার নিজস্ব AI ট্রেডিং এজেন্ট তৈরি করুন"
-description: "এই টিউটোরিয়ালে আপনি একটি সহজ AI ট্রেডিং এজেন্ট কীভাবে তৈরি করতে হয় তা শিখবেন। এই এজেন্টটি ব্লকচেইন থেকে তথ্য পড়ে, সেই তথ্যের উপর ভিত্তি করে একটি LLM-এর কাছে সুপারিশ চায়, LLM-এর সুপারিশকৃত ট্রেডটি সম্পাদন করে এবং তারপর অপেক্ষা করে ও পুনরাবৃত্তি করে।"
-author: Ori Pomerantz
-tags: [ "AI", "ট্রেডিং", "এজেন্ট", "python" ]
+title: ইথিরিয়ামে আপনার নিজস্ব AI ট্রেডিং এজেন্ট তৈরি করুন
+description: এই টিউটোরিয়ালে আপনি শিখবেন কীভাবে একটি সাধারণ AI ট্রেডিং এজেন্ট তৈরি করতে হয়। এই এজেন্ট ব্লকচেইন থেকে তথ্য পড়ে, সেই তথ্যের উপর ভিত্তি করে একটি LLM-এর কাছে সুপারিশ চায়, LLM-এর সুপারিশ অনুযায়ী ট্রেড করে এবং তারপর অপেক্ষা করে ও পুনরাবৃত্তি করে।
+author: ওরি পোমেরান্টজ
+tags: ["AI", "ট্রেডিং", "এজেন্ট", "python"]
skill: intermediate
+breadcrumb: AI ট্রেডিং এজেন্ট
published: 2026-02-13
lang: bn
sidebarDepth: 3
---
-এই টিউটোরিয়ালে আপনি একটি সহজ AI ট্রেডিং এজেন্ট কীভাবে তৈরি করতে হয় তা শিখবেন। এই এজেন্টটি এই ধাপগুলো ব্যবহার করে কাজ করে:
+এই টিউটোরিয়ালে আপনি শিখবেন কীভাবে একটি সাধারণ AI ট্রেডিং এজেন্ট তৈরি করতে হয়। এই এজেন্ট নিচের ধাপগুলো ব্যবহার করে কাজ করে:
-1. একটি টোকেনের বর্তমান এবং অতীতের মূল্য, সেইসাথে অন্যান্য সম্ভাব্য প্রাসঙ্গিক তথ্য পড়ুন
-2. এই তথ্যের সাথে একটি কোয়েরি তৈরি করুন, সাথে ব্যাকগ্রাউন্ড তথ্য যোগ করে ব্যাখ্যা করুন যে এটি কীভাবে প্রাসঙ্গিক হতে পারে
-3. কোয়েরি জমা দিন এবং একটি অনুমানিত মূল্য ফেরত পান
-4. সুপারিশের ভিত্তিতে ট্রেড করুন
-5. অপেক্ষা করুন এবং পুনরাবৃত্তি করুন
+1. একটি টোকেন-এর বর্তমান এবং অতীতের দাম, সেইসাথে অন্যান্য সম্ভাব্য প্রাসঙ্গিক তথ্য পড়া
+2. এই তথ্যগুলোর সাথে ব্যাকগ্রাউন্ড তথ্য যুক্ত করে একটি কোয়েরি তৈরি করা, যাতে বোঝানো যায় এটি কীভাবে প্রাসঙ্গিক হতে পারে
+3. কোয়েরি জমা দেওয়া এবং একটি সম্ভাব্য দাম ফেরত পাওয়া
+4. সুপারিশের উপর ভিত্তি করে ট্রেড করা
+5. অপেক্ষা করা এবং পুনরাবৃত্তি করা
-এই এজেন্টটি দেখায় কীভাবে তথ্য পড়তে হয়, এটিকে একটি কোয়েরিতে রূপান্তর করতে হয় যা একটি ব্যবহারযোগ্য উত্তর দেয় এবং সেই উত্তরটি ব্যবহার করতে হয়। এগুলো সবই একটি AI এজেন্টের জন্য প্রয়োজনীয় ধাপ। এই এজেন্টটি Python-এ প্রয়োগ করা হয়েছে কারণ এটি AI-তে ব্যবহৃত সবচেয়ে সাধারণ ভাষা।
+এই এজেন্টটি দেখায় কীভাবে তথ্য পড়তে হয়, সেটিকে একটি কোয়েরিতে রূপান্তর করতে হয় যা একটি ব্যবহারযোগ্য উত্তর দেয় এবং সেই উত্তরটি ব্যবহার করতে হয়। এগুলোর সবগুলোই একটি AI এজেন্টের জন্য প্রয়োজনীয় ধাপ। এই এজেন্টটি Python-এ তৈরি করা হয়েছে কারণ এটি AI-তে ব্যবহৃত সবচেয়ে সাধারণ ভাষা।
-## এটা কেন করবেন? {#why-do-this}
+## এটি কেন করবেন? {#why-do-this}
-স্বয়ংক্রিয় ট্রেডিং এজেন্ট ডেভেলপারদের একটি ট্রেডিং কৌশল নির্বাচন এবং কার্যকর করার সুযোগ দেয়। [AI এজেন্ট](/ai-agents) আরও জটিল এবং গতিশীল ট্রেডিং কৌশলের সুযোগ দেয়, সম্ভাব্যভাবে এমন তথ্য এবং অ্যালগরিদম ব্যবহার করে যা ডেভেলপার ব্যবহার করার কথাও ভাবেনি।
+স্বয়ংক্রিয় ট্রেডিং এজেন্ট ডেভেলপারদের একটি ট্রেডিং কৌশল নির্বাচন এবং কার্যকর করার সুযোগ দেয়। [AI এজেন্ট](/ai-agents) আরও জটিল এবং ডাইনামিক ট্রেডিং কৌশলের সুযোগ দেয়, যা সম্ভাব্যভাবে এমন তথ্য এবং এ্যালগরিদম ব্যবহার করে যা ডেভেলপার হয়তো ব্যবহারের কথা ভাবেনওনি।
## টুলস {#tools}
-এই টিউটোরিয়ালটি কোট এবং ট্রেডিংয়ের জন্য [Python](https://www.python.org/), [Web3 লাইব্রেরি](https://web3py.readthedocs.io/en/stable/) এবং [Uniswap v3](https://github.com/Uniswap/v3-periphery) ব্যবহার করে।
+এই টিউটোরিয়ালে কোট (quotes) এবং ট্রেডিংয়ের জন্য [Python](https://www.python.org/), [Web3 লাইব্রেরি](https://web3py.readthedocs.io/en/stable/) এবং [Uniswap v3](https://github.com/Uniswap/v3-periphery) ব্যবহার করা হয়েছে।
### কেন Python? {#python}
-AI-এর জন্য সবচেয়ে বেশি ব্যবহৃত ভাষা হল [Python](https://www.python.org/), তাই আমরা এখানে এটি ব্যবহার করেছি। আপনি Python না জানলেও চিন্তা করবেন না। ভাষাটি খুব স্পষ্ট, এবং আমি ব্যাখ্যা করব এটি ঠিক কী করে।
+AI-এর জন্য সবচেয়ে বেশি ব্যবহৃত ভাষা হলো [Python](https://www.python.org/), তাই আমরা এখানে এটি ব্যবহার করছি। আপনি যদি Python না জানেন তবে চিন্তা করবেন না। ভাষাটি খুব স্পষ্ট, এবং এটি ঠিক কী করে তা আমি ব্যাখ্যা করব।
-[Web3 লাইব্রেরি](https://web3py.readthedocs.io/en/stable/) হল সবচেয়ে সাধারণ Python ইথেরিয়াম API। এটি ব্যবহার করা বেশ সহজ।
+[Web3 লাইব্রেরি](https://web3py.readthedocs.io/en/stable/) হলো সবচেয়ে সাধারণ Python ইথিরিয়াম API। এটি ব্যবহার করা বেশ সহজ।
-### ব্লকচেইনে ট্রেডিং {#trading-on-blockchain}
+### ব্লকচেইন-এ ট্রেডিং {#trading-on-blockchain}
-[অনেক ডিস্ট্রিবিউটেড এক্সচেঞ্জ (DEX)](/apps/categories/defi/) আছে যা আপনাকে ইথেরিয়ামে টোকেন ট্রেড করার সুযোগ দেয়। তবে, [আর্বিট্রেজ](/developers/docs/smart-contracts/composability/#better-user-experience)-এর কারণে তাদের এক্সচেঞ্জ রেট প্রায় একই রকম থাকে।
+এমন [অনেক ডিস্ট্রিবিউটেড এক্সচেঞ্জ (DEX)](/apps/categories/defi/) রয়েছে যা আপনাকে ইথিরিয়ামে টোকেন ট্রেড করতে দেয়। তবে, [আর্বিট্রেজ](/developers/docs/smart-contracts/composability/#better-user-experience)-এর কারণে এগুলোর এক্সচেঞ্জ রেট প্রায় একই রকম হয়ে থাকে।
-[Uniswap](https://app.uniswap.org/) একটি বহুল ব্যবহৃত DEX যা আমরা কোট (টোকেনের আপেক্ষিক মান দেখতে) এবং ট্রেড উভয়ের জন্য ব্যবহার করতে পারি।
+[Uniswap](https://app.uniswap.org/) হলো একটি বহুল ব্যবহৃত DEX যা আমরা কোট (টোকেনের আপেক্ষিক মান দেখতে) এবং ট্রেড উভয়ের জন্যই ব্যবহার করতে পারি।
### OpenAI {#openai}
-একটি বড় ল্যাঙ্গুয়েজ মডেলের জন্য, আমি [OpenAI](https://openai.com/) দিয়ে শুরু করতে চেয়েছি। এই টিউটোরিয়ালের অ্যাপ্লিকেশনটি চালানোর জন্য আপনাকে API অ্যাক্সেসের জন্য অর্থপ্রদান করতে হবে। $5-এর ন্যূনতম পেমেন্ট যথেষ্টর চেয়েও বেশি।
+একটি লার্জ ল্যাঙ্গুয়েজ মডেলের জন্য, আমি [OpenAI](https://openai.com/) দিয়ে শুরু করার সিদ্ধান্ত নিয়েছি। এই টিউটোরিয়ালের অ্যাপ্লিকেশনটি চালানোর জন্য আপনাকে API অ্যাক্সেসের জন্য অর্থ প্রদান করতে হবে। ন্যূনতম $5 পেমেন্ট এর জন্য যথেষ্টর চেয়েও বেশি।
## ডেভেলপমেন্ট, ধাপে ধাপে {#step-by-step}
-ডেভেলপমেন্টকে সহজ করার জন্য, আমরা ধাপে ধাপে এগোব। প্রতিটি ধাপ GitHub-এর একটি ব্রাঞ্চ।
+ডেভেলপমেন্ট সহজ করার জন্য, আমরা ধাপে ধাপে এগিয়ে যাব। প্রতিটি ধাপ হলো GitHub-এর একটি ব্রাঞ্চ।
-### শুরু করা যাক {#getting-started}
+### শুরু করা {#getting-started}
-UNIX বা Linux-এর অধীনে শুরু করার জন্য কিছু ধাপ রয়েছে (এর মধ্যে [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) অন্তর্ভুক্ত)
+UNIX বা Linux-এর (যার মধ্যে [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) অন্তর্ভুক্ত) অধীনে শুরু করার জন্য কিছু ধাপ রয়েছে:
-1. আপনার কাছে যদি এটি আগে থেকে না থাকে, তাহলে [Python](https://www.python.org/downloads/) ডাউনলোড এবং ইনস্টল করুন।
+1. যদি আপনার কাছে আগে থেকে না থাকে, তবে [Python](https://www.python.org/downloads/) ডাউনলোড এবং ইনস্টল করুন।
-2. GitHub রিপোজিটরিটি ক্লোন করুন।
+2. GitHub রিপোজিটরি ক্লোন করুন।
```sh
git clone https://github.com/qbzzt/260215-ai-agent.git -b 01-getting-started
@@ -72,13 +73,13 @@ UNIX বা Linux-এর অধীনে শুরু করার জন্য
uv sync
```
-5. ভার্চুয়াল এনভায়রনমেন্ট সক্রিয় করুন।
+5. ভার্চুয়াল এনভায়রনমেন্ট অ্যাক্টিভেট করুন।
```sh
source .venv/bin/activate
```
-6. Python এবং Web3 সঠিকভাবে কাজ করছে কিনা তা যাচাই করতে, `python3` চালান এবং এটিকে এই প্রোগ্রামটি সরবরাহ করুন। আপনি এটি `>>>` প্রম্পটে প্রবেশ করতে পারেন; একটি ফাইল তৈরি করার প্রয়োজন নেই।
+6. Python এবং Web3 সঠিকভাবে কাজ করছে কিনা তা যাচাই করতে, `python3` রান করুন এবং এতে এই প্রোগ্রামটি দিন। আপনি এটি `>>>` প্রম্পটে লিখতে পারেন; কোনো ফাইল তৈরি করার প্রয়োজন নেই।
```python
from web3 import Web3
@@ -90,16 +91,16 @@ UNIX বা Linux-এর অধীনে শুরু করার জন্য
### ব্লকচেইন থেকে পড়া {#read-blockchain}
-পরবর্তী ধাপ হল ব্লকচেইন থেকে পড়া। এটি করার জন্য, আপনাকে `02-read-quote` ব্রাঞ্চে পরিবর্তন করতে হবে এবং তারপর প্রোগ্রামটি চালানোর জন্য `uv` ব্যবহার করতে হবে।
+পরবর্তী ধাপ হলো ব্লকচেইন থেকে পড়া। এটি করার জন্য, আপনাকে `02-read-quote` ব্রাঞ্চে যেতে হবে এবং তারপর প্রোগ্রামটি রান করতে `uv` ব্যবহার করতে হবে।
```sh
git checkout 02-read-quote
uv run agent.py
```
-আপনার একটি `Quote` অবজেক্টের তালিকা পাওয়া উচিত, প্রতিটিতে একটি টাইমস্ট্যাম্প, একটি মূল্য এবং অ্যাসেট (বর্তমানে সবসময় `WETH/USDC`) থাকবে।
+আপনি `Quote` অবজেক্টের একটি তালিকা পাবেন, যার প্রতিটিতে একটি টাইমস্ট্যাম্প, একটি দাম এবং অ্যাসেট (বর্তমানে সর্বদা `WETH/USDC`) থাকবে।
-এখানে একটি লাইন-বাই-লাইন ব্যাখ্যা দেওয়া হলো।
+এখানে লাইন-বাই-লাইন ব্যাখ্যা দেওয়া হলো।
```python
from web3 import Web3
@@ -113,19 +114,19 @@ import functools
import sys
```
-আমাদের প্রয়োজনীয় লাইব্রেরিগুলি আমদানি করুন। এগুলি ব্যবহার করার সময় নীচে ব্যাখ্যা করা হয়েছে।
+আমাদের প্রয়োজনীয় লাইব্রেরিগুলো ইমপোর্ট করুন। এগুলো যখন ব্যবহার করা হবে তখন নিচে ব্যাখ্যা করা হবে।
```python
print = functools.partial(print, flush=True)
```
-Python-এর `print`-কে এমন একটি সংস্করণ দিয়ে প্রতিস্থাপন করে যা সবসময় অবিলম্বে আউটপুট ফ্লাশ করে। এটি একটি দীর্ঘ-চলমান স্ক্রিপ্টে উপযোগী কারণ আমরা স্ট্যাটাস আপডেট বা ডিবাগিং আউটপুটের জন্য অপেক্ষা করতে চাই না।
+Python-এর `print`-কে এমন একটি ভার্সন দিয়ে প্রতিস্থাপন করে যা সর্বদা আউটপুট সাথে সাথে ফ্লাশ করে। এটি একটি দীর্ঘ সময় ধরে চলা স্ক্রিপ্টে দরকারী কারণ আমরা স্ট্যাটাস আপডেট বা ডিবাগিং আউটপুটের জন্য অপেক্ষা করতে চাই না।
```python
MAINNET_URL = "https://eth.drpc.org"
```
-মেইননেটে যাওয়ার জন্য একটি URL। আপনি [নোড অ্যাজ এ সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service/) থেকে একটি পেতে পারেন বা [Chainlist](https://chainlist.org/chain/1)-এ বিজ্ঞাপিত একটি ব্যবহার করতে পারেন।
+মেইননেট-এ যাওয়ার জন্য একটি URL। আপনি [নোড অ্যাজ এ সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service/) থেকে একটি পেতে পারেন অথবা [Chainlist](https://chainlist.org/chain/1)-এ বিজ্ঞাপিত যেকোনো একটি ব্যবহার করতে পারেন।
```python
BLOCK_TIME_SECONDS = 12
@@ -134,20 +135,20 @@ HOUR_BLOCKS = MINUTE_BLOCKS * 60
DAY_BLOCKS = HOUR_BLOCKS * 24
```
-একটি ইথেরিয়াম মেইননেট ব্লক সাধারণত প্রতি বারো সেকেন্ডে ঘটে, তাই এগুলি হল ব্লকের সংখ্যা যা আমরা একটি সময়কালে ঘটার আশা করি। লক্ষ্য করুন যে এটি একটি সঠিক সংখ্যা নয়। যখন [ব্লক প্রস্তাবক](/developers/docs/consensus-mechanisms/pos/block-proposal/) ডাউন থাকে, তখন সেই ব্লকটি এড়িয়ে যাওয়া হয় এবং পরবর্তী ব্লকের জন্য সময় হল 24 সেকেন্ড। আমরা যদি একটি টাইমস্ট্যাম্পের জন্য সঠিক ব্লক পেতে চাই, তাহলে আমরা [বাইনারি সার্চ](https://en.wikipedia.org/wiki/Binary_search) ব্যবহার করব। তবে, এটি আমাদের উদ্দেশ্যের জন্য যথেষ্ট কাছাকাছি। ভবিষ্যদ্বাণী করা কোনো সঠিক বিজ্ঞান নয়।
+একটি ইথিরিয়াম মেইননেট ব্লক সাধারণত প্রতি বারো সেকেন্ডে তৈরি হয়, তাই একটি নির্দিষ্ট সময়ের মধ্যে আমরা এই সংখ্যক ব্লক আশা করতে পারি। মনে রাখবেন যে এটি কোনো সঠিক সংখ্যা নয়। যখন [ব্লক প্রপোজার](/developers/docs/consensus-mechanisms/pos/block-proposal/) ডাউন থাকে, তখন সেই ব্লকটি বাদ দেওয়া হয় এবং পরবর্তী ব্লকের জন্য সময় হয় 24 সেকেন্ড। আমরা যদি একটি টাইমস্ট্যাম্পের জন্য সঠিক ব্লকটি পেতে চাই, তবে আমরা [বাইনারি সার্চ](https://en.wikipedia.org/wiki/Binary_search) ব্যবহার করব। তবে, আমাদের উদ্দেশ্যের জন্য এটি যথেষ্ট কাছাকাছি। ভবিষ্যৎবাণী করা কোনো নিখুঁত বিজ্ঞান নয়।
```python
CYCLE_BLOCKS = DAY_BLOCKS
```
-চক্রের আকার। আমরা প্রতি চক্রে একবার কোট পর্যালোচনা করি এবং পরবর্তী চক্রের শেষে মান অনুমান করার চেষ্টা করি।
+সাইকেলের আকার। আমরা প্রতি সাইকেলে একবার কোটগুলো পর্যালোচনা করি এবং পরবর্তী সাইকেলের শেষে মান অনুমান করার চেষ্টা করি।
```python
-# আমরা যে পুলটি পড়ছি তার অ্যাড্রেস
+# আমরা যে পুলটি পড়ছি তার ঠিকানা
WETHUSDC_ADDRESS = Web3.to_checksum_address("0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640")
```
-কোট মানগুলি Uniswap 3 USDC/WETH পুল থেকে [`0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640`](https://eth.blockscout.com/address/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?tab=read_write_contract) অ্যাড্রেসে নেওয়া হয়েছে। এই অ্যাড্রেসটি ইতিমধ্যেই চেকসাম ফর্মে আছে, কিন্তু কোডটিকে পুনঃব্যবহারযোগ্য করতে [`Web3.to_checksum_address`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_checksum_address) ব্যবহার করা ভাল।
+কোটের মানগুলো এডড্রেস [`0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640`](https://eth.blockscout.com/address/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?tab=read_write_contract)-এ থাকা Uniswap 3 USDC/WETH পুল থেকে নেওয়া হয়েছে। এই এডড্রেসটি আগে থেকেই চেকসাম ফর্মে আছে, তবে কোডটি পুনরায় ব্যবহারযোগ্য করার জন্য [`Web3.to_checksum_address`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_checksum_address) ব্যবহার করা ভালো।
```python
POOL_ABI = [
@@ -162,13 +163,13 @@ ERC20_ABI = [
]
```
-এগুলো হল দুটি কন্ট্র্যাক্টের [ABI](https://docs.soliditylang.org/en/latest/abi-spec.html) যার সাথে আমাদের যোগাযোগ করতে হবে। কোডটি সংক্ষিপ্ত রাখতে, আমরা শুধুমাত্র সেই ফাংশনগুলো অন্তর্ভুক্ত করি যা আমাদের কল করতে হবে।
+এগুলো হলো সেই দুটি কন্ট্রাক্টের [ABIs](https://docs.soliditylang.org/en/latest/abi-spec.html) যাদের সাথে আমাদের যোগাযোগ করতে হবে। কোডটি সংক্ষিপ্ত রাখার জন্য, আমরা কেবল সেই ফাংশনগুলো অন্তর্ভুক্ত করেছি যেগুলো আমাদের কল করতে হবে।
```python
w3 = Web3(Web3.HTTPProvider(MAINNET_URL))
```
-[`Web3`](https://web3py.readthedocs.io/en/stable/quickstart.html#remote-providers) লাইব্রেরি শুরু করুন এবং একটি ইথেরিয়াম নোডের সাথে সংযোগ স্থাপন করুন।
+[`Web3`](https://web3py.readthedocs.io/en/stable/quickstart.html#remote-providers) লাইব্রেরি ইনিশিয়েট করুন এবং একটি ইথিরিয়াম নোড-এর সাথে কানেক্ট করুন।
```python
@dataclass(frozen=True)
@@ -179,9 +180,9 @@ class ERC20Token:
contract: Contract
```
-এটি Python-এ একটি ডেটা ক্লাস তৈরি করার একটি উপায়। কন্ট্র্যাক্টের সাথে সংযোগ স্থাপন করতে [`Contract`](https://web3py.readthedocs.io/en/stable/web3.contract.html) ডেটা টাইপ ব্যবহার করা হয়। ` (frozen=True)` লক্ষ্য করুন। Python-এ [বুলিয়ান](https://en.wikipedia.org/wiki/Boolean_data_type)-কে `True` বা `False` হিসেবে সংজ্ঞায়িত করা হয়, যা ক্যাপিটালাইজড। এই ডেটা ক্লাসটি `frozen`, যার মানে ফিল্ডগুলি পরিবর্তন করা যাবে না।
+Python-এ ডেটা ক্লাস তৈরি করার এটি একটি উপায়। কন্ট্রাক্টের সাথে কানেক্ট করার জন্য [`Contract`](https://web3py.readthedocs.io/en/stable/web3.contract.html) ডেটা টাইপ ব্যবহার করা হয়। `(frozen=True)` লক্ষ্য করুন। Python-এ [বুলিয়ানগুলো](https://en.wikipedia.org/wiki/Boolean_data_type) `True` বা `False` হিসেবে সংজ্ঞায়িত করা হয়, যার প্রথম অক্ষর বড় হাতের হয়। এই ডেটা ক্লাসটি `frozen`, যার মানে এর ফিল্ডগুলো পরিবর্তন করা যাবে না।
-ইনডেনটেশন লক্ষ্য করুন। [C-থেকে উদ্ভূত ভাষা](https://en.wikipedia.org/wiki/List_of_C-family_programming_languages)-এর বিপরীতে, Python ব্লক বোঝাতে ইনডেনটেশন ব্যবহার করে। Python ইন্টারপ্রেটার জানে যে নিম্নলিখিত সংজ্ঞাটি এই ডেটা ক্লাসের অংশ নয় কারণ এটি ডেটা ক্লাসের ফিল্ডগুলির মতো একই ইনডেনটেশন থেকে শুরু হয় না।
+ইনডেন্টেশন লক্ষ্য করুন। [C-ভিত্তিক ভাষাগুলোর](https://en.wikipedia.org/wiki/List_of_C-family_programming_languages) বিপরীতে, Python ব্লক বোঝাতে ইনডেন্টেশন ব্যবহার করে। Python ইন্টারপ্রেটার জানে যে পরবর্তী সংজ্ঞাটি এই ডেটা ক্লাসের অংশ নয় কারণ এটি ডেটা ক্লাসের ফিল্ডগুলোর মতো একই ইনডেন্টেশনে শুরু হয়নি।
```python
@dataclass(frozen=True)
@@ -194,44 +195,44 @@ class PoolInfo:
decimal_factor: Decimal = 1
```
-দশমিক ভগ্নাংশ সঠিকভাবে পরিচালনা করার জন্য [`Decimal`](https://docs.python.org/3/library/decimal.html) টাইপ ব্যবহার করা হয়।
+দশমিক ভগ্নাংশগুলো সঠিকভাবে পরিচালনা করার জন্য [`Decimal`](https://docs.python.org/3/library/decimal.html) টাইপ ব্যবহার করা হয়।
```python
def get_price(self, block: int) -> Decimal:
```
-এটি Python-এ একটি ফাংশন সংজ্ঞায়িত করার উপায়। সংজ্ঞাটি ইনডেন্ট করা হয়েছে এটি দেখানোর জন্য যে এটি এখনও `PoolInfo`-এর অংশ।
+Python-এ একটি ফাংশন সংজ্ঞায়িত করার এটিই উপায়। সংজ্ঞাটি ইনডেন্ট করা হয়েছে যাতে বোঝা যায় এটি এখনও `PoolInfo`-এর অংশ।
-একটি ডেটা ক্লাসের অংশ এমন একটি ফাংশনে প্রথম প্যারামিটারটি সর্বদা `self`, যা এখানে কল করা ডেটা ক্লাস ইনস্ট্যান্স। এখানে আরেকটি প্যারামিটার আছে, ব্লক নম্বর।
+একটি ডেটা ক্লাসের অংশ এমন একটি ফাংশনে প্রথম প্যারামিটারটি সর্বদা `self` হয়, যা ডেটা ক্লাসের ইনস্ট্যান্স যা এখানে কল করেছে। এখানে আরেকটি প্যারামিটার রয়েছে, ব্লক নম্বর।
```python
assert block <= w3.eth.block_number, "Block is in the future"
```
-আমরা যদি ভবিষ্যৎ পড়তে পারতাম, তবে ট্রেডিংয়ের জন্য AI-এর প্রয়োজন হতো না।
+আমরা যদি ভবিষ্যৎ পড়তে পারতাম, তবে ট্রেডিংয়ের জন্য আমাদের AI-এর প্রয়োজন হতো না।
```python
sqrt_price_x96 = Decimal(self.contract.functions.slot0().call(block_identifier=block)[0])
```
-Web3 থেকে EVM-এ একটি ফাংশন কল করার সিনট্যাক্স হল: `.functions."().call()`। প্যারামিটারগুলো EVM ফাংশনের প্যারামিটার হতে পারে (যদি থাকে; এখানে নেই) অথবা ব্লকচেইন আচরণ পরিবর্তন করার জন্য [নামযুক্ত প্যারামিটার](https://en.wikipedia.org/wiki/Named_parameter) হতে পারে। এখানে আমরা `block_identifier` ব্যবহার করি, যা [ব্লক নম্বর](/developers/docs/apis/json-rpc/#default-block) নির্দিষ্ট করে যেখানে আমরা চালাতে চাই।
+Web3 থেকে ইথিরিয়াম ভার্চুয়াল মেশিন-এ একটি ফাংশন কল করার সিনট্যাক্স হলো: `.functions.().call()`। প্যারামিটারগুলো ইথিরিয়াম ভার্চুয়াল মেশিন ফাংশনের প্যারামিটার হতে পারে (যদি থাকে; এখানে নেই) অথবা ব্লকচেইন আচরণ পরিবর্তন করার জন্য [নেমড প্যারামিটার](https://en.wikipedia.org/wiki/Named_parameter) হতে পারে। এখানে আমরা একটি ব্যবহার করেছি, `block_identifier`, যা দিয়ে আমরা যে [ব্লক নম্বর](/developers/docs/apis/json-rpc/#default-block)-এ রান করতে চাই তা নির্দিষ্ট করি।
-ফলাফল হল [এই struct, অ্যারে ফর্মে](https://github.com/Uniswap/v3-core/blob/main/contracts/UniswapV3Pool.sol#L56-L72)। প্রথম মানটি দুটি টোকেনের মধ্যে এক্সচেঞ্জ রেটের একটি ফাংশন।
+ফলাফল হলো [এই স্ট্রাক্ট, অ্যারে ফর্মে](https://github.com/Uniswap/v3-core/blob/main/contracts/UniswapV3Pool.sol#L56-L72)। প্রথম মানটি হলো দুটি টোকেন-এর মধ্যে এক্সচেঞ্জ রেটের একটি ফাংশন।
```python
raw_price = (sqrt_price_x96 / Decimal(2**96)) ** 2
```
-অনচেইন গণনা কমাতে, Uniswap v3 আসল এক্সচেঞ্জ ফ্যাক্টর সংরক্ষণ করে না বরং এর বর্গমূল সংরক্ষণ করে। যেহেতু EVM ফ্লোটিং পয়েন্ট ম্যাথ বা ভগ্নাংশ সমর্থন করে না, তাই আসল মানের পরিবর্তে, প্রতিক্রিয়া হল
+অনচেইন হিসাব কমানোর জন্য, Uniswap v3 প্রকৃত এক্সচেঞ্জ ফ্যাক্টর সংরক্ষণ করে না বরং এর বর্গমূল সংরক্ষণ করে। যেহেতু ইথিরিয়াম ভার্চুয়াল মেশিন ফ্লোটিং পয়েন্ট গণিত বা ভগ্নাংশ সমর্থন করে না, তাই প্রকৃত মানের পরিবর্তে, রেসপন্স হলো
```python
- # (টোকেন0 প্রতি টোকেন1)
+ # (প্রতি token0-এর জন্য token1)
return 1/(raw_price * self.decimal_factor)
```
-আমরা যে কাঁচা মূল্য পাই তা হল `টোকেন1`-এর প্রতি আমরা কত `টোকেন0` পাব তার সংখ্যা। আমাদের পুলে `টোকেন0` হল USDC (মার্কিন ডলারের সমান মূল্যের স্টেবলকয়েন) এবং `টোকেন1` হল [WETH](https://opensea.io/learn/blockchain/what-is-weth)। আমরা আসলে যে মানটি চাই তা হল প্রতি WETH-এর জন্য ডলারের সংখ্যা, এর বিপরীত নয়।
+আমরা যে র (raw) দাম পাই তা হলো প্রতিটি `token1`-এর জন্য আমরা কতগুলো `token0` পাই। আমাদের পুলে `token0` হলো USDC (স্টেবলকয়েন যার মান একটি ইউএস ডলারের সমান) এবং `token1` হলো [WETH](https://opensea.io/learn/blockchain/what-is-weth)। আমরা আসলে যে মানটি চাই তা হলো প্রতি WETH-এর জন্য ডলারের সংখ্যা, এর বিপরীতটি নয়।
-ডেসিমাল ফ্যাক্টর হলো দুটি টোকেনের [ডেসিমাল ফ্যাক্টর](https://docs.openzeppelin.com/contracts/4.x/erc20#a-note-on-decimals) এর মধ্যকার অনুপাত।
+ডেসিমাল ফ্যাক্টর হলো দুটি টোকেন-এর [ডেসিমাল ফ্যাক্টরগুলোর](https://docs.openzeppelin.com/contracts/4.x/erc20#a-note-on-decimals) মধ্যকার অনুপাত।
```python
@dataclass(frozen=True)
@@ -241,7 +242,7 @@ class Quote:
asset: str
```
-এই ডেটা ক্লাসটি একটি কোট উপস্থাপন করে: একটি নির্দিষ্ট সময়ে একটি নির্দিষ্ট অ্যাসেটের মূল্য। এই মুহূর্তে, `asset` ফিল্ডটি অপ্রাসঙ্গিক কারণ আমরা একটি একক পুল ব্যবহার করি এবং তাই একটি একক অ্যাসেট আছে। তবে, আমরা পরে আরও অ্যাসেট যোগ করব।
+এই ডেটা ক্লাসটি একটি কোট উপস্থাপন করে: একটি নির্দিষ্ট সময়ে একটি নির্দিষ্ট অ্যাসেটের দাম। এই মুহূর্তে, `asset` ফিল্ডটি অপ্রাসঙ্গিক কারণ আমরা একটি একক পুল ব্যবহার করি এবং তাই আমাদের একটি একক অ্যাসেট রয়েছে। তবে, আমরা পরে আরও অ্যাসেট যোগ করব।
```python
def read_token(address: str) -> ERC20Token:
@@ -257,7 +258,7 @@ def read_token(address: str) -> ERC20Token:
)
```
-এই ফাংশনটি একটি অ্যাড্রেস নেয় এবং সেই অ্যাড্রেসে থাকা টোকেন কন্ট্র্যাক্ট সম্পর্কে তথ্য প্রদান করে। একটি নতুন [Web3 `Contract`](https://web3py.readthedocs.io/en/stable/web3.contract.html) তৈরি করতে, আমরা `w3.eth.contract`-কে অ্যাড্রেস এবং ABI প্রদান করি।
+এই ফাংশনটি একটি এডড্রেস নেয় এবং সেই এডড্রেস-এ থাকা টোকেন কন্ট্রাক্ট সম্পর্কে তথ্য ফেরত দেয়। একটি নতুন [Web3 `Contract`](https://web3py.readthedocs.io/en/stable/web3.contract.html) তৈরি করতে, আমরা `w3.eth.contract`-এ এডড্রেস এবং ABI প্রদান করি।
```python
def read_pool(address: str) -> PoolInfo:
@@ -277,22 +278,22 @@ def read_pool(address: str) -> PoolInfo:
)
```
-এই ফাংশনটি [একটি নির্দিষ্ট পুল](https://github.com/Uniswap/v3-core/blob/main/contracts/UniswapV3Pool.sol) সম্পর্কে আমাদের প্রয়োজনীয় সবকিছু প্রদান করে। সিনট্যাক্স `f""` একটি [ফরম্যাটেড স্ট্রিং](https://docs.python.org/3/reference/lexical_analysis.html#f-strings)।
+এই ফাংশনটি [একটি নির্দিষ্ট পুল](https://github.com/Uniswap/v3-core/blob/main/contracts/UniswapV3Pool.sol) সম্পর্কে আমাদের প্রয়োজনীয় সবকিছু ফেরত দেয়। `f""` সিনট্যাক্সটি হলো একটি [ফরম্যাটেড স্ট্রিং](https://docs.python.org/3/reference/lexical_analysis.html#f-strings)।
```python
def get_quote(pool: PoolInfo, block_number: int = None) -> Quote:
```
-একটি `Quote` অবজেক্ট পান। `block_number`-এর ডিফল্ট মান হল `None` (কোনো মান নেই)।
+একটি `Quote` অবজেক্ট পান। `block_number`-এর ডিফল্ট মান হলো `None` (কোনো মান নেই)।
```python
if block_number is None:
block_number = w3.eth.block_number
```
-যদি কোনো ব্লক নম্বর নির্দিষ্ট করা না হয়, তাহলে `w3.eth.block_number` ব্যবহার করুন, যা সর্বশেষ ব্লক নম্বর। এটি [একটি `if` স্টেটমেন্টের](https://docs.python.org/3/reference/compound_stmts.html#the-if-statement) সিনট্যাক্স।
+যদি কোনো ব্লক নম্বর নির্দিষ্ট করা না থাকে, তবে `w3.eth.block_number` ব্যবহার করুন, যা হলো সর্বশেষ ব্লক নম্বর। এটি [একটি `if` স্টেটমেন্টের](https://docs.python.org/3/reference/compound_stmts.html#the-if-statement) সিনট্যাক্স।
-এটা দেখে মনে হতে পারে যে ডিফল্ট হিসেবে `w3.eth.block_number` সেট করাই ভালো ছিল, কিন্তু সেটা ঠিকভাবে কাজ করে না কারণ এটা ফাংশনটি সংজ্ঞায়িত করার সময়ের ব্লক নম্বর হতো। একটি দীর্ঘ-চলমান এজেন্টে, এটি একটি সমস্যা হবে।
+এটি দেখে মনে হতে পারে যে ডিফল্ট হিসেবে শুধু `w3.eth.block_number` সেট করা ভালো হতো, কিন্তু এটি ভালোভাবে কাজ করে না কারণ এটি ফাংশনটি সংজ্ঞায়িত করার সময়ের ব্লক নম্বর হবে। একটি দীর্ঘ সময় ধরে চলা এজেন্টে, এটি একটি সমস্যা হবে।
```python
block = w3.eth.get_block(block_number)
@@ -304,20 +305,20 @@ def get_quote(pool: PoolInfo, block_number: int = None) -> Quote:
)
```
-মানুষ এবং বড় ভাষার মডেলের (LLM) জন্য পঠনযোগ্য ফরম্যাটে ফরম্যাট করতে [`datetime` লাইব্রেরি](https://docs.python.org/3/library/datetime.html) ব্যবহার করুন। মানটিকে দুই দশমিক স্থানে রাউন্ড করতে [`Decimal.quantize`](https://docs.python.org/3/library/decimal.html#decimal.Decimal.quantize) ব্যবহার করুন।
+মানুষ এবং লার্জ ল্যাঙ্গুয়েজ মডেলগুলোর (LLMs) পড়ার উপযোগী একটি ফরম্যাটে এটি ফরম্যাট করতে [`datetime` লাইব্রেরি](https://docs.python.org/3/library/datetime.html) ব্যবহার করুন। মানটিকে দুই দশমিক স্থান পর্যন্ত রাউন্ড করতে [`Decimal.quantize`](https://docs.python.org/3/library/decimal.html#decimal.Decimal.quantize) ব্যবহার করুন।
```python
def get_quotes(pool: PoolInfo, start_block: int, end_block: int, step: int) -> list[Quote]:
```
-Python-এ আপনি `list[]` ব্যবহার করে একটি [তালিকা](https://docs.python.org/3/library/stdtypes.html#typesseq-list) সংজ্ঞায়িত করেন যা শুধুমাত্র একটি নির্দিষ্ট টাইপ ধারণ করতে পারে।
+Python-এ আপনি `list[]` ব্যবহার করে এমন একটি [লিস্ট](https://docs.python.org/3/library/stdtypes.html#typesseq-list) সংজ্ঞায়িত করতে পারেন যা কেবল একটি নির্দিষ্ট টাইপ ধারণ করতে পারে।
```python
quotes = []
for block in range(start_block, end_block + 1, step):
```
-Python-এ একটি [`for` লুপ](https://docs.python.org/3/tutorial/controlflow.html#for-statements) সাধারণত একটি তালিকার উপর পুনরাবৃত্তি করে। কোট খুঁজে বের করার জন্য ব্লক নম্বরের তালিকাটি [`range`](https://docs.python.org/3/library/stdtypes.html#range) থেকে আসে।
+Python-এ একটি [`for` লুপ](https://docs.python.org/3/tutorial/controlflow.html#for-statements) সাধারণত একটি লিস্টের উপর ইটারেট করে। কোটগুলো খোঁজার জন্য ব্লক নম্বরগুলোর লিস্ট [`range`](https://docs.python.org/3/library/stdtypes.html#range) থেকে আসে।
```python
quote = get_quote(pool, block)
@@ -325,7 +326,7 @@ Python-এ একটি [`for` লুপ](https://docs.python.org/3/tutorial/con
return quotes
```
-প্রতিটি ব্লক নম্বরের জন্য, একটি `Quote` অবজেক্ট পান এবং এটিকে `quotes` তালিকায় যোগ করুন। তারপর সেই তালিকাটি ফেরত দিন।
+প্রতিটি ব্লক নম্বরের জন্য, একটি `Quote` অবজেক্ট পান এবং এটি `quotes` লিস্টে যুক্ত করুন। তারপর সেই লিস্টটি ফেরত দিন।
```python
pool = read_pool(WETHUSDC_ADDRESS)
@@ -339,29 +340,29 @@ quotes = get_quotes(
pprint(quotes)
```
-এটি স্ক্রিপ্টের মূল কোড। পুল তথ্য পড়ুন, বারোটি কোট পান, এবং সেগুলোকে [`pprint`](https://docs.python.org/3/library/pprint.html#pprint.pprint) করুন।
+এটি স্ক্রিপ্টের মূল কোড। পুলের তথ্য পড়ুন, বারোটি কোট পান এবং সেগুলোকে [`pprint`](https://docs.python.org/3/library/pprint.html#pprint.pprint) করুন।
### একটি প্রম্পট তৈরি করা {#prompt}
-এরপরে, আমাদের এই কোটগুলোর তালিকাকে একটি LLM-এর জন্য প্রম্পটে রূপান্তর করতে হবে এবং একটি প্রত্যাশিত ভবিষ্যৎ মান পেতে হবে।
+এরপর, আমাদের কোটগুলোর এই লিস্টটিকে একটি LLM-এর জন্য প্রম্পটে রূপান্তর করতে হবে এবং একটি প্রত্যাশিত ভবিষ্যৎ মান পেতে হবে।
```sh
git checkout 03-create-prompt
uv run agent.py
```
-আউটপুট এখন একটি LLM-এর জন্য একটি প্রম্পট হবে, যা দেখতে অনেকটা এইরকম:
+আউটপুটটি এখন একটি LLM-এর জন্য প্রম্পট হতে যাচ্ছে, যা অনেকটা এরকম:
```
-এই কোটগুলো দেওয়া আছে:
-অ্যাসেট: WETH/USDC
+Given these quotes:
+Asset: WETH/USDC
2026-01-20T16:34 3016.21
.
.
.
2026-02-01T17:49 2299.10
-অ্যাসেট: WBTC/WETH
+Asset: WBTC/WETH
2026-01-20T16:34 29.84
.
.
@@ -369,41 +370,41 @@ uv run agent.py
2026-02-01T17:50 33.46
-2026-02-02T17:56 সময়ে WETH/USDC-এর মান কী হতে পারে বলে আপনি আশা করেন?
+What would you expect the value for WETH/USDC to be at time 2026-02-02T17:56?
-আপনার উত্তরটি দুটি দশমিক স্থানে রাউন্ড করা একটি একক সংখ্যা হিসেবে দিন,
-অন্য কোনো লেখা ছাড়া।
+Provide your answer as a single number rounded to two decimal places,
+without any other text.
```
-লক্ষ্য করুন যে এখানে দুটি অ্যাসেটের জন্য কোট রয়েছে, `WETH/USDC` এবং `WBTC/WETH`। অন্য একটি অ্যাসেট থেকে কোট যোগ করলে ভবিষ্যদ্বাণীর নির্ভুলতা উন্নত হতে পারে।
+লক্ষ্য করুন যে এখানে দুটি অ্যাসেটের কোট রয়েছে, `WETH/USDC` এবং `WBTC/WETH`। অন্য একটি অ্যাসেট থেকে কোট যোগ করলে প্রেডিকশনের নির্ভুলতা উন্নত হতে পারে।
-#### একটি প্রম্পট কেমন দেখতে হয় {#prompt-explanation}
+#### একটি প্রম্পট দেখতে কেমন হয় {#prompt-explanation}
-এই প্রম্পটটিতে তিনটি বিভাগ রয়েছে, যা LLM প্রম্পটে বেশ সাধারণ।
+এই প্রম্পটে তিনটি বিভাগ রয়েছে, যা LLM প্রম্পটগুলোতে বেশ সাধারণ।
-1. তথ্য। LLM-গুলির প্রশিক্ষণের অনেক তথ্য থাকে, কিন্তু সাধারণত তাদের কাছে সর্বশেষ তথ্য থাকে না। এই কারণে আমাদের এখানে সর্বশেষ কোটগুলি পুনরুদ্ধার করতে হবে। একটি প্রম্পটে তথ্য যোগ করাকে [রিট্রিভাল অগমেন্টেড জেনারেশন (RAG)](https://en.wikipedia.org/wiki/Retrieval-augmented_generation) বলা হয়।
+1. তথ্য। LLM-গুলোর কাছে তাদের ট্রেনিং থেকে অনেক তথ্য থাকে, কিন্তু সাধারণত তাদের কাছে সর্বশেষ তথ্য থাকে না। এই কারণেই আমাদের এখানে সর্বশেষ কোটগুলো পুনরুদ্ধার করতে হবে। একটি প্রম্পটে তথ্য যোগ করাকে [রিট্রিভাল অগমেন্টেড জেনারেশন (RAG)](https://en.wikipedia.org/wiki/Retrieval-augmented_generation) বলা হয়।
-2. আসল প্রশ্ন। এটাই আমরা জানতে চাই।
+2. আসল প্রশ্ন। এটিই আমরা জানতে চাই।
-3. আউটপুট ফরম্যাটিং নির্দেশাবলী। সাধারণত, একটি LLM আমাদের একটি অনুমান দেয় এবং এটি কীভাবে সেই অনুমানে পৌঁছেছে তার একটি ব্যাখ্যা দেয়। এটি মানুষের জন্য ভালো, কিন্তু একটি কম্পিউটার প্রোগ্রামের শুধু চূড়ান্ত ফলাফল প্রয়োজন।
+3. আউটপুট ফরম্যাটিং নির্দেশাবলী। সাধারণত, একটি LLM আমাদের একটি অনুমান দেবে এবং এটি কীভাবে সেখানে পৌঁছাল তার একটি ব্যাখ্যা দেবে। এটি মানুষের জন্য ভালো, কিন্তু একটি কম্পিউটার প্রোগ্রামের কেবল মূল ফলাফলটি প্রয়োজন।
#### কোড ব্যাখ্যা {#prompt-code}
-এখানে নতুন কোডটি দেওয়া হলো।
+এখানে নতুন কোড দেওয়া হলো।
```python
from datetime import datetime, timezone, timedelta
```
-আমাদের LLM-কে সেই সময়টি সরবরাহ করতে হবে যার জন্য আমরা একটি অনুমান চাই। ভবিষ্যতে "n মিনিট/ঘন্টা/দিন" সময় পেতে, আমরা [`timedelta` ক্লাস](https://docs.python.org/3/library/datetime.html#datetime.timedelta) ব্যবহার করি।
+আমাদের LLM-কে সেই সময়টি প্রদান করতে হবে যার জন্য আমরা একটি অনুমান চাই। ভবিষ্যতে "n মিনিট/ঘণ্টা/দিন" সময় পেতে, আমরা [`timedelta` ক্লাস](https://docs.python.org/3/library/datetime.html#datetime.timedelta) ব্যবহার করি।
```python
-# আমরা যে পুলগুলো পড়ছি তার অ্যাড্রেস
+# আমরা যে পুলগুলো পড়ছি সেগুলোর ঠিকানা
WETHUSDC_ADDRESS = Web3.to_checksum_address("0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640")
WETHWBTC_ADDRESS = Web3.to_checksum_address("0xCBCdF9626bC03E24f779434178A73a0B4bad62eD")
```
-আমাদের দুটি পুল পড়তে হবে।
+আমাদের দুটি পুল রয়েছে যা আমাদের পড়তে হবে।
```python
@dataclass(frozen=True)
@@ -416,14 +417,14 @@ class PoolInfo:
def get_price(self, block: int) -> Decimal:
assert block <= w3.eth.block_number, "Block is in the future"
sqrt_price_x96 = Decimal(self.contract.functions.slot0().call(block_identifier=block)[0])
- raw_price = (sqrt_price_x96 / Decimal(2**96)) ** 2 # (টোকেন0 প্রতি টোকেন1)
+ raw_price = (sqrt_price_x96 / Decimal(2**96)) ** 2 # (প্রতি token0-এর জন্য token1)
if self.reverse:
return 1/(raw_price * self.decimal_factor)
else:
return raw_price * self.decimal_factor
```
-WETH/USDC পুলে, আমরা জানতে চাই একটি `টোকেন1` (WETH) কিনতে কতগুলো `টোকেন0` (USDC) প্রয়োজন। WETH/WBTC পুলে, আমরা জানতে চাই একটি `টোকেন0` (WBTC, যা র্যাপড বিটকয়েন) কিনতে কতগুলো `টোকেন1` (WETH) প্রয়োজন। আমাদের পুলের অনুপাত বিপরীত করা প্রয়োজন কিনা তা ট্র্যাক করতে হবে।
+WETH/USDC পুলে, আমরা জানতে চাই একটি `token1` (WETH) কিনতে আমাদের কতগুলো `token0` (USDC) প্রয়োজন। WETH/WBTC পুলে, আমরা জানতে চাই একটি `token0` (WBTC, যা হলো র্যাপড বিটকয়েন) কিনতে আমাদের কতগুলো `token1` (WETH) প্রয়োজন। পুলের অনুপাতটি উল্টানো দরকার কিনা তা আমাদের ট্র্যাক করতে হবে।
```python
def read_pool(address: str, reverse: bool = False) -> PoolInfo:
@@ -441,9 +442,9 @@ def read_pool(address: str, reverse: bool = False) -> PoolInfo:
)
```
-একটি পুলকে বিপরীত করতে হবে কিনা তা জানতে, আমরা `read_pool`-এ ইনপুট হিসেবে তা পাই। এছাড়াও, অ্যাসেট প্রতীকটি সঠিকভাবে সেট করতে হবে।
+একটি পুল উল্টানো দরকার কিনা তা জানতে, আমরা সেটিকে `read_pool`-এর ইনপুট হিসেবে পাই। এছাড়াও, অ্যাসেট সিম্বলটি সঠিকভাবে সেট আপ করতে হবে।
-` if else ` সিনট্যাক্সটি পাইথনে [টারনারি কন্ডিশনাল অপারেটর](https://en.wikipedia.org/wiki/Ternary_conditional_operator) এর সমতুল্য, যা একটি C-ডিরাইভড ভাষায় ` ? : ` হবে।
+` if else ` সিনট্যাক্সটি হলো [টার্নারি কন্ডিশনাল অপারেটরের](https://en.wikipedia.org/wiki/Ternary_conditional_operator) Python সমতুল্য, যা একটি C-ভিত্তিক ভাষায় ` ? : ` হবে।
```python
def format_quotes(quotes: list[Quote]) -> str:
@@ -453,34 +454,34 @@ def format_quotes(quotes: list[Quote]) -> str:
return result
```
-এই ফাংশনটি `Quote` অবজেক্টের একটি তালিকা ফরম্যাট করে একটি স্ট্রিং তৈরি করে, ধরে নেওয়া হয় যে সবগুলো একই অ্যাসেটের জন্য প্রযোজ্য।
+এই ফাংশনটি এমন একটি স্ট্রিং তৈরি করে যা `Quote` অবজেক্টের একটি লিস্ট ফরম্যাট করে, ধরে নেওয়া হয় যে সেগুলো সবই একই অ্যাসেটের ক্ষেত্রে প্রযোজ্য।
```python
def make_prompt(quotes: list[list[Quote]], expected_time: str, asset: str) -> str:
return f"""
```
-Python-এ [মাল্টি-লাইন স্ট্রিং লিটারাল](https://www.w3schools.com/python/gloss_python_multi_line_strings.asp) লেখা হয় `"""` .... হিসেবে। `"""`।
+Python-এ [মাল্টি-লাইন স্ট্রিং লিটারেলগুলো](https://www.w3schools.com/python/gloss_python_multi_line_strings.asp) `"""` .... `"""` হিসেবে লেখা হয়।
```python
-এই কোটগুলো দেওয়া আছে:
+Given these quotes:
{
functools.reduce(lambda acc, q: acc + '\n' + q,
map(lambda q: format_quotes(q), quotes))
}
```
-এখানে, আমরা প্রতিটি কোট তালিকার জন্য একটি স্ট্রিং তৈরি করতে [MapReduce](https://en.wikipedia.org/wiki/MapReduce) প্যাটার্ন ব্যবহার করি, `format_quotes` দিয়ে, তারপর প্রম্পটে ব্যবহারের জন্য সেগুলোকে একটি একক স্ট্রিং-এ পরিণত করি।
+এখানে, আমরা `format_quotes` দিয়ে প্রতিটি কোট লিস্টের জন্য একটি স্ট্রিং তৈরি করতে [MapReduce](https://en.wikipedia.org/wiki/MapReduce) প্যাটার্ন ব্যবহার করি, তারপর প্রম্পটে ব্যবহারের জন্য সেগুলোকে একটি একক স্ট্রিংয়ে রিডিউস করি।
```python
-{expected_time} সময়ে {asset}-এর মান কী হবে বলে আপনি আশা করেন?
+What would you expect the value for {asset} to be at time {expected_time}?
-আপনার উত্তরটি দুই দশমিক স্থান পর্যন্ত রাউন্ড করা একটি একক সংখ্যা হিসেবে দিন,
-অন্য কোনো লেখা ছাড়া।
+Provide your answer as a single number rounded to two decimal places,
+without any other text.
"""
```
-প্রম্পটের বাকি অংশ প্রত্যাশিত।
+প্রম্পটের বাকি অংশ প্রত্যাশিত মতোই।
```python
wethusdc_pool = read_pool(WETHUSDC_ADDRESS, True)
@@ -500,7 +501,7 @@ wethwbtc_quotes = get_quotes(
)
```
-দুটি পুল পর্যালোচনা করুন এবং উভয় থেকে কোট সংগ্রহ করুন।
+দুটি পুল পর্যালোচনা করুন এবং উভয়টি থেকে কোট সংগ্রহ করুন।
```python
future_time = (datetime.now(timezone.utc) + timedelta(days=1)).isoformat()[0:16]
@@ -508,40 +509,37 @@ future_time = (datetime.now(timezone.utc) + timedelta(days=1)).isoformat()[0:16]
print(make_prompt(wethusdc_quotes + wethwbtc_quotes, future_time, wethusdc_pool.asset))
```
-ভবিষ্যতের যে সময়বিন্দুর জন্য আমরা অনুমান চাই তা নির্ধারণ করুন এবং প্রম্পটটি তৈরি করুন।
+ভবিষ্যতের সেই সময় বিন্দুটি নির্ধারণ করুন যার জন্য আমরা অনুমান চাই এবং প্রম্পটটি তৈরি করুন।
### একটি LLM-এর সাথে ইন্টারফেসিং {#interface-llm}
-এরপরে, আমরা একটি আসল LLM-কে প্রম্পট করি এবং একটি প্রত্যাশিত ভবিষ্যৎ মান পাই। আমি এই প্রোগ্রামটি OpenAI ব্যবহার করে লিখেছি, তাই আপনি যদি অন্য কোনো প্রদানকারী ব্যবহার করতে চান, তাহলে আপনাকে এটি অ্যাডজাস্ট করতে হবে।
+এরপর, আমরা একটি আসল LLM-কে প্রম্পট করি এবং একটি প্রত্যাশিত ভবিষ্যৎ মান গ্রহণ করি। আমি OpenAI ব্যবহার করে এই প্রোগ্রামটি লিখেছি, তাই আপনি যদি অন্য কোনো প্রোভাইডার ব্যবহার করতে চান, তবে আপনাকে এটি সামঞ্জস্য করতে হবে।
-1. একটি [OpenAI অ্যাকাউন্ট](https://auth.openai.com/create-account) পান
-
-2. [অ্যাকাউন্টে ফান্ড যোগ করুন](https://platform.openai.com/settings/organization/billing/overview)—লেখার সময় ন্যূনতম পরিমাণ হল $5
-
-3. [একটি API কী তৈরি করুন](https://platform.openai.com/settings/organization/api-keys)
-
-4. কমান্ড লাইনে, API কী এক্সপোর্ট করুন যাতে আপনার প্রোগ্রাম এটি ব্যবহার করতে পারে
+1. একটি [OpenAI একাউন্ট](https://auth.openai.com/create-account) পান
+2. [একাউন্টে ফান্ড যোগ করুন](https://platform.openai.com/settings/organization/billing/overview)—লেখার সময় ন্যূনতম পরিমাণ হলো $5
+3. [একটি API কি তৈরি করুন](https://platform.openai.com/settings/organization/api-keys)
+4. কমান্ড লাইনে, API কি এক্সপোর্ট করুন যাতে আপনার প্রোগ্রাম এটি ব্যবহার করতে পারে
```sh
- export OPENAI_API_KEY=sk-<কী-এর বাকি অংশ এখানে দিন>
+ export OPENAI_API_KEY=sk-
```
-5. এজেন্টটি চেকআউট করুন এবং চালান
+5. চেকআউট করুন এবং এজেন্ট রান করুন
```sh
git checkout 04-interface-llm
uv run agent.py
```
-এখানে নতুন কোডটি দেওয়া হলো।
+এখানে নতুন কোড দেওয়া হলো।
```python
from openai import OpenAI
-open_ai = OpenAI() # ক্লায়েন্ট OPENAI_API_KEY এনভায়রনমেন্ট ভেরিয়েবল পড়ে
+open_ai = OpenAI() # ক্লায়েন্ট OPENAI_API_KEY এনভায়রনমেন্ট ভেরিয়েবলটি পড়ে
```
-OpenAI API ইম্পোর্ট এবং ইনস্ট্যানশিয়েট করুন।
+OpenAI API ইমপোর্ট এবং ইনস্ট্যানশিয়েট করুন।
```python
response = open_ai.chat.completions.create(
@@ -554,57 +552,57 @@ response = open_ai.chat.completions.create(
)
```
-প্রতিক্রিয়া তৈরি করতে OpenAI API (`open_ai.chat.completions.create`) কল করুন।
+রেসপন্স তৈরি করতে OpenAI API (`open_ai.chat.completions.create`) কল করুন।
```python
expected_price = Decimal(response.choices[0].message.content.strip())
current_price = wethusdc_quotes[-1].price
-print ("বর্তমান মূল্য:", wethusdc_quotes[-1].price)
-print(f"{future_time}-এ, প্রত্যাশিত মূল্য: {expected_price} USD")
+print ("Current price:", wethusdc_quotes[-1].price)
+print(f"In {future_time}, expected price: {expected_price} USD")
if (expected_price > current_price):
- print(f"কিনুন, আমি আশা করি মূল্য {expected_price - current_price} USD বাড়বে")
+ print(f"Buy, I expect the price to go up by {expected_price - current_price} USD")
else:
- print(f"বিক্রি করুন, আমি আশা করি মূল্য {current_price - expected_price} USD কমবে")
+ print(f"Sell, I expect the price to go down by {current_price - expected_price} USD")
```
-মূল্যটি আউটপুট করুন এবং একটি কেনা বা বেচার সুপারিশ প্রদান করুন।
+দাম আউটপুট করুন এবং একটি ক্রয় বা বিক্রয়ের সুপারিশ প্রদান করুন।
-#### ভবিষ্যদ্বাণী পরীক্ষা করা {#testing-the-predictions}
+#### প্রেডিকশনগুলো পরীক্ষা করা {#testing-the-predictions}
-এখন যেহেতু আমরা ভবিষ্যদ্বাণী তৈরি করতে পারি, আমরা ঐতিহাসিক ডেটা ব্যবহার করে মূল্যায়ন করতে পারি যে আমরা দরকারী ভবিষ্যদ্বাণী তৈরি করছি কিনা।
+যেহেতু এখন আমরা প্রেডিকশন তৈরি করতে পারি, তাই আমরা দরকারী প্রেডিকশন তৈরি করছি কিনা তা মূল্যায়ন করতে ঐতিহাসিক ডেটাও ব্যবহার করতে পারি।
```sh
uv run test-predictor.py
```
-প্রত্যাশিত ফলাফলটি অনেকটা এইরকম:
+প্রত্যাশিত ফলাফল অনেকটা এরকম:
```
-2026-01-05T19:50-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী 3138.93 USD, আসল 3218.92 USD, ত্রুটি 79.99 USD
-2026-01-06T19:56-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী 3243.39 USD, আসল 3221.08 USD, ত্রুটি 22.31 USD
-2026-01-07T20:02-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী 3223.24 USD, আসল 3146.89 USD, ত্রুটি 76.35 USD
-2026-01-08T20:11-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী 3150.47 USD, আসল 3092.04 USD, ত্রুটি 58.43 USD
+Prediction for 2026-01-05T19:50: predicted 3138.93 USD, real 3218.92 USD, error 79.99 USD
+Prediction for 2026-01-06T19:56: predicted 3243.39 USD, real 3221.08 USD, error 22.31 USD
+Prediction for 2026-01-07T20:02: predicted 3223.24 USD, real 3146.89 USD, error 76.35 USD
+Prediction for 2026-01-08T20:11: predicted 3150.47 USD, real 3092.04 USD, error 58.43 USD
.
.
.
-2026-01-31T22:33-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী 2637.73 USD, আসল 2417.77 USD, ত্রুটি 219.96 USD
-2026-02-01T22:41-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী 2381.70 USD, আসল 2318.84 USD, ত্রুটি 62.86 USD
-2026-02-02T22:49-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী 2234.91 USD, আসল 2349.28 USD, ত্রুটি 114.37 USD
-29টি ভবিষ্যদ্বাণীর উপর গড় ভবিষ্যদ্বাণীর ত্রুটি: 83.87103448275862068965517241 USD
-প্রতি সুপারিশে গড় পরিবর্তন: 4.787931034482758620689655172 USD
-পরিবর্তনের স্ট্যান্ডার্ড ভ্যারিয়েন্স: 104.42 USD
-লাভজনক দিন: 51.72%
-লোকসানের দিন: 48.28%
+Prediction for 2026-01-31T22:33: predicted 2637.73 USD, real 2417.77 USD, error 219.96 USD
+Prediction for 2026-02-01T22:41: predicted 2381.70 USD, real 2318.84 USD, error 62.86 USD
+Prediction for 2026-02-02T22:49: predicted 2234.91 USD, real 2349.28 USD, error 114.37 USD
+Mean prediction error over 29 predictions: 83.87103448275862068965517241 USD
+Mean change per recommendation: 4.787931034482758620689655172 USD
+Standard variance of changes: 104.42 USD
+Profitable days: 51.72%
+Losing days: 48.28%
```
-পরীক্ষকের বেশিরভাগ অংশ এজেন্টের সাথে অভিন্ন, কিন্তু এখানে নতুন বা পরিবর্তিত অংশগুলি রয়েছে।
+টেস্টারের বেশিরভাগ অংশই এজেন্টের মতো একই, তবে এখানে নতুন বা পরিবর্তিত অংশগুলো দেওয়া হলো।
```python
-CYCLES_FOR_TEST = 40 # ব্যাকটেস্টের জন্য, আমরা কতগুলি চক্র পরীক্ষা করি
+CYCLES_FOR_TEST = 40 # ব্যাকটেস্টের জন্য, আমরা কতগুলো সাইকেল ধরে টেস্ট করি
-# অনেক কোট পান
+# প্রচুর কোট সংগ্রহ করুন
wethusdc_pool = read_pool(WETHUSDC_ADDRESS, True)
wethusdc_quotes = get_quotes(
wethusdc_pool,
@@ -622,31 +620,31 @@ wethwbtc_quotes = get_quotes(
)
```
-আমরা `CYCLES_FOR_TEST` (এখানে 40 হিসাবে নির্দিষ্ট) দিন পিছনে দেখি।
+আমরা `CYCLES_FOR_TEST` (এখানে 40 হিসেবে নির্দিষ্ট করা হয়েছে) দিন পিছনের দিকে তাকাই।
```python
-# ভবিষ্যদ্বাণী তৈরি করুন এবং বাস্তব ইতিহাসের সাথে তাদের পরীক্ষা করুন
+# পূর্বাভাস তৈরি করুন এবং প্রকৃত ইতিহাসের সাথে সেগুলো যাচাই করুন
total_error = Decimal(0)
changes = []
```
-দুই ধরনের ত্রুটি আছে যা নিয়ে আমরা আগ্রহী। প্রথমটি, `total_error`, হল ভবিষ্যদ্বাণীকারীর করা ত্রুটিগুলির সমষ্টি।
+আমরা দুই ধরনের ত্রুটির প্রতি আগ্রহী। প্রথমটি, `total_error`, হলো প্রেডিক্টরের করা ত্রুটিগুলোর সাধারণ যোগফল।
-দ্বিতীয়টি, `changes`, বোঝার জন্য, আমাদের এজেন্টের উদ্দেশ্য মনে রাখতে হবে। এটি WETH/USDC অনুপাত (ETH মূল্য) ভবিষ্যদ্বাণী করার জন্য নয়। এটি বিক্রয় এবং কেনার সুপারিশ জারি করার জন্য। যদি বর্তমানে মূল্য $2000 হয় এবং এটি আগামীকাল $2010 ভবিষ্যদ্বাণী করে, তাহলে আসল ফলাফল যদি $2020 হয় এবং আমরা অতিরিক্ত অর্থ উপার্জন করি তবে আমরা কিছু মনে করি না। কিন্তু আমরা _অবশ্যই_ কিছু মনে করি যদি এটি $2010 ভবিষ্যদ্বাণী করে, এবং সেই সুপারিশের ভিত্তিতে ETH কিনে, এবং দাম $1990-এ নেমে যায়।
+দ্বিতীয়টি, `changes`, বোঝার জন্য আমাদের এজেন্টের উদ্দেশ্য মনে রাখতে হবে। এর উদ্দেশ্য WETH/USDC অনুপাত (ETH-এর দাম) প্রেডিক্ট করা নয়। এর উদ্দেশ্য হলো বিক্রয় এবং ক্রয়ের সুপারিশ জারি করা। যদি বর্তমানে দাম $2000 হয় এবং এটি আগামীকাল $2010 প্রেডিক্ট করে, তবে আসল ফলাফল $2020 হলে এবং আমরা অতিরিক্ত অর্থ উপার্জন করলে আমাদের কোনো আপত্তি নেই। কিন্তু আমরা _অবশ্যই_ আপত্তি করব যদি এটি $2010 প্রেডিক্ট করে, এবং সেই সুপারিশের ভিত্তিতে ETH কেনে, এবং দাম $1990-এ নেমে যায়।
```python
for index in range(0,len(wethusdc_quotes)-CYCLES_BACK):
```
-আমরা কেবল সেইসব ক্ষেত্রে দেখতে পারি যেখানে সম্পূর্ণ ইতিহাস (ভবিষ্যদ্বাণীর জন্য ব্যবহৃত মান এবং এটির সাথে তুলনা করার জন্য বাস্তব-বিশ্বের মান) উপলব্ধ রয়েছে। এর মানে হল যে নতুনতম কেসটি অবশ্যই `CYCLES_BACK` আগে শুরু হয়েছে।
+আমরা কেবল সেই ক্ষেত্রগুলো দেখতে পারি যেখানে সম্পূর্ণ ইতিহাস (প্রেডিকশনের জন্য ব্যবহৃত মানগুলো এবং এর সাথে তুলনা করার জন্য বাস্তব-বিশ্বের মান) উপলব্ধ। এর মানে হলো সবচেয়ে নতুন ক্ষেত্রটি অবশ্যই সেটি হতে হবে যা `CYCLES_BACK` আগে শুরু হয়েছিল।
```python
wethusdc_slice = wethusdc_quotes[index:index+CYCLES_BACK]
wethwbtc_slice = wethwbtc_quotes[index:index+CYCLES_BACK]
```
-এজেন্ট যে সংখ্যক নমুনা ব্যবহার করে সেই একই সংখ্যক নমুনা পেতে [স্লাইস](https://www.w3schools.com/python/ref_func_slice.asp) ব্যবহার করুন। এখানে এবং পরবর্তী সেগমেন্টের মধ্যে কোডটি এজেন্টে আমাদের থাকা একই get-a-prediction কোড।
+এজেন্ট যে সংখ্যক স্যাম্পল ব্যবহার করে ঠিক সেই সংখ্যক স্যাম্পল পেতে [স্লাইস](https://www.w3schools.com/python/ref_func_slice.asp) ব্যবহার করুন। এখান থেকে পরবর্তী সেগমেন্টের মধ্যবর্তী কোডটি এজেন্টে থাকা প্রেডিকশন পাওয়ার কোডের মতোই।
```python
predicted_price = Decimal(response.choices[0].message.content.strip())
@@ -654,15 +652,15 @@ for index in range(0,len(wethusdc_quotes)-CYCLES_BACK):
prediction_time_price = wethusdc_quotes[index+CYCLES_BACK-1].price
```
-ভবিষ্যদ্বাণী করা মূল্য, আসল মূল্য এবং ভবিষ্যদ্বাণীর সময়ের মূল্য পান। সুপারিশটি কেনার নাকি বেচার ছিল তা নির্ধারণ করার জন্য আমাদের ভবিষ্যদ্বাণীর সময়ের মূল্য প্রয়োজন।
+প্রেডিক্ট করা দাম, আসল দাম এবং প্রেডিকশনের সময়ের দাম পান। সুপারিশটি ক্রয় নাকি বিক্রয়ের ছিল তা নির্ধারণ করতে আমাদের প্রেডিকশনের সময়ের দাম প্রয়োজন।
```python
error = abs(predicted_price - real_price)
total_error += error
- print (f"{prediction_time}-এর জন্য ভবিষ্যদ্বাণী: ভবিষ্যদ্বাণী {predicted_price} USD, আসল {real_price} USD, ত্রুটি {error} USD")
+ print (f"Prediction for {prediction_time}: predicted {predicted_price} USD, real {real_price} USD, error {error} USD")
```
-ত্রুটি নির্ণয় করুন, এবং এটিকে মোটের সাথে যোগ করুন।
+ত্রুটিটি বের করুন এবং এটি মোটের সাথে যোগ করুন।
```python
recomended_action = 'buy' if predicted_price > prediction_time_price else 'sell'
@@ -670,32 +668,32 @@ for index in range(0,len(wethusdc_quotes)-CYCLES_BACK):
changes.append(price_increase if recomended_action == 'buy' else -price_increase)
```
-`changes`-এর জন্য, আমরা এক ETH কেনা বা বেচার আর্থিক প্রভাব চাই। তাই প্রথমে, আমাদের সুপারিশটি নির্ধারণ করতে হবে, তারপর আসল মূল্য কীভাবে পরিবর্তিত হয়েছে তা মূল্যায়ন করতে হবে এবং সুপারিশটি লাভজনক ছিল (ধনাত্মক পরিবর্তন) নাকি লোকসানের কারণ হয়েছিল (ঋণাত্মক পরিবর্তন)।
+`changes`-এর জন্য, আমরা একটি ETH কেনা বা বেচার আর্থিক প্রভাব চাই। তাই প্রথমে, আমাদের সুপারিশটি নির্ধারণ করতে হবে, তারপর আসল দাম কীভাবে পরিবর্তিত হয়েছে তা মূল্যায়ন করতে হবে এবং সুপারিশটি অর্থ উপার্জন করেছে (ইতিবাচক পরিবর্তন) নাকি অর্থ ব্যয় করেছে (নেতিবাচক পরিবর্তন) তা দেখতে হবে।
```python
-print (f"{len(wethusdc_quotes)-CYCLES_BACK}টি ভবিষ্যদ্বাণীর উপর গড় ভবিষ্যদ্বাণীর ত্রুটি: {total_error / Decimal(len(wethusdc_quotes)-CYCLES_BACK)} USD")
+print (f"Mean prediction error over {len(wethusdc_quotes)-CYCLES_BACK} predictions: {total_error / Decimal(len(wethusdc_quotes)-CYCLES_BACK)} USD")
length_changes = Decimal(len(changes))
mean_change = sum(changes, Decimal(0)) / length_changes
-print (f"প্রতি সুপারিশে গড় পরিবর্তন: {mean_change} USD")
+print (f"Mean change per recommendation: {mean_change} USD")
var = sum((x - mean_change) ** 2 for x in changes) / length_changes
-print (f"পরিবর্তনের স্ট্যান্ডার্ড ভ্যারিয়েন্স: {var.sqrt().quantize(Decimal("0.01"))} USD")
+print (f"Standard variance of changes: {var.sqrt().quantize(Decimal("0.01"))} USD")
```
-ফলাফলগুলি রিপোর্ট করুন।
+ফলাফল রিপোর্ট করুন।
```python
-print (f"লাভজনক দিন: {len(list(filter(lambda x: x > 0, changes)))/length_changes:.2%}")
-print (f"লোকসানের দিন: {len(list(filter(lambda x: x < 0, changes)))/length_changes:.2%}")
+print (f"Profitable days: {len(list(filter(lambda x: x > 0, changes)))/length_changes:.2%}")
+print (f"Losing days: {len(list(filter(lambda x: x < 0, changes)))/length_changes:.2%}")
```
-লাভজনক দিন এবং লোকসানের দিনের সংখ্যা গণনা করতে [`filter`](https://www.w3schools.com/python/ref_func_filter.asp) ব্যবহার করুন। ফলাফল একটি ফিল্টার অবজেক্ট, যা আমাদের দৈর্ঘ্য পেতে একটি তালিকায় রূপান্তর করতে হবে।
+লাভজনক দিনের সংখ্যা এবং ব্যয়বহুল দিনের সংখ্যা গণনা করতে [`filter`](https://www.w3schools.com/python/ref_func_filter.asp) ব্যবহার করুন। ফলাফলটি একটি ফিল্টার অবজেক্ট, যার দৈর্ঘ্য পেতে আমাদের এটিকে একটি লিস্টে রূপান্তর করতে হবে।
### লেনদেন জমা দেওয়া {#submit-txn}
-এখন আমাদের আসলে লেনদেন জমা দিতে হবে। তবে, সিস্টেমটি প্রমাণিত হওয়ার আগে আমি এই মুহূর্তে আসল টাকা খরচ করতে চাই না। পরিবর্তে, আমরা মেইননেটের একটি স্থানীয় ফর্ক তৈরি করব এবং সেই নেটওয়ার্কে "ট্রেড" করব।
+এখন আমাদের আসলে লেনদেন জমা দিতে হবে। তবে, সিস্টেমটি প্রমাণিত হওয়ার আগে, আমি এই মুহূর্তে আসল অর্থ ব্যয় করতে চাই না। এর পরিবর্তে, আমরা মেইননেট-এর একটি লোকাল ফর্ক তৈরি করব এবং সেই নেটওয়ার্ক-এ "ট্রেড" করব।
-এখানে একটি স্থানীয় ফর্ক তৈরি এবং ট্রেডিং সক্ষম করার ধাপগুলি দেওয়া হল।
+একটি লোকাল ফর্ক তৈরি এবং ট্রেডিং সক্ষম করার ধাপগুলো নিচে দেওয়া হলো।
1. [Foundry](https://getfoundry.sh/introduction/installation) ইনস্টল করুন
@@ -705,18 +703,18 @@ print (f"লোকসানের দিন: {len(list(filter(lambda x: x < 0, c
anvil --fork-url https://eth.drpc.org --block-time 12
```
- `anvil` Foundry-এর ডিফল্ট URL, http://localhost:8545-এ লিসেন করছে, তাই ব্লকচেইন ম্যানিপুলেট করার জন্য আমরা যে [`cast` কমান্ড](https://getfoundry.sh/cast/overview) ব্যবহার করি তার জন্য URL নির্দিষ্ট করার প্রয়োজন নেই।
+ `anvil` Foundry-এর ডিফল্ট URL, http://localhost:8545-এ শুনছে, তাই ব্লকচেইন ম্যানিপুলেট করার জন্য আমরা যে [`cast` কমান্ড](https://getfoundry.sh/cast/overview) ব্যবহার করি তার জন্য আমাদের URL নির্দিষ্ট করার প্রয়োজন নেই।
-3. `anvil`-এ চালানোর সময়, দশটি টেস্ট অ্যাকাউন্ট থাকে যেগুলোতে ETH আছে—প্রথমটির জন্য এনভায়রনমেন্ট ভেরিয়েবল সেট করুন
+3. `anvil`-এ রান করার সময়, দশটি টেস্ট একাউন্ট থাকে যেগুলোতে ETH আছে—প্রথমটির জন্য এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন
```sh
PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
ADDRESS=`cast wallet address $PRIVATE_KEY`
```
-4. এগুলো হল কন্ট্র্যাক্ট যা আমাদের ব্যবহার করতে হবে। [`SwapRouter`](https://github.com/Uniswap/v3-periphery/blob/main/contracts/SwapRouter.sol) হল Uniswap v3 কন্ট্র্যাক্ট যা আমরা আসলে ট্রেড করতে ব্যবহার করি। আমরা সরাসরি পুলের মাধ্যমে ট্রেড করতে পারতাম, কিন্তু এটি অনেক সহজ।
+4. এগুলো হলো সেই কন্ট্রাক্টগুলো যা আমাদের ব্যবহার করতে হবে। [`SwapRouter`](https://github.com/Uniswap/v3-periphery/blob/main/contracts/SwapRouter.sol) হলো সেই Uniswap v3 কন্ট্রাক্ট যা আমরা আসলে ট্রেড করার জন্য ব্যবহার করি। আমরা সরাসরি পুলের মাধ্যমে ট্রেড করতে পারতাম, কিন্তু এটি অনেক সহজ।
- নীচের দুটি ভেরিয়েবল হল WETH এবং USDC-এর মধ্যে সোয়াপ করার জন্য প্রয়োজনীয় Uniswap v3 পাথ।
+ নিচের দুটি ভেরিয়েবল হলো WETH এবং USDC-এর মধ্যে সোয়াপ করার জন্য প্রয়োজনীয় Uniswap v3 পাথ।
```sh
WETH_ADDRESS=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
@@ -727,13 +725,13 @@ print (f"লোকসানের দিন: {len(list(filter(lambda x: x < 0, c
USDC_TO_WETH=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB480001F4C02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
```
-5. প্রতিটি টেস্ট অ্যাকাউন্টে 10,000 ETH আছে। ট্রেডিংয়ের জন্য 1000 WETH পেতে 1000 ETH র্যাপ করতে WETH কন্ট্র্যাক্ট ব্যবহার করুন।
+5. প্রতিটি টেস্ট একাউন্ট-এ 10,000 ETH রয়েছে। ট্রেডিংয়ের জন্য 1000 WETH পেতে 1000 ETH র্যাপ করতে WETH কন্ট্রাক্ট ব্যবহার করুন।
```sh
cast send $WETH_ADDRESS "deposit()" --value 1000ether --private-key $PRIVATE_KEY
```
-6. `SwapRouter` ব্যবহার করে 500 WETH ট্রেড করে USDC নিন।
+6. USDC-এর জন্য 500 WETH ট্রেড করতে `SwapRouter` ব্যবহার করুন।
```sh
cast send $WETH_ADDRESS "approve(address,uint256)" $SWAP_ROUTER 500ether --private-key $PRIVATE_KEY
@@ -744,50 +742,50 @@ print (f"লোকসানের দিন: {len(list(filter(lambda x: x < 0, c
--private-key $PRIVATE_KEY
```
- `approve` কল একটি অ্যালাওয়েন্স তৈরি করে যা `SwapRouter`-কে আমাদের কিছু টোকেন খরচ করার অনুমতি দেয়। কন্ট্র্যাক্টগুলি ইভেন্টগুলি নিরীক্ষণ করতে পারে না, তাই যদি আমরা সরাসরি `SwapRouter` কন্ট্র্যাক্টে টোকেন স্থানান্তর করি, তবে এটি জানতে পারবে না যে এটি পরিশোধ করা হয়েছে। পরিবর্তে, আমরা `SwapRouter` কন্ট্র্যাক্টকে একটি নির্দিষ্ট পরিমাণ খরচ করার অনুমতি দিই, এবং তারপর `SwapRouter` এটি করে। এটি `SwapRouter` দ্বারা কল করা একটি ফাংশনের মাধ্যমে করা হয়, তাই এটি জানে যে এটি সফল হয়েছে কিনা।
+ `approve` কলটি একটি অ্যালাউন্স তৈরি করে যা `SwapRouter`-কে আমাদের কিছু টোকেন ব্যয় করার অনুমতি দেয়। কন্ট্রাক্টগুলো ইভেন্টগুলো মনিটর করতে পারে না, তাই আমরা যদি সরাসরি `SwapRouter` কন্ট্রাক্টে টোকেন ট্রান্সফার করি, তবে এটি জানতে পারবে না যে এটিকে পেমেন্ট করা হয়েছে। এর পরিবর্তে, আমরা `SwapRouter` কন্ট্রাক্টকে একটি নির্দিষ্ট পরিমাণ ব্যয় করার অনুমতি দিই, এবং তারপর `SwapRouter` সেটি করে। এটি `SwapRouter` দ্বারা কল করা একটি ফাংশনের মাধ্যমে করা হয়, তাই এটি জানতে পারে যে এটি সফল হয়েছে কিনা।
-7. আপনার কাছে উভয় টোকেন পর্যাপ্ত পরিমাণে আছে কিনা তা যাচাই করুন।
+7. যাচাই করুন যে আপনার কাছে উভয় টোকেন-এর পর্যাপ্ত পরিমাণ রয়েছে।
```sh
cast call $WETH_ADDRESS "balanceOf(address)" $ADDRESS | cast from-wei
echo `cast call $USDC_ADDRESS "balanceOf(address)" $ADDRESS | cast to-dec`/10^6 | bc
```
-এখন যেহেতু আমাদের কাছে WETH এবং USDC আছে, আমরা আসলে এজেন্টটি চালাতে পারি।
+যেহেতু এখন আমাদের কাছে WETH এবং USDC আছে, তাই আমরা আসলে এজেন্টটি রান করতে পারি।
```sh
git checkout 05-trade
uv run agent.py
```
-আউটপুটটি দেখতে অনেকটা এইরকম হবে:
+আউটপুটটি অনেকটা এরকম দেখাবে:
```
(ai-trading-agent) qbzzt@Ori-Cloudnomics:~/260215-ai-agent$ uv run agent.py
-বর্তমান মূল্য: 1843.16
-2026-02-06T23:07-এ, প্রত্যাশিত মূল্য: 1724.41 USD
-ট্রেডের আগে অ্যাকাউন্টের ব্যালেন্স:
-USDC ব্যালেন্স: 927301.578272
-WETH ব্যালেন্স: 500
-বিক্রি করুন, আমি আশা করি মূল্য 118.75 USD কমবে
-অনুমোদন লেনদেন পাঠানো হয়েছে: 74e367ddbb407c1aaf567d87aa5863049991b1d2aa092b6b85195d925e2bd41f
-অনুমোদন লেনদেন মাইনিং করা হয়েছে।
-বিক্রয় লেনদেন পাঠানো হয়েছে: fad1bcf938585c9e90364b26ac7a80eea9efd34c37e5db81e58d7655bcae28bf
-বিক্রয় লেনদেন মাইনিং করা হয়েছে।
-ট্রেডের পরে অ্যাকাউন্টের ব্যালেন্স:
-USDC ব্যালেন্স: 929143.797116
-WETH ব্যালেন্স: 499
-```
-
-এটি আসলে ব্যবহার করার জন্য, আপনাকে কয়েকটি ছোট পরিবর্তন করতে হবে।
-
-- লাইন 14-এ, `MAINNET_URL` পরিবর্তন করে একটি বাস্তব অ্যাক্সেস পয়েন্ট, যেমন `https://eth.drpc.org`-এ দিন
-- লাইন 28-এ, `PRIVATE_KEY` পরিবর্তন করে আপনার নিজের প্রাইভেট কী দিন
-- যদি না আপনি খুব ধনী হন এবং একটি অপ্রমাণিত এজেন্টের জন্য প্রতিদিন 1 ETH কিনতে বা বিক্রি করতে পারেন, তাহলে আপনি `WETH_TRADE_AMOUNT` কমাতে 29 পরিবর্তন করতে চাইতে পারেন
+Current price: 1843.16
+In 2026-02-06T23:07, expected price: 1724.41 USD
+Account balances before trade:
+USDC Balance: 927301.578272
+WETH Balance: 500
+Sell, I expect the price to go down by 118.75 USD
+Approve transaction sent: 74e367ddbb407c1aaf567d87aa5863049991b1d2aa092b6b85195d925e2bd41f
+Approve transaction mined.
+Sell transaction sent: fad1bcf938585c9e90364b26ac7a80eea9efd34c37e5db81e58d7655bcae28bf
+Sell transaction mined.
+Account balances after trade:
+USDC Balance: 929143.797116
+WETH Balance: 499
+```
+
+এটি আসলে ব্যবহার করার জন্য, আপনার কয়েকটি ছোট পরিবর্তনের প্রয়োজন।
+
+- লাইন 14-এ, `MAINNET_URL`-কে একটি আসল অ্যাক্সেস পয়েন্টে পরিবর্তন করুন, যেমন `https://eth.drpc.org`
+- লাইন 28-এ, `PRIVATE_KEY`-কে আপনার নিজস্ব প্রাইভেট কি-তে পরিবর্তন করুন
+- যদি না আপনি খুব ধনী হন এবং একটি অপ্রমাণিত এজেন্টের জন্য প্রতিদিন 1 ETH কিনতে বা বেচতে পারেন, তবে আপনি `WETH_TRADE_AMOUNT` কমানোর জন্য 29 পরিবর্তন করতে চাইতে পারেন
#### কোড ব্যাখ্যা {#trading-code}
-এখানে নতুন কোডটি দেওয়া হলো।
+এখানে নতুন কোড দেওয়া হলো।
```python
SWAP_ROUTER_ADDRESS=Web3.to_checksum_address("0xE592427A0AEce92De3Edee1F18E0157C05861564")
@@ -796,7 +794,7 @@ USDC_TO_WETH=bytes.fromhex("A0b86991c6218b36c1d19D4a2e9Eb0cE3606eB480001F4C02aaA
PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
```
-ধাপ 4-এ আমরা যে একই ভেরিয়েবল ব্যবহার করেছি।
+ধাপ 4-এ আমরা যে ভেরিয়েবলগুলো ব্যবহার করেছি সেগুলোই।
```python
WETH_TRADE_AMOUNT=1
@@ -813,7 +811,7 @@ ERC20_ABI = [
]
```
-আসলে ট্রেড করার জন্য, আমাদের `approve` ফাংশন প্রয়োজন। আমরা আগে এবং পরে ব্যালেন্সও দেখাতে চাই, তাই আমাদের `balanceOf` ও প্রয়োজন।
+আসলে ট্রেড করার জন্য, আমাদের `approve` ফাংশন প্রয়োজন। আমরা আগে এবং পরের ব্যালেন্সও দেখাতে চাই, তাই আমাদের `balanceOf`-ও প্রয়োজন।
```python
SWAP_ROUTER_ABI = [
@@ -821,7 +819,7 @@ SWAP_ROUTER_ABI = [
]
```
-`SwapRouter` ABI-তে আমাদের শুধু `exactInput` প্রয়োজন। একটি সম্পর্কিত ফাংশন আছে, `exactOutput`, যা আমরা ঠিক একটি WETH কেনার জন্য ব্যবহার করতে পারতাম, কিন্তু সরলতার জন্য আমরা উভয় ক্ষেত্রে `exactInput` ব্যবহার করি।
+`SwapRouter` ABI-তে আমাদের শুধু `exactInput` প্রয়োজন। একটি সম্পর্কিত ফাংশন রয়েছে, `exactOutput`, যা আমরা ঠিক একটি WETH কেনার জন্য ব্যবহার করতে পারতাম, কিন্তু সরলতার জন্য আমরা উভয় ক্ষেত্রেই শুধু `exactInput` ব্যবহার করি।
```python
account = w3.eth.account.from_key(PRIVATE_KEY)
@@ -831,7 +829,7 @@ swap_router = w3.eth.contract(
)
```
-[`account`](https://web3py.readthedocs.io/en/stable/web3.eth.account.html) এবং `SwapRouter` কন্ট্র্যাক্টের জন্য Web3 সংজ্ঞা।
+[`account`](https://web3py.readthedocs.io/en/stable/web3.eth.account.html) এবং `SwapRouter` কন্ট্রাক্টের জন্য Web3 সংজ্ঞাগুলো।
```python
def txn_params() -> dict:
@@ -843,13 +841,13 @@ def txn_params() -> dict:
}
```
-লেনদেনের প্যারামিটার। এখানে আমাদের একটি ফাংশন প্রয়োজন কারণ [নন্স](https://en.wikipedia.org/wiki/Cryptographic_nonce) প্রতিবার পরিবর্তন হতে হবে।
+লেনদেন প্যারামিটারগুলো। আমাদের এখানে একটি ফাংশন প্রয়োজন কারণ [নন্স](https://en.wikipedia.org/wiki/Cryptographic_nonce) প্রতিবার পরিবর্তন হতে হবে।
```python
def approve_token(contract: Contract, amount: int):
```
-`SwapRouter`-এর জন্য একটি টোকেন অ্যালাওয়েন্স অনুমোদন করুন।
+`SwapRouter`-এর জন্য একটি টোকেন অ্যালাউন্স অনুমোদন করুন।
```python
txn = contract.functions.approve(SWAP_ROUTER_ADDRESS, amount).build_transaction(txn_params())
@@ -857,15 +855,15 @@ def approve_token(contract: Contract, amount: int):
tx_hash = w3.eth.send_raw_transaction(signed_txn.raw_transaction)
```
-এভাবে আমরা Web3-এ একটি লেনদেন পাঠাই। প্রথমে আমরা লেনদেন তৈরি করতে [`Contract` অবজেক্ট](https://web3py.readthedocs.io/en/stable/web3.contract.html) ব্যবহার করি। তারপর আমরা `PRIVATE_KEY` ব্যবহার করে লেনদেন সাইন করতে [`web3.eth.account.sign_transaction`](https://web3py.readthedocs.io/en/stable/web3.eth.account.html#sign-a-contract-transaction) ব্যবহার করি। অবশেষে, আমরা লেনদেন পাঠাতে [`w3.eth.send_raw_transaction`](https://web3py.readthedocs.io/en/stable/transactions.html#chapter-2-w3-eth-send-raw-transaction) ব্যবহার করি।
+এভাবেই আমরা Web3-তে একটি লেনদেন পাঠাই। প্রথমে আমরা লেনদেন তৈরি করতে [`Contract` অবজেক্ট](https://web3py.readthedocs.io/en/stable/web3.contract.html) ব্যবহার করি। তারপর আমরা `PRIVATE_KEY` ব্যবহার করে লেনদেন সাইন করতে [`web3.eth.account.sign_transaction`](https://web3py.readthedocs.io/en/stable/web3.eth.account.html#sign-a-contract-transaction) ব্যবহার করি। সবশেষে, আমরা লেনদেন পাঠাতে [`w3.eth.send_raw_transaction`](https://web3py.readthedocs.io/en/stable/transactions.html#chapter-2-w3-eth-send-raw-transaction) ব্যবহার করি।
```python
- print(f"অনুমোদন লেনদেন পাঠানো হয়েছে: {tx_hash.hex()}")
+ print(f"Approve transaction sent: {tx_hash.hex()}")
w3.eth.wait_for_transaction_receipt(tx_hash)
- print("অনুমোদন লেনদেন মাইনিং করা হয়েছে।")
+ print("Approve transaction mined.")
```
-[`w3.eth.wait_for_transaction_receipt`](https://web3py.readthedocs.io/en/stable/web3.eth.html#web3.eth.Eth.wait_for_transaction_receipt) লেনদেন মাইনিং না হওয়া পর্যন্ত অপেক্ষা করে। প্রয়োজন হলে এটি রসিদ প্রদান করে।
+[`w3.eth.wait_for_transaction_receipt`](https://web3py.readthedocs.io/en/stable/web3.eth.html#web3.eth.Eth.wait_for_transaction_receipt) লেনদেন মাইন হওয়া পর্যন্ত অপেক্ষা করে। প্রয়োজন হলে এটি রসিদ ফেরত দেয়।
```python
SELL_PARAMS = {
@@ -877,7 +875,7 @@ SELL_PARAMS = {
}
```
-WETH বিক্রি করার সময় এইগুলি হল প্যারামিটার।
+WETH বিক্রি করার সময় এগুলো হলো প্যারামিটার।
```python
def make_buy_params(quote: Quote) -> dict:
@@ -890,7 +888,7 @@ def make_buy_params(quote: Quote) -> dict:
}
```
-`SELL_PARAMS`-এর বিপরীতে, কেনার প্যারামিটারগুলি পরিবর্তন হতে পারে। ইনপুট পরিমাণ হল 1 WETH-এর খরচ, যা `quote`-এ উপলব্ধ।
+`SELL_PARAMS`-এর বিপরীতে, ক্রয়ের প্যারামিটারগুলো পরিবর্তন হতে পারে। ইনপুট পরিমাণ হলো 1 WETH-এর খরচ, যা `quote`-এ উপলব্ধ।
```python
def buy(quote: Quote):
@@ -899,9 +897,9 @@ def buy(quote: Quote):
txn = swap_router.functions.exactInput(buy_params).build_transaction(txn_params())
signed_txn = w3.eth.account.sign_transaction(txn, private_key=PRIVATE_KEY)
tx_hash = w3.eth.send_raw_transaction(signed_txn.raw_transaction)
- print(f"কেনার লেনদেন পাঠানো হয়েছে: {tx_hash.hex()}")
+ print(f"Buy transaction sent: {tx_hash.hex()}")
w3.eth.wait_for_transaction_receipt(tx_hash)
- print("কেনার লেনদেন মাইনিং করা হয়েছে।")
+ print("Buy transaction mined.")
def sell():
@@ -910,71 +908,71 @@ def sell():
txn = swap_router.functions.exactInput(SELL_PARAMS).build_transaction(txn_params())
signed_txn = w3.eth.account.sign_transaction(txn, private_key=PRIVATE_KEY)
tx_hash = w3.eth.send_raw_transaction(signed_txn.raw_transaction)
- print(f"বিক্রয় লেনদেন পাঠানো হয়েছে: {tx_hash.hex()}")
+ print(f"Sell transaction sent: {tx_hash.hex()}")
w3.eth.wait_for_transaction_receipt(tx_hash)
- print("বিক্রয় লেনদেন মাইনিং করা হয়েছে।")
+ print("Sell transaction mined.")
```
-`buy()` এবং `sell()` ফাংশনগুলি প্রায় অভিন্ন। প্রথমে আমরা `SwapRouter`-এর জন্য একটি পর্যাপ্ত অ্যালাওয়েন্স অনুমোদন করি এবং তারপর আমরা সঠিক পাথ এবং পরিমাণ দিয়ে এটি কল করি।
+`buy()` এবং `sell()` ফাংশনগুলো প্রায় একই রকম। প্রথমে আমরা `SwapRouter`-এর জন্য পর্যাপ্ত অ্যালাউন্স অনুমোদন করি এবং তারপর আমরা সঠিক পাথ এবং পরিমাণ দিয়ে এটিকে কল করি।
```python
def balances():
token0_balance = wethusdc_pool.token0.contract.functions.balanceOf(account.address).call()
token1_balance = wethusdc_pool.token1.contract.functions.balanceOf(account.address).call()
- print(f"{wethusdc_pool.token0.symbol} ব্যালেন্স: {Decimal(token0_balance) / Decimal(10 ** wethusdc_pool.token0.decimals)}")
- print(f"{wethusdc_pool.token1.symbol} ব্যালেন্স: {Decimal(token1_balance) / Decimal(10 ** wethusdc_pool.token1.decimals)}")
+ print(f"{wethusdc_pool.token0.symbol} Balance: {Decimal(token0_balance) / Decimal(10 ** wethusdc_pool.token0.decimals)}")
+ print(f"{wethusdc_pool.token1.symbol} Balance: {Decimal(token1_balance) / Decimal(10 ** wethusdc_pool.token1.decimals)}")
```
-উভয় মুদ্রায় ব্যবহারকারীর ব্যালেন্স রিপোর্ট করুন।
+উভয় কারেন্সিতে ব্যবহারকারীর ব্যালেন্স রিপোর্ট করুন।
```python
-print("ট্রেডের আগে অ্যাকাউন্টের ব্যালেন্স:")
+print("Account balances before trade:")
balances()
if (expected_price > current_price):
- print(f"কিনুন, আমি আশা করি মূল্য {expected_price - current_price} USD বাড়বে")
+ print(f"Buy, I expect the price to go up by {expected_price - current_price} USD")
buy(wethusdc_quotes[-1])
else:
- print(f"বিক্রি করুন, আমি আশা করি মূল্য {current_price - expected_price} USD কমবে")
+ print(f"Sell, I expect the price to go down by {current_price - expected_price} USD")
sell()
-print("ট্রেডের পরে অ্যাকাউন্টের ব্যালেন্স:")
+print("Account balances after trade:")
balances()
```
-এই এজেন্ট বর্তমানে শুধুমাত্র একবার কাজ করে। তবে, আপনি এটিকে [`crontab`](https://man7.org/linux/man-pages/man1/crontab.1.html) থেকে চালিয়ে বা একটি লুপে 368-400 লাইনগুলি র্যাপ করে এবং পরবর্তী চক্রের জন্য অপেক্ষা করার জন্য [`time.sleep`](https://docs.python.org/3/library/time.html#time.sleep) ব্যবহার করে ক্রমাগত কাজ করার জন্য পরিবর্তন করতে পারেন।
+এই এজেন্টটি বর্তমানে কেবল একবার কাজ করে। তবে, আপনি এটিকে ক্রমাগত কাজ করার জন্য পরিবর্তন করতে পারেন, হয় এটিকে [`crontab`](https://man7.org/linux/man-pages/man1/crontab.1.html) থেকে রান করে অথবা 368-400 লাইনগুলোকে একটি লুপে র্যাপ করে এবং পরবর্তী সাইকেলের সময় না হওয়া পর্যন্ত অপেক্ষা করতে [`time.sleep`](https://docs.python.org/3/library/time.html#time.sleep) ব্যবহার করে।
-## সম্ভাব্য উন্নতি {#improvements}
+## সম্ভাব্য উন্নতিসমূহ {#improvements}
-এটি একটি সম্পূর্ণ প্রোডাকশন সংস্করণ নয়; এটি শুধুমাত্র মূল বিষয়গুলি শেখানোর জন্য একটি উদাহরণ। এখানে উন্নতির জন্য কিছু ধারণা দেওয়া হল।
+এটি কোনো সম্পূর্ণ প্রোডাকশন ভার্সন নয়; এটি কেবল বেসিক বিষয়গুলো শেখানোর একটি উদাহরণ। এখানে উন্নতির জন্য কিছু ধারণা দেওয়া হলো।
-### স্মার্ট ট্রেডিং {#smart-trading}
+### আরও স্মার্ট ট্রেডিং {#smart-trading}
-দুটি গুরুত্বপূর্ণ তথ্য রয়েছে যা এজেন্ট কী করতে হবে তা সিদ্ধান্ত নেওয়ার সময় উপেক্ষা করে।
+কী করতে হবে তা সিদ্ধান্ত নেওয়ার সময় এজেন্ট দুটি গুরুত্বপূর্ণ বিষয় উপেক্ষা করে।
-- _প্রত্যাশিত পরিবর্তনের মাত্রা_। মূল্য হ্রাসের মাত্রা নির্বিশেষে, যদি মূল্য হ্রাসের প্রত্যাশা করা হয় তবে এজেন্ট একটি নির্দিষ্ট পরিমাণ `WETH` বিক্রি করে।
- যুক্তিযুক্তভাবে, ছোটখাটো পরিবর্তন উপেক্ষা করা এবং আমরা কতটা মূল্য হ্রাসের প্রত্যাশা করি তার উপর ভিত্তি করে বিক্রি করা ভাল হবে।
-- _বর্তমান পোর্টফোলিও_। যদি আপনার পোর্টফোলিওর 10% WETH-এ থাকে এবং আপনি মনে করেন দাম বাড়বে, তাহলে সম্ভবত আরও কেনা যুক্তিযুক্ত। কিন্তু যদি আপনার পোর্টফোলিওর 90% WETH-এ থাকে, তাহলে আপনি যথেষ্ট এক্সপোজড হতে পারেন, এবং আরও কেনার প্রয়োজন নেই। আপনি যদি দাম কমার আশা করেন তবে এর বিপরীতটি সত্য।
+- _প্রত্যাশিত পরিবর্তনের মাত্রা_। দাম কমার সম্ভাবনা থাকলে এজেন্ট একটি নির্দিষ্ট পরিমাণ `WETH` বিক্রি করে, কমার মাত্রা যাই হোক না কেন।
+ যুক্তিযুক্তভাবে, ছোটখাটো পরিবর্তনগুলো উপেক্ষা করা এবং দাম কতটা কমবে বলে আমরা আশা করি তার উপর ভিত্তি করে বিক্রি করা ভালো হবে।
+- _বর্তমান পোর্টফোলিও_। যদি আপনার পোর্টফোলিওর 10% WETH-এ থাকে এবং আপনি মনে করেন যে দাম বাড়বে, তবে সম্ভবত আরও কেনা যৌক্তিক। কিন্তু যদি আপনার পোর্টফোলিওর 90% WETH-এ থাকে, তবে আপনি হয়তো যথেষ্ট এক্সপোজড, এবং আরও কেনার কোনো প্রয়োজন নেই। আপনি যদি দাম কমার আশা করেন তবে এর বিপরীতটি সত্য।
-### আপনি যদি আপনার ট্রেডিং কৌশল গোপন রাখতে চান তাহলে কী হবে? {#secret}
+### আপনি যদি আপনার ট্রেডিং কৌশল গোপন রাখতে চান তবে কী করবেন? {#secret}
-AI বিক্রেতারা তাদের LLM-গুলিতে আপনার পাঠানো কোয়েরিগুলি দেখতে পারে, যা আপনার এজেন্টের সাথে আপনি যে জিনিয়াস ট্রেডিং সিস্টেম তৈরি করেছেন তা প্রকাশ করতে পারে। একটি ট্রেডিং সিস্টেম যা অনেক লোক ব্যবহার করে তা মূল্যহীন কারণ যখন আপনি কিনতে চান তখন অনেক লোক কেনার চেষ্টা করে (এবং দাম বেড়ে যায়) এবং যখন আপনি বিক্রি করতে চান তখন বিক্রি করার চেষ্টা করে (এবং দাম কমে যায়)।
+AI ভেন্ডররা তাদের LLM-গুলোতে আপনার পাঠানো কোয়েরিগুলো দেখতে পারে, যা আপনার এজেন্টের সাথে তৈরি করা আপনার জিনিয়াস ট্রেডিং সিস্টেমকে প্রকাশ করতে পারে। এমন একটি ট্রেডিং সিস্টেম যা খুব বেশি মানুষ ব্যবহার করে তা মূল্যহীন কারণ আপনি যখন কিনতে চান তখন খুব বেশি মানুষ কেনার চেষ্টা করে (এবং দাম বেড়ে যায়) এবং আপনি যখন বিক্রি করতে চান তখন বিক্রি করার চেষ্টা করে (এবং দাম কমে যায়)।
-এই সমস্যা এড়াতে আপনি স্থানীয়ভাবে একটি LLM চালাতে পারেন, উদাহরণস্বরূপ, [LM-Studio](https://lmstudio.ai/) ব্যবহার করে।
+এই সমস্যা এড়াতে আপনি স্থানীয়ভাবে একটি LLM রান করতে পারেন, উদাহরণস্বরূপ, [LM-Studio](https://lmstudio.ai/) ব্যবহার করে।
### AI বট থেকে AI এজেন্ট {#bot-to-agent}
-আপনি একটি ভাল যুক্তি দিতে পারেন যে এটি [একটি AI বট, AI এজেন্ট নয়](/ai-agents/#ai-agents-vs-ai-bots)। এটি একটি তুলনামূলকভাবে সহজ কৌশল বাস্তবায়ন করে যা পূর্বনির্ধারিত তথ্যের উপর নির্ভর করে। আমরা স্ব-উন্নতি সক্ষম করতে পারি, উদাহরণস্বরূপ, Uniswap v3 পুল এবং তাদের সর্বশেষ মানগুলির একটি তালিকা প্রদান করে এবং জিজ্ঞাসা করে কোন সংমিশ্রণের সেরা ভবিষ্যদ্বাণীমূলক মান রয়েছে।
+আপনি একটি ভালো যুক্তি দিতে পারেন যে এটি [একটি AI বট, কোনো AI এজেন্ট নয়](/ai-agents/#ai-agents-vs-ai-bots)। এটি একটি অপেক্ষাকৃত সহজ কৌশল বাস্তবায়ন করে যা পূর্বনির্ধারিত তথ্যের উপর নির্ভর করে। আমরা সেলফ-ইমপ্রুভমেন্ট সক্ষম করতে পারি, উদাহরণস্বরূপ, Uniswap v3 পুলগুলোর একটি লিস্ট এবং তাদের সর্বশেষ মানগুলো প্রদান করে এবং জিজ্ঞাসা করে যে কোন কম্বিনেশনের সেরা প্রেডিক্টিভ ভ্যালু রয়েছে।
-### স্লিপেজ সুরক্ষা {#slippage-protection}
+### স্লিপেজ প্রোটেকশন {#slippage-protection}
-বর্তমানে কোনো [স্লিপেজ সুরক্ষা](https://uniswapv3book.com/milestone_3/slippage-protection.html) নেই। যদি বর্তমান কোট $2000 হয় এবং প্রত্যাশিত মূল্য $2100 হয়, এজেন্ট কিনবে। তবে, এজেন্ট কেনার আগে যদি খরচ $2200-এ বেড়ে যায়, তবে আর কেনার কোনো মানে হয় না।
+বর্তমানে কোনো [স্লিপেজ প্রোটেকশন](https://uniswapv3book.com/milestone_3/slippage-protection.html) নেই। যদি বর্তমান কোট $2000 হয় এবং প্রত্যাশিত দাম $2100 হয়, তবে এজেন্ট কিনবে। তবে, এজেন্ট কেনার আগে যদি খরচ বেড়ে $2200 হয়ে যায়, তবে আর কেনার কোনো মানে হয় না।
-স্লিপেজ সুরক্ষা বাস্তবায়ন করতে, [`agent.py`](https://github.com/qbzzt/260215-ai-agent/blob/05-trade/agent.py#L325)-এর 325 এবং 334 লাইনে একটি `amountOutMinimum` মান নির্দিষ্ট করুন।
+স্লিপেজ প্রোটেকশন বাস্তবায়ন করতে, [`agent.py`](https://github.com/qbzzt/260215-ai-agent/blob/05-trade/agent.py#L325)-এর 325 এবং 334 লাইনে একটি `amountOutMinimum` মান নির্দিষ্ট করুন।
## উপসংহার {#conclusion}
-আশা করি, এখন আপনি AI এজেন্টদের সাথে শুরু করার জন্য যথেষ্ট জানেন। এটি বিষয়টির একটি ব্যাপক ওভারভিউ নয়; এর জন্য পুরো বই উৎসর্গ করা হয়েছে, তবে এটি আপনাকে শুরু করার জন্য যথেষ্ট। শুভকামনা!
+আশা করি, এখন আপনি AI এজেন্টগুলো নিয়ে শুরু করার জন্য যথেষ্ট জানেন। এটি এই বিষয়ের কোনো বিস্তৃত ওভারভিউ নয়; এর জন্য পুরো বই নিবেদিত রয়েছে, তবে এটি আপনাকে শুরু করার জন্য যথেষ্ট। শুভকামনা!
-[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/bn/developers/tutorials/all-you-can-cache/index.md
new file mode 100644
index 00000000000..23c9dab3880
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/all-you-can-cache/index.md
@@ -0,0 +1,866 @@
+---
+title: "আপনি যা কিছু ক্যাশ করতে পারেন"
+description: সস্তা রোলআপ লেনদেনের জন্য কীভাবে একটি ক্যাশিং কন্ট্রাক্ট তৈরি এবং ব্যবহার করতে হয় তা শিখুন
+author: ওরি পোমেরান্টজ
+tags: ["লেয়ার ২", "ক্যাশিং", "স্টোরেজ", "স্কেলিং"]
+skill: intermediate
+breadcrumb: রেলআপস এর জন্য ক্যাশিং
+published: 2022-09-15
+lang: bn
+---
+
+রেলআপস ব্যবহার করার সময় লেনদেনের একটি বাইটের খরচ একটি স্টোরেজ স্লটের খরচের চেয়ে অনেক বেশি ব্যয়বহুল। অতএব, অনচেইন এ যতটা সম্ভব তথ্য ক্যাশ করা যৌক্তিক।
+
+এই নিবন্ধে আপনি শিখবেন কীভাবে এমনভাবে একটি ক্যাশিং কন্ট্রাক্ট তৈরি এবং ব্যবহার করতে হয় যাতে একাধিকবার ব্যবহার হওয়ার সম্ভাবনা রয়েছে এমন যেকোনো প্যারামিটার ভ্যালু ক্যাশ করা হবে এবং (প্রথমবারের পরে) অনেক কম সংখ্যক বাইট সহ ব্যবহারের জন্য উপলব্ধ থাকবে, এবং কীভাবে অফচেইন কোড লিখতে হয় যা এই ক্যাশ ব্যবহার করে।
+
+আপনি যদি নিবন্ধটি এড়িয়ে যেতে চান এবং শুধুমাত্র সোর্স কোড দেখতে চান, তবে [এটি এখানে আছে](https://github.com/qbzzt/20220915-all-you-can-cache)। ডেভেলপমেন্ট স্ট্যাক হলো [Foundry](https://getfoundry.sh/introduction/installation/)।
+
+## সামগ্রিক ডিজাইন {#overall-design}
+
+সরলতার খাতিরে আমরা ধরে নেব সমস্ত লেনদেন প্যারামিটার হলো `uint256`, যা 32 বাইট দীর্ঘ। যখন আমরা একটি লেনদেন পাই, তখন আমরা প্রতিটি প্যারামিটারকে এভাবে পার্স করব:
+
+1. যদি প্রথম বাইট `0xFF` হয়, তবে পরবর্তী 32 বাইটকে একটি প্যারামিটার ভ্যালু হিসেবে নিন এবং এটি ক্যাশে লিখুন।
+
+2. যদি প্রথম বাইট `0xFE` হয়, তবে পরবর্তী 32 বাইটকে একটি প্যারামিটার ভ্যালু হিসেবে নিন কিন্তু এটি ক্যাশে লিখবেন _না_।
+
+3. অন্য যেকোনো ভ্যালুর জন্য, শীর্ষ চারটি বিটকে অতিরিক্ত বাইটের সংখ্যা হিসেবে নিন এবং নিচের চারটি বিটকে ক্যাশ কি-এর সবচেয়ে গুরুত্বপূর্ণ বিট হিসেবে নিন। এখানে কিছু উদাহরণ দেওয়া হলো:
+
+ | কলডাটায় বাইট | ক্যাশ কি |
+ | :---------------- | --------: |
+ | 0x0F | 0x0F |
+ | 0x10,0x10 | 0x10 |
+ | 0x12,0xAC | 0x02AC |
+ | 0x2D,0xEA, 0xD6 | 0x0DEAD6 |
+
+## ক্যাশ ম্যানিপুলেশন {#cache-manipulation}
+
+ক্যাশটি [`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol)-এ প্রয়োগ করা হয়েছে। চলুন এটি লাইন বাই লাইন দেখে নিই।
+
+```solidity
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+
+contract Cache {
+
+ bytes1 public constant INTO_CACHE = 0xFF;
+ bytes1 public constant DONT_CACHE = 0xFE;
+```
+
+এই ধ্রুবকগুলো (constants) সেই বিশেষ ক্ষেত্রগুলো ব্যাখ্যা করতে ব্যবহৃত হয় যেখানে আমরা সমস্ত তথ্য প্রদান করি এবং এটি ক্যাশে লিখতে চাই বা চাই না। ক্যাশে লেখার জন্য পূর্বে অব্যবহৃত স্টোরেজ স্লটগুলোতে দুটি [`SSTORE`](https://www.evm.codes/#55) অপারেশনের প্রয়োজন হয়, যার প্রতিটির খরচ 22100 গ্যাস, তাই আমরা এটিকে ঐচ্ছিক করে তুলি।
+
+```solidity
+
+ mapping(uint => uint) public val2key;
+```
+
+ভ্যালু এবং তাদের কি-গুলোর মধ্যে একটি [ম্যাপিং](https://www.geeksforgeeks.org/solidity/solidity-mappings/)। আপনি লেনদেন পাঠানোর আগে ভ্যালুগুলোকে এনকোড করার জন্য এই তথ্যটি প্রয়োজনীয়।
+
+```solidity
+ // লোকেশন n-এ key n+1 এর ভ্যালু আছে, কারণ আমাদের সংরক্ষণ করতে হবে
+ // শূন্যকে "ক্যাশে নেই" হিসেবে।
+ uint[] public key2val;
+```
+
+আমরা কি থেকে ভ্যালুতে ম্যাপিংয়ের জন্য একটি অ্যারে ব্যবহার করতে পারি কারণ আমরা কি-গুলো নির্ধারণ করি এবং সরলতার জন্য আমরা এটি ক্রমানুসারে করি।
+
+```solidity
+ function cacheRead(uint _key) public view returns (uint) {
+ require(_key <= key2val.length, "Reading uninitialize cache entry");
+ return key2val[_key-1];
+ } // cacheRead
+```
+
+ক্যাশ থেকে একটি ভ্যালু পড়ুন।
+
+```solidity
+ // যদি ভ্যালুটি আগে থেকেই ক্যাশে না থাকে, তবে এটি ক্যাশে লিখুন
+ // শুধুমাত্র টেস্ট কাজ করার জন্য পাবলিক করা হয়েছে
+ function cacheWrite(uint _value) public returns (uint) {
+ // যদি ভ্যালুটি আগে থেকেই ক্যাশে থাকে, তবে বর্তমান কী (key) রিটার্ন করুন
+ if (val2key[_value] != 0) {
+ return val2key[_value];
+ }
+```
+
+একই ভ্যালু একাধিকবার ক্যাশে রাখার কোনো মানে নেই। যদি ভ্যালুটি আগে থেকেই সেখানে থাকে, তবে কেবল বিদ্যমান কি-টি রিটার্ন করুন।
+
+```solidity
+ // যেহেতু 0xFE একটি বিশেষ ক্ষেত্র, ক্যাশ ধারণ করতে পারে এমন সবচেয়ে বড় কী (key) হলো
+ // 0x0D এবং এরপরে ১৫টি 0xFF। যদি ক্যাশের দৈর্ঘ্য আগে থেকেই এত
+ // বড় হয়, তবে ফেইল করবে।
+ // 1 2 3 4 5 6 7 8 9 A B C D E F
+ require(key2val.length+1 < 0x0DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,
+ "cache overflow");
+```
+
+আমার মনে হয় না আমরা কখনো এত বড় ক্যাশ পাব (প্রায় 1.8\*1037 এন্ট্রি, যা সংরক্ষণ করতে প্রায় 1027 TB প্রয়োজন হবে)। তবে, আমার বয়স যথেষ্ট হয়েছে এটা মনে রাখার জন্য যে ["640kB সর্বদা যথেষ্ট হবে"](https://quoteinvestigator.com/2011/09/08/640k-enough/)। এই পরীক্ষাটি খুব সস্তা।
+
+```solidity
+ // পরবর্তী কী (key) ব্যবহার করে ভ্যালুটি লিখুন
+ val2key[_value] = key2val.length+1;
+```
+
+রিভার্স লুকআপ যোগ করুন (ভ্যালু থেকে কি-তে)।
+
+```solidity
+ key2val.push(_value);
+```
+
+ফরোয়ার্ড লুকআপ যোগ করুন (কি থেকে ভ্যালুতে)। যেহেতু আমরা ক্রমানুসারে ভ্যালু নির্ধারণ করি, তাই আমরা এটিকে শেষ অ্যারে ভ্যালুর পরে যোগ করতে পারি।
+
+```solidity
+ return key2val.length;
+ } // cacheWrite
+```
+
+`key2val`-এর নতুন দৈর্ঘ্য রিটার্ন করুন, যা হলো সেই সেল যেখানে নতুন ভ্যালুটি সংরক্ষিত আছে।
+
+```solidity
+ function _calldataVal(uint startByte, uint length)
+ private pure returns (uint)
+```
+
+এই ফাংশনটি যেকোনো দৈর্ঘ্যের (32 বাইট পর্যন্ত, ওয়ার্ড সাইজ) কলডাটা থেকে একটি ভ্যালু পড়ে।
+
+```solidity
+ {
+ uint _retVal;
+
+ require(length < 0x21,
+ "_calldataVal length limit is 32 bytes");
+ require(length + startByte <= msg.data.length,
+ "_calldataVal trying to read beyond calldatasize");
+```
+
+এই ফাংশনটি ইন্টারনাল, তাই যদি বাকি কোডটি সঠিকভাবে লেখা হয় তবে এই পরীক্ষাগুলোর প্রয়োজন নেই। তবে, এগুলোর খরচ খুব বেশি নয় তাই আমরা এগুলো রাখতে পারি।
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+এই কোডটি [Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html)-এ লেখা। এটি কলডাটা থেকে একটি 32 বাইট ভ্যালু পড়ে। এটি কাজ করে এমনকি যদি কলডাটা `startByte+32`-এর আগে থেমে যায় কারণ EVM-এ আনইনিশিয়ালাইজড স্পেসকে শূন্য হিসেবে বিবেচনা করা হয়।
+
+```solidity
+ _retVal = _retVal >> (256-length*8);
+```
+
+আমরা অগত্যা একটি 32 বাইট ভ্যালু চাই না। এটি অতিরিক্ত বাইটগুলো থেকে মুক্তি দেয়।
+
+```solidity
+ return _retVal;
+ } // _calldataVal
+
+
+ // _fromByte থেকে শুরু করে কলডেটা (calldata) থেকে একটি একক প্যারামিটার পড়ুন
+ function _readParam(uint _fromByte) internal
+ returns (uint _nextByte, uint _parameterValue)
+ {
+```
+
+কলডাটা থেকে একটি একক প্যারামিটার পড়ুন। মনে রাখবেন যে আমাদের কেবল পঠিত ভ্যালুটিই রিটার্ন করতে হবে না, বরং পরবর্তী বাইটের অবস্থানও রিটার্ন করতে হবে কারণ প্যারামিটারগুলো 1 বাইট থেকে 33 বাইট পর্যন্ত দীর্ঘ হতে পারে।
+
+```solidity
+ // প্রথম বাইট আমাদের বলে দেয় কীভাবে বাকি অংশকে ব্যাখ্যা করতে হবে
+ uint8 _firstByte;
+
+ _firstByte = uint8(_calldataVal(_fromByte, 1));
+```
+
+সলিডিটি সম্ভাব্য বিপজ্জনক [ইমপ্লিসিট টাইপ কনভার্সন](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions) নিষিদ্ধ করে বাগের সংখ্যা কমানোর চেষ্টা করে। একটি ডাউনগ্রেড, উদাহরণস্বরূপ 256 বিট থেকে 8 বিটে, এক্সপ্লিসিট হতে হবে।
+
+```solidity
+
+ // ভ্যালুটি পড়ুন, কিন্তু এটি ক্যাশে লিখবেন না
+ if (_firstByte == uint8(DONT_CACHE))
+ return(_fromByte+33, _calldataVal(_fromByte+1, 32));
+
+ // ভ্যালুটি পড়ুন এবং এটি ক্যাশে লিখুন
+ if (_firstByte == uint8(INTO_CACHE)) {
+ uint _param = _calldataVal(_fromByte+1, 32);
+ cacheWrite(_param);
+ return(_fromByte+33, _param);
+ }
+
+ // যদি আমরা এখানে পৌঁছাই, তার মানে আমাদের ক্যাশ থেকে পড়তে হবে
+
+ // পড়ার জন্য অতিরিক্ত বাইটের সংখ্যা
+ uint8 _extraBytes = _firstByte / 16;
+```
+
+নিচের [নিবল (nibble)](https://en.wikipedia.org/wiki/Nibble) নিন এবং ক্যাশ থেকে ভ্যালুটি পড়ার জন্য এটিকে অন্যান্য বাইটের সাথে একত্রিত করুন।
+
+```solidity
+ uint _key = (uint256(_firstByte & 0x0F) << (8*_extraBytes)) +
+ _calldataVal(_fromByte+1, _extraBytes);
+
+ return (_fromByte+_extraBytes+1, cacheRead(_key));
+
+ } // _readParam
+
+
+ // n সংখ্যক প্যারামিটার পড়ুন (ফাংশনগুলো জানে তারা কতগুলো প্যারামিটার আশা করে)
+ function _readParams(uint _paramNum) internal returns (uint[] memory) {
+```
+
+আমরা কলডাটা থেকেই আমাদের কাছে থাকা প্যারামিটারের সংখ্যা পেতে পারতাম, কিন্তু যে ফাংশনগুলো আমাদের কল করে তারা জানে যে তারা কতগুলো প্যারামিটার আশা করে। তাদের আমাদের বলতে দেওয়াটা সহজ।
+
+```solidity
+ // যে প্যারামিটারগুলো আমরা পড়েছি
+ uint[] memory params = new uint[](_paramNum);
+
+ // প্যারামিটারগুলো বাইট ৪ থেকে শুরু হয়, এর আগে থাকে ফাংশন সিগনেচার
+ uint _atByte = 4;
+
+ for(uint i=0; i<_paramNum; i++) {
+ (_atByte, params[i]) = _readParam(_atByte);
+ }
+```
+
+আপনার প্রয়োজনীয় সংখ্যা না পাওয়া পর্যন্ত প্যারামিটারগুলো পড়ুন। যদি আমরা কলডাটার শেষ পেরিয়ে যাই, তবে `_readParams` কলটি রিভার্ট করবে।
+
+```solidity
+
+ return(params);
+ } // readParams
+
+ // _readParams টেস্ট করার জন্য, চারটি প্যারামিটার পড়ার টেস্ট করুন
+ function fourParam() public
+ returns (uint256,uint256,uint256,uint256)
+ {
+ uint[] memory params;
+ params = _readParams(4);
+ return (params[0], params[1], params[2], params[3]);
+ } // fourParam
+```
+
+Foundry-এর একটি বড় সুবিধা হলো এটি সলিডিটিতে পরীক্ষা লেখার অনুমতি দেয় ([নিচে ক্যাশ টেস্টিং দেখুন](#testing-the-cache))। এটি ইউনিট টেস্টগুলোকে অনেক সহজ করে তোলে। এটি এমন একটি ফাংশন যা চারটি প্যারামিটার পড়ে এবং সেগুলো রিটার্ন করে যাতে পরীক্ষাটি যাচাই করতে পারে যে সেগুলো সঠিক ছিল।
+
+```solidity
+ // একটি ভ্যালু নিন, এমন বাইট রিটার্ন করুন যা এটিকে এনকোড করবে (সম্ভব হলে ক্যাশ ব্যবহার করে)
+ function encodeVal(uint _val) public view returns(bytes memory) {
+```
+
+`encodeVal` হলো এমন একটি ফাংশন যা অফচেইন কোড কল করে কলডাটা তৈরি করতে সাহায্য করার জন্য যা ক্যাশ ব্যবহার করে। এটি একটি একক ভ্যালু গ্রহণ করে এবং এটিকে এনকোড করা বাইটগুলো রিটার্ন করে। এই ফাংশনটি একটি `view`, তাই এর জন্য কোনো লেনদেন প্রয়োজন হয় না এবং বাহ্যিকভাবে কল করা হলে কোনো গ্যাস খরচ হয় না।
+
+```solidity
+ uint _key = val2key[_val];
+
+ // ভ্যালুটি এখনও ক্যাশে নেই, এটি যোগ করুন
+ if (_key == 0)
+ return bytes.concat(INTO_CACHE, bytes32(_val));
+```
+
+[EVM](/developers/docs/evm/)-এ সমস্ত আনইনিশিয়ালাইজড স্টোরেজকে শূন্য বলে ধরে নেওয়া হয়। তাই যদি আমরা এমন কোনো ভ্যালুর জন্য কি খুঁজি যা সেখানে নেই, তবে আমরা একটি শূন্য পাই। সেক্ষেত্রে এটিকে এনকোড করা বাইটগুলো হলো `INTO_CACHE` (যাতে এটি পরের বার ক্যাশ করা হয়), যার পরে প্রকৃত ভ্যালুটি থাকে।
+
+```solidity
+ // যদি কী (key) <0x10 হয়, তবে এটিকে একটি একক বাইট হিসেবে রিটার্ন করুন
+ if (_key < 0x10)
+ return bytes.concat(bytes1(uint8(_key)));
+```
+
+একক বাইটগুলো সবচেয়ে সহজ। আমরা কেবল [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat) ব্যবহার করি একটি `bytes` টাইপকে একটি বাইট অ্যারেতে পরিণত করতে যা যেকোনো দৈর্ঘ্যের হতে পারে। নাম সত্ত্বেও, এটি শুধুমাত্র একটি আর্গুমেন্ট প্রদান করা হলে ঠিকঠাক কাজ করে।
+
+```solidity
+ // দুই বাইটের ভ্যালু, 0x1vvv হিসেবে এনকোড করা
+ if (_key < 0x1000)
+ return bytes.concat(bytes2(uint16(_key) | 0x1000));
+```
+
+যখন আমাদের কাছে এমন একটি কি থাকে যা 163-এর কম, তখন আমরা এটিকে দুই বাইটে প্রকাশ করতে পারি। আমরা প্রথমে `_key`-কে, যা একটি 256 বিট ভ্যালু, একটি 16 বিট ভ্যালুতে রূপান্তর করি এবং প্রথম বাইটে অতিরিক্ত বাইটের সংখ্যা যোগ করতে লজিক্যাল অর (or) ব্যবহার করি। তারপর আমরা এটিকে একটি `bytes2` ভ্যালুতে পরিণত করি, যা `bytes`-এ রূপান্তরিত হতে পারে।
+
+```solidity
+ // নিচের লাইনগুলোকে লুপ হিসেবে করার হয়তো কোনো চতুর উপায় আছে,
+ // কিন্তু এটি একটি ভিউ (view) ফাংশন, তাই আমি প্রোগ্রামারের সময় এবং
+ // সরলতার জন্য অপ্টিমাইজ করছি।
+
+ if (_key < 16*256**2)
+ return bytes.concat(bytes3(uint24(_key) | (0x2 * 16 * 256**2)));
+ if (_key < 16*256**3)
+ return bytes.concat(bytes4(uint32(_key) | (0x3 * 16 * 256**3)));
+ .
+ .
+ .
+ if (_key < 16*256**14)
+ return bytes.concat(bytes15(uint120(_key) | (0xE * 16 * 256**14)));
+ if (_key < 16*256**15)
+ return bytes.concat(bytes16(uint128(_key) | (0xF * 16 * 256**15)));
+```
+
+অন্যান্য ভ্যালুগুলো (3 বাইট, 4 বাইট ইত্যাদি) একইভাবে পরিচালনা করা হয়, শুধুমাত্র ভিন্ন ফিল্ড সাইজ সহ।
+
+```solidity
+ // যদি আমরা এখানে পৌঁছাই, তবে কোথাও কোনো ভুল আছে।
+ revert("Error in encodeVal, should not happen");
+```
+
+যদি আমরা এখানে পৌঁছাই তবে এর মানে হলো আমরা এমন একটি কি পেয়েছি যা 16\*25615-এর কম নয়। কিন্তু `cacheWrite` কি-গুলোকে সীমাবদ্ধ করে তাই আমরা 14\*25616 পর্যন্তও পৌঁছাতে পারি না (যার প্রথম বাইট 0xFE হবে, তাই এটি `DONT_CACHE`-এর মতো দেখাবে)। তবে ভবিষ্যতের কোনো প্রোগ্রামার যদি কোনো বাগ প্রবর্তন করে, তার জন্য একটি পরীক্ষা যোগ করতে আমাদের খুব বেশি খরচ হয় না।
+
+```solidity
+ } // encodeVal
+
+} // ক্যাশ
+```
+
+### ক্যাশ টেস্টিং {#testing-the-cache}
+
+Foundry-এর অন্যতম সুবিধা হলো [এটি আপনাকে সলিডিটিতে পরীক্ষা লেখার সুযোগ দেয়](https://getfoundry.sh/forge/tests/overview/), যা ইউনিট টেস্ট লেখা সহজ করে তোলে। `Cache` ক্লাসের পরীক্ষাগুলো [এখানে](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol) রয়েছে। যেহেতু টেস্টিং কোড পুনরাবৃত্তিমূলক হয়, যেমনটা পরীক্ষাগুলোর ক্ষেত্রে হয়ে থাকে, এই নিবন্ধটি কেবল আকর্ষণীয় অংশগুলো ব্যাখ্যা করে।
+
+```solidity
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+import "forge-std/Test.sol";
+
+
+// কনসোলের জন্য `forge test -vv` রান করতে হবে।
+import "forge-std/console.sol";
+```
+
+এটি কেবল বয়লারপ্লেট যা টেস্ট প্যাকেজ এবং `console.log` ব্যবহার করার জন্য প্রয়োজনীয়।
+
+```solidity
+import "src/Cache.sol";
+```
+
+আমরা যে কন্ট্রাক্টটি পরীক্ষা করছি তা আমাদের জানতে হবে।
+
+```solidity
+contract CacheTest is Test {
+ Cache cache;
+
+ function setUp() public {
+ cache = new Cache();
+ }
+```
+
+প্রতিটি পরীক্ষার আগে `setUp` ফাংশনটি কল করা হয়। এই ক্ষেত্রে আমরা কেবল একটি নতুন ক্যাশ তৈরি করি, যাতে আমাদের পরীক্ষাগুলো একে অপরকে প্রভাবিত না করে।
+
+```solidity
+ function testCaching() public {
+```
+
+পরীক্ষাগুলো হলো এমন ফাংশন যাদের নাম `test` দিয়ে শুরু হয়। এই ফাংশনটি মৌলিক ক্যাশ কার্যকারিতা পরীক্ষা করে, ভ্যালুগুলো লেখে এবং সেগুলো আবার পড়ে।
+
+```solidity
+ for(uint i=1; i<5000; i++) {
+ cache.cacheWrite(i*i);
+ }
+
+ for(uint i=1; i<5000; i++) {
+ assertEq(cache.cacheRead(i), i*i);
+```
+
+এভাবেই আপনি প্রকৃত টেস্টিং করেন, [`assert...` ফাংশনগুলো](https://getfoundry.sh/reference/forge-std/std-assertions/) ব্যবহার করে। এই ক্ষেত্রে, আমরা পরীক্ষা করি যে আমরা যে ভ্যালুটি লিখেছি সেটিই আমরা পড়েছি। আমরা `cache.cacheWrite`-এর ফলাফল বাতিল করতে পারি কারণ আমরা জানি যে ক্যাশ কি-গুলো লিনিয়ারলি নির্ধারিত হয়।
+
+```solidity
+ }
+ } // testCaching
+
+
+ // একই ভ্যালু একাধিকবার ক্যাশ করুন, নিশ্চিত করুন যে কী (key) একই
+ // থাকে
+ function testRepeatCaching() public {
+ for(uint i=1; i<100; i++) {
+ uint _key1 = cache.cacheWrite(i);
+ uint _key2 = cache.cacheWrite(i);
+ assertEq(_key1, _key2);
+ }
+```
+
+প্রথমে আমরা প্রতিটি ভ্যালু ক্যাশে দুবার লিখি এবং নিশ্চিত করি যে কি-গুলো একই (যার মানে দ্বিতীয় লেখাটি আসলে ঘটেনি)।
+
+```solidity
+ for(uint i=1; i<100; i+=3) {
+ uint _key = cache.cacheWrite(i);
+ assertEq(_key, i);
+ }
+ } // testRepeatCaching
+```
+
+তাত্ত্বিকভাবে এমন একটি বাগ থাকতে পারে যা পরপর ক্যাশ রাইটগুলোকে প্রভাবিত করে না। তাই এখানে আমরা কিছু রাইট করি যা পরপর নয় এবং দেখি যে ভ্যালুগুলো এখনো পুনরায় লেখা হয়নি।
+
+```solidity
+ // মেমরি বাফার থেকে একটি uint পড়ুন (আমরা যে প্যারামিটারগুলো
+ // পাঠিয়েছিলাম তা ফেরত পাচ্ছি কিনা তা নিশ্চিত করতে)
+ function toUint256(bytes memory _bytes, uint256 _start) internal pure
+ returns (uint256)
+```
+
+একটি `bytes memory` বাফার থেকে একটি 256 বিট ওয়ার্ড পড়ুন। এই ইউটিলিটি ফাংশনটি আমাদের যাচাই করতে দেয় যে আমরা যখন ক্যাশ ব্যবহার করে এমন একটি ফাংশন কল চালাই তখন আমরা সঠিক ফলাফল পাই।
+
+```solidity
+ {
+ require(_bytes.length >= _start + 32, "toUint256_outOfBounds");
+ uint256 tempUint;
+
+ assembly {
+ tempUint := mload(add(add(_bytes, 0x20), _start))
+ }
+```
+
+Yul `uint256`-এর বাইরের ডেটা স্ট্রাকচার সমর্থন করে না, তাই যখন আপনি আরও পরিশীলিত ডেটা স্ট্রাকচার, যেমন মেমরি বাফার `_bytes`-এর উল্লেখ করেন, তখন আপনি সেই স্ট্রাকচারের এডড্রেস পান। সলিডিটি `bytes memory` ভ্যালুগুলোকে একটি 32 বাইট ওয়ার্ড হিসেবে সংরক্ষণ করে যাতে দৈর্ঘ্য থাকে, যার পরে প্রকৃত বাইটগুলো থাকে, তাই বাইট নম্বর `_start` পেতে আমাদের `_bytes+32+_start` গণনা করতে হবে।
+
+```solidity
+
+ return tempUint;
+ } // toUint256
+
+ // fourParams() এর জন্য ফাংশন সিগনেচার, সৌজন্যে
+ // https://www.4byte.directory/signatures/?bytes4_signature=0x3edc1e6d
+ bytes4 constant FOUR_PARAMS = 0x3edc1e6d;
+
+ // আমরা সঠিক ভ্যালু ফেরত পাচ্ছি কিনা তা দেখার জন্য কিছু কনস্ট্যান্ট ভ্যালু
+ uint256 constant VAL_A = 0xDEAD60A7;
+ uint256 constant VAL_B = 0xBEEF;
+ uint256 constant VAL_C = 0x600D;
+ uint256 constant VAL_D = 0x600D60A7;
+```
+
+টেস্টিংয়ের জন্য আমাদের কিছু ধ্রুবক প্রয়োজন।
+
+```solidity
+ function testReadParam() public {
+```
+
+`fourParams()` কল করুন, একটি ফাংশন যা `readParams` ব্যবহার করে, এটি পরীক্ষা করতে যে আমরা প্যারামিটারগুলো সঠিকভাবে পড়তে পারি।
+
+```solidity
+ address _cacheAddr = address(cache);
+ bool _success;
+ bytes memory _callInput;
+ bytes memory _callOutput;
+```
+
+আমরা ক্যাশ ব্যবহার করে একটি ফাংশন কল করার জন্য সাধারণ ABI মেকানিজম ব্যবহার করতে পারি না, তাই আমাদের লো লেভেল [`.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses) মেকানিজম ব্যবহার করতে হবে। সেই মেকানিজমটি ইনপুট হিসেবে একটি `bytes memory` নেয় এবং আউটপুট হিসেবে সেটি (পাশাপাশি একটি বুলিয়ান ভ্যালু) রিটার্ন করে।
+
+```solidity
+ // প্রথম কল, ক্যাশ খালি আছে
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+```
+
+একই কন্ট্রাক্টের জন্য ক্যাশড ফাংশন (সরাসরি লেনদেন থেকে কলের জন্য) এবং নন-ক্যাশড ফাংশন (অন্যান্য স্মার্ট কন্ট্রাক্ট থেকে কলের জন্য) উভয়ই সমর্থন করা দরকারী। এটি করার জন্য আমাদের সবকিছু [একটি `fallback` ফাংশনে](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function) রাখার পরিবর্তে সঠিক ফাংশনটি কল করার জন্য সলিডিটি মেকানিজমের ওপর নির্ভর করা চালিয়ে যেতে হবে। এটি করা কম্পোজেবিলিটিকে অনেক সহজ করে তোলে। বেশিরভাগ ক্ষেত্রে ফাংশনটি সনাক্ত করার জন্য একটি একক বাইটই যথেষ্ট হবে, তাই আমরা তিনটি বাইট (16\*3=48 গ্যাস) নষ্ট করছি। তবে, আমি যখন এটি লিখছি তখন সেই 48 গ্যাসের দাম 0.07 সেন্ট, যা সহজ, কম বাগ প্রবণ কোডের জন্য একটি যুক্তিসঙ্গত খরচ।
+
+```solidity
+ // প্রথম ভ্যালু, এটি ক্যাশে যোগ করুন
+ cache.INTO_CACHE(),
+ bytes32(VAL_A),
+```
+
+প্রথম ভ্যালু: একটি ফ্ল্যাগ যা বলে যে এটি একটি সম্পূর্ণ ভ্যালু যা ক্যাশে লেখা দরকার, যার পরে ভ্যালুটির 32 বাইট থাকে। অন্য তিনটি ভ্যালু একই রকম, তবে `VAL_B` ক্যাশে লেখা হয় না এবং `VAL_C` হলো তৃতীয় প্যারামিটার এবং চতুর্থ প্যারামিটার উভয়ই।
+
+```solidity
+ .
+ .
+ .
+ );
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+```
+
+এখানেই আমরা আসলে `Cache` কন্ট্রাক্টটি কল করি।
+
+```solidity
+ assertEq(_success, true);
+```
+
+আমরা আশা করি কলটি সফল হবে।
+
+```solidity
+ assertEq(cache.cacheRead(1), VAL_A);
+ assertEq(cache.cacheRead(2), VAL_C);
+```
+
+আমরা একটি খালি ক্যাশ দিয়ে শুরু করি এবং তারপর `VAL_A` যোগ করি যার পরে `VAL_C` থাকে। আমরা আশা করব প্রথমটির কি 1 হবে এবং দ্বিতীয়টির 2 হবে।
+
+```
+ assertEq(toUint256(_callOutput,0), VAL_A);
+ assertEq(toUint256(_callOutput,32), VAL_B);
+ assertEq(toUint256(_callOutput,64), VAL_C);
+ assertEq(toUint256(_callOutput,96), VAL_C);
+```
+
+আউটপুট হলো চারটি প্যারামিটার। এখানে আমরা যাচাই করি যে এটি সঠিক।
+
+```solidity
+ // দ্বিতীয় কল, আমরা ক্যাশ ব্যবহার করতে পারি
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // ক্যাশে প্রথম ভ্যালু
+ bytes1(0x01),
+```
+
+16-এর নিচের ক্যাশ কি-গুলো মাত্র এক বাইটের।
+
+```solidity
+ // দ্বিতীয় ভ্যালু, এটি ক্যাশে যোগ করবেন না
+ cache.DONT_CACHE(),
+ bytes32(VAL_B),
+
+ // তৃতীয় এবং চতুর্থ ভ্যালু, একই ভ্যালু
+ bytes1(0x02),
+ bytes1(0x02)
+ );
+ .
+ .
+ .
+ } // testReadParam
+```
+
+কলের পরের পরীক্ষাগুলো প্রথম কলের পরের পরীক্ষাগুলোর মতোই।
+
+```solidity
+ function testEncodeVal() public {
+```
+
+এই ফাংশনটি `testReadParam`-এর মতোই, তবে প্যারামিটারগুলো স্পষ্টভাবে লেখার পরিবর্তে আমরা `encodeVal()` ব্যবহার করি।
+
+```solidity
+ .
+ .
+ .
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+ cache.encodeVal(VAL_A),
+ cache.encodeVal(VAL_B),
+ cache.encodeVal(VAL_C),
+ cache.encodeVal(VAL_D)
+ );
+ .
+ .
+ .
+ assertEq(_callInput.length, 4+1*4);
+ } // testEncodeVal
+```
+
+`testEncodeVal()`-এ একমাত্র অতিরিক্ত পরীক্ষা হলো `_callInput`-এর দৈর্ঘ্য সঠিক কিনা তা যাচাই করা। প্রথম কলের জন্য এটি 4+33\*4। দ্বিতীয়টির জন্য, যেখানে প্রতিটি ভ্যালু আগে থেকেই ক্যাশে রয়েছে, এটি 4+1\*4।
+
+```solidity
+ // কী (key) যখন একটি একক বাইটের চেয়ে বড় হয় তখন encodeVal টেস্ট করুন
+ // সর্বোচ্চ তিন বাইট কারণ ক্যাশ চার বাইট পর্যন্ত পূর্ণ করতে অনেক
+ // বেশি সময় লাগে।
+ function testEncodeValBig() public {
+ // ক্যাশে বেশ কিছু ভ্যালু রাখুন।
+ // বিষয়গুলো সহজ রাখতে, ভ্যালু n এর জন্য কী (key) n ব্যবহার করুন।
+ for(uint i=1; i<0x1FFF; i++) {
+ cache.cacheWrite(i);
+ }
+```
+
+ওপরের `testEncodeVal` ফাংশনটি ক্যাশে কেবল চারটি ভ্যালু লেখে, তাই [ফাংশনের যে অংশটি মাল্টি-বাইট ভ্যালুগুলো নিয়ে কাজ করে](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171) তা চেক করা হয় না। কিন্তু সেই কোডটি জটিল এবং ত্রুটি-প্রবণ।
+
+এই ফাংশনের প্রথম অংশটি হলো একটি লুপ যা 1 থেকে 0x1FFF পর্যন্ত সমস্ত ভ্যালু ক্রমানুসারে ক্যাশে লেখে, যাতে আমরা সেই ভ্যালুগুলোকে এনকোড করতে পারি এবং জানতে পারি সেগুলো কোথায় যাচ্ছে।
+
+```solidity
+ .
+ .
+ .
+
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+ cache.encodeVal(0x000F), // এক বাইট 0x0F
+ cache.encodeVal(0x0010), // দুই বাইট 0x1010
+ cache.encodeVal(0x0100), // দুই বাইট 0x1100
+ cache.encodeVal(0x1000) // তিন বাইট 0x201000
+ );
+```
+
+এক বাইট, দুই বাইট এবং তিন বাইট ভ্যালু পরীক্ষা করুন। আমরা এর বাইরে পরীক্ষা করি না কারণ পর্যাপ্ত স্ট্যাক এন্ট্রি লিখতে খুব বেশি সময় লাগবে (অন্তত 0x10000000, প্রায় এক বিলিয়নের এক চতুর্থাংশ)।
+
+```solidity
+ .
+ .
+ .
+ .
+ } // testEncodeValBig
+
+
+ // অত্যধিক ছোট বাফারের সাথে আমরা রিভার্ট (revert) পাই কিনা তা টেস্ট করুন
+ function testShortCalldata() public {
+```
+
+অস্বাভাবিক ক্ষেত্রে কী ঘটে তা পরীক্ষা করুন যেখানে পর্যাপ্ত প্যারামিটার নেই।
+
+```solidity
+ .
+ .
+ .
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+ assertEq(_success, false);
+ } // testShortCalldata
+```
+
+যেহেতু এটি রিভার্ট করে, তাই আমাদের যে ফলাফল পাওয়া উচিত তা হলো `false`।
+
+```
+ // Call with cache keys that aren't there
+ function testNoCacheKey() public {
+ .
+ .
+ .
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // First value, add it to the cache
+ cache.INTO_CACHE(),
+ bytes32(VAL_A),
+
+ // Second value
+ bytes1(0x0F),
+ bytes2(0x1234),
+ bytes11(0xA10102030405060708090A)
+ );
+```
+
+এই ফাংশনটি চারটি সম্পূর্ণ বৈধ প্যারামিটার পায়, তবে ক্যাশটি খালি তাই সেখানে পড়ার মতো কোনো ভ্যালু নেই।
+
+```solidity
+ .
+ .
+ .
+ // অত্যধিক বড় বাফারের সাথে সবকিছু ঠিকঠাক কাজ করে কিনা তা টেস্ট করুন
+ function testLongCalldata() public {
+ address _cacheAddr = address(cache);
+ bool _success;
+ bytes memory _callInput;
+ bytes memory _callOutput;
+
+ // প্রথম কল, ক্যাশ খালি আছে
+ _callInput = bytes.concat(
+ FOUR_PARAMS,
+
+ // প্রথম ভ্যালু, এটি ক্যাশে যোগ করুন
+ cache.INTO_CACHE(), bytes32(VAL_A),
+
+ // দ্বিতীয় ভ্যালু, এটি ক্যাশে যোগ করুন
+ cache.INTO_CACHE(), bytes32(VAL_B),
+
+ // তৃতীয় ভ্যালু, এটি ক্যাশে যোগ করুন
+ cache.INTO_CACHE(), bytes32(VAL_C),
+
+ // চতুর্থ ভ্যালু, এটি ক্যাশে যোগ করুন
+ cache.INTO_CACHE(), bytes32(VAL_D),
+
+ // এবং "গুড লাক"-এর জন্য আরও একটি ভ্যালু
+ bytes4(0x31112233)
+ );
+```
+
+এই ফাংশনটি পাঁচটি ভ্যালু পাঠায়। আমরা জানি যে পঞ্চম ভ্যালুটি উপেক্ষা করা হয় কারণ এটি একটি বৈধ ক্যাশ এন্ট্রি নয়, যা অন্তর্ভুক্ত না হলে একটি রিভার্ট ঘটাত।
+
+```solidity
+ (_success, _callOutput) = _cacheAddr.call(_callInput);
+ assertEq(_success, true);
+ .
+ .
+ .
+ } // testLongCalldata
+
+} // CacheTest
+
+```
+
+## একটি নমুনা অ্যাপ্লিকেশন {#a-sample-app}
+
+সলিডিটিতে পরীক্ষা লেখা খুবই ভালো, কিন্তু দিনের শেষে একটি ডিএ্যাপ-কে দরকারী হওয়ার জন্য চেইনের বাইরে থেকে আসা অনুরোধগুলো প্রক্রিয়া করতে সক্ষম হতে হবে। এই নিবন্ধটি প্রদর্শন করে কীভাবে `WORM`-এর সাথে একটি ডিএ্যাপ-এ ক্যাশিং ব্যবহার করতে হয়, যার অর্থ "Write Once, Read Many"। যদি কোনো কি এখনো লেখা না হয়, তবে আপনি এতে একটি ভ্যালু লিখতে পারেন। যদি কি-টি আগে থেকেই লেখা থাকে, তবে আপনি একটি রিভার্ট পাবেন।
+
+### কন্ট্রাক্ট {#the-contract}
+
+[এটি হলো কন্ট্রাক্ট](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/WORM.sol)। এটি মূলত আমরা `Cache` এবং `CacheTest`-এর সাথে যা করেছি তারই পুনরাবৃত্তি করে, তাই আমরা কেবল আকর্ষণীয় অংশগুলো কভার করি।
+
+```solidity
+import "./Cache.sol";
+
+contract WORM is Cache {
+```
+
+`Cache` ব্যবহার করার সবচেয়ে সহজ উপায় হলো এটিকে আমাদের নিজস্ব কন্ট্রাক্টে ইনহেরিট করা।
+
+```solidity
+ function writeEntryCached() external {
+ uint[] memory params = _readParams(2);
+ writeEntry(params[0], params[1]);
+ } // writeEntryCached
+```
+
+এই ফাংশনটি ওপরের `CacheTest`-এর `fourParam`-এর মতোই। যেহেতু আমরা ABI স্পেসিফিকেশনগুলো অনুসরণ করি না, তাই ফাংশনে কোনো প্যারামিটার ঘোষণা না করাই ভালো।
+
+```solidity
+ // আমাদের কল করা আরও সহজ করুন
+ // writeEntryCached() এর জন্য ফাংশন সিগনেচার, সৌজন্যে
+ // https://www.4byte.directory/signatures/?bytes4_signature=0xe4e4f2d3
+ bytes4 constant public WRITE_ENTRY_CACHED = 0xe4e4f2d3;
+```
+
+যে এক্সটার্নাল কোডটি `writeEntryCached` কল করে তাকে `worm.writeEntryCached` ব্যবহার করার পরিবর্তে ম্যানুয়ালি কলডাটা তৈরি করতে হবে, কারণ আমরা ABI স্পেসিফিকেশনগুলো অনুসরণ করি না। এই ধ্রুবক ভ্যালুটি থাকা এটিকে লেখা সহজ করে তোলে।
+
+মনে রাখবেন যে যদিও আমরা `WRITE_ENTRY_CACHED`-কে একটি স্টেট ভেরিয়েবল হিসেবে সংজ্ঞায়িত করি, এটিকে বাহ্যিকভাবে পড়ার জন্য এর গেটার ফাংশন, `worm.WRITE_ENTRY_CACHED()` ব্যবহার করা প্রয়োজন।
+
+```solidity
+ function readEntry(uint key) public view
+ returns (uint _value, address _writtenBy, uint _writtenAtBlock)
+```
+
+রিড ফাংশনটি একটি `view`, তাই এর জন্য কোনো লেনদেন প্রয়োজন হয় না এবং কোনো গ্যাস খরচ হয় না। ফলস্বরূপ, প্যারামিটারের জন্য ক্যাশ ব্যবহার করার কোনো সুবিধা নেই। ভিউ ফাংশনগুলোর সাথে স্ট্যান্ডার্ড মেকানিজম ব্যবহার করা সবচেয়ে ভালো যা সহজতর।
+
+### টেস্টিং কোড {#the-testing-code}
+
+[এটি হলো কন্ট্রাক্টের জন্য টেস্টিং কোড](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol)। আবার, চলুন কেবল আকর্ষণীয় বিষয়গুলোর দিকে নজর দিই।
+
+```solidity
+ function testWReadWrite() public {
+ worm.writeEntry(0xDEAD, 0x60A7);
+
+ vm.expectRevert(bytes("entry already written"));
+ worm.writeEntry(0xDEAD, 0xBEEF);
+```
+
+[এভাবেই (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert) আমরা একটি Foundry টেস্টে নির্দিষ্ট করি যে পরবর্তী কলটি ব্যর্থ হওয়া উচিত এবং ব্যর্থতার রিপোর্ট করা কারণটি কী। এটি তখন প্রযোজ্য হয় যখন আমরা কলডাটা তৈরি করার এবং লো লেভেল ইন্টারফেস (`.call()` ইত্যাদি) ব্যবহার করে কন্ট্রাক্ট কল করার পরিবর্তে `.()` সিনট্যাক্স ব্যবহার করি।
+
+```solidity
+ function testReadWriteCached() public {
+ uint cacheGoat = worm.cacheWrite(0x60A7);
+```
+
+এখানে আমরা এই বিষয়টি ব্যবহার করি যে `cacheWrite` ক্যাশ কি রিটার্ন করে। এটি এমন কিছু নয় যা আমরা প্রোডাকশনে ব্যবহার করার আশা করব, কারণ `cacheWrite` স্টেট পরিবর্তন করে এবং তাই কেবল একটি লেনদেনের সময় কল করা যেতে পারে। লেনদেনের কোনো রিটার্ন ভ্যালু থাকে না, যদি তাদের ফলাফল থাকে তবে সেই ফলাফলগুলো ইভেন্ট হিসেবে নির্গত হওয়ার কথা। তাই `cacheWrite` রিটার্ন ভ্যালুটি কেবল অনচেইন কোড থেকে অ্যাক্সেসযোগ্য এবং অনচেইন কোডের প্যারামিটার ক্যাশিংয়ের প্রয়োজন নেই।
+
+```solidity
+ (_success,) = address(worm).call(_callInput);
+```
+
+এভাবেই আমরা সলিডিটিকে বলি যে যদিও `.call()`-এর দুটি রিটার্ন ভ্যালু রয়েছে, আমরা কেবল প্রথমটি নিয়ে চিন্তা করি।
+
+```solidity
+ (_success,) = address(worm).call(_callInput);
+ assertEq(_success, false);
+```
+
+যেহেতু আমরা লো লেভেল `.call()` ফাংশন ব্যবহার করি, তাই আমরা `vm.expectRevert()` ব্যবহার করতে পারি না এবং কল থেকে প্রাপ্ত বুলিয়ান সাকসেস ভ্যালুর দিকে তাকাতে হবে।
+
+```solidity
+ event EntryWritten(uint indexed key, uint indexed value);
+
+ .
+ .
+ .
+
+ _callInput = bytes.concat(
+ worm.WRITE_ENTRY_CACHED(), worm.encodeVal(a), worm.encodeVal(b));
+ vm.expectEmit(true, true, false, false);
+ emit EntryWritten(a, b);
+ (_success,) = address(worm).call(_callInput);
+```
+
+এভাবেই আমরা যাচাই করি যে কোডটি Foundry-তে [সঠিকভাবে একটি ইভেন্ট নির্গত করে](https://getfoundry.sh/reference/cheatcodes/expect-emit/)।
+
+### ক্লায়েন্ট {#the-client}
+সলিডিটি টেস্টের সাথে আপনি যে জিনিসটি পান না তা হলো জাভাস্ক্রিপ্ট কোড যা আপনি কাট করে আপনার নিজস্ব অ্যাপ্লিকেশনে পেস্ট করতে পারেন। সেই কোডটি লেখার জন্য আমি WORM-কে [Optimism Goerli](https://community.optimism.io/docs/useful-tools/networks/#optimism-goerli)-তে ডিপ্লয় করেছি, যা [Optimism-এর](https://www.optimism.io/) নতুন টেস্টনেট। এটি [`0xd34335b1d818cee54e3323d3246bd31d94e6a78a`](https://goerli-optimism.etherscan.io/address/0xd34335b1d818cee54e3323d3246bd31d94e6a78a) এডড্রেস এ রয়েছে।
+
+[আপনি এখানে ক্লায়েন্ট এর জন্য জাভাস্ক্রিপ্ট কোড দেখতে পারেন](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/javascript/index.js)। এটি ব্যবহার করতে:
+
+1. গিট রিপোজিটরিটি ক্লোন করুন:
+
+ ```sh
+ git clone https://github.com/qbzzt/20220915-all-you-can-cache.git
+ ```
+
+2. প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করুন:
+
+ ```sh
+ cd javascript
+ yarn
+ ```
+
+3. কনফিগারেশন ফাইলটি কপি করুন:
+
+ ```sh
+ cp .env.example .env
+ ```
+
+4. আপনার কনফিগারেশনের জন্য `.env` সম্পাদনা করুন:
+
+ | প্যারামিটার | ভ্যালু |
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | MNEMONIC | এমন একটি একাউন্ট এর নেমোনিক (mnemonic) যার কাছে লেনদেনের জন্য অর্থ প্রদানের জন্য পর্যাপ্ত ETH রয়েছে। [আপনি এখানে Optimism Goerli নেটওয়ার্ক এর জন্য বিনামূল্যে ETH পেতে পারেন](https://optimismfaucet.xyz/)। |
+ | OPTIMISM_GOERLI_URL | Optimism Goerli-এর URL। পাবলিক এন্ডপয়েন্ট, `https://goerli.optimism.io`, রেট লিমিটেড কিন্তু আমাদের এখানে যা প্রয়োজন তার জন্য যথেষ্ট |
+
+5. `index.js` রান করুন।
+
+ ```sh
+ node index.js
+ ```
+
+ এই নমুনা অ্যাপ্লিকেশনটি প্রথমে WORM-এ একটি এন্ট্রি লেখে, কলডাটা এবং Etherscan-এ লেনদেনের একটি লিঙ্ক প্রদর্শন করে। তারপর এটি সেই এন্ট্রিটি আবার পড়ে এবং এটি যে কি ব্যবহার করে এবং এন্ট্রির ভ্যালুগুলো (ভ্যালু, ব্লক নম্বর এবং লেখক) প্রদর্শন করে।
+
+ক্লায়েন্ট এর বেশিরভাগই সাধারণ ডিএ্যাপ জাভাস্ক্রিপ্ট। তাই আবার আমরা কেবল আকর্ষণীয় অংশগুলো নিয়ে আলোচনা করব।
+
+```javascript
+.
+.
+.
+const main = async () => {
+ const func = await worm.WRITE_ENTRY_CACHED()
+
+ // প্রতিবার একটি নতুন কী (key) প্রয়োজন
+ const key = await worm.encodeVal(Number(new Date()))
+```
+
+একটি নির্দিষ্ট স্লটে কেবল একবারই লেখা যেতে পারে, তাই আমরা স্লটগুলো পুনরায় ব্যবহার না করার বিষয়টি নিশ্চিত করতে টাইমস্ট্যাম্প ব্যবহার করি।
+
+```javascript
+const val = await worm.encodeVal("0x600D")
+
+// একটি এন্ট্রি লিখুন
+const calldata = func + key.slice(2) + val.slice(2)
+```
+
+Ethers আশা করে যে কল ডেটা একটি হেক্স স্ট্রিং হবে, `0x`-এর পরে জোড় সংখ্যক হেক্সাডেসিমাল সংখ্যা থাকবে। যেহেতু `key` এবং `val` উভয়ই `0x` দিয়ে শুরু হয়, তাই আমাদের সেই হেডারগুলো সরিয়ে ফেলতে হবে।
+
+```javascript
+const tx = await worm.populateTransaction.writeEntryCached()
+tx.data = calldata
+
+sentTx = await wallet.sendTransaction(tx)
+```
+
+সলিডিটি টেস্টিং কোডের মতো, আমরা একটি ক্যাশড ফাংশনকে স্বাভাবিকভাবে কল করতে পারি না। এর পরিবর্তে, আমাদের একটি লোয়ার লেভেল মেকানিজম ব্যবহার করতে হবে।
+
+```javascript
+ .
+ .
+ .
+ // এইমাত্র লেখা এন্ট্রিটি পড়ুন
+ const realKey = '0x' + key.slice(4) // FF ফ্ল্যাগটি মুছে ফেলুন
+ const entryRead = await worm.readEntry(realKey)
+ .
+ .
+ .
+```
+
+এন্ট্রিগুলো পড়ার জন্য আমরা সাধারণ মেকানিজম ব্যবহার করতে পারি। `view` ফাংশনগুলোর সাথে প্যারামিটার ক্যাশিং ব্যবহার করার কোনো প্রয়োজন নেই।
+
+## উপসংহার {#conclusion}
+
+এই নিবন্ধের কোডটি একটি প্রুফ অফ কনসেপ্ট, এর উদ্দেশ্য হলো ধারণাটি সহজে বোঝার উপযোগী করা। একটি প্রোডাকশন-রেডি সিস্টেমের জন্য আপনি কিছু অতিরিক্ত কার্যকারিতা প্রয়োগ করতে চাইতে পারেন:
+
+- `uint256` নয় এমন ভ্যালুগুলো পরিচালনা করুন। উদাহরণস্বরূপ, স্ট্রিং।
+- একটি গ্লোবাল ক্যাশের পরিবর্তে, ব্যবহারকারী এবং ক্যাশগুলোর মধ্যে একটি ম্যাপিং থাকতে পারে। বিভিন্ন ব্যবহারকারী বিভিন্ন ভ্যালু ব্যবহার করে।
+- এডড্রেস এর জন্য ব্যবহৃত ভ্যালুগুলো অন্যান্য উদ্দেশ্যে ব্যবহৃত ভ্যালুগুলো থেকে আলাদা। শুধুমাত্র এডড্রেস এর জন্য একটি পৃথক ক্যাশ রাখা যৌক্তিক হতে পারে।
+- বর্তমানে, ক্যাশ কি-গুলো একটি "ফার্স্ট কাম, স্মলেস্ট কি" এ্যালগরিদম এর ওপর ভিত্তি করে কাজ করে। প্রথম ষোলটি ভ্যালু একটি একক বাইট হিসেবে পাঠানো যেতে পারে। পরবর্তী 4080টি ভ্যালু দুই বাইট হিসেবে পাঠানো যেতে পারে। পরবর্তী প্রায় এক মিলিয়ন ভ্যালু তিন বাইট ইত্যাদি। একটি প্রোডাকশন সিস্টেমের উচিত ক্যাশ এন্ট্রিগুলোতে ইউসেজ কাউন্টার রাখা এবং সেগুলোকে পুনর্গঠিত করা যাতে ষোলটি _সবচেয়ে সাধারণ_ ভ্যালু এক বাইট হয়, পরবর্তী 4080টি সবচেয়ে সাধারণ ভ্যালু দুই বাইট হয় ইত্যাদি।
+
+ তবে, এটি একটি সম্ভাব্য বিপজ্জনক অপারেশন। ঘটনাগুলোর নিম্নলিখিত ক্রমটি কল্পনা করুন:
+
+ 1. নোয়াম নাইভ (Noam Naive) যে এডড্রেস এ টোকেন পাঠাতে চায় তা এনকোড করতে `encodeVal` কল করে। সেই এডড্রেসটি অ্যাপ্লিকেশনে ব্যবহৃত প্রথমগুলোর মধ্যে একটি, তাই এনকোড করা ভ্যালুটি হলো 0x06। এটি একটি `view` ফাংশন, কোনো লেনদেন নয়, তাই এটি নোয়াম এবং সে যে নোড ব্যবহার করে তার মধ্যে সীমাবদ্ধ এবং অন্য কেউ এটি সম্পর্কে জানে না।
+
+ 2. ওয়েন ওনার (Owen Owner) ক্যাশ রিঅর্ডারিং অপারেশন চালায়। খুব কম লোকই আসলে সেই এডড্রেসটি ব্যবহার করে, তাই এটি এখন 0x201122 হিসেবে এনকোড করা হয়েছে। একটি ভিন্ন ভ্যালু, 1018-কে 0x06 নির্ধারণ করা হয়েছে।
+
+ 3. নোয়াম নাইভ তার টোকেনগুলো 0x06-এ পাঠায়। সেগুলো `0x0000000000000000000000000de0b6b3a7640000` এডড্রেস এ যায় এবং যেহেতু কেউ সেই এডড্রেস এর প্রাইভেট কি জানে না, তাই সেগুলো সেখানেই আটকে থাকে। নোয়াম _খুশি নয়_।
+
+ এই সমস্যাটি এবং ক্যাশ রিঅর্ডারের সময় মেমপুলে থাকা লেনদেনগুলোর সম্পর্কিত সমস্যা সমাধানের উপায় রয়েছে, তবে আপনাকে অবশ্যই এটি সম্পর্কে সচেতন হতে হবে।
+
+আমি এখানে Optimism-এর সাথে ক্যাশিং প্রদর্শন করেছি, কারণ আমি একজন Optimism কর্মী এবং এটি সেই রোলআপ যা আমি সবচেয়ে ভালো জানি। তবে এটি এমন যেকোনো রোলআপ এর সাথে কাজ করা উচিত যা অভ্যন্তরীণ প্রক্রিয়াকরণের জন্য ন্যূনতম খরচ নেয়, যাতে এর তুলনায় L1-এ লেনদেনের ডেটা লেখা প্রধান ব্যয় হয়।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/app-plasma/index.md b/public/content/translations/bn/developers/tutorials/app-plasma/index.md
new file mode 100644
index 00000000000..0a68f18f436
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/app-plasma/index.md
@@ -0,0 +1,1256 @@
+---
+title: গোপনীয়তা বজায় রাখে এমন একটি অ্যাপ-নির্দিষ্ট প্লাজমা লিখুন
+description: এই টিউটোরিয়ালে, আমরা ডিপোজিটের জন্য একটি আধা-গোপন ব্যাংক তৈরি করব। ব্যাংকটি একটি সেন্ট্রালাইজড উপাদান; এটি প্রতিটি ব্যবহারকারীর ব্যালেন্স জানে। তবে, এই তথ্য অনচেইন সংরক্ষণ করা হয় না। এর পরিবর্তে, ব্যাংক স্টেট-এর একটি হ্যাস পোস্ট করে। প্রতিবার লেনদেন হওয়ার সময়, ব্যাংক নতুন হ্যাস পোস্ট করে, সাথে একটি জিরো-নলেজ প্রমাণ দেয় যে এর কাছে একটি স্বাক্ষরিত লেনদেন রয়েছে যা হ্যাস স্টেট-কে নতুনটিতে পরিবর্তন করে। এই টিউটোরিয়ালটি পড়ার পর, আপনি কেবল জিরো-নলেজ প্রমাণ কীভাবে ব্যবহার করতে হয় তা-ই নয়, বরং কেন আপনি সেগুলো ব্যবহার করবেন এবং কীভাবে নিরাপদে তা করবেন তাও বুঝতে পারবেন।
+author: ওরি পোমেরান্টজ
+tags: ["জিরো-নলেজ", "সার্ভার", "অফচেইন", "গোপনীয়তা"]
+skill: advanced
+breadcrumb: অ্যাপ-নির্দিষ্ট প্লাজমা
+lang: bn
+published: 2025-10-15
+---
+
+## Introduction {#introduction}
+
+[রেলআপস](/developers/docs/scaling/zk-rollups/)-এর বিপরীতে, [প্লাজমা](/developers/docs/scaling/plasma) ইন্টিগ্রিটির জন্য ইথিরিয়াম মেইননেট ব্যবহার করে, কিন্তু এভেইলএবিলিটির জন্য নয়। এই আর্টিকেলে, আমরা এমন একটি অ্যাপ্লিকেশন লিখব যা প্লাজমার মতো আচরণ করে, যেখানে ইথিরিয়াম ইন্টিগ্রিটির (কোনো অননুমোদিত পরিবর্তন নয়) নিশ্চয়তা দেয় কিন্তু এভেইলএবিলিটির নয় (একটি সেন্ট্রালাইজড উপাদান ডাউন হয়ে পুরো সিস্টেমকে নিষ্ক্রিয় করতে পারে)।
+
+আমরা এখানে যে অ্যাপ্লিকেশনটি লিখছি তা হলো একটি গোপনীয়তা-সংরক্ষণকারী ব্যাংক। বিভিন্ন এডড্রেস-এর ব্যালেন্সসহ একাউন্ট রয়েছে এবং তারা অন্যান্য একাউন্ট-এ অর্থ (ETH) পাঠাতে পারে। ব্যাংক স্টেট (একাউন্ট এবং তাদের ব্যালেন্স) এবং লেনদেন-এর হ্যাস পোস্ট করে, কিন্তু প্রকৃত ব্যালেন্স অফচেইন রাখে যেখানে সেগুলো গোপন থাকতে পারে।
+
+## Design {#design}
+
+এটি কোনো প্রোডাকশন-রেডি সিস্টেম নয়, বরং একটি শেখার টুল। তাই, এটি বেশ কয়েকটি সহজ অনুমানের ওপর ভিত্তি করে লেখা হয়েছে।
+
+- নির্দিষ্ট একাউন্ট পুল। এখানে একটি নির্দিষ্ট সংখ্যক একাউন্ট রয়েছে এবং প্রতিটি একাউন্ট একটি পূর্বনির্ধারিত এডড্রেস-এর অন্তর্গত। এটি সিস্টেমটিকে অনেক সহজ করে তোলে কারণ জিরো-নলেজ প্রমাণে পরিবর্তনশীল আকারের ডেটা স্ট্রাকচার পরিচালনা করা কঠিন। একটি প্রোডাকশন-রেডি সিস্টেমের জন্য, আমরা স্টেট হ্যাস হিসেবে [Merkle root](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) ব্যবহার করতে পারি এবং প্রয়োজনীয় ব্যালেন্সের জন্য Merkle প্রমাণ প্রদান করতে পারি।
+
+- মেমরি স্টোরেজ। একটি প্রোডাকশন সিস্টেমে, রিস্টার্টের ক্ষেত্রে সংরক্ষণের জন্য আমাদের সমস্ত একাউন্ট ব্যালেন্স ডিস্কে লিখতে হবে। এখানে, তথ্য হারিয়ে গেলেও কোনো সমস্যা নেই।
+
+- শুধুমাত্র ট্রান্সফার। একটি প্রোডাকশন সিস্টেমে ব্যাংকে সম্পদ জমা দেওয়া এবং তা তোলার একটি উপায় প্রয়োজন হবে। কিন্তু এখানকার উদ্দেশ্য হলো কেবল ধারণাটি তুলে ধরা, তাই এই ব্যাংকটি শুধুমাত্র ট্রান্সফারের মধ্যে সীমাবদ্ধ।
+
+### Zero-knowledge proofs {#zero-knowledge-proofs}
+
+মৌলিক স্তরে, একটি জিরো-নলেজ প্রমাণ দেখায় যে প্রমাণকারী কিছু ডেটা জানে, _Dataprivate_ এমনভাবে যে কিছু পাবলিক ডেটা, _Datapublic_ এবং _Dataprivate_-এর মধ্যে একটি সম্পর্ক _Relationship_ রয়েছে। যাচাইকারী _Relationship_ এবং _Datapublic_ জানে।
+
+গোপনীয়তা বজায় রাখতে, আমাদের স্টেট এবং লেনদেন গোপন রাখা প্রয়োজন। কিন্তু ইন্টিগ্রিটি নিশ্চিত করতে, আমাদের স্টেট-এর [ক্রিপ্টোগ্রাফিক হ্যাস](https://en.wikipedia.org/wiki/Cryptographic_hash_function) পাবলিক হওয়া প্রয়োজন। যারা লেনদেন জমা দেয় তাদের কাছে প্রমাণ করার জন্য যে সেই লেনদেনগুলো সত্যিই ঘটেছে, আমাদের লেনদেন হ্যাস-ও পোস্ট করতে হবে।
+
+বেশিরভাগ ক্ষেত্রে, _Dataprivate_ হলো জিরো-নলেজ প্রমাণ প্রোগ্রামের ইনপুট এবং _Datapublic_ হলো আউটপুট।
+
+_Dataprivate_-এর এই ফিল্ডগুলো:
+
+- _Staten_, পুরোনো স্টেট
+- _Staten+1_, নতুন স্টেট
+- _Transaction_, একটি লেনদেন যা পুরোনো স্টেট থেকে নতুনটিতে পরিবর্তন করে। এই লেনদেন-এ এই ফিল্ডগুলো অন্তর্ভুক্ত থাকতে হবে:
+ - _Destination address_ যা ট্রান্সফার গ্রহণ করে
+ - _Amount_ যা ট্রান্সফার করা হচ্ছে
+ - _Nonce_ এটি নিশ্চিত করতে যে প্রতিটি লেনদেন কেবল একবারই প্রসেস করা যায়।
+ সোর্স এডড্রেস লেনদেন-এ থাকার প্রয়োজন নেই, কারণ এটি সিগনেচার থেকে পুনরুদ্ধার করা যেতে পারে।
+- _Signature_, একটি সিগনেচার যা লেনদেন করার জন্য অনুমোদিত। আমাদের ক্ষেত্রে, লেনদেন করার জন্য অনুমোদিত একমাত্র এডড্রেস হলো সোর্স এডড্রেস। যেহেতু আমাদের জিরো-নলেজ সিস্টেমটি যেভাবে কাজ করে, তাই ইথিরিয়াম সিগনেচারের পাশাপাশি আমাদের একাউন্ট-এর পাবলিক কি-ও প্রয়োজন।
+
+_Datapublic_-এর ফিল্ডগুলো হলো:
+
+- _Hash(Staten)_ পুরোনো স্টেট-এর হ্যাস
+- _Hash(Staten+1)_ নতুন স্টেট-এর হ্যাস
+- _Hash(Transaction)_ লেনদেন-এর হ্যাস যা স্টেট-কে _Staten_ থেকে _Staten+1_-এ পরিবর্তন করে।
+
+সম্পর্কটি বেশ কয়েকটি শর্ত পরীক্ষা করে:
+
+- পাবলিক হ্যাসগুলো সত্যিই প্রাইভেট ফিল্ডগুলোর জন্য সঠিক হ্যাস।
+- লেনদেনটি পুরোনো স্টেট-এ প্রয়োগ করা হলে, নতুন স্টেট তৈরি হয়।
+- সিগনেচারটি লেনদেন-এর সোর্স এডড্রেস থেকে আসে।
+
+ক্রিপ্টোগ্রাফিক হ্যাস ফাংশনের বৈশিষ্ট্যগুলোর কারণে, এই শর্তগুলো প্রমাণ করাই ইন্টিগ্রিটি নিশ্চিত করার জন্য যথেষ্ট।
+
+### Data structures {#data-structures}
+
+প্রাথমিক ডেটা স্ট্রাকচার হলো সার্ভার দ্বারা ধারণ করা স্টেট। প্রতিটি একাউন্ট-এর জন্য, সার্ভার একাউন্ট ব্যালেন্স এবং একটি [নন্স](https://en.wikipedia.org/wiki/Cryptographic_nonce)-এর ট্র্যাক রাখে, যা [রিপ্লে অ্যাটাক](https://en.wikipedia.org/wiki/Replay_attack) প্রতিরোধ করতে ব্যবহৃত হয়।
+
+### Components {#components}
+
+এই সিস্টেমের জন্য দুটি উপাদান প্রয়োজন:
+
+- _সার্ভার_ যা লেনদেন গ্রহণ করে, সেগুলো প্রসেস করে এবং জিরো-নলেজ প্রমাণের সাথে চেইনে হ্যাস পোস্ট করে।
+- একটি _স্মার্ট কন্ট্রাক্ট_ যা হ্যাসগুলো সংরক্ষণ করে এবং স্টেট ট্রানজিশনগুলো বৈধ কিনা তা নিশ্চিত করতে জিরো-নলেজ প্রমাণগুলো যাচাই করে।
+
+### Data and control flow {#flows}
+
+এগুলো হলো সেই উপায় যার মাধ্যমে বিভিন্ন উপাদান এক একাউন্ট থেকে অন্য একাউন্ট-এ ট্রান্সফার করার জন্য যোগাযোগ করে।
+
+1. একটি ওয়েব ব্রাউজার স্বাক্ষরকারীর একাউন্ট থেকে অন্য একটি একাউন্ট-এ ট্রান্সফারের অনুরোধ করে একটি স্বাক্ষরিত লেনদেন জমা দেয়।
+
+2. সার্ভার যাচাই করে যে লেনদেনটি বৈধ:
+
+ - স্বাক্ষরকারীর ব্যাংকে পর্যাপ্ত ব্যালেন্সসহ একটি একাউন্ট রয়েছে।
+ - প্রাপকের ব্যাংকে একটি একাউন্ট রয়েছে।
+
+3. সার্ভার স্বাক্ষরকারীর ব্যালেন্স থেকে ট্রান্সফার করা পরিমাণ বিয়োগ করে এবং প্রাপকের ব্যালেন্সের সাথে যোগ করে নতুন স্টেট গণনা করে।
+
+4. সার্ভার একটি জিরো-নলেজ প্রমাণ গণনা করে যে স্টেট পরিবর্তনটি বৈধ।
+
+5. সার্ভার ইথিরিয়াম-এ একটি লেনদেন জমা দেয় যার মধ্যে অন্তর্ভুক্ত থাকে:
+
+ - নতুন স্টেট হ্যাস
+ - লেনদেন হ্যাস (যাতে লেনদেন প্রেরক জানতে পারে যে এটি প্রসেস করা হয়েছে)
+ - জিরো-নলেজ প্রমাণ যা প্রমাণ করে যে নতুন স্টেট-এ ট্রানজিশনটি বৈধ
+
+6. স্মার্ট কন্ট্রাক্ট জিরো-নলেজ প্রমাণ যাচাই করে।
+
+7. যদি জিরো-নলেজ প্রমাণ সঠিক হয়, তবে স্মার্ট কন্ট্রাক্ট এই কাজগুলো করে:
+ - বর্তমান স্টেট হ্যাস-কে নতুন স্টেট হ্যাস-এ আপডেট করে
+ - নতুন স্টেট হ্যাস এবং লেনদেন হ্যাস-এর সাথে একটি লগ এন্ট্রি নির্গত করে
+
+### Tools {#tools}
+
+ক্লায়েন্ট-সাইড কোডের জন্য, আমরা [Vite](https://vite.dev/), [React](https://react.dev/), [Viem](https://viem.sh/), এবং [Wagmi](https://wagmi.sh/) ব্যবহার করতে যাচ্ছি। এগুলো ইন্ডাস্ট্রি-স্ট্যান্ডার্ড টুল; আপনি যদি এগুলোর সাথে পরিচিত না হন, তবে আপনি [এই টিউটোরিয়ালটি](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) ব্যবহার করতে পারেন।
+
+সার্ভারের বেশিরভাগ অংশ [Node](https://nodejs.org/en) ব্যবহার করে JavaScript-এ লেখা হয়েছে। জিরো-নলেজ অংশটি [Noir](https://noir-lang.org/)-এ লেখা হয়েছে। আমাদের `1.0.0-beta.10` সংস্করণ প্রয়োজন, তাই আপনি [নির্দেশনা অনুযায়ী Noir ইনস্টল করার পর](https://noir-lang.org/docs/getting_started/quick_start), রান করুন:
+
+```
+noirup -v 1.0.0-beta.10
+```
+
+আমরা যে ব্লকচেইন ব্যবহার করি তা হলো `anvil`, একটি লোকাল টেস্টিং ব্লকচেইন যা [Foundry](https://getfoundry.sh/introduction/installation)-এর অংশ।
+
+## Implementation {#implementation}
+
+যেহেতু এটি একটি জটিল সিস্টেম, তাই আমরা এটি ধাপে ধাপে বাস্তবায়ন করব।
+
+### Stage 1 - Manual zero knowledge {#stage-1}
+
+প্রথম ধাপের জন্য, আমরা ব্রাউজারে একটি লেনদেন স্বাক্ষর করব এবং তারপর ম্যানুয়ালি জিরো-নলেজ প্রমাণে তথ্য প্রদান করব। জিরো-নলেজ কোডটি `server/noir/Prover.toml`-এ সেই তথ্য পাওয়ার আশা করে ([এখানে](https://noir-lang.org/docs/getting_started/project_breakdown#provertoml-1) ডকুমেন্টেড)।
+
+এটি কার্যকর দেখতে:
+
+1. নিশ্চিত করুন যে আপনার [Node](https://nodejs.org/en/download) এবং [Noir](https://noir-lang.org/install) ইনস্টল করা আছে। বিশেষত, এগুলো macOS, Linux, বা [WSL](https://learn.microsoft.com/en-us/windows/wsl/install)-এর মতো UNIX সিস্টেমে ইনস্টল করুন।
+
+2. স্টেজ 1 কোড ডাউনলোড করুন এবং ক্লায়েন্ট কোড পরিবেশন করতে ওয়েব সার্ভার চালু করুন।
+
+ ```sh
+ git clone https://github.com/qbzzt/250911-zk-bank.git -b 01-manual-zk
+ cd 250911-zk-bank
+ cd client
+ npm install
+ npm run dev
+ ```
+
+ এখানে আপনার একটি ওয়েব সার্ভার প্রয়োজন হওয়ার কারণ হলো, নির্দিষ্ট ধরণের জালিয়াতি রোধ করতে, অনেক ওয়ালেট (যেমন MetaMask) সরাসরি ডিস্ক থেকে পরিবেশিত ফাইল গ্রহণ করে না
+
+3. একটি ওয়ালেট সহ একটি ব্রাউজার খুলুন।
+
+4. ওয়ালেট-এ, একটি নতুন পাসফ্রেজ লিখুন। মনে রাখবেন যে এটি আপনার বিদ্যমান পাসফ্রেজ মুছে ফেলবে, তাই _নিশ্চিত করুন যে আপনার একটি ব্যাকআপ আছে_।
+
+ পাসফ্রেজটি হলো `test test test test test test test test test test test junk`, যা anvil-এর ডিফল্ট টেস্টিং পাসফ্রেজ।
+
+5. [ক্লায়েন্ট-সাইড কোড](http://localhost:5173/)-এ ব্রাউজ করুন।
+
+6. ওয়ালেট-এর সাথে কানেক্ট করুন এবং আপনার গন্তব্য একাউন্ট এবং পরিমাণ নির্বাচন করুন।
+
+7. **Sign**-এ ক্লিক করুন এবং লেনদেন স্বাক্ষর করুন।
+
+8. **Prover.toml** শিরোনামের নিচে, আপনি টেক্সট পাবেন। `server/noir/Prover.toml`-কে সেই টেক্সট দিয়ে প্রতিস্থাপন করুন।
+
+9. জিরো-নলেজ প্রমাণ এক্সিকিউট করুন।
+
+ ```sh
+ cd ../server/noir
+ nargo execute
+ ```
+
+ আউটপুটটি এর মতো হওয়া উচিত
+
+ ```
+ ori@CryptoDocGuy:~/noir/250911-zk-bank/server/noir$ nargo execute
+
+ [zkBank] Circuit witness successfully solved
+ [zkBank] Witness saved to target/zkBank.gz
+ [zkBank] Circuit output: (0x199aa62af8c1d562a6ec96e66347bf3240ab2afb5d022c895e6bf6a5e617167b, 0x0cfc0a67cb7308e4e9b254026b54204e34f6c8b041be207e64c5db77d95dd82d, 0x450cf9da6e180d6159290554ae3d8787, 0x6d8bc5a15b9037e52fb59b6b98722a85)
+ ```
+
+10. মেসেজটি সঠিকভাবে হ্যাস করা হয়েছে কিনা তা দেখতে ওয়েব ব্রাউজারে দেখা হ্যাস-এর সাথে শেষ দুটি মান তুলনা করুন।
+
+#### `server/noir/Prover.toml` {#server-noir-prover-toml}
+
+[এই ফাইলটি](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/Prover.toml) Noir দ্বারা প্রত্যাশিত তথ্যের বিন্যাস দেখায়।
+
+```toml
+message="send 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 500 finney (milliEth) 0 "
+```
+
+মেসেজটি টেক্সট ফরম্যাটে রয়েছে, যা ব্যবহারকারীর জন্য বোঝা সহজ করে তোলে (যা স্বাক্ষর করার সময় প্রয়োজনীয়) এবং Noir কোডের জন্য পার্স করা সহজ করে। পরিমাণটি finneys-এ উল্লেখ করা হয়েছে যাতে একদিকে ভগ্নাংশ ট্রান্সফার সম্ভব হয় এবং অন্যদিকে সহজে পড়া যায়। শেষ সংখ্যাটি হলো [নন্স](https://en.wikipedia.org/wiki/Cryptographic_nonce)।
+
+স্ট্রিংটি 100 ক্যারেক্টার দীর্ঘ। জিরো-নলেজ প্রমাণ পরিবর্তনশীল আকারের ডেটা ভালোভাবে পরিচালনা করে না, তাই প্রায়শই ডেটা প্যাড করার প্রয়োজন হয়।
+
+```toml
+pubKeyX=["0x83",...,"0x75"]
+pubKeyY=["0x35",...,"0xa5"]
+signature=["0xb1",...,"0x0d"]
+```
+
+এই তিনটি প্যারামিটার হলো নির্দিষ্ট আকারের বাইট অ্যারে।
+
+```toml
+[[accounts]]
+address="0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
+balance=100_000
+nonce=0
+
+[[accounts]]
+address="0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
+balance=100_000
+nonce=0
+```
+
+এটি স্ট্রাকচারের একটি অ্যারে নির্দিষ্ট করার উপায়। প্রতিটি এন্ট্রির জন্য, আমরা এডড্রেস, ব্যালেন্স (milliETH বা [finney](https://cryptovalleyjournal.com/glossary/finney/)-তে), এবং পরবর্তী নন্স মান নির্দিষ্ট করি।
+
+#### `client/src/Transfer.tsx` {#client-src-transfer-tsx}
+
+[এই ফাইলটি](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/client/src/Transfer.tsx) ক্লায়েন্ট-সাইড প্রসেসিং বাস্তবায়ন করে এবং `server/noir/Prover.toml` ফাইল তৈরি করে (যেটিতে জিরো-নলেজ প্যারামিটার অন্তর্ভুক্ত থাকে)।
+
+এখানে আরও আকর্ষণীয় অংশগুলোর ব্যাখ্যা দেওয়া হলো।
+
+```tsx
+export default attrs => {
+```
+
+এই ফাংশনটি `Transfer` React কম্পোনেন্ট তৈরি করে, যা অন্যান্য ফাইল ইমপোর্ট করতে পারে।
+
+```tsx
+ const accounts = [
+ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
+ "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC",
+ "0x90F79bf6EB2c4f870365E785982E1f101E93b906",
+ "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65",
+ ]
+```
+
+এগুলো হলো একাউন্ট এডড্রেস, `test ... test junk` পাসফ্রেজ দ্বারা তৈরি এডড্রেস। আপনি যদি নিজের এডড্রেস ব্যবহার করতে চান, তবে কেবল এই সংজ্ঞাটি পরিবর্তন করুন।
+
+```tsx
+ const account = useAccount()
+ const wallet = createWalletClient({
+ transport: custom(window.ethereum!)
+ })
+```
+
+এই [Wagmi হুকগুলো](https://wagmi.sh/react/api/hooks) আমাদের [viem](https://viem.sh/) লাইব্রেরি এবং ওয়ালেট অ্যাক্সেস করতে দেয়।
+
+```tsx
+ const message = `send ${toAccount} ${ethAmount*1000} finney (milliEth) ${nonce}`.padEnd(100, " ")
+```
+
+এটি হলো মেসেজ, যা স্পেস দিয়ে প্যাড করা হয়েছে। প্রতিবার যখন [`useState`](https://react.dev/reference/react/useState) ভেরিয়েবলগুলোর একটি পরিবর্তিত হয়, কম্পোনেন্টটি পুনরায় আঁকা হয় এবং `message` আপডেট করা হয়।
+
+```tsx
+ const sign = async () => {
+```
+
+ব্যবহারকারী **Sign** বাটনে ক্লিক করলে এই ফাংশনটি কল করা হয়। মেসেজটি স্বয়ংক্রিয়ভাবে আপডেট হয়, কিন্তু সিগনেচারের জন্য ওয়ালেট-এ ব্যবহারকারীর অনুমোদন প্রয়োজন, এবং আমরা প্রয়োজন ছাড়া এটি চাইতে চাই না।
+
+```tsx
+ const signature = await wallet.signMessage({
+ account: fromAccount,
+ message,
+ })
+```
+
+ওয়ালেট-কে [মেসেজ স্বাক্ষর করতে](https://viem.sh/docs/accounts/local/signMessage) বলুন।
+
+```tsx
+ const hash = hashMessage(message)
+```
+
+মেসেজ হ্যাস পান। ডিবাগিংয়ের জন্য (Noir কোডের) এটি ব্যবহারকারীকে প্রদান করা সহায়ক।
+
+```tsx
+ const pubKey = await recoverPublicKey({
+ hash,
+ signature
+ })
+```
+
+[পাবলিক কি পান](https://viem.sh/docs/utilities/recoverPublicKey)। এটি [Noir `ecrecover`](https://github.com/colinnielsen/ecrecover-noir) ফাংশনের জন্য প্রয়োজনীয়।
+
+```tsx
+ setSignature(signature)
+ setHash(hash)
+ setPubKey(pubKey)
+```
+
+স্টেট ভেরিয়েবলগুলো সেট করুন। এটি করলে কম্পোনেন্টটি পুনরায় আঁকা হয় (`sign` ফাংশন থেকে বের হওয়ার পর) এবং ব্যবহারকারীকে আপডেট করা মানগুলো দেখায়।
+
+```tsx
+ let proverToml = `
+```
+
+`Prover.toml`-এর জন্য টেক্সট।
+
+```tsx
+message="${message}"
+
+pubKeyX=${hexToArray(pubKey.slice(4,4+2*32))}
+pubKeyY=${hexToArray(pubKey.slice(4+2*32))}
+```
+
+Viem আমাদের পাবলিক কি-কে একটি 65-বাইট হেক্সাডেসিমাল স্ট্রিং হিসেবে প্রদান করে। প্রথম বাইটটি হলো `0x04`, একটি সংস্করণ মার্কার। এর পরে পাবলিক কি-এর `x`-এর জন্য 32 বাইট এবং তারপর পাবলিক কি-এর `y`-এর জন্য 32 বাইট থাকে।
+
+তবে, Noir এই তথ্যটি দুটি বাইট অ্যারে হিসেবে পাওয়ার আশা করে, একটি `x`-এর জন্য এবং একটি `y`-এর জন্য। জিরো-নলেজ প্রমাণের অংশ হিসেবে পার্স করার চেয়ে ক্লায়েন্টে এটি পার্স করা সহজ।
+
+মনে রাখবেন যে এটি সাধারণভাবে জিরো-নলেজ-এ একটি ভালো অনুশীলন। জিরো-নলেজ প্রমাণের ভেতরের কোড ব্যয়বহুল, তাই জিরো-নলেজ প্রমাণের বাইরে যে কোনো প্রসেসিং করা সম্ভব তা জিরো-নলেজ প্রমাণের বাইরেই করা _উচিত_।
+
+```tsx
+signature=${hexToArray(signature.slice(2,-2))}
+```
+
+সিগনেচারটিও একটি 65-বাইট হেক্সাডেসিমাল স্ট্রিং হিসেবে প্রদান করা হয়। তবে, শেষ বাইটটি কেবল পাবলিক কি পুনরুদ্ধার করার জন্য প্রয়োজনীয়। যেহেতু পাবলিক কি ইতিমধ্যেই Noir কোডে প্রদান করা হবে, তাই সিগনেচার যাচাই করার জন্য আমাদের এটির প্রয়োজন নেই এবং Noir কোডেরও এটির প্রয়োজন নেই।
+
+```tsx
+${accounts.map(accountInProverToml).reduce((a,b) => a+b, "")}
+`
+```
+
+একাউন্টগুলো প্রদান করুন।
+
+```tsx
+ setProverToml(proverToml)
+ }
+
+ return (
+ <>
+ Transfer
+```
+
+এটি কম্পোনেন্টের HTML (আরও সঠিকভাবে, [JSX](https://react.dev/learn/writing-markup-with-jsx)) ফরম্যাট।
+
+#### `server/noir/src/main.nr` {#server-noir-src-main-nr}
+
+[এই ফাইলটি](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/src/main.nr) হলো আসল জিরো-নলেজ কোড।
+
+```
+use std::hash::pedersen_hash;
+```
+
+[Pedersen hash](https://rya-sge.github.io/access-denied/2024/05/07/pedersen-hash-function/) [Noir স্ট্যান্ডার্ড লাইব্রেরি](https://noir-lang.org/docs/noir/standard_library/cryptographic_primitives/hashes#pedersen_hash)-এর সাথে প্রদান করা হয়। জিরো-নলেজ প্রমাণগুলো সাধারণত এই হ্যাস ফাংশন ব্যবহার করে। স্ট্যান্ডার্ড হ্যাস ফাংশনগুলোর তুলনায় [অ্যারিথমেটিক সার্কিট](https://rareskills.io/post/arithmetic-circuit)-এর ভেতরে এটি গণনা করা অনেক সহজ।
+
+```
+use keccak256::keccak256;
+use dep::ecrecover;
+```
+
+এই দুটি ফাংশন হলো এক্সটার্নাল লাইব্রেরি, যা [`Nargo.toml`](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/Nargo.toml)-এ সংজ্ঞায়িত। এগুলো ঠিক তাদের নামের মতোই কাজ করে, একটি ফাংশন যা [keccak256 হ্যাস](https://emn178.github.io/online-tools/keccak_256.html) গণনা করে এবং একটি ফাংশন যা ইথিরিয়াম সিগনেচার যাচাই করে এবং স্বাক্ষরকারীর ইথিরিয়াম এডড্রেস পুনরুদ্ধার করে।
+
+```
+global ACCOUNT_NUMBER : u32 = 5;
+```
+
+Noir [Rust](https://www.rust-lang.org/) দ্বারা অনুপ্রাণিত। ভেরিয়েবলগুলো ডিফল্টভাবে কনস্ট্যান্ট। এভাবেই আমরা গ্লোবাল কনফিগারেশন কনস্ট্যান্ট সংজ্ঞায়িত করি। নির্দিষ্টভাবে, `ACCOUNT_NUMBER` হলো আমরা যে সংখ্যক একাউন্ট সংরক্ষণ করি।
+
+`u` নামের ডেটা টাইপগুলো হলো সেই সংখ্যক বিট, আনসাইনড। শুধুমাত্র সমর্থিত টাইপগুলো হলো `u8`, `u16`, `u32`, `u64`, এবং `u128`।
+
+```
+global FLAT_ACCOUNT_FIELDS : u32 = 2;
+```
+
+এই ভেরিয়েবলটি একাউন্টগুলোর Pedersen হ্যাস-এর জন্য ব্যবহৃত হয়, যা নিচে ব্যাখ্যা করা হয়েছে।
+
+```
+global MESSAGE_LENGTH : u32 = 100;
+```
+
+উপরে ব্যাখ্যা করা অনুযায়ী, মেসেজের দৈর্ঘ্য নির্দিষ্ট। এটি এখানে নির্দিষ্ট করা হয়েছে।
+
+```
+global ASCII_MESSAGE_LENGTH : [u8; 3] = [0x31, 0x30, 0x30];
+global HASH_BUFFER_SIZE : u32 = 26+3+MESSAGE_LENGTH;
+```
+
+[EIP-191 সিগনেচার](https://eips.ethereum.org/EIPS/eip-191)-এর জন্য একটি 26-বাইট প্রিফিক্সসহ একটি বাফার প্রয়োজন, যার পরে ASCII-তে মেসেজের দৈর্ঘ্য এবং সবশেষে মেসেজটি থাকে।
+
+```
+struct Account {
+ balance: u128,
+ address: Field,
+ nonce: u32,
+}
+```
+
+একটি একাউন্ট সম্পর্কে আমরা যে তথ্য সংরক্ষণ করি। [`Field`](https://noir-lang.org/docs/noir/concepts/data_types/fields) হলো একটি সংখ্যা, সাধারণত 253 বিট পর্যন্ত, যা সরাসরি [অ্যারিথমেটিক সার্কিট](https://rareskills.io/post/arithmetic-circuit)-এ ব্যবহার করা যেতে পারে যা জিরো-নলেজ প্রমাণ বাস্তবায়ন করে। এখানে আমরা একটি 160-বিট ইথিরিয়াম এডড্রেস সংরক্ষণ করতে `Field` ব্যবহার করি।
+
+```
+struct TransferTxn {
+ from: Field,
+ to: Field,
+ amount: u128,
+ nonce: u32
+}
+```
+
+একটি ট্রান্সফার লেনদেন-এর জন্য আমরা যে তথ্য সংরক্ষণ করি।
+
+```
+fn flatten_account(account: Account) -> [Field; FLAT_ACCOUNT_FIELDS] {
+```
+
+একটি ফাংশন সংজ্ঞা। প্যারামিটারটি হলো `Account` তথ্য। ফলাফলটি হলো `Field` ভেরিয়েবলের একটি অ্যারে, যার দৈর্ঘ্য হলো `FLAT_ACCOUNT_FIELDS`
+
+```
+ let flat = [
+ account.address,
+ ((account.balance << 32) + account.nonce.into()).into(),
+ ];
+```
+
+অ্যারের প্রথম মানটি হলো একাউন্ট এডড্রেস। দ্বিতীয়টিতে ব্যালেন্স এবং নন্স উভয়ই অন্তর্ভুক্ত থাকে। `.into()` কলগুলো একটি সংখ্যাকে তার প্রয়োজনীয় ডেটা টাইপে পরিবর্তন করে। `account.nonce` হলো একটি `u32` মান, কিন্তু এটিকে `account.balance << 32`, একটি `u128` মানের সাথে যোগ করতে, এটিকে একটি `u128` হতে হবে। এটি হলো প্রথম `.into()`। দ্বিতীয়টি `u128` ফলাফলকে একটি `Field`-এ রূপান্তর করে যাতে এটি অ্যারেতে ফিট হয়।
+
+```
+ flat
+}
+```
+
+Noir-এ, ফাংশনগুলো কেবল শেষেই একটি মান রিটার্ন করতে পারে (কোনো আর্লি রিটার্ন নেই)। রিটার্ন মান নির্দিষ্ট করতে, আপনি ফাংশনের ক্লোজিং ব্র্যাকেটের ঠিক আগে এটি মূল্যায়ন করেন।
+
+```
+fn flatten_accounts(accounts: [Account; ACCOUNT_NUMBER]) -> [Field; FLAT_ACCOUNT_FIELDS*ACCOUNT_NUMBER] {
+```
+
+এই ফাংশনটি একাউন্ট অ্যারেকে একটি `Field` অ্যারেতে পরিণত করে, যা Petersen হ্যাস-এর ইনপুট হিসেবে ব্যবহার করা যেতে পারে।
+
+```
+ let mut flat: [Field; FLAT_ACCOUNT_FIELDS*ACCOUNT_NUMBER] = [0; FLAT_ACCOUNT_FIELDS*ACCOUNT_NUMBER];
+```
+
+এভাবেই আপনি একটি মিউটেবল ভেরিয়েবল নির্দিষ্ট করেন, অর্থাৎ, একটি কনস্ট্যান্ট _নয়_। Noir-এ ভেরিয়েবলগুলোর সর্বদা একটি মান থাকতে হবে, তাই আমরা এই ভেরিয়েবলটিকে সব শূন্য দিয়ে ইনিশিয়ালাইজ করি।
+
+```
+ for i in 0..ACCOUNT_NUMBER {
+```
+
+এটি একটি `for` লুপ। মনে রাখবেন যে সীমানাগুলো কনস্ট্যান্ট। Noir লুপগুলোর সীমানা কম্পাইল টাইমে জানা থাকতে হবে। এর কারণ হলো অ্যারিথমেটিক সার্কিটগুলো ফ্লো কন্ট্রোল সমর্থন করে না। একটি `for` লুপ প্রসেস করার সময়, কম্পাইলার কেবল এর ভেতরের কোডটি একাধিকবার রাখে, প্রতিটি ইটারেশনের জন্য একবার।
+
+```
+ let fields = flatten_account(accounts[i]);
+ for j in 0..FLAT_ACCOUNT_FIELDS {
+ flat[i*FLAT_ACCOUNT_FIELDS + j] = fields[j];
+ }
+ }
+
+ flat
+}
+
+fn hash_accounts(accounts: [Account; ACCOUNT_NUMBER]) -> Field {
+ pedersen_hash(flatten_accounts(accounts))
+}
+```
+
+অবশেষে, আমরা সেই ফাংশনে পৌঁছালাম যা একাউন্ট অ্যারে হ্যাস করে।
+
+```
+fn find_account(accounts: [Account; ACCOUNT_NUMBER], address: Field) -> u32 {
+ let mut account : u32 = ACCOUNT_NUMBER;
+
+ for i in 0..ACCOUNT_NUMBER {
+ if accounts[i].address == address {
+ account = i;
+ }
+ }
+```
+
+এই ফাংশনটি একটি নির্দিষ্ট এডড্রেসসহ একাউন্ট খুঁজে বের করে। স্ট্যান্ডার্ড কোডে এই ফাংশনটি অত্যন্ত অদক্ষ হবে কারণ এটি এডড্রেস খুঁজে পাওয়ার পরেও সমস্ত একাউন্ট-এর ওপর ইটারেট করে।
+
+তবে, জিরো-নলেজ প্রমাণে, কোনো ফ্লো কন্ট্রোল নেই। যদি আমাদের কখনো কোনো শর্ত পরীক্ষা করার প্রয়োজন হয়, তবে আমাদের প্রতিবারই তা পরীক্ষা করতে হবে।
+
+`if` স্টেটমেন্টের ক্ষেত্রেও একই রকম ঘটনা ঘটে। উপরের লুপের `if` স্টেটমেন্টটি এই গাণিতিক স্টেটমেন্টগুলোতে অনুবাদ করা হয়।
+
+_conditionresult = accounts[i].address == address_ // সমান হলে এক, অন্যথায় শূন্য
+
+_accountnew = conditionresult\*i + (1-conditionresult)\*accountold_
+
+```rust
+ assert (account < ACCOUNT_NUMBER, f"{address} does not have an account");
+
+ account
+}
+```
+
+[`assert`](https://noir-lang.org/docs/dev/noir/concepts/assert) ফাংশনটি জিরো-নলেজ প্রমাণকে ক্র্যাশ করায় যদি অ্যাসারশনটি মিথ্যা হয়। এই ক্ষেত্রে, যদি আমরা প্রাসঙ্গিক এডড্রেসসহ কোনো একাউন্ট খুঁজে না পাই। এডড্রেস রিপোর্ট করতে, আমরা একটি [ফরম্যাট স্ট্রিং](https://noir-lang.org/docs/noir/concepts/data_types/strings#format-strings) ব্যবহার করি।
+
+```rust
+fn apply_transfer_txn(accounts: [Account; ACCOUNT_NUMBER], txn: TransferTxn) -> [Account; ACCOUNT_NUMBER] {
+```
+
+এই ফাংশনটি একটি ট্রান্সফার লেনদেন প্রয়োগ করে এবং নতুন একাউন্ট অ্যারে রিটার্ন করে।
+
+```rust
+ let from = find_account(accounts, txn.from);
+ let to = find_account(accounts, txn.to);
+
+ let (txnFrom, txnAmount, txnNonce, accountNonce) =
+ (txn.from, txn.amount, txn.nonce, accounts[from].nonce);
+```
+
+আমরা Noir-এ একটি ফরম্যাট স্ট্রিংয়ের ভেতরে স্ট্রাকচার এলিমেন্টগুলো অ্যাক্সেস করতে পারি না, তাই আমরা একটি ব্যবহারযোগ্য কপি তৈরি করি।
+
+```rust
+ assert (accounts[from].balance >= txn.amount,
+ f"{txnFrom} does not have {txnAmount} finney");
+
+ assert (accounts[from].nonce == txn.nonce,
+ f"Transaction has nonce {txnNonce}, but the account is expected to use {accountNonce}");
+```
+
+এই দুটি শর্ত একটি লেনদেন-কে অবৈধ করে তুলতে পারে।
+
+```rust
+ let mut newAccounts = accounts;
+
+ newAccounts[from].balance -= txn.amount;
+ newAccounts[from].nonce += 1;
+ newAccounts[to].balance += txn.amount;
+
+ newAccounts
+}
+```
+
+নতুন একাউন্ট অ্যারে তৈরি করুন এবং তারপর এটি রিটার্ন করুন।
+
+```rust
+fn readAddress(messageBytes: [u8; MESSAGE_LENGTH]) -> Field
+```
+
+এই ফাংশনটি মেসেজ থেকে এডড্রেস পড়ে।
+
+```rust
+{
+ let mut result : Field = 0;
+
+ for i in 7..47 {
+```
+
+এডড্রেস সর্বদা 20 বাইট (বা 40 হেক্সাডেসিমাল ডিজিট) দীর্ঘ হয় এবং ক্যারেক্টার #7 থেকে শুরু হয়।
+
+```rust
+ result *= 0x10;
+ if messageBytes[i] >= 48 & messageBytes[i] <= 57 { // 0-9
+ result += (messageBytes[i]-48).into();
+ }
+ if messageBytes[i] >= 65 & messageBytes[i] <= 70 { // A-F
+ result += (messageBytes[i]-65+10).into()
+ }
+ if messageBytes[i] >= 97 & messageBytes[i] <= 102 { // a-f
+ result += (messageBytes[i]-97+10).into()
+ }
+ }
+
+ result
+}
+
+fn readAmountAndNonce(messageBytes: [u8; MESSAGE_LENGTH]) -> (u128, u32)
+```
+
+মেসেজ থেকে পরিমাণ এবং নন্স পড়ুন।
+
+```rust
+{
+ let mut amount : u128 = 0;
+ let mut nonce: u32 = 0;
+ let mut stillReadingAmount: bool = true;
+ let mut lookingForNonce: bool = false;
+ let mut stillReadingNonce: bool = false;
+```
+
+মেসেজে, এডড্রেস-এর পরের প্রথম সংখ্যাটি হলো ট্রান্সফার করার জন্য finney (বা ETH-এর এক সহস্রাংশ)-এর পরিমাণ। দ্বিতীয় সংখ্যাটি হলো নন্স। এগুলোর মাঝের যেকোনো টেক্সট উপেক্ষা করা হয়।
+
+```rust
+ for i in 48..MESSAGE_LENGTH {
+ if messageBytes[i] >= 48 & messageBytes[i] <= 57 { // 0-9
+ let digit = (messageBytes[i]-48);
+
+ if stillReadingAmount {
+ amount = amount*10 + digit.into();
+ }
+
+ if lookingForNonce { // আমরা এইমাত্র এটি খুঁজে পেয়েছি
+ stillReadingNonce = true;
+ lookingForNonce = false;
+ }
+
+ if stillReadingNonce {
+ nonce = nonce*10 + digit.into();
+ }
+ } else {
+ if stillReadingAmount {
+ stillReadingAmount = false;
+ lookingForNonce = true;
+ }
+ if stillReadingNonce {
+ stillReadingNonce = false;
+ }
+ }
+ }
+
+ (amount, nonce)
+}
+```
+
+একটি [টাপল](https://noir-lang.org/docs/noir/concepts/data_types/tuples) রিটার্ন করা হলো একটি ফাংশন থেকে একাধিক মান রিটার্ন করার Noir উপায়।
+
+```rust
+fn readTransferTxn(message: str) -> TransferTxn
+{
+ let mut txn: TransferTxn = TransferTxn { from: 0, to: 0, amount:0, nonce:0 };
+ let messageBytes = message.as_bytes();
+
+ txn.to = readAddress(messageBytes);
+ let (amount, nonce) = readAmountAndNonce(messageBytes);
+ txn.amount = amount;
+ txn.nonce = nonce;
+
+ txn
+}
+```
+
+এই ফাংশনটি মেসেজটিকে বাইটে রূপান্তর করে, তারপর পরিমাণগুলোকে একটি `TransferTxn`-এ রূপান্তর করে।
+
+```rust
+// Viem এর hashMessage এর সমতুল্য
+// https://viem.sh/docs/utilities/hashMessage#hashmessage
+fn hashMessage(message: str) -> [u8;32] {
+```
+
+আমরা একাউন্টগুলোর জন্য Pedersen হ্যাস ব্যবহার করতে পেরেছিলাম কারণ সেগুলো কেবল জিরো-নলেজ প্রমাণের ভেতরে হ্যাস করা হয়। তবে, এই কোডে আমাদের মেসেজের সিগনেচার পরীক্ষা করতে হবে, যা ব্রাউজার দ্বারা তৈরি হয়। এর জন্য, আমাদের [EIP 191](https://eips.ethereum.org/EIPS/eip-191)-এ ইথিরিয়াম সাইনিং ফরম্যাট অনুসরণ করতে হবে। এর মানে হলো আমাদের একটি স্ট্যান্ডার্ড প্রিফিক্স, ASCII-তে মেসেজের দৈর্ঘ্য এবং মেসেজটি দিয়ে একটি সম্মিলিত বাফার তৈরি করতে হবে এবং এটি হ্যাস করতে ইথিরিয়াম স্ট্যান্ডার্ড keccak256 ব্যবহার করতে হবে।
+
+```rust
+ // ASCII প্রিফিক্স
+ let prefix_bytes = [
+ 0x19, // \x19
+ 0x45, // 'E'
+ 0x74, // 't'
+ 0x68, // 'h'
+ 0x65, // 'e'
+ 0x72, // 'r'
+ 0x65, // 'e'
+ 0x75, // 'u'
+ 0x6D, // 'm'
+ 0x20, // ' '
+ 0x53, // 'S'
+ 0x69, // 'i'
+ 0x67, // 'g'
+ 0x6E, // 'n'
+ 0x65, // 'e'
+ 0x64, // 'd'
+ 0x20, // ' '
+ 0x4D, // 'M'
+ 0x65, // 'e'
+ 0x73, // 's'
+ 0x73, // 's'
+ 0x61, // 'a'
+ 0x67, // 'g'
+ 0x65, // 'e'
+ 0x3A, // ':'
+ 0x0A // '\n'
+ ];
+```
+
+এমন পরিস্থিতি এড়াতে যেখানে কোনো অ্যাপ্লিকেশন ব্যবহারকারীকে এমন একটি মেসেজ স্বাক্ষর করতে বলে যা লেনদেন হিসেবে বা অন্য কোনো উদ্দেশ্যে ব্যবহার করা যেতে পারে, EIP 191 নির্দিষ্ট করে যে সমস্ত স্বাক্ষরিত মেসেজ ক্যারেক্টার 0x19 (একটি বৈধ ASCII ক্যারেক্টার নয়) দিয়ে শুরু হয় যার পরে `Ethereum Signed Message:` এবং একটি নতুন লাইন থাকে।
+
+```rust
+ let mut buffer: [u8; HASH_BUFFER_SIZE] = [0u8; HASH_BUFFER_SIZE];
+ for i in 0..26 {
+ buffer[i] = prefix_bytes[i];
+ }
+
+ let messageBytes : [u8; MESSAGE_LENGTH] = message.as_bytes();
+
+ if MESSAGE_LENGTH <= 9 {
+ for i in 0..1 {
+ buffer[i+26] = ASCII_MESSAGE_LENGTH[i];
+ }
+
+ for i in 0..MESSAGE_LENGTH {
+ buffer[i+26+1] = messageBytes[i];
+ }
+ }
+
+ if MESSAGE_LENGTH >= 10 & MESSAGE_LENGTH <= 99 {
+ for i in 0..2 {
+ buffer[i+26] = ASCII_MESSAGE_LENGTH[i];
+ }
+
+ for i in 0..MESSAGE_LENGTH {
+ buffer[i+26+2] = messageBytes[i];
+ }
+ }
+
+ if MESSAGE_LENGTH >= 100 {
+ for i in 0..3 {
+ buffer[i+26] = ASCII_MESSAGE_LENGTH[i];
+ }
+
+ for i in 0..MESSAGE_LENGTH {
+ buffer[i+26+3] = messageBytes[i];
+ }
+ }
+
+ assert(MESSAGE_LENGTH < 1000, "Messages whose length is over three digits are not supported");
+```
+
+999 পর্যন্ত মেসেজের দৈর্ঘ্য পরিচালনা করুন এবং এটি বড় হলে ব্যর্থ হন। আমি এই কোডটি যোগ করেছি, যদিও মেসেজের দৈর্ঘ্য একটি কনস্ট্যান্ট, কারণ এটি পরিবর্তন করা সহজ করে তোলে। একটি প্রোডাকশন সিস্টেমে, আপনি সম্ভবত ভালো পারফরম্যান্সের খাতিরে ধরে নেবেন যে `MESSAGE_LENGTH` পরিবর্তন হয় না।
+
+```rust
+ keccak256::keccak256(buffer, HASH_BUFFER_SIZE)
+}
+```
+
+ইথিরিয়াম স্ট্যান্ডার্ড `keccak256` ফাংশন ব্যবহার করুন।
+
+```rust
+fn signatureToAddressAndHash(
+ message: str,
+ pubKeyX: [u8; 32],
+ pubKeyY: [u8; 32],
+ signature: [u8; 64]
+ ) -> (Field, Field, Field) // ঠিকানা, হ্যাস এর প্রথম ১৬ বাইট, হ্যাস এর শেষ ১৬ বাইট
+{
+```
+
+এই ফাংশনটি সিগনেচার যাচাই করে, যার জন্য মেসেজ হ্যাস প্রয়োজন। এটি তারপর আমাদের সেই এডড্রেস প্রদান করে যা এটি স্বাক্ষর করেছে এবং মেসেজ হ্যাস প্রদান করে। মেসেজ হ্যাস দুটি `Field` মানে সরবরাহ করা হয় কারণ সেগুলো একটি বাইট অ্যারের চেয়ে প্রোগ্রামের বাকি অংশে ব্যবহার করা সহজ।
+
+আমাদের দুটি `Field` মান ব্যবহার করতে হবে কারণ ফিল্ড গণনাগুলো একটি বড় সংখ্যার [মডুলো](https://en.wikipedia.org/wiki/Modulo) করা হয়, কিন্তু সেই সংখ্যাটি সাধারণত 256 বিটের কম হয় (অন্যথায় EVM-এ সেই গণনাগুলো করা কঠিন হবে)।
+
+```rust
+ let hash = hashMessage(message);
+
+ let mut (hash1, hash2) = (0,0);
+
+ for i in 0..16 {
+ hash1 = hash1*256 + hash[31-i].into();
+ hash2 = hash2*256 + hash[15-i].into();
+ }
+```
+
+`hash1` এবং `hash2`-কে মিউটেবল ভেরিয়েবল হিসেবে নির্দিষ্ট করুন এবং সেগুলোতে বাইট বাই বাইট হ্যাস লিখুন।
+
+```rust
+ (
+ ecrecover::ecrecover(pubKeyX, pubKeyY, signature, hash),
+```
+
+এটি [Solidity-এর `ecrecover`](https://docs.soliditylang.org/en/v0.8.30/cheatsheet.html#mathematical-and-cryptographic-functions)-এর মতো, তবে দুটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:
+
+- যদি সিগনেচার বৈধ না হয়, তবে কলটি একটি `assert` ব্যর্থ করে এবং প্রোগ্রামটি বাতিল করা হয়।
+- যদিও সিগনেচার এবং হ্যাস থেকে পাবলিক কি পুনরুদ্ধার করা যেতে পারে, এটি এমন প্রসেসিং যা বাহ্যিকভাবে করা যেতে পারে এবং তাই, জিরো-নলেজ প্রমাণের ভেতরে করা মূল্যবান নয়। যদি কেউ এখানে আমাদের সাথে প্রতারণা করার চেষ্টা করে, তবে সিগনেচার যাচাইকরণ ব্যর্থ হবে।
+
+```rust
+ hash1,
+ hash2
+ )
+}
+
+fn main(
+ accounts: [Account; ACCOUNT_NUMBER],
+ message: str,
+ pubKeyX: [u8; 32],
+ pubKeyY: [u8; 32],
+ signature: [u8; 64],
+ ) -> pub (
+ Field, // পুরানো অ্যাকাউন্ট অ্যারের হ্যাস
+ Field, // নতুন অ্যাকাউন্ট অ্যারের হ্যাস
+ Field, // মেসেজ হ্যাস এর প্রথম ১৬ বাইট
+ Field, // মেসেজ হ্যাস এর শেষ ১৬ বাইট
+ )
+```
+
+অবশেষে, আমরা `main` ফাংশনে পৌঁছাই। আমাদের প্রমাণ করতে হবে যে আমাদের কাছে একটি লেনদেন রয়েছে যা বৈধভাবে একাউন্টগুলোর হ্যাস-কে পুরোনো মান থেকে নতুনটিতে পরিবর্তন করে। আমাদের এটিও প্রমাণ করতে হবে যে এটির এই নির্দিষ্ট লেনদেন হ্যাস রয়েছে যাতে যে ব্যক্তি এটি পাঠিয়েছে সে জানতে পারে যে তার লেনদেন প্রসেস করা হয়েছে।
+
+```rust
+{
+ let mut txn = readTransferTxn(message);
+```
+
+আমাদের `txn`-কে মিউটেবল হতে হবে কারণ আমরা মেসেজ থেকে ফ্রম এডড্রেস পড়ি না, আমরা এটি সিগনেচার থেকে পড়ি।
+
+```rust
+ let (fromAddress, txnHash1, txnHash2) = signatureToAddressAndHash(
+ message,
+ pubKeyX,
+ pubKeyY,
+ signature);
+
+ txn.from = fromAddress;
+
+ let newAccounts = apply_transfer_txn(accounts, txn);
+
+ (
+ hash_accounts(accounts),
+ hash_accounts(newAccounts),
+ txnHash1,
+ txnHash2
+ )
+}
+```
+
+### Stage 2 - Adding a server {#stage-2}
+
+দ্বিতীয় ধাপে, আমরা একটি সার্ভার যোগ করি যা ব্রাউজার থেকে ট্রান্সফার লেনদেন গ্রহণ করে এবং বাস্তবায়ন করে।
+
+এটি কার্যকর দেখতে:
+
+1. Vite চালু থাকলে তা বন্ধ করুন।
+
+2. সার্ভার অন্তর্ভুক্ত থাকা ব্রাঞ্চটি ডাউনলোড করুন এবং নিশ্চিত করুন যে আপনার কাছে সমস্ত প্রয়োজনীয় মডিউল রয়েছে।
+
+ ```sh
+ git checkout 02-add-server
+ cd client
+ npm install
+ cd ../server
+ npm install
+ ```
+
+ Noir কোড কম্পাইল করার কোনো প্রয়োজন নেই, এটি স্টেজ 1-এর জন্য আপনি যে কোড ব্যবহার করেছিলেন তার মতোই।
+
+3. সার্ভার চালু করুন।
+
+ ```sh
+ npm run start
+ ```
+
+4. একটি আলাদা কমান্ড-লাইন উইন্ডোতে, ব্রাউজার কোড পরিবেশন করতে Vite রান করুন।
+
+ ```sh
+ cd client
+ npm run dev
+ ```
+
+5. [http://localhost:5173](http://localhost:5173)-এ ক্লায়েন্ট কোডে ব্রাউজ করুন
+
+6. আপনি একটি লেনদেন ইস্যু করার আগে, আপনাকে নন্স, সেইসাথে আপনি যে পরিমাণ পাঠাতে পারেন তা জানতে হবে। এই তথ্য পেতে, **Update account data**-এ ক্লিক করুন এবং মেসেজ স্বাক্ষর করুন।
+
+ আমাদের এখানে একটি দ্বিধা রয়েছে। একদিকে, আমরা এমন একটি মেসেজ স্বাক্ষর করতে চাই না যা পুনরায় ব্যবহার করা যেতে পারে (একটি [রিপ্লে অ্যাটাক](https://en.wikipedia.org/wiki/Replay_attack)), যে কারণে আমরা প্রথমেই একটি নন্স চাই। তবে, আমাদের কাছে এখনো কোনো নন্স নেই। সমাধান হলো এমন একটি নন্স বেছে নেওয়া যা কেবল একবার ব্যবহার করা যেতে পারে এবং যা আমাদের উভয় দিকেই রয়েছে, যেমন বর্তমান সময়।
+
+ এই সমাধানের সমস্যা হলো সময় পুরোপুরি সিঙ্ক্রোনাইজ নাও হতে পারে। তাই এর পরিবর্তে, আমরা এমন একটি মান স্বাক্ষর করি যা প্রতি মিনিটে পরিবর্তিত হয়। এর মানে হলো রিপ্লে অ্যাটাকের প্রতি আমাদের দুর্বলতার উইন্ডো সর্বাধিক এক মিনিট। প্রোডাকশনে স্বাক্ষরিত অনুরোধটি TLS দ্বারা সুরক্ষিত থাকবে এবং টানেলের অন্য দিক---সার্ভার---ইতিমধ্যেই ব্যালেন্স এবং নন্স প্রকাশ করতে পারে (কাজ করার জন্য এটিকে সেগুলো জানতে হবে), এটি বিবেচনা করে এটি একটি গ্রহণযোগ্য ঝুঁকি।
+
+7. ব্রাউজার ব্যালেন্স এবং নন্স ফিরে পাওয়ার পর, এটি ট্রান্সফার ফর্ম দেখায়। গন্তব্য এডড্রেস এবং পরিমাণ নির্বাচন করুন এবং **Transfer**-এ ক্লিক করুন। এই অনুরোধটি স্বাক্ষর করুন।
+
+8. ট্রান্সফার দেখতে, হয় **Update account data** করুন অথবা আপনি যেখানে সার্ভার রান করছেন সেই উইন্ডোতে দেখুন। সার্ভার প্রতিবার পরিবর্তিত হওয়ার সময় স্টেট লগ করে।
+
+ ```
+ ori@CryptoDocGuy:~/x/250911-zk-bank/server$ npm run start
+
+ > server@1.0.0 start
+ > node --experimental-json-modules index.mjs
+
+ Listening on port 3000
+ Txn send 0x90F79bf6EB2c4f870365E785982E1f101E93b906 36000 finney (milliEth) 0 processed
+ New state:
+ 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 has 64000 (1)
+ 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 has 100000 (0)
+ 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC has 100000 (0)
+ 0x90F79bf6EB2c4f870365E785982E1f101E93b906 has 136000 (0)
+ 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 has 100000 (0)
+ Txn send 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 7200 finney (milliEth) 1 processed
+ New state:
+ 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 has 56800 (2)
+ 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 has 107200 (0)
+ 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC has 100000 (0)
+ 0x90F79bf6EB2c4f870365E785982E1f101E93b906 has 136000 (0)
+ 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 has 100000 (0)
+ Txn send 0x90F79bf6EB2c4f870365E785982E1f101E93b906 3000 finney (milliEth) 2 processed
+ New state:
+ 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 has 53800 (3)
+ 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 has 107200 (0)
+ 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC has 100000 (0)
+ 0x90F79bf6EB2c4f870365E785982E1f101E93b906 has 139000 (0)
+ 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 has 100000 (0)
+ ```
+
+#### `server/index.mjs` {#server-index-mjs-1}
+
+[এই ফাইলটিতে](https://github.com/qbzzt/250911-zk-bank/blob/02-add-server/server/index.mjs) সার্ভার প্রসেস রয়েছে এবং এটি [`main.nr`](https://github.com/qbzzt/250911-zk-bank/blob/02-add-server/server/noir/src/main.nr)-এ Noir কোডের সাথে ইন্টারঅ্যাক্ট করে। এখানে আকর্ষণীয় অংশগুলোর একটি ব্যাখ্যা দেওয়া হলো।
+
+```js
+import { Noir } from '@noir-lang/noir_js'
+```
+
+[noir.js](https://www.npmjs.com/package/@noir-lang/noir_js) লাইব্রেরি JavaScript কোড এবং Noir কোডের মধ্যে ইন্টারফেস করে।
+
+```js
+const circuit = JSON.parse(await fs.readFile("./noir/target/zkBank.json"))
+const noir = new Noir(circuit)
+```
+
+অ্যারিথমেটিক সার্কিট লোড করুন---আগের ধাপে আমরা যে কম্পাইল করা Noir প্রোগ্রাম তৈরি করেছি---এবং এটি এক্সিকিউট করার জন্য প্রস্তুত করুন।
+
+```js
+// আমরা শুধুমাত্র একটি স্বাক্ষরিত অনুরোধের বিপরীতে অ্যাকাউন্টের তথ্য প্রদান করি
+const accountInformation = async signature => {
+ const fromAddress = await recoverAddress({
+ hash: hashMessage("Get account data " + Math.floor((new Date().getTime())/60000)),
+ signature
+ })
+```
+
+একাউন্ট তথ্য প্রদান করতে, আমাদের কেবল সিগনেচার প্রয়োজন। এর কারণ হলো আমরা ইতিমধ্যেই জানি মেসেজটি কী হতে চলেছে এবং তাই মেসেজ হ্যাস-ও জানি।
+
+```js
+const processMessage = async (message, signature) => {
+```
+
+একটি মেসেজ প্রসেস করুন এবং এটি যে লেনদেন এনকোড করে তা এক্সিকিউট করুন।
+
+```js
+ // পাবলিক কী পান
+ const pubKey = await recoverPublicKey({
+ hash,
+ signature
+ })
+```
+
+যেহেতু আমরা এখন সার্ভারে JavaScript রান করি, তাই আমরা ক্লায়েন্টের পরিবর্তে সেখানে পাবলিক কি পুনরুদ্ধার করতে পারি।
+
+```js
+ let noirResult
+ try {
+ noirResult = await noir.execute({
+ message,
+ signature: signature.slice(2,-2).match(/.{2}/g).map(x => `0x${x}`),
+ pubKeyX,
+ pubKeyY,
+ accounts: Accounts
+ })
+```
+
+`noir.execute` Noir প্রোগ্রাম রান করে। প্যারামিটারগুলো [`Prover.toml`](https://github.com/qbzzt/250911-zk-bank/blob/01-manual-zk/server/noir/Prover.toml)-এ প্রদান করা প্যারামিটারগুলোর সমতুল্য। মনে রাখবেন যে দীর্ঘ মানগুলো হেক্সাডেসিমাল স্ট্রিংয়ের একটি অ্যারে হিসেবে প্রদান করা হয় (`["0x60", "0xA7"]`), Viem যেভাবে করে সেভাবে একটি একক হেক্সাডেসিমাল মান (`0x60A7`) হিসেবে নয়।
+
+```js
+ } catch (err) {
+ console.log(`Noir error: ${err}`)
+ throw Error("Invalid transaction, not processed")
+ }
+```
+
+যদি কোনো ত্রুটি থাকে, তবে তা ধরুন এবং তারপর ক্লায়েন্টের কাছে একটি সরলীকৃত সংস্করণ রিলে করুন।
+
+```js
+ Accounts[fromAccountNumber].nonce++
+ Accounts[fromAccountNumber].balance -= amount
+ Accounts[toAccountNumber].balance += amount
+```
+
+লেনদেন প্রয়োগ করুন। আমরা ইতিমধ্যেই Noir কোডে এটি করেছি, কিন্তু সেখান থেকে ফলাফল বের করার চেয়ে এখানে আবার করা সহজ।
+
+```js
+let Accounts = [
+ {
+ address: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ balance: 5000,
+ nonce: 0,
+ },
+```
+
+প্রাথমিক `Accounts` স্ট্রাকচার।
+
+### Stage 3 - Ethereum smart contracts {#stage-3}
+
+1. সার্ভার এবং ক্লায়েন্ট প্রসেস বন্ধ করুন।
+
+2. স্মার্ট কন্ট্রাক্টসহ ব্রাঞ্চটি ডাউনলোড করুন এবং নিশ্চিত করুন যে আপনার কাছে সমস্ত প্রয়োজনীয় মডিউল রয়েছে।
+
+ ```sh
+ git checkout 03-smart-contracts
+ cd client
+ npm install
+ cd ../server
+ npm install
+ ```
+
+3. একটি আলাদা কমান্ড-লাইন উইন্ডোতে `anvil` রান করুন।
+
+4. ভেরিফিকেশন কি এবং সলিডিটি ভেরিফায়ার তৈরি করুন, তারপর ভেরিফায়ার কোডটি সলিডিটি প্রজেক্টে কপি করুন।
+
+ ```sh
+ cd noir
+ bb write_vk -b ./target/zkBank.json -o ./target --oracle_hash keccak
+ bb write_solidity_verifier -k ./target/vk -o ./target/Verifier.sol
+ cp target/Verifier.sol ../../smart-contracts/src
+ ```
+
+5. স্মার্ট কন্ট্রাক্টগুলোতে যান এবং `anvil` ব্লকচেইন ব্যবহার করতে এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন।
+
+ ```sh
+ cd ../../smart-contracts
+ export ETH_RPC_URL=http://localhost:8545
+ ETH_PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
+ ```
+
+6. `Verifier.sol` ডিপ্লয় করুন এবং এডড্রেসটি একটি এনভায়রনমেন্ট ভেরিয়েবলে সংরক্ষণ করুন।
+
+ ```sh
+ VERIFIER_ADDRESS=`forge create src/Verifier.sol:HonkVerifier --private-key $ETH_PRIVATE_KEY --optimize --broadcast | awk '/Deployed to:/ {print $3}'`
+ echo $VERIFIER_ADDRESS
+ ```
+
+7. `ZkBank` কন্ট্রাক্ট ডিপ্লয় করুন।
+
+ ```sh
+ ZKBANK_ADDRESS=`forge create ZkBank --private-key $ETH_PRIVATE_KEY --broadcast --constructor-args $VERIFIER_ADDRESS 0x199aa62af8c1d562a6ec96e66347bf3240ab2afb5d022c895e6bf6a5e617167b | awk '/Deployed to:/ {print $3}'`
+ echo $ZKBANK_ADDRESS
+ ```
+
+ `0x199..67b` মানটি হলো `Accounts`-এর প্রাথমিক স্টেট-এর Pederson হ্যাস। আপনি যদি `server/index.mjs`-এ এই প্রাথমিক স্টেট পরিবর্তন করেন, তবে আপনি জিরো-নলেজ প্রমাণ দ্বারা রিপোর্ট করা প্রাথমিক হ্যাস দেখতে একটি লেনদেন রান করতে পারেন।
+
+8. সার্ভার রান করুন।
+
+ ```sh
+ cd ../server
+ npm run start
+ ```
+
+9. একটি ভিন্ন কমান্ড-লাইন উইন্ডোতে ক্লায়েন্ট রান করুন।
+
+ ```sh
+ cd client
+ npm run dev
+ ```
+
+10. কিছু লেনদেন রান করুন।
+
+11. স্টেট অনচেইন পরিবর্তিত হয়েছে কিনা তা যাচাই করতে, সার্ভার প্রসেস রিস্টার্ট করুন। দেখুন যে `ZkBank` আর লেনদেন গ্রহণ করে না, কারণ লেনদেনগুলোতে আসল হ্যাস মান অনচেইন সংরক্ষিত হ্যাস মান থেকে আলাদা।
+
+ এটি প্রত্যাশিত ধরণের ত্রুটি।
+
+ ```
+ ori@CryptoDocGuy:~/x/250911-zk-bank/server$ npm run start
+
+ > server@1.0.0 start
+ > node --experimental-json-modules index.mjs
+
+ Listening on port 3000
+ Verification error: ContractFunctionExecutionError: The contract function "processTransaction" reverted with the following reason:
+ Wrong old state hash
+
+ Contract Call:
+ address: 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512
+ function: processTransaction(bytes _proof, bytes32[] _publicInputs)
+ args: (0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf00000000000000000000000000000000000000000000000b75c020998797da7800000000000000000000000000000000000000000000000
+ ```
+
+#### `server/index.mjs` {#server-index-mjs-2}
+
+এই ফাইলের পরিবর্তনগুলো মূলত আসল প্রমাণ তৈরি করা এবং এটি অনচেইন জমা দেওয়ার সাথে সম্পর্কিত।
+
+```js
+import { exec } from 'child_process'
+import util from 'util'
+
+const execPromise = util.promisify(exec)
+```
+
+অনচেইন পাঠানোর জন্য আসল প্রমাণ তৈরি করতে আমাদের [Barretenberg প্যাকেজ](https://github.com/AztecProtocol/aztec-packages/tree/next/barretenberg) ব্যবহার করতে হবে। আমরা কমান্ড-লাইন ইন্টারফেস (`bb`) রান করে অথবা [JavaScript লাইব্রেরি, `bb.js`](https://www.npmjs.com/package/@aztec/bb.js) ব্যবহার করে এই প্যাকেজটি ব্যবহার করতে পারি। নেটিভভাবে কোড রান করার চেয়ে JavaScript লাইব্রেরি অনেক ধীর, তাই আমরা কমান্ড-লাইন ব্যবহার করতে এখানে [`exec`](https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback) ব্যবহার করি।
+
+মনে রাখবেন যে আপনি যদি `bb.js` ব্যবহার করার সিদ্ধান্ত নেন, তবে আপনাকে এমন একটি সংস্করণ ব্যবহার করতে হবে যা আপনি যে Noir সংস্করণ ব্যবহার করছেন তার সাথে সামঞ্জস্যপূর্ণ। লেখার সময়, বর্তমান Noir সংস্করণ (1.0.0-beta.11) `bb.js` সংস্করণ 0.87 ব্যবহার করে।
+
+```js
+const zkBankAddress = process.env.ZKBANK_ADDRESS || "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512"
+```
+
+এখানকার এডড্রেসটি হলো সেটি যা আপনি একটি ক্লিন `anvil` দিয়ে শুরু করলে এবং উপরের নির্দেশাবলী অনুসরণ করলে পান।
+
+```js
+const walletClient = createWalletClient({
+ chain: anvil,
+ transport: http(),
+ account: privateKeyToAccount("0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6")
+})
+```
+
+এই প্রাইভেট কি হলো `anvil`-এর ডিফল্ট প্রি-ফান্ডেড একাউন্টগুলোর মধ্যে একটি।
+
+```js
+const generateProof = async (witness, fileID) => {
+```
+
+`bb` এক্সিকিউটেবল ব্যবহার করে একটি প্রমাণ তৈরি করুন।
+
+```js
+ const fname = `witness-${fileID}.gz`
+ await fs.writeFile(fname, witness)
+```
+
+উইটনেস একটি ফাইলে লিখুন।
+
+```js
+ await execPromise(`bb prove -b ./noir/target/zkBank.json -w ${fname} -o ${fileID} --oracle_hash keccak --output_format fields`)
+```
+
+আসলে প্রমাণ তৈরি করুন। এই ধাপটি পাবলিক ভেরিয়েবলসহ একটি ফাইলও তৈরি করে, কিন্তু আমাদের সেটির প্রয়োজন নেই। আমরা ইতিমধ্যেই `noir.execute` থেকে সেই ভেরিয়েবলগুলো পেয়েছি।
+
+```js
+ const proof = "0x" + JSON.parse(await fs.readFile(`./${fileID}/proof_fields.json`)).reduce((a,b) => a+b, "").replace(/0x/g, "")
+```
+
+প্রমাণটি হলো `Field` মানের একটি JSON অ্যারে, যার প্রতিটি একটি হেক্সাডেসিমাল মান হিসেবে উপস্থাপিত হয়। তবে, আমাদের এটি লেনদেন-এ একটি একক `bytes` মান হিসেবে পাঠাতে হবে, যা Viem একটি বড় হেক্সাডেসিমাল স্ট্রিং দ্বারা উপস্থাপন করে। এখানে আমরা সমস্ত মান যুক্ত করে, সমস্ত `0x` সরিয়ে দিয়ে এবং তারপর শেষে একটি যোগ করে ফরম্যাট পরিবর্তন করি।
+
+```js
+ await execPromise(`rm -r ${fname} ${fileID}`)
+
+ return proof
+}
+```
+
+ক্লিনআপ করুন এবং প্রমাণ রিটার্ন করুন।
+
+```js
+const processMessage = async (message, signature) => {
+ .
+ .
+ .
+
+ const publicFields = noirResult.returnValue.map(x=>'0x' + x.slice(2).padStart(64, "0"))
+```
+
+পাবলিক ফিল্ডগুলোকে 32-বাইট মানের একটি অ্যারে হতে হবে। তবে, যেহেতু আমাদের লেনদেন হ্যাস-কে দুটি `Field` মানের মধ্যে ভাগ করতে হয়েছিল, তাই এটি একটি 16-বাইট মান হিসেবে উপস্থিত হয়। এখানে আমরা শূন্য যোগ করি যাতে Viem বুঝতে পারে এটি আসলে 32 বাইট।
+
+```js
+ const proof = await generateProof(noirResult.witness, `${fromAddress}-${nonce}`)
+```
+
+প্রতিটি এডড্রেস কেবল একবার প্রতিটি নন্স ব্যবহার করে যাতে আমরা উইটনেস ফাইল এবং আউটপুট ডিরেক্টরির জন্য একটি অনন্য আইডেন্টিফায়ার হিসেবে `fromAddress` এবং `nonce`-এর সংমিশ্রণ ব্যবহার করতে পারি।
+
+```js
+ try {
+ await zkBank.write.processTransaction([
+ proof, publicFields])
+ } catch (err) {
+ console.log(`Verification error: ${err}`)
+ throw Error("Can't verify the transaction onchain")
+ }
+ .
+ .
+ .
+}
+```
+
+চেইনে লেনদেন পাঠান।
+
+#### `smart-contracts/src/ZkBank.sol` {#smart-contracts-src-zkbank-sol}
+
+এটি হলো অনচেইন কোড যা লেনদেন গ্রহণ করে।
+
+```solidity
+// SPDX-License-Identifier: MIT
+
+pragma solidity >=0.8.21;
+
+import {HonkVerifier} from "./Verifier.sol";
+
+contract ZkBank {
+ HonkVerifier immutable myVerifier;
+ bytes32 currentStateHash;
+
+ constructor(address _verifierAddress, bytes32 _initialStateHash) {
+ currentStateHash = _initialStateHash;
+ myVerifier = HonkVerifier(_verifierAddress);
+ }
+```
+
+অনচেইন কোডকে দুটি ভেরিয়েবলের ট্র্যাক রাখতে হবে: ভেরিফায়ার (একটি আলাদা কন্ট্রাক্ট যা `nargo` দ্বারা তৈরি করা হয়) এবং বর্তমান স্টেট হ্যাস।
+
+```solidity
+ event TransactionProcessed(
+ bytes32 indexed transactionHash,
+ bytes32 oldStateHash,
+ bytes32 newStateHash
+ );
+```
+
+প্রতিবার স্টেট পরিবর্তিত হওয়ার সময়, আমরা একটি `TransactionProcessed` ইভেন্ট নির্গত করি।
+
+```solidity
+ function processTransaction(
+ bytes calldata _proof,
+ bytes32[] calldata _publicFields
+ ) public {
+```
+
+এই ফাংশনটি লেনদেন প্রসেস করে। এটি প্রমাণ ( `bytes` হিসেবে) এবং পাবলিক ইনপুটগুলো (একটি `bytes32` অ্যারে হিসেবে) পায়, সেই ফরম্যাটে যা ভেরিফায়ারের প্রয়োজন (অনচেইন প্রসেসিং এবং তাই গ্যাস খরচ কমানোর জন্য)।
+
+```solidity
+ require(_publicInputs[0] == currentStateHash,
+ "Wrong old state hash");
+```
+
+জিরো-নলেজ প্রমাণটি এমন হতে হবে যে লেনদেনটি আমাদের বর্তমান হ্যাস থেকে একটি নতুনটিতে পরিবর্তিত হয়।
+
+```solidity
+ myVerifier.verify(_proof, _publicFields);
+```
+
+জিরো-নলেজ প্রমাণ যাচাই করতে ভেরিফায়ার কন্ট্রাক্ট কল করুন। জিরো-নলেজ প্রমাণ ভুল হলে এই ধাপটি লেনদেন রিভার্ট করে।
+
+```solidity
+ currentStateHash = _publicFields[1];
+
+ emit TransactionProcessed(
+ _publicFields[2]<<128 | _publicFields[3],
+ _publicFields[0],
+ _publicFields[1]
+ );
+ }
+}
+```
+
+যদি সবকিছু সঠিক হয়, তবে স্টেট হ্যাস-কে নতুন মানে আপডেট করুন এবং একটি `TransactionProcessed` ইভেন্ট নির্গত করুন।
+
+## Abuses by the centralized component {#abuses}
+
+তথ্য নিরাপত্তায় তিনটি বৈশিষ্ট্য রয়েছে:
+
+- _গোপনীয়তা_, ব্যবহারকারীরা এমন তথ্য পড়তে পারে না যা পড়ার জন্য তারা অনুমোদিত নয়।
+- _ইন্টিগ্রিটি_, অনুমোদিত ব্যবহারকারী ছাড়া অনুমোদিত পদ্ধতিতে তথ্য পরিবর্তন করা যায় না।
+- _এভেইলএবিলিটি_, অনুমোদিত ব্যবহারকারীরা সিস্টেমটি ব্যবহার করতে পারে।
+
+এই সিস্টেমে, জিরো-নলেজ প্রমাণের মাধ্যমে ইন্টিগ্রিটি প্রদান করা হয়। এভেইলএবিলিটির নিশ্চয়তা দেওয়া অনেক কঠিন এবং গোপনীয়তা অসম্ভব, কারণ ব্যাংককে প্রতিটি একাউন্ট-এর ব্যালেন্স এবং সমস্ত লেনদেন জানতে হবে। যার কাছে তথ্য রয়েছে এমন কোনো সত্তাকে সেই তথ্য শেয়ার করা থেকে বিরত রাখার কোনো উপায় নেই।
+
+[স্টিলথ এডড্রেস](https://vitalik.eth.limo/general/2023/01/20/stealth.html) ব্যবহার করে একটি সত্যিকারের গোপনীয় ব্যাংক তৈরি করা সম্ভব হতে পারে, তবে তা এই আর্টিকেলের আওতার বাইরে।
+
+### False information {#false-info}
+
+সার্ভার ইন্টিগ্রিটি লঙ্ঘন করতে পারে এমন একটি উপায় হলো [ডেটা অনুরোধ করা হলে](https://github.com/qbzzt/250911-zk-bank/blob/03-smart-contracts/server/index.mjs#L278-L291) মিথ্যা তথ্য প্রদান করা।
+
+এটি সমাধান করতে, আমরা একটি দ্বিতীয় Noir প্রোগ্রাম লিখতে পারি যা একাউন্টগুলোকে একটি প্রাইভেট ইনপুট হিসেবে এবং যে এডড্রেস-এর জন্য তথ্যের অনুরোধ করা হয়েছে তা একটি পাবলিক ইনপুট হিসেবে গ্রহণ করে। আউটপুট হলো সেই এডড্রেস-এর ব্যালেন্স এবং নন্স এবং একাউন্টগুলোর হ্যাস।
+
+অবশ্যই, এই প্রমাণটি অনচেইন যাচাই করা যায় না, কারণ আমরা অনচেইন নন্স এবং ব্যালেন্স পোস্ট করতে চাই না। তবে, এটি ব্রাউজারে রান হওয়া ক্লায়েন্ট কোড দ্বারা যাচাই করা যেতে পারে।
+
+### Forced transactions {#forced-txns}
+
+লেয়ার 2-এ এভেইলএবিলিটি নিশ্চিত করার এবং সেন্সরশিপ প্রতিরোধের স্বাভাবিক মেকানিজম হলো [ফোর্সড লেনদেন](https://docs.optimism.io/stack/transactions/forced-transaction)। কিন্তু ফোর্সড লেনদেন জিরো-নলেজ প্রমাণের সাথে একত্রিত হয় না। সার্ভার হলো একমাত্র সত্তা যা লেনদেন যাচাই করতে পারে।
+
+আমরা ফোর্সড লেনদেন গ্রহণ করতে এবং সেগুলো প্রসেস না হওয়া পর্যন্ত সার্ভারকে স্টেট পরিবর্তন করা থেকে বিরত রাখতে `smart-contracts/src/ZkBank.sol` পরিবর্তন করতে পারি। তবে, এটি আমাদের একটি সাধারণ ডিনায়াল-অফ-সার্ভিস অ্যাটাকের জন্য উন্মুক্ত করে। যদি একটি ফোর্সড লেনদেন অবৈধ হয় এবং তাই প্রসেস করা অসম্ভব হয় তবে কী হবে?
+
+সমাধান হলো একটি জিরো-নলেজ প্রমাণ থাকা যে একটি ফোর্সড লেনদেন অবৈধ। এটি সার্ভারকে তিনটি বিকল্প দেয়:
+
+- ফোর্সড লেনদেন প্রসেস করুন, একটি জিরো-নলেজ প্রমাণ প্রদান করে যে এটি প্রসেস করা হয়েছে এবং নতুন স্টেট হ্যাস।
+- ফোর্সড লেনদেন প্রত্যাখ্যান করুন এবং কন্ট্রাক্ট-এ একটি জিরো-নলেজ প্রমাণ প্রদান করুন যে লেনদেনটি অবৈধ (অজানা এডড্রেস, খারাপ নন্স, বা অপর্যাপ্ত ব্যালেন্স)।
+- ফোর্সড লেনদেন উপেক্ষা করুন। সার্ভারকে আসলে লেনদেন প্রসেস করতে বাধ্য করার কোনো উপায় নেই, তবে এর মানে হলো পুরো সিস্টেমটি অনুপলব্ধ।
+
+#### Availability bonds {#avail-bonds}
+
+বাস্তব জীবনের বাস্তবায়নে, সার্ভার চালু রাখার জন্য সম্ভবত কোনো ধরণের লাভের উদ্দেশ্য থাকবে। আমরা সার্ভারকে একটি এভেইলএবিলিটি বন্ড পোস্ট করতে বলে এই প্রণোদনাকে শক্তিশালী করতে পারি যা যে কেউ পুড়িয়ে ফেলতে পারে যদি একটি নির্দিষ্ট সময়ের মধ্যে একটি ফোর্সড লেনদেন প্রসেস করা না হয়।
+
+### Bad Noir code {#bad-noir-code}
+
+সাধারণত, মানুষকে একটি স্মার্ট কন্ট্রাক্ট বিশ্বাস করতে আমরা সোর্স কোডটি একটি [ব্লক এক্সপ্লোরার](https://eth.blockscout.com/address/0x7D16d2c4e96BCFC8f815E15b771aC847EcbDB48b?tab=contract)-এ আপলোড করি। তবে, জিরো-নলেজ প্রমাণের ক্ষেত্রে, তা অপর্যাপ্ত।
+
+`Verifier.sol`-এ ভেরিফিকেশন কি রয়েছে, যা Noir প্রোগ্রামের একটি ফাংশন। তবে, সেই কি আমাদের বলে না যে Noir প্রোগ্রামটি কী ছিল। আসলে একটি বিশ্বস্ত সমাধান পেতে, আপনাকে Noir প্রোগ্রাম (এবং যে সংস্করণটি এটি তৈরি করেছে) আপলোড করতে হবে। অন্যথায়, জিরো-নলেজ প্রমাণগুলো একটি ভিন্ন প্রোগ্রামকে প্রতিফলিত করতে পারে, যেটিতে একটি ব্যাক ডোর রয়েছে।
+
+যতক্ষণ না ব্লক এক্সপ্লোরারগুলো আমাদের Noir প্রোগ্রামগুলো আপলোড এবং যাচাই করার অনুমতি দেওয়া শুরু করে, আপনার এটি নিজেই করা উচিত (বিশেষত [IPFS](/developers/tutorials/ipfs-decentralized-ui/)-এ)। তারপর অত্যাধুনিক ব্যবহারকারীরা সোর্স কোড ডাউনলোড করতে, এটি নিজেরাই কম্পাইল করতে, `Verifier.sol` তৈরি করতে এবং এটি অনচেইন থাকাটির সাথে অভিন্ন কিনা তা যাচাই করতে সক্ষম হবে।
+
+## Conclusion {#conclusion}
+
+প্লাজমা-ধরণের অ্যাপ্লিকেশনগুলোর তথ্য স্টোরেজ হিসেবে একটি সেন্ট্রালাইজড উপাদান প্রয়োজন। এটি সম্ভাব্য দুর্বলতাগুলো উন্মুক্ত করে তবে, এর বিনিময়ে, আমাদের এমন উপায়ে গোপনীয়তা বজায় রাখার অনুমতি দেয় যা ব্লকচেইনে উপলব্ধ নয়। জিরো-নলেজ প্রমাণের মাধ্যমে আমরা ইন্টিগ্রিটি নিশ্চিত করতে পারি এবং সম্ভবত যে কেউ সেন্ট্রালাইজড উপাদানটি রান করছে তার জন্য এভেইলএবিলিটি বজায় রাখা অর্থনৈতিকভাবে সুবিধাজনক করে তুলতে পারি।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
+
+## Acknowledgements {#acknowledgements}
+
+- জশ ক্রাইটস এই আর্টিকেলের একটি খসড়া পড়েছেন এবং আমাকে একটি কঠিন Noir সমস্যা সমাধানে সাহায্য করেছেন।
+
+বাকি থাকা যেকোনো ত্রুটির দায়িত্ব আমার।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/calling-a-smart-contract-from-javascript/index.md b/public/content/translations/bn/developers/tutorials/calling-a-smart-contract-from-javascript/index.md
new file mode 100644
index 00000000000..d642a5bc61b
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/calling-a-smart-contract-from-javascript/index.md
@@ -0,0 +1,132 @@
+---
+title: জাভাস্ক্রিপ্ট থেকে একটি স্মার্ট কন্ট্রাক্ট কল করা
+description: একটি Dai টোকেনের উদাহরণ ব্যবহার করে জাভাস্ক্রিপ্ট থেকে কীভাবে একটি স্মার্ট কন্ট্রাক্ট ফাংশন কল করতে হয়
+author: jdourlens
+tags: ["লেনদেন", "ফ্রন্টএন্ড", "JavaScript", "web3.js"]
+skill: beginner
+breadcrumb: JS থেকে কন্ট্রাক্ট কল করুন
+lang: bn
+published: 2020-04-19
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/calling-a-smart-contract-from-javascript/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+এই টিউটোরিয়ালে আমরা দেখব কীভাবে জাভাস্ক্রিপ্ট থেকে একটি [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) ফাংশন কল করতে হয়। প্রথমে একটি স্মার্ট কন্ট্রাক্টের স্টেট পড়া (যেমন, একজন ERC20 হোল্ডারের ব্যালেন্স), তারপর আমরা একটি টোকেন ট্রান্সফার করে ব্লকচেইনের স্টেট পরিবর্তন করব। আপনার ইতিমধ্যে [ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি JS এনভায়রনমেন্ট সেট আপ করার](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) সাথে পরিচিত হওয়া উচিত।
+
+এই উদাহরণের জন্য আমরা DAI টোকেন নিয়ে কাজ করব, টেস্টিংয়ের উদ্দেশ্যে আমরা ganache-cli ব্যবহার করে ব্লকচেইন ফর্ক করব এবং এমন একটি এডড্রেস আনলক করব যেখানে ইতিমধ্যে প্রচুর DAI রয়েছে:
+
+```bash
+ganache-cli -f https://mainnet.infura.io/v3/[YOUR INFURA KEY] -d -i 66 1 --unlock 0x4d10ae710Bd8D1C31bd7465c8CBC3add6F279E81
+```
+
+একটি স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য আমাদের এর এডড্রেস এবং ABI প্রয়োজন হবে:
+
+```js
+const ERC20TransferABI = [
+ {
+ constant: false,
+ inputs: [
+ {
+ name: "_to",
+ type: "address",
+ },
+ {
+ name: "_value",
+ type: "uint256",
+ },
+ ],
+ name: "transfer",
+ outputs: [
+ {
+ name: "",
+ type: "bool",
+ },
+ ],
+ payable: false,
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ constant: true,
+ inputs: [
+ {
+ name: "_owner",
+ type: "address",
+ },
+ ],
+ name: "balanceOf",
+ outputs: [
+ {
+ name: "balance",
+ type: "uint256",
+ },
+ ],
+ payable: false,
+ stateMutability: "view",
+ type: "function",
+ },
+]
+
+const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f"
+```
+
+এই প্রজেক্টের জন্য আমরা সম্পূর্ণ ERC20 ABI থেকে শুধুমাত্র `balanceOf` এবং `transfer` ফাংশন রেখেছি, তবে আপনি [সম্পূর্ণ ERC20 ABI এখানে](https://ethereumdev.io/abi-for-erc20-contract-on-ethereum/) পেতে পারেন।
+
+এরপর আমাদের স্মার্ট কন্ট্রাক্টটি ইনস্ট্যানশিয়েট (instantiate) করতে হবে:
+
+```js
+const web3 = new Web3("http://localhost:8545")
+
+const daiToken = new web3.eth.Contract(ERC20TransferABI, DAI_ADDRESS)
+```
+
+আমরা দুটি এডড্রেসও সেট আপ করব:
+
+- যে ট্রান্সফারটি গ্রহণ করবে এবং
+- যেটি আমরা ইতিমধ্যে আনলক করেছি যা এটি পাঠাবে:
+
+```js
+const senderAddress = "0x4d10ae710Bd8D1C31bd7465c8CBC3add6F279E81"
+const receiverAddress = "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+```
+
+পরবর্তী অংশে আমরা উভয় এডড্রেসের বর্তমান টোকেনের পরিমাণ পুনরুদ্ধার করতে `balanceOf` ফাংশনটি কল করব।
+
+## কল: একটি স্মার্ট কন্ট্রাক্ট থেকে ভ্যালু পড়া {#call-reading-value-from-a-smart-contract}
+
+প্রথম উদাহরণটি একটি "constant" মেথড কল করবে এবং কোনো লেনদেন না পাঠিয়ে EVM-এ এর স্মার্ট কন্ট্রাক্ট মেথডটি এক্সিকিউট করবে। এর জন্য আমরা একটি এডড্রেসের ERC20 ব্যালেন্স পড়ব। [ERC20 টোকেন সম্পর্কে আমাদের আর্টিকেলটি পড়ুন](/developers/tutorials/understand-the-erc-20-token-smart-contract/)।
+
+আপনি যে স্মার্ট কন্ট্রাক্টের জন্য ABI প্রদান করেছেন তার ইনস্ট্যানশিয়েট করা মেথডগুলো এভাবে অ্যাক্সেস করতে পারেন: `yourContract.methods.methodname`। `call` ফাংশন ব্যবহার করে আপনি ফাংশনটি এক্সিকিউট করার ফলাফল পাবেন।
+
+```js
+daiToken.methods.balanceOf(senderAddress).call(function (err, res) {
+ if (err) {
+ console.log("An error occurred", err)
+ return
+ }
+ console.log("The balance is: ", res)
+})
+```
+
+মনে রাখবেন যে DAI ERC20-এর 18 ডেসিমাল রয়েছে, যার মানে সঠিক পরিমাণ পেতে আপনাকে 18টি শূন্য সরাতে হবে। uint256 স্ট্রিং হিসেবে রিটার্ন করা হয় কারণ জাভাস্ক্রিপ্ট বড় সংখ্যার ভ্যালুগুলো হ্যান্ডেল করতে পারে না। আপনি যদি নিশ্চিত না হন [কীভাবে JS-এ বড় সংখ্যা নিয়ে কাজ করতে হয়, তাহলে bignumber.js সম্পর্কে আমাদের টিউটোরিয়ালটি দেখুন](https://ethereumdev.io/how-to-deal-with-big-numbers-in-javascript/)।
+
+## সেন্ড: একটি স্মার্ট কন্ট্রাক্ট ফাংশনে লেনদেন পাঠানো {#send-sending-a-transaction-to-a-smart-contract-function}
+
+দ্বিতীয় উদাহরণের জন্য আমরা আমাদের দ্বিতীয় এডড্রেসে 10 DAI পাঠাতে DAI স্মার্ট কন্ট্রাক্টের ট্রান্সফার ফাংশনটি কল করব। ট্রান্সফার ফাংশনটি দুটি প্যারামিটার গ্রহণ করে: প্রাপকের এডড্রেস এবং ট্রান্সফার করার টোকেনের পরিমাণ:
+
+```js
+daiToken.methods
+ .transfer(receiverAddress, "100000000000000000000")
+ .send({ from: senderAddress }, function (err, res) {
+ if (err) {
+ console.log("An error occurred", err)
+ return
+ }
+ console.log("Hash of the transaction: " + res)
+ })
+```
+
+কল ফাংশনটি সেই লেনদেনের হ্যাস রিটার্ন করে যা ব্লকচেইনে মাইন করা হবে। ইথিরিয়ামে, লেনদেনের হ্যাসগুলো অনুমানযোগ্য - এভাবেই আমরা লেনদেনটি এক্সিকিউট হওয়ার আগেই এর হ্যাস পেতে পারি ([এখানে জানুন কীভাবে হ্যাস গণনা করা হয়](https://ethereum.stackexchange.com/questions/45648/how-to-calculate-the-assigned-txhash-of-a-transaction))।
+
+যেহেতু ফাংশনটি শুধুমাত্র ব্লকচেইনে লেনদেন সাবমিট করে, তাই এটি কখন মাইন করা হয়েছে এবং ব্লকচেইনে অন্তর্ভুক্ত হয়েছে তা না জানা পর্যন্ত আমরা ফলাফল দেখতে পারি না। পরবর্তী টিউটোরিয়ালে আমরা শিখব [কীভাবে একটি লেনদেনের হ্যাস জেনে ব্লকচেইনে সেটি এক্সিকিউট হওয়ার জন্য অপেক্ষা করতে হয়](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md b/public/content/translations/bn/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
new file mode 100644
index 00000000000..5bb15631054
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md
@@ -0,0 +1,762 @@
+---
+title: "আপনার কন্ট্রাক্টের জন্য একটি ইউজার ইন্টারফেস তৈরি করা"
+description: TypeScript, React, Vite এবং Wagmi-এর মতো আধুনিক উপাদানগুলো ব্যবহার করে, আমরা একটি আধুনিক কিন্তু সাধারণ ইউজার ইন্টারফেস নিয়ে আলোচনা করব এবং শিখব কীভাবে ইউজার ইন্টারফেসের সাথে একটি ওয়ালেট কানেক্ট করতে হয়, তথ্য পড়ার জন্য একটি স্মার্ট কন্ট্রাক্ট কল করতে হয়, স্মার্ট কন্ট্রাক্টে লেনদেন পাঠাতে হয় এবং পরিবর্তনগুলো শনাক্ত করতে স্মার্ট কন্ট্রাক্ট থেকে ইভেন্টগুলো মনিটর করতে হয়।
+author: ওরি পোমেরান্টজ
+tags: ["typescript", "react", "vite", "wagmi", "ফ্রন্টএন্ড"]
+skill: beginner
+breadcrumb: WAGMI-এর সাথে UI
+published: 2023-11-01
+lang: bn
+sidebarDepth: 3
+---
+
+আপনি ইথিরিয়াম ইকোসিস্টেমে আমাদের প্রয়োজনীয় একটি ফিচার খুঁজে পেয়েছেন। এটি বাস্তবায়ন করার জন্য আপনি স্মার্ট কন্ট্রাক্ট লিখেছেন এবং হয়তো অফচেইনে চলে এমন কিছু সম্পর্কিত কোডও লিখেছেন। এটি দারুণ! দুর্ভাগ্যবশত, একটি ইউজার ইন্টারফেস ছাড়া আপনি কোনো ব্যবহারকারী পাবেন না, এবং আপনি শেষবার যখন কোনো ওয়েবসাইট লিখেছিলেন তখন মানুষ ডায়াল-আপ মডেম ব্যবহার করত এবং JavaScript নতুন ছিল।
+
+এই আর্টিকেলটি আপনার জন্য। আমি ধরে নিচ্ছি আপনি প্রোগ্রামিং জানেন, এবং হয়তো কিছুটা JavaScript ও HTML-ও জানেন, কিন্তু আপনার ইউজার ইন্টারফেসের দক্ষতা কিছুটা পুরোনো এবং সেকেলে হয়ে গেছে। আমরা একসাথে একটি সাধারণ আধুনিক অ্যাপ্লিকেশন নিয়ে আলোচনা করব যাতে আপনি দেখতে পারেন আজকাল কীভাবে এটি করা হয়।
+
+## এটি কেন গুরুত্বপূর্ণ {#why-important}
+
+তাত্ত্বিকভাবে, আপনি মানুষকে আপনার কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য শুধু [Etherscan](https://sepolia.etherscan.io/address/0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA#readContract) বা [Blockscout](https://eth-sepolia.blockscout.com/address/0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA?tab=read_write_contract) ব্যবহার করতে বলতে পারেন। এটি অভিজ্ঞ ইথিরিয়ানদের জন্য দারুণ। কিন্তু আমরা [আরও এক বিলিয়ন মানুষকে](https://blog.ethereum.org/2021/05/07/ethereum-for-the-next-billion) সেবা দেওয়ার চেষ্টা করছি। একটি দারুণ ইউজার এক্সপেরিয়েন্স ছাড়া এটি সম্ভব হবে না, এবং একটি ব্যবহারকারীবান্ধব ইউজার ইন্টারফেস এর একটি বড় অংশ।
+
+## Greeter অ্যাপ্লিকেশন {#greeter-app}
+
+আধুনিক UI কীভাবে কাজ করে তার পেছনে অনেক তত্ত্ব রয়েছে, এবং [অনেক ভালো সাইট রয়েছে](https://react.dev/learn/thinking-in-react) [যেগুলো এটি ব্যাখ্যা করে](https://wagmi.sh/core/getting-started)। ওই সাইটগুলোর করা চমৎকার কাজের পুনরাবৃত্তি করার পরিবর্তে, আমি ধরে নিচ্ছি আপনি কাজ করে শিখতে পছন্দ করেন এবং এমন একটি অ্যাপ্লিকেশন দিয়ে শুরু করতে চান যা নিয়ে আপনি কাজ করতে পারবেন। কাজগুলো সম্পন্ন করার জন্য আপনার এখনও তত্ত্বের প্রয়োজন হবে, এবং আমরা সেটিতে আসব - আমরা শুধু সোর্স ফাইল ধরে ধরে এগোব, এবং যখন যে বিষয়টি আসবে তখন সেটি নিয়ে আলোচনা করব।
+
+### ইনস্টলেশন {#installation}
+
+1. অ্যাপ্লিকেশনটি [Sepolia](https://sepolia.dev/) টেস্টনেট ব্যবহার করে। প্রয়োজন হলে, [Sepolia টেস্ট ETH সংগ্রহ করুন](/developers/docs/networks/#sepolia) এবং [আপনার ওয়ালেটে Sepolia যোগ করুন](https://chainlist.org/chain/11155111)।
+
+2. GitHub রিপোজিটরি ক্লোন করুন এবং প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করুন।
+
+ ```sh
+ git clone https://github.com/qbzzt/260301-modern-ui-web3.git
+ cd 260301-modern-ui-web3
+ npm install
+ ```
+
+3. অ্যাপ্লিকেশনটি ফ্রি অ্যাক্সেস পয়েন্ট ব্যবহার করে, যেগুলোর পারফরম্যান্সের সীমাবদ্ধতা রয়েছে। আপনি যদি একটি [নোড অ্যাজ আ সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service/) প্রোভাইডার ব্যবহার করতে চান, তবে [`src/wagmi.ts`](#wagmi-ts)-এর URL-গুলো পরিবর্তন করুন।
+
+4. অ্যাপ্লিকেশনটি চালু করুন।
+
+ ```sh
+ npm run dev
+ ```
+
+5. অ্যাপ্লিকেশন দ্বারা দেখানো URL-এ ব্রাউজ করুন। বেশিরভাগ ক্ষেত্রে, এটি হলো [http://localhost:5173/](http://localhost:5173/)।
+
+6. আপনি [একটি ব্লক এক্সপ্লোরারে](https://eth-sepolia.blockscout.com/address/0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA?tab=contract_code) কন্ট্রাক্টের সোর্স কোড দেখতে পারেন, যা Hardhat-এর Greeter-এর একটি পরিমার্জিত সংস্করণ।
+
+### ফাইল ওয়াক থ্রু {#file-walk-through}
+
+#### `index.html` {#index-html}
+
+এই ফাইলটি একটি স্ট্যান্ডার্ড HTML বয়লারপ্লেট, শুধু এই লাইনটি ছাড়া, যা স্ক্রিপ্ট ফাইলটি ইমপোর্ট করে।
+
+```html
+
+```
+
+#### `src/main.tsx` {#main-tsx}
+
+ফাইলের এক্সটেনশন নির্দেশ করে যে এটি একটি [React কম্পোনেন্ট](https://www.w3schools.com/react/react_components.asp) যা [TypeScript](https://www.typescriptlang.org/)-এ লেখা, এটি JavaScript-এর একটি এক্সটেনশন যা [টাইপ চেকিং](https://en.wikipedia.org/wiki/Type_system#Type_checking) সাপোর্ট করে। TypeScript-কে JavaScript-এ কম্পাইল করা হয়, তাই আমরা এটি ক্লায়েন্ট সাইডে ব্যবহার করতে পারি।
+
+আপনার আগ্রহ থাকতে পারে ভেবে এই ফাইলটি মূলত ব্যাখ্যা করা হয়েছে। সাধারণত আপনি এই ফাইলটি পরিবর্তন করবেন না, বরং [`src/App.tsx`](#app-tsx) এবং এটি যেসব ফাইল ইমপোর্ট করে সেগুলো পরিবর্তন করবেন।
+
+```tsx
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
+import React from 'react'
+import ReactDOM from 'react-dom/client'
+import { WagmiProvider } from 'wagmi'
+```
+
+আমাদের প্রয়োজনীয় লাইব্রেরি কোড ইমপোর্ট করুন।
+
+```tsx
+import App from './App.tsx'
+```
+
+অ্যাপ্লিকেশনটি ইমপ্লিমেন্ট করে এমন React কম্পোনেন্ট ইমপোর্ট করুন (নিচে দেখুন)।
+
+```tsx
+import { config } from './wagmi.ts'
+```
+
+[wagmi](https://wagmi.sh/) কনফিগারেশন ইমপোর্ট করুন, যার মধ্যে ব্লকচেইন কনফিগারেশন অন্তর্ভুক্ত রয়েছে।
+
+```tsx
+const queryClient = new QueryClient()
+```
+
+[React Query-এর](https://tanstack.com/query/latest/docs/framework/react/overview) ক্যাশ ম্যানেজারের একটি নতুন ইনস্ট্যান্স তৈরি করে। এই অবজেক্টটি স্টোর করবে:
+
+- ক্যাশ করা RPC কলগুলো
+- কন্ট্রাক্ট রিডগুলো
+- ব্যাকগ্রাউন্ড রিফেচিং স্টেট
+
+আমাদের ক্যাশ ম্যানেজার প্রয়োজন কারণ wagmi v3 অভ্যন্তরীণভাবে React Query ব্যবহার করে।
+
+```tsx
+ReactDOM.createRoot(document.getElementById('root')!).render(
+```
+
+রুট React কম্পোনেন্ট তৈরি করুন। `render`-এর প্যারামিটার হলো [JSX](https://www.w3schools.com/react/react_jsx.asp), এটি একটি এক্সটেনশন ল্যাঙ্গুয়েজ যা HTML এবং JavaScript/TypeScript উভয়ই ব্যবহার করে। এখানকার বিস্ময়সূচক চিহ্নটি TypeScript কম্পোনেন্টকে বলে: "তুমি জানো না যে `document.getElementById('root')` `ReactDOM.createRoot`-এর জন্য একটি ভ্যালিড প্যারামিটার হবে কিনা, কিন্তু চিন্তা কোরো না - আমি ডেভেলপার এবং আমি তোমাকে বলছি যে এটি হবে"।
+
+```tsx
+
+```
+
+অ্যাপ্লিকেশনটি [একটি `React.StrictMode` কম্পোনেন্টের](https://react.dev/reference/react/StrictMode) ভেতরে যাচ্ছে। এই কম্পোনেন্টটি React লাইব্রেরিকে অতিরিক্ত ডিবাগিং চেক ইনসার্ট করতে বলে, যা ডেভেলপমেন্টের সময় বেশ উপকারী।
+
+```tsx
+
+```
+
+অ্যাপ্লিকেশনটি [একটি `WagmiProvider` কম্পোনেন্টের](https://wagmi.sh/react/api/WagmiProvider) ভেতরেও রয়েছে। [wagmi (we are going to make it) লাইব্রেরি](https://wagmi.sh/) একটি ইথিরিয়াম ডিসেন্ট্রালাইজড এপ্লিকেশন লেখার জন্য React UI ডেফিনিশনগুলোকে [viem লাইব্রেরির](https://viem.sh/) সাথে কানেক্ট করে।
+
+```tsx
+
+```
+
+এবং সবশেষে, একটি React Query প্রোভাইডার যোগ করুন যাতে যেকোনো অ্যাপ্লিকেশন কম্পোনেন্ট ক্যাশ করা কোয়েরিগুলো ব্যবহার করতে পারে।
+
+```tsx
+
+```
+
+এখন আমরা অ্যাপ্লিকেশনের জন্য কম্পোনেন্টটি পেতে পারি, যা আসলে UI ইমপ্লিমেন্ট করে। কম্পোনেন্টের শেষে থাকা `/>` React-কে বলে যে XML স্ট্যান্ডার্ড অনুযায়ী এই কম্পোনেন্টের ভেতরে কোনো ডেফিনিশন নেই।
+
+```tsx
+
+
+ ,
+)
+```
+
+অবশ্যই, আমাদের অন্যান্য কম্পোনেন্টগুলো ক্লোজ করতে হবে।
+
+#### `src/App.tsx` {#app-tsx}
+
+```tsx
+import {
+ useConnect,
+ useConnection,
+ useDisconnect,
+ useSwitchChain
+} from 'wagmi'
+
+import { useEffect } from 'react'
+import { Greeter } from './Greeter'
+```
+
+আমাদের প্রয়োজনীয় লাইব্রেরিগুলো, সেইসাথে [`Greeter` কম্পোনেন্ট](#greeter-tsx) ইমপোর্ট করুন।
+
+```tsx
+const SEPOLIA_CHAIN_ID = 11155111
+```
+
+Sepolia চেইন ID।
+
+```
+function App() {
+```
+
+এটি একটি React কম্পোনেন্ট তৈরি করার স্ট্যান্ডার্ড উপায়: একটি ফাংশন ডিফাইন করুন যা রেন্ডার করার প্রয়োজন হলেই কল করা হয়। এই ফাংশনে সাধারণত TypeScript বা JavaScript কোড থাকে, যার পরে একটি `return` স্টেটমেন্ট থাকে যা JSX কোড রিটার্ন করে।
+
+```tsx
+ const connection = useConnection()
+```
+
+বর্তমান কানেকশন সম্পর্কিত তথ্য, যেমন এডড্রেস এবং `chainId` পেতে [`useConnection`](https://wagmi.sh/react/api/hooks/useConnection) ব্যবহার করুন।
+
+নিয়ম অনুযায়ী, React-এ `use...` নামের ফাংশনগুলো হলো [হুক (hooks)](https://www.w3schools.com/react/react_hooks.asp)। এই ফাংশনগুলো শুধু কম্পোনেন্টে ডাটা রিটার্ন করে না; ডাটা পরিবর্তিত হলে এগুলো কম্পোনেন্টটিকে পুনরায় রেন্ডার করাও নিশ্চিত করে (কম্পোনেন্ট ফাংশনটি আবার এক্সিকিউট হয় এবং এর আউটপুট HTML-এ আগেরটিকে রিপ্লেস করে)।
+
+```tsx
+ const { connectors, connect, status, error } = useConnect()
+```
+
+ওয়ালেট কানেকশন সম্পর্কে তথ্য পেতে [`useConnect`](https://wagmi.sh/react/api/hooks/useConnect) ব্যবহার করুন।
+
+```tsx
+ const { disconnect } = useDisconnect()
+```
+
+[এই হুকটি](https://wagmi.sh/react/api/hooks/useDisconnect) আমাদের ওয়ালেট থেকে ডিসকানেক্ট করার ফাংশন দেয়।
+
+```tsx
+ const { switchChain } = useSwitchChain()
+```
+
+[এই হুকটি](https://wagmi.sh/react/api/hooks/useSwitchChain) আমাদের চেইন সুইচ করতে দেয়।
+
+```tsx
+ useEffect(() => {
+```
+
+React হুক [`useEffect`](https://react.dev/reference/react/useEffect) আপনাকে কোনো এক্সটার্নাল সিস্টেম সিঙ্ক্রোনাইজ করার জন্য কোনো ভেরিয়েবলের মান পরিবর্তিত হলেই একটি ফাংশন রান করতে দেয়।
+
+```tsx
+ if (connection.status === 'connected' &&
+ connection.chainId !== SEPOLIA_CHAIN_ID
+ ) {
+ switchChain({ chainId: SEPOLIA_CHAIN_ID })
+ }
+```
+
+যদি আমরা কানেক্টেড থাকি, কিন্তু Sepolia ব্লকচেইনে না থাকি, তবে Sepolia-তে সুইচ করুন।
+
+```tsx
+ }, [connection.status, connection.chainId])
+```
+
+কানেকশন স্ট্যাটাস বা কানেকশন chainId পরিবর্তিত হওয়ার প্রতিবার ফাংশনটি পুনরায় রান করুন।
+
+```tsx
+ return (
+ <>
+```
+
+একটি React কম্পোনেন্টের JSX-কে _অবশ্যই_ একটি সিঙ্গেল HTML কম্পোনেন্ট রিটার্ন করতে হবে। যখন আমাদের একাধিক কম্পোনেন্ট থাকে এবং সেগুলোকে র্যাপ করার জন্য কোনো কন্টেইনারের প্রয়োজন হয় না, তখন আমরা সেগুলোকে একটি সিঙ্গেল কম্পোনেন্টে একত্রিত করতে একটি এম্পটি কম্পোনেন্ট (`<> ... >`) ব্যবহার করি।
+
+```tsx
+ Connection
+
+ status: {connection.status}
+
+ addresses: {JSON.stringify(connection.addresses)}
+
+ chainId: {connection.chainId}
+
+```
+
+বর্তমান কানেকশন সম্পর্কে তথ্য প্রদান করুন। JSX-এর ভেতরে, `{}` মানে হলো এক্সপ্রেশনটিকে JavaScript হিসেবে ইভ্যালুয়েট করা।
+
+```tsx
+ {connection.status === 'connected' && (
+```
+
+সিনট্যাক্স `{ && }` মানে হলো "যদি কন্ডিশনটি `true` হয়, তবে ভ্যালুতে ইভ্যালুয়েট করো; যদি না হয়, তবে `false`-এ ইভ্যালুয়েট করো"।
+
+এটি JSX-এর ভেতরে if স্টেটমেন্ট রাখার স্ট্যান্ডার্ড উপায়।
+
+```tsx
+
+
+
+```
+
+JSX XML স্ট্যান্ডার্ড অনুসরণ করে, যা HTML-এর চেয়ে বেশি কড়াকড়ি। যদি কোনো ট্যাগের সংশ্লিষ্ট এন্ড ট্যাগ না থাকে, তবে এটিকে টার্মিনেট করার জন্য এর শেষে _অবশ্যই_ একটি স্ল্যাশ (`/`) থাকতে হবে।
+
+এখানে আমাদের এমন দুটি ট্যাগ রয়েছে, ` ` (যাতে আসলে HTML কোড থাকে যা কন্ট্রাক্টের সাথে কথা বলে) এবং [একটি হরাইজন্টাল লাইনের জন্য `
`](https://www.w3schools.com/tags/tag_hr.asp)।
+
+```tsx
+
+
+ )}
+```
+
+ব্যবহারকারী যদি এই বাটনে ক্লিক করেন, তবে `disconnect` ফাংশনটি কল করুন।
+
+```tsx
+ {connection.status !== 'connected' && (
+```
+
+যদি আমরা কানেক্টেড _না_ থাকি, তবে ওয়ালেটে কানেক্ট করার প্রয়োজনীয় অপশনগুলো দেখান।
+
+```tsx
+
+ Connect
+ {connectors.map((connector) => (
+```
+
+`connectors`-এ আমাদের কাছে কানেক্টরগুলোর একটি তালিকা রয়েছে। আমরা এটিকে ডিসপ্লে করার জন্য JSX বাটনের একটি তালিকায় পরিণত করতে [`map`](https://www.w3schools.com/jsref/jsref_map.asp) ব্যবহার করি।
+
+```tsx
+
+ ))}
+```
+
+কানেক্টর বাটনগুলো।
+
+```tsx
+ {status}
+ {error?.message}
+
+ )}
+```
+
+অতিরিক্ত তথ্য প্রদান করুন। এক্সপ্রেশন সিনট্যাক্স `?.` JavaScript-কে বলে যে ভেরিয়েবলটি ডিফাইন করা থাকলে, সেই ফিল্ডে ইভ্যালুয়েট করো। যদি ভেরিয়েবলটি ডিফাইন করা না থাকে, তবে এই এক্সপ্রেশনটি `undefined`-এ ইভ্যালুয়েট হয়।
+
+এক্সপ্রেশন `error.message`, যখন কোনো এরর থাকে না, তখন একটি এক্সেপশন রেইজ করবে। `error?.message` ব্যবহার করলে আমরা এই সমস্যাটি এড়াতে পারি।
+
+#### `src/Greeter.tsx` {#greeter-tsx}
+
+এই ফাইলে বেশিরভাগ UI ফাংশনালিটি রয়েছে। এতে এমন সব ডেফিনিশন অন্তর্ভুক্ত রয়েছে যা সাধারণত একাধিক ফাইলে থাকে, কিন্তু যেহেতু এটি একটি টিউটোরিয়াল, তাই প্রোগ্রামটিকে পারফরম্যান্স বা মেইনটেন্যান্সের সুবিধার চেয়ে প্রথমবার সহজে বোঝার জন্য অপ্টিমাইজ করা হয়েছে।
+
+```tsx
+import {
+ useState,
+ useEffect,
+ } from 'react'
+import { useChainId,
+ useAccount,
+ useReadContract,
+ useWriteContract,
+ useWatchContractEvent,
+ useSimulateContract
+ } from 'wagmi'
+```
+
+আমরা এই লাইব্রেরি ফাংশনগুলো ব্যবহার করি। আবারও বলছি, এগুলো যেখানে ব্যবহার করা হয়েছে তার নিচে ব্যাখ্যা করা হয়েছে।
+
+```tsx
+import { AddressType } from 'abitype'
+```
+
+[`abitype` লাইব্রেরি](https://abitype.dev/) আমাদের বিভিন্ন ইথিরিয়াম ডাটা টাইপের জন্য TypeScript ডেফিনিশন প্রদান করে, যেমন [`AddressType`](https://abitype.dev/config#addresstype)।
+
+```tsx
+let greeterABI = [
+ { "type": "function", "name": "greet", ... },
+ { "type": "function", "name": "setGreeting", ... },
+ { "type": "event", "name": "SetGreeting", ... },
+] as const // greeterABI
+```
+
+`Greeter` কন্ট্রাক্টের জন্য ABI।
+আপনি যদি একই সময়ে কন্ট্রাক্ট এবং UI ডেভেলপ করেন, তবে আপনি সাধারণত সেগুলোকে একই রিপোজিটরিতে রাখবেন এবং Solidity কম্পাইলার দ্বারা জেনারেট করা ABI-কে আপনার অ্যাপ্লিকেশনে একটি ফাইল হিসেবে ব্যবহার করবেন। তবে, এখানে এটি প্রয়োজনীয় নয় কারণ কন্ট্রাক্টটি আগে থেকেই ডেভেলপ করা হয়েছে এবং এটি পরিবর্তিত হবে না।
+
+আমরা TypeScript-কে এটি একটি _প্রকৃত_ কনস্ট্যান্ট তা বোঝাতে [`as const`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) ব্যবহার করি। সাধারণত, আপনি যখন JavaScript-এ `const x = {"a": 1}` নির্দিষ্ট করেন, তখন আপনি `x`-এর মান পরিবর্তন করতে পারেন, আপনি শুধু এতে অ্যাসাইন করতে পারবেন না।
+
+```tsx
+type AddressPerBlockchainType = {
+ [key: number]: AddressType
+}
+```
+
+TypeScript স্ট্রংলি টাইপড। আমরা এই ডেফিনিশনটি ব্যবহার করে সেই এডড্রেসটি নির্দিষ্ট করি যেখানে বিভিন্ন চেইন জুড়ে `Greeter` কন্ট্রাক্টটি ডিপ্লয় করা হয়েছে। কী (key) হলো একটি সংখ্যা (chainId), এবং ভ্যালু হলো একটি `AddressType` (একটি এডড্রেস)।
+
+```tsx
+const contractAddrs : AddressPerBlockchainType = {
+ // সেপোলিয়া
+ 11155111: '0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA'
+}
+```
+
+[Sepolia](https://eth-sepolia.blockscout.com/address/0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA?tab=contract)-তে কন্ট্রাক্টের এডড্রেস।
+
+##### Timer কম্পোনেন্ট {#timer-component}
+
+`Timer` কম্পোনেন্ট একটি নির্দিষ্ট সময় থেকে কত সেকেন্ড পার হয়েছে তা দেখায়। এটি ইউজেবিলিটির উদ্দেশ্যে গুরুত্বপূর্ণ। ব্যবহারকারীরা যখন কিছু করেন, তখন তারা তাৎক্ষণিক প্রতিক্রিয়ার আশা করেন। ব্লকচেইনে, এটি প্রায়শই অসম্ভব কারণ কোনো লেনদেন ব্লকে প্লেস না হওয়া পর্যন্ত কিছুই ঘটে না। এর একটি সমাধান হলো ব্যবহারকারী অ্যাকশনটি পারফর্ম করার পর কতক্ষণ পার হয়েছে তা দেখানো, যাতে ব্যবহারকারী সিদ্ধান্ত নিতে পারেন যে প্রয়োজনীয় সময়টি যুক্তিসঙ্গত কিনা।
+
+```tsx
+type TimerProps = {
+ lastUpdate: Date
+}
+```
+
+`Timer` কম্পোনেন্ট একটি প্যারামিটার নেয়, `lastUpdate`, যা হলো শেষ অ্যাকশনের সময়।
+
+```tsx
+const Timer = ({ lastUpdate }: TimerProps) => {
+ const [_, setNow] = useState(new Date())
+```
+
+কম্পোনেন্টটি সঠিকভাবে কাজ করার জন্য আমাদের স্টেট (কম্পোনেন্টের সাথে যুক্ত একটি ভেরিয়েবল) থাকতে হবে এবং এটি আপডেট করতে হবে। কিন্তু আমাদের এটি পড়ার কোনো প্রয়োজন নেই, তাই কোনো ভেরিয়েবল তৈরি করার দরকার নেই।
+
+```tsx
+ useEffect(() => {
+ const id = setInterval(() => setNow(new Date()), 1000)
+ return () => clearInterval(id)
+ }, [])
+```
+
+[`setInterval`](https://www.w3schools.com/jsref/met_win_setinterval.asp) ফাংশনটি আমাদের পর্যায়ক্রমিকভাবে রান করার জন্য একটি ফাংশন শিডিউল করতে দেয়। এই ক্ষেত্রে, প্রতি সেকেন্ডে। ফাংশনটি স্টেট আপডেট করার জন্য `setNow` কল করে, তাই `Timer` কম্পোনেন্টটি পুনরায় রেন্ডার হবে। আমরা এটিকে একটি এম্পটি ডিপেন্ডেন্সি লিস্টের সাথে [`useEffect`](https://react.dev/reference/react/useEffect)-এর ভেতরে র্যাপ করি যাতে এটি কম্পোনেন্ট রেন্ডার হওয়ার প্রতিবারের পরিবর্তে শুধু একবার ঘটে।
+
+```tsx
+ const secondsSinceUpdate = Math.floor(
+ (Date.now() - lastUpdate.getTime()) / 1000
+ )
+
+ return (
+ {secondsSinceUpdate} seconds ago
+ )
+}
+```
+
+শেষ আপডেটের পর থেকে কত সেকেন্ড পার হয়েছে তা হিসাব করুন এবং এটি রিটার্ন করুন।
+
+##### Greeter কম্পোনেন্ট {#greeter-component}
+
+```tsx
+const Greeter = () => {
+```
+
+অবশেষে, আমরা কম্পোনেন্টটি ডিফাইন করতে পারি।
+
+```tsx
+ const chainId = useChainId()
+ const account = useAccount()
+```
+
+আমরা যে চেইন এবং একাউন্ট ব্যবহার করছি সে সম্পর্কে তথ্য, [wagmi](https://wagmi.sh/)-এর সৌজন্যে। যেহেতু এটি একটি হুক (`use...`), তাই এই তথ্য পরিবর্তিত হলেই কম্পোনেন্টটি পুনরায় রেন্ডার হয়।
+
+```tsx
+ const greeterAddr = chainId && contractAddrs[chainId]
+```
+
+Greeter কন্ট্রাক্টের এডড্রেস, যা `undefined` হবে যদি আমাদের কাছে চেইনের তথ্য না থাকে, অথবা আমরা এমন কোনো চেইনে থাকি যেখানে সেই কন্ট্রাক্টটি নেই।
+
+```tsx
+ const readResults = useReadContract({
+ address: greeterAddr,
+ abi: greeterABI,
+ functionName: "greet", // কোনো আর্গুমেন্ট নেই
+ })
+```
+
+[`useReadContract` হুকটি](https://wagmi.sh/react/api/hooks/useReadContract) [কন্ট্রাক্টের](https://eth-sepolia.blockscout.com/address/0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA?tab=contract) `greet` ফাংশন কল করে।
+
+```tsx
+ const [ currentGreeting, setCurrentGreeting ] =
+ useState("Please wait while we fetch the greeting from the blockchain...")
+ const [ newGreeting, setNewGreeting ] = useState("")
+```
+
+React-এর [`useState` হুক](https://www.w3schools.com/react/react_usestate.asp) আমাদের একটি স্টেট ভেরিয়েবল নির্দিষ্ট করতে দেয়, যার মান কম্পোনেন্টের এক রেন্ডারিং থেকে অন্য রেন্ডারিং পর্যন্ত বজায় থাকে। এর প্রাথমিক মান হলো প্যারামিটার, এই ক্ষেত্রে এম্পটি স্ট্রিং।
+
+`useState` হুক দুটি ভ্যালুসহ একটি লিস্ট রিটার্ন করে:
+
+1. স্টেট ভেরিয়েবলের বর্তমান মান।
+2. প্রয়োজন হলে স্টেট ভেরিয়েবল মডিফাই করার জন্য একটি ফাংশন। যেহেতু এটি একটি হুক, তাই প্রতিবার এটি কল করা হলে কম্পোনেন্টটি আবার রেন্ডার হয়।
+
+এই ক্ষেত্রে, ব্যবহারকারী যে নতুন গ্রিটিং সেট করতে চান তার জন্য আমরা একটি স্টেট ভেরিয়েবল ব্যবহার করছি।
+
+```tsx
+ const [ lastSetterAddress, setLastSetterAddress ] = useState("")
+```
+
+একাধিক ব্যবহারকারী যদি একই সময়ে একই কন্ট্রাক্ট ব্যবহার করেন, তবে তারা একে অপরের গ্রিটিং ওভাররাইট করতে পারেন। এটি ব্যবহারকারীদের কাছে মনে হতে পারে যেন অ্যাপ্লিকেশনটি ঠিকমতো কাজ করছে না। অ্যাপ্লিকেশনটি যদি দেখায় যে কে সর্বশেষ গ্রিটিং সেট করেছে, তবে ব্যবহারকারী বুঝতে পারবেন যে এটি অন্য কেউ ছিল এবং অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করছে।
+
+```tsx
+ const [ status, setStatus ] = useState("")
+ const [ statusTime, setStatusTime ] = useState(new Date())
+```
+
+ব্যবহারকারীরা দেখতে পছন্দ করেন যে তাদের অ্যাকশনগুলোর তাৎক্ষণিক প্রভাব পড়ছে। তবে, ব্লকচেইনে এমনটি হয় না। এই স্টেট ভেরিয়েবলগুলো আমাদের অন্তত ব্যবহারকারীদের কিছু দেখাতে দেয় যাতে তারা জানতে পারেন যে তাদের অ্যাকশনটি প্রসেস হচ্ছে।
+
+```tsx
+ useEffect(() => {
+ if (readResults.data) {
+ setCurrentGreeting(readResults.data)
+ setStatus("Greeting fetched from blockchain")
+ }
+ }, [readResults.data])
+```
+
+যদি উপরের `readResults` ডাটা পরিবর্তন করে এবং এটি কোনো ফলস ভ্যালুতে (`undefined`, উদাহরণস্বরূপ) সেট করা না থাকে, তবে বর্তমান গ্রিটিংটিকে ব্লকচেইন থেকে পড়া গ্রিটিংয়ে আপডেট করুন। এছাড়াও, স্ট্যাটাস আপডেট করুন।
+
+```tsx
+ useWatchContractEvent({
+ address: greeterAddr,
+ abi: greeterABI,
+ eventName: 'SetGreeting',
+ chainId,
+```
+
+`SetGreeting` ইভেন্টগুলো শুনুন।
+
+```tsx
+ enabled: !!greeterAddr,
+```
+
+`!!` মানে হলো যদি ভ্যালুটি `false` হয়, অথবা এমন কোনো ভ্যালু হয় যা ফলস হিসেবে ইভ্যালুয়েট হয়, যেমন `undefined`, `0`, বা একটি এম্পটি স্ট্রিং, তবে সামগ্রিকভাবে এক্সপ্রেশনটি `false`। অন্য যেকোনো ভ্যালুর জন্য, এটি `true`। এটি ভ্যালুগুলোকে বুলিয়ানে রূপান্তর করার একটি উপায়, কারণ যদি কোনো `greeterAddr` না থাকে, তবে আমরা ইভেন্টগুলো শুনতে চাই না।
+
+```tsx
+ onLogs: logs => {
+ const greetingFromContract = logs[0].args.greeting
+ setCurrentGreeting(greetingFromContract)
+ setLastSetterAddress(logs[0].args.sender)
+ updateStatus("Greeting updated by event")
+ },
+ })
+```
+
+যখন আমরা লগ দেখি (যা ঘটে যখন আমরা একটি নতুন ইভেন্ট দেখি), এর মানে হলো গ্রিটিংটি মডিফাই করা হয়েছে। সেই ক্ষেত্রে, আমরা `currentGreeting` এবং `lastSetterAddress`-কে নতুন ভ্যালুতে আপডেট করতে পারি। এছাড়াও, আমরা স্ট্যাটাস ডিসপ্লে আপডেট করতে চাই।
+
+```tsx
+ const updateStatus = (newStatus: string) => {
+ setStatus(newStatus)
+ setStatusTime(new Date())
+ }
+```
+
+যখন আমরা স্ট্যাটাস আপডেট করি তখন আমরা দুটি কাজ করতে চাই:
+
+1. স্ট্যাটাস স্ট্রিং (`status`) আপডেট করা
+2. শেষ স্ট্যাটাস আপডেটের সময় (`statusTime`) বর্তমান সময়ে আপডেট করা।
+
+```tsx
+ const greetingChange = (evt) =>
+ setNewGreeting(evt.target.value)
+```
+
+এটি নতুন গ্রিটিং ইনপুট ফিল্ডের পরিবর্তনের জন্য ইভেন্ট হ্যান্ডলার। আমরা `evt` প্যারামিটারের টাইপ নির্দিষ্ট করতে পারতাম, কিন্তু TypeScript একটি টাইপ অপশনাল ল্যাঙ্গুয়েজ। যেহেতু এই ফাংশনটি শুধুমাত্র একবার কল করা হয়, একটি HTML ইভেন্ট হ্যান্ডলারে, তাই আমি মনে করি না এটি প্রয়োজনীয়।
+
+```tsx
+ const { writeContractAsync } = useWriteContract()
+```
+
+একটি কন্ট্রাক্টে লেখার ফাংশন। এটি [`writeContracts`](https://wagmi.sh/core/api/actions/writeContracts#writecontracts)-এর মতো, তবে এটি আরও ভালো স্ট্যাটাস আপডেট এনাবল করে।
+
+```tsx
+ const simulation = useSimulateContract({
+ address: greeterAddr,
+ abi: greeterABI,
+ functionName: 'setGreeting',
+ args: [newGreeting],
+ account: account.address
+ })
+```
+
+ক্লায়েন্টের দৃষ্টিকোণ থেকে একটি ব্লকচেইন লেনদেন সাবমিট করার প্রক্রিয়াটি হলো:
+
+1. [`eth_estimateGas`](https://docs.alchemy.com/reference/eth-estimategas) ব্যবহার করে ব্লকচেইনের একটি নোডে লেনদেনটি পাঠান।
+2. নোড থেকে রেসপন্সের জন্য অপেক্ষা করুন।
+3. রেসপন্স পাওয়া গেলে, ব্যবহারকারীকে ওয়ালেটের মাধ্যমে লেনদেনটি সাইন করতে বলুন। এই ধাপটি নোডের রেসপন্স পাওয়ার পর _অবশ্যই_ ঘটতে হবে কারণ সাইন করার আগে ব্যবহারকারীকে লেনদেনের গ্যাস কস্ট দেখানো হয়।
+4. ব্যবহারকারীর অনুমোদনের জন্য অপেক্ষা করুন।
+5. লেনদেনটি আবার পাঠান, এবার [`eth_sendRawTransaction`](https://docs.alchemy.com/reference/eth-sendrawtransaction) ব্যবহার করে।
+
+ধাপ ২-এ লক্ষণীয় পরিমাণ সময় লাগতে পারে, যে সময়ে ব্যবহারকারীরা ভাবতে পারেন যে তাদের কমান্ডটি ইউজার ইন্টারফেস দ্বারা গৃহীত হয়েছে কিনা এবং কেন তাদের এখনও লেনদেনটি সাইন করতে বলা হচ্ছে না। এটি একটি খারাপ ইউজার এক্সপেরিয়েন্স (UX) তৈরি করে।
+
+এর একটি সমাধান হলো প্রতিবার কোনো প্যারামিটার পরিবর্তিত হলে `eth_estimateGas` পাঠানো। তারপর, ব্যবহারকারী যখন সত্যিই লেনদেনটি পাঠাতে চান (এই ক্ষেত্রে **Update greeting** প্রেস করে), তখন গ্যাস কস্ট জানা থাকে এবং ব্যবহারকারী তাৎক্ষণিকভাবে ওয়ালেট পেজটি দেখতে পারেন।
+
+```tsx
+ return (
+```
+
+এখন আমরা অবশেষে রিটার্ন করার জন্য আসল HTML তৈরি করতে পারি।
+
+```tsx
+ <>
+ Greeter
+ {currentGreeting}
+```
+
+বর্তমান গ্রিটিং দেখান।
+
+```tsx
+ {lastSetterAddress && (
+ Last updated by {
+ lastSetterAddress === account.address ? "you" : lastSetterAddress
+ }
+ )}
+```
+
+যদি আমরা জানি যে কে সর্বশেষ গ্রিটিং সেট করেছে, তবে সেই তথ্যটি ডিসপ্লে করুন। `Greeter` এই তথ্যের ট্র্যাক রাখে না, এবং আমরা `SetGreeting` ইভেন্টগুলোর জন্য পেছনে ফিরে তাকাতে চাই না, তাই আমরা এটি কেবল তখনই পাই যখন আমাদের রান করার সময় গ্রিটিংটি পরিবর্তিত হয়।
+
+```tsx
+
+
+
+```
+
+এটি হলো ইনপুট টেক্সট ফিল্ড যেখানে ব্যবহারকারী একটি নতুন গ্রিটিং সেট করতে পারেন। ব্যবহারকারী প্রতিবার কোনো কি (key) প্রেস করলে, আমরা `greetingChange` কল করি, যা `setNewGreeting` কল করে। যেহেতু `setNewGreeting` `useState` থেকে আসে, তাই এটি `Greeter` কম্পোনেন্টটিকে পুনরায় রেন্ডার করায়। এর মানে হলো:
+
+- নতুন গ্রিটিংয়ের ভ্যালু ধরে রাখতে আমাদের `value` নির্দিষ্ট করতে হবে, কারণ অন্যথায় এটি ডিফল্ট, অর্থাৎ এম্পটি স্ট্রিংয়ে ফিরে যাবে।
+- `newGreeting` পরিবর্তিত হওয়ার প্রতিবার `simulation`-ও আপডেট হয়, যার মানে হলো আমরা সঠিক গ্রিটিংয়ের সাথে একটি সিমুলেশন পাব। এটি প্রাসঙ্গিক হতে পারে কারণ গ্যাস কস্ট কল ডাটার সাইজের ওপর নির্ভর করে, যা স্ট্রিংয়ের দৈর্ঘ্যের ওপর নির্ভর করে।
+
+```tsx
+
+
+```
+
+লেনদেনটি আসলে পাঠানোর পরই কেবল `writeContractAsync` রিটার্ন করে। এটি আমাদের ব্যবহারকারীকে দেখাতে দেয় যে লেনদেনটি ব্লকচেইনে অন্তর্ভুক্ত হওয়ার জন্য কতক্ষণ ধরে অপেক্ষা করছে।
+
+```tsx
+ Status: {status}
+ Updated
+ >
+ )
+}
+```
+
+স্ট্যাটাস এবং এটি আপডেট হওয়ার পর কতক্ষণ পার হয়েছে তা দেখান।
+
+```
+export {Greeter}
+```
+
+কম্পোনেন্টটি এক্সপোর্ট করুন।
+
+#### `src/wagmi.ts` {#wagmi-ts}
+
+অবশেষে, wagmi সম্পর্কিত বিভিন্ন ডেফিনিশন `src/wagmi.ts`-এ রয়েছে। আমি এখানে সবকিছু ব্যাখ্যা করব না, কারণ এর বেশিরভাগই বয়লারপ্লেট যা আপনার পরিবর্তন করার প্রয়োজন হওয়ার সম্ভাবনা কম।
+
+```ts
+import { http, webSocket, createConfig, fallback } from 'wagmi'
+import { sepolia } from 'wagmi/chains'
+import { injected } from 'wagmi/connectors'
+
+export const config = createConfig({
+ chains: [sepolia],
+```
+
+wagmi কনফিগারেশনে এই অ্যাপ্লিকেশন দ্বারা সাপোর্টেড চেইনগুলো অন্তর্ভুক্ত রয়েছে। আপনি [অ্যাভেইলেবল চেইনগুলোর তালিকা](https://wagmi.sh/core/api/chains) দেখতে পারেন।
+
+```ts
+ connectors: [
+ injected(),
+ ],
+```
+
+[এই কানেক্টরটি](https://wagmi.sh/core/api/connectors/injected) আমাদের ব্রাউজারে ইনস্টল করা একটি ওয়ালেটের সাথে কথা বলতে দেয়।
+
+```ts
+ transports: {
+ [sepolia.id]: http()
+```
+
+Viem-এর সাথে আসা ডিফল্ট HTTP এন্ডপয়েন্টটি যথেষ্ট ভালো। আমরা যদি ভিন্ন কোনো URL চাই, তবে আমরা `http("https:// hostname ")` বা `webSocket("wss:// hostname ")` ব্যবহার করতে পারি।
+
+```ts
+ },
+ multiInjectedProviderDiscovery: false,
+})
+```
+
+## আরেকটি ব্লকচেইন যোগ করা {#add-blockchain}
+
+আজকাল অনেক [L2 স্কেলিং সলিউশন](https://ethereum.org/layer-2/) রয়েছে, এবং আপনি হয়তো এমন কিছু সাপোর্ট করতে চাইতে পারেন যা viem এখনও সাপোর্ট করে না। এটি করতে, আপনি `src/wagmi.ts` মডিফাই করবেন। এই নির্দেশিকাগুলো ব্যাখ্যা করে কীভাবে [Optimism Sepolia](https://chainlist.org/chain/11155420) যোগ করতে হয়।
+
+1. `src/wagmi.ts` এডিট করুন
+
+ A. viem থেকে `defineChain` টাইপ ইমপোর্ট করুন।
+
+ ```ts
+ import { defineChain } from 'viem'
+ ```
+
+ B. নেটওয়ার্ক ডেফিনিশন যোগ করুন। Optimism Sepolia-এর জন্য আপনার আসলে এটি করার প্রয়োজন নেই, [এটি আগে থেকেই `viem`-এ রয়েছে](https://github.com/wevm/viem/blob/main/src/chains/definitions/optimismSepolia.ts), কিন্তু এভাবে আপনি শিখতে পারবেন কীভাবে এমন একটি ব্লকচেইন যোগ করতে হয় যা `viem`-এ নেই।
+
+ ```ts
+ const optimismSepolia = defineChain({
+ id: 11_155_420,
+ name: 'OP Sepolia',
+ nativeCurrency: { name: 'Sepolia Ether', symbol: 'ETH', decimals: 18 },
+ rpcUrls: {
+ default: {
+ http: ['https://sepolia.optimism.io'],
+ webSocket: ['wss://optimism-sepolia.drpc.org'],
+ },
+ },
+ blockExplorers: {
+ default: {
+ name: 'Blockscout',
+ url: 'https://optimism-sepolia.blockscout.com',
+ apiUrl: 'https://optimism-sepolia.blockscout.com/api',
+ }
+ },
+ })
+ ```
+
+ C. `createConfig` কলে নতুন চেইনটি যোগ করুন।
+
+ ```ts
+ export const config = createConfig({
+ chains: [sepolia, optimismSepolia],
+ connectors: [
+ injected(),
+ ],
+ transports: {
+ [optimismSepolia.id]: http(),
+ [sepolia.id]: http()
+ },
+ multiInjectedProviderDiscovery: false,
+ })
+ ```
+
+2. Sepolia-তে স্বয়ংক্রিয় সুইচিং কমেন্ট আউট করতে `src/App.tsx` এডিট করুন। একটি প্রোডাকশন সিস্টেমে, আপনি সম্ভবত আপনার সাপোর্টেড প্রতিটি ব্লকচেইনের লিংকসহ বাটন দেখাবেন।
+
+ ```ts
+ /* useEffect(() => {
+ if (connection.status === 'connected' &&
+ connection.chainId !== SEPOLIA_CHAIN_ID
+ ) {
+ switchChain({ chainId: SEPOLIA_CHAIN_ID })
+ }
+ }, [connection.status, connection.chainId]) */
+ ```
+
+3. অ্যাপ্লিকেশনটি যাতে নতুন নেটওয়ার্কে আপনার কন্ট্রাক্টগুলোর এডড্রেস জানে তা নিশ্চিত করতে `src/Greeter.tsx` এডিট করুন।
+
+ ```ts
+ const contractAddrs: AddressPerBlockchainType = {
+ // অপটিমিজম সেপোলিয়া
+ 11155420: "0x4dd85791923E9294E934271522f63875EAe5806f",
+
+ // সেপোলিয়া
+ 11155111: "0x7143d5c190F048C8d19fe325b748b081903E3BF0",
+ }
+ ```
+
+4. আপনার ব্রাউজারে।
+
+ A. [ChainList](https://chainlist.org/chain/11155420?testnets=true)-এ ব্রাউজ করুন এবং আপনার ওয়ালেটে চেইনটি যোগ করতে টেবিলের ডানদিকের যেকোনো একটি বাটনে ক্লিক করুন।
+
+ B. অ্যাপ্লিকেশনে, ব্লকচেইন পরিবর্তন করতে **Disconnect** করুন এবং তারপর পুনরায় কানেক্ট করুন। এটি হ্যান্ডেল করার আরও ভালো উপায় রয়েছে, তবে সেগুলোর জন্য অ্যাপ্লিকেশনে পরিবর্তন আনতে হবে।
+
+## উপসংহার {#conclusion}
+
+অবশ্যই, আপনি `Greeter`-এর জন্য একটি ইউজার ইন্টারফেস প্রদান করার বিষয়ে খুব একটা আগ্রহী নন। আপনি আপনার নিজের কন্ট্রাক্টগুলোর জন্য একটি ইউজার ইন্টারফেস তৈরি করতে চান। আপনার নিজের অ্যাপ্লিকেশন তৈরি করতে, এই ধাপগুলো রান করুন:
+
+1. একটি wagmi অ্যাপ্লিকেশন তৈরি করার জন্য নির্দিষ্ট করুন।
+
+ ```sh copy
+ npm create wagmi
+ ```
+
+2. এগিয়ে যেতে `y` টাইপ করুন।
+
+3. অ্যাপ্লিকেশনটির নাম দিন।
+
+4. **React** ফ্রেমওয়ার্ক নির্বাচন করুন।
+
+5. **Vite** ভ্যারিয়েন্ট নির্বাচন করুন।
+
+এখন যান এবং আপনার কন্ট্রাক্টগুলোকে পুরো বিশ্বের জন্য ব্যবহারযোগ্য করে তুলুন।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/bn/developers/tutorials/deploying-your-first-smart-contract/index.md
new file mode 100644
index 00000000000..2a746123d26
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/deploying-your-first-smart-contract/index.md
@@ -0,0 +1,96 @@
+---
+title: আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা
+description: ইথিরিয়াম টেস্টনেট-এ আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার একটি পরিচিতি
+author: "jdourlens"
+tags: ["স্মার্ট কন্ট্রাক্ট", "remix", "solidity", "ডিপ্লয়িং"]
+skill: beginner
+breadcrumb: প্রথম কন্ট্রাক্ট ডিপ্লয় করুন
+lang: bn
+published: 2020-04-03
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/deploying-your-first-smart-contract/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+আমি ধারণা করছি যে আপনিও আমাদের মতো ইথিরিয়াম ব্লকচেইন-এ আপনার প্রথম [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts/) [ডিপ্লয়](/developers/docs/smart-contracts/deploying/) করতে এবং এর সাথে ইন্টারঅ্যাক্ট করতে অনেক বেশি আগ্রহী।
+
+চিন্তা করবেন না, যেহেতু এটি আমাদের প্রথম স্মার্ট কন্ট্রাক্ট, তাই আমরা এটি একটি [লোকাল টেস্টনেট-এ](/developers/docs/networks/) ডিপ্লয় করব যাতে এটি ডিপ্লয় করতে আপনার কোনো খরচ না হয় এবং আপনি যত খুশি এটি নিয়ে কাজ করতে পারেন।
+
+## আমাদের কন্ট্রাক্ট লেখা {#writing-our-contract}
+
+প্রথম ধাপ হলো [Remix-এ যাওয়া](https://remix.ethereum.org/) এবং একটি নতুন ফাইল তৈরি করা। Remix ইন্টারফেসের উপরের বাম দিকে একটি নতুন ফাইল যোগ করুন এবং আপনার পছন্দমতো ফাইলের নাম দিন।
+
+
+
+নতুন ফাইলে, আমরা নিচের কোডটি পেস্ট করব।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >=0.5.17;
+
+contract Counter {
+
+ // কাউন্টের সংখ্যা রাখার জন্য unsigned int টাইপের পাবলিক ভেরিয়েবল
+ uint256 public count = 0;
+
+ // যে ফাংশনটি আমাদের কাউন্টার বৃদ্ধি করে
+ function increment() public {
+ count += 1;
+ }
+
+ // কাউন্টের মান পাওয়ার জন্য অপ্রয়োজনীয় গেটার
+ function getCount() public view returns (uint256) {
+ return count;
+ }
+
+}
+```
+
+আপনি যদি প্রোগ্রামিংয়ের সাথে পরিচিত হন, তবে এই প্রোগ্রামটি কী করে তা সহজেই অনুমান করতে পারবেন। নিচে লাইন বাই লাইন ব্যাখ্যা দেওয়া হলো:
+
+- লাইন 4: আমরা `Counter` নামের একটি কন্ট্রাক্ট ডিফাইন করেছি।
+- লাইন 7: আমাদের কন্ট্রাক্টটি `count` নামের একটি আনসাইনড ইন্টিজার (unsigned integer) স্টোর করে, যা 0 থেকে শুরু হয়।
+- লাইন 10: প্রথম ফাংশনটি কন্ট্রাক্টের স্টেট পরিবর্তন করবে এবং আমাদের `count` ভেরিয়েবলটিকে `increment()` করবে।
+- লাইন 15: দ্বিতীয় ফাংশনটি হলো একটি গেটার (getter), যা স্মার্ট কন্ট্রাক্ট-এর বাইরে থেকে `count` ভেরিয়েবলের মান পড়তে সাহায্য করে। মনে রাখবেন, যেহেতু আমরা আমাদের `count` ভেরিয়েবলটিকে পাবলিক হিসেবে ডিফাইন করেছি, তাই এটি অপরিহার্য নয়, তবে এটি একটি উদাহরণ হিসেবে দেখানো হয়েছে।
+
+আমাদের প্রথম সাধারণ স্মার্ট কন্ট্রাক্ট-এর জন্য এতটুকুই। আপনি হয়তো জানেন, এটি Java বা C++ এর মতো OOP (অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং) ভাষার ক্লাসের মতো দেখতে। এখন আমাদের কন্ট্রাক্ট নিয়ে কাজ করার সময়।
+
+## আমাদের কন্ট্রাক্ট ডিপ্লয় করা {#deploying-our-contract}
+
+যেহেতু আমরা আমাদের প্রথম স্মার্ট কন্ট্রাক্ট লিখে ফেলেছি, তাই এখন আমরা এটি ব্লকচেইন-এ ডিপ্লয় করব যাতে আমরা এটি নিয়ে কাজ করতে পারি।
+
+[ব্লকচেইন-এ স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা](/developers/docs/smart-contracts/deploying/) বলতে মূলত কোনো প্রাপক নির্দিষ্ট না করেই কম্পাইল করা স্মার্ট কন্ট্রাক্ট-এর কোড সম্বলিত একটি লেনদেন পাঠানোকে বোঝায়।
+
+আমরা প্রথমে বাম দিকের কম্পাইল আইকনে ক্লিক করে [কন্ট্রাক্টটি কম্পাইল করব](/developers/docs/smart-contracts/compiling/):
+
+
+
+এরপর কম্পাইল বাটনে ক্লিক করুন:
+
+
+
+আপনি চাইলে "Auto compile" অপশনটি নির্বাচন করতে পারেন, যাতে টেক্সট এডিটরে কন্টেন্ট সেভ করার সাথে সাথেই কন্ট্রাক্টটি স্বয়ংক্রিয়ভাবে কম্পাইল হয়ে যায়।
+
+এরপর "deploy and run transactions" স্ক্রিনে যান:
+
+
+
+"deploy and run transactions" স্ক্রিনে যাওয়ার পর, আপনার কন্ট্রাক্টের নাম দেখাচ্ছে কিনা তা ভালোভাবে চেক করুন এবং Deploy-এ ক্লিক করুন। পৃষ্ঠার উপরের দিকে দেখতে পাবেন, বর্তমান এনভায়রনমেন্ট হলো "JavaScript VM", যার মানে হলো আমরা একটি লোকাল টেস্ট ব্লকচেইন-এ আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় করব এবং এর সাথে ইন্টারঅ্যাক্ট করব, যাতে কোনো ফি ছাড়াই দ্রুত টেস্ট করা যায়।
+
+
+
+"Deploy" বাটনে ক্লিক করার পর, আপনি নিচে আপনার কন্ট্রাক্টটি দেখতে পাবেন। বাম দিকের অ্যারোতে ক্লিক করে এটি এক্সপ্যান্ড করুন যাতে আমরা আমাদের কন্ট্রাক্টের কন্টেন্ট দেখতে পারি। এখানে আমাদের `counter` ভেরিয়েবল, `increment()` ফাংশন এবং `getCounter()` গেটার রয়েছে।
+
+আপনি যদি `count` বা `getCount` বাটনে ক্লিক করেন, তবে এটি কন্ট্রাক্টের `count` ভেরিয়েবলের কন্টেন্ট নিয়ে আসবে এবং তা প্রদর্শন করবে। যেহেতু আমরা এখনও `increment` ফাংশনটি কল করিনি, তাই এটি 0 দেখাবে।
+
+
+
+চলুন এখন বাটনে ক্লিক করে `increment` ফাংশনটি কল করি। আপনি উইন্ডোর নিচের দিকে সম্পন্ন হওয়া লেনদেনগুলোর লগ দেখতে পাবেন। আপনি লক্ষ্য করবেন যে, `increment` বাটনের পরিবর্তে ডেটা রিট্রিভ করার বাটনে ক্লিক করলে লগগুলো ভিন্ন হয়। এর কারণ হলো ব্লকচেইন-এ ডেটা পড়ার জন্য কোনো লেনদেন (রাইটিং) বা ফি-এর প্রয়োজন হয় না। কারণ শুধুমাত্র ব্লকচেইন-এর স্টেট পরিবর্তন করার জন্যই লেনদেন করার প্রয়োজন হয়:
+
+
+
+ইনক্রিমেন্ট বাটনে চাপ দেওয়ার পর, যা আমাদের `increment()` ফাংশন কল করার জন্য একটি লেনদেন তৈরি করবে, আমরা যদি আবার count বা getCount বাটনে ক্লিক করি, তবে আমরা আমাদের স্মার্ট কন্ট্রাক্ট-এর নতুন আপডেট হওয়া স্টেট দেখতে পাব, যেখানে count ভেরিয়েবলের মান 0 এর চেয়ে বড় হবে।
+
+
+
+পরবর্তী টিউটোরিয়ালে, আমরা আলোচনা করব [কীভাবে আপনি আপনার স্মার্ট কন্ট্রাক্ট-এ ইভেন্ট যোগ করতে পারেন](/developers/tutorials/logging-events-smart-contracts/)। ইভেন্ট লগ করা হলো আপনার স্মার্ট কন্ট্রাক্ট ডিবাগ করার এবং কোনো ফাংশন কল করার সময় কী ঘটছে তা বোঝার একটি সুবিধাজনক উপায়।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md b/public/content/translations/bn/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
new file mode 100644
index 00000000000..f7df35eb3c5
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/develop-and-test-dapps-with-a-multi-client-local-eth-testnet/index.md
@@ -0,0 +1,373 @@
+---
+title: কীভাবে একটি লোকাল, মাল্টি-ক্লায়েন্ট টেস্টনেট-এ একটি ডিএ্যাপ ডেভেলপ এবং টেস্ট করবেন
+description: এই গাইডটি প্রথমে আপনাকে দেখাবে কীভাবে একটি মাল্টি-ক্লায়েন্ট লোকাল ইথিরিয়াম টেস্টনেট ইনস্ট্যানশিয়েট এবং কনফিগার করতে হয়, এরপর সেই টেস্টনেট ব্যবহার করে একটি ডিএ্যাপ ডিপ্লয় এবং টেস্ট করার প্রক্রিয়া বর্ণনা করবে।
+author: "টেডি মিতিকু"
+tags:
+ [
+ "ক্লায়েন্টস",
+ "নোডস",
+ "স্মার্ট কন্ট্রাক্ট",
+ "কম্পোজেবিলিটি",
+ "কনসেন্সাস লেয়ার",
+ "এক্সিকিউশন লেয়ার",
+ "টেস্টিং",
+ ]
+skill: intermediate
+breadcrumb: মাল্টি-ক্লায়েন্ট টেস্টনেট
+lang: bn
+published: 2023-04-11
+---
+
+## ভূমিকা {#introduction}
+
+এই গাইডটি আপনাকে একটি কনফিগারযোগ্য লোকাল ইথিরিয়াম টেস্টনেট ইনস্ট্যানশিয়েট করা, এতে একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা এবং আপনার ডিএ্যাপ-এর বিরুদ্ধে টেস্ট চালানোর জন্য টেস্টনেট ব্যবহার করার প্রক্রিয়ার মধ্য দিয়ে নিয়ে যাবে। এই গাইডটি সেইসব ডিএ্যাপ ডেভেলপারদের জন্য তৈরি করা হয়েছে যারা একটি লাইভ টেস্টনেট বা মেইননেট-এ ডিপ্লয় করার আগে বিভিন্ন নেটওয়ার্ক কনফিগারেশনের বিপরীতে লোকালি তাদের ডিএ্যাপস ডেভেলপ এবং টেস্ট করতে চান।
+
+এই গাইডে, আপনি যা করবেন:
+
+- [Kurtosis](https://www.kurtosis.com/) ব্যবহার করে [`eth-network-package`](https://github.com/kurtosis-tech/eth-network-package)-এর সাহায্যে একটি লোকাল ইথিরিয়াম টেস্টনেট ইনস্ট্যানশিয়েট করবেন,
+- একটি ডিএ্যাপ কম্পাইল, ডিপ্লয় এবং টেস্ট করার জন্য আপনার Hardhat ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্টকে লোকাল টেস্টনেট-এর সাথে কানেক্ট করবেন, এবং
+- বিভিন্ন নেটওয়ার্ক কনফিগারেশনের বিপরীতে ডেভেলপমেন্ট এবং টেস্টিং ওয়ার্কফ্লো সক্ষম করতে নোড-এর সংখ্যা এবং নির্দিষ্ট EL/CL ক্লায়েন্ট পেয়ারিংয়ের মতো প্যারামিটারসহ লোকাল টেস্টনেট কনফিগার করবেন।
+
+### Kurtosis কী? {#what-is-kurtosis}
+
+[Kurtosis](https://www.kurtosis.com/) হলো একটি কম্পোজেবল বিল্ড সিস্টেম যা মাল্টি-কন্টেইনার টেস্ট এনভায়রনমেন্ট কনফিগার করার জন্য ডিজাইন করা হয়েছে। এটি বিশেষভাবে ডেভেলপারদের এমন রিপ্রোডিউসিবল এনভায়রনমেন্ট তৈরি করতে সক্ষম করে যার জন্য ডাইনামিক সেটআপ লজিক প্রয়োজন, যেমন ব্লকচেইন টেস্টনেট।
+
+এই গাইডে, Kurtosis eth-network-package একটি লোকাল ইথিরিয়াম টেস্টনেট চালু করে যা [`geth`](https://geth.ethereum.org/) এক্সিকিউশন লেয়ার (EL) ক্লায়েন্ট, সেইসাথে [`teku`](https://consensys.io/teku), [`lighthouse`](https://lighthouse.sigmaprime.io/), এবং [`lodestar`](https://lodestar.chainsafe.io/) কনসেন্সাস লেয়ার (CL) ক্লায়েন্ট সমর্থন করে। এই প্যাকেজটি Hardhat Network, Ganache, এবং Anvil-এর মতো ফ্রেমওয়ার্কের নেটওয়ার্কগুলোর একটি কনফিগারযোগ্য এবং কম্পোজেবল বিকল্প হিসেবে কাজ করে। Kurtosis ডেভেলপারদের তাদের ব্যবহৃত টেস্টনেটগুলোর ওপর আরও বেশি নিয়ন্ত্রণ এবং ফ্লেক্সিবিলিটি প্রদান করে, যা একটি প্রধান কারণ যে কেন [ইথিরিয়াম ফাউন্ডেশন Merge টেস্ট করার জন্য Kurtosis ব্যবহার করেছিল](https://www.kurtosis.com/blog/testing-the-ethereum-merge) এবং নেটওয়ার্ক আপগ্রেড টেস্টিংয়ের জন্য এটি ব্যবহার করা চালিয়ে যাচ্ছে।
+
+## Kurtosis সেটআপ করা {#setting-up-kurtosis}
+
+এগিয়ে যাওয়ার আগে, নিশ্চিত করুন যে আপনার কাছে আছে:
+
+- আপনার লোকাল মেশিনে [Docker ইঞ্জিন ইনস্টল এবং চালু করা আছে](https://docs.kurtosis.com/install/#i-install--start-docker)
+- [Kurtosis CLI ইনস্টল করা আছে](https://docs.kurtosis.com/install#ii-install-the-cli) (অথবা যদি আপনার কাছে আগে থেকেই CLI ইনস্টল করা থাকে, তবে এটি লেটেস্ট রিলিজে আপগ্রেড করা আছে)
+- [Node.js](https://nodejs.org/en), [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable), এবং [npx](https://www.npmjs.com/package/npx) ইনস্টল করা আছে (আপনার ডিএ্যাপ এনভায়রনমেন্টের জন্য)
+
+## একটি লোকাল ইথিরিয়াম টেস্টনেট ইনস্ট্যানশিয়েট করা {#instantiate-testnet}
+
+একটি লোকাল ইথিরিয়াম টেস্টনেট চালু করতে, রান করুন:
+
+```python
+kurtosis --enclave local-eth-testnet run github.com/kurtosis-tech/eth-network-package
+```
+
+নোট: এই কমান্ডটি `--enclave` ফ্ল্যাগ ব্যবহার করে আপনার নেটওয়ার্কের নাম দেয়: "local-eth-testnet”।
+
+Kurtosis নির্দেশাবলী ইন্টারপ্রেট, ভ্যালিডেট এবং তারপর এক্সিকিউট করার জন্য কাজ করার সময় এর ভেতরের পদক্ষেপগুলো প্রিন্ট করবে। শেষে, আপনার নিচের মতো একটি আউটপুট দেখা উচিত:
+
+```python
+INFO[2023-04-04T18:09:44-04:00] ======================================================
+INFO[2023-04-04T18:09:44-04:00] || Created enclave: local-eth-testnet ||
+INFO[2023-04-04T18:09:44-04:00] ======================================================
+Name: local-eth-testnet
+UUID: 39372d756ae8
+Status: RUNNING
+Creation Time: Tue, 04 Apr 2023 18:09:03 EDT
+
+========================================= Files Artifacts =========================================
+UUID Name
+d4085a064230 cl-genesis-data
+1c62cb792e4c el-genesis-data
+bd60489b73a7 genesis-generation-config-cl
+b2e593fe5228 genesis-generation-config-el
+d552a54acf78 geth-prefunded-keys
+5f7e661eb838 prysm-password
+054e7338bb59 validator-keystore-0
+
+========================================== User Services ==========================================
+UUID Name Ports Status
+e20f129ee0c5 cl-client-0-beacon http: 4000/tcp -> RUNNING
+ metrics: 5054/tcp ->
+ tcp-discovery: 9000/tcp -> 127.0.0.1:54263
+ udp-discovery: 9000/udp -> 127.0.0.1:60470
+a8b6c926cdb4 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:54267 RUNNING
+ metrics: 5064/tcp ->
+d7b802f623e8 el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:54253 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:54251
+ tcp-discovery: 30303/tcp -> 127.0.0.1:54254
+ udp-discovery: 30303/udp -> 127.0.0.1:53834
+ ws: 8546/tcp -> 127.0.0.1:54252
+514a829c0a84 prelaunch-data-generator-1680646157905431468 STOPPED
+62bd62d0aa7a prelaunch-data-generator-1680646157915424301 STOPPED
+05e9619e0e90 prelaunch-data-generator-1680646157922872635 STOPPED
+
+```
+
+অভিনন্দন! আপনি Docker-এর ওপর একটি CL (`lighthouse`) এবং EL ক্লায়েন্ট (`geth`) সহ একটি লোকাল ইথিরিয়াম টেস্টনেট ইনস্ট্যানশিয়েট করতে Kurtosis ব্যবহার করেছেন।
+
+### পর্যালোচনা {#review-instantiate-testnet}
+
+এই সেকশনে, আপনি একটি কমান্ড এক্সিকিউট করেছেন যা Kurtosis-কে একটি Kurtosis [Enclave](https://docs.kurtosis.com/advanced-concepts/enclaves/)-এর মধ্যে একটি লোকাল ইথিরিয়াম টেস্টনেট চালু করতে [GitHub-এ রিমোটলি হোস্ট করা `eth-network-package`](https://github.com/kurtosis-tech/eth-network-package) ব্যবহার করার নির্দেশ দিয়েছে। আপনার এনক্লেভের ভেতরে, আপনি "file artifacts" এবং "user services" উভয়ই পাবেন।
+
+আপনার এনক্লেভের [File Artifacts](https://docs.kurtosis.com/advanced-concepts/files-artifacts/)-এ EL এবং CL ক্লায়েন্ট বুটস্ট্র্যাপ করার জন্য জেনারেট করা এবং ব্যবহৃত সমস্ত ডাটা অন্তর্ভুক্ত রয়েছে। এই ডাটাটি এই [Docker ইমেজ](https://github.com/ethpandaops/ethereum-genesis-generator) থেকে তৈরি `prelaunch-data-generator` সার্ভিস ব্যবহার করে তৈরি করা হয়েছিল।
+
+ইউজার সার্ভিসগুলো আপনার এনক্লেভে পরিচালিত সমস্ত কন্টেইনারাইজড সার্ভিস প্রদর্শন করে। আপনি লক্ষ্য করবেন যে একটি একক নোড তৈরি করা হয়েছে, যাতে একটি EL ক্লায়েন্ট এবং একটি CL ক্লায়েন্ট উভয়ই রয়েছে।
+
+## আপনার ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্টকে লোকাল ইথিরিয়াম টেস্টনেট-এর সাথে কানেক্ট করুন {#connect-your-dapp}
+
+### ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্ট সেটআপ করুন {#set-up-dapp-env}
+
+এখন যেহেতু আপনার একটি চলমান লোকাল টেস্টনেট আছে, আপনি আপনার লোকাল টেস্টনেট ব্যবহার করার জন্য আপনার ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্ট কানেক্ট করতে পারেন। এই গাইডে আপনার লোকাল টেস্টনেট-এ একটি ব্ল্যাকজ্যাক ডিএ্যাপ ডিপ্লয় করতে Hardhat ফ্রেমওয়ার্ক ব্যবহার করা হবে।
+
+আপনার ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করতে, আমাদের স্যাম্পল ডিএ্যাপ ধারণকারী রিপোজিটরিটি ক্লোন করুন এবং এর ডিপেন্ডেন্সিগুলো ইনস্টল করুন, রান করুন:
+
+```python
+git clone https://github.com/kurtosis-tech/awesome-kurtosis.git && cd awesome-kurtosis/smart-contract-example && yarn
+```
+
+এখানে ব্যবহৃত [smart-contract-example](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example) ফোল্ডারে [Hardhat](https://hardhat.org/) ফ্রেমওয়ার্ক ব্যবহারকারী একজন ডিএ্যাপ ডেভেলপারের জন্য সাধারণ সেটআপ রয়েছে:
+
+- [`contracts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/contracts)-এ একটি ব্ল্যাকজ্যাক ডিএ্যাপ-এর জন্য কয়েকটি সাধারণ স্মার্ট কন্ট্রাক্ট রয়েছে
+- [`scripts/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/scripts)-এ আপনার লোকাল ইথিরিয়াম নেটওয়ার্ক-এ একটি টোকেন কন্ট্রাক্ট ডিপ্লয় করার জন্য একটি স্ক্রিপ্ট রয়েছে
+- [`test/`](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/smart-contract-example/test)-এ আপনার টোকেন কন্ট্রাক্টের জন্য একটি সাধারণ .js টেস্ট রয়েছে যা নিশ্চিত করে যে আমাদের ব্ল্যাকজ্যাক ডিএ্যাপ-এর প্রতিটি প্লেয়ারের জন্য 1000 মিন্ট করা হয়েছে
+- [`hardhat.config.ts`](https://github.com/kurtosis-tech/awesome-kurtosis/blob/main/smart-contract-example/hardhat.config.ts) আপনার Hardhat সেটআপ কনফিগার করে
+
+### লোকাল টেস্টনেট ব্যবহার করার জন্য Hardhat কনফিগার করুন {#configure-hardhat}
+
+আপনার ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ হওয়ার পর, আপনি এখন Kurtosis ব্যবহার করে জেনারেট করা লোকাল ইথিরিয়াম টেস্টনেট ব্যবহার করার জন্য Hardhat কানেক্ট করবেন। এটি সম্পন্ন করতে, আপনার `hardhat.config.ts` কনফিগ ফাইলের `localnet` স্ট্রাক্টে থাকা `<$YOUR_PORT>`-কে যেকোনো `el-client-` সার্ভিস থেকে পাওয়া rpc uri আউটপুটের পোর্ট দিয়ে রিপ্লেস করুন। এই স্যাম্পল ক্ষেত্রে, পোর্টটি হবে `64248`। আপনার পোর্ট ভিন্ন হবে।
+
+`hardhat.config.ts`-এ উদাহরণ:
+
+```js
+localnet: {
+url: 'http://127.0.0.1:<$YOUR_PORT>', // TODO: ETH NETWORK KURTOSIS PACKAGE দ্বারা তৈরি একটি NODE URI এর পোর্ট দিয়ে $YOUR_PORT প্রতিস্থাপন করুন
+
+// এগুলো হলো eth-network-package দ্বারা তৈরি প্রিফান্ডেড টেস্ট অ্যাকাউন্টগুলোর সাথে যুক্ত প্রাইভেট কী
+//
+accounts: [
+ "ef5177cd0b6b21c87db5a0bf35d4084a8a57a9d6a064f86d51ac85f2b873a4e2",
+ "48fcc39ae27a0e8bf0274021ae6ebd8fe4a0e12623d61464c498900b28feb567",
+ "7988b3a148716ff800414935b305436493e1f25237a2a03e5eebc343735e2f31",
+ "b3c409b6b0b3aa5e65ab2dc1930534608239a478106acf6f3d9178e9f9b00b35",
+ "df9bb6de5d3dc59595bcaa676397d837ff49441d211878c024eabda2cd067c9f",
+ "7da08f856b5956d40a72968f93396f6acff17193f013e8053f6fbb6c08c194d6",
+ ],
+},
+```
+
+একবার আপনি আপনার ফাইল সেভ করলে, আপনার Hardhat ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্ট এখন আপনার লোকাল ইথিরিয়াম টেস্টনেট-এর সাথে কানেক্ট হয়ে যাবে! আপনি নিচের কমান্ডটি রান করে যাচাই করতে পারেন যে আপনার টেস্টনেট কাজ করছে:
+
+```python
+npx hardhat balances --network localnet
+```
+
+আউটপুটটি দেখতে অনেকটা এরকম হওয়া উচিত:
+
+```python
+0x878705ba3f8Bc32FCf7F4CAa1A35E72AF65CF766 has balance 10000000000000000000000000
+0x4E9A3d9D1cd2A2b2371b8b3F489aE72259886f1A has balance 10000000000000000000000000
+0xdF8466f277964Bb7a0FFD819403302C34DCD530A has balance 10000000000000000000000000
+0x5c613e39Fc0Ad91AfDA24587e6f52192d75FBA50 has balance 10000000000000000000000000
+0x375ae6107f8cC4cF34842B71C6F746a362Ad8EAc has balance 10000000000000000000000000
+0x1F6298457C5d76270325B724Da5d1953923a6B88 has balance 10000000000000000000000000
+```
+
+এটি নিশ্চিত করে যে Hardhat আপনার লোকাল টেস্টনেট ব্যবহার করছে এবং `eth-network-package` দ্বারা তৈরি প্রি-ফান্ডেড একাউন্টগুলো ডিটেক্ট করছে।
+
+### লোকালি আপনার ডিএ্যাপ ডিপ্লয় এবং টেস্ট করুন {#deploy-and-test-dapp}
+
+ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্ট লোকাল ইথিরিয়াম টেস্টনেট-এর সাথে সম্পূর্ণভাবে কানেক্ট হওয়ার পর, আপনি এখন লোকাল টেস্টনেট ব্যবহার করে আপনার ডিএ্যাপ-এর বিপরীতে ডেভেলপমেন্ট এবং টেস্টিং ওয়ার্কফ্লো রান করতে পারেন।
+
+লোকাল প্রোটোটাইপিং এবং ডেভেলপমেন্টের জন্য `ChipToken.sol` স্মার্ট কন্ট্রাক্ট কম্পাইল এবং ডিপ্লয় করতে, রান করুন:
+
+```python
+npx hardhat compile
+npx hardhat run scripts/deploy.ts --network localnet
+```
+
+আউটপুটটি দেখতে অনেকটা এরকম হওয়া উচিত:
+
+```python
+ChipToken deployed to: 0xAb2A01BC351770D09611Ac80f1DE076D56E0487d
+```
+
+এখন আমাদের ব্ল্যাকজ্যাক ডিএ্যাপ-এর প্রতিটি প্লেয়ারের জন্য 1000 মিন্ট করা হয়েছে তা নিশ্চিত করতে আপনার লোকাল ডিএ্যাপ-এর বিপরীতে `simple.js` টেস্ট রান করার চেষ্টা করুন:
+
+আউটপুটটি দেখতে অনেকটা এরকম হওয়া উচিত:
+
+```python
+npx hardhat test --network localnet
+```
+
+আউটপুটটি দেখতে অনেকটা এরকম হওয়া উচিত:
+
+```python
+ChipToken
+ mint
+ ✔ should mint 1000 chips for PLAYER ONE
+
+ 1 passing (654ms)
+```
+
+### পর্যালোচনা {#review-dapp-workflows}
+
+এই পর্যায়ে, আপনি এখন একটি ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করেছেন, এটিকে Kurtosis দ্বারা তৈরি একটি লোকাল ইথিরিয়াম নেটওয়ার্ক-এর সাথে কানেক্ট করেছেন এবং আপনার ডিএ্যাপ-এর বিপরীতে একটি সাধারণ টেস্ট কম্পাইল, ডিপ্লয় এবং রান করেছেন।
+
+এখন চলুন দেখি কীভাবে আপনি বিভিন্ন নেটওয়ার্ক কনফিগারেশনের অধীনে আমাদের ডিএ্যাপস টেস্ট করার জন্য আন্ডারলাইং নেটওয়ার্ক কনফিগার করতে পারেন।
+
+## লোকাল ইথিরিয়াম টেস্টনেট কনফিগার করা {#configure-testnet}
+
+### ক্লায়েন্ট কনফিগারেশন এবং নোড-এর সংখ্যা পরিবর্তন করা {#configure-client-config-and-num-nodes}
+
+আপনি যে সিনারিও এবং নির্দিষ্ট নেটওয়ার্ক কনফিগারেশন ডেভেলপ বা টেস্ট করতে চান তার ওপর নির্ভর করে আপনার লোকাল ইথিরিয়াম টেস্টনেট বিভিন্ন EL এবং CL ক্লায়েন্ট পেয়ার, সেইসাথে বিভিন্ন সংখ্যক নোড ব্যবহার করার জন্য কনফিগার করা যেতে পারে। এর মানে হলো, একবার সেট আপ হয়ে গেলে, আপনি একটি কাস্টমাইজড লোকাল টেস্টনেট চালু করতে পারেন এবং সবকিছু প্রত্যাশা অনুযায়ী কাজ করছে তা নিশ্চিত করতে বিভিন্ন নেটওয়ার্ক কনফিগারেশনের অধীনে একই ওয়ার্কফ্লো (ডিপ্লয়মেন্ট, টেস্ট ইত্যাদি) রান করতে এটি ব্যবহার করতে পারেন। আপনি পরিবর্তন করতে পারেন এমন অন্যান্য প্যারামিটার সম্পর্কে আরও জানতে, এই লিঙ্কে ভিজিট করুন।
+
+চেষ্টা করে দেখুন! আপনি একটি JSON ফাইলের মাধ্যমে `eth-network-package`-এ বিভিন্ন কনফিগারেশন অপশন পাস করতে পারেন। এই নেটওয়ার্ক প্যারামস JSON ফাইলটি নির্দিষ্ট কনফিগারেশন প্রদান করে যা Kurtosis লোকাল ইথিরিয়াম নেটওয়ার্ক সেট আপ করতে ব্যবহার করবে।
+
+ডিফল্ট কনফিগারেশন ফাইলটি নিন এবং বিভিন্ন EL/CL পেয়ারসহ দুটি নোড চালু করতে এটি এডিট করুন:
+
+- নোড 1 `geth`/`lighthouse` সহ
+- নোড 2 `geth`/`lodestar` সহ
+- নোড 3 `geth`/`teku` সহ
+
+এই কনফিগারেশনটি আপনার ডিএ্যাপ টেস্ট করার জন্য ইথিরিয়াম নোড ইমপ্লিমেন্টেশনের একটি হেটেরোজিনিয়াস নেটওয়ার্ক তৈরি করে। আপনার কনফিগারেশন ফাইলটি এখন দেখতে এরকম হওয়া উচিত:
+
+```yaml
+{
+ "participants":
+ [
+ {
+ "el_client_type": "geth",
+ "el_client_image": "",
+ "el_client_log_level": "",
+ "cl_client_type": "lighthouse",
+ "cl_client_image": "",
+ "cl_client_log_level": "",
+ "beacon_extra_params": [],
+ "el_extra_params": [],
+ "validator_extra_params": [],
+ "builder_network_params": null,
+ },
+ {
+ "el_client_type": "geth",
+ "el_client_image": "",
+ "el_client_log_level": "",
+ "cl_client_type": "lodestar",
+ "cl_client_image": "",
+ "cl_client_log_level": "",
+ "beacon_extra_params": [],
+ "el_extra_params": [],
+ "validator_extra_params": [],
+ "builder_network_params": null,
+ },
+ {
+ "el_client_type": "geth",
+ "el_client_image": "",
+ "el_client_log_level": "",
+ "cl_client_type": "teku",
+ "cl_client_image": "",
+ "cl_client_log_level": "",
+ "beacon_extra_params": [],
+ "el_extra_params": [],
+ "validator_extra_params": [],
+ "builder_network_params": null,
+ },
+ ],
+ "network_params":
+ {
+ "preregistered_validator_keys_mnemonic": "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete",
+ "num_validator_keys_per_node": 64,
+ "network_id": "3151908",
+ "deposit_contract_address": "0x4242424242424242424242424242424242424242",
+ "seconds_per_slot": 12,
+ "genesis_delay": 120,
+ "capella_fork_epoch": 5,
+ },
+}
+```
+
+প্রতিটি `participants` স্ট্রাক্ট নেটওয়ার্ক-এর একটি নোড-এ ম্যাপ করে, তাই 3টি `participants` স্ট্রাক্ট Kurtosis-কে আপনার নেটওয়ার্ক-এ 3টি নোড চালু করতে বলবে। প্রতিটি `participants` স্ট্রাক্ট আপনাকে সেই নির্দিষ্ট নোড-এর জন্য ব্যবহৃত EL এবং CL পেয়ার নির্দিষ্ট করার অনুমতি দেবে।
+
+`network_params` স্ট্রাক্ট নেটওয়ার্ক সেটিংস কনফিগার করে যা প্রতিটি নোড-এর জন্য জেনেসিস ফাইল তৈরি করতে ব্যবহৃত হয়, সেইসাথে নেটওয়ার্ক-এর সেকেন্ডস পার স্লট-এর মতো অন্যান্য সেটিংসও কনফিগার করে।
+
+আপনার এডিট করা প্যারামস ফাইলটি আপনার ইচ্ছামতো যেকোনো ডিরেক্টরিতে সেভ করুন (নিচের উদাহরণে, এটি ডেস্কটপে সেভ করা হয়েছে) এবং তারপর নিচের কমান্ডটি রান করে আপনার Kurtosis প্যাকেজ রান করতে এটি ব্যবহার করুন:
+
+```python
+kurtosis clean -a && kurtosis run --enclave local-eth-testnet github.com/kurtosis-tech/eth-network-package "$(cat ~/eth-network-params.json)"
+```
+
+নোট: `kurtosis clean -a` কমান্ডটি এখানে Kurtosis-কে একটি নতুন টেস্টনেট শুরু করার আগে পুরানো টেস্টনেট এবং এর কন্টেন্টগুলো ধ্বংস করার নির্দেশ দিতে ব্যবহৃত হয়।
+
+আবারও, Kurtosis কিছুক্ষণ কাজ করবে এবং যে পৃথক পদক্ষেপগুলো নেওয়া হচ্ছে তা প্রিন্ট করবে। শেষ পর্যন্ত, আউটপুটটি দেখতে অনেকটা এরকম হওয়া উচিত:
+
+```python
+Starlark code successfully run. No output was returned.
+INFO[2023-04-07T11:43:16-04:00] ==========================================================
+INFO[2023-04-07T11:43:16-04:00] || Created enclave: local-eth-testnet ||
+INFO[2023-04-07T11:43:16-04:00] ==========================================================
+Name: local-eth-testnet
+UUID: bef8c192008e
+Status: RUNNING
+Creation Time: Fri, 07 Apr 2023 11:41:58 EDT
+
+========================================= Files Artifacts =========================================
+UUID Name
+cc495a8e364a cl-genesis-data
+7033fcdb5471 el-genesis-data
+a3aef43fc738 genesis-generation-config-cl
+8e968005fc9d genesis-generation-config-el
+3182cca9d3cd geth-prefunded-keys
+8421166e234f prysm-password
+d9e6e8d44d99 validator-keystore-0
+23f5ba517394 validator-keystore-1
+4d28dea40b5c validator-keystore-2
+
+========================================== User Services ==========================================
+UUID Name Ports Status
+485e6fde55ae cl-client-0-beacon http: 4000/tcp -> http://127.0.0.1:65010 RUNNING
+ metrics: 5054/tcp -> http://127.0.0.1:65011
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65012
+ udp-discovery: 9000/udp -> 127.0.0.1:54455
+73739bd158b2 cl-client-0-validator http: 5042/tcp -> 127.0.0.1:65016 RUNNING
+ metrics: 5064/tcp -> http://127.0.0.1:65017
+1b0a233cd011 cl-client-1-beacon http: 4000/tcp -> 127.0.0.1:65021 RUNNING
+ metrics: 8008/tcp -> 127.0.0.1:65023
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65024
+ udp-discovery: 9000/udp -> 127.0.0.1:56031
+ validator-metrics: 5064/tcp -> 127.0.0.1:65022
+949b8220cd53 cl-client-1-validator http: 4000/tcp -> 127.0.0.1:65028 RUNNING
+ metrics: 8008/tcp -> 127.0.0.1:65030
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65031
+ udp-discovery: 9000/udp -> 127.0.0.1:60784
+ validator-metrics: 5064/tcp -> 127.0.0.1:65029
+c34417bea5fa cl-client-2 http: 4000/tcp -> 127.0.0.1:65037 RUNNING
+ metrics: 8008/tcp -> 127.0.0.1:65035
+ tcp-discovery: 9000/tcp -> 127.0.0.1:65036
+ udp-discovery: 9000/udp -> 127.0.0.1:63581
+e19738e6329d el-client-0 engine-rpc: 8551/tcp -> 127.0.0.1:64986 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:64988
+ tcp-discovery: 30303/tcp -> 127.0.0.1:64987
+ udp-discovery: 30303/udp -> 127.0.0.1:55706
+ ws: 8546/tcp -> 127.0.0.1:64989
+e904687449d9 el-client-1 engine-rpc: 8551/tcp -> 127.0.0.1:64993 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:64995
+ tcp-discovery: 30303/tcp -> 127.0.0.1:64994
+ udp-discovery: 30303/udp -> 127.0.0.1:58096
+ ws: 8546/tcp -> 127.0.0.1:64996
+ad6f401126fa el-client-2 engine-rpc: 8551/tcp -> 127.0.0.1:65003 RUNNING
+ rpc: 8545/tcp -> 127.0.0.1:65001
+ tcp-discovery: 30303/tcp -> 127.0.0.1:65000
+ udp-discovery: 30303/udp -> 127.0.0.1:57269
+ ws: 8546/tcp -> 127.0.0.1:65002
+12d04a9dbb69 prelaunch-data-generator-1680882122181135513 STOPPED
+5b45f9c0504b prelaunch-data-generator-1680882122192182847 STOPPED
+3d4aaa75e218 prelaunch-data-generator-1680882122201668972 STOPPED
+```
+
+অভিনন্দন! আপনি সফলভাবে আপনার লোকাল টেস্টনেট-এ 1টির পরিবর্তে 3টি নোড থাকার জন্য কনফিগার করেছেন। আপনার ডিএ্যাপ-এর বিপরীতে আগের মতো একই ওয়ার্কফ্লো (ডিপ্লয় এবং টেস্ট) রান করতে, আপনার নতুন, 3-নোড লোকাল টেস্টনেট-এর যেকোনো `el-client-` সার্ভিস থেকে পাওয়া rpc uri আউটপুটের পোর্ট দিয়ে আপনার `hardhat.config.ts` কনফিগ ফাইলের `localnet` স্ট্রাক্টে থাকা `<$YOUR_PORT>` রিপ্লেস করে আগের মতো একই অপারেশনগুলো সম্পাদন করুন।
+
+## উপসংহার {#conclusion}
+
+আর এভাবেই শেষ হলো! এই সংক্ষিপ্ত গাইডটির সারসংক্ষেপ হিসেবে, আপনি:
+
+- Kurtosis ব্যবহার করে Docker-এর ওপর একটি লোকাল ইথিরিয়াম টেস্টনেট তৈরি করেছেন
+- আপনার লোকাল ডিএ্যাপ ডেভেলপমেন্ট এনভায়রনমেন্টকে লোকাল ইথিরিয়াম নেটওয়ার্ক-এর সাথে কানেক্ট করেছেন
+- লোকাল ইথিরিয়াম নেটওয়ার্ক-এ একটি ডিএ্যাপ ডিপ্লয় করেছেন এবং এর বিপরীতে একটি সাধারণ টেস্ট রান করেছেন
+- আন্ডারলাইং ইথিরিয়াম নেটওয়ার্ক-এ 3টি নোড থাকার জন্য কনফিগার করেছেন
+
+আপনার জন্য কোনটি ভালো কাজ করেছে, কী উন্নত করা যেতে পারে, বা আপনার যেকোনো প্রশ্নের উত্তর দিতে আমরা আপনার কাছ থেকে শুনতে চাই। [GitHub](https://github.com/kurtosis-tech/kurtosis/issues/new/choose)-এর মাধ্যমে যোগাযোগ করতে বা [আমাদের ইমেইল করতে](mailto:feedback@kurtosistech.com) দ্বিধা করবেন না!
+
+### অন্যান্য উদাহরণ এবং গাইড {#other-examples-guides}
+
+আমরা আপনাকে আমাদের [কুইকস্টার্ট](https://docs.kurtosis.com/quickstart) (যেখানে আপনি একটি Postgres ডাটাবেস এবং এর ওপর API তৈরি করবেন) এবং আমাদের [awesome-kurtosis রিপোজিটরি](https://github.com/kurtosis-tech/awesome-kurtosis)-তে থাকা অন্যান্য উদাহরণগুলো চেক করার জন্য উৎসাহিত করছি, যেখানে আপনি কিছু চমৎকার উদাহরণ পাবেন, যার মধ্যে রয়েছে নিচের প্যাকেজগুলো:
+
+- [একই লোকাল ইথিরিয়াম টেস্টনেট চালু করা](https://github.com/kurtosis-tech/eth2-package), তবে অতিরিক্ত সার্ভিস কানেক্ট করা যেমন একটি ট্রানজেকশন স্প্যামার (লেনদেন সিমুলেট করার জন্য), একটি ফর্ক মনিটর, এবং একটি কানেক্টেড Grafana ও Prometheus ইনস্ট্যান্স
+- একই লোকাল ইথিরিয়াম নেটওয়ার্ক-এর বিপরীতে একটি [সাব-নেটওয়ার্কিং টেস্ট](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/ethereum-network-partition-test) সম্পাদন করা
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md b/public/content/translations/bn/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
new file mode 100644
index 00000000000..a798a1fd36d
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
@@ -0,0 +1,145 @@
+---
+title: "কন্ট্রাক্ট সাইজ লিমিট মোকাবেলা করতে কন্ট্রাক্ট ছোট করা"
+description: "আপনার স্মার্ট কন্ট্রাক্টগুলো যাতে খুব বড় না হয়ে যায় তার জন্য আপনি কী করতে পারেন?"
+author: মার্কাস ওয়াস
+lang: bn
+tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "স্টোরেজ"]
+skill: intermediate
+breadcrumb: কন্ট্রাক্ট ছোট করা
+published: 2020-06-26
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/max-contract-size
+---
+
+## কেন একটি লিমিট বা সীমা আছে? {#why-is-there-a-limit}
+
+[২২ নভেম্বর, ২০১৬](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon)-এ স্পুরিয়াস ড্রাগন (Spurious Dragon) হার্ড ফর্ক [EIP-170](https://eips.ethereum.org/EIPS/eip-170) চালু করে, যা 24.576 kb-এর একটি স্মার্ট কন্ট্রাক্ট সাইজ লিমিট যোগ করে। একজন সলিডিটি (Solidity) ডেভেলপার হিসেবে আপনার জন্য এর অর্থ হলো, যখন আপনি আপনার কন্ট্রাক্টে আরও বেশি ফাংশনালিটি যোগ করবেন, তখন এক পর্যায়ে আপনি এই সীমায় পৌঁছে যাবেন এবং ডিপ্লয় করার সময় এই এররটি দেখতে পাবেন:
+
+`Warning: Contract code size exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries.`
+
+এই লিমিটটি ডিনায়াল-অফ-সার্ভিস (DOS) অ্যাটাক প্রতিরোধ করার জন্য চালু করা হয়েছিল। গ্যাস-এর দিক থেকে একটি কন্ট্রাক্টে যেকোনো কল করা তুলনামূলকভাবে সস্তা। তবে, ইথেরিয়াম নোড-গুলোর জন্য একটি কন্ট্রাক্ট কলের প্রভাব কল করা কন্ট্রাক্ট কোডের সাইজের ওপর নির্ভর করে অসামঞ্জস্যপূর্ণভাবে বৃদ্ধি পায় (ডিস্ক থেকে কোড পড়া, কোড প্রি-প্রসেস করা, মার্কেল প্রুফে ডেটা যোগ করা)। যখনই আপনার এমন পরিস্থিতি তৈরি হয় যেখানে আক্রমণকারীর অন্যদের জন্য অনেক কাজ তৈরি করতে খুব কম রিসোর্সের প্রয়োজন হয়, তখনই DOS অ্যাটাকের সম্ভাবনা তৈরি হয়।
+
+প্রাথমিকভাবে এটি খুব একটা সমস্যা ছিল না কারণ একটি স্বাভাবিক কন্ট্রাক্ট সাইজ লিমিট হলো ব্লক গ্যাস লিমিট। স্পষ্টতই, একটি কন্ট্রাক্টকে এমন একটি লেনদেন-এর মধ্যে ডিপ্লয় করতে হবে যা কন্ট্রাক্টের সমস্ত বাইটকোড ধারণ করে। আপনি যদি একটি ব্লক-এ শুধুমাত্র সেই একটি লেনদেন অন্তর্ভুক্ত করেন, তবে আপনি সেই সমস্ত গ্যাস ব্যবহার করতে পারেন, কিন্তু এটি অসীম নয়। [লন্ডন আপগ্রেড](/ethereum-forks/#london)-এর পর থেকে, নেটওয়ার্ক-এর চাহিদার ওপর নির্ভর করে ব্লক গ্যাস লিমিট 15M থেকে 30M ইউনিটের মধ্যে পরিবর্তিত হতে পারে।
+
+নিচে আমরা কিছু পদ্ধতি দেখব যা তাদের সম্ভাব্য প্রভাবের ক্রমানুসারে সাজানো হয়েছে। ওজন কমানোর দৃষ্টিকোণ থেকে এটি চিন্তা করুন। কারো লক্ষ্য ওজনে (আমাদের ক্ষেত্রে 24kb) পৌঁছানোর সেরা কৌশল হলো প্রথমে বড় প্রভাব ফেলে এমন পদ্ধতিগুলোতে ফোকাস করা। বেশিরভাগ ক্ষেত্রে শুধুমাত্র আপনার ডায়েট ঠিক করলেই আপনি সেখানে পৌঁছাতে পারবেন, তবে মাঝে মাঝে আপনার আরও কিছুটা বেশি কিছুর প্রয়োজন হতে পারে। তখন আপনি কিছু ব্যায়াম (মাঝারি প্রভাব) বা এমনকি সাপ্লিমেন্ট (ছোট প্রভাব) যোগ করতে পারেন।
+
+## বড় প্রভাব {#big-impact}
+
+### আপনার কন্ট্রাক্টগুলো আলাদা করুন {#separate-your-contracts}
+
+এটি সর্বদা আপনার প্রথম পদক্ষেপ হওয়া উচিত। আপনি কীভাবে কন্ট্রাক্টটিকে একাধিক ছোট কন্ট্রাক্টে আলাদা করতে পারেন? এটি সাধারণত আপনাকে আপনার কন্ট্রাক্টগুলোর জন্য একটি ভালো আর্কিটেকচার তৈরি করতে বাধ্য করে। কোড পড়ার সুবিধার দৃষ্টিকোণ থেকে ছোট কন্ট্রাক্টগুলো সর্বদা বেশি পছন্দনীয়। কন্ট্রাক্টগুলো ভাগ করার জন্য, নিজেকে জিজ্ঞাসা করুন:
+
+- কোন ফাংশনগুলো একসাথে থাকে? প্রতিটি ফাংশনের সেট তার নিজস্ব কন্ট্রাক্টে রাখা সবচেয়ে ভালো হতে পারে।
+- কোন ফাংশনগুলোর জন্য কন্ট্রাক্ট স্টেট পড়ার প্রয়োজন নেই বা শুধুমাত্র স্টেটের একটি নির্দিষ্ট সাবসেট প্রয়োজন?
+- আপনি কি স্টোরেজ এবং ফাংশনালিটি আলাদা করতে পারেন?
+
+### লাইব্রেরি {#libraries}
+
+স্টোরেজ থেকে ফাংশনালিটি কোড সরিয়ে নেওয়ার একটি সহজ উপায় হলো একটি [লাইব্রেরি](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#libraries) ব্যবহার করা। লাইব্রেরি ফাংশনগুলোকে ইন্টারনাল (internal) হিসেবে ডিক্লেয়ার করবেন না কারণ সেগুলো কম্পাইলেশনের সময় সরাসরি [কন্ট্রাক্টে যোগ করা হবে](https://ethereum.stackexchange.com/questions/12975/are-internal-functions-in-libraries-not-covered-by-linking)। তবে আপনি যদি পাবলিক (public) ফাংশন ব্যবহার করেন, তবে সেগুলো আসলে একটি আলাদা লাইব্রেরি কন্ট্রাক্টে থাকবে। লাইব্রেরির ব্যবহার আরও সুবিধাজনক করতে [using for](https://solidity.readthedocs.io/en/v0.6.10/contracts.html#using-for) ব্যবহার করার কথা বিবেচনা করুন।
+
+### প্রক্সি {#proxies}
+
+একটি আরও উন্নত কৌশল হতে পারে একটি প্রক্সি সিস্টেম। লাইব্রেরিগুলো ব্যাকগ্রাউন্ডে `DELEGATECALL` ব্যবহার করে যা কলিং কন্ট্রাক্টের স্টেট দিয়ে অন্য একটি কন্ট্রাক্টের ফাংশন এক্সিকিউট করে। প্রক্সি সিস্টেম সম্পর্কে আরও জানতে [এই ব্লগ পোস্টটি](https://hackernoon.com/how-to-make-smart-contracts-upgradable-2612e771d5a2) দেখুন। এগুলো আপনাকে আরও ফাংশনালিটি দেয়, যেমন, এগুলো আপগ্রেড করার সুবিধা দেয়, তবে এগুলো অনেক জটিলতাও যোগ করে। আমি শুধুমাত্র কন্ট্রাক্টের সাইজ কমানোর জন্য এগুলো যোগ করব না, যদি না কোনো কারণে এটি আপনার একমাত্র বিকল্প হয়।
+
+## মাঝারি প্রভাব {#medium-impact}
+
+### ফাংশনগুলো সরিয়ে ফেলুন {#remove-functions}
+
+এটি স্পষ্ট হওয়া উচিত। ফাংশনগুলো একটি কন্ট্রাক্টের সাইজ বেশ কিছুটা বাড়িয়ে দেয়।
+
+- **এক্সটার্নাল (External)**: অনেক সময় আমরা সুবিধার জন্য অনেক ভিউ (view) ফাংশন যোগ করি। সাইজ লিমিটে না পৌঁছানো পর্যন্ত এটি পুরোপুরি ঠিক আছে। এরপর আপনি হয়তো একেবারে প্রয়োজনীয় ফাংশনগুলো ছাড়া বাকি সব সরিয়ে ফেলার কথা গুরুত্ব সহকারে ভাবতে পারেন।
+- **ইন্টারনাল (Internal)**: আপনি ইন্টারনাল/প্রাইভেট ফাংশনগুলোও সরিয়ে ফেলতে পারেন এবং যতক্ষণ ফাংশনটি শুধুমাত্র একবার কল করা হয় ততক্ষণ কোডটি ইনলাইন (inline) করতে পারেন।
+
+### অতিরিক্ত ভেরিয়েবল এড়িয়ে চলুন {#avoid-additional-variables}
+
+```solidity
+function get(uint id) returns (address,address) {
+ MyStruct memory myStruct = myStructs[id];
+ return (myStruct.addr1, myStruct.addr2);
+}
+```
+
+```solidity
+function get(uint id) returns (address,address) {
+ return (myStructs[id].addr1, myStructs[id].addr2);
+}
+```
+
+এরকম একটি সাধারণ পরিবর্তন **0.28kb**-এর পার্থক্য তৈরি করে। সম্ভাবনা আছে যে আপনি আপনার কন্ট্রাক্টগুলোতে এরকম অনেক পরিস্থিতি খুঁজে পেতে পারেন এবং সেগুলো একসাথে মিলে উল্লেখযোগ্য পরিমাণে সাইজ কমাতে পারে।
+
+### এরর মেসেজ ছোট করুন {#shorten-error-message}
+
+দীর্ঘ রিভার্ট (revert) মেসেজ এবং বিশেষ করে অনেকগুলো ভিন্ন ভিন্ন রিভার্ট মেসেজ কন্ট্রাক্টকে বড় করে তুলতে পারে। এর পরিবর্তে ছোট এরর কোড ব্যবহার করুন এবং আপনার কন্ট্রাক্টে সেগুলো ডিকোড করুন। একটি দীর্ঘ মেসেজ অনেক ছোট হয়ে যেতে পারে:
+
+```solidity
+require(msg.sender == owner, "Only the owner of this contract can call this function");
+```
+
+```solidity
+require(msg.sender == owner, "OW1");
+```
+
+### এরর মেসেজের পরিবর্তে কাস্টম এরর ব্যবহার করুন
+
+[Solidity 0.8.4](https://blog.soliditylang.org/2021/04/21/custom-errors/)-এ কাস্টম এরর চালু করা হয়েছে। এগুলো আপনার কন্ট্রাক্টের সাইজ কমানোর একটি দুর্দান্ত উপায়, কারণ এগুলো সিলেক্টর হিসেবে ABI-এনকোড করা থাকে (ঠিক যেমন ফাংশনগুলো থাকে)।
+
+```solidity
+error Unauthorized();
+
+if (msg.sender != owner) {
+ revert Unauthorized();
+}
+```
+
+### অপ্টিমাইজারে একটি কম রান ভ্যালু বিবেচনা করুন {#consider-a-low-run-value-in-the-optimizer}
+
+আপনি অপ্টিমাইজার সেটিংসও পরিবর্তন করতে পারেন। ডিফল্ট ভ্যালু 200-এর অর্থ হলো এটি বাইটকোডকে এমনভাবে অপ্টিমাইজ করার চেষ্টা করছে যেন একটি ফাংশন 200 বার কল করা হয়েছে। আপনি যদি এটি পরিবর্তন করে 1 করেন, তবে আপনি মূলত অপ্টিমাইজারকে প্রতিটি ফাংশন শুধুমাত্র একবার চালানোর জন্য অপ্টিমাইজ করতে বলছেন। শুধুমাত্র একবার চালানোর জন্য অপ্টিমাইজ করা ফাংশন মানে এটি ডিপ্লয়মেন্টের জন্যই অপ্টিমাইজ করা হয়েছে। মনে রাখবেন যে **এটি ফাংশনগুলো চালানোর জন্য [গ্যাস খরচ](/developers/docs/gas/) বাড়িয়ে দেয়**, তাই আপনি হয়তো এটি করতে চাইবেন না।
+
+## ছোট প্রভাব {#small-impact}
+
+### ফাংশনে স্ট্রাক্ট পাস করা এড়িয়ে চলুন {#avoid-passing-structs-to-functions}
+
+আপনি যদি [ABIEncoderV2](https://solidity.readthedocs.io/en/v0.6.10/layout-of-source-files.html#abiencoderv2) ব্যবহার করেন, তবে ফাংশনে স্ট্রাক্ট (struct) পাস না করা সহায়ক হতে পারে। প্যারামিটারটিকে স্ট্রাক্ট হিসেবে পাস করার পরিবর্তে, প্রয়োজনীয় প্যারামিটারগুলো সরাসরি পাস করুন। এই উদাহরণে আমরা আরও **0.1kb** বাঁচিয়েছি।
+
+```solidity
+function get(uint id) returns (address,address) {
+ return _get(myStruct);
+}
+
+function _get(MyStruct memory myStruct) private view returns(address,address) {
+ return (myStruct.addr1, myStruct.addr2);
+}
+```
+
+```solidity
+function get(uint id) returns(address,address) {
+ return _get(myStructs[id].addr1, myStructs[id].addr2);
+}
+
+function _get(address addr1, address addr2) private view returns(address,address) {
+ return (addr1, addr2);
+}
+```
+
+### ফাংশন এবং ভেরিয়েবলের জন্য সঠিক ভিজিবিলিটি ডিক্লেয়ার করুন {#declare-correct-visibility-for-functions-and-variables}
+
+- যেসব ফাংশন বা ভেরিয়েবল শুধুমাত্র বাইরে থেকে কল করা হয়? সেগুলোকে `public`-এর পরিবর্তে `external` হিসেবে ডিক্লেয়ার করুন।
+- যেসব ফাংশন বা ভেরিয়েবল শুধুমাত্র কন্ট্রাক্টের ভেতর থেকে কল করা হয়? সেগুলোকে `public`-এর পরিবর্তে `private` বা `internal` হিসেবে ডিক্লেয়ার করুন।
+
+### মডিফায়ারগুলো সরিয়ে ফেলুন {#remove-modifiers}
+
+মডিফায়ার (modifier), বিশেষ করে যখন ব্যাপকভাবে ব্যবহার করা হয়, তখন কন্ট্রাক্টের সাইজের ওপর উল্লেখযোগ্য প্রভাব ফেলতে পারে। সেগুলো সরিয়ে ফেলার কথা বিবেচনা করুন এবং এর পরিবর্তে ফাংশন ব্যবহার করুন।
+
+```solidity
+modifier checkStuff() {}
+
+function doSomething() checkStuff {}
+```
+
+```solidity
+function checkStuff() private {}
+
+function doSomething() { checkStuff(); }
+```
+
+এই টিপসগুলো আপনাকে কন্ট্রাক্টের সাইজ উল্লেখযোগ্যভাবে কমাতে সাহায্য করবে। আবারও বলছি, আমি এর ওপর যথেষ্ট জোর দিতে পারব না যে, সবচেয়ে বড় প্রভাবের জন্য সম্ভব হলে সর্বদা কন্ট্রাক্টগুলো ভাগ করার দিকে ফোকাস করুন।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/bn/developers/tutorials/eip-1271-smart-contract-signatures/index.md
new file mode 100644
index 00000000000..5093951260f
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/eip-1271-smart-contract-signatures/index.md
@@ -0,0 +1,123 @@
+---
+title: "EIP-1271: স্মার্ট কন্ট্রাক্ট সিগনেচার সাইন এবং ভেরিফাই করা"
+description: EIP-1271 এর মাধ্যমে স্মার্ট কন্ট্রাক্ট সিগনেচার তৈরি এবং ভেরিফিকেশনের একটি ওভারভিউ। স্মার্ট কন্ট্রাক্ট ডেভেলপারদের কাজ করার জন্য একটি বাস্তব উদাহরণ দিতে আমরা Safe (পূর্বে Gnosis Safe)-এ ব্যবহৃত EIP-1271 ইমপ্লিমেন্টেশন নিয়েও আলোচনা করব।
+author: নাথান এইচ. লিউং
+lang: bn
+tags: ["eip-1271", "স্মার্ট কন্ট্রাক্ট", "ভেরিফাইং", "সাইনিং"]
+skill: intermediate
+breadcrumb: EIP-1271 সিগনেচার
+published: 2023-01-12
+---
+
+[EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) স্ট্যান্ডার্ড স্মার্ট কন্ট্রাক্টগুলোকে সিগনেচার ভেরিফাই করার অনুমতি দেয়।
+
+এই টিউটোরিয়ালে, আমরা ডিজিটাল সিগনেচার, EIP-1271 এর পটভূমি এবং [Safe](https://safe.global/) (পূর্বে Gnosis Safe) দ্বারা ব্যবহৃত EIP-1271 এর নির্দিষ্ট ইমপ্লিমেন্টেশনের একটি ওভারভিউ দেব। সব মিলিয়ে, এটি আপনার নিজের কন্ট্রাক্টগুলোতে EIP-1271 ইমপ্লিমেন্ট করার জন্য একটি প্রারম্ভিক বিন্দু হিসেবে কাজ করতে পারে।
+
+## সিগনেচার কী?
+
+এই প্রসঙ্গে, একটি সিগনেচার (আরও সঠিকভাবে, একটি "ডিজিটাল সিগনেচার") হলো একটি মেসেজ এবং সাথে এমন এক ধরণের প্রমাণ যা নিশ্চিত করে যে মেসেজটি একজন নির্দিষ্ট ব্যক্তি/প্রেরক/এডড্রেস থেকে এসেছে।
+
+উদাহরণস্বরূপ, একটি ডিজিটাল সিগনেচার দেখতে এমন হতে পারে:
+
+1. মেসেজ: "আমি আমার ইথিরিয়াম ওয়ালেট দিয়ে এই ওয়েবসাইটে লগ ইন করতে চাই।"
+2. সাইনার: আমার এডড্রেস হলো `0x000…`
+3. প্রমাণ: এখানে কিছু প্রমাণ রয়েছে যে আমি, `0x000…`, আসলে এই সম্পূর্ণ মেসেজটি তৈরি করেছি (এটি সাধারণত ক্রিপ্টোগ্রাফিক কিছু হয়ে থাকে)।
+
+এটি মনে রাখা গুরুত্বপূর্ণ যে একটি ডিজিটাল সিগনেচারে "মেসেজ" এবং "সিগনেচার" উভয়ই অন্তর্ভুক্ত থাকে।
+
+কেন? উদাহরণস্বরূপ, আপনি যদি আমাকে সাইন করার জন্য একটি কন্ট্রাক্ট দেন, এবং তারপর আমি সিগনেচারের পৃষ্ঠাটি কেটে ফেলি এবং কন্ট্রাক্টের বাকি অংশ ছাড়া শুধুমাত্র আমার সিগনেচারগুলো আপনাকে ফেরত দিই, তবে কন্ট্রাক্টটি বৈধ হবেবিধা না।
+
+একইভাবে, একটি যুক্ত মেসেজ ছাড়া ডিজিটাল সিগনেচারের কোনো অর্থ নেই!
+
+## EIP-1271 কেন বিদ্যমান?
+
+ইথিরিয়াম-ভিত্তিক ব্লকচেইনগুলোতে ব্যবহারের জন্য একটি ডিজিটাল সিগনেচার তৈরি করতে, আপনার সাধারণত একটি গোপন প্রাইভেট কি প্রয়োজন যা অন্য কেউ জানে না। এটিই আপনার সিগনেচারকে আপনার করে তোলে (গোপন কি-এর জ্ঞান ছাড়া অন্য কেউ একই সিগনেচার তৈরি করতে পারে না)।
+
+আপনার ইথিরিয়াম একাউন্টের (অর্থাৎ, আপনার এক্সটার্নালি ওনড একাউন্ট/EOA) সাথে একটি প্রাইভেট কি যুক্ত থাকে, এবং এই প্রাইভেট কি-টি সাধারণত তখন ব্যবহৃত হয় যখন কোনো ওয়েবসাইট বা ডিএ্যাপ আপনার কাছে সিগনেচার চায় (যেমন, "Log in with Ethereum" এর জন্য)।
+
+একটি অ্যাপ ethers.js এর মতো থার্ড-পার্টি লাইব্রেরি ব্যবহার করে আপনার তৈরি করা [সিগনেচার ভেরিফাই করতে পারে](https://www.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum) [আপনার প্রাইভেট কি না জেনেই](https://en.wikipedia.org/wiki/Public-key_cryptography) এবং নিশ্চিত হতে পারে যে _আপনিই_ সিগনেচারটি তৈরি করেছেন।
+
+> আসলে, যেহেতু EOA ডিজিটাল সিগনেচারগুলো পাবলিক-কি ক্রিপ্টোগ্রাফি ব্যবহার করে, তাই এগুলো **অফচেইন** তৈরি এবং ভেরিফাই করা যায়! এভাবেই গ্যাসহীন DAO ভোটিং কাজ করে — অনচেইন ভোট জমা দেওয়ার পরিবর্তে, ক্রিপ্টোগ্রাফিক লাইব্রেরি ব্যবহার করে অফচেইন ডিজিটাল সিগনেচার তৈরি এবং ভেরিফাই করা যায়।
+
+যদিও EOA একাউন্টগুলোর একটি প্রাইভেট কি থাকে, স্মার্ট কন্ট্রাক্ট একাউন্টগুলোর কোনো ধরণের প্রাইভেট বা গোপন কি থাকে না (তাই "Log in with Ethereum" ইত্যাদি স্মার্ট কন্ট্রাক্ট একাউন্টগুলোর সাথে নেটিভভাবে কাজ করতে পারে না)।
+
+EIP-1271 যে সমস্যার সমাধান করতে চায়: আমরা কীভাবে বলতে পারি যে একটি স্মার্ট কন্ট্রাক্ট সিগনেচার বৈধ যদি স্মার্ট কন্ট্রাক্টের এমন কোনো "গোপন" কিছু না থাকে যা এটি সিগনেচারে অন্তর্ভুক্ত করতে পারে?
+
+## EIP-1271 কীভাবে কাজ করে?
+
+স্মার্ট কন্ট্রাক্টগুলোর কোনো প্রাইভেট কি নেই যা মেসেজ সাইন করতে ব্যবহার করা যেতে পারে। তাহলে আমরা কীভাবে বুঝব যে একটি সিগনেচার আসল কিনা?
+
+আচ্ছা, একটি উপায় হলো আমরা স্মার্ট কন্ট্রাক্টকে শুধু _জিজ্ঞেস_ করতে পারি যে একটি সিগনেচার আসল কিনা!
+
+EIP-1271 যা করে তা হলো এটি একটি স্মার্ট কন্ট্রাক্টকে প্রদত্ত সিগনেচার বৈধ কিনা তা "জিজ্ঞেস করার" এই ধারণাটিকে প্রমিত (standardize) করে।
+
+যে কন্ট্রাক্ট EIP-1271 ইমপ্লিমেন্ট করে তার অবশ্যই `isValidSignature` নামের একটি ফাংশন থাকতে হবে যা একটি মেসেজ এবং একটি সিগনেচার গ্রহণ করে। এরপর কন্ট্রাক্টটি কিছু ভ্যালিডেশন লজিক চালাতে পারে (স্পেসিফিকেশন এখানে নির্দিষ্ট কিছু প্রয়োগ করতে বাধ্য করে না) এবং তারপর সিগনেচারটি বৈধ কিনা তা নির্দেশ করে একটি ভ্যালু রিটার্ন করতে পারে।
+
+যদি `isValidSignature` একটি বৈধ ফলাফল রিটার্ন করে, তবে এর মানে হলো কন্ট্রাক্টটি বলছে "হ্যাঁ, আমি এই সিগনেচার + মেসেজ অনুমোদন করছি!"
+
+### ইন্টারফেস
+
+এখানে EIP-1271 স্পেসিফিকেশনের সঠিক ইন্টারফেস দেওয়া হলো (আমরা নিচে `_hash` প্যারামিটার নিয়ে কথা বলব, তবে আপাতত এটিকে ভেরিফাই করা হচ্ছে এমন মেসেজ হিসেবে ধরে নিন):
+
+```jsx
+pragma solidity ^0.5.0;
+
+contract ERC1271 {
+
+ // bytes4(keccak256("isValidSignature(bytes32,bytes)")
+ bytes4 constant internal MAGICVALUE = 0x1626ba7e;
+
+ /* *
+ * @dev প্রদানকৃত সিগনেচারটি প্রদানকৃত হ্যাস এর জন্য বৈধ কিনা তা রিটার্ন করতে হবে
+ * @param _hash যে ডেটা সাইন করা হবে তার হ্যাস
+ * @param _signature _hash এর সাথে যুক্ত সিগনেচার বাইট অ্যারে
+ *
+ * ফাংশনটি পাস হলে অবশ্যই bytes4 ম্যাজিক ভ্যালু 0x1626ba7e রিটার্ন করতে হবে।
+ * স্টেট পরিবর্তন করা যাবে না (solc < 0.5 এর জন্য STATICCALL, solc > 0.5 এর জন্য view মডিফায়ার ব্যবহার করে)
+ * এক্সটার্নাল কল করার অনুমতি দিতে হবে */
+ function isValidSignature(
+ bytes32 _hash,
+ bytes memory _signature)
+ public
+ view
+ returns (bytes4 magicValue);
+}
+```
+
+## উদাহরণস্বরূপ EIP-1271 ইমপ্লিমেন্টেশন: Safe
+
+কন্ট্রাক্টগুলো বিভিন্ন উপায়ে `isValidSignature` ইমপ্লিমেন্ট করতে পারে — স্পেসিফিকেশন শুধুমাত্র সঠিক ইমপ্লিমেন্টেশন সম্পর্কে খুব বেশি কিছু বলে না।
+
+EIP-1271 ইমপ্লিমেন্ট করে এমন একটি উল্লেখযোগ্য কন্ট্রাক্ট হলো Safe (পূর্বে Gnosis Safe)।
+
+Safe-এর কোডে, `isValidSignature` [এমনভাবে ইমপ্লিমেন্ট করা হয়েছে](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol) যাতে সিগনেচারগুলো [দুটি উপায়ে](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support) তৈরি এবং ভেরিফাই করা যায়:
+
+1. অনচেইন মেসেজ
+ 1. তৈরি করা: একজন Safe মালিক একটি মেসেজ "সাইন" করার জন্য একটি নতুন Safe লেনদেন তৈরি করেন, যেখানে মেসেজটিকে ডাটা হিসেবে লেনদেনে পাস করা হয়। মাল্টিসিগ থ্রেশহোল্ডে পৌঁছানোর জন্য পর্যাপ্ত মালিকরা লেনদেনে সাইন করলে, লেনদেনটি ব্রডকাস্ট এবং রান করা হয়। লেনদেনে, (`signMessage(bytes calldata _data)`) নামের একটি Safe ফাংশন রয়েছে যা মেসেজটিকে "অনুমোদিত" মেসেজের তালিকায় যুক্ত করে।
+ 2. ভেরিফিকেশন: Safe কন্ট্রাক্টে `isValidSignature` কল করুন, এবং মেসেজ প্যারামিটার হিসেবে ভেরিফাই করার জন্য মেসেজটি পাস করুন এবং [সিগনেচার প্যারামিটারের জন্য একটি খালি ভ্যালু](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32) (অর্থাৎ, `0x`) পাস করুন। Safe দেখবে যে সিগনেচার প্যারামিটারটি খালি এবং ক্রিপ্টোগ্রাফিকভাবে সিগনেচার ভেরিফাই করার পরিবর্তে, এটি বুঝতে পারবে যে মেসেজটি "অনুমোদিত" মেসেজের তালিকায় আছে কিনা তা চেক করতে হবে।
+2. অফচেইন মেসেজ:
+ 1. তৈরি করা: একজন Safe মালিক অফচেইন একটি মেসেজ তৈরি করেন, তারপর মাল্টিসিগ অনুমোদনের থ্রেশহোল্ড অতিক্রম করার জন্য পর্যাপ্ত সিগনেচার না হওয়া পর্যন্ত অন্যান্য Safe মালিকদের দিয়ে মেসেজটিতে আলাদাভাবে সাইন করান।
+ 2. ভেরিফিকেশন: `isValidSignature` কল করুন। মেসেজ প্যারামিটারে, ভেরিফাই করার জন্য মেসেজটি পাস করুন। সিগনেচার প্যারামিটারে, প্রতিটি Safe মালিকের আলাদা সিগনেচারগুলো একসাথে যুক্ত করে পাস করুন। Safe চেক করবে যে থ্রেশহোল্ড পূরণ করার জন্য পর্যাপ্ত সিগনেচার আছে কিনা **এবং** প্রতিটি সিগনেচার বৈধ কিনা। যদি তাই হয়, তবে এটি সফল সিগনেচার ভেরিফিকেশন নির্দেশ করে একটি ভ্যালু রিটার্ন করবে।
+
+## `_hash` প্যারামিটারটি আসলে কী? পুরো মেসেজটি কেন পাস করা হয় না?
+
+আপনি হয়তো লক্ষ্য করেছেন যে [EIP-1271 ইন্টারফেসের](https://eips.ethereum.org/EIPS/eip-1271) `isValidSignature` ফাংশনটি মেসেজটি নিজে গ্রহণ করে না, বরং এর পরিবর্তে একটি `_hash` প্যারামিটার গ্রহণ করে। এর মানে হলো `isValidSignature`-এ সম্পূর্ণ ইচ্ছামতো দৈর্ঘ্যের মেসেজ পাস করার পরিবর্তে, আমরা মেসেজটির একটি ৩২-বাইট হ্যাস (সাধারণত keccak256) পাস করি।
+
+কলডাটার প্রতিটি বাইট — অর্থাৎ, স্মার্ট কন্ট্রাক্ট ফাংশনে পাস করা ফাংশন প্যারামিটার ডাটা — [১৬ গ্যাস খরচ করে (শূন্য বাইট হলে ৪ গ্যাস)](https://eips.ethereum.org/EIPS/eip-2028), তাই মেসেজটি দীর্ঘ হলে এটি প্রচুর গ্যাস বাঁচাতে পারে।
+
+### পূর্ববর্তী EIP-1271 স্পেসিফিকেশন
+
+এমন কিছু EIP-1271 স্পেসিফিকেশন প্রচলিত আছে যেগুলোতে `isValidSignature` ফাংশনের প্রথম প্যারামিটারটি `bytes` টাইপের (নির্দিষ্ট দৈর্ঘ্যের `bytes32` এর পরিবর্তে ইচ্ছামতো দৈর্ঘ্যের) এবং প্যারামিটারের নাম `message`। এটি EIP-1271 স্ট্যান্ডার্ডের একটি [পুরানো সংস্করণ](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206)।
+
+## আমার নিজের কন্ট্রাক্টগুলোতে EIP-1271 কীভাবে ইমপ্লিমেন্ট করা উচিত?
+
+স্পেসিফিকেশনটি এখানে বেশ উন্মুক্ত। Safe ইমপ্লিমেন্টেশনে কিছু ভালো ধারণা রয়েছে:
+
+- আপনি কন্ট্রাক্টের "মালিকের" কাছ থেকে আসা EOA সিগনেচারগুলোকে বৈধ হিসেবে বিবেচনা করতে পারেন।
+- আপনি অনুমোদিত মেসেজগুলোর একটি তালিকা সংরক্ষণ করতে পারেন এবং শুধুমাত্র সেগুলোকে বৈধ হিসেবে বিবেচনা করতে পারেন।
+
+পরিশেষে, কন্ট্রাক্ট ডেভেলপার হিসেবে এটি আপনার ওপর নির্ভর করে!
+
+## উপসংহার
+
+[EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) হলো একটি বহুমুখী স্ট্যান্ডার্ড যা স্মার্ট কন্ট্রাক্টগুলোকে সিগনেচার ভেরিফাই করার অনুমতি দেয়। এটি স্মার্ট কন্ট্রাক্টগুলোর জন্য EOA-এর মতো আরও বেশি কাজ করার দরজা খুলে দেয় — উদাহরণস্বরূপ স্মার্ট কন্ট্রাক্টগুলোর সাথে "Log in with Ethereum" কাজ করার একটি উপায় প্রদান করে — এবং এটি বিভিন্ন উপায়ে ইমপ্লিমেন্ট করা যেতে পারে (বিবেচনা করার জন্য Safe-এর একটি গুরুত্বপূর্ণ, আকর্ষণীয় ইমপ্লিমেন্টেশন রয়েছে)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/bn/developers/tutorials/erc-721-vyper-annotated-code/index.md
new file mode 100644
index 00000000000..2f5faf69755
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/erc-721-vyper-annotated-code/index.md
@@ -0,0 +1,602 @@
+---
+title: "Vyper ERC-721 কন্ট্রাক্ট ওয়াকথ্রু"
+description: রিউয়া নাকামুরার ERC-721 কন্ট্রাক্ট এবং এটি কীভাবে কাজ করে
+author: ওরি পোমেরান্টজ
+lang: bn
+tags: ["vyper", "erc-721", "python"]
+skill: beginner
+breadcrumb: Vyper ERC-721
+published: 2021-04-01
+---
+
+## ভূমিকা {#introduction}
+
+[ERC-721](/developers/docs/standards/tokens/erc-721/) স্ট্যান্ডার্ডটি নন-ফান্জেবল টোকেন (NFT)-এর মালিকানা ধরে রাখতে ব্যবহৃত হয়।
+[ERC-20](/developers/docs/standards/tokens/erc-20/) টোকেনগুলো একটি পণ্যের মতো আচরণ করে, কারণ প্রতিটি টোকেনের মধ্যে কোনো পার্থক্য নেই।
+এর বিপরীতে, ERC-721 টোকেনগুলো এমন সম্পদের জন্য ডিজাইন করা হয়েছে যা একই রকম কিন্তু হুবহু এক নয়, যেমন বিভিন্ন [cat cartoons](https://www.cryptokitties.co/) বা বিভিন্ন রিয়েল এস্টেটের মালিকানা।
+
+এই নিবন্ধে আমরা [রিউয়া নাকামুরার ERC-721 কন্ট্রাক্ট](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy) বিশ্লেষণ করব।
+এই কন্ট্রাক্টটি [Vyper](https://vyper.readthedocs.io/en/latest/index.html)-এ লেখা হয়েছে, যা একটি Python-এর মতো কন্ট্রাক্ট ভাষা এবং এটি এমনভাবে ডিজাইন করা হয়েছে যাতে Solidity-এর তুলনায় অনিরাপদ কোড লেখা কঠিন হয়।
+
+## কন্ট্রাক্ট {#contract}
+
+```python
+# @dev ERC-721 নন-ফাঞ্জিবল টোকেন স্ট্যান্ডার্ডের ইমপ্লিমেন্টেশন।
+# @author রিউয়া নাকামুরা (@nrryuya)
+# এখান থেকে পরিমার্জিত: https://github.com/vyperlang/vyper/blob/de74722bf2d8718cca46902be165f9fe0e3641dd/examples/tokens/ERC721.vy
+```
+
+Python-এর মতো Vyper-এও মন্তব্য বা কমেন্ট হ্যাশ (`#`) দিয়ে শুরু হয় এবং লাইনের শেষ পর্যন্ত চলতে থাকে। যে কমেন্টগুলোতে `@` থাকে, সেগুলো [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html) ব্যবহার করে মানুষের পড়ার উপযোগী ডকুমেন্টেশন তৈরি করতে সাহায্য করে।
+
+```python
+from vyper.interfaces import ERC721
+
+implements: ERC721
+```
+
+ERC-721 ইন্টারফেসটি Vyper ভাষার মধ্যেই তৈরি করা আছে।
+[আপনি এখানে কোডের সংজ্ঞা দেখতে পারেন](https://github.com/vyperlang/vyper/blob/master/vyper/builtin_interfaces/ERC721.py)।
+ইন্টারফেসের সংজ্ঞাটি Vyper-এর পরিবর্তে Python-এ লেখা হয়েছে, কারণ ইন্টারফেসগুলো শুধু ব্লকচেইন-এর ভেতরেই ব্যবহৃত হয় না, বরং কোনো এক্সটার্নাল ক্লায়েন্ট থেকে ব্লকচেইন-এ লেনদেন পাঠানোর সময়ও ব্যবহৃত হয়, যা Python-এ লেখা হতে পারে।
+
+প্রথম লাইনটি ইন্টারফেস ইমপোর্ট করে এবং দ্বিতীয় লাইনটি নির্দেশ করে যে আমরা এটি এখানে ইমপ্লিমেন্ট করছি।
+
+### ERC721Receiver ইন্টারফেস {#receiver-interface}
+
+```python
+# safeTransferFrom() দ্বারা কল করা চুক্তির (contract) জন্য ইন্টারফেস
+interface ERC721Receiver:
+ def onERC721Received(
+```
+
+ERC-721 দুই ধরনের ট্রান্সফার সমর্থন করে:
+
+- `transferFrom`, যা প্রেরককে যেকোনো গন্তব্য এডড্রেস নির্দিষ্ট করতে দেয় এবং ট্রান্সফারের দায়িত্ব প্রেরকের ওপরই রাখে। এর মানে হলো আপনি একটি ভুল এডড্রেস-এও ট্রান্সফার করতে পারেন, সেক্ষেত্রে NFT চিরতরে হারিয়ে যাবে।
+- `safeTransferFrom`, যা গন্তব্য এডড্রেস একটি কন্ট্রাক্ট কি না তা পরীক্ষা করে। যদি তাই হয়, তবে ERC-721 কন্ট্রাক্ট গ্রহণকারী কন্ট্রাক্টকে জিজ্ঞাসা করে যে সে NFT গ্রহণ করতে চায় কি না।
+
+`safeTransferFrom` রিকোয়েস্টের উত্তর দিতে একটি গ্রহণকারী কন্ট্রাক্টকে `ERC721Receiver` ইমপ্লিমেন্ট করতে হয়।
+
+```python
+ _operator: address,
+ _from: address,
+```
+
+`_from` এডড্রেস হলো টোকেন-এর বর্তমান মালিক। `_operator` এডড্রেস হলো সেই ব্যক্তি বা কন্ট্রাক্ট যে ট্রান্সফারের রিকোয়েস্ট করেছে (অ্যালাউয়েন্সের কারণে এই দুটি একই নাও হতে পারে)।
+
+```python
+ _tokenId: uint256,
+```
+
+ERC-721 টোকেন আইডিগুলো 256 বিটের হয়। সাধারণত টোকেনটি যা উপস্থাপন করে তার একটি বর্ণনার হ্যাশ তৈরি করে এগুলো তৈরি করা হয়।
+
+```python
+ _data: Bytes[1024]
+```
+
+রিকোয়েস্টে 1024 বাইট পর্যন্ত ইউজার ডেটা থাকতে পারে।
+
+```python
+ ) -> bytes32: view
+```
+
+কোনো কন্ট্রাক্ট যাতে ভুলবশত কোনো ট্রান্সফার গ্রহণ না করে, তা প্রতিরোধ করতে রিটার্ন ভ্যালু কোনো বুলিয়ান নয়, বরং একটি নির্দিষ্ট মানসহ 256 বিট হয়।
+
+এই ফাংশনটি একটি `view`, যার মানে এটি ব্লকচেইন-এর স্টেট পড়তে পারে, কিন্তু তা পরিবর্তন করতে পারে না।
+
+### ইভেন্ট {#events}
+
+[ইভেন্টগুলো](https://media.consensys.net/technical-introduction-to-events-and-logs-in-ethereum-a074d65dd61e) ব্লকচেইন-এর বাইরের ব্যবহারকারী এবং সার্ভারগুলোকে বিভিন্ন ঘটনা সম্পর্কে জানাতে এমিট করা হয়। মনে রাখবেন যে ইভেন্টগুলোর বিষয়বস্তু ব্লকচেইন-এর কন্ট্রাক্টগুলোর জন্য উপলব্ধ নয়।
+
+```python
+# @dev যেকোনো প্রক্রিয়ায় কোনো NFT-এর মালিকানা পরিবর্তন হলে এটি এমিট হয়। এই ইভেন্টটি তখন এমিট হয় যখন NFT-গুলো
+# তৈরি করা হয় (`from` == 0) এবং ধ্বংস করা হয় (`to` == 0)। ব্যতিক্রম: চুক্তি (contract) তৈরির সময়, যেকোনো
+# সংখ্যক NFT তৈরি এবং অ্যাসাইন করা হতে পারে Transfer এমিট না করেই। যেকোনো
+# ট্রান্সফারের সময়, সেই NFT-এর জন্য অনুমোদিত ঠিকানা (যদি থাকে) রিসেট করে none করা হয়।
+# @param _from NFT-এর প্রেরক (যদি ঠিকানা শূন্য ঠিকানা হয় তবে এটি টোকেন তৈরি নির্দেশ করে)।
+# @param _to NFT-এর প্রাপক (যদি ঠিকানা শূন্য ঠিকানা হয় তবে এটি টোকেন ধ্বংস নির্দেশ করে)।
+# @param _tokenId যে NFT-টি ট্রান্সফার করা হয়েছে।
+event Transfer:
+ sender: indexed(address)
+ receiver: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+এটি ERC-20 ট্রান্সফার ইভেন্টের মতোই, তবে আমরা পরিমাণের পরিবর্তে একটি `tokenId` রিপোর্ট করি। জিরো এডড্রেস-এর কোনো মালিক নেই, তাই প্রথা অনুযায়ী আমরা টোকেন তৈরি এবং ধ্বংসের রিপোর্ট করতে এটি ব্যবহার করি।
+
+```python
+# @dev কোনো NFT-এর অনুমোদিত ঠিকানা পরিবর্তন বা পুনর্নিশ্চিত করা হলে এটি এমিট হয়। শূন্য
+# ঠিকানা নির্দেশ করে যে কোনো অনুমোদিত ঠিকানা নেই। যখন একটি Transfer ইভেন্ট এমিট হয়, এটি আরও
+# নির্দেশ করে যে সেই NFT-এর জন্য অনুমোদিত ঠিকানা (যদি থাকে) রিসেট করে none করা হয়েছে।
+# @param _owner NFT-এর মালিক।
+# @param _approved যে ঠিকানাটি আমরা অনুমোদন করছি।
+# @param _tokenId যে NFT-টি আমরা অনুমোদন করছি।
+event Approval:
+ owner: indexed(address)
+ approved: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+একটি ERC-721 অ্যাপ্রুভাল ERC-20 অ্যালাউয়েন্সের মতোই। একটি নির্দিষ্ট এডড্রেস-কে একটি নির্দিষ্ট টোকেন ট্রান্সফার করার অনুমতি দেওয়া হয়। এটি কন্ট্রাক্টগুলোর জন্য একটি মেকানিজম প্রদান করে যাতে তারা টোকেন গ্রহণ করার সময় সাড়া দিতে পারে। কন্ট্রাক্টগুলো ইভেন্ট শুনতে পারে না, তাই আপনি যদি শুধু তাদের কাছে টোকেন ট্রান্সফার করেন তবে তারা এটি সম্পর্কে "জানতে" পারে না। এই পদ্ধতিতে মালিক প্রথমে একটি অ্যাপ্রুভাল জমা দেয় এবং তারপর কন্ট্রাক্টকে একটি রিকোয়েস্ট পাঠায়: "আমি আপনাকে টোকেন X ট্রান্সফার করার অনুমোদন দিয়েছি, অনুগ্রহ করে করুন..."।
+
+ERC-721 স্ট্যান্ডার্ডকে ERC-20 স্ট্যান্ডার্ডের মতো করার জন্য এটি একটি ডিজাইন চয়েস। যেহেতু ERC-721 টোকেনগুলো ফান্জেবল নয়, তাই একটি কন্ট্রাক্ট টোকেনের মালিকানা দেখেও শনাক্ত করতে পারে যে এটি একটি নির্দিষ্ট টোকেন পেয়েছে।
+
+```python
+# @dev কোনো মালিকের জন্য একজন অপারেটর চালু বা বন্ধ করা হলে এটি এমিট হয়। অপারেটরটি পরিচালনা করতে পারে
+# মালিকের সমস্ত NFT।
+# @param _owner NFT-এর মালিক।
+# @param _operator যে ঠিকানায় আমরা অপারেটরের অধিকার সেট করছি।
+# @param _approved অপারেটরের অধিকারের স্ট্যাটাস (অপারেটরের অধিকার দেওয়া হলে true এবং
+# বাতিল করা হলে false)।
+event ApprovalForAll:
+ owner: indexed(address)
+ operator: indexed(address)
+ approved: bool
+```
+
+কখনো কখনো এমন একজন _অপারেটর_ থাকা দরকারি যে একটি একাউন্ট-এর নির্দিষ্ট ধরনের সমস্ত টোকেন (যেগুলো একটি নির্দিষ্ট কন্ট্রাক্ট দ্বারা পরিচালিত হয়) পরিচালনা করতে পারে, অনেকটা পাওয়ার অফ অ্যাটর্নির মতো। উদাহরণস্বরূপ, আমি এমন একটি কন্ট্রাক্টকে এই ক্ষমতা দিতে চাইতে পারি যা পরীক্ষা করে যে আমি ছয় মাস ধরে এর সাথে যোগাযোগ করিনি কি না, এবং যদি তাই হয় তবে আমার সম্পদ আমার উত্তরাধিকারীদের মধ্যে বিতরণ করে (যদি তাদের মধ্যে কেউ এটি চায়, কারণ লেনদেন দ্বারা কল করা ছাড়া কন্ট্রাক্টগুলো কিছুই করতে পারে না)। ERC-20-তে আমরা একটি ইনহেরিটেন্স কন্ট্রাক্টকে একটি উচ্চ অ্যালাউয়েন্স দিতে পারি, কিন্তু ERC-721-এর ক্ষেত্রে এটি কাজ করে না কারণ টোকেনগুলো ফান্জেবল নয়। এটি তারই সমতুল্য।
+
+`approved` ভ্যালুটি আমাদের বলে যে ইভেন্টটি কোনো অনুমোদনের জন্য, নাকি অনুমোদন প্রত্যাহারের জন্য।
+
+### স্টেট ভেরিয়েবল {#state-vars}
+
+এই ভেরিয়েবলগুলোতে টোকেনগুলোর বর্তমান স্টেট থাকে: কোনগুলো উপলব্ধ এবং সেগুলোর মালিক কে। এগুলোর বেশিরভাগই হলো `HashMap` অবজেক্ট, [দুটি টাইপের মধ্যে থাকা একমুখী ম্যাপিং](https://vyper.readthedocs.io/en/latest/types.html#mappings)।
+
+```python
+# @dev NFT ID থেকে এর মালিকানার ঠিকানায় ম্যাপিং।
+idToOwner: HashMap[uint256, address]
+
+# @dev NFT ID থেকে অনুমোদিত ঠিকানায় ম্যাপিং।
+idToApprovals: HashMap[uint256, address]
+```
+
+ইথিরিয়ামে ব্যবহারকারী এবং কন্ট্রাক্টের পরিচয় 160-বিট এডড্রেস দ্বারা উপস্থাপন করা হয়। এই দুটি ভেরিয়েবল টোকেন আইডি থেকে তাদের মালিকদের এবং যারা সেগুলো ট্রান্সফার করার জন্য অনুমোদিত তাদের ম্যাপ করে (প্রতিটির জন্য সর্বোচ্চ একজন)। ইথিরিয়ামে, আনইনিশিয়ালাইজড ডেটা সর্বদা শূন্য হয়, তাই যদি কোনো মালিক বা অনুমোদিত ট্রান্সফারকারী না থাকে তবে সেই টোকেনের মান শূন্য হয়।
+
+```python
+# @dev মালিকের ঠিকানা থেকে তার টোকেনের সংখ্যায় ম্যাপিং।
+ownerToNFTokenCount: HashMap[address, uint256]
+```
+
+এই ভেরিয়েবলটি প্রতিটি মালিকের জন্য টোকেনের সংখ্যা ধারণ করে। মালিকদের থেকে টোকেনগুলোতে কোনো ম্যাপিং নেই, তাই কোনো নির্দিষ্ট মালিকের টোকেনগুলো শনাক্ত করার একমাত্র উপায় হলো ব্লকচেইন-এর ইভেন্ট হিস্ট্রিতে ফিরে তাকানো এবং উপযুক্ত `Transfer` ইভেন্টগুলো দেখা। আমরা এই ভেরিয়েবলটি ব্যবহার করে জানতে পারি কখন আমাদের কাছে সমস্ত NFT আছে এবং আর পেছনের দিকে তাকানোর প্রয়োজন নেই।
+
+মনে রাখবেন যে এই অ্যালগরিদমটি শুধুমাত্র ইউজার ইন্টারফেস এবং এক্সটার্নাল সার্ভারগুলোর জন্য কাজ করে। ব্লকচেইন-এ চলা কোড অতীতের ইভেন্টগুলো পড়তে পারে না।
+
+```python
+# @dev মালিকের ঠিকানা থেকে অপারেটরের ঠিকানার ম্যাপিংয়ে ম্যাপিং।
+ownerToOperators: HashMap[address, HashMap[address, bool]]
+```
+
+একটি একাউন্ট-এর একাধিক অপারেটর থাকতে পারে। তাদের ট্র্যাক রাখার জন্য একটি সাধারণ `HashMap` যথেষ্ট নয়, কারণ প্রতিটি কী একটি একক ভ্যালুর দিকে নিয়ে যায়। এর পরিবর্তে, আপনি ভ্যালু হিসেবে `HashMap[address, bool]` ব্যবহার করতে পারেন। ডিফল্টরূপে প্রতিটি এডড্রেস-এর ভ্যালু `False` হয়, যার মানে এটি কোনো অপারেটর নয়। আপনি প্রয়োজন অনুযায়ী ভ্যালুগুলো `True` সেট করতে পারেন।
+
+```python
+# @dev মিন্টারের ঠিকানা, যিনি একটি টোকেন মিন্ট করতে পারেন
+minter: address
+```
+
+নতুন টোকেন কোনো না কোনোভাবে তৈরি করতে হবে। এই কন্ট্রাক্টে শুধুমাত্র একটি এনটিটি এটি করার অনুমতিপ্রাপ্ত, যা হলো `minter`। উদাহরণস্বরূপ, একটি গেমের জন্য এটি যথেষ্ট হতে পারে। অন্যান্য উদ্দেশ্যে, আরও জটিল বিজনেস লজিক তৈরি করার প্রয়োজন হতে পারে।
+
+```python
+# @dev ইন্টারফেস আইডি থেকে এটি সমর্থিত কিনা সেই বিষয়ে বুলিয়ানে (bool) ম্যাপিং
+supportedInterfaces: HashMap[bytes32, bool]
+
+# @dev ERC165-এর ERC165 ইন্টারফেস আইডি
+ERC165_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000001ffc9a7
+
+# @dev ERC721-এর ERC165 ইন্টারফেস আইডি
+ERC721_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000080ac58cd
+```
+
+[ERC-165](https://eips.ethereum.org/EIPS/eip-165) একটি কন্ট্রাক্টের জন্য এমন একটি মেকানিজম নির্দিষ্ট করে যা প্রকাশ করে যে অ্যাপ্লিকেশনগুলো কীভাবে এর সাথে যোগাযোগ করতে পারে এবং এটি কোন ERC-গুলো মেনে চলে। এই ক্ষেত্রে, কন্ট্রাক্টটি ERC-165 এবং ERC-721 মেনে চলে।
+
+### ফাংশন {#functions}
+
+এই ফাংশনগুলোই মূলত ERC-721 ইমপ্লিমেন্ট করে।
+
+#### কনস্ট্রাক্টর {#constructor}
+
+```python
+@external
+def __init__():
+```
+
+Python-এর মতো Vyper-এও কনস্ট্রাক্টর ফাংশনটিকে `__init__` বলা হয়।
+
+```python
+ # @dev কন্ট্রাক্ট কনস্ট্রাক্টর।
+```
+
+Python এবং Vyper-এ, আপনি একটি মাল্টি-লাইন স্ট্রিং (যা `"""` দিয়ে শুরু এবং শেষ হয়) নির্দিষ্ট করেও একটি কমেন্ট তৈরি করতে পারেন এবং এটি কোনোভাবেই ব্যবহার না করতে পারেন। এই কমেন্টগুলোতে [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html)-ও অন্তর্ভুক্ত থাকতে পারে।
+
+```python
+ self.supportedInterfaces[ERC165_INTERFACE_ID] = True
+ self.supportedInterfaces[ERC721_INTERFACE_ID] = True
+ self.minter = msg.sender
+```
+
+স্টেট ভেরিয়েবলগুলো অ্যাক্সেস করতে আপনি `self.` ব্যবহার করেন (আবারও, Python-এর মতোই)।
+
+#### ভিউ ফাংশন {#views}
+
+এগুলো এমন ফাংশন যা ব্লকচেইন-এর স্টেট পরিবর্তন করে না, এবং তাই যদি এগুলোকে এক্সটার্নালি কল করা হয় তবে এগুলো বিনামূল্যে এক্সিকিউট করা যেতে পারে। যদি ভিউ ফাংশনগুলো কোনো কন্ট্রাক্ট দ্বারা কল করা হয় তবে সেগুলো এখনও প্রতিটি নোড-এ এক্সিকিউট করতে হবে এবং তাই গ্যাস খরচ হবে।
+
+```python
+@view
+@external
+```
+
+ফাংশন সংজ্ঞার আগে থাকা এই কিওয়ার্ডগুলো যা অ্যাট সাইন (`@`) দিয়ে শুরু হয়, সেগুলোকে _ডেকোরেশন_ বলা হয়। এগুলো নির্দিষ্ট করে যে কোন পরিস্থিতিতে একটি ফাংশন কল করা যেতে পারে।
+
+- `@view` নির্দিষ্ট করে যে এই ফাংশনটি একটি ভিউ।
+- `@external` নির্দিষ্ট করে যে এই নির্দিষ্ট ফাংশনটি লেনদেন এবং অন্যান্য কন্ট্রাক্ট দ্বারা কল করা যেতে পারে।
+
+```python
+def supportsInterface(_interfaceID: bytes32) -> bool:
+```
+
+Python-এর বিপরীতে, Vyper হলো একটি [স্ট্যাটিক টাইপড ভাষা](https://wikipedia.org/wiki/Type_system#Static_type_checking)। আপনি [ডেটা টাইপ](https://vyper.readthedocs.io/en/latest/types.html) শনাক্ত না করে কোনো ভেরিয়েবল বা ফাংশন প্যারামিটার ডিক্লেয়ার করতে পারবেন না। এই ক্ষেত্রে ইনপুট প্যারামিটারটি হলো `bytes32`, যা একটি 256-বিট ভ্যালু (256 বিট হলো [ইথিরিয়াম ভার্চুয়াল মেশিন](/developers/docs/evm/)-এর নেটিভ ওয়ার্ড সাইজ)। আউটপুটটি হলো একটি বুলিয়ান ভ্যালু। প্রথা অনুযায়ী, ফাংশন প্যারামিটারের নামগুলো আন্ডারস্কোর (`_`) দিয়ে শুরু হয়।
+
+```python
+ # @dev ইন্টারফেস আইডেন্টিফিকেশন ERC-165-এ নির্দিষ্ট করা আছে।
+ @param _interfaceID ইন্টারফেসের আইডি
+ return self.supportedInterfaces[_interfaceID]
+```
+
+`self.supportedInterfaces` HashMap থেকে ভ্যালুটি রিটার্ন করুন, যা কনস্ট্রাক্টরে (`__init__`) সেট করা আছে।
+
+```python
+# ## ভিউ ফাংশনস ###
+```
+
+এগুলো হলো সেই ভিউ ফাংশন যা ব্যবহারকারী এবং অন্যান্য কন্ট্রাক্টের কাছে টোকেন সম্পর্কে তথ্য উপলব্ধ করে।
+
+```python
+@view
+@external
+def balanceOf(_owner: address) -> uint256:
+ # @dev `_owner`-এর মালিকানাধীন NFT-এর সংখ্যা রিটার্ন করে।
+ `_owner` শূন্য ঠিকানা হলে থ্রো (Throw) করে। শূন্য ঠিকানায় অ্যাসাইন করা NFT-গুলোকে অবৈধ বলে বিবেচনা করা হয়।
+ @param _owner ব্যালেন্স কোয়েরি করার জন্য ঠিকানা।
+ assert _owner != ZERO_ADDRESS
+```
+
+এই লাইনটি [অ্যাসার্ট](https://vyper.readthedocs.io/en/latest/statements.html#assert) করে যে `_owner` শূন্য নয়। যদি এটি শূন্য হয়, তবে একটি ত্রুটি দেখা দেয় এবং অপারেশনটি রিভার্ট করা হয়।
+
+```python
+ return self.ownerToNFTokenCount[_owner]
+
+@view
+@external
+def ownerOf(_tokenId: uint256) -> address:
+ # @dev NFT-এর মালিকের ঠিকানা রিটার্ন করে।
+ `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে।
+ @param _tokenId একটি NFT-এর আইডেন্টিফায়ার।
+ owner: address = self.idToOwner[_tokenId]
+ # `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে
+ assert owner != ZERO_ADDRESS
+ return owner
+```
+
+ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)-এ এমন যেকোনো স্টোরেজ যার মধ্যে কোনো ভ্যালু স্টোর করা নেই, তা শূন্য হয়। যদি `_tokenId`-এ কোনো টোকেন না থাকে তবে `self.idToOwner[_tokenId]`-এর ভ্যালু শূন্য হয়। সেক্ষেত্রে ফাংশনটি রিভার্ট করে।
+
+```python
+@view
+@external
+def getApproved(_tokenId: uint256) -> address:
+ # @dev একটি একক NFT-এর জন্য অনুমোদিত ঠিকানা পান।
+ `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে।
+ @param _tokenId অনুমোদনের কোয়েরি করার জন্য NFT-এর আইডি।
+ # `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে
+ assert self.idToOwner[_tokenId] != ZERO_ADDRESS
+ return self.idToApprovals[_tokenId]
+```
+
+মনে রাখবেন যে `getApproved` শূন্য রিটার্ন _করতে পারে_। যদি টোকেনটি বৈধ হয় তবে এটি `self.idToApprovals[_tokenId]` রিটার্ন করে। যদি কোনো অনুমোদনকারী না থাকে তবে সেই ভ্যালুটি শূন্য হয়।
+
+```python
+@view
+@external
+def isApprovedForAll(_owner: address, _operator: address) -> bool:
+ # @dev `_operator` `_owner`-এর জন্য একজন অনুমোদিত অপারেটর কিনা তা চেক করে।
+ @param _owner যে ঠিকানাটি NFT-গুলোর মালিক।
+ @param _operator যে ঠিকানাটি মালিকের পক্ষে কাজ করে।
+ return (self.ownerToOperators[_owner])[_operator]
+```
+
+এই ফাংশনটি পরীক্ষা করে যে `_operator` এই কন্ট্রাক্টে `_owner`-এর সমস্ত টোকেন পরিচালনা করার অনুমতিপ্রাপ্ত কি না। যেহেতু একাধিক অপারেটর থাকতে পারে, তাই এটি একটি দুই স্তরের HashMap।
+
+#### ট্রান্সফার হেল্পার ফাংশন {#transfer-helpers}
+
+এই ফাংশনগুলো এমন অপারেশন ইমপ্লিমেন্ট করে যা টোকেন ট্রান্সফার বা পরিচালনার অংশ।
+
+```python
+
+# ## ট্রান্সফার ফাংশন হেল্পারস ###
+
+@view
+@internal
+```
+
+এই ডেকোরেশন, `@internal`-এর মানে হলো ফাংশনটি শুধুমাত্র একই কন্ট্রাক্টের মধ্যে থাকা অন্যান্য ফাংশন থেকে অ্যাক্সেসযোগ্য। প্রথা অনুযায়ী, এই ফাংশনের নামগুলোও আন্ডারস্কোর (`_`) দিয়ে শুরু হয়।
+
+```python
+def _isApprovedOrOwner(_spender: address, _tokenId: uint256) -> bool:
+ # @dev প্রদত্ত স্পেন্ডার একটি নির্দিষ্ট টোকেন আইডি ট্রান্সফার করতে পারবে কিনা তা রিটার্ন করে
+ @param spender কোয়েরি করার জন্য স্পেন্ডারের ঠিকানা
+ @param tokenId ট্রান্সফার করার জন্য টোকেনের uint256 আইডি
+ @return bool msg.sender প্রদত্ত টোকেন আইডির জন্য অনুমোদিত কিনা,
+ মালিকের একজন অপারেটর কিনা, অথবা টোকেনটির মালিক কিনা
+ owner: address = self.idToOwner[_tokenId]
+ spenderIsOwner: bool = owner == _spender
+ spenderIsApproved: bool = _spender == self.idToApprovals[_tokenId]
+ spenderIsApprovedForAll: bool = (self.ownerToOperators[owner])[_spender]
+ return (spenderIsOwner or spenderIsApproved) or spenderIsApprovedForAll
+```
+
+একটি এডড্রেস-কে টোকেন ট্রান্সফার করার অনুমতি দেওয়ার তিনটি উপায় রয়েছে:
+
+1. এডড্রেস-টি টোকেনের মালিক
+2. এডড্রেস-টি সেই টোকেন খরচ করার জন্য অনুমোদিত
+3. এডড্রেস-টি টোকেনের মালিকের জন্য একজন অপারেটর
+
+উপরের ফাংশনটি একটি ভিউ হতে পারে কারণ এটি স্টেট পরিবর্তন করে না। অপারেটিং খরচ কমানোর জন্য, যে ফাংশনটি একটি ভিউ হতে _পারে_, তার একটি ভিউ হওয়া _উচিত_।
+
+```python
+@internal
+def _addTokenTo(_to: address, _tokenId: uint256):
+ # @dev একটি নির্দিষ্ট ঠিকানায় একটি NFT যোগ করুন
+ `_tokenId` কারও মালিকানাধীন হলে থ্রো (Throw) করে।
+ # `_tokenId` কারও মালিকানাধীন হলে থ্রো (Throw) করে
+ assert self.idToOwner[_tokenId] == ZERO_ADDRESS
+ # মালিক পরিবর্তন করুন
+ self.idToOwner[_tokenId] = _to
+ # কাউন্ট ট্র্যাকিং পরিবর্তন করুন
+ self.ownerToNFTokenCount[_to] += 1
+
+
+@internal
+def _removeTokenFrom(_from: address, _tokenId: uint256):
+ # @dev একটি নির্দিষ্ট ঠিকানা থেকে একটি NFT সরান
+ `_from` বর্তমান মালিক না হলে থ্রো (Throw) করে।
+ # `_from` বর্তমান মালিক না হলে থ্রো (Throw) করে
+ assert self.idToOwner[_tokenId] == _from
+ # মালিক পরিবর্তন করুন
+ self.idToOwner[_tokenId] = ZERO_ADDRESS
+ # কাউন্ট ট্র্যাকিং পরিবর্তন করুন
+ self.ownerToNFTokenCount[_from] -= 1
+```
+
+যখন কোনো ট্রান্সফারে সমস্যা হয় তখন আমরা কলটি রিভার্ট করি।
+
+```python
+@internal
+def _clearApproval(_owner: address, _tokenId: uint256):
+ # @dev একটি নির্দিষ্ট ঠিকানার অনুমোদন ক্লিয়ার করুন
+ `_owner` বর্তমান মালিক না হলে থ্রো (Throw) করে।
+ # `_owner` বর্তমান মালিক না হলে থ্রো (Throw) করে
+ assert self.idToOwner[_tokenId] == _owner
+ if self.idToApprovals[_tokenId] != ZERO_ADDRESS:
+ # অনুমোদনগুলো রিসেট করুন
+ self.idToApprovals[_tokenId] = ZERO_ADDRESS
+```
+
+শুধুমাত্র প্রয়োজন হলেই ভ্যালু পরিবর্তন করুন। স্টেট ভেরিয়েবলগুলো স্টোরেজে থাকে। স্টোরেজে লেখা হলো EVM (ইথিরিয়াম ভার্চুয়াল মেশিন)-এর করা সবচেয়ে ব্যয়বহুল অপারেশনগুলোর মধ্যে একটি ([গ্যাস](/developers/docs/gas/)-এর ক্ষেত্রে)। তাই, এটি কমানো একটি ভালো ধারণা, এমনকি বিদ্যমান ভ্যালু লেখার খরচও অনেক বেশি।
+
+```python
+@internal
+def _transferFrom(_from: address, _to: address, _tokenId: uint256, _sender: address):
+ # @dev একটি NFT-এর ট্রান্সফার এক্সিকিউট করুন।
+ `msg.sender` বর্তমান মালিক, একজন অনুমোদিত অপারেটর, অথবা এই NFT-এর জন্য অনুমোদিত
+ ঠিকানা না হলে থ্রো (Throw) করে। (নোট: প্রাইভেট ফাংশনে `msg.sender` অনুমোদিত নয় তাই `_sender` পাস করুন।)
+ `_to` শূন্য ঠিকানা হলে থ্রো (Throw) করে।
+ `_from` বর্তমান মালিক না হলে থ্রো (Throw) করে।
+ `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে।
+```
+
+আমাদের এই ইন্টারনাল ফাংশনটি রয়েছে কারণ টোকেন ট্রান্সফার করার দুটি উপায় রয়েছে (নিয়মিত এবং নিরাপদ), তবে অডিটিং সহজ করার জন্য আমরা কোডে শুধুমাত্র একটি স্থানে এটি করতে চাই।
+
+```python
+ # প্রয়োজনীয়তাগুলো চেক করুন
+ assert self._isApprovedOrOwner(_sender, _tokenId)
+ # `_to` শূন্য ঠিকানা হলে থ্রো (Throw) করে
+ assert _to != ZERO_ADDRESS
+ # অনুমোদন ক্লিয়ার করুন। `_from` বর্তমান মালিক না হলে থ্রো (Throw) করে
+ self._clearApproval(_from, _tokenId)
+ # NFT সরান। `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে
+ self._removeTokenFrom(_from, _tokenId)
+ # NFT যোগ করুন
+ self._addTokenTo(_to, _tokenId)
+ # ট্রান্সফারটি লগ করুন
+ log Transfer(_from, _to, _tokenId)
+```
+
+Vyper-এ একটি ইভেন্ট এমিট করতে আপনি একটি `log` স্টেটমেন্ট ব্যবহার করেন ([আরও বিস্তারিত জানতে এখানে দেখুন](https://vyper.readthedocs.io/en/latest/event-logging.html#event-logging))।
+
+#### ট্রান্সফার ফাংশন {#transfer-funs}
+
+```python
+
+# ## ট্রান্সফার ফাংশনস ###
+
+@external
+def transferFrom(_from: address, _to: address, _tokenId: uint256):
+ # @dev `msg.sender` বর্তমান মালিক, একজন অনুমোদিত অপারেটর, অথবা এই NFT-এর জন্য অনুমোদিত
+ ঠিকানা না হলে থ্রো (Throw) করে।
+ `_from` বর্তমান মালিক না হলে থ্রো (Throw) করে।
+ `_to` শূন্য ঠিকানা হলে থ্রো (Throw) করে।
+ `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে।
+ @notice কলারের দায়িত্ব হলো এটি নিশ্চিত করা যে `_to` NFT গ্রহণে সক্ষম, অন্যথায়
+ সেগুলো স্থায়ীভাবে হারিয়ে যেতে পারে।
+ @param _from NFT-এর বর্তমান মালিক।
+ @param _to নতুন মালিক।
+ @param _tokenId ট্রান্সফার করার জন্য NFT।
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+এই ফাংশনটি আপনাকে যেকোনো এডড্রেস-এ ট্রান্সফার করতে দেয়। যদি না এডড্রেস-টি কোনো ব্যবহারকারী হয়, বা এমন কোনো কন্ট্রাক্ট হয় যা জানে কীভাবে টোকেন ট্রান্সফার করতে হয়, তবে আপনার ট্রান্সফার করা যেকোনো টোকেন সেই এডড্রেস-এ আটকে থাকবে এবং অকেজো হয়ে যাবে।
+
+```python
+@external
+def safeTransferFrom(
+ _from: address,
+ _to: address,
+ _tokenId: uint256,
+ _data: Bytes[1024]=b""
+ ):
+ # @dev একটি NFT-এর মালিকানা এক ঠিকানা থেকে অন্য ঠিকানায় ট্রান্সফার করে।
+ `msg.sender` বর্তমান মালিক, একজন অনুমোদিত অপারেটর, অথবা এই NFT-এর জন্য
+ অনুমোদিত ঠিকানা না হলে থ্রো (Throw) করে।
+ `_from` বর্তমান মালিক না হলে থ্রো (Throw) করে।
+ `_to` শূন্য ঠিকানা হলে থ্রো (Throw) করে।
+ `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে।
+ যদি `_to` একটি স্মার্ট কন্ট্রাক্ট হয়, তবে এটি `_to`-তে `onERC721Received` কল করে এবং রিটার্ন ভ্যালু
+ `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` না হলে থ্রো (Throw) করে।
+ নোট: bytes4-কে প্যাডিং সহ bytes32 দ্বারা উপস্থাপন করা হয়
+ @param _from NFT-এর বর্তমান মালিক।
+ @param _to নতুন মালিক।
+ @param _tokenId ট্রান্সফার করার জন্য NFT।
+ @param _data কোনো নির্দিষ্ট ফরম্যাট ছাড়া অতিরিক্ত ডেটা, যা `_to`-তে কলে পাঠানো হয়।
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+প্রথমে ট্রান্সফার করা ঠিক আছে কারণ যদি কোনো সমস্যা হয় তবে আমরা এমনিতেই রিভার্ট করব, তাই কলে করা সবকিছু বাতিল হয়ে যাবে।
+
+```python
+ if _to.is_contract: # `_to` একটি কন্ট্রাক্ট ঠিকানা কিনা তা চেক করুন
+```
+
+প্রথমে পরীক্ষা করে দেখুন এডড্রেস-টি কোনো কন্ট্রাক্ট কি না (যদি এর কোড থাকে)। যদি না হয়, তবে ধরে নিন এটি একটি ব্যবহারকারীর এডড্রেস এবং ব্যবহারকারী টোকেনটি ব্যবহার করতে বা ট্রান্সফার করতে সক্ষম হবে। তবে এটি যেন আপনাকে নিরাপত্তার মিথ্যা অনুভূতি না দেয়। আপনি টোকেন হারাতে পারেন, এমনকি `safeTransferFrom` ব্যবহার করেও, যদি আপনি সেগুলোকে এমন কোনো এডড্রেস-এ ট্রান্সফার করেন যার প্রাইভেট কি কেউ জানে না।
+
+```python
+ returnValue: bytes32 = ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data)
+```
+
+টার্গেট কন্ট্রাক্টটি ERC-721 টোকেন গ্রহণ করতে পারে কি না তা দেখতে সেটিকে কল করুন।
+
+```python
+ # ট্রান্সফারের গন্তব্য এমন কোনো কন্ট্রাক্ট হলে থ্রো (Throw) করে যা 'onERC721Received' ইমপ্লিমেন্ট করে না
+ assert returnValue == method_id("onERC721Received(address,address,uint256,bytes)", output_type=bytes32)
+```
+
+যদি গন্তব্যটি একটি কন্ট্রাক্ট হয়, কিন্তু এমন একটি যা ERC-721 টোকেন গ্রহণ করে না (বা যা এই নির্দিষ্ট ট্রান্সফারটি গ্রহণ না করার সিদ্ধান্ত নিয়েছে), তবে রিভার্ট করুন।
+
+```python
+@external
+def approve(_approved: address, _tokenId: uint256):
+ # @dev একটি NFT-এর জন্য অনুমোদিত ঠিকানা সেট বা পুনর্নিশ্চিত করুন। শূন্য ঠিকানা নির্দেশ করে যে কোনো অনুমোদিত ঠিকানা নেই।
+ `msg.sender` বর্তমান NFT মালিক, অথবা বর্তমান মালিকের একজন অনুমোদিত অপারেটর না হলে থ্রো (Throw) করে।
+ `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে। (নোট: এটি EIP-তে লেখা নেই)
+ `_approved` বর্তমান মালিক হলে থ্রো (Throw) করে। (নোট: এটি EIP-তে লেখা নেই)
+ @param _approved প্রদত্ত NFT আইডির জন্য অনুমোদন করার ঠিকানা।
+ @param _tokenId অনুমোদন করার টোকেনের আইডি।
+ owner: address = self.idToOwner[_tokenId]
+ # `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে
+ assert owner != ZERO_ADDRESS
+ # `_approved` বর্তমান মালিক হলে থ্রো (Throw) করে
+ assert _approved != owner
+```
+
+প্রথা অনুযায়ী যদি আপনি কোনো অনুমোদনকারী না রাখতে চান তবে আপনি নিজেকে নয়, জিরো এডড্রেস-কে নিয়োগ করেন।
+
+```python
+ # প্রয়োজনীয়তাগুলো চেক করুন
+ senderIsOwner: bool = self.idToOwner[_tokenId] == msg.sender
+ senderIsApprovedForAll: bool = (self.ownerToOperators[owner])[msg.sender]
+ assert (senderIsOwner or senderIsApprovedForAll)
+```
+
+একটি অনুমোদন সেট করতে আপনি হয় মালিক হতে পারেন, অথবা মালিক দ্বারা অনুমোদিত একজন অপারেটর হতে পারেন।
+
+```python
+ # অনুমোদন সেট করুন
+ self.idToApprovals[_tokenId] = _approved
+ log Approval(owner, _approved, _tokenId)
+
+
+@external
+def setApprovalForAll(_operator: address, _approved: bool):
+ # @dev `msg.sender`-এর সমস্ত সম্পদ পরিচালনা করার জন্য কোনো তৃতীয় পক্ষের ("অপারেটর") অনুমোদন চালু বা বন্ধ করে। এটি ApprovalForAll ইভেন্টও এমিট করে।
+ `_operator` যদি `msg.sender` হয় তবে থ্রো (Throw) করে। (নোট: এটি EIP-তে লেখা নেই)
+ @notice প্রেরকের কাছে সেই মুহূর্তে কোনো টোকেন না থাকলেও এটি কাজ করে।
+ @param _operator অনুমোদিত অপারেটরদের সেটে যোগ করার ঠিকানা।
+ @param _approved অপারেটর অনুমোদিত হলে True, অনুমোদন বাতিল করতে হলে false।
+ # `_operator` যদি `msg.sender` হয় তবে থ্রো (Throw) করে
+ assert _operator != msg.sender
+ self.ownerToOperators[msg.sender][_operator] = _approved
+ log ApprovalForAll(msg.sender, _operator, _approved)
+```
+
+#### নতুন টোকেন মিন্ট করা এবং বিদ্যমানগুলো ধ্বংস করা {#mint-burn}
+
+যে একাউন্ট-টি কন্ট্রাক্ট তৈরি করেছে সেটি হলো `minter`, সুপার ইউজার যা নতুন NFT মিন্ট করার জন্য অনুমোদিত। তবে, এমনকি এটিকেও বিদ্যমান টোকেনগুলো বার্ন করার অনুমতি দেওয়া হয়নি। শুধুমাত্র মালিক, বা মালিক দ্বারা অনুমোদিত কোনো এনটিটি এটি করতে পারে।
+
+```python
+# ## মিন্ট ও বার্ন ফাংশনস ###
+
+@external
+def mint(_to: address, _tokenId: uint256) -> bool:
+```
+
+এই ফাংশনটি সর্বদা `True` রিটার্ন করে, কারণ যদি অপারেশনটি ব্যর্থ হয় তবে এটি রিভার্ট করা হয়।
+
+```python
+ # @dev টোকেন মিন্ট করার ফাংশন
+ `msg.sender` মিন্টার না হলে থ্রো (Throw) করে।
+ `_to` শূন্য ঠিকানা হলে থ্রো (Throw) করে।
+ `_tokenId` কারও মালিকানাধীন হলে থ্রো (Throw) করে।
+ @param _to যে ঠিকানাটি মিন্ট করা টোকেনগুলো গ্রহণ করবে।
+ @param _tokenId মিন্ট করার টোকেন আইডি।
+ @return একটি বুলিয়ান যা নির্দেশ করে অপারেশনটি সফল হয়েছে কিনা।
+ # `msg.sender` মিন্টার না হলে থ্রো (Throw) করে
+ assert msg.sender == self.minter
+```
+
+শুধুমাত্র মিন্টার (যে একাউন্ট-টি ERC-721 কন্ট্রাক্ট তৈরি করেছে) নতুন টোকেন মিন্ট করতে পারে। ভবিষ্যতে যদি আমরা মিন্টারের পরিচয় পরিবর্তন করতে চাই তবে এটি একটি সমস্যা হতে পারে। একটি প্রোডাকশন কন্ট্রাক্টে আপনি সম্ভবত এমন একটি ফাংশন চাইবেন যা মিন্টারকে অন্য কারও কাছে মিন্টারের সুবিধাগুলো ট্রান্সফার করার অনুমতি দেয়।
+
+```python
+ # `_to` শূন্য ঠিকানা হলে থ্রো (Throw) করে
+ assert _to != ZERO_ADDRESS
+ # NFT যোগ করুন। `_tokenId` কারও মালিকানাধীন হলে থ্রো (Throw) করে
+ self._addTokenTo(_to, _tokenId)
+ log Transfer(ZERO_ADDRESS, _to, _tokenId)
+ return True
+```
+
+প্রথা অনুযায়ী, নতুন টোকেন মিন্ট করাকে জিরো এডড্রেস থেকে ট্রান্সফার হিসেবে গণ্য করা হয়।
+
+```python
+
+@external
+def burn(_tokenId: uint256):
+ # @dev একটি নির্দিষ্ট ERC721 টোকেন বার্ন করে।
+ `msg.sender` বর্তমান মালিক, একজন অনুমোদিত অপারেটর, অথবা এই NFT-এর জন্য অনুমোদিত
+ ঠিকানা না হলে থ্রো (Throw) করে।
+ `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে।
+ @param _tokenId বার্ন করার ERC721 টোকেনের uint256 আইডি।
+ # প্রয়োজনীয়তাগুলো চেক করুন
+ assert self._isApprovedOrOwner(msg.sender, _tokenId)
+ owner: address = self.idToOwner[_tokenId]
+ # `_tokenId` একটি বৈধ NFT না হলে থ্রো (Throw) করে
+ assert owner != ZERO_ADDRESS
+ self._clearApproval(owner, _tokenId)
+ self._removeTokenFrom(owner, _tokenId)
+ log Transfer(owner, ZERO_ADDRESS, _tokenId)
+```
+
+যেকোনো ব্যক্তি যাকে টোকেন ট্রান্সফার করার অনুমতি দেওয়া হয়েছে, তাকে এটি বার্ন করারও অনুমতি দেওয়া হয়েছে। যদিও একটি বার্ন জিরো এডড্রেস-এ ট্রান্সফার করার সমতুল্য বলে মনে হয়, জিরো এডড্রেস আসলে টোকেনটি গ্রহণ করে না। এটি আমাদের টোকেনের জন্য ব্যবহৃত সমস্ত স্টোরেজ খালি করার অনুমতি দেয়, যা লেনদেন-এর গ্যাস খরচ কমাতে পারে।
+
+## এই কন্ট্রাক্ট ব্যবহার করা {#using-contract}
+
+Solidity-এর বিপরীতে, Vyper-এ ইনহেরিটেন্স নেই। কোডটিকে আরও পরিষ্কার এবং তাই সুরক্ষিত করা সহজ করার জন্য এটি একটি ইচ্ছাকৃত ডিজাইন চয়েস। তাই আপনার নিজস্ব Vyper ERC-721 কন্ট্রাক্ট তৈরি করতে আপনি [এই কন্ট্রাক্টটি](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy) নিতে পারেন এবং আপনার পছন্দসই বিজনেস লজিক ইমপ্লিমেন্ট করতে এটি পরিবর্তন করতে পারেন।
+
+## উপসংহার {#conclusion}
+
+পর্যালোচনার জন্য, এখানে এই কন্ট্রাক্টের সবচেয়ে গুরুত্বপূর্ণ কিছু ধারণা দেওয়া হলো:
+
+- একটি নিরাপদ ট্রান্সফারের মাধ্যমে ERC-721 টোকেন গ্রহণ করতে, কন্ট্রাক্টগুলোকে `ERC721Receiver` ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।
+- এমনকি আপনি যদি নিরাপদ ট্রান্সফার ব্যবহার করেন, তবুও টোকেনগুলো আটকে যেতে পারে যদি আপনি সেগুলোকে এমন কোনো এডড্রেস-এ পাঠান যার প্রাইভেট কি অজানা।
+- যখন কোনো অপারেশনে সমস্যা হয় তখন শুধুমাত্র একটি ব্যর্থতার ভ্যালু রিটার্ন করার পরিবর্তে কলটি `revert` করা একটি ভালো ধারণা।
+- ERC-721 টোকেনগুলোর অস্তিত্ব তখনই থাকে যখন সেগুলোর একজন মালিক থাকে।
+- একটি NFT ট্রান্সফার করার জন্য অনুমোদিত হওয়ার তিনটি উপায় রয়েছে। আপনি মালিক হতে পারেন, একটি নির্দিষ্ট টোকেনের জন্য অনুমোদিত হতে পারেন, অথবা মালিকের সমস্ত টোকেনের জন্য একজন অপারেটর হতে পারেন।
+- অতীতের ইভেন্টগুলো শুধুমাত্র ব্লকচেইন-এর বাইরে দৃশ্যমান। ব্লকচেইন-এর ভেতরে চলা কোড সেগুলো দেখতে পারে না।
+
+এখন যান এবং সুরক্ষিত Vyper কন্ট্রাক্ট ইমপ্লিমেন্ট করুন।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/bn/developers/tutorials/erc20-annotated-code/index.md
new file mode 100644
index 00000000000..7cb205e2787
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/erc20-annotated-code/index.md
@@ -0,0 +1,829 @@
+---
+title: "ERC-20 কন্ট্রাক্ট ওয়াক-থ্রু"
+description: "OpenZeppelin ERC-20 কন্ট্রাক্টে কী আছে এবং কেন এটি সেখানে আছে?"
+author: ওরি পোমেরান্টজ
+lang: bn
+tags: ["solidity", "erc-20"]
+skill: beginner
+breadcrumb: ERC-20 ওয়াক-থ্রু
+published: 2021-03-09
+---
+
+## ভূমিকা {#introduction}
+
+Ethereum-এর অন্যতম সাধারণ ব্যবহার হলো কোনো গোষ্ঠীর জন্য একটি ট্রেডযোগ্য টোকেন তৈরি করা, যা এক অর্থে তাদের নিজস্ব মুদ্রা। এই টোকেনগুলো সাধারণত একটি স্ট্যান্ডার্ড অনুসরণ করে,
+[ERC-20](/developers/docs/standards/tokens/erc-20/)। এই স্ট্যান্ডার্ডটি লিকুইডিটি পুল এবং ওয়ালেট-এর মতো টুল তৈরি করা সম্ভব করে, যা সমস্ত ERC-20 টোকেনের সাথে কাজ করে। এই আর্টিকেলে আমরা
+[OpenZeppelin Solidity ERC20 ইমপ্লিমেন্টেশন](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol) এবং সেইসাথে
+[ইন্টারফেস ডেফিনিশন](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) বিশ্লেষণ করব।
+
+এটি অ্যানোটেটেড সোর্স কোড। আপনি যদি ERC-20 ইমপ্লিমেন্ট করতে চান, তবে
+[এই টিউটোরিয়ালটি পড়ুন](https://docs.openzeppelin.com/contracts/2.x/erc20-supply)।
+
+## ইন্টারফেস {#the-interface}
+
+ERC-20 এর মতো একটি স্ট্যান্ডার্ডের উদ্দেশ্য হলো এমন অনেক টোকেন ইমপ্লিমেন্টেশনের অনুমতি দেওয়া যা ওয়ালেট এবং ডিসেন্ট্রালাইজড এক্সচেঞ্জ-এর মতো অ্যাপ্লিকেশনগুলোর মধ্যে ইন্টারঅপারেবল। এটি অর্জন করতে, আমরা একটি
+[ইন্টারফেস](https://www.geeksforgeeks.org/solidity/solidity-basics-of-interface/) তৈরি করি। টোকেন কন্ট্রাক্ট ব্যবহার করার প্রয়োজন এমন যেকোনো কোড ইন্টারফেসে একই ডেফিনিশন ব্যবহার করতে পারে এবং এটি ব্যবহার করে এমন সমস্ত টোকেন কন্ট্রাক্টের সাথে সামঞ্জস্যপূর্ণ হতে পারে, তা MetaMask-এর মতো কোনো ওয়ালেট হোক, etherscan.io-এর মতো কোনো ডিএ্যাপ হোক, বা লিকুইডিটি পুলের মতো ভিন্ন কোনো কন্ট্রাক্ট হোক।
+
+
+
+আপনি যদি একজন অভিজ্ঞ প্রোগ্রামার হন, তবে আপনি সম্ভবত [Java](https://www.w3schools.com/java/java_interface.asp)
+বা এমনকি [C হেডার ফাইলে](https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html) একই ধরনের কনস্ট্রাক্ট দেখার কথা মনে করতে পারবেন।
+
+এটি OpenZeppelin থেকে [ERC-20 ইন্টারফেস](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)-এর একটি ডেফিনিশন। এটি [হিউম্যান রিডেবল স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-20)-এর Solidity কোডে অনুবাদ। অবশ্যই, ইন্টারফেস নিজে থেকে _কীভাবে_ কিছু করতে হবে তা নির্ধারণ করে না। এটি নিচের কন্ট্রাক্ট সোর্স কোডে ব্যাখ্যা করা হয়েছে।
+
+
+
+```solidity
+// SPDX-License-Identifier: MIT
+```
+
+Solidity ফাইলে একটি লাইসেন্স আইডেন্টিফায়ার অন্তর্ভুক্ত থাকার কথা। [আপনি এখানে লাইসেন্সের তালিকা দেখতে পারেন](https://spdx.org/licenses/)। আপনার যদি ভিন্ন কোনো লাইসেন্সের প্রয়োজন হয়, তবে শুধু কমেন্টে তা ব্যাখ্যা করুন।
+
+
+
+```solidity
+pragma solidity >=0.6.0 <0.8.0;
+```
+
+Solidity ভাষাটি এখনও দ্রুত বিকশিত হচ্ছে, এবং নতুন সংস্করণগুলো পুরোনো কোডের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে
+([এখানে দেখুন](https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html))। তাই, শুধুমাত্র ভাষার একটি ন্যূনতম সংস্করণ নয়, বরং একটি সর্বোচ্চ সংস্করণও নির্দিষ্ট করা ভালো, যা দিয়ে আপনি সর্বশেষ কোডটি পরীক্ষা করেছেন।
+
+
+
+```solidity
+/* *
+ * @dev EIP-তে সংজ্ঞায়িত ERC20 স্ট্যান্ডার্ডের ইন্টারফেস। */
+```
+
+কমেন্টে থাকা `@dev` হলো [NatSpec ফরম্যাট](https://docs.soliditylang.org/en/develop/natspec-format.html)-এর অংশ, যা সোর্স কোড থেকে ডকুমেন্টেশন তৈরি করতে ব্যবহৃত হয়।
+
+
+
+```solidity
+interface IERC20 {
+```
+
+প্রথা অনুযায়ী, ইন্টারফেসের নাম `I` দিয়ে শুরু হয়।
+
+
+
+```solidity
+ /* *
+ * @dev বর্তমানে বিদ্যমান টোকেনের পরিমাণ রিটার্ন করে। */
+ function totalSupply() external view returns (uint256);
+```
+
+এই ফাংশনটি `external`, যার অর্থ [এটি শুধুমাত্র কন্ট্রাক্টের বাইরে থেকে কল করা যেতে পারে](https://docs.soliditylang.org/en/v0.7.0/cheatsheet.html#index-2)।
+এটি কন্ট্রাক্টে টোকেনের মোট সরবরাহ রিটার্ন করে। এই মানটি Ethereum-এর সবচেয়ে সাধারণ টাইপ, আনসাইনড 256 বিট ব্যবহার করে রিটার্ন করা হয় (256 বিট হলো ইথিরিয়াম ভার্চুয়াল মেশিন-এর নেটিভ ওয়ার্ড সাইজ)। এই ফাংশনটি একটি `view`ও বটে, যার অর্থ এটি স্টেট পরিবর্তন করে না, তাই ব্লকচেইন-এর প্রতিটি নোড-এ এটি চালানোর পরিবর্তে এটি একটি একক নোড-এ এক্সিকিউট করা যেতে পারে। এই ধরনের ফাংশন কোনো লেনদেন তৈরি করে না এবং এতে কোনো [গ্যাস](/developers/docs/gas/) খরচ হয় না।
+
+**দ্রষ্টব্য:** তাত্ত্বিকভাবে মনে হতে পারে যে কোনো কন্ট্রাক্টের নির্মাতা আসল মানের চেয়ে ছোট মোট সরবরাহ রিটার্ন করে প্রতারণা করতে পারে, যার ফলে প্রতিটি টোকেন আসলে যতটা মূল্যবান তার চেয়ে বেশি মূল্যবান বলে মনে হয়। তবে, এই ভয় ব্লকচেইন-এর আসল প্রকৃতিকে উপেক্ষা করে। ব্লকচেইন-এ যা কিছু ঘটে তা প্রতিটি নোড দ্বারা যাচাই করা যেতে পারে। এটি অর্জন করতে, প্রতিটি কন্ট্রাক্টের মেশিন ল্যাঙ্গুয়েজ কোড এবং স্টোরেজ প্রতিটি নোড-এ উপলব্ধ থাকে। যদিও আপনার কন্ট্রাক্টের জন্য Solidity কোড প্রকাশ করা বাধ্যতামূলক নয়, তবে আপনি সোর্স কোড এবং যে Solidity সংস্করণ দিয়ে এটি কম্পাইল করা হয়েছিল তা প্রকাশ না করলে কেউ আপনাকে গুরুত্ব সহকারে নেবে না, যাতে এটি আপনার দেওয়া মেশিন ল্যাঙ্গুয়েজ কোডের বিপরীতে যাচাই করা যায়।
+উদাহরণস্বরূপ, [এই কন্ট্রাক্টটি](https://eth.blockscout.com/address/0xa530F85085C6FE2f866E7FdB716849714a89f4CD?tab=contract) দেখুন।
+
+
+
+```solidity
+ /* *
+ * @dev `account`-এর মালিকানাধীন টোকেনের পরিমাণ রিটার্ন করে। */
+ function balanceOf(address account) external view returns (uint256);
+```
+
+নাম থেকেই বোঝা যায়, `balanceOf` একটি একাউন্ট-এর ব্যালেন্স রিটার্ন করে। Ethereum একাউন্টগুলো Solidity-তে `address` টাইপ ব্যবহার করে চিহ্নিত করা হয়, যা 160 বিট ধারণ করে।
+এটি `external` এবং `view`ও বটে।
+
+
+
+```solidity
+ /* *
+ * @dev কলারের অ্যাকাউন্ট থেকে `recipient`-এ `amount` টোকেন স্থানান্তর করে।
+ *
+ * অপারেশনটি সফল হয়েছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান রিটার্ন করে।
+ *
+ * একটি {Transfer} ইভেন্ট এমিট করে। */
+ function transfer(address recipient, uint256 amount) external returns (bool);
+```
+
+`transfer` ফাংশন কলার থেকে একটি ভিন্ন এডড্রেস-এ টোকেন ট্রান্সফার করে। এর সাথে স্টেট-এর পরিবর্তন জড়িত, তাই এটি কোনো `view` নয়।
+যখন কোনো ব্যবহারকারী এই ফাংশনটি কল করে তখন এটি একটি লেনদেন তৈরি করে এবং এতে গ্যাস খরচ হয়। এটি ব্লকচেইন-এর সবাইকে ইভেন্টটি সম্পর্কে জানাতে একটি ইভেন্ট, `Transfer` এমিট করে।
+
+দুটি ভিন্ন ধরনের কলারের জন্য ফাংশনটির দুই ধরনের আউটপুট রয়েছে:
+
+- ব্যবহারকারীরা যারা সরাসরি ইউজার ইন্টারফেস থেকে ফাংশনটি কল করে। সাধারণত ব্যবহারকারী একটি লেনদেন সাবমিট করে এবং কোনো রেসপন্সের জন্য অপেক্ষা করে না, যা অনির্দিষ্ট পরিমাণ সময় নিতে পারে। ব্যবহারকারী লেনদেন রসিদ (যা লেনদেন হ্যাস দ্বারা চিহ্নিত করা হয়) বা `Transfer` ইভেন্টটি দেখে কী ঘটেছে তা দেখতে পারে।
+- অন্যান্য কন্ট্রাক্ট, যা সামগ্রিক লেনদেন-এর অংশ হিসেবে ফাংশনটি কল করে। সেই কন্ট্রাক্টগুলো অবিলম্বে ফলাফল পায়, কারণ তারা একই লেনদেন-এ চলে, তাই তারা ফাংশন রিটার্ন ভ্যালু ব্যবহার করতে পারে।
+
+কন্ট্রাক্টের স্টেট পরিবর্তন করে এমন অন্যান্য ফাংশন দ্বারা একই ধরনের আউটপুট তৈরি করা হয়।
+
+
+
+অ্যালাউন্স একটি একাউন্ট-কে ভিন্ন মালিকের কিছু টোকেন খরচ করার অনুমতি দেয়।
+এটি দরকারী, উদাহরণস্বরূপ, বিক্রেতা হিসেবে কাজ করে এমন কন্ট্রাক্টগুলোর জন্য। কন্ট্রাক্টগুলো
+ইভেন্টগুলোর জন্য মনিটর করতে পারে না, তাই যদি কোনো ক্রেতা সরাসরি বিক্রেতা কন্ট্রাক্টে টোকেন ট্রান্সফার করে
+তবে সেই কন্ট্রাক্টটি জানতে পারবে না যে এটি পেমেন্ট পেয়েছে। এর পরিবর্তে, ক্রেতা
+বিক্রেতা কন্ট্রাক্টকে একটি নির্দিষ্ট পরিমাণ খরচ করার অনুমতি দেয় এবং বিক্রেতা সেই পরিমাণটি ট্রান্সফার করে।
+এটি বিক্রেতা কন্ট্রাক্ট কল করে এমন একটি ফাংশনের মাধ্যমে করা হয়, যাতে বিক্রেতা কন্ট্রাক্ট
+জানতে পারে যে এটি সফল হয়েছে কিনা।
+
+```solidity
+ /* *
+ * @dev `spender` {transferFrom}-এর মাধ্যমে `owner`-এর পক্ষে যে পরিমাণ টোকেন খরচ করার অনুমতি পাবে তার অবশিষ্ট সংখ্যা রিটার্ন করে। এটি ডিফল্টরূপে শূন্য থাকে।
+ *
+ * {approve} বা {transferFrom} কল করা হলে এই মানটি পরিবর্তিত হয়। */
+ function allowance(address owner, address spender) external view returns (uint256);
+```
+
+`allowance` ফাংশন যে কাউকে কোয়েরি করে দেখতে দেয় যে একটি এডড্রেস (`owner`) অন্য একটি এডড্রেস (`spender`)-কে কী পরিমাণ অ্যালাউন্স খরচ করতে দেয়।
+
+
+
+```solidity
+ /* *
+ * @dev কলারের টোকেনের উপর `spender`-এর অ্যালাউন্স হিসেবে `amount` সেট করে।
+ *
+ * অপারেশনটি সফল হয়েছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান রিটার্ন করে।
+ *
+ * গুরুত্বপূর্ণ: সতর্ক থাকুন যে এই পদ্ধতির মাধ্যমে অ্যালাউন্স পরিবর্তন করলে এমন ঝুঁকি তৈরি হয় যে কেউ দুর্ভাগ্যজনক ট্রানজ্যাকশন অর্ডারিংয়ের মাধ্যমে পুরানো এবং নতুন উভয় অ্যালাউন্স ব্যবহার করতে পারে। এই রেস কন্ডিশন কমানোর একটি সম্ভাব্য সমাধান হলো প্রথমে স্পেন্ডারের অ্যালাউন্স 0-তে কমিয়ে আনা এবং পরে কাঙ্ক্ষিত মান সেট করা:
+ * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
+ *
+ * একটি {Approval} ইভেন্ট এমিট করে। */
+ function approve(address spender, uint256 amount) external returns (bool);
+```
+
+`approve` ফাংশন একটি অ্যালাউন্স তৈরি করে। এটি কীভাবে অপব্যবহার করা যেতে পারে সে সম্পর্কে
+মেসেজটি পড়তে ভুলবেন না। Ethereum-এ আপনি আপনার নিজের লেনদেন-এর ক্রম নিয়ন্ত্রণ করেন,
+কিন্তু আপনি অন্য লোকেদের লেনদেন কোন ক্রমে এক্সিকিউট করা হবে তা নিয়ন্ত্রণ করতে পারবেন না,
+যদি না আপনি অন্য পক্ষের লেনদেন সম্পন্ন হতে দেখার আগে আপনার নিজের লেনদেন সাবমিট না করেন।
+
+
+
+```solidity
+ /* *
+ * @dev অ্যালাউন্স মেকানিজম ব্যবহার করে `sender` থেকে `recipient`-এ `amount` টোকেন স্থানান্তর করে। এরপর কলারের অ্যালাউন্স থেকে `amount` কেটে নেওয়া হয়।
+ *
+ * অপারেশনটি সফল হয়েছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান রিটার্ন করে।
+ *
+ * একটি {Transfer} ইভেন্ট এমিট করে। */
+ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
+```
+
+অবশেষে, `transferFrom` স্পেন্ডার দ্বারা প্রকৃতপক্ষে অ্যালাউন্স খরচ করতে ব্যবহৃত হয়।
+
+
+
+```solidity
+
+ /* *
+ * @dev যখন একটি অ্যাকাউন্ট (`from`) থেকে অন্য অ্যাকাউন্টে (`to`) `value` টোকেন স্থানান্তরিত হয় তখন এমিট হয়।
+ *
+ * মনে রাখবেন যে `value` শূন্য হতে পারে। */
+ event Transfer(address indexed from, address indexed to, uint256 value);
+
+ /* *
+ * @dev যখন {approve} কলের মাধ্যমে কোনো `owner`-এর জন্য `spender`-এর অ্যালাউন্স সেট করা হয় তখন এমিট হয়। `value` হলো নতুন অ্যালাউন্স। */
+ event Approval(address indexed owner, address indexed spender, uint256 value);
+}
+```
+
+ERC-20 কন্ট্রাক্টের স্টেট পরিবর্তিত হলে এই ইভেন্টগুলো এমিট করা হয়।
+
+## আসল কন্ট্রাক্ট {#the-actual-contract}
+
+এটি হলো আসল কন্ট্রাক্ট যা ERC-20 স্ট্যান্ডার্ড ইমপ্লিমেন্ট করে,
+[এখান থেকে নেওয়া হয়েছে](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)।
+এটি যেমন আছে তেমন ব্যবহার করার উদ্দেশ্যে নয়, তবে আপনি
+এটিকে ব্যবহারযোগ্য কিছুতে প্রসারিত করতে এটি থেকে [ইনহেরিট](https://www.tutorialspoint.com/solidity/solidity_inheritance.htm) করতে পারেন।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >=0.6.0 <0.8.0;
+```
+
+
+
+### ইমপোর্ট স্টেটমেন্টস {#import-statements}
+
+উপরের ইন্টারফেস ডেফিনিশনগুলো ছাড়াও, কন্ট্রাক্ট ডেফিনিশন আরও দুটি ফাইল ইমপোর্ট করে:
+
+```solidity
+
+import "../../GSN/Context.sol";
+import "./IERC20.sol";
+import "../../math/SafeMath.sol";
+```
+
+- `GSN/Context.sol` হলো [OpenGSN](https://www.opengsn.org/) ব্যবহার করার জন্য প্রয়োজনীয় ডেফিনিশন, এটি এমন একটি সিস্টেম যা ইথার ছাড়া ব্যবহারকারীদের ব্লকচেইন ব্যবহার করতে দেয়। মনে রাখবেন যে এটি একটি পুরোনো সংস্করণ, আপনি যদি OpenGSN-এর সাথে ইন্টিগ্রেট করতে চান তবে
+ [এই টিউটোরিয়ালটি ব্যবহার করুন](https://docs.opengsn.org/javascript-client/tutorial.html)।
+- [SafeMath লাইব্রেরি](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/), যা Solidity সংস্করণ **<0.8.0**-এর জন্য
+ অ্যারিথমেটিক ওভারফ্লো/আন্ডারফ্লো প্রতিরোধ করে। Solidity ≥0.8.0-এ, অ্যারিথমেটিক অপারেশনগুলো ওভারফ্লো/আন্ডারফ্লোতে স্বয়ংক্রিয়ভাবে
+ রিভার্ট হয়, যা SafeMath-কে অপ্রয়োজনীয় করে তোলে। এই কন্ট্রাক্টটি পুরোনো কম্পাইলার সংস্করণগুলোর সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটির জন্য
+ SafeMath ব্যবহার করে।
+
+
+
+এই কমেন্টটি কন্ট্রাক্টের উদ্দেশ্য ব্যাখ্যা করে।
+
+```solidity
+/* *
+ * @dev {IERC20} ইন্টারফেসের ইমপ্লিমেন্টেশন।
+ *
+ * এই ইমপ্লিমেন্টেশনটি টোকেন তৈরির পদ্ধতির প্রতি অজ্ঞেয়বাদী। এর মানে হলো {_mint} ব্যবহার করে একটি ডিরাইভড কন্ট্রাক্টে সাপ্লাই মেকানিজম যোগ করতে হবে। একটি জেনেরিক মেকানিজমের জন্য {ERC20PresetMinterPauser} দেখুন।
+ *
+ * টিপ: বিস্তারিত লেখার জন্য আমাদের গাইড দেখুন
+ * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
+ * to implement supply mechanisms]।
+ *
+ * আমরা সাধারণ OpenZeppelin নির্দেশিকা অনুসরণ করেছি: ফাংশনগুলো ব্যর্থ হলে `false` রিটার্ন করার পরিবর্তে রিভার্ট করে। এই আচরণটি প্রচলিত এবং ERC20 অ্যাপ্লিকেশনের প্রত্যাশার সাথে সাংঘর্ষিক নয়।
+ *
+ * উপরন্তু, {transferFrom} কল করার সময় একটি {Approval} ইভেন্ট এমিট হয়। এটি অ্যাপ্লিকেশনগুলোকে শুধুমাত্র উক্ত ইভেন্টগুলো শুনে সমস্ত অ্যাকাউন্টের জন্য অ্যালাউন্স পুনর্গঠন করতে দেয়। EIP-এর অন্যান্য ইমপ্লিমেন্টেশন এই ইভেন্টগুলো এমিট নাও করতে পারে, কারণ এটি স্পেসিফিকেশন দ্বারা প্রয়োজনীয় নয়।
+ *
+ * পরিশেষে, অ্যালাউন্স সেট করার সুপরিচিত সমস্যাগুলো কমানোর জন্য নন-স্ট্যান্ডার্ড {decreaseAllowance} এবং {increaseAllowance} ফাংশনগুলো যোগ করা হয়েছে। {IERC20-approve} দেখুন। */
+
+```
+
+### কন্ট্রাক্ট ডেফিনিশন {#contract-definition}
+
+```solidity
+contract ERC20 is Context, IERC20 {
+```
+
+এই লাইনটি ইনহেরিটেন্স নির্দিষ্ট করে, এই ক্ষেত্রে উপরের `IERC20` থেকে এবং OpenGSN-এর জন্য `Context` থেকে।
+
+
+
+```solidity
+
+ using SafeMath for uint256;
+
+```
+
+এই লাইনটি `SafeMath` লাইব্রেরিকে `uint256` টাইপের সাথে যুক্ত করে। আপনি এই লাইব্রেরিটি
+[এখানে](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol) খুঁজে পেতে পারেন।
+
+### ভেরিয়েবল ডেফিনিশন {#variable-definitions}
+
+এই ডেফিনিশনগুলো কন্ট্রাক্টের স্টেট ভেরিয়েবলগুলো নির্দিষ্ট করে। এই ভেরিয়েবলগুলো `private` হিসেবে ডিক্লেয়ার করা হয়, তবে
+এর অর্থ কেবল এই যে ব্লকচেইন-এর অন্যান্য কন্ট্রাক্টগুলো এগুলো পড়তে পারে না। _ব্লকচেইন-এ কোনো
+গোপনীয়তা নেই_, প্রতিটি নোড-এর সফটওয়্যারে প্রতিটি ব্লক-এ প্রতিটি কন্ট্রাক্টের স্টেট থাকে।
+প্রথা অনুযায়ী, স্টেট ভেরিয়েবলগুলোর নাম `_` রাখা হয়।
+
+প্রথম দুটি ভেরিয়েবল হলো [ম্যাপিং](https://www.tutorialspoint.com/solidity/solidity_mappings.htm),
+যার অর্থ এগুলো মোটামুটি [অ্যাসোসিয়েটিভ অ্যারে](https://wikipedia.org/wiki/Associative_array)-এর মতোই আচরণ করে,
+তবে পার্থক্য হলো কি (key) গুলো নিউমেরিক ভ্যালু। স্টোরেজ শুধুমাত্র সেই এন্ট্রিগুলোর জন্য বরাদ্দ করা হয় যেগুলোর মান ডিফল্ট (শূন্য) থেকে আলাদা।
+
+```solidity
+ mapping (address => uint256) private _balances;
+```
+
+প্রথম ম্যাপিং, `_balances`, হলো এডড্রেস এবং এই টোকেনের তাদের নিজ নিজ ব্যালেন্স। ব্যালেন্স অ্যাক্সেস করতে,
+এই সিনট্যাক্সটি ব্যবহার করুন: `_balances[]`।
+
+
+
+```solidity
+ mapping (address => mapping (address => uint256)) private _allowances;
+```
+
+এই ভেরিয়েবল, `_allowances`, আগে ব্যাখ্যা করা অ্যালাউন্সগুলো স্টোর করে। প্রথম ইনডেক্সটি হলো টোকেনগুলোর মালিক,
+এবং দ্বিতীয়টি হলো অ্যালাউন্সসহ কন্ট্রাক্ট। এডড্রেস A এডড্রেস B-এর একাউন্ট থেকে যে পরিমাণ খরচ করতে পারে তা
+অ্যাক্সেস করতে, `_allowances[B][A]` ব্যবহার করুন।
+
+
+
+```solidity
+ uint256 private _totalSupply;
+```
+
+নাম থেকেই বোঝা যায়, এই ভেরিয়েবলটি টোকেনের মোট সরবরাহের ট্র্যাক রাখে।
+
+
+
+```solidity
+ string private _name;
+ string private _symbol;
+ uint8 private _decimals;
+```
+
+এই তিনটি ভেরিয়েবল রিডেবিলিটি উন্নত করতে ব্যবহৃত হয়। প্রথম দুটি স্বয়ংসম্পূর্ণ, কিন্তু `_decimals` নয়।
+
+একদিকে, Ethereum-এ ফ্লোটিং পয়েন্ট বা ফ্র্যাকশনাল ভেরিয়েবল নেই। অন্যদিকে,
+মানুষ টোকেন ভাগ করতে সক্ষম হতে পছন্দ করে। মুদ্রার জন্য মানুষ সোনা বেছে নেওয়ার একটি কারণ ছিল যে
+যখন কেউ একটি হাঁসের মূল্যের গরু কিনতে চাইত তখন খুচরা করা কঠিন ছিল।
+
+এর সমাধান হলো ইন্টিজারগুলোর ট্র্যাক রাখা, তবে আসল টোকেনের পরিবর্তে একটি ফ্র্যাকশনাল টোকেন গণনা করা যা
+প্রায় মূল্যহীন। ইথারের ক্ষেত্রে, ফ্র্যাকশনাল টোকেনটিকে wei বলা হয় এবং 10^18 wei হলো এক
+ETH-এর সমান। লেখার সময়, 10,000,000,000,000 wei হলো প্রায় এক ইউএস বা ইউরো সেন্ট।
+
+অ্যাপ্লিকেশনগুলোকে জানতে হবে কীভাবে টোকেন ব্যালেন্স প্রদর্শন করতে হয়। যদি কোনো ব্যবহারকারীর 3,141,000,000,000,000,000 wei থাকে, তবে তা কি
+3.14 ETH? 31.41 ETH? 3,141 ETH? ইথারের ক্ষেত্রে এটি ETH-এর জন্য 10^18 wei হিসেবে সংজ্ঞায়িত করা হয়েছে, তবে আপনার
+টোকেনের জন্য আপনি একটি ভিন্ন মান নির্বাচন করতে পারেন। যদি টোকেন ভাগ করা অর্থপূর্ণ না হয়, তবে আপনি একটি
+`_decimals` মান শূন্য ব্যবহার করতে পারেন। আপনি যদি ETH-এর মতো একই স্ট্যান্ডার্ড ব্যবহার করতে চান, তবে মান **18** ব্যবহার করুন।
+
+### কনস্ট্রাক্টর {#the-constructor}
+
+```solidity
+ /* *
+ * @dev {name} এবং {symbol}-এর মান সেট করে, 18-এর ডিফল্ট মান দিয়ে {decimals} ইনিশিয়ালাইজ করে।
+ *
+ * {decimals}-এর জন্য একটি ভিন্ন মান নির্বাচন করতে, {_setupDecimals} ব্যবহার করুন।
+ *
+ * এই তিনটি মানই অপরিবর্তনীয়: এগুলো শুধুমাত্র কনস্ট্রাকশনের সময় একবার সেট করা যেতে পারে। */
+ constructor (string memory name_, string memory symbol_) public {
+ // Solidity ≥0.7.0-এ, 'public' ইমপ্লিসিট এবং বাদ দেওয়া যেতে পারে।
+
+ _name = name_;
+ _symbol = symbol_;
+ _decimals = 18;
+ }
+```
+
+কন্ট্রাক্টটি প্রথম তৈরি হওয়ার সময় কনস্ট্রাক্টর কল করা হয়। প্রথা অনুযায়ী, ফাংশন প্যারামিটারগুলোর নাম `_` রাখা হয়।
+
+### ইউজার ইন্টারফেস ফাংশন {#user-interface-functions}
+
+```solidity
+ /* *
+ * @dev টোকেনের নাম রিটার্ন করে। */
+ function name() public view returns (string memory) {
+ return _name;
+ }
+
+ /* *
+ * @dev টোকেনের প্রতীক রিটার্ন করে, সাধারণত নামের একটি ছোট সংস্করণ। */
+ function symbol() public view returns (string memory) {
+ return _symbol;
+ }
+
+ /* *
+ * @dev এর ইউজার রিপ্রেজেন্টেশন পেতে ব্যবহৃত ডেসিমালের সংখ্যা রিটার্ন করে। উদাহরণস্বরূপ, যদি `decimals` `2` এর সমান হয়, তবে `505` টোকেনের ব্যালেন্স একজন ব্যবহারকারীকে `5,05` (`505 / 10 ** 2`) হিসেবে দেখানো উচিত।
+ *
+ * ইথার এবং ওয়েই-এর মধ্যকার সম্পর্ক অনুকরণ করে টোকেনগুলো সাধারণত 18 মান বেছে নেয়। এটি সেই মান যা {ERC20} ব্যবহার করে, যদি না {_setupDecimals} কল করা হয়।
+ *
+ * দ্রষ্টব্য: এই তথ্যটি শুধুমাত্র _display_ বা প্রদর্শনের উদ্দেশ্যে ব্যবহৃত হয়: এটি কোনোভাবেই {IERC20-balanceOf} এবং {IERC20-transfer} সহ কন্ট্রাক্টের কোনো গাণিতিক হিসাবকে প্রভাবিত করে না। */
+ function decimals() public view returns (uint8) {
+ return _decimals;
+ }
+```
+
+এই ফাংশনগুলো, `name`, `symbol` এবং `decimals` ইউজার ইন্টারফেসগুলোকে আপনার কন্ট্রাক্ট সম্পর্কে জানতে সাহায্য করে যাতে তারা এটি সঠিকভাবে প্রদর্শন করতে পারে।
+
+রিটার্ন টাইপ হলো `string memory`, যার অর্থ মেমোরিতে স্টোর করা একটি স্ট্রিং রিটার্ন করা। ভেরিয়েবলগুলো, যেমন
+স্ট্রিং, তিনটি লোকেশনে স্টোর করা যেতে পারে:
+
+| | লাইফটাইম | কন্ট্রাক্ট অ্যাক্সেস | গ্যাস খরচ |
+| -------- | ----------------------- | -------------------- | --------------------------------------------------------------------------- |
+| Memory | ফাংশন কল | রিড/রাইট | দশ বা শত (উচ্চতর লোকেশনের জন্য বেশি) |
+| Calldata | ফাংশন কল | শুধুমাত্র রিড | রিটার্ন টাইপ হিসেবে ব্যবহার করা যাবে না, শুধুমাত্র ফাংশন প্যারামিটার টাইপ |
+| Storage | পরিবর্তন না হওয়া পর্যন্ত | রিড/রাইট | বেশি (রিডের জন্য 800, রাইটের জন্য 20k) |
+
+এই ক্ষেত্রে, `memory` হলো সেরা পছন্দ।
+
+### টোকেন তথ্য পড়া {#read-token-information}
+
+এগুলো হলো এমন ফাংশন যা টোকেন সম্পর্কে তথ্য প্রদান করে, তা মোট সরবরাহ হোক বা কোনো
+একাউন্ট-এর ব্যালেন্স।
+
+```solidity
+ /* *
+ * @dev {IERC20-totalSupply} দেখুন। */
+ function totalSupply() public view override returns (uint256) {
+ return _totalSupply;
+ }
+```
+
+`totalSupply` ফাংশন টোকেনের মোট সরবরাহ রিটার্ন করে।
+
+
+
+```solidity
+ /* *
+ * @dev {IERC20-balanceOf} দেখুন। */
+ function balanceOf(address account) public view override returns (uint256) {
+ return _balances[account];
+ }
+```
+
+একটি একাউন্ট-এর ব্যালেন্স পড়া। মনে রাখবেন যে যে কাউকে অন্য কারও একাউন্ট
+ব্যালেন্স পাওয়ার অনুমতি দেওয়া হয়েছে। এই তথ্য লুকানোর চেষ্টা করার কোনো মানে নেই, কারণ এটি যেকোনোভাবেই প্রতিটি
+নোড-এ উপলব্ধ। _ব্লকচেইন-এ কোনো গোপনীয়তা নেই।_
+
+### টোকেন ট্রান্সফার {#transfer-tokens}
+
+```solidity
+ /* *
+ * @dev {IERC20-transfer} দেখুন।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `recipient` জিরো অ্যাড্রেস হতে পারে না।
+ * - কলারের ব্যালেন্স কমপক্ষে `amount` হতে হবে। */
+ function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
+```
+
+`transfer` ফাংশনটি প্রেরকের একাউন্ট থেকে অন্য একটিতে টোকেন ট্রান্সফার করতে কল করা হয়। মনে রাখবেন
+যে যদিও এটি একটি বুলিয়ান মান রিটার্ন করে, সেই মানটি সর্বদা **true** হয়। যদি ট্রান্সফার
+ব্যর্থ হয় তবে কন্ট্রাক্টটি কলটি রিভার্ট করে।
+
+
+
+```solidity
+ _transfer(_msgSender(), recipient, amount);
+ return true;
+ }
+```
+
+`_transfer` ফাংশনটি আসল কাজ করে। এটি একটি প্রাইভেট ফাংশন যা শুধুমাত্র
+অন্যান্য কন্ট্রাক্ট ফাংশন দ্বারা কল করা যেতে পারে। প্রথা অনুযায়ী প্রাইভেট ফাংশনগুলোর নাম `_` রাখা হয়, স্টেট
+ভেরিয়েবলগুলোর মতোই।
+
+সাধারণত Solidity-তে আমরা মেসেজ প্রেরকের জন্য `msg.sender` ব্যবহার করি। তবে, এটি
+[OpenGSN](http://opengsn.org/)-কে ব্রেক করে। আমরা যদি আমাদের টোকেনের সাথে ইথারলেস লেনদেন-এর অনুমতি দিতে চাই, তবে আমাদের
+`_msgSender()` ব্যবহার করতে হবে। এটি সাধারণ লেনদেন-এর জন্য `msg.sender` রিটার্ন করে, কিন্তু ইথারলেস লেনদেনের জন্য
+আসল সাইনারকে রিটার্ন করে এবং মেসেজ রিলে করা কন্ট্রাক্টকে নয়।
+
+### অ্যালাউন্স ফাংশন {#allowance-functions}
+
+এগুলো হলো সেই ফাংশন যা অ্যালাউন্স কার্যকারিতা ইমপ্লিমেন্ট করে: `allowance`, `approve`, `transferFrom`
+এবং `_approve`। উপরন্তু, OpenZeppelin ইমপ্লিমেন্টেশন বেসিক স্ট্যান্ডার্ডের বাইরে গিয়ে কিছু ফিচার অন্তর্ভুক্ত করে যা
+নিরাপত্তা উন্নত করে: `increaseAllowance` এবং `decreaseAllowance`।
+
+#### allowance ফাংশন {#allowance}
+
+```solidity
+ /* *
+ * @dev {IERC20-allowance} দেখুন। */
+ function allowance(address owner, address spender) public view virtual override returns (uint256) {
+ return _allowances[owner][spender];
+ }
+```
+
+`allowance` ফাংশন সবাইকে যেকোনো অ্যালাউন্স চেক করার অনুমতি দেয়।
+
+#### approve ফাংশন {#approve}
+
+```solidity
+ /* *
+ * @dev {IERC20-approve} দেখুন।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `spender` জিরো অ্যাড্রেস হতে পারে না। */
+ function approve(address spender, uint256 amount) public virtual override returns (bool) {
+```
+
+এই ফাংশনটি একটি অ্যালাউন্স তৈরি করতে কল করা হয়। এটি উপরের `transfer` ফাংশনের মতোই:
+
+- ফাংশনটি শুধু একটি ইন্টারনাল ফাংশন (এই ক্ষেত্রে, `_approve`) কল করে যা আসল কাজ করে।
+- ফাংশনটি হয় `true` রিটার্ন করে (যদি সফল হয়) অথবা রিভার্ট করে (যদি না হয়)।
+
+
+
+```solidity
+ _approve(_msgSender(), spender, amount);
+ return true;
+ }
+```
+
+আমরা স্টেট পরিবর্তন হওয়ার জায়গাগুলোর সংখ্যা কমানোর জন্য ইন্টারনাল ফাংশন ব্যবহার করি। স্টেট পরিবর্তন করে এমন _যেকোনো_ ফাংশন হলো একটি সম্ভাব্য নিরাপত্তা ঝুঁকি যা নিরাপত্তার জন্য অডিট করা প্রয়োজন। এইভাবে আমাদের ভুল করার সম্ভাবনা কম থাকে।
+
+#### transferFrom ফাংশন {#transferFrom}
+
+এটি হলো সেই ফাংশন যা একজন স্পেন্ডার একটি অ্যালাউন্স খরচ করতে কল করে। এর জন্য দুটি অপারেশন প্রয়োজন: খরচ করা পরিমাণ
+ট্রান্সফার করা এবং সেই পরিমাণ দ্বারা অ্যালাউন্স কমানো।
+
+```solidity
+ /* *
+ * @dev {IERC20-transferFrom} দেখুন।
+ *
+ * আপডেট করা অ্যালাউন্স নির্দেশ করে একটি {Approval} ইভেন্ট এমিট করে। এটি EIP দ্বারা প্রয়োজনীয় নয়। {ERC20}-এর শুরুতে থাকা নোটটি দেখুন।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `sender` এবং `recipient` জিরো অ্যাড্রেস হতে পারে না।
+ * - `sender`-এর ব্যালেন্স কমপক্ষে `amount` হতে হবে।
+ * - কলারের কাছে ``sender``-এর টোকেনের জন্য কমপক্ষে `amount` অ্যালাউন্স থাকতে হবে। */
+ function transferFrom(address sender, address recipient, uint256 amount) public virtual
+ override returns (bool) {
+ _transfer(sender, recipient, amount);
+```
+
+
+
+`a.sub(b, "message")` ফাংশন কল দুটি কাজ করে। প্রথমত, এটি `a-b` গণনা করে, যা হলো নতুন অ্যালাউন্স।
+দ্বিতীয়ত, এটি চেক করে যে এই ফলাফলটি নেগেটিভ নয়। যদি এটি নেগেটিভ হয় তবে কলটি প্রদত্ত মেসেজের সাথে রিভার্ট হয়। মনে রাখবেন যে যখন কোনো কল রিভার্ট হয় তখন সেই কলের সময় আগে করা যেকোনো প্রসেসিং উপেক্ষা করা হয় তাই আমাদের
+`_transfer` আনডু করার প্রয়োজন নেই।
+
+```solidity
+ _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
+ "ERC20: transfer amount exceeds allowance"));
+ return true;
+ }
+```
+
+#### OpenZeppelin নিরাপত্তা সংযোজন {#openzeppelin-safety-additions}
+
+একটি নন-জিরো অ্যালাউন্সকে অন্য একটি নন-জিরো মানে সেট করা বিপজ্জনক,
+কারণ আপনি শুধুমাত্র আপনার নিজের লেনদেন-এর ক্রম নিয়ন্ত্রণ করেন, অন্য কারও নয়। কল্পনা করুন আপনার
+দুজন ব্যবহারকারী আছে, অ্যালিস যে সহজ-সরল এবং বিল যে অসৎ। অ্যালিস বিলের কাছ থেকে কিছু পরিষেবা চায়,
+যার দাম সে মনে করে পাঁচটি টোকেন - তাই সে বিলকে পাঁচটি টোকেনের একটি অ্যালাউন্স দেয়।
+
+তারপর কিছু পরিবর্তন হয় এবং বিলের দাম বেড়ে দশটি টোকেন হয়। অ্যালিস, যে এখনও পরিষেবাটি চায়,
+একটি লেনদেন পাঠায় যা বিলের অ্যালাউন্স দশে সেট করে। বিল যখন লেনদেন পুলে এই নতুন লেনদেনটি
+দেখে তখন সে একটি লেনদেন পাঠায় যা অ্যালিসের পাঁচটি টোকেন খরচ করে এবং এর গ্যাস প্রাইস অনেক
+বেশি থাকে যাতে এটি দ্রুত মাইন করা যায়। এইভাবে বিল প্রথমে পাঁচটি টোকেন খরচ করতে পারে এবং তারপর,
+অ্যালিসের নতুন অ্যালাউন্স মাইন হওয়ার পর, আরও দশটি খরচ করতে পারে মোট পনেরোটি টোকেনের জন্য, যা
+অ্যালিস অনুমোদন করতে চেয়েছিল তার চেয়ে বেশি। এই কৌশলটিকে
+[ফ্রন্ট-রানিং](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/#front-running) বলা হয়।
+
+| অ্যালিস লেনদেন | অ্যালিস নন্স | বিল লেনদেন | বিল নন্স | বিলের অ্যালাউন্স | অ্যালিস থেকে বিলের মোট আয় |
+| ----------------- | ------------ | ----------------------------- | -------- | ---------------- | -------------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 |
+| approve(Bill, 10) | 11 | | | 10 | 5 |
+| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 15 |
+
+এই সমস্যা এড়াতে, এই দুটি ফাংশন (`increaseAllowance` এবং `decreaseAllowance`) আপনাকে
+একটি নির্দিষ্ট পরিমাণ দ্বারা অ্যালাউন্স পরিবর্তন করার অনুমতি দেয়। তাই যদি বিল ইতিমধ্যে পাঁচটি টোকেন খরচ করে থাকে, তবে সে শুধু
+আরও পাঁচটি খরচ করতে পারবে। টাইমিংয়ের ওপর নির্ভর করে, এটি দুটি উপায়ে কাজ করতে পারে, যার
+দুটিতেই বিল শুধুমাত্র দশটি টোকেন পায়:
+
+A:
+
+| অ্যালিস লেনদেন | অ্যালিস নন্স | বিল লেনদেন | বিল নন্স | বিলের অ্যালাউন্স | অ্যালিস থেকে বিলের মোট আয় |
+| -------------------------- | -----------: | ---------------------------- | -------: | ---------------: | -------------------------- |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| | | transferFrom(Alice, Bill, 5) | 10,123 | 0 | 5 |
+| increaseAllowance(Bill, 5) | 11 | | | 0+5 = 5 | 5 |
+| | | transferFrom(Alice, Bill, 5) | 10,124 | 0 | 10 |
+
+B:
+
+| অ্যালিস লেনদেন | অ্যালিস নন্স | বিল লেনদেন | বিল নন্স | বিলের অ্যালাউন্স | অ্যালিস থেকে বিলের মোট আয় |
+| -------------------------- | -----------: | ----------------------------- | -------: | ---------------: | -------------------------: |
+| approve(Bill, 5) | 10 | | | 5 | 0 |
+| increaseAllowance(Bill, 5) | 11 | | | 5+5 = 10 | 0 |
+| | | transferFrom(Alice, Bill, 10) | 10,124 | 0 | 10 |
+
+```solidity
+ /* *
+ * @dev কলার দ্বারা `spender`-কে দেওয়া অ্যালাউন্স অ্যাটমিকভাবে বৃদ্ধি করে।
+ *
+ * এটি {approve}-এর একটি বিকল্প যা {IERC20-approve}-এ বর্ণিত সমস্যাগুলো কমানোর জন্য ব্যবহার করা যেতে পারে।
+ *
+ * আপডেট করা অ্যালাউন্স নির্দেশ করে একটি {Approval} ইভেন্ট এমিট করে।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `spender` জিরো অ্যাড্রেস হতে পারে না। */
+ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
+ return true;
+ }
+```
+
+`a.add(b)` ফাংশনটি একটি নিরাপদ যোগ। অসম্ভাব্য ক্ষেত্রে যে `a`+`b`>=`2^256` এটি সাধারণ যোগের মতো র্যাপ অ্যারাউন্ড
+করে না।
+
+```solidity
+
+ /* *
+ * @dev কলার দ্বারা `spender`-কে দেওয়া অ্যালাউন্স অ্যাটমিকভাবে হ্রাস করে।
+ *
+ * এটি {approve}-এর একটি বিকল্প যা {IERC20-approve}-এ বর্ণিত সমস্যাগুলো কমানোর জন্য ব্যবহার করা যেতে পারে।
+ *
+ * আপডেট করা অ্যালাউন্স নির্দেশ করে একটি {Approval} ইভেন্ট এমিট করে।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `spender` জিরো অ্যাড্রেস হতে পারে না।
+ * - কলারের জন্য `spender`-এর কমপক্ষে `subtractedValue` অ্যালাউন্স থাকতে হবে। */
+ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
+ _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue,
+ "ERC20: decreased allowance below zero"));
+ return true;
+ }
+```
+
+### টোকেন তথ্য পরিবর্তনকারী ফাংশন {#functions-that-modify-token-information}
+
+এই চারটি ফাংশন আসল কাজ করে: `_transfer`, `_mint`, `_burn` এবং `_approve`।
+
+#### _transfer ফাংশন {#_transfer}
+
+```solidity
+ /* *
+ * @dev `sender` থেকে `recipient`-এ `amount` টোকেন স্থানান্তর করে।
+ *
+ * এই ইন্টারনাল ফাংশনটি {transfer}-এর সমতুল্য, এবং এটি যেমন স্বয়ংক্রিয় টোকেন ফি, স্ল্যাশিং মেকানিজম ইত্যাদি ইমপ্লিমেন্ট করতে ব্যবহার করা যেতে পারে।
+ *
+ * একটি {Transfer} ইভেন্ট এমিট করে।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `sender` জিরো অ্যাড্রেস হতে পারে না।
+ * - `recipient` জিরো অ্যাড্রেস হতে পারে না।
+ * - `sender`-এর ব্যালেন্স কমপক্ষে `amount` হতে হবে। */
+ function _transfer(address sender, address recipient, uint256 amount) internal virtual {
+```
+
+এই ফাংশন, `_transfer`, এক একাউন্ট থেকে অন্য একাউন্টে টোকেন ট্রান্সফার করে। এটি `transfer` (প্রেরকের নিজের একাউন্ট থেকে ট্রান্সফারের জন্য) এবং `transferFrom` (অন্য কারও একাউন্ট থেকে ট্রান্সফার করতে অ্যালাউন্স ব্যবহার করার জন্য) উভয়ের দ্বারাই কল করা হয়।
+
+
+
+```solidity
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
+```
+
+Ethereum-এ আসলে কেউ জিরো এডড্রেস-এর মালিক নয় (অর্থাৎ, কেউ এমন কোনো প্রাইভেট কি জানে না যার ম্যাচিং পাবলিক কি
+জিরো এডড্রেস-এ রূপান্তরিত হয়)। যখন লোকেরা সেই এডড্রেস ব্যবহার করে, তখন এটি সাধারণত একটি সফটওয়্যার বাগ হয় - তাই
+জিরো এডড্রেস প্রেরক বা প্রাপক হিসেবে ব্যবহৃত হলে আমরা ব্যর্থ হই।
+
+
+
+```solidity
+ _beforeTokenTransfer(sender, recipient, amount);
+
+```
+
+এই কন্ট্রাক্টটি ব্যবহার করার দুটি উপায় রয়েছে:
+
+1. আপনার নিজের কোডের জন্য এটি একটি টেমপ্লেট হিসেবে ব্যবহার করুন
+1. [এটি থেকে ইনহেরিট করুন](https://www.bitdegree.org/learn/solidity-inheritance), এবং শুধুমাত্র সেই ফাংশনগুলো ওভাররাইড করুন যা আপনার পরিবর্তন করা প্রয়োজন
+
+দ্বিতীয় পদ্ধতিটি অনেক ভালো কারণ OpenZeppelin ERC-20 কোড ইতিমধ্যে অডিট করা হয়েছে এবং নিরাপদ হিসেবে দেখানো হয়েছে। আপনি যখন ইনহেরিটেন্স
+ব্যবহার করেন তখন এটি স্পষ্ট হয় যে আপনি কোন ফাংশনগুলো পরিবর্তন করেছেন এবং আপনার কন্ট্রাক্টকে বিশ্বাস করার জন্য লোকেদের শুধুমাত্র সেই নির্দিষ্ট ফাংশনগুলো অডিট করতে হবে।
+
+প্রতিবার টোকেন হাতবদল হওয়ার সময় একটি ফাংশন সম্পাদন করা প্রায়শই দরকারী। তবে, `_transfer` একটি অত্যন্ত গুরুত্বপূর্ণ ফাংশন এবং এটি
+অনিরাপদভাবে লেখা সম্ভব (নিচে দেখুন), তাই এটি ওভাররাইড না করাই ভালো। এর সমাধান হলো `_beforeTokenTransfer`, একটি
+[হুক ফাংশন](https://wikipedia.org/wiki/Hooking)। আপনি এই ফাংশনটি ওভাররাইড করতে পারেন এবং প্রতিটি ট্রান্সফারে এটি কল করা হবে।
+
+
+
+```solidity
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
+ _balances[recipient] = _balances[recipient].add(amount);
+```
+
+এই লাইনগুলোই আসলে ট্রান্সফার করে। মনে রাখবেন যে এগুলোর মধ্যে **কিছুই** নেই এবং আমরা প্রাপকের সাথে যোগ করার আগে প্রেরকের কাছ থেকে ট্রান্সফার করা পরিমাণ বিয়োগ করি। এটি গুরুত্বপূর্ণ কারণ যদি মাঝখানে অন্য কোনো কন্ট্রাক্টে কল করা হতো, তবে এটি এই কন্ট্রাক্টকে প্রতারণা করতে ব্যবহার করা যেতে পারত। এইভাবে ট্রান্সফারটি অ্যাটমিক হয়, এর মাঝখানে কিছুই ঘটতে পারে না।
+
+
+
+```solidity
+ emit Transfer(sender, recipient, amount);
+ }
+```
+
+অবশেষে, একটি `Transfer` ইভেন্ট এমিট করুন। ইভেন্টগুলো স্মার্ট কন্ট্রাক্ট-এর কাছে অ্যাক্সেসযোগ্য নয়, তবে ব্লকচেইন-এর বাইরে চলা কোড
+ইভেন্টগুলোর জন্য শুনতে পারে এবং সেগুলোতে প্রতিক্রিয়া জানাতে পারে। উদাহরণস্বরূপ, মালিক কখন আরও টোকেন পায় তার ট্র্যাক একটি ওয়ালেট রাখতে পারে।
+
+#### _mint এবং _burn ফাংশন {#_mint-and-_burn}
+
+এই দুটি ফাংশন (`_mint` এবং `_burn`) টোকেনের মোট সরবরাহ পরিবর্তন করে।
+এগুলো ইন্টারনাল এবং এই কন্ট্রাক্টে এমন কোনো ফাংশন নেই যা এগুলোকে কল করে,
+তাই এগুলো শুধুমাত্র তখনই দরকারী যদি আপনি কন্ট্রাক্ট থেকে ইনহেরিট করেন এবং কোন শর্তে নতুন টোকেন মিন্ট করতে হবে বা বিদ্যমানগুলো বার্ন করতে হবে তা সিদ্ধান্ত নিতে আপনার নিজস্ব
+লজিক যোগ করেন।
+
+**দ্রষ্টব্য:** প্রতিটি ERC-20 টোকেনের নিজস্ব বিজনেস লজিক রয়েছে যা টোকেন ম্যানেজমেন্ট নির্দেশ করে।
+উদাহরণস্বরূপ, একটি ফিক্সড সাপ্লাই কন্ট্রাক্ট শুধুমাত্র কনস্ট্রাক্টরে `_mint`
+কল করতে পারে এবং কখনোই `_burn` কল করতে পারে না। টোকেন বিক্রি করে এমন একটি কন্ট্রাক্ট
+পেমেন্ট পাওয়ার সময় `_mint` কল করবে এবং সম্ভবত রানঅ্যাওয়ে ইনফ্লেশন এড়াতে কোনো এক পর্যায়ে `_burn` কল করবে।
+
+```solidity
+ /* * @dev `amount` টোকেন তৈরি করে এবং সেগুলোকে `account`-এ বরাদ্দ করে, মোট সাপ্লাই বৃদ্ধি করে।
+ *
+ * `from` জিরো অ্যাড্রেসে সেট করে একটি {Transfer} ইভেন্ট এমিট করে।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `to` জিরো অ্যাড্রেস হতে পারে না। */
+ function _mint(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: mint to the zero address");
+ _beforeTokenTransfer(address(0), account, amount);
+ _totalSupply = _totalSupply.add(amount);
+ _balances[account] = _balances[account].add(amount);
+ emit Transfer(address(0), account, amount);
+ }
+```
+
+টোকেনের মোট সংখ্যা পরিবর্তিত হলে `_totalSupply` আপডেট করতে ভুলবেন না।
+
+
+
+```solidity
+ /* *
+ * @dev `account` থেকে `amount` টোকেন ধ্বংস করে, মোট সাপ্লাই হ্রাস করে।
+ *
+ * `to` জিরো অ্যাড্রেসে সেট করে একটি {Transfer} ইভেন্ট এমিট করে।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `account` জিরো অ্যাড্রেস হতে পারে না।
+ * - `account`-এর কমপক্ষে `amount` টোকেন থাকতে হবে। */
+ function _burn(address account, uint256 amount) internal virtual {
+ require(account != address(0), "ERC20: burn from the zero address");
+
+ _beforeTokenTransfer(account, address(0), amount);
+
+ _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
+ _totalSupply = _totalSupply.sub(amount);
+ emit Transfer(account, address(0), amount);
+ }
+```
+
+`_burn` ফাংশনটি প্রায় `_mint`-এর মতোই, তবে এটি অন্য দিকে যায়।
+
+#### _approve ফাংশন {#_approve}
+
+এটি হলো সেই ফাংশন যা আসলে অ্যালাউন্সগুলো নির্দিষ্ট করে। মনে রাখবেন যে এটি একজন মালিককে এমন একটি অ্যালাউন্স নির্দিষ্ট করার অনুমতি দেয় যা মালিকের বর্তমান ব্যালেন্সের চেয়ে বেশি। এটি ঠিক আছে কারণ ট্রান্সফারের সময় ব্যালেন্স চেক করা হয়, যখন এটি অ্যালাউন্স তৈরি হওয়ার সময়ের ব্যালেন্স থেকে আলাদা হতে পারে।
+
+```solidity
+ /* *
+ * @dev `owner`-এর টোকেনের উপর `spender`-এর অ্যালাউন্স হিসেবে `amount` সেট করে।
+ *
+ * এই ইন্টারনাল ফাংশনটি `approve`-এর সমতুল্য, এবং এটি যেমন নির্দিষ্ট সাবসিস্টেমের জন্য স্বয়ংক্রিয় অ্যালাউন্স সেট করতে ইত্যাদি কাজে ব্যবহার করা যেতে পারে।
+ *
+ * একটি {Approval} ইভেন্ট এমিট করে।
+ *
+ * প্রয়োজনীয়তা:
+ *
+ * - `owner` জিরো অ্যাড্রেস হতে পারে না।
+ * - `spender` জিরো অ্যাড্রেস হতে পারে না। */
+ function _approve(address owner, address spender, uint256 amount) internal virtual {
+ require(owner != address(0), "ERC20: approve from the zero address");
+ require(spender != address(0), "ERC20: approve to the zero address");
+
+ _allowances[owner][spender] = amount;
+```
+
+
+
+একটি `Approval` ইভেন্ট এমিট করুন। অ্যাপ্লিকেশনটি কীভাবে লেখা হয়েছে তার ওপর নির্ভর করে, স্পেন্ডার কন্ট্রাক্টকে
+মালিক দ্বারা বা এই ইভেন্টগুলো শোনে এমন একটি সার্ভার দ্বারা অনুমোদন সম্পর্কে জানানো যেতে পারে।
+
+```solidity
+ emit Approval(owner, spender, amount);
+ }
+
+```
+
+### Decimals ভেরিয়েবল পরিবর্তন করা {#modify-the-decimals-variable}
+
+```solidity
+
+
+ /* *
+ * @dev {decimals}-কে 18-এর ডিফল্ট মান ছাড়া অন্য কোনো মানে সেট করে।
+ *
+ * সতর্কতা: এই ফাংশনটি শুধুমাত্র কনস্ট্রাক্টর থেকে কল করা উচিত। টোকেন কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করা বেশিরভাগ অ্যাপ্লিকেশন আশা করবে না যে {decimals} কখনও পরিবর্তিত হবে, এবং যদি তা হয় তবে ভুলভাবে কাজ করতে পারে। */
+ function _setupDecimals(uint8 decimals_) internal {
+ _decimals = decimals_;
+ }
+```
+
+এই ফাংশনটি `_decimals` ভেরিয়েবল পরিবর্তন করে যা ইউজার ইন্টারফেসগুলোকে পরিমাণটি কীভাবে ব্যাখ্যা করতে হবে তা বলতে ব্যবহৃত হয়।
+আপনার এটি কনস্ট্রাক্টর থেকে কল করা উচিত। পরবর্তী কোনো পয়েন্টে এটি কল করা অসৎ হবে এবং অ্যাপ্লিকেশনগুলো
+এটি পরিচালনা করার জন্য ডিজাইন করা হয়নি।
+
+### হুকস {#hooks}
+
+```solidity
+
+ /* *
+ * @dev হুক যা টোকেনের যেকোনো স্থানান্তরের আগে কল করা হয়। এর মধ্যে মিন্ট করা এবং বার্ন করা অন্তর্ভুক্ত।
+ *
+ * কল করার শর্তাবলী:
+ *
+ * - যখন `from` এবং `to` উভয়ই নন-জিরো হয়, তখন ``from``-এর `amount` টোকেন `to`-তে স্থানান্তরিত হবে।
+ * - যখন `from` জিরো হয়, তখন `to`-এর জন্য `amount` টোকেন মিন্ট করা হবে।
+ * - যখন `to` জিরো হয়, তখন ``from``-এর `amount` টোকেন বার্ন করা হবে।
+ * - `from` এবং `to` কখনোই একসাথে জিরো হয় না।
+ *
+ * হুক সম্পর্কে আরও জানতে, xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]-এ যান। */
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
+}
+```
+
+এটি হলো ট্রান্সফারের সময় কল করার জন্য হুক ফাংশন। এটি এখানে খালি, তবে আপনার যদি
+এটি দিয়ে কিছু করার প্রয়োজন হয় তবে আপনি শুধু এটি ওভাররাইড করুন।
+
+## উপসংহার {#conclusion}
+
+পর্যালোচনার জন্য, এখানে এই কন্ট্রাক্টের কিছু সবচেয়ে গুরুত্বপূর্ণ ধারণা দেওয়া হলো (আমার মতে, আপনারটি ভিন্ন হতে পারে):
+
+- _ব্লকচেইন-এ কোনো গোপনীয়তা নেই_। একটি স্মার্ট কন্ট্রাক্ট অ্যাক্সেস করতে পারে এমন যেকোনো তথ্য
+ সমগ্র বিশ্বের কাছে উপলব্ধ।
+- আপনি আপনার নিজের লেনদেন-এর ক্রম নিয়ন্ত্রণ করতে পারেন, কিন্তু অন্য লোকেদের লেনদেন কখন
+ ঘটবে তা নয়। এই কারণেই একটি অ্যালাউন্স পরিবর্তন করা বিপজ্জনক হতে পারে, কারণ এটি
+ স্পেন্ডারকে উভয় অ্যালাউন্সের যোগফল খরচ করতে দেয়।
+- `uint256` টাইপের মানগুলো র্যাপ অ্যারাউন্ড করে। অন্য কথায়, _0-1=2^256-1_। যদি এটি কাঙ্ক্ষিত
+ আচরণ না হয়, তবে আপনাকে এটি চেক করতে হবে (বা SafeMath লাইব্রেরি ব্যবহার করতে হবে যা আপনার জন্য এটি করে)। মনে রাখবেন যে এটি
+ [Solidity 0.8.0](https://docs.soliditylang.org/en/breaking/080-breaking-changes.html)-এ পরিবর্তিত হয়েছে।
+- একটি নির্দিষ্ট জায়গায় একটি নির্দিষ্ট টাইপের সমস্ত স্টেট পরিবর্তন করুন, কারণ এটি অডিটিং সহজ করে তোলে।
+ এই কারণেই আমাদের কাছে, উদাহরণস্বরূপ, `_approve` রয়েছে, যা `approve`, `transferFrom`,
+ `increaseAllowance` এবং `decreaseAllowance` দ্বারা কল করা হয়
+- স্টেট পরিবর্তনগুলো অ্যাটমিক হওয়া উচিত, এগুলোর মাঝখানে অন্য কোনো অ্যাকশন ছাড়াই (যেমন আপনি
+ `_transfer`-এ দেখতে পাচ্ছেন)। এর কারণ হলো স্টেট পরিবর্তনের সময় আপনার একটি অসামঞ্জস্যপূর্ণ স্টেট থাকে। উদাহরণস্বরূপ,
+ আপনি প্রেরকের ব্যালেন্স থেকে যে সময় বিয়োগ করেন এবং প্রাপকের ব্যালেন্সে যে সময় যোগ করেন তার মধ্যে বাস্তবে যতটা টোকেন থাকা উচিত তার চেয়ে কম টোকেন থাকে। যদি এগুলোর মধ্যে কোনো অপারেশন থাকে, বিশেষ করে অন্য কোনো কন্ট্রাক্টে কল করা হয়, তবে এটি সম্ভাব্যভাবে অপব্যবহার করা যেতে পারে।
+
+এখন যেহেতু আপনি দেখেছেন কীভাবে OpenZeppelin ERC-20 কন্ট্রাক্ট লেখা হয় এবং বিশেষ করে কীভাবে এটি
+আরও নিরাপদ করা হয়, যান এবং আপনার নিজের নিরাপদ কন্ট্রাক্ট এবং অ্যাপ্লিকেশনগুলো লিখুন।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/erc20-with-safety-rails/index.md b/public/content/translations/bn/developers/tutorials/erc20-with-safety-rails/index.md
new file mode 100644
index 00000000000..a8fd9772c0b
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/erc20-with-safety-rails/index.md
@@ -0,0 +1,215 @@
+---
+title: সেফটি রেইলস সহ ERC-20
+description: মানুষকে বোকা ভুল এড়াতে কীভাবে সাহায্য করবেন
+author: ওরি পোমেরান্টজ
+lang: bn
+tags: ["erc-20"]
+skill: beginner
+breadcrumb: ERC-20 সেফটি
+published: 2022-08-15
+---
+
+## ভূমিকা {#introduction}
+
+ইথিরিয়ামের অন্যতম সেরা দিক হলো এখানে এমন কোনো কেন্দ্রীয় কর্তৃপক্ষ নেই যা আপনার লেনদেন পরিবর্তন বা বাতিল করতে পারে। আবার ইথিরিয়ামের অন্যতম বড় সমস্যা হলো এখানে এমন কোনো কেন্দ্রীয় কর্তৃপক্ষ নেই যার ব্যবহারকারীর ভুল বা অবৈধ লেনদেন বাতিল করার ক্ষমতা আছে। এই আর্টিকেলে আপনি [ERC-20](/developers/docs/standards/tokens/erc-20/) টোকেন নিয়ে ব্যবহারকারীদের করা কিছু সাধারণ ভুল সম্পর্কে জানবেন, পাশাপাশি কীভাবে এমন ERC-20 কন্ট্রাক্ট তৈরি করতে হয় যা ব্যবহারকারীদের এই ভুলগুলো এড়াতে সাহায্য করে, অথবা কোনো কেন্দ্রীয় কর্তৃপক্ষকে কিছু ক্ষমতা দেয় (উদাহরণস্বরূপ একাউন্ট ফ্রিজ করা) তা শিখবেন।
+
+মনে রাখবেন, যদিও আমরা [OpenZeppelin ERC-20 token contract](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20) ব্যবহার করব, এই আর্টিকেলে এটি বিস্তারিতভাবে ব্যাখ্যা করা হয়নি। আপনি এই তথ্য [এখানে](/developers/tutorials/erc20-annotated-code) পেতে পারেন।
+
+আপনি যদি সম্পূর্ণ সোর্স কোড দেখতে চান:
+
+1. [Remix IDE](https://remix.ethereum.org/) খুলুন।
+2. ক্লোন গিটহাব আইকনে ক্লিক করুন ()।
+3. গিটহাব রিপোজিটরি `https://github.com/qbzzt/20220815-erc20-safety-rails` ক্লোন করুন।
+4. **contracts > erc20-safety-rails.sol** খুলুন।
+
+## একটি ERC-20 কন্ট্রাক্ট তৈরি করা {#creating-an-erc-20-contract}
+
+সেফটি রেইল কার্যকারিতা যোগ করার আগে আমাদের একটি ERC-20 কন্ট্রাক্ট প্রয়োজন। এই আর্টিকেলে আমরা [the OpenZeppelin Contracts Wizard](https://docs.openzeppelin.com/contracts/5.x/wizard) ব্যবহার করব। এটি অন্য একটি ব্রাউজারে খুলুন এবং এই নির্দেশাবলী অনুসরণ করুন:
+
+1. **ERC20** নির্বাচন করুন।
+2. এই সেটিংসগুলো লিখুন:
+
+ | Parameter | Value |
+ | -------------- | ---------------- |
+ | Name | SafetyRailsToken |
+ | Symbol | SAFE |
+ | Premint | 1000 |
+ | Features | None |
+ | Access Control | Ownable |
+ | Upgradability | None |
+
+3. উপরে স্ক্রোল করুন এবং **Open in Remix** (Remix-এর জন্য) বা অন্য কোনো পরিবেশ ব্যবহার করতে **Download**-এ ক্লিক করুন। আমি ধরে নিচ্ছি আপনি Remix ব্যবহার করছেন, যদি আপনি অন্য কিছু ব্যবহার করেন তবে শুধু উপযুক্ত পরিবর্তনগুলো করে নিন।
+4. এখন আমাদের কাছে একটি সম্পূর্ণ কার্যকরী ERC-20 কন্ট্রাক্ট আছে। ইমপোর্ট করা কোড দেখতে আপনি `.deps` > `npm` প্রসারিত করতে পারেন।
+5. কন্ট্রাক্টটি কম্পাইল, ডিপ্লয় করুন এবং এটি একটি ERC-20 কন্ট্রাক্ট হিসেবে কাজ করে কিনা তা দেখতে এর সাথে কাজ করুন। আপনার যদি Remix কীভাবে ব্যবহার করতে হয় তা শেখার প্রয়োজন হয়, তবে [এই টিউটোরিয়ালটি ব্যবহার করুন](https://remix.ethereum.org/?#activate=udapp,solidity,LearnEth)।
+
+## সাধারণ ভুলগুলো {#common-mistakes}
+
+### ভুলগুলো {#the-mistakes}
+
+ব্যবহারকারীরা মাঝে মাঝে ভুল এডড্রেস-এ টোকেন পাঠিয়ে দেন। যদিও তারা কী করতে চেয়েছিলেন তা জানার জন্য আমরা তাদের মন পড়তে পারি না, তবে দুটি ধরনের ভুল আছে যা অনেক বেশি ঘটে এবং সহজেই শনাক্ত করা যায়:
+
+1. কন্ট্রাক্টের নিজস্ব এডড্রেস-এ টোকেন পাঠানো। উদাহরণস্বরূপ, [Optimism's OP token](https://optimism.mirror.xyz/qvd0WfuLKnePm1Gxb9dpGchPf5uDz5NSMEFdgirDS4c) দুই মাসেরও কম সময়ে [120,000-এর বেশি](https://optimism.blockscout.com/address/0x4200000000000000000000000000000000000042) OP টোকেন জমা করতে সক্ষম হয়েছিল। এটি একটি উল্লেখযোগ্য পরিমাণ সম্পদের প্রতিনিধিত্ব করে যা সম্ভবত মানুষ হারিয়েছে।
+
+2. একটি খালি এডড্রেস-এ টোকেন পাঠানো, যা কোনো [এক্সটার্নালি ওনড একাউন্ট](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs) বা [স্মার্ট কন্ট্রাক্ট](/developers/docs/smart-contracts)-এর সাথে মিলে না। যদিও এটি কত ঘন ঘন ঘটে তার কোনো পরিসংখ্যান আমার কাছে নেই, তবে [একটি ঘটনায় 20,000,000 টোকেন খরচ হতে পারত](https://gov.optimism.io/t/message-to-optimism-community-from-wintermute/2595)।
+
+### ট্রান্সফার প্রতিরোধ করা {#preventing-transfers}
+
+OpenZeppelin ERC-20 কন্ট্রাক্টে [একটি হুক, `_beforeTokenTransfer`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L364-L368) অন্তর্ভুক্ত রয়েছে, যা একটি টোকেন ট্রান্সফার হওয়ার আগে কল করা হয়। ডিফল্টরূপে এই হুকটি কিছুই করে না, তবে আমরা এর উপর আমাদের নিজস্ব কার্যকারিতা যুক্ত করতে পারি, যেমন কোনো সমস্যা থাকলে রিভার্ট করার জন্য চেক করা।
+
+হুকটি ব্যবহার করতে, কনস্ট্রাক্টরের পরে এই ফাংশনটি যোগ করুন:
+
+```solidity
+ function _beforeTokenTransfer(address from, address to, uint256 amount)
+ internal virtual
+ override(ERC20)
+ {
+ super._beforeTokenTransfer(from, to, amount);
+ }
+```
+
+আপনি যদি Solidity-এর সাথে খুব বেশি পরিচিত না হন তবে এই ফাংশনের কিছু অংশ নতুন মনে হতে পারে:
+
+```solidity
+ internal virtual
+```
+
+`virtual` কীওয়ার্ডের অর্থ হলো, ঠিক যেমন আমরা `ERC20` থেকে কার্যকারিতা ইনহেরিট করেছি এবং এই ফাংশনটিকে ওভাররাইড করেছি, তেমনি অন্যান্য কন্ট্রাক্টগুলোও আমাদের থেকে ইনহেরিট করতে পারে এবং এই ফাংশনটিকে ওভাররাইড করতে পারে।
+
+```solidity
+ override(ERC20)
+```
+
+আমাদের স্পষ্টভাবে উল্লেখ করতে হবে যে আমরা `_beforeTokenTransfer`-এর ERC20 টোকেন সংজ্ঞাকে [ওভাররাইড](https://docs.soliditylang.org/en/v0.8.15/contracts.html#function-overriding) করছি। সাধারণভাবে, নিরাপত্তার দৃষ্টিকোণ থেকে, ইমপ্লিসিট সংজ্ঞার চেয়ে এক্সপ্লিসিট সংজ্ঞা অনেক ভালো - আপনি যদি কোনো কিছু আপনার চোখের সামনে থাকে তবে আপনি ভুলে যেতে পারবেন না যে আপনি কিছু করেছেন। এটিও একটি কারণ যে আমাদের উল্লেখ করতে হবে আমরা কোন সুপারক্লাসের `_beforeTokenTransfer` ওভাররাইড করছি।
+
+```solidity
+ super._beforeTokenTransfer(from, to, amount);
+```
+
+এই লাইনটি সেই কন্ট্রাক্ট বা কন্ট্রাক্টগুলোর `_beforeTokenTransfer` ফাংশনকে কল করে যেখান থেকে আমরা ইনহেরিট করেছি এবং যেগুলোতে এটি আছে। এই ক্ষেত্রে, এটি শুধুমাত্র `ERC20`, `Ownable`-এ এই হুকটি নেই। যদিও বর্তমানে `ERC20._beforeTokenTransfer` কিছুই করে না, আমরা এটিকে কল করি যদি ভবিষ্যতে কোনো কার্যকারিতা যোগ করা হয় (এবং আমরা তখন কন্ট্রাক্টটি পুনরায় ডিপ্লয় করার সিদ্ধান্ত নিই, কারণ ডিপ্লয়মেন্টের পরে কন্ট্রাক্টগুলো পরিবর্তন হয় না)।
+
+### প্রয়োজনীয়তাগুলো কোডিং করা {#coding-the-requirements}
+
+আমরা ফাংশনে এই প্রয়োজনীয়তাগুলো যোগ করতে চাই:
+
+- `to` এডড্রেসটি `address(this)`-এর সমান হতে পারবে না, যা ERC-20 কন্ট্রাক্টের নিজস্ব এডড্রেস।
+- `to` এডড্রেসটি খালি হতে পারবে না, এটি হতে হবে হয়:
+ - একটি এক্সটার্নালি ওনড একাউন্ট (EOA)। আমরা সরাসরি কোনো এডড্রেস EOA কিনা তা চেক করতে পারি না, তবে আমরা একটি এডড্রেস-এর ETH ব্যালেন্স চেক করতে পারি। EOA-গুলোর প্রায় সবসময়ই একটি ব্যালেন্স থাকে, এমনকি যদি সেগুলো আর ব্যবহার করা না হয় - শেষ wei পর্যন্ত সেগুলো পরিষ্কার করা কঠিন।
+ - একটি স্মার্ট কন্ট্রাক্ট। কোনো এডড্রেস স্মার্ট কন্ট্রাক্ট কিনা তা পরীক্ষা করা একটু কঠিন। একটি অপকোড আছে যা এক্সটার্নাল কোডের দৈর্ঘ্য চেক করে, যাকে [`EXTCODESIZE`](https://www.evm.codes/#3b) বলা হয়, তবে এটি সরাসরি Solidity-তে পাওয়া যায় না। এর জন্য আমাদের [Yul](https://docs.soliditylang.org/en/v0.8.15/yul.html) ব্যবহার করতে হবে, যা হলো EVM অ্যাসেম্বলি। Solidity থেকে আমরা অন্যান্য মান ব্যবহার করতে পারি ([`.code` এবং `.codehash`](https://docs.soliditylang.org/en/v0.8.15/units-and-global-variables.html#members-of-address-types)), তবে সেগুলোর খরচ বেশি।
+
+চলুন নতুন কোডটি লাইন বাই লাইন দেখে নিই:
+
+```solidity
+ require(to != address(this), "Can't send tokens to the contract address");
+```
+
+এটি হলো প্রথম প্রয়োজনীয়তা, চেক করুন যে `to` এবং `this(address)` একই জিনিস নয়।
+
+```solidity
+ bool isToContract;
+ assembly {
+ isToContract := gt(extcodesize(to), 0)
+ }
+```
+
+এভাবেই আমরা চেক করি যে কোনো এডড্রেস একটি কন্ট্রাক্ট কিনা। আমরা সরাসরি Yul থেকে আউটপুট পেতে পারি না, তাই এর পরিবর্তে আমরা ফলাফল ধরে রাখার জন্য একটি ভেরিয়েবল সংজ্ঞায়িত করি (এই ক্ষেত্রে `isToContract`)। Yul যেভাবে কাজ করে তা হলো প্রতিটি অপকোডকে একটি ফাংশন হিসেবে বিবেচনা করা হয়। তাই প্রথমে আমরা কন্ট্রাক্টের আকার পেতে [`EXTCODESIZE`](https://www.evm.codes/#3b) কল করি, এবং তারপর এটি শূন্য নয় তা চেক করতে [`GT`](https://www.evm.codes/#11) ব্যবহার করি (আমরা আনসাইনড ইন্টিজার নিয়ে কাজ করছি, তাই অবশ্যই এটি নেগেটিভ হতে পারে না)। এরপর আমরা ফলাফলটি `isToContract`-এ লিখি।
+
+```solidity
+ require(to.balance != 0 || isToContract, "Can't send tokens to an empty address");
+```
+
+এবং সবশেষে, আমাদের কাছে খালি এডড্রেস-এর জন্য আসল চেকটি রয়েছে।
+
+## অ্যাডমিনিস্ট্রেটিভ অ্যাক্সেস {#admin-access}
+
+মাঝে মাঝে এমন একজন অ্যাডমিনিস্ট্রেটর থাকা দরকারী যিনি ভুলগুলো বাতিল করতে পারেন। অপব্যবহারের সম্ভাবনা কমাতে, এই অ্যাডমিনিস্ট্রেটর একটি [মাল্টিসিগ](https://blog.logrocket.com/security-choices-multi-signature-wallets/) হতে পারে যাতে একাধিক ব্যক্তিকে কোনো পদক্ষেপে একমত হতে হয়। এই আর্টিকেলে আমাদের দুটি অ্যাডমিনিস্ট্রেটিভ বৈশিষ্ট্য থাকবে:
+
+1. একাউন্ট ফ্রিজ এবং আনফ্রিজ করা। এটি দরকারী হতে পারে, উদাহরণস্বরূপ, যখন কোনো একাউন্ট হ্যাক হওয়ার আশঙ্কা থাকে।
+2. অ্যাসেট ক্লিনআপ।
+
+ মাঝে মাঝে প্রতারকরা বৈধতা অর্জনের জন্য আসল টোকেনের কন্ট্রাক্টে প্রতারণামূলক টোকেন পাঠায়। উদাহরণস্বরূপ, [এখানে দেখুন](https://optimism.blockscout.com/token/0x2348B1a1228DDCd2dB668c3d30207c3E1852fBbe?tab=holders)। বৈধ ERC-20 কন্ট্রাক্টটি হলো [0x4200....0042](https://optimism.blockscout.com/token/0x4200000000000000000000000000000000000042)। যে স্ক্যামটি এর ভান করে তা হলো [0x234....bbe](https://optimism.blockscout.com/token/0x2348B1a1228DDCd2dB668c3d30207c3E1852fBbe)।
+
+ এটিও সম্ভব যে মানুষ ভুল করে আমাদের কন্ট্রাক্টে বৈধ ERC-20 টোকেন পাঠায়, যা সেগুলো বের করার একটি উপায় চাওয়ার আরেকটি কারণ।
+
+OpenZeppelin অ্যাডমিনিস্ট্রেটিভ অ্যাক্সেস সক্ষম করার জন্য দুটি মেকানিজম প্রদান করে:
+
+- [`Ownable`](https://docs.openzeppelin.com/contracts/5.x/access-control#ownership-and-ownable) কন্ট্রাক্টগুলোর একজন মাত্র মালিক থাকে। যে ফাংশনগুলোতে `onlyOwner` [মডিফায়ার](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) থাকে সেগুলো শুধুমাত্র সেই মালিক কল করতে পারেন। মালিকরা অন্য কাউকে মালিকানা হস্তান্তর করতে পারেন বা এটি সম্পূর্ণভাবে ত্যাগ করতে পারেন। অন্যান্য সমস্ত একাউন্ট-এর অধিকার সাধারণত একই রকম হয়।
+- [`AccessControl`](https://docs.openzeppelin.com/contracts/5.x/access-control#role-based-access-control) কন্ট্রাক্টগুলোতে [রোল বেসড অ্যাক্সেস কন্ট্রোল (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control) থাকে।
+
+সরলতার খাতিরে, এই আর্টিকেলে আমরা `Ownable` ব্যবহার করব।
+
+### কন্ট্রাক্ট ফ্রিজ এবং থয়িং (thawing) করা {#freezing-and-thawing-contracts}
+
+কন্ট্রাক্ট ফ্রিজ এবং থয়িং করার জন্য বেশ কয়েকটি পরিবর্তনের প্রয়োজন:
+
+- কোন এডড্রেসগুলো ফ্রিজ করা হয়েছে তার ট্র্যাক রাখতে এডড্রেস থেকে [বুলিয়ান](https://en.wikipedia.org/wiki/Boolean_data_type)-এ একটি [ম্যাপিং](https://www.tutorialspoint.com/solidity/solidity_mappings.htm)। সমস্ত মান প্রাথমিকভাবে শূন্য থাকে, যা বুলিয়ান মানের জন্য ফলস (false) হিসেবে ব্যাখ্যা করা হয়। আমরা এটাই চাই কারণ ডিফল্টরূপে একাউন্টগুলো ফ্রিজ করা থাকে না।
+
+ ```solidity
+ mapping(address => bool) public frozenAccounts;
+ ```
+
+- যখন কোনো একাউন্ট ফ্রিজ বা থয়িং করা হয় তখন আগ্রহী যে কাউকে জানানোর জন্য [ইভেন্ট](https://www.tutorialspoint.com/solidity/solidity_events.htm)। প্রযুক্তিগতভাবে বলতে গেলে এই কাজগুলোর জন্য ইভেন্টের প্রয়োজন নেই, তবে এটি অফচেইন কোডকে এই ইভেন্টগুলো শুনতে এবং কী ঘটছে তা জানতে সাহায্য করে। যখন অন্য কারো জন্য প্রাসঙ্গিক হতে পারে এমন কিছু ঘটে তখন একটি স্মার্ট কন্ট্রাক্ট-এর জন্য এগুলো এমিট (emit) করা ভালো শিষ্টাচার হিসেবে বিবেচিত হয়।
+
+ ইভেন্টগুলো ইনডেক্স করা থাকে তাই কোনো একাউন্ট কতবার ফ্রিজ বা থয়িং করা হয়েছে তা অনুসন্ধান করা সম্ভব হবে।
+
+ ```solidity
+ // যখন অ্যাকাউন্টগুলো ফ্রিজ বা আনফ্রিজ করা হয়
+ event AccountFrozen(address indexed _addr);
+ event AccountThawed(address indexed _addr);
+ ```
+
+- একাউন্ট ফ্রিজ এবং থয়িং করার জন্য ফাংশন। এই দুটি ফাংশন প্রায় একই রকম, তাই আমরা শুধুমাত্র ফ্রিজ ফাংশনটি নিয়ে আলোচনা করব।
+
+ ```solidity
+ function freezeAccount(address addr)
+ public
+ onlyOwner
+ ```
+
+ [`public`](https://www.tutorialspoint.com/solidity/solidity_contracts.htm) হিসেবে চিহ্নিত ফাংশনগুলো অন্যান্য স্মার্ট কন্ট্রাক্ট থেকে বা সরাসরি কোনো লেনদেন দ্বারা কল করা যেতে পারে।
+
+ ```solidity
+ {
+ require(!frozenAccounts[addr], "Account already frozen");
+ frozenAccounts[addr] = true;
+ emit AccountFrozen(addr);
+ } // freezeAccount
+ ```
+
+ যদি একাউন্টটি ইতিমধ্যে ফ্রিজ করা থাকে, তবে রিভার্ট করুন। অন্যথায়, এটি ফ্রিজ করুন এবং একটি ইভেন্ট `emit` করুন।
+
+- একটি ফ্রিজ করা একাউন্ট থেকে অর্থ সরানো রোধ করতে `_beforeTokenTransfer` পরিবর্তন করুন। মনে রাখবেন যে ফ্রিজ করা একাউন্টে এখনও অর্থ ট্রান্সফার করা যেতে পারে।
+
+ ```solidity
+ require(!frozenAccounts[from], "The account is frozen");
+ ```
+
+### অ্যাসেট ক্লিনআপ {#asset-cleanup}
+
+এই কন্ট্রাক্ট দ্বারা ধারণ করা ERC-20 টোকেনগুলো রিলিজ করার জন্য আমাদের সেই টোকেন কন্ট্রাক্টের একটি ফাংশন কল করতে হবে যার অধীনে সেগুলো রয়েছে, হয় [`transfer`](https://eips.ethereum.org/EIPS/eip-20#transfer) অথবা [`approve`](https://eips.ethereum.org/EIPS/eip-20#approve)। এই ক্ষেত্রে অ্যালাউন্সের জন্য গ্যাস নষ্ট করার কোনো মানে নেই, আমরা সরাসরি ট্রান্সফার করতে পারি।
+
+```solidity
+ function cleanupERC20(
+ address erc20,
+ address dest
+ )
+ public
+ onlyOwner
+ {
+ IERC20 token = IERC20(erc20);
+```
+
+যখন আমরা এডড্রেস পাই তখন একটি কন্ট্রাক্টের জন্য একটি অবজেক্ট তৈরি করার সিনট্যাক্স এটি। আমরা এটি করতে পারি কারণ সোর্স কোডের অংশ হিসেবে আমাদের কাছে ERC20 টোকেনের সংজ্ঞা রয়েছে (লাইন 4 দেখুন), এবং সেই ফাইলে [IERC20-এর সংজ্ঞা](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) অন্তর্ভুক্ত রয়েছে, যা একটি OpenZeppelin ERC-20 কন্ট্রাক্টের ইন্টারফেস।
+
+```solidity
+ uint balance = token.balanceOf(address(this));
+ token.transfer(dest, balance);
+ }
+```
+
+এটি একটি ক্লিনআপ ফাংশন, তাই সম্ভবত আমরা কোনো টোকেন রেখে যেতে চাই না। ব্যবহারকারীর কাছ থেকে ম্যানুয়ালি ব্যালেন্স নেওয়ার পরিবর্তে, আমরা প্রক্রিয়াটি স্বয়ংক্রিয় করতে পারি।
+
+## উপসংহার {#conclusion}
+
+এটি কোনো নিখুঁত সমাধান নয় - "ব্যবহারকারী ভুল করেছেন" সমস্যার কোনো নিখুঁত সমাধান নেই। তবে, এই ধরনের চেকগুলো ব্যবহার করে অন্তত কিছু ভুল প্রতিরোধ করা যেতে পারে। একাউন্ট ফ্রিজ করার ক্ষমতা, যদিও বিপজ্জনক, হ্যাকারকে চুরি করা তহবিল থেকে বঞ্চিত করে নির্দিষ্ট হ্যাকের ক্ষতি সীমিত করতে ব্যবহার করা যেতে পারে।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/ethereum-for-web2-auth/index.md b/public/content/translations/bn/developers/tutorials/ethereum-for-web2-auth/index.md
new file mode 100644
index 00000000000..164e5fd2e90
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/ethereum-for-web2-auth/index.md
@@ -0,0 +1,888 @@
+---
+title: ওয়েব2 অথেনটিকেশনের জন্য ইথিরিয়াম ব্যবহার করা
+description: এই টিউটোরিয়ালটি পড়ার পর, একজন ডেভেলপার ইথিরিয়াম লগইন (ওয়েব3)-কে SAML লগইনের সাথে ইন্টিগ্রেট করতে পারবেন, যা ওয়েব2-তে সিঙ্গেল সাইন-অন এবং অন্যান্য সম্পর্কিত পরিষেবা প্রদানের জন্য ব্যবহৃত একটি স্ট্যান্ডার্ড। এটি ইথিরিয়াম সিগনেচারের মাধ্যমে ওয়েব2 রিসোর্সগুলোতে অ্যাক্সেস অথেনটিকেট করার অনুমতি দেয়, যেখানে ব্যবহারকারীর অ্যাট্রিবিউটগুলো এটেস্টেশন থেকে আসে।
+author: ওরি পোমেরান্টজ
+tags: ["ওয়েব2", "অথেনটিকেশন", "eas"]
+skill: beginner
+breadcrumb: ওয়েব2 অথেনটিকেশনের জন্য ইথিরিয়াম
+lang: bn
+published: 2025-04-30
+---
+
+## Introduction
+
+[SAML](https://www.onelogin.com/learn/saml) হলো ওয়েব2-তে ব্যবহৃত একটি স্ট্যান্ডার্ড যা একটি [আইডেন্টিটি প্রোভাইডার (IdP)](https://en.wikipedia.org/wiki/Identity_provider#SAML_identity_provider)-কে [সার্ভিস প্রোভাইডার (SP)](https://en.wikipedia.org/wiki/Service_provider_(SAML))-এর জন্য ব্যবহারকারীর তথ্য প্রদান করার অনুমতি দেয়।
+
+এই টিউটোরিয়ালে আপনি শিখবেন কীভাবে ইথিরিয়াম সিগনেচারকে SAML-এর সাথে ইন্টিগ্রেট করতে হয়, যাতে ব্যবহারকারীরা তাদের ইথিরিয়াম ওয়ালেট ব্যবহার করে এমন ওয়েব2 পরিষেবাগুলোতে নিজেদের অথেনটিকেট করতে পারে যা এখনও নেটিভভাবে ইথিরিয়াম সমর্থন করে না।
+
+মনে রাখবেন যে এই টিউটোরিয়ালটি দুটি আলাদা অডিয়েন্সের জন্য লেখা হয়েছে:
+
+- ইথিরিয়ামের মানুষ যারা ইথিরিয়াম বোঝেন এবং তাদের SAML শেখা প্রয়োজন
+- ওয়েব2-এর মানুষ যারা SAML এবং ওয়েব2 অথেনটিকেশন বোঝেন এবং তাদের ইথিরিয়াম শেখা প্রয়োজন
+
+ফলস্বরূপ, এতে এমন অনেক প্রাথমিক বিষয় থাকবে যা আপনি হয়তো আগে থেকেই জানেন। আপনি চাইলে সেগুলো এড়িয়ে যেতে পারেন।
+
+### SAML for Ethereum people
+
+SAML হলো একটি সেন্ট্রালাইজড প্রটোকল। একটি সার্ভিস প্রোভাইডার (SP) শুধুমাত্র তখনই একটি আইডেন্টিটি প্রোভাইডার (IdP) থেকে অ্যাসারশন (যেমন "এই হলো আমার ব্যবহারকারী জন, তার A, B, এবং C করার অনুমতি থাকা উচিত") গ্রহণ করে যদি তার সাথে বা সেই IdP-এর সার্টিফিকেট সাইন করা [সার্টিফিকেট অথরিটি](https://www.ssl.com/article/what-is-a-certificate-authority-ca/)-এর সাথে আগে থেকেই কোনো ট্রাস্ট সম্পর্ক থাকে।
+
+উদাহরণস্বরূপ, SP হতে পারে একটি ট্রাভেল এজেন্সি যা কোম্পানিগুলোকে ভ্রমণ পরিষেবা প্রদান করে, এবং IdP হতে পারে একটি কোম্পানির অভ্যন্তরীণ ওয়েবসাইট। যখন কর্মীদের ব্যবসায়িক ভ্রমণের জন্য বুকিং করতে হয়, তখন ট্রাভেল এজেন্সি তাদের আসলে ভ্রমণ বুক করার অনুমতি দেওয়ার আগে কোম্পানির দ্বারা অথেনটিকেশনের জন্য পাঠায়।
+
+
+
+এভাবেই তিনটি এনটিটি—ব্রাউজার, SP এবং IdP—অ্যাক্সেসের জন্য নেগোশিয়েট করে। SP-কে আগে থেকে ব্রাউজার ব্যবহারকারী সম্পর্কে কিছু জানার প্রয়োজন নেই, শুধু IdP-কে বিশ্বাস করলেই হয়।
+
+### Ethereum for SAML people
+
+ইথিরিয়াম হলো একটি ডিসেন্ট্রালাইজড সিস্টেম।
+
+
+
+ব্যবহারকারীদের একটি প্রাইভেট কি থাকে (সাধারণত একটি ব্রাউজার এক্সটেনশনে রাখা হয়)। প্রাইভেট কি থেকে আপনি একটি পাবলিক কি বের করতে পারেন, এবং তা থেকে একটি 20-বাইট এডড্রেস। যখন ব্যবহারকারীদের কোনো সিস্টেমে লগ ইন করতে হয়, তখন তাদের একটি নন্স (একবার ব্যবহারযোগ্য মান) সহ একটি মেসেজ সাইন করার অনুরোধ করা হয়। সার্ভার যাচাই করতে পারে যে সিগনেচারটি সেই এডড্রেস দ্বারা তৈরি করা হয়েছিল।
+
+
+
+সিগনেচারটি শুধুমাত্র ইথিরিয়াম এডড্রেস যাচাই করে। অন্যান্য ব্যবহারকারীর অ্যাট্রিবিউট পেতে, আপনি সাধারণত [এটেস্টেশন](https://attest.org/) ব্যবহার করেন। একটি এটেস্টেশন-এ সাধারণত এই ফিল্ডগুলো থাকে:
+
+- **Attestor**, যে এডড্রেস এটেস্টেশন তৈরি করেছে
+- **Recipient**, যে এডড্রেস-এর উপর এটেস্টেশন প্রযোজ্য
+- **Data**, যে ডেটা অ্যাটেস্ট করা হচ্ছে, যেমন নাম, অনুমতি ইত্যাদি।
+- **Schema**, ডেটা ব্যাখ্যা করতে ব্যবহৃত স্কিমার আইডি।
+
+ইথিরিয়ামের ডিসেন্ট্রালাইজড প্রকৃতির কারণে, যেকোনো ব্যবহারকারী এটেস্টেশন তৈরি করতে পারে। কোন এটেস্টেশন-গুলোকে আমরা নির্ভরযোগ্য বলে বিবেচনা করব তা চিহ্নিত করার জন্য অ্যাটেস্টরের পরিচয় গুরুত্বপূর্ণ।
+
+## Setup
+
+প্রথম ধাপ হলো একটি SAML SP এবং একটি SAML IdP-এর মধ্যে যোগাযোগ স্থাপন করা।
+
+1. সফটওয়্যারটি ডাউনলোড করুন। এই আর্টিকেলের জন্য নমুনা সফটওয়্যারটি [গিটহাবে](https://github.com/qbzzt/250420-saml-ethereum) রয়েছে। বিভিন্ন পর্যায়গুলো বিভিন্ন ব্রাঞ্চে সংরক্ষিত আছে, এই পর্যায়ের জন্য আপনার `saml-only` প্রয়োজন।
+
+ ```sh
+ git clone https://github.com/qbzzt/250420-saml-ethereum -b saml-only
+ cd 250420-saml-ethereum
+ pnpm install
+ ```
+
+2. সেলফ-সাইন্ড সার্টিফিকেট সহ কি (keys) তৈরি করুন। এর মানে হলো কি-টি নিজেই তার নিজস্ব সার্টিফিকেট অথরিটি, এবং এটিকে ম্যানুয়ালি সার্ভিস প্রোভাইডারে ইমপোর্ট করতে হবে। আরও তথ্যের জন্য [OpenSSL ডক্স](https://docs.openssl.org/master/man1/openssl-req/) দেখুন।
+
+ ```sh
+ mkdir keys
+ cd keys
+ openssl req -new -x509 -days 365 -nodes -sha256 -out saml-sp.crt -keyout saml-sp.pem -subj /CN=sp/
+ openssl req -new -x509 -days 365 -nodes -sha256 -out saml-idp.crt -keyout saml-idp.pem -subj /CN=idp/
+ cd ..
+ ```
+
+3. সার্ভারগুলো চালু করুন (SP এবং IdP উভয়ই)
+
+ ```sh
+ pnpm start
+ ```
+
+4. URL [http://localhost:3000/](http://localhost:3000/)-এ SP ব্রাউজ করুন এবং IdP (পোর্ট 3001)-তে রিডাইরেক্ট হওয়ার জন্য বোতামে ক্লিক করুন।
+
+5. IdP-কে আপনার ইমেইল ঠিকানা প্রদান করুন এবং **Login to the service provider**-এ ক্লিক করুন। দেখুন যে আপনাকে আবার সার্ভিস প্রোভাইডারে (পোর্ট 3000) রিডাইরেক্ট করা হয়েছে এবং এটি আপনাকে আপনার ইমেইল ঠিকানা দ্বারা চিনতে পারছে।
+
+### Detailed explanation
+
+ধাপে ধাপে যা ঘটে তা হলো:
+
+
+
+#### src/config.mts
+
+এই ফাইলে আইডেন্টিটি প্রোভাইডার এবং সার্ভিস প্রোভাইডার উভয়ের জন্যই কনফিগারেশন রয়েছে। সাধারণত এই দুটি ভিন্ন এনটিটি হবে, কিন্তু এখানে আমরা সরলতার জন্য কোড শেয়ার করতে পারি।
+
+```typescript
+const fs = await import("fs")
+
+const protocol="http"
+```
+
+আপাতত আমরা শুধু টেস্টিং করছি, তাই HTTP ব্যবহার করা ঠিক আছে।
+
+```typescript
+export const spCert = fs.readFileSync("keys/saml-sp.crt").toString()
+export const idpCert = fs.readFileSync("keys/saml-idp.crt").toString()
+```
+
+পাবলিক কি-গুলো পড়ুন, যা সাধারণত উভয় কম্পোনেন্টের কাছেই উপলব্ধ থাকে (এবং সরাসরি বিশ্বস্ত, অথবা একটি বিশ্বস্ত সার্টিফিকেট অথরিটি দ্বারা সাইন করা)।
+
+```typescript
+export const spPort = 3000
+export const spHostname = "localhost"
+export const spDir = "sp"
+
+export const idpPort = 3001
+export const idpHostname = "localhost"
+export const idpDir = "idp"
+
+export const spUrl = `${protocol}://${spHostname}:${spPort}/${spDir}`
+export const idpUrl = `${protocol}://${idpHostname}:${idpPort}/${idpDir}`
+```
+
+উভয় কম্পোনেন্টের জন্য URL-গুলো।
+
+```typescript
+export const spPublicData = {
+```
+
+সার্ভিস প্রোভাইডারের জন্য পাবলিক ডেটা।
+
+```typescript
+ entityID: `${spUrl}/metadata`,
+```
+
+প্রথা অনুযায়ী, SAML-এ `entityID` হলো সেই URL যেখানে এনটিটির মেটাডেটা পাওয়া যায়। এই মেটাডেটা এখানকার পাবলিক ডেটার সাথে মিলে যায়, তবে এটি XML ফর্মে থাকে।
+
+```typescript
+ wantAssertionsSigned: true,
+ authnRequestsSigned: false,
+ signingCert: spCert,
+ allowCreate: true,
+ assertionConsumerService: [{
+ Binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
+ Location: `${spUrl}/assertion`,
+ }]
+ }
+```
+
+আমাদের উদ্দেশ্যের জন্য সবচেয়ে গুরুত্বপূর্ণ সংজ্ঞা হলো `assertionConsumerServer`। এর মানে হলো সার্ভিস প্রোভাইডারের কাছে কিছু অ্যাসার্ট করতে (উদাহরণস্বরূপ, "যে ব্যবহারকারী আপনাকে এই তথ্য পাঠাচ্ছে সে হলো somebody@example.com") আমাদের URL `http://localhost:3000/sp/assertion`-এ [HTTP POST](https://www.w3schools.com/tags/ref_httpmethods.asp) ব্যবহার করতে হবে।
+
+```typescript
+export const idpPublicData = {
+ entityID: `${idpUrl}/metadata`,
+ signingCert: idpCert,
+ wantAuthnRequestsSigned: false,
+ singleSignOnService: [{
+ Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
+ Location: `${idpUrl}/login`
+ }],
+ singleLogoutService: [{
+ Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
+ Location: `${idpUrl}/logout`
+ }],
+ }
+```
+
+আইডেন্টিটি প্রোভাইডারের পাবলিক ডেটাও একই রকম। এটি নির্দিষ্ট করে যে একজন ব্যবহারকারীকে লগ ইন করতে আপনাকে `http://localhost:3001/idp/login`-এ POST করতে হবে এবং লগ আউট করতে `http://localhost:3001/idp/logout`-এ POST করতে হবে।
+
+#### src/sp.mts
+
+এটি সেই কোড যা একটি সার্ভিস প্রোভাইডার ইমপ্লিমেন্ট করে।
+
+```typescript
+import * as config from "./config.mts"
+const fs = await import("fs")
+const saml = await import("samlify")
+```
+
+আমরা SAML ইমপ্লিমেন্ট করতে [`samlify`](https://www.npmjs.com/package/samlify) লাইব্রেরি ব্যবহার করি।
+
+```typescript
+import * as validator from "@authenio/samlify-node-xmllint"
+saml.setSchemaValidator(validator)
+```
+
+`samlify` লাইব্রেরি আশা করে যে একটি প্যাকেজ যাচাই করবে যে XML সঠিক, প্রত্যাশিত পাবলিক কি দিয়ে সাইন করা ইত্যাদি। আমরা এই উদ্দেশ্যে [`@authenio/samlify-node-xmllint`](https://www.npmjs.com/package/@authenio/samlify-node-xmllint) ব্যবহার করি।
+
+```typescript
+const express = (await import("express")).default
+const spRouter = express.Router()
+const app = express()
+```
+
+একটি [`express`](https://expressjs.com/) [`Router`](https://expressjs.com/en/5x/api.html#router) হলো একটি "মিনি ওয়েবসাইট" যা একটি ওয়েবসাইটের ভিতরে মাউন্ট করা যায়। এই ক্ষেত্রে, আমরা সমস্ত সার্ভিস প্রোভাইডার সংজ্ঞাগুলোকে একসাথে গ্রুপ করতে এটি ব্যবহার করি।
+
+```typescript
+const spPrivateKey = fs.readFileSync("keys/saml-sp.pem").toString()
+
+const sp = saml.ServiceProvider({
+ privateKey: spPrivateKey,
+ ...config.spPublicData
+})
+```
+
+সার্ভিস প্রোভাইডারের নিজস্ব উপস্থাপনা হলো সমস্ত পাবলিক ডেটা এবং তথ্য সাইন করতে এটি যে প্রাইভেট কি ব্যবহার করে।
+
+```typescript
+const idp = saml.IdentityProvider(config.idpPublicData);
+```
+
+পাবলিক ডেটাতে এমন সবকিছু থাকে যা সার্ভিস প্রোভাইডারের আইডেন্টিটি প্রোভাইডার সম্পর্কে জানা প্রয়োজন।
+
+```typescript
+spRouter.get(`/metadata`,
+ (req, res) => res.header("Content-Type", "text/xml").send(sp.getMetadata())
+)
+```
+
+অন্যান্য SAML কম্পোনেন্টগুলোর সাথে ইন্টারঅপারেবিলিটি সক্ষম করতে, সার্ভিস এবং আইডেন্টিটি প্রোভাইডারদের তাদের পাবলিক ডেটা (যাকে মেটাডেটা বলা হয়) `/metadata`-এ XML ফর্ম্যাটে উপলব্ধ থাকা উচিত।
+
+```typescript
+spRouter.post(`/assertion`,
+```
+
+এটি সেই পেজ যা ব্রাউজার নিজেকে আইডেন্টিফাই করতে অ্যাক্সেস করে। অ্যাসারশনে ব্যবহারকারীর আইডেন্টিফায়ার (এখানে আমরা ইমেইল ঠিকানা ব্যবহার করি) অন্তর্ভুক্ত থাকে এবং অতিরিক্ত অ্যাট্রিবিউটও অন্তর্ভুক্ত থাকতে পারে। এটি উপরের সিকোয়েন্স ডায়াগ্রামের 7 নম্বর ধাপের হ্যান্ডলার।
+
+```typescript
+ async (req, res) => {
+ // console.log(`SAML response:\n${Buffer.from(req.body.SAMLResponse, 'base64').toString('utf-8')}`)
+```
+
+অ্যাসারশনে দেওয়া XML ডেটা দেখতে আপনি কমেন্ট আউট করা কমান্ডটি ব্যবহার করতে পারেন। এটি [base64 এনকোডেড](https://en.wikipedia.org/wiki/Base64)।
+
+```typescript
+ try {
+ const loginResponse = await sp.parseLoginResponse(idp, 'post', req);
+```
+
+আইডেন্টিটি সার্ভার থেকে লগইন রিকোয়েস্ট পার্স করুন।
+
+```typescript
+ res.send(`
+
+
+ Hello ${loginResponse.extract.nameID}
+
+
+ `)
+ res.send();
+```
+
+একটি HTML রেসপন্স পাঠান, শুধু ব্যবহারকারীকে দেখানোর জন্য যে আমরা লগইন পেয়েছি।
+
+```typescript
+ } catch (err) {
+ console.error('Error processing SAML response:', err);
+ res.status(400).send('SAML authentication failed');
+ }
+ }
+)
+```
+
+ব্যর্থতার ক্ষেত্রে ব্যবহারকারীকে জানান।
+
+```typescript
+spRouter.get('/login',
+```
+
+ব্রাউজার যখন এই পেজটি পাওয়ার চেষ্টা করে তখন একটি লগইন রিকোয়েস্ট তৈরি করুন। এটি উপরের সিকোয়েন্স ডায়াগ্রামের 1 নম্বর ধাপের হ্যান্ডলার।
+
+```typescript
+ async (req, res) => {
+ const loginRequest = await sp.createLoginRequest(idp, "post")
+```
+
+একটি লগইন রিকোয়েস্ট পোস্ট করার জন্য তথ্য পান।
+
+```typescript
+ res.send(`
+
+
+
+```
+
+এই পেজটি স্বয়ংক্রিয়ভাবে ফর্মটি (নিচে দেখুন) সাবমিট করে। এইভাবে রিডাইরেক্ট হওয়ার জন্য ব্যবহারকারীকে কিছু করতে হয় না। এটি উপরের সিকোয়েন্স ডায়াগ্রামের 2 নম্বর ধাপ।
+
+```typescript
+
+
+
+ `)
+ }
+)
+
+app.use(express.urlencoded({extended: true}))
+```
+
+[এই মিডলওয়্যারটি](https://expressjs.com/en/5x/api.html#express.urlencoded) [HTTP রিকোয়েস্টের](https://www.tutorialspoint.com/http/http_requests.htm) বডি পড়ে। ডিফল্টভাবে express এটি উপেক্ষা করে, কারণ বেশিরভাগ রিকোয়েস্টে এর প্রয়োজন হয় না। আমাদের এটি প্রয়োজন কারণ POST বডি ব্যবহার করে।
+
+```typescript
+app.use(`/${config.spDir}`, spRouter)
+```
+
+সার্ভিস প্রোভাইডার ডিরেক্টরিতে (`/sp`) রাউটারটি মাউন্ট করুন।
+
+```typescript
+app.get("/", (req, res) => {
+ res.send(`
+
+
+
+
+
+ `)
+})
+```
+
+যদি কোনো ব্রাউজার রুট ডিরেক্টরি পাওয়ার চেষ্টা করে, তবে তাকে লগইন পেজের একটি লিঙ্ক প্রদান করুন।
+
+```typescript
+app.listen(config.spPort, () => {
+ console.log(`service provider is running on http://${config.spHostname}:${config.spPort}`)
+})
+```
+
+এই express অ্যাপ্লিকেশনের সাথে `spPort`-এ লিসেন করুন।
+
+#### src/idp.mts
+
+এটি হলো আইডেন্টিটি প্রোভাইডার। এটি সার্ভিস প্রোভাইডারের মতোই, নিচের ব্যাখ্যাগুলো সেই অংশগুলোর জন্য যেগুলো আলাদা।
+
+```typescript
+const xmlParser = new (await import("fast-xml-parser")).XMLParser(
+ {
+ ignoreAttributes: false, // অ্যাট্রিবিউট সংরক্ষণ করুন
+ attributeNamePrefix: "@_", // অ্যাট্রিবিউটের জন্য প্রিফিক্স
+ }
+)
+```
+
+সার্ভিস প্রোভাইডার থেকে আমরা যে XML রিকোয়েস্ট পাই তা আমাদের পড়তে এবং বুঝতে হবে।
+
+```typescript
+const getLoginPage = requestId => `
+```
+
+এই ফাংশনটি অটো-সাবমিটেড ফর্ম সহ পেজটি তৈরি করে যা উপরের সিকোয়েন্স ডায়াগ্রামের 4 নম্বর ধাপে রিটার্ন করা হয়।
+
+```typescript
+
+
+ Login page
+
+
+ Login page
+
+
+
+
+const idpRouter = express.Router()
+
+idpRouter.post("/loginSubmitted", async (req, res) => {
+ const loginResponse = await idp.createLoginResponse(
+```
+
+এটি উপরের সিকোয়েন্স ডায়াগ্রামের 5 নম্বর ধাপের হ্যান্ডলার। [`idp.createLoginResponse`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L73-L125) লগইন রেসপন্স তৈরি করে।
+
+```typescript
+ sp,
+ {
+ authnContextClassRef: 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport',
+ audience: sp.entityID,
+```
+
+অডিয়েন্স হলো সার্ভিস প্রোভাইডার।
+
+```typescript
+ extract: {
+ request: {
+ id: req.body.requestId
+ }
+ },
+```
+
+রিকোয়েস্ট থেকে এক্সট্রাক্ট করা তথ্য। রিকোয়েস্টে আমরা যে একটি প্যারামিটার নিয়ে চিন্তা করি তা হলো requestId, যা সার্ভিস প্রোভাইডারকে রিকোয়েস্ট এবং তাদের রেসপন্স মেলাতে দেয়।
+
+```typescript
+ signingKey: { privateKey: idpPrivateKey, publicKey: config.idpCert } // সাইনিং নিশ্চিত করুন
+```
+
+রেসপন্স সাইন করার ডেটা পেতে আমাদের `signingKey` প্রয়োজন। সার্ভিস প্রোভাইডার আনসাইন্ড রিকোয়েস্ট বিশ্বাস করে না।
+
+```typescript
+ },
+ "post",
+ {
+ email: req.body.email
+```
+
+এটি হলো সেই ফিল্ড যেখানে ব্যবহারকারীর তথ্য থাকে যা আমরা সার্ভিস প্রোভাইডারকে ফেরত পাঠাই।
+
+```typescript
+ }
+ );
+
+ res.send(`
+
+
+
+
+
+
+
+ `)
+})
+```
+
+আবার, একটি অটো-সাবমিটেড ফর্ম ব্যবহার করুন। এটি উপরের সিকোয়েন্স ডায়াগ্রামের 6 নম্বর ধাপ।
+
+```typescript
+
+// লগইন রিকোয়েস্টের জন্য IdP এন্ডপয়েন্ট
+idpRouter.post(`/login`,
+```
+
+এটি হলো সেই এন্ডপয়েন্ট যা সার্ভিস প্রোভাইডার থেকে একটি লগইন রিকোয়েস্ট গ্রহণ করে। এটি উপরের সিকোয়েন্স ডায়াগ্রামের 3 নম্বর ধাপের হ্যান্ডলার।
+
+```typescript
+ async (req, res) => {
+ try {
+ // parseLoginRequest কাজ করাতে পারিনি বলে এই বিকল্প ব্যবস্থা।
+ // const loginRequest = await idp.parseLoginRequest(sp, 'post', req)
+ const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8'))
+ res.send(getLoginPage(samlRequest["samlp:AuthnRequest"]["@_ID"]))
+```
+
+অথেনটিকেশন রিকোয়েস্টের ID পড়তে আমাদের [`idp.parseLoginRequest`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L127-L144) ব্যবহার করতে সক্ষম হওয়া উচিত। তবে, আমি এটি কাজ করাতে পারিনি এবং এর পিছনে অনেক সময় ব্যয় করাটা সার্থক মনে হয়নি, তাই আমি শুধু একটি [জেনারেল-পারপাস XML পার্সার](https://www.npmjs.com/package/fast-xml-parser) ব্যবহার করেছি। আমাদের যে তথ্যটি প্রয়োজন তা হলো `` ট্যাগের ভিতরের `ID` অ্যাট্রিবিউট, যা XML-এর টপ লেভেলে থাকে।
+
+## Using Ethereum signatures
+
+এখন যেহেতু আমরা সার্ভিস প্রোভাইডারের কাছে ব্যবহারকারীর পরিচয় পাঠাতে পারি, পরবর্তী ধাপ হলো একটি বিশ্বস্ত উপায়ে ব্যবহারকারীর পরিচয় পাওয়া। Viem আমাদের শুধু ওয়ালেটকে ব্যবহারকারীর এডড্রেস জিজ্ঞাসা করার অনুমতি দেয়, কিন্তু এর মানে হলো ব্রাউজারকে তথ্যের জন্য জিজ্ঞাসা করা। আমরা ব্রাউজার নিয়ন্ত্রণ করি না, তাই আমরা স্বয়ংক্রিয়ভাবে এর থেকে পাওয়া রেসপন্স বিশ্বাস করতে পারি না।
+
+এর পরিবর্তে, IdP ব্রাউজারকে সাইন করার জন্য একটি স্ট্রিং পাঠাবে। যদি ব্রাউজারের ওয়ালেট এই স্ট্রিংটি সাইন করে, তবে এর মানে হলো এটি সত্যিই সেই এডড্রেস (অর্থাৎ, এটি সেই এডড্রেস-এর সাথে সম্পর্কিত প্রাইভেট কি জানে)।
+
+এটি কাজ করতে দেখতে, বিদ্যমান IdP এবং SP বন্ধ করুন এবং এই কমান্ডগুলো চালান:
+
+```sh
+git checkout eth-signatures
+pnpm install
+pnpm start
+```
+
+তারপর [SP-তে](http://localhost:3000) ব্রাউজ করুন এবং নির্দেশাবলী অনুসরণ করুন।
+
+মনে রাখবেন যে এই পর্যায়ে আমরা জানি না কীভাবে ইথিরিয়াম এডড্রেস থেকে ইমেইল ঠিকানা পেতে হয়, তাই এর পরিবর্তে আমরা SP-কে `@bad.email.address` রিপোর্ট করি।
+
+### Detailed explanation
+
+পরিবর্তনগুলো আগের ডায়াগ্রামের 4-5 নম্বর ধাপে রয়েছে।
+
+
+
+আমরা যে একমাত্র ফাইলটি পরিবর্তন করেছি তা হলো `idp.mts`। এখানে পরিবর্তিত অংশগুলো দেওয়া হলো।
+
+```typescript
+import { v4 as uuidv4 } from 'uuid'
+import { verifyMessage } from 'viem'
+```
+
+আমাদের এই দুটি অতিরিক্ত লাইব্রেরি প্রয়োজন। আমরা [নন্স](https://en.wikipedia.org/wiki/Cryptographic_nonce) মান তৈরি করতে [`uuid`](https://www.npmjs.com/package/uuid) ব্যবহার করি। মানটি নিজে কোনো ব্যাপার না, শুধু এই বিষয়টি গুরুত্বপূর্ণ যে এটি কেবল একবার ব্যবহার করা হয়।
+
+[`viem`](https://viem.sh/) লাইব্রেরি আমাদের ইথিরিয়াম সংজ্ঞাগুলো ব্যবহার করতে দেয়। এখানে আমাদের এটি প্রয়োজন যাচাই করার জন্য যে সিগনেচারটি সত্যিই বৈধ।
+
+```typescript
+const loginPrompt = "To access the service provider, sign this nonce: "
+```
+
+ওয়ালেট ব্যবহারকারীকে মেসেজটি সাইন করার অনুমতি চায়। একটি মেসেজ যা শুধু একটি নন্স তা ব্যবহারকারীদের বিভ্রান্ত করতে পারে, তাই আমরা এই প্রম্পটটি অন্তর্ভুক্ত করি।
+
+```typescript
+// requestID-গুলো এখানে রাখুন
+let nonces = {}
+```
+
+রিকোয়েস্টের রেসপন্স দিতে আমাদের রিকোয়েস্টের তথ্য প্রয়োজন। আমরা এটি রিকোয়েস্টের সাথে পাঠাতে পারতাম (ধাপ 4), এবং এটি ফেরত পেতে পারতাম (ধাপ 5)। তবে, আমরা ব্রাউজার থেকে পাওয়া তথ্য বিশ্বাস করতে পারি না, যা সম্ভাব্য ক্ষতিকারক ব্যবহারকারীর নিয়ন্ত্রণে থাকে। তাই এটিকে এখানে সংরক্ষণ করা ভালো, নন্স-কে কি (key) হিসেবে ব্যবহার করে।
+
+মনে রাখবেন যে আমরা সরলতার খাতিরে এখানে এটি একটি ভেরিয়েবল হিসেবে করছি। তবে, এর বেশ কয়েকটি অসুবিধা রয়েছে:
+
+- আমরা ডিনায়াল অফ সার্ভিস অ্যাটাকের ঝুঁকিতে আছি। একজন ক্ষতিকারক ব্যবহারকারী একাধিকবার লগ অন করার চেষ্টা করতে পারে, আমাদের মেমরি পূর্ণ করে দিতে পারে।
+- যদি IdP প্রসেস রিস্টার্ট করার প্রয়োজন হয়, তবে আমরা বিদ্যমান মানগুলো হারিয়ে ফেলি।
+- আমরা একাধিক প্রসেস জুড়ে লোড ব্যালেন্স করতে পারি না, কারণ প্রতিটির নিজস্ব ভেরিয়েবল থাকবে।
+
+একটি প্রোডাকশন সিস্টেমে আমরা একটি ডাটাবেস ব্যবহার করব এবং কোনো ধরনের এক্সপায়ারি মেকানিজম ইমপ্লিমেন্ট করব।
+
+```typescript
+const getSignaturePage = requestId => {
+ const nonce = uuidv4()
+ nonces[nonce] = requestId
+```
+
+একটি নন্স তৈরি করুন এবং ভবিষ্যতের ব্যবহারের জন্য `requestId` সংরক্ষণ করুন।
+
+```typescript
+ return `
+
+
+
+
+
+ Please sign
+
+
+
+
+
+`
+}
+```
+
+বাকিটা শুধু স্ট্যান্ডার্ড HTML।
+
+```typescript
+idpRouter.get("/signature/:nonce/:account/:signature", async (req, res) => {
+```
+
+এটি সিকোয়েন্স ডায়াগ্রামের 5 নম্বর ধাপের হ্যান্ডলার।
+
+```typescript
+ const requestId = nonces[req.params.nonce]
+ if (requestId === undefined) {
+ res.send("Bad nonce")
+ return ;
+ }
+
+ nonces[req.params.nonce] = undefined
+```
+
+রিকোয়েস্ট ID পান, এবং `nonces` থেকে নন্স-টি মুছে ফেলুন যাতে এটি পুনরায় ব্যবহার করা না যায়।
+
+```typescript
+ try {
+```
+
+যেহেতু সিগনেচারটি অবৈধ হওয়ার অনেক উপায় রয়েছে, তাই আমরা যেকোনো নিক্ষিপ্ত ত্রুটি ধরতে এটিকে একটি `try ... catch` ব্লকে র্যাপ করি।
+
+```typescript
+ const validSignature = await verifyMessage({
+ address: req.params.account,
+ message: `${loginPrompt}${req.params.nonce}`,
+ signature: req.params.signature
+ })
+```
+
+সিকোয়েন্স ডায়াগ্রামের 5.5 নম্বর ধাপ ইমপ্লিমেন্ট করতে [`verifyMessage`](https://viem.sh/docs/actions/public/verifyMessage#verifymessage) ব্যবহার করুন।
+
+```typescript
+ if (!validSignature)
+ throw("Bad signature")
+ } catch (err) {
+ res.send("Error:" + err)
+ return ;
+ }
+```
+
+হ্যান্ডলারের বাকি অংশটি আমরা আগে `/loginSubmitted` হ্যান্ডলারে যা করেছি তার সমতুল্য, শুধু একটি ছোট পরিবর্তন ছাড়া।
+
+```typescript
+ const loginResponse = await idp.createLoginResponse(
+ .
+ .
+ .
+ {
+ email: req.params.account + "@bad.email.address"
+ }
+ );
+```
+
+আমাদের কাছে আসল ইমেইল ঠিকানা নেই (আমরা এটি পরবর্তী বিভাগে পাব), তাই আপাতত আমরা ইথিরিয়াম এডড্রেস রিটার্ন করি এবং এটিকে স্পষ্টভাবে ইমেইল ঠিকানা নয় হিসেবে চিহ্নিত করি।
+
+
+```typescript
+// লগইন রিকোয়েস্টের জন্য IdP এন্ডপয়েন্ট
+idpRouter.post(`/login`,
+ async (req, res) => {
+ try {
+ // parseLoginRequest কাজ করাতে পারিনি বলে এই বিকল্প ব্যবস্থা।
+ // const loginRequest = await idp.parseLoginRequest(sp, 'post', req)
+ const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8'))
+ res.send(getSignaturePage(samlRequest["samlp:AuthnRequest"]["@_ID"]))
+ } catch (err) {
+ console.error('Error processing SAML response:', err);
+ res.status(400).send('SAML authentication failed');
+ }
+ }
+)
+```
+
+`getLoginPage`-এর পরিবর্তে, এখন 3 নম্বর ধাপের হ্যান্ডলারে `getSignaturePage` ব্যবহার করুন।
+
+## Getting the email address
+
+পরবর্তী ধাপ হলো ইমেইল ঠিকানা পাওয়া, যা সার্ভিস প্রোভাইডার দ্বারা অনুরোধ করা আইডেন্টিফায়ার। এটি করার জন্য, আমরা [Ethereum Attestation Service (EAS)](https://attest.org/) ব্যবহার করি।
+
+এটেস্টেশন পাওয়ার সবচেয়ে সহজ উপায় হলো [GraphQL API](https://docs.attest.org/docs/developer-tools/api) ব্যবহার করা। আমরা এই কোয়েরিটি ব্যবহার করি:
+
+```
+query GetAttestationsByRecipient {
+ attestations(
+ where: {
+ recipient: { equals: "${getAddress(ethAddr)}" }
+ schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" }
+ }
+ take: 1
+ ) {
+ data
+ id
+ attester
+ }
+}
+```
+
+এই [`schemaId`](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977)-তে শুধু একটি ইমেইল ঠিকানা অন্তর্ভুক্ত থাকে। এই কোয়েরিটি এই স্কিমার এটেস্টেশন-গুলোর জন্য জিজ্ঞাসা করে। এটেস্টেশন-এর বিষয়বস্তুকে `recipient` বলা হয়। এটি সর্বদা একটি ইথিরিয়াম এডড্রেস।
+
+সতর্কতা: আমরা এখানে যেভাবে এটেস্টেশন পাচ্ছি তাতে দুটি নিরাপত্তা সমস্যা রয়েছে।
+
+- আমরা API এন্ডপয়েন্ট, `https://optimism.easscan.org/graphql`-এ যাচ্ছি, যা একটি সেন্ট্রালাইজড কম্পোনেন্ট। আমরা `id` অ্যাট্রিবিউট পেতে পারি এবং তারপর একটি এটেস্টেশন আসল কিনা তা যাচাই করতে অনচেইন লুকআপ করতে পারি, কিন্তু API এন্ডপয়েন্ট এখনও আমাদের না জানিয়ে এটেস্টেশন-গুলোকে সেন্সর করতে পারে।
+
+ এই সমস্যাটি সমাধান করা অসম্ভব নয়, আমরা আমাদের নিজস্ব GraphQL এন্ডপয়েন্ট চালাতে পারতাম এবং চেইন লগ থেকে এটেস্টেশন-গুলো পেতে পারতাম, কিন্তু আমাদের উদ্দেশ্যের জন্য তা অতিরিক্ত।
+
+- আমরা অ্যাটেস্টরের পরিচয়ের দিকে তাকাই না। যে কেউ আমাদের মিথ্যা তথ্য দিতে পারে। একটি বাস্তব বিশ্বের ইমপ্লিমেন্টেশনে আমাদের বিশ্বস্ত অ্যাটেস্টরদের একটি সেট থাকবে এবং শুধুমাত্র তাদের এটেস্টেশন-গুলোর দিকে তাকাব।
+
+এটি কাজ করতে দেখতে, বিদ্যমান IdP এবং SP বন্ধ করুন এবং এই কমান্ডগুলো চালান:
+
+```sh
+git checkout email-address
+pnpm install
+pnpm start
+```
+
+তারপর আপনার ইমেইল ঠিকানা প্রদান করুন। এটি করার দুটি উপায় আছে:
+
+- একটি প্রাইভেট কি ব্যবহার করে একটি ওয়ালেট ইমপোর্ট করুন, এবং টেস্টিং প্রাইভেট কি `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80` ব্যবহার করুন।
+
+- আপনার নিজের ইমেইল ঠিকানার জন্য একটি এটেস্টেশন যোগ করুন:
+
+ 1. [এটেস্টেশন এক্সপ্লোরারে স্কিমাতে](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977) ব্রাউজ করুন।
+
+ 2. **Attest with Schema**-তে ক্লিক করুন।
+
+ 3. প্রাপক হিসেবে আপনার ইথিরিয়াম এডড্রেস, ইমেইল ঠিকানা হিসেবে আপনার ইমেইল ঠিকানা লিখুন এবং **Onchain** নির্বাচন করুন। তারপর **Make Attestation**-এ ক্লিক করুন।
+
+ 4. আপনার ওয়ালেট-এ লেনদেন অনুমোদন করুন। গ্যাস ফি দেওয়ার জন্য আপনার [অপ্টিমিজম ব্লকচেইন](https://app.optimism.io/bridge/deposit)-এ কিছু ETH প্রয়োজন হবে।
+
+যেভাবেই হোক, এটি করার পর [http://localhost:3000](http://localhost:3000)-এ ব্রাউজ করুন এবং নির্দেশাবলী অনুসরণ করুন। যদি আপনি টেস্টিং প্রাইভেট কি ইমপোর্ট করে থাকেন, তবে আপনি যে ইমেইলটি পাবেন তা হলো `test_addr_0@example.com`। যদি আপনি আপনার নিজের এডড্রেস ব্যবহার করে থাকেন, তবে এটি আপনি যা অ্যাটেস্ট করেছেন তাই হওয়া উচিত।
+
+### Detailed explanation
+
+
+
+নতুন ধাপগুলো হলো GraphQL কমিউনিকেশন, ধাপ 5.6 এবং 5.7।
+
+আবার, এখানে `idp.mts`-এর পরিবর্তিত অংশগুলো দেওয়া হলো।
+
+```typescript
+import { GraphQLClient } from 'graphql-request'
+import { SchemaEncoder } from '@ethereum-attestation-service/eas-sdk'
+```
+
+আমাদের প্রয়োজনীয় লাইব্রেরিগুলো ইমপোর্ট করুন।
+
+```typescript
+const graphqlEndpointUrl = "https://optimism.easscan.org/graphql"
+```
+
+[প্রতিটি ব্লকচেইনের জন্য একটি আলাদা এন্ডপয়েন্ট](https://docs.attest.org/docs/developer-tools/api) রয়েছে।
+
+```typescript
+const graphqlClient = new GraphQLClient(graphqlEndpointUrl, { fetch })
+```
+
+একটি নতুন `GraphQLClient` ক্লায়েন্ট তৈরি করুন যা আমরা এন্ডপয়েন্ট কোয়েরি করার জন্য ব্যবহার করতে পারি।
+
+```typescript
+const graphqlSchema = 'string emailAddress'
+const graphqlEncoder = new SchemaEncoder(graphqlSchema)
+```
+
+GraphQL আমাদের শুধু বাইট সহ একটি অস্বচ্ছ ডেটা অবজেক্ট দেয়। এটি বুঝতে আমাদের স্কিমা প্রয়োজন।
+
+```typescript
+const ethereumAddressToEmail = async ethAddr => {
+```
+
+একটি ইথিরিয়াম এডড্রেস থেকে একটি ইমেইল ঠিকানা পাওয়ার জন্য একটি ফাংশন।
+
+```typescript
+ const query = `
+ query GetAttestationsByRecipient {
+```
+
+এটি একটি GraphQL কোয়েরি।
+
+```typescript
+ attestations(
+```
+
+আমরা এটেস্টেশন খুঁজছি।
+
+```typescript
+ where: {
+ recipient: { equals: "${getAddress(ethAddr)}" }
+ schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" }
+ }
+```
+
+আমরা যে এটেস্টেশন-গুলো চাই তা হলো আমাদের স্কিমার মধ্যে থাকাগুলো, যেখানে প্রাপক হলো `getAddress(ethAddr)`। [`getAddress`](https://viem.sh/docs/utilities/getAddress#getaddress) ফাংশনটি নিশ্চিত করে যে আমাদের এডড্রেস-এর সঠিক [চেকসাম](https://github.com/ethereum/ercs/blob/master/ERCS/erc-55.md) রয়েছে। এটি প্রয়োজনীয় কারণ GraphQL কেস-সেনসিটিভ। "0xBAD060A7", "0xBad060A7", এবং "0xbad060a7" হলো ভিন্ন মান।
+
+```typescript
+ take: 1
+```
+
+আমরা যতগুলো এটেস্টেশন-ই পাই না কেন, আমরা শুধু প্রথমটি চাই।
+
+```typescript
+ ) {
+ data
+ id
+ attester
+ }
+ }`
+```
+
+আমরা যে ফিল্ডগুলো পেতে চাই।
+
+- `attester`: যে এডড্রেস এটেস্টেশন সাবমিট করেছে। সাধারণত এটি এটেস্টেশন-কে বিশ্বাস করা হবে কি না তা সিদ্ধান্ত নিতে ব্যবহৃত হয়।
+- `id`: এটেস্টেশন ID। আপনি এই মানটি ব্যবহার করে [অনচেইন এটেস্টেশন পড়তে পারেন](https://optimism.blockscout.com/address/0x4200000000000000000000000000000000000021?tab=read_proxy&source_address=0x4E0275Ea5a89e7a3c1B58411379D1a0eDdc5b088#0xa3112a64) যাতে যাচাই করা যায় যে GraphQL কোয়েরি থেকে পাওয়া তথ্য সঠিক।
+- `data`: স্কিমা ডেটা (এই ক্ষেত্রে, ইমেইল ঠিকানা)।
+
+```typescript
+ const queryResult = await graphqlClient.request(query)
+
+ if (queryResult.attestations.length == 0)
+ return "no_address@available.is"
+```
+
+যদি কোনো এটেস্টেশন না থাকে, তবে এমন একটি মান রিটার্ন করুন যা স্পষ্টতই ভুল, কিন্তু সার্ভিস প্রোভাইডারের কাছে বৈধ বলে মনে হবে।
+
+```typescript
+ const attestationDataFields = graphqlEncoder.decodeData(queryResult.attestations[0].data)
+ return attestationDataFields[0].value.value
+}
+```
+
+যদি কোনো মান থাকে, তবে ডেটা ডিকোড করতে `decodeData` ব্যবহার করুন। এটি যে মেটাডেটা প্রদান করে তা আমাদের প্রয়োজন নেই, শুধু মানটিই যথেষ্ট।
+
+```typescript
+ const loginResponse = await idp.createLoginResponse(
+ sp,
+ {
+ .
+ .
+ .
+ },
+ "post",
+ {
+ email: await ethereumAddressToEmail(req.params.account)
+ }
+ );
+```
+
+ইমেইল ঠিকানা পেতে নতুন ফাংশনটি ব্যবহার করুন।
+
+## What about decentralization?
+
+এই কনফিগারেশনে ব্যবহারকারীরা এমন কেউ হওয়ার ভান করতে পারে না যা তারা নয়, যতক্ষণ না আমরা ইথিরিয়াম থেকে ইমেইল এডড্রেস ম্যাপিংয়ের জন্য বিশ্বস্ত অ্যাটেস্টরদের উপর নির্ভর করি। তবে, আমাদের আইডেন্টিটি প্রোভাইডার এখনও একটি সেন্ট্রালাইজড কম্পোনেন্ট। যার কাছে আইডেন্টিটি প্রোভাইডারের প্রাইভেট কি আছে সে সার্ভিস প্রোভাইডারকে মিথ্যা তথ্য পাঠাতে পারে।
+
+[মাল্টি-পার্টি কম্পিউটেশন (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) ব্যবহার করে এর একটি সমাধান থাকতে পারে। আমি ভবিষ্যতের একটি টিউটোরিয়ালে এটি সম্পর্কে লেখার আশা রাখি।
+
+## Conclusion
+
+ইথিরিয়াম সিগনেচারের মতো একটি লগ অন স্ট্যান্ডার্ড গ্রহণ করা একটি চিকেন অ্যান্ড এগ সমস্যার সম্মুখীন হয়। সার্ভিস প্রোভাইডাররা সম্ভাব্য সবচেয়ে বিস্তৃত বাজারের কাছে আবেদন করতে চায়। ব্যবহারকারীরা তাদের লগ অন স্ট্যান্ডার্ড সমর্থন করার বিষয়ে চিন্তা না করেই পরিষেবাগুলো অ্যাক্সেস করতে সক্ষম হতে চায়।
+ইথিরিয়াম IdP-এর মতো অ্যাডাপ্টার তৈরি করা আমাদের এই বাধা অতিক্রম করতে সাহায্য করতে পারে।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/gasless/index.md b/public/content/translations/bn/developers/tutorials/gasless/index.md
new file mode 100644
index 00000000000..7348864e2fc
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/gasless/index.md
@@ -0,0 +1,363 @@
+---
+title: "গ্যাস ফি স্পনসর করা: কীভাবে আপনার ব্যবহারকারীদের জন্য লেনদেন খরচ কভার করবেন"
+description: একটি প্রাইভেট কি এবং একটি এডড্রেস তৈরি করা সহজ; এটি কেবল সঠিক সফটওয়্যার চালানোর বিষয়। তবে বিশ্বের অনেক জায়গায় লেনদেন পাঠানোর জন্য ETH পাওয়া অনেক বেশি কঠিন। এই টিউটোরিয়ালে আপনি শিখবেন কীভাবে আপনার স্মার্ট কন্ট্রাক্ট-এ ব্যবহারকারী-স্বাক্ষরিত, অফচেইন স্ট্রাকচার্ড ডেটা এক্সিকিউট করার জন্য অনচেইন গ্যাস খরচ কভার করতে হয়। আপনি ব্যবহারকারীকে লেনদেন তথ্য সম্বলিত একটি স্ট্রাকচারে স্বাক্ষর করান, যা আপনার অফচেইন কোড তারপর একটি লেনদেন হিসেবে ব্লকচেইন-এ জমা দেয়।
+author: ওরি পোমেরান্টজ
+tags: ["গ্যাসলেস", "Solidity", "EIP-712", "মেটা-লেনদেন"]
+skill: intermediate
+breadcrumb: গ্যাস স্পনসরিং
+lang: bn
+published: 2026-02-27
+---
+
+## ভূমিকা {#introduction}
+
+আমরা যদি চাই ইথিরিয়াম আরও [এক বিলিয়ন মানুষকে](https://blog.ethereum.org/category/next-billion) পরিষেবা দিক, তবে আমাদের বাধাগুলো দূর করতে হবে এবং এটি ব্যবহার করা যতটা সম্ভব সহজ করতে হবে। এই বাধার একটি উৎস হলো গ্যাস ফি পরিশোধ করার জন্য ETH-এর প্রয়োজনীয়তা।
+
+আপনার যদি এমন একটি ডিএ্যাপ থাকে যা ব্যবহারকারীদের থেকে অর্থ উপার্জন করে, তবে ব্যবহারকারীদের আপনার সার্ভারের মাধ্যমে লেনদেন জমা দিতে দেওয়া এবং লেনদেন ফি নিজে পরিশোধ করা যৌক্তিক হতে পারে। যেহেতু ব্যবহারকারীরা এখনও তাদের ওয়ালেট-এ একটি [EIP-712 অথোরাইজেশন মেসেজ](https://eips.ethereum.org/EIPS/eip-712) স্বাক্ষর করে, তাই তারা ইথিরিয়াম-এর ইন্টিগ্রিটির নিশ্চয়তা বজায় রাখে। প্রাপ্যতা নির্ভর করে সেই সার্ভারের উপর যা লেনদেন রিলে করে, তাই এটি আরও সীমিত। তবে, আপনি এমনভাবে সেট আপ করতে পারেন যাতে ব্যবহারকারীরা সরাসরি স্মার্ট কন্ট্রাক্ট অ্যাক্সেস করতে পারে (যদি তারা ETH পায়), এবং অন্যরা যদি লেনদেন স্পনসর করতে চায় তবে তাদের নিজস্ব সার্ভার সেট আপ করতে দিতে পারেন।
+
+এই টিউটোরিয়ালের কৌশলটি কেবল তখনই কাজ করে যখন আপনি স্মার্ট কন্ট্রাক্ট নিয়ন্ত্রণ করেন। অন্যান্য কৌশল রয়েছে, যার মধ্যে [একাউন্ট অ্যাবস্ট্রাকশন](https://eips.ethereum.org/EIPS/eip-4337) অন্তর্ভুক্ত, যা আপনাকে অন্যান্য স্মার্ট কন্ট্রাক্ট-এ লেনদেন স্পনসর করতে দেয়, যা আমি ভবিষ্যতের একটি টিউটোরিয়ালে কভার করার আশা করি।
+
+দ্রষ্টব্য: এটি প্রোডাকশন-স্তরের কোড _নয়_। এটি উল্লেখযোগ্য আক্রমণের জন্য ঝুঁকিপূর্ণ এবং এতে প্রধান বৈশিষ্ট্যগুলোর অভাব রয়েছে। এই গাইডের [ঝুঁকি বিভাগে](#vulnerabilities) আরও জানুন।
+
+### পূর্বশর্ত {#prerequisites}
+
+এই টিউটোরিয়ালটি বোঝার জন্য আপনাকে আগে থেকেই পরিচিত হতে হবে:
+
+- Solidity
+- JavaScript
+- React এবং WAGMI। আপনি যদি এই ইউজার ইন্টারফেস টুলগুলোর সাথে পরিচিত না হন, তবে [আমাদের কাছে এর জন্য একটি টিউটোরিয়াল রয়েছে](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/)।
+
+## নমুনা অ্যাপ্লিকেশন {#sample-app}
+
+এখানে নমুনা অ্যাপ্লিকেশনটি Hardhat-এর `Greeter` কন্ট্রাক্টের একটি ভেরিয়েন্ট। আপনি এটি [GitHub-এ](https://github.com/qbzzt/260301-gasless) দেখতে পারেন। স্মার্ট কন্ট্রাক্ট ইতিমধ্যে [Sepolia](https://sepolia.dev/)-তে, [`0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA`](https://eth-sepolia.blockscout.com/address/0xC87506C66c7896366b9E988FE0aA5B6dDE77CFfA) এডড্রেস-এ ডিপ্লয় করা হয়েছে।
+
+এটি কার্যকর দেখতে, এই ধাপগুলো অনুসরণ করুন।
+
+1. রিপোজিটরি ক্লোন করুন এবং প্রয়োজনীয় সফটওয়্যার ইনস্টল করুন।
+
+ ```sh
+ git clone https://github.com/qbzzt/260301-gasless.git
+ cd 260301-gasless/server
+ npm install
+ ```
+
+2. Sepolia-তে ETH আছে এমন একটি ওয়ালেট-এ `PRIVATE_KEY` সেট করতে `.env` সম্পাদনা করুন। আপনার যদি Sepolia ETH-এর প্রয়োজন হয়, তবে [একটি ফাসেট ব্যবহার করুন](/developers/docs/networks/#sepolia)। আদর্শভাবে, এই প্রাইভেট কি আপনার ব্রাউজার ওয়ালেট-এ থাকা কি থেকে আলাদা হওয়া উচিত।
+
+3. সার্ভার চালু করুন।
+
+ ```sh
+ npm run dev
+ ```
+
+4. [`http://localhost:5173`](http://localhost:5173) URL-এ অ্যাপ্লিকেশনটি ব্রাউজ করুন।
+
+5. একটি ওয়ালেট-এর সাথে কানেক্ট করতে **Connect with Injected**-এ ক্লিক করুন। ওয়ালেট-এ অনুমোদন করুন এবং প্রয়োজনে Sepolia-তে পরিবর্তন অনুমোদন করুন।
+
+6. একটি নতুন গ্রিটিং লিখুন এবং **Update greeting via sponsor**-এ ক্লিক করুন।
+
+7. মেসেজটি সাইন করুন।
+
+8. প্রায় 12 সেকেন্ড অপেক্ষা করুন (Sepolia-তে ব্লক টাইম)। অপেক্ষা করার সময় আপনি লেনদেন দেখতে সার্ভারের কনসোলে URL-টি দেখতে পারেন।
+
+9. দেখুন যে গ্রিটিং পরিবর্তিত হয়েছে, এবং সর্বশেষ আপডেট করা এডড্রেস ভ্যালু এখন আপনার ব্রাউজার ওয়ালেট-এর এডড্রেস।
+
+এটি কীভাবে কাজ করে তা বোঝার জন্য, আমাদের দেখতে হবে কীভাবে ইউজার ইন্টারফেসে মেসেজ তৈরি হয়, কীভাবে এটি সার্ভার দ্বারা রিলে করা হয় এবং কীভাবে স্মার্ট কন্ট্রাক্ট এটি প্রসেস করে।
+
+### ইউজার ইন্টারফেস {#ui-changes}
+
+ইউজার ইন্টারফেসটি [WAGMI](https://wagmi.sh/)-এর উপর ভিত্তি করে তৈরি; আপনি [এই টিউটোরিয়ালে](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) এটি সম্পর্কে পড়তে পারেন।
+
+আমরা কীভাবে মেসেজ সাইন করি তা এখানে দেওয়া হলো:
+
+```js
+const signGreeting = useCallback(
+```
+
+React হুক [`useCallback`](https://react.dev/reference/react/useCallback) কম্পোনেন্টটি পুনরায় ড্র করার সময় একই ফাংশন পুনরায় ব্যবহার করে আমাদের পারফরম্যান্স উন্নত করতে দেয়।
+
+```js
+ async (greeting) => {
+ if (!account) throw new Error("Wallet not connected")
+```
+
+যদি কোনো একাউন্ট না থাকে, তবে একটি এরর রেইজ করুন। এটি কখনই হওয়া উচিত নয় কারণ যে UI বোতামটি `signGreeting` কল করার প্রক্রিয়া শুরু করে তা সেই ক্ষেত্রে নিষ্ক্রিয় থাকে। তবে, ভবিষ্যতের প্রোগ্রামাররা সেই সুরক্ষা সরিয়ে ফেলতে পারে, তাই এখানেও এই শর্তটি পরীক্ষা করা একটি ভালো ধারণা।
+
+```js
+ const domain = {
+ name: "Greeter",
+ version: "1",
+ chainId,
+ verifyingContract: contractAddr,
+ }
+```
+
+[ডোমেইন সেপারেটর](https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator)-এর জন্য প্যারামিটার। এই ভ্যালুটি ধ্রুবক, তাই একটি আরও ভালোভাবে অপ্টিমাইজ করা ইমপ্লিমেন্টেশনে, আমরা ফাংশনটি কল করার প্রতিবার পুনরায় গণনা করার পরিবর্তে এটি একবার গণনা করতে পারি।
+
+- `name` হলো একটি ব্যবহারকারী-পঠনযোগ্য নাম, যেমন ডিএ্যাপ-এর নাম যার জন্য আমরা সিগনেচার তৈরি করছি।
+- `version` হলো সংস্করণ। বিভিন্ন সংস্করণ সামঞ্জস্যপূর্ণ নয়।
+- `chainId` হলো সেই চেইন যা আমরা ব্যবহার করছি, যা [WAGMI দ্বারা](https://wagmi.sh/react/api/hooks/useChainId) প্রদান করা হয়েছে।
+- `verifyingContract` হলো কন্ট্রাক্ট এডড্রেস যা এই সিগনেচার যাচাই করবে। আমরা চাই না যে একই সিগনেচার একাধিক কন্ট্রাক্টে প্রয়োগ করা হোক, যদি একাধিক `Greeter` কন্ট্রাক্ট থাকে এবং আমরা চাই যে তাদের আলাদা গ্রিটিং থাকুক।
+
+```js
+
+ const types = {
+ GreetingRequest: [
+ { name: "greeting", type: "string" },
+ ],
+ }
+```
+
+যে ডেটা টাইপ আমরা সাইন করি। এখানে, আমাদের একটি মাত্র প্যারামিটার রয়েছে, `greeting`, তবে বাস্তব জীবনের সিস্টেমে সাধারণত আরও বেশি থাকে।
+
+```js
+ const message = { greeting }
+```
+
+আসল মেসেজ যা আমরা সাইন করতে এবং পাঠাতে চাই। `greeting` হলো ফিল্ডের নাম এবং ভেরিয়েবলের নাম যা এটি পূরণ করে।
+
+```js
+ const signature = await signTypedDataAsync({
+ domain,
+ types,
+ primaryType: "GreetingRequest",
+ message,
+ })
+```
+
+প্রকৃতপক্ষে সিগনেচার পান। এই ফাংশনটি অ্যাসিনক্রোনাস কারণ ব্যবহারকারীরা ডেটা সাইন করতে দীর্ঘ সময় (কম্পিউটারের দৃষ্টিকোণ থেকে) নেয়।
+
+```js
+ const r = `0x${signature.slice(2, 66)}`
+ const s = `0x${signature.slice(66, 130)}`
+ const v = parseInt(signature.slice(130, 132), 16)
+
+ return {
+ req: { greeting },
+ v,
+ r,
+ s,
+ }
+ },
+```
+
+ফাংশনটি একটি একক হেক্সাডেসিমাল ভ্যালু রিটার্ন করে। এখানে আমরা এটিকে ফিল্ডে ভাগ করি।
+
+```js
+ [account, chainId, contractAddr, signTypedDataAsync],
+)
+```
+
+যদি এই ভেরিয়েবলগুলোর কোনোটি পরিবর্তিত হয়, তবে ফাংশনটির একটি নতুন ইনস্ট্যান্স তৈরি করুন। `account` এবং `chainId` প্যারামিটারগুলো ব্যবহারকারী দ্বারা ওয়ালেট-এ পরিবর্তন করা যেতে পারে। `contractAddr` হলো চেইন আইডির একটি ফাংশন। `signTypedDataAsync` পরিবর্তন হওয়া উচিত নয়, তবে আমরা এটি [একটি হুক](https://wagmi.sh/react/api/hooks/useSignTypedData) থেকে ইমপোর্ট করি, তাই আমরা নিশ্চিত হতে পারি না, এবং এটি এখানে যোগ করা সবচেয়ে ভালো।
+
+এখন যেহেতু নতুন গ্রিটিং সাইন করা হয়েছে, আমাদের এটি সার্ভারে পাঠাতে হবে।
+
+```js
+ const sponsoredGreeting = async () => {
+ try {
+```
+
+এই ফাংশনটি একটি সিগনেচার নেয় এবং এটি সার্ভারে পাঠায়।
+
+```js
+ const signedMessage = await signGreeting(newGreeting)
+ const response = await fetch("/server/sponsor", {
+```
+
+আমরা যে সার্ভার থেকে এসেছি তার `/server/sponsor` পাথে পাঠান।
+
+```js
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(signedMessage),
+ })
+```
+
+তথ্য JSON-এনকোড করে পাঠাতে `POST` ব্যবহার করুন।
+
+```js
+ const data = await response.json()
+ console.log("Server response:", data)
+ } catch (err) {
+ console.error("Error:", err)
+ }
+ }
+```
+
+রেসপন্স আউটপুট করুন। একটি প্রোডাকশন সিস্টেমে আমরা ব্যবহারকারীকেও রেসপন্স দেখাব।
+
+### সার্ভার {#server}
+
+আমি আমার ফ্রন্ট-এন্ড হিসেবে [Vite](https://vite.dev/) ব্যবহার করতে পছন্দ করি। এটি স্বয়ংক্রিয়ভাবে React লাইব্রেরিগুলো পরিবেশন করে এবং ফ্রন্ট-এন্ড কোড পরিবর্তিত হলে ব্রাউজার আপডেট করে। তবে, Vite-এ ব্যাকএন্ড টুলিং অন্তর্ভুক্ত নেই।
+
+সমাধানটি [`index.js`](https://github.com/qbzzt/260301-gasless/blob/main/server/index.js)-এ রয়েছে।
+
+```js
+ app.post("/server/sponsor", async (req, res) => {
+ ...
+ })
+
+ // বাকি সবকিছু Vite-কে সামলাতে দিন
+ const vite = await createViteServer({
+ server: { middlewareMode: true }
+ })
+
+ app.use(vite.middlewares)
+```
+
+প্রথমে আমরা যে রিকোয়েস্টগুলো নিজেরা হ্যান্ডেল করি তার জন্য একটি হ্যান্ডলার রেজিস্টার করি (`/server/sponsor`-এ `POST`)। তারপর আমরা অন্যান্য সমস্ত URL হ্যান্ডেল করার জন্য একটি Vite সার্ভার তৈরি এবং ব্যবহার করি।
+
+```js
+ app.post("/server/sponsor", async (req, res) => {
+ try {
+ const signed = req.body
+
+ const txHash = await sepoliaClient.writeContract({
+ address: greeterAddr,
+ abi: greeterABI,
+ functionName: 'sponsoredSetGreeting',
+ args: [signed.req, signed.v, signed.r, signed.s],
+ })
+ } ...
+ })
+```
+
+এটি কেবল একটি স্ট্যান্ডার্ড [viem](https://viem.sh/) ব্লকচেইন কল।
+
+### স্মার্ট কন্ট্রাক্ট {#smart-contract}
+
+অবশেষে, [`Greeter.sol`](https://github.com/qbzzt/260301-gasless/blob/main/contracts/src/Greeter.sol)-কে সিগনেচার যাচাই করতে হবে।
+
+```solidity
+ constructor(string memory _greeting) {
+ greeting = _greeting;
+
+ DOMAIN_SEPARATOR = keccak256(
+ abi.encode(
+ keccak256(
+ "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
+ ),
+ keccak256(bytes("Greeter")),
+ keccak256(bytes("1")),
+ block.chainid,
+ address(this)
+ )
+ );
+ }
+```
+
+কনস্ট্রাক্টর উপরের ইউজার ইন্টারফেস কোডের মতো [ডোমেইন সেপারেটর](https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator) তৈরি করে। ব্লকচেইন এক্সিকিউশন অনেক বেশি ব্যয়বহুল, তাই আমরা এটি কেবল একবার গণনা করি।
+
+```solidity
+ struct GreetingRequest {
+ string greeting;
+ }
+```
+
+এটি সেই স্ট্রাকচার যা সাইন করা হয়। এখানে আমাদের কেবল একটি ফিল্ড রয়েছে।
+
+```solidity
+ bytes32 private constant GREETING_TYPEHASH =
+ keccak256("GreetingRequest(string greeting)");
+```
+
+এটি হলো [স্ট্রাকচার আইডেন্টিফায়ার](https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct)। এটি ইউজার ইন্টারফেসে প্রতিবার গণনা করা হয়।
+
+```solidity
+ function sponsoredSetGreeting(
+ GreetingRequest calldata req,
+ uint8 v,
+ bytes32 r,
+ bytes32 s
+ ) external {
+```
+
+এই ফাংশনটি একটি সাইন করা রিকোয়েস্ট গ্রহণ করে এবং গ্রিটিং আপডেট করে।
+
+```solidity
+ // EIP-712 ডাইজেস্ট গণনা করুন
+ bytes32 digest = keccak256(
+ abi.encodePacked(
+ "\x19\x01",
+ DOMAIN_SEPARATOR,
+ keccak256(
+ abi.encode(
+ GREETING_TYPEHASH,
+ keccak256(bytes(req.greeting))
+ )
+ )
+ )
+ );
+```
+
+[EIP 712](https://eips.ethereum.org/EIPS/eip-712) অনুসারে ডাইজেস্ট তৈরি করুন।
+
+```solidity
+ // স্বাক্ষরকারী পুনরুদ্ধার করুন
+ address signer = ecrecover(digest, v, r, s);
+ require(signer != address(0), "Invalid signature");
+```
+
+সাইনার এডড্রেস পেতে [`ecrecover`](https://www.evm.codes/precompiled?fork=osaka#0x01) ব্যবহার করুন। মনে রাখবেন যে একটি খারাপ সিগনেচার এখনও একটি বৈধ এডড্রেস তৈরি করতে পারে, কেবল একটি র্যান্ডম এডড্রেস।
+
+```solidity
+ // গ্রিটিং এমনভাবে প্রয়োগ করুন যেন স্বাক্ষরকারী এটি কল করেছে
+ greeting = req.greeting;
+ emit SetGreeting(signer, req.greeting);
+ }
+```
+
+গ্রিটিং আপডেট করুন।
+
+## ঝুঁকি {#vulnerabilities}
+
+এটি প্রোডাকশন-স্তরের কোড _নয়_। এটি উল্লেখযোগ্য আক্রমণের জন্য ঝুঁকিপূর্ণ এবং এতে প্রধান বৈশিষ্ট্যগুলোর অভাব রয়েছে। এখানে কিছু দেওয়া হলো, সাথে কীভাবে সেগুলো সমাধান করা যায়।
+
+এই আক্রমণগুলোর কিছু দেখতে, _Attacks_ শিরোনামের অধীনে বোতামগুলোতে ক্লিক করুন এবং দেখুন কী ঘটে। **Invalid signature** বোতামের জন্য, লেনদেন রেসপন্স দেখতে সার্ভার কনসোল চেক করুন।
+
+### সার্ভারে ডিনায়াল-অফ-সার্ভিস {#dos-on-server}
+
+সবচেয়ে সহজ আক্রমণ হলো সার্ভারে একটি [ডিনায়াল-অফ-সার্ভিস](https://en.wikipedia.org/wiki/Denial-of-service_attack) আক্রমণ। সার্ভার ইন্টারনেটের যেকোনো জায়গা থেকে রিকোয়েস্ট গ্রহণ করে এবং সেই রিকোয়েস্টগুলোর ওপর ভিত্তি করে লেনদেন পাঠায়। একজন আক্রমণকারীকে একগুচ্ছ সিগনেচার, বৈধ বা অবৈধ, ইস্যু করা থেকে বিরত রাখার মতো কিছুই নেই। প্রতিটি একটি লেনদেন ঘটাবে। শেষ পর্যন্ত সার্ভারের গ্যাস ফি পরিশোধ করার জন্য ETH শেষ হয়ে যাবে।
+
+এই সমস্যার একটি সমাধান হলো প্রতি ব্লক-এ একটি লেনদেনের হার সীমিত করা। যদি উদ্দেশ্য হয় [এক্সটার্নালি ওনড একাউন্ট](/developers/docs/accounts/#key-differences)-এ গ্রিটিং দেখানো, তবে ব্লক-এর মাঝখানে গ্রিটিং কী তা কোনো ব্যাপার নয়।
+
+আরেকটি সমাধান হলো এডড্রেসগুলোর ট্র্যাক রাখা এবং কেবল বৈধ গ্রাহকদের থেকে সিগনেচার অনুমোদন করা।
+
+### ভুল গ্রিটিং সিগনেচার {#wrong-greeting-sigs}
+
+যখন আপনি **Signature for wrong greeting**-এ ক্লিক করেন, তখন আপনি একটি নির্দিষ্ট এডড্রেস (`0xaA92c5d426430D4769c9E878C1333BDe3d689b3e`) এবং গ্রিটিং (`Hello`)-এর জন্য একটি বৈধ সিগনেচার জমা দেন। কিন্তু এটি একটি ভিন্ন গ্রিটিং-এর সাথে জমা দেয়। এটি `ecrecover`-কে বিভ্রান্ত করে, যা গ্রিটিং পরিবর্তন করে কিন্তু ভুল এডড্রেস থাকে।
+
+এই সমস্যা সমাধানের জন্য, [সাইন করা স্ট্রাকচারে](https://github.com/qbzzt/260301-gasless/blob/main/server/src/Greeter.jsx#L122-L124) এডড্রেস যোগ করুন। এইভাবে, `ecrecover` র্যান্ডম এডড্রেস সিগনেচারের এডড্রেস-এর সাথে মিলবে না, এবং স্মার্ট কন্ট্রাক্ট মেসেজটি প্রত্যাখ্যান করবে।
+
+### রিপ্লে আক্রমণ {#replay-attack}
+
+যখন আপনি **Replay attack**-এ ক্লিক করেন, তখন আপনি একই "আমি 0xaA92c5d426430D4769c9E878C1333BDe3d689b3e, এবং আমি চাই গ্রিটিং `Hello` হোক" সিগনেচার জমা দেন, কিন্তু সঠিক গ্রিটিং-এর সাথে। ফলস্বরূপ, স্মার্ট কন্ট্রাক্ট বিশ্বাস করে যে এডড্রেস (যা আপনার নয়) গ্রিটিংটি আবার `Hello`-তে পরিবর্তন করেছে। এটি করার তথ্য [লেনদেন তথ্যে](https://eth-sepolia.blockscout.com/tx/0xa66afe4bbf886f59533e677a798c802ceab1ac0f9db6e83a4d4b59a45cf7c1b1) সর্বজনীনভাবে উপলব্ধ।
+
+যদি এটি একটি সমস্যা হয়, তবে একটি সমাধান হলো একটি [নন্স](https://en.wikipedia.org/wiki/Cryptographic_nonce) যোগ করা। এডড্রেস এবং সংখ্যার মধ্যে একটি [ম্যাপিং](https://docs.soliditylang.org/en/latest/types.html#mapping-types) রাখুন, এবং সিগনেচারে একটি নন্স ফিল্ড যোগ করুন। যদি নন্স ফিল্ড এডড্রেস-এর ম্যাপিংয়ের সাথে মিলে যায়, তবে সিগনেচার গ্রহণ করুন এবং পরের বারের জন্য ম্যাপিং বৃদ্ধি করুন। যদি তা না হয়, তবে লেনদেন প্রত্যাখ্যান করুন।
+
+আরেকটি সমাধান হলো সাইন করা ডেটাতে একটি টাইমস্ট্যাম্প যোগ করা এবং সেই টাইমস্ট্যাম্পের পর কেবল কয়েক সেকেন্ডের জন্য সিগনেচারটিকে বৈধ হিসেবে গ্রহণ করা। এটি সহজ এবং সস্তা, তবে আমরা টাইম উইন্ডোর মধ্যে রিপ্লে আক্রমণের ঝুঁকি নিই, এবং টাইম উইন্ডো অতিক্রম করলে বৈধ লেনদেন ব্যর্থ হওয়ার ঝুঁকি থাকে।
+
+## অন্যান্য অনুপস্থিত বৈশিষ্ট্য {#other-missing-features}
+
+একটি প্রোডাকশন সেটিংয়ে আমরা আরও কিছু বৈশিষ্ট্য যোগ করব।
+
+### অন্যান্য সার্ভার থেকে অ্যাক্সেস {#other-servers}
+
+বর্তমানে, আমরা যেকোনো এডড্রেস-কে একটি `sponsorSetGreeting` জমা দেওয়ার অনুমতি দিই। বিকেন্দ্রীকরণের স্বার্থে এটি ঠিক আমরা যা চাই তা হতে পারে। অথবা হয়তো আমরা নিশ্চিত করতে চাই যে স্পনসর করা লেনদেনগুলো _আমাদের_ সার্ভারের মাধ্যমে যায়, সেক্ষেত্রে আমরা স্মার্ট কন্ট্রাক্ট-এ `msg.sender` চেক করব।
+
+যাই হোক না কেন, এটি একটি সচেতন ডিজাইনের সিদ্ধান্ত হওয়া উচিত, কেবল বিষয়টি নিয়ে চিন্তা না করার ফলাফল নয়।
+
+### এরর হ্যান্ডলিং {#error-handling}
+
+একজন ব্যবহারকারী একটি গ্রিটিং জমা দেয়। হয়তো এটি পরবর্তী ব্লক-এ আপডেট হয়। হয়তো হয় না। এররগুলো অদৃশ্য। একটি প্রোডাকশন সিস্টেমে, ব্যবহারকারীর এই ক্ষেত্রগুলোর মধ্যে পার্থক্য করতে সক্ষম হওয়া উচিত:
+
+- নতুন গ্রিটিং এখনও জমা দেওয়া হয়নি
+- নতুন গ্রিটিং জমা দেওয়া হয়েছে, এবং এটি প্রক্রিয়াধীন রয়েছে
+- নতুন গ্রিটিং প্রত্যাখ্যান করা হয়েছে
+
+## উপসংহার {#conclusion}
+
+এই পর্যায়ে, আপনি কিছু কেন্দ্রীকরণের বিনিময়ে আপনার ডিএ্যাপ ব্যবহারকারীদের জন্য একটি গ্যাসলেস অভিজ্ঞতা তৈরি করতে সক্ষম হবেন।
+
+তবে, এটি কেবল সেই স্মার্ট কন্ট্রাক্টগুলোর সাথে কাজ করে যা ERC-712 সমর্থন করে। উদাহরণস্বরূপ, একটি ERC-20 টোকেন ট্রান্সফার করার জন্য, কেবল একটি মেসেজের পরিবর্তে মালিকের দ্বারা লেনদেন সাইন করা প্রয়োজন। এর সমাধান হলো [একাউন্ট অ্যাবস্ট্রাকশন (ERC-4337)](https://docs.erc4337.io/index.html)। আমি আশা করি ভবিষ্যতে এটি সম্পর্কে একটি টিউটোরিয়াল লিখব।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/bn/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
new file mode 100644
index 00000000000..1f01cfe4008
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
@@ -0,0 +1,150 @@
+---
+title: ইথিরিয়াম ডেভেলপমেন্ট শুরু করা
+description: "এটি ইথিরিয়াম ডেভেলপমেন্ট শুরু করার জন্য নতুনদের একটি গাইড। আমরা আপনাকে একটি API এন্ডপয়েন্ট তৈরি করা থেকে শুরু করে, কমান্ড লাইন রিকোয়েস্ট করা এবং আপনার প্রথম ওয়েব3 স্ক্রিপ্ট লেখা পর্যন্ত নিয়ে যাব! কোনো ব্লকচেইন ডেভেলপমেন্ট অভিজ্ঞতার প্রয়োজন নেই!"
+author: "এলান হ্যালপার্ন"
+tags: ["javascript", "ethers.js", "nodes", "querying", "alchemy"]
+skill: beginner
+breadcrumb: শুরু করা
+lang: bn
+published: 2020-10-30
+source: Medium
+sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-development-using-alchemy-c3d6a45c567f
+---
+
+
+
+এটি ইথিরিয়াম ডেভেলপমেন্ট শুরু করার জন্য নতুনদের একটি গাইড। এই টিউটোরিয়ালের জন্য আমরা [Alchemy](https://alchemyapi.io/) ব্যবহার করব, যা শীর্ষস্থানীয় ব্লকচেইন ডেভেলপার প্ল্যাটফর্ম এবং Maker, 0x, MyEtherWallet, Dharma এবং Kyber সহ শীর্ষ ব্লকচেইন অ্যাপগুলোর 70% এর লক্ষ লক্ষ ব্যবহারকারীকে শক্তি যোগায়। Alchemy আমাদের ইথিরিয়াম চেইনে একটি API এন্ডপয়েন্টে অ্যাক্সেস দেবে যাতে আমরা লেনদেন পড়তে এবং লিখতে পারি।
+
+আমরা আপনাকে Alchemy-তে সাইন আপ করা থেকে শুরু করে আপনার প্রথম ওয়েব3 স্ক্রিপ্ট লেখা পর্যন্ত নিয়ে যাব! কোনো ব্লকচেইন ডেভেলপমেন্ট অভিজ্ঞতার প্রয়োজন নেই!
+
+## 1. একটি বিনামূল্যের Alchemy অ্যাকাউন্টের জন্য সাইন আপ করুন {#sign-up-for-a-free-alchemy-account}
+
+Alchemy-তে একটি অ্যাকাউন্ট তৈরি করা সহজ, [এখানে বিনামূল্যে সাইন আপ করুন](https://auth.alchemy.com/)।
+
+## 2. একটি Alchemy অ্যাপ তৈরি করুন {#create-an-alchemy-app}
+
+ইথিরিয়াম চেইনের সাথে যোগাযোগ করতে এবং Alchemy-এর প্রোডাক্টগুলো ব্যবহার করতে, আপনার রিকোয়েস্টগুলো প্রমাণীকরণের জন্য একটি API কী প্রয়োজন।
+
+আপনি [ড্যাশবোর্ড থেকে API কী তৈরি করতে পারেন](https://dashboard.alchemy.com/)। একটি নতুন কী তৈরি করতে, নিচে দেখানো হিসেবে "Create App"-এ যান:
+
+_তাদের ড্যাশবোর্ড দেখানোর সুযোগ দেওয়ার জন্য_ [_ShapeShift_](https://shapeshift.com/) _কে বিশেষ ধন্যবাদ!_
+
+
+
+আপনার নতুন কী পেতে "Create App"-এর অধীনে বিস্তারিত তথ্য পূরণ করুন। আপনি এখানে আপনার আগে তৈরি করা অ্যাপ এবং আপনার টিমের তৈরি করা অ্যাপগুলোও দেখতে পারেন। যেকোনো অ্যাপের জন্য "View Key"-তে ক্লিক করে বিদ্যমান কীগুলো টেনে আনুন।
+
+
+
+আপনি "Apps"-এর ওপর হোভার করে এবং একটি নির্বাচন করেও বিদ্যমান API কীগুলো টেনে আনতে পারেন। আপনি এখানে "View Key" করতে পারেন, পাশাপাশি নির্দিষ্ট ডোমেইনগুলো হোয়াইটলিস্ট করতে, বিভিন্ন ডেভেলপার টুল দেখতে এবং অ্যানালিটিক্স দেখতে "Edit App" করতে পারেন।
+
+
+
+## 3. কমান্ড লাইন থেকে একটি রিকোয়েস্ট করুন {#make-a-request-from-the-command-line}
+
+JSON-RPC এবং curl ব্যবহার করে Alchemy-এর মাধ্যমে ইথিরিয়াম ব্লকচেইন এর সাথে ইন্টারঅ্যাক্ট করুন।
+
+ম্যানুয়াল রিকোয়েস্টের জন্য, আমরা `POST` রিকোয়েস্টের মাধ্যমে `JSON-RPC`-এর সাথে ইন্টারঅ্যাক্ট করার পরামর্শ দিই। সহজভাবে `Content-Type: application/json` হেডার এবং আপনার কোয়েরিটি `POST` বডি হিসেবে নিচের ফিল্ডগুলোর সাথে পাস করুন:
+
+- `jsonrpc`: JSON-RPC সংস্করণ—বর্তমানে, শুধুমাত্র `2.0` সমর্থিত।
+- `method`: ETH API মেথড। [API রেফারেন্স দেখুন।](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc)
+- `params`: মেথডে পাস করার জন্য প্যারামিটারগুলোর একটি তালিকা।
+- `id`: আপনার রিকোয়েস্টের আইডি। এটি রেসপন্স দ্বারা ফেরত দেওয়া হবে যাতে আপনি ট্র্যাক রাখতে পারেন কোন রেসপন্সটি কোন রিকোয়েস্টের।
+
+বর্তমান গ্যাস প্রাইস পুনরুদ্ধার করতে আপনি কমান্ড লাইন থেকে রান করতে পারেন এমন একটি উদাহরণ নিচে দেওয়া হলো:
+
+```bash
+curl https://eth-mainnet.alchemyapi.io/v2/demo \
+-X POST \
+-H "Content-Type: application/json" \
+-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
+```
+
+_**নোট:** [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo) কে আপনার নিজের API কী `https://eth-mainnet.alchemyapi.io/v2/**your-api-key` দিয়ে প্রতিস্থাপন করুন।_
+
+**ফলাফল:**
+
+```json
+{ "id": 73,"jsonrpc": "2.0","result": "0x09184e72a000" // 10000000000000 }
+```
+
+## 4. আপনার ওয়েব3 ক্লায়েন্ট সেট আপ করুন {#set-up-your-web3-client}
+
+**যদি আপনার একটি বিদ্যমান ক্লায়েন্ট থাকে,** তবে আপনার বর্তমান নোড প্রোভাইডার URL-টি আপনার API কী সহ একটি Alchemy URL-এ পরিবর্তন করুন: `“https://eth-mainnet.alchemyapi.io/v2/your-api-key"`
+
+**_নোট:_** নিচের স্ক্রিপ্টগুলো একটি **নোড কনটেক্সটে** রান করতে হবে বা **একটি ফাইলে সেভ করতে হবে**, কমান্ড লাইন থেকে রান করা যাবে না। যদি আপনার আগে থেকে Node বা npm ইনস্টল করা না থাকে, তবে ম্যাকের জন্য এই দ্রুত [সেট-আপ গাইডটি](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs) দেখে নিন।
+
+Alchemy-এর সাথে ইন্টিগ্রেট করার জন্য প্রচুর [ওয়েব3 লাইব্রেরি](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) রয়েছে, তবে, আমরা [Alchemy Web3](https://docs.alchemy.com/reference/api-overview) ব্যবহার করার পরামর্শ দিই, যা web3.js-এর একটি ড্রপ-ইন রিপ্লেসমেন্ট এবং Alchemy-এর সাথে নির্বিঘ্নে কাজ করার জন্য তৈরি ও কনফিগার করা হয়েছে। এটি স্বয়ংক্রিয় রিট্রাই এবং শক্তিশালী WebSocket সাপোর্টের মতো একাধিক সুবিধা প্রদান করে।
+
+AlchemyWeb3.js ইনস্টল করতে, **আপনার প্রজেক্ট ডিরেক্টরিতে যান** এবং রান করুন:
+
+**Yarn এর সাথে:**
+
+```
+yarn add @alch/alchemy-web3
+```
+
+**NPM এর সাথে:**
+
+```
+npm install @alch/alchemy-web3
+```
+
+Alchemy-এর নোড ইনফ্রাস্ট্রাকচারের সাথে ইন্টারঅ্যাক্ট করতে, NodeJS-এ রান করুন বা এটি একটি JavaScript ফাইলে যোগ করুন:
+
+```js
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(
+ "https://eth-mainnet.alchemyapi.io/v2/your-api-key"
+)
+```
+
+## 5. আপনার প্রথম ওয়েব3 স্ক্রিপ্ট লিখুন! {#write-your-first-web3-script}
+
+এখন একটু ওয়েব3 প্রোগ্রামিংয়ের বাস্তব অভিজ্ঞতা পেতে আমরা একটি সাধারণ স্ক্রিপ্ট লিখব যা ইথিরিয়াম মেইননেট থেকে সর্বশেষ ব্লক নম্বর প্রিন্ট করবে।
+
+**1. যদি আপনি ইতিমধ্যে না করে থাকেন, তবে আপনার টার্মিনালে একটি নতুন প্রজেক্ট ডিরেক্টরি তৈরি করুন এবং এতে cd করুন:**
+
+```
+mkdir web3-example
+cd web3-example
+```
+
+**2. যদি আপনি ইতিমধ্যে না করে থাকেন, তবে আপনার প্রজেক্টে Alchemy web3 (বা যেকোনো web3) ডিপেন্ডেন্সি ইনস্টল করুন:**
+
+```
+npm install @alch/alchemy-web3
+```
+
+**3. `index.js` নামের একটি ফাইল তৈরি করুন এবং নিচের বিষয়বস্তুগুলো যোগ করুন:**
+
+> আপনার শেষ পর্যন্ত `demo` কে আপনার Alchemy HTTP API কী দিয়ে প্রতিস্থাপন করা উচিত।
+
+```js
+async function main() {
+ const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+ const web3 = createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/demo")
+ const blockNumber = await web3.eth.getBlockNumber()
+ console.log("The latest block number is " + blockNumber)
+}
+main()
+```
+
+async বিষয়গুলোর সাথে অপরিচিত? এই [Medium পোস্টটি](https://medium.com/better-programming/understanding-async-await-in-javascript-1d81bb079b2c) দেখে নিন।
+
+**4. node ব্যবহার করে এটি আপনার টার্মিনালে রান করুন**
+
+```
+node index.js
+```
+
+**5. আপনি এখন আপনার কনসোলে সর্বশেষ ব্লক নম্বরের আউটপুট দেখতে পাবেন!**
+
+```
+The latest block number is 11043912
+```
+
+**দারুণ! অভিনন্দন! আপনি এইমাত্র Alchemy ব্যবহার করে আপনার প্রথম ওয়েব3 স্ক্রিপ্ট লিখেছেন 🎉**
+
+এরপর কী করবেন বুঝতে পারছেন না? আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার চেষ্টা করুন এবং আমাদের [হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট গাইডে](https://www.alchemy.com/docs/hello-world-smart-contract) কিছু সলিডিটি প্রোগ্রামিংয়ের বাস্তব অভিজ্ঞতা নিন, অথবা [ড্যাশবোর্ড ডেমো অ্যাপ](https://docs.alchemyapi.io/tutorials/demo-app) দিয়ে আপনার ড্যাশবোর্ড জ্ঞান পরীক্ষা করুন!
+
+_[Alchemy-তে বিনামূল্যে সাইন আপ করুন](https://auth.alchemy.com/), আমাদের [ডকুমেন্টেশন](https://www.alchemy.com/docs/) দেখুন, এবং সর্বশেষ খবরের জন্য, [Twitter](https://twitter.com/AlchemyPlatform)-এ আমাদের অনুসরণ করুন_।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/bn/developers/tutorials/guide-to-smart-contract-security-tools/index.md
new file mode 100644
index 00000000000..b334ad21d17
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/guide-to-smart-contract-security-tools/index.md
@@ -0,0 +1,103 @@
+---
+title: স্মার্ট কন্ট্রাক্ট সিকিউরিটি টুলের একটি গাইড
+description: তিনটি ভিন্ন টেস্টিং এবং প্রোগ্রাম অ্যানালাইসিস টেকনিকের একটি ওভারভিউ
+author: "ট্রেইলঅফবিটস"
+lang: bn
+tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "সিকিউরিটি"]
+skill: intermediate
+breadcrumb: সিকিউরিটি টুল
+published: 2020-09-07
+source: Building secure contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis
+---
+
+আমরা তিনটি স্বতন্ত্র টেস্টিং এবং প্রোগ্রাম অ্যানালাইসিস টেকনিক ব্যবহার করতে যাচ্ছি:
+
+- **[Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)-এর সাহায্যে স্ট্যাটিক অ্যানালাইসিস।** প্রোগ্রামের সমস্ত পাথ একই সাথে বিভিন্ন প্রোগ্রাম প্রেজেন্টেশনের (যেমন, কন্ট্রোল-ফ্লো-গ্রাফ) মাধ্যমে অনুমান এবং বিশ্লেষণ করা হয়।
+- **[Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)-এর সাহায্যে ফাজিং।** কোডটি লেনদেনের একটি সিউডো-র্যান্ডম জেনারেশনের সাথে এক্সিকিউট করা হয়। ফাজার একটি নির্দিষ্ট প্রপার্টি লঙ্ঘন করার জন্য লেনদেনের একটি সিকোয়েন্স খুঁজে বের করার চেষ্টা করবে।
+- **[Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)-এর সাহায্যে সিম্বলিক এক্সিকিউশন।** এটি একটি ফর্মাল ভেরিফিকেশন টেকনিক, যা প্রতিটি এক্সিকিউশন পাথকে একটি গাণিতিক সূত্রে রূপান্তর করে, যার উপর ভিত্তি করে কনস্ট্রেইন্টগুলো চেক করা যায়।
+
+প্রতিটি টেকনিকের সুবিধা এবং অসুবিধা রয়েছে এবং এগুলো [নির্দিষ্ট ক্ষেত্রে](#determining-security-properties) কার্যকর হবে:
+
+| টেকনিক | টুল | ব্যবহার | গতি | মিস হওয়া বাগ | ফলস অ্যালার্ম |
+| ------------------ | --------- | ----------------------------- | ------- | ----------- | ------------ |
+| স্ট্যাটিক অ্যানালাইসিস | Slither | CLI এবং স্ক্রিপ্ট | সেকেন্ড | মাঝারি | কম |
+| ফাজিং | Echidna | Solidity প্রপার্টি | মিনিট | কম | নেই |
+| সিম্বলিক এক্সিকিউশন | Manticore | Solidity প্রপার্টি এবং স্ক্রিপ্ট | ঘণ্টা | নেই\* | নেই |
+
+\* যদি টাইমআউট ছাড়াই সমস্ত পাথ এক্সপ্লোর করা হয়
+
+**Slither** কয়েক সেকেন্ডের মধ্যে কন্ট্রাক্ট বিশ্লেষণ করে, তবে স্ট্যাটিক অ্যানালাইসিস ফলস অ্যালার্ম তৈরি করতে পারে এবং জটিল চেকের (যেমন, গাণিতিক চেক) জন্য কম উপযুক্ত হতে পারে। বিল্ট-ইন ডিটেক্টরগুলোতে পুশ-বাটন অ্যাক্সেসের জন্য API-এর মাধ্যমে অথবা ব্যবহারকারী-নির্ধারিত চেকের জন্য API-এর মাধ্যমে Slither রান করুন।
+
+**Echidna** কয়েক মিনিট ধরে রান করতে হয় এবং এটি শুধুমাত্র ট্রু পজিটিভ তৈরি করবে। Echidna ব্যবহারকারীর দেওয়া সিকিউরিটি প্রপার্টি চেক করে, যা Solidity-তে লেখা থাকে। এটি বাগ মিস করতে পারে কারণ এটি র্যান্ডম এক্সপ্লোরেশনের উপর ভিত্তি করে কাজ করে।
+
+**Manticore** সবচেয়ে "ভারী" বিশ্লেষণ করে। Echidna-এর মতো, Manticore ব্যবহারকারীর দেওয়া প্রপার্টি ভেরিফাই করে। এটি রান করতে বেশি সময় নেবে, তবে এটি একটি প্রপার্টির বৈধতা প্রমাণ করতে পারে এবং কোনো ফলস অ্যালার্ম রিপোর্ট করবে না।
+
+## প্রস্তাবিত ওয়ার্কফ্লো {#suggested-workflow}
+
+বর্তমানে কোনো সাধারণ বাগ নেই বা পরে তৈরি হবে না তা নিশ্চিত করতে Slither-এর বিল্ট-ইন ডিটেক্টর দিয়ে শুরু করুন। ইনহেরিটেন্স, ভেরিয়েবল ডিপেন্ডেন্সি এবং স্ট্রাকচারাল সমস্যা সম্পর্কিত প্রপার্টি চেক করতে Slither ব্যবহার করুন। কোডবেস বড় হওয়ার সাথে সাথে স্টেট মেশিনের আরও জটিল প্রপার্টি টেস্ট করতে Echidna ব্যবহার করুন। Solidity থেকে পাওয়া যায় না এমন সুরক্ষাগুলোর জন্য কাস্টম চেক তৈরি করতে (যেমন, কোনো ফাংশন ওভাররাইড হওয়া থেকে রক্ষা করা) আবার Slither ব্যবহার করুন। সবশেষে, গুরুত্বপূর্ণ সিকিউরিটি প্রপার্টির (যেমন, গাণিতিক অপারেশন) টার্গেটেড ভেরিফিকেশন করতে Manticore ব্যবহার করুন।
+
+- সাধারণ সমস্যাগুলো ধরতে Slither-এর CLI ব্যবহার করুন
+- আপনার কন্ট্রাক্টের হাই-লেভেল সিকিউরিটি প্রপার্টি টেস্ট করতে Echidna ব্যবহার করুন
+- কাস্টম স্ট্যাটিক চেক লিখতে Slither ব্যবহার করুন
+- আপনি যখন গুরুত্বপূর্ণ সিকিউরিটি প্রপার্টির ইন-ডেপথ নিশ্চয়তা চান তখন Manticore ব্যবহার করুন
+
+**ইউনিট টেস্ট সম্পর্কে একটি নোট**। উচ্চ-মানের সফটওয়্যার তৈরি করতে ইউনিট টেস্ট প্রয়োজনীয়। তবে, সিকিউরিটি ত্রুটি খুঁজে বের করার জন্য এই টেকনিকগুলো সবচেয়ে উপযুক্ত নয়। এগুলো সাধারণত কোডের পজিটিভ আচরণ টেস্ট করতে ব্যবহৃত হয় (অর্থাৎ, কোডটি সাধারণ প্রেক্ষাপটে প্রত্যাশা অনুযায়ী কাজ করে), যেখানে সিকিউরিটি ত্রুটিগুলো সাধারণত এমন এজ কেসগুলোতে থাকে যা ডেভেলপাররা বিবেচনা করেননি। কয়েক ডজন স্মার্ট কন্ট্রাক্ট সিকিউরিটি রিভিউ নিয়ে আমাদের গবেষণায়, আমাদের ক্লায়েন্টের কোডে পাওয়া [সিকিউরিটি ত্রুটির সংখ্যা বা তীব্রতার উপর ইউনিট টেস্ট কভারেজের কোনো প্রভাব ছিল না](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/)।
+
+## সিকিউরিটি প্রপার্টি নির্ধারণ করা {#determining-security-properties}
+
+আপনার কোড কার্যকরভাবে টেস্ট এবং ভেরিফাই করতে, আপনাকে অবশ্যই সেই জায়গাগুলো চিহ্নিত করতে হবে যেখানে মনোযোগ দেওয়া প্রয়োজন। যেহেতু সিকিউরিটির পিছনে ব্যয় করা আপনার রিসোর্স সীমিত, তাই আপনার প্রচেষ্টাকে অপ্টিমাইজ করার জন্য আপনার কোডবেসের দুর্বল বা উচ্চ-মূল্যের অংশগুলো স্কোপ করা গুরুত্বপূর্ণ। থ্রেট মডেলিং এতে সাহায্য করতে পারে। নিচের বিষয়গুলো রিভিউ করার কথা বিবেচনা করুন:
+
+- [র্যাপিড রিস্ক অ্যাসেসমেন্ট](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html) (সময় কম থাকলে এটি আমাদের পছন্দের পদ্ধতি)
+- [ডেটা-সেন্ট্রিক সিস্টেম থ্রেট মডেলিং গাইড](https://csrc.nist.gov/pubs/sp/800/154/ipd) (বা NIST 800-154)
+- [শোস্ট্যাক থ্রেট মডেলিং](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998)
+- [STRIDE]() / [DREAD]()
+- [PASTA](https://wikipedia.org/wiki/Threat_model#P.A.S.T.A.)
+- [অ্যাসারশনের ব্যবহার](https://blog.regehr.org/archives/1091)
+
+### কম্পোনেন্ট {#components}
+
+আপনি কী চেক করতে চান তা জানা আপনাকে সঠিক টুল নির্বাচন করতেও সাহায্য করবে।
+
+স্মার্ট কন্ট্রাক্ট-এর জন্য প্রায়শই প্রাসঙ্গিক বিস্তৃত ক্ষেত্রগুলোর মধ্যে রয়েছে:
+
+- **স্টেট মেশিন।** বেশিরভাগ কন্ট্রাক্টকে একটি স্টেট মেশিন হিসেবে উপস্থাপন করা যেতে পারে। চেক করার কথা বিবেচনা করুন যে (1) কোনো ইনভ্যালিড স্টেটে পৌঁছানো যাবে না, (2) যদি কোনো স্টেট ভ্যালিড হয় তবে সেখানে পৌঁছানো যাবে, এবং (3) কোনো স্টেট কন্ট্রাক্টকে ট্র্যাপ করবে না।
+
+ - স্টেট-মেশিন স্পেসিফিকেশন টেস্ট করার জন্য Echidna এবং Manticore হলো পছন্দের টুল।
+
+- **অ্যাক্সেস কন্ট্রোল।** যদি আপনার সিস্টেমে প্রিভিলেজড ব্যবহারকারী (যেমন, একজন মালিক, কন্ট্রোলার, ...) থাকে তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে (1) প্রতিটি ব্যবহারকারী কেবল অনুমোদিত কাজগুলোই করতে পারে এবং (2) কোনো ব্যবহারকারী বেশি প্রিভিলেজড ব্যবহারকারীর কাজ ব্লক করতে পারবে না।
+
+ - Slither, Echidna এবং Manticore সঠিক অ্যাক্সেস কন্ট্রোল চেক করতে পারে। উদাহরণস্বরূপ, Slither চেক করতে পারে যে শুধুমাত্র হোয়াইটলিস্টেড ফাংশনগুলোতে onlyOwner মডিফায়ার নেই। Echidna এবং Manticore আরও জটিল অ্যাক্সেস কন্ট্রোলের জন্য দরকারী, যেমন কোনো পারমিশন কেবল তখনই দেওয়া হয় যদি কন্ট্রাক্ট একটি নির্দিষ্ট স্টেটে পৌঁছায়।
+
+- **গাণিতিক অপারেশন।** গাণিতিক অপারেশনগুলোর সঠিকতা চেক করা অত্যন্ত গুরুত্বপূর্ণ। ওভারফ্লো/আন্ডারফ্লো প্রতিরোধ করার জন্য সব জায়গায় `SafeMath` ব্যবহার করা একটি ভালো পদক্ষেপ, তবে আপনাকে অবশ্যই রাউন্ডিং সমস্যা এবং কন্ট্রাক্টকে ট্র্যাপ করে এমন ত্রুটিসহ অন্যান্য গাণিতিক ত্রুটিগুলো বিবেচনা করতে হবে।
+
+ - এখানে Manticore হলো সেরা পছন্দ। যদি গাণিতিক হিসাব SMT সলভারের আওতার বাইরে হয় তবে Echidna ব্যবহার করা যেতে পারে।
+
+- **ইনহেরিটেন্সের সঠিকতা।** Solidity কন্ট্রাক্টগুলো মাল্টিপল ইনহেরিটেন্সের উপর ব্যাপকভাবে নির্ভর করে। `super` কল মিস করা শ্যাডোইং ফাংশন এবং ভুলভাবে ব্যাখ্যা করা c3 লিনিয়ারাইজেশন অর্ডারের মতো ভুলগুলো সহজেই তৈরি হতে পারে।
+
+ - এই সমস্যাগুলো শনাক্ত করা নিশ্চিত করার জন্য Slither হলো উপযুক্ত টুল।
+
+- **এক্সটার্নাল ইন্টারঅ্যাকশন।** কন্ট্রাক্টগুলো একে অপরের সাথে ইন্টারঅ্যাক্ট করে এবং কিছু এক্সটার্নাল কন্ট্রাক্টকে বিশ্বাস করা উচিত নয়। উদাহরণস্বরূপ, যদি আপনার কন্ট্রাক্ট এক্সটার্নাল ওরাকল-এর উপর নির্ভর করে, তবে উপলব্ধ ওরাকলগুলোর অর্ধেক আপস করা হলে এটি কি সুরক্ষিত থাকবে?
+
+ - আপনার কন্ট্রাক্টের সাথে এক্সটার্নাল ইন্টারঅ্যাকশন টেস্ট করার জন্য Manticore এবং Echidna হলো সেরা পছন্দ। এক্সটার্নাল কন্ট্রাক্ট স্টাব করার জন্য Manticore-এর একটি বিল্ট-ইন মেকানিজম রয়েছে।
+
+- **স্ট্যান্ডার্ড কনফরমেন্স।** ইথিরিয়াম স্ট্যান্ডার্ডগুলোর (যেমন, ERC20) ডিজাইনে ত্রুটির ইতিহাস রয়েছে। আপনি যে স্ট্যান্ডার্ডের উপর ভিত্তি করে তৈরি করছেন তার সীমাবদ্ধতা সম্পর্কে সচেতন থাকুন।
+ - Slither, Echidna এবং Manticore আপনাকে একটি নির্দিষ্ট স্ট্যান্ডার্ড থেকে বিচ্যুতি শনাক্ত করতে সাহায্য করবে।
+
+### টুল নির্বাচনের চিটশিট {#tool-selection-cheatsheet}
+
+| কম্পোনেন্ট | টুল | উদাহরণ |
+| ----------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| স্টেট মেশিন | Echidna, Manticore |
+| অ্যাক্সেস কন্ট্রোল | Slither, Echidna, Manticore | [Slither অনুশীলন ২](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise2.md), [Echidna অনুশীলন ২](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-2.md) |
+| গাণিতিক অপারেশন | Manticore, Echidna | [Echidna অনুশীলন ১](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-1.md), [Manticore অনুশীলন ১ - ৩](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) |
+| ইনহেরিটেন্সের সঠিকতা | Slither | [Slither অনুশীলন ১](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise1.md) |
+| এক্সটার্নাল ইন্টারঅ্যাকশন | Manticore, Echidna |
+| স্ট্যান্ডার্ড কনফরমেন্স | Slither, Echidna, Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) |
+
+আপনার লক্ষ্যের উপর নির্ভর করে অন্যান্য ক্ষেত্রগুলো চেক করার প্রয়োজন হবে, তবে ফোকাস করার এই মূল ক্ষেত্রগুলো যেকোনো স্মার্ট কন্ট্রাক্ট সিস্টেমের জন্য একটি ভালো শুরু।
+
+আমাদের পাবলিক অডিটগুলোতে ভেরিফাইড বা টেস্ট করা প্রপার্টির উদাহরণ রয়েছে। বাস্তব-বিশ্বের সিকিউরিটি প্রপার্টিগুলো রিভিউ করতে নিচের রিপোর্টগুলোর `Automated Testing and Verification` সেকশনগুলো পড়ার কথা বিবেচনা করুন:
+
+- [0x](https://github.com/trailofbits/publications/blob/master/reviews/0x-protocol.pdf)
+- [Balancer](https://github.com/trailofbits/publications/blob/master/reviews/BalancerCore.pdf)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/bn/developers/tutorials/hello-world-smart-contract-fullstack/index.md
new file mode 100644
index 00000000000..02b5edf3fe4
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/hello-world-smart-contract-fullstack/index.md
@@ -0,0 +1,1544 @@
+---
+title: নতুনদের জন্য হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট - ফুলস্ট্যাক
+description: ইথেরিয়ামে একটি সাধারণ স্মার্ট কন্ট্রাক্ট লেখা এবং ডিপ্লয় করার উপর প্রাথমিক টিউটোরিয়াল।
+author: "nstrike2"
+breadcrumb: হ্যালো ওয়ার্ল্ড ফুলস্ট্যাক
+tags:
+ [
+ "solidity",
+ "hardhat",
+ "alchemy",
+ "স্মার্ট কন্ট্রাক্ট",
+ "ডিপ্লয়িং",
+ "ব্লক এক্সপ্লোরার",
+ "ফ্রন্টএন্ড",
+ "লেনদেন",
+ "ফ্রেমওয়ার্ক",
+ ]
+skill: beginner
+lang: bn
+published: 2021-10-25
+---
+
+আপনি যদি ব্লকচেইন ডেভেলপমেন্টে নতুন হয়ে থাকেন এবং কোথা থেকে শুরু করবেন বা কীভাবে স্মার্ট কন্ট্রাক্ট ডিপ্লয় এবং এর সাথে ইন্টারঅ্যাক্ট করবেন তা না জানেন, তবে এই গাইডটি আপনার জন্য। আমরা [MetaMask](https://metamask.io), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org), এবং [Alchemy](https://alchemy.com/eth) ব্যবহার করে Goerli টেস্ট নেটওয়ার্কে একটি সাধারণ স্মার্ট কন্ট্রাক্ট তৈরি এবং ডিপ্লয় করার প্রক্রিয়া ধাপে ধাপে দেখব।
+
+এই টিউটোরিয়ালটি সম্পূর্ণ করতে আপনার একটি Alchemy একাউন্ট প্রয়োজন হবে। [একটি বিনামূল্যের একাউন্টের জন্য সাইন আপ করুন](https://www.alchemy.com/)।
+
+যেকোনো পর্যায়ে আপনার যদি কোনো প্রশ্ন থাকে, তবে নির্দ্বিধায় [Alchemy Discord](https://discord.gg/gWuC7zB)-এ যোগাযোগ করুন!
+
+## পর্ব 1 - Hardhat ব্যবহার করে আপনার স্মার্ট কন্ট্রাক্ট তৈরি এবং ডিপ্লয় করুন {#part-1}
+
+### ইথিরিয়াম নেটওয়ার্ক-এর সাথে কানেক্ট করুন {#connect-to-the-ethereum-network}
+
+ইথিরিয়াম চেইনে রিকোয়েস্ট করার অনেক উপায় আছে। সহজে করার জন্য, আমরা Alchemy-তে একটি ফ্রি একাউন্ট ব্যবহার করব, যা একটি ব্লকচেইন ডেভেলপার প্ল্যাটফর্ম এবং API, এটি আমাদের নিজেদের কোনো নোড না চালিয়েই ইথিরিয়াম চেইনের সাথে যোগাযোগ করতে দেয়। Alchemy-তে মনিটরিং এবং অ্যানালিটিক্সের জন্য ডেভেলপার টুলসও রয়েছে; আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয়মেন্টের ভেতরে কী ঘটছে তা বোঝার জন্য আমরা এই টিউটোরিয়ালে সেগুলোর সুবিধা নেব।
+
+### আপনার অ্যাপ এবং API কি তৈরি করুন {#create-your-app-and-api-key}
+
+একবার আপনি একটি Alchemy একাউন্ট তৈরি করলে, আপনি একটি অ্যাপ তৈরি করে একটি API কি জেনারেট করতে পারেন। এটি আপনাকে Goerli টেস্টনেট-এ রিকোয়েস্ট করার অনুমতি দেবে। আপনি যদি টেস্টনেট-এর সাথে পরিচিত না হন তবে আপনি [নেটওয়ার্ক বেছে নেওয়ার বিষয়ে Alchemy-এর গাইড পড়তে পারেন](https://www.alchemy.com/docs/choosing-a-web3-network)।
+
+Alchemy ড্যাশবোর্ডে, নেভিগেশন বারে **Apps** ড্রপডাউনটি খুঁজুন এবং **Create App**-এ ক্লিক করুন।
+
+
+
+আপনার অ্যাপটির নাম দিন '_Hello World_' এবং একটি ছোট বিবরণ লিখুন। আপনার এনভায়রনমেন্ট হিসেবে **Staging** এবং আপনার নেটওয়ার্ক হিসেবে **Goerli** নির্বাচন করুন।
+
+
+
+_নোট: অবশ্যই **Goerli** নির্বাচন করবেন, অন্যথায় এই টিউটোরিয়ালটি কাজ করবে না।_
+
+**Create app**-এ ক্লিক করুন। আপনার অ্যাপটি নিচের টেবিলে দেখা যাবে।
+
+### একটি ইথিরিয়াম একাউন্ট তৈরি করুন {#create-an-ethereum-account}
+
+লেনদেন পাঠানো এবং গ্রহণ করার জন্য আপনার একটি ইথিরিয়াম একাউন্ট প্রয়োজন। আমরা MetaMask ব্যবহার করব, যা ব্রাউজারের একটি ভার্চুয়াল ওয়ালেট এবং এটি ব্যবহারকারীদের তাদের ইথিরিয়াম একাউন্ট এডড্রেস পরিচালনা করতে দেয়।
+
+আপনি বিনামূল্যে [এখানে](https://metamask.io/download) একটি MetaMask একাউন্ট ডাউনলোড এবং তৈরি করতে পারেন। যখন আপনি একটি একাউন্ট তৈরি করছেন, বা আপনার যদি আগে থেকেই একটি একাউন্ট থাকে, তবে নিশ্চিত করুন যে আপনি উপরের ডানদিকে "Goerli Test Network"-এ সুইচ করেছেন (যাতে আমরা আসল টাকা নিয়ে কাজ না করি)।
+
+### ধাপ 4: একটি ফাসেট থেকে ইথার যোগ করুন {#step-4-add-ether-from-a-faucet}
+
+টেস্ট নেটওয়ার্ক-এ আপনার স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে, আপনার কিছু ফেক ETH প্রয়োজন হবে। Goerli নেটওয়ার্ক-এ ETH পেতে, একটি Goerli ফাসেট-এ যান এবং আপনার Goerli একাউন্ট এডড্রেস লিখুন। মনে রাখবেন যে Goerli ফাসেটগুলো সম্প্রতি কিছুটা অবিশ্বস্ত হতে পারে - চেষ্টা করার মতো বিকল্পগুলোর একটি তালিকার জন্য [টেস্ট নেটওয়ার্ক পেজ](/developers/docs/networks/#goerli) দেখুন:
+
+_নোট: নেটওয়ার্ক কনজেশনের কারণে, এতে কিছুটা সময় লাগতে পারে।_
+``
+
+### ধাপ 5: আপনার ব্যালেন্স চেক করুন {#step-5-check-your-balance}
+
+আপনার ওয়ালেট-এ ETH আছে কিনা তা ডাবল-চেক করতে, চলুন [Alchemy-এর কম্পোজার টুল](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) ব্যবহার করে একটি [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) রিকোয়েস্ট করি। এটি আমাদের ওয়ালেট-এ থাকা ETH-এর পরিমাণ রিটার্ন করবে। আরও জানতে [কম্পোজার টুল কীভাবে ব্যবহার করতে হয় সে সম্পর্কে Alchemy-এর ছোট টিউটোরিয়ালটি](https://youtu.be/r6sjRxBZJuU) দেখুন।
+
+আপনার MetaMask একাউন্ট এডড্রেস ইনপুট দিন এবং **Send Request**-এ ক্লিক করুন। আপনি নিচের কোড স্নিপেটের মতো একটি রেসপন্স দেখতে পাবেন।
+
+```json
+{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
+```
+
+> _নোট: এই ফলাফলটি wei-তে, ETH-এ নয়। Wei ইথারের সবচেয়ে ছোট একক হিসেবে ব্যবহৃত হয়।_
+
+যাক! আমাদের ফেক টাকা সব সেখানেই আছে।
+
+### ধাপ 6: আমাদের প্রজেক্ট ইনিশিয়ালাইজ করুন {#step-6-initialize-our-project}
+
+প্রথমে, আমাদের প্রজেক্টের জন্য একটি ফোল্ডার তৈরি করতে হবে। আপনার কমান্ড লাইনে যান এবং নিচের কমান্ডগুলো ইনপুট দিন।
+
+```
+mkdir hello-world
+cd hello-world
+```
+
+এখন যেহেতু আমরা আমাদের প্রজেক্ট ফোল্ডারের ভেতরে আছি, আমরা প্রজেক্টটি ইনিশিয়ালাইজ করতে `npm init` ব্যবহার করব।
+
+> আপনার যদি এখনও npm ইনস্টল করা না থাকে, তবে [Node.js এবং npm ইনস্টল করার জন্য এই নির্দেশিকাগুলো](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) অনুসরণ করুন।
+
+এই টিউটোরিয়ালের উদ্দেশ্যে, আপনি ইনিশিয়ালাইজেশনের প্রশ্নগুলোর উত্তর কীভাবে দিচ্ছেন তা কোনো ব্যাপার না। রেফারেন্সের জন্য আমরা এটি কীভাবে করেছি তা এখানে দেওয়া হলো:
+
+```
+package name: (hello-world)
+version: (1.0.0)
+description: hello world smart contract
+entry point: (index.js)
+test command:
+git repository:
+keywords:
+author:
+license: (ISC)
+
+About to write to /Users/.../.../.../hello-world/package.json:
+
+{
+ "name": "hello-world",
+ "version": "1.0.0",
+ "description": "hello world smart contract",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC"
+}
+```
+
+package.json অনুমোদন করুন এবং আমরা কাজ শুরু করতে প্রস্তুত!
+
+### ধাপ 7: Hardhat ডাউনলোড করুন {#step-7-download-hardhat}
+
+Hardhat হলো আপনার ইথিরিয়াম সফটওয়্যার কম্পাইল, ডিপ্লয়, টেস্ট এবং ডিবাগ করার জন্য একটি ডেভেলপমেন্ট এনভায়রনমেন্ট। এটি লাইভ চেইনে ডিপ্লয় করার আগে লোকালি স্মার্ট কন্ট্রাক্ট এবং ডিএ্যাপস তৈরি করার সময় ডেভেলপারদের সাহায্য করে।
+
+আমাদের `hello-world` প্রজেক্টের ভেতরে রান করুন:
+
+```
+npm install --save-dev hardhat
+```
+
+[ইনস্টলেশন নির্দেশিকা](https://hardhat.org/getting-started/#overview) সম্পর্কে আরও বিস্তারিত জানতে এই পেজটি দেখুন।
+
+### ধাপ 8: Hardhat প্রজেক্ট তৈরি করুন {#step-8-create-hardhat-project}
+
+আমাদের `hello-world` প্রজেক্ট ফোল্ডারের ভেতরে, রান করুন:
+
+```
+npx hardhat
+```
+
+এরপর আপনি একটি ওয়েলকাম মেসেজ এবং আপনি কী করতে চান তা নির্বাচন করার অপশন দেখতে পাবেন। "create an empty hardhat.config.js" নির্বাচন করুন:
+
+```
+888 888 888 888 888
+888 888 888 888 888
+888 888 888 888 888
+8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+888 888 "88b 888P" d88" 888 888 "88b "88b 888
+888 888 .d888888 888 888 888 888 888 .d888888 888
+888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+
+👷 Welcome to Hardhat v2.0.11 👷
+
+What do you want to do? …
+Create a sample project
+❯ Create an empty hardhat.config.js
+Quit
+```
+
+এটি প্রজেক্টে একটি `hardhat.config.js` ফাইল জেনারেট করবে। আমাদের প্রজেক্টের সেটআপ নির্দিষ্ট করার জন্য আমরা টিউটোরিয়ালের পরে এটি ব্যবহার করব।
+
+### ধাপ 9: প্রজেক্ট ফোল্ডার যোগ করুন {#step-9-add-project-folders}
+
+প্রজেক্টটি গুছিয়ে রাখতে, চলুন দুটি নতুন ফোল্ডার তৈরি করি। কমান্ড লাইনে, আপনার `hello-world` প্রজেক্টের রুট ডিরেক্টরিতে যান এবং টাইপ করুন:
+
+```
+mkdir contracts
+mkdir scripts
+```
+
+- `contracts/` হলো সেই জায়গা যেখানে আমরা আমাদের হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট কোড ফাইল রাখব
+- `scripts/` হলো সেই জায়গা যেখানে আমরা আমাদের কন্ট্রাক্ট ডিপ্লয় এবং ইন্টারঅ্যাক্ট করার জন্য স্ক্রিপ্টগুলো রাখব
+
+### ধাপ 10: আমাদের কন্ট্রাক্ট লিখুন {#step-10-write-our-contract}
+
+আপনি হয়তো নিজেকে জিজ্ঞাসা করছেন, আমরা কখন কোড লিখতে যাচ্ছি? এখনই সময়!
+
+আপনার পছন্দের এডিটরে hello-world প্রজেক্টটি খুলুন। স্মার্ট কন্ট্রাক্ট সাধারণত Solidity-তে লেখা হয়, যা আমরা আমাদের স্মার্ট কন্ট্রাক্ট লিখতে ব্যবহার করব।
+
+1. `contracts` ফোল্ডারে যান এবং `HelloWorld.sol` নামে একটি নতুন ফাইল তৈরি করুন
+2. নিচে একটি নমুনা হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট দেওয়া হলো যা আমরা এই টিউটোরিয়ালের জন্য ব্যবহার করব। নিচের বিষয়বস্তুগুলো `HelloWorld.sol` ফাইলে কপি করুন।
+
+_নোট: এই কন্ট্রাক্টটি কী করে তা বোঝার জন্য অবশ্যই কমেন্টগুলো পড়বেন।_
+
+```
+// Specifies the version of Solidity, using semantic versioning.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity >=0.7.3;
+
+// Defines a contract named `HelloWorld`.
+// A contract is a collection of functions and data (its state). Once deployed, a contract resides at a specific address on the Ethereum blockchain. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ //Emitted when update function is called
+ //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
+ event UpdatedMessages(string oldStr, string newStr);
+
+ // Declares a state variable `message` of type `string`.
+ // State variables are variables whose values are permanently stored in contract storage. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
+ string public message;
+
+ // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
+ // Constructors are used to initialize the contract's data. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
+ message = initMessage;
+ }
+
+ // A public function that accepts a string argument and updates the `message` storage variable.
+ function update(string memory newMessage) public {
+ string memory oldMsg = message;
+ message = newMessage;
+ emit UpdatedMessages(oldMsg, newMessage);
+ }
+}
+```
+
+এটি একটি বেসিক স্মার্ট কন্ট্রাক্ট যা তৈরি করার সময় একটি মেসেজ স্টোর করে। `update` ফাংশন কল করে এটি আপডেট করা যেতে পারে।
+
+### ধাপ 11: আপনার প্রজেক্টের সাথে MetaMask এবং Alchemy কানেক্ট করুন {#step-11-connect-metamask-alchemy-to-your-project}
+
+আমরা একটি MetaMask ওয়ালেট, Alchemy একাউন্ট তৈরি করেছি এবং আমাদের স্মার্ট কন্ট্রাক্ট লিখেছি, এখন এই তিনটিকে কানেক্ট করার সময়।
+
+আপনার ওয়ালেট থেকে পাঠানো প্রতিটি লেনদেন-এর জন্য আপনার ইউনিক প্রাইভেট কি ব্যবহার করে একটি সিগনেচার প্রয়োজন। আমাদের প্রোগ্রামকে এই অনুমতি দেওয়ার জন্য, আমরা নিরাপদে আমাদের প্রাইভেট কি একটি এনভায়রনমেন্ট ফাইলে স্টোর করতে পারি। আমরা এখানে Alchemy-এর জন্য একটি API কি-ও স্টোর করব।
+
+> লেনদেন পাঠানো সম্পর্কে আরও জানতে, web3 ব্যবহার করে লেনদেন পাঠানোর উপর [এই টিউটোরিয়ালটি](https://www.alchemy.com/docs/hello-world-smart-contract#step-11-connect-metamask--alchemy-to-your-project) দেখুন।
+
+প্রথমে, আপনার প্রজেক্ট ডিরেক্টরিতে dotenv প্যাকেজটি ইনস্টল করুন:
+
+```
+npm install dotenv --save
+```
+
+তারপর, প্রজেক্টের রুট ডিরেক্টরিতে একটি `.env` ফাইল তৈরি করুন। এতে আপনার MetaMask প্রাইভেট কি এবং HTTP Alchemy API URL যোগ করুন।
+
+আপনার এনভায়রনমেন্ট ফাইলের নাম অবশ্যই `.env` হতে হবে, অন্যথায় এটি এনভায়রনমেন্ট ফাইল হিসেবে চেনা যাবে না।
+
+এর নাম `process.env` বা `.env-custom` বা অন্য কিছু দেবেন না।
+
+- আপনার প্রাইভেট কি এক্সপোর্ট করতে [এই নির্দেশিকাগুলো](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) অনুসরণ করুন
+- HTTP Alchemy API URL পেতে নিচে দেখুন
+
+
+
+আপনার `.env` ফাইলটি দেখতে এরকম হওয়া উচিত:
+
+```
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
+PRIVATE_KEY = "your-metamask-private-key"
+```
+
+এগুলোকে আমাদের কোডের সাথে কানেক্ট করতে, আমরা 13 নম্বর ধাপে আমাদের `hardhat.config.js` ফাইলে এই ভেরিয়েবলগুলোর রেফারেন্স দেব।
+
+### ধাপ 12: Ethers.js ইনস্টল করুন {#step-12-install-ethersjs}
+
+Ethers.js হলো একটি লাইব্রেরি যা [স্ট্যান্ডার্ড JSON-RPC মেথডগুলোকে](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc) আরও ইউজার ফ্রেন্ডলি মেথড দিয়ে র্যাপ করে ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করা এবং রিকোয়েস্ট করা সহজ করে তোলে।
+
+Hardhat আমাদের অতিরিক্ত টুলিং এবং বর্ধিত কার্যকারিতার জন্য [প্লাগইন](https://hardhat.org/plugins/) ইন্টিগ্রেট করার অনুমতি দেয়। আমরা কন্ট্রাক্ট ডিপ্লয়মেন্টের জন্য [Ethers প্লাগইন](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers)-এর সুবিধা নেব।
+
+আপনার প্রজেক্ট ডিরেক্টরিতে টাইপ করুন:
+
+```bash
+npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"
+```
+
+### ধাপ 13: hardhat.config.js আপডেট করুন {#step-13-update-hardhat-configjs}
+
+আমরা এ পর্যন্ত বেশ কয়েকটি ডিপেন্ডেন্সি এবং প্লাগইন যোগ করেছি, এখন আমাদের `hardhat.config.js` আপডেট করতে হবে যাতে আমাদের প্রজেক্ট সেগুলোর সব সম্পর্কে জানতে পারে।
+
+আপনার `hardhat.config.js` আপডেট করে এরকম করুন:
+
+```javascript
+/* *
+ * @type import('hardhat/config').HardhatUserConfig */
+
+require("dotenv").config()
+require("@nomiclabs/hardhat-ethers")
+
+const { API_URL, PRIVATE_KEY } = process.env
+
+module.exports = {
+ solidity: "0.7.3",
+ defaultNetwork: "goerli",
+ networks: {
+ hardhat: {},
+ goerli: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`],
+ },
+ },
+}
+```
+
+### ধাপ 14: আমাদের কন্ট্রাক্ট কম্পাইল করুন {#step-14-compile-our-contract}
+
+এ পর্যন্ত সবকিছু ঠিকঠাক কাজ করছে কিনা তা নিশ্চিত করতে, চলুন আমাদের কন্ট্রাক্ট কম্পাইল করি। `compile` টাস্কটি হলো বিল্ট-ইন hardhat টাস্কগুলোর মধ্যে একটি।
+
+কমান্ড লাইন থেকে রান করুন:
+
+```bash
+npx hardhat compile
+```
+
+আপনি `SPDX license identifier not provided in source file` সম্পর্কে একটি ওয়ার্নিং পেতে পারেন, তবে এটি নিয়ে চিন্তা করার কোনো কারণ নেই — আশা করি অন্য সবকিছু ঠিক আছে! যদি তা না হয়, তবে আপনি সবসময় [Alchemy ডিসকর্ড](https://discord.gg/u72VCg3)-এ মেসেজ করতে পারেন।
+
+### ধাপ 15: আমাদের ডিপ্লয় স্ক্রিপ্ট লিখুন {#step-15-write-our-deploy-script}
+
+এখন যেহেতু আমাদের কন্ট্রাক্ট লেখা হয়ে গেছে এবং আমাদের কনফিগারেশন ফাইল প্রস্তুত, তাই এখন আমাদের কন্ট্রাক্ট ডিপ্লয় স্ক্রিপ্ট লেখার সময়।
+
+`scripts/` ফোল্ডারে যান এবং `deploy.js` নামে একটি নতুন ফাইল তৈরি করুন, এতে নিচের বিষয়বস্তুগুলো যোগ করুন:
+
+```javascript
+async function main() {
+ const HelloWorld = await ethers.getContractFactory("HelloWorld")
+
+ // ডিপ্লয়মেন্ট শুরু করুন, একটি প্রমিস রিটার্ন করে যা একটি কন্ট্রাক্ট অবজেক্টে রিজলভ হয়
+ const hello_world = await HelloWorld.deploy("Hello World!")
+ console.log("Contract deployed to address:", hello_world.address)
+}
+
+main()
+ .then(() => process.exit(0))
+ .catch((error) => {
+ console.error(error)
+ process.exit(1)
+ })
+```
+
+Hardhat তাদের [কন্ট্রাক্টস টিউটোরিয়ালে](https://hardhat.org/tutorial/testing-contracts.html#writing-tests) এই কোডের প্রতিটি লাইন কী করে তা খুব সুন্দরভাবে ব্যাখ্যা করেছে, আমরা এখানে তাদের ব্যাখ্যাগুলো গ্রহণ করেছি।
+
+```javascript
+const HelloWorld = await ethers.getContractFactory("HelloWorld")
+```
+
+ethers.js-এ একটি `ContractFactory` হলো নতুন স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার জন্য ব্যবহৃত একটি অ্যাবস্ট্রাকশন, তাই এখানে `HelloWorld` হলো আমাদের হ্যালো ওয়ার্ল্ড কন্ট্রাক্টের ইনস্ট্যান্সগুলোর জন্য একটি [ফ্যাক্টরি]()। `hardhat-ethers` প্লাগইন ব্যবহার করার সময় `ContractFactory` এবং `Contract`, ইনস্ট্যান্সগুলো ডিফল্টভাবে প্রথম সাইনার (মালিক)-এর সাথে কানেক্টেড থাকে।
+
+```javascript
+const hello_world = await HelloWorld.deploy()
+```
+
+একটি `ContractFactory`-তে `deploy()` কল করলে ডিপ্লয়মেন্ট শুরু হবে, এবং একটি `Promise` রিটার্ন করবে যা একটি `Contract` অবজেক্টে রিজলভ হয়। এটি এমন একটি অবজেক্ট যার মধ্যে আমাদের স্মার্ট কন্ট্রাক্টের প্রতিটি ফাংশনের জন্য একটি মেথড রয়েছে।
+
+### ধাপ 16: আমাদের কন্ট্রাক্ট ডিপ্লয় করুন {#step-16-deploy-our-contract}
+
+আমরা অবশেষে আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে প্রস্তুত! কমান্ড লাইনে যান এবং রান করুন:
+
+```bash
+npx hardhat run scripts/deploy.js --network goerli
+```
+
+এরপর আপনি এরকম কিছু দেখতে পাবেন:
+
+```bash
+Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
+```
+
+**অনুগ্রহ করে এই এডড্রেসটি সেভ করুন**। আমরা টিউটোরিয়ালের পরে এটি ব্যবহার করব।
+
+আমরা যদি [Goerli etherscan](https://goerli.etherscan.io)-এ যাই এবং আমাদের কন্ট্রাক্ট এডড্রেস সার্চ করি তবে আমরা দেখতে পাব যে এটি সফলভাবে ডিপ্লয় হয়েছে। লেনদেন-টি দেখতে এরকম হবে:
+
+
+
+The `From` এডড্রেসটি আপনার MetaMask একাউন্ট এডড্রেস-এর সাথে মিলতে হবে এবং `To` এডড্রেসটি **Contract Creation** বলবে। আমরা যদি লেনদেন-এ ক্লিক করি তবে আমরা `To` ফিল্ডে আমাদের কন্ট্রাক্ট এডড্রেস দেখতে পাব।
+
+
+
+অভিনন্দন! আপনি এইমাত্র একটি ইথিরিয়াম টেস্টনেট-এ একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করেছেন।
+
+ভেতরে কী ঘটছে তা বোঝার জন্য, চলুন আমাদের [Alchemy ড্যাশবোর্ডের](https://dashboard.alchemy.com/explorer) এক্সপ্লোরার ট্যাবে যাই। আপনার যদি একাধিক Alchemy অ্যাপ থাকে তবে নিশ্চিত করুন যে আপনি অ্যাপ অনুযায়ী ফিল্টার করেছেন এবং **Hello World** নির্বাচন করেছেন।
+
+
+
+এখানে আপনি বেশ কয়েকটি JSON-RPC মেথড দেখতে পাবেন যা Hardhat/Ethers আমাদের জন্য ভেতরে তৈরি করেছে যখন আমরা `.deploy()` ফাংশনটি কল করেছিলাম। এখানকার দুটি গুরুত্বপূর্ণ মেথড হলো [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction), যা Goerli চেইনে আমাদের কন্ট্রাক্ট লেখার রিকোয়েস্ট, এবং [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash), যা হ্যাস দেওয়া থাকলে আমাদের লেনদেন সম্পর্কে তথ্য পড়ার রিকোয়েস্ট। লেনদেন পাঠানো সম্পর্কে আরও জানতে, [Web3 ব্যবহার করে লেনদেন পাঠানোর উপর আমাদের টিউটোরিয়ালটি](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) দেখুন।
+
+## পর্ব 2: আপনার স্মার্ট কন্ট্রাক্ট এর সাথে ইন্টারঅ্যাক্ট করুন {#part-2-interact-with-your-smart-contract}
+
+যেহেতু আমরা সফলভাবে Goerli নেটওয়ার্ক-এ একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করেছি, চলুন এখন শিখে নিই কীভাবে এর সাথে ইন্টারঅ্যাক্ট করতে হয়।
+
+### একটি interact.js ফাইল তৈরি করুন {#create-a-interactjs-file}
+
+এটি সেই ফাইল যেখানে আমরা আমাদের ইন্টারঅ্যাকশন স্ক্রিপ্ট লিখব। আমরা Ethers.js লাইব্রেরি ব্যবহার করব যা আপনি আগে পর্ব 1-এ ইনস্টল করেছিলেন।
+
+`scripts/` ফোল্ডারের ভেতরে, `interact.js` নামের একটি নতুন ফাইল তৈরি করুন এবং নিচের কোডটি যোগ করুন:
+
+```javascript
+// interact.js
+
+const API_KEY = process.env.API_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
+```
+
+### আপনার .env ফাইল আপডেট করুন {#update-your-env-file}
+
+আমরা নতুন এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করব, তাই আমাদের সেগুলোকে `.env` ফাইলে সংজ্ঞায়িত করতে হবে যা [আমরা আগে তৈরি করেছিলাম](#step-11-connect-metamask-&-alchemy-to-your-project)।
+
+আমাদের Alchemy `API_KEY` এবং `CONTRACT_ADDRESS` এর জন্য একটি সংজ্ঞা যোগ করতে হবে যেখানে আপনার স্মার্ট কন্ট্রাক্ট ডিপ্লয় করা হয়েছিল।
+
+আপনার `.env` ফাইলটি দেখতে অনেকটা এরকম হওয়া উচিত:
+
+```bash
+# .env
+
+API_URL = "https://eth-goerli.alchemyapi.io/v2/"
+API_KEY = ""
+PRIVATE_KEY = ""
+CONTRACT_ADDRESS = "0x"
+```
+
+### আপনার কন্ট্রাক্ট ABI সংগ্রহ করুন {#grab-your-contract-ABI}
+
+আমাদের কন্ট্রাক্ট [ABI (Application Binary Interface)](/glossary/#abi) হলো আমাদের স্মার্ট কন্ট্রাক্ট এর সাথে ইন্টারঅ্যাক্ট করার ইন্টারফেস। Hardhat স্বয়ংক্রিয়ভাবে একটি ABI তৈরি করে এবং এটি `HelloWorld.json`-এ সেভ করে। ABI ব্যবহার করার জন্য, আমাদের `interact.js` ফাইলে নিচের কোডের লাইনগুলো যোগ করে এর কন্টেন্ট পার্স করতে হবে:
+
+```javascript
+// interact.js
+const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
+```
+
+আপনি যদি ABI দেখতে চান তবে আপনি এটি আপনার কনসোলে প্রিন্ট করতে পারেন:
+
+```javascript
+console.log(JSON.stringify(contract.abi))
+```
+
+আপনার ABI কনসোলে প্রিন্ট হওয়া দেখতে, আপনার টার্মিনালে যান এবং রান করুন:
+
+```bash
+npx hardhat run scripts/interact.js
+```
+
+### আপনার কন্ট্রাক্টের একটি ইনস্ট্যান্স তৈরি করুন {#create-an-instance-of-your-contract}
+
+আমাদের কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে, আমাদের কোডে একটি কন্ট্রাক্ট ইনস্ট্যান্স তৈরি করতে হবে। Ethers.js এর সাথে এটি করতে, আমাদের তিনটি কনসেপ্ট নিয়ে কাজ করতে হবে:
+
+1. Provider - একটি নোড প্রোভাইডার যা আপনাকে ব্লকচেইন-এ রিড এবং রাইট অ্যাক্সেস দেয়
+2. Signer - একটি ইথিরিয়াম একাউন্ট উপস্থাপন করে যা লেনদেন সাইন করতে পারে
+3. Contract - একটি Ethers.js অবজেক্ট যা অনচেইন-এ ডিপ্লয় করা একটি নির্দিষ্ট কন্ট্রাক্টকে উপস্থাপন করে
+
+আমরা কন্ট্রাক্টের ইনস্ট্যান্স তৈরি করতে আগের ধাপ থেকে কন্ট্রাক্ট ABI ব্যবহার করব:
+
+```javascript
+// interact.js
+
+// প্রোভাইডার
+const alchemyProvider = new ethers.providers.AlchemyProvider(
+ (network = "goerli"),
+ API_KEY
+)
+
+// সাইনার
+const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
+
+// কন্ট্রাক্ট
+const helloWorldContract = new ethers.Contract(
+ CONTRACT_ADDRESS,
+ contract.abi,
+ signer
+)
+```
+
+Providers, Signers এবং Contracts সম্পর্কে আরও জানুন [ethers.js ডকুমেন্টেশন](https://docs.ethers.io/v5/)-এ।
+
+### init মেসেজটি পড়ুন {#read-the-init-message}
+
+মনে আছে যখন আমরা `initMessage = "Hello world!"` দিয়ে আমাদের কন্ট্রাক্ট ডিপ্লয় করেছিলাম? আমরা এখন আমাদের স্মার্ট কন্ট্রাক্ট-এ সংরক্ষিত সেই মেসেজটি পড়ব এবং কনসোলে প্রিন্ট করব।
+
+জাভাস্ক্রিপ্টে, নেটওয়ার্ক-এর সাথে ইন্টারঅ্যাক্ট করার সময় অ্যাসিনক্রোনাস ফাংশন ব্যবহার করা হয়। অ্যাসিনক্রোনাস ফাংশন সম্পর্কে আরও জানতে, [এই মিডিয়াম আর্টিকেলটি পড়ুন](https://blog.bitsrc.io/understanding-asynchronous-javascript-the-event-loop-74cd408419ff)।
+
+আমাদের স্মার্ট কন্ট্রাক্ট-এ `message` ফাংশন কল করতে এবং init মেসেজটি পড়তে নিচের কোডটি ব্যবহার করুন:
+
+```javascript
+// interact.js
+
+// ...
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+}
+main()
+```
+
+টার্মিনালে `npx hardhat run scripts/interact.js` ব্যবহার করে ফাইলটি রান করার পর আমাদের এই রেসপন্সটি দেখা উচিত:
+
+```
+The message is: Hello world!
+```
+
+অভিনন্দন! আপনি এইমাত্র ইথিরিয়াম ব্লকচেইন থেকে সফলভাবে স্মার্ট কন্ট্রাক্ট ডাটা পড়েছেন, দারুণ কাজ!
+
+### মেসেজটি আপডেট করুন {#update-the-message}
+
+শুধুমাত্র মেসেজটি পড়ার পরিবর্তে, আমরা `update` ফাংশন ব্যবহার করে আমাদের স্মার্ট কন্ট্রাক্ট-এ সেভ করা মেসেজটিও আপডেট করতে পারি! বেশ দারুণ, তাই না?
+
+মেসেজটি আপডেট করতে, আমরা সরাসরি আমাদের ইনস্ট্যানশিয়েটেড Contract অবজেক্টে `update` ফাংশন কল করতে পারি:
+
+```javascript
+// interact.js
+
+// ...
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+
+ console.log("Updating the message...")
+ const tx = await helloWorldContract.update("This is the new message.")
+ await tx.wait()
+}
+main()
+```
+
+লক্ষ্য করুন যে 11 নম্বর লাইনে, আমরা রিটার্ন করা লেনদেন অবজেক্টে `.wait()` কল করেছি। এটি নিশ্চিত করে যে ফাংশন থেকে বের হওয়ার আগে আমাদের স্ক্রিপ্টটি ব্লকচেইন-এ লেনদেন মাইন হওয়ার জন্য অপেক্ষা করবে। যদি `.wait()` কলটি অন্তর্ভুক্ত না থাকে, তবে স্ক্রিপ্টটি কন্ট্রাক্টে আপডেট করা `message` ভ্যালু দেখতে নাও পারে।
+
+### নতুন মেসেজটি পড়ুন {#read-the-new-message}
+
+আপডেট করা `message` ভ্যালু পড়তে আপনার [আগের ধাপটি](#read-the-init-message) পুনরাবৃত্তি করতে পারা উচিত। একটু সময় নিন এবং দেখুন আপনি সেই নতুন ভ্যালুটি প্রিন্ট করার জন্য প্রয়োজনীয় পরিবর্তনগুলো করতে পারেন কিনা!
+
+আপনার যদি কোনো হিন্ট বা সূত্রের প্রয়োজন হয়, তবে এই পর্যায়ে আপনার `interact.js` ফাইলটি দেখতে যেমন হওয়া উচিত তা নিচে দেওয়া হলো:
+
+```javascript
+// interact.js
+
+const API_KEY = process.env.API_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS
+
+const contract = require("../artifacts/contracts/HelloWorld.sol/HelloWorld.json")
+
+// প্রোভাইডার - অ্যালকেমি
+const alchemyProvider = new ethers.providers.AlchemyProvider(
+ (network = "goerli"),
+ API_KEY
+)
+
+// সাইনার - আপনি
+const signer = new ethers.Wallet(PRIVATE_KEY, alchemyProvider)
+
+// কন্ট্রাক্ট ইন্সট্যান্স
+const helloWorldContract = new ethers.Contract(
+ CONTRACT_ADDRESS,
+ contract.abi,
+ signer
+)
+
+async function main() {
+ const message = await helloWorldContract.message()
+ console.log("The message is: " + message)
+
+ console.log("Updating the message...")
+ const tx = await helloWorldContract.update("this is the new message")
+ await tx.wait()
+
+ const newMessage = await helloWorldContract.message()
+ console.log("The new message is: " + newMessage)
+}
+
+main()
+```
+
+এখন শুধু স্ক্রিপ্টটি রান করুন এবং আপনি আপনার টার্মিনালে পুরনো মেসেজ, আপডেটিং স্ট্যাটাস এবং নতুন মেসেজ প্রিন্ট হওয়া দেখতে পাবেন!
+
+`npx hardhat run scripts/interact.js --network goerli`
+
+```
+The message is: Hello World!
+Updating the message...
+The new message is: This is the new message.
+```
+
+সেই স্ক্রিপ্টটি রান করার সময়, আপনি লক্ষ্য করতে পারেন যে নতুন মেসেজ লোড হওয়ার আগে `Updating the message...` ধাপটি লোড হতে কিছুটা সময় নেয়। এটি মাইনিং প্রক্রিয়ার কারণে হয়; আপনি যদি লেনদেন মাইন হওয়ার সময় সেগুলো ট্র্যাক করতে আগ্রহী হন, তবে একটি লেনদেন এর স্ট্যাটাস দেখতে [Alchemy mempool](https://dashboard.alchemyapi.io/mempool) ভিজিট করুন। যদি লেনদেন ড্রপ হয়ে যায়, তবে [Goerli Etherscan](https://goerli.etherscan.io) চেক করা এবং আপনার লেনদেন হ্যাস সার্চ করাও সহায়ক হতে পারে।
+
+## পার্ট 3: Etherscan-এ আপনার স্মার্ট কন্ট্রাক্ট পাবলিশ করুন {#part-3-publish-your-smart-contract-to-etherscan}
+
+আপনার স্মার্ট কন্ট্রাক্টকে বাস্তবে রূপ দিতে আপনি অনেক পরিশ্রম করেছেন; এখন এটি বিশ্বের সাথে শেয়ার করার সময় এসেছে!
+
+Etherscan-এ আপনার স্মার্ট কন্ট্রাক্ট ভেরিফাই করার মাধ্যমে, যে কেউ আপনার সোর্স কোড দেখতে পারবে এবং আপনার স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারবে। চলুন শুরু করা যাক!
+
+### ধাপ 1: আপনার Etherscan একাউন্টে একটি API Key তৈরি করুন {#step-1-generate-an-api-key-on-your-etherscan-account}
+
+আপনি যে স্মার্ট কন্ট্রাক্টটি পাবলিশ করার চেষ্টা করছেন তার মালিক যে আপনিই, তা ভেরিফাই করার জন্য একটি Etherscan API Key প্রয়োজন।
+
+আপনার যদি আগে থেকে কোনো Etherscan একাউন্ট না থাকে, তাহলে [একটি একাউন্টের জন্য সাইন আপ করুন](https://etherscan.io/register)।
+
+লগ ইন করার পর, নেভিগেশন বারে আপনার ইউজারনেম খুঁজুন, এর উপর হোভার করুন এবং **My profile** বোতামটি নির্বাচন করুন।
+
+আপনার প্রোফাইল পেজে, আপনি একটি সাইড নেভিগেশন বার দেখতে পাবেন। সাইড নেভিগেশন বার থেকে, **API Keys** নির্বাচন করুন। এরপর, একটি নতুন API key তৈরি করতে "Add" বোতাম টিপুন, আপনার অ্যাপের নাম দিন **hello-world** এবং **Create New API Key** বোতাম টিপুন।
+
+আপনার নতুন API key-টি API key টেবিলে দেখা যাবে। API key-টি আপনার ক্লিপবোর্ডে কপি করুন।
+
+এরপর, আমাদের `.env` ফাইলে Etherscan API key যোগ করতে হবে।
+
+এটি যোগ করার পর, আপনার `.env` ফাইলটি দেখতে এরকম হবে:
+
+```javascript
+API_URL = "https://eth-goerli.alchemyapi.io/v2/your-api-key"
+PUBLIC_KEY = "your-public-account-address"
+PRIVATE_KEY = "your-private-account-address"
+CONTRACT_ADDRESS = "your-contract-address"
+ETHERSCAN_API_KEY = "your-etherscan-key"
+```
+
+### Hardhat-এর মাধ্যমে ডিপ্লয় করা স্মার্ট কন্ট্রাক্ট {#hardhat-deployed-smart-contracts}
+
+#### hardhat-etherscan ইনস্টল করুন {#install-hardhat-etherscan}
+
+Hardhat ব্যবহার করে Etherscan-এ আপনার কন্ট্রাক্ট পাবলিশ করা বেশ সহজ। শুরু করার জন্য আপনাকে প্রথমে `hardhat-etherscan` প্লাগইনটি ইনস্টল করতে হবে। `hardhat-etherscan` স্বয়ংক্রিয়ভাবে Etherscan-এ স্মার্ট কন্ট্রাক্টের সোর্স কোড এবং ABI ভেরিফাই করবে। এটি যোগ করতে, `hello-world` ডিরেক্টরিতে রান করুন:
+
+```text
+npm install --save-dev @nomiclabs/hardhat-etherscan
+```
+
+ইনস্টল হয়ে গেলে, আপনার `hardhat.config.js`-এর একদম উপরে নিচের স্টেটমেন্টটি অন্তর্ভুক্ত করুন এবং Etherscan কনফিগ অপশনগুলো যোগ করুন:
+
+```javascript
+// hardhat.config.js
+
+require("dotenv").config()
+require("@nomiclabs/hardhat-ethers")
+require("@nomiclabs/hardhat-etherscan")
+
+const { API_URL, PRIVATE_KEY, ETHERSCAN_API_KEY } = process.env
+
+module.exports = {
+ solidity: "0.7.3",
+ defaultNetwork: "goerli",
+ networks: {
+ hardhat: {},
+ goerli: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`],
+ },
+ },
+ etherscan: {
+ // ইথারস্ক্যানের জন্য আপনার এপিআই (API) কী
+ // https://etherscan.io/ থেকে একটি সংগ্রহ করুন
+ apiKey: ETHERSCAN_API_KEY,
+ },
+}
+```
+
+#### Etherscan-এ আপনার স্মার্ট কন্ট্রাক্ট ভেরিফাই করুন {#verify-your-smart-contract-on-etherscan}
+
+নিশ্চিত করুন যে সমস্ত ফাইল সেভ করা হয়েছে এবং সমস্ত `.env` ভেরিয়েবল সঠিকভাবে কনফিগার করা হয়েছে।
+
+কন্ট্রাক্ট এডড্রেস এবং এটি যে নেটওয়ার্ক-এ ডিপ্লয় করা হয়েছে তা পাস করে `verify` টাস্কটি রান করুন:
+
+```text
+npx hardhat verify --network goerli DEPLOYED_CONTRACT_ADDRESS 'Hello World!'
+```
+
+নিশ্চিত করুন যে `DEPLOYED_CONTRACT_ADDRESS` হলো Goerli টেস্টনেট-এ আপনার ডিপ্লয় করা স্মার্ট কন্ট্রাক্টের এডড্রেস। এছাড়া, চূড়ান্ত আর্গুমেন্ট (`'Hello World!'`) অবশ্যই [পার্ট 1-এর ডিপ্লয়মেন্ট ধাপে](#write-our-deploy-script) ব্যবহৃত স্ট্রিং ভ্যালুর সমান হতে হবে।
+
+সবকিছু ঠিকঠাক থাকলে, আপনি আপনার টার্মিনালে নিচের মেসেজটি দেখতে পাবেন:
+
+```text
+Successfully submitted source code for contract
+contracts/HelloWorld.sol:HelloWorld at 0xdeployed-contract-address
+for verification on Etherscan. Waiting for verification result...
+
+
+Successfully verified contract HelloWorld on Etherscan.
+https: // goerli.etherscan.io/address/#contracts
+```
+
+অভিনন্দন! আপনার স্মার্ট কন্ট্রাক্ট কোড এখন Etherscan-এ আছে!
+
+### Etherscan-এ আপনার স্মার্ট কন্ট্রাক্টটি দেখে নিন! {#check-out-your-smart-contract-on-etherscan}
+
+আপনার টার্মিনালে দেওয়া লিঙ্কে গেলে, আপনি Etherscan-এ পাবলিশ হওয়া আপনার স্মার্ট কন্ট্রাক্ট কোড এবং ABI দেখতে পাবেন!
+
+**ওয়াহু - আপনি পেরেছেন চ্যাম্প! এখন যে কেউ আপনার স্মার্ট কন্ট্রাক্টে কল বা রাইট করতে পারবে! আপনি পরবর্তীতে কী তৈরি করবেন তা দেখার জন্য আমরা অধীর আগ্রহে অপেক্ষা করছি!**
+
+## পর্ব 4 - ফ্রন্টএন্ডের সাথে আপনার স্মার্ট কন্ট্রাক্ট ইন্টিগ্রেট করা {#part-4-integrating-your-smart-contract-with-the-frontend}
+
+এই টিউটোরিয়ালের শেষে, আপনি জানতে পারবেন কীভাবে:
+
+- আপনার ডিএ্যাপ এর সাথে একটি MetaMask ওয়ালেট কানেক্ট করতে হয়
+- [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3) API ব্যবহার করে আপনার স্মার্ট কন্ট্রাক্ট থেকে ডেটা রিড করতে হয়
+- MetaMask ব্যবহার করে ইথিরিয়াম লেনদেন সাইন করতে হয়
+
+এই ডিএ্যাপ এর জন্য, আমরা আমাদের ফ্রন্টএন্ড ফ্রেমওয়ার্ক হিসেবে [React](https://react.dev/) ব্যবহার করব; তবে, এটি মনে রাখা গুরুত্বপূর্ণ যে আমরা এর মৌলিক বিষয়গুলো ব্যাখ্যা করতে খুব বেশি সময় ব্যয় করব না, কারণ আমরা মূলত আমাদের প্রজেক্টে Web3 কার্যকারিতা আনার দিকেই বেশি মনোযোগ দেব।
+
+পূর্বশর্ত হিসেবে, আপনার React সম্পর্কে প্রাথমিক স্তরের ধারণা থাকা উচিত। যদি না থাকে, তবে আমরা অফিসিয়াল [Intro to React tutorial](https://react.dev/learn) সম্পন্ন করার পরামর্শ দিচ্ছি।
+
+### স্টার্টার ফাইলগুলো ক্লোন করুন {#clone-the-starter-files}
+
+প্রথমে, এই প্রজেক্টের স্টার্টার ফাইলগুলো পেতে [hello-world-part-four GitHub repository](https://github.com/alchemyplatform/hello-world-part-four-tutorial)-তে যান এবং এই রিপোজিটরিটি আপনার লোকাল মেশিনে ক্লোন করুন।
+
+ক্লোন করা রিপোজিটরিটি লোকালি খুলুন। লক্ষ্য করুন যে এতে দুটি ফোল্ডার রয়েছে: `starter-files` এবং `completed`।
+
+- `starter-files`- **আমরা এই ডিরেক্টরিতে কাজ করব**, আমরা UI-কে আপনার ইথিরিয়াম ওয়ালেট এবং [Part 3](#part-3)-এ Etherscan-এ পাবলিশ করা স্মার্ট কন্ট্রাক্ট এর সাথে কানেক্ট করব।
+- `completed`-এ সম্পূর্ণ টিউটোরিয়ালটি রয়েছে এবং আপনি যদি কোথাও আটকে যান তবে এটি শুধুমাত্র রেফারেন্স হিসেবে ব্যবহার করা উচিত।
+
+এরপর, আপনার প্রিয় কোড এডিটরে `starter-files` এর কপিটি খুলুন এবং তারপর `src` ফোল্ডারে নেভিগেট করুন।
+
+আমরা যে কোডগুলো লিখব তার সবই `src` ফোল্ডারের অধীনে থাকবে। আমাদের প্রজেক্টে Web3 কার্যকারিতা দিতে আমরা `HelloWorld.js` কম্পোনেন্ট এবং `util/interact.js` জাভাস্ক্রিপ্ট ফাইলগুলো এডিট করব।
+
+### স্টার্টার ফাইলগুলো চেক করুন {#check-out-the-starter-files}
+
+কোডিং শুরু করার আগে, চলুন দেখে নিই স্টার্টার ফাইলগুলোতে আমাদের কী কী দেওয়া হয়েছে।
+
+#### আপনার react প্রজেক্ট চালু করুন {#get-your-react-project-running}
+
+চলুন আমাদের ব্রাউজারে React প্রজেক্টটি রান করার মাধ্যমে শুরু করি। React এর সৌন্দর্য হলো, একবার আমাদের প্রজেক্ট ব্রাউজারে রান করলে, আমরা যে পরিবর্তনগুলো সেভ করব তা ব্রাউজারে লাইভ আপডেট হবে।
+
+প্রজেক্টটি রান করতে, `starter-files` ফোল্ডারের রুট ডিরেক্টরিতে নেভিগেট করুন এবং প্রজেক্টের ডিপেন্ডেন্সিগুলো ইনস্টল করতে আপনার টার্মিনালে `npm install` রান করুন:
+
+```bash
+cd starter-files
+npm install
+```
+
+সেগুলো ইনস্টল করা শেষ হলে, আপনার টার্মিনালে `npm start` রান করুন:
+
+```bash
+npm start
+```
+
+এটি করলে আপনার ব্রাউজারে [http://localhost:3000/](http://localhost:3000/) খুলবে, যেখানে আপনি আমাদের প্রজেক্টের ফ্রন্টএন্ড দেখতে পাবেন। এতে একটি ফিল্ড (আপনার স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজ আপডেট করার জায়গা), একটি "Connect Wallet" বোতাম এবং একটি "Update" বোতাম থাকা উচিত।
+
+আপনি যদি কোনো বোতামে ক্লিক করার চেষ্টা করেন, তবে আপনি লক্ষ্য করবেন যে সেগুলো কাজ করছে না—কারণ আমাদের এখনও সেগুলোর কার্যকারিতা প্রোগ্রাম করতে হবে।
+
+#### `HelloWorld.js` কম্পোনেন্ট {#the-helloworld-js-component}
+
+চলুন আমাদের এডিটরের `src` ফোল্ডারে ফিরে যাই এবং `HelloWorld.js` ফাইলটি খুলি। এই ফাইলের সবকিছু বোঝা আমাদের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এটিই প্রাথমিক React কম্পোনেন্ট যার ওপর আমরা কাজ করব।
+
+এই ফাইলের শীর্ষে, আপনি লক্ষ্য করবেন যে আমাদের প্রজেক্টটি রান করার জন্য প্রয়োজনীয় বেশ কয়েকটি ইমপোর্ট স্টেটমেন্ট রয়েছে, যার মধ্যে রয়েছে React লাইব্রেরি, useEffect এবং useState হুক, `./util/interact.js` থেকে কিছু আইটেম (আমরা শীঘ্রই সেগুলোর বিস্তারিত বর্ণনা করব!), এবং Alchemy লোগো।
+
+```javascript
+// HelloWorld.js
+
+import React from "react"
+import { useEffect, useState } from "react"
+import {
+ helloWorldContract,
+ connectWallet,
+ updateMessage,
+ loadCurrentMessage,
+ getCurrentWalletConnected,
+} from "./util/interact.js"
+
+import alchemylogo from "./alchemylogo.svg"
+```
+
+এরপর, আমাদের স্টেট ভেরিয়েবলগুলো রয়েছে যা আমরা নির্দিষ্ট ইভেন্টের পরে আপডেট করব।
+
+```javascript
+// HelloWorld.js
+
+// স্টেট ভেরিয়েবল
+const [walletAddress, setWallet] = useState("")
+const [status, setStatus] = useState("")
+const [message, setMessage] = useState("No connection to the network.")
+const [newMessage, setNewMessage] = useState("")
+```
+
+এখানে প্রতিটি ভেরিয়েবল যা উপস্থাপন করে তা দেওয়া হলো:
+
+- `walletAddress` - একটি স্ট্রিং যা ব্যবহারকারীর ওয়ালেট এডড্রেস সংরক্ষণ করে
+- `status`- একটি স্ট্রিং যা একটি সহায়ক মেসেজ সংরক্ষণ করে যা ব্যবহারকারীকে ডিএ্যাপ এর সাথে কীভাবে ইন্টারঅ্যাক্ট করতে হয় সে সম্পর্কে গাইড করে
+- `message` - একটি স্ট্রিং যা স্মার্ট কন্ট্রাক্ট এ বর্তমান মেসেজটি সংরক্ষণ করে
+- `newMessage` - একটি স্ট্রিং যা নতুন মেসেজটি সংরক্ষণ করে যা স্মার্ট কন্ট্রাক্ট এ লেখা হবে
+
+স্টেট ভেরিয়েবলগুলোর পরে, আপনি পাঁচটি ইমপ্লিমেন্ট না করা ফাংশন দেখতে পাবেন: `useEffect` ,`addSmartContractListener`, `addWalletListener` , `connectWalletPressed`, এবং `onUpdatePressed`। আমরা নিচে ব্যাখ্যা করব এগুলো কী কাজ করে:
+
+```javascript
+// HelloWorld.js
+
+// শুধুমাত্র একবার কল করা হয়
+useEffect(async () => {
+ // TODO: ইমপ্লিমেন্ট করুন
+}, [])
+
+function addSmartContractListener() {
+ // TODO: ইমপ্লিমেন্ট করুন
+}
+
+function addWalletListener() {
+ // TODO: ইমপ্লিমেন্ট করুন
+}
+
+const connectWalletPressed = async () => {
+ // TODO: ইমপ্লিমেন্ট করুন
+}
+
+const onUpdatePressed = async () => {
+ // TODO: ইমপ্লিমেন্ট করুন
+}
+```
+
+- [`useEffect`](https://legacy.reactjs.org/docs/hooks-effect.html)- এটি একটি React হুক যা আপনার কম্পোনেন্ট রেন্ডার হওয়ার পরে কল করা হয়। যেহেতু এতে একটি খালি অ্যারে `[]` প্রপ পাস করা হয়েছে (লাইন 4 দেখুন), এটি শুধুমাত্র কম্পোনেন্টের _প্রথম_ রেন্ডারে কল করা হবে। এখানে আমরা আমাদের স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত বর্তমান মেসেজটি লোড করব, আমাদের স্মার্ট কন্ট্রাক্ট এবং ওয়ালেট লিসেনারদের কল করব এবং কোনো ওয়ালেট আগে থেকেই কানেক্ট করা আছে কিনা তা প্রতিফলিত করতে আমাদের UI আপডেট করব।
+- `addSmartContractListener`- এই ফাংশনটি একটি লিসেনার সেট আপ করে যা আমাদের HelloWorld কন্ট্রাক্টের `UpdatedMessages` ইভেন্টের জন্য নজর রাখবে এবং আমাদের স্মার্ট কন্ট্রাক্ট এ মেসেজ পরিবর্তন হলে আমাদের UI আপডেট করবে।
+- `addWalletListener`- এই ফাংশনটি একটি লিসেনার সেট আপ করে যা ব্যবহারকারীর MetaMask ওয়ালেট স্টেট এ পরিবর্তনগুলো শনাক্ত করে, যেমন যখন ব্যবহারকারী তাদের ওয়ালেট ডিসকানেক্ট করে বা এডড্রেস পরিবর্তন করে।
+- `connectWalletPressed`- ব্যবহারকারীর MetaMask ওয়ালেট কে আমাদের ডিএ্যাপ এর সাথে কানেক্ট করতে এই ফাংশনটি কল করা হবে।
+- `onUpdatePressed` - যখন ব্যবহারকারী স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজটি আপডেট করতে চাইবেন তখন এই ফাংশনটি কল করা হবে।
+
+এই ফাইলের শেষের দিকে, আমাদের কম্পোনেন্টের UI রয়েছে।
+
+```javascript
+// HelloWorld.js
+
+// আমাদের কম্পোনেন্টের ইউআই (UI)
+return (
+
+
+
+
+ Current Message:
+ {message}
+
+ New Message:
+
+
+ setNewMessage(e.target.value)}
+ value={newMessage}
+ />
+ {status}
+
+
+
+
+)
+```
+
+আপনি যদি এই কোডটি মনোযোগ সহকারে স্ক্যান করেন, তবে আপনি লক্ষ্য করবেন যে আমরা আমাদের UI-তে আমাদের বিভিন্ন স্টেট ভেরিয়েবলগুলো কোথায় ব্যবহার করি:
+
+- 6-12 লাইনে, যদি ব্যবহারকারীর ওয়ালেট কানেক্ট করা থাকে (অর্থাৎ, `walletAddress.length > 0`), আমরা "walletButton" আইডি সহ বোতামে ব্যবহারকারীর `walletAddress` এর একটি সংক্ষিপ্ত সংস্করণ প্রদর্শন করি; অন্যথায় এটি কেবল "Connect Wallet" বলে।
+- 17 লাইনে, আমরা স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত বর্তমান মেসেজটি প্রদর্শন করি, যা `message` স্ট্রিংয়ে ক্যাপচার করা হয়েছে।
+- 23-26 লাইনে, টেক্সট ফিল্ডে ইনপুট পরিবর্তন হলে আমাদের `newMessage` স্টেট ভেরিয়েবল আপডেট করতে আমরা একটি [controlled component](https://legacy.reactjs.org/docs/forms.html#controlled-components) ব্যবহার করি।
+
+আমাদের স্টেট ভেরিয়েবলগুলো ছাড়াও, আপনি দেখতে পাবেন যে `publishButton` এবং `walletButton` আইডি সহ বোতামগুলোতে ক্লিক করা হলে যথাক্রমে `connectWalletPressed` এবং `onUpdatePressed` ফাংশনগুলো কল করা হয়।
+
+অবশেষে, চলুন দেখি এই `HelloWorld.js` কম্পোনেন্টটি কোথায় যোগ করা হয়েছে।
+
+আপনি যদি `App.js` ফাইলে যান, যা React-এর প্রধান কম্পোনেন্ট এবং অন্যান্য সমস্ত কম্পোনেন্টের জন্য একটি কন্টেইনার হিসেবে কাজ করে, আপনি দেখতে পাবেন যে আমাদের `HelloWorld.js` কম্পোনেন্টটি 7 নম্বর লাইনে ইনজেক্ট করা হয়েছে।
+
+সবশেষে, চলুন আপনার জন্য দেওয়া আরও একটি ফাইল, `interact.js` ফাইলটি চেক করি।
+
+#### `interact.js` ফাইল {#the-interact-js-file}
+
+যেহেতু আমরা [M-V-C](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) প্যারাডাইম অনুসরণ করতে চাই, তাই আমরা একটি আলাদা ফাইল চাইব যাতে আমাদের ডিএ্যাপ এর লজিক, ডেটা এবং নিয়মগুলো পরিচালনা করার জন্য আমাদের সমস্ত ফাংশন থাকে এবং তারপর সেই ফাংশনগুলোকে আমাদের ফ্রন্টএন্ডে (আমাদের `HelloWorld.js` কম্পোনেন্ট) এক্সপোর্ট করতে সক্ষম হই।
+
+👆🏽এটিই আমাদের `interact.js` ফাইলের আসল উদ্দেশ্য!
+
+আপনার `src` ডিরেক্টরির `util` ফোল্ডারে নেভিগেট করুন, এবং আপনি লক্ষ্য করবেন যে আমরা `interact.js` নামের একটি ফাইল অন্তর্ভুক্ত করেছি যাতে আমাদের সমস্ত স্মার্ট কন্ট্রাক্ট ইন্টারঅ্যাকশন এবং ওয়ালেট ফাংশন এবং ভেরিয়েবলগুলো থাকবে।
+
+```javascript
+// interact.js
+
+// export const helloWorldContract;
+
+export const loadCurrentMessage = async () => {}
+
+export const connectWallet = async () => {}
+
+const getCurrentWalletConnected = async () => {}
+
+export const updateMessage = async (message) => {}
+```
+
+আপনি ফাইলের শীর্ষে লক্ষ্য করবেন যে আমরা `helloWorldContract` অবজেক্টটি কমেন্ট আউট করেছি। এই টিউটোরিয়ালের পরে, আমরা এই অবজেক্টটি আনকমেন্ট করব এবং এই ভেরিয়েবলে আমাদের স্মার্ট কন্ট্রাক্ট ইনস্ট্যানশিয়েট করব, যা আমরা পরে আমাদের `HelloWorld.js` কম্পোনেন্টে এক্সপোর্ট করব।
+
+আমাদের `helloWorldContract` অবজেক্টের পরে চারটি ইমপ্লিমেন্ট না করা ফাংশন নিচের কাজগুলো করে:
+
+- `loadCurrentMessage` - এই ফাংশনটি স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত বর্তমান মেসেজ লোড করার লজিক পরিচালনা করে। এটি [Alchemy Web3 API](https://github.com/alchemyplatform/alchemy-web3) ব্যবহার করে Hello World স্মার্ট কন্ট্রাক্ট এ একটি _read_ কল করবে।
+- `connectWallet` - এই ফাংশনটি ব্যবহারকারীর MetaMask-কে আমাদের ডিএ্যাপ এর সাথে কানেক্ট করবে।
+- `getCurrentWalletConnected` - এই ফাংশনটি পেজ লোড হওয়ার সময় কোনো ইথিরিয়াম একাউন্ট আগে থেকেই আমাদের ডিএ্যাপ এর সাথে কানেক্ট করা আছে কিনা তা চেক করবে এবং সেই অনুযায়ী আমাদের UI আপডেট করবে।
+- `updateMessage` - এই ফাংশনটি স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজটি আপডেট করবে। এটি Hello World স্মার্ট কন্ট্রাক্ট এ একটি _write_ কল করবে, তাই মেসেজটি আপডেট করার জন্য ব্যবহারকারীর MetaMask ওয়ালেট কে একটি ইথিরিয়াম লেনদেন সাইন করতে হবে।
+
+এখন যেহেতু আমরা বুঝতে পেরেছি আমরা কী নিয়ে কাজ করছি, চলুন বের করি কীভাবে আমাদের স্মার্ট কন্ট্রাক্ট থেকে রিড করতে হয়!
+
+### ধাপ 3: আপনার স্মার্ট কন্ট্রাক্ট থেকে রিড করুন {#step-3-read-from-your-smart-contract}
+
+আপনার স্মার্ট কন্ট্রাক্ট থেকে রিড করতে, আপনাকে সফলভাবে সেট আপ করতে হবে:
+
+- ইথিরিয়াম চেইনের সাথে একটি API কানেকশন
+- আপনার স্মার্ট কন্ট্রাক্ট এর একটি লোড করা ইনস্ট্যান্স
+- আপনার স্মার্ট কন্ট্রাক্ট ফাংশনে কল করার জন্য একটি ফাংশন
+- স্মার্ট কন্ট্রাক্ট থেকে আপনি যে ডেটা রিড করছেন তা পরিবর্তন হলে আপডেটের জন্য নজর রাখার একটি লিসেনার
+
+এটি শুনতে অনেকগুলো ধাপ মনে হতে পারে, তবে চিন্তা করবেন না! আমরা আপনাকে ধাপে ধাপে দেখাব কীভাবে এগুলোর প্রতিটি করতে হয়! :)
+
+#### ইথিরিয়াম চেইনের সাথে একটি API কানেকশন স্থাপন করুন {#establish-an-api-connection-to-the-ethereum-chain}
+
+তাহলে মনে আছে কীভাবে এই টিউটোরিয়ালের পার্ট 2-এ, আমরা আমাদের [Alchemy Web3 key to read from our smart contract](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract/interacting-with-a-smart-contract#step-1-install-web3-library) ব্যবহার করেছিলাম? চেইন থেকে রিড করার জন্য আপনার ডিএ্যাপ এও একটি Alchemy Web3 কি প্রয়োজন হবে।
+
+যদি আপনার কাছে এটি আগে থেকে না থাকে, তবে প্রথমে আপনার `starter-files` এর রুট ডিরেক্টরিতে নেভিগেট করে এবং আপনার টার্মিনালে নিচের কমান্ডটি রান করে [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) ইনস্টল করুন:
+
+```text
+npm install @alch/alchemy-web3
+```
+
+[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) হলো [Web3.js](https://docs.web3js.org/) এর চারপাশে একটি র্যাপার, যা উন্নত API মেথড এবং অন্যান্য গুরুত্বপূর্ণ সুবিধা প্রদান করে যাতে একজন web3 ডেভেলপার হিসেবে আপনার জীবন সহজ হয়। এটি এমনভাবে ডিজাইন করা হয়েছে যাতে ন্যূনতম কনফিগারেশনের প্রয়োজন হয়, ফলে আপনি এখনই আপনার অ্যাপে এটি ব্যবহার করা শুরু করতে পারেন!
+
+তারপর, আপনার প্রজেক্ট ডিরেক্টরিতে [dotenv](https://www.npmjs.com/package/dotenv) প্যাকেজটি ইনস্টল করুন, যাতে আমাদের API কি ফেচ করার পরে এটি সংরক্ষণ করার জন্য একটি নিরাপদ জায়গা থাকে।
+
+```text
+npm install dotenv --save
+```
+
+আমাদের ডিএ্যাপ এর জন্য, **আমরা আমাদের HTTP API কি এর পরিবর্তে আমাদের Websockets API কি ব্যবহার করব**, কারণ এটি আমাদের একটি লিসেনার সেট আপ করতে দেবে যা স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজ পরিবর্তন হলে তা শনাক্ত করে।
+
+আপনার API কি পাওয়ার পর, আপনার রুট ডিরেক্টরিতে একটি `.env` ফাইল তৈরি করুন এবং এতে আপনার Alchemy Websockets url যোগ করুন। এরপর, আপনার `.env` ফাইলটি দেখতে এরকম হওয়া উচিত:
+
+```javascript
+REACT_APP_ALCHEMY_KEY = wss: // eth-goerli.ws.alchemyapi.io/v2/
+```
+
+এখন, আমরা আমাদের ডিএ্যাপ এ আমাদের Alchemy Web3 এন্ডপয়েন্ট সেট আপ করতে প্রস্তুত! চলুন আমাদের `interact.js`-এ ফিরে যাই, যা আমাদের `util` ফোল্ডারের ভেতরে নেস্টেড করা আছে এবং ফাইলের শীর্ষে নিচের কোডটি যোগ করি:
+
+```javascript
+// interact.js
+
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+// export const helloWorldContract;
+```
+
+উপরে, আমরা প্রথমে আমাদের `.env` ফাইল থেকে Alchemy কি ইমপোর্ট করেছি এবং তারপর আমাদের Alchemy Web3 এন্ডপয়েন্ট স্থাপন করতে `createAlchemyWeb3`-তে আমাদের `alchemyKey` পাস করেছি।
+
+এই এন্ডপয়েন্ট প্রস্তুত হওয়ার সাথে সাথে, আমাদের স্মার্ট কন্ট্রাক্ট লোড করার সময় এসেছে!
+
+#### আপনার Hello World স্মার্ট কন্ট্রাক্ট লোড করা {#loading-your-hello-world-smart-contract}
+
+আপনার Hello World স্মার্ট কন্ট্রাক্ট লোড করতে, আপনার এর কন্ট্রাক্ট এডড্রেস এবং ABI প্রয়োজন হবে, যার উভয়ই Etherscan-এ পাওয়া যাবে যদি আপনি [Part 3 of this tutorial.](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan-part-3-publish-your-smart-contract-to-etherscan) সম্পন্ন করে থাকেন।
+
+#### Etherscan থেকে কীভাবে আপনার কন্ট্রাক্ট ABI পাবেন {#how-to-get-your-contract-abi-from-etherscan}
+
+আপনি যদি এই টিউটোরিয়ালের পার্ট 3 এড়িয়ে গিয়ে থাকেন, তবে আপনি [0x6f3f635A9762B47954229Ea479b4541eAF402A6A](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code) এডড্রেস সহ HelloWorld কন্ট্রাক্ট ব্যবহার করতে পারেন। এর ABI [এখানে](https://goerli.etherscan.io/address/0x6f3f635a9762b47954229ea479b4541eaf402a6a#code) পাওয়া যাবে।
+
+একটি কন্ট্রাক্ট কোন ফাংশনটি ইনভোক করবে তা নির্দিষ্ট করার পাশাপাশি ফাংশনটি আপনার প্রত্যাশিত ফরম্যাটে ডেটা রিটার্ন করবে তা নিশ্চিত করার জন্য একটি কন্ট্রাক্ট ABI প্রয়োজনীয়। একবার আমরা আমাদের কন্ট্রাক্ট ABI কপি করার পর, চলুন এটিকে আপনার `src` ডিরেক্টরিতে `contract-abi.json` নামের একটি JSON ফাইল হিসেবে সেভ করি।
+
+আপনার contract-abi.json আপনার src ফোল্ডারে সংরক্ষণ করা উচিত।
+
+আমাদের কন্ট্রাক্ট এডড্রেস, ABI এবং Alchemy Web3 এন্ডপয়েন্ট দিয়ে সজ্জিত হয়ে, আমরা আমাদের স্মার্ট কন্ট্রাক্ট এর একটি ইনস্ট্যান্স লোড করতে [contract method](https://docs.web3js.org/api/web3-eth-contract/class/Contract) ব্যবহার করতে পারি। `interact.js` ফাইলে আপনার কন্ট্রাক্ট ABI ইমপোর্ট করুন এবং আপনার কন্ট্রাক্ট এডড্রেস যোগ করুন।
+
+```javascript
+// interact.js
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A"
+```
+
+আমরা এখন অবশেষে আমাদের `helloWorldContract` ভেরিয়েবলটি আনকমেন্ট করতে পারি এবং আমাদের AlchemyWeb3 এন্ডপয়েন্ট ব্যবহার করে স্মার্ট কন্ট্রাক্ট লোড করতে পারি:
+
+```javascript
+// interact.js
+export const helloWorldContract = new web3.eth.Contract(
+ contractABI,
+ contractAddress
+)
+```
+
+সংক্ষেপে বলতে গেলে, আপনার `interact.js` এর প্রথম 12 লাইন এখন এরকম হওয়া উচিত:
+
+```javascript
+// interact.js
+
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x6f3f635A9762B47954229Ea479b4541eAF402A6A"
+
+export const helloWorldContract = new web3.eth.Contract(
+ contractABI,
+ contractAddress
+)
+```
+
+এখন যেহেতু আমাদের কন্ট্রাক্ট লোড করা হয়েছে, আমরা আমাদের `loadCurrentMessage` ফাংশন ইমপ্লিমেন্ট করতে পারি!
+
+#### আপনার `interact.js` ফাইলে `loadCurrentMessage` ইমপ্লিমেন্ট করা {#implementing-loadCurrentMessage-in-your-interact-js-file}
+
+এই ফাংশনটি খুবই সহজ। আমরা আমাদের কন্ট্রাক্ট থেকে রিড করার জন্য একটি সাধারণ async web3 কল করতে যাচ্ছি। আমাদের ফাংশনটি স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজটি রিটার্ন করবে:
+
+আপনার `interact.js` ফাইলে `loadCurrentMessage` নিচের মতো আপডেট করুন:
+
+```javascript
+// interact.js
+
+export const loadCurrentMessage = async () => {
+ const message = await helloWorldContract.methods.message().call()
+ return message
+}
+```
+
+যেহেতু আমরা আমাদের UI-তে এই স্মার্ট কন্ট্রাক্ট প্রদর্শন করতে চাই, তাই চলুন আমাদের `HelloWorld.js` কম্পোনেন্টে `useEffect` ফাংশনটি নিচের মতো আপডেট করি:
+
+```javascript
+// HelloWorld.js
+
+// শুধুমাত্র একবার কল করা হয়
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+}, [])
+```
+
+লক্ষ্য করুন, আমরা চাই আমাদের `loadCurrentMessage` শুধুমাত্র কম্পোনেন্টের প্রথম রেন্ডারের সময় একবার কল করা হোক। স্মার্ট কন্ট্রাক্ট এ মেসেজ পরিবর্তন হওয়ার পরে স্বয়ংক্রিয়ভাবে UI আপডেট করতে আমরা শীঘ্রই `addSmartContractListener` ইমপ্লিমেন্ট করব।
+
+আমাদের লিসেনারে প্রবেশ করার আগে, চলুন দেখে নিই এ পর্যন্ত আমাদের কী আছে! আপনার `HelloWorld.js` এবং `interact.js` ফাইলগুলো সেভ করুন এবং তারপর [http://localhost:3000/](http://localhost:3000/)-এ যান
+
+আপনি লক্ষ্য করবেন যে বর্তমান মেসেজটি আর "No connection to the network" বলছে না। এর পরিবর্তে এটি স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজটি প্রতিফলিত করে। দারুণ!
+
+#### আপনার UI এখন স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজটি প্রতিফলিত করা উচিত {#your-UI-should-now-reflect-the-message-stored-in-the-smart-contract}
+
+এখন সেই লিসেনারের কথা বলতে গেলে...
+
+#### `addSmartContractListener` ইমপ্লিমেন্ট করুন {#implement-addsmartcontractlistener}
+
+আপনি যদি [Part 1 of this tutorial series](https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract#step-10-write-our-contract)-এ আমাদের লেখা `HelloWorld.sol` ফাইলটির কথা মনে করেন, তবে আপনার মনে পড়বে যে `UpdatedMessages` নামের একটি স্মার্ট কন্ট্রাক্ট ইভেন্ট রয়েছে যা আমাদের স্মার্ট কন্ট্রাক্ট এর `update` ফাংশন ইনভোক হওয়ার পরে এমিট হয় (লাইন 9 এবং 27 দেখুন):
+
+```javascript
+// HelloWorld.sol
+
+// সিম্যান্টিক ভার্সনিং ব্যবহার করে সলিডিটির ভার্সন নির্দিষ্ট করে।
+// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity ^0.7.3;
+
+// `HelloWorld` নামের একটি কন্ট্রাক্ট ডিফাইন করে।
+// একটি কন্ট্রাক্ট হলো ফাংশন এবং ডেটার (এর স্টেট) একটি সংগ্রহ। একবার ডিপ্লয় করা হলে, একটি কন্ট্রাক্ট ইথেরিয়াম ব্লকচেইনের একটি নির্দিষ্ট ঠিকানায় অবস্থান করে। আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ // আপডেট ফাংশন কল করা হলে এমিট হয়
+ // স্মার্ট কন্ট্রাক্ট ইভেন্ট হলো আপনার কন্ট্রাক্টের জন্য ব্লকচেইনে কিছু ঘটার বিষয়ে আপনার অ্যাপের ফ্রন্ট-এন্ডের সাথে যোগাযোগ করার একটি উপায়, যা নির্দিষ্ট ইভেন্টগুলোর জন্য 'লিসেন' করতে পারে এবং সেগুলো ঘটলে ব্যবস্থা নিতে পারে।
+ event UpdatedMessages(string oldStr, string newStr);
+
+ // `string` টাইপের একটি স্টেট ভেরিয়েবল `message` ডিক্লেয়ার করে।
+ // স্টেট ভেরিয়েবল হলো এমন ভেরিয়েবল যার মান স্থায়ীভাবে কন্ট্রাক্ট স্টোরেজে সংরক্ষিত থাকে। `public` কিওয়ার্ড ভেরিয়েবলগুলোকে কন্ট্রাক্টের বাইরে থেকে অ্যাক্সেসযোগ্য করে তোলে এবং এমন একটি ফাংশন তৈরি করে যা অন্যান্য কন্ট্রাক্ট বা ক্লায়েন্টরা মান অ্যাক্সেস করতে কল করতে পারে।
+ string public message;
+
+ // অনেক ক্লাস-ভিত্তিক অবজেক্ট-ওরিয়েন্টেড ভাষার মতো, কনস্ট্রাক্টর হলো একটি বিশেষ ফাংশন যা শুধুমাত্র কন্ট্রাক্ট তৈরির সময় এক্সিকিউট হয়।
+ // কনস্ট্রাক্টরগুলো কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করতে ব্যবহৃত হয়। আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // একটি স্ট্রিং আর্গুমেন্ট `initMessage` গ্রহণ করে এবং কন্ট্রাক্টের `message` স্টোরেজ ভেরিয়েবলে মান সেট করে)।
+ message = initMessage;
+ }
+
+ // একটি পাবলিক ফাংশন যা একটি স্ট্রিং আর্গুমেন্ট গ্রহণ করে এবং `message` স্টোরেজ ভেরিয়েবল আপডেট করে।
+ function update(string memory newMessage) public {
+ string memory oldMsg = message;
+ message = newMessage;
+ emit UpdatedMessages(oldMsg, newMessage);
+ }
+}
+```
+
+স্মার্ট কন্ট্রাক্ট ইভেন্টগুলো হলো আপনার কন্ট্রাক্টের জন্য ব্লকচেইন এ কিছু ঘটেছে (অর্থাৎ, একটি _ইভেন্ট_ ছিল) তা আপনার ফ্রন্ট-এন্ড অ্যাপ্লিকেশনে জানানোর একটি উপায়, যা নির্দিষ্ট ইভেন্টগুলোর জন্য 'লিসেনিং' করতে পারে এবং সেগুলো ঘটলে ব্যবস্থা নিতে পারে।
+
+`addSmartContractListener` ফাংশনটি বিশেষভাবে আমাদের Hello World স্মার্ট কন্ট্রাক্ট এর `UpdatedMessages` ইভেন্টের জন্য লিসেন করবে এবং নতুন মেসেজটি প্রদর্শন করতে আমাদের UI আপডেট করবে।
+
+`addSmartContractListener` নিচের মতো মডিফাই করুন:
+
+```javascript
+// HelloWorld.js
+
+function addSmartContractListener() {
+ helloWorldContract.events.UpdatedMessages({}, (error, data) => {
+ if (error) {
+ setStatus("😥 " + error.message)
+ } else {
+ setMessage(data.returnValues[1])
+ setNewMessage("")
+ setStatus("🎉 Your message has been updated!")
+ }
+ })
+}
+```
+
+লিসেনার যখন কোনো ইভেন্ট শনাক্ত করে তখন কী ঘটে তা চলুন ভেঙে দেখি:
+
+- ইভেন্টটি এমিট হওয়ার সময় যদি কোনো ত্রুটি ঘটে, তবে এটি আমাদের `status` স্টেট ভেরিয়েবলের মাধ্যমে UI-তে প্রতিফলিত হবে।
+- অন্যথায়, আমরা রিটার্ন করা `data` অবজেক্টটি ব্যবহার করব। `data.returnValues` হলো শূন্যতে ইনডেক্স করা একটি অ্যারে যেখানে অ্যারের প্রথম উপাদানটি আগের মেসেজটি সংরক্ষণ করে এবং দ্বিতীয় উপাদানটি আপডেট করা মেসেজটি সংরক্ষণ করে। সব মিলিয়ে, একটি সফল ইভেন্টে আমরা আমাদের `message` স্ট্রিংটিকে আপডেট করা মেসেজে সেট করব, `newMessage` স্ট্রিংটি ক্লিয়ার করব এবং আমাদের স্মার্ট কন্ট্রাক্ট এ একটি নতুন মেসেজ পাবলিশ করা হয়েছে তা প্রতিফলিত করতে আমাদের `status` স্টেট ভেরিয়েবল আপডেট করব।
+
+অবশেষে, চলুন আমাদের `useEffect` ফাংশনে আমাদের লিসেনারকে কল করি যাতে এটি `HelloWorld.js` কম্পোনেন্টের প্রথম রেন্ডারে ইনিশিয়ালাইজ হয়। সব মিলিয়ে, আপনার `useEffect` ফাংশনটি এরকম হওয়া উচিত:
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+}, [])
+```
+
+এখন যেহেতু আমরা আমাদের স্মার্ট কন্ট্রাক্ট থেকে রিড করতে সক্ষম, তাই এতে কীভাবে রাইট করতে হয় তা বের করা দারুণ হবে! তবে, আমাদের ডিএ্যাপ এ রাইট করতে, আমাদের প্রথমে এর সাথে একটি ইথিরিয়াম ওয়ালেট কানেক্ট থাকতে হবে।
+
+সুতরাং, এরপর আমরা আমাদের ইথিরিয়াম ওয়ালেট (MetaMask) সেট আপ করা এবং তারপর এটিকে আমাদের ডিএ্যাপ এর সাথে কানেক্ট করার বিষয়টি সামলাব!
+
+### ধাপ 4: আপনার ইথিরিয়াম ওয়ালেট সেট আপ করুন {#step-4-set-up-your-ethereum-wallet}
+
+ইথিরিয়াম চেইনে কিছু রাইট করতে, ব্যবহারকারীদের অবশ্যই তাদের ভার্চুয়াল ওয়ালেট এর প্রাইভেট কি ব্যবহার করে লেনদেন সাইন করতে হবে। এই টিউটোরিয়ালের জন্য, আমরা [MetaMask](https://metamask.io/) ব্যবহার করব, যা ব্রাউজারে একটি ভার্চুয়াল ওয়ালেট যা আপনার ইথিরিয়াম একাউন্ট এডড্রেস পরিচালনা করতে ব্যবহৃত হয়, কারণ এটি শেষ-ব্যবহারকারীর জন্য এই লেনদেন সাইন করা অত্যন্ত সহজ করে তোলে।
+
+ইথিরিয়াম এ লেনদেন কীভাবে কাজ করে সে সম্পর্কে আপনি যদি আরও বুঝতে চান, তবে ইথিরিয়াম ফাউন্ডেশনের [এই পেজটি](/developers/docs/transactions/) চেক করুন।
+
+#### MetaMask ডাউনলোড করুন {#download-metamask}
+
+আপনি বিনামূল্যে [এখানে](https://metamask.io/download) একটি MetaMask একাউন্ট ডাউনলোড এবং তৈরি করতে পারেন। যখন আপনি একটি একাউন্ট তৈরি করছেন, বা যদি আপনার আগে থেকেই একটি একাউন্ট থাকে, তবে উপরের ডানদিকে "Goerli Test Network"-এ স্যুইচ করতে ভুলবেন না (যাতে আমরা আসল টাকা নিয়ে কাজ না করি)।
+
+#### একটি ফাসেট থেকে ইথার যোগ করুন {#add-ether-from-a-faucet}
+
+ইথিরিয়াম ব্লকচেইন এ একটি লেনদেন সাইন করতে, আমাদের কিছু ফেক Eth প্রয়োজন হবে। Eth পেতে আপনি [FaucETH](https://fauceth.komputing.org)-এ যেতে পারেন এবং আপনার Goerli একাউন্ট এডড্রেস লিখতে পারেন, "Request funds"-এ ক্লিক করুন, তারপর ড্রপডাউনে "Ethereum Testnet Goerli" নির্বাচন করুন এবং অবশেষে আবার "Request funds" বোতামে ক্লিক করুন। এর পরপরই আপনার MetaMask একাউন্টে Eth দেখতে পাওয়া উচিত!
+
+#### আপনার ব্যালেন্স চেক করুন {#check-your-balance}
+
+আমাদের ব্যালেন্স সেখানে আছে কিনা তা ডাবল চেক করতে, চলুন [Alchemy’s composer tool](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) ব্যবহার করে একটি [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) রিকোয়েস্ট করি। এটি আমাদের ওয়ালেট এ Eth এর পরিমাণ রিটার্ন করবে। আপনার MetaMask একাউন্ট এডড্রেস ইনপুট করার পর এবং "Send Request"-এ ক্লিক করার পর, আপনার এরকম একটি রেসপন্স দেখা উচিত:
+
+```text
+{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
+```
+
+**নোট:** এই ফলাফলটি wei-তে, eth-এ নয়। Wei ইথারের ক্ষুদ্রতম একক হিসেবে ব্যবহৃত হয়। wei থেকে eth-এ রূপান্তর হলো: 1 eth = 10¹⁸ wei। তাই যদি আমরা 0xde0b6b3a7640000-কে ডেসিমালে রূপান্তর করি তবে আমরা 1\*10¹⁸ পাই যা 1 eth এর সমান।
+
+যাক! আমাদের ফেক টাকা সব সেখানেই আছে! 🤑
+
+### ধাপ 5: আপনার UI-এর সাথে MetaMask কানেক্ট করুন {#step-5-connect-metamask-to-your-UI}
+
+এখন যেহেতু আমাদের MetaMask ওয়ালেট সেট আপ করা হয়েছে, চলুন আমাদের ডিএ্যাপ এর সাথে এটি কানেক্ট করি!
+
+#### `connectWallet` ফাংশন {#the-connectWallet-function}
+
+আমাদের `interact.js` ফাইলে, চলুন `connectWallet` ফাংশনটি ইমপ্লিমেন্ট করি, যা আমরা পরে আমাদের `HelloWorld.js` কম্পোনেন্টে কল করতে পারি।
+
+চলুন `connectWallet` নিচের মতো মডিফাই করি:
+
+```javascript
+// interact.js
+
+export const connectWallet = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ })
+ const obj = {
+ status: "👆🏽 Write a message in the text-field above.",
+ address: addressArray[0],
+ }
+ return obj
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your
+ browser.
+
+
+
+ ),
+ }
+ }
+}
+```
+
+তাহলে কোডের এই বিশাল ব্লকটি আসলে কী করে?
+
+প্রথমত, এটি চেক করে যে আপনার ব্রাউজারে `window.ethereum` এনাবল করা আছে কিনা।
+
+`window.ethereum` হলো MetaMask এবং অন্যান্য ওয়ালেট প্রোভাইডারদের দ্বারা ইনজেক্ট করা একটি গ্লোবাল API যা ওয়েবসাইটগুলোকে ব্যবহারকারীদের ইথিরিয়াম একাউন্ট রিকোয়েস্ট করার অনুমতি দেয়। যদি অনুমোদিত হয়, তবে এটি ব্যবহারকারী যে ব্লকচেইন গুলোর সাথে কানেক্টেড আছে তা থেকে ডেটা রিড করতে পারে এবং ব্যবহারকারীকে মেসেজ এবং লেনদেন সাইন করার পরামর্শ দিতে পারে। আরও তথ্যের জন্য [MetaMask docs](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) চেক করুন!
+
+যদি `window.ethereum` উপস্থিত _না থাকে_, তবে এর মানে হলো MetaMask ইনস্টল করা নেই। এর ফলে একটি JSON অবজেক্ট রিটার্ন করা হয়, যেখানে রিটার্ন করা `address` হলো একটি খালি স্ট্রিং এবং `status` JSX অবজেক্টটি রিলে করে যে ব্যবহারকারীকে অবশ্যই MetaMask ইনস্টল করতে হবে।
+
+এখন যদি `window.ethereum` উপস্থিত _থাকে_, তবে তখনই বিষয়গুলো আকর্ষণীয় হয়ে ওঠে।
+
+একটি try/catch লুপ ব্যবহার করে, আমরা [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts) কল করে MetaMask-এর সাথে কানেক্ট করার চেষ্টা করব। এই ফাংশনটি কল করলে ব্রাউজারে MetaMask খুলবে, যার মাধ্যমে ব্যবহারকারীকে তাদের ওয়ালেট আপনার ডিএ্যাপ এর সাথে কানেক্ট করার জন্য প্রম্পট করা হবে।
+
+- যদি ব্যবহারকারী কানেক্ট করা বেছে নেন, `method: "eth_requestAccounts"` একটি অ্যারে রিটার্ন করবে যাতে ডিএ্যাপ এর সাথে কানেক্ট করা ব্যবহারকারীর সমস্ত একাউন্ট এডড্রেস থাকে। সব মিলিয়ে, আমাদের `connectWallet` ফাংশনটি একটি JSON অবজেক্ট রিটার্ন করবে যাতে এই অ্যারের _প্রথম_ `address` (লাইন 9 দেখুন) এবং একটি `status` মেসেজ থাকে যা ব্যবহারকারীকে স্মার্ট কন্ট্রাক্ট এ একটি মেসেজ লিখতে প্রম্পট করে।
+- যদি ব্যবহারকারী কানেকশনটি প্রত্যাখ্যান করেন, তবে JSON অবজেক্টটিতে রিটার্ন করা `address` এর জন্য একটি খালি স্ট্রিং এবং একটি `status` মেসেজ থাকবে যা প্রতিফলিত করে যে ব্যবহারকারী কানেকশনটি প্রত্যাখ্যান করেছেন।
+
+এখন যেহেতু আমরা এই `connectWallet` ফাংশনটি লিখেছি, পরবর্তী ধাপ হলো এটিকে আমাদের `HelloWorld.js` কম্পোনেন্টে কল করা।
+
+#### আপনার `HelloWorld.js` UI কম্পোনেন্টে `connectWallet` ফাংশন যোগ করুন {#add-the-connectWallet-function-to-your-HelloWorld-js-ui-component}
+
+`HelloWorld.js`-এ `connectWalletPressed` ফাংশনে নেভিগেট করুন এবং এটিকে নিচের মতো আপডেট করুন:
+
+```javascript
+// HelloWorld.js
+
+const connectWalletPressed = async () => {
+ const walletResponse = await connectWallet()
+ setStatus(walletResponse.status)
+ setWallet(walletResponse.address)
+}
+```
+
+লক্ষ্য করেছেন কীভাবে আমাদের বেশিরভাগ কার্যকারিতা `interact.js` ফাইল থেকে আমাদের `HelloWorld.js` কম্পোনেন্ট থেকে অ্যাবস্ট্রাক্ট করা হয়েছে? এটি করা হয়েছে যাতে আমরা M-V-C প্যারাডাইম মেনে চলি!
+
+`connectWalletPressed`-এ, আমরা কেবল আমাদের ইমপোর্ট করা `connectWallet` ফাংশনে একটি await কল করি এবং এর রেসপন্স ব্যবহার করে, আমরা তাদের স্টেট হুকগুলোর মাধ্যমে আমাদের `status` এবং `walletAddress` ভেরিয়েবলগুলো আপডেট করি।
+
+এখন, চলুন উভয় ফাইল (`HelloWorld.js` এবং `interact.js`) সেভ করি এবং এ পর্যন্ত আমাদের UI টেস্ট করি।
+
+[http://localhost:3000/](http://localhost:3000/) পেজে আপনার ব্রাউজার খুলুন এবং পেজের উপরের ডানদিকে "Connect Wallet" বোতাম টিপুন।
+
+আপনার যদি MetaMask ইনস্টল করা থাকে, তবে আপনাকে আপনার ডিএ্যাপ এর সাথে আপনার ওয়ালেট কানেক্ট করার জন্য প্রম্পট করা উচিত। কানেক্ট করার আমন্ত্রণ গ্রহণ করুন।
+
+আপনার দেখা উচিত যে ওয়ালেট বোতামটি এখন প্রতিফলিত করে যে আপনার এডড্রেস কানেক্টেড! দারুণ 🔥
+
+এরপর, পেজটি রিফ্রেশ করার চেষ্টা করুন... এটি অদ্ভুত। আমাদের ওয়ালেট বোতামটি আমাদের MetaMask কানেক্ট করতে প্রম্পট করছে, যদিও এটি আগে থেকেই কানেক্টেড...
+
+তবে, ভয় পাবেন না! আমরা সহজেই `getCurrentWalletConnected` ইমপ্লিমেন্ট করে এর সমাধান করতে পারি, যা চেক করবে যে কোনো এডড্রেস আগে থেকেই আমাদের ডিএ্যাপ এর সাথে কানেক্টেড কিনা এবং সেই অনুযায়ী আমাদের UI আপডেট করবে!
+
+#### `getCurrentWalletConnected` ফাংশন {#the-getcurrentwalletconnected-function}
+
+`interact.js` ফাইলে আপনার `getCurrentWalletConnected` ফাংশনটি নিচের মতো আপডেট করুন:
+
+```javascript
+// interact.js
+
+export const getCurrentWalletConnected = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_accounts",
+ })
+ if (addressArray.length > 0) {
+ return {
+ address: addressArray[0],
+ status: "👆🏽 Write a message in the text-field above.",
+ }
+ } else {
+ return {
+ address: "",
+ status: "🦊 Connect to MetaMask using the top right button.",
+ }
+ }
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your
+ browser.
+
+
+
+ ),
+ }
+ }
+}
+```
+
+এই কোডটি আগের ধাপে আমাদের লেখা `connectWallet` ফাংশনের _খুবই_ কাছাকাছি।
+
+প্রধান পার্থক্য হলো `eth_requestAccounts` মেথড কল করার পরিবর্তে, যা ব্যবহারকারীর ওয়ালেট কানেক্ট করার জন্য MetaMask খোলে, এখানে আমরা `eth_accounts` মেথড কল করি, যা কেবল বর্তমানে আমাদের ডিএ্যাপ এর সাথে কানেক্টেড MetaMask এডড্রেস গুলো ধারণকারী একটি অ্যারে রিটার্ন করে।
+
+এই ফাংশনটি কাজ করতে দেখতে, চলুন এটিকে আমাদের `HelloWorld.js` কম্পোনেন্টের `useEffect` ফাংশনে কল করি:
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+}, [])
+```
+
+লক্ষ্য করুন, আমরা আমাদের `walletAddress` এবং `status` স্টেট ভেরিয়েবলগুলো আপডেট করতে `getCurrentWalletConnected`-এ আমাদের কলের রেসপন্স ব্যবহার করি।
+
+এখন যেহেতু আপনি এই কোডটি যোগ করেছেন, চলুন আমাদের ব্রাউজার উইন্ডো রিফ্রেশ করার চেষ্টা করি।
+
+চমৎকার! বোতামটির বলা উচিত যে আপনি কানেক্টেড, এবং আপনার কানেক্টেড ওয়ালেট এর এডড্রেস এর একটি প্রিভিউ দেখানো উচিত - এমনকি আপনি রিফ্রেশ করার পরেও!
+
+#### `addWalletListener` ইমপ্লিমেন্ট করুন {#implement-addwalletlistener}
+
+আমাদের ডিএ্যাপ ওয়ালেট সেটআপের চূড়ান্ত ধাপ হলো ওয়ালেট লিসেনার ইমপ্লিমেন্ট করা যাতে আমাদের ওয়ালেট এর স্টেট পরিবর্তন হলে আমাদের UI আপডেট হয়, যেমন যখন ব্যবহারকারী ডিসকানেক্ট করে বা একাউন্ট পরিবর্তন করে।
+
+আপনার `HelloWorld.js` ফাইলে, আপনার `addWalletListener` ফাংশনটি নিচের মতো মডিফাই করুন:
+
+```javascript
+// HelloWorld.js
+
+function addWalletListener() {
+ if (window.ethereum) {
+ window.ethereum.on("accountsChanged", (accounts) => {
+ if (accounts.length > 0) {
+ setWallet(accounts[0])
+ setStatus("👆🏽 Write a message in the text-field above.")
+ } else {
+ setWallet("")
+ setStatus("🦊 Connect to MetaMask using the top right button.")
+ }
+ })
+ } else {
+ setStatus(
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your browser.
+
+
+ )
+ }
+}
+```
+
+আমি বাজি ধরে বলতে পারি এই পর্যায়ে এখানে কী ঘটছে তা বুঝতে আপনার আমাদের সাহায্যেরও প্রয়োজন নেই, তবে পুঙ্খানুপুঙ্খতার উদ্দেশ্যে, চলুন এটি দ্রুত ভেঙে দেখি:
+
+- প্রথমে, আমাদের ফাংশন চেক করে যে `window.ethereum` এনাবল করা আছে কিনা (অর্থাৎ, MetaMask ইনস্টল করা আছে কিনা)।
+ - যদি না থাকে, তবে আমরা কেবল আমাদের `status` স্টেট ভেরিয়েবলটিকে একটি JSX স্ট্রিংয়ে সেট করি যা ব্যবহারকারীকে MetaMask ইনস্টল করতে প্রম্পট করে।
+ - যদি এটি এনাবল করা থাকে, তবে আমরা 3 নম্বর লাইনে `window.ethereum.on("accountsChanged")` লিসেনার সেট আপ করি যা MetaMask ওয়ালেট এ স্টেট পরিবর্তনের জন্য লিসেন করে, যার মধ্যে রয়েছে যখন ব্যবহারকারী ডিএ্যাপ এ একটি অতিরিক্ত একাউন্ট কানেক্ট করে, একাউন্ট পরিবর্তন করে বা একটি একাউন্ট ডিসকানেক্ট করে। যদি অন্তত একটি একাউন্ট কানেক্টেড থাকে, তবে `walletAddress` স্টেট ভেরিয়েবলটি লিসেনার দ্বারা রিটার্ন করা `accounts` অ্যারের প্রথম একাউন্ট হিসেবে আপডেট করা হয়। অন্যথায়, `walletAddress` একটি খালি স্ট্রিং হিসেবে সেট করা হয়।
+
+সবশেষে, আমাদের অবশ্যই এটিকে আমাদের `useEffect` ফাংশনে কল করতে হবে:
+
+```javascript
+// HelloWorld.js
+
+useEffect(async () => {
+ const message = await loadCurrentMessage()
+ setMessage(message)
+ addSmartContractListener()
+
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+
+ addWalletListener()
+}, [])
+```
+
+এবং এটাই! আমরা সফলভাবে আমাদের সমস্ত ওয়ালেট কার্যকারিতা প্রোগ্রামিং সম্পন্ন করেছি! এখন আমাদের শেষ কাজ: আমাদের স্মার্ট কন্ট্রাক্ট এ সংরক্ষিত মেসেজটি আপডেট করা!
+
+### ধাপ 6: `updateMessage` ফাংশন ইমপ্লিমেন্ট করুন {#step-6-implement-the-updateMessage-function}
+
+ঠিক আছে বন্ধুরা, আমরা শেষ পর্যায়ে পৌঁছে গেছি! আপনার `interact.js` ফাইলের `updateMessage`-এ, আমরা নিচের কাজগুলো করতে যাচ্ছি:
+
+1. নিশ্চিত করুন যে আমরা আমাদের স্মার্ট কন্ট্রাক্ট এ যে মেসেজটি পাবলিশ করতে চাই তা বৈধ
+2. MetaMask ব্যবহার করে আমাদের লেনদেন সাইন করুন
+3. আমাদের `HelloWorld.js` ফ্রন্টএন্ড কম্পোনেন্ট থেকে এই ফাংশনটি কল করুন
+
+এতে খুব বেশি সময় লাগবে না; চলুন এই ডিএ্যাপ টি শেষ করি!
+
+#### ইনপুট এরর হ্যান্ডলিং {#input-error-handling}
+
+স্বাভাবিকভাবেই, ফাংশনের শুরুতে কোনো ধরনের ইনপুট এরর হ্যান্ডলিং থাকাটা যৌক্তিক।
+
+আমরা চাইব আমাদের ফাংশনটি তাড়াতাড়ি রিটার্ন করুক যদি কোনো MetaMask এক্সটেনশন ইনস্টল করা না থাকে, কোনো ওয়ালেট কানেক্টেড না থাকে (অর্থাৎ, পাস করা `address` একটি খালি স্ট্রিং), বা `message` একটি খালি স্ট্রিং হয়। চলুন `updateMessage`-এ নিচের এরর হ্যান্ডলিং যোগ করি:
+
+```javascript
+// interact.js
+
+export const updateMessage = async (address, message) => {
+ if (!window.ethereum || address === null) {
+ return {
+ status:
+ "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ }
+ }
+
+ if (message.trim() === "") {
+ return {
+ status: "❌ Your message cannot be an empty string.",
+ }
+ }
+}
+```
+
+এখন যেহেতু এতে সঠিক ইনপুট এরর হ্যান্ডলিং রয়েছে, তাই MetaMask-এর মাধ্যমে লেনদেন সাইন করার সময় এসেছে!
+
+#### আমাদের লেনদেন সাইন করা {#signing-our-transaction}
+
+আপনি যদি আগে থেকেই প্রথাগত web3 ইথিরিয়াম লেনদেন এর সাথে স্বাচ্ছন্দ্যবোধ করেন, তবে আমরা পরবর্তীতে যে কোডটি লিখব তা খুব পরিচিত হবে। আপনার ইনপুট এরর হ্যান্ডলিং কোডের নিচে, `updateMessage`-এ নিচের কোডটি যোগ করুন:
+
+```javascript
+// interact.js
+
+// ট্রানজ্যাকশন প্যারামিটার সেট আপ করুন
+const transactionParameters = {
+ to: contractAddress, // কন্ট্রাক্ট পাবলিকেশন ছাড়া অন্যান্য সময় প্রয়োজনীয়।
+ from: address, // অবশ্যই ব্যবহারকারীর সক্রিয় ঠিকানার সাথে মিলতে হবে।
+ data: helloWorldContract.methods.update(message).encodeABI(),
+}
+
+// ট্রানজ্যাকশন সাইন করুন
+try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ status: (
+
+ ✅{" "}
+
+ View the status of your transaction on Etherscan!
+
+
+ ℹ️ Once the transaction is verified by the network, the message will be
+ updated automatically.
+
+ ),
+ }
+} catch (error) {
+ return {
+ status: "😥 " + error.message,
+ }
+}
+```
+
+চলুন ভেঙে দেখি কী ঘটছে। প্রথমে, আমরা আমাদের লেনদেন প্যারামিটারগুলো সেট আপ করি, যেখানে:
+
+- `to` প্রাপকের এডড্রেস (আমাদের স্মার্ট কন্ট্রাক্ট) নির্দিষ্ট করে
+- `from` লেনদেন এর সাইনার নির্দিষ্ট করে, `address` ভেরিয়েবল যা আমরা আমাদের ফাংশনে পাস করেছি
+- `data` আমাদের Hello World স্মার্ট কন্ট্রাক্ট এর `update` মেথডে কল ধারণ করে, যা ইনপুট হিসেবে আমাদের `message` স্ট্রিং ভেরিয়েবল গ্রহণ করে
+
+তারপর, আমরা একটি await কল করি, `window.ethereum.request`, যেখানে আমরা MetaMask-কে লেনদেন সাইন করতে বলি। লক্ষ্য করুন, 11 এবং 12 লাইনে, আমরা আমাদের eth মেথড, `eth_sendTransaction` নির্দিষ্ট করছি এবং আমাদের `transactionParameters` পাস করছি।
+
+এই পর্যায়ে, ব্রাউজারে MetaMask খুলবে এবং ব্যবহারকারীকে লেনদেন সাইন বা প্রত্যাখ্যান করতে প্রম্পট করবে।
+
+- যদি লেনদেন সফল হয়, তবে ফাংশনটি একটি JSON অবজেক্ট রিটার্ন করবে যেখানে `status` JSX স্ট্রিং ব্যবহারকারীকে তাদের লেনদেন সম্পর্কে আরও তথ্যের জন্য Etherscan চেক করতে প্রম্পট করে।
+- যদি লেনদেন ব্যর্থ হয়, তবে ফাংশনটি একটি JSON অবজেক্ট রিটার্ন করবে যেখানে `status` স্ট্রিং এরর মেসেজ রিলে করে।
+
+সব মিলিয়ে, আমাদের `updateMessage` ফাংশনটি এরকম হওয়া উচিত:
+
+```javascript
+// interact.js
+
+export const updateMessage = async (address, message) => {
+ // ইনপুট এরর হ্যান্ডলিং
+ if (!window.ethereum || address === null) {
+ return {
+ status:
+ "💡 Connect your MetaMask wallet to update the message on the blockchain.",
+ }
+ }
+
+ if (message.trim() === "") {
+ return {
+ status: "❌ Your message cannot be an empty string.",
+ }
+ }
+
+ // ট্রানজ্যাকশন প্যারামিটার সেট আপ করুন
+ const transactionParameters = {
+ to: contractAddress, // কন্ট্রাক্ট পাবলিকেশন ছাড়া অন্যান্য সময় প্রয়োজনীয়।
+ from: address, // অবশ্যই ব্যবহারকারীর সক্রিয় ঠিকানার সাথে মিলতে হবে।
+ data: helloWorldContract.methods.update(message).encodeABI(),
+ }
+
+ // ট্রানজ্যাকশন সাইন করুন
+ try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ status: (
+
+ ✅{" "}
+
+ View the status of your transaction on Etherscan!
+
+
+ ℹ️ Once the transaction is verified by the network, the message will
+ be updated automatically.
+
+ ),
+ }
+ } catch (error) {
+ return {
+ status: "😥 " + error.message,
+ }
+ }
+}
+```
+
+সবশেষে, আমাদের `updateMessage` ফাংশনটিকে আমাদের `HelloWorld.js` কম্পোনেন্টের সাথে কানেক্ট করতে হবে।
+
+#### `HelloWorld.js` ফ্রন্টএন্ডের সাথে `updateMessage` কানেক্ট করুন {#connect-updatemessage-to-the-helloworld-js-frontend}
+
+আমাদের `onUpdatePressed` ফাংশনটির ইমপোর্ট করা `updateMessage` ফাংশনে একটি await কল করা উচিত এবং আমাদের লেনদেন সফল হয়েছে নাকি ব্যর্থ হয়েছে তা প্রতিফলিত করতে `status` স্টেট ভেরিয়েবল মডিফাই করা উচিত:
+
+```javascript
+// HelloWorld.js
+
+const onUpdatePressed = async () => {
+ const { status } = await updateMessage(walletAddress, newMessage)
+ setStatus(status)
+}
+```
+
+এটি অত্যন্ত পরিচ্ছন্ন এবং সহজ। এবং জানেন কি... আপনার ডিএ্যাপ সম্পূর্ণ!!!
+
+এগিয়ে যান এবং **Update** বোতামটি টেস্ট করুন!
+
+### আপনার নিজস্ব কাস্টম ডিএ্যাপ তৈরি করুন {#make-your-own-custom-dapp}
+
+দারুণ, আপনি টিউটোরিয়ালের শেষে পৌঁছে গেছেন! সংক্ষেপে বলতে গেলে, আপনি শিখেছেন কীভাবে:
+
+- আপনার ডিএ্যাপ প্রজেক্টের সাথে একটি MetaMask ওয়ালেট কানেক্ট করতে হয়
+- [Alchemy Web3](https://docs.alchemy.com/alchemy/documentation/alchemy-web3) API ব্যবহার করে আপনার স্মার্ট কন্ট্রাক্ট থেকে ডেটা রিড করতে হয়
+- MetaMask ব্যবহার করে ইথিরিয়াম লেনদেন সাইন করতে হয়
+
+এখন আপনি আপনার নিজস্ব কাস্টম ডিএ্যাপ প্রজেক্ট তৈরি করতে এই টিউটোরিয়াল থেকে অর্জিত দক্ষতা প্রয়োগ করতে পুরোপুরি প্রস্তুত! বরাবরের মতো, আপনার যদি কোনো প্রশ্ন থাকে, তবে [Alchemy Discord](https://discord.gg/gWuC7zB)-এ সাহায্যের জন্য আমাদের সাথে যোগাযোগ করতে দ্বিধা করবেন না। 🧙♂️
+
+একবার আপনি এই টিউটোরিয়ালটি সম্পন্ন করার পর, আপনার অভিজ্ঞতা কেমন ছিল তা আমাদের জানান বা আপনার যদি কোনো মতামত থাকে তবে টুইটারে [@alchemyplatform](https://twitter.com/AlchemyPlatform)-এ আমাদের ট্যাগ করে জানান!
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/hello-world-smart-contract/index.md b/public/content/translations/bn/developers/tutorials/hello-world-smart-contract/index.md
new file mode 100644
index 00000000000..80512a7ee7a
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/hello-world-smart-contract/index.md
@@ -0,0 +1,360 @@
+---
+title: নতুনদের জন্য হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট
+description: ইথিরিয়ামে একটি সাধারণ স্মার্ট কন্ট্রাক্ট লেখা এবং ডিপ্লয় করার উপর প্রাথমিক টিউটোরিয়াল।
+author: "elanh"
+tags: ["solidity", "hardhat", "alchemy", "স্মার্ট কন্ট্রাক্ট", "ডিপ্লয়িং"]
+skill: beginner
+breadcrumb: হ্যালো ওয়ার্ল্ড কন্ট্রাক্ট
+lang: bn
+published: 2021-03-31
+---
+
+আপনি যদি ব্লকচেইন ডেভেলপমেন্টে নতুন হয়ে থাকেন এবং কোথা থেকে শুরু করবেন তা না জানেন, অথবা আপনি যদি শুধু বুঝতে চান কীভাবে স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে হয় এবং এর সাথে ইন্টারঅ্যাক্ট করতে হয়, তবে এই গাইডটি আপনার জন্য। আমরা একটি ভার্চুয়াল ওয়ালেট [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), এবং [Alchemy](https://www.alchemy.com/eth) ব্যবহার করে Sepolia টেস্টনেট-এ একটি সাধারণ স্মার্ট কন্ট্রাক্ট তৈরি এবং ডিপ্লয় করার প্রক্রিয়া দেখাব (যদি আপনি এখনও এগুলোর অর্থ না বোঝেন তবে চিন্তা করবেন না, আমরা এটি ব্যাখ্যা করব)।
+
+এই টিউটোরিয়ালের [part 2](https://docs.alchemy.com/docs/interacting-with-a-smart-contract)-এ আমরা দেখব কীভাবে আমাদের স্মার্ট কন্ট্রাক্ট এখানে ডিপ্লয় হওয়ার পর আমরা এর সাথে ইন্টারঅ্যাক্ট করতে পারি, এবং [part 3](https://www.alchemy.com/docs/submitting-your-smart-contract-to-etherscan)-এ আমরা কভার করব কীভাবে এটি Etherscan-এ পাবলিশ করতে হয়।
+
+যদি কোনো পর্যায়ে আপনার প্রশ্ন থাকে, তবে নির্দ্বিধায় [Alchemy Discord](https://discord.gg/gWuC7zB)-এ যোগাযোগ করুন!
+
+## ধাপ 1: ইথিরিয়াম নেটওয়ার্ক-এর সাথে কানেক্ট করুন {#step-1}
+
+ইথিরিয়াম চেইনে রিকোয়েস্ট করার অনেক উপায় আছে। সহজ করার জন্য, আমরা Alchemy-তে একটি ফ্রি একাউন্ট ব্যবহার করব, যা একটি ব্লকচেইন ডেভেলপার প্ল্যাটফর্ম এবং API, এটি আমাদের নিজস্ব নোড রান না করেই ইথিরিয়াম চেইনের সাথে যোগাযোগ করতে দেয়। এই প্ল্যাটফর্মে মনিটরিং এবং অ্যানালিটিক্সের জন্য ডেভেলপার টুলসও রয়েছে, যা আমরা এই টিউটোরিয়ালে ব্যবহার করব যাতে বুঝতে পারি আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয়মেন্টের ভেতরে কী ঘটছে। যদি আপনার আগে থেকে কোনো Alchemy একাউন্ট না থাকে, তবে [আপনি এখানে বিনামূল্যে সাইন আপ করতে পারেন](https://dashboard.alchemy.com/signup)।
+
+## ধাপ 2: আপনার অ্যাপ (এবং API কি) তৈরি করুন {#step-2}
+
+একবার আপনি একটি Alchemy একাউন্ট তৈরি করলে, আপনি একটি অ্যাপ তৈরি করে একটি API কি জেনারেট করতে পারেন। এটি আমাদের Sepolia টেস্টনেট-এ রিকোয়েস্ট করার অনুমতি দেবে। আপনি যদি টেস্টনেট সম্পর্কে পরিচিত না হন, তবে [এই পেজটি](/developers/docs/networks/) দেখুন।
+
+1. আপনার Alchemy ড্যাশবোর্ডে ন্যাভ বারে "Select an app" নির্বাচন করে এবং "Create new app"-এ ক্লিক করে "Create new app" পেজে যান।
+
+
+
+2. আপনার অ্যাপের নাম দিন “Hello World”, একটি সংক্ষিপ্ত বিবরণ দিন এবং একটি ইউজ কেস বেছে নিন, যেমন, "Infra & Tooling।" এরপর, "Ethereum" সার্চ করুন এবং নেটওয়ার্ক নির্বাচন করুন।
+
+
+
+3. এগিয়ে যেতে "Next"-এ ক্লিক করুন, তারপর “Create app” এবং হয়ে গেল! আপনার অ্যাপটি ন্যাভ বারের ড্রপডাউন মেনুতে উপস্থিত হওয়া উচিত, যেখানে কপি করার জন্য একটি API কি পাওয়া যাবে।
+
+## ধাপ 3: একটি ইথিরিয়াম একাউন্ট (এডড্রেস) তৈরি করুন {#step-3}
+
+লেনদেন পাঠানো এবং গ্রহণ করার জন্য আমাদের একটি ইথিরিয়াম একাউন্ট প্রয়োজন। এই টিউটোরিয়ালের জন্য, আমরা MetaMask ব্যবহার করব, যা ব্রাউজারে একটি ভার্চুয়াল ওয়ালেট এবং এটি আপনার ইথিরিয়াম একাউন্ট এডড্রেস পরিচালনা করতে ব্যবহৃত হয়। [লেনদেন](/developers/docs/transactions/) সম্পর্কে আরও জানুন।
+
+আপনি MetaMask ডাউনলোড করতে পারেন এবং [এখানে](https://metamask.io/download) বিনামূল্যে একটি ইথিরিয়াম একাউন্ট তৈরি করতে পারেন। যখন আপনি একটি একাউন্ট তৈরি করছেন, অথবা যদি আপনার আগে থেকেই একটি একাউন্ট থাকে, তবে নেটওয়ার্ক ড্রপডাউন মেনু ব্যবহার করে "Sepolia" টেস্টনেট-এ স্যুইচ করতে ভুলবেন না (যাতে আমরা আসল টাকা নিয়ে কাজ না করি)।
+
+যদি আপনি Sepolia তালিকাভুক্ত না দেখেন, তবে মেনুতে যান, তারপর Advanced-এ যান এবং নিচে স্ক্রোল করে "Show test networks" চালু করুন। নেটওয়ার্ক নির্বাচন মেনুতে, টেস্টনেট-এর তালিকা খুঁজতে "Custom" ট্যাবটি বেছে নিন এবং "Sepolia" নির্বাচন করুন।
+
+
+
+## ধাপ 4: একটি ফাসেট থেকে ইথার যোগ করুন {#step-4}
+
+টেস্টনেট-এ আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার জন্য, আমাদের কিছু ফেক ETH প্রয়োজন হবে। Sepolia ETH পেতে আপনি বিভিন্ন ফাসেট-এর তালিকা দেখতে [Sepolia নেটওয়ার্ক ডিটেইলস](/developers/docs/networks/#sepolia)-এ যেতে পারেন। যদি একটি কাজ না করে, তবে অন্যটি চেষ্টা করুন কারণ এগুলো মাঝে মাঝে খালি হয়ে যেতে পারে। নেটওয়ার্ক ট্রাফিকের কারণে আপনার ফেক ETH পেতে কিছু সময় লাগতে পারে। এর পরপরই আপনার Metamask একাউন্ট-এ ETH দেখতে পাওয়া উচিত!
+
+## ধাপ 5: আপনার ব্যালেন্স চেক করুন {#step-5}
+
+আমাদের ব্যালেন্স সেখানে আছে কিনা তা ডাবল চেক করতে, চলুন [Alchemy-এর কম্পোজার টুল](https://sandbox.alchemy.com/?network=ETH_SEPOLIA&method=eth_getBalance&body.id=1&body.jsonrpc=2.0&body.method=eth_getBalance&body.params%5B0%5D=&body.params%5B1%5D=latest) ব্যবহার করে একটি [eth_getBalance](/developers/docs/apis/json-rpc/#eth_getbalance) রিকোয়েস্ট করি। এটি আমাদের ওয়ালেট-এ থাকা ETH-এর পরিমাণ রিটার্ন করবে। আপনার MetaMask একাউন্ট এডড্রেস ইনপুট করার পর এবং “Send Request”-এ ক্লিক করার পর, আপনি এরকম একটি রেসপন্স দেখতে পাবেন:
+
+```json
+{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
+```
+
+> **নোট:** এই ফলাফলটি wei-তে, ETH-এ নয়। Wei ইথারের সবচেয়ে ছোট একক হিসেবে ব্যবহৃত হয়। wei থেকে ETH-এ রূপান্তর হলো: 1 eth = 1018 wei। সুতরাং যদি আমরা 0x2B5E3AF16B1880000 কে ডেসিমালে রূপান্তর করি তবে আমরা 5\*10¹⁸ পাই যা 5 ETH এর সমান।
+>
+> যাক! আমাদের ফেক মানি সব সেখানেই আছে ।
+
+## ধাপ 6: আমাদের প্রজেক্ট ইনিশিয়ালাইজ করুন {#step-6}
+
+প্রথমে, আমাদের প্রজেক্টের জন্য একটি ফোল্ডার তৈরি করতে হবে। আপনার কমান্ড লাইনে যান এবং টাইপ করুন:
+
+```
+mkdir hello-world
+cd hello-world
+```
+
+এখন যেহেতু আমরা আমাদের প্রজেক্ট ফোল্ডারের ভেতরে আছি, আমরা প্রজেক্টটি ইনিশিয়ালাইজ করতে `npm init` ব্যবহার করব। যদি আপনার আগে থেকে npm ইনস্টল করা না থাকে, তবে [এই নির্দেশাবলী](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) অনুসরণ করুন (আমাদের Node.js-ও প্রয়োজন হবে তাই সেটিও ডাউনলোড করুন!)।
+
+```
+npm init
+```
+
+আপনি ইনস্টলেশনের প্রশ্নগুলোর উত্তর কীভাবে দিচ্ছেন তা খুব একটা গুরুত্বপূর্ণ নয়, রেফারেন্সের জন্য আমরা কীভাবে এটি করেছি তা এখানে দেওয়া হলো:
+
+```
+package name: (hello-world)
+version: (1.0.0)
+description: hello world smart contract
+entry point: (index.js)
+test command:
+git repository:
+keywords:
+author:
+license: (ISC)
+About to write to /Users/.../.../.../hello-world/package.json:
+
+{
+ "name": "hello-world",
+ "version": "1.0.0",
+ "description": "hello world smart contract",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \\"Error: no test specified\\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC"
+}
+```
+
+package.json অনুমোদন করুন এবং আমরা প্রস্তুত!
+
+## ধাপ 7: [Hardhat](https://hardhat.org/getting-started/#overview) ডাউনলোড করুন {#step-7}
+
+Hardhat হলো আপনার ইথিরিয়াম সফটওয়্যার কম্পাইল, ডিপ্লয়, টেস্ট এবং ডিবাগ করার জন্য একটি ডেভেলপমেন্ট এনভায়রনমেন্ট। এটি লাইভ চেইনে ডিপ্লয় করার আগে স্থানীয়ভাবে স্মার্ট কন্ট্রাক্ট এবং ডিএ্যাপস তৈরি করার সময় ডেভেলপারদের সাহায্য করে।
+
+আমাদের `hello-world` প্রজেক্টের ভেতরে রান করুন:
+
+```
+npm install --save-dev hardhat
+```
+
+[ইনস্টলেশন নির্দেশাবলী](https://hardhat.org/getting-started/#overview) সম্পর্কে আরও বিস্তারিত জানতে এই পেজটি দেখুন।
+
+## ধাপ 8: Hardhat প্রজেক্ট তৈরি করুন {#step-8}
+
+আমাদের প্রজেক্ট ফোল্ডারের ভেতরে রান করুন:
+
+```
+npx hardhat
+```
+
+এরপর আপনি একটি ওয়েলকাম মেসেজ এবং আপনি কী করতে চান তা নির্বাচন করার অপশন দেখতে পাবেন। “create an empty hardhat.config.js” নির্বাচন করুন:
+
+```
+888 888 888 888 888
+888 888 888 888 888
+888 888 888 888 888
+8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+888 888 "88b 888P" d88" 888 888 "88b "88b 888
+888 888 .d888888 888 888 888 888 888 .d888888 888
+888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+
+👷 Welcome to Hardhat v2.0.11 👷?
+
+What do you want to do? …
+Create a sample project
+❯ Create an empty hardhat.config.js
+Quit
+```
+
+এটি আমাদের জন্য একটি `hardhat.config.js` ফাইল তৈরি করবে যেখানে আমরা আমাদের প্রজেক্টের সমস্ত সেটআপ নির্দিষ্ট করব (ধাপ 13-এ)।
+
+## ধাপ 9: প্রজেক্ট ফোল্ডার যোগ করুন {#step-9}
+
+আমাদের প্রজেক্টটি গুছিয়ে রাখতে আমরা দুটি নতুন ফোল্ডার তৈরি করব। আপনার কমান্ড লাইনে আপনার প্রজেক্টের রুট ডিরেক্টরিতে যান এবং টাইপ করুন:
+
+```
+mkdir contracts
+mkdir scripts
+```
+
+- `contracts/` হলো যেখানে আমরা আমাদের হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট কোড ফাইল রাখব
+- `scripts/` হলো যেখানে আমরা আমাদের কন্ট্রাক্ট ডিপ্লয় এবং ইন্টারঅ্যাক্ট করার জন্য স্ক্রিপ্ট রাখব
+
+## ধাপ 10: আমাদের কন্ট্রাক্ট লিখুন {#step-10}
+
+আপনি হয়তো নিজেকে জিজ্ঞাসা করছেন, আমরা কখন কোড লিখতে যাচ্ছি?? ঠিক আছে, আমরা এখানে, ধাপ 10-এ।
+
+আপনার প্রিয় এডিটরে hello-world প্রজেক্টটি খুলুন (আমরা [VSCode](https://code.visualstudio.com/) পছন্দ করি)। স্মার্ট কন্ট্রাক্ট Solidity নামক একটি ভাষায় লেখা হয় যা আমরা আমাদের HelloWorld.sol স্মার্ট কন্ট্রাক্ট লিখতে ব্যবহার করব।
+
+1. “contracts” ফোল্ডারে যান এবং HelloWorld.sol নামে একটি নতুন ফাইল তৈরি করুন
+2. নিচে ইথিরিয়াম ফাউন্ডেশনের একটি নমুনা হ্যালো ওয়ার্ল্ড স্মার্ট কন্ট্রাক্ট দেওয়া হলো যা আমরা এই টিউটোরিয়ালের জন্য ব্যবহার করব। নিচের বিষয়বস্তু কপি করে আপনার HelloWorld.sol ফাইলে পেস্ট করুন, এবং এই কন্ট্রাক্টটি কী করে তা বুঝতে কমেন্টগুলো পড়তে ভুলবেন না:
+
+```solidity
+// সিম্যান্টিক ভার্সনিং ব্যবহার করে সলিডিটির সংস্করণ নির্দিষ্ট করে।
+// আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity ^0.7.0;
+
+// `HelloWorld` নামের একটি কন্ট্রাক্ট সংজ্ঞায়িত করে।
+// কন্ট্রাক্ট হলো ফাংশন এবং ডেটার (এর স্টেট) একটি সংগ্রহ। একবার ডিপ্লয় করা হলে, একটি কন্ট্রাক্ট ইথিরিয়াম ব্লকচেইনের একটি নির্দিষ্ট ঠিকানায় অবস্থান করে। আরও জানুন: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ // `string` টাইপের একটি স্টেট ভেরিয়েবল `message` ঘোষণা করে।
+ // স্টেট ভেরিয়েবল হলো এমন ভেরিয়েবল যার মান কন্ট্রাক্ট স্টোরেজে স্থায়ীভাবে সংরক্ষিত থাকে। `public` কিওয়ার্ডটি ভেরিয়েবলগুলোকে কন্ট্রাক্টের বাইরে থেকে অ্যাক্সেসযোগ্য করে তোলে এবং এমন একটি ফাংশন তৈরি করে যা অন্যান্য কন্ট্রাক্ট বা ক্লায়েন্টরা মানটি অ্যাক্সেস করতে কল করতে পারে।
+ string public message;
+
+ // অনেক ক্লাস-ভিত্তিক অবজেক্ট-ওরিয়েন্টেড ভাষার মতো, কনস্ট্রাক্টর হলো একটি বিশেষ ফাংশন যা শুধুমাত্র কন্ট্রাক্ট তৈরির সময় এক্সিকিউট হয়।
+ // কন্ট্রাক্টের ডেটা ইনিশিয়ালাইজ করতে কনস্ট্রাক্টর ব্যবহার করা হয়। আরও জানুন:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // একটি স্ট্রিং আর্গুমেন্ট `initMessage` গ্রহণ করে এবং মানটিকে কন্ট্রাক্টের `message` স্টোরেজ ভেরিয়েবলে সেট করে)।
+ message = initMessage;
+ }
+
+ // একটি পাবলিক ফাংশন যা একটি স্ট্রিং আর্গুমেন্ট গ্রহণ করে এবং `message` স্টোরেজ ভেরিয়েবল আপডেট করে।
+ function update(string memory newMessage) public {
+ message = newMessage;
+ }
+}
+```
+
+এটি একটি অত্যন্ত সাধারণ স্মার্ট কন্ট্রাক্ট যা তৈরি করার সময় একটি মেসেজ স্টোর করে এবং `update` ফাংশন কল করে আপডেট করা যায়।
+
+## ধাপ 11: আপনার প্রজেক্টের সাথে MetaMask এবং Alchemy কানেক্ট করুন {#step-11}
+
+আমরা একটি MetaMask ওয়ালেট, Alchemy একাউন্ট তৈরি করেছি এবং আমাদের স্মার্ট কন্ট্রাক্ট লিখেছি, এখন এই তিনটিকে কানেক্ট করার সময়।
+
+আপনার ভার্চুয়াল ওয়ালেট থেকে পাঠানো প্রতিটি লেনদেন-এর জন্য আপনার ইউনিক প্রাইভেট কি ব্যবহার করে একটি সিগনেচার প্রয়োজন। আমাদের প্রোগ্রামকে এই অনুমতি প্রদান করতে, আমরা নিরাপদে আমাদের প্রাইভেট কি (এবং Alchemy API কি) একটি এনভায়রনমেন্ট ফাইলে স্টোর করতে পারি।
+
+> লেনদেন পাঠানো সম্পর্কে আরও জানতে, web3 ব্যবহার করে লেনদেন পাঠানোর উপর [এই টিউটোরিয়ালটি](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) দেখুন।
+
+প্রথমে, আপনার প্রজেক্ট ডিরেক্টরিতে dotenv প্যাকেজটি ইনস্টল করুন:
+
+```
+npm install dotenv --save
+```
+
+তারপর, আমাদের প্রজেক্টের রুট ডিরেক্টরিতে একটি `.env` ফাইল তৈরি করুন এবং এতে আপনার MetaMask প্রাইভেট কি এবং HTTP Alchemy API URL যোগ করুন।
+
+- আপনার প্রাইভেট কি এক্সপোর্ট করতে [এই নির্দেশাবলী](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/) অনুসরণ করুন
+- HTTP Alchemy API URL পেতে নিচে দেখুন
+
+
+
+Alchemy API URL কপি করুন
+
+আপনার `.env` ফাইলটি এরকম দেখতে হওয়া উচিত:
+
+```
+API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
+PRIVATE_KEY = "your-metamask-private-key"
+```
+
+এগুলোকে আমাদের কোডের সাথে কানেক্ট করতে, আমরা ধাপ 13-এ আমাদের `hardhat.config.js` ফাইলে এই ভেরিয়েবলগুলো রেফারেন্স করব।
+
+
+
+
+.env কমিট করবেন না! অনুগ্রহ করে নিশ্চিত করুন যে আপনি কখনই আপনার .env ফাইলটি কারও সাথে শেয়ার বা প্রকাশ করবেন না, কারণ এমনটি করলে আপনি আপনার গোপনীয়তা বিপন্ন করছেন। আপনি যদি ভার্সন কন্ট্রোল ব্যবহার করেন, তবে আপনার .env ফাইলটি একটি gitignore ফাইলে যোগ করুন।
+
+
+
+
+## ধাপ 12: Ethers.js ইনস্টল করুন {#step-12-install-ethersjs}
+
+Ethers.js হলো একটি লাইব্রেরি যা [স্ট্যান্ডার্ড JSON-RPC মেথডগুলোকে](/developers/docs/apis/json-rpc/) আরও ইউজার ফ্রেন্ডলি মেথড দিয়ে র্যাপ করে ইথিরিয়ামের সাথে ইন্টারঅ্যাক্ট করা এবং রিকোয়েস্ট করা সহজ করে তোলে।
+
+Hardhat অতিরিক্ত টুলিং এবং বর্ধিত কার্যকারিতার জন্য [প্লাগইনস](https://hardhat.org/plugins/) ইন্টিগ্রেট করা খুব সহজ করে তোলে। আমরা কন্ট্রাক্ট ডিপ্লয়মেন্টের জন্য [Ethers প্লাগইন](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers)-এর সুবিধা নেব ([Ethers.js](https://github.com/ethers-io/ethers.js/)-এ কিছু খুব পরিষ্কার কন্ট্রাক্ট ডিপ্লয়মেন্ট মেথড রয়েছে)।
+
+আপনার প্রজেক্ট ডিরেক্টরিতে টাইপ করুন:
+
+```
+npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"
+```
+
+পরবর্তী ধাপে আমাদের `hardhat.config.js`-এও ethers প্রয়োজন হবে।
+
+## ধাপ 13: hardhat.config.js আপডেট করুন {#step-13-update-hardhatconfigjs}
+
+আমরা এ পর্যন্ত বেশ কয়েকটি ডিপেন্ডেন্সি এবং প্লাগইন যোগ করেছি, এখন আমাদের `hardhat.config.js` আপডেট করতে হবে যাতে আমাদের প্রজেক্ট এগুলোর সব সম্পর্কে জানতে পারে।
+
+আপনার `hardhat.config.js` আপডেট করে এরকম করুন:
+
+```
+require('dotenv').config();
+
+require("@nomiclabs/hardhat-ethers");
+const { API_URL, PRIVATE_KEY } = process.env;
+
+/**
+* @type import('hardhat/config').HardhatUserConfig
+*/
+module.exports = {
+ solidity: "0.7.3",
+ defaultNetwork: "sepolia",
+ networks: {
+ hardhat: {},
+ sepolia: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`]
+ }
+ },
+}
+```
+
+## ধাপ 14: আমাদের কন্ট্রাক্ট কম্পাইল করুন {#step-14-compile-our-contracts}
+
+এ পর্যন্ত সবকিছু ঠিকঠাক কাজ করছে কিনা তা নিশ্চিত করতে, চলুন আমাদের কন্ট্রাক্ট কম্পাইল করি। `compile` টাস্কটি হলো একটি বিল্ট-ইন hardhat টাস্ক।
+
+কমান্ড লাইন থেকে রান করুন:
+
+```
+npx hardhat compile
+```
+
+আপনি `SPDX license identifier not provided in source file` সম্পর্কে একটি ওয়ার্নিং পেতে পারেন, তবে এটি নিয়ে চিন্তা করার দরকার নেই — আশা করি অন্য সবকিছু ঠিক আছে! যদি না হয়, আপনি সবসময় [Alchemy discord](https://discord.gg/u72VCg3)-এ মেসেজ করতে পারেন।
+
+## ধাপ 15: আমাদের ডিপ্লয় স্ক্রিপ্ট লিখুন {#step-15-write-our-deploy-scripts}
+
+এখন যেহেতু আমাদের কন্ট্রাক্ট লেখা হয়েছে এবং আমাদের কনফিগারেশন ফাইল প্রস্তুত, এখন আমাদের কন্ট্রাক্ট ডিপ্লয় স্ক্রিপ্ট লেখার সময়।
+
+`scripts/` ফোল্ডারে যান এবং `deploy.js` নামে একটি নতুন ফাইল তৈরি করুন, এতে নিচের বিষয়বস্তু যোগ করুন:
+
+```
+async function main() {
+ const HelloWorld = await ethers.getContractFactory("HelloWorld");
+
+ // Start deployment, returning a promise that resolves to a contract object
+ const hello_world = await HelloWorld.deploy("Hello World!");
+ console.log("Contract deployed to address:", hello_world.address);}
+
+main()
+ .then(() => process.exit(0))
+ .catch(error => {
+ console.error(error);
+ process.exit(1);
+ });
+```
+
+Hardhat তাদের [কন্ট্রাক্টস টিউটোরিয়াল](https://hardhat.org/tutorial/testing-contracts.html#writing-tests)-এ এই কোডের প্রতিটি লাইন কী করে তা খুব সুন্দরভাবে ব্যাখ্যা করে, আমরা এখানে তাদের ব্যাখ্যাগুলো গ্রহণ করেছি।
+
+```
+const HelloWorld = await ethers.getContractFactory("HelloWorld");
+```
+
+ethers.js-এ একটি `ContractFactory` হলো নতুন স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার জন্য ব্যবহৃত একটি অ্যাবস্ট্রাকশন, তাই এখানে `HelloWorld` হলো আমাদের হ্যালো ওয়ার্ল্ড কন্ট্রাক্টের ইনস্ট্যান্সগুলোর জন্য একটি ফ্যাক্টরি। `hardhat-ethers` প্লাগইন ব্যবহার করার সময় `ContractFactory` এবং `Contract` ইনস্ট্যান্সগুলো ডিফল্টভাবে প্রথম সাইনারের সাথে কানেক্টেড থাকে।
+
+```
+const hello_world = await HelloWorld.deploy();
+```
+
+একটি `ContractFactory`-তে `deploy()` কল করলে ডিপ্লয়মেন্ট শুরু হবে এবং একটি `Promise` রিটার্ন করবে যা একটি `Contract`-এ রিজলভ হয়। এটি হলো সেই অবজেক্ট যার আমাদের প্রতিটি স্মার্ট কন্ট্রাক্ট ফাংশনের জন্য একটি মেথড রয়েছে।
+
+## ধাপ 16: আমাদের কন্ট্রাক্ট ডিপ্লয় করুন {#step-16-deploy-our-contract}
+
+আমরা অবশেষে আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে প্রস্তুত! কমান্ড লাইনে যান এবং রান করুন:
+
+```
+npx hardhat run scripts/deploy.js --network sepolia
+```
+
+এরপর আপনি এরকম কিছু দেখতে পাবেন:
+
+```
+Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
+```
+
+যদি আমরা [Sepolia etherscan](https://sepolia.etherscan.io/)-এ যাই এবং আমাদের কন্ট্রাক্ট এডড্রেস সার্চ করি তবে আমরা দেখতে পাব যে এটি সফলভাবে ডিপ্লয় হয়েছে। লেনদেন-টি দেখতে এরকম হবে:
+
+
+
+`From` এডড্রেস-টি আপনার MetaMask একাউন্ট এডড্রেস-এর সাথে মিলতে হবে এবং To এডড্রেস-এ “Contract Creation” লেখা থাকবে কিন্তু যদি আমরা লেনদেন-এ ক্লিক করি তবে আমরা `To` ফিল্ডে আমাদের কন্ট্রাক্ট এডড্রেস দেখতে পাব:
+
+
+
+অভিনন্দন! আপনি এইমাত্র ইথিরিয়াম চেইনে একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করেছেন 🎉
+
+ভেতরে কী ঘটছে তা বুঝতে, চলুন আমাদের [Alchemy ড্যাশবোর্ড](https://dashboard.alchemyapi.io/explorer)-এর এক্সপ্লোরার ট্যাবে যাই। যদি আপনার একাধিক Alchemy অ্যাপ থাকে তবে অ্যাপ দ্বারা ফিল্টার করতে ভুলবেন না এবং “Hello World” নির্বাচন করুন।
+
+
+এখানে আপনি বেশ কয়েকটি JSON-RPC কল দেখতে পাবেন যা Hardhat/Ethers আমাদের জন্য ভেতরে তৈরি করেছে যখন আমরা `.deploy()` ফাংশন কল করেছি। এখানে উল্লেখ করার মতো দুটি গুরুত্বপূর্ণ কল হলো [`eth_sendRawTransaction`](https://www.alchemy.com/docs/node/abstract/abstract-api-endpoints/eth-send-raw-transaction), যা আসলে Sepolia চেইনে আমাদের কন্ট্রাক্ট লেখার রিকোয়েস্ট, এবং [`eth_getTransactionByHash`](https://www.alchemy.com/docs/node/abstract/abstract-api-endpoints/eth-get-transaction-by-hash) যা হ্যাস দেওয়া থাকলে আমাদের লেনদেন সম্পর্কে তথ্য পড়ার একটি রিকোয়েস্ট (লেনদেন-এর ক্ষেত্রে একটি সাধারণ প্যাটার্ন)। লেনদেন পাঠানো সম্পর্কে আরও জানতে, [Web3 ব্যবহার করে লেনদেন পাঠানোর](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) উপর এই টিউটোরিয়ালটি দেখুন।
+
+এই টিউটোরিয়ালের পার্ট 1-এর জন্য এটুকুই, পার্ট 2-এ আমরা আমাদের প্রাথমিক মেসেজ আপডেট করে আসলে [আমাদের স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করব](https://www.alchemy.com/docs/interacting-with-a-smart-contract), এবং পার্ট 3-এ আমরা [আমাদের স্মার্ট কন্ট্রাক্ট Etherscan-এ পাবলিশ করব](https://www.alchemy.com/docs/submitting-your-smart-contract-to-etherscan) যাতে সবাই জানতে পারে কীভাবে এর সাথে ইন্টারঅ্যাক্ট করতে হয়।
+
+**Alchemy সম্পর্কে আরও জানতে চান? আমাদের [ওয়েবসাইট](https://www.alchemy.com/eth) দেখুন। কোনো আপডেট মিস করতে চান না? [এখানে](https://www.alchemy.com/newsletter) আমাদের নিউজলেটারে সাবস্ক্রাইব করুন! আমাদের [Discord](https://discord.gg/u72VCg3)-এও যোগ দিতে ভুলবেন না।**
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/bn/developers/tutorials/how-to-implement-an-erc721-market/index.md
new file mode 100644
index 00000000000..b25f08e80b8
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-implement-an-erc721-market/index.md
@@ -0,0 +1,146 @@
+---
+title: কীভাবে একটি ERC-721 মার্কেট তৈরি করবেন
+description: কীভাবে একটি ডিসেন্ট্রালাইজড ক্লাসিফাইডস বোর্ডে বিক্রির জন্য টোকেনাইজড আইটেম রাখবেন
+author: "আলবার্তো কুয়েস্তা কানিয়াদা"
+tags: ["স্মার্ট কন্ট্রাক্ট", "erc-721", "solidity", "টোকেন"]
+skill: intermediate
+breadcrumb: ERC-721 মার্কেট
+lang: bn
+published: 2020-03-19
+source: Hackernoon
+sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9
+---
+
+এই আর্টিকেলে, আমি আপনাদের দেখাবো কীভাবে ইথিরিয়াম ব্লকচেইন এর জন্য Craigslist কোড করতে হয়।
+
+Gumtree, Ebay এবং Craigslist-এর আগে, ক্লাসিফাইড বোর্ডগুলো বেশিরভাগই কর্ক বা কাগজ দিয়ে তৈরি হতো। স্কুলের করিডোর, সংবাদপত্র, রাস্তার আলো, এবং দোকানের সামনে ক্লাসিফাইডস বোর্ড থাকত।
+
+ইন্টারনেটের সাথে সাথে এই সবকিছু বদলে গেছে। একটি নির্দিষ্ট ক্লাসিফাইড বোর্ড দেখতে পাওয়া মানুষের সংখ্যা বহুগুণে বৃদ্ধি পেয়েছে। এর ফলে, তারা যে মার্কেটগুলোর প্রতিনিধিত্ব করে সেগুলো অনেক বেশি কার্যকর হয়ে উঠেছে এবং বিশ্বব্যাপী প্রসারিত হয়েছে। Ebay হলো একটি বিশাল ব্যবসা যার উৎপত্তি এই ফিজিক্যাল ক্লাসিফাইডস বোর্ডগুলো থেকে।
+
+ব্লকচেইন এর মাধ্যমে এই মার্কেটগুলো আবারও পরিবর্তিত হতে চলেছে, চলুন আমি আপনাদের দেখাই কীভাবে।
+
+## মনিটাইজেশন {#monetization}
+
+একটি পাবলিক ব্লকচেইন ক্লাসিফাইডস বোর্ডের বিজনেস মডেল Ebay এবং অন্যান্য কোম্পানির থেকে আলাদা হতে হবে।
+
+প্রথমত, এখানে [ডিসেন্ট্রালাইজেশন এর বিষয়টি](/developers/docs/web2-vs-web3/) রয়েছে। বিদ্যমান প্ল্যাটফর্মগুলোকে তাদের নিজস্ব সার্ভার রক্ষণাবেক্ষণ করতে হয়। একটি ডিসেন্ট্রালাইজড প্ল্যাটফর্ম এর ব্যবহারকারীদের দ্বারা পরিচালিত হয়, তাই প্ল্যাটফর্মের মালিকের জন্য মূল প্ল্যাটফর্মটি চালানোর খরচ শূন্যে নেমে আসে।
+
+এরপর রয়েছে ফ্রন্ট এন্ড, ওয়েবসাইট বা ইন্টারফেস যা প্ল্যাটফর্মে অ্যাক্সেস দেয়। এখানে অনেকগুলো বিকল্প রয়েছে। প্ল্যাটফর্মের মালিকরা অ্যাক্সেস সীমিত করতে পারেন এবং সবাইকে তাদের ইন্টারফেস ব্যবহার করতে বাধ্য করতে পারেন, যার জন্য একটি ফি চার্জ করা হতে পারে। প্ল্যাটফর্মের মালিকরা অ্যাক্সেস উন্মুক্ত করার সিদ্ধান্তও নিতে পারেন (জনগণের ক্ষমতা!) এবং যে কাউকে প্ল্যাটফর্মের জন্য ইন্টারফেস তৈরি করার অনুমতি দিতে পারেন। অথবা মালিকরা এই দুই চরমপন্থার মাঝামাঝি কোনো পদ্ধতি বেছে নিতে পারেন।
+
+_আমার চেয়ে বেশি দূরদর্শী বিজনেস লিডাররা জানবেন কীভাবে এটিকে মনিটাইজ করতে হয়। আমি শুধু দেখতে পাচ্ছি যে এটি বর্তমান অবস্থা থেকে আলাদা এবং সম্ভবত লাভজনক।_
+
+এছাড়া, অটোমেশন এবং পেমেন্টের বিষয়টিও রয়েছে। কিছু জিনিস খুব [কার্যকরভাবে টোকেনাইজ](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com) করা যায় এবং একটি ক্লাসিফাইডস বোর্ডে ট্রেড করা যায়। টোকেনাইজড অ্যাসেটগুলো ব্লকচেইন এ সহজেই ট্রান্সফার করা যায়। অত্যন্ত জটিল পেমেন্ট পদ্ধতিগুলো ব্লকচেইন এ সহজেই ইমপ্লিমেন্ট করা যায়।
+
+আমি এখানে একটি ব্যবসার সুযোগ দেখতে পাচ্ছি। কোনো রানিং কস্ট ছাড়াই একটি ক্লাসিফাইডস বোর্ড সহজেই ইমপ্লিমেন্ট করা যেতে পারে, যেখানে প্রতিটি লেনদেন এর মধ্যে জটিল পেমেন্ট পাথ অন্তর্ভুক্ত থাকে। আমি নিশ্চিত কেউ না কেউ এটি কী কাজে ব্যবহার করা যায় সে সম্পর্কে একটি আইডিয়া নিয়ে আসবে।
+
+আমি এটি তৈরি করেই খুশি। চলুন কোডটি দেখে নেওয়া যাক।
+
+## ইমপ্লিমেন্টেশন {#implementation}
+
+কিছু সময় আগে আমরা বিজনেস কেস উদাহরণের ইমপ্লিমেন্টেশন এবং অন্যান্য জিনিসপত্র নিয়ে একটি [ওপেন সোর্স রিপোজিটরি](https://github.com/HQ20/contracts?ref=hackernoon.com) শুরু করেছিলাম, অনুগ্রহ করে একবার দেখে নিন।
+
+এই [Ethereum Classifieds Board](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com)-এর কোড সেখানে রয়েছে, অনুগ্রহ করে এটি ব্যবহার করুন এবং পরীক্ষা করুন। শুধু মনে রাখবেন যে কোডটি অডিট করা হয়নি এবং এতে টাকা বিনিয়োগ করার আগে আপনাকে নিজের যাচাই-বাছাই করে নিতে হবে।
+
+বোর্ডের বেসিক বিষয়গুলো জটিল নয়। বোর্ডের সমস্ত বিজ্ঞাপনগুলো কয়েকটি ফিল্ডসহ একটি স্ট্রাক্ট (struct) হবে:
+
+```solidity
+struct Trade {
+ address poster;
+ uint256 item;
+ uint256 price;
+ bytes32 status; // উন্মুক্ত, সম্পাদিত, বাতিলকৃত
+}
+```
+
+সুতরাং কেউ একজন বিজ্ঞাপনটি পোস্ট করছে। বিক্রির জন্য একটি আইটেম। আইটেমটির একটি দাম। ট্রেডের স্ট্যাটাস যা ওপেন, এক্সিকিউটেড বা বাতিল হতে পারে।
+
+এই সমস্ত ট্রেডগুলো একটি ম্যাপিংয়ে রাখা হবে। কারণ Solidity-তে সবকিছুই একটি ম্যাপিং বলে মনে হয়। এছাড়াও কারণ এটি সুবিধাজনক।
+
+```solidity
+mapping(uint256 => Trade) public trades;
+```
+
+একটি ম্যাপিং ব্যবহার করার মানে হলো পোস্ট করার আগে আমাদের প্রতিটি বিজ্ঞাপনের জন্য একটি আইডি তৈরি করতে হবে, এবং এটি নিয়ে কাজ করার আগে আমাদের একটি বিজ্ঞাপনের আইডি জানতে হবে। স্মার্ট কন্ট্রাক্ট বা ফ্রন্ট-এন্ডে এটি পরিচালনা করার একাধিক উপায় রয়েছে। আপনার যদি কোনো নির্দেশনার প্রয়োজন হয় তবে অনুগ্রহ করে জিজ্ঞাসা করুন।
+
+এরপর প্রশ্ন আসে যে আমরা কোন আইটেমগুলো নিয়ে কাজ করি এবং লেনদেন এর জন্য কোন কারেন্সি ব্যবহার করা হয়।
+
+আইটেমগুলোর জন্য, আমরা শুধু চাইব যে তারা [ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com) ইন্টারফেস ইমপ্লিমেন্ট করুক, যা মূলত ব্লকচেইন এ বাস্তব জগতের আইটেমগুলোকে উপস্থাপন করার একটি উপায়, যদিও এটি [ডিজিটাল অ্যাসেটগুলোর সাথে সবচেয়ে ভালো কাজ করে](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com)। আমরা কনস্ট্রাক্টরে আমাদের নিজস্ব ERC721 কন্ট্রাক্ট নির্দিষ্ট করতে যাচ্ছি, যার মানে হলো আমাদের ক্লাসিফাইডস বোর্ডের যেকোনো অ্যাসেট আগে থেকেই টোকেনাইজ করা থাকতে হবে।
+
+পেমেন্টের জন্য, আমরা একই রকম কিছু করতে যাচ্ছি। বেশিরভাগ ব্লকচেইন প্রজেক্ট তাদের নিজস্ব [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com) ক্রিপটোকারেন্সি সংজ্ঞায়িত করে। অন্য কেউ কেউ DAI-এর মতো মূলধারার কারেন্সি ব্যবহার করতে পছন্দ করে। এই ক্লাসিফাইডস বোর্ডে, আপনাকে শুধু কনস্ট্রাকশনের সময় সিদ্ধান্ত নিতে হবে যে আপনার কারেন্সি কী হবে। সহজ।
+
+```solidity
+constructor (
+ address _currencyTokenAddress, address _itemTokenAddress
+) public {
+ currencyToken = IERC20(_currencyTokenAddress);
+ itemToken = IERC721(_itemTokenAddress);
+ tradeCounter = 0;
+}
+```
+
+আমরা লক্ষ্যের দিকে এগোচ্ছি। আমাদের কাছে বিজ্ঞাপন, ট্রেড করার জন্য আইটেম এবং পেমেন্টের জন্য একটি কারেন্সি রয়েছে। একটি বিজ্ঞাপন তৈরি করার অর্থ হলো একটি আইটেমকে এসক্রো (escrow)-তে রাখা, যাতে দেখানো যায় যে আপনার কাছে এটি আছে এবং আপনি এটি দুবার পোস্ট করেননি, সম্ভবত অন্য কোনো বোর্ডে।
+
+নিচের কোডটি ঠিক এই কাজটিই করে। আইটেমটিকে এসক্রোতে রাখে, বিজ্ঞাপন তৈরি করে এবং কিছু আনুষঙ্গিক কাজ করে।
+
+```solidity
+function openTrade(uint256 _item, uint256 _price)
+ public
+{
+ itemToken.transferFrom(msg.sender, address(this), _item);
+ trades[tradeCounter] = Trade({
+ poster: msg.sender,
+ item: _item,
+ price: _price,
+ status: "Open"
+ });
+ tradeCounter += 1;
+ emit TradeStatusChange(tradeCounter - 1, "Open");
+}
+```
+
+ট্রেড গ্রহণ করার অর্থ হলো একটি বিজ্ঞাপন (ট্রেড) বেছে নেওয়া, দাম পরিশোধ করা এবং আইটেমটি গ্রহণ করা। নিচের কোডটি একটি ট্রেড রিট্রিভ করে। এটি অ্যাভেইলেবল কিনা তা চেক করে। আইটেমের দাম পরিশোধ করে। আইটেমটি রিট্রিভ করে। বিজ্ঞাপনটি আপডেট করে।
+
+```solidity
+function executeTrade(uint256 _trade)
+ public
+{
+ Trade memory trade = trades[_trade];
+ require(trade.status == "Open", "Trade is not Open.");
+ currencyToken.transferFrom(msg.sender, trade.poster, trade.price);
+ itemToken.transferFrom(address(this), msg.sender, trade.item);
+ trades[_trade].status = "Executed";
+ emit TradeStatusChange(_trade, "Executed");
+}
+```
+
+সবশেষে, ক্রেতা গ্রহণ করার আগে বিক্রেতাদের ট্রেড থেকে পিছিয়ে আসার একটি অপশন আমাদের কাছে রয়েছে। কিছু মডেলে, বিজ্ঞাপনগুলো মেয়াদ শেষ হওয়ার আগে একটি নির্দিষ্ট সময়ের জন্য লাইভ থাকে। আপনার মার্কেটের ডিজাইনের ওপর নির্ভর করে এটি আপনার পছন্দ।
+
+কোডটি একটি ট্রেড এক্সিকিউট করার জন্য ব্যবহৃত কোডের মতোই, শুধু পার্থক্য হলো এখানে কোনো কারেন্সি হাতবদল হয় না এবং আইটেমটি বিজ্ঞাপনদাতার কাছে ফিরে যায়।
+
+```solidity
+function cancelTrade(uint256 _trade)
+ public
+{
+ Trade memory trade = trades[_trade];
+ require(
+ msg.sender == trade.poster,
+ "Trade can be cancelled only by poster."
+ );
+ require(trade.status == "Open", "Trade is not Open.");
+ itemToken.transferFrom(address(this), trade.poster, trade.item);
+ trades[_trade].status = "Cancelled";
+ emit TradeStatusChange(_trade, "Cancelled");
+}
+```
+
+এই তো। আপনি ইমপ্লিমেন্টেশনের শেষ পর্যন্ত পৌঁছে গেছেন। কোডে প্রকাশ করার সময় কিছু বিজনেস কনসেপ্ট কতটা কমপ্যাক্ট হতে পারে তা বেশ আশ্চর্যজনক, এবং এটি সেই ক্ষেত্রগুলোর মধ্যে একটি। সম্পূর্ণ কন্ট্রাক্টটি [আমাদের রিপোতে](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol) চেক করুন।
+
+## উপসংহার {#conclusion}
+
+ক্লাসিফাইডস বোর্ডগুলো হলো একটি সাধারণ মার্কেট কনফিগারেশন যা ইন্টারনেটের সাথে ব্যাপকভাবে প্রসারিত হয়েছে, এবং কয়েকজন একচেটিয়া বিজয়ীর সাথে একটি অত্যন্ত জনপ্রিয় বিজনেস মডেলে পরিণত হয়েছে।
+
+ক্লাসিফাইডস বোর্ডগুলো ব্লকচেইন পরিবেশে রেপ্লিকেট করার জন্য একটি সহজ টুলও বটে, যার খুব নির্দিষ্ট কিছু ফিচার রয়েছে যা বিদ্যমান জায়ান্টদের জন্য একটি চ্যালেঞ্জ তৈরি করা সম্ভব করবে।
+
+এই আর্টিকেলে, আমি একটি ক্লাসিফাইডস বোর্ড ব্যবসার ব্যবসায়িক বাস্তবতার সাথে প্রযুক্তিগত ইমপ্লিমেন্টেশনের সেতুবন্ধন তৈরি করার চেষ্টা করেছি। আপনার যদি সঠিক দক্ষতা থাকে তবে এই জ্ঞান আপনাকে ইমপ্লিমেন্টেশনের জন্য একটি ভিশন এবং একটি রোডম্যাপ তৈরি করতে সাহায্য করবে।
+
+বরাবরের মতো, আপনি যদি মজার কিছু তৈরি করতে চান এবং কিছু পরামর্শ চান, তবে অনুগ্রহ করে [আমাকে জানান](https://albertocuesta.es/)! আমি সবসময় সাহায্য করতে পেরে আনন্দিত।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-mint-an-nft/index.md b/public/content/translations/bn/developers/tutorials/how-to-mint-an-nft/index.md
new file mode 100644
index 00000000000..3f989ad3ee9
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-mint-an-nft/index.md
@@ -0,0 +1,328 @@
+---
+title: কীভাবে একটি NFT মিন্ট করবেন (NFT টিউটোরিয়াল সিরিজের ২/৩ অংশ)
+description: এই টিউটোরিয়ালে বর্ণনা করা হয়েছে কীভাবে আমাদের স্মার্ট কন্ট্রাক্ট এবং Web3 ব্যবহার করে ইথিরিয়াম ব্লকচেইনে একটি NFT মিন্ট করতে হয়।
+author: "সুমি মুদগিল"
+tags: ["ERC-721", "alchemy", "solidity", "স্মার্ট কন্ট্রাক্ট"]
+skill: beginner
+breadcrumb: একটি NFT মিন্ট করুন
+lang: bn
+published: 2021-04-22
+---
+
+[Beeple](https://www.nytimes.com/2021/03/11/arts/design/nft-auction-christies-beeple.html): $69 মিলিয়ন
+[3LAU](https://www.forbes.com/sites/abrambrown/2021/03/03/3lau-nft-nonfungible-tokens-justin-blau/?sh=5f72ef64643b): $11 মিলিয়ন
+[Grimes](https://www.theguardian.com/music/2021/mar/02/grimes-sells-digital-art-collection-non-fungible-tokens): $6 মিলিয়ন
+
+তারা সবাই Alchemy-এর শক্তিশালী API ব্যবহার করে তাদের NFT মিন্ট করেছেন। এই টিউটোরিয়ালে, আমরা আপনাকে শেখাব কীভাবে ১০ মিনিটেরও কম সময়ে একই কাজ করতে হয়।
+
+"NFT মিন্ট করা" হলো ব্লকচেইনে আপনার ERC-721 টোকেনের একটি অনন্য ইনস্ট্যান্স প্রকাশ করার প্রক্রিয়া। [এই NFT টিউটোরিয়াল সিরিজের ১ম অংশ](/developers/tutorials/how-to-write-and-deploy-an-nft/)-এর আমাদের স্মার্ট কন্ট্রাক্ট ব্যবহার করে, চলুন আমাদের Web3 দক্ষতা কাজে লাগাই এবং একটি NFT মিন্ট করি। এই টিউটোরিয়ালের শেষে, আপনি আপনার মন (এবং ওয়ালেট) যতগুলো চায় ততগুলো NFT মিন্ট করতে পারবেন!
+
+চলুন শুরু করা যাক!
+
+## ধাপ 1: Web3 ইনস্টল করুন {#install-web3}
+
+আপনি যদি আপনার NFT স্মার্ট কন্ট্রাক্ট তৈরি করার প্রথম টিউটোরিয়ালটি অনুসরণ করে থাকেন, তবে Ethers.js ব্যবহার করার অভিজ্ঞতা আপনার ইতিমধ্যেই আছে। Web3 অনেকটা Ethers-এর মতোই, কারণ এটি এমন একটি লাইব্রেরি যা [Ethereum](/) ব্লকচেইনে রিকোয়েস্ট তৈরি করা সহজ করতে ব্যবহৃত হয়। এই টিউটোরিয়ালে আমরা [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) ব্যবহার করব, যা একটি উন্নত Web3 লাইব্রেরি এবং এটি স্বয়ংক্রিয় রিট্রাই ও শক্তিশালী WebSocket সাপোর্ট প্রদান করে।
+
+আপনার প্রজেক্টের হোম ডিরেক্টরিতে রান করুন:
+
+```
+npm install @alch/alchemy-web3
+```
+
+## ধাপ 2: একটি `mint-nft.js` ফাইল তৈরি করুন {#create-mintnftjs}
+
+আপনার scripts ডিরেক্টরির ভেতরে, একটি `mint-nft.js` ফাইল তৈরি করুন এবং নিচের কোডগুলো যোগ করুন:
+
+```js
+require("dotenv").config()
+const API_URL = process.env.API_URL
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(API_URL)
+```
+
+## ধাপ 3: আপনার কন্ট্রাক্ট ABI সংগ্রহ করুন {#contract-abi}
+
+আমাদের কন্ট্রাক্ট ABI (Application Binary Interface) হলো আমাদের স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করার ইন্টারফেস। আপনি কন্ট্রাক্ট ABI সম্পর্কে আরও জানতে পারেন [এখানে](https://docs.alchemyapi.io/alchemy/guides/eth_getlogs#what-are-ab-is)। Hardhat স্বয়ংক্রিয়ভাবে আমাদের জন্য একটি ABI তৈরি করে এবং এটি `MyNFT.json` ফাইলে সেভ করে। এটি ব্যবহার করার জন্য আমাদের `mint-nft.js` ফাইলে নিচের কোডগুলো যোগ করে এর কন্টেন্ট পার্স করতে হবে:
+
+```js
+const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")
+```
+
+আপনি যদি ABI দেখতে চান তবে এটি আপনার কনসোলে প্রিন্ট করতে পারেন:
+
+```js
+console.log(JSON.stringify(contract.abi))
+```
+
+`mint-nft.js` রান করতে এবং কনসোলে আপনার ABI প্রিন্ট হওয়া দেখতে আপনার টার্মিনালে যান এবং রান করুন:
+
+```js
+node scripts/mint-nft.js
+```
+
+## ধাপ 4: IPFS ব্যবহার করে আপনার NFT-এর মেটাডাটা কনফিগার করুন {#config-meta}
+
+১ম অংশের টিউটোরিয়াল থেকে যদি আপনার মনে থাকে, আমাদের `mintNFT` স্মার্ট কন্ট্রাক্ট ফাংশনটি একটি tokenURI প্যারামিটার নেয় যা একটি JSON ডকুমেন্টে রিজলভ হওয়া উচিত, যেখানে NFT-এর মেটাডাটা বর্ণনা করা থাকে— যা মূলত NFT-কে জীবন্ত করে তোলে এবং এর কনফিগারযোগ্য প্রপার্টি যেমন নাম, বর্ণনা, ছবি এবং অন্যান্য অ্যাট্রিবিউট থাকতে দেয়।
+
+> _Interplanetary File System (IPFS) হলো একটি ডিসেন্ট্রালাইজড প্রটোকল এবং পিয়ার-টু-পিয়ার নেটওয়ার্ক যা একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেমে ডাটা স্টোর এবং শেয়ার করার জন্য ব্যবহৃত হয়।_
+
+আমাদের NFT অ্যাসেট এবং মেটাডাটা স্টোর করতে আমরা Pinata ব্যবহার করব, যা একটি সুবিধাজনক IPFS API এবং টুলকিট, যাতে আমাদের NFT সত্যিই ডিসেন্ট্রালাইজড হয় তা নিশ্চিত করা যায়। আপনার যদি Pinata একাউন্ট না থাকে, তবে [এখানে](https://app.pinata.cloud) একটি ফ্রি একাউন্টের জন্য সাইন আপ করুন এবং আপনার ইমেইল ভেরিফাই করার ধাপগুলো সম্পন্ন করুন।
+
+একাউন্ট তৈরি করার পর:
+
+- "Files" পেজে যান এবং পেজের উপরের বাম দিকে থাকা নীল "Upload" বাটনে ক্লিক করুন।
+
+- Pinata-তে একটি ছবি আপলোড করুন — এটি হবে আপনার NFT-এর ইমেজ অ্যাসেট। আপনি চাইলে অ্যাসেটটির যেকোনো নাম দিতে পারেন।
+
+- আপলোড করার পর, আপনি "Files" পেজের টেবিলে ফাইলের তথ্য দেখতে পাবেন। আপনি একটি CID কলামও দেখতে পাবেন। এর পাশের কপি বাটনে ক্লিক করে আপনি CID কপি করতে পারেন। আপনি আপনার আপলোড করা ফাইলটি দেখতে পারেন এখানে: `https://gateway.pinata.cloud/ipfs/`। উদাহরণস্বরূপ, আমরা IPFS-এ যে ছবিটি ব্যবহার করেছি তা আপনি [এখানে](https://gateway.pinata.cloud/ipfs/QmZdd5KYdCFApWn7eTZJ1qgJu18urJrP9Yh1TZcZrZxxB5) দেখতে পারেন।
+
+যারা ভিজ্যুয়ালি শিখতে বেশি পছন্দ করেন, তাদের জন্য উপরের ধাপগুলো এখানে সংক্ষেপে দেওয়া হলো:
+
+
+
+এখন, আমরা Pinata-তে আরও একটি ডকুমেন্ট আপলোড করতে চাই। কিন্তু তা করার আগে, আমাদের এটি তৈরি করতে হবে!
+
+আপনার রুট ডিরেক্টরিতে, `nft-metadata.json` নামে একটি নতুন ফাইল তৈরি করুন এবং নিচের json কোডটি যোগ করুন:
+
+```json
+{
+ "attributes": [
+ {
+ "trait_type": "Breed",
+ "value": "Maltipoo"
+ },
+ {
+ "trait_type": "Eye color",
+ "value": "Mocha"
+ }
+ ],
+ "description": "The world's most adorable and sensitive pup.",
+ "image": "ipfs://QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb",
+ "name": "Ramses"
+}
+```
+
+json-এর ডাটা পরিবর্তন করতে দ্বিধা করবেন না। আপনি attributes সেকশন থেকে কিছু বাদ দিতে বা যোগ করতে পারেন। সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, নিশ্চিত করুন যে image ফিল্ডটি আপনার IPFS ইমেজের লোকেশন নির্দেশ করছে — অন্যথায়, আপনার NFT-তে একটি (খুবই কিউট!) কুকুরের ছবি থাকবে।
+
+JSON ফাইলটি এডিট করা শেষ হলে, এটি সেভ করুন এবং ছবি আপলোড করার জন্য আমরা যে ধাপগুলো অনুসরণ করেছিলাম, সেই একই ধাপ অনুসরণ করে এটি Pinata-তে আপলোড করুন।
+
+
+
+## ধাপ 5: আপনার কন্ট্রাক্টের একটি ইনস্ট্যান্স তৈরি করুন {#instance-contract}
+
+এখন, আমাদের কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য, আমাদের কোডে এর একটি ইনস্ট্যান্স তৈরি করতে হবে। এটি করার জন্য আমাদের কন্ট্রাক্ট এডড্রেস প্রয়োজন হবে যা আমরা ডিপ্লয়মেন্ট থেকে বা কন্ট্রাক্ট ডিপ্লয় করতে আপনি যে এডড্রেস ব্যবহার করেছিলেন তা [Blockscout](https://eth-sepolia.blockscout.com/)-এ খুঁজে বের করে পেতে পারি।
+
+
+
+উপরের উদাহরণে, আমাদের কন্ট্রাক্ট এডড্রেস হলো 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778।
+
+এরপর আমরা ABI এবং এডড্রেস ব্যবহার করে আমাদের কন্ট্রাক্ট তৈরি করতে Web3 [contract method](https://docs.web3js.org/api/web3-eth-contract/class/Contract) ব্যবহার করব। আপনার `mint-nft.js` ফাইলে, নিচের কোডটি যোগ করুন:
+
+```js
+const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
+
+const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
+```
+
+## ধাপ 6: `.env` ফাইল আপডেট করুন {#update-env}
+
+এখন, ইথিরিয়াম চেইনে লেনদেন তৈরি এবং পাঠানোর জন্য, আমরা একাউন্ট নন্স (নিচে ব্যাখ্যা করা হবে) পেতে আপনার পাবলিক ইথিরিয়াম একাউন্ট এডড্রেস ব্যবহার করব।
+
+আপনার `.env` ফাইলে আপনার পাবলিক কি যোগ করুন — আপনি যদি টিউটোরিয়ালের ১ম অংশ সম্পন্ন করে থাকেন, তবে আমাদের `.env` ফাইলটি এখন এরকম দেখাবে:
+
+```js
+API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
+PRIVATE_KEY = "your-private-account-address"
+PUBLIC_KEY = "your-public-account-address"
+```
+
+## ধাপ 7: আপনার লেনদেন তৈরি করুন {#create-txn}
+
+প্রথমে, চলুন `mintNFT(tokenData)` নামের একটি ফাংশন ডিফাইন করি এবং নিচের কাজগুলো করে আমাদের লেনদেন তৈরি করি:
+
+1. `.env` ফাইল থেকে আপনার _PRIVATE_KEY_ এবং _PUBLIC_KEY_ সংগ্রহ করুন।
+
+1. এরপর, আমাদের একাউন্ট নন্স বের করতে হবে। নন্স স্পেসিফিকেশনটি আপনার এডড্রেস থেকে পাঠানো লেনদেন-এর সংখ্যা ট্র্যাক করতে ব্যবহৃত হয় — যা আমাদের নিরাপত্তার উদ্দেশ্যে এবং [রিপ্লে অ্যাটাক](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce) প্রতিরোধ করতে প্রয়োজন। আপনার এডড্রেস থেকে পাঠানো লেনদেন-এর সংখ্যা পেতে, আমরা [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount) ব্যবহার করি।
+
+1. সবশেষে আমরা নিচের তথ্যগুলো দিয়ে আমাদের লেনদেন সেট আপ করব:
+
+- `'from': PUBLIC_KEY` — আমাদের লেনদেন-এর উৎস হলো আমাদের পাবলিক এডড্রেস
+
+- `'to': contractAddress` — যে কন্ট্রাক্টের সাথে আমরা ইন্টারঅ্যাক্ট করতে এবং লেনদেন পাঠাতে চাই
+
+- `'nonce': nonce` — আমাদের এডড্রেস থেকে পাঠানো লেনদেন-এর সংখ্যাসহ একাউন্ট নন্স
+
+- `'gas': estimatedGas` — লেনদেন সম্পন্ন করতে প্রয়োজনীয় আনুমানিক গ্যাস
+
+- `'data': nftContract.methods.mintNFT(PUBLIC_KEY, md).encodeABI()` — এই লেনদেন-এ আমরা যে কম্পিউটেশনটি করতে চাই — যা এই ক্ষেত্রে একটি NFT মিন্ট করা
+
+আপনার `mint-nft.js` ফাইলটি এখন এরকম দেখাবে:
+
+```js
+ require('dotenv').config();
+ const API_URL = process.env.API_URL;
+ const PUBLIC_KEY = process.env.PUBLIC_KEY;
+ const PRIVATE_KEY = process.env.PRIVATE_KEY;
+
+ const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
+ const web3 = createAlchemyWeb3(API_URL);
+
+ const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json");
+ const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778";
+ const nftContract = new web3.eth.Contract(contract.abi, contractAddress);
+
+ async function mintNFT(tokenURI) {
+ const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); // সর্বশেষ নন্স পান
+
+ // লেনদেনটি
+ const tx = {
+ 'from': PUBLIC_KEY,
+ 'to': contractAddress,
+ 'nonce': nonce,
+ 'gas': 500000,
+ 'data': nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI()
+ };
+ }
+```
+
+## ধাপ 8: লেনদেন সাইন করুন {#sign-txn}
+
+যেহেতু আমরা আমাদের লেনদেন তৈরি করেছি, এটি পাঠানোর জন্য আমাদের এটি সাইন করতে হবে। এখানেই আমরা আমাদের প্রাইভেট কি ব্যবহার করব।
+
+`web3.eth.sendSignedTransaction` আমাদের লেনদেন হ্যাস দেবে, যা ব্যবহার করে আমরা নিশ্চিত হতে পারি যে আমাদের লেনদেন মাইন করা হয়েছে এবং নেটওয়ার্ক দ্বারা ড্রপ হয়নি। আপনি লক্ষ্য করবেন যে লেনদেন সাইনিং সেকশনে, আমরা কিছু এরর চেকিং যোগ করেছি যাতে আমরা জানতে পারি আমাদের লেনদেন সফলভাবে সম্পন্ন হয়েছে কিনা।
+
+```js
+require("dotenv").config()
+const API_URL = process.env.API_URL
+const PUBLIC_KEY = process.env.PUBLIC_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(API_URL)
+
+const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")
+const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
+const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
+
+async function mintNFT(tokenURI) {
+ const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") // সর্বশেষ নন্স পান
+
+ // লেনদেনটি
+ const tx = {
+ from: PUBLIC_KEY,
+ to: contractAddress,
+ nonce: nonce,
+ gas: 500000,
+ data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
+ }
+
+ const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)
+ signPromise
+ .then((signedTx) => {
+ web3.eth.sendSignedTransaction(
+ signedTx.rawTransaction,
+ function (err, hash) {
+ if (!err) {
+ console.log(
+ "The hash of your transaction is: ",
+ hash,
+ "\nCheck Alchemy's Mempool to view the status of your transaction!"
+ )
+ } else {
+ console.log(
+ "Something went wrong when submitting your transaction:",
+ err
+ )
+ }
+ }
+ )
+ })
+ .catch((err) => {
+ console.log(" Promise failed:", err)
+ })
+}
+```
+
+## ধাপ 9: `mintNFT` কল করুন এবং node `mint-nft.js` রান করুন {#call-mintnft-fn}
+
+Pinata-তে আপলোড করা `metadata.json`-এর কথা মনে আছে? Pinata থেকে এর হ্যাশকোড সংগ্রহ করুন এবং `mintNFT` ফাংশনে প্যারামিটার হিসেবে নিচেরটি পাস করুন `https://gateway.pinata.cloud/ipfs/`
+
+হ্যাশকোড কীভাবে পাবেন তা নিচে দেওয়া হলো:
+
+_কীভাবে Pinata-তে আপনার nft মেটাডাটা হ্যাশকোড পাবেন_
+
+> একটি আলাদা উইন্ডোতে `https://gateway.pinata.cloud/ipfs/` লোড করে ডাবল চেক করুন যে আপনার কপি করা হ্যাশকোডটি আপনার **metadata.json**-এর সাথে লিংক করা আছে কিনা। পেজটি নিচের স্ক্রিনশটের মতো দেখতে হওয়া উচিত:
+
+_আপনার পেজে json মেটাডাটা প্রদর্শিত হওয়া উচিত_
+
+সব মিলিয়ে, আপনার কোডটি দেখতে অনেকটা এরকম হওয়া উচিত:
+
+```js
+require("dotenv").config()
+const API_URL = process.env.API_URL
+const PUBLIC_KEY = process.env.PUBLIC_KEY
+const PRIVATE_KEY = process.env.PRIVATE_KEY
+
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(API_URL)
+
+const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")
+const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
+const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
+
+async function mintNFT(tokenURI) {
+ const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") // সর্বশেষ নন্স পান
+
+ // লেনদেনটি
+ const tx = {
+ from: PUBLIC_KEY,
+ to: contractAddress,
+ nonce: nonce,
+ gas: 500000,
+ data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
+ }
+
+ const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)
+ signPromise
+ .then((signedTx) => {
+ web3.eth.sendSignedTransaction(
+ signedTx.rawTransaction,
+ function (err, hash) {
+ if (!err) {
+ console.log(
+ "The hash of your transaction is: ",
+ hash,
+ "\nCheck Alchemy's Mempool to view the status of your transaction!"
+ )
+ } else {
+ console.log(
+ "Something went wrong when submitting your transaction:",
+ err
+ )
+ }
+ }
+ )
+ })
+ .catch((err) => {
+ console.log("Promise failed:", err)
+ })
+}
+
+mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP")
+```
+
+এখন, আপনার NFT ডিপ্লয় করতে `node scripts/mint-nft.js` রান করুন। কয়েক সেকেন্ড পর, আপনি আপনার টার্মিনালে এরকম একটি রেসপন্স দেখতে পাবেন:
+
+ The hash of your transaction is: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8
+
+ Check Alchemy's Mempool to view the status of your transaction!
+
+এরপর, আপনার লেনদেন-এর স্ট্যাটাস (এটি পেন্ডিং, মাইন করা হয়েছে, নাকি নেটওয়ার্ক দ্বারা ড্রপ হয়েছে) দেখতে আপনার [Alchemy mempool](https://dashboard.alchemyapi.io/mempool)-এ ভিজিট করুন। যদি আপনার লেনদেন ড্রপ হয়ে যায়, তবে [Blockscout](https://eth-sepolia.blockscout.com/) চেক করা এবং আপনার লেনদেন হ্যাস সার্চ করাও সহায়ক হতে পারে।
+
+_Etherscan-এ আপনার NFT লেনদেন হ্যাস দেখুন_
+
+আর এভাবেই হয়ে গেল! আপনি এখন ইথিরিয়াম ব্লকচেইনে একটি NFT ডিপ্লয় এবং মিন্ট করেছেন
+
+`mint-nft.js` ব্যবহার করে আপনি আপনার মন (এবং ওয়ালেট) যতগুলো চায় ততগুলো NFT মিন্ট করতে পারবেন! শুধু নিশ্চিত করুন যে আপনি NFT-এর মেটাডাটা বর্ণনা করে এমন একটি নতুন tokenURI পাস করছেন (অন্যথায়, আপনি শুধু ভিন্ন ভিন্ন ID-সহ একগুচ্ছ অভিন্ন NFT তৈরি করবেন)।
+
+সম্ভবত, আপনি আপনার ওয়ালেট-এ আপনার NFT প্রদর্শন করতে চাইবেন — তাই [৩য় অংশ: কীভাবে আপনার ওয়ালেট-এ আপনার NFT দেখবেন](/developers/tutorials/how-to-view-nft-in-metamask/) চেক করতে ভুলবেন না!
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/bn/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
new file mode 100644
index 00000000000..306c994af10
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
@@ -0,0 +1,107 @@
+---
+title: টেস্টিংয়ের জন্য সলিডিটি স্মার্ট কন্ট্রাক্ট কীভাবে মক করবেন
+description: টেস্টিংয়ের সময় কেন আপনার কন্ট্রাক্টগুলো নিয়ে মজা করা উচিত
+author: মার্কাস ওয়াস
+lang: bn
+tags:
+ - solidity
+ - স্মার্ট কন্ট্রাক্ট
+ - টেস্টিং
+ - মকিং
+skill: intermediate
+breadcrumb: মকিং কন্ট্রাক্ট
+published: 2020-05-02
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/mocking-contracts
+---
+
+অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ে [মক অবজেক্ট](https://wikipedia.org/wiki/Mock_object) (Mock objects) একটি সাধারণ ডিজাইন প্যাটার্ন। প্রাচীন ফরাসি শব্দ 'mocquer' থেকে আসা এই শব্দের অর্থ 'মজা করা', যা পরবর্তীতে 'বাস্তব কিছুর অনুকরণ করা'-তে রূপান্তরিত হয়েছে এবং প্রোগ্রামিংয়ে আমরা মূলত এটাই করে থাকি। আপনি চাইলে আপনার স্মার্ট কন্ট্রাক্ট নিয়ে মজা করতে পারেন, তবে যখনই সম্ভব সেগুলোকে মক করুন। এটি আপনার কাজকে আরও সহজ করে তুলবে।
+
+## মক ব্যবহার করে কন্ট্রাক্টের ইউনিট-টেস্টিং {#unit-testing-contracts-with-mocks}
+
+একটি কন্ট্রাক্ট মক করার অর্থ হলো মূলত সেই কন্ট্রাক্টের একটি দ্বিতীয় সংস্করণ তৈরি করা, যা আসলটির মতোই আচরণ করে, তবে এমনভাবে যাতে ডেভেলপার সহজেই তা নিয়ন্ত্রণ করতে পারেন। অনেক সময় আপনাকে এমন জটিল কন্ট্রাক্ট নিয়ে কাজ করতে হতে পারে, যেখানে আপনি কেবল [কন্ট্রাক্টের ছোট ছোট অংশের ইউনিট-টেস্ট](/developers/docs/smart-contracts/testing/) করতে চান। সমস্যা হলো, এই ছোট অংশটি টেস্ট করার জন্য যদি এমন একটি নির্দিষ্ট কন্ট্রাক্ট স্টেট প্রয়োজন হয়, যা অর্জন করা বেশ কঠিন, তখন কী করবেন?
+
+আপনি চাইলে প্রতিবার জটিল টেস্ট সেটআপ লজিক লিখতে পারেন, যা কন্ট্রাক্টটিকে প্রয়োজনীয় স্টেটে নিয়ে আসবে, অথবা আপনি একটি মক লিখতে পারেন। ইনহেরিটেন্স (inheritance) ব্যবহার করে একটি কন্ট্রাক্ট মক করা খুবই সহজ। শুধু একটি দ্বিতীয় মক কন্ট্রাক্ট তৈরি করুন যা আসল কন্ট্রাক্ট থেকে ইনহেরিট করে। এখন আপনি আপনার মকে ফাংশনগুলো ওভাররাইড করতে পারবেন। চলুন একটি উদাহরণের মাধ্যমে বিষয়টি দেখি।
+
+## উদাহরণ: প্রাইভেট ERC20 {#example-private-erc20}
+
+আমরা একটি উদাহরণস্বরূপ ERC-20 কন্ট্রাক্ট ব্যবহার করছি, যার একটি প্রাথমিক প্রাইভেট সময় রয়েছে। মালিক প্রাইভেট ব্যবহারকারীদের পরিচালনা করতে পারবেন এবং শুরুতে কেবল তারাই টোকেন গ্রহণ করার অনুমতি পাবেন। একটি নির্দিষ্ট সময় পার হওয়ার পর, সবাই টোকেনগুলো ব্যবহার করার অনুমতি পাবে। যদি আপনার কৌতূহল থাকে, তবে জানিয়ে রাখি, আমরা নতুন OpenZeppelin কন্ট্রাক্ট v3 থেকে [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/5.x/extending-contracts#using-hooks) হুক ব্যবহার করছি।
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/Ownable.sol";
+
+contract PrivateERC20 is ERC20, Ownable {
+ mapping (address => bool) public isPrivateUser;
+ uint256 private publicAfterTime;
+
+ constructor(uint256 privateERC20timeInSec) ERC20("PrivateERC20", "PRIV") public {
+ publicAfterTime = now + privateERC20timeInSec;
+ }
+
+ function addUser(address user) external onlyOwner {
+ isPrivateUser[user] = true;
+ }
+
+ function isPublic() public view returns (bool) {
+ return now >= publicAfterTime;
+ }
+
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
+ super._beforeTokenTransfer(from, to, amount);
+
+ require(_validRecipient(to), "PrivateERC20: invalid recipient");
+ }
+
+ function _validRecipient(address to) private view returns (bool) {
+ if (isPublic()) {
+ return true;
+ }
+
+ return isPrivateUser[to];
+ }
+}
+```
+
+আর এখন চলুন এটিকে মক করি।
+
+```solidity
+pragma solidity ^0.6.0;
+import "../PrivateERC20.sol";
+
+contract PrivateERC20Mock is PrivateERC20 {
+ bool isPublicConfig;
+
+ constructor() public PrivateERC20(0) {}
+
+ function setIsPublic(bool isPublic) external {
+ isPublicConfig = isPublic;
+ }
+
+ function isPublic() public view returns (bool) {
+ return isPublicConfig;
+ }
+}
+```
+
+আপনি নিচের যেকোনো একটি এরর মেসেজ পাবেন:
+
+- `PrivateERC20Mock.sol: TypeError: Overriding function is missing "override" specifier.`
+- `PrivateERC20.sol: TypeError: Trying to override non-virtual function. Did you forget to add "virtual"?.`
+
+যেহেতু আমরা নতুন 0.6 Solidity সংস্করণ ব্যবহার করছি, তাই যে ফাংশনগুলো ওভাররাইড করা যায় সেগুলোর জন্য আমাদের `virtual` কিওয়ার্ড যোগ করতে হবে এবং ওভাররাইডিং ফাংশনের জন্য `override` যোগ করতে হবে। তাই চলুন উভয় `isPublic` ফাংশনে এগুলো যোগ করি।
+
+এখন আপনার ইউনিট টেস্টগুলোতে, আপনি এর পরিবর্তে `PrivateERC20Mock` ব্যবহার করতে পারেন। যখন আপনি প্রাইভেট ব্যবহারের সময়ের আচরণ টেস্ট করতে চাইবেন, তখন `setIsPublic(false)` ব্যবহার করুন এবং একইভাবে পাবলিক ব্যবহারের সময় টেস্ট করার জন্য `setIsPublic(true)` ব্যবহার করুন। অবশ্যই আমাদের উদাহরণে, আমরা সময় পরিবর্তন করার জন্য [টাইম হেল্পার](https://docs.openzeppelin.com/test-helpers/0.5/api#increase) ব্যবহার করতে পারতাম। তবে মকিংয়ের ধারণাটি এখন পরিষ্কার হওয়া উচিত এবং আপনি এমন পরিস্থিতি কল্পনা করতে পারেন যেখানে কেবল সময় এগিয়ে নেওয়া এতটা সহজ নয়।
+
+## অনেকগুলো কন্ট্রাক্ট মক করা {#mocking-many-contracts}
+
+প্রতিটি মকের জন্য যদি আপনাকে আলাদা কন্ট্রাক্ট তৈরি করতে হয়, তবে এটি বেশ ঝামেলার হতে পারে। যদি এটি আপনার জন্য বিরক্তিকর হয়, তবে আপনি [MockContract](https://github.com/gnosis/mock-contract) লাইব্রেরিটি দেখতে পারেন। এটি আপনাকে তাৎক্ষণিকভাবে কন্ট্রাক্টের আচরণ ওভাররাইড এবং পরিবর্তন করার সুবিধা দেয়। তবে, এটি কেবল অন্য কন্ট্রাক্টে কল মক করার জন্য কাজ করে, তাই এটি আমাদের উদাহরণের জন্য কাজ করবে না।
+
+## মকিং আরও বেশি শক্তিশালী হতে পারে {#mocking-can-be-even-more-powerful}
+
+মকিংয়ের ক্ষমতা এখানেই শেষ নয়।
+
+- ফাংশন যোগ করা: কেবল একটি নির্দিষ্ট ফাংশন ওভাররাইড করাই উপকারী নয়, বরং অতিরিক্ত ফাংশন যোগ করাও বেশ কাজের। টোকেনের জন্য একটি ভালো উদাহরণ হলো একটি অতিরিক্ত `mint` ফাংশন রাখা, যাতে যেকোনো ব্যবহারকারী বিনামূল্যে নতুন টোকেন পেতে পারে।
+- টেস্টনেটে ব্যবহার: যখন আপনি আপনার ডিএ্যাপ-এর সাথে টেস্টনেট-এ আপনার কন্ট্রাক্টগুলো ডিপ্লয় এবং টেস্ট করবেন, তখন একটি মক করা সংস্করণ ব্যবহার করার কথা বিবেচনা করুন। খুব বেশি প্রয়োজন না হলে ফাংশন ওভাররাইড করা এড়িয়ে চলুন। সর্বোপরি আপনি আসল লজিক টেস্ট করতে চান। তবে উদাহরণস্বরূপ একটি রিসেট ফাংশন যোগ করা উপকারী হতে পারে, যা কেবল কন্ট্রাক্ট স্টেট-কে শুরুতে রিসেট করে দেয়, কোনো নতুন ডিপ্লয়মেন্টের প্রয়োজন হয় না। স্পষ্টতই আপনি মেইননেট কন্ট্রাক্টে এমন কিছু রাখতে চাইবেন না।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/bn/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
new file mode 100644
index 00000000000..1bc01172d72
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
@@ -0,0 +1,702 @@
+---
+title: স্মার্ট কন্ট্রাক্ট টেস্ট করতে কীভাবে Echidna ব্যবহার করবেন
+description: স্মার্ট কন্ট্রাক্ট স্বয়ংক্রিয়ভাবে টেস্ট করতে কীভাবে Echidna ব্যবহার করবেন
+author: "ট্রেইলঅফবিটস"
+lang: bn
+tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "টেস্টিং", "ফাজিং"]
+skill: advanced
+breadcrumb: Echidna
+published: 2020-04-10
+source: Building secure contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna
+---
+
+## ইনস্টলেশন {#installation}
+
+Echidna ডকার (docker) এর মাধ্যমে বা প্রি-কম্পাইল করা বাইনারি ব্যবহার করে ইনস্টল করা যেতে পারে।
+
+### ডকারের মাধ্যমে Echidna {#echidna-through-docker}
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
+```
+
+_শেষ কমান্ডটি eth-security-toolbox-কে এমন একটি ডকারে রান করে যার আপনার বর্তমান ডিরেক্টরিতে অ্যাক্সেস রয়েছে। আপনি আপনার হোস্ট থেকে ফাইলগুলো পরিবর্তন করতে পারেন এবং ডকার থেকে ফাইলগুলোর ওপর টুলগুলো রান করতে পারেন।_
+
+ডকারের ভেতরে রান করুন:
+
+```bash
+solc-select 0.5.11
+cd /home/training
+```
+
+### বাইনারি {#binary}
+
+[https://github.com/crytic/echidna/releases/tag/v1.4.0.0](https://github.com/crytic/echidna/releases/tag/v1.4.0.0)
+
+## প্রপার্টি-ভিত্তিক ফাজিং (fuzzing) পরিচিতি {#introduction-to-property-based-fuzzing}
+
+Echidna হলো একটি প্রপার্টি-ভিত্তিক ফাজার, যা আমরা আমাদের আগের ব্লগপোস্টগুলোতে বর্ণনা করেছি ([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/), [2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/), [3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/))।
+
+### ফাজিং {#fuzzing}
+
+[ফাজিং](https://wikipedia.org/wiki/Fuzzing) হলো নিরাপত্তা কমিউনিটিতে একটি সুপরিচিত কৌশল। প্রোগ্রামে বাগ (bug) খুঁজে বের করার জন্য কমবেশি র্যান্ডম ইনপুট তৈরি করা এর কাজ। প্রথাগত সফটওয়্যারের জন্য ফাজারগুলো (যেমন [AFL](http://lcamtuf.coredump.cx/afl/) বা [LibFuzzer](https://llvm.org/docs/LibFuzzer.html)) বাগ খুঁজে বের করার কার্যকর টুল হিসেবে পরিচিত।
+
+সম্পূর্ণ র্যান্ডম ইনপুট তৈরির বাইরেও, ভালো ইনপুট তৈরি করার জন্য অনেক কৌশল এবং পদ্ধতি রয়েছে, যার মধ্যে অন্তর্ভুক্ত:
+
+- প্রতিটি এক্সিকিউশন থেকে ফিডব্যাক নেওয়া এবং এটি ব্যবহার করে জেনারেশন গাইড করা। উদাহরণস্বরূপ, যদি একটি নতুন তৈরি করা ইনপুট নতুন কোনো পাথ (path) আবিষ্কার করতে সাহায্য করে, তবে এর কাছাকাছি নতুন ইনপুট তৈরি করা যৌক্তিক হতে পারে।
+- কাঠামোগত সীমাবদ্ধতা মেনে ইনপুট তৈরি করা। উদাহরণস্বরূপ, যদি আপনার ইনপুটে চেকসাম (checksum) সহ একটি হেডার থাকে, তবে ফাজারকে চেকসাম যাচাই করার মতো ইনপুট তৈরি করতে দেওয়া যৌক্তিক হবে।
+- নতুন ইনপুট তৈরি করতে পরিচিত ইনপুট ব্যবহার করা: যদি আপনার কাছে বৈধ ইনপুটের একটি বড় ডেটাসেট থাকে, তবে আপনার ফাজার শূন্য থেকে শুরু করার পরিবর্তে সেগুলো থেকে নতুন ইনপুট তৈরি করতে পারে। এগুলোকে সাধারণত _সীড (seeds)_ বলা হয়।
+
+### প্রপার্টি-ভিত্তিক ফাজিং {#property-based-fuzzing}
+
+Echidna ফাজারের একটি নির্দিষ্ট পরিবারের অন্তর্গত: প্রপার্টি-ভিত্তিক ফাজিং যা [QuickCheck](https://wikipedia.org/wiki/QuickCheck) দ্বারা ব্যাপকভাবে অনুপ্রাণিত। ক্লাসিক ফাজারের বিপরীতে যা ক্র্যাশ খুঁজে বের করার চেষ্টা করে, Echidna ব্যবহারকারী-নির্ধারিত ইনভ্যারিয়েন্টগুলো (invariants) ভাঙার চেষ্টা করবে।
+
+স্মার্ট কন্ট্রাক্ট-এ, ইনভ্যারিয়েন্টগুলো হলো Solidity ফাংশন, যা কন্ট্রাক্ট পৌঁছাতে পারে এমন যেকোনো ভুল বা অবৈধ স্টেট (state) উপস্থাপন করতে পারে, যার মধ্যে রয়েছে:
+
+- ভুল অ্যাক্সেস কন্ট্রোল: আক্রমণকারী কন্ট্রাক্টের মালিক হয়ে গেছে।
+- ভুল স্টেট মেশিন: কন্ট্রাক্ট পজ (pause) থাকা অবস্থায় টোকেন ট্রান্সফার করা যেতে পারে।
+- ভুল পাটিগণিত: ব্যবহারকারী তার ব্যালেন্স আন্ডারফ্লো (underflow) করতে পারে এবং আনলিমিটেড ফ্রি টোকেন পেতে পারে।
+
+### Echidna দিয়ে একটি প্রপার্টি টেস্ট করা {#testing-a-property-with-echidna}
+
+আমরা দেখব কীভাবে Echidna দিয়ে একটি স্মার্ট কন্ট্রাক্ট টেস্ট করতে হয়। লক্ষ্য হলো নিচের স্মার্ট কন্ট্রাক্টটি [`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol):
+
+```solidity
+contract Token{
+ mapping(address => uint) public balances;
+ function airdrop() public{
+ balances[msg.sender] = 1000;
+ }
+ function consume() public{
+ require(balances[msg.sender]>0);
+ balances[msg.sender] -= 1;
+ }
+ function backdoor() public{
+ balances[msg.sender] += 1;
+ }
+}
+```
+
+আমরা ধরে নেব যে এই টোকেনের নিচের প্রপার্টিগুলো থাকতে হবে:
+
+- যেকোনো ব্যক্তির কাছে সর্বোচ্চ 1000 টোকেন থাকতে পারে
+- টোকেনটি ট্রান্সফার করা যাবে না (এটি কোনো ERC-20 টোকেন নয়)
+
+### একটি প্রপার্টি লেখা {#write-a-property}
+
+Echidna প্রপার্টিগুলো হলো Solidity ফাংশন। একটি প্রপার্টিতে অবশ্যই:
+
+- কোনো আর্গুমেন্ট থাকা যাবে না
+- সফল হলে `true` রিটার্ন করতে হবে
+- এর নাম `echidna` দিয়ে শুরু হতে হবে
+
+Echidna যা করবে:
+
+- প্রপার্টি টেস্ট করার জন্য স্বয়ংক্রিয়ভাবে আরবিট্রারি লেনদেন তৈরি করবে।
+- কোনো লেনদেন যদি প্রপার্টিকে `false` রিটার্ন করায় বা এরর (error) থ্রো করে, তবে তা রিপোর্ট করবে।
+- প্রপার্টি কল করার সময় সাইড-ইফেক্ট বাতিল করবে (অর্থাৎ, যদি প্রপার্টি কোনো স্টেট ভেরিয়েবল পরিবর্তন করে, তবে টেস্টের পরে তা বাতিল করা হয়)
+
+নিচের প্রপার্টিটি চেক করে যে কলারের কাছে 1000-এর বেশি টোকেন নেই:
+
+```solidity
+function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+}
+```
+
+আপনার কন্ট্রাক্টকে প্রপার্টিগুলো থেকে আলাদা করতে ইনহেরিটেন্স (inheritance) ব্যবহার করুন:
+
+```solidity
+contract TestToken is Token{
+ function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+ }
+ }
+```
+
+[`token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol) প্রপার্টিটি ইমপ্লিমেন্ট করে এবং টোকেন থেকে ইনহেরিট করে।
+
+### একটি কন্ট্রাক্ট ইনিশিয়েট করা {#initiate-a-contract}
+
+Echidna-এর জন্য আর্গুমেন্ট ছাড়া একটি [কনস্ট্রাক্টর](/developers/docs/smart-contracts/anatomy/#constructor-functions) প্রয়োজন। যদি আপনার কন্ট্রাক্টে নির্দিষ্ট কোনো ইনিশিয়ালাইজেশনের প্রয়োজন হয়, তবে আপনাকে তা কনস্ট্রাক্টরে করতে হবে।
+
+Echidna-তে কিছু নির্দিষ্ট এডড্রেস রয়েছে:
+
+- `0x00a329c0648769A73afAc7F9381E08FB43dBEA72` যা কনস্ট্রাক্টরকে কল করে।
+- `0x10000`, `0x20000`, এবং `0x00a329C0648769a73afAC7F9381e08fb43DBEA70` যা র্যান্ডমভাবে অন্যান্য ফাংশনগুলোকে কল করে।
+
+আমাদের বর্তমান উদাহরণে কোনো নির্দিষ্ট ইনিশিয়ালাইজেশনের প্রয়োজন নেই, যার ফলে আমাদের কনস্ট্রাক্টরটি ফাঁকা।
+
+### Echidna রান করা {#run-echidna}
+
+Echidna চালু করা হয় এভাবে:
+
+```bash
+echidna-test contract.sol
+```
+
+যদি contract.sol-এ একাধিক কন্ট্রাক্ট থাকে, তবে আপনি টার্গেট নির্দিষ্ট করতে পারেন:
+
+```bash
+echidna-test contract.sol --contract MyContract
+```
+
+### সারসংক্ষেপ: একটি প্রপার্টি টেস্ট করা {#summary-testing-a-property}
+
+নিচে আমাদের উদাহরণে echidna রান করার সারসংক্ষেপ দেওয়া হলো:
+
+```solidity
+contract TestToken is Token{
+ constructor() public {}
+ function echidna_balance_under_1000() public view returns(bool){
+ return balances[msg.sender] <= 1000;
+ }
+ }
+```
+
+```bash
+echidna-test testtoken.sol --contract TestToken
+...
+
+echidna_balance_under_1000: failed!💥
+ Call sequence, shrinking (1205/5000):
+ airdrop()
+ backdoor()
+
+...
+```
+
+Echidna দেখতে পেয়েছে যে `backdoor` কল করা হলে প্রপার্টিটি লঙ্ঘিত হয়।
+
+## ফাজিং ক্যাম্পেইনের সময় কল করার জন্য ফাংশন ফিল্টার করা {#filtering-functions-to-call-during-a-fuzzing-campaign}
+
+আমরা দেখব কীভাবে ফাজ (fuzz) করার জন্য ফাংশনগুলো ফিল্টার করতে হয়।
+লক্ষ্য হলো নিচের স্মার্ট কন্ট্রাক্টটি:
+
+```solidity
+contract C {
+ bool state1 = false;
+ bool state2 = false;
+ bool state3 = false;
+ bool state4 = false;
+
+ function f(uint x) public {
+ require(x == 12);
+ state1 = true;
+ }
+
+ function g(uint x) public {
+ require(state1);
+ require(x == 8);
+ state2 = true;
+ }
+
+ function h(uint x) public {
+ require(state2);
+ require(x == 42);
+ state3 = true;
+ }
+
+ function i() public {
+ require(state3);
+ state4 = true;
+ }
+
+ function reset1() public {
+ state1 = false;
+ state2 = false;
+ state3 = false;
+ return;
+ }
+
+ function reset2() public {
+ state1 = false;
+ state2 = false;
+ state3 = false;
+ return;
+ }
+
+ function echidna_state4() public returns (bool) {
+ return (!state4);
+ }
+}
+```
+
+এই ছোট উদাহরণটি Echidna-কে একটি স্টেট ভেরিয়েবল পরিবর্তন করার জন্য লেনদেনের একটি নির্দিষ্ট সিকোয়েন্স খুঁজে বের করতে বাধ্য করে।
+এটি একটি ফাজারের জন্য কঠিন (এর জন্য [Manticore](https://github.com/trailofbits/manticore)-এর মতো একটি সিম্বলিক এক্সিকিউশন টুল ব্যবহার করার পরামর্শ দেওয়া হয়)।
+এটি যাচাই করার জন্য আমরা Echidna রান করতে পারি:
+
+```bash
+echidna-test multi.sol
+...
+echidna_state4: passed! 🎉
+Seed: -3684648582249875403
+```
+
+### ফাংশন ফিল্টার করা {#filtering-functions}
+
+এই কন্ট্রাক্টটি টেস্ট করার জন্য সঠিক সিকোয়েন্স খুঁজে পেতে Echidna-র সমস্যা হয় কারণ দুটি রিসেট ফাংশন (`reset1` এবং `reset2`) সমস্ত স্টেট ভেরিয়েবলকে `false`-এ সেট করে দেবে।
+যাইহোক, আমরা রিসেট ফাংশনটিকে ব্ল্যাকলিস্ট করতে বা শুধুমাত্র `f`, `g`,
+`h` এবং `i` ফাংশনগুলোকে হোয়াইটলিস্ট করতে একটি বিশেষ Echidna ফিচার ব্যবহার করতে পারি।
+
+ফাংশন ব্ল্যাকলিস্ট করতে, আমরা এই কনফিগারেশন ফাইলটি ব্যবহার করতে পারি:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["reset1", "reset2"]
+```
+
+ফাংশন ফিল্টার করার আরেকটি পদ্ধতি হলো হোয়াইটলিস্ট করা ফাংশনগুলোর তালিকা করা। এটি করার জন্য, আমরা এই কনফিগারেশন ফাইলটি ব্যবহার করতে পারি:
+
+```yaml
+filterBlacklist: false
+filterFunctions: ["f", "g", "h", "i"]
+```
+
+- `filterBlacklist` ডিফল্টভাবে `true` থাকে।
+- ফিল্টারিং শুধুমাত্র নাম দিয়ে করা হবে (প্যারামিটার ছাড়া)। যদি আপনার `f()` এবং `f(uint256)` থাকে, তবে `"f"` ফিল্টারটি উভয় ফাংশনের সাথেই মিলবে।
+
+### Echidna রান করা {#run-echidna-1}
+
+একটি কনফিগারেশন ফাইল `blacklist.yaml` দিয়ে Echidna রান করতে:
+
+```bash
+echidna-test multi.sol --config blacklist.yaml
+...
+echidna_state4: failed!💥
+ Call sequence:
+ f(12)
+ g(8)
+ h(42)
+ i()
+```
+
+Echidna প্রায় সাথে সাথেই প্রপার্টিটিকে ভুল প্রমাণ করার জন্য লেনদেনের সিকোয়েন্স খুঁজে পাবে।
+
+### সারসংক্ষেপ: ফাংশন ফিল্টার করা {#summary-filtering-functions}
+
+Echidna ফাজিং ক্যাম্পেইনের সময় কল করার জন্য ফাংশনগুলোকে ব্ল্যাকলিস্ট বা হোয়াইটলিস্ট করতে পারে, যা ব্যবহার করে:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["f1", "f2", "f3"]
+```
+
+```bash
+echidna-test contract.sol --config config.yaml
+...
+```
+
+Echidna `filterBlacklist` বুলিয়ানের মানের ওপর ভিত্তি করে `f1`, `f2` এবং `f3` ব্ল্যাকলিস্ট করে অথবা শুধুমাত্র এগুলোকে কল করে একটি ফাজিং ক্যাম্পেইন শুরু করে।
+
+## Echidna দিয়ে Solidity-এর assert কীভাবে টেস্ট করবেন {#how-to-test-soliditys-assert-with-echidna}
+
+এই সংক্ষিপ্ত টিউটোরিয়ালে, আমরা দেখাব কীভাবে কন্ট্রাক্টে অ্যাসারশন (assertion) চেকিং টেস্ট করতে Echidna ব্যবহার করতে হয়। ধরুন আমাদের কাছে এরকম একটি কন্ট্রাক্ট আছে:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ // tmp <= counter
+ return (counter - tmp);
+ }
+}
+```
+
+### একটি অ্যাসারশন লেখা {#write-an-assertion}
+
+আমরা নিশ্চিত করতে চাই যে এর পার্থক্য রিটার্ন করার পরে `tmp` যেন `counter`-এর চেয়ে কম বা সমান হয়। আমরা একটি Echidna প্রপার্টি লিখতে পারতাম, কিন্তু আমাদের `tmp` মানটি কোথাও স্টোর করতে হবে। এর পরিবর্তে, আমরা এরকম একটি অ্যাসারশন ব্যবহার করতে পারি:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ assert (tmp <= counter);
+ return (counter - tmp);
+ }
+}
+```
+
+### Echidna রান করা {#run-echidna-2}
+
+অ্যাসারশন ফেইলিওর টেস্টিং চালু করতে, একটি [Echidna কনফিগারেশন ফাইল](https://github.com/crytic/echidna/wiki/Config) `config.yaml` তৈরি করুন:
+
+```yaml
+checkAsserts: true
+```
+
+যখন আমরা Echidna-তে এই কন্ট্রাক্টটি রান করি, তখন আমরা প্রত্যাশিত ফলাফল পাই:
+
+```bash
+echidna-test assert.sol --config config.yaml
+Analyzing contract: assert.sol:Incrementor
+assertion in inc: failed!💥
+ Call sequence, shrinking (2596/5000):
+ inc(21711016731996786641919559689128982722488122124807605757398297001483711807488)
+ inc(7237005577332262213973186563042994240829374041602535252466099000494570602496)
+ inc(86844066927987146567678238756515930889952488499230423029593188005934847229952)
+
+Seed: 1806480648350826486
+```
+
+যেমনটি আপনি দেখতে পাচ্ছেন, Echidna `inc` ফাংশনে কিছু অ্যাসারশন ফেইলিওর রিপোর্ট করে। প্রতি ফাংশনে একাধিক অ্যাসারশন যোগ করা সম্ভব, তবে কোন অ্যাসারশনটি ব্যর্থ হয়েছে তা Echidna বলতে পারে না।
+
+### কখন এবং কীভাবে অ্যাসারশন ব্যবহার করবেন {#when-and-how-use-assertions}
+
+অ্যাসারশনগুলো এক্সপ্লিসিট প্রপার্টির বিকল্প হিসেবে ব্যবহার করা যেতে পারে, বিশেষ করে যদি চেক করার শর্তগুলো সরাসরি কোনো অপারেশন `f`-এর সঠিক ব্যবহারের সাথে সম্পর্কিত হয়। কিছু কোডের পরে অ্যাসারশন যোগ করলে তা নিশ্চিত করবে যে এটি এক্সিকিউট হওয়ার পরপরই চেক করা হবে:
+
+```solidity
+function f(..) public {
+ // কিছু জটিল কোড
+ ...
+ assert (condition);
+ ...
+}
+
+```
+
+বিপরীতভাবে, একটি এক্সপ্লিসিট echidna প্রপার্টি ব্যবহার করলে তা র্যান্ডমভাবে লেনদেন এক্সিকিউট করবে এবং এটি ঠিক কখন চেক করা হবে তা নিশ্চিত করার কোনো সহজ উপায় নেই। তবে এই ওয়ার্কঅ্যারাউন্ডটি করা এখনও সম্ভব:
+
+```solidity
+function echidna_assert_after_f() public returns (bool) {
+ f(..);
+ return(condition);
+}
+```
+
+যাইহোক, কিছু সমস্যা রয়েছে:
+
+- যদি `f`-কে `internal` বা `external` হিসেবে ডিক্লেয়ার করা হয় তবে এটি ব্যর্থ হয়।
+- `f` কল করার জন্য কোন আর্গুমেন্টগুলো ব্যবহার করা উচিত তা অস্পষ্ট।
+- যদি `f` রিভার্ট (revert) করে, তবে প্রপার্টিটি ব্যর্থ হবে।
+
+সাধারণভাবে, আমরা অ্যাসারশন কীভাবে ব্যবহার করতে হয় সে সম্পর্কে [জন রেগেহরের সুপারিশ](https://blog.regehr.org/archives/1091) অনুসরণ করার পরামর্শ দিই:
+
+- অ্যাসারশন চেকিংয়ের সময় কোনো সাইড ইফেক্ট জোর করে প্রয়োগ করবেন না। উদাহরণস্বরূপ: `assert(ChangeStateAndReturn() == 1)`
+- সুস্পষ্ট স্টেটমেন্ট অ্যাসার্ট করবেন না। উদাহরণস্বরূপ `assert(var >= 0)` যেখানে `var`-কে `uint` হিসেবে ডিক্লেয়ার করা হয়েছে।
+
+পরিশেষে, অনুগ্রহ করে `assert`-এর পরিবর্তে `require` **ব্যবহার করবেন না**, কারণ Echidna এটি শনাক্ত করতে পারবে না (তবে কন্ট্রাক্টটি যেভাবেই হোক রিভার্ট করবে)।
+
+### সারসংক্ষেপ: অ্যাসারশন চেকিং {#summary-assertion-checking}
+
+নিচে আমাদের উদাহরণে echidna রান করার সারসংক্ষেপ দেওয়া হলো:
+
+```solidity
+contract Incrementor {
+ uint private counter = 2**200;
+
+ function inc(uint val) public returns (uint){
+ uint tmp = counter;
+ counter += val;
+ assert (tmp <= counter);
+ return (counter - tmp);
+ }
+}
+```
+
+```bash
+echidna-test assert.sol --config config.yaml
+Analyzing contract: assert.sol:Incrementor
+assertion in inc: failed!💥
+ Call sequence, shrinking (2596/5000):
+ inc(21711016731996786641919559689128982722488122124807605757398297001483711807488)
+ inc(7237005577332262213973186563042994240829374041602535252466099000494570602496)
+ inc(86844066927987146567678238756515930889952488499230423029593188005934847229952)
+
+Seed: 1806480648350826486
+```
+
+Echidna দেখতে পেয়েছে যে `inc`-এর অ্যাসারশনটি ব্যর্থ হতে পারে যদি এই ফাংশনটি বড় আর্গুমেন্ট দিয়ে একাধিকবার কল করা হয়।
+
+## একটি Echidna কর্পাস (corpus) সংগ্রহ এবং পরিবর্তন করা {#collecting-and-modifying-an-echidna-corpus}
+
+আমরা দেখব কীভাবে Echidna দিয়ে লেনদেনের একটি কর্পাস সংগ্রহ এবং ব্যবহার করতে হয়। লক্ষ্য হলো নিচের স্মার্ট কন্ট্রাক্টটি [`magic.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol):
+
+```solidity
+contract C {
+ bool value_found = false;
+ function magic(uint magic_1, uint magic_2, uint magic_3, uint magic_4) public {
+ require(magic_1 == 42);
+ require(magic_2 == 129);
+ require(magic_3 == magic_4+333);
+ value_found = true;
+ return;
+ }
+
+ function echidna_magic_values() public returns (bool) {
+ return !value_found;
+ }
+
+}
+```
+
+এই ছোট উদাহরণটি Echidna-কে একটি স্টেট ভেরিয়েবল পরিবর্তন করার জন্য নির্দিষ্ট মান খুঁজে বের করতে বাধ্য করে। এটি একটি ফাজারের জন্য কঠিন
+(এর জন্য [Manticore](https://github.com/trailofbits/manticore)-এর মতো একটি সিম্বলিক এক্সিকিউশন টুল ব্যবহার করার পরামর্শ দেওয়া হয়)।
+এটি যাচাই করার জন্য আমরা Echidna রান করতে পারি:
+
+```bash
+echidna-test magic.sol
+...
+
+echidna_magic_values: passed! 🎉
+
+Seed: 2221503356319272685
+```
+
+যাইহোক, এই ফাজিং ক্যাম্পেইন রান করার সময় আমরা এখনও কর্পাস সংগ্রহ করতে Echidna ব্যবহার করতে পারি।
+
+### একটি কর্পাস সংগ্রহ করা {#collecting-a-corpus}
+
+কর্পাস সংগ্রহ চালু করতে, একটি কর্পাস ডিরেক্টরি তৈরি করুন:
+
+```bash
+mkdir corpus-magic
+```
+
+এবং একটি [Echidna কনফিগারেশন ফাইল](https://github.com/crytic/echidna/wiki/Config) `config.yaml`:
+
+```yaml
+coverage: true
+corpusDir: "corpus-magic"
+```
+
+এখন আমরা আমাদের টুলটি রান করতে পারি এবং সংগৃহীত কর্পাস চেক করতে পারি:
+
+```bash
+echidna-test magic.sol --config config.yaml
+```
+
+Echidna এখনও সঠিক ম্যাজিক মানগুলো খুঁজে পাচ্ছে না, তবে আমরা এর সংগৃহীত কর্পাসটি দেখতে পারি।
+উদাহরণস্বরূপ, এই ফাইলগুলোর মধ্যে একটি ছিল:
+
+```json
+[
+ {
+ "_gas'": "0xffffffff",
+ "_delay": ["0x13647", "0xccf6"],
+ "_src": "00a329c0648769a73afac7f9381e08fb43dbea70",
+ "_dst": "00a329c0648769a73afac7f9381e08fb43dbea72",
+ "_value": "0x0",
+ "_call": {
+ "tag": "SolCall",
+ "contents": [
+ "magic",
+ [
+ {
+ "contents": [
+ 256,
+ "93723985220345906694500679277863898678726808528711107336895287282192244575836"
+ ],
+ "tag": "AbiUInt"
+ },
+ {
+ "contents": [256, "334"],
+ "tag": "AbiUInt"
+ },
+ {
+ "contents": [
+ 256,
+ "68093943901352437066264791224433559271778087297543421781073458233697135179558"
+ ],
+ "tag": "AbiUInt"
+ },
+ {
+ "tag": "AbiUInt",
+ "contents": [256, "332"]
+ }
+ ]
+ ]
+ },
+ "_gasprice'": "0xa904461f1"
+ }
+]
+```
+
+স্পষ্টতই, এই ইনপুটটি আমাদের প্রপার্টিতে ফেইলিওর ট্রিগার করবে না। যাইহোক, পরবর্তী ধাপে, আমরা দেখব কীভাবে এর জন্য এটিকে পরিবর্তন করতে হয়।
+
+### একটি কর্পাস সীডিং (seeding) করা {#seeding-a-corpus}
+
+`magic` ফাংশনটি নিয়ে কাজ করার জন্য Echidna-র কিছু সাহায্য প্রয়োজন। আমরা এর জন্য উপযুক্ত
+প্যারামিটার ব্যবহার করতে ইনপুটটি কপি এবং পরিবর্তন করতে যাচ্ছি:
+
+```bash
+cp corpus/2712688662897926208.txt corpus/new.txt
+```
+
+আমরা `magic(42,129,333,0)` কল করার জন্য `new.txt` পরিবর্তন করব। এখন, আমরা Echidna পুনরায় রান করতে পারি:
+
+```bash
+echidna-test magic.sol --config config.yaml
+...
+echidna_magic_values: failed!💥
+ Call sequence:
+ magic(42,129,333,0)
+
+
+Unique instructions: 142
+Unique codehashes: 1
+Seed: -7293830866560616537
+
+```
+
+এবার, এটি দেখতে পেয়েছে যে প্রপার্টিটি সাথে সাথেই লঙ্ঘিত হয়েছে।
+
+## উচ্চ গ্যাস (gas) খরচ সহ লেনদেন খুঁজে বের করা {#finding-transactions-with-high-gas-consumption}
+
+আমরা দেখব কীভাবে Echidna দিয়ে উচ্চ গ্যাস খরচ সহ লেনদেন খুঁজে বের করতে হয়। লক্ষ্য হলো নিচের স্মার্ট কন্ট্রাক্টটি:
+
+```solidity
+contract C {
+ uint state;
+
+ function expensive(uint8 times) internal {
+ for(uint8 i=0; i < times; i++)
+ state = state + i;
+ }
+
+ function f(uint x, uint y, uint8 times) public {
+ if (x == 42 && y == 123)
+ expensive(times);
+ else
+ state = 0;
+ }
+
+ function echidna_test() public returns (bool) {
+ return true;
+ }
+
+}
+```
+
+এখানে `expensive`-এর একটি বড় গ্যাস খরচ থাকতে পারে।
+
+বর্তমানে, Echidna-র টেস্ট করার জন্য সবসময় একটি প্রপার্টি প্রয়োজন হয়: এখানে `echidna_test` সবসময় `true` রিটার্ন করে।
+এটি যাচাই করার জন্য আমরা Echidna রান করতে পারি:
+
+```
+echidna-test gas.sol
+...
+echidna_test: passed! 🎉
+
+Seed: 2320549945714142710
+```
+
+### গ্যাস খরচ পরিমাপ করা {#measuring-gas-consumption}
+
+Echidna দিয়ে গ্যাস খরচ পরিমাপ চালু করতে, একটি কনফিগারেশন ফাইল `config.yaml` তৈরি করুন:
+
+```yaml
+estimateGas: true
+```
+
+এই উদাহরণে, ফলাফলগুলো সহজে বোঝার জন্য আমরা লেনদেনের সিকোয়েন্সের আকারও কমিয়ে দেব:
+
+```yaml
+seqLen: 2
+estimateGas: true
+```
+
+### Echidna রান করা {#run-echidna-3}
+
+একবার কনফিগারেশন ফাইল তৈরি হয়ে গেলে, আমরা এভাবে Echidna রান করতে পারি:
+
+```bash
+echidna-test gas.sol --config config.yaml
+...
+echidna_test: passed! 🎉
+
+f used a maximum of 1333608 gas
+ Call sequence:
+ f(42,123,249) Gas price: 0x10d5733f0a Time delay: 0x495e5 Block delay: 0x88b2
+
+Unique instructions: 157
+Unique codehashes: 1
+Seed: -325611019680165325
+
+```
+
+- দেখানো গ্যাস হলো [HEVM](https://github.com/dapphub/dapptools/tree/master/src/hevm#hevm-) দ্বারা প্রদত্ত একটি অনুমান।
+
+### গ্যাস-হ্রাসকারী কলগুলো ফিল্টার করা {#filtering-out-gas-reducing-calls}
+
+ওপরের **ফাজিং ক্যাম্পেইনের সময় কল করার জন্য ফাংশন ফিল্টার করা** টিউটোরিয়ালটি দেখায় কীভাবে
+আপনার টেস্টিং থেকে কিছু ফাংশন সরিয়ে ফেলতে হয়।
+একটি সঠিক গ্যাস অনুমান পাওয়ার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ হতে পারে।
+নিচের উদাহরণটি বিবেচনা করুন:
+
+```solidity
+contract C {
+ address [] addrs;
+ function push(address a) public {
+ addrs.push(a);
+ }
+ function pop() public {
+ addrs.pop();
+ }
+ function clear() public{
+ addrs.length = 0;
+ }
+ function check() public{
+ for(uint256 i = 0; i < addrs.length; i++)
+ for(uint256 j = i+1; j < addrs.length; j++)
+ if (addrs[i] == addrs[j])
+ addrs[j] = address(0x0);
+ }
+ function echidna_test() public returns (bool) {
+ return true;
+ }
+}
+```
+
+যদি Echidna সমস্ত ফাংশন কল করতে পারে, তবে এটি সহজে উচ্চ গ্যাস খরচ সহ লেনদেন খুঁজে পাবে না:
+
+```
+echidna-test pushpop.sol --config config.yaml
+...
+pop used a maximum of 10746 gas
+...
+check used a maximum of 23730 gas
+...
+clear used a maximum of 35916 gas
+...
+push used a maximum of 40839 gas
+```
+
+এর কারণ হলো খরচটি `addrs`-এর আকারের ওপর নির্ভর করে এবং র্যান্ডম কলগুলো অ্যারেকে (array) প্রায় ফাঁকা রাখার প্রবণতা দেখায়।
+যাইহোক, `pop` এবং `clear` ব্ল্যাকলিস্ট করা আমাদের অনেক ভালো ফলাফল দেয়:
+
+```yaml
+filterBlacklist: true
+filterFunctions: ["pop", "clear"]
+```
+
+```
+echidna-test pushpop.sol --config config.yaml
+...
+push used a maximum of 40839 gas
+...
+check used a maximum of 1484472 gas
+```
+
+### সারসংক্ষেপ: উচ্চ গ্যাস খরচ সহ লেনদেন খুঁজে বের করা {#summary-finding-transactions-with-high-gas-consumption}
+
+Echidna `estimateGas` কনফিগারেশন অপশন ব্যবহার করে উচ্চ গ্যাস খরচ সহ লেনদেন খুঁজে পেতে পারে:
+
+```yaml
+estimateGas: true
+```
+
+```bash
+echidna-test contract.sol --config config.yaml
+...
+```
+
+ফাজিং ক্যাম্পেইন শেষ হওয়ার পরে, Echidna প্রতিটি ফাংশনের জন্য সর্বোচ্চ গ্যাস খরচ সহ একটি সিকোয়েন্স রিপোর্ট করবে।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/bn/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
new file mode 100644
index 00000000000..761b27a2b2c
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -0,0 +1,517 @@
+---
+title: স্মার্ট কন্ট্রাক্টে বাগ খুঁজতে কীভাবে ম্যান্টিকোর (Manticore) ব্যবহার করবেন
+description: স্মার্ট কন্ট্রাক্টে স্বয়ংক্রিয়ভাবে বাগ খুঁজতে কীভাবে ম্যান্টিকোর (Manticore) ব্যবহার করবেন
+author: ট্রেইলঅফবিটস
+lang: bn
+tags:
+ ["Solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "টেস্টিং", "ফরমাল ভেরিফিকেশন"]
+skill: advanced
+breadcrumb: ম্যান্টিকোর
+published: 2020-01-13
+source: Building secure contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore
+---
+
+এই টিউটোরিয়ালের উদ্দেশ্য হলো স্মার্ট কন্ট্রাক্টে স্বয়ংক্রিয়ভাবে বাগ খুঁজতে কীভাবে ম্যান্টিকোর (Manticore) ব্যবহার করতে হয় তা দেখানো।
+
+## ইনস্টলেশন {#installation}
+
+ম্যান্টিকোরের জন্য >= python 3.6 প্রয়োজন। এটি pip বা docker ব্যবহার করে ইনস্টল করা যেতে পারে।
+
+### ডকারের মাধ্যমে ম্যান্টিকোর {#manticore-through-docker}
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox
+```
+
+_শেষ কমান্ডটি একটি ডকারে eth-security-toolbox চালায় যার আপনার বর্তমান ডিরেক্টরিতে অ্যাক্সেস রয়েছে। আপনি আপনার হোস্ট থেকে ফাইলগুলো পরিবর্তন করতে পারেন এবং ডকার থেকে ফাইলগুলোতে টুলগুলো চালাতে পারেন_
+
+ডকারের ভিতরে, রান করুন:
+
+```bash
+solc-select 0.5.11
+cd /home/trufflecon/
+```
+
+### পিপের মাধ্যমে ম্যান্টিকোর {#manticore-through-pip}
+
+```bash
+pip3 install --user manticore
+```
+
+solc 0.5.11 সুপারিশ করা হয়।
+
+### স্ক্রিপ্ট রান করা {#running-a-script}
+
+python 3 দিয়ে একটি পাইথন স্ক্রিপ্ট রান করতে:
+
+```bash
+python3 script.py
+```
+
+## ডাইনামিক সিম্বলিক এক্সিকিউশনের পরিচিতি {#introduction-to-dynamic-symbolic-execution}
+
+### সংক্ষেপে ডাইনামিক সিম্বলিক এক্সিকিউশন {#dynamic-symbolic-execution-in-a-nutshell}
+
+ডাইনামিক সিম্বলিক এক্সিকিউশন (DSE) হলো একটি প্রোগ্রাম অ্যানালাইসিস কৌশল যা উচ্চ মাত্রার শব্দার্থিক সচেতনতার (semantic awareness) সাথে একটি স্টেট স্পেস অন্বেষণ করে। এই কৌশলটি "প্রোগ্রাম পাথ" আবিষ্কারের উপর ভিত্তি করে তৈরি, যা গাণিতিক সূত্র হিসেবে উপস্থাপিত হয় এবং এদের `path predicates` বলা হয়। ধারণাগতভাবে, এই কৌশলটি দুটি ধাপে পাথ প্রেডিকেটে কাজ করে:
+
+1. এগুলো প্রোগ্রামের ইনপুটের উপর কনস্ট্রেইন্ট ব্যবহার করে তৈরি করা হয়।
+2. এগুলো প্রোগ্রামের ইনপুট তৈরি করতে ব্যবহৃত হয় যা সংশ্লিষ্ট পাথগুলোকে এক্সিকিউট করবে।
+
+এই পদ্ধতিটি কোনো ফলস পজিটিভ তৈরি করে না, কারণ চিহ্নিত সমস্ত প্রোগ্রাম স্টেট কংক্রিট এক্সিকিউশনের সময় ট্রিগার করা যেতে পারে। উদাহরণস্বরূপ, যদি অ্যানালাইসিসে কোনো ইন্টিজার ওভারফ্লো পাওয়া যায়, তবে এটি পুনরুৎপাদনযোগ্য (reproducible) হওয়ার নিশ্চয়তা থাকে।
+
+### পাথ প্রেডিকেটের উদাহরণ {#path-predicate-example}
+
+DSE কীভাবে কাজ করে তার একটি ধারণা পেতে, নিচের উদাহরণটি বিবেচনা করুন:
+
+```solidity
+function f(uint a){
+
+ if (a == 65) {
+ // একটি বাগ রয়েছে
+ }
+
+}
+```
+
+যেহেতু `f()`-এ দুটি পাথ রয়েছে, একটি DSE দুটি ভিন্ন পাথ প্রেডিকেট তৈরি করবে:
+
+- পাথ 1: `a == 65`
+- পাথ 2: `Not (a == 65)`
+
+প্রতিটি পাথ প্রেডিকেট হলো একটি গাণিতিক সূত্র যা একটি তথাকথিত [SMT solver](https://wikipedia.org/wiki/Satisfiability_modulo_theories)-কে দেওয়া যেতে পারে, যা সমীকরণটি সমাধান করার চেষ্টা করবে। `Path 1`-এর জন্য, সলভার বলবে যে পাথটি `a = 65` দিয়ে অন্বেষণ করা যেতে পারে। `Path 2`-এর জন্য, সলভার `a`-কে 65 ছাড়া অন্য যেকোনো মান দিতে পারে, উদাহরণস্বরূপ `a = 0`।
+
+### প্রপার্টি যাচাই করা {#verifying-properties}
+
+ম্যান্টিকোর প্রতিটি পাথের সমস্ত এক্সিকিউশনের উপর সম্পূর্ণ নিয়ন্ত্রণ প্রদান করে। ফলস্বরূপ, এটি আপনাকে প্রায় যেকোনো কিছুতে ইচ্ছামতো কনস্ট্রেইন্ট যোগ করার অনুমতি দেয়। এই নিয়ন্ত্রণ কন্ট্রাক্টে প্রপার্টি তৈরির সুযোগ দেয়।
+
+নিচের উদাহরণটি বিবেচনা করুন:
+
+```solidity
+function unsafe_add(uint a, uint b) returns(uint c){
+ c = a + b; // কোনো ওভারফ্লো সুরক্ষা নেই
+ return c;
+}
+```
+
+এখানে ফাংশনটিতে অন্বেষণ করার জন্য কেবল একটি পাথ রয়েছে:
+
+- পাথ 1: `c = a + b`
+
+ম্যান্টিকোর ব্যবহার করে, আপনি ওভারফ্লো পরীক্ষা করতে পারেন এবং পাথ প্রেডিকেটে কনস্ট্রেইন্ট যোগ করতে পারেন:
+
+- `c = a + b AND (c < a OR c < b)`
+
+যদি `a` এবং `b`-এর এমন কোনো মান খুঁজে পাওয়া সম্ভব হয় যার জন্য উপরের পাথ প্রেডিকেটটি কার্যকর, তার মানে হলো আপনি একটি ওভারফ্লো খুঁজে পেয়েছেন। উদাহরণস্বরূপ সলভার `a = 10 , b = MAXUINT256` ইনপুট তৈরি করতে পারে।
+
+যদি আপনি একটি সংশোধিত সংস্করণ বিবেচনা করেন:
+
+```solidity
+function safe_add(uint a, uint b) returns(uint c){
+ c = a + b;
+ require(c>=a);
+ require(c>=b);
+ return c;
+}
+```
+
+ওভারফ্লো চেক সহ সংশ্লিষ্ট সূত্রটি হবে:
+
+- `c = a + b AND (c >= a) AND (c=>b) AND (c < a OR c < b)`
+
+এই সূত্রটি সমাধান করা যাবে না; অন্য কথায় এটি একটি **প্রমাণ** যে `safe_add`-এ, `c` সর্বদা বৃদ্ধি পাবে।
+
+DSE তাই একটি শক্তিশালী টুল, যা আপনার কোডে ইচ্ছামতো কনস্ট্রেইন্ট যাচাই করতে পারে।
+
+## ম্যান্টিকোরের অধীনে রান করা {#running-under-manticore}
+
+আমরা দেখব কীভাবে ম্যান্টিকোর এপিআই (API) দিয়ে একটি স্মার্ট কন্ট্রাক্ট অন্বেষণ করতে হয়। লক্ষ্য হলো নিচের স্মার্ট কন্ট্রাক্টটি [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### একটি স্ট্যান্ডঅ্যালোন এক্সপ্লোরেশন রান করা {#run-a-standalone-exploration}
+
+আপনি নিচের কমান্ডের মাধ্যমে সরাসরি স্মার্ট কন্ট্রাক্টে ম্যান্টিকোর রান করতে পারেন (`project` একটি সলিডিটি ফাইল বা একটি প্রজেক্ট ডিরেক্টরি হতে পারে):
+
+```bash
+$ manticore project
+```
+
+আপনি এর মতো টেস্টকেসগুলোর আউটপুট পাবেন (ক্রম পরিবর্তন হতে পারে):
+
+```
+...
+... m.c.manticore:INFO: Generated testcase No. 0 - STOP
+... m.c.manticore:INFO: Generated testcase No. 1 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 2 - RETURN
+... m.c.manticore:INFO: Generated testcase No. 3 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 4 - STOP
+... m.c.manticore:INFO: Generated testcase No. 5 - REVERT
+... m.c.manticore:INFO: Generated testcase No. 6 - REVERT
+... m.c.manticore:INFO: Results in /home/ethsec/workshops/Automated Smart Contracts Audit - TruffleCon 2018/manticore/examples/mcore_t6vi6ij3
+...
+```
+
+অতিরিক্ত তথ্য ছাড়া, ম্যান্টিকোর নতুন সিম্বলিক লেনদেন দিয়ে কন্ট্রাক্টটি অন্বেষণ করবে যতক্ষণ না এটি কন্ট্রাক্টে নতুন পাথ অন্বেষণ করা বন্ধ করে। ম্যান্টিকোর একটি ব্যর্থ লেনদেনের পরে (যেমন: রিভার্টের পরে) নতুন লেনদেন চালায় না।
+
+ম্যান্টিকোর একটি `mcore_*` ডিরেক্টরিতে তথ্য আউটপুট করবে। অন্যান্য জিনিসের মধ্যে, আপনি এই ডিরেক্টরিতে পাবেন:
+
+- `global.summary`: কভারেজ এবং কম্পাইলার সতর্কতা
+- `test_XXXXX.summary`: কভারেজ, শেষ নির্দেশিকা, প্রতিটি টেস্ট কেসের জন্য একাউন্ট ব্যালেন্স
+- `test_XXXXX.tx`: প্রতিটি টেস্ট কেসের জন্য লেনদেনের বিস্তারিত তালিকা
+
+এখানে ম্যান্টিকোর 7টি টেস্ট কেস খুঁজে পেয়েছে, যা নিচেরগুলোর সাথে মিলে যায় (ফাইলের নামের ক্রম পরিবর্তন হতে পারে):
+
+| | লেনদেন 0 | লেনদেন 1 | লেনদেন 2 | ফলাফল |
+| :------------------: | :---------------: | :---------------: | ----------------- | :----: |
+| **test_00000000.tx** | কন্ট্রাক্ট তৈরি | f(!=65) | f(!=65) | STOP |
+| **test_00000001.tx** | কন্ট্রাক্ট তৈরি | ফলব্যাক ফাংশন | | REVERT |
+| **test_00000002.tx** | কন্ট্রাক্ট তৈরি | | | RETURN |
+| **test_00000003.tx** | কন্ট্রাক্ট তৈরি | f(65) | | REVERT |
+| **test_00000004.tx** | কন্ট্রাক্ট তৈরি | f(!=65) | | STOP |
+| **test_00000005.tx** | কন্ট্রাক্ট তৈরি | f(!=65) | f(65) | REVERT |
+| **test_00000006.tx** | কন্ট্রাক্ট তৈরি | f(!=65) | ফলব্যাক ফাংশন | REVERT |
+
+_অন্বেষণ সারাংশ f(!=65) নির্দেশ করে যে f-কে 65 ছাড়া অন্য যেকোনো মান দিয়ে কল করা হয়েছে।_
+
+যেমনটি আপনি লক্ষ্য করতে পারেন, ম্যান্টিকোর প্রতিটি সফল বা রিভার্ট হওয়া লেনদেনের জন্য একটি অনন্য টেস্ট কেস তৈরি করে।
+
+আপনি যদি দ্রুত কোড অন্বেষণ চান তবে `--quick-mode` ফ্ল্যাগ ব্যবহার করুন (এটি বাগ ডিটেক্টর, গ্যাস গণনা ইত্যাদি নিষ্ক্রিয় করে)
+
+### এপিআই-এর মাধ্যমে একটি স্মার্ট কন্ট্রাক্ট ম্যানিপুলেট করা {#manipulate-a-smart-contract-through-the-api}
+
+এই বিভাগে ম্যান্টিকোর পাইথন এপিআই-এর মাধ্যমে কীভাবে একটি স্মার্ট কন্ট্রাক্ট ম্যানিপুলেট করতে হয় তার বিস্তারিত বর্ণনা করা হয়েছে। আপনি পাইথন এক্সটেনশন `*.py` দিয়ে নতুন ফাইল তৈরি করতে পারেন এবং এই ফাইলে এপিআই কমান্ডগুলো (যার মূল বিষয়গুলো নিচে বর্ণনা করা হবে) যোগ করে প্রয়োজনীয় কোড লিখতে পারেন এবং তারপর `$ python3 *.py` কমান্ড দিয়ে এটি রান করতে পারেন। এছাড়াও আপনি নিচের কমান্ডগুলো সরাসরি পাইথন কনসোলে এক্সিকিউট করতে পারেন, কনসোল রান করতে `$ python3` কমান্ড ব্যবহার করুন।
+
+### একাউন্ট তৈরি করা {#creating-accounts}
+
+আপনার প্রথম যে কাজটি করা উচিত তা হলো নিচের কমান্ডগুলো দিয়ে একটি নতুন ব্লকচেইন শুরু করা:
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+```
+
+একটি নন-কন্ট্রাক্ট একাউন্ট [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account)-এর মাধ্যমে তৈরি করা হয়:
+
+```python
+user_account = m.create_account(balance=1000)
+```
+
+একটি সলিডিটি কন্ট্রাক্ট [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract)-এর মাধ্যমে ডিপ্লয় করা যেতে পারে:
+
+```solidity
+source_code = '''
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+'''
+# Initiate the contract
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+```
+
+#### সারাংশ {#summary}
+
+- আপনি [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) এবং [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract)-এর মাধ্যমে ব্যবহারকারী এবং কন্ট্রাক্ট একাউন্ট তৈরি করতে পারেন।
+
+### লেনদেন এক্সিকিউট করা {#executing-transactions}
+
+ম্যান্টিকোর দুই ধরনের লেনদেন সমর্থন করে:
+
+- র (Raw) লেনদেন: সমস্ত ফাংশন অন্বেষণ করা হয়
+- নেমড (Named) লেনদেন: শুধুমাত্র একটি ফাংশন অন্বেষণ করা হয়
+
+#### র (Raw) লেনদেন {#raw-transaction}
+
+একটি র লেনদেন [m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction)-এর মাধ্যমে এক্সিকিউট করা হয়:
+
+```python
+m.transaction(caller=user_account,
+ address=contract_account,
+ data=data,
+ value=value)
+```
+
+কলার, এডড্রেস, ডাটা বা লেনদেনের মান কংক্রিট বা সিম্বলিক হতে পারে:
+
+- [m.make_symbolic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value) একটি সিম্বলিক মান তৈরি করে।
+- [m.make_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) একটি সিম্বলিক বাইট অ্যারে তৈরি করে।
+
+উদাহরণস্বরূপ:
+
+```python
+symbolic_value = m.make_symbolic_value()
+symbolic_data = m.make_symbolic_buffer(320)
+m.transaction(caller=user_account,
+ address=contract_address,
+ data=symbolic_data,
+ value=symbolic_value)
+```
+
+যদি ডাটা সিম্বলিক হয়, ম্যান্টিকোর লেনদেন এক্সিকিউশনের সময় কন্ট্রাক্টের সমস্ত ফাংশন অন্বেষণ করবে। ফাংশন নির্বাচন কীভাবে কাজ করে তা বোঝার জন্য [Hands on the Ethernaut CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/) আর্টিকেলে ফলব্যাক ফাংশনের ব্যাখ্যা দেখা সহায়ক হবে।
+
+#### নেমড (Named) লেনদেন {#named-transaction}
+
+ফাংশনগুলো তাদের নামের মাধ্যমে এক্সিকিউট করা যেতে পারে।
+user_account থেকে একটি সিম্বলিক মান এবং 0 ইথার দিয়ে `f(uint var)` এক্সিকিউট করতে, ব্যবহার করুন:
+
+```python
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var, caller=user_account, value=0)
+```
+
+যদি লেনদেনের `value` নির্দিষ্ট করা না থাকে, তবে এটি ডিফল্টভাবে 0 হয়।
+
+#### সারাংশ {#summary-1}
+
+- একটি লেনদেনের আর্গুমেন্ট কংক্রিট বা সিম্বলিক হতে পারে
+- একটি র লেনদেন সমস্ত ফাংশন অন্বেষণ করবে
+- ফাংশন তাদের নাম দিয়ে কল করা যেতে পারে
+
+### ওয়ার্কস্পেস {#workspace}
+
+`m.workspace` হলো সেই ডিরেক্টরি যা তৈরি করা সমস্ত ফাইলের আউটপুট ডিরেক্টরি হিসেবে ব্যবহৃত হয়:
+
+```python
+print("Results are in {}".format(m.workspace))
+```
+
+### অন্বেষণ শেষ করা {#terminate-the-exploration}
+
+অন্বেষণ থামাতে [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize) ব্যবহার করুন। এই মেথডটি কল করার পরে আর কোনো লেনদেন পাঠানো উচিত নয় এবং ম্যান্টিকোর অন্বেষণ করা প্রতিটি পাথের জন্য টেস্ট কেস তৈরি করে।
+
+### সারাংশ: ম্যান্টিকোরের অধীনে রান করা {#summary-running-under-manticore}
+
+আগের সমস্ত ধাপ একসাথে করলে, আমরা পাই:
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+
+with open('example.sol') as f:
+ source_code = f.read()
+
+user_account = m.create_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var)
+
+print("Results are in {}".format(m.workspace))
+m.finalize() # অনুসন্ধান থামান
+```
+
+উপরের সমস্ত কোড আপনি [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)-এ খুঁজে পেতে পারেন
+
+## থ্রোয়িং পাথগুলো পাওয়া {#getting-throwing-paths}
+
+আমরা এখন `f()`-এ এক্সেপশন তৈরি করা পাথগুলোর জন্য নির্দিষ্ট ইনপুট তৈরি করব। লক্ষ্য এখনও নিচের স্মার্ট কন্ট্রাক্টটি [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### স্টেট তথ্য ব্যবহার করা {#using-state-information}
+
+এক্সিকিউট হওয়া প্রতিটি পাথের নিজস্ব ব্লকচেইন স্টেট থাকে। একটি স্টেট হয় প্রস্তুত (ready) থাকে অথবা এটি বাতিল (killed) হয়, যার মানে এটি একটি THROW বা REVERT নির্দেশিকায় পৌঁছায়:
+
+- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing): প্রস্তুত থাকা স্টেটগুলোর তালিকা (এগুলো কোনো REVERT/INVALID এক্সিকিউট করেনি)
+- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): বাতিল হওয়া স্টেটগুলোর তালিকা
+- [m.all_states](https://manticore.readthedocs.io/en/latest/states.html#accessings): সমস্ত স্টেট
+
+```python
+for state in m.all_states:
+ # স্টেট নিয়ে কিছু করুন
+```
+
+আপনি স্টেট তথ্য অ্যাক্সেস করতে পারেন। উদাহরণস্বরূপ:
+
+- `state.platform.get_balance(account.address)`: একাউন্টের ব্যালেন্স
+- `state.platform.transactions`: লেনদেনের তালিকা
+- `state.platform.transactions[-1].return_data`: শেষ লেনদেনের মাধ্যমে রিটার্ন করা ডাটা
+
+শেষ লেনদেনের মাধ্যমে রিটার্ন করা ডাটা হলো একটি অ্যারে, যা ABI.deserialize দিয়ে একটি মানে রূপান্তর করা যেতে পারে, উদাহরণস্বরূপ:
+
+```python
+data = state.platform.transactions[0].return_data
+data = ABI.deserialize("uint", data)
+```
+
+### কীভাবে টেস্টকেস তৈরি করবেন {#how-to-generate-testcase}
+
+টেস্টকেস তৈরি করতে [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) ব্যবহার করুন:
+
+```python
+m.generate_testcase(state, 'BugFound')
+```
+
+### সারাংশ {#summary-2}
+
+- আপনি m.all_states দিয়ে স্টেটের উপর ইটারেট করতে পারেন
+- `state.platform.get_balance(account.address)` একাউন্টের ব্যালেন্স রিটার্ন করে
+- `state.platform.transactions` লেনদেনের তালিকা রিটার্ন করে
+- `transaction.return_data` হলো রিটার্ন করা ডাটা
+- `m.generate_testcase(state, name)` স্টেটের জন্য ইনপুট তৈরি করে
+
+### সারাংশ: থ্রোয়িং পাথ পাওয়া {#summary-getting-throwing-path}
+
+```python
+from manticore.ethereum import ManticoreEVM
+
+m = ManticoreEVM()
+
+with open('example.sol') as f:
+ source_code = f.read()
+
+user_account = m.create_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var)
+
+# # চেক করুন একটি এক্সিকিউশন REVERT বা INVALID দিয়ে শেষ হয় কিনা
+for state in m.terminated_states:
+ last_tx = state.platform.transactions[-1]
+ if last_tx.result in ['REVERT', 'INVALID']:
+ print('Throw found {}'.format(m.workspace))
+ m.generate_testcase(state, 'ThrowFound')
+```
+
+উপরের সমস্ত কোড আপনি [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)-এ খুঁজে পেতে পারেন
+
+_দ্রষ্টব্য: আমরা আরও সহজ একটি স্ক্রিপ্ট তৈরি করতে পারতাম, কারণ terminated_state দ্বারা রিটার্ন করা সমস্ত স্টেটের ফলাফলে REVERT বা INVALID থাকে: এই উদাহরণটি শুধুমাত্র এপিআই কীভাবে ম্যানিপুলেট করতে হয় তা দেখানোর জন্য ছিল।_
+
+## কনস্ট্রেইন্ট যোগ করা {#adding-constraints}
+
+আমরা দেখব কীভাবে অন্বেষণকে সীমাবদ্ধ (constrain) করতে হয়। আমরা ধরে নেব যে `f()`-এর ডকুমেন্টেশনে বলা হয়েছে যে ফাংশনটি কখনোই `a == 65` দিয়ে কল করা হয় না, তাই `a == 65` সহ কোনো বাগ আসল বাগ নয়। লক্ষ্য এখনও নিচের স্মার্ট কন্ট্রাক্টটি [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol):
+
+```solidity
+pragma solidity >=0.4.24 <0.6.0;
+contract Simple {
+ function f(uint a) payable public{
+ if (a == 65) {
+ revert();
+ }
+ }
+}
+```
+
+### অপারেটর {#operators}
+
+[Operators](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py) মডিউলটি কনস্ট্রেইন্ট ম্যানিপুলেট করা সহজ করে, অন্যান্য জিনিসের মধ্যে এটি প্রদান করে:
+
+- Operators.AND,
+- Operators.OR,
+- Operators.UGT (আনসাইনড গ্রেটার দ্যান),
+- Operators.UGE (আনসাইনড গ্রেটার দ্যান অর ইকুয়াল টু),
+- Operators.ULT (আনসাইনড লোয়ার দ্যান),
+- Operators.ULE (আনসাইনড লোয়ার দ্যান অর ইকুয়াল টু)।
+
+মডিউলটি ইমপোর্ট করতে নিচেরটি ব্যবহার করুন:
+
+```python
+from manticore.core.smtlib import Operators
+```
+
+`Operators.CONCAT` একটি অ্যারেকে একটি মানের সাথে যুক্ত (concatenate) করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি লেনদেনের return_data-কে অন্য একটি মানের বিপরীতে চেক করার জন্য একটি মানে পরিবর্তন করতে হবে:
+
+```python
+last_return = Operators.CONCAT(256, *last_return)
+```
+
+### কনস্ট্রেইন্ট {#state-constraint}
+
+আপনি বিশ্বব্যাপী (globally) বা একটি নির্দিষ্ট স্টেটের জন্য কনস্ট্রেইন্ট ব্যবহার করতে পারেন।
+
+#### গ্লোবাল কনস্ট্রেইন্ট {#state-constraint}
+
+একটি গ্লোবাল কনস্ট্রেইন্ট যোগ করতে `m.constrain(constraint)` ব্যবহার করুন।
+উদাহরণস্বরূপ, আপনি একটি সিম্বলিক এডড্রেস থেকে একটি কন্ট্রাক্ট কল করতে পারেন এবং এই এডড্রেসটিকে নির্দিষ্ট মান হতে সীমাবদ্ধ করতে পারেন:
+
+```python
+symbolic_address = m.make_symbolic_value()
+m.constraint(Operators.OR(symbolic == 0x41, symbolic_address == 0x42))
+m.transaction(caller=user_account,
+ address=contract_account,
+ data=m.make_symbolic_buffer(320),
+ value=0)
+```
+
+#### স্টেট কনস্ট্রেইন্ট {#state-constraint}
+
+একটি নির্দিষ্ট স্টেটে কনস্ট্রেইন্ট যোগ করতে [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) ব্যবহার করুন।
+এটি অন্বেষণের পরে স্টেটের উপর কোনো প্রপার্টি চেক করার জন্য স্টেটকে সীমাবদ্ধ করতে ব্যবহৃত হতে পারে।
+
+### কনস্ট্রেইন্ট চেক করা {#checking-constraint}
+
+একটি কনস্ট্রেইন্ট এখনও কার্যকর কিনা তা জানতে `solver.check(state.constraints)` ব্যবহার করুন।
+উদাহরণস্বরূপ, নিচেরটি symbolic_value-কে 65 থেকে ভিন্ন হতে সীমাবদ্ধ করবে এবং স্টেটটি এখনও কার্যকর কিনা তা চেক করবে:
+
+```python
+state.constrain(symbolic_var != 65)
+if solver.check(state.constraints):
+ # স্টেটটি সম্ভব
+```
+
+### সারাংশ: কনস্ট্রেইন্ট যোগ করা {#summary-adding-constraints}
+
+আগের কোডে কনস্ট্রেইন্ট যোগ করলে, আমরা পাই:
+
+```python
+from manticore.ethereum import ManticoreEVM
+from manticore.core.smtlib.solver import Z3Solver
+
+solver = Z3Solver.instance()
+
+m = ManticoreEVM()
+
+with open("example.sol") as f:
+ source_code = f.read()
+
+user_account = m.create_account(balance=1000)
+contract_account = m.solidity_create_contract(source_code, owner=user_account)
+
+symbolic_var = m.make_symbolic_value()
+contract_account.f(symbolic_var)
+
+no_bug_found = True
+
+# # চেক করুন একটি এক্সিকিউশন REVERT বা INVALID দিয়ে শেষ হয় কিনা
+for state in m.terminated_states:
+ last_tx = state.platform.transactions[-1]
+ if last_tx.result in ['REVERT', 'INVALID']:
+ # আমরা সেই পাথটি বিবেচনা করি না যেখানে a == 65
+ condition = symbolic_var != 65
+ if m.generate_testcase(state, name="BugFound", only_if=condition):
+ print(f'Bug found, results are in {m.workspace}')
+ no_bug_found = False
+
+if no_bug_found:
+ print(f'No bug found')
+```
+
+উপরের সমস্ত কোড আপনি [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)-এ খুঁজে পেতে পারেন
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/bn/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
new file mode 100644
index 00000000000..bbb8d6920ac
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
@@ -0,0 +1,234 @@
+---
+title: স্মার্ট কন্ট্রাক্ট বাগ খুঁজতে স্লিদার (Slither) কীভাবে ব্যবহার করবেন
+description: স্মার্ট কন্ট্রাক্টে স্বয়ংক্রিয়ভাবে বাগ খুঁজতে স্লিদার কীভাবে ব্যবহার করবেন
+author: ট্রেইলঅফবিটস
+lang: bn
+tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "টেস্টিং"]
+skill: advanced
+breadcrumb: স্লিদার
+published: 2020-06-09
+source: Building secure contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither
+---
+
+## স্লিদার কীভাবে ব্যবহার করবেন {#how-to-use-slither}
+
+এই টিউটোরিয়ালের উদ্দেশ্য হলো স্মার্ট কন্ট্রাক্টে স্বয়ংক্রিয়ভাবে বাগ খুঁজতে স্লিদার কীভাবে ব্যবহার করতে হয় তা দেখানো।
+
+- [ইন্সটলেশন](#installation)
+- [কমান্ড লাইন ব্যবহার](#command-line)
+- [স্ট্যাটিক অ্যানালাইসিসের পরিচিতি](#static-analysis): স্ট্যাটিক অ্যানালাইসিসের সংক্ষিপ্ত পরিচিতি
+- [এপিআই (API)](#api-basics): পাইথন এপিআই-এর বিবরণ
+
+## ইন্সটলেশন {#installation}
+
+স্লিদার ব্যবহার করার জন্য Python >= 3.6 প্রয়োজন। এটি pip বা docker ব্যবহার করে ইন্সটল করা যেতে পারে।
+
+pip-এর মাধ্যমে স্লিদার:
+
+```bash
+pip3 install --user slither-analyzer
+```
+
+docker-এর মাধ্যমে স্লিদার:
+
+```bash
+docker pull trailofbits/eth-security-toolbox
+docker run -it -v "$PWD":/home/trufflecon trailofbits/eth-security-toolbox
+```
+
+_শেষ কমান্ডটি একটি ডকারে eth-security-toolbox চালায় যার আপনার বর্তমান ডিরেক্টরিতে অ্যাক্সেস রয়েছে। আপনি আপনার হোস্ট থেকে ফাইলগুলো পরিবর্তন করতে পারেন এবং ডকার থেকে ফাইলগুলোর উপর টুলগুলো চালাতে পারেন_
+
+ডকারের ভিতরে, রান করুন:
+
+```bash
+solc-select 0.5.11
+cd /home/trufflecon/
+```
+
+### স্ক্রিপ্ট রান করা {#running-a-script}
+
+python 3 দিয়ে একটি পাইথন স্ক্রিপ্ট রান করতে:
+
+```bash
+python3 script.py
+```
+
+### কমান্ড লাইন {#command-line}
+
+**কমান্ড লাইন বনাম ব্যবহারকারী-নির্ধারিত স্ক্রিপ্ট।** স্লিদার পূর্বনির্ধারিত ডিটেক্টরের একটি সেট নিয়ে আসে যা অনেক সাধারণ বাগ খুঁজে বের করে। কমান্ড লাইন থেকে স্লিদার কল করলে সমস্ত ডিটেক্টর রান হবে, এর জন্য স্ট্যাটিক অ্যানালাইসিসের বিস্তারিত জ্ঞানের প্রয়োজন নেই:
+
+```bash
+slither project_paths
+```
+
+ডিটেক্টর ছাড়াও, স্লিদারে এর [printers](https://github.com/crytic/slither#printers) এবং [tools](https://github.com/crytic/slither#tools)-এর মাধ্যমে কোড রিভিউ করার ক্ষমতা রয়েছে।
+
+প্রাইভেট ডিটেক্টর এবং GitHub ইন্টিগ্রেশনে অ্যাক্সেস পেতে [crytic.io](https://github.com/crytic) ব্যবহার করুন।
+
+## স্ট্যাটিক অ্যানালাইসিস {#static-analysis}
+
+স্লিদার স্ট্যাটিক অ্যানালাইসিস ফ্রেমওয়ার্কের ক্ষমতা এবং ডিজাইন ব্লগ পোস্টে ([1](https://blog.trailofbits.com/2018/10/19/slither-a-solidity-static-analysis-framework/), [2](https://blog.trailofbits.com/2019/05/27/slither-the-leading-static-analyzer-for-smart-contracts/)) এবং একটি [একাডেমিক পেপারে](https://github.com/trailofbits/publications/blob/master/papers/wetseb19.pdf) বর্ণনা করা হয়েছে।
+
+স্ট্যাটিক অ্যানালাইসিস বিভিন্ন ধরনের হয়ে থাকে। আপনি সম্ভবত বুঝতে পেরেছেন যে [clang](https://clang-analyzer.llvm.org/) এবং [gcc](https://lwn.net/Articles/806099/)-এর মতো কম্পাইলারগুলো এই গবেষণার কৌশলগুলোর উপর নির্ভর করে, তবে এটি ([Infer](https://fbinfer.com/), [CodeClimate](https://codeclimate.com/), [FindBugs](http://findbugs.sourceforge.net/)-এর মতো টুল এবং [Frama-C](https://frama-c.com/) ও [Polyspace](https://www.mathworks.com/products/polyspace.html)-এর মতো ফরমাল মেথডের উপর ভিত্তি করে তৈরি টুলগুলোরও ভিত্তি।
+
+আমরা এখানে স্ট্যাটিক অ্যানালাইসিস কৌশল এবং গবেষকদের নিয়ে বিস্তারিত আলোচনা করব না। এর পরিবর্তে, স্লিদার কীভাবে কাজ করে তা বোঝার জন্য যা প্রয়োজন আমরা তার উপর ফোকাস করব, যাতে আপনি বাগ খুঁজতে এবং কোড বুঝতে এটি আরও কার্যকরভাবে ব্যবহার করতে পারেন।
+
+- [কোড রিপ্রেজেন্টেশন](#code-representation)
+- [কোড অ্যানালাইসিস](#analysis)
+- [ইন্টারমিডিয়েট রিপ্রেজেন্টেশন](#intermediate-representation)
+
+### কোড রিপ্রেজেন্টেশন {#code-representation}
+
+ডাইনামিক অ্যানালাইসিসের বিপরীতে, যা একটি একক এক্সিকিউশন পাথ নিয়ে কাজ করে, স্ট্যাটিক অ্যানালাইসিস একই সাথে সমস্ত পাথ নিয়ে কাজ করে। এটি করার জন্য, এটি একটি ভিন্ন কোড রিপ্রেজেন্টেশনের উপর নির্ভর করে। সবচেয়ে সাধারণ দুটি হলো অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) এবং কন্ট্রোল ফ্লো গ্রাফ (CFG)।
+
+### অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) {#abstract-syntax-trees-ast}
+
+কম্পাইলার যখনই কোড পার্স করে তখনই AST ব্যবহার করা হয়। এটি সম্ভবত সবচেয়ে মৌলিক কাঠামো যার উপর স্ট্যাটিক অ্যানালাইসিস করা যেতে পারে।
+
+সংক্ষেপে, একটি AST হলো একটি স্ট্রাকচার্ড ট্রি যেখানে সাধারণত প্রতিটি লিফে একটি ভেরিয়েবল বা কনস্ট্যান্ট থাকে এবং ইন্টারনাল নোডগুলো হলো অপারেন্ড বা কন্ট্রোল ফ্লো অপারেশন। নিচের কোডটি বিবেচনা করুন:
+
+```solidity
+function safeAdd(uint a, uint b) pure internal returns(uint){
+ if(a + b <= a){
+ revert();
+ }
+ return a + b;
+}
+```
+
+এর সাথে সম্পর্কিত AST নিচে দেখানো হলো:
+
+
+
+স্লিদার solc দ্বারা এক্সপোর্ট করা AST ব্যবহার করে।
+
+তৈরি করা সহজ হলেও, AST হলো একটি নেস্টেড স্ট্রাকচার। অনেক সময়, এটি বিশ্লেষণ করা সবচেয়ে সহজ কাজ নয়। উদাহরণস্বরূপ, `a + b <= a` এক্সপ্রেশন দ্বারা ব্যবহৃত অপারেশনগুলো শনাক্ত করতে, আপনাকে প্রথমে `<=` এবং তারপর `+` বিশ্লেষণ করতে হবে। একটি সাধারণ পদ্ধতি হলো তথাকথিত ভিজিটর প্যাটার্ন ব্যবহার করা, যা ট্রির মাধ্যমে রিকার্সিভভাবে নেভিগেট করে। স্লিদারে [`ExpressionVisitor`](https://github.com/crytic/slither/blob/master/slither/visitors/expression/expression.py)-এ একটি জেনেরিক ভিজিটর রয়েছে।
+
+নিচের কোডটি এক্সপ্রেশনে কোনো যোগ (addition) আছে কিনা তা শনাক্ত করতে `ExpressionVisitor` ব্যবহার করে:
+
+```python
+from slither.visitors.expression.expression import ExpressionVisitor
+from slither.core.expressions.binary_operation import BinaryOperationType
+
+class HasAddition(ExpressionVisitor):
+
+ def result(self):
+ return self._result
+
+ def _post_binary_operation(self, expression):
+ if expression.type == BinaryOperationType.ADDITION:
+ self._result = True
+
+visitor = HasAddition(expression) # expression হলো সেই এক্সপ্রেশন যা টেস্ট করা হবে
+print(f'The expression {expression} has a addition: {visitor.result()}')
+```
+
+### কন্ট্রোল ফ্লো গ্রাফ (CFG) {#control-flow-graph-cfg}
+
+দ্বিতীয় সবচেয়ে সাধারণ কোড রিপ্রেজেন্টেশন হলো কন্ট্রোল ফ্লো গ্রাফ (CFG)। নাম থেকেই বোঝা যায়, এটি একটি গ্রাফ-ভিত্তিক রিপ্রেজেন্টেশন যা সমস্ত এক্সিকিউশন পাথ প্রকাশ করে। প্রতিটি নোডে এক বা একাধিক ইন্সট্রাকশন থাকে। গ্রাফের এজগুলো কন্ট্রোল ফ্লো অপারেশন (if/then/else, loop ইত্যাদি) উপস্থাপন করে। আমাদের আগের উদাহরণের CFG হলো:
+
+
+
+CFG হলো সেই রিপ্রেজেন্টেশন যার উপর ভিত্তি করে বেশিরভাগ অ্যানালাইসিস তৈরি করা হয়।
+
+আরও অনেক কোড রিপ্রেজেন্টেশন রয়েছে। আপনি যে অ্যানালাইসিস করতে চান তার উপর ভিত্তি করে প্রতিটি রিপ্রেজেন্টেশনের সুবিধা এবং অসুবিধা রয়েছে।
+
+### অ্যানালাইসিস {#analysis}
+
+স্লিদার দিয়ে আপনি যে সবচেয়ে সহজ ধরনের অ্যানালাইসিস করতে পারেন তা হলো সিনট্যাকটিক অ্যানালাইসিস।
+
+### সিনট্যাক্স অ্যানালাইসিস {#syntax-analysis}
+
+স্লিদার প্যাটার্ন ম্যাচিং-এর মতো পদ্ধতি ব্যবহার করে অসঙ্গতি এবং ত্রুটি খুঁজে বের করতে কোডের বিভিন্ন উপাদান এবং তাদের রিপ্রেজেন্টেশনের মাধ্যমে নেভিগেট করতে পারে।
+
+উদাহরণস্বরূপ, নিচের ডিটেক্টরগুলো সিনট্যাক্স-সম্পর্কিত সমস্যাগুলো খোঁজে:
+
+- [স্টেট ভেরিয়েবল শ্যাডোয়িং](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing): সমস্ত স্টেট ভেরিয়েবলের উপর ইটারেট করে এবং চেক করে যে কোনোটি ইনহেরিট করা কন্ট্রাক্ট থেকে কোনো ভেরিয়েবলকে শ্যাডো করে কিনা ([state.py#L51-L62](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/shadowing/state.py#L51-L62))
+
+- [ভুল ERC20 ইন্টারফেস](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface): ভুল ERC20 ফাংশন সিগনেচার খোঁজে ([incorrect_erc20_interface.py#L34-L55](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/erc/incorrect_erc20_interface.py#L34-L55))
+
+### সিমেন্টিক অ্যানালাইসিস {#semantic-analysis}
+
+সিনট্যাক্স অ্যানালাইসিসের বিপরীতে, একটি সিমেন্টিক অ্যানালাইসিস আরও গভীরে যাবে এবং কোডের "অর্থ" বিশ্লেষণ করবে। এই পরিবারে কিছু বিস্তৃত ধরনের অ্যানালাইসিস অন্তর্ভুক্ত রয়েছে। এগুলো আরও শক্তিশালী এবং দরকারী ফলাফলের দিকে নিয়ে যায়, তবে এগুলো লেখাও আরও জটিল।
+
+সবচেয়ে উন্নত দুর্বলতা শনাক্তকরণের জন্য সিমেন্টিক অ্যানালাইসিস ব্যবহার করা হয়।
+
+#### ডেটা ডিপেন্ডেন্সি অ্যানালাইসিস {#fixed-point-computation}
+
+একটি ভেরিয়েবল `variable_a`-কে `variable_b`-এর ডেটা-ডিপেন্ডেন্ট বলা হয় যদি এমন কোনো পাথ থাকে যার জন্য `variable_a`-এর মান `variable_b` দ্বারা প্রভাবিত হয়।
+
+নিচের কোডে, `variable_a` হলো `variable_b`-এর উপর নির্ভরশীল:
+
+```solidity
+// ...
+variable_a = variable_b + 1;
+```
+
+স্লিদারে বিল্ট-ইন [ডেটা ডিপেন্ডেন্সি](https://github.com/crytic/slither/wiki/data-dependency) ক্ষমতা রয়েছে, এর ইন্টারমিডিয়েট রিপ্রেজেন্টেশনের কারণে (পরবর্তী বিভাগে আলোচনা করা হয়েছে)।
+
+ডেটা ডিপেন্ডেন্সি ব্যবহারের একটি উদাহরণ [বিপজ্জনক স্ট্রিক্ট ইকুয়ালিটি ডিটেক্টরে](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities) পাওয়া যেতে পারে। এখানে স্লিদার একটি বিপজ্জনক মানের সাথে স্ট্রিক্ট ইকুয়ালিটি তুলনা খুঁজবে ([incorrect_strict_equality.py#L86-L87](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L86-L87)), এবং ব্যবহারকারীকে জানাবে যে কোনো আক্রমণকারীকে কন্ট্রাক্টটি ফাঁদে ফেলা থেকে বিরত রাখতে `==`-এর পরিবর্তে `>=` বা `<=` ব্যবহার করা উচিত। অন্যান্য বিষয়ের মধ্যে, ডিটেক্টরটি `balanceOf(address)`-এ কলের রিটার্ন ভ্যালুকে বিপজ্জনক হিসেবে বিবেচনা করবে ([incorrect_strict_equality.py#L63-L64](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L63-L64)), এবং এর ব্যবহার ট্র্যাক করতে ডেটা ডিপেন্ডেন্সি ইঞ্জিন ব্যবহার করবে।
+
+#### ফিক্সড-পয়েন্ট কম্পিউটেশন {#fixed-point-computation}
+
+যদি আপনার অ্যানালাইসিস CFG-এর মাধ্যমে নেভিগেট করে এবং এজগুলো অনুসরণ করে, তবে আপনি সম্ভবত ইতিমধ্যে ভিজিট করা নোডগুলো দেখতে পাবেন। উদাহরণস্বরূপ, যদি নিচে দেখানো লুপটি উপস্থিত থাকে:
+
+```solidity
+for(uint i; i < range; ++){
+ variable_a += 1
+}
+```
+
+আপনার অ্যানালাইসিসকে জানতে হবে কখন থামতে হবে। এখানে দুটি প্রধান কৌশল রয়েছে: (1) প্রতিটি নোডে একটি নির্দিষ্ট সংখ্যক বার ইটারেট করা, (2) একটি তথাকথিত _ফিক্সপয়েন্ট_ গণনা করা। একটি ফিক্সপয়েন্ট মূলত বোঝায় যে এই নোডটি বিশ্লেষণ করা কোনো অর্থপূর্ণ তথ্য প্রদান করে না।
+
+রিএন্ট্রান্সি ডিটেক্টরগুলোতে ব্যবহৃত ফিক্সপয়েন্টের একটি উদাহরণ পাওয়া যেতে পারে: স্লিদার নোডগুলো এক্সপ্লোর করে এবং এক্সটার্নাল কল, স্টোরেজে রাইট এবং রিড খোঁজে। একবার এটি একটি ফিক্সপয়েন্টে পৌঁছালে ([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131)), এটি এক্সপ্লোরেশন থামিয়ে দেয় এবং বিভিন্ন রিএন্ট্রান্সি প্যাটার্নের মাধ্যমে কোনো রিএন্ট্রান্সি উপস্থিত আছে কিনা তা দেখতে ফলাফলগুলো বিশ্লেষণ করে ([reentrancy_benign.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py), [reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py), [reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py))।
+
+দক্ষ ফিক্সড পয়েন্ট কম্পিউটেশন ব্যবহার করে অ্যানালাইসিস লেখার জন্য অ্যানালাইসিস কীভাবে এর তথ্য প্রচার করে সে সম্পর্কে ভালো ধারণা থাকা প্রয়োজন।
+
+### ইন্টারমিডিয়েট রিপ্রেজেন্টেশন {#intermediate-representation}
+
+একটি ইন্টারমিডিয়েট রিপ্রেজেন্টেশন (IR) হলো এমন একটি ভাষা যা মূল ভাষার চেয়ে স্ট্যাটিক অ্যানালাইসিসের জন্য বেশি উপযোগী। স্লিদার সলিডিটিকে এর নিজস্ব IR-এ অনুবাদ করে: [SlithIR](https://github.com/crytic/slither/wiki/SlithIR)।
+
+আপনি যদি শুধুমাত্র বেসিক চেক লিখতে চান তবে SlithIR বোঝার প্রয়োজন নেই। তবে, আপনি যদি উন্নত সিমেন্টিক অ্যানালাইসিস লেখার পরিকল্পনা করেন তবে এটি কাজে আসবে। [SlithIR](https://github.com/crytic/slither/wiki/Printer-documentation#slithir) এবং [SSA](https://github.com/crytic/slither/wiki/Printer-documentation#slithir-ssa) প্রিন্টারগুলো আপনাকে কোড কীভাবে অনুবাদ করা হয় তা বুঝতে সাহায্য করবে।
+
+## এপিআই (API) বেসিকস {#api-basics}
+
+স্লিদারে একটি API রয়েছে যা আপনাকে কন্ট্রাক্ট এবং এর ফাংশনগুলোর বেসিক অ্যাট্রিবিউটগুলো এক্সপ্লোর করতে দেয়।
+
+একটি কোডবেস লোড করতে:
+
+```python
+from slither import Slither
+slither = Slither('/path/to/project')
+
+```
+
+### কন্ট্রাক্ট এবং ফাংশন এক্সপ্লোর করা {#exploring-contracts-and-functions}
+
+একটি `Slither` অবজেক্টে থাকে:
+
+- `contracts (list(Contract)`: কন্ট্রাক্টের তালিকা
+- `contracts_derived (list(Contract)`: এমন কন্ট্রাক্টের তালিকা যা অন্য কোনো কন্ট্রাক্ট দ্বারা ইনহেরিট করা হয়নি (কন্ট্রাক্টের সাবসেট)
+- `get_contract_from_name (str)`: নাম থেকে একটি কন্ট্রাক্ট রিটার্ন করে
+
+একটি `Contract` অবজেক্টে থাকে:
+
+- `name (str)`: কন্ট্রাক্টের নাম
+- `functions (list(Function))`: ফাংশনের তালিকা
+- `modifiers (list(Modifier))`: ফাংশনের তালিকা
+- `all_functions_called (list(Function/Modifier))`: কন্ট্রাক্ট দ্বারা পৌঁছানো যায় এমন সমস্ত ইন্টারনাল ফাংশনের তালিকা
+- `inheritance (list(Contract))`: ইনহেরিট করা কন্ট্রাক্টের তালিকা
+- `get_function_from_signature (str)`: সিগনেচার থেকে একটি ফাংশন রিটার্ন করে
+- `get_modifier_from_signature (str)`: সিগনেচার থেকে একটি মডিফায়ার রিটার্ন করে
+- `get_state_variable_from_name (str)`: নাম থেকে একটি StateVariable রিটার্ন করে
+
+একটি `Function` বা `Modifier` অবজেক্টে থাকে:
+
+- `name (str)`: ফাংশনের নাম
+- `contract (contract)`: যে কন্ট্রাক্টে ফাংশনটি ডিক্লেয়ার করা হয়েছে
+- `nodes (list(Node))`: ফাংশন/মডিফায়ারের CFG গঠনকারী নোডগুলোর তালিকা
+- `entry_point (Node)`: CFG-এর এন্ট্রি পয়েন্ট
+- `variables_read (list(Variable))`: রিড করা ভেরিয়েবলের তালিকা
+- `variables_written (list(Variable))`: রাইট করা ভেরিয়েবলের তালিকা
+- `state_variables_read (list(StateVariable))`: রিড করা স্টেট ভেরিয়েবলের তালিকা (variables`read-এর সাবসেট)
+- `state_variables_written (list(StateVariable))`: রাইট করা স্টেট ভেরিয়েবলের তালিকা (variables`written-এর সাবসেট)
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/bn/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
new file mode 100644
index 00000000000..d6400f40d5a
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
@@ -0,0 +1,82 @@
+---
+title: কীভাবে আপনার ওরাকল হিসেবে Tellor সেট আপ করবেন
+description: আপনার প্রটোকলে Tellor ওরাকল ইন্টিগ্রেট করা শুরু করার একটি গাইড
+author: "টেলর"
+lang: bn
+tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "ওরাকল"]
+skill: beginner
+breadcrumb: Tellor ওরাকল
+published: 2021-06-29
+source: Tellor Docs
+sourceUrl: https://docs.tellor.io/tellor/
+---
+
+পপ কুইজ: আপনার প্রটোকল প্রায় শেষ, কিন্তু অফচেইন ডাটা এক্সেস করার জন্য এর একটি ওরাকল প্রয়োজন... আপনি কী করবেন?
+
+## (সফট) পূর্বশর্তসমূহ {#soft-prerequisites}
+
+এই পোস্টের উদ্দেশ্য হলো একটি ওরাকল ফিড এক্সেস করাকে যতটা সম্ভব সহজ এবং সোজা করা। তবে, ওরাকলের দিকটিতে ফোকাস করার জন্য আমরা আপনার কোডিং দক্ষতার স্তর সম্পর্কে নিচের বিষয়গুলো ধরে নিচ্ছি।
+
+অনুমানসমূহ:
+
+- আপনি টার্মিনাল ব্যবহার করতে পারেন
+- আপনার npm ইনস্টল করা আছে
+- আপনি জানেন কীভাবে ডিপেন্ডেন্সি ম্যানেজ করতে npm ব্যবহার করতে হয়
+
+Tellor হলো একটি লাইভ এবং ওপেন-সোর্স ওরাকল যা ইমপ্লিমেন্টেশনের জন্য প্রস্তুত। এই নতুনদের গাইডটি এখানে দেখানো হয়েছে যে কত সহজে কেউ Tellor ব্যবহার শুরু করতে পারে, যা আপনার প্রজেক্টকে একটি সম্পূর্ণ ডিসেন্ট্রালাইজড এবং সেন্সরশিপ-প্রতিরোধী ওরাকল প্রদান করে।
+
+## ওভারভিউ {#overview}
+
+Tellor হলো এমন একটি ওরাকল সিস্টেম যেখানে পার্টিগুলো একটি অফচেইন ডাটা পয়েন্টের (যেমন, BTC/USD) ভ্যালু রিকোয়েস্ট করতে পারে এবং রিপোর্টাররা এই ভ্যালুটিকে একটি অনচেইন ডাটা-ব্যাংকে যুক্ত করার জন্য প্রতিযোগিতা করে, যা সমস্ত ইথিরিয়াম স্মার্ট কন্ট্রাক্ট দ্বারা এক্সেসযোগ্য। এই ডাটা-ব্যাংকের ইনপুটগুলো স্টেক করা রিপোর্টারদের একটি নেটওয়ার্ক দ্বারা সুরক্ষিত থাকে। Tellor ক্রিপ্টো-ইকোনমিক ইনসেনটিভ মেকানিজম ব্যবহার করে, রিপোর্টারদের সৎ ডাটা সাবমিশনের জন্য পুরস্কৃত করে এবং Tellor-এর টোকেন, Tributes (TRB) এর ইস্যুয়েন্স এবং একটি ডিসপুট মেকানিজমের মাধ্যমে খারাপ অ্যাক্টরদের শাস্তি দেয়।
+
+এই টিউটোরিয়ালে আমরা যা যা দেখব:
+
+- কাজ শুরু করার জন্য প্রয়োজনীয় প্রাথমিক টুলকিট সেট আপ করা।
+- একটি সহজ উদাহরণের মাধ্যমে ধাপে ধাপে দেখা।
+- বর্তমানে আপনি যেসব নেটওয়ার্কে Tellor টেস্ট করতে পারবেন সেগুলোর টেস্টনেট এডড্রেস তালিকাভুক্ত করা।
+
+## UsingTellor {#usingtellor}
+
+আপনার ওরাকল হিসেবে Tellor ব্যবহার করার জন্য প্রয়োজনীয় বেসিক টুলগুলো ইনস্টল করা হলো প্রথম কাজ। Tellor User Contracts ইনস্টল করতে [এই প্যাকেজটি](https://github.com/tellor-io/usingtellor) ব্যবহার করুন:
+
+`npm install usingtellor`
+
+একবার ইনস্টল হয়ে গেলে এটি আপনার কন্ট্রাক্টগুলোকে 'UsingTellor' কন্ট্রাক্ট থেকে ফাংশনগুলো ইনহেরিট করার অনুমতি দেবে।
+
+দারুণ! এখন যেহেতু আপনার টুলগুলো প্রস্তুত, চলুন একটি সহজ অনুশীলনের মাধ্যমে আমরা বিটকয়েনের প্রাইস রিট্রিভ করি:
+
+### BTC/USD উদাহরণ {#btcusd-example}
+
+UsingTellor কন্ট্রাক্টটি ইনহেরিট করুন, যেখানে Tellor এডড্রেসটিকে একটি কনস্ট্রাক্টর আর্গুমেন্ট হিসেবে পাস করতে হবে:
+
+এখানে একটি উদাহরণ দেওয়া হলো:
+
+```solidity
+import "usingtellor/contracts/UsingTellor.sol";
+
+contract PriceContract is UsingTellor {
+ uint256 public btcPrice;
+
+ // এই কন্ট্রাক্টটির এখন UsingTellor-এর সকল ফাংশনে অ্যাক্সেস রয়েছে।
+
+constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {}
+
+function setBtcPrice() public {
+ bytes memory _b = abi.encode("SpotPrice",abi.encode("btc","usd"));
+ bytes32 _queryId = keccak256(_b);
+
+ uint256 _timestamp;
+ bytes _value;
+
+ (_value, _timestamp) = getDataBefore(_queryId, block.timestamp - 15 minutes);
+
+ btcPrice = abi.decode(_value,(uint256));
+ }
+}
+```
+
+কন্ট্রাক্ট এডড্রেসগুলোর সম্পূর্ণ তালিকার জন্য [এখানে](https://docs.tellor.io/tellor/the-basics/contracts-reference) দেখুন।
+
+ব্যবহারের সুবিধার জন্য, UsingTellor রেপোতে সহজে ইন্টিগ্রেশনের জন্য [Tellor Playground](https://github.com/tellor-io/TellorPlayground) কন্ট্রাক্টের একটি ভার্সন দেওয়া আছে। সহায়ক ফাংশনগুলোর তালিকার জন্য [এখানে](https://github.com/tellor-io/sampleUsingTellor#tellor-playground) দেখুন।
+
+Tellor ওরাকলের আরও শক্তিশালী ইমপ্লিমেন্টেশনের জন্য, উপলব্ধ ফাংশনগুলোর সম্পূর্ণ তালিকা [এখানে](https://github.com/tellor-io/usingtellor/blob/master/README.md) দেখুন।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-view-nft-in-metamask/index.md b/public/content/translations/bn/developers/tutorials/how-to-view-nft-in-metamask/index.md
new file mode 100644
index 00000000000..646d535ca4f
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-view-nft-in-metamask/index.md
@@ -0,0 +1,34 @@
+---
+title: আপনার ওয়ালেট-এ কীভাবে আপনার NFT দেখবেন (NFT টিউটোরিয়াল সিরিজের পার্ট 3/3)
+description: এই টিউটোরিয়ালটি বর্ণনা করে কীভাবে MetaMask-এ একটি বিদ্যমান NFT দেখতে হয়!
+author: "সুমি মুদগিল"
+tags: ["ERC-721", "Alchemy", "Solidity"]
+skill: beginner
+breadcrumb: ওয়ালেট-এ NFT দেখুন
+lang: bn
+published: 2021-04-22
+---
+
+এই টিউটোরিয়ালটি NFT টিউটোরিয়াল সিরিজের পার্ট 3/3, যেখানে আমরা আমাদের নতুন মিন্ট করা NFT দেখব। তবে, আপনি মেইননেট বা যেকোনো টেস্টনেট সহ MetaMask ব্যবহার করে যেকোনো ERC-721 টোকেন-এর জন্য সাধারণ টিউটোরিয়ালটি ব্যবহার করতে পারেন। আপনি যদি ইথিরিয়াম-এ আপনার নিজস্ব NFT মিন্ট করা শিখতে চান, তবে আপনার [কীভাবে একটি NFT স্মার্ট কন্ট্রাক্ট লিখতে এবং ডিপ্লয় করতে হয় তার পার্ট 1](/developers/tutorials/how-to-write-and-deploy-an-nft) দেখা উচিত!
+
+অভিনন্দন! আপনি আমাদের NFT টিউটোরিয়াল সিরিজের সবচেয়ে ছোট এবং সহজ অংশে পৌঁছেছেন — কীভাবে একটি ভার্চুয়াল ওয়ালেট-এ আপনার নতুন মিন্ট করা NFT দেখবেন। আমরা এই উদাহরণের জন্য MetaMask ব্যবহার করব কারণ আগের দুটি অংশে আমরা এটিই ব্যবহার করেছি।
+
+পূর্বশর্ত হিসেবে, আপনার মোবাইলে আগে থেকেই MetaMask ইনস্টল করা থাকতে হবে এবং এতে সেই একাউন্ট অন্তর্ভুক্ত থাকতে হবে যেখানে আপনি আপনার NFT মিন্ট করেছেন — আপনি [iOS](https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202) বা [Android](https://play.google.com/store/apps/details?id=io.metamask&hl=en_US&gl=US)-এ বিনামূল্যে অ্যাপটি পেতে পারেন।
+
+## ধাপ 1: আপনার নেটওয়ার্ক Sepolia-তে সেট করুন {#set-network-to-sepolia}
+
+অ্যাপের শীর্ষে, "Wallet" বোতাম টিপুন, যার পরে আপনাকে একটি নেটওয়ার্ক নির্বাচন করতে বলা হবে। যেহেতু আমাদের NFT Sepolia নেটওয়ার্ক-এ মিন্ট করা হয়েছিল, তাই আপনি আপনার নেটওয়ার্ক হিসেবে Sepolia নির্বাচন করতে চাইবেন।
+
+
+
+## ধাপ 2: MetaMask-এ আপনার কালেক্টিবল যোগ করুন {#add-nft-to-metamask}
+
+একবার আপনি Sepolia নেটওয়ার্ক-এ গেলে, ডানদিকের "Collectibles" ট্যাবটি নির্বাচন করুন এবং আপনার NFT-এর স্মার্ট কন্ট্রাক্ট এডড্রেস এবং ERC-721 টোকেন আইডি যোগ করুন — যা আপনি আমাদের টিউটোরিয়ালের পার্ট II-এ ডিপ্লয় করা আপনার NFT-এর লেনদেন হ্যাস-এর উপর ভিত্তি করে Etherscan-এ খুঁজে পেতে সক্ষম হবেন।
+
+
+
+আপনার NFT দেখার জন্য আপনাকে কয়েকবার রিফ্রেশ করতে হতে পারে — তবে এটি সেখানে থাকবে !
+
+
+
+অভিনন্দন! আপনি সফলভাবে একটি NFT মিন্ট করেছেন এবং আপনি এখন এটি দেখতে পারেন! আপনি কীভাবে NFT বিশ্বকে চমকে দেবেন তা দেখার জন্য আমরা অধীর আগ্রহে অপেক্ষা করছি!
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/bn/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
new file mode 100644
index 00000000000..3206e0323a0
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/how-to-write-and-deploy-an-nft/index.md
@@ -0,0 +1,350 @@
+---
+title: কীভাবে একটি NFT লিখতে এবং ডিপ্লয় করতে হয় (NFT টিউটোরিয়াল সিরিজের পর্ব 1/3)
+description: এই টিউটোরিয়ালটি NFT-এর উপর একটি সিরিজের পর্ব 1, যা আপনাকে ধাপে ধাপে দেখাবে কীভাবে ইথিরিয়াম এবং ইন্টার প্ল্যানেটারি ফাইল সিস্টেম (IPFS) ব্যবহার করে একটি নন-ফান্জেবল টোকেন (ERC-721 টোকেন) স্মার্ট কন্ট্রাক্ট লিখতে এবং ডিপ্লয় করতে হয়।
+author: "সুমি মুদগিল"
+tags: ["ERC-721", "Alchemy", "Solidity", "স্মার্ট কন্ট্রাক্ট"]
+skill: beginner
+breadcrumb: NFT লিখুন এবং ডিপ্লয় করুন
+lang: bn
+published: 2021-04-22
+---
+
+NFT-গুলো ব্লকচেইনকে জনসমক্ষে নিয়ে আসার সাথে সাথে, ইথিরিয়াম ব্লকচেইনে আপনার নিজস্ব NFT কন্ট্রাক্ট (ERC-721 টোকেন) প্রকাশ করে এই উন্মাদনাটি নিজে বোঝার জন্য এটি একটি চমৎকার সুযোগ!
+
+Alchemy NFT স্পেসের সবচেয়ে বড় নামগুলোকে শক্তি জোগাতে পেরে অত্যন্ত গর্বিত, যার মধ্যে রয়েছে Makersplace (সম্প্রতি Christie’s-এ $69 মিলিয়নে ডিজিটাল আর্টওয়ার্ক বিক্রির রেকর্ড গড়েছে), Dapper Labs (NBA Top Shot এবং Crypto Kitties-এর নির্মাতা), OpenSea (বিশ্বের বৃহত্তম NFT মার্কেটপ্লেস), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol, Immutable এবং আরও অনেক কিছু।
+
+এই টিউটোরিয়ালে, আমরা [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), [Pinata](https://pinata.cloud/) এবং [Alchemy](https://alchemy.com/signup/eth) ব্যবহার করে Sepolia টেস্টনেট-এ একটি ERC-721 স্মার্ট কন্ট্রাক্ট তৈরি এবং ডিপ্লয় করার প্রক্রিয়া দেখব (যদি আপনি এখনও এগুলোর অর্থ বুঝতে না পারেন তবে চিন্তা করবেন না — আমরা এটি ব্যাখ্যা করব!)।
+
+এই টিউটোরিয়ালের পর্ব 2-এ আমরা দেখব কীভাবে আমরা একটি NFT মিন্ট করতে আমাদের স্মার্ট কন্ট্রাক্ট ব্যবহার করতে পারি এবং পর্ব 3-এ আমরা ব্যাখ্যা করব কীভাবে MetaMask-এ আপনার NFT দেখতে হয়।
+
+এবং অবশ্যই, যদি কোনো পর্যায়ে আপনার প্রশ্ন থাকে, তবে [Alchemy Discord](https://discord.gg/gWuC7zB)-এ যোগাযোগ করতে বা [Alchemy's NFT API docs](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api) ভিজিট করতে দ্বিধা করবেন না!
+
+## ধাপ 1: ইথিরিয়াম নেটওয়ার্ক-এর সাথে সংযুক্ত হোন {#connect-to-ethereum}
+
+ইথিরিয়াম ব্লকচেইন-এ রিকোয়েস্ট করার অনেক উপায় রয়েছে, তবে বিষয়গুলো সহজ করার জন্য, আমরা [Alchemy](https://alchemy.com/signup/eth)-তে একটি বিনামূল্যের একাউন্ট ব্যবহার করব, যা একটি ব্লকচেইন ডেভেলপার প্ল্যাটফর্ম এবং API যা আমাদের নিজস্ব নোড না চালিয়েই ইথিরিয়াম চেইনের সাথে যোগাযোগ করতে দেয়।
+
+এই টিউটোরিয়ালে, আমরা আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয়মেন্টের নেপথ্যে কী ঘটছে তা বোঝার জন্য মনিটরিং এবং অ্যানালিটিক্সের জন্য Alchemy-এর ডেভেলপার টুলগুলোরও সুবিধা নেব। যদি আপনার আগে থেকেই কোনো Alchemy একাউন্ট না থাকে, তবে আপনি বিনামূল্যে [এখানে](https://alchemy.com/signup/eth) সাইন আপ করতে পারেন।
+
+## ধাপ 2: আপনার অ্যাপ (এবং API কি) তৈরি করুন {#make-api-key}
+
+একবার আপনি একটি Alchemy একাউন্ট তৈরি করলে, আপনি একটি অ্যাপ তৈরি করে একটি API কি জেনারেট করতে পারেন। এটি আমাদের Sepolia টেস্টনেট-এ রিকোয়েস্ট করার অনুমতি দেবে। আপনি যদি টেস্টনেট সম্পর্কে আরও জানতে আগ্রহী হন তবে [এই গাইডটি](https://docs.alchemyapi.io/guides/choosing-a-network) দেখুন।
+
+1. ন্যাভ বারে "Apps"-এর উপর হোভার করে এবং "Create App"-এ ক্লিক করে আপনার Alchemy ড্যাশবোর্ডের "Create App" পেজে যান
+
+
+
+2. আপনার অ্যাপের নাম দিন (আমরা "My First NFT!" বেছে নিয়েছি), একটি সংক্ষিপ্ত বিবরণ দিন, চেইনের জন্য "Ethereum" নির্বাচন করুন এবং আপনার নেটওয়ার্ক-এর জন্য "Sepolia" বেছে নিন। মার্জ হওয়ার পর থেকে অন্যান্য টেস্টনেট-গুলো বাতিল করা হয়েছে।
+
+
+
+3. "Create app"-এ ক্লিক করুন এবং কাজ শেষ! আপনার অ্যাপটি নিচের টেবিলে দেখা উচিত।
+
+## ধাপ 3: একটি ইথিরিয়াম একাউন্ট (এডড্রেস) তৈরি করুন {#create-eth-address}
+
+লেনদেন পাঠাতে এবং গ্রহণ করতে আমাদের একটি ইথিরিয়াম একাউন্ট প্রয়োজন। এই টিউটোরিয়ালের জন্য, আমরা MetaMask ব্যবহার করব, যা ব্রাউজারে একটি ভার্চুয়াল ওয়ালেট যা আপনার ইথিরিয়াম একাউন্ট এডড্রেস পরিচালনা করতে ব্যবহৃত হয়। আপনি যদি ইথিরিয়াম-এ লেনদেন কীভাবে কাজ করে সে সম্পর্কে আরও বুঝতে চান, তবে ইথিরিয়াম ফাউন্ডেশনের [এই পেজটি](/developers/docs/transactions/) দেখুন।
+
+আপনি বিনামূল্যে [এখানে](https://metamask.io/download) একটি MetaMask একাউন্ট ডাউনলোড এবং তৈরি করতে পারেন। যখন আপনি একটি একাউন্ট তৈরি করছেন, বা যদি আপনার আগে থেকেই একটি একাউন্ট থাকে, তবে উপরের ডানদিকে "Sepolia Test Network"-এ স্যুইচ করতে ভুলবেন না (যাতে আমরা আসল টাকা নিয়ে কাজ না করি)।
+
+
+
+## ধাপ 4: একটি ফাসেট থেকে ইথার যোগ করুন {#step-4-add-ether-from-a-faucet}
+
+টেস্টনেট-এ আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় করার জন্য, আমাদের কিছু নকল ETH প্রয়োজন হবে। ETH পেতে আপনি Alchemy দ্বারা হোস্ট করা [Sepolia Faucet](https://sepoliafaucet.com/)-এ যেতে পারেন, লগ ইন করুন এবং আপনার একাউন্ট এডড্রেস লিখুন, "Send Me ETH"-এ ক্লিক করুন। এর পরপরই আপনার MetaMask একাউন্ট-এ ETH দেখতে পাওয়া উচিত!
+
+## ধাপ 5: আপনার ব্যালেন্স চেক করুন {#check-balance}
+
+আমাদের ব্যালেন্স সেখানে আছে কিনা তা দুবার চেক করতে, চলুন [Alchemy’s composer tool](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) ব্যবহার করে একটি [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) রিকোয়েস্ট করি। এটি আমাদের ওয়ালেট-এ থাকা ETH-এর পরিমাণ রিটার্ন করবে। আপনার MetaMask একাউন্ট এডড্রেস ইনপুট করার পর এবং "Send Request"-এ ক্লিক করার পর, আপনার এইরকম একটি রেসপন্স দেখা উচিত:
+
+ `{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}`
+
+> **নোট** এই ফলাফলটি wei-তে, ETH-এ নয়। Wei ইথারের ক্ষুদ্রতম একক হিসেবে ব্যবহৃত হয়। wei থেকে ETH-এ রূপান্তর হলো 1 eth = 1018 wei। তাই যদি আমরা 0xde0b6b3a7640000 কে ডেসিমালে রূপান্তর করি তবে আমরা 1\*1018 wei পাই, যা 1 ETH এর সমান।
+
+যাক! আমাদের সব নকল টাকা সেখানে আছে।
+
+## ধাপ 6: আমাদের প্রজেক্ট ইনিশিয়ালাইজ করুন {#initialize-project}
+
+প্রথমে, আমাদের প্রজেক্টের জন্য একটি ফোল্ডার তৈরি করতে হবে। আপনার কমান্ড লাইনে যান এবং টাইপ করুন:
+
+ mkdir my-nft
+ cd my-nft
+
+এখন যেহেতু আমরা আমাদের প্রজেক্ট ফোল্ডারের ভিতরে আছি, আমরা প্রজেক্টটি ইনিশিয়ালাইজ করতে npm init ব্যবহার করব। যদি আপনার আগে থেকেই npm ইনস্টল করা না থাকে, তবে [এই নির্দেশাবলী](https://docs.alchemyapi.io/alchemy/guides/alchemy-for-macs#1-install-nodejs-and-npm) অনুসরণ করুন (আমাদের [Node.js](https://nodejs.org/en/download/)-ও প্রয়োজন হবে, তাই সেটিও ডাউনলোড করুন!)।
+
+ npm init
+
+আপনি ইনস্টলেশনের প্রশ্নগুলোর উত্তর কীভাবে দেন তা খুব একটা গুরুত্বপূর্ণ নয়; রেফারেন্সের জন্য আমরা কীভাবে এটি করেছি তা এখানে দেওয়া হলো:
+
+```json
+ package name: (my-nft)
+ version: (1.0.0)
+ description: My first NFT!
+ entry point: (index.js)
+ test command:
+ git repository:
+ keywords:
+ author:
+ license: (ISC)
+ About to write to /Users/thesuperb1/Desktop/my-nft/package.json:
+
+ {
+ "name": "my-nft",
+ "version": "1.0.0",
+ "description": "My first NFT!",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC"
+ }
+```
+
+package.json অনুমোদন করুন, এবং আমরা প্রস্তুত!
+
+## ধাপ 7: [Hardhat](https://hardhat.org/getting-started/#overview) ইনস্টল করুন {#install-hardhat}
+
+Hardhat হলো আপনার ইথিরিয়াম সফটওয়্যার কম্পাইল, ডিপ্লয়, টেস্ট এবং ডিবাগ করার জন্য একটি ডেভেলপমেন্ট এনভায়রনমেন্ট। এটি লাইভ চেইনে ডিপ্লয় করার আগে স্থানীয়ভাবে স্মার্ট কন্ট্রাক্ট এবং ডিএ্যাপস তৈরি করার সময় ডেভেলপারদের সাহায্য করে।
+
+আমাদের my-nft প্রজেক্টের ভিতরে রান করুন:
+
+ npm install --save-dev hardhat
+
+[ইনস্টলেশন নির্দেশাবলী](https://hardhat.org/getting-started/#overview) সম্পর্কে আরও বিস্তারিত জানতে এই পেজটি দেখুন।
+
+## ধাপ 8: Hardhat প্রজেক্ট তৈরি করুন {#create-hardhat-project}
+
+আমাদের প্রজেক্ট ফোল্ডারের ভিতরে রান করুন:
+
+ npx hardhat
+
+এরপর আপনার একটি ওয়েলকাম মেসেজ এবং আপনি কী করতে চান তা নির্বাচন করার অপশন দেখা উচিত। "create an empty hardhat.config.js" নির্বাচন করুন:
+
+ 888 888 888 888 888
+ 888 888 888 888 888
+ 888 888 888 888 888
+ 8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+ 888 888 "88b 888P" d88" 888 888 "88b "88b 888
+ 888 888 .d888888 888 888 888 888 888 .d888888 888
+ 888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+ 888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+ 👷 Welcome to Hardhat v2.0.11 👷
+ ? What do you want to do? …
+ Create a sample project
+ ❯ Create an empty hardhat.config.js
+ Quit
+
+এটি আমাদের জন্য একটি hardhat.config.js ফাইল তৈরি করবে যেখানে আমরা আমাদের প্রজেক্টের জন্য সমস্ত সেট আপ নির্দিষ্ট করব (ধাপ 13-এ)।
+
+## ধাপ 9: প্রজেক্ট ফোল্ডার যোগ করুন {#add-project-folders}
+
+আমাদের প্রজেক্টটি গুছিয়ে রাখতে, আমরা দুটি নতুন ফোল্ডার তৈরি করব। আপনার কমান্ড লাইনে আপনার প্রজেক্টের রুট ডিরেক্টরিতে যান এবং টাইপ করুন:
+
+ mkdir contracts
+ mkdir scripts
+
+- contracts/ হলো যেখানে আমরা আমাদের NFT স্মার্ট কন্ট্রাক্ট কোড রাখব
+
+- scripts/ হলো যেখানে আমরা আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় এবং ইন্টারঅ্যাক্ট করার জন্য স্ক্রিপ্ট রাখব
+
+## ধাপ 10: আমাদের কন্ট্রাক্ট লিখুন {#write-contract}
+
+এখন যেহেতু আমাদের এনভায়রনমেন্ট সেট আপ করা হয়েছে, আরও আকর্ষণীয় বিষয়ের দিকে যাওয়া যাক: _আমাদের স্মার্ট কন্ট্রাক্ট কোড লেখা!_
+
+আপনার পছন্দের এডিটরে my-nft প্রজেক্টটি খুলুন (আমাদের পছন্দ [VSCode](https://code.visualstudio.com/))। স্মার্ট কন্ট্রাক্ট-গুলো Solidity নামক একটি ভাষায় লেখা হয় যা আমরা আমাদের MyNFT.sol স্মার্ট কন্ট্রাক্ট লিখতে ব্যবহার করব।
+
+1. `contracts` ফোল্ডারে যান এবং MyNFT.sol নামে একটি নতুন ফাইল তৈরি করুন
+
+2. নিচে আমাদের NFT স্মার্ট কন্ট্রাক্ট কোড দেওয়া হলো, যা আমরা [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc721) লাইব্রেরির ERC-721 ইমপ্লিমেন্টেশনের উপর ভিত্তি করে তৈরি করেছি। নিচের বিষয়বস্তু কপি করে আপনার MyNFT.sol ফাইলে পেস্ট করুন।
+
+ ```solidity
+ // [https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721)-এর উপর ভিত্তি করে তৈরি কন্ট্রাক্ট
+ // SPDX-License-Identifier: MIT
+ pragma solidity ^0.8.0;
+
+ import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
+ import "@openzeppelin/contracts/utils/Counters.sol";
+ import "@openzeppelin/contracts/access/Ownable.sol";
+ import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
+
+ contract MyNFT is ERC721URIStorage, Ownable {
+ using Counters for Counters.Counter;
+ Counters.Counter private _tokenIds;
+
+ constructor() ERC721("MyNFT", "NFT") {}
+
+ function mintNFT(address recipient, string memory tokenURI)
+ public onlyOwner
+ returns (uint256)
+ {
+ _tokenIds.increment();
+
+ uint256 newItemId = _tokenIds.current();
+ _mint(recipient, newItemId);
+ _setTokenURI(newItemId, tokenURI);
+
+ return newItemId;
+ }
+ }
+ ```
+
+3. যেহেতু আমরা OpenZeppelin কন্ট্রাক্ট লাইব্রেরি থেকে ক্লাস ইনহেরিট করছি, তাই আমাদের ফোল্ডারে লাইব্রেরিটি ইনস্টল করতে আপনার কমান্ড লাইনে `npm install @openzeppelin/contracts^4.0.0` রান করুন।
+
+তাহলে, এই কোডটি আসলে কী _করে_? চলুন এটি লাইন-বাই-লাইন বিশ্লেষণ করি।
+
+আমাদের স্মার্ট কন্ট্রাক্ট-এর শীর্ষে, আমরা তিনটি [OpenZeppelin](https://openzeppelin.com/) স্মার্ট কন্ট্রাক্ট ক্লাস ইমপোর্ট করি:
+
+- @openzeppelin/contracts/token/ERC721/ERC721.sol-এ ERC-721 স্ট্যান্ডার্ডের ইমপ্লিমেন্টেশন রয়েছে, যা আমাদের NFT স্মার্ট কন্ট্রাক্ট ইনহেরিট করবে। (একটি বৈধ NFT হতে হলে, আপনার স্মার্ট কন্ট্রাক্ট-কে অবশ্যই ERC-721 স্ট্যান্ডার্ডের সমস্ত মেথড ইমপ্লিমেন্ট করতে হবে।) ইনহেরিট করা ERC-721 ফাংশনগুলো সম্পর্কে আরও জানতে, [এখানে](https://eips.ethereum.org/EIPS/eip-721) ইন্টারফেস ডেফিনিশন দেখুন।
+
+- @openzeppelin/contracts/utils/Counters.sol এমন কাউন্টার প্রদান করে যা শুধুমাত্র এক করে বাড়ানো বা কমানো যায়। আমাদের স্মার্ট কন্ট্রাক্ট মিন্ট করা মোট NFT-এর সংখ্যার ট্র্যাক রাখতে এবং আমাদের নতুন NFT-তে ইউনিক ID সেট করতে একটি কাউন্টার ব্যবহার করে। (স্মার্ট কন্ট্রাক্ট ব্যবহার করে মিন্ট করা প্রতিটি NFT-কে অবশ্যই একটি ইউনিক ID দিতে হবে—এখানে আমাদের ইউনিক ID শুধুমাত্র বিদ্যমান মোট NFT-এর সংখ্যা দ্বারা নির্ধারিত হয়। উদাহরণস্বরূপ, আমাদের স্মার্ট কন্ট্রাক্ট দিয়ে আমরা যে প্রথম NFT মিন্ট করি তার ID হলো "1," আমাদের দ্বিতীয় NFT-এর ID হলো "2," ইত্যাদি।)
+
+- @openzeppelin/contracts/access/Ownable.sol আমাদের স্মার্ট কন্ট্রাক্ট-এ [অ্যাক্সেস কন্ট্রোল](https://docs.openzeppelin.com/contracts/3.x/access-control) সেট আপ করে, যাতে শুধুমাত্র স্মার্ট কন্ট্রাক্ট-এর মালিক (আপনি) NFT মিন্ট করতে পারেন। (নোট করুন, অ্যাক্সেস কন্ট্রোল অন্তর্ভুক্ত করা সম্পূর্ণ আপনার পছন্দ। আপনি যদি চান যে যেকেউ আপনার স্মার্ট কন্ট্রাক্ট ব্যবহার করে একটি NFT মিন্ট করতে পারুক, তবে 10 নম্বর লাইনে Ownable এবং 17 নম্বর লাইনে onlyOwner শব্দটি মুছে ফেলুন।)
+
+আমাদের ইমপোর্ট স্টেটমেন্টের পরে, আমাদের কাস্টম NFT স্মার্ট কন্ট্রাক্ট রয়েছে, যা আশ্চর্যজনকভাবে ছোট — এতে শুধুমাত্র একটি কাউন্টার, একটি কনস্ট্রাক্টর এবং একটি ফাংশন রয়েছে! এটি আমাদের ইনহেরিট করা OpenZeppelin কন্ট্রাক্টগুলোর কারণে সম্ভব হয়েছে, যা একটি NFT তৈরি করার জন্য আমাদের প্রয়োজনীয় বেশিরভাগ মেথড ইমপ্লিমেন্ট করে, যেমন `ownerOf` যা NFT-এর মালিককে রিটার্ন করে এবং `transferFrom`, যা একটি একাউন্ট থেকে অন্য একাউন্ট-এ NFT-এর মালিকানা স্থানান্তর করে।
+
+আমাদের ERC-721 কনস্ট্রাক্টরে, আপনি লক্ষ্য করবেন যে আমরা 2টি স্ট্রিং পাস করি, "MyNFT" এবং "NFT।" প্রথম ভেরিয়েবলটি হলো স্মার্ট কন্ট্রাক্ট-এর নাম এবং দ্বিতীয়টি হলো এর প্রতীক। আপনি আপনার ইচ্ছামতো এই ভেরিয়েবলগুলোর নাম দিতে পারেন!
+
+সবশেষে, আমাদের `mintNFT(address recipient, string memory tokenURI)` ফাংশন রয়েছে যা আমাদের একটি NFT মিন্ট করতে দেয়! আপনি লক্ষ্য করবেন যে এই ফাংশনটি দুটি ভেরিয়েবল নেয়:
+
+- `address recipient` সেই এডড্রেস নির্দিষ্ট করে যা আপনার নতুন মিন্ট করা NFT গ্রহণ করবে
+
+- `string memory tokenURI` হলো একটি স্ট্রিং যা একটি JSON ডকুমেন্টে রিজলভ হওয়া উচিত যা NFT-এর মেটাডেটা বর্ণনা করে। একটি NFT-এর মেটাডেটাই মূলত এটিকে জীবন্ত করে তোলে, এটিকে কনফিগারযোগ্য বৈশিষ্ট্য যেমন নাম, বিবরণ, ছবি এবং অন্যান্য অ্যাট্রিবিউট রাখার অনুমতি দেয়। এই টিউটোরিয়ালের পর্ব 2-এ, আমরা বর্ণনা করব কীভাবে এই মেটাডেটা কনফিগার করতে হয়।
+
+`mintNFT` ইনহেরিট করা ERC-721 লাইব্রেরি থেকে কিছু মেথড কল করে এবং শেষ পর্যন্ত একটি সংখ্যা রিটার্ন করে যা নতুন মিন্ট করা NFT-এর ID উপস্থাপন করে।
+
+## ধাপ 11: আপনার প্রজেক্টে MetaMask এবং Alchemy সংযুক্ত করুন {#connect-metamask-and-alchemy}
+
+এখন যেহেতু আমরা একটি MetaMask ওয়ালেট, Alchemy একাউন্ট তৈরি করেছি এবং আমাদের স্মার্ট কন্ট্রাক্ট লিখেছি, এখন এই তিনটিকে সংযুক্ত করার সময়।
+
+আপনার ভার্চুয়াল ওয়ালেট থেকে পাঠানো প্রতিটি লেনদেন-এর জন্য আপনার ইউনিক প্রাইভেট কি ব্যবহার করে একটি সিগনেচার প্রয়োজন। আমাদের প্রোগ্রামকে এই অনুমতি প্রদান করতে, আমরা নিরাপদে আমাদের প্রাইভেট কি (এবং Alchemy API কি) একটি এনভায়রনমেন্ট ফাইলে সংরক্ষণ করতে পারি।
+
+লেনদেন পাঠানো সম্পর্কে আরও জানতে, web3 ব্যবহার করে লেনদেন পাঠানোর উপর [এই টিউটোরিয়ালটি](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) দেখুন।
+
+প্রথমে, আপনার প্রজেক্ট ডিরেক্টরিতে dotenv প্যাকেজটি ইনস্টল করুন:
+
+ npm install dotenv --save
+
+তারপর, আমাদের প্রজেক্টের রুট ডিরেক্টরিতে একটি `.env` ফাইল তৈরি করুন এবং এতে আপনার MetaMask প্রাইভেট কি এবং HTTP Alchemy API URL যোগ করুন।
+
+- MetaMask থেকে আপনার প্রাইভেট কি এক্সপোর্ট করতে [এই নির্দেশাবলী](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) অনুসরণ করুন
+
+- HTTP Alchemy API URL পেতে নিচে দেখুন এবং এটি আপনার ক্লিপবোর্ডে কপি করুন
+
+
+
+আপনার `.env` এখন এইরকম দেখতে হওয়া উচিত:
+
+ API_URL="https://eth-sepolia.g.alchemy.com/v2/your-api-key"
+ PRIVATE_KEY="your-metamask-private-key"
+
+এগুলোকে আমাদের কোডের সাথে যুক্ত করতে, আমরা ধাপ 13-এ আমাদের hardhat.config.js ফাইলে এই ভেরিয়েবলগুলোর রেফারেন্স দেব।
+
+
+
+## ধাপ 12: Ethers.js ইনস্টল করুন {#install-ethers}
+
+Ethers.js হলো এমন একটি লাইব্রেরি যা [স্ট্যান্ডার্ড JSON-RPC মেথডগুলোকে](/developers/docs/apis/json-rpc/) আরও ব্যবহারকারী-বান্ধব মেথড দিয়ে র্যাপ করে ইথিরিয়াম-এর সাথে ইন্টারঅ্যাক্ট করা এবং রিকোয়েস্ট করা সহজ করে তোলে।
+
+Hardhat অতিরিক্ত টুলিং এবং বর্ধিত কার্যকারিতার জন্য [প্লাগইন](https://hardhat.org/plugins/) ইন্টিগ্রেট করা খুব সহজ করে তোলে। আমরা কন্ট্রাক্ট ডিপ্লয়মেন্টের জন্য [Ethers প্লাগইন](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers)-এর সুবিধা নেব ([Ethers.js](https://github.com/ethers-io/ethers.js/)-এ কিছু খুব পরিষ্কার কন্ট্রাক্ট ডিপ্লয়মেন্ট মেথড রয়েছে)।
+
+আপনার প্রজেক্ট ডিরেক্টরিতে টাইপ করুন:
+
+ npm install --save-dev @nomiclabs/hardhat-ethers ethers@^5.0.0
+
+পরবর্তী ধাপে আমাদের hardhat.config.js-এও ethers-এর প্রয়োজন হবে।
+
+## ধাপ 13: hardhat.config.js আপডেট করুন {#update-hardhat-config}
+
+আমরা এপর্যন্ত বেশ কয়েকটি ডিপেন্ডেন্সি এবং প্লাগইন যোগ করেছি, এখন আমাদের hardhat.config.js আপডেট করতে হবে যাতে আমাদের প্রজেক্ট সেগুলোর সব সম্পর্কে জানতে পারে।
+
+আপনার hardhat.config.js আপডেট করে এইরকম করুন:
+
+```js
+ /* *
+ * @type import('hardhat/config').HardhatUserConfig */
+ require('dotenv').config();
+ require("@nomiclabs/hardhat-ethers");
+ const { API_URL, PRIVATE_KEY } = process.env;
+ module.exports = {
+ solidity: "0.8.1",
+ defaultNetwork: "sepolia",
+ networks: {
+ hardhat: {},
+ sepolia: {
+ url: API_URL,
+ accounts: [`0x${PRIVATE_KEY}`]
+ }
+ },
+ }
+```
+
+## ধাপ 14: আমাদের কন্ট্রাক্ট কম্পাইল করুন {#compile-contract}
+
+এপর্যন্ত সবকিছু ঠিকঠাক কাজ করছে কিনা তা নিশ্চিত করতে, চলুন আমাদের কন্ট্রাক্ট কম্পাইল করি। কম্পাইল টাস্কটি বিল্ট-ইন hardhat টাস্কগুলোর মধ্যে একটি।
+
+কমান্ড লাইন থেকে রান করুন:
+
+ npx hardhat compile
+
+আপনি সোর্স ফাইলে SPDX লাইসেন্স আইডেন্টিফায়ার প্রদান না করা সম্পর্কে একটি সতর্কতা পেতে পারেন, তবে এটি নিয়ে চিন্তা করার দরকার নেই — আশা করি অন্য সবকিছু ঠিক আছে! যদি না হয়, তবে আপনি সবসময় [Alchemy discord](https://discord.gg/u72VCg3)-এ মেসেজ করতে পারেন।
+
+## ধাপ 15: আমাদের ডিপ্লয় স্ক্রিপ্ট লিখুন {#write-deploy}
+
+এখন যেহেতু আমাদের কন্ট্রাক্ট লেখা হয়েছে এবং আমাদের কনফিগারেশন ফাইল প্রস্তুত, এখন আমাদের কন্ট্রাক্ট ডিপ্লয় স্ক্রিপ্ট লেখার সময়।
+
+`scripts/` ফোল্ডারে যান এবং `deploy.js` নামে একটি নতুন ফাইল তৈরি করুন, এতে নিচের বিষয়বস্তু যোগ করুন:
+
+```js
+async function main() {
+ const MyNFT = await ethers.getContractFactory("MyNFT")
+
+ // ডিপ্লয়মেন্ট শুরু করুন, যা এমন একটি প্রমিস রিটার্ন করে যা একটি কন্ট্রাক্ট অবজেক্টে রিজলভ হয়
+ const myNFT = await MyNFT.deploy()
+ await myNFT.deployed()
+ console.log("Contract deployed to address:", myNFT.address)
+}
+
+main()
+ .then(() => process.exit(0))
+ .catch((error) => {
+ console.error(error)
+ process.exit(1)
+ })
+```
+
+Hardhat তাদের [কন্ট্রাক্ট টিউটোরিয়ালে](https://hardhat.org/tutorial/testing-contracts.html#writing-tests) এই কোডের প্রতিটি লাইন কী করে তা খুব ভালোভাবে ব্যাখ্যা করে, আমরা এখানে তাদের ব্যাখ্যাগুলো গ্রহণ করেছি।
+
+ const MyNFT = await ethers.getContractFactory("MyNFT");
+
+ethers.js-এ একটি ContractFactory হলো নতুন স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে ব্যবহৃত একটি অ্যাবস্ট্রাকশন, তাই এখানে MyNFT হলো আমাদের NFT কন্ট্রাক্ট-এর ইনস্ট্যান্সগুলোর জন্য একটি ফ্যাক্টরি। hardhat-ethers প্লাগইন ব্যবহার করার সময় ContractFactory এবং Contract ইনস্ট্যান্সগুলো ডিফল্টভাবে প্রথম সাইনারের সাথে সংযুক্ত থাকে।
+
+ const myNFT = await MyNFT.deploy();
+
+একটি ContractFactory-তে deploy() কল করলে ডিপ্লয়মেন্ট শুরু হবে এবং একটি Promise রিটার্ন করবে যা একটি Contract-এ রিজলভ হয়। এটি এমন একটি অবজেক্ট যার আমাদের প্রতিটি স্মার্ট কন্ট্রাক্ট ফাংশনের জন্য একটি মেথড রয়েছে।
+
+## ধাপ 16: আমাদের কন্ট্রাক্ট ডিপ্লয় করুন {#deploy-contract}
+
+আমরা অবশেষে আমাদের স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে প্রস্তুত! আপনার প্রজেক্ট ডিরেক্টরির রুটে ফিরে যান এবং কমান্ড লাইনে রান করুন:
+
+ npx hardhat --network sepolia run scripts/deploy.js
+
+এরপর আপনার এইরকম কিছু দেখা উচিত:
+
+ Contract deployed to address: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650
+
+যদি আমরা [Sepolia etherscan](https://sepolia.etherscan.io/)-এ যাই এবং আমাদের কন্ট্রাক্ট এডড্রেস সার্চ করি তবে আমাদের দেখতে পাওয়া উচিত যে এটি সফলভাবে ডিপ্লয় হয়েছে। যদি আপনি এটি সাথে সাথে দেখতে না পান, তবে অনুগ্রহ করে কিছুক্ষণ অপেক্ষা করুন কারণ এতে কিছুটা সময় লাগতে পারে। লেনদেন-টি এইরকম দেখতে হবে:
+
+
+
+From এডড্রেস-টি আপনার MetaMask একাউন্ট এডড্রেস-এর সাথে মিলতে হবে এবং To এডড্রেস-এ "Contract Creation" লেখা থাকবে। যদি আমরা লেনদেন-এ ক্লিক করি, তবে আমরা To ফিল্ডে আমাদের কন্ট্রাক্ট এডড্রেস দেখতে পাব:
+
+
+
+ইয়েস! আপনি এইমাত্র ইথিরিয়াম (টেস্টনেট) চেইনে আপনার NFT স্মার্ট কন্ট্রাক্ট ডিপ্লয় করেছেন!
+
+নেপথ্যে কী ঘটছে তা বুঝতে, চলুন আমাদের [Alchemy dashboard](https://dashboard.alchemyapi.io/explorer)-এর Explorer ট্যাবে যাই। যদি আপনার একাধিক Alchemy অ্যাপ থাকে তবে অ্যাপ অনুযায়ী ফিল্টার করতে ভুলবেন না এবং "MyNFT" নির্বাচন করুন।
+
+
+
+এখানে আপনি বেশ কয়েকটি JSON-RPC কল দেখতে পাবেন যা Hardhat/Ethers আমাদের জন্য নেপথ্যে করেছিল যখন আমরা .deploy() ফাংশনটি কল করেছিলাম। এখানে উল্লেখ করার মতো দুটি গুরুত্বপূর্ণ কল হলো [eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction), যা মূলত Sepolia চেইনে আমাদের স্মার্ট কন্ট্রাক্ট লেখার রিকোয়েস্ট এবং [eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash) যা হ্যাস দেওয়া থাকলে আমাদের লেনদেন সম্পর্কে তথ্য পড়ার একটি রিকোয়েস্ট (লেনদেন পাঠানোর সময় একটি সাধারণ প্যাটার্ন)। লেনদেন পাঠানো সম্পর্কে আরও জানতে, [Web3 ব্যবহার করে লেনদেন পাঠানোর](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) উপর এই টিউটোরিয়ালটি দেখুন।
+
+এই টিউটোরিয়ালের পর্ব 1-এর জন্য এটুকুই। [পর্ব 2-এ, আমরা একটি NFT মিন্ট করার মাধ্যমে আমাদের স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করব](/developers/tutorials/how-to-mint-an-nft/), এবং [পর্ব 3-এ আমরা আপনাকে দেখাব কীভাবে আপনার ইথিরিয়াম ওয়ালেট-এ আপনার NFT দেখতে হয়](/developers/tutorials/how-to-view-nft-in-metamask/)!
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/interact-with-other-contracts-from-solidity/index.md b/public/content/translations/bn/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
new file mode 100644
index 00000000000..0b4c0c6433b
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/interact-with-other-contracts-from-solidity/index.md
@@ -0,0 +1,173 @@
+---
+title: সলিডিটি থেকে অন্যান্য কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করুন
+description: একটি বিদ্যমান কন্ট্রাক্ট থেকে কীভাবে একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে হয় এবং এর সাথে ইন্টারঅ্যাক্ট করতে হয়
+author: "jdourlens"
+tags: ["স্মার্ট কন্ট্রাক্ট", "Solidity", "Remix", "ডিপ্লয়িং", "কম্পোজেবিলিটি"]
+skill: advanced
+breadcrumb: কন্ট্রাক্ট ইন্টারঅ্যাকশন
+lang: bn
+published: 2020-04-05
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/interact-with-other-contracts-from-solidity/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+আগের টিউটোরিয়ালগুলোতে আমরা [কীভাবে আপনার প্রথম স্মার্ট কন্ট্রাক্ট ডিপ্লয় করবেন](/developers/tutorials/deploying-your-first-smart-contract/) এবং এতে কিছু ফিচার যোগ করবেন যেমন [মডিফায়ার দিয়ে অ্যাক্সেস নিয়ন্ত্রণ করা](https://ethereumdev.io/organize-your-code-and-control-access-to-your-smart-contract-with-modifiers/) বা [Solidity-তে এরর হ্যান্ডলিং](https://ethereumdev.io/handle-errors-in-solidity-with-require-and-revert/) সম্পর্কে অনেক কিছু শিখেছি। এই টিউটোরিয়ালে আমরা শিখব কীভাবে একটি বিদ্যমান কন্ট্রাক্ট থেকে একটি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে হয় এবং এর সাথে ইন্টারঅ্যাক্ট করতে হয়।
+
+আমরা এমন একটি কন্ট্রাক্ট তৈরি করব যা যে কাউকে তার নিজস্ব `Counter` স্মার্ট কন্ট্রাক্ট তৈরি করার সুযোগ দেবে এর জন্য একটি ফ্যাক্টরি তৈরি করে, যার নাম হবে `CounterFactory`। প্রথমে এখানে আমাদের প্রাথমিক `Counter` স্মার্ট কন্ট্রাক্টের কোড দেওয়া হলো:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ uint256 private _count;
+ address private _owner;
+ address private _factory;
+
+
+ modifier onlyOwner(address caller) {
+ require(caller == _owner, "You're not the owner of the contract");
+ _;
+ }
+
+ modifier onlyFactory() {
+ require(msg.sender == _factory, "You need to use the factory");
+ _;
+ }
+
+ constructor(address owner) public {
+ _owner = owner;
+ _factory = msg.sender;
+ }
+
+ function getCount() public view returns (uint256) {
+ return _count;
+ }
+
+ function increment(address caller) public onlyFactory onlyOwner(caller) {
+ _count++;
+ }
+
+}
+```
+
+লক্ষ্য করুন যে আমরা ফ্যাক্টরির এডড্রেস এবং কন্ট্রাক্ট মালিকের এডড্রেস ট্র্যাক করার জন্য কন্ট্রাক্ট কোডটি সামান্য পরিবর্তন করেছি। যখন আপনি অন্য একটি কন্ট্রাক্ট থেকে একটি কন্ট্রাক্ট কোড কল করবেন, তখন msg.sender আমাদের কন্ট্রাক্ট ফ্যাক্টরির এডড্রেস নির্দেশ করবে। এটি **বোঝার জন্য সত্যিই একটি গুরুত্বপূর্ণ বিষয়** কারণ অন্যান্য কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি কন্ট্রাক্ট ব্যবহার করা একটি সাধারণ প্র্যাকটিস। তাই জটিল ক্ষেত্রে সেন্ডার কে সেদিকে আপনার খেয়াল রাখা উচিত।
+
+এর জন্য আমরা একটি `onlyFactory` মডিফায়ারও যোগ করেছি যা নিশ্চিত করে যে স্টেট পরিবর্তনকারী ফাংশনটি শুধুমাত্র সেই ফ্যাক্টরি দ্বারা কল করা যেতে পারে যা মূল কলারকে একটি প্যারামিটার হিসেবে পাস করবে।
+
+আমাদের নতুন `CounterFactory`-এর ভেতরে যা অন্যান্য সমস্ত Counter পরিচালনা করবে, আমরা একটি ম্যাপিং যোগ করব যা একজন মালিককে তার কাউন্টার কন্ট্রাক্টের এডড্রেসের সাথে যুক্ত করবে:
+
+```solidity
+mapping(address => Counter) _counters;
+```
+
+ইথিরিয়ামে, ম্যাপিং হলো জাভাস্ক্রিপ্টের অবজেক্টের সমতুল্য, এগুলো A টাইপের একটি কী-কে B টাইপের একটি ভ্যালুর সাথে ম্যাপ করতে সক্ষম করে। এই ক্ষেত্রে আমরা একজন মালিকের এডড্রেসকে তার Counter-এর ইনস্ট্যান্সের সাথে ম্যাপ করি।
+
+কারও জন্য একটি নতুন Counter ইনস্ট্যানশিয়েট করা দেখতে এরকম হবে:
+
+```solidity
+ function createCounter() public {
+ require (_counters[msg.sender] == Counter(0));
+ _counters[msg.sender] = new Counter(msg.sender);
+ }
+```
+
+আমরা প্রথমে চেক করি যে ওই ব্যক্তির কাছে ইতিমধ্যে একটি কাউন্টার আছে কিনা। যদি তার কাছে কোনো কাউন্টার না থাকে তবে আমরা তার এডড্রেসটি `Counter` কনস্ট্রাক্টরে পাস করে একটি নতুন কাউন্টার ইনস্ট্যানশিয়েট করি এবং নতুন তৈরি করা ইনস্ট্যান্সটি ম্যাপিংয়ে অ্যাসাইন করি।
+
+একটি নির্দিষ্ট Counter-এর কাউন্ট পেতে এটি দেখতে এরকম হবে:
+
+```solidity
+function getCount(address account) public view returns (uint256) {
+ require (_counters[account] != Counter(0));
+ return (_counters[account].getCount());
+}
+
+function getMyCount() public view returns (uint256) {
+ return (getCount(msg.sender));
+}
+```
+
+প্রথম ফাংশনটি চেক করে যে একটি নির্দিষ্ট এডড্রেসের জন্য Counter কন্ট্রাক্টটি বিদ্যমান কিনা এবং তারপর ইনস্ট্যান্স থেকে `getCount` মেথডটি কল করে। দ্বিতীয় ফাংশন: `getMyCount` হলো msg.sender-কে সরাসরি `getCount` ফাংশনে পাস করার একটি শর্টকাট।
+
+`increment` ফাংশনটি বেশ একই রকম তবে এটি মূল লেনদেন সেন্ডারকে `Counter` কন্ট্রাক্টে পাস করে:
+
+```solidity
+function increment() public {
+ require (_counters[msg.sender] != Counter(0));
+ Counter(_counters[msg.sender]).increment(msg.sender);
+ }
+```
+
+লক্ষ্য করুন যে যদি অনেকবার কল করা হয়, তবে আমাদের কাউন্টারটি সম্ভবত ওভারফ্লোর শিকার হতে পারে। এই সম্ভাব্য পরিস্থিতি থেকে রক্ষা পেতে আপনার যতটা সম্ভব [SafeMath লাইব্রেরি](https://ethereumdev.io/using-safe-math-library-to-prevent-from-overflows/) ব্যবহার করা উচিত।
+
+আমাদের কন্ট্রাক্ট ডিপ্লয় করতে, আপনাকে `CounterFactory` এবং `Counter` উভয়ের কোড প্রদান করতে হবে। উদাহরণস্বরূপ Remix-এ ডিপ্লয় করার সময় আপনাকে CounterFactory নির্বাচন করতে হবে।
+
+এখানে সম্পূর্ণ কোড দেওয়া হলো:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ uint256 private _count;
+ address private _owner;
+ address private _factory;
+
+
+ modifier onlyOwner(address caller) {
+ require(caller == _owner, "You're not the owner of the contract");
+ _;
+ }
+
+ modifier onlyFactory() {
+ require(msg.sender == _factory, "You need to use the factory");
+ _;
+ }
+
+ constructor(address owner) public {
+ _owner = owner;
+ _factory = msg.sender;
+ }
+
+ function getCount() public view returns (uint256) {
+ return _count;
+ }
+
+ function increment(address caller) public onlyFactory onlyOwner(caller) {
+ _count++;
+ }
+
+}
+
+contract CounterFactory {
+
+ mapping(address => Counter) _counters;
+
+ function createCounter() public {
+ require (_counters[msg.sender] == Counter(0));
+ _counters[msg.sender] = new Counter(msg.sender);
+ }
+
+ function increment() public {
+ require (_counters[msg.sender] != Counter(0));
+ Counter(_counters[msg.sender]).increment(msg.sender);
+ }
+
+ function getCount(address account) public view returns (uint256) {
+ require (_counters[account] != Counter(0));
+ return (_counters[account].getCount());
+ }
+
+ function getMyCount() public view returns (uint256) {
+ return (getCount(msg.sender));
+ }
+
+}
+```
+
+কম্পাইল করার পর, Remix ডিপ্লয় সেকশনে আপনি ডিপ্লয় করার জন্য ফ্যাক্টরিটি নির্বাচন করবেন:
+
+
+
+তারপর আপনি আপনার কন্ট্রাক্ট ফ্যাক্টরি নিয়ে কাজ করতে পারেন এবং ভ্যালু পরিবর্তন হচ্ছে কিনা তা চেক করতে পারেন। আপনি যদি একটি ভিন্ন এডড্রেস থেকে স্মার্ট কন্ট্রাক্টটি কল করতে চান তবে আপনাকে Remix-এর Account সিলেক্ট অপশনে এডড্রেসটি পরিবর্তন করতে হবে।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/ipfs-decentralized-ui/index.md b/public/content/translations/bn/developers/tutorials/ipfs-decentralized-ui/index.md
new file mode 100644
index 00000000000..ab1818bf90c
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/ipfs-decentralized-ui/index.md
@@ -0,0 +1,74 @@
+---
+title: ডিসেন্ট্রালাইজড ইউজার ইন্টারফেসের জন্য IPFS
+description: এই টিউটোরিয়ালটি পাঠকদের শেখায় কীভাবে একটি ডিএ্যাপের ইউজার ইন্টারফেস স্টোর করতে IPFS ব্যবহার করতে হয়। যদিও অ্যাপ্লিকেশনের ডেটা এবং বিজনেস লজিক ডিসেন্ট্রালাইজড, একটি সেন্সরশিপ প্রতিরোধী ইউজার ইন্টারফেস ছাড়া ব্যবহারকারীরা এতে অ্যাক্সেস হারাতে পারে।
+author: ওরি পোমেরান্টজ
+tags: ["ipfs", "ডিএ্যাপস", "ফ্রন্টএন্ড"]
+skill: beginner
+breadcrumb: ডিএ্যাপ UI-এর জন্য IPFS
+lang: bn
+published: 2024-06-29
+---
+
+আপনি একটি চমৎকার নতুন ডিএ্যাপ তৈরি করেছেন। এমনকি আপনি এর জন্য একটি [ইউজার ইন্টারফেস](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/)-ও লিখেছেন। কিন্তু এখন আপনার ভয় হচ্ছে যে কেউ হয়তো আপনার ইউজার ইন্টারফেসটি ডাউন করে দিয়ে এটিকে সেন্সর করার চেষ্টা করবে, যা ক্লাউডের একটি মাত্র সার্ভারে রয়েছে। এই টিউটোরিয়ালে আপনি শিখবেন কীভাবে আপনার ইউজার ইন্টারফেসটি **[ইন্টারপ্ল্যানেটারি ফাইল সিস্টেম (IPFS)](https://ipfs.tech/developers/)**-এ রেখে সেন্সরশিপ এড়ানো যায়, যাতে আগ্রহী যে কেউ ভবিষ্যতের অ্যাক্সেসের জন্য এটিকে একটি সার্ভারে পিন করতে পারে।
+
+আপনি সব কাজ করার জন্য [Fleek](https://resources.fleek.xyz/docs/)-এর মতো কোনো থার্ড-পার্টি সার্ভিস ব্যবহার করতে পারেন। এই টিউটোরিয়ালটি তাদের জন্য যারা একটু বেশি কাজ হলেও তারা কী করছেন তা বোঝার জন্য যথেষ্ট কাজ করতে চান।
+
+## লোকালি শুরু করা {#getting-started-locally}
+
+একাধিক [থার্ড-পার্টি IPFS প্রোভাইডার](https://docs.ipfs.tech/how-to/work-with-pinning-services/#use-a-third-party-pinning-service) রয়েছে, তবে টেস্টিংয়ের জন্য লোকালি IPFS রান করে শুরু করা সবচেয়ে ভালো।
+
+1. [IPFS ইউজার ইন্টারফেস](https://docs.ipfs.tech/install/ipfs-desktop/#install-instructions) ইনস্টল করুন।
+
+2. আপনার ওয়েবসাইট দিয়ে একটি ডিরেক্টরি তৈরি করুন। আপনি যদি [Vite](https://vite.dev/) ব্যবহার করেন, তবে এই কমান্ডটি ব্যবহার করুন:
+
+ ```sh
+ pnpm vite build
+ ```
+
+3. IPFS ডেস্কটপে, **Import > Folder**-এ ক্লিক করুন এবং আগের ধাপে তৈরি করা ডিরেক্টরিটি নির্বাচন করুন।
+
+4. আপনার আপলোড করা ফোল্ডারটি নির্বাচন করুন এবং **Rename**-এ ক্লিক করুন। এটিকে আরও অর্থবহ একটি নাম দিন।
+
+5. এটি আবার নির্বাচন করুন এবং **Share link**-এ ক্লিক করুন। URL-টি ক্লিপবোর্ডে কপি করুন। লিংকটি অনেকটা `https://ipfs.io/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`-এর মতো হবে।
+
+6. **Status**-এ ক্লিক করুন। গেটওয়ে এডড্রেস দেখতে **Advanced** ট্যাবটি প্রসারিত করুন। উদাহরণস্বরূপ, আমার সিস্টেমে এডড্রেসটি হলো `http://127.0.0.1:8080`।
+
+7. আপনার এডড্রেস খুঁজে পেতে লিংক ধাপের পাথের সাথে গেটওয়ে এডড্রেসটি যুক্ত করুন। উদাহরণস্বরূপ, উপরের উদাহরণের জন্য, URL-টি হলো `http://127.0.0.1:8080/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`। আপনার সাইট দেখতে একটি ব্রাউজারে সেই URL-টি খুলুন।
+
+## আপলোডিং {#uploading}
+
+সুতরাং এখন আপনি লোকালি ফাইল সার্ভ করতে IPFS ব্যবহার করতে পারেন, যা খুব একটা রোমাঞ্চকর নয়। পরবর্তী ধাপ হলো আপনি অফলাইনে থাকার সময়ও সেগুলোকে বিশ্বের জন্য সহজলভ্য করা।
+
+বেশ কিছু সুপরিচিত [পিনিং সার্ভিস](https://docs.ipfs.tech/concepts/persistence/#pinning-services) রয়েছে। সেগুলোর মধ্যে একটি বেছে নিন। আপনি যে সার্ভিসই ব্যবহার করুন না কেন, আপনাকে একটি একাউন্ট তৈরি করতে হবে এবং আপনার IPFS ডেস্কটপে থাকা **কন্টেন্ট আইডেন্টিফায়ার (CID)** প্রদান করতে হবে।
+
+ব্যক্তিগতভাবে, আমার কাছে [4EVERLAND](https://docs.4everland.org/storage/4ever-pin/guides) ব্যবহার করা সবচেয়ে সহজ মনে হয়েছে। এর জন্য নির্দেশনাগুলো নিচে দেওয়া হলো:
+
+1. [ড্যাশবোর্ড](https://dashboard.4everland.org/overview)-এ ব্রাউজ করুন এবং আপনার ওয়ালেট দিয়ে লগইন করুন।
+
+2. বাম দিকের সাইডবারে **Storage > 4EVER Pin**-এ ক্লিক করুন।
+
+3. **Upload > Selected CID**-এ ক্লিক করুন। আপনার কন্টেন্টের একটি নাম দিন এবং IPFS ডেস্কটপ থেকে CID প্রদান করুন। বর্তমানে একটি CID হলো এমন একটি স্ট্রিং যা `Qm` দিয়ে শুরু হয় এবং এর পরে 44টি অক্ষর ও সংখ্যা থাকে যা একটি [বেস-58 এনকোডেড](https://medium.com/bootdotdev/base64-vs-base58-encoding-c25553ff4524) হ্যাস উপস্থাপন করে, যেমন `QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`, তবে [এটি পরিবর্তন হওয়ার সম্ভাবনা রয়েছে](https://docs.ipfs.tech/concepts/content-addressing/#version-1-v1)।
+
+4. প্রাথমিক স্ট্যাটাস হলো **Queued**। এটি **Pinned**-এ পরিবর্তিত না হওয়া পর্যন্ত রিলোড করুন।
+
+5. লিংকটি পেতে আপনার CID-তে ক্লিক করুন। আপনি আমার অ্যাপ্লিকেশনটি [এখানে](https://bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im.ipfs.dweb.link/) দেখতে পারেন।
+
+6. এক মাসের বেশি সময় ধরে পিন করে রাখার জন্য আপনাকে হয়তো আপনার একাউন্টটি অ্যাক্টিভেট করতে হতে পারে। একাউন্ট অ্যাক্টিভেশনের খরচ প্রায় $1। আপনি যদি এটি বন্ধ করে থাকেন, তবে লগ আউট করে আবার লগ ইন করুন যাতে পুনরায় অ্যাক্টিভেট করার জন্য বলা হয়।
+
+## IPFS থেকে ব্যবহার করা {#using-from-ipfs}
+
+এই পর্যায়ে আপনার কাছে একটি সেন্ট্রালাইজড গেটওয়ের লিংক রয়েছে যা আপনার IPFS কন্টেন্ট সার্ভ করে। সংক্ষেপে, আপনার ইউজার ইন্টারফেসটি হয়তো কিছুটা নিরাপদ হতে পারে তবে এটি এখনও সেন্সরশিপ প্রতিরোধী নয়। প্রকৃত সেন্সরশিপ প্রতিরোধের জন্য, ব্যবহারকারীদের [সরাসরি ব্রাউজার থেকে](https://docs.ipfs.tech/install/ipfs-companion/#prerequisites) IPFS ব্যবহার করতে হবে।
+
+একবার আপনি সেটি ইনস্টল করলে (এবং ডেস্কটপ IPFS কাজ করলে), আপনি যেকোনো সাইটে [/ipfs/``](https://any.site/ipfs/bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im)-এ যেতে পারেন এবং আপনি সেই কন্টেন্টটি পাবেন, যা একটি ডিসেন্ট্রালাইজড উপায়ে সার্ভ করা হবে।
+
+## অসুবিধাগুলো {#drawbacks}
+
+আপনি নির্ভরযোগ্যভাবে IPFS ফাইলগুলো মুছে ফেলতে পারবেন না, তাই যতক্ষণ আপনি আপনার ইউজার ইন্টারফেস পরিবর্তন করছেন, সম্ভবত এটিকে সেন্ট্রালাইজড রাখাই ভালো, অথবা [ইন্টারপ্ল্যানেটারি নেম সিস্টেম (IPNS)](https://docs.ipfs.tech/concepts/ipns/#mutability-in-ipfs) ব্যবহার করা ভালো, যা IPFS-এর উপরে মিউটেবিলিটি প্রদান করে। অবশ্যই, পরিবর্তনযোগ্য যেকোনো কিছু সেন্সর করা যেতে পারে, IPNS-এর ক্ষেত্রে প্রাইভেট কি-এর অধিকারী ব্যক্তিকে চাপ প্রয়োগ করে এটি করা সম্ভব।
+
+এছাড়া, কিছু প্যাকেজের IPFS-এর সাথে সমস্যা রয়েছে, তাই আপনার ওয়েবসাইট যদি খুব জটিল হয় তবে এটি ভালো সমাধান নাও হতে পারে। এবং অবশ্যই, সার্ভার ইন্টিগ্রেশনের ওপর নির্ভরশীল কোনো কিছু শুধুমাত্র ক্লায়েন্ট সাইড IPFS-এ রেখে ডিসেন্ট্রালাইজড করা যায় না।
+
+## উপসংহার {#conclusion}
+
+ইথিরিয়াম যেমন আপনাকে আপনার ডিএ্যাপের ডাটাবেস এবং বিজনেস লজিকের দিকগুলো ডিসেন্ট্রালাইজড করতে দেয়, তেমনি IPFS আপনাকে ইউজার ইন্টারফেস ডিসেন্ট্রালাইজড করতে দেয়। এটি আপনাকে আপনার ডিএ্যাপের বিরুদ্ধে আরও একটি অ্যাটাক ভেক্টর বন্ধ করতে সাহায্য করে।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md b/public/content/translations/bn/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md
new file mode 100644
index 00000000000..bc3fe70c03e
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md
@@ -0,0 +1,106 @@
+---
+title: create-eth-app এর মাধ্যমে আপনার ডিএ্যাপ ফ্রন্টএন্ড ডেভেলপমেন্ট শুরু করুন
+description: create-eth-app কীভাবে ব্যবহার করবেন এবং এর বৈশিষ্ট্যগুলোর একটি ওভারভিউ
+author: "মার্কাস ওয়াস"
+tags:
+ ["ফ্রন্টএন্ড", "javascript", "ethers.js", "the graph", "defi"]
+skill: beginner
+breadcrumb: create-eth-app
+lang: bn
+published: 2020-04-27
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/create-eth-app
+---
+
+গতবার আমরা [Solidity এর সামগ্রিক চিত্র](https://soliditydeveloper.com/solidity-overview-2020) দেখেছিলাম এবং ইতিমধ্যেই [create-eth-app](https://github.com/PaulRBerg/create-eth-app) এর কথা উল্লেখ করেছি। এখন আপনি জানতে পারবেন কীভাবে এটি ব্যবহার করতে হয়, এতে কী কী বৈশিষ্ট্য যুক্ত করা হয়েছে এবং কীভাবে এটিকে আরও সম্প্রসারিত করা যায় সে সম্পর্কে অতিরিক্ত ধারণা। [Sablier](http://sablier.com/) এর প্রতিষ্ঠাতা Paul Razvan Berg দ্বারা শুরু করা এই অ্যাপটি আপনার ফ্রন্টএন্ড ডেভেলপমেন্ট শুরু করতে সাহায্য করবে এবং এতে বেছে নেওয়ার জন্য বেশ কয়েকটি ঐচ্ছিক ইন্টিগ্রেশন রয়েছে।
+
+## ইনস্টলেশন {#installation}
+
+ইনস্টলেশনের জন্য Yarn 0.25 বা তার ওপরের ভার্সন প্রয়োজন (`npm install yarn --global`)। এটি রান করা খুবই সহজ:
+
+```bash
+yarn create eth-app my-eth-app
+cd my-eth-app
+yarn react-app:start
+```
+
+এটি ব্যাকগ্রাউন্ডে [create-react-app](https://github.com/facebook/create-react-app) ব্যবহার করছে। আপনার অ্যাপটি দেখতে `http://localhost:3000/` খুলুন। যখন আপনি প্রোডাকশনে ডিপ্লয় করার জন্য প্রস্তুত হবেন, তখন yarn build দিয়ে একটি মিনিফাইড বান্ডেল তৈরি করুন। এটি হোস্ট করার একটি সহজ উপায় হতে পারে [Netlify](https://www.netlify.com/)। আপনি একটি GitHub রিপো তৈরি করতে পারেন, এটি Netlify-তে যুক্ত করতে পারেন, বিল্ড কমান্ড সেটআপ করতে পারেন এবং আপনার কাজ শেষ! আপনার অ্যাপটি হোস্ট করা হবে এবং সবার ব্যবহারের জন্য উন্মুক্ত হবে। আর এর পুরোটাই একদম বিনামূল্যে।
+
+## বৈশিষ্ট্যসমূহ {#features}
+
+### React এবং create-react-app {#react--create-react-app}
+
+প্রথমেই অ্যাপটির মূল অংশ: React এবং _create-react-app_ এর সাথে আসা সমস্ত অতিরিক্ত বৈশিষ্ট্য। আপনি যদি ইথিরিয়াম ইন্টিগ্রেট করতে না চান, তবে শুধুমাত্র এটি ব্যবহার করা একটি দুর্দান্ত বিকল্প। [React](https://react.dev/) নিজেই ইন্টারেক্টিভ UI তৈরি করা খুব সহজ করে তোলে। এটি হয়তো [Vue](https://vuejs.org/) এর মতো নতুনদের জন্য ততটা সহজ নয়, তবে এটি এখনও সবচেয়ে বেশি ব্যবহৃত হয়, এতে আরও বেশি বৈশিষ্ট্য রয়েছে এবং সবচেয়ে গুরুত্বপূর্ণ হলো বেছে নেওয়ার জন্য হাজার হাজার অতিরিক্ত লাইব্রেরি রয়েছে। _create-react-app_ এর মাধ্যমে কাজ শুরু করাও খুব সহজ এবং এর মধ্যে অন্তর্ভুক্ত রয়েছে:
+
+- React, JSX, ES6, TypeScript, Flow সিনট্যাক্স সাপোর্ট।
+- ES6 এর বাইরের ল্যাঙ্গুয়েজ এক্সট্রা যেমন অবজেক্ট স্প্রেড অপারেটর।
+- অটোপ্রিফিক্সড CSS, তাই আপনার -webkit- বা অন্যান্য প্রিফিক্সের প্রয়োজন নেই।
+- কভারেজ রিপোর্টিংয়ের জন্য বিল্ট-ইন সাপোর্টসহ একটি দ্রুত ইন্টারেক্টিভ ইউনিট টেস্ট রানার।
+- একটি লাইভ ডেভেলপমেন্ট সার্ভার যা সাধারণ ভুলগুলো সম্পর্কে সতর্ক করে।
+- প্রোডাকশনের জন্য JS, CSS এবং ইমেজগুলোকে হ্যাশ এবং সোর্সম্যাপসহ বান্ডেল করার জন্য একটি বিল্ড স্ক্রিপ্ট।
+
+বিশেষ করে _create-eth-app_ নতুন [hooks effects](https://legacy.reactjs.org/docs/hooks-effect.html) ব্যবহার করছে। এটি শক্তিশালী, অথচ খুব ছোট ফাংশনাল কম্পোনেন্ট লেখার একটি পদ্ধতি। _create-eth-app_ এ এগুলো কীভাবে ব্যবহৃত হয় তা জানতে নিচের Apollo সম্পর্কিত সেকশনটি দেখুন।
+
+### Yarn Workspaces {#yarn-workspaces}
+
+[Yarn Workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) আপনাকে একাধিক প্যাকেজ রাখার সুবিধা দেয়, তবে আপনি রুট ফোল্ডার থেকে সেগুলোর সবগুলো পরিচালনা করতে পারবেন এবং `yarn install` ব্যবহার করে একবারে সবগুলোর জন্য ডিপেন্ডেন্সি ইনস্টল করতে পারবেন। এটি বিশেষ করে ছোট অতিরিক্ত প্যাকেজগুলোর জন্য বেশ কার্যকর, যেমন স্মার্ট কন্ট্রাক্ট এডড্রেস/ABI ম্যানেজমেন্ট (আপনি কোথায় কোন স্মার্ট কন্ট্রাক্ট ডিপ্লয় করেছেন এবং কীভাবে সেগুলোর সাথে যোগাযোগ করবেন তার তথ্য) বা গ্রাফ ইন্টিগ্রেশন, যার উভয়ই `create-eth-app` এর অংশ।
+
+### ethers.js {#ethersjs}
+
+যদিও [Web3](https://docs.web3js.org/) এখনও সবচেয়ে বেশি ব্যবহৃত হয়, তবে গত এক বছরে বিকল্প হিসেবে [ethers.js](https://docs.ethers.io/) অনেক বেশি জনপ্রিয়তা পেয়েছে এবং এটি _create-eth-app_ এ ইন্টিগ্রেট করা হয়েছে। আপনি এটি নিয়ে কাজ করতে পারেন, এটিকে Web3 তে পরিবর্তন করতে পারেন অথবা [ethers.js v5](https://docs.ethers.org/v5/) এ আপগ্রেড করার কথা বিবেচনা করতে পারেন যা প্রায় বিটা পর্যায় পার করে ফেলেছে।
+
+### The Graph {#the-graph}
+
+[Restful API](https://restfulapi.net/) এর তুলনায় ডেটা হ্যান্ডেল করার একটি বিকল্প উপায় হলো [GraphQL](https://graphql.org/)। Restful API এর তুলনায় এগুলোর বেশ কিছু সুবিধা রয়েছে, বিশেষ করে ডিসেন্ট্রালাইজড ব্লকচেইন ডেটার ক্ষেত্রে। আপনি যদি এর পেছনের কারণ সম্পর্কে আগ্রহী হন, তবে [GraphQL Will Power the Decentralized Web](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a) লেখাটি দেখতে পারেন।
+
+সাধারণত আপনি সরাসরি আপনার স্মার্ট কন্ট্রাক্ট থেকে ডেটা ফেচ করে থাকেন। সর্বশেষ ট্রেডের সময় জানতে চান? শুধু `MyContract.methods.latestTradeTime().call()` কল করুন যা একটি ইথিরিয়াম নোড থেকে আপনার ডিএ্যাপ এ ডেটা ফেচ করে। কিন্তু যদি আপনার শত শত ভিন্ন ডেটা পয়েন্টের প্রয়োজন হয়? এর ফলে নোড এ শত শত ডেটা ফেচ করতে হবে, প্রতিবার একটি [RTT](https://wikipedia.org/wiki/Round-trip_delay_time) এর প্রয়োজন হবে যা আপনার ডিএ্যাপ কে ধীর এবং অদক্ষ করে তুলবে। এর একটি সমাধান হতে পারে আপনার কন্ট্রাক্টের ভেতরে একটি ফেচার কল ফাংশন ব্যবহার করা যা একবারে একাধিক ডেটা রিটার্ন করে। তবে এটি সবসময় আদর্শ নয়।
+
+এছাড়া আপনি হয়তো ঐতিহাসিক ডেটার প্রতিও আগ্রহী হতে পারেন। আপনি শুধু সর্বশেষ ট্রেডের সময়ই নয়, বরং আপনার করা সমস্ত ট্রেডের সময় জানতে চান। _create-eth-app_ সাবগ্রাফ প্যাকেজটি ব্যবহার করুন, [ডকুমেন্টেশন](https://thegraph.com/docs/en/subgraphs/developing/creating/starting-your-subgraph) পড়ুন এবং এটিকে আপনার নিজের কন্ট্রাক্টগুলোর সাথে মানিয়ে নিন। আপনি যদি জনপ্রিয় স্মার্ট কন্ট্রাক্ট খুঁজছেন, তবে হয়তো ইতিমধ্যেই একটি সাবগ্রাফ থাকতে পারে। [সাবগ্রাফ এক্সপ্লোরার](https://thegraph.com/explorer/) চেক করে দেখুন।
+
+একবার আপনার কাছে একটি সাবগ্রাফ থাকলে, এটি আপনাকে আপনার ডিএ্যাপ এ একটি সাধারণ কোয়েরি লেখার সুযোগ দেয় যা আপনার প্রয়োজনীয় ঐতিহাসিক ডেটাসহ সমস্ত গুরুত্বপূর্ণ ব্লকচেইন ডেটা নিয়ে আসে, যার জন্য শুধুমাত্র একটি ফেচ প্রয়োজন।
+
+### Apollo {#apollo}
+
+[Apollo Boost](https://www.apollographql.com/docs/react/get-started/) ইন্টিগ্রেশনের কারণে আপনি সহজেই আপনার React ডিএ্যাপ এ গ্রাফ ইন্টিগ্রেট করতে পারবেন। বিশেষ করে যখন [React hooks এবং Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks) ব্যবহার করা হয়, তখন ডেটা ফেচ করা আপনার কম্পোনেন্টে একটি মাত্র GraphQl কোয়েরি লেখার মতোই সহজ:
+
+```js
+const { loading, error, data } = useQuery(myGraphQlQuery)
+
+React.useEffect(() => {
+ if (!loading && !error && data) {
+ console.log({ data })
+ }
+}, [loading, error, data])
+```
+
+## টেমপ্লেটসমূহ {#templates}
+
+এর পাশাপাশি আপনি বেশ কয়েকটি ভিন্ন টেমপ্লেট থেকে বেছে নিতে পারেন। এখন পর্যন্ত আপনি Aave, Compound, UniSwap বা sablier ইন্টিগ্রেশন ব্যবহার করতে পারেন। এগুলো সবই আগে থেকে তৈরি সাবগ্রাফ ইন্টিগ্রেশনের পাশাপাশি গুরুত্বপূর্ণ সার্ভিস স্মার্ট কন্ট্রাক্ট এডড্রেস যুক্ত করে। শুধু ক্রিয়েশন কমান্ডে টেমপ্লেটটি যুক্ত করুন, যেমন `yarn create eth-app my-eth-app --with-template aave`।
+
+### Aave {#aave}
+
+[Aave](https://aave.com/) হলো একটি ডিসেন্ট্রালাইজড অর্থ ধার দেওয়ার মার্কেট। আমানতকারীরা প্যাসিভ ইনকাম করার জন্য মার্কেটে লিকুইডিটি প্রদান করে, অন্যদিকে ঋণগ্রহীতারা কোল্যাটারাল ব্যবহার করে ঋণ নিতে পারে। Aave এর একটি অনন্য বৈশিষ্ট্য হলো [ফ্ল্যাশ লোন](https://aave.com/docs/developers/flash-loans) যা আপনাকে কোনো কোল্যাটারাল ছাড়াই অর্থ ধার করার সুযোগ দেয়, শর্ত থাকে যে আপনাকে একটি লেনদেন এর মধ্যেই ঋণ ফেরত দিতে হবে। এটি উদাহরণস্বরূপ আরবিট্রেজ ট্রেডিংয়ে আপনাকে অতিরিক্ত নগদ অর্থ প্রদানের জন্য কার্যকর হতে পারে।
+
+যেসব ট্রেড করা টোকেন আপনাকে সুদ প্রদান করে সেগুলোকে _aTokens_ বলা হয়।
+
+যখন আপনি _create-eth-app_ এর সাথে Aave ইন্টিগ্রেট করার সিদ্ধান্ত নেন, তখন আপনি একটি [সাবগ্রাফ ইন্টিগ্রেশন](https://docs.aave.com/developers/getting-started/using-graphql) পাবেন। Aave The Graph ব্যবহার করে এবং ইতিমধ্যেই আপনাকে [Ropsten](https://thegraph.com/explorer/subgraph/aave/protocol-ropsten) এবং [মেইননেট](https://thegraph.com/explorer/subgraph/aave/protocol) এ [র (raw)](https://thegraph.com/explorer/subgraph/aave/protocol-raw) বা [ফরম্যাটেড](https://thegraph.com/explorer/subgraph/aave/protocol) আকারে বেশ কয়েকটি ব্যবহারের জন্য প্রস্তুত সাবগ্রাফ প্রদান করে।
+
+
+
+### Compound {#compound}
+
+[Compound](https://compound.finance/) অনেকটা Aave এর মতোই। এই ইন্টিগ্রেশনে ইতিমধ্যেই নতুন [Compound v2 Subgraph](https://medium.com/graphprotocol/https-medium-com-graphprotocol-compound-v2-subgraph-highlight-a5f38f094195) অন্তর্ভুক্ত রয়েছে। এখানে সুদ অর্জনকারী টোকেন গুলোকে আশ্চর্যজনকভাবে _cTokens_ বলা হয়।
+
+### Uniswap {#uniswap}
+
+[Uniswap](https://uniswap.exchange/) হলো একটি ডিসেন্ট্রালাইজড এক্সচেঞ্জ (DEX)। লিকুইডিটি প্রদানকারীরা ট্রেডের উভয় পক্ষের জন্য প্রয়োজনীয় টোকেন বা ইথার প্রদান করে ফি উপার্জন করতে পারে। এটি ব্যাপকভাবে ব্যবহৃত হয় এবং তাই বিভিন্ন ধরণের টোকেন এর জন্য এর লিকুইডিটি সবচেয়ে বেশি। আপনি সহজেই এটিকে আপনার ডিএ্যাপ এ ইন্টিগ্রেট করতে পারেন, উদাহরণস্বরূপ, ব্যবহারকারীদের তাদের ETH এর বদলে DAI সোয়াপ করার সুযোগ দিতে।
+
+দুর্ভাগ্যবশত, এই লেখাটি লেখার সময় ইন্টিগ্রেশনটি শুধুমাত্র Uniswap v1 এর জন্য, [সদ্য প্রকাশিত v2](https://uniswap.org/blog/uniswap-v2/) এর জন্য নয়।
+
+### Sablier {#sablier}
+
+[Sablier](https://sablier.com/) ব্যবহারকারীদের স্ট্রিমিং মানি পেমেন্টের সুবিধা দেয়। একটি নির্দিষ্ট বেতনের দিনের পরিবর্তে, প্রাথমিক সেটআপের পর কোনো অতিরিক্ত পরিচালনা ছাড়াই আপনি প্রতিনিয়ত আপনার অর্থ পেতে থাকেন। এই ইন্টিগ্রেশনে এর [নিজস্ব সাবগ্রাফ](https://thegraph.com/explorer/subgraph/sablierhq/sablier) অন্তর্ভুক্ত রয়েছে।
+
+## এরপর কী? {#whats-next}
+
+আপনার যদি _create-eth-app_ সম্পর্কে কোনো প্রশ্ন থাকে, তবে [Sablier কমিউনিটি সার্ভারে](https://discord.gg/bsS8T47) যান, যেখানে আপনি _create-eth-app_ এর লেখকদের সাথে যোগাযোগ করতে পারবেন। পরবর্তী কিছু প্রাথমিক পদক্ষেপ হিসেবে আপনি [Material UI](https://mui.com/material-ui/) এর মতো একটি UI ফ্রেমওয়ার্ক ইন্টিগ্রেট করতে চাইতে পারেন, আপনার প্রয়োজনীয় ডেটার জন্য GraphQL কোয়েরি লিখতে পারেন এবং ডিপ্লয়মেন্ট সেটআপ করতে পারেন।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/public/content/translations/bn/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
new file mode 100644
index 00000000000..9453286f9f2
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
@@ -0,0 +1,270 @@
+---
+title: এসকিউএল (SQL) দিয়ে ইথিরিয়ামের মৌলিক বিষয়গুলো শিখুন
+description: এই টিউটোরিয়ালটি পাঠকদের স্ট্রাকচার্ড কোয়েরি ল্যাঙ্গুয়েজ (SQL) দিয়ে অনচেইন ডাটা কোয়েরি করার মাধ্যমে লেনদেন, ব্লকস এবং গ্যাস সহ ইথিরিয়ামের মৌলিক ধারণাগুলো বুঝতে সাহায্য করে।
+author: "পল এপিভ্যাট"
+tags: ["SQL", "কোয়েরিং", "লেনদেন", "ডাটা এবং এনালাইটিক্স"]
+skill: beginner
+breadcrumb: এসকিউএল (SQL) এর সাথে ইথিরিয়াম
+lang: bn
+published: 2021-05-11
+source: paulapivat.com
+sourceUrl: https://paulapivat.com/post/query_ethereum/
+---
+
+অনেক ইথিরিয়াম টিউটোরিয়াল ডেভেলপারদের লক্ষ্য করে তৈরি করা হয়, কিন্তু ডাটা অ্যানালিস্টদের জন্য বা যারা কোনো ক্লায়েন্ট বা নোড না চালিয়ে অনচেইন ডাটা দেখতে চান তাদের জন্য শিক্ষামূলক রিসোর্সের অভাব রয়েছে।
+
+এই টিউটোরিয়ালটি পাঠকদের [Dune Analytics](https://dune.com/)-এর দেওয়া একটি ইন্টারফেসের মাধ্যমে স্ট্রাকচার্ড কোয়েরি ল্যাঙ্গুয়েজ (SQL) দিয়ে অনচেইন ডাটা কোয়েরি করে লেনদেন, ব্লকস এবং গ্যাস সহ ইথিরিয়ামের মৌলিক ধারণাগুলো বুঝতে সাহায্য করে।
+
+অনচেইন ডাটা আমাদের ইথিরিয়াম, নেটওয়ার্ক এবং কম্পিউটিং পাওয়ারের একটি অর্থনীতি হিসেবে বুঝতে সাহায্য করতে পারে। এটি বর্তমানে ইথিরিয়ামের সম্মুখীন হওয়া চ্যালেঞ্জগুলো (যেমন, ক্রমবর্ধমান গ্যাস প্রাইস) এবং আরও গুরুত্বপূর্ণভাবে, স্কেলিং সমাধানগুলোর আলোচনা বোঝার ভিত্তি হিসেবে কাজ করা উচিত।
+
+### লেনদেন {#transactions}
+
+ইথিরিয়ামে একজন ব্যবহারকারীর যাত্রা শুরু হয় একটি ব্যবহারকারী-নিয়ন্ত্রিত একাউন্ট বা ETH ব্যালেন্স সহ একটি সত্তা চালু করার মাধ্যমে। দুই ধরনের একাউন্ট রয়েছে - ব্যবহারকারী-নিয়ন্ত্রিত বা একটি স্মার্ট কন্ট্রাক্ট ([ethereum.org](/developers/docs/accounts/) দেখুন)।
+
+যেকোনো একাউন্ট [Etherscan](https://etherscan.io/) বা [Blockscout](https://eth.blockscout.com/)-এর মতো ব্লক এক্সপ্লোরার-এ দেখা যেতে পারে। ব্লক এক্সপ্লোরার হলো ইথিরিয়ামের ডাটার একটি পোর্টাল। এগুলো রিয়েল-টাইমে ব্লকস, লেনদেন, মাইনার, একাউন্ট এবং অন্যান্য অনচেইন কার্যকলাপের ডাটা প্রদর্শন করে ([এখানে](/developers/docs/data-and-analytics/block-explorers/) দেখুন)।
+
+তবে, একজন ব্যবহারকারী এক্সটার্নাল ব্লক এক্সপ্লোরারগুলোর দেওয়া তথ্যের সাথে মিলিয়ে দেখার জন্য সরাসরি ডাটা কোয়েরি করতে চাইতে পারেন। [Dune Analytics](https://dune.com/) এসকিউএল (SQL) সম্পর্কে কিছুটা ধারণা থাকা যে কাউকেই এই সুবিধা প্রদান করে।
+
+রেফারেন্সের জন্য, ইথিরিয়াম ফাউন্ডেশন (EF)-এর স্মার্ট কন্ট্রাক্ট একাউন্টটি [Blockscout](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)-এ দেখা যেতে পারে।
+
+একটি বিষয় লক্ষণীয় যে, EF-এর একাউন্ট সহ সব একাউন্টেরই একটি পাবলিক এডড্রেস থাকে যা লেনদেন পাঠাতে এবং গ্রহণ করতে ব্যবহার করা যেতে পারে।
+
+Etherscan-এ একাউন্ট ব্যালেন্সে সাধারণ লেনদেন এবং ইন্টারনাল লেনদেন অন্তর্ভুক্ত থাকে। ইন্টারনাল লেনদেন, নাম সত্ত্বেও, _প্রকৃত_ লেনদেন নয় যা চেইনের স্টেট পরিবর্তন করে। এগুলো হলো একটি কন্ট্রাক্ট এক্সিকিউট করার মাধ্যমে শুরু হওয়া ভ্যালু ট্রান্সফার ([সোর্স](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions))। যেহেতু ইন্টারনাল লেনদেনের কোনো সিগনেচার থাকে না, তাই এগুলো ব্লকচেইন-এ অন্তর্ভুক্ত হয় **না** এবং Dune Analytics দিয়ে কোয়েরি করা যায় না।
+
+তাই, এই টিউটোরিয়ালটি সাধারণ লেনদেনের ওপর ফোকাস করবে। এটি এভাবে কোয়েরি করা যেতে পারে:
+
+```sql
+WITH temp_table AS (
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ value / 1e18 AS ether,
+ gas_used,
+ gas_price / 1e9 AS gas_price_gwei
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+)
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ ether,
+ (gas_used * gas_price_gwei) / 1e9 AS txn_fee
+FROM temp_table
+```
+
+এটি Etherscan-এর লেনদেন পেজে দেওয়া তথ্যের মতোই একই তথ্য প্রদান করবে। তুলনার জন্য, এখানে দুটি সোর্স দেওয়া হলো:
+
+#### Etherscan {#etherscan}
+
+
+
+[Blockscout-এ EF-এর কন্ট্রাক্ট পেজ।](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)
+
+#### Dune Analytics {#dune-analytics}
+
+
+
+আপনি ড্যাশবোর্ডটি [এখানে](https://dune.com/paulapivat/Learn-Ethereum) খুঁজে পেতে পারেন। কোয়েরি দেখতে টেবিলটিতে ক্লিক করুন (উপরেও দেখুন)।
+
+### লেনদেন বিশ্লেষণ করা {#breaking_down_transactions}
+
+একটি সাবমিট করা লেনদেনে বেশ কিছু তথ্য অন্তর্ভুক্ত থাকে, যার মধ্যে রয়েছে ([সোর্স](/developers/docs/transactions/)):
+
+- **প্রাপক (Recipient)**: গ্রহণকারী এডড্রেস ("to" হিসেবে কোয়েরি করা হয়)
+- **সিগনেচার (Signature)**: যদিও একজন প্রেরকের প্রাইভেট কি একটি লেনদেনে সাইন করে, আমরা এসকিউএল (SQL) দিয়ে যা কোয়েরি করতে পারি তা হলো প্রেরকের পাবলিক এডড্রেস ("from")।
+- **ভ্যালু (Value)**: এটি হলো ট্রান্সফার করা ETH-এর পরিমাণ (`ether` কলাম দেখুন)।
+- **ডাটা (Data)**: এটি হলো আরবিট্রারি ডাটা যা হ্যাস করা হয়েছে (`data` কলাম দেখুন)
+- **গ্যাস লিমিট (gasLimit)** – লেনদেনের মাধ্যমে ব্যবহার করা যেতে পারে এমন গ্যাস ইউনিটের সর্বোচ্চ পরিমাণ। গ্যাসের ইউনিটগুলো কম্পিউটেশনাল ধাপগুলোকে উপস্থাপন করে
+- **maxPriorityFeePerGas** - মাইনারকে বকশিশ হিসেবে দেওয়ার জন্য অন্তর্ভুক্ত করা গ্যাসের সর্বোচ্চ পরিমাণ
+- **maxFeePerGas** - লেনদেনের জন্য পরিশোধ করতে ইচ্ছুক গ্যাসের সর্বোচ্চ পরিমাণ (baseFeePerGas এবং maxPriorityFeePerGas সহ)
+
+আমরা ইথিরিয়াম ফাউন্ডেশনের পাবলিক এডড্রেস-এ হওয়া লেনদেনের জন্য এই নির্দিষ্ট তথ্যগুলো কোয়েরি করতে পারি:
+
+```sql
+SELECT
+ "to",
+ "from",
+ value / 1e18 AS ether,
+ data,
+ gas_limit,
+ gas_price / 1e9 AS gas_price_gwei,
+ gas_used,
+ ROUND(((gas_used / gas_limit) * 100),2) AS gas_used_pct
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### ব্লকস {#blocks}
+
+প্রতিটি লেনদেন ইথিরিয়াম ভার্চুয়াল মেশিন ([EVM](/developers/docs/evm/))-এর স্টেট পরিবর্তন করবে ([সোর্স](/developers/docs/transactions/))। লেনদেনগুলো যাচাই করার জন্য এবং একটি ব্লকে অন্তর্ভুক্ত করার জন্য নেটওয়ার্ক-এ ব্রডকাস্ট করা হয়। প্রতিটি লেনদেন একটি ব্লক নম্বরের সাথে যুক্ত থাকে। ডাটা দেখতে, আমরা একটি নির্দিষ্ট ব্লক নম্বর কোয়েরি করতে পারি: 12396854 (এই লেখাটি তৈরি করার সময়, 11/5/21 পর্যন্ত ইথিরিয়াম ফাউন্ডেশনের লেনদেনগুলোর মধ্যে সবচেয়ে সাম্প্রতিক ব্লক)।
+
+তাছাড়া, যখন আমরা পরবর্তী দুটি ব্লক কোয়েরি করি, তখন আমরা দেখতে পাই যে প্রতিটি ব্লকে আগের ব্লকের হ্যাস (অর্থাৎ, প্যারেন্ট হ্যাস) থাকে, যা ব্লকচেইন কীভাবে গঠিত হয় তা তুলে ধরে।
+
+প্রতিটি ব্লকে এর প্যারেন্ট ব্লকের একটি রেফারেন্স থাকে। এটি নিচে `hash` এবং `parent_hash` কলামের মধ্যে দেখানো হয়েছে ([সোর্স](/developers/docs/blocks/)):
+
+
+
+এখানে Dune Analytics-এ [কোয়েরিটি](https://dune.com/queries/44856/88292) দেওয়া হলো:
+
+```sql
+SELECT
+ time,
+ number,
+ hash,
+ parent_hash,
+ nonce
+FROM ethereum."blocks"
+WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856
+LIMIT 10
+```
+
+আমরা সময়, ব্লক নম্বর, ডিফিকাল্টি, হ্যাস, প্যারেন্ট হ্যাস এবং নন্স কোয়েরি করে একটি ব্লক পরীক্ষা করতে পারি।
+
+এই কোয়েরিটি শুধুমাত্র যে বিষয়টি কভার করে না তা হলো _লেনদেনের তালিকা_ যার জন্য নিচে একটি আলাদা কোয়েরি প্রয়োজন এবং _স্টেট রুট_। একটি ফুল বা আর্কাইভাল নোড সমস্ত লেনদেন এবং স্টেট ট্রানজিশন সংরক্ষণ করবে, যা ক্লায়েন্ট-দের যেকোনো সময় চেইনের স্টেট কোয়েরি করার অনুমতি দেয়। যেহেতু এর জন্য বড় স্টোরেজ স্পেস প্রয়োজন, তাই আমরা চেইন ডাটাকে স্টেট ডাটা থেকে আলাদা করতে পারি:
+
+- চেইন ডাটা (ব্লকস, লেনদেনের তালিকা)
+- স্টেট ডাটা (প্রতিটি লেনদেনের স্টেট ট্রানজিশনের ফলাফল)
+
+স্টেট রুট শেষেরটির মধ্যে পড়ে এবং এটি হলো _ইমপ্লিসিট_ ডাটা (অনচেইনে সংরক্ষিত নয়), যেখানে চেইন ডাটা হলো এক্সপ্লিসিট এবং চেইনেই সংরক্ষিত থাকে ([সোর্স](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored))।
+
+এই টিউটোরিয়ালের জন্য, আমরা অনচেইন ডাটার ওপর ফোকাস করব যা Dune Analytics-এর মাধ্যমে এসকিউএল (SQL) দিয়ে কোয়েরি করা _যেতে পারে_।
+
+উপরে যেমন বলা হয়েছে, প্রতিটি ব্লকে লেনদেনের একটি তালিকা থাকে, আমরা একটি নির্দিষ্ট ব্লকের জন্য ফিল্টার করে এটি কোয়েরি করতে পারি। আমরা সবচেয়ে সাম্প্রতিক ব্লক, 12396854 চেষ্টা করব:
+
+```sql
+SELECT * FROM ethereum."transactions"
+WHERE block_number = 12396854
+ORDER BY block_time DESC`
+```
+
+এখানে Dune-এ এসকিউএল (SQL) আউটপুট দেওয়া হলো:
+
+
+
+চেইনে যুক্ত হওয়া এই একক ব্লকটি ইথিরিয়াম ভার্চুয়াল মেশিন ([EVM](/developers/docs/evm/))-এর স্টেট পরিবর্তন করে। একবারে ডজন ডজন, কখনো কখনো শত শত লেনদেন যাচাই করা হয়। এই নির্দিষ্ট ক্ষেত্রে, 222টি লেনদেন অন্তর্ভুক্ত করা হয়েছিল।
+
+কতগুলো আসলে সফল হয়েছিল তা দেখতে, আমরা সফল লেনদেন গণনা করার জন্য আরেকটি ফিল্টার যোগ করব:
+
+```sql
+WITH temp_table AS (
+ SELECT * FROM ethereum."transactions"
+ WHERE block_number = 12396854 AND success = true
+ ORDER BY block_time DESC
+)
+SELECT
+ COUNT(success) AS num_successful_txn
+FROM temp_table
+```
+
+12396854 ব্লকের জন্য, মোট 222টি লেনদেনের মধ্যে 204টি সফলভাবে যাচাই করা হয়েছিল:
+
+
+
+লেনদেনের রিকোয়েস্ট প্রতি সেকেন্ডে ডজন ডজন বার ঘটে, কিন্তু ব্লকস প্রায় প্রতি 15 সেকেন্ডে একবার কমিট করা হয় ([সোর্স](/developers/docs/blocks/))।
+
+প্রায় প্রতি 15 সেকেন্ডে একটি ব্লক তৈরি হয় তা দেখতে, আমরা প্রতিদিনের আনুমানিক গড় ব্লকের সংখ্যা (~ 5760) পেতে এক দিনের সেকেন্ডের সংখ্যাকে (86400) 15 দিয়ে ভাগ করতে পারি।
+
+প্রতিদিন তৈরি হওয়া ইথিরিয়াম ব্লকের চার্ট (2016 - বর্তমান) হলো:
+
+
+
+এই সময়ের মধ্যে প্রতিদিন তৈরি হওয়া ব্লকের গড় সংখ্যা হলো ~5,874:
+
+
+
+কোয়েরিগুলো হলো:
+
+```sql
+# query to visualize number of blocks produced daily since 2016
+
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+
+# average number of blocks produced per day
+
+WITH temp_table AS (
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+)
+SELECT
+ AVG(block_count) AS avg_block_count
+FROM temp_table
+```
+
+2016 সাল থেকে প্রতিদিন তৈরি হওয়া ব্লকের গড় সংখ্যা সেই সংখ্যার চেয়ে সামান্য বেশি, যা হলো 5,874। বিকল্পভাবে, 86400 সেকেন্ডকে 5874 গড় ব্লক দিয়ে ভাগ করলে 14.7 সেকেন্ড বা প্রায় প্রতি 15 সেকেন্ডে একটি ব্লক পাওয়া যায়।
+
+### গ্যাস {#gas}
+
+ব্লকস আকারে সীমাবদ্ধ। সর্বোচ্চ ব্লকের আকার ডাইনামিক এবং নেটওয়ার্ক-এর চাহিদা অনুযায়ী 12,500,000 থেকে 25,000,000 ইউনিটের মধ্যে পরিবর্তিত হয়। ডিস্ক স্পেস এবং গতির প্রয়োজনীয়তার দিক থেকে ফুল নোড-গুলোর ওপর চাপ সৃষ্টি করা থেকে ইচ্ছামতো বড় ব্লকের আকার রোধ করতে লিমিট প্রয়োজন ([সোর্স](/developers/docs/blocks/))।
+
+ব্লক গ্যাস লিমিট-কে ধারণা করার একটি উপায় হলো এটিকে লেনদেন ব্যাচ করার জন্য উপলব্ধ ব্লক স্পেসের **সাপ্লাই** হিসেবে চিন্তা করা। ব্লক গ্যাস লিমিট 2016 থেকে বর্তমান দিন পর্যন্ত কোয়েরি এবং ভিজ্যুয়ালাইজ করা যেতে পারে:
+
+
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_limit) AS avg_block_gas_limit
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+এরপর রয়েছে ইথিরিয়াম চেইনে করা কম্পিউটিংয়ের (যেমন, লেনদেন পাঠানো, একটি স্মার্ট কন্ট্রাক্ট কল করা, একটি NFT মিন্ট করা) জন্য প্রতিদিন ব্যবহৃত প্রকৃত গ্যাস। এটি হলো উপলব্ধ ইথিরিয়াম ব্লক স্পেসের **চাহিদা**:
+
+
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_used) AS avg_block_gas_used
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+**চাহিদা এবং সাপ্লাই** কীভাবে সারিবদ্ধ হয় তা দেখতে আমরা এই দুটি চার্ট একসাথে মেলাতে পারি:
+
+
+
+তাই আমরা উপলব্ধ সাপ্লাইয়ের সাপেক্ষে ইথিরিয়াম ব্লক স্পেসের চাহিদার একটি ফাংশন হিসেবে গ্যাস প্রাইস বুঝতে পারি।
+
+সবশেষে, আমরা ইথিরিয়াম চেইনের জন্য গড় দৈনিক গ্যাস প্রাইস কোয়েরি করতে চাইতে পারি, তবে, এটি করলে কোয়েরির সময় অনেক দীর্ঘ হবে, তাই আমরা আমাদের কোয়েরিটি ইথিরিয়াম ফাউন্ডেশনের প্রতি লেনদেনে পরিশোধ করা গড় গ্যাসের পরিমাণে ফিল্টার করব।
+
+
+
+আমরা বছরের পর বছর ধরে ইথিরিয়াম ফাউন্ডেশনের এডড্রেস-এ করা সমস্ত লেনদেনের জন্য পরিশোধ করা গ্যাস প্রাইস দেখতে পারি। এখানে কোয়েরিটি দেওয়া হলো:
+
+```sql
+SELECT
+ block_time,
+ gas_price / 1e9 AS gas_price_gwei,
+ value / 1e18 AS eth_sent
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### সারসংক্ষেপ {#summary}
+
+এই টিউটোরিয়ালের মাধ্যমে, আমরা অনচেইন ডাটা কোয়েরি করে এবং অনুভব করে ইথিরিয়ামের মৌলিক ধারণাগুলো এবং ইথিরিয়াম ব্লকচেইন কীভাবে কাজ করে তা বুঝতে পারি।
+
+এই টিউটোরিয়ালে ব্যবহৃত সমস্ত কোড ধারণকারী ড্যাশবোর্ডটি [এখানে](https://dune.com/paulapivat/Learn-Ethereum) পাওয়া যাবে।
+
+ওয়েব3 এক্সপ্লোর করতে ডাটার আরও ব্যবহারের জন্য [টুইটারে আমাকে খুঁজুন](https://twitter.com/paulapivat)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/logging-events-smart-contracts/index.md b/public/content/translations/bn/developers/tutorials/logging-events-smart-contracts/index.md
new file mode 100644
index 00000000000..0a278803802
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/logging-events-smart-contracts/index.md
@@ -0,0 +1,63 @@
+---
+title: ইভেন্ট ব্যবহার করে স্মার্ট কন্ট্রাক্ট থেকে ডাটা লগ করা
+description: স্মার্ট কন্ট্রাক্ট ইভেন্টের একটি পরিচিতি এবং ডাটা লগ করার জন্য আপনি কীভাবে সেগুলো ব্যবহার করতে পারেন
+author: "jdourlens"
+tags: ["স্মার্ট কন্ট্রাক্ট", "Remix", "Solidity", "ইভেন্ট"]
+skill: intermediate
+breadcrumb: ইভেন্ট লগিং
+lang: bn
+published: 2020-04-03
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/logging-data-with-events/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+Solidity-তে, [ইভেন্ট](/developers/docs/smart-contracts/anatomy/#events-and-logs) হলো ডিসপ্যাচ করা সিগন্যাল যা স্মার্ট কন্ট্রাক্ট ফায়ার করতে পারে। ডিএ্যাপস, বা ইথিরিয়াম JSON-RPC API-এর সাথে সংযুক্ত যেকোনো কিছু, এই ইভেন্টগুলো শুনতে পারে এবং সেই অনুযায়ী কাজ করতে পারে। একটি ইভেন্ট ইনডেক্সও করা যেতে পারে যাতে ইভেন্টের ইতিহাস পরে অনুসন্ধান করা যায়।
+
+## ইভেন্ট {#events}
+
+এই নিবন্ধটি লেখার সময় ইথিরিয়াম ব্লকচেইন-এ সবচেয়ে সাধারণ ইভেন্ট হলো Transfer ইভেন্ট যা ERC20 টোকেন দ্বারা এমিট করা হয় যখন কেউ টোকেন স্থানান্তর করে।
+
+```solidity
+event Transfer(address indexed from, address indexed to, uint256 value);
+```
+
+ইভেন্ট সিগনেচার কন্ট্রাক্ট কোডের ভিতরে ডিক্লেয়ার করা হয় এবং emit কিওয়ার্ডের মাধ্যমে এমিট করা যেতে পারে। উদাহরণস্বরূপ, transfer ইভেন্ট লগ করে কে স্থানান্তর পাঠিয়েছে (_from_), কাকে পাঠিয়েছে (_to_) এবং কতগুলো টোকেন স্থানান্তর করা হয়েছে (_value_)।
+
+যদি আমরা আমাদের Counter স্মার্ট কন্ট্রাক্ট-এ ফিরে যাই এবং প্রতিবার মান পরিবর্তন হওয়ার সময় লগ করার সিদ্ধান্ত নিই। যেহেতু এই কন্ট্রাক্টটি ডিপ্লয় করার উদ্দেশ্যে নয় বরং এটিকে এক্সটেন্ড করে অন্য একটি কন্ট্রাক্ট তৈরির ভিত্তি হিসেবে কাজ করে: একে অ্যাবস্ট্রাক্ট কন্ট্রাক্ট বলা হয়। আমাদের কাউন্টার উদাহরণের ক্ষেত্রে, এটি দেখতে এমন হবে:
+
+```solidity
+pragma solidity 0.5.17;
+
+contract Counter {
+
+ event ValueChanged(uint oldValue, uint256 newValue);
+
+ // কাউন্টের সংখ্যা রাখার জন্য unsigned int টাইপের প্রাইভেট ভেরিয়েবল
+ uint256 private count = 0;
+
+ // যে ফাংশনটি আমাদের কাউন্টার বৃদ্ধি করে
+ function increment() public {
+ count += 1;
+ emit ValueChanged(count - 1, count);
+ }
+
+ // কাউন্টের মান পাওয়ার জন্য গেটার
+ function getCount() public view returns (uint256) {
+ return count;
+ }
+
+}
+```
+
+লক্ষ্য করুন যে:
+
+- **Line 5**: আমরা আমাদের ইভেন্ট এবং এতে কী রয়েছে তা ডিক্লেয়ার করি, পুরানো মান এবং নতুন মান।
+
+- **Line 13**: যখন আমরা আমাদের count ভেরিয়েবল বৃদ্ধি করি, তখন আমরা ইভেন্টটি এমিট করি।
+
+যদি আমরা এখন কন্ট্রাক্টটি ডিপ্লয় করি এবং increment ফাংশনটি কল করি, আমরা দেখতে পাব যে Remix স্বয়ংক্রিয়ভাবে এটি প্রদর্শন করবে যদি আপনি logs নামের একটি অ্যারের ভিতরে নতুন লেনদেন-এ ক্লিক করেন।
+
+
+
+আপনার স্মার্ট কন্ট্রাক্ট ডিবাগ করার জন্য লগগুলো সত্যিই দরকারী, তবে আপনি যদি বিভিন্ন লোকের দ্বারা ব্যবহৃত অ্যাপ্লিকেশন তৈরি করেন তবে এগুলো গুরুত্বপূর্ণ এবং আপনার স্মার্ট কন্ট্রাক্ট কীভাবে ব্যবহৃত হয় তা ট্র্যাক করতে এবং বুঝতে অ্যানালিটিক্স তৈরি করা সহজ করে তোলে। লেনদেন দ্বারা জেনারেট করা লগগুলো জনপ্রিয় ব্লক এক্সপ্লোরার-এ প্রদর্শিত হয় এবং আপনি উদাহরণস্বরূপ নির্দিষ্ট ইভেন্টগুলো শোনার জন্য এবং সেগুলো ঘটলে ব্যবস্থা নেওয়ার জন্য অফচেইন স্ক্রিপ্ট তৈরি করতে এগুলো ব্যবহার করতে পারেন।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/bn/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
new file mode 100644
index 00000000000..4bc6c46192b
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
@@ -0,0 +1,247 @@
+---
+title: অফলাইন ডাটা ইন্টিগ্রিটির জন্য মার্কেল প্রুফ
+description: বেশিরভাগ অফচেইনে সংরক্ষিত ডাটার জন্য অনচেইনে ডাটা ইন্টিগ্রিটি নিশ্চিত করা
+author: ওরি পোমেরান্টজ
+tags: ["স্টোরেজ"]
+skill: advanced
+breadcrumb: মার্কেল প্রুফ
+lang: bn
+published: 2021-12-30
+---
+
+## ভূমিকা {#introduction}
+
+আদর্শভাবে আমরা ইথিরিয়াম স্টোরেজে সবকিছু সংরক্ষণ করতে চাই, যা হাজার হাজার কম্পিউটারে সংরক্ষিত থাকে এবং এর এভেইলএবিলিটি (ডাটা সেন্সর করা যায় না) এবং ইন্টিগ্রিটি (ডাটা অননুমোদিতভাবে পরিবর্তন করা যায় না) অত্যন্ত বেশি, কিন্তু একটি 32-বাইট শব্দ সংরক্ষণ করতে সাধারণত 20,000 গ্যাস খরচ হয়। আমি যখন এটি লিখছি, তখন সেই খরচ $6.60 এর সমতুল্য। প্রতি বাইটে 21 সেন্ট হিসেবে এটি অনেক ব্যবহারের জন্যই খুব ব্যয়বহুল।
+
+এই সমস্যার সমাধানে ইথিরিয়াম ইকোসিস্টেম [ডিসেন্ট্রালাইজড উপায়ে ডাটা সংরক্ষণের অনেক বিকল্প উপায়](/developers/docs/storage/) তৈরি করেছে। সাধারণত এগুলোতে এভেইলএবিলিটি এবং দামের মধ্যে একটি ট্রেডঅফ থাকে। তবে, ইন্টিগ্রিটি সাধারণত নিশ্চিত করা হয়।
+
+এই আর্টিকেলে আপনি শিখবেন **কীভাবে** ব্লকচেইন-এ ডাটা সংরক্ষণ না করেও [মার্কেল প্রুফ](https://computersciencewiki.org/index.php/Merkle_proof) ব্যবহার করে ডাটা ইন্টিগ্রিটি নিশ্চিত করা যায়।
+
+## এটি কীভাবে কাজ করে? {#how-does-it-work}
+
+তাত্ত্বিকভাবে আমরা শুধু অনচেইন-এ ডাটার হ্যাস সংরক্ষণ করতে পারি, এবং যে লেনদেন-এ এটি প্রয়োজন সেখানে সমস্ত ডাটা পাঠাতে পারি। তবে, এটি এখনও খুব ব্যয়বহুল। একটি লেনদেন-এ এক বাইট ডাটার জন্য প্রায় 16 গ্যাস খরচ হয়, যা বর্তমানে প্রায় আধা সেন্ট, বা প্রতি কিলোবাইটে প্রায় $5। প্রতি মেগাবাইটে $5000 হিসেবে, ডাটা হ্যাস করার অতিরিক্ত খরচ ছাড়াই এটি অনেক ব্যবহারের জন্য খুব ব্যয়বহুল।
+
+এর সমাধান হলো ডাটার বিভিন্ন সাবসেট বারবার হ্যাস করা, যাতে যে ডাটা আপনার পাঠানোর প্রয়োজন নেই তার জন্য আপনি শুধু একটি হ্যাস পাঠাতে পারেন। আপনি এটি একটি মার্কেল ট্রি ব্যবহার করে করতে পারেন, যা এমন একটি ট্রি ডাটা স্ট্রাকচার যেখানে প্রতিটি নোড তার নিচের নোডগুলোর একটি হ্যাস:
+
+
+
+রুট হ্যাস হলো একমাত্র অংশ যা অনচেইন-এ সংরক্ষণ করা প্রয়োজন। একটি নির্দিষ্ট মান প্রমাণ করার জন্য, রুট পাওয়ার জন্য এর সাথে যে হ্যাসগুলো যুক্ত করতে হবে তা আপনি প্রদান করেন। উদাহরণস্বরূপ, `C` প্রমাণ করতে আপনি `D`, `H(A-B)`, এবং `H(E-H)` প্রদান করেন।
+
+
+
+## ইমপ্লিমেন্টেশন {#implementation}
+
+[নমুনা কোড এখানে দেওয়া হয়েছে](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity)।
+
+### অফচেইন কোড {#offchain-code}
+
+এই আর্টিকেলে আমরা অফচেইন হিসাব-নিকাশের জন্য JavaScript ব্যবহার করব। বেশিরভাগ ডিসেন্ট্রালাইজড এপ্লিকেশন-এর অফচেইন কম্পোনেন্ট JavaScript-এ থাকে।
+
+#### মার্কেল রুট তৈরি করা {#creating-the-merkle-root}
+
+প্রথমে আমাদের চেইনে মার্কেল রুট প্রদান করতে হবে।
+
+```javascript
+const ethers = require("ethers")
+```
+
+[আমরা ethers প্যাকেজ থেকে হ্যাস ফাংশন ব্যবহার করি](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256)।
+
+```javascript
+// র ডেটা যার অখণ্ডতা আমাদের যাচাই করতে হবে। প্রথম দুটি বাইট হ
+// লো একজন ব্যবহারকারীর আইডেন্টিফায়ার, এবং শেষ দুটি বাইট হলো টোকেনের পরিমাণ যা
+// বর্তমানে ব্যবহারকারীর মালিকানায় আছে।
+const dataArray = [
+ 0x0bad0010, 0x60a70020, 0xbeef0030, 0xdead0040, 0xca110050, 0x0e660060,
+ 0xface0070, 0xbad00080, 0x060d0091,
+]
+```
+
+প্রতিটি এন্ট্রিকে একটি একক 256-বিট ইন্টিজারে এনকোড করলে কোডটি JSON ব্যবহারের তুলনায় কম পাঠযোগ্য হয়। তবে, এর মানে হলো কন্ট্রাক্টে ডাটা পুনরুদ্ধার করতে উল্লেখযোগ্যভাবে কম প্রসেসিং প্রয়োজন, তাই গ্যাস খরচ অনেক কম হয়। [আপনি অনচেইন-এ JSON পড়তে পারেন](https://github.com/chrisdotn/jsmnSol), তবে এড়ানো গেলে এটি একটি খারাপ ধারণা।
+
+```javascript
+// হ্যাস ভ্যালুগুলোর অ্যারে, BigInts হিসেবে
+const hashArray = dataArray
+```
+
+এই ক্ষেত্রে আমাদের ডাটা শুরু থেকেই 256-বিট মানের, তাই কোনো প্রসেসিংয়ের প্রয়োজন নেই। যদি আমরা স্ট্রিংয়ের মতো আরও জটিল ডাটা স্ট্রাকচার ব্যবহার করি, তবে আমাদের নিশ্চিত করতে হবে যে আমরা প্রথমে ডাটা হ্যাস করে হ্যাসগুলোর একটি অ্যারে পাই। মনে রাখবেন যে এটি এই কারণেও যে ব্যবহারকারীরা অন্য ব্যবহারকারীদের তথ্য জানলে আমাদের কিছু যায় আসে না। অন্যথায় আমাদের এমনভাবে হ্যাস করতে হতো যাতে ব্যবহারকারী 1 ব্যবহারকারী 0 এর মান জানতে না পারে, ব্যবহারকারী 2 ব্যবহারকারী 3 এর মান জানতে না পারে, ইত্যাদি।
+
+```javascript
+// হ্যাস ফাংশন যে স্ট্রিংটি আশা করে এবং
+// অন্য সব জায়গায় আমরা যে BigInt ব্যবহার করি, তার মধ্যে রূপান্তর করুন।
+const hash = (x) =>
+ BigInt(ethers.utils.keccak256("0x" + x.toString(16).padStart(64, 0)))
+```
+
+ethers হ্যাস ফাংশন একটি হেক্সাডেসিমাল নম্বরসহ একটি JavaScript স্ট্রিং পাওয়ার আশা করে, যেমন `0x60A7`, এবং একই স্ট্রাকচারের আরেকটি স্ট্রিং দিয়ে রেসপন্স করে। তবে, বাকি কোডের জন্য `BigInt` ব্যবহার করা সহজ, তাই আমরা একটি হেক্সাডেসিমাল স্ট্রিংয়ে রূপান্তর করি এবং আবার ফিরে আসি।
+
+```javascript
+// একটি জোড়ার সিমেট্রিকাল হ্যাস যাতে ক্রম উল্টে গেলেও আমাদের কোনো সমস্যা না হয়।
+const pairHash = (a, b) => hash(hash(a) ^ hash(b))
+```
+
+এই ফাংশনটি সিমেট্রিকাল (a [xor](https://en.wikipedia.org/wiki/Exclusive_or) b এর হ্যাস)। এর মানে হলো যখন আমরা মার্কেল প্রুফ চেক করি তখন আমাদের চিন্তা করতে হয় না যে প্রুফ থেকে পাওয়া মানটি ক্যালকুলেট করা মানের আগে নাকি পরে বসাতে হবে। মার্কেল প্রুফ চেকিং অনচেইন-এ করা হয়, তাই সেখানে আমাদের যত কম কাজ করতে হবে ততই ভালো।
+
+সতর্কতা:
+ক্রিপ্টোগ্রাফি দেখতে যতটা সহজ মনে হয় তার চেয়ে অনেক কঠিন।
+এই আর্টিকেলের প্রাথমিক সংস্করণে হ্যাস ফাংশন `hash(a^b)` ছিল।
+এটি একটি **খারাপ** ধারণা ছিল কারণ এর মানে হলো যদি আপনি `a` এবং `b` এর বৈধ মান জানতেন তবে আপনি যেকোনো কাঙ্ক্ষিত `a'` মান প্রমাণ করতে `b' = a^b^a'` ব্যবহার করতে পারতেন।
+এই ফাংশনের সাহায্যে আপনাকে এমনভাবে `b'` ক্যালকুলেট করতে হবে যাতে `hash(a') ^ hash(b')` একটি পরিচিত মানের (রুটের পথে পরবর্তী ব্রাঞ্চ) সমান হয়, যা অনেক বেশি কঠিন।
+
+```javascript
+// এমন একটি ভ্যালু যা নির্দেশ করে যে একটি নির্দিষ্ট ব্রাঞ্চ খালি, এর কোনো
+// ভ্যালু নেই
+const empty = 0n
+```
+
+যখন মানগুলোর সংখ্যা দুইয়ের পূর্ণসংখ্যার পাওয়ার হয় না তখন আমাদের খালি ব্রাঞ্চগুলো হ্যান্ডেল করতে হয়। এই প্রোগ্রামটি যেভাবে এটি করে তা হলো প্লেসহোল্ডার হিসেবে শূন্য বসানো।
+
+
+
+```javascript
+// একটি হ্যাস অ্যারের ট্রির এক লেভেল উপরে হিসাব করুন, যার জন্য হ্যাস নিতে হবে
+// ক্রমানুসারে প্রতিটি জোড়ার
+const oneLevelUp = (inputArray) => {
+ var result = []
+ var inp = [...inputArray] // ইনপুট ওভাররাইট করা এড়াতে // প্রয়োজন হলে একটি খালি ভ্যালু যোগ করুন (আমাদের সব লিভস // জোড়ায় জোড়ায় থাকতে হবে)
+
+ if (inp.length % 2 === 1) inp.push(empty)
+
+ for (var i = 0; i < inp.length; i += 2)
+ result.push(pairHash(inp[i], inp[i + 1]))
+
+ return result
+} // oneLevelUp
+```
+
+এই ফাংশনটি বর্তমান লেয়ারে মানগুলোর জোড়া হ্যাস করে মার্কেল ট্রিতে এক লেভেল "উপরে ওঠে"। মনে রাখবেন যে এটি সবচেয়ে দক্ষ ইমপ্লিমেন্টেশন নয়, আমরা ইনপুট কপি করা এড়াতে পারতাম এবং লুপে উপযুক্ত সময়ে শুধু `hashEmpty` যোগ করতে পারতাম, কিন্তু এই কোডটি পড়ার সুবিধার জন্য অপ্টিমাইজ করা হয়েছে।
+
+```javascript
+const getMerkleRoot = (inputArray) => {
+ var result
+
+ result = [...inputArray] // ট্রির উপরের দিকে উঠতে থাকুন যতক্ষণ না শুধুমাত্র একটি ভ্যালু থাকে, যা হলো // রুট। // // যদি কোনো লেয়ারে বিজোড় সংখ্যক এন্ট্রি থাকে তবে // oneLevelUp-এর কোড একটি খালি ভ্যালু যোগ করে, তাই যদি আমাদের, উদাহরণস্বরূপ, // ১০টি লিভস থাকে তবে দ্বিতীয় লেয়ারে ৫টি ব্রাঞ্চ, তৃতীয় লেয়ারে ৩টি // ব্রাঞ্চ, চতুর্থ লেয়ারে ২টি এবং পঞ্চমটি হবে রুট
+
+ while (result.length > 1) result = oneLevelUp(result)
+
+ return result[0]
+}
+```
+
+রুট পেতে, যতক্ষণ না শুধুমাত্র একটি মান অবশিষ্ট থাকে ততক্ষণ উপরে উঠতে থাকুন।
+
+#### একটি মার্কেল প্রুফ তৈরি করা {#creating-a-merkle-proof}
+
+একটি মার্কেল প্রুফ হলো সেই মানগুলো যা মার্কেল রুট ফিরে পেতে প্রমাণ করা মানের সাথে একসাথে হ্যাস করতে হয়। প্রমাণ করার মানটি প্রায়শই অন্যান্য ডাটা থেকে পাওয়া যায়, তাই আমি এটিকে কোডের অংশ হিসেবে না দিয়ে আলাদাভাবে প্রদান করতে পছন্দ করি।
+
+```javascript
+// একটি মার্কেল প্রুফ এন্ট্রিগুলোর তালিকার ভ্যালু নিয়ে গঠিত হয় যা
+// হ্যাস করতে হবে। যেহেতু আমরা একটি সিমেট্রিকাল হ্যাস ফাংশন ব্যবহার করি, তাই আমাদের
+// প্রুফ যাচাই করার জন্য আইটেমের লোকেশনের প্রয়োজন নেই, শুধুমাত্র এটি তৈরি করার জন্য প্রয়োজন
+const getMerkleProof = (inputArray, n) => {
+ var result = [], currentLayer = [...inputArray], currentN = n
+
+ // যতক্ষণ না আমরা শীর্ষে পৌঁছাই
+ while (currentLayer.length > 1) {
+ // কোনো বিজোড় দৈর্ঘ্যের লেয়ার নেই
+ if (currentLayer.length % 2)
+ currentLayer.push(empty)
+
+ result.push(currentN % 2
+ // যদি currentN বিজোড় হয়, তবে এর আগের ভ্যালুর সাথে প্রুফে যোগ করুন
+ ? currentLayer[currentN-1]
+ // যদি এটি জোড় হয়, তবে এর পরের ভ্যালুটি যোগ করুন
+ : currentLayer[currentN+1])
+
+```
+
+আমরা `(v[0],v[1])`, `(v[2],v[3])`, ইত্যাদি হ্যাস করি। তাই জোড় মানগুলোর জন্য আমাদের পরবর্তীটি প্রয়োজন, বিজোড় মানগুলোর জন্য আগেরটি।
+
+```javascript
+ // পরবর্তী উপরের লেয়ারে যান
+ currentN = Math.floor(currentN/2)
+ currentLayer = oneLevelUp(currentLayer)
+ } // while currentLayer.length > 1
+
+ return result
+} // getMerkleProof
+```
+
+### অনচেইন কোড {#onchain-code}
+
+সবশেষে আমাদের কাছে সেই কোড আছে যা প্রুফ চেক করে। অনচেইন কোডটি [Solidity](https://docs.soliditylang.org/en/v0.8.11/)-তে লেখা হয়েছে। এখানে অপ্টিমাইজেশন অনেক বেশি গুরুত্বপূর্ণ কারণ গ্যাস তুলনামূলকভাবে ব্যয়বহুল।
+
+```solidity
+// SPDX-License-Identifier: Public Domain
+pragma solidity ^0.8.0;
+
+import "hardhat/console.sol";
+```
+
+আমি এটি [Hardhat ডেভেলপমেন্ট এনভায়রনমেন্ট](https://hardhat.org/) ব্যবহার করে লিখেছি, যা আমাদের ডেভেলপ করার সময় [Solidity থেকে কনসোল আউটপুট](https://hardhat.org/docs/cookbook/debug-logs) পেতে সাহায্য করে।
+
+```solidity
+
+contract MerkleProof {
+ uint merkleRoot;
+
+ function getRoot() public view returns (uint) {
+ return merkleRoot;
+ }
+
+ // অত্যন্ত অনিরাপদ, প্রোডাকশন কোডে এর অ্যাক্সেস
+ // এই ফাংশনটি অবশ্যই কঠোরভাবে সীমিত হতে হবে, সম্ভবত একজন
+ // মালিকের কাছে
+ function setRoot(uint _merkleRoot) external {
+ merkleRoot = _merkleRoot;
+ } // setRoot
+```
+
+মার্কেল রুটের জন্য সেট এবং গেট ফাংশন। একটি প্রোডাকশন সিস্টেমে সবাইকে মার্কেল রুট আপডেট করতে দেওয়া একটি _অত্যন্ত খারাপ ধারণা_। আমি এখানে নমুনা কোডের সরলতার জন্য এটি করেছি। **এমন কোনো সিস্টেমে এটি করবেন না যেখানে ডাটা ইন্টিগ্রিটি সত্যিই গুরুত্বপূর্ণ**।
+
+```solidity
+ function hash(uint _a) internal pure returns(uint) {
+ return uint(keccak256(abi.encode(_a)));
+ }
+
+ function pairHash(uint _a, uint _b) internal pure returns(uint) {
+ return hash(hash(_a) ^ hash(_b));
+ }
+```
+
+এই ফাংশনটি একটি পেয়ার হ্যাস তৈরি করে। এটি মূলত `hash` এবং `pairHash` এর জন্য JavaScript কোডের Solidity অনুবাদ।
+
+**নোট:** এটি পড়ার সুবিধার জন্য অপ্টিমাইজেশনের আরেকটি উদাহরণ। [ফাংশন ডেফিনিশন](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm)-এর উপর ভিত্তি করে, ডাটাকে একটি [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) মান হিসেবে সংরক্ষণ করা এবং কনভার্সন এড়ানো সম্ভব হতে পারে।
+
+```solidity
+ // একটি মার্কেল প্রুফ যাচাই করুন
+ function verifyProof(uint _value, uint[] calldata _proof)
+ public view returns (bool) {
+ uint temp = _value;
+ uint i;
+
+ for(i=0; i<_proof.length; i++) {
+ temp = pairHash(temp, _proof[i]);
+ }
+
+ return temp == merkleRoot;
+ }
+
+} // MarkleProof
+```
+
+গাণিতিক নোটেশনে মার্কেল প্রুফ ভেরিফিকেশন দেখতে এরকম: `H(proof_n, H(proof_n-1, H(proof_n-2, ... H(proof_1, H(proof_0, value))...)))`। এই কোডটি এটি ইমপ্লিমেন্ট করে।
+
+## মার্কেল প্রুফ এবং রেলআপস একসাথে কাজ করে না {#merkle-proofs-and-rollups}
+
+মার্কেল প্রুফ [রেলআপস](/developers/docs/scaling/#rollups)-এর সাথে ভালোভাবে কাজ করে না। এর কারণ হলো রেলআপস সমস্ত লেনদেন ডাটা L1-এ লেখে, কিন্তু L2-তে প্রসেস করে। একটি লেনদেন-এর সাথে একটি মার্কেল প্রুফ পাঠানোর খরচ প্রতি লেয়ারে গড়ে 638 গ্যাস হয় (বর্তমানে কল ডাটায় একটি বাইটের খরচ 16 গ্যাস যদি এটি শূন্য না হয়, এবং 4 যদি এটি শূন্য হয়)। যদি আমাদের কাছে 1024 শব্দের ডাটা থাকে, তবে একটি মার্কেল প্রুফের জন্য দশটি লেয়ার প্রয়োজন, বা মোট 6380 গ্যাস।
+
+উদাহরণস্বরূপ [Optimism](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)-এর দিকে তাকালে, L1 গ্যাস লেখার খরচ প্রায় 100 gwei এবং L2 গ্যাস খরচ 0.001 gwei (এটি স্বাভাবিক দাম, কনজেশনের সাথে এটি বাড়তে পারে)। তাই একটি L1 গ্যাসের খরচে আমরা L2 প্রসেসিংয়ে এক লক্ষ গ্যাস খরচ করতে পারি। ধরে নিচ্ছি আমরা স্টোরেজ ওভাররাইট করব না, এর মানে হলো আমরা একটি L1 গ্যাসের দামে L2-তে স্টোরেজে প্রায় পাঁচটি শব্দ লিখতে পারি। একটি একক মার্কেল প্রুফের জন্য আমরা সম্পূর্ণ 1024 শব্দ স্টোরেজে লিখতে পারি (ধরে নিচ্ছি যে এগুলো লেনদেন-এ প্রদান করার পরিবর্তে শুরুতেই অনচেইন-এ ক্যালকুলেট করা যেতে পারে) এবং তারপরেও বেশিরভাগ গ্যাস অবশিষ্ট থাকবে।
+
+## উপসংহার {#conclusion}
+
+বাস্তব জীবনে আপনি হয়তো কখনোই নিজে থেকে মার্কেল ট্রি ইমপ্লিমেন্ট করবেন না। সুপরিচিত এবং অডিটেড লাইব্রেরি রয়েছে যা আপনি ব্যবহার করতে পারেন এবং সাধারণভাবে বলতে গেলে নিজে থেকে ক্রিপ্টোগ্রাফিক প্রিমিটিভগুলো ইমপ্লিমেন্ট না করাই ভালো। তবে আমি আশা করি যে এখন আপনি মার্কেল প্রুফগুলো আরও ভালোভাবে বুঝতে পেরেছেন এবং কখন এগুলো ব্যবহার করা উচিত তা সিদ্ধান্ত নিতে পারবেন।
+
+মনে রাখবেন যে মার্কেল প্রুফগুলো _ইন্টিগ্রিটি_ বজায় রাখলেও, এগুলো _এভেইলএবিলিটি_ বজায় রাখে না। অন্য কেউ আপনার সম্পদ নিতে পারবে না এটা জানা খুব সামান্যই সান্ত্বনা যদি ডাটা স্টোরেজ অ্যাক্সেস না দেওয়ার সিদ্ধান্ত নেয় এবং আপনি সেগুলো অ্যাক্সেস করার জন্য একটি মার্কেল ট্রিও তৈরি করতে না পারেন। তাই মার্কেল ট্রিগুলো কোনো ধরনের ডিসেন্ট্রালাইজড স্টোরেজ, যেমন IPFS-এর সাথে ব্যবহার করা সবচেয়ে ভালো।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/public/content/translations/bn/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
new file mode 100644
index 00000000000..4cb76843deb
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
@@ -0,0 +1,147 @@
+---
+title: InfluxDB এবং Grafana দিয়ে Geth মনিটরিং
+description: পারফরম্যান্স ট্র্যাক করতে এবং সমস্যাগুলি চিহ্নিত করতে InfluxDB এবং Grafana ব্যবহার করে আপনার Geth নোডের জন্য মনিটরিং সেট আপ করুন।
+author: "মারিও হ্যাভেল"
+tags: ["ক্লায়েন্ট", "নোড"]
+skill: intermediate
+breadcrumb: Geth মনিটরিং
+lang: bn
+published: 2021-01-13
+---
+
+এই টিউটোরিয়ালটি আপনাকে আপনার Geth নোডের জন্য মনিটরিং সেট আপ করতে সাহায্য করবে যাতে আপনি এর পারফরম্যান্স আরও ভালোভাবে বুঝতে পারেন এবং সম্ভাব্য সমস্যাগুলি চিহ্নিত করতে পারেন।
+
+## পূর্বশর্ত {#prerequisites}
+
+- আপনার ইতিমধ্যে Geth এর একটি ইনস্ট্যান্স চালু থাকা উচিত।
+- বেশিরভাগ ধাপ এবং উদাহরণ লিনাক্স (linux) পরিবেশের জন্য, টার্মিনাল সম্পর্কে প্রাথমিক জ্ঞান সহায়ক হবে।
+- Geth এর মেট্রিক্স স্যুটের এই ভিডিও ওভারভিউটি দেখুন: [Monitoring an Ethereum infrastructure by Péter Szilágyi](https://www.youtube.com/watch?v=cOBab8IJMYI)।
+
+## মনিটরিং স্ট্যাক {#monitoring-stack}
+
+একটি ইথেরিয়াম ক্লায়েন্ট প্রচুর ডেটা সংগ্রহ করে যা একটি ক্রমানুক্রমিক ডেটাবেস আকারে পড়া যায়। মনিটরিং সহজ করার জন্য, আপনি এটি ডেটা ভিজ্যুয়ালাইজেশন সফটওয়্যারে ফিড করতে পারেন। এর জন্য একাধিক বিকল্প উপলব্ধ রয়েছে:
+
+- [Prometheus](https://prometheus.io/) (পুল মডেল)
+- [InfluxDB](https://www.influxdata.com/get-influxdb/) (পুশ মডেল)
+- [Telegraf](https://www.influxdata.com/get-influxdb/)
+- [Grafana](https://www.grafana.com/)
+- [Datadog](https://www.datadoghq.com/)
+- [Chronograf](https://www.influxdata.com/time-series-platform/chronograf/)
+
+এছাড়াও [Geth Prometheus Exporter](https://github.com/hunterlong/gethexporter) রয়েছে, যা InfluxDB এবং Grafana এর সাথে আগে থেকেই কনফিগার করা একটি বিকল্প।
+
+এই টিউটোরিয়ালে, আমরা আপনার Geth ক্লায়েন্ট সেট আপ করব যাতে এটি একটি ডেটাবেস তৈরি করতে InfluxDB-তে ডেটা পুশ করে এবং ডেটার গ্রাফ ভিজ্যুয়ালাইজেশন তৈরি করতে Grafana ব্যবহার করে। এটি ম্যানুয়ালি করলে আপনি প্রক্রিয়াটি আরও ভালোভাবে বুঝতে পারবেন, এটি পরিবর্তন করতে পারবেন এবং বিভিন্ন পরিবেশে ডেপ্লয় করতে পারবেন।
+
+## InfluxDB সেট আপ করা {#setting-up-influxdb}
+
+প্রথমে, চলুন InfluxDB ডাউনলোড এবং ইনস্টল করি। ডাউনলোডের বিভিন্ন বিকল্প [Influxdata রিলিজ পেজে](https://portal.influxdata.com/downloads/) পাওয়া যাবে। আপনার পরিবেশের জন্য উপযুক্ত একটি বেছে নিন। আপনি এটি একটি [রিপোজিটরি](https://repos.influxdata.com/) থেকেও ইনস্টল করতে পারেন। উদাহরণস্বরূপ ডেবিয়ান (Debian) ভিত্তিক ডিস্ট্রিবিউশনে:
+
+```
+curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add
+source /etc/lsb-release
+echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
+sudo apt update
+sudo apt install influxdb -y
+sudo systemctl enable influxdb
+sudo systemctl start influxdb
+sudo apt install influxdb-client
+```
+
+InfluxDB সফলভাবে ইনস্টল করার পর, নিশ্চিত করুন যে এটি ব্যাকগ্রাউন্ডে চলছে। ডিফল্টভাবে, এটি `localhost:8086` এ পৌঁছানো যায়। `influx` ক্লায়েন্ট ব্যবহার করার আগে, আপনাকে অ্যাডমিন সুবিধা সহ নতুন ব্যবহারকারী তৈরি করতে হবে। এই ব্যবহারকারী উচ্চ স্তরের পরিচালনা, ডেটাবেস এবং ব্যবহারকারী তৈরির জন্য কাজ করবে।
+
+```
+curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"
+```
+
+এখন আপনি এই ব্যবহারকারীর সাথে [InfluxDB শেল](https://docs.influxdata.com/influxdb/v1.8/tools/shell/)-এ প্রবেশ করতে influx ক্লায়েন্ট ব্যবহার করতে পারেন।
+
+```
+influx -username 'username' -password 'password'
+```
+
+এর শেলে সরাসরি InfluxDB এর সাথে যোগাযোগ করে, আপনি geth মেট্রিক্সের জন্য ডেটাবেস এবং ব্যবহারকারী তৈরি করতে পারেন।
+
+```
+create database geth
+create user geth with password choosepassword
+```
+
+তৈরি করা এন্ট্রিগুলি যাচাই করুন:
+
+```
+show databases
+show users
+```
+
+InfluxDB শেল থেকে প্রস্থান করুন।
+
+```
+exit
+```
+
+InfluxDB চলছে এবং Geth থেকে মেট্রিক্স সংরক্ষণ করার জন্য কনফিগার করা হয়েছে।
+
+## Geth প্রস্তুত করা {#preparing-geth}
+
+ডেটাবেস সেট আপ করার পর, আমাদের Geth-এ মেট্রিক্স সংগ্রহ সক্ষম করতে হবে। `geth --help`-এ `METRICS AND STATS OPTIONS`-এর দিকে মনোযোগ দিন। সেখানে একাধিক বিকল্প পাওয়া যেতে পারে, এই ক্ষেত্রে আমরা চাই Geth যেন InfluxDB-তে ডেটা পুশ করে। বেসিক সেটআপ সেই এন্ডপয়েন্ট নির্দিষ্ট করে যেখানে InfluxDB পৌঁছানো যায় এবং ডেটাবেসের জন্য প্রমাণীকরণ (authentication) থাকে।
+
+```
+geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword"
+```
+
+এই ফ্ল্যাগগুলি ক্লায়েন্ট শুরু করার কমান্ডের সাথে যুক্ত করা যেতে পারে বা কনফিগারেশন ফাইলে সংরক্ষণ করা যেতে পারে।
+
+আপনি যাচাই করতে পারেন যে Geth সফলভাবে ডেটা পুশ করছে, উদাহরণস্বরূপ ডেটাবেসে মেট্রিক্স তালিকাভুক্ত করে। InfluxDB শেলে:
+
+```
+use geth
+show measurements
+```
+
+## Grafana সেট আপ করা {#setting-up-grafana}
+
+পরবর্তী ধাপ হলো Grafana ইনস্টল করা যা ডেটাকে গ্রাফিকভাবে ব্যাখ্যা করবে। Grafana ডকুমেন্টেশনে আপনার পরিবেশের জন্য ইনস্টলেশন প্রক্রিয়া অনুসরণ করুন। আপনি যদি অন্য কিছু না চান তবে নিশ্চিত করুন যে OSS সংস্করণ ইনস্টল করেছেন। রিপোজিটরি ব্যবহার করে ডেবিয়ান ডিস্ট্রিবিউশনের জন্য উদাহরণস্বরূপ ইনস্টলেশন ধাপ:
+
+```
+curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add -
+echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
+sudo apt update
+sudo apt install grafana
+sudo systemctl enable grafana-server
+sudo systemctl start grafana-server
+```
+
+যখন আপনার Grafana চালু হবে, তখন এটি `localhost:3000`-এ পৌঁছানো উচিত। এই পাথে অ্যাক্সেস করতে আপনার পছন্দের ব্রাউজার ব্যবহার করুন, তারপর ডিফল্ট ক্রেডেনশিয়াল (ব্যবহারকারী: `admin` এবং পাসওয়ার্ড: `admin`) দিয়ে লগইন করুন। প্রম্পট করা হলে, ডিফল্ট পাসওয়ার্ড পরিবর্তন করুন এবং সেভ করুন।
+
+
+
+আপনাকে Grafana হোম পেজে রিডাইরেক্ট করা হবে। প্রথমে, আপনার সোর্স ডেটা সেট আপ করুন। বাম দিকের বারে কনফিগারেশন আইকনে ক্লিক করুন এবং "Data sources" নির্বাচন করুন।
+
+
+
+এখনও কোনো ডেটা সোর্স তৈরি করা হয়নি, একটি সংজ্ঞায়িত করতে "Add data source"-এ ক্লিক করুন।
+
+
+
+এই সেটআপের জন্য, "InfluxDB" নির্বাচন করুন এবং এগিয়ে যান।
+
+
+
+আপনি যদি একই মেশিনে টুলগুলি চালান তবে ডেটা সোর্স কনফিগারেশন বেশ সহজ। ডেটাবেস অ্যাক্সেস করার জন্য আপনাকে InfluxDB ঠিকানা এবং বিবরণ সেট করতে হবে। নিচের ছবিটি দেখুন।
+
+
+
+যদি সবকিছু সম্পন্ন হয় এবং InfluxDB পৌঁছানো যায়, তবে "Save and test"-এ ক্লিক করুন এবং কনফার্মেশন পপ আপ হওয়ার জন্য অপেক্ষা করুন।
+
+
+
+Grafana এখন InfluxDB থেকে ডেটা পড়ার জন্য সেট আপ করা হয়েছে। এখন আপনাকে একটি ড্যাশবোর্ড তৈরি করতে হবে যা এটি ব্যাখ্যা করবে এবং প্রদর্শন করবে। ড্যাশবোর্ডের বৈশিষ্ট্যগুলি JSON ফাইলে এনকোড করা থাকে যা যে কেউ তৈরি করতে পারে এবং সহজেই ইমপোর্ট করা যায়। বাম দিকের বারে, "Create and Import"-এ ক্লিক করুন।
+
+
+
+একটি Geth মনিটরিং ড্যাশবোর্ডের জন্য, [এই ড্যাশবোর্ডের](https://grafana.com/grafana/dashboards/13877/) আইডি কপি করুন এবং Grafana-এর "Import page"-এ পেস্ট করুন। ড্যাশবোর্ড সেভ করার পর, এটি দেখতে এমন হওয়া উচিত:
+
+
+
+আপনি আপনার ড্যাশবোর্ডগুলি পরিবর্তন করতে পারেন। প্রতিটি প্যানেল এডিট, সরানো, মুছে ফেলা বা যোগ করা যেতে পারে। আপনি আপনার কনফিগারেশন পরিবর্তন করতে পারেন। এটি আপনার উপর নির্ভর করে! ড্যাশবোর্ডগুলি কীভাবে কাজ করে সে সম্পর্কে আরও জানতে, [Grafana-এর ডকুমেন্টেশন](https://grafana.com/docs/grafana/latest/dashboards/) দেখুন।
+আপনি [Alerting](https://grafana.com/docs/grafana/latest/alerting/)-এও আগ্রহী হতে পারেন। এটি আপনাকে মেট্রিক্স নির্দিষ্ট মানগুলিতে পৌঁছালে অ্যালার্ট নোটিফিকেশন সেট আপ করতে দেয়। বিভিন্ন কমিউনিকেশন চ্যানেল সমর্থিত।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/nft-minter/index.md b/public/content/translations/bn/developers/tutorials/nft-minter/index.md
new file mode 100644
index 00000000000..89f94612e3e
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/nft-minter/index.md
@@ -0,0 +1,869 @@
+---
+title: NFT মিন্টার টিউটোরিয়াল
+description: এই টিউটোরিয়ালে, আপনি একটি NFT মিন্টার তৈরি করবেন এবং MetaMask ও Web3 টুল ব্যবহার করে আপনার স্মার্ট কন্ট্রাক্টকে একটি React ফ্রন্টএন্ডের সাথে সংযুক্ত করে কীভাবে একটি ফুল স্ট্যাক ডিএ্যাপ তৈরি করতে হয় তা শিখবেন।
+author: "smudgil"
+tags: ["Solidity", "NFT", "Alchemy", "স্মার্ট কন্ট্রাক্ট", "ফ্রন্টএন্ড", "Pinata", "ERC-721"]
+skill: intermediate
+breadcrumb: NFT মিন্টার ডিএ্যাপ
+lang: bn
+published: 2021-10-06
+---
+
+Web2 ব্যাকগ্রাউন্ড থেকে আসা ডেভেলপারদের জন্য অন্যতম বড় চ্যালেঞ্জ হলো কীভাবে আপনার স্মার্ট কন্ট্রাক্টকে একটি ফ্রন্টএন্ড প্রজেক্টের সাথে সংযুক্ত করতে হয় এবং এর সাথে ইন্টারঅ্যাক্ট করতে হয় তা বের করা।
+
+একটি NFT মিন্টার তৈরি করার মাধ্যমে — একটি সাধারণ UI যেখানে আপনি আপনার ডিজিটাল অ্যাসেটের লিংক, একটি শিরোনাম এবং একটি বিবরণ ইনপুট করতে পারবেন — আপনি শিখবেন কীভাবে:
+
+- আপনার ফ্রন্টএন্ড প্রজেক্টের মাধ্যমে MetaMask-এ সংযুক্ত হতে হয়
+- আপনার ফ্রন্টএন্ড থেকে স্মার্ট কন্ট্রাক্ট মেথড কল করতে হয়
+- MetaMask ব্যবহার করে লেনদেন সাইন করতে হয়
+
+এই টিউটোরিয়ালে, আমরা আমাদের ফ্রন্টএন্ড ফ্রেমওয়ার্ক হিসেবে [React](https://react.dev/) ব্যবহার করব। যেহেতু এই টিউটোরিয়ালটি মূলত ওয়েব3 (Web3) ডেভেলপমেন্টের ওপর নিবদ্ধ, তাই আমরা React-এর মৌলিক বিষয়গুলো ব্যাখ্যা করতে খুব বেশি সময় ব্যয় করব না। এর পরিবর্তে, আমরা আমাদের প্রজেক্টে কার্যকারিতা আনার দিকে মনোযোগ দেব।
+
+পূর্বশর্ত হিসেবে, আপনার React সম্পর্কে প্রাথমিক স্তরের ধারণা থাকা উচিত—কম্পোনেন্ট, প্রপস, useState/useEffect এবং বেসিক ফাংশন কলিং কীভাবে কাজ করে তা জানা উচিত। আপনি যদি আগে কখনো এই শব্দগুলো না শুনে থাকেন, তবে আপনি এই [Intro to React tutorial](https://react.dev/learn/tutorial-tic-tac-toe) দেখতে পারেন। যারা ভিজ্যুয়ালি শিখতে বেশি পছন্দ করেন, তাদের জন্য আমরা Net Ninja-এর এই চমৎকার [Full Modern React Tutorial](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d) ভিডিও সিরিজটি দেখার জন্য জোরালোভাবে সুপারিশ করছি।
+
+আর যদি আপনি ইতিমধ্যে তা না করে থাকেন, তবে এই টিউটোরিয়ালটি সম্পন্ন করতে এবং ব্লকচেইন-এ যেকোনো কিছু তৈরি করতে আপনার অবশ্যই একটি Alchemy একাউন্ট প্রয়োজন হবে। [এখানে](https://alchemy.com/) একটি ফ্রি একাউন্ট তৈরি করুন।
+
+আর কথা না বাড়িয়ে, চলুন শুরু করা যাক!
+
+## NFT তৈরি করা 101 {#making-nfts-101}
+
+আমরা কোনো কোড দেখার আগে, একটি NFT তৈরি করা কীভাবে কাজ করে তা বোঝা গুরুত্বপূর্ণ। এর দুটি ধাপ রয়েছে:
+
+### ইথিরিয়াম ব্লকচেইন-এ একটি NFT স্মার্ট কন্ট্রাক্ট পাবলিশ করা {#publish-nft}
+
+দুটি NFT স্মার্ট কন্ট্রাক্ট স্ট্যান্ডার্ডের মধ্যে সবচেয়ে বড় পার্থক্য হলো ERC-1155 একটি মাল্টি-টোকেন স্ট্যান্ডার্ড এবং এতে ব্যাচ কার্যকারিতা অন্তর্ভুক্ত রয়েছে, যেখানে ERC-721 একটি সিঙ্গেল-টোকেন স্ট্যান্ডার্ড এবং তাই এটি একবারে কেবল একটি টোকেন ট্রান্সফার সমর্থন করে।
+
+### মিন্টিং ফাংশন কল করা {#minting-function}
+
+সাধারণত, এই মিন্টিং ফাংশনে প্যারামিটার হিসেবে দুটি ভেরিয়েবল পাস করতে হয়, প্রথমটি হলো `recipient`, যা সেই এডড্রেস নির্দিষ্ট করে যা আপনার নতুন মিন্ট করা NFT গ্রহণ করবে, এবং দ্বিতীয়টি হলো NFT-এর `tokenURI`, একটি স্ট্রিং যা NFT-এর মেটাডাটা বর্ণনা করে এমন একটি JSON ডকুমেন্টে রিজলভ হয়।
+
+একটি NFT-এর মেটাডাটাই মূলত এটিকে জীবন্ত করে তোলে, যার ফলে এর নাম, বিবরণ, ছবি (বা ভিন্ন ডিজিটাল অ্যাসেট) এবং অন্যান্য বৈশিষ্ট্যের মতো প্রপার্টি থাকতে পারে। এখানে [একটি tokenURI-এর উদাহরণ](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2) দেওয়া হলো, যাতে একটি NFT-এর মেটাডাটা রয়েছে।
+
+এই টিউটোরিয়ালে, আমরা ২য় অংশের ওপর ফোকাস করব, আমাদের React UI ব্যবহার করে একটি বিদ্যমান NFT-এর স্মার্ট কন্ট্রাক্ট মিন্টিং ফাংশন কল করা।
+
+এই টিউটোরিয়ালে আমরা যে ERC-721 NFT স্মার্ট কন্ট্রাক্টটি কল করব তার [একটি লিংক এখানে দেওয়া হলো](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE)। আপনি যদি জানতে চান আমরা এটি কীভাবে তৈরি করেছি, তবে আমরা জোরালোভাবে সুপারিশ করছি যে আপনি আমাদের অন্য টিউটোরিয়াল, ["How to Create an NFT"](https://www.alchemy.com/docs/how-to-create-an-nft) দেখে নিন।
+
+চমৎকার, এখন যেহেতু আমরা বুঝতে পেরেছি কীভাবে একটি NFT তৈরি করা কাজ করে, চলুন আমাদের স্টার্টার ফাইলগুলো ক্লোন করি!
+
+## স্টার্টার ফাইলগুলো ক্লোন করুন {#clone-the-starter-files}
+
+প্রথমে, এই প্রজেক্টের স্টার্টার ফাইলগুলো পেতে [nft-minter-tutorial GitHub রিপোজিটরিতে](https://github.com/alchemyplatform/nft-minter-tutorial) যান। এই রিপোজিটরিটি আপনার লোকাল এনভায়রনমেন্টে ক্লোন করুন।
+
+আপনি যখন এই ক্লোন করা `nft-minter-tutorial` রিপোজিটরিটি খুলবেন, তখন আপনি দেখতে পাবেন যে এতে দুটি ফোল্ডার রয়েছে: `minter-starter-files` এবং `nft-minter`।
+
+- `minter-starter-files`-এ এই প্রজেক্টের স্টার্টার ফাইলগুলো (মূলত React UI) রয়েছে। এই টিউটোরিয়ালে, **আমরা এই ডিরেক্টরিতে কাজ করব**, কারণ আপনি শিখবেন কীভাবে এই UI-কে আপনার ইথিরিয়াম ওয়ালেট এবং একটি NFT স্মার্ট কন্ট্রাক্ট-এর সাথে সংযুক্ত করে জীবন্ত করে তুলতে হয়।
+- `nft-minter`-এ সম্পূর্ণ টিউটোরিয়ালটি রয়েছে এবং এটি আপনার জন্য একটি **রেফারেন্স** হিসেবে দেওয়া হয়েছে **যদি আপনি কোথাও আটকে যান।**
+
+এরপর, আপনার কোড এডিটরে `minter-starter-files`-এর কপিটি খুলুন এবং তারপর আপনার `src` ফোল্ডারে নেভিগেট করুন।
+
+আমরা যে কোডগুলো লিখব তার সবই `src` ফোল্ডারের অধীনে থাকবে। আমরা `Minter.js` কম্পোনেন্টটি এডিট করব এবং আমাদের প্রজেক্টে ওয়েব3 (Web3) কার্যকারিতা দেওয়ার জন্য অতিরিক্ত জাভাস্ক্রিপ্ট ফাইল লিখব।
+
+## ধাপ 2: আমাদের স্টার্টার ফাইলগুলো দেখে নিন {#step-2-check-out-our-starter-files}
+
+কোডিং শুরু করার আগে, স্টার্টার ফাইলগুলোতে আমাদের জন্য ইতিমধ্যে কী দেওয়া আছে তা দেখে নেওয়া গুরুত্বপূর্ণ।
+
+### আপনার react প্রজেক্টটি চালু করুন {#get-your-react-project-running}
+
+চলুন আমাদের ব্রাউজারে React প্রজেক্টটি রান করার মাধ্যমে শুরু করি। React-এর সৌন্দর্য হলো একবার আমাদের প্রজেক্ট ব্রাউজারে রান করলে, আমরা যে পরিবর্তনগুলো সেভ করব তা ব্রাউজারে লাইভ আপডেট হবে।
+
+প্রজেক্টটি রান করতে, `minter-starter-files` ফোল্ডারের রুট ডিরেক্টরিতে নেভিগেট করুন এবং প্রজেক্টের ডিপেন্ডেন্সিগুলো ইনস্টল করতে আপনার টার্মিনালে `npm install` রান করুন:
+
+```bash
+cd minter-starter-files
+npm install
+```
+
+সেগুলো ইনস্টল হওয়া শেষ হলে, আপনার টার্মিনালে `npm start` রান করুন:
+
+```bash
+npm start
+```
+
+এটি করার ফলে আপনার ব্রাউজারে http://localhost:3000/ খুলবে, যেখানে আপনি আমাদের প্রজেক্টের ফ্রন্টএন্ড দেখতে পাবেন। এতে 3টি ফিল্ড থাকা উচিত: আপনার NFT-এর অ্যাসেটের লিংক ইনপুট করার জায়গা, আপনার NFT-এর নাম এন্টার করার জায়গা এবং একটি বিবরণ দেওয়ার জায়গা।
+
+আপনি যদি "Connect Wallet" বা "Mint NFT" বোতামগুলোতে ক্লিক করার চেষ্টা করেন, তবে আপনি লক্ষ্য করবেন যে সেগুলো কাজ করছে না—এর কারণ হলো আমাদের এখনও সেগুলোর কার্যকারিতা প্রোগ্রাম করতে হবে! :\)
+
+### Minter.js কম্পোনেন্ট {#minter-js}
+
+**নোট:** নিশ্চিত করুন যে আপনি `minter-starter-files` ফোল্ডারে আছেন এবং `nft-minter` ফোল্ডারে নেই!
+
+চলুন আমাদের এডিটরে `src` ফোল্ডারে ফিরে যাই এবং `Minter.js` ফাইলটি খুলি। এই ফাইলের সবকিছু বোঝা আমাদের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এটিই সেই প্রাথমিক React কম্পোনেন্ট যা নিয়ে আমরা কাজ করব।
+
+এই ফাইলের একেবারে ওপরে, আমাদের স্টেট (state) ভেরিয়েবলগুলো রয়েছে যা আমরা নির্দিষ্ট ইভেন্টের পরে আপডেট করব।
+
+```javascript
+// স্টেট ভেরিয়েবল
+const [walletAddress, setWallet] = useState("")
+const [status, setStatus] = useState("")
+const [name, setName] = useState("")
+const [description, setDescription] = useState("")
+const [url, setURL] = useState("")
+```
+
+React স্টেট ভেরিয়েবল বা স্টেট হুক সম্পর্কে কখনো শোনেননি? [এই](https://legacy.reactjs.org/docs/hooks-state.html) ডক্সগুলো দেখে নিন।
+
+প্রতিটি ভেরিয়েবল যা উপস্থাপন করে তা নিচে দেওয়া হলো:
+
+- `walletAddress` - একটি স্ট্রিং যা ব্যবহারকারীর ওয়ালেট এডড্রেস স্টোর করে
+- `status` - একটি স্ট্রিং যাতে UI-এর নিচে প্রদর্শন করার জন্য একটি মেসেজ থাকে
+- `name` - একটি স্ট্রিং যা NFT-এর নাম স্টোর করে
+- `description` - একটি স্ট্রিং যা NFT-এর বিবরণ স্টোর করে
+- `url` - একটি স্ট্রিং যা NFT-এর ডিজিটাল অ্যাসেটের একটি লিংক
+
+স্টেট ভেরিয়েবলগুলোর পরে, আপনি তিনটি ইমপ্লিমেন্ট না করা ফাংশন দেখতে পাবেন: `useEffect`, `connectWalletPressed`, এবং `onMintPressed`। আপনি লক্ষ্য করবেন যে এই সমস্ত ফাংশনগুলো `async`, এর কারণ হলো আমরা এগুলোতে অ্যাসিনক্রোনাস API কল করব! তাদের নামগুলো তাদের কার্যকারিতার সাথেই সামঞ্জস্যপূর্ণ:
+
+```javascript
+useEffect(async () => {
+ // TODO: ইমপ্লিমেন্ট করুন
+}, [])
+
+const connectWalletPressed = async () => {
+ // TODO: ইমপ্লিমেন্ট করুন
+}
+
+const onMintPressed = async () => {
+ // TODO: ইমপ্লিমেন্ট করুন
+}
+```
+
+- [`useEffect`](https://legacy.reactjs.org/docs/hooks-effect.html) - এটি একটি React হুক যা আপনার কম্পোনেন্ট রেন্ডার হওয়ার পরে কল করা হয়। যেহেতু এতে একটি খালি অ্যারে `[]` প্রপ পাস করা হয়েছে (লাইন 3 দেখুন), এটি কেবল কম্পোনেন্টের _প্রথম_ রেন্ডারেই কল করা হবে। এখানে আমরা আমাদের ওয়ালেট লিসেনার এবং অন্য একটি ওয়ালেট ফাংশন কল করব যাতে আমাদের UI আপডেট করে দেখানো যায় যে কোনো ওয়ালেট ইতিমধ্যে সংযুক্ত আছে কি না।
+- `connectWalletPressed` - ব্যবহারকারীর MetaMask ওয়ালেটকে আমাদের ডিএ্যাপ-এর সাথে সংযুক্ত করতে এই ফাংশনটি কল করা হবে।
+- `onMintPressed` - ব্যবহারকারীর NFT মিন্ট করতে এই ফাংশনটি কল করা হবে।
+
+এই ফাইলের শেষের দিকে, আমাদের কম্পোনেন্টের UI রয়েছে। আপনি যদি এই কোডটি মনোযোগ সহকারে স্ক্যান করেন, তবে আপনি লক্ষ্য করবেন যে আমরা আমাদের `url`, `name`, এবং `description` স্টেট ভেরিয়েবলগুলো আপডেট করি যখন তাদের সংশ্লিষ্ট টেক্সট ফিল্ডের ইনপুট পরিবর্তিত হয়।
+
+আপনি আরও দেখতে পাবেন যে `connectWalletPressed` এবং `onMintPressed` কল করা হয় যখন যথাক্রমে `mintButton` এবং `walletButton` আইডিযুক্ত বোতামগুলোতে ক্লিক করা হয়।
+
+```javascript
+// আমাদের কম্পোনেন্টের UI
+return (
+
+
+
+
+ 🧙♂️ Alchemy NFT Minter
+
+ Simply add your asset's link, name, and description, then press "Mint."
+
+
+
+ {status}
+
+)
+```
+
+অবশেষে, চলুন দেখি এই Minter কম্পোনেন্টটি কোথায় যোগ করা হয়েছে।
+
+আপনি যদি `App.js` ফাইলে যান, যা React-এর প্রধান কম্পোনেন্ট এবং অন্যান্য সমস্ত কম্পোনেন্টের জন্য একটি কন্টেইনার হিসেবে কাজ করে, তবে আপনি দেখতে পাবেন যে আমাদের Minter কম্পোনেন্টটি 7 নম্বর লাইনে ইনজেক্ট করা হয়েছে।
+
+**এই টিউটোরিয়ালে, আমরা কেবল `Minter.js file` এডিট করব এবং আমাদের `src` ফোল্ডারে ফাইল যোগ করব।**
+
+এখন যেহেতু আমরা বুঝতে পেরেছি আমরা কী নিয়ে কাজ করছি, চলুন আমাদের ইথিরিয়াম ওয়ালেট সেট আপ করি!
+
+## আপনার ইথিরিয়াম ওয়ালেট সেট আপ করুন {#set-up-your-ethereum-wallet}
+
+ব্যবহারকারীদের আপনার স্মার্ট কন্ট্রাক্ট-এর সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হওয়ার জন্য তাদের ইথিরিয়াম ওয়ালেটকে আপনার ডিএ্যাপ-এর সাথে সংযুক্ত করতে হবে।
+
+### MetaMask ডাউনলোড করুন {#download-metamask}
+
+এই টিউটোরিয়ালের জন্য, আমরা MetaMask ব্যবহার করব, যা ব্রাউজারে একটি ভার্চুয়াল ওয়ালেট এবং আপনার ইথিরিয়াম একাউন্ট এডড্রেস পরিচালনা করতে ব্যবহৃত হয়। ইথিরিয়ামে লেনদেন কীভাবে কাজ করে সে সম্পর্কে আপনি যদি আরও বুঝতে চান, তবে [এই পেজটি](/developers/docs/transactions/) দেখে নিন।
+
+আপনি [এখানে](https://metamask.io/download) বিনামূল্যে একটি MetaMask একাউন্ট ডাউনলোড এবং তৈরি করতে পারেন। আপনি যখন একটি একাউন্ট তৈরি করছেন, বা আপনার যদি ইতিমধ্যে একটি একাউন্ট থাকে, তবে নিশ্চিত করুন যে আপনি ওপরের ডানদিকে “Ropsten Test Network”-এ স্যুইচ করেছেন \(যাতে আমরা আসল টাকা নিয়ে কাজ না করি\)।
+
+### একটি ফাসেট থেকে ইথার যোগ করুন {#add-ether-from-faucet}
+
+আমাদের NFT মিন্ট করতে (বা ইথিরিয়াম ব্লকচেইন-এ কোনো লেনদেন সাইন করতে), আমাদের কিছু ফেক Eth প্রয়োজন হবে। Eth পেতে আপনি [Ropsten ফাসেট](https://faucet.ropsten.be/)-এ যেতে পারেন এবং আপনার Ropsten একাউন্ট এডড্রেস এন্টার করতে পারেন, তারপর “Send Ropsten Eth.”-এ ক্লিক করুন। এর কিছুক্ষণ পরেই আপনার MetaMask একাউন্টে Eth দেখতে পাওয়া উচিত!
+
+### আপনার ব্যালেন্স চেক করুন {#check-your-balance}
+
+আমাদের ব্যালেন্স সেখানে আছে কি না তা ডাবল চেক করতে, চলুন [Alchemy-এর কম্পোজার টুল](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) ব্যবহার করে একটি [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) রিকোয়েস্ট করি। এটি আমাদের ওয়ালেটে থাকা Eth-এর পরিমাণ রিটার্ন করবে। আপনার MetaMask একাউন্ট এডড্রেস ইনপুট করার পর এবং “Send Request”-এ ক্লিক করার পর, আপনার এরকম একটি রেসপন্স দেখা উচিত:
+
+```text
+{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
+```
+
+**নোট:** এই ফলাফলটি wei-তে, eth-এ নয়। Wei ইথারের ক্ষুদ্রতম একক হিসেবে ব্যবহৃত হয়। wei থেকে eth-এ রূপান্তর হলো: 1 eth = 10¹⁸ wei। সুতরাং আমরা যদি 0xde0b6b3a7640000-কে ডেসিমালে রূপান্তর করি তবে আমরা 1\*10¹⁸ পাই যা 1 eth-এর সমান।
+
+যাক! আমাদের ফেক টাকা সব সেখানেই আছে!
+
+## আপনার UI-এর সাথে MetaMask সংযুক্ত করুন {#connect-metamask-to-your-UI}
+
+এখন যেহেতু আমাদের MetaMask ওয়ালেট সেট আপ করা হয়েছে, চলুন আমাদের ডিএ্যাপ-কে এর সাথে সংযুক্ত করি!
+
+যেহেতু আমরা [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) প্যারাডাইম অনুসরণ করতে চাই, তাই আমরা একটি আলাদা ফাইল তৈরি করতে যাচ্ছি যাতে আমাদের ডিএ্যাপ-এর লজিক, ডাটা এবং নিয়মগুলো পরিচালনা করার জন্য আমাদের ফাংশনগুলো থাকবে এবং তারপর সেই ফাংশনগুলোকে আমাদের ফ্রন্টএন্ডে (আমাদের Minter.js কম্পোনেন্ট) পাস করব।
+
+### connectWallet ফাংশন {#connect-wallet-function}
+
+এটি করার জন্য, চলুন আপনার `src` ডিরেক্টরিতে `utils` নামে একটি নতুন ফোল্ডার তৈরি করি এবং এর ভেতরে `interact.js` নামে একটি ফাইল যোগ করি, যাতে আমাদের সমস্ত ওয়ালেট এবং স্মার্ট কন্ট্রাক্ট ইন্টারঅ্যাকশন ফাংশন থাকবে।
+
+আমাদের `interact.js` ফাইলে, আমরা একটি `connectWallet` ফাংশন লিখব, যা আমরা পরে আমাদের `Minter.js` কম্পোনেন্টে ইমপোর্ট এবং কল করব।
+
+আপনার `interact.js` ফাইলে, নিচের কোডটি যোগ করুন
+
+```javascript
+export const connectWallet = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ })
+ const obj = {
+ status: "👆🏽 Write a message in the text-field above.",
+ address: addressArray[0],
+ }
+ return obj
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your
+ browser.
+
+
+
+ ),
+ }
+ }
+}
+```
+
+চলুন বিশ্লেষণ করি এই কোডটি কী করে:
+
+প্রথমে, আমাদের ফাংশনটি চেক করে যে আপনার ব্রাউজারে `window.ethereum` এনাবল করা আছে কি না।
+
+`window.ethereum` হলো MetaMask এবং অন্যান্য ওয়ালেট প্রোভাইডারদের দ্বারা ইনজেক্ট করা একটি গ্লোবাল API যা ওয়েবসাইটগুলোকে ব্যবহারকারীদের ইথিরিয়াম একাউন্টের জন্য রিকোয়েস্ট করার অনুমতি দেয়। অনুমোদিত হলে, এটি ব্যবহারকারী যে ব্লকচেইন-এর সাথে সংযুক্ত আছে তা থেকে ডাটা পড়তে পারে এবং ব্যবহারকারীকে মেসেজ ও লেনদেন সাইন করার পরামর্শ দিতে পারে। আরও তথ্যের জন্য [MetaMask ডক্স](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) দেখে নিন!
+
+যদি `window.ethereum` উপস্থিত _না থাকে_, তবে এর অর্থ হলো MetaMask ইনস্টল করা নেই। এর ফলে একটি JSON অবজেক্ট রিটার্ন হয়, যেখানে রিটার্ন করা `address` হলো একটি খালি স্ট্রিং, এবং `status` JSX অবজেক্টটি জানায় যে ব্যবহারকারীকে অবশ্যই MetaMask ইনস্টল করতে হবে।
+
+**আমরা যে ফাংশনগুলো লিখব তার বেশিরভাগই JSON অবজেক্ট রিটার্ন করবে যা আমরা আমাদের স্টেট ভেরিয়েবল এবং UI আপডেট করতে ব্যবহার করতে পারি।**
+
+এখন যদি `window.ethereum` উপস্থিত _থাকে_, তবে তখনই বিষয়টি আকর্ষণীয় হয়ে ওঠে।
+
+একটি try/catch লুপ ব্যবহার করে, আমরা [`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts) কল করার মাধ্যমে MetaMask-এর সাথে সংযুক্ত হওয়ার চেষ্টা করব। এই ফাংশনটি কল করলে ব্রাউজারে MetaMask খুলবে, যার মাধ্যমে ব্যবহারকারীকে তাদের ওয়ালেটকে আপনার ডিএ্যাপ-এর সাথে সংযুক্ত করার জন্য প্রম্পট করা হবে।
+
+- যদি ব্যবহারকারী সংযুক্ত হওয়া বেছে নেন, তবে `method: "eth_requestAccounts"` একটি অ্যারে রিটার্ন করবে যাতে ডিএ্যাপ-এর সাথে সংযুক্ত ব্যবহারকারীর সমস্ত একাউন্ট এডড্রেস থাকবে। সব মিলিয়ে, আমাদের `connectWallet` ফাংশনটি একটি JSON অবজেক্ট রিটার্ন করবে যাতে এই অ্যারের _প্রথম_ `address` (লাইন 9 দেখুন) এবং একটি `status` মেসেজ থাকবে যা ব্যবহারকারীকে স্মার্ট কন্ট্রাক্ট-এ একটি মেসেজ লেখার জন্য প্রম্পট করে।
+- যদি ব্যবহারকারী কানেকশনটি প্রত্যাখ্যান করেন, তবে JSON অবজেক্টটিতে রিটার্ন করা `address`-এর জন্য একটি খালি স্ট্রিং এবং একটি `status` মেসেজ থাকবে যা প্রতিফলিত করে যে ব্যবহারকারী কানেকশনটি প্রত্যাখ্যান করেছেন।
+
+### আপনার Minter.js UI কম্পোনেন্টে connectWallet ফাংশন যোগ করুন {#add-connect-wallet}
+
+এখন যেহেতু আমরা এই `connectWallet` ফাংশনটি লিখেছি, চলুন এটিকে আমাদের `Minter.js.` কম্পোনেন্টের সাথে সংযুক্ত করি।
+
+প্রথমে, আমাদের `Minter.js` ফাইলের একেবারে ওপরে `import { connectWallet } from "./utils/interact.js";` যোগ করে আমাদের ফাংশনটিকে আমাদের `Minter.js` ফাইলে ইমপোর্ট করতে হবে। আপনার `Minter.js`-এর প্রথম 11 লাইন এখন এরকম হওয়া উচিত:
+
+```javascript
+import { useEffect, useState } from "react";
+import { connectWallet } from "./utils/interact.js";
+
+const Minter = (props) => {
+
+ // স্টেট ভেরিয়েবল
+ const [walletAddress, setWallet] = useState("");
+ const [status, setStatus] = useState("");
+ const [name, setName] = useState("");
+ const [description, setDescription] = useState("");
+ const [url, setURL] = useState("");
+```
+
+তারপর, আমাদের `connectWalletPressed` ফাংশনের ভেতরে, আমরা আমাদের ইমপোর্ট করা `connectWallet` ফাংশনটি কল করব, ঠিক এভাবে:
+
+```javascript
+const connectWalletPressed = async () => {
+ const walletResponse = await connectWallet()
+ setStatus(walletResponse.status)
+ setWallet(walletResponse.address)
+}
+```
+
+লক্ষ্য করেছেন কীভাবে আমাদের বেশিরভাগ কার্যকারিতা `interact.js` ফাইল থেকে আমাদের `Minter.js` কম্পোনেন্ট থেকে অ্যাবস্ট্রাক্ট করা হয়েছে? এটি করা হয়েছে যাতে আমরা M-V-C প্যারাডাইম মেনে চলি!
+
+`connectWalletPressed`-এ, আমরা কেবল আমাদের ইমপোর্ট করা `connectWallet` ফাংশনে একটি await কল করি এবং এর রেসপন্স ব্যবহার করে, আমরা তাদের স্টেট হুকগুলোর মাধ্যমে আমাদের `status` এবং `walletAddress` ভেরিয়েবলগুলো আপডেট করি।
+
+এখন, চলুন `Minter.js` এবং `interact.js` উভয় ফাইল সেভ করি এবং এ পর্যন্ত আমাদের UI টেস্ট করে দেখি।
+
+localhost:3000-এ আপনার ব্রাউজার খুলুন এবং পেজের ওপরের ডানদিকে "Connect Wallet" বোতাম টিপুন।
+
+আপনার যদি MetaMask ইনস্টল করা থাকে, তবে আপনাকে আপনার ওয়ালেটকে আপনার ডিএ্যাপ-এর সাথে সংযুক্ত করার জন্য প্রম্পট করা হবে। সংযুক্ত হওয়ার আমন্ত্রণটি গ্রহণ করুন।
+
+আপনার দেখা উচিত যে ওয়ালেট বোতামটি এখন প্রতিফলিত করছে যে আপনার এডড্রেস সংযুক্ত আছে।
+
+এরপর, পেজটি রিফ্রেশ করার চেষ্টা করুন... এটি অদ্ভুত। আমাদের ওয়ালেট বোতামটি আমাদের MetaMask সংযুক্ত করার জন্য প্রম্পট করছে, যদিও এটি ইতিমধ্যে সংযুক্ত আছে...
+
+তবে চিন্তা করবেন না! আমরা `getCurrentWalletConnected` নামের একটি ফাংশন ইমপ্লিমেন্ট করার মাধ্যমে সহজেই এটি ঠিক করতে পারি, যা চেক করবে যে কোনো এডড্রেস ইতিমধ্যে আমাদের ডিএ্যাপ-এর সাথে সংযুক্ত আছে কি না এবং সেই অনুযায়ী আমাদের UI আপডেট করবে!
+
+### getCurrentWalletConnected ফাংশন {#get-current-wallet}
+
+আপনার `interact.js` ফাইলে, নিচের `getCurrentWalletConnected` ফাংশনটি যোগ করুন:
+
+```javascript
+export const getCurrentWalletConnected = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_accounts",
+ })
+ if (addressArray.length > 0) {
+ return {
+ address: addressArray[0],
+ status: "👆🏽 Write a message in the text-field above.",
+ }
+ } else {
+ return {
+ address: "",
+ status: "🦊 Connect to MetaMask using the top right button.",
+ }
+ }
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your
+ browser.
+
+
+
+ ),
+ }
+ }
+}
+```
+
+এই কোডটি আমরা একটু আগে লেখা `connectWallet` ফাংশনের _খুবই_ কাছাকাছি।
+
+প্রধান পার্থক্য হলো `eth_requestAccounts` মেথড কল করার পরিবর্তে, যা ব্যবহারকারীর ওয়ালেট সংযুক্ত করার জন্য MetaMask খোলে, এখানে আমরা `eth_accounts` মেথড কল করি, যা কেবল বর্তমানে আমাদের ডিএ্যাপ-এর সাথে সংযুক্ত MetaMask এডড্রেসগুলো ধারণকারী একটি অ্যারে রিটার্ন করে।
+
+এই ফাংশনটি কীভাবে কাজ করে তা দেখতে, চলুন এটিকে আমাদের `Minter.js` কম্পোনেন্টের `useEffect` ফাংশনে কল করি।
+
+আমরা `connectWallet`-এর জন্য যেমনটি করেছিলাম, আমাদের অবশ্যই এই ফাংশনটিকে আমাদের `interact.js` ফাইল থেকে আমাদের `Minter.js` ফাইলে ইমপোর্ট করতে হবে, ঠিক এভাবে:
+
+```javascript
+import { useEffect, useState } from "react"
+import {
+ connectWallet,
+ getCurrentWalletConnected, // এখানে ইমপোর্ট করুন
+} from "./utils/interact.js"
+```
+
+এখন, আমরা কেবল এটিকে আমাদের `useEffect` ফাংশনে কল করব:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+}, [])
+```
+
+লক্ষ্য করুন, আমরা আমাদের `walletAddress` এবং `status` স্টেট ভেরিয়েবলগুলো আপডেট করতে `getCurrentWalletConnected`-এ আমাদের কলের রেসপন্স ব্যবহার করি।
+
+একবার আপনি এই কোডটি যোগ করার পর, আমাদের ব্রাউজার উইন্ডোটি রিফ্রেশ করার চেষ্টা করুন। বোতামটিতে বলা উচিত যে আপনি সংযুক্ত আছেন এবং আপনার সংযুক্ত ওয়ালেটের এডড্রেস-এর একটি প্রিভিউ দেখানো উচিত - এমনকি আপনি রিফ্রেশ করার পরেও!
+
+### addWalletListener ইমপ্লিমেন্ট করুন {#implement-add-wallet-listener}
+
+আমাদের ডিএ্যাপ ওয়ালেট সেটআপের চূড়ান্ত ধাপ হলো ওয়ালেট লিসেনার ইমপ্লিমেন্ট করা যাতে আমাদের ওয়ালেটের স্টেট পরিবর্তিত হলে আমাদের UI আপডেট হয়, যেমন যখন ব্যবহারকারী ডিসকানেক্ট করে বা একাউন্ট স্যুইচ করে।
+
+আপনার `Minter.js` ফাইলে, `addWalletListener` নামের একটি ফাংশন যোগ করুন যা দেখতে নিচের মতো:
+
+```javascript
+function addWalletListener() {
+ if (window.ethereum) {
+ window.ethereum.on("accountsChanged", (accounts) => {
+ if (accounts.length > 0) {
+ setWallet(accounts[0])
+ setStatus("👆🏽 Write a message in the text-field above.")
+ } else {
+ setWallet("")
+ setStatus("🦊 Connect to MetaMask using the top right button.")
+ }
+ })
+ } else {
+ setStatus(
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your browser.
+
+
+ )
+ }
+}
+```
+
+চলুন দ্রুত বিশ্লেষণ করি এখানে কী ঘটছে:
+
+- প্রথমে, আমাদের ফাংশনটি চেক করে যে `window.ethereum` এনাবল করা আছে কি না \(অর্থাৎ, MetaMask ইনস্টল করা আছে কি না\)।
+ - যদি না থাকে, তবে আমরা কেবল আমাদের `status` স্টেট ভেরিয়েবলটিকে একটি JSX স্ট্রিংয়ে সেট করি যা ব্যবহারকারীকে MetaMask ইনস্টল করার জন্য প্রম্পট করে।
+ - যদি এটি এনাবল করা থাকে, তবে আমরা 3 নম্বর লাইনে লিসেনার `window.ethereum.on("accountsChanged")` সেট আপ করি যা MetaMask ওয়ালেটে স্টেট পরিবর্তনের জন্য অপেক্ষা করে, যার মধ্যে রয়েছে যখন ব্যবহারকারী ডিএ্যাপ-এ একটি অতিরিক্ত একাউন্ট সংযুক্ত করে, একাউন্ট স্যুইচ করে বা কোনো একাউন্ট ডিসকানেক্ট করে। যদি অন্তত একটি একাউন্ট সংযুক্ত থাকে, তবে `walletAddress` স্টেট ভেরিয়েবলটি লিসেনার দ্বারা রিটার্ন করা `accounts` অ্যারের প্রথম একাউন্ট হিসেবে আপডেট করা হয়। অন্যথায়, `walletAddress` একটি খালি স্ট্রিং হিসেবে সেট করা হয়।
+
+অবশেষে, আমাদের অবশ্যই এটিকে আমাদের `useEffect` ফাংশনে কল করতে হবে:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+
+ addWalletListener()
+}, [])
+```
+
+এবং ব্যাস! আমরা আমাদের সমস্ত ওয়ালেট কার্যকারিতা প্রোগ্রামিং সম্পন্ন করেছি! এখন যেহেতু আমাদের ওয়ালেট সেট আপ করা হয়েছে, চলুন বের করি কীভাবে আমাদের NFT মিন্ট করতে হয়!
+
+## NFT মেটাডাটা 101 {#nft-metadata-101}
+
+সুতরাং এই টিউটোরিয়ালের 0 ধাপে আমরা যে NFT মেটাডাটা নিয়ে কথা বলেছিলাম তা মনে করুন—এটি একটি NFT-কে জীবন্ত করে তোলে, যার ফলে এর ডিজিটাল অ্যাসেট, নাম, বিবরণ এবং অন্যান্য বৈশিষ্ট্যের মতো প্রপার্টি থাকতে পারে।
+
+আমাদের এই মেটাডাটাকে একটি JSON অবজেক্ট হিসেবে কনফিগার করতে হবে এবং এটি স্টোর করতে হবে, যাতে আমরা আমাদের স্মার্ট কন্ট্রাক্ট-এর `mintNFT` ফাংশন কল করার সময় এটিকে `tokenURI` প্যারামিটার হিসেবে পাস করতে পারি।
+
+"Link to Asset", "Name", "Description" ফিল্ডের টেক্সটগুলো আমাদের NFT-এর মেটাডাটার বিভিন্ন প্রপার্টি গঠন করবে। আমরা এই মেটাডাটাকে একটি JSON অবজেক্ট হিসেবে ফরম্যাট করব, তবে আমরা এই JSON অবজেক্টটি কোথায় স্টোর করতে পারি তার জন্য কয়েকটি অপশন রয়েছে:
+
+- আমরা এটি ইথিরিয়াম ব্লকচেইন-এ স্টোর করতে পারি; তবে, এটি করা খুব ব্যয়বহুল হবে।
+- আমরা এটি AWS বা Firebase-এর মতো একটি সেন্ট্রালাইজড সার্ভারে স্টোর করতে পারি। কিন্তু এটি আমাদের ডিসেন্ট্রালাইজড নীতিকে ব্যাহত করবে।
+- আমরা IPFS ব্যবহার করতে পারি, যা একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেমে ডাটা স্টোর এবং শেয়ার করার জন্য একটি ডিসেন্ট্রালাইজড প্রটোকল এবং পিয়ার-টু-পিয়ার নেটওয়ার্ক। যেহেতু এই প্রটোকলটি ডিসেন্ট্রালাইজড এবং ফ্রি, তাই এটি আমাদের সেরা অপশন!
+
+IPFS-এ আমাদের মেটাডাটা স্টোর করতে, আমরা [Pinata](https://pinata.cloud/) ব্যবহার করব, যা একটি সুবিধাজনক IPFS API এবং টুলকিট। পরবর্তী ধাপে, আমরা ঠিক কীভাবে এটি করতে হয় তা ব্যাখ্যা করব!
+
+## IPFS-এ আপনার মেটাডাটা পিন করতে Pinata ব্যবহার করুন {#use-pinata-to-pin-your-metadata-to-IPFS}
+
+আপনার যদি [Pinata](https://pinata.cloud/) একাউন্ট না থাকে, তবে [এখানে](https://app.pinata.cloud/auth/signup) একটি ফ্রি একাউন্টের জন্য সাইন আপ করুন এবং আপনার ইমেইল ও একাউন্ট ভেরিফাই করার ধাপগুলো সম্পন্ন করুন।
+
+### আপনার Pinata API কি তৈরি করুন {#create-pinata-api-key}
+
+[https://pinata.cloud/keys](https://pinata.cloud/keys) পেজে নেভিগেট করুন, তারপর ওপরের "New Key" বোতামটি নির্বাচন করুন, Admin উইজেটটি এনাবল হিসেবে সেট করুন এবং আপনার কি-এর নাম দিন।
+
+এরপর আপনাকে আপনার API তথ্যসহ একটি পপআপ দেখানো হবে। এটি কোনো নিরাপদ জায়গায় রাখতে ভুলবেন না।
+
+এখন যেহেতু আমাদের কি সেট আপ করা হয়েছে, চলুন এটিকে আমাদের প্রজেক্টে যোগ করি যাতে আমরা এটি ব্যবহার করতে পারি।
+
+### একটি .env ফাইল তৈরি করুন {#create-a-env}
+
+আমরা একটি এনভায়রনমেন্ট ফাইলে আমাদের Pinata কি এবং সিক্রেট নিরাপদে স্টোর করতে পারি। চলুন আপনার প্রজেক্ট ডিরেক্টরিতে [dotenv প্যাকেজ](https://www.npmjs.com/package/dotenv) ইনস্টল করি।
+
+আপনার টার্মিনালে একটি নতুন ট্যাব খুলুন \(লোকাল হোস্ট রান করা ট্যাবটি থেকে আলাদা\) এবং নিশ্চিত করুন যে আপনি `minter-starter-files` ফোল্ডারে আছেন, তারপর আপনার টার্মিনালে নিচের কমান্ডটি রান করুন:
+
+```text
+npm install dotenv --save
+```
+
+এরপর, আপনার কমান্ড লাইনে নিচের কোডটি এন্টার করে আপনার `minter-starter-files`-এর রুট ডিরেক্টরিতে একটি `.env` ফাইল তৈরি করুন:
+
+```javascript
+vim.env
+```
+
+এটি vim \(একটি টেক্সট এডিটর\)-এ আপনার `.env` ফাইলটি পপ ওপেন করবে। এটি সেভ করতে আপনার কীবোর্ডে ক্রমানুসারে "esc" + ":" + "q" চাপুন।
+
+এরপর, VSCode-এ, আপনার `.env` ফাইলে নেভিগেট করুন এবং এতে আপনার Pinata API কি এবং API সিক্রেট যোগ করুন, ঠিক এভাবে:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+```
+
+ফাইলটি সেভ করুন, এবং তারপর আপনি IPFS-এ আপনার JSON মেটাডাটা আপলোড করার জন্য ফাংশন লেখা শুরু করতে প্রস্তুত!
+
+### pinJSONToIPFS ইমপ্লিমেন্ট করুন {#pin-json-to-ipfs}
+
+আমাদের জন্য সৌভাগ্যের বিষয় হলো, Pinata-এর কাছে [IPFS-এ JSON ডাটা আপলোড করার জন্য বিশেষভাবে একটি API](https://docs.pinata.cloud/api-reference/endpoint/ipfs/pin-json-to-ipfs#pin-json) এবং axios-সহ একটি সুবিধাজনক জাভাস্ক্রিপ্ট উদাহরণ রয়েছে যা আমরা সামান্য কিছু পরিবর্তন করে ব্যবহার করতে পারি।
+
+আপনার `utils` ফোল্ডারে, চলুন `pinata.js` নামে আরেকটি ফাইল তৈরি করি এবং তারপর .env ফাইল থেকে আমাদের Pinata সিক্রেট এবং কি ইমপোর্ট করি, ঠিক এভাবে:
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+```
+
+এরপর, নিচের অতিরিক্ত কোডটি আপনার `pinata.js` ফাইলে পেস্ট করুন। চিন্তা করবেন না, আমরা সবকিছুর অর্থ বিশ্লেষণ করব!
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+
+const axios = require("axios")
+
+export const pinJSONToIPFS = async (JSONBody) => {
+ const url = `https://api.pinata.cloud/pinning/pinJSONToIPFS`
+ // Pinata-তে axios POST রিকোয়েস্ট করা হচ্ছে ⬇️
+ return axios
+ .post(url, JSONBody, {
+ headers: {
+ pinata_api_key: key,
+ pinata_secret_api_key: secret,
+ },
+ })
+ .then(function (response) {
+ return {
+ success: true,
+ pinataUrl:
+ "https://gateway.pinata.cloud/ipfs/" + response.data.IpfsHash,
+ }
+ })
+ .catch(function (error) {
+ console.log(error)
+ return {
+ success: false,
+ message: error.message,
+ }
+ })
+}
+```
+
+তাহলে এই কোডটি ঠিক কী করে?
+
+প্রথমে, এটি [axios](https://www.npmjs.com/package/axios) ইমপোর্ট করে, যা ব্রাউজার এবং node.js-এর জন্য একটি প্রমিস-ভিত্তিক HTTP ক্লায়েন্ট, যা আমরা Pinata-তে একটি রিকোয়েস্ট করতে ব্যবহার করব।
+
+তারপর আমাদের অ্যাসিনক্রোনাস ফাংশন `pinJSONToIPFS` রয়েছে, যা ইনপুট হিসেবে একটি `JSONBody` এবং এর হেডারে Pinata api কি এবং সিক্রেট নেয়, এই সবকিছু তাদের `pinJSONToIPFS` API-তে একটি POST রিকোয়েস্ট করার জন্য।
+
+- যদি এই POST রিকোয়েস্টটি সফল হয়, তবে আমাদের ফাংশনটি `success` বুলিয়ান true হিসেবে এবং `pinataUrl` যেখানে আমাদের মেটাডাটা পিন করা হয়েছিল তা সহ একটি JSON অবজেক্ট রিটার্ন করে। আমরা রিটার্ন করা এই `pinataUrl`-কে আমাদের স্মার্ট কন্ট্রাক্ট-এর মিন্ট ফাংশনে `tokenURI` ইনপুট হিসেবে ব্যবহার করব।
+- যদি এই পোস্ট রিকোয়েস্টটি ব্যর্থ হয়, তবে আমাদের ফাংশনটি `success` বুলিয়ান false হিসেবে এবং একটি `message` স্ট্রিং সহ একটি JSON অবজেক্ট রিটার্ন করে যা আমাদের এরর জানায়।
+
+আমাদের `connectWallet` ফাংশনের রিটার্ন টাইপের মতো, আমরা JSON অবজেক্ট রিটার্ন করছি যাতে আমরা আমাদের স্টেট ভেরিয়েবল এবং UI আপডেট করতে তাদের প্যারামিটারগুলো ব্যবহার করতে পারি।
+
+## আপনার স্মার্ট কন্ট্রাক্ট লোড করুন {#load-your-smart-contract}
+
+এখন যেহেতু আমাদের `pinJSONToIPFS` ফাংশনের মাধ্যমে IPFS-এ আমাদের NFT মেটাডাটা আপলোড করার একটি উপায় আছে, তাই আমাদের স্মার্ট কন্ট্রাক্ট-এর একটি ইনস্ট্যান্স লোড করার একটি উপায় প্রয়োজন হবে যাতে আমরা এর `mintNFT` ফাংশন কল করতে পারি।
+
+যেমনটি আমরা আগে উল্লেখ করেছি, এই টিউটোরিয়ালে আমরা [এই বিদ্যমান NFT স্মার্ট কন্ট্রাক্টটি](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE) ব্যবহার করব; তবে, আপনি যদি জানতে চান আমরা এটি কীভাবে তৈরি করেছি, বা নিজে একটি তৈরি করতে চান, তবে আমরা জোরালোভাবে সুপারিশ করছি যে আপনি আমাদের অন্য টিউটোরিয়াল, ["How to Create an NFT."](https://www.alchemy.com/docs/how-to-create-an-nft) দেখে নিন।
+
+### কন্ট্রাক্ট ABI {#contract-abi}
+
+আপনি যদি আমাদের ফাইলগুলো মনোযোগ সহকারে পরীক্ষা করে থাকেন, তবে আপনি লক্ষ্য করবেন যে আমাদের `src` ডিরেক্টরিতে একটি `contract-abi.json` ফাইল রয়েছে। একটি কন্ট্রাক্ট কোন ফাংশনটি ইনভোক করবে তা নির্দিষ্ট করার পাশাপাশি ফাংশনটি আপনার প্রত্যাশিত ফরম্যাটে ডাটা রিটার্ন করবে তা নিশ্চিত করার জন্য একটি ABI প্রয়োজনীয়।
+
+ইথিরিয়াম ব্লকচেইন-এর সাথে সংযুক্ত হতে এবং আমাদের স্মার্ট কন্ট্রাক্ট লোড করতে আমাদের একটি Alchemy API কি এবং Alchemy Web3 API-এরও প্রয়োজন হবে।
+
+### আপনার Alchemy API কি তৈরি করুন {#create-alchemy-api}
+
+আপনার যদি ইতিমধ্যে একটি Alchemy একাউন্ট না থাকে, তবে [এখানে বিনামূল্যে সাইন আপ করুন।](https://alchemy.com/?a=eth-org-nft-minter)
+
+একবার আপনি একটি Alchemy একাউন্ট তৈরি করার পর, আপনি একটি অ্যাপ তৈরি করে একটি API কি জেনারেট করতে পারেন। এটি আমাদের Ropsten টেস্টনেট-এ রিকোয়েস্ট করার অনুমতি দেবে।
+
+ন্যাভ বারে “Apps”-এর ওপর হোভার করে এবং “Create App”-এ ক্লিক করে আপনার Alchemy ড্যাশবোর্ডে “Create App” পেজে নেভিগেট করুন।
+
+আপনার অ্যাপের নাম দিন, আমরা "My First NFT!" বেছে নিয়েছি, একটি সংক্ষিপ্ত বিবরণ দিন, আপনার অ্যাপ বুককিপিংয়ের জন্য ব্যবহৃত এনভায়রনমেন্টের জন্য “Staging” নির্বাচন করুন এবং আপনার নেটওয়ার্ক-এর জন্য “Ropsten” বেছে নিন।
+
+“Create app”-এ ক্লিক করুন এবং ব্যাস! আপনার অ্যাপটি নিচের টেবিলে উপস্থিত হওয়া উচিত।
+
+চমৎকার, এখন যেহেতু আমরা আমাদের HTTP Alchemy API URL তৈরি করেছি, এটি আপনার ক্লিপবোর্ডে কপি করুন...
+
+…এবং তারপর চলুন এটিকে আমাদের `.env` ফাইলে যোগ করি। সব মিলিয়ে, আপনার .env ফাইলটি এরকম হওয়া উচিত:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+REACT_APP_ALCHEMY_KEY = https: // eth-ropsten.alchemyapi.io/v2/
+```
+
+এখন যেহেতু আমাদের কাছে আমাদের কন্ট্রাক্ট ABI এবং আমাদের Alchemy API কি রয়েছে, আমরা [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) ব্যবহার করে আমাদের স্মার্ট কন্ট্রাক্ট লোড করতে প্রস্তুত।
+
+### আপনার Alchemy Web3 এন্ডপয়েন্ট এবং কন্ট্রাক্ট সেট আপ করুন {#setup-alchemy-endpoint}
+
+প্রথমে, যদি আপনার কাছে এটি ইতিমধ্যে না থাকে, তবে আপনাকে টার্মিনালে হোম ডিরেক্টরি: `nft-minter-tutorial`-এ নেভিগেট করে [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) ইনস্টল করতে হবে:
+
+```text
+cd ..
+npm install @alch/alchemy-web3
+```
+
+এরপর চলুন আমাদের `interact.js` ফাইলে ফিরে যাই। ফাইলের একেবারে ওপরে, আপনার .env ফাইল থেকে আপনার Alchemy কি ইমপোর্ট করতে এবং আপনার Alchemy Web3 এন্ডপয়েন্ট সেট আপ করতে নিচের কোডটি যোগ করুন:
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+```
+
+[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) হলো [Web3.js](https://docs.web3js.org/)-এর চারপাশে একটি র্যাপার, যা একজন ওয়েব3 (web3) ডেভেলপার হিসেবে আপনার জীবনকে সহজ করতে উন্নত API মেথড এবং অন্যান্য গুরুত্বপূর্ণ সুবিধা প্রদান করে। এটি এমনভাবে ডিজাইন করা হয়েছে যাতে ন্যূনতম কনফিগারেশনের প্রয়োজন হয়, ফলে আপনি এখনই আপনার অ্যাপে এটি ব্যবহার করা শুরু করতে পারেন!
+
+এরপর, চলুন আমাদের ফাইলে আমাদের কন্ট্রাক্ট ABI এবং কন্ট্রাক্ট এডড্রেস যোগ করি।
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE"
+```
+
+একবার আমাদের কাছে এই দুটি জিনিস চলে এলে, আমরা আমাদের মিন্ট ফাংশন কোডিং শুরু করতে প্রস্তুত!
+
+## mintNFT ফাংশন ইমপ্লিমেন্ট করুন {#implement-the-mintnft-function}
+
+আপনার `interact.js` ফাইলের ভেতরে, চলুন আমাদের ফাংশন, `mintNFT` ডিফাইন করি, যা নাম অনুযায়ী আমাদের NFT মিন্ট করবে।
+
+যেহেতু আমরা অসংখ্য অ্যাসিনক্রোনাস কল করব \(IPFS-এ আমাদের মেটাডাটা পিন করতে Pinata-তে, আমাদের স্মার্ট কন্ট্রাক্ট লোড করতে Alchemy Web3-তে এবং আমাদের লেনদেন সাইন করতে MetaMask-এ\), তাই আমাদের ফাংশনটিও অ্যাসিনক্রোনাস হবে।
+
+আমাদের ফাংশনের তিনটি ইনপুট হবে আমাদের ডিজিটাল অ্যাসেটের `url`, `name`, এবং `description`। `connectWallet` ফাংশনের নিচে নিচের ফাংশন সিগনেচারটি যোগ করুন:
+
+```javascript
+export const mintNFT = async (url, name, description) => {}
+```
+
+### ইনপুট এরর হ্যান্ডলিং {#input-error-handling}
+
+স্বাভাবিকভাবেই, ফাংশনের শুরুতে কোনো ধরনের ইনপুট এরর হ্যান্ডলিং থাকাটা যৌক্তিক, যাতে আমাদের ইনপুট প্যারামিটারগুলো সঠিক না হলে আমরা এই ফাংশন থেকে বেরিয়ে আসতে পারি। আমাদের ফাংশনের ভেতরে, চলুন নিচের কোডটি যোগ করি:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ // এরর হ্যান্ডলিং
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+}
+```
+
+মূলত, যদি ইনপুট প্যারামিটারগুলোর কোনোটি একটি খালি স্ট্রিং হয়, তবে আমরা একটি JSON অবজেক্ট রিটার্ন করি যেখানে `success` বুলিয়ান false হয় এবং `status` স্ট্রিংটি জানায় যে আমাদের UI-এর সমস্ত ফিল্ড অবশ্যই সম্পূর্ণ হতে হবে।
+
+### IPFS-এ মেটাডাটা আপলোড করুন {#upload-metadata-to-ipfs}
+
+একবার আমরা জেনে গেলে যে আমাদের মেটাডাটা সঠিকভাবে ফরম্যাট করা হয়েছে, পরবর্তী ধাপ হলো এটিকে একটি JSON অবজেক্টে র্যাপ করা এবং আমাদের লেখা `pinJSONToIPFS`-এর মাধ্যমে IPFS-এ আপলোড করা!
+
+এটি করার জন্য, প্রথমে আমাদের `interact.js` ফাইলে `pinJSONToIPFS` ফাংশনটি ইমপোর্ট করতে হবে। `interact.js`-এর একেবারে ওপরে, চলুন যোগ করি:
+
+```javascript
+import { pinJSONToIPFS } from "./pinata.js"
+```
+
+মনে রাখবেন যে `pinJSONToIPFS` একটি JSON বডি নেয়। তাই এটিতে কল করার আগে, আমাদের `url`, `name`, এবং `description` প্যারামিটারগুলোকে একটি JSON অবজেক্টে ফরম্যাট করতে হবে।
+
+চলুন `metadata` নামের একটি JSON অবজেক্ট তৈরি করতে আমাদের কোড আপডেট করি এবং তারপর এই `metadata` প্যারামিটার দিয়ে `pinJSONToIPFS`-এ একটি কল করি:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ // এরর হ্যান্ডলিং
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ // মেটাডেটা তৈরি করুন
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ // pinata কল করুন
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+}
+```
+
+লক্ষ্য করুন, আমরা `pinJSONToIPFS(metadata)`-এ আমাদের কলের রেসপন্স `pinataResponse` অবজেক্টে স্টোর করি। তারপর, আমরা কোনো এররের জন্য এই অবজেক্টটি পার্স করি।
+
+যদি কোনো এরর থাকে, তবে আমরা একটি JSON অবজেক্ট রিটার্ন করি যেখানে `success` বুলিয়ান false হয় এবং আমাদের `status` স্ট্রিংটি জানায় যে আমাদের কল ব্যর্থ হয়েছে। অন্যথায়, আমরা `pinataResponse` থেকে `pinataURL` এক্সট্র্যাক্ট করি এবং এটিকে আমাদের `tokenURI` ভেরিয়েবল হিসেবে স্টোর করি।
+
+এখন আমাদের ফাইলের ওপরে ইনিশিয়ালাইজ করা Alchemy Web3 API ব্যবহার করে আমাদের স্মার্ট কন্ট্রাক্ট লোড করার সময় এসেছে। `window.contract` গ্লোবাল ভেরিয়েবলে কন্ট্রাক্ট সেট করতে `mintNFT` ফাংশনের নিচে কোডের নিচের লাইনটি যোগ করুন:
+
+```javascript
+window.contract = await new web3.eth.Contract(contractABI, contractAddress)
+```
+
+আমাদের `mintNFT` ফাংশনে যোগ করার শেষ জিনিসটি হলো আমাদের ইথিরিয়াম লেনদেন:
+
+```javascript
+// আপনার ইথিরিয়াম ট্রানজ্যাকশন সেট আপ করুন
+const transactionParameters = {
+ to: contractAddress, // কন্ট্রাক্ট পাবলিকেশন ছাড়া অন্যান্য ক্ষেত্রে প্রয়োজনীয়।
+ from: window.ethereum.selectedAddress, // অবশ্যই ব্যবহারকারীর সক্রিয় ঠিকানার সাথে মিলতে হবে।
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), // NFT স্মার্ট কন্ট্রাক্টে কল করুন
+}
+
+// MetaMask-এর মাধ্যমে ট্রানজ্যাকশন সাইন করুন
+try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+} catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+}
+```
+
+আপনি যদি ইতিমধ্যে ইথিরিয়াম লেনদেন-এর সাথে পরিচিত হন, তবে আপনি লক্ষ্য করবেন যে এর স্ট্রাকচারটি আপনি যা দেখেছেন তার মতোই।
+
+- প্রথমে, আমরা আমাদের লেনদেন প্যারামিটারগুলো সেট আপ করি।
+ - `to` প্রাপকের এডড্রেস নির্দিষ্ট করে \(আমাদের স্মার্ট কন্ট্রাক্ট\)
+ - `from` লেনদেন-এর সাইনার নির্দিষ্ট করে \(MetaMask-এ ব্যবহারকারীর সংযুক্ত এডড্রেস: `window.ethereum.selectedAddress`\)
+ - `data`-তে আমাদের স্মার্ট কন্ট্রাক্ট `mintNFT` মেথডের কল থাকে, যা ইনপুট হিসেবে আমাদের `tokenURI` এবং ব্যবহারকারীর ওয়ালেট এডড্রেস, `window.ethereum.selectedAddress` গ্রহণ করে
+- তারপর, আমরা একটি await কল করি, `window.ethereum.request,` যেখানে আমরা MetaMask-কে লেনদেন সাইন করতে বলি। লক্ষ্য করুন, এই রিকোয়েস্টে, আমরা আমাদের eth মেথড \(eth_SentTransaction\) নির্দিষ্ট করছি এবং আমাদের `transactionParameters` পাস করছি। এই পর্যায়ে, ব্রাউজারে MetaMask খুলবে এবং ব্যবহারকারীকে লেনদেন সাইন বা প্রত্যাখ্যান করার জন্য প্রম্পট করবে।
+ - যদি লেনদেন সফল হয়, তবে ফাংশনটি একটি JSON অবজেক্ট রিটার্ন করবে যেখানে বুলিয়ান `success` true হিসেবে সেট করা থাকে এবং `status` স্ট্রিংটি ব্যবহারকারীকে তাদের লেনদেন সম্পর্কে আরও তথ্যের জন্য Etherscan চেক করার জন্য প্রম্পট করে।
+ - যদি লেনদেন ব্যর্থ হয়, তবে ফাংশনটি একটি JSON অবজেক্ট রিটার্ন করবে যেখানে `success` বুলিয়ান false হিসেবে সেট করা থাকে এবং `status` স্ট্রিংটি এরর মেসেজ জানায়।
+
+সব মিলিয়ে, আমাদের `mintNFT` ফাংশনটি এরকম হওয়া উচিত:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ // এরর হ্যান্ডলিং
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ // মেটাডেটা তৈরি করুন
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ // pinata পিন রিকোয়েস্ট
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+
+ // স্মার্ট কন্ট্রাক্ট লোড করুন
+ window.contract = await new web3.eth.Contract(contractABI, contractAddress) // loadContract();
+
+ // আপনার ইথিরিয়াম ট্রানজ্যাকশন সেট আপ করুন
+ const transactionParameters = {
+ to: contractAddress, // কন্ট্রাক্ট পাবলিকেশন ছাড়া অন্যান্য ক্ষেত্রে প্রয়োজনীয়।
+ from: window.ethereum.selectedAddress, // অবশ্যই ব্যবহারকারীর সক্রিয় ঠিকানার সাথে মিলতে হবে।
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), // NFT স্মার্ট কন্ট্রাক্টে কল করুন
+ }
+
+ // MetaMask-এর মাধ্যমে ট্রানজ্যাকশন সাইন করুন
+ try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+ } catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+ }
+}
+```
+
+এটি একটি বিশাল ফাংশন! এখন, আমাদের কেবল আমাদের `mintNFT` ফাংশনটিকে আমাদের `Minter.js` কম্পোনেন্টের সাথে সংযুক্ত করতে হবে...
+
+## আমাদের Minter.js ফ্রন্টএন্ডের সাথে mintNFT সংযুক্ত করুন {#connect-our-frontend}
+
+আপনার `Minter.js` ফাইলটি খুলুন এবং ওপরের `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` লাইনটি আপডেট করে নিচের মতো করুন:
+
+```javascript
+import {
+ connectWallet,
+ getCurrentWalletConnected,
+ mintNFT,
+} from "./utils/interact.js"
+```
+
+অবশেষে, আপনার ইমপোর্ট করা `mintNFT` ফাংশনে await কল করতে `onMintPressed` ফাংশনটি ইমপ্লিমেন্ট করুন এবং আমাদের লেনদেন সফল হয়েছে নাকি ব্যর্থ হয়েছে তা প্রতিফলিত করতে `status` স্টেট ভেরিয়েবলটি আপডেট করুন:
+
+```javascript
+const onMintPressed = async () => {
+ const { status } = await mintNFT(url, name, description)
+ setStatus(status)
+}
+```
+
+## একটি লাইভ ওয়েবসাইটে আপনার NFT ডিপ্লয় করুন {#deploy-your-NFT}
+
+ব্যবহারকারীদের ইন্টারঅ্যাক্ট করার জন্য আপনার প্রজেক্ট লাইভ করতে প্রস্তুত? একটি লাইভ ওয়েবসাইটে আপনার মিন্টার ডিপ্লয় করার জন্য [এই টিউটোরিয়ালটি](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online) দেখে নিন।
+
+শেষ একটি ধাপ...
+
+## ব্লকচেইন দুনিয়ায় ঝড় তুলুন {#take-the-blockchain-world-by-storm}
+
+মজা করছিলাম, আপনি টিউটোরিয়ালের শেষ প্রান্তে পৌঁছে গেছেন!
+
+সংক্ষেপে বলতে গেলে, একটি NFT মিন্টার তৈরি করার মাধ্যমে, আপনি সফলভাবে শিখেছেন কীভাবে:
+
+- আপনার ফ্রন্টএন্ড প্রজেক্টের মাধ্যমে MetaMask-এ সংযুক্ত হতে হয়
+- আপনার ফ্রন্টএন্ড থেকে স্মার্ট কন্ট্রাক্ট মেথড কল করতে হয়
+- MetaMask ব্যবহার করে লেনদেন সাইন করতে হয়
+
+সম্ভবত, আপনি আপনার ডিএ্যাপ-এর মাধ্যমে মিন্ট করা NFT-গুলো আপনার ওয়ালেটে দেখাতে চাইবেন — তাই আমাদের দ্রুত টিউটোরিয়াল [How to View Your NFT in Your Wallet](https://www.alchemy.com/docs/how-to-view-your-nft-in-your-mobile-wallet) দেখতে ভুলবেন না!
+
+এবং, বরাবরের মতো, আপনার যদি কোনো প্রশ্ন থাকে, তবে আমরা [Alchemy Discord](https://discord.gg/gWuC7zB)-এ সাহায্য করার জন্য আছি। এই টিউটোরিয়ালের কনসেপ্টগুলো আপনি আপনার ভবিষ্যতের প্রজেক্টগুলোতে কীভাবে প্রয়োগ করেন তা দেখার জন্য আমরা অধীর আগ্রহে অপেক্ষা করছি!
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/bn/developers/tutorials/optimism-std-bridge-annotated-code/index.md
new file mode 100644
index 00000000000..93e50d3d6bb
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/optimism-std-bridge-annotated-code/index.md
@@ -0,0 +1,1294 @@
+---
+title: "অপ্টিমিজম স্ট্যান্ডার্ড ব্রিজ কন্ট্রাক্ট ওয়াকথ্রু"
+description: অপ্টিমিজমের জন্য স্ট্যান্ডার্ড ব্রিজ কীভাবে কাজ করে? কেন এটি এভাবে কাজ করে?
+author: ওরি পোমেরান্টজ
+tags: ["solidity", "ব্রিজ", "লেয়ার ২"]
+skill: intermediate
+breadcrumb: অপ্টিমিজম ব্রিজ
+published: 2022-03-30
+lang: bn
+---
+
+[Optimism](https://www.optimism.io/) হলো একটি [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups/)।
+অপ্টিমেস্টিক রোলআপ ইথিরিয়াম মেইননেট (যা লেয়ার 1 বা L1 নামেও পরিচিত)-এর চেয়ে অনেক কম খরচে লেনদেন প্রসেস করতে পারে কারণ নেটওয়ার্ক-এর প্রতিটি নোড-এর পরিবর্তে শুধুমাত্র কয়েকটি নোড দ্বারা লেনদেন প্রসেস করা হয়।
+একই সাথে, সমস্ত ডেটা L1-এ লেখা হয় যাতে মেইননেট-এর সমস্ত ইন্টিগ্রিটি এবং অ্যাভেইলেবিলিটি গ্যারান্টির সাথে সবকিছু প্রমাণ এবং পুনর্গঠন করা যায়।
+
+Optimism (বা অন্য কোনো L2)-এ L1 অ্যাসেট ব্যবহার করতে, অ্যাসেটগুলোকে [ব্রিজ](/bridges/#prerequisites) করতে হবে।
+এটি অর্জনের একটি উপায় হলো ব্যবহারকারীদের L1-এ অ্যাসেট (ETH এবং [ERC-20 টোকেন](/developers/docs/standards/tokens/erc-20/) সবচেয়ে সাধারণ) লক করা এবং L2-এ ব্যবহার করার জন্য সমতুল্য অ্যাসেট গ্রহণ করা।
+শেষ পর্যন্ত, যার কাছেই এগুলো থাকুক না কেন, সে হয়তো এগুলোকে আবার L1-এ ব্রিজ করতে চাইতে পারে।
+এটি করার সময়, অ্যাসেটগুলো L2-এ বার্ন করা হয় এবং তারপর L1-এ ব্যবহারকারীর কাছে ফেরত দেওয়া হয়।
+
+এভাবেই [Optimism স্ট্যান্ডার্ড ব্রিজ](https://docs.optimism.io/app-developers/bridging/standard-bridge) কাজ করে।
+এই আর্টিকেলে আমরা সেই ব্রিজের সোর্স কোড নিয়ে আলোচনা করব যাতে এটি কীভাবে কাজ করে তা দেখা যায় এবং ভালোভাবে লেখা Solidity কোডের উদাহরণ হিসেবে এটি অধ্যয়ন করা যায়।
+
+## কন্ট্রোল ফ্লো {#control-flows}
+
+ব্রিজের দুটি প্রধান ফ্লো রয়েছে:
+
+- ডিপোজিট (L1 থেকে L2-তে)
+- উত্তোলন (L2 থেকে L1-এ)
+
+### ডিপোজিট ফ্লো {#deposit-flow}
+
+#### লেয়ার 1 {#deposit-flow-layer-1}
+
+1. যদি কোনো ERC-20 ডিপোজিট করা হয়, তবে ডিপোজিটর ব্রিজকে ডিপোজিট করা পরিমাণ খরচ করার অনুমতি দেয়
+2. ডিপোজিটর L1 ব্রিজকে কল করে (`depositERC20`, `depositERC20To`, `depositETH`, বা `depositETHTo`)
+3. L1 ব্রিজ ব্রিজ করা অ্যাসেটের দখল নেয়
+ - ETH: কলের অংশ হিসেবে ডিপোজিটর দ্বারা অ্যাসেট ট্রান্সফার করা হয়
+ - ERC-20: ডিপোজিটরের দেওয়া অনুমতি ব্যবহার করে ব্রিজ নিজেই অ্যাসেট ট্রান্সফার করে নেয়
+4. L1 ব্রিজ ক্রস-ডোমেইন মেসেজ মেকানিজম ব্যবহার করে L2 ব্রিজে `finalizeDeposit` কল করে
+
+#### লেয়ার 2 {#deposit-flow-layer-2}
+
+5. L2 ব্রিজ যাচাই করে যে `finalizeDeposit`-এর কলটি বৈধ কি না:
+ - ক্রস ডোমেইন মেসেজ কন্ট্রাক্ট থেকে এসেছে
+ - মূলত L1-এর ব্রিজ থেকে এসেছে
+6. L2 ব্রিজ চেক করে যে L2-তে ERC-20 টোকেন কন্ট্রাক্টটি সঠিক কি না:
+ - L2 কন্ট্রাক্ট রিপোর্ট করে যে এর L1 কাউন্টারপার্টটি ঠিক সেই কন্ট্রাক্ট যেখান থেকে L1-এ টোকেনগুলো এসেছে
+ - L2 কন্ট্রাক্ট রিপোর্ট করে যে এটি সঠিক ইন্টারফেস সাপোর্ট করে ([ERC-165 ব্যবহার করে](https://eips.ethereum.org/EIPS/eip-165))।
+7. যদি L2 কন্ট্রাক্টটি সঠিক হয়, তবে সঠিক এডড্রেস-এ উপযুক্ত সংখ্যক টোকেন মিন্ট করতে এটিকে কল করুন। যদি না হয়, তবে ব্যবহারকারীকে L1-এ টোকেনগুলো ক্লেইম করার অনুমতি দিতে একটি উত্তোলন প্রক্রিয়া শুরু করুন।
+
+### উত্তোলন ফ্লো {#withdrawal-flow}
+
+#### লেয়ার 2 {#withdrawal-flow-layer-2}
+
+1. উত্তোলনকারী L2 ব্রিজকে কল করে (`withdraw` বা `withdrawTo`)
+2. L2 ব্রিজ `msg.sender`-এর অন্তর্গত উপযুক্ত সংখ্যক টোকেন বার্ন করে
+3. L2 ব্রিজ ক্রস-ডোমেইন মেসেজ মেকানিজম ব্যবহার করে L1 ব্রিজে `finalizeETHWithdrawal` বা `finalizeERC20Withdrawal` কল করে
+
+#### লেয়ার 1 {#withdrawal-flow-layer-1}
+
+4. L1 ব্রিজ যাচাই করে যে `finalizeETHWithdrawal` বা `finalizeERC20Withdrawal`-এর কলটি বৈধ কি না:
+ - ক্রস ডোমেইন মেসেজ মেকানিজম থেকে এসেছে
+ - মূলত L2-এর ব্রিজ থেকে এসেছে
+5. L1 ব্রিজ উপযুক্ত অ্যাসেট (ETH বা ERC-20) সঠিক এডড্রেস-এ ট্রান্সফার করে
+
+## লেয়ার 1 কোড {#layer-1-code}
+
+এটি সেই কোড যা L1, ইথিরিয়াম মেইননেট-এ রান করে।
+
+### IL1ERC20Bridge {#IL1ERC20Bridge}
+
+[এই ইন্টারফেসটি এখানে সংজ্ঞায়িত করা হয়েছে](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol)।
+এতে ERC-20 টোকেন ব্রিজ করার জন্য প্রয়োজনীয় ফাংশন এবং সংজ্ঞা অন্তর্ভুক্ত রয়েছে।
+
+```solidity
+// SPDX-License-Identifier: MIT
+```
+
+[Optimism-এর বেশিরভাগ কোড MIT লাইসেন্সের অধীনে রিলিজ করা হয়েছে](https://help.optimism.io/hc/en-us/articles/4411908707995-What-software-license-does-Optimism-use-)।
+
+```solidity
+pragma solidity >0.5.0 <0.9.0;
+```
+
+লেখার সময় Solidity-এর সর্বশেষ ভার্সন হলো 0.8.12।
+0.9.0 ভার্সন রিলিজ না হওয়া পর্যন্ত, আমরা জানি না এই কোডটি এর সাথে সামঞ্জস্যপূর্ণ হবে কি না।
+
+```solidity
+/* *
+ * @title IL1ERC20Bridge */
+interface IL1ERC20Bridge {
+ /* *********
+ * ইভেন্টস *
+ ********* */
+
+ event ERC20DepositInitiated(
+```
+
+Optimism ব্রিজের পরিভাষায় _ডিপোজিট_ মানে L1 থেকে L2-তে ট্রান্সফার, এবং _উত্তোলন_ মানে L2 থেকে L1-এ ট্রান্সফার।
+
+```solidity
+ address indexed _l1Token,
+ address indexed _l2Token,
+```
+
+বেশিরভাগ ক্ষেত্রে L1-এ একটি ERC-20-এর এডড্রেস L2-তে সমতুল্য ERC-20-এর এডড্রেস-এর সমান হয় না।
+[আপনি এখানে টোকেন এডড্রেস-এর তালিকা দেখতে পারেন](https://static.optimism.io/optimism.tokenlist.json)।
+`chainId` 1 সহ এডড্রেসটি L1 (মেইননেট)-এ এবং `chainId` 10 সহ এডড্রেসটি L2 (Optimism)-তে রয়েছে।
+অন্য দুটি `chainId` ভ্যালু হলো Kovan টেস্ট নেটওয়ার্ক (42) এবং Optimistic Kovan টেস্ট নেটওয়ার্ক (69)-এর জন্য।
+
+```solidity
+ address indexed _from,
+ address _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+ট্রান্সফারে নোট যোগ করা সম্ভব, সেক্ষেত্রে সেগুলো ইভেন্টগুলোতে যোগ করা হয় যা তাদের রিপোর্ট করে।
+
+```solidity
+ event ERC20WithdrawalFinalized(
+ address indexed _l1Token,
+ address indexed _l2Token,
+ address indexed _from,
+ address _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+একই ব্রিজ কন্ট্রাক্ট উভয় দিকে ট্রান্সফার পরিচালনা করে।
+L1 ব্রিজের ক্ষেত্রে, এর মানে হলো ডিপোজিট শুরু করা এবং উত্তোলন চূড়ান্ত করা।
+
+```solidity
+
+ /* *******************
+ * পাবলিক ফাংশনস *
+ ******************* */
+
+ /* *
+ * @dev সংশ্লিষ্ট L2 ব্রিজ কন্ট্রাক্টের ঠিকানা পান।
+ * @return সংশ্লিষ্ট L2 ব্রিজ কন্ট্রাক্টের ঠিকানা। */
+ function l2TokenBridge() external returns (address);
+```
+
+এই ফাংশনটির আসলে প্রয়োজন নেই, কারণ L2-তে এটি একটি প্রি-ডিপ্লয়ড কন্ট্রাক্ট, তাই এটি সর্বদা `0x4200000000000000000000000000000000000010` এডড্রেস-এ থাকে।
+এটি এখানে L2 ব্রিজের সাথে সামঞ্জস্যের জন্য রয়েছে, কারণ L1 ব্রিজের এডড্রেস জানা _সহজ_ নয়।
+
+```solidity
+ /* *
+ * @dev L2-তে কলারের ব্যালেন্সে নির্দিষ্ট পরিমাণ ERC20 ডিপোজিট করুন।
+ * @param _l1Token আমরা যে L1 ERC20 ডিপোজিট করছি তার ঠিকানা
+ * @param _l2Token L1-এর সংশ্লিষ্ট L2 ERC20-এর ঠিকানা
+ * @param _amount ডিপোজিট করার জন্য ERC20-এর পরিমাণ
+ * @param _l2Gas L2-তে ডিপোজিট সম্পন্ন করার জন্য প্রয়োজনীয় গ্যাস লিমিট।
+ * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না। */
+ function depositERC20(
+ address _l1Token,
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+`_l2Gas` প্যারামিটার হলো L2 গ্যাস-এর পরিমাণ যা লেনদেন খরচ করার অনুমতি পায়।
+[একটি নির্দিষ্ট (উচ্চ) সীমা পর্যন্ত, এটি বিনামূল্যে](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2), তাই মিন্ট করার সময় ERC-20 কন্ট্রাক্ট যদি সত্যিই অদ্ভুত কিছু না করে, তবে এটি কোনো সমস্যা হওয়া উচিত নয়।
+এই ফাংশনটি সাধারণ পরিস্থিতির যত্ন নেয়, যেখানে একজন ব্যবহারকারী একটি ভিন্ন ব্লকচেইন-এ একই এডড্রেস-এ অ্যাসেট ব্রিজ করে।
+
+```solidity
+ /* *
+ * @dev L2-তে প্রাপকের ব্যালেন্সে নির্দিষ্ট পরিমাণ ERC20 ডিপোজিট করুন।
+ * @param _l1Token আমরা যে L1 ERC20 ডিপোজিট করছি তার ঠিকানা
+ * @param _l2Token L1-এর সংশ্লিষ্ট L2 ERC20-এর ঠিকানা
+ * @param _to উত্তোলনের ক্রেডিট পাওয়ার জন্য L2 ঠিকানা।
+ * @param _amount ডিপোজিট করার জন্য ERC20-এর পরিমাণ।
+ * @param _l2Gas L2-তে ডিপোজিট সম্পন্ন করার জন্য প্রয়োজনীয় গ্যাস লিমিট।
+ * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না। */
+ function depositERC20To(
+ address _l1Token,
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+এই ফাংশনটি প্রায় `depositERC20`-এর মতোই, তবে এটি আপনাকে একটি ভিন্ন এডড্রেস-এ ERC-20 পাঠাতে দেয়।
+
+```solidity
+ /* ************************
+ * ক্রস-চেইন ফাংশনস *
+ ************************ */
+
+ /* *
+ * @dev L2 থেকে L1-এ উত্তোলন সম্পন্ন করুন এবং প্রাপকের L1 ERC20 টোকেন ব্যালেন্সে ফান্ড ক্রেডিট করুন।
+ * L2 থেকে শুরু হওয়া উত্তোলন চূড়ান্ত না হলে এই কলটি ব্যর্থ হবে।
+ *
+ * @param _l1Token যে L1 টোকেনের জন্য finalizeWithdrawal করা হবে তার ঠিকানা।
+ * @param _l2Token যে L2 টোকেন থেকে উত্তোলন শুরু হয়েছিল তার ঠিকানা।
+ * @param _from ট্রান্সফার শুরু করা L2 ঠিকানা।
+ * @param _to উত্তোলনের ক্রেডিট পাওয়ার জন্য L1 ঠিকানা।
+ * @param _amount ডিপোজিট করার জন্য ERC20-এর পরিমাণ।
+ * @param _data L2-তে প্রেরকের দেওয়া ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+Optimism-এ উত্তোলন (এবং L2 থেকে L1-এ অন্যান্য মেসেজ) একটি দুই ধাপের প্রক্রিয়া:
+
+1. L2-তে একটি প্রারম্ভিক লেনদেন।
+2. L1-এ একটি চূড়ান্ত বা ক্লেইমিং লেনদেন।
+ এই লেনদেনটি L2 লেনদেন-এর জন্য [ফল্ট চ্যালেঞ্জ পিরিয়ড](https://community.optimism.io/docs/how-optimism-works/#fault-proofs) শেষ হওয়ার পরে ঘটতে হবে।
+
+### IL1StandardBridge {#il1standardbridge}
+
+[এই ইন্টারফেসটি এখানে সংজ্ঞায়িত করা হয়েছে](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol)।
+এই ফাইলে ETH-এর জন্য ইভেন্ট এবং ফাংশনের সংজ্ঞা রয়েছে।
+এই সংজ্ঞাগুলো উপরে ERC-20-এর জন্য `IL1ERC20Bridge`-এ সংজ্ঞায়িত করা সংজ্ঞাগুলোর মতোই।
+
+ব্রিজ ইন্টারফেসটি দুটি ফাইলের মধ্যে বিভক্ত কারণ কিছু ERC-20 টোকেনের কাস্টম প্রসেসিং প্রয়োজন এবং স্ট্যান্ডার্ড ব্রিজ দ্বারা পরিচালনা করা যায় না।
+এভাবে কাস্টম ব্রিজ যা এই ধরনের টোকেন পরিচালনা করে তা `IL1ERC20Bridge` ইমপ্লিমেন্ট করতে পারে এবং ETH ব্রিজ করার প্রয়োজন হয় না।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+import "./IL1ERC20Bridge.sol";
+
+/* *
+ * @title IL1StandardBridge */
+interface IL1StandardBridge is IL1ERC20Bridge {
+ /* *********
+ * ইভেন্টস *
+ ********* */
+ event ETHDepositInitiated(
+ address indexed _from,
+ address indexed _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+এই ইভেন্টটি প্রায় ERC-20 ভার্সন (`ERC20DepositInitiated`)-এর মতোই, শুধুমাত্র L1 এবং L2 টোকেন এডড্রেস ছাড়া।
+অন্যান্য ইভেন্ট এবং ফাংশনগুলোর ক্ষেত্রেও একই কথা প্রযোজ্য।
+
+```solidity
+ event ETHWithdrawalFinalized(
+ .
+ .
+ .
+ );
+
+ /* *******************
+ * পাবলিক ফাংশনস *
+ ******************* */
+
+ /* *
+ * @dev L2-তে কলারের ব্যালেন্সে নির্দিষ্ট পরিমাণ ETH ডিপোজিট করুন।
+ .
+ .
+ . */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable;
+
+ /* *
+ * @dev L2-তে প্রাপকের ব্যালেন্সে নির্দিষ্ট পরিমাণ ETH ডিপোজিট করুন।
+ .
+ .
+ . */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable;
+
+ /* ************************
+ * ক্রস-চেইন ফাংশনস *
+ ************************ */
+
+ /* *
+ * @dev L2 থেকে L1-এ উত্তোলন সম্পন্ন করুন এবং প্রাপকের L1 ETH টোকেন ব্যালেন্সে ফান্ড ক্রেডিট করুন। যেহেতু শুধুমাত্র xDomainMessenger এই ফাংশনটি কল করতে পারে, তাই উত্তোলন চূড়ান্ত হওয়ার আগে এটি কখনোই কল করা হবে না।
+ .
+ .
+ . */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+### CrossDomainEnabled {#crossdomainenabled}
+
+অন্য লেয়ার-এ মেসেজ পাঠানোর জন্য উভয় ব্রিজ ([L1](#the-l1-bridge-contract) এবং [L2](#the-l2-bridge-contract)) দ্বারা [এই কন্ট্রাক্টটি](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol) ইনহেরিট করা হয়।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+/* ইন্টারফেস ইমপোর্টস */
+import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol";
+```
+
+[এই ইন্টারফেসটি](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol) কন্ট্রাক্টকে বলে যে কীভাবে ক্রস ডোমেইন মেসেঞ্জার ব্যবহার করে অন্য লেয়ার-এ মেসেজ পাঠাতে হয়।
+এই ক্রস ডোমেইন মেসেঞ্জারটি সম্পূর্ণ অন্য একটি সিস্টেম, এবং এর নিজস্ব একটি আর্টিকেল প্রাপ্য, যা আমি ভবিষ্যতে লেখার আশা করি।
+
+```solidity
+/* *
+ * @title CrossDomainEnabled
+ * @dev ক্রস-ডোমেইন কমিউনিকেশন সম্পাদনকারী কন্ট্রাক্টগুলোর জন্য হেল্পার কন্ট্রাক্ট
+ *
+ * ব্যবহৃত কম্পাইলার: ইনহেরিটিং কন্ট্রাক্ট দ্বারা সংজ্ঞায়িত */
+contract CrossDomainEnabled {
+ /* ************
+ * ভেরিয়েবলস *
+ ************ */
+
+ // অন্য ডোমেইন থেকে মেসেজ পাঠাতে এবং গ্রহণ করতে ব্যবহৃত মেসেঞ্জার কন্ট্রাক্ট।
+ address public messenger;
+
+ /* **************
+ * কনস্ট্রাক্টর *
+ ************** */
+
+ /* *
+ * @param _messenger বর্তমান লেয়ারে CrossDomainMessenger-এর ঠিকানা। */
+ constructor(address _messenger) {
+ messenger = _messenger;
+ }
+```
+
+কন্ট্রাক্টটির যে একটি প্যারামিটার জানা প্রয়োজন, তা হলো এই লেয়ার-এ ক্রস ডোমেইন মেসেঞ্জারের এডড্রেস।
+এই প্যারামিটারটি কনস্ট্রাক্টরে একবার সেট করা হয় এবং কখনো পরিবর্তন হয় না।
+
+```solidity
+
+ /* *********************
+ * ফাংশন মডিফায়ারস *
+ ********************* */
+
+ /* *
+ * মডিফাইড ফাংশনটি শুধুমাত্র একটি নির্দিষ্ট ক্রস-ডোমেইন অ্যাকাউন্ট দ্বারা কলযোগ্য তা নিশ্চিত করে।
+ * @param _sourceDomainAccount অরিজিনেটিং ডোমেইনের একমাত্র অ্যাকাউন্ট যা এই ফাংশনটি কল করার জন্য অনুমোদিত। */
+ modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {
+```
+
+ক্রস ডোমেইন মেসেজিং ব্লকচেইন-এ চলমান যেকোনো কন্ট্রাক্ট দ্বারা অ্যাক্সেসযোগ্য (হয় ইথিরিয়াম মেইননেট বা Optimism)।
+কিন্তু আমাদের প্রতিটি দিকের ব্রিজের প্রয়োজন _শুধুমাত্র_ নির্দিষ্ট মেসেজগুলোকে বিশ্বাস করা যদি সেগুলো অন্য দিকের ব্রিজ থেকে আসে।
+
+```solidity
+ require(
+ msg.sender == address(getCrossDomainMessenger()),
+ "OVM_XCHAIN: messenger contract unauthenticated"
+ );
+```
+
+শুধুমাত্র উপযুক্ত ক্রস ডোমেইন মেসেঞ্জার (`messenger`, যেমনটি আপনি নিচে দেখতে পাচ্ছেন) থেকে আসা মেসেজগুলো বিশ্বাস করা যেতে পারে।
+
+```solidity
+
+ require(
+ getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,
+ "OVM_XCHAIN: wrong sender of cross-domain message"
+ );
+```
+
+ক্রস ডোমেইন মেসেঞ্জার অন্য লেয়ার-এর সাথে মেসেজ পাঠানো এডড্রেসটি যেভাবে প্রদান করে তা হলো [`.xDomainMessageSender()` ফাংশন](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol#L122-L128)।
+যতক্ষণ এটি মেসেজ দ্বারা শুরু হওয়া লেনদেন-এ কল করা হয় ততক্ষণ এটি এই তথ্য প্রদান করতে পারে।
+
+আমাদের নিশ্চিত করতে হবে যে আমরা যে মেসেজটি পেয়েছি তা অন্য ব্রিজ থেকে এসেছে।
+
+```solidity
+
+ _;
+ }
+
+ /* *********************
+ * ইন্টারনাল ফাংশনস *
+ ********************* */
+
+ /* *
+ * সাধারণত স্টোরেজ থেকে মেসেঞ্জার পায়। চাইল্ড কন্ট্রাক্টের ওভাররাইড করার প্রয়োজন হলে এই ফাংশনটি এক্সপোজ করা হয়।
+ * @return যে ক্রস-ডোমেইন মেসেঞ্জার কন্ট্রাক্টটি ব্যবহার করা উচিত তার ঠিকানা। */
+ function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {
+ return ICrossDomainMessenger(messenger);
+ }
+```
+
+এই ফাংশনটি ক্রস ডোমেইন মেসেঞ্জার রিটার্ন করে।
+আমরা `messenger` ভেরিয়েবলের পরিবর্তে একটি ফাংশন ব্যবহার করি যাতে এই কন্ট্রাক্ট থেকে ইনহেরিট করা কন্ট্রাক্টগুলো কোন ক্রস ডোমেইন মেসেঞ্জার ব্যবহার করতে হবে তা নির্দিষ্ট করতে একটি এ্যালগরিদম ব্যবহার করতে পারে।
+
+```solidity
+
+ /* *
+ * অন্য ডোমেইনের একটি অ্যাকাউন্টে মেসেজ পাঠায়
+ * @param _crossDomainTarget গন্তব্য ডোমেইনে উদ্দিষ্ট প্রাপক
+ * @param _message টার্গেটে পাঠানোর জন্য ডেটা (সাধারণত `onlyFromCrossDomainAccount()` সহ একটি ফাংশনে কলডেটা)
+ * @param _gasLimit টার্গেট ডোমেইনে মেসেজ রিসিভ করার জন্য গ্যাস লিমিট। */
+ function sendCrossDomainMessage(
+ address _crossDomainTarget,
+ uint32 _gasLimit,
+ bytes memory _message
+```
+
+সবশেষে, যে ফাংশনটি অন্য লেয়ার-এ মেসেজ পাঠায়।
+
+```solidity
+ ) internal {
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+```
+
+[Slither](https://github.com/crytic/slither) হলো একটি স্ট্যাটিক অ্যানালাইজার যা Optimism প্রতিটি কন্ট্রাক্টে দুর্বলতা এবং অন্যান্য সম্ভাব্য সমস্যা খুঁজতে রান করে।
+এই ক্ষেত্রে, নিচের লাইনটি দুটি দুর্বলতা ট্রিগার করে:
+
+1. [রিএন্ট্রান্সি ইভেন্ট](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3)
+2. [বিনাইন রিএন্ট্রান্সি](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2)
+
+```solidity
+ getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);
+ }
+}
+```
+
+এই ক্ষেত্রে আমরা রিএন্ট্রান্সি নিয়ে চিন্তিত নই, আমরা জানি `getCrossDomainMessenger()` একটি বিশ্বস্ত এডড্রেস রিটার্ন করে, যদিও Slither-এর তা জানার কোনো উপায় নেই।
+
+### The L1 bridge contract {#the-l1-bridge-contract}
+
+[এই কন্ট্রাক্টের সোর্স কোড এখানে রয়েছে](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1StandardBridge.sol)।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+```
+
+ইন্টারফেসগুলো অন্যান্য কন্ট্রাক্টের অংশ হতে পারে, তাই তাদের Solidity ভার্সনের একটি বিস্তৃত পরিসর সাপোর্ট করতে হবে।
+কিন্তু ব্রিজটি নিজেই আমাদের কন্ট্রাক্ট, এবং এটি কোন Solidity ভার্সন ব্যবহার করে সে সম্পর্কে আমরা কঠোর হতে পারি।
+
+```solidity
+/* ইন্টারফেস ইমপোর্টস */
+import { IL1StandardBridge } from "./IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "./IL1ERC20Bridge.sol";
+```
+
+[IL1ERC20Bridge](#IL1ERC20Bridge) এবং [IL1StandardBridge](#IL1StandardBridge) উপরে ব্যাখ্যা করা হয়েছে।
+
+```solidity
+import { IL2ERC20Bridge } from "../../L2/messaging/IL2ERC20Bridge.sol";
+```
+
+[এই ইন্টারফেসটি](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) আমাদের L2-তে স্ট্যান্ডার্ড ব্রিজ নিয়ন্ত্রণ করার জন্য মেসেজ তৈরি করতে দেয়।
+
+```solidity
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[এই ইন্টারফেসটি](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) আমাদের ERC-20 কন্ট্রাক্ট নিয়ন্ত্রণ করতে দেয়।
+[আপনি এখানে এটি সম্পর্কে আরও পড়তে পারেন](/developers/tutorials/erc20-annotated-code/#the-interface)।
+
+```solidity
+/* লাইব্রেরি ইমপোর্টস */
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+```
+
+[উপরে ব্যাখ্যা করা হয়েছে](#crossdomainenabled), এই কন্ট্রাক্টটি ইন্টারলেয়ার মেসেজিংয়ের জন্য ব্যবহৃত হয়।
+
+```solidity
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+```
+
+[`Lib_PredeployAddresses`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol)-এ L2 কন্ট্রাক্টগুলোর এডড্রেস রয়েছে যেগুলোর সর্বদা একই এডড্রেস থাকে। এর মধ্যে L2-তে স্ট্যান্ডার্ড ব্রিজ অন্তর্ভুক্ত রয়েছে।
+
+```solidity
+import { Address } from "@openzeppelin/contracts/utils/Address.sol";
+```
+
+[OpenZeppelin-এর Address ইউটিলিটিজ](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol)। এটি কন্ট্রাক্ট এডড্রেস এবং এক্সটার্নালি ওনড একাউন্ট (EOA)-এর অন্তর্গত এডড্রেসগুলোর মধ্যে পার্থক্য করতে ব্যবহৃত হয়।
+
+মনে রাখবেন যে এটি একটি নিখুঁত সমাধান নয়, কারণ সরাসরি কল এবং কন্ট্রাক্টের কনস্ট্রাক্টর থেকে করা কলগুলোর মধ্যে পার্থক্য করার কোনো উপায় নেই, তবে অন্তত এটি আমাদের কিছু সাধারণ ব্যবহারকারীর ত্রুটি শনাক্ত করতে এবং প্রতিরোধ করতে দেয়।
+
+```solidity
+import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+```
+
+[ERC-20 স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-20) একটি কন্ট্রাক্টের ব্যর্থতা রিপোর্ট করার দুটি উপায় সাপোর্ট করে:
+
+1. রিভার্ট
+2. `false` রিটার্ন করা
+
+উভয় ক্ষেত্র পরিচালনা করা আমাদের কোডকে আরও জটিল করে তুলবে, তাই এর পরিবর্তে আমরা [OpenZeppelin-এর `SafeERC20`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol) ব্যবহার করি, যা নিশ্চিত করে যে [সমস্ত ব্যর্থতার ফলে একটি রিভার্ট হয়](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol#L96)।
+
+```solidity
+/* *
+ * @title L1StandardBridge
+ * @dev L1 ETH এবং ERC20 ব্রিজ হলো এমন একটি কন্ট্রাক্ট যা ডিপোজিট করা L1 ফান্ড এবং L2-তে ব্যবহৃত স্ট্যান্ডার্ড টোকেনগুলো স্টোর করে। এটি একটি সংশ্লিষ্ট L2 ব্রিজ সিঙ্ক্রোনাইজ করে, এটিকে ডিপোজিট সম্পর্কে অবহিত করে এবং নতুন চূড়ান্ত হওয়া উত্তোলনের জন্য এটি লিসেন করে।
+ * */
+contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled {
+ using SafeERC20 for IERC20;
+```
+
+এই লাইনটি হলো যেভাবে আমরা প্রতিবার `IERC20` ইন্টারফেস ব্যবহার করার সময় `SafeERC20` র্যাপার ব্যবহার করার নির্দেশ দিই।
+
+```solidity
+
+ /* *******************************
+ * এক্সটার্নাল কন্ট্রাক্ট রেফারেন্সেস *
+ ******************************* */
+
+ address public l2TokenBridge;
+```
+
+[L2StandardBridge](#the-l2-bridge-contract)-এর এডড্রেস।
+
+```solidity
+
+ // ডিপোজিট করা L1 টোকেনের ব্যালেন্সে L1 টোকেন থেকে L2 টোকেন ম্যাপ করে
+ mapping(address => mapping(address => uint256)) public deposits;
+```
+
+এই ধরনের একটি ডাবল [ম্যাপিং](https://www.tutorialspoint.com/solidity/solidity_mappings.htm) হলো যেভাবে আপনি একটি [টু-ডাইমেনশনাল স্পার্স অ্যারে](https://en.wikipedia.org/wiki/Sparse_matrix) সংজ্ঞায়িত করেন।
+এই ডেটা স্ট্রাকচারের ভ্যালুগুলো `deposit[L1 token addr][L2 token addr]` হিসেবে চিহ্নিত করা হয়।
+ডিফল্ট ভ্যালু হলো শূন্য।
+শুধুমাত্র যে সেলগুলো একটি ভিন্ন ভ্যালুতে সেট করা হয় সেগুলো স্টোরেজে লেখা হয়।
+
+```solidity
+
+ /* **************
+ * কনস্ট্রাক্টর *
+ ************** */
+
+ // এই কন্ট্রাক্টটি একটি প্রক্সির পিছনে থাকে, তাই কনস্ট্রাক্টর প্যারামিটারগুলো অব্যবহৃত থাকবে।
+ constructor() CrossDomainEnabled(address(0)) {}
+```
+
+স্টোরেজে সমস্ত ভেরিয়েবল কপি না করেই এই কন্ট্রাক্টটি আপগ্রেড করতে সক্ষম হতে চাই।
+এটি করার জন্য আমরা একটি [`Proxy`](https://docs.openzeppelin.com/contracts/3.x/api/proxy) ব্যবহার করি, একটি কন্ট্রাক্ট যা একটি পৃথক কন্ট্রাক্টে কল ট্রান্সফার করতে [`delegatecall`](https://solidity-by-example.org/delegatecall/) ব্যবহার করে যার এডড্রেস প্রক্সি কন্ট্রাক্ট দ্বারা সংরক্ষিত থাকে (যখন আপনি আপগ্রেড করেন তখন আপনি প্রক্সিকে সেই এডড্রেস পরিবর্তন করতে বলেন)।
+যখন আপনি `delegatecall` ব্যবহার করেন তখন স্টোরেজটি _কলিং_ কন্ট্রাক্টের স্টোরেজ থাকে, তাই সমস্ত কন্ট্রাক্ট স্টেট ভেরিয়েবলের ভ্যালুগুলো প্রভাবিত হয় না।
+
+এই প্যাটার্নের একটি প্রভাব হলো যে কন্ট্রাক্টটি `delegatecall`-এর _কলড_ তার স্টোরেজ ব্যবহৃত হয় না এবং তাই এতে পাস করা কনস্ট্রাক্টর ভ্যালুগুলো কোনো ব্যাপার না।
+এই কারণেই আমরা `CrossDomainEnabled` কনস্ট্রাক্টরে একটি অর্থহীন ভ্যালু প্রদান করতে পারি।
+এটিও একটি কারণ যে নিচের ইনিশিয়ালাইজেশনটি কনস্ট্রাক্টর থেকে আলাদা।
+
+```solidity
+ /* *****************
+ * ইনিশিয়ালাইজেশন *
+ ***************** */
+
+ /* *
+ * @param _l1messenger ক্রস-চেইন কমিউনিকেশনের জন্য ব্যবহৃত L1 মেসেঞ্জারের ঠিকানা।
+ * @param _l2TokenBridge L2 স্ট্যান্ডার্ড ব্রিজ ঠিকানা। */
+ // slither-disable-next-line external-function
+```
+
+এই [Slither টেস্ট](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) এমন ফাংশনগুলো শনাক্ত করে যেগুলো কন্ট্রাক্ট কোড থেকে কল করা হয় না এবং তাই `public`-এর পরিবর্তে `external` ঘোষণা করা যেতে পারে।
+`external` ফাংশনগুলোর গ্যাস খরচ কম হতে পারে, কারণ সেগুলোকে কলডেটায় প্যারামিটার সরবরাহ করা যেতে পারে।
+`public` ঘোষিত ফাংশনগুলো কন্ট্রাক্টের ভেতর থেকে অ্যাক্সেসযোগ্য হতে হবে।
+কন্ট্রাক্টগুলো তাদের নিজস্ব কলডেটা পরিবর্তন করতে পারে না, তাই প্যারামিটারগুলো মেমোরিতে থাকতে হবে।
+যখন এই ধরনের একটি ফাংশন বাহ্যিকভাবে কল করা হয়, তখন কলডেটা মেমোরিতে কপি করা প্রয়োজন, যার জন্য গ্যাস খরচ হয়।
+এই ক্ষেত্রে ফাংশনটি শুধুমাত্র একবার কল করা হয়, তাই অদক্ষতা আমাদের কাছে কোনো ব্যাপার না।
+
+```solidity
+ function initialize(address _l1messenger, address _l2TokenBridge) public {
+ require(messenger == address(0), "Contract has already been initialized.");
+```
+
+`initialize` ফাংশনটি শুধুমাত্র একবার কল করা উচিত।
+যদি L1 ক্রস ডোমেইন মেসেঞ্জার বা L2 টোকেন ব্রিজের এডড্রেস পরিবর্তন হয়, তবে আমরা একটি নতুন প্রক্সি এবং একটি নতুন ব্রিজ তৈরি করি যা এটিকে কল করে।
+সম্পূর্ণ সিস্টেম আপগ্রেড হওয়া ছাড়া এটি ঘটার সম্ভাবনা কম, যা একটি খুব বিরল ঘটনা।
+
+মনে রাখবেন যে এই ফাংশনটিতে এমন কোনো মেকানিজম নেই যা সীমাবদ্ধ করে যে _কে_ এটিকে কল করতে পারে।
+এর মানে হলো তাত্ত্বিকভাবে একজন আক্রমণকারী অপেক্ষা করতে পারে যতক্ষণ না আমরা প্রক্সি এবং ব্রিজের প্রথম ভার্সন ডিপ্লয় করি এবং তারপর বৈধ ব্যবহারকারীর আগে `initialize` ফাংশনে পৌঁছানোর জন্য [ফ্রন্ট-রান](https://solidity-by-example.org/hacks/front-running/) করতে পারে। তবে এটি প্রতিরোধ করার দুটি পদ্ধতি রয়েছে:
+
+1. যদি কন্ট্রাক্টগুলো সরাসরি কোনো EOA দ্বারা ডিপ্লয় না হয়ে [এমন একটি লেনদেন-এ হয় যেখানে অন্য একটি কন্ট্রাক্ট তাদের তৈরি করে](https://medium.com/upstate-interactive/creating-a-contract-with-a-smart-contract-bdb67c5c8595) তবে সম্পূর্ণ প্রক্রিয়াটি অ্যাটমিক হতে পারে এবং অন্য কোনো লেনদেন এক্সিকিউট হওয়ার আগেই শেষ হতে পারে।
+2. যদি `initialize`-এর বৈধ কল ব্যর্থ হয় তবে নতুন তৈরি প্রক্সি এবং ব্রিজ উপেক্ষা করা এবং নতুন তৈরি করা সর্বদা সম্ভব।
+
+```solidity
+ messenger = _l1messenger;
+ l2TokenBridge = _l2TokenBridge;
+ }
+```
+
+এই দুটি প্যারামিটার ব্রিজের জানা প্রয়োজন।
+
+```solidity
+
+ /* *************
+ * ডিপোজিটিং *
+ ************* */
+
+ /* * @dev মডিফায়ার যার জন্য প্রেরককে EOA হতে হবে। এই চেকটি initcode-এর মাধ্যমে একটি ক্ষতিকারক কন্ট্রাক্ট দ্বারা বাইপাস করা যেতে পারে, তবে এটি ব্যবহারকারীর ত্রুটিগুলোর যত্ন নেয় যা আমরা এড়াতে চাই। */
+ modifier onlyEOA() {
+ // কন্ট্রাক্টগুলো থেকে ডিপোজিট বন্ধ করতে ব্যবহৃত হয় (দুর্ঘটনাবশত টোকেন হারানো এড়াতে)
+ require(!Address.isContract(msg.sender), "Account not EOA");
+ _;
+ }
+```
+
+এই কারণেই আমাদের OpenZeppelin-এর `Address` ইউটিলিটিজ প্রয়োজন ছিল।
+
+```solidity
+ /* *
+ * @dev L2-তে কলারের ব্যালেন্সে নির্দিষ্ট পরিমাণ ETH ডিপোজিট করতে
+ * কোনো ডেটা ছাড়াই এই ফাংশনটি কল করা যেতে পারে।
+ * যেহেতু রিসিভ ফাংশন ডেটা নেয় না, তাই একটি রক্ষণশীল
+ * ডিফল্ট পরিমাণ L2-তে ফরোয়ার্ড করা হয়。 */
+ receive() external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, 200_000, bytes(""));
+ }
+```
+
+এই ফাংশনটি টেস্টিংয়ের উদ্দেশ্যে বিদ্যমান।
+লক্ষ্য করুন যে এটি ইন্টারফেস সংজ্ঞায় উপস্থিত নেই - এটি সাধারণ ব্যবহারের জন্য নয়।
+
+```solidity
+ /* *
+ * @inheritdoc IL1StandardBridge */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, _l2Gas, _data);
+ }
+
+ /* *
+ * @inheritdoc IL1StandardBridge */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable {
+ _initiateETHDeposit(msg.sender, _to, _l2Gas, _data);
+ }
+```
+
+এই দুটি ফাংশন হলো `_initiateETHDeposit`-এর চারপাশের র্যাপার, যে ফাংশনটি প্রকৃত ETH ডিপোজিট পরিচালনা করে।
+
+```solidity
+ /* *
+ * @dev ETH স্টোর করে এবং L2 ETH গেটওয়েকে ডিপোজিট সম্পর্কে অবহিত করে ডিপোজিটের লজিক সম্পাদন করে।
+ * @param _from L1-এ যে অ্যাকাউন্ট থেকে ডিপোজিট নেওয়া হবে।
+ * @param _to L2-তে যে অ্যাকাউন্টে ডিপোজিট দেওয়া হবে।
+ * @param _l2Gas L2-তে ডিপোজিট সম্পন্ন করার জন্য প্রয়োজনীয় গ্যাস লিমিট।
+ * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ function _initiateETHDeposit(
+ address _from,
+ address _to,
+ uint32 _l2Gas,
+ bytes memory _data
+ ) internal {
+ // finalizeDeposit কলের জন্য কলডেটা তৈরি করুন
+ bytes memory message = abi.encodeWithSelector(
+```
+
+ক্রস ডোমেইন মেসেজগুলো যেভাবে কাজ করে তা হলো গন্তব্য কন্ট্রাক্টটিকে মেসেজটিকে এর কলডেটা হিসেবে কল করা হয়।
+Solidity কন্ট্রাক্টগুলো সর্বদা [ABI স্পেসিফিকেশন](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html) অনুযায়ী তাদের কলডেটা ব্যাখ্যা করে।
+Solidity ফাংশন [`abi.encodeWithSelector`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#abi-encoding-and-decoding-functions) সেই কলডেটা তৈরি করে।
+
+```solidity
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ address(0),
+ Lib_PredeployAddresses.OVM_ETH,
+ _from,
+ _to,
+ msg.value,
+ _data
+ );
+```
+
+এখানকার মেসেজটি হলো এই প্যারামিটারগুলোর সাথে [`finalizeDeposit` ফাংশন](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol#L141-L148) কল করা:
+
+| প্যারামিটার | ভ্যালু | অর্থ |
+| --------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
+| \_l1Token | address(0) | L1-এ ETH (যা কোনো ERC-20 টোকেন নয়)-এর জন্য বিশেষ ভ্যালু |
+| \_l2Token | Lib_PredeployAddresses.OVM_ETH | L2 কন্ট্রাক্ট যা Optimism-এ ETH পরিচালনা করে, `0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000` (এই কন্ট্রাক্টটি শুধুমাত্র অভ্যন্তরীণ Optimism ব্যবহারের জন্য) |
+| \_from | \_from | L1-এর এডড্রেস যা ETH পাঠায় |
+| \_to | \_to | L2-এর এডড্রেস যা ETH গ্রহণ করে |
+| amount | msg.value | পাঠানো wei-এর পরিমাণ (যা ইতিমধ্যে ব্রিজে পাঠানো হয়েছে) |
+| \_data | \_data | ডিপোজিটের সাথে যুক্ত করার জন্য অতিরিক্ত ডেটা |
+
+```solidity
+ // L2-তে কলডেটা পাঠান
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+```
+
+ক্রস ডোমেইন মেসেঞ্জারের মাধ্যমে মেসেজটি পাঠান।
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ emit ETHDepositInitiated(_from, _to, msg.value, _data);
+ }
+```
+
+এই ট্রান্সফার সম্পর্কে শোনে এমন যেকোনো ডিসেন্ট্রালাইজড এপ্লিকেশন-কে জানাতে একটি ইভেন্ট এমিট করুন।
+
+```solidity
+ /* *
+ * @inheritdoc IL1ERC20Bridge */
+ function depositERC20(
+ .
+ .
+ .
+ ) external virtual onlyEOA {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, msg.sender, _amount, _l2Gas, _data);
+ }
+
+ /* *
+ * @inheritdoc IL1ERC20Bridge */
+ function depositERC20To(
+ .
+ .
+ .
+ ) external virtual {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, _to, _amount, _l2Gas, _data);
+ }
+```
+
+এই দুটি ফাংশন হলো `_initiateERC20Deposit`-এর চারপাশের র্যাপার, যে ফাংশনটি প্রকৃত ERC-20 ডিপোজিট পরিচালনা করে।
+
+```solidity
+ /* *
+ * @dev L2 ডিপোজিটেড টোকেন কন্ট্রাক্টকে ডিপোজিট সম্পর্কে অবহিত করে এবং L1 ফান্ড লক করার জন্য একটি হ্যান্ডলার কল করে (যেমন, transferFrom) ডিপোজিটের লজিক সম্পাদন করে।
+ *
+ * @param _l1Token আমরা যে L1 ERC20 ডিপোজিট করছি তার ঠিকানা
+ * @param _l2Token L1-এর সংশ্লিষ্ট L2 ERC20-এর ঠিকানা
+ * @param _from L1-এ যে অ্যাকাউন্ট থেকে ডিপোজিট নেওয়া হবে
+ * @param _to L2-তে যে অ্যাকাউন্টে ডিপোজিট দেওয়া হবে
+ * @param _amount ডিপোজিট করার জন্য ERC20-এর পরিমাণ।
+ * @param _l2Gas L2-তে ডিপোজিট সম্পন্ন করার জন্য প্রয়োজনীয় গ্যাস লিমিট।
+ * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ function _initiateERC20Deposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) internal {
+```
+
+এই ফাংশনটি উপরের `_initiateETHDeposit`-এর মতোই, তবে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
+প্রথম পার্থক্য হলো এই ফাংশনটি টোকেন এডড্রেস এবং ট্রান্সফার করার পরিমাণ প্যারামিটার হিসেবে গ্রহণ করে।
+ETH-এর ক্ষেত্রে ব্রিজে কলে ইতিমধ্যে ব্রিজ একাউন্ট-এ অ্যাসেট ট্রান্সফার অন্তর্ভুক্ত থাকে (`msg.value`)।
+
+```solidity
+ // যখন L1-এ কোনো ডিপোজিট শুরু হয়, তখন L1 ব্রিজ ভবিষ্যতের জন্য ফান্ডগুলো নিজের কাছে ট্রান্সফার করে
+ // উত্তোলনের জন্য। safeTransferFrom কন্ট্রাক্টে কোড আছে কিনা তাও চেক করে, তাই এটি ব্যর্থ হবে যদি
+ // _from একটি EOA বা address(0) হয়।
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount);
+```
+
+ERC-20 টোকেন ট্রান্সফার ETH থেকে একটি ভিন্ন প্রক্রিয়া অনুসরণ করে:
+
+1. ব্যবহারকারী (`_from`) উপযুক্ত টোকেন ট্রান্সফার করার জন্য ব্রিজকে একটি অনুমতি দেয়।
+2. ব্যবহারকারী টোকেন কন্ট্রাক্টের এডড্রেস, পরিমাণ ইত্যাদি দিয়ে ব্রিজকে কল করে।
+3. ব্রিজ ডিপোজিট প্রক্রিয়ার অংশ হিসেবে টোকেনগুলো (নিজের কাছে) ট্রান্সফার করে।
+
+প্রথম ধাপটি শেষ দুটির থেকে একটি পৃথক লেনদেন-এ ঘটতে পারে।
+তবে, ফ্রন্ট-রানিং কোনো সমস্যা নয় কারণ যে দুটি ফাংশন `_initiateERC20Deposit` কল করে (`depositERC20` এবং `depositERC20To`) তারা শুধুমাত্র `msg.sender`-কে `_from` প্যারামিটার হিসেবে দিয়ে এই ফাংশনটিকে কল করে।
+
+```solidity
+ // _l2Token.finalizeDeposit(_to, _amount)-এর জন্য কলডেটা তৈরি করুন
+ bytes memory message = abi.encodeWithSelector(
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ _l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+
+ // L2-তে কলডেটা পাঠান
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+
+ // slither-disable-next-line reentrancy-benign
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] + _amount;
+```
+
+ডিপোজিট করা টোকেনের পরিমাণ `deposits` ডেটা স্ট্রাকচারে যোগ করুন।
+L2-তে একাধিক এডড্রেস থাকতে পারে যা একই L1 ERC-20 টোকেনের সাথে মিলে যায়, তাই ডিপোজিটের ট্র্যাক রাখতে L1 ERC-20 টোকেনের ব্রিজের ব্যালেন্স ব্যবহার করা যথেষ্ট নয়।
+
+```solidity
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+ /* ************************
+ * ক্রস-চেইন ফাংশনস *
+ ************************ */
+
+ /* *
+ * @inheritdoc IL1StandardBridge */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+L2 ব্রিজ L2 ক্রস ডোমেইন মেসেঞ্জারে একটি মেসেজ পাঠায় যার ফলে L1 ক্রস ডোমেইন মেসেঞ্জার এই ফাংশনটিকে কল করে (অবশ্যই একবার [মেসেজ চূড়ান্তকারী লেনদেন](https://community.optimism.io/docs/developers/bridge/messaging/#fees-for-l2-%E2%87%92-l1-transactions) L1-এ সাবমিট হওয়ার পর)।
+
+```solidity
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+নিশ্চিত করুন যে এটি একটি _বৈধ_ মেসেজ, যা ক্রস ডোমেইন মেসেঞ্জার থেকে আসছে এবং L2 টোকেন ব্রিজ থেকে উদ্ভূত।
+এই ফাংশনটি ব্রিজ থেকে ETH উত্তোলন করতে ব্যবহৃত হয়, তাই আমাদের নিশ্চিত করতে হবে যে এটি শুধুমাত্র অনুমোদিত কলার দ্বারা কল করা হয়েছে।
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ (bool success, ) = _to.call{ value: _amount }(new bytes(0));
+```
+
+ETH ট্রান্সফার করার উপায় হলো `msg.value`-তে wei-এর পরিমাণ দিয়ে প্রাপককে কল করা।
+
+```solidity
+ require(success, "TransferHelper::safeTransferETH: ETH transfer failed");
+
+ // slither-disable-next-line reentrancy-events
+ emit ETHWithdrawalFinalized(_from, _to, _amount, _data);
+```
+
+উত্তোলন সম্পর্কে একটি ইভেন্ট এমিট করুন।
+
+```solidity
+ }
+
+ /* *
+ * @inheritdoc IL1ERC20Bridge */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+এই ফাংশনটি উপরের `finalizeETHWithdrawal`-এর মতোই, ERC-20 টোকেনের জন্য প্রয়োজনীয় পরিবর্তনসহ।
+
+```solidity
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] - _amount;
+```
+
+`deposits` ডেটা স্ট্রাকচার আপডেট করুন।
+
+```solidity
+
+ // যখন L1-এ কোনো উত্তোলন চূড়ান্ত হয়, তখন L1 ব্রিজ উত্তোলনকারীর কাছে ফান্ড ট্রান্সফার করে
+ // slither-disable-next-line reentrancy-events
+ IERC20(_l1Token).safeTransfer(_to, _amount);
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20WithdrawalFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+
+ /* ****************************
+ * অস্থায়ী - মাইগ্রেটিং ETH *
+ **************************** */
+
+ /* *
+ * @dev অ্যাকাউন্টে ETH ব্যালেন্স যোগ করে। এটি একটি পুরানো গেটওয়ে থেকে নতুন গেটওয়েতে ETH
+ * মাইগ্রেট করার অনুমতি দেওয়ার জন্য তৈরি করা হয়েছে।
+ * দ্রষ্টব্য: এটি শুধুমাত্র একটি আপগ্রেডের জন্য রাখা হয়েছে যাতে আমরা পুরানো কন্ট্রাক্ট থেকে
+ * মাইগ্রেট করা ETH গ্রহণ করতে পারি */
+ function donateETH() external payable {}
+}
+```
+
+ব্রিজের একটি পূর্ববর্তী ইমপ্লিমেন্টেশন ছিল।
+যখন আমরা সেই ইমপ্লিমেন্টেশন থেকে এটিতে চলে আসি, তখন আমাদের সমস্ত অ্যাসেট সরাতে হয়েছিল।
+ERC-20 টোকেনগুলো সহজেই সরানো যেতে পারে।
+তবে, একটি কন্ট্রাক্টে ETH ট্রান্সফার করতে আপনার সেই কন্ট্রাক্টের অনুমোদন প্রয়োজন, যা `donateETH` আমাদের প্রদান করে।
+
+## L2-তে ERC-20 টোকেন {#erc-20-tokens-on-l2}
+
+একটি ERC-20 টোকেনকে স্ট্যান্ডার্ড ব্রিজে ফিট করার জন্য, এটিকে স্ট্যান্ডার্ড ব্রিজকে এবং _শুধুমাত্র_ স্ট্যান্ডার্ড ব্রিজকে টোকেন মিন্ট করার অনুমতি দিতে হবে।
+এটি প্রয়োজনীয় কারণ ব্রিজগুলোকে নিশ্চিত করতে হবে যে Optimism-এ সার্কুলেট হওয়া টোকেনের সংখ্যা L1 ব্রিজ কন্ট্রাক্টের ভেতরে লক করা টোকেনের সংখ্যার সমান।
+যদি L2-তে খুব বেশি টোকেন থাকে তবে কিছু ব্যবহারকারী তাদের অ্যাসেটগুলো আবার L1-এ ব্রিজ করতে অক্ষম হবে।
+একটি বিশ্বস্ত ব্রিজের পরিবর্তে, আমরা মূলত [ফ্র্যাকশনাল রিজার্ভ ব্যাংকিং](https://www.investopedia.com/terms/f/fractionalreservebanking.asp) পুনরায় তৈরি করব।
+যদি L1-এ খুব বেশি টোকেন থাকে, তবে সেই টোকেনগুলোর কিছু চিরকালের জন্য ব্রিজ কন্ট্রাক্টের ভেতরে লক হয়ে থাকবে কারণ L2 টোকেন বার্ন করা ছাড়া সেগুলো রিলিজ করার কোনো উপায় নেই।
+
+### IL2StandardERC20 {#il2standarderc20}
+
+L2-তে প্রতিটি ERC-20 টোকেন যা স্ট্যান্ডার্ড ব্রিজ ব্যবহার করে তাকে [এই ইন্টারফেসটি](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol) প্রদান করতে হবে, যাতে স্ট্যান্ডার্ড ব্রিজের প্রয়োজনীয় ফাংশন এবং ইভেন্টগুলো রয়েছে।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[স্ট্যান্ডার্ড ERC-20 ইন্টারফেস](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)-এ `mint` এবং `burn` ফাংশন অন্তর্ভুক্ত নেই।
+এই মেথডগুলো [ERC-20 স্ট্যান্ডার্ড](https://eips.ethereum.org/EIPS/eip-20) দ্বারা প্রয়োজনীয় নয়, যা টোকেন তৈরি এবং ধ্বংস করার মেকানিজমগুলো অনির্দিষ্ট রাখে।
+
+```solidity
+import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
+```
+
+[ERC-165 ইন্টারফেস](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol) একটি কন্ট্রাক্ট কী কী ফাংশন প্রদান করে তা নির্দিষ্ট করতে ব্যবহৃত হয়।
+[আপনি এখানে স্ট্যান্ডার্ডটি পড়তে পারেন](https://eips.ethereum.org/EIPS/eip-165)।
+
+```solidity
+interface IL2StandardERC20 is IERC20, IERC165 {
+ function l1Token() external returns (address);
+```
+
+এই ফাংশনটি L1 টোকেনের এডড্রেস প্রদান করে যা এই কন্ট্রাক্টে ব্রিজ করা হয়েছে।
+মনে রাখবেন যে বিপরীত দিকে আমাদের অনুরূপ কোনো ফাংশন নেই।
+আমাদের যেকোনো L1 টোকেন ব্রিজ করতে সক্ষম হতে হবে, এটি ইমপ্লিমেন্ট করার সময় L2 সাপোর্ট করার পরিকল্পনা করা হয়েছিল কি না তা নির্বিশেষে।
+
+```solidity
+
+ function mint(address _to, uint256 _amount) external;
+
+ function burn(address _from, uint256 _amount) external;
+
+ event Mint(address indexed _account, uint256 _amount);
+ event Burn(address indexed _account, uint256 _amount);
+}
+```
+
+টোকেন মিন্ট (তৈরি) এবং বার্ন (ধ্বংস) করার ফাংশন এবং ইভেন্ট।
+টোকেনের সংখ্যা সঠিক (L1-এ লক করা টোকেনের সংখ্যার সমান) তা নিশ্চিত করতে ব্রিজটি একমাত্র এনটিটি হওয়া উচিত যা এই ফাংশনগুলো রান করতে পারে।
+
+### L2StandardERC20 {#L2StandardERC20}
+
+[এটি হলো `IL2StandardERC20` ইন্টারফেসের আমাদের ইমপ্লিমেন্টেশন](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/L2StandardERC20.sol)।
+যদি না আপনার কোনো ধরনের কাস্টম লজিকের প্রয়োজন হয়, আপনার এটি ব্যবহার করা উচিত।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+```
+
+[OpenZeppelin ERC-20 কন্ট্রাক্ট](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)।
+Optimism চাকা পুনরায় আবিষ্কার করায় বিশ্বাস করে না, বিশেষ করে যখন চাকাটি ভালোভাবে অডিট করা হয় এবং অ্যাসেট ধরে রাখার জন্য যথেষ্ট বিশ্বস্ত হওয়া প্রয়োজন।
+
+```solidity
+import "./IL2StandardERC20.sol";
+
+contract L2StandardERC20 is IL2StandardERC20, ERC20 {
+ address public l1Token;
+ address public l2Bridge;
+```
+
+এই দুটি অতিরিক্ত কনফিগারেশন প্যারামিটার যা আমাদের প্রয়োজন এবং ERC-20-এর সাধারণত প্রয়োজন হয় না।
+
+```solidity
+
+ /* *
+ * @param _l2Bridge L2 স্ট্যান্ডার্ড ব্রিজের ঠিকানা।
+ * @param _l1Token সংশ্লিষ্ট L1 টোকেনের ঠিকানা।
+ * @param _name ERC20 নাম।
+ * @param _symbol ERC20 প্রতীক。 */
+ constructor(
+ address _l2Bridge,
+ address _l1Token,
+ string memory _name,
+ string memory _symbol
+ ) ERC20(_name, _symbol) {
+ l1Token = _l1Token;
+ l2Bridge = _l2Bridge;
+ }
+```
+
+প্রথমে আমরা যে কন্ট্রাক্ট থেকে ইনহেরিট করি তার কনস্ট্রাক্টর কল করুন (`ERC20(_name, _symbol)`) এবং তারপর আমাদের নিজস্ব ভেরিয়েবলগুলো সেট করুন।
+
+```solidity
+
+ modifier onlyL2Bridge() {
+ require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn");
+ _;
+ }
+
+
+ // slither-disable-next-line external-function
+ function supportsInterface(bytes4 _interfaceId) public pure returns (bool) {
+ bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165
+ bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector ^
+ IL2StandardERC20.mint.selector ^
+ IL2StandardERC20.burn.selector;
+ return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface;
+ }
+```
+
+এভাবেই [ERC-165](https://eips.ethereum.org/EIPS/eip-165) কাজ করে।
+প্রতিটি ইন্টারফেস হলো বেশ কয়েকটি সাপোর্টেড ফাংশন, এবং সেই ফাংশনগুলোর [ABI ফাংশন সিলেক্টর](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html#function-selector)-এর [এক্সক্লুসিভ অর](https://en.wikipedia.org/wiki/Exclusive_or) হিসেবে চিহ্নিত করা হয়।
+
+L2 ব্রিজ ERC-165-কে একটি স্যানিটি চেক হিসেবে ব্যবহার করে যাতে নিশ্চিত করা যায় যে এটি যে ERC-20 কন্ট্রাক্টে অ্যাসেট পাঠায় তা একটি `IL2StandardERC20`।
+
+**নোট:** `supportsInterface`-এ মিথ্যা উত্তর প্রদান করা থেকে কোনো দুর্বৃত্ত কন্ট্রাক্টকে বাধা দেওয়ার কিছু নেই, তাই এটি একটি স্যানিটি চেক মেকানিজম, কোনো সিকিউরিটি মেকানিজম _নয়_।
+
+```solidity
+ // slither-disable-next-line external-function
+ function mint(address _to, uint256 _amount) public virtual onlyL2Bridge {
+ _mint(_to, _amount);
+
+ emit Mint(_to, _amount);
+ }
+
+ // slither-disable-next-line external-function
+ function burn(address _from, uint256 _amount) public virtual onlyL2Bridge {
+ _burn(_from, _amount);
+
+ emit Burn(_from, _amount);
+ }
+}
+```
+
+শুধুমাত্র L2 ব্রিজকে অ্যাসেট মিন্ট এবং বার্ন করার অনুমতি দেওয়া হয়েছে।
+
+`_mint` এবং `_burn` আসলে [OpenZeppelin ERC-20 কন্ট্রাক্ট](/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn)-এ সংজ্ঞায়িত করা হয়েছে।
+সেই কন্ট্রাক্টটি কেবল সেগুলোকে বাহ্যিকভাবে প্রকাশ করে না, কারণ টোকেন মিন্ট এবং বার্ন করার শর্তগুলো ERC-20 ব্যবহার করার উপায়গুলোর সংখ্যার মতোই বৈচিত্র্যময়।
+
+## L2 ব্রিজ কোড {#l2-bridge-code}
+
+এটি সেই কোড যা Optimism-এ ব্রিজ রান করে।
+[এই কন্ট্রাক্টের সোর্স এখানে রয়েছে](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol)।
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+/* ইন্টারফেস ইমপোর্টস */
+import { IL1StandardBridge } from "../../L1/messaging/IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "../../L1/messaging/IL1ERC20Bridge.sol";
+import { IL2ERC20Bridge } from "./IL2ERC20Bridge.sol";
+```
+
+[IL2ERC20Bridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) ইন্টারফেসটি আমরা উপরে দেখা [L1 সমতুল্য](#IL1ERC20Bridge)-এর মতোই।
+দুটি উল্লেখযোগ্য পার্থক্য রয়েছে:
+
+1. L1-এ আপনি ডিপোজিট শুরু করেন এবং উত্তোলন চূড়ান্ত করেন। এখানে আপনি উত্তোলন শুরু করেন এবং ডিপোজিট চূড়ান্ত করেন।
+2. L1-এ ETH এবং ERC-20 টোকেনের মধ্যে পার্থক্য করা প্রয়োজন। L2-তে আমরা উভয়ের জন্য একই ফাংশন ব্যবহার করতে পারি কারণ অভ্যন্তরীণভাবে Optimism-এ ETH ব্যালেন্সগুলো [0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://explorer.optimism.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000) এডড্রেস সহ একটি ERC-20 টোকেন হিসেবে পরিচালিত হয়।
+
+```solidity
+/* লাইব্রেরি ইমপোর্টস */
+import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+
+/* কন্ট্রাক্ট ইমপোর্টস */
+import { IL2StandardERC20 } from "../../standards/IL2StandardERC20.sol";
+
+/* *
+ * @title L2StandardBridge
+ * @dev L2 স্ট্যান্ডার্ড ব্রিজ হলো এমন একটি কন্ট্রাক্ট যা L1 এবং L2-এর মধ্যে ETH এবং ERC20 ট্রানজিশন সক্ষম করতে L1 স্ট্যান্ডার্ড ব্রিজের সাথে একসাথে কাজ করে।
+ * যখন এটি L1 স্ট্যান্ডার্ড ব্রিজে ডিপোজিট সম্পর্কে জানতে পারে তখন এই কন্ট্রাক্টটি নতুন টোকেনগুলোর জন্য মিন্টার হিসেবে কাজ করে।
+ * এই কন্ট্রাক্টটি উত্তোলনের উদ্দেশ্যে টোকেনগুলোর বার্নার হিসেবেও কাজ করে, L1 ফান্ড রিলিজ করার জন্য L1 ব্রিজকে অবহিত করে。 */
+contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled {
+ /* *******************************
+ * এক্সটার্নাল কন্ট্রাক্ট রেফারেন্সেস *
+ ******************************* */
+
+ address public l1TokenBridge;
+```
+
+L1 ব্রিজের এডড্রেস-এর ট্র্যাক রাখুন।
+মনে রাখবেন যে L1 সমতুল্যের বিপরীতে, এখানে আমাদের এই ভেরিয়েবলটি _প্রয়োজন_।
+L1 ব্রিজের এডড্রেস আগে থেকে জানা যায় না।
+
+```solidity
+
+ /* **************
+ * কনস্ট্রাক্টর *
+ ************** */
+
+ /* *
+ * @param _l2CrossDomainMessenger এই কন্ট্রাক্ট দ্বারা ব্যবহৃত ক্রস-ডোমেইন মেসেঞ্জার।
+ * @param _l1TokenBridge মেইন চেইনে ডিপ্লয় করা L1 ব্রিজের ঠিকানা。 */
+ constructor(address _l2CrossDomainMessenger, address _l1TokenBridge)
+ CrossDomainEnabled(_l2CrossDomainMessenger)
+ {
+ l1TokenBridge = _l1TokenBridge;
+ }
+
+ /* **************
+ * উইথড্রয়িং *
+ ************** */
+
+ /* *
+ * @inheritdoc IL2ERC20Bridge */
+ function withdraw(
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, msg.sender, _amount, _l1Gas, _data);
+ }
+
+ /* *
+ * @inheritdoc IL2ERC20Bridge */
+ function withdrawTo(
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, _to, _amount, _l1Gas, _data);
+ }
+```
+
+এই দুটি ফাংশন উত্তোলন শুরু করে।
+মনে রাখবেন যে L1 টোকেন এডড্রেস নির্দিষ্ট করার কোনো প্রয়োজন নেই।
+L2 টোকেনগুলো আমাদের L1 সমতুল্যের এডড্রেস বলবে বলে আশা করা হয়।
+
+```solidity
+
+ /* *
+ * @dev টোকেন বার্ন করে এবং L1 টোকেন গেটওয়েকে উত্তোলন সম্পর্কে অবহিত করে উত্তোলনের লজিক সম্পাদন করে।
+ * @param _l2Token যে L2 টোকেন থেকে উত্তোলন শুরু হয়েছে তার ঠিকানা।
+ * @param _from L2-তে যে অ্যাকাউন্ট থেকে উত্তোলন নেওয়া হবে।
+ * @param _to L1-এ যে অ্যাকাউন্টে উত্তোলন দেওয়া হবে।
+ * @param _amount উত্তোলন করার জন্য টোকেনের পরিমাণ।
+ * @param _l1Gas অব্যবহৃত, তবে সম্ভাব্য ফরোয়ার্ড কম্প্যাটিবিলিটি বিবেচনার জন্য অন্তর্ভুক্ত করা হয়েছে।
+ * @param _data L1-এ ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ function _initiateWithdrawal(
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) internal {
+ // যখন কোনো উত্তোলন শুরু হয়, তখন আমরা পরবর্তী L2 প্রতিরোধ করতে উত্তোলনকারীর ফান্ড বার্ন করি
+ // ব্যবহার
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).burn(msg.sender, _amount);
+```
+
+লক্ষ্য করুন যে আমরা `_from` প্যারামিটারের ওপর নির্ভর করছি _না_ বরং `msg.sender`-এর ওপর নির্ভর করছি যা নকল করা অনেক কঠিন (আমার জানামতে অসম্ভব)।
+
+```solidity
+
+ // l1TokenBridge.finalizeERC20Withdrawal(_to, _amount)-এর জন্য কলডেটা তৈরি করুন
+ // slither-disable-next-line reentrancy-events
+ address l1Token = IL2StandardERC20(_l2Token).l1Token();
+ bytes memory message;
+
+ if (_l2Token == Lib_PredeployAddresses.OVM_ETH) {
+```
+
+L1-এ ETH এবং ERC-20-এর মধ্যে পার্থক্য করা প্রয়োজন।
+
+```solidity
+ message = abi.encodeWithSelector(
+ IL1StandardBridge.finalizeETHWithdrawal.selector,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ } else {
+ message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ }
+
+ // L1 ব্রিজে মেসেজ পাঠান
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, _l1Gas, message);
+
+ // slither-disable-next-line reentrancy-events
+ emit WithdrawalInitiated(l1Token, _l2Token, msg.sender, _to, _amount, _data);
+ }
+
+ /* ***********************************
+ * ক্রস-চেইন ফাংশন: ডিপোজিটিং *
+ *********************************** */
+
+ /* *
+ * @inheritdoc IL2ERC20Bridge */
+ function finalizeDeposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+এই ফাংশনটি `L1StandardBridge` দ্বারা কল করা হয়।
+
+```solidity
+ ) external virtual onlyFromCrossDomainAccount(l1TokenBridge) {
+```
+
+নিশ্চিত করুন যে মেসেজের উৎসটি বৈধ।
+এটি গুরুত্বপূর্ণ কারণ এই ফাংশনটি `_mint` কল করে এবং এমন টোকেন দিতে ব্যবহার করা যেতে পারে যা L1-এ ব্রিজের মালিকানাধীন টোকেন দ্বারা কভার করা হয় না।
+
+```solidity
+ // টার্গেট টোকেনটি কমপ্লায়েন্ট কিনা তা চেক করুন এবং
+ // যাচাই করুন যে L1-এ ডিপোজিট করা টোকেনটি এখানে L2 ডিপোজিট করা টোকেন রিপ্রেজেন্টেশনের সাথে মেলে
+ if (
+ // slither-disable-next-line reentrancy-events
+ ERC165Checker.supportsInterface(_l2Token, 0x1d1d8b63) &&
+ _l1Token == IL2StandardERC20(_l2Token).l1Token()
+```
+
+স্যানিটি চেক:
+
+1. সঠিক ইন্টারফেস সাপোর্ট করে
+2. L2 ERC-20 কন্ট্রাক্টের L1 এডড্রেস টোকেনগুলোর L1 উৎসের সাথে মেলে
+
+```solidity
+ ) {
+ // যখন কোনো ডিপোজিট চূড়ান্ত হয়, তখন আমরা L2-তে অ্যাকাউন্টে সমপরিমাণ ক্রেডিট করি
+ // টোকেন।
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).mint(_to, _amount);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+```
+
+যদি স্যানিটি চেক পাস হয়, তবে ডিপোজিট চূড়ান্ত করুন:
+
+1. টোকেনগুলো মিন্ট করুন
+2. উপযুক্ত ইভেন্ট এমিট করুন
+
+```solidity
+ } else {
+ // যে L2 টোকেনে ডিপোজিট করা হচ্ছে সেটি সঠিক ঠিকানা সম্পর্কে দ্বিমত পোষণ করে
+ // এর L1 টোকেনের, অথবা সঠিক ইন্টারফেস সমর্থন করে না।
+ // এটি শুধুমাত্র তখনই ঘটা উচিত যদি কোনো ক্ষতিকারক L2 টোকেন থাকে, অথবা যদি কোনো ব্যবহারকারী কোনোভাবে
+ // ডিপোজিট করার জন্য ভুল L2 টোকেন ঠিকানা নির্দিষ্ট করে।
+ // যেকোনো ক্ষেত্রেই, আমরা এখানে প্রক্রিয়াটি থামিয়ে দিই এবং একটি উত্তোলন তৈরি করি
+ // মেসেজ যাতে ব্যবহারকারীরা কিছু ক্ষেত্রে তাদের ফান্ড বের করে নিতে পারে।
+ // ক্ষতিকারক টোকেন কন্ট্রাক্টগুলো পুরোপুরি প্রতিরোধ করার কোনো উপায় নেই, তবে এটি সীমাবদ্ধ করে
+ // ব্যবহারকারীর ত্রুটি এবং কিছু ধরণের ক্ষতিকারক কন্ট্রাক্ট আচরণ প্রশমিত করে।
+```
+
+যদি কোনো ব্যবহারকারী ভুল L2 টোকেন এডড্রেস ব্যবহার করে কোনো শনাক্তযোগ্য ত্রুটি করে, তবে আমরা ডিপোজিট বাতিল করতে এবং L1-এ টোকেনগুলো ফেরত দিতে চাই।
+L2 থেকে আমরা এটি করার একমাত্র উপায় হলো একটি মেসেজ পাঠানো যা ফল্ট চ্যালেঞ্জ পিরিয়ড পর্যন্ত অপেক্ষা করতে হবে, তবে এটি ব্যবহারকারীর জন্য টোকেনগুলো স্থায়ীভাবে হারানোর চেয়ে অনেক ভালো।
+
+```solidity
+ bytes memory message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ _l1Token,
+ _l2Token,
+ _to, // প্রেরকের কাছে ডিপোজিট বাউন্স ব্যাক করতে এখানে _to এবং _from পরিবর্তন করা হয়েছে
+ _from,
+ _amount,
+ _data
+ );
+
+ // L1 ব্রিজে মেসেজ পাঠান
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, 0, message);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFailed(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+ }
+}
+```
+
+## উপসংহার {#conclusion}
+
+স্ট্যান্ডার্ড ব্রিজ হলো অ্যাসেট ট্রান্সফারের জন্য সবচেয়ে নমনীয় মেকানিজম।
+তবে, এটি এত জেনেরিক হওয়ার কারণে এটি সর্বদা ব্যবহার করার সবচেয়ে সহজ মেকানিজম নয়।
+বিশেষ করে উত্তোলনের জন্য, বেশিরভাগ ব্যবহারকারী [থার্ড পার্টি ব্রিজ](https://optimism.io/apps#bridge) ব্যবহার করতে পছন্দ করেন যা চ্যালেঞ্জ পিরিয়ডের জন্য অপেক্ষা করে না এবং উত্তোলন চূড়ান্ত করার জন্য কোনো Merkle প্রুফ-এর প্রয়োজন হয় না।
+
+এই ব্রিজগুলো সাধারণত L1-এ অ্যাসেট রাখার মাধ্যমে কাজ করে, যা তারা একটি ছোট ফি-এর বিনিময়ে অবিলম্বে প্রদান করে (প্রায়শই একটি স্ট্যান্ডার্ড ব্রিজ উত্তোলনের জন্য গ্যাস খরচের চেয়ে কম)।
+যখন ব্রিজ (বা এটি পরিচালনাকারী লোকেরা) L1 অ্যাসেট কম হওয়ার আশঙ্কা করে তখন এটি L2 থেকে পর্যাপ্ত অ্যাসেট ট্রান্সফার করে। যেহেতু এগুলো অনেক বড় উত্তোলন, তাই উত্তোলন খরচ একটি বড় পরিমাণের ওপর অ্যামর্টাইজ করা হয় এবং এটি অনেক ছোট শতাংশ হয়।
+
+আশা করি এই আর্টিকেলটি আপনাকে লেয়ার ২ কীভাবে কাজ করে এবং কীভাবে পরিষ্কার ও সুরক্ষিত Solidity কোড লিখতে হয় সে সম্পর্কে আরও বুঝতে সাহায্য করেছে।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/bn/developers/tutorials/reverse-engineering-a-contract/index.md
new file mode 100644
index 00000000000..2c117afc9d0
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/reverse-engineering-a-contract/index.md
@@ -0,0 +1,744 @@
+---
+title: "একটি কন্ট্রাক্ট রিভার্স ইঞ্জিনিয়ারিং করা"
+description: সোর্স কোড না থাকলে কীভাবে একটি কন্ট্রাক্ট বুঝতে হয়
+author: ওরি পোমেরান্টজ
+lang: bn
+tags: ["evm", "opcodes"]
+skill: advanced
+breadcrumb: রিভার্স ইঞ্জিনিয়ারিং
+published: 2021-12-30
+---
+## ভূমিকা {#introduction}
+
+_ব্লকচেইনে কোনো গোপনীয়তা নেই_, যা কিছু ঘটে তা সামঞ্জস্যপূর্ণ, যাচাইযোগ্য এবং সর্বজনীনভাবে উপলব্ধ। আদর্শভাবে, [কন্ট্রাক্টগুলোর সোর্স কোড Etherscan-এ প্রকাশিত এবং যাচাই করা উচিত](https://etherscan.io/address/0xb8901acb165ed027e32754e0ffe830802919727f#code)। তবে, [সবসময় এমনটা হয় না](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#code)। এই আর্টিকেলে আপনি শিখবেন কীভাবে সোর্স কোড ছাড়া একটি কন্ট্রাক্ট, [`0x2510c039cc3b061d79e564b38836da87e31b342f`](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f) দেখে কন্ট্রাক্টগুলো রিভার্স ইঞ্জিনিয়ারিং করতে হয়।
+
+রিভার্স কম্পাইলার রয়েছে, কিন্তু সেগুলো সবসময় [ব্যবহারযোগ্য ফলাফল](https://etherscan.io/bytecode-decompiler?a=0x2510c039cc3b061d79e564b38836da87e31b342f) তৈরি করে না। এই আর্টিকেলে আপনি শিখবেন কীভাবে ম্যানুয়ালি রিভার্স ইঞ্জিনিয়ারিং করতে হয় এবং [অপকোডগুলো](https://github.com/wolflo/evm-opcodes) থেকে একটি কন্ট্রাক্ট বুঝতে হয়, পাশাপাশি একটি ডিকম্পাইলারের ফলাফল কীভাবে ব্যাখ্যা করতে হয়।
+
+এই আর্টিকেলটি বোঝার জন্য আপনার ইভিএম (EVM)-এর বেসিক বিষয়গুলো জানা উচিত এবং ইভিএম অ্যাসেম্বলারের সাথে অন্তত কিছুটা পরিচিত হওয়া উচিত। [আপনি এই বিষয়গুলো সম্পর্কে এখানে পড়তে পারেন](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e)।
+
+## এক্সিকিউটেবল কোড প্রস্তুত করুন {#prepare-the-executable-code}
+
+আপনি কন্ট্রাক্টের জন্য Etherscan-এ গিয়ে, **Contract** ট্যাবে ক্লিক করে এবং তারপর **Switch to Opcodes View**-এ ক্লিক করে অপকোডগুলো (opcodes) পেতে পারেন। আপনি এমন একটি ভিউ পাবেন যেখানে প্রতি লাইনে একটি করে অপকোড থাকবে।
+
+
+
+যাইহোক, জাম্পগুলো (jumps) বোঝার জন্য আপনাকে জানতে হবে কোডের কোথায় প্রতিটি অপকোড অবস্থিত। এটি করার একটি উপায় হলো একটি Google Spreadsheet খোলা এবং কলাম C-তে অপকোডগুলো পেস্ট করা। [আপনি এই আগে থেকে প্রস্তুত করা স্প্রেডশিটের একটি কপি তৈরি করে নিচের ধাপগুলো এড়িয়ে যেতে পারেন](https://docs.google.com/spreadsheets/d/1tKmTJiNjUwHbW64wCKOSJxHjmh0bAUapt6btUYE7kDA/edit?usp=sharing)।
+
+পরবর্তী ধাপ হলো কোডের সঠিক অবস্থানগুলো বের করা যাতে আমরা জাম্পগুলো বুঝতে পারি। আমরা কলাম B-তে অপকোডের আকার এবং কলাম A-তে অবস্থান (হেক্সাডেসিম্যালে) রাখব। `B1` সেলে এই ফাংশনটি টাইপ করুন এবং তারপর কোডের শেষ পর্যন্ত কলাম B-এর বাকি অংশের জন্য এটি কপি এবং পেস্ট করুন। এটি করার পর আপনি কলাম B লুকিয়ে রাখতে পারেন।
+
+```
+=1+IF(REGEXMATCH(C1,"PUSH"),REGEXEXTRACT(C1,"PUSH(\d+)"),0)
+```
+
+প্রথমে এই ফাংশনটি অপকোডের জন্য এক বাইট যোগ করে এবং তারপর `PUSH` খোঁজে। পুশ (Push) অপকোডগুলো বিশেষ কারণ পুশ করা ভ্যালুর জন্য এগুলোতে অতিরিক্ত বাইট থাকতে হয়। যদি অপকোডটি একটি `PUSH` হয়, তবে আমরা বাইটের সংখ্যা বের করি এবং তা যোগ করি।
+
+`A1`-এ প্রথম অফসেট, শূন্য (0) রাখুন। তারপর, `A2`-তে এই ফাংশনটি রাখুন এবং আবার কলাম A-এর বাকি অংশের জন্য এটি কপি এবং পেস্ট করুন:
+
+```
+=dec2hex(hex2dec(A1)+B1)
+```
+
+আমাদের এই ফাংশনটি প্রয়োজন যাতে এটি আমাদের হেক্সাডেসিম্যাল ভ্যালু দেয়, কারণ জাম্পের (`JUMP` এবং `JUMPI`) আগে পুশ করা ভ্যালুগুলো আমাদের হেক্সাডেসিম্যালে দেওয়া হয়।
+
+## এন্ট্রি পয়েন্ট (0x00) {#the-entry-point-0x00}
+
+কন্ট্রাক্টগুলো সবসময় প্রথম বাইট থেকে এক্সিকিউট করা হয়। এটি কোডের প্রাথমিক অংশ:
+
+| অফসেট | অপকোড | স্ট্যাক (অপকোডের পরে) |
+| -----: | ------------ | ------------------------ |
+| 0 | PUSH1 0x80 | 0x80 |
+| 2 | PUSH1 0x40 | 0x40, 0x80 |
+| 4 | MSTORE | Empty |
+| 5 | PUSH1 0x04 | 0x04 |
+| 7 | CALLDATASIZE | CALLDATASIZE 0x04 |
+| 8 | LT | CALLDATASIZE\<4 |
+| 9 | PUSH2 0x005e | 0x5E CALLDATASIZE\<4 |
+| C | JUMPI | Empty |
+
+এই কোডটি দুটি কাজ করে:
+
+1. মেমরি লোকেশন 0x40-0x5F-এ 32 বাইট ভ্যালু হিসেবে 0x80 লেখে (0x80 স্টোর করা হয় 0x5F-এ, এবং 0x40-0x5E এর সবগুলো শূন্য)।
+2. কলডাটার সাইজ রিড করে। সাধারণত একটি ইথিরিয়াম কন্ট্রাক্টের কল ডাটা [এবিআই (অ্যাপ্লিকেশন বাইনারি ইন্টারফেস)](https://docs.soliditylang.org/en/v0.8.10/abi-spec.html) অনুসরণ করে, যার জন্য ফাংশন সিলেক্টরের জন্য ন্যূনতম চার বাইট প্রয়োজন হয়। কল ডাটার সাইজ চারের কম হলে, 0x5E-তে জাম্প করে।
+
+
+
+### 0x5E-তে হ্যান্ডলার (নন-এবিআই কল ডাটার জন্য) {#the-handler-at-0x5e-for-non-abi-call-data}
+
+| অফসেট | অপকোড |
+| -----: | ------------ |
+| 5E | JUMPDEST |
+| 5F | CALLDATASIZE |
+| 60 | PUSH2 0x007c |
+| 63 | JUMPI |
+
+এই স্নিপেটটি একটি `JUMPDEST` দিয়ে শুরু হয়। ইভিএম (ইথিরিয়াম ভার্চুয়াল মেশিন) প্রোগ্রামগুলো একটি এক্সেপশন থ্রো করে যদি আপনি এমন কোনো অপকোডে জাম্প করেন যা `JUMPDEST` নয়। এরপর এটি CALLDATASIZE দেখে, এবং যদি এটি "true" হয় (অর্থাৎ, শূন্য না হয়) তবে 0x7C-তে জাম্প করে। আমরা নিচে সে বিষয়ে আলোচনা করব।
+
+| অফসেট | অপকোড | স্ট্যাক (অপকোডের পরে) |
+| -----: | ---------- | -------------------------------------------------------------------------- |
+| 64 | CALLVALUE | কলের মাধ্যমে প্রদান করা [ওয়েই (Wei)](/glossary/#wei)। সলিডিটিতে একে `msg.value` বলা হয় |
+| 65 | PUSH1 0x06 | 6 CALLVALUE |
+| 67 | PUSH1 0x00 | 0 6 CALLVALUE |
+| 69 | DUP3 | CALLVALUE 0 6 CALLVALUE |
+| 6A | DUP3 | 6 CALLVALUE 0 6 CALLVALUE |
+| 6B | SLOAD | Storage[6] CALLVALUE 0 6 CALLVALUE |
+
+সুতরাং যখন কোনো কল ডাটা থাকে না, তখন আমরা Storage[6]-এর ভ্যালু রিড করি। আমরা এখনও জানি না এই ভ্যালুটি কী, তবে আমরা এমন লেনদেন খুঁজতে পারি যা কন্ট্রাক্টটি কোনো কল ডাটা ছাড়াই গ্রহণ করেছে। যেসব লেনদেন কোনো কল ডাটা ছাড়াই (এবং তাই কোনো মেথড ছাড়াই) শুধুমাত্র ETH ট্রান্সফার করে, ইথারস্ক্যানে সেগুলোর মেথড হিসেবে `Transfer` থাকে। প্রকৃতপক্ষে, [কন্ট্রাক্টটি যে প্রথম লেনদেনটি গ্রহণ করেছিল](https://etherscan.io/tx/0xeec75287a583c36bcc7ca87685ab41603494516a0f5986d18de96c8e630762e7) তা হলো একটি ট্রান্সফার।
+
+আমরা যদি সেই লেনদেনটি দেখি এবং **Click to see More**-এ ক্লিক করি, তবে দেখতে পাব যে কল ডাটা, যাকে ইনপুট ডাটা বলা হয়, তা আসলেই ফাঁকা (`0x`)। আরও খেয়াল করুন যে ভ্যালুটি হলো 1.559 ETH, যা পরবর্তীতে প্রাসঙ্গিক হবে।
+
+
+
+এরপর, **State** ট্যাবে ক্লিক করুন এবং আমরা যে কন্ট্রাক্টটি রিভার্স ইঞ্জিনিয়ারিং করছি (0x2510...) তা এক্সপ্যান্ড করুন। আপনি দেখতে পাবেন যে লেনদেন চলাকালীন `Storage[6]` পরিবর্তিত হয়েছে, এবং আপনি যদি Hex থেকে **Number**-এ পরিবর্তন করেন, তবে দেখতে পাবেন এটি 1,559,000,000,000,000,000 হয়েছে, যা ওয়েই-তে ট্রান্সফার করা ভ্যালু (আমি স্পষ্টতার জন্য কমা যোগ করেছি), যা পরবর্তী কন্ট্রাক্ট ভ্যালুর সাথে মিলে যায়।
+
+![Storage[6]-এ পরিবর্তন](storage6.png)
+
+আমরা যদি [একই সময়ের অন্যান্য `Transfer` লেনদেন](https://etherscan.io/tx/0xf708d306de39c422472f43cb975d97b66fd5d6a6863db627067167cbf93d84d1#statechange)-এর কারণে হওয়া স্টেট পরিবর্তনগুলো দেখি, তবে দেখতে পাব যে `Storage[6]` কিছু সময়ের জন্য কন্ট্রাক্টের ভ্যালু ট্র্যাক করেছে। আপাতত আমরা একে `Value*` বলব। অ্যাস্টেরিস্ক (`*`) আমাদের মনে করিয়ে দেয় যে আমরা এখনও _জানি না_ এই ভ্যারিয়েবলটি কী কাজ করে, তবে এটি শুধুমাত্র কন্ট্রাক্টের ভ্যালু ট্র্যাক করার জন্য হতে পারে না কারণ স্টোরেজ ব্যবহার করার কোনো প্রয়োজন নেই, যা অত্যন্ত ব্যয়বহুল, যখন আপনি `ADDRESS BALANCE` ব্যবহার করে আপনার একাউন্ট ব্যালেন্স পেতে পারেন। প্রথম অপকোডটি কন্ট্রাক্টের নিজস্ব এডড্রেস পুশ করে। দ্বিতীয়টি স্ট্যাকের উপরের এডড্রেসটি রিড করে এবং সেটিকে সেই এডড্রেসের ব্যালেন্স দিয়ে রিপ্লেস করে।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | ------------------------------------------- |
+| 6C | PUSH2 0x0075 | 0x75 Value\* CALLVALUE 0 6 CALLVALUE |
+| 6F | SWAP2 | CALLVALUE Value\* 0x75 0 6 CALLVALUE |
+| 70 | SWAP1 | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 71 | PUSH2 0x01a7 | 0x01A7 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 74 | JUMP |
+
+আমরা জাম্প ডেস্টিনেশনে এই কোডটি ট্রেস করা চালিয়ে যাব।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ---------- | ----------------------------------------------------------- |
+| 1A7 | JUMPDEST | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1A8 | PUSH1 0x00 | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AA | DUP3 | CALLVALUE 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AB | NOT | 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+
+`NOT` হলো বিটওয়াইজ, তাই এটি কল ভ্যালুর প্রতিটি বিটের মান উল্টে দেয়।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | --------------------------------------------------------------------------- |
+| 1AC | DUP3 | Value\* 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AD | GT | Value\*>2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AE | ISZERO | Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AF | PUSH2 0x01df | 0x01DF Value\*\<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1B2 | JUMPI |
+
+যদি `Value*` 2^256-CALLVALUE-1 এর চেয়ে ছোট বা সমান হয় তবে আমরা জাম্প করি। এটি ওভারফ্লো প্রতিরোধ করার লজিক বলে মনে হচ্ছে। এবং সত্যিই, আমরা দেখতে পাই যে কয়েকটি অর্থহীন অপারেশনের পরে (উদাহরণস্বরূপ, মেমরিতে লেখা যা মুছে ফেলা হতে চলেছে) 0x01DE অফসেটে ওভারফ্লো শনাক্ত হলে কন্ট্রাক্টটি রিভার্ট করে, যা একটি স্বাভাবিক আচরণ।
+
+লক্ষণীয় যে, এই ধরনের ওভারফ্লো হওয়ার সম্ভাবনা অত্যন্ত কম, কারণ এর জন্য কল ভ্যালু এবং `Value*` এর যোগফল 2^256 ওয়েই-এর কাছাকাছি হতে হবে, যা প্রায় 10^59 ETH। [লেখার সময়, মোট ETH সাপ্লাই দুইশ মিলিয়নেরও কম](https://etherscan.io/stat/supply)।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | -------- | ----------------------------------------- |
+| 1DF | JUMPDEST | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E0 | POP | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E1 | ADD | Value\*+CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E2 | SWAP1 | 0x75 Value\*+CALLVALUE 0 6 CALLVALUE |
+| 1E3 | JUMP |
+
+যদি আমরা এখানে পৌঁছাই, তবে `Value* + CALLVALUE` নিন এবং 0x75 অফসেটে জাম্প করুন।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | -------- | ------------------------------- |
+| 75 | JUMPDEST | Value\*+CALLVALUE 0 6 CALLVALUE |
+| 76 | SWAP1 | 0 Value\*+CALLVALUE 6 CALLVALUE |
+| 77 | SWAP2 | 6 Value\*+CALLVALUE 0 CALLVALUE |
+| 78 | SSTORE | 0 CALLVALUE |
+
+যদি আমরা এখানে পৌঁছাই (যার জন্য কল ডাটা ফাঁকা হওয়া প্রয়োজন) তবে আমরা `Value*`-এর সাথে কল ভ্যালু যোগ করি। এটি `Transfer` লেনদেনগুলো যা করে বলে আমরা উল্লেখ করেছি, তার সাথে সামঞ্জস্যপূর্ণ।
+
+| অফসেট | অপকোড |
+| -----: | ------ |
+| 79 | POP |
+| 7A | POP |
+| 7B | STOP |
+
+অবশেষে, স্ট্যাক ক্লিয়ার করুন (যা প্রয়োজনীয় নয়) এবং লেনদেনের সফল সমাপ্তির সংকেত দিন।
+
+সব মিলিয়ে, এখানে প্রাথমিক কোডের জন্য একটি ফ্লোচার্ট দেওয়া হলো।
+
+
+
+## 0x7C তে হ্যান্ডলার {#the-handler-at-0x7c}
+
+আমি ইচ্ছাকৃতভাবেই এই হ্যান্ডলারটি কী করে তা শিরোনামে রাখিনি। এর উদ্দেশ্য আপনাকে এই নির্দিষ্ট কন্ট্রাক্টটি কীভাবে কাজ করে তা শেখানো নয়, বরং কীভাবে কন্ট্রাক্ট রিভার্স ইঞ্জিনিয়ারিং করতে হয় তা শেখানো। আমি যেভাবে কোড অনুসরণ করে এটি কী করে তা শিখেছি, আপনিও সেভাবেই শিখবেন।
+
+আমরা বেশ কয়েকটি জায়গা থেকে এখানে আসি:
+
+- যদি 1, 2, বা 3 বাইটের কল ডেটা থাকে (অফসেট 0x63 থেকে)
+- যদি মেথড সিগনেচার অজানা থাকে (অফসেট 0x42 এবং 0x5D থেকে)
+
+| Offset | Opcode | Stack |
+| -----: | ------------ | -------------------- |
+| 7C | JUMPDEST |
+| 7D | PUSH1 0x00 | 0x00 |
+| 7F | PUSH2 0x009d | 0x9D 0x00 |
+| 82 | PUSH1 0x03 | 0x03 0x9D 0x00 |
+| 84 | SLOAD | Storage[3] 0x9D 0x00 |
+
+এটি আরেকটি স্টোরেজ সেল, যা আমি কোনো লেনদেনে খুঁজে পাইনি তাই এর অর্থ কী তা জানা কঠিন। নিচের কোডটি এটিকে আরও পরিষ্কার করবে।
+
+| Offset | Opcode | Stack |
+| -----: | ------------------------------------------------- | ------------------------------- |
+| 85 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xff....ff Storage[3] 0x9D 0x00 |
+| 9A | AND | Storage[3]-as-address 0x9D 0x00 |
+
+এই অপকোডগুলো Storage[3] থেকে পড়া মানটিকে 160 বিটে ট্রাঙ্কেট (truncate) করে, যা একটি ইথেরিয়াম এডড্রেস এর দৈর্ঘ্য।
+
+| Offset | Opcode | Stack |
+| -----: | ------ | ------------------------------- |
+| 9B | SWAP1 | 0x9D Storage[3]-as-address 0x00 |
+| 9C | JUMP | Storage[3]-as-address 0x00 |
+
+এই জাম্পটি অপ্রয়োজনীয়, কারণ আমরা পরবর্তী অপকোডে যাচ্ছি। এই কোডটি যতটা গ্যাস-সাশ্রয়ী হতে পারত, ততটা নয়।
+
+| Offset | Opcode | Stack |
+| -----: | ---------- | ------------------------------- |
+| 9D | JUMPDEST | Storage[3]-as-address 0x00 |
+| 9E | SWAP1 | 0x00 Storage[3]-as-address |
+| 9F | POP | Storage[3]-as-address |
+| A0 | PUSH1 0x40 | 0x40 Storage[3]-as-address |
+| A2 | MLOAD | Mem[0x40] Storage[3]-as-address |
+
+কোডের একেবারে শুরুতে আমরা Mem[0x40] কে 0x80 তে সেট করি। যদি আমরা পরে 0x40 খুঁজি, আমরা দেখতে পাই যে আমরা এটি পরিবর্তন করিনি - তাই আমরা ধরে নিতে পারি এটি 0x80।
+
+| Offset | Opcode | Stack |
+| -----: | ------------ | ------------------------------------------------- |
+| A3 | CALLDATASIZE | CALLDATASIZE 0x80 Storage[3]-as-address |
+| A4 | PUSH1 0x00 | 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A6 | DUP3 | 0x80 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A7 | CALLDATACOPY | 0x80 Storage[3]-as-address |
+
+0x80 থেকে শুরু করে সমস্ত কল ডেটা মেমোরিতে কপি করুন।
+
+| Offset | Opcode | Stack |
+| -----: | ------------- | -------------------------------------------------------------------------------- |
+| A8 | PUSH1 0x00 | 0x00 0x80 Storage[3]-as-address |
+| AA | DUP1 | 0x00 0x00 0x80 Storage[3]-as-address |
+| AB | CALLDATASIZE | CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AC | DUP4 | 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AD | DUP6 | Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AE | GAS | GAS Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AF | DELEGATE_CALL |
+
+এখন বিষয়গুলো অনেক বেশি পরিষ্কার। এই কন্ট্রাক্টটি একটি [প্রক্সি](https://blog.openzeppelin.com/proxy-patterns/) হিসেবে কাজ করতে পারে, যা আসল কাজটি করার জন্য Storage[3] এর এডড্রেস কল করে। `DELEGATE_CALL` একটি আলাদা কন্ট্রাক্ট কল করে, কিন্তু একই স্টোরেজে থাকে। এর মানে হলো ডেলিগেটেড কন্ট্রাক্ট, যার জন্য আমরা একটি প্রক্সি, একই স্টোরেজ স্পেস অ্যাক্সেস করে। কলের জন্য প্যারামিটারগুলো হলো:
+
+- _গ্যাস_: অবশিষ্ট সমস্ত গ্যাস
+- _কল করা এডড্রেস_: Storage[3]-as-address
+- _কল ডেটা_: 0x80 থেকে শুরু হওয়া CALLDATASIZE বাইট, যেখানে আমরা আসল কল ডেটা রেখেছিলাম
+- _রিটার্ন ডেটা_: কোনোটিই নয় (0x00 - 0x00) আমরা অন্য উপায়ে রিটার্ন ডেটা পাব (নিচে দেখুন)
+
+| Offset | Opcode | Stack |
+| -----: | -------------- | --------------------------------------------------------------------------------------------- |
+| B0 | RETURNDATASIZE | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B1 | DUP1 | RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B2 | PUSH1 0x00 | 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B4 | DUP5 | 0x80 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B5 | RETURNDATACOPY | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+
+এখানে আমরা 0x80 থেকে শুরু হওয়া মেমোরি বাফারে সমস্ত রিটার্ন ডেটা কপি করি।
+
+| Offset | Opcode | Stack |
+| -----: | ------------ | ---------------------------------------------------------------------------------------------------------------------------- |
+| B6 | DUP2 | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B7 | DUP1 | (((call success/failure))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B8 | ISZERO | (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B9 | PUSH2 0x00c0 | 0xC0 (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BC | JUMPI | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BD | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BE | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BF | RETURN | |
+
+সুতরাং কলের পরে আমরা রিটার্ন ডেটা 0x80 - 0x80+RETURNDATASIZE বাফারে কপি করি, এবং যদি কলটি সফল হয় তবে আমরা ঠিক সেই বাফারটি দিয়ে `RETURN` করি।
+
+### DELEGATECALL ব্যর্থ হয়েছে {#delegatecall-failed}
+
+যদি আমরা এখানে 0xC0 তে আসি, এর মানে হলো আমরা যে কন্ট্রাক্টটি কল করেছিলাম তা রিভার্ট (revert) হয়েছে। যেহেতু আমরা সেই কন্ট্রাক্টের জন্য শুধুমাত্র একটি প্রক্সি, তাই আমরা একই ডেটা রিটার্ন করতে চাই এবং রিভার্টও করতে চাই।
+
+| Offset | Opcode | Stack |
+| -----: | -------- | ------------------------------------------------------------------------------------------------------------------- |
+| C0 | JUMPDEST | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C1 | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C2 | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C3 | REVERT |
+
+তাই আমরা আগে `RETURN` এর জন্য যে বাফারটি ব্যবহার করেছিলাম, সেই একই বাফার দিয়ে `REVERT` করি: 0x80 - 0x80+RETURNDATASIZE
+
+
+
+## ABI কল {#abi-calls}
+
+যদি কল ডাটার সাইজ চার বাইট বা তার বেশি হয়, তবে এটি একটি বৈধ ABI কল হতে পারে।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | ------------------------------------------------- |
+| D | PUSH1 0x00 | 0x00 |
+| F | CALLDATALOAD | (((কল ডাটার প্রথম শব্দ (256 বিট)))) |
+| 10 | PUSH1 0xe0 | 0xE0 (((কল ডাটার প্রথম শব্দ (256 বিট)))) |
+| 12 | SHR | (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) |
+
+ইথারস্ক্যান (Etherscan) আমাদের বলে যে `1C` একটি অজানা অপকোড, কারণ [ইথারস্ক্যান এই ফিচারটি লেখার পর এটি যোগ করা হয়েছিল](https://eips.ethereum.org/EIPS/eip-145) এবং তারা এটি আপডেট করেনি। একটি [আপডেটেড অপকোড টেবিল](https://github.com/wolflo/evm-opcodes) আমাদের দেখায় যে এটি শিফট রাইট (shift right)।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ---------------- | -------------------------------------------------------------------------------------------------------- |
+| 13 | DUP1 | (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) |
+| 14 | PUSH4 0x3cd8045e | 0x3CD8045E (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) |
+| 19 | GT | 0x3CD8045E>first-32-bits-of-the-call-data (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) |
+| 1A | PUSH2 0x0043 | 0x43 0x3CD8045E>first-32-bits-of-the-call-data (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) |
+| 1D | JUMPI | (((কল ডাটার প্রথম 32 বিট (4 বাইট)))) |
+
+মেথড সিগনেচার ম্যাচিং টেস্টগুলোকে এভাবে দুই ভাগে ভাগ করার ফলে গড়ে অর্ধেক টেস্ট বেঁচে যায়। এর ঠিক পরের কোড এবং 0x43-এর কোড একই প্যাটার্ন অনুসরণ করে: কল ডাটার প্রথম 32 বিটে `DUP1`, `PUSH4 (((মেথড সিগনেচার>`, সমতা চেক করার জন্য `EQ` রান করা, এবং তারপর মেথড সিগনেচার মিলে গেলে `JUMPI` করা। নিচে মেথড সিগনেচার, তাদের এডড্রেস এবং যদি জানা থাকে তবে [সংশ্লিষ্ট মেথড ডেফিনিশন](https://www.4byte.directory/) দেওয়া হলো:
+
+| মেথড | মেথড সিগনেচার | জাম্প করার অফসেট |
+| -------------------------------------------------------------------------------------- | ---------------- | ------------------- |
+| [splitter()](https://www.4byte.directory/signatures/?bytes4_signature=0x3cd8045e) | 0x3cd8045e | 0x0103 |
+| ??? | 0x81e580d3 | 0x0138 |
+| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | 0xba0bafb4 | 0x0158 |
+| ??? | 0x1f135823 | 0x00C4 |
+| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | 0x2eb4a7ab | 0x00ED |
+
+যদি কোনো মিল না পাওয়া যায়, তবে কোডটি [0x7C-তে থাকা প্রক্সি হ্যান্ডলারে](#the-handler-at-0x7c) জাম্প করে, এই আশায় যে আমরা যে কন্ট্রাক্টের প্রক্সি হিসেবে কাজ করছি তার সাথে কোনো মিল পাওয়া যাবে।
+
+
+
+## splitter() {#splitter}
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | ----------------------------- |
+| 103 | JUMPDEST |
+| 104 | CALLVALUE | CALLVALUE |
+| 105 | DUP1 | CALLVALUE CALLVALUE |
+| 106 | ISZERO | CALLVALUE==0 CALLVALUE |
+| 107 | PUSH2 0x010f | 0x010F CALLVALUE==0 CALLVALUE |
+| 10A | JUMPI | CALLVALUE |
+| 10B | PUSH1 0x00 | 0x00 CALLVALUE |
+| 10D | DUP1 | 0x00 0x00 CALLVALUE |
+| 10E | REVERT |
+
+এই ফাংশনটি প্রথমেই চেক করে যে কলটি কোনো ETH পাঠায়নি। এই ফাংশনটি [`payable`](https://solidity-by-example.org/payable/) নয়। যদি কেউ আমাদের ETH পাঠিয়ে থাকে তবে তা অবশ্যই একটি ভুল এবং আমরা `REVERT` করতে চাই যাতে সেই ETH এমন কোথাও আটকে না যায় যেখান থেকে তারা এটি আর ফেরত পেতে পারবে না।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------------------------------------------- | --------------------------------------------------------------------------- |
+| 10F | JUMPDEST |
+| 110 | POP |
+| 111 | PUSH1 0x03 | 0x03 |
+| 113 | SLOAD | (((Storage[3] অর্থাৎ যে কন্ট্রাক্টের জন্য আমরা একটি প্রক্সি))) |
+| 114 | PUSH1 0x40 | 0x40 (((Storage[3] অর্থাৎ যে কন্ট্রাক্টের জন্য আমরা একটি প্রক্সি))) |
+| 116 | MLOAD | 0x80 (((Storage[3] অর্থাৎ যে কন্ট্রাক্টের জন্য আমরা একটি প্রক্সি))) |
+| 117 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xFF...FF 0x80 (((Storage[3] অর্থাৎ যে কন্ট্রাক্টের জন্য আমরা একটি প্রক্সি))) |
+| 12C | SWAP1 | 0x80 0xFF...FF (((Storage[3] অর্থাৎ যে কন্ট্রাক্টের জন্য আমরা একটি প্রক্সি))) |
+| 12D | SWAP2 | (((Storage[3] অর্থাৎ যে কন্ট্রাক্টের জন্য আমরা একটি প্রক্সি))) 0xFF...FF 0x80 |
+| 12E | AND | ProxyAddr 0x80 |
+| 12F | DUP2 | 0x80 ProxyAddr 0x80 |
+| 130 | MSTORE | 0x80 |
+
+এবং 0x80 এখন প্রক্সি এডড্রেস ধারণ করে
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | --------- |
+| 131 | PUSH1 0x20 | 0x20 0x80 |
+| 133 | ADD | 0xA0 |
+| 134 | PUSH2 0x00e4 | 0xE4 0xA0 |
+| 137 | JUMP | 0xA0 |
+
+### E4 কোড {#the-e4-code}
+
+এই প্রথম আমরা এই লাইনগুলো দেখছি, তবে এগুলো অন্যান্য মেথডের সাথে শেয়ার করা হয়েছে (নিচে দেখুন)। তাই আমরা স্ট্যাকের ভ্যালুটিকে X বলব, এবং শুধু মনে রাখব যে `splitter()`-এ এই X-এর ভ্যালু হলো 0xA0।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ---------- | ----------- |
+| E4 | JUMPDEST | X |
+| E5 | PUSH1 0x40 | 0x40 X |
+| E7 | MLOAD | 0x80 X |
+| E8 | DUP1 | 0x80 0x80 X |
+| E9 | SWAP2 | X 0x80 0x80 |
+| EA | SUB | X-0x80 0x80 |
+| EB | SWAP1 | 0x80 X-0x80 |
+| EC | RETURN |
+
+সুতরাং এই কোডটি স্ট্যাকে (X) একটি মেমরি পয়েন্টার গ্রহণ করে এবং কন্ট্রাক্টটিকে 0x80 - X বাফার সহ `RETURN` করতে নির্দেশ দেয়।
+
+`splitter()`-এর ক্ষেত্রে, এটি সেই এডড্রেস রিটার্ন করে যার জন্য আমরা একটি প্রক্সি। `RETURN` 0x80-0x9F-এ বাফারটি রিটার্ন করে, যেখানে আমরা এই ডাটা লিখেছিলাম (উপরে অফসেট 0x130)।
+
+## currentWindow() {#currentwindow}
+
+0x158-0x163 অফসেটের কোডটি হুবহু 0x103-0x10E অফসেটে `splitter()`-এ আমরা যা দেখেছি তার মতোই (শুধুমাত্র `JUMPI` গন্তব্য ছাড়া), তাই আমরা জানি যে `currentWindow()`-ও `payable` নয়।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | -------------------- |
+| 164 | JUMPDEST |
+| 165 | POP |
+| 166 | PUSH2 0x00da | 0xDA |
+| 169 | PUSH1 0x01 | 0x01 0xDA |
+| 16B | SLOAD | Storage[1] 0xDA |
+| 16C | DUP2 | 0xDA Storage[1] 0xDA |
+| 16D | JUMP | Storage[1] 0xDA |
+
+### DA কোড {#the-da-code}
+
+এই কোডটি অন্যান্য মেথডের সাথেও শেয়ার করা হয়েছে। তাই আমরা স্ট্যাকের মানটিকে Y বলব, এবং শুধু মনে রাখব যে `currentWindow()`-এ এই Y-এর মান হলো Storage[1]।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ---------- | ---------------- |
+| DA | JUMPDEST | Y 0xDA |
+| DB | PUSH1 0x40 | 0x40 Y 0xDA |
+| DD | MLOAD | 0x80 Y 0xDA |
+| DE | SWAP1 | Y 0x80 0xDA |
+| DF | DUP2 | 0x80 Y 0x80 0xDA |
+| E0 | MSTORE | 0x80 0xDA |
+
+Y কে 0x80-0x9F এ লিখুন।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ---------- | -------------- |
+| E1 | PUSH1 0x20 | 0x20 0x80 0xDA |
+| E3 | ADD | 0xA0 0xDA |
+
+এবং বাকি অংশটি ইতিমধ্যেই [উপরে](#the-e4-code) ব্যাখ্যা করা হয়েছে। তাই 0xDA-তে জাম্প করলে স্ট্যাকের শীর্ষ (Y) 0x80-0x9F-এ লেখা হয় এবং সেই মানটি রিটার্ন করে। `currentWindow()`-এর ক্ষেত্রে, এটি Storage[1] রিটার্ন করে।
+
+## merkleRoot() {#merkleroot}
+
+অফসেট 0xED-0xF8 এর কোডটি `splitter()` এর 0x103-0x10E তে আমরা যা দেখেছি তার হুবহু অনুরূপ (`JUMPI` গন্তব্য ছাড়া), তাই আমরা জানি যে `merkleRoot()` ও `payable` নয়।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | -------------------- |
+| F9 | JUMPDEST |
+| FA | POP |
+| FB | PUSH2 0x00da | 0xDA |
+| FE | PUSH1 0x00 | 0x00 0xDA |
+| 100 | SLOAD | Storage[0] 0xDA |
+| 101 | DUP2 | 0xDA Storage[0] 0xDA |
+| 102 | JUMP | Storage[0] 0xDA |
+
+জাম্পের পরে কী ঘটে [তা আমরা আগেই বের করেছি](#the-da-code)। সুতরাং `merkleRoot()` Storage[0] রিটার্ন করে।
+
+## 0x81e580d3 {#0x81e580d3}
+
+0x138-0x143 অফসেটের কোডটি হুবহু 0x103-0x10E-এ `splitter()`-এ আমরা যা দেখেছি তার মতোই (শুধুমাত্র `JUMPI` গন্তব্য ছাড়া), তাই আমরা জানি যে এই ফাংশনটিও `payable` নয়।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | ------------------------------------------------------------ |
+| 144 | JUMPDEST |
+| 145 | POP |
+| 146 | PUSH2 0x00da | 0xDA |
+| 149 | PUSH2 0x0153 | 0x0153 0xDA |
+| 14C | CALLDATASIZE | CALLDATASIZE 0x0153 0xDA |
+| 14D | PUSH1 0x04 | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 14F | PUSH2 0x018f | 0x018F 0x04 CALLDATASIZE 0x0153 0xDA |
+| 152 | JUMP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 18F | JUMPDEST | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 190 | PUSH1 0x00 | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 192 | PUSH1 0x20 | 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 194 | DUP3 | 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 195 | DUP5 | CALLDATASIZE 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 196 | SUB | CALLDATASIZE-4 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 197 | SLT | CALLDATASIZE-4\<32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 198 | ISZERO | CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 199 | PUSH2 0x01a0 | 0x01A0 CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19C | JUMPI | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+
+মনে হচ্ছে এই ফাংশনটি কল ডাটার অন্তত 32 বাইট (এক ওয়ার্ড) নেয়।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------ | -------------------------------------------- |
+| 19D | DUP1 | 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19E | DUP2 | 0x00 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19F | REVERT |
+
+যদি এটি কল ডাটা না পায় তবে কোনো রিটার্ন ডাটা ছাড়াই লেনদেনটি রিভার্ট হয়ে যায়।
+
+চলুন দেখি যদি ফাংশনটি তার প্রয়োজনীয় কল ডাটা পায় তবে কী ঘটে।
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | ---------------------------------------- |
+| 1A0 | JUMPDEST | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 1A1 | POP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 1A2 | CALLDATALOAD | calldataload(4) CALLDATASIZE 0x0153 0xDA |
+
+`calldataload(4)` হলো মেথড সিগনেচারের _পরের_ কল ডাটার প্রথম ওয়ার্ড
+
+| অফসেট | অপকোড | স্ট্যাক |
+| -----: | ------------ | ---------------------------------------------------------------------------- |
+| 1A3 | SWAP2 | 0x0153 CALLDATASIZE calldataload(4) 0xDA |
+| 1A4 | SWAP1 | CALLDATASIZE 0x0153 calldataload(4) 0xDA |
+| 1A5 | POP | 0x0153 calldataload(4) 0xDA |
+| 1A6 | JUMP | calldataload(4) 0xDA |
+| 153 | JUMPDEST | calldataload(4) 0xDA |
+| 154 | PUSH2 0x016e | 0x016E calldataload(4) 0xDA |
+| 157 | JUMP | calldataload(4) 0xDA |
+| 16E | JUMPDEST | calldataload(4) 0xDA |
+| 16F | PUSH1 0x04 | 0x04 calldataload(4) 0xDA |
+| 171 | DUP2 | calldataload(4) 0x04 calldataload(4) 0xDA |
+| 172 | DUP2 | 0x04 calldataload(4) 0x04 calldataload(4) 0xDA |
+| 173 | SLOAD | Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 174 | DUP2 | calldataload(4) Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 175 | LT | calldataload(4)\)`, এবং আরেকটি হলো `isClaimed()`, তাই এটিকে একটি এয়ারড্রপ কন্ট্রাক্ট বলে মনে হচ্ছে। বাকিগুলো অপকোড বাই অপকোড চেক করার পরিবর্তে, আমরা [ডিকম্পাইলার চেষ্টা করতে পারি](https://etherscan.io/bytecode-decompiler?a=0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761), যা এই কন্ট্রাক্ট থেকে 3টি ফাংশনের জন্য ব্যবহারযোগ্য ফলাফল তৈরি করে। অন্যগুলোর রিভার্স ইঞ্জিনিয়ারিং পাঠকের জন্য অনুশীলন হিসেবে রেখে দেওয়া হলো।
+
+### scaleAmountByPercentage {#scaleamountbypercentage}
+
+এই ফাংশনের জন্য ডিকম্পাইলার আমাদের যা দেয় তা হলো:
+
+```python
+def unknown8ffb5c97(uint256 _param1, uint256 _param2) payable:
+ require calldata.size - 4 >=′ 64
+ if _param1 and _param2 > -1 / _param1:
+ revert with 0, 17
+ return (_param1 * _param2 / 100 * 10^6)
+```
+
+প্রথম `require` টেস্ট করে যে কল ডাটায়, ফাংশন সিগনেচারের 4 বাইট ছাড়াও, অন্তত 64 বাইট আছে, যা দুটি প্যারামিটারের জন্য যথেষ্ট। যদি না থাকে তবে স্পষ্টতই কিছু ভুল আছে।
+
+`if` স্টেটমেন্টটি চেক করে বলে মনে হয় যে `_param1` শূন্য নয়, এবং `_param1 * _param2` নেগেটিভ নয়। এটি সম্ভবত র্যাপ অ্যারাউন্ডের (wrap around) ঘটনাগুলো প্রতিরোধ করার জন্য।
+
+অবশেষে, ফাংশনটি একটি স্কেলড ভ্যালু রিটার্ন করে।
+
+### claim {#claim}
+
+ডিকম্পাইলার যে কোড তৈরি করে তা জটিল, এবং এর সবটুকু আমাদের জন্য প্রাসঙ্গিক নয়। আমি এর কিছু অংশ বাদ দিয়ে সেই লাইনগুলোতে ফোকাস করতে যাচ্ছি যেগুলো আমার মতে দরকারী তথ্য প্রদান করে
+
+```python
+def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _param4) payable:
+ ...
+ require _param2 == addr(_param2)
+ ...
+ if currentWindow <= _param1:
+ revert with 0, 'cannot claim for a future window'
+```
+
+আমরা এখানে দুটি গুরুত্বপূর্ণ বিষয় দেখতে পাচ্ছি:
+
+- `_param2`, যদিও এটি একটি `uint256` হিসেবে ডিক্লেয়ার করা হয়েছে, এটি আসলে একটি এডড্রেস
+- `_param1` হলো ক্লেইম করা উইন্ডো, যা `currentWindow` বা তার আগের হতে হবে।
+
+```python
+ ...
+ if stor5[_claimWindow][addr(_claimFor)]:
+ revert with 0, 'Account already claimed the given window'
+```
+
+সুতরাং এখন আমরা জানি যে Storage[5] হলো উইন্ডো এবং এডড্রেসগুলোর একটি অ্যারে, এবং এডড্রেসটি সেই উইন্ডোর জন্য রিওয়ার্ড ক্লেইম করেছে কিনা।
+
+```python
+ ...
+ idx = 0
+ s = 0
+ while idx < _param4.length:
+ ...
+ if s + sha3(mem[(32 * _param4.length) + 328 len mem[(32 * _param4.length) + 296]]) > mem[(32 * idx) + 296]:
+ mem[mem[64] + 32] = mem[(32 * idx) + 296]
+ ...
+ s = sha3(mem[_62 + 32 len mem[_62]])
+ continue
+ ...
+ s = sha3(mem[_66 + 32 len mem[_66]])
+ continue
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+```
+
+আমরা জানি যে `unknown2eb4a7ab` আসলে `merkleRoot()` ফাংশন, তাই এই কোডটি দেখে মনে হচ্ছে এটি একটি [মার্কেল প্রুফ](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5) ভেরিফাই করছে। এর মানে হলো `_param4` একটি মার্কেল প্রুফ।
+
+```python
+ call addr(_param2) with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+ gas 30000 wei
+```
+
+এভাবেই একটি কন্ট্রাক্ট তার নিজস্ব ETH অন্য একটি এডড্রেসে (কন্ট্রাক্ট বা এক্সটার্নালি ওনড একাউন্ট) ট্রান্সফার করে। এটি ট্রান্সফার করার পরিমাণের সমান ভ্যালু দিয়ে এটিকে কল করে। তাই এটিকে ETH-এর একটি এয়ারড্রপ বলে মনে হচ্ছে।
+
+```python
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+```
+
+নিচের দুটি লাইন আমাদের বলে যে Storage[2] ও একটি কন্ট্রাক্ট যাকে আমরা কল করি। যদি আমরা [কনস্ট্রাক্টর লেনদেনটি দেখি](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange) তবে আমরা দেখতে পাই যে এই কন্ট্রাক্টটি হলো [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2), একটি র্যাপড ইথার (Wrapped Ether) কন্ট্রাক্ট [যার সোর্স কোড Etherscan-এ আপলোড করা হয়েছে](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code)।
+
+তাই মনে হচ্ছে কন্ট্রাক্টগুলো `_param2`-তে ETH পাঠানোর চেষ্টা করে। যদি এটি করতে পারে, তবে দারুণ। যদি না পারে, তবে এটি [WETH](https://weth.tkn.eth.limo/) পাঠানোর চেষ্টা করে। যদি `_param2` একটি এক্সটার্নালি ওনড একাউন্ট (EOA) হয় তবে এটি সবসময় ETH গ্রহণ করতে পারে, কিন্তু কন্ট্রাক্টগুলো ETH গ্রহণ করতে অস্বীকার করতে পারে। তবে, WETH হলো ERC-20 এবং কন্ট্রাক্টগুলো এটি গ্রহণ করতে অস্বীকার করতে পারে না।
+
+```python
+ ...
+ log 0xdbd5389f: addr(_param2), unknown81e580d3[_param1] * _param3 / 100 * 10^6, bool(ext_call.success)
+```
+
+ফাংশনের শেষে আমরা দেখতে পাই যে একটি লগ এন্ট্রি তৈরি হচ্ছে। [তৈরি হওয়া লগ এন্ট্রিগুলো দেখুন](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#events) এবং `0xdbd5...` দিয়ে শুরু হওয়া টপিকটি ফিল্টার করুন। যদি আমরা [এমন একটি এন্ট্রি তৈরি করা লেনদেনগুলোর একটিতে ক্লিক করি](https://etherscan.io/tx/0xe7d3b7e00f645af17dfbbd010478ef4af235896c65b6548def1fe95b3b7d2274) তবে আমরা দেখতে পাই যে এটি সত্যিই একটি ক্লেইমের মতো দেখাচ্ছে - একাউন্টটি আমরা যে কন্ট্রাক্টটি রিভার্স ইঞ্জিনিয়ারিং করছি তাতে একটি মেসেজ পাঠিয়েছে, এবং বিনিময়ে ETH পেয়েছে।
+
+
+
+### 1e7df9d3 {#1e7df9d3}
+
+এই ফাংশনটি উপরের [`claim`](#claim)-এর মতোই। এটিও একটি মার্কেল প্রুফ চেক করে, প্রথমটিতে ETH ট্রান্সফার করার চেষ্টা করে এবং একই ধরনের লগ এন্ট্রি তৈরি করে।
+
+```python
+def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable:
+ ...
+ idx = 0
+ s = 0
+ while idx < _param3.length:
+ if idx >= mem[96]:
+ revert with 0, 50
+ _55 = mem[(32 * idx) + 128]
+ if s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]]) > mem[(32 * idx) + 128]:
+ ...
+ s = sha3(mem[_58 + 32 len mem[_58]])
+ continue
+ mem[mem[64] + 32] = s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]])
+ ...
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+ ...
+ call addr(_param1) with:
+ value s wei
+ gas 30000 wei
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value s wei
+ gas gas_remaining wei
+ ...
+ log 0xdbd5389f: addr(_param1), s, bool(ext_call.success)
+```
+
+প্রধান পার্থক্য হলো প্রথম প্যারামিটার, অর্থাৎ উইথড্র করার উইন্ডোটি এখানে নেই। এর পরিবর্তে, ক্লেইম করা যেতে পারে এমন সমস্ত উইন্ডোর উপর একটি লুপ রয়েছে।
+
+```python
+ idx = 0
+ s = 0
+ while idx < currentWindow:
+ ...
+ if stor5[mem[0]]:
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s
+ continue
+ ...
+ stor5[idx][addr(_param1)] = 1
+ if idx >= unknown81e580d3.length:
+ revert with 0, 50
+ mem[0] = 4
+ if unknown81e580d3[idx] and _param2 > -1 / unknown81e580d3[idx]:
+ revert with 0, 17
+ if s > !(unknown81e580d3[idx] * _param2 / 100 * 10^6):
+ revert with 0, 17
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s + (unknown81e580d3[idx] * _param2 / 100 * 10^6)
+ continue
+```
+
+তাই এটিকে একটি `claim` ভ্যারিয়েন্ট বলে মনে হচ্ছে যা সমস্ত উইন্ডো ক্লেইম করে।
+
+## উপসংহার {#conclusion}
+
+এতক্ষণে আপনার জানা উচিত কীভাবে অপকোড বা (যখন এটি কাজ করে) ডিকম্পাইলার ব্যবহার করে এমন কন্ট্রাক্টগুলো বুঝতে হয় যাদের সোর্স কোড পাওয়া যায় না। এই নিবন্ধের দৈর্ঘ্য থেকে যেমনটি স্পষ্ট, একটি কন্ট্রাক্ট রিভার্স ইঞ্জিনিয়ারিং করা সহজ কাজ নয়, তবে এমন একটি সিস্টেমে যেখানে নিরাপত্তা অপরিহার্য, সেখানে কন্ট্রাক্টগুলো প্রতিশ্রুতি অনুযায়ী কাজ করছে কিনা তা যাচাই করতে পারা একটি গুরুত্বপূর্ণ দক্ষতা।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/bn/developers/tutorials/run-node-raspberry-pi/index.md
new file mode 100644
index 00000000000..980f5aa53c8
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/run-node-raspberry-pi/index.md
@@ -0,0 +1,185 @@
+---
+title: রাস্পবেরি পাই 4-এ একটি ইথিরিয়াম নোড চালান
+description: আপনার রাস্পবেরি পাই 4 ফ্ল্যাশ করুন, একটি ইথারনেট কেবল প্লাগ ইন করুন, SSD ডিস্ক কানেক্ট করুন এবং রাস্পবেরি পাই 4-কে একটি সম্পূর্ণ ইথিরিয়াম নোড + ভ্যালিডেটর-এ পরিণত করতে ডিভাইসটি চালু করুন
+author: "EthereumOnArm"
+tags: ["ক্লায়েন্ট", "এক্সিকিউশন লেয়ার", "কনসেন্সাস লেয়ার", "নোড"]
+lang: bn
+skill: intermediate
+breadcrumb: রাস্প পাই নোড
+published: 2022-06-10
+source: Ethereum on ARM
+sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/
+---
+
+**Ethereum on Arm হলো একটি কাস্টম লিনাক্স ইমেজ যা একটি রাস্পবেরি পাই-কে একটি ইথিরিয়াম নোড-এ পরিণত করতে পারে।**
+
+Ethereum on Arm ব্যবহার করে একটি রাস্পবেরি পাই-কে ইথিরিয়াম নোড-এ পরিণত করতে, নিচের হার্ডওয়্যারগুলো সুপারিশ করা হয়:
+
+- রাস্পবেরি 4 (মডেল B 8GB), Odroid M1 বা Rock 5B (8GB/16GB RAM) বোর্ড
+- মাইক্রোএসডি কার্ড (ন্যূনতম 16 GB ক্লাস 10)
+- ন্যূনতম 2 TB SSD USB 3.0 ডিস্ক বা USB থেকে SATA কেস সহ একটি SSD।
+- পাওয়ার সাপ্লাই
+- ইথারনেট কেবল
+- পোর্ট ফরোয়ার্ডিং (আরও তথ্যের জন্য ক্লায়েন্ট দেখুন)
+- হিটসিঙ্ক এবং ফ্যান সহ একটি কেস
+- USB কীবোর্ড, মনিটর এবং HDMI কেবল (মাইক্রো-HDMI) (ঐচ্ছিক)
+
+## কেন ARM-এ ইথিরিয়াম চালাবেন? {#why-run-ethereum-on-arm}
+
+ARM বোর্ডগুলো খুবই সাশ্রয়ী, নমনীয় এবং ছোট কম্পিউটার। ইথিরিয়াম নোড চালানোর জন্য এগুলো ভালো পছন্দ কারণ এগুলো সস্তায় কেনা যায়, এমনভাবে কনফিগার করা যায় যাতে এদের সমস্ত রিসোর্স শুধুমাত্র নোড-এর ওপর ফোকাস করে, যা এদেরকে দক্ষ করে তোলে, এগুলো কম বিদ্যুৎ খরচ করে এবং শারীরিকভাবে ছোট হওয়ায় যেকোনো বাড়িতে সহজেই রাখা যায়। নোড চালু করাও খুব সহজ কারণ রাস্পবেরি পাই-এর মাইক্রোএসডি-কে সহজেই একটি প্রি-বিল্ট ইমেজ দিয়ে ফ্ল্যাশ করা যায়, কোনো সফটওয়্যার ডাউনলোড বা বিল্ড করার প্রয়োজন হয় না।
+
+## এটি কীভাবে কাজ করে? {#how-does-it-work}
+
+রাস্পবেরি পাই-এর মেমরি কার্ড একটি প্রি-বিল্ট ইমেজ দিয়ে ফ্ল্যাশ করা হয়। এই ইমেজে একটি ইথিরিয়াম নোড চালানোর জন্য প্রয়োজনীয় সবকিছু থাকে। একটি ফ্ল্যাশ করা কার্ড দিয়ে, ব্যবহারকারীকে শুধু রাস্পবেরি পাই চালু করতে হয়। নোড চালানোর জন্য প্রয়োজনীয় সমস্ত প্রসেস স্বয়ংক্রিয়ভাবে শুরু হয়ে যায়। এটি কাজ করে কারণ মেমরি কার্ডে একটি লিনাক্স-ভিত্তিক অপারেটিং সিস্টেম (OS) থাকে যার ওপর সিস্টেম-লেভেলের প্রসেসগুলো স্বয়ংক্রিয়ভাবে চলে যা ইউনিটটিকে একটি ইথিরিয়াম নোড-এ পরিণত করে।
+
+জনপ্রিয় রাস্পবেরি পাই লিনাক্স OS "Raspbian" ব্যবহার করে ইথিরিয়াম চালানো যায় না কারণ Raspbian এখনও 32-বিট আর্কিটেকচার ব্যবহার করে যার ফলে ইথিরিয়াম ব্যবহারকারীরা মেমরি সংক্রান্ত সমস্যার সম্মুখীন হন এবং কনসেন্সাস ক্লায়েন্ট 32-বিট বাইনারি সমর্থন করে না। এটি কাটিয়ে উঠতে, Ethereum on Arm টিম "Armbian" নামক একটি নেটিভ 64-বিট OS-এ স্থানান্তরিত হয়েছে।
+
+**ইমেজগুলো সমস্ত প্রয়োজনীয় পদক্ষেপের যত্ন নেয়**, পরিবেশ সেট আপ করা এবং SSD ডিস্ক ফরম্যাট করা থেকে শুরু করে ইথিরিয়াম সফটওয়্যার ইনস্টল করা এবং চালানো, সেইসাথে ব্লকচেইন সিঙ্ক্রোনাইজেশন শুরু করা পর্যন্ত।
+
+## এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট সম্পর্কে নোট {#note-on-execution-and-consensus-clients}
+
+Ethereum on Arm ইমেজে প্রি-বিল্ট এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট সার্ভিস হিসেবে অন্তর্ভুক্ত থাকে। একটি ইথিরিয়াম নোড-এর জন্য উভয় ক্লায়েন্ট সিঙ্ক করা এবং চালু থাকা প্রয়োজন। আপনাকে শুধুমাত্র ইমেজটি ডাউনলোড এবং ফ্ল্যাশ করতে হবে এবং তারপর সার্ভিসগুলো চালু করতে হবে। ইমেজটিতে নিচের এক্সিকিউশন ক্লায়েন্টগুলো প্রি-লোড করা থাকে:
+
+- Geth
+- Nethermind
+- Besu
+
+এবং নিচের কনসেন্সাস ক্লায়েন্টগুলো:
+
+- Lighthouse
+- Nimbus
+- Prysm
+- Teku
+
+চালানোর জন্য আপনার প্রতিটির একটি করে বেছে নেওয়া উচিত - সমস্ত এক্সিকিউশন ক্লায়েন্ট সমস্ত কনসেন্সাস ক্লায়েন্ট-এর সাথে সামঞ্জস্যপূর্ণ। আপনি যদি স্পষ্টভাবে কোনো ক্লায়েন্ট নির্বাচন না করেন, তবে নোডটি তার ডিফল্ট - Geth এবং Lighthouse-এ ফিরে যাবে - এবং বোর্ড চালু হলে স্বয়ংক্রিয়ভাবে সেগুলো চালাবে। আপনাকে অবশ্যই আপনার রাউটারে 30303 পোর্ট খুলতে হবে যাতে Geth পিয়ারদের খুঁজে পেতে এবং তাদের সাথে কানেক্ট করতে পারে।
+
+## ইমেজ ডাউনলোড করা {#downloading-the-image}
+
+রাস্পবেরি পাই 4 ইথিরিয়াম ইমেজ হলো একটি "প্লাগ অ্যান্ড প্লে" ইমেজ যা স্বয়ংক্রিয়ভাবে এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট উভয়ই ইনস্টল এবং সেট আপ করে, একে অপরের সাথে কথা বলতে এবং ইথিরিয়াম নেটওয়ার্ক-এর সাথে কানেক্ট করতে কনফিগার করে। ব্যবহারকারীকে শুধু একটি সাধারণ কমান্ড ব্যবহার করে তাদের প্রসেসগুলো শুরু করতে হবে।
+
+[Ethereum on Arm](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/Ec_VmUvr80VFjf3RYSU-NzkBmj2JOteDECj8Bibde929Gw?download=1) থেকে রাস্পবেরি পাই ইমেজটি ডাউনলোড করুন এবং SHA256 হ্যাস যাচাই করুন:
+
+```sh
+# ডাউনলোড করা ইমেজ থাকা ডিরেক্টরি থেকে
+shasum -a 256 ethonarm_22.04.00.img.zip
+# হ্যাস আউটপুট হওয়া উচিত: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f
+```
+
+মনে রাখবেন যে Rock 5B এবং Odroid M1 বোর্ডের জন্য ইমেজগুলো Ethereum-on-Arm [ডাউনলোড পেজ](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)-এ পাওয়া যায়।
+
+## মাইক্রোএসডি ফ্ল্যাশ করা {#flashing-the-microsd}
+
+রাস্পবেরি পাই-এর জন্য যে মাইক্রোএসডি কার্ডটি ব্যবহার করা হবে তা প্রথমে একটি ডেস্কটপ বা ল্যাপটপে ঢোকাতে হবে যাতে এটি ফ্ল্যাশ করা যায়। তারপর, নিচের টার্মিনাল কমান্ডগুলো ডাউনলোড করা ইমেজটিকে SD কার্ডে ফ্ল্যাশ করবে:
+
+```shell
+# মাইক্রোএসডি কার্ডের নাম চেক করুন
+sudo fdisk -l
+
+>> sdxxx
+```
+
+নামটি সঠিকভাবে পাওয়া সত্যিই গুরুত্বপূর্ণ কারণ পরবর্তী কমান্ডে `dd` অন্তর্ভুক্ত রয়েছে যা কার্ডে ইমেজ পুশ করার আগে কার্ডের বিদ্যমান কন্টেন্ট সম্পূর্ণ মুছে ফেলে। চালিয়ে যেতে, জিপ করা ইমেজ থাকা ডিরেক্টরিতে নেভিগেট করুন:
+
+```shell
+# ইমেজ আনজিপ এবং ফ্ল্যাশ করুন
+unzip ethonarm_22.04.00.img.zip
+sudo dd bs=1M if=ethonarm_22.04.00.img of=/dev/ conv=fdatasync status=progress
+```
+
+কার্ডটি এখন ফ্ল্যাশ করা হয়েছে, তাই এটি রাস্পবেরি পাই-তে ঢোকানো যেতে পারে।
+
+## নোড শুরু করুন {#start-the-node}
+
+রাস্পবেরি পাই-তে SD কার্ড ঢোকানোর পর, ইথারনেট কেবল এবং SSD কানেক্ট করুন তারপর পাওয়ার চালু করুন। OS বুট আপ হবে এবং ক্লায়েন্ট সফটওয়্যার ইনস্টল এবং বিল্ড করা সহ রাস্পবেরি পাই-কে একটি ইথিরিয়াম নোড-এ পরিণত করার জন্য প্রি-কনফিগার করা কাজগুলো স্বয়ংক্রিয়ভাবে শুরু করবে। এতে সম্ভবত 10-15 মিনিট সময় লাগবে।
+
+সবকিছু ইনস্টল এবং কনফিগার হয়ে গেলে, একটি ssh কানেকশনের মাধ্যমে ডিভাইসে লগ ইন করুন অথবা বোর্ডে মনিটর এবং কীবোর্ড যুক্ত থাকলে সরাসরি টার্মিনাল ব্যবহার করুন। লগ ইন করতে `ethereum` একাউন্ট ব্যবহার করুন, কারণ এতে নোড শুরু করার জন্য প্রয়োজনীয় অনুমতি রয়েছে।
+
+```shell
+User: ethereum
+Password: ethereum
+```
+
+ডিফল্ট এক্সিকিউশন ক্লায়েন্ট, Geth, স্বয়ংক্রিয়ভাবে শুরু হবে। আপনি নিচের টার্মিনাল কমান্ড ব্যবহার করে লগ চেক করে এটি নিশ্চিত করতে পারেন:
+
+```sh
+sudo journalctl -u geth -f
+```
+
+কনসেন্সাস ক্লায়েন্ট স্পষ্টভাবে শুরু করার প্রয়োজন আছে। এটি করতে, প্রথমে আপনার রাউটারে 9000 পোর্ট খুলুন যাতে Lighthouse পিয়ারদের খুঁজে পেতে এবং তাদের সাথে কানেক্ট করতে পারে। তারপর lighthouse সার্ভিস এনাবল এবং শুরু করুন:
+
+```sh
+sudo systemctl enable lighthouse-beacon
+sudo systemctl start lighthouse-beacon
+```
+
+লগ ব্যবহার করে ক্লায়েন্ট চেক করুন:
+
+```sh
+sudo journalctl -u lighthouse-beacon
+```
+
+মনে রাখবেন যে কনসেন্সাস ক্লায়েন্ট কয়েক মিনিটের মধ্যে সিঙ্ক হবে কারণ এটি চেকপয়েন্ট সিঙ্ক ব্যবহার করে। এক্সিকিউশন ক্লায়েন্ট-এর বেশি সময় লাগবে - সম্ভবত কয়েক ঘণ্টা, এবং কনসেন্সাস ক্লায়েন্ট-এর সিঙ্ক শেষ না হওয়া পর্যন্ত এটি শুরু হবে না (এর কারণ হলো এক্সিকিউশন ক্লায়েন্ট-এর সিঙ্ক করার জন্য একটি টার্গেট প্রয়োজন, যা সিঙ্ক হওয়া কনসেন্সাস ক্লায়েন্ট প্রদান করে)।
+
+Geth এবং Lighthouse সার্ভিস চালু এবং সিঙ্ক হওয়ার সাথে সাথে, আপনার রাস্পবেরি পাই এখন একটি ইথিরিয়াম নোড! Geth-এর জাভাস্ক্রিপ্ট কনসোল ব্যবহার করে ইথিরিয়াম নেটওয়ার্ক-এর সাথে ইন্টারঅ্যাক্ট করা সবচেয়ে সাধারণ, যা 8545 পোর্টে Geth ক্লায়েন্ট-এর সাথে যুক্ত করা যেতে পারে। Curl-এর মতো একটি রিকোয়েস্ট টুল ব্যবহার করে JSON অবজেক্ট হিসেবে ফরম্যাট করা কমান্ড জমা দেওয়াও সম্ভব। [Geth ডকুমেন্টেশন](https://geth.ethereum.org/)-এ আরও দেখুন।
+
+Geth একটি Grafana ড্যাশবোর্ডে মেট্রিক্স রিপোর্ট করার জন্য প্রি-কনফিগার করা আছে যা ব্রাউজারে দেখা যেতে পারে। আরও উন্নত ব্যবহারকারীরা `ipaddress:3000`-এ নেভিগেট করে, `user: admin` এবং `passwd: ethereum` পাস করে তাদের নোড-এর স্বাস্থ্য নিরীক্ষণ করতে এই বৈশিষ্ট্যটি ব্যবহার করতে চাইতে পারেন।
+
+## ভ্যালিডেটরস {#validators}
+
+একটি ভ্যালিডেটর ঐচ্ছিকভাবে কনসেন্সাস ক্লায়েন্ট-এ যোগ করা যেতে পারে। ভ্যালিডেটর সফটওয়্যার আপনার নোড-কে কনসেন্সাস-এ সক্রিয়ভাবে অংশগ্রহণ করতে দেয় এবং নেটওয়ার্ক-কে ক্রিপ্টোইকোনমিক নিরাপত্তা প্রদান করে। আপনি এই কাজের জন্য ETH-এ পুরস্কৃত হবেন। একটি ভ্যালিডেটর চালানোর জন্য, আপনার প্রথমে 32 ETH থাকতে হবে, যা অবশ্যই ডিপোজিট কন্টাক্ট-এ জমা করতে হবে। [লঞ্চপ্যাড](https://launchpad.ethereum.org/)-এ ধাপে ধাপে গাইড অনুসরণ করে ডিপোজিট করা যেতে পারে। এটি একটি ডেস্কটপ/ল্যাপটপে করুন, তবে কি (keys) জেনারেট করবেন না — এটি সরাসরি রাস্পবেরি পাই-তে করা যেতে পারে।
+
+রাস্পবেরি পাই-তে একটি টার্মিনাল খুলুন এবং ডিপোজিট কি জেনারেট করতে নিচের কমান্ডটি চালান:
+
+```
+sudo apt-get update
+sudo apt-get install staking-deposit-cli
+cd && deposit new-mnemonic --num_validators 1
+```
+
+(অথবা একটি এয়ারগ্যাপড মেশিনে চালানোর জন্য [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) ডাউনলোড করুন এবং `deposit new-mnemnonic` কমান্ডটি চালান)
+
+নেমোনিক ফ্রেজটি নিরাপদে রাখুন! উপরের কমান্ডটি নোড-এর কিস্টোরে দুটি ফাইল তৈরি করেছে: ভ্যালিডেটর কি এবং একটি ডিপোজিট ডা ফাইল। ডিপোজিট ডাটা লঞ্চপ্যাডে আপলোড করতে হবে, তাই এটি রাস্পবেরি পাই থেকে ডেস্কটপ/ল্যাপটপে কপি করতে হবে। এটি একটি ssh কানেকশন বা অন্য কোনো কপি/পেস্ট পদ্ধতি ব্যবহার করে করা যেতে পারে।
+
+লঞ্চপ্যাড চালানো কম্পিউটারে ডিপোজিট ডাটা ফাইলটি পাওয়া গেলে, এটি লঞ্চপ্যাড স্ক্রিনের `+`-এ টেনে এনে ছেড়ে দেওয়া যেতে পারে। ডিপোজিট কন্টাক্ট-এ একটি লেনদেন পাঠাতে স্ক্রিনের নির্দেশাবলী অনুসরণ করুন।
+
+রাস্পবেরি পাই-তে ফিরে এসে, একটি ভ্যালিডেটর শুরু করা যেতে পারে। এর জন্য ভ্যালিডেটর কি ইমপোর্ট করা, রিওয়ার্ড সংগ্রহ করার জন্য এডড্রেস সেট করা এবং তারপর প্রি-কনফিগার করা ভ্যালিডেটর প্রসেস শুরু করা প্রয়োজন। নিচের উদাহরণটি Lighthouse-এর জন্য—অন্যান্য কনসেন্সাস ক্লায়েন্ট-এর নির্দেশাবলী [Ethereum on Arm ডক্স](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)-এ পাওয়া যায়:
+
+```shell
+# ভ্যালিডেটর কীগুলো ইমপোর্ট করুন
+lighthouse account validator import --directory=/home/ethereum/validator_keys
+
+# রিওয়ার্ড অ্যাড্রেস সেট করুন
+sudo sed -i 's/' /etc/ethereum/lighthouse-validator.conf
+
+# ভ্যালিডেটর চালু করুন
+sudo systemctl start lighthouse-validator
+```
+
+অভিনন্দন, আপনার এখন একটি রাস্পবেরি পাই-তে একটি সম্পূর্ণ ইথিরিয়াম নোড এবং ভ্যালিডেটর চলছে!
+
+## আরও বিস্তারিত {#more-details}
+
+এই পেজটি রাস্পবেরি পাই ব্যবহার করে কীভাবে একটি Geth-Lighthouse নোড এবং ভ্যালিডেটর সেট আপ করতে হয় তার একটি ওভারভিউ দিয়েছে। আরও বিস্তারিত নির্দেশাবলী [Ethereum-on-Arm ওয়েবসাইট](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)-এ পাওয়া যায়।
+
+## মতামত প্রশংসিত {#feedback-appreciated}
+
+আমরা জানি রাস্পবেরি পাই-এর একটি বিশাল ব্যবহারকারী বেস রয়েছে যা ইথিরিয়াম নেটওয়ার্ক-এর স্বাস্থ্যের ওপর খুব ইতিবাচক প্রভাব ফেলতে পারে।
+অনুগ্রহ করে এই টিউটোরিয়ালের বিস্তারিত বিষয়গুলো দেখুন, টেস্টনেট-এ চালানোর চেষ্টা করুন, Ethereum on Arm গিটহাব চেক করুন, মতামত দিন, ইস্যু এবং পুল রিকোয়েস্ট তৈরি করুন এবং প্রযুক্তি ও ডকুমেন্টেশন এগিয়ে নিতে সাহায্য করুন!
+
+## রেফারেন্স {#references}
+
+1. https://ubuntu.com/download/raspberry-pi
+2. https://wikipedia.org/wiki/Port_forwarding
+3. https://prometheus.io
+4. https://grafana.com
+5. https://forum.armbian.com/topic/5565-zram-vs-swap/
+6. https://geth.ethereum.org
+7. https://nethermind.io
+8. https://www.hyperledger.org/projects/besu
+9. https://github.com/prysmaticlabs/prysm
+10. https://lighthouse.sigmaprime.io
+11. https://docs.ethswarm.org/
+12. https://raiden.network
+13. https://ipfs.io
+14. https://status.im
+15. https://vipnode.org
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/scam-token-tricks/index.md b/public/content/translations/bn/developers/tutorials/scam-token-tricks/index.md
new file mode 100644
index 00000000000..578c86b6657
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/scam-token-tricks/index.md
@@ -0,0 +1,463 @@
+---
+title: "স্ক্যাম টোকেনগুলোর ব্যবহৃত কিছু কৌশল এবং কীভাবে সেগুলো শনাক্ত করা যায়"
+description: এই টিউটোরিয়ালে আমরা একটি স্ক্যাম টোকেন বিশ্লেষণ করে দেখব স্ক্যামাররা কী ধরনের কৌশল ব্যবহার করে, কীভাবে সেগুলো প্রয়োগ করে এবং আমরা কীভাবে সেগুলো শনাক্ত করতে পারি।
+author: ওরি পোমেরান্টজ
+tags: ["স্ক্যাম", "solidity", "erc-20", "javascript", "typescript"]
+skill: intermediate
+breadcrumb: স্ক্যাম টোকেনের কৌশল
+published: 2023-09-15
+lang: bn
+---
+
+এই টিউটোরিয়ালে আমরা [একটি স্ক্যাম টোকেন](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code) বিশ্লেষণ করে দেখব স্ক্যামাররা কী ধরনের কৌশল ব্যবহার করে এবং কীভাবে সেগুলো প্রয়োগ করে। টিউটোরিয়ালটির শেষে আপনি ERC-20 টোকেন কন্ট্রাক্ট, এগুলোর সক্ষমতা এবং কেন সন্দেহপ্রবণ হওয়া প্রয়োজন সে সম্পর্কে আরও বিশদ ধারণা পাবেন। এরপর আমরা সেই স্ক্যাম টোকেন থেকে নির্গত ইভেন্টগুলো দেখব এবং কীভাবে স্বয়ংক্রিয়ভাবে শনাক্ত করা যায় যে এটি বৈধ নয় তা জানব।
+
+## স্ক্যাম টোকেন - এগুলো কী, মানুষ কেন এগুলো তৈরি করে এবং কীভাবে এগুলো এড়িয়ে চলবেন {#scam-tokens}
+
+Ethereum-এর অন্যতম সাধারণ ব্যবহার হলো কোনো গোষ্ঠীর জন্য একটি ট্রেডযোগ্য টোকেন তৈরি করা, যা এক অর্থে তাদের নিজস্ব মুদ্রা। তবে, যেখানেই বৈধ ব্যবহারের মাধ্যমে ভ্যালু তৈরি হয়, সেখানেই এমন অপরাধীরা থাকে যারা সেই ভ্যালু নিজেদের জন্য চুরি করার চেষ্টা করে।
+
+একজন ব্যবহারকারীর দৃষ্টিকোণ থেকে আপনি এই বিষয়ে [ethereum.org-এর অন্য জায়গায়](/guides/how-to-id-scam-tokens/) আরও পড়তে পারেন। এই টিউটোরিয়ালটি মূলত একটি স্ক্যাম টোকেন বিশ্লেষণ করে কীভাবে এটি করা হয় এবং কীভাবে এটি শনাক্ত করা যায় তার ওপর ফোকাস করে।
+
+### আমি কীভাবে বুঝব যে wARB একটি স্ক্যাম? {#warb-scam}
+
+আমরা যে টোকেনটি বিশ্লেষণ করব তা হলো [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code), যা বৈধ [ARB টোকেন](https://etherscan.io/token/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1)-এর সমতুল্য হওয়ার ভান করে।
+
+কোনটি বৈধ টোকেন তা জানার সবচেয়ে সহজ উপায় হলো এর মূল সংস্থা, [Arbitrum](https://arbitrum.foundation/)-এর দিকে নজর দেওয়া। বৈধ এডড্রেসগুলো [তাদের ডকুমেন্টেশনে](https://docs.arbitrum.foundation/deployment-addresses#token) উল্লেখ করা আছে।
+
+### সোর্স কোড কেন পাওয়া যাচ্ছে? {#why-source}
+
+সাধারণত আমরা আশা করি যারা অন্যদের স্ক্যাম করার চেষ্টা করে তারা গোপনীয়তা বজায় রাখবে, এবং সত্যিই অনেক স্ক্যাম টোকেনের কোড পাওয়া যায় না (উদাহরণস্বরূপ, [এটি](https://optimistic.etherscan.io/token/0x15992f382d8c46d667b10dc8456dc36651af1452#code) এবং [এটি](https://optimistic.etherscan.io/token/0x026b623eb4aada7de37ef25256854f9235207178#code))।
+
+তবে, বৈধ টোকেনগুলো সাধারণত তাদের সোর্স কোড প্রকাশ করে, তাই নিজেদের বৈধ হিসেবে উপস্থাপন করতে স্ক্যাম টোকেনের নির্মাতারাও মাঝে মাঝে একই কাজ করে। [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code) হলো এমন একটি টোকেন যার সোর্স কোড পাওয়া যায়, যা এটিকে বুঝতে সহজ করে তোলে।
+
+যদিও কন্ট্রাক্ট ডিপ্লয়াররা সোর্স কোড প্রকাশ করবে কি না তা বেছে নিতে পারে, তবে তারা ভুল সোর্স কোড প্রকাশ করতে _পারে না_। ব্লক এক্সপ্লোরার স্বাধীনভাবে প্রদত্ত সোর্স কোড কম্পাইল করে, এবং যদি এটি হুবহু একই বাইটকোড না পায়, তবে এটি সেই সোর্স কোডটি প্রত্যাখ্যান করে। [আপনি Etherscan সাইটে এই সম্পর্কে আরও পড়তে পারেন](https://etherscan.io/verifyContract)।
+
+## বৈধ ERC-20 টোকেনগুলোর সাথে তুলনা {#compare-legit-erc20}
+
+আমরা এই টোকেনটিকে বৈধ ERC-20 টোকেনগুলোর সাথে তুলনা করতে যাচ্ছি। বৈধ ERC-20 টোকেনগুলো সাধারণত কীভাবে লেখা হয় সে সম্পর্কে আপনার যদি ধারণা না থাকে, তবে [এই টিউটোরিয়ালটি দেখুন](/developers/tutorials/erc20-annotated-code/)।
+
+### প্রিভিলেজড এডড্রেসগুলোর জন্য কনস্ট্যান্ট {#constants-for-privileged-addresses}
+
+কন্ট্রাক্টগুলোর মাঝে মাঝে প্রিভিলেজড এডড্রেস প্রয়োজন হয়। দীর্ঘমেয়াদী ব্যবহারের জন্য ডিজাইন করা কন্ট্রাক্টগুলো কিছু প্রিভিলেজড এডড্রেসকে সেই এডড্রেসগুলো পরিবর্তন করার অনুমতি দেয়, উদাহরণস্বরূপ একটি নতুন মাল্টিসিগ কন্ট্রাক্ট ব্যবহার সক্ষম করতে। এটি করার বেশ কয়েকটি উপায় রয়েছে।
+
+[`HOP` টোকেন কন্ট্রাক্ট](https://etherscan.io/address/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc#code) [`Ownable`](https://docs.openzeppelin.com/contracts/2.x/access-control#ownership-and-ownable) প্যাটার্ন ব্যবহার করে। প্রিভিলেজড এডড্রেসটি স্টোরেজে `_owner` নামক একটি ফিল্ডে রাখা হয় (তৃতীয় ফাইল, `Ownable.sol` দেখুন)।
+
+```solidity
+abstract contract Ownable is Context {
+ address private _owner;
+ .
+ .
+ .
+}
+```
+
+[`ARB` টোকেন কন্ট্রাক্ট](https://etherscan.io/address/0xad0c361ef902a7d9851ca7dcc85535da2d3c6fc7#code)-এ সরাসরি কোনো প্রিভিলেজড এডড্রেস নেই। তবে, এর কোনো প্রয়োজনও নেই। এটি [এডড্রেস `0xb50721bcf8d664c30412cfbc6cf7a15145234ad1`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1#code)-এ একটি [`proxy`](https://docs.openzeppelin.com/contracts/5.x/api/proxy)-র পেছনে থাকে। সেই কন্ট্রাক্টটিতে একটি প্রিভিলেজড এডড্রেস রয়েছে (চতুর্থ ফাইল, `ERC1967Upgrade.sol` দেখুন) যা আপগ্রেডের জন্য ব্যবহার করা যেতে পারে।
+
+```solidity
+ /* *
+ * @dev EIP1967 অ্যাডমিন স্লটে একটি নতুন ঠিকানা সংরক্ষণ করে। */
+ function _setAdmin(address newAdmin) private {
+ require(newAdmin != address(0), "ERC1967: new admin is the zero address");
+ StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
+ }
+```
+
+এর বিপরীতে, `wARB` কন্ট্রাক্টে একটি হার্ড কোডেড `contract_owner` রয়েছে।
+
+```solidity
+contract WrappedArbitrum is Context, IERC20 {
+ .
+ .
+ .
+ address deployer = 0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1;
+ address public contract_owner = 0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33;
+ .
+ .
+ .
+}
+```
+
+[এই কন্ট্রাক্ট ওনার](https://etherscan.io/address/0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33) এমন কোনো কন্ট্রাক্ট নয় যা বিভিন্ন সময়ে বিভিন্ন একাউন্ট দ্বারা নিয়ন্ত্রিত হতে পারে, বরং এটি একটি [এক্সটার্নালি ওনড একাউন্ট](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs)। এর মানে হলো এটি সম্ভবত কোনো ব্যক্তির স্বল্পমেয়াদী ব্যবহারের জন্য ডিজাইন করা হয়েছে, এমন কোনো দীর্ঘমেয়াদী সমাধান হিসেবে নয় যা একটি মূল্যবান ERC-20 নিয়ন্ত্রণ করবে।
+
+এবং সত্যিই, আমরা যদি Etherscan-এ দেখি তবে দেখতে পাব যে স্ক্যামার এই কন্ট্রাক্টটি ১৯ মে, ২০২৩ তারিখে মাত্র ১২ ঘণ্টার জন্য ব্যবহার করেছিল ([প্রথম লেনদেন](https://etherscan.io/tx/0xf49136198c3f925fcb401870a669d43cecb537bde36eb8b41df77f06d5f6fbc2) থেকে [শেষ লেনদেন](https://etherscan.io/tx/0xdfd6e717157354e64bbd5d6adf16761e5a5b3f914b1948d3545d39633244d47b))।
+
+### ভুয়া `_transfer` ফাংশন {#the-fake-transfer-function}
+
+[একটি ইন্টারনাল `_transfer` ফাংশন](/developers/tutorials/erc20-annotated-code/#the-_transfer-function-_transfer) ব্যবহার করে প্রকৃত লেনদেন সম্পন্ন হওয়াটাই স্ট্যান্ডার্ড।
+
+`wARB`-এ এই ফাংশনটি প্রায় বৈধ বলেই মনে হয়:
+
+```solidity
+ function _transfer(address sender, address recipient, uint256 amount) internal virtual{
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
+
+ _beforeTokenTransfer(sender, recipient, amount);
+
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
+ _balances[recipient] = _balances[recipient].add(amount);
+ if (sender == contract_owner){
+ sender = deployer;
+ }
+ emit Transfer(sender, recipient, amount);
+ }
+```
+
+সন্দেহজনক অংশটি হলো:
+
+```solidity
+ if (sender == contract_owner){
+ sender = deployer;
+ }
+ emit Transfer(sender, recipient, amount);
+```
+
+যদি কন্ট্রাক্ট ওনার টোকেন পাঠায়, তবে `Transfer` ইভেন্ট কেন দেখায় যে সেগুলো `deployer` থেকে এসেছে?
+
+তবে, এর চেয়েও গুরুত্বপূর্ণ একটি বিষয় রয়েছে। এই `_transfer` ফাংশনটি কে কল করে? এটি বাইরে থেকে কল করা যায় না, এটি `internal` হিসেবে চিহ্নিত। এবং আমাদের কাছে থাকা কোডে `_transfer`-এর কোনো কল অন্তর্ভুক্ত নেই। স্পষ্টতই, এটি এখানে একটি ফাঁদ হিসেবে রয়েছে।
+
+```solidity
+ function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
+ _f_(_msgSender(), recipient, amount);
+ return true;
+ }
+
+ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
+ _f_(sender, recipient, amount);
+ _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
+ return true;
+ }
+```
+
+যখন আমরা টোকেন ট্রান্সফার করার জন্য কল করা ফাংশনগুলো, `transfer` এবং `transferFrom` দেখি, তখন আমরা দেখতে পাই যে তারা সম্পূর্ণ ভিন্ন একটি ফাংশন, `_f_`-কে কল করে।
+
+### আসল `_f_` ফাংশন {#the-real-f-function}
+
+```solidity
+ function _f_(address sender, address recipient, uint256 amount) internal _mod_(sender,recipient,amount) virtual {
+ require(sender != address(0), "ERC20: transfer from the zero address");
+ require(recipient != address(0), "ERC20: transfer to the zero address");
+
+ _beforeTokenTransfer(sender, recipient, amount);
+
+ _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
+ _balances[recipient] = _balances[recipient].add(amount);
+ if (sender == contract_owner){
+
+ sender = deployer;
+ }
+ emit Transfer(sender, recipient, amount);
+ }
+```
+
+এই ফাংশনে দুটি সম্ভাব্য রেড ফ্ল্যাগ বা সতর্ক সংকেত রয়েছে।
+
+- [ফাংশন মডিফায়ার](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `_mod_`-এর ব্যবহার। তবে, যখন আমরা সোর্স কোডটি দেখি তখন বুঝতে পারি যে `_mod_` আসলে ক্ষতিকারক নয়।
+
+ ```solidity
+ modifier _mod_(address sender, address recipient, uint256 amount){
+ _;
+ }
+ ```
+
+- একই সমস্যা যা আমরা `_transfer`-এ দেখেছি, তা হলো যখন `contract_owner` টোকেন পাঠায় তখন মনে হয় সেগুলো `deployer` থেকে এসেছে।
+
+### ভুয়া ইভেন্ট ফাংশন `dropNewTokens` {#the-fake-events-function-dropNewTokens}
+
+এখন আমরা এমন কিছুতে আসি যা দেখতে একটি আসল স্ক্যামের মতো। পড়ার সুবিধার জন্য আমি ফাংশনটি কিছুটা এডিট করেছি, তবে এটি কার্যকারিতার দিক থেকে একই।
+
+```solidity
+function dropNewTokens(address uPool,
+ address[] memory eReceiver,
+ uint256[] memory eAmounts) public auth()
+```
+
+এই ফাংশনে `auth()` মডিফায়ার রয়েছে, যার মানে এটি শুধুমাত্র কন্ট্রাক্ট ওনার দ্বারা কল করা যেতে পারে।
+
+```solidity
+modifier auth() {
+ require(msg.sender == contract_owner, "Not allowed to interact");
+ _;
+}
+```
+
+এই বিধিনিষেধটি পুরোপুরি যৌক্তিক, কারণ আমরা চাইব না যে কোনো র্যান্ডম একাউন্ট টোকেন বিতরণ করুক। তবে, ফাংশনের বাকি অংশটি সন্দেহজনক।
+
+```solidity
+{
+ for (uint256 i = 0; i < eReceiver.length; i++) {
+ emit Transfer(uPool, eReceiver[i], eAmounts[i]);
+ }
+}
+```
+
+একটি পুল একাউন্ট থেকে রিসিভারদের একটি অ্যারেতে অ্যামাউন্টের একটি অ্যারে ট্রান্সফার করার ফাংশনটি পুরোপুরি যৌক্তিক। এমন অনেক ব্যবহার রয়েছে যেখানে আপনি একটি একক উৎস থেকে একাধিক গন্তব্যে টোকেন বিতরণ করতে চাইবেন, যেমন পেরোল, এয়ারড্রপ ইত্যাদি। একাধিক লেনদেন ইস্যু করার পরিবর্তে, বা এমনকি একই লেনদেনের অংশ হিসেবে একটি ভিন্ন কন্ট্রাক্ট থেকে ERC-20-কে একাধিকবার কল করার চেয়ে একটি একক লেনদেনে এটি করা (গ্যাসের দিক থেকে) সস্তা।
+
+তবে, `dropNewTokens` তা করে না। এটি [`Transfer` ইভেন্ট](https://eips.ethereum.org/EIPS/eip-20#transfer-1) নির্গত করে, কিন্তু বাস্তবে কোনো টোকেন ট্রান্সফার করে না। অফচেইন অ্যাপ্লিকেশনগুলোকে এমন একটি ট্রান্সফারের কথা বলে বিভ্রান্ত করার কোনো বৈধ কারণ নেই যা বাস্তবে ঘটেইনি।
+
+### বার্নিং `Approve` ফাংশন {#the-burning-approve-function}
+
+অ্যালাউন্সের জন্য ERC-20 কন্ট্রাক্টগুলোতে [একটি `approve` ফাংশন](/developers/tutorials/erc20-annotated-code/#approve) থাকার কথা, এবং সত্যিই আমাদের স্ক্যাম টোকেনে এমন একটি ফাংশন রয়েছে, এবং এটি সঠিকও। তবে, যেহেতু Solidity C থেকে এসেছে তাই এটি কেস সেনসিটিভ। "Approve" এবং "approve" দুটি ভিন্ন স্ট্রিং।
+
+এছাড়া, এর কার্যকারিতা `approve`-এর সাথে সম্পর্কিত নয়।
+
+```solidity
+ function Approve(
+ address[] memory holders)
+```
+
+এই ফাংশনটি টোকেন হোল্ডারদের এডড্রেসের একটি অ্যারে দিয়ে কল করা হয়।
+
+```solidity
+ public approver() {
+```
+
+`approver()` মডিফায়ার নিশ্চিত করে যে শুধুমাত্র `contract_owner` এই ফাংশনটি কল করার অনুমতি পাবে (নিচে দেখুন)।
+
+```solidity
+ for (uint256 i = 0; i < holders.length; i++) {
+ uint256 amount = _balances[holders[i]];
+ _beforeTokenTransfer(holders[i], 0x0000000000000000000000000000000000000001, amount);
+ _balances[holders[i]] = _balances[holders[i]].sub(amount,
+ "ERC20: burn amount exceeds balance");
+ _balances[0x0000000000000000000000000000000000000001] =
+ _balances[0x0000000000000000000000000000000000000001].add(amount);
+ }
+ }
+
+```
+
+প্রতিটি হোল্ডার এডড্রেসের জন্য ফাংশনটি হোল্ডারের সম্পূর্ণ ব্যালেন্স `0x00...01` এডড্রেসে সরিয়ে নেয়, যা কার্যকরভাবে এটিকে বার্ন করে (স্ট্যান্ডার্ডে আসল `burn` মোট সাপ্লাইও পরিবর্তন করে এবং টোকেনগুলোকে `0x00...00`-এ ট্রান্সফার করে)। এর মানে হলো `contract_owner` যেকোনো ব্যবহারকারীর সম্পদ সরিয়ে ফেলতে পারে। এটি এমন কোনো ফিচার বলে মনে হয় না যা আপনি একটি গভর্নেন্স টোকেনে চাইবেন।
+
+### কোড কোয়ালিটি সমস্যা {#code-quality-issues}
+
+এই কোড কোয়ালিটি সমস্যাগুলো _প্রমাণ_ করে না যে এই কোডটি একটি স্ক্যাম, তবে এগুলো এটিকে সন্দেহজনক করে তোলে। Arbitrum-এর মতো সুসংগঠিত কোম্পানিগুলো সাধারণত এত খারাপ কোড রিলিজ করে না।
+
+#### `mount` ফাংশন {#the-mount-function}
+
+যদিও এটি [স্ট্যান্ডার্ডে](https://eips.ethereum.org/EIPS/eip-20) নির্দিষ্ট করা নেই, তবে সাধারণভাবে বলতে গেলে যে ফাংশনটি নতুন টোকেন তৈরি করে তাকে [`mint`](/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn) বলা হয়।
+
+আমরা যদি `wARB` কনস্ট্রাক্টরে দেখি, তবে দেখতে পাব যে কোনো কারণে মিন্ট ফাংশনটির নাম পরিবর্তন করে `mount` রাখা হয়েছে, এবং দক্ষতার জন্য সম্পূর্ণ পরিমাণের জন্য একবার কল করার পরিবর্তে প্রাথমিক সাপ্লাইয়ের এক-পঞ্চমাংশ দিয়ে পাঁচবার কল করা হয়েছে।
+
+```solidity
+ constructor () public {
+
+ _name = "Wrapped Arbitrum";
+ _symbol = "wARB";
+ _decimals = 18;
+ uint256 initialSupply = 1000000000000;
+
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ mount(deployer, initialSupply*(10**18)/5);
+ }
+```
+
+`mount` ফাংশনটিও সন্দেহজনক।
+
+```solidity
+ function mount(address account, uint256 amount) public {
+ require(msg.sender == contract_owner, "ERC20: mint to the zero address");
+```
+
+`require`-এর দিকে তাকালে আমরা দেখতে পাই যে শুধুমাত্র কন্ট্রাক্ট ওনার মিন্ট করার অনুমতি পায়। এটি বৈধ। তবে এরর মেসেজটি হওয়া উচিত _only owner is allowed to mint_ বা এই জাতীয় কিছু। এর পরিবর্তে, এটি হলো অপ্রাসঙ্গিক _ERC20: mint to the zero address_। জিরো এডড্রেসে মিন্ট করার সঠিক টেস্ট হলো `require(account != address(0), "")`, যা কন্ট্রাক্টটি চেক করার কোনো প্রয়োজনই মনে করে না।
+
+```solidity
+ _totalSupply = _totalSupply.add(amount);
+ _balances[contract_owner] = _balances[contract_owner].add(amount);
+ emit Transfer(address(0), account, amount);
+ }
+```
+
+মিন্টিংয়ের সাথে সরাসরি সম্পর্কিত আরও দুটি সন্দেহজনক বিষয় রয়েছে:
+
+- একটি `account` প্যারামিটার রয়েছে, যা সম্ভবত সেই একাউন্ট হওয়া উচিত যা মিন্ট করা পরিমাণ গ্রহণ করবে। কিন্তু যে ব্যালেন্সটি বৃদ্ধি পায় তা আসলে `contract_owner`-এর।
+
+- যদিও বৃদ্ধি পাওয়া ব্যালেন্সটি `contract_owner`-এর, নির্গত ইভেন্টটি `account`-এ একটি ট্রান্সফার দেখায়।
+
+### কেন `auth` এবং `approver` উভয়ই? কেন এমন `mod` যা কিছুই করে না? {#why-both-autho-and-approver-why-the-mod-that-does-nothing}
+
+এই কন্ট্রাক্টে তিনটি মডিফায়ার রয়েছে: `_mod_`, `auth`, এবং `approver`।
+
+```solidity
+ modifier _mod_(address sender, address recipient, uint256 amount){
+ _;
+ }
+```
+
+`_mod_` তিনটি প্যারামিটার নেয় এবং সেগুলো দিয়ে কিছুই করে না। এটি কেন রাখা হয়েছে?
+
+```solidity
+ modifier auth() {
+ require(msg.sender == contract_owner, "Not allowed to interact");
+ _;
+ }
+
+ modifier approver() {
+ require(msg.sender == contract_owner, "Not allowed to interact");
+ _;
+ }
+```
+
+`auth` এবং `approver` বেশি যৌক্তিক, কারণ তারা চেক করে যে কন্ট্রাক্টটি `contract_owner` দ্বারা কল করা হয়েছিল কি না। আমরা আশা করব যে কিছু প্রিভিলেজড কাজ, যেমন মিন্টিং, সেই একাউন্টের মধ্যে সীমাবদ্ধ থাকবে। তবে, _হুবহু একই কাজ_ করে এমন দুটি আলাদা ফাংশন থাকার মানে কী?
+
+## আমরা স্বয়ংক্রিয়ভাবে কী শনাক্ত করতে পারি? {#what-can-we-detect-automatically}
+
+Etherscan-এর দিকে তাকিয়ে আমরা দেখতে পারি যে `wARB` একটি স্ক্যাম টোকেন। তবে, এটি একটি সেন্ট্রালাইজড সমাধান। তাত্ত্বিকভাবে, Etherscan-কে ধ্বংস বা হ্যাক করা যেতে পারে। একটি টোকেন বৈধ কি না তা স্বাধীনভাবে বের করতে পারাটাই ভালো।
+
+কিছু কৌশল রয়েছে যা ব্যবহার করে আমরা শনাক্ত করতে পারি যে একটি ERC-20 টোকেন সন্দেহজনক (হয় একটি স্ক্যাম বা খুব খারাপভাবে লেখা), তাদের নির্গত ইভেন্টগুলোর দিকে তাকিয়ে।
+
+## সন্দেহজনক `Approval` ইভেন্ট {#suspicious-approval-events}
+
+[`Approval` ইভেন্টগুলো](https://eips.ethereum.org/EIPS/eip-20#approval) শুধুমাত্র একটি সরাসরি রিকোয়েস্টের মাধ্যমেই ঘটা উচিত ([`Transfer` ইভেন্টগুলোর](https://eips.ethereum.org/EIPS/eip-20#transfer-1) বিপরীতে যা একটি অ্যালাউন্সের ফলে ঘটতে পারে)। এই সমস্যার বিস্তারিত ব্যাখ্যা এবং কেন রিকোয়েস্টগুলো কোনো কন্ট্রাক্টের মাধ্যমে মধ্যস্থতা করার পরিবর্তে সরাসরি হওয়া প্রয়োজন তা জানতে [Solidity ডক্স দেখুন](https://docs.soliditylang.org/en/v0.8.20/security-considerations.html#tx-origin)।
+
+এর মানে হলো যে `Approval` ইভেন্টগুলো একটি [এক্সটার্নালি ওনড একাউন্ট](/developers/docs/accounts/#types-of-account) থেকে খরচ করার অনুমোদন দেয়, সেগুলোকে এমন লেনদেন থেকে আসতে হবে যা সেই একাউন্ট থেকে উৎপন্ন হয় এবং যার গন্তব্য হলো ERC-20 কন্ট্রাক্ট। একটি এক্সটার্নালি ওনড একাউন্ট থেকে অন্য যেকোনো ধরনের অনুমোদন সন্দেহজনক।
+
+এখানে [এমন একটি প্রোগ্রাম রয়েছে যা এই ধরনের ইভেন্ট শনাক্ত করে](https://github.com/qbzzt/20230915-scam-token-detection), যা [viem](https://viem.sh/) এবং [TypeScript](https://www.typescriptlang.org/docs/) ব্যবহার করে, যা টাইপ সেফটিসহ একটি JavaScript ভ্যারিয়েন্ট। এটি রান করতে:
+
+1. `.env.example`-কে `.env`-এ কপি করুন।
+2. একটি Ethereum মেইননেট নোডের URL প্রদান করতে `.env` এডিট করুন।
+3. প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করতে `pnpm install` রান করুন।
+4. সন্দেহজনক অনুমোদনগুলো খুঁজতে `pnpm susApproval` রান করুন।
+
+নিচে লাইন বাই লাইন ব্যাখ্যা দেওয়া হলো:
+
+```typescript
+import {
+ Address,
+ TransactionReceipt,
+ createPublicClient,
+ http,
+ parseAbiItem,
+} from "viem"
+import { mainnet } from "viem/chains"
+```
+
+`viem` থেকে টাইপ ডেফিনিশন, ফাংশন এবং চেইন ডেফিনিশন ইমপোর্ট করুন।
+
+```typescript
+import { config } from "dotenv"
+config()
+```
+
+URL পেতে `.env` পড়ুন।
+
+```typescript
+const client = createPublicClient({
+ chain: mainnet,
+ transport: http(process.env.URL),
+})
+```
+
+একটি Viem ক্লায়েন্ট তৈরি করুন। আমাদের শুধুমাত্র ব্লকচেইন থেকে পড়তে হবে, তাই এই ক্লায়েন্টের কোনো প্রাইভেট কি-এর প্রয়োজন নেই।
+
+```typescript
+const testedAddress = "0xb047c8032b99841713b8e3872f06cf32beb27b82"
+const fromBlock = 16859812n
+const toBlock = 16873372n
+```
+
+সন্দেহজনক ERC-20 কন্ট্রাক্টের এডড্রেস এবং যে ব্লকগুলোর মধ্যে আমরা ইভেন্টগুলো খুঁজব। নোড প্রোভাইডাররা সাধারণত ইভেন্ট পড়ার ক্ষেত্রে আমাদের সক্ষমতা সীমিত করে কারণ ব্যান্ডউইথ ব্যয়বহুল হতে পারে। সৌভাগ্যবশত `wARB` আঠারো ঘণ্টার জন্য ব্যবহৃত হয়নি, তাই আমরা সমস্ত ইভেন্ট খুঁজতে পারি (মোট মাত্র ১৩টি ছিল)।
+
+```typescript
+const approvalEvents = await client.getLogs({
+ address: testedAddress,
+ fromBlock,
+ toBlock,
+ event: parseAbiItem(
+ "event Approval(address indexed _owner, address indexed _spender, uint256 _value)"
+ ),
+})
+```
+
+এটি হলো Viem-এর কাছে ইভেন্টের তথ্য চাওয়ার উপায়। যখন আমরা এটিকে ফিল্ডের নামসহ সঠিক ইভেন্ট সিগনেচার প্রদান করি, তখন এটি আমাদের জন্য ইভেন্টটি পার্স করে।
+
+```typescript
+const isContract = async (addr: Address): boolean =>
+ await client.getBytecode({ address: addr })
+```
+
+আমাদের এ্যালগরিদম শুধুমাত্র এক্সটার্নালি ওনড একাউন্টের ক্ষেত্রে প্রযোজ্য। যদি `client.getBytecode` দ্বারা কোনো বাইটকোড রিটার্ন করা হয় তবে এর মানে হলো এটি একটি কন্ট্রাক্ট এবং আমাদের এটি এড়িয়ে যাওয়া উচিত।
+
+আপনি যদি আগে TypeScript ব্যবহার না করে থাকেন, তবে ফাংশন ডেফিনিশনটি কিছুটা অদ্ভুত লাগতে পারে। আমরা শুধু এটিকে বলি না যে প্রথম (এবং একমাত্র) প্যারামিটারটিকে `addr` বলা হয়, বরং এটিও বলি যে এটি `Address` টাইপের। একইভাবে, `: boolean` অংশটি TypeScript-কে বলে যে ফাংশনটির রিটার্ন ভ্যালু একটি বুলিয়ান।
+
+```typescript
+const getEventTxn = async (ev: Event): TransactionReceipt =>
+ await client.getTransactionReceipt({ hash: ev.transactionHash })
+```
+
+এই ফাংশনটি একটি ইভেন্ট থেকে লেনদেনের রসিদ পায়। লেনদেনের গন্তব্য কী ছিল তা নিশ্চিত করতে আমাদের রসিদটি প্রয়োজন।
+
+```typescript
+const suspiciousApprovalEvent = async (ev : Event) : (Event | null) => {
+```
+
+এটি সবচেয়ে গুরুত্বপূর্ণ ফাংশন, যা আসলে সিদ্ধান্ত নেয় যে কোনো ইভেন্ট সন্দেহজনক কি না। রিটার্ন টাইপ, `(Event | null)`, TypeScript-কে বলে যে এই ফাংশনটি একটি `Event` বা `null` রিটার্ন করতে পারে। ইভেন্টটি সন্দেহজনক না হলে আমরা `null` রিটার্ন করি।
+
+```typescript
+const owner = ev.args._owner
+```
+
+Viem-এর কাছে ফিল্ডের নামগুলো রয়েছে, তাই এটি আমাদের জন্য ইভেন্টটি পার্স করেছে। `_owner` হলো খরচ করা টোকেনগুলোর মালিক।
+
+```typescript
+// কন্ট্রাক্ট দ্বারা অনুমোদনগুলো সন্দেহজনক নয়
+if (await isContract(owner)) return null
+```
+
+যদি মালিক একটি কন্ট্রাক্ট হয়, তবে ধরে নিন এই অনুমোদনটি সন্দেহজনক নয়। কোনো কন্ট্রাক্টের অনুমোদন সন্দেহজনক কি না তা চেক করতে আমাদের লেনদেনের সম্পূর্ণ এক্সিকিউশন ট্রেস করতে হবে যাতে দেখা যায় এটি কখনো ওনার কন্ট্রাক্টে পৌঁছেছে কি না, এবং সেই কন্ট্রাক্টটি সরাসরি ERC-20 কন্ট্রাক্টকে কল করেছে কি না। এটি আমরা যতটা করতে চাই তার চেয়ে অনেক বেশি রিসোর্স ব্যয়বহুল।
+
+```typescript
+const txn = await getEventTxn(ev)
+```
+
+যদি অনুমোদনটি একটি এক্সটার্নালি ওনড একাউন্ট থেকে আসে, তবে যে লেনদেনের কারণে এটি হয়েছে তা পান।
+
+```typescript
+// অনুমোদনটি সন্দেহজনক যদি এটি এমন কোনো EOA মালিকের কাছ থেকে আসে যা ট্রানজ্যাকশনের `from` নয়
+if (owner.toLowerCase() != txn.from.toLowerCase()) return ev
+```
+
+আমরা শুধু স্ট্রিংয়ের সমতা চেক করতে পারি না কারণ এডড্রেসগুলো হেক্সাডেসিমাল, তাই সেগুলোতে অক্ষর থাকে। মাঝে মাঝে, উদাহরণস্বরূপ `txn.from`-এ, সেই অক্ষরগুলো সব ছোট হাতের হয়। অন্যান্য ক্ষেত্রে, যেমন `ev.args._owner`-এ, এডড্রেসটি [এরর শনাক্তকরণের জন্য মিক্সড-কেসে](https://eips.ethereum.org/EIPS/eip-55) থাকে।
+
+কিন্তু যদি লেনদেনটি মালিকের কাছ থেকে না হয়, এবং সেই মালিক এক্সটার্নালি ওনড হয়, তবে আমাদের কাছে একটি সন্দেহজনক লেনদেন রয়েছে।
+
+```typescript
+// এটিও সন্দেহজনক যদি ট্রানজ্যাকশনের গন্তব্য সেই ERC-20 কন্ট্রাক্ট না হয় যা আমরা
+// তদন্ত করছি
+if (txn.to.toLowerCase() != testedAddress) return ev
+```
+
+একইভাবে, যদি লেনদেনের `to` এডড্রেস, অর্থাৎ কল করা প্রথম কন্ট্রাক্টটি, তদন্তাধীন ERC-20 কন্ট্রাক্ট না হয় তবে এটি সন্দেহজনক।
+
+```typescript
+ // যদি সন্দেহ করার কোনো কারণ না থাকে, তবে null রিটার্ন করুন।
+ return null
+}
+```
+
+যদি কোনো শর্তই সত্য না হয় তবে `Approval` ইভেন্টটি সন্দেহজনক নয়।
+
+```typescript
+const testPromises = approvalEvents.map((ev) => suspiciousApprovalEvent(ev))
+const testResults = (await Promise.all(testPromises)).filter((x) => x != null)
+
+console.log(testResults)
+```
+
+[একটি `async` ফাংশন](https://www.w3schools.com/js/js_async.asp) একটি `Promise` অবজেক্ট রিটার্ন করে। সাধারণ সিনট্যাক্স, `await x()`-এর মাধ্যমে, আমরা প্রসেসিং চালিয়ে যাওয়ার আগে সেই `Promise` পূরণ হওয়ার জন্য অপেক্ষা করি। এটি প্রোগ্রাম করা এবং অনুসরণ করা সহজ, তবে এটি অদক্ষও। যখন আমরা কোনো নির্দিষ্ট ইভেন্টের জন্য `Promise` পূরণ হওয়ার অপেক্ষায় থাকি, তখন আমরা ইতিমধ্যেই পরবর্তী ইভেন্টে কাজ শুরু করতে পারি।
+
+এখানে আমরা `Promise` অবজেক্টের একটি অ্যারে তৈরি করতে [`map`](https://www.w3schools.com/jsref/jsref_map.asp) ব্যবহার করি। তারপর আমরা সেই সমস্ত প্রমিজগুলো সমাধান হওয়ার জন্য অপেক্ষা করতে [`Promise.all`](https://www.javascripttutorial.net/es6/javascript-promise-all/) ব্যবহার করি। এরপর আমরা সন্দেহজনক নয় এমন ইভেন্টগুলো সরাতে সেই ফলাফলগুলোকে [`filter`](https://www.w3schools.com/jsref/jsref_filter.asp) করি।
+
+### সন্দেহজনক `Transfer` ইভেন্ট {#suspicious-transfer-events}
+
+স্ক্যাম টোকেন শনাক্ত করার আরেকটি সম্ভাব্য উপায় হলো তাদের কোনো সন্দেহজনক ট্রান্সফার আছে কি না তা দেখা। উদাহরণস্বরূপ, এমন একাউন্ট থেকে ট্রান্সফার করা যাদের কাছে ততগুলো টোকেন নেই। আপনি দেখতে পারেন [কীভাবে এই টেস্টটি প্রয়োগ করতে হয়](https://github.com/qbzzt/20230915-scam-token-detection/blob/main/susTransfer.ts), তবে `wARB`-এ এই সমস্যা নেই।
+
+## উপসংহার {#conclusion}
+
+ERC-20 স্ক্যামগুলোর স্বয়ংক্রিয় শনাক্তকরণ [ফলস নেগেটিভ](https://en.wikipedia.org/wiki/False_positives_and_false_negatives#False_negative_error)-এর শিকার হয়, কারণ একটি স্ক্যাম সম্পূর্ণ স্বাভাবিক ERC-20 টোকেন কন্ট্রাক্ট ব্যবহার করতে পারে যা বাস্তব কোনো কিছুর প্রতিনিধিত্ব করে না। তাই আপনার সর্বদা _একটি বিশ্বস্ত উৎস থেকে টোকেন এডড্রেস পাওয়ার_ চেষ্টা করা উচিত।
+
+স্বয়ংক্রিয় শনাক্তকরণ কিছু ক্ষেত্রে সাহায্য করতে পারে, যেমন DeFi-এর ক্ষেত্রে, যেখানে অনেক টোকেন থাকে এবং সেগুলোকে স্বয়ংক্রিয়ভাবে পরিচালনা করতে হয়। তবে বরাবরের মতোই [ক্রেতা সাবধান (caveat emptor)](https://www.investopedia.com/terms/c/caveatemptor.asp), নিজের গবেষণা নিজে করুন এবং আপনার ব্যবহারকারীদেরও একই কাজ করতে উৎসাহিত করুন।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/secret-state/index.md b/public/content/translations/bn/developers/tutorials/secret-state/index.md
new file mode 100644
index 00000000000..4955d4689eb
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/secret-state/index.md
@@ -0,0 +1,732 @@
+---
+title: একটি গোপন স্টেটের জন্য জিরো-নলেজ ব্যবহার করা
+description: অনচেইন গেমগুলো সীমাবদ্ধ কারণ তারা কোনো গোপন তথ্য রাখতে পারে না। এই টিউটোরিয়ালটি পড়ার পর, একজন পাঠক জিরো-নলেজ প্রুফ এবং সার্ভার কম্পোনেন্টগুলোকে একত্রিত করে একটি গোপন স্টেট, অফচেইন, কম্পোনেন্ট সহ যাচাইযোগ্য গেম তৈরি করতে সক্ষম হবেন। একটি মাইনসুইপার গেম তৈরি করে এই কৌশলটি প্রদর্শন করা হবে।
+author: ওরি পোমেরান্টজ
+tags: ["সার্ভার", "অফচেইন", "কেন্দ্রীভূত", "জিরো-নলেজ", "Zokrates", "MUD", "গোপনীয়তা"]
+skill: advanced
+breadcrumb: ZK গোপন স্টেট
+lang: bn
+published: 2025-03-15
+---
+
+_ব্লকচেইনে কোনো গোপনীয়তা নেই_। ব্লকচেইনে পোস্ট করা সবকিছু সবার পড়ার জন্য উন্মুক্ত। এটি প্রয়োজনীয়, কারণ ব্লকচেইন এমন একটি ব্যবস্থার ওপর ভিত্তি করে তৈরি যেখানে যে কেউ এটি যাচাই করতে পারে। তবে, গেমগুলো প্রায়ই গোপন স্টেটের ওপর নির্ভর করে। উদাহরণস্বরূপ, [মাইনসুইপার]() গেমটির কোনো অর্থই থাকে না যদি আপনি শুধু একটি ব্লক এক্সপ্লোরার-এ গিয়ে ম্যাপটি দেখতে পান।
+
+সবচেয়ে সহজ সমাধান হলো গোপন স্টেট ধরে রাখার জন্য একটি [সার্ভার কম্পোনেন্ট](/developers/tutorials/server-components/) ব্যবহার করা। তবে, আমরা ব্লকচেইন ব্যবহার করি গেম ডেভেলপারের প্রতারণা রোধ করার জন্য। আমাদের সার্ভার কম্পোনেন্টের সততা নিশ্চিত করতে হবে। সার্ভার স্টেটের একটি হ্যাস প্রদান করতে পারে এবং [জিরো-নলেজ প্রুফ](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) ব্যবহার করে প্রমাণ করতে পারে যে একটি চালের ফলাফল গণনা করতে ব্যবহৃত স্টেটটি সঠিক।
+
+এই নিবন্ধটি পড়ার পর আপনি জানতে পারবেন কীভাবে এই ধরনের গোপন স্টেট ধারণকারী সার্ভার, স্টেট দেখানোর জন্য একটি ক্লায়েন্ট এবং এই দুটির মধ্যে যোগাযোগের জন্য একটি অনচেইন কম্পোনেন্ট তৈরি করতে হয়। আমরা যে প্রধান টুলগুলো ব্যবহার করব তা হলো:
+
+| টুল | উদ্দেশ্য | যে সংস্করণে যাচাই করা হয়েছে |
+| --- | --- | ---: |
+| [Zokrates](https://zokrates.github.io/) | জিরো-নলেজ প্রুফ এবং তাদের যাচাইকরণ | 1.1.9 |
+| [Typescript](https://www.typescriptlang.org/) | সার্ভার এবং ক্লায়েন্ট উভয়ের জন্য প্রোগ্রামিং ভাষা | 5.4.2 |
+| [Node](https://nodejs.org/en) | সার্ভার চালানো | 20.18.2 |
+| [Viem](https://viem.sh/) | ব্লকচেইনের সাথে যোগাযোগ | 2.9.20 |
+| [MUD](https://mud.dev/) | অনচেইন ডাটা ব্যবস্থাপনা | 2.0.12 |
+| [React](https://react.dev/) | ক্লায়েন্ট ইউজার ইন্টারফেস | 18.2.0 |
+| [Vite](https://vitejs.dev/) | ক্লায়েন্ট কোড সার্ভ করা | 4.2.1 |
+
+## মাইনসুইপার উদাহরণ {#minesweeper}
+
+[মাইনসুইপার]() হলো এমন একটি গেম যেখানে মাইনফিল্ড সহ একটি গোপন ম্যাপ থাকে। খেলোয়াড় একটি নির্দিষ্ট স্থানে খনন করার সিদ্ধান্ত নেয়। যদি সেই স্থানে একটি মাইন থাকে, তবে গেম ওভার। অন্যথায়, খেলোয়াড় সেই স্থানের চারপাশের আটটি স্কোয়ারে থাকা মাইনের সংখ্যা জানতে পারে।
+
+এই অ্যাপ্লিকেশনটি [MUD](https://mud.dev/) ব্যবহার করে লেখা হয়েছে, এটি এমন একটি ফ্রেমওয়ার্ক যা আমাদের একটি [কি-ভ্যালু ডাটাবেস](https://aws.amazon.com/nosql/key-value/) ব্যবহার করে অনচেইন ডাটা সংরক্ষণ করতে এবং অফচেইন কম্পোনেন্টগুলোর সাথে সেই ডাটা স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ করতে দেয়। সিঙ্ক্রোনাইজেশন ছাড়াও, MUD এক্সেস কন্ট্রোল প্রদান করা সহজ করে তোলে এবং অন্যান্য ব্যবহারকারীদের পারমিশনলেস ভাবে আমাদের অ্যাপ্লিকেশন [সম্প্রসারণ](https://mud.dev/guides/extending-a-world) করতে দেয়।
+
+### মাইনসুইপার উদাহরণটি চালানো {#running-minesweeper-example}
+
+মাইনসুইপার উদাহরণটি চালাতে:
+
+1. নিশ্চিত করুন যে আপনার [পূর্বশর্তগুলো ইনস্টল করা আছে](https://mud.dev/quickstart#prerequisites): [Node](https://mud.dev/quickstart#prerequisites), [Foundry](https://book.getfoundry.sh/getting-started/installation), [`git`](https://git-scm.com/downloads), [`pnpm`](https://git-scm.com/downloads), এবং [`mprocs`](https://github.com/pvolok/mprocs)।
+
+2. রিপোজিটরিটি ক্লোন করুন।
+
+ ```sh copy
+ git clone https://github.com/qbzzt/20240901-secret-state.git
+ ```
+
+3. প্যাকেজগুলো ইনস্টল করুন।
+
+ ```sh copy
+ cd 20240901-secret-state/
+ pnpm install
+ npm install -g mprocs
+ ```
+
+ যদি `pnpm install` এর অংশ হিসেবে Foundry ইনস্টল করা হয়ে থাকে, তবে আপনাকে কমান্ড-লাইন শেলটি রিস্টার্ট করতে হবে।
+
+4. কন্ট্রাক্টগুলো কম্পাইল করুন
+
+ ```sh copy
+ cd packages/contracts
+ forge build
+ cd ../..
+ ```
+
+
+5. প্রোগ্রামটি শুরু করুন (একটি [anvil](https://book.getfoundry.sh/anvil/) ব্লকচেইন সহ) এবং অপেক্ষা করুন।
+
+ ```sh copy
+ mprocs
+ ```
+
+ মনে রাখবেন যে স্টার্টআপ হতে অনেক সময় লাগে। অগ্রগতি দেখতে, প্রথমে ডাউন অ্যারো ব্যবহার করে _contracts_ ট্যাবে স্ক্রোল করুন যাতে MUD কন্ট্রাক্টগুলো ডিপ্লয় হতে দেখতে পান। যখন আপনি _Waiting for file changes…_ মেসেজটি পাবেন, তখন কন্ট্রাক্টগুলো ডিপ্লয় হয়ে গেছে এবং পরবর্তী অগ্রগতি _server_ ট্যাবে ঘটবে। সেখানে, আপনি _Verifier address: 0x...._ মেসেজটি পাওয়া পর্যন্ত অপেক্ষা করুন।
+
+ যদি এই ধাপটি সফল হয়, তবে আপনি `mprocs` স্ক্রিনটি দেখতে পাবেন, যার বাম দিকে বিভিন্ন প্রসেস এবং ডান দিকে বর্তমানে নির্বাচিত প্রসেসের কনসোল আউটপুট থাকবে।
+
+ 
+
+ যদি `mprocs` নিয়ে কোনো সমস্যা হয়, তবে আপনি চারটি প্রসেস ম্যানুয়ালি চালাতে পারেন, প্রতিটির জন্য আলাদা কমান্ড লাইন উইন্ডো ব্যবহার করে:
+
+ - **Anvil**
+
+ ```sh
+ cd packages/contracts
+ anvil --base-fee 0 --block-time 2
+ ```
+
+ - **Contracts**
+
+ ```sh
+ cd packages/contracts
+ pnpm mud dev-contracts --rpc http://127.0.0.1:8545
+ ```
+
+ - **Server**
+
+ ```sh
+ cd packages/server
+ pnpm start
+ ```
+
+ - **Client**
+
+ ```sh
+ cd packages/client
+ pnpm run dev
+ ```
+
+6. এখন আপনি [ক্লায়েন্ট](http://localhost:3000)-এ ব্রাউজ করতে পারেন, **New Game**-এ ক্লিক করুন এবং খেলা শুরু করুন।
+
+### টেবিলগুলো {#tables}
+
+আমাদের অনচেইন [বেশ কয়েকটি টেবিল](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts) প্রয়োজন।
+
+- `Configuration`: এই টেবিলটি একটি সিঙ্গলটন, এর কোনো কি নেই এবং একটি মাত্র রেকর্ড আছে। এটি গেম কনফিগারেশন তথ্য ধরে রাখতে ব্যবহৃত হয়:
+ - `height`: একটি মাইনফিল্ডের উচ্চতা
+ - `width`: একটি মাইনফিল্ডের প্রস্থ
+ - `numberOfBombs`: প্রতিটি মাইনফিল্ডে বোমার সংখ্যা
+- `VerifierAddress`: এই টেবিলটিও একটি সিঙ্গলটন। এটি কনফিগারেশনের একটি অংশ, ভ্যালিডেটর কন্ট্রাক্টের এডড্রেস (`verifier`) ধরে রাখতে ব্যবহৃত হয়। আমরা এই তথ্যটি `Configuration` টেবিলে রাখতে পারতাম, কিন্তু এটি একটি ভিন্ন কম্পোনেন্ট, সার্ভার দ্বারা সেট করা হয়, তাই এটি একটি আলাদা টেবিলে রাখা সহজ।
+
+- `PlayerGame`: কি হলো খেলোয়াড়ের এডড্রেস। ডাটা হলো:
+
+ - `gameId`: 32-বাইট ভ্যালু যা খেলোয়াড় যে ম্যাপে খেলছে তার হ্যাস (গেম আইডেন্টিফায়ার)।
+ - `win`: একটি বুলিয়ান যা নির্দেশ করে খেলোয়াড় গেমটি জিতেছে কিনা।
+ - `lose`: একটি বুলিয়ান যা নির্দেশ করে খেলোয়াড় গেমটি হেরেছে কিনা।
+ - `digNumber`: গেমে সফল খননের সংখ্যা।
+
+- `GamePlayer`: এই টেবিলটি রিভার্স ম্যাপিং ধরে রাখে, `gameId` থেকে খেলোয়াড়ের এডড্রেস পর্যন্ত।
+
+- `Map`: কি হলো তিনটি ভ্যালুর একটি টুপল:
+
+ - `gameId`: 32-বাইট ভ্যালু যা খেলোয়াড় যে ম্যাপে খেলছে তার হ্যাস (গেম আইডেন্টিফায়ার)।
+ - `x` স্থানাঙ্ক
+ - `y` স্থানাঙ্ক
+
+ ভ্যালুটি একটি একক সংখ্যা। যদি একটি বোমা শনাক্ত করা হয় তবে এটি 255। অন্যথায়, এটি সেই স্থানের চারপাশের বোমার সংখ্যা যোগ এক। আমরা শুধু বোমার সংখ্যা ব্যবহার করতে পারি না, কারণ ডিফল্টভাবে ইথিরিয়াম ভার্চুয়াল মেশিন-এর সমস্ত স্টোরেজ এবং MUD-এর সমস্ত সারির ভ্যালু শূন্য থাকে। আমাদের "খেলোয়াড় এখনও এখানে খনন করেনি" এবং "খেলোয়াড় এখানে খনন করেছে, এবং দেখেছে চারপাশে শূন্যটি বোমা আছে" এর মধ্যে পার্থক্য করতে হবে।
+
+এছাড়া, ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ অনচেইন কম্পোনেন্টের মাধ্যমে ঘটে। এটিও টেবিল ব্যবহার করে বাস্তবায়িত হয়।
+
+- `PendingGame`: একটি নতুন গেম শুরু করার জন্য আনসার্ভিসড রিকোয়েস্ট।
+- `PendingDig`: একটি নির্দিষ্ট গেমে একটি নির্দিষ্ট স্থানে খনন করার জন্য আনসার্ভিসড রিকোয়েস্ট। এটি একটি [অফচেইন টেবিল](https://mud.dev/store/tables#types-of-tables), যার মানে এটি ইথিরিয়াম ভার্চুয়াল মেশিন স্টোরেজে লেখা হয় না, এটি শুধুমাত্র ইভেন্ট ব্যবহার করে অফচেইন পড়া যায়।
+
+### এক্সিকিউশন এবং ডাটা ফ্লো {#execution-data-flows}
+
+এই ফ্লো-গুলো ক্লায়েন্ট, অনচেইন কম্পোনেন্ট এবং সার্ভারের মধ্যে এক্সিকিউশন সমন্বয় করে।
+
+#### ইনিশিয়ালাইজেশন {#initialization-flow}
+
+যখন আপনি `mprocs` চালান, তখন এই ধাপগুলো ঘটে:
+
+1. [`mprocs`](https://github.com/pvolok/mprocs) চারটি কম্পোনেন্ট চালায়:
+
+ - [Anvil](https://book.getfoundry.sh/anvil/), যা একটি লোকাল ব্লকচেইন চালায়
+ - [Contracts](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/contracts), যা MUD-এর জন্য কন্ট্রাক্টগুলো কম্পাইল (যদি প্রয়োজন হয়) এবং ডিপ্লয় করে
+ - [Client](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/client), যা ওয়েব ব্রাউজারগুলোতে UI এবং ক্লায়েন্ট কোড সার্ভ করার জন্য [Vite](https://vitejs.dev/) চালায়।
+ - [Server](https://github.com/qbzzt/20240901-secret-state/tree/main/packages/server), যা সার্ভারের কাজগুলো সম্পাদন করে
+
+2. `contracts` প্যাকেজটি MUD কন্ট্রাক্টগুলো ডিপ্লয় করে এবং তারপর [`PostDeploy.s.sol` স্ক্রিপ্টটি](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol) চালায়। এই স্ক্রিপ্টটি কনফিগারেশন সেট করে। গিটহাবের কোডটি [আটটি মাইন সহ একটি 10x5 মাইনফিল্ড](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/script/PostDeploy.s.sol#L23) নির্দিষ্ট করে।
+
+3. [সার্ভারটি](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts) [MUD সেট আপ করার](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L6) মাধ্যমে শুরু হয়। অন্যান্য বিষয়ের মধ্যে, এটি ডাটা সিঙ্ক্রোনাইজেশন সক্রিয় করে, যাতে প্রাসঙ্গিক টেবিলগুলোর একটি কপি সার্ভারের মেমোরিতে থাকে।
+
+4. সার্ভার একটি ফাংশন সাবস্ক্রাইব করে যা [যখন `Configuration` টেবিল পরিবর্তিত হয়](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L23) তখন এক্সিকিউট হবে। `PostDeploy.s.sol` এক্সিকিউট হওয়ার এবং টেবিলটি পরিবর্তন করার পর [এই ফাংশনটি](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L24-L168) কল করা হয়।
+
+5. যখন সার্ভার ইনিশিয়ালাইজেশন ফাংশনটি কনফিগারেশন পায়, তখন এটি [সার্ভারের জিরো-নলেজ অংশটি](#using-zokrates-from-typescript) ইনিশিয়ালাইজ করার জন্য [`zkFunctions` কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L34-L35)। কনফিগারেশন না পাওয়া পর্যন্ত এটি ঘটতে পারে না কারণ জিরো-নলেজ ফাংশনগুলোতে মাইনফিল্ডের প্রস্থ এবং উচ্চতা ধ্রুবক হিসেবে থাকতে হয়।
+
+6. সার্ভারের জিরো-নলেজ অংশটি ইনিশিয়ালাইজ হওয়ার পর, পরবর্তী ধাপ হলো [ব্লকচেইনে জিরো-নলেজ ভেরিফিকেশন কন্ট্রাক্ট ডিপ্লয় করা](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L42-L53) এবং MUD-এ ভেরিফাই এডড্রেস সেট করা।
+
+7. সবশেষে, আমরা আপডেটের জন্য সাবস্ক্রাইব করি যাতে আমরা দেখতে পারি কখন একজন খেলোয়াড় [একটি নতুন গেম শুরু করার](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71) বা [একটি বিদ্যমান গেমে খনন করার](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73-L108) রিকোয়েস্ট করে।
+
+#### নতুন গেম {#new-game-flow}
+
+যখন খেলোয়াড় একটি নতুন গেমের রিকোয়েস্ট করে তখন এটি ঘটে।
+
+1. যদি এই খেলোয়াড়ের জন্য কোনো গেম চলমান না থাকে, বা একটি থাকে কিন্তু তার gameId শূন্য হয়, তবে ক্লায়েন্ট একটি [নতুন গেম বোতাম](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175) প্রদর্শন করে। যখন ব্যবহারকারী এই বোতামটি চাপে, [React `newGame` ফাংশনটি চালায়](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L96)।
+
+2. [`newGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L43-L46) হলো একটি `System` কল। MUD-এ সমস্ত কল `World` কন্ট্রাক্টের মাধ্যমে রাউট করা হয়, এবং বেশিরভাগ ক্ষেত্রে আপনি `__` কল করেন। এই ক্ষেত্রে, কলটি হলো `app__newGame`-এ, যা MUD তারপর [`GameSystem`-এর `newGame`-এ](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L16-L22) রাউট করে।
+
+3. অনচেইন ফাংশনটি চেক করে যে খেলোয়াড়ের কোনো গেম চলমান নেই, এবং যদি না থাকে তবে [রিকোয়েস্টটি `PendingGame` টেবিলে যোগ করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L21)।
+
+4. সার্ভার `PendingGame`-এ পরিবর্তন শনাক্ত করে এবং [সাবস্ক্রাইব করা ফাংশনটি চালায়](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L55-L71)। এই ফাংশনটি [`newGame` কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L110-L114), যা আবার [`createGame` কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L116-L144)।
+
+5. `createGame` প্রথম যে কাজটি করে তা হলো [উপযুক্ত সংখ্যক মাইন সহ একটি র্যান্ডম ম্যাপ তৈরি করা](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L120-L135)। তারপর, এটি ফাঁকা বর্ডার সহ একটি ম্যাপ তৈরি করতে [`makeMapBorders` কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L147-L166), যা Zokrates-এর জন্য প্রয়োজনীয়। সবশেষে, `createGame` ম্যাপের হ্যাস পেতে [`calculateMapHash`](#calculateMapHash) কল করে, যা গেম আইডি হিসেবে ব্যবহৃত হয়।
+
+6. `newGame` ফাংশনটি নতুন গেমটিকে `gamesInProgress`-এ যোগ করে।
+
+7. সার্ভার শেষ যে কাজটি করে তা হলো [`app__newGameResponse` কল করা](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L38-L43), যা অনচেইন। এক্সেস কন্ট্রোল সক্ষম করতে এই ফাংশনটি একটি ভিন্ন `System`, [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol)-এ রয়েছে। এক্সেস কন্ট্রোল [MUD কনফিগারেশন ফাইলে](https://mud.dev/config), [`mud.config.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/mud.config.ts#L67-L72)-এ সংজ্ঞায়িত করা হয়েছে।
+
+ এক্সেস লিস্ট শুধুমাত্র একটি একক এডড্রেসকে `System` কল করার অনুমতি দেয়। এটি সার্ভার ফাংশনগুলোতে এক্সেস একটি একক এডড্রেসে সীমাবদ্ধ করে, যাতে কেউ সার্ভারের ছদ্মবেশ ধারণ করতে না পারে।
+
+8. অনচেইন কম্পোনেন্ট প্রাসঙ্গিক টেবিলগুলো আপডেট করে:
+
+ - `PlayerGame`-এ গেমটি তৈরি করে।
+ - `GamePlayer`-এ রিভার্স ম্যাপিং সেট করে।
+ - `PendingGame` থেকে রিকোয়েস্টটি সরিয়ে দেয়।
+
+9. সার্ভার `PendingGame`-এ পরিবর্তন শনাক্ত করে, কিন্তু কিছুই করে না কারণ [`wantsGame`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L58-L60) ফলস।
+
+10. ক্লায়েন্টে [`gameRecord`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L143-L148) খেলোয়াড়ের এডড্রেসের জন্য `PlayerGame` এন্ট্রিতে সেট করা হয়। যখন `PlayerGame` পরিবর্তিত হয়, তখন `gameRecord`-ও পরিবর্তিত হয়।
+
+11. যদি `gameRecord`-এ কোনো ভ্যালু থাকে, এবং গেমটি জেতা বা হারা না হয়, তবে ক্লায়েন্ট [ম্যাপটি প্রদর্শন করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190)।
+
+#### খনন {#dig-flow}
+
+1. খেলোয়াড় [ম্যাপ সেলের বোতামে ক্লিক করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L188), যা [`dig` ফাংশনটি কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/mud/createSystemCalls.ts#L33-L36)। এই ফাংশনটি [অনচেইন `dig` কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L24-L32)।
+
+2. অনচেইন কম্পোনেন্ট [বেশ কয়েকটি স্যানিটি চেক সম্পাদন করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L25-L30), এবং সফল হলে ডিগ রিকোয়েস্টটি [`PendingDig`-এ যোগ করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/GameSystem.sol#L31)।
+
+3. সার্ভার [`PendingDig`-এ পরিবর্তন শনাক্ত করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L73)। [যদি এটি বৈধ হয়](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L75-L84), তবে এটি ফলাফল এবং এটি বৈধ হওয়ার একটি প্রুফ উভয়ই তৈরি করতে [জিরো-নলেজ কোড কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L86-L95) (নিচে ব্যাখ্যা করা হয়েছে)।
+
+4. [সার্ভার](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L97-L107) অনচেইন [`digResponse` কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L45-L64)।
+
+5. `digResponse` দুটি কাজ করে। প্রথমত, এটি [জিরো নলেজ প্রুফ](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L47-L61) চেক করে। তারপর, যদি প্রুফটি সঠিক হয়, তবে এটি আসলে ফলাফলটি প্রসেস করতে [`processDigResult` কল করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L67-L86)।
+
+6. `processDigResult` চেক করে যে গেমটি [হারা](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L76-L78) বা [জেতা](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L83-L86) হয়েছে কিনা, এবং [অনচেইন ম্যাপ, `Map` আপডেট করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol#L80)।
+
+7. ক্লায়েন্ট স্বয়ংক্রিয়ভাবে আপডেটগুলো গ্রহণ করে এবং [খেলোয়াড়কে প্রদর্শিত ম্যাপটি আপডেট করে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/client/src/App.tsx#L175-L190), এবং যদি প্রযোজ্য হয় তবে খেলোয়াড়কে জানায় যে এটি জয় নাকি পরাজয়।
+
+## Zokrates ব্যবহার করা {#using-zokrates}
+
+উপরে ব্যাখ্যা করা ফ্লো-গুলোতে আমরা জিরো-নলেজ অংশগুলো এড়িয়ে গেছি, সেগুলোকে একটি ব্ল্যাক বক্স হিসেবে বিবেচনা করে। এখন চলুন এটি খুলে দেখি এবং দেখি কীভাবে সেই কোডটি লেখা হয়েছে।
+
+### ম্যাপ হ্যাসিং {#hashing-map}
+
+আমরা [Poseidon](https://www.poseidon-hash.info), যে Zokrates হ্যাস ফাংশনটি আমরা ব্যবহার করি তা বাস্তবায়ন করতে [এই জাভাস্ক্রিপ্ট কোডটি](https://github.com/ZK-Plus/ICBC24_Tutorial_Compute-Offchain-Verify-onchain/tree/solutions/exercise) ব্যবহার করতে পারি। তবে, যদিও এটি দ্রুততর হবে, এটি শুধুমাত্র Zokrates হ্যাস ফাংশন ব্যবহার করার চেয়ে বেশি জটিলও হবে। এটি একটি টিউটোরিয়াল, এবং তাই কোডটি সরলতার জন্য অপ্টিমাইজ করা হয়েছে, পারফরম্যান্সের জন্য নয়। অতএব, আমাদের দুটি ভিন্ন Zokrates প্রোগ্রাম প্রয়োজন, একটি শুধুমাত্র একটি ম্যাপের হ্যাস গণনা করার জন্য (`hash`) এবং অন্যটি ম্যাপের একটি স্থানে খননের ফলাফলের একটি জিরো-নলেজ প্রুফ তৈরি করার জন্য (`dig`)।
+
+### হ্যাস ফাংশন {#hash-function}
+
+এটি সেই ফাংশন যা একটি ম্যাপের হ্যাস গণনা করে। আমরা এই কোডটি লাইন বাই লাইন দেখব।
+
+```
+import "hashes/poseidon/poseidon.zok" as poseidon;
+import "utils/pack/bool/pack128.zok" as pack128;
+```
+
+এই দুটি লাইন [Zokrates স্ট্যান্ডার্ড লাইব্রেরি](https://zokrates.github.io/toolbox/stdlib.html) থেকে দুটি ফাংশন ইমপোর্ট করে। [প্রথম ফাংশনটি](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/hashes/poseidon/poseidon.zok) হলো একটি [Poseidon হ্যাস](https://www.poseidon-hash.info/)। এটি [`field` এলিমেন্টগুলোর](https://zokrates.github.io/language/types.html#field) একটি অ্যারে নেয় এবং একটি `field` রিটার্ন করে।
+
+Zokrates-এ ফিল্ড এলিমেন্ট সাধারণত 256 বিটের চেয়ে কম লম্বা হয়, তবে খুব বেশি নয়। কোডটি সহজ করার জন্য, আমরা ম্যাপটিকে 512 বিট পর্যন্ত সীমাবদ্ধ করি, এবং চারটি ফিল্ডের একটি অ্যারে হ্যাস করি, এবং প্রতিটি ফিল্ডে আমরা শুধুমাত্র 128 বিট ব্যবহার করি। [এই `pack128` ফাংশনটি](https://github.com/Zokrates/ZoKrates/blob/latest/zokrates_stdlib/stdlib/utils/pack/bool/pack128.zok) এই উদ্দেশ্যে 128 বিটের একটি অ্যারেকে একটি `field`-এ পরিবর্তন করে।
+
+```
+ def hashMap(bool[${width+2}][${height+2}] map) -> field {
+```
+
+এই লাইনটি একটি ফাংশন ডেফিনিশন শুরু করে। `hashMap` `map` নামক একটি একক প্যারামিটার পায়, যা একটি দ্বিমাত্রিক `bool`(ean) অ্যারে। ম্যাপের আকার হলো `width+2` বাই `height+2` যে কারণগুলো [নিচে ব্যাখ্যা করা হয়েছে](#why-map-border)।
+
+আমরা `${width+2}` এবং `${height+2}` ব্যবহার করতে পারি কারণ Zokrates প্রোগ্রামগুলো এই অ্যাপ্লিকেশনে [টেমপ্লেট স্ট্রিং](https://www.w3schools.com/js/js_string_templates.asp) হিসেবে সংরক্ষিত থাকে। `${` এবং `}` এর মধ্যবর্তী কোড জাভাস্ক্রিপ্ট দ্বারা মূল্যায়ন করা হয়, এবং এইভাবে প্রোগ্রামটি বিভিন্ন ম্যাপের আকারের জন্য ব্যবহার করা যেতে পারে। ম্যাপ প্যারামিটারের চারপাশে কোনো বোমা ছাড়াই একটি এক লোকেশন চওড়া বর্ডার রয়েছে, যে কারণে আমাদের প্রস্থ এবং উচ্চতায় দুই যোগ করতে হবে।
+
+রিটার্ন ভ্যালু হলো একটি `field` যা হ্যাস ধারণ করে।
+
+```
+ bool[512] mut map1d = [false; 512];
+```
+
+ম্যাপটি দ্বিমাত্রিক। তবে, `pack128` ফাংশনটি দ্বিমাত্রিক অ্যারেগুলোর সাথে কাজ করে না। তাই আমরা প্রথমে `map1d` ব্যবহার করে ম্যাপটিকে একটি 512-বাইট অ্যারেতে ফ্ল্যাটেন করি। ডিফল্টভাবে Zokrates ভেরিয়েবলগুলো ধ্রুবক, কিন্তু আমাদের একটি লুপে এই অ্যারেতে ভ্যালু অ্যাসাইন করতে হবে, তাই আমরা এটিকে [`mut`](https://zokrates.github.io/language/variables.html#mutability) হিসেবে সংজ্ঞায়িত করি।
+
+আমাদের অ্যারেটি ইনিশিয়ালাইজ করতে হবে কারণ Zokrates-এ `undefined` নেই। `[false; 512]` এক্সপ্রেশনটির অর্থ হলো [512টি `false` ভ্যালুর একটি অ্যারে](https://zokrates.github.io/language/types.html#declaration-and-initialization)।
+
+```
+ u32 mut counter = 0;
+```
+
+`map1d`-এ আমরা ইতিমধ্যে যে বিটগুলো পূরণ করেছি এবং যেগুলো করিনি তার মধ্যে পার্থক্য করার জন্য আমাদের একটি কাউন্টারও প্রয়োজন।
+
+```
+ for u32 x in 0..${width+2} {
+```
+
+এভাবেই আপনি Zokrates-এ একটি [`for` লুপ](https://zokrates.github.io/language/control_flow.html#for-loops) ডিক্লেয়ার করেন। একটি Zokrates `for` লুপের নির্দিষ্ট সীমা থাকতে হবে, কারণ যদিও এটি একটি লুপ বলে মনে হয়, কম্পাইলার আসলে এটিকে "আনরোল" করে। `${width+2}` এক্সপ্রেশনটি একটি কম্পাইল টাইম ধ্রুবক কারণ কম্পাইলারকে কল করার আগে টাইপস্ক্রিপ্ট কোড দ্বারা `width` সেট করা হয়।
+
+```
+ for u32 y in 0..${height+2} {
+ map1d[counter] = map[x][y];
+ counter = counter+1;
+ }
+ }
+```
+
+ম্যাপের প্রতিটি লোকেশনের জন্য, সেই ভ্যালুটি `map1d` অ্যারেতে রাখুন এবং কাউন্টারটি বৃদ্ধি করুন।
+
+```
+ field[4] hashMe = [
+ pack128(map1d[0..128]),
+ pack128(map1d[128..256]),
+ pack128(map1d[256..384]),
+ pack128(map1d[384..512])
+ ];
+```
+
+`map1d` থেকে চারটি `field` ভ্যালুর একটি অ্যারে তৈরি করতে `pack128`। Zokrates-এ `array[a..b]` মানে হলো অ্যারের সেই স্লাইস যা `a`-তে শুরু হয় এবং `b-1`-এ শেষ হয়।
+
+```
+ return poseidon(hashMe);
+}
+```
+
+এই অ্যারেকে একটি হ্যাসে রূপান্তর করতে `poseidon` ব্যবহার করুন।
+
+### হ্যাস প্রোগ্রাম {#hash-program}
+
+গেম আইডেন্টিফায়ার তৈরি করতে সার্ভারকে সরাসরি `hashMap` কল করতে হবে। তবে, Zokrates শুধুমাত্র শুরু করার জন্য একটি প্রোগ্রামে `main` ফাংশন কল করতে পারে, তাই আমরা একটি `main` সহ একটি প্রোগ্রাম তৈরি করি যা হ্যাস ফাংশনটিকে কল করে।
+
+```
+${hashFragment}
+
+def main(bool[${width+2}][${height+2}] map) -> field {
+ return hashMap(map);
+}
+```
+
+### ডিগ প্রোগ্রাম {#dig-program}
+
+এটি অ্যাপ্লিকেশনের জিরো-নলেজ অংশের হৃদয়, যেখানে আমরা প্রুফগুলো তৈরি করি যা খননের ফলাফল যাচাই করতে ব্যবহৃত হয়।
+
+```
+${hashFragment}
+
+// The number of mines in location (x,y)
+def map2mineCount(bool[${width+2}][${height+2}] map, u32 x, u32 y) -> u8 {
+ return if map[x+1][y+1] { 1 } else { 0 };
+}
+```
+
+#### ম্যাপ বর্ডার কেন {#why-map-border}
+
+জিরো-নলেজ প্রুফগুলো [অ্যারিথমেটিক সার্কিট](https://medium.com/web3studio/simple-explanations-of-arithmetic-circuits-and-zero-knowledge-proofs-806e59a79785) ব্যবহার করে, যার একটি `if` স্টেটমেন্টের কোনো সহজ সমতুল্য নেই। এর পরিবর্তে, তারা [কন্ডিশনাল অপারেটরের](https://en.wikipedia.org/wiki/Ternary_conditional_operator) সমতুল্য ব্যবহার করে। যদি `a` শূন্য বা এক হতে পারে, তবে আপনি `if a { b } else { c }`-কে `ab+(1-a)c` হিসেবে গণনা করতে পারেন।
+
+এই কারণে, একটি Zokrates `if` স্টেটমেন্ট সর্বদা উভয় শাখাকে মূল্যায়ন করে। উদাহরণস্বরূপ, যদি আপনার এই কোডটি থাকে:
+
+```
+bool[5] arr = [false; 5];
+u32 index=10;
+return if index>4 { 0 } else { arr[index] }
+```
+
+এটি এরর দেখাবে, কারণ এটিকে `arr[10]` গণনা করতে হবে, যদিও সেই ভ্যালুটি পরে শূন্য দ্বারা গুণ করা হবে।
+
+এই কারণেই আমাদের ম্যাপের চারপাশে একটি এক লোকেশন চওড়া বর্ডার প্রয়োজন। আমাদের একটি লোকেশনের চারপাশের মোট মাইনের সংখ্যা গণনা করতে হবে, এবং এর মানে হলো আমরা যেখানে খনন করছি তার এক সারি উপরে এবং নিচে, বামে এবং ডানে লোকেশনটি দেখতে হবে। যার মানে হলো Zokrates-কে প্রদান করা ম্যাপ অ্যারেতে সেই লোকেশনগুলোর অস্তিত্ব থাকতে হবে।
+
+```
+def main(private bool[${width+2}][${height+2}] map, u32 x, u32 y) -> (field, u8) {
+```
+
+ডিফল্টভাবে Zokrates প্রুফগুলো তাদের ইনপুটগুলো অন্তর্ভুক্ত করে। একটি স্পটের চারপাশে পাঁচটি মাইন আছে তা জেনে কোনো লাভ নেই যদি না আপনি আসলে জানেন যে স্পটটি কোনটি (এবং আপনি এটিকে শুধু আপনার রিকোয়েস্টের সাথে মেলাতে পারবেন না, কারণ তখন প্রুভার ভিন্ন ভ্যালু ব্যবহার করতে পারে এবং আপনাকে সে সম্পর্কে নাও বলতে পারে)। তবে, Zokrates-কে এটি প্রদান করার সময় আমাদের ম্যাপটিকে গোপন রাখতে হবে। সমাধান হলো একটি `private` প্যারামিটার ব্যবহার করা, যা প্রুফ দ্বারা প্রকাশ করা হয় _না_।
+
+এটি অপব্যবহারের আরেকটি পথ খুলে দেয়। প্রুভার সঠিক স্থানাঙ্কগুলো ব্যবহার করতে পারে, কিন্তু লোকেশনের চারপাশে এবং সম্ভবত লোকেশনেই যেকোনো সংখ্যক মাইন সহ একটি ম্যাপ তৈরি করতে পারে। এই অপব্যবহার রোধ করতে, আমরা জিরো নলেজ প্রুফে ম্যাপের হ্যাস অন্তর্ভুক্ত করি, যা হলো গেম আইডেন্টিফায়ার।
+
+```
+ return (hashMap(map),
+```
+
+এখানকার রিটার্ন ভ্যালুটি হলো একটি টুপল যা ম্যাপ হ্যাস অ্যারের পাশাপাশি খননের ফলাফল অন্তর্ভুক্ত করে।
+
+```
+ if map2mineCount(map, x, y) > 0 { 0xFF } else {
+```
+
+যদি লোকেশনেই একটি বোমা থাকে তবে আমরা 255-কে একটি বিশেষ ভ্যালু হিসেবে ব্যবহার করি।
+
+```
+ map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) +
+ map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) +
+ map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1)
+ }
+ );
+}
+```
+
+যদি খেলোয়াড় কোনো মাইনে আঘাত না করে থাকে, তবে লোকেশনের চারপাশের এলাকার জন্য মাইন কাউন্ট যোগ করুন এবং তা রিটার্ন করুন।
+
+### টাইপস্ক্রিপ্ট থেকে Zokrates ব্যবহার করা {#using-zokrates-from-typescript}
+
+Zokrates-এর একটি কমান্ড লাইন ইন্টারফেস রয়েছে, কিন্তু এই প্রোগ্রামে আমরা এটি [টাইপস্ক্রিপ্ট কোডে](https://zokrates.github.io/toolbox/zokrates_js.html) ব্যবহার করি।
+
+যে লাইব্রেরিতে Zokrates ডেফিনিশনগুলো রয়েছে তাকে [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) বলা হয়।
+
+```typescript
+import { initialize as zokratesInitialize } from "zokrates-js"
+```
+
+[Zokrates জাভাস্ক্রিপ্ট বাইন্ডিংগুলো](https://zokrates.github.io/toolbox/zokrates_js.html) ইমপোর্ট করুন। আমাদের শুধুমাত্র [`initialize`](https://zokrates.github.io/toolbox/zokrates_js.html#initialize) ফাংশনটি প্রয়োজন কারণ এটি একটি প্রমিস রিটার্ন করে যা সমস্ত Zokrates ডেফিনিশনে রিজলভ হয়।
+
+```typescript
+export const zkFunctions = async (width: number, height: number) : Promise => {
+```
+
+Zokrates-এর মতোই, আমরাও শুধুমাত্র একটি ফাংশন এক্সপোর্ট করি, যা [অ্যাসিনক্রোনাসও](https://www.w3schools.com/js/js_async.asp) বটে। যখন এটি শেষ পর্যন্ত রিটার্ন করে, তখন এটি বেশ কয়েকটি ফাংশন প্রদান করে যা আমরা নিচে দেখব।
+
+```typescript
+const zokrates = await zokratesInitialize()
+```
+
+Zokrates ইনিশিয়ালাইজ করুন, লাইব্রেরি থেকে আমাদের প্রয়োজনীয় সবকিছু পান।
+
+```typescript
+const hashFragment = `
+ import "utils/pack/bool/pack128.zok" as pack128;
+ import "hashes/poseidon/poseidon.zok" as poseidon;
+ .
+ .
+ .
+ }
+ `
+
+const hashProgram = `
+ ${hashFragment}
+ .
+ .
+ .
+ `
+
+const digProgram = `
+ ${hashFragment}
+ .
+ .
+ .
+ `
+```
+
+এরপর আমাদের কাছে হ্যাস ফাংশন এবং উপরে দেখা দুটি Zokrates প্রোগ্রাম রয়েছে।
+
+```typescript
+const digCompiled = zokrates.compile(digProgram)
+const hashCompiled = zokrates.compile(hashProgram)
+```
+
+এখানে আমরা সেই প্রোগ্রামগুলো কম্পাইল করি।
+
+```typescript
+// জিরো-নলেজ যাচাইকরণের জন্য কি তৈরি করুন।
+// একটি প্রোডাকশন সিস্টেমে আপনি একটি সেটআপ সেরিমনি ব্যবহার করতে চাইবেন।
+// (https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony).
+const keySetupResults = zokrates.setup(digCompiled.program, "")
+const verifierKey = keySetupResults.vk
+const proverKey = keySetupResults.pk
+```
+
+একটি প্রোডাকশন সিস্টেমে আমরা আরও জটিল [সেটআপ সেরিমনি](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony) ব্যবহার করতে পারি, কিন্তু এটি একটি প্রদর্শনের জন্য যথেষ্ট ভালো। ব্যবহারকারীরা প্রুভার কি জানতে পারে তা কোনো সমস্যা নয় - তারা এখনও এটি ব্যবহার করে কিছু প্রমাণ করতে পারবে না যদি না সেগুলো সত্য হয়। যেহেতু আমরা এন্ট্রপি (দ্বিতীয় প্যারামিটার, `""`) নির্দিষ্ট করি, তাই ফলাফলগুলো সর্বদা একই হবে।
+
+**দ্রষ্টব্য:** Zokrates প্রোগ্রামগুলোর কম্পাইলেশন এবং কি তৈরি করা ধীর প্রক্রিয়া। প্রতিবার এগুলো পুনরাবৃত্তি করার কোনো প্রয়োজন নেই, শুধুমাত্র যখন ম্যাপের আকার পরিবর্তিত হয় তখনই করতে হবে। একটি প্রোডাকশন সিস্টেমে আপনি এগুলো একবার করবেন, এবং তারপর আউটপুট সংরক্ষণ করবেন। আমি এখানে এটি না করার একমাত্র কারণ হলো সরলতা।
+
+#### `calculateMapHash` {#calculateMapHash}
+
+```typescript
+const calculateMapHash = function (hashMe: boolean[][]): string {
+ return (
+ "0x" +
+ BigInt(zokrates.computeWitness(hashCompiled, [hashMe]).output.slice(1, -1))
+ .toString(16)
+ .padStart(64, "0")
+ )
+}
+```
+
+[`computeWitness`](https://zokrates.github.io/toolbox/zokrates_js.html#computewitnessartifacts-args-options) ফাংশনটি আসলে Zokrates প্রোগ্রামটি চালায়। এটি দুটি ফিল্ড সহ একটি স্ট্রাকচার রিটার্ন করে: `output`, যা একটি JSON স্ট্রিং হিসেবে প্রোগ্রামের আউটপুট, এবং `witness`, যা ফলাফলের একটি জিরো নলেজ প্রুফ তৈরি করার জন্য প্রয়োজনীয় তথ্য। এখানে আমাদের শুধু আউটপুট প্রয়োজন।
+
+আউটপুটটি হলো `"31337"` ফর্মের একটি স্ট্রিং, যা কোটেশন মার্কের মধ্যে আবদ্ধ একটি ডেসিমাল সংখ্যা। কিন্তু `viem`-এর জন্য আমাদের যে আউটপুট প্রয়োজন তা হলো `0x60A7` ফর্মের একটি হেক্সাডেসিমাল সংখ্যা। তাই আমরা কোটেশন মার্কগুলো সরাতে `.slice(1,-1)` ব্যবহার করি এবং তারপর অবশিষ্ট স্ট্রিং, যা একটি ডেসিমাল সংখ্যা, সেটিকে একটি [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)-এ চালাতে `BigInt` ব্যবহার করি। `.toString(16)` এই `BigInt`-কে একটি হেক্সাডেসিমাল স্ট্রিংয়ে রূপান্তর করে, এবং `"0x"+` হেক্সাডেসিমাল সংখ্যার জন্য মার্কার যোগ করে।
+
+```typescript
+// খনন করুন এবং ফলাফলের একটি জিরো-নলেজ প্রুফ রিটার্ন করুন
+// (সার্ভার-সাইড কোড)
+```
+
+জিরো নলেজ প্রুফে পাবলিক ইনপুটগুলো (`x` এবং `y`) এবং ফলাফলগুলো (ম্যাপের হ্যাস এবং বোমার সংখ্যা) অন্তর্ভুক্ত থাকে।
+
+```typescript
+ const zkDig = function(map: boolean[][], x: number, y: number) : any {
+ if (x<0 || x>=width || y<0 || y>=height)
+ throw new Error("Trying to dig outside the map")
+```
+
+Zokrates-এ কোনো ইনডেক্স সীমার বাইরে কিনা তা চেক করা একটি সমস্যা, তাই আমরা এটি এখানে করি।
+
+```typescript
+const runResults = zokrates.computeWitness(digCompiled, [map, `${x}`, `${y}`])
+```
+
+ডিগ প্রোগ্রামটি এক্সিকিউট করুন।
+
+```typescript
+ const proof = zokrates.generateProof(
+ digCompiled.program,
+ runResults.witness,
+ proverKey)
+
+ return proof
+ }
+```
+
+[`generateProof`](https://zokrates.github.io/toolbox/zokrates_js.html#generateproofprogram-witness-provingkey-entropy) ব্যবহার করুন এবং প্রুফটি রিটার্ন করুন।
+
+```typescript
+const solidityVerifier = `
+ // Map size: ${width} x ${height}
+ \n${zokrates.exportSolidityVerifier(verifierKey)}
+ `
+```
+
+একটি সলিডিটি ভ্যালিডেটর, একটি স্মার্ট কন্ট্রাক্ট যা আমরা ব্লকচেইনে ডিপ্লয় করতে পারি এবং `digCompiled.program` দ্বারা তৈরি প্রুফগুলো যাচাই করতে ব্যবহার করতে পারি।
+
+```typescript
+ return {
+ zkDig,
+ calculateMapHash,
+ solidityVerifier,
+ }
+}
+```
+
+সবশেষে, অন্যান্য কোডের প্রয়োজন হতে পারে এমন সবকিছু রিটার্ন করুন।
+
+## সিকিউরিটি টেস্ট {#security-tests}
+
+সিকিউরিটি টেস্টগুলো গুরুত্বপূর্ণ কারণ একটি ফাংশনালিটি বাগ শেষ পর্যন্ত নিজেকে প্রকাশ করবে। কিন্তু যদি অ্যাপ্লিকেশনটি অনিরাপদ হয়, তবে এটি সম্ভবত দীর্ঘ সময়ের জন্য লুকিয়ে থাকবে যতক্ষণ না কেউ প্রতারণা করে এবং অন্যদের সম্পদ নিয়ে পালিয়ে যায়।
+
+### পারমিশন {#permissions}
+
+এই গেমে একটি প্রিভিলেজড এনটিটি রয়েছে, সার্ভার। এটি একমাত্র ব্যবহারকারী যাকে [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol)-এর ফাংশনগুলো কল করার অনুমতি দেওয়া হয়েছে। আমরা পারমিশনড ফাংশনগুলোতে কলগুলো শুধুমাত্র সার্ভার একাউন্ট হিসেবে অনুমোদিত কিনা তা যাচাই করতে [`cast`](https://book.getfoundry.sh/cast/) ব্যবহার করতে পারি।
+
+[সার্ভারের প্রাইভেট কি `setupNetwork.ts`-এ রয়েছে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/mud/setupNetwork.ts#L52)।
+
+1. যে কম্পিউটারে `anvil` (ব্লকচেইন) চলে, সেখানে এই এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন।
+
+ ```sh copy
+ WORLD_ADDRESS=0x8d8b6b8414e1e3dcfd4168561b9be6bd3bf6ec4b
+ UNAUTHORIZED_KEY=0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
+ AUTHORIZED_KEY=0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
+ ```
+
+2. ভ্যালিডেটর এডড্রেসটিকে একটি অননুমোদিত এডড্রেস হিসেবে সেট করার চেষ্টা করতে `cast` ব্যবহার করুন।
+
+ ```sh copy
+ cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $UNAUTHORIZED_KEY
+ ```
+
+ শুধুমাত্র `cast` একটি ব্যর্থতার রিপোর্টই করে না, বরং আপনি ব্রাউজারে গেমটিতে **MUD Dev Tools** খুলতে পারেন, **Tables**-এ ক্লিক করতে পারেন এবং **app\_\_VerifierAddress** নির্বাচন করতে পারেন। দেখুন যে এডড্রেসটি শূন্য নয়।
+
+3. ভ্যালিডেটর এডড্রেসটিকে সার্ভারের এডড্রেস হিসেবে সেট করুন।
+
+ ```sh copy
+ cast send $WORLD_ADDRESS 'app__setVerifier(address)' `cast address-zero` --private-key $AUTHORIZED_KEY
+ ```
+
+ **app\_\_VerifiedAddress**-এর এডড্রেসটি এখন শূন্য হওয়া উচিত।
+
+একই `System`-এর সমস্ত MUD ফাংশন একই এক্সেস কন্ট্রোলের মধ্য দিয়ে যায়, তাই আমি এই টেস্টটিকে যথেষ্ট বলে মনে করি। যদি আপনি তা না মনে করেন, তবে আপনি [`ServerSystem`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/contracts/src/systems/ServerSystem.sol)-এর অন্যান্য ফাংশনগুলো চেক করতে পারেন।
+
+### জিরো-নলেজ অপব্যবহার {#zero-knowledge-abuses}
+
+Zokrates যাচাই করার গণিত এই টিউটোরিয়ালের (এবং আমার ক্ষমতার) আওতার বাইরে। তবে, আমরা জিরো-নলেজ কোডে বিভিন্ন চেক চালাতে পারি যাতে যাচাই করা যায় যে এটি সঠিকভাবে না করা হলে এটি ব্যর্থ হয়। এই সমস্ত টেস্টের জন্য আমাদের [`zero-knowledge.ts`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts) পরিবর্তন করতে হবে এবং সম্পূর্ণ অ্যাপ্লিকেশনটি রিস্টার্ট করতে হবে। সার্ভার প্রসেসটি রিস্টার্ট করা যথেষ্ট নয়, কারণ এটি অ্যাপ্লিকেশনটিকে একটি অসম্ভব স্টেটে ফেলে দেয় (খেলোয়াড়ের একটি গেম চলমান আছে, কিন্তু গেমটি আর সার্ভারের কাছে উপলব্ধ নেই)।
+
+#### ভুল উত্তর {#wrong-answer}
+
+সবচেয়ে সহজ সম্ভাবনা হলো জিরো-নলেজ প্রুফে ভুল উত্তর প্রদান করা। এটি করতে, আমরা `zkDig`-এর ভেতরে যাই এবং [লাইন 91 পরিবর্তন করি](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L91):
+
+```ts
+proof.inputs[3] = "0x" + "1".padStart(64, "0")
+```
+
+এর মানে হলো আমরা সর্বদা দাবি করব যে একটি বোমা আছে, সঠিক উত্তর যাই হোক না কেন। এই সংস্করণের সাথে খেলার চেষ্টা করুন, এবং আপনি `pnpm dev` স্ক্রিনের **server** ট্যাবে এই এররটি দেখতে পাবেন:
+
+```
+ cause: {
+ code: 3,
+ message: 'execution reverted: revert: Zero knowledge verification fail',
+ data: '0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000
+000000000000000000000000000000000000000000000000205a65726f206b6e6f776c6564676520766572696669636174696f6
+e206661696c'
+ },
+```
+
+তাই এই ধরনের প্রতারণা ব্যর্থ হয়।
+
+#### ভুল প্রুফ {#wrong-proof}
+
+যদি আমরা সঠিক তথ্য প্রদান করি, কিন্তু শুধু ভুল প্রুফ ডাটা থাকে তবে কী হবে? এখন, লাইন 91-কে এটি দিয়ে প্রতিস্থাপন করুন:
+
+```ts
+proof.proof = {
+ a: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+ b: [
+ ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+ ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+ ],
+ c: ["0x" + "1".padStart(64, "0"), "0x" + "2".padStart(64, "0")],
+}
+```
+
+এটি এখনও ব্যর্থ হয়, কিন্তু এখন এটি কোনো কারণ ছাড়াই ব্যর্থ হয় কারণ এটি ভ্যালিডেটর কলের সময় ঘটে।
+
+### একজন ব্যবহারকারী কীভাবে জিরো ট্রাস্ট কোড যাচাই করতে পারে? {#user-verify-zero-trust}
+
+স্মার্ট কন্ট্রাক্টগুলো যাচাই করা তুলনামূলকভাবে সহজ। সাধারণত, ডেভেলপার সোর্স কোডটি একটি ব্লক এক্সপ্লোরার-এ প্রকাশ করে, এবং ব্লক এক্সপ্লোরার যাচাই করে যে সোর্স কোডটি [কন্ট্রাক্ট ডিপ্লয়মেন্ট লেনদেনের](/developers/docs/smart-contracts/deploying/) কোডে কম্পাইল হয় কিনা। MUD `System`-গুলোর ক্ষেত্রে এটি [একটু বেশি জটিল](https://mud.dev/cli/verify), তবে খুব বেশি নয়।
+
+জিরো-নলেজের ক্ষেত্রে এটি কঠিন। ভ্যালিডেটর কিছু ধ্রুবক অন্তর্ভুক্ত করে এবং সেগুলোর ওপর কিছু গণনা চালায়। এটি আপনাকে বলে না যে কী প্রমাণ করা হচ্ছে।
+
+```solidity
+ function verifyingKey() pure internal returns (VerifyingKey memory vk) {
+ vk.alpha = Pairing.G1Point(uint256(0x0f43f4fe7b5c2326fed4ac6ed2f4003ab9ab4ea6f667c2bdd77afb068617ee16), uint256(0x25a77832283f9726935219b5f4678842cda465631e72dbb24708a97ba5d0ce6f));
+ vk.beta = Pairing.G2Point([uint256(0x2cebd0fbd21aca01910581537b21ae4fed46bc0e524c055059aa164ba0a6b62b), uint256(0x18fd4a7bc386cf03a95af7163d5359165acc4e7961cb46519e6d9ee4a1e2b7e9)], [uint256(0x11449dee0199ef6d8eebfe43b548e875c69e7ce37705ee9a00c81fe52f11a009), uint256(0x066d0c83b32800d3f335bb9e8ed5e2924cf00e77e6ec28178592eac9898e1a00)]);
+```
+
+সমাধানটি হলো, অন্তত যতক্ষণ না ব্লক এক্সপ্লোরারগুলো তাদের ইউজার ইন্টারফেসে Zokrates ভেরিফিকেশন যোগ করে, অ্যাপ্লিকেশন ডেভেলপারদের Zokrates প্রোগ্রামগুলো উপলব্ধ করা, এবং অন্তত কিছু ব্যবহারকারীর জন্য উপযুক্ত ভেরিফিকেশন কি দিয়ে সেগুলো নিজেরাই কম্পাইল করা।
+
+এটি করতে:
+
+1. [Zokrates ইনস্টল করুন](https://zokrates.github.io/gettingstarted.html)।
+2. Zokrates প্রোগ্রাম সহ একটি ফাইল, `dig.zok` তৈরি করুন। নিচের কোডটি ধরে নেয় যে আপনি আসল ম্যাপের আকার, 10x5 রেখেছেন।
+
+ ```zokrates
+ import "utils/pack/bool/pack128.zok" as pack128;
+ import "hashes/poseidon/poseidon.zok" as poseidon;
+
+ def hashMap(bool[12][7] map) -> field {
+ bool[512] mut map1d = [false; 512];
+ u32 mut counter = 0;
+
+ for u32 x in 0..12 {
+ for u32 y in 0..7 {
+ map1d[counter] = map[x][y];
+ counter = counter+1;
+ }
+ }
+
+ field[4] hashMe = [
+ pack128(map1d[0..128]),
+ pack128(map1d[128..256]),
+ pack128(map1d[256..384]),
+ pack128(map1d[384..512])
+ ];
+
+ return poseidon(hashMe);
+ }
+
+
+ // (x,y) অবস্থানে মাইনের সংখ্যা
+ def map2mineCount(bool[12][7] map, u32 x, u32 y) -> u8 {
+ return if map[x+1][y+1] { 1 } else { 0 };
+ }
+
+ def main(private bool[12][7] map, u32 x, u32 y) -> (field, u8) {
+ return (hashMap(map) ,
+ if map2mineCount(map, x, y) > 0 { 0xFF } else {
+ map2mineCount(map, x-1, y-1) + map2mineCount(map, x, y-1) + map2mineCount(map, x+1, y-1) +
+ map2mineCount(map, x-1, y) + map2mineCount(map, x+1, y) +
+ map2mineCount(map, x-1, y+1) + map2mineCount(map, x, y+1) + map2mineCount(map, x+1, y+1)
+ }
+ );
+ }
+ ```
+
+3. Zokrates কোডটি কম্পাইল করুন এবং ভেরিফিকেশন কি তৈরি করুন। ভেরিফিকেশন কি-টি আসল সার্ভারে ব্যবহৃত একই এন্ট্রপি দিয়ে তৈরি করতে হবে, [এই ক্ষেত্রে একটি খালি স্ট্রিং](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L67)।
+
+ ```sh copy
+ zokrates compile --input dig.zok
+ zokrates setup -e ""
+ ```
+
+4. নিজে সলিডিটি ভ্যালিডেটর তৈরি করুন, এবং যাচাই করুন যে এটি ব্লকচেইনে থাকা ভ্যালিডেটরের সাথে কার্যকারিতার দিক থেকে অভিন্ন (সার্ভার একটি মন্তব্য যোগ করে, কিন্তু তা গুরুত্বপূর্ণ নয়)।
+
+ ```sh copy
+ zokrates export-verifier
+ diff verifier.sol ~/20240901-secret-state/packages/contracts/src/verifier.sol
+ ```
+
+## ডিজাইনের সিদ্ধান্ত {#design}
+
+যেকোনো যথেষ্ট জটিল অ্যাপ্লিকেশনে প্রতিযোগী ডিজাইনের লক্ষ্য থাকে যার জন্য ট্রেড-অফ প্রয়োজন। চলুন কিছু ট্রেড-অফ দেখি এবং কেন বর্তমান সমাধানটি অন্যান্য বিকল্পের চেয়ে পছন্দনীয় তা দেখি।
+
+### জিরো-নলেজ কেন {#why-zero-knowledge}
+
+মাইনসুইপারের জন্য আপনার আসলে জিরো-নলেজের প্রয়োজন নেই। সার্ভার সর্বদা ম্যাপটি ধরে রাখতে পারে, এবং তারপর গেমটি শেষ হলে এর সবটুকু প্রকাশ করতে পারে। তারপর, গেমের শেষে, স্মার্ট কন্ট্রাক্ট ম্যাপের হ্যাস গণনা করতে পারে, এটি মেলে কিনা তা যাচাই করতে পারে, এবং যদি না মেলে তবে সার্ভারকে জরিমানা করতে পারে বা গেমটিকে সম্পূর্ণভাবে বাতিল করতে পারে।
+
+আমি এই সহজ সমাধানটি ব্যবহার করিনি কারণ এটি শুধুমাত্র একটি সুনির্দিষ্ট শেষ স্টেট সহ ছোট গেমগুলোর জন্য কাজ করে। যখন একটি গেম সম্ভাব্যভাবে অসীম হয় (যেমন [অটোনোমাস ওয়ার্ল্ডের](https://0xparc.org/blog/autonomous-worlds) ক্ষেত্রে), তখন আপনার এমন একটি সমাধান প্রয়োজন যা স্টেটটিকে প্রকাশ _না করে_ প্রমাণ করে।
+
+একটি টিউটোরিয়াল হিসেবে এই নিবন্ধটির জন্য একটি ছোট গেম প্রয়োজন ছিল যা বোঝা সহজ, কিন্তু এই কৌশলটি দীর্ঘ গেমগুলোর জন্য সবচেয়ে বেশি কার্যকর।
+
+### Zokrates কেন? {#why-zokrates}
+
+[Zokrates](https://zokrates.github.io/) একমাত্র উপলব্ধ জিরো-নলেজ লাইব্রেরি নয়, তবে এটি একটি সাধারণ, [ইম্পারেটিভ](https://en.wikipedia.org/wiki/Imperative_programming) প্রোগ্রামিং ভাষার মতো এবং বুলিয়ান ভেরিয়েবল সমর্থন করে।
+
+আপনার অ্যাপ্লিকেশনের জন্য, ভিন্ন প্রয়োজনীয়তার সাথে, আপনি [Circum](https://docs.circom.io/getting-started/installation/) বা [Cairo](https://www.cairo-lang.org/tutorials/getting-started-with-cairo/) ব্যবহার করতে পছন্দ করতে পারেন।
+
+### কখন Zokrates কম্পাইল করতে হবে {#when-compile-zokrates}
+
+এই প্রোগ্রামে আমরা [প্রতিবার সার্ভার শুরু হওয়ার সময়](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L60-L61) Zokrates প্রোগ্রামগুলো কম্পাইল করি। এটি স্পষ্টতই সম্পদের অপচয়, কিন্তু এটি একটি টিউটোরিয়াল, যা সরলতার জন্য অপ্টিমাইজ করা হয়েছে।
+
+যদি আমি একটি প্রোডাকশন-লেভেলের অ্যাপ্লিকেশন লিখতাম, তবে আমি চেক করতাম যে আমার কাছে এই মাইনফিল্ডের আকারে কম্পাইল করা Zokrates প্রোগ্রাম সহ কোনো ফাইল আছে কিনা, এবং যদি থাকে তবে সেটি ব্যবহার করতাম। অনচেইন একটি ভ্যালিডেটর কন্ট্রাক্ট ডিপ্লয় করার ক্ষেত্রেও একই কথা প্রযোজ্য।
+
+### ভ্যালিডেটর এবং প্রুভার কি তৈরি করা {#key-creation}
+
+[কি তৈরি করা](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L63-L69) হলো আরেকটি বিশুদ্ধ গণনা যা একটি নির্দিষ্ট মাইনফিল্ডের আকারের জন্য একাধিকবার করার প্রয়োজন নেই। আবার, এটি শুধুমাত্র সরলতার খাতিরে একবার করা হয়।
+
+এছাড়া, আমরা [একটি সেটআপ সেরিমনি](https://zokrates.github.io/toolbox/trusted_setup.html#initializing-a-phase-2-ceremony) ব্যবহার করতে পারতাম। একটি সেটআপ সেরিমনির সুবিধা হলো জিরো-নলেজ প্রুফে প্রতারণা করার জন্য আপনার প্রতিটি অংশগ্রহণকারীর কাছ থেকে এন্ট্রপি বা কিছু মধ্যবর্তী ফলাফল প্রয়োজন। যদি অন্তত একজন সেরিমনি অংশগ্রহণকারী সৎ হয় এবং সেই তথ্য মুছে ফেলে, তবে জিরো-নলেজ প্রুফগুলো নির্দিষ্ট আক্রমণ থেকে নিরাপদ থাকে। তবে, সব জায়গা থেকে তথ্য মুছে ফেলা হয়েছে কিনা তা যাচাই করার _কোনো মেকানিজম নেই_। যদি জিরো-নলেজ প্রুফগুলো অত্যন্ত গুরুত্বপূর্ণ হয়, তবে আপনি সেটআপ সেরিমনিতে অংশগ্রহণ করতে চাইবেন।
+
+এখানে আমরা [perpetual powers of tau](https://github.com/privacy-scaling-explorations/perpetualpowersoftau)-এর ওপর নির্ভর করি, যেখানে ডজন ডজন অংশগ্রহণকারী ছিল। এটি সম্ভবত যথেষ্ট নিরাপদ, এবং অনেক সহজ। আমরা কি তৈরি করার সময় এন্ট্রপিও যোগ করি না, যা ব্যবহারকারীদের জন্য [জিরো-নলেজ কনফিগারেশন যাচাই করা](#user-verify-zero-trust) সহজ করে তোলে।
+
+### কোথায় যাচাই করতে হবে {#where-verification}
+
+আমরা জিরো-নলেজ প্রুফগুলো অনচেইন (যার জন্য গ্যাস খরচ হয়) বা ক্লায়েন্টে ([`verify`](https://zokrates.github.io/toolbox/zokrates_js.html#verifyverificationkey-proof) ব্যবহার করে) যাচাই করতে পারি। আমি প্রথমটি বেছে নিয়েছি, কারণ এটি আপনাকে একবার [ভ্যালিডেটর যাচাই করতে](#user-verify-zero-trust) দেয় এবং তারপর বিশ্বাস করতে দেয় যে যতক্ষণ এর জন্য কন্ট্রাক্ট এডড্রেস একই থাকে ততক্ষণ এটি পরিবর্তিত হয় না। যদি ক্লায়েন্টে ভেরিফিকেশন করা হতো, তবে প্রতিবার ক্লায়েন্ট ডাউনলোড করার সময় আপনাকে প্রাপ্ত কোডটি যাচাই করতে হতো।
+
+এছাড়া, যদিও এই গেমটি সিঙ্গেল প্লেয়ার, অনেক ব্লকচেইন গেম মাল্টি-প্লেয়ার হয়। অনচেইন ভেরিফিকেশন মানে হলো আপনি শুধুমাত্র একবার জিরো-নলেজ প্রুফ যাচাই করেন। ক্লায়েন্টে এটি করার জন্য প্রতিটি ক্লায়েন্টকে স্বাধীনভাবে যাচাই করতে হবে।
+
+### টাইপস্ক্রিপ্ট নাকি Zokrates-এ ম্যাপ ফ্ল্যাটেন করবেন? {#where-flatten}
+
+সাধারণভাবে, যখন প্রসেসিং টাইপস্ক্রিপ্ট বা Zokrates-এ করা যায়, তখন এটি টাইপস্ক্রিপ্টে করা ভালো, যা অনেক দ্রুত, এবং জিরো-নলেজ প্রুফের প্রয়োজন হয় না। উদাহরণস্বরূপ, এই কারণেই আমরা Zokrates-কে হ্যাস প্রদান করি না এবং এটি সঠিক কিনা তা যাচাই করতে বাধ্য করি না। হ্যাসিং Zokrates-এর ভেতরে করতে হবে, কিন্তু রিটার্ন করা হ্যাস এবং অনচেইন হ্যাসের মধ্যে মিল এর বাইরে ঘটতে পারে।
+
+তবে, আমরা এখনও [Zokrates-এ ম্যাপটিকে ফ্ল্যাটেন করি](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L15-L20), যেখানে আমরা এটি টাইপস্ক্রিপ্টে করতে পারতাম। কারণটি হলো অন্যান্য বিকল্পগুলো, আমার মতে, আরও খারাপ।
+
+- Zokrates কোডে বুলিয়ানের একটি একমাত্রিক অ্যারে প্রদান করুন, এবং দ্বিমাত্রিক ম্যাপ পেতে `x*(height+2)+y`-এর মতো একটি এক্সপ্রেশন ব্যবহার করুন। এটি [কোডটিকে](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/zero-knowledge.ts#L44-L47) কিছুটা বেশি জটিল করে তুলবে, তাই আমি সিদ্ধান্ত নিয়েছি যে একটি টিউটোরিয়ালের জন্য পারফরম্যান্স গেইন এর যোগ্য নয়।
+
+- Zokrates-কে একমাত্রিক অ্যারে এবং দ্বিমাত্রিক অ্যারে উভয়ই পাঠান। তবে, এই সমাধানটি আমাদের কোনো লাভ দেয় না। Zokrates কোডটিকে যাচাই করতে হবে যে এটিকে প্রদান করা একমাত্রিক অ্যারেটি সত্যিই দ্বিমাত্রিক অ্যারের সঠিক উপস্থাপনা। তাই কোনো পারফরম্যান্স গেইন হবে না।
+
+- Zokrates-এ দ্বিমাত্রিক অ্যারেটিকে ফ্ল্যাটেন করুন। এটি সবচেয়ে সহজ বিকল্প, তাই আমি এটি বেছে নিয়েছি।
+
+### ম্যাপ কোথায় সংরক্ষণ করবেন {#where-store-maps}
+
+এই অ্যাপ্লিকেশনে [`gamesInProgress`](https://github.com/qbzzt/20240901-secret-state/blob/main/packages/server/src/app.ts#L20) হলো মেমোরিতে থাকা একটি সাধারণ ভেরিয়েবল। এর মানে হলো যদি আপনার সার্ভার মারা যায় এবং রিস্টার্ট করার প্রয়োজন হয়, তবে এর সংরক্ষিত সমস্ত তথ্য হারিয়ে যায়। শুধুমাত্র খেলোয়াড়রাই তাদের গেম চালিয়ে যেতে অক্ষম হয় না, তারা এমনকি একটি নতুন গেমও শুরু করতে পারে না কারণ অনচেইন কম্পোনেন্ট মনে করে যে তাদের এখনও একটি গেম চলমান আছে।
+
+এটি স্পষ্টতই একটি প্রোডাকশন সিস্টেমের জন্য খারাপ ডিজাইন, যেখানে আপনি এই তথ্যটি একটি ডাটাবেসে সংরক্ষণ করবেন। আমি এখানে একটি ভেরিয়েবল ব্যবহার করার একমাত্র কারণ হলো এটি একটি টিউটোরিয়াল এবং সরলতাই প্রধান বিবেচ্য বিষয়।
+
+## উপসংহার: কোন পরিস্থিতিতে এটি উপযুক্ত কৌশল? {#conclusion}
+
+সুতরাং, এখন আপনি জানেন কীভাবে এমন একটি সার্ভার সহ একটি গেম লিখতে হয় যা গোপন স্টেট সংরক্ষণ করে যা অনচেইনের অন্তর্গত নয়। কিন্তু কোন ক্ষেত্রে আপনার এটি করা উচিত? দুটি প্রধান বিবেচ্য বিষয় রয়েছে।
+
+- _দীর্ঘ চলমান গেম_: [উপরে উল্লিখিত হিসেবে](#why-zero-knowledge), একটি ছোট গেমে আপনি গেমটি শেষ হওয়ার পর স্টেটটি প্রকাশ করতে পারেন এবং তারপর সবকিছু যাচাই করতে পারেন। কিন্তু যখন গেমটি দীর্ঘ বা অনির্দিষ্ট সময় নেয় এবং স্টেটটি গোপন রাখতে হয় তখন এটি কোনো বিকল্প নয়।
+
+- _কিছু কেন্দ্রীকরণ গ্রহণযোগ্য_: জিরো-নলেজ প্রুফগুলো ইন্টিগ্রিটি যাচাই করতে পারে, যে একটি এনটিটি ফলাফলগুলো জাল করছে না। তারা যা করতে পারে না তা হলো এনটিটিটি এখনও উপলব্ধ থাকবে এবং মেসেজগুলোর উত্তর দেবে তা নিশ্চিত করা। যেসব পরিস্থিতিতে এভেইলএবিলিটিও ডিসেন্ট্রালাইজড হওয়া প্রয়োজন, সেখানে জিরো-নলেজ প্রুফগুলো পর্যাপ্ত সমাধান নয়, এবং আপনার [মাল্টি-পার্টি কম্পিউটেশন](https://en.wikipedia.org/wiki/Secure_multi-party_computation) প্রয়োজন।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
+
+### স্বীকৃতি {#acknowledgements}
+
+- আলভারো আলোনসো এই নিবন্ধটির একটি খসড়া পড়েছেন এবং Zokrates সম্পর্কে আমার কিছু ভুল বোঝাবুঝি দূর করেছেন।
+
+অবশিষ্ট যেকোনো ভুলের দায়িত্ব আমার।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/bn/developers/tutorials/secure-development-workflow/index.md
new file mode 100644
index 00000000000..d7c43a413b7
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/secure-development-workflow/index.md
@@ -0,0 +1,53 @@
+---
+title: স্মার্ট কন্ট্রাক্ট সিকিউরিটি চেকলিস্ট
+description: নিরাপদ স্মার্ট কন্ট্রাক্ট লেখার জন্য একটি প্রস্তাবিত ওয়ার্কফ্লো
+author: "Trailofbits"
+tags: ["স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "solidity"]
+skill: intermediate
+breadcrumb: সিকিউরিটি চেকলিস্ট
+lang: bn
+published: 2020-09-07
+source: Building secure contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md
+---
+
+## স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট চেকলিস্ট {#smart-contract-development-checklist}
+
+আপনি যখন আপনার স্মার্ট কন্ট্রাক্টগুলো লিখবেন তখন আমরা এই হাই-লেভেল প্রক্রিয়াটি অনুসরণ করার পরামর্শ দিই।
+
+পরিচিত নিরাপত্তা সমস্যাগুলো পরীক্ষা করুন:
+
+- [Slither](https://github.com/crytic/slither) দিয়ে আপনার কন্ট্রাক্টগুলো রিভিউ করুন। সাধারণ দুর্বলতাগুলোর জন্য এতে 40 টিরও বেশি বিল্ট-ইন ডিটেক্টর রয়েছে। নতুন কোডের সাথে প্রতিটি চেক-ইনে এটি রান করুন এবং নিশ্চিত করুন যে এটি একটি ক্লিন রিপোর্ট পায় (অথবা নির্দিষ্ট সমস্যাগুলো সাইলেন্স করতে ট্রায়াজ মোড ব্যবহার করুন)।
+- [Crytic](https://crytic.io/) দিয়ে আপনার কন্ট্রাক্টগুলো রিভিউ করুন। এটি এমন 50 টি সমস্যা পরীক্ষা করে যা Slither করে না। গিটহাবের (GitHub) পুল রিকোয়েস্টগুলোতে (Pull Requests) সহজেই নিরাপত্তা সমস্যাগুলো তুলে ধরার মাধ্যমে Crytic আপনার টিমকেও একে অপরের সাথে আপ-টু-ডেট থাকতে সাহায্য করতে পারে।
+
+আপনার কন্ট্রাক্টের বিশেষ বৈশিষ্ট্যগুলো বিবেচনা করুন:
+
+- আপনার কন্ট্রাক্টগুলো কি আপগ্রেডযোগ্য? ত্রুটির জন্য আপনার আপগ্রেডযোগ্য কোডটি [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) বা [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/) দিয়ে রিভিউ করুন। আপগ্রেডগুলো যে 17 টি উপায়ে ভুল পথে যেতে পারে তা আমরা ডকুমেন্ট করেছি।
+- আপনার কন্ট্রাক্টগুলো কি ERC-এর সাথে সামঞ্জস্যপূর্ণ বলে দাবি করে? সেগুলোকে [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) দিয়ে পরীক্ষা করুন। এই টুলটি তাৎক্ষণিকভাবে 6 টি সাধারণ স্পেক (specs) থেকে বিচ্যুতি শনাক্ত করে।
+- আপনি কি থার্ড-পার্টি টোকেনের সাথে ইন্টিগ্রেট করেন? এক্সটার্নাল কন্ট্রাক্টের ওপর নির্ভর করার আগে আমাদের [টোকেন ইন্টিগ্রেশন চেকলিস্ট](/developers/tutorials/token-integration-checklist/) রিভিউ করুন।
+
+আপনার কোডের গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্যগুলো দৃশ্যমানভাবে পরিদর্শন করুন:
+
+- Slither-এর [inheritance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) প্রিন্টার রিভিউ করুন। অসাবধানতাবশত শ্যাডোইং (shadowing) এবং C3 লিনিয়ারাইজেশন (linearization) সমস্যাগুলো এড়িয়ে চলুন।
+- Slither-এর [function-summary](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) প্রিন্টার রিভিউ করুন। এটি ফাংশন ভিজিবিলিটি এবং অ্যাক্সেস কন্ট্রোল রিপোর্ট করে।
+- Slither-এর [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) প্রিন্টার রিভিউ করুন। এটি স্টেট ভেরিয়েবলগুলোর ওপর অ্যাক্সেস কন্ট্রোল রিপোর্ট করে।
+
+গুরুত্বপূর্ণ নিরাপত্তা প্রপার্টিগুলো ডকুমেন্ট করুন এবং সেগুলো মূল্যায়ন করতে স্বয়ংক্রিয় টেস্ট জেনারেটর ব্যবহার করুন:
+
+- [আপনার কোডের জন্য নিরাপত্তা প্রপার্টিগুলো ডকুমেন্ট করতে](/developers/tutorials/guide-to-smart-contract-security-tools/) শিখুন। এটি প্রথমে কঠিন মনে হতে পারে, তবে একটি ভালো ফলাফল অর্জনের জন্য এটি সবচেয়ে গুরুত্বপূর্ণ কাজ। এই টিউটোরিয়ালের যেকোনো উন্নত কৌশল ব্যবহার করার জন্যও এটি একটি পূর্বশর্ত।
+- [Echidna](https://github.com/crytic/echidna) এবং [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html)-এর সাথে ব্যবহারের জন্য Solidity-তে নিরাপত্তা প্রপার্টিগুলো সংজ্ঞায়িত করুন। আপনার স্টেট মেশিন, অ্যাক্সেস কন্ট্রোল, গাণিতিক অপারেশন, এক্সটার্নাল ইন্টারেকশন এবং স্ট্যান্ডার্ড কনফরমেন্সের ওপর ফোকাস করুন।
+- [Slither-এর Python API](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) দিয়ে নিরাপত্তা প্রপার্টিগুলো সংজ্ঞায়িত করুন। ইনহেরিটেন্স, ভেরিয়েবল ডিপেন্ডেন্সি, অ্যাক্সেস কন্ট্রোল এবং অন্যান্য কাঠামোগত সমস্যার ওপর ফোকাস করুন।
+- [Crytic](https://crytic.io)-এর সাথে প্রতিটি কমিটে আপনার প্রপার্টি টেস্টগুলো রান করুন। Crytic নিরাপত্তা প্রপার্টি টেস্টগুলো গ্রহণ এবং মূল্যায়ন করতে পারে যাতে আপনার টিমের সবাই সহজেই দেখতে পারে যে সেগুলো গিটহাবে (GitHub) পাস করেছে। ব্যর্থ টেস্টগুলো কমিট ব্লক করতে পারে।
+
+পরিশেষে, এমন সমস্যাগুলোর বিষয়ে সচেতন থাকুন যা স্বয়ংক্রিয় টুলগুলো সহজেই খুঁজে পায় না:
+
+- গোপনীয়তার অভাব: পুলে অপেক্ষমাণ থাকার সময় অন্য সবাই আপনার লেনদেন দেখতে পারে
+- ফ্রন্ট রানিং লেনদেন
+- ক্রিপ্টোগ্রাফিক অপারেশন
+- এক্সটার্নাল DeFi কম্পোনেন্টগুলোর সাথে ঝুঁকিপূর্ণ ইন্টারেকশন
+
+## সাহায্য চান {#ask-for-help}
+
+[Ethereum office hours](https://calendly.com/dan-trailofbits/office-hours) প্রতি মঙ্গলবার বিকেলে পরিচালিত হয়। এই 1-ঘণ্টার, 1-অন-1 সেশনগুলো হলো নিরাপত্তা সম্পর্কে আপনার যেকোনো প্রশ্ন জিজ্ঞাসা করার, আমাদের টুলগুলো ব্যবহার করে ট্রাবলশুট করার এবং আপনার বর্তমান পদ্ধতি সম্পর্কে বিশেষজ্ঞদের কাছ থেকে ফিডব্যাক পাওয়ার একটি সুযোগ। আমরা আপনাকে এই গাইডের মাধ্যমে কাজ করতে সাহায্য করব।
+
+আমাদের স্ল্যাকে (Slack) যোগ দিন: [Empire Hacking](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw)। আপনার কোনো প্রশ্ন থাকলে আমরা সবসময় #crytic এবং #ethereum চ্যানেলে উপলব্ধ আছি।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/send-token-ethersjs/index.md b/public/content/translations/bn/developers/tutorials/send-token-ethersjs/index.md
new file mode 100644
index 00000000000..ba7255e3925
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/send-token-ethersjs/index.md
@@ -0,0 +1,211 @@
+---
+title: ethers.js ব্যবহার করে টোকেন পাঠানো
+description: ethers.js ব্যবহার করে টোকেন পাঠানোর জন্য নতুনদের উপযোগী গাইড।
+author: কিম ইয়ংজুন
+tags: ["ETHERS.JS", "ERC-20", "টোকেন"]
+skill: beginner
+breadcrumb: টোকেন পাঠান
+lang: bn
+published: 2021-04-06
+---
+
+## ethers.js(5.0) ব্যবহার করে টোকেন পাঠান {#send-token}
+
+### এই টিউটোরিয়ালে আপনি যা শিখবেন {#you-learn-about}
+
+- ethers.js ইমপোর্ট করা
+- টোকেন ট্রান্সফার করা
+- নেটওয়ার্ক ট্রাফিকের অবস্থা অনুযায়ী গ্যাস প্রাইস সেট করা
+
+### শুরু করার জন্য {#to-get-started}
+
+শুরু করার জন্য, আমাদের প্রথমে আমাদের জাভাস্ক্রিপ্টে ethers.js লাইব্রেরি ইমপোর্ট করতে হবে
+ethers.js(5.0) অন্তর্ভুক্ত করুন
+
+### ইনস্টল করা {#install-ethersjs}
+
+```shell
+/home/ricmoo> npm install --save ethers
+```
+
+ব্রাউজারে ES6
+
+```html
+
+```
+
+ব্রাউজারে ES3(UMD)
+
+```html
+
+```
+
+### প্যারামিটার {#param}
+
+1. **`contract_address`**: টোকেন কন্ট্রাক্ট এডড্রেস (আপনি যে টোকেনটি ট্রান্সফার করতে চান তা ইথার না হলে কন্ট্রাক্ট এডড্রেস প্রয়োজন হয়)
+2. **`send_token_amount`**: আপনি রিসিভারকে যে পরিমাণ পাঠাতে চান
+3. **`to_address`**: রিসিভারের এডড্রেস
+4. **`send_account`**: প্রেরকের এডড্রেস
+5. **`private_key`**: লেনদেন সাইন করতে এবং প্রকৃতপক্ষে টোকেন ট্রান্সফার করার জন্য প্রেরকের প্রাইভেট কি
+
+## লক্ষ্য করুন {#notice}
+
+`signTransaction(tx)` সরিয়ে দেওয়া হয়েছে কারণ `sendTransaction()` এটি অভ্যন্তরীণভাবে করে।
+
+## পাঠানোর প্রক্রিয়া {#procedure}
+
+### 1. নেটওয়ার্ক (টেস্টনেট)-এর সাথে কানেক্ট করুন {#connect-to-network}
+
+#### প্রোভাইডার সেট করুন (Infura) {#set-provider}
+
+Ropsten টেস্টনেট-এর সাথে কানেক্ট করুন
+
+```javascript
+window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
+```
+
+### 2. ওয়ালেট তৈরি করুন {#create-wallet}
+
+```javascript
+let wallet = new ethers.Wallet(private_key)
+```
+
+### 3. ওয়ালেটকে নেটের সাথে কানেক্ট করুন {#connect-wallet-to-net}
+
+```javascript
+let walletSigner = wallet.connect(window.ethersProvider)
+```
+
+### 4. বর্তমান গ্যাস প্রাইস পান {#get-gas}
+
+```javascript
+window.ethersProvider.getGasPrice() // গ্যাস প্রাইস
+```
+
+### 5. লেনদেন সংজ্ঞায়িত করুন {#define-transaction}
+
+নিচে সংজ্ঞায়িত এই ভেরিয়েবলগুলো `send_token()` এর উপর নির্ভরশীল
+
+### লেনদেন প্যারামিটার {#transaction-params}
+
+1. **`send_account`**: টোকেন প্রেরকের এডড্রেস
+2. **`to_address`**: টোকেন রিসিভারের এডড্রেস
+3. **`send_token_amount`**: পাঠানোর জন্য টোকেনের পরিমাণ
+4. **`gas_limit`**: গ্যাস লিমিট
+5. **`gas_price`**: গ্যাস প্রাইস
+
+[কীভাবে ব্যবহার করবেন তা নিচে দেখুন](#how-to-use)
+
+```javascript
+const tx = {
+ from: send_account,
+ to: to_address,
+ value: ethers.utils.parseEther(send_token_amount),
+ nonce: window.ethersProvider.getTransactionCount(send_account, "latest"),
+ gasLimit: ethers.utils.hexlify(gas_limit), // 100000
+ gasPrice: gas_price,
+}
+```
+
+### 6. ট্রান্সফার {#transfer}
+
+```javascript
+walletSigner.sendTransaction(tx).then((transaction) => {
+ console.dir(transaction)
+ alert("Send finished!")
+})
+```
+
+## এটি কীভাবে ব্যবহার করবেন {#how-to-use}
+
+```javascript
+let private_key =
+ "41559d28e936dc92104ff30691519693fc753ffbee6251a611b9aa1878f12a4d"
+let send_token_amount = "1"
+let to_address = "0x4c10D2734Fb76D3236E522509181CC3Ba8DE0e80"
+let send_address = "0xda27a282B5B6c5229699891CfA6b900A716539E6"
+let gas_limit = "0x100000"
+let wallet = new ethers.Wallet(private_key)
+let walletSigner = wallet.connect(window.ethersProvider)
+let contract_address = ""
+window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
+
+send_token(
+ contract_address,
+ send_token_amount,
+ to_address,
+ send_address,
+ private_key
+)
+```
+
+### সফল! {#success}
+
+
+
+## send_token() {#send-token-method}
+
+```javascript
+function send_token(
+ contract_address,
+ send_token_amount,
+ to_address,
+ send_account,
+ private_key
+) {
+ let wallet = new ethers.Wallet(private_key)
+ let walletSigner = wallet.connect(window.ethersProvider)
+
+ window.ethersProvider.getGasPrice().then((currentGasPrice) => {
+ let gas_price = ethers.utils.hexlify(parseInt(currentGasPrice))
+ console.log(`gas_price: ${gas_price}`)
+
+ if (contract_address) {
+ // সাধারণ টোকেন পাঠানো
+ let contract = new ethers.Contract(
+ contract_address,
+ send_abi,
+ walletSigner
+ )
+
+ // কতগুলো টোকেন?
+ let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
+ console.log(`numberOfTokens: ${numberOfTokens}`)
+
+ // টোকেন পাঠান
+ contract.transfer(to_address, numberOfTokens).then((transferResult) => {
+ console.dir(transferResult)
+ alert("sent token")
+ })
+ } // ইথার পাঠানো
+ else {
+ const tx = {
+ from: send_account,
+ to: to_address,
+ value: ethers.utils.parseEther(send_token_amount),
+ nonce: window.ethersProvider.getTransactionCount(
+ send_account,
+ "latest"
+ ),
+ gasLimit: ethers.utils.hexlify(gas_limit), // 100000
+ gasPrice: gas_price,
+ }
+ console.dir(tx)
+ try {
+ walletSigner.sendTransaction(tx).then((transaction) => {
+ console.dir(transaction)
+ alert("Send finished!")
+ })
+ } catch (error) {
+ alert("failed to send!!")
+ }
+ }
+ })
+}
+```
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/bn/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
new file mode 100644
index 00000000000..790248ee271
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -0,0 +1,209 @@
+---
+title: ওয়েব3 ব্যবহার করে লেনদেন পাঠানো
+description: "এটি ওয়েব3 ব্যবহার করে ইথিরিয়াম লেনদেন পাঠানোর জন্য একটি শিক্ষানবিস-বান্ধব গাইড। ইথিরিয়াম ব্লকচেইনে একটি লেনদেন পাঠানোর জন্য তিনটি প্রধান ধাপ রয়েছে: তৈরি করা, সাইন করা এবং ব্রডকাস্ট করা। আমরা এই তিনটি ধাপ নিয়েই আলোচনা করব।"
+author: "এলান হ্যালপার্ন"
+tags: ["লেনদেন", "web3.js", "alchemy"]
+skill: beginner
+breadcrumb: লেনদেন পাঠান
+lang: bn
+published: 2020-11-04
+source: Alchemy docs
+sourceUrl: https://www.alchemy.com/docs/how-to-send-transactions-on-ethereum
+---
+
+এটি ওয়েব3 ব্যবহার করে ইথিরিয়াম লেনদেন পাঠানোর জন্য একটি শিক্ষানবিস-বান্ধব গাইড। ইথিরিয়াম ব্লকচেইনে একটি লেনদেন পাঠানোর জন্য তিনটি প্রধান ধাপ রয়েছে: তৈরি করা, সাইন করা এবং ব্রডকাস্ট করা। আমরা এই তিনটি ধাপ নিয়েই আলোচনা করব, আশা করি আপনার যেকোনো প্রশ্নের উত্তর দিতে পারব! এই টিউটোরিয়ালে, আমরা ইথিরিয়াম চেইনে আমাদের লেনদেন পাঠাতে [Alchemy](https://www.alchemy.com/) ব্যবহার করব। আপনি [এখানে একটি বিনামূল্যের Alchemy একাউন্ট তৈরি করতে পারেন](https://auth.alchemyapi.io/signup)।
+
+**নোট:** এই গাইডটি আপনার অ্যাপের _ব্যাকএন্ডে_ আপনার লেনদেন সাইন করার জন্য। আপনি যদি ফ্রন্টএন্ডে আপনার লেনদেন সাইন করা ইন্টিগ্রেট করতে চান, তবে [ব্রাউজার প্রোভাইডারের সাথে ওয়েব3](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider) ইন্টিগ্রেট করার বিষয়টি দেখে নিন।
+
+## বেসিক বিষয়সমূহ {#the-basics}
+
+বেশিরভাগ ব্লকচেইন ডেভেলপারদের মতো যখন তারা প্রথম শুরু করে, আপনি হয়তো কীভাবে একটি লেনদেন পাঠাতে হয় (যা বেশ সহজ হওয়া উচিত) তা নিয়ে কিছু গবেষণা করেছেন এবং প্রচুর গাইডের সম্মুখীন হয়েছেন, যার প্রতিটি ভিন্ন ভিন্ন কথা বলছে এবং আপনাকে কিছুটা অভিভূত ও বিভ্রান্ত করে তুলেছে। আপনি যদি সেই অবস্থায় থাকেন, তবে চিন্তা করবেন না; আমরা সবাই কোনো না কোনো সময় সেখানে ছিলাম! তাই, শুরু করার আগে, আসুন কয়েকটি বিষয় পরিষ্কার করে নিই:
+
+### 1\. Alchemy আপনার প্রাইভেট কি সংরক্ষণ করে না {#alchemy-does-not-store-your-private-keys}
+
+- এর মানে হলো Alchemy আপনার হয়ে লেনদেন সাইন এবং পাঠাতে পারে না। এর কারণ হলো নিরাপত্তার উদ্দেশ্য। Alchemy কখনোই আপনাকে আপনার প্রাইভেট কি শেয়ার করতে বলবে না, এবং আপনার কখনোই কোনো হোস্টেড নোড (বা অন্য কারো সাথে) আপনার প্রাইভেট কি শেয়ার করা উচিত নয়।
+- আপনি Alchemy-এর কোর API ব্যবহার করে ব্লকচেইন থেকে পড়তে পারেন, কিন্তু এতে লিখতে হলে Alchemy-এর মাধ্যমে পাঠানোর আগে আপনার লেনদেন সাইন করার জন্য অন্য কিছু ব্যবহার করতে হবে (এটি অন্য যেকোনো [নোড সার্ভিসের](/developers/docs/nodes-and-clients/nodes-as-a-service/) ক্ষেত্রেও একই)।
+
+### 2\. "সাইনার" কী? {#what-is-a-signer}
+
+- সাইনাররা আপনার প্রাইভেট কি ব্যবহার করে আপনার জন্য লেনদেন সাইন করবে। এই টিউটোরিয়ালে আমরা আমাদের লেনদেন সাইন করতে [Alchemy web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) ব্যবহার করব, তবে আপনি অন্য যেকোনো ওয়েব3 লাইব্রেরিও ব্যবহার করতে পারেন।
+- ফ্রন্টএন্ডে, সাইনারের একটি ভালো উদাহরণ হতে পারে [MetaMask](https://metamask.io/), যা আপনার হয়ে লেনদেন সাইন করবে এবং পাঠাবে।
+
+### 3\. কেন আমাকে আমার লেনদেন সাইন করতে হবে? {#why-do-i-need-to-sign-my-transactions}
+
+- ইথিরিয়াম নেটওয়ার্ক-এ লেনদেন পাঠাতে ইচ্ছুক প্রত্যেক ব্যবহারকারীকে অবশ্যই লেনদেনটি সাইন করতে হবে (তাদের প্রাইভেট কি ব্যবহার করে), যাতে লেনদেনের উৎসটি যে দাবি করছে তা যাচাই করা যায়।
+- এই প্রাইভেট কি সুরক্ষিত রাখা অত্যন্ত গুরুত্বপূর্ণ, কারণ এতে অ্যাক্সেস থাকলে আপনার ইথিরিয়াম একাউন্ট-এর উপর সম্পূর্ণ নিয়ন্ত্রণ পাওয়া যায়, যা আপনাকে (বা অ্যাক্সেস থাকা যে কাউকে) আপনার হয়ে লেনদেন করার অনুমতি দেয়।
+
+### 4\. আমি কীভাবে আমার প্রাইভেট কি সুরক্ষিত রাখব? {#how-do-i-protect-my-private-key}
+
+- আপনার প্রাইভেট কি সুরক্ষিত রাখার এবং লেনদেন পাঠানোর জন্য এটি ব্যবহার করার অনেক উপায় রয়েছে। এই টিউটোরিয়ালে আমরা একটি `.env` ফাইল ব্যবহার করব। তবে, আপনি প্রাইভেট কি সংরক্ষণ করে এমন একটি আলাদা প্রোভাইডার ব্যবহার করতে পারেন, একটি কিস্টোর ফাইল ব্যবহার করতে পারেন, বা অন্যান্য বিকল্প ব্যবহার করতে পারেন।
+
+### 5\. `eth_sendTransaction` এবং `eth_sendRawTransaction`-এর মধ্যে পার্থক্য কী? {#difference-between-send-and-send-raw}
+
+`eth_sendTransaction` এবং `eth_sendRawTransaction` উভয়ই ইথিরিয়াম API ফাংশন যা ইথিরিয়াম নেটওয়ার্ক-এ একটি লেনদেন ব্রডকাস্ট করে যাতে এটি ভবিষ্যতের একটি ব্লক-এ যুক্ত হয়। লেনদেন সাইন করার ক্ষেত্রে তারা কীভাবে কাজ করে তাতে তাদের পার্থক্য রয়েছে।
+
+- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) _আনসাইনড_ লেনদেন পাঠানোর জন্য ব্যবহৃত হয়, যার মানে হলো আপনি যে নোড-এ পাঠাচ্ছেন তাকে অবশ্যই আপনার প্রাইভেট কি পরিচালনা করতে হবে যাতে এটি চেইনে ব্রডকাস্ট করার আগে লেনদেনটি সাইন করতে পারে। যেহেতু Alchemy ব্যবহারকারীর প্রাইভেট কি রাখে না, তাই তারা এই পদ্ধতি সমর্থন করে না।
+- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) এমন লেনদেন ব্রডকাস্ট করতে ব্যবহৃত হয় যা ইতিমধ্যে সাইন করা হয়েছে। এর মানে হলো আপনাকে প্রথমে [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction) ব্যবহার করতে হবে, তারপর ফলাফলটি `eth_sendRawTransaction`-এ পাস করতে হবে।
+
+ওয়েব3 ব্যবহার করার সময়, [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction) ফাংশন কল করে `eth_sendRawTransaction` অ্যাক্সেস করা হয়।
+
+এই টিউটোরিয়ালে আমরা এটিই ব্যবহার করব।
+
+### 6\. ওয়েব3 লাইব্রেরি কী? {#what-is-the-web3-library}
+
+- Web3.js হলো স্ট্যান্ডার্ড JSON-RPC কলের চারপাশে একটি র্যাপার লাইব্রেরি যা ইথিরিয়াম ডেভেলপমেন্টে ব্যবহার করা বেশ সাধারণ।
+- বিভিন্ন ভাষার জন্য অনেক ওয়েব3 লাইব্রেরি রয়েছে। এই টিউটোরিয়ালে আমরা [Alchemy Web3](https://docs.alchemy.com/reference/api-overview) ব্যবহার করব যা জাভাস্ক্রিপ্টে লেখা। আপনি [এখানে](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) অন্যান্য বিকল্প যেমন [ethers.js](https://docs.ethers.org/v5/) দেখতে পারেন।
+
+ঠিক আছে, এখন যেহেতু আমরা এই কয়েকটি প্রশ্নের উত্তর পেয়েছি, চলুন টিউটোরিয়ালে এগিয়ে যাই। Alchemy [discord](https://discord.gg/gWuC7zB)-এ যেকোনো সময় প্রশ্ন করতে দ্বিধা করবেন না!
+
+### 7\. কীভাবে নিরাপদ, গ্যাস-অপ্টিমাইজড এবং প্রাইভেট লেনদেন পাঠাবেন? {#how-to-send-secure-gas-optimized-and-private-transactions}
+
+- [Alchemy-এর Transact API-এর একটি স্যুট রয়েছে](https://docs.alchemy.com/reference/transact-api-quickstart)। আপনি এগুলো ব্যবহার করে রিইনফোর্সড লেনদেন পাঠাতে, লেনদেন হওয়ার আগে সিমুলেট করতে, প্রাইভেট লেনদেন পাঠাতে এবং গ্যাস-অপ্টিমাইজড লেনদেন পাঠাতে পারেন।
+- আপনার লেনদেন মেমপুল থেকে টেনে নিয়ে চেইনে যুক্ত করা হলে সতর্ক হওয়ার জন্য আপনি [Notify API](https://docs.alchemy.com/docs/alchemy-notify) ব্যবহার করতে পারেন।
+
+**নোট:** এই গাইডের জন্য একটি Alchemy একাউন্ট, একটি ইথিরিয়াম এডড্রেস বা MetaMask ওয়ালেট, NodeJs এবং npm ইনস্টল করা প্রয়োজন। যদি না থাকে, তবে এই ধাপগুলো অনুসরণ করুন:
+
+1. [একটি বিনামূল্যের Alchemy একাউন্ট তৈরি করুন](https://auth.alchemyapi.io/signup)
+2. [MetaMask একাউন্ট তৈরি করুন](https://metamask.io/) (বা একটি ইথিরিয়াম এডড্রেস পান)
+3. [NodeJs এবং NPM ইনস্টল করতে এই ধাপগুলো অনুসরণ করুন](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs)
+
+## আপনার লেনদেন পাঠানোর ধাপসমূহ {#steps-to-sending-your-transaction}
+
+### 1\. Sepolia টেস্টনেট-এ একটি Alchemy অ্যাপ তৈরি করুন {#create-an-alchemy-app-on-the-sepolia-testnet}
+
+আপনার [Alchemy Dashboard](https://dashboard.alchemyapi.io/)-এ যান এবং আপনার নেটওয়ার্ক-এর জন্য Sepolia (বা অন্য কোনো টেস্টনেট) বেছে নিয়ে একটি নতুন অ্যাপ তৈরি করুন।
+
+### 2\. Sepolia ফাসেট থেকে ETH অনুরোধ করুন {#request-eth-from-sepolia-faucet}
+
+ETH পেতে [Alchemy Sepolia ফাসেট](https://www.sepoliafaucet.com/)-এর নির্দেশাবলী অনুসরণ করুন। নিশ্চিত করুন যে আপনি আপনার **Sepolia** ইথিরিয়াম এডড্রেস (MetaMask থেকে) অন্তর্ভুক্ত করেছেন এবং অন্য কোনো নেটওয়ার্ক নয়। নির্দেশাবলী অনুসরণ করার পর, আপনার ওয়ালেট-এ ETH পেয়েছেন কিনা তা দুবার চেক করুন।
+
+### 3\. একটি নতুন প্রজেক্ট ডিরেক্টরি তৈরি করুন এবং এতে `cd` করুন {#create-a-new-project-direction}
+
+কমান্ড লাইন (ম্যাকের জন্য টার্মিনাল) থেকে একটি নতুন প্রজেক্ট ডিরেক্টরি তৈরি করুন এবং এতে নেভিগেট করুন:
+
+```
+mkdir sendtx-example
+cd sendtx-example
+```
+
+### 4\. Alchemy Web3 (বা যেকোনো ওয়েব3 লাইব্রেরি) ইনস্টল করুন {#install-alchemy-web3}
+
+[Alchemy Web3](https://docs.alchemy.com/reference/api-overview) ইনস্টল করতে আপনার প্রজেক্ট ডিরেক্টরিতে নিচের কমান্ডটি রান করুন:
+
+মনে রাখবেন, আপনি যদি ethers.js লাইব্রেরি ব্যবহার করতে চান, তবে [এখানকার নির্দেশাবলী অনুসরণ করুন](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum)।
+
+```
+npm install @alch/alchemy-web3
+```
+
+### 5\. dotenv ইনস্টল করুন {#install-dotenv}
+
+আমরা আমাদের API কি এবং প্রাইভেট কি নিরাপদে সংরক্ষণ করতে একটি `.env` ফাইল ব্যবহার করব।
+
+```
+npm install dotenv --save
+```
+
+### 6\. `.env` ফাইল তৈরি করুন {#create-the-dotenv-file}
+
+আপনার প্রজেক্ট ডিরেক্টরিতে একটি `.env` ফাইল তৈরি করুন এবং নিচের বিষয়গুলো যোগ করুন ("`your-api-url`" এবং "`your-private-key`" প্রতিস্থাপন করে)
+
+- আপনার Alchemy API URL খুঁজে পেতে, আপনার ড্যাশবোর্ডে সদ্য তৈরি করা অ্যাপের অ্যাপ ডিটেইলস পেজে যান, উপরের ডানদিকের কোণায় "View Key"-তে ক্লিক করুন এবং HTTP URL-টি নিন।
+- MetaMask ব্যবহার করে আপনার প্রাইভেট কি খুঁজে পেতে, এই [গাইডটি](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) দেখুন।
+
+```
+API_URL = "your-api-url"
+PRIVATE_KEY = "your-private-key"
+```
+
+
+
+
+.env কমিট করবেন না! দয়া করে নিশ্চিত করুন যে আপনি কখনোই আপনার .env ফাইলটি কারো সাথে শেয়ার বা প্রকাশ করবেন না, কারণ এমনটি করলে আপনি আপনার গোপনীয়তা বিপন্ন করছেন। আপনি যদি ভার্সন কন্ট্রোল ব্যবহার করেন, তবে আপনার .env ফাইলটি একটি gitignore ফাইলে যোগ করুন।
+
+
+
+
+### 7\. `sendTx.js` ফাইল তৈরি করুন {#create-sendtx-js}
+
+দারুণ, এখন যেহেতু আমাদের সংবেদনশীল ডেটা একটি `.env` ফাইলে সুরক্ষিত আছে, চলুন কোডিং শুরু করি। আমাদের লেনদেন পাঠানোর উদাহরণের জন্য, আমরা Sepolia ফাসেট-এ ETH ফেরত পাঠাব।
+
+একটি `sendTx.js` ফাইল তৈরি করুন, যেখানে আমরা আমাদের উদাহরণ লেনদেন কনফিগার করব এবং পাঠাব, এবং এতে নিচের কোড লাইনগুলো যোগ করুন:
+
+```
+async function main() {
+ require('dotenv').config();
+ const { API_URL, PRIVATE_KEY } = process.env;
+ const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
+ const web3 = createAlchemyWeb3(API_URL);
+ const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address
+
+ const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0
+
+ const transaction = {
+ 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth
+ 'value': 1000000000000000000, // 1 ETH
+ 'gas': 30000,
+ 'nonce': nonce,
+ // optional data field to send message or execute smart contract
+ };
+
+ const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
+
+ web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
+ if (!error) {
+ console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
+ } else {
+ console.log("❗Something went wrong while submitting your transaction:", error)
+ }
+ });
+}
+
+main();
+```
+
+**লাইন 6**-এর এডড্রেসটি আপনার নিজের পাবলিক এডড্রেস দিয়ে প্রতিস্থাপন করতে ভুলবেন না।
+
+এখন, এই কোডটি রান করার আগে, চলুন এখানকার কিছু উপাদান নিয়ে কথা বলি।
+
+- `nonce` : নন্স স্পেসিফিকেশন আপনার এডড্রেস থেকে পাঠানো লেনদেনের সংখ্যার ট্র্যাক রাখতে ব্যবহৃত হয়। নিরাপত্তার উদ্দেশ্যে এবং [রিপ্লে অ্যাটাক](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce) প্রতিরোধ করতে আমাদের এটি প্রয়োজন। আপনার এডড্রেস থেকে পাঠানো লেনদেনের সংখ্যা পেতে আমরা [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount) ব্যবহার করি।
+- `transaction`: লেনদেন অবজেক্টের কয়েকটি দিক রয়েছে যা আমাদের নির্দিষ্ট করতে হবে
+ - `to`: এটি হলো সেই এডড্রেস যেখানে আমরা ETH পাঠাতে চাই। এই ক্ষেত্রে, আমরা যে [Sepolia ফাসেট](https://sepoliafaucet.com/) থেকে প্রাথমিকভাবে অনুরোধ করেছিলাম সেখানে ETH ফেরত পাঠাচ্ছি।
+ - `value`: এটি হলো সেই পরিমাণ যা আমরা পাঠাতে চাই, যা Wei-তে নির্দিষ্ট করা হয় যেখানে 10^18 Wei = 1 ETH
+ - `gas`: আপনার লেনদেনের সাথে সঠিক পরিমাণ গ্যাস অন্তর্ভুক্ত করার অনেক উপায় রয়েছে। এমনকি Alchemy-এর একটি [গ্যাস প্রাইস ওয়েবহুক](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1) রয়েছে যা গ্যাস প্রাইস একটি নির্দিষ্ট সীমার নিচে নেমে গেলে আপনাকে অবহিত করে। মেইননেট লেনদেনের জন্য, সঠিক পরিমাণ গ্যাস নির্ধারণ করতে [ETH Gas Station](https://ethgasstation.info/)-এর মতো একটি গ্যাস এস্টিমেটর চেক করা ভালো অভ্যাস। 21000 হলো ইথিরিয়ামে একটি অপারেশনে ব্যবহৃত ন্যূনতম গ্যাস, তাই আমাদের লেনদেনটি এক্সিকিউট হবে তা নিশ্চিত করতে আমরা এখানে 30000 দিয়েছি।
+ - `nonce`: উপরের নন্স সংজ্ঞা দেখুন। নন্স শূন্য থেকে গণনা শুরু করে।
+ - [OPTIONAL] data: আপনার ট্রান্সফারের সাথে অতিরিক্ত তথ্য পাঠাতে, বা একটি স্মার্ট কন্ট্রাক্ট কল করতে ব্যবহৃত হয়, ব্যালেন্স ট্রান্সফারের জন্য প্রয়োজনীয় নয়, নিচের নোটটি দেখুন।
+- `signedTx`: আমাদের লেনদেন অবজেক্ট সাইন করতে আমরা আমাদের `PRIVATE_KEY`-এর সাথে `signTransaction` মেথড ব্যবহার করব।
+- `sendSignedTransaction`: একবার আমাদের কাছে একটি সাইন করা লেনদেন থাকলে, আমরা `sendSignedTransaction` ব্যবহার করে এটিকে পরবর্তী একটি ব্লক-এ অন্তর্ভুক্ত করার জন্য পাঠাতে পারি।
+
+**ডেটা সম্পর্কিত একটি নোট**
+ইথিরিয়ামে প্রধানত দুই ধরনের লেনদেন পাঠানো যায়।
+
+- ব্যালেন্স ট্রান্সফার: এক এডড্রেস থেকে অন্য এডড্রেস-এ ETH পাঠান। কোনো ডেটা ফিল্ডের প্রয়োজন নেই, তবে, আপনি যদি আপনার লেনদেনের পাশাপাশি অতিরিক্ত তথ্য পাঠাতে চান, তবে আপনি এই ফিল্ডে HEX ফরম্যাটে সেই তথ্য অন্তর্ভুক্ত করতে পারেন।
+ - উদাহরণস্বরূপ, ধরুন আমরা একটি IPFS ডকুমেন্টের হ্যাস ইথিরিয়াম চেইনে লিখতে চাই যাতে এটিকে একটি ইমমিউটেবল টাইমস্ট্যাম্প দেওয়া যায়। তাহলে আমাদের ডেটা ফিল্ডটি দেখতে এমন হওয়া উচিত: `web3.utils.toHex(‘IPFS hash‘)`। এবং এখন যে কেউ চেইনে কোয়েরি করতে পারে এবং দেখতে পারে কখন সেই ডকুমেন্টটি যোগ করা হয়েছিল।
+- স্মার্ট কন্ট্রাক্ট লেনদেন: চেইনে কিছু স্মার্ট কন্ট্রাক্ট কোড এক্সিকিউট করুন। এই ক্ষেত্রে, ডেটা ফিল্ডে আপনার এক্সিকিউট করতে চাওয়া স্মার্ট ফাংশন এবং যেকোনো প্যারামিটার থাকা উচিত।
+ - একটি ব্যবহারিক উদাহরণের জন্য, এই [হ্যালো ওয়ার্ল্ড টিউটোরিয়াল](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction)-এর ধাপ 8 দেখুন।
+
+### 8\. `node sendTx.js` ব্যবহার করে কোডটি রান করুন {#run-the-code-using-node-sendtx-js}
+
+আপনার টার্মিনাল বা কমান্ড লাইনে ফিরে যান এবং রান করুন:
+
+```
+node sendTx.js
+```
+
+### 9\. মেমপুলে আপনার লেনদেন দেখুন {#see-your-transaction-in-the-mempool}
+
+আপনার Alchemy ড্যাশবোর্ডে [Mempool পেজটি](https://dashboard.alchemyapi.io/mempool) খুলুন এবং আপনার লেনদেনটি খুঁজে পেতে আপনার তৈরি করা অ্যাপ দিয়ে ফিল্টার করুন। এখানেই আমরা আমাদের লেনদেনটিকে পেন্ডিং স্টেট থেকে মাইন্ড স্টেট-এ (যদি সফল হয়) বা ব্যর্থ হলে ড্রপড স্টেট-এ রূপান্তরিত হতে দেখতে পারি। নিশ্চিত করুন যে এটি "All"-এ রাখা আছে যাতে আপনি "mined", "pending" এবং "dropped" লেনদেনগুলো ক্যাপচার করতে পারেন। আপনি `0x31b98d14007bdee637298086988a0bbd31184523` এডড্রেস-এ পাঠানো লেনদেনগুলো খুঁজেও আপনার লেনদেনটি সার্চ করতে পারেন।
+
+একবার আপনি আপনার লেনদেনটি খুঁজে পেলে এর বিস্তারিত দেখতে, tx হ্যাস নির্বাচন করুন, যা আপনাকে এমন একটি ভিউতে নিয়ে যাবে:
+
+
+
+সেখান থেকে আপনি লাল বৃত্তাকার আইকনে ক্লিক করে Etherscan-এ আপনার লেনদেনটি দেখতে পারেন!
+
+**ইয়াপ্পি! আপনি এইমাত্র Alchemy ব্যবহার করে আপনার প্রথম ইথিরিয়াম লেনদেন পাঠিয়েছেন 🎉**
+
+_এই গাইড সম্পর্কে মতামত এবং পরামর্শের জন্য, দয়া করে Alchemy-এর [Discord](https://discord.gg/A39JVCM)-এ এলানকে মেসেজ করুন!_
+
+_মূলত [https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy](https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy)-এ প্রকাশিত_
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/server-components/index.md b/public/content/translations/bn/developers/tutorials/server-components/index.md
new file mode 100644
index 00000000000..d0748fdbbb3
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/server-components/index.md
@@ -0,0 +1,295 @@
+---
+title: "ওয়েব3 অ্যাপের জন্য সার্ভার কম্পোনেন্ট এবং এজেন্ট"
+description: এই টিউটোরিয়ালটি পড়ার পর, আপনি এমন টাইপস্ক্রিপ্ট (TypeScript) সার্ভার লিখতে পারবেন যা ব্লকচেইনের ইভেন্টগুলো শোনে এবং সেই অনুযায়ী নিজস্ব লেনদেনের মাধ্যমে সাড়া দেয়। এটি আপনাকে সেন্ট্রালাইজড অ্যাপ্লিকেশন লিখতে সক্ষম করবে (কারণ সার্ভারটি একটি পয়েন্ট অফ ফেইলিওর), তবে এটি ওয়েব3 এনটিটিগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারে। একই কৌশল ব্যবহার করে এমন একটি এজেন্টও লেখা যেতে পারে যা মানুষের হস্তক্ষেপ ছাড়াই অনচেইন ইভেন্টগুলোতে সাড়া দেয়।
+author: ওরি পোমেরান্টজ
+lang: bn
+tags: ["এজেন্ট", "সার্ভার", "অফচেইন", "ডিএ্যাপস"]
+skill: beginner
+breadcrumb: সার্ভার কম্পোনেন্ট
+published: 2024-07-15
+---
+
+## ভূমিকা {#introduction}
+
+বেশিরভাগ ক্ষেত্রে, একটি ডিসেন্ট্রালাইজড এপ্লিকেশন সফটওয়্যার ডিস্ট্রিবিউট করার জন্য একটি সার্ভার ব্যবহার করে, তবে সমস্ত প্রকৃত ইন্টারঅ্যাকশন ক্লায়েন্ট (সাধারণত, ওয়েব ব্রাউজার) এবং ব্লকচেইনের মধ্যে ঘটে।
+
+
+
+তবে, এমন কিছু ক্ষেত্র রয়েছে যেখানে একটি অ্যাপ্লিকেশন স্বাধীনভাবে চলা সার্ভার কম্পোনেন্ট থেকে উপকৃত হতে পারে। এই ধরনের সার্ভার ইভেন্টগুলোতে এবং অন্যান্য সোর্স (যেমন একটি API) থেকে আসা রিকোয়েস্টগুলোতে লেনদেন ইস্যু করার মাধ্যমে সাড়া দিতে সক্ষম হবে।
+
+
+
+এই ধরনের সার্ভার বেশ কয়েকটি সম্ভাব্য কাজ পূরণ করতে পারে।
+
+- গোপন স্টেটের ধারক। গেমিংয়ের ক্ষেত্রে প্রায়শই গেমের জানা সমস্ত তথ্য খেলোয়াড়দের কাছে উপলব্ধ না রাখা দরকারী। তবে, _ব্লকচেইনে কোনো গোপনীয়তা নেই_, ব্লকচেইনে থাকা যেকোনো তথ্য যে কারো পক্ষে বের করা সহজ। অতএব, যদি গেম স্টেটের কোনো অংশ গোপন রাখতে হয়, তবে এটি অন্য কোথাও সংরক্ষণ করতে হবে (এবং সম্ভবত [জিরো-নলেজ প্রুফ](/zero-knowledge-proofs) ব্যবহার করে সেই স্টেটের প্রভাবগুলো যাচাই করতে হবে)।
+
+- সেন্ট্রালাইজড ওরাকল। যদি ঝুঁকি যথেষ্ট কম হয়, তবে একটি এক্সটার্নাল সার্ভার যা অনলাইনে কিছু তথ্য পড়ে এবং তারপর চেইনে পোস্ট করে, তা একটি [ওরাকল](/developers/docs/oracles/) হিসেবে ব্যবহার করার জন্য যথেষ্ট ভালো হতে পারে।
+
+- এজেন্ট। ব্লকচেইনে কোনো লেনদেন ছাড়া কিছুই সক্রিয় হয় না। সুযোগ এলে একজন ব্যবহারকারীর পক্ষে [আর্বিট্রেজ](/developers/docs/mev/#mev-examples-dex-arbitrage)-এর মতো কাজগুলো সম্পাদন করতে একটি সার্ভার এজেন্ট হিসেবে কাজ করতে পারে।
+
+## নমুনা প্রোগ্রাম {#sample-program}
+
+আপনি [github-এ](https://github.com/qbzzt/20240715-server-component) একটি নমুনা সার্ভার দেখতে পারেন। এই সার্ভারটি [এই কন্ট্রাক্ট](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=contract_code) থেকে আসা ইভেন্টগুলো শোনে, যা Hardhat-এর Greeter-এর একটি পরিবর্তিত সংস্করণ। যখন গ্রিটিং (greeting) পরিবর্তন করা হয়, তখন এটি আবার আগের অবস্থায় ফিরিয়ে আনে।
+
+এটি রান করতে:
+
+1. রিপোজিটরিটি ক্লোন করুন।
+
+ ```sh copy
+ git clone https://github.com/qbzzt/20240715-server-component.git
+ cd 20240715-server-component
+ ```
+
+2. প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করুন। যদি আপনার কাছে এটি আগে থেকে না থাকে, তবে [প্রথমে Node ইনস্টল করুন](https://nodejs.org/en/download/package-manager)।
+
+ ```sh copy
+ npm install
+ ```
+
+3. Holesky টেস্টনেট-এ ETH আছে এমন একটি একাউন্টের প্রাইভেট কি নির্দিষ্ট করতে `.env` এডিট করুন। যদি আপনার Holesky-তে ETH না থাকে, তবে আপনি [এই ফাসেট ব্যবহার করতে পারেন](https://holesky-faucet.pk910.de/)।
+
+ ```sh filename=".env" copy
+ PRIVATE_KEY=0x
+ ```
+
+4. সার্ভারটি চালু করুন।
+
+ ```sh copy
+ npm start
+ ```
+
+5. [একটি ব্লক এক্সপ্লোরার](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=write_contract)-এ যান, এবং প্রাইভেট কি থাকা এডড্রেসটি ছাড়া অন্য একটি এডড্রেস ব্যবহার করে গ্রিটিং পরিবর্তন করুন। দেখুন যে গ্রিটিংটি স্বয়ংক্রিয়ভাবে আগের অবস্থায় ফিরে গেছে।
+
+### এটি কীভাবে কাজ করে? {#how-it-works}
+
+কীভাবে একটি সার্ভার কম্পোনেন্ট লিখতে হয় তা বোঝার সবচেয়ে সহজ উপায় হলো নমুনাটি লাইন বাই লাইন পর্যালোচনা করা।
+
+#### `src/app.ts` {#src-app-ts}
+
+প্রোগ্রামের বেশিরভাগ অংশ [`src/app.ts`](https://github.com/qbzzt/20240715-server-component/blob/main/src/app.ts)-এ রয়েছে।
+
+##### পূর্বশর্ত অবজেক্টগুলো তৈরি করা
+
+```typescript
+import {
+ createPublicClient,
+ createWalletClient,
+ getContract,
+ http,
+ Address,
+} from "viem"
+```
+
+এগুলো হলো আমাদের প্রয়োজনীয় [Viem](https://viem.sh/) এনটিটি, ফাংশন এবং [`Address` টাইপ](https://viem.sh/docs/glossary/types#address)। এই সার্ভারটি [TypeScript](https://www.typescriptlang.org/)-এ লেখা হয়েছে, যা JavaScript-এর একটি এক্সটেনশন এবং এটিকে [স্ট্রংলি টাইপড (strongly typed)](https://en.wikipedia.org/wiki/Strong_and_weak_typing) করে তোলে।
+
+```typescript
+import { privateKeyToAccount } from "viem/accounts"
+```
+
+[এই ফাংশনটি](https://viem.sh/docs/accounts/privateKey) আমাদের একটি প্রাইভেট কি-এর সাথে সম্পর্কিত এডড্রেসসহ ওয়ালেট তথ্য তৈরি করতে দেয়।
+
+```typescript
+import { holesky } from "viem/chains"
+```
+
+Viem-এ একটি ব্লকচেইন ব্যবহার করতে আপনাকে এর ডেফিনিশন ইমপোর্ট করতে হবে। এই ক্ষেত্রে, আমরা [Holesky](https://github.com/eth-clients/holesky) টেস্ট ব্লকচেইনের সাথে কানেক্ট করতে চাই।
+
+```typescript
+// এভাবেই আমরা .env-এ থাকা ডেফিনিশনগুলো process.env-এ যোগ করি।
+import * as dotenv from "dotenv"
+dotenv.config()
+```
+
+এভাবেই আমরা এনভায়রনমেন্টে `.env` রিড করি। প্রাইভেট কি-এর জন্য আমাদের এটি প্রয়োজন (পরে দেখুন)।
+
+```typescript
+const greeterAddress : Address = "0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6"
+const greeterABI = [
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "_greeting",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ .
+ .
+ .
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "_greeting",
+ "type": "string"
+ }
+ ],
+ "name": "setGreeting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+] as const
+```
+
+একটি কন্ট্রাক্ট ব্যবহার করতে আমাদের এর এডড্রেস এবং এর জন্য [ABI](/glossary/#abi) প্রয়োজন। আমরা এখানে উভয়ই প্রদান করেছি।
+
+JavaScript-এ (এবং সেই কারণে TypeScript-এ) আপনি একটি কনস্ট্যান্টে নতুন ভ্যালু অ্যাসাইন করতে পারবেন না, তবে আপনি এতে সংরক্ষিত অবজেক্টটি পরিবর্তন করতে _পারেন_। `as const` সাফিক্স ব্যবহার করে আমরা TypeScript-কে বলছি যে তালিকাটি নিজেই কনস্ট্যান্ট এবং এটি পরিবর্তন করা যাবে না।
+
+```typescript
+const publicClient = createPublicClient({
+ chain: holesky,
+ transport: http(),
+})
+```
+
+একটি Viem [পাবলিক ক্লায়েন্ট](https://viem.sh/docs/clients/public.html) তৈরি করুন। পাবলিক ক্লায়েন্টগুলোর সাথে কোনো প্রাইভেট কি যুক্ত থাকে না, এবং তাই তারা লেনদেন পাঠাতে পারে না। তারা [`view` ফাংশনগুলো](https://www.tutorialspoint.com/solidity/solidity_view_functions.htm) কল করতে পারে, একাউন্ট ব্যালেন্স পড়তে পারে ইত্যাদি।
+
+```typescript
+const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
+```
+
+এনভায়রনমেন্ট ভেরিয়েবলগুলো [`process.env`](https://www.totaltypescript.com/how-to-strongly-type-process-env)-এ উপলব্ধ। তবে, TypeScript হলো স্ট্রংলি টাইপড। একটি এনভায়রনমেন্ট ভেরিয়েবল যেকোনো স্ট্রিং বা খালি হতে পারে, তাই একটি এনভায়রনমেন্ট ভেরিয়েবলের টাইপ হলো `string | undefined`। তবে, Viem-এ একটি কি `0x${string}` (`0x`-এর পরে একটি স্ট্রিং) হিসেবে সংজ্ঞায়িত করা হয়। এখানে আমরা TypeScript-কে বলছি যে `PRIVATE_KEY` এনভায়রনমেন্ট ভেরিয়েবলটি সেই টাইপের হবে। যদি তা না হয়, তবে আমরা একটি রানটাইম এরর পাব।
+
+এরপর [`privateKeyToAccount`](https://viem.sh/docs/accounts/privateKey) ফাংশনটি একটি সম্পূর্ণ একাউন্ট অবজেক্ট তৈরি করতে এই প্রাইভেট কি ব্যবহার করে।
+
+```typescript
+const walletClient = createWalletClient({
+ account,
+ chain: holesky,
+ transport: http(),
+})
+```
+
+এরপর, আমরা একটি [ওয়ালেট ক্লায়েন্ট](https://viem.sh/docs/clients/wallet) তৈরি করতে একাউন্ট অবজেক্টটি ব্যবহার করি। এই ক্লায়েন্টের একটি প্রাইভেট কি এবং একটি এডড্রেস রয়েছে, তাই এটি লেনদেন পাঠাতে ব্যবহার করা যেতে পারে।
+
+```typescript
+const greeter = getContract({
+ address: greeterAddress,
+ abi: greeterABI,
+ client: { public: publicClient, wallet: walletClient },
+})
+```
+
+যেহেতু আমাদের কাছে সমস্ত পূর্বশর্ত রয়েছে, আমরা অবশেষে একটি [কন্ট্রাক্ট ইনস্ট্যান্স](https://viem.sh/docs/contract/getContract) তৈরি করতে পারি। আমরা অনচেইন কন্ট্রাক্টের সাথে যোগাযোগ করতে এই কন্ট্রাক্ট ইনস্ট্যান্সটি ব্যবহার করব।
+
+##### ব্লকচেইন থেকে রিড করা
+
+```typescript
+console.log(`Current greeting:`, await greeter.read.greet())
+```
+
+যে কন্ট্রাক্ট ফাংশনগুলো শুধুমাত্র রিড-অনলি ([`view`](https://www.tutorialspoint.com/solidity/solidity_view_functions.htm) এবং [`pure`](https://www.tutorialspoint.com/solidity/solidity_pure_functions.htm)) সেগুলো `read`-এর অধীনে উপলব্ধ। এই ক্ষেত্রে, আমরা এটি ব্যবহার করে [`greet`](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=read_contract#cfae3217) ফাংশনটি অ্যাক্সেস করি, যা গ্রিটিং রিটার্ন করে।
+
+JavaScript হলো সিঙ্গেল-থ্রেডেড, তাই যখন আমরা একটি দীর্ঘমেয়াদী প্রসেস চালু করি তখন আমাদের [নির্দিষ্ট করতে হবে যে আমরা এটি অ্যাসিনক্রোনাসভাবে (asynchronously) করছি](https://eloquentjavascript.net/11_async.html#h-XvLsfAhtsE)। ব্লকচেইনকে কল করার জন্য, এমনকি একটি রিড-অনলি অপারেশনের জন্যও, কম্পিউটার এবং একটি ব্লকচেইন নোডের মধ্যে একটি রাউন্ড-ট্রিপ প্রয়োজন। এই কারণেই আমরা এখানে নির্দিষ্ট করি যে কোডটিকে ফলাফলের জন্য `await` করতে হবে।
+
+এটি কীভাবে কাজ করে সে সম্পর্কে আপনি আগ্রহী হলে [এখানে পড়তে পারেন](https://www.w3schools.com/js/js_promise.asp), তবে ব্যবহারিক ক্ষেত্রে আপনার শুধু এটুকুই জানা দরকার যে আপনি যদি এমন কোনো অপারেশন শুরু করেন যা দীর্ঘ সময় নেয় তবে আপনাকে ফলাফলের জন্য `await` করতে হবে, এবং যে কোনো ফাংশন যা এটি করে তাকে `async` হিসেবে ডিক্লেয়ার করতে হবে।
+
+##### লেনদেন ইস্যু করা
+
+```typescript
+const setGreeting = async (greeting: string): Promise => {
+```
+
+গ্রিটিং পরিবর্তন করে এমন একটি লেনদেন ইস্যু করতে আপনি এই ফাংশনটি কল করবেন। যেহেতু এটি একটি দীর্ঘ অপারেশন, তাই ফাংশনটিকে `async` হিসেবে ডিক্লেয়ার করা হয়েছে। ইন্টারনাল ইমপ্লিমেন্টেশনের কারণে, যেকোনো `async` ফাংশনকে একটি `Promise` অবজেক্ট রিটার্ন করতে হয়। এই ক্ষেত্রে, `Promise` এর অর্থ হলো আমরা নির্দিষ্ট করছি না যে `Promise`-এ ঠিক কী রিটার্ন করা হবে।
+
+```typescript
+const txHash = await greeter.write.setGreeting([greeting])
+```
+
+কন্ট্রাক্ট ইনস্ট্যান্সের `write` ফিল্ডে এমন সমস্ত ফাংশন রয়েছে যা ব্লকচেইন স্টেটে রাইট করে (যেগুলোর জন্য একটি লেনদেন পাঠানো প্রয়োজন), যেমন [`setGreeting`](https://eth-holesky.blockscout.com/address/0xB8f6460Dc30c44401Be26B0d6eD250873d8a50A6?tab=write_contract#a4136862)। প্যারামিটারগুলো, যদি থাকে, একটি তালিকা হিসেবে প্রদান করা হয় এবং ফাংশনটি লেনদেনের হ্যাস রিটার্ন করে।
+
+```typescript
+ console.log(`Working on a fix, see https://eth-holesky.blockscout.com/tx/${txHash}`)
+
+ return txHash
+}
+```
+
+লেনদেনের হ্যাস রিপোর্ট করুন (এটি দেখার জন্য ব্লক এক্সপ্লোরারের একটি URL-এর অংশ হিসেবে) এবং এটি রিটার্ন করুন।
+
+##### ইভেন্টগুলোতে সাড়া দেওয়া
+
+```typescript
+greeter.watchEvent.SetGreeting({
+```
+
+[`watchEvent` ফাংশনটি](https://viem.sh/docs/actions/public/watchEvent) আপনাকে নির্দিষ্ট করতে দেয় যে একটি ইভেন্ট এমিট (emit) হলে একটি ফাংশন রান করবে। আপনি যদি শুধুমাত্র এক ধরনের ইভেন্ট নিয়ে কাজ করতে চান (এই ক্ষেত্রে, `SetGreeting`), তবে আপনি নিজেকে সেই ইভেন্ট টাইপের মধ্যে সীমাবদ্ধ রাখতে এই সিনট্যাক্সটি ব্যবহার করতে পারেন।
+
+```typescript
+ onLogs: logs => {
+```
+
+লগ এন্ট্রি থাকলে `onLogs` ফাংশনটি কল করা হয়। ইথিরিয়ামে "লগ" এবং "ইভেন্ট" সাধারণত একে অপরের পরিপূরক হিসেবে ব্যবহৃত হয়।
+
+```typescript
+console.log(
+ `Address ${logs[0].args.sender} changed the greeting to ${logs[0].args.greeting}`
+)
+```
+
+একাধিক ইভেন্ট থাকতে পারে, তবে সরলতার জন্য আমরা শুধুমাত্র প্রথমটি নিয়ে কাজ করি। `logs[0].args` হলো ইভেন্টের আর্গুমেন্ট, এই ক্ষেত্রে `sender` এবং `greeting`।
+
+```typescript
+ if (logs[0].args.sender != account.address)
+ setGreeting(`${account.address} insists on it being Hello!`)
+ }
+})
+```
+
+যদি সেন্ডার এই সার্ভার _না_ হয়, তবে গ্রিটিং পরিবর্তন করতে `setGreeting` ব্যবহার করুন।
+
+#### `package.json` {#package-json}
+
+[এই ফাইলটি](https://github.com/qbzzt/20240715-server-component/blob/main/package.json) [Node.js](https://nodejs.org/en) কনফিগারেশন নিয়ন্ত্রণ করে। এই আর্টিকেলে শুধুমাত্র গুরুত্বপূর্ণ ডেফিনিশনগুলো ব্যাখ্যা করা হয়েছে।
+
+```json
+{
+ "main": "dist/index.js",
+```
+
+এই ডেফিনিশনটি নির্দিষ্ট করে যে কোন JavaScript ফাইলটি রান করতে হবে।
+
+```json
+ "scripts": {
+ "start": "tsc && node dist/app.js",
+ },
+```
+
+স্ক্রিপ্টগুলো হলো বিভিন্ন অ্যাপ্লিকেশন অ্যাকশন। এই ক্ষেত্রে, আমাদের কাছে শুধুমাত্র `start` রয়েছে, যা কম্পাইল করে এবং তারপর সার্ভারটি রান করে। `tsc` কমান্ডটি `typescript` প্যাকেজের অংশ এবং এটি TypeScript-কে JavaScript-এ কম্পাইল করে। আপনি যদি এটি ম্যানুয়ালি রান করতে চান, তবে এটি `node_modules/.bin`-এ অবস্থিত। দ্বিতীয় কমান্ডটি সার্ভার রান করে।
+
+```json
+ "type": "module",
+```
+
+একাধিক ধরনের JavaScript নোড অ্যাপ্লিকেশন রয়েছে। `module` টাইপটি আমাদের টপ লেভেল কোডে `await` ব্যবহার করতে দেয়, যা ধীরগতির (এবং অ্যাসিনক্রোনাস) অপারেশন করার সময় গুরুত্বপূর্ণ।
+
+```json
+ "devDependencies": {
+ "@types/node": "^20.14.2",
+ "typescript": "^5.4.5"
+ },
+```
+
+এগুলো এমন প্যাকেজ যা শুধুমাত্র ডেভেলপমেন্টের জন্য প্রয়োজন। এখানে আমাদের `typescript` প্রয়োজন এবং যেহেতু আমরা এটি Node.js-এর সাথে ব্যবহার করছি, তাই আমরা নোড ভেরিয়েবল এবং অবজেক্টগুলোর (যেমন `process`) টাইপও পাচ্ছি। [`^` নোটেশন](https://github.com/npm/node-semver?tab=readme-ov-file#caret-ranges-123-025-004)-এর অর্থ হলো সেই সংস্করণ বা তার চেয়ে উচ্চতর সংস্করণ যাতে কোনো ব্রেকিং চেঞ্জ নেই। সংস্করণ নম্বরগুলোর অর্থ সম্পর্কে আরও তথ্যের জন্য [এখানে](https://semver.org) দেখুন।
+
+```json
+ "dependencies": {
+ "dotenv": "^16.4.5",
+ "viem": "2.14.1"
+ }
+}
+```
+
+এগুলো এমন প্যাকেজ যা রানটাইমে প্রয়োজন, যখন `dist/app.js` রান করা হয়।
+
+## উপসংহার {#conclusion}
+
+আমরা এখানে যে সেন্ট্রালাইজড সার্ভারটি তৈরি করেছি তা তার কাজ করে, যা হলো একজন ব্যবহারকারীর জন্য এজেন্ট হিসেবে কাজ করা। অন্য যে কেউ যদি চায় যে ডিএ্যাপটি কাজ করতে থাকুক এবং গ্যাস খরচ করতে ইচ্ছুক হয়, তবে তারা তাদের নিজস্ব এডড্রেস দিয়ে সার্ভারের একটি নতুন ইনস্ট্যান্স রান করতে পারে।
+
+তবে, এটি শুধুমাত্র তখনই কাজ করে যখন সেন্ট্রালাইজড সার্ভারের কাজগুলো সহজেই যাচাই করা যায়। যদি সেন্ট্রালাইজড সার্ভারে কোনো গোপন স্টেট তথ্য থাকে, বা কঠিন ক্যালকুলেশন চালায়, তবে এটি এমন একটি সেন্ট্রালাইজড এনটিটি হয়ে যায় যাকে অ্যাপ্লিকেশনটি ব্যবহার করার জন্য আপনার বিশ্বাস করতে হবে, যা ব্লকচেইনগুলো এড়াতে চেষ্টা করে। ভবিষ্যতের একটি আর্টিকেলে আমি দেখানোর পরিকল্পনা করছি কীভাবে এই সমস্যাটি কাটিয়ে উঠতে [জিরো-নলেজ প্রুফ](/zero-knowledge-proofs) ব্যবহার করা যায়।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/bn/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
new file mode 100644
index 00000000000..8eede8d67b0
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -0,0 +1,93 @@
+---
+title: জাভাস্ক্রিপ্টে ইথিরিয়াম ব্লকচেইন ব্যবহার করতে web3.js সেট আপ করুন
+description: জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন থেকে ইথিরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে কীভাবে web3.js লাইব্রেরি সেট আপ এবং কনফিগার করতে হয় তা শিখুন।
+author: "jdourlens"
+tags: ["web3.js", "javascript"]
+skill: beginner
+breadcrumb: web3.js সেটআপ
+lang: bn
+published: 2020-04-11
+source: EthereumDev
+sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in-javascript/
+address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
+---
+
+এই টিউটোরিয়ালে, আমরা দেখব কীভাবে ইথিরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে [web3.js](https://web3js.readthedocs.io/)-এর ব্যবহার শুরু করা যায়। Web3.js ফ্রন্টএন্ড এবং ব্যাকএন্ড উভয় ক্ষেত্রেই ব্লকচেইন থেকে ডেটা পড়তে বা লেনদেন করতে এবং এমনকি স্মার্ট কন্ট্রাক্ট ডিপ্লয় করতে ব্যবহার করা যেতে পারে।
+
+প্রথম ধাপ হলো আপনার প্রজেক্টে web3.js অন্তর্ভুক্ত করা। একটি ওয়েব পেজে এটি ব্যবহার করতে, আপনি JSDeliver-এর মতো একটি CDN ব্যবহার করে সরাসরি লাইব্রেরিটি ইমপোর্ট করতে পারেন।
+
+```html
+
+```
+
+আপনি যদি আপনার ব্যাকএন্ড বা বিল্ড ব্যবহার করে এমন কোনো ফ্রন্টএন্ড প্রজেক্টে ব্যবহারের জন্য লাইব্রেরিটি ইনস্টল করতে পছন্দ করেন, তবে আপনি npm ব্যবহার করে এটি ইনস্টল করতে পারেন:
+
+```bash
+npm install web3 --save
+```
+
+এরপর একটি Node.js স্ক্রিপ্ট বা Browserify ফ্রন্টএন্ড প্রজেক্টে Web3.js ইমপোর্ট করতে, আপনি জাভাস্ক্রিপ্টের নিচের লাইনটি ব্যবহার করতে পারেন:
+
+```js
+const Web3 = require("web3")
+```
+
+এখন যেহেতু আমরা প্রজেক্টে লাইব্রেরিটি অন্তর্ভুক্ত করেছি, আমাদের এটি ইনিশিয়ালাইজ করতে হবে। আপনার প্রজেক্টকে ব্লকচেইনের সাথে যোগাযোগ করতে সক্ষম হতে হবে। বেশিরভাগ ইথিরিয়াম লাইব্রেরি RPC কলের মাধ্যমে একটি [নোড](/developers/docs/nodes-and-clients/)-এর সাথে যোগাযোগ করে। আমাদের Web3 প্রোভাইডার শুরু করতে, আমরা প্রোভাইডারের URL-কে কনস্ট্রাক্টর হিসেবে পাস করে একটি Web3 ইনস্ট্যান্স তৈরি করব। আপনার কম্পিউটারে যদি কোনো নোড বা [ganache ইনস্ট্যান্স চালু থাকে](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/), তবে এটি দেখতে এমন হবে:
+
+```js
+const web3 = new Web3("http://localhost:8545")
+```
+
+আপনি যদি সরাসরি কোনো হোস্টেড নোড অ্যাক্সেস করতে চান, তবে আপনি [নোডস অ্যাজ আ সার্ভিস](/developers/docs/nodes-and-clients/nodes-as-a-service)-এ বিকল্পগুলো খুঁজে পেতে পারেন।
+
+```js
+const web3 = new Web3("https://cloudflare-eth.com")
+```
+
+আমরা আমাদের Web3 ইনস্ট্যান্সটি সঠিকভাবে কনফিগার করেছি কিনা তা পরীক্ষা করতে, আমরা `getBlockNumber` ফাংশন ব্যবহার করে সর্বশেষ ব্লক নম্বরটি পুনরুদ্ধার করার চেষ্টা করব। এই ফাংশনটি প্যারামিটার হিসেবে একটি কলব্যাক গ্রহণ করে এবং ব্লক নম্বরটি একটি ইন্টিজার হিসেবে রিটার্ন করে।
+
+```js
+var Web3 = require("web3")
+const web3 = new Web3("https://cloudflare-eth.com")
+
+web3.eth.getBlockNumber(function (error, result) {
+ console.log(result)
+})
+```
+
+আপনি যদি এই প্রোগ্রামটি এক্সিকিউট করেন, তবে এটি কেবল সর্বশেষ ব্লক নম্বরটি প্রিন্ট করবে: ব্লকচেইনের শীর্ষভাগ। আপনার কোডে নেস্টিং কলব্যাক এড়াতে আপনি `await/async` ফাংশন কলও ব্যবহার করতে পারেন:
+
+```js
+async function getBlockNumber() {
+ const latestBlockNumber = await web3.eth.getBlockNumber()
+ console.log(latestBlockNumber)
+ return latestBlockNumber
+}
+
+getBlockNumber()
+```
+
+আপনি Web3 ইনস্ট্যান্সে উপলব্ধ সমস্ত ফাংশন [অফিসিয়াল web3.js ডকুমেন্টেশনে](https://docs.web3js.org/) দেখতে পারেন।
+
+বেশিরভাগ Web3 লাইব্রেরি অ্যাসিনক্রোনাস হয় কারণ ব্যাকগ্রাউন্ডে লাইব্রেরিটি নোডে JSON-RPC কল করে যা ফলাফল ফেরত পাঠায়।
+
+
+
+আপনি যদি ব্রাউজারে কাজ করেন, তবে কিছু ওয়ালেট সরাসরি একটি Web3 ইনস্ট্যান্স ইনজেক্ট করে এবং আপনার যখনই সম্ভব এটি ব্যবহার করার চেষ্টা করা উচিত, বিশেষ করে যদি আপনি লেনদেন করার জন্য ব্যবহারকারীর ইথিরিয়াম এডড্রেস-এর সাথে ইন্টারঅ্যাক্ট করার পরিকল্পনা করেন।
+
+এখানে একটি স্নীপেট দেওয়া হলো যা শনাক্ত করবে যে MetaMask ওয়ালেট উপলব্ধ আছে কিনা এবং থাকলে এটি চালু করার চেষ্টা করবে। এটি পরবর্তীতে আপনাকে ব্যবহারকারীর ব্যালেন্স পড়তে এবং ইথিরিয়াম ব্লকচেইনে আপনি তাদের দিয়ে যে লেনদেনগুলো করাতে চান তা যাচাই করতে সক্ষম করবে:
+
+```js
+if (window.ethereum != null) {
+ state.web3 = new Web3(window.ethereum)
+ try {
+ // প্রয়োজন হলে অ্যাকাউন্ট অ্যাক্সেসের অনুরোধ করুন
+ await window.ethereum.enable()
+ // অ্যাকাউন্টগুলো এখন উন্মুক্ত
+ } catch (error) {
+ // ব্যবহারকারী অ্যাকাউন্ট অ্যাক্সেস প্রত্যাখ্যান করেছেন...
+ }
+}
+```
+
+web3.js-এর বিকল্প যেমন [Ethers.js](https://docs.ethers.io/)-ও রয়েছে এবং এগুলোও সাধারণত ব্যবহৃত হয়। পরবর্তী টিউটোরিয়ালে আমরা দেখব [কীভাবে ব্লকচেইনে নতুন আসা ব্লকস সহজে শোনা যায় এবং সেগুলোতে কী আছে তা দেখা যায়](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/short-abi/index.md b/public/content/translations/bn/developers/tutorials/short-abi/index.md
new file mode 100644
index 00000000000..a24f7fa9798
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/short-abi/index.md
@@ -0,0 +1,523 @@
+---
+title: "কলডাটা অপ্টিমাইজেশনের জন্য শর্ট ABI"
+description: অপ্টিমেস্টিক রোলআপ এর জন্য স্মার্ট কন্ট্রাক্ট অপ্টিমাইজ করা
+author: ওরি পোমেরান্টজ
+lang: bn
+tags: ["লেয়ার ২"]
+skill: intermediate
+breadcrumb: শর্ট ABI
+published: 2022-04-01
+---
+
+## ভূমিকা {#introduction}
+
+এই আর্টিকেলে, আপনি [অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups), সেগুলোতে লেনদেন এর খরচ এবং কীভাবে সেই ভিন্ন খরচের কাঠামোর কারণে ইথিরিয়াম মেইননেট এর চেয়ে ভিন্ন কিছুর জন্য আমাদের অপ্টিমাইজ করতে হয় সে সম্পর্কে জানবেন। আপনি কীভাবে এই অপ্টিমাইজেশন বাস্তবায়ন করতে হয় তাও শিখবেন।
+
+### পূর্ণ প্রকাশ {#full-disclosure}
+
+আমি [Optimism](https://www.optimism.io/)-এর একজন পূর্ণকালীন কর্মী, তাই এই আর্টিকেলের উদাহরণগুলো Optimism-এ চলবে। তবে, এখানে ব্যাখ্যা করা কৌশলটি অন্যান্য রোলআপ এর জন্যও একইভাবে কাজ করা উচিত।
+
+### পরিভাষা {#terminology}
+
+রোলআপ নিয়ে আলোচনা করার সময়, 'layer 1' (L1) শব্দটি মেইননেট, অর্থাৎ প্রোডাকশন ইথিরিয়াম নেটওয়ার্কের জন্য ব্যবহৃত হয়। 'লেয়ার ২' (L2) শব্দটি রোলআপ বা অন্য যেকোনো সিস্টেমের জন্য ব্যবহৃত হয় যা নিরাপত্তার জন্য L1-এর ওপর নির্ভর করে কিন্তু এর বেশিরভাগ প্রসেসিং অফচেইন করে।
+
+## আমরা কীভাবে L2 লেনদেন এর খরচ আরও কমাতে পারি? {#how-can-we-further-reduce-the-cost-of-L2-transactions}
+
+[অপ্টিমেস্টিক রোলআপ](/developers/docs/scaling/optimistic-rollups)-কে প্রতিটি ঐতিহাসিক লেনদেন এর রেকর্ড সংরক্ষণ করতে হয় যাতে যেকেউ সেগুলো যাচাই করে দেখতে পারে যে বর্তমান স্টেট সঠিক কিনা। ইথিরিয়াম মেইননেট-এ ডাটা পাঠানোর সবচেয়ে সস্তা উপায় হলো এটিকে কলডাটা হিসেবে লেখা। এই সমাধানটি [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) এবং [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups) উভয়েই বেছে নিয়েছে।
+
+### L2 লেনদেন এর খরচ {#cost-of-l2-transactions}
+
+L2 লেনদেন এর খরচ দুটি উপাদানের সমন্বয়ে গঠিত:
+
+1. L2 প্রসেসিং, যা সাধারণত অত্যন্ত সস্তা
+2. L1 স্টোরেজ, যা মেইননেট গ্যাস খরচের সাথে যুক্ত
+
+আমি যখন এটি লিখছি, Optimism-এ L2 গ্যাস এর খরচ 0.001 [Gwei](/developers/docs/gas/#pre-london)। অন্যদিকে, L1 গ্যাস এর খরচ প্রায় 40 gwei। [আপনি বর্তমান দামগুলো এখানে দেখতে পারেন](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)।
+
+এক বাইট কলডাটার খরচ হয় 4 গ্যাস (যদি এটি শূন্য হয়) অথবা 16 গ্যাস (যদি এটি অন্য কোনো মান হয়)। EVM-এ সবচেয়ে ব্যয়বহুল কাজগুলোর মধ্যে একটি হলো স্টোরেজে লেখা। L2-তে স্টোরেজে একটি 32-বাইট শব্দ লেখার সর্বোচ্চ খরচ হলো 22100 গ্যাস। বর্তমানে, এটি 22.1 gwei। তাই যদি আমরা কলডাটার একটি মাত্র শূন্য বাইট বাঁচাতে পারি, তবে আমরা স্টোরেজে প্রায় 200 বাইট লিখতে পারব এবং তবুও লাভবান হব।
+
+### ABI {#the-abi}
+
+বেশিরভাগ লেনদেন একটি এক্সটার্নালি ওনড একাউন্ট থেকে একটি কন্ট্রাক্ট অ্যাক্সেস করে। বেশিরভাগ কন্ট্রাক্ট Solidity-তে লেখা হয় এবং [অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI)](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding) অনুযায়ী তাদের ডাটা ফিল্ড ব্যাখ্যা করে।
+
+তবে, ABI ডিজাইন করা হয়েছিল L1-এর জন্য, যেখানে এক বাইট কলডাটার খরচ প্রায় চারটি গাণিতিক অপারেশনের সমান, L2-এর জন্য নয় যেখানে এক বাইট কলডাটার খরচ হাজারেরও বেশি গাণিতিক অপারেশনের সমান। কলডাটা এভাবে বিভক্ত করা হয়:
+
+| সেকশন | দৈর্ঘ্য | বাইট | অপচয় হওয়া বাইট | অপচয় হওয়া গ্যাস | প্রয়োজনীয় বাইট | প্রয়োজনীয় গ্যাস |
+| ------------------- | -----: | ----: | -----------: | ---------: | --------------: | ------------: |
+| ফাংশন সিলেক্টর | 4 | 0-3 | 3 | 48 | 1 | 16 |
+| শূন্য (Zeroes) | 12 | 4-15 | 12 | 48 | 0 | 0 |
+| গন্তব্য এডড্রেস | 20 | 16-35 | 0 | 0 | 20 | 320 |
+| পরিমাণ | 32 | 36-67 | 17 | 64 | 15 | 240 |
+| মোট | 68 | | | 160 | | 576 |
+
+ব্যাখ্যা:
+
+- **ফাংশন সিলেক্টর**: কন্ট্রাক্টে 256-এর কম ফাংশন রয়েছে, তাই আমরা একটি মাত্র বাইট দিয়ে সেগুলোকে আলাদা করতে পারি। এই বাইটগুলো সাধারণত নন-জিরো হয় এবং তাই [ষোল গ্যাস খরচ হয়](https://eips.ethereum.org/EIPS/eip-2028)।
+- **শূন্য (Zeroes)**: এই বাইটগুলো সবসময় শূন্য হয় কারণ একটি বিশ-বাইট এডড্রেস ধারণ করার জন্য বত্রিশ-বাইট শব্দের প্রয়োজন হয় না। শূন্য ধারণকারী বাইটগুলোর খরচ চার গ্যাস ([ইয়েলো পেপার দেখুন](https://ethereum.github.io/yellowpaper/paper.pdf), পরিশিষ্ট G, পৃষ্ঠা 27, `G``txdatazero` এর মান)।
+- **পরিমাণ**: যদি আমরা ধরে নিই যে এই কন্ট্রাক্টে `decimals` হলো আঠারো (স্বাভাবিক মান) এবং আমরা সর্বোচ্চ 1018 টোকেন ট্রান্সফার করব, তবে আমরা সর্বোচ্চ 1036 পরিমাণ পাই। 25615 > 1036, তাই পনেরো বাইটই যথেষ্ট।
+
+L1-এ 160 গ্যাস অপচয় সাধারণত নগণ্য। একটি লেনদেন এর খরচ কমপক্ষে [21,000 গ্যাস](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed), তাই অতিরিক্ত 0.8% কোনো ব্যাপার না। তবে, L2-তে পরিস্থিতি ভিন্ন। লেনদেন এর প্রায় পুরো খরচই হলো এটিকে L1-এ লেখা। লেনদেন কলডাটার পাশাপাশি, 109 বাইটের লেনদেন হেডার (গন্তব্য এডড্রেস, সিগনেচার ইত্যাদি) রয়েছে। তাই মোট খরচ হলো `109*16+576+160=2480`, এবং আমরা এর প্রায় 6.5% অপচয় করছি।
+
+## গন্তব্য আপনার নিয়ন্ত্রণে না থাকলে খরচ কমানো {#reducing-costs-when-you-dont-control-the-destination}
+
+ধরে নিচ্ছি যে গন্তব্য কন্ট্রাক্টের ওপর আপনার কোনো নিয়ন্ত্রণ নেই, তবুও আপনি [এরকম](https://github.com/qbzzt/ethereum.org-20220330-shortABI) একটি সমাধান ব্যবহার করতে পারেন। চলুন প্রাসঙ্গিক ফাইলগুলো দেখে নিই।
+
+### Token.sol {#token-sol}
+
+[এটি হলো গন্তব্য কন্ট্রাক্ট](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol)। এটি একটি স্ট্যান্ডার্ড ERC-20 কন্ট্রাক্ট, যার একটি অতিরিক্ত ফিচার রয়েছে। এই `faucet` ফাংশনটি যেকোনো ব্যবহারকারীকে ব্যবহারের জন্য কিছু টোকেন পেতে দেয়। এটি একটি প্রোডাকশন ERC-20 কন্ট্রাক্টকে অকেজো করে তুলবে, কিন্তু যখন একটি ERC-20 শুধুমাত্র টেস্টিং এর সুবিধার্থে থাকে তখন এটি কাজ সহজ করে দেয়।
+
+```solidity
+ /* *
+ * @dev কলারকে খেলার জন্য 1000 টোকেন দেয় */
+ function faucet() external {
+ _mint(msg.sender, 1000);
+ } // function faucet
+```
+
+### CalldataInterpreter.sol {#calldatainterpreter-sol}
+
+[এটি সেই কন্ট্রাক্ট যাকে লেনদেনগুলো ছোট কলডাটা দিয়ে কল করার কথা](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol)। চলুন এটি লাইন বাই লাইন দেখে নিই।
+
+```solidity
+// SPDX-License-Identifier: Unlicense
+pragma solidity ^0.8.0;
+
+
+import { OrisUselessToken } from "./Token.sol";
+```
+
+এটিকে কীভাবে কল করতে হবে তা জানার জন্য আমাদের টোকেন ফাংশনটি প্রয়োজন।
+
+```solidity
+contract CalldataInterpreter {
+
+ OrisUselessToken public immutable token;
+```
+
+আমরা যে টোকেনের প্রক্সি হিসেবে কাজ করছি তার এডড্রেস।
+
+```solidity
+
+ /* *
+ * @dev টোকেন অ্যাড্রেস নির্দিষ্ট করুন
+ * @param tokenAddr_ ERC-20 কন্ট্রাক্ট অ্যাড্রেস */
+ constructor(
+ address tokenAddr_
+ ) {
+ token = OrisUselessToken(tokenAddr_);
+ } // কনস্ট্রাক্টর
+```
+
+টোকেন এডড্রেস হলো একমাত্র প্যারামিটার যা আমাদের নির্দিষ্ট করতে হবে।
+
+```solidity
+ function calldataVal(uint startByte, uint length)
+ private pure returns (uint) {
+```
+
+কলডাটা থেকে একটি মান পড়ুন।
+
+```solidity
+ uint _retVal;
+
+ require(length < 0x21,
+ "calldataVal length limit is 32 bytes");
+
+ require(length + startByte <= msg.data.length,
+ "calldataVal trying to read beyond calldatasize");
+```
+
+আমরা মেমোরিতে একটি 32-বাইট (256-বিট) শব্দ লোড করতে যাচ্ছি এবং যে বাইটগুলো আমাদের কাঙ্ক্ষিত ফিল্ডের অংশ নয় সেগুলো মুছে ফেলব। এই অ্যালগরিদমটি 32 বাইটের চেয়ে বড় মানের জন্য কাজ করে না, এবং অবশ্যই আমরা কলডাটার শেষের বাইরে পড়তে পারি না। L1-এ গ্যাস বাঁচাতে এই টেস্টগুলো এড়িয়ে যাওয়া প্রয়োজন হতে পারে, কিন্তু L2-তে গ্যাস অত্যন্ত সস্তা, যা আমাদের চিন্তায় আসা যেকোনো স্যানিটি চেক করতে সক্ষম করে।
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+আমরা `fallback()` (নিচে দেখুন) কল থেকে ডাটা কপি করতে পারতাম, কিন্তু EVM-এর অ্যাসেম্বলি ভাষা [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html) ব্যবহার করা সহজ।
+
+এখানে আমরা স্ট্যাকে `startByte` থেকে `startByte+31` বাইট পড়ার জন্য [CALLDATALOAD অপকোড](https://www.evm.codes/#35) ব্যবহার করি। সাধারণভাবে, Yul-এ একটি অপকোডের সিনট্যাক্স হলো `(,...)`।
+
+```solidity
+
+ _retVal = _retVal >> (256-length*8);
+```
+
+শুধুমাত্র সবচেয়ে গুরুত্বপূর্ণ `length` বাইটগুলো ফিল্ডের অংশ, তাই আমরা অন্যান্য মানগুলো থেকে মুক্তি পেতে [রাইট-শিফট](https://en.wikipedia.org/wiki/Logical_shift) করি। এর একটি অতিরিক্ত সুবিধা হলো এটি মানটিকে ফিল্ডের ডানদিকে সরিয়ে দেয়, তাই এটি মান গুণ 256something হওয়ার পরিবর্তে মানটি নিজেই হয়।
+
+```solidity
+
+ return _retVal;
+ }
+
+
+ fallback() external {
+```
+
+যখন কোনো Solidity কন্ট্রাক্টে কল করা কোনো ফাংশন সিগনেচারের সাথে মেলে না, তখন এটি [`fallback()` ফাংশন](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function) কল করে (ধরে নিচ্ছি যে একটি আছে)। `CalldataInterpreter`-এর ক্ষেত্রে, _যেকোনো_ কল এখানে আসে কারণ অন্য কোনো `external` বা `public` ফাংশন নেই।
+
+```solidity
+ uint _func;
+
+ _func = calldataVal(0, 1);
+```
+
+কলডাটার প্রথম বাইটটি পড়ুন, যা আমাদের ফাংশনটি বলে দেয়। এখানে একটি ফাংশন উপলব্ধ না হওয়ার দুটি কারণ রয়েছে:
+
+1. যে ফাংশনগুলো `pure` বা `view` সেগুলো স্টেট পরিবর্তন করে না এবং গ্যাস খরচ করে না (যখন অফচেইন কল করা হয়)। তাদের গ্যাস খরচ কমানোর চেষ্টা করার কোনো মানে হয় না।
+2. যে ফাংশনগুলো [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties)-এর ওপর নির্ভর করে। `msg.sender`-এর মান কলারের পরিবর্তে `CalldataInterpreter`-এর এডড্রেস হতে যাচ্ছে।
+
+দুর্ভাগ্যবশত, [ERC-20 স্পেসিফিকেশনগুলো দেখলে](https://eips.ethereum.org/EIPS/eip-20), এটি শুধুমাত্র একটি ফাংশন, `transfer` বাকি রাখে। এটি আমাদের কাছে শুধুমাত্র দুটি ফাংশন রাখে: `transfer` (কারণ আমরা `transferFrom` কল করতে পারি) এবং `faucet` (কারণ আমরা যে আমাদের কল করেছে তাকে টোকেনগুলো ফেরত পাঠাতে পারি)।
+
+```solidity
+
+ // টোকেনের স্টেট পরিবর্তনকারী মেথডগুলো কল করুন ব্যবহার করে
+ // কলডেটা থেকে প্রাপ্ত তথ্য
+
+ // ফসেট
+ if (_func == 1) {
+```
+
+`faucet()`-এ একটি কল, যার কোনো প্যারামিটার নেই।
+
+```solidity
+ token.faucet();
+ token.transfer(msg.sender,
+ token.balanceOf(address(this)));
+ }
+```
+
+আমরা `token.faucet()` কল করার পর টোকেন পাই। তবে, প্রক্সি কন্ট্রাক্ট হিসেবে, আমাদের টোকেনের **প্রয়োজন** নেই। যে EOA (এক্সটার্নালি ওনড একাউন্ট) বা কন্ট্রাক্ট আমাদের কল করেছে তার প্রয়োজন। তাই আমরা আমাদের সমস্ত টোকেন যে আমাদের কল করেছে তাকে ট্রান্সফার করি।
+
+```solidity
+ // ট্রান্সফার (ধরে নিন এর জন্য আমাদের অ্যালাউন্স আছে)
+ if (_func == 2) {
+```
+
+টোকেন ট্রান্সফার করার জন্য দুটি প্যারামিটার প্রয়োজন: গন্তব্য এডড্রেস এবং পরিমাণ।
+
+```solidity
+ token.transferFrom(
+ msg.sender,
+```
+
+আমরা শুধুমাত্র কলারদের তাদের নিজস্ব টোকেন ট্রান্সফার করার অনুমতি দিই
+
+```solidity
+ address(uint160(calldataVal(1, 20))),
+```
+
+গন্তব্য এডড্রেস বাইট #1 থেকে শুরু হয় (বাইট #0 হলো ফাংশন)। একটি এডড্রেস হিসেবে, এটি 20-বাইট দীর্ঘ।
+
+```solidity
+ calldataVal(21, 2)
+```
+
+এই নির্দিষ্ট কন্ট্রাক্টের জন্য আমরা ধরে নিই যে কেউ সর্বোচ্চ যতগুলো টোকেন ট্রান্সফার করতে চাইবে তা দুই বাইটে (65536 এর কম) ফিট হবে।
+
+```solidity
+ );
+ }
+```
+
+সামগ্রিকভাবে, একটি ট্রান্সফারে 35 বাইট কলডাটা লাগে:
+
+| সেকশন | দৈর্ঘ্য | বাইট |
+| ------------------- | -----: | ----: |
+| ফাংশন সিলেক্টর | 1 | 0 |
+| গন্তব্য এডড্রেস | 32 | 1-32 |
+| পরিমাণ | 2 | 33-34 |
+
+```solidity
+ } // ফলব্যাক
+
+} // contract CalldataInterpreter
+```
+
+### test.js {#test-js}
+
+[এই জাভাস্ক্রিপ্ট ইউনিট টেস্টটি](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js) আমাদের দেখায় কীভাবে এই মেকানিজমটি ব্যবহার করতে হয় (এবং এটি সঠিকভাবে কাজ করে কিনা তা কীভাবে যাচাই করতে হয়)। আমি ধরে নিচ্ছি আপনি [chai](https://www.chaijs.com/) এবং [ethers](https://docs.ethers.io/v5/) বোঝেন এবং শুধুমাত্র সেই অংশগুলো ব্যাখ্যা করব যা বিশেষভাবে কন্ট্রাক্টের ক্ষেত্রে প্রযোজ্য।
+
+```js
+const { expect } = require("chai");
+
+describe("CalldataInterpreter", function () {
+ it("Should let us use tokens", async function () {
+ const Token = await ethers.getContractFactory("OrisUselessToken")
+ const token = await Token.deploy()
+ await token.deployed()
+ console.log("Token addr:", token.address)
+
+ const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+ const cdi = await Cdi.deploy(token.address)
+ await cdi.deployed()
+ console.log("CalldataInterpreter addr:", cdi.address)
+
+ const signer = await ethers.getSigner()
+```
+
+আমরা উভয় কন্ট্রাক্ট ডিপ্লয় করার মাধ্যমে শুরু করি।
+
+```javascript
+ // খেলার জন্য টোকেন পান
+ const faucetTx = {
+```
+
+লেনদেন তৈরি করতে আমরা সাধারণত যে হাই-লেভেল ফাংশনগুলো ব্যবহার করি (যেমন `token.faucet()`) তা ব্যবহার করতে পারি না, কারণ আমরা ABI অনুসরণ করি না। এর পরিবর্তে, আমাদের নিজেদেরই লেনদেন তৈরি করতে হবে এবং তারপর এটি পাঠাতে হবে।
+
+```javascript
+ to: cdi.address,
+ data: "0x01"
+```
+
+লেনদেন এর জন্য আমাদের দুটি প্যারামিটার প্রদান করতে হবে:
+
+1. `to`, গন্তব্য এডড্রেস। এটি হলো কলডাটা ইন্টারপ্রেটার কন্ট্রাক্ট।
+2. `data`, পাঠানোর জন্য কলডাটা। একটি faucet কলের ক্ষেত্রে, ডাটা হলো একটি একক বাইট, `0x01`।
+
+```javascript
+
+ }
+ await (await signer.sendTransaction(faucetTx)).wait()
+```
+
+আমরা [সাইনারের `sendTransaction` মেথড](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction) কল করি কারণ আমরা ইতিমধ্যেই গন্তব্য (`faucetTx.to`) নির্দিষ্ট করেছি এবং আমাদের লেনদেনটি সাইন করা প্রয়োজন।
+
+```javascript
+// ফসেট সঠিকভাবে টোকেন প্রদান করে কিনা তা চেক করুন
+expect(await token.balanceOf(signer.address)).to.equal(1000)
+```
+
+এখানে আমরা ব্যালেন্স যাচাই করি। `view` ফাংশনগুলোতে গ্যাস বাঁচানোর কোনো প্রয়োজন নেই, তাই আমরা সেগুলোকে স্বাভাবিকভাবেই চালাই।
+
+```javascript
+// CDI-কে একটি অ্যালাউন্স দিন (অ্যাপ্রুভাল প্রক্সি করা যায় না)
+const approveTX = await token.approve(cdi.address, 10000)
+await approveTX.wait()
+expect(await token.allowance(signer.address, cdi.address)).to.equal(10000)
+```
+
+ট্রান্সফার করতে সক্ষম হওয়ার জন্য কলডাটা ইন্টারপ্রেটারকে একটি অ্যালাউন্স দিন।
+
+```javascript
+// টোকেন ট্রান্সফার করুন
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+```
+
+একটি ট্রান্সফার লেনদেন তৈরি করুন। প্রথম বাইটটি হলো "0x02", এরপর গন্তব্য এডড্রেস এবং সবশেষে পরিমাণ (0x0100, যা ডেসিমালে 256)।
+
+```javascript
+ await (await signer.sendTransaction(transferTx)).wait()
+
+ // চেক করুন যে আমাদের কাছে 256টি টোকেন কম আছে
+ expect (await token.balanceOf(signer.address)).to.equal(1000-256)
+
+ // এবং আমাদের গন্তব্য সেগুলো পেয়েছে কিনা
+ expect (await token.balanceOf(destAddr)).to.equal(256)
+ }) // it
+}) // describe
+```
+
+## গন্তব্য কন্ট্রাক্ট আপনার নিয়ন্ত্রণে থাকলে খরচ কমানো {#reducing-the-cost-when-you-do-control-the-destination-contract}
+
+যদি গন্তব্য কন্ট্রাক্টের ওপর আপনার নিয়ন্ত্রণ থাকে তবে আপনি এমন ফাংশন তৈরি করতে পারেন যা `msg.sender` চেকগুলো বাইপাস করে কারণ তারা কলডাটা ইন্টারপ্রেটারকে বিশ্বাস করে। [এটি কীভাবে কাজ করে তার একটি উদাহরণ আপনি এখানে, `control-contract` ব্রাঞ্চে দেখতে পারেন](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract)।
+
+যদি কন্ট্রাক্টটি শুধুমাত্র এক্সটার্নাল লেনদেন এর রেসপন্স করত, তবে আমরা শুধুমাত্র একটি কন্ট্রাক্ট রেখেই কাজ চালিয়ে নিতে পারতাম। তবে, এটি [কম্পোজেবিলিটি](/developers/docs/smart-contracts/composability/) ভেঙে দেবে। এমন একটি কন্ট্রাক্ট থাকা অনেক ভালো যা সাধারণ ERC-20 কলের রেসপন্স করে এবং আরেকটি কন্ট্রাক্ট যা শর্ট কল ডাটা সহ লেনদেন এর রেসপন্স করে।
+
+### Token.sol {#token-sol-2}
+
+এই উদাহরণে আমরা `Token.sol` পরিবর্তন করতে পারি। এটি আমাদের এমন কিছু ফাংশন রাখতে দেয় যা শুধুমাত্র প্রক্সি কল করতে পারে। এখানে নতুন অংশগুলো দেওয়া হলো:
+
+```solidity
+ // একমাত্র অ্যাড্রেস যা CalldataInterpreter অ্যাড্রেস নির্দিষ্ট করার অনুমতিপ্রাপ্ত
+ address owner;
+
+ // CalldataInterpreter অ্যাড্রেস
+ address proxy = address(0);
+```
+
+ERC-20 কন্ট্রাক্টকে অনুমোদিত প্রক্সির পরিচয় জানতে হবে। তবে, আমরা কনস্ট্রাক্টরে এই ভেরিয়েবলটি সেট করতে পারি না, কারণ আমরা এখনও মানটি জানি না। এই কন্ট্রাক্টটি প্রথমে ইনস্ট্যানশিয়েট করা হয় কারণ প্রক্সি তার কনস্ট্রাক্টরে টোকেনের এডড্রেস আশা করে।
+
+```solidity
+ /* *
+ * @dev ERC20 কনস্ট্রাক্টর কল করে। */
+ constructor(
+ ) ERC20("Oris useless token-2", "OUT-2") {
+ owner = msg.sender;
+ }
+```
+
+ক্রিয়েটরের এডড্রেস (যাকে `owner` বলা হয়) এখানে সংরক্ষণ করা হয় কারণ শুধুমাত্র এই এডড্রেসটিকেই প্রক্সি সেট করার অনুমতি দেওয়া হয়।
+
+```solidity
+ /* *
+ * @dev প্রক্সির জন্য অ্যাড্রেস সেট করুন (CalldataInterpreter)।
+ * শুধুমাত্র ওনার দ্বারা একবার কল করা যেতে পারে */
+ function setProxy(address _proxy) external {
+ require(msg.sender == owner, "Can only be called by owner");
+ require(proxy == address(0), "Proxy is already set");
+
+ proxy = _proxy;
+ } // function setProxy
+```
+
+প্রক্সির প্রিভিলেজড অ্যাক্সেস রয়েছে, কারণ এটি সিকিউরিটি চেক বাইপাস করতে পারে। আমরা প্রক্সিকে বিশ্বাস করতে পারি তা নিশ্চিত করতে আমরা শুধুমাত্র `owner`-কে এই ফাংশনটি কল করতে দিই, এবং তাও শুধুমাত্র একবার। একবার `proxy`-এর একটি বাস্তব মান (শূন্য নয়) হয়ে গেলে, সেই মানটি পরিবর্তন করা যায় না, তাই যদি মালিক প্রতারক হওয়ার সিদ্ধান্ত নেয়, বা এর নেমোনিক প্রকাশ হয়ে যায়, তবুও আমরা নিরাপদ থাকি।
+
+```solidity
+ /* *
+ * @dev কিছু ফাংশন শুধুমাত্র প্রক্সি দ্বারা কল করা যেতে পারে। */
+ modifier onlyProxy {
+```
+
+এটি একটি [`modifier` ফাংশন](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm), এটি অন্যান্য ফাংশনগুলোর কাজ করার পদ্ধতি পরিবর্তন করে।
+
+```solidity
+ require(msg.sender == proxy);
+```
+
+প্রথমে, যাচাই করুন যে আমাদের প্রক্সি কল করেছে এবং অন্য কেউ নয়। যদি না হয়, তবে `revert` করুন।
+
+```solidity
+ _;
+ }
+```
+
+যদি তাই হয়, তবে আমরা যে ফাংশনটি মডিফাই করি সেটি চালান।
+
+```solidity
+ /* যে ফাংশনগুলো প্রক্সিকে অ্যাকাউন্টগুলোর জন্য প্রকৃতপক্ষে প্রক্সি করার অনুমতি দেয় */
+
+ function transferProxy(address from, address to, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _transfer(from, to, amount);
+ return true;
+ }
+
+ function approveProxy(address from, address spender, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _approve(from, spender, amount);
+ return true;
+ }
+
+ function transferFromProxy(
+ address spender,
+ address from,
+ address to,
+ uint256 amount
+ ) public virtual onlyProxy() returns (bool)
+ {
+ _spendAllowance(from, spender, amount);
+ _transfer(from, to, amount);
+ return true;
+ }
+```
+
+এগুলো হলো তিনটি অপারেশন যার জন্য সাধারণত টোকেন ট্রান্সফার করা বা অ্যালাউন্স অনুমোদনকারী এনটিটি থেকে সরাসরি মেসেজ আসার প্রয়োজন হয়। এখানে আমাদের কাছে এই অপারেশনগুলোর একটি প্রক্সি ভার্সন রয়েছে যা:
+
+1. `onlyProxy()` দ্বারা মডিফাই করা হয়েছে যাতে অন্য কাউকে এগুলো নিয়ন্ত্রণ করার অনুমতি দেওয়া না হয়।
+2. একটি অতিরিক্ত প্যারামিটার হিসেবে সেই এডড্রেসটি পায় যা সাধারণত `msg.sender` হতো।
+
+### CalldataInterpreter.sol {#calldatainterpreter-sol-2}
+
+কলডাটা ইন্টারপ্রেটারটি উপরেরটির প্রায় অনুরূপ, শুধুমাত্র প্রক্সি করা ফাংশনগুলো একটি `msg.sender` প্যারামিটার গ্রহণ করে এবং `transfer`-এর জন্য কোনো অ্যালাউন্সের প্রয়োজন নেই।
+
+```solidity
+ // ট্রান্সফার (অ্যালাউন্সের কোনো প্রয়োজন নেই)
+ if (_func == 2) {
+ token.transferProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // approve
+ if (_func == 3) {
+ token.approveProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // transferFrom
+ if (_func == 4) {
+ token.transferFromProxy(
+ msg.sender,
+ address(uint160(calldataVal( 1, 20))),
+ address(uint160(calldataVal(21, 20))),
+ calldataVal(41, 2)
+ );
+ }
+```
+
+### Test.js {#test-js-2}
+
+আগের টেস্টিং কোড এবং এই কোডের মধ্যে কয়েকটি পরিবর্তন রয়েছে।
+
+```js
+const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+const cdi = await Cdi.deploy(token.address)
+await cdi.deployed()
+await token.setProxy(cdi.address)
+```
+
+আমাদের ERC-20 কন্ট্রাক্টকে বলতে হবে কোন প্রক্সিকে বিশ্বাস করতে হবে
+
+```js
+console.log("CalldataInterpreter addr:", cdi.address)
+
+// অ্যালাউন্স যাচাই করার জন্য দুজন সাইনার প্রয়োজন
+const signers = await ethers.getSigners()
+const signer = signers[0]
+const poorSigner = signers[1]
+```
+
+`approve()` এবং `transferFrom()` চেক করার জন্য আমাদের একজন দ্বিতীয় সাইনার প্রয়োজন। আমরা একে `poorSigner` বলি কারণ এটি আমাদের কোনো টোকেন পায় না (অবশ্যই এর কাছে ETH থাকতে হবে)।
+
+```js
+// টোকেন ট্রান্সফার করুন
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+await (await signer.sendTransaction(transferTx)).wait()
+```
+
+যেহেতু ERC-20 কন্ট্রাক্ট প্রক্সিকে (`cdi`) বিশ্বাস করে, তাই ট্রান্সফার রিলে করার জন্য আমাদের কোনো অ্যালাউন্সের প্রয়োজন নেই।
+
+```js
+// approval এবং transferFrom
+const approveTx = {
+ to: cdi.address,
+ data: "0x03" + poorSigner.address.slice(2, 42) + "00FF",
+}
+await (await signer.sendTransaction(approveTx)).wait()
+
+const destAddr2 = "0xE1165C689C0c3e9642cA7606F5287e708d846206"
+
+const transferFromTx = {
+ to: cdi.address,
+ data: "0x04" + signer.address.slice(2, 42) + destAddr2.slice(2, 42) + "00FF",
+}
+await (await poorSigner.sendTransaction(transferFromTx)).wait()
+
+// approve / transferFrom কম্বো সঠিকভাবে করা হয়েছে কিনা তা চেক করুন
+expect(await token.balanceOf(destAddr2)).to.equal(255)
+```
+
+দুটি নতুন ফাংশন টেস্ট করুন। মনে রাখবেন যে `transferFromTx`-এর জন্য দুটি এডড্রেস প্যারামিটার প্রয়োজন: অ্যালাউন্স প্রদানকারী এবং গ্রহণকারী।
+
+## উপসংহার {#conclusion}
+
+[Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) এবং [Arbitrum](https://developer.offchainlabs.com/docs/special_features) উভয়েই L1-এ লেখা কলডাটার আকার কমানোর এবং এর ফলে লেনদেন এর খরচ কমানোর উপায় খুঁজছে। তবে, জেনেরিক সমাধান খোঁজা ইনফ্রাস্ট্রাকচার প্রোভাইডার হিসেবে, আমাদের ক্ষমতা সীমিত। ডিএ্যাপ ডেভেলপার হিসেবে, আপনার কাছে অ্যাপ্লিকেশন-নির্দিষ্ট জ্ঞান রয়েছে, যা আপনাকে একটি জেনেরিক সমাধানের চেয়ে অনেক ভালোভাবে আপনার কলডাটা অপ্টিমাইজ করতে দেয়। আশা করি, এই আর্টিকেলটি আপনাকে আপনার প্রয়োজনের জন্য আদর্শ সমাধান খুঁজে পেতে সাহায্য করবে।
+
+[আমার আরও কাজের জন্য এখানে দেখুন](https://cryptodocguy.pro/)।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/bn/developers/tutorials/smart-contract-security-guidelines/index.md
new file mode 100644
index 00000000000..aa011cb53b3
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -0,0 +1,92 @@
+---
+title: স্মার্ট কন্ট্রাক্ট নিরাপত্তা নির্দেশিকা
+description: আপনার ডিএ্যাপ তৈরি করার সময় বিবেচনা করার জন্য নিরাপত্তা নির্দেশিকার একটি চেকলিস্ট
+author: "Trailofbits"
+tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা"]
+skill: intermediate
+breadcrumb: নিরাপত্তা নির্দেশিকা
+lang: bn
+published: 2020-09-06
+source: Building secure contracts
+sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/guidelines.md
+---
+
+আরও নিরাপদ স্মার্ট কন্ট্রাক্ট তৈরি করতে এই উচ্চ-স্তরের সুপারিশগুলো অনুসরণ করুন।
+
+## ডিজাইন নির্দেশিকা {#design-guidelines}
+
+কোডের কোনো লাইন লেখার আগে, কন্ট্রাক্টের ডিজাইন নিয়ে আগে থেকেই আলোচনা করা উচিত।
+
+### ডকুমেন্টেশন এবং স্পেসিফিকেশন {#documentation-and-specifications}
+
+ডোকুমেন্টেশন বিভিন্ন স্তরে লেখা যেতে পারে, এবং কন্ট্রাক্টগুলো বাস্তবায়নের সময় এটি আপডেট করা উচিত:
+
+- **সিস্টেমের একটি সাধারণ ইংরেজি বর্ণনা**, যেখানে কন্ট্রাক্টগুলো কী করে এবং কোডবেসের উপর কোনো অনুমান থাকলে তা বর্ণনা করা হয়।
+- **স্কিমা এবং আর্কিটেকচারাল ডায়াগ্রাম**, যার মধ্যে কন্ট্রাক্টের মিথস্ক্রিয়া এবং সিস্টেমের স্টেট মেশিন অন্তর্ভুক্ত। [Slither printers](https://github.com/crytic/slither/wiki/Printer-documentation) এই স্কিমাগুলো তৈরি করতে সাহায্য করতে পারে।
+- **পুঙ্খানুপুঙ্খ কোড ডকুমেন্টেশন**, Solidity-এর জন্য [Natspec format](https://docs.soliditylang.org/en/develop/natspec-format.html) ব্যবহার করা যেতে পারে।
+
+### অনচেইন বনাম অফচেইন কম্পিউটেশন {#onchain-vs-offchain-computation}
+
+- **যতটা সম্ভব কোড অফচেইন রাখুন।** অনচেইন লেয়ারটি ছোট রাখুন। অফচেইন কোড দিয়ে ডেটা এমনভাবে প্রি-প্রসেস করুন যাতে অনচেইন যাচাইকরণ সহজ হয়। আপনার কি একটি সাজানো তালিকা দরকার? তালিকাটি অফচেইন সাজান, তারপর শুধুমাত্র অনচেইন এর ক্রম পরীক্ষা করুন।
+
+### আপগ্রেডযোগ্যতা {#upgradeability}
+
+আমরা [আমাদের ব্লগপোস্টে](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/) বিভিন্ন আপগ্রেডযোগ্যতা সমাধান নিয়ে আলোচনা করেছি। কোনো কোড লেখার আগে আপগ্রেডযোগ্যতা সমর্থন করবেন কি না, সে বিষয়ে একটি সুচিন্তিত সিদ্ধান্ত নিন। এই সিদ্ধান্তটি আপনার কোডের কাঠামোকে প্রভাবিত করবে। সাধারণভাবে, আমরা সুপারিশ করি:
+
+- **আপগ্রেডযোগ্যতার চেয়ে [কন্ট্রাক্ট মাইগ্রেশন](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)-কে অগ্রাধিকার দিন।** মাইগ্রেশন সিস্টেমগুলোর অনেক সুবিধা আপগ্রেডযোগ্য সিস্টেমের মতোই, তবে এগুলোর কোনো ত্রুটি নেই।
+- **delegatecallproxy-এর চেয়ে ডেটা সেপারেশন প্যাটার্ন ব্যবহার করুন।** যদি আপনার প্রজেক্টে একটি স্পষ্ট অ্যাবস্ট্রাকশন সেপারেশন থাকে, তবে ডেটা সেপারেশন ব্যবহার করে আপগ্রেডযোগ্যতার জন্য শুধুমাত্র কয়েকটি সমন্বয় প্রয়োজন হবে। delegatecallproxy-এর জন্য EVM দক্ষতার প্রয়োজন এবং এটি অত্যন্ত ত্রুটিপ্রবণ।
+- **ডিপ্লয়মেন্টের আগে মাইগ্রেশন/আপগ্রেড পদ্ধতি ডকুমেন্ট করুন।** যদি আপনাকে কোনো নির্দেশিকা ছাড়াই চাপের মধ্যে কাজ করতে হয়, তবে আপনি ভুল করবেন। আগে থেকেই অনুসরণ করার পদ্ধতি লিখে রাখুন। এর মধ্যে অন্তর্ভুক্ত থাকা উচিত:
+ - নতুন কন্ট্রাক্টগুলো শুরু করার কলগুলো
+ - কি (keys) কোথায় সংরক্ষিত আছে এবং কীভাবে সেগুলো অ্যাক্সেস করতে হবে
+ - কীভাবে ডিপ্লয়মেন্ট পরীক্ষা করতে হবে! একটি পোস্ট-ডিপ্লয়মেন্ট স্ক্রিপ্ট তৈরি এবং পরীক্ষা করুন।
+
+## বাস্তবায়ন নির্দেশিকা {#implementation-guidelines}
+
+**সরলতার জন্য চেষ্টা করুন।** সর্বদা আপনার উদ্দেশ্যের সাথে মানানসই সবচেয়ে সহজ সমাধানটি ব্যবহার করুন। আপনার টিমের যেকোনো সদস্যের আপনার সমাধানটি বুঝতে পারা উচিত।
+
+### ফাংশন কম্পোজিশন {#function-composition}
+
+আপনার কোডবেসের আর্কিটেকচার এমন হওয়া উচিত যাতে আপনার কোডটি রিভিউ করা সহজ হয়। এমন আর্কিটেকচারাল পছন্দগুলো এড়িয়ে চলুন যা এর সঠিকতা সম্পর্কে যুক্তি দেওয়ার ক্ষমতা হ্রাস করে।
+
+- **আপনার সিস্টেমের লজিক বিভক্ত করুন**, হয় একাধিক কন্ট্রাক্টের মাধ্যমে অথবা একই ধরনের ফাংশনগুলোকে একসাথে গ্রুপ করে (উদাহরণস্বরূপ, প্রমাণীকরণ, পাটিগণিত, ...)।
+- **একটি স্পষ্ট উদ্দেশ্য নিয়ে ছোট ফাংশন লিখুন।** এটি সহজে রিভিউ করতে সহায়তা করবে এবং পৃথক উপাদানগুলোর টেস্টিং করার অনুমতি দেবে।
+
+### ইনহেরিটেন্স {#inheritance}
+
+- **ইনহেরিটেন্স পরিচালনাযোগ্য রাখুন।** লজিক ভাগ করার জন্য ইনহেরিটেন্স ব্যবহার করা উচিত, তবে আপনার প্রজেক্টের লক্ষ্য হওয়া উচিত ইনহেরিটেন্স ট্রির গভীরতা এবং প্রস্থ কমানো।
+- **কন্ট্রাক্টগুলোর হায়ারার্কি পরীক্ষা করতে Slither-এর [inheritance printer](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph) ব্যবহার করুন।** ইনহেরিটেন্স প্রিন্টার আপনাকে হায়ারার্কির আকার রিভিউ করতে সাহায্য করবে।
+
+### ইভেন্ট {#events}
+
+- **সব গুরুত্বপূর্ণ অপারেশন লগ করুন।** ইভেন্টগুলো ডেভেলপমেন্টের সময় কন্ট্রাক্ট ডিবাগ করতে এবং ডিপ্লয়মেন্টের পরে এটি পর্যবেক্ষণ করতে সাহায্য করবে।
+
+### পরিচিত ফাঁদগুলো এড়িয়ে চলুন {#avoid-known-pitfalls}
+
+- **সবচেয়ে সাধারণ নিরাপত্তা সমস্যাগুলো সম্পর্কে সচেতন থাকুন।** সাধারণ সমস্যাগুলো সম্পর্কে জানার জন্য অনলাইনে অনেক রিসোর্স রয়েছে, যেমন [Ethernaut CTF](https://ethernaut.openzeppelin.com/), [Capture the Ether](https://capturetheether.com/), অথবা [Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/)।
+- **[Solidity documentation](https://docs.soliditylang.org/en/latest/)-এর সতর্কীকরণ বিভাগগুলো সম্পর্কে সচেতন থাকুন।** সতর্কীকরণ বিভাগগুলো আপনাকে ভাষার অস্পষ্ট আচরণ সম্পর্কে অবহিত করবে।
+
+### ডিপেন্ডেন্সি {#dependencies}
+
+- **সু-পরীক্ষিত লাইব্রেরি ব্যবহার করুন।** সু-পরীক্ষিত লাইব্রেরি থেকে কোড ইমপোর্ট করলে আপনার বাগযুক্ত কোড লেখার সম্ভাবনা কমে যাবে। আপনি যদি একটি ERC20 কন্ট্রাক্ট লিখতে চান, তবে [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20) ব্যবহার করুন।
+- **একটি ডিপেন্ডেন্সি ম্যানেজার ব্যবহার করুন; কোড কপি-পেস্ট করা এড়িয়ে চলুন।** আপনি যদি কোনো বাহ্যিক উৎসের ওপর নির্ভর করেন, তবে আপনাকে অবশ্যই মূল উৎসের সাথে এটি আপ-টু-ডেট রাখতে হবে।
+
+### টেস্টিং এবং ভেরিফিকেশন {#testing-and-verification}
+
+- **পুঙ্খানুপুঙ্খ ইউনিট-টেস্ট লিখুন।** উচ্চ-মানের সফটওয়্যার তৈরি করার জন্য একটি বিস্তৃত টেস্ট স্যুট অত্যন্ত গুরুত্বপূর্ণ।
+- **[Slither](https://github.com/crytic/slither), [Echidna](https://github.com/crytic/echidna) এবং [Manticore](https://github.com/trailofbits/manticore) কাস্টম চেক এবং প্রপার্টি লিখুন।** স্বয়ংক্রিয় টুলগুলো আপনার কন্ট্রাক্ট নিরাপদ কিনা তা নিশ্চিত করতে সাহায্য করবে। কীভাবে কার্যকর চেক এবং প্রপার্টি লিখতে হয় তা জানতে এই গাইডের বাকি অংশটি রিভিউ করুন।
+- **[crytic.io](https://crytic.io/) ব্যবহার করুন।** Crytic গিটহাবের (GitHub) সাথে একীভূত হয়, ব্যক্তিগত Slither ডিটেক্টরগুলোতে অ্যাক্সেস প্রদান করে এবং Echidna থেকে কাস্টম প্রপার্টি চেক চালায়।
+
+### Solidity {#solidity}
+
+- **0.4 এবং 0.6 এর চেয়ে Solidity 0.5 কে অগ্রাধিকার দিন।** আমাদের মতে, Solidity 0.5 আরও নিরাপদ এবং 0.4 এর চেয়ে ভালো বিল্ট-ইন প্র্যাকটিস রয়েছে। Solidity 0.6 প্রোডাকশনের জন্য খুব অস্থিতিশীল প্রমাণিত হয়েছে এবং পরিপক্ক হওয়ার জন্য সময়ের প্রয়োজন।
+- **কম্পাইল করার জন্য একটি স্থিতিশীল রিলিজ ব্যবহার করুন; সতর্কীকরণ পরীক্ষা করার জন্য সর্বশেষ রিলিজ ব্যবহার করুন।** পরীক্ষা করুন যে সর্বশেষ কম্পাইলার সংস্করণের সাথে আপনার কোডে কোনো রিপোর্ট করা সমস্যা নেই। তবে, Solidity-এর একটি দ্রুত রিলিজ চক্র রয়েছে এবং কম্পাইলার বাগের ইতিহাস রয়েছে, তাই আমরা ডিপ্লয়মেন্টের জন্য সর্বশেষ সংস্করণের সুপারিশ করি না (Slither-এর [solc version recommendation](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33) দেখুন)।
+- **ইনলাইন অ্যাসেম্বলি ব্যবহার করবেন না।** অ্যাসেম্বলির জন্য EVM দক্ষতার প্রয়োজন। আপনি যদি ইয়েলো পেপার (yellow paper) _আয়ত্ত_ না করে থাকেন তবে EVM কোড লিখবেন না।
+
+## ডিপ্লয়মেন্ট নির্দেশিকা {#deployment-guidelines}
+
+একবার কন্ট্রাক্ট তৈরি এবং ডিপ্লয় করা হয়ে গেলে:
+
+- **আপনার কন্ট্রাক্টগুলো পর্যবেক্ষণ করুন।** লগগুলো দেখুন এবং কন্ট্রাক্ট বা ওয়ালেট কম্প্রোমাইজ হওয়ার ক্ষেত্রে প্রতিক্রিয়া জানাতে প্রস্তুত থাকুন।
+- **[blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts)-এ আপনার যোগাযোগের তথ্য যোগ করুন।** কোনো নিরাপত্তা ত্রুটি আবিষ্কৃত হলে এই তালিকাটি তৃতীয় পক্ষকে আপনার সাথে যোগাযোগ করতে সাহায্য করে।
+- **সুবিধাপ্রাপ্ত ব্যবহারকারীদের ওয়ালেটগুলো সুরক্ষিত করুন।** আপনি যদি হার্ডওয়্যার ওয়ালেটে কি (keys) সংরক্ষণ করেন তবে আমাদের [সেরা অনুশীলনগুলো](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/) অনুসরণ করুন।
+- **ঘটনার প্রতিক্রিয়ার জন্য একটি পরিকল্পনা রাখুন।** বিবেচনা করুন যে আপনার স্মার্ট কন্ট্রাক্টগুলো কম্প্রোমাইজ হতে পারে। এমনকি যদি আপনার কন্ট্রাক্টগুলো বাগ-মুক্ত হয়, তবুও একজন আক্রমণকারী কন্ট্রাক্ট মালিকের কি-গুলোর (keys) নিয়ন্ত্রণ নিতে পারে।
\ No newline at end of file
diff --git a/public/content/translations/bn/developers/tutorials/stealth-addr/index.md b/public/content/translations/bn/developers/tutorials/stealth-addr/index.md
new file mode 100644
index 00000000000..9c7ec3aab01
--- /dev/null
+++ b/public/content/translations/bn/developers/tutorials/stealth-addr/index.md
@@ -0,0 +1,437 @@
+---
+title: "স্টিলথ এডড্রেস ব্যবহার করা"
+description: "স্টিলথ এডড্রেস ব্যবহারকারীদের বেনামে সম্পদ স্থানান্তর করার অনুমতি দেয়। এই নিবন্ধটি পড়ার পরে, আপনি সক্ষম হবেন: স্টিলথ এডড্রেস কী এবং কীভাবে কাজ করে তা ব্যাখ্যা করতে, কীভাবে স্টিলথ এডড্রেস ব্যবহার করে বেনামিতা বজায় রাখা যায় তা বুঝতে এবং স্টিলথ এডড্রেস ব্যবহার করে এমন একটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশন লিখতে।"
+author: ওরি পোমেরান্টজ
+tags: ["স্টিলথ এডড্রেস", "গোপনীয়তা", "ক্রিপ্টোগ্রাফি", "rust", "wasm"]
+skill: intermediate
+breadcrumb: স্টিলথ এডড্রেস
+published: 2025-11-30
+lang: bn
+sidebarDepth: 3
+---
+
+আপনি হলেন বিল। এমন কিছু কারণে যা আমরা এখানে আলোচনা করব না, আপনি "Alice for Queen of the World" ক্যাম্পেইনে দান করতে চান এবং চান যে অ্যালিস জানুক আপনি দান করেছেন, যাতে সে জিতলে আপনাকে পুরস্কৃত করতে পারে। দুর্ভাগ্যবশত, তার জয় নিশ্চিত নয়। একটি প্রতিযোগী ক্যাম্পেইন রয়েছে, "Carol for Empress of the Solar System"। যদি ক্যারল জেতে এবং সে জানতে পারে যে আপনি অ্যালিসকে দান করেছেন, তবে আপনি সমস্যায় পড়বেন। তাই আপনি কেবল আপনার একাউন্ট থেকে অ্যালিসের একাউন্টে 200 ETH স্থানান্তর করতে পারবেন না।
+
+[ERC-5564](https://eips.ethereum.org/EIPS/eip-5564)-এ এর সমাধান রয়েছে। এই ERC ব্যাখ্যা করে কীভাবে বেনামী স্থানান্তরের জন্য [স্টিলথ এডড্রেস](https://nerolation.github.io/stealth-utils) ব্যবহার করতে হয়।
+
+**সতর্কতা**: স্টিলথ এডড্রেসের পেছনের ক্রিপ্টোগ্রাফি, যতদূর আমরা জানি, বেশ মজবুত। তবে, সম্ভাব্য সাইড-চ্যানেল আক্রমণের ঝুঁকি রয়েছে। [নিচে](#go-wrong), আপনি দেখতে পাবেন কীভাবে এই ঝুঁকি কমানো যায়।
+
+## স্টিলথ এডড্রেস কীভাবে কাজ করে {#how}
+
+এই নিবন্ধটি দুটি উপায়ে স্টিলথ এডড্রেস ব্যাখ্যা করার চেষ্টা করবে। প্রথমটি হলো [কীভাবে এগুলো ব্যবহার করতে হয়](#how-use)। নিবন্ধের বাকি অংশ বোঝার জন্য এই অংশটিই যথেষ্ট। এরপর, [এর পেছনের গণিতের একটি ব্যাখ্যা](#how-math) রয়েছে। আপনি যদি ক্রিপ্টোগ্রাফি নিয়ে আগ্রহী হন, তবে এই অংশটিও পড়ুন।
+
+### সহজ সংস্করণ (কীভাবে স্টিলথ এডড্রেস ব্যবহার করবেন) {#how-use}
+
+অ্যালিস দুটি প্রাইভেট কি তৈরি করে এবং সংশ্লিষ্ট পাবলিক কি-গুলো প্রকাশ করে (যা একটি একক ডাবল-লেংথ মেটা-এডড্রেসে একত্রিত করা যেতে পারে)। বিলও একটি প্রাইভেট কি তৈরি করে এবং সংশ্লিষ্ট পাবলিক কি প্রকাশ করে।
+
+এক পক্ষের পাবলিক কি এবং অন্য পক্ষের প্রাইভেট কি ব্যবহার করে, আপনি একটি শেয়ার্ড সিক্রেট (shared secret) বের করতে পারেন যা কেবল অ্যালিস এবং বিলের জানা থাকে (এটি কেবল পাবলিক কি থেকে বের করা সম্ভব নয়)। এই শেয়ার্ড সিক্রেট ব্যবহার করে, বিল স্টিলথ এডড্রেস পায় এবং সেখানে সম্পদ পাঠাতে পারে।
+
+অ্যালিসও শেয়ার্ড সিক্রেট থেকে এডড্রেসটি পায়, কিন্তু যেহেতু সে তার প্রকাশিত পাবলিক কি-গুলোর প্রাইভেট কি জানে, তাই সে সেই প্রাইভেট কি-ও পেতে পারে যা তাকে ওই এডড্রেস থেকে সম্পদ উত্তোলনের অনুমতি দেয়।
+
+### গণিত (কেন স্টিলথ এডড্রেস এভাবে কাজ করে) {#how-math}
+
+স্ট্যান্ডার্ড স্টিলথ এডড্রেসগুলো [এলিপটিক-কার্ভ ক্রিপ্টোগ্রাফি (ECC)](https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/#elliptic-curves-building-blocks-of-a-better-trapdoor) ব্যবহার করে যাতে কম কি বিট দিয়ে ভালো পারফরম্যান্স পাওয়া যায়, অথচ একই স্তরের নিরাপত্তা বজায় থাকে। তবে বেশিরভাগ ক্ষেত্রে আমরা এটি এড়িয়ে যেতে পারি এবং ধরে নিতে পারি যে আমরা সাধারণ পাটিগণিত ব্যবহার করছি।
+
+একটি সংখ্যা আছে যা সবাই জানে, *G*। আপনি *G* দিয়ে গুণ করতে পারেন। কিন্তু ECC-এর প্রকৃতির কারণে, *G* দিয়ে ভাগ করা প্রায় অসম্ভব। ইথিরিয়ামে পাবলিক কি ক্রিপ্টোগ্রাফি সাধারণত যেভাবে কাজ করে তা হলো, আপনি একটি প্রাইভেট কি, *Ppriv* ব্যবহার করে লেনদেন সাইন করতে পারেন যা পরে একটি পাবলিক কি, *Ppub = GPpriv* দ্বারা যাচাই করা হয়।
+
+অ্যালিস দুটি প্রাইভেট কি তৈরি করে, *Kpriv* এবং *Vpriv*। *Kpriv* ব্যবহার করা হবে স্টিলথ এডড্রেস থেকে অর্থ ব্যয় করতে, এবং *Vpriv* ব্যবহার করা হবে অ্যালিসের এডড্রেসগুলো দেখতে। এরপর অ্যালিস পাবলিক কি-গুলো প্রকাশ করে: *Kpub = GKpriv* এবং *Vpub = GVpriv*
+
+বিল একটি তৃতীয় প্রাইভেট কি, *Rpriv* তৈরি করে এবং একটি সেন্ট্রাল রেজিস্ট্রিতে *Rpub = GRpriv* প্রকাশ করে (বিল এটি অ্যালিসকেও পাঠাতে পারত, কিন্তু আমরা ধরে নিচ্ছি ক্যারল আড়ি পাতছে)।
+
+বিল *RprivVpub = GRprivVpriv* হিসাব করে, যা সে আশা করে অ্যালিসও জানবে (নিচে ব্যাখ্যা করা হয়েছে)। এই মানটিকে বলা হয় *S*, শেয়ার্ড সিক্রেট। এটি বিলকে একটি পাবলিক কি দেয়, *Ppub = Kpub+G\*hash(S)*। এই পাবলিক কি থেকে, সে একটি এডড্রেস হিসাব করতে পারে এবং সেখানে তার ইচ্ছামতো সম্পদ পাঠাতে পারে। ভবিষ্যতে, যদি অ্যালিস জেতে, বিল তাকে *Rpriv* বলতে পারে এটা প্রমাণ করতে যে সম্পদগুলো তার কাছ থেকেই এসেছে।
+
+অ্যালিস *RpubVpriv = GRprivVpriv* হিসাব করে। এটি তাকে একই শেয়ার্ড সিক্রেট, *S* দেয়। যেহেতু সে প্রাইভেট কি, *Kpriv* জানে, তাই সে *Ppriv = Kpriv+hash(S)* হিসাব করতে পারে। এই কি তাকে সেই এডড্রেসের সম্পদে অ্যাক্সেস দেয় যা *Ppub = GPpriv = GKpriv+G\*hash(S) = Kpub+G\*hash(S)* থেকে তৈরি হয়।
+
+আমাদের একটি আলাদা ভিউয়িং কি (viewing key) রয়েছে যাতে অ্যালিস ডেভস ওয়ার্ল্ড ডমিনেশন ক্যাম্পেইন সার্ভিসেসকে সাবকন্ট্রাক্ট দিতে পারে। অ্যালিস ডেভকে পাবলিক এডড্রেসগুলো জানাতে এবং আরও অর্থ এলে তাকে অবহিত করতে ইচ্ছুক, কিন্তু সে চায় না ডেভ তার ক্যাম্পেইনের অর্থ ব্যয় করুক।
+
+যেহেতু দেখা এবং ব্যয় করার জন্য আলাদা কি ব্যবহার করা হয়, অ্যালিস ডেভকে *Vpriv* দিতে পারে। তখন ডেভ *S = RpubVpriv = GRprivVpriv* হিসাব করতে পারে এবং সেভাবে পাবলিক কি-গুলো (*Ppub = Kpub+G\*hash(S)*) পেতে পারে। কিন্তু *Kpriv* ছাড়া ডেভ প্রাইভেট কি পেতে পারে না।
+
+সংক্ষেপে, এগুলো হলো বিভিন্ন অংশগ্রহণকারীর জানা মান।
+
+| অ্যালিস | প্রকাশিত | বিল | ডেভ |
+| - | - | - | - |
+| G | G | G | G |
+| *Kpriv* | - | - | - |
+| *Vpriv* | - | - | *Vpriv* |
+| *Kpub = GKpriv* | *Kpub* | *Kpub* | *Kpub* |
+| *Vpub = GVpriv* | *Vpub* | *Vpub* | *Vpub* |
+| - | - | *Rpriv* | - |
+| *Rpub* | *Rpub* | *Rpub = GRpriv* | *Rpub* |
+| *S = RpubVpriv = GRprivVpriv* | - | *S = RprivVpub = GRprivVpriv* | *S = *RpubVpriv* = GRprivVpriv* |
+| *Ppub = Kpub+G\*hash(S)* | - | *Ppub = Kpub+G\*hash(S)* | *Ppub = Kpub+G\*hash(S)* |
+| *এডড্রেস=f(Ppub)* | - | *এডড্রেস=f(Ppub)* | *এডড্রেস=f(Ppub)* | *এডড্রেস=f(Ppub)*
+| *Ppriv = Kpriv+hash(S)* | - | - | - |
+
+## যখন স্টিলথ এডড্রেস ভুল পথে যায় {#go-wrong}
+
+*ব্লকচেইনে কোনো গোপনীয়তা নেই*। যদিও স্টিলথ এডড্রেস আপনাকে গোপনীয়তা প্রদান করতে পারে, সেই গোপনীয়তা ট্রাফিক বিশ্লেষণের জন্য সংবেদনশীল। একটি সাধারণ উদাহরণ হিসেবে, কল্পনা করুন যে বিল একটি এডড্রেসে ফান্ড দেয় এবং সাথে সাথে একটি *Rpub* মান প্রকাশ করার জন্য একটি লেনদেন পাঠায়। অ্যালিসের *Vpriv* ছাড়া, আমরা নিশ্চিত হতে পারি না যে এটি একটি স্টিলথ এডড্রেস, তবে এটি হওয়ার সম্ভাবনাই বেশি। এরপর, আমরা আরেকটি লেনদেন দেখি যা সেই এডড্রেস থেকে সমস্ত ETH অ্যালিসের ক্যাম্পেইন ফান্ড এডড্রেসে স্থানান্তর করে। আমরা হয়তো এটি প্রমাণ করতে পারব না, তবে সম্ভবত বিল এইমাত্র অ্যালিসের ক্যাম্পেইনে দান করেছে। ক্যারল অবশ্যই এমনটাই ভাববে।
+
+বিলের জন্য *Rpub* প্রকাশ করা এবং স্টিলথ এডড্রেসে ফান্ড দেওয়া আলাদা করা সহজ (ভিন্ন সময়ে, ভিন্ন এডড্রেস থেকে এগুলো করা)। তবে, এটি যথেষ্ট নয়। ক্যারল যে প্যাটার্নটি খুঁজছে তা হলো বিল একটি এডড্রেসে ফান্ড দেয় এবং তারপর অ্যালিসের ক্যাম্পেইন ফান্ড সেখান থেকে তা তুলে নেয়।
+
+এর একটি সমাধান হলো অ্যালিসের ক্যাম্পেইন সরাসরি অর্থ উত্তোলন না করে, এটি কোনো তৃতীয় পক্ষকে অর্থ প্রদানের জন্য ব্যবহার করা। যদি অ্যালিসের ক্যাম্পেইন ডেভস ওয়ার্ল্ড ডমিনেশন ক্যাম্পেইন সার্ভিসেসকে 10 ETH পাঠায়, তবে ক্যারল কেবল জানবে যে বিল ডেভের কোনো একজন গ্রাহককে দান করেছে। যদি ডেভের পর্যাপ্ত গ্রাহক থাকে, তবে ক্যারল জানতে পারবে না যে বিল তার প্রতিযোগী অ্যালিসকে দান করেছে, নাকি অ্যাডাম, অ্যালবার্ট বা অ্যাবিগেলকে দান করেছে যাদের নিয়ে ক্যারলের কোনো মাথাব্যথা নেই। অ্যালিস পেমেন্টের সাথে একটি হ্যাশ করা মান যুক্ত করতে পারে এবং তারপর ডেভকে প্রিইমেজ (preimage) প্রদান করতে পারে, এটি প্রমাণ করতে যে এটি তার দান ছিল। বিকল্পভাবে, যেমনটি উপরে উল্লেখ করা হয়েছে, যদি অ্যালিস ডেভকে তার *Vpriv* দেয়, তবে সে আগে থেকেই জানে পেমেন্টটি কার কাছ থেকে এসেছে।
+
+এই সমাধানের প্রধান সমস্যা হলো এর জন্য অ্যালিসকে গোপনীয়তার বিষয়ে যত্নশীল হতে হবে যখন সেই গোপনীয়তা বিলের উপকারে আসে। অ্যালিস হয়তো তার সুনাম বজায় রাখতে চাইতে পারে যাতে বিলের বন্ধু ববও তাকে দান করে। তবে এটাও সম্ভব যে সে বিলকে প্রকাশ করতে আপত্তি করবে না, কারণ তখন বিল ভয় পাবে যে ক্যারল জিতলে কী হবে। এর ফলে বিল হয়তো অ্যালিসকে আরও বেশি সমর্থন প্রদান করবে।
+
+### একাধিক স্টিলথ লেয়ার ব্যবহার করা {#multi-layer}
+
+বিলের গোপনীয়তা রক্ষার জন্য অ্যালিসের ওপর নির্ভর করার পরিবর্তে, বিল নিজেই এটি করতে পারে। সে কাল্পনিক ব্যক্তি বব এবং বেলার জন্য একাধিক মেটা-এডড্রেস তৈরি করতে পারে। এরপর বিল ববকে ETH পাঠায় এবং "বব" (যে আসলে বিল) তা বেলাকে পাঠায়। "বেলা" (সেও বিল) তা অ্যালিসকে পাঠায়।
+
+ক্যারল এখনও ট্রাফিক বিশ্লেষণ করতে পারে এবং বিল-থেকে-বব-থেকে-বেলা-থেকে-অ্যালিস পাইপলাইন দেখতে পারে। তবে, যদি "বব" এবং "বেলা" অন্যান্য উদ্দেশ্যেও ETH ব্যবহার করে, তবে মনে হবে না যে বিল অ্যালিসকে কিছু স্থানান্তর করেছে, এমনকি যদি অ্যালিস সাথে সাথে স্টিলথ এডড্রেস থেকে তার পরিচিত ক্যাম্পেইন এডড্রেসে অর্থ তুলে নেয়।
+
+## একটি স্টিলথ-এডড্রেস অ্যাপ্লিকেশন লেখা {#write-app}
+
+এই নিবন্ধটি একটি স্টিলথ-এডড্রেস অ্যাপ্লিকেশন ব্যাখ্যা করে যা [GitHub-এ উপলব্ধ](https://github.com/qbzzt/251022-stealth-addresses.git)।
+
+### টুলস {#tools}
+
+একটি [টাইপস্ক্রিপ্ট স্টিলথ এডড্রেস লাইব্রেরি](https://github.com/ScopeLift/stealth-address-sdk) রয়েছে যা আমরা ব্যবহার করতে পারতাম। তবে, ক্রিপ্টোগ্রাফিক অপারেশনগুলো সিপিইউ-নিবিড় (CPU-intensive) হতে পারে। আমি এগুলোকে একটি কম্পাইলড ভাষা, যেমন [Rust](https://rust-lang.org/)-এ প্রয়োগ করতে এবং ব্রাউজারে কোড চালানোর জন্য [WASM](https://webassembly.org/) ব্যবহার করতে পছন্দ করি।
+
+আমরা [Vite](https://vite.dev/) এবং [React](https://react.dev/) ব্যবহার করতে যাচ্ছি। এগুলো ইন্ডাস্ট্রি-স্ট্যান্ডার্ড টুলস; আপনি যদি এগুলোর সাথে পরিচিত না হন, তবে আপনি [এই টিউটোরিয়ালটি](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) ব্যবহার করতে পারেন। Vite ব্যবহার করার জন্য, আমাদের Node প্রয়োজন।
+
+### স্টিলথ এডড্রেসগুলো কীভাবে কাজ করে তা দেখুন {#in-action}
+
+1. প্রয়োজনীয় টুলস ইনস্টল করুন: [Rust](https://rust-lang.org/tools/install/) এবং [Node](https://nodejs.org/en/download)।
+
+2. GitHub রিপোজিটরি ক্লোন করুন।
+
+ ```sh
+ git clone https://github.com/qbzzt/251022-stealth-addresses.git
+ cd 251022-stealth-addresses
+ ```
+
+3. পূর্বশর্তগুলো ইনস্টল করুন এবং Rust কোড কম্পাইল করুন।
+
+ ```sh
+ cd src/rust-wasm
+ rustup target add wasm32-unknown-unknown
+ cargo install wasm-pack
+ wasm-pack build --target web
+ ```
+
+4. ওয়েব সার্ভার চালু করুন।
+
+ ```sh
+ cd ../..
+ npm install
+ npm run dev
+ ```
+
+5. [অ্যাপ্লিকেশনটিতে](http://localhost:5173/) ব্রাউজ করুন। এই অ্যাপ্লিকেশন পেজে দুটি ফ্রেম রয়েছে: একটি অ্যালিসের ইউজার ইন্টারফেসের জন্য এবং অন্যটি বিলের জন্য। ফ্রেম দুটি একে অপরের সাথে যোগাযোগ করে না; সুবিধার জন্য এগুলো কেবল একই পেজে রাখা হয়েছে।
+
+6. অ্যালিস হিসেবে, **Generate a Stealth Meta-Address**-এ ক্লিক করুন। এটি নতুন স্টিলথ এডড্রেস এবং সংশ্লিষ্ট প্রাইভেট কি-গুলো প্রদর্শন করবে। স্টিলথ মেটা-এডড্রেসটি ক্লিপবোর্ডে কপি করুন।
+
+7. বিল হিসেবে, নতুন স্টিলথ মেটা-এডড্রেসটি পেস্ট করুন এবং **Generate an address**-এ ক্লিক করুন। এটি আপনাকে অ্যালিসের জন্য ফান্ড দেওয়ার এডড্রেসটি দেবে।
+
+8. এডড্রেস এবং বিলের পাবলিক কি কপি করুন এবং অ্যালিসের ইউজার ইন্টারফেসের "Private key for address generated by Bill" অংশে পেস্ট করুন। এই ফিল্ডগুলো পূরণ হয়ে গেলে, আপনি সেই এডড্রেসের সম্পদে অ্যাক্সেস করার প্রাইভেট কি দেখতে পাবেন।
+
+9. প্রাইভেট কি-টি এডড্রেসের সাথে মিলে কিনা তা নিশ্চিত করতে আপনি [একটি অনলাইন ক্যালকুলেটর](https://iancoleman.net/ethereum-private-key-to-address/) ব্যবহার করতে পারেন।
+
+### প্রোগ্রামটি কীভাবে কাজ করে {#how-the-program-works}
+
+#### WASM কম্পোনেন্ট {#wasm}
+
+যে সোর্স কোডটি WASM-এ কম্পাইল হয় তা [Rust](https://rust-lang.org/)-এ লেখা। আপনি এটি [`src/rust_wasm/src/lib.rs`](https://github.com/qbzzt/251022-stealth-addresses/blob/main/src/rust-wasm/src/lib.rs)-এ দেখতে পারেন। এই কোডটি মূলত জাভাস্ক্রিপ্ট কোড এবং [`eth-stealth-addresses` লাইব্রেরির](https://github.com/kassandraoftroy/eth-stealth-addresses) মধ্যে একটি ইন্টারফেস।
+
+**`Cargo.toml`**
+
+Rust-এ [`Cargo.toml`](https://doc.rust-lang.org/cargo/reference/manifest.html) হলো জাভাস্ক্রিপ্টের [`package.json`](https://docs.npmjs.com/cli/v9/configuring-npm/package-json)-এর সমতুল্য। এতে প্যাকেজের তথ্য, ডিপেন্ডেন্সি ডিক্লারেশন ইত্যাদি থাকে।
+
+```toml
+[package]
+name = "rust-wasm"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+eth-stealth-addresses = "0.1.0"
+hex = "0.4.3"
+wasm-bindgen = "0.2.104"
+getrandom = { version = "0.2", features = ["js"] }
+```
+
+র্যান্ডম মান তৈরি করার জন্য [`getrandom`](https://docs.rs/getrandom/latest/getrandom/) প্যাকেজটির প্রয়োজন। এটি কেবল অ্যালগরিদমিক উপায়ে করা যায় না; এর জন্য এন্ট্রপির উৎস হিসেবে একটি ভৌত প্রক্রিয়ায় অ্যাক্সেস প্রয়োজন। এই সংজ্ঞাটি নির্দিষ্ট করে যে আমরা যে ব্রাউজারে চলছি তাকে জিজ্ঞাসা করে সেই এন্ট্রপি পাব।
+
+```toml
+console_error_panic_hook = "0.1.7"
+```
+
+[এই লাইব্রেরিটি](https://docs.rs/console_error_panic_hook/latest/console_error_panic_hook/) আমাদের আরও অর্থপূর্ণ এরর মেসেজ দেয় যখন WASM কোড প্যানিক করে এবং চলতে পারে না।
+
+```toml
+[lib]
+crate-type = ["cdylib", "rlib"]
+```
+
+WASM কোড তৈরি করার জন্য প্রয়োজনীয় আউটপুট টাইপ।
+
+**`lib.rs`**
+
+এটি হলো আসল Rust কোড।
+
+```rust
+use wasm_bindgen::prelude::*;
+```
+
+Rust থেকে একটি WASM প্যাকেজ তৈরি করার সংজ্ঞা। এগুলো [এখানে](https://wasm-bindgen.github.io/wasm-bindgen/reference/attributes/index.html) ডকুমেন্টেড রয়েছে।
+
+```rust
+use eth_stealth_addresses::{
+ generate_stealth_meta_address,
+ generate_stealth_address,
+ compute_stealth_key
+};
+```
+
+[`eth-stealth-addresses` লাইব্রেরি](https://github.com/kassandraoftroy/eth-stealth-addresses) থেকে আমাদের প্রয়োজনীয় ফাংশনগুলো।
+
+```rust
+use hex::{decode,encode};
+```
+
+Rust সাধারণত মানগুলোর জন্য বাইট [অ্যারে](https://doc.rust-lang.org/std/primitive.array.html) (`[u8; ]`) ব্যবহার করে। কিন্তু জাভাস্ক্রিপ্টে, আমরা সাধারণত হেক্সাডেসিমাল স্ট্রিং ব্যবহার করি। [`hex` লাইব্রেরি](https://docs.rs/hex/latest/hex/) আমাদের জন্য একটি রূপ থেকে অন্য রূপে অনুবাদ করে।
+
+```rust
+#[wasm_bindgen]
+```
+
+জাভাস্ক্রিপ্ট থেকে এই ফাংশনটি কল করতে সক্ষম হওয়ার জন্য WASM বাইন্ডিং তৈরি করুন।
+
+```rust
+pub fn wasm_generate_stealth_meta_address() -> String {
+```
+
+একাধিক ফিল্ডসহ একটি অবজেক্ট রিটার্ন করার সবচেয়ে সহজ উপায় হলো একটি JSON স্ট্রিং রিটার্ন করা।
+
+```rust
+ let (address, spend_private_key, view_private_key) =
+ generate_stealth_meta_address();
+```
+
+[`generate_stealth_meta_address`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.generate_stealth_meta_address.html) তিনটি ফিল্ড রিটার্ন করে:
+
+- মেটা-এডড্রেস (*Kpub* এবং *Vpub*)
+- ভিউয়িং প্রাইভেট কি (*Vpriv*)
+- স্পেন্ডিং প্রাইভেট কি (*Kpriv*)
+
+[টাপল (tuple)](https://doc.rust-lang.org/std/primitive.tuple.html) সিনট্যাক্স আমাদের সেই মানগুলোকে আবার আলাদা করতে দেয়।
+
+```rust
+ format!("{{\"address\":\"{}\",\"view_private_key\":\"{}\",\"spend_private_key\":\"{}\"}}",
+ encode(address),
+ encode(view_private_key),
+ encode(spend_private_key)
+ )
+}
+```
+
+JSON-এনকোডেড স্ট্রিং তৈরি করতে [`format!`](https://doc.rust-lang.org/std/fmt/index.html) ম্যাক্রো ব্যবহার করুন। অ্যারেগুলোকে হেক্স স্ট্রিংয়ে পরিবর্তন করতে [`hex::encode`](https://docs.rs/hex/latest/hex/fn.encode.html) ব্যবহার করুন।
+
+```rust
+fn str_to_array(s: &str) -> Option<[u8; N]> {
+```
+
+এই ফাংশনটি একটি হেক্স স্ট্রিংকে (জাভাস্ক্রিপ্ট দ্বারা প্রদত্ত) একটি বাইট অ্যারেতে পরিণত করে। আমরা এটি জাভাস্ক্রিপ্ট কোড দ্বারা প্রদত্ত মানগুলো পার্স করতে ব্যবহার করি। Rust যেভাবে অ্যারে এবং ভেক্টর পরিচালনা করে তার কারণে এই ফাংশনটি জটিল।
+
+`` এক্সপ্রেশনটিকে একটি [জেনেরিক (generic)](https://doc.rust-lang.org/book/ch10-01-syntax.html) বলা হয়। `N` হলো একটি প্যারামিটার যা রিটার্ন করা অ্যারের দৈর্ঘ্য নিয়ন্ত্রণ করে। ফাংশনটিকে আসলে `str_to_array::` বলা হয়, যেখানে `n` হলো অ্যারের দৈর্ঘ্য।
+
+রিটার্ন ভ্যালু হলো `Option<[u8; N]>`, যার মানে রিটার্ন করা অ্যারেটি [ঐচ্ছিক (optional)](https://doc.rust-lang.org/std/option/)। এটি Rust-এ এমন ফাংশনগুলোর জন্য একটি সাধারণ প্যাটার্ন যা ব্যর্থ হতে পারে।
+
+উদাহরণস্বরূপ, যদি আমরা `str_to_array::10("bad060a7")` কল করি, তবে ফাংশনটির একটি দশ-মানের অ্যারে রিটার্ন করার কথা, কিন্তু ইনপুটটি কেবল চার বাইটের। ফাংশনটিকে ব্যর্থ হতে হবে, এবং এটি `None` রিটার্ন করে তা করে। `str_to_array::4("bad060a7")`-এর রিটার্ন ভ্যালু হবে `Some<[0xba, 0xd0, 0x60, 0xa7]>`।
+
+```rust
+ // ডিকোড Result, _> রিটার্ন করে
+ let vec = decode(s).ok()?;
+```
+
+[`hex::decode`](https://docs.rs/hex/latest/hex/fn.decode.html) ফাংশনটি একটি `Result, FromHexError>` রিটার্ন করে। [`Result`](https://doc.rust-lang.org/std/result/) টাইপটিতে হয় একটি সফল ফলাফল (`Ok(value)`) অথবা একটি এরর (`Err(error)`) থাকতে পারে।
+
+`.ok()` মেথডটি `Result`-কে একটি `Option`-এ পরিণত করে, যার মান সফল হলে `Ok()` মান হয় অথবা না হলে `None` হয়। সবশেষে, [প্রশ্নবোধক চিহ্ন অপারেটর](https://doc.rust-lang.org/std/option/#the-question-mark-operator-) বর্তমান ফাংশনগুলোকে বাতিল করে এবং `Option` খালি থাকলে একটি `None` রিটার্ন করে। অন্যথায়, এটি মানটিকে আনর্যাপ (unwrap) করে এবং তা রিটার্ন করে (এই ক্ষেত্রে, `vec`-এ একটি মান অ্যাসাইন করতে)।
+
+এটি এররগুলো পরিচালনা করার জন্য একটি অদ্ভুত জটিল পদ্ধতি বলে মনে হতে পারে, তবে `Result` এবং `Option` নিশ্চিত করে যে সমস্ত এরর কোনো না কোনোভাবে পরিচালিত হয়।
+
+```rust
+ if vec.len() != N { return None; }
+```
+
+যদি বাইটের সংখ্যা ভুল হয়, তবে এটি একটি ব্যর্থতা, এবং আমরা `None` রিটার্ন করি।
+
+```rust
+ // try_into vec-কে কনজিউম করে এবং [u8; N] তৈরি করার চেষ্টা করে
+ let array: [u8; N] = vec.try_into().ok()?;
+```
+
+Rust-এ দুটি অ্যারে টাইপ রয়েছে। [অ্যারেগুলোর](https://doc.rust-lang.org/std/primitive.array.html) একটি নির্দিষ্ট আকার থাকে। [ভেক্টরগুলো](https://doc.rust-lang.org/std/vec/index.html) বাড়তে এবং কমতে পারে। `hex::decode` একটি ভেক্টর রিটার্ন করে, কিন্তু `eth_stealth_addresses` লাইব্রেরি অ্যারে গ্রহণ করতে চায়। [`.try_into()`](https://doc.rust-lang.org/std/convert/trait.TryInto.html#required-methods) একটি মানকে অন্য টাইপে রূপান্তর করে, উদাহরণস্বরূপ, একটি ভেক্টরকে একটি অ্যারেতে।
+
+```rust
+ Some(array)
+}
+```
+
+কোনো ফাংশনের শেষে একটি মান রিটার্ন করার সময় Rust-এ আপনাকে [`return`](https://doc.rust-lang.org/std/keyword.return.html) কীওয়ার্ড ব্যবহার করতে হয় না।
+
+```rust
+#[wasm_bindgen]
+pub fn wasm_generate_stealth_address(stealth_address: &str) -> Option {
+```
+
+এই ফাংশনটি একটি পাবলিক মেটা-এডড্রেস গ্রহণ করে, যার মধ্যে *Vpub* এবং *Kpub* উভয়ই অন্তর্ভুক্ত থাকে। এটি স্টিলথ এডড্রেস, প্রকাশ করার জন্য পাবলিক কি (*Rpub*), এবং একটি এক-বাইট স্ক্যান মান রিটার্ন করে যা প্রকাশিত এডড্রেসগুলোর মধ্যে কোনটি অ্যালিসের হতে পারে তা শনাক্তকরণকে ত্বরান্বিত করে।
+
+স্ক্যান মানটি শেয়ার্ড সিক্রেটের (*S = GRprivVpriv*) অংশ। এই মানটি অ্যালিসের কাছে উপলব্ধ, এবং *f(Kpub+G\*hash(S))* প্রকাশিত এডড্রেসের সমান কিনা তা পরীক্ষা করার চেয়ে এটি পরীক্ষা করা অনেক দ্রুত।
+
+```rust
+ let (address, r_pub, scan) =
+ generate_stealth_address(&str_to_array::<66>(stealth_address)?);
+```
+
+আমরা লাইব্রেরির [`generate_stealth_address`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.generate_stealth_address.html) ব্যবহার করি।
+
+```rust
+ format!("{{\"address\":\"{}\",\"rPub\":\"{}\",\"scan\":\"{}\"}}",
+ encode(address),
+ encode(r_pub),
+ encode(&[scan])
+ ).into()
+}
+```
+
+JSON-এনকোডেড আউটপুট স্ট্রিং প্রস্তুত করুন।
+
+```rust
+#[wasm_bindgen]
+pub fn wasm_compute_stealth_key(
+ address: &str,
+ bill_pub_key: &str,
+ view_private_key: &str,
+ spend_private_key: &str
+) -> Option {
+ .
+ .
+ .
+}
+```
+
+এই ফাংশনটি এডড্রেস থেকে উত্তোলনের জন্য প্রাইভেট কি (*Rpriv*) হিসাব করতে লাইব্রেরির [`compute_stealth_key`](https://docs.rs/eth-stealth-addresses/latest/eth_stealth_addresses/fn.compute_stealth_key.html) ব্যবহার করে। এই হিসাবের জন্য এই মানগুলোর প্রয়োজন:
+
+- এডড্রেস (*এডড্রেস=f(Ppub)*)
+- বিল দ্বারা তৈরি পাবলিক কি (*Rpub*)
+- ভিউ প্রাইভেট কি (*Vpriv*)
+- স্পেন্ড প্রাইভেট কি (*Kpriv*)
+
+```rust
+#[wasm_bindgen(start)]
+```
+
+[`#[wasm_bindgen(start)]`](https://wasm-bindgen.github.io/wasm-bindgen/reference/attributes/on-rust-exports/start.html) নির্দিষ্ট করে যে WASM কোড ইনিশিয়ালাইজ হওয়ার সময় ফাংশনটি এক্সিকিউট হয়।
+
+```rust
+pub fn main() {
+ console_error_panic_hook::set_once();
+}
+```
+
+এই কোডটি নির্দিষ্ট করে যে প্যানিক আউটপুট জাভাস্ক্রিপ্ট কনসোলে পাঠানো হবে। এটি কীভাবে কাজ করে তা দেখতে, অ্যাপ্লিকেশনটি ব্যবহার করুন এবং বিলকে একটি অবৈধ মেটা-এডড্রেস দিন (কেবল একটি হেক্সাডেসিমাল ডিজিট পরিবর্তন করুন)। আপনি জাভাস্ক্রিপ্ট কনসোলে এই এররটি দেখতে পাবেন:
+
+```
+rust_wasm.js:236 panicked at /home/ori/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rs:701:9:
+assertion `left == right` failed
+ left: 0
+ right: 1
+```
+
+এরপরে একটি স্ট্যাক ট্রেস (stack trace) থাকবে। তারপর বিলকে বৈধ মেটা-এডড্রেস দিন, এবং অ্যালিসকে হয় একটি অবৈধ এডড্রেস অথবা একটি অবৈধ পাবলিক কি দিন। আপনি এই এররটি দেখতে পাবেন:
+
+```
+rust_wasm.js:236 panicked at /home/ori/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/eth-stealth-addresses-0.1.0/src/lib.rs:78:9:
+keys do not generate stealth address
+```
+
+আবারও, এরপরে একটি স্ট্যাক ট্রেস থাকবে।
+
+#### ইউজার ইন্টারফেস {#ui}
+
+ইউজার ইন্টারফেসটি [React](https://react.dev/) ব্যবহার করে লেখা হয়েছে এবং [Vite](https://vite.dev/) দ্বারা পরিবেশিত হয়। আপনি [এই টিউটোরিয়ালটি](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/) ব্যবহার করে এগুলো সম্পর্কে জানতে পারেন। এখানে [WAGMI](https://wagmi.sh/)-এর কোনো প্রয়োজন নেই কারণ আমরা সরাসরি কোনো ব্লকচেইন বা ওয়ালেটের সাথে যোগাযোগ করি না।
+
+ইউজার ইন্টারফেসের একমাত্র অস্পষ্ট অংশ হলো WASM কানেক্টিভিটি। এটি যেভাবে কাজ করে তা নিচে দেওয়া হলো।
+
+**`vite.config.js`**
+
+এই ফাইলে [Vite কনফিগারেশন](https://vite.dev/config/) রয়েছে।
+
+```js
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+import wasm from "vite-plugin-wasm";
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [react(), wasm()],
+})
+```
+
+আমাদের দুটি Vite প্লাগইন প্রয়োজন: [react](https://www.npmjs.com/package/@vitejs/plugin-react) এবং [wasm](https://github.com/Menci/vite-plugin-wasm#readme)।
+
+**`App.jsx`**
+
+এই ফাইলটি অ্যাপ্লিকেশনের প্রধান কম্পোনেন্ট। এটি একটি কন্টেইনার যার মধ্যে দুটি কম্পোনেন্ট রয়েছে: `Alice` এবং `Bill`, যা ওই ব্যবহারকারীদের জন্য ইউজার ইন্টারফেস। WASM-এর জন্য প্রাসঙ্গিক অংশটি হলো ইনিশিয়ালাইজেশন কোড।
+
+```jsx
+import init from './rust-wasm/pkg/rust_wasm.js'
+```
+
+যখন আমরা [`wasm-pack`](https://rustwasm.github.io/docs/wasm-pack/) ব্যবহার করি, এটি দুটি ফাইল তৈরি করে যা আমরা এখানে ব্যবহার করি: আসল কোডসহ একটি wasm ফাইল (এখানে, `src/rust-wasm/pkg/rust_wasm_bg.wasm`) এবং এটি ব্যবহার করার সংজ্ঞাসহ একটি জাভাস্ক্রিপ্ট ফাইল (এখানে, `src/rust_wasm/pkg/rust_wasm.js`)। সেই জাভাস্ক্রিপ্ট ফাইলের ডিফল্ট এক্সপোর্ট হলো সেই কোড যা WASM ইনিশিয়েট করার জন্য চালাতে হয়।
+
+```jsx
+function App() {
+ .
+ .
+ .
+ useEffect(() => {
+ const loadWasm = async () => {
+ try {
+ await init();
+ setWasmReady(true)
+ } catch (err) {
+ console.error('Error loading wasm:', err)
+ alert("Wasm error: " + err)
+ }
+ }
+
+ loadWasm()
+ }, []
+ )
+```
+
+[`useEffect` হুক](https://react.dev/reference/react/useEffect) আপনাকে এমন একটি ফাংশন নির্দিষ্ট করতে দেয় যা স্টেট ভেরিয়েবলগুলো পরিবর্তিত হলে এক্সিকিউট হয়। এখানে, স্টেট ভেরিয়েবলের তালিকাটি খালি (`[]`), তাই পেজ লোড হওয়ার সময় এই ফাংশনটি কেবল একবার এক্সিকিউট হয়।
+
+ইফেক্ট ফাংশনটিকে সাথে সাথে রিটার্ন করতে হয়। অ্যাসিনক্রোনাস কোড ব্যবহার করতে, যেমন WASM `init` (যাকে `.wasm` ফাইল লোড করতে হয় এবং তাই সময় নেয়) আমরা একটি অভ্যন্তরীণ [`async`](https://en.wikipedia.org/wiki/Async/await) ফাংশন সংজ্ঞায়িত করি এবং কোনো `await` ছাড়াই এটি চালাই।
+
+**`Bill.jsx`**
+
+এটি বিলের জন্য ইউজার ইন্টারফেস। এর একটিমাত্র কাজ রয়েছে, অ্যালিস দ্বারা প্রদত্ত স্টিলথ মেটা-এডড্রেসের ওপর ভিত্তি করে একটি এডড্রেস তৈরি করা।
+
+```jsx
+import { wasm_generate_stealth_address } from './rust-wasm/pkg/rust_wasm.js'
+```
+
+ডিফল্ট এক্সপোর্ট ছাড়াও, `wasm-pack` দ্বারা তৈরি জাভাস্ক্রিপ্ট কোড WASM কোডের প্রতিটি ফাংশনের জন্য একটি ফাংশন এক্সপোর্ট করে।
+
+```jsx
+
{status}
-
+
+
)
```
diff --git a/public/content/translations/bn/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/bn/developers/tutorials/optimism-std-bridge-annotated-code/index.md
index 93e50d3d6bb..04516828745 100644
--- a/public/content/translations/bn/developers/tutorials/optimism-std-bridge-annotated-code/index.md
+++ b/public/content/translations/bn/developers/tutorials/optimism-std-bridge-annotated-code/index.md
@@ -1,10 +1,10 @@
---
title: "অপ্টিমিজম স্ট্যান্ডার্ড ব্রিজ কন্ট্রাক্ট ওয়াকথ্রু"
-description: অপ্টিমিজমের জন্য স্ট্যান্ডার্ড ব্রিজ কীভাবে কাজ করে? কেন এটি এভাবে কাজ করে?
-author: ওরি পোমেরান্টজ
-tags: ["solidity", "ব্রিজ", "লেয়ার ২"]
+description: "অপ্টিমিজমের জন্য স্ট্যান্ডার্ড ব্রিজ কীভাবে কাজ করে? কেন এটি এভাবে কাজ করে?"
+author: "ওরি পোমেরান্টজ"
+tags: ["Solidity", "ব্রিজ", "লেয়ার ২"]
skill: intermediate
-breadcrumb: অপ্টিমিজম ব্রিজ
+breadcrumb: "অপ্টিমিজম ব্রিজ"
published: 2022-03-30
lang: bn
---
@@ -204,7 +204,7 @@ L1 ব্রিজের ক্ষেত্রে, এর মানে হলো
* @param _from ট্রান্সফার শুরু করা L2 ঠিকানা।
* @param _to উত্তোলনের ক্রেডিট পাওয়ার জন্য L1 ঠিকানা।
* @param _amount ডিপোজিট করার জন্য ERC20-এর পরিমাণ।
- * @param _data L2-তে প্রেরকের দেওয়া ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ * @param _data L2-তে প্রেরকের দেওয়া ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না। */
function finalizeERC20Withdrawal(
address _l1Token,
address _l2Token,
@@ -613,7 +613,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled {
* @dev L2-তে কলারের ব্যালেন্সে নির্দিষ্ট পরিমাণ ETH ডিপোজিট করতে
* কোনো ডেটা ছাড়াই এই ফাংশনটি কল করা যেতে পারে।
* যেহেতু রিসিভ ফাংশন ডেটা নেয় না, তাই একটি রক্ষণশীল
- * ডিফল্ট পরিমাণ L2-তে ফরোয়ার্ড করা হয়。 */
+ * ডিফল্ট পরিমাণ L2-তে ফরোয়ার্ড করা হয়। */
receive() external payable onlyEOA {
_initiateETHDeposit(msg.sender, msg.sender, 200_000, bytes(""));
}
@@ -648,7 +648,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled {
* @param _from L1-এ যে অ্যাকাউন্ট থেকে ডিপোজিট নেওয়া হবে।
* @param _to L2-তে যে অ্যাকাউন্টে ডিপোজিট দেওয়া হবে।
* @param _l2Gas L2-তে ডিপোজিট সম্পন্ন করার জন্য প্রয়োজনীয় গ্যাস লিমিট।
- * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না। */
function _initiateETHDeposit(
address _from,
address _to,
@@ -735,7 +735,7 @@ Solidity ফাংশন [`abi.encodeWithSelector`](https://docs.soliditylang.or
* @param _to L2-তে যে অ্যাকাউন্টে ডিপোজিট দেওয়া হবে
* @param _amount ডিপোজিট করার জন্য ERC20-এর পরিমাণ।
* @param _l2Gas L2-তে ডিপোজিট সম্পন্ন করার জন্য প্রয়োজনীয় গ্যাস লিমিট।
- * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ * @param _data L2-তে ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না। */
function _initiateERC20Deposit(
address _l1Token,
address _l2Token,
@@ -970,7 +970,7 @@ contract L2StandardERC20 is IL2StandardERC20, ERC20 {
* @param _l2Bridge L2 স্ট্যান্ডার্ড ব্রিজের ঠিকানা।
* @param _l1Token সংশ্লিষ্ট L1 টোকেনের ঠিকানা।
* @param _name ERC20 নাম।
- * @param _symbol ERC20 প্রতীক。 */
+ * @param _symbol ERC20 প্রতীক। */
constructor(
address _l2Bridge,
address _l1Token,
@@ -1065,7 +1065,7 @@ import { IL2StandardERC20 } from "../../standards/IL2StandardERC20.sol";
* @title L2StandardBridge
* @dev L2 স্ট্যান্ডার্ড ব্রিজ হলো এমন একটি কন্ট্রাক্ট যা L1 এবং L2-এর মধ্যে ETH এবং ERC20 ট্রানজিশন সক্ষম করতে L1 স্ট্যান্ডার্ড ব্রিজের সাথে একসাথে কাজ করে।
* যখন এটি L1 স্ট্যান্ডার্ড ব্রিজে ডিপোজিট সম্পর্কে জানতে পারে তখন এই কন্ট্রাক্টটি নতুন টোকেনগুলোর জন্য মিন্টার হিসেবে কাজ করে।
- * এই কন্ট্রাক্টটি উত্তোলনের উদ্দেশ্যে টোকেনগুলোর বার্নার হিসেবেও কাজ করে, L1 ফান্ড রিলিজ করার জন্য L1 ব্রিজকে অবহিত করে。 */
+ * এই কন্ট্রাক্টটি উত্তোলনের উদ্দেশ্যে টোকেনগুলোর বার্নার হিসেবেও কাজ করে, L1 ফান্ড রিলিজ করার জন্য L1 ব্রিজকে অবহিত করে। */
contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled {
/* *******************************
* এক্সটার্নাল কন্ট্রাক্ট রেফারেন্সেস *
@@ -1086,7 +1086,7 @@ L1 ব্রিজের এডড্রেস আগে থেকে জান
/* *
* @param _l2CrossDomainMessenger এই কন্ট্রাক্ট দ্বারা ব্যবহৃত ক্রস-ডোমেইন মেসেঞ্জার।
- * @param _l1TokenBridge মেইন চেইনে ডিপ্লয় করা L1 ব্রিজের ঠিকানা。 */
+ * @param _l1TokenBridge মেইন চেইনে ডিপ্লয় করা L1 ব্রিজের ঠিকানা। */
constructor(address _l2CrossDomainMessenger, address _l1TokenBridge)
CrossDomainEnabled(_l2CrossDomainMessenger)
{
@@ -1134,7 +1134,7 @@ L2 টোকেনগুলো আমাদের L1 সমতুল্যের
* @param _to L1-এ যে অ্যাকাউন্টে উত্তোলন দেওয়া হবে।
* @param _amount উত্তোলন করার জন্য টোকেনের পরিমাণ।
* @param _l1Gas অব্যবহৃত, তবে সম্ভাব্য ফরোয়ার্ড কম্প্যাটিবিলিটি বিবেচনার জন্য অন্তর্ভুক্ত করা হয়েছে।
- * @param _data L1-এ ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না。 */
+ * @param _data L1-এ ফরোয়ার্ড করার জন্য ঐচ্ছিক ডেটা। এই ডেটা শুধুমাত্র এক্সটার্নাল কন্ট্রাক্টগুলোর সুবিধার জন্য প্রদান করা হয়েছে। সর্বোচ্চ দৈর্ঘ্য প্রয়োগ করা ছাড়া, এই কন্ট্রাক্টগুলো এর বিষয়বস্তু সম্পর্কে কোনো গ্যারান্টি দেয় না। */
function _initiateWithdrawal(
address _l2Token,
address _from,
diff --git a/public/content/translations/bn/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/bn/developers/tutorials/reverse-engineering-a-contract/index.md
index 2c117afc9d0..16bd23db20c 100644
--- a/public/content/translations/bn/developers/tutorials/reverse-engineering-a-contract/index.md
+++ b/public/content/translations/bn/developers/tutorials/reverse-engineering-a-contract/index.md
@@ -1,11 +1,11 @@
---
title: "একটি কন্ট্রাক্ট রিভার্স ইঞ্জিনিয়ারিং করা"
-description: সোর্স কোড না থাকলে কীভাবে একটি কন্ট্রাক্ট বুঝতে হয়
-author: ওরি পোমেরান্টজ
+description: "সোর্স কোড না থাকলে কীভাবে একটি কন্ট্রাক্ট বুঝতে হয়"
+author: "ওরি পোমেরান্টজ"
lang: bn
tags: ["evm", "opcodes"]
skill: advanced
-breadcrumb: রিভার্স ইঞ্জিনিয়ারিং
+breadcrumb: "রিভার্স ইঞ্জিনিয়ারিং"
published: 2021-12-30
---
## ভূমিকা {#introduction}
diff --git a/public/content/translations/bn/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/bn/developers/tutorials/run-node-raspberry-pi/index.md
index 980f5aa53c8..ed63dc5a7ea 100644
--- a/public/content/translations/bn/developers/tutorials/run-node-raspberry-pi/index.md
+++ b/public/content/translations/bn/developers/tutorials/run-node-raspberry-pi/index.md
@@ -1,11 +1,11 @@
---
-title: রাস্পবেরি পাই 4-এ একটি ইথিরিয়াম নোড চালান
-description: আপনার রাস্পবেরি পাই 4 ফ্ল্যাশ করুন, একটি ইথারনেট কেবল প্লাগ ইন করুন, SSD ডিস্ক কানেক্ট করুন এবং রাস্পবেরি পাই 4-কে একটি সম্পূর্ণ ইথিরিয়াম নোড + ভ্যালিডেটর-এ পরিণত করতে ডিভাইসটি চালু করুন
+title: "রাস্পবেরি পাই 4-এ একটি ইথিরিয়াম নোড চালান"
+description: "আপনার রাস্পবেরি পাই 4 ফ্ল্যাশ করুন, একটি ইথারনেট কেবল প্লাগ ইন করুন, SSD ডিস্ক কানেক্ট করুন এবং রাস্পবেরি পাই 4-কে একটি সম্পূর্ণ ইথিরিয়াম নোড + ভ্যালিডেটর-এ পরিণত করতে ডিভাইসটি চালু করুন"
author: "EthereumOnArm"
tags: ["ক্লায়েন্ট", "এক্সিকিউশন লেয়ার", "কনসেন্সাস লেয়ার", "নোড"]
lang: bn
skill: intermediate
-breadcrumb: রাস্প পাই নোড
+breadcrumb: "রাস্প পাই নোড"
published: 2022-06-10
source: Ethereum on ARM
sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/
diff --git a/public/content/translations/bn/developers/tutorials/scam-token-tricks/index.md b/public/content/translations/bn/developers/tutorials/scam-token-tricks/index.md
index 578c86b6657..1a35e5dee24 100644
--- a/public/content/translations/bn/developers/tutorials/scam-token-tricks/index.md
+++ b/public/content/translations/bn/developers/tutorials/scam-token-tricks/index.md
@@ -1,10 +1,10 @@
---
title: "স্ক্যাম টোকেনগুলোর ব্যবহৃত কিছু কৌশল এবং কীভাবে সেগুলো শনাক্ত করা যায়"
-description: এই টিউটোরিয়ালে আমরা একটি স্ক্যাম টোকেন বিশ্লেষণ করে দেখব স্ক্যামাররা কী ধরনের কৌশল ব্যবহার করে, কীভাবে সেগুলো প্রয়োগ করে এবং আমরা কীভাবে সেগুলো শনাক্ত করতে পারি।
-author: ওরি পোমেরান্টজ
-tags: ["স্ক্যাম", "solidity", "erc-20", "javascript", "typescript"]
+description: "এই টিউটোরিয়ালে আমরা একটি স্ক্যাম টোকেন বিশ্লেষণ করে দেখব স্ক্যামাররা কী ধরনের কৌশল ব্যবহার করে, কীভাবে সেগুলো প্রয়োগ করে এবং আমরা কীভাবে সেগুলো শনাক্ত করতে পারি।"
+author: "ওরি পোমেরান্টজ"
+tags: ["স্ক্যাম", "Solidity", "erc-20", "JavaScript", "TypeScript"]
skill: intermediate
-breadcrumb: স্ক্যাম টোকেনের কৌশল
+breadcrumb: "স্ক্যাম টোকেনের কৌশল"
published: 2023-09-15
lang: bn
---
diff --git a/public/content/translations/bn/developers/tutorials/secret-state/index.md b/public/content/translations/bn/developers/tutorials/secret-state/index.md
index 4955d4689eb..53bb6b9fc14 100644
--- a/public/content/translations/bn/developers/tutorials/secret-state/index.md
+++ b/public/content/translations/bn/developers/tutorials/secret-state/index.md
@@ -1,10 +1,10 @@
---
-title: একটি গোপন স্টেটের জন্য জিরো-নলেজ ব্যবহার করা
-description: অনচেইন গেমগুলো সীমাবদ্ধ কারণ তারা কোনো গোপন তথ্য রাখতে পারে না। এই টিউটোরিয়ালটি পড়ার পর, একজন পাঠক জিরো-নলেজ প্রুফ এবং সার্ভার কম্পোনেন্টগুলোকে একত্রিত করে একটি গোপন স্টেট, অফচেইন, কম্পোনেন্ট সহ যাচাইযোগ্য গেম তৈরি করতে সক্ষম হবেন। একটি মাইনসুইপার গেম তৈরি করে এই কৌশলটি প্রদর্শন করা হবে।
-author: ওরি পোমেরান্টজ
+title: "একটি গোপন স্টেটের জন্য জিরো-নলেজ ব্যবহার করা"
+description: "অনচেইন গেমগুলো সীমাবদ্ধ কারণ তারা কোনো গোপন তথ্য রাখতে পারে না। এই টিউটোরিয়ালটি পড়ার পর, একজন পাঠক জিরো-নলেজ প্রুফ এবং সার্ভার কম্পোনেন্টগুলোকে একত্রিত করে একটি গোপন স্টেট, অফচেইন, কম্পোনেন্ট সহ যাচাইযোগ্য গেম তৈরি করতে সক্ষম হবেন। একটি মাইনসুইপার গেম তৈরি করে এই কৌশলটি প্রদর্শন করা হবে।"
+author: "ওরি পোমেরান্টজ"
tags: ["সার্ভার", "অফচেইন", "কেন্দ্রীভূত", "জিরো-নলেজ", "Zokrates", "MUD", "গোপনীয়তা"]
skill: advanced
-breadcrumb: ZK গোপন স্টেট
+breadcrumb: "ZK গোপন স্টেট"
lang: bn
published: 2025-03-15
---
diff --git a/public/content/translations/bn/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/bn/developers/tutorials/secure-development-workflow/index.md
index d7c43a413b7..c98b1460786 100644
--- a/public/content/translations/bn/developers/tutorials/secure-development-workflow/index.md
+++ b/public/content/translations/bn/developers/tutorials/secure-development-workflow/index.md
@@ -1,10 +1,10 @@
---
-title: স্মার্ট কন্ট্রাক্ট সিকিউরিটি চেকলিস্ট
-description: নিরাপদ স্মার্ট কন্ট্রাক্ট লেখার জন্য একটি প্রস্তাবিত ওয়ার্কফ্লো
+title: "স্মার্ট কন্ট্রাক্ট সিকিউরিটি চেকলিস্ট"
+description: "নিরাপদ স্মার্ট কন্ট্রাক্ট লেখার জন্য একটি প্রস্তাবিত ওয়ার্কফ্লো"
author: "Trailofbits"
-tags: ["স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "solidity"]
+tags: ["স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "Solidity"]
skill: intermediate
-breadcrumb: সিকিউরিটি চেকলিস্ট
+breadcrumb: "সিকিউরিটি চেকলিস্ট"
lang: bn
published: 2020-09-07
source: Building secure contracts
diff --git a/public/content/translations/bn/developers/tutorials/send-token-ethersjs/index.md b/public/content/translations/bn/developers/tutorials/send-token-ethersjs/index.md
index ba7255e3925..04db5e15d94 100644
--- a/public/content/translations/bn/developers/tutorials/send-token-ethersjs/index.md
+++ b/public/content/translations/bn/developers/tutorials/send-token-ethersjs/index.md
@@ -1,10 +1,10 @@
---
-title: ethers.js ব্যবহার করে টোকেন পাঠানো
-description: ethers.js ব্যবহার করে টোকেন পাঠানোর জন্য নতুনদের উপযোগী গাইড।
-author: কিম ইয়ংজুন
+title: "ethers.js ব্যবহার করে টোকেন পাঠানো"
+description: "ethers.js ব্যবহার করে টোকেন পাঠানোর জন্য নতুনদের উপযোগী গাইড।"
+author: "কিম ইয়ংজুন"
tags: ["ETHERS.JS", "ERC-20", "টোকেন"]
skill: beginner
-breadcrumb: টোকেন পাঠান
+breadcrumb: "টোকেন পাঠান"
lang: bn
published: 2021-04-06
---
diff --git a/public/content/translations/bn/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/bn/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
index 790248ee271..74cde52ee04 100644
--- a/public/content/translations/bn/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
+++ b/public/content/translations/bn/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -1,10 +1,10 @@
---
-title: ওয়েব3 ব্যবহার করে লেনদেন পাঠানো
+title: "ওয়েব3 ব্যবহার করে লেনদেন পাঠানো"
description: "এটি ওয়েব3 ব্যবহার করে ইথিরিয়াম লেনদেন পাঠানোর জন্য একটি শিক্ষানবিস-বান্ধব গাইড। ইথিরিয়াম ব্লকচেইনে একটি লেনদেন পাঠানোর জন্য তিনটি প্রধান ধাপ রয়েছে: তৈরি করা, সাইন করা এবং ব্রডকাস্ট করা। আমরা এই তিনটি ধাপ নিয়েই আলোচনা করব।"
author: "এলান হ্যালপার্ন"
-tags: ["লেনদেন", "web3.js", "alchemy"]
+tags: ["লেনদেন", "web3.js", "Alchemy"]
skill: beginner
-breadcrumb: লেনদেন পাঠান
+breadcrumb: "লেনদেন পাঠান"
lang: bn
published: 2020-11-04
source: Alchemy docs
diff --git a/public/content/translations/bn/developers/tutorials/server-components/index.md b/public/content/translations/bn/developers/tutorials/server-components/index.md
index d0748fdbbb3..5f8304bfb39 100644
--- a/public/content/translations/bn/developers/tutorials/server-components/index.md
+++ b/public/content/translations/bn/developers/tutorials/server-components/index.md
@@ -1,11 +1,11 @@
---
title: "ওয়েব3 অ্যাপের জন্য সার্ভার কম্পোনেন্ট এবং এজেন্ট"
-description: এই টিউটোরিয়ালটি পড়ার পর, আপনি এমন টাইপস্ক্রিপ্ট (TypeScript) সার্ভার লিখতে পারবেন যা ব্লকচেইনের ইভেন্টগুলো শোনে এবং সেই অনুযায়ী নিজস্ব লেনদেনের মাধ্যমে সাড়া দেয়। এটি আপনাকে সেন্ট্রালাইজড অ্যাপ্লিকেশন লিখতে সক্ষম করবে (কারণ সার্ভারটি একটি পয়েন্ট অফ ফেইলিওর), তবে এটি ওয়েব3 এনটিটিগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারে। একই কৌশল ব্যবহার করে এমন একটি এজেন্টও লেখা যেতে পারে যা মানুষের হস্তক্ষেপ ছাড়াই অনচেইন ইভেন্টগুলোতে সাড়া দেয়।
-author: ওরি পোমেরান্টজ
+description: "এই টিউটোরিয়ালটি পড়ার পর, আপনি এমন টাইপস্ক্রিপ্ট (TypeScript) সার্ভার লিখতে পারবেন যা ব্লকচেইনের ইভেন্টগুলো শোনে এবং সেই অনুযায়ী নিজস্ব লেনদেনের মাধ্যমে সাড়া দেয়। এটি আপনাকে সেন্ট্রালাইজড অ্যাপ্লিকেশন লিখতে সক্ষম করবে (কারণ সার্ভারটি একটি পয়েন্ট অফ ফেইলিওর), তবে এটি ওয়েব3 এনটিটিগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারে। একই কৌশল ব্যবহার করে এমন একটি এজেন্টও লেখা যেতে পারে যা মানুষের হস্তক্ষেপ ছাড়াই অনচেইন ইভেন্টগুলোতে সাড়া দেয়।"
+author: "ওরি পোমেরান্টজ"
lang: bn
tags: ["এজেন্ট", "সার্ভার", "অফচেইন", "ডিএ্যাপস"]
skill: beginner
-breadcrumb: সার্ভার কম্পোনেন্ট
+breadcrumb: "সার্ভার কম্পোনেন্ট"
published: 2024-07-15
---
diff --git a/public/content/translations/bn/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/bn/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
index 8eede8d67b0..b4b0a8efc20 100644
--- a/public/content/translations/bn/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
+++ b/public/content/translations/bn/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -1,10 +1,10 @@
---
-title: জাভাস্ক্রিপ্টে ইথিরিয়াম ব্লকচেইন ব্যবহার করতে web3.js সেট আপ করুন
-description: জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন থেকে ইথিরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে কীভাবে web3.js লাইব্রেরি সেট আপ এবং কনফিগার করতে হয় তা শিখুন।
+title: "জাভাস্ক্রিপ্টে ইথিরিয়াম ব্লকচেইন ব্যবহার করতে web3.js সেট আপ করুন"
+description: "জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন থেকে ইথিরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে কীভাবে web3.js লাইব্রেরি সেট আপ এবং কনফিগার করতে হয় তা শিখুন।"
author: "jdourlens"
-tags: ["web3.js", "javascript"]
+tags: ["web3.js", "JavaScript"]
skill: beginner
-breadcrumb: web3.js সেটআপ
+breadcrumb: "web3.js সেটআপ"
lang: bn
published: 2020-04-11
source: EthereumDev
diff --git a/public/content/translations/bn/developers/tutorials/short-abi/index.md b/public/content/translations/bn/developers/tutorials/short-abi/index.md
index a24f7fa9798..f1d2e58bde8 100644
--- a/public/content/translations/bn/developers/tutorials/short-abi/index.md
+++ b/public/content/translations/bn/developers/tutorials/short-abi/index.md
@@ -1,11 +1,11 @@
---
title: "কলডাটা অপ্টিমাইজেশনের জন্য শর্ট ABI"
-description: অপ্টিমেস্টিক রোলআপ এর জন্য স্মার্ট কন্ট্রাক্ট অপ্টিমাইজ করা
-author: ওরি পোমেরান্টজ
+description: "অপ্টিমেস্টিক রোলআপ এর জন্য স্মার্ট কন্ট্রাক্ট অপ্টিমাইজ করা"
+author: "ওরি পোমেরান্টজ"
lang: bn
tags: ["লেয়ার ২"]
skill: intermediate
-breadcrumb: শর্ট ABI
+breadcrumb: "শর্ট ABI"
published: 2022-04-01
---
diff --git a/public/content/translations/bn/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/bn/developers/tutorials/smart-contract-security-guidelines/index.md
index aa011cb53b3..f3fd632067d 100644
--- a/public/content/translations/bn/developers/tutorials/smart-contract-security-guidelines/index.md
+++ b/public/content/translations/bn/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -1,10 +1,10 @@
---
-title: স্মার্ট কন্ট্রাক্ট নিরাপত্তা নির্দেশিকা
-description: আপনার ডিএ্যাপ তৈরি করার সময় বিবেচনা করার জন্য নিরাপত্তা নির্দেশিকার একটি চেকলিস্ট
+title: "স্মার্ট কন্ট্রাক্ট নিরাপত্তা নির্দেশিকা"
+description: "আপনার ডিএ্যাপ তৈরি করার সময় বিবেচনা করার জন্য নিরাপত্তা নির্দেশিকার একটি চেকলিস্ট"
author: "Trailofbits"
-tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা"]
+tags: ["Solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা"]
skill: intermediate
-breadcrumb: নিরাপত্তা নির্দেশিকা
+breadcrumb: "নিরাপত্তা নির্দেশিকা"
lang: bn
published: 2020-09-06
source: Building secure contracts
diff --git a/public/content/translations/bn/developers/tutorials/stealth-addr/index.md b/public/content/translations/bn/developers/tutorials/stealth-addr/index.md
index 9c7ec3aab01..a1188f761a3 100644
--- a/public/content/translations/bn/developers/tutorials/stealth-addr/index.md
+++ b/public/content/translations/bn/developers/tutorials/stealth-addr/index.md
@@ -1,10 +1,10 @@
---
title: "স্টিলথ এডড্রেস ব্যবহার করা"
description: "স্টিলথ এডড্রেস ব্যবহারকারীদের বেনামে সম্পদ স্থানান্তর করার অনুমতি দেয়। এই নিবন্ধটি পড়ার পরে, আপনি সক্ষম হবেন: স্টিলথ এডড্রেস কী এবং কীভাবে কাজ করে তা ব্যাখ্যা করতে, কীভাবে স্টিলথ এডড্রেস ব্যবহার করে বেনামিতা বজায় রাখা যায় তা বুঝতে এবং স্টিলথ এডড্রেস ব্যবহার করে এমন একটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশন লিখতে।"
-author: ওরি পোমেরান্টজ
-tags: ["স্টিলথ এডড্রেস", "গোপনীয়তা", "ক্রিপ্টোগ্রাফি", "rust", "wasm"]
+author: "ওরি পোমেরান্টজ"
+tags: ["স্টিলথ এডড্রেস", "গোপনীয়তা", "ক্রিপ্টোগ্রাফি", "Rust", "wasm"]
skill: intermediate
-breadcrumb: স্টিলথ এডড্রেস
+breadcrumb: "স্টিলথ এডড্রেস"
published: 2025-11-30
lang: bn
sidebarDepth: 3
diff --git a/public/content/translations/bn/developers/tutorials/the-graph-fixing-web3-data-querying/index.md b/public/content/translations/bn/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
index fd78adb2307..1d1b03c4500 100644
--- a/public/content/translations/bn/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
+++ b/public/content/translations/bn/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
@@ -1,9 +1,9 @@
---
title: "The Graph: ওয়েব3 ডাটা কুয়েরিং ঠিক করা"
description: "ব্লকচেইন হলো একটি ডাটাবেসের মতো কিন্তু SQL ছাড়া। সব ডাটা সেখানে আছে, কিন্তু এক্সেস করার কোনো উপায় নেই। চলুন দেখি কীভাবে The Graph এবং GraphQL দিয়ে এটি ঠিক করা যায়।"
-author: মার্কাস ওয়াস
+author: "মার্কাস ওয়াস"
lang: bn
-tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "কুয়েরিং", "the graph", "react"]
+tags: ["Solidity", "স্মার্ট কন্ট্রাক্ট", "কুয়েরিং", "the graph", "React"]
skill: intermediate
breadcrumb: The Graph
published: 2020-09-06
diff --git a/public/content/translations/bn/developers/tutorials/token-integration-checklist/index.md b/public/content/translations/bn/developers/tutorials/token-integration-checklist/index.md
index ae0af97cf04..8d14b73df6e 100644
--- a/public/content/translations/bn/developers/tutorials/token-integration-checklist/index.md
+++ b/public/content/translations/bn/developers/tutorials/token-integration-checklist/index.md
@@ -1,11 +1,11 @@
---
-title: টোকেন ইন্টিগ্রেশন চেকলিস্ট
-description: টোকেনের সাথে ইন্টারঅ্যাক্ট করার সময় বিবেচনা করার মতো বিষয়গুলোর একটি চেকলিস্ট
+title: "টোকেন ইন্টিগ্রেশন চেকলিস্ট"
+description: "টোকেনের সাথে ইন্টারঅ্যাক্ট করার সময় বিবেচনা করার মতো বিষয়গুলোর একটি চেকলিস্ট"
author: "Trailofbits"
lang: bn
-tags: ["solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "টোকেন"]
+tags: ["Solidity", "স্মার্ট কন্ট্রাক্ট", "নিরাপত্তা", "টোকেন"]
skill: intermediate
-breadcrumb: টোকেন ইন্টিগ্রেশন
+breadcrumb: "টোকেন ইন্টিগ্রেশন"
published: 2020-08-13
source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md
diff --git a/public/content/translations/bn/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md b/public/content/translations/bn/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
index 5d878f5e4af..86b6c2b8475 100644
--- a/public/content/translations/bn/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
+++ b/public/content/translations/bn/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
@@ -1,10 +1,10 @@
---
-title: একটি সলিডিটি স্মার্ট কন্ট্রাক্ট থেকে ERC-20 টোকেনের ট্রান্সফার এবং অ্যাপ্রুভাল
-description: সলিডিটি ব্যবহার করে একটি DEX স্মার্ট কন্ট্রাক্ট তৈরি করুন যা ERC-20 টোকেন ট্রান্সফার এবং অ্যাপ্রুভাল পরিচালনা করে।
+title: "একটি সলিডিটি স্মার্ট কন্ট্রাক্ট থেকে ERC-20 টোকেনের ট্রান্সফার এবং অ্যাপ্রুভাল"
+description: "সলিডিটি ব্যবহার করে একটি DEX স্মার্ট কন্ট্রাক্ট তৈরি করুন যা ERC-20 টোকেন ট্রান্সফার এবং অ্যাপ্রুভাল পরিচালনা করে।"
author: "jdourlens"
-tags: ["স্মার্ট কন্ট্রাক্ট", "টোকেন", "solidity", "erc-20"]
+tags: ["স্মার্ট কন্ট্রাক্ট", "টোকেন", "Solidity", "erc-20"]
skill: intermediate
-breadcrumb: ERC-20 ট্রান্সফার
+breadcrumb: "ERC-20 ট্রান্সফার"
lang: bn
published: 2020-04-07
source: EthereumDev
diff --git a/public/content/translations/bn/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md b/public/content/translations/bn/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
index 5cdc954b4ec..73131710337 100644
--- a/public/content/translations/bn/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
+++ b/public/content/translations/bn/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md
@@ -1,10 +1,10 @@
---
-title: ERC-20 টোকেন স্মার্ট কন্ট্রাক্ট বোঝা
-description: একটি সম্পূর্ণ Solidity স্মার্ট কন্ট্রাক্ট উদাহরণ এবং ব্যাখ্যার মাধ্যমে কীভাবে ERC-20 টোকেন স্ট্যান্ডার্ড প্রয়োগ করতে হয় তা শিখুন।
+title: "ERC-20 টোকেন স্মার্ট কন্ট্রাক্ট বোঝা"
+description: "একটি সম্পূর্ণ Solidity স্মার্ট কন্ট্রাক্ট উদাহরণ এবং ব্যাখ্যার মাধ্যমে কীভাবে ERC-20 টোকেন স্ট্যান্ডার্ড প্রয়োগ করতে হয় তা শিখুন।"
author: "jdourlens"
-tags: ["স্মার্ট কন্ট্রাক্ট", "টোকেন", "solidity", "erc-20"]
+tags: ["স্মার্ট কন্ট্রাক্ট", "টোকেন", "Solidity", "erc-20"]
skill: beginner
-breadcrumb: ERC-20 টোকেনের বেসিক
+breadcrumb: "ERC-20 টোকেনের বেসিক"
lang: bn
published: 2020-04-05
source: EthereumDev
diff --git a/public/content/translations/bn/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/bn/developers/tutorials/uniswap-v2-annotated-code/index.md
index c1177192fad..2b949d58d4c 100644
--- a/public/content/translations/bn/developers/tutorials/uniswap-v2-annotated-code/index.md
+++ b/public/content/translations/bn/developers/tutorials/uniswap-v2-annotated-code/index.md
@@ -1,10 +1,10 @@
---
title: "Uniswap-v2 কন্ট্রাক্ট ওয়াক-থ্রু"
description: "Uniswap-v2 কন্ট্রাক্ট কীভাবে কাজ করে? এটি কেন সেভাবে লেখা হয়েছে?"
-author: ওরি পোমেরান্টজ
-tags: ["solidity", "ডিএ্যাপস"]
+author: "ওরি পোমেরান্টজ"
+tags: ["Solidity", "ডিএ্যাপস"]
skill: intermediate
-breadcrumb: Uniswap v2 ওয়াক-থ্রু
+breadcrumb: "Uniswap v2 ওয়াক-থ্রু"
published: 2021-05-01
lang: bn
---
diff --git a/public/content/translations/bn/developers/tutorials/using-websockets/index.md b/public/content/translations/bn/developers/tutorials/using-websockets/index.md
index 3741e4f1a8b..d4c17668e1f 100644
--- a/public/content/translations/bn/developers/tutorials/using-websockets/index.md
+++ b/public/content/translations/bn/developers/tutorials/using-websockets/index.md
@@ -1,11 +1,11 @@
---
-title: ওয়েবসকেটস ব্যবহার
-description: JSON-RPC রিকোয়েস্ট করতে এবং ইভেন্টগুলোতে সাবস্ক্রাইব করতে ওয়েবসকেটস এবং অ্যালকেমি ব্যবহারের গাইড।
+title: "ওয়েবসকেটস ব্যবহার"
+description: "JSON-RPC রিকোয়েস্ট করতে এবং ইভেন্টগুলোতে সাবস্ক্রাইব করতে ওয়েবসকেটস এবং অ্যালকেমি ব্যবহারের গাইড।"
author: "এলান হ্যালপার্ন"
lang: bn
-tags: ["alchemy", "websockets", "querying", "javascript"]
+tags: ["Alchemy", "websockets", "querying", "JavaScript"]
skill: beginner
-breadcrumb: ওয়েবসকেটস
+breadcrumb: "ওয়েবসকেটস"
source: Alchemy docs
sourceUrl: https://www.alchemy.com/docs/reference/best-practices-for-using-websockets-in-web3
published: 2020-12-01
diff --git a/public/content/translations/bn/developers/tutorials/yellow-paper-evm/index.md b/public/content/translations/bn/developers/tutorials/yellow-paper-evm/index.md
index ba58945353d..c6fb9e88f4d 100644
--- a/public/content/translations/bn/developers/tutorials/yellow-paper-evm/index.md
+++ b/public/content/translations/bn/developers/tutorials/yellow-paper-evm/index.md
@@ -1,10 +1,10 @@
---
-title: ইয়েলো পেপারের ইভিএম (EVM) স্পেসিফিকেশন বোঝা
-description: ইয়েলো পেপারের যে অংশটি ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) ব্যাখ্যা করে, যা ইথেরিয়ামের আনুষ্ঠানিক স্পেসিফিকেশন, তা বোঝা।
+title: "ইয়েলো পেপারের ইভিএম (EVM) স্পেসিফিকেশন বোঝা"
+description: "ইয়েলো পেপারের যে অংশটি ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) ব্যাখ্যা করে, যা ইথেরিয়ামের আনুষ্ঠানিক স্পেসিফিকেশন, তা বোঝা।"
author: "qbzzt"
tags: ["evm"]
skill: intermediate
-breadcrumb: ইয়েলো পেপার ইভিএম (EVM)
+breadcrumb: "ইয়েলো পেপার ইভিএম (EVM)"
lang: bn
published: 2022-05-15
---
diff --git a/public/content/translations/bn/eips/index.md b/public/content/translations/bn/eips/index.md
index ad55b9b5eff..7f13a24bbc6 100644
--- a/public/content/translations/bn/eips/index.md
+++ b/public/content/translations/bn/eips/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়াম ইমপ্রুভমেন্ট প্রপোজাল (EIPs)
-description: EIPs বোঝার জন্য আপনার প্রয়োজনীয় প্রাথমিক তথ্য
+title: "ইথিরিয়াম ইমপ্রুভমেন্ট প্রপোজাল (EIPs)"
+description: "EIPs বোঝার জন্য আপনার প্রয়োজনীয় প্রাথমিক তথ্য"
lang: bn
---
diff --git a/public/content/translations/bn/energy-consumption/index.md b/public/content/translations/bn/energy-consumption/index.md
index 62fb9ccf3ac..d09037dbdae 100644
--- a/public/content/translations/bn/energy-consumption/index.md
+++ b/public/content/translations/bn/energy-consumption/index.md
@@ -1,12 +1,12 @@
---
-title: ইথিরিয়ামের শক্তি খরচ
-description: ইথিরিয়ামের শক্তি খরচ বোঝার জন্য আপনার প্রয়োজনীয় প্রাথমিক তথ্য।
+title: "ইথিরিয়ামের শক্তি খরচ"
+description: "ইথিরিয়ামের শক্তি খরচ বোঝার জন্য আপনার প্রয়োজনীয় প্রাথমিক তথ্য।"
lang: bn
---
# ইথিরিয়ামের শক্তি ব্যয় {#proof-of-stake-energy}
-[ইথিরিয়াম](/) হলো একটি পরিবেশবান্ধব ব্লকচেইন। ইথিরিয়ামের [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) কনসেন্সাস মেকানিজম [নেটওয়ার্ক সুরক্ষিত করতে শক্তির](/developers/docs/consensus-mechanisms/pow) পরিবর্তে ETH ব্যবহার করে। সমগ্র গ্লোবাল নেটওয়ার্ক জুড়ে ইথিরিয়ামের শক্তি খরচ আনুমানিক [~0.0026 TWh/yr](https://carbon-ratings.com/eth-report-2022)।
+[ইথিরিয়াম](/) হলো একটি পরিবেশবান্ধব ব্লকচেইন। ইথিরিয়ামের [প্রুফ-অফ-স্টেক](/developers/docs/consensus-mechanisms/pos) কনসেন্সাস মেকানিজম [নেটওয়ার্ক সুরক্ষিত করতে শক্তির](/developers/docs/consensus-mechanisms/pow) পরিবর্তে ETH ব্যবহার করে। সমগ্র গ্লোবাল নেটওয়ার্ক জুড়ে ইথিরিয়ামের শক্তি খরচ আনুমানিক [\~0.0026 TWh/yr](https://carbon-ratings.com/eth-report-2022)।
ইথিরিয়ামের শক্তি খরচের অনুমানটি [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com)-এর একটি গবেষণা থেকে এসেছে। তারা ইথিরিয়াম নেটওয়ার্কের বিদ্যুৎ খরচ এবং কার্বন ফুটপ্রিন্টের বটম-আপ অনুমান তৈরি করেছে ([রিপোর্টটি দেখুন](https://carbon-ratings.com/eth-report-2022))। তারা বিভিন্ন হার্ডওয়্যার এবং ক্লায়েন্ট সফটওয়্যার কনফিগারেশন সহ বিভিন্ন নোডের বিদ্যুৎ খরচ পরিমাপ করেছে। নেটওয়ার্কের বার্ষিক বিদ্যুৎ খরচের আনুমানিক **2,601 MWh** (0.0026 TWh) অঞ্চল-নির্দিষ্ট কার্বন তীব্রতা ফ্যাক্টর প্রয়োগ করে বার্ষিক **870 টন CO2e** কার্বন নির্গমনের সমতুল্য। নেটওয়ার্কে নোড প্রবেশ এবং ত্যাগের সাথে সাথে এই মানটি পরিবর্তিত হয় - আপনি [Cambridge Blockchain network Sustainability Index](https://ccaf.io/cbnsi/ethereum)-এর রোলিং 7-দিনের গড় অনুমান ব্যবহার করে এর ট্র্যাক রাখতে পারেন (মনে রাখবেন যে তারা তাদের অনুমানের জন্য কিছুটা ভিন্ন পদ্ধতি ব্যবহার করে - বিস্তারিত তাদের সাইটে উপলব্ধ)।
@@ -43,7 +43,7 @@ lang: bn
অনেক নিবন্ধ ব্লকচেইনের জন্য "লেনদেন প্রতি" শক্তি ব্যয়ের অনুমান করে। এটি বিভ্রান্তিকর হতে পারে কারণ একটি ব্লক প্রস্তাব এবং যাচাই করার জন্য প্রয়োজনীয় শক্তি এর মধ্যে থাকা লেনদেনের সংখ্যার উপর নির্ভর করে না। শক্তি ব্যয়ের একটি লেনদেন প্রতি ইউনিট বোঝায় যে কম লেনদেনের ফলে কম শক্তি ব্যয় হবে এবং এর বিপরীতটিও, যা আসলে সঠিক নয়। এছাড়াও, লেনদেন প্রতি অনুমানগুলি একটি ব্লকচেইনের লেনদেন থ্রুপুট কীভাবে সংজ্ঞায়িত করা হয় তার প্রতি খুব সংবেদনশীল, এবং এই সংজ্ঞাটি পরিবর্তন করে মানটিকে বড় বা ছোট দেখানোর জন্য কারসাজি করা যেতে পারে।
-উদাহরণস্বরূপ, ইথিরিয়ামে, লেনদেন থ্রুপুট শুধুমাত্র বেস লেয়ারের নয় - এটি এর সমস্ত "[লেয়ার 2](/layer-2/)" রেলআপস-এর লেনদেন থ্রুপুটের যোগফলও। লেয়ার 2-গুলি সাধারণত গণনায় অন্তর্ভুক্ত করা হয় না, তবে সিকোয়েন্সার দ্বারা ব্যবহৃত অতিরিক্ত শক্তি (ছোট) এবং তারা যে পরিমাণ লেনদেন প্রক্রিয়া করে (বড়) তা হিসাব করলে সম্ভবত লেনদেন প্রতি অনুমান ব্যাপকভাবে হ্রাস পাবে। প্ল্যাটফর্ম জুড়ে লেনদেন প্রতি শক্তি খরচের তুলনা বিভ্রান্তিকর হতে পারে এটি তার একটি কারণ।
+উদাহরণস্বরূপ, ইথিরিয়ামে, লেনদেন থ্রুপুট শুধুমাত্র বেস লেয়ারের নয় - এটি এর সমস্ত "[লেয়ার 2](/layer-2/)" রোলআপস-এর লেনদেন থ্রুপুটের যোগফলও। লেয়ার 2-গুলি সাধারণত গণনায় অন্তর্ভুক্ত করা হয় না, তবে সিকোয়েন্সার দ্বারা ব্যবহৃত অতিরিক্ত শক্তি (ছোট) এবং তারা যে পরিমাণ লেনদেন প্রক্রিয়া করে (বড়) তা হিসাব করলে সম্ভবত লেনদেন প্রতি অনুমান ব্যাপকভাবে হ্রাস পাবে। প্ল্যাটফর্ম জুড়ে লেনদেন প্রতি শক্তি খরচের তুলনা বিভ্রান্তিকর হতে পারে এটি তার একটি কারণ।
## ইথিরিয়ামের কার্বন ঋণ {#carbon-debt}
diff --git a/public/content/translations/bn/eth/supply/index.md b/public/content/translations/bn/eth/supply/index.md
index 71cf7943630..83239988dae 100644
--- a/public/content/translations/bn/eth/supply/index.md
+++ b/public/content/translations/bn/eth/supply/index.md
@@ -1,6 +1,6 @@
---
-title: ETH সাপ্লাই এবং ইস্যুয়েন্স বোঝা
-description: ETH সাপ্লাই এবং ইস্যুয়েন্স সম্পর্কে নতুনদের জন্য একটি গাইড, যেখানে EIPs, PoS এবং EIP-1559 এর মতো মূল ধারণাগুলো কভার করা হয়েছে।
+title: "ETH সাপ্লাই এবং ইস্যুয়েন্স বোঝা"
+description: "ETH সাপ্লাই এবং ইস্যুয়েন্স সম্পর্কে নতুনদের জন্য একটি গাইড, যেখানে EIPs, PoS এবং EIP-1559 এর মতো মূল ধারণাগুলো কভার করা হয়েছে।"
lang: bn
---
diff --git a/public/content/translations/bn/foundation/index.md b/public/content/translations/bn/foundation/index.md
index 37752fe0b61..cb6352c45fe 100644
--- a/public/content/translations/bn/foundation/index.md
+++ b/public/content/translations/bn/foundation/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়াম ফাউন্ডেশন
-description: ইথিরিয়াম ফাউন্ডেশন (EF) সম্পর্কে জানুন, এটি একটি অলাভজনক সংস্থা যা ইথিরিয়াম এবং এর সাথে সম্পর্কিত প্রযুক্তিগুলোকে সমর্থন করার জন্য নিবেদিত।
+title: "ইথিরিয়াম ফাউন্ডেশন"
+description: "ইথিরিয়াম ফাউন্ডেশন (EF) সম্পর্কে জানুন, এটি একটি অলাভজনক সংস্থা যা ইথিরিয়াম এবং এর সাথে সম্পর্কিত প্রযুক্তিগুলোকে সমর্থন করার জন্য নিবেদিত।"
hideEditButton: true
lang: bn
---
diff --git a/public/content/translations/bn/gaming/index.md b/public/content/translations/bn/gaming/index.md
index 3868b2b0f4b..92dd0bb6cd5 100644
--- a/public/content/translations/bn/gaming/index.md
+++ b/public/content/translations/bn/gaming/index.md
@@ -1,12 +1,12 @@
---
-title: ইথিরিয়ামে গেমিং
+title: "ইথিরিয়ামে গেমিং"
lang: bn
template: use-cases
image: /images/robot-help-bar.png
sidebarDepth: 2
-summaryPoint1: গেমের নিয়ম এবং স্টেট কোনো স্টুডিওর সার্ভারের বদলে ইথিরিয়াম ব্লকচেইন দ্বারা প্রয়োগ করা যেতে পারে, যা অনচেইন গেমের একটি মূল সুবিধা
-summaryPoint2: যে কেউ মড, বট বা সম্পূর্ণ নতুন গেম তৈরি করতে পারে যা একই ওপেন অনচেইন ডেটার সাথে যুক্ত হয়
-summaryPoint3: উদ্দেশ্য-নির্মিত L2-গুলো কম ফিতে রিয়েল-টাইম গেমপ্লে সক্ষম করে, যেখানে গেম ডেভেলপমেন্ট ফ্রেমওয়ার্কগুলো অনচেইন গেম তৈরি করাকে আগের চেয়ে অনেক বেশি সহজলভ্য করে তোলে
+summaryPoint1: "গেমের নিয়ম এবং স্টেট কোনো স্টুডিওর সার্ভারের বদলে ইথিরিয়াম ব্লকচেইন দ্বারা প্রয়োগ করা যেতে পারে, যা অনচেইন গেমের একটি মূল সুবিধা"
+summaryPoint2: "যে কেউ মড, বট বা সম্পূর্ণ নতুন গেম তৈরি করতে পারে যা একই ওপেন অনচেইন ডেটার সাথে যুক্ত হয়"
+summaryPoint3: "উদ্দেশ্য-নির্মিত L2-গুলো কম ফিতে রিয়েল-টাইম গেমপ্লে সক্ষম করে, যেখানে গেম ডেভেলপমেন্ট ফ্রেমওয়ার্কগুলো অনচেইন গেম তৈরি করাকে আগের চেয়ে অনেক বেশি সহজলভ্য করে তোলে"
buttons:
- content: আরও জানুন
toId: gaming-on-ethereum
diff --git a/public/content/translations/bn/glossary/index.md b/public/content/translations/bn/glossary/index.md
index 594364713ab..ce46d1f4156 100644
--- a/public/content/translations/bn/glossary/index.md
+++ b/public/content/translations/bn/glossary/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়াম শব্দকোষ
-description: ইথিরিয়াম সম্পর্কিত প্রযুক্তিগত এবং অ-প্রযুক্তিগত শব্দগুলোর একটি অসম্পূর্ণ শব্দকোষ
+title: "ইথিরিয়াম শব্দকোষ"
+description: "ইথিরিয়াম সম্পর্কিত প্রযুক্তিগত এবং অ-প্রযুক্তিগত শব্দগুলোর একটি অসম্পূর্ণ শব্দকোষ"
lang: bn
---
diff --git a/public/content/translations/bn/governance/index.md b/public/content/translations/bn/governance/index.md
index 1873a171dd3..477fd54dd81 100644
--- a/public/content/translations/bn/governance/index.md
+++ b/public/content/translations/bn/governance/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়াম গভর্নেন্স
-description: ইথিরিয়াম সম্পর্কে কীভাবে সিদ্ধান্ত নেওয়া হয় তার একটি ভূমিকা।
+title: "ইথিরিয়াম গভর্নেন্স"
+description: "ইথিরিয়াম সম্পর্কে কীভাবে সিদ্ধান্ত নেওয়া হয় তার একটি ভূমিকা।"
lang: bn
---
diff --git a/public/content/translations/bn/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/bn/guides/how-to-create-an-ethereum-account/index.md
index 824347219a6..fe4ac7c8b1d 100644
--- a/public/content/translations/bn/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/bn/guides/how-to-create-an-ethereum-account/index.md
@@ -1,6 +1,6 @@
---
-title: কীভাবে একটি ইথিরিয়াম একাউন্ট "তৈরি" করবেন
-description: একটি ওয়ালেট ব্যবহার করে ইথিরিয়াম একাউন্ট তৈরির ধাপে ধাপে নির্দেশিকা।
+title: "কীভাবে একটি ইথিরিয়াম একাউন্ট \"তৈরি\" করবেন"
+description: "একটি ওয়ালেট ব্যবহার করে ইথিরিয়াম একাউন্ট তৈরির ধাপে ধাপে নির্দেশিকা।"
lang: bn
---
diff --git a/public/content/translations/bn/guides/how-to-id-scam-tokens/index.md b/public/content/translations/bn/guides/how-to-id-scam-tokens/index.md
index 399d7b80e59..6848f7aeaa2 100644
--- a/public/content/translations/bn/guides/how-to-id-scam-tokens/index.md
+++ b/public/content/translations/bn/guides/how-to-id-scam-tokens/index.md
@@ -1,6 +1,6 @@
---
-title: স্ক্যাম টোকেন কীভাবে শনাক্ত করবেন
-description: স্ক্যাম টোকেন বোঝা, কীভাবে তারা নিজেদের বৈধ হিসেবে উপস্থাপন করে এবং কীভাবে সেগুলো এড়িয়ে চলবেন।
+title: "স্ক্যাম টোকেন কীভাবে শনাক্ত করবেন"
+description: "স্ক্যাম টোকেন বোঝা, কীভাবে তারা নিজেদের বৈধ হিসেবে উপস্থাপন করে এবং কীভাবে সেগুলো এড়িয়ে চলবেন।"
lang: bn
---
diff --git a/public/content/translations/bn/guides/how-to-revoke-token-access/index.md b/public/content/translations/bn/guides/how-to-revoke-token-access/index.md
index 7e45873811b..fa6ae58456d 100644
--- a/public/content/translations/bn/guides/how-to-revoke-token-access/index.md
+++ b/public/content/translations/bn/guides/how-to-revoke-token-access/index.md
@@ -1,6 +1,6 @@
---
-title: আপনার ক্রিপ্টো ফান্ডের স্মার্ট কন্ট্রাক্ট এক্সেস কীভাবে বাতিল করবেন
-description: ক্ষতিকারক স্মার্ট কন্ট্রাক্ট টোকেন এক্সেস বাতিল করার একটি নির্দেশিকা
+title: "আপনার ক্রিপ্টো ফান্ডের স্মার্ট কন্ট্রাক্ট এক্সেস কীভাবে বাতিল করবেন"
+description: "ক্ষতিকারক স্মার্ট কন্ট্রাক্ট টোকেন এক্সেস বাতিল করার একটি নির্দেশিকা"
lang: bn
---
diff --git a/public/content/translations/bn/guides/how-to-swap-tokens/index.md b/public/content/translations/bn/guides/how-to-swap-tokens/index.md
index e290fa75841..47e8cd7dfc1 100644
--- a/public/content/translations/bn/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/bn/guides/how-to-swap-tokens/index.md
@@ -1,6 +1,6 @@
---
-title: কীভাবে টোকেন সোয়াপ করবেন
-description: ইথিরিয়ামে কীভাবে টোকেন সোয়াপ করতে হয় তার একটি গাইড।
+title: "কীভাবে টোকেন সোয়াপ করবেন"
+description: "ইথিরিয়ামে কীভাবে টোকেন সোয়াপ করতে হয় তার একটি গাইড।"
lang: bn
---
diff --git a/public/content/translations/bn/guides/how-to-use-a-bridge/index.md b/public/content/translations/bn/guides/how-to-use-a-bridge/index.md
index fde334f3331..490531cb3d9 100644
--- a/public/content/translations/bn/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/bn/guides/how-to-use-a-bridge/index.md
@@ -1,6 +1,6 @@
---
-title: টোকেন কীভাবে লেয়ার ২-এ ব্রিজ করবেন
-description: একটি গাইড যা ব্যাখ্যা করে কীভাবে একটি ব্রিজ ব্যবহার করে ইথিরিয়াম থেকে লেয়ার ২-এ টোকেন স্থানান্তর করতে হয়।
+title: "টোকেন কীভাবে লেয়ার ২-এ ব্রিজ করবেন"
+description: "একটি গাইড যা ব্যাখ্যা করে কীভাবে একটি ব্রিজ ব্যবহার করে ইথিরিয়াম থেকে লেয়ার ২-এ টোকেন স্থানান্তর করতে হয়।"
lang: bn
---
diff --git a/public/content/translations/bn/guides/how-to-use-a-wallet/index.md b/public/content/translations/bn/guides/how-to-use-a-wallet/index.md
index 64ebb04314b..2e0f3684a74 100644
--- a/public/content/translations/bn/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/bn/guides/how-to-use-a-wallet/index.md
@@ -1,7 +1,7 @@
---
-title: কীভাবে একটি ওয়ালেট ব্যবহার করবেন
-metaTitle: কীভাবে ইথিরিয়াম ওয়ালেট ব্যবহার করবেন | ধাপে ধাপে
-description: কীভাবে টোকেন পাঠাতে, গ্রহণ করতে এবং ওয়েব3 প্রজেক্টের সাথে কানেক্ট করতে হয় তার একটি গাইড।
+title: "কীভাবে একটি ওয়ালেট ব্যবহার করবেন"
+metaTitle: "কীভাবে ইথিরিয়াম ওয়ালেট ব্যবহার করবেন | ধাপে ধাপে"
+description: "কীভাবে টোকেন পাঠাতে, গ্রহণ করতে এবং ওয়েব3 প্রজেক্টের সাথে কানেক্ট করতে হয় তার একটি গাইড।"
lang: bn
---
diff --git a/public/content/translations/bn/guides/index.md b/public/content/translations/bn/guides/index.md
index 44f9e5d6d13..f6073264b5b 100644
--- a/public/content/translations/bn/guides/index.md
+++ b/public/content/translations/bn/guides/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়াম গাইড
-description: নতুনদের জন্য ইথিরিয়াম ব্যবহারের বেসিক বিষয়গুলো ব্যাখ্যা করার জন্য ব্যবহারিক গাইডের একটি সংগ্রহ।
+title: "ইথিরিয়াম গাইড"
+description: "নতুনদের জন্য ইথিরিয়াম ব্যবহারের বেসিক বিষয়গুলো ব্যাখ্যা করার জন্য ব্যবহারিক গাইডের একটি সংগ্রহ।"
lang: bn
---
diff --git a/public/content/translations/bn/nft/index.md b/public/content/translations/bn/nft/index.md
index 779bdfaef0a..957c0377f2c 100644
--- a/public/content/translations/bn/nft/index.md
+++ b/public/content/translations/bn/nft/index.md
@@ -1,16 +1,16 @@
---
-title: নন-ফান্জেবল টোকেন (NFT)
-metaTitle: NFT কী? | সুবিধা এবং ব্যবহার
-description: ইথিরিয়ামে NFT-এর একটি ওভারভিউ
+title: "নন-ফান্জেবল টোকেন (NFT)"
+metaTitle: "NFT কী? | সুবিধা এবং ব্যবহার"
+description: "ইথিরিয়ামে NFT-এর একটি ওভারভিউ"
lang: bn
template: use-cases
emoji: ":frame_with_picture:"
sidebarDepth: 2
image: /images/infrastructure_transparent.png
-alt: একটি Eth লোগো হলোগ্রামের মাধ্যমে প্রদর্শিত হচ্ছে।
-summaryPoint1: ইথিরিয়াম-ভিত্তিক সম্পদ হিসেবে যেকোনো অনন্য জিনিসকে উপস্থাপন করার একটি উপায়।
-summaryPoint2: NFT কন্টেন্ট ক্রিয়েটরদের আগের চেয়ে অনেক বেশি ক্ষমতা দিচ্ছে।
-summaryPoint3: ইথিরিয়াম ব্লকচেইনে স্মার্ট কন্ট্রাক্ট দ্বারা পরিচালিত।
+alt: "একটি Eth লোগো হলোগ্রামের মাধ্যমে প্রদর্শিত হচ্ছে।"
+summaryPoint1: "ইথিরিয়াম-ভিত্তিক সম্পদ হিসেবে যেকোনো অনন্য জিনিসকে উপস্থাপন করার একটি উপায়।"
+summaryPoint2: "NFT কন্টেন্ট ক্রিয়েটরদের আগের চেয়ে অনেক বেশি ক্ষমতা দিচ্ছে।"
+summaryPoint3: "ইথিরিয়াম ব্লকচেইনে স্মার্ট কন্ট্রাক্ট দ্বারা পরিচালিত।"
---
## NFT কী? {#what-are-nfts}
@@ -67,7 +67,7 @@ NFT অনেক কাজে ব্যবহৃত হয়, যার মধ্
অথবা কোনো স্পোর্টিং ইভেন্টের টিকিটের কথা বিবেচনা করুন। ঠিক যেমন **কোনো ইভেন্টের আয়োজক কতগুলো টিকিট বিক্রি করবেন তা বেছে নিতে পারেন**, তেমনি একজন NFT ক্রিয়েটর সিদ্ধান্ত নিতে পারেন যে কতগুলো রেপ্লিকা থাকবে। কখনো কখনো এগুলো হুবহু রেপ্লিকা হয়, যেমন 5000টি সাধারণ প্রবেশ টিকিট। কখনো কখনো এমন বেশ কয়েকটি মিন্ট করা হয় যা খুব একই রকম, কিন্তু প্রতিটি সামান্য আলাদা, যেমন একটি নির্ধারিত আসনসহ টিকিট। এগুলো টিকিট হ্যান্ডলারদের অর্থ প্রদান না করেই পিয়ার-টু-পিয়ার কেনা এবং বিক্রি করা যেতে পারে এবং ক্রেতা সর্বদা কন্ট্রাক্ট এডড্রেস চেক করে টিকিটের সত্যতার নিশ্চয়তা পেতে পারেন।
-ethereum.org-এ, **NFT ব্যবহার করে প্রদর্শন করা হয় যে লোকেরা আমাদের Github রিপোজিটরিতে অর্থপূর্ণভাবে অবদান রেখেছেন** (ওয়েবসাইট প্রোগ্রাম করেছেন, কোনো আর্টিকেল লিখেছেন বা পরিবর্তন করেছেন...), আমাদের কন্টেন্ট অনুবাদ করেছেন, বা আমাদের কমিউনিটি কলগুলোতে উপস্থিত হয়েছেন, এবং এমনকি আমাদের নিজস্ব NFT ডোমেইন নামও রয়েছে। আপনি যদি ethereum.org-এ অবদান রাখেন, তাহলে আপনি একটি [POAP](/glossary/#poap) NFT ক্লেইম করতে পারেন। কিছু ক্রিপ্টো মিটআপ POAP-কে টিকিট হিসেবে ব্যবহার করেছে। [অবদান রাখা সম্পর্কে আরও জানুন](/contributing/#poap)। কমিউনিটি অ্যাচিভমেন্ট NFT দেখতে আপনি আমাদের [ethereum.org সংগ্রহযোগ্য বস্তু](/collectibles/) পেজটিও এক্সপ্লোর করতে পারেন।
+ethereum.org-এ, **NFT ব্যবহার করে প্রদর্শন করা হয় যে লোকেরা আমাদের GitHub রিপোজিটরিতে অর্থপূর্ণভাবে অবদান রেখেছেন** (ওয়েবসাইট প্রোগ্রাম করেছেন, কোনো আর্টিকেল লিখেছেন বা পরিবর্তন করেছেন...), আমাদের কন্টেন্ট অনুবাদ করেছেন, বা আমাদের কমিউনিটি কলগুলোতে উপস্থিত হয়েছেন, এবং এমনকি আমাদের নিজস্ব NFT ডোমেইন নামও রয়েছে। আপনি যদি ethereum.org-এ অবদান রাখেন, তাহলে আপনি একটি [POAP](/glossary/#poap) NFT ক্লেইম করতে পারেন। কিছু ক্রিপ্টো মিটআপ POAP-কে টিকিট হিসেবে ব্যবহার করেছে। [অবদান রাখা সম্পর্কে আরও জানুন](/contributing/#poap)। কমিউনিটি অ্যাচিভমেন্ট NFT দেখতে আপনি আমাদের [ethereum.org সংগ্রহযোগ্য বস্তু](/collectibles/) পেজটিও এক্সপ্লোর করতে পারেন।

diff --git a/public/content/translations/bn/payments/index.md b/public/content/translations/bn/payments/index.md
index eb210a8ddbc..b342432eb20 100644
--- a/public/content/translations/bn/payments/index.md
+++ b/public/content/translations/bn/payments/index.md
@@ -1,16 +1,16 @@
---
-title: ইথিরিয়াম পেমেন্টস
-metaTitle: ইথিরিয়ামে পেমেন্ট
-description: ইথিরিয়ামে পেমেন্টের একটি ওভারভিউ
+title: "ইথিরিয়াম পেমেন্টস"
+metaTitle: "ইথিরিয়ামে পেমেন্ট"
+description: "ইথিরিয়ামে পেমেন্টের একটি ওভারভিউ"
lang: bn
template: use-cases
emoji: ":frame_with_picture:"
sidebarDepth: 2
image: /images/impact_transparent.png
-alt: একটি ইথিরিয়াম লোগো এবং সাথে দেওয়া হাত প্রদর্শিত হচ্ছে।
-summaryPoint1: এমন একটি বিশ্ব যেখানে তথ্যর মতো অর্থও স্বাধীনভাবে চলাচল করে
-summaryPoint2: উন্মুক্ত এবং গ্লোবাল, যা সবার জন্য সীমানাহীন লেনদেন সক্ষম করে
-summaryPoint3: এক মিনিটের মধ্যে পেমেন্ট পাওয়া যায়
+alt: "একটি ইথিরিয়াম লোগো এবং সাথে দেওয়া হাত প্রদর্শিত হচ্ছে।"
+summaryPoint1: "এমন একটি বিশ্ব যেখানে তথ্যর মতো অর্থও স্বাধীনভাবে চলাচল করে"
+summaryPoint2: "উন্মুক্ত এবং গ্লোবাল, যা সবার জন্য সীমানাহীন লেনদেন সক্ষম করে"
+summaryPoint3: "এক মিনিটের মধ্যে পেমেন্ট পাওয়া যায়"
---
প্রতিদিন, লক্ষ লক্ষ মানুষ একই চ্যালেঞ্জের সম্মুখীন হয়: সীমানা পেরিয়ে অর্থ স্থানান্তর করা ধীর, ব্যয়বহুল এবং প্রায়শই হতাশাজনক। বালির একজন ফ্রিল্যান্সার তার নিউইয়র্কের ক্লায়েন্টের কাছ থেকে পেমেন্ট ক্লিয়ার হওয়ার জন্য দিনের পর দিন অপেক্ষা করেন। এটি বিশেষ করে সীমিত ব্যাংকিং অবকাঠামো থাকা অঞ্চলের মানুষদের প্রভাবিত করে, যার ফলে গ্লোবাল অর্থনীতিতে অংশগ্রহণ করা কঠিন হয়ে পড়ে।
@@ -62,7 +62,7 @@ summaryPoint3: এক মিনিটের মধ্যে পেমেন্
আজই একটি ওয়ালেট অ্যাপ দিয়ে আপনার ইথিরিয়াম একাউন্ট তৈরি করুন।
-
+
শুরু করুন
diff --git a/public/content/translations/bn/prediction-markets/index.md b/public/content/translations/bn/prediction-markets/index.md
index ede54d99605..c946f366329 100644
--- a/public/content/translations/bn/prediction-markets/index.md
+++ b/public/content/translations/bn/prediction-markets/index.md
@@ -1,11 +1,11 @@
---
-title: প্রেডিকশন মার্কেট
+title: "প্রেডিকশন মার্কেট"
lang: bn
template: use-cases
image: /images/use-cases/prediction-markets.png
sidebarDepth: 2
-summaryPoint1: সঠিক পূর্বাভাস তৈরি করে আর্থিক প্রণোদনা পান
-summaryPoint2: ভবিষ্যতের ইভেন্ট সম্পর্কে উচ্চ মানের পূর্বাভাস
+summaryPoint1: "সঠিক পূর্বাভাস তৈরি করে আর্থিক প্রণোদনা পান"
+summaryPoint2: "ভবিষ্যতের ইভেন্ট সম্পর্কে উচ্চ মানের পূর্বাভাস"
buttons:
- content: আরও জানুন
toId: how-prediction-markets-work
diff --git a/public/content/translations/bn/privacy/index.md b/public/content/translations/bn/privacy/index.md
index e47d711a303..b5c8c6817d8 100644
--- a/public/content/translations/bn/privacy/index.md
+++ b/public/content/translations/bn/privacy/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়ামে প্রাইভেসি
-description: ইথিরিয়ামে আপনার প্রাইভেসি রক্ষার টুল এবং কৌশল
+title: "ইথিরিয়ামে প্রাইভেসি"
+description: "ইথিরিয়ামে আপনার প্রাইভেসি রক্ষার টুল এবং কৌশল"
lang: bn
---
diff --git a/public/content/translations/bn/real-world-assets/index.md b/public/content/translations/bn/real-world-assets/index.md
index 29d11c429dd..3f655d70ad2 100644
--- a/public/content/translations/bn/real-world-assets/index.md
+++ b/public/content/translations/bn/real-world-assets/index.md
@@ -1,16 +1,16 @@
---
-title: রিয়েল-ওয়ার্ল্ড অ্যাসেটস (RWAs)
-metaTitle: RWAs কী? | রিয়েল-ওয়ার্ল্ড অ্যাসেটসের সুবিধা এবং ব্যবহার
-description: ইথেরিয়ামে রিয়েল-ওয়ার্ল্ড অ্যাসেটসের একটি ওভারভিউ
+title: "রিয়েল-ওয়ার্ল্ড অ্যাসেটস (RWAs)"
+metaTitle: "RWAs কী? | রিয়েল-ওয়ার্ল্ড অ্যাসেটসের সুবিধা এবং ব্যবহার"
+description: "ইথেরিয়ামে রিয়েল-ওয়ার্ল্ড অ্যাসেটসের একটি ওভারভিউ"
lang: bn
template: use-cases
emoji: ":house_buildings:"
image: /images/man-and-dog-playing.png
-alt: মানুষ এবং কুকুর খেলছে।
+alt: "মানুষ এবং কুকুর খেলছে।"
sidebarDepth: 2
-summaryPoint1: মূল্যবান পণ্যগুলোকে ডিজিটাল টোকেনে রূপান্তর করার একটি পদ্ধতি।
-summaryPoint2: এখন আপনাকে পুরো সম্পত্তি বা জিনিস কিনতে হবে না, বরং আপনি বাস্তব জীবনের বস্তু বা সম্পদের কিছু অংশের মালিক হতে পারেন।
-summaryPoint3: প্রথাগত ফাইন্যান্সকে ব্লকচেইন ইকোসিস্টেমের সাথে যুক্ত করে।
+summaryPoint1: "মূল্যবান পণ্যগুলোকে ডিজিটাল টোকেনে রূপান্তর করার একটি পদ্ধতি।"
+summaryPoint2: "এখন আপনাকে পুরো সম্পত্তি বা জিনিস কিনতে হবে না, বরং আপনি বাস্তব জীবনের বস্তু বা সম্পদের কিছু অংশের মালিক হতে পারেন।"
+summaryPoint3: "প্রথাগত ফাইন্যান্সকে ব্লকচেইন ইকোসিস্টেমের সাথে যুক্ত করে।"
---
রিয়েল-ওয়ার্ল্ড অ্যাসেটস (RWAs) হলো এমন টোকেন যা বিদ্যমান সম্পদের রূপগুলোকে উপস্থাপন করে, যেমন রিয়েল এস্টেট, সোনা, স্টক, শিল্পকর্ম, যন্ত্রপাতি বা সংগ্রহযোগ্য জিনিসপত্র। এই জিনিসগুলোকে টোকেনাইজ করার মাধ্যমে সেগুলোকে ডিজিটাল রূপে রূপান্তর করা হয়, যার ফলে এগুলোকে একাধিক মালিকের মধ্যে ভাগ করা যায় এবং এগুলো ট্রেড করা সহজ হয়।
diff --git a/public/content/translations/bn/refi/index.md b/public/content/translations/bn/refi/index.md
index 2c5c58e9b93..a503e1296b4 100644
--- a/public/content/translations/bn/refi/index.md
+++ b/public/content/translations/bn/refi/index.md
@@ -1,15 +1,15 @@
---
-title: রিজেনারেটিভ ফাইন্যান্স (ReFi)
-description: ReFi এবং এর বর্তমান ব্যবহার ক্ষেত্রগুলোর একটি ওভারভিউ।
+title: "রিজেনারেটিভ ফাইন্যান্স (ReFi)"
+description: "ReFi এবং এর বর্তমান ব্যবহার ক্ষেত্রগুলোর একটি ওভারভিউ।"
lang: bn
template: use-cases
emoji: ":recycle:"
sidebarDepth: 2
image: /images/future_transparent.png
alt: ""
-summaryPoint1: রিজেনারেটিভ নীতির উপর ভিত্তি করে তৈরি একটি বিকল্প অর্থনৈতিক ব্যবস্থা
-summaryPoint2: জলবায়ু পরিবর্তনের মতো বৈশ্বিক স্তরের সমন্বয় সংকট সমাধানে ইথিরিয়ামকে কাজে লাগানোর একটি প্রচেষ্টা
-summaryPoint3: ভেরিফাইড কার্বন ক্রেডিটের মতো পরিবেশগত সুবিধার সম্পদগুলোকে ব্যাপকভাবে স্কেল করার একটি টুল
+summaryPoint1: "রিজেনারেটিভ নীতির উপর ভিত্তি করে তৈরি একটি বিকল্প অর্থনৈতিক ব্যবস্থা"
+summaryPoint2: "জলবায়ু পরিবর্তনের মতো বৈশ্বিক স্তরের সমন্বয় সংকট সমাধানে ইথিরিয়ামকে কাজে লাগানোর একটি প্রচেষ্টা"
+summaryPoint3: "ভেরিফাইড কার্বন ক্রেডিটের মতো পরিবেশগত সুবিধার সম্পদগুলোকে ব্যাপকভাবে স্কেল করার একটি টুল"
---
## ReFi কী? {#what-is-refi}
diff --git a/public/content/translations/bn/restaking/index.md b/public/content/translations/bn/restaking/index.md
index a1888d84783..28245178fed 100644
--- a/public/content/translations/bn/restaking/index.md
+++ b/public/content/translations/bn/restaking/index.md
@@ -1,14 +1,14 @@
---
-title: রিস্টেকিং
-metaTitle: রিস্টেকিং কী? | রিস্টেকিংয়ের সুবিধা এবং ব্যবহার
-description: অন্যান্য ডিসেন্ট্রালাইজড পরিষেবা সুরক্ষিত করতে এবং অতিরিক্ত রিওয়ার্ড অর্জন করতে স্টেক করা ETH ব্যবহার করুন।
+title: "রিস্টেকিং"
+metaTitle: "রিস্টেকিং কী? | রিস্টেকিংয়ের সুবিধা এবং ব্যবহার"
+description: "অন্যান্য ডিসেন্ট্রালাইজড পরিষেবা সুরক্ষিত করতে এবং অতিরিক্ত রিওয়ার্ড অর্জন করতে স্টেক করা ETH ব্যবহার করুন।"
lang: bn
template: use-cases
emoji: ":recycle:"
image: /images/use-cases/restaking.png
-alt: ইথিরিয়ামে রিস্টেকিংয়ের একটি ভিজ্যুয়াল উপস্থাপনা।
+alt: "ইথিরিয়ামে রিস্টেকিংয়ের একটি ভিজ্যুয়াল উপস্থাপনা।"
sidebarDepth: 2
-summaryPoint1: অন্যান্য ডিসেন্ট্রালাইজড পরিষেবা সুরক্ষিত করতে এবং অতিরিক্ত রিওয়ার্ড অর্জন করতে স্টেক করা ETH ব্যবহার করুন।
+summaryPoint1: "অন্যান্য ডিসেন্ট্রালাইজড পরিষেবা সুরক্ষিত করতে এবং অতিরিক্ত রিওয়ার্ড অর্জন করতে স্টেক করা ETH ব্যবহার করুন।"
buttons:
- content: রিস্টেকিং কী?
toId: what-is-restaking
diff --git a/public/content/translations/bn/roadmap/account-abstraction/index.md b/public/content/translations/bn/roadmap/account-abstraction/index.md
index 306ebbaac5e..922cf8cc600 100644
--- a/public/content/translations/bn/roadmap/account-abstraction/index.md
+++ b/public/content/translations/bn/roadmap/account-abstraction/index.md
@@ -1,6 +1,6 @@
---
-title: একাউন্ট অ্যাবস্ট্রাকশন
-description: ব্যবহারকারীদের একাউন্ট আরও সহজ এবং নিরাপদ করার জন্য ইথিরিয়ামের পরিকল্পনার একটি ওভারভিউ
+title: "একাউন্ট অ্যাবস্ট্রাকশন"
+description: "ব্যবহারকারীদের একাউন্ট আরও সহজ এবং নিরাপদ করার জন্য ইথিরিয়ামের পরিকল্পনার একটি ওভারভিউ"
lang: bn
summaryPoints:
- একাউন্ট অ্যাবস্ট্রাকশন স্মার্ট কন্ট্রাক্ট ওয়ালেট তৈরি করা অনেক সহজ করে তোলে
diff --git a/public/content/translations/bn/roadmap/beacon-chain/index.md b/public/content/translations/bn/roadmap/beacon-chain/index.md
index d20a74fb8de..b6c4a1e4e27 100644
--- a/public/content/translations/bn/roadmap/beacon-chain/index.md
+++ b/public/content/translations/bn/roadmap/beacon-chain/index.md
@@ -1,13 +1,13 @@
---
-title: বিকন চেইন
-description: বিকন চেইন সম্পর্কে জানুন - যে আপগ্রেডটি ইথিরিয়ামে প্রুফ-অফ-স্টেক চালু করেছে।
+title: "বিকন চেইন"
+description: "বিকন চেইন সম্পর্কে জানুন - যে আপগ্রেডটি ইথিরিয়ামে প্রুফ-অফ-স্টেক চালু করেছে।"
lang: bn
template: upgrade
image: /images/upgrades/core.png
alt:
-summaryPoint1: বিকন চেইন ইথিরিয়াম ইকোসিস্টেমে প্রুফ-অফ-স্টেক চালু করেছে।
-summaryPoint2: এটি 2022 সালের সেপ্টেম্বরে মূল ইথিরিয়াম প্রুফ-অফ-ওয়ার্ক চেইনের সাথে মার্জ করা হয়েছিল।
-summaryPoint3: বিকন চেইন কনসেন্সাস লজিক এবং ব্লক গসিপ প্রটোকল চালু করেছে যা এখন ইথিরিয়ামকে সুরক্ষিত করে।
+summaryPoint1: "বিকন চেইন ইথিরিয়াম ইকোসিস্টেমে প্রুফ-অফ-স্টেক চালু করেছে।"
+summaryPoint2: "এটি 2022 সালের সেপ্টেম্বরে মূল ইথিরিয়াম প্রুফ-অফ-ওয়ার্ক চেইনের সাথে মার্জ করা হয়েছিল।"
+summaryPoint3: "বিকন চেইন কনসেন্সাস লজিক এবং ব্লক গসিপ প্রটোকল চালু করেছে যা এখন ইথিরিয়ামকে সুরক্ষিত করে।"
---
diff --git a/public/content/translations/bn/roadmap/danksharding/index.md b/public/content/translations/bn/roadmap/danksharding/index.md
index ad80d895982..9feba2cb58e 100644
--- a/public/content/translations/bn/roadmap/danksharding/index.md
+++ b/public/content/translations/bn/roadmap/danksharding/index.md
@@ -1,11 +1,11 @@
---
-title: ড্যাংকশার্ডিং
-description: প্রোটো-ড্যাংকশার্ডিং (Proto-Danksharding) এবং ড্যাংকশার্ডিং (Danksharding) সম্পর্কে জানুন - ইথিরিয়াম স্কেলিং এর জন্য দুটি ধারাবাহিক আপগ্রেড।
+title: "ড্যাংকশার্ডিং"
+description: "প্রোটো-ড্যাংকশার্ডিং (Proto-Danksharding) এবং ড্যাংকশার্ডিং (Danksharding) সম্পর্কে জানুন - ইথিরিয়াম স্কেলিং এর জন্য দুটি ধারাবাহিক আপগ্রেড।"
lang: bn
summaryPoints:
- ড্যাংকশার্ডিং হলো ইথিরিয়ামের স্কেলিং এবং সক্ষমতা উন্নত করার জন্য একটি বহুমুখী আপগ্রেড।
- প্রথম ধাপ, প্রোটো-ড্যাংকশার্ডিং, ব্লকস-এ ডাটা ব্লব যুক্ত করে।
- - ডাটা ব্লব রেলআপস-এর জন্য ইথিরিয়ামে ডাটা পোস্ট করার একটি সস্তা উপায় প্রদান করে এবং এই খরচগুলো কম লেনদেন ফি হিসেবে ব্যবহারকারীদের কাছে পৌঁছানো যেতে পারে।
+ - ডাটা ব্লব রোলআপস-এর জন্য ইথিরিয়ামে ডাটা পোস্ট করার একটি সস্তা উপায় প্রদান করে এবং এই খরচগুলো কম লেনদেন ফি হিসেবে ব্যবহারকারীদের কাছে পৌঁছানো যেতে পারে।
- পরবর্তীতে, সম্পূর্ণ ড্যাংকশার্ডিং ডাটা ব্লব যাচাই করার দায়িত্ব নোড-এর সাবসেটগুলোর মধ্যে ছড়িয়ে দেবে, যা ইথিরিয়ামকে প্রতি সেকেন্ডে 100,000-এর বেশি লেনদেন-এ স্কেলিং করবে।
---
@@ -15,29 +15,29 @@ summaryPoints:
## প্রোটো-ড্যাংকশার্ডিং কী? {#what-is-protodanksharding}
-প্রোটো-ড্যাংকশার্ডিং, যা [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) নামেও পরিচিত, হলো [রেলআপস](/layer-2/#rollups)-এর জন্য ব্লকস-এ সস্তা ডাটা যোগ করার একটি উপায়। নামটি এসেছে এই ধারণাটি প্রস্তাবকারী দুই গবেষকের নাম থেকে: Protolambda এবং Dankrad Feist। ঐতিহাসিকভাবে, রেলআপস ব্যবহারকারীদের লেনদেন কতটা সস্তা করতে পারে তার একটি সীমাবদ্ধতা ছিল, কারণ তারা তাদের লেনদেন `CALLDATA`-তে পোস্ট করত।
+প্রোটো-ড্যাংকশার্ডিং, যা [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) নামেও পরিচিত, হলো [রোলআপস](/layer-2/#rollups)-এর জন্য ব্লকস-এ সস্তা ডাটা যোগ করার একটি উপায়। নামটি এসেছে এই ধারণাটি প্রস্তাবকারী দুই গবেষকের নাম থেকে: Protolambda এবং Dankrad Feist। ঐতিহাসিকভাবে, রোলআপস ব্যবহারকারীদের লেনদেন কতটা সস্তা করতে পারে তার একটি সীমাবদ্ধতা ছিল, কারণ তারা তাদের লেনদেন `CALLDATA`-তে পোস্ট করত।
-এটি ব্যয়বহুল কারণ এটি সমস্ত ইথিরিয়াম নোড দ্বারা প্রসেস করা হয় এবং চিরকাল অনচেইন থাকে, যদিও রেলআপস-এর ডাটা শুধুমাত্র অল্প সময়ের জন্য প্রয়োজন হয়। প্রোটো-ড্যাংকশার্ডিং ডাটা ব্লব চালু করে যা পাঠানো যায় এবং ব্লকস-এর সাথে যুক্ত করা যায়। এই ব্লবগুলোর ডাটা EVM-এর কাছে অ্যাক্সেসযোগ্য নয় এবং একটি নির্দিষ্ট সময় পর স্বয়ংক্রিয়ভাবে মুছে যায় (লেখার সময় 4096 এপোক বা প্রায় 18 দিন নির্ধারণ করা হয়েছে)। এর মানে হলো রেলআপস তাদের ডাটা অনেক সস্তায় পাঠাতে পারে এবং সস্তা লেনদেন হিসেবে শেষ ব্যবহারকারীদের কাছে এই সঞ্চয় পৌঁছে দিতে পারে।
+এটি ব্যয়বহুল কারণ এটি সমস্ত ইথিরিয়াম নোড দ্বারা প্রসেস করা হয় এবং চিরকাল অনচেইন থাকে, যদিও রোলআপস-এর ডাটা শুধুমাত্র অল্প সময়ের জন্য প্রয়োজন হয়। প্রোটো-ড্যাংকশার্ডিং ডাটা ব্লব চালু করে যা পাঠানো যায় এবং ব্লকস-এর সাথে যুক্ত করা যায়। এই ব্লবগুলোর ডাটা EVM-এর কাছে অ্যাক্সেসযোগ্য নয় এবং একটি নির্দিষ্ট সময় পর স্বয়ংক্রিয়ভাবে মুছে যায় (লেখার সময় 4096 এপোক বা প্রায় 18 দিন নির্ধারণ করা হয়েছে)। এর মানে হলো রোলআপস তাদের ডাটা অনেক সস্তায় পাঠাতে পারে এবং সস্তা লেনদেন হিসেবে শেষ ব্যবহারকারীদের কাছে এই সঞ্চয় পৌঁছে দিতে পারে।
-
+
-রেলআপস হলো অফচেইন লেনদেন ব্যাচ করে এবং তারপর ইথিরিয়ামে ফলাফল পোস্ট করে ইথিরিয়াম স্কেলিং করার একটি উপায়। একটি রোলআপ মূলত দুটি অংশ নিয়ে গঠিত: ডাটা এবং এক্সিকিউশন চেক। ডাটা হলো লেনদেন-এর সম্পূর্ণ ক্রম যা ইথিরিয়ামে পোস্ট করা স্টেট পরিবর্তন তৈরি করতে একটি রোলআপ দ্বারা প্রসেস করা হচ্ছে। এক্সিকিউশন চেক হলো প্রস্তাবিত স্টেট পরিবর্তন সঠিক কিনা তা নিশ্চিত করার জন্য কোনো সৎ ব্যক্তি (একজন "প্রুভার") দ্বারা সেই লেনদেন-গুলোর পুনরায় এক্সিকিউশন। এক্সিকিউশন চেক করার জন্য, লেনদেন ডাটা যথেষ্ট সময় ধরে উপলব্ধ থাকতে হবে যাতে যে কেউ ডাউনলোড করে চেক করতে পারে। এর মানে হলো রোলআপ সিকোয়েন্সার-এর যেকোনো অসৎ আচরণ প্রুভার দ্বারা চিহ্নিত এবং চ্যালেঞ্জ করা যেতে পারে। তবে, এটি চিরকাল উপলব্ধ থাকার প্রয়োজন নেই।
+রোলআপস হলো অফচেইন লেনদেন ব্যাচ করে এবং তারপর ইথিরিয়ামে ফলাফল পোস্ট করে ইথিরিয়াম স্কেলিং করার একটি উপায়। একটি রোলআপ মূলত দুটি অংশ নিয়ে গঠিত: ডাটা এবং এক্সিকিউশন চেক। ডাটা হলো লেনদেন-এর সম্পূর্ণ ক্রম যা ইথিরিয়ামে পোস্ট করা স্টেট পরিবর্তন তৈরি করতে একটি রোলআপ দ্বারা প্রসেস করা হচ্ছে। এক্সিকিউশন চেক হলো প্রস্তাবিত স্টেট পরিবর্তন সঠিক কিনা তা নিশ্চিত করার জন্য কোনো সৎ ব্যক্তি (একজন "প্রুভার") দ্বারা সেই লেনদেন-গুলোর পুনরায় এক্সিকিউশন। এক্সিকিউশন চেক করার জন্য, লেনদেন ডাটা যথেষ্ট সময় ধরে উপলব্ধ থাকতে হবে যাতে যে কেউ ডাউনলোড করে চেক করতে পারে। এর মানে হলো রোলআপ সিকোয়েন্সার-এর যেকোনো অসৎ আচরণ প্রুভার দ্বারা চিহ্নিত এবং চ্যালেঞ্জ করা যেতে পারে। তবে, এটি চিরকাল উপলব্ধ থাকার প্রয়োজন নেই।
-রেলআপস তাদের লেনদেন ডাটার প্রতিশ্রুতি অনচেইন পোস্ট করে এবং ডাটা ব্লবগুলোতে আসল ডাটাও উপলব্ধ করে। এর মানে হলো প্রুভাররা চেক করতে পারে যে প্রতিশ্রুতিগুলো বৈধ কিনা বা তাদের ভুল মনে হওয়া ডাটাকে চ্যালেঞ্জ করতে পারে। নোড-স্তরে, ডাটার ব্লবগুলো কনসেন্সাস ক্লায়েন্ট-এ রাখা হয়। কনসেন্সাস ক্লায়েন্ট-গুলো এটেস্টেশন দেয় যে তারা ডাটা দেখেছে এবং এটি নেটওয়ার্ক-এর চারপাশে ছড়িয়ে দেওয়া হয়েছে। যদি ডাটা চিরকাল রাখা হতো, তবে এই ক্লায়েন্টগুলো ফুলে উঠত এবং নোড চালানোর জন্য বড় হার্ডওয়্যারের প্রয়োজন হতো। এর পরিবর্তে, প্রতি 18 দিন পর পর নোড থেকে ডাটা স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। কনসেন্সাস ক্লায়েন্ট এটেস্টেশন-গুলো প্রমাণ করে যে প্রুভারদের ডাটা যাচাই করার জন্য পর্যাপ্ত সুযোগ ছিল। আসল ডাটা রোলআপ অপারেটর, ব্যবহারকারী বা অন্যদের দ্বারা অফচেইন সংরক্ষণ করা যেতে পারে।
+রোলআপস তাদের লেনদেন ডাটার প্রতিশ্রুতি অনচেইন পোস্ট করে এবং ডাটা ব্লবগুলোতে আসল ডাটাও উপলব্ধ করে। এর মানে হলো প্রুভাররা চেক করতে পারে যে প্রতিশ্রুতিগুলো বৈধ কিনা বা তাদের ভুল মনে হওয়া ডাটাকে চ্যালেঞ্জ করতে পারে। নোড-স্তরে, ডাটার ব্লবগুলো কনসেন্সাস ক্লায়েন্ট-এ রাখা হয়। কনসেন্সাস ক্লায়েন্ট-গুলো এটেস্টেশন দেয় যে তারা ডাটা দেখেছে এবং এটি নেটওয়ার্ক-এর চারপাশে ছড়িয়ে দেওয়া হয়েছে। যদি ডাটা চিরকাল রাখা হতো, তবে এই ক্লায়েন্টগুলো ফুলে উঠত এবং নোড চালানোর জন্য বড় হার্ডওয়্যারের প্রয়োজন হতো। এর পরিবর্তে, প্রতি 18 দিন পর পর নোড থেকে ডাটা স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। কনসেন্সাস ক্লায়েন্ট এটেস্টেশন-গুলো প্রমাণ করে যে প্রুভারদের ডাটা যাচাই করার জন্য পর্যাপ্ত সুযোগ ছিল। আসল ডাটা রোলআপ অপারেটর, ব্যবহারকারী বা অন্যদের দ্বারা অফচেইন সংরক্ষণ করা যেতে পারে।
### ব্লব ডাটা কীভাবে যাচাই করা হয়? {#how-are-blobs-verified}
-রেলআপস তাদের এক্সিকিউট করা লেনদেন ডাটা ব্লবগুলোতে পোস্ট করে। তারা ডাটার প্রতি একটি "প্রতিশ্রুতি"ও পোস্ট করে। তারা ডাটাতে একটি পলিনোমিয়াল ফাংশন ফিট করে এটি করে। এই ফাংশনটি তারপর বিভিন্ন পয়েন্টে মূল্যায়ন করা যেতে পারে। উদাহরণস্বরূপ, যদি আমরা একটি অত্যন্ত সাধারণ ফাংশন `f(x) = 2x-1` সংজ্ঞায়িত করি তবে আমরা `x = 1`, `x = 2`, `x = 3`-এর জন্য এই ফাংশনটি মূল্যায়ন করতে পারি যা `1, 3, 5` ফলাফল দেয়। একজন প্রুভার ডাটাতে একই ফাংশন প্রয়োগ করে এবং একই পয়েন্টে এটি মূল্যায়ন করে। যদি আসল ডাটা পরিবর্তন করা হয়, তবে ফাংশনটি অভিন্ন হবে না, এবং তাই প্রতিটি পয়েন্টে মূল্যায়ন করা মানগুলোও এক হবে না। বাস্তবে, প্রতিশ্রুতি এবং প্রমাণ আরও জটিল কারণ এগুলো ক্রিপ্টোগ্রাফিক ফাংশনে মোড়ানো থাকে।
+রোলআপস তাদের এক্সিকিউট করা লেনদেন ডাটা ব্লবগুলোতে পোস্ট করে। তারা ডাটার প্রতি একটি "প্রতিশ্রুতি"ও পোস্ট করে। তারা ডাটাতে একটি পলিনোমিয়াল ফাংশন ফিট করে এটি করে। এই ফাংশনটি তারপর বিভিন্ন পয়েন্টে মূল্যায়ন করা যেতে পারে। উদাহরণস্বরূপ, যদি আমরা একটি অত্যন্ত সাধারণ ফাংশন `f(x) = 2x-1` সংজ্ঞায়িত করি তবে আমরা `x = 1`, `x = 2`, `x = 3`-এর জন্য এই ফাংশনটি মূল্যায়ন করতে পারি যা `1, 3, 5` ফলাফল দেয়। একজন প্রুভার ডাটাতে একই ফাংশন প্রয়োগ করে এবং একই পয়েন্টে এটি মূল্যায়ন করে। যদি আসল ডাটা পরিবর্তন করা হয়, তবে ফাংশনটি অভিন্ন হবে না, এবং তাই প্রতিটি পয়েন্টে মূল্যায়ন করা মানগুলোও এক হবে না। বাস্তবে, প্রতিশ্রুতি এবং প্রমাণ আরও জটিল কারণ এগুলো ক্রিপ্টোগ্রাফিক ফাংশনে মোড়ানো থাকে।
### KZG কী? {#what-is-kzg}
-KZG মানে হলো Kate-Zaverucha-Goldberg - একটি স্কিমের তিন [মূল লেখকের](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11) নাম যা ডাটার একটি ব্লবকে একটি ছোট [ক্রিপ্টোগ্রাফিক "প্রতিশ্রুতিতে"](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) কমিয়ে দেয়। একটি রোলআপ দ্বারা জমা দেওয়া ডাটার ব্লবটি যাচাই করতে হবে যাতে নিশ্চিত হওয়া যায় যে রোলআপটি খারাপ আচরণ করছে না। এর মধ্যে একজন প্রুভার ব্লবের লেনদেন-গুলো পুনরায় এক্সিকিউট করে চেক করে যে প্রতিশ্রুতিটি বৈধ ছিল কিনা। এটি ধারণাগতভাবে এক্সিকিউশন ক্লায়েন্ট-গুলো যেভাবে মার্কেল প্রুফ ব্যবহার করে লেয়ার ১-এ ইথিরিয়াম লেনদেন-এর বৈধতা চেক করে তার মতোই। KZG হলো একটি বিকল্প প্রমাণ যা ডাটাতে একটি পলিনোমিয়াল সমীকরণ ফিট করে। প্রতিশ্রুতিটি কিছু গোপন ডাটা পয়েন্টে পলিনোমিয়াল মূল্যায়ন করে। একজন প্রুভার ডাটার উপর একই পলিনোমিয়াল ফিট করবে এবং একই মানগুলোতে এটি মূল্যায়ন করবে, চেক করবে যে ফলাফল একই কিনা। এটি ডাটা যাচাই করার একটি উপায় যা কিছু রেলআপস এবং শেষ পর্যন্ত ইথিরিয়াম প্রটোকল-এর অন্যান্য অংশ দ্বারা ব্যবহৃত জিরো-নলেজ কৌশলগুলোর সাথে সামঞ্জস্যপূর্ণ।
+KZG মানে হলো Kate-Zaverucha-Goldberg - একটি স্কিমের তিন [মূল লেখকের](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11) নাম যা ডাটার একটি ব্লবকে একটি ছোট [ক্রিপ্টোগ্রাফিক "প্রতিশ্রুতিতে"](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) কমিয়ে দেয়। একটি রোলআপ দ্বারা জমা দেওয়া ডাটার ব্লবটি যাচাই করতে হবে যাতে নিশ্চিত হওয়া যায় যে রোলআপটি খারাপ আচরণ করছে না। এর মধ্যে একজন প্রুভার ব্লবের লেনদেন-গুলো পুনরায় এক্সিকিউট করে চেক করে যে প্রতিশ্রুতিটি বৈধ ছিল কিনা। এটি ধারণাগতভাবে এক্সিকিউশন ক্লায়েন্ট-গুলো যেভাবে মার্কেল প্রুফ ব্যবহার করে লেয়ার ১-এ ইথিরিয়াম লেনদেন-এর বৈধতা চেক করে তার মতোই। KZG হলো একটি বিকল্প প্রমাণ যা ডাটাতে একটি পলিনোমিয়াল সমীকরণ ফিট করে। প্রতিশ্রুতিটি কিছু গোপন ডাটা পয়েন্টে পলিনোমিয়াল মূল্যায়ন করে। একজন প্রুভার ডাটার উপর একই পলিনোমিয়াল ফিট করবে এবং একই মানগুলোতে এটি মূল্যায়ন করবে, চেক করবে যে ফলাফল একই কিনা। এটি ডাটা যাচাই করার একটি উপায় যা কিছু রোলআপস এবং শেষ পর্যন্ত ইথিরিয়াম প্রটোকল-এর অন্যান্য অংশ দ্বারা ব্যবহৃত জিরো-নলেজ কৌশলগুলোর সাথে সামঞ্জস্যপূর্ণ।
### KZG সিরিমনি কী ছিল? {#what-is-a-kzg-ceremony}
@@ -63,7 +63,7 @@ EIP-4844 KZG সিরিমনি জনসাধারণের জন্য
## ড্যাংকশার্ডিং কী? {#what-is-danksharding}
-ড্যাংকশার্ডিং হলো রোলআপ স্কেলিং-এর সম্পূর্ণ বাস্তবায়ন যা প্রোটো-ড্যাংকশার্ডিং দিয়ে শুরু হয়েছিল। ড্যাংকশার্ডিং রেলআপস-এর জন্য তাদের সংকুচিত লেনদেন ডাটা ডাম্প করার জন্য ইথিরিয়ামে প্রচুর পরিমাণে জায়গা নিয়ে আসবে। এর মানে হলো ইথিরিয়াম অনায়াসে শত শত পৃথক রেলআপস সমর্থন করতে সক্ষম হবে এবং প্রতি সেকেন্ডে লক্ষ লক্ষ লেনদেন বাস্তবে পরিণত করবে।
+ড্যাংকশার্ডিং হলো রোলআপ স্কেলিং-এর সম্পূর্ণ বাস্তবায়ন যা প্রোটো-ড্যাংকশার্ডিং দিয়ে শুরু হয়েছিল। ড্যাংকশার্ডিং রোলআপস-এর জন্য তাদের সংকুচিত লেনদেন ডাটা ডাম্প করার জন্য ইথিরিয়ামে প্রচুর পরিমাণে জায়গা নিয়ে আসবে। এর মানে হলো ইথিরিয়াম অনায়াসে শত শত পৃথক রোলআপস সমর্থন করতে সক্ষম হবে এবং প্রতি সেকেন্ডে লক্ষ লক্ষ লেনদেন বাস্তবে পরিণত করবে।
এটি যেভাবে কাজ করে তা হলো প্রোটো-ড্যাংকশার্ডিং-এ ব্লকস-এর সাথে যুক্ত ব্লবগুলোকে ছয় (6) থেকে বাড়িয়ে সম্পূর্ণ ড্যাংকশার্ডিং-এ 64-এ উন্নীত করা। প্রয়োজনীয় বাকি পরিবর্তনগুলো হলো কনসেন্সাস ক্লায়েন্ট-গুলো যেভাবে কাজ করে তার আপডেট যাতে তারা নতুন বড় ব্লবগুলো পরিচালনা করতে সক্ষম হয়। এই পরিবর্তনগুলোর মধ্যে বেশ কয়েকটি ইতিমধ্যেই ড্যাংকশার্ডিং থেকে স্বাধীন অন্যান্য উদ্দেশ্যে রোডম্যাপ-এ রয়েছে। উদাহরণস্বরূপ, ড্যাংকশার্ডিং-এর জন্য প্রপোজার-বিল্ডার সেপারেশন বাস্তবায়ন করা প্রয়োজন। এটি এমন একটি আপগ্রেড যা ব্লকস তৈরি করা এবং বিভিন্ন ভ্যালিডেটরস-এর মধ্যে ব্লকস প্রস্তাব করার কাজগুলোকে আলাদা করে। একইভাবে, ড্যাংকশার্ডিং-এর জন্য ডাটা এভেইলএবিলিটি স্যাম্পলিং প্রয়োজন, তবে এটি খুব হালকা ক্লায়েন্ট-গুলোর বিকাশের জন্যও প্রয়োজন যা খুব বেশি ঐতিহাসিক ডাটা সংরক্ষণ করে না ("স্টেটলেস ক্লায়েন্ট")।
diff --git a/public/content/translations/bn/roadmap/dencun/index.md b/public/content/translations/bn/roadmap/dencun/index.md
index 7cb3bf22f02..a6263a3c4ee 100644
--- a/public/content/translations/bn/roadmap/dencun/index.md
+++ b/public/content/translations/bn/roadmap/dencun/index.md
@@ -1,6 +1,6 @@
---
-title: ক্যানকুন-ডেনেব (ডেনকুন) সাধারণ জিজ্ঞাসা (FAQ)
-description: ক্যানকুন-ডেনেব (ডেনকুন) নেটওয়ার্ক আপগ্রেড সম্পর্কিত সাধারণ জিজ্ঞাসা
+title: "ক্যানকুন-ডেনেব (ডেনকুন) সাধারণ জিজ্ঞাসা (FAQ)"
+description: "ক্যানকুন-ডেনেব (ডেনকুন) নেটওয়ার্ক আপগ্রেড সম্পর্কিত সাধারণ জিজ্ঞাসা"
lang: bn
---
@@ -10,9 +10,9 @@ lang: bn
একটি নতুন লেনদেন ধরন রোলআপ প্রোভাইডারদের "ব্লবস" নামে পরিচিত জায়গায় আরও সাশ্রয়ীভাবে ডেটা সংরক্ষণ করতে সক্ষম করে। ব্লবস নেটওয়ার্ক এ প্রায় 18 দিনের জন্য (আরও সঠিকভাবে, 4096 [এপোক](/glossary/#epoch)) উপলব্ধ থাকার নিশ্চয়তা দেয়। এই সময়ের পরে, নেটওয়ার্ক থেকে ব্লবস মুছে ফেলা হয়, তবে অ্যাপ্লিকেশনগুলো এখনও প্রুফ ব্যবহার করে তাদের ডেটার বৈধতা যাচাই করতে পারে।
-এটি উল্লেখযোগ্যভাবে রেলআপস এর খরচ কমায়, চেইনের বৃদ্ধি সীমিত করে এবং নিরাপত্তা ও নোড অপারেটরদের একটি ডিসেন্ট্রালাইজড সেট বজায় রেখে আরও বেশি ব্যবহারকারীকে সমর্থন করতে সাহায্য করে।
+এটি উল্লেখযোগ্যভাবে রোলআপস এর খরচ কমায়, চেইনের বৃদ্ধি সীমিত করে এবং নিরাপত্তা ও নোড অপারেটরদের একটি ডিসেন্ট্রালাইজড সেট বজায় রেখে আরও বেশি ব্যবহারকারীকে সমর্থন করতে সাহায্য করে।
-## প্রোটো-ড্যাঙ্কশার্ডিংয়ের কারণে রেলআপস কবে থেকে কম ফি প্রতিফলিত করবে বলে আমরা আশা করতে পারি? {#when}
+## প্রোটো-ড্যাঙ্কশার্ডিংয়ের কারণে রোলআপস কবে থেকে কম ফি প্রতিফলিত করবে বলে আমরা আশা করতে পারি? {#when}
- এই আপগ্রেডটি 269568 এপোক-এ, **13-Mar-2024 তারিখ 13:55PM (UTC)**-এ চালু হয়েছে
- Arbitrum বা Optimism-এর মতো সমস্ত প্রধান রোলআপ প্রোভাইডাররা ইঙ্গিত দিয়েছে যে আপগ্রেডের পরপরই ব্লবস সমর্থিত হবে
@@ -29,11 +29,11 @@ lang: bn
ডেনকুন মূলত নেটওয়ার্ক এর **ডিসেন্ট্রালাইজেশন বজায় রেখে** **সাশ্রয়ী ফি** সহ **স্কেলেবিলিটি** (আরও বেশি ব্যবহারকারী এবং আরও বেশি লেনদেন পরিচালনা করা) নিয়ে কাজ করে।
-ইথিরিয়াম কমিউনিটি এর বৃদ্ধির জন্য একটি "রোলআপ-কেন্দ্রিক" পদ্ধতি গ্রহণ করেছে, যা লেয়ার ২ রেলআপস কে নিরাপদে আরও বেশি ব্যবহারকারীকে সমর্থন করার প্রাথমিক মাধ্যম হিসেবে স্থান দেয়।
+ইথিরিয়াম কমিউনিটি এর বৃদ্ধির জন্য একটি "রোলআপ-কেন্দ্রিক" পদ্ধতি গ্রহণ করেছে, যা লেয়ার ২ রোলআপস কে নিরাপদে আরও বেশি ব্যবহারকারীকে সমর্থন করার প্রাথমিক মাধ্যম হিসেবে স্থান দেয়।
রোলআপ নেটওয়ার্ক গুলো মেইননেট থেকে আলাদাভাবে লেনদেন এর _প্রসেসিং_ (বা "এক্সিকিউশন") পরিচালনা করে এবং তারপর রেকর্ড রাখার জন্য মেইননেট এ একটি ক্রিপ্টোগ্রাফিক প্রুফ এবং/অথবা ফলাফলের সংকুচিত লেনদেন ডেটা প্রকাশ করে। এই প্রুফগুলো সংরক্ষণ করতে একটি খরচ বহন করতে হয় ([গ্যাস](/glossary/#gas) আকারে), যা প্রোটো-ড্যাঙ্কশার্ডিংয়ের আগে সমস্ত নেটওয়ার্ক নোড অপারেটরদের স্থায়ীভাবে সংরক্ষণ করতে হতো, যা এটিকে একটি ব্যয়বহুল কাজ করে তুলেছিল।
-ডেনকুন আপগ্রেডে প্রোটো-ড্যাঙ্কশার্ডিংয়ের প্রবর্তন এই প্রুফগুলোর জন্য সস্তা ডেটা স্টোরেজ যোগ করে, যেখানে নোড অপারেটরদের এই ডেটা শুধুমাত্র প্রায় 18 দিনের জন্য সংরক্ষণ করতে হয়, যার পরে হার্ডওয়্যারের প্রয়োজনীয়তা বৃদ্ধি রোধ করতে ডেটা নিরাপদে মুছে ফেলা যায়। যেহেতু রেলআপস এর সাধারণত 7 দিনের একটি উত্তোলনের সময়কাল থাকে, তাই এই সময়কালের জন্য L1-এ ব্লবস উপলব্ধ থাকা পর্যন্ত তাদের নিরাপত্তা মডেল অপরিবর্তিত থাকে। 18 দিনের প্রুনিং উইন্ডো এই সময়কালের জন্য একটি উল্লেখযোগ্য বাফার প্রদান করে।
+ডেনকুন আপগ্রেডে প্রোটো-ড্যাঙ্কশার্ডিংয়ের প্রবর্তন এই প্রুফগুলোর জন্য সস্তা ডেটা স্টোরেজ যোগ করে, যেখানে নোড অপারেটরদের এই ডেটা শুধুমাত্র প্রায় 18 দিনের জন্য সংরক্ষণ করতে হয়, যার পরে হার্ডওয়্যারের প্রয়োজনীয়তা বৃদ্ধি রোধ করতে ডেটা নিরাপদে মুছে ফেলা যায়। যেহেতু রোলআপস এর সাধারণত 7 দিনের একটি উত্তোলনের সময়কাল থাকে, তাই এই সময়কালের জন্য L1-এ ব্লবস উপলব্ধ থাকা পর্যন্ত তাদের নিরাপত্তা মডেল অপরিবর্তিত থাকে। 18 দিনের প্রুনিং উইন্ডো এই সময়কালের জন্য একটি উল্লেখযোগ্য বাফার প্রদান করে।
[ইথিরিয়াম স্কেলিং সম্পর্কে আরও জানুন](/roadmap/scaling/)
@@ -78,7 +78,7 @@ _ঐতিহাসিক_ ব্লব ডেটা বিভিন্ন ক
ইথিরিয়ামের লেয়ার ২ (L2)-এ রোলআপ লেনদেন এর দুটি ধরনের ডেটা স্টোরেজ ব্যবহার করার বিকল্প রয়েছে: অস্থায়ী ব্লব স্পেস বা স্থায়ী স্মার্ট কন্ট্রাক্ট কলডেটা। ব্লব স্পেস একটি সাশ্রয়ী পছন্দ, যা কম খরচে অস্থায়ী স্টোরেজ প্রদান করে। এটি সমস্ত প্রয়োজনীয় চ্যালেঞ্জ পিরিয়ডের জন্য ডাটা এভেইলএবিলিটি এর নিশ্চয়তা দেয়। অন্যদিকে, স্মার্ট কন্ট্রাক্ট কলডেটা স্থায়ী স্টোরেজ অফার করে তবে এটি বেশি ব্যয়বহুল।
-ব্লব স্পেস বা কলডেটা ব্যবহারের মধ্যে সিদ্ধান্তটি মূলত রোলআপ প্রোভাইডারদের দ্বারা নেওয়া হয়। তারা ব্লব স্পেসের বর্তমান চাহিদার ওপর ভিত্তি করে এই সিদ্ধান্ত নেয়। যদি ব্লব স্পেসের চাহিদা বেশি থাকে, তবে ডেটা সময়মতো পোস্ট করা নিশ্চিত করতে রেলআপস কলডেটা বেছে নিতে পারে।
+ব্লব স্পেস বা কলডেটা ব্যবহারের মধ্যে সিদ্ধান্তটি মূলত রোলআপ প্রোভাইডারদের দ্বারা নেওয়া হয়। তারা ব্লব স্পেসের বর্তমান চাহিদার ওপর ভিত্তি করে এই সিদ্ধান্ত নেয়। যদি ব্লব স্পেসের চাহিদা বেশি থাকে, তবে ডেটা সময়মতো পোস্ট করা নিশ্চিত করতে রোলআপস কলডেটা বেছে নিতে পারে।
যদিও ব্যবহারকারীদের জন্য তাদের পছন্দের স্টোরেজ ধরন বেছে নেওয়া তাত্ত্বিকভাবে সম্ভব, রোলআপ প্রোভাইডাররা সাধারণত এই পছন্দটি পরিচালনা করে। ব্যবহারকারীদের এই বিকল্পটি অফার করা জটিলতা বাড়াবে, বিশেষ করে সাশ্রয়ী বান্ডলিং লেনদেন এর ক্ষেত্রে। এই পছন্দ সম্পর্কে নির্দিষ্ট বিবরণের জন্য, ব্যবহারকারীদের পৃথক রোলআপ প্রোভাইডারদের দেওয়া ডকুমেন্টেশন দেখা উচিত।
@@ -88,16 +88,16 @@ _ঐতিহাসিক_ ব্লব ডেটা বিভিন্ন ক
- L1 গ্যাস হ্রাস রোলআপ প্রোভাইডারদের দ্বারা ব্লব ডেটা গ্রহণ/ব্যবহারের সমানুপাতিক হবে
- নন-রোলআপ সম্পর্কিত কার্যকলাপ থেকে L1 গ্যাস প্রতিযোগিতামূলক থাকার সম্ভাবনা রয়েছে
-- যে রেলআপস ব্লব স্পেসের ব্যবহার গ্রহণ করে তাদের কম L1 গ্যাস প্রয়োজন হবে, যা নিকট ভবিষ্যতে L1 গ্যাস ফি নিচের দিকে ঠেলে দিতে সাহায্য করবে
-- ব্লব স্পেস এখনও সীমিত, তাই যদি একটি ব্লক এর মধ্যে ব্লবস স্যাচুরেটেড/পূর্ণ হয়ে যায়, তবে রেলআপস কে এই সময়ের মধ্যে তাদের ডেটা স্থায়ী ডেটা হিসেবে পোস্ট করতে হতে পারে, যা L1 এবং L2 গ্যাস প্রাইস বাড়িয়ে দেবে
+- যে রোলআপস ব্লব স্পেসের ব্যবহার গ্রহণ করে তাদের কম L1 গ্যাস প্রয়োজন হবে, যা নিকট ভবিষ্যতে L1 গ্যাস ফি নিচের দিকে ঠেলে দিতে সাহায্য করবে
+- ব্লব স্পেস এখনও সীমিত, তাই যদি একটি ব্লক এর মধ্যে ব্লবস স্যাচুরেটেড/পূর্ণ হয়ে যায়, তবে রোলআপস কে এই সময়ের মধ্যে তাদের ডেটা স্থায়ী ডেটা হিসেবে পোস্ট করতে হতে পারে, যা L1 এবং L2 গ্যাস প্রাইস বাড়িয়ে দেবে
## এটি কি অন্যান্য EVM লেয়ার ১ ব্লকচেইন গুলোতে ফি কমাবে? {#alt-l1-fee-impact}
-না। প্রোটো-ড্যাঙ্কশার্ডিংয়ের সুবিধাগুলো ইথিরিয়াম লেয়ার ২ রেলআপস এর জন্য নির্দিষ্ট যা তাদের প্রুফগুলো লেয়ার ১ (মেইননেট)-এ সংরক্ষণ করে।
+না। প্রোটো-ড্যাঙ্কশার্ডিংয়ের সুবিধাগুলো ইথিরিয়াম লেয়ার ২ রোলআপস এর জন্য নির্দিষ্ট যা তাদের প্রুফগুলো লেয়ার ১ (মেইননেট)-এ সংরক্ষণ করে।
শুধুমাত্র ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)-এর সাথে সামঞ্জস্যপূর্ণ হওয়ার মানে এই নয় যে একটি নেটওয়ার্ক এই আপগ্রেড থেকে কোনো সুবিধা পাবে। ইথিরিয়াম থেকে স্বাধীনভাবে কাজ করা নেটওয়ার্ক গুলো (EVM সামঞ্জস্যপূর্ণ হোক বা না হোক) ইথিরিয়ামে তাদের ডেটা সংরক্ষণ করে না এবং এই আপগ্রেড থেকে কোনো সুবিধা পাবে না।
-[লেয়ার ২ রেলআপস সম্পর্কে আরও জানুন](/layer-2/)
+[লেয়ার ২ রোলআপস সম্পর্কে আরও জানুন](/layer-2/)
## ভিজ্যুয়াল লার্নারদের জন্য আরও কিছু? {#visual-learner}
diff --git a/public/content/translations/bn/roadmap/fusaka/index.md b/public/content/translations/bn/roadmap/fusaka/index.md
index 681b12c64ac..edac4a7cbce 100644
--- a/public/content/translations/bn/roadmap/fusaka/index.md
+++ b/public/content/translations/bn/roadmap/fusaka/index.md
@@ -1,6 +1,6 @@
---
-title: ফুলু-ওসাকা (Fusaka)
-description: Fusaka প্রটোকল আপগ্রেড সম্পর্কে জানুন
+title: "ফুলু-ওসাকা (Fusaka)"
+description: "Fusaka প্রটোকল আপগ্রেড সম্পর্কে জানুন"
lang: bn
---
@@ -26,7 +26,7 @@ Fusaka আপগ্রেডটি Ethereum-এর দীর্ঘমেয়া
এটি Fusaka ফর্ক-এর _হেডলাইনার_, এই আপগ্রেডে যুক্ত হওয়া প্রধান ফিচার। লেয়ার 2-গুলো বর্তমানে তাদের ডাটা Ethereum-এ ব্লব (blobs) আকারে পোস্ট করে, যা বিশেষভাবে লেয়ার 2-এর জন্য তৈরি করা ক্ষণস্থায়ী ডাটা টাইপ। Fusaka-এর আগে, ডাটার অস্তিত্ব নিশ্চিত করতে প্রতিটি ফুল নোড-কে প্রতিটি ব্লব সংরক্ষণ করতে হতো। ব্লব থ্রুপুট বাড়ার সাথে সাথে, এই সমস্ত ডাটা ডাউনলোড করা অত্যন্ত রিসোর্স-নিবিড় হয়ে ওঠে।
-[ডাটা এভেইলএবিলিটি স্যাম্পলিং](https://notes.ethereum.org/@fradamt/das-fork-choice)-এর মাধ্যমে, সমস্ত ব্লব ডাটা সংরক্ষণ করার পরিবর্তে, প্রতিটি নোড ব্লব ডাটার একটি সাবসেটের জন্য দায়ী থাকবে। ব্লবগুলো নেটওয়ার্ক-এর নোডগুলোর মধ্যে সমানভাবে এলোমেলোভাবে বিতরণ করা হয়, যেখানে প্রতিটি ফুল নোড ডাটার মাত্র 1/8 অংশ ধারণ করে, যার ফলে তাত্ত্বিকভাবে 8 গুণ পর্যন্ত স্কেল করা সম্ভব হয়। ডাটার প্রাপ্যতা নিশ্চিত করতে, ডাটার যেকোনো অংশ সম্পূর্ণ ডাটার বিদ্যমান 50% থেকে পুনর্গঠন করা যেতে পারে এমন পদ্ধতির মাধ্যমে যা ভুল বা হারিয়ে যাওয়া ডাটার সম্ভাবনাকে ক্রিপ্টোগ্রাফিক-ভাবে নগণ্য স্তরে নামিয়ে আনে (~1020-এর মধ্যে 1 থেকে 1024-এর মধ্যে 1)।
+[ডাটা এভেইলএবিলিটি স্যাম্পলিং](https://notes.ethereum.org/@fradamt/das-fork-choice)-এর মাধ্যমে, সমস্ত ব্লব ডাটা সংরক্ষণ করার পরিবর্তে, প্রতিটি নোড ব্লব ডাটার একটি সাবসেটের জন্য দায়ী থাকবে। ব্লবগুলো নেটওয়ার্ক-এর নোডগুলোর মধ্যে সমানভাবে এলোমেলোভাবে বিতরণ করা হয়, যেখানে প্রতিটি ফুল নোড ডাটার মাত্র 1/8 অংশ ধারণ করে, যার ফলে তাত্ত্বিকভাবে 8 গুণ পর্যন্ত স্কেল করা সম্ভব হয়। ডাটার প্রাপ্যতা নিশ্চিত করতে, ডাটার যেকোনো অংশ সম্পূর্ণ ডাটার বিদ্যমান 50% থেকে পুনর্গঠন করা যেতে পারে এমন পদ্ধতির মাধ্যমে যা ভুল বা হারিয়ে যাওয়া ডাটার সম্ভাবনাকে ক্রিপ্টোগ্রাফিক-ভাবে নগণ্য স্তরে নামিয়ে আনে (\~1020-এর মধ্যে 1 থেকে 1024-এর মধ্যে 1)।
এটি নোড-গুলোর জন্য হার্ডওয়্যার এবং ব্যান্ডউইথের প্রয়োজনীয়তা সহনীয় রাখে এবং ব্লব স্কেলিং সক্ষম করে, যার ফলে লেয়ার 2-গুলোর জন্য কম ফিতে আরও বেশি স্কেল পাওয়া যায়।
@@ -187,7 +187,7 @@ UX আপগ্রেড! ব্যবহারকারীদের জন্
### এই আপগ্রেড কি সমস্ত Ethereum নোড এবং ভ্যালিডেটরস-কে প্রভাবিত করে? {#does-this-upgrade-affect-all-ethereum-nodes-and-validators}
-হ্যাঁ, Fusaka আপগ্রেডের জন্য [এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/) উভয়েরই আপডেট প্রয়োজন। সমস্ত প্রধান Ethereum ক্লায়েন্ট উচ্চ অগ্রাধিকার হিসেবে চিহ্নিত হার্ড ফর্ক সমর্থনকারী সংস্করণ প্রকাশ করবে। আপনি এই রিলিজগুলো কখন ক্লায়েন্ট Github রেপো, তাদের [Discord চ্যানেল](https://ethstaker.org/support), [EthStaker Discord](https://dsc.gg/ethstaker)-এ পাওয়া যাবে তা আপনি নজরে রাখতে পারেন, অথবা প্রটোকল আপডেটের জন্য Ethereum ব্লগে সাবস্ক্রাইব করতে পারেন। আপগ্রেড-পরবর্তী Ethereum নেটওয়ার্ক-এর সাথে সিঙ্ক্রোনাইজেশন বজায় রাখতে, নোড অপারেটরদের অবশ্যই নিশ্চিত করতে হবে যে তারা একটি সমর্থিত ক্লায়েন্ট সংস্করণ চালাচ্ছেন। মনে রাখবেন যে ক্লায়েন্ট রিলিজ সম্পর্কে তথ্য সময়-সংবেদনশীল, এবং ব্যবহারকারীদের সবচেয়ে বর্তমান বিবরণের জন্য সর্বশেষ আপডেটগুলো দেখা উচিত।
+হ্যাঁ, Fusaka আপগ্রেডের জন্য [এক্সিকিউশন ক্লায়েন্ট এবং কনসেন্সাস ক্লায়েন্ট](/developers/docs/nodes-and-clients/) উভয়েরই আপডেট প্রয়োজন। সমস্ত প্রধান Ethereum ক্লায়েন্ট উচ্চ অগ্রাধিকার হিসেবে চিহ্নিত হার্ড ফর্ক সমর্থনকারী সংস্করণ প্রকাশ করবে। আপনি এই রিলিজগুলো কখন ক্লায়েন্ট GitHub রেপো, তাদের [Discord চ্যানেল](https://ethstaker.org/support), [EthStaker Discord](https://dsc.gg/ethstaker)-এ পাওয়া যাবে তা আপনি নজরে রাখতে পারেন, অথবা প্রটোকল আপডেটের জন্য Ethereum ব্লগে সাবস্ক্রাইব করতে পারেন। আপগ্রেড-পরবর্তী Ethereum নেটওয়ার্ক-এর সাথে সিঙ্ক্রোনাইজেশন বজায় রাখতে, নোড অপারেটরদের অবশ্যই নিশ্চিত করতে হবে যে তারা একটি সমর্থিত ক্লায়েন্ট সংস্করণ চালাচ্ছেন। মনে রাখবেন যে ক্লায়েন্ট রিলিজ সম্পর্কে তথ্য সময়-সংবেদনশীল, এবং ব্যবহারকারীদের সবচেয়ে বর্তমান বিবরণের জন্য সর্বশেষ আপডেটগুলো দেখা উচিত।
### হার্ড ফর্ক-এর পরে কীভাবে ETH রূপান্তর করা যায়? {#how-can-eth-be-converted-after-the-hardfork}
@@ -204,7 +204,7 @@ UX আপগ্রেড! ব্যবহারকারীদের জন্
### L2 স্কেলিং-এর জন্য কী কী উন্নতি অন্তর্ভুক্ত করা হয়েছে? {#what-improvements-are-included-for-l2-scaling}
-[PeerDAS](/roadmap/fusaka/peerdas) হলো ফর্ক-এর প্রধান ফিচার। এটি ডাটা এভেইলএবিলিটি স্যাম্পলিং (DAS) বাস্তবায়ন করে যা রেলআপস-এর জন্য আরও স্কেলেবিলিটি আনলক করে, তাত্ত্বিকভাবে ব্লব স্পেসকে বর্তমান আকারের 8 গুণ পর্যন্ত স্কেল করে। কনজেশনের প্রতি দক্ষতার সাথে প্রতিক্রিয়া জানাতে এবং ব্লবগুলো নোড-গুলোর উপর যে কম্পিউট এবং স্পেস চাপিয়ে দেয় তার জন্য L2-গুলো একটি অর্থপূর্ণ ফি প্রদান করে তা নিশ্চিত করতে ব্লব ফি মার্কেটও উন্নত করা হবে।
+[PeerDAS](/roadmap/fusaka/peerdas) হলো ফর্ক-এর প্রধান ফিচার। এটি ডাটা এভেইলএবিলিটি স্যাম্পলিং (DAS) বাস্তবায়ন করে যা রোলআপস-এর জন্য আরও স্কেলেবিলিটি আনলক করে, তাত্ত্বিকভাবে ব্লব স্পেসকে বর্তমান আকারের 8 গুণ পর্যন্ত স্কেল করে। কনজেশনের প্রতি দক্ষতার সাথে প্রতিক্রিয়া জানাতে এবং ব্লবগুলো নোড-গুলোর উপর যে কম্পিউট এবং স্পেস চাপিয়ে দেয় তার জন্য L2-গুলো একটি অর্থপূর্ণ ফি প্রদান করে তা নিশ্চিত করতে ব্লব ফি মার্কেটও উন্নত করা হবে।
### BPO ফর্কগুলো কীভাবে আলাদা? {#how-are-bpo-forks-different}
diff --git a/public/content/translations/bn/roadmap/future-proofing/index.md b/public/content/translations/bn/roadmap/future-proofing/index.md
index fac1f82e2d1..2abcef96c0d 100644
--- a/public/content/translations/bn/roadmap/future-proofing/index.md
+++ b/public/content/translations/bn/roadmap/future-proofing/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়ামকে ভবিষ্যতের জন্য প্রস্তুত করা
-description: এই আপগ্রেডগুলো ইথিরিয়ামকে ভবিষ্যতের জন্য একটি স্থিতিস্থাপক, ডিসেন্ট্রালাইজড বেস লেয়ার হিসেবে সুদৃঢ় করে, ভবিষ্যতে যাই ঘটুক না কেন।
+title: "ইথিরিয়ামকে ভবিষ্যতের জন্য প্রস্তুত করা"
+description: "এই আপগ্রেডগুলো ইথিরিয়ামকে ভবিষ্যতের জন্য একটি স্থিতিস্থাপক, ডিসেন্ট্রালাইজড বেস লেয়ার হিসেবে সুদৃঢ় করে, ভবিষ্যতে যাই ঘটুক না কেন।"
lang: bn
image: /images/roadmap/roadmap-future.png
alt: "Ethereum roadmap"
diff --git a/public/content/translations/bn/roadmap/glamsterdam/index.md b/public/content/translations/bn/roadmap/glamsterdam/index.md
index 12b5b41176d..4855790f865 100644
--- a/public/content/translations/bn/roadmap/glamsterdam/index.md
+++ b/public/content/translations/bn/roadmap/glamsterdam/index.md
@@ -1,6 +1,6 @@
---
-title: গ্ল্যামস্টারডাম (Glamsterdam)
-description: গ্ল্যামস্টারডাম প্রটোকল আপগ্রেড সম্পর্কে জানুন
+title: "গ্ল্যামস্টারডাম (Glamsterdam)"
+description: "গ্ল্যামস্টারডাম প্রটোকল আপগ্রেড সম্পর্কে জানুন"
lang: bn
---
diff --git a/public/content/translations/bn/roadmap/merge/index.md b/public/content/translations/bn/roadmap/merge/index.md
index c703cb2a0eb..842cbf81f49 100644
--- a/public/content/translations/bn/roadmap/merge/index.md
+++ b/public/content/translations/bn/roadmap/merge/index.md
@@ -1,14 +1,14 @@
---
-title: দ্য মার্জ
-description: দ্য মার্জ সম্পর্কে জানুন - যখন মেইননেট ইথিরিয়াম প্রুফ-অফ-স্টেক গ্রহণ করেছিল।
+title: "দ্য মার্জ"
+description: "দ্য মার্জ সম্পর্কে জানুন - যখন মেইননেট ইথিরিয়াম প্রুফ-অফ-স্টেক গ্রহণ করেছিল।"
lang: bn
template: upgrade
image: /images/upgrades/merge.png
alt:
-summaryPoint1: ইথিরিয়াম মেইননেট প্রুফ-অফ-স্টেক ব্যবহার করে, তবে এটি সবসময় এমন ছিল না।
-summaryPoint2: মূল প্রুফ-অফ-ওয়ার্ক মেকানিজম থেকে প্রুফ-অফ-স্টেক-এ আপগ্রেডকে দ্য মার্জ বলা হতো।
-summaryPoint3: দ্য মার্জ বলতে মূল ইথিরিয়াম মেইননেট-এর সাথে বিকন চেইন নামক একটি পৃথক প্রুফ-অফ-স্টেক ব্লকচেইন-এর একত্রীকরণকে বোঝায়, যা এখন একটি চেইন হিসেবে বিদ্যমান।
-summaryPoint4: দ্য মার্জ ইথিরিয়ামের শক্তি খরচ ~99.95% কমিয়েছে।
+summaryPoint1: "ইথিরিয়াম মেইননেট প্রুফ-অফ-স্টেক ব্যবহার করে, তবে এটি সবসময় এমন ছিল না।"
+summaryPoint2: "মূল প্রুফ-অফ-ওয়ার্ক মেকানিজম থেকে প্রুফ-অফ-স্টেক-এ আপগ্রেডকে দ্য মার্জ বলা হতো।"
+summaryPoint3: "দ্য মার্জ বলতে মূল ইথিরিয়াম মেইননেট-এর সাথে বিকন চেইন নামক একটি পৃথক প্রুফ-অফ-স্টেক ব্লকচেইন-এর একত্রীকরণকে বোঝায়, যা এখন একটি চেইন হিসেবে বিদ্যমান।"
+summaryPoint4: "দ্য মার্জ ইথিরিয়ামের শক্তি খরচ ~99.95% কমিয়েছে।"
---
diff --git a/public/content/translations/bn/roadmap/merge/issuance/index.md b/public/content/translations/bn/roadmap/merge/issuance/index.md
index ca59463f838..7db566c107f 100644
--- a/public/content/translations/bn/roadmap/merge/issuance/index.md
+++ b/public/content/translations/bn/roadmap/merge/issuance/index.md
@@ -1,6 +1,6 @@
---
-title: দ্য মার্জ কীভাবে ETH সাপ্লাইকে প্রভাবিত করেছে
-description: দ্য মার্জ কীভাবে ETH সাপ্লাইকে প্রভাবিত করেছে তার বিস্তারিত বিশ্লেষণ
+title: "দ্য মার্জ কীভাবে ETH সাপ্লাইকে প্রভাবিত করেছে"
+description: "দ্য মার্জ কীভাবে ETH সাপ্লাইকে প্রভাবিত করেছে তার বিস্তারিত বিশ্লেষণ"
lang: bn
---
@@ -40,18 +40,18 @@ title="ETH ইস্যুয়েন্স এর সারসংক্ষেপ"
### মার্জ-পূর্ববর্তী ইস্যুয়েন্স বিশ্লেষণ {#pre-merge-issuance-breakdown}
-মোট ETH সাপ্লাই: **~120,520,000 ETH** (2022 সালের সেপ্টেম্বরে দ্য মার্জ-এর সময়)
+মোট ETH সাপ্লাই: **\~120,520,000 ETH** (2022 সালের সেপ্টেম্বরে দ্য মার্জ-এর সময়)
**এক্সিকিউশন লেয়ার ইস্যুয়েন্স:**
-- প্রতি 13.3 সেকেন্ডে 2.08 ETH অনুমান করা হয়েছিল\*: বছরে **~4,930,000** ETH ইস্যু করা হতো
+- প্রতি 13.3 সেকেন্ডে 2.08 ETH অনুমান করা হয়েছিল\*: বছরে **\~4,930,000** ETH ইস্যু করা হতো
- এর ফলে মুদ্রাস্ফীতির হার ছিল **প্রায় 4.09%** (প্রতি বছর 4.93M / মোট 120.5M)
- \*এর মধ্যে রয়েছে ক্যানোনিকাল ব্লক প্রতি 2 ETH, এবং ওমার ব্লকস থেকে সময়ের সাথে গড়ে 0.08 ETH। এছাড়াও 13.3 সেকেন্ড ব্যবহার করা হয়েছে, যা কোনো [difficulty bomb](/glossary/#difficulty-bomb)-এর প্রভাব ছাড়াই বেসলাইন ব্লক টাইম টার্গেট। ([উৎস দেখুন](https://bitinfocharts.com/ethereum/))
**কনসেন্সাস লেয়ার ইস্যুয়েন্স:**
- মোট 14,000,000 স্টেক করা ETH ব্যবহার করে, ETH ইস্যুয়েন্স এর হার প্রতিদিন প্রায় 1700 ETH ([উৎস দেখুন](https://ultrasound.money/))
-- এর ফলে বছরে **~620,500** ETH ইস্যু হয়
+- এর ফলে বছরে **\~620,500** ETH ইস্যু হয়
- এর ফলে মুদ্রাস্ফীতির হার ছিল **প্রায় 0.52%** (প্রতি বছর 620.5K / মোট 119.3M)
@@ -59,9 +59,9 @@ title="ETH ইস্যুয়েন্স এর সারসংক্ষেপ"
**মোট বার্ষিক ইস্যুয়েন্স হার (মার্জ-পূর্ববর্তী): ~4.61%** (4.09% + 0.52%)
-ইস্যুয়েন্স এর **~88.7%** এক্সিকিউশন লেয়ার-এ মাইনারদের কাছে যাচ্ছিল (4.09 / 4.61 * 100)
+ইস্যুয়েন্স এর **\~88.7%** এক্সিকিউশন লেয়ার-এ মাইনারদের কাছে যাচ্ছিল (4.09 / 4.61 * 100)
-**~11.3%** কনসেন্সাস লেয়ার-এ স্টেকারদের ইস্যু করা হচ্ছিল (0.52 / 4.61 * 100)
+**\~11.3%** কনসেন্সাস লেয়ার-এ স্টেকারদের ইস্যু করা হচ্ছিল (0.52 / 4.61 * 100)
@@ -86,16 +86,16 @@ title="ETH ইস্যুয়েন্স এর সারসংক্ষেপ"
### মার্জ-পরবর্তী মুদ্রাস্ফীতি বিশ্লেষণ {#post-merge-inflation-breakdown}
-- [মোট ETH সাপ্লাই](/eth/supply/): **~120,520,000 ETH** (2022 সালের সেপ্টেম্বরে দ্য মার্জ-এর সময়)
+- [মোট ETH সাপ্লাই](/eth/supply/): **\~120,520,000 ETH** (2022 সালের সেপ্টেম্বরে দ্য মার্জ-এর সময়)
- এক্সিকিউশন লেয়ার ইস্যুয়েন্স: **0**
-- কনসেন্সাস লেয়ার ইস্যুয়েন্স: উপরের মতোই, **~0.52%** বার্ষিক ইস্যুয়েন্স হার (মোট 14 মিলিয়ন স্টেক করা ETH সহ)
+- কনসেন্সাস লেয়ার ইস্যুয়েন্স: উপরের মতোই, **\~0.52%** বার্ষিক ইস্যুয়েন্স হার (মোট 14 মিলিয়ন স্টেক করা ETH সহ)
-মোট বার্ষিক ইস্যুয়েন্স হার: **~0.52%**
+মোট বার্ষিক ইস্যুয়েন্স হার: **\~0.52%**
-বার্ষিক ETH ইস্যুয়েন্স-এ নিট হ্রাস: **~88.7%** ((4.61% - 0.52%) / 4.61% * 100)
+বার্ষিক ETH ইস্যুয়েন্স-এ নিট হ্রাস: **\~88.7%** ((4.61% - 0.52%) / 4.61% * 100)
diff --git a/public/content/translations/bn/roadmap/pbs/index.md b/public/content/translations/bn/roadmap/pbs/index.md
index c1121d850e3..ec982b87fbb 100644
--- a/public/content/translations/bn/roadmap/pbs/index.md
+++ b/public/content/translations/bn/roadmap/pbs/index.md
@@ -1,6 +1,6 @@
---
-title: প্রপোজার-বিল্ডার সেপারেশন
-description: ইথিরিয়াম ভ্যালিডেটরস কীভাবে এবং কেন তাদের ব্লক তৈরি এবং ব্লক সম্প্রচারের দায়িত্বগুলো ভাগ করবে তা জানুন।
+title: "প্রপোজার-বিল্ডার সেপারেশন"
+description: "ইথিরিয়াম ভ্যালিডেটরস কীভাবে এবং কেন তাদের ব্লক তৈরি এবং ব্লক সম্প্রচারের দায়িত্বগুলো ভাগ করবে তা জানুন।"
lang: bn
---
diff --git a/public/content/translations/bn/roadmap/pectra/7702/index.md b/public/content/translations/bn/roadmap/pectra/7702/index.md
index 4770fa6bfa5..c911dcff0ef 100644
--- a/public/content/translations/bn/roadmap/pectra/7702/index.md
+++ b/public/content/translations/bn/roadmap/pectra/7702/index.md
@@ -1,6 +1,6 @@
---
-title: Pectra 7702 গাইডলাইন
-description: Pectra রিলিজে 7702 সম্পর্কে আরও জানুন
+title: "Pectra 7702 গাইডলাইন"
+description: "Pectra রিলিজে 7702 সম্পর্কে আরও জানুন"
lang: bn
---
diff --git a/public/content/translations/bn/roadmap/pectra/index.md b/public/content/translations/bn/roadmap/pectra/index.md
index 048d5cb34af..86b7b34433d 100644
--- a/public/content/translations/bn/roadmap/pectra/index.md
+++ b/public/content/translations/bn/roadmap/pectra/index.md
@@ -1,6 +1,6 @@
---
-title: প্রাগ-ইলেক্ট্রা (Pectra)
-description: Pectra প্রটোকল আপগ্রেড সম্পর্কে জানুন
+title: "প্রাগ-ইলেক্ট্রা (Pectra)"
+description: "Pectra প্রটোকল আপগ্রেড সম্পর্কে জানুন"
lang: bn
---
@@ -44,7 +44,7 @@ maxEB সম্পর্কে আরও বিস্তারিত পড়ু
ব্লবগুলো L2-এর জন্য [ডাটা এভেইলএবিলিটি](/developers/docs/data-availability/#data-availability-and-layer-2-rollups) প্রদান করে। এগুলো [পূর্ববর্তী নেটওয়ার্ক আপগ্রেডে](/roadmap/dencun/) চালু করা হয়েছিল।
-বর্তমানে, নেটওয়ার্ক প্রতি ব্লক-এ গড়ে 3টি ব্লব লক্ষ্য করে, যার সর্বোচ্চ সংখ্যা 6টি ব্লব। [EIP-7691](https://eips.ethereum.org/EIPS/eip-7691)-এর মাধ্যমে, গড় ব্লব সংখ্যা 6-এ উন্নীত করা হবে, প্রতি ব্লক-এ সর্বোচ্চ 9টি ব্লব থাকবে, যার ফলে ইথিরিয়াম রেলআপস-এর সক্ষমতা বৃদ্ধি পাবে। এই EIP সেই ব্যবধান ঘোচাতে সাহায্য করে যতক্ষণ না [PeerDAS](https://eips.ethereum.org/EIPS/eip-7594) আরও বেশি ব্লব সংখ্যা সক্ষম করে।
+বর্তমানে, নেটওয়ার্ক প্রতি ব্লক-এ গড়ে 3টি ব্লব লক্ষ্য করে, যার সর্বোচ্চ সংখ্যা 6টি ব্লব। [EIP-7691](https://eips.ethereum.org/EIPS/eip-7691)-এর মাধ্যমে, গড় ব্লব সংখ্যা 6-এ উন্নীত করা হবে, প্রতি ব্লক-এ সর্বোচ্চ 9টি ব্লব থাকবে, যার ফলে ইথিরিয়াম রোলআপস-এর সক্ষমতা বৃদ্ধি পাবে। এই EIP সেই ব্যবধান ঘোচাতে সাহায্য করে যতক্ষণ না [PeerDAS](https://eips.ethereum.org/EIPS/eip-7594) আরও বেশি ব্লব সংখ্যা সক্ষম করে।
### কলডাটা খরচ বৃদ্ধি {#7623}
@@ -76,7 +76,7 @@ maxEB সম্পর্কে আরও বিস্তারিত পড়ু
EVM বর্তমানে `BLOCKHASH` অপকোড প্রদান করে যা কন্ট্রাক্ট ডেভেলপারদের সরাসরি এক্সিকিউশন লেয়ার-এ একটি ব্লক-এর হ্যাস পুনরুদ্ধার করতে সক্ষম করে। তবে, এটি শুধুমাত্র শেষ 256টি ব্লকস-এর মধ্যে সীমাবদ্ধ এবং ভবিষ্যতে স্টেটলেস ক্লায়েন্ট-দের জন্য সমস্যাযুক্ত হতে পারে।
-[EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) একটি নতুন সিস্টেম কন্ট্রাক্ট তৈরি করে যা স্টোরেজ স্লট হিসেবে শেষ 8192টি ব্লক হ্যাস প্রদান করতে পারে। এটি স্টেটলেস এক্সিকিউশনের জন্য প্রটোকলটিকে ভবিষ্যৎ-প্রমাণ করতে সাহায্য করে এবং যখন ভার্কেল ট্রাই (verkle tries) গ্রহণ করা হয় তখন আরও দক্ষ হয়ে ওঠে। তবে, এটি ছাড়াও, রেলআপস এখনই এর থেকে উপকৃত হতে পারে, কারণ তারা একটি দীর্ঘ ঐতিহাসিক উইন্ডো দিয়ে সরাসরি কন্ট্রাক্টটিতে কোয়েরি করতে পারে।
+[EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) একটি নতুন সিস্টেম কন্ট্রাক্ট তৈরি করে যা স্টোরেজ স্লট হিসেবে শেষ 8192টি ব্লক হ্যাস প্রদান করতে পারে। এটি স্টেটলেস এক্সিকিউশনের জন্য প্রটোকলটিকে ভবিষ্যৎ-প্রমাণ করতে সাহায্য করে এবং যখন ভার্কেল ট্রাই (verkle tries) গ্রহণ করা হয় তখন আরও দক্ষ হয়ে ওঠে। তবে, এটি ছাড়াও, রোলআপস এখনই এর থেকে উপকৃত হতে পারে, কারণ তারা একটি দীর্ঘ ঐতিহাসিক উইন্ডো দিয়ে সরাসরি কন্ট্রাক্টটিতে কোয়েরি করতে পারে।
### এটেস্টেশন এর বাইরে কমিটি ইনডেক্স সরানো {#7549}
diff --git a/public/content/translations/bn/roadmap/pectra/maxeb/index.md b/public/content/translations/bn/roadmap/pectra/maxeb/index.md
index a4812c8490b..926cab13bdd 100644
--- a/public/content/translations/bn/roadmap/pectra/maxeb/index.md
+++ b/public/content/translations/bn/roadmap/pectra/maxeb/index.md
@@ -1,6 +1,6 @@
---
-title: পেক্ট্রা MaxEB
-description: পেক্ট্রা রিলিজে MaxEB সম্পর্কে আরও জানুন
+title: "পেক্ট্রা MaxEB"
+description: "পেক্ট্রা রিলিজে MaxEB সম্পর্কে আরও জানুন"
lang: bn
---
diff --git a/public/content/translations/bn/roadmap/scaling/index.md b/public/content/translations/bn/roadmap/scaling/index.md
index 453faac571c..18bdae18127 100644
--- a/public/content/translations/bn/roadmap/scaling/index.md
+++ b/public/content/translations/bn/roadmap/scaling/index.md
@@ -1,13 +1,13 @@
---
-title: ইথিরিয়াম স্কেলিং
-description: রেলআপস অফচেইনে একসাথে লেনদেন ব্যাচ করে, যা ব্যবহারকারীর জন্য খরচ কমায়। তবে, বর্তমানে রেলআপস যেভাবে ডেটা ব্যবহার করে তা অত্যন্ত ব্যয়বহুল, যা লেনদেন কতটা সস্তা হতে পারে তা সীমাবদ্ধ করে। প্রোটো-ড্যাঙ্কশার্ডিং এটি সমাধান করে।
+title: "ইথিরিয়াম স্কেলিং"
+description: "রোলআপস অফচেইনে একসাথে লেনদেন ব্যাচ করে, যা ব্যবহারকারীর জন্য খরচ কমায়। তবে, বর্তমানে রোলআপস যেভাবে ডেটা ব্যবহার করে তা অত্যন্ত ব্যয়বহুল, যা লেনদেন কতটা সস্তা হতে পারে তা সীমাবদ্ধ করে। প্রোটো-ড্যাঙ্কশার্ডিং এটি সমাধান করে।"
lang: bn
image: /images/roadmap/roadmap-transactions.png
alt: "ইথিরিয়াম রোডম্যাপ"
template: roadmap
---
-ইথিরিয়াম [লেয়ার ২](/layer-2/#rollups) (যা রেলআপস নামেও পরিচিত) ব্যবহার করে স্কেল করা হয়, যা একসাথে লেনদেন ব্যাচ করে এবং আউটপুট ইথিরিয়ামে পাঠায়। যদিও রেলআপস ইথিরিয়াম মেইননেটের তুলনায় আট গুণ পর্যন্ত কম ব্যয়বহুল, তবুও শেষ ব্যবহারকারীদের জন্য খরচ কমাতে রেলআপস আরও অপ্টিমাইজ করা সম্ভব। রেলআপস কিছু সেন্ট্রালাইজড উপাদানের ওপরও নির্ভর করে যা রেলআপস পরিপক্ক হওয়ার সাথে সাথে ডেভেলপাররা সরিয়ে ফেলতে পারে।
+ইথিরিয়াম [লেয়ার ২](/layer-2/#rollups) (যা রোলআপস নামেও পরিচিত) ব্যবহার করে স্কেল করা হয়, যা একসাথে লেনদেন ব্যাচ করে এবং আউটপুট ইথিরিয়ামে পাঠায়। যদিও রোলআপস ইথিরিয়াম মেইননেটের তুলনায় আট গুণ পর্যন্ত কম ব্যয়বহুল, তবুও শেষ ব্যবহারকারীদের জন্য খরচ কমাতে রোলআপস আরও অপ্টিমাইজ করা সম্ভব। রোলআপস কিছু সেন্ট্রালাইজড উপাদানের ওপরও নির্ভর করে যা রোলআপস পরিপক্ক হওয়ার সাথে সাথে ডেভেলপাররা সরিয়ে ফেলতে পারে।
@@ -15,9 +15,9 @@ template: roadmap
লেনদেন খরচ
- - বর্তমানের রেলআপস ইথিরিয়াম লেয়ার 1 এর তুলনায় ~5-20x সস্তা
- - ZK-রেলআপস শীঘ্রই ফি ~40-100x কমিয়ে দেবে
- - ইথিরিয়ামের আসন্ন পরিবর্তনগুলো আরও ~100-1000x স্কেলিং প্রদান করবে
+ - বর্তমানের রোলআপস ইথিরিয়াম লেয়ার 1 এর তুলনায় \~5-20x সস্তা
+ - ZK-রোলআপস শীঘ্রই ফি \~40-100x কমিয়ে দেবে
+ - ইথিরিয়ামের আসন্ন পরিবর্তনগুলো আরও \~100-1000x স্কেলিং প্রদান করবে
- ব্যবহারকারীদের এমন লেনদেন থেকে উপকৃত হওয়া উচিত যার খরচ $0.001 এর চেয়ে কম
@@ -25,11 +25,11 @@ template: roadmap
## ডেটা সস্তা করা {#making-data-cheaper}
-রেলআপস বিপুল সংখ্যক লেনদেন সংগ্রহ করে, সেগুলো এক্সিকিউট করে এবং ফলাফল ইথিরিয়ামে জমা দেয়। এটি প্রচুর ডেটা তৈরি করে যা উন্মুক্তভাবে উপলব্ধ হওয়া প্রয়োজন যাতে যে কেউ নিজের জন্য লেনদেন এক্সিকিউট করতে পারে এবং যাচাই করতে পারে যে রোলআপ অপারেটর সৎ ছিল। যদি কেউ কোনো অসঙ্গতি খুঁজে পায়, তবে তারা একটি চ্যালেঞ্জ উত্থাপন করতে পারে।
+রোলআপস বিপুল সংখ্যক লেনদেন সংগ্রহ করে, সেগুলো এক্সিকিউট করে এবং ফলাফল ইথিরিয়ামে জমা দেয়। এটি প্রচুর ডেটা তৈরি করে যা উন্মুক্তভাবে উপলব্ধ হওয়া প্রয়োজন যাতে যে কেউ নিজের জন্য লেনদেন এক্সিকিউট করতে পারে এবং যাচাই করতে পারে যে রোলআপ অপারেটর সৎ ছিল। যদি কেউ কোনো অসঙ্গতি খুঁজে পায়, তবে তারা একটি চ্যালেঞ্জ উত্থাপন করতে পারে।
### প্রোটো-ড্যাঙ্কশার্ডিং {#proto-danksharding}
-রোলআপ ডেটা ঐতিহাসিকভাবে ইথিরিয়ামে স্থায়ীভাবে সংরক্ষণ করা হয়েছে, যা ব্যয়বহুল। ব্যবহারকারীরা রেলআপস-এ যে লেনদেন খরচ প্রদান করে তার 90%-এর বেশি এই ডেটা স্টোরেজের কারণে হয়। লেনদেন খরচ কমাতে, আমরা ডেটা একটি নতুন অস্থায়ী 'blob' স্টোরেজে স্থানান্তর করতে পারি। ব্লবগুলো সস্তা কারণ এগুলো স্থায়ী নয়; যখন এগুলোর আর প্রয়োজন হয় না তখন এগুলো ইথিরিয়াম থেকে মুছে ফেলা হয়। দীর্ঘমেয়াদে রোলআপ ডেটা সংরক্ষণ করা তাদের দায়িত্ব হয়ে ওঠে যাদের এটি প্রয়োজন, যেমন রোলআপ অপারেটর, এক্সচেঞ্জ, ইনডেক্সিং পরিষেবা ইত্যাদি। ইথিরিয়ামে ব্লব লেনদেন যুক্ত করা "Proto-Danksharding" (প্রোটো-ড্যাঙ্কশার্ডিং) নামক একটি আপগ্রেডের অংশ।
+রোলআপ ডেটা ঐতিহাসিকভাবে ইথিরিয়ামে স্থায়ীভাবে সংরক্ষণ করা হয়েছে, যা ব্যয়বহুল। ব্যবহারকারীরা রোলআপস-এ যে লেনদেন খরচ প্রদান করে তার 90%-এর বেশি এই ডেটা স্টোরেজের কারণে হয়। লেনদেন খরচ কমাতে, আমরা ডেটা একটি নতুন অস্থায়ী 'blob' স্টোরেজে স্থানান্তর করতে পারি। ব্লবগুলো সস্তা কারণ এগুলো স্থায়ী নয়; যখন এগুলোর আর প্রয়োজন হয় না তখন এগুলো ইথিরিয়াম থেকে মুছে ফেলা হয়। দীর্ঘমেয়াদে রোলআপ ডেটা সংরক্ষণ করা তাদের দায়িত্ব হয়ে ওঠে যাদের এটি প্রয়োজন, যেমন রোলআপ অপারেটর, এক্সচেঞ্জ, ইনডেক্সিং পরিষেবা ইত্যাদি। ইথিরিয়ামে ব্লব লেনদেন যুক্ত করা "Proto-Danksharding" (প্রোটো-ড্যাঙ্কশার্ডিং) নামক একটি আপগ্রেডের অংশ।
প্রোটো-ড্যাঙ্কশার্ডিংয়ের মাধ্যমে, ইথিরিয়াম ব্লকস-এ অনেক ব্লব যুক্ত করা সম্ভব। এটি ইথিরিয়ামের থ্রুপুটকে আরও উল্লেখযোগ্যভাবে (>100x) স্কেল-আপ করতে এবং লেনদেন খরচ স্কেল-ডাউন করতে সক্ষম করে।
@@ -41,17 +41,17 @@ template: roadmap
ড্যাঙ্কশার্ডিং সম্পর্কে আরও জানুন
-## রেলআপস ডিসেন্ট্রালাইজ করা {#decentralizing-rollups}
+## রোলআপস ডিসেন্ট্রালাইজ করা {#decentralizing-rollups}
-[রেলআপস](/layer-2) ইতিমধ্যেই ইথিরিয়াম স্কেলিং করছে। [রোলআপ প্রজেক্টগুলোর একটি সমৃদ্ধ ইকোসিস্টেম](https://l2beat.com/scaling/tvs) ব্যবহারকারীদের বিভিন্ন নিরাপত্তা গ্যারান্টি সহ দ্রুত এবং সস্তায় লেনদেন করতে সক্ষম করছে। তবে, সেন্ট্রালাইজড সিকোয়েন্সার (যে কম্পিউটারগুলো ইথিরিয়ামে জমা দেওয়ার আগে সমস্ত লেনদেন প্রসেসিং এবং এগ্রিগেশন করে) ব্যবহার করে রেলআপস বুটস্ট্র্যাপ করা হয়েছে। এটি সেন্সরশিপের জন্য ঝুঁকিপূর্ণ, কারণ সিকোয়েন্সার অপারেটরদের ওপর নিষেধাজ্ঞা আরোপ করা যেতে পারে, ঘুষ দেওয়া যেতে পারে বা অন্যথায় আপস করা যেতে পারে। একই সময়ে, ইনকামিং ডেটা যাচাই করার পদ্ধতিতে [রেলআপস ভিন্ন হয়](https://l2beat.com/scaling/summary)। সবচেয়ে ভালো উপায় হলো "প্রুভার"-দের [ফ্রড প্রুফ](/glossary/#fraud-proof) বা ভ্যালিডিটি প্রুফ জমা দেওয়া, কিন্তু সব রেলআপস এখনও সেখানে পৌঁছায়নি। এমনকি যে রেলআপস ভ্যালিডিটি/ফ্রড প্রুফ ব্যবহার করে তারাও পরিচিত প্রুভারদের একটি ছোট পুল ব্যবহার করে। অতএব, ইথিরিয়াম স্কেলিং-এর পরবর্তী গুরুত্বপূর্ণ পদক্ষেপ হলো আরও বেশি মানুষের মধ্যে সিকোয়েন্সার এবং প্রুভার চালানোর দায়িত্ব বিতরণ করা।
+[রোলআপস](/layer-2) ইতিমধ্যেই ইথিরিয়াম স্কেলিং করছে। [রোলআপ প্রজেক্টগুলোর একটি সমৃদ্ধ ইকোসিস্টেম](https://l2beat.com/scaling/tvs) ব্যবহারকারীদের বিভিন্ন নিরাপত্তা গ্যারান্টি সহ দ্রুত এবং সস্তায় লেনদেন করতে সক্ষম করছে। তবে, সেন্ট্রালাইজড সিকোয়েন্সার (যে কম্পিউটারগুলো ইথিরিয়ামে জমা দেওয়ার আগে সমস্ত লেনদেন প্রসেসিং এবং এগ্রিগেশন করে) ব্যবহার করে রোলআপস বুটস্ট্র্যাপ করা হয়েছে। এটি সেন্সরশিপের জন্য ঝুঁকিপূর্ণ, কারণ সিকোয়েন্সার অপারেটরদের ওপর নিষেধাজ্ঞা আরোপ করা যেতে পারে, ঘুষ দেওয়া যেতে পারে বা অন্যথায় আপস করা যেতে পারে। একই সময়ে, ইনকামিং ডেটা যাচাই করার পদ্ধতিতে [রোলআপস ভিন্ন হয়](https://l2beat.com/scaling/summary)। সবচেয়ে ভালো উপায় হলো "প্রুভার"-দের [ফ্রড প্রুফ](/glossary/#fraud-proof) বা ভ্যালিডিটি প্রুফ জমা দেওয়া, কিন্তু সব রোলআপস এখনও সেখানে পৌঁছায়নি। এমনকি যে রোলআপস ভ্যালিডিটি/ফ্রড প্রুফ ব্যবহার করে তারাও পরিচিত প্রুভারদের একটি ছোট পুল ব্যবহার করে। অতএব, ইথিরিয়াম স্কেলিং-এর পরবর্তী গুরুত্বপূর্ণ পদক্ষেপ হলো আরও বেশি মানুষের মধ্যে সিকোয়েন্সার এবং প্রুভার চালানোর দায়িত্ব বিতরণ করা।
-রেলআপস সম্পর্কে আরও জানুন
+রোলআপস সম্পর্কে আরও জানুন
## বর্তমান অগ্রগতি {#current-progress}
-২০২৪ সালের মার্চ মাসে ক্যানকুন-ডেনেব ("Dencun") নেটওয়ার্ক আপগ্রেডের অংশ হিসেবে প্রোটো-ড্যাঙ্কশার্ডিং সফলভাবে বাস্তবায়িত হয়েছিল। এর বাস্তবায়নের পর থেকে, রেলআপস ব্লব স্টোরেজ ব্যবহার করতে শুরু করেছে, যার ফলে ব্যবহারকারীদের জন্য লেনদেন খরচ কমেছে এবং ব্লবগুলোতে লক্ষ লক্ষ লেনদেন প্রক্রিয়া করা হয়েছে।
+২০২৪ সালের মার্চ মাসে ক্যানকুন-ডেনেব ("Dencun") নেটওয়ার্ক আপগ্রেডের অংশ হিসেবে প্রোটো-ড্যাঙ্কশার্ডিং সফলভাবে বাস্তবায়িত হয়েছিল। এর বাস্তবায়নের পর থেকে, রোলআপস ব্লব স্টোরেজ ব্যবহার করতে শুরু করেছে, যার ফলে ব্যবহারকারীদের জন্য লেনদেন খরচ কমেছে এবং ব্লবগুলোতে লক্ষ লক্ষ লেনদেন প্রক্রিয়া করা হয়েছে।
-সম্পূর্ণ ড্যাঙ্কশার্ডিংয়ের কাজ অব্যাহত রয়েছে, এর পূর্বশর্তগুলো যেমন PBS (প্রপোজার-বিল্ডার সেপারেশন) এবং DAS (ডাটা এভেইলএবিলিটি স্যাম্পলিং)-এর ওপর অগ্রগতি হচ্ছে। রোলআপ পরিকাঠামো ডিসেন্ট্রালাইজ করা একটি ধীর প্রক্রিয়া - এমন অনেক ভিন্ন রেলআপস রয়েছে যা সামান্য ভিন্ন সিস্টেম তৈরি করছে এবং বিভিন্ন হারে সম্পূর্ণভাবে ডিসেন্ট্রালাইজড হবে।
+সম্পূর্ণ ড্যাঙ্কশার্ডিংয়ের কাজ অব্যাহত রয়েছে, এর পূর্বশর্তগুলো যেমন PBS (প্রপোজার-বিল্ডার সেপারেশন) এবং DAS (ডাটা এভেইলএবিলিটি স্যাম্পলিং)-এর ওপর অগ্রগতি হচ্ছে। রোলআপ পরিকাঠামো ডিসেন্ট্রালাইজ করা একটি ধীর প্রক্রিয়া - এমন অনেক ভিন্ন রোলআপস রয়েছে যা সামান্য ভিন্ন সিস্টেম তৈরি করছে এবং বিভিন্ন হারে সম্পূর্ণভাবে ডিসেন্ট্রালাইজড হবে।
[ডেনকুন নেটওয়ার্ক আপগ্রেড এবং এর প্রভাব সম্পর্কে আরও জানুন](/roadmap/dencun/)
diff --git a/public/content/translations/bn/roadmap/secret-leader-election/index.md b/public/content/translations/bn/roadmap/secret-leader-election/index.md
index 04dbfa83a3c..4f697b0bb78 100644
--- a/public/content/translations/bn/roadmap/secret-leader-election/index.md
+++ b/public/content/translations/bn/roadmap/secret-leader-election/index.md
@@ -1,6 +1,6 @@
---
-title: সিক্রেট লিডার ইলেকশন
-description: সিক্রেট লিডার ইলেকশন কীভাবে ভ্যালিডেটরসদের আক্রমণ থেকে রক্ষা করতে সাহায্য করতে পারে তার ব্যাখ্যা
+title: "সিক্রেট লিডার ইলেকশন"
+description: "সিক্রেট লিডার ইলেকশন কীভাবে ভ্যালিডেটরসদের আক্রমণ থেকে রক্ষা করতে সাহায্য করতে পারে তার ব্যাখ্যা"
lang: bn
summaryPoints:
- ব্লক প্রপোজারদের আইপি (IP) এডড্রেস আগে থেকেই জানা যেতে পারে, যা তাদের আক্রমণের জন্য ঝুঁকিপূর্ণ করে তোলে
diff --git a/public/content/translations/bn/roadmap/security/index.md b/public/content/translations/bn/roadmap/security/index.md
index 215a4778702..a1b3038bda3 100644
--- a/public/content/translations/bn/roadmap/security/index.md
+++ b/public/content/translations/bn/roadmap/security/index.md
@@ -1,6 +1,6 @@
---
-title: আরও সুরক্ষিত ইথিরিয়াম
-description: ইথিরিয়াম হলো বর্তমানে বিদ্যমান সবচেয়ে সুরক্ষিত এবং ডিসেন্ট্রালাইজড স্মার্ট কন্ট্রাক্ট প্ল্যাটফর্ম। তবে, এখনও কিছু উন্নতি করা যেতে পারে যাতে ইথিরিয়াম ভবিষ্যতের যেকোনো স্তরের আক্রমণের বিরুদ্ধে স্থিতিস্থাপক থাকে।
+title: "আরও সুরক্ষিত ইথিরিয়াম"
+description: "ইথিরিয়াম হলো বর্তমানে বিদ্যমান সবচেয়ে সুরক্ষিত এবং ডিসেন্ট্রালাইজড স্মার্ট কন্ট্রাক্ট প্ল্যাটফর্ম। তবে, এখনও কিছু উন্নতি করা যেতে পারে যাতে ইথিরিয়াম ভবিষ্যতের যেকোনো স্তরের আক্রমণের বিরুদ্ধে স্থিতিস্থাপক থাকে।"
lang: bn
image: /images/roadmap/roadmap-security.png
alt: "ইথিরিয়াম রোডম্যাপ"
diff --git a/public/content/translations/bn/roadmap/single-slot-finality/index.md b/public/content/translations/bn/roadmap/single-slot-finality/index.md
index 26ba9b2dc1a..fad374b5e2e 100644
--- a/public/content/translations/bn/roadmap/single-slot-finality/index.md
+++ b/public/content/translations/bn/roadmap/single-slot-finality/index.md
@@ -1,6 +1,6 @@
---
-title: সিঙ্গেল স্লট ফাইনালিটি
-description: সিঙ্গেল স্লট ফাইনালিটির ব্যাখ্যা
+title: "সিঙ্গেল স্লট ফাইনালিটি"
+description: "সিঙ্গেল স্লট ফাইনালিটির ব্যাখ্যা"
lang: bn
---
diff --git a/public/content/translations/bn/roadmap/statelessness/index.md b/public/content/translations/bn/roadmap/statelessness/index.md
index 59cf8d1966d..2b0c2c7715c 100644
--- a/public/content/translations/bn/roadmap/statelessness/index.md
+++ b/public/content/translations/bn/roadmap/statelessness/index.md
@@ -1,6 +1,6 @@
---
-title: স্টেটলেসনেস, স্টেট এক্সপায়ারি এবং হিস্ট্রি এক্সপায়ারি
-description: হিস্ট্রি এক্সপায়ারি এবং স্টেটলেস ইথিরিয়ামের ব্যাখ্যা
+title: "স্টেটলেসনেস, স্টেট এক্সপায়ারি এবং হিস্ট্রি এক্সপায়ারি"
+description: "হিস্ট্রি এক্সপায়ারি এবং স্টেটলেস ইথিরিয়ামের ব্যাখ্যা"
lang: bn
---
diff --git a/public/content/translations/bn/roadmap/user-experience/index.md b/public/content/translations/bn/roadmap/user-experience/index.md
index c05840cc4a7..4e1445031de 100644
--- a/public/content/translations/bn/roadmap/user-experience/index.md
+++ b/public/content/translations/bn/roadmap/user-experience/index.md
@@ -1,6 +1,6 @@
---
-title: ব্যবহারকারীর অভিজ্ঞতা উন্নত করা
-description: বেশিরভাগ মানুষের জন্য ইথিরিয়াম ব্যবহার করা এখনও অনেক জটিল। ব্যাপক গ্রহণযোগ্যতা উৎসাহিত করতে, ইথিরিয়ামকে অবশ্যই এর প্রবেশের বাধাগুলো ব্যাপকভাবে কমাতে হবে - ব্যবহারকারীদের ইথিরিয়ামে ডিসেন্ট্রালাইজড, পারমিশনলেস এবং সেন্সরশিপ প্রতিরোধী অ্যাক্সেসের সুবিধা পেতে হবে, তবে এটি একটি ঐতিহ্যবাহী Web2 অ্যাপ ব্যবহারের মতোই বাধাহীন হতে হবে।
+title: "ব্যবহারকারীর অভিজ্ঞতা উন্নত করা"
+description: "বেশিরভাগ মানুষের জন্য ইথিরিয়াম ব্যবহার করা এখনও অনেক জটিল। ব্যাপক গ্রহণযোগ্যতা উৎসাহিত করতে, ইথিরিয়ামকে অবশ্যই এর প্রবেশের বাধাগুলো ব্যাপকভাবে কমাতে হবে - ব্যবহারকারীদের ইথিরিয়ামে ডিসেন্ট্রালাইজড, পারমিশনলেস এবং সেন্সরশিপ প্রতিরোধী অ্যাক্সেসের সুবিধা পেতে হবে, তবে এটি একটি ঐতিহ্যবাহী Web2 অ্যাপ ব্যবহারের মতোই বাধাহীন হতে হবে।"
lang: bn
image: /images/roadmap/roadmap-ux.png
alt: "ইথিরিয়াম রোডম্যাপ"
diff --git a/public/content/translations/bn/roadmap/verkle-trees/index.md b/public/content/translations/bn/roadmap/verkle-trees/index.md
index a0c823be8ab..07f35a2da37 100644
--- a/public/content/translations/bn/roadmap/verkle-trees/index.md
+++ b/public/content/translations/bn/roadmap/verkle-trees/index.md
@@ -1,6 +1,6 @@
---
-title: ভার্কেল ট্রি
-description: ভার্কেল ট্রি-এর একটি উচ্চ-স্তরের বিবরণ এবং ইথিরিয়াম আপগ্রেড করতে এগুলো কীভাবে ব্যবহার করা হবে
+title: "ভার্কেল ট্রি"
+description: "ভার্কেল ট্রি-এর একটি উচ্চ-স্তরের বিবরণ এবং ইথিরিয়াম আপগ্রেড করতে এগুলো কীভাবে ব্যবহার করা হবে"
lang: bn
summaryPoints:
- ভার্কেল ট্রি কী তা জানুন
diff --git a/public/content/translations/bn/roadmap/zkevm/index.md b/public/content/translations/bn/roadmap/zkevm/index.md
index 0b97e6eb734..c2d1683162d 100644
--- a/public/content/translations/bn/roadmap/zkevm/index.md
+++ b/public/content/translations/bn/roadmap/zkevm/index.md
@@ -1,6 +1,6 @@
---
-title: L1 ব্লক ভেরিফিকেশনের জন্য zkEVM
-description: জানুন কীভাবে জিরো-নলেজ প্রুফ ইথিরিয়াম ব্লক এক্সিকিউশন ভেরিফাই করতে পারে, যা উচ্চতর থ্রুপুট এবং ভ্যালিডেটরদের জন্য কম রিকোয়ারমেন্টস সক্ষম করে।
+title: "L1 ব্লক ভেরিফিকেশনের জন্য zkEVM"
+description: "জানুন কীভাবে জিরো-নলেজ প্রুফ ইথিরিয়াম ব্লক এক্সিকিউশন ভেরিফাই করতে পারে, যা উচ্চতর থ্রুপুট এবং ভ্যালিডেটরদের জন্য কম রিকোয়ারমেন্টস সক্ষম করে।"
lang: bn
---
diff --git a/public/content/translations/bn/security/index.md b/public/content/translations/bn/security/index.md
index 6ad7ac19751..e2382801d29 100644
--- a/public/content/translations/bn/security/index.md
+++ b/public/content/translations/bn/security/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়াম নিরাপত্তা এবং স্ক্যাম প্রতিরোধ
-description: ইথিরিয়ামে নিরাপদে থাকা
+title: "ইথিরিয়াম নিরাপত্তা এবং স্ক্যাম প্রতিরোধ"
+description: "ইথিরিয়ামে নিরাপদে থাকা"
lang: bn
---
diff --git a/public/content/translations/bn/smart-contracts/index.md b/public/content/translations/bn/smart-contracts/index.md
index 4bb18f3c114..724b252329b 100644
--- a/public/content/translations/bn/smart-contracts/index.md
+++ b/public/content/translations/bn/smart-contracts/index.md
@@ -1,7 +1,7 @@
---
-title: স্মার্ট কন্ট্রাক্ট
+title: "স্মার্ট কন্ট্রাক্ট"
metaTitle: "স্মার্ট কন্ট্রাক্ট: এগুলো কী এবং এর সুবিধা"
-description: স্মার্ট কন্ট্রাক্টের একটি নন-টেকনিক্যাল পরিচিতি
+description: "স্মার্ট কন্ট্রাক্টের একটি নন-টেকনিক্যাল পরিচিতি"
lang: bn
---
diff --git a/public/content/translations/bn/social-networks/index.md b/public/content/translations/bn/social-networks/index.md
index 7fa37f1ca13..cd00ca84d27 100644
--- a/public/content/translations/bn/social-networks/index.md
+++ b/public/content/translations/bn/social-networks/index.md
@@ -1,14 +1,14 @@
---
-title: ডিসেন্ট্রালাইজড সোশ্যাল নেটওয়ার্ক
-description: ইথিরিয়ামে ডিসেন্ট্রালাইজড সোশ্যাল নেটওয়ার্কের একটি ওভারভিউ
+title: "ডিসেন্ট্রালাইজড সোশ্যাল নেটওয়ার্ক"
+description: "ইথিরিয়ামে ডিসেন্ট্রালাইজড সোশ্যাল নেটওয়ার্কের একটি ওভারভিউ"
lang: bn
template: use-cases
emoji: ":mega:"
sidebarDepth: 2
image: /images/ethereum-learn.png
-summaryPoint1: সোশ্যাল ইন্টারঅ্যাকশন এবং কন্টেন্ট তৈরি ও বিতরণের জন্য ব্লকচেইন-ভিত্তিক প্ল্যাটফর্ম।
-summaryPoint2: ডিসেন্ট্রালাইজড সোশ্যাল মিডিয়া নেটওয়ার্ক ব্যবহারকারীর গোপনীয়তা রক্ষা করে এবং ডেটা নিরাপত্তা বাড়ায়।
-summaryPoint3: টোকেন এবং NFT কন্টেন্ট মনিটাইজ করার নতুন উপায় তৈরি করে।
+summaryPoint1: "সোশ্যাল ইন্টারঅ্যাকশন এবং কন্টেন্ট তৈরি ও বিতরণের জন্য ব্লকচেইন-ভিত্তিক প্ল্যাটফর্ম।"
+summaryPoint2: "ডিসেন্ট্রালাইজড সোশ্যাল মিডিয়া নেটওয়ার্ক ব্যবহারকারীর গোপনীয়তা রক্ষা করে এবং ডেটা নিরাপত্তা বাড়ায়।"
+summaryPoint3: "টোকেন এবং NFT কন্টেন্ট মনিটাইজ করার নতুন উপায় তৈরি করে।"
---
আমাদের দৈনন্দিন যোগাযোগ এবং ইন্টারঅ্যাকশনে সোশ্যাল নেটওয়ার্কগুলো বিশাল ভূমিকা পালন করে। তবে, এই প্ল্যাটফর্মগুলোর সেন্ট্রালাইজড নিয়ন্ত্রণ অনেক সমস্যার সৃষ্টি করেছে: ডেটা লঙ্ঘন, সার্ভার বিভ্রাট, ডি-প্ল্যাটফর্মিং, সেন্সরশিপ এবং গোপনীয়তা লঙ্ঘন হলো সোশ্যাল মিডিয়ার কিছু সাধারণ সমস্যা। এই সমস্যাগুলো মোকাবিলা করতে, ডেভেলপাররা [Ethereum](/)-এ সোশ্যাল নেটওয়ার্ক তৈরি করছেন। ডিসেন্ট্রালাইজড সোশ্যাল নেটওয়ার্কগুলো প্রথাগত সোশ্যাল নেটওয়ার্কিং প্ল্যাটফর্মের অনেক সমস্যার সমাধান করতে পারে এবং ব্যবহারকারীদের সামগ্রিক অভিজ্ঞতা উন্নত করতে পারে।
diff --git a/public/content/translations/bn/staking/dvt/index.md b/public/content/translations/bn/staking/dvt/index.md
index da99b0016e7..762da39a9a9 100644
--- a/public/content/translations/bn/staking/dvt/index.md
+++ b/public/content/translations/bn/staking/dvt/index.md
@@ -1,6 +1,6 @@
---
-title: ডিস্ট্রিবিউটেড ভ্যালিডেটর প্রযুক্তি
-description: ডিস্ট্রিবিউটেড ভ্যালিডেটর প্রযুক্তি একাধিক পক্ষের মাধ্যমে একটি ইথিরিয়াম ভ্যালিডেটরের ডিস্ট্রিবিউটেড পরিচালনা সক্ষম করে।
+title: "ডিস্ট্রিবিউটেড ভ্যালিডেটর প্রযুক্তি"
+description: "ডিস্ট্রিবিউটেড ভ্যালিডেটর প্রযুক্তি একাধিক পক্ষের মাধ্যমে একটি ইথিরিয়াম ভ্যালিডেটরের ডিস্ট্রিবিউটেড পরিচালনা সক্ষম করে।"
lang: bn
---
diff --git a/public/content/translations/bn/staking/pools/index.md b/public/content/translations/bn/staking/pools/index.md
index 37a3a3a62de..aabfb474327 100644
--- a/public/content/translations/bn/staking/pools/index.md
+++ b/public/content/translations/bn/staking/pools/index.md
@@ -1,11 +1,11 @@
---
-title: পুলড স্টেকিং
-description: স্টেকিং পুল সম্পর্কে জানুন
+title: "পুলড স্টেকিং"
+description: "স্টেকিং পুল সম্পর্কে জানুন"
lang: bn
template: staking
emoji: ":money_with_wings:"
image: /images/staking/leslie-pool.png
-alt: লেসলি গন্ডার পুলে সাঁতার কাটছে।
+alt: "লেসলি গন্ডার পুলে সাঁতার কাটছে।"
sidebarDepth: 2
summaryPoints:
- অন্যদের সাথে যোগ দিয়ে যেকোনো পরিমাণ ETH স্টেক করুন এবং রিওয়ার্ড উপার্জন করুন
diff --git a/public/content/translations/bn/staking/saas/index.md b/public/content/translations/bn/staking/saas/index.md
index 4637596c336..4e4db61d192 100644
--- a/public/content/translations/bn/staking/saas/index.md
+++ b/public/content/translations/bn/staking/saas/index.md
@@ -1,11 +1,11 @@
---
-title: সার্ভিস হিসেবে স্টেকিং
-description: সার্ভিস হিসেবে স্টেকিং সম্পর্কে জানুন
+title: "সার্ভিস হিসেবে স্টেকিং"
+description: "সার্ভিস হিসেবে স্টেকিং সম্পর্কে জানুন"
lang: bn
template: staking
emoji: ":money_with_wings:"
image: /images/staking/leslie-saas.png
-alt: লেসলি গন্ডার মেঘের মধ্যে ভাসছে।
+alt: "লেসলি গন্ডার মেঘের মধ্যে ভাসছে।"
sidebarDepth: 2
summaryPoints:
- থার্ড-পার্টি নোড অপারেটররা আপনার ভ্যালিডেটর ক্লায়েন্টের অপারেশন পরিচালনা করে
diff --git a/public/content/translations/bn/staking/solo/index.md b/public/content/translations/bn/staking/solo/index.md
index 6b722b22b86..8925b823233 100644
--- a/public/content/translations/bn/staking/solo/index.md
+++ b/public/content/translations/bn/staking/solo/index.md
@@ -1,11 +1,11 @@
---
-title: আপনার ETH হোম স্টেক করুন
-description: কীভাবে আপনার ETH হোম স্টেকিং শুরু করবেন তার একটি ওভারভিউ
+title: "আপনার ETH হোম স্টেক করুন"
+description: "কীভাবে আপনার ETH হোম স্টেকিং শুরু করবেন তার একটি ওভারভিউ"
lang: bn
template: staking
emoji: ":money_with_wings:"
image: /images/staking/leslie-solo.png
-alt: লেসলি গন্ডার তার নিজের কম্পিউটার চিপে।
+alt: "লেসলি গন্ডার তার নিজের কম্পিউটার চিপে।"
sidebarDepth: 2
summaryPoints:
- আপনার ভ্যালিডেটর সঠিকভাবে কাজ করতে এবং অনলাইনে রাখার জন্য প্রটোকল থেকে সরাসরি সর্বোচ্চ রিওয়ার্ড পান
@@ -71,6 +71,7 @@ summaryPoints:
স্ল্যাশিং এবং ভ্যালিডেটর লাইফসাইকেল সম্পর্কে আরও জানুন
+
diff --git a/public/content/translations/bn/staking/withdrawals/index.md b/public/content/translations/bn/staking/withdrawals/index.md
index 10701c0e609..6b2e4227593 100644
--- a/public/content/translations/bn/staking/withdrawals/index.md
+++ b/public/content/translations/bn/staking/withdrawals/index.md
@@ -1,10 +1,10 @@
---
-title: স্টেকিং উত্তোলন
-description: স্টেকিং পুশ উইথড্রয়াল কী, এগুলো কীভাবে কাজ করে এবং স্টেকারদের তাদের রিওয়ার্ড পেতে কী করতে হবে তার সারসংক্ষেপ।
+title: "স্টেকিং উত্তোলন"
+description: "স্টেকিং পুশ উইথড্রয়াল কী, এগুলো কীভাবে কাজ করে এবং স্টেকারদের তাদের রিওয়ার্ড পেতে কী করতে হবে তার সারসংক্ষেপ।"
lang: bn
template: staking
image: /images/staking/leslie-withdrawal.png
-alt: স্টেকিং রিওয়ার্ডসহ লেসলি দ্য রাইনো
+alt: "স্টেকিং রিওয়ার্ডসহ লেসলি দ্য রাইনো"
sidebarDepth: 2
summaryPoints:
- সাংহাই/ক্যাপেলা আপগ্রেড ইথিরিয়ামে স্টেকিং উত্তোলন সক্ষম করেছে
diff --git a/public/content/translations/bn/web3/index.md b/public/content/translations/bn/web3/index.md
index ff5f8114ab0..4c378fc307c 100644
--- a/public/content/translations/bn/web3/index.md
+++ b/public/content/translations/bn/web3/index.md
@@ -1,6 +1,6 @@
---
-title: ওয়েব3 কী এবং এটি কেন গুরুত্বপূর্ণ?
-description: ওয়েব3-এর একটি পরিচিতি—ওয়ার্ল্ড ওয়াইড ওয়েবের পরবর্তী বিবর্তন—এবং এটি কেন গুরুত্বপূর্ণ।
+title: "ওয়েব3 কী এবং এটি কেন গুরুত্বপূর্ণ?"
+description: "ওয়েব3-এর একটি পরিচিতি—ওয়ার্ল্ড ওয়াইড ওয়েবের পরবর্তী বিবর্তন—এবং এটি কেন গুরুত্বপূর্ণ।"
lang: bn
---
diff --git a/public/content/translations/bn/what-are-apps/index.md b/public/content/translations/bn/what-are-apps/index.md
index 62223b41afc..0d5ce1b8e5c 100644
--- a/public/content/translations/bn/what-are-apps/index.md
+++ b/public/content/translations/bn/what-are-apps/index.md
@@ -1,14 +1,14 @@
---
-title: ইথিরিয়াম এপ্লিকেশন
-metaTitle: ইথিরিয়াম এপ্লিকেশন | ইথিরিয়ামে ডিসেন্ট্রালাইজড এপ্লিকেশন
-description: ইথিরিয়ামের অ্যাপগুলো বিনামূল্যের, বৈশ্বিক এবং প্রাইভেট কোম্পানির সার্ভারের পরিবর্তে পাবলিক ব্লকচেইন ব্যবহার করে। এর মানে হলো আপনি প্রতিটি প্রজেক্টে একই একাউন্ট ব্যবহার করতে পারবেন এবং আপনার গোপনীয়তা বজায় রাখতে পারবেন।
+title: "ইথিরিয়াম এপ্লিকেশন"
+metaTitle: "ইথিরিয়াম এপ্লিকেশন | ইথিরিয়ামে ডিসেন্ট্রালাইজড এপ্লিকেশন"
+description: "ইথিরিয়ামের অ্যাপগুলো বিনামূল্যের, বৈশ্বিক এবং প্রাইভেট কোম্পানির সার্ভারের পরিবর্তে পাবলিক ব্লকচেইন ব্যবহার করে। এর মানে হলো আপনি প্রতিটি প্রজেক্টে একই একাউন্ট ব্যবহার করতে পারবেন এবং আপনার গোপনীয়তা বজায় রাখতে পারবেন।"
lang: bn
template: use-cases
emoji: ":handshake:"
sidebarDepth: 2
showDropdown: false
image: /images/doge-computer.png
-summary: ইথিরিয়ামের অ্যাপগুলো বিনামূল্যের, বৈশ্বিক এবং প্রাইভেট কোম্পানির সার্ভারের পরিবর্তে পাবলিক ব্লকচেইন ব্যবহার করে। এর মানে হলো আপনি প্রতিটি প্রজেক্টে একই একাউন্ট ব্যবহার করতে পারবেন এবং আপনার গোপনীয়তা বজায় রাখতে পারবেন।
+summary: "ইথিরিয়ামের অ্যাপগুলো বিনামূল্যের, বৈশ্বিক এবং প্রাইভেট কোম্পানির সার্ভারের পরিবর্তে পাবলিক ব্লকচেইন ব্যবহার করে। এর মানে হলো আপনি প্রতিটি প্রজেক্টে একই একাউন্ট ব্যবহার করতে পারবেন এবং আপনার গোপনীয়তা বজায় রাখতে পারবেন।"
---
## সুপারপাওয়ার যুক্ত অ্যাপ {#apps-with-superpowers}
diff --git a/public/content/translations/bn/whitepaper/index.md b/public/content/translations/bn/whitepaper/index.md
index f74f2f33e0c..c36adfb61ce 100644
--- a/public/content/translations/bn/whitepaper/index.md
+++ b/public/content/translations/bn/whitepaper/index.md
@@ -1,6 +1,6 @@
---
-title: ইথিরিয়াম হোয়াইটপেপার
-description: ইথিরিয়ামের একটি পরিচিতিমূলক পেপার, যা এর লঞ্চের আগে 2013 সালে প্রকাশিত হয়েছিল।
+title: "ইথিরিয়াম হোয়াইটপেপার"
+description: "ইথিরিয়ামের একটি পরিচিতিমূলক পেপার, যা এর লঞ্চের আগে 2013 সালে প্রকাশিত হয়েছিল।"
lang: bn
sidebarDepth: 2
hideEditButton: true
diff --git a/public/content/translations/bn/wrapped-eth/index.md b/public/content/translations/bn/wrapped-eth/index.md
index defb8482d89..a182d806d3d 100644
--- a/public/content/translations/bn/wrapped-eth/index.md
+++ b/public/content/translations/bn/wrapped-eth/index.md
@@ -1,6 +1,6 @@
---
-title: রেপড ইথার (WETH) কী
-description: রেপড ইথার (WETH)-এর পরিচিতি—ইথার (ETH)-এর জন্য একটি ERC20-সামঞ্জস্যপূর্ণ রেপার।
+title: "রেপড ইথার (WETH) কী"
+description: "রেপড ইথার (WETH)-এর পরিচিতি—ইথার (ETH)-এর জন্য একটি ERC20-সামঞ্জস্যপূর্ণ রেপার।"
lang: bn
---
@@ -19,7 +19,7 @@ lang: bn
**সার্কুলেটিং ETH সাপ্লাইয়ের প্রায় ~3% WETH টোকেন কন্ট্রাক্টে লক করা আছে** যা এটিকে সবচেয়ে বেশি ব্যবহৃত [স্মার্ট কন্ট্রাক্ট](/glossary/#smart-contract)-গুলোর মধ্যে একটি করে তুলেছে। ডিসেন্ট্রালাইজড ফাইন্যান্স (DeFi) অ্যাপ্লিকেশনগুলোর সাথে ইন্টারঅ্যাক্ট করা ব্যবহারকারীদের জন্য WETH বিশেষভাবে গুরুত্বপূর্ণ।
-## কেন আমাদের ETH-কে ERC-20 হিসেবে রেপ করতে হবে? {#why-do-we-need-to-wrap-eth}
+## কেন আমাদের ETH-কে ERC-20 হিসেবে রেপ করতে হবে? {#why-do-we-need-to-wrap-eth}
[ERC-20](/developers/docs/standards/tokens/erc-20/) ট্রান্সফারেবল টোকেনের জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস নির্ধারণ করে, যাতে যে কেউ এমন টোকেন তৈরি করতে পারে যা ইথিরিয়ামের ইকোসিস্টেমে এই স্ট্যান্ডার্ড ব্যবহার করা অ্যাপ্লিকেশন এবং টোকেনগুলোর সাথে নির্বিঘ্নে ইন্টারঅ্যাক্ট করে। যেহেতু **ETH, ERC-20 স্ট্যান্ডার্ডের আগের**, তাই ETH এই স্পেসিফিকেশন মেনে চলে না। এর মানে হলো **আপনি সহজেই** অন্যান্য ERC-20 টোকেনের জন্য ETH এক্সচেঞ্জ করতে পারবেন না বা **ERC-20 স্ট্যান্ডার্ড ব্যবহার করা অ্যাপগুলোতে ETH ব্যবহার করতে পারবেন না**। ETH রেপ করা আপনাকে নিচের কাজগুলো করার সুযোগ দেয়:
diff --git a/public/content/translations/bn/zero-knowledge-proofs/index.md b/public/content/translations/bn/zero-knowledge-proofs/index.md
index 4c3f2b589c9..263cfc6e589 100644
--- a/public/content/translations/bn/zero-knowledge-proofs/index.md
+++ b/public/content/translations/bn/zero-knowledge-proofs/index.md
@@ -1,6 +1,6 @@
---
-title: জিরো-নলেজ প্রুফ
-description: নতুনদের জন্য জিরো-নলেজ প্রুফের একটি নন-টেকনিক্যাল পরিচিতি।
+title: "জিরো-নলেজ প্রুফ"
+description: "নতুনদের জন্য জিরো-নলেজ প্রুফের একটি নন-টেকনিক্যাল পরিচিতি।"
lang: bn
---
@@ -59,8 +59,10 @@ lang: bn
ভুটানের NDI সম্পর্কে আরও জানুন ডিসেন্ট্রালাইজড আইডেন্টিটি কেস স্টাডি-তে।
-
-
+
+
+
+
### প্রুফ অফ হিউম্যানিটি {#proof-of-humanity}
@@ -213,7 +215,7 @@ ZK-STARKs ZK-SNARKs-এর চেয়ে বড় প্রমাণ তৈরি
### প্রমাণ যাচাইকরণের খরচ {#proof-verification-costs}
-প্রমাণ যাচাই করার জন্যও জটিল কম্পিউটেশনের প্রয়োজন হয় এবং অ্যাপ্লিকেশনগুলোতে জিরো-নলেজ প্রযুক্তি বাস্তবায়নের খরচ বাড়ায়। এই খরচটি কম্পিউটেশন প্রমাণ করার প্রেক্ষাপটে বিশেষভাবে প্রাসঙ্গিক। উদাহরণস্বরূপ, ZK-রেলআপস Ethereum-এ একটি একক ZK-SNARK প্রমাণ যাচাই করতে ~ 500,000 গ্যাস প্রদান করে, যেখানে ZK-STARKs-এর জন্য আরও বেশি ফি প্রয়োজন হয়।
+প্রমাণ যাচাই করার জন্যও জটিল কম্পিউটেশনের প্রয়োজন হয় এবং অ্যাপ্লিকেশনগুলোতে জিরো-নলেজ প্রযুক্তি বাস্তবায়নের খরচ বাড়ায়। এই খরচটি কম্পিউটেশন প্রমাণ করার প্রেক্ষাপটে বিশেষভাবে প্রাসঙ্গিক। উদাহরণস্বরূপ, ZK-রোলআপস Ethereum-এ একটি একক ZK-SNARK প্রমাণ যাচাই করতে ~ 500,000 গ্যাস প্রদান করে, যেখানে ZK-STARKs-এর জন্য আরও বেশি ফি প্রয়োজন হয়।
### ট্রাস্ট অ্যাসাম্পশন {#trust-assumptions}
diff --git a/src/intl/bn/glossary-tooltip.json b/src/intl/bn/glossary-tooltip.json
index fba8dce75fd..38e4f91c021 100644
--- a/src/intl/bn/glossary-tooltip.json
+++ b/src/intl/bn/glossary-tooltip.json
@@ -70,7 +70,7 @@
"fork-term": "ফর্ক",
"fork-definition": "প্রটোকল-এ একটি পরিবর্তন যা একটি বিকল্প চেইন তৈরির কারণ হয়।",
"fraud-proof-term": "ফ্রড প্রুফ",
- "fraud-proof-definition": "নির্দিষ্ট লেয়ার ২ সমাধানগুলোর জন্য একটি সুরক্ষা মডেল যেখানে, গতি বাড়ানোর জন্য, লেনদেন-গুলোকে ব্যাচে রোলআপ করা হয় এবং একটি একক লেনদেন-এ ইথিরিয়াম-এ জমা দেওয়া হয়। অন্যান্য নেটওয়ার্ক অংশগ্রহণকারীরা লেনদেন-গুলো সততার সাথে কার্যকর করা হয়েছে কিনা তা পরীক্ষা করতে পুনরায় কার্যকর করতে পারে। যদি তারা পোস্ট করা ডাটা এবং তাদের নিজস্ব সংস্করণের মধ্যে কোনো অসঙ্গতি উন্মোচন করে তবে তারা একটি ক্রিপ্টোগ্রাফিক প্রমাণ পোস্ট করতে পারে যা প্রদর্শন করে যে কোথায় কিছু জালিয়াতি হয়েছে। কিছু রেলআপস ভ্যালিডিটি প্রুফ ব্যবহার করে।",
+ "fraud-proof-definition": "নির্দিষ্ট লেয়ার ২ সমাধানগুলোর জন্য একটি সুরক্ষা মডেল যেখানে, গতি বাড়ানোর জন্য, লেনদেন-গুলোকে ব্যাচে রোলআপ করা হয় এবং একটি একক লেনদেন-এ ইথিরিয়াম-এ জমা দেওয়া হয়। অন্যান্য নেটওয়ার্ক অংশগ্রহণকারীরা লেনদেন-গুলো সততার সাথে কার্যকর করা হয়েছে কিনা তা পরীক্ষা করতে পুনরায় কার্যকর করতে পারে। যদি তারা পোস্ট করা ডাটা এবং তাদের নিজস্ব সংস্করণের মধ্যে কোনো অসঙ্গতি উন্মোচন করে তবে তারা একটি ক্রিপ্টোগ্রাফিক প্রমাণ পোস্ট করতে পারে যা প্রদর্শন করে যে কোথায় কিছু জালিয়াতি হয়েছে। কিছু রোলআপস ভ্যালিডিটি প্রুফ ব্যবহার করে।",
"gas-term": "গ্যাস",
"gas-definition": "গ্যাস হলো ইথিরিয়াম-এর মতো একটি ব্লকচেইন-এ লেনদেন এবং স্মার্ট কন্ট্রাক্ট-এর জন্য প্রদত্ত ফি। গ্যাস এবং ফি সম্পর্কে আরও জানুন।",
"genesis-block-term": "জেনেসিস ব্লক",
@@ -125,8 +125,8 @@
"quadratic-voting-definition": "এটি একটি ভোটিং পদ্ধতি যেখানে ভোটাররা প্রকাশ করে যে তারা সমস্যাগুলো সম্পর্কে কতটা দৃঢ়ভাবে অনুভব করে। এটি ভোটারদের শুধু পছন্দই নয়, তাদের পছন্দের তীব্রতাও দেখানোর অনুমতি দেয়।",
"recovery-phrase-term": "সিড ফ্রেজ/রিকভারি ফ্রেজ",
"recovery-phrase-definition": "আপনি যখন একটি ডিজিটাল ওয়ালেট তৈরি করেন তখন আপনাকে দেওয়া শব্দের একটি তালিকা। এটি একটি পাসওয়ার্ডের মতো কাজ করে যা আপনি অ্যাক্সেস হারালে আপনাকে আপনার ওয়ালেট-এ ফিরে যেতে সাহায্য করতে পারে, এটি নিশ্চিত করে যে আপনি আপনার ডিজিটাল অর্থ বা টোকেন হারাবেন না।",
- "rollups-term": "রেলআপস",
- "rollups-definition": "এক ধরনের লেয়ার ২ স্কেলিং সমাধান যা একাধিক লেনদেন-কে ব্যাচ করে এবং সেগুলোকে একটি একক লেনদেন-এ ইথিরিয়াম মেইন চেইন-এ জমা দেয়। এটি গ্যাস খরচ হ্রাস এবং লেনদেন থ্রুপুট বৃদ্ধির অনুমতি দেয়। অপ্টিমেস্টিক এবং জিরো-নলেজ রোলআপ রয়েছে যা এই স্কেলেবিলিটি লাভগুলো অফার করার জন্য বিভিন্ন সুরক্ষা পদ্ধতি ব্যবহার করে। রেলআপস সম্পর্কে আরও জানুন।",
+ "rollups-term": "রোলআপস",
+ "rollups-definition": "এক ধরনের লেয়ার ২ স্কেলিং সমাধান যা একাধিক লেনদেন-কে ব্যাচ করে এবং সেগুলোকে একটি একক লেনদেন-এ ইথিরিয়াম মেইন চেইন-এ জমা দেয়। এটি গ্যাস খরচ হ্রাস এবং লেনদেন থ্রুপুট বৃদ্ধির অনুমতি দেয়। অপ্টিমেস্টিক এবং জিরো-নলেজ রোলআপ রয়েছে যা এই স্কেলেবিলিটি লাভগুলো অফার করার জন্য বিভিন্ন সুরক্ষা পদ্ধতি ব্যবহার করে। রোলআপস সম্পর্কে আরও জানুন।",
"rpc-term": "রিমোট প্রসিডিউর কল (RPC)",
"rpc-definition": "RPC একটি কম্পিউটারকে একটি নেটওয়ার্ক-এর মাধ্যমে অন্যটির কাছ থেকে ডাটা বা কাজের অনুরোধ করতে দেয়, যেমন রিমোট কন্ট্রোল দিয়ে তথ্যের জন্য জিজ্ঞাসা করা।",
"sequencer-term": "সিকোয়েন্সার",
@@ -152,7 +152,7 @@
"validator-term": "ভ্যালিডেটর",
"validator-definition": "একটি প্রুফ-অফ-স্টেক সিস্টেমে একটি নোড যা ডাটা সংরক্ষণ, লেনদেন প্রক্রিয়াকরণ এবং ব্লকচেইন-এ নতুন ব্লকস যোগ করার জন্য দায়ী। ভ্যালিডেটর সফ্টওয়্যার সক্রিয় করতে, আপনাকে 32 ETH স্টেক করতে সক্ষম হতে হবে। ইথিরিয়াম-এ স্টেকিং সম্পর্কে আরও জানুন।",
"validity-proof-term": "ভ্যালিডিটি প্রুফ",
- "validity-proof-definition": "নির্দিষ্ট লেয়ার ২ সমাধানগুলোর জন্য একটি সুরক্ষা মডেল যেখানে, গতি বাড়ানোর জন্য, লেনদেন-গুলোকে ব্যাচে রোলআপ করা হয় এবং একটি একক লেনদেন-এ ইথিরিয়াম-এ জমা দেওয়া হয়। লেনদেন গণনা অফচেইন করা হয় এবং তারপর তাদের বৈধতার প্রমাণসহ মেইন চেইনে সরবরাহ করা হয়। এই পদ্ধতিটি নিরাপত্তা বজায় রেখে সম্ভাব্য লেনদেন-এর পরিমাণ বাড়ায়। কিছু রেলআপস ফ্রড প্রুফ ব্যবহার করে। জিরো-নলেজ রোলআপ সম্পর্কে আরও জানুন।",
+ "validity-proof-definition": "নির্দিষ্ট লেয়ার ২ সমাধানগুলোর জন্য একটি সুরক্ষা মডেল যেখানে, গতি বাড়ানোর জন্য, লেনদেন-গুলোকে ব্যাচে রোলআপ করা হয় এবং একটি একক লেনদেন-এ ইথিরিয়াম-এ জমা দেওয়া হয়। লেনদেন গণনা অফচেইন করা হয় এবং তারপর তাদের বৈধতার প্রমাণসহ মেইন চেইনে সরবরাহ করা হয়। এই পদ্ধতিটি নিরাপত্তা বজায় রেখে সম্ভাব্য লেনদেন-এর পরিমাণ বাড়ায়। কিছু রোলআপস ফ্রড প্রুফ ব্যবহার করে। জিরো-নলেজ রোলআপ সম্পর্কে আরও জানুন।",
"wallet-term": "ওয়ালেট",
"wallet-definition": "একটি ওয়ালেট হলো ডিজিটাল মুদ্রা সংরক্ষণ, পাঠানো এবং গ্রহণ করার জন্য একটি ডিজিটাল টুল, যেমন আপনার অনলাইন অর্থের জন্য একটি ভার্চুয়াল পার্স। ইথিরিয়াম ওয়ালেট সম্পর্কে আরও জানুন।",
"web2-term": "ওয়েব2",
diff --git a/src/intl/bn/learn-quizzes.json b/src/intl/bn/learn-quizzes.json
index 222095fdd9b..8ae7e59cb07 100644
--- a/src/intl/bn/learn-quizzes.json
+++ b/src/intl/bn/learn-quizzes.json
@@ -376,10 +376,10 @@
"daos-1-a-explanation": "DAO গুলি সম্মিলিতভাবে মালিকানাধীন, কিন্তু এটি একমাত্র সঠিক বিবৃতি নয়।",
"daos-1-b-label": "তারা তাদের সদস্যদের দ্বারা পরিচালিত হয়",
"daos-1-b-explanation": "DAO গুলি তাদের সদস্যদের দ্বারা পরিচালিত হয়, কিন্তু এটি একমাত্র সঠিক বিবৃতি নয়।",
- "daos-1-c-label": "তারা একটি مشترکہ মিশনের দিকে কাজ করছে",
- "daos-1-c-explanation": "DAO গুলি একটি مشترکہ মিশনের দিকে কাজ করছে, কিন্তু এটি একমাত্র সঠিক বিবৃতি নয়।",
+ "daos-1-c-label": "তারা একটি সাধারণ মিশনের দিকে কাজ করছে",
+ "daos-1-c-explanation": "DAO গুলি একটি সাধারণ মিশনের দিকে কাজ করছে, কিন্তু এটি একমাত্র সঠিক বিবৃতি নয়।",
"daos-1-d-label": "উপরের সবকটি",
- "daos-1-d-explanation": "সঠিক, একটি DAO হল একটি সম্মিলিতভাবে মালিকানাধীন, ব্লকচেইন-শাসিত সংস্থা যা একটি مشترکہ মিশনের দিকে কাজ করছে।",
+ "daos-1-d-explanation": "সঠিক, একটি DAO হল একটি সম্মিলিতভাবে মালিকানাধীন, ব্লকচেইন-শাসিত সংস্থা যা একটি সাধারণ মিশনের দিকে কাজ করছে।",
"daos-2-prompt": "একটি DAO ব্যবহারের ব্যবহারিক উদাহরণ কী কী?",
"daos-2-a-label": "বিকেন্দ্রীভূত প্রোটোকল, সদস্যরা প্রোটোকলের বিষয় বা পণ্যটি কীভাবে বিকাশ করা যায় সে বিষয়ে ভোট দেয়",
"daos-2-a-explanation": "প্রোটোকল DAO গুলি একটি উদাহরণ, কিন্তু DAO গুলি এতে সীমাবদ্ধ নয়।",
diff --git a/src/intl/bn/page-developers-tools.json b/src/intl/bn/page-developers-tools.json
index c3d44b4c267..d6557ac148d 100644
--- a/src/intl/bn/page-developers-tools.json
+++ b/src/intl/bn/page-developers-tools.json
@@ -15,8 +15,8 @@
"page-developers-tools-category-education-meta-description": "সব স্তরের বিল্ডারদের জন্য ডকুমেন্টেশন, টিউটোরিয়াল, গাইড এবং কমিউনিটি টুল সহ ইথিরিয়াম শেখার রিসোর্স।",
"page-developers-tools-category-education-title": "শিক্ষা এবং কমিউনিটি রিসোর্স",
"page-developers-tools-category-interoperability-breadcrumb": "ইন্টারঅপারেবিলিটি",
- "page-developers-tools-category-interoperability-description": "ইথিরিয়াম মেইননেট, রেলআপস এবং অন্যান্য ব্লকচেইন জুড়ে মেসেজিং, অ্যাসেট ট্রান্সফার এবং শেয়ার্ড স্টেট সক্ষম করার টুল।",
- "page-developers-tools-category-interoperability-meta-description": "ব্রিজ, মেসেজিং, অ্যাসেট ট্রান্সফার, রেলআপস এবং ব্লকচেইন নেটওয়ার্ক জুড়ে ইন্টারঅপারেবিলিটির জন্য ইথিরিয়াম ক্রস চেইন টুল।",
+ "page-developers-tools-category-interoperability-description": "ইথিরিয়াম মেইননেট, রোলআপস এবং অন্যান্য ব্লকচেইন জুড়ে মেসেজিং, অ্যাসেট ট্রান্সফার এবং শেয়ার্ড স্টেট সক্ষম করার টুল।",
+ "page-developers-tools-category-interoperability-meta-description": "ব্রিজ, মেসেজিং, অ্যাসেট ট্রান্সফার, রোলআপস এবং ব্লকচেইন নেটওয়ার্ক জুড়ে ইন্টারঅপারেবিলিটির জন্য ইথিরিয়াম ক্রস চেইন টুল।",
"page-developers-tools-category-interoperability-title": "ক্রস-চেইন এবং ইন্টারঅপারেবিলিটি",
"page-developers-tools-category-sdks-breadcrumb": "SDKs",
"page-developers-tools-category-sdks-description": "ইথিরিয়াম নোড, কন্ট্রাক্ট এবং প্রটোকল এর সাথে ইন্টারঅ্যাক্ট করার জন্য ভাষা নির্দিষ্ট লাইব্রেরি এবং SDKs।",
diff --git a/src/intl/bn/page-layer-2-learn.json b/src/intl/bn/page-layer-2-learn.json
index b1bead16893..9937dc627fe 100644
--- a/src/intl/bn/page-layer-2-learn.json
+++ b/src/intl/bn/page-layer-2-learn.json
@@ -8,7 +8,7 @@
"page-layer-2-learn-what-is-layer-2-1": "লেয়ার 2 (L2) হলো ইথিরিয়াম স্কেলিং সমাধানগুলোর একটি নির্দিষ্ট সেট বর্ণনা করার একটি যৌথ শব্দ। একটি লেয়ার 2 হলো একটি আলাদা ব্লকচেইন যা ইথিরিয়ামকে প্রসারিত করে এবং ইথিরিয়ামের নিরাপত্তার নিশ্চয়তাগুলো উত্তরাধিকার সূত্রে পায়।",
"page-layer-2-learn-what-is-layer-2-2": "এখন চলুন এটি সম্পর্কে আরও একটু বিস্তারিত জানা যাক। এটি করার জন্য আমাদের প্রথমে লেয়ার 1 (L1) ব্যাখ্যা করতে হবে।",
"page-layer-2-learn-what-is-layer-1-title": "লেয়ার 1 কী?",
- "page-layer-2-learn-what-is-layer-1-1": "লেয়ার 1 ব্লকচেইন, যেমন ইথিরিয়াম এবং বিটকয়েন, হলো মূল ভিত্তি যার ওপর লেয়ার 2 প্রজেক্টগুলো তৈরি হয়। লেয়ার 2 প্রজেক্টের উদাহরণগুলোর মধ্যে রয়েছে ইথিরিয়ামের ওপর জিরো-নলেজ রেলআপস এবং অপ্টিমেস্টিক রেলআপস এবং বিটকয়েনের ওপর লাইটনিং নেটওয়ার্ক।",
+ "page-layer-2-learn-what-is-layer-1-1": "লেয়ার 1 ব্লকচেইন, যেমন ইথিরিয়াম এবং বিটকয়েন, হলো মূল ভিত্তি যার ওপর লেয়ার 2 প্রজেক্টগুলো তৈরি হয়। লেয়ার 2 প্রজেক্টের উদাহরণগুলোর মধ্যে রয়েছে ইথিরিয়ামের ওপর জিরো-নলেজ রোলআপস এবং অপ্টিমেস্টিক রোলআপস এবং বিটকয়েনের ওপর লাইটনিং নেটওয়ার্ক।",
"page-layer-2-learn-what-is-layer-1-2": "ইথিরিয়াম লেয়ার 2-গুলোর জন্য একটি ডাটা এভেইলএবিলিটি লেয়ার হিসেবেও কাজ করে, এবং যদি পূর্ববর্তী লেনদেন নিয়ে কোনো বিরোধ থাকে তবে এই বিরোধগুলোর জন্য ইথিরিয়াম থেকে ডেটা সরবরাহ করা হয়।",
"page-layer-2-learn-layer-1-list-title": "লেয়ার 1 হিসেবে ইথিরিয়ামের অন্তর্ভুক্ত:",
"page-layer-2-learn-layer-1-list-1": "নেটওয়ার্ক সুরক্ষিত এবং যাচাই করার জন্য নোড অপারেটরদের একটি নেটওয়ার্ক",
@@ -30,15 +30,15 @@
"page-layer-2-learn-how-does-layer-2-work-title": "লেয়ার 2 কীভাবে কাজ করে?",
"page-layer-2-learn-how-does-layer-2-work-1": "যেমনটি আমরা ওপরে উল্লেখ করেছি, লেয়ার 2 হলো ইথিরিয়াম স্কেলিং সমাধানগুলোর জন্য একটি যৌথ শব্দ যা ইথিরিয়াম লেয়ার 1-এর বাইরে লেনদেন পরিচালনা করে এবং একই সাথে ইথিরিয়াম লেয়ার 1-এর শক্তিশালী ডিসেন্ট্রালাইজড নিরাপত্তার সুবিধা গ্রহণ করে। একটি লেয়ার 2 হলো একটি আলাদা ব্লকচেইন যা ইথিরিয়ামকে প্রসারিত করে। এটি কীভাবে কাজ করে?",
"page-layer-2-learn-how-does-layer-2-work-2": "বিভিন্ন ধরনের লেয়ার 2 রয়েছে, যার প্রতিটির নিজস্ব সুবিধা-অসুবিধা এবং নিরাপত্তা মডেল রয়েছে। লেয়ার 2-গুলো লেয়ার 1 থেকে লেনদেনের বোঝা সরিয়ে নেয়, যার ফলে এটি কম যানজটপূর্ণ হয় এবং সবকিছু আরও স্কেলেবল হয়ে ওঠে।",
- "page-layer-2-learn-how-does-layer-2-work-rollups-title": "রেলআপস",
- "page-layer-2-learn-how-does-layer-2-work-rollups-1": "রেলআপস শত শত লেনদেনকে লেয়ার 1-এ একটি একক লেনদেনে বান্ডিল (বা 'রোল আপ') করে। এটি রোলআপ-এ থাকা সবার মধ্যে L1 ট্রানজেকশন ফি বিতরণ করে, যা প্রতিটি ব্যবহারকারীর জন্য এটিকে সস্তা করে তোলে।",
- "page-layer-2-learn-how-does-layer-2-work-rollups-2": "রোলআপ-এর লেনদেন ডেটা লেয়ার 1-এ জমা দেওয়া হয়, তবে এক্সিকিউশন রোলআপ দ্বারা আলাদাভাবে করা হয়। লেয়ার 1-এ লেনদেন ডেটা জমা দেওয়ার মাধ্যমে, রেলআপস ইথিরিয়ামের নিরাপত্তা উত্তরাধিকার সূত্রে পায়। এর কারণ হলো একবার ডেটা লেয়ার 1-এ আপলোড হয়ে গেলে, একটি রোলআপ লেনদেন বাতিল করার জন্য ইথিরিয়ামকে বাতিল করতে হয়। রেলআপস-এর দুটি ভিন্ন পদ্ধতি রয়েছে: অপ্টিমেস্টিক এবং জিরো-নলেজ - এই লেনদেন ডেটা কীভাবে L1-এ জমা দেওয়া হয় তার ওপর ভিত্তি করে এগুলো মূলত আলাদা।",
- "page-layer-2-learn-rollupCards-optimistic-title": "অপ্টিমেস্টিক রেলআপস",
- "page-layer-2-learn-rollupCards-optimistic-description": "অপ্টিমেস্টিক রেলআপস ফল্ট প্রুফ ব্যবহার করে যেখানে লেনদেনগুলোকে বৈধ বলে ধরে নেওয়া হয়, তবে কোনো অবৈধ লেনদেনের সন্দেহ হলে চ্যালেঞ্জ করা যেতে পারে। যদি কোনো অবৈধ লেনদেনের সন্দেহ হয়, তবে এটি ঘটেছে কি না তা দেখার জন্য একটি ফল্ট প্রুফ চালানো হয়।",
- "page-layer-2-learn-rollupCards-optimistic-childSentence": "অপ্টিমেস্টিক রেলআপস সম্পর্কে আরও জানুন",
- "page-layer-2-learn-rollupCards-zk-title": "জিরো-নলেজ রেলআপস",
- "page-layer-2-learn-rollupCards-zk-description": "জিরো-নলেজ রেলআপস ভ্যালিডিটি প্রুফ ব্যবহার করে যেখানে লেনদেনের হিসাবগুলো অফচেইন-এ গণনা করা হয়, এবং তারপর এই ডেটা তাদের বৈধতার প্রমাণসহ ইথিরিয়াম মেইননেট-এ সরবরাহ করা হয়।",
- "page-layer-2-learn-rollupCards-zk-childSentence": "zk-রেলআপস সম্পর্কে আরও জানুন",
+ "page-layer-2-learn-how-does-layer-2-work-rollups-title": "রোলআপস",
+ "page-layer-2-learn-how-does-layer-2-work-rollups-1": "রোলআপস শত শত লেনদেনকে লেয়ার 1-এ একটি একক লেনদেনে বান্ডিল (বা 'রোল আপ') করে। এটি রোলআপ-এ থাকা সবার মধ্যে L1 ট্রানজেকশন ফি বিতরণ করে, যা প্রতিটি ব্যবহারকারীর জন্য এটিকে সস্তা করে তোলে।",
+ "page-layer-2-learn-how-does-layer-2-work-rollups-2": "রোলআপ-এর লেনদেন ডেটা লেয়ার 1-এ জমা দেওয়া হয়, তবে এক্সিকিউশন রোলআপ দ্বারা আলাদাভাবে করা হয়। লেয়ার 1-এ লেনদেন ডেটা জমা দেওয়ার মাধ্যমে, রোলআপস ইথিরিয়ামের নিরাপত্তা উত্তরাধিকার সূত্রে পায়। এর কারণ হলো একবার ডেটা লেয়ার 1-এ আপলোড হয়ে গেলে, একটি রোলআপ লেনদেন বাতিল করার জন্য ইথিরিয়ামকে বাতিল করতে হয়। রোলআপস-এর দুটি ভিন্ন পদ্ধতি রয়েছে: অপ্টিমেস্টিক এবং জিরো-নলেজ - এই লেনদেন ডেটা কীভাবে L1-এ জমা দেওয়া হয় তার ওপর ভিত্তি করে এগুলো মূলত আলাদা।",
+ "page-layer-2-learn-rollupCards-optimistic-title": "অপ্টিমেস্টিক রোলআপস",
+ "page-layer-2-learn-rollupCards-optimistic-description": "অপ্টিমেস্টিক রোলআপস ফল্ট প্রুফ ব্যবহার করে যেখানে লেনদেনগুলোকে বৈধ বলে ধরে নেওয়া হয়, তবে কোনো অবৈধ লেনদেনের সন্দেহ হলে চ্যালেঞ্জ করা যেতে পারে। যদি কোনো অবৈধ লেনদেনের সন্দেহ হয়, তবে এটি ঘটেছে কি না তা দেখার জন্য একটি ফল্ট প্রুফ চালানো হয়।",
+ "page-layer-2-learn-rollupCards-optimistic-childSentence": "অপ্টিমেস্টিক রোলআপস সম্পর্কে আরও জানুন",
+ "page-layer-2-learn-rollupCards-zk-title": "জিরো-নলেজ রোলআপস",
+ "page-layer-2-learn-rollupCards-zk-description": "জিরো-নলেজ রোলআপস ভ্যালিডিটি প্রুফ ব্যবহার করে যেখানে লেনদেনের হিসাবগুলো অফচেইন-এ গণনা করা হয়, এবং তারপর এই ডেটা তাদের বৈধতার প্রমাণসহ ইথিরিয়াম মেইননেট-এ সরবরাহ করা হয়।",
+ "page-layer-2-learn-rollupCards-zk-childSentence": "zk-রোলআপস সম্পর্কে আরও জানুন",
"page-layer-2-learn-dyor-title": "নিজের গবেষণা নিজে করুন: লেয়ার 2-এর ঝুঁকি",
"page-layer-2-learn-dyor-1": "যেহেতু লেয়ার 2 চেইনগুলো ইথিরিয়াম থেকে নিরাপত্তা উত্তরাধিকার সূত্রে পায়, একটি আদর্শ বিশ্বে, এগুলো L1 ইথিরিয়ামের মতোই নিরাপদ। তবে, অনেক প্রজেক্ট এখনও নতুন এবং কিছুটা পরীক্ষামূলক। বছরের পর বছর R&D-এর পর, ইথিরিয়ামকে স্কেল করবে এমন অনেক L2 প্রযুক্তি 2021 সালে লাইভ হয়েছে। এর মানে এই নয় যে এই L2-গুলো সুরক্ষিত নয়, বরং কোনো লেয়ার 2-ই ইথিরিয়াম মেইননেট-এর মতো পরীক্ষিত নয়। সর্বদা নিজের গবেষণা নিজে করুন এবং সিদ্ধান্ত নিন যে আপনি এর সাথে জড়িত কোনো ঝুঁকিতে স্বাচ্ছন্দ্যবোধ করেন কি না।",
"page-layer-2-learn-dyor-2": "লেয়ার 2-গুলোর প্রযুক্তি, ঝুঁকি এবং আস্থার অনুমান সম্পর্কে আরও তথ্যের জন্য, আমরা L2BEAT দেখার পরামর্শ দিই, যা প্রতিটি প্রজেক্টের একটি ব্যাপক ঝুঁকি মূল্যায়ন ফ্রেমওয়ার্ক প্রদান করে।",
diff --git a/src/intl/bn/page-layer-2-networks.json b/src/intl/bn/page-layer-2-networks.json
index 4df78d573de..25e9f99fc0b 100644
--- a/src/intl/bn/page-layer-2-networks.json
+++ b/src/intl/bn/page-layer-2-networks.json
@@ -14,7 +14,7 @@
"page-layer-2-networks-n/a-label": "N/A",
"page-layer-2-networks-n/a-description": "Ethereum মেইননেট-এর জন্য প্রযোজ্য নয়।",
"page-layer-2-networks-robust-label": "শক্তিশালী",
- "page-layer-2-networks-robust-description": "সম্পূর্ণরূপে ডিসেন্ট্রালাইজড এবং সুরক্ষিত নেটওয়ার্ক যা এর নির্মাতাসহ কোনো ব্যক্তি বা গোষ্ঠী দ্বারা পরিবর্তন বা বন্ধ করা যায় না。\n\nএটি এমন একটি নেটওয়ার্ক যা Ethereum-এর ডিসেন্ট্রালাইজড দৃষ্টিভঙ্গি পূরণ করে।",
+ "page-layer-2-networks-robust-description": "সম্পূর্ণরূপে ডিসেন্ট্রালাইজড এবং সুরক্ষিত নেটওয়ার্ক যা এর নির্মাতাসহ কোনো ব্যক্তি বা গোষ্ঠী দ্বারা পরিবর্তন বা বন্ধ করা যায় না।\n\nএটি এমন একটি নেটওয়ার্ক যা Ethereum-এর ডিসেন্ট্রালাইজড দৃষ্টিভঙ্গি পূরণ করে।",
"page-layer-2-networks-maturing-label": "পরিণত হচ্ছে",
"page-layer-2-networks-maturing-description": "একটি নেটওয়ার্ক যা ডিসেন্ট্রালাইজড হওয়ার দিকে অগ্রসর হচ্ছে। চরম পরিস্থিতিতে এখনও একদল অ্যাক্টর নেটওয়ার্কটি বন্ধ করতে সক্ষম হতে পারে।",
"page-layer-2-networks-developing-label": "বিকাশমান",
diff --git a/src/intl/bn/page-layer-2.json b/src/intl/bn/page-layer-2.json
index c484ac6358a..4c2ea1af0db 100644
--- a/src/intl/bn/page-layer-2.json
+++ b/src/intl/bn/page-layer-2.json
@@ -31,7 +31,7 @@
"page-layer-2-why-do-we-need-multiple-networks-2": "কেন এতগুলো নেটওয়ার্ক আছে এবং শুধু একটি ইথিরিয়াম নেটওয়ার্ক নেই?",
"page-layer-2-faq-title": "সচরাচর জিজ্ঞাসিত প্রশ্নাবলী",
"page-layer-2-faq-ExpandableCard-1-title": "আমি কীভাবে বুঝব যে একটি নেটওয়ার্ক ইথিরিয়ামের অংশ?",
- "page-layer-2-faq-ExpandableCard-1-description-1": "ইথিরিয়ামের সাথে সম্পর্কিত নেটওয়ার্কগুলোকে বিভিন্নভাবে শ্রেণীবদ্ধ করা যায়। অনেক নেটওয়ার্ক জনপ্রিয়তা অর্জনের জন্য ইথিরিয়াম স্কেলিং করার দাবি করে। তবে, একটি স্পষ্ট বিষয় হলো নেটওয়ার্কটি তার ডেটা ইথিরিয়াম মেইননেট এ সংরক্ষণ করে কি না। এটি ব্যবহারকারীর নিরাপত্তা এবং ইথিরিয়ামের পারমিশনলেস ভিশনকে ব্যাপকভাবে বৃদ্ধি করে। এই ধরনের প্রজেক্টগুলোকে প্রায়ই “রেলআপস” বলা হয়। যদি ডেটা অন্য কোথাও সংরক্ষণ করা হয়, তবে প্রজেক্টটি সরাসরি ইথিরিয়াম এক্সটেনশন নয় বরং স্বাধীন। সবচেয়ে জনপ্রিয় কিছু প্রজেক্ট দেখে নিন",
+ "page-layer-2-faq-ExpandableCard-1-description-1": "ইথিরিয়ামের সাথে সম্পর্কিত নেটওয়ার্কগুলোকে বিভিন্নভাবে শ্রেণীবদ্ধ করা যায়। অনেক নেটওয়ার্ক জনপ্রিয়তা অর্জনের জন্য ইথিরিয়াম স্কেলিং করার দাবি করে। তবে, একটি স্পষ্ট বিষয় হলো নেটওয়ার্কটি তার ডেটা ইথিরিয়াম মেইননেট এ সংরক্ষণ করে কি না। এটি ব্যবহারকারীর নিরাপত্তা এবং ইথিরিয়ামের পারমিশনলেস ভিশনকে ব্যাপকভাবে বৃদ্ধি করে। এই ধরনের প্রজেক্টগুলোকে প্রায়ই “রোলআপস” বলা হয়। যদি ডেটা অন্য কোথাও সংরক্ষণ করা হয়, তবে প্রজেক্টটি সরাসরি ইথিরিয়াম এক্সটেনশন নয় বরং স্বাধীন। সবচেয়ে জনপ্রিয় কিছু প্রজেক্ট দেখে নিন",
"page-layer-2-faq-ExpandableCard-1-description-2": "গেমিং বা নন-ফাইন্যান্সিয়াল অ্যাপ্লিকেশনের মতো কিছু নির্দিষ্ট ইন্ডাস্ট্রিতে এমন সরাসরি ঘনিষ্ঠ সম্পর্কের প্রয়োজন নাও হতে পারে, যেখানে ভিন্ন প্রযুক্তি বেশি উপযুক্ত।",
"page-layer-2-faq-ExpandableCard-2-title": "এই সব নেটওয়ার্ক কি নিরাপদ?",
"page-layer-2-faq-ExpandableCard-2-description-1": "যদিও এগুলো সাধারণত শক্তিশালী নিরাপত্তা বৈশিষ্ট্যের সাথে ডিজাইন করা হয়, তবে এদের নিরাপত্তা নির্ভর করে অন্তর্নিহিত প্রযুক্তি, স্মার্ট কন্ট্রাক্ট নিরাপত্তা এবং",
diff --git a/src/intl/bn/page-roadmap.json b/src/intl/bn/page-roadmap.json
index 0f0d037a966..ce4a4bd49a2 100644
--- a/src/intl/bn/page-roadmap.json
+++ b/src/intl/bn/page-roadmap.json
@@ -6,7 +6,7 @@
"page-roadmap-changes-coming-title": "ইথিরিয়ামে কী কী পরিবর্তন আসছে?",
"page-roadmap-changes-coming-description": "Ethereum ইতিমধ্যে একটি শক্তিশালী প্ল্যাটফর্ম, তবে এটি এখনও উন্নত করা হচ্ছে। একটি উচ্চাভিলাষী উন্নতির সেট ইথিরিয়ামকে এর বর্তমান রূপ থেকে একটি সম্পূর্ণ স্কেলড, সর্বাধিক স্থিতিস্থাপক প্ল্যাটফর্মে আপগ্রেড করবে।",
"page-roadmap-cheaper-transactions-title": "সস্তা লেনদেন",
- "page-roadmap-cheaper-transactions-description": "রেলআপস খুব ব্যয়বহুল এবং সেন্ট্রালাইজড উপাদানগুলির উপর নির্ভর করে, যার ফলে ব্যবহারকারীরা তাদের অপারেটরদের উপর খুব বেশি আস্থা রাখে। রোডম্যাপ-এ এই উভয় সমস্যার সমাধান অন্তর্ভুক্ত রয়েছে।",
+ "page-roadmap-cheaper-transactions-description": "রোলআপস খুব ব্যয়বহুল এবং সেন্ট্রালাইজড উপাদানগুলির উপর নির্ভর করে, যার ফলে ব্যবহারকারীরা তাদের অপারেটরদের উপর খুব বেশি আস্থা রাখে। রোডম্যাপ-এ এই উভয় সমস্যার সমাধান অন্তর্ভুক্ত রয়েছে।",
"page-roadmap-cheaper-transactions-button": "ফি কমানোর বিষয়ে আরও জানুন",
"page-roadmap-extra-security-title": "অতিরিক্ত নিরাপত্তা",
"page-roadmap-extra-security-description": "ইথিরিয়াম ইতিমধ্যে খুব সুরক্ষিত তবে এটিকে আরও শক্তিশালী করা যেতে পারে, যা ভবিষ্যতের সব ধরণের আক্রমণ প্রতিহত করতে প্রস্তুত।",
@@ -27,7 +27,7 @@
"page-roadmap-hero-alt": "ইথিরিয়াম রোডম্যাপ",
"page-roadmap-technical-upgrades-title": "ইথিরিয়ামে কী কী প্রযুক্তিগত আপগ্রেড আসছে?",
"page-roadmap-danksharding-title": "Danksharding",
- "page-roadmap-danksharding-description": "ডাঙ্কশার্ডিং ইথিরিয়াম ব্লকস-এ ডেটার \"blobs\" যোগ করে ব্যবহারকারীদের জন্য L2 রেলআপস অনেক সস্তা করে তোলে।",
+ "page-roadmap-danksharding-description": "ডাঙ্কশার্ডিং ইথিরিয়াম ব্লকস-এ ডেটার \"blobs\" যোগ করে ব্যবহারকারীদের জন্য L2 রোলআপস অনেক সস্তা করে তোলে।",
"page-roadmap-single-slot-finality-title": "সিঙ্গেল স্লট ফাইনালিটি",
"page-roadmap-single-slot-finality-description": "পনেরো মিনিট অপেক্ষা করার পরিবর্তে, ব্লকস একই স্লটে প্রস্তাবিত এবং চূড়ান্ত করা যেতে পারে। এটি অ্যাপগুলির জন্য আরও সুবিধাজনক এবং আক্রমণ করা কঠিন।",
"page-roadmap-account-abstraction-title": "একাউন্ট অ্যাবস্ট্রাকশন",
@@ -51,7 +51,7 @@
"page-roadmap-faq-3-title": "এই আপগ্রেডগুলির জন্য প্রস্তুত হতে আমাকে কি কিছু করতে হবে?",
"page-roadmap-faq-3-p1": "আপগ্রেডগুলি সাধারণত শেষ-ব্যবহারকারীদের প্রভাবিত করে না, তবে উন্নত ব্যবহারকারীর অভিজ্ঞতা এবং আরও সুরক্ষিত প্রটোকল প্রদান করে এবং সম্ভবত ইথিরিয়ামের সাথে কীভাবে ইন্টারঅ্যাক্ট করতে হয় তার জন্য আরও বিকল্প প্রদান করে। নিয়মিত ব্যবহারকারীদের একটি আপগ্রেডে সক্রিয়ভাবে অংশগ্রহণ করার প্রয়োজন নেই, বা তাদের সম্পদ সুরক্ষিত করার জন্য তাদের কিছু করার প্রয়োজন নেই**। নোড অপারেটরদের একটি আপগ্রেডের জন্য প্রস্তুত হতে তাদের ক্লায়েন্ট আপডেট করতে হবে। কিছু আপগ্রেড অ্যাপ্লিকেশন ডেভেলপারদের জন্য পরিবর্তনের কারণ হতে পারে। উদাহরণস্বরূপ, হিস্ট্রি এক্সপায়ারি আপগ্রেডগুলি অ্যাপ্লিকেশন ডেভেলপারদের নতুন উত্স থেকে ঐতিহাসিক ডেটা সংগ্রহ করতে পরিচালিত করতে পারে।",
"page-roadmap-faq-4-title": "শার্ডিং সম্পর্কে কী?",
- "page-roadmap-faq-4-p1": "শার্ডিং হলো ইথিরিয়াম ব্লকচেইন-কে বিভক্ত করা যাতে ভ্যালিডেটরস-দের সাবসেটগুলি মোট ডেটার একটি ভগ্নাংশের জন্য দায়ী থাকে। এটি মূলত ইথিরিয়ামের স্কেল করার উপায় হিসাবে উদ্দিষ্ট ছিল। যাইহোক, লেয়ার 2 রেলআপস প্রত্যাশার চেয়ে অনেক দ্রুত বিকশিত হয়েছে এবং ইতিমধ্যে প্রচুর স্কেলিং প্রদান করেছে, এবং প্রোটো-ডাঙ্কশার্ডিং বাস্তবায়িত হওয়ার পরে আরও অনেক কিছু প্রদান করবে। এর মানে হলো \"শার্ড চেইন\" এর আর প্রয়োজন নেই এবং রোডম্যাপ থেকে বাদ দেওয়া হয়েছে।",
+ "page-roadmap-faq-4-p1": "শার্ডিং হলো ইথিরিয়াম ব্লকচেইন-কে বিভক্ত করা যাতে ভ্যালিডেটরস-দের সাবসেটগুলি মোট ডেটার একটি ভগ্নাংশের জন্য দায়ী থাকে। এটি মূলত ইথিরিয়ামের স্কেল করার উপায় হিসাবে উদ্দিষ্ট ছিল। যাইহোক, লেয়ার 2 রোলআপস প্রত্যাশার চেয়ে অনেক দ্রুত বিকশিত হয়েছে এবং ইতিমধ্যে প্রচুর স্কেলিং প্রদান করেছে, এবং প্রোটো-ডাঙ্কশার্ডিং বাস্তবায়িত হওয়ার পরে আরও অনেক কিছু প্রদান করবে। এর মানে হলো \"শার্ড চেইন\" এর আর প্রয়োজন নেই এবং রোডম্যাপ থেকে বাদ দেওয়া হয়েছে।",
"page-roadmap-release-status-prod": "প্রোডাকশনে আছে",
"page-roadmap-release-status-soon": "শীঘ্রই আসছে",
"page-roadmap-release-status-dev": "উন্নয়নাধীন",
@@ -90,9 +90,9 @@
"page-roadmap-pectra-balance-title": "সর্বোচ্চ কার্যকরী ব্যালেন্স বৃদ্ধি করুন",
"page-roadmap-pectra-balance-item-1": "স্টেকাররা এখন স্টেক করার জন্য যেকোনো পরিমাণ ETH বেছে নিতে পারে এবং ন্যূনতম পরিমাণের উপরে প্রতি 1 ETH-এ পুরষ্কার পেতে পারে",
"page-roadmap-pectra-blob-title": "ব্লব থ্রুপুট বৃদ্ধি",
- "page-roadmap-pectra-blob-item-1": "ব্লব সংখ্যা 3 থেকে 6 টার্গেটে বৃদ্ধি করা হবে, সর্বোচ্চ 9 পর্যন্ত, যার ফলে ইথিরিয়াম রেলআপস-এ সস্তা ফি হবে",
+ "page-roadmap-pectra-blob-item-1": "ব্লব সংখ্যা 3 থেকে 6 টার্গেটে বৃদ্ধি করা হবে, সর্বোচ্চ 9 পর্যন্ত, যার ফলে ইথিরিয়াম রোলআপস-এ সস্তা ফি হবে",
"page-roadmap-fusaka-peerdas-title": "PeerDAS (Peer-to-Peer ডাটা এভেইলএবিলিটি স্যাম্পলিং)",
- "page-roadmap-fusaka-peerdas-item-1": "রেলআপস-এর জন্য আরও দক্ষ ডাটা এভেইলএবিলিটি সক্ষম করে",
+ "page-roadmap-fusaka-peerdas-item-1": "রোলআপস-এর জন্য আরও দক্ষ ডাটা এভেইলএবিলিটি সক্ষম করে",
"page-roadmap-fusaka-peerdas-item-2": "ডিসেন্ট্রালাইজেশন বজায় রেখে একটি নোড চালানো আরও অ্যাক্সেসযোগ্য করে তোলে",
"page-roadmap-fusaka-additional-title": "সম্ভাব্য অতিরিক্ত বৈশিষ্ট্যসমূহ",
"page-roadmap-fusaka-additional-item-1": "UX উন্নত করতে মোবাইল ডিভাইসে সুরক্ষিত এনক্লেভের জন্য সমর্থন",
diff --git a/src/intl/bn/page-upgrades-get-involved.json b/src/intl/bn/page-upgrades-get-involved.json
index 6e3723c47cd..f18b813c516 100644
--- a/src/intl/bn/page-upgrades-get-involved.json
+++ b/src/intl/bn/page-upgrades-get-involved.json
@@ -19,7 +19,7 @@
"page-upgrades-get-involved-how": "আপনি কীভাবে যুক্ত হতে চান?",
"page-upgrades-get-involved-how-desc": "Ethereum কমিউনিটি সবসময় আরও বেশি মানুষের ক্লায়েন্ট চালানো, স্টেকিং এবং বাগ হান্টিং থেকে উপকৃত হবে।",
"page-upgrades-get-involved-join": "গবেষণায় যোগ দিন",
- "page-upgrades-get-involved-join-desc": "Ethereum-এর বেশিরভাগ বিষয়ের মতো, অনেক গবেষণাই পাবলিক। এর মানে হলো আপনি আলোচনায় অংশ নিতে পারেন বা Ethereum গবেষকদের কী বলার আছে তা পড়তে পারেন। ethresear.ch কনসেন্সাস আপগ্রেড, রেলআপস এবং আরও অনেক বিষয় কভার করে।",
+ "page-upgrades-get-involved-join-desc": "Ethereum-এর বেশিরভাগ বিষয়ের মতো, অনেক গবেষণাই পাবলিক। এর মানে হলো আপনি আলোচনায় অংশ নিতে পারেন বা Ethereum গবেষকদের কী বলার আছে তা পড়তে পারেন। ethresear.ch কনসেন্সাস আপগ্রেড, রোলআপস এবং আরও অনেক বিষয় কভার করে।",
"page-upgrades-get-involved-meta-description": "Ethereum আপগ্রেডে কীভাবে অংশগ্রহণ করবেন: নোড চালান, স্টেক করুন, বাগ খুঁজুন এবং আরও অনেক কিছু।",
"page-upgrades-get-involved-run-clients": "একটি ক্লায়েন্ট পেয়ার চালান",
"page-upgrades-get-involved-run-clients-desc": "একটি 'ক্লায়েন্ট' হলো এমন একটি সফটওয়্যার যা ব্লকচেইন চালায়, এবং Ethereum-এর ক্ষেত্রে, একটি ফুল নোড চালানোর জন্য এই ক্লায়েন্টগুলোর একটি পেয়ার বা জোড়া চালাতে হয়: একটি এক্সিকিউশন লেয়ার ক্লায়েন্ট এবং একটি কনসেন্সাস লেয়ার ক্লায়েন্ট। একটি ফুল নোড লেনদেন চেক করতে পারে এবং, যদি ETH স্টেকিং করা হয়, তবে নতুন ব্লকস তৈরি করতে পারে। প্রতিটি ক্লায়েন্ট-এর নিজস্ব বৈশিষ্ট্য রয়েছে তবে সামগ্রিকভাবে একই কাজ করে, তাই ক্লায়েন্ট পুলকে বৈচিত্র্যময় এবং সুরক্ষিত রাখতে আমরা আপনাকে যখনই সম্ভব একটি মাইনরিটি ক্লায়েন্ট বেছে নিতে উৎসাহিত করি।",
diff --git a/src/intl/bn/page-upgrades-index.json b/src/intl/bn/page-upgrades-index.json
index d96b407e659..2425e1940ff 100644
--- a/src/intl/bn/page-upgrades-index.json
+++ b/src/intl/bn/page-upgrades-index.json
@@ -78,8 +78,8 @@
"page-upgrades-question-2-desc": "হ্যাঁ। বিকন চেইন হলো একটি সমান্তরাল প্রুফ-অফ-স্টেক ব্লকচেইনের নাম যা ইথিরিয়ামের মেইননেট আপগ্রেড করতে ব্যবহৃত হয়েছিল। এখন শুধুমাত্র একটি ব্লকচেইন রয়েছে, যা মূল ইথিরিয়াম ব্লকচেইন এবং বিকন চেইন একসাথে যুক্ত করে তৈরি করা হয়েছে।",
"page-upgrades-question-3-answer-2a": "The Merge-এর ডিএ্যাপ ডেভেলপারদের ওপর খুব সামান্য প্রভাব ছিল - তারা এখনও ইথিরিয়ামের সাথে একইভাবে কাজ করে।",
"page-upgrades-question-3-answer-2a-link": "The Merge এবং ডিএ্যাপ ডেভেলপাররা",
- "page-upgrades-question-3-answer-2b": "শার্ডিং পরিকল্পনাগুলো এখনও তৈরি করা হচ্ছে, তবে এগুলো লেয়ার 2 রেলআপস-এর কথা মাথায় রেখে ডিজাইন করা হবে।",
- "page-upgrades-layer-2-rollups": "লেয়ার 2 রেলআপস সম্পর্কে আরও জানুন",
+ "page-upgrades-question-3-answer-2b": "শার্ডিং পরিকল্পনাগুলো এখনও তৈরি করা হচ্ছে, তবে এগুলো লেয়ার 2 রোলআপস-এর কথা মাথায় রেখে ডিজাইন করা হবে।",
+ "page-upgrades-layer-2-rollups": "লেয়ার 2 রোলআপস সম্পর্কে আরও জানুন",
"page-upgrades-question-3-answer-3-link": "ethresear.ch ভিজিট করুন",
"page-upgrades-question-3-desc": "আপগ্রেডগুলোর জন্য প্রস্তুত হতে আপনাকে এখনই কিছু করতে হবে না।",
"page-upgrades-question-3-title": "আমি কীভাবে আপগ্রেডগুলোর জন্য প্রস্তুত হবো?",
@@ -96,7 +96,7 @@
"page-upgrades-question-6-answer-4": "ConsenSys-এর Ben Edgington-এর ইথিরিয়াম আপগ্রেড সম্পর্কে একটি সাপ্তাহিক নিউজলেটার রয়েছে:",
"page-upgrades-question-6-answer-5": "আপনি ethresear.ch-এ ইথিরিয়াম গবেষণা এবং উন্নয়নের আলোচনায়ও যোগ দিতে পারেন।",
"page-upgrades-question-6-title": "আমার ডিএ্যাপ নিয়ে আমাকে কী করতে হবে?",
- "page-upgrades-question-6-desc": "The Merge এমনভাবে ডিজাইন করা হয়েছিল যাতে ডিএ্যাপ ডেভেলপারদের ওপর এর প্রভাব খুব কম থাকে, যদিও কিছু ছোট পরিবর্তন লক্ষ্য করার মতো ছিল。",
+ "page-upgrades-question-6-desc": "The Merge এমনভাবে ডিজাইন করা হয়েছিল যাতে ডিএ্যাপ ডেভেলপারদের ওপর এর প্রভাব খুব কম থাকে, যদিও কিছু ছোট পরিবর্তন লক্ষ্য করার মতো ছিল।",
"page-upgrades-question-6-answer-1": "প্রি-মার্জ ইথিরিয়ামের সাথে পরিচিত ডিএ্যাপ ডেভেলপারদের কিছু পরিবর্তন সম্পর্কে সচেতন হওয়া উচিত। এই পরিবর্তনগুলোর মধ্যে রয়েছে ব্লক গঠন এবং সময়, কিছু অপকোড পরিবর্তন, অনচেইন র্যান্ডমনেসের উৎস এবং এপোক ফাইনালাইজেশন-এর ধারণা।",
"page-upgrades-question-6-answer-1-link": "The Merge কীভাবে ইথিরিয়ামের অ্যাপ্লিকেশন লেয়ারকে প্রভাবিত করেছে",
"page-upgrades-question-6-answer-2": "অ্যাপ্লিকেশনগুলো প্রায় সম্পূর্ণভাবে প্রভাবিত হয়নি।",