API майнингового пула

Основная информация

Адрес интерфейса

● Способ получения ключа шифрования.

а. Предоставьте адрес электронной почты, зарегистрированный на официальном сайте Spiderpool, свяжитесь с сотрудниками Spiderpool, чтобы активировать разрешения стороннего API, и после успешной активации войдите на официальный сайт, и вы увидите надпись «Получить ключ API» под кнопкой персональный центр.

● Онлайн-положение

а. Официальный сайт: https://api.spiderpool.com/.

Пояснение

● H, KH, MH, GH, TH, PH, EH, 1000 разница между вычислительными единицами мощности составляет 1000

Обратите внимание

●Все интерфейсы используют подписание закрытым и проверку открытым ключом.

● Унифицированный формат запроса

Копировать

{
    "dataJson": "", 
    "accessKey": "", 
    "timestamp": 1628381288000,
    "sign": ""
}

● При доступе интерфейс /v2/addUser

Копировать

{
    "dataJson": "{"userName":"test001","password":"123456"}",
    "accessKey": "D1504708600B44B499489C16CE7C32A5",
    "timestamp": 1628381288000,
    "sign": "N0n0iqKLUtssteqhbsOHGv2N7UaJh+YnPio90fciAM4hn2L82jAhafG/ynxdgFnBf2ZJ2R2C1d0uRvSNSHnEJKA8rvMx6ytQa2E4gpD8LG0kkdzYwgv9pyEFOGsS4+cUdV+nF/WJiPDRqfx8Cb0gPjBuCj+HboVx5++HOe2v+sA="
}

● Единый формат возврата

{
    "code": "",
    "msg": "",
    "data": object,
}

code="SUCCESS" Если операция успешна, остальное терпит неудачу.

● java Пример запроса верс

    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 Пример запроса версии

    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 Пример запроса версии

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Пример запроса версии

$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

параметр

  • Правильный ответ:

{
    "code": "SUCCESS"
}
  • ответ об ошибке:

{
    "code": "......", // INVALID_SUBACCOUNT / SUBACCOUNT_EXIST / IVAILD_WALLETADDRESS
    "msg": "......"
}

Изменить дополнительный аккаунт

Запросить АУТ

POST /v2/subaccount/modifyWalletAddress

параметры

  • Правильный ответ:

{
    "code": "SUCCESS"
}
  • ответ об ошибке:

{
    "code": "......", // INVALID_SUBACCOUNT / SUBACCOUNT_EXIST / IVAILD_WALLETADDRESS
    "msg": "......"
}

Шаблон наблюдателя

Запросить АУТ

POST /v2/subaccount/subAccountObserverLink

параметры

  • Правильный ответ:

{
	"code":"SUCCESS",
	"data":{
		"subaccount":"btctestchizg002",
		"sign":"v92480670d100d4c67f9e22d6ae612fd3e78aebb6e1b1fcdba994ba454ade6482",
		"coin":"btc"
	}
}
  • ответ об ошибке:

{
    "code": "......", // INVALID_SUBACCOUNT / SUBACCOUNT_EXIST / IVAILD_WALLETADDRESS
    "msg": "......"
}

Получить подробную информацию о доходах субсчета

Запросить АУТ

POST /v2/subaccount/getSubaccountProfitDetailInfo

параметры

  • Правильный ответ:

{
    "code": "SUCCESS",
    "data": {
        "total": 35,
        "dayProfitList": [
            {
                "dayDate": 1569600000000,
                "avgHashrate": "90057979829",
                "dayProfit": 0.647981779,
            },
            ......
        ]
    }
}

Получить записи о платежах по субсчетам

Запросить АУТ

POST /v2/subaccount/getSubaccountPaymentRecord

параметр

  • Правильный ответ:

{
    "code": "SUCCESS",
        "data": {
        "list": [
            {
                "paymentDate": 1564531200000, // время оплаты
                "paymentAddress": "mv8W2k7UMkqbHbfbvRXcEzaehPGvZCmkV5" // Платежный адрес
                "paymentMoney": 0.0666348000, // Сумма платежа
                "txId": "097a39595c261f141de2174d8639fd9c18122236b14f9d08c91e82aea2a87e61" // 交易Id
 
            }
        ],
            "total": 1 // Общее количество записей
    }
}

Получите подробную информацию о вычислительной мощности суб-аккаунта

Запросить АУТ

POST /v2/subaccount/getSubaccountHashrateDetailInfo

параметры

  • Правильный ответ:

