diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b2f8295e70..0eb14d96f0 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -9,15 +9,42 @@ on:
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-latest-8-cores
steps:
# Checkout the code
- uses: actions/checkout@v2
# Setup node with version 12.x and NPM registry url
- - uses: actions/setup-node@v1
+ - uses: actions/setup-node@v3
with:
node-version: "16.14.1"
+ cache: 'npm'
+ # Cache Docusaurus artifacts for faster build times
+ - name: Cache Docusaurus artifacts
+ id: cache-docusaurus
+ uses: actions/cache@v3
+ with:
+ key: ${{ runner.os }}-build-docusaurus
+ path: |
+ .docusaurus
+ build
+ - if: ${{ steps.cache-docusaurus.outputs.cache-hit != 'true' }}
+ name: State of Docusaurus cache
+ continue-on-error: true
+ run: echo "Docusaurus cache miss, resulting build will be slower"
+ # Cache node_modules for faster build times
+ - name: Cache node_modules
+ id: cache-node-modules
+ env:
+ cache-name: cache-node-modules
+ uses: actions/cache@v3
+ with:
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }}
+ path: node_modules
+ - if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
+ name: State of node_modules cache
+ continue-on-error: true
+ run: echo "Package dependencies changed, unable to use node_modules cache"
# Run npm install to install project packages
- run: yarn install --frozen-lockfile
# npm run build to build the project
diff --git a/CONTENT_DISCLAIMER.md b/CONTENT_DISCLAIMER.md
new file mode 100644
index 0000000000..e3d20ca22b
--- /dev/null
+++ b/CONTENT_DISCLAIMER.md
@@ -0,0 +1,7 @@
+## Third-Party Content Disclaimer
+
+The Polygon Wiki contains third-party content, including websites, products, and services, for informational purposes only.
+
+Polygon Labs does not endorse, warrant, or make any representations regarding the accuracy, quality, reliability, or legality of any third-party products, services, or websites.
+
+The Polygon Wiki serves as an industry public good and is made available under the [MIT open source license](LICENSE). However, the Wiki maintainers reserve the right to deny any content about third-party applications, products, or services that is deemed inappropriate or potentially fraudulent. While the maintainers make efforts to ensure the accuracy and reliability of information presented in the Wiki, users are advised to exercise their own discretion and conduct their own due diligence before making any decisions based on information obtained from third-party content on the Wiki.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000..45fb445953
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Polygon Wiki
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index d9265ac6ed..1a78c66668 100755
--- a/README.md
+++ b/README.md
@@ -1,189 +1,7 @@
-
-
-
+## Archiving Repository
-
-
Polygon Wiki
- Previously Matic Network
-
+Polygon Wiki is moved from `matic-docs` to the new `wiki` repo under Polygon organization. You can check out the new repository [here](https://github.com/0xPolygon/wiki).
-
+We recommend contributors to migrate their forks and ⭐️ the new repository. For instructions on how to contribute to the `wiki` repo, check out the [README](https://github.com/0xPolygon/wiki/blob/main/README.md) file.
-
-
-
-
- src="https://img.shields.io/github/issues/maticnetwork/matic-docs">
-
-
-
-
-
-
-
-
-Polygon is a scaling solution for public blockchains that combines the best of Ethereum and sovereign blockchains
-to offer a full-stack scaling solution.
-
-The [Polygon Wiki](https://wiki.polygon.technology/) is built using [Docusaurus](https://docusaurus.io/),
-a modern static website generator to build optimized websites quickly.
-
-## How to Contribute to Polygon Wiki
-
-We believe one of the things that makes Polygon unique is its coherent design, and we seek to retain this defining
-characteristic. We have defined some guidelines to ensure new contributions only ever enhance the
-Wiki from the outset.
-
-### Requirements
-
-* Install [Node.js](https://nodejs.org/en/download/) version >= 12.13
-* Install [Yarn](https://yarnpkg.com/getting-started/install) version >= 1.5
-
-> Note that on macOS you also need Xcode and Command Line Tools.
-
-### Run the Wiki locally
-
-1. Fork the repo.
- > For help, refer to [GitHub Docs: Fork a repo](https://help.github.com/en/articles/fork-a-repo).
-
-2. Clone your forked repo.
-
- ```
- git clone git@github.com:[your_github_handle]/matic-docs
- ```
-
-3. Navigate into the cloned folder.
-
- ```
- cd matic-docs
- ```
-
-4. Link your cloned repo to the upstream repo.
- > For help, see [GitHub Docs: Configuring a remote for a fork](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork).
-
- ```
- git remote add upstream https://github.com/maticnetwork/matic-docs
- ```
-
-5. If you have already cloned the repository, be sure to sync your fork with the latest changes.
- > For help, refer to [GitHub Docs: Syncing a fork](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/syncing-a-fork).
-
- ```
- git checkout master
- git fetch upstream
- git merge upstream/master
- ```
-
-6. Install the dependencies.
-
- ```
- yarn install
- ```
-
- The site is built using Docusaurus. You may need to install Docusaurus before running the Wiki locally.
-
- ```
- yarn add docusaurus
- ```
-
- Alternatively, you can upgrade Docusaurus.
-
- ```
- yarn upgrade @docusaurus/core@latest @docusaurus/preset-classic@latest
- ```
-
-7. Run the Wiki locally.
- The following command will start a local development server and open a browser window.
- Most changes are reflected live without having to restart the server.
-
- ```
- yarn start
- ```
-
-### Make changes using Git GUI and code editor
-
-After running the Wiki locally on your machine, use a code editor to apply your changes before submitting
-your PR. Note that you must have a GitHub account and an understanding of Markdown syntax.
-
-1. Create a new branch for your changes.
-
- ```
- git checkout -b [new_branch_name]
- ```
-
-2. Commit your changes. Please be sure to review our [Git Rules](https://wiki.polygon.technology/docs/contribute/orientation#git-rules).
- In the commit message, please reference the issue it resolves.
- For help, see [GitHub Docs: Linking a pull request to an issue using a keyword](https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword).
-
- ```
- git commit -m "brief description of changes [Fixes #1234]"
- ```
-
-3. Push to your forked repository.
-
- ```
- git push
- ```
-
-4. Submit a PR against the `master` branch of the `maticnetwork/matic-docs` repo
-
-5. Add a title to your PR.
- > For example, if you want to suggest edits to the "Getting Started" page, name your PR: *Update /docs/develop/getting-started.md*.
-
-6. Add a description to your PR. Please reference the issue it resolves.
- > For help, see [GitHub Docs: Linking a pull request to an issue using a keyword](https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword).
-
-7. Write a brief description of the changes you have made. If possible, include screenshots and references.
-
-You can apply UI changes, sidebar, and configuration design through the following files:
-
-- To modify the **Sidebar** navigation, edit **sidebars.js**
-- To modify the website page layout, edit **docusaurus.config.js**
-- To modify the blocks structure and the footer links, edit **src/pages/index.js**
-
-### Making changes using the Wiki website
-
-You can easily submit an edit suggestion. Note that you must have a GitHub account and good knowledge of Markdown syntax.
-
-1. Navigate to the [Polygon Wiki page](https://wiki.polygon.technology/) that you want to edit.
-2. Scroll down until the end of that page
-3. Click on the link: **Edit this page**. It will forward you to the same page (Markdown format) hosted on GitHub.
-4. On the related GitHub page, click the pencil icon (similar to ) near the upper right corner of the file
-5. Apply your edits by modifying the Markdown file
-6. After you finish, scroll down until the end of that page to create a pull request
-7. Add a title to your PR. For example, if you want to suggest edits to the "Getting Started" page, name your PR:
- *Update /docs/develop/getting-started.md*.
-8. Add a description to your PR. Please reference the issue it resolves.
- > For help, see [GitHub Docs: Linking a pull request to an issue using a keyword](https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword).
-9. Write a brief description of the changes you have made. If possible, include screenshots and references.
-10. Click on the green button **Propose changes** to submit your changes. Note that submitting a change will write
- it to a new branch in your fork.
-
-One of the Wiki maintainers will review your PR and either accept it or submit our review.
-Acceptable PRs will be approved & merged into the `master` branch.
-
-## Submit an Issue
-
-- Create a [new issue](https://github.com/maticnetwork/matic-docs/issues/new/choose) to report a bug, request a feature,
- or suggest changes.
-- Comment on the issue if you want to be assigned to it so [our team can assign the issue to you](https://github.blog/2019-06-25-assign-issues-to-issue-commenters/).
-- If you do not have a specific contribution in mind, you can also browse current issues.
-- Issues that additionally have the `good first issue` label are considered ideal for first-timers.
-
-## Build
-
-This command generates static content into the `build` directory and can be served using any static content hosting
-service:
-
-```
-yarn build
-```
-
-## Deployment
-
-If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the
-`gh-pages` branch.
-
-```
-GIT_USER=[your_github_handle] USE_SSH=true yarn deploy
-```
+`matic-docs` will remain available as a read-only repository.
\ No newline at end of file
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000000..d8e87e74ee
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,17 @@
+# Polygon Technology Security Information
+
+## Link to vulnerability disclosure details (Bug Bounty).
+- Websites and Applications: https://hackerone.com/polygon-technology
+- Smart Contracts: https://immunefi.com/bounty/polygon
+
+## Languages that our team speaks and understands.
+Preferred-Languages: en
+
+## Security-related job openings at Polygon.
+https://polygon.technology/careers
+
+## Polygon security contact details.
+security@polygon.technology
+
+## The URL for accessing the security.txt file.
+Canonical: https://polygon.technology/security.txt
diff --git a/archive/edge/README.md b/archive/edge/README.md
new file mode 100644
index 0000000000..6f1c8b4332
--- /dev/null
+++ b/archive/edge/README.md
@@ -0,0 +1,7 @@
+# [ARCHIVED] Polygon Edge documentation
+
+We would like to inform you that the Polygon Edge documentation (for version 0.6.2 and earlier) has been archived and will no longer be maintained. Please note that the new Polygon Supernets documentation will only document the latest version of the Edge client, starting from version 0.7.x where the beta version of Supernets was first introduced.
+
+The Polygon Labs developer team has been hard at work gathering and incorporating community feedback into Polygon Supernets, and we highly recommend that you refer to the new documentation to ensure you have access to the most up-to-date information and features.
+
+Please note that the repository for older versions of the Polygon Edge (version 0.6.2 and earlier) will continue to exist, and users will have the ability to fork and do as they please, subject to applicable open-source license terms.
diff --git a/archive/edge/bn-edge/additional-features/blockscout.md b/archive/edge/bn-edge/additional-features/blockscout.md
new file mode 100644
index 0000000000..88ba9c371d
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/blockscout.md
@@ -0,0 +1,397 @@
+---
+id: blockscout
+title: BlockScout
+description: Polygon Edge-এর সাথে কাজ করার জন্য একটি BlockScout ইনস্ট্যান্স কীভাবে সেট আপ করবেন।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - blockscout
+ - deploy
+ - setup
+ - instance
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+Polygon-Edge-এর সাথে কাজ করার জন্য BlockScout ইনস্ট্যান্স কীভাবে কম্পাইল ও ডিপ্লয় করতে হয় তা বিস্তারিতভাবে এই নির্দেশিকাটিতে বর্ণনা করা হয়েছে। BlockScout-এর নিজস্ব [ডকুমেন্টেশন](https://docs.blockscout.com/for-developers/manual-deployment) আছে, কিন্তু এই নির্দেশিকাটিতে BlockScout ইনস্ট্যান্স কিভাবে সেটআপ করতে হয় সে সম্পর্কে সহজ কিন্তু ধাপে-ধাপে বিস্তারিতভাবে বর্ণনা করা হয়েছে।
+
+## এনভায়রনমেন্ট {#environment}
+* অপারেটিং সিস্টেম: Ubuntu Server 20.04 LTS সুডো পারমিশন সহ [ডাউনলোড লিঙ্ক](https://releases.ubuntu.com/20.04/)
+* সার্ভার হার্ডওয়্যার: 8CPU / 16GB RAM / 50GB HDD (LVM)
+* ডাটাবেস সার্ভার: 2 CPU / 4GB RAM / 100GB SSD / PostgreSQL 13.4 সহ ডেডিকেটেড সার্ভার
+
+### DB সার্ভার {#db-server}
+এই নির্দেশিকা অনুসরণ করার প্রয়োজনীয়তা হচ্ছে একটি ডাটাবেস সার্ভার, ডাটাবেস এবং DB ব্যবহারকারী কনফিগার করা থাকতে হবে। PostgreSQL সার্ভার কীভাবে ডিপ্লয় এবং কনফিগার করতে হবে সে সম্পর্কে এই নির্দেশিকাটিতে বিস্তারিতভাবে বর্ণনা করা হবে না।
+এ কাজ কিভাবে করতে হয়, তার জন্য অনেক গাইড আছে, উদাহরণস্বরূপ, [DigitalOcean Guide](https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart)
+
+:::info সতর্কবার্তা
+এই গাইডটি আপনাকে একটি ইন্সট্যান্সে কীভাবে BlockScout স্থাপন করা এবং চালাতে হয়, তা নিয়ে সাহায্য করে, যা মোটেই একটি আদর্শ সেটাপ নয়। প্রোডাকশনের জন্য, আপনার সম্ভবত আর্কিটেকচারে রিভার্স্ প্রক্সি, লোড ব্যালেন্সার, স্কেলেবিলিটি অপশন ইত্যাদি নিয়ে আসা উচিৎ।
+:::
+
+# BlackScout ডিপ্লয়মেন্ট প্রক্রিয়া {#blockscout-deployment-procedure}
+
+## পার্ট 1 - ডিপেন্ডেন্সি ইনস্টল করুন {#part-1-install-dependencies}
+আমরা শুরু করার আগে, BlockScout যেসমস্ত বাইনারির উপর নির্ভরশীল, সেসব ইন্সটল করা আছে কি না তা নিশ্চিত করতে হবে।
+
+### সিস্টেম আপডেট এবং আপগ্রেড করুন {#update-upgrade-system}
+```bash
+sudo apt -y update && sudo apt -y upgrade
+```
+
+### erlang repos যোগ করুন {#add-erlang-repos}
+```bash
+# go to your home dir
+cd ~
+# download deb
+wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
+# download key
+wget https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc
+# install repo
+sudo dpkg -i erlang-solutions_2.0_all.deb
+# install key
+sudo apt-key add erlang_solutions.asc
+# remove deb
+rm erlang-solutions_2.0_all.deb
+# remove key
+rm erlang_solutions.asc
+```
+
+### NodeJS repo যোগ করুন {#add-nodejs-repo}
+```bash
+sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
+```
+
+### Rust ইনস্টল করুন {#install-rust}
+```bash
+sudo curl https://sh.rustup.rs -sSf | sh -s -- -y
+```
+
+### Erlang এর প্রয়োজনীয় সংস্করণ ইনস্টল করুন {#install-required-version-of-erlang}
+```bash
+sudo apt -y install esl-erlang=1:24.*
+```
+
+### Elixir এর প্রয়োজনীয় সংস্করণ ইনস্টল করুন {#install-required-version-of-elixir}
+Elixir এর সংস্করণ অবশ্যই `1.13`হতে হবে। আমরা যদি অফিশিয়াল repo থেকে এই সংস্করণ ইন্সটল করার চেষ্টা করি, তাহলে `erlang` `Erlang/OTP 25`-এ আপডেট হয়ে যাবে, তবে আমরা সেটি চাই না।
+এই কারণবশত, আমাদের GitHub রিলিজেস পেইজ থেকে নির্দিষ্ট precompiled `elixir`সংস্করণটি ইনস্টল করতে হবে।
+
+```bash
+cd ~
+mkdir /usr/local/elixir
+wget https://github.com/elixir-lang/elixir/releases/download/v1.13.4/Precompiled.zip
+sudo unzip -d /usr/local/elixir/ Precompiled.zip
+rm Precompiled.zip
+```
+
+এখন আমাদেরকে`exlixir` সিস্টেম বাইনারি সঠিকভাবে ইন্সটল করতে হবে।
+```bash
+sudo ln -s /usr/local/elixir/bin/elixir /usr/local/bin/elixir
+sudo ln -s /usr/local/elixir/bin/mix /usr/local/bin/mix
+sudo ln -s /usr/local/elixir/bin/iex /usr/local/bin/iex
+sudo ln -s /usr/local/elixir/bin/elixirc /usr/local/bin/elixirc
+```
+
+`elixir`এবং `erlang`সঠিকভাবে ইন্সটল করা কি না তা যাচাই করুন`elixir -v`। আউটপুটটি নিচের মত হওয়া উচিত:
+```bash
+Erlang/OTP 24 [erts-12.3.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
+
+Elixir 1.13.4 (compiled with Erlang/OTP 22)
+```
+
+:::warning
+`Erlang/OTP`-এর ভার্সন অবশ্যই `24` এবং `Elixir`-এর ভার্সন `1.13.*` হতে হবে। যদি তা না হয়ে থাকে, তাহলে আপনি BlockScout চালানোর সময়ে এবং/অথবা কম্পাইল করার সময়ে সমস্যার সম্মুখীন হতে পারেন।
+
+:::
+:::info
+
+অফিশিয়াল ***[BlockScout-এর প্রয়োজনীয়তার পৃষ্ঠাটি](https://docs.blockscout.com/for-developers/information-and-settings/requirements)*** দেখুন
+
+:::
+
+### NodeJS ইনস্টল করুন {#install-nodejs}
+```bash
+sudo apt -y install nodejs
+```
+
+### Cargo ইনস্টল করুন {#install-cargo}
+```bash
+sudo apt -y install cargo
+```
+
+### অন্যান্য ডিপেন্ডেন্সি ইনস্টল করুন {#install-other-dependencies}
+```bash
+sudo apt -y install automake libtool inotify-tools gcc libgmp-dev make g++ git
+```
+
+### আপনি চাইলে আপনার DB কানেকশন দেখতে postgresql ক্লায়েন্ট ইন্সটল করতে পারেন {#optionally-install-postgresql-client-to-check-your-db-connection}
+```bash
+sudo apt install -y postgresql-client
+```
+
+## পার্ট 2 - এনভায়রনমেন্ট ভেরিয়েবল সেট করুন {#part-2-set-environment-variables}
+BlockScout কম্পাইলেশন শুরু করার পূর্বে, আমাদের এনভায়রনমেন্ট ভ্যারিয়েবল সেট করতে হবে। এই নির্দেশিকাতে, আমরা শুধু কাজ করার মতো ন্যূনতম বিষয়গুলোই সেট করব।
+ভেরিয়েবল সম্পূর্ণ তালিকা যা আপনি খুঁজে পেতে পারেন [এখানে](https://docs.blockscout.com/for-developers/information-and-settings/env-variables)
+
+### ডাটাবেস সংযোগকে এনভায়রনমেন্ট ভ্যারিয়েবল হিসেবে সেট করুন {#set-database-connection-as-environment-variable}
+```bash
+# postgresql connection example: DATABASE_URL=postgresql://blockscout:Passw0Rd@db.instance.local:5432/blockscout
+export DATABASE_URL=postgresql://:@:/ # db_name does not have to be existing database
+
+# we set these env vars to test the db connection with psql
+export PGPASSWORD=Passw0Rd
+export PGUSER=blockscout
+export PGHOST=db.instance.local
+export PGDATABASE=postgres # on AWS RDS postgres database is always created
+```
+
+এখন প্রদত্ত প্যারামিটারের সাথে আপনার DB কানেকশন পরীক্ষা করুন। যেহেতু আপনি PG env vars প্রদান করেছেন, আপনি ডাটাবেসের সাথে সংযোগ করতে পারবেন শুধুমাত্র এগুলো রান করেঃ
+```bash
+psql
+```
+
+ডাটাবেসটি সঠিকভাবে কনফিগার করা হলে, আপনার এই psql promt-টি দেখতে পাওয়া উচিৎঃ
+```bash
+psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
+SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
+Type "help" for help.
+
+blockscout=>
+```
+
+অন্যথায়, আপনি নিচের মত একটি ত্রুটি দেখতে পারেন:
+```bash
+psql: error: FATAL: password authentication failed for user "blockscout"
+FATAL: password authentication failed for user "blockscout"
+```
+যদি এটি হয়ে থাকে, তাহলে [এসকল ডক](https://ubuntu.com/server/docs/databases-postgresql) আপনাকে সাহায্য করতে পারে।
+
+:::info DB কানেকশন
+
+পরবর্তী অংশে যাওয়ার আগে নিশ্চিত হয়ে নিন যে, আপনি DB কানেকশনের সাথে সম্পর্কিত সকল সমস্যার সমাধান করেছেন৷
+আপনাকে BlockScout ব্যবহারকারীকে সুপার ইউজার সুবিধা প্রদান করতে হবে।
+
+:::
+```bash
+postgres@ubuntu:~$ createuser --interactive
+Enter name of role to add: blockscout
+Shall the new role be a superuser? (y/n) y
+```
+
+## পার্ট 3 - BlockScout ক্লোন এবং কম্পাইল {#part-3-clone-and-compile-blockscout}
+অবশেষে আমরা BlockScout ইন্সটলেশনের কাজ শুরু করতে পারবো।
+
+### BlockScout রেপো ক্লোন করুন {#clone-blockscout-repo}
+```bash
+cd ~
+git clone https://github.com/Trapesys/blockscout
+```
+
+### প্রোডাকশন বিল্ড রক্ষা করতে গোপন কী বেস তৈরি করুন {#generate-secret-key-base-to-protect-production-build}
+```bash
+cd blockscout
+mix deps.get
+mix local.rebar --force
+mix phx.gen.secret
+```
+সর্বশেষ লাইনে, আপনি কিছু এলোমেলো অক্ষরের একটি দীর্ঘ স্ট্রিং দেখতে পাবেন।
+পরবর্তী ধাপের পূর্বে, এটা আপনার `SECRET_KEY_BASE`এনভায়রনমেন্ট ভ্যারিয়েবল হিসাবে সেট হওয়া উচিৎ। উদাহরণস্বরূপ:
+```bash
+export SECRET_KEY_BASE="912X3UlQ9p9yFEBD0JU+g27v43HLAYl38nQzJGvnQsir2pMlcGYtSeRY0sSdLkV/"
+```
+
+### প্রোডাকশন মোড সেট করুন {#set-production-mode}
+```bash
+export MIX_ENV=prod
+```
+
+### কম্পাইল করুন {#compile}
+ক্লোন ডিরেক্টরিতে Cd করুন এবং কম্পাইল করা শুরু করুন
+
+```bash
+cd blockcout
+mix local.hex --force
+mix do deps.get, local.rebar --force, deps.compile, compile
+```
+
+:::info
+আপনি যদি আগে ডিপ্লয় করে থাকেন, তাহলে পূর্বের বিল্ড থেকে স্ট্যাটিক অ্যাসেটসমূহ মুছে ফেলুন ***mix phx.digest.clean***
+:::
+
+### ডাটাবেস মাইগ্রেট করুন {#migrate-databases}
+:::info
+
+আপনি আপনার DB কানেকশনটি সঠিকভাবে সেটআপ করে না করে থাকলে এই অংশটি ফেইল করবে, কারণ হয়তো আপনি প্যারামিটার প্রদান করেননি
+অথবা আপনি DATABASE_URL এনভায়রনমেন্ট ভ্যারিয়েবলে ভুল প্যারামিটার দিয়েছেন। ডাটাবেস ব্যবহারকারীর সুপারইউজার সুবিধা থাকতে হবে।
+:::
+```bash
+mix do ecto.create, ecto.migrate
+```
+
+যদি আপনাকে প্রথমে ডাটাবেস ড্রপ করতে হয়, তাহলে রান করুন,
+```bash
+mix do ecto.drop, ecto.create, ecto.migrate
+```
+
+### npm dependencies ইনস্টল করুন এবং ফ্রন্টএন্ড অ্যাসেট কম্পাইল করুন {#install-npm-dependencies-and-compile-frontend-assets}
+আপনাকে ডিরেক্টরিটিকে ফোল্ডার পরিবর্তন করতে হবে, যাতে ফ্রন্টএন্ড অ্যাসেট থাকে।
+
+```bash
+cd apps/block_scout_web/assets
+sudo npm install
+sudo node_modules/webpack/bin/webpack.js --mode production
+```
+
+:::info ধৈর্য ধরুন
+
+এসব অ্যাসেট কম্পাইলেশনে কয়েক মিনিট সময় লাগতে পারে এবং এটি কোন আউটপুট প্রদর্শন করবে না।
+এটা দেখে মনে হতে পারে যে প্রক্রিয়াটি থেমে আছে, কিন্তু ধৈর্য ধরুন। কম্পাইল প্রক্রিয়া শেষ হলে আউটপুট দেখতে কিছুটা এরকম হতে পারে: `webpack 5.69.1 compiled with 3 warnings in 104942 ms`
+
+:::
+
+### স্ট্যাটিক অ্যাসেট তৈরি করুন {#build-static-assets}
+এই ধাপের জন্য আপনাকে আপনার BlockScout ক্লোন ফোল্ডারের রুটে ফিরতে হবে।
+```bash
+cd ~/blockscout
+sudo mix phx.digest
+```
+
+### স্ব-স্বাক্ষরিত সার্টিফিকেট তৈরি করুন {#generate-self-signed-certificates}
+:::info
+
+আপনি যদি `https` ব্যবহার না করেন, তবে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।
+
+:::
+```bash
+cd apps/block_scout_web
+mix phx.gen.cert blockscout blockscout.local
+```
+
+## পার্ট 4 - BlockScout সার্ভিস তৈরি এবং রান করুন {#part-4-create-and-run-blockscout-service}
+এই অংশে আমাদের একটি সিস্টেম সার্ভিস সেট আপ করতে হবে কারণ আমরা চাই যে BlockScout ব্যাকগ্রাউন্ডে চলুক এবং সিস্টেম রিবুট করার পরে অব্যাহত থাকুক।
+
+### সার্ভিস ফাইল তৈরি করুন {#create-service-file}
+```bash
+sudo touch /etc/systemd/system/explorer.service
+```
+
+### সার্ভিস ফাইল এডিট করুন {#edit-service-file}
+এই ফাইলটি সম্পাদনা করতে এবং সার্ভিসটি কনফিগার করতে আপনার পছন্দের Linux টেক্সট এডিটর ব্যবহার করুন৷
+```bash
+sudo vi /etc/systemd/system/explorer.service
+```
+explorer.service ফাইলের বিষয়বস্তু দেখতে এরকম হবে:
+```bash
+[Unit]
+Description=BlockScout Server
+After=network.target
+StartLimitIntervalSec=0
+
+[Service]
+Type=simple
+Restart=always
+RestartSec=1
+User=root
+StandardOutput=syslog
+StandardError=syslog
+WorkingDirectory=/usr/local/blockscout
+ExecStart=/usr/local/bin/mix phx.server
+EnvironmentFile=/usr/local/blockscout/env_vars.env
+
+[Install]
+WantedBy=multi-user.target
+```
+
+### সিস্টেম বুটে সার্ভিস শুরু হওয়া এনেবল করুন। {#enable-starting-service-on-system-boot}
+```bash
+sudo systemctl daemon-reload
+sudo systemctl enable explorer.service
+```
+
+### আপনার BlockScout ক্লোন ফোল্ডারটি system-wide স্থানে সরান {#move-your-blockscout-clone-folder-to-system-wide-location}
+আপনি BlockScout রেপো থেকে যে ফোল্ডারটি ক্লোন করেছেন এবং সমস্ত অ্যাসেট কম্পাইল করেছেন তাতে BlockScout সার্ভিসের অ্যাক্সেস থাকতে হবে।
+```bash
+sudo mv ~/blockscout /usr/local
+```
+
+### env vars ফাইল তৈরি করুন যা BlockScout সার্ভিসের দ্বারা ব্যবহার করা হবে {#create-env-vars-file-which-will-be-used-by-blockscout-service}
+
+```bash
+sudo touch /usr/local/blockscout/env_vars.env
+# use your favorite text editor
+sudo vi /usr/local/blockscout/env_vars.env
+
+# env_vars.env file should hold these values ( adjusted for your environment )
+ETHEREUM_JSONRPC_HTTP_URL="localhost:8545" # json-rpc API of the chain
+ETHEREUM_JSONRPC_TRACE_URL="localhost:8545" # same as json-rpc API
+DATABASE_URL='postgresql://blockscout:Passw0Rd@db.instance.local:5432/blockscout' # database connection from Step 2
+SECRET_KEY_BASE="912X3UlQ9p9yFEBD0JU+g27v43HLAYl38nQzJGvnQsir2pMlcGYtSeRY0sSdLkV/" # secret key base
+ETHEREUM_JSONRPC_WS_URL="ws://localhost:8545/ws" # websocket API of the chain
+CHAIN_ID=93201 # chain id
+HEART_COMMAND="systemctl restart explorer" # command used by blockscout to restart it self in case of failure
+SUBNETWORK="Supertestnet PoA" # this will be in html title
+LOGO="/images/polygon_edge_logo.svg" # logo location
+LOGO_FOOTER="/images/polygon_edge_logo.svg" # footer logo location
+COIN="EDGE" # coin
+COIN_NAME="EDGE Coin" # name of the coin
+INDEXER_DISABLE_BLOCK_REWARD_FETCHER="true" # disable block reward indexer as Polygon Edge doesn't support tracing
+INDEXER_DISABLE_PENDING_TRANSACTIONS_FETCHER="true" # disable pending transactions indexer as Polygon Edge doesn't support tracing
+INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHER="true" # disable internal transactions indexer as Polygon Edge doesn't support tracing
+MIX_ENV="prod" # run in production mode
+BLOCKSCOUT_PROTOCOL="http" # protocol to run blockscout web service on
+PORT=4000 # port to run blockscout service on
+DISABLE_EXCHANGE_RATES="true" # disable fetching of exchange rates
+POOL_SIZE=200 # the number of database connections
+POOL_SIZE_API=300 # the number of read-only database connections
+ECTO_USE_SSL="false" # if protocol is set to http this should be false
+HEART_BEAT_TIMEOUT=60 # run HEARTH_COMMAND if heartbeat missing for this amount of seconds
+INDEXER_MEMORY_LIMIT="10Gb" # soft memory limit for indexer - depending on the size of the chain and the amount of RAM the server has
+FETCH_REWARDS_WAY="manual" # disable trace_block query
+INDEXER_EMPTY_BLOCKS_SANITIZER_BATCH_SIZE=1000 # sanitize empty block in this batch size
+```
+:::info
+`SECRET_KEY_BASE` ব্যবহার করুন যা আপনি পার্ট 3-তে তৈরি করেছেন।
+:::
+ফাইলটি সংরক্ষণ করুন এবং প্রস্থান করুন।
+
+### সর্বশেষে, BlockScout সার্ভিস চালু করুন {#finally-start-blockscout-service}
+```bash
+sudo systemctl start explorer.service
+```
+
+## পার্ট 5 - আপনার BlockScout ইনস্ট্যান্সের ফাংশনালিটি পরীক্ষা করুন {#part-5-test-out-the-functionality-of-your-blockscout-instance}
+এখন শুধু BlockScout সার্ভিস চলছে কিনা যাচাই করা বাকি রয়েছে।
+এটি দিয়ে সার্ভিস স্ট্যাটাস দেখুন:
+```bash
+sudo systemctl status explorer.service
+```
+
+সার্ভিস আউটপুট চেক করতে:
+```bash
+sudo journalctl -u explorer.service -f
+```
+
+নতুন কোন লিসেনিং পোর্ট আছে কিনা তা দেখতে পারেন এভাবেঃ
+```bash
+# if netstat is not installed
+sudo apt install net-tools
+sudo netstat -tulpn
+```
+
+আপনার লিসেনিং পোর্টের একটি তালিকা পাওয়া উচিৎ এবং তালিকায় এরকম কিছু থাকা উচিৎ:
+```
+tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 28142/postgres
+tcp 0 0 0.0.0.0:4000 0.0.0.0:* LISTEN 42148/beam.smp
+```
+
+BlockScout ওয়েব সার্ভিসটি env ফাইলে সংজ্ঞায়িত পোর্ট এবং প্রোটোকল চালায়। এই উদাহরণে এটি `4000`(http) এ রান করে।
+যদি সবকিছু ঠিক থাকে, তাহলে আপনাকে BlockScout ওয়েব পোর্টালটি অ্যাক্সেস করতে পারবেন এখানে `http://:4000`।
+
+## বিবেচনাসমূহ {#considerations}
+সেরা পারফরম্যান্সের জন্য, একটি ডেডিকেটেড/লোকাল `polygon-edge` ফুল আর্কাইভ নন-ভ্যালিডেটর নোড থাকা বাঞ্ছনীয়
+যা শুধুমাত্র BlockScout প্রশ্নের জন্য ব্যবহৃত হবে । এই নোডের API `json-rpc`সবার কাছে উন্মুক্ত করতে হবে না, কারণ BlockScout ব্যাকএন্ড থেকে সমস্ত প্রশ্ন করে।
+
+
+## চূড়ান্ত ভাবনা {#final-thoughts}
+আমরা এইমাত্র একটি একক BlockScout ইন্সট্যান্স স্থাপন করেছি, যা ভালভাবে কাজ করে, কিন্তু প্রোডাকশনের জন্য আপনার Nginx এর মত একটি রিভার্স্ প্রক্সির পিছনে এই ইন্সট্যান্সটি রাখার কথা বিবেচনা করা উচিত। আপনার ব্যবহারের উপর ভিত্তি করে আপনি ডাটাবেস এবং ইনস্ট্যান্স স্কেলেবিলিটির বিষয়ে ভাবতে পারেন।
+
+আপনার অবশ্যই অফিসিয়াল [BlockScout ডকুমেন্টেশনটি](https://docs.blockscout.com/) দেখা উচিৎ কারণ সেখানে অনেক কাস্টমাইজেশন অপশন আছে।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/additional-features/chainbridge/definitions.md b/archive/edge/bn-edge/additional-features/chainbridge/definitions.md
new file mode 100644
index 0000000000..db7ae2e3f5
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/chainbridge/definitions.md
@@ -0,0 +1,220 @@
+---
+id: definitions
+title: সাধারণ সংজ্ঞা
+description: chainBridge-এ ব্যবহৃত শব্দের সাধারণ সংজ্ঞা
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+
+## রিলেয়ার {#relayer}
+Chainbridge একটি রিলেয়ার ধরনের ব্রিজ। রিলেয়ারের ভূমিকা হলো কোনো অনুরোধ বাস্তবায়নের জন্য ভোট দেওয়া (যেমন কতগুলো টোকেন বার্ন/রিলিজ করতে হবে)। এটি প্রতিটি চেইনের ইভেন্টগুলো পর্যবেক্ষণ করে এবং চেইন থেকে `Deposit` ইভেন্ট পাবার পর গন্তব্য চেইনের ব্রিজ চুক্তিতে একটি প্রস্তাবের জন্য ভোট দেয়। পর্যাপ্ত সংখ্যক ভোট জমা দেওয়ার পর প্রস্তাবকে এক্সিকিউট করার ক্ষেত্রে ব্রিজ চুক্তিতে রিলেয়ারকে একটি পদ্ধতি বলা হয়। ব্রিজটি হ্যান্ডলার চুক্তিকে এক্সিকিউশন ডেলিগেট করে।
+
+
+## চুক্তির ধরন {#types-of-contracts}
+ChainBridge-এ, প্রতিটি চেইনে তিন ধরনের চুক্তি রয়েছে, যাকে ব্রিজ/হ্যান্ডলার/টার্গেট বলা হয়।
+
+| **ধরন** | **বিবরণ** |
+|----------|-------------------------------------------------------------------------------------------------------------------------------|
+| ব্রিজ চুক্তি | একটি ব্রিজ চুক্তি যা অনুরোধ, ভোট, এক্সিকিউশন পরিচালনা করে তাকে প্রতিটি চেইনে ডিপ্লয় করতে হবে। একটি ট্রান্সফার শুরু করতে ব্যবহারকারীরা ব্রিজে `deposit` কল করবেন এবং ব্রিজ টার্গেট চুক্তির সাথে সংশ্লিষ্ট হ্যান্ডলার চুক্তিকে প্রক্রিয়াটি ডেলিগেট করবে। টার্গেট চুক্তি কল করতে হ্যান্ডলার চুক্তি সফল হলে রিলেয়ারেকে জানানোর জন্য ব্রিজ চুক্তি একটি `Deposit` ইভেন্ট ইমিট করে। |
+| হ্যান্ডলার চুক্তি | একটি ডিপোজিট বা প্রস্তাব এক্সিকিউট করতে এই চুক্তিটি টার্গেট চুক্তির সাথে ইন্টারঅ্যাক্ট করে। এটি ব্যবহারকারীর অনুরোধ যাচাই করে, টার্গেট চুক্তি কল করে এবং টার্গেট চুক্তির জন্য কিছু সেটিংসের বিষয়ে সহায়তা প্রদান করে। প্রতিটি টার্গেট চুক্তি কল করতে নির্দিষ্ট হ্যান্ডলার চুক্তি রয়েছে, যেগুলোর ভিন্ন ভিন্ন ইন্টারফেস রয়েছে। হ্যান্ডলার চুক্তির পরোক্ষ কল ব্রিজটিকে যেকোনো ধরনের এসেট বা ডেটা ট্রান্সফারে সক্ষম করে তুলে। বর্তমানে, ChainBridge দ্বারা বাস্তবায়িত তিন ধরনের হ্যান্ডলার চুক্তি রয়েছে: ERC20Handler, ERC721Handler, এবং GenericHandler। |
+| টার্গেট চুক্তি | এসেট পরিচালনাকারী চুক্তি এবং বিভিন্ন চেইনে ট্রান্সফার করা মেসেজগুলি বিনিময় করা যাবে। সেতুর প্রতিটি দিক থেকে এই চুক্তির সাথে ইন্টারঅ্যাকশন করা হবে। |
+
+
+
+
+*ChainBridge আর্কিটেকচার*
+
+
+
+
+
+
+*উদাহরণস্বরূপ, একটি ERC20 টোকেন ট্রান্সফারের ওয়ার্কফ্লো*
+
+
+
+## অ্যাকাউন্টের ধরন {#types-of-accounts}
+
+শুরু করার আগে, অনুগ্রহ করে নিশ্চিত করুন যে লেনদেনের জন্য অ্যাকাউন্টে পর্যাপ্ত নেটিভ টোকেন রয়েছে। Polygon Edge-এ, জেনেসিস ব্লক তৈরি করার সময় আপনি অ্যাকাউন্টগুলিতে আগে থেকে মাইন করা ব্যালেন্স অ্যাসাইন করতে পারবেন।
+
+| **ধরন** | **বিবরণ** |
+|----------|-------------------------------------------------------------------------------------------------------------------------------|
+| অ্যাডমিন | এই অ্যাকাউন্টটিকে ডিফল্টরূপে অ্যাডমিনের ভূমিকা দেওয়া হবে। |
+| ব্যবহারকারী | প্রেরক/প্রাপক অ্যাকাউন্ট এসেট পাঠায়/গ্রহণ করে। প্রেরক অ্যাকাউন্ট টোকেন ট্রান্সফার অনুমোদন করার সময় এবং কোনো ট্রান্সফার শুরু করতে ব্রিজ চুক্তিতে ডিপোজিট কল করার সময়ে গ্যাস ফি প্রদান করে। |
+
+:::info অ্যাডমিন ভূমিকা
+
+কিছু নির্দিষ্ট কর্ম শুধুমাত্র অ্যাডমিন ভূমিকার অ্যাকাউন্ট দিয়েই করা যাবে। ডিফল্টরূপে, ব্রিজ চুক্তির ডিপ্লয়ারের অ্যাডমিন ভূমিকা থাকে। অন্য অ্যাকাউন্টকে অ্যাডমিন ভূমিকা কীভাবে প্রদান করবেন বা তা অপসারণ করবে সে সম্পর্কে নীচ থেকে জানতে পারবেন।
+
+### অ্যাডমিন ভূমিকা যোগ করুন {#add-admin-role}
+
+একজন এডমিন যোগ করেছে
+
+```bash
+# Grant admin role
+$ cb-sol-cli admin add-admin \
+ --url [JSON_RPC_URL] \
+ --privateKey [PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --admin "[NEW_ACCOUNT_ADDRESS]"
+```
+### অ্যাডমিন ভূমিকা অপসারণ করুন {#revoke-admin-role}
+
+একজন এডমিন অপসারণ করেছেন
+
+```bash
+# Revoke admin role
+$ cb-sol-cli admin remove-admin \
+ --url [JSON_RPC_URL] \
+ --privateKey [PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --admin "[NEW_ACCOUNT_ADDRESS]"
+```
+
+## `admin` অ্যাকাউন্ট দ্বারা অনুমোদিত অপারেশনগুলি নিম্নরূপ। {#account-are-as-below}
+
+### রিসোর্স সেট করুন {#set-resource}
+
+একটি হ্যান্ডলারের জন্য চুক্তি ঠিকানাসহ একটি রিসোর্স আইডি নিবন্ধন করুন।
+
+```bash
+# Register new resource
+$ cb-sol-cli bridge register-resource \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --resourceId "[RESOURCE_ID]" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[TARGET_CONTRACT_ADDRESS]"
+```
+
+### চুক্তি বার্ন/মিন্টযোগ্য করুন {#make-contract-burnable-mintable}
+
+কোনো হ্যান্ডলারের মধ্যে একটি টোকেন চুক্তিকে মিন্ট/বার্নযোগ্য হিসেবে সেট করুন।
+
+```bash
+# Let contract burnable/mintable
+$ cb-sol-cli bridge set-burn \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[TARGET_CONTRACT_ADDRESS]"
+```
+
+### প্রস্তাব বাতিল করুন {#cancel-proposal}
+
+এক্সিকিউশনের জন্য প্রস্তাব বাতিল করুন
+
+```bash
+# Cancel ongoing proposal
+$ cb-sol-cli bridge cancel-proposal \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --resourceId "[RESOURCE_ID]" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --chainId "[CHAIN_ID_OF_SOURCE_CHAIN]" \
+ --depositNonce "[NONCE]"
+```
+
+### পজ/আনপজ {#pause-unpause}
+
+ডিপোজিট, প্রস্তাব সৃষ্টি, ভোটিং এবং ডিপোজিট এক্সিকিউশন সাময়িকভাবে পজ করুন।
+
+```bash
+# Pause
+$ cb-sol-cli admin pause \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]"
+
+# Unpause
+$ cb-sol-cli admin unpause \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]"
+```
+
+### ফি পরিবর্তন {#change-fee}
+
+ব্রিজ চুক্তিতে যে ফি প্রদান করতে হবে তা পরিবর্তন করুন
+
+```bash
+# Change fee for execution
+$ cb-sol-cli admin set-fee \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --fee [FEE_IN_WEI]
+```
+
+### একটি রিলেয়ার যোগ/অপসারণ করুন {#add-remove-a-relayer}
+
+নতুন রিলেয়ার হিসাবে একটি অ্যাকাউন্ট যোগ করুন বা রিলেয়ার থেকে একটি অ্যাকাউন্ট অপসারণ করুন
+
+```bash
+# Add relayer
+$ cb-sol-cli admin add-relayer \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --relayer "[NEW_RELAYER_ADDRESS]"
+
+# Remove relayer
+$ cb-sol-cli admin remove-relayer \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --relayer "[RELAYER_ADDRESS]"
+```
+
+### রিলেয়ার থ্রেশহোল্ড পরিবর্তন করুন {#change-relayer-threshold}
+
+একটি প্রস্তাব এক্সিকিউশন করার জন্য প্রয়োজনীয় ভোটের সংখ্যা পরিবর্তন করুন
+
+```bash
+# Remove relayer
+$ cb-sol-cli admin set-threshold \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --threshold [THRESHOLD]
+```
+:::
+
+## চেইন আইডি {#chain-id}
+
+চেইনব্রিজ `chainId` হচ্ছে একটি দৈবচয়ন ভিত্তিক মান যা ব্লকচেইন নেটওয়ার্কের মধ্যে পার্থক্য করার জন্য ব্রিজে ব্যবহৃত হয় এবং এটি uint8 এর পরিসীমার মধ্যে হতে হবে। নেটওয়ার্কের চেইন আইডি নিয়ে বিভ্রান্তি এড়াতে এগুলো আলাদা হয়ে থাকে। এই মান অনন্য হতে হবে, তবে নেটওয়ার্কের আইডির মত একই হতে হবে না।
+
+এই উদাহরণে আমরা `chainId`-এ `99`সেট করেছি কারণ মুম্বাই টেস্টনেটের চেইন আইডি হচ্ছে `80001`, যা একটি uint8 দিয়ে উপস্থাপন করা যাবে না।
+
+## রিসোর্স আইডি {#resource-id}
+
+একটি রিসোর্স আইডি একটি ক্রস চেইন পরিবেশে একটি অনন্য 32-বাইট মান, যা বিভিন্ন নেটওয়ার্কের মধ্যে ট্রান্সফার হওয়া কিছু নির্দিষ্ট এসেটের (রিসোর্স) সাথে সম্পর্কিত।
+
+রিসোর্স আইডি দৈবচয়ন ভিত্তিক, তবে প্রথা হিসাবে শেষ বাইটে উৎস চেইনের (যে নেটওয়ার্ক থেকে এই এসেটটির উৎপত্তি হয়েছে) চেইন আইডি থাকে।
+
+## Polygon PoS-এর JSON-RPC URL {#json-rpc-url-for-polygon-pos}
+
+এই নির্দেশিকায় আমরা https://rpc-mumbai.matic.today ব্যবহার করব, যা Polygon দ্বারা প্রদত্ত একটি পাবলিক JSON-RPC URL এবং এটিতে ট্রাফিক বা রেট-লিমিট থাকতে পারে। এটি শুধুমাত্র Polygon মুম্বাই টেস্টনেটের সাথে সংযোগ করতে ব্যবহার করা হবে। আমরা আপনাকে আপনার JSON-RPC URL পেতে একটি বহিরাগত পরিষেবা যেমন Infura ব্যবহারের পরামর্শ দিচ্ছি কারণ চুক্তি ডিপ্লয় করলে JSON-RPC অনেক কুয়েরি/অনুরোধ পাঠিয়ে থাকে।
+
+## টোকেন ট্রান্সফার প্রসেস করার বিভিন্ন পদ্ধতি {#ways-of-processing-the-transfer-of-tokens}
+বিভিন্ন চেইনের মধ্যে ERC20 টোকেন ট্রান্সফার করার সময়, তাদের দুটি ভিন্ন মোডে প্রক্রিয়া করা যেতে পারে:
+
+### লক/রিলিজ মোড {#lock-release-mode}
+উৎস চেইন: আপনি যে টোকেন প্রেরণ করছেন তা হ্যান্ডলার চুক্তির মধ্যে লক করা হবে।
+গন্তব্য চেইন: উৎস চেইনে আপনার পাঠানো টোকেনের সম পরিমাণ টোকেন আনলক করা হবে এবং গন্তব্য চেইনের প্রাপক অ্যাকাউন্টে হ্যান্ডলার চুক্তি থেকে তা ট্রান্সফার করা হবে।
+
+### বার্ন/মিন্ট মোড {#burn-mint-mode}
+উৎস চেইন: আপনি যে টোকেন প্রেরণ করছেন তা বার্ন করা হবে।
+গন্তব্য চেইন : সোর্স চেইনে আপনি যে পরিমাণ টোকেন প্রেরণ এবং বার্ন করেছেন তার একই পরিমাণ গন্তব্য চেইনে মিন্ট করা হবে এবং প্রাপক অ্যাকাউন্টে পাঠানো হবে।
+
+আপনি প্রতিটি চেইন বিভিন্ন মোড ব্যবহার করতে পারেন। এর মানে হচ্ছে আপনি মেইন চেইনে টোকেন লক করতে পারবেন এবং ট্রান্সফারের জন্য সাবচেইনে টোকেন মিন্ট করতে পারবেন। উদাহরণস্বরূপ, মোট সাপ্লাই বা মিন্ট শিডিউল নিয়ন্ত্রণ করা হলে টোকেন লক/রিলিজ করাই বুদ্ধিমানের কাজ হতে পারে। সাবচেইনের চুক্তিটিকে মেইন চেইনে সাপ্লাই অনুসরণ করতে হলে টোকেন মিন্ট/বার্ন করতে হবে।
+
+ডিফল্ট মোড হচ্ছে লক/রিলিজ মোড। আপনি যদি টোকেন মিন্ট/বার্নযোগ্য করতে চান, তাহলে আপনাকে `adminSetBurnable` পদ্ধতি কল করতে হবে। আপনি যদি এক্সিকিউশনে থাকা টোকেন মিন্ট করতে চান, তাহলে আপনাকে ERC20 হ্যান্ডলার চুক্তিকে `minter` ভূমিকা প্রদান করতে হবে।
+
+
diff --git a/archive/edge/bn-edge/additional-features/chainbridge/overview.md b/archive/edge/bn-edge/additional-features/chainbridge/overview.md
new file mode 100644
index 0000000000..a6bd50dee7
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/chainbridge/overview.md
@@ -0,0 +1,36 @@
+---
+id: overview
+title: সংক্ষিপ্ত বিবরণ
+description: ChainBridge ওভারভিউ
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+## ChainBridge কী? {#what-is-chainbridge}
+
+ChainBridge একটি মডুলার, মাল্টি-ডিরেকশনাল ব্লকচেইন ব্রিজ যা EVM ও Substrate সমর্থিত চেইন সমর্থন করে এবং ChainSafe দ্বারা নির্মিত। এটি ব্যবহারকারীদের দুটি ভিন্ন চেইনের মধ্যে সকল প্রকারের এসেট বা মেসেজ ট্রান্সফারের সুবিধা প্রদান করে।
+
+ChainBridge সম্পর্কে আরও জানতে, দয়া করে প্রথমে এটির ডেভেলাপারদের প্রদত্ত [অফিসিয়াল ডকুমেন্টগুলো](https://chainbridge.chainsafe.io/) দেখুন।
+
+এই নির্দেশিকাটি Polygon Edge-এ Chainbridge ইন্টিগ্রেট করতে সহায়তা প্রদানের উদ্দেশ্যে নির্মাণ করা হয়েছে। এটি একটি চলমান Polygon PoS (মুম্বাই টেস্টনেট) এবং একটি স্থানীয় Polygon Edge নেটওয়ার্কের মধ্যে একটি ব্রিজ সেটআপ করার প্রক্রিয়াটিকে বর্ণনা করে।
+
+## আবশ্যকতা {#requirements}
+
+এই নির্দেশিকায়, আপনি Polygon Edge নোড, একটি ChainBridge রিলেয়ার ([এখানে](/docs/edge/additional-features/chainbridge/definitions) আরো জানতে পারবেন) এবং cb-sol-cli টুল রান করবেন। cb-sol-cli টুল হচ্ছে স্থানীয়ভাবে চুক্তি ডিপ্লয় করার, রিসোর্স নিবন্ধ করার এবং ব্রিজের সেটিংস পরিবর্তন করার একটি CLI টুল ([এটিও](https://chainbridge.chainsafe.io/cli-options/#cli-options) দেখতে পারেন)। সেটআপ শুরু করার আগে নিম্নলিখিত এনভায়রনমেন্টগুলো প্রয়োজন:
+
+* Go: >= 1.17
+* Node.js >= 16.13.0
+* Git
+
+
+তাছাড়া, কিছু অ্যাপ্লিকেশন চালানোর জন্য আপনাকে নিম্নলিখিত রিপোজিটরিগুলো সংস্করণ সহ ক্লোন করতে হবে।
+
+* [Polygon Edge](https://github.com/0xPolygon/polygon-edge): `develop` ব্রাঞ্চে
+* [ChainBridge](https://github.com/ChainSafe/ChainBridge): v1.1.5
+* [ChainBridge ডিপ্লয় টুল](https://github.com/ChainSafe/chainbridge-deploy): `f2aa093` `main` ব্রাঞ্চে
+
+
+পরবর্তী বিভাগে এগিয়ে যাওয়ার আগে আপনাকে একটি Polygon Edge নেটওয়ার্ক সেটআপ করতে হবে। আরো বিস্তারিত জানার জন্য, অনুগ্রহ করে [স্থানীয় সেটআপ](/docs/edge/get-started/set-up-ibft-locally) বা [ক্লাউড সেটআপ](/docs/edge/get-started/set-up-ibft-on-the-cloud) দেখুন
\ No newline at end of file
diff --git a/archive/edge/bn-edge/additional-features/chainbridge/setup-erc20-transfer.md b/archive/edge/bn-edge/additional-features/chainbridge/setup-erc20-transfer.md
new file mode 100644
index 0000000000..6929486a2b
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/chainbridge/setup-erc20-transfer.md
@@ -0,0 +1,142 @@
+---
+id: setup-erc20-transfer
+title: ERC20 টোকেন ট্রান্সফার
+description: ChainBridge-এ ERC-20 ট্রান্সফার কিভাবে সেটআপ করবেন
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+এপর্যন্ত, আমরা Polygon PoS এবং Polygon Edge চেইনের মধ্যে অ্যাসেট/ডেটা বিনিময়ের জন্য একটি ব্রিজ স্থাপন করেছি। এই বিভাগটি আপনাকে একটি ERC20 ব্রিজ সেটআপ করতে এবং বিভিন্ন ব্লকচেইনের মধ্যে টোকেন পাঠাতে নির্দেশনা প্রদান করবে।
+
+## স্টেপ 1: রিসোর্স আইডি নিবন্ধন করুন {#step-1-register-resource-id}
+
+প্রথমত, আপনি একটি রিসোর্স আইডি নিবন্ধন করবেন যা একটি ক্রস-চেইন এনভায়রনমেন্টে সংস্থানগুলিকে সংযুক্ত করে। একটি রিসোর্স আইডি হল একটি 32-বাইটের ভ্যালু যা অবশ্যই এই ব্লকচেইনের মধ্যে স্থানান্তর করা অ্যাসেটের জন্য অনন্য হতে হবে। রিসোর্স আইডিগুলোর নির্দিষ্ট কোনো ক্রম নেই, তবে তাদের শেষ বাইটে প্রথা হিসেবে হোম চেইনের চেইন আইডি থাকতে পারে (হোম চেইন বলতে যে নেটওয়ার্ক থেকে এই রিসোর্সগুলি পাওয়া হয়েছে তাকে বুঝানো হয়েছে)।
+
+রিসোর্স আইডি নিবন্ধন করতে, আপনি `cb-sol-cli bridge register-resource` কমান্ডটি ব্যবহার করতে পারেন। আপনাকে `admin` অ্যাকাউন্টের ব্যক্তিগত কী দিতে হবে।
+
+```bash
+# For Polygon PoS chain
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ # Set Resource ID for ERC20
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+
+# For Polygon Edge chain
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ # Set Resource ID for ERC20
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+## (ঐচ্ছিক) চুক্তিগুলি মিন্টযোগ্য/বার্নযোগ্য করুন {#optional-make-contracts-mintable-burnable}
+
+
+```bash
+# Let ERC20 contract burn on source chain and mint on destination chain
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC20_CONTRACT_ADDRESS]"
+
+# Grant minter role to ERC20 Handler contract
+$ cb-sol-cli erc20 add-minter \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --minter "[ERC20_HANDLER_CONTRACT_ADDRESS]"
+```
+
+## স্টেপ 2: ERC20 টোকেন ট্রান্সফার {#step-2-transfer-erc20-token}
+
+আমরা Polygon PoS চেইন থেকে Polygon Edge চেইনে ERC20 টোকেন পাঠাব।
+
+প্রথমত, মিন্ট করার মাধ্যমে আপনি টোকেন পাবেন। একটি`minter` রোল সহ অ্যাকাউন্ট নতুন টোকেন মিন্ট করতে পারে। ERC20 চুক্তি ডিপ্লয় করা অ্যাকাউন্টে ডিফল্টরূপে `minter` রোলটি থাকে। অন্যান্য অ্যাকাউন্টগুলোকে `minter` রোলের মেম্বার হিসেবে উল্লেখ করতে, আপনাকে `cb-sol-cli erc20 add-minter` কমান্ডটি রান করতে হবে।
+
+```bash
+# Mint ERC20 tokens
+$ cb-sol-cli erc20 mint \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [MINTER_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --amount 1000
+```
+
+বর্তমান ব্যালেন্স চেক করতে, আপনি `cb-sol-cli erc20 balance`কমান্ডটি ব্যবহার করতে পারেন।
+
+```bash
+# Check ERC20 token balance
+$ cb-sol-cli erc20 balance \
+ --url https://rpc-mumbai.matic.today \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --address "[ACCOUNT_ADDRESS]"
+
+[erc20/balance] Account has a balance of 1000.0
+```
+
+পরবর্তী, আপনাকে ERC20 হ্যান্ডলার দ্বারা অ্যাকাউন্ট থেকে ERC20 টোকেন ট্রান্সফার অনুমোদন করতে হবে।
+
+```bash
+# Approve transfer from the account by ERC20 Handler
+$ cb-sol-cli erc20 approve \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [USER_ACCOUNT_ADDRESS] \
+ --gasPrice [GAS_PRICE] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --recipient "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --amount 500
+```
+
+টোকেনগুলো Polygon Edge চেইনে স্থানান্তর করতে, আপনি `deposit`কল করবেন।
+
+```bash
+# Start transfer from Polygon PoS to Polygon Edge chain
+$ cb-sol-cli erc20 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --amount 10 \
+ # ChainID of Polygon Edge chain
+ --dest 100 \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]" \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00"
+```
+
+ডিপোজিট লেনদেন সফল হওয়ার পরে, রিলেয়ার ইভেন্টটি পাবে এবং প্রস্তাবের পক্ষে ভোট দেবে। প্রয়োজনীয় সংখ্যক ভোট পাওয়ার পরে এটি Polygon Edge চেইনে প্রাপকের অ্যাকাউন্টে টোকেন পাঠানোর জন্য একটি লেনদেন সম্পাদন করে।
+
+```bash
+INFO[11-19|08:15:58] Handling fungible deposit event chain=mumbai dest=100 nonce=1
+INFO[11-19|08:15:59] Attempting to resolve message chain=polygon-edge type=FungibleTransfer src=99 dst=100 nonce=1 rId=000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00
+INFO[11-19|08:15:59] Creating erc20 proposal chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Watching for finalization event chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Submitted proposal vote chain=polygon-edge tx=0x67a97849951cdf0480e24a95f59adc65ae75da23d00b4ab22e917a2ad2fa940d src=99 depositNonce=1 gasPrice=1
+INFO[11-19|08:16:24] Submitted proposal execution chain=polygon-edge tx=0x63615a775a55fcb00676a40e3c9025eeefec94d0c32ee14548891b71f8d1aad1 src=99 dst=100 nonce=1 gasPrice=5
+```
+
+এক্সিকিউশন লেনদেন সফলভাবে সম্পন্ন হবার পর আপনি Polygon Edge চেইনে টোকেন পাবেন।
+
+```bash
+# Check the ERC20 balance in Polygon Edge chain
+$ cb-sol-cli erc20 balance \
+ --url https://localhost:10002 \
+ --privateKey [PRIVATE_KEY] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --address "[ACCOUNT_ADDRESS]"
+
+[erc20/balance] Account has a balance of 10.0
+```
diff --git a/archive/edge/bn-edge/additional-features/chainbridge/setup-erc721-transfer.md b/archive/edge/bn-edge/additional-features/chainbridge/setup-erc721-transfer.md
new file mode 100644
index 0000000000..e1e0713ada
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/chainbridge/setup-erc721-transfer.md
@@ -0,0 +1,134 @@
+---
+id: setup-erc721-transfer
+title: ERC721 NFT ট্রান্সফার
+description: ChainBridge-এ ERC-20 tranfer কিভাবে সেটআপ করতে হয়
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+এই বিভাগটি আপনাকে একটি ERC721 ব্রিজ সেটআপ করার এবং ব্লকচেইন নেটওয়ার্কগুলির মধ্যে NFT পাঠানোর নির্দেশনা প্রদান করবে।
+
+## স্টেপ 1: রিসোর্স আইডি নিবন্ধন করুন {#step-1-register-resource-id}
+
+আপনাকে প্রথমে উভয় চেইনের ব্রিজ চুক্তিতে ERC721 টোকেনের জন্য রিসোর্স আইডি নিবন্ধন করতে হবে।
+
+```bash
+# For Polygon PoS chain
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ # Set ResourceID for ERC721 Token
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+
+# For Polygon Edge chain
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ # Set ResourceID for ERC721 Token
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+## (ঐচ্ছিক) চুক্তিগুলি মিন্টেবল/বার্নেবল করুন {#optional-make-contracts-mintable-burnable}
+
+টোকেনগুলো মিন্টেবল/বার্নেবল করে তৈরি করতে, আপনাকে নিম্নোক্ত কমান্ডগুলো কল করতে হবেঃ
+
+```bash
+# Let ERC721 contract burn on source chain or mint on destination chain
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC721_CONTRACT_ADDRESS]"
+
+# Grant minter role to ERC721 Handler contract (Only if you want to mint)
+$ cb-sol-cli erc721 add-minter \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --minter "[ERC721_HANDLER_CONTRACT_ADDRESS]"
+```
+
+## ধাপ 2: NFT ট্রান্সফার করুন {#step-2-transfer-nft}
+
+প্রথমত, আপনার প্রয়োজন হলে আপনি একটি NFT মিন্ট করবেন।
+
+```bash
+# Mint NFT 0x50
+$ cb-sol-cli erc721 mint \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [MINTER_ROLE_ACCOUNT] \
+ --gasPrice [GAS_PRICE] \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
+
+NFT-এর মালিক কে জানতে, আপনি `cb-sol-cli erc721 owner` ব্যবহার করতে পারেন
+
+```bash
+# Check the current owner of NFT
+$ cb-sol-cli erc721 owner \
+ --url https://rpc-mumbai.matic.today \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
+
+তারপর, আপনি ERC721 হ্যান্ডলার দিয়ে NFT-এর ট্রান্সফার অনুমোদন করবেন
+
+```bash
+# Approve transfer of the NFT 0x50 by ERC721 Handler
+$ cb-sol-cli erc721 approve \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --recipient "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
+
+সর্বশেষে, আপনি ট্রান্সফার শুরু করবেন
+
+```bash
+# Start transfer from Polygon PoS to Polygon Edge chain
+$ cb-sol-cli erc721 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --id 0x50 \
+ # ChainID of Polygon Edge chain
+ --dest 100 \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]"
+```
+
+রিলেয়ার ইভেন্টটি পাবেন এবং প্রস্তাবের জন্য ভোট দিবেন। প্রয়োজনীয় সংখ্যক ভোট পাওয়ার পরে এটি Polygon Edge চেইনে প্রাপকের অ্যাকাউন্টে NFT পাঠানোর জন্য একটি লেনদেন সম্পাদন করে।
+
+```bash
+INFO[11-19|09:07:50] Handling nonfungible deposit event chain=mumbai
+INFO[11-19|09:07:50] Attempting to resolve message chain=polygon-edge type=NonFungibleTransfer src=99 dst=100 nonce=2 rId=000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501
+INFO[11-19|09:07:50] Creating erc721 proposal chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Watching for finalization event chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Submitted proposal vote chain=polygon-edge tx=0x58a22d84a08269ad2e8d52d8dc038621f1a21109d11c7b6e0d32d5bf21ea8505 src=99 depositNonce=2 gasPrice=1
+INFO[11-19|09:08:15] Submitted proposal execution chain=polygon-edge tx=0x57419844881a07531e31667c609421662d94d21d0709e64fb728138309267e68 src=99 dst=100 nonce=2 gasPrice=3
+```
+
+এক্সিকিউশন সম্পন্ন হওয়ার পর আপনি Polygon Edge নেটওয়ার্কে NFT এর মালিককে চেক করতে পারেন।
+
+```bash
+# Check the owner of NFT 0x50 in Polygon Edge chain
+$ cb-sol-cli erc721 owner \
+ --url http://localhost:10002 \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
diff --git a/archive/edge/bn-edge/additional-features/chainbridge/setup.md b/archive/edge/bn-edge/additional-features/chainbridge/setup.md
new file mode 100644
index 0000000000..080e300d95
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/chainbridge/setup.md
@@ -0,0 +1,198 @@
+---
+id: setup
+title: সেটআপ
+description: কিভাবে সেটআপ chainBridge করবেন
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+## চুক্তি ডিপ্লয় করা {#contracts-deployment}
+
+এই বিভাগে আপনি `cb-sol-cli` দিয়ে Polygon PoS এবং Polygon Edge-এ প্রয়োজনীয় চুক্তিসমূহ ডিপ্লয় করবেন।
+
+```bash
+# Setup for cb-sol-cli command
+$ git clone https://github.com/ChainSafe/chainbridge-deploy.git
+$ cd chainbridge-deploy/cb-sol-cli
+$ make install
+```
+
+প্রথমত, আমরা `cb-sol-cli deploy` কমান্ড দিয়ে Polygon PoS চেইনে চুক্তি ডিপ্লয় করব। `--all` ফ্ল্যাগ ব্রিজ, ERC20 হ্যান্ডলার, ERC721 হ্যান্ডলার, জেনেরিক হ্যান্ডলার, ERC20 এবং ERC721 চুক্তিসহ সকল চুক্তি ডিপ্লয় করার কমান্ড তৈরি করে। এছাড়াও, এটি ডিফল্ট রিলেয়ার অ্যাকাউন্ট ঠিকানা এবং থ্রেশহোল্ড সেট করবে
+
+```bash
+# Deploy all required contracts into Polygon PoS chain
+$ cb-sol-cli deploy --all --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --gasPrice [GAS_PRICE] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+
+chainID এবং JSON-RPC URL সম্পর্কে জানুন [এখানে](/docs/edge/additional-features/chainbridge/definitions)
+
+:::caution
+
+`cb-sol-cli`-এ গ্যাসের ডিফল্ট মূল্য হচ্ছে `20000000` (`0.02 Gwei`)। কোনো লেনদেনে গ্যাসের উপযুক্ত মূল্য সেট করতে, অনুগ্রহ করে `--gasPrice` আর্গুমেন্ট ব্যবহার করে মান সেট করুন।
+
+```bash
+$ cb-sol-cli deploy --all --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1 \
+ # Set gas price to 5 Gwei
+ --gasPrice 5000000000
+```
+
+:::
+
+:::caution
+
+ব্রিজ চুক্তি ডিপ্লয় করতে প্রায় 0x3f97b8 (4167608) গ্যাস খরচ করে। অনুগ্রহ করে নিশ্চিত করুন যে ব্লক তৈরি করা হচ্ছে তাতে চুক্তি তৈরির লেনদেন ধারণ করার জন্য পর্যাপ্ত ব্লক গ্যাস সীমা রয়েছে। Polygon Edge-এর ব্লক গ্যাস সীমা পরিবর্তন করা সম্পর্কে আরও জানতে, দয়া করে
+[লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally) ভিজিট করুন
+
+:::
+
+চুক্তি ডিপ্লয় করা সম্পন্ন হলে আপনি নিম্নলিখিত ফলাফল পাবেন:
+
+```bash
+Deploying contracts...
+✓ Bridge contract deployed
+✓ ERC20Handler contract deployed
+✓ ERC721Handler contract deployed
+✓ GenericHandler contract deployed
+✓ ERC20 contract deployed
+WARNING: Multiple definitions for safeTransferFrom
+✓ ERC721 contract deployed
+
+================================================================
+Url: https://rpc-mumbai.matic.today
+Deployer:
+Gas Limit: 8000000
+Gas Price: 20000000
+Deploy Cost: 0.00029065308
+
+Options
+=======
+Chain Id:
+Threshold:
+Relayers:
+Bridge Fee: 0
+Expiry: 100
+
+Contract Addresses
+================================================================
+Bridge:
+----------------------------------------------------------------
+Erc20 Handler:
+----------------------------------------------------------------
+Erc721 Handler:
+----------------------------------------------------------------
+Generic Handler:
+----------------------------------------------------------------
+Erc20:
+----------------------------------------------------------------
+Erc721:
+----------------------------------------------------------------
+Centrifuge Asset: Not Deployed
+----------------------------------------------------------------
+WETC: Not Deployed
+================================================================
+```
+
+এখন আমরা Polygon Edge চেইনে চুক্তি ডিপ্লয় করতে পারব।
+
+```bash
+# Deploy all required contracts into Polygon Edge chain
+$ cb-sol-cli deploy --all --chainId 100 \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+টার্মিনালের আউটপুটগুলোর সঙ্গে ডিপ্লয় করা স্মার্ট চুক্তির ঠিকানাটিও সংরক্ষণ করুন, কারণ পরবর্তী ধাপে এইগুলো আমাদের প্রয়োজন হবে।
+
+## রিলেয়ার সেটআপ {#relayer-setup}
+
+এই বিভাগে, আপনি 2 চেইনের মধ্যে ডেটা বিনিময় করতে একটি রিলেয়ার চালু করবেন।
+
+প্রথমত, আমাদের ChainBridge রিপোজিটরিটি ক্লোন এবং তৈরি করতে হবে।
+
+```bash
+$ git clone https://github.com/ChainSafe/ChainBridge.git
+$ cd chainBridge && make install
+```
+
+তারপর, আপনাকে `config.json` তৈরি করতে হবে এবং প্রতিটি চেইনের জন্য JSON-RPC URL, রিলেয়ার ঠিকানা এবং চুক্তির ঠিকানা সেট করতে হবে।
+
+```json
+{
+ "chains": [
+ {
+ "name": "mumbai",
+ "type": "ethereum",
+ "id": "99",
+ "endpoint": "https://rpc-mumbai.matic.today",
+ "from": "",
+ "opts": {
+ "bridge": "",
+ "erc20Handler": "",
+ "erc721Handler": "",
+ "genericHandler": "",
+ "minGasPrice": "1",
+ "http": "true"
+ }
+ },
+ {
+ "name": "polygon-edge",
+ "type": "ethereum",
+ "id": "100",
+ "endpoint": "http://localhost:10002",
+ "from": "",
+ "opts": {
+ "bridge": "",
+ "erc20Handler": "",
+ "erc721Handler": "",
+ "genericHandler": "",
+ "minGasPrice": "1",
+ "http": "true"
+ }
+ }
+ ]
+}
+```
+
+একটি রিলেয়ার চালু করতে, আপনাকে রিলেয়ার অ্যাকাউন্ট ঠিকানার সাথে সংশ্লিষ্ট প্রাইভেট কী'টি ইম্পোর্ট করতে হবে। প্রাইভেট কী ইম্পোর্ট করার সময় আপনাকে পাসওয়ার্ড লিখতে হবে। ইম্পোর্ট সফল হলে কী'টি `keys/.key` এ সংরক্ষিত হবে।
+
+```bash
+# Import private key and store to local with encryption
+$ chainbridge accounts import --privateKey [RELAYER_ACCOUNT_PRIVATE_KEY]
+
+INFO[11-19|07:09:01] Importing key...
+Enter password to encrypt keystore file:
+> [PASSWORD_TO_ENCRYPT_KEY]
+INFO[11-19|07:09:05] private key imported address= file=.../keys/.key
+```
+
+তারপরে, আপনি রিলেয়ার চালু করতে পারেন। আপনি শুরুতে কী সংরক্ষণ করতে যে পাসওয়ার্ড বেছে নিয়েছিলেন সেটিই আপনাকে আবার লিখতে হবে।
+
+```bash
+# Start relayer
+$ chainbridge --config config.json --latest
+
+INFO[11-19|07:15:19] Starting ChainBridge...
+Enter password for key ./keys/.key:
+> [PASSWORD_TO_DECRYPT_KEY]
+INFO[11-19|07:15:25] Connecting to ethereum chain... chain=mumbai url=
+Enter password for key ./keys/.key:
+> [PASSWORD_TO_DECRYPT_KEY]
+INFO[11-19|07:15:31] Connecting to ethereum chain... chain=polygon-edge url=
+```
+
+রিলেয়ার চালু হবার পর এটি প্রতিটি চেইনের নতুন ব্লক দেখা শুরু করবে।
diff --git a/archive/edge/bn-edge/additional-features/chainbridge/use-case-erc20-bridge.md b/archive/edge/bn-edge/additional-features/chainbridge/use-case-erc20-bridge.md
new file mode 100644
index 0000000000..b016eb7645
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/chainbridge/use-case-erc20-bridge.md
@@ -0,0 +1,255 @@
+---
+id: use-case-erc20-bridge
+title: ব্যবহারের ক্ষেত্র - ERC20 ব্রিজ
+description: ERC20 চুক্তি ব্রিজ করার উদাহরণ
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+ - ERC20
+---
+
+এই বিভাগটির উদ্দেশ্য হচ্ছে আপনাকে ব্যবহারিক কাজের ক্ষেত্রে ERC20 ব্রিজ সেটআপ প্রক্রিয়া দেখানো।
+
+এই নির্দেশিকায়, আপনি মুম্বাই Polygon PoS টেস্টনেট এবং Polygon Edge লোকাল চেইন ব্যবহার করবেন। অনুগ্রহ করে নিশ্চিত করুন যে আপনার মুম্বাইয়ের জন্য JSON-RPC এন্ডপয়েন্ট আছে এবং আপনি লোকাল এনভায়রনমেন্টে Polygon Edge সেটআপ করেছেন। আরও বিস্তারিত জানতে, অনুগ্রহ করে [লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally) বা [ক্লাউড সেটআপ](/docs/edge/get-started/set-up-ibft-on-the-cloud) দেখুন।
+
+## দৃশ্যকল্প {#scenario}
+
+ইতোমধ্যেই পাবলিক চেইনে (Polygon PoS) ডিপ্লয় করা কোনো ERC20 টোকেনের একটি ব্রিজ সেটআপ করার জন্য এই দৃশ্যটি দেওয়া হয়েছে যাতে পাবলিক থেকে প্রাইভেট চেইনে (Polygon Edge) কম খরচে ট্রান্সফার করা সম্ভব হয়। এই ক্ষেত্রে, টোকেনের মোট সাপ্লাই পাবলিক চেইনে বলা আছে এবং শুধুমাত্র পাবলিক চেইন থেকে প্রাইভেট চেইনে ট্রান্সফার করা টোকেনের পরিমাণই প্রাইভেট চেইনে উপস্থিত থাকবে। সেই কারণে, আপনাকে পাবলিক চেইনে লক/রিলিজ এবং প্রাইভেট চেইনে বার্ন/মিন্ট মোড ব্যবহার করতে হবে।
+
+পাবলিক চেইন থেকে প্রাইভেট চেইনে টোকেন পাঠানোর সময়ে টোকেনগুলো পাবলিক চেইনের ERC20 হ্যান্ডলার চুক্তিতে লক হয়ে যাবে এবং একই পরিমাণ টোকেন প্রাইভেট চেইনে মিন্ট করা হবে। অন্যদিকে, প্রাইভেট চেইন থেকে পাবলিক চেইনে ট্রান্সফার করার ক্ষেত্রে, প্রাইভেট চেইনে যে পরিমাণ টোকেন বার্ন করা হবে তার সমপরিমাণ টোকেন ERC20 হ্যান্ডলার চুক্তি দিয়ে পাবলিক চেইনে ছাড়া হবে।
+
+## চুক্তি {#contracts}
+
+ChainBridge-এর তৈরি চুক্তির পরিবর্তে একটি সহজ ERC20 চুক্তি দিয়ে ব্যাখ্যা করা। বার্ন/মিন্ট মোডের জন্য, নিম্নলিখিত ERC20 পদ্ধতির পাশাপাশি ERC20 চুক্তিতে `mint` এবং `burnFrom` পদ্ধতিও থাকতে হবে:
+
+```sol
+pragma solidity ^0.8.14;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/AccessControl.sol";
+
+contract SampleToken is ERC20, AccessControl {
+ bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
+ bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+
+ constructor(string memory name, string memory symbol) ERC20(name, symbol) {
+ _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
+ _setupRole(MINTER_ROLE, _msgSender());
+ _setupRole(BURNER_ROLE, _msgSender());
+ }
+
+ function mint(address recipient, uint256 amount)
+ external
+ onlyRole(MINTER_ROLE)
+ {
+ _mint(recipient, amount);
+ }
+
+ function burnFrom(address owner, uint256 amount)
+ external
+ onlyRole(BURNER_ROLE)
+ {
+ _burn(owner, amount);
+ }
+}
+```
+
+সমস্ত কোড এবং স্ক্রিপ্ট Github Repo [Trapesys/chainbridge-example](https://github.com/Trapesys/chainbridge-example)-এ আছে।
+
+## ধাপ1: ব্রিজ এবং ERC20 হ্যান্ডলার চুক্তি ডিপ্লয় করুন {#step1-deploy-bridge-and-erc20-handler-contracts}
+
+প্রথমত, আপনি উভয় চেইনে `cb-sol-cli` ব্যবহার করে ব্রিজ এবং ERC20Handler চুক্তি ডিপ্লয় করবেন।
+
+```bash
+# Deploy Bridge and ERC20 contracts in Polygon PoS chain
+$ cb-sol-cli deploy --bridge --erc20Handler --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+```bash
+# Deploy Bridge and ERC20 contracts in Polygon Edge chain
+$ cb-sol-cli deploy --bridge --erc20Handler --chainId 100 \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+আপনি নিচের মতো ব্রিজ এবং ERC20Handler চুক্তির ঠিকানা পাবেন:
+
+```bash
+Deploying contracts...
+✓ Bridge contract deployed
+✓ ERC20Handler contract deployed
+
+================================================================
+Url: https://rpc-mumbai.matic.today
+Deployer:
+Gas Limit: 8000000
+Gas Price: 20000000
+Deploy Cost: 0.00029065308
+
+Options
+=======
+Chain Id:
+Threshold:
+Relayers:
+Bridge Fee: 0
+Expiry: 100
+
+Contract Addresses
+================================================================
+Bridge:
+----------------------------------------------------------------
+Erc20 Handler:
+----------------------------------------------------------------
+Erc721 Handler: Not Deployed
+----------------------------------------------------------------
+Generic Handler: Not Deployed
+----------------------------------------------------------------
+Erc20: Not Deployed
+----------------------------------------------------------------
+Erc721: Not Deployed
+----------------------------------------------------------------
+Centrifuge Asset: Not Deployed
+----------------------------------------------------------------
+WETC: Not Deployed
+================================================================
+```
+
+## ধাপ2: আপনার ERC20 চুক্তি ডিপ্লয় করুন {#step2-deploy-your-erc20-contract}
+
+আপনি আপনার ERC20 চুক্তি ডিপ্লয় করবেন। এই উদাহরণটি আপনাকে হার্ডহ্যাট প্রজেক্ট [Trapesys/chainbridge-example](https://github.com/Trapesys/chainbridge-example)-এ দিক-নির্দেশনা প্রদান করবে।
+
+```bash
+$ git clone https://github.com/Trapesys/chainbridge-example.git
+$ cd chainbridge-example
+$ npm i
+```
+
+অনুগ্রহ করে `.env` ফাইল তৈরি করুন এবং নিম্নলিখিত মান সেট করুন।
+
+```.env
+PRIVATE_KEYS=0x...
+MUMBAI_JSONRPC_URL=https://rpc-mumbai.matic.today
+EDGE_JSONRPC_URL=http://localhost:10002
+```
+
+পরবর্তীতে আপনি উভয় চেইনে ERC20 চুক্তি ডিপ্লয় করবেন।
+
+```bash
+$ npx hardhat deploy --contract erc20 --name --symbol --network mumbai
+```
+
+```bash
+$ npx hardhat deploy --contract erc20 --name --symbol --network edge
+```
+
+ডিপ্লয়মেন্ট সফল হওয়ার পরে, আপনি নিচের মতো একটি চুক্তির ঠিকানা পাবেন:
+
+```bash
+ERC20 contract has been deployed
+Address:
+Name:
+Symbol:
+```
+
+## ধাপ3: ব্রিজে রিসোর্স আইডি নিবন্ধন করুন {#step3-register-resource-id-in-bridge}
+
+আপনি একটি রিসোর্স আইডি নিবন্ধন করবেন যা একটি ক্রস-চেইন এনভায়রনমেন্টে রিসোর্সগুলিকে সংযুক্ত করে। আপনাকে উভয় চেইনে একই রিসোর্স আইডি সেট করতে হবে।
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+## ধাপ4: Edge-এর ERC20 ব্রিজে মিন্ট/বার্ন মোড সেট করুন {#step4-set-mint-burn-mode-in-erc20-bridge-of-the-edge}
+
+ব্রিজ Polygon Edge-এ বার্ন/মিন্ট মোড হিসাবে কাজ করার আশা রাখে। আপনি `cb-sol-cli` ব্যবহার করে বার্ন/মিন্ট মোড সেট করবেন।
+
+```bash
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+এবং আপনাকে ERC20 হ্যান্ডলার চুক্তিতে একটি মিন্টার এবং বার্নার রোল দিতে হবে।
+
+```bash
+$ npx hardhat grant --role mint --contract [ERC20_CONTRACT_ADDRESS] --address [ERC20_HANDLER_CONTRACT_ADDRESS] --network edge
+$ npx hardhat grant --role burn --contract [ERC20_CONTRACT_ADDRESS] --address [ERC20_HANDLER_CONTRACT_ADDRESS] --network edge
+```
+
+## ধাপ5: টোকেন মিন্ট করুন {#step5-mint-token}
+
+আপনি মুম্বাই চেইনে নতুন ERC20 টোকেন মিন্ট করবেন।
+
+```bash
+$ npx hardhat mint --type erc20 --contract [ERC20_CONTRACT_ADDRESS] --address [ACCOUNT_ADDRESS] --amount 100000000000000000000 --network mumbai # 100 Token
+```
+
+লেনদেনটি সফল হওয়ার পরে, অ্যাকাউন্টটিতে মিন্ট করা টোকেন চলে যাবে।
+
+## ধাপ6: ERC20 ট্রান্সফার শুরু করুন {#step6-start-erc20-transfer}
+
+এই ধাপ শুরু করার আগে, অনুগ্রহ করে নিশ্চিত করুন যে আপনি একটি রিলেয়ার চালু করেছেন। আরও বিস্তারিত জানতে, অনুগ্রহ করে [সেটআপ](/docs/edge/additional-features/chainbridge/setup) দেখুন।
+
+মুম্বাই থেকে Edge-এ টোকেন ট্রান্সফার করার সময়, মুম্বাইয়ের ERC20 হ্যান্ডলার চুক্তি অ্যাকাউন্ট থেকে টোকেন উইথড্র করে। ট্রান্সফার করার আগে আপনি অনুমোদন কল করবেন।
+
+```bash
+$ npx hardhat approve --type erc20 --contract [ERC20_CONTRACT_ADDRESS] --address [ERC20_HANDLER_CONTRACT_ADDRESS] --amount 10000000000000000000 --network mumbai # 10 Token
+```
+
+সবশেষে, আপনি `cb-sol-cli` ব্যবহার করে মুম্বাই থেকে Edge-এ টোকেন ট্রান্সফার করা শুরু করবেন।
+
+```bash
+# Start transfer from Mumbai to Polygon Edge chain
+$ cb-sol-cli erc20 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --amount 10 \
+ # ChainID of Polygon Edge chain
+ --dest 100 \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]" \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00"
+```
+
+ডিপোজিট লেনদেন সফল হওয়ার পরে, রিলেয়ার ইভেন্টটি পাবে এবং প্রস্তাবের পক্ষে ভোট দেবে। প্রয়োজনীয় সংখ্যক ভোট পাওয়ার পরে এটি Polygon Edge চেইনে প্রাপকের অ্যাকাউন্টে টোকেন পাঠানোর জন্য একটি লেনদেন সম্পাদন করে।
+
+```bash
+INFO[11-19|08:15:58] Handling fungible deposit event chain=mumbai dest=100 nonce=1
+INFO[11-19|08:15:59] Attempting to resolve message chain=polygon-edge type=FungibleTransfer src=99 dst=100 nonce=1 rId=000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00
+INFO[11-19|08:15:59] Creating erc20 proposal chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Watching for finalization event chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Submitted proposal vote chain=polygon-edge tx=0x67a97849951cdf0480e24a95f59adc65ae75da23d00b4ab22e917a2ad2fa940d src=99 depositNonce=1 gasPrice=1
+INFO[11-19|08:16:24] Submitted proposal execution chain=polygon-edge tx=0x63615a775a55fcb00676a40e3c9025eeefec94d0c32ee14548891b71f8d1aad1 src=99 dst=100 nonce=1 gasPrice=5
+```
+
+এক্সিকিউশন লেনদেন সফলভাবে সম্পন্ন হবার পর আপনি Polygon Edge চেইনে টোকেন পাবেন।
diff --git a/archive/edge/bn-edge/additional-features/chainbridge/use-case-erc721-bridge.md b/archive/edge/bn-edge/additional-features/chainbridge/use-case-erc721-bridge.md
new file mode 100644
index 0000000000..95ddadac5d
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/chainbridge/use-case-erc721-bridge.md
@@ -0,0 +1,308 @@
+---
+id: use-case-erc721-bridge
+title: ব্যবহারিক ক্ষেত্র - ERC721 ব্রিজ
+description: ERC721 চুক্তি ব্রিজ করার উদাহরণ
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+ - ERC721
+---
+
+এই বিভাগটির উদ্দেশ্য হচ্ছে আপনাকে ব্যবহারিক কাজের ক্ষেত্রে ERC20 ব্রিজ সেটআপ প্রক্রিয়া দেখানো।
+
+এই নির্দেশিকায়, আপনি মুম্বাই Polygon PoS টেস্টনেট এবং Polygon Edge লোকাল চেইন ব্যবহার করবেন। অনুগ্রহ করে নিশ্চিত করুন যে আপনার মুম্বাইয়ের জন্য JSON-RPC এন্ডপয়েন্ট আছে এবং আপনি লোকাল এনভায়রনমেন্টে Polygon Edge সেটআপ করেছেন। আরও বিস্তারিত জানতে, অনুগ্রহ করে [লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally) বা [ক্লাউড সেটআপ](/docs/edge/get-started/set-up-ibft-on-the-cloud) দেখুন।
+
+## দৃশ্যকল্প {#scenario}
+
+এই উদাহরণটিতে ব্যবহারকারীদের নিয়মিত ব্যবহারের ক্ষেত্রে প্রাইভেট চেইনে (Polygon Edge) স্বল্প-খরচের ট্রান্সফার সক্ষম করতে ইতোমধ্যেই পাবলিক চেইনে (Polygon PoS) ডিপ্লয় করা ERC721 NFT-এর জন্য ব্রিজ সেটআপের বিষয়টি দেখানো হয়েছে। এইসব ক্ষেত্রে, পাবলিক চেইন সংজ্ঞায়িত মূল মেটাডেটা এবং পাবলিক চেইনে ট্রান্সফারকৃত NFT-গুলোই শুধুমাত্র প্রাইভেট চেইনে থাকতে পারবে। সেই কারণে, আপনাকে পাবলিক চেইনে লক/রিলিজ এবং প্রাইভেট চেইনে বার্ন/মিন্ট মোড ব্যবহার করতে হবে।
+
+পাবলিক চেইন থেকে প্রাইভেট চেইনে NFT পাঠানোর সময়ে NFT পাবলিক চেইনের ERC20 হ্যান্ডলার চুক্তিতে লক হয়ে যাবে এবং সেই একই NFT প্রাইভেট চেইনে মিন্ট করা হবে। অন্যদিকে, প্রাইভেট চেইন থেকে পাবলিক চেইনে ট্রান্সফার করার ক্ষেত্রে, প্রাইভেট চেইনে যে NFT বার্ন করা হবে সেই একই NFT ERC20 হ্যান্ডলার চুক্তি থেকে পাবলিক চেইনে ছাড়া হবে।
+
+## চুক্তি {#contracts}
+
+ChainBridge-এর তৈরি চুক্তির পরিবর্তে একটি সহজ ERC721 চুক্তি দিয়ে ব্যাখ্যা করা। বার্ন/মিন্ট মোডের জন্য, ERC721-এ সংজ্ঞায়িত নিচের পদ্ধতিগুলোর পাশাপাশি ERC721 চুক্তিতে অবশ্যই `mint` এবং `burn` থাকতে হবে:
+
+```sol
+pragma solidity ^0.8.14;
+
+import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/AccessControl.sol";
+import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol";
+import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
+
+contract SampleNFT is ERC721, ERC721Burnable, ERC721URIStorage, AccessControl {
+ bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
+ bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+
+ string public baseURI;
+
+ constructor(
+ string memory name,
+ string memory symbol,
+ string memory baseURI
+ ) ERC721(name, symbol) {
+ _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
+ _setupRole(MINTER_ROLE, _msgSender());
+ _setupRole(BURNER_ROLE, _msgSender());
+
+ _setBaseURI(baseURI);
+ }
+
+ function mint(
+ address recipient,
+ uint256 tokenID,
+ string memory data
+ ) public onlyRole(MINTER_ROLE) {
+ _mint(recipient, tokenID);
+ _setTokenURI(tokenID, data);
+ }
+
+ function burn(uint256 tokenID)
+ public
+ override(ERC721Burnable)
+ onlyRole(BURNER_ROLE)
+ {
+ _burn(tokenID);
+ }
+
+ function tokenURI(uint256 tokenId)
+ public
+ view
+ virtual
+ override(ERC721, ERC721URIStorage)
+ returns (string memory)
+ {
+ return super.tokenURI(tokenId);
+ }
+
+ function supportsInterface(bytes4 interfaceId)
+ public
+ view
+ override(ERC721, AccessControl)
+ returns (bool)
+ {
+ return super.supportsInterface(interfaceId);
+ }
+
+ function _burn(uint256 tokenId)
+ internal
+ virtual
+ override(ERC721, ERC721URIStorage)
+ {
+ super._burn(tokenId);
+ }
+
+ function _setBaseURI(string memory baseURI_) internal {
+ baseURI = baseURI_;
+ }
+
+ function _baseURI() internal view virtual override returns (string memory) {
+ return baseURI;
+ }
+}
+```
+
+সমস্ত কোড এবং স্ক্রিপ্ট Github রেপো [Trapesys/chainbridge-example](https://github.com/Trapesys/chainbridge-example)-এ আছে।
+
+## ধাপ 1: ব্রিজ এবং ERC721 হ্যান্ডলার চুক্তি ডিপ্লয় করুন {#step1-deploy-bridge-and-erc721-handler-contracts}
+
+প্রথমত, আপনি উভয় চেইনে `cb-sol-cli` ব্যবহার করে ব্রিজ এবং ERC20Handler চুক্তি ডিপ্লয় করবেন।
+
+```bash
+# Deploy Bridge and ERC721 contracts in Polygon PoS chain
+$ cb-sol-cli deploy --bridge --erc721Handler --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --gasPrice [GAS_PRICE] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+```bash
+# Deploy Bridge and ERC721 contracts in Polygon Edge chain
+$ cb-sol-cli deploy --bridge --erc721Handler --chainId 100 \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+আপনি নিচের মতো ব্রিজ এবং ERC721Handler চুক্তির ঠিকানা পাবেন:
+
+```bash
+Deploying contracts...
+✓ Bridge contract deployed
+✓ ERC721Handler contract deployed
+
+================================================================
+Url: https://rpc-mumbai.matic.today
+Deployer:
+Gas Limit: 8000000
+Gas Price: 20000000
+Deploy Cost: 0.00029065308
+
+Options
+=======
+Chain Id:
+Threshold:
+Relayers:
+Bridge Fee: 0
+Expiry: 100
+
+Contract Addresses
+================================================================
+Bridge:
+----------------------------------------------------------------
+Erc20 Handler: Not Deployed
+----------------------------------------------------------------
+Erc721 Handler:
+----------------------------------------------------------------
+Generic Handler: Not Deployed
+----------------------------------------------------------------
+Erc20: Not Deployed
+----------------------------------------------------------------
+Erc721: Not Deployed
+----------------------------------------------------------------
+Centrifuge Asset: Not Deployed
+----------------------------------------------------------------
+WETC: Not Deployed
+================================================================
+```
+
+## ধাপ 2: আপনার ERC721 চুক্তি ডিপ্লয় করুন {#step2-deploy-your-erc721-contract}
+
+আপনি আপনার ERC721 চুক্তি ডিপ্লয় করবেন। এই উদাহরণটি আপনাকে হার্ডহ্যাট প্রজেক্ট [Trapesys/chainbridge-example](https://github.com/Trapesys/chainbridge-example)-এ দিক-নির্দেশনা প্রদান করবে।
+
+```bash
+$ git clone https://github.com/Trapesys/chainbridge-example.git
+$ cd chainbridge-example
+$ npm i
+```
+
+অনুগ্রহ করে `.env` ফাইল তৈরি করুন এবং নিম্নলিখিত মান সেট করুন।
+
+```.env
+PRIVATE_KEYS=0x...
+MUMBAI_JSONRPC_URL=https://rpc-mumbai.matic.today
+EDGE_JSONRPC_URL=http://localhost:10002
+```
+
+তারপর, আপনি উভয় চেইনে ERC20 চুক্তি ডিপ্লয় করবেন।
+
+```bash
+$ npx hardhat deploy --contract erc721 --name --symbol --uri --network mumbai
+```
+
+```bash
+$ npx hardhat deploy --contract erc721 --name --symbol --uri --network edge
+```
+
+ডিপ্লয়মেন্ট সফল হওয়ার পরে, আপনি নিচের মতো একটি চুক্তির ঠিকানা পাবেন:
+
+```bash
+ERC721 contract has been deployed
+Address:
+Name:
+Symbol:
+Base URI:
+```
+
+## ধাপ3: ব্রিজে রিসোর্স আইডি নিবন্ধন করুন {#step3-register-resource-id-in-bridge}
+
+আপনি একটি রিসোর্স আইডি নিবন্ধন করবেন যা একটি ক্রস-চেইন এনভায়রনমেন্টে রিসোর্সগুলিকে সংযুক্ত করে।
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ # Set Resource ID for ERC721
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ # Set Resource ID for ERC721
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+## ধাপ4: Edge-এর ERC721 ব্রিজে মিন্ট/বার্ন মোড সেট করুন {#step4-set-mint-burn-mode-in-erc721-bridge-of-the-edge}
+
+ব্রিজ Edge-এ বার্ন/মিন্ট মোড হিসেবে কাজ করার প্রত্যাশা রাখে। আপনি বার্ন/মিন্ট মোড সেট করবেন।
+
+```bash
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+তাছাড়া, আপনাকে ERC721 হ্যান্ডলার চুক্তিতে একটি মিন্টার এবং বার্নার ভূমিকা প্রদান করতে হবে।
+
+```bash
+$ npx hardhat grant --role mint --contract [ERC721_CONTRACT_ADDRESS] --address [ERC721_HANDLER_CONTRACT_ADDRESS] --network edge
+$ npx hardhat grant --role burn --contract [ERC721_CONTRACT_ADDRESS] --address [ERC721_HANDLER_CONTRACT_ADDRESS] --network edge
+```
+
+## ধাপ 5: NFT মিন্ট করুন {#step5-mint-nft}
+
+আপনি মুম্বাই চেইনে নতুন ERC721 NFT মিন্ট করবেন।
+
+```bash
+$ npx hardhat mint --type erc721 --contract [ERC721_CONTRACT_ADDRESS] --address [ACCOUNT_ADDRESS] --id 0x50 --data hello.json --network mumbai
+```
+
+লেনদেনটি সফল হওয়ার পরে, অ্যাকাউন্টটিতে মিন্ট করা NFT চলে যাবে।
+
+## ধাপ6: ERC721 ট্রান্সফার শুরু করুন {#step6-start-erc721-transfer}
+
+এই ধাপটি শুরু করার আগে, দয়া করে রিলেয়ার চালু করার বিষয়টি নিশ্চিত করুন। আরও বিস্তারিত জানতে, অনুগ্রহ করে [সেটআপ](/docs/edge/additional-features/chainbridge/setup) দেখুন।
+
+মুম্বাই থেকে Edge-এ NFT ট্রান্সফার করার সময়, মুম্বাইয়ের ERC721 হ্যান্ডলার চুক্তি আপনার অ্যাকাউন্ট থেকে NFT উইথড্র করে। ট্রান্সফার করার আগে আপনি অনুমোদন কল করবেন।
+
+```bash
+$ npx hardhat approve --type erc721 --contract [ERC721_CONTRACT_ADDRESS] --address [ERC721_HANDLER_CONTRACT_ADDRESS] --id 0x50 --network mumbai
+```
+
+সবশেষে, আপনি মুম্বাই থেকে Edge-এ NFT ট্রান্সফার করা শুরু করবেন।
+
+```bash
+# Start transfer from Mumbai to Polygon Edge chain
+$ cb-sol-cli erc721 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --id 0x50 \
+ # ChainID for Polygon Edge chain
+ --dest 100 \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]" \
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501"
+```
+
+ডিপোজিট লেনদেন সফল হওয়ার পরে, রিলেয়ার ইভেন্টটি পাবে এবং প্রস্তাবের পক্ষে ভোট দেবে।
+প্রয়োজনীয় সংখ্যক ভোট সাবমিট হবার পরে এটি Polygon Edge চেইনে প্রাপক অ্যাকাউন্টে NFT পাঠাতে একটি লেনদেন এক্সিকিউট করে।
+
+```bash
+INFO[11-19|09:07:50] Handling nonfungible deposit event chain=mumbai
+INFO[11-19|09:07:50] Attempting to resolve message chain=polygon-edge type=NonFungibleTransfer src=99 dst=100 nonce=2 rId=000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501
+INFO[11-19|09:07:50] Creating erc721 proposal chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Watching for finalization event chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Submitted proposal vote chain=polygon-edge tx=0x58a22d84a08269ad2e8d52d8dc038621f1a21109d11c7b6e0d32d5bf21ea8505 src=99 depositNonce=2 gasPrice=1
+INFO[11-19|09:08:15] Submitted proposal execution chain=polygon-edge tx=0x57419844881a07531e31667c609421662d94d21d0709e64fb728138309267e68 src=99 dst=100 nonce=2 gasPrice=3
+```
+
+এক্সিকিউশন লেনদেন সফলভাবে সম্পন্ন হবার পর আপনি Polygon Edge চেইনে NFT পাবেন।
diff --git a/archive/edge/bn-edge/additional-features/permission-contract-deployment.md b/archive/edge/bn-edge/additional-features/permission-contract-deployment.md
new file mode 100644
index 0000000000..2afd320465
--- /dev/null
+++ b/archive/edge/bn-edge/additional-features/permission-contract-deployment.md
@@ -0,0 +1,86 @@
+---
+id: permission-contract-deployment
+title: অনুমতি স্মার্ট চুক্তি ডিপ্লয়মেন্ট
+description: কীভাবে অনুমতি স্মার্ট চুক্তি ডিপ্লয়মেন্ট যোগ করবেন।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - smart contract
+ - permission
+ - deployment
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+এই নির্দেশিকায় কিভাবে স্মার্ট চুক্তিতে ডিপ্লয় করা যায় এমন ঠিকানা হোয়াইটলিস্ট করা যা সে বিষয়ে বিস্তারিত আলোচনা করেছে।
+কখনো কখনো নেটওয়ার্ক অপারেটররা ব্যবহারকারীদের নেটওয়ার্কের উদ্দেশ্যের সাথে সম্পর্ক নেই এমন স্মার্ট চুক্তি ডিপ্লয় করা থেকে বিরত রাখতে চান। নেটওয়ার্ক অপারেটররা যা করতে পারেন:
+
+1. স্মার্ট চুক্তি ডিপ্লয়মেন্টের জন্য ঠিকানা হোয়াইটলিস্ট করতে পারেন
+2. স্মার্ট চুক্তি ডিপ্লয়মেন্টের জন্য হোয়াইটলিস্ট থেকে ঠিকানা অপসারণ করতে পারেন
+
+## ভিডিও প্রেজেন্টেশন {#video-presentation}
+
+[](https://www.youtube.com/watch?v=yPOkINpf7hg)
+
+## কীভাবে এটি ব্যবহার করবেন? {#how-to-use-it}
+
+
+আপনি [CLI কমান্ড](/docs/edge/get-started/cli-commands#whitelist-commands) পৃষ্ঠাতে ডিপ্লয়মেন্ট হোয়াইটলিস্ট করা সম্পর্কিত সকল cli কমান্ড খুঁজে পেতে পারেন।
+
+* `whitelist show`: হোয়াইটলিস্ট তথ্য দেখায়
+* `whitelist deployment --add`: চুক্তি ডিপ্লয়মেন্ট হোয়াইটলিস্টে একটি নতুন ঠিকানা যোগ করে
+* `whitelist deployment --remove`: চুক্তি ডিপ্লয়মেন্ট হোয়াইটলিস্ট থেকে একটি নতুন ঠিকানা অপসারণ করে
+
+#### ডিপ্লয়মেন্ট হোয়াইটলিস্টে থাকা সমস্ত ঠিকানা দেখান {#show-all-addresses-in-the-deployment-whitelist}
+
+ডিপ্লয়মেন্ট হোয়াইটলিস্ট থেকে ঠিকানা খুঁজে পাওয়ার 2টি পদ্ধতি রয়েছে।
+1. `genesis.json` দেখতে পারেন, এখানে হোয়াইটলিস্ট সংরক্ষণ করা হয়
+2. `whitelist show` এক্সিকিউট করতে পারেন, এটি Polygon Edge দ্বারা সমর্থিত সকল হোয়াইটলিস্টের তথ্য প্রিন্ট করে
+
+```bash
+
+./polygon-edge whitelist show
+
+[WHITELISTS]
+
+Contract deployment whitelist : [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d],
+
+
+```
+
+#### ডিপ্লয়মেন্ট হোয়াইটলিস্টে একটি ঠিকানা যোগ করুন {#add-an-address-to-the-deployment-whitelist}
+
+ডিপ্লয়মেন্ট হোয়াইটলিস্টে একটি নতুন ঠিকানা যোগ করতে `whitelist deployment --add [ADDRESS]` CLI কমান্ড এক্সিকিউট করুন। হোয়াইটলিস্টে থাকা ঠিকানার সংখ্যায় কোনো সীমা নেই। শুধুমাত্র যেসব ঠিকানা কন্ট্রাক্ট ডিপ্লয়মেন্ট হোয়াইটলিস্টে আছে, সেগুলো চুক্তি ডিপ্লয় করতে পারে। হোয়াইটলিস্ট খালি থাকলে যেকোনো ঠিকানা ডিপ্লয়মেন্ট করতে পারবে
+
+```bash
+
+./polygon-edge whitelist deployment --add 0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d --add 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF
+
+
+[CONTRACT DEPLOYMENT WHITELIST]
+
+Added addresses: [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF],
+Contract deployment whitelist : [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF],
+
+
+
+```
+
+#### ডিপ্লয়মেন্ট হোয়াইটলিস্ট থেকে একটি ঠিকানা অপসারণ করুন {#remove-an-address-from-the-deployment-whitelist}
+
+ডিপ্লয়মেন্ট হোয়াইটলিস্ট থেকে একটি ঠিকানা অপসারণ করতে `whitelist deployment --remove [ADDRESS]` CLI কমান্ড এক্সিকিউট করুন। শুধুমাত্র যেসব ঠিকানা কন্ট্রাক্ট ডিপ্লয়মেন্ট হোয়াইটলিস্টে আছে, সেগুলো চুক্তি ডিপ্লয় করতে পারে। হোয়াইটলিস্ট খালি থাকলে যেকোনো ঠিকানা ডিপ্লয়মেন্ট করতে পারবে
+
+```bash
+
+./polygon-edge whitelist deployment --remove 0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d --remove 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF
+
+
+[CONTRACT DEPLOYMENT WHITELIST]
+
+Removed addresses: [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF],
+Contract deployment whitelist : [],
+
+
+
+```
diff --git a/archive/edge/bn-edge/architecture/modules/blockchain.md b/archive/edge/bn-edge/architecture/modules/blockchain.md
new file mode 100644
index 0000000000..72d08ccd15
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/blockchain.md
@@ -0,0 +1,160 @@
+---
+id: blockchain
+title: ব্লকচেইন
+description: Polygon Edge-এর ব্লকচেইন এবং স্টেট মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - blockchain
+ - state
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+Polygon Edge-এর অন্যতম প্রধান মডিউল হচ্ছে **ব্লকচেইন** এবং **স্টেট**।
+
+**ব্লকচেইন** খুবই শক্তিশালী একটি বস্তু যা ব্লক পুনর্বিন্যাসের কাজটি সম্পন্ন করে থাকে। এর মানে হচ্ছে যে ব্লকচেইনে কোনো নতুন ব্লক অন্তর্ভুক্ত করার সময় এটি সকল লজিক সংক্রান্ত কাজগুলো সম্পন্ন করে থাকে।
+
+**স্টেট** *স্টেট ট্রানজিশন* অবজেক্টের প্রতিনিধিত্ব করে। এটি নতুন ব্লক অন্তুর্ভুক্ত করা হলে স্টেট পরিবর্তনের বিষয়টিকে পরিচালনা করে থাকে।
অন্যান্য কাজের মধ্যে, **স্টেট** নিম্নলিখিতগুলোও সম্পাদন করে থাকে:
+* লেনদেন এক্সিকিউট করা
+* EVM এক্সিকিউট করা
+* Merkle ট্রি পরিবর্তন করা
+* আরও অনেক কিছু সম্পাদন করে থেকে, যা সংশ্লিষ্ট **স্টেট** বিভাগে বর্ণনা করা হয়েছে 🙂
+
+মূল বিষয় হচ্ছে এই 2টি অংশ একসাথে সংযুক্ত এবং ক্লায়েন্টে কর্মক্ষমতা নিশ্চিত করতে এইগুলো একসাথে খুবই ঘনিষ্টভাবে কাজ করে।
উদাহরণস্বরূপ, যখন **ব্লকচেইন** লেয়ার একটি নতুন ব্লক পায় (এবং কোনও পুনর্বিন্যাস না করতে হয়), এটি একটি স্টেট ট্রানজিশন সম্পাদন করার জন্য **স্টেট** কল করে।
+
+**ব্লকচেইন** কনসেনসাস সংক্রান্ত কিছু বিষয়ও পরিচালনা করে থাকে (যেমন, *এই ethHash কি সঠিক?*, *এই PoW কি সঠিক?*)।
সংক্ষেপে, **এটি লজিকের প্রধান কোর যাতে সমস্ত ব্লক অন্তর্ভুক্ত থাকে**।
+
+## *WriteBlocks*
+
+ব্লকচেইন লেয়ার সম্পর্কিত সবচেয়ে গুরুত্বপূর্ণ অংশ হচ্ছে **WriteBlocks**** পদ্ধতি:
+
+````go title="blockchain/blockchain.go"
+// WriteBlocks writes a batch of blocks
+func (b *Blockchain) WriteBlocks(blocks []*types.Block) error {
+ if len(blocks) == 0 {
+ return fmt.Errorf("no headers found to insert")
+ }
+
+ parent, ok := b.readHeader(blocks[0].ParentHash())
+ if !ok {
+ return fmt.Errorf("parent of %s (%d) not found: %s", blocks[0].Hash().String(), blocks[0].Number(), blocks[0].ParentHash())
+ }
+
+ // validate chain
+ for i := 0; i < len(blocks); i++ {
+ block := blocks[i]
+
+ if block.Number()-1 != parent.Number {
+ return fmt.Errorf("number sequence not correct at %d, %d and %d", i, block.Number(), parent.Number)
+ }
+ if block.ParentHash() != parent.Hash {
+ return fmt.Errorf("parent hash not correct")
+ }
+ if err := b.consensus.VerifyHeader(parent, block.Header, false, true); err != nil {
+ return fmt.Errorf("failed to verify the header: %v", err)
+ }
+
+ // verify body data
+ if hash := buildroot.CalculateUncleRoot(block.Uncles); hash != block.Header.Sha3Uncles {
+ return fmt.Errorf("uncle root hash mismatch: have %s, want %s", hash, block.Header.Sha3Uncles)
+ }
+
+ if hash := buildroot.CalculateTransactionsRoot(block.Transactions); hash != block.Header.TxRoot {
+ return fmt.Errorf("transaction root hash mismatch: have %s, want %s", hash, block.Header.TxRoot)
+ }
+ parent = block.Header
+ }
+
+ // Write chain
+ for indx, block := range blocks {
+ header := block.Header
+
+ body := block.Body()
+ if err := b.db.WriteBody(header.Hash, block.Body()); err != nil {
+ return err
+ }
+ b.bodiesCache.Add(header.Hash, body)
+
+ // Verify uncles. It requires to have the bodies on memory
+ if err := b.VerifyUncles(block); err != nil {
+ return err
+ }
+ // Process and validate the block
+ if err := b.processBlock(blocks[indx]); err != nil {
+ return err
+ }
+
+ // Write the header to the chain
+ evnt := &Event{}
+ if err := b.writeHeaderImpl(evnt, header); err != nil {
+ return err
+ }
+ b.dispatchEvent(evnt)
+
+ // Update the average gas price
+ b.UpdateGasPriceAvg(new(big.Int).SetUint64(header.GasUsed))
+ }
+
+ return nil
+}
+````
+*WriteBlocks* পদ্ধতি হচ্ছে ব্লকচেইনে ব্লক লিখার এন্ট্রি পয়েন্ট। একটি প্যারামিটার হিসাবে, এটি ব্লকের পরিসীমা নিয়ে থাকে।
+প্রথমত, ব্লক যাচাই করা হয়। তারপর, তাদের চেইনে লিখা হয়।
+
+প্রকৃত *স্টেট ট্রানজিশন* *WriteBlocks*-এর মধ্যে *processBlock* পদ্ধতি কল করে সম্পাদন করা হয়।
+
+এছাড়াও, যেহেতু এটি ব্লকচেইনে ব্লক লেখার এন্ট্রি পয়েন্ট, তাই অন্যান্য মডিউলগুলোও (যেমন **Sealer**) এই পদ্ধতির সুবিধা গ্রহণ করে থাকে।
+
+## ব্লকচেইন সাবস্ক্রিপশন {#blockchain-subscriptions}
+
+ব্লকচেইন-সংক্রান্ত পরিবর্তন মনিটর করার একটি মেকানিজম থাকা খুবই গুরুত্বপূর্ণ।
+**সাবস্ক্রিপশন** ঠিক সেই কাজটিই সম্পাদন করে থাকে।
+
+সাবস্ক্রিপশন হচ্ছে ব্লকচেইন ইভেন্ট স্ট্রিমে ঘুরে আসার এবং অবিলম্বে কার্যকরী ডেটা পাওয়ার একটি উপায়।
+
+````go title="blockchain/subscription.go"
+type Subscription interface {
+ // Returns a Blockchain Event channel
+ GetEventCh() chan *Event
+
+ // Returns the latest event (blocking)
+ GetEvent() *Event
+
+ // Closes the subscription
+ Close()
+}
+````
+
+**ব্লকচেইন ইভেন্টে** প্রকৃত চেইন করা সকল পরিবর্তন সংক্রান্ত তথ্য রয়েছে। এতে পুনর্বিন্যাসের পাশাপাশি নতুন ব্লকও অন্তর্ভুক্ত রয়েছে:
+
+````go title="blockchain/subscription.go"
+type Event struct {
+ // Old chain removed if there was a reorg
+ OldChain []*types.Header
+
+ // New part of the chain (or a fork)
+ NewChain []*types.Header
+
+ // Difficulty is the new difficulty created with this event
+ Difficulty *big.Int
+
+ // Type is the type of event
+ Type EventType
+
+ // Source is the source that generated the blocks for the event
+ // right now it can be either the Sealer or the Syncer. TODO
+ Source string
+}
+````
+
+:::tip রিফ্রেশার
+
+আপনার কি মনে আছে কখন আমরা [CLI কমান্ডে](/docs/edge/get-started/cli-commands) ***মনিটর*** কমান্ড উল্লেখ করেছি?
+
+ব্লকচেইন ইভেন্টগুলো হচ্ছে Polygon Edge-এ ঘটা মূল ইভেন্ট এবং সহজে ট্রান্সফারের জন্য সেগুলোকে পরে প্রোটোকল বাফার মেসেজ ফরম্যাটে ম্যাপ করা হয়।
+
+:::
\ No newline at end of file
diff --git a/archive/edge/bn-edge/architecture/modules/consensus.md b/archive/edge/bn-edge/architecture/modules/consensus.md
new file mode 100644
index 0000000000..993f4be9c5
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/consensus.md
@@ -0,0 +1,510 @@
+---
+id: consensus
+title: কনসেনসাস
+description: Polygon Edge-এর কনসেনসাস মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - consensus
+ - ibft
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+**কনসেনসাস** মডিউল কনসেনসাস মেকানিজমের জন্য একটি ইন্টারফেস প্রদান করে।
+
+বর্তমানে, নিম্নলিখিত কনসেনসাস ইঞ্জিনগুলো পাওয়া যাচ্ছে:
+* **IBFT PoA**
+* **IBFT PoS**
+
+Polygon Edge একটি মডুলারিটি এবং প্লাগ্যাবিলিটির স্টেট বজায় রাখতে চাচ্ছে।
+তাই মূল কনসেনসাস লজিকটি অ্যাবস্ট্র্যাক্ট করা হয়েছে, যাতে ব্যবহারযোগ্যতা এবং ব্যবহারের আরামদায়কতার সাথে কোনো আপোষ করা ছাড়াই
+সেটির উপরে নতুন কনসেনসাস মেকানিজম তৈরি করা যায়।
+
+## কনসেনসাস ইন্টারফেস {#consensus-interface}
+
+````go title="consensus/consensus.go"
+// Consensus is the interface for consensus
+type Consensus interface {
+ // VerifyHeader verifies the header is correct
+ VerifyHeader(parent, header *types.Header) error
+
+ // Start starts the consensus
+ Start() error
+
+ // Close closes the connection
+ Close() error
+}
+````
+
+***কনসেনসাস*** ইন্টারফেস হচ্ছে উল্লিখিত অ্যাবস্ট্রাকশনের মূল বিষয়।
+* **VerifyHeader** পদ্ধতি একটি সহায়ক ফাংশন উপস্থাপন করে যা কনসেনসাস লেয়ারটিকে **ব্লকচেইন** লেয়ারে প্রকাশ করে
+এটি হেডার যাচাইকরণ পরিচালনা করে থাকে
+* **স্টার্ট** পদ্ধতিটি শুধু কনসেনসাস প্রক্রিয়া এবং এর সাথে সংশ্লিষ্ট সবকিছু চালু করে। এই কাজগুলোর মধ্যে অন্তর্ভুক্ত রয়েছে সিঙ্ক্রোনাইজেশন,
+সিলিং এবং অন্যান্য যা সম্পন্ন করতে হবে
+* **ক্লোজ** পদ্ধতিটি কনসেনসাস সংযোগ বন্ধ করে
+
+## কনসেনসাস কনফিগারেশন {#consensus-configuration}
+
+````go title="consensus/consensus.go"
+// Config is the configuration for the consensus
+type Config struct {
+ // Logger to be used by the backend
+ Logger *log.Logger
+
+ // Params are the params of the chain and the consensus
+ Params *chain.Params
+
+ // Specific configuration parameters for the backend
+ Config map[string]interface{}
+
+ // Path for the consensus protocol to store information
+ Path string
+}
+````
+
+আপনি ডেটা সংরক্ষণ করতে কনসেনসাস প্রোটোকল একটি কাস্টম লোকেশন পাঠাতে চাইতে পারেন বা
+কনসেনসাস মেকানিজমে ব্যবহারের জন্য একটি কাস্টম কী-ভ্যালু ম্যাপ চাইতে পারেন। এটি ***Config*** স্ট্রাক্টের মাধ্যমে অর্জন করা যেতে পারে,
+যা একটি নতুন কনসেনসাস ইনস্ট্যান্স তৈরি হওয়ার পর রিড হয়।
+
+## IBFT {#ibft}
+
+### ExtraData {#extradata}
+
+অন্যান্য ফিল্ডের মধ্যে ব্লকচেইন হেডার অবজেক্টে **ExtraData** নামক একটি ফিল্ড আছে।
+
+IBFT এই অতিরিক্ত ফিল্ড ব্যবহার করে নিম্নলিখিত প্রশ্নগুলোর উত্তর প্রদান করার মাধ্যমে ব্লক বিষয়ক অপারেশনাল তথ্য সংরক্ষণ করে:
+* "কে এই ব্লকটি স্বাক্ষর করেছেন?"
+* "কারা এই ব্লকের যাচাইকারী?"
+
+IBFT-এর এই অতিরিক্ত ক্ষেত্রগুলো নিচে সংজ্ঞায়িত করা হয়েছে:
+````go title="consensus/ibft/extra.go"
+type IstanbulExtra struct {
+ Validators []types.Address
+ Seal []byte
+ CommittedSeal [][]byte
+}
+````
+
+### সাইনিং ডেটা {#signing-data}
+
+IBFT-তে নোড সাইন করার জন্য, এটি *signHash* পদ্ধতি ব্যবহার করে:
+````go title="consensus/ibft/sign.go"
+func signHash(h *types.Header) ([]byte, error) {
+ //hash := istambulHeaderHash(h)
+ //return hash.Bytes(), nil
+
+ h = h.Copy() // make a copy since we update the extra field
+
+ arena := fastrlp.DefaultArenaPool.Get()
+ defer fastrlp.DefaultArenaPool.Put(arena)
+
+ // when hashign the block for signing we have to remove from
+ // the extra field the seal and commitedseal items
+ extra, err := getIbftExtra(h)
+ if err != nil {
+ return nil, err
+ }
+ putIbftExtraValidators(h, extra.Validators)
+
+ vv := arena.NewArray()
+ vv.Set(arena.NewBytes(h.ParentHash.Bytes()))
+ vv.Set(arena.NewBytes(h.Sha3Uncles.Bytes()))
+ vv.Set(arena.NewBytes(h.Miner.Bytes()))
+ vv.Set(arena.NewBytes(h.StateRoot.Bytes()))
+ vv.Set(arena.NewBytes(h.TxRoot.Bytes()))
+ vv.Set(arena.NewBytes(h.ReceiptsRoot.Bytes()))
+ vv.Set(arena.NewBytes(h.LogsBloom[:]))
+ vv.Set(arena.NewUint(h.Difficulty))
+ vv.Set(arena.NewUint(h.Number))
+ vv.Set(arena.NewUint(h.GasLimit))
+ vv.Set(arena.NewUint(h.GasUsed))
+ vv.Set(arena.NewUint(h.Timestamp))
+ vv.Set(arena.NewCopyBytes(h.ExtraData))
+
+ buf := keccak.Keccak256Rlp(nil, vv)
+ return buf, nil
+}
+````
+আরেকটি উল্লেখযোগ্য পদ্ধতি হল *VerifyCommittedFields* পদ্ধতি, যা কমিট করা সিলগুলো বৈধ যাচাইকারীদের কাছ থেকে আসার বিষয়টি নিশ্চিত করে:
+````go title="consensus/ibft/sign.go
+func verifyCommitedFields(snap *Snapshot, header *types.Header) error {
+ extra, err := getIbftExtra(header)
+ if err != nil {
+ return err
+ }
+ if len(extra.CommittedSeal) == 0 {
+ return fmt.Errorf("empty committed seals")
+ }
+
+ // get the message that needs to be signed
+ signMsg, err := signHash(header)
+ if err != nil {
+ return err
+ }
+ signMsg = commitMsg(signMsg)
+
+ visited := map[types.Address]struct{}{}
+ for _, seal := range extra.CommittedSeal {
+ addr, err := ecrecoverImpl(seal, signMsg)
+ if err != nil {
+ return err
+ }
+
+ if _, ok := visited[addr]; ok {
+ return fmt.Errorf("repeated seal")
+ } else {
+ if !snap.Set.Includes(addr) {
+ return fmt.Errorf("signed by non validator")
+ }
+ visited[addr] = struct{}{}
+ }
+ }
+
+ validSeals := len(visited)
+ if validSeals <= 2*snap.Set.MinFaultyNodes() {
+ return fmt.Errorf("not enough seals to seal block")
+ }
+ return nil
+}
+````
+
+### স্ন্যাপশট {#snapshots}
+
+স্ন্যাপশট, নামেই প্রতীয়মান, যেকোনো ব্লক উচ্চতায় (সংখ্যা) সিস্টেমের একটি *স্ন্যাপশট* বা *স্টেট* প্রদান করে থাকে।
+
+স্ন্যাপশটের ভিতর একটি নোডের সেট থাকে যেগুলোতে যাচাইকারীদের পাশাপাশি ভোটের তথ্য থাকে (যাচাইকারীরা অন্যান্য যাচাইকারীদের ভোট দিতে পারেন)। যাচাইকারীরা **মাইনার** হেডার ফিল্ডে ভোটের তথ্য অন্তর্ভুক্ত করে এবং **নোন্স** ফিল্ডের মান পরিবর্তন করে:
+* নোডটি কোনো যাচাইকারীকে অপসারণ করতে চাইলে নোন্স **সব 1s** হয়
+* নোডটি কোনো যাচাইকারীকে যোগ করতে চাইলে নোন্স **সব 0s** হয়
+
+স্ন্যাপশট ***processHeaders*** পদ্ধতি ব্যবহার করে গণনা করা হয়:
+
+````go title="consensus/ibft/snapshot.go"
+func (i *Ibft) processHeaders(headers []*types.Header) error {
+ if len(headers) == 0 {
+ return nil
+ }
+
+ parentSnap, err := i.getSnapshot(headers[0].Number - 1)
+ if err != nil {
+ return err
+ }
+ snap := parentSnap.Copy()
+
+ saveSnap := func(h *types.Header) error {
+ if snap.Equal(parentSnap) {
+ return nil
+ }
+
+ snap.Number = h.Number
+ snap.Hash = h.Hash.String()
+
+ i.store.add(snap)
+
+ parentSnap = snap
+ snap = parentSnap.Copy()
+ return nil
+ }
+
+ for _, h := range headers {
+ number := h.Number
+
+ validator, err := ecrecoverFromHeader(h)
+ if err != nil {
+ return err
+ }
+ if !snap.Set.Includes(validator) {
+ return fmt.Errorf("unauthroized validator")
+ }
+
+ if number%i.epochSize == 0 {
+ // during a checkpoint block, we reset the voles
+ // and there cannot be any proposals
+ snap.Votes = nil
+ if err := saveSnap(h); err != nil {
+ return err
+ }
+
+ // remove in-memory snaphots from two epochs before this one
+ epoch := int(number/i.epochSize) - 2
+ if epoch > 0 {
+ purgeBlock := uint64(epoch) * i.epochSize
+ i.store.deleteLower(purgeBlock)
+ }
+ continue
+ }
+
+ // if we have a miner address, this might be a vote
+ if h.Miner == types.ZeroAddress {
+ continue
+ }
+
+ // the nonce selects the action
+ var authorize bool
+ if h.Nonce == nonceAuthVote {
+ authorize = true
+ } else if h.Nonce == nonceDropVote {
+ authorize = false
+ } else {
+ return fmt.Errorf("incorrect vote nonce")
+ }
+
+ // validate the vote
+ if authorize {
+ // we can only authorize if they are not on the validators list
+ if snap.Set.Includes(h.Miner) {
+ continue
+ }
+ } else {
+ // we can only remove if they are part of the validators list
+ if !snap.Set.Includes(h.Miner) {
+ continue
+ }
+ }
+
+ count := snap.Count(func(v *Vote) bool {
+ return v.Validator == validator && v.Address == h.Miner
+ })
+ if count > 1 {
+ // there can only be one vote per validator per address
+ return fmt.Errorf("more than one proposal per validator per address found")
+ }
+ if count == 0 {
+ // cast the new vote since there is no one yet
+ snap.Votes = append(snap.Votes, &Vote{
+ Validator: validator,
+ Address: h.Miner,
+ Authorize: authorize,
+ })
+ }
+
+ // check the tally for the proposed validator
+ tally := snap.Count(func(v *Vote) bool {
+ return v.Address == h.Miner
+ })
+
+ if tally > snap.Set.Len()/2 {
+ if authorize {
+ // add the proposal to the validator list
+ snap.Set.Add(h.Miner)
+ } else {
+ // remove the proposal from the validators list
+ snap.Set.Del(h.Miner)
+
+ // remove any votes casted by the removed validator
+ snap.RemoveVotes(func(v *Vote) bool {
+ return v.Validator == h.Miner
+ })
+ }
+
+ // remove all the votes that promoted this validator
+ snap.RemoveVotes(func(v *Vote) bool {
+ return v.Address == h.Miner
+ })
+ }
+
+ if err := saveSnap(h); err != nil {
+ return nil
+ }
+ }
+
+ // update the metadata
+ i.store.updateLastBlock(headers[len(headers)-1].Number)
+ return nil
+}
+````
+
+এই পদ্ধতিটি সাধারণত 1 হেডারের সাথে কল করা হয়, কিন্তু একাধিক হেডারের সাথেও তার ফ্লো একই হয়।
+প্রতিটি পাসড-ইন হেডারের জন্য, IBFT-কে যাচাই করতে হয় যে হেডারের প্রস্তাবকই যাচাইকারী। সাম্প্রতিকতম স্ন্যাপশট নিয়ে
+এবং নোডটি যাচাইকারীর সেটের মধ্যে রয়েছে কিনা তা যাচাই করার মাধ্যমে এটি খুব সহজেই করা যেতে পারে।
+
+পরবর্তীতে, নোন্স চেক করা হয়। ভোটটি অন্তর্ভুক্ত এবং ট্যালি করা হয়েছে - যদি পর্যাপ্ত ভোট থাকে, তাহলে যাচাইকারীর সেট থেকে
+একটি নোড যোগ/বাদ দেওয়া হয় এবং তারপর নতুন স্ন্যাপশট সংরক্ষণ করা হয়।
+
+#### স্ন্যাপশট স্টোর {#snapshot-store}
+
+স্ন্যাপশট সার্ভিস **স্ন্যাপশট স্টোর** নামক একটি এন্টিটি পরিচালনা ও আপডেট করে থাকে, যা সমস্ত বিদ্যমান স্ন্যাপশটের তালিকা সংরক্ষণ করে।
+এটি ব্যবহার করে, সার্ভিসটি দ্রুত খুঁজে বের করতে পারে যে কোন স্ন্যাপশট কোন ব্লক উচ্চতার সাথে সম্পর্কিত।
+````go title="consensus/ibft/snapshot.go"
+type snapshotStore struct {
+ lastNumber uint64
+ lock sync.Mutex
+ list snapshotSortedList
+}
+````
+
+### IBFT স্টার্টআপ {#ibft-startup}
+
+IBFT শুরু করতে, Polygon Edge এর প্রথমে IBFT ট্রান্সপোর্ট সেট আপ করতে হবে:
+````go title="consensus/ibft/ibft.go"
+func (i *Ibft) setupTransport() error {
+ // use a gossip protocol
+ topic, err := i.network.NewTopic(ibftProto, &proto.MessageReq{})
+ if err != nil {
+ return err
+ }
+
+ err = topic.Subscribe(func(obj interface{}) {
+ msg := obj.(*proto.MessageReq)
+
+ if !i.isSealing() {
+ // if we are not sealing we do not care about the messages
+ // but we need to subscribe to propagate the messages
+ return
+ }
+
+ // decode sender
+ if err := validateMsg(msg); err != nil {
+ i.logger.Error("failed to validate msg", "err", err)
+ return
+ }
+
+ if msg.From == i.validatorKeyAddr.String() {
+ // we are the sender, skip this message since we already
+ // relay our own messages internally.
+ return
+ }
+ i.pushMessage(msg)
+ })
+ if err != nil {
+ return err
+ }
+
+ i.transport = &gossipTransport{topic: topic}
+ return nil
+}
+````
+
+এটি মূলত IBFT proto দিয়ে একটি নতুন টপিক তৈরি করে যাতে নতুন একটি প্রোটো বাফ মেসেজ অন্তর্ভুক্ত থাকে।
+মেসেজগুলো যাচাইকারীদের ব্যবহারের উদ্দেশ্যে তৈরি করা হয়েছে। Polygon Edge তারপর টপিকটিতে সাবস্ক্রাইব করে এবং সেই অনুযায়ী মেসেজ পরিচালনা করে।
+
+#### MessageReq {#messagereq}
+
+যাচাইকারীদের দ্বারা বিনিময়কৃত মেসেজ:
+````go title="consensus/ibft/proto/ibft.proto"
+message MessageReq {
+ // type is the type of the message
+ Type type = 1;
+
+ // from is the address of the sender
+ string from = 2;
+
+ // seal is the committed seal if message is commit
+ string seal = 3;
+
+ // signature is the crypto signature of the message
+ string signature = 4;
+
+ // view is the view assigned to the message
+ View view = 5;
+
+ // hash of the locked block
+ string digest = 6;
+
+ // proposal is the rlp encoded block in preprepare messages
+ google.protobuf.Any proposal = 7;
+
+ enum Type {
+ Preprepare = 0;
+ Prepare = 1;
+ Commit = 2;
+ RoundChange = 3;
+ }
+}
+
+message View {
+ uint64 round = 1;
+ uint64 sequence = 2;
+}
+````
+
+**MessageReq** এর মধ্যকার **ভিউ** ফিল্ডটি চেইনের ভিতরে বর্তমান নোডের অবস্থানকে নির্দেশ করে।
+এটির একটি *রাউন্ড* এবং একটি *সিকুয়েন্স* অ্যাট্রিবিউট আছে।
+* **রাউন্ড** দিয়ে উচ্চতার জন্য প্রস্তাবকের রাউন্ডকে নির্দেশ করা হয়
+* **সিকুয়েন্স** দিয়ে ব্লকচেইনের উচ্চতাকে নির্দেশ করা হয়
+
+IBFT ইমপ্লিমেন্টেশনে ফাইল করা *msgQueue* মেসেজ অনুরোধ সংরক্ষণ করার উদ্দেশ্যে আছে। এটি মেসেজ সাজায় *ভিউ* দিয়ে (প্রথমে সিকুয়েন্স দিয়ে, তারপর রাউন্ড দিয়ে)। এছাড়াও, IBFT ইমপ্লিমেন্টেশন সিস্টেমের বিভিন্ন স্টেটের জন্য বিভিন্ন কিউয়ের অধিকার সংরক্ষণ করে।
+
+### IBFT স্টেট {#ibft-states}
+
+স্টার্ট পদ্ধতি ব্যবহার করে কনসেনসাস মেকানিজম **শুরু** হবার পর এটি একটি ইনফিনিট লুপ রান করে, যা একটি স্টেট মেশিনকে সিমুলেট করে:
+````go title="consensus/ibft/ibft.go"
+func (i *Ibft) start() {
+ // consensus always starts in SyncState mode in case it needs
+ // to sync with other nodes.
+ i.setState(SyncState)
+
+ header := i.blockchain.Header()
+ i.logger.Debug("current sequence", "sequence", header.Number+1)
+
+ for {
+ select {
+ case <-i.closeCh:
+ return
+ default:
+ }
+
+ i.runCycle()
+ }
+}
+
+func (i *Ibft) runCycle() {
+ if i.state.view != nil {
+ i.logger.Debug(
+ "cycle",
+ "state",
+ i.getState(),
+ "sequence",
+ i.state.view.Sequence,
+ "round",
+ i.state.view.Round,
+ )
+ }
+
+ switch i.getState() {
+ case AcceptState:
+ i.runAcceptState()
+
+ case ValidateState:
+ i.runValidateState()
+
+ case RoundChangeState:
+ i.runRoundChangeState()
+
+ case SyncState:
+ i.runSyncState()
+ }
+}
+````
+
+#### SyncState {#syncstate}
+
+সমস্ত নোড প্রাথমিকভাবে **সিঙ্ক** স্টেটে শুরু হয়।
+
+এর কারণ হল ব্লকচেইন থেকে ফ্রেশ ডেটা নিয়ে আসতে হয়। ক্লায়েন্টকে জানতে হয় যে এটি যাচাইকারী কিনা,
+বর্তমান স্ন্যাপশট খুঁজুন। এই স্টেট যেকোন পেন্ডিং ব্লকের সমাধান করে।
+
+সিঙ্ক শেষ হওয়ার পরে এবং ক্লায়েন্ট এটিকে একজন যাচাইকারী হিসেবে নির্ধারণ করলে, এটিকে **AcceptState**-এ ট্রান্সফার করতে হবে।
+ক্লায়েন্টটি যাচাইকারী **না** হলে এটি সিঙ্ক করা চালিয়ে যাবে এবং **SyncState**-এ থাকবে
+
+#### AcceptState {#acceptstate}
+
+**Accept** স্টেট সবসময়ই স্ন্যাপশট এবং যাচাইকারীর সেট চেক করে। বর্তমান নোডটি ভ্যালিডেটর সেটে না থাকলে
+এটি **Sync** স্টেটে ফিরে চলে যায়।
+
+অন্যদিকে, নোডটি যাচাইকারী **হলে** এটি প্রস্তাবককে হিসাব করে। যদি জানা যায় যে বর্তমান নোডটিই
+প্রস্তাবক, তাহলে এটি একটি ব্লক তৈরি করে এবং প্রথমে প্রস্তুতি-পূর্ব এবং পরবর্তীতে প্রস্তুতি মেসেজ পাঠায়।
+
+* প্রস্তুতি-পূর্ব মেসেজ - প্রস্তাবক থেকে যাচাইকারীদের প্রস্তাব সম্পর্কে অবগত করার মেসেজ
+* প্রস্তুতি মেসেজ - যে মেসেজে যাচাইকারীরা কোনো প্রস্তাবে সম্মতি পোষণ করেন। সকল নোড সমস্ত প্রস্তুতি মেসেজ পেয়ে থাকে।
+* কমিট মেসেজ - যে মেসেজে প্রস্তাবের কমিটের তথ্য থাকে
+
+বর্তমান নোডটি যাচাইকারী **না হলে** এটি পূর্বে দেখানো কিউ থেকে একটি মেসেজ পড়তে *getNextMessage* পদ্ধতি ব্যবহার করে।
+এটি প্রস্তুতি-পূর্ব মেসেজের জন্য অপেক্ষা করে। সবকিছু ঠিক-ঠাক আছে নিশ্চিত হবার পরে নোডটি **যাচাই** স্টেটে চলে যায়।
+
+#### ValidateState {#validatestate}
+
+**যাচাই** স্টেট যথেষ্ট সহজ - এখানে নোডগুলো শুধু মেসেজ পড়ে এবং তাদের লোকাল স্ন্যাপশট স্টেটে যোগ করে।
diff --git a/archive/edge/bn-edge/architecture/modules/json-rpc.md b/archive/edge/bn-edge/architecture/modules/json-rpc.md
new file mode 100644
index 0000000000..11a725d0ad
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/json-rpc.md
@@ -0,0 +1,181 @@
+---
+id: json-rpc
+title: JSON RPC
+description: Polygon Edge-এর JSON RPC মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - json-rpc
+ - endpoints
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+**JSON RPC** মডিউল **JSON RPC API লেয়ার** ইমপ্লিমেন্ট করে, যা dApp ডেভেলপাররা ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করতে
+ব্যবহার করে।
+
+এটি স্ট্যান্ডার্ড **[json-rPC এন্ডপয়েন্ট](https://eth.wiki/json-rpc/API)**, সেইসাথে ওয়েবসকেট এন্ডপয়েন্টও
+সমর্থন করে।
+
+## ব্লকচেইন ইন্টারফেস {#blockchain-interface}
+
+Polygon Edge তার এন্ডপয়েন্ট ডেলিভার করতে, JSON RPC মডিউলের ব্যবহার করা সকল পদ্ধতি সংজ্ঞায়িত করতে ***ব্লকচেইন ইন্টারফেস***
+ব্যবহার করে।
+
+ব্লকচেইন ইন্টারফেস **[মিনিমাল](/docs/edge/architecture/modules/minimal)** সার্ভার দিয়ে ইমপ্লিমেন্ট করা হয়। এটি হচ্ছে ভিত্তি ইমপ্লিমেন্টেশন
+যা JSON RPC লেয়ার পাস করা হয়।
+
+````go title="jsonrpc/blockchain.go"
+type blockchainInterface interface {
+ // Header returns the current header of the chain (genesis if empty)
+ Header() *types.Header
+
+ // GetReceiptsByHash returns the receipts for a hash
+ GetReceiptsByHash(hash types.Hash) ([]*types.Receipt, error)
+
+ // Subscribe subscribes for chain head events
+ SubscribeEvents() blockchain.Subscription
+
+ // GetHeaderByNumber returns the header by number
+ GetHeaderByNumber(block uint64) (*types.Header, bool)
+
+ // GetAvgGasPrice returns the average gas price
+ GetAvgGasPrice() *big.Int
+
+ // AddTx adds a new transaction to the tx pool
+ AddTx(tx *types.Transaction) error
+
+ // State returns a reference to the state
+ State() state.State
+
+ // BeginTxn starts a transition object
+ BeginTxn(parentRoot types.Hash, header *types.Header) (*state.Transition, error)
+
+ // GetBlockByHash gets a block using the provided hash
+ GetBlockByHash(hash types.Hash, full bool) (*types.Block, bool)
+
+ // ApplyTxn applies a transaction object to the blockchain
+ ApplyTxn(header *types.Header, txn *types.Transaction) ([]byte, bool, error)
+
+ stateHelperInterface
+}
+````
+
+## ETH এন্ডপয়েন্ট {#eth-endpoints}
+
+সমস্ত স্ট্যান্ডার্ড JSON RPC এন্ডপয়েন্ট এতে প্রয়োগ করা হয়:
+
+````bash
+jsonrpc/eth_endpoint.go
+````
+
+## ফিল্টার ম্যানেজার {#filter-manager}
+
+**ফিল্টার ম্যানেজার** একটি পরিষেবা যা JSON RPC সার্ভারের পাশাপাশি রান করে।
+
+এটি ব্লকচেইনে ব্লক ফিল্টার করতে সহায়তা প্রদান করে।
+বিশেষ করে, এতে **লগ** এবং **ব্লক** লেভেল ফিল্টার উভয়ই অন্তর্ভুক্ত।
+
+ফিল্টার ম্যানেজার সাবস্ক্রিপশন ইভেন্টে ব্যাপকভাবে নির্ভর করে, যা
+[ব্লকচেইন](blockchain#blockchain-subscriptions) বিভাগে উল্লেখ করা হয়েছিল
+
+````go title="jsonrpc/filter_manager.go"
+type Filter struct {
+ id string
+
+ // block filter
+ block *headElem
+
+ // log cache
+ logs []*Log
+
+ // log filter
+ logFilter *LogFilter
+
+ // index of the filter in the timer array
+ index int
+
+ // next time to timeout
+ timestamp time.Time
+
+ // websocket connection
+ ws wsConn
+}
+
+
+type FilterManager struct {
+ logger hclog.Logger
+
+ store blockchainInterface
+ closeCh chan struct{}
+
+ subscription blockchain.Subscription
+
+ filters map[string]*Filter
+ lock sync.Mutex
+
+ updateCh chan struct{}
+ timer timeHeapImpl
+ timeout time.Duration
+
+ blockStream *blockStream
+}
+
+````
+
+ফিল্টার ম্যানেজার ইভেন্ট *রান* পদ্ধতিতে প্রেরিত করা হয়:
+
+````go title="jsonrpc/filter_manager.go"
+func (f *FilterManager) Run() {
+
+ // watch for new events in the blockchain
+ watchCh := make(chan *blockchain.Event)
+ go func() {
+ for {
+ evnt := f.subscription.GetEvent()
+ if evnt == nil {
+ return
+ }
+ watchCh <- evnt
+ }
+ }()
+
+ var timeoutCh <-chan time.Time
+ for {
+ // check for the next filter to be removed
+ filter := f.nextTimeoutFilter()
+ if filter == nil {
+ timeoutCh = nil
+ } else {
+ timeoutCh = time.After(filter.timestamp.Sub(time.Now()))
+ }
+
+ select {
+ case evnt := <-watchCh:
+ // new blockchain event
+ if err := f.dispatchEvent(evnt); err != nil {
+ f.logger.Error("failed to dispatch event", "err", err)
+ }
+
+ case <-timeoutCh:
+ // timeout for filter
+ if !f.Uninstall(filter.id) {
+ f.logger.Error("failed to uninstall filter", "id", filter.id)
+ }
+
+ case <-f.updateCh:
+ // there is a new filter, reset the loop to start the timeout timer
+
+ case <-f.closeCh:
+ // stop the filter manager
+ return
+ }
+ }
+}
+````
+
+## 📜 রিসোর্স {#resources}
+* **[Ethereum JSON-RPC](https://eth.wiki/json-rpc/API)**
diff --git a/archive/edge/bn-edge/architecture/modules/minimal.md b/archive/edge/bn-edge/architecture/modules/minimal.md
new file mode 100644
index 0000000000..d2e37e85bb
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/minimal.md
@@ -0,0 +1,119 @@
+---
+id: minimal
+title: মিনিমাল
+description: Polygon Edge-এর মিনিমাল মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - minimal
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+আগেই উল্লেখ করা হয়েছে যে Polygon Edge হচ্ছে বিভিন্ন মডিউলের একটি সেট, যেগুলো সব একে অপরের সাথে সংযুক্ত।
+উদাহরণস্বরূপ, **ব্লকচেইন** **স্টেট** অথবা **সিঙ্ক্রোনাইজেশন**-এর সাথে সংযুক্ত এবং এগুলো **ব্লকচেইনে** নতুন ব্লক পাইপ করে।
+
+**মিনিমাল** হচ্ছে এই আন্তঃসংযুক্ত মডিউলের মূল ভিত্তি।
+এটি Polygon Edge-এ পরিচালিত সকল পরিষেবার কেন্দ্রীয় হাব হিসেবে কাজ করে।
+
+## স্টার্টআপ ম্যাজিক {#startup-magic}
+
+সেইসব কাজ ছাড়াও মিনিমাল নিম্নোক্ত কাজগুলো সম্পাদন করে থাকে:
+* ডেটা ডিরেক্টরি সেট আপ করা
+* libp2p কমিউনিকেশনের জন্য একটি কীস্টোর তৈরি করা
+* স্টোরেজ
+* কনসেনসাস সেটআপ করা
+* GRPC, JSON RPC এবং সিঙ্ক্রোনাইজেশন দিয়ে ব্লকচেইন অবজেক্ট সেটআপ করা
+
+````go title="minimal/server.go"
+func NewServer(logger hclog.Logger, config *Config) (*Server, error) {
+ m := &Server{
+ logger: logger,
+ config: config,
+ chain: config.Chain,
+ grpcServer: grpc.NewServer(),
+ }
+
+ m.logger.Info("Data dir", "path", config.DataDir)
+
+ // Generate all the paths in the dataDir
+ if err := setupDataDir(config.DataDir, dirPaths); err != nil {
+ return nil, fmt.Errorf("failed to create data directories: %v", err)
+ }
+
+ // Get the private key for the node
+ keystore := keystore.NewLocalKeystore(filepath.Join(config.DataDir, "keystore"))
+ key, err := keystore.Get()
+ if err != nil {
+ return nil, fmt.Errorf("failed to read private key: %v", err)
+ }
+ m.key = key
+
+ storage, err := leveldb.NewLevelDBStorage(filepath.Join(config.DataDir, "blockchain"), logger)
+ if err != nil {
+ return nil, err
+ }
+ m.storage = storage
+
+ // Setup consensus
+ if err := m.setupConsensus(); err != nil {
+ return nil, err
+ }
+
+ stateStorage, err := itrie.NewLevelDBStorage(filepath.Join(m.config.DataDir, "trie"), logger)
+ if err != nil {
+ return nil, err
+ }
+
+ st := itrie.NewState(stateStorage)
+ m.state = st
+
+ executor := state.NewExecutor(config.Chain.Params, st)
+ executor.SetRuntime(precompiled.NewPrecompiled())
+ executor.SetRuntime(evm.NewEVM())
+
+ // Blockchain object
+ m.blockchain, err = blockchain.NewBlockchain(logger, storage, config.Chain, m.consensus, executor)
+ if err != nil {
+ return nil, err
+ }
+
+ executor.GetHash = m.blockchain.GetHashHelper
+
+ // Setup sealer
+ sealerConfig := &sealer.Config{
+ Coinbase: crypto.PubKeyToAddress(&m.key.PublicKey),
+ }
+ m.Sealer = sealer.NewSealer(sealerConfig, logger, m.blockchain, m.consensus, executor)
+ m.Sealer.SetEnabled(m.config.Seal)
+
+ // Setup the libp2p server
+ if err := m.setupLibP2P(); err != nil {
+ return nil, err
+ }
+
+ // Setup the GRPC server
+ if err := m.setupGRPC(); err != nil {
+ return nil, err
+ }
+
+ // Setup jsonrpc
+ if err := m.setupJSONRPC(); err != nil {
+ return nil, err
+ }
+
+ // Setup the syncer protocol
+ m.syncer = protocol.NewSyncer(logger, m.blockchain)
+ m.syncer.Register(m.libp2pServer.GetGRPCServer())
+ m.syncer.Start()
+
+ // Register the libp2p GRPC endpoints
+ proto.RegisterHandshakeServer(m.libp2pServer.GetGRPCServer(), &handshakeService{s: m})
+
+ m.libp2pServer.Serve()
+ return m, nil
+}
+````
diff --git a/archive/edge/bn-edge/architecture/modules/networking.md b/archive/edge/bn-edge/architecture/modules/networking.md
new file mode 100644
index 0000000000..50ace76c0e
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/networking.md
@@ -0,0 +1,79 @@
+---
+id: networking
+title: নেটওয়ার্কিং
+description: Polygon Edge-এর নেটওয়ার্কিং মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - networking
+ - libp2p
+ - GRPC
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+দরকারী তথ্য বিনিময় করতে একটি নোডকে তার নেটওয়ার্কের মধ্যে অন্যান্য নোডের সাথে যোগাযোগ করতে হবে।
+এই কাজটি সম্পন্ন করতে, Polygon Edge বহুল-পরীক্ষিত **libp2p** ফ্রেমওয়ার্ক ব্যবহার করে।
+
+**libp2p** ব্যবহারের প্রধান কারণগুলি হচ্ছে:
+* **গতি** - devp2p (GETH এবং অন্যান্য ক্লায়েন্ট এটি ব্যবহার করে) এর তুলনায় libp2p-তে অনেক বেশি পারফর্ম্যান্স পাওয়া যায়
+* **এক্সটেনসিবিলিটি** - এটি সিস্টেমের অন্যান্য ফিচারগুলোর জন্য একটি দুর্দান্ত বেস হিসাবে কাজ করে
+* **মডুলারিটি** - libp2p Polygon Edge-এর মতোই প্রকৃতিগতভাবেই মডুলার। এটি অনেক ফ্লেক্সিবিলিটি প্রদান করে, বিশেষ করে যখন Polygon Edge-এর কিছু অংশ সোয়াপযোগ্য হতে হয়
+
+## GRPC {#grpc}
+
+Polygon Edge **libp2p**-এর পাশাপাশি **GRPC** প্রোটোকলও ব্যবহার করে।
+কার্যতভাবে, Polygon Edge বেশ কয়েকটি GRPC প্রোটোকল ব্যবহার করে, যা পরবর্তীতে বর্ণনা করা হবে।
+
+GRPC লেয়ারটি সকল রিকুয়েস্ট/রিপ্লাই প্রোটোকল অ্যাবস্ট্র্যাক্ট করতে এবং Polygon Edge এর জন্য প্রয়োজনীয় স্ট্রিমিং প্রোটোকল সহজ করতে সহায়তা করে।
+
+GRPC *সার্ভিস* এবং *মেসেজ স্ট্রাকচার* সংজ্ঞায়িত করতে **প্রোটোকল বাফারের** উপর নির্ভরশীল।
সার্ভিস এবং স্ট্রাকচারগুলো *.proto* ফাইলগুলিতে সংজ্ঞায়িত করা হয়েছে, যেগুলো কম্পাইল করা আছে এবং এগুলো ভাষা-অজ্ঞেয়বাদী।
+
+পূর্বে আমরা উল্লেখ করেছি যে Polygon Edge বেশ কয়েকটি GRPC প্রোটোকল ব্যবহার করে।
+নোড অপারেটরের জন্য সামগ্রিক UX বুস্ট করতে এটি করা হয়েছিল, যা GETH এবং Parity এর মতো ক্লায়েন্টগুলোতে প্রায়ই ল্যাগ করে।
+
+নোড অপারেটর লগ থেকে প্রয়োজনীয় তথ্য খুঁজে বের করার পরিবর্তে GRPC সার্ভিস কল করে সিস্টেমে কী ঘটছে সে সম্পর্কে আরো ভালো ওভারভিউ পাবেন।
+
+### নোড অপারেটরের জন্য GRPC {#grpc-for-node-operators}
+
+নিম্নলিখিত বিভাগটি পরিচিত মনে হতে পারে কারণ এটি [CLI কমান্ড](/docs/edge/get-started/cli-commands) বিভাগে সংক্ষিপ্তভবে উল্লেখ করা হয়েছে।
+
+**নোড অপারেটরদের** ব্যবহারেরে জন্য তৈরি GRPC সার্ভিস এমনভাবে সংজ্ঞায়িত করা হয়েছে কারণ:
+````go title="minimal/proto/system.proto"
+service System {
+ // GetInfo returns info about the client
+ rpc GetStatus(google.protobuf.Empty) returns (ServerStatus);
+
+ // PeersAdd adds a new peer
+ rpc PeersAdd(PeersAddRequest) returns (google.protobuf.Empty);
+
+ // PeersList returns the list of peers
+ rpc PeersList(google.protobuf.Empty) returns (PeersListResponse);
+
+ // PeersInfo returns the info of a peer
+ rpc PeersStatus(PeersStatusRequest) returns (Peer);
+
+ // Subscribe subscribes to blockchain events
+ rpc Subscribe(google.protobuf.Empty) returns (stream BlockchainEvent);
+}
+````
+:::tip
+
+CLI কমান্ডগুলো এসব সার্ভিস পদ্ধতিগুলোর ইমপ্লিমেন্টেশনকে কল করে।
+
+এই পদ্ধতিগুলি ***minimal/system_service.go***-তে ইমপ্লিমেন্ট করা হয়েছে।
+
+:::
+
+### অন্যান্য নোডের জন্য GRPC {#grpc-for-other-nodes}
+
+Polygon Edge অন্যান্য নোডের ব্যবহারের জন্য বেশ কয়েকটি সার্ভিস পদ্ধতি ইমপ্লিমেন্ট করে।
+উল্লিখিত সার্ভিসটি **[প্রোটোকল](docs/edge/architecture/modules/consensus)** বিভাগে বর্ণনা করা হয়েছে।
+
+## 📜 রিসোর্স {#resources}
+* **[প্রোটোকল বাফার](https://developers.google.com/protocol-buffers)**
+* **[libp2p](https://libp2p.io/)**
+* **[GRPC](https://grpc.io/)**
diff --git a/archive/edge/bn-edge/architecture/modules/other-modules.md b/archive/edge/bn-edge/architecture/modules/other-modules.md
new file mode 100644
index 0000000000..fcd962efe7
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/other-modules.md
@@ -0,0 +1,36 @@
+---
+id: other-modules
+title: অন্যান্য মডিউল
+description: Polygon Edge-এর কিছু মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - modules
+---
+
+## ক্রিপ্টো {#crypto}
+
+**ক্রিপ্টো** মডিউলের মধ্যে ক্রিপ্টো ইউটিলিটি ফাংশন রয়েছে।
+
+## চেইন {#chain}
+
+**চেইন** মডিউলের মধ্যে চেইন প্যারামিটার আছে (অ্যাক্টিভ ফর্ক, কনসেনসাস ইঞ্জিন ইত্যাদি।)
+
+* **চেইন** - আগে থেকে নির্ধারিত চেইন কনফিগারেশন (মেইননেট, goerli, ibft)
+
+## হেল্পার {#helper}
+
+**হেল্পার** মডিউলে হেল্পার প্যাকেজ রয়েছে।
+
+* **dao** - Dao utils
+* **enode** - Enode এনকোডিং/ডিকোডিং ফাংশন
+* **হেক্স** - হেক্স এনকোডিং/ডিকোডিং ফাংশন
+* **ipc** - IPC সংযোগ ফাংশন
+* **keccak** - Keccak ফাংশন
+* **rlputil** - Rlp এনকোডিং/ডিকোডিং হেল্পার ফাংশন
+
+## কমান্ড {#command}
+
+**কমান্ড** মডিউলে CLI কমান্ডের ইন্টারফেস রয়েছে।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/architecture/modules/sealer.md b/archive/edge/bn-edge/architecture/modules/sealer.md
new file mode 100644
index 0000000000..59babe6a39
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/sealer.md
@@ -0,0 +1,73 @@
+---
+id: sealer
+title: সিলার
+description: Polygon Edge-এর সিলার মডিউলটির ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - sealer
+ - sealing
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+**Sealer** একটি এন্টিটি যা লেনদেনসমূহ সংগ্রহ করে এবং একটি নতুন ব্লক তৈরি করে।
+তারপর, সেই ব্লকটি সিল করা জন্য **কনসেনসাস** মডিউলে পাঠানো হয়।
+
+চূড়ান্ত সিলিং লজিকটি **কনসেনসাস** মডিউলে অবস্থিত।
+
+## প্রক্রিয়া রান করুন {#run-method}
+
+````go title="sealer/sealer.go"
+func (s *Sealer) run(ctx context.Context) {
+ sub := s.blockchain.SubscribeEvents()
+ eventCh := sub.GetEventCh()
+
+ for {
+ if s.config.DevMode {
+ // In dev-mode we wait for new transactions to seal blocks
+ select {
+ case <-s.wakeCh:
+ case <-ctx.Done():
+ return
+ }
+ }
+
+ // start sealing
+ subCtx, cancel := context.WithCancel(ctx)
+ done := s.sealAsync(subCtx)
+
+ // wait for the sealing to be done
+ select {
+ case <-done:
+ // the sealing process has finished
+ case <-ctx.Done():
+ // the sealing routine has been canceled
+ case <-eventCh:
+ // there is a new head, reset sealer
+ }
+
+ // cancel the sealing process context
+ cancel()
+
+ if ctx.Err() != nil {
+ return
+ }
+ }
+}
+````
+
+:::caution কাজ চলছে
+
+**সিলার** এবং **কনসেনসাস** মডিউলগুলো অদূর ভবিষ্যতে একত্রিত করে একটি একক এনটিটিতে পরিণত করা হতে পারে।
+
+নতুন মডিউলটি বিভিন্ন ধরণের কনসেনসাস মেকানিজমের জন্য মডুলার লজিককে অন্তর্ভুক্ত করবে, যার জন্য বিভিন্ন ধরনের সিলিং ইমপ্লিমেন্টেশন প্রয়োজন:
+* **PoS** (প্রুফ অফ স্টেক)
+* **PoA** (প্রুফ অব অথোরিটি)
+
+বর্তমানে, **সিলার** এবং **কনসেনসাস** মডিউলগুলো PoW (প্রুফ অফ ওয়ার্ক) দিয়েও কাজ করে।
+
+:::
\ No newline at end of file
diff --git a/archive/edge/bn-edge/architecture/modules/state.md b/archive/edge/bn-edge/architecture/modules/state.md
new file mode 100644
index 0000000000..ea06d34175
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/state.md
@@ -0,0 +1,248 @@
+---
+id: state
+title: স্টেট
+description: Polygon Edge-এর স্টেট মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - state
+ - trie
+---
+
+স্টেট **কীভাবে** কাজ করে তা সত্যিকার অর্থে বুঝতে আপনাকে অবশ্যই Ethereum সম্পর্কে কিছু মৌলিক ধারণা থাকতে হবে।
+
+আমরা **[স্টেট ইন Ethereum নির্দেশিকাটি](https://ethereum.github.io/execution-specs/autoapi/ethereum/frontier/state/index.html)** পড়ার পরামর্শ দিয়ে থাকি।
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+এখন যেহেতু আমরা নিজেদের মৌলিক Ethereum ধারণাগুলির সাথে পরিচিত করে নিয়েছি, তাই পরবর্তী ওভারভিউ আমাদের জন্য অনেকটা সহজ হয়ে যাবে বলে আশা করছি।
+
+আমরা উল্লেখ করেছি যে **ওয়ার্ল্ড স্টেট ট্রি**-তে বিদ্যমান সকল Ethereum অ্যাকাউন্ট রয়েছে।
+এই অ্যাকাউন্টগুলো মার্কেল ট্রি-এর পাতা। প্রতিটি পাতায় **অ্যাকাউন্ট স্টেট** জড়িত তথ্য এনকোড করা আছে।
+
+এটির সাহায্যে Polygon Edge একটি নির্দিষ্ট সময়ের জন্য একটি নির্দিষ্ট মার্কেল ট্রি পেতে পারে।
+উদাহরণস্বরূপ, আমরা ব্লক 10-এ স্টেটের হ্যাশ পেতে পারি।
+
+মার্কেল ট্রিকে কোনো কোনো সময়ে ***স্ন্যাপশট*** বলা হয়।
+
+আমরা **স্টেট ট্রি** অথবা **স্টোরেজ ট্রি** এর জন্য ***স্ন্যাপশট*** পেতে পারি - আসলে তারা একই জিনিস।
+একমাত্র পার্থক্য হচ্ছে পাতাগুলো কী নির্দেশ করে:
+
+* স্টোরেজ ট্রি-এর ক্ষেত্রে পাতাগুলোতে একটি আর্বিট্রারি স্টেট থাকে, যা আমরা প্রক্রিয়া করতে পারি না বা সেখানে কী আছে জানতে পারি না
+* স্টেট ট্রি-এর ক্ষেত্রে, পাতাগুলো অ্যাকাউন্টকে নির্দেশ করে
+
+````go title="state/state.go
+type State interface {
+ // Gets a snapshot for a specific hash
+ NewSnapshotAt(types.Hash) (Snapshot, error)
+
+ // Gets the latest snapshot
+ NewSnapshot() Snapshot
+
+ // Gets the codeHash
+ GetCode(hash types.Hash) ([]byte, bool)
+}
+````
+
+**স্ন্যাপশট** ইন্টারফেসটি নিম্নোক্তভাবে সংজ্ঞায়িত করা যায়:
+
+````go title="state/state.go
+type Snapshot interface {
+ // Gets a specific value for a leaf
+ Get(k []byte) ([]byte, bool)
+
+ // Commits new information
+ Commit(objs []*Object) (Snapshot, []byte)
+}
+````
+
+*অবজেক্ট স্ট্রাক্ট* দ্বারা কমিট করা তথ্য সংজ্ঞায়িত করা হয়েছে:
+
+````go title="state/state.go
+// Object is the serialization of the radix object
+type Object struct {
+ Address types.Address
+ CodeHash types.Hash
+ Balance *big.Int
+ Root types.Hash
+ Nonce uint64
+ Deleted bool
+
+ DirtyCode bool
+ Code []byte
+
+ Storage []*StorageObject
+}
+````
+
+মার্কেল ট্রি-এর ইমপ্লিমেন্টেশন *state/immutable-trie* ফোল্ডারে রয়েছে।
+*state/immutable-trie/state.go* **স্টেট** ইন্টারফেসকে ইমপ্লিমেন্ট করে।
+
+*state/immutable-trie/trie.go* হচ্ছে মেইন মার্কেল ট্রি অবজেক্ট। এটি মার্কেল ট্রি-এর একটি অপ্টিমাইজড সংস্করনের প্রতিনিধিত্ব করে,
+যা যতটা সম্ভব মেমরির পুনঃব্যবহার করে।
+
+## এক্সিকিউটর {#executor}
+
+একটি ব্লক কীভাবে বর্তমান স্টেটকে পরিবর্তন করবে সে বিষয়ে সিদ্ধান্ত নিতে Polygon Edge-এর প্রয়োজনীয় সকল তথ্য *state/executor.go*-তে অন্তর্ভুক্ত
+রয়েছে। *ProcessBlock*-এর ইমপ্লিমেন্টেশন এখানে আছে।
+
+*Apply* পদ্ধতিটি আসল স্টেট ট্রানজিশনটি করে। এক্সিকিউটর EVM-কে কল করে।
+
+````go title="state/executor.go"
+func (t *Transition) apply(msg *types.Transaction) ([]byte, uint64, bool, error) {
+ // check if there is enough gas in the pool
+ if err := t.subGasPool(msg.Gas); err != nil {
+ return nil, 0, false, err
+ }
+
+ txn := t.state
+ s := txn.Snapshot()
+
+ gas, err := t.preCheck(msg)
+ if err != nil {
+ return nil, 0, false, err
+ }
+ if gas > msg.Gas {
+ return nil, 0, false, errorVMOutOfGas
+ }
+
+ gasPrice := new(big.Int).SetBytes(msg.GetGasPrice())
+ value := new(big.Int).SetBytes(msg.Value)
+
+ // Set the specific transaction fields in the context
+ t.ctx.GasPrice = types.BytesToHash(msg.GetGasPrice())
+ t.ctx.Origin = msg.From
+
+ var subErr error
+ var gasLeft uint64
+ var returnValue []byte
+
+ if msg.IsContractCreation() {
+ _, gasLeft, subErr = t.Create2(msg.From, msg.Input, value, gas)
+ } else {
+ txn.IncrNonce(msg.From)
+ returnValue, gasLeft, subErr = t.Call2(msg.From, *msg.To, msg.Input, value, gas)
+ }
+
+ if subErr != nil {
+ if subErr == runtime.ErrNotEnoughFunds {
+ txn.RevertToSnapshot(s)
+ return nil, 0, false, subErr
+ }
+ }
+
+ gasUsed := msg.Gas - gasLeft
+ refund := gasUsed / 2
+ if refund > txn.GetRefund() {
+ refund = txn.GetRefund()
+ }
+
+ gasLeft += refund
+ gasUsed -= refund
+
+ // refund the sender
+ remaining := new(big.Int).Mul(new(big.Int).SetUint64(gasLeft), gasPrice)
+ txn.AddBalance(msg.From, remaining)
+
+ // pay the coinbase
+ coinbaseFee := new(big.Int).Mul(new(big.Int).SetUint64(gasUsed), gasPrice)
+ txn.AddBalance(t.ctx.Coinbase, coinbaseFee)
+
+ // return gas to the pool
+ t.addGasPool(gasLeft)
+
+ return returnValue, gasUsed, subErr != nil, nil
+}
+````
+
+## রানটাইম {#runtime}
+
+একটি স্টেট ট্রানজিশন এক্সিকিউট করা হলে যে প্রধান মডিউল সে ট্রানজিশনটি এক্সিকিউট করে সেটি হচ্ছে EVM (এটি
+স্টেট/রানটাইম/evm-এর মধ্যে অবস্থিত)।
+
+**ডিসপ্যাচ টেবিলটি** **opcode** এবং নির্দেশনার মধ্যে ম্যাচ করার চেষ্টা করে।
+
+````go title="state/runtime/evm/dispatch_table.go"
+func init() {
+ // unsigned arithmetic operations
+ register(STOP, handler{opStop, 0, 0})
+ register(ADD, handler{opAdd, 2, 3})
+ register(SUB, handler{opSub, 2, 3})
+ register(MUL, handler{opMul, 2, 5})
+ register(DIV, handler{opDiv, 2, 5})
+ register(SDIV, handler{opSDiv, 2, 5})
+ register(MOD, handler{opMod, 2, 5})
+ register(SMOD, handler{opSMod, 2, 5})
+ register(EXP, handler{opExp, 2, 10})
+
+ ...
+
+ // jumps
+ register(JUMP, handler{opJump, 1, 8})
+ register(JUMPI, handler{opJumpi, 2, 10})
+ register(JUMPDEST, handler{opJumpDest, 0, 1})
+}
+````
+
+*Run* লুপ হচ্ছে EVM-কে চালিত করার মূল লজিক।
+
+এটি EVM-এর প্রধান এন্ট্রি পয়েন্ট। এটি একটি লুপ করে এবং বর্তমান অপকোড চেক করে, নির্দেশনা নিয়ে আসে, এটি কার্যকর করা যায় কিনা
+তা পরীক্ষা করে, গ্যাস খরচ করে এবং নির্দেশনাটি ব্যর্থ বা বন্ধ না হওয়া পর্যন্ত তা এক্সিকিউট করতে থাকে।
+
+````go title="state/runtime/evm/state.go"
+
+// Run executes the virtual machine
+func (c *state) Run() ([]byte, error) {
+ var vmerr error
+
+ codeSize := len(c.code)
+
+ for !c.stop {
+ if c.ip >= codeSize {
+ c.halt()
+ break
+ }
+
+ op := OpCode(c.code[c.ip])
+
+ inst := dispatchTable[op]
+
+ if inst.inst == nil {
+ c.exit(errOpCodeNotFound)
+ break
+ }
+
+ // check if the depth of the stack is enough for the instruction
+ if c.sp < inst.stack {
+ c.exit(errStackUnderflow)
+ break
+ }
+
+ // consume the gas of the instruction
+ if !c.consumeGas(inst.gas) {
+ c.exit(errOutOfGas)
+ break
+ }
+
+ // execute the instruction
+ inst.inst(c)
+
+ // check if stack size exceeds the max size
+ if c.sp > stackSize {
+ c.exit(errStackOverflow)
+ break
+ }
+
+ c.ip++
+ }
+
+ if err := c.err; err != nil {
+ vmerr = err
+ }
+
+ return c.ret, vmerr
+}
+````
diff --git a/archive/edge/bn-edge/architecture/modules/storage.md b/archive/edge/bn-edge/architecture/modules/storage.md
new file mode 100644
index 0000000000..e89468a629
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/storage.md
@@ -0,0 +1,117 @@
+---
+id: storage
+title: স্টোরেজ
+description: Polygon Edge-এর স্টোরেজ মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - storage
+ - LevelDB
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+Polygon Edge বর্তমানে ডেটা স্টোরেজের জন্য **LevelDB** এবং **in-memory** ডেটা স্টোর ব্যবহার করে।
+
+Polygon Edge এর মধ্য দিয়ে, যখন মডিউলগুলোর যখন অন্তর্নিহিত ডেটা স্টোরের সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন হয়, তাদের জানতে হয়না যে তারা কোন DB ইঞ্জিন বা সার্ভিসের সাথে ইন্টারঅ্যাক্ট করছে।
+
+DB লেয়ারটি **স্টোরেজ** নামক একটি মডিউলের মধ্যে অ্যাবস্ট্র্যাক্ট হয়ে থাকে, যা মডিউলের কোয়েরি করা ইন্টারফেসগুলো এক্সপোর্ট করে।
+
+প্রতিটি DB লেয়ার, আপাতত শুধুমাত্র **LevelDB**, এই পদ্ধতিগুলো আলাদাভাবে ইমপ্লিমেন্ট করে, এটা নিশ্চিত করতে যে তারা তাদের ইমপ্লিমেন্টেশনের সাথে ফিট হচ্ছে।
+
+````go title="blockchain/storage/storage.go"
+// Storage is a generic blockchain storage
+type Storage interface {
+ ReadCanonicalHash(n uint64) (types.Hash, bool)
+ WriteCanonicalHash(n uint64, hash types.Hash) error
+
+ ReadHeadHash() (types.Hash, bool)
+ ReadHeadNumber() (uint64, bool)
+ WriteHeadHash(h types.Hash) error
+ WriteHeadNumber(uint64) error
+
+ WriteForks(forks []types.Hash) error
+ ReadForks() ([]types.Hash, error)
+
+ WriteDiff(hash types.Hash, diff *big.Int) error
+ ReadDiff(hash types.Hash) (*big.Int, bool)
+
+ WriteHeader(h *types.Header) error
+ ReadHeader(hash types.Hash) (*types.Header, error)
+
+ WriteCanonicalHeader(h *types.Header, diff *big.Int) error
+
+ WriteBody(hash types.Hash, body *types.Body) error
+ ReadBody(hash types.Hash) (*types.Body, error)
+
+ WriteSnapshot(hash types.Hash, blob []byte) error
+ ReadSnapshot(hash types.Hash) ([]byte, bool)
+
+ WriteReceipts(hash types.Hash, receipts []*types.Receipt) error
+ ReadReceipts(hash types.Hash) ([]*types.Receipt, error)
+
+ WriteTxLookup(hash types.Hash, blockHash types.Hash) error
+ ReadTxLookup(hash types.Hash) (types.Hash, bool)
+
+ Close() error
+}
+````
+
+## LevelDB {#leveldb}
+
+### Prefixes {#prefixes}
+
+LevelDB স্টোরেজের কুয়েরিংকে ডিটার্মিনিস্টিক করতে এবং কী স্টোরেজ ক্ল্যাশিং এড়াতে, Polygon Edge
+ডেটা সংরক্ষণের সময়ে Prefix এবং sub-prefix ব্যবহার করে
+
+````go title="blockchain/storage/keyvalue.go"
+// Prefixes for the key-value store
+var (
+ // DIFFICULTY is the difficulty prefix
+ DIFFICULTY = []byte("d")
+
+ // HEADER is the header prefix
+ HEADER = []byte("h")
+
+ // HEAD is the chain head prefix
+ HEAD = []byte("o")
+
+ // FORK is the entry to store forks
+ FORK = []byte("f")
+
+ // CANONICAL is the prefix for the canonical chain numbers
+ CANONICAL = []byte("c")
+
+ // BODY is the prefix for bodies
+ BODY = []byte("b")
+
+ // RECEIPTS is the prefix for receipts
+ RECEIPTS = []byte("r")
+
+ // SNAPSHOTS is the prefix for snapshots
+ SNAPSHOTS = []byte("s")
+
+ // TX_LOOKUP_PREFIX is the prefix for transaction lookups
+ TX_LOOKUP_PREFIX = []byte("l")
+)
+
+// Sub-prefixes
+var (
+ HASH = []byte("hash")
+ NUMBER = []byte("number")
+ EMPTY = []byte("empty")
+)
+````
+
+## ভবিষ্যৎ পরিকল্পনা {#future-plans}
+
+নিকটবর্তী ভবিষ্যতে কিছু জনপ্রিয় DB সলিউশন যোগ করার পরিকল্পনা আছে, যেমন:
+* PostgreSQL
+* MySQL
+
+
+## 📜 রিসোর্স {#resources}
+* **[LevelDB](https://github.com/google/leveldb)**
\ No newline at end of file
diff --git a/archive/edge/bn-edge/architecture/modules/syncer.md b/archive/edge/bn-edge/architecture/modules/syncer.md
new file mode 100644
index 0000000000..6851bb3d99
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/syncer.md
@@ -0,0 +1,67 @@
+---
+id: syncer
+title: সিঙ্কার
+description: Polygon Edge-এর সিঙ্কার মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - synchronization
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+এই মডিউলে সিঙ্ক্রোনাইজেশন প্রোটোকলের লজিকটি অন্তর্ভুক্ত রয়েছে। চলমান নেটওয়ার্কে একটি নতুন নোড সিঙ্ক করার জন্য অথবা যে নোডগুলো কনসেনসাসে (অ-যাচাইকারী) অংশগ্রহণ করে না সেগুলোর জন্য নতুন ব্লক যাচাই/ইনসার্ট করতে এটি ব্যবহার করা হয়।
+
+Polygon Edge নেটওয়ার্কিং লেয়ারের জন্য **libp2p** ব্যবহার করে এবং এর উপরে **gRPC** রান করে।
+
+Polygon Edge-এ মূলত 2 ধরণের সিঙ্ক আছে:
+* বাল্ক সিঙ্ক - একবারে একটি বড় পরিসরের ব্লক সিঙ্ক করে
+* ওয়াচ সিঙ্ক - প্রতি ব্লক ভিত্তিতে সিঙ্ক করে
+
+### বাল্ক সিঙ্ক {#bulk-sync}
+
+বাল্ক সিঙ্কের ধাপগুলো বাল্ক সিঙ্কের লক্ষ্য পূরণের জন্য বেশ সহজবোধ্য - পিছিয়ে না পরার তাগিদে, যত তাড়াতাড়ি সম্ভব, অন্য পিয়ার থেকে যত বেশি ব্লক (যদি থাকে) সিঙ্ক করা সম্ভব হয় তত বেশি ব্লক সিঙ্ক করা।
+
+এটি বাল্ক সিঙ্ক প্রসেসের ফ্লো:
+
+1. ** নোডটির বাল্ক সিঙ্ক প্রয়োজন কিনা তা নির্ধারণ করুন ** - এই ধাপে, নোডটি পিয়ার ম্যাপ পরীক্ষা করে দেখে যে নোডের কাছে লোকালি যে ব্লক নাম্বার আছে তার চেয়ে বড় ব্লক নাম্বার অন্য কারও আছে কিনা
+2. ** সেরা পিয়ার খুঁজে বের করা (সিঙ্ক পিয়ার ম্যাপ ব্যবহার করে) ** - এই ধাপে নোডটি উপরের উদাহরণে উল্লিখিত মানদণ্ডের উপর ভিত্তি করে সিঙ্ক করার জন্য সেরা পিয়ার খুঁজে বের করে।
+3. ** একটি বাল্ক সিঙ্ক স্ট্রিম খুলুন ** - এই ধাপে নোডটি সাধারণ ব্লক নম্বর থেকে ব্লককে বাল্ক সিঙ্ক করার জন্য সেরা পিয়ারের কাছে একটি gRPC স্ট্রিম খোলে
+4. ** বাল্ক পাঠানোর পরে সেরা পিয়ারটি স্ট্রিম বন্ধ করে দেয় ** - এই ধাপে নোডটি যে সেরা পিয়ারের সাথে সিঙ্ক করছে সে সমস্ত ব্লকগুলো পাঠানোর সাথে সাথেই স্ট্রিমটি বন্ধ করে দেয়
+5. ** বাল্ক সিঙ্কিং শেষ হওয়ার পরে, নোডটি যাচাইকারী কিনা তা দেখা ** - এই ধাপে, স্ট্রিমটি সেরা পিয়ার বন্ধ করে দেয় এবং নোডটি বাল্ক সিঙ্ক করার পরে সে নিজে একজন যাচাইকারী কিনা তা যাচাই করে।
+ * যদি তারা যাচাইকারী হয়ে থাকে, তবে তারা সিঙ্ক স্টেট থেকে বের হয়ে কনসেনসাসে অংশগ্রহণ করা শুরু করবে
+ * যদি তারা যাচাইকারী না হয়, তাহলে তারা ** ওয়াচ সিঙ্কে ** থাকা চালিয়ে যাবে
+
+### ওয়াচ সিঙ্ক {#watch-sync}
+
+:::info
+নোডটি যদি একটি যাচাইকারী না হয়ে নেটওয়ার্কের একটি সাধারণ অ-যাচাইকারী নোড হয় যা শুধু আসন্ন ব্লকের অপেক্ষা করে, শুধুমাত্র তাহলেই ওয়াচ সিঙ্কিং-এর ধাপটি এক্সিকিউট হয়।
+
+:::
+
+ওয়াচ সিঙ্কের আচরণ বেশ সহজবোধ্য, নোডটি ইতিমধ্যে বাকি নেটওয়ার্কের সাথে সিঙ্ক করা আছে এবং তাকে কেবলমাত্র নতুন ব্লক পার্স করতে হবে যেগুলো আসন্ন।
+
+ওয়াচ সিঙ্ক প্রসেসের ফ্লো নিচে দেওয়া হলো:
+
+1. ** পিয়ারের স্ট্যাটাস আপডেট হলে নতুন ব্লক যোগ করা ** - এই স্টেপে নোডটি নতুন ব্লক ইভেন্ট হওয়ার প্রতীক্ষা করে, যখন সে একটি নতুন ব্লক পায় তখন সে একটি gRPC ফাংশন কল রান করে, ব্লকটি নেয় এবং লোকাল স্টেট আপডেট করে।
+2. ** সর্বশেষ ব্লকটি সিঙ্ক করার পরে নোডটি যাচাইকারী কিনা তা যাচাই করা **
+ * যদি তা হয়, তাহলে সিঙ্ক স্টেট থেকে বের হন
+ * যদি তা না হয়, তাহলে নতুন ব্লক ইভেন্টের প্রতীক্ষা করা চালিয়ে যান
+
+## পারফর্ম্যান্স রিপোর্ট {#perfomance-report}
+
+:::info
+
+** এক মিলিয়ন ব্লক ** একটি লোকাল মেশিনে সিঙ্ক করে এর পারফরমেন্স যাচাই করা হয়েছে
+
+:::
+
+| নাম | ফলাফল |
+|----------------------|----------------|
+| 1M ব্লক সিঙ্ক করা | ~ 25 মিনিট |
+| 1M ব্লক ট্রান্সফার করা | ~ 1 মিনিট |
+| GRPC কলের সংখ্যা | 2 |
+| টেস্ট কভারেজ | ~ 93% |
\ No newline at end of file
diff --git a/archive/edge/bn-edge/architecture/modules/txpool.md b/archive/edge/bn-edge/architecture/modules/txpool.md
new file mode 100644
index 0000000000..b4ac6760f8
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/txpool.md
@@ -0,0 +1,231 @@
+---
+id: txpool
+title: TxPool
+description: Polygon Edge-এর TxPool মডিউলের ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - TxPool
+ - transaction
+ - pool
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+TxPool মডিউল লেনদেন পুল বাস্তবায়নের প্রতিনিধিত্ব করে, যেখানে সিস্টেমের বিভিন্ন অংশ থেকে লেনদেন
+যোগ করা হয়। এই মডিউলটি নোড অপারেটরদের জন্য বিভিন্ন দরকারী ফিচার প্রকাশ করে, যা বর্ণনা করা হয়েছে।
+
+## অপারেটর কমান্ড {#operator-commands}
+
+````go title="txpool/proto/operator.proto
+service TxnPoolOperator {
+ // Status returns the current status of the pool
+ rpc Status(google.protobuf.Empty) returns (TxnPoolStatusResp);
+
+ // AddTxn adds a local transaction to the pool
+ rpc AddTxn(AddTxnReq) returns (google.protobuf.Empty);
+
+ // Subscribe subscribes for new events in the txpool
+ rpc Subscribe(google.protobuf.Empty) returns (stream TxPoolEvent);
+}
+
+````
+
+নোড অপারেটররা এই GRPC এন্ডপয়েন্টগুলো কুয়েরি করতে পারবেন, ঠিক যেমনটা **[CLI কমান্ড](/docs/edge/get-started/cli-commands#transaction-pool-commands)** বিভাগে বর্ণনা করা হয়েছে।
+
+## লেনদেন প্রসেস করা {#processing-transactions}
+
+````go title="txpool/txpool.go"
+// AddTx adds a new transaction to the pool
+func (t *TxPool) AddTx(tx *types.Transaction) error {
+ if err := t.addImpl("addTxn", tx); err != nil {
+ return err
+ }
+
+ // broadcast the transaction only if network is enabled
+ // and we are not in dev mode
+ if t.topic != nil && !t.dev {
+ txn := &proto.Txn{
+ Raw: &any.Any{
+ Value: tx.MarshalRLP(),
+ },
+ }
+ if err := t.topic.Publish(txn); err != nil {
+ t.logger.Error("failed to topic txn", "err", err)
+ }
+ }
+
+ if t.NotifyCh != nil {
+ select {
+ case t.NotifyCh <- struct{}{}:
+ default:
+ }
+ }
+ return nil
+}
+
+func (t *TxPool) addImpl(ctx string, txns ...*types.Transaction) error {
+ if len(txns) == 0 {
+ return nil
+ }
+
+ from := txns[0].From
+ for _, txn := range txns {
+ // Since this is a single point of inclusion for new transactions both
+ // to the promoted queue and pending queue we use this point to calculate the hash
+ txn.ComputeHash()
+
+ err := t.validateTx(txn)
+ if err != nil {
+ return err
+ }
+
+ if txn.From == types.ZeroAddress {
+ txn.From, err = t.signer.Sender(txn)
+ if err != nil {
+ return fmt.Errorf("invalid sender")
+ }
+ from = txn.From
+ } else {
+ // only if we are in dev mode we can accept
+ // a transaction without validation
+ if !t.dev {
+ return fmt.Errorf("cannot accept non-encrypted txn")
+ }
+ }
+
+ t.logger.Debug("add txn", "ctx", ctx, "hash", txn.Hash, "from", from)
+ }
+
+ txnsQueue, ok := t.queue[from]
+ if !ok {
+ stateRoot := t.store.Header().StateRoot
+
+ // initialize the txn queue for the account
+ txnsQueue = newTxQueue()
+ txnsQueue.nextNonce = t.store.GetNonce(stateRoot, from)
+ t.queue[from] = txnsQueue
+ }
+ for _, txn := range txns {
+ txnsQueue.Add(txn)
+ }
+
+ for _, promoted := range txnsQueue.Promote() {
+ t.sorted.Push(promoted)
+ }
+ return nil
+}
+````
+***addImpl*** পদ্ধতিটি **TxPool** মডিউলের জন্য খুবই গুরুত্বপূর্ণ একটি পদ্ধতি।
+এটি সিস্টেমে লেনদেন যোগ করার কেন্দ্র হিসেবে কাজ করে এবং এটিকে GRPC সার্ভিস, JSON RPC এন্ডপয়েন্ট
+ও **gossip** প্রোটোকলের মাধ্যমে যেখান থেকে ক্লায়েন্ট লেনদেন পায় সেখান থেকে কল করা যাবে।
+
+এটি একটি **ctx** আর্গুমেন্ট গ্রহণ করে, যা কেবল লেনদেনটি কোন কনটেক্সট থেকে যোগ করা হচ্ছে তা নির্দেশ করে (GRPC, JSON RPC...)।
+অন্যান্য প্যারামিটার হচ্ছে পুলে যোগ করা হবে এমন লেনদেনের তালিকা।
+
+এখানে যে বিষয়টির প্রতি নজর দিতে হবে তা হচ্ছে লেনদেনের ভিতরে থাকা **প্রাপক** ফিল্ডটি।
+* যদি **প্রাপক** ফিল্ড **খালি** হয়, তাহলে সেটিকে একটি আনএনক্রিপ্টেড/আনঅ্যাসাইন্ড লেনদেন হিসাবে গণ্য করা হয়। এই ধরনের লেনদেন শুধুমাত্র
+ডেভেলাপমেন্ট মোডে গ্রহণ করা হয়
+* যদি **প্রাপক** ফিল্ড **খালি** না হয়, তার মানে হচ্ছে সেটি একটি স্বাক্ষরিত লেনদেন, তাই স্বাক্ষর যাচাই করা হয়েছিল
+
+এই সমস্ত যাচাইয়ের পরে, লেনদেন বৈধ বলে গণ্য করা হয়।
+
+## ডেটা স্ট্রাকচার {#data-structures}
+
+````go title="txpool/txpool.go"
+// TxPool is a pool of transactions
+type TxPool struct {
+ logger hclog.Logger
+ signer signer
+
+ store store
+ idlePeriod time.Duration
+
+ queue map[types.Address]*txQueue
+ sorted *txPriceHeap
+
+ // network stack
+ network *network.Server
+ topic *network.Topic
+
+ sealing bool
+ dev bool
+ NotifyCh chan struct{}
+
+ proto.UnimplementedTxnPoolOperatorServer
+}
+````
+
+TxPool অবজেক্টে **কিউ** এবং **সাজানো** তালিকা নিয়ে বিভ্রান্তি সৃষ্টি হতে পারে।
+* **কিউ** - অ্যাকাউন্ট লেনদেনের একটি সাজানো তালিকার হিপ বাস্তবায়ন (nonce দ্বারা)
+* **সাজানো** - সমস্ত বর্তমান প্রোমোটেড লেনদেনের সাজানো তালিকা (সমস্ত এক্সিকিউটযোগ্য লেনদেন)। গ্যাস মূল্য দ্বারা সাজানো
+
+## গ্যসের সীমা সংক্রান্ত ত্রুটি ব্যবস্থাপনা {#gas-limit-error-management}
+
+আপনি কোনো লেনদেন সাবমিট করলে TxPool সেটি তিনটি উপায়ে প্রসেস করে থাকে।
+
+1. সমস্ত পেন্ডিং লেনদেন একটি ব্লকের মধ্যে ফিট হচ্ছে
+2. একটি বা একাধিক পেন্ডিং লেনদেন একটি ব্লকে ফিট হচ্ছে না
+3. একটি বা একাধিক পেন্ডিং লেনদেন কখনোই কোনো ব্লকে ফিট হবে না
+
+এখানে, **_ফিট_** শব্দের মানে হচ্ছে যে লেনদেনের একটি গ্যাস সীমা আছে যা TxPool-এর অবশিষ্ট গ্যাসের তুলনায় কম।
+
+প্রথম দৃশ্যকল্পে কোনো ত্রুটি দেখা দেয়নি।
+
+### দ্বিতীয় দৃশ্যকল্প {#second-scenario}
+
+- TxPool-এর অবশিষ্ট গ্যাস শেষ ব্লকের গ্যাস সীমায় সেট করা হয়েছে, ধরে নিচ্ছি তা **5000**
+- প্রথম লেনদেন প্রক্রিয়া করা হয়েছে এবং TxPool-এর **3000** গ্যাস খরচ হয়েছে
+ - TxPool-এর অবশিষ্ট গ্যাস এখন **2000**
+- একটি দ্বিতীয় লেনদেন সাবমিট করা হয়েছে এবং এটিও প্রথমটির মত একই - উভয়েই 3000 ইউনিট গ্যাস খরচ করে
+- যেহেতু TxPool-এর অবশিষ্ট গ্যাস লেনদেনের গ্যাসের তুলনায় **কম**, তাই এটিকে বর্তমান ব্লকের মধ্যে প্রক্রিয়া করা
+যাবে না
+ - এটি একটি পেন্ডিং লেনদেনের কিউয়ের মধ্যে রেখে দেওয়া হয়েছে যাতে পরবর্তী ব্লকে এটি প্রসেস করা যায়
+- প্রথম ব্লক লেখা হয়েছে, এটিকে **ব্লক #1** নামে ডাকা যাক
+- TxPool-এর অবশিষ্ট গ্যাস প্যারেন্ট ব্লক - **ব্লক #1**-এর গ্যাস সীমায় সেট করা হয়েছে
+- TxPool-এর পেন্ডিং লেনদেনের কিউয়ের মধ্যে যে লেনদেনটি রাখা হয়েছিল সেটি এখন প্রসেস করা হয়েছে এবং ব্লকে লিখা হয়েছে
+ - TxPool-এর অবশিষ্ট গ্যাস এখন **2000**
+- দ্বিতীয় ব্লক লিখা হয়েছে
+- ...
+
+
+
+### তৃতীয় দৃশ্যকল্প {#third-scenario}
+- TxPool-এর অবশিষ্ট গ্যাস শেষ ব্লকের গ্যাস সীমায় সেট করা হয়েছে, ধরে নিচ্ছি তা **5000**
+- প্রথম লেনদেন প্রক্রিয়া করা হয়েছে এবং TxPool-এর **3000** গ্যাস খরচ হয়েছে
+ - TxPool-এর অবশিষ্ট গ্যাস এখন **2000**
+- একটি দ্বিতীয় লেনদেন সাবমিট করা হয়েছে এবং তার গ্যাস ক্ষেত্রে **6000** সেট করা হয়েছে।
+- যেহেতু ব্লকের গ্যাস সীমা লেনদেনের গ্যাসের তুলনায় **কম**, তাই এই লেনদেনটি বাতিল করা হয়েছে
+ - এটি কখনোই কোন ব্লকে ফিট করা যাবে না
+- প্রথম ব্লক লিখা হয়েছে
+- ...
+
+
+
+
+> আপনি নিম্নলিখিত ত্রুটি পেলে এই বিষয়টি ঘটে:
+> ```shell
+> 2021-11-04T15:41:07.665+0100 [ERROR] polygon.consensus.dev: failed to write transaction: transaction's gas limit exceeds block gas limit
+> ```
+
+## ব্লক গ্যাস টার্গেট {#block-gas-target}
+
+কিছু কিছু পরিস্থিতিতে নোড চলমান চেইনে ব্লকের গ্যাস সীমার নিচে বা একটি নির্দিষ্ট টার্গেটের মধ্যে রাখতে চাইতে পারেন।
+
+নোড অপারেটর কোনো নির্দিষ্ট নোডে টার্গেট গ্যাসের সীমা সেট করে দিতে পারেন, যা নতুন তৈরি ব্লকে সেই সীমা প্রয়োগ করার চেষ্টা করবে।
+অন্যান্য নোডের বড় একটি অংশেরও যদি একটি অনুরূপ (বা একই) টার্গেট গ্যাস সীমা সেট করা থাকে, তাহলে ব্লকের গ্যাস সীমা সবসময়
+ব্লক গ্যাসের কাছাকাছি উঠা-নামা করবে এবং নতুন ব্লক তৈরি হলে ধীরে ধীরে সেটির দিকে এগিয়ে যাবে (সর্বোচ্চ `1/1024 * parent block gas limit`)।
+
+### উদাহরণ দৃশ্যকল্প {#example-scenario}
+
+* নোড অপারেটর একটি একক নোডের ব্লকের গ্যাস সীমা সেট করেছেন `5000`
+* অন্যান্য নোডগুলোকেও `5000`-এ কনফিগার করা হয়, তবে একক নোডটিকে `7000`-এ কনফিগার করা হয়
+* `5000`-এ সেট করা নোডগুলো যদি প্রস্তাবক হয়ে যায়, তাহলে তারা গ্যাসের সীমা ইতোমধ্যেই টার্গেটে আছে কিনা তা যাচাই করবে
+* যদি গ্যাসের সীমা টার্গেটে না থাকে (বেশি/কম হয়), তাহলে প্রস্তাবক নোড টার্গেটের দিকে ব্লক গ্যাস টার্গেট সর্বোচ্চতে সেট করবে (1/1024 * প্যারেন্ট গ্যাসের সীমা)
+ 1. উদাহরণ: `parentGasLimit = 4500` এবং `blockGasTarget = 5000`, প্রস্তাবক নতুন ব্লকের জন্য `4504.39453125` (`4500/1024 + 4500`) পদ্ধতিতে গ্যাসের সীমা গণনা করবে
+ 2. উদাহরণ: `parentGasLimit = 5500` এবং `blockGasTarget = 5000`, প্রস্তাবক নতুন ব্লকের জন্য `5494.62890625` (`5500 - 5500/1024`) পদ্ধতিতে গ্যাসের সীমা গণনা করবে
+* এটি চেইনে ব্লকের গ্যাস সীমা টার্গেটে থাকার বিষয়টিকে নিশ্চিত করে, কারণ একক প্রস্তাবক যিনি টার্গেট `7000`-এ কনফিগার করেছেন তিনি সীমাটি খুব বেশি বাড়াতে পারবেন না এবং নোডের সংখ্যাগরিষ্ঠরা
+যারা টার্গেট `5000`-এ সেট করেছেন তারা চাইবেন যে টার্গেট এখানেই রাখতে
\ No newline at end of file
diff --git a/archive/edge/bn-edge/architecture/modules/types.md b/archive/edge/bn-edge/architecture/modules/types.md
new file mode 100644
index 0000000000..4005814b07
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/modules/types.md
@@ -0,0 +1,41 @@
+---
+id: types
+title: Types
+description: Polygon Edge-এ Types মডিউলটির ব্যাখ্যা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - types
+ - marshaling
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+**Types** মডিউলটি বিভিন্ন প্রকারের কোর অবজেক্ট ইমপ্লিমেন্ট করে, যেমন:
+
+* **Address**
+* **Hash**
+* **Header**
+* অনেকগুলো হেল্পার ফাংশন
+
+## RLP Encoding / Decoding {#rlp-encoding-decoding}
+
+অন্যান্য ক্লায়েন্ট, যেমন GETH এর মত, Polygon Edge এনকোডিং-এর জন্য রিফ্লেকশন ব্যবহার করেনা।
রিফ্লেকশন ব্যবহার পছন্দনীয় না কারণ তা পার্ফরমেন্স
+হ্রাস করে এবং স্কেলিং কঠিন করে।
+
+**Types** মডিউলটি FastRLP প্যাকেজে ব্যবহার করে, RLP marshaling এবং unmarshalling এর জন্য একটি সহজে ব্যবহারযোগ্য ইন্টারফেস প্রদান করে।
+
+Marshaling *MarshalRLPWith* এবং *MarshalRLPTO* পদ্ধতির মাধ্যমে করা হয়ে থাকে। অনুরূপ পদ্ধতিগুলো আছে
+unmarshalling-এর জন্য।
+
+এই পদ্ধতিগুলো ম্যানুয়ালি ব্যবহার করার কারণে, Polygon Edge-এর রিফ্লেকশন ব্যবহার করতে হয়না। *rlp_marshal.go* এ, আপনি Marshaling-এর পদ্ধতিগুলো খুঁজে পেতে পারেন:
+
+* **Bodies**
+* **Blocks**
+* **Headers**
+* **Receipts**
+* **Logs**
+* **Transactions**
\ No newline at end of file
diff --git a/archive/edge/bn-edge/architecture/overview.md b/archive/edge/bn-edge/architecture/overview.md
new file mode 100644
index 0000000000..586b6e4ebd
--- /dev/null
+++ b/archive/edge/bn-edge/architecture/overview.md
@@ -0,0 +1,61 @@
+---
+id: overview
+title: আর্কিটেকচারের ওভারভিউ
+sidebar_label: Overview
+description: Polygon Edge আর্কিটেকচারের ভূমিকা।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - modular
+ - layer
+ - libp2p
+ - extensible
+---
+
+আমরা *মডুলার* সফ্টওয়্যার তৈরির ধারণা নিয়ে শুরু করেছি।
+
+এই বিষয়টি আপনি Polygon Edge-এর সকল স্থানে লক্ষ্য করে থাকবেন। নীচে আপনি বিল্ট আর্কিটেকচার এবং লেয়ারিং-এর
+একটি সংক্ষিপ্ত ওভারভিউ পাবেন।
+
+## Polygon Edge লেয়ার {#polygon-edge-layering}
+
+
+
+## Libp2p {#libp2p}
+
+এইসব কিছু বেস নেটওয়ার্কিং লেয়ারে শুরু হয়, যেগুলো **libp2p** ব্যবহার করে। আমরা এই প্রযুক্তি ব্যবহারের সিদ্ধান্ত নিয়েছি কারণ এটি
+Polygon Edge-এর ডিজাইনিং ধারণার সাথে সঙ্গতিপূর্ণ। Libp2p হল:
+
+- মডুলার
+- প্রসারণযোগ্য
+- দ্রুততর
+
+সবচেয়ে গুরুত্বপূর্ণ হচ্ছে এটি আরো উন্নত ফিচারের খুব ভালো একটি ভিত্তি হিসেবে কাজ করে, যা আমরা পরবর্তীতে উল্লেখ করব।
+
+
+## সিঙ্ক্রোনাইজেশন এবং কনসেনসাস {#synchronization-consensus}
+সিঙ্ক্রোনাইজেশন এবং কনসেনসাস প্রোটোকল দুটিকে আলাদা করার ফলে মডুলারিটি এবং **কাস্টম** সিঙ্ক ও কনসেনসাস মেকানিজম ইমপ্লিমেন্টেশনের সুবিধা লাভ করা যায় - তবে এটি নির্ভর করবে ক্লায়েন্ট কিভাবে রান করা হচ্ছে তার উপর।
+
+Polygon Edge শুরু থেকেই প্লাগযোগ্য কনসেনসাস অ্যালগরিদম প্রদানের জন্য ডিজাইন করা হয়েছে।
+
+সমর্থিত কনসেনসাস অ্যালগরিদমের বর্তমান তালিকা:
+
+* IBFT PoA
+* IBFT PoS
+
+## ব্লকচেইন {#blockchain}
+ব্লকচেইন লেয়ার হচ্ছে কেন্দ্রীয় লেয়ার যা Polygon Edge সিস্টেমের সবকিছু পরিচালনা করে থাকে। এটি সংশ্লিষ্ট *মডিউল* বিভাগে আরো বিস্তারিতভাবে বর্ণনা করা হয়েছে।
+
+## স্টেট {#state}
+স্টেট অভ্যন্তরীণ লেয়ারটিতে স্টেট ট্রানজিশন লজিক থাকে। এটি নতুন ব্লক অন্তর্ভুক্ত করা হলে কিভাবে স্টেট পরিবর্তন হয় সে বিষয়টি পরিচালনা করে। এটি সংশ্লিষ্ট *মডিউল* বিভাগে আরো বিস্তারিতভাবে বর্ণনা করা হয়েছে।
+
+## JSON RPC {#json-rpc}
+JSON RPC লেয়ার হচ্ছে একটি API লেয়ার যা dApp ডেভেলপাররা ব্লকচেইনের সঙ্গে ইন্টারঅ্যাক্ট করতে ব্যবহার করে। এটি সংশ্লিষ্ট *মডিউল* বিভাগে আরো বিস্তারিতভাবে বর্ণনা করা হয়েছে।
+
+## TxPool {#txpool}
+TxPool লেয়ার লেনদেন পুলকে নির্দেশ করছে এবং এটি সিস্টেমের অন্যান্য মডিউলের সঙ্গে ঘনিষ্ঠভাবে সংযুক্ত আছে, কারণ লেনদেন একাধিক এন্ট্রি পয়েন্ট থেকে যোগ করা যায়।
+
+## GRPC {#grpc}
+gRPC, বা Google রিমোট প্রসেসরস কল, হচ্ছে একটি শক্তসমর্থ ওপেন সোর্স RPC ফ্রেমওয়ার্ক যা প্রাথমিকভাবে গুগল স্কেলেবল এবং দ্রুত API তৈরি করতে তৈরি করে। GRPC লেয়ার অপারেটর ইন্টার্যাকশনের জন্য খুবই গুরুত্বপূর্ণ। এর মাধ্যমে নোড অপারেটররা সহজেই ক্লায়েন্টের সঙ্গে ইন্টারঅ্যাক্ট করতে পারেন, ফলে UX আরো উপভোগ্য হয়ে উঠে।
diff --git a/archive/edge/bn-edge/community/propose-new-feature.md b/archive/edge/bn-edge/community/propose-new-feature.md
new file mode 100644
index 0000000000..4a64e5ae07
--- /dev/null
+++ b/archive/edge/bn-edge/community/propose-new-feature.md
@@ -0,0 +1,60 @@
+---
+id: propose-new-feature
+title: একটি নতুন ফিচার প্রস্তাব করুন
+description: "একটি নতুন ফিচার প্রস্তাব করার PR টেমপ্লেট এবং নির্দেশাবলী।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - feature
+ - PR
+ - template
+ - fix
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+আপনি যদি কোন সংশোধন যোগ করতে চান বা শুধুমাত্র কোড দিয়ে অবদান রাখতে চান, তাহলে প্রথমে টিমের সাথে যোগাযোগ করার জন্য বিশেষভাবে উৎসাহ প্রদান করা হচ্ছে।
+Polygon Edge তুলনামূলকভাবে মৌলিক ফিচারের প্রস্তাবনা টেমপ্লেট ব্যবহার করে, যা সংক্ষিপ্ত এবং সুনির্দিষ্ট।
+
+## PR টেমপ্লেট {#pr-template}
+
+### বিবরণ {#description}
+
+এই PR-এর মধ্যে কী করা হয়েছিল অনুগ্রহ করে তার একটি বিস্তারিত বিবরণ প্রদান করুন
+
+### পরিবর্তনে অন্তর্ভুক্ত আছে {#changes-include}
+
+- [ ] Bugfix (নন-ব্রেকিং পরিবর্তন যা সমস্যা সমাধান করে)
+- [ ] Hotfix (পরিবর্তন যা জরুরি এবং তাৎক্ষণিক সমাধান প্রয়োজন এমন সমস্যা সমাধান করে থাকে)
+- [ ] নতুন ফিচার (নন-ব্রেকিং পরিবর্তন যা ফাংশনালিটি যোগ করে)
+- [ ]ব্রেকিং পরিবর্তন (পরিবর্তন যা পূর্ববর্তী সংস্করণ সমর্থন করে না এবং/অথবা বর্তমান ফাংশনালিটি পরিবর্তন করে)
+
+### ব্রেকিং পরিবর্তন {#breaking-changes}
+
+কোনো ব্রেকিং পরিবর্তন করা হলে দয়া করে এই বিভাগটি সম্পন্ন করুন, অন্যথায় এটি মুছে ফেলুন
+
+### চেকলিস্ট {#checklist}
+
+- [ ] আমি নিজেকে এই PR-টি অ্যাসাইন করেছি
+- [ ] আমি অন্তত 1 জন রিভিউয়ার যোগ করেছি
+- [ ] আমি প্রাসঙ্গিক লেবেলটি যোগ করেছি
+- [ ] আমি অফিসিয়াল ডকুমেন্টেশনটি আপডেট করেছি
+- [ ] আমি কোডে পর্যাপ্ত ডকুমেন্টেশন যোগ করেছি
+
+### টেস্টিং {#testing}
+
+- [ ] আমি অফিসিয়াল টেস্ট স্যুট দিয়ে এই কোডটি টেস্ট করেছি
+- [ ] আমি নিজে এই কোড পরীক্ষা করেছি
+
+## ম্যানুয়াল টেস্ট {#manual-tests}
+
+আপনি এই ফাংশনালিটির জন্য ম্যানুয়াল টেস্ট রান করে থাকলে এই বিভাগটি সম্পন্ন করুন, অন্যথায় এটি মুছে ফেলুন
+
+### ডকুমেন্টেশন আপডেট {#documentation-update}
+
+অনুগ্রহ করে এই বিভাগে ডকুমেন্টেশন আপডেট PR লিঙ্ক করুন যদি থাকে, নাহলে এটি মুছে ফেলুন
+
+### অতিরিক্ত মন্তব্য {#additional-comments}
+
+আপনার যদি কোনো অতিরিক্ত মন্তব্য থাকে তাহলে অনুগ্রহ করে এই বিভাগে পোস্ট করুন, অন্যথায় এটি মুছে ফেলুন
\ No newline at end of file
diff --git a/archive/edge/bn-edge/community/report-bug.md b/archive/edge/bn-edge/community/report-bug.md
new file mode 100644
index 0000000000..42818efa38
--- /dev/null
+++ b/archive/edge/bn-edge/community/report-bug.md
@@ -0,0 +1,55 @@
+---
+id: report-bug
+title: একটি সমস্যার রিপোর্ট করুন
+description: Polygon Edge-এর সমস্যা রিপোর্ট করার টেমপ্লেট এবং নির্দেশাবলী।
+keywords:
+ - docs
+ - polygon
+ - edge
+ - issue
+ - bug
+ - report
+ - template
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+কখনো কখনো জিনিস নষ্ট হয়ে যায়।
+আপনি সম্মুখীন হতে পারেন এমন যেকোনো সমস্যার ব্যাপারে সর্বদা টিমের সাথে যোগাযোগ রাখুন।
+Polygon Edge GitHub পৃষ্ঠায়, আপনি নতুন কোনো ইস্যু ফাইল করতে পারবেন এবং টিমের সাথে সেটি নিয়ে আলোচনা করতে পারবেন।
+
+## ইস্যু টেমপ্লেট {#issue-template}
+
+## [ইস্যুর বিষয়]
+
+### বিবরণ {#description}
+
+এখানে আপনার সমস্যাটিকে যতটা সম্ভব বিস্তারিতভাবে বর্ণনা করুন
+
+### আপনার এনভায়রনমেন্ট {#your-environment}
+
+* OS এবং সংস্করণ
+* Polygon Edge-এর সংস্করণ
+* যে ব্রাঞ্চে সমস্যাটি দেখা দিয়েছে
+
+### পুনরুত্পাদনের ধাপ {#steps-to-reproduce}
+
+* এই সমস্যাটি কিভাবে পুনরুত্পাদন করতে হবে তা আমাদের বলুন
+* সমস্যা কোথায়, আপনি যদি জানেন বলুন
+* কোন কমান্ডের কারণে সমস্যাটি ট্রিগার করেছে, যদি কোনো থাকে
+
+### প্রত্যাশিত আচরণ {#expected-behaviour}
+
+আমাদের বলুন কী ঘটা উচিত ছিল
+
+### প্রকৃত আচরণ {#actual-behaviour}
+
+পরিবর্তে কী ঘটেছে তা আমাদের বলুন
+
+### লগ {#logs}
+
+সমস্যাটির উল্লেখ করা যেকোনো লগ এখানে পেস্ট করুন, যদি তা থাকে
+
+### প্রস্তাবিত সমাধান {#proposed-solution}
+
+এই সমস্যাটি সমাধানের বিষয়ে যদি আপনার কোনো প্রস্তাব থাকে, তাহলে এখানে লিখুন যাতে আমরা এটি নিয়ে আলোচনা শুরু করতে পারি
\ No newline at end of file
diff --git a/archive/edge/bn-edge/configuration/manage-private-keys.md b/archive/edge/bn-edge/configuration/manage-private-keys.md
new file mode 100644
index 0000000000..30e9c7c3e2
--- /dev/null
+++ b/archive/edge/bn-edge/configuration/manage-private-keys.md
@@ -0,0 +1,76 @@
+---
+id: manage-private-keys
+title: প্রাইভেট কী পরিচালনা করুন
+description: "প্রাইভেট কী কীভাবে পরিচালনা করতে হয় এবং কী ধরনের কী আছে।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - private
+ - key
+ - keystore
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+Polygon Edge-এর দুই ধরনের প্রাইভেট কী রয়েছে যা এটি সরাসরি পরিচালনা করে:
+
+* **কনসেনসাস মেকানিজমের জন্য ব্যবহৃত প্রাইভেট কী**
+* **libp2p দ্বারা নেটওয়ার্কিং-এর জন্য ব্যবহৃত প্রাইভেট কী**
+* **(ঐচ্ছিক) যাচাইকারীদের স্বাক্ষর একত্র করতে কনসেনসাস মেকানিজমের ব্যবহারের জন্য BLS প্রাইভেট কী**
+
+বর্তমানে, Polygon Edge সরাসরি অ্যাকাউন্ট পরিচালনার জন্য সাপোর্ট প্রদান করে না।
+
+[ব্যাকআপ এবং রিস্টোর নির্দেশিকায়](/docs/edge/working-with-node/backup-restore) উল্লিখিত ডিরেক্টরি স্ট্রাকচার অনুসারে
+Polygon Edge এই উল্লিখিত কী ফাইলগুলোকে দুটো স্বতন্ত্র ডিরেক্টরিতে জমা রাখে - **কনসেনসাস** এবং **keystore**।
+
+## কী ফরম্যাট {#key-format}
+
+প্রাইভেট কীগুলো সহজ **Base64 ফর্ম্যাটে** স্টোর করা হয়, যাতে সেটি মানুষের পড়ার যোগ্য এবং সহজে বহনযোগ্য হয়।
+
+```bash
+# Example private key
+0802122068a1bdb1c8af5333e58fe586bc0e9fc7aff882da82affb678aef5d9a2b9100c0
+```
+
+:::info কী-এর ধরন
+
+Polygon Edge-এর ভিতরে তৈরি এবং ব্যবহৃত সকল প্রাইভেট কী ফাইল [secp256k1](https://en.bitcoin.it/wiki/Secp256k1) কার্ভ সহ ECDSA-এর উপর নির্ভরশীল।
+
+যেহেতু কার্ভটি স্ট্যান্ডার্ড নয়, তাই এটি কোন স্ট্যান্ডার্ডাইজড PEM ফর্ম্যাটে এনকোড এবং সংরক্ষণ করা যাবে না। এই কী টাইপের অনুরূপ নয় এমন কী ইমপোর্ট করা সমর্থিত নয়।
+
+:::
+## Consensus প্রাইভেট কী {#consensus-private-key}
+
+*কনসেনসাস প্রাইভেট কী* হিসাবে উল্লিখিত প্রাইভেট কী'কে **যাচাইকারীর প্রাইভেট** হিসাবেও উল্লেখ করা হয়। যখন নোড নেটওয়ার্কে একটি যাচাইকারী হিসেবে কাজ করে এবং নতুন ডেটা সাইন করে তখন এই প্রাইভেট কী ব্যবহার করা হয়।
+
+প্রাইভেট কী ফাইলটি `consensus/validator.key`-এ অবস্থিত এবং উল্লেখিত [কী ফর্ম্যাট](/docs/edge/configuration/manage-private-keys#key-format) অনুসরণ করে।
+
+:::warning
+
+যাচাইকারীর প্রাইভেট কী প্রতিটি যাচাইকারী নোডের জন্য ইউনিক। একই কী সব যাচাইকারীদের মধ্যে ভাগ করা উচিত না, কারণ এটি আপনার চেইনে নিরাপত্তা জনিত সমস্যা সৃষ্টি করতে পারে।
+:::
+
+## নেটওয়ার্কিং প্রাইভেট কী {#networking-private-key}
+
+নেটওয়ার্কিং এর জন্য উল্লিখিত প্রাইভেট কী ফাইলটি libp2p দ্বারা ব্যবহৃত হয়, যাতে সংশ্লিষ্ট PeerID তৈরি করা যায় এবং নোডটিকে নেটওয়ার্কে অংশগ্রহণের অনুমতি দেয়া যায়।
+
+এটি `keystore/libp2p.key`-এ অবস্থিত এবং উল্লেখ করা [কী ফর্ম্যাট](/docs/edge/configuration/manage-private-keys#key-format) অনুসরণ করে।
+
+## BLS সিক্রেট কী {#bls-secret-key}
+
+কনসেনসাস লেয়ারে কমিটেড সিলগুলো একত্রিত করতে BLS সিক্রেট কী ফাইলটি ব্যবহার করা হয়। BLS দ্বারা একত্রিত কমিটেড সিলগুলোর আকার সিরিয়ালিজড কমিটেড ECDSA স্বাক্ষরগুলোর থেকে ছোট।
+
+BLS ফিচারটি ঐচ্ছিক এবং BLS ব্যবহার করবেন কিনা তা আপনি নির্বাচন করবেন। আরও বিস্তারিত জানতে [BLS](/docs/edge/consensus/bls) পড়ুন।
+
+## ইম্পোর্ট / এক্সপোর্ট {#import-export}
+
+যেহেতু কী ফাইলগুলো সাধারণ Base64 আকারে ডিস্কে সংরক্ষণ করা, তাই এগুলো সহজেই ব্যাকআপ বা ইম্পোর্ট করা যায়।
+
+:::caution কী ফাইলগুলো পরিবর্তন করা
+
+ইতোমধ্যে সেটআপকৃত / চলমান নেটওয়ার্কের কী ফাইলগুলিতে করা যে কোন ধরনের পরিবর্তন নেটওয়ার্ক/কনসেনসাসে গুরুতর সমস্যার সৃষ্টি করতে পারে,
+কারণ কনসেনসাস এবং পিয়ার ডিসকভারি মেকানিজম এই কীগুলো থেকে প্রাপ্ত ডেটা নোড-নির্দিষ্ট স্টোরেজে সংরক্ষণ করে এবং সংযোগ শুরু করতে ও কনসেনসাস লজিক
+সম্পাদন করতে এই ডেটার উপর নির্ভর করে
+
+:::
\ No newline at end of file
diff --git a/archive/edge/bn-edge/configuration/prometheus-metrics.md b/archive/edge/bn-edge/configuration/prometheus-metrics.md
new file mode 100644
index 0000000000..889fa636b0
--- /dev/null
+++ b/archive/edge/bn-edge/configuration/prometheus-metrics.md
@@ -0,0 +1,35 @@
+---
+id: prometheus-metrics
+title: Prometheus মেট্রিক্স
+description: "Polygon Edge-এর জন্য Prometheus মেট্রিক্স কীভাবে সক্ষম করবেন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - metrics
+ - prometheus
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+Polygon Edge Prometheus মেট্রিক্স রিপোর্ট এবং পরিবেশন করতে পারে, যা Prometheus সংগ্রাহক(গণ) দ্বারা ব্যবহার করা যেতে পারে।
+
+Prometheus মেট্রিক্স ডিফল্টরূপে নিষ্ক্রিয় করা থাকে। কনফিগ ফাইলে `--prometheus` ফ্ল্যাগ বা `Telemetry.prometheus` ক্ষেত্র ব্যবহার করে শ্রোতা ঠিকানা নির্দিষ্ট করার মাধ্যমে এটি সক্রিয় করা যাবে।
+মেট্রিক্স নির্দিষ্ট ঠিকানায় `/metrics`-এর অধীনে পরিবেশন করা হবে।
+
+## উপলভ্য মেট্রিক্স {#available-metrics}
+
+নিম্নলিখিত মেট্রিক্স পাওয়া যাচ্ছে:
+
+| **নাম** | **ধরন** | **বিবরণ** |
+|-----------------------------------------------|---------------|-------------------------------------------------|
+| txpool_pending_transactions | গেজ | TxPool-এ পেন্ডিং থাকা লেনদেনের সংখ্যা |
+| consensus_validators | গেজ | যাচাইকারীর সংখ্যা |
+| consensus_rounds | গেজ | রাউন্ডের সংখ্যা |
+| consensus_num_txs | গেজ | সর্বশেষ ব্লকে লেনদেনের সংখ্যা |
+| consensus_block_interval | গেজ | এই ব্লক এবং শেষ ব্লকের মধ্যকার সময়ের পার্থক্য সেকেন্ডে |
+| network_peers | গেজ | সংযুক্ত পিয়ারের সংখ্যা |
+| network_outbound_connections_count | গেজ | আউটবাউন্ড সংযোগের সংখ্যা |
+| network_inbound_connections_count | গেজ | ইনবাউন্ড সংযোগের সংখ্যা |
+| network_pending_outbound_connections_count | গেজ | পেন্ডিং আউটবাউন্ড সংযোগের সংখ্যা |
+| network_pending_inbound_connections_count | গেজ | পেন্ডিং ইনবাউন্ড সংযোগের সংখ্যা |
\ No newline at end of file
diff --git a/archive/edge/bn-edge/configuration/sample-config.md b/archive/edge/bn-edge/configuration/sample-config.md
new file mode 100644
index 0000000000..262c260cbc
--- /dev/null
+++ b/archive/edge/bn-edge/configuration/sample-config.md
@@ -0,0 +1,149 @@
+---
+id: sample-config
+title: সার্ভার কনফিগ ফাইল
+description: "একটি কনফিগারেশন ফাইল ব্যবহার করে Polygon Edge সার্ভার শুরু করুন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - server
+ - configuration
+ - yaml
+ - jason
+
+---
+# সার্ভার কনফিগারেশন ফাইল {#server-configuration-file}
+শুধু ফ্ল্যাগ ব্যবহার করার পরিবর্তে, বিভিন্ন কনফিগারেশন অপশন সহ একটি কনফিগারেশন ফাইল ব্যবহার করে সার্ভার শুরু করা যেতে পারে। একটি কনফিগ ফাইল দিয়ে সার্ভার শুরু করার কমান্ড: `polygon-edge server --config `
+
+## ডিফল্ট কনফিগারেশন সহ কনফিগ ফাইল এক্সপোর্ট করুন {#export-config-file-with-default-configuration}
+Polygon Edge সার্ভারের জন্য ডিফল্ট সেটিংস সহ একটি কনফিগারেশন ফাইল হয় `yaml` অথবা `json` ফাইল ফরম্যাটে এক্সপোর্ট করা যাবে। একটি কনফিগারেশন ফাইল ব্যবহার করে সার্ভার চালানোর জন্য এই ফাইলটি একটি টেমপ্লেট হিসাবে ব্যবহার করা যাবে।
+
+### YAML {#yaml}
+`yaml` ফরম্যাটে কনফিগ ফাইল তৈরি করতে:
+```bash
+polygon-edge server export --type yaml
+```
+বা শুধু
+```bash
+polygon-edge server export
+```
+`default-config.yaml` নামে কনফিগ ফাইলটি সেই ডিরেক্টরিতে তৈরি হবে যেখান থেকে এই কমান্ড রান করা হয়েছে।
+
+ফাইলের উদাহরণ:
+```yaml
+chain_config: ./genesis.json
+secrets_config: ""
+data_dir: ""
+block_gas_target: "0x0"
+grpc_addr: ""
+jsonrpc_addr: ""
+telemetry:
+ prometheus_addr: ""
+network:
+ no_discover: false
+ libp2p_addr: 127.0.0.1:1478
+ nat_addr: ""
+ dns_addr: ""
+ max_peers: -1
+ max_outbound_peers: -1
+ max_inbound_peers: -1
+seal: true
+tx_pool:
+ price_limit: 0
+ max_slots: 4096
+log_level: INFO
+restore_file: ""
+block_time_s: 2
+headers:
+ access_control_allow_origins:
+ - '*'
+log_to: ""
+```
+
+### JSON {#json}
+`json` ফরম্যাটে কনফিগ ফাইল তৈরি করতে:
+```bash
+polygon-edge server export --type json
+```
+`default-config.json` নামে কনফিগ ফাইলটি সেই ডিরেক্টরিতে তৈরি হবে যেখান থেকে এই কমান্ড রান করা হয়েছে।
+
+ফাইলের উদাহরণ:
+
+```json
+{
+ "chain_config": "./genesis.json",
+ "secrets_config": "",
+ "data_dir": "",
+ "block_gas_target": "0x0",
+ "grpc_addr": "",
+ "jsonrpc_addr": "",
+ "telemetry": {
+ "prometheus_addr": ""
+ },
+ "network": {
+ "no_discover": false,
+ "libp2p_addr": "127.0.0.1:1478",
+ "nat_addr": "",
+ "dns_addr": "",
+ "max_peers": -1,
+ "max_outbound_peers": -1,
+ "max_inbound_peers": -1
+ },
+ "seal": true,
+ "tx_pool": {
+ "price_limit": 0,
+ "max_slots": 4096
+ },
+ "log_level": "INFO",
+ "restore_file": "",
+ "block_time_s": 2,
+ "headers": {
+ "access_control_allow_origins": [
+ "*"
+ ]
+ },
+ "log_to": ""
+}
+```
+
+এই প্যারামিটারগুলো কীভাবে ব্যবহার করতে হয় তা জানতে [CLI কমান্ড](/docs/edge/get-started/cli-commands) বিভাগটি দেখুন।
+
+### Typescript schema {#typescript-schema}
+
+কনফিগারেশন ফাইলের জন্য নিম্নোক্তটি হলো নমুনা ফরম্যাট। বৈশিষ্ট্যের ধরণ (`string`,,`number`) `boolean` প্রকাশ করার জন্য এটি TypeScript-এ লেখা আছে, এটি থেকে আপনি আপনার কনফিগারেশন পেতে পারেন। এটি উল্লেখযোগ্য যে, সকল বৈশিষ্ট্য যে ঐচ্ছিক তা প্রকাশ করতে `type-fest`-এর `PartialDeep` টাইপ ব্যবহার করা হয়।
+
+```typescript
+import { PartialDeep } from 'type-fest';
+
+type ServerConfig = PartialDeep<{
+ chain_config: string; //
+ secrets_config: string; //
+ data_dir: string; //
+ block_gas_target: string; //
+ grpc_addr: string; //
+ jsonrpc_addr: string; //
+ telemetry: {
+ prometheus_addr: string; //
+ };
+ network: {
+ no_discover: boolean; // ,
+ libp2p_addr: string; // ,
+ nat_addr: string; // ,
+ dns_addr: string; // ,
+ max_peers: number; // ,
+ max_inbound_peers: number; // ,
+ max_outbound_peers: number; //
+ };
+ seal: boolean; //
+ txpool: {
+ price_limit: number; //
+ max_slots: number; //
+ };
+ log_level: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'DPANIC' | 'PANIC' | 'FATAL'; //
+ restore_file: string; //
+ block_time_s: number; //
+ headers: Record;
+ log_to: string; //
+}>
+```
+
diff --git a/archive/edge/bn-edge/configuration/secret-managers/set-up-aws-ssm.md b/archive/edge/bn-edge/configuration/secret-managers/set-up-aws-ssm.md
new file mode 100644
index 0000000000..09a6f83775
--- /dev/null
+++ b/archive/edge/bn-edge/configuration/secret-managers/set-up-aws-ssm.md
@@ -0,0 +1,135 @@
+---
+id: set-up-aws-ssm
+title: AWS SSM (সিস্টেম ম্যানেজার) সেট আপ করুন
+description: "Polygon Edge এর জন্য AWS SSM (সিস্টেম ম্যানেজার) সেট আপ করুন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - aws
+ - ssm
+ - secrets
+ - manager
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+বর্তমানে, Polygon Edge 2টি প্রধান রানটাইমকে সিক্রেট রাখা নিয়ে চিন্তিত:
+* নোডটি যদি একটি যাচাইকারী হয়, তাহলে সেটি **যাচাইকারীর প্রাইভেট কী** ব্যবহার করে
+* অন্যান্য পিয়ারদের সাথে অংশগ্রহন এবং যোগাযোগ করার জন্য libp2p **নেটওয়ার্কিং প্রাইভেট কী** ব্যবহার করে
+
+অতিরিক্ত তথ্যের জন্য, [প্রাইভেট কী পরিচালনার](/docs/edge/configuration/manage-private-keys) নির্দেশিকাটি পড়ুন
+
+Polygon Edge-এর মডিউলগুলোর জানার **দরকার নেই কীভাবে তথ্য গোপন রাখতে হয়**। তাছাড়া, কোনো সিক্রেটকে কোনো দূরবর্তী সার্ভার নাকি
+স্থানীয়ভাবে নোডের ডিস্কে সংরক্ষণ করা হচ্ছে তা নিয়ে মডিউলকে চিন্তা করতে হবে না।
+
+সিক্রেট-কিপিং সম্পর্কে একটি মডিউলের যা জানার দরকার তা হল **কীভাবে সিক্রেট ব্যবহার করতে হয় তা জানা**, **কোন সিক্রেট পেতে হবে
+বা সংরক্ষণ করতে হবে তা জানা**। এই ক্রিয়াকলাপগুলির সূক্ষ্ম ইমপ্লিমেন্টেশনের বিস্তারিত `SecretsManager`-এর উপর অর্পণ করা হয়, যা অবশ্যই একটি অ্যাবস্ট্র্যাকশন।
+
+Polygon Edge শুরু করা নোড অপারেটরটি এখন সে যেই সিক্রেট ম্যানেজার ব্যবহার করতে চায় তা নির্দিষ্ট করতে পারে এবং
+সঠিক সিক্রেট ম্যানেজারটিকে ইনস্ট্যানশিয়েট করার সাথে সাথেই মডিউলগুলি উল্লিখিত ইন্টারফেসের মাধ্যমে সিক্রেট নিয়ে কাজ করে -
+সেটি একটি ডিস্ক নাকি সার্ভারে সংরক্ষণ করা হয়েছে সে ব্যাপারে কোনো চিন্তা ছাড়াই।
+
+এই নিবন্ধটিতে Polygon Edge-কে
+[AWS সিস্টেম ম্যানেজার প্যারামিটার স্টোর](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) দিয়ে সুন্দরভাবে পরিচালনা করার প্রয়োজনীয় পদক্ষেপসমূহের বিস্তারিত আলোচনা করা হয়েছে।
+
+:::info পূর্ববর্তী নির্দেশিকা
+
+আমরা আপনাকে **পরামর্শ দিচ্ছি** যে আপনি [**লোকাল সেটআপ**](/docs/edge/get-started/set-up-ibft-locally)
+এবং [**ক্লাউড সেটআপ**](/docs/edge/get-started/set-up-ibft-on-the-cloud) নিবন্ধগুলো আগে পড়ে নিবেন।
+
+:::
+
+
+## পূর্বশর্ত {#prerequisites}
+### IAM পলিসি {#iam-policy}
+ব্যবহারকারীকে একটি IAM পলিসি তৈরি করতে হবে যা AWS সিস্টেম ম্যানেজার প্যারামিটার স্টোরকে রিড/রাইট কার্যাবলী করতে দিবে। IAM পলিসি সফলভাবে তৈরি করার পরে, ব্যবহারকারীকে এটিকে EC2 ইনস্ট্যান্সে যোগ করতে হবে যা Polygon Edge সার্ভারটি চালাচ্ছে। IAM পলিসিকে দেখতে কিছুটা এরকম হবে:
+```json
+{
+ "Version": "2012-10-17",
+ "Statement" : [
+ {
+ "Effect" : "Allow",
+ "Action" : [
+ "ssm:PutParameter",
+ "ssm:DeleteParameter",
+ "ssm:GetParameter"
+ ],
+ "Resource" : [
+ "arn:aws:ssm:::parameter*"
+ ]
+ }
+ ]
+}
+```
+AWS SSM IAM রোল সম্পর্কে আরও তথ্য আপনি [AWS docs](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html) এ খুঁজে পাবেন।
+
+এগিয়ে যাওয়ার আগে প্রয়োজনীয় তথ্য:
+* **রিজিওন** (সিস্টেম ম্যানেজার এবং নোড যেই অঞ্চলে থাকে)
+* **প্যারামিটার পাথ** (আর্বিট্রারি পাথ যেখানে রাখা হবে, উদাহরণস্বরূপ`/polygon-edge/nodes`)
+
+## ধাপ 1 - সিক্রেট ম্যানেজার কনফিগারেশন তৈরি করুন {#step-1-generate-the-secrets-manager-configuration}
+
+Polygon Edge-কে AWS SSM-এর সাথে অবিচ্ছিন্ন যোগাযোগ রাখতে এটিকে ইতোমধ্যে জেনারেট করা একটি কনফিগ ফাইল পার্স করতে হবে
+যা AWS SSM-এ সিক্রেট স্টোরেজের জন্য প্রয়োজনীয় সকল তথ্য রাখে।
+
+কনফিগারেশন তৈরি করতে, নিম্নলিখিত কমান্ড চালান:
+
+```bash
+polygon-edge secrets generate --type aws-ssm --dir --name --extra region=,ssm-parameter-path=
+```
+
+বর্তমান প্যারামিটার:
+* `PATH` হচ্ছে সেই পাথ যেখানে কনফিগারেশন ফাইল এক্সপোর্ট করতে হবে। ডিফল্ট `./secretsManagerConfig.json`
+* `NODE_NAME` হচ্ছে বর্তমান নোডের নাম যার জন্য AWS SSM কনফিগারেশন সেট আপ করা হচ্ছে। এটি একটি আর্বিট্রারি মান হতে পারে। ডিফল্ট `polygon-edge-node`
+* `REGION` এমন একটি রিজিওন যেখানে AWS SSM থাকে। এটিকে AWS SSM ব্যবহার করা নোডের মতো একই রিজিওনের হতে হবে।
+* `SSM_PARAM_PATH` হচ্ছে সেই পাথের নাম যেখানে সিক্রেট সংরক্ষণ করা হবে। উদাহরণস্বরূপ, যদি `--name node1` এবং `ssm-parameter-path=/polygon-edge/nodes`
+নির্দিষ্ট করা হয়, তাহলে সিক্রেট সংরক্ষণ করা হবে `/polygon-edge/nodes/node1/` নামে
+
+:::caution নোডের নাম
+নোডের নাম নির্দিষ্ট করার সময় সতর্ক থাকুন।
+
+Polygon Edge নির্দিষ্ট নোড নাম ব্যবহার করে তাদের জেনারেট করা সিক্রেটের ট্র্যাক রাখে এবং তা AWS SSM-এ ব্যবহার করে। একটি বিদ্যমান নোডের নাম নির্দিষ্ট করলে AWS SSM-এ সিক্রেট রাইট করার ক্ষেত্রে ব্যর্থতা ঘটতে পারে।
+
+নিম্নলিখিত বেস পাথে সিক্রেট সংরক্ষণ করা হয়: `SSM_PARAM_PATH/NODE_NAME`
+
+:::
+
+## ধাপ 2 - কনফিগারেশন ব্যবহার করে সিক্রেট কী চালু করুন {#step-2-initialize-secret-keys-using-the-configuration}
+
+এখন যেহেতু কনফিগারেশন ফাইল উপস্থিত আছে, আমরা ধাপ 1-এ সেটআপ করা কনফিগারেশন ফাইলটি দিয়ে প্রয়োজনীয় সিক্রেট কী
+চালু করতে পারি `--config` ব্যবহার করে:
+
+```bash
+polygon-edge secrets init --config
+```
+
+`PATH` প্যারামটি হল ধাপ 1-এ আগেই তৈরি করা সিক্রেট ম্যানেজার প্যারামের অবস্থান।
+
+:::info IAM পলিসি
+
+রিড/রাইট অপারেশনের অনুমতি দেয়া IAM পলিসিটি সঠিকভাবে কনফিগার করা না হলে এবং/অথবা এই কমান্ড চালিয়ে EC2 ইনস্ট্যান্সে সংযুক্ত না করলে এই ধাপটি ব্যর্থ হবে।
+
+:::
+
+## ধাপ 3 - জেনেসিস ফাইল তৈরি করুন {#step-3-generate-the-genesis-file}
+
+জেনেসিস ফাইল [**লোকাল সেটআপ**](/docs/edge/get-started/set-up-ibft-locally)
+এবং [**ক্লাউড সেটআপ**](/docs/edge/get-started/set-up-ibft-on-the-cloud) নির্দেশিকার মত একই পদ্ধতিতে তৈরি হবে বলে আশা করা হচ্ছে, তবে কিছু ছোট-খাট পরিবর্তন থাকতে পারে।
+
+যেহেতু লোকাল ফাইল সিস্টেমের পরিবর্তে AWS SSM ব্যবহার করা হচ্ছে, তাই যাচাইকারীর ঠিকানা `--ibft-validator` ফ্ল্যাগ দিয়ে যোগ করা উচিত:
+```bash
+polygon-edge genesis --ibft-validator ...
+```
+
+## ধাপ 4 - Polygon Edge ক্লায়েন্ট শুরু করুন {#step-4-start-the-polygon-edge-client}
+
+এখন যেহেতু কী সেটআপ করা হয়ে গেছে এবং জেনেসিস ফাইল জেনারেট করা হয়েছে, তাই এই প্রসেসের চূড়ান্ত ধাপ হবে
+`server` কমান্ড দিয়ে Polygon Edge শুরু করা।
+
+`server` কমান্ডটি পূর্বে উল্লিখিত নির্দেশিকাগুলোর মতো একই পদ্ধতিতে ব্যবহার করা হয়েছে, কিছু ছোট-খাট সংযোজন সহ - `--secrets-config` ফ্ল্যাগ:
+```bash
+polygon-edge server --secrets-config ...
+```
+
+`PATH` প্যারামটি হচ্ছে ধাপ 1-এ আগেই তৈরি করা সিক্রেট ম্যানেজার প্যারামের অবস্থান।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/configuration/secret-managers/set-up-gcp-secrets-manager.md b/archive/edge/bn-edge/configuration/secret-managers/set-up-gcp-secrets-manager.md
new file mode 100644
index 0000000000..c6f3966ae2
--- /dev/null
+++ b/archive/edge/bn-edge/configuration/secret-managers/set-up-gcp-secrets-manager.md
@@ -0,0 +1,121 @@
+---
+id: set-up-gcp-secrets-manager
+title: GCP সিক্রেট ম্যানেজার সেটআপ করুন
+description: "Polygon Edge-এর জন্য GCP সিক্রেট ম্যানেজার সেটআপ করুন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - gcp
+ - secrets
+ - manager
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+বর্তমানে, Polygon Edge 2টি প্রধান রানটাইমকে সিক্রেট রাখা নিয়ে চিন্তিত:
+* নোডটি যদি একটি যাচাইকারী হয়, তাহলে সেটি **যাচাইকারীর প্রাইভেট কী** ব্যবহার করে
+* অন্যান্য পিয়ারদের সাথে অংশগ্রহন এবং যোগাযোগ করার জন্য libp2p **নেটওয়ার্কিং প্রাইভেট কী** ব্যবহার করে
+
+অতিরিক্ত তথ্যের জন্য, [প্রাইভেট কী পরিচালনার](/docs/edge/configuration/manage-private-keys) নির্দেশিকাটি পড়ুন
+
+Polygon Edge-এর মডিউলগুলোর জানার **দরকার নেই কীভাবে তথ্য গোপন রাখতে হয়**। তাছাড়া, কোনো সিক্রেটকে কোনো দূরবর্তী সার্ভার নাকি
+স্থানীয়ভাবে নোডের ডিস্কে সংরক্ষণ করা হচ্ছে তা নিয়ে মডিউলকে চিন্তা করতে হবে না।
+
+সিক্রেট-কিপিং সম্পর্কে একটি মডিউলের যা জানার দরকার তা হল **কীভাবে সিক্রেট ব্যবহার করতে হয় তা জানা**, **কোন সিক্রেট পেতে হবে
+বা সংরক্ষণ করতে হবে তা জানা**। এই ক্রিয়াকলাপগুলির সূক্ষ্ম ইমপ্লিমেন্টেশনের বিস্তারিত `SecretsManager`-এর উপর অর্পণ করা হয়, যা অবশ্যই একটি অ্যাবস্ট্র্যাকশন।
+
+Polygon Edge শুরু করা নোড অপারেটরটি এখন সে যেই সিক্রেট ম্যানেজার ব্যবহার করতে চায় তা নির্দিষ্ট করতে পারে এবং
+সঠিক সিক্রেট ম্যানেজারটিকে ইনস্ট্যানশিয়েট করার সাথে সাথেই মডিউলগুলি উল্লিখিত ইন্টারফেসের মাধ্যমে সিক্রেট নিয়ে কাজ করে -
+সেটি একটি ডিস্ক নাকি সার্ভারে সংরক্ষণ করা হয়েছে সে ব্যাপারে কোনো চিন্তা ছাড়াই।
+
+এই নিবন্ধটিতে [GCP সিক্রেট ম্যানেজার](https://cloud.google.com/secret-manager) দিয়ে Polygon Edge পরিচালনা করার প্রয়োজনীয় পদক্ষেপগুলোর বিস্তারিত বর্ণনা করা হয়েছে।
+
+:::info পূর্ববর্তী নির্দেশিকা
+
+আমরা আপনাকে **পরামর্শ দিচ্ছি** যে আপনি [**লোকাল সেটআপ**](/docs/edge/get-started/set-up-ibft-locally)
+এবং [**ক্লাউড সেটআপ**](/docs/edge/get-started/set-up-ibft-on-the-cloud) নিবন্ধগুলো আগে পড়ে নিবেন।
+
+:::
+
+
+## পূর্বশর্ত {#prerequisites}
+### GCP বিলিং অ্যাকাউন্ট {#gcp-billing-account}
+GCP সিক্রেট ম্যানেজার ব্যবহার করতে ব্যবহারকারীকে GCP পোর্টালে [বিলিং অ্যাকাউন্ট](https://console.cloud.google.com/) সক্ষম করতে হবে।
+GCP প্ল্যাটফর্মে নতুন Google অ্যাকাউন্টকে বিনামূল্যের ট্রায়ালের রাজা হিসাবে শুরু করতে কিছু ফান্ড প্রদান করা হয়।
+আরও তথ্য [GCP ডক্স](https://cloud.google.com/free)
+
+### সিক্রেট ম্যানেজার API {#secrets-manager-api}
+ব্যবহারকারী GCP সিক্রেট ম্যানেজার API ব্যবহার করার পূর্বে এটি সক্ষম করে নিতে হবে।
+এই কাজটি [সিক্রেট ম্যানেজার API পোর্টাল](https://console.cloud.google.com/apis/library/secretmanager.googleapis.com) ব্যবহার করে করা যাবে।
+আরও তথ্য: [সিক্রেট ম্যানেজার কনফিগার করা](https://cloud.google.com/secret-manager/docs/configuring-secret-manager)
+
+### GCP ক্রেডেনশিয়াল {#gcp-credentials}
+সবশেষে, ব্যবহারকারীকে নতুন ক্রেডেনশিয়াল তৈরি করতে হবে যা প্রমাণীকরণের জন্য ব্যবহার করা হবে।
+এই কাজটি [এখানে](https://cloud.google.com/secret-manager/docs/reference/libraries) পোস্ট করা নির্দেশাবলী অনুসরণ করে করা যেতে পারে।
+ক্রেডেনশিয়াল ধারণকারী json ফাইলটি GCP সিক্রেট ম্যানেজার ব্যবহারের প্রয়োজন রয়েছে এমন সব নোডে ট্রান্সফার করতে হবে।
+
+এগিয়ে যাওয়ার আগে প্রয়োজনীয় তথ্য:
+* **প্রজেক্ট আইডি** (GCP প্ল্যাটফর্মে সংজ্ঞায়িত প্রজেক্ট আইডি)
+* **ক্রেডেনশিয়াল ফাইলের অবস্থান** (ক্রেডেনশিয়াল ধারণকারী json ফাইলের পাথ)
+
+## ধাপ 1 - সিক্রেট ম্যানেজার কনফিগারেশন তৈরি করুন {#step-1-generate-the-secrets-manager-configuration}
+
+Polygon Edge-কে GCP SM-এর সাথে অবিচ্ছিন্ন যোগাযোগ রাখতে এটিকে ইতোমধ্যে জেনারেট করা একটি কনফিগ ফাইল পার্স করতে হবে
+যা GCP SM-এ সিক্রেট স্টোরেজের জন্য প্রয়োজনীয় সকল তথ্য রাখে।
+
+কনফিগারেশন তৈরি করতে, নিম্নলিখিত কমান্ড চালান:
+
+```bash
+polygon-edge secrets generate --type gcp-ssm --dir --name --extra project-id=,gcp-ssm-cred=
+```
+
+বর্তমান প্যারামিটার:
+* `PATH` হচ্ছে সেই পাথ যেখানে কনফিগারেশন ফাইল এক্সপোর্ট করতে হবে। ডিফল্ট `./secretsManagerConfig.json`
+* `NODE_NAME` হচ্ছে বর্তমান নোডের নাম যার জন্য GCP SM কনফিগারেশন সেট আপ করা হচ্ছে। এটি একটি আর্বিট্রারি মান হতে পারে। ডিফল্ট `polygon-edge-node`
+* `PROJECT_ID` হচ্ছে অ্যাকাউন্ট সেটআপ এবং সিক্রেট ম্যানেজার API অ্যাক্টিভেশনের সময় ব্যবহারকারী দ্বারা GCP কনসোলে সংজ্ঞায়িত করা প্রজেক্ট আইডি।
+* `GCP_CREDS_FILE` হচ্ছে ক্রেডেনশিয়াল ধারণকারী json ফাইলের পাথ যা সিক্রেট ম্যানেজারে রিড/রাইট অ্যাক্সেস প্রদান করবে।
+
+:::caution নোডের নাম
+
+নোডের নাম নির্দিষ্ট করার সময় সতর্ক থাকুন।
+
+Polygon Edge নির্দিষ্ট নোড নাম ব্যবহার করে তাদের জেনারেট করা সিক্রেটের ট্র্যাক রাখে এবং তা GCP SM-এ ব্যবহার করে।
+একটি বিদ্যমান নোডের নাম নির্দিষ্ট করা হলে GCP SM সিক্রেট রাইট করতে ব্যর্থ হতে পারে।
+
+নিম্নলিখিত বেস পাথে সিক্রেট সংরক্ষণ করা হয়: `projects/PROJECT_ID/NODE_NAME`
+
+:::
+
+## ধাপ 2 - কনফিগারেশন ব্যবহার করে সিক্রেট কী চালু করুন {#step-2-initialize-secret-keys-using-the-configuration}
+
+এখন যেহেতু কনফিগারেশন ফাইল উপস্থিত আছে, আমরা ধাপ 1-এ সেটআপ করা কনফিগারেশন ফাইলটি দিয়ে প্রয়োজনীয় সিক্রেট কী
+চালু করতে পারি `--config` ব্যবহার করে:
+
+```bash
+polygon-edge secrets init --config
+```
+
+`PATH` প্যারামটি হচ্ছে ধাপ 1-এ আগেই তৈরি করা সিক্রেট ম্যানেজার প্যারামের অবস্থান।
+
+## ধাপ 3 - জেনেসিস ফাইল তৈরি করুন {#step-3-generate-the-genesis-file}
+
+জেনেসিস ফাইল [**লোকাল সেটআপ**](/docs/edge/get-started/set-up-ibft-locally)
+এবং [**ক্লাউড সেটআপ**](/docs/edge/get-started/set-up-ibft-on-the-cloud) নির্দেশিকার মত একই পদ্ধতিতে তৈরি হবে বলে আশা করা হচ্ছে, তবে কিছু ছোট-খাট পরিবর্তন থাকতে পারে।
+
+যেহেতু লোকাল ফাইল সিস্টেমের পরিবর্তে GCP SM ব্যবহার করা হচ্ছে, তাই যাচাইকারীর ঠিকানা `--ibft-validator` ফ্ল্যাগ দিয়ে যোগ করা উচিত:
+```bash
+polygon-edge genesis --ibft-validator ...
+```
+
+## ধাপ 4 - Polygon Edge ক্লায়েন্ট শুরু করুন {#step-4-start-the-polygon-edge-client}
+
+এখন যেহেতু কী সেটআপ করা হয়ে গেছে এবং জেনেসিস ফাইল জেনারেট করা হয়েছে, তাই এই প্রসেসের চূড়ান্ত ধাপ হবে
+`server` কমান্ড দিয়ে Polygon Edge শুরু করা।
+
+`server` কমান্ডটি পূর্বে উল্লিখিত নির্দেশিকাগুলোর মতো একই পদ্ধতিতে ব্যবহার করা হয়েছে, কিছু ছোট-খাট সংযোজন সহ - `--secrets-config` ফ্ল্যাগ:
+```bash
+polygon-edge server --secrets-config ...
+```
+
+`PATH` প্যারামটি হচ্ছে ধাপ 1-এ আগেই তৈরি করা সিক্রেট ম্যানেজার প্যারামের অবস্থান।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/configuration/secret-managers/set-up-hashicorp-vault.md b/archive/edge/bn-edge/configuration/secret-managers/set-up-hashicorp-vault.md
new file mode 100644
index 0000000000..50b0d34fff
--- /dev/null
+++ b/archive/edge/bn-edge/configuration/secret-managers/set-up-hashicorp-vault.md
@@ -0,0 +1,118 @@
+---
+id: set-up-hashicorp-vault
+title: Hashicorp ভল্ট সেটআপ করুন
+description: "Polygon Edge-এর জন্য Hashicorp ভল্ট সেটআপ করুন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - hashicorp
+ - vault
+ - secrets
+ - manager
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+বর্তমানে, Polygon Edge 2টি প্রধান রানটাইমকে সিক্রেট রাখা নিয়ে চিন্তিত:
+* নোডটি যদি একটি যাচাইকারী হয়, তাহলে সেটি **যাচাইকারীর প্রাইভেট কী** ব্যবহার করে
+* অন্যান্য পিয়ারদের সাথে অংশগ্রহন এবং যোগাযোগ করার জন্য libp2p **নেটওয়ার্কিং প্রাইভেট কী** ব্যবহার করে
+
+:::warning
+
+যাচাইকারীর প্রাইভেট কী প্রতিটি যাচাইকারী নোডের জন্য ইউনিক। একই কী সব যাচাইকারীদের মধ্যে ভাগ করা উচিত না, কারণ এটি আপনার চেইনে নিরাপত্তা জনিত সমস্যা সৃষ্টি করতে পারে।
+
+:::
+
+অতিরিক্ত তথ্যের জন্য, [প্রাইভেট কী পরিচালনার](/docs/edge/configuration/manage-private-keys) নির্দেশিকাটি পড়ুন
+
+Polygon Edge-এর মডিউলগুলোর জানার **দরকার নেই কীভাবে তথ্য গোপন রাখতে হয়**। তাছাড়া, কোনো সিক্রেটকে কোনো দূরবর্তী সার্ভার নাকি
+স্থানীয়ভাবে নোডের ডিস্কে সংরক্ষণ করা হচ্ছে তা নিয়ে মডিউলকে চিন্তা করতে হবে না।
+
+সিক্রেট-কিপিং সম্পর্কে একটি মডিউলের যা জানার দরকার তা হল **কীভাবে সিক্রেট ব্যবহার করতে হয় তা জানা**, **কোন সিক্রেট পেতে হবে
+বা সংরক্ষণ করতে হবে তা জানা**। এই ক্রিয়াকলাপগুলির সূক্ষ্ম ইমপ্লিমেন্টেশনের বিস্তারিত `SecretsManager`-এর উপর অর্পণ করা হয়, যা অবশ্যই একটি অ্যাবস্ট্র্যাকশন।
+
+Polygon Edge শুরু করা নোড অপারেটরটি এখন সে যেই সিক্রেট ম্যানেজার ব্যবহার করতে চায় তা নির্দিষ্ট করতে পারে এবং
+সঠিক সিক্রেট ম্যানেজারটিকে ইনস্ট্যানশিয়েট করার সাথে সাথেই মডিউলগুলি উল্লিখিত ইন্টারফেসের মাধ্যমে সিক্রেট নিয়ে কাজ করে -
+সেটি একটি ডিস্ক নাকি সার্ভারে সংরক্ষণ করা হয়েছে সে ব্যাপারে কোনো চিন্তা ছাড়াই।
+
+এই নিবন্ধটিতে [Hashicorp ভল্ট দিয়ে](https://www.vaultproject.io/) Polygon Edge পরিচালনা করার প্রয়োজনীয় পদক্ষেপগুলোর বিস্তারিত বর্ণনা করা হয়েছে।
+
+:::info পূর্ববর্তী নির্দেশিকা
+
+আমরা আপনাকে **পরামর্শ দিচ্ছি** যে আপনি [**লোকাল সেটআপ**](/docs/edge/get-started/set-up-ibft-locally)
+এবং [**ক্লাউড সেটআপ**](/docs/edge/get-started/set-up-ibft-on-the-cloud) নিবন্ধগুলো আগে পড়ে নিবেন।
+
+:::
+
+
+## পূর্বশর্ত {#prerequisites}
+
+এই নিবন্ধটি অনুমান করে যে Hashicorp Vault সার্ভারের একটি কার্যকরী ইনস্ট্যান্স ইতোমধ্যে **সেট আপ করা হয়েছে**।
+
+তাছাড়া, Polygon Edge-এর জন্য ব্যবহৃত Hashicorp Vault সার্ভারের **KV স্টোরেজ সক্ষম** থাকাটা খুবই গুরুত্বপূর্ণ।
+
+এগিয়ে যাওয়ার আগে প্রয়োজনীয় তথ্য:
+* **সার্ভার URL** (Hashicorp Vault সার্ভারের API URL)
+* **টোকেন** (KV স্টোরেজ ইঞ্জিনে অ্যাক্সেসের জন্য ব্যবহৃত অ্যাক্সেস টোকেন)
+
+## ধাপ 1 - সিক্রেট ম্যানেজার কনফিগারেশন তৈরি করুন {#step-1-generate-the-secrets-manager-configuration}
+
+Polygon Edge-কে ভল্ট সার্ভারের সাথে অবিচ্ছিন্ন যোগাযোগ রাখতে এটিকে ইতোমধ্যে জেনারেট করা একটি কনফিগ ফাইল পার্স করতে হবে
+যা ভল্টে সিক্রেট স্টোরেজের জন্য প্রয়োজনীয় সকল তথ্য রাখে।
+
+কনফিগারেশন তৈরি করতে, নিম্নলিখিত কমান্ড চালান:
+
+```bash
+polygon-edge secrets generate --dir --token --server-url --name
+```
+
+বর্তমান প্যারামিটার:
+* `PATH` হচ্ছে সেই পাথ যেখানে কনফিগারেশন ফাইল এক্সপোর্ট করতে হবে। ডিফল্ট `./secretsManagerConfig.json`
+* `TOKEN` হচ্ছে [পূর্বশর্ত বিভাগে](/docs/edge/configuration/secret-managers/set-up-hashicorp-vault#prerequisites) পূর্বে উল্লিখিত অ্যাক্সেস টোকেন
+* `SERVER_URL` হচ্ছে ভল্ট সার্ভারের API URL, এটিও [পূর্বশর্ত বিভাগে](/docs/edge/configuration/secret-managers/set-up-hashicorp-vault#prerequisites) উল্লেখ করা হয়েছে।
+* `NODE_NAME` হচ্ছে বর্তমান নোডের নাম যার জন্য Vault কনফিগারেশন সেট আপ করা হচ্ছে। এটি একটি আর্বিট্রারি মান হতে পারে। ডিফল্ট `polygon-edge-node`
+
+:::caution নোডের নাম
+
+নোডের নাম নির্দিষ্ট করার সময় সতর্ক থাকুন।
+
+Polygon Edge নির্দিষ্ট নোড নাম ব্যবহার করে তাদের জেনারেট করা সিক্রেটের ট্র্যাক রাখে এবং তা ভল্ট ইনস্ট্যান্সে ব্যবহার করে।
+একটি বিদ্যমান নোড নাম নির্দিষ্ট করা হলে ভল্ট সার্ভারে তথ্য ওভাররিটেন সমস্যা দেখা দিতে পারে।
+
+নিম্নলিখিত বেস পাথে সিক্রেট সংরক্ষণ করা হয়: `secrets/node_name`
+
+:::
+
+## ধাপ 2 - কনফিগারেশন ব্যবহার করে সিক্রেট কী চালু করুন {#step-2-initialize-secret-keys-using-the-configuration}
+
+এখন যেহেতু কনফিগারেশন ফাইল উপস্থিত আছে, আমরা ধাপ 1-এ সেটআপ করা কনফিগারেশন ফাইলটি দিয়ে প্রয়োজনীয় সিক্রেট কী
+চালু করতে পারি `--config` ব্যবহার করে:
+
+```bash
+polygon-edge secrets init --config
+```
+
+`PATH` প্যারামটি হচ্ছে ধাপ 1-এ আগেই তৈরি করা সিক্রেট ম্যানেজার প্যারামের অবস্থান।
+
+## ধাপ 3 - জেনেসিস ফাইল তৈরি করুন {#step-3-generate-the-genesis-file}
+
+জেনেসিস ফাইল [**লোকাল সেটআপ**](/docs/edge/get-started/set-up-ibft-locally)
+এবং [**ক্লাউড সেটআপ**](/docs/edge/get-started/set-up-ibft-on-the-cloud) নির্দেশিকার মত একই পদ্ধতিতে তৈরি হবে বলে আশা করা হচ্ছে, তবে কিছু ছোট-খাট পরিবর্তন থাকতে পারে।
+
+যেহেতু লোকাল ফাইল সিস্টেমের পরিবর্তে Hashicorp ভল্ট ব্যবহার করা হচ্ছে, তাই যাচাইকারীর ঠিকানা `--ibft-validator` ফ্ল্যাগ দিয়ে যোগ করা উচিত:
+```bash
+polygon-edge genesis --ibft-validator ...
+```
+
+## ধাপ 4 - Polygon Edge ক্লায়েন্ট শুরু করুন {#step-4-start-the-polygon-edge-client}
+
+এখন যেহেতু কী সেটআপ করা হয়ে গেছে এবং জেনেসিস ফাইল জেনারেট করা হয়েছে, তাই এই প্রসেসের চূড়ান্ত ধাপ হবে
+`server` কমান্ড দিয়ে Polygon Edge শুরু করা।
+
+`server` কমান্ডটি পূর্বে উল্লিখিত নির্দেশিকাগুলোর মতো একই পদ্ধতিতে ব্যবহার করা হয়েছে, কিছু ছোট-খাট সংযোজন সহ - `--secrets-config` ফ্ল্যাগ:
+```bash
+polygon-edge server --secrets-config ...
+```
+
+`PATH` প্যারামটি হচ্ছে ধাপ 1-এ আগেই তৈরি করা সিক্রেট ম্যানেজার প্যারামের অবস্থান।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/consensus/bls.md b/archive/edge/bn-edge/consensus/bls.md
new file mode 100644
index 0000000000..e68b70a289
--- /dev/null
+++ b/archive/edge/bn-edge/consensus/bls.md
@@ -0,0 +1,143 @@
+---
+id: bls
+title: BLS
+description: "BLS মোড সম্পর্কিত ব্যাখ্যা এবং নির্দেশাবলী।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - bls
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+BLS (BLS) নামেও পরিচিত BLS হল একটি ক্রিপ্টোগ্রাফিক স্বাক্ষর স্কিম যা একটি ব্যবহারকারী তা যাচাই করতে পারবেন যে একটি signer সত্যি signer । এটি একটি স্বাক্ষর স্কিম যা একাধিক স্বাক্ষর aggregate aggregate করতে পারে। Polygon Edge-এ IBFT কনসেনসাস মোডে আরো ভালো নিরাপত্তা প্রদান করতে ডিফল্টরূপে BLS ব্যবহার করা হয়। BLS একাধিক স্বাক্ষরকে একটি একক বাইট অ্যারেতে একত্রিত করতে পারে এবং ফলশ্রুতিতে ব্লকের হেডার সাইজ ছোট করতে পারে। প্রতিটি চেইন BLS ব্যবহার করবে না কি করবে না তা নির্ণয় করতে পারে। BLS মোড সক্রিয় থাকা বা না থাকা নির্বিশেষে ECDSA কী ব্যবহার করা হয়।
+
+## ভিডিও প্রেজেন্টেশন {#video-presentation}
+
+[](https://www.youtube.com/watch?v=HbUmZpALlqo)
+
+## BLS ব্যবহার করে একটি নতুন চেইন কীভাবে সেটআপ করবেন {#how-to-setup-a-new-chain-using-bls}
+
+আরো বিস্তারিতভাবে সেটআপের নির্দেশাবলী পেতে [লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally)/ [ক্লাউড সেটআপ](/docs/edge/get-started/set-up-ibft-on-the-cloud) বিভাগসমূহ পড়ুন।
+
+## একটি বিদ্যমান ECDSA PoA চেইন থেকে BLS PoA চেইনে কীভাবে মাইগ্রেট করবেন {#how-to-migrate-from-an-existing-ecdsa-poa-chain-to-bls-poa-chain}
+
+একটি বিদ্যমান PoA চেইনে BLS মোড কীভাবে ব্যবহার করবেন তা এই বিভাগে বর্ণনা করা হয়েছে।
+একটি PoA চেইনে BLS এনাবেল করতে নিম্নলিখিত পদক্ষেপগুলো আবশ্যকীয়।
+
+1. সকল নোড বন্ধ করুন
+2. যাচাইকারীদের জন্য BLS কী তৈরি করুন
+3. genesis.json এ একটি ফর্ক সেটিং যোগ করুন
+4. সকল নোড পুনরায় চালু করুন
+
+### 1. সকল নোড বন্ধ করুন {#1-stop-all-nodes}
+
+Ctrl + c (Control + C) চেপে যাচাইকারীদের সমস্ত প্রক্রিয়া বন্ধ করুন। অনুগ্রহ করে সর্বশেষ ব্লক উচ্চতা (ব্লক কমিটেড লগের সর্বোচ্চ ক্রম নম্বর) মনে রাখুন।
+
+### 2. BLS কী তৈরি করুন {#2-generate-the-bls-key}
+
+`secrets init` এর সাথে `--bls` দিয়ে একটি BLS কী তৈরি হয়। বিদ্যমান ECDSA ও নেটওয়ার্ক কী রাখতে এবং একটি নতুন BLS কী যোগ করতে, `--ecdsa` এবং `--network` নিষ্ক্রিয় করতে হবে।
+
+```bash
+polygon-edge secrets init --bls --ecdsa=false --network=false
+
+[SECRETS INIT]
+Public key (address) = 0x...
+BLS Public key = 0x...
+Node ID = 16...
+```
+
+### 3. ফর্ক সেটিং যোগ করুন {#3-add-fork-setting}
+
+`ibft switch` কমান্ড একটি ফর্ক সেটিং যোগ করে, যা `genesis.json`-এর মধ্যে বিদ্যমান চেইনে BLS সক্রিয় করে।
+
+PoA নেটওয়ার্কের জন্য, যাচাইকারীদের কমান্ড দেওয়ার প্রয়োজন হবে। `genesis` কমান্ড অনুযায়ী, যাচাইকারীকে নির্দিষ্ট করতে `--ibft-validators-prefix-path` বা `--ibft-validator` ফ্ল্যাগ ব্যবহার করা যেতে পারে।
+
+চেইন কোন উচ্চতা থেকে BLS ব্যবহার করা শুরু করেছে তা `--from` ফ্ল্যাগ দিয়ে নির্দিষ্ট করুন।
+
+```bash
+polygon-edge ibft switch --chain ./genesis.json --type PoA --ibft-validator-type bls --ibft-validators-prefix-path test-chain- --from 100
+```
+
+### 4. সকল নোড পুনরায় চালু করুন {#4-restart-all-nodes}
+
+`server` কমান্ড দ্বারা সকল নোড পুনরায় চালু করুন। পূর্ববর্তী ধাপে উল্লেখিত `from`-এ ব্লক তৈরি করার পরে, চেইনটি BLS সক্রিয় করে এবং নিম্নোক্তভাবে লগ প্রদর্শন করে:
+
+```bash
+2022-09-02T11:45:24.535+0300 [INFO] polygon.ibft: IBFT validation type switched: old=ecdsa new=bls
+```
+
+এছাড়াও, ব্লক তৈরির পর কোন যাচাইকরণ মোড ব্যবহার করে প্রতিটি ব্লক তৈরি করা হয়েছে তা লগে দেখা যায়।
+
+```
+2022-09-02T11:45:28.728+0300 [INFO] polygon.ibft: block committed: number=101 hash=0x5f33aa8cea4e849807ca5e350cb79f603a0d69a39f792e782f48d3ea57ac46ca validation_type=bls validators=3 committed=3
+```
+
+## একটি বিদ্যমান ECDSA PoS চেইন থেকে একটি BLS PoS চেইনে কীভাবে মাইগ্রেট করবেন {#how-to-migrate-from-an-existing-ecdsa-pos-chain-to-a-bls-pos-chain}
+
+একটি বিদ্যমান PoS চেইনে BLS মোড কীভাবে ব্যবহার করবেন তা এই বিভাগে বর্ণনা করা হয়েছে।
+PoS চেইনে BLS সক্রিয় করতে নিম্নলিখিত পদক্ষেপগুলো আবশ্যকীয়।
+
+1. সকল নোড বন্ধ করুন
+2. যাচাইকারীদের জন্য BLS কী তৈরি করুন
+3. genesis.json এ একটি ফর্ক সেটিং যোগ করুন
+4. BLS পাবলিক কী নিবন্ধন করতে স্টেকিং চুক্তি কল করুন
+5. সকল নোড পুনরায় চালু করুন
+
+### 1. সকল নোড বন্ধ করুন {#1-stop-all-nodes-1}
+
+Ctrl + c (Control + C) চেপে যাচাইকারীদের সমস্ত প্রক্রিয়া বন্ধ করুন। অনুগ্রহ করে সর্বশেষ ব্লক উচ্চতা (ব্লক কমিটেড লগের সর্বোচ্চ ক্রম নম্বর) মনে রাখুন।
+
+### 2. BLS কী তৈরি করুন {#2-generate-the-bls-key-1}
+
+`secrets init`-এর সাথে `--bls` ফ্ল্যাগ দিয়ে BLS কী তৈরি করে। বিদ্যমান ECDSA ও নেটওয়ার্ক কী রাখতে এবং একটি নতুন BLS কী যোগ করতে, `--ecdsa` এবং `--network` নিষ্ক্রিয় করতে হবে।
+
+```bash
+polygon-edge secrets init --bls --ecdsa=false --network=false
+
+[SECRETS INIT]
+Public key (address) = 0x...
+BLS Public key = 0x...
+Node ID = 16...
+```
+
+### 3. ফর্ক সেটিং যোগ করুন {#3-add-fork-setting-1}
+
+`ibft switch` কমান্ড একটি ফর্ক সেটিং যোগ করে, যা `genesis.json`-এ চেইনের মধ্যখান থেকে BLS-কে সক্রিয় করে।
+
+চেইনটি কোন উচ্চতা থেকে BLS মোড ব্যবহার করা শুরু করে `from` ফ্ল্যাগ দিয়ে নির্দিষ্ট করুন এবং `development` ফ্ল্যাগ দিয়ে চুক্তিটি আপডেট করা উচ্চতা নির্দিষ্ট করুন।
+
+```bash
+polygon-edge ibft switch --chain ./genesis.json --type PoS --ibft-validator-type bls --deployment 50 --from 200
+```
+
+### 4. স্টেকিং চুক্তিতে BLS পাবলিক কী নিবন্ধন করুন {#4-register-bls-public-key-in-staking-contract}
+
+ফর্ক যোগ এবং যাচাইকারীদের পুনরায় চালু করার পরে, BLS পাবলিক কী নিবন্ধন করতে প্রতিটি যাচাইকারীকে স্টেকিং চুক্তিতে `registerBLSPublicKey` কল করতে হবে। এটি অবশ্যই `--from`-এ উচ্চতা নির্দিষ্ট করার আগে `--deployment`-এ উচ্চতা নির্দিষ্ট করে তারপর করতে হবে।
+
+BLS পাবলিক কী নিবন্ধন করার স্ক্রিপ্টটি [স্টেকিং স্মার্ট চুক্তি রেপোতে](https://github.com/0xPolygon/staking-contracts) সংজ্ঞায়িত করা হয়েছে।
+
+`BLS_PUBLIC_KEY`-কে `.env` ফাইলে নিবন্ধন করার জন্য সেট করুন। অন্যান্য প্যারামিটার সম্পর্কে আরও বিস্তারিত জানতে [pos-stake-unstake](/docs/edge/consensus/pos-stake-unstake#setting-up-the-provided-helper-scripts) পড়ুন।
+
+```env
+JSONRPC_URL=http://localhost:10002
+STAKING_CONTRACT_ADDRESS=0x0000000000000000000000000000000000001001
+PRIVATE_KEYS=0x...
+BLS_PUBLIC_KEY=0x...
+```
+
+নিম্নলিখিত কমান্ড `.env`-তে প্রদত্ত BLS পাবলিক কী'কে চুক্তিতে নিবন্ধন করে।
+
+```bash
+npm run register-blskey
+```
+
+:::warning যাচাইকারীদের BLS পাবলিক কী ম্যানুয়ালি নিবন্ধন করতে হবে
+
+BLS মোডে, যাচাইকারীদের অবশ্যই নিজস্ব অ্যাড্রেস এবং BLS পাবলিক কী থাকতে হবে। কনসেনসাস যখন চুক্তি থেকে যাচাইকারীর তথ্য নিয়ে আসে, তখন কনসেনসাস BLS পাবলিক কী নিবন্ধন না করা যাচাইকারীদের উপেক্ষা করে।
+:::
+
+### 5. সকল নোড পুনরায় চালু করুন {#5-restart-all-nodes}
+
+`server` কমান্ড দ্বারা সকল নোড পুনরায় চালু করুন। পূর্ববর্তী ধাপে উল্লেখিত `from`-এ ব্লক তৈরি হওয়ার পরে চেইনটি BLS-কে সক্রিয় করে।
diff --git a/archive/edge/bn-edge/consensus/migration-to-pos.md b/archive/edge/bn-edge/consensus/migration-to-pos.md
new file mode 100644
index 0000000000..a741fb2aa9
--- /dev/null
+++ b/archive/edge/bn-edge/consensus/migration-to-pos.md
@@ -0,0 +1,41 @@
+---
+id: migration-to-pos
+title: PoA থেকে PoS-এ মাইগ্রেশন
+description: "PoA থেকে PoS IBFT এবং PoS IBFT থেকে PoA-তে মাইগ্রেট করার পদ্ধতি।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - migrate
+ - PoA
+ - PoS
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+এই বিভাগে আপনি ব্লকচেইন রিসেট করা ছাড়াই একটি চলমান ক্লাস্টারে PoA থেকে PoS IBFT এবং PoS IBFT থেকে PoA-তে মাইগ্রেট করার বিষয়ে নির্দেশনা পাবেন।
+
+## PoS-এ কীভাবে মাইগ্রেট করতে হয় {#how-to-migrate-to-pos}
+
+আপনাকে সকল নোড বন্ধ করতে হবে, `ibft switch` কমান্ড দ্বারা genesis.json এর মধ্যে ফর্ক কনফিগারেশন যোগ করতে হবে এবং নোডটি পুনরায় শুরু করতে হবে।
+
+````bash
+polygon-edge ibft switch --chain ./genesis.json --type PoS --deployment 100 --from 200
+````
+:::caution ECDSA ব্যবহার করার সময় স্যুইচিং করা
+ECDSA, ব্যবহার করার সময়, `--ibft-validator-type`ফ্ল্যাগ সুইচটিতে যোগ করা আবশ্যক, যেখানে ECDSA ব্যবহার করা হ. । যদি অন্তর্ভুক্ত না থাকলে, এজ স্বয়ংক্রিয়ভাবে BLS এ স্যুইচ করবে।
+
+````bash
+polygon-edge ibft switch --chain ./genesis.json --type PoS --ibft-validator-type ecdsa --deployment 100 --from 200
+````
+:::PoS-এ স্যুইচ করতে, আপনাকে 2 ব্লক উচ্চতা নির্দিষ্ট করতে হবে: `deployment`এবং `from``deployment`। To া To া `from`To । স্টেকিং চুক্তিটি প্রি-ডিপ্লয়েড চুক্তির মত `deployment`-এর `0x0000000000000000000000000000000000001001` ঠিকানায় ডিপ্লয় করা হবে।
+
+স্টেকিং চুক্তি সম্পর্কে আরও বিস্তারিত জানতে, অনুগ্রহ করে [প্রুফ অফ স্টেক](/docs/edge/consensus/pos-concepts) দেখুন।
+
+:::warning যাচাইকারীদের নিজে স্টেক করতে হবে
+
+প্রতিটি যাচাইকারীকে PoS-এর শুরুতে যাচাইকারী হতে চুক্তি `deployment`-এ ডিপ্লয় হবার পর এবং `from`-এ ডিপ্লয় হবার আগে স্টেক করতে হবে। প্রতিটি যাচাইকারী PoS-এর শুরুতে স্ট্যাকিং চুক্তি সেট দ্বারা নিজস্ব যাচাইকারী সেট আপডেট করবে।
+
+স্টেকিং সম্পর্কে আরও জানতে, অনুগ্রহ করে **[সেটআপ করুন এবং প্রুফ অফ স্টেক ব্যবহার করুন](/docs/edge/consensus/pos-stake-unstake)** ভিজিট করুন।
+
+:::
diff --git a/archive/edge/bn-edge/consensus/poa.md b/archive/edge/bn-edge/consensus/poa.md
new file mode 100644
index 0000000000..025ec31a3c
--- /dev/null
+++ b/archive/edge/bn-edge/consensus/poa.md
@@ -0,0 +1,109 @@
+---
+id: poa
+title: প্রুফ অব অথোরিটি (PoA)
+description: "প্রুফ অব অথোরিটি সম্পর্কিত ব্যাখ্যা এবং নির্দেশাবলী।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - PoA
+ - autorithy
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+IBFT PoA হচ্ছে Polygon Edge-এর ডিফল্ট কনসেনসাস প্রক্রিয়া। PoA-তে, যাচাইকারীরা ব্লক তৈরি করা এবং সেগুলোকে একটি সিরিজ আকারে ব্লকচেইনে যোগ করার দায়িত্ব পালন করে থাকেন।
+
+সব যাচাইকারী মিলে একটি ডাইনামিক যাচাইকারীর-সেট তৈরি করে, যেখানে একটি ভোটিং প্রক্রিয়া ব্যবহারের মাধ্যমে সেট থেকে যাচাইকারীদের যোগ করা বা বাদ দেওয়া যেতে পারে। এর মানে হচ্ছে যাচাইকারীদের যাচাইকারী-সেট থেকে ভোট দিয়ে সেটের ভিতরে নেয়া/বাইরে বের করে দেওয়া যেতে পারে যদি যাচাইকারী নোডের সংখ্যাগরিষ্ঠরা (51%) একজন নির্দিষ্ট যাচাইকারীকে সেটে/সেট থেকে যোগ/বাদ দিতে ভোট দেয়। এভাবে, অসৎ যাচাইকারীদের সনাক্ত করা যায় এবং নেটওয়ার্ক থেকে সরানো যায়, একই সাথে নতুন বিশ্বাসযোগ্য যাচাইকারীদের নেটওয়ার্কে যুক্ত করা যায়।
+
+সমস্ত যাচাইকারী পরবর্তী ব্লক (রাউন্ড-রবিন পদ্ধতিতে) প্রস্তাব করার সুযোগ পায় এবং ব্লকচেইনে ব্লকটিকে যাচাই/ইনসার্ট করতে যাচাইকারীদের একটি একটি বিশাল অংশকে (2/3-এর বেশি) সেই ব্লকটিকে অনুমোদন করতে হয়।
+
+এছাড়াও, যাচাইকারীদের পাশাপাশি ব্লক তৈরিতে অংশগ্রহণ না করা অ-যাচাইকারীরাও ব্লক যাচাই প্রক্রিয়ায় অংশগ্রহণ করতে পারে।
+
+## যাচাইকারীর সেটে একজন যাচাইকারী যোগ করা {#adding-a-validator-to-the-validator-set}
+
+কিভাবে 4 যাচাইকারী নোড সহ সক্রিয় IBFT নেটওয়ার্কে নতুন একটি যাচাইকারী নোড যোগ করতে হয় তা এই নির্দেশিকায় বর্ণনা করা হয়েছে। যদি আপনার জন্য হবে তাহলে [লোকাল সেটআপ](/edge/get-started/set-up-ibft-locally.md) / [ক্লাউড সেটআপ](/edge/get-started/set-up-ibft-on-the-cloud.md) বিভাগে নেটওয়ার্ক সেট আপ করতে সাহায্য করুন।
+
+### ধাপ 1: IBFT-এর জন্য ডেটা ফোল্ডার চালু করুন এবং নতুন নোডের জন্য ভ্যালিডেটর কী তৈরি করুন {#step-1-initialize-data-folders-for-ibft-and-generate-validator-keys-for-the-new-node}
+
+নতুন নোডে IBFT দিয়ে সুন্দরভাবে কাজ চালিয়ে যেতে হলে, প্রথমে আপনাকে ডেটা ফোল্ডারগুলি চালু করতে হবে এবং কী তৈরি করতে হবে:
+
+````bash
+polygon-edge secrets init --data-dir test-chain-5
+````
+
+এই কমান্ডটি যাচাইকারীর কী (ঠিকানা) এবং নোড আইডি প্রিন্ট করবে। পরবর্তী ধাপের জন্য আপনার যাচাইকারীর কী (অ্যাড্রেস) প্রয়োজন হবে।
+
+### ধাপ 2: অন্য যাচাইকারী নোড থেকে নতুন ক্যান্ডিডেট প্রস্তাব করুন {#step-2-propose-a-new-candidate-from-other-validator-nodes}
+
+নতুন নোডকে যাচাইকারী হিসেবে গণ্য করার জন্য অন্তত 51% যাচাইকারীকে তার জন্য প্রস্তাব করতে হবে।
+
+বর্তমান যাচাইকারী নোড থেকে grpc ঠিকানা: 127.0.0.1:10000 এ নতুন যাচাইকারী (`0x8B15464F8233F718c8605B16eBADA6fc09181fC2`) প্রস্তাব করার উদাহরণ:
+
+````bash
+polygon-edge ibft propose --grpc-address 127.0.0.1:10000 --addr 0x8B15464F8233F718c8605B16eBADA6fc09181fC2 --bls 0x9952735ca14734955e114a62e4c26a90bce42b4627a393418372968fa36e73a0ef8db68bba11ea967ff883e429b3bfdf --vote auth
+````
+
+IBFT কমান্ডগুলির গঠন [CLI কমান্ড](/docs/edge/get-started/cli-commands) বিভাগে বর্ণনা করা হয়েছে।
+
+:::info BLS পাবলিক কী
+
+BLS পাবলিক কী শুধুমাত্র BLS দিয়ে চালিত নেটওয়ার্কে প্রয়োজন হয়, BLS মোডে না চলা নেটওয়ার্কে `--bls`-এর প্রয়োজন নেই।
+
+:::
+
+### ধাপ 3: ক্লায়েন্ট নোড রান করুন {#step-3-run-the-client-node}
+
+যেহেতু এই উদাহরণে আমরা এমন নেটওয়ার্ক চালানোর চেষ্টা করছি যেখানে সমস্ত নোড একই মেশিনে রয়েছে, তাই পোর্ট কনফ্লিক্ট এড়াতে আমাদের সতর্ক থাকতে হবে।
+
+````bash
+polygon-edge server --data-dir ./test-chain-5 --chain genesis.json --grpc-address :50000 --libp2p :50001 --jsonrpc :50002 --seal
+````
+
+সব ব্লক ফেচ করার পর, আপনার কনসোলে দেখতে পাবেন যে একটি নতুন নোড যাচাই প্রক্রিয়ায় অংশগ্রহণ করছে
+
+````bash
+2021-12-01T14:56:48.369+0100 [INFO] polygon.consensus.ibft.acceptState: Accept state: sequence=4004
+2021-12-01T14:56:48.369+0100 [INFO] polygon.consensus.ibft: current snapshot: validators=5 votes=0
+2021-12-01T14:56:48.369+0100 [INFO] polygon.consensus.ibft: proposer calculated: proposer=0x8B15464F8233F718c8605B16eBADA6fc09181fC2 block=4004
+````
+
+:::info একজন অ-যাচাইকারীকে যাচাইকারী হিসেবে প্রস্তাব করা
+
+স্বাভাবিকভাবে, একজন অ-যাচাইকারী ভোটিং প্রক্রিয়ার মাধ্যমে যাচাইকারী হতে পারেন, কিন্তু ভোটিং প্রক্রিয়ার পর সফলভাবে যাচাইকারীর-সেটে যোগ হতে নোডটিকে `--seal`ফ্ল্যাগ সহ রিস্টার্ট করতে হবে।
+
+:::
+
+## যাচাইকারীর-সেট থেকে একজন যাচাইকারীকে অপসারণ করা {#removing-a-validator-from-the-validator-set}
+
+এই কাজটি খুবই সহজ। যাচাইকারীর-সেট থেকে একটি যাচাইকারী নোড অপসারণ করতে অধিকাংশ যাচাইকারী নোডে এই কমান্ডটিকে সম্পাদন করতে হবে।
+
+````bash
+polygon-edge ibft propose --grpc-address 127.0.0.1:10000 --addr 0x8B15464F8233F718c8605B16eBADA6fc09181fC2 --bls 0x9952735ca14734955e114a62e4c26a90bce42b4627a393418372968fa36e73a0ef8db68bba11ea967ff883e429b3bfdf --vote drop
+````
+
+:::info BLS পাবলিক কী
+
+BLS পাবলিক কী শুধুমাত্র BLS দিয়ে চালিত নেটওয়ার্কে প্রয়োজন হয়, BLS মোডে না চলা নেটওয়ার্কে `--bls`-এর প্রয়োজন নেই।
+
+:::
+
+কমান্ডগুলো সম্পাদন করার পরে লক্ষ্য করে থাকবেন যে যাচাইকারীর সংখ্যা কমে গিয়েছে (এই লগ উদাহরণের ক্ষেত্রে 4 থেকে 3 হয়েছে)
+
+````bash
+2021-12-15T19:20:51.014+0100 [INFO] polygon.consensus.ibft.acceptState: Accept state: sequence=2399 round=1
+2021-12-15T19:20:51.014+0100 [INFO] polygon.consensus.ibft: current snapshot: validators=4 votes=2
+2021-12-15T19:20:51.015+0100 [INFO] polygon.consensus.ibft.acceptState: we are the proposer: block=2399
+2021-12-15T19:20:51.015+0100 [INFO] polygon.consensus.ibft: picked out txns from pool: num=0 remaining=0
+2021-12-15T19:20:51.015+0100 [INFO] polygon.consensus.ibft: build block: number=2399 txns=0
+2021-12-15T19:20:53.002+0100 [INFO] polygon.consensus.ibft: state change: new=ValidateState
+2021-12-15T19:20:53.009+0100 [INFO] polygon.consensus.ibft: state change: new=CommitState
+2021-12-15T19:20:53.009+0100 [INFO] polygon.blockchain: write block: num=2399 parent=0x768b3bdf26cdc770525e0be549b1fddb3e389429e2d302cb52af1722f85f798c
+2021-12-15T19:20:53.011+0100 [INFO] polygon.blockchain: new block: number=2399 hash=0x6538286881d32dc7722dd9f64b71ec85693ee9576e8a2613987c4d0ab9d83590 txns=0 generation_time_in_sec=2
+2021-12-15T19:20:53.011+0100 [INFO] polygon.blockchain: new head: hash=0x6538286881d32dc7722dd9f64b71ec85693ee9576e8a2613987c4d0ab9d83590 number=2399
+2021-12-15T19:20:53.011+0100 [INFO] polygon.consensus.ibft: block committed: sequence=2399 hash=0x6538286881d32dc7722dd9f64b71ec85693ee9576e8a2613987c4d0ab9d83590 validators=4 rounds=1 committed=3
+2021-12-15T19:20:53.012+0100 [INFO] polygon.consensus.ibft: state change: new=AcceptState
+2021-12-15T19:20:53.012+0100 [INFO] polygon.consensus.ibft.acceptState: Accept state: sequence=2400 round=1
+2021-12-15T19:20:53.012+0100 [INFO] polygon.consensus.ibft: current snapshot: validators=3 votes=0
+2021-12-15T19:20:53.012+0100 [INFO] polygon.consensus.ibft: proposer calculated: proposer=0xea21efC826F4f3Cb5cFc0f986A4d69C095c2838b block=2400
+````
diff --git a/archive/edge/bn-edge/consensus/pos-concepts.md b/archive/edge/bn-edge/consensus/pos-concepts.md
new file mode 100644
index 0000000000..09ffdb7da7
--- /dev/null
+++ b/archive/edge/bn-edge/consensus/pos-concepts.md
@@ -0,0 +1,118 @@
+---
+id: pos-concepts
+title: প্রুফ অফ স্টেক
+description: "প্রুফ অব স্টেক সম্পর্কিত ব্যাখ্যা এবং নির্দেশাবলী।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - PoS
+ - stake
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+এই বিভাগটি বর্তমানে Polygon Edge-এর প্রুফ অফ স্টেকে (PoS) উপস্থিত কিছু ধারণার একটি ভালো ওভারভিউ
+ওভারভিউ প্রদান করবে বলে আশা করা হচ্ছে।
+
+বিদ্যমান PoA IBFT ইমপ্লিমেন্টেশনের বিকল্প হচ্ছে Polygon Edge-এর প্রুফ অফ স্টেক (PoS) ইমপ্লিমেন্টেশন,
+যা নোড অপারেটররা চেইন শুরু করার সময় সহজেই দুটি চেইনের মধ্যে যেকোনো একটি বেছে নিতে পারেন।
+
+## PoS-এর ফিচার {#pos-features}
+
+প্রুফ অফ স্টেক ইমপ্লিমেন্টেশনের মূল লজিকটি
+**[স্ট্যাকিং স্মার্ট কন্ট্রাক্ট।](https://github.com/0xPolygon/staking-contracts/blob/main/contracts/Staking.sol)**
+
+একটি PoS মেকানিজমের Polygon Edge চেইনটি চালু করা হলে এই চুক্তিটি আগে থেকেই ডিপ্লয় করা থাকে এবং `0x0000000000000000000000000000000000001001` ঠিকানায় উপলভ্য থাকে
+`0` ব্লকের।
+
+### Epochs {#epochs}
+
+Polygon Edge-এ Epochs-কে PoS-এর অতিরিক্ত কনসেপ্ট হিসেবে চালু করা হয়েছে।
+
+Epoch-কে (ব্লকে) একটি বিশেষ সময় কাল হিসেবে বিবেচনা করা হয় যেখানে নির্দিষ্ট কিছু যাচাইকারীর একটি সেট ব্লক নির্মাণ করতে পারে।
+তাদের দৈর্ঘ্য পরিবর্তন করা যায়, অর্থাৎ নোড অপারেটররা জেনেসিস জেনারেশনের সময় একটি epoch এর দৈর্ঘ্য কনফিগার করতে পারেন।
+
+প্রতিটি epoch শেষে, একটি _epoch ব্লক_ তৈরি হয় এবং সেই ঘটনার পরে একটি নতুন epoch শুরু হয়। epoch ব্লক সম্পর্কে
+আরও জানতে, [Epoch ব্লক](/docs/edge/consensus/pos-concepts#epoch-blocks) বিভাগটি দেখুন।
+
+প্রতিটি epoch এর শেষে যাচাইকারীর সেট আপডেট করা হয়। epoch ব্লক তৈরি করার সময় স্টেকিং স্মার্ট চুক্তি থেকে নোডগুলো
+একটি যাচাইকারীর সেটকে কুয়েরি করে এবং প্রাপ্ত ডেটা স্থানীয় স্টোরেজে সংরক্ষণ করে। এই কুয়েরি এবং সংরক্ষণ চক্র প্রতিটি epoch এর শেষে পুনরাবৃত্তি হয়।
+
+মূলত, এটি স্টেকিং স্মার্ট চুক্তির যাচাইকারীর সেটের ঠিকানাগুলোর উপরে সম্পূর্ণ নিয়ন্ত্রণ থাকার বিশয়টি নিশ্চিত করে এবং
+তা নোডগুলোকে শুধুমাত্র 1টি দায়িত্ব প্রদান করে - epoch-এর সময় সাম্প্রতিকতম যাচাইকারীর সেটের তথ্য নিয়ে আসার জন্য
+চুক্তিটিকে কুয়েরি করার। এটি একক নোডের একটি যাচাইকারীর সেটের দায়িত্ব নেয়ার বোঝা কমিয়ে দেয়।
+
+### স্টেকিং {#staking}
+
+ঠিকানাগুলো `stake` পদ্ধতি ব্যবহার করে এবং লেনদেনে স্টেক করা পরিমাণের একটি মান নির্দিষ্ট করে
+স্টেকিং স্মার্ট চুক্তিতে ফান্ড স্টেক করতে পারেন:
+
+````js
+const StakingContractFactory = await ethers.getContractFactory("Staking");
+let stakingContract = await StakingContractFactory.attach(STAKING_CONTRACT_ADDRESS)
+as
+Staking;
+stakingContract = stakingContract.connect(account);
+
+const tx = await stakingContract.stake({value: STAKE_AMOUNT})
+````
+
+স্টেকিং স্মার্ট চুক্তিতে ফান্ড স্টেক করে ঠিকানাগুলো যাচাইকারীর সেটে অন্তর্ভুক্ত হতে পারে এবং ফলশ্রুতিতে
+ব্লক তৈরি প্রক্রিয়ায় অংশগ্রহণ করতে পারে।
+
+:::info স্টেকিং-এর থ্রেশহোল্ড
+
+বর্তমানে, যাচাইকারীর সেটে অন্তর্ভুক্ত হওয়ার জন্য সর্বনিম্ন থ্রেশহোল্ড হচ্ছে `1 ETH` স্টেক করা
+
+:::
+
+### আনস্টেকিং {#unstaking}
+
+যেসব ঠিকানা ফান্ড স্টেক করেছে, তারা তাদের **সমস্ত স্টেক করা ফান্ড একত্রে আনস্টেক করতে পারবেন**।
+
+স্টেকিং স্মার্ট চুক্তিতে `unstake` পদ্ধতি কল করে আনস্টেকিং করা যেতে পারে:
+
+````js
+const StakingContractFactory = await ethers.getContractFactory("Staking");
+let stakingContract = await StakingContractFactory.attach(STAKING_CONTRACT_ADDRESS)
+as
+Staking;
+stakingContract = stakingContract.connect(account);
+
+const tx = await stakingContract.unstake()
+````
+
+ফান্ড আনস্টেক করার পরে, স্টেকিং স্মার্ট চুক্তি থেকে ঠিকানাগুলোকে সরিয়ে ফেলা হয় এবং সেগুলোকে
+পরবর্তী epoch-এর সময় আর যাচাইকারী হিসেবে গণ্য করা হবে না।
+
+## Epoch ব্লক {#epoch-blocks}
+
+**Epoch ব্লক** Polygon Edge-এ IBFT-এর PoS ইমপ্লিমেন্টেশনের একটি কনসেপ্ট হিসেবে চালু করা হয়েছে।
+
+মূলত, epoch ব্লকগুলো বিশেষ ব্লক যাতে কোন **লেনদেন থাকে না** এবং শুধুমাত্র **epoch-এর শেষ দিকেই** ঘটে। উদাহরণস্বরূপ, যদি **epoch আকার** ব্লক সেট করা `50`হয়, তাহলে epoch ব্লক `50`ব্লক হতে হবে , `100``150`এবং তাই হবে।
+
+তাদের অতিরিক্ত লজিক সম্পাদন করতে ব্যবহার করা হয় যা নিয়মিত ব্লক প্রোডাকশনের সময় ঘটে না।
+
+সবচেয়ে গুরুত্বপূর্ণ বিষয় হচ্ছে, তারা নোডের একটি নির্দেশনা হিসেবে কাজ করে যে **সাম্প্রতিকতম যাচাইকারীর সেটের তথ্য নিয়ে আসতে হবে**
+স্টেকিং স্মার্ট চুক্তি থেকে।
+
+Epoch ব্লকে যাচাইকারীর সেট আপডেট করার পর, স্টেকিং স্মার্ট চুক্তি থেকে সর্বশেষ তথ্য নিয়ে এসে আবার আপডেট না হওয়া পর্যন্ত, যাচাইকারীর সেট (পরিবর্তিত বা অপরিবর্তিত যাই হোক না কেন) পরবর্তী `epochSize - 1` ব্লকের জন্য
+ব্যবহার করা হয়।
+
+জেনেসিস ফাইল তৈরি করার সময় Epoch এর দৈর্ঘ্য (ব্লকে) একটি বিশেষ ফ্ল্যাগ `--epoch-size` ব্যবহার করে পরিবর্তন করা যায়:
+
+```bash
+polygon-edge genesis --epoch-size 50 ...
+```
+
+Polygon Edge-এ একটি epoch-এর ডিফল্ট আকার হচ্ছে `100000` ব্লক।
+
+## চুক্তির প্রি-ডিপ্লয়মেন্ট {#contract-pre-deployment}
+
+Polygon Edge _প্রি-ডিপ্লয়_ করে
+[স্টেকিং স্মার্ট চুক্তি](https://github.com/0xPolygon/staking-contracts/blob/main/contracts/Staking.sol)-কে
+`0x0000000000000000000000000000000000001001` ঠিকানার মধ্যে **জেনেসিস তৈরির** সময়।
+
+এটি কোন চলমান EVM ছাড়াই জেনেসিস কমান্ডে পাস করা কনফিগারেশন ভ্যালু ব্যবহার করে, সরাসরি ব্লকচেইনের স্মার্ট চুক্তির অবস্থা
+পরিবর্তনের মাধ্যমে তা করে থাকে।
diff --git a/archive/edge/bn-edge/consensus/pos-stake-unstake.md b/archive/edge/bn-edge/consensus/pos-stake-unstake.md
new file mode 100644
index 0000000000..e6e2fe6b8f
--- /dev/null
+++ b/archive/edge/bn-edge/consensus/pos-stake-unstake.md
@@ -0,0 +1,174 @@
+---
+id: pos-stake-unstake
+title: প্রুফ অফ স্টেক (PoS) এর সেটআপ এবং ব্যবহার
+description: "স্টেক, আনস্টেক এবং অন্যান্য স্টেকিং সম্পর্কিত নির্দেশাবলী।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - stake
+ - unstake
+ - validator
+ - epoch
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+Polygon Edge-এর সাথে একটি প্রুফ অফ স্টেক নেটওয়ার্ক সেট আপ করার বিষয়ে এই গাইডটি বিস্তারিতভাবে বর্ণনা করে, নোডগুলির জন্য ফান্ড কীভাবে স্টেক করতে হয় যাতে তারা ভ্যালিডেটর হয়ে ওঠে এবং কীভাবে ফান্ড আনস্টেক করতে হয়।
+
+এটি পড়তে এবং মধ্য দিয়ে যেতে **অত্যন্ত উৎসাহিত** করা হয় [লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally)
+/ [ক্লাউড সেটআপ](/docs/edge/get-started/set-up-ibft-on-the-cloud) বিভাগসমূহ পড়ার জন্য,
+PoS নির্দেশিকার সাথে এগিয়ে যাওয়ার আগে। এই বিভাগসমূহে Polygon Edge-এর সাথে একটি প্রুফ অফ অথরিটি (PoA) ক্লাস্টার শুরু করার জন্য প্রয়োজনীয় পদক্ষেপগুলোর
+রূপরেখা পাবেন।
+
+বর্তমানে, স্টেকিং স্মার্ট চুক্তিতে ফান্ড স্টেক করার ক্ষেত্রে যাচাইকারীর সংখ্যার কোনও সীমা নেই।
+
+## স্টেকিং স্মার্ট চুক্তি {#staking-smart-contract}
+
+স্টেকিং স্মার্ট চুক্তির রেপো [এখানে](https://github.com/0xPolygon/staking-contracts) অবস্থিত।
+
+এতে প্রয়োজনীয় টেস্টিং স্ক্রিপ্ট, ABI ফাইল এবং সবচেয়ে গুরুত্বপূর্ণভাবে, এতে স্মার্ট চুক্তিটিই রয়েছে।
+
+## একটি N নোড ক্লাস্টার সেটআপ করা {#setting-up-an-n-node-cluster}
+
+Polygon Edge দিয়ে একটি নেটওয়ার্ক সেটআপ করার প্রক্রিয়া
+[লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally)
+/ [ক্লাউড সেটআপ](/docs/edge/get-started/set-up-ibft-on-the-cloud) বিভাগসমূহে বর্ণনা করা হয়েছে।
+
+একটি PoS এবং PoA ক্লাস্টার সেটআপ এর মধ্যে একমাত্র **পার্থক্য** হল জেনেসিস জেনারেশনের অংশটি।
+
+**একটি PoS ক্লাস্টারের জন্য জেনেসিস ফাইল তৈরি করার সময়, একটি অতিরিক্ত ফ্ল্যাগ প্রয়োজন `--pos`**:
+
+```bash
+polygon-edge genesis --pos ...
+```
+
+## একটি epoch-এর দৈর্ঘ্য সেট করা {#setting-the-length-of-an-epoch}
+
+Epochs সম্পর্কে [Epoch ব্লক](/docs/edge/consensus/pos-concepts#epoch-blocks) বিভাগে বিস্তারিতভাবে বর্ণনা করা আছে।
+
+জেনেসিস ফাইল তৈরি করার সময়, একটি ক্লাস্টারের (ব্লকে) জন্য epoch-এর আকার সেট করতে, একটি অতিরিক্ত ফ্ল্যাগ
+নির্দিষ্ট আছে `--epoch-size`:
+
+```bash
+polygon-edge genesis --epoch-size 50
+```
+
+এই মানটি জেনেসিস ফাইলে epoch-এর আকার `50` ব্লকে নির্দিষ্ট করেছে।
+
+একটি epoch (ব্লকে) এর আকারের ডিফল্ট মান হচ্ছে `100000`।
+
+:::info epoch এর দৈর্ঘ্য কমানো
+
+[Epoch ব্লক](/docs/edge/consensus/pos-concepts#epoch-blocks) বিভাগের বর্ণনা অনুসারে,
+নোডগুলিতে যাচাইকারীর সেট আপডেট করতে epoch ব্লক ব্যবহার করা হয়।
+
+ব্লকে, epoch এর ডিফল্ট দৈর্ঘ্য (`100000`) যাচাইকারীর সেট আপডেটের জন্য একটি দীর্ঘ সময় হতে পারে। যেহেতু প্রতিটি নতুন ব্লক যোগ করতে
+~2s সময়ের প্রয়োজন হয়, তাই যাচাইকারীর সেটটিতে পরিবর্তন হতে আনুমানিক ~55.5h সময়ের প্রয়োজন হবে।
+
+epoch দৈর্ঘ্যের জন্য একটি কম মান সেট করা এটি নিশ্চিত করে যে ভ্যালিডেটর সেটটি আরও ঘন ঘন আপডেট হবে।
+:::
+
+## স্টেকিং স্মার্ট চুক্তির স্ক্রিপ্ট ব্যবহার করা {#using-the-staking-smart-contract-scripts}
+
+### পূর্বশর্ত {#prerequisites}
+
+স্টেকিং স্মার্ট চুক্তি রেপো একটি হার্ডহ্যাট প্রকল্প, যার জন্য NPM-এর প্রয়োজন হয়।
+
+এটি সঠিকভাবে চালু করতে, মূল ডিরেক্টরিতে রান করুন:
+
+```bash
+npm install
+````
+
+### প্রদত্ত সহায়ক স্ক্রিপ্ট সেটআপ করা {#setting-up-the-provided-helper-scripts}
+
+ডিপ্লয়েড স্টেকিং স্মার্ট চুক্তির সাথে ইন্টের্যাক্ট করার স্ক্রিপ্টগুলি আছে
+[স্টেকিং স্মার্ট চুক্তি রেপোতে](https://github.com/0xPolygon/staking-contracts)।
+
+স্মার্ট চুক্তির রেপো লোকেশনে নিম্নলিখিত প্যারামিটারের সাথে একটি `.env` ফাইল তৈরি করুন:
+
+```bash
+JSONRPC_URL=http://localhost:10002
+PRIVATE_KEYS=0x0454f3ec51e7d6971fc345998bb2ba483a8d9d30d46ad890434e6f88ecb97544
+STAKING_CONTRACT_ADDRESS=0x0000000000000000000000000000000000001001
+BLS_PUBLIC_KEY=0xa..
+```
+
+প্যারামিটারগুলি যেখানে আছে:
+
+* **JSONRPC_URL** - চলমান নোডের JSON-RPC এন্ডপয়েন্ট
+* **PRIVATE_KEYS** - স্টেকার ঠিকানার প্রাইভেট কী।
+* **STAKING_CONTRACT_ADDRESS** - স্টেকিং স্মার্ট চুক্তির ঠিকানা (
+ডিফল্ট `0x0000000000000000000000000000000000001001`)
+* **BLS_PUBLIC_KEY** - স্টেকারের BLS পাবলিক কী। শুধুমাত্র BLS দিয়ে চলমান নেটওয়ার্কের ক্ষেত্রে প্রয়োজন
+
+### ফান্ড স্টেক করা {#staking-funds}
+
+:::info স্টেকিং ঠিকানা
+
+স্টেকিং স্মার্ট চুক্তিটি প্রি-ডিপ্লয়েড আছে
+`0x0000000000000000000000000000000000001001` ঠিকানায়।
+
+স্টেকিং-এর সাথে যে কোনও ধরণের ইন্টারঅ্যাকশন স্টেকিং স্মার্ট চুক্তির মাধ্যমে নির্দিষ্ট ঠিকানায় করা হয়।
+
+স্টেকিং স্মার্ট চুক্তি সম্পর্কে আরও জানতে, অনুগ্রহ করে
+**[স্ট্যাকিং স্মার্ট কন্ট্রাক](/docs/edge/consensus/pos-concepts#contract-pre-deployment)** বিভাগটিতে যান।
+
+:::
+
+কোনো অ্যাড্রেসকে যাচাইকারীর সেটের একটি অংশ হতে, একটি থ্রেশহোল্ডের উপরে একটি নির্দিষ্ট পরিমাণ ফান্ড স্টেক করতে হবে।
+
+বর্তমানে, যাচাইকারীর সেটের অংশ হওয়ার জন্য ডিফল্ট থ্রেশহোল্ড হচ্ছে `1 ETH`।
+
+স্টেকিং স্মার্ট চুক্তির `stake` পদ্ধতি কল করে এবং একটি মান `>= 1 ETH` নির্দিষ্ট করে স্টেক করা শুরু করা যেতে পারে।
+
+`.env` ফাইলটি সেটআপের পরে
+যা [পূর্ববর্তী সেকশনে](/docs/edge/consensus/pos-stake-unstake#setting-up-the-provided-helper-scripts) উল্লেখ করা হয়েছিল এবং
+PoS মোডে চেইন শুরু করার পর, স্টেকিং স্মার্ট চুক্তির রেপোতে নিম্নলিখিত কমান্ড ব্যবহার করে স্টেক করা যেতে পারে:
+
+```bash
+npm run stake
+```
+
+`stake` হার্ডহ্যাট স্ক্রিপ্টটি ডিফল্ট পরিমাণ হিসেবে `1 ETH` স্টেক করে, যা `scripts/stake.ts` ফাইলে সংশোধন করে পরিবর্তন করা
+যেতে পারে।
+
+যদি স্টেক করা ফান্ড `>= 1 ETH` হয়, তাহলে স্ট্যাকিং স্মার্ট চুক্তির যাচাইকারীর সেট আপডেট করা হয় এবং ঠিকানাটি
+পরবর্তী epoch থেকে শুরু হওয়া যাচাইকারীর সেটের অংশ হয়ে যাবে।
+
+:::info BLS কী রেজিস্টার করা
+যদি নেটওয়ার্ক BLS মোডে চলমান হয়, তবে নোডকে ভ্যালিডেটর হতে হলে তাদের স্টেকিং এর পরে, তাদের BLS পাবলিক কী নিবন্ধন করতে হবে
+
+এটি নিম্নলিখিত কমান্ড ব্যবহার করে সম্পাদন করা যাবে:
+
+```bash
+npm run register-blskey
+```
+:::
+
+### ফান্ড আনস্টেক করা {#unstaking-funds}
+
+স্টেক থাকা ঠিকানাগুলো **শুধুমাত্র একবারে তাদের সমস্ত ফান্ড আনস্টেক** করতে পারে।
+
+`.env` ফাইলটি সেটআপের পরে
+যা [পূর্ববর্তী বিভাগে](/docs/edge/consensus/pos-stake-unstake#setting-up-the-provided-helper-scripts)
+উল্লেখ করা হয়েছিল এবং PoS মোডে একটি চেইন শুরু করার পর, স্টেকিং স্মার্ট চুক্তি রেপোতে নিম্নলিখিত কমান্ড ব্যবহার করে
+আনস্টেক করা যেতে পারে:
+
+```bash
+npm run unstake
+```
+
+### স্টেকারদের তালিকা পাওয়া {#fetching-the-list-of-stakers}
+
+স্টেক করা সকল ঠিকানাকে স্টেকিং স্মার্ট চুক্তিতে সংরক্ষণ করা হয়।
+
+`.env` ফাইলটি সেটআপের পরে
+যা [পূর্ববর্তী বিভাগে](/docs/edge/consensus/pos-stake-unstake#setting-up-the-provided-helper-scripts)
+উল্লেখ করা হয়েছিল এবং PoS মোডে একটি চেইন শুরু করার পরে, স্টেকিং স্মার্ট চুক্তি রেপোতে নিম্নলিখিত কমান্ড
+ব্যবহার করে যাচাইকারীদের তালিকা পাওয়া যাবে:
+
+```bash
+npm run info
+```
diff --git a/archive/edge/bn-edge/faq/Contracts.md b/archive/edge/bn-edge/faq/Contracts.md
new file mode 100644
index 0000000000..41179f9b59
--- /dev/null
+++ b/archive/edge/bn-edge/faq/Contracts.md
@@ -0,0 +1,24 @@
+---
+id: contracts
+title: স্মার্ট চুক্তির FAQ
+description: "Polygon Edge-এর স্মার্ট চুক্তির FAQ"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - FAQ
+ - smart
+ - contracts
+
+---
+
+## Polygon Edge কি স্মার্ট চুক্তি সমর্থন করে? {#does-polygon-edge-support-smart-contracts}
+
+হ্যাঁ। Polygon Edge নেটওয়ার্কগুলো Ethereum সমর্থিত ব্লকচেইন, তাই যেসব স্মার্ট চুক্তি Ethereum-এ ডিপ্লয় করা যায়, সেগুলো Polygon Edge-এও ডিপ্লয় করা যায়।
+
+## আপনি কি PoS ডিপ্লয় করার পরে স্ট্যাকিং চুক্তির লজিকটি আপডেট করতে পারেন? {#can-you-update-the-staking-contract-logic-for-pos-after-deployment}
+
+আপাতত, আপনি PoS নেটওয়ার্ক শুরু করার পর স্টেকিং চুক্তির লজিক পরিবর্তন করতে পারবেন না, কারণ এটি জেনেসিস ফাইলের অংশ। তাই আপনি, উদাহরণস্বরূপ, যাচাইকারীর সর্বনিম্ন/সর্বোচ্চ সীমা পরিবর্তন করতে পারবেন না। আপনি যাচাইকারী যোগ বা বাদ, স্টেক বা আনস্টেক করতে পারবেন।
+
+
+
diff --git a/archive/edge/bn-edge/faq/Gas.md b/archive/edge/bn-edge/faq/Gas.md
new file mode 100644
index 0000000000..c24e586d44
--- /dev/null
+++ b/archive/edge/bn-edge/faq/Gas.md
@@ -0,0 +1,41 @@
+---
+id: gas
+title: গ্যাস FAQ
+description: "Polygon Edge-এর গ্যাস FAQ"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - FAQ
+ - validators
+
+---
+
+## সর্বনিম্ন গ্যাস মূল্য কীভাবে জারি করবেন? {#how-to-enforce-a-minimum-gas-price}
+আপনি সার্ভার কমান্ডে প্রদত্ত `--price-limit` ফ্ল্যাগ ব্যবহার করতে পারেন। এটি আপনার নোডকে শুধুমাত্র সেইসব লেনদেন গ্রহণ করতে বাধ্য করবে যেখানে গ্যাসের দাম আপনার সেট করা মূল্যসীমার বেশি বা সমান। এটি সম্পূর্ণ নেটওয়ার্কে প্রয়োগ করা হয়েছে তা নিশ্চিত করতে, আপনাকে নিশ্চিত করতে হবে যে সকল নোডের একই মূল্যসীমা রয়েছে।
+
+
+## আপনি কি 0 গ্যাস ফি দিয়ে লেনদেন করতে পারবেন? {#can-you-have-transactions-with-0-gas-fees}
+হ্যাঁ, আপনি পারবেন। নোডগুলো যেটিকে ডিফল্ট মূল্যসীমা হিসাবে প্রয়োগ করে তা হলো `0`, অর্থাৎ নোডগুলো সেসকল লেনদেন গ্রহণ করবে যার মূল্যসীমা `0`-তে সেট করা আছে।
+
+## গ্যাস (নেটিভ) টোকেনের টোটাল সাপ্লাই কীভাবে সেট করবেন? {#how-to-set-the-gas-native-token-total-supply}
+
+আপনি `--premine flag` ব্যবহার করে অ্যাকাউন্টগুলোতে (ঠিকানা) আগে থেকে মাইন করা একটি ব্যালেন্স সেট করতে পারেন। অনুগ্রহ করে মনে রাখবেন যে এই কনফিগারেশনটি জেনেসিস ফাইলের অন্তর্ভুক্ত এবং এটা পরে পরিবর্তন করা যাবে না।
+
+কিভাবে `--premine flag` ব্যবহার করতে হবে তার উদাহরণ :
+
+`--premine=0x3956E90e632AEbBF34DEB49b71c28A83Bc029862:1000000000000000000000`
+
+এটি 0x3956E90e632AEbBF34DEB49b71c28A83Bc029862 ঠিকানায় আগে থেকে মাইন করা 1000 ETH ব্যালেন্স সেট করে (এই আর্গুমেন্টের পরিমাণ wei-এ আছে)।
+
+গ্যাস টোকেনের আগে থেকে মাইন করা পরিমাণই হল টোটাল সাপ্লাই। পরবর্তী সময়ে নেটিভ কারেন্সির (গ্যাস টোকেন) অন্য কোন পরিমাণ মিন্ট করা যাবে না।
+
+## Edge কি গ্যাস টোকেন হিসাবে ERC-20 সমর্থন করে? {#does-edge-support-erc-20-as-a-gas-token}
+
+Edge গ্যাস টোকেন হিসাবে ERC-20 সমর্থন করে না। গ্যাসের জন্য শুধুমাত্র নেটিভ Edge কারেন্সি সমর্থন করে।
+
+## গ্যাস লিমিট কীভাবে বৃদ্ধি করবেন? {#how-to-increase-the-gas-limit}
+
+Polygon Edge-এ গ্যাস লিমিট বাড়ানোর জন্য দুটি অপশন রয়েছে:
+1. চেইনটি মুছে ফেলা এবং জেনেসিস ফাইলে `block-gas-limit` uint64 মানের সর্বোচ্চতে বৃদ্ধি করা
+2. সকল নোডের গ্যাস লিমিট বাড়ানোর জন্য একটি উচ্চ মানের `--block-gas-target` ফ্ল্যাগ ব্যবহার করুন। এতে নোড পুনরায় চালু করার প্রয়োজন হয়। বিস্তারিত ব্যাখ্যা [এখানে](/docs/edge/architecture/modules/txpool/#block-gas-target)।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/faq/Tokens.md b/archive/edge/bn-edge/faq/Tokens.md
new file mode 100644
index 0000000000..31e4e582e9
--- /dev/null
+++ b/archive/edge/bn-edge/faq/Tokens.md
@@ -0,0 +1,24 @@
+---
+id: tokens
+title: টোকেন FAQ
+description: "Polygon Edge-এর টোকেনগুলোর জন্য FAQ"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - FAQ
+ - tokens
+---
+
+## Polygon Edge কি EIP-1559 সমর্থন করে? {#does-polygon-edge-support-eip-1559}
+আপাতত, Polygon Edge EIP-1559 সমর্থন করেনা।
+
+## কারেন্সি (টোকেন) সিম্বল কীভাবে সেট করতে হয়? {#how-to-set-the-currency-token-symbol}
+
+টোকেন সিম্বল UI-এর একটি অংশ, তাই এটি নেটওয়ার্কের কোথাও কনফিগার করা বা হার্ডকোডে করা যাবে না। কিন্তু আপনি মেটামাস্কের মতো একটি ওয়ালেটে নেটওয়ার্ককে যুক্ত করার সময় এটি পরিবর্তন করতে পারবেন।
+
+## একটি চেইন থেমে গেলে লেনদেনগুলোর কী হবে? {#what-happens-to-transactions-when-a-chain-halts}
+
+যেসমস্ত লেনদেন প্রক্রিয়া করা হয়নি, সেগুলো TxPool(এনকিউড বা প্রোমোটেড কিউ) এর মধ্যে আছে। চেইনটি থেমে গেলে (সকল ব্লক উৎপাদন বন্ধ হয়ে গেলে), এই লেনদেনগুলো কখনোই ব্লকে যাবে না।
+এটিই চেইন থামার একমাত্র ফলাফল নয়। যদি নোডগুলো থামানো হয় বা পুনরায় চালু করা হয়, তাহলে যে সমস্ত লেনদেনগুলো এখনও এক্সিকিউট হয়নি এবং এখনও TxPool-এর মধ্যে আছে সেগুলো বিনা বার্তায় মুছে যাবে।
+ব্রেকিং চেঞ্জ নিয়ে আসার সময় সেসব লেনদেনেরও একই অবস্থা হবে, কারণ ব্রেকিং চেঞ্জে নোডগুলোকে পুনরায় চালু করতে হয়।
diff --git a/archive/edge/bn-edge/faq/Validators.md b/archive/edge/bn-edge/faq/Validators.md
new file mode 100644
index 0000000000..ae523e7f26
--- /dev/null
+++ b/archive/edge/bn-edge/faq/Validators.md
@@ -0,0 +1,85 @@
+---
+id: validators
+title: যাচাইকারীর FAQ
+description: "Polygon Edge-এর যাচাইকারীর FAQ"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - FAQ
+ - validators
+
+---
+
+## কিভাবে একজন যাচাইকারী যোগ/অপসারণ করবেন? {#how-to-add-remove-a-validator}
+
+### PoA {#poa}
+যাচাইকারী যোগ/অপসারণ ভোটিং দ্বারা সম্পন্ন করা হয়। আপনি [এখানে](/docs/edge/consensus/poa) এই সম্পর্কে একটি সম্পূর্ণ নির্দেশিকা খুঁজে পেতে পারেন।
+
+### PoS {#pos}
+আপনি [এখানে](/docs/edge/consensus/pos-stake-unstake) ফান্ড স্টেক করার নির্দেশিকা খুঁজে পেতে পারেন, যাতে একটি নোড একটি যাচাইকারী হতে পারে এবং আনস্টেক করার নির্দেশিকাও পাবেন (যাচাইকারী অপসারণ করার)।
+
+দয়া করে নোট করুন:
+- আপনি `--max-validator-count` জেনেসিস ফ্ল্যাগ ব্যবহার করে যাচাইকারীর সেটে সর্বোচ্চ যত সংখ্যক স্ট্যাকার যোগ করতে পারেন তা সেট করতে পারেন।
+- আপনি `--min-validator-count ` জেনেসিস ফ্ল্যাগ ব্যবহার করে যাচাইকারীর সেটে সর্বনিম্ন যত সংখ্যক স্ট্যাকার যোগ করতে পারেন তা সেট করতে পারেন (ডিফল্টরূপে `1`)।
+- যখন সর্বোচ্চ যাচাইকারী সংখ্যা পূরণ করা হয়, আপনি অন্য যাচাইকারী যোগ করতে পারবেন না যতক্ষণ না আপনি সেট থেকে একটি বিদ্যমান একটি অপসারণ করেন (নতুন জনের স্ট্যাকের পরিমাণ বেশি হলেও সমস্যা নেই)। আপনি যদি কোন যাচাইকারী অপসারণ করেন, তবে কখনোই অবশিষ্ট যাচাইকারীর সংখ্যা `--min-validator-count` এর কম হতে পারবে না।
+- যাচাইকারী হতে নেটিভ নেটওয়ার্ক (গ্যাস) মুদ্রার ডিফল্ট থ্রেশহোল্ড হচ্ছে `1` ইউনিট।
+
+
+
+## যাচাইকারীর জন্য ডিস্ক কতটা খালি রাখার বিষয়ে সুপারিশ করা হয়? {#how-much-disk-space-is-recommended-for-a-validator}
+
+আমরা একটি রক্ষণশীল আনুমানিক রানওয়ে হিসাবে 100G দিয়ে শুরু করার পরামর্শ দিচ্ছি এবং নিশ্চিত করি যেন ডিস্কটি পরে স্কেল করা যায়।
+
+
+## যাচাইকারীর সংখ্যায় কি কোনো সীমা আছে? {#is-there-a-limit-to-the-number-of-validators}
+
+আমরা যদি প্রযুক্তিগত সীমাবদ্ধতার কথা বলি, তাহলে একটি নেটওয়ার্কে কতটি নোড থাকতে পারে সে ব্যাপারে Polygon Edge-এর কোনো প্রকাশ্য সীমাবদ্ধতা নেই। আপনি প্রতিটি নোডে আলাদাভাবে সংযোগের সীমাবদ্ধতা (ইনবাউন্ড / আউটবাউন্ড সংযোগের সংখ্যা) সেট করতে পারেন।
+
+আমরা যদি বাস্তব সীমাবদ্ধতা সম্পর্কে কথা বলি, তাহলে আপনি একটি 10 নোড ক্লাস্টারের তুলনায় একটি 100 নোড ক্লাস্টারে অনেক দূর্বল পারফর্ম্যান্স পাবেন। আপনার ক্লাস্টারে নোডের সংখ্যা বৃদ্ধি করার মাধ্যমে, আপনি যোগাযোগের জটিলতা এবং আরো স্পষ্টভাবে বললে পুরো নেটওয়ার্কে চাপ বাড়িয়ে দেন। এই সবকিছু আপনি কী ধরনের নেটওয়ার্ক রান করছেন এবং আপনার কী ধরনের নেটওয়ার্ক টপোলজি রয়েছে তার উপর নির্ভর করে।
+
+## PoA থেকে PoS-এ কিভাবে সুইচ করবেন? {#how-to-switch-from-poa-to-pos}
+
+PoA হচ্ছে ডিফল্ট কনসেনসাস মেকানিজম। একটি নতুন ক্লাস্টার PoS-এ সুইচ করতে, জেনেসিস ফাইল তৈরি করার সময় আপনাকে `--pos` ফ্ল্যাগ যোগ করতে হবে। আপনার যদি কোনো চলমান ক্লাস্টার থাকে, তাহলে আপনি সুইচ কিভাবে করতে হয় তা [এখানে](/docs/edge/consensus/migration-to-pos) পাবেন। আমাদের কনসেনসাস মেকানিজম এবং সেটআপ সম্পর্কে আপনার প্রয়োজনীয় সমস্ত তথ্য আমাদের [কনসেনসাস বিভাগে](/docs/edge/consensus/poa) পেতে পারেন।
+
+## কোনো ব্রেকিং পরিবর্তন থাকলে আমি কিভাবে আমার নোড আপডেট করব? {#how-do-i-update-my-nodes-when-there-s-a-breaking-change}
+
+আপনি [এখানে](/docs/edge/validator-hosting#update) এই পদ্ধতি কিভাবে করতে হয় তার একটি বিস্তারিত নির্দেশিকা খুঁজে পাবেন।
+
+## PoS Edge-এর জন্য কি স্ট্যাকিং-এর সর্বনিম্ন পরিমাণ কনফিগার করা যাবে? {#is-the-minimum-staking-amount-configurable-for-pos-edge}
+
+ডিফল্টরূপে স্ট্যাকিং-এর সর্বনিম্ন পরিমাণ হচ্ছে `1 ETH` এবং এটি কনফিগার করা যাবে না।
+
+## JSON RPC কমান্ড `eth_getBlockByNumber` এবং `eth_getBlockByHash` কেন মাইনারের ঠিকানা ফেরত দেয় না? {#not-return-the-miner-s-address}
+
+Polygon Edge-এ বর্তমানে ব্যবহৃত কনসেনসাস হচ্ছে IBFT 2.0, যা ভোটিং মেকানিজমের উপর ভিত্তি করে নির্মাণ করা হয়েছে, এটি Clique PoA-তে বিস্তারিত বর্ণনা করা হয়েছে: [ethereum/EIPs#225](https://github.com/ethereum/EIPs/issues/225)
+
+EIP-225 (Clique PoA) দেখে আমরা বলতে পারি, এটি একটি প্রাসঙ্গিক অংশ যা ব্যাখ্যা করে `miner` (`beneficiary` নামেও পরিচিত) কেন ব্যবহার করা হয়:
+
+
+আমরা নিম্নরূপে ethash হেডার ফিল্ডটি রিপারপোজ করেছি:
+
+- বেনিফিশিয়ারি / মাইনার: অনুমোদিত স্বাক্ষরকারীদের তালিকা সংশোধনের প্রস্তাব করার ঠিকানা।
+
+- স্বাভাবিকভাবে শূন্য দিয়ে পূর্ণ থাকা উচিত, তবে শুধুমাত্র ভোটের সময় পরিবর্তন করা যায়।
+- ভোটিং পদ্ধতির বাস্তবায়নে অতিরিক্ত জটিলতা এড়াতে আর্বিট্রারি মানগুলি (এমনকি অ-স্বাক্ষরকারীদের ভোট দেওয়ার মতো অর্থহীনগুলোও) অনুমোদন করা হয়।
+- চেকপয়েন্ট (অর্থাৎ epoch ট্রানজিশনে) ব্লকে শূন্য দিয়ে পূর্ণ থাকা উচিত।
+
+
+
+
+
+
+সুতরাং, `miner` ক্ষেত্রটি ব্লকের প্রস্তাবক দেখানোর পরিবর্তে একটি নির্দিষ্ট ঠিকানার জন্য কোনো ভোট প্রস্তাব করতে ব্যবহার করা হয়।
+
+ব্লকের প্রস্তাবক সম্পর্কে তথ্য ব্লক হেডারের RLP এনকোডেড ইস্তাম্বুল অতিরিক্ত ডেটা ক্ষেত্রের সীল ক্ষেত্র থেকে pubkey পুনরুদ্ধার করে খুঁজে পাওয়া যেতে পারে।
+
+## জেনেসিস কোন অংশ এবং মানকে নিরাপদে পরিবর্তন করা যেতে পারে? {#which-parts-and-values-of-genesis-can-safely-be-modified}
+
+:::caution
+
+অনুগ্রহ করে এটি সম্পাদনা করার চেষ্টা করার আগে বিদ্যমান genesis.json ফাইলের একটি ম্যানুয়াল কপি তৈরি করতে ভুল. ে। এছাড়াও, genesis.json ফাইল সম্পাদনা করার আগে পুরো চেইনটি বন্ধ করতে হবে। জেনেসিস ফাইল পরিবর্তন করা হলে এর নতুন সংস্করণ সকল non-validator এবং valdiator nodes জুড়ে বিতরণ করতে হবে।
+
+:::
+
+**শুধুমাত্র জেনেসিস ফাইলের bootnodes বিভাগে নিরাপদে পরিবর্তন করা যেতে পারে**, যেখানে আপনি তালিকা থেকে bootnodes যোগ বা অপসারণ করতে পারেন।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/get-started/cli-commands.md b/archive/edge/bn-edge/get-started/cli-commands.md
new file mode 100644
index 0000000000..9d64a1a091
--- /dev/null
+++ b/archive/edge/bn-edge/get-started/cli-commands.md
@@ -0,0 +1,2220 @@
+---
+id: cli-commands
+title: CLI কমান্ড
+description: "Polygon Edge-এর CLI কমান্ড এবং কমান্ড ফ্ল্যাগের তালিকা।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - cli
+ - commands
+ - flags
+---
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+এই বিভাগে Polygon Edge-এ্রর বর্তমান কমান্ড, কমান্ড ফ্ল্যাগ এবং কিভাবে তাদের ব্যবহার করা হয় তার বিস্তারিত বর্ণনা করা হয়েছিল।
+
+:::tip JSON আউটপুট সমর্থন
+
+কিছু কমান্ডে `--json` ফ্ল্যাগটি সমর্থিত। এই ফ্ল্যাগ JSON ফরম্যাটে আউটপুট প্রিন্ট করতে কমান্ডকে নির্দেশনা প্রদান করে
+
+:::
+
+## স্টার্টআপ কমান্ড {#startup-commands}
+
+| **কমান্ড** | **বিবরণ** |
+|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| সার্ভার | সকল মডিউলকে একসাথে বুটস্ট্র্যাপ করার ব্লকচেইন ক্লায়েন্ট চালু করার ডিফল্ট কমান্ড |
+| জেনেসিস | একটি *genesis.json* ফাইল তৈরি করে, যা ক্লায়েন্ট শুরু করার আগে একটি পূর্বনির্ধারিত চেইন স্টেট সেট করতে ব্যবহার করা হয়। জেনেসিস ফাইলের গঠন নিচে বর্ণনা করা হয়েছে |
+| জেনেসিস প্রি-ডিপ্লয় | নতুন নেটওয়ার্কের জন্য একটি স্মার্ট চুক্তি প্রি-ডিপ্লয় করে |
+
+### সার্ভার ফ্ল্যাগ {#server-flags}
+
+
+| **সকল সার্ভার ফ্ল্যাগ** |
+|---------------------------------------|---------------------------------------------|
+| [data-dir](/docs/edge/get-started/cli-commands#data-dir) | [jsonrpc](/docs/edge/get-started/cli-commands#jsonrpc) |
+| [json-rpc-block-range-limit](/docs/edge/get-started/cli-commands#json-rpc-block-range-limit) | [json-rpc-batch-request-limit](/docs/edge/get-started/cli-commands#json-rpc-batch-request-limit) |
+| [grpc](/docs/edge/get-started/cli-commands#grpc) | [libp2p](/docs/edge/get-started/cli-commands#libp2p) |
+| [prometheus](/docs/edge/get-started/cli-commands#prometheus) | [block-gas-target](/docs/edge/get-started/cli-commands#block-gas-target) |
+| [max-peers](/docs/edge/get-started/cli-commands#max-peers) | [max-inbound-peers](/docs/edge/get-started/cli-commands#max-inbound-peers) |
+| [max-outbound-peers](/docs/edge/get-started/cli-commands#max-outbound-peers) | [max-enqueued](/docs/edge/get-started/cli-commands#max-enqueued) |
+| [log-level](/docs/edge/get-started/cli-commands#log-level) | [log-to](/docs/edge/get-started/cli-commands#log-to) |
+| [চেইন](/docs/edge/get-started/cli-commands#chain) | [যোগদান](/docs/edge/get-started/cli-commands#join) |
+| [nat](/docs/edge/get-started/cli-commands#nat) | [dns](/docs/edge/get-started/cli-commands#dns) |
+| [price-limit](/docs/edge/get-started/cli-commands#price-limit) | [max-slots](/docs/edge/get-started/cli-commands#max-slots) |
+| [কনফিগ](/docs/edge/get-started/cli-commands#config) | [secrets-config](/docs/edge/get-started/cli-commands#secrets-config) |
+| [dev](/docs/edge/get-started/cli-commands#dev) | [dev-interval](/docs/edge/get-started/cli-commands#dev-interval) |
+| [no-discover](/docs/edge/get-started/cli-commands#no-discover) | [পুনরুদ্ধার](/docs/edge/get-started/cli-commands#restore) |
+| [block-time](/docs/edge/get-started/cli-commands#block-time) | [access-control-allow-origins](/docs/edge/get-started/cli-commands#access-control-allow-origins) |
+
+
+#### data-dir
+
+
+
+
+ server [--data-dir DATA_DIRECTORY]
+
+
+
+
+ server --data-dir ./example-dir
+
+
+
+
+Polygon Edge ক্লায়েন্ট ডেটা সংরক্ষণ করার জন্য ব্যবহৃত ডাটা ডিরেক্টরি নির্দিষ্ট করতে ব্যবহৃত হয়। ডিফল্ট: `./test-chain`।
+
+---
+
+
+#### jsonrpc
+
+
+
+
+ server [--jsonrpc JSONRPC_ADDRESS]
+
+
+
+
+ server --jsonrpc 127.0.0.1:10000
+
+
+
+
+JSON-RPC পরিষেবা `address:port`-এর জন্য ঠিকানা এবং পোর্ট সেট করে।
+শুধুমাত্র একটি পোর্ট `:10001`-এ সংজ্ঞায়িত করা হয়, তাহলে এটি সমস্ত `0.0.0.0:10001` ইন্টারফেসে বাইন্ড করবে।
+যদি বাদ দেওয়া হয়, তবে পরিষেবাটি ডিফল্ট মান `address:port` দিয়ে বাইন্ড করবে।
+ডিফল্ট ঠিকানা: `0.0.0.0:8545`।
+
+---
+
+#### json-rpc-block-range-limit
+
+
+
+
+ server [--json-rpc-block-range-limit BLOCK_RANGE]
+
+
+
+
+ server --json-rpc-block-range-limit 1500
+
+
+
+
+json-rpc অনুরোধ সম্পাদন করার সময় সর্বাধিক ব্লক পরিসীমা বিবেচনা করা হবে যা fromBlock/toBlock মান (e.g. eth_getLogs) অন্তর্ভুক্ত করে। ডিফল্ট:`1000`।
+
+---
+
+#### json-rpc-batch-request-limit
+
+
+
+
+ server [--json-rpc-batch-request-limit MAX_LENGTH]
+
+
+
+
+ server --json-rpc-batch-request-limit 50
+
+
+
+
+json-rpc ব্যাচ অনুরোধ পরিচালনা করার সময় সর্বোচ্চ দৈর্ঘ্য বিবেচনা করা হবে। ডিফল্ট: `20`।
+
+---
+
+#### grpc
+
+
+
+
+ server [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ server --grpc-address 127.0.0.1:10001
+
+
+
+
+gRPC পরিষেবাটির জন্য ঠিকানা এবং পোর্ট `address:port` সেট করে। ডিফল্ট ঠিকানা: `127.0.0.1:9632`।
+
+---
+
+#### libp2p
+
+
+
+
+ server [--libp2p LIBP2P_ADDRESS]
+
+
+
+
+ server --libp2p 127.0.0.1:10002
+
+
+
+
+libp2p পরিষেবাটির জন্য ঠিকানা এবং পোর্ট `address:port` সেট করে। ডিফল্ট ঠিকানা: `127.0.0.1:1478`।
+
+---
+
+#### prometheus
+
+
+
+
+ server [--prometheus PROMETHEUS_ADDRESS]
+
+
+
+
+ server --prometheus 127.0.0.1:10004
+
+
+
+
+Prometheus সার্ভার `address:port` এর জন্য ঠিকানা এবং পোর্ট সেট করে।
+যদি শুধুমাত্র একটি পোর্ট `:5001` এ সংজ্ঞায়িত করা হয়, তাহলে সার্ভিসটি সব `0.0.0.0:5001` ইন্টারফেসকে বাইন্ড করবে।
+যদি বাদ দেওয়া হয়, তবে পরিষেবাটি চালু হবে না।
+
+---
+
+#### block-gas-target
+
+
+
+
+ server [--block-gas-target BLOCK_GAS_TARGET]
+
+
+
+
+ server --block-gas-target 10000000
+
+
+
+
+চেইনের জন্য টার্গেট ব্লক গ্যাস সীমা সেট করে। ডিফল্ট (প্রয়োগ করা হয় না): `0`।
+
+ব্লক গ্যাস টার্গেটের উপর একটি আরো বিস্তারিত ব্যাখ্যা [TxPool বিভাগে](/docs/edge/architecture/modules/txpool#block-gas-target) পাওয়া যেতে পারে।
+
+---
+
+#### max-peers
+
+
+
+
+ server [--max-peers PEER_COUNT]
+
+
+
+
+ server --max-peers 40
+
+
+
+
+ক্লায়েন্টের সর্বোচ্চ পিয়ারের সংখ্যা সেট করে। ডিফল্ট: `40`।
+
+পিয়ার সীমা `max-inbound/outbound-peers` বা `max-peers` ফ্ল্যাগ ব্যবহার করে নির্দিষ্ট করা উচিত।
+
+---
+
+#### max-inbound-peers
+
+
+
+
+ server [--max-inbound-peers PEER_COUNT]
+
+
+
+
+ server --max-inbound-peers 32
+
+
+
+
+ক্লায়েন্টের সর্বোচ্চ ইনবাউন্ড পিয়ারের সংখ্যা সেট করে। যদি `max-peers` সেট করা হয়, তাহলে নিম্নলিখিত সূত্র ব্যবহার করে সর্বোচ্চ-ইনবাউন্ড-পিয়ার সীমা গণনা করা হয়।
+
+`max-inbound-peer = InboundRatio * max-peers` হচ্ছে `0.8` যেখানে `InboundRatio`।
+
+---
+
+#### max-outbound-peers
+
+
+
+
+ server [--max-outbound-peers PEER_COUNT]
+
+
+
+
+ server --max-outbound-peers 8
+
+
+
+
+ক্লায়েন্টের সর্বোচ্চ আউটবাউন্ড পিয়ারের সংখ্যা সেট করে। যদি `max-peers` সেট করা হয়, তাহলে নিম্নলিখিত সূত্র ব্যবহার করে সর্বোচ্চ-আউটবাউন্ড-পিয়ার গণনা করা হয়।
+
+`max-outbound-peer = OutboundRatio * max-peers` হচ্ছে `0.2` যেখানে `OutboundRatio`।
+
+---
+
+#### max-enqueued
+
+
+
+
+ server [--max-enqueued ENQUEUED_TRANSACTIONS]
+
+
+
+
+ server --max-enqueued 210
+
+
+
+
+প্রতি অ্যাকাউন্টে এনকিউ করা লেনদেনের সর্বোচ্চ সংখ্যা সেট করে। ডিফল্ট:`128`।
+
+---
+
+#### log-level
+
+
+
+
+ server [--log-level LOG_LEVEL]
+
+
+
+
+ server --log-level DEBUG
+
+
+
+
+কনসোল আউটপুটের জন্য লগের লেভেল সেট করে। ডিফল্ট: `INFO`।
+
+---
+
+#### log-to
+
+
+
+
+ server [--log-to LOG_FILE]
+
+
+
+
+ server --log-to node.log
+
+
+
+
+সার্ভার কমান্ড থেকে সমস্ত লগ আউটপুট ধারণকারী লগ ফাইলের নামকে সংজ্ঞায়িত করে।
+ডিফল্টরূপে, সমস্ত সার্ভার লগ কনসোলে (stdout) আউটপুট করা হবে,
+তবে যদি ফ্ল্যাগ সেট করা হয়, তাহলে সার্ভার কমান্ড চালানোর সময় কনসোলে কোন আউটপুট হবে না।
+
+---
+
+#### চেইন
+
+
+
+
+ server [--chain GENESIS_FILE]
+
+
+
+
+ server --chain /home/ubuntu/genesis.json
+
+
+
+
+চেইন শুরু করার জন্য ব্যবহৃত জেনেসিস ফাইল নির্দিষ্ট করে। ডিফল্ট: `./genesis.json`।
+
+---
+
+#### যোগদান
+
+
+
+
+ server [--join JOIN_ADDRESS]
+
+
+
+
+ server --join /ip4/127.0.0.1/tcp/10001/p2p/16Uiu2HAmJxxH1tScDX2rLGSU9exnuvZKNM9SoK3v315azp68DLPW
+
+
+
+
+পিয়ারের ঠিকানা নির্দিষ্ট করে যা যোগ করা উচিত।
+
+---
+
+#### nat
+
+
+
+
+ server [--nat NAT_ADDRESS]
+
+
+
+
+ server --nat 192.0.2.1
+
+
+
+
+পোর্ট ছাড়া বহিরাগত আইপি ঠিকানা সেট করে, কারণ এটি পিয়ার্স দ্বারা দেখা যেতে পারে।
+
+---
+
+#### dns
+
+
+
+
+ server [--dns DNS_ADDRESS]
+
+
+
+
+ server --dns dns4/example.io
+
+
+
+
+হোস্ট DNS ঠিকানা সেট করে। এটি একটি বহিরাগত DNS বিজ্ঞাপন করার জন্য ব্যবহার করা যেতে পারে। `dns`,`dns4`,`dns6` সমর্থন করে।
+
+---
+
+#### price-limit
+
+
+
+
+
+ server [--price-limit PRICE_LIMIT]
+
+
+
+
+ server --price-limit 10000
+
+
+
+
+পুলের মধ্যে স্বীকৃতির জন্য প্রয়োগ করার জন্য ন্যূনতম গ্যাসের মূল্যের সীমা সেট করে। ডিফল্ট: `1`।
+
+---
+
+#### max-slots
+
+
+
+
+ server [--max-slots MAX_SLOTS]
+
+
+
+
+ server --max-slots 1024
+
+
+
+
+পুলের মধ্যে সর্বোচ্চ স্লট সেট করে। ডিফল্ট: `4096`।
+
+---
+
+#### কনফিগ
+
+
+
+
+ server [--config CLI_CONFIG_PATH]
+
+
+
+
+ server --config ./myConfig.json
+
+
+
+
+CLI কনফিগের পাথ নির্দিষ্ট করে। `.json` সমর্থন করে।
+
+---
+
+#### secrets-config
+
+
+
+
+ server [--secrets-config SECRETS_CONFIG]
+
+
+
+
+ server --secrets-config ./secretsManagerConfig.json
+
+
+
+
+SecretsManager কনফিগ ফাইলের পাথ সেট করে। Hashicorp Vault, AWS SSM এবং GCP সিক্রেট ম্যানেজারের জন্য ব্যবহৃত হয়। যদি বাদ দেওয়া হয়, তাহলে স্থানীয় FS সিক্রেট ম্যানেজার ব্যবহার করা হয়।
+
+---
+
+#### dev
+
+
+
+
+ server [--dev DEV_MODE]
+
+
+
+
+ server --dev
+
+
+
+
+ক্লায়েন্ট dev মোডে সেট করে। ডিফল্ট: `false`। dev মোডে, ডিফল্টরূপে পিয়ারের আবিষ্কার নিষ্ক্রিয় করা হয়।
+
+---
+
+#### dev-interval
+
+
+
+
+ server [--dev-interval DEV_INTERVAL]
+
+
+
+
+ server --dev-interval 20
+
+
+
+
+সেকেন্ডে ক্লায়েন্টের dev নোটিফিকেশনের ইন্টারভেল সেট করে। ডিফল্ট: `0`।
+
+---
+
+#### no-discover
+
+
+
+
+ server [--no-discover NO_DISCOVER]
+
+
+
+
+ server --no-discover
+
+
+
+
+অন্যান্য পিয়ার্স আবিষ্কার করতে ক্লায়েন্টকে বাধা দেয়। ডিফল্ট: `false`।
+
+---
+
+#### পুনরুদ্ধার
+
+
+
+
+ server [--restore RESTORE]
+
+
+
+
+ server --restore backup.dat
+
+
+
+
+নির্দিষ্ট আর্কাইভ ফাইল থেকে ব্লক পুনরুদ্ধার করুন
+
+---
+
+#### block-time
+
+
+
+
+ server [--block-time BLOCK_TIME]
+
+
+
+
+ server --block-time 1000
+
+
+
+
+সেকেন্ডে ব্লক উত্পাদনের সময় সেট করে। ডিফল্ট: `2`
+
+---
+
+#### access-control-allow-origins
+
+
+
+ server [--access-control-allow-origins ACCESS_CONTROL_ALLOW_ORIGINS]
+
+
+
+
+ server --access-control-allow-origins "https://edge-docs.polygon.technology"
+
+
+
+
+JSON-RPC অনুরোধ থেকে প্রতিক্রিয়া শেয়ার করতে অনুমোদিত ডোমেন সেট করে।
+একাধিক ডোমেন অনুমোদন করতে একাধিক `--access-control-allow-origins "https://example1.com" --access-control-allow-origins "https://example2.com"` ফ্ল্যাগ যোগ করুন।
+যদি বাদ দেওয়া Access-Control-Allow-Origins হেডার `*` এ সেট করা হলে সমস্ত ডোমেন অনুমোদন করা হবে।
+
+---
+
+### জেনেসিস ফ্ল্যাগ {#genesis-flags}
+| **সকল জেনেসিস ফ্ল্যাগ** |
+|---------------------------------------|---------------------------------------------|
+| [dir](/docs/edge/get-started/cli-commands#dir) | [নাম](/docs/edge/get-started/cli-commands#name) |
+| [pos](/docs/edge/get-started/cli-commands#pos) | [epoch-size](/docs/edge/get-started/cli-commands#epoch-size) |
+| [premine](/docs/edge/get-started/cli-commands#premine) | [chainid](/docs/edge/get-started/cli-commands#chainid) |
+| [ibft-validator-type](/docs/edge/get-started/cli-commands#ibft-validator-type) | [ibft-validators-prefix-path](/docs/edge/get-started/cli-commands#ibft-validators-prefix-path) |
+| [ibft-validator](/docs/edge/get-started/cli-commands#ibft-validator) | [block-gas-limit](/docs/edge/get-started/cli-commands#block-gas-limit) |
+| [কনসেনসাস](/docs/edge/get-started/cli-commands#consensus) | [bootnode](/docs/edge/get-started/cli-commands#bootnode) |
+| [max-validator-count](/docs/edge/get-started/cli-commands#max-validator-count) | [min-validator-count](/docs/edge/get-started/cli-commands#min-validator-count) |
+
+
+#### dir
+
+
+
+
+ genesis [--dir DIRECTORY]
+
+
+
+
+ genesis --dir ./genesis.json
+
+
+
+
+Polygon Edge জেনেসিস ডেটার জন্য ডিরেক্টরি সেট করে। ডিফল্ট: `./genesis.json`।
+
+---
+
+#### নাম
+
+
+
+
+ genesis [--name NAME]
+
+
+
+
+ genesis --name test-chain
+
+
+
+
+চেইনের নাম সেট করে। ডিফল্ট: `polygon-edge`।
+
+---
+
+#### pos
+
+
+
+
+ genesis [--pos IS_POS]
+
+
+
+
+ genesis --pos
+
+
+
+
+ফ্ল্যাগ সেট করে যা প্রুফ অফ স্ট্যাক IBFT ব্যবহার করতে হবে বলে ইঙ্গিত করে।
+যদি ফ্ল্যাগ প্রদান করা না হয় বা `false` হয়, তাহলে ডিফল্ট প্রুফ অফ অথোরিটিতে ফিরে যায়।
+
+---
+
+#### epoch-size
+
+
+
+
+ genesis [--epoch-size EPOCH_SIZE]
+
+
+
+
+ genesis --epoch-size 50
+
+
+
+
+চেইনের জন্য epoch আকার সেট করে। ডিফল্ট `100000`।
+
+---
+
+#### premine
+
+
+
+
+ genesis [--premine ADDRESS:VALUE]
+
+
+
+
+ genesis --premine 0x3956E90e632AEbBF34DEB49b71c28A83Bc029862:1000000000000000000000
+
+
+
+
+`address:amount` ফরম্যাটে আগে থেকে মাইন করা অ্যাকাউন্ট এবং ব্যলেন্স সেট করে।
+পরিমাণটি দশমিক বা হেক্সে প্রকাশ করা হবে।
+ডিফল্ট প্রি-মাইন ব্যালেন্স: `0xD3C21BCECCEDA1000000`(1 মিলিয়ন নেটিভ মুদ্রার টোকেন)।
+
+---
+
+#### chainid
+
+
+
+
+ genesis [--chain-id CHAIN_ID]
+
+
+
+
+ genesis --chain-id 200
+
+
+
+
+চেইনের আইডি সেট করে। ডিফল্ট: `100`।
+
+---
+
+#### ibft-validator-type
+
+
+
+
+ genesis [--ibft-validator-type IBFT_VALIDATOR_TYPE]
+
+
+
+
+ genesis --ibft-validator-type ecdsa
+
+
+
+
+ব্লক হেডারের বৈধতা মোড নির্দিষ্ট করে। সম্ভাব্য মান: `[ecdsa, bls]`। ডিফল্ট: `bls`।
+
+---
+
+#### ibft-validators-prefix-path
+
+
+
+
+ genesis [--ibft-validators-prefix-path IBFT_VALIDATORS_PREFIX_PATH]
+
+
+
+
+ genesis --ibft-validators-prefix-path test-chain-
+
+
+
+
+যাচাইকারী ফোল্ডার ডিরেক্টরির আগে থেকে নির্ধারিত পাথ। `ibft-validator` ফ্ল্যাগ বাদ দেওয়া হলে উপস্থিত থাকতে হবে।
+
+---
+
+#### ibft-validator
+
+
+
+
+ genesis [--ibft-validator IBFT_VALIDATOR_LIST]
+
+
+
+
+ genesis --ibft-validator 0xC12bB5d97A35c6919aC77C709d55F6aa60436900
+
+
+
+
+IBFT যাচাইকারী হিসাবে ঠিকানা পাস করে। `ibft-validators-prefix-path` ফ্ল্যাগ বাদ দেওয়া হলে উপস্থিত থাকতে হবে।
+1. যদি নেটওয়ার্ক ECDSA দিয়ে চলমান হয়, তাহলে ফরম্যাটটি হবে `--ibft-validator [ADDRESS]`।
+2. যদি নেটওয়ার্ক BLS দিয়ে চলমান হয়, তাহলে ফরম্যাটটি হবে `--ibft-validator [ADDRESS]:[BLS_PUBLIC_KEY]`।
+
+---
+
+#### block-gas-limit
+
+
+
+
+ genesis [--block-gas-limit BLOCK_GAS_LIMIT]
+
+
+
+
+ genesis --block-gas-limit 5000000
+
+
+
+
+একটি ব্লকে সমস্ত অপারেশন দ্বারা ব্যবহৃত সর্বোচ্চ পরিমাণ গ্যাস দেখুন। ডিফল্ট: `5242880`।
+
+---
+
+#### কনসেনসাস
+
+
+
+
+ genesis [--consensus CONSENSUS_PROTOCOL]
+
+
+
+
+ genesis --consensus ibft
+
+
+
+
+কনসেনসাস প্রোটোকল সেট করে। ডিফল্ট: `pow`।
+
+---
+
+#### bootnode
+
+
+
+
+ genesis [--bootnode BOOTNODE_URL]
+
+
+
+
+ genesis --bootnode /ip4/127.0.0.1/tcp/10001/p2p/16Uiu2HAmJxxH1tScDX2rLGSU9exnuvZKNM9SoK3v315azp68DLPW
+
+
+
+
+p2p ডিসকভারি বুটস্ট্র্যাপের জন্য Multiaddr URL। এই ফ্ল্যাগটি একাধিক বার ব্যবহার করা যেতে পারে।
+একটি আইপি ঠিকানার পরিবর্তে, bootnode DNS ঠিকানা প্রদান করা যেতে পারে।
+
+---
+
+#### max-validator-count
+
+
+
+
+ genesis [--max-validator-count MAX_VALIDATOR_COUNT]
+
+
+
+
+ genesis --max-validator-count 42
+
+
+
+
+একটি PoS কনসেনসাসের যাচাইকারীর সেটে যোগ করতে সক্ষম সর্বোচ্চ স্ট্যাকারের সংখ্যা।
+এই সংখ্যা MAX_SAFE_INTEGER (2^53 - 2) মান অতিক্রম করতে পারবে না।
+
+---
+
+#### min-validator-count
+
+
+
+
+ genesis [--min-validator-count MIN_VALIDATOR_COUNT]
+
+
+
+
+ genesis --min-validator-count 4
+
+
+
+
+একটি PoS কনসেনসাসের যাচাইকারী সেটে যোগ করতে সক্ষম সর্বনিম্ন স্ট্যাকারের সংখ্যা।
+এই সংখ্যা max-validator-count মান অতিক্রম করতে পারবে না।
+1-এ ডিফল্ট হবে।
+
+---
+
+### জেনেসিস প্রি-ডিপ্লয় ফ্ল্যাগ {#genesis-predeploy-flags}
+
+artifacts-path
+
+
+
+
+ genesis predeploy [--artifacts-path PATH_TO_ARTIFACTS]
+
+
+
+
+ genesis predeploy --artifacts-path ./ArtifactsData.json
+
+
+
+
+চুক্তি artifacts JSON পথ সেট করে যাতে `abi`, `bytecode` এবং `deployedBytecode` থাকে।
+
+---
+
+চেইন
+
+
+
+
+ genesis predeploy [--chain PATH_TO_GENESIS]
+
+
+
+
+ genesis predeploy --chain ./genesis.json
+
+
+
+
+`genesis.json` ফাইলের পাথ সেট করে যা আপডেট করা উচিত। ডিফল্ট `./genesis.json`।
+
+---
+
+constructor-args
+
+
+
+
+ genesis predeploy [--constructor-args CONSTRUCTOR_ARGUMENT]
+
+
+
+
+ genesis predeploy --constructor-args 123
+
+
+
+
+যদি থাকে তবে স্মার্ট চুক্তি কনস্ট্রাক্টর আর্গুমেন্ট সেট করে। এই আর্গুমেন্ট কীরকম দেখতে উচিত তার উপর একটি বিস্তারিত নির্দেশিকার জন্য, [প্রিডিপ্লয়মেন্ট নিবন্ধটি](/docs/edge/additional-features/predeployment) দেখুন।
+
+---
+
+predeploy-address
+
+
+
+
+ genesis predeploy [--predeploy-address PREDEPLOY_ADDRESS]
+
+
+
+
+ genesis predeploy --predeploy-address 0x5555
+
+
+
+
+এতে প্রিডিপ্লয়ের ঠিকানা সেট করে। ডিফল্ট `0x0000000000000000000000000000000000001100`।
+
+---
+
+
+## অপারেটর কমান্ড {#operator-commands}
+
+### পিয়ার কমান্ড {#peer-commands}
+
+| **কমান্ড** | **বিবরণ** |
+|------------------------|-------------------------------------------------------------------------------------|
+| পিয়ার যোগ | পিয়ারদের libp2p ঠিকানা ব্যবহার করে একটি নতুন পিয়ার যোগ করে |
+| পিয়ারের তালিকা | ক্লায়েন্ট libp2p দ্বারা সংযুক্ত থাকা সকল পিয়ারে তালিকা করে |
+| পিয়ারের স্ট্যাটাস | libp2p ঠিকানা ব্যবহার করে পিয়ার তালিকা থেকে একটি নির্দিষ্ট পিয়ারের স্ট্যাটাস ফেরত পাঠায় |
+
+পিয়াররা ফ্ল্যাগ যোগ করেন
+
+addr
+
+
+
+
+ peers add --addr PEER_ADDRESS
+
+
+
+
+ peers add --addr /ip4/127.0.0.1/tcp/10001/p2p/16Uiu2HAmJxxH1tScDX2rLGSU9exnuvZKNM9SoK3v315azp68DLPW
+
+
+
+
+পিয়ারের libp2p ঠিকানা multiaddr ফরম্যাটে আছে।
+
+---
+
+grpc-address
+
+
+
+
+ peers add [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ peers add --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+পিয়ারের তালিকার ফ্ল্যাগ
+
+grpc-address
+
+
+
+
+ peers list [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ peers list --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+পিয়ার স্ট্যাটাসের ফ্ল্যাগ
+
+peer-id
+
+
+
+
+ peers status --peer-id PEER_ID
+
+
+
+
+ peers status --peer-id 16Uiu2HAmJxxH1tScDX2rLGSU9exnuvZKNM9SoK3v315azp68DLPW
+
+
+
+
+p2p নেটওয়ার্কের মধ্যে একটি নির্দিষ্ট পিয়ারের Libp2p নোড আইডি।
+
+---
+
+grpc-address
+
+
+
+
+ peers status [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ peers status --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+### IBFT কমান্ড {#ibft-commands}
+
+| **কমান্ড** | **বিবরণ** |
+|------------------------|-------------------------------------------------------------------------------------|
+| ibft স্ন্যাপশট | IBFT স্ন্যাপশট ফেরত পাঠায় |
+| ibft ক্যান্ডিডেট | এই কমান্ডটি প্রস্তাবিত ক্যান্ডিডেটের পাশাপাশি এখনও অন্তর্ভুক্ত না হওয়া ক্যান্ডিডেটদের বর্তমান সেটকে কুয়েরি করে থাকে |
+| ibft প্রস্তাব | যাচাইকারীর সেট থেকে একটি নতুন ক্যান্ডিডেট যোগ/অপসারণের প্রস্তাব করে |
+| ibft স্ট্যাটাস | IBFT ক্লায়েন্টের সামগ্রিক স্ট্যাটাস ফেরত পাঠায় |
+| ibft সুইচ | IBFT টাইপ সুইচ করতে genesis.json ফাইলে ফর্ক কনফিগারেশন যোগ করুন |
+| ibft কোরাম | ব্লক নাম্বার নির্দিষ্ট করে, যার মধ্যে সবচেয়ে উপযুক্ত কোরাম সাইজ পদ্ধতি ব্যবহৃত হবে কনসেনসাসে পৌঁছানোর জন্য |
+
+
+ibft স্ন্যাপশট ফ্ল্যাগ
+
+সংখ্যা
+
+
+
+
+ ibft snapshot [--number BLOCK_NUMBER]
+
+
+
+
+ ibft snapshot --number 100
+
+
+
+
+স্ন্যাপশটের জন্য ব্লকের উচ্চতা (সংখ্যা)
+
+---
+
+grpc-address
+
+
+
+
+ ibft snapshot [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ ibft snapshot --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+ibft ক্যান্ডিডেটদের ফ্ল্যাগ
+
+grpc-address
+
+
+
+
+ ibft candidates [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ ibft candidates --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+ibft প্রস্তাবের ফ্ল্যাগ
+
+ভোট
+
+
+
+
+ ibft propose --vote VOTE
+
+
+
+
+ ibft propose --vote auth
+
+
+
+
+যাচাইকারীর সেটে একটি পরিবর্তনের প্রস্তাব করে। সম্ভাব্য মান: `[auth, drop]`।
+
+---
+
+addr
+
+
+
+
+ ibft propose --addr ETH_ADDRESS
+
+
+
+
+ ibft propose --addr 0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7
+
+
+
+
+যে অ্যাকাউন্টের ঠিকানার জন্য ভোট করা হবে।
+
+---
+
+bls
+
+
+
+
+ ibft propose --bls BLS_PUBLIC_KEY
+
+
+
+
+ ibft propose --bls 0x9952735ca14734955e114a62e4c26a90bce42b4627a393418372968fa36e73a0ef8db68bba11ea967ff883e429b3bfdf
+
+
+
+
+যে অ্যাকাউন্টের BLS পাবলিক কী'র জন্য ভোট করা হবে, শুধুমাত্র BLS মোডে প্রয়োজনীয়।
+
+---
+
+grpc-address
+
+
+
+
+ ibft candidates [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ ibft candidates --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+ibft স্ট্যাটাসের ফ্ল্যাগ
+
+grpc-address
+
+
+
+
+ ibft status [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ ibft status --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+ibft সুইচ ফ্ল্যাগ
+
+চেইন
+
+
+
+
+ ibft switch [--chain GENESIS_FILE]
+
+
+
+
+ ibft switch --chain genesis.json
+
+
+
+
+আপডেট করার জন্য জেনেসিস ফাইল নির্দিষ্ট করে। ডিফল্ট: `./genesis.json`।
+
+---
+
+প্রকার
+
+
+
+
+ ibft switch [--type TYPE]
+
+
+
+
+ ibft switch --type PoS
+
+
+
+
+সুইচ করার জন্য IBFT টাইপ নির্দিষ্ট করে। সম্ভাব্য মান: `[PoA, PoS]`।
+
+---
+
+ডিপ্লয়মেন্ট
+
+
+
+
+ ibft switch [--deployment DEPLOYMENT]
+
+
+
+
+ ibft switch --deployment 100
+
+
+
+
+চুক্তি ডিপ্লয়মেন্টের উচ্চতা নির্দিষ্ট করে। শুধুমাত্র PoS-এ পাওয়া যাচ্ছে।
+
+---
+
+প্রেরক
+
+
+
+
+ ibft switch [--from FROM]
+
+
+
+
+ ibft switch --from 200
+
+
+
+
+---
+
+ibft-validator-type
+
+
+
+
+ ibft switch [--ibft-validator-type IBFT_VALIDATOR_TYPE]
+
+
+
+
+ ibft switch --ibft-validator-type ecdsa
+
+
+
+
+ব্লক হেডারের বৈধতা মোড নির্দিষ্ট করে। সম্ভাব্য মান: `[ecdsa, bls]`। ডিফল্ট: `bls`।
+
+---
+
+ibft-validators-prefix-path
+
+
+
+
+ ibft switch [--ibft-validators-prefix-path IBFT_VALIDATORS_PREFIX_PATH]
+
+
+
+
+ ibft switch --ibft-validators-prefix-path test-chain-
+
+
+
+
+নতুন যাচাইকারীদের ডিরেক্টরি জন্য পথ প্রিফিক্স করে। `ibft-validator` ফ্ল্যাগ বাদ দেওয়া হলে উপস্থিত থাকতে হবে। শুধুমাত্র IBFT মোড PoA হলেই পাওয়া যায় (`--pos` ফ্ল্যাগ বাদ দেওয়া হয়)।
+
+---
+
+ibft-validator
+
+
+
+
+ ibft switch [--ibft-validator IBFT_VALIDATOR_LIST]
+
+
+
+
+ ibft switch --ibft-validator 0xC12bB5d97A35c6919aC77C709d55F6aa60436900
+
+
+
+
+ঠিকানাগুলোতে পাস সেট করে কারণ ফর্কের পরে IBFT যাচাইকারী ব্যবহৃত হয়। `ibft-validators-prefix-path` ফ্ল্যাগ বাদ দেওয়া হলে উপস্থিত থাকতে হবে। শুধুমাত্র PoA মোডে পাওয়া যাচ্ছে।
+1. যদি নেটওয়ার্ক ECDSA দিয়ে চলমান হয়, তাহলে ফরম্যাটটি হবে `--ibft-validator [ADDRESS]`।
+2. যদি নেটওয়ার্ক BLS দিয়ে চলমান হয়, তাহলে ফরম্যাটটি হবে `--ibft-validator [ADDRESS][BLS_PUBLIC_KEY]`।
+
+---
+
+max-validator-count
+
+
+
+
+ ibft switch [--max-validator-count MAX_VALIDATOR_COUNT]
+
+
+
+
+ ibft switch --max-validator-count 42
+
+
+
+
+একটি PoS কনসেনসাসের যাচাইকারীর সেটে যোগ করতে সক্ষম সর্বোচ্চ স্ট্যাকারের সংখ্যা।
+এই সংখ্যা MAX_SAFE_INTEGER (2^53 - 2) মান অতিক্রম করতে পারবে না।
+
+---
+
+min-validator-count
+
+
+
+
+ ibft switch [--min-validator-count MIN_VALIDATOR_COUNT]
+
+
+
+
+ ibft switch --min-validator-count 4
+
+
+
+
+একটি PoS কনসেনসাসের যাচাইকারী সেটে যোগ করতে সক্ষম সর্বনিম্ন স্ট্যাকারের সংখ্যা।
+এই সংখ্যা max-validator-count মান অতিক্রম করতে পারবে না।
+1-এ ডিফল্ট হবে।
+
+ফর্কের শুরুর উচ্চতা নির্দিষ্ট করে।
+
+---
+
+ibft কোরাম পতাকা
+
+প্রেরক
+
+
+
+
+ ibft quorum [--from your_quorum_switch_block_num]
+
+
+
+
+ ibft quorum --from 350
+
+
+
+
+কোরাম গণনা থেকে QuorumOptimal এ সুইচ করার উচ্চতা, যা `(2/3 * N)` সূত্র ব্যবহার করে, এখানে `N` হচ্ছে যাচাইকারী নোডের সংখ্যা। অনুগ্রহ করে মনে রাখবেন যে এটি পূর্ববর্তী সংস্করণ সমর্থন করে না, অর্থাৎ শুধুমাত্র একটি নির্দিষ্ট ব্লক উচ্চতা পর্যন্ত একটি কোরাম লিগেসি গণনা ব্যবহার করা চেইনেই এটি সমর্থন করে।
+
+---
+
+চেইন
+
+
+
+
+ ibft quorum [--chain GENESIS_FILE]
+
+
+
+
+ ibft quorum --chain genesis.json
+
+
+
+
+আপডেট করার জন্য জেনেসিস ফাইল নির্দিষ্ট করে। ডিফল্ট: `./genesis.json`।
+
+### লেনদেন পুলের কমান্ড {#transaction-pool-commands}
+
+| **কমান্ড** | **বিবরণ** |
+|------------------------|--------------------------------------------------------------------------------------|
+| txpool স্ট্যাটাস | পুলে লেনদেনের সংখ্যা ফেরত পাঠায় |
+| txpool সাবস্ক্রাইব | লেনদেনের পুলে ইভেন্টগুলির জন্য সাবস্ক্রাইব করে |
+
+txpool স্ট্যাটাসের পতাকা
+
+grpc-address
+
+
+
+
+ txpool status [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ txpool status --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+txpool সাবস্ক্রাইব ফ্ল্যাগ
+
+grpc-address
+
+
+
+
+ txpool subscribe [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ txpool subscribe --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+---
+
+প্রোমোট
+
+
+
+
+ txpool subscribe [--promoted LISTEN_PROMOTED]
+
+
+
+
+ txpool subscribe --promoted
+
+
+
+
+TxPool-এ প্রোমোট করা tx ইভেন্টের জন্য সাবস্ক্রাইব করে।
+
+---
+
+ড্রপ
+
+
+
+
+ txpool subscribe [--dropped LISTEN_DROPPED]
+
+
+
+
+ txpool subscribe --dropped
+
+
+
+
+TxPool-এ ড্রপ করা tx ইভেন্টগুলোর জন্য সাবস্ক্রাইব করে।
+
+---
+
+ডিমোট
+
+
+
+
+ txpool subscribe [--demoted LISTEN_DEMOTED]
+
+
+
+
+ txpool subscribe --demoted
+
+
+
+
+TxPool-এ ডিমোট করা tx ইভেন্টগুলোর জন্য সাবস্ক্রাইব করে।
+
+---
+
+যোগ
+
+
+
+
+ txpool subscribe [--added LISTEN_ADDED]
+
+
+
+
+ txpool subscribe --added
+
+
+
+
+TxPool-এ যোগ করা tx ইভেন্টগুলোর জন্য সাবস্ক্রাইব করে।
+
+---
+
+এনকিউ
+
+
+
+
+ txpool subscribe [--enqueued LISTEN_ENQUEUED]
+
+
+
+
+ txpool subscribe --enqueued
+
+
+
+
+অ্যাকাউন্ট কিউতে এনকিউ করা tx ইভেন্টগুলোর জন্য সাবস্ক্রাইব করে।
+
+---
+
+### ব্লকচেইন কমান্ড {#blockchain-commands}
+
+| **কমান্ড** | **বিবরণ** |
+|------------------------|-------------------------------------------------------------------------------------|
+| স্ট্যাটাস | ক্লায়েন্টের স্ট্যাটাস ফেরত পাঠায়। বিস্তারিত প্রতিক্রিয়া নিচে পাবেন |
+| মনিটর | একটি blockchain ইভেন্ট স্ট্রিমে সাবস্ক্রাইব করে। বিস্তারিত প্রতিক্রিয়া নিচে পাবেন |
+| সংস্করণ | ক্লায়েন্টের বর্তমান সংস্করণ ফেরত পাঠায় |
+
+স্ট্যাটাসের ফ্ল্যাগ
+
+grpc-address
+
+
+
+
+ status [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ status --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+মনিটর ফ্ল্যাগ
+
+grpc-address
+
+
+
+
+ monitor [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ monitor --grpc-address 127.0.0.1:10003
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+---
+সংস্করণ কমান্ড
+
+
+
+
+
+ version
+
+
+
+
+রিলিজ সংস্করণ, git branch, commit hash এবং বিল্ড টাইম প্রদর্শন করে।
+
+## সিক্রেট কমান্ড {#secrets-commands}
+
+| **কমান্ড** | **বিবরণ** |
+|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
+| সিক্রেট init | সংশ্লিষ্ট সিক্রেট ম্যানেজারে প্রাইভেট কী চালু করে |
+| সিক্রেট তৈরি | একটি সিক্রেট ম্যানেজার কনফিগারেশন ফাইল তৈরি করে যা Polygon Edge দ্বারা পার্স করা যেতে পারে |
+| সিক্রেট আউটপুট | রেফারেন্স জন্য BLS পাবলিক কী ঠিকানা, যাচাইকারী পাবলিক কী ঠিকানা এবং নোড আইডি প্রিন্ট করে |
+
+### সিক্রেট init ফ্ল্যাগ {#secrets-init-flags}
+
+কনফিগ
+
+
+
+
+ secrets init [--config SECRETS_CONFIG]
+
+
+
+
+ secrets init --config ./secretsManagerConfig.json
+
+
+
+
+SecretsManager কনফিগ ফাইলের পাথ সেট করে। Hashicorp ভল্টের জন্য ব্যবহৃত হয়। যদি বাদ দেওয়া হয়, তাহলে স্থানীয় FS সিক্রেট ম্যানেজার ব্যবহার করা হয়।
+
+---
+
+data-dir
+
+
+
+
+ secrets init [--data-dir DATA_DIRECTORY]
+
+
+
+
+ secrets init --data-dir ./example-dir
+
+
+
+
+স্থানীয় FS ব্যবহার করা হলে Polygon Edge তথ্যের জন্য ডিরেক্টরি সেট করে।
+
+---
+
+ecdsa
+
+
+
+
+ secrets init [--ecdsa FLAG]
+
+
+
+
+ secrets init --ecdsa=false
+
+
+
+
+একটি ECDSA কী তৈরি করতে হবে কিনা তা নির্দেশ করার জন্য ফ্ল্যাগ সেট করে। ডিফল্ট: `true`।
+
+---
+
+নেটওয়ার্ক
+
+
+
+
+ secrets init [--network FLAG]
+
+
+
+
+ secrets init --network=false
+
+
+
+
+একটি Libp2p নেটওয়ার্ক কী তৈরি করতে হবে কিনা তা নির্দেশ করে ফ্ল্যাগ সেট করে। ডিফল্ট: `true`।
+
+---
+
+bls
+
+
+
+
+ secrets init [--bls FLAG]
+
+
+
+
+ secrets init --bls
+
+
+
+
+একটি BLS কী তৈরি করতে হবে কিনা তা নির্দেশ করে ফ্ল্যাগ সেট করে। ডিফল্ট: `true`।
+
+### সিক্রেট তৈরির ফ্ল্যাগ {#secrets-generate-flags}
+
+dir
+
+
+
+
+ secrets generate [--dir DATA_DIRECTORY]
+
+
+
+
+ secrets generate --dir ./example-dir
+
+
+
+
+সিক্রেট ম্যানেজার কনফিগারেশন ফাইলের ডিরেক্টরি সেট করে। ডিফল্ট: `./secretsManagerConfig.json`
+
+---
+
+প্রকার
+
+
+
+
+ secrets generate [--type TYPE]
+
+
+
+
+ secrets generate --type hashicorp-vault
+
+
+
+
+সিক্রেট ম্যানেজারের ধরন নির্দিষ্ট করে [`hashicorp-vault`]। ডিফল্ট: `hashicorp-vault`
+
+---
+
+টোকেন
+
+
+
+
+ secrets generate [--token TOKEN]
+
+
+
+
+ secrets generate --token s.zNrXa9zF9mgrdnClM7PZ19cu
+
+
+
+
+সার্ভিসের জন্য অ্যাক্সেস টোকেন নির্দিষ্ট করে
+
+---
+
+server-url
+
+
+
+
+ secrets generate [--server-url SERVER_URL]
+
+
+
+
+ secrets generate --server-url http://127.0.0.1:8200
+
+
+
+
+সার্ভিসের জন্য সার্ভার URL নির্দিষ্ট করে
+
+---
+
+নাম
+
+
+
+
+ secrets generate [--name NODE_NAME]
+
+
+
+
+ secrets generate --name node-1
+
+
+
+
+সার্ভিসে-থাকা রেকর্ড কিপিংয়ের জন্য নোডের নাম নির্দিষ্ট করে। ডিফল্ট: `polygon-edge-node`
+
+---
+
+namespace
+
+
+
+
+ secrets generate [--namespace NAMESPACE]
+
+
+
+
+ secrets generate --namespace my-namespace
+
+
+
+
+Hashicorp ভল্ট সিক্রেট ম্যানেজারের জন্য ব্যবহৃত namespace নির্দিষ্ট করে। ডিফল্ট: `admin`
+
+### সিক্রেট আউটপুট ফ্ল্যাগ {#secrets-output-flags}
+
+bls
+
+
+
+
+ secrets output [--bls FLAG]
+
+
+
+
+ secrets output --bls
+
+
+
+
+শুধুমাত্র BLS পাবলিক কী আউটপুট করতে হবে কিনা তা নির্দেশ করে ফ্ল্যাগ সেট করে। ডিফল্ট: `true`
+
+---
+
+কনফিগ
+
+
+
+
+ secrets output [--config SECRETS_CONFIG]
+
+
+
+
+ secrets output --config ./secretsManagerConfig.json
+
+
+
+
+SecretsManager কনফিগ ফাইলের পাথ সেট করে। যদি বাদ দেওয়া হয়, তাহলে স্থানীয় FS সিক্রেট ম্যানেজার ব্যবহার করা হয়।
+
+---
+
+data-dir
+
+
+
+
+ secrets output [--data-dir DATA_DIRECTORY]
+
+
+
+
+ secrets output --data-dir ./example-dir
+
+
+
+
+স্থানীয় FS ব্যবহার করা হলে Polygon Edge তথ্যের জন্য ডিরেক্টরি সেট করে।
+
+---
+
+node-id
+
+
+
+
+ secrets output [--node-id FLAG]
+
+
+
+
+ secrets output --node-id
+
+
+
+
+শুধুমাত্র নেটওয়ার্ক নোড আইডি আউটপুট করতে হবে কিনা তা নির্দেশ করে ফ্ল্যাগ সেট করে। ডিফল্ট: `true`
+
+---
+
+যাচাইকারী
+
+
+
+
+ secrets output [--validator FLAG]
+
+
+
+
+ secrets output --validator
+
+
+
+
+শুধুমাত্র যাচাইকারী ঠিকানা আউটপুট করতে হবে কিনা তা নির্দেশ করে ফ্ল্যাগ সেট করে। ডিফল্ট: `true`
+
+---
+
+## প্রতিক্রিয়া {#responses}
+
+### স্টাটাসের প্রতিক্রিয়া {#status-response}
+
+প্রতিক্রিয়া অবজেক্টটি প্রোটোকল বাফার ব্যবহার করে সংজ্ঞায়িত করা হয়।
+````go title="minimal/proto/system.proto"
+message ServerStatus {
+ int64 network = 1;
+
+ string genesis = 2;
+
+ Block current = 3;
+
+ string p2pAddr = 4;
+
+ message Block {
+ int64 number = 1;
+ string hash = 2;
+ }
+}
+````
+
+### প্রতিক্রিয়া মনিটর করুন {#monitor-response}
+````go title="minimal/proto/system.proto"
+message BlockchainEvent {
+ // The "repeated" keyword indicates an array
+ repeated Header added = 1;
+ repeated Header removed = 2;
+
+ message Header {
+ int64 number = 1;
+ string hash = 2;
+ }
+}
+````
+
+## ইউটিলিটি {#utilities}
+
+### কমান্ড হোয়াইটলিস্ট করুন {#whitelist-commands}
+
+| **কমান্ড** | **বিবরণ** |
+|------------------------|-------------------------------------------------------------------------------------|
+| হোয়াইটলিস্ট দেখান | হোয়াইলিস্টের তথ্য প্রদর্শন করে |
+| হোয়াইটলিস্ট ডিপ্লয়মেন্ট | স্মার্ট চুক্তি ডিপ্লয়মেন্ট হোয়াইটলিস্ট আপডেট করে |
+
+ হোয়াইটলিস্ট দেখান
+
+
+
+
+ whitelist show
+
+
+
+
+হোয়াইটলিস্টের তথ্য প্রদর্শন করে।
+
+---
+
+
+
+
+ whitelist show [--chain GENESIS_FILE]
+
+
+
+
+ whitelist show --chain genesis.json
+
+
+
+
+আপডেট করার জন্য জেনেসিস ফাইল নির্দিষ্ট করে। ডিফল্ট: `./genesis.json`।
+
+---
+
+ হোয়াইটলিস্ট ডিপ্লয়মেন্ট
+
+চেইন
+
+
+
+
+ whitelist deployment [--chain GENESIS_FILE]
+
+
+
+
+ whitelist deployment --chain genesis.json
+
+
+
+
+আপডেট করার জন্য জেনেসিস ফাইল নির্দিষ্ট করে। ডিফল্ট: `./genesis.json`।
+
+---
+
+যোগ
+
+
+
+
+ whitelist deployment [--add ADDRESS]
+
+
+
+
+ whitelist deployment --add 0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d
+
+
+
+
+চুক্তি ডিপ্লয়মেন্ট হোয়াইটলিস্টে একটি নতুন ঠিকানা যোগ করে। শুধুমাত্র চুক্তি ডিপ্লয়মেন্ট হোয়াইটলিস্টে থাকা ঠিকানাগুলো চুক্তি ডিপ্লয় করতে পারে। যদি খালি থাক, তাহলে যেকোনো ঠিকানা চুক্তি ডিপ্লয়মেন্ট এক্সিকিউট করতে পারে
+
+---
+
+অপসারণ
+
+
+
+
+ whitelist deployment [--remove ADDRESS]
+
+
+
+
+ whitelist deployment --remove 0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d
+
+
+
+
+চুক্তি ডিপ্লয়মেন্ট হোয়াইটলিস্ট থেকে একটি ঠিকানা অপসারণ করে। শুধুমাত্র চুক্তি ডিপ্লয়মেন্ট হোয়াইটলিস্টে থাকা ঠিকানাগুলো চুক্তি ডিপ্লয় করতে পারে। যদি খালি থাক, তাহলে যেকোনো ঠিকানা চুক্তি ডিপ্লয়মেন্ট এক্সিকিউট করতে পারে
+
+---
+
+### ব্যাকআপ ফ্ল্যাগ {#backup-flags}
+
+grpc-address
+
+
+
+
+ backup [--grpc-address GRPC_ADDRESS]
+
+
+
+
+ backup --grpc-address 127.0.0.1:9632
+
+
+
+
+gRPC API-এর ঠিকানা। ডিফল্ট: `127.0.0.1:9632`।
+
+---
+
+আউট
+
+
+
+
+ backup [--out OUT]
+
+
+
+
+ backup --out backup.dat
+
+
+
+
+সংরক্ষণ করতে হবে এমন আর্কাইভের ফাইলের পাথ।
+
+---
+
+প্রেরক
+
+
+
+
+ from [--from FROM]
+
+
+
+
+ backup --from 0x0
+
+
+
+
+আর্কাইভে ব্লকের শুরু উচ্চতা। ডিফল্ট: 0।
+
+---
+
+প্রাপক
+
+
+
+
+ to [--to TO]
+
+
+
+
+ backup --to 0x2710
+
+
+
+
+আর্কাইভে ব্লকের শেষ উচ্চতা।
+
+---
+
+## জেনেসিস টেমপ্লেট {#genesis-template}
+জেনেসিস ফাইল ব্লকচেইনের প্রাথমিক অবস্থা সেট করতে ব্যবহার করা উচিত (যেমন, কিছু অ্যাকাউন্টের একটি প্রারম্ভিক ব্যালেন্স থাকবে কিনা)।
+
+নিম্নলিখিত *./genesis.json* ফাইল তৈরি হয়:
+````json
+{
+ "name": "example",
+ "genesis": {
+ "nonce": "0x0000000000000000",
+ "gasLimit": "0x0000000000001388",
+ "difficulty": "0x0000000000000001",
+ "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "coinbase": "0x0000000000000000000000000000000000000000",
+ "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
+ },
+ "params": {
+ "forks": {},
+ "chainID": 100,
+ "engine": {
+ "pow": {}
+ }
+ },
+ "bootnodes": []
+}
+````
+
+### তথ্য ডিরেক্টরি {#data-directory}
+
+*data-dir* ফ্ল্যাগ এক্সিকিউট করার সময়, একটি **test-chain** ফোল্ডার তৈরি হয়।
+ফোল্ডারের স্ট্রাকচারটিতে নিম্নলিখিত সাব-ফোল্ডার রয়েছে:
+* **ব্লকচেইন** - ব্লকচেইন অবজেক্টের LevelDB সংরক্ষণ করে
+* **ট্রি** - Merkle ট্রি'র জন্য LevelDB সংরক্ষণ করে
+* **keystore** - ক্লায়েন্টের জন্য প্রাইভেট কী সংরক্ষণ করে। এতে libp2p প্রাইভেট কী এবং সিলিং/যাচাইকারী প্রাইভেট কী অন্তর্ভুক্ত রয়েছে
+* **কনসেনসাস** - কাজের সময় ক্লায়েন্টের প্রয়োজন হতে পারে এমন সকল কনসেনসাস তথ্য সংরক্ষণ করে
+
+## রিসোর্স {#resources}
+* **[প্রোটোকল বাফার](https://developers.google.com/protocol-buffers)**
diff --git a/archive/edge/bn-edge/get-started/installation.md b/archive/edge/bn-edge/get-started/installation.md
new file mode 100644
index 0000000000..5877cf0ef4
--- /dev/null
+++ b/archive/edge/bn-edge/get-started/installation.md
@@ -0,0 +1,54 @@
+---
+id: installation
+title: ইনস্টলেশন
+description: "কীভাবে Polygon Edge ইনস্টল করবেন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - install
+ - installation
+---
+
+অনুগ্রহ করে আপনার জন্য আরও বেশি প্রযোজ্য ইনস্টলেশন পদ্ধতিটি পড়ুন।
+
+আমাদের সুপারিশ হচ্ছে প্রি-বিল্ট রিলিজ ব্যবহার করুন এবং প্রদত্ত চেকসামটি যাচাই করুন।
+
+## প্রি-বিল্ট রিলিজ {#pre-built-releases}
+
+রিলিজগুলোর একটি তালিকার জন্য, অনুগ্রহ করে [GitHub রিলিজ](https://github.com/0xPolygon/polygon-edge/releases) পৃষ্ঠাটি দেখুন।
+
+Polygon Edge-এ Darwin এবং Linux-এর জন্য ক্রস-কম্পাইলড AMD64/ARM64 বাইনারির সুবিধা পাওয়া যায়।
+
+---
+
+## ডকার ইমেজ {#docker-image}
+
+অফিসিয়াল ডকার ইমেজ [hub.docker.com রেজিস্ট্রিতে](https://hub.docker.com/r/0xpolygon/polygon-edge) হোস্ট করা আছে।
+
+`docker pull 0xpolygon/polygon-edge:latest`
+
+---
+
+## উৎস থেকে নির্মাণ {#building-from-source}
+
+`go install` ব্যবহার করার আগে নিশ্চিত হয়ে নিন যে আপনি Go `>=1.18` ইনস্টল করেছেন এবং সেটি সঠিকভাবে কনফিগার করেছেন।
+
+স্থিতিশীল ব্রাঞ্চটি হচ্ছে সর্বশেষ রিলিজের ব্রাঞ্চ।
+
+```shell
+git clone https://github.com/0xPolygon/polygon-edge.git
+cd polygon-edge/
+go build -o polygon-edge main.go
+sudo mv polygon-edge /usr/local/bin
+```
+
+---
+
+## `go install` ব্যবহার করা
+
+`go install` ব্যবহার করার আগে নিশ্চিত হয়ে নিন যে আপনি Go `>=1.17` ইনস্টল করেছেন এবং সেটি সঠিকভাবে কনফিগার করেছেন।
+
+`go install github.com/0xPolygon/polygon-edge@release/`
+
+বাইনারি আপনার `GOBIN`এনভায়রনমেন্ট variable, পাওয়া যাবে, এবং সর্বশেষ রিলিজের পরিবর্তনগুলো অন্তর্ভুক্ত থাকবে। আপনি কোনটি সর্বশেষ which া তা খুঁজে বের করতে [GitHub রিলিজ](https://github.com/0xPolygon/polygon-edge/releases) আউট চেকআউট করতে পারেন।
diff --git a/archive/edge/bn-edge/get-started/set-up-ibft-locally.md b/archive/edge/bn-edge/get-started/set-up-ibft-locally.md
new file mode 100644
index 0000000000..f5e4da92d8
--- /dev/null
+++ b/archive/edge/bn-edge/get-started/set-up-ibft-locally.md
@@ -0,0 +1,390 @@
+---
+id: set-up-ibft-locally
+title: লোকাল সেটআপ
+description: "স্টেপ-বাই-স্টেপ লোকাল সেটআপ গাইড।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - local
+ - setup
+ - genesis
+---
+
+:::caution এই গাইডটি শুধুমাত্র পরীক্ষার উদ্দেশ্যে তৈরি
+
+নীচের নির্দেশিকা আপনাকে পরীক্ষা এবং উন্নয়নের উদ্দেশ্যে আপনার লোকাল মেশিনে একটি Polygon Edge নেটওয়ার্ক কীভাবে সেট আপ করতে হয় সে সম্পর্কে নির্দেশ দেবে।
+
+বাস্তব ব্যবহারের দৃশ্যের জন্য আপনি যেভাবে Polygon Edge নেটওয়ার্ক সেট আপ করতে চান তার থেকে পদ্ধতিটি অনেকটাই আলাদা একটি ক্লাউড প্রোভাইডার থেকে: ** [ক্লাউড সেটআপ](/docs/edge/get-started/set-up-ibft-on-the-cloud)**
+
+:::
+
+
+## প্রয়োজনীয়তা {#requirements}
+
+Polygon Edge ইনস্টল করার জন্য [ইনস্টলেশন](/docs/edge/get-started/installation) পড়ুন।
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+
+
+এই গাইডে আমাদের লক্ষ্য হল [IBFT এর consensus প্রোটোকল](https://github.com/ethereum/EIPs/issues/650) এর সাথে কাজ করে একটি কার্যক্ষম `polygon-edge`ব্লকচেইন নেটওয়ার্ক স্থাপন করা। ব্লকচেইন নেটওয়ার্কের মধ্যে 4টি নোড রয়েছে যার মধ্যে সবগুলোই ভ্যালিডেটর নোড, এবং তাই তারা ব্লক প্রপোজ করা এবং অন্যান্য প্রোপোজার থেকে যে ব্লক নেয়া হয়েছে তা যাচাই করা, উভয়ের ক্ষেত্রেই যোগ্য হবে। 4টি নোড একই মেশিনে চালানো হবে, কারণ এই গাইডের কাজ আপনাকে ন্যুনতম সময়ের মধ্যে একটি সম্পূর্ণ ফাংশনাল IBFT ক্লাস্টার প্রদান করা।
+
+এটি অর্জন করার জন্য, আমরা আপনাকে 4টি সহজ স্টেপের মাধ্যমে গাইড করব:
+
+1. ডাটা ডিরেক্টরি চালু করা হলে প্রতি 4টি নোডের জন্য উভয় ভ্যালিডেটর কী তৈরি হবে, এবং একটি খালি ব্লকচেইন ডাটা ডিরেক্টরি চালু হবে। ভ্যালিডেটর কীগুলো গুরুত্বপূর্ণ কারণ এই কীগুলো ব্যবহার করে ভ্যালিডেটরদের প্রাথমিক সেটের সাথে আমাদের জেনেসিস ব্লক বুটস্ট্র্যাপ করতে হবে।
+2. বুট নোডের জন্য সংযোগ স্ট্রিং প্রস্তুত করা প্রতিটি নোডের জন্য গুরুত্বপূর্ণ তথ্য হবে কারণ আমরা জানতে পারবো যে প্রথমবার শুরু করতে কোন নোডের সাথে সংযোগ করা প্রয়োজন।
+3. `genesis.json` ফাইল তৈরি করার জন্য জেনিসিস ব্লকে নেটওয়ার্কের প্রারম্ভিক ভ্যালিডেটর সেট করার জন্য ব্যবহৃত **ধাপ 1-এ** জেনারেট করা উভয় ভ্যালিডেটর কী এবং **ধাপ 2** থেকে বুট নোড সংযোগ স্ট্রিং উভয়ই ইনপুট হিসাবে প্রয়োজন হবে।
+4. সমস্ত নোড চালানো এই গাইডের শেষ লক্ষ্য এবং এটি হবে আমাদের শেষ ধাপ, আমরা নোডকে নির্দেশ দিব কোন ডাটা ডিরেক্টরি ব্যবহার করতে হবে এবং কোথায় `genesis.json` খুঁজে বের করতে হবে যা প্রাথমিক নেটওয়ার্ক স্টেটকে বুটস্ট্র্যাপ করে।
+
+সেটআপ প্রক্রিয়ার সময় চারটি নোডই লোকালহোস্টে চলমান থাকবে, তাই আশা করা যায় যে সকল ডাটা ডিরেক্টরি প্রতিটি নোডের জন্য একই প্যারেন্ট ডিরেক্টরিতে রয়েছে।
+
+:::info ভ্যালিডেটরের সংখ্যা
+
+একটি ক্লাস্টারে নোডের সংখ্যার কোন ন্যূনতম মান নেই, অর্থাৎ শুধুমাত্র 1টি ভ্যালিডেটর নোড দিয়ে ক্লাস্টার সম্ভব। মনে রাখবেন যে _একটি একক_ নোড ক্লাস্টারের কোন **ক্র্যাশ সহনশীলতা** নেই **এবং কোন BFT গ্যারান্টি** নেই।
+
+একটি BFT গ্যারান্টি অর্জনের জন্য নোডের ন্যূনতম প্রস্তাবিত সংখ্যা 4 - যেহেতু একটি 4 নোড ক্লাস্টারে 1টি নোডের ব্যর্থতা সহনীয়, বাকি 3টি স্বাভাবিকভাবেই কাজ করবে।
+
+:::
+
+## স্টেপ 1: IBFT এর জন্য ডাটা ফোল্ডার চালু করুন এবং ভ্যালিডেটর কী তৈরি করুন {#step-1-initialize-data-folders-for-ibft-and-generate-validator-keys}
+
+IBFT ভালোভাবে চালু করতে, আপনাকে ডাটা ফোল্ডার চালু করতে হবে, প্রতিটি নোডের জন্যঃ
+
+````bash
+polygon-edge secrets init --data-dir test-chain-1
+````
+
+````bash
+polygon-edge secrets init --data-dir test-chain-2
+````
+
+````bash
+polygon-edge secrets init --data-dir test-chain-3
+````
+
+````bash
+polygon-edge secrets init --data-dir test-chain-4
+````
+
+এই কমান্ডগুলোর প্রতিটি ভ্যালিডেটর কী, bls পাবলিক কী এবং [নোড আইডি](https://docs.libp2p.io/concepts/peer-id/) প্রিন্ট করবে। পরবর্তী স্টেপের জন্য আপনার প্রথম নোডের নোড আইডি প্রয়োজন হবে।
+
+### সিক্রেট আউটপুট করা {#outputting-secrets}
+যদি প্রয়োজন হয় তবে সিক্রেট আউটপুট আবার পুনরুদ্ধার করা যাবে।
+
+```bash
+polygon-edge secrets output --data-dir test-chain-4
+```
+
+## স্টেপ 2: বুটনোডের জন্য multiaddr কানেকশন স্ট্রিং প্রস্তুত করুন {#step-2-prepare-the-multiaddr-connection-string-for-the-bootnode}
+
+একটি নোডের সফলভাবে সংযোগ স্থাপন করার জন্য, তাকে অবশ্যই জানতে হবে যে কোন `bootnode`সার্ভারের সাথে সংযোগ করতে হবে নেটওয়ার্কের অবশিষ্ট সকল নোডের তথ্য পেতে। `bootnode` কে কখনও কখনও p2p জার্গনে `rendezvous` সার্ভারও বলা হয়।
+
+`bootnode`polygon-edge নোডের কোন বিশেষ উদাহরণ নয়। প্রতিটি polygon-edge নোড একটি `bootnode` হিসাবে কাজ করতে পারে, কিন্তু প্রতিটি polygon-edge নোডের একটি নির্দিষ্ট বুটনোডের সেট থাকতে হবে যা তথ্য প্রদান করবে কীভাবে সংযোগ করতে হয় নেটওয়ার্কের অবশিষ্ট সকল নোডের সাথে।
+
+বুটনোড নির্দিষ্ট করে সংযোগ স্ট্রিং তৈরি করার জন্য, আমাদের মানিয়ে চলতে হবে [multiaddr ফর্ম্যাট এর সাথে](https://docs.libp2p.io/concepts/addressing/)ঃ
+```
+/ip4//tcp//p2p/
+```
+
+এই গাইডে আমরা প্রথম এবং দ্বিতীয় নোডকে অন্য সকল নোডের জন্য বুটনোড হিসেবে ব্যবহার করব। এই পরিস্থিতিতে যা ঘটবে তা হল বা এর সাথে যে নোডগুল সংযোগ করে তারা একে অপরের সাথে পারস্পরিকভাবে সংযোজিত বুটনোড দি`node 2`য়ে `node 1`কীভাবে সংযোগ করবে তার তথ্য পাবে।
+
+:::info একটি নোড শুরু করতে আপনাকে অন্তত একটি বুটনোড নির্দিষ্ট করতে হবে
+
+অন্তত একটি বুটনোড প্রয়োজনীয়, যাতে নেটওয়ার্কের অন্যান্য নো**ডগ**ুলো একে অপরকে আবিষ্কার করতে পারে। অতিরিক্ত বুটনোডের পরামর্শ দেওয়া হয়, কারণ বিদ্যুৎ চলে যাওয়ার ক্ষেত্রে তারা নেটওয়ার্ককে সহনশীলতা প্রদান করে। এই গাইডে আমরা দুটি নোডের তালিকা দিব, কিন্তু এটি যেকোনো সময়ে পরিবর্তন করা যাবে, এবং এতে `genesis.json` ফাইলের বৈধতার উপর কোন প্রভাব পড়ে না।
+:::
+
+যেহেতু আমরা লোকাল হোস্টে চলছি, তাই এটা অনুমান করা নিরাপদ যে `` হল `127.0.0.1`।
+
+`` এর জন্য আমরা `10001` ব্যবহার করব যেহেতু আমরা X-এর এই পোর্টে `node 1` শোনার জন্য libp2p সার্ভার কনফিগার করব।
+
+এবং অবশেষে, আমাদের `` প্রয়োজন যা আমরা পূর্বে রান করা কমান্ডের`polygon-edge secrets init --data-dir test-chain-1` আউটপুট থেকে পাবো (যা `node1`এর জন্য কী জেনারেট করতে এবং ডাটা ডিরেক্টরি তৈরি করতে ব্যবহৃত হয়েছিলও)
+
+অ্যাসেম্বলির পর, `node 1` এর সাথে multiaddr কানেকশন স্ট্রিং যা আমরা বুটনোড হিসেবে ব্যবহার করব, তা দেখতে কিছুটা এরকম হবে (শুধুমাত্র ``যেটি শেষে আছে, সেটি দেখতে কিছুটা আলাদা হবে):
+```
+/ip4/127.0.0.1/tcp/10001/p2p/16Uiu2HAmJxxH1tScDX2rLGSU9exnuvZKNM9SoK3v315azp68DLPW
+```
+একইভাবে, আমরা দ্বিতীয় বুটনোডের জন্য multiaddr তৈরি করি
+```
+/ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAmS9Nq4QAaEiogE4ieJFUYsoH28magT7wSvJPpfUGBj3Hq
+```
+
+:::info ips এর পরিবর্তে DNS হোস্টনেম
+
+Polygon Edge নোড কনফিগারেশনের জন্য DNS হোস্টনেমের ব্যবহার সাপোর্ট করে। এটি ক্লাউড ভিত্তিক ডিপ্লয়মেন্টের জন্য অনেক সহায়ক বৈশিষ্ট্য, কারণ নোডের আইপি বিভিন্ন কারনে পরিবর্তিত হতে পারে।
+
+DNS হোস্টনেম ব্যবহার করার সময় কানেকশন স্ট্রিংয়ের জন্য multiaddr ফর্ম্যাটটি নিম্নলিখিতঃ`/dns4/sample.hostname.com/tcp//p2p/nodeid`
+
+:::
+
+
+## স্টেপ 3: 4টি নোডকে ভ্যালিডেটর হিসানে নিয়ে জেনেসিস ফাইল তৈরি করুন {#step-3-generate-the-genesis-file-with-the-4-nodes-as-validators}
+
+````bash
+polygon-edge genesis --consensus ibft --ibft-validators-prefix-path test-chain- --bootnode /ip4/127.0.0.1/tcp/10001/p2p/16Uiu2HAmJxxH1tScDX2rLGSU9exnuvZKNM9SoK3v315azp68DLPW --bootnode /ip4/127.0.0.1/tcp/20001/p2p/16Uiu2HAmS9Nq4QAaEiogE4ieJFUYsoH28magT7wSvJPpfUGBj3Hq
+````
+
+এই কমান্ডটি যা করে:
+
+* X `--ibft-validators-prefix-path`প্রিফিক্স ফোল্ডার পাথকে নির্দিষ্ট করে দেয় যা IBFT ের মধ্যে Polygon Edge ব্যবহার করতে পারে। এই ডিরেক্টরিটি ফোল্ডারটি রাখার জন্য ব্যবহৃত `consensus/`হয়, যেখানে ভ্যালিডেটরের প্রাইভেট কী টি রাখা হয়। দ্যা জেনেসিস ফাইল তৈরি করার জন্য যাচাইকারীর পাবলিক কী প্রয়োজন - bootstrap nodes এর প্রাথমিক তালিকা। এই পতাকাটি শুধুমাত্র লোকালহোস্টে নেটওয়ার্ক সেট করার সময় কাজ করে, কারণ বাস্তবে আমরা কখনোই আশা করতে পারি না যে নোডগুলোর ডাটা ডিরেক্টরি একই ফাইলসিস্টেমে হবে যেখান থেকে আমরা সহজেই তাদের পাবলিক কী গুলো রিড করতে পারবো।
+* বুটনোডের অ্যাড্রেস সেট করে `--bootnode`যা নোডগুলোকে একে অপরকে খুঁজে পেতে সাহায্য করবে। আমরা **স্টেপ 2** এর অনুযায়ী, `node 1` এর multiaddr স্ট্রিংটি ব্যবহার করব।
+
+এই কমান্ডের ফলাফল হলো `genesis.json`ফাইলটি, যা আমাদের নতুন ব্লকচেইনের জেনেসিস ব্লক ধারণ করে, যাতে প্রথমে কোন নোডের সাথে যোগাযোগ করতে হবে তার জন্য পূর্বনির্ধারিত ভ্যালিডেটর সেট এবং কনফিগারেশন থাকে।
+
+:::info ECDSA তে সুইচ করুন
+
+BLS ব্লক হেডারদের জন্য ডিফল্ট ভ্যালিডেশন মোড। আপনি যদি আপনার চেইনটিকে ECDSA মোডে রান করাতে চান তবে আপনি ফ্ল্যাগটি ব্যবহার করতে পারে`—ibft-validator-type`ন, এই আর্গুমেন্ট `ecdsa`সহ:
+
+```
+genesis --ibft-validator-type ecdsa
+```
+:::
+:::info অ্যাকাউন্টের প্রিমাইনিং ব্যালেন্স
+
+আপনি হয়তোবা কিছু "প্রিমাইন্ড" ব্যালেন্স সহ অ্যাড্রেস আপনার ব্লকচেইন নেটওয়ার্কে সেট আপ করতে চাইবেন।
+
+এটি অর্জন করতে, আপনি একটি নির্দিষ্ট ব্যালেন্সের সাথে শুরু করতে চান এমন সবগুলো অ্যাড্রেসকে যতবার ইচ্ছা ফ্ল্যা`--premine`গে পাস করুন ব্লকচেইনে।
+
+উদাহরণস্বরূপ, আমরা যদি আমাদের জেনেসিস ব্লকের অ্যাড্রেসে 1000 ETH `0x3956E90e632AEbBF34DEB49b71c28A83Bc029862`প্রিমাইন করতে চাই, তবে আমাদের নিম্নলিখিত আর্গুমেন্ট সরবরাহ করতে হবে:
+
+```
+--premine=0x3956E90e632AEbBF34DEB49b71c28A83Bc029862:1000000000000000000000
+```
+
+**মনে রাখবেন, প্রিমাইন করা পরিমাণ ETH এ নয়, WEI তে থাকবে।**
+
+:::
+
+:::info ব্লক গ্যাস সীমা সেট করুন
+
+প্রতিটি ব্লকের জন্য ডিফল্ট গ্যাস সীমা হলো`5242880`। এই মানটি জেনেসিস ফাইলে লেখা হয়, কিন্তু আপনি চাইতে পারেন এটি বৃদ্ধি / হ্রাস করতে।
+
+সেটি করতে, আপনি নীচের হিসাবে পছন্দসই মানের ফ্ল্যা`--block-gas-limit`গ ব্যবহার করতে পারেন:
+
+```shell
+--block-gas-limit 1000000000
+```
+
+:::
+
+:::info সিস্টেম ফাইল ডেস্ক্রিপ্টর সীমা সেট করুন
+
+ডিফল্ট ফাইল ডেস্ক্রিপ্টর সীমা (সর্বাধিক সংখ্যক ওপেন ফাইল) কিছু অপারেটিং সিস্টেমে বেশ ছোট। নোডগুলোর থেকে যদি উচ্চ থ্রুপুটের আশা করা হয়, তবে আপনি অপারেটিং সিস্টেমে এই সীমা বৃদ্ধি করার কথা বিবেচনা করতে পারেন।
+
+উবুন্টু ডিস্ট্রোর জন্য পদ্ধতিটি নিম্নরূপ (আপনি যদি উবুন্টু / ডেবিয়ান ডিস্ট্র ব্যবহার না করেন, তবে আপনার OS এর জন্য অফিসিয়াল নিয়মাবলী দেখুন):
+- বর্তমান OS সীমা চেক করুন (ওপেন ফাইল)
+```shell title="ulimit -a"
+ubuntu@ubuntu:~$ ulimit -a
+core file size (blocks, -c) 0
+data seg size (kbytes, -d) unlimited
+scheduling priority (-e) 0
+file size (blocks, -f) unlimited
+pending signals (-i) 15391
+max locked memory (kbytes, -l) 65536
+max memory size (kbytes, -m) unlimited
+open files (-n) 1024
+pipe size (512 bytes, -p) 8
+POSIX message queues (bytes, -q) 819200
+real-time priority (-r) 0
+stack size (kbytes, -s) 8192
+cpu time (seconds, -t) unlimited
+max user processes (-u) 15391
+virtual memory (kbytes, -v) unlimited
+file locks (-x) unlimited
+```
+
+- ওপেন ফাইল সীমা বৃদ্ধি করুন
+ - Localy - শুধুমাত্র বর্তমান সেশনকে প্রভাবিত করে:
+ ```shell
+ ulimit -u 65535
+ ```
+ - Globaly বা প্রতি ব্যবহারকারীর জন্য (/etc/security/limits.conf এর শেষে সীমা যোগ করুন):
+ ```shell
+ sudo vi /etc/security/limits.conf # we use vi, but you can use your favorite text editor
+ ```
+ ```shell title="/etc/security/limits.conf"
+ # /etc/security/limits.conf
+ #
+ #Each line describes a limit for a user in the form:
+ #
+ # -
+ #
+ #Where:
+ # can be:
+ # - a user name
+ # - a group name, with @group syntax
+ # - the wildcard *, for default entry
+ # - the wildcard %, can be also used with %group syntax,
+ # for maxlogin limit
+ # - NOTE: group and wildcard limits are not applied to root.
+ # To apply a limit to the root user, must be
+ # the literal username root.
+ #
+ # can have the two values:
+ # - "soft" for enforcing the soft limits
+ # - "hard" for enforcing hard limits
+ #
+ #
- can be one of the following:
+ # - core - limits the core file size (KB)
+ # - data - max data size (KB)
+ # - fsize - maximum filesize (KB)
+ # - memlock - max locked-in-memory address space (KB)
+ # - nofile - max number of open file descriptors
+ # - rss - max resident set size (KB)
+ # - stack - max stack size (KB)
+ # - cpu - max CPU time (MIN)
+ # - nproc - max number of processes
+ # - as - address space limit (KB)
+ # - maxlogins - max number of logins for this user
+
+ # - maxsyslogins - max number of logins on the system
+ # - priority - the priority to run user process with
+ # - locks - max number of file locks the user can hold
+ # - sigpending - max number of pending signals
+ # - msgqueue - max memory used by POSIX message queues (bytes)
+ # - nice - max nice priority allowed to raise to values: [-20, 19]
+ # - rtprio - max realtime priority
+ # - chroot - change root to directory (Debian-specific)
+ #
+ #
-
+ #
+
+ #* soft core 0
+ #root hard core 100000
+ #* hard rss 10000
+ #@student hard nproc 20
+ #@faculty soft nproc 20
+ #@faculty hard nproc 50
+ #ftp hard nproc 0
+ #ftp - chroot /ftp
+ #@student - maxlogins 4
+
+ * soft nofile 65535
+ * hard nofile 65535
+
+ # End of file
+ ```
+ঐচ্ছিকভাবে, অতিরিক্ত প্যারামিটার মডিফাই করুন, ফাইলটি সংরক্ষণ করুন এবং সিস্টেমটি পুনরায় চালু করুন। পুনরায় চালু করার পরে ফাইল ডেস্ক্রিপ্টর সীমা আবার চেক করুন। আপনি limits.conf ফাইলে যে মান নির্ধারণ করেছিলেন, তাই হওয়া উচিৎ।
+:::
+
+
+## স্টেপ 4: সকল ক্লায়েন্ট রান করুন {#step-4-run-all-the-clients}
+
+আমরা যেহেতু একটি Polygon Edge নেটওয়ার্ক রান করার করছি যেখানে একই মেশিনে 4টি নোড থাকবে, তাই আমাদের অবশ্যই খেয়াল রাখতে হবে যাতে আমরা পোর্ট কনফ্লিক্ট এড়াতে পারি। এই কারণেই আমরা একটি নোডের প্রতিটি সার্ভারের লিসেনিং পোর্ট নির্ধারণ করার জন্য নিম্নলিখিত যুক্তিগুলো ব্যবহার করব:
+
+- `10000`gRPC সার্ভারের জন্য`node 1`, `20000`gRPC সার্ভারের জন্য`node 2`, ইত্যাদি।
+- `10001`libp2p সার্ভারের `node 1`, `20001`libp2p সার্ভারের জন্য`node 2`, ইত্যাদি।
+- `10002`JSON-RPC সার্ভারের`node 1`, `20002`JSON-RPC সার্ভারের জন্য`node 2`, ইত্যাদি।
+
+**প্রথম** ক্লায়েন্ট রান করতে (পোর্টটি নোট করুন `10001`যেহেতু এটি libp2p multiaddr এর একটি অংশ হিসাবে **স্টেপ 2** এর নোড 1 এর নোড আইডির সাথে ব্যবহার করা হয়েছে):
+
+````bash
+polygon-edge server --data-dir ./test-chain-1 --chain genesis.json --grpc-address :10000 --libp2p :10001 --jsonrpc :10002 --seal
+````
+
+**দ্বিতীয়** ক্লায়েন্ট রান করতে:
+
+````bash
+polygon-edge server --data-dir ./test-chain-2 --chain genesis.json --grpc-address :20000 --libp2p :20001 --jsonrpc :20002 --seal
+````
+
+তৃতীয় ক্লায়েন্ট রান **করতে**:
+
+````bash
+polygon-edge server --data-dir ./test-chain-3 --chain genesis.json --grpc-address :30000 --libp2p :30001 --jsonrpc :30002 --seal
+````
+
+**চতুর্থ** ক্লায়েন্ট রান করতে:
+
+````bash
+polygon-edge server --data-dir ./test-chain-4 --chain genesis.json --grpc-address :40000 --libp2p :40001 --jsonrpc :40002 --seal
+````
+
+এতদূর পর্যন্ত যা করা হয়েছে তা সংক্ষিপ্তভাবে বলতে গেলেঃ
+
+* ক্লায়েন্ট ডেটার জন্য ডিরেক্টরি হিসাবে.**/test-chain-\* **নির্ধারিত হয়েছে
+* GRPC সার্ভারগুলো যথাক্রমে **10000**, **20000**, **30000** এবং **40000** এ পোর্ট চালু করেছে, প্রতিটি নোডের জন্য
+* libp2p সার্ভারগুলো যথাক্রমে **10001**, **20001**, **30001** এবং **40001** এ পোর্ট চালু করেছে, প্রতিটি নোডের জন্য
+* JSON-RPC সার্ভারগুলো যথাক্রমে **10002**, **20002**, **30002** এবং **40002** এ পোর্ট চালু করেছে, প্রতিটি নোডের জন্য
+* *সীল* ফ্ল্যাগের অর্থ হল, যে নোডটি শুরু করা হচ্ছে তা ব্লক সিলিংয়ে অংশগ্রহণ করবে
+* *চেইন* ফ্ল্যাগ এটি নির্দিষ্ট করে যে চেইন কনফিগারেশনের জন্য কোন জেনেসিস ফাইল ব্যবহার করা উচিত
+
+জেনেসিস ফাইলের গঠন নিয়ে [CLI Commands](/docs/edge/get-started/cli-commands) সেকশনে ব্যাখ্যা করা হয়েছে।
+
+পূর্ববর্তী কমান্ডগুলো রান করার পরে, আপনি একটি 4 নোডের Polygon Edge নেটওয়ার্ক সেট আপ করেছেন, যা ব্লক সিল করতে এবং ফিরে আসতে সক্ষম নোড ফেইলিওর থেকে।
+
+:::info কনফিগ ফাইল ব্যবহার করে ক্লায়েন্ট শুরু করুন
+
+সমস্ত কনফিগারেশন প্যারামিটার CLI আর্গুমেন্ট হিসাবে নির্দিষ্ট করার পরিবর্তে, ক্লায়েন্টটি নিম্নলিখিত কমান্ড সম্পাদন করে একটি কনফিগ ফাইল ব্যবহার করে শুরু করা যাবে:
+
+````bash
+polygon-edge server --config
+````
+উদাহরণ:
+
+````bash
+polygon-edge server --config ./test/config-node1.json
+````
+বর্তমানে, আমরা `yaml` এবং `json` ভিত্তিক কনফিগারেশন ফাইলগুলো সাপোর্ট করি, নমুনা কনফিগ ফাইল **[এখানে](/docs/edge/configuration/sample-config)** পাওয়া যাবে
+
+:::
+
+:::info একটি নন-ভ্যালিডেটর নোড রান করার স্টেপসমূহ
+
+একটি নন-ভ্যালিডেটর সর্বদা ভ্যালিডেটর নোডের থেকে পাওয়া সর্বশেষ ব্লক সিঙ্ক করবে, আপনি নিম্নলিখিত কমান্ডটি রান করে একটি নন-ভ্যালিডেটর নোড শুরু করতে পারেন।
+
+````bash
+polygon-edge server --data-dir --chain --grpc-address --libp2p --jsonrpc
+````
+উদাহরণস্বরূপ, আপনি নিম্নলিখিত কমান্ডটি সম্পাদন করে পঞ্**চম নন**-ভ্যালিডেটর ক্লায়েন্ট যোগ করতে পারেন:
+
+````bash
+polygon-edge server --data-dir ./test-chain --chain genesis.json --grpc-address :50000 --libp2p :50001 --jsonrpc :50002
+````
+:::
+
+:::info মূল্য সীমা নির্দিষ্ট করুন
+একটি Polygon Edge নোড আসন্ন লেনদেনের জন্য একটি নির্ধারিত **প্রাইস লিমিট** দিয়ে শুরু করা যাবে।
+
+মূল্য সীমা জন্য ইউনিট হল `wei`।
+
+একটি মূল্য সীমা সেট করার অর্থ হল, বর্তমান নোডের দ্বারা যেসব লেনদেন প্রক্রিয়া করা হবে তার জন্য গ্যাস মূল্য **বেশি** হবে সেট মূল্য সীমা থেকে, অন্যথায় এটি একটি ব্লকে অন্তর্ভুক্ত করা হবে না।
+
+নোডের সংখ্যাগরিষ্ঠতা একটি নির্দিষ্ট মূল্য সীমাকে সম্মান করলে নেটওয়ার্কে লেনদেন একটি নির্দিষ্ট মূল্যের থ্রেশহোল্ডের নিচে হতে পারে না এরকম একটি নিয়ম তৈরি হয়।
+
+প্রাইস লিমিটের `0`জন্য ডিফল্ট মান হল , যার অর্থ এটি ডিফল্টরূপে কখনোই প্রয়োগ করা হয় না।
+
+ ফ্ল্যাগ `--price-limit`ব্যবহার করার উদাহরণ:
+````bash
+polygon-edge server --price-limit 100000 ...
+````
+
+এটি মনে রাখা ভালো **যে শুধুমাত্র নন-লোকাল লেনদেনগুলিতে প্রাইস লিমিট প্রয়োগ করা হয়**, যার অর্থ হল যে নোডে স্থানীয়ভাবে যোগ করা লেনদেনগুলিতে প্রাইস লিমিট প্রযোজ্য নয়।
+:::
+
+:::info WebSocket URL
+ডিফল্টভাবে, যখন আপনি Polygon Edge রান করেন, তখন এটি চেইন লোকেশন এর উপর ভিত্তি করে একটি WebSocket URL তৈরি করে। URL স্কিম HTTPS লিঙ্কের জন্য এবং HTTP `ws://`এর জন্য ব্যবহার করা `wss://`হয়।
+
+Localhost WebSocket URL:
+````bash
+ws://localhost:10002/ws
+````
+অনুগ্রহ করে মনে রাখবেন যে পোর্ট নম্বর নোডের জন্য নির্বাচিত JSON-RPC পোর্টের উপর নির্ভর করে।
+
+Edgenet WebSocket URL:
+````bash
+wss://rpc-edgenet.polygon.technology/ws
+````
+:::
+
+
+
+## স্টেপ 5: Polygon-edge নেটওয়ার্কের সাথে ইন্টারঅ্যাক্ট করুন {#step-5-interact-with-the-polygon-edge-network}
+
+এখন যেহেতু আপনি কমপক্ষে 1টি চলমান ক্লায়েন্ট সেট আপ করেছেন, আপনি এখন আপনার দেওয়া প্রিমাইন্ড অ্যাকাউন্টটি ব্যবহার করে ইন্টারঅ্যাক্ট করতে পারেন এবং 4টি নোডের যেকোনো একটিতে JSON-RPC URL উল্লেখ করে আপনিঃ
+- নোড 1: `http://localhost:10002`
+- নোড 2: `http://localhost:20002`
+- নোড 3: `http://localhost:30002`
+- নোড 4: `http://localhost:40002`
+
+নতুন নির্মিত ক্লাস্টারে অপারেটর কমান্ড ইস্যু করতে এই গাইডটি অনুসরণ করুন: [অপারেটর তথ্য কীভাবে কুয়েরি করবেন ](/docs/edge/working-with-node/query-operator-info) (আমরা যে ক্লাস্টার তৈরি করেছি তার জন্য GRPC পোর্টগুলি হল প্রতিটি নোডের জন্য যথাক্রমে `10000`/`20000`/`30000`/`40000`)
diff --git a/archive/edge/bn-edge/get-started/set-up-ibft-on-the-cloud.md b/archive/edge/bn-edge/get-started/set-up-ibft-on-the-cloud.md
new file mode 100644
index 0000000000..0ccb942c16
--- /dev/null
+++ b/archive/edge/bn-edge/get-started/set-up-ibft-on-the-cloud.md
@@ -0,0 +1,412 @@
+---
+id: set-up-ibft-on-the-cloud
+title: ক্লাউড সেটআপ
+description: "ধাপে ধাপে ক্লাউড সেটআপ গাইড"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - cloud
+ - setup
+ - genesis
+---
+
+:::info এই গাইড মেইননেট বা testnet সেটআপ জন্য
+
+নীচের গাইড আপনাকে আপনার testnet বা মেইননেট একটি উত্পাদন সেটআপ জন্য একটি ক্লাউড প্রদানকারী একটি Polygon এজ নেটওয়ার্ক সেট আপ করার জন্য কিভাবে আপনাকে নির্দেশ করবে।
+
+আপনি একটি উত্পাদন মত সেটআপ করার আগে দ্রুত `polygon-edge`পরীক্ষা করার জন্য স্থানীয়ভাবে একটি Polygon এজ নেটওয়ার্ক সেটআপ করতে চান, দয়া করে **[লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally)**
+:::
+
+## প্রয়োজনীয়তা {#requirements}
+
+Polygon [Edge](/docs/edge/get-started/installation) ইনস্টল করার জন্য ইনস্টলেশন পড়ুন।
+
+### VM সংযোগ স্থাপন করা {#setting-up-the-vm-connectivity}
+
+ক্লাউড প্রদানকারী আপনার পছন্দ উপর নির্ভর করে, আপনি একটি ফায়ারওয়াল ব্যবহার করে VMs মধ্যে সংযোগ এবং নিয়ম সেট আপ করতে পারেন, নিরাপত্তা গ্রুপ, বা অ্যাক্সেস নিয়ন্ত্রণ তালিকা
+
+অন্যান্য VMs উন্মুক্ত করা প্রয়োজন যে একমাত্র অংশ হিসাবে `polygon-edge`libp2p সার্ভার ডিফল্ট `1478`libp2p পোর্ট VMs মধ্যে সমস্ত যোগাযোগ যথেষ্ট
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+
+
+এই গাইডে আমাদের লক্ষ্য হল [IBFT এর consensus](https://github.com/ethereum/EIPs/issues/650) প্রোটোকল এর সাথে কাজ করে একটি কার্যক্ষম `polygon-edge`ব্লকচেইন নেটওয়ার্ক স্থাপন করা। ব্লকচেইন নেটওয়ার্কের মধ্যে 4টি নোড রয়েছে যার মধ্যে সবগুলোই ভ্যালিডেটর নোড, এবং তাই তারা ব্লক প্রপোজ করা এবং অন্যান্য প্রোপোজার থেকে যে ব্লক নেয়া হয়েছে তা যাচাই করা, উভয়ের ক্ষেত্রেই যোগ্য হবে। 4 নোড প্রতিটি তাদের নিজস্ব VM এ চালানো হবে, কারণ এই গাইড ধারণা আপনাকে একটি সম্পূর্ণরূপে কার্যকরী Polygon এজ নেটওয়ার্ক প্রদান করা যখন একটি বিশ্বাসযোগ্য নেটওয়ার্ক সেটআপ নিশ্চিত করার জন্য যাচাইকারী কী প্রাইভেট করা হয়।
+
+এটি অর্জন করার জন্য, আমরা আপনাকে 4টি সহজ স্টেপের মাধ্যমে গাইড করব:
+
+0. উপরে প্রয়োজনীয়তা তালিকা **দেখুন**
+1. ভ্যালিডেটরের প্রতিটি জন্য প্রাইভেট কী তৈরি করুন এবং ডেটা ডিরেক্টরি
+2. বুটনোড ভাগ করা ইন করা জন্য সংযোগ স্ট্রিং তৈরি করুন`genesis.json`
+3. `genesis.json`আপনার স্থানীয় মেশিনে তৈরি করুন এবং এটি নোড প্রতিটি
+4. সমস্ত নোড শুরু করুন
+
+:::info ভ্যালিডেটরের সংখ্যা
+
+একটি ক্লাস্টারে নোডের সংখ্যার কোন ন্যূনতম মান নেই, অর্থাৎ শুধুমাত্র 1টি ভ্যালিডেটর নোড দিয়ে ক্লাস্টার সম্ভব। মনে রাখবেন যে _একটি একক_ নোড ক্লাস্টারের কোন **ক্র্যাশ সহনশীলতা** নেই **এবং কোন BFT গ্যারান্টি** নেই।
+
+একটি BFT গ্যারান্টি অর্জনের জন্য নোডের ন্যূনতম প্রস্তাবিত সংখ্যা 4 - যেহেতু একটি 4 নোড ক্লাস্টারে 1টি নোডের ব্যর্থতা সহনীয়, বাকি 3টি স্বাভাবিকভাবেই কাজ করবে।
+
+:::
+
+## ধাপ 1: ডেটা ফোল্ডার শুরু করুন এবং ভ্যালিডেটর কী তৈরি করুন {#step-1-initialize-data-folders-and-generate-validator-keys}
+
+Polygon Edge এর সাথে আপ এবং চলমান করার জন্য, আপনাকে প্রতিটি নোডে ডেটা ফোল্ডার শুরু করতে হবে:
+
+
+````bash
+node-1> polygon-edge secrets init --data-dir data-dir
+````
+
+````bash
+node-2> polygon-edge secrets init --data-dir data-dir
+````
+
+````bash
+node-3> polygon-edge secrets init --data-dir data-dir
+````
+
+````bash
+node-4> polygon-edge secrets init --data-dir data-dir
+````
+
+এই কমান্ডগুলোর প্রতিটি ভ্যালিডেটর কী, bls পাবলিক কী এবং [নোড আইডি প্রিন্ট](https://docs.libp2p.io/concepts/peer-id/) করবে। পরবর্তী স্টেপের জন্য আপনার প্রথম নোডের নোড আইডি প্রয়োজন হবে।
+
+### সিক্রেট আউটপুট করা {#outputting-secrets}
+যদি প্রয়োজন হয় তবে সিক্রেট আউটপুট আবার পুনরুদ্ধার করা যাবে।
+
+```bash
+polygon-edge secrets output --data-dir test-chain-4
+```
+
+:::warning আপনার ডেটা ডিরেক্টরি নিজের জন্য রাখুন!
+
+ব্লকচেইন স্টেট ধরে রাখার জন্য ডিরেক্টরি শুরু করার পাশাপাশি উপরে তৈরি ডেটা ডিরেক্টরি তৈরি করা হবে, এছাড়াও আপনার ভ্যালিডেটরের প্রাইভেট কী তৈরি করবে। **এই কীটি একটি গোপন হিসাবে রাখা উচিত, কারণ এটি চুরি করা এটি আপনাকে নেটওয়ার্কে ভ্যালিডেটর হিসাবে অনুকরণ করতে সক্ষম কাউকে রেন্ডার করবে!**
+:::
+
+## স্টেপ 2: বুটনোডের জন্য multiaddr কানেকশন স্ট্রিং প্রস্তুত করুন {#step-2-prepare-the-multiaddr-connection-string-for-the-bootnode}
+
+একটি নোডের সফলভাবে সংযোগ স্থাপন করার জন্য, তাকে অবশ্যই জানতে হবে যে কোন `bootnode`সার্ভারের সাথে সংযোগ করতে হবে নেটওয়ার্কের অবশিষ্ট সকল নোডের তথ্য পেতে। `bootnode`কে কখনও কখনও p2p জার্গনে `rendezvous`সার্ভারও বলা হয়।
+
+`bootnode`একটি Polygon Edge নোডের একটি বিশেষ উদাহরণ নয়। প্রতিটি Polygon এজ নোড একটি এবং `bootnode`হিসাবে পরিবেশন করতে পারে প্রতিটি Polygon Edge নোডের বুটনোডের একটি সেট নির্দিষ্ট করতে হবে যা কীভাবে সাথে সংযোগ করতে হবে সে সম্পর্কে তথ্য প্রদান করতে হবে নেটওয়ার্কের অবশিষ্ট সকল নোডের সাথে।
+
+বুটনোড নির্দিষ্ট করে সংযোগ স্ট্রিং তৈরি করার জন্য, আমাদের মানিয়ে চলতে হবে [multiaddr ফর্ম্যাট এর সাথে](https://docs.libp2p.io/concepts/addressing/)ঃ
+```
+/ip4//tcp//p2p/
+```
+
+এই গাইডে আমরা প্রথম এবং দ্বিতীয় নোডকে অন্য সকল নোডের জন্য বুটনোড হিসেবে ব্যবহার করব। এই পরিস্থিতিতে যা ঘটবে তা হল বা এর সাথে যে নোডগুল সংযোগ করে তারা একে অপরের সাথে পারস্পরিকভাবে সংযোজিত বুটনোড দি`node 2`য়ে `node 1`কীভাবে সংযোগ করবে তার তথ্য পাবে।
+
+:::info একটি নোড শুরু করতে আপনাকে অন্তত একটি বুটনোড নির্দিষ্ট করতে হবে
+
+অন্তত একটি বুটনোড প্রয়োজনীয়, যাতে নেটওয়ার্কের অন্যান্য নো**ডগ**ুলো একে অপরকে আবিষ্কার করতে পারে। অতিরিক্ত বুটনোডের পরামর্শ দেওয়া হয়, কারণ বিদ্যুৎ চলে যাওয়ার ক্ষেত্রে তারা নেটওয়ার্ককে সহনশীলতা প্রদান করে। এই গাইডে আমরা দুটি নোডের তালিকা দিব, কিন্তু এটি যেকোনো সময়ে পরিবর্তন করা যাবে, এবং এতে ফাইলের বৈধতার উপর কোন প্রভাব পড়ে `genesis.json`না।
+:::
+
+multiaddr সংযোগ ``স্ট্রিংয়ের প্রথম অংশ হিসাবে এটি , এখানে আপনাকে আপনার সেটআপের উপর নির্ভর করে অন্যান্য নোডের দ্বারা রিচেবল হিসাবে আইপি ঠিকানা প্রবেশ করতে হবে, এটি একটি প্রাইভেট বা একটি পাবলিক আইপি ঠিকানা হতে পারে, না`127.0.0.1`।
+
+``আমরা ব্যবহার `1478`করব, কারণ এটি ডিফল্ট libp2p পোর্ট
+
+এবং অবশেষে, আমাদের প্রয়োজন ``যা আমরা পূর্বে রান করা কমান্ডের আউটপুট থেকে পাবো `polygon-edge secrets init --data-dir data-dir`(যা এর জন্য কী জেনারেট করতে এবং ডাটা ডিরেক্টরি তৈরি করতে ব্যবহৃত হয়েছি`node 1`লও)
+
+অ্যাসেম্বলির পর, এর সাথে multiaddr কানেকশন স্ট্রিং `node 1`যা আমরা বুটনোড হিসেবে ব্যবহার করব, তা দেখতে কিছুটা এরকম হবে (শুধুমাত্র ``যেটি শেষে আছে, সেটি দেখতে কিছুটা আলাদা হবে):
+```
+/ip4//tcp/1478/p2p/16Uiu2HAmJxxH1tScDX2rLGSU9exnuvZKNM9SoK3v315azp68DLPW
+```
+একইভাবে, আমরা দ্বিতীয় বুটনোডের জন্য multiaddr তৈরি করি
+```
+/ip4//tcp/1478/p2p/16Uiu2HAmS9Nq4QAaEiogE4ieJFUYsoH28magT7wSvJPpfUGBj3Hq
+```
+:::info ips এর পরিবর্তে DNS হোস্টনেম
+
+Polygon Edge নোড কনফিগারেশনের জন্য DNS হোস্টনেমের ব্যবহার সাপোর্ট করে। এটি ক্লাউড ভিত্তিক ডিপ্লয়মেন্টের জন্য অনেক সহায়ক বৈশিষ্ট্য, কারণ নোডের আইপি বিভিন্ন কারনে পরিবর্তিত হতে পারে।
+
+DNS হোস্টনেম ব্যবহার করার সময় কানেকশন স্ট্রিংয়ের জন্য multiaddr ফর্ম্যাটটি নিম্নলিখিতঃ`/dns4/sample.hostname.com/tcp//p2p/nodeid`
+
+:::
+
+## স্টেপ 3: 4টি নোডকে ভ্যালিডেটর হিসানে নিয়ে জেনেসিস ফাইল তৈরি করুন {#step-3-generate-the-genesis-file-with-the-4-nodes-as-validators}
+
+এই পদক্ষেপটি আপনার স্থানীয় মেশিনে চালানো যেতে পারে, কিন্তু আপনাকে 4 ভ্যালিডেটরের প্রতিটি জন্য পাবলিক ভ্যালিডেটর কী দরকার।
+
+ভ্যালিডেটর তাদের `secrets init`কমান্ডে আউটপুট নীচের প্রদর্শিত হিসাবে নিরাপদে ভাগ `Public key (address)`করতে পারে, যাতে আপনি তাদের পাবলিক কী দ্বারা চিহ্নিত প্রাথমিক ভ্যালিডেটর in সেই ভ্যালিডেটরের সাথে genesis.json নিরাপদে তৈরি করতে পারেন:
+
+```
+[SECRETS INIT]
+Public key (address) = 0xC12bB5d97A35c6919aC77C709d55F6aa60436900
+BLS Public key = 0x9952735ca14734955e114a62e4c26a90bce42b4627a393418372968fa36e73a0ef8db68bba11ea967ff883e429b3bfdf
+Node ID = 16Uiu2HAmVZnsqvTwuzC9Jd4iycpdnHdyVZJZTpVC8QuRSKmZdUrf
+```
+
+আপনি ভ্যালিডেটরের পাবলিক কী সব 4 পেয়েছি তা দেওয়া, আপনি জেনারেট করতে নিম্নলিখিত কমান্ডটি চালাতে পারেন`genesis.json`
+
+````bash
+polygon-edge genesis --consensus ibft --ibft-validator 0xC12bB5d97A35c6919aC77C709d55F6aa60436900:0x9952735ca14734955e114a62e4c26a90bce42b4627a393418372968fa36e73a0ef8db68bba11ea967ff883e429b3bfdf --ibft-validator <2nd validator IBFT public key>:<2nd validator BLS public key> --ibft-validator <3rd validator IBFT public key>:<3rd validator BLS public key> --ibft-validator <4th validator IBFT public key>:<4th validator BLS public key> --bootnode= --bootnode --bootnode
+````
+
+এই কমান্ডটি যা করে:
+
+* ভ্যালিডেটরের পাবলিক কী সেট করে `--ibft-validator`যা জেনেসিস ব্লকে প্রাথমিক ভ্যালিডেটরের মধ্যে অন্তর্ভুক্ত করা উচিত। অনেক প্রাথমিক ভ্যালিডেটর হতে পারে।
+* বুটনোডের অ্যাড্রেস সেট করে `--bootnode`যা নোডগুলোকে একে অপরকে খুঁজে পেতে সাহায্য করবে। আমরা স্টেপ **2**-এ উল্লিখিত হিসাবে multiaddr স্ট্রিং`node 1`টি ব্যবহার করব, যদিও আপনি উপরে প্রদর্শিত হিসাবে আপনি চান হিসাবে অনেক বুটনোড যোগ করতে পারেন।
+
+:::info ECDSA তে সুইচ করুন
+
+BLS ব্লক হেডারদের জন্য ডিফল্ট ভ্যালিডেশন মোড। আপনি যদি আপনার চেইনটিকে ECDSA মোডে রান করাতে চান তবে আপনি ফ্ল্যাগটি ব্যবহার করতে পারে`—ibft-validator-type`ন, এই আর্গুমেন্ট `ecdsa`সহ:
+
+```
+genesis --ibft-validator-type ecdsa
+```
+:::
+
+:::info অ্যাকাউন্টের প্রিমাইনিং ব্যালেন্স
+
+আপনি হয়তোবা কিছু "প্রিমাইন্ড" ব্যালেন্স সহ অ্যাড্রেস আপনার ব্লকচেইন নেটওয়ার্কে সেট আপ করতে চাইবেন।
+
+এটি অর্জন করতে, আপনি একটি নির্দিষ্ট ব্যালেন্সের সাথে শুরু করতে চান এমন সবগুলো অ্যাড্রেসকে যতবার ইচ্ছা ফ্ল্যা`--premine`গে পাস করুন ব্লকচেইনে।
+
+উদাহরণস্বরূপ, আমরা যদি আমাদের জেনেসিস ব্লকের অ্যাড্রেসে 1000 ETH `0x3956E90e632AEbBF34DEB49b71c28A83Bc029862`প্রিমাইন করতে চাই, তবে আমাদের নিম্নলিখিত আর্গুমেন্ট সরবরাহ করতে হবে:
+
+```
+--premine=0x3956E90e632AEbBF34DEB49b71c28A83Bc029862:1000000000000000000000
+```
+
+**মনে রাখবেন, প্রিমাইন করা পরিমাণ ETH এ নয়, WEI তে থাকবে।**
+
+:::
+
+:::info ব্লক গ্যাস সীমা সেট করুন
+
+প্রতিটি ব্লকের জন্য ডিফল্ট গ্যাস সীমা হলো`5242880`। এই মানটি জেনেসিস ফাইলে লেখা হয়, কিন্তু আপনি চাইতে পারেন এটি বৃদ্ধি / হ্রাস করতে।
+
+সেটি করতে, আপনি নীচের হিসাবে পছন্দসই মানের ফ্ল্যা`--block-gas-limit`গ ব্যবহার করতে পারেন:
+
+```shell
+--block-gas-limit 1000000000
+```
+
+:::
+
+:::info সিস্টেম ফাইল ডেস্ক্রিপ্টর সীমা সেট করুন
+
+ডিফল্ট ফাইল ডেস্ক্রিপ্টর সীমা (সর্বাধিক সংখ্যক ওপেন ফাইল) কিছু অপারেটিং সিস্টেমে বেশ ছোট। নোডগুলোর থেকে যদি উচ্চ থ্রুপুটের আশা করা হয়, তবে আপনি অপারেটিং সিস্টেমে এই সীমা বৃদ্ধি করার কথা বিবেচনা করতে পারেন।
+
+উবুন্টু ডিস্ট্রোর জন্য পদ্ধতিটি নিম্নরূপ (আপনি যদি উবুন্টু / ডেবিয়ান ডিস্ট্র ব্যবহার না করেন, তবে আপনার OS এর জন্য অফিসিয়াল নিয়মাবলী দেখুন):
+- বর্তমান OS সীমা চেক করুন (ওপেন ফাইল)
+```shell title="ulimit -a"
+ubuntu@ubuntu:~$ ulimit -a
+core file size (blocks, -c) 0
+data seg size (kbytes, -d) unlimited
+scheduling priority (-e) 0
+file size (blocks, -f) unlimited
+pending signals (-i) 15391
+max locked memory (kbytes, -l) 65536
+max memory size (kbytes, -m) unlimited
+open files (-n) 1024
+pipe size (512 bytes, -p) 8
+POSIX message queues (bytes, -q) 819200
+real-time priority (-r) 0
+stack size (kbytes, -s) 8192
+cpu time (seconds, -t) unlimited
+max user processes (-u) 15391
+virtual memory (kbytes, -v) unlimited
+file locks (-x) unlimited
+```
+
+- ওপেন ফাইল সীমা বৃদ্ধি করুন
+ - Localy - শুধুমাত্র বর্তমান সেশনকে প্রভাবিত করে:
+ ```shell
+ ulimit -u 65535
+ ```
+ - Globaly বা প্রতি ব্যবহারকারীর জন্য (/etc/security/limits.conf এর শেষে সীমা যোগ করুন):
+ ```shell
+ sudo vi /etc/security/limits.conf # we use vi, but you can use your favorite text editor
+ ```
+ ```shell title="/etc/security/limits.conf"
+ # /etc/security/limits.conf
+ #
+ #Each line describes a limit for a user in the form:
+ #
+ #
-
+ #
+ #Where:
+ # can be:
+ # - a user name
+ # - a group name, with @group syntax
+ # - the wildcard *, for default entry
+ # - the wildcard %, can be also used with %group syntax,
+ # for maxlogin limit
+ # - NOTE: group and wildcard limits are not applied to root.
+ # To apply a limit to the root user, must be
+ # the literal username root.
+ #
+ # can have the two values:
+ # - "soft" for enforcing the soft limits
+ # - "hard" for enforcing hard limits
+ #
+ #
- can be one of the following:
+ # - core - limits the core file size (KB)
+ # - data - max data size (KB)
+ # - fsize - maximum filesize (KB)
+ # - memlock - max locked-in-memory address space (KB)
+ # - nofile - max number of open file descriptors
+ # - rss - max resident set size (KB)
+ # - stack - max stack size (KB)
+ # - cpu - max CPU time (MIN)
+ # - nproc - max number of processes
+ # - as - address space limit (KB)
+ # - maxlogins - max number of logins for this user
+
+ # - maxsyslogins - max number of logins on the system
+ # - priority - the priority to run user process with
+ # - locks - max number of file locks the user can hold
+ # - sigpending - max number of pending signals
+ # - msgqueue - max memory used by POSIX message queues (bytes)
+ # - nice - max nice priority allowed to raise to values: [-20, 19]
+ # - rtprio - max realtime priority
+ # - chroot - change root to directory (Debian-specific)
+ #
+ #
-
+ #
+
+ #* soft core 0
+ #root hard core 100000
+ #* hard rss 10000
+ #@student hard nproc 20
+ #@faculty soft nproc 20
+ #@faculty hard nproc 50
+ #ftp hard nproc 0
+ #ftp - chroot /ftp
+ #@student - maxlogins 4
+
+ * soft nofile 65535
+ * hard nofile 65535
+
+ # End of file
+ ```
+ঐচ্ছিকভাবে, অতিরিক্ত প্যারামিটার মডিফাই করুন, ফাইলটি সংরক্ষণ করুন এবং সিস্টেমটি পুনরায় চালু করুন। পুনরায় চালু করার পরে ফাইল ডেস্ক্রিপ্টর সীমা আবার চেক করুন। আপনি limits.conf ফাইলে যে মান নির্ধারণ করেছিলেন, তাই হওয়া উচিৎ।
+:::
+
+এটি নির্দিষ্ট করার পরে:
+1. ভ্যালিডেটর সেট হিসাবে জেনেসিস ব্লকে ভ্যালিডেটরের পাবলিক কী অন্তর্ভুক্ত করা হবে
+2. বুটনোড multiaddr সংযোগ strings
+3. জেনেসিস ব্লকে প্রিমিয়াম অ্যাকাউন্ট এবং ব্যালেন্স অন্তর্ভুক্ত করা হবে
+
+এবং এটি তৈরি করা`genesis.json`, আপনাকে নেটওয়ার্কে সমস্ত VMs এ এটি কপি করতে হবে। আপনার সেটআপের উপর নির্ভর করে আপনি হতে পারেন এটি কপি / পেস্ট করুন, এটি নোড অপারেটরের কাছে প্রেরণ করুন, বা এটি কেবল SCP/FTP / SCP/FTP ওভার।
+
+জেনেসিস ফাইলের গঠন নিয়ে [CLI Commands](/docs/edge/get-started/cli-commands) সেকশনে ব্যাখ্যা করা হয়েছে।
+
+## স্টেপ 4: সকল ক্লায়েন্ট রান করুন {#step-4-run-all-the-clients}
+
+:::note ক্লাউড প্রদানকারীর নেটওয়ার্কিং
+
+বেশিরভাগ ক্লাউড প্রোভাইডার আপনার VM এ একটি সরাসরি নেটওয়ার্ক ইন্টারফেস হিসাবে আইপি ঠিকানা (বিশেষত পাবলিক বেশী) প্রকাশ করে না, বরং একটি অদৃশ্য don't প্রক্সি সেটআপ করুন।
+
+
+এই ক্ষেত্রে নোডগুলিকে একে অপরকে সংযোগ করতে অনুমতি দেওয়ার জন্য আপনাকে সমস্ত ইন্টারফেসে বাঁধতে `0.0.0.0`IP ঠিকানা শোনার জন্য প্রয়োজন হবে, কিন্তু আপনাকে এখনও আইপি ঠিকানা বা DNS ঠিকানা নির্দিষ্ট করতে হবে যা অন্যান্য নোডগুলি আপনার ইনস্ট্যান্সের সাথে সংযোগ করতে ব্যবহার করতে পারে। এটি যথাক্রমে আপনার বহিরাগত আইপি বা DNS ঠিকানা নির্দিষ্ট করতে পারেন যেখানে `--nat`বা আর্`--dns`গুমেন্ট ব্যবহার করে হয় অর্জন করা হয়।
+
+#### উদাহরণ {#example}
+
+আপনি যা শুনতে `192.0.2.1`চান তা সংশ্লিষ্ট আইপি ঠিকানা হল , কিন্তু এটি আপনার কোনও নেটওয়ার্ক ইন্টারফেসের সাথে সরাসরি আবদ্ধ নয়।
+
+আপনি নিম্নলিখিত প্যারামিটারগুলি পাস করতে নোডগুলি সংযোগ করতে অনুমতি দিতে:
+
+`polygon-edge ... --libp2p 0.0.0.0:10001 --nat 192.0.2.1`
+
+Or, আপনি যদি একটি DNS `dns/example.io`ঠিকানা নির্দিষ্ট করতে চান তবে নিম্নলিখিত প্যারামিটার পাস করুন:
+
+`polygon-edge ... --libp2p 0.0.0.0:10001 --dns dns/example.io`
+
+এটি আপনার নোড সমস্ত ইন্টারফেসে শুনতে পাবে, কিন্তু এটি নিশ্চিত করা যে ক্লায়েন্ট নির্দিষ্ট বা `--dns`ঠিকানা মাধ্যমে এটি সংযোগ `--nat`করছে।
+
+:::
+
+চতুর্থ ক্লায়েন্ট রান **করতে**:
+
+
+````bash
+node-1> polygon-edge server --data-dir ./data-dir --chain genesis.json --libp2p 0.0.0.0:1478 --nat --seal
+````
+
+দ্বিতীয় ক্লায়েন্ট রান **করতে**:
+
+````bash
+node-2> polygon-edge server --data-dir ./data-dir --chain genesis.json --libp2p 0.0.0.0:1478 --nat --seal
+````
+
+তৃতীয় ক্লায়েন্ট রান **করতে**:
+
+````bash
+node-3> polygon-edge server --data-dir ./data-dir --chain genesis.json --libp2p 0.0.0.0:1478 --nat --seal
+````
+
+চতুর্থ ক্লায়েন্ট রান **করতে**:
+
+````bash
+node-4> polygon-edge server --data-dir ./data-dir --chain genesis.json --libp2p 0.0.0.0:1478 --nat --seal
+````
+
+পূর্ববর্তী কমান্ডগুলো রান করার পরে, আপনি একটি 4 নোডের Polygon Edge নেটওয়ার্ক সেট আপ করেছেন, যা ব্লক সিল করতে এবং ফিরে আসতে সক্ষম নোড ফেইলিওর থেকে।
+
+:::info কনফিগ ফাইল ব্যবহার করে ক্লায়েন্ট শুরু করুন
+
+সমস্ত কনফিগারেশন প্যারামিটার CLI আর্গুমেন্ট হিসাবে নির্দিষ্ট করার পরিবর্তে, ক্লায়েন্টটি নিম্নলিখিত কমান্ড সম্পাদন করে একটি কনফিগ ফাইল ব্যবহার করে শুরু করা যাবে:
+
+````bash
+polygon-edge server --config
+````
+উদাহরণ:
+
+````bash
+polygon-edge server --config ./test/config-node1.json
+````
+বর্তমানে, আমরা শুধুমাত্র `json`ভিত্তিক কনফিগারেশন ফাইল সমর্থন করি, নমুনা কনফি**[গ](/docs/edge/configuration/sample-config)** ফাইল এখানে পাওয়া যাবে
+
+:::
+
+:::info একটি নন-ভ্যালিডেটর নোড রান করার স্টেপসমূহ
+
+একটি নন-ভ্যালিডেটর সর্বদা ভ্যালিডেটর নোডের থেকে পাওয়া সর্বশেষ ব্লক সিঙ্ক করবে, আপনি নিম্নলিখিত কমান্ডটি রান করে একটি নন-ভ্যালিডেটর নোড শুরু করতে পারেন।
+
+````bash
+polygon-edge server --data-dir --chain --libp2p --nat
+````
+উদাহরণস্বরূপ, আপনি নিম্নলিখিত কমান্ডটি সম্পাদন করে পঞ্**চম নন**-ভ্যালিডেটর ক্লায়েন্ট যোগ করতে পারেন:
+
+````bash
+polygon-edge server --data-dir ./data-dir --chain genesis.json --libp2p 0.0.0.0:1478 --nat
+````
+:::
+
+:::info মূল্য সীমা নির্দিষ্ট করুন
+একটি Polygon Edge নোড আসন্ন লেনদেনের জন্য একটি নির্ধারিত **প্রাইস লিমিট** দিয়ে শুরু করা যাবে।
+
+মূল্য সীমা জন্য ইউনিট হল `wei`।
+
+একটি মূল্য সীমা সেট করার অর্থ হল, বর্তমান নোডের দ্বারা যেসব লেনদেন প্রক্রিয়া করা হবে তার জন্য গ্যাস মূল্য **বেশি হবে** সেট মূল্য সীমা থেকে, অন্যথায় এটি একটি ব্লকে অন্তর্ভুক্ত করা হবে না।
+
+নোডের সংখ্যাগরিষ্ঠতা একটি নির্দিষ্ট মূল্য সীমাকে সম্মান করলে নেটওয়ার্কে লেনদেন একটি নির্দিষ্ট মূল্যের থ্রেশহোল্ডের নিচে হতে পারে না এরকম একটি নিয়ম তৈরি হয়।
+
+প্রাইস লিমিটের `0`জন্য ডিফল্ট মান হল , যার অর্থ এটি ডিফল্টরূপে কখনোই প্রয়োগ করা হয় না।
+
+ ফ্ল্যাগ `--price-limit`ব্যবহার করার উদাহরণ:
+````bash
+polygon-edge server --price-limit 100000 ...
+````
+
+এটি মনে রাখা ভালো **যে শুধুমাত্র নন-লোকাল লেনদেনগুলিতে প্রাইস লিমিট প্রয়োগ করা হয়**, যার অর্থ হল যে নোডে স্থানীয়ভাবে যোগ করা লেনদেনগুলিতে প্রাইস লিমিট প্রযোজ্য নয়।
+:::
+
+:::info WebSocket URL
+ডিফল্টভাবে, যখন আপনি Polygon Edge রান করেন, তখন এটি চেইন লোকেশন এর উপর ভিত্তি করে একটি WebSocket URL তৈরি করে। URL স্কিম HTTPS লিঙ্কের জন্য এবং HTTP `ws://`এর জন্য ব্যবহার করা `wss://`হয়।
+
+Localhost WebSocket URL:
+````bash
+ws://localhost:10002/ws
+````
+অনুগ্রহ করে মনে রাখবেন যে পোর্ট নম্বর নোডের জন্য নির্বাচিত JSON-RPC পোর্টের উপর নির্ভর করে।
+
+Edgenet WebSocket URL:
+````bash
+wss://rpc-edgenet.polygon.technology/ws
+````
+:::
diff --git a/archive/edge/bn-edge/get-started/terraform-aws-deployment.md b/archive/edge/bn-edge/get-started/terraform-aws-deployment.md
new file mode 100644
index 0000000000..ae432d0a8f
--- /dev/null
+++ b/archive/edge/bn-edge/get-started/terraform-aws-deployment.md
@@ -0,0 +1,150 @@
+---
+id: terraform-aws-deployment
+title: Terraform AWS স্থাপনা
+description: "Terraform ব্যবহার করে AWS ক্লাউড প্রদানকারীর Polygon Edge নেটওয়ার্ক"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - deployment
+ - terraform
+ - aws
+ - script
+---
+:::info উৎপাদন স্থাপনা গাইড
+এটি অফিস, উত্পাদন প্রস্তুত, সম্পূর্ণরূপে অটোমেটেড, AWS স্থাপনা গাইড।
+
+***[ক্লাউড](set-up-ibft-locally)*** ***[বা স্থানীয়](set-up-ibft-on-the-cloud)*** আপনার ক্লাউড প্রদানকারী AWS না থাকলে পরীক্ষার জন্য সুপারিশ করা হয়।
+:::
+
+:::info
+ এই স্থাপনা শুধুমাত্র PoA যদি PoS প্রক্রিয়া প্রয়োজন হয়, তাহলে এখন এই ***[গাইড](/docs/edge/consensus/migration-to-pos)*** PoA থেকে PoS একটি সুইচ করতে
+:::
+
+এই গাইড বিস্তারিত, AWS ক্লাউড প্রদানকারীর একটি Polygon Edge blockchain নেটওয়ার্ক স্থাপনা প্রক্রিয়া বর্ণনা যে উত্পাদন প্রস্তুত হিসাবে যাচাইকারী নোড একাধিক প্রাপ্যতা জোন জুড়ে spanned করা হয়।
+
+## পূর্বশর্ত {#prerequisites}
+
+### সিস্টেম সরঞ্জাম {#system-tools}
+* [terraform](https://www.terraform.io/)
+* [aws cli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+* [aws অ্যাক্সেস কী আইডি এবং গোপন অ্যাক্সেস কী](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-prereqs.html#getting-started-prereqs-keys)
+
+### Terraform ভেরিয়েবল {#terraform-variables}
+deployment: চালানোর আগে দুটি ভেরিয়েবল প্রদান করা আবশ্যক:
+
+* `alb_ssl_certificate`- AWS সার্টিফিকেট ম্যানেজার থেকে সার্টিফিকেট ARN HTTPS প্রোটোকল জন্য ALB দ্বারা ব্যবহার করা হবে । সার্টিফিকেট স্থাপনা শুরু করার আগে তৈরি করা আবশ্যক, এবং এটি **জারি** অবস্থা
+* `premine`- অ্যাকাউন্ট যে প্রাক mined নেটিভ মুদ্রা মান অফিসিয়াল [CLI](/docs/edge/get-started/cli-commands#genesis-flags) পতাকা স্পেসিফিকেশন
+
+## স্থাপনা তথ্য {#deployment-information}
+### ডিপ্লয়েড সম্পদ {#deployed-resources}
+সম্পদ যে স্থাপনা করা হবে:
+
+* উত্সর্গীকৃত VPC
+* 4 যাচাইকারী নোড (যা বুট নোড
+* 4 NAT গেটওয়ে নোড outbound ইন্টারনেট ট্রাফিক
+* Lambda ফাংশন প্রথম (জেনেসিস) ব্লক তৈরি এবং চেইন
+* উত্সর্গীকৃত নিরাপত্তা গ্রুপ এবং IAM ভূমিকা
+* S3 বালতি genesis.json ফাইল
+* অ্যাপ্লিকেশন লোড Balancer JSON-RPC এন্ডপয়েন্ট এক্সপোজ জন্য
+
+### ফল্ট সহনশীলতা {#fault-tolerance}
+
+শুধুমাত্র অঞ্চলে যে 4 প্রাপ্যতা অঞ্চল আছে এই স্থাপনা প্রতিটি নোড একটি এককে স্থাপন করা হয়।
+
+একটি এককে প্রতিটি নোড স্থাপন করে, পুরো ব্লকচেইন ক্লাস্টার একটি একক নোড (AZ) ব্যর্থতা জন্য fault-tolerant ঐক্যমত্য যা একটি একক নোড একটি 4 যাচাইকারী নোড ক্লাস্টার ব্যর্থ করতে
+
+### কমান্ড লাইন অ্যাক্সেস {#command-line-access}
+
+ভ্যালিডেটর নোড পাবলিক ইন্টারনেট যে কোন ভাবেই উন্মুক্ত করা হয় না এবং তারা তাদের সাথে সংযুক্ত পাবলিক আইপি ঠিকানা নেই। নোড কমান্ড লাইন অ্যাক্সেস শুধুমাত্র [AWS সিস্টেম ম্যানেজার মাধ্যমে সম্ভব](https://aws.amazon.com/systems-manager/features/)
+
+### বেস AMI আপগ্রেড {#base-ami-upgrade}
+
+এই স্থাপনা `ubuntu-focal-20.04-amd64-server`AWS AMI AWS AMI আপডেট করা হলে এটি EC2 **not** ট্রিগার *করবে*
+
+যদি, কিছু কারণে, বেস AMI আপডেট পেতে প্রয়োজন এটি প্রতিটি উদাহরণ `terraform apply` জন্য `terraform taint`কমান্ড চলমান দ্বারা অর্জন করা যেতে ইন্সট্যান্স চলমান দ্বারা টেইন্টেড`terraform taint module.instances[].aws_instance.polygon_edge_instance` কমান্ড।
+
+উদাহরণ:
+```shell
+terraform taint module.instances[0].aws_instance.polygon_edge_instance
+terraform taint module.instances[1].aws_instance.polygon_edge_instance
+terraform taint module.instances[2].aws_instance.polygon_edge_instance
+terraform taint module.instances[3].aws_instance.polygon_edge_instance
+terraform apply
+```
+
+:::info
+একটি উত্পাদন পরিবেশে `terraform taint`ব্লকচেইন নেটওয়ার্ক কার্যকরী
+:::
+
+## স্থাপনা পদ্ধতি {#deployment-procedure}
+
+### প্রাক স্থাপনা পদক্ষেপ {#pre-deployment-steps}
+* [Polygon-technology](https://registry.terraform.io/modules/aws-ia/polygon-technology-edge/aws)-edge terraform রেজিস্ট্রি readme
+* মডিউল modules' পৃষ্ঠায় বিধান নির্দেশাবলী *ব্যবহার* `polygon-technology-edge``main.tf`করে
+* `terraform init`সমস্ত প্রয়োজনীয় Terraform নির্ভরতা
+* AWS সার্টিফিকেট [ম্যানেজার](https://aws.amazon.com/certificate-manager/)
+* নিশ্চিত করুন যে **প্রদত্ত** সার্টিফিকেট **জারি** অবস্থায়
+* cli মডিউল 'আউটপুট পেতে
+
+#### `main.tf`উদাহরণ {#example}
+```terraform
+module "polygon-edge" {
+ source = "aws-ia/polygon-technology-edge/aws"
+ version = ">=0.0.1"
+
+ premine = var.premine
+ alb_ssl_certificate = var.alb_ssl_certificate
+}
+
+output "json_rpc_dns_name" {
+ value = module.polygon-edge.jsonrpc_dns_name
+ description = "The dns name for the JSON-RPC API"
+}
+
+variable "premine" {
+ type = string
+ description = "Public account that will receive premined native currency"
+}
+
+variable "alb_ssl_certificate" {
+ type = string
+ description = "The ARN of SSL certificate that will be placed on JSON-RPC ALB"
+}
+```
+
+#### `terraform.tfvars`উদাহরণ {#example-1}
+```terraform
+premine = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
+alb_ssl_certificate = "arn:aws:acm:us-west-2:123456789:certificate/64c7f117-61f5-435e-878b-83186676a8af"
+```
+
+### স্থাপনা পদক্ষেপ {#deployment-steps}
+* `terraform.tfvars`ফাইল
+* এই ফাইলের প্রয়োজনীয় terraform ভেরিয়েবল সেট করুন:::info
+অন্যান্য অ বাধ্যতামূলক ভেরিয়েবল যে সম্পূর্ণরূপে এই স্থাপনা কাস্টমাইজ করতে আপনি আপনার নিজের ফাইল `terraform.tfvars`যোগ করে ডিফল্ট মান
+
+সমস্ত উপলব্ধ ভেরিয়েবল স্পেসিফিকেশন মডিউল 'Terraform ***[রেজিস্ট্রি](https://registry.terraform.io/modules/aws-ia/polygon-technology-edge/aws)***
+:::
+* নিশ্চিত করুন যে আপনি একটি aws `aws s3 ls`cli
+* পরিকাঠামো`terraform apply`
+
+### পোস্ট স্থাপনা পদক্ষেপ {#post-deployment-steps}
+* একবার স্থাপনা সমাপ্ত হয়, cli `json_rpc_dns_name`মুদ্রিত
+* একটি পাবলিক dns cname রেকর্ড উপলব্ধ `json_rpc_dns_name`মান আপনার ডোমেন নাম উদাহরণস্বরূপ:
+ ```shell
+ # BIND syntax
+ # NAME TTL CLASS TYPE CANONICAL NAME
+ rpc.my-awsome-blockchain.com. IN CNAME jrpc-202208123456879-123456789.us-west-2.elb.amazonaws.com.
+ ```
+* একবার cname রেকর্ড প্রচার করে, চেক করুন যে চেইন আপনার JSON-PRC এন্ডপয়েন্ট কল করে সঠিকভাবে কাজ করছে । উপরে উদাহরণ
+ ```shell
+ curl https://rpc.my-awsome-blockchain.com -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
+ ```
+
+## ধ্বংস পদ্ধতি {#destroy-procedure}
+:::warning
+নিম্নলিখিত পদ্ধতি স্থায়ীভাবে এই terraform স্ক্রিপ্ট সঙ্গে আপনার সম্পূর্ণ পরিকাঠামো স্থাপনা মুছে ফেলবে। নিশ্চিত [করুন যে আপনার সঠিক ব্লকচেইন ডেটা ব্যাকআপ](docs/edge/working-with-node/backup-restore) এবং / বা আপনি একটি টেস্টিং পরিবেশ সঙ্গে কাজ করছেন।
+:::
+
+আপনি যদি পুরো পরিকাঠামো অপসারণ করতে হবে`terraform destroy` , নিম্নলিখিত কমান্ড উপরন্তু, আপনি নিজে AWS [পরামিতি দোকান সংরক্ষণ](https://aws.amazon.com/systems-manager/features/) গোপন অপসারণ অঞ্চলের জন্য স্থাপনা স্থান
diff --git a/archive/edge/bn-edge/overview.md b/archive/edge/bn-edge/overview.md
new file mode 100644
index 0000000000..2884256301
--- /dev/null
+++ b/archive/edge/bn-edge/overview.md
@@ -0,0 +1,35 @@
+---
+id: overview
+title: Polygon Edge
+sidebar_label: What is Edge
+description: "Polygon Edge-এর পরিচিতি।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - network
+ - modular
+
+---
+
+Polygon Edge Ethereum-সামঞ্জস্যপূর্ণ ব্লকচেইন নেটওয়ার্ক, সাইডচেইন এবং সাধারণ স্কেলিং সমাধান তৈরির জন্য একটি মডুলার এবং এক্সটেনসিবল ফ্রেমওয়ার্ক।
+
+এর প্রাথমিক ব্যবহার হল, Ethereum স্মার্ট কন্ট্র্যাক্ট এবং লেনদেনের সাথে সম্পূর্ণ সামঞ্জস্য প্রদান করে একটি নতুন ব্লকচেইন নেটওয়ার্ক বুটস্ট্র্যাপ করা। এটি IBFT (ইস্তাম্বুল বাইজেন্টাইন ফল্ট Tolerant) Consensus প্রক্রিয়া ব্যবহার করে, যা [PoA (প্রুফ অব অথরিটি)](/docs/edge/consensus/poa) এবং [PoS (প্রুফ অব স্টেক)](/docs/edge/consensus/pos-stake-unstake) হিসাবে দুই প্রকারে সাপোর্টেড।
+
+Polygon Edge অন্য একাধিক ব্লকচেইনের সাথে যোগাযোগ এনাবল করে, [ERC-20](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) এবং [ERC-721](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) টোকেন ট্রান্সফার এনাবেল করে, একটি [সেন্ট্রালাইজড ব্রিজ সলিউশিন](/docs/edge/additional-features/chainbridge/overview) ব্যবহার করে।
+
+ইন্ডাস্ট্রি স্ট্যান্ডার্ড ওয়ালেটগুলো [JSON-RPC](/docs/edge/working-with-node/query-json-rpc) এন্ডপয়েন্টগুলির মাধ্যমে Polygon Edge-এর সাথে যোগাযোগ করতে ব্যবহার করা যেতে পারে এবং নোড অপারেটররা [gRPC](/docs/edge/working-with-node/query-operator-info) প্রোটোকলের মাধ্যমে নোডগুলোতে বিভিন্ন ক্রিয়া সম্পাদন করতে পারে।
+
+Polygon সম্পর্কে আরো জানতে [অফিসিয়াল ওয়েবসাইট](https://polygon.technology) ভিজিট করুন।
+
+**[GitHub রিপোজিটরি](https://github.com/0xPolygon/polygon-edge)**
+
+:::caution
+
+এর উপরে এখনও কাজ চলছে তাই ভবিষ্যতে আর্কিটেকচারাল পরিবর্তন ঘটতে পারে। কোড এখনও অডিট করা হয়নি তাই আপনি এটা প্রোডাকশনে ব্যবহার করতে চাইলে Polygon টিমের সাথে যোগাযোগ করুন।
+
+:::
+
+
+
+একটি `polygon-edge`লোকাল নেটওয়ার্ক চালানো শুরু করতে, অনুগ্রহ করে পড়ুনঃ [ইন্সটলেশন](/docs/edge/get-started/installation) এবং [লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally)।
diff --git a/archive/edge/bn-edge/performance-reports/overview.md b/archive/edge/bn-edge/performance-reports/overview.md
new file mode 100644
index 0000000000..3ac4260a94
--- /dev/null
+++ b/archive/edge/bn-edge/performance-reports/overview.md
@@ -0,0 +1,29 @@
+---
+id: overview
+title: সংক্ষিপ্ত বিবরণ
+description: "Polygon Edge পরীক্ষার ভূমিকা।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - performance
+ - tests
+ - loadbot
+---
+:::caution
+দয়া করে মনে রাখবেন যে আমাদের এই পরীক্ষার জন্য ব্যবহার করা `loadbot`হ, া এখন অবচিত হয়েছে।
+:::
+
+| প্রকার | মান | পরীক্ষার লিঙ্ক |
+| ---- | ----- | ------------ |
+| নিয়মিত স্থানান্তর | 1428 tps | [জুলাই 4th 2022](test-history/test-2022-07-04.md#results-of-eoa-to-eoa-transfers) |
+| ERC-20 স্থানান্তর | 1111 tps | [জুলাই 4th 2022](test-history/test-2022-07-04.md#results-of-erc20-token-transfers) |
+| NFT Minting | 714 tps | [জুলাই 4th 2022](test-history/test-2022-07-04.md#results-of-erc721-token-minting) |
+
+---
+
+আমাদের লক্ষ্য একটি উচ্চ performant, বৈশিষ্ট্য সমৃদ্ধ এবং সেটআপ সহজ এবং ব্লকচেইন ক্লায়েন্ট সফ্টওয়্যার বজায় রাখা। সমস্ত পরীক্ষা Polygon Edge Loadbot ব্যবহার করে সম্পন্ন করা হয়। এই বিভাগে আপনি পাবেন প্রতিটি কর্মক্ষমতা রিপোর্ট সঠিকভাবে dated, পরিবেশ পরিষ্কারভাবে বর্ণনা এবং টেস্টিং পদ্ধতি পরিষ্কারভাবে ব্যাখ্যা।
+
+এই কর্মক্ষমতা পরীক্ষা লক্ষ্য Polygon Edge ব্লকচেইন নেটওয়ার্ক একটি বাস্তব বিশ্ব কর্মক্ষমতা প্রদর্শন করা। যে কেউ এখানে পোস্ট হিসাবে একই ফলাফল পেতে সক্ষম হতে হবে, একই পরিবেশ, আমাদের loadbot ব্যবহার করে।
+
+EC2 উদাহরণ নোড গঠিত একটি চেইন AWS প্ল্যাটফর্ম সমস্ত কর্মক্ষমতা পরীক্ষা পরিচালিত হয়।
\ No newline at end of file
diff --git a/archive/edge/bn-edge/performance-reports/test-history/test-2022-01-21.md b/archive/edge/bn-edge/performance-reports/test-history/test-2022-01-21.md
new file mode 100644
index 0000000000..92c67ab5be
--- /dev/null
+++ b/archive/edge/bn-edge/performance-reports/test-history/test-2022-01-21.md
@@ -0,0 +1,130 @@
+---
+id: test-2022-01-21
+title: 21 জানুয়ারী 2022
+description: "জানুয়ারী 21 থেকে পারফরমেন্স টেস্ট"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - performance
+ - test
+ - txpool
+---
+
+## 21 জানুয়ারী 2022 {#january-21st-2022}
+
+### সারাংশ {#summary}
+
+:::caution
+দয়া করে মনে রাখবেন যে আমাদের এই পরীক্ষার জন্য ব্যবহার করা `loadbot`হ, া এখন অবচিত হয়েছে।
+:::
+
+এই পরীক্ষাটি TxPool রিফ্যাক্টরের পরে করা হয়েছিল যা উল্লেখযোগ্যভাবে পার্ফরমেন্স উন্নত করেছে ([v0.2.0](https://github.com/0xPolygon/polygon-edge/releases/v0.2.0) তে মুক্তি পায়)।
+
+যেহেতু সকল লেনদেন একটি একক নোড JSON-RPC-তে পাঠানো হয়েছিল, তাই লক্ষ্য ছিল 30 জন সক্রিয় অংশগ্রহণকারী ভ্যালিডেটরের, যাতে Consensus এবং TxPool কে ভালোভাবে স্ট্রেস টেস্ট করা যায়।
+
+আমাদের লক্ষ্য ছিল সর্বাধিক সম্ভাব্য TPS এ না পৌঁছানোর, কারণ নেটওয়ার্ক সাইজ পারফরম্যান্সের উপর নেতিবাচক প্রভাব ফেলে, ও যেহেতু ব্লক গ্যাস লিমিট এবং ব্লক টাইম সেন ভ্যালুগুলোতে সেট করা হয়েছে যা বেশি সিস্টেম রিসোর্স ব্যবহার করে না, এবং যা কমোডিটি হার্ডওয়্যারে চালানোর যাবে।
+
+### ফলাফল {#results}
+
+| মেট্রিক | মান |
+| ------ | ----- |
+| প্রতি সেকেন্ডে লেনদেন | 344 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 10000 |
+| মোট রান টাইম | 30s |
+
+### এনভায়রনমেন্ট {#environment}
+
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইন্সট্যান্স সাইজ |
+ t2.xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ লিনাক্স উবুন্টু 20.04 LTS - Focal Fossa |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 8377162281d1a2e4342ae27cd4e5367c4364aee2 কমিট করুন |
+
+
+ | ভ্যালিডেটর নোড |
+ 30 |
+
+
+ | নন-ভ্যালিডেটর নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 2000ms |
+
+
+ | ব্লক গ্যাস সীমা |
+ 5242880 |
+
+
+
+
+
+
+
+
+ Loadbot কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 10000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 400 |
+
+
+ | লেনদেনের প্রকার |
+ EOA থেকে EOA ট্রান্সফার |
+
+
+
+
+
+
diff --git a/archive/edge/bn-edge/performance-reports/test-history/test-2022-03-02.md b/archive/edge/bn-edge/performance-reports/test-history/test-2022-03-02.md
new file mode 100644
index 0000000000..57356a31dc
--- /dev/null
+++ b/archive/edge/bn-edge/performance-reports/test-history/test-2022-03-02.md
@@ -0,0 +1,389 @@
+---
+id: test-2022-03-02
+title: 2 মার্চ 2022
+description: "2 মার্চের পারফরমেন্স টেস্ট।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - performance
+ - test
+ - load
+---
+
+### সারাংশ {#summary}
+
+:::caution
+দয়া করে মনে রাখবেন যে আমাদের এই পরীক্ষার জন্য ব্যবহার করা `loadbot`হ, া এখন অবচিত হয়েছে।
+:::
+
+SC ERC20 টোকেন ট্রান্সফার এবং হেভি লোডের সাথে SC ERC721 টোকেন মিন্টিং এর কার্যকারিতা ও লেনদেনের গতি পরিমাপ করতে এই পরীক্ষাটি করা হয়েছিল।
+
+হেভি লোডের সময় সবকিছু আশানুরূপ কাজ করছে কিনা তা পরীক্ষা করাটাই ছিল এর উদ্দেশ্য। লোডবট আউটপুটে গ্যাসের মেট্রিক্স চালু করার কারণও এটিই ছিল, যা আমাদেরকে দেখাচ্ছে যে ব্লকগুলোতে সঠিকভাবে লেনদেন চলছে কিনা।
+
+সমস্ত লেনদেন GRPC API এর মাধ্যমে একক নোডে পাঠানো হয়েছিল, এবং JSON-RPC API এর মাধ্যমে রিসিপ্ট গ্রহণ করা হয়েছিল। সকল লেনদেন সম্পন্ন হওয়ার পরে, প্রতিটি ব্লক থেকে গ্যাস তথ্য পড়তে eth_getBlockByNumber JSON-RPC পদ্ধতি ব্যবহার করা হয়েছিল।
+
+আমাদের লক্ষ্য সর্বাধিক সম্ভাব্য TPS এ পৌঁছানোর ছিল না, যেহেতু ব্লক গ্যাস লিমিট এবং ব্লক টাইম সেন ভ্যালুগুলোতে সেট করা হয়েছে যা বেশি সিস্টেম রিসোর্স ব্যবহার করে না, এবং যা কমোডিটি হার্ডওয়্যারে চালানোর যাবে।
+
+### ERC20 ফলাফল {#results-erc20}
+
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | ERC20 |
+| প্রতি সেকেন্ডে লেনদেন | 65 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 5000 |
+| ERC20 লেনদেনের রান টাইম | 76.681690s |
+| SC ডিপ্লয় টাইম | 4.048250s |
+
+### ERC721 ফলাফল {#results-erc721}
+
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | ERC721 |
+| প্রতি সেকেন্ডে লেনদেন | 20 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 2000 |
+| ERC721 লেনদেনের রান টাইম | 97.239920s |
+| SC ডিপ্লয় টাইম | 3.048970s |
+
+### এনভায়রনমেন্ট ERC20 {#environment-erc20}
+
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইন্সট্যান্স সাইজ |
+ t2.micro |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ লিনাক্স উবুন্টু 20.04 LTS - Focal Fossa |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 8a033aa1afb191abdac04636d318f83f32511f3c কমিট করা |
+
+
+ | ভ্যালিডেটর নোড |
+ 6 |
+
+
+ | নন-ভ্যালিডেটর নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 2s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 5242880 |
+
+
+ | গড়ে ব্লকের ব্যবহার |
+ 95% |
+
+
+
+
+
+
+
+
+ Loadbot কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 5000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 200 |
+
+
+ | লেনদেনের প্রকার |
+ ERC20 থেকে ERC20 ট্রান্সফার |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 5000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 65
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 25.034950s
+ Fastest transaction turn around = 3.056460s
+ Slowest transaction turn around = 47.366220s
+ Total loadbot execution time = 76.681690s
+
+ [CONTRACT DEPLOYMENT DATA]
+ Contract address = 0x7224Dad537291bb6bA277d3e1cCD48cf87B208E7
+ Total execution time = 4.048250s
+ Blocks required = 1
+
+ Block #557781 = 1 txns (1055769 gasUsed / 5242880 gasLimit) utilization = 20%
+
+ Average utilization across all blocks: 20%
+
+ [BLOCK DATA]
+ Blocks required = 29
+
+ Block #557783 = 178 txns (5212100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557785 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557786 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557787 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557788 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557789 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557791 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557792 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557793 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557794 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557795 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557797 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557798 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557799 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557800 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557801 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557803 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557804 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557805 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557806 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557807 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557809 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557810 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557811 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557812 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557813 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557815 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557816 = 178 txns (5197100 gasUsed / 5242880 gasLimit) utilization = 99%
+ Block #557817 = 16 txns (474800 gasUsed / 5242880 gasLimit) utilization = 9%
+
+ Average utilization across all blocks: 95%
+
+
+
+### এনভায়রনমেন্ট ERC721 {#environment-erc721}
+
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইন্সট্যান্স সাইজ |
+ t2.micro |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ লিনাক্স উবুন্টু 20.04 LTS - Focal Fossa |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 8a033aa1afb191abdac04636d318f83f32511f3c কমিট করা |
+
+
+ | ভ্যালিডেটর নোড |
+ 6 |
+
+
+ | নন-ভ্যালিডেটর নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 2s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 5242880 |
+
+
+ | গড়ে ব্লকের ব্যবহার |
+ 94% |
+
+
+
+
+
+
+
+
+ Loadbot কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 2000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 200 |
+
+
+ | লেনদেনের প্রকার |
+ ERC721 টোকেন মিন্ট |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 2000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 20
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 43.034620s
+ Fastest transaction turn around = 4.007210s
+ Slowest transaction turn around = 84.184340s
+ Total loadbot execution time = 97.239920s
+
+ [CONTRACT DEPLOYMENT DATA]
+ Contract address = 0x79D9167FcCC5087D28B2D0cDA27ffAA23A731F51
+ Total execution time = 3.048970s
+ Blocks required = 1
+
+ Block #558955 = 1 txns (2528760 gasUsed / 5242880 gasLimit) utilization = 48%
+
+ Average utilization across all blocks: 48%
+
+ [BLOCK DATA]
+ Blocks required = 46
+
+ Block #558957 = 44 txns (5104824 gasUsed / 5242880 gasLimit) utilization = 97%
+ Block #558958 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558959 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558960 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558961 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558962 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558963 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558964 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558965 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558966 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558967 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558968 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558969 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558970 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558971 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558972 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558973 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558974 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558975 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558976 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558977 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558978 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558979 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558980 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558981 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558982 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558983 = 13 txns (1505298 gasUsed / 5242880 gasLimit) utilization = 28%
+ Block #558984 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558985 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558986 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558987 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558988 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558989 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558990 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558991 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558992 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558993 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558994 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558995 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558996 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558997 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558998 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #558999 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #559000 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #559001 = 45 txns (5189970 gasUsed / 5242880 gasLimit) utilization = 98%
+ Block #559002 = 8 txns (929568 gasUsed / 5242880 gasLimit) utilization = 17%
+
+ Average utilization across all blocks: 94%
+
+
+
+
diff --git a/archive/edge/bn-edge/performance-reports/test-history/test-2022-03-23.md b/archive/edge/bn-edge/performance-reports/test-history/test-2022-03-23.md
new file mode 100644
index 0000000000..52bcc8a776
--- /dev/null
+++ b/archive/edge/bn-edge/performance-reports/test-history/test-2022-03-23.md
@@ -0,0 +1,956 @@
+---
+id: test-2022-03-23
+title: 23শে মার্চ 2022
+description: "23শে মার্চের পারফরম্যান্স টেস্ট।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - performance
+ - test
+ - EOA
+ - nodes
+---
+
+### সারাংশ {#summary}
+
+:::caution
+দয়া করে মনে রাখবেন যে আমাদের এই পরীক্ষার জন্য ব্যবহার করা `loadbot`হ, া এখন অবচিত হয়েছে।
+:::
+
+SC ERC20 টোকেন ট্রান্সফার, SC ERC721 টোকেন মিন্টিং এবং উচ্চ-চাপে EOA থেকে EOA লেনদেনের কার্যকারিতা এবং উচ্চ হার্ডওয়্যার রিসোর্স থাকা নোডগুলির লেনদেনের গতি পরিমাপের জন্য এই পরীক্ষাটি করা হয়েছিল।
+
+উচ্চ-চাপে সবকিছু আশানুরূপ কাজ করছে কিনা তা পরীক্ষা করাই এর উদ্দেশ্য ছিল। লোডবট আউটপুটে গ্যাসের মেট্রিক্স চালু করার এটিও একটি কারণ ছিল, যা আমাদেরকে দেখাচ্ছে যে ব্লকগুলোতে সঠিকভাবে লেনদেন চলছে কিনা।
+
+সমস্ত লেনদেন GRPC API-এর মাধ্যমে একক নোডে পাঠানো হয়েছিল এবং JSON-RPC API দ্বারা রশিদ গ্রহণ করা হয়েছিল। সকল লেনদেন সম্পন্ন হওয়ার পরে eth_getBlockByNumber JSON-RPC পদ্ধতি ব্যবহার করে প্রতিটি ব্লক থেকে গ্যাসের তথ্য রিড করা হয়েছিল।
+
+বিদ্যমান হার্ডওয়্যারের রিসোর্সে সর্বাধিক সম্ভাব্য টিপিএস-এ পৌঁছানোই ছিল আমাদের লক্ষ্য। এটি অর্জন করার জন্য, আমরা ব্লক গ্যাস সীমা এবং ব্লক টাইম প্যারামিটারকে পরিবর্তন করেছি, যাতে আমরা আমাদের সেরা সম্ভাব্য টিপিএস ফলাফল পেতে পারি এবং সিস্টেমের ইন্টেগ্রিটি ও স্টেবিলিটি বজায় রাখতে পারি।
+
+:::info ব্লক গ্যাস সীমা
+
+লেনদেন কার্যকর করার জন্য অনেক গ্যাস ব্যবহার করা হলে ব্লক গ্যাস সীমাও তার সাথে তাল মিলিয়ে বৃদ্ধি করা যাবে।
+নিম্নের লিখা উদাহরণটিতে, ব্লক গ্যাস লিমিট 80 000 000 (20 মিলিয়নের পরিবর্তে) সেট করলে ERC721 টোকেন মিন্টিং খুব দ্রুত কাজ করে, কিন্তু ERC20 টোকেন ট্রান্সফারে ব্লক গ্যাস লিমিট 80 মিলিয়ন হওয়ায় সার্ভার ক্র্যাশ করে।
+:::
+
+:::info প্রোডাকশনের এনভায়রনমেন্ট
+
+একটি প্রোডাকশন এনভায়রনমেন্ট কনফিগার করার সময়, আপনি চেইনের উচ্চ কার্যকারিতা অর্জন করার চেষ্টা করলে আপনাকে সাবধান হতে হবে।
+ব্লক গ্যাস লিমিট প্যারামিটার একটি উচ্চ মানে সেট করা থাকলে, ব্লক টাইম 1s এ সেট করা থাকে, এবং একটি একক নোডের উপর বেশি লেনদেনের চাপ থাকে, সেই নোডটি অনেক বেশি (অথবা পুরো) RAM ব্যবহার করবে এবং তা সার্ভার ক্র্যাশের কারণ হতে পারে। সবকিছু ভালোভাবে পরীক্ষা করতে লোডবট ব্যবহার করুন, সিস্টেম রিসোর্স ইউটিলাইজেশন পর্যবেক্ষণ করুন এবং সেই অনুযায়ী আপনার কনফিগারেশন প্যারামিটার সেট করুন।
+:::
+
+:::info মেমোরি অপর্যাপ্ত ত্রুটি
+
+সিস্টেম স্থিতিশীলতা বজায় রাখতে কিছু Linux ডিস্ট্রো খুব বেশি RAM ব্যবহার করা (OOM ত্রুটি) প্রক্রিয়াকে বন্ধ করে দিবে।
+এই OOM ত্রুটির লগ আউটপুট দেখতে নিচের মত হবে।
+```
+Mar 23 00:19:06 ip-10-151-2-196 kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=polygon-edge,pid=4560,uid=1000Mar 23 00:19:06 ip-10-151-2-196 kernel: Out of memory: Killed process 4560 (polygon-edge) total-vm:16687652kB, anon-rss:14964372kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:29668kB oom_score_adj:0Mar 23 00:19:06 ip-10-151-2-196 kernel: oom_reaper: reaped process 4560 (polygon-edge), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
+```
+:::
+
+### EOA থেকে EOA-তে ট্রান্সফারের ফলাফল {#results-of-eoa-to-eoa-transfers}
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | EOA থেকে EOA |
+| প্রতি সেকেন্ডের লেনদেন | 689 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 20000 |
+| মোট ব্যবহৃত ব্লক | 25 |
+| মোট রান টাইম | 29.921110s |
+
+### ERC20 টোকেন ট্রান্সফারের ফলাফল {#results-of-erc20-token-transfers}
+
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | ERC20 |
+| প্রতি সেকেন্ডের লেনদেন | 500 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 20000 |
+| মোট ব্যবহৃত ব্লক | 33 |
+| ERC20 লেনদেনের রান টাইম | 40.402900s |
+| SC ডিপ্লয় টাইম | 2.004140s |
+
+### ERC721 টোকেন মিন্টিং-এর ফলাফল {#results-of-erc721-token-minting}
+
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | ERC721 |
+| প্রতি সেকেন্ডের লেনদেন | 157 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 20000 |
+| মোট ব্যবহৃত ব্লক | 124 |
+| ERC721 লেনদেনের রান টাইম | 127.537340s |
+| SC ডিপ্লয় টাইম | 2.004420s |
+
+
+### খুব উচ্চ ব্লক গ্যাস সীমা (80 মিলি.) দিয়ে ERC721 টোকেন মিন্টিং এর ফলাফল {#results-of-erc721-token-minting-with-a-very-high-block-gas-limit-80-mil}
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | ERC721 |
+| প্রতি সেকেন্ডের লেনদেন | 487 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 20000 |
+| মোট ব্যবহৃত ব্লক | 34 |
+| ERC721 লেনদেনের রান টাইম | 41.098410s |
+| SC ডিপ্লয় টাইম | 2.004300s |
+
+
+### EOA থেকে EOA এর এনভায়রনমেন্ট {#environment-eoa-to-eoa}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c5.2xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ Amazon Linux 2 AMI (HVM) - Kernel 5.10 |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 06e11eac8da98c79c938fc53ddda2da3318cfbe04 কমিট করুন |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 20000000 |
+
+
+ | সর্বোচ্চ স্লট |
+ 1000000 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ 84.00% |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 20000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 689 |
+
+
+ | লেনদেনের প্রকার |
+ EOA থেকে EOA ট্রান্সফার |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 20000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 689
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 5.685740s
+ Fastest transaction turn around = 2.004480s
+ Slowest transaction turn around = 9.013790s
+ Total loadbot execution time = 29.921110s
+
+ [BLOCK DATA]
+ Blocks required = 25
+
+ Block #435 = 865 txns (18165000 gasUsed / 20000000 gasLimit) utilization = 90.83%
+ Block #436 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #437 = 360 txns (7560000 gasUsed / 20000000 gasLimit) utilization = 37.80%
+ Block #438 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #439 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #440 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #442 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #443 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #444 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #445 = 157 txns (3297000 gasUsed / 20000000 gasLimit) utilization = 16.48%
+ Block #446 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #447 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #448 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #450 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #451 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #452 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #453 = 363 txns (7623000 gasUsed / 20000000 gasLimit) utilization = 38.12%
+ Block #454 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #455 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #456 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #458 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #459 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #460 = 952 txns (19992000 gasUsed / 20000000 gasLimit) utilization = 99.96%
+ Block #461 = 16 txns (336000 gasUsed / 20000000 gasLimit) utilization = 1.68%
+ Block #462 = 151 txns (3171000 gasUsed / 20000000 gasLimit) utilization = 15.86%
+
+ [AVERAGE BLOCK UTILIZATION]
+ Average utilization acorss all blocks = 84.00%
+
+
+### এনভায়রনমেন্ট ERC20 {#environment-erc20}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c5.2xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ Amazon Linux 2 AMI (HVM) - Kernel 5.10 |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 06e11eac8da98c79c938fc53ddda2da3318cfbe04 কমিট করুন |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 20000000 |
+
+
+ | সর্বোচ্চ স্লট |
+ 1000000 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ 88.38% |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 20000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 500 |
+
+
+ | লেনদেনের প্রকার |
+ ERC20 থেকে ERC20 ট্রান্সফার |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 20000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 500
+
+ [CONTRACT DEPLOYMENT DATA]
+ Contract address = 0xfCCb5bC1E2EdCcE6336f3C3112af488E9f7fFd45
+ Total execution time = 2.004140s
+
+ [CONTRACT BLOCK DATA]
+ Blocks required = 1
+
+ Block #643 = 1 txns (1055769 gasUsed / 20000000 gasLimit) utilization = 5.28%
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 10.011350s
+ Fastest transaction turn around = 2.005370s
+ Slowest transaction turn around = 18.039780s
+ Total loadbot execution time = 40.402900s
+
+ [BLOCK DATA]
+ Blocks required = 33
+
+ Block #645 = 684 txns (19962000 gasUsed / 20000000 gasLimit) utilization = 99.81%
+ Block #646 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #647 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #648 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #650 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #651 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #652 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #653 = 1 txns (37550 gasUsed / 20000000 gasLimit) utilization = 0.19%
+ Block #654 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #655 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #656 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #657 = 200 txns (5838400 gasUsed / 20000000 gasLimit) utilization = 29.19%
+ Block #658 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #659 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #660 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #661 = 200 txns (5838400 gasUsed / 20000000 gasLimit) utilization = 29.19%
+ Block #662 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #663 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #664 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #666 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #667 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #668 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #669 = 414 txns (12076500 gasUsed / 20000000 gasLimit) utilization = 60.38%
+ Block #670 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #671 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #672 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #673 = 46 txns (1349300 gasUsed / 20000000 gasLimit) utilization = 6.75%
+ Block #674 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #675 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #676 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #678 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #679 = 685 txns (19976150 gasUsed / 20000000 gasLimit) utilization = 99.88%
+ Block #680 = 645 txns (18810150 gasUsed / 20000000 gasLimit) utilization = 94.05%
+
+ [AVERAGE BLOCK UTILIZATION]
+ Average utilization acorss all blocks = 88.38%
+
+
+
+### এনভায়রনমেন্ট ERC721 {#environment-erc721}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c5.2xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ Amazon Linux 2 AMI (HVM) - Kernel 5.10 |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 06e11eac8da98c79c938fc53ddda2da3318cfbe04 কমিট করুন |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 20000000 |
+
+
+ | সর্বোচ্চ স্লট |
+ 1000000 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ 92.90% |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 20000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 157 |
+
+
+ | লেনদেনের প্রকার |
+ ERC721 টোকেন মিন্ট |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 20000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 157
+
+ [CONTRACT DEPLOYMENT DATA]
+ Contract address = 0x04D4F76817D951fc15E08392cBB056B50fea64aa
+ Total execution time = 2.004420s
+
+ [CONTRACT BLOCK DATA]
+ Blocks required = 1
+
+ Block #1173 = 1 txns (2528760 gasUsed / 20000000 gasLimit) utilization = 12.64%
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 53.282990s
+ Fastest transaction turn around = 2.003130s
+ Slowest transaction turn around = 105.151960s
+ Total loadbot execution time = 127.537340s
+
+ [BLOCK DATA]
+ Blocks required = 124
+
+ Block #1175 = 173 txns (19958658 gasUsed / 20000000 gasLimit) utilization = 99.79%
+ Block #1176 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1177 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1178 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1179 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1180 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1181 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1182 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1183 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1184 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1185 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1186 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1187 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1188 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1189 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1190 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1191 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1192 = 47 txns (5420262 gasUsed / 20000000 gasLimit) utilization = 27.10%
+ Block #1193 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1194 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1195 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1196 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1197 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1198 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1199 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1200 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1201 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1202 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1203 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1204 = 45 txns (5189970 gasUsed / 20000000 gasLimit) utilization = 25.95%
+ Block #1205 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1206 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1207 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1208 = 59 txns (6802014 gasUsed / 20000000 gasLimit) utilization = 34.01%
+ Block #1209 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1210 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1211 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1212 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1213 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1214 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1215 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1216 = 42 txns (4844532 gasUsed / 20000000 gasLimit) utilization = 24.22%
+ Block #1217 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1218 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1219 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1220 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1221 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1222 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1223 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1224 = 26 txns (3002196 gasUsed / 20000000 gasLimit) utilization = 15.01%
+ Block #1225 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1226 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1227 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1228 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1229 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1230 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1231 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1232 = 76 txns (8759496 gasUsed / 20000000 gasLimit) utilization = 43.80%
+ Block #1233 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1234 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1235 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1236 = 90 txns (10371540 gasUsed / 20000000 gasLimit) utilization = 51.86%
+ Block #1237 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1238 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1239 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1240 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1241 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1242 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1243 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1244 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1245 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1246 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1247 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1248 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1249 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1250 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1251 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1252 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1253 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1254 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1255 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1256 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1257 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1258 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1259 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1260 = 99 txns (11407854 gasUsed / 20000000 gasLimit) utilization = 57.04%
+ Block #1261 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1262 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1263 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1264 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1265 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1266 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1267 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1268 = 18 txns (2081028 gasUsed / 20000000 gasLimit) utilization = 10.41%
+ Block #1269 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1270 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1271 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1272 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1273 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1274 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1275 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1276 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1277 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1278 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1279 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1280 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1281 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1282 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1283 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1284 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1285 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1286 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1287 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1288 = 78 txns (8989788 gasUsed / 20000000 gasLimit) utilization = 44.95%
+ Block #1289 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1290 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1291 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1292 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1293 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1294 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1295 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1296 = 30 txns (3462780 gasUsed / 20000000 gasLimit) utilization = 17.31%
+ Block #1297 = 173 txns (19928658 gasUsed / 20000000 gasLimit) utilization = 99.64%
+ Block #1298 = 14 txns (1620444 gasUsed / 20000000 gasLimit) utilization = 8.10%
+
+ [AVERAGE BLOCK UTILIZATION]
+ Average utilization acorss all blocks = 92.90%
+
+
+
+### এনভায়রনমেন্ট ERC20 - খুব উচ্চ ব্লক গ্যাস সীমা {#environment-erc20-very-high-block-gas-limit}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c5.2xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ Amazon Linux 2 AMI (HVM) - Kernel 5.10 |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 06e11eac8da98c79c938fc53ddda2da3318cfbe04 কমিট করুন |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 80000000 |
+
+
+ | সর্বোচ্চ স্লট |
+ 1000000 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ --- |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 20000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ --- |
+
+
+ | লেনদেনের প্রকার |
+ ERC20 থেকে ERC20-তে ট্রান্সফার |
+
+
+
+
+
+
+
+
+ OOM ত্রুটির লগ
+
+ Mar 23 00:19:06 ip-10-151-2-196 kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=polygon-edge,pid=4560,uid=1000
+ Mar 23 00:19:06 ip-10-151-2-196 kernel: Out of memory: Killed process 4560 (polygon-edge) total-vm:16687652kB, anon-rss:14964372kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:29668kB oom_score_adj:0
+ Mar 23 00:19:06 ip-10-151-2-196 kernel: oom_reaper: reaped process 4560 (polygon-edge), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
+
+
+
+### এনভায়রনমেন্ট ERC721 - খুব উচ্চ ব্লক গ্যাস সীমা {#environment-erc721-very-high-block-gas-limit}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c5.2xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ Amazon Linux 2 AMI (HVM) - Kernel 5.10 |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ ডেভেলপ ব্রাঞ্চে 06e11eac8da98c79c938fc53ddda2da3318cfbe04 কমিট করুন |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 80000000 |
+
+
+ | সর্বোচ্চ স্লট |
+ 1000000 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ 84.68% |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 20000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 487 |
+
+
+ | লেনদেনের প্রকার |
+ ERC721 টোকেন মিন্ট |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 20000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 487
+
+ [CONTRACT DEPLOYMENT DATA]
+ Contract address = 0x4Ceff7F2f9fC9f150a42AfcabceEDABeB723E56f
+ Total execution time = 2.004300s
+
+ [CONTRACT BLOCK DATA]
+ Blocks required = 1
+
+ Block #17 = 1 txns (2528760 gasUsed / 80000000 gasLimit) utilization = 3.16%
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 9.621830s
+ Fastest transaction turn around = 2.006890s
+ Slowest transaction turn around = 18.106630s
+ Total loadbot execution time = 41.098410s
+
+ [BLOCK DATA]
+ Blocks required = 34
+
+ Block #19 = 694 txns (79949724 gasUsed / 80000000 gasLimit) utilization = 99.94%
+ Block #20 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #21 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #22 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #23 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #24 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #25 = 150 txns (17280300 gasUsed / 80000000 gasLimit) utilization = 21.60%
+ Block #26 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #27 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #28 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #29 = 25 txns (2887050 gasUsed / 80000000 gasLimit) utilization = 3.61%
+ Block #30 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #31 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #32 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #34 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #35 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #36 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #38 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #39 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #40 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #41 = 132 txns (15207672 gasUsed / 80000000 gasLimit) utilization = 19.01%
+ Block #42 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #43 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #44 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #45 = 74 txns (8529204 gasUsed / 80000000 gasLimit) utilization = 10.66%
+ Block #46 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #47 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #48 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #50 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #51 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #52 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #53 = 5 txns (584130 gasUsed / 80000000 gasLimit) utilization = 0.73%
+ Block #54 = 694 txns (79919724 gasUsed / 80000000 gasLimit) utilization = 99.90%
+ Block #55 = 182 txns (20964972 gasUsed / 80000000 gasLimit) utilization = 26.21%
+
+ [AVERAGE BLOCK UTILIZATION]
+ Average utilization acorss all blocks = 84.68%
+
+
diff --git a/archive/edge/bn-edge/performance-reports/test-history/test-2022-07-04.md b/archive/edge/bn-edge/performance-reports/test-history/test-2022-07-04.md
new file mode 100644
index 0000000000..ba47e8a021
--- /dev/null
+++ b/archive/edge/bn-edge/performance-reports/test-history/test-2022-07-04.md
@@ -0,0 +1,565 @@
+---
+id: test-2022-07-04
+title: জুলাই 4th 2022
+description: "4 জুলাই থেকে পারফরম্যান্স টেস্ট"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - performance
+ - test
+ - EOA
+ - nodes
+ - ERC20
+ - ERC721
+---
+
+### সারাংশ {#summary}
+
+:::caution
+দয়া করে মনে রাখবেন যে আমাদের এই পরীক্ষার জন্য ব্যবহার করা `loadbot`হ, া এখন অবচিত হয়েছে।
+:::
+
+SC ERC20 টোকেন ট্রান্সফার, SC ERC721 টোকেন মিন্টিং এবং উচ্চ-চাপে EOA থেকে EOA লেনদেনের কার্যকারিতা এবং উচ্চ হার্ডওয়্যার রিসোর্স থাকা নোডগুলির লেনদেনের গতি পরিমাপের জন্য এই পরীক্ষাটি করা হয়েছিল।
+
+উচ্চ-চাপে সবকিছু আশানুরূপ কাজ করছে কিনা তা পরীক্ষা করাই এর উদ্দেশ্য ছিল। লোডবট আউটপুটে গ্যাসের মেট্রিক্স চালু করার এটিও একটি কারণ ছিল, যা আমাদেরকে দেখাচ্ছে যে ব্লকগুলোতে সঠিকভাবে লেনদেন চলছে কিনা।
+
+সমস্ত লেনদেন GRPC API-এর মাধ্যমে একক নোডে পাঠানো হয়েছিল এবং JSON-RPC API দ্বারা রশিদ গ্রহণ করা হয়েছিল। সকল লেনদেন সম্পন্ন হওয়ার পরে eth_getBlockByNumber JSON-RPC পদ্ধতি ব্যবহার করে প্রতিটি ব্লক থেকে গ্যাসের তথ্য রিড করা হয়েছিল।
+
+বিদ্যমান হার্ডওয়্যারের রিসোর্সে সর্বাধিক সম্ভাব্য টিপিএস-এ পৌঁছানোই ছিল আমাদের লক্ষ্য। এটি অর্জন করার জন্য, আমরা ব্লক গ্যাস সীমা এবং ব্লক টাইম প্যারামিটারকে পরিবর্তন করেছি, যাতে আমরা আমাদের সেরা সম্ভাব্য টিপিএস ফলাফল পেতে পারি এবং সিস্টেমের ইন্টেগ্রিটি ও স্টেবিলিটি বজায় রাখতে পারি।
+
+
+:::info প্রোডাকশনের এনভায়রনমেন্ট
+
+একটি প্রোডাকশন এনভায়রনমেন্ট কনফিগার করার সময়, আপনি চেইনের উচ্চ কার্যকারিতা অর্জন করার চেষ্টা করলে আপনাকে সাবধান হতে হবে।
+ব্লক গ্যাস লিমিট প্যারামিটার একটি উচ্চ মানে সেট করা থাকলে, ব্লক টাইম 1s এ সেট করা থাকে, এবং একটি একক নোডের উপর বেশি লেনদেনের চাপ থাকে, সেই নোডটি অনেক বেশি (অথবা পুরো) RAM ব্যবহার করবে এবং তা সার্ভার ক্র্যাশের কারণ হতে পারে। সবকিছু ভালোভাবে পরীক্ষা করতে লোডবট ব্যবহার করুন, সিস্টেম রিসোর্স ইউটিলাইজেশন পর্যবেক্ষণ করুন এবং সেই অনুযায়ী আপনার কনফিগারেশন প্যারামিটার সেট করুন।
+:::
+
+
+
+### EOA থেকে EOA-তে ট্রান্সফারের ফলাফল {#results-of-eoa-to-eoa-transfers}
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | EOA থেকে EOA |
+| প্রতি সেকেন্ডের লেনদেন | 1428 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 30000 |
+| মোট ব্যবহৃত ব্লক | 15 |
+| মোট রান টাইম | 21.374620s |
+
+### ERC20 টোকেন ট্রান্সফারের ফলাফল {#results-of-erc20-token-transfers}
+
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | ERC20 |
+| প্রতি সেকেন্ডের লেনদেন | 1111 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 50000 |
+| মোট ব্যবহৃত ব্লক | 38 |
+| ERC20 লেনদেনের রান টাইম | 45.906450s |
+| SC ডিপ্লয় টাইম | 2.006580s |
+
+### ERC721 টোকেন মিন্টিং-এর ফলাফল {#results-of-erc721-token-minting}
+
+| মেট্রিক | মান |
+| ------ | ----- |
+| লেনদেনের প্রকার | ERC721 |
+| প্রতি সেকেন্ডের লেনদেন | 714 |
+| লেনদেন ব্যর্থ | 0 |
+| লেনদেন সফল হয়েছে | 30000 |
+| মোট ব্যবহৃত ব্লক | 39 |
+| ERC721 লেনদেনের রান টাইম | 42.864140s |
+| SC ডিপ্লয় টাইম | 2.005500s |
+
+
+
+
+### EOA থেকে EOA এর এনভায়রনমেন্ট {#environment-eoa-to-eoa}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS EC2 |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c6a.48xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ লিনাক্স উবুন্টু 20.04 LTS - Focal Fossa |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ রিলিজ v0.4.1 |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 70778880 |
+
+
+ | সর্বোচ্চ স্লট |
+ 276480 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ 59.34% |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 30000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 1428 |
+
+
+ | লেনদেনের প্রকার |
+ EOA থেকে EOA ট্রান্সফার |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 30000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 1428
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 4.394900s
+ Fastest transaction turn around = 1.133980s
+ Slowest transaction turn around = 7.258690s
+ Total loadbot execution time = 21.374620s
+
+ [BLOCK DATA]
+ Blocks required = 15
+
+ Block #110 = 1268 txns (26628000 gasUsed / 70778880 gasLimit) utilization = 37.62%
+ Block #111 = 2744 txns (57624000 gasUsed / 70778880 gasLimit) utilization = 81.41%
+ Block #112 = 2333 txns (48993000 gasUsed / 70778880 gasLimit) utilization = 69.22%
+ Block #113 = 1326 txns (27846000 gasUsed / 70778880 gasLimit) utilization = 39.34%
+ Block #114 = 1852 txns (38892000 gasUsed / 70778880 gasLimit) utilization = 54.95%
+ Block #115 = 2270 txns (47670000 gasUsed / 70778880 gasLimit) utilization = 67.35%
+ Block #116 = 559 txns (11739000 gasUsed / 70778880 gasLimit) utilization = 16.59%
+ Block #117 = 3370 txns (70770000 gasUsed / 70778880 gasLimit) utilization = 99.99%
+ Block #118 = 910 txns (19110000 gasUsed / 70778880 gasLimit) utilization = 27.00%
+ Block #119 = 3132 txns (65772000 gasUsed / 70778880 gasLimit) utilization = 92.93%
+ Block #120 = 1207 txns (25347000 gasUsed / 70778880 gasLimit) utilization = 35.81%
+ Block #121 = 3370 txns (70770000 gasUsed / 70778880 gasLimit) utilization = 99.99%
+ Block #122 = 2734 txns (57414000 gasUsed / 70778880 gasLimit) utilization = 81.12%
+ Block #123 = 2737 txns (57477000 gasUsed / 70778880 gasLimit) utilization = 81.21%
+ Block #124 = 188 txns (3948000 gasUsed / 70778880 gasLimit) utilization = 5.58%
+
+ [AVERAGE BLOCK UTILIZATION]
+ Average utilization across all blocks = 59.34%
+
+
+### এনভায়রনমেন্ট ERC20 {#environment-erc20}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS EC2 |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c6a.48xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ লিনাক্স উবুন্টু 20.04 LTS - Focal Fossa |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ রিলিজ v0.4.1 |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 47185920 |
+
+
+ | সর্বোচ্চ স্লট |
+ 184320 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ 81.29% |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 50000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 1111 |
+
+
+ | লেনদেনের প্রকার |
+ ERC20 থেকে ERC20 ট্রান্সফার |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 50000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 1111
+
+ [CONTRACT DEPLOYMENT INFO]
+ Contract address = 0x33123b7a4420798b1D208ABBac657B7b103edbD9
+ Total execution time = 2.006580s
+
+ [CONTRACT DEPLOYMENT BLOCK DATA]
+ Blocks required = 1
+ Block #174 = 1 txns (1055757 gasUsed / 47185920 gasLimit) utilization = 2.24%
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 8.856780s
+ Fastest transaction turn around = 2.006200s
+ Slowest transaction turn around = 15.977210s
+ Total loadbot execution time = 45.906450s
+
+ [BLOCK DATA]
+ Blocks required = 38
+
+ Block #176 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #177 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #178 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #179 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #180 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #181 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #182 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #183 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #184 = 688 txns (20055200 gasUsed / 47185920 gasLimit) utilization = 42.50%
+ Block #185 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #186 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #187 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #188 = 317 txns (9240550 gasUsed / 47185920 gasLimit) utilization = 19.58%
+ Block #189 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #190 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #191 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #192 = 89 txns (2594350 gasUsed / 47185920 gasLimit) utilization = 5.50%
+ Block #193 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #194 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #195 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #196 = 795 txns (23174250 gasUsed / 47185920 gasLimit) utilization = 49.11%
+ Block #197 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #198 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #199 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #200 = 594 txns (17315100 gasUsed / 47185920 gasLimit) utilization = 36.70%
+ Block #201 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #202 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #203 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #204 = 208 txns (6063200 gasUsed / 47185920 gasLimit) utilization = 12.85%
+ Block #205 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #206 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #207 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #208 = 30 txns (874500 gasUsed / 47185920 gasLimit) utilization = 1.85%
+ Block #209 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #210 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #211 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
+ Block #212 = 177 txns (5159550 gasUsed / 47185920 gasLimit) utilization = 10.93%
+ Block #213 = 180 txns (5247000 gasUsed / 47185920 gasLimit) utilization = 11.12%
+
+ [AVERAGE BLOCK UTILIZATION]
+ Average utilization across all blocks = 81.29%
+
+
+
+### এনভায়রনমেন্ট ERC721 {#environment-erc721}
+
+ হোস্ট কনফিগারেশন
+
+
+
+
+ | ক্লাউড প্রোভাইডার |
+ AWS EC2 |
+
+
+ | ইনস্ট্যান্সের আকার |
+ c6a.48xlarge |
+
+
+ | নেটওয়ার্কিং |
+ প্রাইভেট সাবনেট |
+
+
+ | অপারেটিং সিস্টেম |
+ লিনাক্স উবুন্টু 20.04 LTS - Focal Fossa |
+
+
+ | ফাইল ডেস্ক্রিপ্টর লিমিট |
+ 65535 |
+
+
+ | ব্যবহারকারী সর্বোচ্চ প্রসেস করতে পারেন |
+ 65535 |
+
+
+
+
+
+
+
+
+ ব্লকচেইন কনফিগারেশন
+
+
+
+
+ | Polygon Edge সংস্করণ |
+ রিলিজ v0.4.1 |
+
+
+ | যাচাইকারীর নোড |
+ 4 |
+
+
+ | অ-যাচাইকারী নোড |
+ 0 |
+
+
+ | কনসেনসাস |
+ IBFT PoA |
+
+
+ | ব্লক টাইম |
+ 1s |
+
+
+ | ব্লক গ্যাস সীমা |
+ 94371840 |
+
+
+ | সর্বোচ্চ স্লট |
+ 1000000 |
+
+
+ | ব্লকের গড় ব্যবহার |
+ 93.88% |
+
+
+
+
+
+
+
+
+ লোডবট কনফিগারেশন
+
+
+
+
+ | মোট লেনদেন |
+ 30000 |
+
+
+ | প্রতি সেকেন্ডে পাঠানো লেনদেন |
+ 714 |
+
+
+ | লেনদেনের প্রকার |
+ ERC721 টোকেন মিন্ট |
+
+
+
+
+
+
+
+
+ লোডবট লগ
+
+ [COUNT DATA]
+ Transactions submitted = 30000
+ Transactions failed = 0
+
+ [APPROXIMATE TPS]
+ Approximate number of transactions per second = 714
+
+ [CONTRACT DEPLOYMENT INFO]
+ Contract address = 0x4Ceff7F2f9fC9f150a42AfcabceEDABeB723E56f
+ Total execution time = 2.005500s
+
+ [CONTRACT DEPLOYMENT BLOCK DATA]
+ Blocks required = 1
+ Block #59 = 1 txns (2528772 gasUsed / 94371840 gasLimit) utilization = 2.68%
+
+ [TURN AROUND DATA]
+ Average transaction turn around = 13.191620s
+ Fastest transaction turn around = 2.034710s
+ Slowest transaction turn around = 23.686180s
+ Total loadbot execution time = 42.864140s
+
+ [BLOCK DATA]
+ Blocks required = 39
+
+ Block #61 = 818 txns (94237644 gasUsed / 94371840 gasLimit) utilization = 99.86%
+ Block #62 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #63 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #64 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #65 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #66 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #67 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #68 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #69 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #70 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #71 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #72 = 510 txns (58738980 gasUsed / 94371840 gasLimit) utilization = 62.24%
+ Block #73 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #74 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #75 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #76 = 674 txns (77624892 gasUsed / 94371840 gasLimit) utilization = 82.25%
+ Block #77 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #78 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #79 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #80 = 179 txns (20621682 gasUsed / 94371840 gasLimit) utilization = 21.85%
+ Block #81 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #82 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #83 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #84 = 231 txns (26609898 gasUsed / 94371840 gasLimit) utilization = 28.20%
+ Block #85 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #86 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #87 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #88 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #89 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #90 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #91 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #92 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #93 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #94 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #95 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #96 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #97 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #98 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
+ Block #99 = 561 txns (64612038 gasUsed / 94371840 gasLimit) utilization = 68.47%
+
+ [AVERAGE BLOCK UTILIZATION]
+ Average utilization across all blocks = 93.88%
+
+
+
+
diff --git a/archive/edge/bn-edge/troubleshooting.md b/archive/edge/bn-edge/troubleshooting.md
new file mode 100644
index 0000000000..41db8e09ee
--- /dev/null
+++ b/archive/edge/bn-edge/troubleshooting.md
@@ -0,0 +1,66 @@
+---
+id: troubleshooting
+title: সমস্যার সমাধান
+description: "Polygon Edge-এর জন্য সমস্যা সমাধান বিভাগ"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - troubleshooting
+
+---
+
+# সমস্যার সমাধান {#troubleshooting}
+
+## `method=eth_call err="invalid signature"`ত্রুটি {#error}
+
+আপনি Polygon Edge সঙ্গে একটি লেনদেন করতে একটি মানিব্যাগ ব্যবহার করা হয়, দয়া করে আপনার মানিব্যাগ স্থানীয় নেটওয়ার্ক সেটআপ
+
+1. `chainID`ডান এক। `chainID`Edge জন্য ডিফল্ট , `100`কিন্তু এটি জেনেসিস পতাকা ব্যবহার করে কাস্টমাইজ করা যেতে পারে`--chain-id`।
+
+````bash
+genesis [--chain-id CHAIN_ID]
+````
+2. নিশ্চিত করুন, "RPC URL" এ, ক্ষেত্র আপনি নোড আপনি সংযুক্ত করা হয় JSON RPC পোর্ট
+
+
+## একটি WebSocket URL {#how-to-get-a-websocket-url}
+
+ডিফল্টভাবে, যখন আপনি Polygon Edge রান করেন, তখন এটি চেইন লোকেশন এর উপর ভিত্তি করে একটি WebSocket URL তৈরি করে। URL স্কিম HTTPS লিঙ্কের জন্য এবং HTTP `ws://`এর জন্য ব্যবহার করা `wss://`হয়।
+
+Localhost WebSocket URL:
+````bash
+ws://:/ws
+````
+অনুগ্রহ করে মনে রাখবেন যে পোর্ট নম্বর নোডের জন্য নির্বাচিত JSON-RPC পোর্টের উপর নির্ভর করে।
+
+Edgenet WebSocket URL:
+````bash
+wss://rpc-edgenet.polygon.technology/ws
+````
+
+## `insufficient funds`একটি চুক্তি {#error-when-trying-to-deploy-a-contract}
+
+আপনি এই ত্রুটি পেতে, দয়া করে নিশ্চিত করুন যে আপনি পছন্দসই ঠিকানা যথেষ্ট তহবিল আছে, এবং ঠিকানা ব্যবহৃত সঠিক
এক। premined ভারসাম্য সেট করতে, আপনি জেনেসিস ফাইল তৈরি করার `genesis [--premine ADDRESS:VALUE]`সময় জেনেসিস পতাকা এই পতাকা
+````bash
+genesis --premine 0x3956E90e632AEbBF34DEB49b71c28A83Bc029862:1000000000000000000000
+````
+এই 1000 WEI 0x3956E90e632AEbBF34DEB49b71c28A83Bc029862।
+
+
+## CHainbridge ব্যবহার করার সময় ERC20 টোকেন রিলিজ করা হয় না {#erc20-tokens-not-released-while-using-chainbridge}
+
+আপনি Polygon PoS এবং একটি স্থানীয় Edge নেটওয়ার্ক মধ্যে ERC20 টোকেন স্থানান্তর করার চেষ্টা করেন, এবং আপনার ERC20 টোকেন আমানত করা হয়, এছাড়াও প্রস্তাব relayer মৃত্যুদন্ড করা হয়, কিন্তু আপনার Edge নেটওয়ার্ক টোকেন মুক্তি করা হয় না, দয়া করে নিশ্চিত করুন Polygon Edge চেইন ERC20 হ্যান্ডলার মুক্তি
যথেষ্ট টোকেন গন্তব্য চেইন হ্যান্ডলার চুক্তি lock-release মোড জন্য মুক্তি জন্য যথেষ্ট টোকেন থাকতে হবে। আপনার স্থানীয় Edge নেটওয়ার্ক ERC20 হ্যান্ডলার মধ্যে কোন ERC20 টোকেন না থাকে, তাহলে নতুন টোকেন mint এবং ERC20 হ্যান্ডলার
+
+## `Incorrect fee supplied`Chainbridge ব্যবহার করার সময় {#error-when-using-chainbridge}
+
+মুম্বাই Polygon PoS চেইন এবং একটি স্থানীয় Polygon Edge সেটআপের মধ্যে ERC20 টোকেন স্থানান্তর করার চেষ্টা করার সময় আপনি এই ত্রুটি পেতে পারে। আপনি পতাকা ব্যবহার করে স্থা`--fee`পনা ফি সেট করার সময় এই ত্রুটি প্রদর্শিত হয়, কিন্তু আপনি আমানত লেনদেন আপনি ফি পরিবর্তন করতে নীচের কমান্ড
+````bash
+ $ cb-sol-cli admin set-fee --bridge --fee 0 --url --privateKey
+ ````
+আপনি [এখানে](https://github.com/ChainSafe/chainbridge-deploy/blob/main/cb-sol-cli/docs/deploy.md) এই ফ্ল্যাগ সম্পর্কে আরও তথ্য পাবেন।
+
+
+
+
+
diff --git a/archive/edge/bn-edge/validator-hosting.md b/archive/edge/bn-edge/validator-hosting.md
new file mode 100644
index 0000000000..70043e54b4
--- /dev/null
+++ b/archive/edge/bn-edge/validator-hosting.md
@@ -0,0 +1,226 @@
+---
+id: validator-hosting
+title: ভ্যালিডেটর হোস্টিং
+description: "Polygon Edge জন্য হোস্টিং প্রয়োজনীয়তা"
+keywords:
+- docs
+- polygon
+- edge
+- hosting
+- cloud
+- setup
+- validator
+---
+
+নিচে একটি Polygon Edge নেটওয়ার্কে একটি যাচাইকারী নোড সঠিকভাবে হোস্টিং করার পরামর্শ দেওয়া হয়। দয়া করে নিশ্চিত করতে নীচের তালিকাভুক্ত সবগুলোতে সাবধানে মনোযোগ দিতে যে আপনার যাচাইকারী সেটআপ নিরাপদ, স্থিতিশীল এবং performant হতে সঠিকভাবে কনফিগার করা হয়।
+
+## জ্ঞান বেস {#knowledge-base}
+
+যাচাইকারী নোড চালানোর চেষ্টা করার আগে, দয়া করে এই ডকুমেন্টে পুঙ্খানুপুঙ্খভাবে পড়ু ন। অতিরিক্ত ডক্স যা সহায়ক হতে পারে:
+
+- [ইনস্টলেশন](get-started/installation)
+- [ক্লাউড সেটআপ](get-started/set-up-ibft-on-the-cloud)
+- [CLI কমান্ড](get-started/cli-commands)
+- [সার্ভার কনফিগ ফাইল](configuration/sample-config)
+- [প্রাইভেট কী](configuration/manage-private-keys)
+- [Prometheus মেট্রিক্স](configuration/prometheus-metrics)
+- [গোপন ম্যানেজার](/docs/category/secret-managers)
+- [ব্যাকআপ / রিস্টোর](working-with-node/backup-restore)
+
+## ন্যূনতম সিস্টেমের প্রয়োজনীয়তা {#minimum-system-requirements}
+
+| প্রকার | মান | দ্বারা প্রভাবিত |
+|------|------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
+| CPU | 2 কোর | - JSON-RPC প্রশ্নের সংখ্যা
- ব্লকচেইন স্টেট আকার
- ব্লক গ্যাস সীমা
- সময় ব্লক করুন
|
+| RAM | 2 জিবি | - JSON-RPC প্রশ্নের সংখ্যা
- ব্লকচেইন স্টেট আকার
- ব্লক গ্যাস সীমা
|
+| ডিস্ক | - 10 গিগাবাইট রুট প্যাটিশন
- ডিস্ক এক্সটেনশন জন্য LVM সঙ্গে 30 গিগাবাইট রুট পার্টিশন
| |
+
+
+## সার্ভিস কনফিগারেশন {#service-configuration}
+
+`polygon-edge`বাইনারি প্রতিষ্ঠিত নেটওয়ার্ক সংযোগে স্বয়ংক্রিয়ভাবে একটি সিস্টেম সার্ভিস হিসাবে চালানোর প্রয়োজন এবং শুরু / স্টপ / রিস্টার্ট কার্যকারিতা। আমরা একটি সার্ভিস ম্যানেজার ব্যবহার করে সুপারিশ`systemd.`
+
+`systemd`উদাহরণ সিস্টেম কনফিগারেশন ফাইল:
+```
+[Unit]
+Description=Polygon Edge Server
+After=network.target
+StartLimitIntervalSec=0
+
+[Service]
+Type=simple
+Restart=always
+RestartSec=10
+User=ubuntu
+ExecStart=/usr/local/bin/polygon-edge server --config /home/ubuntu/polygon/config.yaml
+
+[Install]
+WantedBy=multi-user.target
+```
+
+### বাইনারি {#binary}
+
+উত্পাদন ইন বা`polygon-edge`ইনারি শুধুমাত্র pre-built GitHub রিলিজ বাইনারি থেকে নিয়োজিত করা উচিত - ম্যানুয়ালি কম্পাইলিং দ্বারা:::info
+নিজে থেকে `develop`GitHub শাখা কম্পাইলিং করে, আপনি আপনার পরিবেশে ব্রেকিং পরিবর্তন পরিচয় করিয়ে দিতে পারেন। সেই কারণেই এটি বহুভুজ এজ বাইনারি বিশেষভাবে রিলিজ থেকে ডিপ্লয় করার সুপারিশ করা হয় ভেঙ্গে পরিবর্তন সম্পর্কে তথ্য এবং কীভাবে তাদের কাটিয়ে উঠতে।
+:::
+
+দয়া করে ইনস্টলেশন পদ্ধতি একটি সম্পূর্ণ ওভারভিউ [জন্য ইনস্টলেশন পড়ুন](/docs/edge/get-started/installation)।
+
+### ডেটা স্টোরেজ {#data-storage}
+
+পুরো ব্লকচেইন স্টেট ধা`data/`রণকারী ফোল্ডার একটি ডেডিকেটেড ডিস্ক / ভলিউম জন্য অনুমতি দেওয়া স্বয়ংক্রিয় ডিস্ক ব্যাকআপ, ভলিউম এক্সটেনশন এবং অপশনাল ব্যর্থতার ক্ষেত্রে ডিস্ক / ভলিউম মাউন্ট করা।
+
+
+### লগ ফাইল {#log-files}
+
+লগ ফাইল একটি দৈনিক ভিত্তিতে ঘোরা করা প্রয়োজন (একটি টুল মত )`logrotate`।:::warning
+লগ ঘূর্ণমান ছাড়াই কনফিগার করা হলে, লগ ফাইল সমস্ত উপলব্ধ ডিস্ক স্পেস ব্যবহার করতে পারে যা যাচাইকারী আপটাইমে বাধা দিতে পারে।
+:::
+
+উদাহরণ `logrotate`কনফিগারেশন:
+```
+/home/ubuntu/polygon/logs/node.log
+{
+ rotate 7
+ daily
+ missingok
+ notifempty
+ compress
+ prerotate
+ /usr/bin/systemctl stop polygon-edge.service
+ endscript
+ postrotate
+ /usr/bin/systemctl start polygon-edge.service
+ endscript
+}
+```
+
+
+লগ স্টোরেজ সুপারি[শগ](#logging)ুলির জন্য নীচে লগিং বিভাগে পড়ুন।
+
+### অতিরিক্ত নির্ভরতা {#additional-dependencies}
+
+`polygon-edge`স্ট্যাটিকভাবে কম্পাইল করা হয়, কোনও অতিরিক্ত হোস্ট OS ডিপ্রেসেন্ট প্রয়োজন।
+
+## রক্ষণাবেক্ষণ {#maintenance}
+
+একটি Polygon Edge নেটওয়ার্কের একটি চলমান যাচাইকারী নোড বজায় রাখার জন্য সেরা অনুশীলন
+
+### ব্যাকআপ {#backup}
+
+Polygon Edge নোড জন্য দুটি ধরনের ব্যাকআপ পদ্ধতি
+
+পরামর্শ উভয় ব্যবহার করা হয়, যখনই সম্ভব, Polygon এজ ব্যাকআপ একটি সবসময় উপলব্ধ বিকল্প
+
+* ***ভলিউম*** ব্যা কআপ: Polygon Edge নোডের ভলিউম `data/`বা সম্পূর্ণ VM এর দৈনিক ইনক্রিমেন্ট ব্যাকআপ
+
+
+* ***Polygon এজ ব্যাকআপ*** : দৈনিক CRON কাজ যা Polygon Edge এর নিয়মিত ব্যাকআপ করে এবং একটি অফসাইট লোকেশন `.dat`বা একটি নিরাপদ ক্লাউড অবজেক্ট স্টোরেজ এ সরানো হয়।
+
+Polygon এজ ব্যাকআপ উপরে বর্ণিত ভলিউম ব্যাকআপ সঙ্গে আদর্শভাবে ওভারল্যাপ করা উচিত।
+
+Polygon Edge ব্যাকআপ সঞ্চালন কিভাবে নির্দেশাবলী জন্য ব্যাকআপ [/ রিস্টোর নোড ইনস্ট্যান্স](working-with-node/backup-restore) পড়ুন।
+
+### লগিং {#logging}
+
+Polygon এজ নোড দ্বারা আউটপুট লগ উচিত:
+- ইনডেক্সিং এবং অনুসন্ধানের ক্ষমতা সহ একটি বহিরাগত ডেটা স্টোরে
+- 30 দিনের একটি লগ ধারণ সময়
+
+যদি এটি একটি Polygon এজ যাচাইকারী সেট আপ আপনার প্রথম, আমরা নোড শুরু করতে আপনি যে কোনও সমস্যা মুখোমুখি হতে দ্রুত ডিবাগ করতে সক্ষম হওয়ার `--log-level=DEBUG`বিকল্প
+
+:::info
+নো`--log-level=DEBUG`ডের লগ আউটপুট যতটা সম্ভব ক্রিয়ামূলক হতে হবে। ডিবাগ লগ লগ ফাইল আকার ব্যাপকভাবে বৃদ্ধি করা হবে লগ ঘূর্ণন সমাধান।
+:::
+### OS নিরাপত্তা প্যাচ {#os-security-patches}
+
+অ্যাডমিনিস্ট্রেটরদের নিশ্চিত করতে হবে যে যাচাইকারী ইনস্ট্যান্স OS সর্বদা প্রতি মাসে অন্তত একবার সর্বশেষ প্যাচ সঙ্গে আপডেট করা হয়।
+
+## মেট্রিক্স {#metrics}
+
+### সিস্টেম মেট্রিক্স {#system-metrics}
+
+প্রশাসকদের কিছু ধরণের সিস্টেম মেট্রিক্স মনিটর সেটআপ করতে হবে, (যেমন টেলিগ্রাফ + InfluxDB + Grafana বা একটি 3rd পার্টি SaaS)।
+
+মেট্রিক্স যা পর্যবেক্ষণ করা প্রয়োজন এবং যে এলার্ম বিজ্ঞপ্তি সেটআপ করতে হবে:
+
+| মেট্রিক নাম | এলার্ম থ্রেশহোল্ড |
+|-----------------------|-------------------------------|
+| CPU ব্যবহার (%) | > 5 মিনিটের বেশি 90% |
+| RAM ব্যবহার (%) | > 5 মিনিটের বেশি 90% |
+| রুট ডিস্ক ব্যবহার | > 90% |
+| ডেটা ডিস্ক ব্যবহার | > 90% |
+
+### ভ্যালিডেটর মেট্রিক্স {#validator-metrics}
+
+অ্যাডমিনিস্ট্রেটরদের Polygon Edge এর Prometheus API থেকে মেট্রিক্স সেটআপ সংগ্রহ করতে ব্লকচেইন কর্মক্ষমতা নিরীক্ষণ।
+
+[কোন মেট্রিক্স উন্মুক্ত](configuration/prometheus-metrics) করা হচ্ছে এবং কিভাবে Prometheus মেট্রিক সংগ্রহ সেট আপ করা বুঝতে Prometheus মেট্রিক্স
+
+
+নিম্নলিখিত মেট্রিক্স অতিরিক্ত মনোযোগ দেওয়া প্রয়োজন:
+- ***ব্লক উত্পাদন সময়*** - ব্লক উত্পাদন সময় স্বাভাবিক তুলনায় বেশি হলে, নেটওয়ার্কের সাথে একটি সম্ভাব্য সমস্যা
+- ***ঐক্যমত্য চক্রের*** সংখ্যা - যদি 1 চক্রের বেশি হয়, নেটওয়ার্কে যাচাইকারী সেট সঙ্গে একটি সম্ভাব্য সমস্যা
+- ***পিয়ারের সংখ্যা -*** যদি পিয়ারের সংখ্যা ড্রপ হয়, নেটওয়ার্কে একটি সংযোগ সমস্যা
+
+## নিরাপত্তা {#security}
+
+একটি Polygon এজ নেটওয়ার্কের একটি চলমান যাচাইকারী নোড সুরক্ষিত করার জন্য সেরা অনুশীলন
+
+### API সেবা {#api-services}
+
+- ***JSON-RPC*** - শুধুমাত্র API সেবা যা জনসাধারণের উন্মুক্ত করা প্রয়োজন (লোড balancer বা সরাসরি মাধ্যমে ) এই API সমস্ত ইন্টারফেস বা একটি নির্দিষ্ট আইপি ঠিকানা (উদাহরণ: বা )তে `--json-rpc 0.0.0.0:8545``--json-prc 192.168.1.1:8545`চালানো উচিত।:::info
+এটি প্রকাশ্যে API সম্মুখীন করা হয় হিসাবে এটি নিরাপত্তা এবং হার সীমাবদ্ধতা প্রদান করার সামনে একটি লোড balancer / বিপরীত প্রক্সি
+:::
+
+
+- ***LibP2P*** - এটি পিয়ার যোগাযোগের জন্য নোড দ্বারা ব্যবহৃত নেটওয়ার্কিং API এটি সমস্ত ইন্টারফেস বা একটি নির্দিষ্ট আইপি ঠিকানা উপর চালানো `--libp2p 0.0.0.0:1478`(বা বা )`--libp2p 192.168.1.1:1478`। এই API প্রকাশ্যে উন্মুক্ত করা উচিত নয়, কিন্তু এটি অন্যান্য সব নোড থেকে reachable করা:::info
+যদি লোকালহোস্ট () এ `--libp2p 127.0.0.1:1478`রান করা হয় অন্য নোড সংযোগ করতে সক্ষম হবে
+:::
+
+
+- ***GRPC*** - এই API শুধুমাত্র অপারেটর কমান্ড চলমান এবং অন্য উল্লেখ জন্য ব্যবহার করা যেমন এটি লোকালহোস্ট (`--grpc-address 127.0.0.1:9632`) এ একচেটিয়াভাবে চালানো উচিত।
+
+### Polygon এজ গোপন {#polygon-edge-secrets}
+
+Polygon এজ গোপন (`ibft`এবং `libp2p`কী) একটি স্থানীয় ফাইল সিস্টেমে সংরক্ষণ করা উচিত পরিবর্তে[, একটি সমর্থিত গোপন ম্যানেজার](configuration/secret-managers/set-up-aws-ssm) ব্যবহার করা উচি ত। স্থানীয় ফাইল সিস্টেমে গোপন সংরক্ষণ করা শুধুমাত্র অ উত্পাদন পরিবেশে ব্যবহার করা উচিত।
+
+## আপডেট {#update}
+
+নিম্নলিখিত যাচাইকারী নোড জন্য পছন্দসই আপডেট পদ্ধতি
+
+### আপডেট পদ্ধতি {#update-procedure}
+
+- অফিসিয়াল GitHub রিলিজ থেকে সর্বশেষ Polygon এজ বা[ইনারি](https://github.com/0xPolygon/polygon-edge/releases)
+- Polygon এজ সেবা বন্ধ করুন (উদা`sudo systemctl stop polygon-edge.service`হরণ:
+- ডাউনলোড করা একটি `polygon-edge`(উদা`sudo mv polygon-edge /usr/local/bin/`হরণ:
+- চেক করুন সঠিক `polygon-edge`সংস্করণ চলমান করে জায়গায় হয় `polygon-edge version`- এটি রিলিজ সংস্করণ সাথে মিলা
+- শুরু করার আগে কোনও ব্যাকওয়ার্ড সামঞ্জস্য `polygon-edge`পদক্ষেপ প্রয়োজন কিনা রিলিজ ডকুমেন্টেশন
+- `polygon-edge`শুরু সেবা (উদাহরণ: `sudo systemctl start polygon-edge.service`)
+- অবশেষে, `polygon-edge`লগ আউটপুট চেক করুন এবং নিশ্চিত করুন যে কোনও লগ `[ERROR]`ছাড়াই
+
+:::warning
+যখন একটি বিরতি রিলিজ হয়, এই আপডেট পদ্ধতি সব নোড উপর সঞ্চালিত বর্তমানে চলমান বাইনারি নতুন রিলিজ সঙ্গে সামঞ্জস্যপূর্ণ নয়।
+
+এর মানে বাইনারি `polygon-edge`বদলানো এবং সার্ভিস আবার শুরু না হওয়া পর্যন্ত সংক্ষিপ্ত সময়সীমার জন্য এই চেইনকে অবশ্যই থামাতে হবে। তাই সেই অনুযায়ী পরিকল্পনা করুন।
+
+আপনি **[Ansible](https://www.ansible.com/)** বা কিছু কাস্টম স্ক্রিপ্টের মতো টুল ব্যবহার করে ভালোভাবে আপডেট সম্পন্ন করতে পারেন এবং চেইন ডাউনটাইম কমাতে পারেন।
+:::
+
+## স্টার্টআপ পদ্ধতি {#startup-procedure}
+
+নিম্নলিখিত Polygon এজ যাচাইকারী জন্য প্রারম্ভ পদ্ধতি পছন্দসই প্রবাহ
+
+- নোলেজ বেস [বিভাগে](#knowledge-base) তালিকাভুক্ত ডক্স মাধ্যমে পড়ুন
+- যাচাইকারী নোড সর্বশেষ OS প্যাচ প্রয়োগ করুন
+- অফিসিয়াল GitHub রিলিজ থেকে সর্বশেষ বাইনারি ডাউনলোড করুন `polygon-edge`এবং [স্থানীয়](https://github.com/0xPolygon/polygon-edge/releases) উদাহরণে এটি`PATH`
+- CLI কমান্ড ব্যবহার করে সমর্থিত [গোপন পরিচালকদের](/docs/category/secret-managers) একটি `polygon-edge secrets generate`শুরু করুন
+- [CLI কমান্ড ব্যবহার](/docs/edge/get-started/cli-commands#secrets-init-flags)`polygon-edge secrets init` করে তৈরি এবং গোপন সংরক্ষণ করুন
+- এবং মান `Public key (address)`নোট `NodeID`নিন
+- [CLI কমান্ড ব্যবহার](/docs/edge/get-started/cli-commands#genesis-flags)`polygon-edge genesis` করে ক্লাউড সে[টআপ](get-started/set-up-ibft-on-the-cloud#step-3-generate-the-genesis-file-with-the-4-nodes-as-validators) বর্ণিত হিসাবে `genesis.json`ফাইল
+- [CLI কমান্ড](/docs/edge/configuration/sample-config)`polygon-edge server export` ব্যবহার করে ডিফল্ট কনফিগ ফাইল তৈরি করুন
+- স্থানীয় যাচাইকারী নোড পরিবেশ (ফাইল পাথ, ইত্যাদি) মিটমাট করতে `default-config.yaml`ফাইল সম্পাদনা করুন
+- একটি Polygon এজ সেবা (`systemd`বা অনুরূপ) তৈরি করুন যেখানে `polygon-edge`বাইনারি একটি ফাইল `default-config.yaml`থেকে সার্ভার চালানো হবে
+- পরিষেবা শুরু করে Polygon এজ সার্ভার শুরু করুন (উদা`systemctl start polygon-edge`হরণ:
+- লগ আউটপুট চেক করুন এবং ব্লক তৈরি করা হচ্ছে এবং কোন লগ আছে `[ERROR]`নিশ্চিত `polygon-edge`করুন
+- একটি JSON-RPC পদ্ধতি যেমন কল করে চেইন কার্যকারিতা[`eth_chainId`](/docs/edge/api/json-rpc-eth#eth_chainid)
diff --git a/archive/edge/bn-edge/working-with-node/backup-restore.md b/archive/edge/bn-edge/working-with-node/backup-restore.md
new file mode 100644
index 0000000000..8eac2e2787
--- /dev/null
+++ b/archive/edge/bn-edge/working-with-node/backup-restore.md
@@ -0,0 +1,83 @@
+---
+id: backup-restore
+title: ব্যাকআপ / পুনরুদ্ধার নোড উদাহরণ
+description: "একটি Polygon Edge নোড উদাহরণ ব্যাক আপ এবং পুনরুদ্ধার কিভাবে।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - instance
+ - restore
+ - directory
+ - node
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+এই গাইড একটি Polygon Edge নোড উদাহরণ ব্যাক আপ এবং পুনরুদ্ধার কিভাবে উপর বিস্তারিত যায়। এটি বেস ফোল্ডার এবং তারা যা ধারণ করে, সেইসাথে একটি সফল ব্যাকআপ এবং পুনরুদ্ধার সম্পাদন জন্য ফাইল সমালোচক
+
+## বেস ফোল্ডার {#base-folders}
+
+Polygon Edge তার স্টোরেজ ইঞ্জিন হিসাবে লেভারেজ করে। একটি Polygon Edge নোড শুরু করার সময়, নিম্নলিখিত সাব-ফোল্ডার নির্দিষ্ট কাজ ডিরেক্টরি তৈরি করা হয়:
+* **ব্লকচেইন** - ব্লকচেইন তথ্য
+* চেষ্টা - **Merkle** চেষ্টা সংরক্ষণ (বিশ্ব রাষ্ট্র তথ্য)
+* **keystore** - ক্লায়েন্ট জন্য ব্যক্তিগত কী এটি libp2p ব্যক্তিগত কী এবং sealing/validator ব্যক্তিগত কী
+* **ঐক্যমত**্য - ক্লায়েন্ট কাজ করার সময় প্রয়োজন হতে পারে যে কোন ঐক্যমত্য তথ্য এখন, এটি নোডের *ব্যক্তিগত যাচাইকারী কী*
+
+Polygon Edge উদাহরণ জন্য মসৃণ চালানোর জন্য এই ফোল্ডার সংরক্ষণ করা সমালোচক
+
+## একটি চলমান নোড থেকে ব্যাকআপ তৈরি করুন এবং নতুন নোড জন্য পুনরুদ্ধার {#create-backup-from-a-running-node-and-restore-for-new-node}
+
+এই বিভাগ একটি চলমান নোড ব্লকচেইন আর্কাইভ তথ্য তৈরি করে এবং অন্য উদাহরণ এটি পুনরুদ্ধার করার মাধ্যমে আপনাকে গাইড করে।
+
+### ব্যাকআপ {#backup}
+
+`backup`gRPC দ্বারা একটি চলমান নোড থেকে কমান্ড fetches ব্লক এবং একটি আর্কাইভ ফাইল কমান্ড `--from``--to`এবং না দেওয়া হয়, এই কমান্ড জেনেসিস থেকে সর্বশেষ ব্লক আনতে হবে।
+
+```bash
+$ polygon-edge backup --grpc-address 127.0.0.1:9632 --out backup.dat [--from 0x0] [--to 0x100]
+```
+
+### পুনরুদ্ধার {#restore}
+
+পতাকা সঙ্গে শুরু করার সময় শুরু একটি আর্কাইভ থেকে একটি সার্ভার আমদানি ব্`--restore`লক। দয়া করে নিশ্চিত করুন যে নতুন নোড জন্য একটি কী আমদানি বা কী তৈরি সম্পর্কে আরও জানতে সি[ক্রেট ম্যানেজার অধ্যায়](/docs/edge/configuration/secret-managers/set-up-aws-ssm)
+
+```bash
+$ polygon-edge server --restore archive.dat
+```
+
+## ব্যাক আপ / পুরো তথ্য {#back-up-restore-whole-data}
+
+এই বিভাগ রাষ্ট্র তথ্য এবং কী এবং নতুন উদাহরণ পুনরুদ্ধার সহ ডেটা ব্যাকআপ মাধ্যমে আপনাকে গাইড করে
+
+### ধাপ 1: চলমান ক্লায়েন্ট {#step-1-stop-the-running-client}
+
+যেহেতু Polygon Edge ডেটা স্টোরেজ জন্য **LevelDB** ব্যবহার করে, নোড ব্যাকআপ সময়কাল জন্য বন্ধ করা প্রয়োজন, **LevelDB** তার ডাটাবেস ফাইল সমতুল্য অ্যাক্সেস জন্য অনুমতি দেয় না।
+
+উপরন্তু, Polygon Edge এছাড়াও বন্ধ তথ্য flushing করে।
+
+প্রথম পদক্ষেপ চলমান ক্লায়েন্ট বন্ধ করা জড়িত (একটি সেবা ম্যানেজার বা প্রক্রিয়া একটি SIGINT সংকেত পাঠায় যে কিছু অন্যান্য প্রক্রিয়া মাধ্যমে), তাই এটি 2 ঘটনা ট্রিগার করতে পারে যখন gracefully নিচে শাট:
+* ডিস্ক ডেটা ফ্লাশ
+* LevelDB দ্বারা DB ফাইল লক
+
+### ধাপ 2: ডিরেক্টরি {#step-2-backup-the-directory}
+
+এখন ক্লায়েন্ট চলমান না হয়, তথ্য ডিরেক্টরি অন্য মাঝারি ব্যাক আপ করা যেতে পারে। একটি এক্সটেনশন সঙ্গে ফাইল `.key`ব্যক্তিগত কী তথ্য ধারণ করে এবং তারা একটি তৃতীয় / অজানা পার্টি সঙ্গে ভাগ করা
+
+:::info
+দয়া করে ব্যাকআপ `genesis`এবং ম্যানুয়ালি তৈরি ফাইল পুনরুদ্ধার করুন, তাই পুনরুদ্ধার নোড সম্পূর্ণরূপে অপারেশন
+:::
+
+## পুনরুদ্ধার {#restore-1}
+
+### ধাপ 1: চলমান ক্লায়েন্ট {#step-1-stop-the-running-client-1}
+
+Polygon Edge কোনো উদাহরণ চলমান হয়, এটি ধাপ 2 সফল হতে অর্ডার বন্ধ করা প্রয়োজন।
+
+### ধাপ 2: পছন্দসই ফোল্ডার {#step-2-copy-the-backed-up-data-directory-to-the-desired-folder}
+
+ক্লায়েন্ট চলমান না হলে, পূর্বে ব্যাক আপ ডেটা ডিরেক্টরি পছন্দসই ফোল্ডার কপি করা যেতে পারে। উপরন্তু, পূর্বে কপি `genesis`ফাইল
+
+### ধাপ 3: সঠিক তথ্য ডিরেক্টরি নির্দিষ্ট করার সময় Polygon Edge ক্লায়েন্ট {#step-3-run-the-polygon-edge-client-while-specifying-the-correct-data-directory}
+
+Polygon Edge পুনরুদ্ধার তথ্য ডিরেক্টরি ব্যবহার করার জন্য, আরম্ভ করতে, ব্যবহারকারী পথ নির্দিষ্ট করতে তথ্য ডিরেক্টরি। অনুগ্রহ করে [পতাকা সংক্রান্ত তথ্য CLI কমান্ড](/docs/edge/get-started/cli-commands) `data-dir`অধ্যায়
diff --git a/archive/edge/bn-edge/working-with-node/query-json-rpc.md b/archive/edge/bn-edge/working-with-node/query-json-rpc.md
new file mode 100644
index 0000000000..16be084094
--- /dev/null
+++ b/archive/edge/bn-edge/working-with-node/query-json-rpc.md
@@ -0,0 +1,85 @@
+---
+id: query-json-rpc
+title: প্রশ্ন JSON RPC এন্ডপয়েন্ট
+description: "Query ডেটা এবং একটি premined অ্যাকাউন্ট সঙ্গে চেইন শুরু করুন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - query
+ - premine
+ - node
+---
+
+## সংক্ষিপ্ত বিবরণ {#overview}
+
+Polygon Edge JSON-RPC স্তর ডেভেলপারদের ব্লকচেইনে সহজেই ইন্টারঅ্যাক্ট করার কার্যকারিতা provides ে প্রদান করে, HTTP অনুরোধ মাধ্যমে।
+
+এই উদাহরণ তথ্য প্রশ্নের জন্য **curl** মত সরঞ্জাম ব্যবহার করে কভার করে, পাশাপাশি একটি premined অ্যাকাউন্ট সঙ্গে চেইন শুরু করে, এবং একটি লেনদেন পাঠান।
+
+## ধাপ 1: একটি premined অ্যাকাউন্ট সঙ্গে একটি জেনেসিস ফাইল তৈরি করুন {#step-1-create-a-genesis-file-with-a-premined-account}
+
+একটি জেনেসিস ফাইল তৈরি করতে, নিম্নলিখিত কমান্ড চালান:
+````bash
+polygon-edge genesis --premine 0x1010101010101010101010101010101010101010
+````
+
+**premine** পতাকা সেই ঠিকানা সেট করে যা জেনে**সিস**
ফাইলের একটি প্রারম্ভিক ভারসাম্য সঙ্গে অন্তর্ভুক্ত করা উচিত এই ক্ষেত্রে, ঠিকানা `0x1010101010101010101010101010101010101010`একটি প্রারম্**ভিক ডিফল্ট ভারসাম্য** থাকবে`0xD3C21BCECCEDA1000000` (1 মিলিয়ন নেটিভ মুদ্রা টোকেন)।
+
+যদি আমরা একটি ভারসাম্য নির্দিষ্ট করতে চেয়েছি, আমরা ভারসাম্য এবং ঠিকানা একটি সঙ্গে পৃথক করতে পারে`:`ন, যেমন:
+````bash
+polygon-edge genesis --premine 0x1010101010101010101010101010101010101010:0x123123
+````
+
+ভারসাম্য একটি বা মান `hex``uint256`হতে পারে।
+
+:::warning শুধুমাত্র আপনার জন্য একটি প্রাইভেট কী অ্যাকাউন্ট premine করুন!
+আপনি অ্যাকাউন্ট premine এবং তাদের অ্যাক্সেস করার জন্য একটি প্রাইভেট কী নেই তবে আপনি premined ভারসাম্য ব্যবহারযোগ্য হবে না
+:::
+
+## ধাপ 2: dev মোডে Polygon Edge শুরু করুন {#step-2-start-the-polygon-edge-in-dev-mode}
+
+উন্নয়ন মোডে Polygon Edge শুরু করতে, যা [CLI কমান্ড](/docs/edge/get-started/cli-commands) সেকশনে ব্যাখ্যা করা হয়, নিম্নলিখিত
+````bash
+polygon-edge server --chain genesis.json --dev --log-level debug
+````
+
+## ধাপ 3: অ্যাকাউন্ট ভারসাম্য {#step-3-query-the-account-balance}
+
+এখন যে ক্লায়েন্ট ধাপ **1**-এ তৈরি জেনেসিস ফাইল ব্যবহার করে dev মোডে আপ এবং চলমান হয়, আমরা একটি টুল মত ব্যবহার করতে অ্যাকাউন্ট ভারসাম্য প্রশ্নের জন্য কার্**ল:**
+````bash
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x1010101010101010101010101010101010101010", "latest"],"id":1}' localhost:8545
+````
+
+কমান্ড নিম্নলিখিত আউটপুট
+````bash
+{
+ "id":1,
+ "result":"0x100000000000000000000000000"
+}
+````
+
+## ধাপ 4: একটি স্থানান্তর লেনদেন {#step-4-send-a-transfer-transaction}
+
+এখন যে আমরা premined হিসাবে সেট আপ অ্যাকাউন্ট সঠিক ভারসাম্য
+
+````js
+var Web3 = require("web3");
+
+const web3 = new Web3(""); //example: ws://localhost:10002/ws
+web3.eth.accounts
+ .signTransaction(
+ {
+ to: "",
+ value: web3.utils.toWei(""),
+ gas: 21000,
+ },
+ ""
+ )
+ .then((signedTxData) => {
+ web3.eth
+ .sendSignedTransaction(signedTxData.rawTransaction)
+ .on("receipt", console.log);
+ });
+
+````
diff --git a/archive/edge/bn-edge/working-with-node/query-operator-info.md b/archive/edge/bn-edge/working-with-node/query-operator-info.md
new file mode 100644
index 0000000000..89bc0b69b8
--- /dev/null
+++ b/archive/edge/bn-edge/working-with-node/query-operator-info.md
@@ -0,0 +1,85 @@
+---
+id: query-operator-info
+title: কুয়েরি অপারেটরের তথ্য
+description: "অপারেটরের তথ্য কীভাবে কুয়েরি করবেন।"
+keywords:
+ - docs
+ - polygon
+ - edge
+ - node
+ - query
+ - operator
+---
+
+## পূর্বশর্ত {#prerequisites}
+
+এই নির্দেশিকাটি ধরে নিচ্ছে যে আপনি [লোকাল সেটআপ](/docs/edge/get-started/set-up-ibft-locally) অথবা [ক্লাউডে IBTF ক্লাস্টার কীভাবে সেটআপ করতে হয় তার নির্দেশিকা](/docs/edge/get-started/set-up-ibft-on-the-cloud) পড়েছেন।
+
+যে কোনও ধরণের অপারেটর তথ্য অনুসন্ধান করতে একটি কার্যকরী নোড প্রয়োজন।
+
+Polygon Edge দিয়ে নোড অপারেটররা যে নোড অপারেট করছেন তার নিয়ন্ত্রণে থাকেন এবং সেটি কী করছে তা সম্পর্কে অবগত থাকতে পারেন।
+যেকোনও সময়ে তারা, কোন লগ সিফটিং এর প্রয়োজনীয়তা ছাড়াই gRPC এর উপর তৈরি করা ইনফরমেশন লেয়ার ব্যবহার করতে পারেন এবং অর্থপূর্ণ তথ্য পেতে পারেন।
+
+:::note
+
+যদি আপনার নোড `127.0.0.1:8545`-তে রান না করে, তাহলে আপনার এই ডকুমেন্টে তালিকাভুক্ত কমান্ডগুলোতে একটি ফ্ল্যাগ `--grpc-address ` যোগ করা উচিত।
+
+:::
+
+## পিয়ার ইনফরমেশন {#peer-information}
+
+### পিয়ার লিস্ট {#peers-list}
+
+সংযুক্ত পিয়ারের সম্পূর্ণ তালিকা পেতে (চলমান নোডটি সহ) নিম্নলিখিত কমান্ডটি রান করুন:
+````bash
+polygon-edge peers list
+````
+
+এটি libp2p অ্যাড্রেসগুলোর একটি তালিকা প্রদান করবে যা বর্তমানে চলমান ক্লায়েন্টের পিয়ার।
+
+### পিয়ার স্ট্যাটাস {#peer-status}
+
+একটি নির্দিষ্ট পিয়ারের স্ট্যাটাসের জন্য, রান করুন:
+````bash
+polygon-edge peers status --peer-id
+````
+*অ্যাড্রেস* প্যারামিটারটিই পিয়ারের libp2p অ্যাড্রেস।
+
+## IBFT তথ্য {#ibft-info}
+
+অনেক সময়ে, একজন অপারেটর, IBFT কনসেনসাসের অপারেটিং নোডের বিষয়ে জানতে চাইতে পারেন।
+
+সৌভাগ্যবশত, Polygon Edge এই তথ্যগুলো খুঁজে বের করার একটি সহজ উপায় প্রদান করে।
+
+### স্ন্যাপশট {#snapshots}
+
+নিম্নলিখিত কমান্ডটি রান করলে সবথেকে সাম্প্রতিক স্ন্যাপশটটি ফেরত পাওয়া যায়।
+````bash
+polygon-edge ibft snapshot
+````
+একটি নির্দিষ্ট উচ্চতায় স্ন্যাপশটটি কুয়েরি করতে, অপারেটর এটা রান করতে পারেন:
+````bash
+polygon-edge ibft snapshot --num
+````
+
+### ক্যান্ডিডেট {#candidates}
+
+ক্যান্ডিডেটদের সর্বশেষ তথ্য পেতে, অপারেটর এটা রান করতে পারেন:
+````bash
+polygon-edge ibft candidates
+````
+এই কমান্ডটি প্রস্তাবিত ক্যান্ডিডেটের পাশাপাশি এখনও অন্তর্ভুক্ত না হওয়া ক্যান্ডিডেটদের বর্তমান সেটকে কুয়েরি করে থাকে
+
+### স্ট্যাটাস {#status}
+
+নিম্নলিখিত কমান্ডটি চলমান IBFT ক্লায়েন্টের বর্তমান যাচাইকারীর কী রিটার্ন করে:
+````bash
+polygon-edge ibft status
+````
+
+## লেনদেন পুল {#transaction-pool}
+
+লেনদেন পুলে বর্তমান লেনদেনের সংখ্যা খুঁজে পেতে, অপারেটর রান করতে পারেন:
+````bash
+polygon-edge txpool status
+````
diff --git a/archive/edge/de-edge/additional-features/blockscout.md b/archive/edge/de-edge/additional-features/blockscout.md
new file mode 100644
index 0000000000..1af73c8dda
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/blockscout.md
@@ -0,0 +1,376 @@
+---
+id: blockscout
+title: Blockscout
+description: Wie man eine Blockscout Instance einrichtet, um mit Polygon Edge zu arbeiten.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - blockscout
+ - deploy
+ - setup
+ - instance
+---
+
+## Übersicht {#overview}
+Dieser Leitfaden geht in Details darüber, wie man Blockscout zusammenstellen und implementieren kann, um mit Polygon-Edge zusammenzuarbeiten. Blockscout hat seine eigene [Dokumentation](https://docs.blockscout.com/for-developers/manual-deployment), aber dieser Leitfaden konzentriert sich auf einfache aber detaillierte Schritt-für-Schritt-Anleitungen darüber, wie man step-by-step einrichtet.
+
+## Umgebung {#environment}
+* Betriebssystem: Ubuntu Server 20.04 LTS [Download-Link](https://releases.ubuntu.com/20.04/) mit Sudo-Genehmigungen
+* Server-Hardware: 8CPU / 16 GB RAM / 50 GB HDD (LVM)
+* Datenbankserver: Dedizierter Server mit 2 CPU / 4 GB RAM / 100 GB SSD / PostgreSQL 13.4
+
+### DB-Server {#db-server}
+Die Voraussetzung für die Befolgung dieses Leitfadens ist, dass ein Datenbankserver bereit ist, Datenbank und db-Benutzer konfiguriert sind. Dieser Leitfaden wird nicht in Details darüber gehen, wie man den PostgreSQL-Server einsetzen und konfigurieren kann. Es gibt zu diesem Thema viele Leitfäden, wie beispielsweise [DigitalOcean Guide](https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart)
+
+:::info HAFTUNGSAUSSCHLUSS
+Dieser Leitfaden soll nur helfen, Blockscout auf einer einzigen Instance zu starten und zu laufen, was kein ideales Produktions- Setup ist. Für die Produktion möchten Sie wahrscheinlich Reverse-Proxy, Load-Balancer, scalability usw. in die Architektur einführen.
+:::
+
+# Blockscout Bereitstellungsverfahren {#blockscout-deployment-procedure}
+
+## Teil 1 - Abhängigkeiten installieren {#part-1-install-dependencies}
+Bevor wir beginnen, müssen wir sicherstellen, dass alle Binaries installiert sind, von denen der Blockscout abhängig ist.
+
+### System aktualisieren {#update-upgrade-system}
+```bash
+sudo apt -y update && sudo apt -y upgrade
+```
+
+### Erlang repos hinzufügen {#add-erlang-repos}
+```bash
+# go to your home dir
+cd ~
+# download deb
+wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
+# download key
+wget https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc
+# install repo
+sudo dpkg -i erlang-solutions_2.0_all.deb
+# install key
+sudo apt-key add erlang_solutions.asc
+# remove deb
+rm erlang-solutions_2.0_all.deb
+# remove key
+rm erlang_solutions.asc
+```
+
+### NodeJS repo hinzufügen {#add-nodejs-repo}
+```bash
+sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
+```
+
+### Rust installieren {#install-rust}
+```bash
+sudo curl https://sh.rustup.rs -sSf | sh -s -- -y
+```
+
+### Erforderliche Version von Erlang installieren {#install-required-version-of-erlang}
+```bash
+sudo apt -y install esl-erlang=1:24.*
+```
+
+### Erforderliche Version von Elixir installieren {#install-required-version-of-elixir}
+Die Version von Elixir muss `1.13`sein. Wenn wir versuchen, diese Version aus dem offiziellen Repo zu installieren, `erlang`wird auf aktualisiert werden `Erlang/OTP 25`und das wollen wir nicht. Aus diesem Grund müssen wir die spezifische vorkompilierte `elixir`Version von GitHub Releases installieren.
+
+```bash
+cd ~
+mkdir /usr/local/elixir
+wget https://github.com/elixir-lang/elixir/releases/download/v1.13.4/Precompiled.zip
+sudo unzip -d /usr/local/elixir/ Precompiled.zip
+rm Precompiled.zip
+```
+
+`exlixir`Jetzt müssen wir System Binaries ordnungsgemäß einrichten.
+```bash
+sudo ln -s /usr/local/elixir/bin/elixir /usr/local/bin/elixir
+sudo ln -s /usr/local/elixir/bin/mix /usr/local/bin/mix
+sudo ln -s /usr/local/elixir/bin/iex /usr/local/bin/iex
+sudo ln -s /usr/local/elixir/bin/elixirc /usr/local/bin/elixirc
+```
+
+Überprüfen, ob `elixir`und 2 ordnungsgemäß installiert sind. Dazu wird `erlang``elixir -v`ausgeführt. Dies sollte die Ausgabe sein:
+```bash
+Erlang/OTP 24 [erts-12.3.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]
+
+Elixir 1.13.4 (compiled with Erlang/OTP 22)
+```
+
+:::warning
+`Erlang/OTP`muss Version sein `24`und `Elixir`muss Version sein.`1.13.*` Wenn das nicht der Fall ist, werden Sie Probleme mit der Erstellung von Blockscout und/oder Ausführung haben.
+:::
+:::info
+Schaue die offizielle ***[Seite von Blockscout Anforderungen an](https://docs.blockscout.com/for-developers/information-and-settings/requirements)***
+:::
+
+### NodeJS installieren {#install-nodejs}
+```bash
+sudo apt -y install nodejs
+```
+
+### Cargo installieren {#install-cargo}
+```bash
+sudo apt -y install cargo
+```
+
+### Andere Abhängigkeiten installieren {#install-other-dependencies}
+```bash
+sudo apt -y install automake libtool inotify-tools gcc libgmp-dev make g++ git
+```
+
+### Installieren Sie optional postgresql Client, um Ihre db-Verbindung zu überprüfen {#optionally-install-postgresql-client-to-check-your-db-connection}
+```bash
+sudo apt install -y postgresql-client
+```
+
+## Teil 2 - Umgebungsvariablen setzen {#part-2-set-environment-variables}
+Wir müssen die Umgebungsvariablen setzen, bevor wir Blockscout Compilation beginnen. In diesem Leitfaden werden wir nur das grundlegende Minimum festlegen, damit es funktioniert. Die vollständige Liste [der](https://docs.blockscout.com/for-developers/information-and-settings/env-variables) Variablen, die eingestellt werden können, finden Sie hier
+
+### Datenbankverbindung als Umgebungsvariable einstellen {#set-database-connection-as-environment-variable}
+```bash
+# postgresql connection example: DATABASE_URL=postgresql://blockscout:Passw0Rd@db.instance.local:5432/blockscout
+export DATABASE_URL=postgresql://:@:/ # db_name does not have to be existing database
+
+# we set these env vars to test the db connection with psql
+export PGPASSWORD=Passw0Rd
+export PGUSER=blockscout
+export PGHOST=db.instance.local
+export PGDATABASE=postgres # on AWS RDS postgres database is always created
+```
+
+Testen Sie jetzt ihre DB-Verbindung mit den angegebenen Parametern. Da Sie PG env vars zur Verfügung gestellt haben, sollten Sie sich mit der Datenbank nur durch Ausführen von verbinden können:
+```bash
+psql
+```
+
+Wenn die Datenbank korrekt konfiguriert ist, sollten Sie eine psql sehen:
+```bash
+psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
+SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
+Type "help" for help.
+
+blockscout=>
+```
+
+Andernfalls wird ein Fehler wie folgt angezeigt:
+```bash
+psql: error: FATAL: password authentication failed for user "blockscout"
+FATAL: password authentication failed for user "blockscout"
+```
+Wenn dies der Fall ist, könnten [diese Dokumente](https://ubuntu.com/server/docs/databases-postgresql) Ihnen helfen.
+
+:::info DB-Verbindung
+Stelle sicher, dass du alle db-Verbindungsprobleme aussortiert hast, bevor du zum nächsten fortfährst. Du musst Superuser-Rechte für den blockscout-Benutzer bereitstellen.
+:::
+```bash
+postgres@ubuntu:~$ createuser --interactive
+Enter name of role to add: blockscout
+Shall the new role be a superuser? (y/n) y
+```
+
+## Teil 3 - klonen und kompilieren von Blockscout {#part-3-clone-and-compile-blockscout}
+Jetzt bekommen wir endlich Blockscout Installation zu starten.
+
+### Blockscout repo klonen {#clone-blockscout-repo}
+```bash
+cd ~
+git clone https://github.com/Trapesys/blockscout
+```
+
+### Geheime Schlüsselbasis generieren, um den Produktions-Build zu schützen {#generate-secret-key-base-to-protect-production-build}
+```bash
+cd blockscout
+mix deps.get
+mix local.rebar --force
+mix phx.gen.secret
+```
+In der letzten Zeile sollten Sie eine lange Reihe von zufälligen Zeichen sehen. Dies sollte als `SECRET_KEY_BASE`Umgebungsvariable festgelegt werden, vor dem nächsten Schritt. Zum Beispiel:
+```bash
+export SECRET_KEY_BASE="912X3UlQ9p9yFEBD0JU+g27v43HLAYl38nQzJGvnQsir2pMlcGYtSeRY0sSdLkV/"
+```
+
+### Produktionsmodus einstellen {#set-production-mode}
+```bash
+export MIX_ENV=prod
+```
+
+### Kompilieren {#compile}
+Cd in das Klonverzeichnis und mit dem Kompilieren beginnen
+
+```bash
+cd blockcout
+mix local.hex --force
+mix do deps.get, local.rebar --force, deps.compile, compile
+```
+
+:::info
+Wenn Sie bereits eine Installation durchgeführt haben, entfernen Sie die statischen Elemente aus dem vorherigen Build ***mix phx.digestclean.***
+:::
+
+### Datenbanken migrieren {#migrate-databases}
+:::info
+Dieser Teil wird misslingen, wenn Sie Ihre DB-Verbindung nicht richtig eingerichtet haben, sie nicht zur Verfügung gestellt haben, oder in der DATABASE_URL-Umgebung festgelegt wurden. Der Datenbankbenutzer muss Superuser-Rechte haben.
+:::
+```bash
+mix do ecto.create, ecto.migrate
+```
+
+Muss die Datenbank zuerst abgelegt werden,
+```bash
+mix do ecto.drop, ecto.create, ecto.migrate
+```
+
+### zuerst Npm-Abhängigkeiten installieren ausführen und Frontend Assets kompilieren {#install-npm-dependencies-and-compile-frontend-assets}
+Sie müssen das Verzeichnis im Ordner mit den Frontend Assets ändern.
+
+```bash
+cd apps/block_scout_web/assets
+sudo npm install
+sudo node_modules/webpack/bin/webpack.js --mode production
+```
+
+:::info Sei geduldig
+Das Kompilieren dieser Assets kann ein paar Minuten dauern, und es wird keine Ausgabe anzeigen. Es kann aussehen, als wäre der Prozess eingefroren, aber Abwarten und Tee trinken. Wenn der Kompiliervorgang abgeschlossen ist, sollte etwas ausgegeben werden, `webpack 5.69.1 compiled with 3 warnings in 104942 ms`wie:
+:::
+
+### Statische Assets erstellen {#build-static-assets}
+Für diesen Schritt müssen Sie zur Root Ihres Blockscout clone zurückkehren.
+```bash
+cd ~/blockscout
+sudo mix phx.digest
+```
+
+### Selbstsignierte Zertifikate generieren {#generate-self-signed-certificates}
+:::info
+Du kannst diesen Schritt überspringen, wenn du `https`nicht verwendest.
+:::
+```bash
+cd apps/block_scout_web
+mix phx.gen.cert blockscout blockscout.local
+```
+
+## Teil 4 - Blockscout Service erstellen und ausführen {#part-4-create-and-run-blockscout-service}
+In diesem Teil müssen wir einen Systemdienst einrichten, da Blockscout im Hintergrund läuft und nach dem System-Neustart fortbesteht.
+
+### Service file erstellen {#create-service-file}
+```bash
+sudo touch /etc/systemd/system/explorer.service
+```
+
+### Servicedatei bearbeiten {#edit-service-file}
+Verwende den bevorzugten Linux Texteditor, um diese Datei zu bearbeiten und den Service zu konfigurieren.
+```bash
+sudo vi /etc/systemd/system/explorer.service
+```
+Der Inhalt der explorer.service-Datei sollte wie folgt aussehen:
+```bash
+[Unit]
+Description=BlockScout Server
+After=network.target
+StartLimitIntervalSec=0
+
+[Service]
+Type=simple
+Restart=always
+RestartSec=1
+User=root
+StandardOutput=syslog
+StandardError=syslog
+WorkingDirectory=/usr/local/blockscout
+ExecStart=/usr/local/bin/mix phx.server
+EnvironmentFile=/usr/local/blockscout/env_vars.env
+
+[Install]
+WantedBy=multi-user.target
+```
+
+### Start service auf Systemstart aktivieren {#enable-starting-service-on-system-boot}
+```bash
+sudo systemctl daemon-reload
+sudo systemctl enable explorer.service
+```
+
+### Verschieben des Blockscout clone an systemweiten Standort {#move-your-blockscout-clone-folder-to-system-wide-location}
+Blockscout-Service muss Zugriff auf den Ordner haben, den du von Blockscout repo geklont hast und alle Assets kompiliert hast.
+```bash
+sudo mv ~/blockscout /usr/local
+```
+
+### env vars Datei erstellen, die von Blockscout-Service verwendet werden {#create-env-vars-file-which-will-be-used-by-blockscout-service}
+
+```bash
+sudo touch /usr/local/blockscout/env_vars.env
+# use your favorite text editor
+sudo vi /usr/local/blockscout/env_vars.env
+
+# env_vars.env file should hold these values ( adjusted for your environment )
+ETHEREUM_JSONRPC_HTTP_URL="localhost:8545" # json-rpc API of the chain
+ETHEREUM_JSONRPC_TRACE_URL="localhost:8545" # same as json-rpc API
+DATABASE_URL='postgresql://blockscout:Passw0Rd@db.instance.local:5432/blockscout' # database connection from Step 2
+SECRET_KEY_BASE="912X3UlQ9p9yFEBD0JU+g27v43HLAYl38nQzJGvnQsir2pMlcGYtSeRY0sSdLkV/" # secret key base
+ETHEREUM_JSONRPC_WS_URL="ws://localhost:8545/ws" # websocket API of the chain
+CHAIN_ID=93201 # chain id
+HEART_COMMAND="systemctl restart explorer" # command used by blockscout to restart it self in case of failure
+SUBNETWORK="Supertestnet PoA" # this will be in html title
+LOGO="/images/polygon_edge_logo.svg" # logo location
+LOGO_FOOTER="/images/polygon_edge_logo.svg" # footer logo location
+COIN="EDGE" # coin
+COIN_NAME="EDGE Coin" # name of the coin
+INDEXER_DISABLE_BLOCK_REWARD_FETCHER="true" # disable block reward indexer as Polygon Edge doesn't support tracing
+INDEXER_DISABLE_PENDING_TRANSACTIONS_FETCHER="true" # disable pending transactions indexer as Polygon Edge doesn't support tracing
+INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHER="true" # disable internal transactions indexer as Polygon Edge doesn't support tracing
+MIX_ENV="prod" # run in production mode
+BLOCKSCOUT_PROTOCOL="http" # protocol to run blockscout web service on
+PORT=4000 # port to run blockscout service on
+DISABLE_EXCHANGE_RATES="true" # disable fetching of exchange rates
+POOL_SIZE=200 # the number of database connections
+POOL_SIZE_API=300 # the number of read-only database connections
+ECTO_USE_SSL="false" # if protocol is set to http this should be false
+HEART_BEAT_TIMEOUT=60 # run HEARTH_COMMAND if heartbeat missing for this amount of seconds
+INDEXER_MEMORY_LIMIT="10Gb" # soft memory limit for indexer - depending on the size of the chain and the amount of RAM the server has
+FETCH_REWARDS_WAY="manual" # disable trace_block query
+INDEXER_EMPTY_BLOCKS_SANITIZER_BATCH_SIZE=1000 # sanitize empty block in this batch size
+```
+:::info
+Verwende den `SECRET_KEY_BASE`du in Teil 3 generiert hast.
+:::Speichern der Datei und beenden.
+
+### Starten Sie Blockscout-Service {#finally-start-blockscout-service}
+```bash
+sudo systemctl start explorer.service
+```
+
+## Teil 5 - teste die Funktionalität deiner Blockscout-Instance {#part-5-test-out-the-functionality-of-your-blockscout-instance}
+Alles was jetzt noch zu tun ist, ist zu überprüfen, ob der Blockscout-Service läuft. Service-Status prüfen mit:
+```bash
+sudo systemctl status explorer.service
+```
+
+Um die Service-Ausgabe zu überprüfen:
+```bash
+sudo journalctl -u explorer.service -f
+```
+
+Sie können überprüfen, ob es neue Listening Ports gibt:
+```bash
+# if netstat is not installed
+sudo apt install net-tools
+sudo netstat -tulpn
+```
+
+Du solltest eine Liste der listening Ports erhalten, und auf der Liste sollte so etwas sein:
+```
+tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 28142/postgres
+tcp 0 0 0.0.0.0:4000 0.0.0.0:* LISTEN 42148/beam.smp
+```
+
+Blockscout führt den in env-Datei definierten Port und das Protokoll aus. In diesem Beispiel läuft es auf `4000`(http) . `http://:4000`Wenn alles in Ordnung ist, sollte man auf das Blockscout-Web-Portal mit zugreifen können.
+
+## Überlegungen {#considerations}
+Für die beste Leistung ist es ratsam, einen dedizierten/lokalen `polygon-edge`vollständigen full -archive nicht validator-Knoten zu haben der ausschließlich für Blockscout-Abfragen verwendet wird. Die `json-rpc`API dieses Knotens müssen nicht öffentlich exponiert werden, da Blockscout alle Abfragen vom Backend ausführt.
+
+
+## Schlussgedanken {#final-thoughts}
+Wir haben gerade eine einzige Blockscout-Instance bereitgestellt, die in Ordnung ist, aber für die Produktion sollte erwogen werden, diese Instanz hinter einem Reverse-Proxy wie Nginx einzustellen. Du solltest auch über die Skalierbarkeit von Datenbanken und Instances nachdenken, abhängig von deinem Anwendungsfall.
+
+Sie sollten auf jeden Fall die offizielle [Blockscout-Dokumentation](https://docs.blockscout.com/) ansehen, da viele Anpassungsmöglichkeiten vorhanden sind.
\ No newline at end of file
diff --git a/archive/edge/de-edge/additional-features/chainbridge/definitions.md b/archive/edge/de-edge/additional-features/chainbridge/definitions.md
new file mode 100644
index 0000000000..dfc2aa1d92
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/chainbridge/definitions.md
@@ -0,0 +1,220 @@
+---
+id: definitions
+title: Allgemeine Definitionen
+description: Allgemeine Definitionen für in ChainBridge verwendete Begriffe
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+
+## Relayer {#relayer}
+ChainBridge ist eine Bridge vom Typ Relayer. Die Rolle eines Relayers besteht darin, für die Ausführung einer Anfrage zu stimmen (z.B. wie viele Token gebrannt/freigegeben werden sollen).
+Er überwacht Ereignisse aus jeder Chain und stimmt für einen Vorschlag im Bridge-Contract der Destination-Chain, wenn er ein `Deposit`Event von einer Chain erhält. Ein Relayer ruft eine Methode im Bridge-Contract auf, um den Vorschlag auszuführen, nachdem die erforderliche Anzahl an Stimmen abgegeben wurde. Die Bridge delegiert die Ausführung an den Handler-Contract.
+
+
+## Contract-Arten {#types-of-contracts}
+In ChainBridge gibt es in jeder Chain drei Arten von Contracts, Bridge/Handler/Target genannt.
+
+| **Art** | **Beschreibung** |
+|----------|-------------------------------------------------------------------------------------------------------------------------------|
+| Bridge-Contract | In jeder Chain muss ein Bridge-Contract implementiert werden, der Anfragen, Abstimmungen und Ausführungen verwaltet. Benutzer rufen `deposit`in Bridge auf, um eine Übertragung zu starten, und Bridge delegiert den Vorgang an den Handler-Contract, der dem Target-Contract entspricht. Sobald der Handler-Contract den Target-Contract erfolgreich aufgerufen hat, sendet der Bridge-Contract ein `Deposit`Event, um die Relayers zu informieren. |
+| Handler-Contract | Dieser Contract interagiert mit dem Target-Contract, um eine Einzahlung oder einen Vorschlag auszuführen. Er validiert die Anfrage des Benutzers, ruft den Target-Contract auf und unterstützt bei einigen Einstellungen im Target-Contract. Es gibt gewisse Handler-Contracts, die jeden Target-Contract aufrufen, der über eine andere Schnittstelle verfügt. Durch die indirekten Aufrufe des Handler-Vertrags ermöglicht die Bridge die Übertragung von Assets oder Daten jeglicher Art. Derzeit gibt es drei Arten von Handler-Contracts, die von ChainBridge implementiert werden: ERC20Handler, ERC721Handler und GenericHandler. |
+| Target-Contract | Ein Contract, der die auszutauschenden Assets oder die Nachrichten, die zwischen den Chains übertragen werden, verwaltet. Die Interaktion mit diesem Contract wird von jeder Seite der Bridge aus durchgeführt. |
+
+
+
+
+*ChainBridge Architektur*
+
+
+
+
+
+
+*z. B. Workflow einer ERC20-Token-Übertragun*g
+
+
+
+## Kontotypen {#types-of-accounts}
+
+Sicherstellen, dass die Konten genügend native Token haben, um Transaktionen zu erstellen, bevor Sie loslegen. In Polygon Edge können Sie bei der Erstellung des Genesis-Blocks den Konten vorab ermittelte Salden zuweisen.
+
+| **Art** | **Beschreibung** |
+|----------|-------------------------------------------------------------------------------------------------------------------------------|
+| Admin | Diesem Konto wird standardmäßig die Rolle des Administrators zugewiesen. |
+| Benutzer | Das Sender-/Empfängerkonto, das Assets sendet/empfängt. Das Senderkonto zahlt die Gebühren (Gas) bei der Genehmigung von Token-Transfers und ruft die Einzahlung im Bridge-Contract auf, um eine Übertragung zu beginnen. |
+
+:::info Die Administratorrolle
+
+Bestimmte Aktionen können nur von einem Konto mit Administratorrolle durchgeführt werden. Standardmäßig hat derjenige, der den Bridge-Contract bereitstellt, die Administratorrolle. Im Folgenden erfahren Sie, wie Sie die Administratorrolle einem anderen Konto zuweisen oder sie entfernen können.
+
+### Administratorrolle hinzufügen {#add-admin-role}
+
+Fügt einen Administrator hinzu
+
+```bash
+# Grant admin role
+$ cb-sol-cli admin add-admin \
+ --url [JSON_RPC_URL] \
+ --privateKey [PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --admin "[NEW_ACCOUNT_ADDRESS]"
+```
+### Administratorrolle widerrufen {#revoke-admin-role}
+
+Entfernt einen Administrator
+
+```bash
+# Revoke admin role
+$ cb-sol-cli admin remove-admin \
+ --url [JSON_RPC_URL] \
+ --privateKey [PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --admin "[NEW_ACCOUNT_ADDRESS]"
+```
+
+## Die mit dem `admin`Konto möglichen Operationen sind die Folgenden. {#account-are-as-below}
+
+### Ressource einstellen {#set-resource}
+
+Registrierung einer Ressourcen-ID mit einer Vertragsadresse für einen Handler.
+
+```bash
+# Register new resource
+$ cb-sol-cli bridge register-resource \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --resourceId "[RESOURCE_ID]" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[TARGET_CONTRACT_ADDRESS]"
+```
+
+### Einen Contract erstellen, mit dem Coins ausgeschieden/förderbar gemacht werden können {#make-contract-burnable-mintable}
+
+Einen Token-Contract in einem Handler als förderbar/ausscheidbar festlegen.
+
+```bash
+# Let contract burnable/mintable
+$ cb-sol-cli bridge set-burn \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[TARGET_CONTRACT_ADDRESS]"
+```
+
+### Vorschlag abbrechen {#cancel-proposal}
+
+Vorschlag für die Ausführung abbrechen
+
+```bash
+# Cancel ongoing proposal
+$ cb-sol-cli bridge cancel-proposal \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --resourceId "[RESOURCE_ID]" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --chainId "[CHAIN_ID_OF_SOURCE_CHAIN]" \
+ --depositNonce "[NONCE]"
+```
+
+### Pause/Unterbrechung {#pause-unpause}
+
+Einzahlungen, Vorschlagserstellung, Abstimmungen und Einzahlungsausführungen zeitlich unterbrechen.
+
+```bash
+# Pause
+$ cb-sol-cli admin pause \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]"
+
+# Unpause
+$ cb-sol-cli admin unpause \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]"
+```
+
+### Gebühr ändern {#change-fee}
+
+Ändern Sie die Gebühr, die an den Bridge-Contract entrichtet wird
+
+```bash
+# Change fee for execution
+$ cb-sol-cli admin set-fee \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --fee [FEE_IN_WEI]
+```
+
+### Einen Relayer hinzufügen/entfernen {#add-remove-a-relayer}
+
+Konto als neuen Relayer hinzufügen oder ein Relayer-Konto entfernen
+
+```bash
+# Add relayer
+$ cb-sol-cli admin add-relayer \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --relayer "[NEW_RELAYER_ADDRESS]"
+
+# Remove relayer
+$ cb-sol-cli admin remove-relayer \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --relayer "[RELAYER_ADDRESS]"
+```
+
+### Schwellenwert für Relayer ändern {#change-relayer-threshold}
+
+Ändern Sie die Anzahl der erforderlichen Stimmen für die Ausführung eines Vorschlags
+
+```bash
+# Remove relayer
+$ cb-sol-cli admin set-threshold \
+ --url [JSON_RPC_URL] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --threshold [THRESHOLD]
+```
+:::
+
+## Chain-ID {#chain-id}
+
+Die ChainBridge `chainId`ist ein beliebiger Wert, der in der Bridge zur Unterscheidung zwischen den Blockchain-Netzwerken verwendet wird und im Bereich von uint8 liegen muss. Nicht zu verwechseln mit der Chain-ID des Netzwerks, das ist nicht das gleich. Dieser Wert muss zwar eindeutig sein, aber er muss nicht mit der ID des Netzwerks übereinstimmen.
+
+In diesem Beispiel setzen wir i`99`n, w`chainId`eil die Chain-ID des Mumbai-Testnets ist`80001`, was nicht mit einem uint8 dargestellt werden kann.
+
+## Ressourcen-ID {#resource-id}
+
+Eine Ressourcen-ID ist ein eindeutiger 32-Byte-Wert in einer Cross-Chain-Umgebung, der mit einem bestimmten Asset (Ressource) verbunden ist, das zwischen Netzwerken übertragen wird.
+
+Die Ressourcen-ID ist frei wählbar. In der Regel enthält das letzte Byte jedoch die Chain-ID der Source-Chain (das Netzwerk, aus dem dieses Asset stammt).
+
+## JSON-RPC URL für Polygon PoS {#json-rpc-url-for-polygon-pos}
+
+Für diese Anleitung verwenden wir https://rpc-mumbai.matic.today, eine öffentliche JSON-RPC-URL, die von Polygon zur Verfügung gestellt wird und möglicherweise Datenübertragungs- oder Leistungsbeschränkungen hat. Dies dient nur zur Verbindung mit dem Polygon Mumbai Testnet. Wir empfehlen Ihnen, Ihre JSON-RPC-URL über einen externen Dienst wie Infura zu beziehen, da bei der Einrichtung von Verträgen viele Abfragen an den JSON-RPC gesendet werden.
+
+## Möglichkeiten zur Übertragung von Token {#ways-of-processing-the-transfer-of-tokens}
+Bei der Übertragung von ERC20-Tokens zwischen Chains können diese in zwei verschiedenen Modi verarbeitet werden:
+
+### Sperren/Freigeben Modus {#lock-release-mode}
+Source-Chain: Die versendeten Token werden im Handler-Contract gesperrt.
+D
estination-Chain: Die gleiche Menge an in der Source-Chain gesendeten Token, wird freigeschaltet und vom Handler-Contract auf das Empfängerkonto in der Destination-Chain übertragen.
+
+### Ausscheiden/Fördern-Modus {#burn-mint-mode}
+Source-Chain: Die versendeten Token werden ausgeschieden. De
stination-Chain: Die gleiche Menge an Token, die Sie in der Source-Chain gesendet und ausgeschieden haben, wird auf der Destination-Chain ausgestellt und an das Empfängerkonto gesendet.
+
+Für jede Chain können Sie verschiedene Modi nutzen. Das bedeutet, dass ein Token in der Mainchain sperrbar ist, während ein Token in der Subchain für die Übertragung ausgegeben wird. So kann es zum Beispiel sinnvoll sein, Token zu sperren/freizugeben, wenn der Gesamtvorrat oder der Ausstellungszeitplan kontrolliert wird. Token würden ausgestellt/ausgeschieden, wenn der Contract in der Subchain dem Angebot in der Haupt-Chain folgen muss.
+
+Der Standardmodus ist der Sperren/Freigeben Modus. Möchten Sie die Token ausstellbar/ausscheidbar machen, müssen Sie die `adminSetBurnable`Methode wählen. Wenn Sie die Token bei der Ausführung ausstellen möchten, müssen Sie dem ERC20 Handler-Contract die Rolle `minter`zuweisen.
+
+
diff --git a/archive/edge/de-edge/additional-features/chainbridge/overview.md b/archive/edge/de-edge/additional-features/chainbridge/overview.md
new file mode 100644
index 0000000000..1e3be5dec5
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/chainbridge/overview.md
@@ -0,0 +1,36 @@
+---
+id: overview
+title: Übersicht
+description: ChainBridge Übersicht
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+## Was ist ChainBridge? {#what-is-chainbridge}
+
+ChainBridge ist eine modulare, multidirektionale Blockchain Bridge, die EVM- und Substrat-kompatible Chains unterstützt und von ChainSafe entwickelt wurde. Sie ermöglicht es Benutzern, alle Arten von Assets oder Nachrichten zwischen zwei verschiedenen Chains zu übertragen.
+
+Um mehr über ChainBridge zu erfahren, besuche bitte zuerst die [offizielle Dokumentation](https://chainbridge.chainsafe.io/), die von den Entwicklern bereitgestellt wird.
+
+Dieser Leitfaden soll Ihnen bei der Integration von ChainBridge in Polygon Edge helfen. Er führt durch die Einrichtung einer Bridge zwischen einem laufenden Polygon PoS (Mumbai Testnet) und einem lokalen Polygon Edge-Netzwerk.
+
+## Voraussetzungen {#requirements}
+
+In diesem Leitfaden werden Polygon Edge-Knoten, ein ChainBridge-Relayer (mehr dazu [hier](/docs/edge/additional-features/chainbridge/definitions)) und das Tool cb-sol-cli, ein CLI-Tool zur Bereitstellung von lokalen Contracts ausgeführt, Ressourcen registriert und Einstellungen für die Bridge geändert ([das](https://chainbridge.chainsafe.io/cli-options/#cli-options) ist nachprüfbar). Vor der Einrichtung müssen die folgenden Voraussetzungen erfüllt sein:
+
+* Go: >= 1.17
+* Node.js >= 16.13.0
+* Git
+
+
+Außerdem müssen die folgenden Repositories mit den Versionen geklont werden, um bestimmte Anwendungen auszuführen.
+
+* [Polygon Edge](https://github.com/0xPolygon/polygon-edge): auf dem `develop`Branch
+* [ChainBridge](https://github.com/ChainSafe/ChainBridge): v1.1.5
+* [ChainBridge Bereitstellungstools](https://github.com/ChainSafe/chainbridge-deploy): `f2aa093`auf B`main`ranch
+
+
+Sie müssen ein Polygon-Edge-Netzwerk einrichten, bevor Sie mit dem nächsten Abschnitt fortfahren. Weitere Informationen finden Sie unter [Lokale Einrichtung](/docs/edge/get-started/set-up-ibft-locally) oder [Cloud Einrichtung](/docs/edge/get-started/set-up-ibft-on-the-cloud).
\ No newline at end of file
diff --git a/archive/edge/de-edge/additional-features/chainbridge/setup-erc20-transfer.md b/archive/edge/de-edge/additional-features/chainbridge/setup-erc20-transfer.md
new file mode 100644
index 0000000000..91535ba0a1
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/chainbridge/setup-erc20-transfer.md
@@ -0,0 +1,142 @@
+---
+id: setup-erc20-transfer
+title: ERC20 Token-Transfer
+description: ERC-20-Transfer in ChainBridge einrichten
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+Bisher haben wir eine Bridge eingerichtet, um Assets/Daten zwischen der Polygon PoS und der Polygon Edge-Chain auszutauschen. In diesem Abschnitt erfahren Sie, wie eine ERC20 Bridge eingerichtet und Token zwischen verschiedenen Blockchains gesendet werden.
+
+## Schritt 1: Ressourcen-ID registrieren {#step-1-register-resource-id}
+
+Zunächst registrieren Sie eine Ressourcen-ID, die Ressourcen in einer Cross-Chain-Umgebung zuordnet. Eine Ressourcen-ID ist ein 32-Byte-Wert, der für die Ressource, die wir zwischen diesen Blockchains übertragen, einmalig sein muss. Die Ressourcen-IDs sind frei wählbar, können aber als Konvention die Chain-ID der Home-Chain im letzten Byte enthalten (die Home-Chain bezieht sich auf das Netzwerk, aus dem diese Ressourcen stammen).
+
+Um die Ressourcen-ID zu registrieren, können Sie den Befehl `cb-sol-cli bridge register-resource`verwenden. Der Private Key des `admin`Kontos muss angegeben werden.
+
+```bash
+# For Polygon PoS chain
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ # Set Resource ID for ERC20
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+
+# For Polygon Edge chain
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ # Set Resource ID for ERC20
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+## (Optional) Contracts sind ausstellbar/ausscheidbar anzulegen {#optional-make-contracts-mintable-burnable}
+
+
+```bash
+# Let ERC20 contract burn on source chain and mint on destination chain
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC20_CONTRACT_ADDRESS]"
+
+# Grant minter role to ERC20 Handler contract
+$ cb-sol-cli erc20 add-minter \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --minter "[ERC20_HANDLER_CONTRACT_ADDRESS]"
+```
+
+## Schritt 2: ERC20-Token übertragen {#step-2-transfer-erc20-token}
+
+Wir senden ERC20 Token von der Polygon PoS-Chain an die Polygon Edge-Chain.
+
+Zunächst erhalten Sie Token, in dem Sie sie ausstellen. Ein Konto mit der `minter`Rolle kann neue Token ausgeben. Das Konto, das den ERC20-Contract bereitgestellt hat, hat standardmäßig die `minter`Rolle. Um andere Konten als Mitglieder der `minter`Rolle anzugeben, muss der Befehl a`cb-sol-cli erc20 add-minter`usgeführt werden.
+
+```bash
+# Mint ERC20 tokens
+$ cb-sol-cli erc20 mint \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [MINTER_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --amount 1000
+```
+
+Um den aktuellen Saldo zu überprüfen, kann der Befehl `cb-sol-cli erc20 balance`verwendet werden.
+
+```bash
+# Check ERC20 token balance
+$ cb-sol-cli erc20 balance \
+ --url https://rpc-mumbai.matic.today \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --address "[ACCOUNT_ADDRESS]"
+
+[erc20/balance] Account has a balance of 1000.0
+```
+
+Als Nächstes muss der Transfer von ERC20-Token vom Konto durch den ERC20 Handler genehmigt werden
+
+```bash
+# Approve transfer from the account by ERC20 Handler
+$ cb-sol-cli erc20 approve \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [USER_ACCOUNT_ADDRESS] \
+ --gasPrice [GAS_PRICE] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --recipient "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --amount 500
+```
+
+Um Token auf Polygon Edge-Chains zu übertragen, `deposit`aufrufen.
+
+```bash
+# Start transfer from Polygon PoS to Polygon Edge chain
+$ cb-sol-cli erc20 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --amount 10 \
+ # ChainID of Polygon Edge chain
+ --dest 100 \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]" \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00"
+```
+
+Nachdem erfolgreicher Einzahlung, erhält der Relayer das Event und stimmt für den Vorschlag. Er führt eine Transaktion aus, um Token an das Empfängerkonto in der Polygon Edge-Chain zu senden, nachdem die erforderliche Anzahl von Stimmen abgegeben wurde.
+
+```bash
+INFO[11-19|08:15:58] Handling fungible deposit event chain=mumbai dest=100 nonce=1
+INFO[11-19|08:15:59] Attempting to resolve message chain=polygon-edge type=FungibleTransfer src=99 dst=100 nonce=1 rId=000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00
+INFO[11-19|08:15:59] Creating erc20 proposal chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Watching for finalization event chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Submitted proposal vote chain=polygon-edge tx=0x67a97849951cdf0480e24a95f59adc65ae75da23d00b4ab22e917a2ad2fa940d src=99 depositNonce=1 gasPrice=1
+INFO[11-19|08:16:24] Submitted proposal execution chain=polygon-edge tx=0x63615a775a55fcb00676a40e3c9025eeefec94d0c32ee14548891b71f8d1aad1 src=99 dst=100 nonce=1 gasPrice=5
+```
+
+Sobald die Transaktion erfolgreich durchgeführt wurde, erhalten Sie Token in der Polygon Edge-Chain.
+
+```bash
+# Check the ERC20 balance in Polygon Edge chain
+$ cb-sol-cli erc20 balance \
+ --url https://localhost:10002 \
+ --privateKey [PRIVATE_KEY] \
+ --erc20Address "[ERC20_CONTRACT_ADDRESS]" \
+ --address "[ACCOUNT_ADDRESS]"
+
+[erc20/balance] Account has a balance of 10.0
+```
diff --git a/archive/edge/de-edge/additional-features/chainbridge/setup-erc721-transfer.md b/archive/edge/de-edge/additional-features/chainbridge/setup-erc721-transfer.md
new file mode 100644
index 0000000000..bcec2d99d3
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/chainbridge/setup-erc721-transfer.md
@@ -0,0 +1,134 @@
+---
+id: setup-erc721-transfer
+title: ERC721 NFT Transfer
+description: ERC721-Transfer in ChainBridge einrichten
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+In diesem Abschnitt erfahren Sie, wie eine ERC721 Bridge eingerichtet und NFTs zwischen Blockchain-Netzwerken gesendet werden.
+
+## Schritt 1: Ressourcen-ID registrieren {#step-1-register-resource-id}
+
+Zunächst muss die Ressourcen-ID für den ERC721-Token in den Bridge-Contracts auf beiden Chains registriert werden.
+
+```bash
+# For Polygon PoS chain
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ # Set ResourceID for ERC721 Token
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+
+# For Polygon Edge chain
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ # Set ResourceID for ERC721 Token
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+## (Optional) Ausstellbare/ausschéidbare contracts anlegen {#optional-make-contracts-mintable-burnable}
+
+Um Token ausstellbar/ausscheidbar zu machen, müssen Sie die folgenden Befehle aufrufen:
+
+```bash
+# Let ERC721 contract burn on source chain or mint on destination chain
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC721_CONTRACT_ADDRESS]"
+
+# Grant minter role to ERC721 Handler contract (Only if you want to mint)
+$ cb-sol-cli erc721 add-minter \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --minter "[ERC721_HANDLER_CONTRACT_ADDRESS]"
+```
+
+## Schritt 2: NFT übertragen {#step-2-transfer-nft}
+
+Zunächst werden Sie eine NFT einführen, wenn Sie sie benötigen.
+
+```bash
+# Mint NFT 0x50
+$ cb-sol-cli erc721 mint \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [MINTER_ROLE_ACCOUNT] \
+ --gasPrice [GAS_PRICE] \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
+
+Um den NFT-Besitzer zu überprüfen, kann `cb-sol-cli erc721 owner`verwendet werden.
+
+```bash
+# Check the current owner of NFT
+$ cb-sol-cli erc721 owner \
+ --url https://rpc-mumbai.matic.today \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
+
+Dann ist ein Transfer der NFT durch ERC721 Handler freizugeben
+
+```bash
+# Approve transfer of the NFT 0x50 by ERC721 Handler
+$ cb-sol-cli erc721 approve \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --recipient "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
+
+Der Transfer startet
+
+```bash
+# Start transfer from Polygon PoS to Polygon Edge chain
+$ cb-sol-cli erc721 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --id 0x50 \
+ # ChainID of Polygon Edge chain
+ --dest 100 \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]"
+```
+
+Der Relayer erhält das Event und stimmt für den Vorschlag. Er führt eine Transaktion aus, um NFTs an das Empfängerkonto in der Polygon Edge-Chain zu senden, nachdem die erforderliche Anzahl von Stimmen abgegeben wurde.
+
+```bash
+INFO[11-19|09:07:50] Handling nonfungible deposit event chain=mumbai
+INFO[11-19|09:07:50] Attempting to resolve message chain=polygon-edge type=NonFungibleTransfer src=99 dst=100 nonce=2 rId=000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501
+INFO[11-19|09:07:50] Creating erc721 proposal chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Watching for finalization event chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Submitted proposal vote chain=polygon-edge tx=0x58a22d84a08269ad2e8d52d8dc038621f1a21109d11c7b6e0d32d5bf21ea8505 src=99 depositNonce=2 gasPrice=1
+INFO[11-19|09:08:15] Submitted proposal execution chain=polygon-edge tx=0x57419844881a07531e31667c609421662d94d21d0709e64fb728138309267e68 src=99 dst=100 nonce=2 gasPrice=3
+```
+
+Sie können den NFT-Besitzer im Polygon Edge-Netzwerk überprüfen, nachdem die Ausführung abgeschlossen ist.
+
+```bash
+# Check the owner of NFT 0x50 in Polygon Edge chain
+$ cb-sol-cli erc721 owner \
+ --url http://localhost:10002 \
+ --erc721Address "[ERC721_CONTRACT_ADDRESS]" \
+ --id 0x50
+```
diff --git a/archive/edge/de-edge/additional-features/chainbridge/setup.md b/archive/edge/de-edge/additional-features/chainbridge/setup.md
new file mode 100644
index 0000000000..14a9b1a0bd
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/chainbridge/setup.md
@@ -0,0 +1,197 @@
+---
+id: setup
+title: Einrichtung
+description: Wie man chainBridge einrichtet
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+---
+
+## Bereitstellung von Verträgen {#contracts-deployment}
+
+In diesem Abschnitt werden Sie die erforderlichen Verträge für die Polygon PoS- und Polygon Edge-ChainIn mit `cb-sol-cli`bereitstellen.
+
+```bash
+# Setup for cb-sol-cli command
+$ git clone https://github.com/ChainSafe/chainbridge-deploy.git
+$ cd chainbridge-deploy/cb-sol-cli
+$ make install
+```
+
+Zunächst werden wir mit dem Befehl `cb-sol-cli deploy`Verträge in der Polygon PoS-Chain bereitstellen. M`--all`it Flagwerden alle Verträge bereitgestellt, einschließlich Bridge, ERC20 Handler, ERC721 Handler, Generic Handler, ERC20 und ERC721 Vertrag. Ferner werden die Standardadresse des Relayerkontos und der Schwellenwert festgelegt
+
+```bash
+# Deploy all required contracts into Polygon PoS chain
+$ cb-sol-cli deploy --all --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --gasPrice [GAS_PRICE] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+
+Mehr über chainID und JSON-RPC URL [hier](/docs/edge/additional-features/chainbridge/definitions) erfahren
+
+:::caution
+
+Der vorgegebene Gaspreis in i`cb-sol-cli`st ()`20000000`.`0.02 Gwei` `--gasPrice`Um den geeigneten Gaspreis in einer Transaktion einzurichten, setze den Wert mit dem Argument fest.
+
+```bash
+$ cb-sol-cli deploy --all --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1 \
+ # Set gas price to 5 Gwei
+ --gasPrice 5000000000
+```
+
+:::
+
+:::caution
+
+Der Bridge-Vertrag kostet ungefähr 0x3f97b8 (4167608) Gas zur Bereitstellung Vergewissern, dass die erzeugten Blöcke über ein ausreichendes Blockgaslimit verfügen, damit die Transaktion zur Vertragserstellung durchgeführt werden kann. Um mehr über die Änderung des Blockgaslimits in Polygon Edge zu erfahren, siehe die [lokale Einrichtung](/docs/edge/get-started/set-up-ibft-locally)
+
+:::
+
+Sobald die Verträge bereitgestellt wurden, erhalten Sie das folgende Ergebnis:
+
+```bash
+Deploying contracts...
+✓ Bridge contract deployed
+✓ ERC20Handler contract deployed
+✓ ERC721Handler contract deployed
+✓ GenericHandler contract deployed
+✓ ERC20 contract deployed
+WARNING: Multiple definitions for safeTransferFrom
+✓ ERC721 contract deployed
+
+================================================================
+Url: https://rpc-mumbai.matic.today
+Deployer:
+Gas Limit: 8000000
+Gas Price: 20000000
+Deploy Cost: 0.00029065308
+
+Options
+=======
+Chain Id:
+Threshold:
+Relayers:
+Bridge Fee: 0
+Expiry: 100
+
+Contract Addresses
+================================================================
+Bridge:
+----------------------------------------------------------------
+Erc20 Handler:
+----------------------------------------------------------------
+Erc721 Handler:
+----------------------------------------------------------------
+Generic Handler:
+----------------------------------------------------------------
+Erc20:
+----------------------------------------------------------------
+Erc721:
+----------------------------------------------------------------
+Centrifuge Asset: Not Deployed
+----------------------------------------------------------------
+WETC: Not Deployed
+================================================================
+```
+
+Jetzt können wir die Verträge in der Polygon Edge Chain bereitstellen.
+
+```bash
+# Deploy all required contracts into Polygon Edge chain
+$ cb-sol-cli deploy --all --chainId 100 \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+Speichern Sie die Terminalausgaben mit den Adressen der eingesetzten Smart Contracts, da wir sie für den nächsten Schritt benötigen.
+
+## Relayer-Einrichtung {#relayer-setup}
+
+In diesem Abschnitt werden Sie einen Relayer starten, um Daten zwischen 2 Chains auszutauschen.
+
+Zunächst müssen wir das ChainBridge Repository klonen und bauen.
+
+```bash
+$ git clone https://github.com/ChainSafe/ChainBridge.git
+$ cd chainBridge && make install
+```
+
+Als Nächstes müssen Sie `config.json`erstellen und die JSON-RPC URLs einstellen, die Relay-Adresse und Vertragsadresse für jede Chain festlegen.
+
+```json
+{
+ "chains": [
+ {
+ "name": "mumbai",
+ "type": "ethereum",
+ "id": "99",
+ "endpoint": "https://rpc-mumbai.matic.today",
+ "from": "",
+ "opts": {
+ "bridge": "",
+ "erc20Handler": "",
+ "erc721Handler": "",
+ "genericHandler": "",
+ "minGasPrice": "1",
+ "http": "true"
+ }
+ },
+ {
+ "name": "polygon-edge",
+ "type": "ethereum",
+ "id": "100",
+ "endpoint": "http://localhost:10002",
+ "from": "",
+ "opts": {
+ "bridge": "",
+ "erc20Handler": "",
+ "erc721Handler": "",
+ "genericHandler": "",
+ "minGasPrice": "1",
+ "http": "true"
+ }
+ }
+ ]
+}
+```
+
+Um einen Relayer zu starten, müssen Sie den privaten Schlüssel importieren, der der Relayer-Kontoadresse entspricht. Sie müssen das Passwort eingeben, wenn Sie den privaten Schlüssel importieren. Sobald der Import erfolgreich war, wird der Schlüssel unter `keys/.key`gespeichert.
+
+```bash
+# Import private key and store to local with encryption
+$ chainbridge accounts import --privateKey [RELAYER_ACCOUNT_PRIVATE_KEY]
+
+INFO[11-19|07:09:01] Importing key...
+Enter password to encrypt keystore file:
+> [PASSWORD_TO_ENCRYPT_KEY]
+INFO[11-19|07:09:05] private key imported address= file=.../keys/.key
+```
+
+Jetzt kann der Relayer gestartet werden. Sie müssen das gleiche Passwort eingeben, das Sie zu Beginn für die Speicherung des Schlüssels gewählt haben.
+
+```bash
+# Start relayer
+$ chainbridge --config config.json --latest
+
+INFO[11-19|07:15:19] Starting ChainBridge...
+Enter password for key ./keys/.key:
+> [PASSWORD_TO_DECRYPT_KEY]
+INFO[11-19|07:15:25] Connecting to ethereum chain... chain=mumbai url=
+Enter password for key ./keys/.key:
+> [PASSWORD_TO_DECRYPT_KEY]
+INFO[11-19|07:15:31] Connecting to ethereum chain... chain=polygon-edge url=
+```
+
+Mit dem Start des Relayer beginnt er mit der Beobachtung neuer Blöcke in jeder Chain.
diff --git a/archive/edge/de-edge/additional-features/chainbridge/use-case-erc20-bridge.md b/archive/edge/de-edge/additional-features/chainbridge/use-case-erc20-bridge.md
new file mode 100644
index 0000000000..2ba7b4cab8
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/chainbridge/use-case-erc20-bridge.md
@@ -0,0 +1,255 @@
+---
+id: use-case-erc20-bridge
+title: Anwendungsfall – ERC20 Bridge
+description: Beispiel für die Überbrückung des ERC20-Vertrags
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+ - ERC20
+---
+
+Dieser Abschnitt soll Ihnen einen Überblick über die Einrichtung der ERC20 Bridge für einen praktischen Anwendungsfall geben.
+
+In diesem Leitfaden werden Sie das Mumbai Polygon PoS Testnet und die lokale Polygon Edge Chain verwenden. Vergewissern, dass JSON-RPC Endpoint für Mumbai und Polygon Edge in der lokalen Umgebung eingerichtet ist. Weitere Details unter [Lokale Einrichtung](/docs/edge/get-started/set-up-ibft-locally) oder [Cloud-Einrichtung](/docs/edge/get-started/set-up-ibft-on-the-cloud).
+
+## Szenario {#scenario}
+
+In diesem Szenario soll eine Bridge für den ERC20-Token eingerichtet werden, der bereits in der öffentlichen Chain (Polygon PoS) eingesetzt wurde, um den Nutzern im Normalfall einen kostengünstigen Transfer in eine private Chain (Polygon Edge) zu ermöglichen. In einem solchen Fall wurde die Gesamtversorgung des Tokens in der öffentlichen Chain definiert und nur die Menge der Token, die von der öffentlichen Chain in die private übertragen wurde, muss in der privaten Chain existieren. Daher müssen Sie den Sperr-/Freigabemodus in der öffentlichen Chain und den Ausscheide/Ausgabemodus in der privaten Chain verwenden.
+
+Wenn Token von der öffentlichen Chain in die private Chain gesendet werden, wird das Token im ERC20 Handler-Vertrag der öffentlichen Chain gesperrt und die gleiche Menge an Token wird in der privaten Chain ausgestellt, Andererseits wird das Token in der privaten Chain verbrannt und die gleiche Menge an Token wird vom ERC20-Handler-Vertrag in der öffentlichen Chain, im Falle der Übertragung von der privaten Chain in die öffentliche Chain, freigegeben.
+
+## Contracts {#contracts}
+
+Erklärungen mit einem einfachen ERC20-Vertrag anstelle des von ChainBridge entwickelten Vertrags. Für den Ausscheide/Ausgabemodus muss der ERC20-Vertrag zusätzlich zu den Methoden für ERC20 über`burnFrom` und`mint`Methoden verfügen:
+
+```sol
+pragma solidity ^0.8.14;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/AccessControl.sol";
+
+contract SampleToken is ERC20, AccessControl {
+ bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
+ bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+
+ constructor(string memory name, string memory symbol) ERC20(name, symbol) {
+ _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
+ _setupRole(MINTER_ROLE, _msgSender());
+ _setupRole(BURNER_ROLE, _msgSender());
+ }
+
+ function mint(address recipient, uint256 amount)
+ external
+ onlyRole(MINTER_ROLE)
+ {
+ _mint(recipient, amount);
+ }
+
+ function burnFrom(address owner, uint256 amount)
+ external
+ onlyRole(BURNER_ROLE)
+ {
+ _burn(owner, amount);
+ }
+}
+```
+
+Alle Codes und Skripte befinden sich im Beispiel Github Repo [Trapesys/chainbridge-example](https://github.com/Trapesys/chainbridge-example).
+
+## Schritt1: Bereitstellen von Bridge und ERC20-Handler-Verträgen {#step1-deploy-bridge-and-erc20-handler-contracts}
+
+Zunächst werden Sie Bridge und ERC20Handler-Verträge mit `cb-sol-cli`in den beiden Chains bereitstellen.
+
+```bash
+# Deploy Bridge and ERC20 contracts in Polygon PoS chain
+$ cb-sol-cli deploy --bridge --erc20Handler --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+```bash
+# Deploy Bridge and ERC20 contracts in Polygon Edge chain
+$ cb-sol-cli deploy --bridge --erc20Handler --chainId 100 \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+Sie erhalten Bridge und ERC20Handler-Vertragsadressen wie folgt:
+
+```bash
+Deploying contracts...
+✓ Bridge contract deployed
+✓ ERC20Handler contract deployed
+
+================================================================
+Url: https://rpc-mumbai.matic.today
+Deployer:
+Gas Limit: 8000000
+Gas Price: 20000000
+Deploy Cost: 0.00029065308
+
+Options
+=======
+Chain Id:
+Threshold:
+Relayers:
+Bridge Fee: 0
+Expiry: 100
+
+Contract Addresses
+================================================================
+Bridge:
+----------------------------------------------------------------
+Erc20 Handler:
+----------------------------------------------------------------
+Erc721 Handler: Not Deployed
+----------------------------------------------------------------
+Generic Handler: Not Deployed
+----------------------------------------------------------------
+Erc20: Not Deployed
+----------------------------------------------------------------
+Erc721: Not Deployed
+----------------------------------------------------------------
+Centrifuge Asset: Not Deployed
+----------------------------------------------------------------
+WETC: Not Deployed
+================================================================
+```
+
+## Schritt2: Bereitstellen Ihres ERC20-Vertrags {#step2-deploy-your-erc20-contract}
+
+Bereitstellung Ihres ERC20-Vertrags. Dieses Beispiel führt Sie durch das Hardhat-Projekt[Trapesys/chainbridge-example.](https://github.com/Trapesys/chainbridge-example)
+
+```bash
+$ git clone https://github.com/Trapesys/chainbridge-example.git
+$ cd chainbridge-example
+$ npm i
+```
+
+Neue `.env`Datei erstellen und folgende Werte einstellen.
+
+```.env
+PRIVATE_KEYS=0x...
+MUMBAI_JSONRPC_URL=https://rpc-mumbai.matic.today
+EDGE_JSONRPC_URL=http://localhost:10002
+```
+
+Als Nächstes wird der ERC20-Vertrag in den beiden Chains bereitgestellt.
+
+```bash
+$ npx hardhat deploy --contract erc20 --name --symbol --network mumbai
+```
+
+```bash
+$ npx hardhat deploy --contract erc20 --name --symbol --network edge
+```
+
+Nach erfolgreicher Bereitstellung erhalten Sie eine Vertragsadresse wie diese:
+
+```bash
+ERC20 contract has been deployed
+Address:
+Name:
+Symbol:
+```
+
+## Schritt3: Ressourcen-ID in Bridge registrieren {#step3-register-resource-id-in-bridge}
+
+Eine Ressourcen-ID anmelden, die Ressourcen in einer Cross-Chain-Umgebung zuordnet. In beiden Chains muss dieselbe Ressourcen-ID eingestellt werden.
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+## Schritt4: Ausscheide/Ausgabemodus in der ERC20-Bridge von Edge einstellen {#step4-set-mint-burn-mode-in-erc20-bridge-of-the-edge}
+
+Bridge erwartet, dass es in Polygon Edge im Ausscheide/Ausgabemodus arbeitet. Es wird also der Ausscheide/Ausgabemodus `cb-sol-cli`eingestellt.
+
+```bash
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC20_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC20_CONTRACT_ADDRESS]"
+```
+
+Der ERC20-Handler-Vertrag muss mit einer Ausgabe/Ausscheidefunktion ausgestattet werden.
+
+```bash
+$ npx hardhat grant --role mint --contract [ERC20_CONTRACT_ADDRESS] --address [ERC20_HANDLER_CONTRACT_ADDRESS] --network edge
+$ npx hardhat grant --role burn --contract [ERC20_CONTRACT_ADDRESS] --address [ERC20_HANDLER_CONTRACT_ADDRESS] --network edge
+```
+
+## Schritt5: Tokenausgabe {#step5-mint-token}
+
+In Mumbai werden neue ERC20-Token ausgegeben.
+
+```bash
+$ npx hardhat mint --type erc20 --contract [ERC20_CONTRACT_ADDRESS] --address [ACCOUNT_ADDRESS] --amount 100000000000000000000 --network mumbai # 100 Token
+```
+
+Nachdem die Transaktion erfolgreich ist, gibt das Konto den Token aus.
+
+## Schritt6: ERC20-Transfer starten {#step6-start-erc20-transfer}
+
+Vor diesem Schritt vergewissern, dass ein Relayer gestartet wurde. Überprüfen Sie [Setup](/docs/edge/additional-features/chainbridge/setup) für weitere Details.
+
+Während der Token-Übertragung von Mumbai zu Edge, hebt der ERC20-Handler-Vertrag in Mumbai Token von Ihrem Konto ab. Vor der Übertragung freigeben.
+
+```bash
+$ npx hardhat approve --type erc20 --contract [ERC20_CONTRACT_ADDRESS] --address [ERC20_HANDLER_CONTRACT_ADDRESS] --amount 10000000000000000000 --network mumbai # 10 Token
+```
+
+`cb-sol-cli`Schließlich beginnen Sie den Token-Transfer von Mumbai nach Edge mit
+
+```bash
+# Start transfer from Mumbai to Polygon Edge chain
+$ cb-sol-cli erc20 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --amount 10 \
+ # ChainID of Polygon Edge chain
+ --dest 100 \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]" \
+ --resourceId "0x000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00"
+```
+
+Nach erfolgreicher Einzahlung erhält der Relayer das Event und stimmt für den Vorschlag. Er führt eine Transaktion aus, um Token an das Empfängerkonto in der Polygon Edge-Chain zu senden, nachdem die erforderliche Anzahl von Stimmen abgegeben wurde.
+
+```bash
+INFO[11-19|08:15:58] Handling fungible deposit event chain=mumbai dest=100 nonce=1
+INFO[11-19|08:15:59] Attempting to resolve message chain=polygon-edge type=FungibleTransfer src=99 dst=100 nonce=1 rId=000000000000000000000000000000c76ebe4a02bbc34786d860b355f5a5ce00
+INFO[11-19|08:15:59] Creating erc20 proposal chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Watching for finalization event chain=polygon-edge src=99 nonce=1
+INFO[11-19|08:15:59] Submitted proposal vote chain=polygon-edge tx=0x67a97849951cdf0480e24a95f59adc65ae75da23d00b4ab22e917a2ad2fa940d src=99 depositNonce=1 gasPrice=1
+INFO[11-19|08:16:24] Submitted proposal execution chain=polygon-edge tx=0x63615a775a55fcb00676a40e3c9025eeefec94d0c32ee14548891b71f8d1aad1 src=99 dst=100 nonce=1 gasPrice=5
+```
+
+Sobald die Transaktion erfolgreich durchgeführt wurde, erhalten Sie Token in der Polygon Edge-Chain.
diff --git a/archive/edge/de-edge/additional-features/chainbridge/use-case-erc721-bridge.md b/archive/edge/de-edge/additional-features/chainbridge/use-case-erc721-bridge.md
new file mode 100644
index 0000000000..14ec1a3fd3
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/chainbridge/use-case-erc721-bridge.md
@@ -0,0 +1,308 @@
+---
+id: use-case-erc721-bridge
+title: Anwendungsfall – ERC721 Bridge
+description: Beispiel für einen Bridge ERC721 Contract
+keywords:
+ - docs
+ - polygon
+ - edge
+ - Bridge
+ - ERC721
+---
+
+In diesem Abschnitt wird die Einrichtung der ERC721 Bridge für einen praktischen Anwendungsfall beschrieben.
+
+In diesem Leitfaden werden Sie das Mumbai Polygon PoS Testnet und die lokale Polygon Edge Chain verwenden. Vergewissern, dass JSON-RPC Endpoint für Mumbai und Polygon Edge in der lokalen Umgebung eingerichtet ist. Weitere Details unter [Lokale Einrichtung](/docs/edge/get-started/set-up-ibft-locally) oder [Cloud-Einrichtung](/docs/edge/get-started/set-up-ibft-on-the-cloud).
+
+## Szenario {#scenario}
+
+In diesem Szenario geht es darum, eine Bridge für die ERC721 NFT einzurichten, die bereits in der öffentlichen Chain (Polygon PoS) eingesetzt wurde, um den Benutzern im Normalfall einen kostengünstigen Transfer in einer privaten Chain (Polygon Edge) zu ermöglichen. In einem solchen Fall wurden die ursprünglichen Metadaten in der öffentlichen Chain definiert und die einzigen NFTs, die von der öffentlichen Chain übertragen wurden, können in der privaten Chain existieren. Daher müssen Sie den Sperr-/Freigabemodus in der öffentlichen Chain und den Ausscheide/Ausgabemodus in der privaten Chain verwenden.
+
+Wenn NFTs von der öffentlichen Chain an die private Chain gesendet werden, wird die NFT in der öffentlichen Chain im ERC721 Handler-Contract gesperrt und dieselbe NFT wird in der privaten Chain ausgestellt. Bei einer Übertragung von der privaten Chain auf die öffentliche Chain wird die NFT in der privaten Chain verbrannt und dieselbe NFT wird aus dem ERC721 Handler-Contract in der öffentlichen Chain freigegeben.
+
+## Contracts {#contracts}
+
+Erläuterung mit einem einfachen ERC721-Contract anstelle des von ChainBridge entwickelten Contracts. Für den Ausscheide/Ausgabemodus muss der ERC721-Contract zusätzlich zu den in ERC721 definierten Methoden `mint`und f`burn`olgende Methoden haben:
+
+```sol
+pragma solidity ^0.8.14;
+
+import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/AccessControl.sol";
+import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol";
+import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
+
+contract SampleNFT is ERC721, ERC721Burnable, ERC721URIStorage, AccessControl {
+ bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
+ bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+
+ string public baseURI;
+
+ constructor(
+ string memory name,
+ string memory symbol,
+ string memory baseURI
+ ) ERC721(name, symbol) {
+ _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
+ _setupRole(MINTER_ROLE, _msgSender());
+ _setupRole(BURNER_ROLE, _msgSender());
+
+ _setBaseURI(baseURI);
+ }
+
+ function mint(
+ address recipient,
+ uint256 tokenID,
+ string memory data
+ ) public onlyRole(MINTER_ROLE) {
+ _mint(recipient, tokenID);
+ _setTokenURI(tokenID, data);
+ }
+
+ function burn(uint256 tokenID)
+ public
+ override(ERC721Burnable)
+ onlyRole(BURNER_ROLE)
+ {
+ _burn(tokenID);
+ }
+
+ function tokenURI(uint256 tokenId)
+ public
+ view
+ virtual
+ override(ERC721, ERC721URIStorage)
+ returns (string memory)
+ {
+ return super.tokenURI(tokenId);
+ }
+
+ function supportsInterface(bytes4 interfaceId)
+ public
+ view
+ override(ERC721, AccessControl)
+ returns (bool)
+ {
+ return super.supportsInterface(interfaceId);
+ }
+
+ function _burn(uint256 tokenId)
+ internal
+ virtual
+ override(ERC721, ERC721URIStorage)
+ {
+ super._burn(tokenId);
+ }
+
+ function _setBaseURI(string memory baseURI_) internal {
+ baseURI = baseURI_;
+ }
+
+ function _baseURI() internal view virtual override returns (string memory) {
+ return baseURI;
+ }
+}
+```
+
+Alle Codes und Skripte befinden sich im Beispiel Github Repo [Trapesys/chainbridge-example](https://github.com/Trapesys/chainbridge-example).
+
+## Schritt 1: Bridge und ERC721 Handler-Contracts bereitstellen {#step1-deploy-bridge-and-erc721-handler-contracts}
+
+Zunächst werden Sie Bridge und ERC721Handler-Contracts mit `cb-sol-cli`in den beiden Chains bereitstellen.
+
+```bash
+# Deploy Bridge and ERC721 contracts in Polygon PoS chain
+$ cb-sol-cli deploy --bridge --erc721Handler --chainId 99 \
+ --url https://rpc-mumbai.matic.today \
+ --gasPrice [GAS_PRICE] \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+```bash
+# Deploy Bridge and ERC721 contracts in Polygon Edge chain
+$ cb-sol-cli deploy --bridge --erc721Handler --chainId 100 \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --relayers [RELAYER_ACCOUNT_ADDRESS] \
+ --relayerThreshold 1
+```
+
+Sie erhalten Bridge- und ERC721Handler-Vertragsadressen wie diese:
+
+```bash
+Deploying contracts...
+✓ Bridge contract deployed
+✓ ERC721Handler contract deployed
+
+================================================================
+Url: https://rpc-mumbai.matic.today
+Deployer:
+Gas Limit: 8000000
+Gas Price: 20000000
+Deploy Cost: 0.00029065308
+
+Options
+=======
+Chain Id:
+Threshold:
+Relayers:
+Bridge Fee: 0
+Expiry: 100
+
+Contract Addresses
+================================================================
+Bridge:
+----------------------------------------------------------------
+Erc20 Handler: Not Deployed
+----------------------------------------------------------------
+Erc721 Handler:
+----------------------------------------------------------------
+Generic Handler: Not Deployed
+----------------------------------------------------------------
+Erc20: Not Deployed
+----------------------------------------------------------------
+Erc721: Not Deployed
+----------------------------------------------------------------
+Centrifuge Asset: Not Deployed
+----------------------------------------------------------------
+WETC: Not Deployed
+================================================================
+```
+
+## Schritt 2: ERC721-Contracts bereitstellen {#step2-deploy-your-erc721-contract}
+
+Ihren ERC721-Contract bereitstellen. Dieses Beispiel führt Sie durch das Hardhat-Projekt[Trapesys/chainbridge-example.](https://github.com/Trapesys/chainbridge-example)
+
+```bash
+$ git clone https://github.com/Trapesys/chainbridge-example.git
+$ cd chainbridge-example
+$ npm i
+```
+
+Eine D`.env`atei erstellen und folgende Werte einstellen.
+
+```.env
+PRIVATE_KEYS=0x...
+MUMBAI_JSONRPC_URL=https://rpc-mumbai.matic.today
+EDGE_JSONRPC_URL=http://localhost:10002
+```
+
+Als Nächstes werden Sie den ER721-Contract in den beiden Chains bereitstellen.
+
+```bash
+$ npx hardhat deploy --contract erc721 --name --symbol --uri --network mumbai
+```
+
+```bash
+$ npx hardhat deploy --contract erc721 --name --symbol --uri --network edge
+```
+
+Nach erfolgreicher Bereitstellung erhalten Sie eine Contractadresse wie diese:
+
+```bash
+ERC721 contract has been deployed
+Address:
+Name:
+Symbol:
+Base URI:
+```
+
+## Schritt 3: Ressourcen-ID in Bridge anmelden {#step3-register-resource-id-in-bridge}
+
+Sie melden eine Ressourcen-ID an, die Ressourcen in einer Cross-Chain-Umgebung zuordnet.
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ # Set Resource ID for ERC721
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+```bash
+$ cb-sol-cli bridge register-resource \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ # Set Resource ID for ERC721
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501" \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --targetContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+## Schritt4: Ausgabe/Ausscheidemodus in der ERC721-Bridge von Edge einstellen {#step4-set-mint-burn-mode-in-erc721-bridge-of-the-edge}
+
+Bridge erwartet, dass sie in Edge als Ausscheide/Ausgabefunktion arbeitet. Ausscheide/Ausgabemodus einstellen.
+
+```bash
+$ cb-sol-cli bridge set-burn \
+ --url http://localhost:10002 \
+ --privateKey [ADMIN_ACCOUNT_PRIVATE_KEY] \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --handler "[ERC721_HANDLER_CONTRACT_ADDRESS]" \
+ --tokenContract "[ERC721_CONTRACT_ADDRESS]"
+```
+
+Dem ERC721-Handler-Contract muss eine Ausgabe/Ausscheidefunktion eingeräumt werden.
+
+```bash
+$ npx hardhat grant --role mint --contract [ERC721_CONTRACT_ADDRESS] --address [ERC721_HANDLER_CONTRACT_ADDRESS] --network edge
+$ npx hardhat grant --role burn --contract [ERC721_CONTRACT_ADDRESS] --address [ERC721_HANDLER_CONTRACT_ADDRESS] --network edge
+```
+
+## Schritt5: NFT ausgeben {#step5-mint-nft}
+
+In der Mumbai Chain wird eine ERC721 NFT ausgegeben.
+
+```bash
+$ npx hardhat mint --type erc721 --contract [ERC721_CONTRACT_ADDRESS] --address [ACCOUNT_ADDRESS] --id 0x50 --data hello.json --network mumbai
+```
+
+Nach erfolgreichen Abwicklung gibt das Konto den NFT aus.
+
+## Schritt6: ERC721-Transfer starten {#step6-start-erc721-transfer}
+
+Vor diesem Schritt vergewissern, dass der Relayer gestartet wurde. [Setup](/docs/edge/additional-features/chainbridge/setup) für weitere Details prüfen.
+
+Während des NFT-Transfers von Mumbai nach Edge zieht der ERC721-Handler-Contract in Mumbai NFT von deinem Konto ab. Vor der Übertragung freigeben.
+
+```bash
+$ npx hardhat approve --type erc721 --contract [ERC721_CONTRACT_ADDRESS] --address [ERC721_HANDLER_CONTRACT_ADDRESS] --id 0x50 --network mumbai
+```
+
+Schließlich beginnst du den NFT-Transfer von Mumbai nach Edge.
+
+```bash
+# Start transfer from Mumbai to Polygon Edge chain
+$ cb-sol-cli erc721 deposit \
+ --url https://rpc-mumbai.matic.today \
+ --privateKey [PRIVATE_KEY] \
+ --gasPrice [GAS_PRICE] \
+ --id 0x50 \
+ # ChainID for Polygon Edge chain
+ --dest 100 \
+ --bridge "[BRIDGE_CONTRACT_ADDRESS]" \
+ --recipient "[RECIPIENT_ADDRESS_IN_POLYGON_EDGE_CHAIN]" \
+ --resourceId "0x000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501"
+```
+
+Nach erfolgreicher Einzahlung erhält der Relayer das Event und stimmt für den Vorschlag.
+Er führt eine Transaktion aus, um NFT an das Empfängerkonto in der Polygon Edge Chain zu senden, nachdem die erforderliche Anzahl von Stimmen abgegeben wurde.
+
+```bash
+INFO[11-19|09:07:50] Handling nonfungible deposit event chain=mumbai
+INFO[11-19|09:07:50] Attempting to resolve message chain=polygon-edge type=NonFungibleTransfer src=99 dst=100 nonce=2 rId=000000000000000000000000000000e389d61c11e5fe32ec1735b3cd38c69501
+INFO[11-19|09:07:50] Creating erc721 proposal chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Watching for finalization event chain=polygon-edge src=99 nonce=2
+INFO[11-19|09:07:50] Submitted proposal vote chain=polygon-edge tx=0x58a22d84a08269ad2e8d52d8dc038621f1a21109d11c7b6e0d32d5bf21ea8505 src=99 depositNonce=2 gasPrice=1
+INFO[11-19|09:08:15] Submitted proposal execution chain=polygon-edge tx=0x57419844881a07531e31667c609421662d94d21d0709e64fb728138309267e68 src=99 dst=100 nonce=2 gasPrice=3
+```
+
+Sobald die Transaktion erfolgreich ausgeführt wurde, erhalten Sie NFT in der Polygon Edge Chain.
diff --git a/archive/edge/de-edge/additional-features/permission-contract-deployment.md b/archive/edge/de-edge/additional-features/permission-contract-deployment.md
new file mode 100644
index 0000000000..e519167411
--- /dev/null
+++ b/archive/edge/de-edge/additional-features/permission-contract-deployment.md
@@ -0,0 +1,86 @@
+---
+id: permission-contract-deployment
+title: Berechtigung zur Bereitstellung von Smart-Contract
+description: So fügen Sie die Berechtigung zur Bereitstellung von Smart-Contracts hinzu.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - smart contract
+ - permission
+ - deployment
+---
+
+## Übersicht {#overview}
+
+In diesem Leitfaden wird detailliert beschrieben, wie Sie Adressen, die Smart-Contracts einsetzen können, auf die Whitelist setzt.
+Manchmal möchten die Betreiber eines Netzwerks verhindern, dass Benutzer Smart-Contracts einsetzen, die nichts mit dem Zweck des Netzwerks zu tun haben. Netzwerkbetreiber können:
+
+1. Adressen zur Whitelist für die Bereitstellung von Smart-Contract hinzufügen
+2. Adressen von der Whitelist für die Bereitstellung von Smart-Contract entfernen
+
+## Video-Präsentation {#video-presentation}
+
+[](https://www.youtube.com/watch?v=yPOkINpf7hg)
+
+## Wie verwendet man sie? {#how-to-use-it}
+
+
+Alle CLI-Befehle, die mit der Bereitstellung der Whitelist zusammenhängen, finden Sie auf der Seite [CLI-Befehle](/docs/edge/get-started/cli-commands#whitelist-commands).
+
+* `whitelist show`: Zeigt Informationen zur Whitelist
+* `whitelist deployment --add`: Fügt eine neue Adresse zur Whitelist für die Bereitstellung von Contracts hinzu
+* `whitelist deployment --remove`: Entfernt eine neue Adresse von der Whitelist für die Bereitstellung von Contracts
+
+#### Alle Adressen in der Bereitstellungs-Whitelist anzeigen {#show-all-addresses-in-the-deployment-whitelist}
+
+Es gibt 2 Möglichkeiten, Adressen von der Whitelist für die Bereitstellung zu finden.
+1. Sehen Sie sich `genesis.json`an, wo Whitelists gespeichert werden
+2. Ausführen von,`whitelist show` das Informationen für alle von Polygon Edge unterstützten Whitelists druckt
+
+```bash
+
+./polygon-edge whitelist show
+
+[WHITELISTS]
+
+Contract deployment whitelist : [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d],
+
+
+```
+
+#### Hinzufügen einer neuen Adresse zur Whitelist {#add-an-address-to-the-deployment-whitelist}
+
+Um eine neue Adresse zur Bereitstellungs-Whitelist hinzuzufügen, den CLI-Befehl `whitelist deployment --add [ADDRESS]`ausführen. Es gibt kein Limit für die Anzahl der Adressen in der Whitelist. Nur Adressen, die auf der Whitelist für die Bereitstellung von Contracts stehen, können diese bereitstellen. Wenn die Whitelist leer ist, kann jede Adresse die Bereitstellung durchführen
+
+```bash
+
+./polygon-edge whitelist deployment --add 0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d --add 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF
+
+
+[CONTRACT DEPLOYMENT WHITELIST]
+
+Added addresses: [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF],
+Contract deployment whitelist : [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF],
+
+
+
+```
+
+#### Entfernen einer Adresse von der Whitelist {#remove-an-address-from-the-deployment-whitelist}
+
+Um eine Adresse aus der Bereitstellungs-Whitelist zu entfernen, führe den CLI-Befehl `whitelist deployment --remove [ADDRESS]`aus. Nur Adressen, die auf der Whitelist für die Bereitstellung von Contracts stehen, können diese bereitstellen. Wenn die Whitelist leer ist, kann jede Adresse die Bereitstellung durchführen
+
+```bash
+
+./polygon-edge whitelist deployment --remove 0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d --remove 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF
+
+
+[CONTRACT DEPLOYMENT WHITELIST]
+
+Removed addresses: [0x5383Cb489FaCa92365Bb6f9f1FB40bD032E6365d 0x30ea4435167Ee91f9f874b5a894F3282A956C3FF],
+Contract deployment whitelist : [],
+
+
+
+```
diff --git a/archive/edge/de-edge/architecture/modules/blockchain.md b/archive/edge/de-edge/architecture/modules/blockchain.md
new file mode 100644
index 0000000000..b29a5080e7
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/blockchain.md
@@ -0,0 +1,156 @@
+---
+id: blockchain
+title: Blockchain
+description: Erläuterung für die Blockchain- und State Modules von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - blockchain
+ - state
+---
+
+## Übersicht {#overview}
+
+Eines der Hauptmodule des Polygon Edge sind **Blockchain** und** State**.
+
+**Blockchain** ist das Powerhouse, das sich mit Block-Neuorganisationen beschäftigt. Dies bedeutet, dass es mit all der Logik handelt, die passiert, wenn ein neuer Block in der Blockchain enthalten ist.
+
+**State** repräsentiert das *State transition* Objekt. Es behandelt, wie sich der Zustand ändert, wenn ein neuer Block enthalten ist.
**State** behandelt unter anderem:
+* Transaktionen ausführen
+* Ausführen des EVM
+* Merkleversuche ändern
+* Viel mehr, was in dem entsprechenden **State** Abschnitt abgedeckt ist 🙂
+
+Das Wichtigste ist, dass diese 2 Teile sehr miteinander verbunden sind, und sie arbeiten eng zusammen, damit der Client funktioniert.
Wenn beispielsweise die **Blockchain** einen neuen Block erhält (und keine Reorganisation stattgefunden hat), ruft es den **State** dazu auf, eine State-Übertragung durchzuführen.
+
+**Blockchain** behandelt auch einige Dinge im Zusammenhang mit Konsens (Bsp. *ist dieses ethHash korrekt?* i*st dieser PoW korrekt?)*.
In einem Satz **ist es der Hauptkern von Logik, durch den alle Blöcke enthalten sind**.
+
+## *WriteBlocks*
+
+Eines der wichtigsten Teile im Zusammenhang mit der **Blockchain** Ebene ist die *WriteBlocks* Methode:
+
+````go title="blockchain/blockchain.go"
+// WriteBlocks writes a batch of blocks
+func (b *Blockchain) WriteBlocks(blocks []*types.Block) error {
+ if len(blocks) == 0 {
+ return fmt.Errorf("no headers found to insert")
+ }
+
+ parent, ok := b.readHeader(blocks[0].ParentHash())
+ if !ok {
+ return fmt.Errorf("parent of %s (%d) not found: %s", blocks[0].Hash().String(), blocks[0].Number(), blocks[0].ParentHash())
+ }
+
+ // validate chain
+ for i := 0; i < len(blocks); i++ {
+ block := blocks[i]
+
+ if block.Number()-1 != parent.Number {
+ return fmt.Errorf("number sequence not correct at %d, %d and %d", i, block.Number(), parent.Number)
+ }
+ if block.ParentHash() != parent.Hash {
+ return fmt.Errorf("parent hash not correct")
+ }
+ if err := b.consensus.VerifyHeader(parent, block.Header, false, true); err != nil {
+ return fmt.Errorf("failed to verify the header: %v", err)
+ }
+
+ // verify body data
+ if hash := buildroot.CalculateUncleRoot(block.Uncles); hash != block.Header.Sha3Uncles {
+ return fmt.Errorf("uncle root hash mismatch: have %s, want %s", hash, block.Header.Sha3Uncles)
+ }
+
+ if hash := buildroot.CalculateTransactionsRoot(block.Transactions); hash != block.Header.TxRoot {
+ return fmt.Errorf("transaction root hash mismatch: have %s, want %s", hash, block.Header.TxRoot)
+ }
+ parent = block.Header
+ }
+
+ // Write chain
+ for indx, block := range blocks {
+ header := block.Header
+
+ body := block.Body()
+ if err := b.db.WriteBody(header.Hash, block.Body()); err != nil {
+ return err
+ }
+ b.bodiesCache.Add(header.Hash, body)
+
+ // Verify uncles. It requires to have the bodies on memory
+ if err := b.VerifyUncles(block); err != nil {
+ return err
+ }
+ // Process and validate the block
+ if err := b.processBlock(blocks[indx]); err != nil {
+ return err
+ }
+
+ // Write the header to the chain
+ evnt := &Event{}
+ if err := b.writeHeaderImpl(evnt, header); err != nil {
+ return err
+ }
+ b.dispatchEvent(evnt)
+
+ // Update the average gas price
+ b.UpdateGasPriceAvg(new(big.Int).SetUint64(header.GasUsed))
+ }
+
+ return nil
+}
+````
+Die *WriteBlocks* Methode ist der Einstiegspunkt, um Blöcke in die Blockchain zu schreiben. Als Parameter nimmt es eine Reihe von Blöcken
auf. Zunächst werden die Blöcke validiert. Danach werden sie in die Chain geschrieben.
+
+Die tatsächliche *State-Transition* wird durchgeführt, indem die *processBlock* Methode innerhalb von *WriteBlocks* aufgerufen wird.
+
+Es ist erwähnenswert, dass, weil es der Einstiegspunkt für das Schreiben von Blöcken auf die Blockchain ist, andere Module (wie der **Sealer**) diese Methode verwenden.
+
+## Blockchain-Subscriptions {#blockchain-subscriptions}
+
+Es muss eine Möglichkeit geben, blockchain-bezogene Änderungen zu überwachen.
Hier kommen **Subscriptions** ins Spiel.
+
+Subscriptions sind eine Möglichkeit, Blockchain-Event-Streams zu erschließen und sofort aussagekräftige Daten zu erhalten.
+
+````go title="blockchain/subscription.go"
+type Subscription interface {
+ // Returns a Blockchain Event channel
+ GetEventCh() chan *Event
+
+ // Returns the latest event (blocking)
+ GetEvent() *Event
+
+ // Closes the subscription
+ Close()
+}
+````
+
+Die **Blockchain-Events** enthalten Informationen über alle Änderungen an der tatsächlichen Chain. Dazu gehören Reorganisationen, sowie neue Blöcke:
+
+````go title="blockchain/subscription.go"
+type Event struct {
+ // Old chain removed if there was a reorg
+ OldChain []*types.Header
+
+ // New part of the chain (or a fork)
+ NewChain []*types.Header
+
+ // Difficulty is the new difficulty created with this event
+ Difficulty *big.Int
+
+ // Type is the type of event
+ Type EventType
+
+ // Source is the source that generated the blocks for the event
+ // right now it can be either the Sealer or the Syncer. TODO
+ Source string
+}
+````
+
+:::tip Refresher
+Erinnern Sie sich, als wir den ***monitor*** in den [CLI Commands](/docs/edge/get-started/cli-commands) erwähnt haben?
+
+Die Blockchain Events sind die ursprünglichen Ereignisse, die in Polygon Edge passieren, und sie werden später für eine einfache Übertragung einem Nachrichtenformat im Protokollspeicher zugeordnet.
+:::
\ No newline at end of file
diff --git a/archive/edge/de-edge/architecture/modules/consensus.md b/archive/edge/de-edge/architecture/modules/consensus.md
new file mode 100644
index 0000000000..3e479c81c5
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/consensus.md
@@ -0,0 +1,493 @@
+---
+id: consensus
+title: Konsens
+description: Erläuterung für das Konsensmodul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - consensus
+ - ibft
+---
+
+## Übersicht {#overview}
+
+Das **Konsens** Modul bietet eine Schnittstelle für Konsensmechanismen.
+
+Derzeit stehen folgende Konsensmaschinen zur Verfügung:
+* **IBFT PoA**
+* **IBFT PoS**
+
+Polygon Edge möchte einen Zustand der Modularität und der Steckbarkeit beibehalten.
Deshalb wurde die Kernkonsenslogik wegabstrahiert, sodass neue Konsensmechanismen darauf aufgebaut werden können, ohne Kompromittierung von Usability und Benutzerfreundlichkeit.
+
+## Konsens-Schnittstelle {#consensus-interface}
+
+````go title="consensus/consensus.go"
+// Consensus is the interface for consensus
+type Consensus interface {
+ // VerifyHeader verifies the header is correct
+ VerifyHeader(parent, header *types.Header) error
+
+ // Start starts the consensus
+ Start() error
+
+ // Close closes the connection
+ Close() error
+}
+````
+
+Die ***Konsens*** Schnittstelle ist der Kern der erwähnten Abstraktion.
+* Die **VerifyHeader** Methode stellt eine Helper-Funktion dar, die die Konsensebene der **Blockchain** Ebene aussetzt Es besteht, um Header-Verifizierung zu verarbeiten
+* Die **Start**-Methode startet einfach den Konsensprozess und alles, was damit verbunden ist. Dazu gehört die Synchronisierung, Versieglung, alles, was getan werden muss
+* Die **Close** Methode schließt die Konsensverbindung
+
+## Konsens-Konfiguration {#consensus-configuration}
+
+````go title="consensus/consensus.go"
+// Config is the configuration for the consensus
+type Config struct {
+ // Logger to be used by the backend
+ Logger *log.Logger
+
+ // Params are the params of the chain and the consensus
+ Params *chain.Params
+
+ // Specific configuration parameters for the backend
+ Config map[string]interface{}
+
+ // Path for the consensus protocol to store information
+ Path string
+}
+````
+
+Es kann vorkommen, dass Sie einen benutzerdefinierten Speicherort für das Konsensprotokoll angeben möchten, um Daten zu speichern, oder vielleicht eine benutzerdefinierte Key-Value Karte, bei der Sie möchten, dass der Konsensmechanismus verwendet wird. Dies kann durch die ***Config*** struct erreicht werden, die gelesen wird, wenn eine neue Konsens-Instance erstellt wird.
+
+## IBFT {#ibft}
+
+### ExtraData {#extradata}
+
+Das Blockchain-Header-Objekt hat unter anderem ein Feld mit dem Namen **ExtraData**.
+
+IBFT verwendet dieses zusätzliche Feld, um operative Informationen über den Block zu speichern, und beantwortet Fragen wie:
+* "Wer hat diesen Block unterzeichnet?"
+* "Wer sind die Validatoren für diesen Block?"
+
+Diese zusätzlichen Felder für IBFT sind wie folgt definiert:
+````go title="consensus/ibft/extra.go"
+type IstanbulExtra struct {
+ Validators []types.Address
+ Seal []byte
+ CommittedSeal [][]byte
+}
+````
+
+### Signieren von Daten {#signing-data}
+
+Damit der Knoten Informationen in IBFT unterzeichnet, nutzt er die *signHash* Methode:
+````go title="consensus/ibft/sign.go"
+func signHash(h *types.Header) ([]byte, error) {
+ //hash := istambulHeaderHash(h)
+ //return hash.Bytes(), nil
+
+ h = h.Copy() // make a copy since we update the extra field
+
+ arena := fastrlp.DefaultArenaPool.Get()
+ defer fastrlp.DefaultArenaPool.Put(arena)
+
+ // when hashign the block for signing we have to remove from
+ // the extra field the seal and commitedseal items
+ extra, err := getIbftExtra(h)
+ if err != nil {
+ return nil, err
+ }
+ putIbftExtraValidators(h, extra.Validators)
+
+ vv := arena.NewArray()
+ vv.Set(arena.NewBytes(h.ParentHash.Bytes()))
+ vv.Set(arena.NewBytes(h.Sha3Uncles.Bytes()))
+ vv.Set(arena.NewBytes(h.Miner.Bytes()))
+ vv.Set(arena.NewBytes(h.StateRoot.Bytes()))
+ vv.Set(arena.NewBytes(h.TxRoot.Bytes()))
+ vv.Set(arena.NewBytes(h.ReceiptsRoot.Bytes()))
+ vv.Set(arena.NewBytes(h.LogsBloom[:]))
+ vv.Set(arena.NewUint(h.Difficulty))
+ vv.Set(arena.NewUint(h.Number))
+ vv.Set(arena.NewUint(h.GasLimit))
+ vv.Set(arena.NewUint(h.GasUsed))
+ vv.Set(arena.NewUint(h.Timestamp))
+ vv.Set(arena.NewCopyBytes(h.ExtraData))
+
+ buf := keccak.Keccak256Rlp(nil, vv)
+ return buf, nil
+}
+````
+Eine weitere bemerkenswerte Methode ist die *VerifyCommittedFields* Methode, die überprüft, dass die eingesetzten Siegel von gültigen Validatoren stammen:
+````go title="consensus/ibft/sign.go
+func verifyCommitedFields(snap *Snapshot, header *types.Header) error {
+ extra, err := getIbftExtra(header)
+ if err != nil {
+ return err
+ }
+ if len(extra.CommittedSeal) == 0 {
+ return fmt.Errorf("empty committed seals")
+ }
+
+ // get the message that needs to be signed
+ signMsg, err := signHash(header)
+ if err != nil {
+ return err
+ }
+ signMsg = commitMsg(signMsg)
+
+ visited := map[types.Address]struct{}{}
+ for _, seal := range extra.CommittedSeal {
+ addr, err := ecrecoverImpl(seal, signMsg)
+ if err != nil {
+ return err
+ }
+
+ if _, ok := visited[addr]; ok {
+ return fmt.Errorf("repeated seal")
+ } else {
+ if !snap.Set.Includes(addr) {
+ return fmt.Errorf("signed by non validator")
+ }
+ visited[addr] = struct{}{}
+ }
+ }
+
+ validSeals := len(visited)
+ if validSeals <= 2*snap.Set.MinFaultyNodes() {
+ return fmt.Errorf("not enough seals to seal block")
+ }
+ return nil
+}
+````
+
+### Snapshots {#snapshots}
+
+Snapshots, wie der Name schon sagt, gibt es, um einen *Snapshot* oder den *Zustand* eines Systems in jeder Blockhöhe (Nummer) bereitzustellen.
+
+Snapshots enthalten eine Reihe von Knoten, die Validatoren sind, sowie Abstimminformationen (Validatoren können für andere Validatoren stimmen). Validators enthalten Abstimminformationen im **Miner** Header und ändern den Wert der **nonce**:
+* Nonce ist **alle 1s**, wenn der Knoten einen Validator entfernen möchte
+* Nonce ist **alle 0s**, wenn der Knoten einen Validator hinzufügen möchte
+
+Snapshots werden mit der ***processHeaders** *Methode berechnet:
+
+````go title="consensus/ibft/snapshot.go"
+func (i *Ibft) processHeaders(headers []*types.Header) error {
+ if len(headers) == 0 {
+ return nil
+ }
+
+ parentSnap, err := i.getSnapshot(headers[0].Number - 1)
+ if err != nil {
+ return err
+ }
+ snap := parentSnap.Copy()
+
+ saveSnap := func(h *types.Header) error {
+ if snap.Equal(parentSnap) {
+ return nil
+ }
+
+ snap.Number = h.Number
+ snap.Hash = h.Hash.String()
+
+ i.store.add(snap)
+
+ parentSnap = snap
+ snap = parentSnap.Copy()
+ return nil
+ }
+
+ for _, h := range headers {
+ number := h.Number
+
+ validator, err := ecrecoverFromHeader(h)
+ if err != nil {
+ return err
+ }
+ if !snap.Set.Includes(validator) {
+ return fmt.Errorf("unauthroized validator")
+ }
+
+ if number%i.epochSize == 0 {
+ // during a checkpoint block, we reset the voles
+ // and there cannot be any proposals
+ snap.Votes = nil
+ if err := saveSnap(h); err != nil {
+ return err
+ }
+
+ // remove in-memory snaphots from two epochs before this one
+ epoch := int(number/i.epochSize) - 2
+ if epoch > 0 {
+ purgeBlock := uint64(epoch) * i.epochSize
+ i.store.deleteLower(purgeBlock)
+ }
+ continue
+ }
+
+ // if we have a miner address, this might be a vote
+ if h.Miner == types.ZeroAddress {
+ continue
+ }
+
+ // the nonce selects the action
+ var authorize bool
+ if h.Nonce == nonceAuthVote {
+ authorize = true
+ } else if h.Nonce == nonceDropVote {
+ authorize = false
+ } else {
+ return fmt.Errorf("incorrect vote nonce")
+ }
+
+ // validate the vote
+ if authorize {
+ // we can only authorize if they are not on the validators list
+ if snap.Set.Includes(h.Miner) {
+ continue
+ }
+ } else {
+ // we can only remove if they are part of the validators list
+ if !snap.Set.Includes(h.Miner) {
+ continue
+ }
+ }
+
+ count := snap.Count(func(v *Vote) bool {
+ return v.Validator == validator && v.Address == h.Miner
+ })
+ if count > 1 {
+ // there can only be one vote per validator per address
+ return fmt.Errorf("more than one proposal per validator per address found")
+ }
+ if count == 0 {
+ // cast the new vote since there is no one yet
+ snap.Votes = append(snap.Votes, &Vote{
+ Validator: validator,
+ Address: h.Miner,
+ Authorize: authorize,
+ })
+ }
+
+ // check the tally for the proposed validator
+ tally := snap.Count(func(v *Vote) bool {
+ return v.Address == h.Miner
+ })
+
+ if tally > snap.Set.Len()/2 {
+ if authorize {
+ // add the proposal to the validator list
+ snap.Set.Add(h.Miner)
+ } else {
+ // remove the proposal from the validators list
+ snap.Set.Del(h.Miner)
+
+ // remove any votes casted by the removed validator
+ snap.RemoveVotes(func(v *Vote) bool {
+ return v.Validator == h.Miner
+ })
+ }
+
+ // remove all the votes that promoted this validator
+ snap.RemoveVotes(func(v *Vote) bool {
+ return v.Address == h.Miner
+ })
+ }
+
+ if err := saveSnap(h); err != nil {
+ return nil
+ }
+ }
+
+ // update the metadata
+ i.store.updateLastBlock(headers[len(headers)-1].Number)
+ return nil
+}
+````
+
+Diese Methode wird normalerweise mit 1 Header aufgerufen, aber der Flow ist auch mit mehreren Headern gleich.
Für jeden passed-in Header muss IBFT überprüfen, ob der proposer des Headers der Validator ist. Dies kann leicht gemacht werden durch Erfassung des neuesten Snapshots, und prüfen, ob Knoten im Validator eingerichtet ist,
+
+Als Nächstes wird die Nonce geprüft. Das Votum wird aufgenommen und ausgewertet – und wenn es genügend Stimmen gibt, wird ein Knoten aus dem Validierungssatz hinzugefügt/entfernt, woraufhin der neue Schnappschuss gespeichert wird.
+
+#### Snapshot-Store {#snapshot-store}
+
+Der Snapshot Service verwaltet und aktualisiert ein Objekt namens **snapshotStore**, die die Liste aller verfügbaren Snapshots speichert. Mit ihm kann der Dienst schnell herausfinden, welcher Snapshot mit welcher Blockhöhe verknüpft ist.
+````go title="consensus/ibft/snapshot.go"
+type snapshotStore struct {
+ lastNumber uint64
+ lock sync.Mutex
+ list snapshotSortedList
+}
+````
+
+### IBFT-Startup {#ibft-startup}
+
+Um IBFT zu starten, muss der Polygon Edge zuerst den IBFT Transport einrichten:
+````go title="consensus/ibft/ibft.go"
+func (i *Ibft) setupTransport() error {
+ // use a gossip protocol
+ topic, err := i.network.NewTopic(ibftProto, &proto.MessageReq{})
+ if err != nil {
+ return err
+ }
+
+ err = topic.Subscribe(func(obj interface{}) {
+ msg := obj.(*proto.MessageReq)
+
+ if !i.isSealing() {
+ // if we are not sealing we do not care about the messages
+ // but we need to subscribe to propagate the messages
+ return
+ }
+
+ // decode sender
+ if err := validateMsg(msg); err != nil {
+ i.logger.Error("failed to validate msg", "err", err)
+ return
+ }
+
+ if msg.From == i.validatorKeyAddr.String() {
+ // we are the sender, skip this message since we already
+ // relay our own messages internally.
+ return
+ }
+ i.pushMessage(msg)
+ })
+ if err != nil {
+ return err
+ }
+
+ i.transport = &gossipTransport{topic: topic}
+ return nil
+}
+````
+
+Es erstellt im Wesentlichen ein neues Thema mit IBFT Proto, mit einer neuen Proto buff Nachricht.
Die Nachrichten sollen von Validatoren verwendet werden. Polygon Edge meldet sich dann für das Thema und behandelt Nachrichten entsprechend.
+
+#### MessageReq {#messagereq}
+
+Die Nachricht wurde von Validatoren ausgetauscht:
+````go title="consensus/ibft/proto/ibft.proto"
+message MessageReq {
+ // type is the type of the message
+ Type type = 1;
+
+ // from is the address of the sender
+ string from = 2;
+
+ // seal is the committed seal if message is commit
+ string seal = 3;
+
+ // signature is the crypto signature of the message
+ string signature = 4;
+
+ // view is the view assigned to the message
+ View view = 5;
+
+ // hash of the locked block
+ string digest = 6;
+
+ // proposal is the rlp encoded block in preprepare messages
+ google.protobuf.Any proposal = 7;
+
+ enum Type {
+ Preprepare = 0;
+ Prepare = 1;
+ Commit = 2;
+ RoundChange = 3;
+ }
+}
+
+message View {
+ uint64 round = 1;
+ uint64 sequence = 2;
+}
+````
+
+Das Feld **Ansicht** im **MessageReq** repräsentiert die aktuelle Knotenposition innerhalb der Chain. Es hat ein *round* und ein *sequence* Attribut.
+* **round** steht für die Proposerrunde für die Höhe
+* **sequence** repräsentiert die Höhe der Blockchain
+
+Die *msgQueue* in der IBFT Implementierung hat den Zweck, message-Anforderungen zu speichern. Es ordnet Nachrichten durch die *Ansicht* (zuerst nach der sequence, dann nach der round). Die IBFT Implementierung besitzt auch verschiedene Warteschlangen für verschiedene Systemzustände.
+
+### IBFT-States {#ibft-states}
+
+Nachdem der Konsensmechanismus mit der **Start**-Methode gestartet wird, läuft er in eine unendliche Schleife, die eine State Machine simuliert:
+````go title="consensus/ibft/ibft.go"
+func (i *Ibft) start() {
+ // consensus always starts in SyncState mode in case it needs
+ // to sync with other nodes.
+ i.setState(SyncState)
+
+ header := i.blockchain.Header()
+ i.logger.Debug("current sequence", "sequence", header.Number+1)
+
+ for {
+ select {
+ case <-i.closeCh:
+ return
+ default:
+ }
+
+ i.runCycle()
+ }
+}
+
+func (i *Ibft) runCycle() {
+ if i.state.view != nil {
+ i.logger.Debug(
+ "cycle",
+ "state",
+ i.getState(),
+ "sequence",
+ i.state.view.Sequence,
+ "round",
+ i.state.view.Round,
+ )
+ }
+
+ switch i.getState() {
+ case AcceptState:
+ i.runAcceptState()
+
+ case ValidateState:
+ i.runValidateState()
+
+ case RoundChangeState:
+ i.runRoundChangeState()
+
+ case SyncState:
+ i.runSyncState()
+ }
+}
+````
+
+#### SyncState {#syncstate}
+
+Alle Knoten beginnen zunächst im **Sync** State.
+
+Dies liegt daran, dass frische Daten aus der Blockchain abgerufen werden müssen. Der Client muss herausfinden, ob es der Validator ist, den aktuellen snapshot finden. Dieser State löst alle ausstehenden Blöcke auf.
+
+Nachdem der Sync beendet wurde und der Client bestimmt, dass er ein Validator ist, muss er an **AcceptState** übertragen. Wenn der Client **kein** Validator ist, wird er weiterhin synchronisiert und bleibt in **SyncState**
+
+#### AcceptState {#acceptstate}
+
+Der **Accept** State überprüfe immer den snapshot und den Validatorsatz. Wenn der aktuelle Knoten nicht im Validatorsatz ist, bewegt es sich zurück in den **Sync** State.
+
+Andererseits, wenn der Knoten ein Validator **ist**, berechnet er den Proposer. Wenn es sich herausstellt, dass der aktuelle Knoten der proposer ist, baut es einen Block und sendet preprepare und bereitet dann Nachrichten vor.
+
+* Preprepare von Nachrichten – Nachrichten, die von Proposers an Validatoren gesendet werden, um sie über das proposal zu informieren
+* Prepare von Nachrichten – Nachrichten, in denen Validatoren auf einen proposal übereinstimmen. Alle Knoten empfangen alle prepare Nachrichten
+* Commit Nachrichten – Nachrichten, die Commit Informationen für das proposal enthalten
+
+Wenn der aktuelle Knoten **kein** Validator ist, verwendet er die *getNextMessage* Methode, um eine Nachricht aus der zuvor gezeigten Warteschlange zu
lesen. Er wartet auf die preprepare Nachrichten. Sobald es bestätigt wird, dass alles korrekt ist, verschiebt sich der Knoten in den **Validate** State.
+
+#### ValidateState {#validatestate}
+
+Der **Validate** State ist eher einfach - alle Knoten in diesem State lesen Nachrichten und fügen sie zu ihrem lokalen Snapshot State hinzu.
diff --git a/archive/edge/de-edge/architecture/modules/json-rpc.md b/archive/edge/de-edge/architecture/modules/json-rpc.md
new file mode 100644
index 0000000000..e1a8b43490
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/json-rpc.md
@@ -0,0 +1,175 @@
+---
+id: json-rpc
+title: JSON RPC
+description: Erläuterung für das JSON-RPC-Modul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - json-rpc
+ - endpoints
+---
+
+## Übersicht {#overview}
+
+Das **JSON RPC** Modul implementiert die **JSON RPC API-Ebene**, was dApp Entwickler verwenden, um mit der Blockchain zu interagieren.
+
+Es enthält Unterstützung für normale **[json-rpc Endpoints](https://eth.wiki/json-rpc/API)**, sowie für Websocket Endpoints.
+
+## Blockchain-Schnittstelle {#blockchain-interface}
+
+Das Polygon Edge verwendet die ***Blockchain Schnittstelle***, um alle Methoden zu definieren, die das JSON-RPC-Modul verwenden muss, um seine Endpoints bereitzustellen.
+
+Die Blockchain-Schnittstelle wird vom **[Minimal](/docs/edge/architecture/modules/minimal)** Server implementiert. Es ist die Basisimplementierung die in die JSON-RPC-Ebene übergeben wird.
+
+````go title="jsonrpc/blockchain.go"
+type blockchainInterface interface {
+ // Header returns the current header of the chain (genesis if empty)
+ Header() *types.Header
+
+ // GetReceiptsByHash returns the receipts for a hash
+ GetReceiptsByHash(hash types.Hash) ([]*types.Receipt, error)
+
+ // Subscribe subscribes for chain head events
+ SubscribeEvents() blockchain.Subscription
+
+ // GetHeaderByNumber returns the header by number
+ GetHeaderByNumber(block uint64) (*types.Header, bool)
+
+ // GetAvgGasPrice returns the average gas price
+ GetAvgGasPrice() *big.Int
+
+ // AddTx adds a new transaction to the tx pool
+ AddTx(tx *types.Transaction) error
+
+ // State returns a reference to the state
+ State() state.State
+
+ // BeginTxn starts a transition object
+ BeginTxn(parentRoot types.Hash, header *types.Header) (*state.Transition, error)
+
+ // GetBlockByHash gets a block using the provided hash
+ GetBlockByHash(hash types.Hash, full bool) (*types.Block, bool)
+
+ // ApplyTxn applies a transaction object to the blockchain
+ ApplyTxn(header *types.Header, txn *types.Transaction) ([]byte, bool, error)
+
+ stateHelperInterface
+}
+````
+
+## ETH Endpoints {#eth-endpoints}
+
+Alle Standard JSON-RPC-Endpoints sind implementiert in:
+
+````bash
+jsonrpc/eth_endpoint.go
+````
+
+## Filter-Manager {#filter-manager}
+
+Der **Filter Manager** ist ein Service, der neben dem JSON-RPC-Server läuft.
+
+Es bietet Unterstützung für das Filtern von Blöcken auf der
Blockchain. Insbesondere enthält er sowohl ein **Protokoll** als auch einen **Block** Level Filter.
+
+Der Filter Manager stützt sich stark auf Subscription Events, die im [Blockchain](blockchain#blockchain-subscriptions) Abschnitt
+
+````go title="jsonrpc/filter_manager.go"
+type Filter struct {
+ id string
+
+ // block filter
+ block *headElem
+
+ // log cache
+ logs []*Log
+
+ // log filter
+ logFilter *LogFilter
+
+ // index of the filter in the timer array
+ index int
+
+ // next time to timeout
+ timestamp time.Time
+
+ // websocket connection
+ ws wsConn
+}
+
+
+type FilterManager struct {
+ logger hclog.Logger
+
+ store blockchainInterface
+ closeCh chan struct{}
+
+ subscription blockchain.Subscription
+
+ filters map[string]*Filter
+ lock sync.Mutex
+
+ updateCh chan struct{}
+ timer timeHeapImpl
+ timeout time.Duration
+
+ blockStream *blockStream
+}
+
+````
+
+Filter Manager Events in der *Run* Methode ausgeliefert werden:
+
+````go title="jsonrpc/filter_manager.go"
+func (f *FilterManager) Run() {
+
+ // watch for new events in the blockchain
+ watchCh := make(chan *blockchain.Event)
+ go func() {
+ for {
+ evnt := f.subscription.GetEvent()
+ if evnt == nil {
+ return
+ }
+ watchCh <- evnt
+ }
+ }()
+
+ var timeoutCh <-chan time.Time
+ for {
+ // check for the next filter to be removed
+ filter := f.nextTimeoutFilter()
+ if filter == nil {
+ timeoutCh = nil
+ } else {
+ timeoutCh = time.After(filter.timestamp.Sub(time.Now()))
+ }
+
+ select {
+ case evnt := <-watchCh:
+ // new blockchain event
+ if err := f.dispatchEvent(evnt); err != nil {
+ f.logger.Error("failed to dispatch event", "err", err)
+ }
+
+ case <-timeoutCh:
+ // timeout for filter
+ if !f.Uninstall(filter.id) {
+ f.logger.Error("failed to uninstall filter", "id", filter.id)
+ }
+
+ case <-f.updateCh:
+ // there is a new filter, reset the loop to start the timeout timer
+
+ case <-f.closeCh:
+ // stop the filter manager
+ return
+ }
+ }
+}
+````
+
+## 📜 Ressourcen {#resources}
+* **[Ethereum JSON-RPC](https://eth.wiki/json-rpc/API)**
diff --git a/archive/edge/de-edge/architecture/modules/minimal.md b/archive/edge/de-edge/architecture/modules/minimal.md
new file mode 100644
index 0000000000..4146a8b4be
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/minimal.md
@@ -0,0 +1,119 @@
+---
+id: minimal
+title: Minimal
+description: Erläuterung für das Minimalmodul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - minimal
+---
+
+## Übersicht {#overview}
+
+Wie bereits erwähnt, besteht Polygon Edge aus einer Reihe verschiedener Module, die alle miteinander verbunden sind.
+Die **Blockchain** ist mit dem **State** verbunden, oder zum Beispiel mit der **Synchronisation**, die neue Blöcke in die **Blockchain** leitet.
+
+**Minimal** ist der Grundstein für diese miteinander verbundenen Module.
+Es fungiert als zentraler Knotenpunkt für alle Dienste, die auf der Polygon Edge ausgeführt werden.
+
+## Start-up Magic {#startup-magic}
+
+Minimal ist unter anderem verantwortlich für:
+* Datenverzeichnisse einrichten
+* Erstellen eines Keystore für die libp2p-Kommunikation
+* Speicherplatz erstellen
+* Konsens einrichten
+* Einrichten des Blockchain-Objekts mit GRPC, JSON RPC und Synchronisierung
+
+````go title="minimal/server.go"
+func NewServer(logger hclog.Logger, config *Config) (*Server, error) {
+ m := &Server{
+ logger: logger,
+ config: config,
+ chain: config.Chain,
+ grpcServer: grpc.NewServer(),
+ }
+
+ m.logger.Info("Data dir", "path", config.DataDir)
+
+ // Generate all the paths in the dataDir
+ if err := setupDataDir(config.DataDir, dirPaths); err != nil {
+ return nil, fmt.Errorf("failed to create data directories: %v", err)
+ }
+
+ // Get the private key for the node
+ keystore := keystore.NewLocalKeystore(filepath.Join(config.DataDir, "keystore"))
+ key, err := keystore.Get()
+ if err != nil {
+ return nil, fmt.Errorf("failed to read private key: %v", err)
+ }
+ m.key = key
+
+ storage, err := leveldb.NewLevelDBStorage(filepath.Join(config.DataDir, "blockchain"), logger)
+ if err != nil {
+ return nil, err
+ }
+ m.storage = storage
+
+ // Setup consensus
+ if err := m.setupConsensus(); err != nil {
+ return nil, err
+ }
+
+ stateStorage, err := itrie.NewLevelDBStorage(filepath.Join(m.config.DataDir, "trie"), logger)
+ if err != nil {
+ return nil, err
+ }
+
+ st := itrie.NewState(stateStorage)
+ m.state = st
+
+ executor := state.NewExecutor(config.Chain.Params, st)
+ executor.SetRuntime(precompiled.NewPrecompiled())
+ executor.SetRuntime(evm.NewEVM())
+
+ // Blockchain object
+ m.blockchain, err = blockchain.NewBlockchain(logger, storage, config.Chain, m.consensus, executor)
+ if err != nil {
+ return nil, err
+ }
+
+ executor.GetHash = m.blockchain.GetHashHelper
+
+ // Setup sealer
+ sealerConfig := &sealer.Config{
+ Coinbase: crypto.PubKeyToAddress(&m.key.PublicKey),
+ }
+ m.Sealer = sealer.NewSealer(sealerConfig, logger, m.blockchain, m.consensus, executor)
+ m.Sealer.SetEnabled(m.config.Seal)
+
+ // Setup the libp2p server
+ if err := m.setupLibP2P(); err != nil {
+ return nil, err
+ }
+
+ // Setup the GRPC server
+ if err := m.setupGRPC(); err != nil {
+ return nil, err
+ }
+
+ // Setup jsonrpc
+ if err := m.setupJSONRPC(); err != nil {
+ return nil, err
+ }
+
+ // Setup the syncer protocol
+ m.syncer = protocol.NewSyncer(logger, m.blockchain)
+ m.syncer.Register(m.libp2pServer.GetGRPCServer())
+ m.syncer.Start()
+
+ // Register the libp2p GRPC endpoints
+ proto.RegisterHandshakeServer(m.libp2pServer.GetGRPCServer(), &handshakeService{s: m})
+
+ m.libp2pServer.Serve()
+ return m, nil
+}
+````
diff --git a/archive/edge/de-edge/architecture/modules/networking.md b/archive/edge/de-edge/architecture/modules/networking.md
new file mode 100644
index 0000000000..52ca68467e
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/networking.md
@@ -0,0 +1,80 @@
+---
+id: networking
+title: Vernetzung
+description: Erläuterung für das Vernetzungsmodul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - networking
+ - libp2p
+ - GRPC
+---
+
+## Übersicht {#overview}
+
+Ein Knotenpunkt muss mit anderen Knotenpunkten im Netzwerk kommunizieren, um nützliche Informationen
auszutauschen.
+Um diese Aufgabe zu erfüllen, nutzt der Polygon Edge das bewährte **libp2p**-Framework.
+
+Die Entscheidung für **libp2p** fällt in erster Linie aus folgenden Gründen:
+* **Geschwindigkeit**- libp2p bietet eine deutliche Leistungsverbesserung gegenüber devp2p (verwendet in GETH und anderen Clients)
+* **Erweiterungsfähigkeit** – es dient als hervorragende Grundlage für andere Funktionen des Systems
+* **Modularität** – libp2p ist von Natur aus modular, genau wie Polygon Edge. Dies bietet mehr Flexibilität, vor allem wenn Teile des Polygon Edge austauschbar sein müssen
+
+## GRPC {#grpc}
+
+Zusätzlich zu **libp2p** verwendet Polygon Edge das **GRPC**-Protokoll.
+Technisch gesehen verwendet Polygon Edge mehrere GRPC-Protokolle. Darauf werden wir später noch eingehen.
+
+Die GRPC-Schicht hilft bei der Abstraktion aller Anfrage/Antwort-Protokolle und vereinfacht die Streaming-Protokolle, die für das Funktionieren des Polygon Edge erforderlich sind.
+
+GRPC stützt sich auf **Protokollpuffer** zur Definition von *Services* und *Nachrichtenstrukturen*.
+Die Dienste und Strukturen sind in.*proto-*Dateien definiert, die kompiliert werden und sprachunabhängig sind.
+
+Wir haben bereits erwähnt, dass Polygon Edge mehrere GRPC-Protokolle nutzt.
+Damit soll die Benutzerfreundlichkeit für den Betreiber des Knotens verbessert werden, was bei Clients wie GETH und Parität oft der Fall ist.
+
+Der Knotenbetreiber hat einen besseren Überblick über die Vorgänge im System, wenn er den GRPC-Service aufruft, anstatt die Protokolle zu durchsuchen, um die gesuchten Informationen zu finden.
+
+### GRPC für Knotenbetreiber {#grpc-for-node-operators}
+
+Der folgende Abschnitt kommt Ihnen vielleicht bekannt vor, weil er bereits im Abschnitt [CLI-Befehle](/docs/edge/get-started/cli-commands) kurz behandelt wurde.
+
+Der GRPC-Service, der von **Knotenbetreibern** genutzt werden soll, ist wie folgt definiert:
+````go title="minimal/proto/system.proto"
+service System {
+ // GetInfo returns info about the client
+ rpc GetStatus(google.protobuf.Empty) returns (ServerStatus);
+
+ // PeersAdd adds a new peer
+ rpc PeersAdd(PeersAddRequest) returns (google.protobuf.Empty);
+
+ // PeersList returns the list of peers
+ rpc PeersList(google.protobuf.Empty) returns (PeersListResponse);
+
+ // PeersInfo returns the info of a peer
+ rpc PeersStatus(PeersStatusRequest) returns (Peer);
+
+ // Subscribe subscribes to blockchain events
+ rpc Subscribe(google.protobuf.Empty) returns (stream BlockchainEvent);
+}
+````
+:::tip
+
+Die CLI-Befehle rufen die Implementierungen dieser Servicemethoden auf.
+
+Diese Methoden werden in ***minimal/system_service.go***. implementiert.
+
+:::
+
+### GRPC für andere Knoten {#grpc-for-other-nodes}
+
+Polygon Edge implementiert auch mehrere Service-Methoden, die von anderen Knotenpunkten im Netzwerk genutzt werden.
+Der genannte Service wird im Abschnitt **[Protokoll](docs/edge/architecture/modules/consensus)** beschrieben.
+
+## 📜 Ressourcen {#resources}
+* **[Protokollpuffer](https://developers.google.com/protocol-buffers)**
+* **[libp2p](https://libp2p.io/)**
+* **[gRPC](https://grpc.io/)**
diff --git a/archive/edge/de-edge/architecture/modules/other-modules.md b/archive/edge/de-edge/architecture/modules/other-modules.md
new file mode 100644
index 0000000000..ba0788f178
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/other-modules.md
@@ -0,0 +1,36 @@
+---
+id: other-modules
+title: Andere Module
+description: Erläuterung einiger Module von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - modules
+---
+
+## Krypto {#crypto}
+
+Das Modul **Krypto** enthält Hilfsfunktionen für Krypto.
+
+## Chain {#chain}
+
+Das Modul **Chain** enthält Chain-Parameter (aktive Abspaltungen (Forks), Konsens-Engine usw.)
+
+* **Chains** – Vordefinierte Chain-Konfigurationen (mainnet, goerli, ibft)
+
+## Helfer {#helper}
+
+Das Modul **Helfer** enthält Hilfspakete.
+
+* **dao** – Dao utils
+* **enode** – Kodier-/Dekodierfunktion aktivieren
+* **hex** – Hex-Codierung/Decodierung Funktionen
+* **ipc** – IPC Verbindungsfunktionen
+* **keccak** – Keccak Funktionen
+* **rlputil** – Rlp Kodierungs-/Dekodierungs-Hilfsfunktion
+
+## Befehl {#command}
+
+Das Modul **Befehl** enthält Schnittstellen für CLI-Befehle.
\ No newline at end of file
diff --git a/archive/edge/de-edge/architecture/modules/sealer.md b/archive/edge/de-edge/architecture/modules/sealer.md
new file mode 100644
index 0000000000..d450e1f9cf
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/sealer.md
@@ -0,0 +1,71 @@
+---
+id: sealer
+title: Sealer
+description: Erläuterung für das Sealermodul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - sealer
+ - sealing
+---
+
+## Übersicht {#overview}
+
+Der **Sealer** ist eine Einheit, die die Transaktionen sammelt und einen neuen Block erstellt.
+Dann wird dieser Block an das **Consensus** Modul gesendet, um ihn zu versiegeln.
+
+Die endgültige Sealing-Logik befindet sich im **Consensus** Modul.
+
+## Ausführen der Methode {#run-method}
+
+````go title="sealer/sealer.go"
+func (s *Sealer) run(ctx context.Context) {
+ sub := s.blockchain.SubscribeEvents()
+ eventCh := sub.GetEventCh()
+
+ for {
+ if s.config.DevMode {
+ // In dev-mode we wait for new transactions to seal blocks
+ select {
+ case <-s.wakeCh:
+ case <-ctx.Done():
+ return
+ }
+ }
+
+ // start sealing
+ subCtx, cancel := context.WithCancel(ctx)
+ done := s.sealAsync(subCtx)
+
+ // wait for the sealing to be done
+ select {
+ case <-done:
+ // the sealing process has finished
+ case <-ctx.Done():
+ // the sealing routine has been canceled
+ case <-eventCh:
+ // there is a new head, reset sealer
+ }
+
+ // cancel the sealing process context
+ cancel()
+
+ if ctx.Err() != nil {
+ return
+ }
+ }
+}
+````
+
+:::caution Laufende Arbeiten
+Der **Sealer** und die **Consensus** Module werden in naher Zukunft zu einer einzigen Einheit zusammengeführt.
+
+Das neue Modul enthält modulare Logik für verschiedene Arten von Konsensmechanismen, die unterschiedliche Sealingmaßnahmen erfordern:
+* **PoS** (Proof of Stake)
+* **PoA** (Proof of Authority)
+
+Derzeit arbeiten die **Sealer** und die **Consensus** Module mit PoW (Proof of Work).
+:::
\ No newline at end of file
diff --git a/archive/edge/de-edge/architecture/modules/state.md b/archive/edge/de-edge/architecture/modules/state.md
new file mode 100644
index 0000000000..ba06bcf9bb
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/state.md
@@ -0,0 +1,247 @@
+---
+id: state
+title: State
+description: Erläuterung für das Zustandsmodul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - state
+ - trie
+---
+
+Um wirklich zu verstehen, wie **State** funktioniert, sollten Sie einige grundlegende Ethereum-Konzepte verstehen.
+
+Wir empfehlen, den **[Leitfaden zu State in Ethereum](https://ethereum.github.io/execution-specs/autoapi/ethereum/frontier/state/index.html)** zu lesen.
+
+## Übersicht {#overview}
+
+Nachdem wir uns nun mit den grundlegenden Ethereum-Konzepten vertraut gemacht haben, sollte der nächste Überblick einfach sein.
+
+Wir haben erwähnt, dass der **World State Trie** alle Ethereum-Konten hat, die es
gibt. Diese Konten sind die Blätter des Merkle Tries (Datenstruktur). Jedes Blatt enthält kodierte **Informationen zum Kontostatus**.
+
+So kann der Polygon Edge einen bestimmten Merkle Trie für einen bestimmten Zeitpunkt erhalten.
+Wir können zum Beispiel den Hash des State in Block 10 erhalten.
+
+Der Merkle Trie wird zu jedem Zeitpunkt als ***Snapshot*** bezeichnet.
+
+Wir können ***Snapshots*** für die **State-Trie** (Kerndatenbank) oder für die **Storage-Trie** (Datenstruktur zum Speichern) haben – sie sind im Grunde das Gleiche.
+Der einzige Unterschied besteht darin, was die Blätter darstellen:
+
+* Im Fall des Storage-Tries enthalten die Blätter einen beliebigen Zustand, den wir nicht verarbeiten können und von dem wir nicht wissen, was er enthält
+* Im Fall des State-Tries stehen die Blätter für Konten
+
+````go title="state/state.go
+type State interface {
+ // Gets a snapshot for a specific hash
+ NewSnapshotAt(types.Hash) (Snapshot, error)
+
+ // Gets the latest snapshot
+ NewSnapshot() Snapshot
+
+ // Gets the codeHash
+ GetCode(hash types.Hash) ([]byte, bool)
+}
+````
+
+Die Schnittstelle **Snapshot** ist als solche definiert:
+
+````go title="state/state.go
+type Snapshot interface {
+ // Gets a specific value for a leaf
+ Get(k []byte) ([]byte, bool)
+
+ // Commits new information
+ Commit(objs []*Object) (Snapshot, []byte)
+}
+````
+
+Die Informationen, die übertragen werden können, werden in der *Objekt-Struktur* definiert:
+
+````go title="state/state.go
+// Object is the serialization of the radix object
+type Object struct {
+ Address types.Address
+ CodeHash types.Hash
+ Balance *big.Int
+ Root types.Hash
+ Nonce uint64
+ Deleted bool
+
+ DirtyCode bool
+ Code []byte
+
+ Storage []*StorageObject
+}
+````
+
+Die Implementierung für den Merkle-Trie befindet sich im *Ordner State/Immutable-Trie*.
+*state/immutable-trie/state.go* implementiert die **State** Schnittstelle.
+
+*state/immutable-trie/trie.go* ist das wichtigste Merkle-Trie-Objekt. Es stellt eine optimierte Version des Merkle-Tries dar,
+die so viel Speicher wie möglich wiederverwendet.
+
+## Executor {#executor}
+
+*state/executor.go* enthält alle Informationen, die Polygon Edge braucht, um zu entscheiden, wie ein Block den aktuellen Zustand
+verändert. Die Implementierung von *ProcessBlock* befindet sich hier.
+
+Die *Apply* Methode führt den eigentlichen Zustandsübergang durch. Der Executor ruft die EVM (Ethereum Virtual Machine) auf.
+
+````go title="state/executor.go"
+func (t *Transition) apply(msg *types.Transaction) ([]byte, uint64, bool, error) {
+ // check if there is enough gas in the pool
+ if err := t.subGasPool(msg.Gas); err != nil {
+ return nil, 0, false, err
+ }
+
+ txn := t.state
+ s := txn.Snapshot()
+
+ gas, err := t.preCheck(msg)
+ if err != nil {
+ return nil, 0, false, err
+ }
+ if gas > msg.Gas {
+ return nil, 0, false, errorVMOutOfGas
+ }
+
+ gasPrice := new(big.Int).SetBytes(msg.GetGasPrice())
+ value := new(big.Int).SetBytes(msg.Value)
+
+ // Set the specific transaction fields in the context
+ t.ctx.GasPrice = types.BytesToHash(msg.GetGasPrice())
+ t.ctx.Origin = msg.From
+
+ var subErr error
+ var gasLeft uint64
+ var returnValue []byte
+
+ if msg.IsContractCreation() {
+ _, gasLeft, subErr = t.Create2(msg.From, msg.Input, value, gas)
+ } else {
+ txn.IncrNonce(msg.From)
+ returnValue, gasLeft, subErr = t.Call2(msg.From, *msg.To, msg.Input, value, gas)
+ }
+
+ if subErr != nil {
+ if subErr == runtime.ErrNotEnoughFunds {
+ txn.RevertToSnapshot(s)
+ return nil, 0, false, subErr
+ }
+ }
+
+ gasUsed := msg.Gas - gasLeft
+ refund := gasUsed / 2
+ if refund > txn.GetRefund() {
+ refund = txn.GetRefund()
+ }
+
+ gasLeft += refund
+ gasUsed -= refund
+
+ // refund the sender
+ remaining := new(big.Int).Mul(new(big.Int).SetUint64(gasLeft), gasPrice)
+ txn.AddBalance(msg.From, remaining)
+
+ // pay the coinbase
+ coinbaseFee := new(big.Int).Mul(new(big.Int).SetUint64(gasUsed), gasPrice)
+ txn.AddBalance(t.ctx.Coinbase, coinbaseFee)
+
+ // return gas to the pool
+ t.addGasPool(gasLeft)
+
+ return returnValue, gasUsed, subErr != nil, nil
+}
+````
+
+## Laufzeit {#runtime}
+
+Wenn ein Zustandsübergang ausgeführt wird, ist das Hauptmodul, das den Zustandsübergang ausführt, die EVM (befindet sich in
+state/runtime/evm).
+
+Die **Dispatch-Tabelle** führt einen Abgleich zwischen dem **Opcode** und der Anweisung durch.
+
+````go title="state/runtime/evm/dispatch_table.go"
+func init() {
+ // unsigned arithmetic operations
+ register(STOP, handler{opStop, 0, 0})
+ register(ADD, handler{opAdd, 2, 3})
+ register(SUB, handler{opSub, 2, 3})
+ register(MUL, handler{opMul, 2, 5})
+ register(DIV, handler{opDiv, 2, 5})
+ register(SDIV, handler{opSDiv, 2, 5})
+ register(MOD, handler{opMod, 2, 5})
+ register(SMOD, handler{opSMod, 2, 5})
+ register(EXP, handler{opExp, 2, 10})
+
+ ...
+
+ // jumps
+ register(JUMP, handler{opJump, 1, 8})
+ register(JUMPI, handler{opJumpi, 2, 10})
+ register(JUMPDEST, handler{opJumpDest, 0, 1})
+}
+````
+
+Die Hauptlogik, die die EVM antreibt, ist die *Run*-Schleife.
+
+Dies ist der Haupteinstiegspunkt für die EVM. Er macht eine Schleife und prüft den aktuellen Opcode, holt die Anweisung, prüft,
+ob sie ausgeführt werden kann, verbraucht Gas und führt die Anweisung aus, bis sie entweder fehlschlägt oder stoppt.
+
+````go title="state/runtime/evm/state.go"
+
+// Run executes the virtual machine
+func (c *state) Run() ([]byte, error) {
+ var vmerr error
+
+ codeSize := len(c.code)
+
+ for !c.stop {
+ if c.ip >= codeSize {
+ c.halt()
+ break
+ }
+
+ op := OpCode(c.code[c.ip])
+
+ inst := dispatchTable[op]
+
+ if inst.inst == nil {
+ c.exit(errOpCodeNotFound)
+ break
+ }
+
+ // check if the depth of the stack is enough for the instruction
+ if c.sp < inst.stack {
+ c.exit(errStackUnderflow)
+ break
+ }
+
+ // consume the gas of the instruction
+ if !c.consumeGas(inst.gas) {
+ c.exit(errOutOfGas)
+ break
+ }
+
+ // execute the instruction
+ inst.inst(c)
+
+ // check if stack size exceeds the max size
+ if c.sp > stackSize {
+ c.exit(errStackOverflow)
+ break
+ }
+
+ c.ip++
+ }
+
+ if err := c.err; err != nil {
+ vmerr = err
+ }
+
+ return c.ret, vmerr
+}
+````
diff --git a/archive/edge/de-edge/architecture/modules/storage.md b/archive/edge/de-edge/architecture/modules/storage.md
new file mode 100644
index 0000000000..b900852454
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/storage.md
@@ -0,0 +1,116 @@
+---
+id: storage
+title: Speicher
+description: Erläuterung für das Speichermodul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - storage
+ - LevelDB
+---
+
+## Übersicht {#overview}
+
+Der Polygon Edge verwendet derzeit **LevelDB** für die Datenspeicherung sowie einen **in-memory** Datenspeicher.
+
+Im gesamten Polygon Edge, wenn Module mit dem zugrundeliegenden Datenspeicher interagieren müssen, müssen sie nicht wissen, mit welcher DB-Engine oder -Dienstleistung, sie kommunizieren.
+
+Die DB-Ebene wird zwischen einem Modul namens **Speicher** abstrahiert, das Schnittstellen exportiert, die Module abfragen.
+
+Jede **DB-Ebene**implementiert diese Methoden separat und stellt sicher, dass sie in ihre Implementierung passen.
+
+````go title="blockchain/storage/storage.go"
+// Storage is a generic blockchain storage
+type Storage interface {
+ ReadCanonicalHash(n uint64) (types.Hash, bool)
+ WriteCanonicalHash(n uint64, hash types.Hash) error
+
+ ReadHeadHash() (types.Hash, bool)
+ ReadHeadNumber() (uint64, bool)
+ WriteHeadHash(h types.Hash) error
+ WriteHeadNumber(uint64) error
+
+ WriteForks(forks []types.Hash) error
+ ReadForks() ([]types.Hash, error)
+
+ WriteDiff(hash types.Hash, diff *big.Int) error
+ ReadDiff(hash types.Hash) (*big.Int, bool)
+
+ WriteHeader(h *types.Header) error
+ ReadHeader(hash types.Hash) (*types.Header, error)
+
+ WriteCanonicalHeader(h *types.Header, diff *big.Int) error
+
+ WriteBody(hash types.Hash, body *types.Body) error
+ ReadBody(hash types.Hash) (*types.Body, error)
+
+ WriteSnapshot(hash types.Hash, blob []byte) error
+ ReadSnapshot(hash types.Hash) ([]byte, bool)
+
+ WriteReceipts(hash types.Hash, receipts []*types.Receipt) error
+ ReadReceipts(hash types.Hash) ([]*types.Receipt, error)
+
+ WriteTxLookup(hash types.Hash, blockHash types.Hash) error
+ ReadTxLookup(hash types.Hash) (types.Hash, bool)
+
+ Close() error
+}
+````
+
+## LevelDB {#leveldb}
+
+### Prefixes {#prefixes}
+
+Um den LevelDB-Speicher abzufragen und um das Zusammenstecken von Schlüsselspeichern zu vermeiden, nutzt Polygon Edge Prefixes und Sub-prefixes beim Speichern von Daten
+
+````go title="blockchain/storage/keyvalue.go"
+// Prefixes for the key-value store
+var (
+ // DIFFICULTY is the difficulty prefix
+ DIFFICULTY = []byte("d")
+
+ // HEADER is the header prefix
+ HEADER = []byte("h")
+
+ // HEAD is the chain head prefix
+ HEAD = []byte("o")
+
+ // FORK is the entry to store forks
+ FORK = []byte("f")
+
+ // CANONICAL is the prefix for the canonical chain numbers
+ CANONICAL = []byte("c")
+
+ // BODY is the prefix for bodies
+ BODY = []byte("b")
+
+ // RECEIPTS is the prefix for receipts
+ RECEIPTS = []byte("r")
+
+ // SNAPSHOTS is the prefix for snapshots
+ SNAPSHOTS = []byte("s")
+
+ // TX_LOOKUP_PREFIX is the prefix for transaction lookups
+ TX_LOOKUP_PREFIX = []byte("l")
+)
+
+// Sub-prefixes
+var (
+ HASH = []byte("hash")
+ NUMBER = []byte("number")
+ EMPTY = []byte("empty")
+)
+````
+
+## Zukünftige Pläne {#future-plans}
+
+Die Pläne für die nahe Zukunft umfassen das Hinzufügen einiger der beliebtesten DB-Lösungen, wie z.B.:
+* PostgreSQL
+* MySQL
+
+
+## 📜 Ressourcen {#resources}
+* **[LevelDB](https://github.com/google/leveldb)**
\ No newline at end of file
diff --git a/archive/edge/de-edge/architecture/modules/syncer.md b/archive/edge/de-edge/architecture/modules/syncer.md
new file mode 100644
index 0000000000..0f422bd2f9
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/syncer.md
@@ -0,0 +1,64 @@
+---
+id: syncer
+title: Syncer
+description: Erläuterung für das Syncermodul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - synchronization
+---
+
+## Übersicht {#overview}
+
+Dieses Modul enthält die Logik für das Synchronisationsprotokoll. Es wird verwendet, um einen neuen Knoten mit dem laufenden Netzwerk zu synchronisieren oder neue Blöcke für die Knoten zu validieren, die nicht am Konsens teilnehmen (non-validators).
+
+Der Polygon Edge verwendet **libp2p** als Netzwerkebene und läuft darüber hinaus mit **gRPC**.
+
+Es gibt im Wesentlichen 2 sync in Polygon Edge:
+* Bulk Sync – synchronisieren eine große Reihe von Blöcken gleichzeitig
+* Watch Sync – Sync auf einer per-block-Basis synchronisieren
+
+### Bulk Sync {#bulk-sync}
+
+Die Schritte für die Massensynchronisierung sind ziemlich einfach, um dem Ziel der Massensynchronisierung gerecht zu werden – so viele Blöcke wie möglich (verfügbar) vom anderen Peer zu synchronisieren, um schnellstmöglich aufzuschließen.
+
+Der Ablauf Massensynchronisierung:
+
+1. ** Feststellen, ob der Knoten Massensynchronisierung durchführen muss ** – In diesem Schritt überprüft der Knoten die Peer um zu sehen, ob es jemand gibt, der eine größere Blocknummer hat als das, was der Knoten lokal hat
+2. ** Suche nach dem besten Peer (unter Verwendung der Sync-Peer-Map) ** – In diesem Schritt findet der Knoten den besten Peer für die Synchronisierung auf der Grundlage der im obigen Beispiel genannten Kriterien.
+3. ** Öffnen eines Bulk-Sync-Streams ** – In diesem Schritt öffnet der Knoten einen gRPC-Stream für den besten Peer, um Blöcke aus der gemeinsamen Blocknummer zu synchronisieren
+4. ** Der beste Peer schließt den Stream, wenn er alle Blöcke gesendet hat ** – In diesem Schritt schließt der beste Peer, mit dem der Knoten synchronisiert, den Stream, sobald er alle verfügbaren Blöcke gesendet hat.
+5. ** Nach der Massensynchronisierung prüfen, ob der Knoten ein Validierer ist ** – In diesem Schritt wird der Stream vom besten Peer geschlossen, und der Knoten muss prüfen, ob er nach der Massensynchronisierung ein Validierer ist.
+ * Wenn das der Fall ist, verlassen sie den Synchronisationszustand und beginnen, sich am Konsens zu beteiligen.
+ * Ist das nicht der Fall, beobachten sie weiterhin die ** Synchronisierung **
+
+### Watch Sync {#watch-sync}
+
+:::info
+Der Schritt für Watch Syncing wird nur ausgeführt, wenn der Knoten kein Validator ist, sondern ein normaler Nicht-Validator-Knoten im Netzwerk, der nur auf ankommende Blöcke wartet.
+:::
+
+Das Verhalten von Watch Sync ist ziemlich einfach, der Knoten ist bereits mit dem Rest des Netzwerks synchronisiert und muss nur neue Blöcke analysieren, die hereinkommen.
+
+So funktioniert die Synchronisierung:
+
+1. ** Hinzufügen eines neuen Blocks, wenn der Status eines Peers aktualisiert wird ** – In diesem Schritt warten die Knoten auf die neuen Block-Ereignisse. Wenn ein neuer Block vorliegt, wird ein gRPC-Funktionsaufruf ausgeführt, der Block abgerufen und der lokale Status aktualisiert.
+2. ** Prüfen, ob der Knoten ein Validator ist, nachdem der letzte Block synchronisiert wurde **
+ * Falls ja, den Sync State verlassen
+ * Wenn es nicht so ist, weiter auf neue Blockevents warten
+
+## Leistungsbericht {#perfomance-report}
+
+:::info
+Leistung wurde auf einer lokalen Maschine durch die Syncing von ** Millionen Blöcke ** gemessen.
+:::
+
+| Name | Ergebnis |
+|----------------------|----------------|
+| Syncing von 1M Blöcken | ~ 25 min |
+| Transfer von 1M Blöcke | ~ 1 min |
+| Anzahl der GRPC-Aufrufe | 2 |
+| Testabdeckung | ~ 93 % |
\ No newline at end of file
diff --git a/archive/edge/de-edge/architecture/modules/txpool.md b/archive/edge/de-edge/architecture/modules/txpool.md
new file mode 100644
index 0000000000..747623c29b
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/txpool.md
@@ -0,0 +1,230 @@
+---
+id: txpool
+title: TxPool
+description: Erläuterung für das TxPool-Modul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - TxPool
+ - transaction
+ - pool
+---
+
+## Übersicht {#overview}
+
+Das TxPool-Modul stellt die Implementierung des Transaktionspools dar, in dem Transaktionen aus verschiedenen Teilen
+des Systems hinzugefügt werden. Das Modul bietet auch einige nützliche Funktionen für Knotenbetreiber, die im Folgenden beschrieben werden.
+
+## Bedienerbefehle {#operator-commands}
+
+````go title="txpool/proto/operator.proto
+service TxnPoolOperator {
+ // Status returns the current status of the pool
+ rpc Status(google.protobuf.Empty) returns (TxnPoolStatusResp);
+
+ // AddTxn adds a local transaction to the pool
+ rpc AddTxn(AddTxnReq) returns (google.protobuf.Empty);
+
+ // Subscribe subscribes for new events in the txpool
+ rpc Subscribe(google.protobuf.Empty) returns (stream TxPoolEvent);
+}
+
+````
+
+Die Knotenbetreiber können diese GRPC-Endpunkte abfragen, wie im Abschnitt **[CLI-Befehle](/docs/edge/get-started/cli-commands#transaction-pool-commands)** beschrieben.
+
+## Verarbeitung von Transaktionen {#processing-transactions}
+
+````go title="txpool/txpool.go"
+// AddTx adds a new transaction to the pool
+func (t *TxPool) AddTx(tx *types.Transaction) error {
+ if err := t.addImpl("addTxn", tx); err != nil {
+ return err
+ }
+
+ // broadcast the transaction only if network is enabled
+ // and we are not in dev mode
+ if t.topic != nil && !t.dev {
+ txn := &proto.Txn{
+ Raw: &any.Any{
+ Value: tx.MarshalRLP(),
+ },
+ }
+ if err := t.topic.Publish(txn); err != nil {
+ t.logger.Error("failed to topic txn", "err", err)
+ }
+ }
+
+ if t.NotifyCh != nil {
+ select {
+ case t.NotifyCh <- struct{}{}:
+ default:
+ }
+ }
+ return nil
+}
+
+func (t *TxPool) addImpl(ctx string, txns ...*types.Transaction) error {
+ if len(txns) == 0 {
+ return nil
+ }
+
+ from := txns[0].From
+ for _, txn := range txns {
+ // Since this is a single point of inclusion for new transactions both
+ // to the promoted queue and pending queue we use this point to calculate the hash
+ txn.ComputeHash()
+
+ err := t.validateTx(txn)
+ if err != nil {
+ return err
+ }
+
+ if txn.From == types.ZeroAddress {
+ txn.From, err = t.signer.Sender(txn)
+ if err != nil {
+ return fmt.Errorf("invalid sender")
+ }
+ from = txn.From
+ } else {
+ // only if we are in dev mode we can accept
+ // a transaction without validation
+ if !t.dev {
+ return fmt.Errorf("cannot accept non-encrypted txn")
+ }
+ }
+
+ t.logger.Debug("add txn", "ctx", ctx, "hash", txn.Hash, "from", from)
+ }
+
+ txnsQueue, ok := t.queue[from]
+ if !ok {
+ stateRoot := t.store.Header().StateRoot
+
+ // initialize the txn queue for the account
+ txnsQueue = newTxQueue()
+ txnsQueue.nextNonce = t.store.GetNonce(stateRoot, from)
+ t.queue[from] = txnsQueue
+ }
+ for _, txn := range txns {
+ txnsQueue.Add(txn)
+ }
+
+ for _, promoted := range txnsQueue.Promote() {
+ t.sorted.Push(promoted)
+ }
+ return nil
+}
+````
+Die ***addImpl*** Methode ist das A und O des **TxPool**-Moduls. Es ist der zentrale Ort, an dem Transaktionen im System hinzugefügt werden. Er wird vom GRPC-Service, von JSON-RPC-Endpunkten,
+und immer dann aufgerufen, wenn der Client eine Transaktion über das **Gossip**-Protokoll erhält.
+
+Als Argument wird **ctx** verwendet, das den Kontext angibt, aus dem die Transaktionen hinzugefügt werden (GRPC, JSON RPC...).
+Der andere Parameter sind die Liste der Transaktionen, die dem Pool hinzugefügt werden sollen.
+
+Der hier zu beachtende Key ist die Prüfung des **Von** Feldes innerhalb der Transaktion:
+* Wenn das **Von** Feld **leer** ist, wird es als unverschlüsselte/unsignierte Transaktion betrachtet. Diese Arten von Transaktionen werden nur
+im Entwicklungsmodus akzeptiert
+* Wenn das **Von** Feld **nicht leer** ist, bedeutet das, dass es sich um eine signierte Transaktion handelt, also findet eine Signaturprüfung statt
+
+Nach all diesen Prüfungen gelten die Transaktionen als gültig.
+
+## Datenstrukturen {#data-structures}
+
+````go title="txpool/txpool.go"
+// TxPool is a pool of transactions
+type TxPool struct {
+ logger hclog.Logger
+ signer signer
+
+ store store
+ idlePeriod time.Duration
+
+ queue map[types.Address]*txQueue
+ sorted *txPriceHeap
+
+ // network stack
+ network *network.Server
+ topic *network.Topic
+
+ sealing bool
+ dev bool
+ NotifyCh chan struct{}
+
+ proto.UnimplementedTxnPoolOperatorServer
+}
+````
+
+Die Felder im TxPool-Objekt, die für Verwirrung sorgen können, sind **Warteschlange** und **sortierte** Listen.
+* **Warteschlange** – Heap-Implementierung einer sortierten Liste von Kontobewegungen (nach Nonce)
+* **sortiert** – Sortierte Liste für alle aktuell beförderten Vorgänge (alle ausführbaren Vorgänge). Sortiert nach Gaspreis
+
+## Gaslimit-Fehlermanagement {#gas-limit-error-management}
+
+Wenn Sie eine Transaktion einreichen, gibt es drei Möglichkeiten, wie sie vom TxPool verarbeitet werden kann.
+
+1. Alle anstehenden Transaktionen können in einen Block passen
+2. Eine oder mehrere anstehende Transaktionen können nicht in einen Block passen
+3. Eine oder mehrere anstehende Transaktionen werden niemals in einen Block passen
+
+Hier bedeutet das Wort **_passen_**, dass die Transaktion ein Gaslimit hat, das niedriger ist als das verbleibende Gas im TxPool.
+
+Das erste Szenario verursacht keinen Fehler.
+
+### Zweites Szenario {#second-scenario}
+
+- Das verbleibende Gas im TxPool wird auf das Gaslimit des letzten Blocks gesetzt, z.B. **5000**
+- Eine erste Transaktion verarbeitet und verbraucht **3000** Gas aus dem TxPool
+ - Das restliche Gas des TxPool beträgt jetzt **2000**
+- Eine zweite Transaktion, die dieselbe ist wie die erste – beide verbrauchen 3000 Einheiten Gas – wird eingereicht
+- Da das verbleibende Gas des TxPools **niedriger** ist als das Transaktionsgas, kann es im aktuellen
+Block nicht verarbeitet werden
+ - Es wird in eine Warteschlange für ausstehende Transaktionen zurückgestellt, damit es im nächsten Block bearbeitet werden kann
+- Der erste Block ist fertig – nennen wir ihn **Block #1**
+- Das verbleibende TxPool-Gas wird auf das Gaslimit des übergeordneten Blocks gesetzt – **Block #1**
+- Die Transaktion, die in die TxPool-Warteschlange für ausstehende Transaktionen zurückgestellt wurde, wird nun verarbeitet und in den Block geschrieben
+ - Das verbleibende TxPool Gas beträgt jetzt **2000**
+- Der zweite Block ist geschrieben
+- ...
+
+
+
+### Drittes Szenario {#third-scenario}
+- Das verbleibende Gas im TxPool wird auf das Gaslimit des letzten Blocks gesetzt, z.B. **5000**
+- Eine erste Transaktion verarbeitet und verbraucht **3000** Gas aus dem TxPool
+ - Das restliche Gas des TxPool beträgt jetzt **2000**
+- Eine zweite Transaktion mit einem Gasfeld auf **6000** wird eingereicht
+- Da das Blockgaslimit **niedriger** ist als das Transaktionsgas, wird diese Transaktion verworfen
+ - Es wird niemals in einen Block passen
+- Der erste Block ist geschrieben
+- ...
+
+
+
+
+> Folgendes kann passieren, wenn der nachfolgenden Fehler auftritt:
+> ```shell
+> 2021-11-04T15:41:07.665+0100 [ERROR] polygon.consensus.dev: failed to write transaction: transaction's gas limit exceeds block gas limit
+> ```
+
+## Blockgas-Ziel {#block-gas-target}
+
+Es gibt Situationen, in denen die Knoten das Blockgaslimit in einer laufenden Chain unter oder bei einem bestimmten Zielwert halten wollen.
+
+Der Knotenbetreiber kann das Zielgaslimit für einen bestimmten Knoten festlegen, der dann versucht, dieses Limit auf neu erstellte Blöcke anzuwenden.
+Wenn die Mehrheit der anderen Knoten ein ähnliches (oder gleiches) Zielgaslimit festgelegt hat, wird sich das Blockgaslimit immer um dieses Blockgas-Ziel
+herum bewegen und sich langsam darauf zubewegen (bei maximal)`1/1024 * parent block gas limit`, wenn neue Blöcke erstellt werden.
+
+### Beispiel-Szenario {#example-scenario}
+
+* Der Knotenbetreiber legt das Blockgaslimit für einen einzelnen Knoten auf den Wert `5000`fest
+* Andere Knoten sind ebenfalls als `5000`konfiguriert, mit Ausnahme eines einzelnen Knotens, der als k`7000`onfiguriert ist.
+* Wenn die Knoten, die ihr Gasziel auf `5000`gesetzt haben, Antragsteller werden, prüfen sie, ob das Gaslimit bereits das Ziel erreicht hat
+* Wenn das Gaslimit nicht auf dem Zielwert liegt (es ist größer/kleiner), setzt der Antragsknoten das Blockgas-Ziel auf höchstens (1/1024 * übergeordnetes Gaslimit) in Richtung des Ziels
+ 1. z. B.:`parentGasLimit = 4500` und `blockGasTarget = 5000` berechnet der Antragsteller das Gaslimit für den neuen Block wie folgt (`4504.39453125`)`4500/1024 + 4500`
+ 2. z. B.:`parentGasLimit = 5500` und `blockGasTarget = 5000` berechnet der Antragsteller das Gaslimit für den neuen Block wie folgt (`5494.62890625`)`5500 - 5500/1024`
+* Dies stellt sicher, dass das Blockgaslimit in der Chain auf dem Zielwert gehalten wird, da der einzelne Antragsteller, der den Zielwert auf `7000`konfiguriert hat, den Grenzwert nicht wesentlich erhöhen kann, und die Mehrheit
+der Knoten, die den Wert auf `5000`eingestellt haben, immer versuchen wird, ihn auf diesem Wert zu halten
\ No newline at end of file
diff --git a/archive/edge/de-edge/architecture/modules/types.md b/archive/edge/de-edge/architecture/modules/types.md
new file mode 100644
index 0000000000..17953be8ab
--- /dev/null
+++ b/archive/edge/de-edge/architecture/modules/types.md
@@ -0,0 +1,39 @@
+---
+id: types
+title: Arten
+description: Erläuterung für das Types Modul von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - module
+ - types
+ - marshaling
+---
+
+## Übersicht {#overview}
+
+Das **Types** Modul implementiert core Objektarten, wie z. B.:
+
+* **Adresse**
+* **Hash**
+* **Header**
+* viele Helferfunktionen
+
+## RLP Encoding / Decoding {#rlp-encoding-decoding}
+
+Anders als Clients wie GETH verwendet der Polygon Edge keine Reflexion für die Codierung.
Die Präferenz war, die Reflexion nicht zu verwenden, da sie neue Probleme, wie z. B. die Leistung, Abbau, und härtere Skalierung mit sich bringt.
+
+Das **Types** Modul bietet eine einfach zu bedienende Schnittstelle für RLP Marshaling und Unmarshalling, mit dem FastRLP Paket.
+
+Marshaling wird durch die *MarshalRLPWith* und *MarshalRLPTo* durchgeführt. Die analogen Methoden existieren für Unmarshalling.
+
+Indem er diese Methoden manuell definiert, muss Polygon Edge keine Reflexion verwenden. In *rlp_marshal.go* können Sie Methoden für Marshaling finden:
+
+* **Bodies**
+* **Blöcke**
+* **Headers**
+* **Receipts**
+* **Logs**
+* **Transactions**
\ No newline at end of file
diff --git a/archive/edge/de-edge/architecture/overview.md b/archive/edge/de-edge/architecture/overview.md
new file mode 100644
index 0000000000..51b114ea61
--- /dev/null
+++ b/archive/edge/de-edge/architecture/overview.md
@@ -0,0 +1,60 @@
+---
+id: overview
+title: Übersicht über die Architektur
+sidebar_label: Overview
+description: Einführung in die Architektur von Polygon Edge.
+keywords:
+ - docs
+ - polygon
+ - edge
+ - architecture
+ - modular
+ - layer
+ - libp2p
+ - extensible
+---
+
+Wir begannen mit der Erstellung einer *modularen* Software.
+
+Dies ist etwas, was in fast allen Teilen des Polygon Edge vorhanden ist. Nachstehend eine Kurzübersicht über die integrierte Architektur und das Layering.
+
+## Polygon Edge Layering {#polygon-edge-layering}
+
+
+
+## Libp2p {#libp2p}
+
+Alles beginnt mit der grundlegenden Netzwerkschicht, die **libp2p** verwendet. Wir haben uns für diese Technologie entschieden, weil sie in die Designphilosophie von Polygon Edge passt. Libp2p ist:
+
+- Modular
+- Erweiterbar
+- Schnell
+
+Am wichtigsten ist, es bietet eine großartige Grundlage für mehr fortgeschrittene Funktionen, die wir später abdecken werden.
+
+
+## Synchronisation & Konsens {#synchronization-consensus}
+Die Trennung der Synchronisation und des Consensus Protokolls ermöglicht die Modularität und Implementierung von **benutzerdefinierten** Sync und Konsensmechanismen – je nachdem, wie der Client ausgeführt wird.
+
+Polygon Edge ist so konzipiert, dass es standardmäßig einsteckbare Konsensalgorithmen bietet.
+
+Die aktuelle Liste der unterstützten Konsens-Algorithmen:
+
+* IBFT PoA
+* IBFT PoS
+
+## Blockchain {#blockchain}
+Die Blockchain Layer ist die zentrale Ebene, die alles im Polygon Edge koordiniert. Es wird ausführlich im entsprechenden *Modul*abschnitt behandelt.
+
+## State {#state}
+Die Innenschicht State enthält die Statusübergangslogik.
+Es geht darum, wie sich der Zustand ändert, wenn ein neuer Block aufgenommen wird. Es wird ausführlich im entsprechenden *Modul*abschnitt behandelt.
+
+## JSON RPC {#json-rpc}
+Die JSON RPC ist eine API-Ebene, die dApp Entwickler verwenden, um mit der Blockchain zu interagieren. Es wird ausführlich im entsprechenden *Modul*abschnitt behandelt.
+
+## TxPool {#txpool}
+Die TxPool Layer repräsentiert den Transaktionspool, und es ist eng mit anderen Modulen im System verknüpft, da Transaktionen von mehreren Einstiegspunkten hinzugefügt werden können.
+
+## GRPC {#grpc}
+gRPC oder Google Remote Procedure Call ist ein robustes gRPC, das ursprünglich erstellt wurde, um skalierbare und schnelle APIs zu erstellen. Die GRPC-Schicht ist für die Interaktion mit dem Operator unerlässlich. Durch sie können Knoten unkompliziert mit dem Client interagieren, was eine angenehme UX bietet.
diff --git a/archive/edge/de-edge/community/propose-new-feature.md b/archive/edge/de-edge/community/propose-new-feature.md
new file mode 100644
index 0000000000..81ac4a9b39
--- /dev/null
+++ b/archive/edge/de-edge/community/propose-new-feature.md
@@ -0,0 +1,60 @@
+---
+id: propose-new-feature
+title: Ein neues Feature vorschlagen
+description: "PR-Vorlage und Anleitung für den Vorschlag eines neuen Features."
+keywords:
+ - docs
+ - polygon
+ - edge
+ - feature
+ - PR
+ - template
+ - fix
+---
+
+## Übersicht {#overview}
+
+Wenn du einen Fehler beheben oder einfach etwas zum Code beitragen möchtest, sollten Sie sich zuerst mit dem Team in Verbindung setzen.
+Polygon Edge verwendet eine relativ einfache Vorlage für Feature-Vorschläge, die präzise und treffend sind.
+
+## PR-Vorlage {#pr-template}
+
+### Beschreibung {#description}
+
+Beschreiben Sie ausführlich, was in dieser PR gemacht wurde
+
+### Änderungen beinhalten {#changes-include}
+
+- [ ] Bugfix (nicht unterbrochene Änderung, die ein Problem behebt)
+- [ ] Hotfix (Änderung, die ein dringendes Problem löst und sofortige Aufmerksamkeit erfordert)
+- [ ] Neues Feature (nicht unterbrochene Änderung, die die Funktion erweitert)
+- [ ] Breaking Change (Änderung, die nicht abwärtskompatibel ist und/oder die aktuelle Funktionalität verändert)
+
+### Breaking Changes {#breaking-changes}
+
+Bitte füllen Sie diesen Abschnitt aus, wenn Sie Breaking Changes vorgenommen haben, andernfalls löschen.
+
+### Checkliste {#checklist}
+
+- [ ] Ich habe mir diese PR zugewiesen
+- [ ] Ich habe mindestens 1 Überprüfer hinzugefügt
+- [ ] Ich habe die relevanten Labels hinzugefügt
+- [ ] Ich habe die offizielle Dokumentation aktualisiert
+- [ ] Ich habe eine ausreichende Dokumentation im Code hinzugefügt
+
+### Testen {#testing}
+
+- [ ] Ich habe diesen Code mit der offiziellen Test-Suite getestet
+- [ ] Ich habe diesen Code manuell getestet
+
+## Manuelle Tests {#manual-tests}
+
+Bitte füllen Sie diesen Abschnitt aus, wenn Sie manuelle Tests für diese Funktion durchgeführt haben, andernfalls löschen
+
+### Dokumentations-Update {#documentation-update}
+
+Bitte verlinken Sie die Dokumentations-Update-PR in diesem Abschnitt, wenn er vorhanden ist, andernfalls löschen
+
+### Zusätzliche Kommentare {#additional-comments}
+
+Wenn Sie zusätzliche Kommentare haben, in diesem Abschnitt veröffentlichen, andernfalls löschen
\ No newline at end of file
diff --git a/archive/edge/de-edge/community/report-bug.md b/archive/edge/de-edge/community/report-bug.md
new file mode 100644
index 0000000000..341ce39afa
--- /dev/null
+++ b/archive/edge/de-edge/community/report-bug.md
@@ -0,0 +1,53 @@
+---
+id: report-bug
+title: Melde ein Problem
+description: Vorlage und Anweisungen für die Problemmeldung bei Polygon Edge
+keywords:
+ - docs
+ - polygon
+ - edge
+ - issue
+ - bug
+ - report
+ - template
+---
+
+## Übersicht {#overview}
+
+Manchmal geht etwas
schief. Es ist immer besser, das Team über alle Probleme zu informieren, die auftreten
können. Auf der Polygon Edge GitHub können Sie ein neues Problem einreichen und es mit dem Team besprechen.
+
+## Vorlage für ein Problem {#issue-template}
+
+## [Gegenstand des Problems]
+
+### Beschreibung {#description}
+
+Beschreiben Sie ihr Problem so ausführlich wie möglich
+
+### Ihre Umgebung {#your-environment}
+
+* OS und Version
+* Version des Polygon Edge
+* Bereich, die dieses Problem verursacht
+
+### Schritte zur Reproduktion {#steps-to-reproduce}
+
+* Informieren Sie uns, wie
man dieses Problem reproduzieren kann
+* Wo das Problem besteht, sofern bekannt
+* Welche Befehle ggfs. das Problem ausgelöst haben
+
+### Erwartetes Verhalten {#expected-behaviour}
+
+Teilen Sie uns mit, was passieren sollte
+
+### Tatsächliches Verhalten {#actual-behaviour}
+
+Teilen Sie uns mit, was stattdessen geschieht
+
+### Protokolle {#logs}
+
+Bitte fügen Sie hier alle Protokolle ein, die das Problem aufzeigen, sofern sie vorhanden sind
+
+### Vorgeschlagene Lösung {#proposed-solution}
+
+Wenn Sie eine Lösung für dieses Problem haben, schreiben Sie sie bitte hier auf, damit wir darüber diskutieren können
\ No newline at end of file
diff --git a/archive/edge/de-edge/configuration/manage-private-keys.md b/archive/edge/de-edge/configuration/manage-private-keys.md
new file mode 100644
index 0000000000..ea132db181
--- /dev/null
+++ b/archive/edge/de-edge/configuration/manage-private-keys.md
@@ -0,0 +1,79 @@
+---
+id: manage-private-keys
+title: Private Keys verwalten
+description: "Wie man Private Keys verwaltet und welche Arten von Keys es gibt."
+keywords:
+ - docs
+ - polygon
+ - edge
+ - private
+ - key
+ - keystore
+---
+
+## Übersicht {#overview}
+
+Der Polygon Edge hat zwei Arten von private Keys, die direkt verwaltet werden:
+
+* **Private Key, der für den Konsensmechanismus verwendet wird**
+* **Private Key für die Vernetzung von libp2p**
+* **(Optional) BLS Private Key, der für den Konsensmechanismus verwendet wird, um die Signaturen der Prüfer zusammenzufassen**
+
+Derzeit bietet der Polygon Edge keine Unterstützung für die direkte Kontoführung.
+
+Basierend auf der im [Leitfaden Backup & Restore](/docs/edge/working-with-node/backup-restore) beschriebenen Verzeichnisstruktur speichert der Polygon Edge
+die erwähnten Schlüsseldateien in zwei verschiedenen Verzeichnissen – **Konsens** und **Keystore**.
+
+## Key-Format {#key-format}
+
+Die Private Keys werden im einfachen **Base64-Format** gespeichert, damit sie für Menschen lesbar und übertragbar sind.
+
+```bash
+# Example private key
+0802122068a1bdb1c8af5333e58fe586bc0e9fc7aff882da82affb678aef5d9a2b9100c0
+```
+
+:::info Schlüsseltyp
+
+Alle Private Key-Dateien, die innerhalb von Polygon Edge erzeugt und verwendet werden, basieren auf ECDSA mit der Kurve [secp256k1](https://en.bitcoin.it/wiki/Secp256k1).
+
+Da die Kurve nicht standardisiert ist, kann sie nicht in einem standardisierten PEM-Format kodiert und gespeichert werden.
+Der Import von Keys, die nicht mit diesem Key-Typ übereinstimmen, wird nicht unterstützt.
+
+:::
+## Konsens Private Key {#consensus-private-key}
+
+Die Private Key-Datei, die als *Konsens Private Key* bezeichnet wird, wird auch als **Validator Private Key** bezeichnet.
+Dieser Private Key wird verwendet, wenn der Knoten als Validator im Netzwerk fungiert und neue Daten signieren muss.
+
+Die Private Key-Datei befindet sich in `consensus/validator.key`und entspricht dem erwähnten [Key-Format.](/docs/edge/configuration/manage-private-keys#key-format)
+
+:::warning
+
+Der Private Key der Prüfer ist für jeden Prüferknoten einmalig. Der gleiche Key darf nicht für alle Validatoren verwendet werden, da dies die Sicherheit Ihrer Chain gefährden könnte.
+
+:::
+
+## Private Key vernetzen {#networking-private-key}
+
+Die für die Vernetzung erwähnte Private Key-Datei wird von libp2p verwendet, um die entsprechende PeerID zu generieren und dem Knoten die Teilnahme am Netzwerk zu ermöglichen.
+
+Sie befindet sich in `keystore/libp2p.key`und hält sich an das erwähnte K[ey-Format.](/docs/edge/configuration/manage-private-keys#key-format)
+
+## BLS Secret Key {#bls-secret-key}
+
+Die geheime BLS Key-Datei wird verwendet, um die zugesagten Siegel in der Konsensschicht zusammenzufassen. Die Größe der aggregierten BLS-Siegel ist geringer als die der seriellen ECDSA-Signaturen.
+
+Die BLS-Funktion ist optional und Sie können wählen, ob Sie BLS verwenden möchten oder nicht. Mehr Details unter [BLS](/docs/edge/consensus/bls).
+
+## Import / Export {#import-export}
+
+Da die Key-Dateien im einfachen Base64-Format auf der Festplatte gespeichert werden, können sie leicht gesichert oder importiert werden.
+
+:::caution Ändern der Key-Dateien
+
+Jede Änderung der Key-Dateien in einem bereits eingerichteten/laufenden Netzwerk kann zu ernsthaften Netzwerk-/Konsensstörungen führen,
+da die Konsens- und Peer-Discovery-Mechanismen die von diesen Keys abgeleiteten Daten in einem knotenspezifischen Speicher ablegen und sich auf diese Daten verlassen,
+um Verbindungen zu initiieren und die Konsenslogik auszuführen
+
+:::
\ No newline at end of file
diff --git a/archive/edge/de-edge/configuration/prometheus-metrics.md b/archive/edge/de-edge/configuration/prometheus-metrics.md
new file mode 100644
index 0000000000..ef789e0c9b
--- /dev/null
+++ b/archive/edge/de-edge/configuration/prometheus-metrics.md
@@ -0,0 +1,35 @@
+---
+id: prometheus-metrics
+title: Prometheus-Metriken
+description: "Wie Sie Prometheus-Metriken für Polygon Edge aktivieren."
+keywords:
+ - docs
+ - polygon
+ - edge
+ - metrics
+ - prometheus
+---
+
+## Übersicht {#overview}
+
+Polygon Edge kann die Prometheus-Metriken melden und bereitstellen, die wiederum mit Prometheus-Collector(s) verwendet werden können.
+
+Prometheus-Metriken sind standardmäßig deaktiviert. Es kann aktiviert werden, indem die Listener-Adresse über eine `--prometheus`Flagge oder einem `Telemetry.prometheus`Feld in der Konfigurationsdatei angegeben wird.
+Metriken werden unter `/metrics`auf die angegebene Adresse zugestellt.
+
+## Verfügbare Metriken {#available-metrics}
+
+Folgende Metriken sind verfügbar:
+
+| **Name** | **Art** | **Beschreibung** |
+|-----------------------------------------------|---------------|-------------------------------------------------|
+| txpool_pending_transactions | Messgerät | Anzahl ausstehender Transaktionen in TxPool |
+| consensus_validators | Messgerät | Anzahl der Validatoren |
+| consensus_rounds | Messgerät | Anzahl der Runden |
+| consensus_num_txs | Messgerät | Anzahl der Transaktionen im neuesten Block |
+| consensus_block_interval | Messgerät | Zeit zwischen diesem und dem letzten Block in Sekunden |
+| network_peers | Messgerät | Anzahl verbundener Peers |
+| network_outbound_connections_count | Messgerät | Anzahl ausgehender Verbindungen |
+| network_inbound_connections_count | Messgerät | Anzahl eingehender Verbindungen |
+| network_pending_outbound_connections_count | Messgerät | Anzahl ausstehender ausgehender Verbindungen |
+| network_pending_inbound_connections_count | Messgerät | Anzahl ausstehender eingehender Verbindungen |
\ No newline at end of file
diff --git a/archive/edge/de-edge/configuration/sample-config.md b/archive/edge/de-edge/configuration/sample-config.md
new file mode 100644
index 0000000000..f5cd3fbf6b
--- /dev/null
+++ b/archive/edge/de-edge/configuration/sample-config.md
@@ -0,0 +1,151 @@
+---
+id: sample-config
+title: Server-Konfigurationsdatei
+description: "Starte den Polygon Edge-Server mithilfe einer Konfigurationsdatei."
+keywords:
+ - docs
+ - polygon
+ - edge
+ - server
+ - configuration
+ - yaml
+ - jason
+
+---
+# Server-Konfigurationsdatei {#server-configuration-file}
+Das Starten des Servers mit verschiedenen Konfigurationsoptionen kann über eine Konfigurationsdatei erfolgen, anstatt nur über Flags.
+Der Befehl, mit dem der Server mit einer Konfigurationsdatei gestartet wird: `polygon-edge server --config `
+
+## Konfigurationsdatei mit Standardkonfiguration exportieren {#export-config-file-with-default-configuration}
+Die Konfiguration mit den Standardeinstellungen für den Polygon Edge-Server kann in eine Konfigurationsdatei im `yaml`oder `json`Dateiformat exportiert werden.
+Diese Datei kann als Vorlage für den Betrieb des Servers mit einer Konfigurationsdatei verwendet werden.
+
+### YAML {#yaml}
+Erstellen der Konfigurationsdatei im `yaml`-Format:
+```bash
+polygon-edge server export --type yaml
+```
+oder nur
+```bash
+polygon-edge server export
+```
+die Konfigurationsdatei mit dem Namen `default-config.yaml`wird in demselben Verzeichnis erstellt, von dem dieser Befehl ausgeführt wurde.
+
+Dateibeispiel:
+```yaml
+chain_config: ./genesis.json
+secrets_config: ""
+data_dir: ""
+block_gas_target: "0x0"
+grpc_addr: ""
+jsonrpc_addr: ""
+telemetry:
+ prometheus_addr: ""
+network:
+ no_discover: false
+ libp2p_addr: 127.0.0.1:1478
+ nat_addr: ""
+ dns_addr: ""
+ max_peers: -1
+ max_outbound_peers: -1
+ max_inbound_peers: -1
+seal: true
+tx_pool:
+ price_limit: 0
+ max_slots: 4096
+log_level: INFO
+restore_file: ""
+block_time_s: 2
+headers:
+ access_control_allow_origins:
+ - '*'
+log_to: ""
+```
+
+### JSON {#json}
+Erstellen der Konfigurationsdatei im `json`-Format:
+```bash
+polygon-edge server export --type json
+```
+die Konfigurationsdatei mit dem Namen `default-config.json`wird in demselben Verzeichnis erstellt, von dem dieser Befehl ausgeführt wurde.
+
+Dateibeispiel:
+
+```json
+{
+ "chain_config": "./genesis.json",
+ "secrets_config": "",
+ "data_dir": "",
+ "block_gas_target": "0x0",
+ "grpc_addr": "",
+ "jsonrpc_addr": "",
+ "telemetry": {
+ "prometheus_addr": ""
+ },
+ "network": {
+ "no_discover": false,
+ "libp2p_addr": "127.0.0.1:1478",
+ "nat_addr": "",
+ "dns_addr": "",
+ "max_peers": -1,
+ "max_outbound_peers": -1,
+ "max_inbound_peers": -1
+ },
+ "seal": true,
+ "tx_pool": {
+ "price_limit": 0,
+ "max_slots": 4096
+ },
+ "log_level": "INFO",
+ "restore_file": "",
+ "block_time_s": 2,
+ "headers": {
+ "access_control_allow_origins": [
+ "*"
+ ]
+ },
+ "log_to": ""
+}
+```
+
+Im Abschnitt [CLI-Befehle](/docs/edge/get-started/cli-commands) erfahren Sie, wie Sie diese Parameter verwenden können.
+
+### Typoscript-Schema {#typescript-schema}
+
+Im Folgenden finden Sie ein Beispiel für das Format der Konfigurationsdatei. Es ist in TypeScript geschrieben, um die Eigenschaftstypen (`string`, `number`,)`boolean` auszudrücken, von denen Sie ihre Konfiguration ableiten können. Erwähnenswert ist, dass der `PartialDeep`Typ von v`type-fest`erwendet wird, um auszudrücken, dass alle Eigenschaften optional sind.
+
+```typescript
+import { PartialDeep } from 'type-fest';
+
+type ServerConfig = PartialDeep<{
+ chain_config: string; //
+ secrets_config: string; //