Changes:
- Fix for
@polkadot/x-rxjs
in Node CJS environments (no Node-specific import)
Contributed:
- Enhance check for global process existence (Thanks to https://github.com/Yuripetusko)
Changes:
- Dedupe & optimize logger process.env checks
Changes:
- Add import indirection for both CJS & ESM (where generated source file is commonjs)
Changes:
- Fix
@polkadot/x-rxjs
ESM exports for Node environments (now different due to the ESM conversion)
Important In the 6.0 version the default package type has been changed to ESM modules by default. This should not affect usage, however since the output formats changed, a new major version is required.
Contributed:
- Add dev addresses for Frontier-based chains (Thanks to https://github.com/joelamouche)
Changes:
- Build to ESM by default (with cjs versions via export map)
- Allow addition or raw pairs on the keyring via
{add, create}FromPair
- Extract re-usable json encryption/decryption functions
Changes:
- Fix package detection for
@polkadot/networks
(no dependencies)
Changes:
- Expand
detectPackage
with optional param allowing checks for monorepo versions - Export logger
format
function directly asloggerFormat
- Expand tests and checks for
hdValidatePath
- Remove
hdEthereum
class-based approach, simplify - Cleanup formatting on nested conditionals in the
@polkadot/x-
packages - All packages now export
packageInfo
from the root
Contributed:
- Add ss58 information for HydraDX (Thanks to https://github.com/jak-pan)
- HD derivation for Ethereum (Thanks to https://github.com/joelamouche)
Changes:
- Adjust base64 encoding/decoding to not rely on Buffer being available
- Rework Ethereum derivation to only use Uint8Array internally
- Shared HD path validation for Ledger & Ethereum
- Additional derivation, encoding and decoding tests on keyring
- Align networks with upstream ss58 registry
@polkadot/wasm-crypto
3.2.4
Breaking change The signature of pair.verify
now requires the signer public key as a parameter. If using pair.verify
pass the publicKey (hex or Uint8Array) of the signer.
Changes:
- The signature on the keyring for
.verify
now explicitly requires thepublicKey
of the signer. Previously it only verified against an own public key. - Add additional ss58 test vectors (against chains with >63 prefixes in the Substrate registry)
Contributed:
- Add ss58 information for Aventus (Thanks to https://github.com/nahuseyoum)
Changes:
- Add
unlock(password)
to keypair (less confusing than only havingdecodePkcs8
, equivalent tolock()
) - Change use of
detectPackage
to usepackageInfo.ts
- Align with upstream ss58 registry
@polkadot/wasm-crypto
3.2.3
Changes:
@polkadot/networks
now filters the new upstream-introducednull
networks
Contributed:
- Fix installation instructions in
@polkadot/x-global
(Thanks to https://github.com/raoulmillais)
Changes:
- Conform to new ss58 encoding with ids up to 16,383 (>= 64 as 2 bytes)
- Use JS sqrt inside
bnSqrt
when value <= MAX_SAFE_INTEGER - Adjust all
Buffer.from
usages, preferUint8Array
where possible - Expand tests for keyring with
vrf{Sign, Verify}
- Align
@polkadot/networks
with latest ss58 registry
Changes:
- Expose
BN_{MILLION, BILLION}
constants (in addition to 2-9)
Changes:
- Added
hdLedger
to util-crypto for Ledger-compatible bip32+ed25519 derivation - Added
hmac{Sha256, 512}
to util-crypto - Add
slip44
indices for Ledger into@polkadot/networks
- Remove
module
entry inpackage.json
(only rely on exports map) - Remove direct references to
global
object, use@polkadot/x-global
- Update
@ledgerhq
dependencies to latest
Contributed:
- Adjust Ledger app lookup for Polymesh (Thanks to https://github.com/adamdossa)
Changes:
- Allow decimals as
number[]
& symbol asstring[]
in balanceFormat defaults - Add
schnorrkelVrf{Sign, Verify}
to@polkadot/util-crypto
- Export
vrf{Sign, Verify}
on keyring interface - Move
@polkadot/x-rxjs
packages from the api repo - Align
@polkadot/networks
with Substrate master - Explicit edcsa tests for derivation
@polkadot/wasm-crypto
3.2.1
Important For users of the @polkadot/ledger
package, it is now included in this repo (since it is a general utility) and renamed to @polkadot/hw-ledger
Contributed:
- Add Dock Ledger integration (Thanks to https://github.com/lovesh)
- Add Polymesh Ledger integration (Thanks to https://github.com/adamdossa)
- Add flag for Ledger capabilities on networks (Thanks to https://github.com/Tbaut)
Changes:
- Move
@polkadot/ledger
packages into common - Update
@polkadot/networks
to align with latest Substrate ss58-registry
Changes:
- Add
arrayFlatten
to merge a series of arrays into a single - Add
arrayChunk
to chunk an array into multiples of defined size - Add
bitLength
param (allowed 256, 512) tokeccakAs{Hex, U8a}
- Align
@polkadot/networks
with Substrate master
Changes:
detectPackage
now can take a path-retrieval callback as second argument- Adjust
blake2js
imports to consistently cater for esm & cjs usage - Explicitly mark
detectPackage
usage as having side-effects - Align
@polkadot/networks
with Substrate master @polkadot/wasm-crypto
3.1.1
Important While this package contains no external interface changes, it now compiles and ships both cjs and esm modules. This means that modern bundlers will have more information for tree-shaking available. Additionally when using Node with .mjs
extensions, the esm version imports will be used on recent Node versions. Adding an export map, as here, may have some impacts so a major semver bump is advised. There may be (small) dragons hiding in the dark corners...
Changes:
- Build and expose both cjs and esm via exports map
- Use
import type { ... }
form for all type imports - Align with Substrate master network list
- Debug logs now don't depend on
NODE_ENV
, but ratherDEBUG=<type,type,...>
(*
logs all) - Limit debug console output via
DEBUG_MAX=<number>
value, trimming when passed - Add
memoize
util, allowing for function memoization (as used in the API) - Align
@polkadot/networks
with Substrate master @polkadot/wasm-crypto
3.0.1
Changes:
- Rename default Mega to Million, Giga to Billion and Tera to Trillion in formatter
- Dedupe bn.js by aligning versions between different libraries
- Add explicit link to base Substrate ss58 formats (as managed in
@polkadot/util
)
Contributed:
- Expand ETH tests, allow for verification against address (Thanks to https://github.com/joelamouche)
Changes:
- Replace pbkdf2 imports with explicit use from sync-only package
- Adjust secp256k1 imports with shared elliptic
- Expand crypto tests for explicit wasm vs JS compares in all cases
- Breaking change Polyfills are not injected by these libraries anymore to avoid clobbering external globals, the user should provide them if their environment is missing base functionality.
Changes:
- Remove built-in utility polyfills for
Array.fill
,String.padStart
,String.padEnd
as well asObject.setPrototypeOf
. These should be provided by the actual user of the libraries if so required. - Update
@polkadot/wasm-crypto
library (under-the-hood cleanups) - Remove explicit crypto polyfill injection (aligning with updated
@polkadot/wasm-crypto
) - Add cross-environment
@polkadot/x-randomvalues
(for use in@polkadot/wasm-crypto
)
Changes:
- Remove the use of
chalk
(logger) for less overall dependencies string*
utilities now also allowsString
(class) inputs- Align bip39 use with wasm-crypto for English-only wordlist, default, non supplied)
- Adjust elliptic imports for explicit paths (allows tree-shaking)
- Add Totem (ss58 prefix 14) into
@polkadot/networks
- Move
@polkadot/x-{fetch,textdecoder,textencoder,ws}
intocommon
repo
Contributed:
- Add evmToAddress and addressToEvm
@polkadot/util-crypto
(Thanks to https://github.com/jnaviask) - Remove invalid link to docs (thanks to https://github.com/roccomuso)
Changes:
- Rename
mnemonicToBip39
tomnemonicToLegacySeed
(used in non-Substrate compatible fashion) - Update pair signature verification to handle MultiSignature results
- Move documentation to docs repo
- Added
@polkadot/networks
for a list of known networks and their identifying information
Contributed:
- Add Dock network identifiers (Thanks to https://github.com/lovesh)
Changes:
- Use cross-environment TextDecoder & TextEncoder from the polkadot-js polyfills
- Add
isBase{32, 58, 64}
to@polkadot/util-crypto
- Add
base64{Pad, Trim}
to add/remove padding characters - Add
createFromJson(json)
to keyring (create pair without adding) - Balance formatter now outputs 4 numbers after the decimal point
Changes:
- Allow for WASM-as-available
mnemonicToBip39
call (used for Ethereum-compatible keypairs) - Add
isWasm
utility to check for valid WASM headers @polkadot/wasm-crypto
1.4.1
Changes:
- Add
addressRaw
to Keyring interface (if address encoding is different to publicKey) - Allow for Ethereum pair signing and verification
Changes:
- Allow for (optional, default blake2) hasher to secp256k1 sign/verify functions
- Utilities for secp256k1 publicKey expansion and compression
- Add basic Ethereum address utils (encode with checksum & checksum verification)
- Add Ethereum-compatible
mnemonicToBip39
seed creation function
Changes:
- Add
deriveAddress(<address>, '/<soft>/<soft-b>')
via sr25519 soft - Use
scrypt
from WASM as available (JS fallback in place) - Add
base32{Encode, Decode}
utilities (IPFS-compatible alphabet) - Support IPFS compatibility flag in base58 encoding/decoding
- Update to
@polkadot/wasm-crypto
1.3.1
Contributed:
- Add Katal ss58Format (Thanks to https://github.com/retotrinkler)
Changes:
- Adjust JSON pair output with scrypt kdf (version 3 output)
Changes:
- Add
base64{Decode, Encode, Validate}
as crypto utils - Extract
base58Validate
from base58 decode checks - Add
isAscii
to allow detection of printable ASCII sequences (including tab, newline) - Add
isUtf8
to allow detection of valid Utf8 sequences
Changes:
- Add
encode{Derived, Multi}Address
to encode derived/multi addresses - Correctly handle 0 inputs in
numberToU8a
- Simplify and flatten base58 dependencies
Changes:
- Adjust
addressCheck
andencodeAddress
function to check for valid base58 alphabets (better error reporting) - Rename
createKeySub
tocreateKeyDerived
based on changed in Substrate (sub keys now named derived)
Changes:
- Adjust keyring to no override 0-prefix (Polkadot live) settings with keychain default
Contributed:
- Add
extractTime
utility conversion (Thanks to https://github.com/kwingram25)
Changes:
- Fix JS blake2 fallback (non-wasm) to correctly deal with hex inputs
- Align
bnToHex
signature withbnToU8a
(with old/new style) - Allow
bnTo{Hex,U8a}
to take any value with.toBn()
signatures
Changes:
- Fix
isFunction
signature to assertFunction
- Important Removed
mnemonicToSeed
, it is only for bip39, usemnemonicToMiniSecret
for the Substrate variant
Changes:
- Added
u8aEq
to compare two Uint8Array or hex values for an exact match - Added
addressEq
to compare two addresses (ss58, Uint8array or hex) for an exact match - Throw error on
{nacl,schnorrkel}Verify
on invalid input lengths - Performance optimizations in
u8aToHex
&u8aConcat
Changes:
- Internal cleanups on typings
- Support for latest TypeScript, eslint & typescript-eslint
Contributed:
- Add Kulupu ss58 prefix as an allowed value (Thanks to https://github.com/sorpaas)
Changes:
- Make the
TextEncoder
polyfill handle non-compliant Buffer implementations (newer versions of Jest) DeriveJunction
now also allows for BigInt values (aligning with number types elsewhere)- Small code-flow optimizations
Contributed:
- Add support for ECDSA keypairs (Thanks to https://github.com/akru)
Changes:
- Added
createKeyMulti
&createKeySub
to create utility sub & multi keys - Added
u8aSorted
to sortUint8Arrays
- Added
sortAddresses
to sort addresses based on their internal representation
- Keypair will now throw an error when attempting to sign/derive using a locked pair (Thanks to https://github.com/h4x3rotab)
Changes:
- Cleanup
isDevelopment
regex to cater for chains such asWestend Development
Changes:
- Add
bnSqrt
to calculate the integer sqrt via Newton iteration - Allow for optional wasm-crypto, specifically via
@polkadot/util-crypto/noWasm
- Misc. CI infrastructure cleanups
- Breaking change Following on the 2.0 release,
@polkadot/wasm
was updated to 1.1+. sr25510 now only verifies 0.8+ signatures, closing the loop on dropping Substrate 1.x-era support
Changes:
- Add
signatureVerify (message: Uint8Array | string, signature: Uint8Array | string, addressOrPublicKey: Uint8Array | string): VerifyResult
to verify any signature, regardless of type. Returns validity & detected crypto type. - Add
cryptoIsReady (): boolean
function to check status of initialization - Add
addressCheckChecksum (decoded: Uint8Array)
as an helper to extract and verify the ss58 checksum - Swap to yarn 2, allow use in yarn 2 projects
- Breaking change (TypeScript only) The
*.d.ts
files now contain TypeScript 3.8 features,#private
, which is not usable in older versions
Changes:
- Add
isBigInt(value)
to allowBigInt
checks. Also add support inbnToBn
as well as number conversion utils - Add
isChildClass(Parent, Child?)
to check if a class extends the parent, asserting Child is Parent - (internal) Use
#<field>
instead ofprivate _<field>
for private class variables
Changes:
- Ensure that
formatBalance
does not apply unit overrides apply when no SI is applicable - Adjust
formatBalance(<balance>, <options>)
to take expandedwithUnit: string | boolean
option where string is an actual unit, e.g.KSM
- The
decimals
option toformatBalance
should now be passed as part of theoptions
(previous last-param deprecated) - The
.setSS58Format
on keyring will now just operate on pairs created on the keyring, not globally. The globalsetSS58Format
in@polkadot/util-crypto
will be deprecated. - The deprecated
addressPrefix
option to keyring has been belatedly removed (Usess58Format
rather)
Contributed:
- Remove dependency on moment.js with
formatDate
function (Thanks to https://github.com/AndreasGassmann) - Move TypeScript
@types/*
to dev deps (Thanks to https://github.com/AndreasGassmann)
Changes:
- Update to
@polkadot/wasm-crypto
1.0 - Cleanup dependencies to pave the way for using yarn 2 (Explicit instead of implicit)
Changes:
- Add resolver for jest requires (tests from src)
Changes:
- Update
detectPackage(<package.json>, __dirname?)
with calling folder
Changes:
- Update w3f/schnorrkel to 0.8.5 (Full Substrate 2.x support, no 1.x support)
- Remove Alice session (ed2551) account from testing keyring (not applicable to Substrate 2.x)
- Remove
chainspec
,db
,trie-codec
,trie-db
andtrie-hash
packages (moved to client) - Renamed
assertSingletonPackage
todetectPackage
with inclusion of version listing - Swap to elliptic library for secp2561 recovery (No node bindings)
Contributed:
- Add cross-client encryption/decryption support (Thanks to https://github.com/hskang9)
Changes:
formatBalance
signature now allows to force unit displays- Keypair now allows for derive on a pair, with
pair.derive(...)
assert
now acts like a real asserts, with no return - signature adapted for new TS 3.7
Changes:
pair.sign(message)
now takes an optional secondoptions?: SignOptions
parameter, whereSignOptions
is currently defined as{ withType: boolean }
. HerewithType
instructs the signing to prepend the type of signature (ed2551, sr25519 or ecdsa). This is used for the new Polkadot/Substrate MultiSignature format.
Changes:
- Fix typings on the Keyring-exposed encode & decodeAddress
- Allow ss58Format = 0 as a valid value
- Loosen type definitions for allowed ss58format values (still checked against allowed array)
- Breaking change To set the
ss58Format
, you should now usesetSS58Format
as opposed to the oldsetAddressPrefix
Changes:
- Renamed
keyring.setAddressPrefix
tokeyring.setSS58Format
- Deprecated
addressPrefix
on the keyring options, added thess58Format
as a replacement (aligning with chain properties - the old version is still accepted) - Added
stringToHex
andhexToString
conversion utilities to@polkadot/util
- Swap to Babel 7.6.0 for all compilation, for latest improvements in code generation
Changes:
- Remove the
ExtError
class, always prefer the standard JSError
object for errors. This would bre a breaking change for any applications usingExtError
Changes:
- Keyring
addFromAddress
can now be used to store external accounts, for example those provided by external signers - Maintainability updates
Changes:
assertSingletonPackage
now warns via console.warn, but does not throw. This does allow the info to come accross while still allowing the app developers using multiple libraries time to fix.
Changes:
formatBalance
now allows forCompact
inputsformaBalance
now allows correct formatting of very large decimals
Changes:
- Add
checkAddress(address, prefix)
to@polkadot/util-crypto
that validates an ss-58 address - Add support for the Kusama network (as a valid checked prefix)
- Add an
asm.js
fallback for the React Native environment (via@polkadot/wasm-crypto
) - The ed25519 key for Alice (representing the session), now appears in the test keyrings
- Fix missing dependencies for keyring (after address moves in 0.93.1)
Changes:
- Breaking: External pair interface for keyring has been changed. Instead of
getMeta
use themeta
getter, i.e.console.log(pair.meta.name)
address
use theaddress
getter, i.e.console.log(pair.address)
publicKey
use thepublicKey
getter, i.e.console.log(pair.publicKey)
Move decodeAddress
,encodeAddress
&setAddressPrefix
functions into@polkadot/util-crypto
from@polkadot/keyring
. External interfaces should not be affected at this point since it is also (still) exported and exposed on keyring
Changes:
- Only allow integer input values into
formatBalance
- Allow
formatBalance
,formatDecimal
&formatNumber
to cater for negative numbers - Add 'Bob//stash' to testing keyring, joining the existing 'Alice//stash'
Changes:
- ed25519/sr25519 sign & verify functions can now take the message input as Uint8Array/string/hex and verify allows for the signature/publicKey to be specified as Uint8Array/hex
- Update
@polkadot/wasm
to include a maintenance bump for thew3f/schnorrkel
libraries
Changes:
- Moving towards 1.0
- Added bnMin & bnMax functions
Changes:
- Fix
addFromMnemonic
to generate using new-style derivation. - Pull in
formatBalance
,formatDecimal
,formatElapsed
,formatNumber
,calcSi
,findSi
&isTestChain
utility functions from the originals in@polkadot/ui-util
- Swap out
wasm-schnorrkel
&wasm-ed25519
for combined version withwasm-crypto
- Swap DB interfaces to optional LRU, removing
transactionAsync
(client-only changes)
Changes:
- Start journey to 1.0
Changes:
- Add
assertSingletonPackage
to util - Ensure that only a single keyring instance is loaded (uses above)
Changes:
- Extensions to the client-specific database interfaces (non-breaking for API and util users)
Changes:
- Add additional derivation path extraction mechanisms to util-crypto
- Add createFromUri function to keypair (creates keypair, does not add it)
- Allow all crypto hashing & ed25519 to use WASM (as available, JS fallbacks)
Changes:
- Pull in bip39 generation functions from
@poladkot/wasm-crypto
with a fallback to the pure JS versions
Changes:
- Align with current substrate master for sr25519 keys and hard/soft derivation
- Swap default dev keys to derived (sr25519)
Changes:
- Swap to publishing -beta.x on merge (non-breaking testing)
Changes:
- Add
fromUri
to keyring along with hard & soft key derivation.
Changes:
- Remove NodeJs-only
syncify
function, not exported by the package (with binary dependency for Node)
Changes:
- Keyring now allows for ed25519 and sr25519 instances. Upon creation, you need to pass the
ed25519
orsr25519
string to denote the type, i.e.new Keyring({ type: 'sr25519' })