encodeKey method

  1. @override
String encodeKey(
  1. List<int> pubKey, {
  2. int? ss58Format,
})
override

Encodes a public key or address bytes into a blockchain address.

Implementation

@override
String encodeKey(List<int> pubKey, {int? ss58Format}) {
  ss58Format = AddrKeyValidator.getAddrArg<int>(ss58Format, "ss58Format");
  try {
    if (AddrKeyValidator.hasValidPubkeyBytes(
      pubKey,
      EllipticCurveTypes.secp256k1,
    )) {
      return SubstrateSecp256k1AddrEncoder().encodeKey(
        pubKey,
        ss58Format: ss58Format,
      );
    } else if (!AddrKeyValidator.hasValidPubkeyBytes(
      pubKey,
      EllipticCurveTypes.sr25519,
    )) {
      return SubstrateEd25519AddrEncoder().encodeKey(
        pubKey,
        ss58Format: ss58Format,
      );
    }
    return SubstrateSr25519AddrEncoder().encodeKey(
      pubKey,
      ss58Format: ss58Format,
    );
  } catch (e) {
    throw AddressConverterException.addressKeyValidationFailed(
      reason: "Unsupported public key.",
    );
  }
}