diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 7800cf8..0362ca6 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -4,5 +4,5 @@ contact_links:
url: https://coretalk.space/tags/cip
about: Share your CIP comments in Talk \#CIP
- name: Security Bugs
- url: https://dev.coreblockchain.cc/report-bug/
+ url: https://dev.coreblockchain.net/report-bug/
about: Please report security vulnerabilities here.
diff --git a/.github/PULL_REQUEST_TEMPLATE/pr-template.md b/.github/PULL_REQUEST_TEMPLATE/pr-template.md
index 4ca9362..868b928 100644
--- a/.github/PULL_REQUEST_TEMPLATE/pr-template.md
+++ b/.github/PULL_REQUEST_TEMPLATE/pr-template.md
@@ -1,40 +1,7 @@
----
-cip:
-title:
-author:
-lang: en-US
-tag: draft
-category:
-date:
----
-
+
-
## Abstract
-
-
-## Motivation
-
-
-## Specification
-
-
-## Rationale
-
-
-## Backwards Compatibility
-
-## Test Cases
-
-
-## Implementation
-
-
-## Security Considerations
-
-
-## Copyright
-Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
+
diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml
index 8c08f3e..d2d8e15 100644
--- a/.github/workflows/markdownlint.yml
+++ b/.github/workflows/markdownlint.yml
@@ -4,7 +4,8 @@ on:
branches:
- master
paths:
- - "cip/posts/*.md"
+ - "cip/*.md"
+ - "cip/*.mdx"
- ".github/workflows/markdownlint.yml"
- ".github/.markdownlint.json"
@@ -12,11 +13,12 @@ jobs:
cip-linter:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Markdown Lint
uses: ruzickap/action-my-markdown-linter@v1
with:
config_file: .github/lintconfig.yml
search_paths: |
- cip/posts/*.md
+ cip/*.md
+ cip/*.mdx
diff --git a/.gitignore b/.gitignore
index 1b02c50..f2ae71e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,45 +1,36 @@
-node_modules
-.temp
-.cache
-pids
-logs
-npm-debug.log
-coverage/
-run
-dist
-.nyc_output
-.basement
-config.local.js
-basement_dist
-/blog/.vuepress/dist/
-/blog/.vuepress/.cache/
-/blog/.vuepress/.temp/
-yarn.lock
-package-lock.json
+# Dependencies
+/node_modules
+
+# Production
+/build
+
+# Generated files
+.docusaurus
+.cache-loader
-# General
+# Misc
.DS_Store
.AppleDouble
.LSOverride
+Thumbs.db
+.Trash
+.idea/
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
-# Icon must end with two \r
-Icon
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+package-lock.json
+yarn.lock
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
+pids
+*.pid
+*.seed
+*.pid.lock
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index d6417b9..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-CORE License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"),
-to to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-All distribution of the Covered Software in Source Code Form, including any
-Modifications and/or Contributions must be disclosed and publicly available.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY CLAIM, DAMAGES OR
-OTHER LIABILITIES, WHETHER IN AN ACTION OF A CONTRACT, TORT, OR OTHERWISE,
-ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE, OR
-OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
index 512ed99..a903440 100644
--- a/README.md
+++ b/README.md
@@ -1,64 +1,55 @@
----
-title: Core Improvement Proposals
----
# CIP
-> Core Improvement Proposal (CIP) describes standards for the Core platform, including core protocol specifications, client APIs, and contract standards.
+> The Core Improvement Proposal (CIP) sets standards for the Core platform, encompassing core protocol specifications, client APIs, and contract standards.
## Contributing
-First you can open your proposal under [issues of this repository](https://github.com/core-coin/cip/issues).
+You can begin by opening your proposal under the [issues section of this repository](https://github.com/core-coin/cip/issues).
-### Review:
+### Review
-- [What is CIP](cip/docs/what-is-cip.md)
-- [CIP rationale](cip/docs/cip-rationale.md)
-- [CIP categories](cip/docs/cip-categories.md)
-- [CIP workflow](cip/docs/cip-workflow.md)
-- [CIP editors](cip/docs/cip-editors.md)
-- [CIP example](cip/example/cip-0.md)
+- [What is CIP](/docs/what-is-cip)
+- [CIP rationale](/docs/cip-rationale)
+- [CIP categories](/docs/cip-categories)
+- [CIP workflow](/docs/cip-workflow)
+- [CIP editors](/docs/cip-editors)
+- [CIP example](/docs/cip-0)
-### How to start:
+### How to start
-- Review the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/example/cip-0.md)
-- [Create CIP in the Online Editor](https://github.com/core-coin/cip/new/master?filename=cip/posts/cip-0.md&message=CIP%20Proposal&description=CIP%20Proposal%20Draft&value=---%0Acip%3A%20%0Atitle%3A%20%0Aauthor%3A%20%0Alang%3A%20en-US%0Atag%3A%20draft%0Acategory%3A%20%0Adate%3A%20%0A---%0A%0A)
+1. Review the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/docs/cip-0.md)
+2. [Create a CIP in the Online Editor](https://github.com/core-coin/cip/new/master?filename=cip/cip-0.md&message=CIP%20Proposal&description=CIP%20Proposal%20Draft&value=---%0Acip%3A%20%0Atitle%3A%20%0Aauthor%3A%20%0Alang%3A%20en-US%0Atag%3A%20draft%0Acategory%3A%20%0Adate%3A%202022-12-01%0A---%0A%3C%21--Introduction--%3E%0A%0A%3C%21--truncate--%3E%0A%0A%23%23%20Abstract%0A%0A%0A%0A%23%23%20Motivation%0A%0A%0A%0A%23%23%20Specification%0A%0A%0A%0A%23%23%20Rationale%0A%0A%0A%0A%23%23%20Backwards%20Compatibility%0A%0A%0A%0A%23%23%20Test%20Cases%0A%0A%0A%0A%23%23%20Implementation%0A%0A%0A%0A%23%23%20Security%20Considerations%0A%0A%0A%0A%23%23%20Copyright%0A%0ACopyright%20and%20related%20rights%20waived%20via%20%5BCC0%5D%28https%3A%2F%2Fcreativecommons.org%2Fpublicdomain%2Fzero%2F1.0%2F%29.%0A)
-or
+Or
-- [Fork](https://github.com/core-coin/cip/fork) this repository.
-- Change the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/example/cip-0.md) and move it to [`cip` folder](https://github.com/core-coin/cip/blob/master/cip/posts).
-- [Submit a Pull Request](https://github.com/core-coin/cip/compare) to Core's CIP repository.
+1. [Fork](https://github.com/core-coin/cip/fork) this repository.
+2. Modify the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/docs/cip-0.md) and move it to the [`cip` folder](https://github.com/core-coin/cip/blob/master/cip).
+3. [Submit a Pull Request](https://github.com/core-coin/cip/compare) to the Core CIP repository.
-Put any graphical content into [CIP image directory](https://github.com/core-coin/cip/blob/master/cip/.vuepress/public/images) `/images/cip-x` under your cip-x (x is the cip number). You can link images with path `/images/cip-0/cip-0-1.png`.
+For graphical content, place it in the [CIP image directory](https://github.com/core-coin/cip/blob/master/cip) `/cip/cip-x`, where 'x' is the CIP number. Link images using the path `/cip/cip-x/cip-x-1.png`.
-## CIP tags
+## Tags
-- `Draft` a CIP that is open for consideration.
-- `Accepted` a CIP that is planned for immediate adoption, i.e. expected to be included in the next hard fork (for Core/Consensus layer CIPs).
-- `Final` a CIP that has been adopted in a previous hard fork (for Core/Consensus layer CIPs).
-- `Deferred` a CIP that is not being considered for immediate adoption. May be reconsidered in the future for a subsequent hard fork.
+- `Draft`: Consideration phase for a CIP.
+- `Accepted`: A CIP set for immediate adoption, often slated for the next hard fork (relevant for Core/Consensus layer CIPs).
+- `Final`: A CIP adopted in a prior hard fork (pertinent to Core/Consensus layer CIPs).
+- `Deferred`: A CIP not up for immediate adoption, but might be reconsidered for future hard forks.
-## CIP categories
+## Categories
-CIPs are separated into a number of types, and each has its own list of CIPs.
+CIPs are categorized into various types, each with its own list:
-- Core
- - Improvements requiring a consensus fork, as well as changes that are not necessarily consensus critical but may be relevant to “core dev” discussions.
-- Networking
- - Includes improvements around devp2p, network protocol specifications of whisper and swarm.
-- Interface
- - Includes improvements around client API/RPC specifications and standards, and also certain language-level standards like method names and contract ABIs. The label “interface” aligns with the interfaces repo. Discussion should primarily occur in that repository before a CIP is submitted to the CIPs repository.
-- CBC
- - Application-level standards and conventions, including contract standards such as token standards, name registries, URI schemes, library/package formats and wallet formats.
-- Informational
- - Describes a Core design issue, or provides general guidelines or information to the Core community, but does not propose a new feature. Informational CIPs do not necessarily represent Core community consensus or a recommendation, so users and implementers are free to ignore Informational CIPs or follow their advice.
-- Meta
- - Describes a process surrounding Core or proposes a change to (or an event in) a process. Process CIPs are like Standards Track CIPs but apply to areas other than the Core protocol itself. They may propose an implementation, but not to Core's codebase; they often require community consensus. Unlike Informational CIPs, they are more than recommendations, and users are typically not free to ignore them. Examples include procedures, guidelines, changes to the decision-making process, and changes to the tools or environment used in Core development. Any meta-CIP is also considered a Process CIP.
+- **Core**: Improvements involving a consensus fork or changes significant to core development discussions.
+- **Networking**: Enhancements concerning devp2p and network protocol specs for whisper and swarm.
+- **Interface**: Focuses on client API/RPC specs, language standards like method names, and contract ABIs. Discussions should mainly take place in the interfaces repo before submitting a CIP here.
+- **CBC**: Application standards and conventions like token standards and name registries.
+- **Informational**: Addresses Core design issues or offers guidelines to the Core community without suggesting new features.
+- **Meta**: Outlines processes around Core or proposes process changes. These are more binding than informational CIPs and often necessitate community consensus.
## Channels
- [Core ◆ Talk](https://coretalk.space/tags/cip)
-- [GH Discussions](https://github.com/core-coin/cip/discussions)
+- [GH Issues](https://github.com/core-coin/cip/issues)
## License of the content
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..e00595d
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
+};
diff --git a/cip/.vuepress/config.ts b/cip/.vuepress/config.ts
deleted file mode 100644
index 9823e7a..0000000
--- a/cip/.vuepress/config.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-import { defineUserConfig } from "vuepress";
-import { hopeTheme } from "vuepress-theme-hope";
-import * as navbar from "./navbar";
-import path from "path";
-
-export default defineUserConfig({
- base: "/",
-
- dest: "./cip/.vuepress/dist",
-
- head: [
- ["link", { rel: "shortcut icon", type: "image/png", href: `/favicon.png` }],
- ["meta", { property: "ican:xcb", content: "cb57bbbb54cdf60fa666fd741be78f794d4608d67109" }],
- ["meta", { name: "description", content: "Core Improvement Proposals" }],
- ["meta", { property: "og:title", content: "CIP" }],
- ["meta", { property: "og:description", content: "Core Improvement Proposals" }],
- ["meta", { property: "og:type", content: "website" }],
- ],
-
- locales: {
- "/": {
- lang: "en-US",
- title: "CIP",
- description: "Core Improvement Proposals",
- },
- },
-
- theme: hopeTheme({
- hostname: "https://cip.coreblockchain.net",
-
- author: {
- name: "Core Foundation",
- url: "https://coreblockchain.net",
- },
-
- iconPrefix: "iconfont icon-",
-
- logo: "/logo.svg",
-
- repo: "https://github.com/core-coin",
-
- repoDisplay: true,
-
- navbarAutoHide: "always",
-
- pageInfo: ["Author", "Original", "Date", "Category", "Tag", "ReadingTime"],
-
- blog: {},
-
- sidebar: false,
-
- docsRepo: "https://github.com/core-coin/cip",
-
- docsBranch: "master",
-
- copyright: "Core Foundation // Copyright and related rights waived via CC0.",
-
- locales: {
- "/": {
- // navbar
- navbar: navbar.en,
-
- footer:
- "Core Web • Dev Portal • Core ◆ Talk • Core Blog • GitHub • 𝕏",
-
- displayFooter: true,
- blogLocales: {
- category: "Locale_En",
- tag: "en"
- },
- blog: {
- description: "Core Foundation",
- },
- },
- },
-
- encrypt: {
- config: {},
- },
-
- plugins: {
- blog: {
- excerpt: true,
- },
-
- feed: {
- json: true,
- atom: true,
- rss: true,
- channel: {
- ttl: 60,
- copyright: "CC0",
- },
- },
-
- mdEnhance: {
- imgSize: true,
- katex: true,
- mermaid: true,
- },
- },
- }),
-});
diff --git a/cip/.vuepress/navbar/en.ts b/cip/.vuepress/navbar/en.ts
deleted file mode 100644
index 83c01da..0000000
--- a/cip/.vuepress/navbar/en.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { navbar } from "vuepress-theme-hope";
-
-export const en = navbar([
- "/",
- { text: "CIPs", link: "/article/" },
- { text: "Categories", link: "/category/" },
- { text: "Timeline", link: "/timeline/" },
- { text: "Tags", link: "/tag/" },
-]);
diff --git a/cip/.vuepress/navbar/index.ts b/cip/.vuepress/navbar/index.ts
deleted file mode 100644
index fe36955..0000000
--- a/cip/.vuepress/navbar/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./en";
diff --git a/cip/.vuepress/styles/index.scss b/cip/.vuepress/styles/index.scss
deleted file mode 100644
index b04c99b..0000000
--- a/cip/.vuepress/styles/index.scss
+++ /dev/null
@@ -1,45 +0,0 @@
-:root {
- --font-family-fancy: var(--font-family);
- --theme-color: #46b549;
- --content-width: 1040px;
-}
-
-#themecolor-picker li span.theme-color {
- background: var(--theme-color) !important;
-}
-
-.page .blog-info-wrapper {
- display: none;
-}
-
-.page.blog .blog-page-wrapper .blog-home {
- max-width: 1040px !important;
-}
-
-.blog-page {
- max-width: 1040px !important;
-}
-
-.navbar .nav-links {
- font-size: 1rem !important;
-}
-
-.navbar .nav-item {
- margin: 0 0.5rem !important;
-}
-
-html[data-theme="light"] .project-panel .project {
- background: lighten(#46b549, 30%) !important;
-}
-
-html[data-theme="dark"] .project-panel .project {
- background: darken(#46b549, 30%) !important;
-}
-
-aside.vp-blog-info-wrapper {
- display: none;
-}
-
-main.vp-blog-main {
- max-width: 1040px;
-}
diff --git a/cip/.vuepress/styles/palette.scss b/cip/.vuepress/styles/palette.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/cip/README.md b/cip/README.md
deleted file mode 100644
index deba51e..0000000
--- a/cip/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-home: true
-layout: BlogHome
-title: CIP
-heroText: CIP
-tagline: Core Improvement Proposals
-heroFullScreen: false
-bgImage: /core-banner.png
-projects:
- - icon: article
- name: Core Web
- desc: Core Blockchain website
- link: https://coreblockchain.net
-
- - icon: link
- name: Core ◆ Talk
- desc: Core Talk Community
- link: https://coretalk.space
-
- - icon: book
- name: Dev Portal
- desc: Core Development Portal
- link: https://dev.coreblockchain.net
-
- - icon: article
- name: Blog
- desc: Core Blog
- link: https://blog.coreblockchain.net
----
diff --git a/cip/authors.yml b/cip/authors.yml
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/cip/authors.yml
@@ -0,0 +1 @@
+
diff --git a/cip/posts/cip-100.md b/cip/cip-100.md
similarity index 65%
rename from cip/posts/cip-100.md
rename to cip/cip-100.md
index 33f5639..bbdb07e 100644
--- a/cip/posts/cip-100.md
+++ b/cip/cip-100.md
@@ -6,24 +6,23 @@ lang: en-US
tag: final
category: cbc
date: 2022-01-02
+star: true
---
-
-
-
We are introducing a standard for crypto addresses — ICAN — with HRP and checksum, similar to what we are all using for current financial transactions. ICAN stands for International Crypto Account Number.
Only hexadecimal characters are used to minimize the size of the address in the Blockchain storage.
-
+
+
## Abstract
-
+
The ICAN facilitates the communication and processing of the transactions. It allows exchanging account identification details in a machine-readable form.
## Motivation
-
+
Find reliable and financially friendly Blockchain addresses for the community. Easy to understand and easy to interpret, but still compatible with modern financial solutions. The checksum is applied in this structure to ensure minimum risk of mistyping the address. ICAN based on the financial standards that people are using already to simplify the matter for them.
## Specification
-
+
Crypto Address consists of:
1. Crypto Identifier - CID (HRP)
@@ -41,6 +40,7 @@ Currently unassigned and deleted [ISO 3166-1 alpha-2 codes](https://en.wikipedia
2 digits are calculated with modulo 97 from BCAN.
Why did we choose modulo 97 (IBAN format)?
+
1. This gives us the possibility to detect ~99% of mistakes.
1. Easy to process/calculate.
1. Well known by financial institutions.
@@ -94,7 +94,7 @@ nn | Maximum length.
#### Format
-```
+```txt
hh!kk!hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!
```
@@ -119,25 +119,27 @@ Note: With QR codes, capital letters in Alphanumeric mode are a must.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
## Rationale
-
+
We use hexadecimal characters to minimize the size of the addresses in Blockchain. The first part — CID — reflects the type of the network to avoid misunderstanding of the type of address. We choose two digits checksum because it is already in use and it is easier to interpret while delivering the address in several cases. The third part showcases the last 40 characters (20 bytes) of the public key.
## Implementation
-
Validators:
-- Golang — [go-ican](https://github.com/cryptohub-digital/go-ican)
-- JavaScript — [ican.js](hhttps://github.com/cryptohub-digital/ican.js)
-- Bash - [ican-validate.sh](https://github.com/cryptohub-digital/ican-validate.sh)
-- .Net — [IcanNet](https://github.com/cryptohub-digital/IcanNet)
+
+- Golang — [go-ican](https://github.com/bchainhub/go-ican)
+- JavaScript — [ican.js](hhttps://github.com/bchainhub/ican.js)
+- Bash - [ican-validate.sh](https://github.com/bchainhub/ican-validate.sh)
+- .Net — [IcanNet](https://github.com/bchainhub/IcanNet)
## Security Considerations
-
+
40 characters (20 bytes) of Blockchain address.
Why 20 bytes?
+
1. Heuristic aimed to simplify the management of the key; that is, copy and pasting, checksums, or confirmations over the phone in large transfers.
1. Pre-empting security mechanism. Hashing functions are broken every other decade or so, hence cutting the full public key is a great extra layer of defense.
## Copyright
+
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
diff --git a/cip/posts/cip-20.md b/cip/cip-20.md
similarity index 99%
rename from cip/posts/cip-20.md
rename to cip/cip-20.md
index 0c6f029..b8bf2ac 100644
--- a/cip/posts/cip-20.md
+++ b/cip/cip-20.md
@@ -6,11 +6,12 @@ lang: en-US
tag: final
category: cbc
date: 2022-05-28
+star: true
---
-## Simple Summary
-
A standard interface for tokens.
+
+
## Abstract
This standard allows for the implementation of a standard API for tokens within smart contracts. It provides basic functionality to transfer tokens and allows tokens to be approved so they can be spent by another on-chain third party.
diff --git a/cip/posts/cip-98.md b/cip/cip-98.md
similarity index 98%
rename from cip/posts/cip-98.md
rename to cip/cip-98.md
index 6f8cf02..3f793ef 100644
--- a/cip/posts/cip-98.md
+++ b/cip/cip-98.md
@@ -1,16 +1,16 @@
---
cip: 98
-title: Core Coin Cryptography Scheme
+title: Core Cryptography Scheme
author: Dmitry (@todesstile)
lang: en-US
tag: final
category: core
date: 2022-06-16
---
-## Abstract
-
This standard details the cryptography scheme employed in the Core Blockchain.
+
+
## Motivation
The goal of this standard is to circumvent the limitations of ed448 and create an HD derivation scheme analogous to BIP32.
diff --git a/cip/posts/cip-99.md b/cip/cip-99.md
similarity index 97%
rename from cip/posts/cip-99.md
rename to cip/cip-99.md
index 057cfda..b55078e 100644
--- a/cip/posts/cip-99.md
+++ b/cip/cip-99.md
@@ -1,12 +1,15 @@
---
cip: 99
-title: Core Coin HD-Wallet Scheme
+title: Core HD-Wallet Scheme
author: Dmitry (@todesstile)
lang: en-US
tag: final
category: core
date: 2022-06-16
---
+This standard outlines the HD-wallet derivation scheme for Core Coin.
+
+
## Abstract
diff --git a/cip/example/cip-0.md b/cip/example/cip-0.md
deleted file mode 100755
index 699dfa0..0000000
--- a/cip/example/cip-0.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-cip: 0
-title: CIP0 example
-author: Author (@author@server.pod)
-lang: en-US
-tag: draft
-category: example
-date: 2022-01-01
----
-
-
-
-
-
-## Abstract
-
-
-## Motivation
-
-
-## Specification
-
-
-## Rationale
-
-
-## Backwards Compatibility
-
-
-## Test Cases
-
-
-## Implementation
-
-
-## Security Considerations
-
-
-## Copyright
-Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
diff --git a/cip/posts/.gitkeep b/cip/posts/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/cip-0.md b/docs/cip-0.md
new file mode 100755
index 0000000..a4c9d3c
--- /dev/null
+++ b/docs/cip-0.md
@@ -0,0 +1,51 @@
+---
+cip: 0
+title: CIP-0 example
+author: Author (@author@server.pod)
+lang: en-US
+tag: draft
+category: example
+date: 2022-01-01
+sidebar_position: 7
+---
+> This is the suggested template for new CIPs. Note that a CIP number will be assigned by an editor. When opening a pull request to submit your CIP, please use an abbreviated title in the filename, `cip-ID.md`, where "ID" is the CIP ID. The title should be 44 characters or fewer.
+
+> Provide a simplified and layperson-accessible explanation of the CIP.
+
+
+
+## Abstract
+
+> A short (~200 words) description of the technical issue being addressed.
+
+## Motivation
+
+> The motivation is critical for CIPs that aim to change the Core protocol. It should clearly explain why the existing protocol specification is inadequate to address the problem that the CIP solves. CIP submissions without sufficient motivation may be rejected outright.
+
+## Specification
+
+> The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow for competing, interoperable implementations on any of the current Core platforms.
+
+## Rationale
+
+> The rationale elaborates on the specification by describing the motivations behind the design and the reasons for particular design decisions. It should discuss alternative designs that were considered and related work. The rationale may also provide evidence of consensus within the community and should address important objections or concerns raised during discussions.
+
+## Backwards Compatibility
+
+> All CIPs introducing backward incompatibilities must include a section detailing these incompatibilities and their severity. The CIP must explain how the author proposes to address these incompatibilities. CIP submissions without a comprehensive backward compatibility analysis may be rejected outright.
+
+## Test Cases
+
+> Test cases for implementation are mandatory for CIPs affecting consensus changes. Other CIPs can opt to include links to relevant test cases if applicable.
+
+## Implementation
+
+> Implementations must be finalized before any CIP is given the "Final" status, but they don't need to be completed before the CIP is accepted. While achieving consensus on the specification and rationale before initiating coding is beneficial, the principle of "rough consensus and running code" can be instrumental in resolving many API details discussions.
+
+## Security Considerations
+
+> All CIPs must contain a section discussing the security implications and considerations relevant to the proposed change. This section should provide details important for security discussions, highlight potential risks, and be referenced throughout the lifecycle of the proposal. CIP submissions lacking the "Security Considerations" section will be rejected. A CIP cannot proceed to "Final" status without a Security Considerations discussion deemed satisfactory by the reviewers.
+
+## Copyright
+
+Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
diff --git a/cip/docs/cip-categories.md b/docs/cip-categories.md
similarity index 99%
rename from cip/docs/cip-categories.md
rename to docs/cip-categories.md
index b3431a0..642307e 100755
--- a/cip/docs/cip-categories.md
+++ b/docs/cip-categories.md
@@ -7,8 +7,8 @@ category:
- tutorial
tag:
- tutorial
-star: true
comment: false
+sidebar_position: 4
---
# CIP Categories
diff --git a/cip/docs/cip-editors.md b/docs/cip-editors.md
similarity index 98%
rename from cip/docs/cip-editors.md
rename to docs/cip-editors.md
index 6fc6435..d6a0573 100755
--- a/cip/docs/cip-editors.md
+++ b/docs/cip-editors.md
@@ -7,8 +7,8 @@ category:
- tutorial
tag:
- tutorial
-star: true
comment: false
+sidebar_position: 6
---
# CIP Editors
diff --git a/cip/docs/cip-rationale.md b/docs/cip-rationale.md
similarity index 97%
rename from cip/docs/cip-rationale.md
rename to docs/cip-rationale.md
index f9f6567..08ea9cd 100755
--- a/cip/docs/cip-rationale.md
+++ b/docs/cip-rationale.md
@@ -7,8 +7,8 @@ category:
- tutorial
tag:
- tutorial
-star: true
comment: false
+sidebar_position: 3
---
# CIP Rationale
diff --git a/cip/docs/cip-workflow.md b/docs/cip-workflow.md
similarity index 86%
rename from cip/docs/cip-workflow.md
rename to docs/cip-workflow.md
index fc71230..015d2bd 100755
--- a/cip/docs/cip-workflow.md
+++ b/docs/cip-workflow.md
@@ -7,12 +7,13 @@ category:
- tutorial
tag:
- tutorial
-star: true
comment: false
+sidebar_position: 5
---
# CIP Work Flow
**Key Stakeholders**:
+
- **You**, the champion or *CIP author*
- **CIP editors** [(details)](cip/docs/cip-editors)
- **Core Developers**
@@ -20,6 +21,7 @@ comment: false
Before diving in, validate your idea with the Core community. It's efficient to ascertain the originality and broad applicability of your concept before investing time. Relying solely on online searches might not provide comprehensive insights. Ensure the proposal isn't limited in its benefits to just you, the author. An idea may seem brilliant individually but may not cater to the wider Core community.
As a champion, your tasks encompass:
+
- Drafting the CIP in the prescribed format
- Steering discussions in relevant forums
- Building community consensus
@@ -29,32 +31,34 @@ The typical journey of a successful CIP is:
Every stage transition requires the CIP author's request and subsequent approval by the CIP editors. Employ a pull request to modify the status and append a link guiding further discussions.
-### Status Definitions:
+## Status Definitions
- **Active**: Some Informational and Process CIPs remain active indefinitely.
- **Work in progress (WIP)**: After gauging community support, the champion drafts a CIP via a pull request, which may also include an initial implementation to facilitate review.
- * ✔️ **Draft**: A CIP editor, upon agreement, assigns a CIP number (typically derived from related issue or PR) and integrates your pull request.
- * ❌ **Draft**: Grounds for refusal include lack of focus, vastness, redundant effort, technical fallacies, insufficient motivation, compatibility issues, or deviation from Core's ethos.
+ - ✔️ **Draft**: A CIP editor, upon agreement, assigns a CIP number (typically derived from related issue or PR) and integrates your pull request.
+ - ❌ **Draft**: Grounds for refusal include lack of focus, vastness, redundant effort, technical fallacies, insufficient motivation, compatibility issues, or deviation from Core's ethos.
- **Draft**: Post the initial merge, iterate on your draft via subsequent pull requests until it matures for the next stage. A draft, especially if it impacts consensus, should ideally have a working implementation.
- * ✔️ **Last Call**: CIP editors, if in agreement, mark the status and set a 14-day review window.
- * ❌ **Last Call**: A request might be turned down if substantial edits to the draft are anticipated.
-- **Last Call**: Prominent listing of the CIP on [Core CIP Website](http://cip.coreblockchain.cc/).
- * ❌: Significant alterations or unresolved technical concerns revert the CIP to draft.
- * ✔️ **Accepted**: Applicable only to Core CIPs. A smooth Last Call leads to acceptance.
- * ✔️ **Final**: For non-core CIPs, a smooth Last Call culminates in a Final status.
+ - ✔️ **Last Call**: CIP editors, if in agreement, mark the status and set a 14-day review window.
+ - ❌ **Last Call**: A request might be turned down if substantial edits to the draft are anticipated.
+- **Last Call**: Prominent listing of the CIP on [Core CIP Website](http://cip.coreblockchain.net).
+ - ❌: Significant alterations or unresolved technical concerns revert the CIP to draft.
+ - ✔️ **Accepted**: Applicable only to Core CIPs. A smooth Last Call leads to acceptance.
+ - ✔️ **Final**: For non-core CIPs, a smooth Last Call culminates in a Final status.
- **Accepted**: Pertains solely to Core CIPs. The decision to incorporate it in client builds through a hard fork isn't under CIP purview.
- * ✔️ **Final**: A Core CIP has to be implemented across a minimum of three viable Core clients for "Final" consideration. Upon wide community adoption, it's designated "Final".
+ - ✔️ **Final**: A Core CIP has to be implemented across a minimum of three viable Core clients for "Final" consideration. Upon wide community adoption, it's designated "Final".
- **Final**: Reflects the current pinnacle. A "Final" CIP gets updated strictly for error rectifications.
-### Other Unique Statuses:
+## Other Unique Statuses
+
- **Deferred**: For core CIPs postponed for an upcoming hard fork.
- **Rejected**: Either a fundamentally flawed CIP or a Core CIP declined by Core Devs.
- **Active**: Similar to Final, but can undergo updates without changing the CIP number.
- **Superseded**: A once-final CIP no longer represents the zenith. Another "Final" CIP references the outdated one.
-## Pillars of a Successful CIP:
+## Pillars of a Successful CIP
+
+Each CIP should encapsulate
-Each CIP should encapsulate:
- **Preamble**: RFC 822 headers detailing CIP metadata.
- **Simple Summary**: An easy-to-understand synopsis.
- **Abstract**: A concise (~200 words) technical summary.
@@ -74,7 +78,7 @@ Draft CIPs using [markdown](https://guides.github.com/features/mastering-markdow
Mandatory and optional headers should adhere to the RFC 822 style.
-### Author Header:
+### Author Header
Represents author details in various permissible formats.
diff --git a/cip/docs/cip.md b/docs/cip.md
similarity index 67%
rename from cip/docs/cip.md
rename to docs/cip.md
index 649e21e..15ff517 100755
--- a/cip/docs/cip.md
+++ b/docs/cip.md
@@ -7,8 +7,8 @@ category:
- tutorial
tag:
- tutorial
-star: true
comment: false
+sidebar_position: 1
---
# CIP
@@ -25,29 +25,29 @@ You can begin by opening your proposal under the [issues section of this reposit
- [CIP categories](/docs/cip-categories)
- [CIP workflow](/docs/cip-workflow)
- [CIP editors](/docs/cip-editors)
-- [CIP example](/example/cip-0)
+- [CIP example](/docs/cip-0)
### How to start
-1. Review the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/example/cip-0.md)
-2. [Create a CIP in the Online Editor](https://github.com/core-coin/cip/new/master?filename=cip/posts/cip-0.md&message=CIP%20Proposal&description=CIP%20Proposal%20Draft&value=---%0Acip%3A%20%0Atitle%3A%20%0Aauthor%3A%20%0Alang%3A%20en-US%0Atag%3A%20draft%0Acategory%3A%20%0Adate%3A%20%0A---%0A%0A)
+1. Review the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/docs/cip-0.md)
+2. [Create a CIP in the Online Editor](https://github.com/core-coin/cip/new/master?filename=cip/cip-0.md&message=CIP%20Proposal&description=CIP%20Proposal%20Draft&value=---%0Acip%3A%20%0Atitle%3A%20%0Aauthor%3A%20%0Alang%3A%20en-US%0Atag%3A%20draft%0Acategory%3A%20%0Adate%3A%202022-12-01%0A---%0A%3C%21--Introduction--%3E%0A%0A%3C%21--truncate--%3E%0A%0A%23%23%20Abstract%0A%0A%0A%0A%23%23%20Motivation%0A%0A%0A%0A%23%23%20Specification%0A%0A%0A%0A%23%23%20Rationale%0A%0A%0A%0A%23%23%20Backwards%20Compatibility%0A%0A%0A%0A%23%23%20Test%20Cases%0A%0A%0A%0A%23%23%20Implementation%0A%0A%0A%0A%23%23%20Security%20Considerations%0A%0A%0A%0A%23%23%20Copyright%0A%0ACopyright%20and%20related%20rights%20waived%20via%20%5BCC0%5D%28https%3A%2F%2Fcreativecommons.org%2Fpublicdomain%2Fzero%2F1.0%2F%29.%0A)
Or
1. [Fork](https://github.com/core-coin/cip/fork) this repository.
-2. Modify the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/example/cip-0.md) and move it to the [`cip` folder](https://github.com/core-coin/cip/blob/master/cip/posts).
+2. Modify the template [cip-0](https://github.com/core-coin/cip/blob/master/cip/docs/cip-0.md) and move it to the [`cip` folder](https://github.com/core-coin/cip/blob/master/cip).
3. [Submit a Pull Request](https://github.com/core-coin/cip/compare) to the Core CIP repository.
-For graphical content, place it in the [CIP image directory](https://github.com/core-coin/cip/blob/master/cip/.vuepress/public/images) `/cip/.vuepress/public/images/cip-x`, where 'x' is the CIP number. Link images using the path `/images/cip-x/cip-x-1.png`.
+For graphical content, place it in the [CIP image directory](https://github.com/core-coin/cip/blob/master/cip) `/cip/cip-x`, where 'x' is the CIP number. Link images using the path `/cip/cip-x/cip-x-1.png`.
-## CIP tags
+## Tags
- `Draft`: Consideration phase for a CIP.
- `Accepted`: A CIP set for immediate adoption, often slated for the next hard fork (relevant for Core/Consensus layer CIPs).
- `Final`: A CIP adopted in a prior hard fork (pertinent to Core/Consensus layer CIPs).
- `Deferred`: A CIP not up for immediate adoption, but might be reconsidered for future hard forks.
-## CIP categories
+## Categories
CIPs are categorized into various types, each with its own list:
@@ -61,4 +61,4 @@ CIPs are categorized into various types, each with its own list:
## Channels
- [Core ◆ Talk](https://coretalk.space/tags/cip)
-- [GH Discussions](https://github.com/core-coin/cip/discussions)
+- [GH Issues](https://github.com/core-coin/cip/issues)
diff --git a/cip/docs/what-is-cip.md b/docs/what-is-cip.md
similarity index 96%
rename from cip/docs/what-is-cip.md
rename to docs/what-is-cip.md
index ae3dedd..655b659 100755
--- a/cip/docs/what-is-cip.md
+++ b/docs/what-is-cip.md
@@ -7,8 +7,8 @@ category:
- tutorial
tag:
- tutorial
-star: true
comment: false
+sidebar_position: 2
---
# What is a CIP?
diff --git a/docusaurus.config.js b/docusaurus.config.js
new file mode 100644
index 0000000..a807795
--- /dev/null
+++ b/docusaurus.config.js
@@ -0,0 +1,178 @@
+// @ts-check
+// Note: type annotations allow type checking and IDEs autocompletion
+
+const lightCodeTheme = require('prism-react-renderer/themes/github');
+const darkCodeTheme = require('prism-react-renderer/themes/dracula');
+
+/** @type {import('@docusaurus/types').Config} */
+const config = {
+ title: 'CIP',
+ tagline: 'Core Imporvement Proposal',
+ favicon: 'img/favicon.png',
+
+ // Set the production url of your site here
+ url: 'https://cip.coreblockchain.net',
+ // 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: 'Core Foundation', // Usually your GitHub org/user name.
+ projectName: 'cip', // Usually your repo name.
+
+ onBrokenLinks: 'throw',
+ onBrokenMarkdownLinks: 'warn',
+
+ // Even if you don't use internalization, 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: require.resolve('./sidebars.js'),
+ editUrl:
+ 'https://github.com/core-coin/cip/tree/master/docs/',
+ },
+ blog: {
+ showReadingTime: true,
+ editUrl:
+ 'https://github.com/core-coin/cip/tree/master/cip/',
+ path: 'cip',
+ routeBasePath: 'cip',
+ blogSidebarCount: 0,
+ blogTitle: 'CIP Register',
+ postsPerPage: 5,
+ feedOptions: {
+ type: 'all',
+ copyright: `Core Foundation ⛬ Copyright and related rights waived via CC0`,
+ createFeedItems: async (params) => {
+ const {blogPosts, defaultCreateFeedItems, ...rest} = params;
+ return defaultCreateFeedItems({
+ blogPosts: blogPosts.filter((item, index) => index < 10),
+ ...rest,
+ });
+ },
+ },
+ },
+ theme: {
+ customCss: require.resolve('./src/css/custom.css'),
+ },
+ }),
+ ],
+ ],
+
+ themeConfig:
+ /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
+ ({
+ // Replace with your project's social card
+ image: 'img/social-card.jpg',
+ metadata: [
+ { name: 'description', content: 'Core Improvement Proposals' },
+ { property: 'og:title', content: 'CIP' },
+ { property: 'og:description', content: 'Core Improvement Proposals' },
+ { property: 'og:type', content: 'website' },
+ {
+ "name": "keywords",
+ "content": "author, categories, champion, cip, cips, consensus, core, design, document, each, editor, editors, encompassing, features, flow, fork, github, have, improvement, improvements, information, intended, key, mechanisms, members, new, offers, platform, primary, proposal, proposing, protocol, rationale, require, responsibilities, serve, sets, six, specifications, stakeholders, standards, stands, team, we, what, work, you",
+ },
+ { property: 'ican:xcb', content: 'cb57bbbb54cdf60fa666fd741be78f794d4608d67109' },
+ ],
+ navbar: {
+ title: 'CIP',
+ logo: {
+ alt: 'CIP',
+ src: 'img/logo.svg',
+ },
+ items: [
+ {to: '/cip', label: 'CIPs', position: 'left'},
+ {
+ type: 'docSidebar',
+ sidebarId: 'tutorialSidebar',
+ position: 'left',
+ label: 'Tutorial',
+ },
+ {
+ href: 'https://github.com/core-coin',
+ label: 'GitHub',
+ position: 'right',
+ },
+ ],
+ },
+ footer: {
+ style: 'dark',
+ links: [
+ {
+ title: 'Docs',
+ items: [
+ {
+ label: 'CIPs',
+ to: '/cip',
+ },
+ {
+ label: 'Tutorial',
+ to: '/docs/cip',
+ },
+ ],
+ },
+ {
+ title: 'Ecosystem',
+ items: [
+ {
+ label: 'Core Website',
+ href: 'https://coreblockchain.net',
+ },
+ {
+ label: 'Core Blog',
+ href: 'https://blog.coreblockchain.net',
+ },
+ {
+ label: 'Dev Portal',
+ href: 'https://dev.coreblockchain.net',
+ },
+ ],
+ },
+ {
+ title: 'Community',
+ items: [
+ {
+ label: 'Core ◆ Talk',
+ href: 'https://coretalk.space',
+ },
+ {
+ label: 'GitHub',
+ href: 'https://github.com/core-coin',
+ },
+ {
+ label: '𝕏',
+ href: 'https://x.com/corecoincc',
+ },
+ ],
+ },
+ ],
+ copyright: `Core Foundation ⛬ Copyright and related rights waived via CC0.`,
+ },
+ prism: {
+ theme: lightCodeTheme,
+ darkTheme: darkCodeTheme,
+ },
+ algolia: {
+ appId: '6BNEFFU7K3',
+ apiKey: 'c149ac2035f0b47db92d69b9bfa4f227',
+ indexName: 'cip-coreblockchain-net',
+ searchParameters: {
+ facetFilters: ['tags:en'],
+ },
+ },
+ }),
+};
+
+module.exports = config;
diff --git a/package.json b/package.json
index 617b65b..7abb8bf 100644
--- a/package.json
+++ b/package.json
@@ -1,21 +1,47 @@
{
- "name": "@corefoundation/cip",
- "version": "2.1.0",
- "description": "CIP",
- "license": "CORE",
+ "name": "cip",
+ "version": "2.0.0",
+ "private": true,
"scripts": {
- "cip:build": "vuepress build cip",
- "build": "vuepress build cip",
- "cip:clean-dev": "vuepress dev cip --clean-cache",
- "cip:dev": "vuepress dev cip",
- "dev": "vuepress dev cip",
- "eliminate-npm": "rm -rf node_modules package-lock.json && npm cache clean --force"
+ "docusaurus": "docusaurus",
+ "start": "docusaurus start",
+ "build": "docusaurus build",
+ "swizzle": "docusaurus swizzle",
+ "deploy": "docusaurus deploy",
+ "clear": "docusaurus clear",
+ "serve": "docusaurus serve",
+ "write-translations": "docusaurus write-translations",
+ "write-heading-ids": "docusaurus write-heading-ids",
+ "typecheck": "tsc"
+ },
+ "dependencies": {
+ "@docusaurus/core": "2.4.3",
+ "@docusaurus/preset-classic": "2.4.3",
+ "@mdx-js/react": "^1.6.22",
+ "clsx": "^1.2.1",
+ "prism-react-renderer": "^1.3.5",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2",
+ "unist-util-visit": "^5.0.0"
},
"devDependencies": {
- "vuepress": "2.0.0-beta.66",
- "vuepress-theme-hope": "^2.0.0-beta.235"
+ "@docusaurus/module-type-aliases": "2.4.3",
+ "@tsconfig/docusaurus": "^1.0.5",
+ "typescript": "^4.7.4"
},
- "dependencies": {
- "vue": "^3.3.4"
+ "browserslist": {
+ "production": [
+ ">0.5%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ },
+ "engines": {
+ "node": ">=16.14"
}
}
diff --git a/sidebars.js b/sidebars.js
new file mode 100644
index 0000000..9ab54c2
--- /dev/null
+++ b/sidebars.js
@@ -0,0 +1,33 @@
+/**
+ * Creating a sidebar enables you to:
+ - create an ordered group of docs
+ - render a sidebar for each doc of that group
+ - provide next/previous navigation
+
+ The sidebars can be generated from the filesystem, or explicitly defined here.
+
+ Create as many sidebars as you want.
+ */
+
+// @ts-check
+
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+const sidebars = {
+ // By default, Docusaurus generates a sidebar from the docs folder structure
+ tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
+
+ // But you can create a sidebar manually
+ /*
+ tutorialSidebar: [
+ 'intro',
+ 'hello',
+ {
+ type: 'category',
+ label: 'Tutorial',
+ items: ['tutorial-basics/create-a-document'],
+ },
+ ],
+ */
+};
+
+module.exports = sidebars;
diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx
new file mode 100644
index 0000000..e576ca2
--- /dev/null
+++ b/src/components/HomepageFeatures/index.tsx
@@ -0,0 +1,75 @@
+import React from 'react';
+import clsx from 'clsx';
+import styles from './styles.module.css';
+
+type FeatureItem = {
+ title: string;
+ Img: string;
+ link: string;
+ description: JSX.Element;
+};
+
+const FeatureList: FeatureItem[] = [
+ {
+ title: 'What is a CIP?',
+ Img: '/img/mountain.png',
+ link: '/docs/what-is-cip',
+ description: (
+ <>
+ A CIP is a design document that offers information to the Core community or introduces a new feature to Core. Learn more about CIP and its importance.
+ >
+ ),
+ },
+ {
+ title: 'Core Improvement Proposals',
+ Img: '/img/park.png',
+ link: '/docs/cip',
+ description: (
+ <>
+ The Core Improvement Proposal (CIP) sets standards for the Core platform. Discover how to contribute, the different categories of CIPs, and more.
+ >
+ ),
+ },
+ {
+ title: 'Contribute to CIP',
+ Img: '/img/workshop.png',
+ link: '/docs/cip#how-to-start',
+ description: (
+ <>
+ Start by reviewing the template, creating a CIP online, or forking the repository. Contribute to the improvement of the Core platform.
+ >
+ ),
+ },
+];
+
+function Feature({title, Img, link, description}: FeatureItem) {
+ return (
+