СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Криптообменник в 3 шага своими руками в черновиках Из песочницы

Задача


Собрать криптообменник и начать косить бабло зарабатывать. Сразу хочу оговориться, что задача стояла еще на хайпе крипты, в декабре 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 мы не сделали крипто-обменники доступными каждому, но существенно удешевили разработку. Конечно, останется самое тяжелое – раскрутить обменник, но об этом мы расскажем в следующей статье.

Ждем Ваших комментариев и с радостью поможем в интеграции нашего решения за плюс к карме.
–6
~1800

комментарии (14)

0
vydacha ,  
Аймак с виндой
Отличное фото со стока)
0
edogs ,  
На вкладках на фото хабрастораж, поисковая строка с аналогами хабра и т.д., вряд ли со стока.

p.s.: Зашли на сайт обменника — на главной предлагают eth на btc поменять, курс в принципе норм, но по переходу к обмену 400 ошибка.
–2
IGS_Group ,   * (был изменён)
Мы хотели, чтобы кто-нибудь написал, что это холтуро.
0
0xf0a00 ,  
Слишком много ошибок в слове «халтура».
0
koluka ,  
Ммм, а в каком правовом поле вы находитесь и что ждет ваших соучастников партнеров по бизнесу в стране Россия?
0
alex_ant ,  
В России же крипта не регулируется. В мае 2020 хотят зарегулировать.
0
george3 ,  
Киньте ссылку плз на тот обменник где за 5000$ и не стоит того, а также на тот который стоит (как надо, какой нужен).
0
IGS_Group ,   * (был изменён)
Думаю не правильно говорить о коллегах по бизнесу что они зря воспользовались например этим предложением.
А какой лучше это уже решать пользователям.
0
george3 ,   * (был изменён)
можно в личку, если что. обещаю подумать если будет информация к размышлению. в принципе интерес сделать есть. только конретно по вашему сайту не виден ввод-вывод в фиат — это было б интересно. остальное решается и так.
0
boblenin ,  
Почему-то прочиталось как «криптообманник».
0
ne_kotin ,  
Тогда мы поискали (и нашли) спецов в родном регионе. Из плюсов — понимают по-русски, из минусов — не знал, что русские специалисты так дорого стоят

Очень удивительно, но программисты тоже кушать хотят. Те, что разбираются в безопасности, высокой нагрузке и блокчейне одновременно — стоят дороже, чем те, «наклепать формочку в жиквери» просто потому что могут больше.
0
Sabubu ,  
А что, уже разрешили пиарить свои проекты без помещения в «Я пиарюсь» и покупки корпоративного блога?
0
furtaev ,  
Недавно как раз-таки разрешили.
0
SbWereWolf ,  
Бесплатно то есть даром КриптоОбменник — github.com/SbWereWolf/remittance.git
Работает 60% от необходимого для MVP в качестве proof of concept
Если кому то интересно доделать остальные 40% (работы на неделю / полторы ), то с удовольствием помогу консультациями и поделюсь ТЗ.