Cardano Wallet Backend - Rollbacks
Pre-release
Pre-release
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
- 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
- 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
- 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 Jö[email protected]
-
Install [email protected] from the official repository.
-
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
- (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
- Start
cardano-wallet --help
and see available parameters.
with cardano-http-bridge
-
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
-
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
- (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
- 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
- Week 37 - 2019-09-13
- Week 38 - 2019-09-20
- Week 39 - 2019-09-27
- Week 40 - 2019-10-04
- Week 41 - 2019-10-11
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 | ✔️ |