Основная информация
Адрес интерфейса
● Способ получения ключа шифрования.
а. Предоставьте адрес электронной почты, зарегистрированный на официальном сайте Spiderpool, свяжитесь с сотрудниками Spiderpool, чтобы активировать разрешения стороннего API, и после успешной активации войдите на официальный сайт, и вы увидите надпись «Получить ключ API» под кнопкой персональный центр.
● Онлайн-положение
а. Официальный сайт: https://api.spiderpool.com/ .
Пояснение
● H, KH, MH, GH, TH, PH, EH, 1000 разница между вычислительными единицами мощности составляет 1000
Обратите внимание
●Все интерфейсы используют подписание закрытым и проверку открытым ключом.
● Унифицированный формат запроса
Копировать
Copy {
"dataJson" : "" ,
"accessKey" : "" ,
"timestamp" : 1628381288000 ,
"sign" : ""
}
● При доступе интерфейс /v2/addUser
Копировать
Copy {
"dataJson" : "{" userName ":" test 001 "," password ":" 123456 "}" ,
"accessKey" : "D1504708600B44B499489C16CE7C32A5" ,
"timestamp" : 1628381288000 ,
"sign": "N0n0iqKLUtssteqhbsOHGv2N7UaJh+YnPio90fciAM4hn2L82jAhafG/ynxdgFnBf2ZJ2R2C1d0uRvSNSHnEJKA8rvMx6ytQa2E4gpD8LG0kkdzYwgv9pyEFOGsS4+cUdV+nF/WJiPDRqfx8Cb0gPjBuCj+HboVx5++HOe2v+sA="
}
● Единый формат возврата
Copy {
"code" : "" ,
"msg" : "" ,
"data" : object ,
}
code="SUCCESS" Если операция успешна, остальное терпит неудачу.
● java Пример запроса верс
Copy long timestamp = System . currentTimeMillis ();
String spiderUrl = "https://api.spiderpool.com/v2/subaccount/createSubaccount" ;
JSONObject jsonObject = new JSONObject() ;
jsonObject . put ( "coin" , "eth" );
jsonObject . put ( "subaccount" , "chizg101" );
jsonObject . put ( "walletAddress" , "0x9ed670910a8e5895428bb85e600d7d388a904a22" );
Map < String , Object > param = new HashMap <>();
String dataJsonStr = jsonObject . toJSONString () + "|" + timestamp;
String sign = RSACoder . sign ( dataJsonStr . getBytes ( StandardCharsets . UTF_8 ) , privateKey);
param . put ( "dataJson" , jsonObject . toJSONString ());
param . put ( "accessKey" , "5A842DAA0B8A4746B362FBF382A04CD9" );
param . put ( "timestamp" , timestamp);
param . put ( "sign" , sign);
String jsonBody = JSON . toJSONString (param);
String reslut = HttpclientUtil . postRequest (spiderUrl , jsonBody , null , true );
● python Пример запроса версии
Copy import requests
from Crypto . PublicKey import RSA
from Crypto . Signature import PKCS1_v1_5
from Crypto . Hash import MD5
import base64
import time
import calendar
datajson = "{'subAccountName':'test0414dan08','coin':'eth'}"
timestamp = str ( int ( round (calendar. timegm (time. gmtime ()) * 1000 )))
data = datajson + "| %s " % (timestamp)
#私钥
privatekey='''MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJpigNWb2r6fbue9CfnaRyundft0WS4e/hhtdCef74UdH9stDtRidv24hieP7uXdq8KHVmzqAqiNVAHsg4WttwO9Fyz0YPuJZ/mXLqI0S4SOzGZ7hqErDOOF1Z9WE/ykapGAT/SBc5q0lLN6Z3iz7AygZYy4UxrH3cR2BsrUEyGnAgMBAAECgYBNTxpY3Uzyu//bh+xg849EKv2Hx8GIuPhg3x6VYR+eNvFm3e9ZJ12SvD5hvU/SR+jk5sS+kYh3Qx5YQEm0PUMxjyRkBpZUVitkBpRvBaQKfRvS9D65rUlUYhgHnyhwdvmIvJYob9dB+HkOgZMqEwWrWqe4B8E4i8ei9fwLkVSn0QJBAPHUljaXd4gvtkJVExlKB4u7irTEVjwTi9Nbh2pUWk3jgb1/Ua0kbNtQ0vEiBtQ6ROOSqbPoBCiH5YwR0KKjw2UCQQCjbj9Z98wUEXIao2EQ11U4T281B9vqUSYPBR4u7UVEDkeEyxL0gzXmqJc8pAmgCygSi0Ggg5xxD5TjoW+4xg4bAkEAjeE9qBXBiWMEuXIUXHf0aWTEgj3WojSNiplen2GSAbSCv9zc3IpMW3fV6qcd/pGZLTM04Vo0Zlskr8Mb9u/BiQJAcR60Nt+voAxbQFjprLB/ShShUsF31H4Kq8bNF4ofsXV4x0+QdTIEsvzqgYzBJMfUGtHMwP+X3yH72ns5S1m7FQJAKCWFdZzN9D+2HX7yZsc4/Q7l+J//LpZJjLsVhcDh3RGRU3QX6SzCWlLwOq4FX+nUYej2B3rr0ymr+tiy/k7fbQ==
'''
private_keyBytes = base64.b64decode(privatekey)
prikey = RSA.importKey(private_keyBytes)
signer = PKCS1_v1_5.new(prikey)
hash_obj = MD5.new(data.encode('utf-8'))
signtrue = base64.b64encode(signer.sign(hash_obj))
sign = str(signtrue)[2:-1]
url = "https://api.spiderpool.com/v2/subaccount/createSubaccount"
data = {
"dataJson": datajson,
"accessKey": "5A842DAA0B8A4746B362FBF382A04CD9",
"timestamp": timestamp,
"sign": sign
}
result = requests.post(url,json=data)
print(result.text)
● node Пример запроса версии
Copy const http = require ( 'http' );
const crypto = require ( 'crypto' );
const privateKey = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAM8WblrosGzrRPSo+xBiL1zMCimpq64nqw66Wh4Z3lG1WIAfe+mes3oFzLsiOuPALCUZHbaMQ9fC7gcgQIL8PtlPRnuqxO1VrKDPE1hCN2cy+7HuSgWMrhnkgP11eVrDFEV4c9ugA1pl9e/4s2F3QCuCKCCrDh+lFTcwLOB+/jqbAgMBAAECgYEAme0ZX9c/c+Y4XgbQfvAMNlSvZSJpqsxveEYJwAAIYQGDY9CDITZGP3faImqiDTGFXpnZnRuLPe/1TzSo3vOxniuW2Bdyu7gn39b6/bmwveIUVzHG3K5VUMV5r8uGiFoPkbl9jQmBBluAWhPsEdMMibdW+WGXsMiLigVdocCDF9ECQQD7SQMY4op0UuaUjFY3oPs5zTXzupopMFxMFxIn4WnZYTruRXFnJnzS2r+Cm6t+TdjXES0kHjky2ml5FSVfVLMjAkEA0vkgZTh/jGFSQ619Fa3TYzSa8TNGw309pXnXWQRKJO6USmWKOfdONp1u0aN/QlsFCGi8OmjTxeL8KsNWAEHuKQJAHqWr/Af9LOzDdJCdH1HB8i3GC8DRdn6QczNJIpYKa9nA7ziG+TaneKv3OX2078Wc0bYllEcfYMVkocDjevoAkwJBAIuVCDnwB3N5cFQWlIujVhhs1ZZ/tnHgisjQtAnRLL0CnFoclDeFx9maj5dj9O6SCeJmaSK7+GEUrIIeeufwtwECQQCq5yGYqnuXHQSra6qSpoC+65AyROVdDhXWRPdroFFbtTdE9EdaKImgac4B2ARKMGsKSXNXSXStHneN1R7n+iX/"
const signer = (json) => {
const privateKeys = "-----BEGIN PRIVATE KEY-----\n" + privateKey + "\n-----END PRIVATE KEY-----"
const sign = crypto .createSign ( 'md5' );
sign .update (json);
return sign .sign (privateKeys , 'base64' );
}
const jsonObject = JSON .stringify ({
queryTime : 1620732754
})
const timestamp = new Date () .valueOf ()
const dataJsonStr = ` ${ jsonObject } | ${ timestamp } `
const sign = signer (dataJsonStr)
const postData = JSON .stringify ({
dataJson : jsonObject ,
accessKey : "AF7180A7203F49779052F1D1336EBE3C" ,
timestamp : timestamp ,
sign : sign
});
const options = {
hostname : 'https://api.spiderpool.com' ,
path : '/v2/game/getData' ,
method : 'POST' ,
headers : {
'Content-Type' : 'application/json' ,
'Content-Length' : Buffer .byteLength (postData)
}
};
const req = http .request (options , (res) => {
res .setEncoding ( 'utf8' );
res .on ( 'data' , (chunk) => {
console .log ( `тело ответа: ${ chunk } ` );
});
});
// Запись данных в тело запроса。
req .write (postData);
req .end ();
● PHPПример запроса версии
Copy $private = 'PRIVATE_KEY' ;
$dataJson = json_encode ( [
'walletAddress' => 'eth_address' ,
'subaccount' => 'sub_account_name' ,
'coin' => 'eth' ,
] ) ;
$timestamp = round ( microtime ( true ) * 1000 ) ;
if ( openssl_sign ( $dataJson . '|' . $timestamp , $signature , $private , OPENSSL_ALGO_MD5 ) ) {
$signature = base64_encode ( $signature ) ;
$httpClient = new \ GuzzleHttp \ Client ([ 'timeout' => 10 ]);
$response = $httpClient -> post ( 'https://api.spiderpool.com/v2/subaccount/createSubaccount' , [
\ GuzzleHttp \ RequestOptions :: BODY => json_encode ( [
'dataJson' => $dataJson ,
'accessKey' => 'ACCESS_KEY' ,
'timestamp' => $timestamp ,
'sign' => $signature ,
] ),
] ) ;
dd ( $response -> getBody () -> getContents ()) ;
}
dd ( 'fail' ) ;
API
Создать субаккаунт
Примечание. Создание субсчета BTC также приведет к созданию субсчета FB, но создание субсчета FB не приведет к созданию субсчета BTC одновременно.
Запросить АУТ
POST /v2/subaccount/createSubaccount
параметр
Copy {
"code" : "SUCCESS"
}
Copy {
"code" : "......" , // INVALID_SUBACCOUNT / SUBACCOUNT_EXIST / IVAILD_WALLETADDRESS
"msg" : "......"
}
Изменить дополнительный аккаунт
Запросить АУТ
POST /v2/subaccount/modifyWalletAddress
параметры
Copy {
"code" : "SUCCESS"
}
Copy {
"code" : "......" , // INVALID_SUBACCOUNT / SUBACCOUNT_EXIST / IVAILD_WALLETADDRESS
"msg" : "......"
}
Шаблон наблюдателя
Запросить АУТ
POST /v2/subaccount/subAccountObserverLink
параметры
Copy {
"code" : "SUCCESS" ,
"data" : {
"subaccount" : "btctestchizg002" ,
"sign" : "v92480670d100d4c67f9e22d6ae612fd3e78aebb6e1b1fcdba994ba454ade6482" ,
"coin" : "btc"
}
}
Copy {
"code" : "......" , // INVALID_SUBACCOUNT / SUBACCOUNT_EXIST / IVAILD_WALLETADDRESS
"msg" : "......"
}
Получить подробную информацию о доходах субсчета
Запросить АУТ
POST /v2/subaccount/getSubaccountProfitDetailInfo
параметры
Copy {
"code" : "SUCCESS" ,
"data" : {
"total" : 35 ,
"dayProfitList" : [
{
"dayDate" : 1569600000000 ,
"avgHashrate" : "90057979829" ,
"dayProfit" : 0.647981779 ,
} ,
......
]
}
}
Получить записи о платежах по субсчетам
Запросить АУТ
POST /v2/subaccount/getSubaccountPaymentRecord
параметр
Copy {
"code" : "SUCCESS" ,
"data" : {
"list" : [
{
"paymentDate" : 1564531200000 , // время оплаты
"paymentAddress" : "mv8W2k7UMkqbHbfbvRXcEzaehPGvZCmkV5" // Платежный адрес
"paymentMoney" : 0.0666348000 , // Сумма платежа
"txId" : "097a39595c261f141de2174d8639fd9c18122236b14f9d08c91e82aea2a87e61" // 交易Id
}
] ,
"total" : 1 // Общее количество записей
}
}
Получите подробную информацию о вычислительной мощности суб-аккаунта
Запросить АУТ
POST /v2/subaccount/getSubaccountHashrateDetailInfo
параметры
Copy {
"code" : "SUCCESS" ,
"data" : {
"coin" : "btc" ,
"subaccount" : "btc_test001" ,
"startTime" : 1569674700000 ,
"timeInterval": 600, // Временной интервал для каждого фрагмента данных, единица измерения: секунда, BTC — 600 секунд.
"hashrates" : [ "86989808092" , "87758098015" , "88708080889" , "87167897971" , ......]
}
}
Получить информацию о доходах субсчета
Запросить АУТ
POST /v2/subaccount/getSubaccountProfitInfo
параметры
Copy {
"code" : "SUCCESS" ,
"data" : {
"yesterdayProfit" : 0.61505330 , // прибыль за 24 часа
"unpaidProfit" : 0.57536600 , // Невыплаченный заработок
"totalProfit" : 26.026078521 , // общий доход
"dayEstimateProfit" : 0.57536600 // Сегодняшний заработок. Валюта Facebook не поддерживает эти данные
}
}
Получите информацию о ежедневном доходе субсчета
Запросить АУТ
POST
/v2/sp/subaccount/getDayProfitDetailInfo
параметры
Copy {
"code" : 200 ,
"msg" : "Success" ,
"t" : 1717677079167 ,
"data" : {
"day" : 1716854400 ,
"coin" : "btc" ,
"userName" : "test" ,
"avgShareAccept" : 6792538500482.84 , // Среднесуточная вычислительная мощность H/s
"dayProfit" : 0.0000052632731696429 , // общий доход BTC
"ppsDayProfit" : 0.00000505032710936514 , //доход в п.с. BTC
"pplnsDayProfit" : 0.00000021294606027776 , // Комиссионный доход BTC
"difficult" : "84381461788831" //валюта fb в настоящее время не поддерживает эти данные
}
}
Получите информацию о почасовом доходе субсчета
Запросить АУТ
POST /v2/sp/
subaccount/
getHourProfitDetailInfo
параметры
Copy {
"code" : 200 ,
"msg" : "Success" ,
"t" : 1717677390714 ,
"data" : {
"day" : 1716861600 ,
"coin" : "btc" ,
"userName" : "test" ,
"ppsDayProfit" : 0.00000021294606027776 // PPSдоход
}
}
Получить информацию о субсчете
Запросить АУТ
POST /v2/subaccount/getSubaccountInfo
параметр
Copy {
"code" : "SUCCESS" ,
"data" : [
{
"coin" : "btc" ,
"subaccount" : "test001" ,
"walletAddress" : "33Vxq5DN4vAXkv7swDp4zNZJWkazsDgwLq"
"realtimeHashrate" : "9789798686766" , // 實時算力
"avgHashrate1440" : "88667987952" , // 24小時平均算力
"activeWorkerNum" : 100 , //在線礦工數
"inactiveWorkerNum" : 10 //離線礦工數
} ,
......
]
}
Получить информацию о майнере суб-аккаунта
Запросить АУТ
POST /v2/worker/getSubaccountWorkerDetailInfo
параметр
Copy {
"code" : "SUCCESS" ,
"data" : [
{
"workerName" : "test001" ,
"realtimeHashrate" : "2079080822" ,
"avgHashrate1440" : "20979879837" , // Средняя вычислительная мощность за 24 часа
"avgRejectrate1440" : 0.001 , // Частота отказов за 24 часа
"status" : "active" , // Статус: активен онлайн; неактивен офлайн потерян потерян контакт;
"lastShareTime" : 1578653368 // Последний раз поделиться
} ,
......
]
}
Получите подробную информацию о вычислительной мощности майнингового оборудования суб-аккаунта
просить
POST /v2/worker/getSubaccountWorkerHashrateDetailInfo
параметр
Copy {
"code" : "SUCCESS" ,
"data" : {
"coin" : "btc" ,
"subaccount" : "subaccount01" ,
"worker" : "test01" ,
"startTime" : 1581742800000 ,
"timeInterval" : 1800 ,
"hashrates" : [
"32369622321725" , // Средняя вычислительная мощность (H/s)
"30336747489926"
]
}
}
Получите вчерашний доход от блока BTC и соотношение доходов от комиссий.
просить
POST
/v2/subaccount/getFPPSRate
параметр
Copy {
"code" : "SUCCESS" ,
"data" : {
"rate" : "0.0329531088" ,
"day" : 1711324800 ,
"coin" : "btc"
}
}
Получите среднюю вычислительную мощность за весь час
просить
POST
/v2/account/getSubaccountHourHashrate
параметр
Copy {
"code" : "SUCCESS" ,
"data" : [
{
"hourTime" : 1711353600 ,
"shareAccept" : 11.102 , // TH/s
"userName" : "test01"
}
]
}
Получите приоритетные внутрисетевые комиссии
просить
POST
/v2/sp/txPriorityChain/getChainingFee
параметр
Copy {
"code" : 200 ,
"msg" : "Success" ,
"t" : 1718250294397 ,
"data" : {
"coin" : "btc" , //Валюта
"curTxSize" : 110 , //Объем транзакции
"unconfirmedPreTxSize" : 110 , //Неподтвержденный объем транзакции
"unit" : "btc" , //Валюта платежа
"totalFee" : 0.00009721 , //Фактически выплаченные комиссии
"theoreticalPayAmount" : 0.00003584 , //Теоретическая комиссия за оплату
"txHash" : "d0b0c82931c5c34fccb1f4acd42cadc999450921a1a3925ba6dce20ce10598f9" , //交易hash
"informEmail" : "test@test.com" , //Электронная почта пользователя
"timeout" : 6000 //Срок действия ордера, секунды
} ,
"success" : true
}
Расставьте приоритеты в цепочке
просить
POST
/v2/sp/txPriorityChain/submit
параметр
Copy {
"code" : 200 ,
"msg" : "Success" ,
"t" : 1718253030928 ,
"data" : {
"coin" : "btc" , //Валюта
"txHash" : "d0b0c82931c5c34fccb1f4acd42cadc999450921a1a3925ba6dce20ce10598f9" , //交易hash
"curTxSize" : 110 , //Объем транзакции
"unconfirmedPreTxSize" : 110 , //Неподтвержденный объем транзакции
"currency" : "btc" , //Валюта платежа
"totalFee" : 0.00009721 , //Фактически выплаченные комиссии
"theoreticalPayAmount" : 0.00003584 , //Теоретическая комиссия за оплату
"informEmail" : "test@test.com" , //Электронная почта пользователя
"status" : 3 , //Статус заказа 3: Оплачен 4: Ускоряется 5: Уже в цепочке
"createTime" : 1718253029277 //Время заказа
} ,
"success" : true
}
Список приоритетных цепочек заказов
просить
POST
/v2/sp/txPriorityChain/queryOrderPage
параметр
Copy {
"code" : 200 ,
"msg" : "Success" ,
"t" : 1718254361407 ,
"data" : {
"total" : 3 ,
"list" : [
{
"coin" : "BTC" , //Валюта
"txHash" : "d0b0c82931c5c34fccb1f4acd42cadc999450921a1a3925ba6dce20ce10598f9" , //交易hash
"curTxSize" : 110 , //Объем транзакции
"unconfirmedPreTxSize" : 110 , //Неподтвержденный объем транзакции
"currency" : "BTC" , //Валюта платежа
"totalFee" : 0.00009721 , //Фактически выплаченные комиссии
"theoreticalPayAmount" : 0.00003584 , //Теоретическая комиссия за оплату
"informEmail" : "test@test.com" , //Электронная почта пользователя
"status" : 5 , //Статус заказа 3: Оплачен 4: Ускоряется 5: Уже в цепочке
"blockHeight" : 847608 , //высота блока
"blockTime" : 1718185820 , //Время взрыва
"createTime" : 1718253029000 //Время заказа
}
]
} ,
"success" : true
}
Приоритизация деталей заказа в цепочке
параметр
POST
/v2/sp/txPriorityChain/orderDetail
параметр
Copy {
"code" : 200 ,
"msg" : "Success" ,
"t" : 1718253030928 ,
"data" : {
"coin" : "BTC" , //Валюта
"txHash" : "d0b0c82931c5c34fccb1f4acd42cadc999450921a1a3925ba6dce20ce10598f9" , //交易hash
"curTxSize" : 110 , //Объем транзакции
"unconfirmedPreTxSize" : 110 , //Неподтвержденный объем транзакции
"currency" : "BTC" , //Валюта платежа
"totalFee" : 0.00009721 , //Фактически выплаченные комиссии
"theoreticalPayAmount" : 0.00003584 , //Теоретическая комиссия за оплату
"informEmail" : "test@test.com" , //Электронная почта пользователя
"status" : 3 , //Статус заказа 3: Оплачен 4: Ускоряется 5: Уже в цепочке
"blockHeight" : 847608 , //высота блока
"blockTime" : 1718185820 , //Время взрыва
"createTime" : 1718253029277 //Время заказа
} ,
"success" : true
}
Приоритизация информации об аккаунте в сети
просить
POST
/v2/sp/txPriorityChain/accountInfo
параметр
Copy {
"code" : 200 ,
"msg" : "Success" ,
"t" : 1718254872915 ,
"data" : [
{
"currency" : "BTC" , //Валюта
"availableBalance" : 4.99882903 , //доступный баланс
"totalConsumeAmount" : 0.00117097 //Общий объем потребления
}
] ,
"success" : true
}