nxt.http

## Class PublishExchangeOffer

- java.lang.Object
- - nxt.http.APIServlet.APIRequestHandler
  - - nxt.http.PublishExchangeOffer

-     public final class PublishExchangeOffer
      extends APIServlet.APIRequestHandler

  Publish exchange offer for `CurrencyType.EXCHANGEABLE` currency

  Parameters

  - currency - currency id of an active currency
  - buyRateNQT - NXT amount for buying a currency unit specified in NQT
  - sellRateNQT - NXT amount for selling a currency unit specified in NQT
  - initialBuySupply - Initial number of currency units offered to buy by the publisher
  - initialSellSupply - Initial number of currency units offered for sell by the publisher
  - totalBuyLimit - Total number of currency units which can be bought from the offer
  - totalSellLimit - Total number of currency units which can be sold from the offer
  - expirationHeight - Blockchain height at which the offer is expired

  Publishing an exchange offer internally creates a buy offer and a counter sell offer linked together. Typically the buyRateNQT specified would be less than the sellRateNQT thus allowing the publisher to make profit

  Each `CurrencyBuy` transaction which matches this offer reduces the sell supply and increases the buy supply Similarly, each `CurrencySell` transaction which matches this offer reduces the buy supply and increases the sell supply Therefore the multiple buy/sell transaction can be issued against this offer during it's lifetime. However, the total buy limit and sell limit stops exchanging based on this offer after the accumulated buy/sell limit is reached after possibly multiple exchange operations.

  Only one exchange offer is allowed per account. Publishing a new exchange offer when another exchange offer exists for the account, removes the existing exchange offer and publishes the new exchange offer

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | `allowRequiredBlockParameters()`
    `static java.util.List<java.lang.String>` | `getCommonParameters()`
    `protected org.json.simple.JSONStreamAware` | `processRequest(javax.servlet.http.HttpServletRequest req)`
    `protected boolean` | `requirePost()`

    - ### Methods inherited from class nxt.http.APIServlet.APIRequestHandler

      `getAPITags, getFileParameter, getParameters, isPassword, isTextArea, processRequest, requireBlockchain, requireFullClient, requirePassword, startDbTransaction`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### processRequest

          protected org.json.simple.JSONStreamAware processRequest(javax.servlet.http.HttpServletRequest req)
                                                            throws NxtException

      Specified by:
        `processRequest` in class `APIServlet.APIRequestHandler`
      Throws:
        `NxtException`

    - #### requirePost

          protected final boolean requirePost()

      Overrides:
        `requirePost` in class `APIServlet.APIRequestHandler`

    - #### allowRequiredBlockParameters

          protected final boolean allowRequiredBlockParameters()

      Overrides:
        `allowRequiredBlockParameters` in class `APIServlet.APIRequestHandler`

    - #### getCommonParameters

          public static java.util.List<java.lang.String> getCommonParameters()