From 753be56f934cbb584016e8027f7406b8c6d85ab3 Mon Sep 17 00:00:00 2001 From: chowbao Date: Mon, 28 Oct 2024 14:43:31 -0400 Subject: [PATCH] Update data main (#1059) --- docs/data/README.mdx | 23 ++++++++++++++++++++++- static/img/platform_decision_tree.png | Bin 0 -> 28340 bytes 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 static/img/platform_decision_tree.png diff --git a/docs/data/README.mdx b/docs/data/README.mdx index c81b3fe28..0b48afb61 100644 --- a/docs/data/README.mdx +++ b/docs/data/README.mdx @@ -2,10 +2,31 @@ title: Data Overview --- -The RPC, data indexers, Hubble, and Horizon are platforms or tools that facilitate communication between users and applications and the Stellar network. With these various platforms, users can query network data, submit transactions, and interact with smart contracts without needing to understand the low-level details of Stellar Core. +import platform_decision_tree from "/img/platform_decision_tree.png"; + +There are several products to choose from when interacting with the Stellar Network, and each one is optimized for different access patterns, so it's important to choose the right tool based on your specific use-case. These tools allow users to query network data, submit transactions, and interact with smart contracts without needing to understand the low-level details of Stellar Core. This section will walk you through the differences between the various platforms and tools, what platform or tool is best for what use case, and then link to their various documentation locations. +- **[RPC](#rpc)** - live network gateway +- **[Horizon](#horizon)** - API for network state data +- **Galexie** - exports raw ledger metadata files +- **[Hubble](#hubble)** - analytics database for network data + +| Features | RPC | Horizon | Galexie | Hubble | +| ----------------------- | --- | ------- | ------- | ------ | +| Real-time Data | ✅ | ✅ | ✅ | ❌ | +| Historical Data | ❌ | ❌\* | ✅ | ✅ | +| Smart Contracts | ✅ | ❌ | ✅ | ✅ | +| API | ✅ | ✅ | ❌ | ❌ | +| Transaction Submission | ✅ | ✅ | ❌ | ❌ | +| Curated and Parsed Data | ❌ | ✅ | ❌ | ✅ | +| Ad Hoc Data Analysis | ❌ | ❌ | ❌ | ✅ | + +\*_Please note that Horizon can provide full historical data but is not the recommended tool for full historical data access._ + + + ## [RPC](./rpc/README.mdx) The RPC primarily provides information that the Stellar network currently has in view, i.e., **the current state**, which includes the current balances of all accounts, the current state of smart contracts, and any other relevant information that constitutes the present condition of the blockchain. It has the ability to send a transaction to the network and query the network for the status of previous transactions (subject to the retention window of seven days, transactions older than that will return a `NOT_FOUND` response). The RPC is meant to be simple, minimal, and scalable. diff --git a/static/img/platform_decision_tree.png b/static/img/platform_decision_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..fa4d7527d75a3a9ad969739db8ed59a21445ec3f GIT binary patch literal 28340 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 t*A!+8`?>D!Uaf$EKPC6S`S;v