async def cancel_order(self, id, symbol=None, params={}):
    if (self.apiKey is None):
        raise ArgumentsRequired('cancelOrder() requires hasAlreadyAuthenticatedSuccessfully')
    if (symbol is None):
        raise ArgumentsRequired((self.id + ' cancelOrder() requires a symbol argument'))
    (await self.load_markets())
    market = self.market(symbol)
    baseId = market['baseId']
    quoteId = market['quoteId']
    normalSymbol = market['normalSymbol']
    feeAmount = '300000000000000'
    now = self.milliseconds()
    expiration = 0
    datetime = self.iso8601(now)
    datetime = datetime.split('.')[0]
    expirationDatetime = self.iso8601(expiration)
    expirationDatetime = expirationDatetime.split('.')[0]
    defaultDappId = 'Sagittarius'
    dappId = self.safe_string(params, 'dappId', defaultDappId)
    byteStringArray = [self.number_to_be(1, 32), self.number_to_le(int(math.floor((now / 1000))), 4), self.number_to_le(1, 1), self.number_to_le(expiration, 4), self.number_to_le(1, 1), self.number_to_le(33, 1), self.number_to_le(0, 8), self.number_to_le(feeAmount, 8), self.number_to_le(len(self.apiKey), 1), self.encode(self.apiKey), self.number_to_le(len(normalSymbol), 1), self.encode(normalSymbol), self.base16_to_binary(id), self.number_to_le(int(quoteId), 4), self.number_to_le(int(baseId), 4), self.number_to_le(0, 1), self.number_to_le(1, 1), self.number_to_le(len(dappId), 1), self.encode(dappId), self.number_to_le(0, 1)]
    bytestring = self.binary_concat_array(byteStringArray)
    hash = self.hash(bytestring, 'sha256', 'hex')
    signature = self.ecdsa(hash, self.secret, 'secp256k1', None, True)
    recoveryParam = self.binary_to_base16(self.number_to_le(self.sum(signature['v'], 31), 1))
    mySignature = ((recoveryParam + signature['r']) + signature['s'])
    operation = {'fee': feeAmount, 'creator': self.apiKey, 'order_id': id, 'market_name': normalSymbol, 'money_id': int(quoteId), 'stock_id': int(baseId)}
    fatty = {'timestamp': datetime, 'expiration': expirationDatetime, 'operations': [[33, operation]], 'validate_type': 0, 'dapp': dappId, 'signatures': [mySignature]}
    request = {'trObj': self.json(fatty)}
    response = (await self.publicPostTransactionCancelorder(request))
    timestamp = self.milliseconds()
    statusCode = self.safe_string(response, 'code')
    status = ('canceled' if (statusCode == '0') else 'failed')
    return {'info': response, 'id': None, 'timestamp': timestamp, 'datetime': self.iso8601(timestamp), 'lastTradeTimestamp': None, 'status': status, 'symbol': None, 'type': None, 'side': None, 'price': None, 'amount': None, 'filled': None, 'remaining': None, 'cost': None, 'trades': None, 'fee': None, 'clientOrderId': None, 'average': None}
async def cancel_order(self, id, symbol=None, params={}):
    if (self.apiKey is None):
        raise ArgumentsRequired('cancelOrder() requires hasAlreadyAuthenticatedSuccessfully')
    if (symbol is None):
        raise ArgumentsRequired((self.id + ' cancelOrder() requires a symbol argument'))
    (await self.load_markets())
    market = self.market(symbol)
    baseId = market['baseId']
    quoteId = market['quoteId']
    normalSymbol = market['normalSymbol']
    feeAmount = '300000000000000'
    now = self.milliseconds()
    expiration = 0
    datetime = self.iso8601(now)
    datetime = datetime.split('.')[0]
    expirationDatetime = self.iso8601(expiration)
    expirationDatetime = expirationDatetime.split('.')[0]
    defaultDappId = 'Sagittarius'
    dappId = self.safe_string(params, 'dappId', defaultDappId)
    byteStringArray = [self.number_to_be(1, 32), self.number_to_le(int(math.floor((now / 1000))), 4), self.number_to_le(1, 1), self.number_to_le(expiration, 4), self.number_to_le(1, 1), self.number_to_le(33, 1), self.number_to_le(0, 8), self.number_to_le(feeAmount, 8), self.number_to_le(len(self.apiKey), 1), self.encode(self.apiKey), self.number_to_le(len(normalSymbol), 1), self.encode(normalSymbol), self.base16_to_binary(id), self.number_to_le(int(quoteId), 4), self.number_to_le(int(baseId), 4), self.number_to_le(0, 1), self.number_to_le(1, 1), self.number_to_le(len(dappId), 1), self.encode(dappId), self.number_to_le(0, 1)]
    bytestring = self.binary_concat_array(byteStringArray)
    hash = self.hash(bytestring, 'sha256', 'hex')
    signature = self.ecdsa(hash, self.secret, 'secp256k1', None, True)
    recoveryParam = self.binary_to_base16(self.number_to_le(self.sum(signature['v'], 31), 1))
    mySignature = ((recoveryParam + signature['r']) + signature['s'])
    operation = {'fee': feeAmount, 'creator': self.apiKey, 'order_id': id, 'market_name': normalSymbol, 'money_id': int(quoteId), 'stock_id': int(baseId)}
    fatty = {'timestamp': datetime, 'expiration': expirationDatetime, 'operations': [[33, operation]], 'validate_type': 0, 'dapp': dappId, 'signatures': [mySignature]}
    request = {'trObj': self.json(fatty)}
    response = (await self.publicPostTransactionCancelorder(request))
    timestamp = self.milliseconds()
    statusCode = self.safe_string(response, 'code')
    status = ('canceled' if (statusCode == '0') else 'failed')
    return {'info': response, 'id': None, 'timestamp': timestamp, 'datetime': self.iso8601(timestamp), 'lastTradeTimestamp': None, 'status': status, 'symbol': None, 'type': None, 'side': None, 'price': None, 'amount': None, 'filled': None, 'remaining': None, 'cost': None, 'trades': None, 'fee': None, 'clientOrderId': None, 'average': None}