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
- Host: GitHub
- URL: https://github.com/blinklabs-io/dingo
- Owner: blinklabs-io
- License: apache-2.0
- Created: 2024-03-29T22:16:59.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-24T18:19:04.000Z (24 days ago)
- Last Synced: 2025-04-24T19:30:22.902Z (24 days ago)
- Topics: blockchain, cardano, cardano-node, go, golang, ouroboros, utxorpc
- Language: Go
- Homepage:
- Size: 3.09 MB
- Stars: 24
- Watchers: 2
- Forks: 3
- Open Issues: 66
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Dingo
# Dingo
⚠️ This is a work in progress and is currently under heavy development
![]()
## 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 updateAdditional 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/
```