diff --git a/src/content/data-streams/developer-responsibilities.mdx b/src/content/data-streams/developer-responsibilities.mdx index cc08856d5ed..bce514053a3 100644 --- a/src/content/data-streams/developer-responsibilities.mdx +++ b/src/content/data-streams/developer-responsibilities.mdx @@ -65,6 +65,10 @@ Token prices may exhibit oscillations between two or more price points within re Developers implementing Chainlink New Token Data Streams are responsible for independently verifying the liquidity, quality and stability of the assets pricing when integrating them in their use cases +#### Custom Data Streams + +Custom Data Streams are built to serve a specific use case and might not be suitable for general use or your use case's risk parameters. Users must evaluate the properties of a feed to make sure it aligns with their intended use case. [Contact the Chainlink Labs team](https://chain.link/contact?ref_id=DataStreams) if you want more detail on any specific feeds in this category. + ### Application Code Risks Developers implementing Chainlink Data Streams are solely responsible for instituting risk mitigations, including, but not limited to, data quality checks, circuit breakers, and appropriate contingency logic for their use case. Some general guidelines include: @@ -72,7 +76,10 @@ Developers implementing Chainlink Data Streams are solely responsible for instit - **Code quality and reliability:** Developers must execute code using Chainlink Data Streams only if their code meets the quality and reliability requirements for their use case and application. - **Code and application audits:** Developers are responsible for auditing their code and applications before deploying to production. Developers must determine the quality of any audits and ensure that they meet the requirements for their application. - **Code dependencies and imports:** Developers are responsible for ensuring the quality, reliability, and security of any dependencies or imported packages that they use with Chainlink Data Streams, and review and audit these dependencies and packages. -- **Contingency Logic:** In extreme circumstances, including situations outside the control of Chainlink node operators, Chainlink Data Streams may experience periods of unavailability or performance degradation. Developers are responsible for implementing contingency plans for such circumstances specific to their application, such as the use of the active-active SDK for Data Streams, a secondary fallback oracle, and/or circuit breakers to stall trading. +- **Implementing Contingency Logic:** In extreme circumstances, including situations beyond the control of Chainlink node operators, Chainlink Data Streams may experience periods of unavailability or performance degradation. When a WebSocket connection is dropped, user systems must manage reconnections effectively. Developers are responsible for creating contingency plans tailored to their specific application needs, such as: + - Implementing the [Streams Direct Architecture](/data-streams/architecture#streams-direct-architecture), + - Adopting an [active-active](/data-streams/architecture#active-active-multi-site-deployment) deployment strategy and [configuring the SDK](/data-streams/reference/streams-direct/streams-direct-go-sdk#config-struct) to support multiple concurrent WebSocket connections, + - Retrieving any potentially missing reports via the [REST API](/data-streams/reference/streams-direct/streams-direct-interface-api). ### Additional Considerations on Data Usage and Verification diff --git a/src/features/feeds/components/Tables.tsx b/src/features/feeds/components/Tables.tsx index 4d0ea31c119..c4ed35304af 100644 --- a/src/features/feeds/components/Tables.tsx +++ b/src/features/feeds/components/Tables.tsx @@ -79,7 +79,7 @@ const Pagination = ({ addrPerPage, totalAddr, paginate, currentPage, firstAddr, } return ( -
+
{totalAddr !== 0 && ( <> @@ -176,11 +176,11 @@ const DefaultTr = ({ network, proxy, showExtraDetails, isTestnet = false }) => (
{!isTestnet && (
-
+
{proxy.docs.assetName && (
- Asset name: + Asset name:
{proxy.docs.assetName}
@@ -188,7 +188,7 @@ const DefaultTr = ({ network, proxy, showExtraDetails, isTestnet = false }) => ( {proxy.docs.feedType && (
- Asset type: + Asset type:
{proxy.docs.feedType} @@ -199,7 +199,7 @@ const DefaultTr = ({ network, proxy, showExtraDetails, isTestnet = false }) => ( {proxy.docs.marketHours && (
- Market hours: + Market hours:
@@ -218,7 +218,7 @@ const DefaultTr = ({ network, proxy, showExtraDetails, isTestnet = false }) => ( const SmartDataTHead = ({ showExtraDetails }: { showExtraDetails: boolean }) => ( - SmartData Feed + SmartData Feed Deviation Heartbeat Dec @@ -229,7 +229,7 @@ const SmartDataTHead = ({ showExtraDetails }: { showExtraDetails: boolean }) => const SmartDataTr = ({ network, proxy, showExtraDetails }) => ( - + {feedItems.map((feedItem: FeedDataItem) => { const [feedAddress] = Object.keys(feedItem) if (feedAddress === proxy.proxyAddress) { @@ -269,11 +269,15 @@ const SmartDataTr = ({ network, proxy, showExtraDetails }) => ( {proxy.decimals ? proxy.decimals : "N/A"}
- + {proxy.proxyAddress}
-
+
- Asset name: + Asset name:
{proxy.docs.assetName}
{proxy.docs.porType && (
- Reserve type: + Reserve type:
{proxy.docs.porType}
@@ -308,14 +312,14 @@ const SmartDataTr = ({ network, proxy, showExtraDetails }) => ( {proxy.docs.porAuditor && (
- Data source: + Data source:
{proxy.docs.porAuditor}
)}
- + {proxy.docs.porSource === "Third-party" ? "Auditor verification:" : "Reporting:"}
@@ -324,7 +328,7 @@ const SmartDataTr = ({ network, proxy, showExtraDetails }) => ( {proxy.docs.issuer ? (
- Issuer: + Issuer:
{proxy.docs.issuer}
@@ -415,7 +419,7 @@ const StreamsNetworksData = [ export const StreamsVerifierProxyTable = () => { return ( - +
@@ -526,15 +530,26 @@ export const StreamsVerifierProxyTable = () => { const StreamsTHead = () => ( - + ) +const streamsCategoryMap = { + custom: { + text: "Custom", + link: "/data-streams/developer-responsibilities/#custom-data-streams", + }, + new_token: { + text: "New token", + link: "/data-streams/developer-responsibilities#new-token-data-streams", + }, +} + const StreamsTr = ({ proxy, showExtraDetails, isMainnet }) => ( -
Network
StreamStream Details
+
{proxy.pair[0]}/{proxy.pair[1]}
@@ -549,10 +564,10 @@ const StreamsTr = ({ proxy, showExtraDetails, isMainnet }) => (
- ID: + ID: {proxy.feedId}
-
+
{isMainnet && proxy.docs.clicProductName && (
- Full name: + Full name:
{proxy.docs.clicProductName}
@@ -581,7 +596,7 @@ const StreamsTr = ({ proxy, showExtraDetails, isMainnet }) => ( {proxy.docs.assetName && (
- Asset name: + Asset name:
{proxy.docs.assetName}
@@ -589,7 +604,7 @@ const StreamsTr = ({ proxy, showExtraDetails, isMainnet }) => ( {proxy.docs.assetClass ? (
- Asset class: + Asset class:
{proxy.docs.assetClass} @@ -600,13 +615,11 @@ const StreamsTr = ({ proxy, showExtraDetails, isMainnet }) => ( : ""}
- ) : ( - "" - )} + ) : null} {proxy.docs.marketHours ? ( - ) : ( - "" - )} + ) : null} + {streamsCategoryMap[proxy.docs.feedCategory] ? ( + + ) : null} {proxy.decimals ? (
- Decimals: + Decimals:
{proxy.decimals}
- ) : ( - "" - )} + ) : null} {proxy.docs.feedType === "Crypto" && (