Skip to content

Cardano Wallet Backend - Transaction Support

Pre-release
Pre-release
Compare
Choose a tag to compare
@WilliamKingNoel-Bot WilliamKingNoel-Bot released this 24 Jun 12:21
v2019-05-24
8977931

Overview

Program Platform Description
cardano-wallet
linux-x86_64
A CLI tool to start and interact with a wallet server. See Key Features below.
cardano-wallet.sh
linux-x86_64
Auto-completion script for cardano-wallet
cardano-wallet-launcher
linux-x86_64
A commodity utility to launch a wallet server with a corresponding node backend.

This release brings full transaction support (on Byron network) to the API and the command-line. It also contains a few minor bug fixes and documentation improvements (as well as much more descriptive and user-friendly errors from the API and the command-line).

Key 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
  • 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

cardano-wallet-launcher

  • A command-line interface which starts and supervise both a wallet server and a cardano-http-bridge

Known Limitations

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

  • ⚠️ So far, only one backend is supported: cardano-http-bridge (run on the Byron-OFT era, experimental stability).

  • ⚠️ The wallet backend server is shipped with only an in memory storage which is volatile: restarting the server will erase the memory completely.

Bug Fixes

Ticket Title
#291 Shuffle statistical tests sometimes fail...

Known Issues

Ticket Title
#250 GET v2/wallets does not list wallets from oldest to newest
#260 No additional error message in case of 4xx responses
#324 Bech32 occassionally fails when decoding a string with an omitted character
#326 Cannot post transaction after updating wallet's passphrase
#333 Sending transaction to not-valid address (yet being base58 encoded string) gives HTTP 500 -> "Something went wrong"
#364 Transaction with amount 0 on http bridge fails with error HTTP 500
#397 CLI wrongly returns exit code 0 when providing not existing wallet id
#398 CLI unnecessarily asks for password when posting transaction from a non-existing wallet
#403 API swagger specification isn't a valid swagger file

Installation Instruction

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

  1. Install cardano-http-bridge.

    • Install the rust toolchain.
    • In terminal run cargo install --git https://github.com/input-output-hk/cardano-http-bridge.git
    • make sure $HOME/.cargo/bin is on your $PATH
  2. Download cardano-wallet and cardano-wallet-launcher and put it in the directory that is on your $PATH, e.g. /usr/local/bin. Make sure to add exec permissions on binary files:

    • chmod u+x cardano-wallet cardano-wallet-launcher
  3. Start cardano-wallet-launcher --help and see available parameters and follow instructions about how to install cardano-http-bridge if you haven't done already in point 1.

⚠️ The wallet server & launcher both expect a NETWORK ENV var to be available with one of the following value:

  • mainnet
  • testnet
  • staging (not supported)

This variable commands which network the software should connect to and interact with.

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

SQLite implementation for the DB Layer
PR Description
#246 Tidy up some of the formatting within Cardano.Wallet.DB.Sqlite.
#247 Set up database connection and create tables
#270 Relocate properties to DBSpec for further sharing
#272 Add functions for serializing keys as text
#276 Sqlite: add a test of cascading delete
#282 SQLite: Add put/readPrivateKey to DBLayer
#283 Sqlite: add checkpoints and transactions to DBLayer
#288 Sqlite: implement withLock from DBLayer
#293 Add indexes to certain SQLite table columns
#300 Sqlite: enable db property tests and fix failures
Jörmungandr High-Level Integration
PR Description
#244 Scaffold lib/jormungandr folder
#319 Include more examples from BIP-173 vectors in tests
#245 Jörmungandr block format header decoding
#248 Bech32 Library - port of reference implementation
#266 Add 'Initial' message-decoder with config parameters
#271 Use richer errors for Bech32 encoder and decoder
#273 Implement Jörmungandr Transaction-message decoder
#275 Docs, polish and config param 16
#277 Further enhancements to the Bech32 library.
#284 Build Jörmungandr on CI - another take
#287 Make CI faster especially on PR builds
#290 Remove redundant job condition in travis (already at top-level)
#296 Improve bech32 coveralls
#297 Add Jörmungandr integration tests
#305 Add genesis.yaml and instructions for how to use it
#309 Change jormungandr rest port to 8081
#312 Fix Bech32 decoder + encoder
Transaction Support
PR Description
#258 Enable transaction support in integration tests for cardano-http-bridge
#263 Integration test: Polling for wallet fixture & Better error handling
#269 Fix references to 'ApiTransaction' in swagger specification
#274 Implement ability to list addresses in the wallet layer, API and CLI
#281 First end-to-end transaction Integration test (with http-bridge)
#301 Transaction integration tests
#317 Review Fee Window for Tx scenarios
Miscellaneous / Technical Debts
PR Description
#241 Use more natural English in the CLI usage string.
#243 Start reviewing Primitive.Types docs
#249 Wallet Management Remaining Endpoints: update & update passphrase
#251 WALLETS_GET,LIST,DELETE integration tests
#252 update 4xx responses in API spec
#253 Add CLI manual to README
#254 Parse name and wallet-id as argument
#255 Fix warning about license-file of lib/cli/cardano-wallet-cli.cabal
#257 Wallet update integration tests
#261 Wallet update passphrase integration tests
#262 Add bors.toml
#264 Basic integration scenarios for CLI
#267 Fix inconsitent response code wallet update
#278 More integration tests for CLI (including minor fixes in CLI)
#279 Take into account out-of-process executions for code coverage
#285 Fix bors config
#289 show feature availability in API specification
#303 Release deployments tweaks + template
Bugs - Sprint 19/20
PR Description
#292 Fix Change Calculation
#295 fix shuffle tests in CoinSelectionSpec once and for all
#298 More Descriptive Errors (Part 1/2)
#299 More Descriptive Errors (Part 2/2)
#304 Remove temporary code from CLI for raw server errors + some small error fixes
#306 Fix documentation export
#307 When embedding the Swagger API specification, use a path that is relative to the project root
#308 Increase the fluency of English language messages for API errors.
#315 Update existing tests with expectations for error messages
#318 fix pointer reference to 'ApiAddress' in spec + update schema for errors

Signatures

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