diff --git a/README.md b/README.md index 1b2c88e5b..ab7109a62 100644 --- a/README.md +++ b/README.md @@ -16,24 +16,6 @@ npm install && npm run dev - All articles are markdown and stored in `/src/content/docs/`. - Navigation is JSON in `/src/config/sidebar.ts` -## Tooling on Scroll - -If you'd like to add an entry to our [tooling list](http://docs.scroll.xyz/en/developers/scroll-contracts), create a PR to add a new `mdx` file in the [tooling content folder](src/content/tools), using the following template. You can also refer to other existing entries for reference. - -``` ---- -name: "Safe" -category: ["Identity", "Wallet"] -excerpt: "Safe allows you to create smart wallet on chain." -logo: { src: "https://app.safe.global/images/safe-logo-green.png", alt: "Safe Logo" } -website: "https://app.safe.global" -network: ["Mainnet", "Testnet] -noAdditionalInfo: false ---- - -Add additional info here about how to access this tool on Scroll (ex. contract addresses, tutorials, API URLs) -``` - ## Credits - Special thanks to the Chainlink team whose documentation we forked. Their repo is available [here](https://github.com/smartcontractkit/documentation) and viewable at [https://docs.chain.link/](https://docs.chain.link/). diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 546093ecb..3b90f3921 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -25,8 +25,8 @@ }, "nodesCTA": { "title": "Need to run your own Scroll Node?", - "description": "See the Node Operator’s Guide to learn about starting and maintaining Scroll Nodes.", - "buttonText": "Node Operator’s Guide" + "description": "See the Node Operator's Guide to learn about starting and maintaining Scroll Nodes.", + "buttonText": "Node Operator's Guide" }, "TutorialsCTA": { "title": "Watch tutorials", @@ -90,7 +90,6 @@ "erc1155TokenBridge": "ERC1155 Token Bridge", "theScrollMessenger": "The Scroll Messenger", "transactionFeesOnScroll": "Transaction Fees on Scroll", - "toolingDeployedOnScroll": "Tooling deployed On Scroll", "developerEcosystem": "Developer Ecosystem", "l2Fee": "L2 Fee", "l1Fee": "L1 Fee", diff --git a/src/components/Tooling/Content/AdditionalInfo/AdditionalInfo.module.css b/src/components/Tooling/Content/AdditionalInfo/AdditionalInfo.module.css deleted file mode 100644 index b2dd66711..000000000 --- a/src/components/Tooling/Content/AdditionalInfo/AdditionalInfo.module.css +++ /dev/null @@ -1,107 +0,0 @@ -.additionalInfo { - height: 100%; - overflow: auto; - background: rgba(255, 255, 255, 0.5); - border-radius: 15px; - display: flex; - justify-content: center; - max-width: 532px; - margin: 0 auto; - position: relative; -} -.closeButton { - position: absolute; - right: 20px; - top: 20px; - cursor: pointer; - display: none; -} -.infoBox { - padding: 18px 20px; - width: 100%; -} - -.infoBox p { - font-size: 14px; -} - -.title { - font-size: 18px; - font-style: normal; - font-weight: 600; - line-height: normal; - letter-spacing: 0.18px; - margin-bottom: 15px; -} - -.content { - max-height: 460px; - overflow: auto; -} - -.noToolInfo { - text-align: center; - margin: 0 auto; - height: max-content; - max-width: 280px; - align-self: center; -} - -.noToolInfo svg { - margin-bottom: 20px; -} - -.noToolInfoTitle { - color: #ababab; - text-align: center; - font-size: 18px; - font-style: normal; - font-weight: 600; - line-height: normal; - letter-spacing: 0.18px; - margin-bottom: 8px; -} - -.noToolInfoDescription { - color: #ababab; - text-align: center; - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 18px; /* 128.571% */ - letter-spacing: 0.14px; -} - -@media screen and (max-width: 1300px) { - .closeButton { - display: block; - } - .additionalContainer { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: rgba(16, 16, 16, 0.2); - z-index: 9999; - height: 100%; - max-height: 100%; - padding: 20px; - display: flex; - } - .additionalInfo { - background: #ffffff; - border-radius: 15px; - justify-self: center; - align-self: center; - width: 100%; - height: 532px; - } - - .noToolSelected { - display: none; - } - .noToolInfo { - padding-top: 20px; - } -} diff --git a/src/components/Tooling/Content/AdditionalInfo/AdditionalInfo.tsx b/src/components/Tooling/Content/AdditionalInfo/AdditionalInfo.tsx deleted file mode 100644 index 5b5dda0f0..000000000 --- a/src/components/Tooling/Content/AdditionalInfo/AdditionalInfo.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import styles from "./AdditionalInfo.module.css" -import { useState, useEffect, useMemo } from "preact/hooks" -import { clsx } from "~/lib" - -enum Status { - NO_ADDITIONAL_INFO, - HAS_ADDITIONAL_INFO, - NO_TOOL_SELECTED, -} - -const AdditionalInfo = ({ data, selectedTool, onClose }) => { - const status = useMemo(() => { - if (!selectedTool) { - return Status.NO_TOOL_SELECTED - } - - if (selectedTool && !selectedTool.remarkPluginFrontmatter.noAdditionalInfo) { - return Status.HAS_ADDITIONAL_INFO - } - - return Status.NO_ADDITIONAL_INFO - }, [selectedTool]) - - return ( - <> -
-
-
- - - -
- - {status === Status.HAS_ADDITIONAL_INFO && ( -
-
{selectedTool.remarkPluginFrontmatter.name}
-
{data}
-
- )} - {status !== Status.HAS_ADDITIONAL_INFO && ( -
- - - - - - - - - - - - - - - - - - - {status === Status.NO_TOOL_SELECTED ? ( - <> -
No tool selected
-
- Try selecting a tool to learn more about using it on Scroll. -
- - ) : ( - <> -
No additional information for this project
-
- Try selecting another tool to learn more about using it on Scroll. -
- - )} -
- )} -
-
- - ) -} - -export default AdditionalInfo diff --git a/src/components/Tooling/Content/Category/Category.module.css b/src/components/Tooling/Content/Category/Category.module.css deleted file mode 100644 index 6060d581c..000000000 --- a/src/components/Tooling/Content/Category/Category.module.css +++ /dev/null @@ -1,31 +0,0 @@ -.toolsCategory { - display: flex; - flex-wrap: wrap; - padding-left: 0; -} -.toolsCategory .item { - display: inline-flex; - height: 44px; - padding: 0px 30px; - flex-direction: column; - justify-content: center; - align-items: center; - flex-shrink: 0; - border-radius: 100px; - margin-top: 0; - cursor: pointer; - margin-right: 13px; - margin-bottom: 10px; - border-width: 1px; - border-style: solid; -} -.toolsCategory .item.active { -} -@media screen and (max-width: 50em) { - .toolsCategory .item { - height: 36px; - padding: 0px 20px; - margin-right: 12px; - margin-bottom: 12px; - } -} diff --git a/src/components/Tooling/Content/Category/Category.tsx b/src/components/Tooling/Content/Category/Category.tsx deleted file mode 100644 index df0b819af..000000000 --- a/src/components/Tooling/Content/Category/Category.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { useState, useEffect, useMemo } from "preact/hooks" -import { clsx } from "~/lib" -import styles from "./Category.module.css" - -const Category = ({ categories, value, onChange }) => { - return ( - - ) -} - -export default Category diff --git a/src/components/Tooling/Content/Content.module.css b/src/components/Tooling/Content/Content.module.css deleted file mode 100644 index d84b42e7b..000000000 --- a/src/components/Tooling/Content/Content.module.css +++ /dev/null @@ -1,24 +0,0 @@ -.toolsContainer { - border-radius: 27px; - /* background: #fff8f3; */ - padding: 30px; - margin-bottom: 30px; -} - -.toolsList { - display: grid; - grid-template-columns: 1fr minmax(424px, 1fr); - /* grid-template-columns: 8fr 2fr; */ - gap: 30px; - margin-top: 30px; -} - -.toolsList > div { - overflow: scroll; -} - -@media screen and (max-width: 1300px) { - .toolsList { - grid-template-columns: 1fr; - } -} diff --git a/src/components/Tooling/Content/Content.tsx b/src/components/Tooling/Content/Content.tsx deleted file mode 100644 index dc655f051..000000000 --- a/src/components/Tooling/Content/Content.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import styles from "./Content.module.css" -import { clsx } from "~/lib" -import { useState, useEffect, useMemo } from "preact/hooks" -import SearchInput from "./Search/SearchInput" -import NetworkSelector from "./NetworkSelector/NetworkSelector" -import Category from "./Category/Category" -import List from "./List/List" -import AdditionalInfo from "./AdditionalInfo/AdditionalInfo" - -const Content = ({ tools, toolsMarkdown }) => { - const categories = [...new Set(tools.flatMap((tool) => tool.remarkPluginFrontmatter.category))] - - const [selectedTool, setSelectedTool] = useState(null) - - const [searchParams, setSearchParams] = useState({ - category: [], - network: "All networks", - keyword: "", - }) - - const handleChangeCategory = (value) => { - setSearchParams((prev) => { - const newCategory = prev.category.includes(value) - ? prev.category.filter((item) => item !== value) - : [...prev.category, value] - - return { - ...prev, - category: newCategory, - } - }) - } - - const handleChangeNetwork = (value) => { - setSearchParams((pre) => ({ - ...pre, - network: value, - })) - } - - const handleChangeKeyword = (e) => { - setSearchParams((prev) => ({ - ...prev, - keyword: e.target.value, - })) - } - - const handleToolClick = (blog) => { - setSelectedTool(blog) - } - - useEffect(() => { - if (selectedTool) { - document.querySelectorAll(".tools-item").forEach((div) => { - div.style.display = "none" - }) - const selectedDiv = document.getElementById(selectedTool.id) - if (selectedDiv) { - selectedDiv.style.display = "block" - } - } - }, [selectedTool]) - - const filteredTools = useMemo(() => { - // setSelectedTool(null) - return tools.filter((tool) => { - const categoryMatch = - searchParams.category.length === 0 || - searchParams.category.some((category) => tool.remarkPluginFrontmatter.category.includes(category)) - const networkMatch = - searchParams.network === "All networks" || tool.remarkPluginFrontmatter.network.includes(searchParams.network) - const keywordMatch = tool.remarkPluginFrontmatter.name.toLowerCase().includes(searchParams.keyword.toLowerCase()) - - return categoryMatch && networkMatch && keywordMatch - }) - }, [searchParams]) - - return ( -
- -
- - -
- -
- - handleToolClick(null)} data={toolsMarkdown} selectedTool={selectedTool} /> -
-
- ) -} - -export default Content diff --git a/src/components/Tooling/Content/List/List.module.css b/src/components/Tooling/Content/List/List.module.css deleted file mode 100644 index 213f3243e..000000000 --- a/src/components/Tooling/Content/List/List.module.css +++ /dev/null @@ -1,62 +0,0 @@ -.toolsContainerList { - border-radius: 15px; - height: 532px; - overflow: auto; -} -.toolItem { - display: flex; - padding: 20px; -} - -.toolItem:hover, -.toolItem.active { - background-color: #f9f9f9; - cursor: pointer; -} - -.toolItem:not(:last-child) { - border-bottom: 1px solid #ece8e3; -} - -.logo { - width: 66px; - height: fit-content; - flex-shrink: 0; - border-radius: 15px; - margin-right: 15px; - margin-top: 6px; -} - -.toolInfo { - width: 100%; -} - -.toolName { - color: #101010; - font-size: 18px; - font-style: normal; - font-weight: 600; - line-height: normal; - letter-spacing: 0.18px; - display: flex; - justify-items: center; - align-items: center; -} - -.category { - display: inline-block; - padding: 3px 5px; - font-size: 12px; - color: #0f8e7e; - letter-spacing: 0.12px; - border-radius: 5px; - background: #dffcf8; - margin-right: 5px; -} - -.toolDescription { - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 18px; -} diff --git a/src/components/Tooling/Content/List/List.tsx b/src/components/Tooling/Content/List/List.tsx deleted file mode 100644 index 9895bc14d..000000000 --- a/src/components/Tooling/Content/List/List.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import styles from "./List.module.css" -import LinesEllipsis from "../../../../components/LinesEllipsis" -import { clsx } from "~/lib" - -const List = ({ tools, onChange, selectedTool }) => { - const handleReflow = (value) => { - // don't trigger measure when the height exceeds the standard height by default - // if (!isExpended && cardRef.current!.clientHeight > standardHeight) { - // return - // } - // onResize() - } - - return ( -
- {tools.map((tool, index) => ( -
onChange(tool)} - className={clsx( - styles.toolItem, - tool.id === selectedTool?.id && "bg-[#f9f9f9] dark:bg-black", - "hover:bg-[#f9f9f9] dark:hover:bg-black" - )} - > - {tool.remarkPluginFrontmatter.logo.alt} -
-
-
- {tool.remarkPluginFrontmatter.name} - window.open(tool.remarkPluginFrontmatter.website, "_blank")} - > - - - - - - - - - -
- - {!tool.remarkPluginFrontmatter.noAdditionalInfo && ( - - - - - - )} -
-
- {tool.remarkPluginFrontmatter.category.map((category, index) => ( - - {category} - - ))} -
- -  ... more - - } - basedOn="words" - onReflow={handleReflow} - /> -
-
- ))} -
- ) -} - -export default List diff --git a/src/components/Tooling/Content/NetworkSelector/NetworkSelector.module.css b/src/components/Tooling/Content/NetworkSelector/NetworkSelector.module.css deleted file mode 100644 index 573d68b87..000000000 --- a/src/components/Tooling/Content/NetworkSelector/NetworkSelector.module.css +++ /dev/null @@ -1,56 +0,0 @@ -.container { - height: 40px; - width: 218px; - position: relative; - z-index: 1; -} - -.networkSelector { - position: absolute; - left: 0; - top: 0; - width: 218px; - border-radius: 20px; - border: 1px solid #101010; - background: #fff; - display: flex; - justify-content: space-between; - padding: 0 12px; - align-items: flex-start; - cursor: pointer; - overflow: visible; -} - -.networkSelector .optionsList { - margin-bottom: 0; - padding-left: 0; - flex: 1; - margin-left: 7px; - color: #101010; - list-style: none; -} - -.optionsList li { - height: 38px; - line-height: 38px; - font-size: 16px; - font-weight: bold; - font-family: var(--font-family-body-text); - letter-spacing: 0.16px; -} - -@media (max-width: 50em) { - .container, - .networkSelector { - } - .optionsList { - margin-left: 0; - } -} - -@media (max-width: 604px) { - .container, - .networkSelector { - width: 148px; - } -} diff --git a/src/components/Tooling/Content/NetworkSelector/NetworkSelector.tsx b/src/components/Tooling/Content/NetworkSelector/NetworkSelector.tsx deleted file mode 100644 index adf563d7a..000000000 --- a/src/components/Tooling/Content/NetworkSelector/NetworkSelector.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { useState, useEffect, useMemo } from "preact/hooks" -import { clsx } from "~/lib" -import styles from "./NetworkSelector.module.css" - -const NetworkSelector = ({ value, onChange }) => { - const [isModalOpen, setIsModalOpen] = useState(false) - const networks = ["All networks", "Mainnet", "Testnet"] - - const handleNetworkClick = (network) => { - onChange(network) - setIsModalOpen(!isModalOpen) - } - - const filteredNetworks = useMemo(() => { - if (isModalOpen) { - return [value, ...networks.filter((network) => network !== value)] - } - return [value] - }, [isModalOpen, networks, value]) - - return ( -
-
- - - - - - - -
-
- ) -} - -export default NetworkSelector diff --git a/src/components/Tooling/Content/Search/SearchInput.module.css b/src/components/Tooling/Content/Search/SearchInput.module.css deleted file mode 100644 index e33b5efa2..000000000 --- a/src/components/Tooling/Content/Search/SearchInput.module.css +++ /dev/null @@ -1,80 +0,0 @@ -.wrapper { - display: flex; - align-items: center; - justify-content: center; - gap: 1rem; - width: 100%; - flex-shrink: 0; - overflow: hidden; - - flex: 1; - height: 40px; - border-radius: 20px; - padding: unset; - margin-right: 30px; -} - -.input { - margin: 0; - font-size: 16px; - width: 100%; - outline: none; - display: block; - appearance: none; - flex-grow: 1; - padding-left: 36px; - border-bottom: 1px solid #000; - border-radius: 0; - background: url(/assets/search.svg) left 12px top 50% / 17px no-repeat; - border: none; - height: 35px; - line-height: 35px; - padding-bottom: 0; - @apply text-black border-black; -} -.input.large { - height: 48px; - border-bottom: none; - padding-bottom: 0; - background: transparent url(/svgs/search.svg) left center no-repeat; - background-size: 20px auto; -} - -.input::placeholder { - font-style: italic; -} - -.input:focus { - outline: none; - border-radius: 0; -} - -.closeButton { - background-color: transparent; - border: none; - padding: 0; - display: none; - height: 25px; -} - -@media (max-width: 50em) { - .wrapper { - margin-right: 16px; - } - - .input { - @apply pl-[40px]; - } - - .input:focus { - @apply rounded-primary; - } - - .closeButton { - display: block; - } - - .closeButtonMobile { - display: none; - } -} diff --git a/src/components/Tooling/Content/Search/SearchInput.tsx b/src/components/Tooling/Content/Search/SearchInput.tsx deleted file mode 100644 index 3e6b20c91..000000000 --- a/src/components/Tooling/Content/Search/SearchInput.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React, { ChangeEvent, useCallback, useEffect, useState, useRef } from "react" -import styles from "./SearchInput.module.css" -import { clsx } from "~/lib" - -const SearchInput = ({ value, onChange }) => { - const inputRef = useRef(null) - - return ( -
- -
- ) -} - -export default SearchInput diff --git a/src/components/Tooling/Tooling.astro b/src/components/Tooling/Tooling.astro deleted file mode 100644 index ffd5c22c3..000000000 --- a/src/components/Tooling/Tooling.astro +++ /dev/null @@ -1,30 +0,0 @@ ---- -import { getCollection } from "astro:content" -import Content from "./Content/Content.tsx" - -const pages = await getCollection("tools") - -const tools = await Promise.all( - pages.map(async (page) => { - const renderedPage = await page.render() - return { - ...renderedPage, - id: "tool-" + renderedPage.remarkPluginFrontmatter.name.toLowerCase().replace(/ /g, "-"), - } - }) -) ---- - - - - - { - tools.map((tool, index) => ( - - )) - } - - - diff --git a/src/config/sidebar.ts b/src/config/sidebar.ts index 4907e81cb..9819e1936 100644 --- a/src/config/sidebar.ts +++ b/src/config/sidebar.ts @@ -81,10 +81,6 @@ export const getSidebar = () => { contents: [ { title: t("sidebar.developers.buildingOnScroll"), url: formatUrl("developers") }, { title: t("sidebar.developers.faq"), url: formatUrl("developers/faq") }, - { - title: t("sidebar.developers.verifyingSmartContracts"), - url: formatUrl("developers/verifying-smart-contracts"), - }, { title: t("sidebar.developers.scrollContracts"), url: formatUrl("developers/scroll-contracts"), @@ -137,10 +133,6 @@ export const getSidebar = () => { // }, // ], }, - { - title: t("sidebar.developers.toolingDeployedOnScroll"), - url: formatUrl("developers/tooling-deployed-on-scroll"), - }, { title: t("sidebar.developers.developerEcosystem"), url: formatUrl("developers/developer-ecosystem"), diff --git a/src/content/config.ts b/src/content/config.ts index c863de902..cf99dbf3c 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -32,25 +32,6 @@ const docsCollection = defineCollection({ }), }) -const toolsCollection = defineCollection({ - schema: z.object({ - name: z.string(), - excerpt: z.string(), - category: z.array(z.string()), - // network: z.string().optional(), - network: z.array(z.string()).optional(), - logo: z - .object({ - src: z.string().optional(), - alt: z.string().optional(), - }) - .optional(), - website: z.string().optional(), - noAdditionalInfo: z.boolean().optional(), - }), -}) - export const collections = { docs: docsCollection, - tools: toolsCollection, } diff --git a/src/content/docs/en/developers/faq.mdx b/src/content/docs/en/developers/faq.mdx index 692d1abd2..748241e85 100644 --- a/src/content/docs/en/developers/faq.mdx +++ b/src/content/docs/en/developers/faq.mdx @@ -28,11 +28,12 @@ Yes. Please refer to our list of [Unofficial Faucets](https://docs.scroll.io/en/ **Where can I find the list of developer tooling available on Scroll?** -See the full list here: [Scroll Developer Tooling](https://docs.scroll.io/en/developers/tooling-deployed-on-scroll/). +See the full list here: [Scroll Developer Tooling](https://scroll.io/ecosystem). **Where can I explore the ecosystem of projects deployed on Scroll?** -The live ecosystem page is here: [Scroll Ecosystem Data page](https://docs.scroll.io/en/developers/developer-ecosystem/) and the full list [Scroll Ecosystem Projects](https://scroll.io/ecosystem). +Use our [Dune dashboard](https://docs.scroll.io/en/developers/developer-ecosystem/) to explore live ecosystem data and visit the [Scroll Ecosystem Projects](https://scroll.io/ecosystem) for the full list. + ## Node Questions diff --git a/src/content/docs/en/developers/index.mdx b/src/content/docs/en/developers/index.mdx index 8a1135227..1937326e7 100644 --- a/src/content/docs/en/developers/index.mdx +++ b/src/content/docs/en/developers/index.mdx @@ -30,9 +30,9 @@ ensuring that all code executed on the Scroll Layer 2 behaves just as if it were **Looking to build on the Scroll?** -- For the essentials: Check out the [Developer Quickstart](/developers/developer-quickstart) -- For a tutorial walking through deploying your first smart contract on Scroll, read our [contract deployment tutorial](/developers/guides/contract-deployment-tutorial) -- We also have a number of [deployed contract addresses](/developers/scroll-contracts) to build on. +- Check out our [FAQ](/developers/faq) for the essentials +- Follow our [guide](/developers/guides/running-a-scroll-node) to run Scroll L2geth Node +- Explore our [deployed contract addresses](/developers/scroll-contracts) to build on ## Why Build on Scroll? diff --git a/src/content/docs/en/developers/tooling-deployed-on-scroll.mdx b/src/content/docs/en/developers/tooling-deployed-on-scroll.mdx deleted file mode 100644 index da1cd22ad..000000000 --- a/src/content/docs/en/developers/tooling-deployed-on-scroll.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -section: developers -date: Last Modified -title: "Tooling deployed on Scroll" -lang: "en" -permalink: "developers/tooling-deployed-on-scroll/" -excerpt: "" -widerContent: true ---- - -import Aside from "../../../../components/Aside.astro" -import Tooling from "../../../../components/Tooling/Tooling.astro" - -This is a community maintained database of developer tooling that is available on Scroll. We welcome [PRs to add or edit](https://github.com/scroll-tech/scroll-documentation?tab=readme-ov-file#tooling-on-scroll) information! - - - - - - diff --git a/src/content/docs/en/developers/verifying-smart-contracts.mdx b/src/content/docs/en/developers/verifying-smart-contracts.mdx deleted file mode 100644 index bbb02f953..000000000 --- a/src/content/docs/en/developers/verifying-smart-contracts.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -section: developers -date: Last Modified -title: "Verifying Smart Contracts" -lang: "en" -permalink: "developers/verifying-smart-contracts" -whatsnext: { "Scroll Contracts": "/en/developers/scroll-contracts" } -excerpt: "Easily verify your smart contracts with Scroll-supported developer tooling" ---- - -import Aside from "../../../../components/Aside.astro" -import ClickToZoom from "../../../../components/ClickToZoom.astro" -import verify1 from "./_images/verify1.png" -import CodeSample from "../../../../components/CodeSample/CodeSample.astro" - -After deploying your smart contracts, it's important to verify your code on a block explorer. This can be done in an automated way using your developer tooling or the Web UI. - -## Using Developer Tools - -Most smart contract tooling has plugins for verifying your contracts easily on Etherscan. - -- Scroll Mainnet: https://api.scrollscan.com/api -- Scroll Sepolia: https://api-sepolia.scrollscan.com/api - - - -### Hardhat - -Modify `hardhat.config.ts` to point to Scroll's RPC and block explorer API. - -For example, the config for Scroll Sepolia will look like this: -```javascript -... - -const config: HardhatUserConfig = { - ... - networks: { - scrollSepolia: { - url: 'https://sepolia-rpc.scroll.io' || '', - accounts: - process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], - }, - }, - etherscan: { - apiKey: { - scrollSepolia: , - }, - customChains: [ - { - network: 'scrollSepolia', - chainId: 534351, - urls: { - apiURL: 'https://api-sepolia.scrollscan.com/api', - browserURL: 'https://sepolia.scrollscan.com/', - }, - }, - ], - }, -} - -... -``` - -Now you can verify the smart contract by running the following command. - -```solidity -npx hardhat verify --network scrollSepolia -``` - -For example, this is how a smart contract that receives two uint parameters in the constructor should look: - -```solidity -npx hardhat verify --network scrollSepolia 0xD9880690bd717189cC3Fbe7B9020F27fae7Ac76F 123 456 -``` - - - -### Foundry - -When using Foundry, the `verify-contract` command helps automate the process of verifying contracts. If your contract has constructor arguments, you can specify these in ABI-encoded form with the `--constructor-args` option. For example, if your constructor takes two `uint256` variables: -```bash - --constructor-args $(cast abi-encode "constructor(uint256,uint256)" 0 7) -``` - -Refer to the [Foundry documentation](https://book.getfoundry.sh/reference/forge/forge-verify-contract) for further options you can specify. - -```bash -forge verify-contract \ - --verifier-url https://api-sepolia.scrollscan.com/api \ - --etherscan-api-key \ - --constructor-args -``` - diff --git a/src/content/docs/es/developers/index.mdx b/src/content/docs/es/developers/index.mdx index bdb436e05..34ce1d427 100644 --- a/src/content/docs/es/developers/index.mdx +++ b/src/content/docs/es/developers/index.mdx @@ -32,10 +32,9 @@ comporta como si fuera ejecutado en la Capa 1 de Ethereum. **¿Buscas desarrollar en Scroll?** -- Para lo esencial: Consulta el [Inicio rápido para desarrolladores](/es/developers/developer-quickstart) -- Para un tutorial sobre el despliegue de tu primer smart contract en Scroll, lee nuestro -[tutorial de despliegue de contratos](/es/developers/guides/contract-deployment-tutorial) -- También tenemos varias [direcciones de contratos desplegados](/es/developers/scroll-contracts) para poder utilizar. +- Consulta nuestras [FAQ](/developers/faq) para lo esencial +- Sigue nuestra [guía](/developers/guides/running-a-scroll-node) para ejecutar un nodo Scroll L2geth +- Explora nuestras [direcciones de contratos desplegados](/developers/scroll-contracts) para comenzar a construir ## ¿Por qué Construir en Scroll? diff --git a/src/content/docs/es/developers/verifying-smart-contracts.mdx b/src/content/docs/es/developers/verifying-smart-contracts.mdx deleted file mode 100644 index 759612546..000000000 --- a/src/content/docs/es/developers/verifying-smart-contracts.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -section: developers -date: Last Modified -title: "Verificando Smart Contracts" -lang: "es" -permalink: "developers/verifying-smart-contracts" -whatsnext: { "Scroll Contracts": "/es/developers/scroll-contracts" } -excerpt: "Verifique fácilmente sus smart contracts con herramientas para desarrolladores compatibles con Scroll o con la Blockscout Web API." ---- - -import Aside from "../../../../components/Aside.astro" -import ClickToZoom from "../../../../components/ClickToZoom.astro" -import verify1 from "./_images/verify1.png" -import CodeSample from "../../../../components/CodeSample/CodeSample.astro" - -Después de desplegar tus smart contracts, es importante verificar tu código en [nuestro block explorer](https://scrollscan.com/)o en el [block explorer de Sepolia](https://sepolia-blockscout.scroll.io). Esto se puede hacer de forma automatizada utilizando tus herramientas de desarrollo o la IU web de Blockscout. - -Esto se puede automatizar utilizando nuestras herramientas para desarrolladores o a través de UI en la web de Blockscout. - - - -## Uso de las herramientas para desarrolladores -La mayoría de las herramientas de smart contracts tienen plugins para verificar tus contratos fácilmente en Etherscan. Blockscout soporta las APIs de verificación de contratos de Etherscan, y es sencillo utilizar estas herramientas con la Scroll Sepolia Testnet. - -### Hardhat - -Primero, modifica `hardhat.config.ts` para que apunte al RPC de Scroll y a `sepolia-blockscout.scroll.io/api`. Se requiere un valor `apyKey` ficticio, cualquier valor servirá. - -```javascript -... - -const config: HardhatUserConfig = { - ... - networks: { - scrollSepolia: { - url: 'https://sepolia-rpc.scroll.io' || '', - accounts: - process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], - }, - }, - etherscan: { - apiKey: { - scrollSepolia: 'abc', - }, - customChains: [ - { - network: 'scrollSepolia', - chainId: 534351, - urls: { - apiURL: 'https://sepolia-blockscout.scroll.io/api', - browserURL: 'https://sepolia-blockscout.scroll.io/', - }, - }, - ], - }, -} - -... -``` - -Ahora puedes verificar el smart contract ejecutando el siguiente comando. - -```solidity -npx hardhat verify --network scrollSepolia -``` - -Por ejemplo, así es como debería verse un smart contract que recibe dos parámetros tipo uint en el constructor: - -```solidity -npx hardhat verify --network scrollSepolia 0xD9880690bd717189cC3Fbe7B9020F27fae7Ac76F 123 456 -``` - - - -### Foundry - - - -Cuando se utiliza Foundry, la función `verify-contract` ayuda a automatizar el proceso de verificación de los contratos. - -```bash -forge verify-contract : --chain-id 534351 --verifier-url https://sepolia-blockscout.scroll.io/api\? --verifier blockscout -``` - - \ No newline at end of file diff --git a/src/content/docs/tr/developers/index.mdx b/src/content/docs/tr/developers/index.mdx index 5f6dc7307..e0f0aaf99 100644 --- a/src/content/docs/tr/developers/index.mdx +++ b/src/content/docs/tr/developers/index.mdx @@ -28,9 +28,9 @@ Scroll, işlemlerini zincir dışında yürüterek ve aynı zamanda işlemlerin **Scroll üzerinde geliştirme mi yapmak istiyorsunuz?** -- Temel bilgiler için: [Geliştirici Hızlı Başlangıcı](/tr/developers/developer-quickstart) sayfasına göz atın -- Scroll'da ilk akıllı sözleşmenizin dağıtımını açıklayan bir eğitim için [sözleşme dağıtım eğitimimizi](/tr/developers/guides/contract-deployment-tutorial) okuyun -- Ayrıca üzerinde geliştirme yapabileceğiniz bir dizi [sözleşme adreslerimiz](/tr/developers/scroll-contracts) var. +- Temel bilgiler için [FAQ](/developers/faq) sayfamıza göz atın +- Scroll L2geth Node çalıştırmak için [rehberimizi](/developers/guides/running-a-scroll-node) takip edin +- Geliştirmeye başlamak için [dağıtılmış sözleşme adreslerimizi](/developers/scroll-contracts) keşfedin ## ## Neden Scroll Üzerinde Geliştirilmeli? diff --git a/src/content/docs/tr/developers/verifying-smart-contracts.mdx b/src/content/docs/tr/developers/verifying-smart-contracts.mdx deleted file mode 100644 index b6e53a64a..000000000 --- a/src/content/docs/tr/developers/verifying-smart-contracts.mdx +++ /dev/null @@ -1,128 +0,0 @@ ---- -section: developers -date: Last Modified -title: "Akıllı Sözleşmeleri Doğrulama" -lang: "tr" -permalink: "developers/verifying-smart-contracts" -whatsnext: { "Scroll Sözleşmeleri": "/tr/developers/scroll-contracts" } -excerpt: "Scroll destekli geliştirici araçlarıyla akıllı sözleşmelerinizi kolayca doğrulayın" ---- - -import Aside from "../../../../components/Aside.astro" -import ClickToZoom from "../../../../components/ClickToZoom.astro" -import verify1 from "./_images/verify1.png" -import CodeSample from "../../../../components/CodeSample/CodeSample.astro" - -Akıllı sözleşmelerinizi dağıttıktan sonra kodunuzu bir blok gezgininde doğrulamanız önemlidir. Bu, geliştirici araçlarını veya web kullanıcı arayüzlerini kullanarak otomatik bir şekilde yapılabilir. - -## Geliştirici Araçlarını Kullanma - -Çoğu akıllı sözleşme aracı, sözleşmelerinizi Etherscan'de kolayca doğrulamak için eklentilere sahiptir. Blockscout, Etherscan'in sözleşme doğrulama API'lerini destekler; dolayısıyla bu araçları, bu blok kaşiflerinden herhangi birinin API'lerini kullanarak kullanmak kolaydır. - -| Ağ | Scroll | Scroll Sepolia | -| ---------- | -------------------------------- | ---------------------------------------- | -| Scrollscan | https://api.scrollscan.com/api | https://api-sepolia.scrollscan.com/api | -| Blockscout | https://blockscout.scroll.io/api | https://sepolia-blockscout.scroll.io/api | - - - -### Hardhat - -'hardhat.config.ts'yi Scroll'un RPC'sine ve blok gezgini API'sine işaret edecek şekilde değiştirin. Blockscout için sahte bir "apiKey" değeri gereklidir, ancak bu değer için herhangi bir değer işe yarar. Scrollscan için kendi API anahtarınızı kullanın. - -Örneğin Blockscout'ta Scroll Sepolia kullanıyorsanız yapılandırmanız şu şekilde görünecektir: -```javascript -... - -const config: HardhatUserConfig = { - ... - networks: { - scrollSepolia: { - url: 'https://sepolia-rpc.scroll.io' || '', - accounts: - process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], - }, - }, - etherscan: { - apiKey: { - scrollSepolia: 'abc', - }, - customChains: [ - { - network: 'scrollSepolia', - chainId: 534351, - urls: { - apiURL: 'https://sepolia-blockscout.scroll.io/api', - browserURL: 'https://sepolia-blockscout.scroll.io/', - }, - }, - ], - }, -} - -... -``` - -Artık aşağıdaki komutu çalıştırarak akıllı sözleşmeyi doğrulayabilirsiniz. - -```solidity -npx hardhat verify --network scrollSepolia -``` - -Örneğin, yapıcıda iki uint parametresi alan bir akıllı sözleşme şu şekilde görünmelidir: - -```solidity -npx hardhat verify --network scrollSepolia 0xD9880690bd717189cC3Fbe7B9020F27fae7Ac76F 123 456 -``` - - - -### Foundry - -Foundry'yi kullanırken "verify-contract" komutu sözleşmelerin doğrulanması sürecinin otomatikleştirilmesine yardımcı olur. Sözleşmenizde yapıcı argümanlar varsa, bunları ABI kodlu biçimde `--constructor-args` seçeneğiyle belirtebilirsiniz. Örneğin, kurucunuz iki "uint256" değişkeni alıyorsa: -```bash - --constructor-args $(cast abi-encode "constructor(uint256,uint256)" 0 7) -``` - -Belirleyebileceğiniz diğer seçenekler için [Foundry belgelerine](https://book.getfoundry.sh/reference/forge/forge-verify-contract) bakın. - - -#### Scrollscan - -```bash -forge verify-contract \ - --verifier-url https://api-sepolia.scrollscan.com/api \ - --etherscan-api-key \ - --constructor-args -``` - - -#### Blockscout - -Doğrulama sağlayıcısını "blockscout" olarak belirtin. - -##### Scroll -```bash -forge verify-contract \ - --verifier-url https://blockscout.scroll.io/api\? \ - --verifier blockscout \ - --constructor-args -``` - -##### Scroll Sepolia -```bash -forge verify-contract \ - --verifier-url https://sepolia-blockscout.scroll.io/api\? \ - --verifier blockscout \ - --constructor-args -``` - - \ No newline at end of file diff --git a/src/content/docs/zh/developers/index.mdx b/src/content/docs/zh/developers/index.mdx index b6eff7795..1309b7b2a 100644 --- a/src/content/docs/zh/developers/index.mdx +++ b/src/content/docs/zh/developers/index.mdx @@ -28,9 +28,9 @@ Scroll通过执行链下交易以及生成交易正确执行的加密证明来 **想要在 Scroll Sepolia 测试网上进行构建?** -- 有关基础知识:查看[开发者快速入门](/developers/developer-quickstart) -- 有关在 Scroll 上部署第一个智能合约的教程,请阅读我们的 [合约部署教程](/developers/guides/contract-deployment-tutorial) -- 我们还有许多[已部署的合约地址](/developers/scroll-contracts)可供构建。 +- 查看我们的 [常见问题](/developers/faq) 了解基本内容 +- 按照我们的 [指南](/developers/guides/running-a-scroll-node) 运行 Scroll L2geth 节点 +- 浏览我们的 [已部署合约地址](/developers/scroll-contracts) 开始构建 ## 为什么在 Scroll 上开发? diff --git a/src/content/docs/zh/developers/verifying-smart-contracts.mdx b/src/content/docs/zh/developers/verifying-smart-contracts.mdx deleted file mode 100644 index 1e2e4dbf4..000000000 --- a/src/content/docs/zh/developers/verifying-smart-contracts.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -section: developers -date: Last Modified -title: "验证智能合约" -lang: "zh" -permalink: "developers/verifying-smart-contracts" -whatsnext: { "Scroll 合约": "/zh/developers/scroll-contracts" } -excerpt: "Easily verify your smart contracts with Scroll-supported developer tooling or the Blockscout Web API" ---- - -import Aside from "../../../../components/Aside.astro" -import ClickToZoom from "../../../../components/ClickToZoom.astro" -import verify1 from "./_images/verify1.png" -import CodeSample from "../../../../components/CodeSample/CodeSample.astro" - -部署智能合约后,在[我们的区块浏览器](https://sepolia-blockscout.scroll.io/)上验证您的代码非常重要。这可以使用您的开发者工具或使用Blockscout的网页以自动化方式完成。 - - - -## 使用开发者工具 - -大多数智能合约工具都有插件,可以在Etherscan上轻松验证您的合约。Blockscout支持Etherscan的合约验证API,将这些工具与Scroll Sepolia测试网一起使用非常简单。 - -| 网络 | Scroll | Scroll Sepolia | -| ---------- | -------------------------------- | ---------------------------------------- | -| Scrollscan | https://api.scrollscan.com/api | https://api-sepolia.scrollscan.com/api | -| Blockscout | https://blockscout.scroll.io/api | https://sepolia-blockscout.scroll.io/api | - - - -### Hardhat - -首先,修改 `hardhat.config.ts` 以指向 Scroll 的 RPC 和 `sepolia-blockscout.scroll.io/api`. `apyKey` 设置为虚拟值是必需的,但任何内容都适合其 `apyKey` 值。 - -例如,如果您在 Blockscout 上使用 Scroll Sepolia,您的配置将如下所示: -```javascript -... - -const config: HardhatUserConfig = { - ... - networks: { - scrollSepolia: { - url: 'https://sepolia-rpc.scroll.io' || '', - accounts: - process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], - }, - }, - etherscan: { - apiKey: { - scrollSepolia: 'abc', - }, - customChains: [ - { - network: 'scrollSepolia', - chainId: 534351, - urls: { - apiURL: 'https://sepolia-blockscout.scroll.io/api', - browserURL: 'https://sepolia-blockscout.scroll.io/', - }, - }, - ], - }, -} - -... -``` - -现在,您可以通过运行以下命令来验证智能合约。 - -```solidity -npx hardhat verify --network scrollSepolia -``` - -例如,如下是在智能合约的构造函数中接收两个 uint 参数的: - -```solidity -npx hardhat verify --network scrollSepolia 0xD9880690bd717189cC3Fbe7B9020F27fae7Ac76F 123 456 -``` - - - -### Foundry - -在使用 Foundry 时,`verify-contract` 命令有助于自动化合约验证的过程。如果您的合约具有构造函数参数,您可以使用 `--constructor-args` 选项以 ABI 编码形式指定这些参数。例如,如果您的构造函数接受两个 `uint256` 变量: -```bash - --constructor-args $(cast abi-encode "constructor(uint256,uint256)" 0 7) -``` - -请参考 [Foundry 文档](https://book.getfoundry.sh/reference/forge/forge-verify-contract) 以获取您可以指定的更多选项。 - - -#### Scrollscan - -```bash -forge verify-contract \ - --verifier-url https://api-sepolia.scrollscan.com/api \ - --etherscan-api-key \ - --constructor-args -``` - - -#### Blockscout - -将验证提供者指定为 `blockscout`。 - -##### Scroll -```bash -forge verify-contract \ - --verifier-url https://blockscout.scroll.io/api\? \ - --verifier blockscout \ - --constructor-args -``` - -##### Scroll Sepolia -```bash -forge verify-contract \ - --verifier-url https://sepolia-blockscout.scroll.io/api\? \ - --verifier blockscout \ - --constructor-args -``` - - diff --git a/src/content/tools/en/0x.mdx b/src/content/tools/en/0x.mdx deleted file mode 100644 index f16c30948..000000000 --- a/src/content/tools/en/0x.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: "0x" -category: ["Defi"] -excerpt: "Embed swaps in your on-chain app." -logo: - { - src: "https://cdn.prod.website-files.com/66967cfef0a246cbbb9aee94/66967cfef0a246cbbb9af016_0x-logo-light.svg", - alt: "0x Logo", - } -website: "https://0x.org/" -network: ["Mainnet"] -noAdditionalInfo: false ---- - -0x is your all-in-one solution for building financial products on crypto rails. We offer a suite of APIs to help developers build faster, get the best prices, and deliver a great user experience. With over 71 million transactions and $148B+ in volume from 8 million+ users, our APIs power top apps like Coinbase Wallet, Robinhood Wallet, Matcha, Metamask, Zerion, and Zapper. - -0x provides the [Swap API](https://0x.org/docs/0x-swap-api/introduction) and [Gasless API](https://0x.org/docs/gasless-api/introduction). - -Get started building with [0x Swap API on Scroll](https://www.levelup.xyz/content/0x-on-scroll). For Scroll, use `534352` as the `chainId`. - -See the [0x cheat sheet](https://0x.org/docs/introduction/0x-cheat-sheet) for additional information on how to make a 0x API request. diff --git a/src/content/tools/en/aave.mdx b/src/content/tools/en/aave.mdx deleted file mode 100644 index c5dfc3808..000000000 --- a/src/content/tools/en/aave.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: "Aave" -category: ["Defi"] -excerpt: "" -logo: { src: "https://pbs.twimg.com/profile_images/1808921860781821952/CmtvkzWo_400x400.png", alt: "Aave Logo" } -website: "https://search.onaave.com/?q=Scroll" -network: ["Mainnet", "Testnet"] ---- - -You can find contract addresses for Aave on [Scroll Mainnet](https://github.com/bgd-labs/aave-address-book/blob/main/src/AaveV3Scroll.sol) and [Scroll Sepolia](https://github.com/bgd-labs/aave-address-book/blob/main/src/AaveV3ScrollSepolia.sol). \ No newline at end of file diff --git a/src/content/tools/en/across.mdx b/src/content/tools/en/across.mdx deleted file mode 100644 index 2b1197917..000000000 --- a/src/content/tools/en/across.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: "Across" -category: ["Bridge"] -excerpt: "Across is an interoperability protocol powered by intents, enabling the fastest and lowest-cost way to transfer value without security tradeoffs." -logo: { src: "https://3563890891-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fo33kX1T6RRp4inOcEH1d%2Fuploads%2FYTdMDAZ1jNPOF9bkNdMO%2FAcross%20Logomark%20Aqua%20Circle.png?alt=media&token=6619a5be-ea2a-4967-844e-d07caac3fdc2", alt: "Across Logo" } -website: "https://across.to/" -network: ["Mainnet", "Testnet"] ---- - -**_Scroll Mainnet contracts:_** - -- Scroll_SpokePool: -[`0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96`](https://scrollscan.com/address/0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96) -- MulticallHandler: -[`0xD2CDF46556543316e7D34e8eDc4624e2bB95e3B6`](https://scrollscan.com/address/0x924a9f036260DdD5808007E1AA95f08eD08aA569) - -**_Scroll Sepolia contracts:_** - -- Scroll_SpokePool: -[`0x95B3A7A7344BBd7b1033275CA3Ce89494baA6A40`](https://sepolia.scrollscan.com/address/0x95B3A7A7344BBd7b1033275CA3Ce89494baA6A40) \ No newline at end of file diff --git a/src/content/tools/en/alchemy.mdx b/src/content/tools/en/alchemy.mdx deleted file mode 100644 index 242940111..000000000 --- a/src/content/tools/en/alchemy.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: "Alchemy" -category: ["Data", "Infra"] -excerpt: "The web3 developer platform that provides a suite of tools for building and managing blockchain applications." -logo: { src: "https://static.alchemyapi.io/docs-homepage-assets/images/chains/alchemy.svg", alt: "Alchemy Logo" } -website: "https://www.alchemy.com/" -network: ["Mainnet", "Testnet"] ---- - -Get started building on Scroll with Alchemy at [docs.alchemy.com/reference/scroll-api-quickstart](https://docs.alchemy.com/reference/scroll-chain-api-quickstart). \ No newline at end of file diff --git a/src/content/tools/en/anyrand.mdx b/src/content/tools/en/anyrand.mdx deleted file mode 100644 index 8fe17fedd..000000000 --- a/src/content/tools/en/anyrand.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: "Anyrand" -category: ["Oracle"] -excerpt: "Permissionlessly verifiable random number generator for any EVM network." -logo: { src: "https://docs.anyrand.com/img/anyrand-logo.svg", alt: "Anyrand Logo" } -website: "https://anyrand.com/" -network: ["Mainnet", "Testnet"] ---- - -**_Official Anyrand docs:_** - -[docs.anyrand.com](https://docs.anyrand.com/) \ No newline at end of file diff --git a/src/content/tools/en/arcana.mdx b/src/content/tools/en/arcana.mdx deleted file mode 100644 index 8ce08248f..000000000 --- a/src/content/tools/en/arcana.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -name: "Arcana Network" -category: ["Wallet", "Infra", "Onboarding", "Chain Abstraction"] -excerpt: "Arcana Network Chain Abstraction SDK enables unified balance across chains for app users." -logo: { src: "https://github.com/arcana-network/branding/blob/main/Arcana%20-%20Logomark%20-%20Pink%20on%20Grey.png?raw=true", alt: "Arcana Network Logo" } -website: "https://arcana.network/" -network: ["Mainnet"] ---- - -[Arcana Network](https://arcana.network/) offers developers a suite of tools to onboard users from any ecosystem to Scroll, effortlessly. - -* **[Arcana Chain Abstraction (CA) SDK](https://www.npmjs.com/package/@arcana/ca-sdk)** -* **[Arcana CA Wallet (Standalone)](https://chromewebstore.google.com/detail/arcana-wallet/nieddmedbnibfkfokcionggafcmcgkpi)** - -The [Chain Abstraction](https://docs.arcana.network/ca/introduction/ca/#chain-abstraction) feature aggregates user’s USDC, USDT, and ETH balances from other blockchains into a single [unified balance](https://docs.arcana.network/ca/introduction/ca/#unified-balance) that users can spend directly on Scroll without the friction of bridging, allowing for a seamless experience. - -**Arcana Chain Abstraction (CA) SDK**: - -Arcana’s Chain Abstraction SDK can be integrated with **any Web3 app** on Scroll to enable unified balance for the app users. Unified balance lets users spend their consolidated multi-chain token balance on Scroll. The integration is quick and easy: - -- Minimal changes to the frontend code -- No smart contract changes required -- Users can bring existing browser-based third-party wallets -- No lockups or transfer of assets required - -**Arcana CA Wallet (Standalone)**: - -A standalone wallet with built-in chain abstraction. Users can view and spend their unified unified balance across a variety of [supported apps](https://docs.arcana.network/web3-stack/ca_stack/#apps). Reach out to us if you’d like your app to be supported by Arcana - -**References** - -* Developers: - - [How to integrate a Scroll App with Arcana Chain Abstraction SDK?](https://blog.arcana.network/arcanas-chain-abstraction-sdk-on-scroll/) - - [CA SDK API](https://ca-sdk-ref-guide.netlify.app/) - - [CA SDK Demo](https://sdk.arcana.network) -* Users: [Try the Arcana CA Wallet](https://chromewebstore.google.com/detail/arcana-wallet/nieddmedbnibfkfokcionggafcmcgkpi) -* Arcana Network [Website](https://arcana.network/) \ No newline at end of file diff --git a/src/content/tools/en/chainlink.mdx b/src/content/tools/en/chainlink.mdx deleted file mode 100644 index a9a4fe30e..000000000 --- a/src/content/tools/en/chainlink.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: "Chainlink" -category: ["Oracle", "Bridge"] -excerpt: "" -logo: { src: "https://pbs.twimg.com/profile_images/1800426318099595264/N7yf_kOD_400x400.jpg", alt: "Chainlink Logo" } -website: "https://chain.link/" -network: ["Mainnet", "Testnet"] ---- - -You can find contract addresses for Chainlink for Scroll Mainnet and Scroll Sepolia testnet: - -- [LINK Token Contracts for Scroll](https://docs.chain.link/resources/link-token-contracts#scroll) -- [L2 Sequencer Data Feeds](https://docs.chain.link/data-feeds/l2-sequencer-feeds#available-networks) -- [Price Feed Addresses for Scroll](https://docs.chain.link/data-feeds/price-feeds/addresses?network=scroll&page=1) - - diff --git a/src/content/tools/en/eas.mdx b/src/content/tools/en/eas.mdx deleted file mode 100644 index ae3bdfab6..000000000 --- a/src/content/tools/en/eas.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -name: "Ethereum Attestation Service" -category: ["Identity"] -excerpt: "Ethereum Attestation Service (EAS) is an infrastructure public good for making attestations onchain or offchain about anything." -logo: { src: "https://pbs.twimg.com/profile_images/1593335725751083008/0XMyDyLq_400x400.png", alt: "EAS Logo" } -website: "https://attest.org/" -network: ["Mainnet", "Testnet"] ---- - -**_Scroll Mainnet contracts:_** - -- EAS: -[`0xC47300428b6AD2c7D03BB76D05A176058b47E6B0`](https://scrollscan.com/address/0xC47300428b6AD2c7D03BB76D05A176058b47E6B0) -- SchemaRegistry: -[`0xD2CDF46556543316e7D34e8eDc4624e2bB95e3B6`](https://scrollscan.com/address/0xD2CDF46556543316e7D34e8eDc4624e2bB95e3B6) -- EIP712Proxy: -[`0x77b7DA1c40762Cd8AFfE2069b575328EfD4D9801`](https://scrollscan.com/address/0x77b7DA1c40762Cd8AFfE2069b575328EfD4D9801) -- Indexer: `Not deployed yet` - -**_Scroll Sepolia contracts:_** - -- EAS: -[`0xaEF4103A04090071165F78D45D83A0C0782c2B2a`](https://sepolia.scrollscan.com/address/0xaEF4103A04090071165F78D45D83A0C0782c2B2a) -- SchemaRegistry: -[`0x55D26f9ae0203EF95494AE4C170eD35f4Cf77797`](https://sepolia.scrollscan.com/address/0x55D26f9ae0203EF95494AE4C170eD35f4Cf77797) -- EIP712Proxy: -[`0xB3574f76b1720E61FdA98702c7016674CD6Eaa7b`](https://sepolia.scrollscan.com/address/0xB3574f76b1720E61FdA98702c7016674CD6Eaa7b) -- Indexer: -[`0x7C2cb1eDC328491da52de2a0afc44D3B0Ae7ee17`](https://sepolia.scrollscan.com/address/0x7C2cb1eDC328491da52de2a0afc44D3B0Ae7ee17) \ No newline at end of file diff --git a/src/content/tools/en/pimlico.mdx b/src/content/tools/en/pimlico.mdx deleted file mode 100644 index a10e3bccc..000000000 --- a/src/content/tools/en/pimlico.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: "Pimlico" -category: ["Infra","Chain Abstraction"] -excerpt: "Gass-less experience, account abstraction infrastructure and boundlers." -logo: { src: "https://avatars.githubusercontent.com/u/125581500?s=200&v=4", alt: "Pimlico Logo" } -website: "https://www.pimlico.io/" -network: ["Mainnet", "Testnet"] ---- - -**_Official Pimlico docs:_** - -[docs.pimlico.io](https://docs.pimlico.io/) \ No newline at end of file diff --git a/src/content/tools/en/privy.mdx b/src/content/tools/en/privy.mdx deleted file mode 100644 index 363d4ed87..000000000 --- a/src/content/tools/en/privy.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: "Privy" -category: ["Wallet","Onboarding"] -excerpt: "Wallet and onboarding tooling for developers." -logo: { src: "https://framerusercontent.com/images/AwTsKmlC3D7Q0nXT1xH0qt3jHkI.png", alt: "Privy Logo" } -website: "https://www.privy.io/" -network: ["Mainnet", "Testnet"] ---- - -**_Official Privy docs:_** - -[docs.privy.io](https://docs.privy.io/welcome) \ No newline at end of file diff --git a/src/content/tools/en/pyth.mdx b/src/content/tools/en/pyth.mdx deleted file mode 100644 index 5ae511b99..000000000 --- a/src/content/tools/en/pyth.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: "Pyth" -category: ["Oracle"] -excerpt: "Pyth Network is the largest first-party oracle network, focusing on delivering real-time financial data." -logo: { src: "https://pbs.twimg.com/profile_images/1876029224277966848/ZvI083Fa_400x400.jpg", alt: "Pyth Logo" } -website: "https://pyth.network/" -network: ["Mainnet", "Testnet"] ---- - -You can find contract addresses for Pyth for Scroll Mainnet and Scroll Sepolia: - -- [How to use Pyth on Scroll](https://docs.pyth.network/price-feeds/use-real-time-data/evm) -- [Price Feed IDs for Scroll](https://www.pyth.network/developers/price-feed-ids) -- [Pyth Scroll Mainnet and Scroll Sepolia contracts](https://docs.pyth.network/price-feeds/contract-addresses/evm) - - diff --git a/src/content/tools/en/quicknode.mdx b/src/content/tools/en/quicknode.mdx deleted file mode 100644 index 49ea04b78..000000000 --- a/src/content/tools/en/quicknode.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -name: "QuickNode" -category: ["Data", "Infra"] -excerpt: "A comprehensive platform for web3 data and infrastructure tools, featuring the fastest RPCs, serverless blockchain functions, and robust ETL tools, all supported by enterprise-level reliability and security." -logo: - { - src: "https://pbs.twimg.com/profile_images/1875136807781662720/MJP7n4UN_400x400.jpg", - alt: "QuickNode Logo", - } -website: "https://www.quicknode.com/chains/scroll?utm_source=scroll-docs" -network: ["Mainnet", "Testnet"] -noAdditionalInfo: false ---- - -QuickNode supercharges your blockchain projects with fast, secure infrastructure built to scale. It supports over 60 chains, low-latency RPC endpoints, flexible serverless functions, and smart ETL tooling that keep your apps running seamlessly. SOC 1 and SOC 2 compliance ensures your data is safe, plus 24/7 global support ready to help when you need it. QuickNode is your go-to partner for unlocking the true potential of Web3 development. - -###### Get started for free - - -- Fastest RPC endpoints: [docs/scroll](https://www.quicknode.com/docs/scroll?utm_source=scroll-docs) - -- Blockchain ETL solution, Streams: [docs/streams](https://www.quicknode.com/docs/streams/getting-started?utm_source=scroll-docs) - -- Blockchain Serverless Functions: [docs/functions](https://www.quicknode.com/docs/functions/getting-started?utm_source=scroll-docs) - -###### Resources: - -- [Docs](https://www.quicknode.com/docs/welcome?utm_source=scroll-docs) -- [Step-by-step guides](https://www.quicknode.com/guides/welcome?utm_source=scroll-docs) -- [Video tutorials](https://www.youtube.com/@QuickNode) diff --git a/src/content/tools/en/reown.mdx b/src/content/tools/en/reown.mdx deleted file mode 100644 index 2125dcad2..000000000 --- a/src/content/tools/en/reown.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -name: "Reown" -category: ["Onboarding", "Wallet"] -excerpt: "Reown provides developers with tools to enable seamless wallet interactions across their Web3 apps and wallets." -logo: { src: "https://avatars.githubusercontent.com/u/179229932", alt: "Reown Logo" } -website: "https://reown.com/?utm_source=scroll&utm_medium=docs&utm_campaign=backlinks" -network: ["Mainnet", "Testnet"] ---- - -**[Reown (prev. known as WalletConnect)](https://reown.com/?utm_source=scroll&utm_medium=docs&utm_campaign=backlinks)** provides developers with tools to enable seamless wallet interactions across their Web3 apps and wallets. - -Reown has two major product offerings, they are, **AppKit** and **WalletKit**. - -### AppKit - -AppKit is a powerful, free, and fully open-source SDK for developers looking to integrate wallet connections and other Web3 functionalities into their apps on any EVM and non-EVM chain. In just a few simple steps, you can provide your users with seamless wallet access, one-click authentication, social logins, and notifications—streamlining their experience while enabling advanced features like on-ramp functionality, in-app token swaps and smart accounts. - -### WalletKit -WalletKit is a robust, open-source SDK designed to empower seamless wallet connections and interactions across any blockchain. With WalletKit, you can offer your users a simple and secure way to connect with thousands of apps, enabling features like one-click authentication, secure transaction signing, and streamlined wallet address verification. Its chain-agnostic design ensures effortless multi-chain support, eliminating the need for complex integrations while delivering unmatched connectivity and security. - -To summarize, **AppKit** is for **Web3 applications** and **WalletKit** is for **Web3 wallets**. - -You will be able to use Reown AppKit to power end-to-end wallet interactions on your Web3 app deployed on Scroll. - -Some links to learn more about Reown: -- [Website](https://reown.com/?utm_source=scroll&utm_medium=docs&utm_campaign=backlinks) -- [Blog](https://reown.com/blog?utm_source=scroll&utm_medium=docs&utm_campaign=backlinks) -- [Docs](https://docs.reown.com/?utm_source=scroll&utm_medium=docs&utm_campaign=backlinks) diff --git a/src/content/tools/en/safe.mdx b/src/content/tools/en/safe.mdx deleted file mode 100644 index 7397d0ad2..000000000 --- a/src/content/tools/en/safe.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: "Safe" -category: ["Identity", "Wallet"] -excerpt: "" -logo: { src: "https://app.safe.global/images/safe-logo-green.png", alt: "Safe Logo" } -website: "https://app.safe.global" -network: ["Mainnet", "Testnet"] ---- - -Scroll Mainnet is available in the [official Safe app](app.safe.global), and the transaction service API is at https://safe-transaction-scroll.safe.global. Here are the relevant contracts for Scroll Mainnet: - -- CompatibilityFallbackHandler: [`0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4`](https://scrollscan.com/address/0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4) -- CreateCall: [`0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4`](https://scrollscan.com/address/0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4) -- DefaultCallbackHandler: [`0x1AC114C2099aFAf5261731655Dc6c306bFcd4Dbd`](https://scrollscan.com/address/0x1AC114C2099aFAf5261731655Dc6c306bFcd4Dbd) -- GnosisSafe: [`0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552`](https://scrollscan.com/address/0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552) -- GnosisSafeL2: [`0x3E5c63644E683549055b9Be8653de26E0B4CD36E`](https://scrollscan.com/address/0x3E5c63644E683549055b9Be8653de26E0B4CD36E) -- GnosisSafeProxyFactory: [`0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2`](https://scrollscan.com/address/0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2) -- MultiSend: [`0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761`](https://scrollscan.com/address/0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761) -- MultiSendCallOnly: [`0x40A2aCCbd92BCA938b02010E17A5b8929b49130D`](https://scrollscan.com/address/0x40A2aCCbd92BCA938b02010E17A5b8929b49130D) -- SignMessageLib: [`0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2`](https://scrollscan.com/address/0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2) -- SimulateTxAccessor: [`0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da`](https://scrollscan.com/address/0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da) - -You can access Safe on Scroll Sepolia [here](https://safe.scroll.xyz/), and the transaction service API is at https://transaction-sepolia.safe.scroll.xyz. Here are the relevant contracts for Scroll Sepolia: - -- CompatibilityFallbackHandler: [`0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4`](https://sepolia.scrollscan.com/address/0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4) -- CreateCall: [`0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4`](https://sepolia.scrollscan.com/address/0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4) -- DefaultCallbackHandler: [`0x1AC114C2099aFAf5261731655Dc6c306bFcd4Dbd`](https://sepolia.scrollscan.com/address/0x1AC114C2099aFAf5261731655Dc6c306bFcd4Dbd) -- GnosisSafe: [`0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552`](https://sepolia.scrollscan.com/address/0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552) -- GnosisSafeL2: [`0x3E5c63644E683549055b9Be8653de26E0B4CD36E`](https://sepolia.scrollscan.com/address/0x3E5c63644E683549055b9Be8653de26E0B4CD36E) -- GnosisSafeProxyFactory: [`0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2`](https://sepolia.scrollscan.com/address/0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2) -- MultiSend: [`0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761`](https://sepolia.scrollscan.com/address/0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761) -- MultiSendCallOnly: [`0x40A2aCCbd92BCA938b02010E17A5b8929b49130D`](https://sepolia.scrollscan.com/address/0x40A2aCCbd92BCA938b02010E17A5b8929b49130D) -- SignMessageLib: [`0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2`](https://sepolia.scrollscan.com/address/0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2) -- SimulateTxAccessor: [`0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da`](https://sepolia.scrollscan.com/address/0x59AD6735bCd8152B84860Cb256dD9e96b85F69Da) \ No newline at end of file diff --git a/src/content/tools/en/sentio.mdx b/src/content/tools/en/sentio.mdx deleted file mode 100644 index 46e4fcd08..000000000 --- a/src/content/tools/en/sentio.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: "Sentio" -category: ["Debug", "Data"] -excerpt: "" -logo: { src: "https://app.sentio.xyz/logo-mini.png", alt: "Sentio Logo" } -website: "https://sentio.xyz" -network: ["Mainnet", "Testnet"] ---- - -Sentio provides a powerful, all-in-one solution for transaction debugging, simulation, data indexing, and visualization, offering complete context in a single platform. - -**_Sentio Debugger:_** - -Best tool to help users understand how a transaction works. It has advanced features such as: - -- [Simulation](https://docs.sentio.xyz/docs/simulation): Run lightning-fast simulations and inspect the simulation result in great detail -- [Dynamic logging](https://docs.sentio.xyz/docs/dynamic-logging): Add custom `console.log` for transactions to extract specific information, as part of a broader contract override feature -- [Code Insight](https://docs.sentio.xyz/docs/code-insight): Navigate through Solidity code seamlessly, just like in an IDE - -**_Sentio Indexer:_** - -A state-of-the-art indexing service with integrated user experience: - -- Support both [Sentio processor](https://docs.sentio.xyz/docs/processor-basic), a blazing fast data indexer powered by the Sentio SDK that streamlines data ingestion, processing, and storage—all with maximum flexibility in TypeScript, as well as [hosted subgraph processor]((https://docs.sentio.xyz/docs/hosted-subgraph)) -- Query using SQL/GraphQL and visualize results with an intuitive click-and-drag interface \ No newline at end of file diff --git a/src/content/tools/en/thegraph.mdx b/src/content/tools/en/thegraph.mdx deleted file mode 100644 index 719fe8a5d..000000000 --- a/src/content/tools/en/thegraph.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: "The Graph" -category: ["Debug", "Data"] -excerpt: "Getting historical data on a smart contract can be frustrating when you’re building a dapp. The Graph provides an easy way to query smart contract data through APIs known as subgraphs." -logo: { src: "https://avatars.githubusercontent.com/u/38020273?s=200&v=4", alt: "The Graph Logo" } -website: "https://thegraph.com" -network: ["Mainnet", "Testnet"] ---- - -Getting historical data on a smart contract can be frustrating when you’re building a dapp. [The Graph](https://thegraph.com/) provides an easy way to query smart contract data through APIs known as subgraphs. The Graph’s infrastructure relies on a decentralized network of indexers, enabling your dapp to become truly decentralized. - -The Graph supports both Scroll mainnet & testnet. - -#### Quick Start - -These subgraphs only take a few minutes to set up. To get started, follow these three steps: - -1. Initialize your subgraph project -2. Deploy & Publish -3. Query from your dapp - -Pricing: **All developers receive 100K free queries per month on the decentralized network**. After these free queries, you only pay based on usage at $4 for every 100K queries. - -Here’s a step by step walk through that includes screenshots: -[The Graph Quick Start](https://edgeandnode.notion.site/The-Graph-Quick-Start-cd924d4d17674c5492216ef7c5e0503d?pvs=74) diff --git a/src/content/tools/en/uniswap.mdx b/src/content/tools/en/uniswap.mdx deleted file mode 100644 index 7ca99201f..000000000 --- a/src/content/tools/en/uniswap.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -name: "Uniswap v3" -category: ["Defi"] -excerpt: "" -logo: { src: "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Uniswap_Logo.svg/2051px-Uniswap_Logo.svg.png", alt: "Uniswap Logo" } -website: "https://uniswap.org/" -network: ["Mainnet", "Testnet"] ---- - -**_Scroll Mainnet_** - -- Main Contracts - - Core Factory: [`0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919`](https://scrollscan.com/address/0x70C62C8b8e801124A4Aa81ce07b637A3e83cb919) - - NFT Position Manager: [`0xB39002E4033b162fAc607fc3471E205FA2aE5967`](https://scrollscan.com/address/0xB39002E4033b162fAc607fc3471E205FA2aE5967) - - Router: [`0xfc30937f5cDe93Df8d48aCAF7e6f5D8D8A31F636`](https://scrollscan.com/address/0xfc30937f5cDe93Df8d48aCAF7e6f5D8D8A31F636) -- Additional Contracts - - multicall2Address: [`0xC1D2e074C38FdD5CA965000668420C80316F0915`](https://scrollscan.com/address/0xC1D2e074C38FdD5CA965000668420C80316F0915) - - proxyAdminAddress: [`0x1E6dcAb806A42055098f23E2B3ac72D6E195F967`](https://scrollscan.com/address/0x1E6dcAb806A42055098f23E2B3ac72D6E195F967) - - tickLensAddress: [`0x85780e12e90D2a684eB8E7404c985b5B5c8ce7E9`](https://scrollscan.com/address/0x85780e12e90D2a684eB8E7404c985b5B5c8ce7E9) - - nftDescriptorLibraryAddressV1_3_0: [`0xAeE9c206ba89F3DA25EEe4636208519e0B86965B`](https://scrollscan.com/address/0xAeE9c206ba89F3DA25EEe4636208519e0B86965B) - - nonfungibleTokenPositionDescriptorAddressV1_3_0: [`0xACcf12204b7591B2ECCEFe737440B0f53748B191`](https://scrollscan.com/address/0xACcf12204b7591B2ECCEFe737440B0f53748B191) - - descriptorProxyAddress: [`0x675DD953225D296A44790dC1390a1E7eF378f464`](https://scrollscan.com/address/0x675DD953225D296A44790dC1390a1E7eF378f464) - - v3MigratorAddress: [`0xF00577B5Dd0DA227298E954Ed11356F264Cf93d4`](https://scrollscan.com/address/0xF00577B5Dd0DA227298E954Ed11356F264Cf93d4) - - v3StakerAddress: [`0xFdFbE973c9ecB036Ecfb7af697FcACe789D3f928`](https://scrollscan.com/address/0xFdFbE973c9ecB036Ecfb7af697FcACe789D3f928) - - quoterV2Address: [`0x2566e082Cb1656d22BCbe5644F5b997D194b5299`](https://scrollscan.com/address/0x2566e082Cb1656d22BCbe5644F5b997D194b5299) - -**_Scroll Sepolia_** - -- Frontend website: [https://uniswap-showcase.sepolia.scroll.xyz/](https://uniswap-showcase.sepolia.scroll.xyz/) -- Main Contracts - - Core Factory: [`0xB856587fe1cbA8600F75F1b1176E44250B11C788`](https://sepolia.scrollscan.com/address/0xB856587fe1cbA8600F75F1b1176E44250B11C788) - - NFT Position Manager: [`0xbbAd0e891922A8A4a7e9c39d4cc0559117016fec`](https://sepolia.scrollscan.com/address/0xbbAd0e891922A8A4a7e9c39d4cc0559117016fec) - - Router: [`0x17AFD0263D6909Ba1F9a8EAC697f76532365Fb95`](https://sepolia.scrollscan.com/address/0x17AFD0263D6909Ba1F9a8EAC697f76532365Fb95) -- Additional Contracts - - multicall2Address: [`0x8c181f4B9040F1a2C941EfD3b608712cF86F1957`](https://sepolia.scrollscan.com/address/0x8c181f4B9040F1a2C941EfD3b608712cF86F1957) - - proxyAdminAddress: [`0xD4A9910732b6f301F6F210Ebe7a3dBf16d9E9DD4`](https://sepolia.scrollscan.com/address/0xD4A9910732b6f301F6F210Ebe7a3dBf16d9E9DD4) - - tickLensAddress: [`0x9804Da978427a49929f2E6Ea32A9594F03f9296e`](https://sepolia.scrollscan.com/address/0x9804Da978427a49929f2E6Ea32A9594F03f9296e) - - nftDescriptorLibraryAddressV1_3_0: [`0x45Bd3B62B7A3aA53371c98049b0f7A9C1A4B5a6c`](https://sepolia.scrollscan.com/address/0x45Bd3B62B7A3aA53371c98049b0f7A9C1A4B5a6c) - - nonfungibleTokenPositionDescriptorAddressV1_3_0: [`0x24d4E4a572Dc1e0dbF92a0d7768Ac80df516b2C2`](https://sepolia.scrollscan.com/address/0x24d4E4a572Dc1e0dbF92a0d7768Ac80df516b2C2) - - descriptorProxyAddress: [`0xa8986417d0EAe50607696b9b0cb7ec5aFBE67765`](https://sepolia.scrollscan.com/address/0xa8986417d0EAe50607696b9b0cb7ec5aFBE67765) - - v3MigratorAddress: [`0x38E33D067F03a5cDc02C301b2c306cb0414549Bf`](https://sepolia.scrollscan.com/address/0x38E33D067F03a5cDc02C301b2c306cb0414549Bf) - - v3StakerAddress: [`0xe7b82794Cab21e665a3e6f8ea562d392AA6E0619`](https://sepolia.scrollscan.com/address/0xe7b82794Cab21e665a3e6f8ea562d392AA6E0619) - - quoterV2Address: [`0xd5dd33650Ef1DC6D23069aEDC8EAE87b0D3619B2`](https://sepolia.scrollscan.com/address/0xd5dd33650Ef1DC6D23069aEDC8EAE87b0D3619B2)