API Reference

Cancel Order Signature

The method Create Order Cancellation Signature allows user to create cancellation signatures for the provided orders. Similar to creating orders, signatures are used to validate the authenticity of the request since the order must be cancelled off-chain on the orderbook before being cancelled on-chain.

Sub Accounts: If trading as a sub account, set the maker field to the address of the parent account. Read more about Sub Accounts here.

The method takes the following input parameters:

  • interface OrderCancelSignatureRequest { symbol: MarketSymbol; // symbol of market of orders to be cancelled hashes: string[]; // hash of the orders to be cancelled parentAddress?: string // (optional) specify parent account if trading as a sub account }
    class OrderCancelSignatureRequest(TypedDict): symbol: MARKET_SYMBOLS # symbol of market of orders to be cancelled hashes: list # hash of the orders to be cancelled parentAddress: str # (optional) should only be provided by a sub account

The order hash parameter is returned as part of the post order response or can be obtained via the get order routes.

Examples

/* eslint-disable no-console */ import { Networks, BluefinClient ORDER_STATUS, ORDER_SIDE, ORDER_TYPE, toBaseNumber, MinifiedCandleStick, Faucet, OrderSigner, parseSigPK, ADJUST_MARGIN, } from "@bluefin-exchange/bluefin-v2-client"; async function main() { const dummyAccountKey = "trigger swim reunion gate hen black real deer light nature trial dust"; const client = new BluefinClient( true, Networks.TESTNET_SUI, dummyAccountKey, "ED25519" //valid values are ED25519 or Secp256k1 ); //passing isTermAccepted = true for compliance and authorizarion await client.init(); let symbol = "ETH-PERP"; // post a limit order const response = await client.postOrder({ symbol: symbol, price: 50, quantity: 0.5, side: ORDER_SIDE.SELL, orderType: ORDER_TYPE.LIMIT, leverage: 3, }); // create signature const cancelSignature = await client.createOrderCancellationSignature({ symbol: symbol, hashes: [response.response.data.hash], }); console.log("Cancellation Signatures:", cancelSignatures); } main().then().catch(console.warn);
from pprint import pprint import asyncio import time import random from config import TEST_ACCT_KEY from bluefin_v2_client import ( BluefinClient, Networks, MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE, ORDER_STATUS, OrderSignatureRequest, ) async def main(): client = BluefinClient(True, Networks["SUI_STAGING"], TEST_ACCT_KEY) await client.init(True) leverage = 1 await client.adjust_leverage(MARKET_SYMBOLS.ETH, leverage) order = OrderSignatureRequest( symbol=MARKET_SYMBOLS.ETH, # market symbol price=2905, # price at which you want to place order quantity=0.01, # quantity side=ORDER_SIDE.BUY, orderType=ORDER_TYPE.LIMIT, leverage=leverage, salt=random.randint(0, 100000000), expiration=int(time.time() + (30 * 24 * 60 * 60)) * 1000, ) signed_order = client.create_signed_order(order) post_resp = await client.post_signed_order(signed_order) pprint(post_resp) time.sleep(2) # cancel placed order cancellation_request = client.create_signed_cancel_orders( MARKET_SYMBOLS.ETH, order_hash=[post_resp["hash"]] ) cancellation_request = client.create_signed_cancel_order(order) pprint(cancellation_request) cancel_resp = await client.post_cancel_order(cancellation_request) pprint(cancel_resp) # post order again await client.adjust_leverage(MARKET_SYMBOLS.ETH, leverage) order = OrderSignatureRequest( symbol=MARKET_SYMBOLS.ETH, # market symbol price=2905, # price at which you want to place order quantity=0.01, # quantity side=ORDER_SIDE.BUY, orderType=ORDER_TYPE.LIMIT, leverage=leverage, salt=random.randint(0, 100000000), expiration=int(time.time() + (30 * 24 * 60 * 60)) * 1000, ) signed_order = client.create_signed_order(order) post_resp = await client.post_signed_order(signed_order) pprint(post_resp) time.sleep(2) # this time cancel all open orders resp = await client.cancel_all_orders( MARKET_SYMBOLS.ETH, [ORDER_STATUS.OPEN, ORDER_STATUS.PARTIAL_FILLED] ) if resp is False: print("No open order to cancel") else: pprint(resp) await client.close_connections() if __name__ == "__main__": loop = asyncio.new_event_loop() loop.run_until_complete(main()) loop.close() loop.close()

Order Cancellation Signatures in Other Languages

To use the API, you may choose any other language or library that allows you to make HTTP requests. While we don't support official libraries for other languages, you can find a list of order cancellation signature creation examples in various languages here.