);
};
================================================
FILE: src/components/Head.tsx
================================================
import { useRouter } from "next/router";
import { useConfig } from "nextra-theme-docs";
export const Head = () => {
const { asPath, defaultLocale, locale } = useRouter();
const { frontMatter } = useConfig();
const baseUrl = "https://docs.inkonchain.com";
const url =
baseUrl + (defaultLocale === locale ? asPath : `/${locale}${asPath}`);
const title =
frontMatter.title || "Ink Docs - The Official Developer Guide for Ink";
const description =
frontMatter.description ||
"Comprehensive documentation for Ink, a cutting-edge Layer 2 (L2) blockchain built on Optimism's Superchain. Learn how to build, integrate, and leverage Ink's DeFi capabilities.";
const ogImage = frontMatter.image || `${baseUrl}/logo/build-the-future.png`;
return (
<>
{/* Basic Meta Tags */}
{/* Open Graph / Facebook */}
{/* Twitter */}
{/* Favicon */}
>
);
};
================================================
FILE: src/components/MultisigContentWrapper.tsx
================================================
import CopyableCode from "@/components/CopyableCode";
import MultisigContent from "@/content/shared/multisig-content.mdx";
export function MultisigContentWrapper() {
const components = {
CopyableCode,
};
return ;
}
================================================
FILE: src/components/SidebarTitleComponent.tsx
================================================
import clsx from "clsx";
import { useRouter } from "next/router";
interface SidebarTitleComponentProps {
title: string;
type: string;
route: string;
}
export const SidebarTitleComponent: React.FC = ({
title,
type,
route,
}) => {
const { asPath } = useRouter();
const isActive = route === asPath;
if (type === "separator") {
return (
{title}
);
}
return (
{title}
);
};
================================================
FILE: src/components/TestnetDisclaimer.tsx
================================================
import { Callout } from "nextra/components";
export const TestnetDisclaimer = () => {
return (
This guide currently references Ink Sepolia (testnet) however, it can be
used for Ink mainnet as well. Please be sure to change the necessary
parameters based on your network of choice.
);
};
================================================
FILE: src/components/ThemeToggle.tsx
================================================
import { useEffect, useState } from "react";
import { useTheme } from "nextra-theme-docs";
import { MoonIcon } from "../icons/Moon";
import { SunIcon } from "../icons/Sun";
export const ThemeToggle = () => {
const { resolvedTheme, setTheme } = useTheme();
const [isMounted, setIsMounted] = useState(false);
const onToggleTheme = () => {
if (resolvedTheme == "dark") {
setTheme("light");
} else {
setTheme("dark");
}
};
/**
* This is not ideal, but it's the best solution we have to avoid rendering the button
* with the wrong color
*/
useEffect(() => {
setIsMounted(true);
}, [setIsMounted]);
if (!isMounted) {
return null;
}
return (
);
};
================================================
FILE: src/components/Toc.tsx
================================================
import Link from "next/link";
import { PencilIcon } from "@/icons/Pencil";
import { ThumbUpIcon } from "@/icons/ThumbUp";
import { URLS } from "@/utils/urls";
interface Heading {
id: string;
depth: number;
value: string;
}
interface TocProps {
headings: Heading[];
}
export const Toc: React.FC = ({ headings }) => {
return (
{headings.length > 0 && (
On this page
{headings.map(({ id, value }) => (
{value}
))}
)}
Edit this page on GitHub
);
};
================================================
FILE: src/content/shared/_badges.mdx
================================================
# Badges
## Welcome To Ink
> Awarded for bridging Ethereum to Ink.
To bridge Ethereum, you can use the `L1StandardBridge` on the sepolia network crafted for Ink.
There are two ways to do it:
### Gelato Bridge app
The app provides a very simple UI to deposit or withdraw SepoliaETH from and to Sepolia Ink.
Here is the app: [https://testnet-bridge.gelato.network/bridge/ink-sepolia](https://testnet-bridge.gelato.network/bridge/ink-sepolia)
Connect your wallet, select the amount to transfer, and that's it!
### Directly calling the contract
You can call the `bridgeETH` method in the contract here: [https://sepolia.etherscan.io/address/0xC0d337f71aD19a8f17a1b297cDb3a86c5EEf9Eec#writeProxyContract](https://sepolia.etherscan.io/address/0xC0d337f71aD19a8f17a1b297cDb3a86c5EEf9Eec#writeProxyContract)
For instance, if you want to bridge 1 Sepolia ETH into 1 Sepolia "Ink" ETH:
1. Connect your Wallet using the "Connect to Wallet" button
2. Expand the `bridgeETH` method and enter `bridgeETH: 1`
3. Enter `_minGasLimit: 1000` (or whatever suits you)
4. Enter `_extraData: 0x00`
5. Click "Write", then validate the transaction in MetaMask, then sign it to complete the transaction.
## Wrapped ETH
> Awarded for wrapping Ethereum into WETH.
To create Wrapped ETH tokens (WETH), you can interact with the `deposit` method in the contract here: [https://explorer-sepolia.inkonchain.com/token/0x47d1f931eaff721549cc0ad57da81729baa8b4b2?tab=write\_contract](https://explorer-sepolia.inkonchain.com/token/0x47d1f931eaff721549cc0ad57da81729baa8b4b2?tab=write_contract)
1. Connect your Wallet using the button
2. Expand the `deposit` method and enter `Send native ETH: 10 000 000 000 000 000`.
* This is equivalent to 0.01 ETH, adjust as needed
3. Click "Write", then validate the transaction in MetaMask, then sign it to complete the transaction.
If you want the token to appear in MetaMask, click on the MetaMask button at the top of the page
## ERC20 Interactions
> Awarded for minting, sending, and receiving ERC20 tokens.
*coming soon*
## NFT Interactions
> Awarded for minting, sending, and receiving NFTs.
*coming soon*
## Faucet User
> Awarded for using the Ink faucet.
Get here: [https://mystery-faucet.inkonchain.com/](https://mystery-faucet.inkonchain.com/)
Enter your address, enter the captcha, that's it!
## Smart Contract Deployer
> Awarded for deploying a smart contract.
*coming soon*
================================================
FILE: src/content/shared/block-explorers-content.mdx
================================================
## Blockscout
Blockscout is a universal block explorer providing detailed chain information and tools for debugging smart contracts and transactions. Visit the [Blockscout Docs](https://docs.blockscout.com/) for details.
###### Supported Networks
* Ink Sepolia: [https://explorer-sepolia.inkonchain.com/](https://explorer-sepolia.inkonchain.com/)
* API: [https://explorer-sepolia.inkonchain.com/api](https://explorer-sepolia.inkonchain.com/api)
###### Verifying Smart Contract Code on Blockscout
* Please see [this tutorial](/build/tutorials/verify-smart-contract)
## Routescan
Routescan is a unified explorer for over 54 blockchains.
###### Supported Networks
* Ink Sepolia: [https://sepolia.inkonscan.xyz/](https://sepolia.inkonscan.xyz/)
* API: [https://sepolia.inkonscan.xyz/documentation/api-swagger](https://sepolia.inkonscan.xyz/documentation/api-swagger)
================================================
FILE: src/content/shared/bridges-content.mdx
================================================
import { Callout } from 'nextra/components'
# Bridges
These bridges provide different interfaces to the canonical smart contracts that facilitate migrating ETH from one chain to another.
Transaction times vary based on network congestion and gas fees. Please ensure you have enough ETH in your wallet to cover transaction fees.
##### How to use
1. Visit the bridge and connect your wallet.
2. Choose Sepolia as your source and Ink as the destination.
3. Input the amount of assets you want to bridge.
4. Confirm and sign the transaction with your wallet.
5. Once the bridging is complete, the assets will appear in your wallet on Ink.
## Gelato bridge
Bridge: [https://bridge-gel-sepolia.inkonchain.com/](https://bridge-gel-sepolia.inkonchain.com/)
## Ink Bridge
Bridge: [https://inkonchain.com/bridge](https://inkonchain.com/bridge)
## Brid.gg
Bridge: [https://testnet.brid.gg/](https://testnet.brid.gg/)
## Superbridge
Bridge: [https://superbridge.app/](https://superbridge.app/) (enable testnet in settings)
================================================
FILE: src/content/shared/community-content.mdx
================================================
import { URLS } from "@/utils/urls";
# Get Support
Join the Ink community, vibe with fellow developers and get support:
- Join the Ink Telegram for announcements: Join Telegram
================================================
FILE: src/content/shared/crosschain-content.mdx
================================================
# Crosschain Infrastructure
## Wormhole
Wormhole is an interoperability platform powering multichain apps and bridges.
* Wormhole currently supports Ink Sepolia.
================================================
FILE: src/content/shared/faucets-content.mdx
================================================
# Faucets
Get Sepolia ETH on Ink from these faucets below! Alternatively, you can [bridge](https://inkonchain.com/bridge) testnet funds to Ink.
## [Ink](https://inkonchain.com/faucet)
Our in-house faucet provides a quick and easy way to acquire testnet ETH.
## [Optimism Superchain Faucet](https://console.optimism.io/faucet)
The Superchain Faucet provides testnet ETH for Ink and all other OP chains. Sign in to claim 0.10 test ETH on 1 network every 24 hours or verify your onchain identity for more tokens.
## [QuickNode](https://faucet.quicknode.com/drip)
Use QuickNode Faucet to claim Ink Sepolia for testnet ETH for free - one drip per network every 12 hours.
## [Gelato](https://faucet-gel-sepolia.inkonchain.com)
Gelato's Faucet uses Cloudflare authentication and drops up to 0.3 Ink Sepolia ETH every 12 hours.
## [Tenderly](https://tenderly.co/?mtm_campaign=ext-docs&mtm_kwd=ink)
Tenderly's [Unlimited Faucet](https://docs.tenderly.co/virtual-testnets/unlimited-faucet?mtm_campaign=ext-docs&mtm_kwd=ink) allows you to mint native and ERC20 tokens for development and testing on Virtual TestNets. The unlimited faucet is part of the [Admin RPC](https://docs.tenderly.co/virtual-testnets/admin-rpc?mtm_campaign=ext-docs&mtm_kwd=ink), a collection of cheat-codes allowing full customization of the network.
================================================
FILE: src/content/shared/multisig-content.mdx
================================================
# Multisig
## Safe
Ink hosts [Safe](https://docs.safe.global/home/what-is-safe)'s technology to bring digital ownership of accounts to everyone by building universal and open contract standards for the custody of digital assets, data, and identity.
Using Safe you can:
* Manage customizable non-custodial wallets supporting multisignatures for individuals and teams
* Perform financial management of onchain assets incl. ERC20s, ERC721s and ETH
* Access your safe using Web, Mobile and Desktop apps.
* Safe also features access to DeFi, open source code, batch transactions, modular extensions, gasless signatures and more.
**Supported Networks**
* [Ink Mainnet](https://app.safe.global/new-safe/load?chain=ink)
* [Ink Sepolia](https://safe.optimism.io/welcome/accounts?chain=ink-sepolia)
================================================
FILE: src/fonts.ts
================================================
import { Inter, Plus_Jakarta_Sans } from "next/font/google";
export const inter = Inter({
subsets: ["latin"],
variable: "--font-inter",
display: "swap",
});
export const plus_jakarta_sans = Plus_Jakarta_Sans({
subsets: ["latin"],
variable: "--font-plus-jakarta-sans",
display: "swap",
});
================================================
FILE: src/globals.css
================================================
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer utilities {
body {
font-family:
var(--font-plus-jakarta-sans),
var(--font-inter),
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
Helvetica,
"Apple Color Emoji",
Arial,
sans-serif,
"Segoe UI Emoji",
"Segoe UI Symbol";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
@layer base {
h1,
h2,
h3,
h4 {
@apply !text-magic-deep-purple dark:!text-magic-white;
}
a:not(.nextra-sidebar-container a):not(nav a):not(.toc-link) {
@apply !text-magic-purple dark:!text-magic-soft-pink !underline hover:!text-magic-purple/80 dark:hover:!text-magic-soft-pink/80;
}
nav > a {
@apply !text-ink-grey-400 dark:!text-magic-white dark:hover:!text-ink-grey-400 hover:!text-ink-grey-700 !no-underline;
}
nav > a > svg {
@apply !fill-magic-black dark:!fill-magic-white;
}
nav {
@apply bg-white dark:bg-magic-black;
}
pre {
@apply !bg-magic-semi-deep-purple/15;
}
.toc-link {
@apply cursor-pointer !text-ink-grey-400 dark:!text-magic-white group-hover:!text-ink-grey-700 dark:group-hover:!text-ink-grey-700;
}
/* We need to override the underline for nav links and sidebar items */
nav > a,
a:has(div.ink-sidebar-item),
.toc-link {
@apply no-underline;
}
}
/* Some custom hacks to override some issues with Nextra */
.nextra-nav-container-blur {
display: none !important ;
}
/* Remove the padding from the sidebar link, so that we can pply our own style */
a:has(div.ink-sidebar-item) {
padding: 0 !important;
background-color: transparent !important;
}
/* Target both the banner container and its text */
.nextra-banner-container {
@apply text-white !important;
}
.nextra-banner-container a {
@apply text-white hover:text-white/80 no-underline !important;
}
/* Override the purple link styles specifically for the banner */
.nextra-banner-container
a:not(.nextra-sidebar-container a):not(nav a):not(.toc-link) {
@apply text-white hover:text-white/80 underline !important;
}
/* Ensure all text in banner is white, not just links */
.nextra-banner-container {
@apply text-white !important;
}
================================================
FILE: src/icons/Check.tsx
================================================
export const CheckIcon: React.FC<{ className?: string }> = ({
className = "size-6",
}) => {
return (
);
};
================================================
FILE: src/icons/ConnectedPulse.tsx
================================================
import clsx from "clsx";
export const ConnectedPulse: React.FC<{ className?: string }> = ({
className,
}) => {
return (
);
};
================================================
FILE: src/icons/Download.tsx
================================================
interface PencilProps {
className?: string;
}
export const DownloadIcon: React.FC = ({
className = "size-6",
}) => {
return (
);
};
================================================
FILE: src/icons/InkLogo.tsx
================================================
import Image from "next/image";
import { useTheme } from "nextra-theme-docs";
interface InkLogoProps {
className?: string;
}
export const InkLogo: React.FC = ({
className = "text-magic-purple",
}) => {
const { resolvedTheme } = useTheme();
const logoSrc =
resolvedTheme === "dark"
? "/logo/ink-logo-dark.svg"
: "/logo/ink-logo-light.svg";
return (
);
};
================================================
FILE: src/icons/Moon.tsx
================================================
interface MoonIconProps {
className?: string;
}
export const MoonIcon: React.FC = ({
className = "w-6 h-6",
}) => {
return (
);
};
================================================
FILE: src/icons/Pencil.tsx
================================================
interface PencilProps {
className?: string;
}
export const PencilIcon: React.FC = ({ className = "size-6" }) => {
return (
);
};
================================================
FILE: src/icons/Sun.tsx
================================================
interface SunIconProps {
className?: string;
}
export const SunIcon: React.FC = ({ className = "w-6 h-6" }) => {
return (
);
};
================================================
FILE: src/icons/ThumbUp.tsx
================================================
interface ThumbUpProps {
className?: string;
}
export const ThumbUpIcon: React.FC = ({
className = "size-6",
}) => {
return (
);
};
================================================
FILE: src/pages/404.mdx
================================================
# Page Not Found
#### Return [home](/).
#### Please help by [submitting an issue](https://github.com/inkonchain/docs/issues/new) for the broken link. 💜
================================================
FILE: src/pages/500.mdx
================================================
# Unexpected Error

## Something isn't quite right. Let's start again on the [homepage](index).
#### Please help by [submitting an issue](https://github.com/inkonchain/docs/issues/new) for the broken link. ❤️
# CHANGE
\n
================================================
FILE: src/pages/_app.mdx
================================================
import { ThemeProvider } from "next-themes";
import Script from "next/script";
import { inter, plus_jakarta_sans } from "../fonts";
import "../globals.css";
export default function App({ Component, pageProps }) {
return (
);
}
================================================
FILE: src/pages/_meta.json
================================================
{
"index": {
"title": "Getting Started",
"display": "hidden",
"theme": {
"breadcrumb": false,
"footer": true,
"sidebar": true,
"toc": true,
"pagination": false
}
},
"404": {
"title": "404",
"display": "hidden",
"theme": {
"layout": "full",
"breadcrumb": false,
"footer": true,
"sidebar": true,
"toc": false,
"pagination": false
}
},
"500": {
"title": "500",
"display": "hidden",
"theme": {
"layout": "full",
"breadcrumb": false,
"footer": true,
"sidebar": true,
"toc": false,
"pagination": false
}
},
"header_status": {
"title": "Status Page",
"type": "page",
"href": "https://status.inkonchain.com/",
"newWindow": true
},
"header_faucet": {
"title": "Faucets",
"type": "page",
"href": "/tools/faucets"
},
"--- GENERAL": {
"title": "General",
"type": "separator"
},
"general": {
"title": "General",
"display": "children"
},
"+++ Build on Ink": {
"title": "",
"type": "separator"
},
"--- Build On Ink": {
"title": "Build On Ink",
"type": "separator"
},
"build": {
"title": "Build on Ink",
"display": "children"
},
"+++ Ink Builder Program": {
"title": "",
"type": "separator"
},
"--- Ink Builder Program": {
"title": "Ink Builder Program",
"type": "separator"
},
"ink-builder-program": {
"title": "Ink Builder Program",
"display": "children"
},
"+++ Tools": {
"title": "",
"type": "separator"
},
"--- Tools": {
"title": "Tools",
"type": "separator"
},
"tools": {
"title": "Tools",
"display": "children"
},
"+++ Useful Information": {
"title": "",
"type": "separator"
},
"--- Useful Information": {
"title": "Useful Information",
"type": "separator"
},
"useful-information": {
"title": "Useful Information",
"display": "children"
},
"+++ Work with Ink": {
"title": "",
"type": "separator"
},
"--- Work with Ink": {
"title": "Work with Ink",
"type": "separator"
},
"work-with-ink": {
"title": "Work with Ink",
"display": "children",
"theme": {
"pagination": true
}
},
"---": {
"type": "separator"
},
"faq": {
"title": "FAQ"
},
"status": {
"title": "Status Page",
"href": "https://status.inkonchain.com/",
"newWindow": true,
"theme": {
"pagination": false
}
}
}
================================================
FILE: src/pages/build/_meta.json
================================================
{
"getting-started": "Getting Started",
"onchain-clients": "Onchain Clients",
"run-an-ink-node": {
"title": "Running Ink Nodes",
"href": "https://github.com/inkonchain/node",
"newWindow": true
},
"transaction-fees": "Transaction Fees",
"ink-kit": "Ink Kit (archived)",
"verify": "Kraken Verify",
"tutorials": "Tutorials"
}
================================================
FILE: src/pages/build/getting-started.mdx
================================================
import { Callout, Checkbox } from "nextra/components";
# What do I Need to Start Developing on Ink?
To start developing on Ink, you'll need:
- [ ] An IDE (Integrated Development Environment) like [Visual Studio Code](https://code.visualstudio.com/), [Cursor](https://cursor.sh/), or [Remix](https://remix.ethereum.org/) to write smart contracts in solidity.
- [ ] A wallet that holds ETH such as [Kraken Wallet](https://www.kraken.com/wallet), [MetaMask](https://metamask.io/), or [Rainbow](https://rainbow.me/).
- We suggest having at least 0.01 ETH for standard deployments on Ink.
- You can request Ink Sepolia ETH using our [Faucets](/tools/faucets).
- [ ] We recommend using a development framework like [Foundry](https://github.com/foundry-rs/foundry) or [Hardhat](https://hardhat.org/)
- [Guide to deploy a contract using Foundry](/build/tutorials/deploying-a-smart-contract/foundry)
- [Guide to deploy a contract using Hardhat](/build/tutorials/deploying-a-smart-contract/hardhat)
- [Guide to deploy a contract using Remix](/build/tutorials/deploying-a-smart-contract/remix)
Try out InkGPT! Blaze through the docs and get deployed in no time with our
new AI assistant.
================================================
FILE: src/pages/build/ink-kit.mdx
================================================
---
title: Ink Kit
description: A delightful onchain-focused SDK with ready-to-use components and themes
---
import Image from 'next/image'
# Welcome to Ink Kit
⚠️ This project is archived and no longer maintained
Ink Kit is no longer being actively developed or maintained. We recommend using the modern alternatives listed below for your projects.
Ink Kit is an onchain-focused SDK that delivers a delightful developer experience with ready-to-use app layout templates, themes, and magical animated components.
## Install
```bash
npm install @inkonchain/ink-kit
# or
pnpm install @inkonchain/ink-kit
```
## Usage
```tsx
// Import styles first at the root of your project (required)
import "@inkonchain/ink-kit/style.css";
```
```tsx
// Import components as needed
import { Button } from "@inkonchain/ink-kit";
function App() {
return (
);
}
```
Note: Ink Kit classes are prefixed with `ink:` and can be customized using CSS variables instead of Tailwind classes. They should be imported first so that your own custom classes are taking precedence.
## Key Features
- 🎨 **Customizable app layout templates**
- ✨ **Magical animated components**
- 🎭 **Vibrant themes**
- ⛓️ **Onchain-focused development**
- 🚀 **Efficient developer experience**
- 📱 **Polished, engaging interfaces**
## Theming
By default, Ink Kit provides a couple of themes already in the stylesheet:
- Light (`light-theme`)
- Dark (`dark-theme`)
- Contrast (`contrast-theme`)
- Neo (`neo-theme`)
- Morpheus (`morpheus-theme`)
To specify which theme to use, add the `ink:THEME_ID` to your document root:
```tsx
...
```
If you want to programmatically set this value, you can use the `useInkThemeClass`:
```tsx
const theme = getMyCurrentTheme();
useInkThemeClass(theme === "light" ? "ink:neo-theme" : "ink:dark-theme");
```
### Custom Theme
To create a custom theme, you can override CSS variables:
```css
:root {
--ink-button-primary: rgb(10, 55, 10);
...
}
```
To see examples on specific colors that you can override, check the following [theme](https://github.com/inkonchain/ink-kit/tree/main/src/styles/theme) section of the Ink Kit repository (archived).
## Resources
- **Documentation**: Visit our [Storybook](https://ink-kit.inkonchain.com/) (archived)
- **GitHub repository**: [github.com/inkonchain/ink-kit](https://github.com/inkonchain/ink-kit) (archived)
## Recommended Modern Alternatives
Since Ink Kit is no longer maintained, we recommend the following actively maintained alternatives for your projects:
### UI Component Libraries
- **[shadcn/ui](https://ui.shadcn.com/)** - Beautifully designed components built with Radix UI and Tailwind CSS. Copy and paste components directly into your project.
- **[Radix UI](https://www.radix-ui.com/)** - Unstyled, accessible components for building high‑quality design systems and web apps.
- **[Chakra UI](https://chakra-ui.com/)** - Simple, modular and accessible component library that gives you the building blocks for your React applications.
- **[Mantine](https://mantine.dev/)** - A fully featured React components library with 100+ customizable components.
### Wallet Connectivity (Onchain-focused)
- **[RainbowKit](https://www.rainbowkit.com/)** - The best way to connect a wallet. Designed for everyone. Built for developers.
- **[ConnectKit](https://docs.family.co/connectkit)** - A powerful React component library for connecting wallets to your dapp, built on top of wagmi.
These alternatives are actively maintained, have strong communities, and offer excellent documentation and developer experiences.
================================================
FILE: src/pages/build/onchain-clients.mdx
================================================
# Onchain Clients
## Ethers.js - Instructions for Connecting to Ink
Ethers.js documentation: [https://docs.ethers.org/v6/](https://docs.ethers.org/v6/)
To connect to Ink by instantiating a new `ethers.js` `JsonRpcProvider` object with an RPC URL of Ink's testnet, follow the steps below:
1. **Install ethers.js**: Ensure you have `ethers.js` v6 installed in your project. If not, you can install it using npm or yarn.
```bash
npm install ethers@6
```
or
```bash
yarn add ethers@6
```
2. **Instantiate a JsonRpcProvider**: Use the following code snippet to create a new `JsonRpcProvider` object with the RPC URL of Ink's testnet.
```javascript
import { ethers } from 'ethers';
const rpcUrl = 'https://rpc-gel-sepolia.inkonchain.com';
const provider = new ethers.JsonRpcProvider(rpcUrl, 763373);
```
3. **Using the Provider**: You can now use the `provider` to interact with Ink's testnet. For example, you can fetch the current block number or interact with smart contracts deployed on the testnet.
```javascript
// previous code
const blockNumber = await provider.getBlockNumber();
console.log(blockNumber);
```
### Example: Fetching the Current Block Number
The following code snippet demonstrates how to fetch and print the current block number from Ink's testnet:
## Viem - Instructions for Connecting to Ink
Viem documentation: [https://viem.sh/docs/introduction](https://viem.sh/docs/introduction)
1. **Install Viem**: Ensure you have `viem` installed in your project. If not, you can install it using npm or yarn.
```bash
npm install viem
```
or
```bash
yarn add viem
```
2. **Instantiate a Public Client**: Use the following code snippet to create a new `Public Client` object with the Ink Sepolia testnet.
```javascript
import { createPublicClient, http } from 'viem'
import { inkSepolia } from 'viem/chains'
const client = createPublicClient({
chain: inkSepolia,
transport: http(),
})
```
3. **Consuming Actions**: You can now interact with Ink's chain! Here we are getting the current block number.
```javascript
// previous code
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
```
================================================
FILE: src/pages/build/transaction-fees.mdx
================================================
import { Callout } from 'nextra/components'
# Fees on Ink
As a Superchain L2, the fee you pay for each transaction on Ink has two components:
1. An execution fee for the chain you're on (i.e. Ink L2)
2. A security fee that helps secure the L2 by publishing L2 transactions to Ethereum (the L1)
The security fee is generally higher than the execution fee because L1 transactions tend to be more expensive. The L1 can be subject to congestion and other situations that lead to high gas fees and longer confirmation times.
This is an example of fees from an Ink transaction via our [Block Explorer](https://explorer-sepolia.inkonchain.com/tx/0xaea0e302ed3f89eef77475c1821df67b3713b80798298469ecc3dbd4d8e14e5f):

================================================
FILE: src/pages/build/tutorials/_meta.json
================================================
{
"deploying-a-smart-contract": "Deploying a Smart Contract",
"verify-smart-contract": "Verifying a Smart Contract",
"shipping-on-the-superchain": "Shipping on the Superchain",
"deploying-a-superchainerc20": "Deploying a SuperchainERC20"
}
================================================
FILE: src/pages/build/tutorials/deploying-a-smart-contract/_meta.json
================================================
{
"foundry": "Foundry",
"hardhat": "Hardhat",
"remix": "Remix"
}
================================================
FILE: src/pages/build/tutorials/deploying-a-smart-contract/foundry.mdx
================================================
import CopyableCode from "@/components/CopyableCode";
import { TestnetDisclaimer } from "@/components/TestnetDisclaimer";
# Deploying a Smart Contract with Foundry
This guide will walk you through setting up a new project using Foundry, a blazing fast toolkit for Ethereum application development written in Rust.
## Installing Foundry
First, you'll need to install Foundry. Run this command in your terminal:
```bash
curl -L https://foundry.paradigm.xyz | bash
```
Then run:
```bash
foundryup
```
This will install `forge`, `cast`, and `anvil` - the core tools of Foundry. You can also use `foundryup` to update the tools to the latest version.
## Creating a New Project
To create a new project, navigate to the directory where you want to create your project and use the `forge init` command:
```bash
forge init my_project
cd my_project
```
This will create a new directory with the following structure:
```
my_project/
├── lib/
├── src/
│ └── Counter.sol
├── test/
│ └── Counter.t.sol
├── script/
├── .gitignore
└── foundry.toml
```
## Writing Your First Contract
Remove the default Counter example contract:
```bash
rm -rf src/Counter.sol script/Counter.s.sol test/Counter.t.sol
```
Create a new contract and put it in the file :
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract InkContract {
string public greeting = "Hello, Ink!";
function setGreeting(string memory _greeting) public {
greeting = _greeting;
}
}
```
Create the tests for this contract in the file :
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import {Test} from "forge-std/Test.sol";
import {InkContract} from "../src/InkContract.sol";
contract InkContractTest is Test {
InkContract public ink;
function setUp() public {
ink = new InkContract();
}
function test_DefaultGreeting() public view {
assertEq(ink.greeting(), "Hello, Ink!");
}
function test_SetGreeting() public {
string memory newGreeting = "New greeting!";
ink.setGreeting(newGreeting);
assertEq(ink.greeting(), newGreeting);
}
function testFuzz_SetGreeting(string memory randomGreeting) public {
ink.setGreeting(randomGreeting);
assertEq(ink.greeting(), randomGreeting);
}
}
```
## Building and Testing
Build your project:
```bash
forge build
```
Run tests:
```bash
forge test
```
## Deployment
1. First, create a file in your project root:
```env
PRIVATE_KEY=your_private_key_here
RPC_URL=https://rpc-gel-sepolia.inkonchain.com/
BLOCKSCOUT_API_KEY=your_blockscout_api_key_here
```
2. Create a deployment script in :
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import "forge-std/Script.sol";
import "../src/InkContract.sol";
contract DeployScript is Script {
function run() external {
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
new InkContract();
vm.stopBroadcast();
}
}
```
3. Deploy your contract:
```bash
# Load environment variables
source .env
# Deploy to InkSepolia Testnet
forge script script/Deploy.s.sol:DeployScript --rpc-url $RPC_URL --broadcast --verify
```
## Verifying Your Contract
If you want to verify your contract on Etherscan:
```bash
forge verify-contract src/InkContract.sol:InkContract \
--chain-id 763373 \
--etherscan-api-key $BLOCKSCOUT_API_KEY
```
## Additional Configuration
You can customize your Foundry setup in `foundry.toml`:
```toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc = "0.8.19"
optimizer = true
optimizer_runs = 200
[rpc_endpoints]
inksepolia = "${INKSEPOLIA_RPC_URL}"
```
## Next Steps
- Check out [Get Foundry Book](https://book.getfoundry.sh/) for more information on Foundry.
================================================
FILE: src/pages/build/tutorials/deploying-a-smart-contract/hardhat.mdx
================================================
import { TestnetDisclaimer } from "@/components/TestnetDisclaimer";
# Deploying a Smart Contract with Hardhat
This guide will walk you through setting up a new project using Hardhat, a popular development environment for Ethereum software.
## Prerequisites
First, make sure you have Node.js installed (version 20 or later). You can check your Node version with:
```bash
node --version
```
## Setting Up a New Hardhat Project
1. Create a new directory for your project and initialize it:
```bash
mkdir my-hardhat-project
cd my-hardhat-project
npm init -y
```
2. Install Hardhat and necessary dependencies:
```bash
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
```
3. Create a new Hardhat project:
```bash
npx hardhat init
```
Choose "Create a JavaScript project" when prompted. This will create a project with this structure:
```
my-hardhat-project/
├── contracts/
├── scripts/
├── test/
├── hardhat.config.js
└── package.json
```
## Writing Your First Contract
Create a new file in the `contracts` directory:
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract InkContract {
string public greeting = "Hello, Ink!";
function setGreeting(string memory _greeting) public {
greeting = _greeting;
}
}
```
## Configuring Hardhat
Create a `.env` file in your project root:
```env
PRIVATE_KEY=your_private_key_here
INK_SEPOLIA_URL=https://rpc-gel-sepolia.inkonchain.com/
BLOCKSCOUT_API_KEY=your_blockscout_api_key_here
```
Update your `hardhat.config.js`:
```javascript
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.19",
networks: {
inksepolia: {
url: process.env.INK_SEPOLIA_URL || "",
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
},
},
etherscan: {
apiKey: {
inksepolia: process.env.BLOCKSCOUT_API_KEY,
},
customChains: [
{
network: "inksepolia",
chainId: 763373,
urls: {
apiURL: "https://explorer-sepolia.inkonchain.com/api",
browserURL: "https://explorer-sepolia.inkonchain.com/",
},
},
],
},
};
```
## Building and Testing
1. Compile your contracts:
```bash
npx hardhat compile
```
2. Create a test file in `test/InkContract.js`:
```javascript
const { expect } = require("chai");
describe("InkContract", function () {
it("Should return the correct greeting", async function () {
const InkContract = await ethers.getContractFactory("InkContract");
const contract = await InkContract.deploy();
await contract.deployed();
expect(await contract.greeting()).to.equal("Hello, Ink!");
});
});
```
3. Run the tests:
```bash
npx hardhat test
```
## Deployment
Create a deployment script in `scripts/deploy.js`:
```javascript
async function main() {
const InkContract = await ethers.getContractFactory("InkContract");
const contract = await InkContract.deploy();
await contract.deployed();
console.log("InkContract deployed to:", contract.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
```
Deploy to Ink Sepolia testnet:
```bash
npx hardhat run scripts/deploy.js --network inksepolia
```
## Verifying Your Contract
After deployment, verify your contract:
```bash
npx hardhat verify --network inksepolia
```
## Interacting with Your Contract
You can use Hardhat Console to interact with your deployed contract:
```bash
npx hardhat console --network inksepolia
```
```javascript
const Contract = await ethers.getContractFactory("InkContract");
const contract = await Contract.attach("YOUR_CONTRACT_ADDRESS");
await contract.greeting();
await contract.setGreeting("New greeting!");
```
## Additional Tools
Hardhat comes with several built-in tools:
- Hardhat Network: Local Ethereum network for development
- Console: Interactive JavaScript environment
- Gas Reporter: Gas usage reporting
- Coverage: Code coverage for Solidity tests
To use the network for local development:
```bash
npx hardhat node
```
## Next Steps
- Explore [Hardhat Documentation](https://hardhat.org/docs) for more features
================================================
FILE: src/pages/build/tutorials/deploying-a-smart-contract/remix.mdx
================================================
import { Callout } from "nextra/components";
import { TestnetDisclaimer } from "@/components/TestnetDisclaimer";
# Deploying a Smart Contract with Remix
This guide will walk you through deploying a smart contract on Ink using Remix IDE, a popular browser-based development environment for Ethereum smart contracts.
## What is Remix?
Remix IDE is a powerful, open-source tool that helps you write, compile, deploy, and debug Solidity smart contracts. It's particularly useful for beginners as it requires no setup and runs directly in your browser.
## Accessing Remix
1. Open your web browser and navigate to [Remix IDE](https://remix.ethereum.org)
2. You'll see the default workspace with some example contracts
## Creating Your First Contract
1. In the File Explorer (left sidebar), create a new file by clicking the "+" icon
2. Name it `InkContract.sol` and add the following code:
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract InkContract {
string public greeting = "Hello, Ink!";
function setGreeting(string memory _greeting) public {
greeting = _greeting;
}
}
```

## Compiling Your Contract
1. Click on the `Solidity Compiler` tab in the left sidebar (icon looks like an "S")
2. Make sure the compiler version matches your pragma statement (0.8.19)
3. Click `Compile InkContract.sol`
4. Look for a green checkmark indicating successful compilation

## Connecting to Ink Network
1. On the left sidebar, click the `Deploy & run transactions` tab (represented by a deployment arrow icon ▶️)
2. In the `ENVIRONMENT` dropdown:
- If you see `Injected Provider`, select it
- If not visible, click `Customize this list...` in dropdown
- In the opened "Environment Explorer" window, under "Deploy using a Browser Extension" section, select `Injected Provider - [WALLET_NAME]`, where [WALLET_NAME] is your connected Web3 wallet (e.g., MetaMask, Rabby)
3. Configure your preferred Web3 wallet with Ink Sepolia network details:
- Network Name: Ink Sepolia
- RPC URL: https://rpc-gel-sepolia.inkonchain.com/
- Chain ID: 763373
- Currency Symbol: Ink
- Block Explorer URL: https://explorer-sepolia.inkonchain.com/
Most modern Web3 wallets will allow you to add custom networks through their settings. Look for options like `Add Network`, `Custom RPC`, or `Networks` in your wallet's interface.

## Deploying Your Contract
1. Before deploying, ensure:
- Your Web3 wallet is connected to Ink Sepolia network
- You have sufficient ETH for deployment
- Your wallet is connected to Remix IDE (accept the connection prompt if shown)
2. In the "Deploy & Run Transactions" tab:
- Select `InkContract` from the `CONTRACT` dropdown
- Click `Deploy`
- A popup from your wallet will appear - review and confirm the transaction
3. Once deployed, you'll see your contract appear under `Deployed Contracts` in the left lower corner of the window.

## Interacting with Your Contract
1. Under `Deployed Contracts`, expand your contract to see its functions
2. You can:
- Read the current greeting by clicking `greeting`
- Set a new greeting by:
- Typing a new message in the `setGreeting` input field
- Clicking `transact`
- Confirming the transaction in your wallet

## Verifying Your Contract
See also the respective [tutorial](/build/tutorials/verify-smart-contract).
1. Go to [Ink Blockscout](https://explorer-sepolia.inkonchain.com)
2. Find your contract by its address
3. Click `Verify & Publish`
4. Fill in the verification details:
- Choose `Solidity (Single file)`
- Select the same compiler version used in Remix
- Set optimization to 200 runs
- Paste your contract code
- Click `Verify & Publish`
Make sure to verify whether optimization is on or off in Remix Compiler's
Advanced Configuration as this can affect verification success.
## Tips and Best Practices
- Always test your contracts in Remix's JavaScript VM before deploying to testnet
- Use the Remix debugger to troubleshoot failed transactions
- Save your contract's address after deployment
- Keep your wallet secure and never share your private keys
## Useful Features in Remix
- **Debugger**: Helps you understand why transactions fail
- **Static Analysis**: Checks your code for common issues
- **Gas Estimation**: Shows approximate deployment costs
- **Console**: Displays transaction logs and debugging information
## Next Steps
- Explore [Remix Documentation](https://remix-ide.readthedocs.io/) for advanced features
- Learn about [Solidity](https://docs.soliditylang.org/) programming
================================================
FILE: src/pages/build/tutorials/deploying-a-superchainerc20.mdx
================================================
import { Callout } from "nextra/components";
# Deploying a SuperchainERC20
The SuperchainERC20 standard is ready for production deployments. Please note
that the OP Stack interoperability upgrade, required for crosschain messaging,
is currently in active development.
Welcome to the SuperchainERC20 quickstart guide! In this guide, we'll cover how the token works and the deployment process using the SuperchainERC20 starter kit. Whether you're a seasoned developer or just starting out, this guide has got you covered.
## What is SuperchainERC20?
SuperchainERC20 provides a standardized token implementation enabling seamless token transfers across the Superchain.
SuperchainERC20 extends the standard ERC-20 token with cross-chain mint and burn capabilities, enabling seamless interoperability across the [Superchain interop cluster](https://docs.optimism.io/stack/interop/explainer#superchain-interop-cluster). This token standard implements the [ERC-7802](https://eips.ethereum.org/EIPS/eip-7802) interface to enable 1-block latency cross-chain mint/burn functionality.
## How does SuperchainERC20 work?
[SuperchainERC20](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/SuperchainERC20.sol) and [SuperchainTokenBridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/SuperchainTokenBridge.sol) work together to allow ERC-20 tokens to be transferred from one chain to the other.
SuperchainERC20 cross-chain transfers require two transactions:
1. **Initiate Transaction**: On the source chain, tokens are burned and a cross-chain message is emitted
2. **Execute Transaction**: The message is relayed to the destination chain, triggering token minting
This flow ensures tokens maintain consistent total supply across the entire Superchain ecosystem and eliminates the need for liquidity pools or wrapped tokens.
## Why SuperchainERC20 matters for users, token issuers, and apps on Ink
Superchain interop provides Ink with essential cross-chain capabilities that enhance the network's interoperability. When token issuers use SuperchainERC20 over a typical ERС-20 deployment it gives token issuers access to the broader Superchain network effects, ensuring your tokens can seamlessly be used by apps and users across the Superchain.
SuperchainERC20 deployment creates opportunities for:
- **Enhanced Liquidity**: Unified token representation across chains improves capital efficiency
- **Simplified Developer Experience**: Consistent API for projects building on Ink
- **Reduced Fragmentation**: Improved capital efficiency for DeFi applications across the Superchain ecosystem - one chain to rule them all
## 🚀 Deploying SuperchainERC20 - Quickstart
### Prerequisites
First, you'll need to install Foundry, as the project requires `anvil`. Follow the [Foundry installation guide](https://book.getfoundry.sh/getting-started/installation).
### Setup Steps
1. **Clone the repository**
```sh
git clone git@github.com:ethereum-optimism/superchainerc20-starter.git
cd superchainerc20-starter
```
2. **Install dependencies**
```sh
pnpm i
```
3. **Set up environment files**
```sh
pnpm init:env
```
4. **Start the development environment**
```sh
pnpm dev
```
5. **Update RPC URLs**
```sh
pnpm contracts:update:rpcs
```
6. **Configure deployment settings**
Create or update your deployment configuration file:
```toml
[deploy_config]
salt = "ethers phoenix"
chains = ["sepolia/ink"]
[token]
owner_address = "" # Your wallet address
name = "" # The name of your token
symbol = "" # Your token's symbol (e.g., "OPT")
decimals = 18 # Number of decimal places (18 is standard)
```
Save this to `packages/contracts/configs/deploy-config.toml`
7. **Set up your deployer private key**
```sh
echo 'DEPLOYER_PRIVATE_KEY=' > packages/contracts/.env
```
⚠️ Never share or commit your private key. Make sure your wallet has enough funds for deployment.
8. **Deploy your token**
```sh
pnpm contracts:deploy:token
```
## Security considerations
To ensure security, you must either design the deployer to allow only a specific trusted ERC-20 contract, such as SuperchainERC20, to be deployed through it, or call CREATE2 to deploy the contract directly from an EOA you control.
This precaution is critical because if an unauthorized ERC-20 contract is deployed at the same address on any Superchain network, it could allow malicious actors to mint unlimited tokens and bridge them to the network where the original ERC-20 contract resides.
For production deployments, ensure that:
1. Grant permissions to the `SuperchainTokenBridge`(address `0x4200000000000000000000000000000000000028`) to call `crosschainMint` and `crosschainBurn`.
2. Deploy the `SuperchainERC20` at the same address on every chain in the Superchain where you want your token to be available. If you do not deploy the contract to a specific destination chain, users will be unable to successfully move their tokens to that chain.
## What's Next?
SuperchainERC20 enables token issuers to seamlessly access Superchain network effects. By leveraging SuperchainERC20 and Superchain interop, developers can focus on building features rather than solving complex cross-chain challenges.
- Use Supersim, a local development tool, to [deploy a SuperchainERC20 or build an interop-enabled app](https://docs.optimism.io/app-developers/get-started)
- Learn more about the [technical architecture of Superchain interop](https://docs.optimism.io/stack/interop/explainer)
- Learn about how [other token standards can benefit from Superchain interop](https://docs.optimism.io/stack/interop/compatible-tokens)
================================================
FILE: src/pages/build/tutorials/shipping-on-the-superchain.mdx
================================================
# Shipping on the Superchain
You can use [Supersim](https://github.com/ethereum-optimism/supersim) to simulate the Superchain and develop apps that can be used across any chain!
Supersim enables builders to:
* Experiment with apps that can be accessed from any chain
* Create tokens with **SuperchainERC20**, a fungible token standard for tokens that can be used across the Superchain
* Simulate crosschain messaging
================================================
FILE: src/pages/build/tutorials/verify-smart-contract.mdx
================================================
import { Callout } from 'nextra/components'
## Verifying your Smart Contract
In order for your deployed smart contract(s) to be human-readable on block explorers like Blockscout they must be verified. Verification is highly recommended to increase trust in your code and dapp.
Smart contracts can be verified through the Blockscout UI or a [host of other methods](https://docs.blockscout.com/devs/verification).
## Verifying a Smart Contract using the Blockscout UI
Verification is available for both Solidity and Vyper contracts. **Currently, there are 7 different types of inputs you can use for verification using the Blockscout UI**.
👷🏻♂️ If preferred you can verify directly from your Hardhat or Foundry dev environment.
[Hardhat Verification Plugin](https://docs.blockscout.com/devs/verification/hardhat-verification-plugin)
[Foundry Verification](https://docs.blockscout.com/devs/verification/foundry-verification)
### Smart Contract Verification with Blockscout
1) Go to the [Verify contract](https://explorer-sepolia.inkonchain.com/contract-verification) page (Other -> Verify contract)

2) Enter the contract address you received during deployment. The dropdown will show you several available verification options. Select the one you would like to use and continue.

### Input Types
Choose the format that applies to your files:
- Solidity ([Flattened source code](/build/tutorials/verify-smart-contract#solidity-flattened-source-code))
- Solidity ([Standard JSON input](/build/tutorials/verify-smart-contract#solidity-standard-json-input))
- Solidity ([Sourcify](/build/tutorials/verify-smart-contract#via-sourcify-sources-and-metadata-json-file))
- Solidity ([Multi-part files](/build/tutorials/verify-smart-contract#solidity-multi-part-files))
- Vyper ([Contract](/build/tutorials/verify-smart-contract#vyper-contract))
- Vyper ([Multi-part files](/build/tutorials/verify-smart-contract#vyper-multi-part-files-and-standard-json-input))
- Vyper ([Standard JSON input](/build/tutorials/verify-smart-contract#vyper-multi-part-files-and-standard-json-input))
#### Solidity (Flattened source code)
This verification method is recommended only for single-file smart contracts without any imports. For verification of contracts containing more than 1 file, it's recommended to use different verification method.

1. **Contract Address**: The `0x` address supplied on contract creation (added above)
2. **Is Yul contract**: Select if the contract is coded in Yul for efficiency.
3. **Include Nightly Builds**: Select if you want to show nightly builds.
4. **Compiler**: derived from the first line in the contract `pragma solidity X.X.X`. Use the corresponding compiler version rather than the nightly build.
5. **EVM Version**: Select the correct EVM version if known, otherwise use default.
6. **Optimization Enabled**: If you enabled optimization during compilation, select and enter the run value. 200 is the Solidity Compiler default value. Only change if you changed this value while compiling.
7. **Enter the Solidity Contract Code**: Copy-paste the source code of your smart contract as is.
8. **Add Contract Libraries**: Enter the name and 0x address for any required libraries called in the .sol file. You can add multiple contracts with the "+" button.
9. Click the `Verify and Publish` button.
10. If all goes well, you will see a checkmark ✅ next to Code in the code tab, and an additional tab called `Read Contract`. The contract name will now appear in BlockScout with any transactions related to your contract.
#### Solidity (Standard JSON input)
More information on JSON input is available [here](https://docs.soliditylang.org/en/latest/using-the-compiler.html#input-description).
1. **Include nightly builds**. You can choose `Yes` or `No` depending on your compiler.
2. **Compiler**. Choose the compiler version used to compile your smart contract. If you selected yes for nightly builds, use the compiler version rather than the build.
3. **Standard Input JSON**. Upload your Standard Input JSON file. File should follow the Solidity [format](https://docs.soliditylang.org/en/latest/using-the-compiler.html#input-description) and all the sources must be in Literal Content format, not a URL.
Click the `Verify & publish` button and wait for the response.
#### Via Sourcify: Sources and metadata JSON file
See [Contract Verification via Sourcify](https://docs.blockscout.com/devs/verification/contracts-verification-via-sourcify) for details.
#### Solidity (Multi-part files)
See the above settings. You will upload all of the .sol or .yul files you used for your contract. This method requires at least 2 files - if you have a single file use the flattened source code method.
#### Vyper Contract
Contract Name: Name assigned to the contract.
1. **Compiler**: Select the compiler version used in the source code.
2. **EVM Version**: Select the correct EVM version if known, otherwise use default.
3. **Contract Code**: Copy and paste the contract code
4. Click the `Verify and Publish` button.
If all goes well, you will see a checkmark ✅ next to Code in the code tab, and an additional tab called `Read Contract`. The contract name will now appear in BlockScout with any transactions related to your contract.
#### Vyper Multi-part files and standard json input
See the information above.
### Troubleshooting
If you receive the dreaded `There was an error compiling your contract` message this means the bytecode doesn't match the supplied source code. Unfortunately, there are many reasons this may be the case. Here are a few things to try:
1) Double check the compiler version is correct.
Check all version digits - for example 0.5.1 is different from 0.5.10
2) Check that an extra space has not been added to the end of the contract. When pasting in, an extra space may be added. Delete this and attempt to recompile.
3) Copy, paste, and verify your source code in Remix. You may find some exceptions here.
Verification in a dev environment
The [Hardhat verification plugin](https://docs.blockscout.com/devs/verification/hardhat-verification-plugin) supports BlockScout. You can also choose to use the [Sourcify plugin](https://docs.blockscout.com/devs/verification/hardhat-verification-plugin/sourcify-plugin-for-hardhat) to verify with Sourcify from your hardhat environment. [Foundry supports blockscout verification with Forge](https://book.getfoundry.sh/reference/forge/forge-verify-contract).
###### Source
[Blockscout](https://docs.blockscout.com/devs/verification/blockscout-ui)
================================================
FILE: src/pages/build/tutorials.mdx
================================================
# Tutorials
Welcome to the tutorials section! Here you'll find step-by-step guides to help you build on Ink.
## Available Tutorials
* [Deploying a Smart Contract with Foundry](/build/tutorials/deploying-a-smart-contract/foundry)
* [Deploying a Smart Contract with Hardhat](/build/tutorials/deploying-a-smart-contract/hardhat)
* [Deploying a Smart Contract with Remix](/build/tutorials/deploying-a-smart-contract/remix)
* [Verifying a Smart Contract](/build/tutorials/verify-smart-contract)
* [Shipping a Superchain App](/build/tutorials/shipping-on-the-superchain)
* [Deploying a SuperchainERC20](/build/tutorials/deploying-a-superchainerc20)
================================================
FILE: src/pages/build/verify.mdx
================================================
---
title: Kraken Verify
description: Solidity contracts for Kraken Verify - EAS attestation utilities enabling access control for verified Kraken users through onchain attestations.
---
# Kraken Verify
Kraken Verify is a service that allows users to create an onchain attestation linking their wallet address to their verified Kraken account. This creates a trusted connection between a user's Kraken identity and their blockchain activity, enabling access to exclusive features across the Ink ecosystem.
Kraken Verify uses the [Ethereum Attestation Service (EAS)](https://attest.org/) on Ink to issue onchain attestations. These attestations only store the wallet address and verification confirmation - no personal information is published onchain. Gas fees are covered by Kraken, making verification free for users.
Users can verify one address at a time, with the ability to revoke and re-verify with a new address as needed. To prevent abuse, users can perform up to 20 verifications per year. These verifications are non-transferable and provide a secure way to access verified-only features.
## Installation
```bash
# Using npm
npm install @krakenfx/verify
# Using yarn
yarn add @krakenfx/verify
# Using pnpm
pnpm add @krakenfx/verify
```
## Setup
### Remappings
Generate remappings for Foundry:
```bash
forge remappings > remappings.txt
```
You might need to add this extra one manually if you're using pnpm:
```txt
@ethereum-attestation-service/=node_modules/.pnpm/@ethereum-attestation-service+eas-contracts@1.8.0/node_modules/@ethereum-attestation-service
```
### IDE Configuration
Update your IDE to support remappings. For VS Code:
```json
// .vscode/settings.json
{
"solidity.remappings": ["...=node_modules/..."]
}
```
## Usage
### Solidity
```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
import { KrakenVerifyAccessControl } from "@krakenfx/verify/src/abstracts/KrakenVerifyAccessControl.sol";
contract MyContract is KrakenVerifyAccessControl {
// Only users with valid Kraken Verify attestations can call this function
function verifiedUserFunction() external onlyVerified {
// Your implementation
}
}
```
### JavaScript / TypeScript Client
The package also provides a client for checking address verification status directly from JavaScript or TypeScript applications. This can be useful for frontend applications that need to verify user addresses before displaying certain features or content.
#### ESM / TypeScript
```typescript
// ES Modules / TypeScript
import { VerifyClient } from "@krakenfx/verify";
const verifyClient = new VerifyClient();
const yourAddress = "0x2193981f2d65149644C039c9071f2bE8b5938F0B";
// Check if an address is verified
const isVerified = await verifyClient.isAddressVerified(yourAddress);
console.log(`Result: ${isVerified ? "✅ Verified" : "❌ Not verified"}`);
```
#### CommonJS
```javascript
// CommonJS
const { VerifyClient } = require("@krakenfx/verify");
const verifyClient = new VerifyClient();
const yourAddress = "0x2193981f2d65149644C039c9071f2bE8b5938F0B";
// Check if an address is verified
async function checkVerification() {
const isVerified = await verifyClient.isAddressVerified(yourAddress);
console.log(`Result: ${isVerified ? "✅ Verified" : "❌ Not verified"}`);
}
checkVerification();
```
#### Configuration Options
You can customize the client by passing options to the constructor:
```typescript
const verifyClient = new VerifyClient({
rpcUrl: "https://your-rpc-endpoint.com", // Custom RPC URL
verbose: true, // Enable verbose logging
});
```
## What's Included
This package provides access control for verified Kraken users through EAS attestations:
- `KrakenVerifyAccessControl.sol`: Abstract contract with the `onlyVerified` modifier
- Supporting libraries and interfaces for attestation verification
- JavaScript/TypeScript client for checking address verification status
## Requirements
- Solidity 0.8.24
- Node.js 16+ (for client usage)
## License
MIT
================================================
FILE: src/pages/faq.mdx
================================================
import { URLS } from "@/utils/urls";
# Frequently Asked Questions
## Ink
### What makes Ink different?
Ink is an OP Stack Layer 2 launched with 1-second blocktimes. What sets us apart is our dedication to building a comprehensive DeFi ecosystem while staying true to our origins. Our mission is to simplify DeFi while bringing Kraken’s core principles—security, user experience, and privacy—onchain.
We embrace our cypherpunk roots by shipping rapidly and iteratively. Feedback from users, developers, and the broader onchain community is vital to us as we strive to create the ultimate platform for achieving individual financial sovereignty.
### What’s the difference between Ethereum and OP Stack chains?
OP Stack chains are designed to be EVM equivalent and introduces as few changes as possible to the Ethereum protocol.
For a full rundown on all differences please refer to [Optimism’s documentation](https://docs.optimism.io/stack/differences).
For convenience, a few notable points worth mentioning are:
- [Opcodes](https://docs.optimism.io/stack/differences#opcodes)
- [Bridging](https://docs.optimism.io/stack/differences#bridging)
- [Chain Finality](https://docs.optimism.io/stack/differences#chain-finality)
### How do I get started with developing on Ink?
Get started developing on Ink [here](/build/getting-started). We also have a full stack suite of [infra providers and tools](/tools/rpc) to help you ship.
### How to deploy a smart contract on Ink?
You can follow a tutorial from the Ink Docs here: https://docs.inkonchain.com/build/tutorials
### Where can I get funds to test Ink?
Check out our [faucets](/tools/faucets).
### Where can I find important contracts deployed on Ink?
For token contracts on Ink please refer to our [Ink Token Contracts](/useful-information/ink-token-contracts) page.
For L1, L2 and predeploy addresses, please see our [Contracts](/useful-information/contracts) page.
### Are there any native bridging options?
At the moment, Ink does not host its own bridging portal. Please review our recognized partner’s bridges here: https://inkonchain.com/dashboard
### Why are fees/bridging high?
Ink cannot control gas fees or platform fees which vary subject to chain congestion and platform discretion. Please feel free to DYOR and explore multiple options available at https://inkonchain.com/dashboard
Kraken also supports the Ink network with zero withdrawal fees. If you want to buy ETH and then send it to your wallet, this is another option.
### Is developing on and using Ink expensive?
Not at all! As an L2 built on the Optimism stack Ink benefits from extremely low fees. L2 users do pay an extra fee to settle L2 data on L1 (Ethereum mainnet). Please see [Fees](/build/transaction-fees) for more information.
### What can I deploy on Ink?
You can deploy anything! While we may be a DeFi chain, we encourage developers of all types to deploy. Check out our [tutorials](/build/tutorials) to get started.
### Why don’t you support XYZ dApp?
The Ink ecosystem is growing rapidly post launch! Every week new partner bridges, DEXes, Infra providers, and other dApps are onboarding with Ink. Keep an eye on our social accounts for announcements. We value your feedback and appreciate your loyalty to the community.
### Where can I learn more about OP Stack?
To learn more about OP Stack chains, please visit [Optimism’s documentation](https://docs.optimism.io/).
## Community
### Wen TGE?
There is no information to share at this moment regarding any token from Ink.
### Wen Airdrop
There is no information to share at this moment regarding any airdrop. There may have been social media posts from third party, crypto related accounts in X but please DYOR (Do Your Own Research) and consult with us in official channels to avoid misinformation and to maintain expectations of what to come.
Finally, if still unsuccessful, please open a ticket so we can investigate. Feel free to share their username so we can help better.
### How do I get access granted to Guild task?
Please complete the tasks as detailed. Expand the description section to see the full task list and instructions. Once done, click the re-check access button at the top so Guild.xyz can check again and update your status.
Also make sure to connect the right address to Guild and that you grant access to all connected networks in your wallet.
================================================
FILE: src/pages/general/_meta.json
================================================
{
"about": "About Ink",
"network-information": "Network Information",
"connect-wallet": "Connect Wallet",
"bridge": { "title": "Bridge", "href": "/tools/bridges" },
"faucet": { "title": "Faucet", "href": "/tools/faucets" },
"support": "Support"
}
================================================
FILE: src/pages/general/about.mdx
================================================
# About Ink
## What is Ink?
Ink is an Ethereum OP Stack layer 2 blockchain designed to be the house of DeFi for the Superchain; a powerful baselayer for deploying innovative DeFi protocols.
- **Sub-second block times**: 1s block times Day 1, sub-second blocks coming soon.
- **Smol Gas**: Ape more, pay less.
- **Security**: Sequencer-level security to protect users from malicious intents and exploits.
- **Interoperability**: A commitment to the seamless flow of capital across the Superchain and beyond.
- **Unleashed by Kraken**: Ink will leverage Kraken's security and crypto expertise to support builders and users alike as they move towards independent financial sovereignty.
- **Scaling Ethereum**: Ink is dedicated to scaling Ethereum with a powerful L2 that enhances performance and accessibility.
## Why use Ink?
Built on the Superchain and unleashed by Kraken, Ink will serve as a central point in your journey towards onchain financial sovereignty.
### Ink features:
- **Abstraction**: Ink integrates Kraken's infrastructure and enables users to enjoy a unified experience from converting fiat to the cutting edge of DeFi.
- **DeFi-first**: Ink aims to scale up DeFi's user base and evolve the quality and range of DeFi products.
- **UX**: Ink pursues a user experience that makes your onchain journey a breeze by leveraging aggregation, automation and abstraction. Check out our Ink Kit (archived) for historical reference.
- **Speed**: 1s block times on day one with subsecond block times coming soon.
- **Security**: Kraken's decade-long record of security and reliability will be reflected and pushed forward on Ink.
- **Support**: Builders can expect rich documentation, expert guidance, workshops, tailored onboarding, dedicated community channels and financial support to bring their ideas to life.
- **Low Fees**: Harnessing the scalability of Optimism and the security of Ethereum, gas fees on Ink are a fraction of mainnet.
- **Open Source, Scaling Ethereum**: At Ink, we build in the open, benefiting all.
- **EVM compatible**: Seamlessly deploy any Solidity contract written for Ethereum Mainnet or other L2s directly on Ink without modifications.
## What is Ink built on?
- Ink is a Layer 2 built on the [OP Stack](https://docs.optimism.io/stack/getting-started) and part of the Superchain. Aligning with the Optimism Superchain promotes interoperability and the seamless flow of funds from one chain to the next, allowing Ink to push the limits of DeFi.
================================================
FILE: src/pages/general/connect-wallet.mdx
================================================
import { Callout } from "nextra/components";
import CopyableCode from "@/components/CopyableCode";
import { AddNetworkButton } from "../../components/AddNetworkButton";
## Connect Wallet
## Kraken Wallet
Ink Mainnet is supported natively on Kraken Wallet. Don’t have it yet? Download it for [iOS](https://apps.apple.com/us/app/kraken-wallet-crypto-defi/id1626327149) or [Android](https://play.google.com/store/apps/details?id=com.kraken.superwallet&hl=en).
---
## Rainbow
Ink Mainnet is supported natively on Rainbow wallet. Don’t have it yet? Download it [here](https://rainbow.me/en/download)
---
## MetaMask
To manually add **Ink Mainnet** as a custom network, follow these steps:
1. Open your MetaMask browser extension.
2. Click the network selection dropdown at the top left of the extension.
3. Select the **"+ Add a custom network"** button at the bottom.
4. In the new window, click **"Add a network manually"** at the bottom of the list.
5. Enter the details provided in the dialog that appears.
| Field | Information |
| ------------------------------ | ------------------------------------------------------- |
| Network Name | Ink |
| RPC Endpoint (HTTPS) (primary) | |
| Chain ID | 57073 |
| Currency Symbol | ETH |
| Block Explorer | |
6. Click **"Save"**.
7. Ink Mainnet will now be available in the network selection dropdown.
---
_For a more detailed walkthrough, please refer to the [official MetaMask tutorial](https://support.metamask.io/networks-and-sidechains/managing-networks/how-to-add-a-custom-network-rpc/)._
================================================
FILE: src/pages/general/faucet.mdx
================================================
# Faucets
## TODO
================================================
FILE: src/pages/general/network-information.mdx
================================================
import CopyableCode from "@/components/CopyableCode";
# Network Information
## Mainnet
| Field | Information |
| -------------------------------- | -------------------------------------------------------- |
| Network Name | Ink |
| Description | Ink's public mainnet |
| RPC Endpoint (HTTPS) (primary) | |
| RPC Endpoint (WSS) (primary) | |
| RPC Endpoint (HTTPS) (secondary) | |
| RPC Endpoint (WSS) (secondary) | |
| Chain ID | 57073 |
| Currency Symbol | ETH |
| Block Explorer | |
---
## Testnet
| Field | Information |
| -------------------------------- | --------------------------------------------------------------- |
| Network Name | Ink Sepolia |
| Description | Ink's public testnet |
| RPC Endpoint (HTTPS) (primary) | |
| RPC Endpoint (WSS) (primary) | |
| RPC Endpoint (HTTPS) (secondary) | |
| RPC Endpoint (WSS) (secondary) | |
| Chain ID | 763373 |
| Currency Symbol | ETH |
| Block Explorer | |
Click [here](/tools/rpc) for a list of vendors offering private RPC endpoints.
================================================
FILE: src/pages/general/support/_meta.json
================================================
{
"troubleshooting": "Troubleshooting"
}
================================================
FILE: src/pages/general/support/troubleshooting.mdx
================================================
import { Callout } from "nextra/components";
import CopyableCode from "@/components/CopyableCode";
# Troubleshooting Guide
This guide covers common issues developers and users might encounter when working with Ink, along with their solutions.
## Transaction Issues
### Nonce Out of Sync
If you encounter JSON-RPC internal errors or transactions getting stuck, your wallet's nonce may be out of sync with the network. Here's how to fix it:
#### For MetaMask Users:
1. Enable custom nonce in MetaMask:
- Go to Settings > Advanced
- Enable "Customize transaction nonce"
2. Find your next valid nonce using either method A or B:
**Method A: Using Block Explorer**
- Go to (replace YOUR_ADDRESS with your address)
- Find your most recent transaction where you were the sender (FROM address)
- Click the transaction and then "View details"
- Find the nonce value and add 1 to it - this is your next valid nonce
**Method B: Using Command Line**
```bash
curl -s -X POST -H "Content-Type: application/json" --data '{
"jsonrpc":"2.0",
"method":"eth_getTransactionCount",
"params":["YOUR_ADDRESS", "latest"],
"id":1
}' https://rpc-gel.inkonchain.com | python3 -c "import sys, json; print(int(json.load(sys.stdin)['result'], 16))"
```
Replace `YOUR_ADDRESS` with your wallet address. The number returned is your next valid nonce.
3. Send a recovery transaction:
- Send a 0 ETH transaction to yourself
- When prompted for the nonce, use the exact number you got from either method above
- Increase the gas price slightly (tap + once in the Network Fee section)
- The transaction should go through
4. Future transactions should now use the correct nonce
The recovery transaction typically costs around $0.05 in gas fees.
## Getting Help
If you're still experiencing issues:
1. Check the [Network Status Page](https://status.inkonchain.com/) for any ongoing incidents
2. Submit a detailed bug report on our [GitHub](https://github.com/inkonchain/docs/issues)
================================================
FILE: src/pages/general/support.mdx
================================================
import { URLS } from "@/utils/urls";
# Support
At Ink, we're here to help everyone, builders and users alike.
Please don't hesitate to reach out to us via any of our channels listed below.
- [Telegram](https://t.me/inkonchain)
- [Twitter](https://x.com/inkonchain)
================================================
FILE: src/pages/index.mdx
================================================
import { Callout } from "nextra/components";
import { URLS } from "@/utils/urls";
# Welcome to the Ink Docs
Welcome to the documentation for Ink, Kraken's dedicated DeFi chain.
New to Ink? [Learn more about Ink](/general/about)
###### Get started with developing on Ink!
- [Get connected to Ink](/general/connect-wallet)
- [Get testnet funds](/tools/faucets) to send transactions and deploy contracts on Ink
- Check out the [tutorials](/build/tutorials) (WIP) to start building on Ink
Try out [InkGPT](https://chatgpt.com/g/g-ef8AAM6s4-inkkit-assistant)! Blaze
through the docs and get deployed in no time with our new AI assistant.
================================================
FILE: src/pages/ink-builder-program/_meta.json
================================================
{
"overview": "Overview",
"spark-program": "Spark Program",
"forge-program": "Forge Program",
"echo-program": "Echo Program",
"office-hours": "Office Hours"
}
================================================
FILE: src/pages/ink-builder-program/echo-program.mdx
================================================
# Echo Program
> **Retroactive Recognition for Ink's Early Builders**
> *Submissions Closed – March 4, 2026*
Echo was created as a one-time, retroactive initiative to recognize teams that shipped real product on Ink during its earliest phase.
Before formal grant programs were in place, teams were already deploying contracts, launching tools, and building usable infrastructure on the network. Echo was created to formally acknowledge those contributions.
## The Birth of Echo Program
Ecosystems don't appear overnight. They're built through shipping.
Echo was created to:
- Recognize projects that shipped and delivered on Ink before November 1, 2025
- Reward contributions that generated measurable ecosystem value
- Reconnect early builders with Ink's next phase
Echo was not about ideas, roadmaps, or community presence. It was about shipped work that moved the chain forward.
## Who Echo Recognized
Echo was designed for teams that:
- Shipped a live product, tool, or meaningful onchain integration on Ink before November 1, 2025
- Provided verifiable proof of shipping (contracts, repositories, releases, live links, usage metrics)
- Created measurable ecosystem value through product usage, transactions, adoption, or builder utility
**Out of scope:**
- Community-only contributions
- Advisory or support roles
- Moderation or marketing efforts
- Concept-stage ideas without a deployed product
- Commercial partnerships or paid service engagements
- Pure network coverage integrations without an Ink-native shipped product
## Program Status
Submissions closed on March 4, 2026.
Approved teams received:
- A one-time retroactive grant (Builder Points and USDC)
- Optional public recognition
- Access to private builder channels and early ecosystem initiatives
## How Echo Fits Into Ink's Builder Framework
Echo formally recognized early builders.
Ink's other builder tracks support ongoing development:
- **Spark** supports builders who are already shipping and pushing a live product toward meaningful usage.
- **Forge** backs teams with traction, strong product fundamentals, and a serious ambition to scale on Ink.
================================================
FILE: src/pages/ink-builder-program/forge-program.mdx
================================================
# Forge Program
The future isn't written. It's waiting to be inked.
## What is Forge?
Forge is Ink's flagship track for teams ready to scale real traction into real impact. Forge provides milestone-based funding, advisory support, and access to the broader ecosystem for builders shipping dApps, infrastructure, and the tools that expand what's possible on Ink. In select cases, we may also back exceptional founders with a clear path to breakout impact.
This is where traction turns into compounding growth.
## Why We Built Forge
Every serious builder hits a moment where the idea is real, the product is live, and users are showing up. The next phase isn't "can we build it," it's can we scale it and make it last.
Forge exists for that moment.
It's built for teams past the demo stage, ready to sharpen execution, expand distribution, and grow with intent, with Ink as the primary home.
We're selective so we can stay hands-on. If you're in Forge, you're not just getting funding, you're getting real support.
## Who Should Apply
Forge is a strong fit for teams with real momentum and a clear plan to scale on Ink.
You'll likely be a match if you have:
- A product that's live, or launching on mainnet imminently
- Meaningful traction, with clear usage signals (users, volume, TVL, integrations, or growth)
- A scoped 30–60 day plan with measurable outcomes
- A team that can execute independently, with strong ownership
- A credible plan to sustain delivery (runway, revenue strategy, or fundraising readiness)
- A clear reason why Ink is the best home for your next stage
In select cases, we may back exceptional founders with a clear vision and strong alignment with Ink, especially if we see breakout potential and a credible path to execution and impact.
If you're still exploring ideas or building your first MVP, **Spark** will be a better starting point.
## What You Receive
Forge is more than a grant. It's a scaling layer around your team.
**Support includes:**
- Milestone-based grants up to 200,000 USDC
- Strategic mentorship from Ink contributors and advisors
- Ink-native integrations and dev tooling support
- Official ecosystem spotlight and social amplification
- Warm intros to partners, collaborators, and investors
- Eligibility for follow-on investment via Kraken Ventures
## What We're Looking For
We select projects based on traction, product strength, execution maturity, ecosystem impact, and long-term durability.
### 1) Traction
We look for strong signals that real users want what you've built, such as:
- Active users or repeat usage
- Onchain transactions or volume
- TVL or assets under management
- Protocol/tooling integrations
- Sustained growth tied to product activity
We may also selectively support standout founders (e.g., viral project creators or exceptional alumni from top builder ecosystems) if we believe they can rapidly scale into high-impact Ink-native products.
### 2) Ecosystem Impact
We prioritize projects that materially push Ink forward through:
- Liquidity, volume, or capital efficiency
- User adoption and retention
- Infrastructure other teams depend on
- Developer tooling leverage or ecosystem distribution
### 3) Execution Readiness
Forge is designed for teams that can ship reliably, operate independently, and build to last.
We'll look for:
- Strong product/engineering track record
- Clear ownership and decision-making
- Ability to deliver without heavy incubation
- Financial readiness: a credible runway plan, and the ability to secure ongoing resources (revenue or fundraising) as the market evolves
> Strong signals include prior fundraising experience, warm investor relationships, or a clear path to extending runway as the market evolves.
### 4) Milestone Clarity
Forge grants are milestone-based, so your roadmap matters.
We look for:
- A 30–60 day plan
- Deliverables tied to outcomes (usage, adoption, integrations, liquidity)
- A realistic scope and timeline
## What You Can Build
Forge supports projects that make Ink more powerful, useful, and scalable.
Common categories include:
- DeFi protocols & liquidity infrastructure
- Developer tooling, infra, SDKs, APIs
- Wallet UX, onboarding improvements, account abstraction
- Consumer + social apps
- Games, prediction markets, coordination networks
- Public goods + open-source primitives
If it materially improves Ink's ecosystem, it belongs here.
## How the Forge Review Works
**Step 1: Apply (Biweekly Review)**
Apply anytime. The Ink Foundation team reviews applications in **biweekly batches**.
You can expect a feedback email within **~14 days** of submitting a complete application.
**Step 2: Interview + Deep Review**
If shortlisted, we'll invite your team to an interview to validate fit and readiness across:
- Product and traction
- Team structure and execution ability
- Ecosystem alignment
- Long-term goals
**Step 3: Milestone Planning + Grant Approval**
If you pass the interview round, we'll work together to finalize:
- Grant size and milestone structure
- Roadmap checkpoints and success metrics
- Integration needs and ecosystem support
- Co-marketing opportunities (when relevant)
Once milestones are agreed, we issue final approval and funding is released in stages based on delivery.
## Apply to Forge
Ready to scale something real on Ink?
**Apply here:** https://forms.inkonchain.com/forge-builder-program
================================================
FILE: src/pages/ink-builder-program/office-hours.mdx
================================================
# Office Hours
Ink Office Hours are short, focused 15-minute sessions for teams already building on Ink (or actively preparing to deploy).
Bring one clear question, leave with clear next steps.
> We prioritize requests that come with real context: a demo, repo, contract, logs, or a concrete integration plan.
## **What Office Hours Are For**
### **1. Integration + Deployment Blockers**
Use Office Hours when you're stuck and need help unblocking shipping.
- Contract/API/RPC issues
- Debugging errors, failed calls, unexpected behavior
- Deployment/config problems, infra wiring, integration friction
### **2. Architecture Review (for something you've already built)**
Use Office Hours to sanity-check technical direction and avoid expensive mistakes.
- Architecture validation for an existing MVP
- Integration approach review (how to connect to Ink-native infra)
- Security and production readiness checks (lightweight, not a full audit)
### **3. Product Feedback (for established products)**
Use Office Hours if you have a real product and want fast, practical feedback.
- UX/onboarding improvements
- MVP refinement and feature prioritization
- Activation/retention feedback based on your current users
- "What should we ship next?" based on your product today
### **4. Launch Readiness on Ink**
Use Office Hours when you're serious about deploying/expanding to Ink and want to pressure-test the plan.
- What you need to launch cleanly
- Dependencies, integration checklist, rollout sequencing
- Clear next steps to get to mainnet
## **What Office Hours Are Not For**
To keep sessions high-signal, we don't use Office Hours for:
- Grant status updates, decisions, or rejection discussions
- Token topics (tokenomics, listings, incentives negotiation)
- Legal or compliance advice for your project
- Fundraising requests or VC introductions.
## **How Requests Are Handled**
1. **Submit a request here: [Request Office Hours](https://tally.so/r/lbRVDW)**
> **Note:** Office hour **sessions are only 15 minutes**, please come prepared. If the request is too broad or has no context, we won't be able to accept it.
1. **We triage within ~72 hours**
2. **If it's a fit, you get a scheduling link** (15-min session)
3. **If not, you still get a reply** with the right next step/resources
================================================
FILE: src/pages/ink-builder-program/overview.mdx
================================================
# Ink Builder Program
The Ink Builder Program supports teams building on Ink with funding, guidance, and recognition across three tracks.
**Spark:** Microgrants for builders shipping tangible progress. Spark backs small, high-signal projects like tools, bots, mini dApps, and experiments that can deliver measurable value on Ink. It is also a path for teams that are promising but not yet at Forge's traction bar to prove impact and level up. Grants range from 500–5,000 USDC, with a lightweight application and fast review.
**Forge:** Our flagship track for teams scaling real products. Forge is built for projects with **live traction** and a clear plan to grow on Ink. Support includes **milestone-based grants up to 200,000 USDC**, hands-on ecosystem support, and exposure through Ink's channels. In select cases, we may back exceptional founders who are strongly aligned with Ink and have a credible path to breakout impact, but traction remains the primary bar.
**Echo:** A one-time retroactive track to recognize early projects that shipped on Ink **before November 1, 2025**. Echo rewards verifiable, shipped contributions with a one-time grant and public recognition.
================================================
FILE: src/pages/ink-builder-program/spark-program.mdx
================================================
# Spark Program
*Every big idea starts with a spark.*
## What Is Spark?
Spark is Ink's microgrant track for builders shipping small, high-signal work that creates measurable value for the ecosystem.
It's built for tools, bots, mini dApps, public goods, and experimental products that can prove real usage, unlock onchain activity, or make building on Ink easier. Spark is also the right lane for promising teams that are not yet at Forge's traction bar, but can prove impact with a smaller push.
No pitch decks. Low lift application. Fast decisions.
This is where projects earn their first traction on Ink.
## Why We Built Spark
Healthy ecosystems are built by a lot of small, useful things that compound.
Spark exists to:
- Reduce friction for builders who are ready to ship, not just talk
- Buy velocity for projects that can quickly produce proof (usage, integrations, onchain activity)
- Seed high-potential teams that need a smaller milestone to qualify for deeper support later
- Encourage ecosystem primitives and public goods that increase builder throughput
Spark is not "fund anything." It is "fund what can ship value and show signal."
## Who Should Apply
Spark is a strong fit if you are:
- An indie builder or small team shipping a real product or feature
- A team building something useful for other builders or users on Ink
- A project that can show a credible plan for measurable impact, even if early
- A team that may have aimed for Forge but needs to prove traction first
Spark is not a fit for deck-first ideas, marketing-only teams, or projects that cannot define what value they create for Ink and how it will be measured.
## What You Can Build
Spark supports lightweight projects that increase usage, liquidity, or builder leverage, including:
- Developer tools, SDKs, contract tooling, deployment helpers
- Bots and mini apps that drive repeat onchain actions
- Onchain UX improvements, onboarding helpers, account abstraction components
- Analytics dashboards that help users act (not just view), especially if linked to conversion
- Public goods and open-source primitives other teams can reuse
- Consumer experiments with clear retention loops and measurable usage
## How It Works
### 1) Submit
Builders share a short application with:
- What they're building and why it matters for Ink
- Proof of build (demo, repo, screenshots, Loom, contracts, etc.)
- What they want to ship or improve with a $500–$5K microgrant
- Any traction signals (even small) and distribution plan (if relevant)
### 2) Review (Scorecard-Based)
We evaluate every submission on five criteria:
- **Proof of Build**
Has real work already started, code/UI/prototype/demo, visible effort.
- **Ecosystem Usefulness**
Does it make Ink more usable, more visible, or more fun, and does it help users or other builders.
- **Feasibility for Microgrant**
Can $500–$5K meaningfully move it forward, with a clear and realistic scope.
- **Builder Credibility**
Can the builder ship, communicate clearly, and respond reliably.
- **Creative + Value Spark**
Is it novel, memeable, surprising, or culturally sticky, while still creating real value.
### 3) Decision + Grant
Outcomes:
- **Approved** (grant size confirmed)
- **Revise & resubmit** (scope or proof needs tightening)
- **Not a fit** (doesn't match Spark goals)
## What You Receive
### Microgrants
- **500–5,000 USDC** per project
- Non-dilutive, simple terms
- Typically paid after approval and confirmation of a working build/demo (timing depends on program operations and compliance)
### Visibility and Ecosystem Support
Standout Spark projects may receive:
- Social amplification and ecosystem highlights
- Introductions to relevant ecosystem teams and partners
- A clear path to "level up" into deeper support when traction is proven
## Spark Success Looks Like
Within the next phase, the project delivers:
- A live deployment or usable feature on Ink
- A measurable impact signal, such as:
- real users or repeat usage
- meaningful onchain activity (transactions, volume)
- adoption by other builders (integrations, reuse, tooling usage)
- clear improvements to conversion or usability
If a project cannot explain the value it creates for Ink and how that value will be measured, it is not a fit.
## How To Join Spark
- Submit your project → [Spark Application Form](https://forms.inkonchain.com/spark-builder-program)
- Get reviewed → The team reviews applications in batches and follows up with results
- Ship and prove → Spark is designed to reward builders who deliver measurable value, not just announcements
================================================
FILE: src/pages/status.mdx
================================================
import { useEffect } from 'react'
import { useRouter } from 'next/router'
export default function StatusPage() {
useEffect(() => {
// Open in new tab and redirect current page back to previous page
window.open('https://status.inkonchain.com/', '_blank')
window.history.back()
}, [])
return (
Opening Status Page in new tab...
)
}
================================================
FILE: src/pages/tools/_meta.json
================================================
{
"account-abstraction": "Account Abstraction",
"block-explorers": "Block Explorers",
"bridges": "Bridges",
"crosschain": "Crosschain",
"faucets": "Faucets",
"indexers": "Indexers",
"multisig": "Multisig",
"oracles": "Oracles",
"rpc": "RPC",
"security": "Security",
"vrf": "VRF"
}
================================================
FILE: src/pages/tools/account-abstraction.mdx
================================================
# Account Abstraction
## Alchemy
Leverage Alchemy's best in class account abstraction stack, [Account Kit](https://www.alchemy.com/account-kit) which lets you build embedded wallets powered by smart accounts.
**Supported Networks**:
* Ink Mainnet
* Ink Sepolia
## Safe
Access Safe’s full suite of tooling including modular smart account infrastructure and account abstraction SDK.
**Supported Networks**:
* [Ink Mainnet](https://app.safe.global/new-safe/create?chain=ink)
* [Ink Sepolia](https://safe.optimism.io/welcome/accounts?chain=ink-sepolia)
## ZeroDev
ZeroDev is a chain abstracted smart account for building user-friendly Web3 experiences. Leveraging ERC-4337, it offers you the ability to enable flexible authentication, sponsor gas and bundle transactions for users. Check out ZeroDevs [docs](https://docs.zerodev.app/) to learn more.
**Supported Networks**:
* Ink Mainnet
* Ink Sepolia
================================================
FILE: src/pages/tools/block-explorers.mdx
================================================
# Block Explorer
## Blockscout
Blockscout is a universal block explorer providing detailed chain information and tools for debugging smart contracts and transactions. Visit the [Blockscout Docs](https://docs.blockscout.com/) for details.
**Supported Networks**
* [Ink Mainnet](https://explorer.inkonchain.com/)
* [Ink Sepolia](https://explorer-sepolia.inkonchain.com/)
## OKX Explorer
OKX Explorer offers streamlined onchain data access, advanced tools, and unified bridge insights across integrated chains for developers.
**Supported Networks**
* [Ink Mainnet](https://web3.okx.com/explorer/inkchain)
## Routescan
The world’s first multichain explorer provides seamless access to +100 chains, offering a 48h Explorer setup with Full History APIs, Enhanced Charts, and powerful developer tools.
**Supported Networks**
* [Ink Mainnet](https://57073.routescan.io/)
* [Ink Sepolia](https://sepolia.inkonscan.xyz/)
## Tenderly
Tenderly's [Developer Explorer](https://docs.tenderly.co/developer-explorer?mtm_campaign=ext-docs&mtm_kwd=ink) is a multi-chain explorer offering view of your smart contract transactions, events, and logs.
Rely on Explorer's integrated [Debugger](https://docs.tenderly.co/debugger?mtm_campaign=ext-docs&mtm_kwd=ink) and [Simulator UI](https://docs.tenderly.co/simulator-ui/using-simulation-ui?mtm_campaign=ext-docs&mtm_kwd=ink) to spot and solve issues in transactions and contracts. Set up critical [alerts](https://docs.tenderly.co/alerts/intro-to-alertsmtm_campaign=ext-docs&mtm_kwd=ink) on contracts to proactively respond to issues and improve security practices.
================================================
FILE: src/pages/tools/bridges.mdx
================================================
import { Callout } from "nextra/components";
# Bridges
Use the below bridges at your own risk. Always DYOR!
Transaction times vary based on network congestion and gas fees. Please ensure
you have enough ETH in your wallet to cover transaction fees.
## Across
Using a network of solvers, Across allows users to seamlessly bridge from L1 to L2 and back without the 7 day waiting period.
**Supported Networks**
- [Ink Mainnet](https://app.across.to/bridge?)
## Brid.gg
Brid.gg enables you to bridge assets from L1 to L2 across the Superchain.
**Supported Networks**
- [Ink Mainnet](https://brid.gg/ink)
- [Ink Sepolia](https://testnet.brid.gg/ink-sepolia)
## Bungee
Bungee aggregates multiple bridges and DEXs to find the most cost-effective routes for swapping across chains.
**Supported Networks**
- [Ink Mainnet](https://bungee.exchange)
## Gelato
Gelato's user friendly bridge UI allows users to bridge to Ink quickly and easily.
**Supported Networks**
- [Ink Mainnet](https://bridge.gelato.network/bridge/ink)
- [Ink Sepolia](https://testnet-bridge.gelato.network/bridge/ink-sepolia)
## Rhino.fi
Rhino.fi is a lightning fast secure bridge for seamless cross chain transactions.
**Supported Networks**
- [Ink Mainnet](https://app.rhino.fi/bridge?chain=ETHEREUM&token=ETH&chainOut=INK)
## Reservoir
Reservoir facilitates gas minimized fast bridging through their cross chain relayer network. Check out their [Instant Bridging](https://docs.reservoir.tools/docs/instant-bridging) solution to integrate into your application.
## Superbridge
Superbridge provides a seamless bridging allowing users to choose the route which best suits their bridging needs.
**Supported Networks**
- [Ink Mainnet](https://superbridge.app/)
- [Ink Sepolia](https://testnets.superbridge.app/)
## Ink's Sepolia Bridge
**Supported Networks**
- [Ink Sepolia](https://inkonchain.com/bridge)
================================================
FILE: src/pages/tools/crosschain.mdx
================================================
# Crosschain Infrastructure
## [LayerZero](https://docs.layerzero.network/v2/home/getting-started/what-is-layerzero)
**Supported Networks**
* Ink Mainnet
* Ink Sepolia
## [Wormhole](https://wormhole.com/docs/)
**Supported Networks**
* Ink Mainnet (coming soon)
* Ink Sepolia
================================================
FILE: src/pages/tools/faucets.mdx
================================================
import { FaucetsContentWrapper } from '@/components/FaucetsContentWrapper'
================================================
FILE: src/pages/tools/indexers.mdx
================================================
# Indexers
## [Goldsky](https://docs.goldsky.com/chains/ink)
Goldsky is a high-performance data indexing provider for Ink that makes it easy to extract, transform, and load on-chain data to power both application and analytics use cases. Goldsky offers two primary approaches to indexing and accessing blockchain data: Subgraphs (high-performance subgraphs) and Mirror (real-time data replication pipelines).
**Supported Networks**
* Ink Mainnet
* Ink Sepolia
## [Alchemy](https://www.alchemy.com/subgraphs)
Alchemy provides high performance data indexing and subgraphs for Ink alongside a full stack suite of tools to help you build.
**Supported Networks**
* Ink Mainnet
================================================
FILE: src/pages/tools/multisig.mdx
================================================
import { MultisigContentWrapper } from '@/components/MultisigContentWrapper'
================================================
FILE: src/pages/tools/oracles.mdx
================================================
import CopyableCode from "@/components/CopyableCode";
# Oracles
## API3
API3 offers 190+ price feeds for Ink on the [API3 Market](https://market.api3.org/ink). All API3's price feeds are integrated with OEV Network to recapture protocol MEV due to oracle updates. See this [guide](https://docs.api3.org/dapps/) to learn how to integrate API3's data feeds.
| Network | Contract Address |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ink Mainnet | |
| Network | Contract Address |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ink Sepolia | |
## Chainlink
**Coming Soon**
## eOracle
eOracle provides decentralized price feeds through a cryptoeconomically secure oracle network, backed by staked ETH and a globally distributed network of validators.
| Network | Feed | Contract Address | Decimals |
| ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Ink Mainnet | BTC/USD | | 8 |
| Ink Mainnet | ETH/USD | | 8 |
| Ink Mainnet | USDC/USD | | 8 |
| Ink Mainnet | USDT/USD | | 8 |
| Network | Feed | Contract Address | Decimals |
| ----------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Ink Sepolia | BTC/USD | | 8 |
| Ink Sepolia | ETH/USD | | 8 |
| Ink Sepolia | USDC/USD | | 8 |
| Ink Sepolia | USDT/USD | | 8 |
## Pyth
Pyth offers 250+ price feeds for Ink.
See their [guide](https://docs.pyth.network/price-feeds/getting-started) to learn how to use Pyth feeds.
| Network | Contract Address |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ink Mainnet | |
| Network | Contract Address |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ink Sepolia | |
## Redstone
Redstone provides both pull and push price feeds for Ink. See [this](https://docs.redstone.finance/docs/get-started/supported-chains/) guide to learn how to use Redstone feeds.
| Network | Feed | Contract Address |
| ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ink Mainnet | BTC/USD | |
| Ink Mainnet | ETH/USD | |
| Ink Mainnet | USDT/USD | |
| Ink Mainnet | USDC/USD | |
| Ink Mainnet | SOL/USD | |
| Network | Feed | Contract Address |
| ----------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ink Sepolia | BTC/USD | |
| Ink Sepolia | ETH/USD | |
| Ink Sepolia | USDT/USD | |
| Ink Sepolia | USDC/USD | |
| Ink Sepolia | SOL/USD | |
### SEDA
SEDA provides custom feeds for Ink. See their [guide](https://docs.seda.xyz/home/for-developers/building-an-oracle-program) to build data feeds with SEDA. Mainnet support coming soon.
| Network | Contract Name | Contract Address |
| ----------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ink Sepolia | SEDA prover | |
================================================
FILE: src/pages/tools/rpc.mdx
================================================
import { Callout } from "nextra/components";
import CopyableCode from "@/components/CopyableCode";
# RPC
## [Alchemy](https://www.alchemy.com/)
Alchemy provides fast and reliable private RPC endpoints alongside a full suite of tools to help support your development needs.
**Supported Networks**
- Ink Mainnet
- Ink Sepolia
## [Gelato](https://gelato.network)
Gelato provides public and private RPC endpoints for Ink, along with websocket support.
**Supported Networks**
- Ink Mainnet
- Ink Sepolia
## [QuickNode](https://www.quicknode.com)
QuickNode provides public and private RPC endpoints for Ink, along with websocket support and a suite of tools to help you ship.
**Supported Networks**
- Ink Mainnet
- Ink Sepolia
Need a managed node solution?
[QuickNode](https://www.quicknode.com/chains/ink) offers Ink nodes with APIs,
tools, and an easy-to-use control panel.
## [Tenderly](https://tenderly.co)
Tenderly provides robust RPC infrastructure with advanced debugging capabilities and comprehensive monitoring tools.
**Supported Networks**
- Ink Mainnet
- Ink Sepolia
Looking for advanced debugging tools?
[Tenderly](https://tenderly.co/transaction-previews?mtm_campaign=ext-docs&mtm_kwd=ink) provides detailed transaction
insights and monitoring capabilities for Ink.
## [dRPC](https://drpc.org)
dRPC provides enterprise-level RPC infrastructure with globally distributed nodes, decentralized architecture and focus on privacy.
**Supported Networks**
- Ink Mainnet
- Ink Sepolia
Searching for reliable RPC infrastructure?
[dRPC](https://drpc.org/chainlist/ink) works seamlessly with Ink and all Superchain networks.
# Public Endpoints
To connect to Ink Sepolia or Ink Mainnet, you can select from multiple RPC providers, each offering reliable infrastructure with unique features and capabilities.
Interested in running your own node? Check out [our
tutorial](https://github.com/inkonchain/node).
### 1. Gelato
Gelato provides high-performance, globally distributed RPC endpoints with automatic failover.
#### Ink Mainnet
- HTTPS:
- Websocket:
#### Ink Sepolia
- HTTPS:
- Websocket:
---
### 2. Tenderly
Tenderly provides robust RPC endpoints with detailed transaction debugging capabilities.
#### Ink Mainnet
- HTTPS:
- Websocket:
#### Ink Sepolia
- HTTPS:
- Websocket:
### 3. QuickNode
QuickNode provides public and private RPC endpoints for Ink, along with websocket support and a suite of tools to help you ship.
#### Ink Mainnet
- HTTPS:
- Websocket:
#### Ink Sepolia
- HTTPS:
- Websocket:
### 4. dRPC
dRPC provides globally distributed nodes for public and premium Ink RPC endpoints, including websocket support.
#### Ink Mainnet
- HTTPS:
- Websocket:
#### Ink Sepolia
- HTTPS:
- Websocket:
================================================
FILE: src/pages/tools/security.mdx
================================================
# Security
## Hypernative
[Hypernative](https://www.hypernative.io/) enhances security for developers building on Ink by providing real-time threat prevention, ecosystem-wide monitoring, and risk management tools. With advanced machine learning and detection models, Hypernative helps identify and mitigate risks across smart contracts, bridges, wallets, and more—giving developers the confidence to build securely. **All projects building on Ink** gain access to [Hypernative's platform](https://www.hypernative.io/solutions/protocols) for security flows, incident response, and risk analysis, ensuring resilience and reducing vulnerabilities.
**Supported Networks**
* Ink Mainnet
* Ink Sepolia
## Tenderly
[Tenderly](https://www.tenderly.co/) offers security tools to help developers build and maintain secure dapps and smart contracts.
* Configure [Tenderly Alerts](https://docs.tenderly.co/alerts/intro-to-alerts?mtm_campaign=ext-docs&mtm_kwd=ink) for notifications on transactions and contract events. Use [Alerts API](https://docs.tenderly.co/alerts/api) to set up custom alerts with highly granular triggering criteria.
* Use [Web3 Actions](https://docs.tenderly.co/web3-actions/intro-to-web3-actions?mtm_campaign=ext-docs&mtm_kwd=ink) to automate predefined responses, improving security and user experience.
* Leverage [Simulation RPC](https://docs.tenderly.co/simulations/single-simulations#simulate-via-rpc?mtm_campaign=ext-docs&mtm_kwd=ink) to predict transaction outcomes such as asset changes, precise gas usage, and emitted events.
**Supported Networks**
* Ink Mainnet
* Ink Sepolia
================================================
FILE: src/pages/tools/vrf.mdx
================================================
# VRF
## Gelato
[Gelato VRF](https://docs.gelato.network/web3-services/vrf/understanding-vrf) offers real randomness for blockchain applications by leveraging [Drand](https://drand.love/), a trusted decentralized source of random numbers. Get started [here](https://www.youtube.com/watch?v=2OzH8f3_Q9s)!
**Supported Networks**
* Ink Mainnet
* Ink Sepolia
================================================
FILE: src/pages/useful-information/_meta.json
================================================
{
"contracts": "Contracts",
"ink-contracts": "Ink Contracts",
"ink-token-contracts": {
"title": "Ink Token Contracts",
"display": "hidden"
},
"the-superchain": "The Superchain"
}
================================================
FILE: src/pages/useful-information/contracts.mdx
================================================
import { Callout } from "nextra/components";
import CopyableCode from "@/components/CopyableCode";
# Ink Contract Addresses
### Ink L2 Contract Addresses
#### Ink Mainnet
| Contract Name | Contract Address |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| BaseFeeVault | |
| EAS | |
| ERC5564Announcer | |
| ERC6538Registry | |
| GasPriceOracle | |
| L1FeeVault | |
| L2CrossDomainMessenger | |
| L2ERC721Bridge | |
| L2StandardBridge | |
| L2ToL1MessagePasser | |
| OptimismMintableERC20Factory | |
| OptimismMintableERC721Factory | |
| ProxyAdmin | |
| SchemaRegistry | |
| SequencerFeeVault | |
| SuperchainERC20Bridge | |
| WETH9 | |
These addresses are predeterministic and the same on Ink Sepolia- see
[documentation](https://specs.optimism.io/protocol/predeploys.html).
### L1 Contract Addresses
#### Ethereum Mainnet
| Contract Name | Contract Address |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AddressManager | |
| AnchorStateRegistry | |
| DelayedWETHPermissionedGame | |
| DisputeGameFactory | |
| ERC5564Announcer | |
| ERC6538Registry | |
| L1CrossDomainMessenger | |
| L1ERC721Bridge | |
| L1StandardBridge | |
| OptimismMintableERC20Factory | |
| OptimismPortal | |
| ProxyAdmin | |
| SystemConfig | |
#### Sepolia
| Contract Name | Contract Address |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AddressManager | |
| AnchorStateRegistry | |
| DelayedWETHPermissionedGame | |
| DisputeGameFactory | |
| ERC5564Announcer | |
| ERC6538Registry | |
| L1CrossDomainMessenger | |
| L1ERC721Bridge | |
| L1StandardBridge | |
| OptimismMintableERC20Factory | |
| OptimismPortal | |
| ProxyAdmin | |
| SystemConfig | |
### Pre Installs
#### Ink Mainnet
| Contract Name | Contract Address |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Arachnid's Deterministic Deployment Proxy | |
| Create2Deployer | |
| CreateX | |
| ERC-4337 v0.6.0 EntryPoint | |
| ERC-4337 v0.6.0 SenderCreator | |
| ERC-4337 v0.7.0 EntryPoint | |
| ERC-4337 v0.7.0 SenderCreator | |
| Multicall3 | |
| MultiSend | |
| MultiSendCallOnly | |
| Permit2 | |
| Safe | |
| SafeL2 | |
| SafeSingletonFactory | |
For more information on these preinstalls, take a look at the [Optimism Specs](https://specs.optimism.io/protocol/preinstalls.html).
#### Ink Sepolia
| Contract Name | Contract Address |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Arachnid's Deterministic Deployment Proxy | |
| Create2Deployer | |
| CreateX | |
| ERC-4337 v0.6.0 EntryPoint | |
| ERC-4337 v0.6.0 SenderCreator | |
| ERC-4337 v0.7.0 EntryPoint | |
| ERC-4337 v0.7.0 SenderCreator | |
| Multicall3 | |
| MultiSend | |
| MultiSendCallOnly | |
| Permit2 | |
| Safe | |
| SafeL2 | |
| SafeSingletonFactory | |
## Contract Deployments - Instructions for Developers
###### Contract Verification
Please see [how to verify contracts](/build/tutorials/verify-smart-contract).
================================================
FILE: src/pages/useful-information/ink-contracts.mdx
================================================
import { Callout } from "nextra/components";
import CopyableCode from "@/components/CopyableCode";
# Ink Contracts
This page is a work in progress. If there are missing tokens, please feel free
to edit this page by submitting a PR to our
[Github](https://github.com/inkonchain).
| Name | Contract Address |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CRV | |
| crvUSD | |
| FPI | |
| frxETH | |
| frxUSD | |
| FXS | |
| sfrxETH | |
| sfrxUSD | |
| USDC.e | |
| USDT0 | |
| WETH9 | |
================================================
FILE: src/pages/useful-information/ink-token-contracts.mdx
================================================
import { useEffect } from 'react'
import { useRouter } from 'next/router'
export default function Redirect() {
const router = useRouter()
useEffect(() => {
router.replace('/useful-information/ink-contracts')
}, [])
return null
}
================================================
FILE: src/pages/useful-information/the-superchain.mdx
================================================
import { Callout } from "nextra/components";
# The Superchain
## What is the Superchain?
- The Optimism [Superchain](https://docs.optimism.io/stack/explainer#superchain-overview) is a network that enables shared bridging, decentralized governance, upgrades, a communication layer and more between standardized chains.
- The Superchain is based on a vision of an internet that no longer requires trusted entities who have and will continue abusing that trust. However, this vision of a decentralized web requires a level of scalability that is not yet widely available.
- The Superchain's mission is to achieve revolutionary scalability for blockchains.
The Superchain puts forward a new architecture for multi-chain ecosystems.
- New chains, when introduced, frequently have divergent security models and significant expenses associated with their rollout.
- The solution is to use an L2 architecture that commoditizes new chains - enabling efficient crosschain applications without introducing systemic risk and significant setup costs. In the future, we should be able to treat many L2 chain instances as a single unit, realizing the vision of the Superchain.
The end goal of the Superchain is for developers to be able to abstract away underlying chains when developing dapps.
### What defines the Superchain?
The Superchain is a network of interoperable blockchains, including Ink and Optimism. The Superchain satisfies the following properties:
| Property | Purpose |
| :------------------------------------------- | :----------------------------------------------------------------------------------------- |
| Shared L1 blockchain | Provides a total ordering of transactions across all OP Chains. |
| Shared bridge for all OP Chains | Enables OP Chains to have standardized security properties. |
| Cheap OP Chain deployment | Enables deploying and transacting on OP Chains without the high fees of transacting on L1. |
| Configuration options for OP Chains | Enables OP Chains to configure their data availability provider, sequencer address, etc. |
| Secure transactions and cross-chain messages | Enables users to safely migrate state between OP Chains. |
Check out the Optimism docs on architecture: [the OP Stack](https://docs.optimism.io/stack/explainer).
## Ink and the Superchain
Ink is an OP Chain (Ethereum Layer 2) which is part of the Superchain. Being part of the Superchain network means Ink can easily interface with other connected chains, promoting both interoperability and specialization while benefiting from shared security, crosschain upgrades and decentralized governance. Ink and Optimism strongly align on the ultimate mission of realizing greater freedom for all through blockchain technology.
## Developing on the Superchain
You can use [Supersim](https://github.com/ethereum-optimism/supersim) to simulate the Superchain and develop apps that can be used across any chain!
Supersim enables builders to:
* Experiment with apps that can be accessed from any chain
* Create tokens with **SuperchainERC20**, a fungible token standard for tokens that can be used across the Superchain
* Simulate crosschain messaging
================================================
FILE: src/pages/work-with-ink/_meta.json
================================================
{
"community": {
"title": "Community"
},
"contributing": {
"title": "Contribution Guide"
}
}
================================================
FILE: src/pages/work-with-ink/brand-kit.mdx
================================================
---
title: Brand Kit
description: The core essence of the Ink branding, featuring logos, colors, typefaces, illustrations, and best practices
---
import Image from "next/image";
import { DownloadButton } from "@/components/DownloadButton";
import { DownloadIcon } from "@/icons/Download";
# Brand Kit
This brand kit includes the core essence of the Ink branding, featuring logos, colors, typefaces, illustrations, and best practices. It should help any and all creative work.
## Logo
The Ink logo consists of a symbol and a word mark.
Wherever possible, the horizontal full logo should be used.
### Logo System
Full Ink logo
Ink chain mark
Safe margin
Safe margin
### Logo Extensions
With Kraken
With other marks
Partnerships
## Color
Ink purple should be used whenever possible.
Backgrounds typically use gradients.
## Typography
Ink uses the open source typeface Plus Jakarta Sans.
Lurus Alternatives are used in most cases.