Skip to content

Cardano Wallet Backend - Rollbacks

Pre-release
Pre-release
Compare
Choose a tag to compare
@WilliamKingNoel-Bot WilliamKingNoel-Bot released this 17 Oct 07:26
v2019-10-16
5209c1a

Overview

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):

    • 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
    • Estimate transaction fee
    • Visualize wallet's UTxO distribution
    • Update wallet encryption passphrase
    • List transaction history
    • Submit already signed transactions
    • Serve wallet against cardano-http-bridge
    • Launch wallet against cardano-http-bridge
    • Serve wallet against Jörmungandr
    • Launch wallet against Jörmungandr
      • Allow passing extra options down to Jörmungandr
    • Get network information
  • A web server which exposes the following features (see API Documentation below):

    • Create and delete wallet
    • Get details of a particular wallet
      • A tip field is now included in the response
    • 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
    • List transaction history
      • A block height is now included in the timestamp
      • depth is now given in blocks instead of slots
      • Pending transactions now have an extra field pending_since
    • Submit already signed transactions
    • Get network information
    • Create Byron wallets
    • Delete Byron wallets
    • Get and List Byron wallets
  • Node.js-compatible IPC server with custom protocol

  • Data-persistence to disk via SQLite

  • Support for Ouroboros Genesis/Praos and proper chain following in the events of chain switches.

Known Limitations

  • ⚠️ Only Jörmungandr Genesis/Praos node is supported.
  • ⚠️ Submitting already signed transactions works only on Jörmungandr backend

Bug Fixes

Known Issues

  • Improper shutdown of iohk-monitoring switchboard #851
  • Error reported in the log after deleting a wallet #807
  • Providing -- --config node_config.yaml on launch makes wallet exit ugly #848

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-10-16/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-10-16/cardano-wallet.sh > /etc/bash_completion.d/cardano-wallet.sh
$ 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-10-16/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-10-16/cardano-wallet.sh > /etc/bash_completion.d/cardano-wallet.sh
$ 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

Weekly Reports

Changelog

Miscellaneous
PR Description
#847 bump versions to v2019.10.16
Byron Wallet Support
PR Description
#846 More integration tests for byron restore, get, list, delete
#841 Group tags by era (Shelley vs Byron) in swagger documentation
#839 Network Information endpoint adjustments
#837 Change the return type of migrateByronWallet to be a list of transactions.
#834 DaedalusIPC: Fix isWindows function
#829 add test Wallet has the same tip as network/information
#827 Add syncProgressRelativeToCurrentTime helper
#825 Add block heights in various places of the API (network info, transaction date ...)
#824 network information CLI command
#820 Network information endpoint - implementation
#817 Implement basic API functions for Byron-style wallets.
#816 Network information endpoint
#811 Provisional integration test code for migrate Byron wallets
#810 Fork API server context into random and sequential variants.
#809 Provide KeyToAddress instance for (Jormungandr n) RndKey type.
#806 Add test example values for Byron API types.
#799 Preliminary byron wallets integration tests
#795 Add skeletal Byron wallet API endpoints relating to migration.
#793 Put Byron wallet's endpoints into separate category: 'Byron Wallets' in spec
#790 Provide skeletal API endpoints for functions on Byron-style wallets.
#789 Apply hlint suggestions.
#784 Create ApiByronWallet type.
List Stake Pool
PR Description
#840 Make Jörmungandr NetworkLayer use raw blocks
#826 Add SlotNo and EpochNo newtypes for readability
#815 add pool production properties
#804 Calculate restore-progress via blockNo instead of slotNo
#798 Stake pools changes to DB
#787 Separate restoration code from WalletLayer to be moved to NetworkLayer
#785 Foundations for CLI tests of stake-pool list
#782 Add stake-pool list CLI along with unit tests
#770 Foundations for stake-pools integration tests
#765 Add simple StakePool.Metrics module for counting blocks
#764 Update Buildable instances for BlockHeader and Hash
#763 add jormungandr get stake distribution
#761 Tiny cleanup: simplify getBlock0H in faucet
#753 Make NetworkLayer polymorphic over block
#750 Decode block height in http-bridge backend
#748 add api types and handlers for listStakePools endpoint
#744 Don't crash because of other kinds of witnesses
#742 Dynamically get block0H in jörmungandr integration tests
Recovery Week - Week 37
PR Description
#723 Increase buildkite timeout to 120min for restoration benchmarks
#717 Fix windows build
Support Rollbacks
PR Description
#812 Enable rollbacks in wallet layer
#800 store headerHash in "BlockHeader"
#796 Make chain follower more resilient to unexpected failures
#794 Store sparse checkpoints in database
#792 Enable arbitrary slot ids in DB specs
#791 Make sure to purge address discovery state when clearing old checkpoints
#772 Wallet workers in separate databases
#768 Rename UnstableBlocks -> BlockHeaders
#759 Move node launching to network layer
#758 jormungandr: coerceBlock -> convertBlock
#757 Track pending transactions outside of the wallet model
#755 Rollback in network layer
#752 'RollbackTo' in the database state-machine testing
#751 Rollback: additional properties about transaction history during rollback
#745 Manual procedure for testing block height in Jörmungandr
#743 Add and use 'Buildable' instances for data-structures of the SQLite properties
#741 review DB spec files organization
#739 Wallet.Primitive: Tweak docs for Wallet type
#736 SQLite - remove pending checkpoint indirections
#735 prune dangling UTxOs after inserting a new checkpoint
#734 Add 'rollbackTo' to DBLayer
#733 Remove remaining hard-coded delays and ports in http-bridge integration tests
#732 add error handler to worker thread, log when it exits
#731 Prune dangling UTxO
#727 Purge old checkpoints (beyond k blocks)
#724 DBSpec: More testing of saving UTxO
#721 Unspecialise the core wallet layer
#693 Don't calculate blockHeights — read them from binary!
#686 Save multiple checkpoints in db in preparation to support rollbacks
#675 Initial unstable blocks state in Jormungandr NetworkLayer
Usability & Compatibility
PR Description
#843 Attempt to fix issues with nightly builds
#831 Buildkite: protect stack build dependencies from GC during build
#830 Jormungandr 0.6.1
#822 Jormungandr: Make it possible to launch passive node
#818 Fix for #767 + tests.
#814 cli: Assume utf-8 output encoding
#803 Jormungandr 0.6.0 in CI
#802 Buildkite: use new paths for cache and scratch
#801 db bench: Add disk space usage measurements for UTxO
#797 Read Tx History Benchmarks
#783 Jormungandr 0.5.5 in CI
#780 Jormungandr 0.5.4 in CI
#771 Fix integration tests
#762 Jormungandr 0.5.2 in CI
#749 Jormungandr 0.3.9999 > 0.5.0
#740 Nix: Fix flaky eval check
#738 Add benchmark for reading of UTxO
#737 Jörmungandr: 0.3.3 -> 0.3.9999
#730 nix: Make it possible to see and change the jormungandr version
#728 Remove unnecessary dependency on cardano-wallet-http-bridge.
#720 Run Jörmungandr integration tests on genesis/praos in CI
#719 add buildkite badge and rename other badges on README

Signatures

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