Skip to content
This repository has been archived by the owner on Jun 17, 2021. It is now read-only.

v7.0.9 - Large ChainID Support

Latest
Compare
Choose a tag to compare
@holgerd77 holgerd77 released this 04 Mar 18:07
· 4 commits to master since this release
b100d13

This release adds support for very high chainId numbers exceeding MAX_SAFE_INTEGER (an example is the chain ID 34180983699157880 used for the ephemeral Yolov3 testnet preparing for the berlin hardfork, but high chain IDs might be used for things like private test networks and the like as well).

Function signatures for methods in address and signature are therefore expanded to allow for a BNLike input type (BN | PrefixedHexString | number | Buffer) for chain ID related parameters.

All function signatures are still taking in a number input for backwards-compatibility reasons. If you use one of the following functions to implement generic use cases in your library where the chain ID is not yet known it is recommended to updated to one of the other input types (with plain Buffer likely be the most future-proof). Note that on some functions this changes the return value as well.

  • account: toChecksumAddresss(hexAddress: string, eip1191ChainId?: number): string
    • -> toChecksumAddress = function(hexAddress: string, eip1191ChainId?: BNLike): string
  • account: isValidChecksumAddress(hexAddress: string, eip1191ChainId?: number)
    • -> isValidChecksumAddress(hexAddress: string, eip1191ChainId?: BNLike)
  • signature: ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature
    • -> ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature (return value stays the same on number input)
    • -> ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer (changed return value for other type inputs)
  • signature: ecrecover(msgHash: Buffer, v: number, r: Buffer, s: Buffer, chainId?: number): Buffer
    • -> ecrecover(msgHash: Buffer, v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): Buffer
  • signature: toRpcSig(v: number, r: Buffer, s: Buffer, chainId?: number): string
    • -> toRpcSig(v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string
  • signature: isValidSignature(v: number, r: Buffer, s: Buffer, homesteadOrLater: boolean = true, chainId?: number)
    • -> isValidSignature(v: BNLike, r: Buffer, s: Buffer, homesteadOrLater: boolean = true, chainId?: BNLike)