diff --git a/babel.config.js b/babel.config.js index e00595d..bfd75db 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,3 @@ module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')], + presets: [require.resolve("@docusaurus/core/lib/babel/preset")], }; diff --git a/blog/2024-10-01-a-step-toward-decentralized-fast-sync-for-bitcoin.md b/blog/2024-10-01-a-step-toward-decentralized-fast-sync-for-bitcoin.md index 3a91081..a350ec7 100644 --- a/blog/2024-10-01-a-step-toward-decentralized-fast-sync-for-bitcoin.md +++ b/blog/2024-10-01-a-step-toward-decentralized-fast-sync-for-bitcoin.md @@ -49,7 +49,7 @@ Subcoin introduces an innovative approach to encapsulating the Bitcoin chain wit **Subcoin runtime** -Subcoin runtime is a minimalistic Substrate runtime, comprising two essential pallets: +Subcoin runtime is a minimalistic Substrate runtime, comprising two essential pallets: - **frame-system**: This pallet is the core component of the Substrate framework. - **pallet-bitcoin**: This pallet tracks the state of the UTXO set on-chain. It processes the inputs and outputs of each Bitcoin transaction embedded in an unsigned extrinsic within the pallet. @@ -122,17 +122,11 @@ The Proof of Concept implementation has been developed, but several optimization ## Future Vision - **Bitcoin Wallet Integration in polkadot.js.org** - - A significant future goal is to enable [polkadot.js.org](http://polkadot.js.org/) to support Bitcoin transactions, effectively turning it into a fully functional Bitcoin wallet. This ambitious enhancement would require deep integration of Bitcoin into the Substrate framework, including adjustments to the runtime, the creation of a custom transaction pool, and likely modifications to the [polkadot.js.org](http://polkadot.js.org/) interface. - + A significant future goal is to enable [polkadot.js.org](http://polkadot.js.org/) to support Bitcoin transactions, effectively turning it into a fully functional Bitcoin wallet. This ambitious enhancement would require deep integration of Bitcoin into the Substrate framework, including adjustments to the runtime, the creation of a custom transaction pool, and likely modifications to the [polkadot.js.org](http://polkadot.js.org/) interface. - **Develop a BRC20 Indexer** - - Expanding Subcoin to include a BRC20 indexer is a straightforward extension that can be implemented during the Bitcoin full sync process. This addition would enhance the decentralization of BRC20 assets, contributing to a more robust and accessible Bitcoin ecosystem. - + Expanding Subcoin to include a BRC20 indexer is a straightforward extension that can be implemented during the Bitcoin full sync process. This addition would enhance the decentralization of BRC20 assets, contributing to a more robust and accessible Bitcoin ecosystem. - **Explore Bitcoin Layer 2 Solutions** - - The Subcoin team's initial goal was not to build a Bitcoin node in Rust but to explore Bitcoin L2 solutions. With the recent surge in Bitcoin L2 projects, the Subcoin team is still actively seeking innovative ways to enhance the Bitcoin ecosystem, going beyond just creating a Rust client. - + The Subcoin team's initial goal was not to build a Bitcoin node in Rust but to explore Bitcoin L2 solutions. With the recent surge in Bitcoin L2 projects, the Subcoin team is still actively seeking innovative ways to enhance the Bitcoin ecosystem, going beyond just creating a Rust client. These ideas represent just the beginning. As Subcoin matures and grows, more possibilities will emerge. diff --git a/docs/basics/download-UTXO-snapshot.md b/docs/basics/download-UTXO-snapshot.md index e89597a..359a4c1 100644 --- a/docs/basics/download-UTXO-snapshot.md +++ b/docs/basics/download-UTXO-snapshot.md @@ -28,12 +28,13 @@ TODO: public bootnodes - Snapshot integrity: - The expected `sha256sum` for the snapshot at block 840000 is: + The expected `sha256sum` for the snapshot at block 840000 is: - ```text - dc4bb43d58d6a25e91eae93eb052d72e3318bd98ec62a5d0c11817cefbba177b - ``` - This checksum matches the one documented in the official [Bitcoin Core pull request](https://github.com/bitcoin/bitcoin/pull/28553#issue-1920247340). + ```text + dc4bb43d58d6a25e91eae93eb052d72e3318bd98ec62a5d0c11817cefbba177b + ``` + + This checksum matches the one documented in the official [Bitcoin Core pull request](https://github.com/bitcoin/bitcoin/pull/28553#issue-1920247340). ## Verify the Downloaded Snapshot diff --git a/docs/basics/set-up-a-node.md b/docs/basics/set-up-a-node.md index 8644eb4..90fc55f 100644 --- a/docs/basics/set-up-a-node.md +++ b/docs/basics/set-up-a-node.md @@ -14,10 +14,9 @@ This guide will show you how to connect to Bitcoin network with Subcoin. - **Full Node**: A full node prunes historical states, all finalized blocks' states older than a configurable number except the genesis block's state will be pruned. This is 256 blocks from the last finalized one by default. A pruned node this way requires much less space than an archive node. - **Light Node**: TODO - ### Sync Strategies -There are two strategies to sync the Bitcoin network for new nodes: _Full Sync_ and _Fast Sync_. +There are two strategies to sync the Bitcoin network for new nodes: _Full Sync_ and _Fast Sync_. - **Full Sync**: This will download and replay all the blocks from the genesis to the tip directly from the P2P network (either the Subcoin network or directly from the Bitcoin P2P network). This sync strategy is only necessary for establishing the Subcoin bootnodes when the Subcoin P2P network starts as this process is time-consuming and resources-intensive, possibly taking days to complete depending on the performance of your machine. For the regular users, _Fast Sync_ is usually recommended. @@ -30,9 +29,9 @@ There are two strategies to sync the Bitcoin network for new nodes: _Full Sync_ ```mermaid graph TD %% Define nodes - subcoin_p2p((Subcoin P2P Network)) ---> |Fast Sync|subcoin_node[Subcoin Node] - subcoin_p2p ---> |Full Sync|subcoin_node[Subcoin Node] - bitcoin_p2p((Bitcoin P2P Network)) ---> |Full Sync|subcoin_node + subcoin_p2p((Subcoin P2P Network)) ---> |Fast Sync|subcoin_node[Subcoin Node] + subcoin_p2p ---> |Full Sync|subcoin_node[Subcoin Node] + bitcoin_p2p((Bitcoin P2P Network)) ---> |Full Sync|subcoin_node %% Add labels for syncing methods @@ -56,9 +55,9 @@ Although it's technically supported to perform a full sync from the Subcoin p2p Note that the storage usage will grow over time. - Full Node - - SSD with 500GiB of space + - SSD with 500GiB of space - Archive Node - - SSD with 4TiB of space + - SSD with 4TiB of space ## Syncing Bitcoin Chain diff --git a/docs/extras/_category_.json b/docs/extras/_category_.json index 22823e0..2cf494d 100644 --- a/docs/extras/_category_.json +++ b/docs/extras/_category_.json @@ -3,6 +3,6 @@ "position": 3, "link": { "type": "generated-index", - "slug": "extras", + "slug": "extras" } } diff --git a/docs/extras/manage-docs-versions.md b/docs/extras/manage-docs-versions.md index ccda0b9..9ea672c 100644 --- a/docs/extras/manage-docs-versions.md +++ b/docs/extras/manage-docs-versions.md @@ -34,7 +34,7 @@ export default { items: [ // highlight-start { - type: 'docsVersionDropdown', + type: "docsVersionDropdown", }, // highlight-end ], diff --git a/docusaurus.config.js b/docusaurus.config.js index a065280..f83d86d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -4,162 +4,162 @@ // There are various equivalent ways to declare your Docusaurus config. // See: https://docusaurus.io/docs/api/docusaurus-config -import {themes as prismThemes} from 'prism-react-renderer'; +import { themes as prismThemes } from "prism-react-renderer"; /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'Subcoin', - tagline: 'Bitcoin Full Node Built in Rust Using Polkadot-SDK', - favicon: 'img/favicon.ico', + title: "Subcoin", + tagline: "Bitcoin Full Node Built in Rust Using Polkadot-SDK", + favicon: "img/subcoin-favicon-black.png", - // Set the production url of your site here - url: 'https://subcoin-project.github.io', - // Set the // pathname under which your site is served - // For GitHub pages deployment, it is often '//' - baseUrl: '/', + // Set the production url of your site here + url: "https://subcoin-project.github.io", + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: "/", - // GitHub pages deployment config. - // If you aren't using GitHub pages, you don't need these. - organizationName: 'subcoin-project', // Usually your GitHub org/user name. - projectName: 'subcoin-project.github.io', // Usually your repo name. - trailingSlash: false, + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: "subcoin-project", // Usually your GitHub org/user name. + projectName: "subcoin-project.github.io", // Usually your repo name. + trailingSlash: false, - onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'warn', + onBrokenLinks: "throw", + onBrokenMarkdownLinks: "warn", - // Even if you don't use internationalization, you can use this field to set - // useful metadata like html lang. For example, if your site is Chinese, you - // may want to replace "en" with "zh-Hans". - i18n: { - defaultLocale: 'en', - locales: ['en'], - }, + // Even if you don't use internationalization, you can use this field to set + // useful metadata like html lang. For example, if your site is Chinese, you + // may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: "en", + locales: ["en"], + }, - presets: [ - [ - 'classic', - /** @type {import('@docusaurus/preset-classic').Options} */ - ({ - docs: { - sidebarPath: './sidebars.js', - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/subcoin-project/subcoin-project.github.io/tree/main/', - showLastUpdateAuthor: true, - showLastUpdateTime: true, - }, - blog: { - showReadingTime: true, - feedOptions: { - type: ['rss', 'atom'], - xslt: true, - }, - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/subcoin-project/subcoin-project.github.io/tree/main/', - // Useful options to enforce blogging best practices - onInlineTags: 'warn', - onInlineAuthors: 'warn', - onUntruncatedBlogPosts: 'warn', - }, - theme: { - customCss: './src/css/custom.css', - }, - }), - ], + presets: [ + [ + "classic", + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: "./sidebars.js", + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: + "https://github.com/subcoin-project/subcoin-project.github.io/tree/main/", + showLastUpdateAuthor: true, + showLastUpdateTime: true, + }, + blog: { + showReadingTime: true, + feedOptions: { + type: ["rss", "atom"], + xslt: true, + }, + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: + "https://github.com/subcoin-project/subcoin-project.github.io/tree/main/", + // Useful options to enforce blogging best practices + onInlineTags: "warn", + onInlineAuthors: "warn", + onUntruncatedBlogPosts: "warn", + }, + theme: { + customCss: "./src/css/custom.css", + }, + }), ], + ], - themeConfig: - /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ - ({ - // Replace with your project's social card - image: 'img/docusaurus-social-card.jpg', - navbar: { - title: 'Subcoin', - logo: { - alt: 'Subcoin Logo', - src: 'img/subcoin-logo.svg', - }, - items: [ - { - type: 'docSidebar', - sidebarId: 'tutorialSidebar', - position: 'left', - label: 'User Guide', - }, - { - href: 'https://subcoin-project.github.io/subcoin/book/', - label: 'Dev Guide', - position: 'left', - }, - {to: '/blog', label: 'Blog', position: 'left'}, - {to: '/docs/donate', label: 'Donate', position: 'left'}, - { - href: 'https://github.com/subcoin-project/subcoin', - position: 'right', - className: 'header-github-link', - 'aria-label': 'GitHub repository', - }, - { - href: 'https://x.com/subcoin_project', - position: 'right', - className: 'header-twitter-link', - 'aria-label': 'Twitter profile', - }, - ], - }, - footer: { - style: 'dark', - links: [ - { - title: 'Docs', - items: [ - { - label: 'Tutorial', - to: '/docs/intro', - }, - ], - }, - { - title: 'Community', - items: [ - { - label: 'Telegram', - href: 'https://t.me/subcoin_project', - }, - { - label: 'X', - href: 'https://x.com/subcoin_project', - }, - ], - }, - { - title: 'More', - items: [ - { - label: 'Blog', - to: '/blog', - }, - { - label: 'GitHub', - href: 'https://github.com/subcoin-project/subcoin', - }, - ], - }, - ], - copyright: `Copyright © ${new Date().getFullYear()} Subcoin Project, Inc. Built with Docusaurus.`, - }, - prism: { - theme: prismThemes.github, - darkTheme: prismThemes.dracula, - }, - }), - markdown: { - mermaid: true, - }, - themes: ['@docusaurus/theme-mermaid'], + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: "img/subcoin-social-card.jpg", + navbar: { + title: "Subcoin", + logo: { + alt: "Subcoin Logo", + src: "img/subcoin-logo.svg", + }, + items: [ + { + type: "docSidebar", + sidebarId: "tutorialSidebar", + position: "left", + label: "User Guide", + }, + { + href: "https://subcoin-project.github.io/subcoin/book/", + label: "Dev Guide", + position: "left", + }, + { to: "/blog", label: "Blog", position: "left" }, + { to: "/docs/donate", label: "Donate", position: "left" }, + { + href: "https://github.com/subcoin-project/subcoin", + position: "right", + className: "header-github-link", + "aria-label": "GitHub repository", + }, + { + href: "https://x.com/subcoin_project", + position: "right", + className: "header-twitter-link", + "aria-label": "Twitter profile", + }, + ], + }, + footer: { + style: "dark", + links: [ + { + title: "Docs", + items: [ + { + label: "Tutorial", + to: "/docs/intro", + }, + ], + }, + { + title: "Community", + items: [ + { + label: "Telegram", + href: "https://t.me/subcoin_project", + }, + { + label: "X", + href: "https://x.com/subcoin_project", + }, + ], + }, + { + title: "More", + items: [ + { + label: "Blog", + to: "/blog", + }, + { + label: "GitHub", + href: "https://github.com/subcoin-project/subcoin", + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} Subcoin Project, Inc. Built with Docusaurus.`, + }, + prism: { + theme: prismThemes.github, + darkTheme: prismThemes.dracula, + }, + }), + markdown: { + mermaid: true, + }, + themes: ["@docusaurus/theme-mermaid"], }; export default config; diff --git a/package.json b/package.json index 180a9d3..d2d71d9 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "deploy": "docusaurus deploy", "clear": "docusaurus clear", "serve": "docusaurus serve", + "format": "prettier --write .", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids" }, @@ -21,7 +22,8 @@ "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", - "react-dom": "^18.0.0" + "react-dom": "^18.0.0", + "prettier": "^2.0.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.5.2", diff --git a/sidebars.js b/sidebars.js index c5e8c08..7e1c318 100644 --- a/sidebars.js +++ b/sidebars.js @@ -13,11 +13,11 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [{ type: "autogenerated", dirName: "." }], - // But you can create a sidebar manually - /* + // But you can create a sidebar manually + /* tutorialSidebar: [ 'intro', 'hello', diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index ba89ff8..567b7e5 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -1,74 +1,88 @@ -import clsx from 'clsx'; -import Heading from '@theme/Heading'; -import styles from './styles.module.css'; -import Link from '@docusaurus/Link'; +import clsx from "clsx"; +import Heading from "@theme/Heading"; +import styles from "./styles.module.css"; +import Link from "@docusaurus/Link"; const FeatureList = [ - { - title: 'Written in Rust', - Svg: require('@site/static/img/rust.svg').default, - description: ( - <> - As a high-performance system programming language, Rust is well-regarded for its safety and concurrency. - Its widespread adoption in the blockchain space makes it an excellent choice for fostering new contributors to the Bitcoin ecosystem. - - ), - }, - { - title: 'Built on Polkadot SDK', - Svg: require('@site/static/img/polkadot.svg').default, - description: ( - <> - Leveraging the scalability and flexibility of the industry-leading Polkadot-SDK (formerly known as Substrate), - Subcoin has the potential to evolve into a robust and feature-rich Bitcoin software with production-level infrastructure. - - ), - }, - { - title: 'Decentralized Fast Sync', - Svg: require('@site/static/img/blockchain.svg').default, - description: ( - <> - Subcoin node enables new Bitcoin participants to quickly sync the latest Bitcoin state in a decentralized manner, - achieving the fast sync functionality of Bitcoin Core without depending on a trusted snapshot provider. - - ), - }, - { - title: 'Trustless UTXO Snapshot Provider for Bitcoin Core', - Svg: require('@site/static/img/snapshot_provider.svg').default, - description: ( - <> - Subcoin provides a dedicated tool Snapcake that serves as a trustless UTXO snapshot provider for Bitcoin Core without running a Subcoin node, downloading the Bitcoin state from the Subcoin P2P network and generating a Bitcoin Core-compatible UTXO snapshot which can be directly imported into Bitcoin Core. - - ), - }, + { + title: "Written in Rust", + Svg: require("@site/static/img/rust.svg").default, + description: ( + <> + As a high-performance system programming language, Rust is well-regarded + for its safety and concurrency. Its widespread adoption in the + blockchain space makes it an excellent choice for fostering new + contributors to the Bitcoin ecosystem. + + ), + }, + { + title: "Built on Polkadot SDK", + Svg: require("@site/static/img/polkadot.svg").default, + description: ( + <> + Leveraging the scalability and flexibility of the industry-leading{" "} + + Polkadot-SDK + {" "} + (formerly known as Substrate), Subcoin has the potential to evolve into + a robust and feature-rich Bitcoin software with production-level + infrastructure. + + ), + }, + { + title: "Decentralized Fast Sync", + Svg: require("@site/static/img/blockchain.svg").default, + description: ( + <> + Subcoin node enables new Bitcoin participants to quickly sync the latest + Bitcoin state in a decentralized manner, achieving the fast sync + functionality of Bitcoin Core without depending on a trusted snapshot + provider. + + ), + }, + { + title: "Trustless UTXO Snapshot Provider for Bitcoin Core", + Svg: require("@site/static/img/snapshot_provider.svg").default, + description: ( + <> + Subcoin provides a dedicated tool{" "} + Snapcake that + serves as a trustless UTXO snapshot provider for Bitcoin Core without + running a Subcoin node, downloading the Bitcoin state from the Subcoin + P2P network and generating a Bitcoin Core-compatible UTXO snapshot which + can be directly imported into Bitcoin Core. + + ), + }, ]; -function Feature({Svg, title, description}) { - return ( -
-
- -
-
- {title} -

