Задача
Собрать криптообменник и начать косить бабло зарабатывать. Сразу хочу оговориться, что задача стояла еще на хайпе крипты, в декабре 2017 года. То, что творится с рынком сейчас, немного печалит.
Как и все, мы искали легкие пути и, пролистав половину рунета, поняли, что нет легких способов создать криптообменник. Ну как, они есть, но нужно выложить от 5000$ за готовое решение, которое при этом страшнее монстров из DOOM, либо нанять команду китайских программистов и делать все с нуля. С китайцами мы не договорились… Тo есть, возможно, и договорились, но мы не поняли ответа.
Тогда мы поискали (и нашли) спецов в родном регионе. Из плюсов — понимают по-русски, из минусов — не знал, что русские специалисты так дорого стоят. Горд за отечественный рынок труда.
Еще, на первых же этапах разработки мы определили второстепенную задачу — создать свое API, чтобы раздать его бесплатно, принести криптокультуру в массы и почистить карму перед китайцами. Вот о нем и поговорим.
Меньше шуток больше дела
I Этап
Для получения курса криптовалют делаем запрос “Get rate” из
API Quickex.
Описание метода можно найти в документации к API
Код JS будет примерно такой
var doc = document,
getCourseButton = doc.querySelector(".js-getCourse");
getCourseButton.addEventListener("click", function () {
// объявляем переменные
var selectSend = doc.querySelector(".js-select-send"),
selectGet = doc.querySelector(".js-select-get"),
selectSendValue = selectSend.value,//валюта обмена
selectGetValue = selectGet.value;//валюта получения
//Настройки запроса
var settings = {
"url": "https://api.quickex.io/rate/" + selectSendValue + "_" + selectGetValue,
"method": "GET"
};
//отправляем запрос на API
$.ajax(settings).done(function (response) {
var rate = response.rate;//Получаем результат
var sendField = doc.querySelector(".js-send"),//поле обмена1
getField = doc.querySelector(".js-get");//поле обмена2
getField.value = (sendField.value * rate * 10 / 10).toFixed(10);// результат
});
});
Привязываем к фронту
<div class="create__wrapper">
<div class="create__block">
<label class="create__label" for="get">Send</label>
<div class="create__field">
<input class="js-send" id="send" type="number" name="send" value="0.0001">
</div>
<select name="select-send" class="js-select-send">
<option value="eth">ETH</option>
<option value="btc">BTC</option>
<option value="ltc">LTC</option>
</select>
</div>
<div class="create__block">
<label class="create__label" for="get">Get</label>
<div class="create__field">
<input class="js-get" id="get" type="number" name="get">
</div>
<select name="select-send" class="js-select-get">
<option value="eth">ETH</option>
<option value="btc" selected>BTC</option>
<option value="ltc">LTC</option>
</select>
</div>
<button class="create__submit">Create</button>
</div>
Оцениваем результат, понимаем что нужен дизайнер, тихо всхлипываем. Но продолжаем работать.
Этап II
Для инициации обмена берем из API метод CREATE FIXED TRANSACTION
Если брать конкретный пример, а не полностью собирать обменник то пример кода:
var data = JSON.stringify({
"amount": 0.03101415, //кол-во валюты для обмена
"withdrawal": "12v4rjzyXnRF7dwNb4ukxTpYrugBTy6nct", //адрес куда отправить деньги
"pair": "eth_btc", //пара обмена
"returnAddress": "0xd68CcC74C32BAB4c4c6F289b3b1754f46a8311FE" //адрес если обмен не удался
});
var create = new XMLHttpRequest();//создаем обмен
create.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
create.open("POST", "https://api.quickex.io/sendamount");
create.send(data);
III Этап
На этом этапе в ответ придет адрес на который quickex будет ждать перевода денег (ключ “deposit” ).
И для получения ответа об успешном переводе делаем запрос EXCHANGE REQUEST INFO
где в качестве параметра передаем deposit полученный в ответе запроса CREATE FIXED TRANSACTION
function getInfo() {
var txStat = new XMLHttpRequest();
txStat.open("GET", "https://api.quickex.io/txStat/0x90BBB223fE52a56449e2E0dcAB568123E31185E6"); //содержит адрес куда нужно отправить деньги
txStat.onload = function () {
console.log(this.responseText);
};
txStat.send();
}
setInterval(getInfo, 5000);//мониторим получение денег для quickex
В принципе на этом этапе при успешном пополнении произойдет обмен. Финиш
В заключение
Запуская API мы не сделали крипто-обменники доступными каждому, но существенно удешевили разработку. Конечно, останется самое тяжелое – раскрутить обменник, но об этом мы расскажем в следующей статье.
Ждем Ваших комментариев и с радостью поможем в интеграции нашего решения за плюс к карме.
комментарии (14)