gOuroboros is a powerful and versatile framework for building Go apps that interact with the Cardano blockchain. Quickly and easily write Go apps that communicate with Cardano nodes or manage blocks/transactions. Sync the blockchain from a local or remote node, query a local node for protocol parameters or UTxOs by address, and much more.
This is not an exhaustive list of existing and planned features, but it covers the bulk of it.
gOuroboros includes automated tests that cover various aspects of its functionality, but not all. For more than the basics, manual testing is required.
make test
Various small test programs can be found in cmd/
in this repo or in the gOuroboros Starter Kit repo.
Some of them can be run against public nodes via NtN protocols, but some may require access to the UNIX socket of a local node for NtC protocols.
This is useful for testing changes to the handling of ledger types for a particular era. It will decode each block and either print a summary line for the block or an error.
Start by building the test programs:
make
Run the chain-sync test program against a public mainnet node, starting at the beginning of the Shelley era:
./gouroboros -address backbone.cardano.iog.io:3001 -network mainnet -ntn chain-sync -bulk -start-era shelley
This will produce a LOT of output and take quite a few hours to reach chain tip. You're mostly looking for it to get through all blocks of the chosen start era before hitting the next era or chain tip
You can use the block-fetch
program from gouroboros-starter-kit
to fetch a particular block and dump its details. You must provide at least
the block slot and hash. This is useful for debugging decoding problems, since it allows fetching a specific block and decoding it over and over.
BLOCK_FETCH_SLOT=120521627 BLOCK_FETCH_HASH=afd4c97e32003d9803a305011cbd8796e6b36bf61576567206887e35795b6e09 ./block-fetch