From 82fc2b241da380f3146de6c66853eb58ba4660c8 Mon Sep 17 00:00:00 2001 From: Anna Date: Thu, 28 Dec 2023 18:17:26 +0100 Subject: [PATCH] MGU-4 Proposals page - Add Markdown view --- app/(routes)/create-proposal/page.tsx | 1 - app/(routes)/my-voting-power/page.tsx | 1 - app/(routes)/proposals/[id]/page.tsx | 4 +- .../markdown-editor.component.tsx | 108 ++++---- .../markdown-view/markdown-view.component.tsx | 30 ++ .../markdown-view/markdown-view.module.scss | 15 + app/helpers/mocks.tsx | 261 +++++++----------- 7 files changed, 198 insertions(+), 222 deletions(-) create mode 100644 app/components/_shared/markdown-view/markdown-view.component.tsx create mode 100644 app/components/_shared/markdown-view/markdown-view.module.scss diff --git a/app/(routes)/create-proposal/page.tsx b/app/(routes)/create-proposal/page.tsx index d586fbf2..a55a4159 100644 --- a/app/(routes)/create-proposal/page.tsx +++ b/app/(routes)/create-proposal/page.tsx @@ -2,7 +2,6 @@ import styles from "./page.module.scss"; import {CreateProposalContentStep, CreateProposalWalletStep} from "@components/create-proposal"; import {CreateProposalProvider} from "@/app/providers/create-proposal.provider"; -import { Breadcrumbs } from "@/app/components/_shared/breadcrumbs/breadcrumbs.component"; const Page = () => { return
diff --git a/app/(routes)/my-voting-power/page.tsx b/app/(routes)/my-voting-power/page.tsx index 38c3ef4f..d45f2244 100644 --- a/app/(routes)/my-voting-power/page.tsx +++ b/app/(routes)/my-voting-power/page.tsx @@ -19,7 +19,6 @@ import { differenceInMonths, differenceInCalendarWeeks, differenceInCalendarMonths, } from "date-fns"; -import { Breadcrumbs } from "@/app/components/_shared/breadcrumbs/breadcrumbs.component"; const Page = () => { diff --git a/app/(routes)/proposals/[id]/page.tsx b/app/(routes)/proposals/[id]/page.tsx index bbabbee6..bb9c03e0 100644 --- a/app/(routes)/proposals/[id]/page.tsx +++ b/app/(routes)/proposals/[id]/page.tsx @@ -13,7 +13,7 @@ import classNames from "classnames"; import {useState} from "react"; import { CopyIcon } from "@/app/components/_icons/copy.icon"; import { CopyToClipboard } from 'react-copy-to-clipboard'; -import { Breadcrumbs } from "@/app/components/_shared/breadcrumbs/breadcrumbs.component"; +import { MarkdownView } from "@/app/components/_shared/markdown-view/markdown-view.component"; const validationSchema = object({ votingPower: number().required().typeError('Invalid number').max(400) @@ -83,7 +83,7 @@ const Page = () => {

Details

-
+
diff --git a/app/components/_shared/markdown-editor/markdown-editor.component.tsx b/app/components/_shared/markdown-editor/markdown-editor.component.tsx index 362cbf57..02326cc8 100644 --- a/app/components/_shared/markdown-editor/markdown-editor.component.tsx +++ b/app/components/_shared/markdown-editor/markdown-editor.component.tsx @@ -1,42 +1,38 @@ -import '@mdxeditor/editor/style.css'; -import styles from './markdown-editor.module.scss'; +import { TabList } from "@components/_shared"; import BaseComponentProps from "@interfaces/base-component-props.interface"; -import classNames from "classnames"; -import {TabList} from "@components/_shared"; -import {MutableRefObject, Suspense, useEffect, useRef, useState} from "react"; import { BlockTypeSelect, - BoldItalicUnderlineToggles, codeBlockPlugin, codeMirrorPlugin, + BoldItalicUnderlineToggles, CodeToggle, - CreateLink, diffSourcePlugin, headingsPlugin, imagePlugin, + CreateLink, InsertCodeBlock, InsertImage, - InsertThematicBreak, linkDialogPlugin, linkPlugin, + InsertThematicBreak, + ListsToggle, + MDXEditor, + MDXEditorMethods, + UndoRedo, + codeBlockPlugin, codeMirrorPlugin, + diffSourcePlugin, headingsPlugin, imagePlugin, + linkDialogPlugin, linkPlugin, listsPlugin, - ListsToggle, markdownShortcutPlugin, MDXEditor, - MDXEditorMethods, quotePlugin, thematicBreakPlugin, - toolbarPlugin, - UndoRedo + markdownShortcutPlugin, + quotePlugin, thematicBreakPlugin, + toolbarPlugin } from "@mdxeditor/editor"; -import { remark } from 'remark'; -import html from 'remark-html'; +import '@mdxeditor/editor/style.css'; +import classNames from "classnames"; +import { useEffect, useRef, useState } from "react"; +import { MarkdownView } from '../markdown-view/markdown-view.component'; +import styles from './markdown-editor.module.scss'; interface MarkdownEditorProps extends BaseComponentProps { value: string; markdownChanged: (value: string) => void; } export const MarkdownEditor = ({className, style, value, markdownChanged }:MarkdownEditorProps) => { - const [markdown, setMarkdown] = useState(''); - const [markdownParsed, setMarkdownParsed] = useState(null as string | null); - const editorRef = useRef(null); - useEffect(() => { - remark().use(html).process(markdown).then((file) => { - setMarkdownParsed(file.toString()); - }); - }, [markdown]); - useEffect(() => { setMarkdown(value); }, [value]); @@ -50,43 +46,39 @@ export const MarkdownEditor = ({className, style, value, markdownChanged }:Markd
<> - - - - - - - - - - - }), - listsPlugin(), - quotePlugin(), - headingsPlugin(), - linkPlugin(), - linkDialogPlugin(), - imagePlugin(), - thematicBreakPlugin(), - codeBlockPlugin({defaultCodeBlockLanguage: 'txt'}), - codeMirrorPlugin({codeBlockLanguages: {js: 'JavaScript', css: 'CSS', txt: 'text', tsx: 'TypeScript'}}), - diffSourcePlugin({viewMode: 'rich-text', diffMarkdown: 'boo'}), - markdownShortcutPlugin() - ]} + className={styles.editor} + contentEditableClassName={classNames('prose', styles.editor__contentEditable)} + markdown={markdown} + onChange={updateValue} + plugins={[ + toolbarPlugin({ + toolbarContents: () => <> + + + + + + + + + + + }), + listsPlugin(), + quotePlugin(), + headingsPlugin(), + linkPlugin(), + linkDialogPlugin(), + imagePlugin(), + thematicBreakPlugin(), + codeBlockPlugin({defaultCodeBlockLanguage: 'txt'}), + codeMirrorPlugin({codeBlockLanguages: {js: 'JavaScript', css: 'CSS', txt: 'text', tsx: 'TypeScript'}}), + diffSourcePlugin({viewMode: 'rich-text', diffMarkdown: 'boo'}), + markdownShortcutPlugin() + ]} />
-
- { - markdownParsed &&
- } -
+
} \ No newline at end of file diff --git a/app/components/_shared/markdown-view/markdown-view.component.tsx b/app/components/_shared/markdown-view/markdown-view.component.tsx new file mode 100644 index 00000000..7dbbfa5d --- /dev/null +++ b/app/components/_shared/markdown-view/markdown-view.component.tsx @@ -0,0 +1,30 @@ +import { useEffect, useState } from "react"; +import { remark } from 'remark'; +import html from 'remark-html'; +import styles from './markdown-view.module.scss'; +import classNames from "classnames"; + +type MarkdownViewProps = { + markdown: string; +} + +export const MarkdownView = ({ markdown }: MarkdownViewProps) => { + const [markdownParsed, setMarkdownParsed] = useState(''); + + useEffect(() => { + (async () => { + try { + const file = await remark().use(html).process(markdown); + setMarkdownParsed(file.toString()); + } catch (err) { + console.log('Error while parsing markdown', err); + } + })(); + }, [markdown]); + + return
+ { + markdownParsed &&
+ } +
+} \ No newline at end of file diff --git a/app/components/_shared/markdown-view/markdown-view.module.scss b/app/components/_shared/markdown-view/markdown-view.module.scss new file mode 100644 index 00000000..f4a23cb3 --- /dev/null +++ b/app/components/_shared/markdown-view/markdown-view.module.scss @@ -0,0 +1,15 @@ +@import "@/app/brand"; + +.container { + color: var(--theme-foreground-color); + font-size: $theme-unit * 4; + line-height: $theme-unit * 4; + + ul li::marker { + color: var(--theme-foreground-color); + } + + li { + margin: unset; + } +} \ No newline at end of file diff --git a/app/helpers/mocks.tsx b/app/helpers/mocks.tsx index e0cd83f6..b033df1b 100644 --- a/app/helpers/mocks.tsx +++ b/app/helpers/mocks.tsx @@ -1,173 +1,114 @@ import IProposal, {ProposalStatus} from "@interfaces/proposal"; import {MentoIcon} from "@components/_icons"; import addDays from "date-fns/addDays"; -import {IVote, IVoteType} from "@interfaces/vote.interface"; +import {IVote} from "@interfaces/vote.interface"; import {ILock} from "@interfaces/lock.interface"; import {addYears} from "date-fns"; +const proposalDescription = `This is an amended draft proposal by the RARI Foundation, addressing community feedback. + +### Abstract + +The Rari Foundation is submitting a proposal to jumpstart the growth in the Arbitrum NFT ecosystem. The proposal involves integrating Arbitrum One with the open-source Rarible protocol, which is an indexer, orderbook and SDK powering NFT-based applications, which, once integrated, can be freely and easily used by the Artbitrum builders. + +### Motivation + +The Arbitrum ecosystem is hard for independent developers to build NFT-based applications due to a lack of easy-to-use tooling and infrastructure. Without this support, the developer community will be opting for other chains with more robust support for building. +Optimism vs Arbitrum NFT stats as of July 27, 2023 indicate Arbitrum is not the first choice for the creation of NFT assets or contracts. Source NFT Scan. +The open-source Rarible Protocol is specifically focused on the NFT use case and will enable builders to develop their next dapps choosing Arbitrum, resulting in bringing in new Arbitrum users and sequencer revenue. +The Rarible Protocol is a trusted choice as it’s community governed, has an easy-to-use API, a comprehensive SDK, and is committed to expanding its capabilities to power innovative NFT use cases. Furthermore, the Protocol is used by Rarible.com NFT marketplace, whose brand and community can be leveraged in raising awareness about Arbitrum venturing deeper into NFT tooling. Such signaling to the market will show that the Arbitrum community is serious about growing its ecosystem and flourishing NFTs. Rarible and the Rari Foundation will promote the integration in a cross-marketing push to ensure the NFT and crypto community knows that Arbitrum is serious about NFT growth. This support will consist of (and shall not be limited to): + +* Regular features on Rarible.com top spotlight section (1 million MAU) +* Dedicated social support for the launch on Rarible’s and Rari Foundation's owned channels (Twitter, Instagram, Discord, 800k+ followers combined) +* Email blasts for the integration (500k+ subscribers) +* Leveraging Rarible's and Rari Foundation's press relations +* Potentially a hackathon + +This proposal is being submitted outside of the pending grants framework, in order to implement the integration asap, as waiting for the grants framework would result in significant implementation delays. As such, the Arbitrum DAO has an opportunity to express its willingness to incentivize ecosystem growth via strategic partnerships. + +### Rationale + +The proposed AIP aligns with the Arbitrum community's mission and guiding values by enhancing the utility, scalability, and inclusivity of the Arbitrum network. The Rarible Protocol, a decentralized toolset for NFT applications, is open-source and free, mirroring Arbitrum's commitment to technical inclusivity and neutrality. By integrating Arbitrum One into the Rarible Protocol, we empower developers to create more complex and innovative applications on Arbitrum. This integration increases accessibility to real-time and historical Arbitrum blockchain data, aligning closely with Arbitrum's commitment to user-centricity and technical inclusivity. + +### Key Terms + +**The Rari Foundation**: The legal entity for the Rari DAO community that is in possession of $RARI Treasury and on the path of possession of the Rarible protocol + +**Rarible Inc**: A leading NFT marketplace that allows users to mint, buy, and sell NFTs. One of the applications using the Rarible protocol. + +**Rarible Protocol**: Open-source, free-to-use, community-governed Protocol (which includes an SDK, indexer and orderbook) for the creation, transaction, and distribution of NFTs. + +**Rarible SDK**: A part of the Rarible protocol that provides a set of tools for developers to interact with multiple blockchains + +A few notes on the Rarible Protocol: + +* It is an open-source, EVM-based SDK and multichain indexer that currently powers 4,000+ NFT marketplaces (including Rarible.com), and a series of non-marketplace-based applications (like wallets and NFT analytics services - see more use cases here). +* Designed as a set of building blocks, the Rarible protocol empowers the creation of fully customized NFT experiences of any level and complexity. ️ +* API access is lightning-fast, unified, and comprehensive. You gain seamless access to NFT Items, Collections, -Activities, and NFT Metadata across multiple blockchains, including ETH, POL, IMX, FLOW, TEZ, to name a few —all consolidated within a single endpoint. +* The protocol’s indexer is the fastest on the market. It retrieves blockchain data through fast APIs, eliminating the need for your own indexer and reducing costs associated with maintaining Blockchain Nodes. +* User-friendly SDK allows you to seamlessly connect wallets, mint NFTs, put them up for sale, purchase NFTs, showcase collections, and so much more. The Protocol is the feature-rich product on the market (you can do anything NFT related on our Protocol). +* Comprehensive Marketplace Support: Our platform offers unrivaled support for various marketplaces, providing access to aggregated orderbooks from major platforms like OS, LR, X2Y2, Sudoswap, and Tezos, so you can ensure your users have access to the most competitive listings in the market. +* Cutting-Edge NFT API Integration: We pride ourselves on providing the best NFT API support, seamlessly integrating with popular communication tools such as Discord, Zendesk, VIP support, Slack, and TG. +* Powerful Analytics Capabilities: Our platform boasts best-in-class analytics tools, including OLAP statistics and floor price analysis, empowering users with valuable insights into market trends and performance. +* Unmatched Reliability: We maintain the highest level of reliability, ensuring a remarkable 99.99% uptime for our protocol, making us the most dependable choice in the market. + +### Specifications + +Below is a detailed breakdown of how the integration will take place and the platforms and technologies that will be used.   Rarible Protocol: Integrating Arbitrum One   + The Rarible Protocol is a decentralized toolset that allows developers to build NFT applications. It includes smart contracts, an indexer, an SDK, and APIs. The integration of Arbitrum One into the Rarible Protocol will extend these capabilities to the Arbitrum ecosystem, enhancing its utility and inclusivity. + +* Rarible Arbitrum SDK + * The Rarible SDK will expedite Arbitrum application development. By extending the SDK to support Arbitrum One, we will provide developers with tools for interacting with smart contracts, supporting NFT operations like minting, transferring, and burning, and integrating with multiple wallets. +* Rarible Orderbook & Smart Contracts + * Our contracts, specifically the Rarible Exchange V2, will be deployed to the Arbitrum chain, granting access to our off-chain order book. Certain actions such as canceling, confirming, updating, or when price changes occur, are on-chain but the creation of orders is off-chain. +* Rarible Public API + * With the integration of Arbitrum One, the API will offer extended support for these chains, allowing developers to easily access and interact with NFT data on Arbitrum. +* Rarible Arbitrum Indexer + * Rarible’s multichain Indexer will be able to track and record NFT events on Arbitrum, providing developers with a comprehensive view of NFT activities on Arbitrum. + +### Steps to Implement + +**Arbitrum One integration into Rarible Protocol** + +The first key milestone will be integrating Arbitrum into the Rarible Protocol, which will set the foundation for future milestones involving building NFT applications on Arbitrum. + +Tasks: Integration of Arbitrum One chain into Rarible Protocol + +* Arbitrum API Integration: This task involves integrating the Arbitrum API into the Rarible Protocol API to support Arbitrum One. +* Node Preparation: A separate node for Arbitrum will be set up for rapid indexing upon approval +* Contract Deployment: The Rarible Shared NFT, Rarible Factory (for creating collections), and Rarible ExchangeV2 contracts will be deployed to Arbitrum for users to interact with. +* Orderbook: Rarible’s orderbook will be able to store listings, orders, and bids made with the protocol Arbitrum Indexer: Index NFT contracts, ERC-721/1155, ERC-20 tokens, Exchange orders & bids (from Seaport & Rarible). +* Arbitrum support on Rarible Multichain SDK: This involves adding a new blockchain, connectors to wallets, and ensuring functionality similar to ETH/Polygon. +* Debugging and Testing: General debugging of all components will be conducted, along with testing on production with OpenSea orders. +* Build Testnet for Arbitrum: An additional environment for the testnet will be set up, including indexing, reindexing, etc. + +### Timeline + +The tentative timeline consists of 7 weeks in total, 5 of which are the integration phase. If the proposal is approved by early September 2023, the project implementation can be executed in early Q4 2023. + +### Overall Cost + +As the integration of the Rarible Protocol and Arbitrum will benefit both ecosystems, we are offering to split the Rarible Protocol integration costs between our two parties with an equal share. + +**Integration of Arbitrum One into the Rarible Protocol** + +Duration: 5 WeeksCosts: 200,000 $ (Artibtrum portion = 100,000 $) + +Payment terms: + +50% payable upon proposal approval + +50% payable upon completion (identified as the release of Rarible's protocol integration to Arbitrum, with the API up and running, contracts deployed, NFTs are queryable) + +The 100,000 USD amount is payable in ARB under the exchange rate on the day of the proposal submission. As of Sept 13, the rate is 1 ARB = $0.785339, which translates to 127,351 ARB. + +Note that the Rari Foundation will absorb costs related to the service and maintainance of the Protocol upkeep after the integration implementation.` + export const singleProposal: IProposal = { id: '599ca521-df39-442f-937c-03b20bcafc2d', icon: , title: 'Building the Building the Future of NFTs: The Rarible Protocol', - description: '
\n' + - '

\n' + - ' \n' + - '     This is an amended draft proposal by the RARI Foundation, addressing community feedback.\n' + - '
\n' + - '
\n' + - ' Abstract\n' + - '
\n' + - '
\n' + - ' The Rari Foundation is submitting a proposal to jumpstart the growth in the Arbitrum NFT ecosystem. The proposal involves integrating Arbitrum One with the open-source Rarible protocol, which is an indexer, orderbook and SDK powering NFT-based applications, which, once integrated, can be freely and easily used by the Artbitrum builders.\n' + - '
\n' + - '
\n' + - ' Motivation\n' + - '
\n' + - '
\n' + - ' The Arbitrum ecosystem is hard for independent developers to build NFT-based applications due to a lack of easy-to-use tooling and infrastructure. Without this support, the developer community will be opting for other chains with more robust support for building.\n' + - '
\n' + - ' Optimism vs Arbitrum NFT stats as of July 27, 2023 indicate Arbitrum is not the first choice for the creation of NFT assets or contracts. Source NFT Scan.\n' + - '
\n' + - ' The open-source Rarible Protocol is specifically focused on the NFT use case and will enable builders to develop their next dapps choosing Arbitrum, resulting in bringing in new Arbitrum users and sequencer revenue.\n' + - '
\n' + - ' The Rarible Protocol is a trusted choice as its community governed, has an easy-to-use API, a comprehensive SDK, and is committed to expanding its capabilities to power innovative NFT use cases. Furthermore, the Protocol is used by Rarible.com NFT marketplace, whose brand and community can be leveraged in raising awareness about Arbitrum venturing deeper into NFT tooling. Such signaling to the market will show that the Arbitrum community is serious about growing its ecosystem and flourishing NFTs. Rarible and the Rari Foundation will promote the integration in a cross-marketing push to ensure the NFT and crypto community knows that Arbitrum is serious about NFT growth. This support will consist of (and shall not be limited to):\n' + - '
\n' + - '
\n' + - ' Regular features on Rarible.com top spotlight section (1 million MAU)\n' + - '
\n' + - ' Dedicated social support for the launch on Raribles and Rari Foundation\'s owned channels (Twitter, Instagram, Discord, 800k+ followers combined)\n' + - '
\n' + - ' Email blasts for the integration (500k+ subscribers)\n' + - '
\n' + - ' Leveraging Rarible\'s and Rari Foundation\'s press relations\n' + - '
\n' + - ' Potentially a hackathon\n' + - '
\n' + - '
\n' + - ' This proposal is being submitted outside of the pending grants framework, in order to implement the integration asap, as waiting for the grants framework would result in significant implementation delays. As such, the Arbitrum DAO has an opportunity to express its willingness to incentivize ecosystem growth via strategic partnerships.\n' + - '
\n' + - '
\n' + - ' Rationale\n' + - '
\n' + - '
\n' + - ' The proposed AIP aligns with the Arbitrum community\'s mission and guiding values by enhancing the utility, scalability, and inclusivity of the Arbitrum network. The Rarible Protocol, a decentralized toolset for NFT applications, is open-source and free, mirroring Arbitrum\'s commitment to technical inclusivity and neutrality. By integrating Arbitrum One into the Rarible Protocol, we empower developers to create more complex and innovative applications on Arbitrum. This integration increases accessibility to real-time and historical Arbitrum blockchain data, aligning closely with Arbitrum\'s commitment to user-centricity and technical inclusivity.\n' + - '
\n' + - '
\n' + - ' Key Terms\n' + - '
\n' + - '
\n' + - ' The Rari Foundation: The legal entity for the Rari DAO community that is in possession of $RARI Treasury and on the path of possession of the Rarible protocol\n' + - '
\n' + - ' Rarible Inc.: A leading NFT marketplace that allows users to mint, buy, and sell NFTs. One of the applications using the Rarible protocol.\n' + - '
\n' + - ' Rarible Protocol: Open-source, free-to-use, community-governed Protocol (which includes an SDK, indexer and orderbook) for the creation, transaction, and distribution of NFTs.\n' + - '
\n' + - ' Rarible SDK: A part of the Rarible protocol that provides a set of tools for developers to interact with multiple blockchains\n' + - '
\n' + - '
\n' + - ' A few notes on the Rarible Protocol:\n' + - '
\n' + - '
\n' + - ' It is an open-source, EVM-based SDK and multichain indexer that currently powers 4,000+ NFT marketplaces (including Rarible.com), and a series of non-marketplace-based applications (like wallets and NFT analytics services - see more use cases here).\n' + - '
\n' + - ' Designed as a set of building blocks, the Rarible protocol empowers the creation of fully customized NFT experiences of any level and complexity. \n' + - '
\n' + - ' API access is lightning-fast, unified, and comprehensive. You gain seamless access to NFT Items, Collections, -Activities, and NFT Metadata across multiple blockchains, including ETH, POL, IMX, FLOW, TEZ, to name a few all consolidated within a single endpoint.\n' + - '
\n' + - ' The protocols indexer is the fastest on the market. It retrieves blockchain data through fast APIs, eliminating the need for your own indexer and reducing costs associated with maintaining Blockchain Nodes.\n' + - '
\n' + - ' User-friendly SDK allows you to seamlessly connect wallets, mint NFTs, put them up for sale, purchase NFTs, showcase collections, and so much more. The Protocol is the feature-rich product on the market (you can do anything NFT related on our Protocol).\n' + - '
\n' + - ' Comprehensive Marketplace Support: Our platform offers unrivaled support for various marketplaces, providing access to aggregated orderbooks from major platforms like OS, LR, X2Y2, Sudoswap, and Tezos, so you can ensure your users have access to the most competitive listings in the market.\n' + - '
\n' + - ' Cutting-Edge NFT API Integration: We pride ourselves on providing the best NFT API support, seamlessly integrating with popular communication tools such as Discord, Zendesk, VIP support, Slack, and TG.\n' + - '
\n' + - ' Powerful Analytics Capabilities: Our platform boasts best-in-class analytics tools, including OLAP statistics and floor price analysis, empowering users with valuable insights into market trends and performance.\n' + - '
\n' + - ' Unmatched Reliability: We maintain the highest level of reliability, ensuring a remarkable 99.99% uptime for our protocol, making us the most dependable choice in the market.\n' + - '
\n' + - '
\n' + - ' Specifications\n' + - '
\n' + - '
\n' + - ' Below is a detailed breakdown of how the integration will take place and the platforms and technologies that will be used.\n' + - '
\n' + - ' Rarible Protocol: Integrating Arbitrum One\n' + - '
\n' + - ' The Rarible Protocol is a decentralized toolset that allows developers to build NFT applications. It includes smart contracts, an indexer, an SDK, and APIs. The integration of Arbitrum One into the Rarible Protocol will extend these capabilities to the Arbitrum ecosystem, enhancing its utility and inclusivity.\n' + - '
\n' + - ' Rarible Arbitrum SDK\n' + - '
\n' + - ' The Rarible SDK will expedite Arbitrum application development. By extending the SDK to support Arbitrum One, we will provide developers with tools for interacting with smart contracts, supporting NFT operations like minting, transferring, and burning, and integrating with multiple wallets.\n' + - '
\n' + - ' Rarible Orderbook & Smart Contracts\n' + - '
\n' + - ' Our contracts, specifically the Rarible Exchange V2, will be deployed to the Arbitrum chain, granting access to our off-chain order book. Certain actions such as canceling, confirming, updating, or when price changes occur, are on-chain but the creation of orders is off-chain.\n' + - '
\n' + - ' Rarible Public API\n' + - '
\n' + - ' With the integration of Arbitrum One, the API will offer extended support for these chains, allowing developers to easily access and interact with NFT data on Arbitrum.\n' + - '
\n' + - ' Rarible Arbitrum Indexer\n' + - '
\n' + - ' Raribles multichain Indexer will be able to track and record NFT events on Arbitrum, providing developers with a comprehensive view of NFT activities on Arbitrum.\n' + - '
\n' + - '
\n' + - ' Steps to Implement\n' + - '
\n' + - '
\n' + - ' Arbitrum One integration into Rarible Protocol\n' + - '
\n' + - '
\n' + - ' The first key milestone will be integrating Arbitrum into the Rarible Protocol, which will set the foundation for future milestones involving building NFT applications on Arbitrum.\n' + - '
\n' + - ' Tasks: Integration of Arbitrum One chain into Rarible Protocol\n' + - '
\n' + - '
\n' + - ' Arbitrum API Integration: This task involves integrating the Arbitrum API into the Rarible Protocol API to support Arbitrum One.\n' + - '
\n' + - ' Node Preparation: A separate node for Arbitrum will be set up for rapid indexing upon approval\n' + - '
\n' + - ' Contract Deployment: The Rarible Shared NFT, Rarible Factory (for creating collections), and Rarible ExchangeV2 contracts will be deployed to Arbitrum for users to interact with.\n' + - '
\n' + - ' Orderbook: Raribles orderbook will be able to store listings, orders, and bids made with the protocol Arbitrum Indexer: Index NFT contracts, ERC-721/1155, ERC-20 tokens, Exchange orders & bids (from Seaport & Rarible).\n' + - '
\n' + - ' Arbitrum support on Rarible Multichain SDK: This involves adding a new blockchain, connectors to wallets, and ensuring functionality similar to ETH/Polygon.\n' + - '
\n' + - ' Debugging and Testing: General debugging of all components will be conducted, along with testing on production with OpenSea orders.\n' + - '
\n' + - ' Build Testnet for Arbitrum: An additional environment for the testnet will be set up, including indexing, reindexing, etc.\n' + - '
\n' + - '
\n' + - ' Timeline\n' + - '
\n' + - '
\n' + - ' The tentative timeline consists of 7 weeks in total, 5 of which are the integration phase. If the proposal is approved by early September 2023, the project implementation can be executed in early Q4 2023.\n' + - '
\n' + - '
\n' + - ' Overall Cost\n' + - '
\n' + - '
\n' + - ' As the integration of the Rarible Protocol and Arbitrum will benefit both ecosystems, we are offering to split the Rarible Protocol integration costs between our two parties with an equal share.\n' + - '
\n' + - '
\n' + - ' Integration of Arbitrum One into the Rarible Protocol\n' + - '
\n' + - '
\n' + - ' Duration: 5 WeeksCosts: 200,000 $ (Artibtrum portion = 100,000 $)\n' + - '
\n' + - ' Payment terms:\n' + - '
\n' + - ' 50% payable upon proposal approval\n' + - '
\n' + - ' 50% payable upon completion (identified as the release of Rarible\'s protocol integration to Arbitrum, with the API up and running, contracts deployed, NFTs are queryable)\n' + - '
\n' + - ' The 100,000 USD amount is payable in ARB under the exchange rate on the day of the proposal submission. As of Sept 13, the rate is 1 ARB = $0.785339, which translates to 127,351 ARB.\n' + - '
\n' + - ' Note that the Rari Foundation will absorb costs related to the service and maintainance of the Protocol upkeep after the integration implementation.\n' + - '
\n' + - '

\n' + - '
\n', + description: proposalDescription, status: ProposalStatus.active, votesYes: 2700, votesNo: 1400,