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.
- BREAKING: The method
signTransaction
can now returns various type of transactions (#209)- Initially was supporting:
Transaction | AccessListEIP2930Transaction | FeeMarketEIP1559Transaction
(types from@ethereumjs/tx
). - Now also supports
BlobEIP4844Transaction | EOACodeEIP7702Transaction
(types from@ethereumjs/tx
).
- Initially was supporting:
- BREAKING: Bump
@ethereumjs/tx
from^4.2.0
to^5.4.0
(#209) - BREAKING: Bump
@ethereumjs/util
from^8.1.0
to^9.1.0
(#209)
- BREAKING:
LedgerKeyring
now implements theKeyring
type (#194)- The class does not extend
EventEmitter
anymore. - The
LedgerKeyring.accounts
class variable is now areadonly Hex[]
array. - The
addAccounts
method signature has been changed:- An
amount
number parameter is now required to specify the number of accounts to add. - The method now returns a promise resolving to an array of
Hex
addresses.
- An
- The
unlock
method now returnsPromise<Hex>
. - The
getAccounts
method now returnsPromise<Hex[]>
. - The
deserialize
method now requires aLedgerKeyringSerializedState
typed parameter. - The
signTransaction
method now accepts anHex
typed value as theaddress
parameter. - The
signMessage
method now accepts anHex
typed value as thewithAccount
parameter. - The
signPersonalMessage
method now accepts anHex
typed value as thewithAccount
parameter. - The
signTypedData
method now accepts anHex
typed value as thewithAccount
parameter. - The
unlockAccountByAddress
method now accepts anHex
typed value as theaddress
parameter.
- The class does not extend
- BREAKING: The
exportAccount
method has been removed (#194)
- Use
ts-bridge/[email protected]
(#214)- This new version fixes a bug regarding some missing exports.
- Bump
@metamask/eth-sig-util
dependency from^8.0.0
to8.2.0
(#177), (#134) - Bump
@metamask/utils
dependency from^9.3.1
to11.1.0
(#134), (#167)
- Bump
@ledgerhq/hw-app-eth
dependency from^6.39.0
to^6.42.0
(#153)- Required to fix handling of EIP-712 content.
- Bump
@metamask/eth-sig-util
dependency from^8.0.0
to^8.1.2
(#134)
- Fix webpack build about non-exported
EIP712Message
type (#140)
- Use
ts-bridge/[email protected]
(#118)- This new version fixes a bug with CJS re-exports.
- BREAKING: Enable Ledger clear signing (#99)
- The
LedgerSignTypedDataParams
type now requires a newmessage
field which replaces thedomainSeparatorHex
andhashStructMessage}Hex
fields.
- The
- BREAKING: Add ESM build (#40)
- It's no longer possible to import files from
./dist
directly.
- It's no longer possible to import files from
- BREAKING: Bump
@metamask/eth-sig-util
dependency from^7.0.3
to^8.0.0
(#79)signTypedData
no longer supportnumber
for addresses, see here.
- Device ID will now be cleared up when forgetting a device (#86)
- Bump
@ledgerhq/hw-app-eth
dependency to^6.39.0
(#68)- This new dependency version reduces the resulting package bundle size.
- BREAKING:
addAccounts
will now only return newly created accounts (#63)- This keyring was initially returning every accounts (previous and new ones), which is different from what is expected in the [
Keyring
interface].(https://github.com/MetaMask/utils/blob/v9.2.1/src/keyring.ts#L65)
- This keyring was initially returning every accounts (previous and new ones), which is different from what is expected in the [
- Convert to monorepo
- Package name does not change (
@metamask/eth-ledger-bridge-keyring
) and sources have been moved to:packages/keyring-eth-ledger-bridge
. - You can find all the changes here.
- Package name does not change (
- The promise returned by the
init
method now resolves only after iframe has been loaded (#236)updateTransportMethod
will throw an error when called beforeinit
- Refactor error message in
LedgerKeyring
(#232) - Extend
LedgerMobileBridge
type fromLedgerBridge
(#233) - Create new
MetaMaskLedgerHwAppEth
instance instead of re-using previous instance (#231)
- Add classes
LedgerMobileBridge
,LedgerTransportMiddleware
, andMetaMaskLedgerHwAppEth
to support Bluetooth as a HW Ledger Transport option (#225)
- BREAKING: The
LedgerKeyring
methodsetAccountToUnlock
now only accepts an input of typenumber
(#225) - BREAKING: Removed the
chainCode
property from theGetPublicKeyResponse
type (#225)
- Add
getOptions
andsetOptions
methods toLedgerBridge
interface (#210)
- BREAKING:
LedgerIframeBridge
class constructor now takes an options object withbridgeUrl
(#210) - BREAKING:
LedgerBridge
init
function now takes no parameters (#210) - BREAKING:
LedgerBridgeKeyringOptions
no longer containbridgeUrl
(#210) - BREAKING:
LedgerBridge
interface is now parameterized over its option type (#210) - Minor performance enhancement (#211)
- BREAKING:
IFrameMessageResponse
now has more restrictive typings (#207) (#207)
- Fix
invalid rlp data
error for legacy transactions in2.0.0
(#212)
- BREAKING: Remove support for major node versions 14,15,17,19. Minimum Node.js version is now 16. (#204)
- Bump
@metamask/eth-sig-util
from^6.0.1
to^7.0.0
(#205)
- Move
@metamask/utils
from deendencies to devDependencies (#209)
- Bump dependency
hdkey
from0.8.0
to^2.1.0
(#196) - Replace dependency
eth-sig-util@^2
with@metamask/eth-sig-util@^6
(#157) - Replace dependency
ethereumjs-util@^7.0.9
with@ethereumjs/util@^8.0.0
and@ethereumjs/rlp
(#153)
- BREAKING: Separate the bridge from the keyring (#156)
- The Ledger bridge is now a separate class (
LedgerIframeBridge
), which must be constructed separately from the keyring and passed in as a constructor argument. - The bridge initialization has been moved from the keyring constructor to the keyring
init
method. The bridge is expected to be passed to the keyring uninitialized, and the keyringinit
method is expected to be called after keyring construction (before the keyring is used). - The keyring constructor no longer accepts keyring state. Instead, any pre-existing keyring state should be passed to the
deserialize
method after construction.
- The Ledger bridge is now a separate class (
- BREAKING: Export changed from default to named (#174)
- The keyring is exported as
LedgerKeyring
- The keyring is exported as
- Add TypeScript types (#174)
- BREAKING: @ethereumjs/tx upgraded to major version 4, which includes a shift from storing numerical values as BNs to storing them as native BigInts. This is a breaking change for users of this keyring who access the values of the tx object, or that use those tx objects to interact with other libraries that depend on @ethereumsjs/tx versions under 4.0.0. (#181)
- BREAKING: The minimum version of Node.js required for this package has been bumped to v14. (#169)
- Fix incorrect
v
for EIP-712 signatures andpersonal_sign
(#152)
- hdk.publicKey and hdk.chainCode should not be updated when unlocking using hdPath for an account. (#146)
- Add a new
destroy
method which will remove themessage
event listener from window. (#145)
- Add a new
isConnected
method which allows determining if the device is last known to be connected. (#131)
- Messaging now runs off of message IDs instead of assuming the response received is from the last message sent, which will not always been true. (#132)
- Add a new
attemptMakeApp
method which allows clients to attempt a creation of the Ledger transport for the purposes of detecting/catching potential connection errors. (#126)
updateTransportMethod
no longer defaults its parameter to false, and now names the param sent with the'ledger-update-transport'
messagetransportType
. This better is to support the use of an enum, instead of a boolean, for specifying transport preferences. (#114)
- Allow ledger-bridge iframe to connect Ledger wia WebHID, when it is supported by the current browser (#107)
- Reject with an Error object if unlocking is not successful (#104)
- Ensure that logs of errors only have a single
Error:
string in the message (#105)
- Remove unused
events
andethereumjs-tx
dependencies (#101, #102) - Update eth-ledger-bridge-keyring to support EIP-1559 transactions (#98, #97, #96)
- Support new versions of ethereumjs/tx (#68)