हर HeroMiners पूल रीड-ओनली HTTP एंडपॉइंट के एक ही सेट का जवाब देता है। कोई API की नहीं, कोई अकाउंट नहीं और कोई साइन-अप नहीं: एक URL पर रिक्वेस्ट भेजें और JSON वापस पाएँ, जिसमें Access-Control-Allow-Origin: * सेट है ताकि ब्राउज़र का कोई पेज इसे सीधे कॉल कर सके। इससे आप रिग मॉनिटर, भुगतान नोटिफ़ायर, अपना खुद का डैशबोर्ड बना सकते हैं, या पूल का डेटा किसी स्प्रेडशीट में ला सकते हैं।
अपना पता डालें और नीचे का हर उदाहरण इस पूल पर चलाने के लिए तैयार है। आप यहाँ जो भी लिखते हैं वह पूल के अलावा कहीं नहीं भेजा जाता, और वह भी सिर्फ़ तब जब आप चलाएँ दबाते हैं।
बेस URL
https://quantus.herominers.com
एंडपॉइंट
GET/api/stats
इस समय पूल अपने बारे में जो कुछ जानता है: पूल और नेटवर्क हैशरेट, कनेक्टेड माइनर और वर्कर, आखिरी ब्लॉक, शुल्क, पोर्ट और भुगतान सेटिंग।
क्वेरी
address
एक भुगतान पता। उस माइनर को miner में जोड़ता है, और solo_miner में भी अगर वह सोलो माइनिंग भी करता है। इसे छोड़ दें तो दोनों में से कोई भी फ़ील्ड नहीं भेजी जाती।
शुरुआत इसी एंडपॉइंट से करें। इस साइट का पूल पेज, माइनर पेज और हर चार्ट इसी से बनता है।
रिक्वेस्ट
curl "https://quantus.herominers.com/api/stats"
जवाब
एक ऑब्जेक्ट जिसमें pool, network, config, charts, lastblock, payments और visitors हैं, यानी इस समय साइट पर कितने लोग हैं, { windowMinutes, activeVisitors, activeLookups } के रूप में। हर स्टैट्स साइकिल में एक बार फिर से गिना जाता है, इसलिए इससे जल्दी पोल करने पर वही नंबर मिलते हैं।
GET/api/live_stats
/api/stats जैसा ही डेटा, लेकिन रिक्वेस्ट अगला स्टैट्स साइकिल पूरा होने तक खुली रहती है और फिर जवाब मिलता है। टाइमर पर पोल करने की जगह हर अपडेट पर एक रिक्वेस्ट।
क्वेरी
address
जवाब में एक माइनर शामिल करें, जैसे /api/stats में।
एक कनेक्शन खोलें और जवाब आते ही उसे फिर से खोलें। एक ही IP से एक साथ कई खुले कनेक्शन 503 के साथ ठुकरा दिए जाते हैं, इसलिए एक साथ कई रिक्वेस्ट न भेजें।
/api/stats जैसा ही ढाँचा, बस miner और solo_miner हमेशा भेजे जाते हैं, और कोई पता न दिया हो तो खाली रहते हैं। रिक्वेस्ट ज़्यादा से ज़्यादा एक स्टैट्स साइकिल तक खुली रहती है।
GET/api/stats_address
एक माइनर: मौजूदा और औसत हैशरेट, मान्य और स्टेल शेयर, बैलेंस, भुगतान की गई राशि, और हर वर्कर के लिए यही आँकड़े।
इसे चलाने के लिए ऊपर address डालें। कमांड इसे दिखाती है क्योंकि इसके बिना पूल एरर के साथ जवाब देता है।
जवाब
एक ऑब्जेक्ट जिसमें stats (माइनर का कुल), payments, charts, unlocked और workers हैं, जो हर वर्कर की एक एंट्री वाला ऐरे है, जिसका नाम उसके name से होता है। जिस पते ने यहाँ कभी माइन नहीं किया, उसे खाली माइनर की जगह एक एरर मिलता है।
GET/api/get_blocks
पूल को मिले वे ब्लॉक जो अब पेंडिंग नहीं हैं: जिनका भुगतान हो चुका है, या जो ऑर्फ़न हो गए। status बताता है कि कौन सा।
क्वेरी
heightज़रूरी
इस ऊँचाई से नीचे के ब्लॉक लौटाएँ। सबसे नए पेज के लिए मौजूदा टिप से बहुत बड़ी संख्या भेजें, फिर पीछे के पेज के लिए मिली सबसे कम ऊँचाई भेजें।
खोजने वाले का पता पूल से बाहर जाने से पहले मास्क कर दिया जाता है, इसलिए इस एंडपॉइंट से पते इकट्ठा नहीं किए जा सकते। time Unix सेकंड में है, reward कॉइन की सबसे छोटी इकाई में है, और एक सोलो ब्लॉक का score भुगतान होने पर s0 और ऑर्फ़न होने पर s1 होता है।
पूल के भेजे गए भुगतान, पूरे पूल के लिए या किसी एक पते के लिए।
क्वेरी
timeज़रूरी
सेकंड में दिए गए इस Unix टाइमस्टैम्प से पहले के भुगतान लौटाएँ। सबसे नए पेज के लिए मौजूदा समय इस्तेमाल करें, फिर पीछे के पेज के लिए मिला सबसे पुराना टाइमस्टैम्प।
address
एक भुगतान पते तक सीमित करें। पूल के अब तक के हर भुगतान के लिए इसे छोड़ दें।
limit
कितने लौटाने हैं। पूल के अपने पेज साइज़ तक सीमित है, इसलिए बड़ी संख्या देने पर बस उतने ही मिलते हैं।
format
रॉ ऐरे की जगह { tx, amount, time } ऑब्जेक्ट पाने के लिए parsed भेजें।
conversions
address के साथ 1 भेजें ताकि पेज पर हर उस भुगतान का कन्वर्ज़न रिकॉर्ड भी मिले जो किसी दूसरे कॉइन में बदला गया था। तब जवाब { payments, conversions } बन जाता है। format=parsed के साथ इसे अनदेखा किया जाता है।
format के बिना, एक फ़्लैट ऐरे जिसमें वैल्यू और टाइमस्टैम्प बारी-बारी से आते हैं, हर वैल्यू txid:amount होती है। राशियाँ कॉइन की सबसे छोटी इकाई में स्ट्रिंग होती हैं और स्ट्रिंग ही रहनी चाहिए: 18 दशमलव वाली चेन पर किसी को नंबर के रूप में पार्स करने से सटीकता खो जाती है।
GET/api/get_miners_stats
पूल के दस सबसे बड़े माइनर, साथ में माइनर पेज के पीछे का माइनिंग सॉफ़्टवेयर और क्षेत्रवार बँटवारा।
एक ऑब्जेक्ट जिसमें miners, agents, regions, regionHistory और statsDisplay हैं। पते मास्क किए होते हैं। जब कोई पैनल चालू नहीं होता तो उसका ऐरे खाली आता है और statsDisplay यह बताता है।
GET/api/get_blocks_search
पूल के ब्लॉक ऊँचाई, ब्लॉक हैश या खोजने वाले के पते से खोजें, पेंडिंग और भुगतान हो चुके दोनों तरह के ब्लॉक में एक साथ।
क्वेरी
qज़रूरी
एक ऊँचाई, एक ब्लॉक हैश या एक पता।
offset
इतने नतीजे छोड़ दें। जवाब में hasMore होता है ताकि आपको पता रहे कि फिर से पूछना है या नहीं।
सर्च हर IP के लिए रेट लिमिटेड है, और सीमा पार करने पर सिर्फ़ एरर की जगह rateLimited मिलता है, साथ में retryMs में इंतज़ार का सटीक समय। लंबाई की सीमाएँ जानने के लिए और यह जानने के लिए कि सर्च चालू है भी या नहीं, पहले /api/get_blocks_search_config कॉल करें।
इसे चलाने के लिए ऊपर q डालें। कमांड इसे दिखाती है क्योंकि इसके बिना पूल एरर के साथ जवाब देता है।
जवाब
एक ऑब्जेक्ट जिसमें pending और matured हैं, दोनों में /api/get_blocks की तरह वैल्यू और ऊँचाई बारी-बारी से आती हैं, साथ में totalMatched, offset, limit और hasMore। एक matured ब्लॉक /api/get_blocks फ़ॉर्मेट में होता है; एक pending ब्लॉक अभी मैच्योर होने का इंतज़ार कर रहा होता है और लंबा पेंडिंग फ़ॉर्मेट इस्तेमाल करता है, इसलिए उसके फ़ील्ड अलग क्रम में होते हैं।
GET/api/get_blocks_search_config
ब्लॉक सर्च चालू है या नहीं, और किसी क्वेरी को किन सीमाओं में रहना है, ताकि पहली सर्च से पहले ही सर्च बॉक्स सेट किया जा सके।
{ enabled, minQueryLength, maxQueryLength, frontendCooldownMs }। लंबाई कैरेक्टर में है, और frontendCooldownMs बताता है कि दो सर्च के बीच कितना इंतज़ार करना है।
GET/api/get_miner_payout_level
किसी पते के लिए अभी सेट की गई भुगतान सीमा, पूरे कॉइन में।
क्वेरी
addressज़रूरी
भुगतान पता।
इससे जुड़ा /api/set_miner_payout_level इसे लिखता है, और यह सबके लिए खुला नहीं है: रिक्वेस्ट उसी पते के अपने माइनिंग IP से आनी चाहिए। वह जाँच, और उसके आगे लगी रेट लिमिट, यहाँ नहीं बल्कि डैशबोर्ड के सेटिंग टैब पर बताई गई हैं।
इसे चलाने के लिए ऊपर address डालें। कमांड इसे दिखाती है क्योंकि इसके बिना पूल एरर के साथ जवाब देता है।
जवाब
{ banned, minerMessage }, और बैन होने पर साथ में blockMining, blockPayments और reason। यह वही सूचना है जो माइनर पेज इस पते के लिए दिखाता है: माइनिंग से रोका गया, भुगतान से रोका गया, या किसी से नहीं। minerMessage इस पते के लिए ऑपरेटर का मैसेज है, { message, type, createdAt, expiresAt } के रूप में, या कोई न हो तो null।
सही इस्तेमाल
पूल की अपनी घड़ी के हिसाब से पोल करें। नंबर हर स्टैट्स साइकिल में एक बार फिर से गिने जाते हैं, और /api/stats के जवाब में config.updateInterval बताता है कि यह कितने सेकंड का है। इससे ज़्यादा बार पूछने पर वही जवाब मिलता है और दोनों तरफ़ का बैंडविड्थ खर्च होता है।
तेज़ टाइमर की जगह /api/live_stats इस्तेमाल करें। कुछ नया होते ही यह जवाब देता है, जो पोल करने से आपके लिए तेज़ भी है और पूल पर हल्का भी।
राशियों को स्ट्रिंग ही रखें। रिवॉर्ड और बैलेंस कॉइन की सबसे छोटी इकाई में आते हैं। 18 दशमलव वाली चेन पर ये इंटीजर उस सीमा से आगे निकल जाते हैं जिसे JavaScript नंबर ठीक-ठीक रख सकता है, इसलिए पार्स करने पर भुगतान चुपचाप राउंड हो जाता है।
पते मास्क किए हुए मिलेंगे। सार्वजनिक सूचियाँ हर पते का बीच का हिस्सा छिपाती हैं। आपके पूरे पते की ज़रूरत सिर्फ़ आपको होती है, और सिर्फ़ वहीं जहाँ आप उसे खुद देते हैं।
रेट लिमिट को इंतज़ार मानें, विफलता नहीं। जहाँ कोई सीमा लागू होती है, वहाँ जवाब में retryMs होता है। उतनी देर रुकें और फिर से कोशिश करें, लगातार रिक्वेस्ट की बौछार न करें।
बताएँ कि आप कौन हैं। आपके टूल का नाम बताने वाला User-Agent ज़रूरी नहीं है, लेकिन इससे हम किसी बदलाव के बारे में आपको बता सकते हैं, ताकि आपको अंदाज़ा न लगाना पड़े कि क्या टूटा।