deserialize method

  1. @override
TransferTransactionV2 deserialize(
  1. Uint8List payload
)
override

Implementation

@override
TransferTransactionV2 deserialize(Uint8List payload) {
	var buffer = payload;
	var type = TransactionType().deserialize(buffer);
	buffer = buffer.sublist(type.size);
	var version = bytesToInt(buffer.sublist(0, 1), 1);
	buffer = buffer.sublist(1);
	var entityBodyReserved_1 = bytesToInt(buffer.sublist(0, 2), 2);
	buffer = buffer.sublist(2);
	if (0 != entityBodyReserved_1) {
		throw RangeError('Invalid value of reserved field ($entityBodyReserved_1)');
	}
	var network = NetworkType().deserialize(buffer);
	buffer = buffer.sublist(network.size);
	var timestamp = Timestamp().deserialize(buffer);
	buffer = buffer.sublist(timestamp.size);
	var signerPublicKeySize = bytesToInt(buffer.sublist(0, 4), 4);
	buffer = buffer.sublist(4);
	if (32 != signerPublicKeySize) {
		throw RangeError('Invalid value of reserved field ($signerPublicKeySize)');
	}
	var signerPublicKey = PublicKey().deserialize(buffer);
	buffer = buffer.sublist(signerPublicKey.size);
	var signatureSize = bytesToInt(buffer.sublist(0, 4), 4);
	buffer = buffer.sublist(4);
	if (64 != signatureSize) {
		throw RangeError('Invalid value of reserved field ($signatureSize)');
	}
	var signature = Signature().deserialize(buffer);
	buffer = buffer.sublist(signature.size);
	var fee = Amount().deserialize(buffer);
	buffer = buffer.sublist(fee.size);
	var deadline = Timestamp().deserialize(buffer);
	buffer = buffer.sublist(deadline.size);
	var recipientAddressSize = bytesToInt(buffer.sublist(0, 4), 4);
	buffer = buffer.sublist(4);
	if (40 != recipientAddressSize) {
		throw RangeError('Invalid value of reserved field ($recipientAddressSize)');
	}
	var recipientAddress = Address().deserialize(buffer);
	buffer = buffer.sublist(recipientAddress.size);
	var amount = Amount().deserialize(buffer);
	buffer = buffer.sublist(amount.size);
	var messageEnvelopeSize = bytesToInt(buffer.sublist(0, 4), 4);
	buffer = buffer.sublist(4);
	var message = null;
	if (0 != messageEnvelopeSize)
	{
		message = Message().deserialize(buffer);
		buffer = buffer.sublist(message.size);
	}
	var mosaicsCount = bytesToInt(buffer.sublist(0, 4), 4);
	buffer = buffer.sublist(4);
	var mosaics = ArrayHelpers.readArrayCount(buffer, SizePrefixedMosaic(), mosaicsCount).map((item) => item as SizePrefixedMosaic).toList();
	buffer = buffer.sublist(ArrayHelpers.size(mosaics));

	var instance = TransferTransactionV2(
		type: type,
		version: version,
		network: network,
		timestamp: timestamp,
		signerPublicKey: signerPublicKey,
		signature: signature,
		fee: fee,
		deadline: deadline,
		recipientAddress: recipientAddress,
		amount: amount,
		message: message,
		mosaics: mosaics,
	);
	return instance;
}