{
    "code": "SUCCESS",
    "data": {
         "coin": "btc",
         "subaccount": "btc_test001",
         "startTime": 1569674700000,
         "timeInterval": 600, // Временной интервал для каждого фрагмента данных, единица измерения: секунда, BTC — 600 секунд.
         "hashrates": ["86989808092", "87758098015", "88708080889", "87167897971", ......]
    }
}

Получить информацию о доходах субсчета

Запросить АУТ

POST /v2/subaccount/getSubaccountProfitInfo

параметры

  • Правильный ответ:

{
    "code": "SUCCESS",
    "data": {
            "yesterdayProfit": 0.61505330, // прибыль за 24 часа
            "unpaidProfit": 0.57536600,    // Невыплаченный заработок
            "totalProfit": 26.026078521,   // общий доход
            "dayEstimateProfit": 0.57536600 // Сегодняшний заработок. Валюта Facebook не поддерживает эти данные
    }
}

Получите информацию о ежедневном доходе субсчета

Запросить АУТ

POST /v2/sp/subaccount/getDayProfitDetailInfo

параметры

  • Правильный ответ:

{
    "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

параметры

  • Правильный ответ:

{
    "code": 200,
    "msg": "Success",
    "t": 1717677390714,
    "data": {
        "day": 1716861600,
        "coin": "btc",     
        "userName": "test",
        "ppsDayProfit": 0.00000021294606027776  // PPSдоход
    }
}

Получить информацию о субсчете

Запросить АУТ

POST /v2/subaccount/getSubaccountInfo

параметр

  • 正確響應:

{
    "code": "SUCCESS", 
    "data": [
      {
        "coin": "btc",
        "subaccount": "test001",
        "walletAddress": "33Vxq5DN4vAXkv7swDp4zNZJWkazsDgwLq"
        "realtimeHashrate": "9789798686766", // 實時算力
        "avgHashrate1440": "88667987952", // 24小時平均算力
        "activeWorkerNum": 100,//在線礦工數
        "inactiveWorkerNum": 10//離線礦工數
      },
    ......
]
}

Получить информацию о майнере суб-аккаунта

Запросить АУТ

POST /v2/worker/getSubaccountWorkerDetailInfo

параметр

  • Правильный ответ:

{
  "code": "SUCCESS", 
  "data": [
    {
      "workerName": "test001",
      "realtimeHashrate": "2079080822",
      "avgHashrate1440": "20979879837", // Средняя вычислительная мощность за 24 часа
      "avgRejectrate1440": 0.001, // Частота отказов за 24 часа
      "status": "active", // Статус: активен онлайн; неактивен офлайн потерян потерян контакт;
      "lastShareTime": 1578653368 // Последний раз поделиться
    },
    ......
]
}

Получите подробную информацию о вычислительной мощности майнингового оборудования суб-аккаунта

просить

POST /v2/worker/getSubaccountWorkerHashrateDetailInfo

параметр

  • Правильный ответ:

{
    "code": "SUCCESS",
    "data": {
       	       "coin": "btc",
               "subaccount": "subaccount01",
                "worker": "test01",
      		"startTime": 1581742800000,
		"timeInterval": 1800,
		"hashrates": [
			"32369622321725",  // Средняя вычислительная мощность (H/s)
			"30336747489926"
		]
	}
}

Получите вчерашний доход от блока BTC и соотношение доходов от комиссий.

просить

POST /v2/subaccount/getFPPSRate

параметр

  • Правильный ответ:

{
	"code":"SUCCESS",
	"data":{
		"rate":"0.0329531088",
		"day":1711324800,
		"coin":"btc"
	}
}

Получите среднюю вычислительную мощность за весь час

просить

POST /v2/account/getSubaccountHourHashrate

параметр

  • Правильный ответ:

{
	"code":"SUCCESS",
	"data":[
		{
			"hourTime":1711353600,
			"shareAccept":11.102, // TH/s
			"userName":"test01"
		}
	]
}

Получите приоритетные внутрисетевые комиссии

просить

POST /v2/sp/txPriorityChain/getChainingFee

параметр

  • Правильный ответ:

{
	"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

параметр

  • Правильный ответ:

{
	"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

параметр

  • Правильный ответ:

{
	"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

параметр

  • Правильный ответ:

{
	"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

параметр

  • Правильный ответ:

{
	"code": 200,
	"msg": "Success",
	"t": 1718254872915,
	"data": [
		{
			"currency": "BTC", //Валюта
			"availableBalance": 4.99882903, //доступный баланс
			"totalConsumeAmount": 0.00117097 //Общий объем потребления
		}
	],
	"success": true
}

Last updated