Skip to content

Commit

Permalink
chore: finish auxiliary sections (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
scarmuega authored Jan 23, 2024
1 parent 6f2798c commit d5fc613
Show file tree
Hide file tree
Showing 9 changed files with 2,432 additions and 4,507 deletions.
6,788 changes: 2,299 additions & 4,489 deletions package-lock.json

Large diffs are not rendered by default.

11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,20 @@
"build": "next build",
"start": "next start"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"next": "^13.0.7",
"nextra": "^2.0.1",
"nextra-theme-docs": "^2.0.1",
"next": "^13.4.10",
"nextra": "^2.10.0",
"nextra-theme-docs": "^2.10.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"remark-mermaid-nextra": "^0.0.4"
},
"devDependencies": {
"autoprefixer": "^10.4.14",
"postcss": "^8.4.22",
"tailwindcss": "^3.3.1"
"postcss": "^8.4.26",
"tailwindcss": "^3.3.3"
}
}
File renamed without changes.
5 changes: 1 addition & 4 deletions pages/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
"title": "About"
},
"introduction": "Introduction",
"architectural": "Architectural Decisions",
"-- Modules --": {
"type": "separator",
"title": "Specification"
Expand All @@ -21,7 +20,6 @@
"submit": "Submit Module",
"sync": "Sync Module",
"watch": "Watch Module",
"query": "Query Module",
"-- Ledgers --": {
"type": "separator",
"title": "Ledgers"
Expand All @@ -41,6 +39,5 @@
},
"servers": "Servers",
"clients": "Clients",
"tooling": "Tooling",
"developers": "Developers"
"teams": "Teams"
}
28 changes: 28 additions & 0 deletions pages/clients.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Clients

These are project that implement the integrate the client-side of the UTxO RPC spec.

## Oura by TxPipe

