Skip to content
This repository has been archived by the owner on Aug 18, 2020. It is now read-only.

Latest commit

 

History

History
690 lines (446 loc) · 57.2 KB

CHANGELOG.md

File metadata and controls

690 lines (446 loc) · 57.2 KB

CHANGELOG

Cardano SL vNEXT

Improvements

Cardano SL 3.2.0

Improvements

  • Improve DNS subscription valency and fallback behaviour #4243
  • Single-machine multi-node mixed cluster CI prerequisites #4247

Cardano SL 3.1.0

Features

  • A new endpoint to calculate the walletid of a given mnemonic #4237

Fixes

  • Correct change category in 3.0.3 and add section for unreleased changes #4232

Improvements

  • Configuration files and environments map moved to iohk-nix #4227
  • License update to apache 2 #4242

Cardano SL 3.0.3

Improvements

  • Refactor scripts to use nix-tools and create windows daedalus-bridge output #4183
  • Remove Report Server #4194
  • New testnet Genesis #4193
  • Add explorer endpoint to fetch a range of blocks #4198
  • Add python service to dump explorer data to PostgreSQL #4202
  • Security updates for explorer frontend #4201

Cardano SL 3.0.2

Fixes

  • Fix issue that caused the node to lose sync with the chain in the OBFT era and then fail to re-sync once out of sync (CBR-525 #4153)

  • Fix wrong balance and payment reporting on coin selection failures (CO-450 #4159)

  • Additional coin selection fallback to cope with transaction filling up during random-improve selection (CO-450 #4159)

  • Additional guard to prevent too big transactions to be submitted (CO-449 #4131)

Cardano SL 3.0.1

Fixes

  • Fix inconsistent 'hasSpendingPassword' resolution from legacy data layer migration (DEVOPS-1250 #4112)

Cardano SL 3.0.0

Fixes

  • Limit the rate of dns queries to avoid reaching the limit of open files, try resolve dns in ntp client every 30s rather than only once (CDEC-659 #4008)

  • Fix incoherent To/FromJSON instances in core, chain, lib. Alter TxValidationRules datatype. (CBR-502 #4037)

  • Fix target name to correct integration tests (CO-437 #3794)

Features

  • Support for (unused) addresses batch import (CO-447 #4040)

  • Add script-runner tool to automate cluster-level testing (DEVOPS-1131: #3916 #4057)

  • Node Monitoring API: nodes now serve their own settings and info via a web server via a /api/v1/node-settings and /api/v1/node-info (still proxied by the wallet backend) (#110)

    • Set up scaffolding for node API #3788
    • Wire Up Node Api #3851
    • Unify Node APIs #3882
    • Node API Jsend errors #3910
    • Node API Documentation Server #3925
    • Implement IPC shutdown #3939
    • Implement Update endpoints for the Node API #3957
    • Parse required CLI params in cluster #3987
    • Fix Arbitrary instance for APIResponse #3989
    • Special case 404 errors with empty bodies #3995
    • Disable node monitoring API by default #4051
  • Additional node settings exposed through the wallet backend API in /api/v1/node-settings. This is in order to align and be on-par with the new node monitoring API. #4045 Added settings:

    • slotId: The current slot and epoch
    • slotCount: The number of slots per epoch
    • maxTxSize: The largest allowed transaction size in bytes
    • feePolicy: The fee policy, in flat Lovelace and variable Lovelace/byte
    • securityParameter: The consensus security parameter (usually referred as k in the papers)
  • Implement block creation and validation for the OBFT ConsensusEra.

  • Review node-info 'localTimeInfo' API to include pending statuses (CBR-505 #4099)

Improvements

  • Removal of V0 API & Legacy Data Layer (CO-372)

    • Remove V0 and Legacy* modules (CO-394 #3667)
    • Move [email protected] to [email protected] (CO-374 #3663)
    • Replace remaining uses of Pos.Util.Mnemonic (CO-401 #3663)
    • Remove wallet dependency from Cardano/Wallet/Server/Plugins.hs (CO-403 #3686)
    • Remove wallet dependency from Cardano/Wallet/API/V1/Swagger/Example.hs (CO-404 #3687)
    • Remove wallet dependency from Cardano/Wallet/API/V1/Types.hs (CO-405 #3688)
    • Remove wallet dependency from Cardano/Wallet/API/V1/Swagger.hs (CO-406 #3689)
    • Remove wallet dependency from wallet-new/src/Cardano/Wallet/Kernel/Pending.hs & wallet-new/src/Cardano/Wallet/Kernel/Decrypt.hs (CO-402 #3683)
    • Tweaks to Cardano.Wallet.Kernel.Decrypt (CO-408 #3699)
    • Remove wallet dependency from wallet-new/src/Cardano/Wallet/Kernel/Migration.hs (CO-407 #3836)
    • Remove wallet-new/src/Cardano/Wallet/API/V1/Migration/Types.hs (CO-380 #3700)
    • Remove wallet dependency from wallet-new/src/Cardano/Wallet/Orphans/* (CO-413 #3707)
    • Accommodate LegacyHandlers refactoring result and investigate possibility of removing Core.Coin instances (CO-422 #3809)
    • Follow-up on CO-373 (Move Mnemonic module into Kernel/BIP39) (CO-426 #3738)
    • Cleanup references to cardano-sl-wallet across cardano-sl (CO-430 #3750)
    • Remove bench package from cardano-sl-wallet-new (CO-442 #3828)
    • Remove wallet from cardano-sl codebase (CO-443 #3837)
  • Rewritten and redesigned integration tests framework (CO-356 #4047)

  • Simplify prefixing of transaction to account for foreign transactions in inputs rather than process them from outputs (CO-432 #3768)

  • Implement validation rule that limits the Attributes size in a Tx (CDEC-643: #3878)

  • Add proper mapping of kernel addresses to API errors when batch import of addresses (CO-447 #4084)

Documentation

  • Remove redundant [] in backupPhrase doc example (#4038)

  • New "common use-case" entry the API doc about importing addresses (CO-447 #4040)

  • Links to specific sections of the API doc now work #4064

Cardano SL 2.0.1

Fixes

  • Relocate fee sanity check and make it relative to each transaction (rather than absolute) (CO-446 #3993
  • Correction to block retrieval concurrency and exception handling, so that it will recover in case of certain network failure conditions. (CDEC-658 #3998)

Cardano SL 2.0.0

Features

Fixes

  • Make productionReporter more robust

    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, #3365)

  • Improve type safety (and as a consequence, API documentation) of account indexes (CBR-306, #3086)

  • 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, #3619)

  • [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, #3646)

  • [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.

  • Fix commitAndReleaseBuffer: invalid argument (invalid character) error in Docker image (DEVOPS-877, #3173)

  • Fix deadlock triggered by update/shutdown (CBR-424 #3731)

  • Fix space leak during network syncing (CBR-454 #3679)

  • Fix benchmark on OSX (CSL-2517 #3348)

  • Fix logger implementation, enabling pure logger to be used without side-effects (CO-409, #3697)

  • Crash host node when the underlying wallet dies (CBR-263, #3584)

  • Ensure correct file permissions are set when generate x509 certificates (CBR-470, #3773)

  • Fix checksum verification in BIP-39 implementation (CO-298, #3013)

  • Fix wallet starting bug introduced by CDEC-509 (CBR-400: #3486)

  • Fix Haddock errors (CDEC-585: #3614)

  • Fix restoration ignoring new accounts in legacy data layer (DEVOPS-1153: #3911)

  • Tweaks to Cardano Explorer for Testnet (DEVOPS-1094, #3817, DEVOPS-1121, #3831, RCD-48, #3883)

  • Fix bug in Windows launcher where upgrading to 2.0.0 would terminate any other Daedalus wallets that were running (RCD-52, #3926)

Improvements

  • Friendly error mistakes from deserializing invalid addresses instead of brutal 500 (CBR-283)

  • [API BREAKING CHANGE] Add walletId to WalletAlreadyExists WalletLayerError (CBR-254)

  • Small refactor of wallet Errors implementation to be more maintainable (CBR-26, #3429)

  • Content-Type parser is now more lenient and accepts application/json, application/json;charset=utf-8 and no Content-Type at all (defaulting to application/json) (CO-369, #3596)

  • The codebase now relies on the package cryptonite (instead of ed25519) for Ed25519 implementation (CO-325)

  • [API BREAKING CHANGE] Improve diagnostic for NotEnoughMoney error (CBR-461, #3702)

  • When Content-Type's main MIME-type cannot fall back to 'application/json' then UnsupportedMimeTypeError is returned (CO-416, #3727)

  • Add cardano-node --no-tls option to wallet (DEVOPS-879, #3074)

  • Improve error reporting when a worker thread in cardano dies (DEVOPS-1063, #3664)

  • Add failure injection options to wallet for Daedalus testing (DEVOPS-1086, #3787)

  • Benchmarking support (PB-20 PB-95 #3670)

  • Reorganize and clean up core packages

  • Improve readability and execution of various integration tests

  • Add integration tests to test redemption of certificates (CBR-398, #3525)

  • Removal of partial field accessors from HandlerSpec, InductiveValidationError, InvariantViolation and ValidationResult data types.(CDEC-403: #3263)

  • Remove partial field accessors for FakeTxsHistory data type (CDEC-285: #3168)

  • Review implementation of the BIP39 (Mnemonic Words) implementation

  • Add a test which checks if the configuration can be correctly parsed

  • Add Utxo not enough fragmentation error handling and multi-output transaction tests

Documentation

Continuous Integration (CI)

Cardano SL 1.3.2

Fixes

  • Upgrade block version to 0.2.0 to limit max block size to 32 KB.

  • Override max block size for epoch boundary blocks (also called genesis blocks) to have a limit of 1.953 MB.

Cardano SL 1.3.1

Features

  • Add genesis data for the Cardano SL public Testnet. (#3265, #3349, #3585, DEVOPS-398)

  • Add a "faucet" API to dispense Testnet Ada to users. (#2939, DEVOPS-834)

  • Support additional fields for Daedalus bug reports in the report server. (#3394, TSD-116)

Fixes

  • Fix a case where the error reporting system can cause the node to stop syncing. (#3294, CDEC-469, CDEC-439)

  • Adjust the address format to distinguish testnet and mainnet addresses. (#3540, #3556, #3558, #3561, #3578, #3583, #3618, #3659, #3685, CO-353, CO-354)

  • Add a workaround for the RocksDB issue which prevented Daedalus Windows users with non-ASCII usernames from starting the wallet. (#3465, CBR-391)

  • Add support to cardano-sl-launcher for launching Daedalus in "safe mode". (#3421, DDW-380)

  • Fix the x509 certificate generation tool to allow using IP addresses as subject alternate names. (#3390, DEVOPS-992)

  • Fix display of the git version in Cardano Explorer. (#3386, DEVOPS-999)

  • Update Windows build script to use a newer openssl version. (#3397, DEVOPS-1003)

  • Fix a build system issue which caused slow builds. (#3622, DEVOPS-916)

Cardano SL 1.3.0

Features

  • Cardano wallet API v1 for the exchanges

    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)

  • Subscription status added to node information

    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)

  • Improved error message for missing charset in API calls

    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)

  • Support for sending raw data on the network

    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)

Specifications & documentation

  • Formal specification for new wallet backend

    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).

Fixes and improvements

  • Performance improvements for sending and receiving blocks

    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)

  • Optimised block storage

    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)

  • High (and recurrent) I/O traffic in wallet

    I/O spikes in traffic were being caused by large logs being flushed. This issue has been fixed. (CBR-83)

  • Failure to reconnect to the network

    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)

  • Wrong time difference calculation between user’s computer and the network

    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)

Testing

  • Implement WalletActiveLayer & WalletPassiveLayer for wallet testing purposes (CBR-163).

  • Add integration deterministic tests for the Transaction endpoints (CBR-184).

Chores

  • 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).

Cardano SL 1.2.1

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)

Cardano SL 1.2.0

These are the most important code changes which were included in release 1.2.0.

Features

  • 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).

Specifications & documentation

  • Document the new Wallet V1 API (CBR-102, CBR-183, CO-105 & CBR-278).

  • Write a devops guide for the Exchanges (CBR-137).

Bug fixes

  • 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).

Cardano SL 1.1.1

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.

Cardano SL 1.1.0

Most important code changes which made to release 1.1.0.

Features

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

Bug fixes and improvements

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

Other work

  • 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).

Mainnet 1.0.3

TODO: write down

Mainnet 1.0.2

TODO: write down

Mainnet 1.0.1

TODO: write down

Mainnet 1.0.0

TODO: write down

Testnet 0.6

TODO: Move from https://github.com/input-output-hk/cardano-sl/blob/f556682ab0f0e02e571998ae207139ecc1a24f84/docs/changelog/v0_6_0.md

Testnet 0.5

Core

Important fixes:

  1. Better Kademlia peer selection (based on explicitly kept timestamps)
  2. 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)
  3. Accurate version handshake (there were few cases where it wouldn't be handled properly)
  4. MPC: check more than 50% of stake provided commitments
  5. Fixes for consensus bugs found on Testnet: transaction sorting, undo construction and duplicate block creation

Important codebase changes:

  1. Code split to separate components (for each logical part of Cardano SL)
  2. Combined config for wallet, node, dev modes
  3. Block handling refactoring (needed to write tests)
  4. Data relay refactoring
  5. Classy-like structure of monad stack

Minor features:

  1. P2P peers w/o explicit Kademlia ID provided (only IP and port)
  2. More efficient block space usage
  3. Consistent block creation logic (check block we just created is valid before applying and distributing)
  4. Ability to launch the node with static peers

Explorer 0.2

  1. Auto-generated documentation available at https://cardanodocs.com/technical/explorer/api/
  2. Upgraded the client-side with the new version of the libraries, now using PureScript 0.11.5
  3. Added paging for blocks, simplified API
  4. Added and improved socket.io, simplified events
  5. Japanese translations
  6. ADA formatting using Lovelaces
  7. Speed optimizations for block and epoch fetching
  8. Corrected mobile issues and improved mobile experience
  9. Added Waypoint header for better UX