decode method

  1. @override
UncheckedExtrinsic decode(
  1. Input input
)
override

Implementation

@override
UncheckedExtrinsic decode(Input input) {
  // Read version byte and extract the actual version and signed flag
  final versionByte = input.read();
  final isSigned = (versionByte & 0x80) != 0;
  final version = versionByte & 0x7F;

  // Verify version matches metadata
  if (version != registry.extrinsic.version) {
    throw MetadataException(
      'Extrinsic version mismatch: expected ${registry.extrinsic.version}, got $version',
    );
  }

  ExtrinsicSignature? signature;
  if (isSigned) {
    signature = _signatureCodec.decode(input);
  }

  final call = _callCodec.decode(input);

  return UncheckedExtrinsic(version: version, signature: signature, call: call);
}