Author

Topic: Собираем обмеменник на АПИ (Read 336 times)

copper member
Activity: 27
Merit: 2
December 05, 2020, 06:46:08 AM
#4
понимаем что нужен дизайнер, тихо всхлипываем. Но продолжаем работать


Видимо дизайнера нашли, но  оказалось этого  не достаточно или что-то пошло не так  Grin

похвально выкладывать результаты труда,  да вот только если большая часть обменок поделится своими разработками - какое раздолье будет для желающих это дело поломать?! Хотя можно конечно и конкурс устроить - типа уведи у нашего обменника 10BTC и мы подарим тебе еще 10 BTC за описание найденных уязвимостей?!

 Cheesy

да что-то в этом есть!?
hero member
Activity: 491
Merit: 1259
Nihil impunitum
Это живой пример пользы работы  с АПИ, предоставляемых (и к тому же на шару) биржами. Хорошо бы это тему развить и не только автору. Зы, добавил в ✅=Лучшие инструкции по крипте на форуме=✅
sr. member
Activity: 1932
Merit: 349
Классное API мне нравится  Grin теперь я легко и просто сделаю обменник для монет которые буду делать на эфире  Cool
full member
Activity: 361
Merit: 101
Задача
Собрать криптообменник и начать косить бабло зарабатывать. Сразу хочу оговориться, что задача стояла еще на хайпе крипты, в декабре 2017 года. То, что творится с рынком сейчас, немного печалит.

Как и все, мы искали легкие пути и, пролистав половину рунета, поняли, что нет легких способов создать криптообменник. Ну как, они есть, но нужно выложить от 5000$ за готовое решение, которое при этом страшнее монстров из DOOM, либо нанять команду китайских программистов и делать все с нуля. С китайцами мы не договорились… Тo есть, возможно, и договорились, но мы не поняли ответа.

Тогда мы поискали (и нашли) спецов в родном регионе. Из плюсов — понимают по-русски, из минусов — не знал, что русские специалисты так дорого стоят. Горд за отечественный рынок труда.

Еще, на первых же этапах разработки мы определили второстепенную задачу — создать свое API, чтобы раздать его бесплатно, принести криптокультуру в массы и почистить карму перед китайцами. Вот о нем и расскажу.

Меньше шуток больше дела

I Этап
Сразу оговорюсь код чисто примерный и для описания возможностей, сильно не ругайте.
Для получения курса криптовалют делаем запрос “Get rate” из API Quickex.
Описание метода можно найти в документации к API https://quickex.io/docs/api
Code:
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"
    };
$.ajax(settings).done(function (response) {
        var rate = response.rate;//Получаем результат
        var sendField = doc.querySelector(".js-send"),//сумма отправляемой валюты
            getField = doc.querySelector(".js-get");//поле обмена2 - сумма получаемой валюты

        getField.value = (sendField.value * rate * 10 / 10).toFixed(10);// результат какая то магическая магия
    });

В этом скрипте можно было бы просто привязаться к id элементов (это уже на вкус и цвет), а настройки типа хоста - вынести в конфигурационный файл.


Привязываем к фронту

Code:

        

            
            

                
            

            
        

        

            
            

                
            

            
        

        
    




Оцениваем результат, понимаем что нужен дизайнер, тихо всхлипываем. Но продолжаем работать


Этап II

Для инициации обмена берем из API метод CREATE FIXED TRANSACTION

Code:
var data = JSON.stringify({
   "amount": 0.03101415, //кол-во валюты для обмена -  я бы сделал акцент, что можно передавать как сумму депозита (depositAmount), так и сумму вывода (amount). В данном случае указана сумма вывода (то, что получит клиент). И да, название параметра неудачное “amount”, но так было...
   "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"); //хост в конфиг

Этап III

И для получения ответа об успешном переводе делаем запрос EXCHANGE REQUEST INFO
где в качестве параметра передаем deposit полученный в ответе запроса CREATE FIXED TRANSACTION - это пинги, по которым можно получить текущую информацию по обмену, ничто не мешает также мониторить блокчейн самому клиенту. В качестве параметра здесь depositAddress, который мы сгенерили для данного клиента

Code:
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);//олучаем информацию по обмену каждые 5 секунд

В принципе на этом этапе при успешном пополнении произойдет обмен. Финиш - после того, как мы увидим депозит от клиента и дожидаемся определённого количества подтверждений - мы переводим деньги клиенту в той валюте, которую захотел получить клиент

 Запуская API мы не сделали крипто-обменники доступными каждому, но существенно удешевили разработку.

Jump to: