Skip to content

Cardano Wallet Backend - Jörmungandr

Pre-release
Pre-release
Compare
Choose a tag to compare
@WilliamKingNoel-Bot WilliamKingNoel-Bot released this 25 Jul 08:20
v2019-07-24
b9a860f

Overview

This release introduces a new target chain producer for the wallet backend: [email protected]. The software therefore comes in two different flavours though users are expected to pick only one and stick to it for the underlying networks behind cardano-http-bridge and Jörmungandr aren't compatible. The support for cardano-http-bridge is indeed provisional and will soon become legacy. New users should favor cardano-wallet-jormungandr for a better experience.

Program Platform Description
cardano-wallet-jormungandr.tar.gz
linux-x86_64
A CLI tool to start and interact with a wallet server using Jörmungandr as a chain producer. See Main Features below.
cardano-wallet-jormungandr.sha256
N/A
Checksum for the executable in cardano-wallet-jormungandr.tar.gz
cardano-wallet-http-bridge.tar.gz
linux-x86_64
A CLI tool to start and interact with a wallet server using cardano-http-bridge as a chain producer. See Main Features below.
cardano-wallet-http-bridge.sha256
N/A
Checksum for the executable in cardano-wallet-http-bridge.tar.gz
cardano-wallet.sh
linux-x86_64
Auto-completion script for cardano-wallet (works for all flavours)

Main Features

cardano-wallet

  • A command-line interface which exposes the following features (see CLI manual below):

    • Create and Delete wallet
    • Get details of a particular wallet
    • List all known wallets
    • Generate BIP-39 mnemonic sentence (english) of various sizes
    • Update wallet metadata
    • Create and submit transactions from a single wallet
    • List known (used or unused) addresses of a wallet
    • Serve wallet against cardano-http-bridge
    • Launch wallet against cardano-http-bridge
    • Serve wallet against Jörmungandr
    • Launch wallet against Jörmungandr
    • Estimate transaction fee
    • Visualize wallet's UTxO distribution
    • Update wallet encryption passphrase
  • A web server which exposes the following features (see API Documentation below):

    • Create and delete wallet
    • Get details of a particular wallet
    • List all known wallets
    • Update wallet metadata & wallet encryption passphrase
    • Create and submit transactions from a single wallet
    • List known (used or unused) addresses of a wallet
    • API and server logs
    • Estimate transaction fee
    • Visualize wallet's UTxO distribution
  • Node.js-compatible IPC server with custom protocol

  • Data-persistence to disk via SQLite

