Skip to content

Latest commit

 

History

History
330 lines (207 loc) · 17.9 KB

File metadata and controls

330 lines (207 loc) · 17.9 KB

Changelog

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.

Changed

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

Changed

  • BREAKING: LedgerKeyring now implements the Keyring type (#194)
    • The class does not extend EventEmitter anymore.
    • The LedgerKeyring.accounts class variable is now a readonly 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.
    • The unlock method now returns Promise<Hex>.
    • The getAccounts method now returns Promise<Hex[]>.
    • The deserialize method now requires a LedgerKeyringSerializedState typed parameter.
    • The signTransaction method now accepts an Hex typed value as the address parameter.
    • The signMessage method now accepts an Hex typed value as the withAccount parameter.
    • The signPersonalMessage method now accepts an Hex typed value as the withAccount parameter.
    • The signTypedData method now accepts an Hex typed value as the withAccount parameter.
    • The unlockAccountByAddress method now accepts an Hex typed value as the address parameter.

Removed

  • BREAKING: The exportAccount method has been removed (#194)

Changed

Changed

  • Bump @metamask/eth-sig-util dependency from ^8.0.0 to 8.2.0 (#177), (#134)
  • Bump @metamask/utils dependency from ^9.3.1 to 11.1.0 (#134), (#167)

Fixed

  • Bump @ledgerhq/hw-app-eth dependency from ^6.39.0 to ^6.42.0 (#153)
    • Required to fix handling of EIP-712 content.

Changed

  • Bump @metamask/eth-sig-util dependency from ^8.0.0 to ^8.1.2 (#134)

Fixed

  • Fix webpack build about non-exported EIP712Message type (#140)

Changed

Changed

  • BREAKING: Enable Ledger clear signing (#99)
    • The LedgerSignTypedDataParams type now requires a new message field which replaces the domainSeparatorHex and hashStructMessage}Hex fields.

Added

  • BREAKING: Add ESM build (#40)
    • It's no longer possible to import files from ./dist directly.

Changed

  • BREAKING: Bump @metamask/eth-sig-util dependency from ^7.0.3 to ^8.0.0 (#79)
    • signTypedData no longer support number for addresses, see here.

Fixed

  • Device ID will now be cleared up when forgetting a device (#86)

Changed

  • Bump @ledgerhq/hw-app-eth dependency to ^6.39.0 (#68)
    • This new dependency version reduces the resulting package bundle size.

Changed

Changed

  • Bump sinon and @types/sinon to latest versions (#51)
  • Add syncpack and sync dependencies (#53)

Changed

  • Bump @metamask/* and @lavamoat/* dependencies (#46)
  • Move deepmerge to devDependencies (#44)

Changed

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

Fixed

  • The promise returned by the init method now resolves only after iframe has been loaded (#236)
    • updateTransportMethod will throw an error when called before init

Changed

  • Refactor error message in LedgerKeyring (#232)
  • Extend LedgerMobileBridge type from LedgerBridge (#233)
  • Create new MetaMaskLedgerHwAppEth instance instead of re-using previous instance (#231)

Added

  • Add classes LedgerMobileBridge, LedgerTransportMiddleware, and MetaMaskLedgerHwAppEth to support Bluetooth as a HW Ledger Transport option (#225)

Changed

  • BREAKING: The LedgerKeyring method setAccountToUnlock now only accepts an input of type number (#225)
  • BREAKING: Removed the chainCode property from the GetPublicKeyResponse type (#225)

Added

  • Add getOptions and setOptions methods to LedgerBridge interface (#210)

Changed

  • BREAKING: LedgerIframeBridge class constructor now takes an options object with bridgeUrl (#210)
  • BREAKING: LedgerBridge init function now takes no parameters (#210)
  • BREAKING: LedgerBridgeKeyringOptions no longer contain bridgeUrl (#210)
  • BREAKING: LedgerBridge interface is now parameterized over its option type (#210)
  • Minor performance enhancement (#211)

Fixed

  • BREAKING: IFrameMessageResponse now has more restrictive typings (#207) (#207)

Fixed

  • Fix invalid rlp data error for legacy transactions in 2.0.0 (#212)

Changed

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

Fixed

  • Move @metamask/utils from deendencies to devDependencies (#209)

Fixed

  • Bump dependency hdkey from 0.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)

Changed

  • 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 keyring init 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.
  • BREAKING: Export changed from default to named (#174)
    • The keyring is exported as LedgerKeyring
  • Add TypeScript types (#174)

Changed

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

Changed

  • BREAKING: The minimum version of Node.js required for this package has been bumped to v14. (#169)

Fixed

  • Fix incorrect v for EIP-712 signatures and personal_sign (#152)

Added

  • hdk.publicKey and hdk.chainCode should not be updated when unlocking using hdPath for an account. (#146)

Added

  • Add a new destroy method which will remove the message event listener from window. (#145)

Added

  • Add a new isConnected method which allows determining if the device is last known to be connected. (#131)

Changed

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

Added

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

Changed

  • updateTransportMethod no longer defaults its parameter to false, and now names the param sent with the 'ledger-update-transport' message transportType. This better is to support the use of an enum, instead of a boolean, for specifying transport preferences. (#114)

Added

  • Allow ledger-bridge iframe to connect Ledger wia WebHID, when it is supported by the current browser (#107)

Changed

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

Changed

  • Remove unused events and ethereumjs-tx dependencies (#101, #102)
  • Update eth-ledger-bridge-keyring to support EIP-1559 transactions (#98, #97, #96)

Added

  • Support new versions of ethereumjs/tx (#68)