{description}

-
-
- ); +function Feature({ Svg, title, description }) { + return ( +
+
+ +
+
+ {title} +

{description}

+
+
+ ); } export default function HomepageFeatures() { - return ( -
-
-
- {FeatureList.map((props, idx) => ( - - ))} -
-
-
- ); + return ( +
+
+
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); } diff --git a/src/css/custom.css b/src/css/custom.css index ebead67..32d2b72 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -7,14 +7,14 @@ /* Colors are generated from https://aicolors.co/ and adjusted by ChatGPT. */ :root { /* Primary Colors */ - --ifm-color-primary: #2C3E50; /* primary-100 */ + --ifm-color-primary: #2c3e50; /* primary-100 */ --ifm-color-primary-dark: #57687c; /* primary-200 */ --ifm-color-primary-darker: #b4c7dd; /* primary-300 */ - --ifm-color-primary-light: #F7CAC9; /* accent-100 */ + --ifm-color-primary-light: #f7cac9; /* accent-100 */ --ifm-color-primary-lighter: #926b6a; /* accent-200 */ /* Link Colors */ - --ifm-link-color: #1E6091; /* Distinct blue link color */ + --ifm-link-color: #1e6091; /* Distinct blue link color */ --ifm-link-hover-color: #144c73; /* Darker shade for hover */ /* Text Colors */ @@ -22,7 +22,7 @@ --ifm-color-content-secondary: #5c5c5c; /* text-200 */ /* Background Colors */ - --ifm-background-color: #F2F2F2; /* bg-100 */ + --ifm-background-color: #f2f2f2; /* bg-100 */ --ifm-background-secondary-color: #e8e8e8; /* bg-200 */ --ifm-background-alt: #bfbfbf; /* bg-300 */ @@ -32,12 +32,12 @@ } /* Dark mode adjustments */ -[data-theme='dark'] { +[data-theme="dark"] { /* Primary Colors */ --ifm-color-primary: #926b6a; /* accent-200 */ - --ifm-color-primary-dark: #2C3E50; /* primary-100 */ + --ifm-color-primary-dark: #2c3e50; /* primary-100 */ --ifm-color-primary-darker: #57687c; /* primary-200 */ - --ifm-color-primary-light: #F7CAC9; /* accent-100 */ + --ifm-color-primary-light: #f7cac9; /* accent-100 */ --ifm-color-primary-lighter: #b4c7dd; /* primary-300 */ /* Link Colors */ @@ -45,7 +45,7 @@ --ifm-link-hover-color: #4a93c9; /* Slightly darker for hover */ /* Text Colors */ - --ifm-color-content: #F2F2F2; /* lightened text-100 for dark mode */ + --ifm-color-content: #f2f2f2; /* lightened text-100 for dark mode */ --ifm-color-content-secondary: #e8e8e8; /* bg-200 */ /* Background Colors */ @@ -67,7 +67,7 @@ } .header-github-link::before { - content: ''; + content: ""; width: 24px; height: 24px; display: flex; @@ -85,7 +85,7 @@ } .header-twitter-link::before { - content: ''; + content: ""; width: 24px; height: 24px; display: flex; diff --git a/src/pages/index.js b/src/pages/index.js index 17dd323..91db125 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -1,46 +1,48 @@ -import clsx from 'clsx'; -import Link from '@docusaurus/Link'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import Layout from '@theme/Layout'; -import HomepageFeatures from '@site/src/components/HomepageFeatures'; +import clsx from "clsx"; +import Link from "@docusaurus/Link"; +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import Layout from "@theme/Layout"; +import HomepageFeatures from "@site/src/components/HomepageFeatures"; -import Heading from '@theme/Heading'; -import styles from './index.module.css'; +import Heading from "@theme/Heading"; +import styles from "./index.module.css"; function HomepageHeader() { - const {siteConfig} = useDocusaurusContext(); - return ( -
-
- - {siteConfig.title} - -

{siteConfig.tagline}

-

- Unlock the Potential of Decentralized Fast Sync for Bitcoin — and more -

-
- - Get Started - -
-
-
- ); + const { siteConfig } = useDocusaurusContext(); + return ( +
+
+ + {siteConfig.title} + +

{siteConfig.tagline}

+

+ Unlock the Potential of Decentralized Fast Sync for Bitcoin — and more +

+
+ + Get Started + +
+
+
+ ); } export default function Home() { - const {siteConfig} = useDocusaurusContext(); - return ( - - -
- -
-
- ); + const { siteConfig } = useDocusaurusContext(); + return ( + + +
+ +
+
+ ); } diff --git a/static/img/subcoin-favicon-black.png b/static/img/subcoin-favicon-black.png new file mode 100644 index 0000000..720d1cb Binary files /dev/null and b/static/img/subcoin-favicon-black.png differ diff --git a/static/img/subcoin-social-card.png b/static/img/subcoin-social-card.png new file mode 100644 index 0000000..daa9185 Binary files /dev/null and b/static/img/subcoin-social-card.png differ diff --git a/yarn.lock b/yarn.lock index 2aaffa6..5e3639c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7319,6 +7319,11 @@ postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4 picocolors "^1.1.0" source-map-js "^1.2.1" +prettier@^2.0.0: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6"