opPushData function

List<int> opPushData(
  1. String hexData
)

Implementation

List<int> opPushData(String hexData) {
  final List<int> dataBytes = BytesUtils.fromHexString(hexData);
  if (dataBytes.length < 0x4c) {
    return List<int>.from([dataBytes.length]) + dataBytes;
  } else if (dataBytes.length < mask8) {
    return List<int>.from([0x4c]) +
        List<int>.from([dataBytes.length]) +
        dataBytes;
  } else if (dataBytes.length < mask16) {
    var lengthBytes = List<int>.filled(2, 0);

    writeUint16LE(dataBytes.length, lengthBytes);
    return List<int>.from([0x4d, ...lengthBytes, ...dataBytes]);
  } else if (dataBytes.length < mask32) {
    var lengthBytes = List<int>.filled(4, 0);
    writeUint32LE(lengthBytes.length, lengthBytes);
    return List<int>.from([0x4e, ...lengthBytes, ...dataBytes]);
  } else {
    throw ArgumentError("Data too large. Cannot push into script");
  }
}