🚧

###### Para fazer a autenticação, é necessário criar suas Chaves de Api

Abaixo temos um exemplo para assinatura da mensagem e envio da transação.

Passo a passo:

1- Instalar a biblioteca eliptic: npm i elliptic.
2- Instalar a biblioteca crypto: npm i crypto-js.
3- Criar um objeto elliptic passando como parâmetro a criptografia: 'ed25519'.
4- Montar a query da requisição passando o timestamp e o recwindow + parâmetros obrigatórios ou opcionais do endpoint.
5- Com o objeto eliptic instanciado, invocar a função "keyFromPrivate" passando dois parâmetros: secret e digest (onde digest deve ser 'hex').
6- Criar o hash da query com a biblioteca Crypto onde o algoritmo deve ser 'sha256' e digest (onde digest deve ser 'hex').
7- Com o objeto eliptic instanciado, invocar a função 'sign' passando o hash como parâmetro e encadear a função toDER passando digest (onde digest deve ser 'hex').
8- Fazer o request para o endpoint montando o header com duas propriedades: "X-MBX-APIKEY" e "signature" e passando a query (passo 4).

No exemplo nodeJS abaixo, temos um request do tipoGET:

import { ec } from 'elliptic'; import { createHash } from 'crypto' import { stringify } from 'urlencode' const algorithm = new ec('ed25519'); const apiKey = "[chave_publica]"; const secret = "[chave_privada]"; const nonce = + new Date; // timestamp const recvWindow = 5000 const data = { symbol: 'BTC:BRL', limit: 25, timestamp: nonce, recvWindow: 5000 } const query = stringify(data); const clientFromPriv = algorithm.keyFromPrivate(secret, "hex"); const hash = createHash('sha256').update(query).digest('hex'); const signature = clientFromPriv.sign(hash).toDER("hex"); const response = await request.default('[URL_API]') .get(`[ENDPOINT]?${query}`) .set({ 'X-MBX-APIKEY': apiKey, 'signature': signature}) //HEADER

No exemplo nodeJS abaixo, temos um request do tipoPOST:

import { ec } from 'elliptic'; import { createHash } from 'crypto' import { stringify } from 'urlencode' const algorithm = new ec('ed25519'); const apiKey = "[chave_publica]"; const secret = "[chave_privada]"; const nonce = + new Date; // timestamp const recvWindow = 5000 const data = { symbol: 'BTC:BRL', side:"buy", type:"limit", amount: 10, price: 15.01, timestamp: nonce, recvWindow: 5000 } const body = stringify(data); const clientFromPriv = algorithm.keyFromPrivate(secret, "hex"); const hash = createHash('sha256').update(body).digest('hex'); const signature = clientFromPriv.sign(hash).toDER("hex"); const response = await request.default('[URL_API]') .post(`[ENDPOINT]`) .set({ 'X-MBX-APIKEY': apiKey, 'signature': signature}) .send(body)