Oura is a stream processing pipeline for Cardano. It's a tool that reads data from the Cardano blockchain and connects output events to external data processing systems (eg: Kafka, Redis, etc). It uses UTxO RPC as one of the main input protocols to read from Cardano. It's an open-source project developed by [TxPipe](https://txpipe.io). The source code and binary releases can be found in its [Github repository](https://github.com/txpipe/oura).

| Module | Status |
| ------- | -------------- |
| Sync | ✅ supported |
| Build | ⏺️ not required |
| Submit | ⏺️ not required |
| Watch | ⏺️ not required |
| Cardano | ✅ supported |

## Scrolls by TxPipe

Scrolls is a data indexer for Cardano. It's a tool that reads blocks from the Cardano blockchain and executes a map/reduce algorithm to create key/value collections of specific on-chain values. It uses UTxO RPC as one of the main input protocols to read from Cardano. It's an open-source project developed by [TxPipe](https://txpipe.io). The source code and binary releases can be found in its [Github repository](https://github.com/txpipe/scrolls).

| Module | Status |
| ------- | -------------- |
| Sync | ✅ supported |
| Build | ⏺️ not required |
| Submit | ⏺️ not required |
| Watch | ⏺️ not required |
| Cardano | ✅ supported |

48 changes: 44 additions & 4 deletions pages/introduction.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,49 @@
import { Cards, Card, Callout } from 'nextra/components'

# Introduction

UTxO RPC (_u5c_ for short) is an interface tailored for interactions with UTxO-based blockchains, prioritizing performance and developer experience. By providing a common contract, a range of SDKs, and thorough documentation, UtxoRpc aims to facilitate seamless integration across an heteregenous ecosystems of clients and data providers. Utilizing event-driven patterns and the capabilities of Proto3, the interface supports efficient communication, cross-language compatibility, and adaptability between systems.
UTxO RPC (_u5c_ for short) is an interface tailored for interactions with UTxO-based blockchains, prioritizing performance and developer experience. By providing a common contract, a range of SDKs, and thorough documentation, _UTxO RPC_ aims to facilitate:

- **Reusability**: Enabling shared components that can be reused across different projects to simplify the integration effort.
- **Interoperability**: A common interface to simplify integrations between different parties and avoid the common pitfall of vendor lock-in.
- **Performance**: A serialized binary format which is compact and efficient, resulting in smaller message sizes and reduced network overhead compared to its JSON counterpart

Please note that UTxO RPC is just a specification of an interface between agents and the blockchain, it doesn't provide any concrete client / provider implementations. The primary purpose of _u5c_ is to define a set of standardized methods, data structures, and communication patterns.

## Use-cases

The interface is divided into different modules that represent specific use-cases. Not every client will be interested in every module and not every provider will be serving every module.

<Cards>
<Card title="Build Module" icon="🛠️&nbsp;" href="build/intro" />
<Card title="Submit Module" icon="✉️&nbsp;" href="submit/intro" />
<Card title="Sync Module" icon="🔄&nbsp;" href="sync/intro" />
<Card title="Watch Module" icon="👀&nbsp;" href="watch/intro" />
</Cards>

## Ledgers

Modules are blockchain-agnostic, they need to be paired with a specific ledger to be used. A ledger represents a set of primitive structures that are specific to a particular blockchain ecosystem.

<Callout type="info">
So far, the spec focuses only on Cardano. Other UTxO-based blockchains will follow.
</Callout>

<Cards>
<Card title="Cardano Ledger" href="cardano" />
</Cards>

## SDKs

## Only a Specification
Thanks to all of the available gRPC toolchain, generating SDKs in several programming languages is low effort. These are the official libraries maintained as part of the UTxO RPC effort.

UtxoRpc serves just as a specification of an interface between agents and the blockchain, it doesn't provide any concrete client / provider implementations. The primary purpose of _u5c_ is to define a set of standardized methods, data structures, and communication patterns.
<Cards>
<Card title="Rust" href="rust" />
<Card title="Go" href="go" />
<Card title="NodeJs" href="nodejs" />
<Card title="Python" href="Python" />
</Cards>

By providing a well-defined specification, _u5c_ encourages different actors in the ecosystem to contribute their own implementations while ensuring interoperability between them. This approach promotes collaboration and innovation among developers, as they can build on each other's work and leverage existing tools and libraries that adhere to the _u5c_ specification.
<Callout type="info">
If you need a client in a language not found above, check the [gRPC documentation](https://grpc.io/docs/) for instruction on how to auto-generate client code from proto specs.
</Callout>
40 changes: 40 additions & 0 deletions pages/servers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Servers

These are project that implement the server-side part of UTxO RPC spec.

## Dolos by TxPipe

Dolos is a Cardano "Data Node". It's a trimmed-down, Rust-based implementation of a Cardano node with the only purpose of serving data. It uses Ouroboros to sync from upstream relay nodes and keeps a local version of the chain. It uses UTxO RPC as the main interface for client integration. It's an open-source project developed by [TxPipe](https://txpipe.io). The source code and binary releases can be found in its [Github repository](https://github.com/txpipe/dolos).


| Module | Status |
| ------- | ------------- |
| Sync | ✅ supported |
| Build | 🛠️ development |
| Submit | 🛠️ development |
| Watch | 🛠️ development |
| Cardano | ✅ supported |

## Node API by Blink Labs

Blink Labs' Node API is a query layer solution for interfacing with a Cardano node that exposes Ouroboros Node to Client (NtC) queries over multiple HTTP-based protocols. This will allow for consumption in client applications using methods of the developer’s choosing and provide capabilities for varying security scenarios. It includes UTxO RPC spec as the interface for its gRPC endpoints.

| Module | Status |
| ------- | ------------- |
| Sync | 🛠️ development |
| Build | 🛠️ development |
| Submit | 🛠️ development |
| Watch | 🛠️ development |
| Cardano | 🛠️ development |

## Demeter.run

Demeter is a PaaS (Platform-as-a-Service) that provides managed Cardano infrastructure. One of their services consists of a cloud-hosted endpoint for Cardano integration using the UTxO RPC spec. Developers can sign-up and get access to the API on a per-request basis. More information available on their website: [Demeter.run](https://demeter.run).

| Module | Status |
| ------- | ------------- |
| Sync | ✅ supported |
| Build | 🛠️ development |
| Submit | 🛠️ development |
| Watch | 🛠️ development |
| Cardano | ✅ supported |
14 changes: 14 additions & 0 deletions pages/teams.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { Cards, Card, Callout } from 'nextra/components'

# Teams

These are development teams that are actively working on UTxO RPC spec and related implementations.

<Cards>
<Card icon={<img src="https://txpipe.io/favicon.ico" style={{ maxHeight: "30px"}} />} title="TxPipe" href="https://txpipe.io" />
<Card icon={<img src="https://blinklabs.io/favicon.ico" style={{ maxHeight: "30px"}} />} title="Blink Labs" href="https://blinklabs.io/"/>
</Cards>

<Callout type="info">
If you're working on UTxO RPC and want to be added to this page, please send a PR to our public [documentation repo](https://github.com/utxorpc/docs)
</Callout>
5 changes: 0 additions & 5 deletions theme.config.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,4 @@ export default {
},
primaryHue: 178,
darkMode: false, //disable theme toggle
nextThemes: {
defaultTheme: "dark",
forcedTheme: "dark",
// enableSystem: false
}
}

0 comments on commit d5fc613

Please sign in to comment.