diff --git a/.github/workflows/deploy-mkdocs.yml b/.github/workflows/deploy-mkdocs.yml new file mode 100644 index 0000000..aa29cad --- /dev/null +++ b/.github/workflows/deploy-mkdocs.yml @@ -0,0 +1,40 @@ +name: Deploy MkDocs site to GitHub Pages + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install mkdocs mkdocs-material + pip install mkdocs-video + pip install mkdocs-redirects + + - name: Build MkDocs site + run: mkdocs build + + - name: Deploy to GitHub Pages + if: github.event_name == 'push' + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./site + cname: docs.xdc.network + allow_empty_commit: true \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..75920a6 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.xdc.network diff --git a/README.md b/README.md index cc33018..03c99ae 100644 --- a/README.md +++ b/README.md @@ -1 +1,29 @@ -# Docs \ No newline at end of file +# Welcome to XDC Network Knowledge Base + +This is the XDC Network Knowledge Base documentation for the XDC Network developers. It is based on the Mkdocs Material theme. + +## Run locally + +### Prerequisites + +1. [Python 3.12](https://www.python.org/downloads/). +2. [`virtualenv`](https://pypi.org/project/virtualenv/): Install using `pip3 install virtualenv`. + +### Setup + +1. Clone the repository. +2. `cd` to the root. +3. Run the `run.sh` script. You may need to make the script executable: `chmod +x run.sh` + +```sh +./run.sh +``` + +The site comes up at http://127.0.0.1:8000/ + + + +## 📜 License + +Copyright (c) 2024 XDC Network + diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..ff1fd62 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +docs.xdc.network \ No newline at end of file diff --git a/docs/announce/index.md b/docs/announce/index.md new file mode 100644 index 0000000..73f30b5 --- /dev/null +++ b/docs/announce/index.md @@ -0,0 +1,26 @@ + +# Announcement + +
+ +
+
XDC 2.0 Mainnet Release
+
XDC 2.0 Mainnet Release: Key Features and Enhancements
+
+ October 2, 2024 +
+ +
+
XinFin Remix Upgrade
+
XinFin Remix is getting a major upgrade and will be launching soon.
+
+ Coming Soon! +
+ +
+
Solidity 0.8.23 Integration on XDC Mainnet
+
This EVM upgrade supports the latest version of the Solidity smart contract programming language, version 0.8.23.
+
+ 2024 June +
+
diff --git a/docs/assets/gifs/buy.gif b/docs/assets/gifs/buy.gif new file mode 100644 index 0000000..fc01dc7 Binary files /dev/null and b/docs/assets/gifs/buy.gif differ diff --git a/docs/assets/gifs/delist.gif b/docs/assets/gifs/delist.gif new file mode 100644 index 0000000..b001657 Binary files /dev/null and b/docs/assets/gifs/delist.gif differ diff --git a/docs/assets/gifs/list.gif b/docs/assets/gifs/list.gif new file mode 100644 index 0000000..daa3d26 Binary files /dev/null and b/docs/assets/gifs/list.gif differ diff --git a/docs/assets/gifs/search.gif b/docs/assets/gifs/search.gif new file mode 100644 index 0000000..5269491 Binary files /dev/null and b/docs/assets/gifs/search.gif differ diff --git a/docs/assets/gifs/upload.gif b/docs/assets/gifs/upload.gif new file mode 100644 index 0000000..f99c4c5 Binary files /dev/null and b/docs/assets/gifs/upload.gif differ diff --git a/docs/assets/js/custom.js b/docs/assets/js/custom.js new file mode 100644 index 0000000..84799e9 --- /dev/null +++ b/docs/assets/js/custom.js @@ -0,0 +1,9 @@ +document.addEventListener("DOMContentLoaded", function() { + var navLinks = document.querySelectorAll("nav a"); + + navLinks.forEach(function(link) { + if (link.href.startsWith("http") && !link.href.includes(window.location.hostname)) { + link.setAttribute("target", "_blank"); + } + }); +}); \ No newline at end of file diff --git a/docs/assets/js/mathjax.js b/docs/assets/js/mathjax.js new file mode 100644 index 0000000..06dbf38 --- /dev/null +++ b/docs/assets/js/mathjax.js @@ -0,0 +1,16 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; + +document$.subscribe(() => { + MathJax.typesetPromise() +}) diff --git a/docs/assets/logo.svg b/docs/assets/logo.svg new file mode 100644 index 0000000..4c0985e --- /dev/null +++ b/docs/assets/logo.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/style/components/banner.css b/docs/assets/style/components/banner.css new file mode 100644 index 0000000..fb65703 --- /dev/null +++ b/docs/assets/style/components/banner.css @@ -0,0 +1,22 @@ +.md-banner { + background-color: var(--doc-support-warning-1); + text-align: center; + color: var(--doc-text-on-color); +} + +.md-banner a { + color: var(--doc-text-on-color); + font-weight: 700; + text-decoration: underline; +} + +.md-banner a:focus, +.md-banner a:hover { + color: var(--doc-text-brand); +} + +.md-banner__inner { + font-size: 14px; + line-height: 20px; + margin: 10px auto; +} diff --git a/docs/assets/style/components/content.css b/docs/assets/style/components/content.css new file mode 100644 index 0000000..9e30dc4 --- /dev/null +++ b/docs/assets/style/components/content.css @@ -0,0 +1,230 @@ +.md-content .md-content__inner { + margin-left: 0; + margin-right: 0; +} + +.section-head { + display: flex; + align-items: center; + gap: 20px; + margin-bottom: 40px; +} + +.section-head h1 { + color: var(--doc-text-primary); + font-size: 32px; + font-weight: 700; + line-height: 1.25; + margin-bottom: 0; +} + +.section-head p { + color: var(--doc-text-primary); + font-size: 16px; + line-height: 1.5; + margin: 0; +} + +.section-head .left { + display: flex; + flex-direction: column; + gap: 12px; + align-items: flex-start; + flex: 1; + min-width: 0; +} + +.section-head .image { + width: 400px; + aspect-ratio: 659/323; +} + +.version-tag { + padding: 2px 4px; + border-radius: 4px; + background: var(--doc-layer-inverse); + color: var(--doc-text-on-color); + font-size: 12px; + line-height: 16px; + width: max-content; +} + +.section-body { + padding-top: 40px; + border-top: 1px solid var(--doc-border-3); + display: flex; + flex-wrap: wrap; + gap: 16px; + padding-bottom: 60px; +} + +.section-body a { + border: 1px solid var(--doc-border-3); + background: var(--doc-layer-2); + padding: 16px; + border-radius: 8px; + transition: all 0.15s; + flex: 32%; + width: 32%; +} + +.section-body > a:active, +.section-body > a:hover { + background: var(--doc-layer-4); + text-decoration: none; +} + +.section-body a div { + color: var(--doc-text-primary); + font-weight: 500; + font-size: 16px; + line-height: 24px; + margin-bottom: 4px; +} + +.section-body div + p { + color: var(--doc-text-secondary); + font-weight: 400; + line-height: 20px; + font-size: 14px; + margin: 0; +} + +.home-hero img { + margin-bottom: 48px; + width: 100%; + aspect-ratio: 840/240; + object-fit: cover; + border-radius: 12px; + background: var(--doc-layer-4); +} + +.md-main__inner { + margin-top: 0; + flex: 1; +} + +.md-content { + min-height: 100%; +} + +.md-content__inner { + padding-top: 38px; + padding-bottom: 40px; +} + +.md-content__inner:before { + height: 2px; +} + +.md-sidebar { + width: 200px; + padding: 52px 0; +} + +.md-main { + display: flex; + flex-direction: column; +} + +.doc-announce { + display: flex; + flex-direction: column; + gap: 12px; +} + +.doc-announce > a { + border-radius: 8px; + border: 1px solid var(--doc-border-3); + background: var(--doc-layer-2); + padding: 16px 32px; + transition: all .15s; + display: flex; + gap: 20px; + align-items: center; +} + +.doc-announce > a > div { + flex: 1; + display: flex; + flex-direction: column; + gap: 4px; +} + +.announce-title { + color: var(--doc-text-primary); + font-size: 14px; + font-weight: 500; + line-height: 20px; +} + +.announce-desc { + color: var(--doc-text-secondary); + font-size: 12px; + line-height: 16px; +} + +.announce-date { + font-size: 12px; + line-height: 16px; + color: var(--doc-text-secondary); +} + +.doc-announce > a:hover { + background: var(--doc-layer-4); + text-decoration: none; +} + +.doc-announce-info > span { + margin-right: 20px; +} + +.doc-announce-info .announce-date { + font-size: 14px; +} + +@media (max-width: 767px) { + .doc-announce > a { + flex-direction: column; + align-items: flex-start; + padding: 16px; + } + + .section-body a { + flex: 100%; + width: 100%; + } + + .section-body { + padding-top: 24px; + } + + .section-head { + flex-direction: column; + } + + .section-head .image { + max-width: 100%; + } +} + +@media screen and (min-width: 76.25em) { + [dir=ltr] .md-sidebar--primary:not([hidden]) ~ .md-content > .md-content__inner { + margin-left: 40px; + } + + [dir=ltr] .md-sidebar--secondary:not([hidden]) ~ .md-content > .md-content__inner, + [dir=rtl] .md-sidebar--primary:not([hidden]) ~ .md-content > .md-content__inner { + margin-right: 40px; + } + + .md-sidebar--primary:not([hidden]) ~ .md-content { + border-left: 1px solid var(--doc-border-3); + } + + .md-sidebar--primary[hidden] + .md-sidebar--secondary[hidden] ~ .md-content { + max-width: 840px; + margin-left: auto; + margin-right: auto; + } +} diff --git a/docs/assets/style/components/footer-nav.css b/docs/assets/style/components/footer-nav.css new file mode 100644 index 0000000..eac144f --- /dev/null +++ b/docs/assets/style/components/footer-nav.css @@ -0,0 +1,34 @@ +.md-footer { + background: var(--doc-bg-1); + border-top: 1px solid var(--doc-border-3); +} + +.md-footer__inner { + color: var(--doc-text-primary); + padding: 0; +} + +.md-footer__inner a:hover .md-footer__direction, +.md-footer__inner a:hover { + color: var(--doc-text-brand); +} + +.md-footer__title { + margin-bottom: 0; + font-size: 20px; + font-weight: 400; + line-height: 1.4; +} + +.md-footer__direction { + margin-bottom: 4px; + font-size: 14px; + line-height: 16px; + color: var(--doc-text-secondary); + opacity: 1; +} + +.md-footer__link { + margin-top: 30px; + margin-bottom: 30px; +} diff --git a/docs/assets/style/components/footer.css b/docs/assets/style/components/footer.css new file mode 100644 index 0000000..f28c85f --- /dev/null +++ b/docs/assets/style/components/footer.css @@ -0,0 +1,96 @@ +.md-footer-meta { + display: none; +} + +.doc-footer { + background: var(--doc-dark-layer-2); + padding: 120px 0; + border-top: 1px solid var(--doc-dark-border-3); +} + +.doc-footer__inner { + display: flex; + gap: 40px; + flex-wrap: wrap; + padding: 0 60px; +} + +.doc-footer__inner > div { + min-width: 270px; +} + +.doc-footer__inner > div > div { + color: var(--doc-dark-text-primary); + font-size: 24px; + font-weight: 500; + line-height: 32px; + margin-bottom: 20px; +} + +.doc-footer__inner ul { + display: flex; + gap: 20px; + flex-direction: column; + margin: 0; + padding: 0; + list-style: none; +} + +.doc-footer__inner ul a { + color: var(--doc-dark-text-secondary); + font-weight: 400; + font-size: 16px; + line-height: 24px; +} + +.doc-footer__inner ul a:hover, +.doc-footer__inner ul a:active { + color: var(--doc-dark-text-brand); +} + +.doc-copyright { + background: var(--doc-dark-layer-2); + border-top: 1px solid var(--doc-dark-border-3); +} + +.doc-copyright__inner { + color: var(--doc-dark-text-secondary); + font-size: 14px; + font-weight: 400; + line-height: 20px; + padding: 24px 0; +} + + +@media (max-width: 1319px) { + .doc-footer { + padding: 82px 40px; + } + + .doc-footer__inner { + padding: 0; + } + + .doc-copyright { + padding: 0 40px; + } +} + +@media (max-width: 767px) { + .doc-footer__inner > div > div { + font-size: 20px; + line-height: 20px; + } + + .doc-footer { + padding: 66px 0; + } + + .doc-footer__inner { + padding: 0; + } + + .doc-copyright { + text-align: center; + } +} \ No newline at end of file diff --git a/docs/assets/style/components/nav.css b/docs/assets/style/components/nav.css new file mode 100644 index 0000000..70fe85c --- /dev/null +++ b/docs/assets/style/components/nav.css @@ -0,0 +1,311 @@ +.md-header__inner { + padding: 0; +} + +.md-header__button.md-logo { + margin: 0; + padding: 0; + position: relative; +} + +.md-header__button.md-logo:after { + content: ''; + position: absolute; + width: 1px; + height: 100%; + background: var(--doc-dark-border-4); + right: -16px; + top: 0; +} + +[dir=ltr] .md-header__title { + margin-left: 28px; +} + +.md-header__title { + font-size: 20px; + height: 60px; + line-height: 60px; +} + +.md-header__title .md-header__site_name { + font-weight: 500; + color: var(--doc-dark-text-secondary); +} + +.md-search__icon[for=__search] { + top: 12px; +} + +[dir=ltr] .md-search__icon[for=__search] { + left: 16px; +} + +.md-header__source { + margin-left: 24px; + border-radius: 6px; + border: 1px solid var(--doc-dark-border-3); +} + +.md-source__icon { + height: 42px; +} + +[dir=ltr] .md-source__icon svg { + margin-left: 8px; +} + +.md-source__icon svg { + width: 32px; + height: 32px; + margin-top: 6px; + color: var(--doc-dark-text-tertiary); +} + +.md-source__repository { + color: var(--doc-dark-button-primary); + font-weight: 500; + font-size: 14px; + line-height: 16px; + +} + +[dir=ltr] .md-source__icon + .md-source__repository { + padding-left: 44px; +} + +.md-source__facts { + margin-top: 4px; + gap: 8px; +} + +[dir=ltr] .md-source__fact:before { + margin-right: 4px; +} + +[data-md-toggle=search]:checked ~ .md-header .md-search__form { + border-radius: 12px 12px 0 0; +} + +[dir=ltr] .md-search__output, [dir=rtl] .md-search__output { + border-bottom-right-radius: 12px; +} + +[dir=ltr] .md-search__output { + border-bottom-left-radius: 12px; +} + +.md-search-result__meta { + background: var(--doc-layer-2); +} + +.md-search-result__link:focus, .md-search-result__link:hover { + background: var(--doc-layer-2); +} + +.md-search-result__more > summary:focus > div, .md-search-result__more > summary:hover > div { + background: var(--doc-layer-4); +} + +.md-tabs { + background: var(--doc-bg-1); + color: var(--doc-text-tertiary); +} + +.md-tabs__link { + opacity: 1; + font-size: 16px; + line-height: 1.4; + margin-top: 14px; +} + +.md-tabs__item--active { + position: relative; +} + +.md-tabs__link:focus, +.md-tabs__link:hover { + color: var(--doc-text-primary); +} + +.md-tabs__item--active .md-tabs__link { + color: var(--doc-text-primary); + font-weight: 500; +} + +.md-tabs__item--active:after { + content: ''; + position: absolute; + width: 100%; + height: 2px; + border-radius: 4px; + left: 0; + right: 0; + bottom: 0; + background: var(--doc-support-brand-2); +} + +.md-tabs__item { + padding-left: 0; + padding-right: 0; + margin-right: 40px; + height: 48px; +} + +[dir=ltr] .md-tabs__list { + margin-left: 0; +} + +.md-header--shadow { + box-shadow: none; +} + +.md-header { + border-bottom: 1px solid var(--doc-border-3); +} + +.md-nav__item { + color: var(--doc-text-tertiary); +} + +.md-header__button { + margin: 0 0.8rem; +} + +.md-nav__link { + margin-top: 12px; +} + +.md-nav--lifted .md-logo { + max-width: 127px; +} + +.md-nav--lifted .md-nav__source { + padding-bottom: 10px; +} + +.md-nav__title { + color: var(--doc-text-primary); +} + +.md-nav--lifted .md-nav__title { + color: var(--doc-text-primary); +} + +.md-header__button { + margin: 0 0.8rem; +} + +.md-option[data-md-color-media] ~ .md-icon svg { + width: 24px; + height: 24px; +} + +@media (max-width: 767px) { + .md-header__inner { + max-width: 100%; + } + + [dir=ltr] .md-header__title { + margin-left: 0; + } + + .md-header__option .md-option[data-md-color-media] ~ .md-header__button { + margin: 0 -16px 0 0; + } +} + +@media screen and (min-width: 60em) { + [data-md-toggle=search]:checked ~ .md-header .md-search__suggest, + [data-md-toggle=search]:checked ~ .md-header .md-search__form .md-search__input { + padding-left: 60px; + padding-right: 80px; + } + + .md-header__source { + max-width: 225px; + } + + .md-search__form { + background: var(--doc-dark-layer-3); + } + + .md-search__form:hover { + background-color: var(--doc-dark-input-1); + } + + .md-search__inner { + width: 201px; + } + + .md-search__output { + top: 40px; + } + + [data-md-toggle=search]:not(:checked) ~ .md-header .md-search__form { + border-radius: 8px; + border: 1px solid var(--doc-dark-border-4); + } + + .md-search__form { + height: 40px; + } + + .md-search__input::placeholder { + font-size: 14px; + font-weight: 400; + color: var(--doc-dark-text-placeholder); + } + + [dir=ltr] .md-search__input { + padding-left: 40px; + } + + .md-search__input + .md-search__icon { + color: var(--doc-dark-text-tertiary); + } + + [data-md-toggle=search]:not(:checked) ~ .md-header .md-search__form .md-search__icon.md-icon svg, + [data-md-toggle=search]:not(:checked) ~ .md-header .md-search__form .md-search__icon { + width: 16px; + height: 16px; + } + + [data-md-toggle=search]:checked ~ .md-header .md-search__form .md-search__icon.md-icon svg, + [data-md-toggle=search]:checked ~ .md-header .md-search__form .md-search__icon { + width: 28px; + height: 28px; + top: 8px; + } +} + +@media screen and (min-width: 76.25em) { + .md-nav__item--section > .md-nav__link { + font-weight: 700; + color: var(--doc-text-secondary); + } + + .md-nav__item--section > .md-nav__link[for] { + color: var(--doc-text-secondary); + } + + .md-nav__item--section { + margin: 28px 0; + } +} + +@media screen and (min-width: 1820px) { + .md-tabs__item { + height: 60px; + } + + .md-tabs__link { + margin-top: 20px; + } +} + +@media screen and (max-width: 76.234375em) { + .md-nav--primary .md-nav__item--active>.md-nav__link { + color: var(--doc-text-brand); + } +} \ No newline at end of file diff --git a/docs/assets/style/components/sidebar.css b/docs/assets/style/components/sidebar.css new file mode 100644 index 0000000..74a09af --- /dev/null +++ b/docs/assets/style/components/sidebar.css @@ -0,0 +1,19 @@ +.md-sidebar__scrollwrap { + margin: 0; +} + +.md-nav__item .md-nav__link--active, .md-nav__item .md-nav__link--active code { + color: var(--doc-text-brand); +} + +@media screen and (min-width: 76.25em) { + .md-sidebar__inner > .md-nav { + margin-left: -0.6rem; + } +} + +@media screen and (max-width: 76.234375em) { + [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary { + width: 260px; + } +} \ No newline at end of file diff --git a/docs/assets/style/index.css b/docs/assets/style/index.css new file mode 100644 index 0000000..fd7834a --- /dev/null +++ b/docs/assets/style/index.css @@ -0,0 +1,262 @@ +@font-face { + font-family: "color-emoji"; + src: local("Apple Color Emoji"), + local("Twemoji Mozilla"), + local("Segoe UI Emoji"), + local("Segoe UI Symbol"), + local("Noto Color Emoji"), + local("EmojiOne Color"), + local("Android Emoji"); +} + +:root { + --doc-text-primary: #181A1E; + --doc-text-secondary: #5C5F6A; + --doc-text-tertiary: #5C5F6A; + --doc-text-placeholder: #888A97; + --doc-text-brand: #254C82; + --doc-text-on-color: #fff; + --doc-bg-1: #FFFFFF; + --doc-bg-2: #F1F2F3; + --doc-layer-2: #F1F2F3; + --doc-layer-3: #fff; + --doc-layer-4: #E1E2E5; + --doc-layer-inverse: #181A1E; + --doc-border-2: #F1F2F3; + --doc-border-3: #E1E2E5; + --doc-border-4: #E1E2E5; + --doc-input-1: #F7F7F8; + --doc-button-primary: #181A1E; + --doc-support-brand-2: #254C82; + --doc-support-warning-2: #933D00; + --doc-support-warning-1: #141C29; + + --doc-light-text-primary: #181A1E; + --doc-light-text-secondary: #5C5F6A; + --doc-light-text-tertiary: #5C5F6A; + --doc-light-text-placeholder: #888A97; + --doc-light-text-brand: #021b3f; + --doc-light-text-on-color: #fff; + --doc-light-bg-1: #FFFFFF; + --doc-light-bg-2: #F1F2F3; + --doc-light-layer-2: #F1F2F3; + --doc-light-layer-3: #fff; + --doc-light-layer-4: #E1E2E5; + --doc-light-layer-inverse: #181A1E; + --doc-light-border-2: #F1F2F3; + --doc-light-border-3: #E1E2E5; + --doc-light-border-4: #E1E2E5; + --doc-light-input-1: #F7F7F8; + --doc-light-button-primary: #181A1E; + --doc-light-support-brand-2: #021b3f; + --doc-light-support-warning-2: #933D00; + + + --doc-dark-text-primary: #fff; + --doc-dark-text-secondary: #C4C5CB; + --doc-dark-text-tertiary: #8C8F9B; + --doc-dark-text-placeholder: #8C8F9B; + --doc-dark-text-brand: #0088cc; + --doc-dark-text-on-color: #181A1E; + --doc-dark-bg-1: #141C29; + --doc-dark-bg-2: #1E2026; + --doc-dark-layer-2: #141C29; + --doc-dark-layer-3: #2e3549; + --doc-dark-layer-4: #373943; + --doc-dark-layer-inverse: #F7F7F8; + --doc-dark-border-2: #1E2026; + --doc-dark-border-3: #373943; + --doc-dark-border-4: #5C5F6A; + --doc-dark-input-1: rgb(78, 83, 104); + --doc-dark-button-primary: #F1F2F3; + --doc-dark-support-brand-2: #0088cc; + --doc-dark-support-warning-2: #FFA260; + + --md-primary-fg-color: var(--doc-dark-layer-2); + --md-primary-fg-color--light: var(--doc-dark-layer-2); + --md-primary-fg-color--dark: var(--doc-dark-layer-2); + --md-accent-fg-color: var(--doc-text-brand); + --md-text-font: 'Fira Sans'; +} + +body { + --md-text-font-family: var(--md-text-font), -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Fira Sans', color-emoji; + color: var(--doc-text-secondary); + background: var(--doc-bg-1); +} + +[data-md-color-scheme=slate] { + --doc-text-primary: var(--doc-dark-text-primary); + --doc-text-secondary: var(--doc-dark-text-secondary); + --doc-text-tertiary: var(--doc-dark-text-tertiary); + --doc-text-placeholder: var(--doc-dark-text-placeholder); + --doc-text-brand: var(--doc-dark-text-brand); + --doc-text-on-color: var(--doc-dark-text-on-color); + --doc-bg-1: var(--doc-dark-bg-1); + --doc-bg-2: var(--doc-dark-bg-2); + --doc-layer-2: var(--doc-dark-layer-2); + --doc-layer-3: var(--doc-dark-layer-3); + --doc-layer-4: var(--doc-dark-layer-4); + --doc-layer-inverse: var(--doc-dark-layer-inverse); + --doc-border-2: var(--doc-dark-border-2); + --doc-border-3: var(--doc-dark-border-3); + --doc-border-4: var(--doc-dark-border-4); + --doc-input-1: var(--doc-dark-input-1); + --doc-button-primary: var(--doc-dark-button-primary); + --doc-support-brand-2: var(--doc-dark-support-brand-2); + --doc-support-warning-2: var(--doc-dark-support-warning-2); + --doc-support-warning-1: var(--doc-dark-support-warning-1); + --md-accent-fg-color: var(--doc-text-brand); + --md-default-bg-color: var(--doc-bg-1); +} + +.md-grid { + max-width: calc(100% - 80px); + width: 1320px; +} + +.md-typeset h1 { + font-weight: 700; + font-size: 2em; + line-height: 1.25; + color: var(--doc-text-primary); + margin: 0 0 .8em; +} + +.md-typeset h2 { + font-weight: 700; + color: var(--doc-text-primary); + line-height: 1.333; + font-size: 1.365em; +} + +.md-typeset h3 { + font-weight: 700; + color: var(--doc-text-primary); +} + +.md-typeset a { + color: var(--doc-text-brand); +} + +.md-typeset a:focus, .md-typeset a:hover { + text-decoration: underline; +} + +.md-typeset a.headerlink:focus, .md-typeset a.headerlink:hover { + text-decoration: none; +} + +.md-typeset { + font-size: 16px; +} + +.md-typeset strong { + color: var(--doc-text-primary); +} + +.doc-center { + text-align: center; +} + +.doc-round { + border-radius: 12px; +} + +.doc-cards { + display: flex; + flex-direction: column; + gap: 8px; +} + +.doc-cards > a { + border-radius: 8px; + border: 1px solid var(--doc-border-3); + background: var(--doc-layer-2); + padding: 16px; + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 4px; + transition: all .15s; +} + +.doc-cards > a:hover, +.doc-cards > a:active { + background: var(--doc-layer-4); + text-decoration: none; +} + +.doc-cards > a > h3 { + font-size: 14px; +} + +.doc-cards > a > p { + color: var(--doc-text-secondary); + font-size: 12px; +} + +.doc-cards > a > p, +.doc-cards > a > h3 { + margin: 0; +} + +.divider { + margin: 0 10px; +} + +.md-typeset img, .md-typeset video { + border-radius: 12px; +} + +.doc-footer, +.md-footer { + position: relative; +} + +.md-typeset .md-button { + background-color: var(--doc-light-bg-1); + border-color: var(--doc-dark-layer-2); + color: var(--doc-dark-layer-2); +} + +.md-typeset .md-button--primary { + background-color: var(--doc-dark-layer-2); + border-color: var(--doc-dark-layer-2); + color: var(--doc-dark-text-primary); +} + +.md-search-result__more>summary>div { + color: var(--doc-text-secondary); +} + +[data-md-color-scheme=slate] { + .md-typeset .md-button { + background-color: var(--doc-dark-bg-1); + border-color: var(--doc-light-layer-2); + color: var(--doc-dark-text-primary); + } + + .md-typeset .md-button--primary { + background-color: var(--doc-light-layer-2); + border-color: var(--doc-light-layer-2); + color: var(--doc-light-text-primary); + } + + .md-typeset .md-button:focus, .md-typeset .md-button:hover { + background-color: var(--md-accent-fg-color); + border-color: var(--md-accent-fg-color); + color: var(--doc-dark-text-primary); + } +} + +@media (max-width: 767px) { + .md-grid { + max-width: calc(100% - 40px); + width: 1320px; + } + + .md-typeset { + font-size: 14px; + } +} \ No newline at end of file diff --git a/docs/assets/xdc-architecture.png b/docs/assets/xdc-architecture.png new file mode 100644 index 0000000..8fc537d Binary files /dev/null and b/docs/assets/xdc-architecture.png differ diff --git a/docs/assets/xdc-home.jpg b/docs/assets/xdc-home.jpg new file mode 100644 index 0000000..01b2ef4 Binary files /dev/null and b/docs/assets/xdc-home.jpg differ diff --git a/docs/assets/xdc.svg b/docs/assets/xdc.svg new file mode 100644 index 0000000..6e74874 --- /dev/null +++ b/docs/assets/xdc.svg @@ -0,0 +1,777 @@ + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + 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 + + + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..93d6d7c --- /dev/null +++ b/docs/index.md @@ -0,0 +1,115 @@ +--- +hide: +- navigation +- toc + +title: XDC Network Docs +--- + + + +# XDC Network: Revolutionizing the Future of Decentralized Finance and Global Trade + +![XDC Network](./assets/xdc-home.jpg) + +XDC Network is a pioneering blockchain platform tailored to meet the evolving needs of decentralized finance (DeFi) and global trade. With its unparalleled speed, scalability, and cost-efficiency, XDC Network has become the go-to choice for developers creating decentralized applications (DApps) and for users looking to engage in the next generation of financial and trade ecosystems. + +## **Key Features and Benefits of XDC Network** + +* **Compatibility with the Ethereum Ecosystem** + + Developers can seamlessly migrate their Ethereum-based projects to the XDC Network, taking advantage of its superior speed, scalability, and lower transaction costs. + +* **Global Trade and Finance Focus** + + XDC Network is specifically designed to cater to the needs of decentralized finance (DeFi) and global trade, offering optimized solutions for businesses and financial institutions. + +* **Strong Ecosystem Support** + + Backed by a robust infrastructure, the XDC Network is supported by leading RPC providers, wallets, blockchain explorers, and data indices, along with significant grant programs for developers. + +* **Thriving DeFi Ecosystem** + + XDC Network hosts a diverse range of DeFi applications, including decentralized exchanges (DEXs), lending platforms, and asset tokenization services, driving innovation in the financial sector. + +* **Community-Driven Growth** + + The XDC Network is powered by a dynamic community of developers, validators, and users who actively contribute to its continuous development and global expansion. + +* **Comprehensive Asset Support** + + XDC Network provides extensive support for a wide array of digital assets, ensuring optimal composability and integration opportunities for developers and users alike. + +## **Chains** + +![image](assets/xdc-architecture.png) + +The XDC protocol serves as a messaging and confirmation layer for global payments. Also, the XDC protocol supports smart contracts and Internet of Things (IoT) integrations. As a highly scalable enterprise-grade hybrid blockchain, the XDC protocol boasts a high throughput of 2,000 transactions per second (TPS) and near-instant transaction finality. + +
+ +

XDC Chain

+

XDC Network is a pioneering blockchain platform tailored to meet the evolving needs of decentralized finance (DeFi) and global trade. With its unparalleled speed, scalability, and cost-efficiency, XDC Network has become the go-to choice for developers creating decentralized applications (DApps) and for users looking to engage in the next generation of financial and trade ecosystems.

+
+
+ +## **Use Cases** + +* **Decentralized Finance (DeFi)** + + XDC Network serves as a hub for DeFi activities, offering users access to a broad spectrum of financial products and services, all powered by its efficient and secure blockchain technology. + +* **Trade Finance and Tokenization** + + The XDC Network is optimized for trade finance solutions, enabling the tokenization of real-world assets and providing a platform for secure and transparent global trade transactions. + +* **Decentralized Applications (DApps)** + + Developers can build and deploy a variety of DApps on the XDC Network, leveraging its scalable infrastructure, low transaction costs, and compatibility with the Ethereum ecosystem. + +* **Supply Chain Management** + + XDC Network offers advanced solutions for decentralized supply chain management, ensuring transparency, efficiency, and traceability across global supply chains. + +* **Blockchain and AI Integration** + + As the demand for Artificial Intelligence (AI) grows, XDC Network is paving the way for integrating AI with blockchain technology, providing a robust platform for innovative AI-driven applications. + +## **Quick Start** + +
+ +
XDC Chain
+

Get started with XDC Network: Unlock the power of decentralized finance and global trade.

+
+ +
Announcements
+

Stay updated with the latest XDC Network announcements and developments.

+
+ +
XDC Network: RPC Endpoints
+

Obtain the RPC Endpoint for XDC Network

+
+ +
XDC Network: Set up Node
+

XDC Network Masternodes are the backbone of the network, ensuring lightning-fast transaction validation and enhanced security.

+
+ +
Developer Tools
+

The XDC Chain Network provides a variety of tools and resources to help developers build and deploy applications on the blockchain.

+
+ +
XDC Subnet
+

XDC Subnet is a technology that allows you to create a secure, scalable, and decentralized network within the XDC Ecosystem.

+
+
diff --git a/docs/join-ecosystem/index.md b/docs/join-ecosystem/index.md new file mode 100644 index 0000000..36c329e --- /dev/null +++ b/docs/join-ecosystem/index.md @@ -0,0 +1,34 @@ +--- +hide: +- toc +--- + + + +
+
+

Join XDC Ecosystem

+ XDC token lies at the heart of XDC Network, and its transformative capabilities are truly awe-inspiring. As a versatile settlement mechanism, XDC fuels the entire ecosystem, enabling lightning-fast and cost-effective transactions while revolutionizing the way DApps function. +
+
+ + + +
+ +
All dApps
+

Discover top dApps built on XDC Network Chain, the leading blockchain scaling solution.

+
+ +
RWA
+

RWA on XDC Network!

+
+ +
DeFi
+

DeFi on XDC Network!

+
+
\ No newline at end of file diff --git a/docs/join-ecosystem/platforms/dapp.md b/docs/join-ecosystem/platforms/dapp.md new file mode 100644 index 0000000..3280979 --- /dev/null +++ b/docs/join-ecosystem/platforms/dapp.md @@ -0,0 +1 @@ +# dApps Built On XDC Network! diff --git a/docs/join-ecosystem/platforms/defi.md b/docs/join-ecosystem/platforms/defi.md new file mode 100644 index 0000000..b90553e --- /dev/null +++ b/docs/join-ecosystem/platforms/defi.md @@ -0,0 +1 @@ +# DeFi Built On XDC Network! \ No newline at end of file diff --git a/docs/join-ecosystem/platforms/rwa.md b/docs/join-ecosystem/platforms/rwa.md new file mode 100644 index 0000000..3d3b087 --- /dev/null +++ b/docs/join-ecosystem/platforms/rwa.md @@ -0,0 +1 @@ +# RWA Built On XDC Network! \ No newline at end of file diff --git a/docs/showcase/data-analytics.md b/docs/showcase/data-analytics.md new file mode 100644 index 0000000..1d772df --- /dev/null +++ b/docs/showcase/data-analytics.md @@ -0,0 +1,70 @@ +--- +title: Showcase +--- + +# Data and Analytics +## Overview: +The XDC Network’s data and analytics tools are critical for understanding the dynamics of the blockchain. These tools provide detailed insights into how tokens are used, the behavior of smart contracts, and overall network activity. By leveraging these analytics, stakeholders can make informed decisions and optimize their interactions with the network. + +## Key Features: + +- **Comprehensive Data Collection:** Gather detailed metrics on every aspect of the XDC Network. +- **Customizable Dashboards:** Tailor analytics dashboards to focus on specific data points relevant to your use case. +- **Predictive Analytics:** Use historical data to forecast future trends and identify potential risks. + +## Use Cases: + +- **Business Intelligence:** Enterprises can use these insights to refine their blockchain strategies. +- **Development Optimization:** Developers can optimize smart contracts based on usage patterns and performance data. + +------------ + +# XDCScan - Mainnet +## Overview: +[XDCScan](https://xdcscan.io/) is the official block explorer for the XDC Network, providing a user-friendly interface to explore and interact with the blockchain. It allows users to search for transactions, view block details, and explore smart contracts deployed on the network. XDCScan is a vital tool for anyone interacting with the XDC Network, from developers to casual users. + +## Key Features: + +- **Transaction Tracking:** Easily track the status of transactions and explore detailed information on each one. +- **Smart Contract Interaction:** View and interact with smart contracts directly through the explorer. +- **Network Overview:** Access detailed statistics about the XDC Network, including block times, gas usage, and token distributions. + +## Use Cases: + +- **Transparency:** Users can verify the details of their transactions and ensure they have been processed correctly. +- **Smart Contract Verification:** Developers can use XDCScan to verify the deployment and interaction of smart contracts. + +------------ + +# XDCScan Testnet (Apothem) + +## Overview: +The [Apothem XDCScan](https://apothem.xdcscan.io/) is the XDC Network’s official test environment. XDCScan Testnet (Apothem) is the block explorer for this testnet, offering all the features of XDCScan but in a testnet context. It is ideal for developers who want to simulate the mainnet environment as closely as possible before deploying their projects. + +## Key Features: + +- **Testnet Environment:** A near-exact replica of the XDC mainnet, but with test XDC (TXDC) for development purposes. +- **Comprehensive Testing:** Developers can simulate real-world scenarios and network conditions to ensure their smart contracts and dApps function as expected. +- **Community Testing:** A platform for community-driven testing of new features and updates before they are rolled out to the mainnet. + +## Use Cases: + +- **Pre-Mainnet Testing:** Ensure smart contracts and applications are fully functional and secure before mainnet deployment. +- **Education and Training:** A learning environment for new developers to practice and improve their skills on the XDC Network. + +------------ + +# XDCScan Devnet +## Overview: +[XDCScan Devnet](https://devnet.xdcscan.io/) is a specialized version of XDCScan tailored for the XDC Network’s development environment. It provides a safe and controlled environment for developers to test and debug their smart contracts before deploying them to the mainnet. + +## Key Features: + +- **Safe Testing Environment:** Access to a full-featured block explorer in a development setting. +- **Debugging Tools:** Enhanced tools for tracking and fixing issues in smart contracts. +- **Seamless Transition to Mainnet:** Test and refine smart contracts on the Devnet before migrating them to the mainnet. + +## Use Cases: + +- **Smart Contract Development:** Developers can thoroughly test their contracts in a sandbox environment before live deployment. +- **Debugging:** Identify and fix bugs in smart contracts using real blockchain data without risking mainnet stability. \ No newline at end of file diff --git a/docs/showcase/flattening-smart-contracts.md b/docs/showcase/flattening-smart-contracts.md new file mode 100644 index 0000000..86bfaca --- /dev/null +++ b/docs/showcase/flattening-smart-contracts.md @@ -0,0 +1,39 @@ +--- +title: Showcase +--- + +# Flattening Smart Contracts on the XDC Network + +When a smart contract imports a contract that it depends on from another source, that top level smart contract and it's dependencies will have to be flattened before it can be verified on a block explorer. This section explains how to flatten smart contracts using three different development toolchains; Remix, Truffle, and Hardhat. + +For a good overview of flattening smart contracts on the XDC Network please refer to [this article](https://medium.com/@tivan7404/learn-how-to-flatten-a-smart-contract-and-verify-on-blocksscan-4daca3be3ac7). + +# Flattening Smart Contracts with Remix +Remix IDE is one of the most user-friendly tools for smart contract development. To flatten a smart contract in Remix: + +- **Develop Your Contract:** Write and compile your smart contract within the Remix environment. +- **Use the Flattener Plugin:** Remix provides a plugin called "Solidity Flattener" that you can easily activate from the plugin manager. +- **Generate the Flattened Code:** Once your contract is ready, run the flattener to generate a single file containing all your code dependencies. +This process is straightforward and ensures that your contract is ready for deployment on the XDC Network with minimal hassle. + +**Refer to know in detail:** https://www.xdc.dev/ivan_blocksscan/learn-how-to-flatten-a-smart-contract-and-verify-on-blocksscan-56on + +# Flattening Smart Contracts with Truffle +Truffle is another powerful tool for smart contract development that supports the XDC Network. The process involves: + +- **Setup Your Truffle Project:** Initialize a Truffle project and write your smart contracts. +- **Install the Required Dependencies:** Use NPM or Yarn to install necessary libraries for flattening, such as truffle-flattener. +- **Run the Flattener:** Execute the truffle-flattener command in your terminal to merge your contracts into a single file. +This method is ideal for developers who prefer a more traditional development environment and want to ensure their contracts are fully prepared for deployment on the XDC Network. + +**Refer to know in detail:** + +# Flattening Smart Contracts with Hardhat +Hardhat offers advanced tooling for smart contract developers and supports the XDC Network natively. The flattening process using Hardhat involves: + +- **Initialize Hardhat:** Set up a new Hardhat project and write your contracts. +- **Install Flattening Tools:** Use the hardhat-flatten package to simplify the flattening process. +- **Execute the Flattening Command:** Run the flatten command in your terminal, and Hardhat will output a single file containing all the necessary code. +Hardhat's flexibility makes it an excellent choice for developers looking to deploy on the XDC Network, as it offers comprehensive tooling and support for complex smart contract workflows. + +**Refer to know in detail:** https://www.xdc.dev/jay_kulkarni_842b41d81b23/deploying-and-verifying-a-pepe-token-on-the-xdc-network-using-hardhat-3nc7 \ No newline at end of file diff --git a/docs/showcase/index.md b/docs/showcase/index.md new file mode 100644 index 0000000..60592b4 --- /dev/null +++ b/docs/showcase/index.md @@ -0,0 +1,61 @@ +--- +title: Showcase +--- + +# Smart Contract Introduction + +Blockchain technology is a digital ledger that continuously expands by adding records, known as blocks, which are securely connected through cryptography. Each block includes a cryptographic hash of the preceding block, a timestamp, and transaction data. The structure of blockchain ensures that once data is recorded, it is nearly impossible to alter, providing a high level of security. One of the key advantages of blockchain is its decentralized nature, eliminating the need for middlemen, which reduces both time and potential conflicts. Despite its challenges, blockchain technology is recognized for being faster, more economical, and more secure compared to traditional systems, which is why it’s being increasingly adopted by banks and governments. + +Now, imagine a contract that automatically executes when certain conditions are met, with the entire process managed by the blockchain network. This is the concept behind smart contracts. + +# What Are Smart Contracts? +A smart contract is a self-executing program that runs on a blockchain, containing a set of rules agreed upon by the involved parties. Once these predefined rules are satisfied, the contract automatically enforces the terms. Smart contracts facilitate, verify, and enforce the execution of an agreement or transaction without needing an intermediary, representing the simplest form of decentralized automation. + +Put simply, a smart contract allows for the exchange of assets—whether money, property, or anything else—without the involvement of a middleman. This leads to trustless execution, where the contract enforces the terms without relying on any party's honesty or reliability. + +Bitcoin was the first blockchain to introduce basic smart contracts, where transactions are only validated if specific conditions are met. Below is an example of a basic smart contract that includes functions to set and retrieve data, with simple operations to modify the data. + +# Overview +## Key Features of Smart Contracts +1. **Trustworthiness:** Smart contracts ensure that your agreements are securely stored on a blockchain, making it impossible for any party to lose or alter the contract. The terms are binding, and both parties must adhere to them. + +2. **Transparency:** Every detail of the smart contract is visible to all participants before they agree, eliminating the possibility of disputes. The information is open to everyone involved, ensuring clarity and preventing misunderstandings. + +3. **Self-Governance:** Smart contracts eliminate the need for intermediaries, such as brokers or lawyers, to validate the agreement. This also removes the risk of third-party manipulation, as the contract is automatically executed by the blockchain network. + +4. **Precision:** Automated contracts not only speed up the process but also reduce costs and eliminate human error. The conditions are clearly defined in the smart contract, ensuring that no detail is overlooked. + +5. **Efficiency:** Smart contracts automate tasks, saving considerable time that would otherwise be spent manually reviewing and processing agreements. + +6. **Cost-Effectiveness:** By removing the need for intermediaries, smart contracts can significantly reduce costs. For instance, you don’t need to hire a lawyer to enforce the contract; the code itself ensures compliance. + +7. **Security:** The data in smart contracts is encrypted and protected by blockchain technology, making it highly secure and reliable for critical processes. + +## Addressing Challenges +- **Upgradability:** Modular smart contracts can address upgrade issues, allowing changes without losing valuable information. + +- **Proxy Contracts:** Using delegatecall-based proxies enables smart contracts to be upgraded while keeping the logic and data separate. However, this method requires careful handling to avoid introducing errors. + +- **Legal Considerations:** As smart contracts evolve, legal issues will gradually be resolved, but it will take time since they are still in the early stages of development. + +- **Complexity Management:** Simplifying smart contracts by avoiding Turing-complete designs can help reduce the complexity involved in writing them. + +- **Oracle Problem:** The oracle issue could be tackled by implementing a consensus protocol within the community, ensuring that the blockchain accurately reflects real-world conditions. + +## Applications of Smart Contracts +1. **Digital Identity Management:** Smart contracts allow individuals to maintain control over their digital identities, managing their data, reputation, and assets securely. Businesses can use this technology to streamline the know-your-customer (KYC) process. + +2. **Financial Data Integrity:** Financial institutions can leverage smart contracts for accurate and transparent data recording, improving financial reporting and reducing auditing expenses. This also enhances market stability by ensuring uniform financial data across organizations. + +3. **Healthcare Management:** Smart contracts can store personal health records securely on a blockchain, accessible only by authorized personnel. They can also be used to manage various healthcare operations, including drug tracking, compliance with regulations, and managing medical supplies. + +4. **Real Estate Transactions:** Smart contracts simplify real estate transactions by cutting out intermediaries. For example, rental agreements can be directly managed on the blockchain, reducing costs and making the process more efficient. + +## Conclusion +Smart contracts offer immense potential and have already shown signs of transforming various industries. However, they are still in the early stages, and much remains to be explored. As organizations become more familiar with blockchain technology and its applications, smart contracts could become easier to implement and more widely trusted. In the future, we might see a blend of traditional and digital contracts, where blockchain technology verifies the terms while physical copies provide additional validation. + + + + + + diff --git a/docs/showcase/tokens.md b/docs/showcase/tokens.md new file mode 100644 index 0000000..b83cb99 --- /dev/null +++ b/docs/showcase/tokens.md @@ -0,0 +1,54 @@ +--- +title: Showcase +--- + +# Tokens Built On XDC + +The XDC Network is a powerful blockchain platform designed to support various digital assets and decentralized applications. One of its key features is the ability to create and manage tokens, which can represent anything from currency to assets, data, or even unique digital items. On the XDC Network, tokens are classified into different standards based on their functionality and use cases. Here’s an overview of the major token standards: + +# XRC20 +## Overview: +[XRC20](https://xdcscan.io/tokens) is the most widely used token standard on the XDC Network, similar to the ERC20 standard on Ethereum. XRC20 tokens are fungible, meaning each token is identical in type and value to another token within the same contract. These tokens are primarily used for cryptocurrencies, utility tokens, and other financial instruments. + +## Key Features: + +- **Fungibility:** Every XRC20 token is identical and interchangeable. +- **Interoperability:** XRC20 tokens can interact with various decentralized applications (dApps) and smart contracts within the XDC ecosystem. +- **Efficiency:** Transactions using XRC20 tokens benefit from the XDC Network's high throughput and low fees, making them ideal for financial applications. + +## Use Cases: + +- **Cryptocurrencies:** XRC20 tokens can represent any form of digital currency on the XDC Network. +- **Utility Tokens:** These tokens can be used within dApps as a medium of exchange, access to features, or as a reward mechanism. + +# XRC721 + +## Overview: +The [XRC721](https://xdcscan.io/nft-top-contracts) standard allows for the creation of non-fungible tokens (NFTs) on the XDC Network. Unlike XRC20 tokens, XRC721 tokens are unique and cannot be exchanged on a one-to-one basis. Each XRC721 token has a distinct value and set of characteristics, making them ideal for representing ownership of unique items or digital collectibles. + +## Key Features: + +- **Uniqueness:** Every XRC721 token is unique and cannot be replaced or replicated. +- **Ownership Proof:** XRC721 tokens are often used to prove ownership of digital or physical assets. +- **Compatibility:** These tokens can be used across various NFT marketplaces and platforms within the XDC ecosystem. + +## Use Cases: + +- **Digital Collectibles:** XRC721 tokens can represent digital art, collectibles, and other unique digital assets. +- **Asset Tokenization:** Real-world assets like real estate, luxury goods, and intellectual property can be tokenized as XRC721 tokens, providing proof of ownership and enabling fractional ownership. + +# XRC404 + +## Overview: +XRC404 is a specialized token standard designed for hybrid tokens on the XDC Network. These tokens combine features of both fungible and non-fungible tokens, offering a new level of flexibility for developers and businesses. + +## Key Features: + +- **Hybrid Nature:** XRC404 tokens can function both as fungible and non-fungible tokens, depending on their implementation. +- **Customization:** Developers can customize XRC404 tokens to suit specific use cases that require attributes of both XRC20 and XRC721 standards. +- **Versatility:** This standard is particularly useful for creating complex financial products or tokenizing assets with both unique and identical components. + +## Use Cases: + +- **Fractionalized NFTs:** XRC404 tokens can be used to create fractional ownership of NFTs, allowing multiple stakeholders to own a piece of a unique asset. +- **Complex Financial Instruments:** These tokens can represent hybrid financial products that require both fungibility and uniqueness, such as bonds with unique identifiers but common underlying assets. diff --git a/docs/showcase/wallet/xdc-wallet.md b/docs/showcase/wallet/xdc-wallet.md new file mode 100644 index 0000000..f6d9aea --- /dev/null +++ b/docs/showcase/wallet/xdc-wallet.md @@ -0,0 +1,5 @@ +--- +title: Showcase - XDC Web Wallet +--- + +XDC Web wallet: https://betawallet.xinfin.network/ \ No newline at end of file diff --git a/docs/showcase/xdcstats.md b/docs/showcase/xdcstats.md new file mode 100644 index 0000000..aa57585 --- /dev/null +++ b/docs/showcase/xdcstats.md @@ -0,0 +1,22 @@ +--- +title: Showcase +--- + +# XDC Stats +## Overview: +XDC Stats is a comprehensive analytics platform designed for the XDC Network. It provides real-time data and insights into various aspects of the blockchain, including token transactions, smart contract activity, and network performance. XDC Stats is essential for developers, investors, and users who need to monitor the network’s health and activity levels. + +[Mainnet Stats](https://stats.xdc.org/) | [XinFin Network Stats](https://xinfin.network/#stats) + +## Key Features: + +- **Real-Time Analytics:** Access to up-to-date statistics on transaction volumes, gas usage, and block generation. +- **Network Performance:** Insights into network latency, throughput, and overall efficiency. +- **Historical Data:** Detailed records of past transactions and blocks for audit and analysis purposes. + +## Use Cases: + +- **Investment Analysis:** Investors can use XDC Stats to track token performance and market trends. +- **Network Monitoring:** Developers and network operators can ensure optimal performance and identify potential issues. + + diff --git a/docs/subnet/img/xdc-subnet-architecture.svg b/docs/subnet/img/xdc-subnet-architecture.svg new file mode 100644 index 0000000..23a7641 --- /dev/null +++ b/docs/subnet/img/xdc-subnet-architecture.svg @@ -0,0 +1,1087 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/subnet/img/xdc-subnet-ui.png b/docs/subnet/img/xdc-subnet-ui.png new file mode 100644 index 0000000..efc6686 Binary files /dev/null and b/docs/subnet/img/xdc-subnet-ui.png differ diff --git a/docs/subnet/index.md b/docs/subnet/index.md new file mode 100644 index 0000000..3cdfb36 --- /dev/null +++ b/docs/subnet/index.md @@ -0,0 +1,23 @@ +--- +title: XDC Subnet +--- + +# XDC Subnet + +![xdc-subnet-ui](./img/xdc-subnet-ui.png) + +XDC Subnet is a technology that allows you to create a secure, scalable, and decentralized network within the XDC Ecosystem. It enables various use cases, including creating private subnets, deploying decentralized applications (dApps), and more. +Are you ready to embark on a journey into the world of secure, scalable, and decentralized networks? Look no further than XDC Subnet, the cutting-edge technology that empowers you to create a digital realm tailored to your needs within the thriving XDC Ecosystem. + + +## Architecture +The architecture consists of the following key components owned by the customer: + +- A subnet driven by the XDC2.0 consensus engine, with system configurations tailored for the customer +- A relayer program that checkpoint critical consensus data of the subnet to the XDC Mainnet +- A smart contract in the XDC Mainnet that verifies and records the checkpoints +- Wallet APIs that enable additional protection of subnet transaction from the XDC Mainnet +- The subnet will also natively support XDC's abundant utility tools such as blockchain explorer and forensic monitor + +![subnet-image](./img/xdc-subnet-architecture.svg) + diff --git a/docs/xdcchain/developers/apothemrpc.md b/docs/xdcchain/developers/apothemrpc.md new file mode 100644 index 0000000..bca96e7 --- /dev/null +++ b/docs/xdcchain/developers/apothemrpc.md @@ -0,0 +1,22 @@ +--- +title: XDC Network - Apothem RPC +--- + +# Apothem Testnet RPC +The Apothem Testnet is the test environment for the XDC Network. It mirrors the Mainnet's functionality but operates with test tokens instead of real assets, making it ideal for developers to test and deploy their applications before going live. + +**Public Networks** +Similar to the Mainnet, users can access the Apothem Testnet with an internet connection and full node RPC. They can perform all the same actions as on the Mainnet—reading, creating, or validating transactions—without the risks associated with live transactions. + +## XDC TestNet Specifications +- **Chain ID:** 51 +- **RPC Endpoint for XDC Apothem:** +* https://rpc.apothem.network + +- **WebSocket Endpoint:** wss://ws.apothem.network +- **Consensus Mechanism:** XDPoS (XinFin Delegated Proof of Stake) +- **Block Finality:** >75% +- **Consensus Nodes:** Up to 108 (Masternodes) +- **Genesis Block Date:** 2019-05-31 +- **Transaction Fee:** Gas price 0.25 Gwei + diff --git a/docs/xdcchain/developers/devnetrpc.md b/docs/xdcchain/developers/devnetrpc.md new file mode 100644 index 0000000..6d63edb --- /dev/null +++ b/docs/xdcchain/developers/devnetrpc.md @@ -0,0 +1,23 @@ +--- +title: XDC Network - Devnet RPC +--- + +# Devnet RPC +The XDC Devnet is a specialized test environment for the XDC Network, designed to closely mirror the Mainnet's functionality. The Devnet provides developers with a safe, controlled setting to test, deploy, and refine their applications using test tokens instead of real assets. This environment is crucial for ensuring that applications are robust and secure before they go live on the Mainnet. + +**Public Networks** +Similar to the Mainnet, users can access the XDC Devnet via an internet connection and a full node RPC. The Devnet allows developers to perform the same operations they would on the Mainnet, including reading blockchain data, creating and validating transactions, and deploying smart contracts. However, since the Devnet operates with test tokens, developers can experiment freely without the financial risks associated with live transactions. + +## XDC TestNet Specifications +- **Chain ID:** 551 +- **RPC Endpoint for XDC Devnet:** +* https://devnetstats.apothem.network/devnet + +- **WebSocket Endpoint:** +- **Consensus Mechanism:** XDPoS (XinFin Delegated Proof of Stake) +- **Block Finality:** >75% +- **Consensus Nodes:** Up to 108 (Masternodes) +- **Genesis Block Date:** 2019-05-31 +- **Transaction Fee:** Gas price 0.25 Gwei + + diff --git a/docs/xdcchain/developers/mainnetrpc.md b/docs/xdcchain/developers/mainnetrpc.md new file mode 100644 index 0000000..ad5eb3a --- /dev/null +++ b/docs/xdcchain/developers/mainnetrpc.md @@ -0,0 +1,72 @@ +--- +title: XDC Network - Mainnet RPC +--- + +# XDC Mainnet RPC +The XDC Mainnet is the live, operational environment of the XDC Network, where real transactions occur. The Mainnet is designed to support high-performance applications with low transaction fees and quick finality, making it ideal for enterprise use cases. The primary URL for accessing the XDC Mainnet via RPC. This endpoint allows you to interact with the blockchain by sending requests for data, submitting transactions, and more. + +**Public Networks** + +Users with an internet connection and access to a full node RPC can easily access the XDC Network's public blockchain. They can read, create, or validate transactions executed on the blockchain. The network's consensus mechanism, XDPoS (XinFin Delegated Proof of Stake), ensures that all nodes agree on the state of the network. + +## XDC MainNet Specifications +- **Chain ID:** 50 +- **RPC Endpoint for XDC Mainnet:** +* https://erpc.xinfin.network +* https://earpc.xinfin.network +* https://rpc.xdc.org + +- **WebSocket Endpoint:** wss://ws.xinfin.network +- **Consensus Mechanism:** XDPoS (XinFin Delegated Proof of Stake) +- **Block Finality:** >75% +- **Consensus Nodes:** Up to 108 (Masternodes) +- **Genesis Block Date:** 2019-05-31 +- **Transaction Fee:** Gas price 0.25 Gwei + + + + + + + + +----------- + +## Apothem Testnet RPC +The Apothem Testnet is the test environment for the XDC Network. It mirrors the Mainnet's functionality but operates with test tokens instead of real assets, making it ideal for developers to test and deploy their applications before going live. + +**Public Networks** +Similar to the Mainnet, users can access the Apothem Testnet with an internet connection and full node RPC. They can perform all the same actions as on the Mainnet—reading, creating, or validating transactions—without the risks associated with live transactions. + +## XDC TestNet Specifications +- **Chain ID:** 51 +- **RPC Endpoint for XDC Apothem:** +* https://rpc.apothem.network + +- **WebSocket Endpoint:** wss://ws.apothem.network +- **Consensus Mechanism:** XDPoS (XinFin Delegated Proof of Stake) +- **Block Finality:** >75% +- **Consensus Nodes:** Up to 108 (Masternodes) +- **Genesis Block Date:** 2019-05-31 +- **Transaction Fee:** Gas price 0.25 Gwei + +----------- + +## Devnet RPC +The XDC Devnet is a specialized test environment for the XDC Network, designed to closely mirror the Mainnet's functionality. The Devnet provides developers with a safe, controlled setting to test, deploy, and refine their applications using test tokens instead of real assets. This environment is crucial for ensuring that applications are robust and secure before they go live on the Mainnet. + +**Public Networks** +Similar to the Mainnet, users can access the XDC Devnet via an internet connection and a full node RPC. The Devnet allows developers to perform the same operations they would on the Mainnet, including reading blockchain data, creating and validating transactions, and deploying smart contracts. However, since the Devnet operates with test tokens, developers can experiment freely without the financial risks associated with live transactions. + +## XDC TestNet Specifications +- **Chain ID:** 551 +- **RPC Endpoint for XDC Devnet:** +* https://devnetstats.apothem.network/devnet + +- **WebSocket Endpoint:** +- **Consensus Mechanism:** XDPoS (XinFin Delegated Proof of Stake) +- **Block Finality:** >75% +- **Consensus Nodes:** Up to 108 (Masternodes) +- **Genesis Block Date:** 2019-05-31 +- **Transaction Fee:** Gas price 0.25 Gwei + diff --git a/docs/xdcchain/developers/node_operators/bootstrap.md b/docs/xdcchain/developers/node_operators/bootstrap.md new file mode 100644 index 0000000..a3362af --- /dev/null +++ b/docs/xdcchain/developers/node_operators/bootstrap.md @@ -0,0 +1,58 @@ +--- +title: Run XDC Nodes using Bootstrap Script +--- + +# Setup XDC Masternode using Bootstrap Script + +## For Mainnet + +**Bootstrap Command XinFin Node Setup:** + +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +``` + +**Examples:** +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "mainnet". +``` +$ sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +[sudo] password for user: +Please enter your XinFin Network (mainnet/testnet/devnet) :- mainnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "Demo_Server." +``` +Your running network is mainnet +Please enter your XinFin MasterNode Name :- Demo_Server +Your Masternode Name is Demo_Server + +``` + + +## For Testnet +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "testnet". +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +Please enter your XinFin Network (mainnet/testnet/devnet) :- testnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "test01" +``` +Your running network is testnet +Please enter your XinFin MasterNode Name :- test01 +Your Masternode Name is test01 +``` + +## For Devnet +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "devnet". +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +Please enter your XinFin Network (mainnet/testnet/devnet) :- devnet +Your running network is devnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "test01" +``` +Please enter your XinFin MasterNode Name :- test01 +Your Masternode Name is test01 +Generate new private key and wallet address. +If you have your own key, you can change after this and restart the node +Type 'Y' or 'y' to continue: +``` \ No newline at end of file diff --git a/docs/xdcchain/developers/node_operators/docker.md b/docs/xdcchain/developers/node_operators/docker.md new file mode 100644 index 0000000..f39fbed --- /dev/null +++ b/docs/xdcchain/developers/node_operators/docker.md @@ -0,0 +1,169 @@ +--- +title: Setup XDC Masternode using Docker +--- + +# Setup XDC Masternode using Docker + +## Setting up XDC Network Masternode Docker version + +The server or VPS used for the masternode should be directly facing the internet with a public IP and without NAT. + + +**Operating System**: Ubuntu 20.04 64-bit or higher + +Should be facing internet directly with **public IP** & **without NAT** + +**Tools**: Docker, Docker Compose(1.27.4+) + +Setup (For Ubuntu 20.04 64-bit or higher Operating System) + +Follow the written steps starting from step 1, or you can watch the video tutorials: + + + +## Step 1: Clone repository +```bash +git clone https://github.com/XinFinOrg/XinFin-Node.git + +``` + +## Step 2: Change directory +Then we change the directory to XinFin-Node +```bash +cd XinFin-Node +``` + +## Step 3: Install docker +We need to install Docker and Docker-Compose by running the following command: +```bash +sudo ./setup/install_docker.sh +``` + +## Step 4: +Create a new .env file and copy the env.example file that exist in the mainnet directory. We will ensure we are in the "mainnet" directory by typing these commands. Once in edit mode for the .env file, name your masternode and use an email address in the respective fields +```bash +cd mainnet +cp env.example .env +nano .env + +``` +**For Testnet** +```bash +cd testnet +cp env.example .env +nano .env +``` + +## Step 5: Start your Node +**For Mainnet run the following commands:** +```bash +cd mainnet +sudo docker-compose -f docker-compose.yml up -d +``` +At this point you should be able to see your masternode on the list of nodes here or as shown below: + +![node-sync](xdcchain/img/node_sync.png) + +For Testnet run the following commands: +```bash +cd testnet +sudo docker-compose -f docker-compose.yml up -d +``` +You should be able to see your node listed on the [Apothem Network] page. Select **"Switch to LiveNet"** to check **LiveNetwork** Stats and Select **"Switch to TestNet"** for **TestNetwork**. + +Your coinbase address can be found in xdcchain/coinbase.txt file. + +For troubleshooting purposes, you can stop the node by using the following command on either Mainnet or Testnet: +```bash +sudo docker-compose -f docker-compose.yml down +``` + +**Downloading a Network Snapshot (Mainnet or Apothem)** + +The following steps are to expedite the syncing process of your node with the XDC Network. If you followed the steps above, your node will take 3-4 days to sync up with the network fully. You can reduce that time by downloading a network snapshot and bringing your node back up after the chain has been downloaded and unpacked. + + + +# Mainnet Snapshot + +**Bring down your node:** +```bash +sudo docker-compose -f docker-compose.yml down +``` +**Remove the old xdchain file from the server** +```bash +rm -rf xdcchain.tar +``` +**Download the snapshot** +```bash +wget https://download.xinfin.network/xdcchain.tar +``` +**Unpack the xdcchain.tar file** +```bash +tar -xvzf xdcchain.tar +``` +**The unpacking will take some time, and it will look like this:** + +img + +**The following command will move the xdcchain/XDC to xdcchain/XDC_backup** +```bash +mv xdcchain/XDC xdcchain/XDC_backup +mv XDC xdcchain +``` + +**Then we are going to remove the old "nodekey" file** +```bash +rm -rf xdcchain/XDC/nodekey +``` + +**The last step is to run the bash upgrade.sh command** +```bash +bash upgrade.sh +``` + +This command will bring your node up and it will start syncing to the network. Once up and running, your node will be synced to the network in just a few minutes. + +img + +# Apothem Snapshot + +**Bring down your node:** +```bash +sudo docker-compose -f docker-compose.yml down +``` + +**Remove the old xdchain file from the server** +```bash +rm -rf apothem.tar +``` + +**Download the snapshot** +```bash +wget https://download.apothem.network/apothem.tar +``` + +**Unpack the apothem.tar file** +```bash +tar -xvzf apothem.tar +``` + +**Move the xdcchain-testnet** +```bash +mv XDC xdcchain-testnet +``` + +**Bring up the node** +```bash +sudo docker-compose -f docker-compose.yml up -d +``` + + + + + + + + + + diff --git a/docs/xdcchain/developers/node_operators/dockerimg.md b/docs/xdcchain/developers/node_operators/dockerimg.md new file mode 100644 index 0000000..34dca64 --- /dev/null +++ b/docs/xdcchain/developers/node_operators/dockerimg.md @@ -0,0 +1,20 @@ +--- +title: Docker Image for the XDC Network +--- + +# Docker Image for the XDC Network + +## What is a Docker Image? + +A Docker image is a lightweight, stand-alone, executable package that includes everything needed to run an application, including code, runtime, libraries, and configurations. In the context of blockchain, Docker images simplify the deployment and management of nodes by enabling developers to encapsulate the entire blockchain environment into a single, replicable package. + +## Purpose of the XDC Network's Docker Image +For the XDC Network, the Docker image provides a standardized and efficient way for developers to deploy, manage, and update their XDC nodes. The XDC Docker image streamlines the node deployment process, reducing configuration errors and minimizing setup time. It allows developers to run nodes in isolated containers, ensuring a consistent environment across different infrastructures. + +## Key features of the XDC Docker image include: + +1. Ease of Deployment: Developers can deploy XDC nodes with just a few simple commands, reducing the complexity of setup. +2. Portability: Docker images are portable, meaning they can run consistently across various platforms, including local machines, cloud environments, and virtualized infrastructure. +3. Version Control: The XDC Docker image includes versioning, allowing developers to choose specific versions for compatibility testing or deployment. +4. Improved Security: Isolated environments reduce security risks as each container runs independently from the host system. + diff --git a/docs/xdcchain/developers/node_operators/masternode.md b/docs/xdcchain/developers/node_operators/masternode.md new file mode 100644 index 0000000..d2620ad --- /dev/null +++ b/docs/xdcchain/developers/node_operators/masternode.md @@ -0,0 +1,373 @@ +--- +title: Masternode +--- + +# Run a Node +Nodes are computers or servers that run an application software known as clients to perform essential tasks on a blockchain network. These tasks can include transactions, block creation, consensus, network security, and other operational tasks for the network. The tasks and functionalities a node execute depend on the type of node, with each node having different system requirements and deployment processes. This section will provide details and information on how to run and maintain nodes on the XDC Network. + +# Masternodes +The XDC Network runs on a globally distributed system of masternodes that participate in a Delegated Proof of Stake (DPoS) consensus mechanism. To enhance network integrity and security, Masternodes are required to complete a KYC process and stake 10,000,000 XDC. Masternodes can be identified as “Validator” or “Standby” Masternodes. + +# Standby Masternodes +Standby Masternodes (or “Standby Nodes”) are identical in form and function to Validators but do not participate in validating transactions and block creation. These nodes are on standby to fill the role of Validators that drop from network participation. + +To host an XDC Masternode/Standby node, there are specific prerequisites that you need to meet in terms of hardware, software, and staking requirements. Below is a detailed list: + +## Hardware Requirements +To ensure smooth operation and optimal performance of the XDC Masternode, the following hardware specifications are recommended: + +- **Processor (CPU):** 6 Core +- **Memory (RAM):** Minimum 16 GB +- **Storage (SSD):** At least 1TB SSD or NVMe (solid-state drive) to accommodate blockchain data +- **Network:** Stable internet connection with at least 1 Gbps bandwidth (upstream and downstream) +- **Operating System:** Ubuntu 22.04 LTS (recommended) + +## Software Requirements +Ensure that you have the following software and dependencies installed on your server before proceeding with the XDC Masternode setup: + +- **Ubuntu OS (20.04/22.04 LTS)** +- **Docker:** A containerization tool for deploying and running the masternode environment +- **Golang (Go):** For XDC node compilation and execution +- **Git:** For cloning necessary repositories +- **Firewall:** Properly configured firewall rules (allowing ports such as 30303) + +## Staking Requirements +To host an XDC Masternode, a certain amount of XDC tokens must be staked. This ensures that the node operator has a vested interest in the security and performance of the network. + +- **XDC Token Stake:** A minimum of **10 million XDC** tokens is required to run a Masternode. These tokens must be locked in your Masternode wallet. + +## XDC Wallet Setup +You must set up an XDC wallet to manage your funds and staking: + +- **XDC Wallet Address:** A valid XDC wallet address is needed to stake and manage the **10 million XDC** tokens. +- **Backup:** Ensure that you have securely backed up your wallet’s private keys or seed phrase to avoid any loss of funds. + +# Setup XDC Masternode using Bootstrap Script + +## For Mainnet + +**Bootstrap Command for XDC Masternode Setup:** + +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +``` + +**Examples:** +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "mainnet". +``` +$ sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +[sudo] password for user: +Please enter your XinFin Network (mainnet/testnet/devnet) :- mainnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "Demo_Server." +``` +Your running network is mainnet +Please enter your XinFin MasterNode Name :- Demo_Server +Your Masternode Name is Demo_Server + +``` + +## For Testnet +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "testnet". +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +Please enter your XinFin Network (mainnet/testnet/devnet) :- testnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "test01" +``` +Your running network is testnet +Please enter your XinFin MasterNode Name :- test01 +Your Masternode Name is test01 +``` + +## For Devnet +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "devnet". +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +Please enter your XinFin Network (mainnet/testnet/devnet) :- devnet +Your running network is devnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "test01" +``` +Please enter your XinFin MasterNode Name :- test01 +Your Masternode Name is test01 +Generate new private key and wallet address. +If you have your own key, you can change after this and restart the node +Type 'Y' or 'y' to continue: +``` +--------------------------------------------------------------- + + +# How to Stake XDC on a Masternode/Standby node + +### Prerequisites +To stake XDC and run a masternode, you will need the following: + +- XDCPay, XinFin Web Wallet, or a hardware wallet (Trezor supported) +- 10,000,000 XDC (mainnet tokens) or test XDC (for the Apothem testnet) +- Your coinbase address (retrievable from your masternode) + +**Note:** You do not need 10,000,000 XDC to run a node solely for RPC queries or accessing live data from the blockchain. This guide covers staking for masternode candidates. + + +## Step-by-Step Process to Stake Your XDC Node + +### 1. Access the Staking Platform + +- Visit [XinFin Masternode](https://master.xinfin.network/) page. +- Select either the **Mainnet** (for real staking) or **Apothem** (for testnet staking). + +### 2. Log In to Your Wallet + +- Click on the **Login** button on the masternode page. +- You’ll be presented with multiple login options, including XDCPay, WalletConnect v2, Private Key/Mnemonic, Ledger Wallet or Trezor. +- For this guide, we'll use XDCPay: + - Open XDCPay and ensure you are connected to either the Mainnet or Apothem network. + - Log in to your wallet using XDCPay. + +### 3. Become a Masternode Candidate + +- Once logged in, click the **Become a Candidate** button on the dashboard. +- A new screen will appear where you will enter your KYC (Know Your Customer) information. +- KYC Process: + - Upload your required KYC documents (you can find downloadable templates linked in the form). + - Once uploaded, the system will show a "KYC True" status, indicating your KYC has been approved. + +### 4. Enter Your Coinbase Address + +- After completing KYC, input your **Coinbase address**. This address is specific to your masternode and can be retrieved by logging into your node. + +### 5. Confirm and Apply for Staking + +- Click on **Apply** to stake your XDC and become a masternode candidate. +- Your XDCPay wallet will prompt you to **sign the transaction**. Review the details and click Confirm. + +### 6. Transaction Confirmation + +- After confirming, your staking transaction will be processed. Once successful, you’ll receive a notification in the bottom-right corner of the screen. +- To verify the transaction, navigate to your XDCPay wallet, click on **Transactions**, and look for the **Propose** event. This event confirms your candidacy as a masternode. + +--------------------------------------------------------------- + +# Setup XDC Masternode/Standby node using One-Click Installer + +### Method 1: Setup XinFin’s XDC Masternode One-click Installer ### + +To qualify for Masternode on XinFin Network, you need at least **10,000,000 XDC, for the long term.** + + +**Operating System**: + +* Apple Mac +* Windows +* Linux - Ubuntu + +## Step 1: +**Download [XDC One-Click Installer](https://xinfin.org/setup-masternode) (to setup Masternode) for Windows, Linux, and Mac OS and Install on your local machine.** + +## Step 2: +**Now Run the One Click Installer, Make sure you read the Terms properly then click on I Agree button.** + +* **"C:\Program Files\XinFin-Network"** this will be your destination folder and this **"C:\Users\...\AppData\Roaming\XDCChain"** will contain your Keystore folder. +* Make sure, you create a backup of your Keystore folder. +* Now click on "XinFin Network" One click installer. +* You can see the address of One Click Installer in left side, Also you can change the Network. +* For changing the Network, click on "Develop" then select "Network" (XinFin - Main Network/ XinFin Apothem Network) +* You can check the Node status under the **[stats.xinfin.network](http://stats.xinfin.network/)** + + +**Step 3: Create a wallet for Masternode** + +* Create your wallet address with Mnemonic Phrase or with Keystore. We always recommend to use Keystore for running a Masternode. +* Enter a strong password while creating the wallet. +* **Don't lose your Keystore file** +* **Don't share it with anyone** +* **Always take a backup of your Keystore file.** +* **If you lose it, all your funds will get locked.** +* After creating backup, Download your Keystore file. +* Now Access your wallet with Keystore and enter a valid password properly to access your wallet. +* If you are hosting a Masternode on Testnet then copy the Wallet address and paste it on **[XDC Faucet](https://faucet.apothem.network/)** for the Testnet XDC + + +**Step 4: Host your Masternode** + +* For hosting the Masternode, you need to copy the private key and login the Masternode. +* For uploading the KYC, click on the "Become a Masternode" +* Check the KYC criteria, the KYC file should be in pdf format only. +* Once you upload your KYC, you need to enter the "Coinbase Address" which is in One Click Installer after that click on Apply button. +* Now you will be notify with sucessful toaster i.e **"You have successfully applied for Masternode"** +* You can check all the status regarding your Masternode here: **[master.apothem.network](https://master.apothem.network/)**. + +--------------------------------------------------------------- + +# Setup XDC Masternode/Standby node using Docker + +## Setting up XDC Network Masternode Docker version + +The server or VPS used for the masternode should be directly facing the internet with a public IP and without NAT. + + +**Operating System**: Ubuntu 20.04 64-bit or higher + +Should be facing internet directly with **public IP** & **without NAT** + +**Tools**: Docker, Docker Compose(1.27.4+) + +Setup (For Ubuntu 20.04 64-bit or higher Operating System) + +Follow the written steps starting from step 1, or you can watch the video tutorials: + + + +## Step 1: Clone repository +```bash +git clone https://github.com/XinFinOrg/XinFin-Node.git + +``` + +## Step 2: Change directory +Then we change the directory to XinFin-Node +```bash +cd XinFin-Node +``` + +## Step 3: Install docker +We need to install Docker and Docker-Compose by running the following command: +```bash +sudo ./setup/install_docker.sh +``` + +## Step 4: +Create a new .env file and copy the env.example file that exist in the mainnet directory. We will ensure we are in the "mainnet" directory by typing these commands. Once in edit mode for the .env file, name your masternode and use an email address in the respective fields +```bash +cd mainnet +cp env.example .env +nano .env + +``` +**For Testnet** +```bash +cd testnet +cp env.example .env +nano .env +``` + +## Step 5: Start your Node +**For Mainnet run the following commands:** +```bash +cd mainnet +sudo docker-compose -f docker-compose.yml up -d +``` +At this point you should be able to see your masternode on the list of nodes here or as shown below: + +![node-sync](xdcchain/img/node_sync.png) + +For Testnet run the following commands: +```bash +cd testnet +sudo docker-compose -f docker-compose.yml up -d +``` +You should be able to see your node listed on the [Apothem Network] page. Select **"Switch to LiveNet"** to check **LiveNetwork** Stats and Select **"Switch to TestNet"** for **TestNetwork**. + +Your coinbase address can be found in xdcchain/coinbase.txt file. + +For troubleshooting purposes, you can stop the node by using the following command on either Mainnet or Testnet: +```bash +sudo docker-compose -f docker-compose.yml down +``` + +--------------------------------------------------------------- + +# Downloading a Network Snapshot (Mainnet or Apothem) + +The following steps are to expedite the syncing process of your node with the XDC Network. If you followed the steps above, your node will take 3-4 days to sync up with the network fully. You can reduce that time by downloading a network snapshot and bringing your node back up after the chain has been downloaded and unpacked. + + + +# Mainnet Snapshot + +**Bring down your node:** +```bash +sudo docker-compose -f docker-compose.yml down +``` +**Remove the old xdchain file from the server** +```bash +rm -rf xdcchain.tar +``` +**Download the snapshot** +```bash +wget https://download.xinfin.network/xdcchain.tar +``` +**Unpack the xdcchain.tar file** +```bash +tar -xvzf xdcchain.tar +``` +**The unpacking will take some time, and it will look like this:** + +img + +**The following command will move the xdcchain/XDC to xdcchain/XDC_backup** +```bash +mv xdcchain/XDC xdcchain/XDC_backup +mv XDC xdcchain +``` + +**Then we are going to remove the old "nodekey" file** +```bash +rm -rf xdcchain/XDC/nodekey +``` + +**The last step is to run the bash upgrade.sh command** +```bash +bash upgrade.sh +``` + +This command will bring your node up and it will start syncing to the network. Once up and running, your node will be synced to the network in just a few minutes. + +img + +# Apothem Snapshot + +**Bring down your node:** +```bash +sudo docker-compose -f docker-compose.yml down +``` + +**Remove the old xdchain file from the server** +```bash +rm -rf apothem.tar +``` + +**Download the snapshot** +```bash +wget https://download.apothem.network/apothem.tar +``` + +**Unpack the apothem.tar file** +```bash +tar -xvzf apothem.tar +``` + +**Move the xdcchain-testnet** +```bash +mv XDC xdcchain-testnet +``` + +**Bring up the node** +```bash +sudo docker-compose -f docker-compose.yml up -d +``` + + + diff --git a/docs/xdcchain/developers/node_operators/node_architecture.md b/docs/xdcchain/developers/node_operators/node_architecture.md new file mode 100644 index 0000000..78fc332 --- /dev/null +++ b/docs/xdcchain/developers/node_operators/node_architecture.md @@ -0,0 +1,40 @@ +--- +title: XDC Node Architecture +--- + +# XDC Node Architecture + +The XDC Network is a hybrid blockchain platform designed to support both public and private states, offering enterprises the ability to conduct secure, scalable, and fast transactions. At the core of this network is its node architecture, which plays a crucial role in maintaining the network's integrity, security, and efficiency. This document provides a comprehensive overview of the XDC Node Architecture, detailing the various components and their functions. + +The XDC Network operates on a Delegated Proof of Stake (XDPoS) consensus mechanism, which ensures low energy consumption and high transaction throughput. The network is EVM-compatible, allowing it to support smart contracts and decentralized applications (dApps). + +## Node Types in XDC Network + +The XDC Network comprises several types of nodes, each serving a unique function within the ecosystem. These nodes are essential for network operations, including transaction validation, block creation, and consensus. + +**Masternodes (Validator Nodes):** + +- **Role:** Masternodes are responsible for validating transactions, proposing and finalizing blocks, and maintaining consensus within the network. +Requirements: To run a Masternode, operators must stake a 10 Million XDC, ensuring they have a vested interest in the network's security and performance. +Functionality: These nodes participate in the consensus mechanism, verifying transactions and adding them to the blockchain. They also play a role in voting on protocol upgrades and governance decisions. + +## Full Nodes: +- **Role:** Full Nodes store the entire blockchain ledger, validating blocks and transactions independently. +- **Requirements:** Operators of Full Nodes do not need to stake XDC but must maintain a certain level of computing resources to store and process the entire blockchain. +- **Functionality:** These nodes propagate transactions across the network, ensuring that all participants have access to the same data. Full Nodes contribute to network security by verifying the integrity of the blockchain. + +## Node Communication and Network Topology + +The XDC Network employs a peer-to-peer (P2P) communication model where nodes interact directly with each other to share information and propagate transactions. + +* **Gossip Protocol:** + - Nodes in the XDC Network use a gossip protocol to disseminate information about transactions and blocks. This protocol ensures that all nodes are kept up-to-date with the latest state of the blockchain, maintaining network consistency and reducing the likelihood of forks. + +* **Networking Layers:** + - **Overlay Network:** The XDC Network uses an overlay network to facilitate communication between nodes. This layer abstracts the underlying physical network, providing a virtual topology that is more manageable and secure. + - **Transport Layer:** The transport layer is responsible for ensuring reliable communication between nodes. It handles data transmission, error checking, and retransmission in case of data loss. + + + + + diff --git a/docs/xdcchain/developers/node_operators/one-click-installer.md b/docs/xdcchain/developers/node_operators/one-click-installer.md new file mode 100644 index 0000000..8cadf8c --- /dev/null +++ b/docs/xdcchain/developers/node_operators/one-click-installer.md @@ -0,0 +1,54 @@ +--- +title: Run XDC Nodes using One-Click Installer +--- + +# Setup XDC Masternode using One-Click Installer + +### Method 1: Setup XinFin’s XDC Masternode One-click Installer ### + +To qualify for Masternode on XinFin Network, you need at least **10,000,000 XDC, for the long term.** + + +**Operating System**: + +* Apple Mac +* Windows +* Linux - Ubuntu + +## Step 1: +**Download [XDC One-Click Installer](https://xinfin.org/setup-masternode) (to setup Masternode) for Windows, Linux, and Mac OS and Install on your local machine.** + +## Step 2: +**Now Run the One Click Installer, Make sure you read the Terms properly then click on I Agree button.** + +* **"C:\Program Files\XinFin-Network"** this will be your destination folder and this **"C:\Users\...\AppData\Roaming\XDCChain"** will contain your Keystore folder. +* Make sure, you create a backup of your Keystore folder. +* Now click on "XinFin Network" One click installer. +* You can see the address of One Click Installer in left side, Also you can change the Network. +* For changing the Network, click on "Develop" then select "Network" (XinFin - Main Network/ XinFin Apothem Network) +* You can check the Node status under the **[stats.xinfin.network](http://stats.xinfin.network/)** + + +**Step 3: Create a wallet for Masternode** + +* Create your wallet address with Mnemonic Phrase or with Keystore. We always recommend to use Keystore for running a Masternode. +* Enter a strong password while creating the wallet. +* **Don't lose your Keystore file** +* **Don't share it with anyone** +* **Always take a backup of your Keystore file.** +* **If you lose it, all your funds will get locked.** +* After creating backup, Download your Keystore file. +* Now Access your wallet with Keystore and enter a valid password properly to access your wallet. +* If you are hosting a Masternode on Testnet then copy the Wallet address and paste it on **[XDC Faucet](https://faucet.apothem.network/)** for the Testnet XDC + + +**Step 4: Host your Masternode** + +* For hosting the Masternode, you need to copy the private key and login the Masternode. +* For uploading the KYC, click on the "Become a Masternode" +* Check the KYC criteria, the KYC file should be in pdf format only. +* Once you upload your KYC, you need to enter the "Coinbase Address" which is in One Click Installer after that click on Apply button. +* Now you will be notify with sucessful toaster i.e **"You have successfully applied for Masternode"** +* You can check all the status regarding your Masternode here: **[master.apothem.network](https://master.apothem.network/)**. + + diff --git a/docs/xdcchain/developers/node_operators/slashing.md b/docs/xdcchain/developers/node_operators/slashing.md new file mode 100644 index 0000000..047ffb5 --- /dev/null +++ b/docs/xdcchain/developers/node_operators/slashing.md @@ -0,0 +1,54 @@ +--- +title: XDC Network - Slashing Mechanism +--- + +# XDC Network - Slashing Mechanism + +The XDC Network, utilizing the XDPoS (Delegated Proof of Stake) consensus mechanism, ensures that its validators, known as masternodes, maintain optimal performance to keep the network stable and secure. One of the key features designed to ensure this reliability is the slashing mechanism, which acts as a corrective measure for underperforming masternodes. + +## Objective of the Slashing Mechanism + +The primary goal of the slashing mechanism is not to penalize or blame masternodes but to maintain a stable and high-performing network. It serves to mitigate issues arising from underperforming masternodes by holding them accountable while ensuring the overall system remains efficient. + +## How the XDC Network Slashing Mechanism Works +The slashing mechanism operates with a clear set of rules to manage masternode performance: + +### 1. Non-Participation in Block Signing: + +* If a masternode fails to sign any block during an entire epoch (a defined period within the consensus process), it will be slashed. +* The penalty for not participating in block creation during the epoch is exclusion from block production for the next four epochs. This temporary exclusion incentivizes masternodes to maintain uptime and perform their duties diligently. + +### 2. Handling Multiple Underperforming Masternodes: + +* If multiple masternodes are underperforming within the same epoch, they face similar slashing penalties. Masternodes that have been underperforming for the past four epochs will be kicked out of the active masternode list and are not eligible to create blocks. +* Consequently, the number of active masternodes responsible for block creation in the following epoch could drop below the full 108, which is the maximum number of validators. In such cases, the system dynamically adjusts, allowing active masternodes to proceed with block creation without waiting for the underperforming ones. + +### 3. Role After Being Slashed: + +* A slashed masternode can still participate in block verification and signing. This enables it to demonstrate liveness to the network by submitting signatures for new blocks. +* However, the slashed masternode is ineligible for rewards during the slashed period. It can continue verifying and signing blocks, but this participation only serves as a signal of its recovery and does not result in earning block rewards. + +## Properties of the XDC Network Slashing Mechanism** +### 1. Accountability: + +* The XDPoS consensus protocol ensures accountability by detecting masternodes that remain inactive for an entire epoch. A smart contract known as the Block Signer tracks the activity of each masternode. +* The Block Signer stores the signatures from all masternodes, making it easy to determine whether a masternode has been performing its duties. If a masternode has failed to provide the required number of signatures during an epoch, the slashing mechanism is triggered. + +### 2. Liveness: + +* A core feature of the slashing mechanism is to allow slashed masternodes to regain their status. After being excluded from the active masternode list for four epochs, the masternode can return to normal operations if it resumes block verification and signing during the slashed period. +* This property ensures that temporarily underperforming masternodes, which may have experienced technical issues such as power outages, can rejoin the network without permanent penalties. + +## Comparison to Other Slashing Mechanisms +The concept of slashing is not unique to the XDC Network and has been implemented in various other blockchain networks, such as Ethereum’s Casper FFG (Friendly Finality Gadget). Casper’s slashing mechanism is designed to prevent the "nothing-at-stake" problem, where validators can choose to support multiple forks of the blockchain. In Casper, if a validator is found to have validated conflicting forks, they are severely penalized by losing a significant portion, or even all, of their staked tokens. + +Unlike Casper’s more punitive approach aimed at preventing malicious behavior, the XDC Network’s slashing mechanism is designed to handle unintentional underperformance. Rather than harshly punishing validators for outages or system failures, XDC’s system focuses on ensuring network performance without creating fear of excessive penalties. The design philosophy behind XDC’s slashing mechanism is to avoid deterring participation by maintaining a fair yet firm system. + +## Benefits of the XDC Slashing Mechanism +* Network Stability: By detecting and penalizing underperforming masternodes, the XDC Network ensures that the overall system remains stable and efficient. +* Encouraging Performance: Masternodes are incentivized to maintain their performance to avoid being slashed and losing rewards. +* Reduced Risk for Validators: Validators are not permanently penalized for minor lapses, such as technical issues, which encourages wider participation in the network without fear of catastrophic loss. + + + + diff --git a/docs/xdcchain/developers/node_operators/validator_node.md b/docs/xdcchain/developers/node_operators/validator_node.md new file mode 100644 index 0000000..9c5847c --- /dev/null +++ b/docs/xdcchain/developers/node_operators/validator_node.md @@ -0,0 +1,68 @@ +--- +title: Validator/Standby Node +--- + +## Validator Masternode +Validator Masternodes operate and participate in XDC Network’s DPoS consensus engine, validating transactions and block creation. + +## Standby Masternodes +Standby Masternodes (or “Standby Nodes”) are identical in form and function to Validators but do not participate in validating transactions and block creation. These nodes are on standby to fill the role of Validators that drop from network participation. + +# Setup XDC Validator/Standby Node using Bootstrap Script + +## For Mainnet + +**Bootstrap Command XDC Validator/Standby Node Setup:** + +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +``` + +**Examples:** +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "mainnet". +``` +$ sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +[sudo] password for user: +Please enter your XinFin Network (mainnet/testnet/devnet) :- mainnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "Demo_Server." +``` +Your running network is mainnet +Please enter your XinFin MasterNode Name :- Demo_Server +Your Masternode Name is Demo_Server + +``` + + +## For Testnet +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "testnet". +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +Please enter your XinFin Network (mainnet/testnet/devnet) :- testnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "test01" +``` +Your running network is testnet +Please enter your XinFin MasterNode Name :- test01 +Your Masternode Name is test01 +``` + +## For Devnet +After running the bootstrap command, the system will prompt you to specify the network. To connect to the Mainnet, simply enter "devnet". +``` +sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/master/setup/bootstrap.sh)" root +Please enter your XinFin Network (mainnet/testnet/devnet) :- devnet +Your running network is devnet +``` +Next, you will be asked to input your XinFin Masternode name. Enter your desired Masternode name, such as "test01" +``` +Please enter your XinFin MasterNode Name :- test01 +Your Masternode Name is test01 +Generate new private key and wallet address. +If you have your own key, you can change after this and restart the node +Type 'Y' or 'y' to continue: +``` + +# Setup XDC Masternode using One-Click Installer + +To Setup XDC Masternode using One-Click Installer, [refer](./masternode.md/#setup-xdc-masternode-using-one-click-installer) \ No newline at end of file diff --git a/docs/xdcchain/developers/quick-guide.md b/docs/xdcchain/developers/quick-guide.md new file mode 100644 index 0000000..865f893 --- /dev/null +++ b/docs/xdcchain/developers/quick-guide.md @@ -0,0 +1,61 @@ +--- +title: Quick Guide: XDC Chain +--- + +Welcome to the Quick Guide for XDC Chain! This document is designed to provide you with a comprehensive overview of the XDC Network, its technology, and the tools you need to start your journey. Whether you're new to blockchain or an experienced developer, this guide will help you navigate the key resources and get up to speed with the XDC Network. + +## Getting Started + +The XDC Network is a powerful, enterprise-grade blockchain platform designed to facilitate secure, efficient, and scalable decentralized applications (DApps) and global trade solutions. If you're just starting your journey with the XDC Network, this section will help you understand the fundamental concepts, terminology, and processes. + +## Mainnet + +The XDC Network's Mainnet is the live, operational blockchain where actual transactions take place. Understanding the Mainnet is crucial for interacting with the XDC Network in a real-world environment. + +- **Mainnet Details:** Learn more about the XDC Mainnet, its architecture, and operational specifics. [Network Information and RPC Providers](./rpc.md) +- **Explorer:** Track transactions, smart contracts, and more on the XDC Mainnet using the official blockchain explorer. [Mainnet Explorer](https://xdcscan.io/) +- **Stats:** Access real-time statistics about the XDC Mainnet, including transaction volumes, network health, and more. [Mainnet Stats](https://stats.xdc.org/) | [XinFin Network Stats](https://xinfin.network/#stats) + +## Apothem Testnet + +The Apothem Testnet is the testing environment for the XDC Network. It's an ideal place to experiment with your DApps, smart contracts, and other blockchain-based solutions before deploying them on the Mainnet. + +- **Testnet Details:** Get an in-depth understanding of the Apothem Testnet and how to use it effectively. [Testnet Details](./rpc.md) +- **Explorer:** View and track transactions on the Apothem Testnet using the official Testnet explorer. [Apothem/Testnet Explorer](https://apothem.xdcscan.io/) +- **Stats:** Monitor the performance and activity on the Apothem Testnet. [Testnet Stats](https://apothem.network/#stats) +- **Faucet:** Need test XDC tokens? Use the Apothem Testnet faucet to get free tokens for testing. [Get Test XDC](https://faucet.blocksscan.io/) + +## XDC Devnet +The XDC Devnet is a development-focused environment that allows developers to test and deploy their projects in a controlled setting. It’s perfect for experimenting with new features, running simulations, and fine-tuning DApps before launching them on the Mainnet or Testnet. + +- **Devnet Explorer:** Track and analyze transactions, smart contracts, and other activities on the XDC Devnet. [Devnet Explorer](https://devnet.xdcscan.io/) + +## Useful Links +Here are some additional tools and resources that will help you interact with the XDC Network more effectively: + +## XDC Wallets: + +To start using XDC, you’ll need a secure wallet—a dedicated app for storing your XDC and interacting with other apps on the XDC Network. Ensuring the safety of your XDC is crucial, so choose from a variety of trusted wallets that offer high security and unique features. [Here](https://xinfin.org/wallets) are some of the top options. + +## Additional Tools: + +- [Remix](https://remix.xinfin.network/): An online IDE for writing and deploying smart contracts on the XDC Network. +- Hardhat: A development environment for Ethereum-compatible blockchains, including XDC. +- Truffle: A development framework for Ethereum and XDC-compatible blockchains. +- Brownie: A Python-based development and testing framework for Ethereum and XDC smart contracts. + +## Community and Support +Join the vibrant community of developers, validators, and users who are actively contributing to the XDC Network's growth and innovation. Engage with the community, ask questions, and share your knowledge. + +- **Dev Forum:** +Participate in discussions, ask questions, and collaborate with other developers. [XDC Dev Forum](https://www.xdc.dev/) + +- **Discord**: +Join the official XDC Network Discord channel for real-time support and community interaction. [Join Discord](https://discord.gg/Yc4R2meFda) + +## Final Note +It's unnecessary to review every document to have a working knowledge of the XDC Network. Explore the resources as needed, dive deeper into specific sections that interest you, and don't hesitate to seek support from the community whenever necessary. + +Happy building on the XDC Network! + +For more tools and details, you can refer to [XDC Chain Network Tools and Documents](https://xinfin.org/quick-tools-guide). \ No newline at end of file diff --git a/docs/xdcchain/developers/rpc.md b/docs/xdcchain/developers/rpc.md new file mode 100644 index 0000000..a687a78 --- /dev/null +++ b/docs/xdcchain/developers/rpc.md @@ -0,0 +1,47 @@ +--- +title: XDC Network - RPC +--- + +# Network Endpoints + +The XDC Network is a robust, enterprise-grade blockchain platform designed for decentralized finance (DeFi), global trade, and other high-demand applications. For developers and users interacting with the XDC Network, the Remote Procedure Call (RPC) interface is a critical component. This guide provides a detailed overview of the RPC endpoints for both the XDC Mainnet and the Apothem Testnet, including their specifications and usage. + +## What is RPC? +Remote Procedure Call (RPC) is a protocol that allows communication between a client and a server over a network. In the context of blockchain, RPC is used to interact with the blockchain network by sending requests to full nodes. These requests can include reading blockchain data, creating and broadcasting transactions, and deploying smart contracts. + +## Mainnet Environment + +| Service | URL | +|------------------|------------------------------------------------------------------------| +| RPC | [https://erpc.xinfin.network](https://erpc.xinfin.network) | +| Chain Id | 50 | +| Faucet endpoint | [https://chains.tools/faucet](https://chains.tools/faucet) | +| Explorer | [https://xdcscan.io/](https://xdcscan.io/) | + +## Apothem Environment + +| Service | URL | +|------------------|------------------------------------------------------------------------| +| RPC | [https://rpc.apothem.network](https://rpc.apothem.network) | +| Chain Id | 51 | +| Faucet endpoint | [https://faucet.blocksscan.io/](https://faucet.blocksscan.io/) | +| Explorer | [https://apothem.xdcscan.io/](https://apothem.xdcscan.io/) | + + +## Devnet Environment + +| Service | URL | +|------------------|------------------------------------------------------------------------| +| RPC | [https://devnetstats.apothem.network/devnet](https://devnetstats.apothem.network/devnet) | +| Chain Id | 551 | +| Faucet endpoint | [https://faucet.blocksscan.io/](https://faucet.blocksscan.io/) | +| Explorer | [https://devnet.xdcscan.io/](https://devnet.xdcscan.io/) | + + + + + + + + + diff --git a/docs/xdcchain/developers/wallet-configuration.md b/docs/xdcchain/developers/wallet-configuration.md new file mode 100644 index 0000000..bffc4dc --- /dev/null +++ b/docs/xdcchain/developers/wallet-configuration.md @@ -0,0 +1,36 @@ +--- +title: Wallet Configuration - XDC Network +--- + + +# Wallet configuration + +You can use any Ethereum wallet with XDC. For instance, I will show you how to set up Metamask and Trustwallet for XDC. + + *Testnet/Apothem* + + - Network Name: XDC Testnet/Apothem + - RPC URL: [https://rpc.apothem.network/](https://rpc.apothem.network/) + - ChainID: 51 + - Symbol: tXDC + - Explorer: [https://apothem.xdcscan.io/](https://apothem.xdcscan.io/) + + *Mainnet* + + - Network Name: XDC Mainnet + - RPC URL: [https://erpc.xinfin.network](https://erpc.xinfin.network) + - ChainID: 50 + - Symbol: XDC + - Explorer: [https://xdcscan.io/](https://xdcscan.io/) + + + + + +*Depending on your location and preference, you can choose from a variety of RPC endpoints for XDC. For more information about the endpoints and their features, please refer to the network information document that we have prepared for you. To ensure the best performance and user experience, you can test the latency of each endpoint before you configure it with your wallet. [Refer](https://chainlist.org/)* diff --git a/docs/xdcchain/evmtoxdc.md b/docs/xdcchain/evmtoxdc.md new file mode 100644 index 0000000..5670160 --- /dev/null +++ b/docs/xdcchain/evmtoxdc.md @@ -0,0 +1,41 @@ +--- +title: Overview - XDC Chain +--- + +# Migrating from EVM to XDC + +Migrating a Solidity contract from Ethereum to the XDC network with Truffle involves several steps. The XDC network is a public blockchain that is EVM-compatible and designed to support enterprise-level applications. Truffle is a popular development framework for creating and deploying Solidity contracts. + +## Step 1: Install Truffle + +The first step is to install the XDC network and Truffle. This can be done by following the installation instructions provided by XDC and Truffle. + +[Installation - Truffle Suite](https://trufflesuite.com/docs/truffle/how-to/install/) + +## Step 2: Configure Truffle for XDC + +Next, Truffle needs to be configured to work with the XDC network. This involves creating a new Truffle project and configuring the Truffle config file to connect to the XDC network by using a public RPC connected to the XDC network. + +[Configuration - Truffle Suite](https://trufflesuite.com/docs/truffle/reference/configuration/) + +## Step 3: Compile the Contract + +After updating the Solidity contract, it needs to be compiled for the XDC network. This involves using the Truffle compiler to create a bytecode file that can be deployed on the XDC network. + +[Compile contracts - Truffle Suite](https://trufflesuite.com/docs/truffle/how-to/compile-contracts/) + +## Step 4: Deploy the Contract + +The next step is to deploy the updated contract on the XDC network. This can be done using Truffle's deployment commands. It is important to ensure that the contract is deployed correctly and securely. + +## Step 5: Test the Contract + +After deploying the contract, it is important to thoroughly test it on the XDC network. This includes testing all functions and features, as well as testing for security vulnerabilities. You can write tests in Truffle using Javascript to build debug and test contracts ready to be deployed onto the network + +[Write JavaScript tests - Truffle Suite](https://trufflesuite.com/docs/truffle/how-to/debug-test/write-tests-in-javascript/) + +## Step 6: Update Clients and Interfaces + +Once the contract has been migrated and tested, any clients or interfaces that interact with the contract must be updated to be compatible with the XDC network by having them point to the appropriate RPCs on the xdc network. + +For a How-To guide showing migration of a dApp from Ethereum to the XDC Network please go to [this link](https://docs.xdc.community/learn/how-to-articles/how-to-migrate-a-dapp-from-ethereum-to-the-xdc-network-using-truffle). \ No newline at end of file diff --git a/docs/xdcchain/governance/overview.md b/docs/xdcchain/governance/overview.md new file mode 100644 index 0000000..73328f2 --- /dev/null +++ b/docs/xdcchain/governance/overview.md @@ -0,0 +1,22 @@ +--- +title: Overview - XDCDAO +--- + + +# XDC Governance Overview +![governance](../img/xdcdao.png) + +The DAO Treasury within the [XDCDAO](https://www.xdcdao.org/) framework plays a critical role in the XDC Network's decentralized governance system. It is meticulously designed to manage the community's collective resources efficiently, securely, and transparently. This section provides a structured overview of the DAO Treasury, highlighting its purpose, operation, funding sources, and significance within the DAOFIN ecosystem. + +## Purpose of the DAO Treasury + +The DAO Treasury's primary objective is to support the sustainable growth and development of the XDC Network by financing projects and initiatives that align with the community's goals. It acts as the financial hub for: + +- Funding protocol enhancements. +- Supporting community-driven projects. +- Enhancing network security. +- Facilitating ecosystem expansion. + + + + diff --git a/docs/xdcchain/img/node_sync.png b/docs/xdcchain/img/node_sync.png new file mode 100644 index 0000000..025c195 Binary files /dev/null and b/docs/xdcchain/img/node_sync.png differ diff --git a/docs/xdcchain/img/xdc-net.png b/docs/xdcchain/img/xdc-net.png new file mode 100644 index 0000000..3136e6f Binary files /dev/null and b/docs/xdcchain/img/xdc-net.png differ diff --git a/docs/xdcchain/img/xdcdao-dark.png b/docs/xdcchain/img/xdcdao-dark.png new file mode 100644 index 0000000..41b29b7 Binary files /dev/null and b/docs/xdcchain/img/xdcdao-dark.png differ diff --git a/docs/xdcchain/img/xdcdao.png b/docs/xdcchain/img/xdcdao.png new file mode 100644 index 0000000..1b27b06 Binary files /dev/null and b/docs/xdcchain/img/xdcdao.png differ diff --git a/docs/xdcchain/index.md b/docs/xdcchain/index.md new file mode 100644 index 0000000..75056e1 --- /dev/null +++ b/docs/xdcchain/index.md @@ -0,0 +1,62 @@ +--- +hide: +- toc + +title: XDC Chain +--- + + + +
+
+

XDC Chain

+

The XDC Network is a cutting-edge blockchain platform designed to revolutionize the way businesses manage and exchange data, assets, and financial records. Boasting impressive speed and scalability, the XDC Network is capable of handling a high volume of transactions with minimal delays, making it ideal for enterprise-level applications. Its low transaction fees further enhance its appeal, allowing businesses to conduct operations cost-effectively.

+ +

What truly sets the XDC Network apart is its military-grade security, ensuring that all data exchanges and asset transfers are protected against potential threats. This level of security is crucial for industries where trust and confidentiality are paramount. By leveraging the XDC Network, businesses can streamline their operations, improve record-keeping accuracy, and facilitate more efficient and secure data exchanges. Whether it's in finance, supply chain management, or trade, the XDC Network provides a robust and reliable infrastructure that empowers businesses to thrive in the digital age.

+
+
+ XDC Chain +
+
+ + + +
+ + +
Developers
+

User guide to get started on XDC Chain

+
+ + +
Governance
+

XDC Network is a community-oriented ecosystem, meticulously built upon the foundation of decentralized governance.

+
+ + + +
XDC Ecosystem
+

XDC ecosystem and developer tools

+
+ +
Run a Masterode
+

How to run a XDC Masternode

+
+ +
JSON-RPC API
+

Interacting with XDC requires sending requests to specific JSON-RPC API methods.

+
+
diff --git a/docs/xdcchain/introduction.md b/docs/xdcchain/introduction.md new file mode 100644 index 0000000..57c53b1 --- /dev/null +++ b/docs/xdcchain/introduction.md @@ -0,0 +1,29 @@ +--- +title: Introduction +--- + +# Introduction + +XinFin’s XDC Network is an enterprise-ready, Layer-1, EVM-compatible, open-source, hybrid blockchain protocol specializing in tokenization for real-world decentralized finance. It uses a special type of delegated proof-of-stake (XDPoS) for consensus to ensure quick transaction times, minimal gas fees, and a remarkable 2,000+ transactions per second (TPS). + +XDC Network is backed by the XDC Community, leading to the formation of the XDC Foundation, which was established in 2021 to promote the growth and adoption of XDC through collaboration with a community of developers, trade experts, and content creators. + +## XinFin Delegated Proof of Staked Authority +- + +## Security +- + +## Fast Finality +- + +## Reward +- + +## Token Economy +- + +## Staking and Governance +- + + diff --git a/docs/xdcchain/rewards.md b/docs/xdcchain/rewards.md new file mode 100644 index 0000000..f7266b7 --- /dev/null +++ b/docs/xdcchain/rewards.md @@ -0,0 +1,23 @@ +--- +title: Rewards Mechanism +--- + +# Rewards Mechanism + +The XDC Network operates on a Delegated Proof of Stake (XDPoS) consensus mechanism, which allows for high transaction throughput, energy efficiency, and security. The network’s rewards mechanism is designed to incentivize Masternode operators and participants who contribute to the stability, security, and growth of the network. This document outlines how the XDC rewards mechanism works, who is eligible for rewards, and how rewards are distributed. + +## Overview of XDC Rewards System +In the XDC Network, rewards are primarily distributed to Masternode operators who validate transactions, secure the network, and propose new blocks. Additionally, XDC token holders who delegate their tokens to Masternodes also earn a share of the rewards. The rewards mechanism is structured to: + +Incentivize decentralization by encouraging more participants to run Masternodes or delegate their tokens. +Reward active participation in the network, such as block validation and staking. +Ensure the economic sustainability of the XDC Network over time. + +## Masternode Operator Rewards +Masternodes are critical to the XDC Network’s operations, responsible for validating transactions and maintaining consensus. To compensate for their role, Masternode operators receive rewards for every block they validate. + +- **Eligibility:** To run a Masternode, an operator must stake a minimum of 10 million XDC tokens. +- **Reward Distribution:** Masternode operators are rewarded for validating blocks, and the rewards are distributed proportionally based on their performance and uptime. +- **Block Rewards:** A fixed reward is allocated for each block validated by the network. These block rewards are divided among Masternodes based on their contribution to the network. + +**Note:** Masternodes with better uptime and performance will receive a higher portion of the rewards. diff --git a/docs/xdcchain/xdpos.md b/docs/xdcchain/xdpos.md new file mode 100644 index 0000000..53db1a4 --- /dev/null +++ b/docs/xdcchain/xdpos.md @@ -0,0 +1,48 @@ +--- +title: Overview - XDC Chain +--- + +# XDPoS - XDC's Consensus Mechanism + +XinFin Delegated Proof of Stake(XDPoS) is another form of Proof of Stake(PoS) consensus mechanism to scale up to Thousands of transactions per second. XDPOS concentrates block production in the hands of few semi-trusted entities in order to achieve more scalability than Proof of Work(PoW) or other Proof of Stake blockchains. XDPOS leverages the power of stakeholder to resolve consensus issues in a fair and democratic way. The Self KYC feature added in XinFin XDPoS is more enterprise and regulator friendly. + +## Common Terms +* **Nominator:** A coin holder who stakes or delegates their coin to one or more validator. +* **Validator:** A semi-trusted entity responsible for validating and producing blocks. +* **Epoch:** A cycle of few blocks in which validator nodes create blocks in turn. + +## Transition from PoW to XDPoS +The traditional PoW mechanism, while effective in securing networks, is highly energy-intensive due to its reliance on solving complex cryptographic puzzles across all nodes in the network. This results in significant electricity consumption and poses environmental concerns. Recognizing these drawbacks, XinFin transitioned away from PoW and adopted Proof of Stake (PoS), a more energy-efficient consensus methodology. Eventually, XinFin advanced to XinFin Delegated Proof of Stake (XDPoS), which further enhances the efficiency and security of the network. + +To understand XDC Network's decision to adopt XDPoS, it's essential to explore the various consensus mechanisms. + +## Understanding Consensus: PoW vs. PoS vs. XDPoS +In blockchain technology, consensus refers to a general agreement among nodes in the network, which is crucial for maintaining the integrity and accuracy of the distributed ledger. Unlike centralized systems like banks, where a central authority maintains records, blockchain relies on distributed ledgers to record information. Consensus ensures that all nodes agree on the state of the blockchain, including account balances, transactions, and more. + +**Proof of Work (PoW)** +PoW relies on nodes solving cryptographic puzzles to validate transactions and create new blocks. This process requires significant computational power and consumes vast amounts of electricity, making it environmentally unsustainable and costly. + +**Proof of Stake (PoS)** +PoS eliminates the need for energy-intensive computations. Instead of miners, PoS relies on validators who lock a portion of their cryptocurrency as a stake. Validators are chosen to propose the next block based on their stake and uptime. When a validator discovers a block that can be added to the blockchain, they validate it by placing a bet on it. The validators receive rewards proportional to their bets. + +**XinFin Delegated Proof of Stake (XDPoS)** +XDPoS is an evolution of PoS and offers greater efficiency. It uses a reputation-based system to achieve consensus, where master nodes create blocks in a round-robin manner. The network elects block producers (also known as witnesses) who are responsible for validating transactions and creating the next block. The key features of XDPoS include: + +* **Random Election of Block Producers:** Block producers are elected randomly and are limited in number. They are responsible for signing and creating blocks. +* **Block Validators:** These full nodes verify that the blocks created by block producers adhere to consensus rules. +* **Community Governance:** Unlike PoS, XDPoS provides the community with more governance rights, allowing them to have a greater say in the network's operations. + +## Pros and Cons of XinFin Delegated Proof of Stake +## Advantages + +* **Speed:** XDPoS enables faster transaction processing due to the limited number of witnesses involved. +* **Cost Efficiency:** The reduction in the number of participants in block creation lowers transaction costs. +* **Scalability:** XDPoS improves the network's scalability by ensuring efficient block creation and validation. +* **Security:** The reputation system and regular monitoring of witnesses help maintain the integrity of the network. Malicious actors can be penalized or removed by other master nodes. + +## Disadvantages +* **Centralization Risk:** Since only master nodes can create blocks, there is a risk of centralization if these nodes collude. +* **Limited Participation:** The limited number of block producers may reduce the inclusiveness of the consensus process. + +## Why XDC Network Prefers XDPoS +XDC Network chose XDPoS for its network due to its superior speed, cost efficiency, and scalability. XDPoS offers a more democratic, faster, and effective way to scale the network, making it the ideal consensus mechanism for XDC's hybrid blockchain platform. \ No newline at end of file diff --git a/docs/xdcchain/xdpos2.md b/docs/xdcchain/xdpos2.md new file mode 100644 index 0000000..e429ead --- /dev/null +++ b/docs/xdcchain/xdpos2.md @@ -0,0 +1,13 @@ +--- +title: Overview - XDC Chain +--- + +## XDPoS 2.0 + +Sitting at the core of the XDC Network, XinFin Delegated Proof-of-Stake consensus protocol 2.0 (XDPoS 2.0) regulates the XDC nodes in maintaining the consistency of a decentralized ledger (the blockchain) with strong security and performance guarantees. In this section, we provide an overview of XDPoS 2.0 by introducing its three pillars, including: + +1. Master node election, which specifies how the delegation and proof-of-stake works. + +2. The consensus engine, namely, the HotStuff state machine replication (SMR) protocol, which is the state-of-the-art BFT (Byzantine fault-tolerant) SMR (state-machine replication) protocol. An illustration of its position in XDPoS 2.0 and a brief security analysis will be provided. + +3. Reward mechanism, which incentivizes nodes to join and maintain the XDC Network. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..9ab3ab4 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,228 @@ +# Project information +site_name: Documentation +site_url: https://xinfin.org/ +site_author: XDC Network +site_description: >- + Get started with XDC Chain Docs. Explore the documentation for XDC Chain +# Repository +repo_name: XDC Network GitHub +repo_url: https://github.com/XinFinOrg +edit_uri: edit/main/docs/ + +theme: + name: material + logo: assets/logo.svg + favicon: assets/xdc.svg + custom_dir: overrides + language: en + icon: + repo: fontawesome/brands/github + share: octicons/share-android-24 + palette: + - scheme: slate + primary: custom + accent: custom + toggle: + icon: octicons/sun-24 + name: Switch to light mode + - scheme: default + primary: custom + accent: custom + toggle: + icon: octicons/moon-24 + name: Switch to dark mode + features: +# - announce.dismiss + - search.suggest + - search.highlight + - search.share + - navigation.instant +# - navigation.instant.progress + - navigation.tracking + - navigation.integration + - navigation.tabs + - navigation.tabs.sticky + - navigation.indexes + - navigation.sections +# - navigation.expand + - navigation.prune + - navigation.path + - navigation.top + - navigation.footer + - toc.follow + - content.code.copy + - content.action.edit + - content.tooltips +# - content.action.view + + +# Page tree +nav: + - Home: index.md + - XDC Chain: + - XDC Chain Overview: ./xdcchain/index.md + - XDPoS Consensus: ./xdcchain/xdpos.md + - XDPoS 2.0: ./xdcchain/xdpos2.md + - XDC Ecosystem: https://xinfin.org/ecosystem-dapps + - Developers: + - Quick Guide: ./xdcchain/developers/quick-guide.md + - Dev-Tools: https://xinfin.org/quick-tools-guide + - RPC Endpoints: + - RPC: ./xdcchain/developers/rpc.md/ + - Mainnet RPC: ./xdcchain/developers/mainnetrpc.md + - Apothem Testnet RPC: ./xdcchain/developers/apothemrpc.md + - Devnet RPC: ./xdcchain/developers/devnetrpc.md + - Faucet: https://faucet.blocksscan.io/ + - Migrating from EVM to XDC: ./xdcchain/evmtoxdc.md + - Wallet Configuration: ./xdcchain/developers/wallet-configuration.md + + - Node Operators: + - Node Architecture: ./xdcchain/developers/node_operators/node_architecture.md + - Rewards mechanism(WIP): ./xdcchain/rewards.md + - How to Run a Masternode/Standby node: + - Masternode/Standby node Setup: ./xdcchain/developers/node_operators/masternode.md + - How to Stake XDC: ./xdcchain/developers/node_operators/masternode/#how-to-stake-xdc-on-a-masternodestandby-node + - Using Bootstrap Script: ./xdcchain/developers/node_operators/masternode/#setup-xdc-masternode-using-bootstrap-script + - Using One-Click-Installer: ./xdcchain/developers/node_operators/masternode/#setup-xdc-masternode-using-one-click-installer + - Using Docker: ./xdcchain/developers/node_operators/masternode/#setup-xdc-masternode-using-docker + - Downloading Mainnet Snapshot: ./xdcchain/developers/node_operators/masternode/#mainnet-snapshot + - Downloading Apothem Snapshot: ./xdcchain/developers/node_operators/masternode/#apothem-snapshot + # - How to Secure Mastecrnode(WIP): ./xdcchain/developers/node_operators/node_architecture + # - How to Monitor Uptime(WIP): ./xdcchain/developers/node_operators/node_architecture + # - How to migrate an XDC Node(WIP): ./xdcchain/developers/node_operators/node_architecture + # - Archive Node(WIP): ./xdcchain/developers/node_operators/node_architecture + # - Boot Node(WIP): ./xdcchain/developers/node_operators/node_architecture + - Docker Image (WIP): ./xdcchain/developers/node_operators/dockerimg.md + - Slashing: ./xdcchain/developers/node_operators/slashing.md + + # - EOA Paymaster: + # - Overview: ./xdcchain/developers/paymaster/overview.md + # - Paymaster API Spec: ./xdcchain/developers/paymaster/paymaster-api.md + # - Wallet Integration: ./xdcchain/developers/paymaster/wallet-integration.md + - Governance: + - Overview of XDCDAO: ./xdcchain/governance/overview.md + - User Guide: https://www.xdc.dev/0xbeny/xdcdao-understanding-the-proposal-window-39f8 + + # - MEV: + # - Overview: ./xdcchain/validator/mev/overview.md + # - Validator Guide: ./xdcchain/validator/mev/validator-integration.md + # - Builder Guide: ./xdcchain/validator/mev/builder-integration.md + # - FAQs: ./xdcchain/validator/mev/faqs.md + + - XDC Subnet: + - XDC Subnet: ./subnet/index.md + - User Guide: + - XDC Subnet Official Documentation: https://xinfinorg.github.io/xdc-subnet-docs/category/deployment-guide + - Upgrading the Subnet: https://xinfinorg.github.io/xdc-subnet-docs/deployment/upgrading_the_subnet + - UI Usage Guide: https://xinfinorg.github.io/xdc-subnet-docs/category/ui-usage-guide + - Installation Guide: https://www.xdc.dev/vinn_9686/xdc-subnet-installation-guide-building-a-secure-and-scalable-network-4hb3 + - Setting Up Your Own XDC-Subnet Tutorial: https://youtu.be/VwfI4VTMUnY?si=K9Yv3MdxjKryaDfm + - Announcements: + - Announcements: ./announce/index.md + - Upcoming: + - XDC 2.0 Mainnet Release: https://www.xdc.dev/anilchinchawale/xdpos-20-mainnet-release-key-features-and-enhancements-eeo + - XinFin Remix Upgrade: ./announce/# + - Passed: + - Solidity 0.8.23 Integration on XDC Mainnet: https://www.xdc.dev/anilchinchawale/stay-ahead-xdc-network-prepares-for-evm-0823-integration-on-xdc-mainnet-upgrade-details-inside-5nj + # - Showcases: + - Showcases: + - Showcases: ./showcase/index.md + - Smart Contracts: + # - Flattening Smart Contracts: + - Flattening Smart Contracts: ./showcase/flattening-smart-contracts.md + - Flattening Smart Contracts with Remix: ./showcase/flattening-smart-contracts/#flattening-smart-contracts-with-remix + - Flattening Smart Contracts with Truffle: ./showcase/flattening-smart-contracts/#flattening-smart-contracts-with-truffle + - Flattening Smart Contracts with Hardhat: ./showcase/flattening-smart-contracts/#flattening-smart-contracts-with-hardhat + - Token Standards: + - Tokens Overview: ./showcase/tokens.md + - XRC20: ./showcase/tokens/#xrc20 + - XRC721: ./showcase/tokens/#xrc721 + - XRC404: ./showcase/tokens/#xrc404 + - XDC Stats: + - XDC Stats Overview: ./showcase/xdcstats.md + - Data and analytics: + - Overview: ./showcase/data-analytics.md + - XDCScan Mainnet: ./showcase/data-analytics/#xdcscan-mainnet + - XDCScan Testnet (Apothem): ./showcase/data-analytics/#xdcscan-testnet-apothem + - XDCScan Devnet: ./showcase/data-analytics/#xdcscan-devnet + + + # - Games: + # - Telegram Mini Game on XDC Chain: ./showcase/game/minigame.md + # - Wallet: + # - In-app Wallet and Account Abstraction: ./# + +markdown_extensions: + - toc: + permalink: true + permalink_title: Link to this section + toc_depth: 4 + - codehilite + - admonition + - footnotes + - def_list + - attr_list + - abbr + - meta + - smarty + - md_in_html + - pymdownx.tabbed: + alternate_style: true + - pymdownx.superfences + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - pymdownx.arithmatex: + generic: true + - pymdownx.betterem: + smart_enable: all + - pymdownx.keys + - pymdownx.details + - pymdownx.magiclink + - pymdownx.smartsymbols + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.critic + - pymdownx.caret + - pymdownx.tilde + - pymdownx.mark + - pymdownx.extra + +plugins: + - search + - mkdocs-video + - redirects: + redirect_maps: + 'docs.md': 'xdcchain/index.md' + 'docs/validator/fullnode.md': 'xdcchain/developers/node_operators/full_node.md' + 'docs/rpc.md': 'xdcchain/developers/rpc.md' + + +extra_css: + - https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300..700&display=swap + - assets/style/index.css + - assets/style/components/banner.css + - assets/style/components/nav.css + - assets/style/components/sidebar.css + - assets/style/components/content.css + - assets/style/components/footer-nav.css + - assets/style/components/footer.css + - https://unpkg.com/katex@0.16.10/dist/katex.min.css + +extra_javascript: + - assets/js/mathjax.js + - assets/js/custom.js + - https://unpkg.com/mathjax@3.2.2/es5/tex-mml-chtml.js + - https://unpkg.com/katex@0.16.10/dist/katex.min.js + - https://unpkg.com/katex@0.16.10/dist/contrib/auto-render.min.js + +extra: + generator: false + homepage: ./# + consent: + title: Cookie consent + description: >- + We use cookies to recognize your repeated visits and preferences, as well + as to measure the effectiveness of our documentation and whether users + find what they're searching for. With your consent, you're helping us to + make our documentation better. diff --git a/overrides/main.html b/overrides/main.html new file mode 100644 index 0000000..ed5967a --- /dev/null +++ b/overrides/main.html @@ -0,0 +1,54 @@ +{% extends "base.html" %} + +{% block announce %} + +{% endblock %} + +{% block htmltitle %} + {% if page.meta and page.meta.title %} + {{ page.meta.title }} + {% elif page.title and not page.is_homepage %} + {{ page.title | striptags }} + {% else %} + XDC Chain Documentation + {% endif %} +{% endblock %} + +{% block footer %} +{% include "partials/footer.html" %} + + +{% endblock %} diff --git a/overrides/partials/header.html b/overrides/partials/header.html new file mode 100644 index 0000000..437708a --- /dev/null +++ b/overrides/partials/header.html @@ -0,0 +1,105 @@ + + + +{% set class = "md-header" %} +{% if "navigation.tabs.sticky" in features %} +{% set class = class ~ " md-header--shadow md-header--lifted" %} +{% elif "navigation.tabs" not in features %} +{% set class = class ~ " md-header--shadow" %} +{% endif %} + + +
+ + + + {% if "navigation.tabs.sticky" in features %} + {% if "navigation.tabs" in features %} + {% include "partials/tabs.html" %} + {% endif %} + {% endif %} +
\ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..152202f --- /dev/null +++ b/run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +virtualenv venv +source venv/bin/activate +pip3 install -r requirements.txt +mkdocs serve \ No newline at end of file