PlutusData.fromAddress constructor

PlutusData.fromAddress(
  1. ADAShellyAddress address
)

Constructs a PlutusData instance from an address.

Implementation

factory PlutusData.fromAddress(ADAShellyAddress address) {
  PlutusData? stakeData;
  if (address.addressType == ADAAddressType.base) {
    stakeData = ConstrPlutusData(
      alternative: BigInt.zero,
      data: PlutusList([
        PlutusData.fromStakeCredential(
            (address as ADABaseAddress).stakeCredential),
      ]),
    );
  }
  PlutusData? pointerData;
  if (address is ADAPointerAddress) {
    pointerData = PlutusData.fromPointer(address.pointer);
  }
  final PlutusData paymentData =
      PlutusData.fromStakeCredential(address.paymentCredential);

  final PlutusList data = PlutusList([
    paymentData,
    ConstrPlutusData(
      alternative:
          stakeData != null || pointerData != null ? BigInt.zero : BigInt.one,
      data: PlutusList([
        if (pointerData != null || stakeData != null)
          pointerData ?? stakeData!,
      ]),
    ),
  ]);
  return ConstrPlutusData(alternative: BigInt.zero, data: data);
}