Esimerkki REST API -pyynnöstä bashilla

Viimeksi päivitetty: 31.3.2025

Johdanto

Kraken REST API -rajapinnan toteuttaminen käyttämällä Bourne Again shelliä (bash) ja joitakin siihen liittyviä komentoja (openssl, base64, xxd jne.) voi olla kätevä ja tehokas ratkaisu Krakenin markkinoiden kanssa toimimiseen (vaikka se ei olisikaan nopein toteutus verrattuna käännettyyn koodiin).

Bash ja tarvittavat komennot ovat helposti saatavilla (esiasennettuina) useimmissa UNIX-, Linux- ja macOS-järjestelmissä, ja ne voidaan helposti asentaa Windowsiin ja muihin järjestelmiin, joten kaikki tarvittavat ohjelmistot ovat saatavilla ilman kolmannen osapuolen API-työkaluja tai kirjastoja.

Käyttämällä pelkkää tekstieditoria (jopa vanhan koulukunnan editoria, kuten vi) ja muutamaa koodiriviä on mahdollista päästä käsiksi sekä julkisiin markkinatietoihin että yksityisiin tilitietoihin sekä tehdä/peruuttaa toimeksiantoja Krakenin markkinoilla.

Esimerkkikoodi

Seuraava koodi näyttää bash-kooditoteutuksen REST API:n Balance-päätepisteen kutsumiseen:

#!/usr/bin/env bash

# API:n julkiset/yksityiset avaimet kopioitu tilinhallintasivustolta

api_key='gxTXpC4Ag/N0QPKlYnRhL1qVB2G/HZV1eB2drl7eOXga30dEKoB+EUMs'
api_private='62kRfRX7BI8G8T/jl7clnZ+vSfJt7YmQN23JQkJfHCE6oxecJX4fN4i2RitmRhyFzfJ4efKy2yCo4H068rfv0A=='

# API-muuttujat (URL, päätepiste, nonce jne.)

api_host='https://api.kraken.com'
api_endpoint='/0/private/Balance'
api_nonce=`date +%s`
api_post="nonce=$api_nonce"

# Todennusalgoritmi (SHA256 ja HMAC SHA512)

api_private_hex=`echo -n $api_private base64 -d xxd -p tr -d "\\n"`
echo -n $api_endpoint > kapi_bash.bin
echo -n $api_nonce$api_post openssl dgst -sha256 -binary >> kapi_bash.bin
api_sign=`cat kapi_bash.bin openssl dgst -binary -sha512 -mac HMAC -macopt hexkey:$api_private_hex base64`

# HTTP-pyyntö (POST)

curl --header "API-Key: $api_key" --header "API-Sign: $api_sign" --data $api_post $api_host$api_endpoint

ja vastaava koodi voidaan myös ladata (kapi_bash.sh-tiedostona).

Jatkokäyttö/kehitys

Oman tilisi saldojen hakemiseksi esimerkin API-avain tulee korvata oman Kraken-tilisi API-avaimella, ja muita API-päätepisteitä voidaan ottaa käyttöön yksinkertaisesti muokkaamalla api_endpoint-muuttujaa ja api_post-muuttujaa (tarvittaessa).

Tarvitsetko lisää apua?