Skip to content

Commit 176208a

Browse files
authored
Merge pull request #307 from blinklabs-io/chore/update-readme
chore: update README
2 parents 202ca69 + 111c5c3 commit 176208a

File tree

1 file changed

+138
-29
lines changed

1 file changed

+138
-29
lines changed

README.md

Lines changed: 138 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,144 @@
1-
# gouroboros
2-
31
<div align="center">
4-
<img src="./assets/gOuroboros-logo-with-text-horizontal.png" alt="gOurobros Logo" width="640">
2+
<img src="./assets/gOuroboros-logo-with-text-horizontal.png" alt="gOurobros Logo" width="640">
3+
<br>
4+
<img alt="GitHub" src="https://img.shields.io/github/license/blinklabs-io/gouroboros">
5+
<a href="https://pkg.go.dev/github.com/blinklabs-io/gouroboros"><img src="https://pkg.go.dev/badge/github.com/blinklabs-io/gouroboros.svg" alt="Go Reference"></a>
6+
<a href="https://discord.gg/5fPRZnX4qW"><img src="https://img.shields.io/badge/Discord-7289DA?style=flat&logo=discord&logoColor=white" alt="Discord"></a>
57
</div>
68

7-
Go implementation of the Cardano Ouroboros network protocol
8-
9-
This is loosely based on the [official Haskell implementation](https://github.com/input-output-hk/ouroboros-network)
10-
11-
NOTE: this library is under heavily development, and the interface should not be considered stable until it reaches `v1.0.0`
12-
13-
## Implementation status
14-
15-
The Ouroboros protocol consists of a simple multiplexer protocol and various mini-protocols that run on top of it.
16-
This makes it easy to implement only parts of the protocol without negatively affecting usability of this library.
17-
18-
The multiplexer and handshake mini-protocol are "fully" working. The focus will be on the node-to-client (local) protocols,
19-
but the node-to-node protocols will also be implemented in time.
20-
21-
### Mini-protocols
22-
23-
| Name | Status |
24-
| --- | --- |
25-
| Handshake | Implemented |
26-
| ChainSync | Implemented |
27-
| BlockFetch | Implemented |
28-
| TxSubmission2 | Not Implemented |
29-
| LocalTxSubmission | Implemented |
30-
| LocalStateQuery | Partly Implemented |
31-
| KeepAlive | Implemented |
32-
| LocalTxMonitor | Implemented |
9+
## Introduction
10+
11+
gOuroboros is a powerful and versatile framework for building Go apps that interact with the Cardano blockchain. Quickly and easily
12+
write Go apps that communicate with Cardano nodes or manage blocks/transactions. Sync the blockchain from a local or remote node,
13+
query a local node for protocol parameters or UTxOs by address, and much more.
14+
15+
## Features
16+
17+
This is not an exhaustive list of existing and planned features, but it covers the bulk of it.
18+
19+
- [ ] Ouroboros support
20+
- [ ] Muxer
21+
- [X] support for multiple mini-protocols over single connection
22+
- [X] support for separate initiator and responder instance for each protocol
23+
- [ ] support for buffer limits for each mini-protocol
24+
- [ ] Protocols
25+
- [ ] Handshake
26+
- [X] Client support
27+
- [ ] Server support
28+
- [X] Keepalive
29+
- [X] Client support
30+
- [X] Server support
31+
- [ ] ChainSync
32+
- [X] Client support
33+
- [ ] Server support
34+
- [ ] BlockFetch
35+
- [X] Client support
36+
- [ ] Server support
37+
- [ ] TxSubmission
38+
- [ ] Client support
39+
- [ ] Server support
40+
- [ ] PeerSharing
41+
- [ ] Client support
42+
- [ ] Server support
43+
- [ ] LocalTxSubmission
44+
- [X] Client support
45+
- [ ] Server support
46+
- LocalTxMonitor
47+
- [X] Client support
48+
- [ ] Server support
49+
- LocalStateQuery
50+
- [X] Client support
51+
- [ ] Server support
52+
- [ ] Queries
53+
- [X] System start
54+
- [X] Current era
55+
- [X] Chain tip
56+
- [X] Era history
57+
- [X] Current protocol parameters
58+
- [X] Stake distribution
59+
- [ ] Non-myopic member rewards
60+
- [ ] Proposed protocol parameter updates
61+
- [ ] UTxOs by address
62+
- [ ] UTxO whole
63+
- [ ] UTxO by TxIn
64+
- [ ] Debug epoch state
65+
- [ ] Filtered delegations and reward accounts
66+
- [ ] Genesis config
67+
- [ ] Reward provenance
68+
- [ ] Stake pools
69+
- [ ] Stake pool params
70+
- [ ] Reward info pools
71+
- [ ] Pool state
72+
- [ ] Stake snapshots
73+
- [ ] Pool distribution
74+
- [ ] Ledger
75+
- [ ] Eras
76+
- [ ] Byron
77+
- [X] Blocks
78+
- [X] Transactions
79+
- [ ] TX inputs
80+
- [ ] TX outputs
81+
- [ ] Shelley
82+
- [X] Blocks
83+
- [X] Transactions
84+
- [X] TX inputs
85+
- [X] TX outputs
86+
- [ ] Allegra
87+
- [X] Blocks
88+
- [X] Transactions
89+
- [X] TX inputs
90+
- [X] TX outputs
91+
- [ ] Mary
92+
- [X] Blocks
93+
- [X] Transactions
94+
- [X] TX inputs
95+
- [X] TX outputs
96+
- [ ] Alonzo
97+
- [X] Blocks
98+
- [X] Transactions
99+
- [X] TX inputs
100+
- [X] TX outputs
101+
- [ ] Babbage
102+
- [X] Blocks
103+
- [X] Transactions
104+
- [X] TX inputs
105+
- [X] TX outputs
106+
- [ ] Conway
107+
- [ ] Blocks
108+
- [ ] Transactions
109+
- [ ] TX inputs
110+
- [ ] TX outputs
111+
- [ ] Transaction attributes
112+
- [X] Inputs
113+
- [X] Outputs
114+
- [X] Metadata
115+
- [ ] Fees
116+
- [ ] TTL
117+
- [ ] Certificates
118+
- [ ] Staking reward withdrawls
119+
- [ ] Protocol parameter updates
120+
- [ ] Auxiliary data hash
121+
- [ ] Validity interval start
122+
- [ ] Mint operations
123+
- [ ] Script data hash
124+
- [ ] Collateral inputs
125+
- [ ] Required signers
126+
- [ ] Collateral return
127+
- [ ] Total collateral
128+
- [ ] Reference inputs
129+
- [ ] Testing
130+
- [X] Test framework for mocking Ouroboros conversations
131+
- [ ] CBOR deserialization and serialization
132+
- [X] Protocol messages
133+
- [ ] Ledger
134+
- [ ] Block parsing
135+
- [ ] Transaction parsing
136+
- [ ] Misc
137+
- [X] Address handling
138+
- [X] Decode from bech32
139+
- [X] Encode as bech32
140+
- [X] Deserialize from CBOR
141+
- [X] Retrieve staking key
33142

34143
## Testing
35144

0 commit comments

Comments
 (0)