Skip to content

Commit

Permalink
Merge branch 'main' into co-change
Browse files Browse the repository at this point in the history
  • Loading branch information
khadni authored Jan 14, 2025
2 parents cea9839 + d82cff6 commit 701d72f
Show file tree
Hide file tree
Showing 43 changed files with 3,190 additions and 982 deletions.
Binary file added public/images/tutorial-icons/go_logo_black.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/images/tutorial-icons/rust_logo_blk.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 6 additions & 1 deletion src/components/HeadSEO.astro
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const formattedContentTitle = metadata?.title
? `${metadata.title} | ${SITE.title}`
: `${PAGE.titleFallback} | ${SITE.title}`
const description = metadata?.description ?? SITE.description
const excerpt = metadata?.excerpt ?? description
// Check that the metadata image property exists, else use OPEN_GRAPH.image.src
var canonicalImageSrc = OPEN_GRAPH.image.src
Expand Down Expand Up @@ -41,14 +42,18 @@ const { isApiReference, product, isVersioned } = detectApiReference(currentPage)
<!-- Page Metadata -->
<link rel="canonical" href={canonicalURL} />

<!-- Primary Meta Tags -->
<meta name="description" content={description} />
<meta name="keywords" content={excerpt} />

<!-- OpenGraph Tags -->
<meta property="og:title" content={formattedContentTitle} />
<meta property="og:type" content="article" />
<meta property="og:url" content={canonicalURL} />
<meta property="og:locale" content={SITE.defaultLanguage} />
<meta property="og:image" content={canonicalImageSrc} />
<meta property="og:image:alt" content={OPEN_GRAPH.image.alt} />
<meta name="description" property="og:description" content={description} />
<meta property="og:description" content={description} />
<meta property="og:site_name" content={SITE.title} />

