decodeAddr method

  1. @override
List<int> decodeAddr(
  1. String addr, [
  2. Map<String, dynamic> kwargs = const {}
])
override

Decodes an Ethereum address from its string representation.

This method takes a string representing an Ethereum address as input and decodes it into its byte representation. It also provides an option to skip checksum validation if specified.

Parameters:

  • addr: The Ethereum address as a string to be decoded.
  • kwargs: Optional keyword arguments (e.g., skip_chksum_enc) for additional configuration.

Returns: A List

Throws:

  • ArgumentException: If the address is not of the correct length or if checksum validation fails (if not skipped).

Implementation

@override
List<int> decodeAddr(String addr, [Map<String, dynamic> kwargs = const {}]) {
  final skipChecksum = kwargs["skip_chksum_enc"] ?? false;

  String addrNoPrefix = AddrDecUtils.validateAndRemovePrefix(
      addr, CoinsConf.ethereum.params.addrPrefix!);
  AddrDecUtils.validateLength(addrNoPrefix, EthAddrConst.addrLen);
  if (!skipChecksum &&
      addrNoPrefix != EthAddrUtils._checksumEncode(addrNoPrefix)) {
    throw const AddressConverterException("Invalid checksum encoding");
  }
  return BytesUtils.fromHexString(addrNoPrefix);
}