Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add ccip doc #42

Merged
merged 3 commits into from
Dec 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/apps/ccip-bridge/assets/step_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/apps/ccip-bridge/assets/step_9.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions docs/apps/ccip-bridge/guides/smart-contract-requirements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
description: Learn the token requirements to integrate with CCIP
slug: /apps/ccip-bridge/smart-contract-requirements
title: ERC-20 Smart Contract Requirements
toc_max_heading_level: 2
---

## Overview

Before enabling an ERC20-compatible token in CCIP, it's important to understand the requirements it must fulfill to integrate with CCIP.

## Token Administrator address requirement

Check warning on line 12 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Headings] 'Token Administrator address requirement' should use sentence-style capitalization. Raw Output: {"message": "[Google.Headings] 'Token Administrator address requirement' should use sentence-style capitalization.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 12, "column": 4}}}, "severity": "WARNING"}

The token contract must provide an easy way to obtain the token administrator address. This can be achieved if the token contract includes **one of the following functions**:

* **owner()**: This function returns the token contract owner's address. **We recommend using this function.**
* **getCCIPAdmin()**: This function returns the token administrator's address if it differs from the contract owner's.

## Requirements for CCIP token transfers

The token's smart contract must meet minimum requirements to integrate with CCIP.

### Burn & Mint Requirements

Check warning on line 23 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Headings] 'Burn & Mint Requirements' should use sentence-style capitalization. Raw Output: {"message": "[Google.Headings] 'Burn \u0026 Mint Requirements' should use sentence-style capitalization.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 23, "column": 5}}}, "severity": "WARNING"}
* The token smart contract must have the following functions:
* **mint(address account, uint256 amount)**: This function is used to mint the amount of tokens to a given **account** on the destination blockchain.

Check failure on line 25 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.AMPM] Use 'AM' or 'PM' (preceded by a space). Raw Output: {"message": "[Google.AMPM] Use 'AM' or 'PM' (preceded by a space).", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 25, "column": 34}}}, "severity": "ERROR"}
* **burn(uint256 amount)** / **burn(address account, uint256 amount)**: This function is used to burn the amount of tokens on the source blockchain.

Check failure on line 26 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.AMPM] Use 'AM' or 'PM' (preceded by a space). Raw Output: {"message": "[Google.AMPM] Use 'AM' or 'PM' (preceded by a space).", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 26, "column": 17}}}, "severity": "ERROR"}

Check failure on line 26 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.AMPM] Use 'AM' or 'PM' (preceded by a space). Raw Output: {"message": "[Google.AMPM] Use 'AM' or 'PM' (preceded by a space).", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 26, "column": 61}}}, "severity": "ERROR"}
* **decimals()**: Returns the token's number of decimals.
* On the source and destination blockchains, the token contract must support granting **mint and burn** permissions. The token issuers or another role (such as the token administrator) will grant these permissions to the token pool.

Check warning on line 28 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Will] Avoid using 'will'. Raw Output: {"message": "[Google.Will] Avoid using 'will'.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 28, "column": 186}}}, "severity": "WARNING"}
### Lock & Mint Requirements

Check warning on line 29 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Headings] 'Lock & Mint Requirements' should use sentence-style capitalization. Raw Output: {"message": "[Google.Headings] 'Lock \u0026 Mint Requirements' should use sentence-style capitalization.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 29, "column": 5}}}, "severity": "WARNING"}
* The token smart contract must have the following function:
* **decimals()**: Returns the token's number of decimals.
* On the destination blockchain, The token contract must support granting mint and burn permissions described above. The token issuers or another role (such as the token administrator) will grant these permissions to the token pool.

Check warning on line 32 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.WordList] Use 'preceding' instead of 'above'. Raw Output: {"message": "[Google.WordList] Use 'preceding' instead of 'above'.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 32, "column": 111}}}, "severity": "WARNING"}

Check warning on line 32 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Will] Avoid using 'will'. Raw Output: {"message": "[Google.Will] Avoid using 'will'.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 32, "column": 186}}}, "severity": "WARNING"}

:::info
**If you don't have an existing token**: For all blockchains where tokens need to be burned and minted (for example, the source or destination chain in the case of Burn and Mint, or the destination blockchain in the case of Lock and Mint), Chainlink provides a [BurnMintERC677](https://github.com/smartcontractkit/ccip/blob/ccip-develop/contracts/src/v0.8/shared/token/ERC677/BurnMintERC677.sol) contract that you can use to deploy your token in minutes. This token follows the [ERC677](https://github.com/ethereum/EIPs/issues/677) or [ERC777](https://ethereum.org/en/developers/docs/standards/tokens/erc-777/), allowing you to use it as-is or extend it to meet your specific requirements. You can also use a standard **ERC-20** as long as it meets the above specifications.

Check warning on line 35 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Colons] ': F' should be in lowercase. Raw Output: {"message": "[Google.Colons] ': F' should be in lowercase.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 35, "column": 40}}}, "severity": "WARNING"}

Check warning on line 35 in docs/apps/ccip-bridge/guides/smart-contract-requirements.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.WordList] Use 'preceding' instead of 'above'. Raw Output: {"message": "[Google.WordList] Use 'preceding' instead of 'above'.", "location": {"path": "docs/apps/ccip-bridge/guides/smart-contract-requirements.md", "range": {"start": {"line": 35, "column": 754}}}, "severity": "WARNING"}
:::
58 changes: 58 additions & 0 deletions docs/apps/ccip-bridge/guides/transfer-token.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
description: Bridge ERC-20 tokens from Ethereum to Ronin using Ronin Bridge.
slug: /apps/ccip-bridge/transfer-token
title: Transfer an ERC-20 token
---