<!-- Twitter Tags -->
Expand Down
112 changes: 65 additions & 47 deletions src/config/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,11 +234,6 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
title: "Overview",
url: "data-streams",
},
{
title: "Getting Started",
url: "data-streams/getting-started",
highlightAsCurrent: ["data-streams/getting-started-hardhat"],
},
{
title: "Developer Responsibilities",
url: "data-streams/developer-responsibilities",
Expand All @@ -254,59 +249,86 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
],
},
{
section: "Stream Addresses",
section: "Streams & Report Schemas",
contents: [
{
title: "Crypto streams",
title: "Cryptocurrency Streams",
url: "data-streams/crypto-streams",
children: [
{
title: "Report Schema v3",
url: "data-streams/reference/report-schema",
},
],
},
{
title: "RWA streams",
title: "Real World Asset (RWA) Streams",
url: "data-streams/rwa-streams",
children: [
{
title: "Report Schema v4",
url: "data-streams/reference/report-schema-v4",
},
],
},
{
title: "Market hours",
title: "Market Hours",
url: "data-streams/market-hours",
},
],
},
{
section: "Guides",
section: "Streams Trade",
contents: [
{
title: "Streams Trade",
url: "data-streams/tutorials/streams-trade/",
children: [
{
title: "Handle StreamsLookup errors",
url: "data-streams/tutorials/streams-trade/streams-trade-lookup-error-handler",
},
title: "Overview",
url: "data-streams/streams-trade",
},
{
title: "Getting Started",
url: "data-streams/getting-started",
highlightAsCurrent: ["data-streams/getting-started-hardhat"],
},
{
title: "Handle StreamsLookup errors",
url: "data-streams/tutorials/streams-trade/streams-trade-lookup-error-handler",
},
],
},
{
section: "Streams Direct",
contents: [
{
title: "Overview",
url: "data-streams/streams-direct",
},
{
title: "Fetch and decode reports",
url: "data-streams/tutorials/streams-direct/streams-direct-api-go",
highlightAsCurrent: [
"data-streams/tutorials/streams-direct/streams-direct-api-rust",
"data-streams/tutorials/streams-direct/streams-direct-api-rwa-go",
"data-streams/tutorials/streams-direct/streams-direct-api-rwa-rust",
],
},
{
title: "Streams Direct",
url: "data-streams/tutorials/streams-direct/",
children: [
{
title: "Fetch and decode reports",
url: "data-streams/tutorials/streams-direct/streams-direct-api",
highlightAsCurrent: ["data-streams/tutorials/streams-direct/streams-direct-api-rwa"],
},
{
title: "Stream and decode reports (WebSocket)",
url: "data-streams/tutorials/streams-direct/streams-direct-ws",
highlightAsCurrent: ["data-streams/tutorials/streams-direct/streams-direct-ws-rwa"],
},
{
title: "Verify report data",
url: "data-streams/tutorials/streams-direct/evm-onchain-report-verification",
highlightAsCurrent: [
"data-streams/tutorials/streams-direct/solana-onchain-report-verification",
"data-streams/tutorials/streams-direct/solana-offchain-report-verification",
],
},
title: "Stream and decode reports (WebSocket)",
url: "data-streams/tutorials/streams-direct/streams-direct-ws-go",
highlightAsCurrent: [
"data-streams/tutorials/streams-direct/streams-direct-ws-rust",
"data-streams/tutorials/streams-direct/streams-direct-ws-rwa-go",
"data-streams/tutorials/streams-direct/streams-direct-ws-rwa-rust",
],
},
{
title: "Verify report data (EVM)",
url: "data-streams/tutorials/streams-direct/evm-onchain-report-verification",
},
{
title: "Verify report data (Solana)",
url: "data-streams/tutorials/streams-direct/solana-onchain-report-verification",
highlightAsCurrent: ["data-streams/tutorials/streams-direct/solana-offchain-report-verification"],
},
],
},
{
Expand All @@ -326,16 +348,11 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
section: "Reference",
contents: [
{
title: "Report Schemas",
url: "data-streams/reference/report-schema",
highlightAsCurrent: ["data-streams/reference/report-schema-v4"],
},
{
title: "Streams Trade Interface",
title: "Streams Trade",
url: "data-streams/reference/streams-trade-interface",
},
{
title: "Streams Direct Interface",
title: "Streams Direct",
url: "data-streams/reference/streams-direct",
children: [
{
Expand All @@ -347,11 +364,12 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
url: "data-streams/reference/streams-direct/streams-direct-interface-ws",
},
{
title: "SDK Reference",
title: "SDK References",
url: "data-streams/reference/streams-direct/streams-direct-go-sdk",
highlightAsCurrent: ["data-streams/reference/streams-direct/streams-direct-rust-sdk"],
},
{
title: "Onchain report data verification (EVM chains)",
title: "Onchain report verification (EVM chains)",
url: "data-streams/reference/streams-direct/streams-direct-onchain-verification",
},
],
Expand Down
2 changes: 1 addition & 1 deletion src/content/any-api/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
section: nodeOperator
date: Last Modified
title: "Getting Started with Any API"
excerpt: "Calling APIs from Smart Contracts"
whatsnext:
{ "Learn how to bring data onchain and do offchain computation using Chainlink Functions": "/chainlink-functions" }
metadata:
excerpt: "Calling APIs from Smart Contracts"
image: "/files/04b8e56-cl.png"
---

Expand Down
7 changes: 5 additions & 2 deletions src/content/ccip/concepts/cross-chain-tokens.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ section: ccip
date: Last Modified
title: "Cross-Chain Token (CCT) standard"
whatsnext: { "CCT Guides": "/ccip/tutorials/cross-chain-tokens" }
metadata:
description: "Chainlink's Cross-Chain Token (CCT) standard enables permissionless listing of tokens in CCIP. Learn how to make your tokens cross-chain compatible or deploy new cross-chain tokens using this self-service standard. Token developers can deploy and configure their own token pools without third-party intervention, streamlining the process of enabling ERC20-compatible tokens for cross-chain operations."
excerpt: "create cct create cross chain token create cross-chain token deploy cross chain token enable token for ccip make token cross chain compatible cross chain token tutorial"
---

import { Aside, ClickToZoom } from "@components"
Expand Down Expand Up @@ -507,7 +510,7 @@ Once the administrator has been proposed and is in a pending state, the final st

The `transferAdminRole` function allows the current token administrator to initiate the transfer of their role to a new administrator. The transfer process is a secure two-step procedure, requiring the new administrator to explicitly accept the role before the transfer is finalized.

1. **Initiate Role Transfer**: The current administrator calls the `transferAdminRole()` function on the **TokenAdminRegistry**, specifying the token address and the new administrators address.
1. **Initiate Role Transfer**: The current administrator calls the `transferAdminRole()` function on the **TokenAdminRegistry**, specifying the token address and the new administrator's address.
1. **Set Pending Administrator**: The **TokenAdminRegistry** contract verifies that the caller is the current administrator of the token and sets the new administrator as **pending**. The role will remain in this pending state until it is accepted.
1. **Accept the Role**: The new administrator must call the `acceptAdminRole()` function to finalize the transfer and assume the administrator role.

Expand All @@ -525,7 +528,7 @@ The `setPool` function allows the token administrator to assign or update the to

1. **Set Token Pool**: The current administrator calls the `setPool()` function on the **TokenAdminRegistry**, providing the token address and the new pool address.
1. **Validate Pool**: If the new pool address is not `address(0)`, the contract validates that the provided pool supports the token by calling `isSupportedToken()` on the pool contract.
1. **Update or Remove Pool**: If validation succeeds, the tokens pool is updated in the registry. Setting the pool to `address(0)` effectively delists the token from cross-chain operations.
1. **Update or Remove Pool**: If validation succeeds, the token's pool is updated in the registry. Setting the pool to `address(0)` effectively delists the token from cross-chain operations.

The sequence diagram below shows how the token administrator sets or updates the pool for a token. If the pool is set to `address(0)`, the token is delisted from cross-chain operations.

Expand Down
6 changes: 6 additions & 0 deletions src/content/ccip/service-responsibility.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ Token Developers may enable token transfers on CCIP for the tokens that they adm
- **Best Practices**: Token Developers are responsible for following the appropriate best practices for creating, managing, and enabling transfers of their tokens on Chainlink CCIP.
- **Risk Management Network coverage**: Token Developers must check the deployment status of the Risk Management Network on the chains they build on, which can be found on the [CCIP Directory](/ccip/directory) page. If the Risk Management Network is not yet active on a chain, Token Developers must validate that its absence conforms to their requirements.
- **Token Developer Attestation**: Token Developers are responsible for ensuring the quality, reliability, and security of their associated attestation endpoint(s). Token Developers are responsible for adhering to specifications as defined by Chainlink Labs and maintaining an up-to-date implementation. Neither Chainlink Labs nor the Chainlink Foundation are responsible for the development, maintenance, or operation of Token Developer Attestation endpoints.
- **Liquidity Management**: Token Developers who choose the **Lock and Mint** or **Lock and Unlock** mechanism must ensure their token pools have sufficient liquidity when releasing tokens. Failure to maintain adequate liquidity can result in stalled or failed cross-chain transfers, causing a degraded user experience. Token Developers are responsible for:

- **Ensuring sufficient liquidity**: Continuously monitor transaction volumes and add liquidity to the pool before it is depleted to avoid having user funds stuck in transit.
- **Avoiding fragmented liquidity**: Where possible, minimize the use of **Lock and Unlock** across multiple blockchains to reduce operational complexity and prevent liquidity from being split across multiple pools.
- **Monitoring liquidity health and automating alerts**: Implement monitoring and alerting systems that notify Token Developers when liquidity drops below certain thresholds, allowing for proactive liquidity management before user transfers fail.
- **Proper use of provideLiquidity and withdrawLiquidity**: Only authorized entities (such as a trusted liquidity manager) should manage liquidity. Ensure all access controls are in place to prevent unauthorized manipulation of the token pool.

Although Token Developers may request that their tokens be added to Transporter, tokens may be added to Transporter at any time even if it has not been explicitly requested.

Expand Down
3 changes: 2 additions & 1 deletion src/content/ccip/tutorials/cross-chain-tokens/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ date: Last Modified
title: "Cross-Chain Token (CCT) Tutorials"
isIndex: true
metadata:
description: "Learn how to deploy and configure cross-chain tokens using CCIP. Step-by-step guides for different deployment methods including Remix IDE, Hardhat, and Foundry."
description: "Complete guide to make your tokens cross-chain compatible using Chainlink's CCT standard. Learn how to deploy new cross-chain tokens or enable existing tokens for CCIP by implementing the Cross-Chain Token (CCT) standard. Step-by-step tutorials using Remix IDE, Hardhat, or Foundry, covering both EOA and Safe Smart Account deployments with Burn & Mint and Lock & Mint mechanisms."
excerpt: "create cct create cross chain token create cross-chain token deploy cross chain token enable token for ccip make token cross chain compatible cross chain token tutorial"
---

import { Aside, ClickToZoom } from "@components"
Expand Down
2 changes: 1 addition & 1 deletion src/content/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ const metadata = z
image: z.string().optional(),
linkToWallet: z.boolean().optional(),
canonical: z.string().optional(),
excerpt: z.string().optional(),
})
.optional()

Expand All @@ -56,7 +57,6 @@ const baseFrontmatter = z
isMdx: z.boolean().optional(),
isIndex: z.boolean().optional(),
metadata,
excerpt: z.string().optional(),
datafeedtype: z.string().optional(),
fileExtension: z.string().optional(),
})
Expand Down
3 changes: 2 additions & 1 deletion src/content/data-feeds/ens.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
section: dataFeeds
date: Last Modified
title: "Using ENS with Data Feeds"
excerpt: "Ethereum Name Service"
metadata:
excerpt: "Ethereum Name Service"
---

import { EnsLookupForm } from "../../features/ens/components/EnsLookupForm.tsx"
Expand Down
2 changes: 1 addition & 1 deletion src/content/data-feeds/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
section: dataFeeds
date: Last Modified
title: "Consuming Data Feeds"
excerpt: "Smart Contracts and Chainlink"
whatsnext:
{
"See examples for how to read feeds onchain and offchain": "/data-feeds/using-data-feeds",
Expand All @@ -12,6 +11,7 @@ whatsnext:
metadata:
title: "Consuming Data Feeds"
description: "Learn how to consume Chainlink Data Feeds in your smart contracts."
excerpt: "Smart Contracts and Chainlink"
image: "/files/1a63254-link.png"
---

Expand Down
3 changes: 2 additions & 1 deletion src/content/data-feeds/selecting-data-feeds.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
section: dataFeeds
date: Last Modified
title: "Selecting Quality Data Feeds"
excerpt: "Learn how to assess data feeds that you use in your smart contracts."
metadata:
excerpt: "Learn how to assess data feeds that you use in your smart contracts."
---

import { Aside } from "@components"
Expand Down
2 changes: 1 addition & 1 deletion src/content/data-streams/getting-started-hardhat.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ date: Last Modified
title: "Getting Started with Chainlink Data Streams (Hardhat CLI)"
metadata:
linkToWallet: true
excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
whatsnext: {
"Find the list of available Stream IDs": "/data-streams/crypto-streams",
"Find the schema of data to expect from Data Streams reports.": "/data-streams/reference/report-schema",
Expand Down
2 changes: 1 addition & 1 deletion src/content/data-streams/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ date: Last Modified
title: "Getting Started with Chainlink Data Streams (Remix)"
metadata:
linkToWallet: true
excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
excerpt: "Learn the basics for how to get data from Chainlink Data Streams."
whatsnext: {
"Find the list of available Stream IDs": "/data-streams/crypto-streams",
"Find the schema of data to expect from Data Streams reports": "/data-streams/reference/report-schema",
Expand Down
Loading

0 comments on commit 701d72f

Please sign in to comment.