getProofForExtrinsic method

Uint8List getProofForExtrinsic(
  1. Uint8List transaction,
  2. Uint8List? txAdditionalSigned
)

Implementation

Uint8List getProofForExtrinsic(
  Uint8List transaction,
  Uint8List? txAdditionalSigned,
) {
  final (version, signed, bytes) = decodeExtrinsic(transaction);

  assertion(version == extrinsicMeta.version, 'Incorrect extrinsic version');

  final List<TypeRef> typeRefs = signed
      ? [
          extrinsicMeta.addressTy,
          extrinsicMeta.signatureTy,
          ...extrinsicMeta.signedExtensions.map((x) => x.includedInExtrinsic),
          extrinsicMeta.callTy,
        ]
      : [extrinsicMeta.callTy];

  if (txAdditionalSigned != null) {
    typeRefs.addAll(extrinsicMeta.signedExtensions.map((e) => e.includedInSignedData));
  }

  final proofBytes = txAdditionalSigned != null ? mergeUint8([bytes, txAdditionalSigned]) : bytes;

  return generateProof(decodeAndCollectKnownLeafs(proofBytes, typeRefs));
}