## Overview

This guide describes how to use CCIP Bridge to send an ERC-20 token from Ronin to Ethereum.

## Prerequisites

If you access CCIP Bridge on mobile, remember to import your Ethereum address to your mobile Ronin Wallet. To learn how to do that, see [Importing Your MetaMask Wallet to Ronin Wallet](https://support.roninchain.com/hc/en-us/articles/14862812718107-Importing-Your-MetaMask-Wallet-to-Ronin-Wallet).

## Step 1. Choose source and destination chain
Go to https://app.roninchain.com/bridge, then select “Cross-chain bridge (CCIP)” tab

![step_1](../assets/step_1.png)

Click “From" section, then select "Ronin" as the source chain
- You can also click the “Swap” button to switch between source network and destination network at “From" and "To" boxes.

![step_2](../assets/step_2.png)

Select the connection method you want to use and connect your Ronin wallet

![step_3](../assets/step_3.png)

Click “To" section and choose the destination chain: "Ethereum"

![step_4](../assets/step_4.png)

## Step 2: Add the sender and recipient addresses
Enter the recipient address or paste the address by clicking the “Paste" button, then click "Confirm" button
- If the destination chain is Ronin, you can enter any RNS domain name that a wallet has.

![step_5](../assets/step_5.png)

## Step 3: Choose the token and amount
Select the token and an amount you would like to transfer

![step_6](../assets/step_6.png)

## Step 4: Choose fee token
Select the token you want to pay fee. Make sure you have enough token to pay fee.

![step_9](../assets/step_9.png)

## Step 5: Excecute and receive the tokens in your wallet

Check failure on line 49 in docs/apps/ccip-bridge/guides/transfer-token.md

View workflow job for this annotation

GitHub Actions / checks

Excecute ==> Execute
Click “Transfer” button to execute the transaction

![step_7](../assets/step_7.png)

When the transaction is complete, you’ll see the “Transfer complete" window

![step_8](../assets/step_8.png)


34 changes: 34 additions & 0 deletions docs/apps/ccip-bridge/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
description: A secure interoperability protocol for enabling token transfers across blockchains
slug: /apps/ccip-bridge
title: CCIP Bridge
---

## Overview

The [Cross-Chain Interoperability Protocol (CCIP)](https://app.roninchain.com/ccip-bridge) is a protocol developed by Chainlink to enable secure and reliable communication and token transfers between different blockchain networks. It provides the technical infrastructure for cross-chain interactions, enabling developers to build decentralized applications (dApps) that operate across multiple blockchains.


## Features

1. **Cross-Chain Connectivity**
Enables communication and token transfers between blockchain networks, including both public and private chains.

2. **Decentralized Infrastructure**
Utilizes Chainlink's Decentralized Oracle Network to process and validate cross-chain messages, ensuring system reliability.

3. **Token Transfers**
Supports secure movement of tokens between chains, allowing for interoperability between blockchain ecosystems.

4. **Built-in Safeguards**
Includes security features such as rate limiting to mitigate risks associated with cross-chain interactions.


## User guides

* [Transfer an ERC-20 token](./guides/transfer-token.md)

## Developer guides

* [Learn the token requirements to integrate with CCIP](./guides/smart-contract-requirements.md)
* Developers can access CCIP through [Chainlink's documentation and SDKs](https://docs.chain.link/ccip). The protocol provides tools and resources for integrating cross-chain functionality into dApps, with an emphasis on security and straightforward implementation.

Check warning on line 34 in docs/apps/ccip-bridge/overview.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.WordList] Use 'capability' or 'feature' instead of 'functionality'. Raw Output: {"message": "[Google.WordList] Use 'capability' or 'feature' instead of 'functionality'.", "location": {"path": "docs/apps/ccip-bridge/overview.md", "range": {"start": {"line": 34, "column": 176}}}, "severity": "WARNING"}
1 change: 1 addition & 0 deletions docs/get-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Guides on using Ronin dApps (decentralized apps).
<DocCardList items={[
findSidebarItem('/apps/rns'),
findSidebarItem('/apps/ronin-bridge'),
findSidebarItem('/apps/ccip-bridge'),
findSidebarItem('/apps/ronin-explorer'),
findSidebarItem('/apps/katana'),
findSidebarItem('/apps/ron-staking'),
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"typescript": "4.6.2"
},
"engines": {
"node": ">=18.0"
"node": "20.x"
},
"browserslist": {
"production": [
Expand Down
58 changes: 34 additions & 24 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ const sidebars = {
label: 'Ronin Name Service',
link: {
type: 'doc',
id: 'apps/rns/overview',
id: 'apps/rns/overview',
},
items: [
{
Expand Down Expand Up @@ -125,7 +125,7 @@ const sidebars = {
label: 'Ronin Bridge',
link: {
type: 'doc',
id: 'apps/ronin-bridge/overview',
id: 'apps/ronin-bridge/overview',
},
items: [
// Deposit ERC-20 tokens
Expand All @@ -138,15 +138,30 @@ const sidebars = {
'apps/ronin-bridge/guides/withdraw-nft',
// Token withdrawal limits
'apps/ronin-bridge/reference/withdrawal-limits',
]
],
},
// CCIP Bridge
{
type: 'category',
label: 'CCIP Bridge',
link: {
type: 'doc',
id: 'apps/ccip-bridge/overview',
},
items: [
// Transfer ERC-20 tokens
'apps/ccip-bridge/guides/transfer-token',
// Learn the token requirements to integrate with CCIP
'apps/ccip-bridge/guides/smart-contract-requirements',
],
},
// Katana
{
type: 'category',
label: 'Katana',
link: {
type: 'doc',
id: 'apps/katana/overview',
id: 'apps/katana/overview',
},
items: [
// Swap tokens
Expand All @@ -158,7 +173,7 @@ const sidebars = {
link: {
type: 'generated-index',
description: 'Guides for creating and managing liquidity pools.',
slug: 'apps/katana/pools'
slug: 'apps/katana/pools',
},
items: [
// Create a liquidity pool
Expand Down Expand Up @@ -205,20 +220,17 @@ const sidebars = {
link: {
type: 'generated-index',
slug: '/rpc',
description: 'Guides for setting up and using an RPC node.',
description: 'Guides for setting up and using an RPC node.',
},
items: [
'rpc/mainnet-rpc',
'rpc/testnet-rpc',
],
items: ['rpc/mainnet-rpc', 'rpc/testnet-rpc'],
},
// Delegators
{
type: 'category',
label: 'Delegators',
link: {
type: 'doc',
id: 'delegators/index',
id: 'delegators/index',
},
items: [
// Stake RON
Expand All @@ -239,15 +251,15 @@ const sidebars = {
label: 'Validators',
link: {
type: 'doc',
id: 'validators/index',
id: 'validators/index',
},
items: [
{
type: 'category',
label: 'Setup',
link: {
type: 'doc',
id: 'validators/setup/overview',
id: 'validators/setup/overview',
},
items: [
{
Expand All @@ -256,7 +268,7 @@ const sidebars = {
link: {
type: 'generated-index',
slug: '/validators/setup/mainnet',
description: 'Node installation guides for the Ronin mainnet.'
description: 'Node installation guides for the Ronin mainnet.',
},
items: [
// Run a validator and bridge together
Expand Down Expand Up @@ -321,8 +333,9 @@ const sidebars = {
label: 'Manage validator account',
link: {
type: 'generated-index',
title: 'Manage your validator account',
description: 'Guides for increasing or withdrawing your stake, claiming rewards, and managing your validator account.',
title: 'Manage your validator account',
description:
'Guides for increasing or withdrawing your stake, claiming rewards, and managing your validator account.',
slug: '/validators/manage',
},
items: [
Expand Down Expand Up @@ -362,7 +375,7 @@ const sidebars = {
label: 'Governance',
link: {
type: 'doc',
id: 'validators/governance/overview',
id: 'validators/governance/overview',
},
items: [
// Create and vote on proposals
Expand All @@ -378,20 +391,17 @@ const sidebars = {
label: 'Bridge operators',
link: {
type: 'doc',
id: 'bridge-operators/index',
id: 'bridge-operators/index',
},
items: [
{
type: 'category',
label: 'Setup',
link: {
type: 'doc',
id: 'bridge-operators/setup/overview',
id: 'bridge-operators/setup/overview',
},
items: [
'bridge-operators/setup/run-bridge',
'bridge-operators/setup/upgrade-bridge',
],
items: ['bridge-operators/setup/run-bridge', 'bridge-operators/setup/upgrade-bridge'],
},
// Slashing
'bridge-operators/slashing',
Expand All @@ -401,7 +411,7 @@ const sidebars = {
label: 'Governance',
link: {
type: 'doc',
id: 'bridge-operators/governance/overview',
id: 'bridge-operators/governance/overview',
},
items: [
// Create and vote on proposals
Expand Down
Loading