Skip to content

Commit 5807b2e

Browse files
authored
docs: General uScribe docs (#11)
1 parent cc8a3d7 commit 5807b2e

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

docs/UScribe.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# uScribe
2+
3+
This document provides technical documentation for _Chronicle Protocol_'s uScribe oracle system.
4+
5+
## Table of Contents
6+
7+
- [uScribe](#uscribe)
8+
- [Table of Contents](#table-of-contents)
9+
- [Overview](#overview)
10+
- [Consumers](#consumers)
11+
- [Security](#security)
12+
13+
## Overview
14+
15+
uScribe is a universal oracle able to serve arbitrary data based on the battle-tested and highly secure [Scribe](https://github.com/chronicleprotocol/scribe/blob/main/docs/Scribe.md) oracle system.
16+
17+
The uScribe oracle allows for unique customization via its [consumer](#consumers) architecture, giving data providers a chance to define onchain enforced rules over their data - all while enjoying the high security of the underlying _Chronicle Protocol_.
18+
19+
This is achieved via separating the data integrity verification from the data update and access logic, giving data providers the ability to enforce unique rulesets about their data directly onchain.
20+
21+
## Consumers
22+
23+
Consumers are the downstream contract implementations that implement application specific logic. By inheriting from the `UScribe.sol` base contract a consumer automatically implements the highly complex data security verfication and enables a data provider to use the [highest quality validator set](https://chroniclelabs.org/validators) to secure their data.
24+
25+
The internal [`_poke(bytes calldata payload)`](https://github.com/chronicleprotocol/uscribe/blob/main/src/UScribe.sol#L81-L116) function must be overwritten to define the data deserialization and state update executed when new data is being published. Because the integrity of the data is already verified by the _Chronicle Protocol_ the implementation must only concern itself with the actual application logic. Note that the data is an opaque data blob which can be deserialized and sanity checked in whichever way applicable.
26+
27+
Via the consumers pattern the uScribe oracle gives data providers the highest flexibility to control who and under which conditions is allowed to access their data. Consumers can implement arbitrary read functions to eg provide access to historical data, grant access based on specific conditions an address must fulfill, or even restrict access during times of uncertainty.
28+
29+
By separating the highly complex cryptographic verification from the application logic, uScribe enables everyone to build oracles on their own terms.
30+
31+
## Security
32+
33+
The data integrity verification is based on the battle-tested [Scribe](https://github.com/chronicleprotocol/scribe/) codebase which runs without security issues in production since 2023 and uses the most efficient [multi-signature verification](https://github.com/chronicleprotocol/scribe/blob/main/docs/Schnorr.md) live on Ethereum up to this date.

0 commit comments

Comments
 (0)