Skip to content

Instantly share code, notes, and snippets.

@denisshevchenko
Last active July 6, 2018 10:06
Show Gist options
  • Save denisshevchenko/1ad8599a77b2c9578804e86a9a0e488e to your computer and use it in GitHub Desktop.
Save denisshevchenko/1ad8599a77b2c9578804e86a9a0e488e to your computer and use it in GitHub Desktop.

Short overview of Cardano project

Glossary

First of all, there's a Cardano glossary, please check it out: almost all important concepts are described here.

Cardano SL

Cardano SL (sometimes it's just "Cardano") means Cardano Settlement Layer. Its source code can be found here.

API

It's possible to use Cardano node without any GUI, because node provides "wallet API", so every client aplication (like Daedalus or even old-school curl) can work with this API.

Default port for wallet API is 8090, so if the node is launched locally, you can send a request like this:

$ curl -k --cert ./run/tls-files/client.pem https://localhost:8090/api/v1/wallets

There're two versions of wallet API: v0 and v1. Please note that version v0 is already deprecated! Swagger-based online documentation for wallet API can be found here:

Building from the source code

Instructions how to build Cardano from the source code can be found here.

Demo Cluster

We can launch local demo cluster using this command (from the root of cardano-sl):

$ ./scripts/launch/demo-with-wallet-api.sh

Please note that demo-cluster must be launched from tmux-session. By default you will see 4 tmux-panes with 4 nodes launched in it. You can think of demo-cluster as a local Cardano micro-network.

Tests

We can run basic tests using this command (from the root of cardano-sl):

$ stack test

Wallet integration tests

To run wallet integration tests, please use this command (from the root of cardano-sl):

$ ./scripts/test/wallet/integration.sh

Also there's a Nix-way to do the same:

$ nix-build release.nix -A walletIntegrationTests

Wallet API benchmarking

We have wallet API benchmarking tool, please read this instruction for technical details.

Please note that current version of benchmarking tool supports only API v0, but in some future it will be ported to v1.

Documentation

Official online documentation can be found here.

Internal technical documentation is a part of repository.

Contributors guide

Information about code style and quality can be found here.

Cardano Explorer

Official Cardano blockchain explorer can be found here.

Daedalus

Daedalus provides GUI for Cardano node. Since Cardano node doesn't know anything about Daedalus, it works with the node using node's wallet API.

Please node that Daedalus isn't just a GUI, it provides some important features by itself. For example, it generates 12-words mnemonic (wallet backup phrase) during wallet creation.

Daedalus source code can be found here.

Installer

There're Daedalus installers. Such an installer includes Daedalus itself and Cardano node, so when you start Daedalus application on your computer - technically you start Daedalus itself and Cardano node under the hood.

CI

We use Buildkite as a main CI-tool. You can log in to Buildkite here using your IOHK-email without password.

Cardano SL builds are here. Daedalus builds are here.

Please note that Buildkite isn't the only CI-tool we use. Hydra tool is using for other checks, for example, for wallet integration tests. This is an example of such a build.

Cardano SL project structure

Important parts of Cardano SL are:

  • core - core components of Cardano SL.
  • binary - binary serialisation and deserialisation.
  • block - operate on blocks for Cardano SL blockchain.
  • crypto - cryptographic primitives used in Cardano SL. It depends on a separate package cardano-crypto.
  • delegation - delegation mechanism.
  • networking - networking logic.
  • node - simple node, without wallet capabilities.
  • ssc - Shared Seed Computation (SSC) for selection of slot leaders in the Ouroborous Proof-of-Stake protocol.
  • txp - transactions processing.
  • update - Cardano SL update mechanism.
  • wallet - Cardano SL wallet, provides an API for clients.
  • wallet-new - wallet reinvented.

About wallet and wallet-new

wallet is the current implementation of the Cardano SL wallet (sometimes it's called "wallet backend"). Conceptually it's already old version, but now (in July 2018) we still use it in production. It provides API v0.

wallet-new is a completely new version of the wallet backend. It provides both API v0 and v1, and currently it still uses API handlers from the old wallet, but in the near future wallet-new will be released, and after that wallet will be marked as deprecated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment