old_contents: 'use strict';
  
  var inherits = require('inherits');
  
  var $ = require('bitcore').util.preconditions;
  
  var Script = require('bitcore').Script;
  var Transaction = require('bitcore').Transaction;
  var _ = require('bitcore').deps._;
  
  
  /**
   * A commitment transaction (also referred to as Lock transaction).
   *
   * @constructor
   * @param {Object} opts
   * @param {Array.<string>} opts.publicKeys
   * @param {string|bitcore.Network} opts.network - livenet by default
   */
  function Commitment(opts) {
    $.checkArgument(opts.publicKeys && opts.publicKeys.length === 2, 'Must provide exactly two public keys');
    Transaction.call(this, opts.transaction);
  
    this.network = opts.network || 'livenet';
    this.publicKeys = opts.publicKeys;
    this.outscript = Script.buildMultisigOut(this.publicKeys, 2);
    this.address = this.outscript.toScriptHashOut().toAddress();
    this.to(this.address, this.inputAmount);
  
    Object.defineProperty(this, 'amount', {
      configurable: false,
      get: function() {
        return this.inputAmount;
      }
    });
  }
  inherits(Commitment, Transaction);
  
  Commitment.prototype.toObject = function() {
    var transaction = Transaction.prototype.toObject.apply(this);
    return {
      transaction: transaction,
      publicKeys: _.map(this.publicKeys, function(publicKey) {
        return publicKey.toString();
      }),
      network: this.network.toString(),
    };
  };
  
  /**
   * @return {bitcore.Address}
   */
  Commitment.prototype.getAddress = function() {
    return this.address;
  };
  
  module.exports = Commitment;
  
new_contents: 'use strict';
  
  var inherits = require('inherits');
  
  var $ = require('bitcore').util.preconditions;
  
  var Script = require('bitcore').Script;
  var Transaction = require('bitcore').Transaction;
  var _ = require('bitcore').deps._;
  
  
  /**
   * A commitment transaction (also referred to as Lock transaction).
   *
   * @constructor
   * @param {Object} opts
   * @param {Array.<string>} opts.publicKeys
   * @param {string|bitcore.Network} opts.network - livenet by default
   */
  function Commitment(opts) {
    $.checkArgument(opts.publicKeys && opts.publicKeys.length === 2, 'Must provide exactly two public keys');
    Transaction.call(this, opts.transaction);
  
    this.network = opts.network || 'livenet';
    this.publicKeys = opts.publicKeys;
    this.outscript = Script.buildMultisigOut(this.publicKeys, 2);
    this.address = this.outscript.toScriptHashOut().toAddress();
    this.change(this.address);
  
    Object.defineProperty(this, 'amount', {
      configurable: false,
      get: function() {
        return this.inputAmount;
      }
    });
  }
  inherits(Commitment, Transaction);
  
  Commitment.prototype.toObject = function() {
    var transaction = Transaction.prototype.toObject.apply(this);
    return {
      transaction: transaction,
      publicKeys: _.map(this.publicKeys, function(publicKey) {
        return publicKey.toString();
      }),
      network: this.network.toString(),
    };
  };
  
  /**
   * @return {bitcore.Address}
   */
  Commitment.prototype.getAddress = function() {
    return this.address;
  };
  
  module.exports = Commitment;
  
subject: revert to change