An open API service indexing awesome lists of open source software.

https://github.com/blinklabs-io/dingo

Cardano Blockchain Data Node
https://github.com/blinklabs-io/dingo

blockchain cardano cardano-node go golang ouroboros utxorpc

Last synced: 18 days ago
JSON representation

Cardano Blockchain Data Node

Awesome Lists containing this project

README

        

# Dingo


Dingo Logo


GitHub
Go Report Card
Go Reference
Discord

# Dingo

⚠️ This is a work in progress and is currently under heavy development


dingo screenshot

## Running

Dingo does not support a configuration file of its own and uses environment
variables to modify its own behavior.

This behavior can be changed via the following environment variables:

- `CARDANO_BIND_ADDR`
- IP address to bind for listening (default: `0.0.0.0`)
- `CARDANO_CONFIG`
- Full path to the Cardano node configuration (default:
`./config/cardano/preview/config.json`)
- Use your own configuration files for different networks
- Genesis configuration files are read from the same directory by default
- `CARDANO_DATABASE_PATH`
- A directory which contains the ledger database files (default:
`.dingo`)
- This is the location for persistent data storage for the ledger
- `CARDANO_INTERSECT_TIP`
- Ignore prior chain history and start from current position (default:
`false`)
- This is experimental and will likely break... use with caution
- `CARDANO_METRICS_PORT`
- TCP port to bind for listening for Prometheus metrics (default: `12798`)
- `CARDANO_NETWORK`
- Named Cardano network (default: `preview`)
- `CARDANO_PRIVATE_BIND_ADDR`
- IP address to bind for listening for Ouroboros NtC (default:
`127.0.0.1`)
- `CARDANO_PRIVATE_PORT`
- TCP port to bind for listening for Ouroboros NtC (default: `3002`)
- `CARDANO_RELAY_PORT`
- TCP port to bind for listening for Ouroboros NtN (default: `3001`)
- `CARDANO_SOCKET_PATH`
- UNIX socket path for listening (default: `dingo.socket`)
- This socket speaks Ouroboros NtC and is used by client software
- `CARDANO_TOPOLOGY`
- Full path to the Cardano node topology (default: "")
- `CARDANO_UTXORPC_PORT`
- TCP port to bind for listening for UTxO RPC (default: `9090`)
- `TLS_CERT_FILE_PATH` - SSL certificate to use, requires `TLS_KEY_FILE_PATH`
(default: empty)
- `TLS_KEY_FILE_PATH` - SSL certificate key to use (default: empty)

### Example

Running on mainnet (:sweat_smile:):

```bash
CARDANO_NODE=mainnet ./dingo
```

Dingo will drop a `dingo.socket` file which can be used by other clients, such
as `cardano-cli` or software like `adder` or `kupo`. This has only had limited
testing, so success/failure reports are very welcome and encouraged!

## Features

- [x] Network
- [x] UTxO RPC
- [x] Ouroboros
- [x] Node-to-node
- [x] ChainSync
- [x] BlockFetch
- [x] TxSubmission2
- [x] Node-to-client
- [x] ChainSync
- [x] LocalTxMonitor
- [x] LocalTxSubmission
- [x] LocalStateQuery
- [ ] Peer governor
- [x] Topology config
- [ ] Peer churn
- [ ] Ledger peers
- [x] Connection manager
- [x] Inbound connections
- [x] Node-to-client over TCP
- [x] Node-to-client over UNIX socket
- [x] Node-to-node over TCP
- [x] Outbound connections
- [x] Node-to-node over TCP
- [ ] Ledger
- [x] Blocks
- [x] Block storage
- [ ] Chain selection
- [x] UTxO tracking
- [x] Protocol parameters
- [ ] Certificates
- [x] Pool registration
- [x] Stake registration/delegation
- [ ] Governance
- [ ] Transaction validation
- [ ] Phase 1 validation
- [x] UTxO rules
- [ ] Witnesses
- [ ] Block body
- [ ] Certificates
- [ ] Delegation/pools
- [ ] Governance
- [ ] Phase 2 validation
- [ ] Smart contracts
- [x] Mempool
- [x] Accept transactions from local clients
- [x] Distribute transactions to other nodes
- [x] Validation of transaction on add
- [x] Consumer tracking
- [x] Transaction purging on chain update

Additional planned features can be found in our issue tracker and project boards.

[Catalyst Fund 12 - Go Node (Dingo)](https://github.com/orgs/blinklabs-io/projects/16)

[Catalyst Fund 13 - Archive Node](https://github.com/orgs/blinklabs-io/projects/17)

Check the issue tracker for known issues. Due to rapid development, bugs happen
especially as there is functionality which has not yet been developed.

## Development / Building

This requires Go 1.23 or better is installed. You also need `make`.

```bash
# Build
make
# Run
./dingo
```

You can also run the code without building a binary, first
```bash
go run ./cmd/dingo/
```