code: function Program(version, data) {
    if (!(this instanceof Program))
      return new Program(version, data);
  
    assert(util.isU8(version));
    assert(version >= 0 && version <= 16);
    assert(Buffer.isBuffer(data));
    assert(data.length >= 2 && data.length <= 40);
  
    this.version = version;
    this.data = data;
  }
docs: Witness Program
  @constructor
  @alias module:script.Program
  @param {Number} version
  @param {Buffer} data
  @property {Number} version - Ranges from 0 to 16.
  @property {String|null} type - Null if malformed. `unknown` if unknown
  version (treated as anyone-can-spend). Otherwise one of `witnesspubkeyhash`
  or `witnessscripthash`.
  @property {Buffer} data - The hash (for now).