Files

3.8 KiB

Burn NLP

Rate limits

  • 60 burns/min or 10 burns every 10 seconds per wallet. (weight = 10)

{% hint style="info" %} See more details in API Rate limits. {% endhint %}

Request

{% tabs %} {% tab title="Websocket" %} Connect

WEBSOCKET [GATEWAY_WEBSOCKET_ENDPOINT]

Message

{
  "burn_nlp": {
    "tx": {
      "sender": "0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43746573743000000000000000",
      "nlpAmount": "10001000000000000000000"
      "nonce": "1"
    },
    "signature": "0x"
  }
}

{% endtab %}

{% tab title="REST" %} POST [GATEWAY_REST_ENDPOINT]/execute

Body

{
  "burn_lp": {
    "tx": {
      "sender": "0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43746573743000000000000000",
      "productId": 1,
      "amount": "10001000000000000000000"
      "nonce": "1"
    },
    "signature": "0x"
  }
}

{% endtab %} {% endtabs %}

Request Parameters

ParameterTypeRequiredDescription
txobjectYesBurn NLP transaction object. See Signing section for details on the transaction fields.
tx.senderstringYesHex string representing the subaccount's 32 bytes (address + subaccount name) of the tx sender.
tx.nlpAmountstringYesAmount of NLP tokens to burn multiplied by 1e18, sent as a string.
tx.noncestringYesThis is an incrementing nonce, can be obtained using the Nonces query.
signaturestringYesSigned transaction. See Signing section for more details.

Signing

{% hint style="info" %} See more details and examples in our signing page. {% endhint %}

The solidity typed data struct that needs to be signed is:

struct BurnNlp {
    bytes32 sender;
    uint128 nlpAmount;
    uint64 nonce;
}

sender: a bytes32 sent as a hex string; includes the address and the subaccount identifier.

nlpAmount: amount of NLP tokens to burn, sent as a string. This must be positive and must be specified with 18 decimals.

nonce: the tx_nonce. This is an incrementing nonce, can be obtained using the Nonces query.

{% hint style="warning" %} Note: for signing you should always use the data type specified in the solidity struct which might be different from the type sent in the request e.g: nonce should be an uint64 for Signing but should be sent as a string in the final payload. {% endhint %}

Response

{
  "status": "success",

}

Success

{
  "status": "success",
  "signature": {signature},
  "request_type": "execute_burn_nlp"
}

Failure

{
  "status": "failure",
  "signature": {signature},
  "error": "{error_msg}",
  "error_code": {error_code},
  "request_type": "execute_burn_nlp"
}