Known Limitations

  • ⚠️ Only one address derivation scheme is supported: sequential scheme (a.k.a. Icarus' address style or, addresses à la BIP-44).
  • ⚠️ Only Jörmungandr BFT node is currently supported

Bug Fixes

Ticket Title
#409 cardano-wallet server fails with unpleasant error when does not connect to http-bridge within a few seconds
#423 Starting mainnet server on testnet bridge results in unfriendly error message.
#551 Unstable order when reading transaction history

Known Issues

Installation Instructions

Please note that currently only Unix\Linux platform is supported.

with [email protected]

  1. Install [email protected] from the official repository.

  2. Download cardano-wallet-jormungandr.tar.gz and uncompress it in a directory that is on your $PATH, e.g. /usr/local/bin.

$ curl -L https://github.com/input-output-hk/cardano-wallet/releases/download/v2019-07-24/cardano-wallet-jormungandr.tar.gz | tar xz -C $HOME/.local/bin
  1. (optional) Download and install bash/zsh auto-completion script:
$ curl -L https://github.com/input-output-hk/cardano-wallet/releases/download/v2019-07-24/cardano-wallet.sh > /etc/bash_completion.d
$ source /etc/bash_completion.d/cardano-wallet.sh
  1. Start cardano-wallet --help and see available parameters.

with cardano-http-bridge

  1. Install cardano-http-bridge from our fork.

    • Install the rust toolchain.
    • In terminal run cargo install --git https://github.com/KtorZ/cardano-http-bridge.git --branch cardano-wallet-integration
    • make sure $HOME/.cargo/bin is on your $PATH
  2. Download cardano-wallet-http-bridge.tar.gz and uncompress it in a directory that is on your $PATH, e.g. /usr/local/bin.

$ curl -L https://github.com/input-output-hk/cardano-wallet/releases/download/v2019-07-24/cardano-wallet-http-bridge.tar.gz | tar xz -C $HOME/.local/bin
  1. (optional) Download and install bash/zsh auto-completion script:
$ curl -L https://github.com/input-output-hk/cardano-wallet/releases/download/v2019-07-24/cardano-wallet.sh > /etc/bash_completion.d
$ source /etc/bash_completion.d/cardano-wallet.sh
  1. Start cardano-wallet --help and see available parameters.

Documentation

Link Audience
API Documentation Users of the Cardano Wallet API
Haddock Documentation Haskell Developers using the cardano-wallet as a library
CLI Manual Users of the Cardano Wallet API

Changelog

Jörmungandr Integration Testing
PR Description
#476 Jörmungandr binary roundtrips
#496 Enable Integration Tests for Jörmungandr (Part III: Command-Line tests)
#503 Review deployment script to include both jormungandr and http-bridge
#504 Preliminary integration tests cleanup before turning on remaining ones on Jörmungandr
#506 PORT_ tests for Jörmungandr
#508 Create Jormungandr Config from command-line options
#509 Enable launcher specs on Jörmungandr,
#517 Better errors for --genesis-block and --bft-leaders
#520 Pass --quiet and --verbose options down to Jörmungandr
#523 Fix coin selection max number of inputs not diminishing as expected
#525 Jormungandr.NetworkSpec: Add more error path tests
#528 Timeout test for serve for jormungandr and http-bridge
#530 Jormungandr test coverage
#537 CLI golden tests for common command usage
#540 add unknown input unit tests in Jormungandr
#570 add tooBigTransaction Jormungandr unit tests
Review Coin Selection
PR Description
#536 Use tx max size & estimator to figure out the right input upper-bound in coin selection
Finalize 'Transactions' API endpoints
PR Description
#495 Transaction estimateMaxNumberOfInputs
#497 Add listTransactions in WalletLayer
#500 Integration tests covering ErrInputsDepleted case
#507 Add estimate fee endpoint
#511 ValidateSelection extension, errors and new estimate fee endpoint test cases
#516 add estimate fee CLI support
#524 DBLayer readTxHistory now returns a sorted list
#526 Introduce Iso8601Time type to support translation list CLI command.
#527 slot length based sleep duration
#532 Add transaction list CLI command.
#533 Tests for fee estimation and post tx when tx max size is reached for single and multi output tx
#541 Move Iso8601Range from Cardano.Wallet.Api to Cardano.Wallet.Api.Types
#543 Move splitAtLastOccurrence from bech32 to text-class.
#544 Add {From,To}HttpApiData instances for Iso8601Range.
#548 Extract out time formatting and parsing functions into separate module.
#556 Extend BlockchainParameters with slotsPerEpoch and block0Date
#565 add utxo statistics endpoint
#569 Rename SlotsPerEpoch to EpochLength
#574 Property-based tests for UTxO statistics
#518 Add ListTransactions to Api with stub handler (returning [])
Bugs & Debts - Sprint 27-28
PR Description
#419 nix: Add script for auto-regenerating and fix the build
#474 Basic logging tests for cardano-wallet serve and launch
#490 optparse-applicative for the command-line
#491 Windows build
#498 Introduce type MnemonicSize with accompanying tests.
#505 show default size for mnemonic --size using 'ToText' instance
#513 Sqlite: close database on exit
#514 Add tests for Show instances in network and transaction layers.
#515 Fall back to supportedCrossSystems
#519 Add wallet update passphrase CLI command.
#531 Buildkite: Run DB bench in the nightly pipeline,
#534 Make sure process is terminated on failure in Launcher specs
#535 More tests for update passphrase via CLI
#538 Network.HttpBridge: Add ErrNetworkInvalid
#539 SQLite: fix numerous DELETE requests when inserting checkpoint
#545 Sqlite: Remove \Table\ from Persistent field names
#546 Integration test to test case when connecting to the wrong network (http-bridge)
#547 Fix integration tests 'fixtureWalletWith' function
#550 disable flaky 'Launcher' specs in CI merges...
#552 fix hard-to-satisfy pre-condition in property test
#566 Better structure for the internal organization of our state directory
#568 additional info in help for --network argument
#576 SqliteSpec: Fix occasional failure in QSM tests

Signatures

Name Role Approval
Matthias Benkort @KtorZ Technical Team Lead ✔️
Piotr Stachyra @piotr-iohk QA Engineer ✔️
Tatyana Valkevych @tatyanavych Release Manager ✔️