Skip to content

Cardano Wallet Backend - Upgrades

Pre-release
Pre-release
Compare
Choose a tag to compare
@WilliamKingNoel-Bot WilliamKingNoel-Bot released this 13 Sep 10:41
v2019-09-13
83a66da

Overview

This release upgrades the Jörmungandr integration to work with Jörmungandr@v0.3.3. It also offers a more complete HTTP API with new capabilities like accessing wallets' transaction history. Many changes introduced in the Haskell core library to prepare the support of legacy wallets aren't visible to the end-user but are available for Haskell developers.

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
  • 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
    • List transaction history
    • Submit already signed transactions
  • 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
  • ⚠️ Submitting already signed transactions works only on Jörmungandr backend

Bug Fixes

Known Issues

Installation Instructions

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

with Jörmungandr@v0.3.3

  1. Install jormungandr@v0.3.3 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-09-13/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-09-13/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-09-13/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-09-13/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

Weekly Reports

Changelog

List Stake Pools
PR Description
#701 Correct proof-length of praos/genesis blocks
Support Rollbacks
PR Description
#660 Cardano.Wallet.DB.Model
#662 Track block height in Wallet checkpoints,
#667 Improve documentation for function invariant.,
#668 Make applyBlocks return a list of incrementally-updated wallet states.,
#669 Make restoreBlocks safer by requiring non-empty list of blocks.,
#670 ModelSpec: add applyBlocks blockHeight property,
#672 SQLite: Prepare schema for rollback,
#673 Always call applyBlock, even if block is empty,
#674 Create a checkpoint for every block applied within restoreBlocks.,
#684 Only create checkpoints for unstable blocks,
Signed Transaction Submission
PR Description
#706 update API spec fpr external-tx (error codes),
#681 More integration tests for external tx,
#664 add cli cmd for externally-signed tx,
#663 Add descriptions and update statuses on Transaction endpoints in spec,
#661 Add in the genesis.yaml (for integration tests) a transaction with 10 outputs, to have it along transactions with one output each,
#638 submit external tx endpoint in API
Primitives for random derivation support
PR Description
#579 Move modules to make room for \random\ AD scheme
#581 Move properties common to both AD schemes to AddressDerivationSpec,
#582 Add key generation for random address scheme,
#587 Random address derivation path encoder/decoder,
#593 Implement CompareDiscovery for random AD scheme,
#597 Address derivation scheme as type parameter to WalletLayer,
#604 add dummy address to extended p2p,
#611 Housekeeping / Review location for binary-related code for the random scheme,
#612 HD random scheme key (de)serialization,
#614 relocate CBOR binary codecs to core,
#616 isOurs for random scheme - after refactoring,
#620 isOwned random derivation - after refactoring,
#622 Implement instance PersistState RndState,
#625 genChange impl for random scheme,
#654 Make DBLayer state machine tests polymorphic on AD state,
#655 Random AD: Change to hdPassphrase :: XPub -> Passphrase,
#657 AddressDiscovery.RandomSpec: Add properties of knownAddresses,
Finalize 'Transactions' API endpoints
PR Description
#580 Use start, end, and order query parameters to specify range in listTransactions.
#586 Raise an error if start > end in listTransactions API/CLI call.,
#588 Let DB.readTxHistory take SortOrder and Range SlotId,
#592 Remove defaultTxSortOrder,
#594 Provide improved generation of arbitrary UTCTime values.,
#595 Finalize filtering in listTransactions by converting Range UTCTime to Range SlotId,
#603 Specify start and end in transaction list is in ISO 8601 date-and-time format,
#605 Document the default sort order for listTransactions in the API specification.,
#606 Document that start must not be later than end in listTransactions.,
#607 fix start lower-bound for transaction filtering,
#608 Transaction list tests,
#613 Fix range boundary filtering for listTransactions.,
#617 Protect against construction of invalid arbitrary UTCTime values.,
#618 Fix List Range,
#626 Add clarity to slot arithmetic functions.,
#629 Make slotPred safe for all values of SlotId.,
#635 Add basic property tests for Range data type.,
#652 Test that slotStartTime . slotRange is idempotent.,
#653 Provide isSubrangeOf function for values of type Range.,
Bugs & Debts - Sprint 31-32
PR Description
#596 Replace hard-coded start time with named constant from Compatibility in benchmarks
Miscellaneous
PR Description
#510 Update iohk-monitoring and try again testing bracketObserveIO
#578 Attempt to test against jormungandr v0.3.1 in CI,
#584 Use shared libraries instead of symbolic links for code sharing.,
#589 Provisional network layer for integration with new Haskell nodes.,
#590 Update http-bridge testnet to new genesis,
#599 Launcher: use getExecutablePath to restart self,
#600 Remove unused dependency on quickcheck-instances.,
#601 disable flaky integration tests temporarily,
#609 Test against Jormungandr 0.3.2 in CI,
#610 KeyToAddress instances for RndKey,
#615 Nix updates,
#619 Enable Travis Notifications in Slack,
#624 change license to Apache 2.0,
#632 Fix account address decoder,
#633 Add block0 golden tests from jormungandr-lib,
#636 Rename slotStartingAtOrJust{After,Before} to slot{Ceiling,Floor}.,
#637 Safer slot arithmetic.,
#649 Extract http-bridge integration tests to separate travis job to overcome 50min time limit for a job,
#656 Add property for slotRangeFromTimeRange.,
#659 Test against Jormungandr 0.3.3 in CI,
#665 Update iohk-nix rev,
#705 Bump version to v2019-09-13,
Recovery Week - Week 37
PR Description
#671 Fix a selection of comments within cardano-wallet-core.
#676 Use safe library function tailSafe instead of locally-defined tailOrEmpty.,
#677 hercules-ci: disable tests until they are fixed,
#678 Review CI job execution and bors settings,
#679 Improve docs,
#680 Fix documentation comments in Cardano.Wallet.,
#682 remove provisional prototypical code for new haskell nodes,
#683 Allow more iterations for tests of isSubrangeOf with preconditions.,
#687 nix: Add jcli to the shell,
#688 Buildkite Stack build,
#689 Jormungandr: Prevent integration tests from clobbering each other,
#690 Add missing descriptions for CLI commands,
#691 display call stack for unsuccessful unsafe calls,
#692 review documentation for Primitive.Mnemonic,
#694 Increase Bors timeout from 1 hour (3600 secs) to 1 hour 30 mins.,
#695 rework code coverage step in buildkite,
#696 Reuse minimum slot and block definitions.,
#697 Remove inconsistent insertedAtTime lens.,
#699 Enable buildkite for bors, and remove checks & tests from Travis,
#700 Buildkite: Only run integration tests on Bors,
#702 Buildkite: Fix nightly stack cache clean step,

Signatures

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