computeTxHash function

Hash computeTxHash(
  1. RawTransaction transaction
)

Implementation

Hash computeTxHash(RawTransaction transaction) {
  final bytes = BytesBuilder(copy: false)
    ..addByte(transaction.type.rawValue)
    ..add(transaction.previousHash!.bytes)
    ..add(leftPadBytes(bigIntToBytes(transaction.height!), 8))
    ..add(transaction.address!.original);
  if (transaction.type.isSendType) {
    bytes
      ..add(transaction.toAddress!.original)
      ..add(leftPadBytes(bigIntToBytes(transaction.amount!), 32))
      ..add(transaction.token!.core);
  } else {
    bytes.add(transaction.sendBlockHash!.bytes);
  }
  final data = transaction.data;
  if (data != null) {
    bytes.add(Hash.dataToHash(data).bytes);
  }
  bytes.add(leftPadBytes(bigIntToBytes(transaction.fee ?? BigInt.zero), 32));

  if (transaction.nonce != null) {
    bytes.add(leftPadBytes(transaction.nonce!, 8));
  } else {
    bytes.add(Uint8List(8));
  }
  return Hash.dataToHash(bytes.takeBytes());
}