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):
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.
-
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/binis on your$PATH
-
Download
cardano-walletandcardano-wallet-launcherand 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
-
Start
cardano-wallet-launcher --helpand see available parameters and follow instructions about how to installcardano-http-bridgeif you haven't done already in point 1.
⚠️ The wallet server & launcher both expect a
NETWORKENV 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 | ✔️ |