All
इसके द्वारा फ़िल्टर करें:
मैं अपने खाते में नकद कैसे जमा करूँ?
मुझे खाते की सत्यापन में मदद चाहिए
मैं अपने खाते तक क्यों नहीं पहुँच सकता?
क्या कोई क्रिप्टो निकासी शुल्क हैं?
मुझे अपने खाते में साइन इन करने में मदद चाहिए
जब भी कोई API कॉल निजी API विधियों में से किसी एक के माध्यम से किसी खाते तक पहुँचता है, तो API प्रमाणीकरण की आवश्यकता होती है।
उदाहरण के लिए, खाता प्रबंधन विधियाँ जैसे बैलेंस (Balance), ट्रेडबैलेंस (TradeBalance) और ओपनऑर्डर्स (OpenOrders); ट्रेडिंग विधियाँ जैसे ऐडऑर्डर (AddOrder) और कैंसिलऑर्डर (CancelOrder); और फंडिंग विधियाँ जैसे डिपॉज़िटएड्रेस (DepositAddresses) और विथड्रॉइन्फो (WithdrawInfo), ये सभी निजी API विधियाँ हैं जिनके लिए API प्रमाणीकरण की आवश्यकता होगी।
API प्रमाणीकरण एक सार्वजनिक/निजी कुंजी जोड़ी (सामूहिक रूप से API कुंजी के रूप में जानी जाती है) और SHA256 और HMAC SHA512 जैसे हैश एल्गोरिदम का उपयोग करके एक क्रिप्टोग्राफिक हस्ताक्षर पर आधारित है।
एक उदाहरण API कुंजी में निम्नलिखित के समान एक सार्वजनिक और निजी कुंजी शामिल होगी:
Bash
Public Key: CJbfPw4tnbf/9en/ZmpewCTKEwmmzO18LXZcHQcu7HPLWre4l8+V9I3y
Private Key: FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ==ध्यान दें कि इन उदाहरणों का उपयोग नहीं किया जा सकता है क्योंकि वे किसी भी Kraken खाते से संबद्ध नहीं हैं।
क्रिप्टोग्राफिक हस्ताक्षर API क्लाइंट कोड द्वारा वास्तविक समय में बनाए जाते हैं। API कॉल के लिए डेटा को हैश और संदेश प्रमाणीकरण एल्गोरिदम की एक श्रृंखला के माध्यम से पारित किया जाता है जो API रहस्य (API कुंजी का निजी भाग) का उपयोग करके डेटा को सुरक्षित रूप से हस्ताक्षरित करता है।
API कुंजी और हस्ताक्षर कस्टम HTTP हेडर API-Key और API-Sign के माध्यम से API को प्रदान किए जाते हैं।
API कुंजी का उपयोग यह पहचानने के लिए किया जाता है कि किस खाते तक पहुँचा जा रहा है, इसलिए कुंजी मान प्रत्येक API कॉल के लिए समान होता है। क्रिप्टोग्राफिक हस्ताक्षर का उपयोग API कॉल को प्रमाणित करने के लिए किया जाता है और परिवर्तनीय मानों (जैसे नॉनस) का उपयोग करके गणना की जाती है, इसलिए हस्ताक्षर मान प्रत्येक API कॉल के लिए भिन्न होता है।
API-Key और API-Sign HTTP हेडर के उदाहरण इस प्रकार हैं:
API-Key: CJbfPw4tnbf/9en/ZmpewCTKEwmmzO18LXZcHQcu7HPLWre4l8+V9I3y
API-Sign: RdQzoXRC83TPmbERpFj0XFVArq0Hfadm0eLolmXTuN2R24hzIqtAnF/f7vSfW1tGt7xQOn8bjm+Ht+X0KrMwlA==
ध्यान दें कि API-Key मान ऊपर दिखाए गए सार्वजनिक कुंजी के समान ही है, लेकिन API-Sign मान (हस्ताक्षर) ऊपर दिखाए गए निजी कुंजी से भिन्न है और प्रत्येक API कॉल के लिए एक नए मान में बदल जाएगा।
हमारे API दस्तावेज़ में कहा गया है कि API-Sign मान "(URI पाथ + SHA256(नॉनस + POST डेटा)) के HMAC-SHA512 का उपयोग करके एक संदेश हस्ताक्षर और base64 डिकोड की गई गुप्त API कुंजी" है, जिसे कई अलग-अलग भागों में निम्नानुसार विभाजित किया जा सकता है:
चर
URI पाथ = API कॉल का URL 'https://api.kraken.com' के बिना।
नॉनस = एक अद्वितीय पहचानकर्ता जिसका मान प्रत्येक API कॉल के साथ बढ़ना चाहिए (अक्सर एक UNIX टाइमस्टैम्प, जो 1 जनवरी 1970 से सेकंड (या उच्च रिज़ॉल्यूशन के लिए मिलीसेकंड) में वर्तमान समय होता है)।
POST डेटा = नॉनस और API विधि मापदंडों के फॉर्म एन्कोडेड नाम/मान जोड़े।
TradeBalance विधि के लिए कॉल के चर के उदाहरण इस प्रकार हैं (ध्यान दें कि सभी मान स्ट्रिंग मान हैं, भले ही मान क्या दर्शाते हों):
URI पाथ = "/0/private/TradeBalance"
नॉनस = "1540973848000"
POST डेटा = "nonce=1540973848000&asset=xbt"
एल्गोरिथम
नॉनस और POST डेटा का SHA256 कैलकुलेट करें।
API सीक्रेट (API कुंजी का निजी हिस्सा) को base64 से डीकोड करें।
URI पाथ और SHA256 का HMAC कैलकुलेट करें, जिसमें SHA512 को HMAC हैश के रूप में और डीकोड किए गए API सीक्रेट को HMAC कुंजी के रूप में उपयोग किया जाता है।
HMAC को base64 में एन्कोड करें।
ऊपर दिखाए गए वैरिएबल का उपयोग करके एल्गोरिथम का एक उदाहरण इस प्रकार है:
Base64Encode(HMAC-SHA512 of ("/0/private/TradeBalance" + SHA256("1540973848000nonce=1540973848000&asset=xbt")) using Base64Decode("FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ==") as the HMAC key
परिणाम API-साइन मान है।
न्यूनतम (कोई त्रुटि जाँच नहीं) लेकिन TradeBalance API एंडपॉइंट के लिए API प्रमाणीकरण हस्ताक्षर उत्पन्न करने के पूरी तरह कार्यात्मक उदाहरण इस प्रकार हैं:
Python
# Import required Python libraries
import time
import base64
import hashlib
import hmac
# Decode API private key from base64 format displayed in account management
api_secret = base64.b64decode(
"FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ=="
)
# Variables (API endpoint, nonce and HTTP POST data)
api_path = "/0/private/TradeBalance"
api_nonce = str(int(time.time() * 1000))
api_post = "nonce=" + api_nonce + "&asset=xbt"
# Cryptographic hash algorithms
api_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_post.encode('utf-8'))
api_hmac = hmac.new(
api_secret,
api_path.encode('utf-8') + api_sha256.digest(),
hashlib.sha512
)
# Encode signature into base64 format used in API-Sign value
api_signature = base64.b64encode(api_hmac.digest())
# API authentication signature for use in API-Sign HTTP header
print(api_signature.decode())NodeJS
Bash
// Import required NodeJS libraries
const crypto = require('crypto');
// Decode API private key from base64 format displayed in account management
const apiSecret = Buffer.from(
'FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ==',
'base64'
);
// Variables (API endpoint, nonce and HTTP POST data)
const apiPath = '/0/private/TradeBalance';
const apiNonce = Date.now().toString();
const apiPost = `nonce=${apiNonce}&asset=xbt`;
// Cryptographic hash algorithms
const apiSha256 = crypto.createHash('sha256').update(`${apiNonce}${apiPost}`).digest();
const apiSha512 = crypto.createHmac('sha512', apiSecret).update(apiPath).update(apiSha256).digest();
// Encode signature into base64 format used in API-Sign value
const apiSignature = apiSha512.toString('base64');
// API authentication signature for use in API-Sign HTTP header
console.log(apiSignature);PHP
Bash
// Decode API private key from base64 format displayed in account management
$apiSecret = base64_decode('FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ==');
// Variables (API endpoint, nonce and HTTP POST data)
$apiPath = '/0/private/TradeBalance';
$apiNonce = explode(' ', microtime());
$apiNonce = $apiNonce[1] . substr($apiNonce[0], 2, 3);
$apiPost = "nonce={$apiNonce}&asset=xbt";
// Cryptographic hash algorithms
$apiSha256 = hash('sha256', $apiNonce . $apiPost, true);
$apiSha512 = hash_hmac('sha512', $apiPath . $apiSha256, $apiSecret, true);
// Encode signature into base64 format used in API-Sign value
$apiSignature = base64_encode($apiSha512);
// API authentication signature for use in API-Sign HTTP header
print $apiSignature;