All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
7.1.0 - [TBD]
Message signing (CIP-8)
- support for message signing (CIP-8, CIP-30)
7.0.1 - [TBD]
- using
slice
instead ofBuffer.subarray
to avoid a bug (see #37)
7.0.0 - [January 17th 2024]
Support for Conway era
- export of Conway-era keys (DReps, Constitutional Committee Hot and Cold keys)
- Conway era transaction body items (new certificates, voting procedures, treasury, donation)
- optional CBOR tag 258 in CDDL sets
- support for reduced features on Nano S (since Ledger app v7, due to memory limits)
- names of credential types (e.g. StakeCredentialParamsType -> CredentialParamsType)
- increased max. URL and DNS name length to 128
6.0.0 - [February 16th 2023]
Support for CIP0036 voting
-
export of CIP36 vote keys (1694'/1815'/...)
-
support for CIP36 voting (signing of vote-cast fragments with 1694 vote keys)
-
support for CIP36 features (vote key registration in transaction auxiliary data)
-
support for Ledger Stax (upgraded ledgerhq transport libraries)
-
support for Node v18
- API for Catalyst registration (it is still possible to use CIP-0015 in auxiliary data)
- type of requiredCount field in NativeScriptParamsNofK
5.1.0 - [September 9th 2022]
Support for Babbage era
- support for new Babbage transaction body elements (total collateral, collateral return output, reference inputs)
- support for post_alonzo_transaction_output (as described in https://github.com/input-output-hk/cardano-ledger/blob/master/eras/babbage/test-suite/cddl-files/babbage.cddl)
- do not provide an unnecessary witness for stake registration certificate (the path in the certificate is shown to the user, but a witness for the path is no longer asked from the Cardano Ledger app; if you want it, add the path to
SignTransactionRequest.additionalWitnessPaths
)
5.0.0 - [March 31st 2022]
Support for Alonzo era (Plutus scripts)
- support for all new Alonzo transaction elements
- support for stake credentials given by key hash
- a new transaction signing mode for Plutus transactions
- compatibility with Cardano Ledger app v4.0.0
- KeyStakeCredentialParams type replaced by KeyPathStakeCredentialParams, KeyHashStakeCredentialParams added
- several items related to hex strings in exported types have been renamed
4.0.0 - [October 27th 2021]
Support for script elements in transactions and addresses.
- support for address types with script hashes (all Shelley address types are now supported)
- support for script elements in transactions via a new
TransactionSigningMode.MULTISIG_TRANSACTION
- support for mint field in transaction body
- native script hash derivation call
- validation of canonical ordering of cbor map keys compliant with CIP 21 (withdrawals, token policy ids in outputs and mint, asset names within an asset group)
- API changes: replacing paths with stake credentials in various address and transaction parameters breaks compatibility
3.2.1 - [June 9th 2021]
Patch update removing the requirement to order token bundle canonically.
- Temporarily remove asset groups canonical ordering validation: vacuumlabs/ledgerjs-cardano-shelley#111
3.2.0 - [May 24th 2021]
Added support for signing pool registration certificates as operator, support for pool retirement certificates within the signTransaction()
call and added a new call for operational certificate signing - signOperationalCertificate()
.
TransactionSigningMode.POOL_REGISTRATION_AS_OPERATOR
to allow signing pool registration as operatorCertificateType.STAKE_POOL_RETIREMENT
signOperationalCertificate()
call
PoolRegistrationParams.poolKey
has been changed from astring
toPoolKey
in order to support pool operator signing -poolKey
can now also be sent as a pathPoolRegistrationParams.rewardAccount
has been changed from astring
toPoolRewardAccount
in order to support pool operator signing -rewardAccount
can now also be sent as pathAssetGroup.tokens
andTxOutput.tokenBundle
are required to be in CBOR canonical order
3.1.0 - [May 11th 2021]
Added support for Catalyst voting registration metadata creation within the signTransaction()
call, introduced in Ledger Cardano app version 2.3.2.
- automatically generated flow types from typescript source: vacuumlabs/ledgerjs-cardano-shelley#102
- added Catalyst voting registration support: vacuumlabs/ledgerjs-cardano-shelley#99
- relaxed validation of
signTransaction()
callttl
andvalidityIntervalStart
parameter to allow zero value AddressParamsReward
now requires staking key path as thestakingPath
property instead ofspendingPath
(which was misleading)
- validation of zero numerical values, previously the library was incorrectly failing for any zero value passed
3.0.0 - [April 13th 2021]
Major release. Switched from flow to TypeScript.
- All API calls now use single structured argument instead of long list of partial arguments.
(For the overview see
src/Ada.ts
changes in vacuumlabs/ledgerjs-cardano-shelley#61) AddressTypeNibble
enum renamed toAddressType
derive/showAddress
now takenetwork
as an explicit parameter instead ofnetworkIdOrProtocolMagic
field inAddressParams
- all 64-bit integers that were previously stored in fields ending with
Str
(e.g.feeStr
) are now without the suffix (i.e.fee
) and take a "bigint-like" argument which can beNumber
(if it is small enough, i.e.<= Number.MAX_SAFE_INTEGER
), string, or nativeBigInt
. Non-native bigint implementations are not supported and should be converted to strings) - all "tagged enums" now use
{type: SomeType.Variant, params: SomeTypeVariantParams}
typing. This unified previously mixed tagging with sometimes arbitrarily variant fields into the parent type. As part of this change- Relays are now typed properly with variants
- TxOutput was separated into "amount" part (amount & tokenBundle) &
destination
specification.- Destination is now explicitly of type
DestinationType.ThirdParty
orDestinationType.DeviceOwned
to clarify what the device should sign - Device owned destination reuses existing
Address
param type
- Destination is now explicitly of type
Address
is now tagged enum across different address types (Byron, Base, Enterprise, Pointer, Reward). Reward address still usesspendingPath
instead ofstakingPath
to denote that this key can be used to spend funds
- All API call types now use
*Request
/*Response
nomenclature - GetVersion call now returns
{version, compatibility}
instead ofversion
wherecompatibility
describes overall set of features we support for the device. It should be responsibility of API users to checkcompatibility.isCompatible
flag and urge users to upgrade device tocompatibility.recommendedVersion
if the device is not compatible. - All (expected) errors thrown by the API are now descendants of
ErrorBase
fromerrors
sub-package. API now distinguishes between these error typesInvalidData
- you passed some wrong data to the API. We will not even try to communicate with the deviceDeviceUnsupported
- thrown when trying to use API with unsupported Ledger app version (or when using features not yet available for the app version)DeviceStatusError
- thrown when device rejects operation for some reason. Common reasons are found inDeviceStatusCodes
mapping.
- There is new documentation available at (https://vacuumlabs.github.io/ledgerjs-cardano-shelley/index.html)
- Compatibility with pre-Mary (<2.2) App versions.
2.2.1 - [February 18th 2021]
Patch release with a minor fix in signTransaction() call's parameters validation
- relax the tokenBundle feature check to allow an empty array #17
2.2.0 - [February 8th 2021]
Works with Ledger Cardano app 2.2.0 and is backwards compatible with older versions down to 2.0.4/2.0.5*. Older versions of this js library do not support Ledger Cardano app 2.2.0, hence an update to this version of the library is required before Ledger Cardano app 2.2.0 is released.
- Support for Allegra-era transaction min validity property, transaction TTL is now optional: https://github.com/vacuumlabs/ledgerjs-cardano-shelley/pull/27/files
- Support for Mary-era multiasset outputs (no minting yet) https://github.com/vacuumlabs/ledgerjs-cardano-shelley/pull/27/files
- Update docs with a stake pool registration (as an owner) example vacuumlabs/ledgerjs-cardano-shelley#23
- Fixed incorrect validation of numerical parameters passed as strings which failed for values over JS max safe integer: vacuumlabs/ledgerjs-cardano-shelley#29
2.1.0 - [December 11th 2020]
Works with Ledger Cardano app 2.1.0 and is backwards compatible with 2.0.4/2.0.5 as well*. Older versions of this library do not support Ledger Cardano app 2.1.0, therefore an update to this version of the library is required before Ledger Cardano app 2.1.0 is released.
- Support for bulk public key export https://github.com/vacuumlabs/ledgerjs-cardano-shelley/pull/13/files
- Support for stake pool registration certificate as a pool owner vacuumlabs/ledgerjs-cardano-shelley#12
- Docs for available calls vacuumlabs/ledgerjs-cardano-shelley#17
- Allow transactions without outputs: vacuumlabs/ledgerjs-cardano-shelley#16
- Updated flow types for Certificates, commit
- Certificate and address type Flow enums, commit
First release with Shelley-era support, works with Ledger Cardano app version 2.0.4 (Nano S) and 2.0.5 (Nano X). Older versions of this library no longer work with the Cardano blockchain.
* backwards compatibility refers only to features supported by the respective app versions, unsupported features result in an error being thrown.