UnifiedIncomingViewingKey.fromUnifiedFullViewKey constructor

UnifiedIncomingViewingKey.fromUnifiedFullViewKey({
  1. required String ifvk,
  2. required ZCashNetwork network,
})

Implementation

factory UnifiedIncomingViewingKey.fromUnifiedFullViewKey({
  required String ifvk,
  required ZCashNetwork network,
}) {
  final config = ZcashConf().fromNetwork(network);
  final key = ZCashEncodingUtils.decodeUnifiedObject(
    address: ifvk,
    mode: UnifiedReceiverMode.ivk,
    expectedHrp: config.hrpUnifiedFvk,
  );
  if (key == null) {
    throw ArgumentException.invalidOperationArguments(
      "UnifiedIncomingViewingKey",
      reason: "Invalid UIVK encoded string.",
    );
  }
  final r = key.$1;
  final sapling = r.firstWhereNullable((e) => e.type == Typecode.sapling);
  final orchard = r.firstWhereNullable((e) => e.type == Typecode.orchard);
  final transparent = r.firstWhereNullable((e) => e.type == Typecode.p2pkh);
  final unknown = r.firstWhereNullable((e) => e.type == Typecode.unknown);
  return UnifiedIncomingViewingKey._(
    config: config,
    sapling:
        sapling == null
            ? null
            : SaplingIncomingViewingKey.fromBytes(sapling.data),
    orchard:
        orchard == null
            ? null
            : OrchardIncomingViewingKey.fromBytes(orchard.data),
    transparent:
        transparent == null
            ? null
            : ZCashEncodingUtils.decodeBip44Fvk(transparent.data),
    unknown: unknown?.cast<ReceiverUnknown>().copyWith(
      mode: UnifiedReceiverMode.ivk,
    ),
  );
}