docs: @Override
      protected void parse() throws ProtocolException {
          cursor = offset;
          optimalEncodingMessageSize = 4;
  
          // version
          version = readUint32();
          // peek at marker
          byte marker = payload[cursor];
          boolean useSegwit = marker == 0;
          // marker, flag
          if (useSegwit) {
              readBytes(2);
              optimalEncodingMessageSize += 2;
          }
          // txin_count, txins
          parseInputs();
          // txout_count, txouts
          parseOutputs();
          // script_witnesses
          if (useSegwit)
              parseWitnesses();
          // lock_time
          lockTime = readUint32();
          optimalEncodingMessageSize += 4;
  
          length = cursor - offset;
      }