-
Blund files (containing blocks and their undos) for older epochs (from zero up to current epoch minus two) are now consolidated into epoch/index file pairs. That means that the number of files to store the block chain for a single epoch is reduced from 21600 (one blund file for each slot in an epoch) to an epoch/index file pair. Consolidation happens on-the-fly in a background process.
-
Previously, exchanges could accidentally overload their wallet servers. We have added configurable throttling to the API service to prevent this problem. To configure this, setting, view the changes in the
configuration.yaml
file under thewallet
section. The API will now return a 429 error containing the microseconds to wait until retry. -
We can force an NTP-check when getting node-info via the API (
?force_ntp_check
query flag) (CO-325) -
The API provides an endpoint to retrieve basic statistics on the UTxO distribution of a wallet (
/api/v1/wallets/{walletId}/statistics
). (CO-325) -
cardano-sl exposes a new package
x509
with tooling for defining a PKI infrastructure from pure Haskell. This is basically an export of the internals of the toolcardano-sl-x509-generate
(CO-387)
- Add exception handling code in reporting exception handler, to prevent IOExceptions from killing the main thread. This was noticed when the network connection was interrupted, and the reporter died when it tried to report over the down network. (CDEC-470 / PR 3365)
-
Improve type safety (and as a consequence, API documentation) of account indexes (CBR-306)
-
The Swagger specification had names with illegal characters. These names where changed to be URL friendly. PR #3595
-
The creation of mnemonic doesn't throw anymore when provided words outside of the BIP39 English dictionnary. Instead, it returns an error value gracefully (CO-325)
-
Response from
JSONValidationError
are now also encoded inline (instead of a pretty-encoding with newlines) (DDW-318) -
[API BREAKING CHANGE] The behavior of
/api/v1/addresses/{address}
has been adjusted to reflect more accurately the meaning of ownership regarding addresses. The previous version of this endpoint failed with an HTTP error when the given address was unknown to the wallet. This was misleading since an address that is unknown to the wallet may still belong to the wallet. To reflect this, the V1 endpoint does not fail anymore as it used to when an address is not recognised and returns instead a new field 'is-ours' which indicates either that an address is ours, or that it is 'not-recognised'. (CBR-401) -
[API BREAKING CHANGE] A DELETE request to
/api/v1/wallets/{wallet}
now correctly fails with 404 if the wallet doesn't exist. Previously it incorrectly responded with 204.
-
Friendly error mistakes from deserializing invalid addresses instead of brutal 500 (CBR-283)
-
[API BREAKING CHANGE] Add
walletId
toWalletAlreadyExists
WalletLayerError (CBR-254) -
Small refactor of wallet Errors implementation to be more maintainable (CBR-26)
-
Content-Type parser is now more lenient and accepts
application/json
,application/json;charset=utf-8
and no Content-Type at all (defaulting toapplication/json
). -
The codebase now relies on the package
cryptonite
(instead ofed25519
) for Ed25519 implementation (CO-325) -
[API BREAKING CHANGE] Improve diagnostic for
NotEnoughMoney
error (CBR-461) -
When Content-Type's main MIME-type cannot fall back to 'application/json' then UnsupportedMimeTypeError is returned
-
Make an inventory of existing wallet errors and exceptions (CBR-307)
-
wallet-new README has been improved (especially on sections about testing) and updated (CO-325)
-
A subset of endpoints from the Cardano wallet API, used by cryptocurrency exchanges, was moved to the new Cardano REST API v1. The remaining endpoints will move from v0 to v1 in the next iteration of work. Cryptocurrency exchanges using the API are encouraged to update their integrations and move to API v1 because the old API is now regarded as deprecated and will be removed in future versions. (CBR-101)
-
The endpoint that provides information about the node (
/api/v1/node-info
) was expanded to include information about the node subscription status, which can be used to check if the Cardano node is connected to the network or not. (CBR-186) -
The generic message returned from Cardano node endpoint calls when the charset was not specified is replaced with a more descriptive error message to help users of the API troubleshoot the problem. (Wallet Backend - CBR-223)
-
It is now possible to send raw, CBOR serialized data to the network using the diffusion layer. Previously, the data had to be serialized before sending it to the network, which had a negative impact on performance. (CBR-277)
-
The formal specification of a wallet for Cardano (or any UTXO-based cryptocurrency) has been written and it is available here. (CBR-60)
-
Feedback about the current Wallet API has been collected from Exchanges (CBR-104).
-
Complete Peer Discovery (P2P) design (CDEC-157).
-
Specification of shared seed generation via VSS (CDEC-180).
-
Specification of Randomness Generation (CDEC-208).
-
As-is specifications of ATRedeem addresses (CDEC-366).
-
Sending and receiving blocks on the network now works better because of the following changes. First, deserialization performance has been improved by optimizing memory usage. Next, blocks are now downloaded concurrently without batching. Finally, block traversal is optimized by the introduction of 'forward links' which remove the need for header retrieval and serialization. (CDEC-49)
-
Block storage is now optimized by consolidating block and undo data in a single file. This change reduces disk use and improves performance when reading and writing blocks. In later Cardano versions, much greater optimizations for the storage of blocks will be introduced, so this is only an interim solution. (CDEC-293)
-
I/O spikes in traffic were being caused by large logs being flushed. This issue has been fixed. (CBR-83)
-
Due to improper handling of DNS failures, Cardano node would sometimes fail to reconnect to the network after an internet connection was interrupted and would need to be restarted. This issue has been fixed. (CDEC-259)
-
The endpoint (
/api/settings/time/difference
) for calculating the time difference between a user’s computer and Cardano network was returning an incorrect value in some cases. This was because the calculation was not properly handling the time needed to request current time from NTP servers and to get the response. As a result, some Daedalus users were prevented from using their wallet since Daedalus cannot be used if there is a time difference of more han 15 seconds. This issue has been fixed. (TSD-42)
-
Implement WalletActiveLayer & WalletPassiveLayer for wallet testing purposes (CBR-163).
-
Add integration deterministic tests for the Transaction endpoints (CBR-184).
-
Back port Timer to Pos.Diffusion.Subscription.Common (CDEC-243).
-
Message size limits should not be configurable (CDEC-260).
-
Upgrade to GHC 8.2.2 (CBR-51).
-
Fix AppVeyor hard limitation on Windows (CBR-268).
-
Fix tmux versions in demo-script (CO-295).
-
Clean script fails if file is missing (CO-316).
Bug fix release.
-
The Wallet Launcher now uses a lock file. This prevents problems on Windows if upgrading Daedalus while the old version is still running. (DEVOPS-872)
-
Fix character encoding error in the connect script of the Docker image. (DEVOPS-877)
These are the most important code changes which were included in release 1.2.0.
-
Add to the V1 API all endpoints required for Exchanges (CBR-103).
-
Development and execution of Benchmarking Tools for the Wallet V0 API (CBR-7, CBR-23 & CBR-88).
-
Detailed design and documentation of how to test a wallet. Pre-requisite for building regression tests (CBR-24).
-
Discriminate between publicly exposed wallet API endpoints and endpoints reserved to an internal IOHK usage (CBR-19).
-
Design and implementation of the new V1 API endpoints (CBR-16).
-
Optimize the way the mempool is used in the Wallet Backend (CBR-6).
-
Analyse the usage of database updates and introduce new atomic updates in the Wallet Backend (CBR-8).
-
Investigate and solve the balance discrepancy experienced by Bittrex (CBR-135).
-
Asynchronous restoration of a wallet from seed (CBR-90).
-
Add sorting and filtering capabilities to the wallet V1 API (CBR-20).
-
Document the new Wallet V1 API (CBR-102, CBR-183, CO-105 & CBR-278).
-
Write a devops guide for the Exchanges (CBR-137).
-
Fix wallet creation and backup when there are non-latin characters in wallet name (R120-4).
-
Fix issue where Daedalus remains stuck at "Connecting to network..." screen after updating version (CBR-282, R120-17).
Bug fix release.
-
When making a bug report in the wallet, ensure that usable log files exist before packing them into an archive.
-
Update the report-server version used in the Cardano network infrastructure, which fixes some issues in receiving bug reports.
Most important code changes which made to release 1.1.0.
-
A new API endpoint is created for providing information on how much time on user’s machine is out of sync with the global time.
-
An API endpoint for creating transactions is improved to support multiple destination addresses (transaction batching).
-
Logs are compressed when sent to the reporting server to reduce bandwidth usage.
-
The Cardano launcher configuration is improved with support for the YAML format to remove the need for custom scripts for launching the Cardano node.
-
A new option for launching the Cardano node allows usage of API endpoints without TLS encryption for easier testing while developing integrations.
-
Fixed improper node shutdowns, which caused some of the ‘connecting to network’ issues when using Daedalus. Improved Cardano node shutdown behavior by improvements to concurrency and exception handling, providing fixes to rocksdb database bindings.
-
Fixed transaction queuing and resubmission logic to remove some of the issues reported by cryptocurrency exchanges.
-
Several minor fixes to the update system for correctly receiving and installing updates from the blockchain to remove some of the reported cases of failed updates.
-
Fixed several space leaks in the operation of the Cardano node, fixing the Cardano node using all memory resources issue.
-
Fixed a bug with block retrieval, causing the extremely slow syncing after blockchain syncing reaches 99%.
-
Fixed a bug with blockchain syncing in case of unreliable internet connection, causing the blockchain syncing to never complete.
-
Fixed a bug causing block syncing to stop working in some cases when the Cardano node is left running for an extended period of time.
-
Improved performance of blockchain syncing by the removal of some unnecessary serialization and deserialization.
-
Fixed a bug causing the Cardano node to fail to start on slow computers, caused by a too-restrictive 5-second timeout.
-
Improved networking policy by allowing more time to connect to the network, resolving connectivity problems for users on slow internet connections.
-
Significant performance improvements for API endpoints for handling wallet operations, where the issues previously caused slow performance for users operating wallets with a large number of addresses, such as cryptocurrency exchanges.
-
Logging improved by making logs less verbose when that is not needed and by expanding the logs to cover more cases necessary for better issue diagnostics and easier quality assurance.
-
Improved automated issue reporting for some previously uncovered cases of Cardano node failures.
-
Migrated from Travis to Buildkite with nix-based workers as a CI solution.
-
Applied few minor fixes were applied to consensus logic.
-
Introduced auxx: tooling suite for developers to be able to quickly test and closely interact with node or network.
-
Introduced technical documentation for various parts of system, technical documentation is located at https://github.com/input-output-hk/cardano-sl/tree/release/1.1.0/docs.
-
Performed a series of huge refactorings to have better code decomposition, type definitions.
-
Implemented first methods for v1 wallet API (prototype).
TODO: write down
TODO: write down
TODO: write down
TODO: write down
TODO: Move from https://github.com/input-output-hk/cardano-sl/blob/f556682ab0f0e02e571998ae207139ecc1a24f84/docs/changelog/v0_6_0.md
Important fixes:
- Better Kademlia peer selection (based on explicitly kept timestamps)
- Message limits: accurate limits for few types, runtime-accurate handling (for the node to work correctly after an update comes in, w/o need to restart it)
- Accurate version handshake (there were few cases where it wouldn't be handled properly)
- MPC: check more than 50% of stake provided commitments
- Fixes for consensus bugs found on Testnet: transaction sorting, undo construction and duplicate block creation
Important codebase changes:
- Code split to separate components (for each logical part of Cardano SL)
- Combined config for wallet, node, dev modes
- Block handling refactoring (needed to write tests)
- Data relay refactoring
- Classy-like structure of monad stack
Minor features:
- P2P peers w/o explicit Kademlia ID provided (only IP and port)
- More efficient block space usage
- Consistent block creation logic (check block we just created is valid before applying and distributing)
- Ability to launch the node with static peers
- Auto-generated documentation available at https://cardanodocs.com/technical/explorer/api/
- Upgraded the client-side with the new version of the libraries, now using PureScript
0.11.5
- Added paging for blocks, simplified API
- Added and improved socket.io, simplified events
- Japanese translations
- ADA formatting using Lovelaces
- Speed optimizations for block and epoch fetching
- Corrected mobile issues and improved mobile experience
- Added Waypoint header for better UX