register

Біржа
Криптовалют

Криптовалютная біржа - RICHAMSTER

Біржа Richamster.com - це торгова площадка для купівлі та продажу криптовалюти і гривень. Торги здійснюються авторизованими користувачами. Основний дохід біржі - це комісія при купівлі / продажу валюти, що стягується з кожного з учасників угоди. На даний момент на біржі представлені криптовалюта: BTC, LTC, KRB, DOGE, ETH і ADA. Користувачі,які беруь участь в торгових операціях на біржі криптовалюти, основною метою ставлять отримання прибутку при купівлі / продажу валюти.

Призначення сайту. цілі:

Перед нашою компанією було поставлено завдання в обмежені терміни розробити сайт, що дозволяє користувачам поповнювати и виводити кошти з їхніх особістих гаманців, торгувати криптовалютою на біржі в режімі реального часу, спілкуватіся один з одним в чаті, а такоже мати можлівість стати акціонерамі біржі для отримання дивідентів від комісії, что стягується при кожній угодіі купівлі / продажу.

У зв'язку з тbм,що на сайті постійно повинні проводитися грошові операції, в першу чергу, нам необхідно було ретельно продуматі систему безпеки для захисту акаунтів и балансів користувачів. При цьом для нас важліво було не забувати про те,що світ криптовалюти и сама технологія блокчейн не стоять на місці, розвиваючись и вдосконалюючись щодня, тому що продукт який нами розробляється повинен бути масштабованим и легко розшірювальним.

Безпека клієнтів

Як вже було зазначено, безпека на подібних сайтах, де в обігу перебувають реальні кошти користувачів, є першим і найбільш важливим пунктом, необхідним для виконання. На торговому майданчику Richamster нашою командою ретельно була продумана ціла система по захисту клієнтів біржі як від розкрадання їх фінансових коштів, так і персональної інформації. Реалізовані кейси в сфері клієнтської безпеки:

Двухфакторная аутентифікація

На сайті підключений сервіс Google Authenticator, в роботі якого використовуються Time-based One-time Password Algorithm і HMAC-based One-time Password Algorithm. В особистому кабінеті користувач сайту може включити / вимкнути цю функцію. При активації пропонується считувати QR-код за допомогою програми від Google, встановлене на його смартфоні. Система запам'ятовує даного клієнта і при кожній наступній авторизації запитує 6-значний код, який відображається в додатку і змінюється кожні 30 секунд. Таким чином, якщо у користувача активована ця функція, то увійти в його аккаунт зможе лише та людина, яка заволодіє не тільки стандартним паролем, необхідним при залогінюваніі, але і його смартфоном / планшетом.

Доп. захист - Пін-код

Додаткову клієнтський захист також забезпечує ПІН-код. Це 5-значний номер, який відправляється один раз користувачеві на email при реєстрації на сайті. Даний додатковий пароль запитується у користувача в разі зміни реквізитів для виведення криптовалюти, а також за участю в онлайн-голосуванні по управлінню біржею. Змінити цей ПІН-код може лише адміністратор сайту за особистим зверненням клієнта. Варто відзначити, що якщо користувач ввів ПІН-код невірно більше трьох разів, то виведення коштів для нього буде недоступно.

Відстеження IP-адреса

Кожен раз при авторизації на сайті на email користувача відправляється лист, в якому повідомляється, що в його аккаунт був виконаний вхід. При цьому даний лист інформує користувача про країну і IP-адресу, звідки було виконано вхід. Подібна нотифікація дозволяє користувачеві першим дізнатися про несанкціонований вхід в його аккаунт.

Серверна безпека

Архитектура проекту

Архітектура проекту продумана з урахуванням масштабованості, так як на сайт регулярно додаються нові криптовалюти, реалізується додатковий функціонал. Варто відзначити, що сайті розміщений на декількох серверах, що дозволяє не тільки підвищити захист від злому, але і розподілити навантаження.

На сайті реалізованbq захист від CSRF- і XSS-атак, а також впроваджена фільтрація вхідних даних для захисту від SQL Injection.

Статуси користувачів і верифікація персональних даних

Кожен користувач біржі має можливість зменшити відсоток комісії, що стягується при здійсненні операцій купівлі-продажу криптовалюти, підвищивши свій статус. Однак для підтвердження кожного з статусів і отримання великих привілеїв на біржі, користувач зобов'язаний пройти верифікацію особистості: в особистому кабінеті необхідно заповнити форму, прикріпивши до неї скан-копію паспорта або іншого документа, що підтверджує особу. Дану інформацію в ручному режимі перевіряє адміністратор сайту, який може як підтвердити, так і відхилити верифікацію - зміни статусу перевірки також відображаються в особистому кабінеті користувача.

Холдирование

Холдіювання виведення коштів - встановлюється системою обмеження на виведення коштів протягом певного періоду часу. За замовчуванням, холд ставиться на 72 години в разі первинного виведення коштів, при зміні реквізитів для виведення коштів, при неправильному введенні ПІН-коду. Холдіювання може бути накладено вручну на будь-який гаманець кожного користувача адміністратором сайту.

Ограничение времени жизни токена

Час життя токена, одержуваного при авторизації користувачем, обмежений. Дане обмеження мінімізує ймовірність несанкціонованого використання чужого акаунта в разі, якщо користувач забув вийти зі свого облікового запису на чужому девайсі.

Криптовалюта. Проблеми, з якими ми зіткнулися і рішення, які були прийняті

На біржі Richamster.com стабільно функціонують вже шість криптовалют: Bitcoin (BTC), Litecoin (LTC), Karbo (KRB), Dogecoin, Etherium (ETH) і Cardano (ADA). Найбільша складність виникла, якщо Ви додаєте валюти - біткоіни. Спочатку ми планували використовувати API blockchain.com, проте зіткнулися з обмеженням - так званим Gap limit, в рамках якого один гаманець не може мати більше 20 порожніх (нульових) адрес. У зв'язку з цим було прийнято рішення відмовитися від використання стороннього сервісу і підняти нод самостійно. Теж саме ми зробили і для всіх інших криптовалют, таким чином уникнувши залежностей і обмежень, а також давши можливість повноцінно використовувати мережу блокчейн.

На даний момент для кожного користувача генерується унікальна адреса гаманців, яку вільно можна поповнити як з локального гаманця, так і з іншої біржі або обмінника. Виведення коштів з балансу можливо тільки після підтвердження адміністратором сайту на будь-яку адресу, яка буда введена користувачем.

Торги

Основна мета будь-якої біржі - це торги криптовалютою і фіатними грошима, тому найбільш серйозні алгоритми прорахунку виконані саме на цій сторінці сайту. Тут користувач має можливість переглянути статистику торгів, що відображається на графіку, а також купити потрібну валюту за найбільш вигідною ціною. А тепер трохи докладніше про кожнй блок сторінки:

Графік

Для реалізації чартів ми використовували популярний сервіс Tradingview, що надає у відкритому доступі бібліотеку на GitHub. Для найбільшої наочності було прийнято рішення використовувати графік "Японські свічки". Так, свічки на графіках представляють чотири змінні:

  1. Ціна максимуму. Знаходиться на найвищій точці тіні свічки. Показує, максимальний хід ціни за конкретний період
  2. Ціна відкриття. Відмітка, яка фіксує ціну на початок періоду відкриття свічки. Є початком «тіла свічки».
  3. Ціна закриття. Відмітка, яка фіксує ціну на кінець періоду закриття свічки. Є закінченням «тіла свічки».
  4. Ціна мінімуму. Знаходиться на найнижчій точці тіні свічки. Показує, мінімальний хід ціни за конкретний період.

На даний момент одна японська свічка показує коливання курсу за 24 години. Якщо ціна на початок торгів більша за ціну завершення, то тіло свічки має жовтий колір, якщо менше, то синій.

Під графіком японських свічок розміщений графік з індикаторами обсягу торгів (volume) - це загальна кількість одиниць криптовалюти яка торгується,і яка перейшла від одного користувача до іншого на підставі виконаних ордерів за певний період часу. Ось Ох - показує періоди часу; Оу - кількість одиниць базової криптовалюти. Даний графік обсягів торгів ми також реалізували з використанням сервісу Tradingview. Однак ці дефолтні налаштування графіка користувач з легкістю може змінити під себе. Так, Tradingview дає можливість змінювати часовий інтервал, колір, шкали індикаторів і багато іншого, таким чином отримавши необхідну інформацію про коливання курсу, що цікавить валютні пари, оцінити тренди і тенденції ринку.

Чат

Для миттєвого обміну повідомленнями між користувачами ми реалізували онлайн-чат. Таким чином, відвідувачі сайту отримали можливість легко і швидко дізнатися один у одного актуальну інформацію. Важливо відзначити, що чат працює за допомогою WebSockets, що дозволяє писати, читати і відправляти повідомлення в режимі реального часу без перезавантаження сторінки.

Ордера купівлі, продажу

Під графіком торгів розміщені блоки для виставлення ордерів, а також біржові склянки, в яких відображаються ордера купівлі-продажу, які очікують зустрічного пропозиції. Для зручності використання даного блоку ми реалізували автоматичний підрахунок даних в полях форми. Так, користувач може лише клікнути по вже виставленому ордеру - і в його форму покупки-продажу підставляються актуальні значення кількості, ціни та загальної суми, яку необхідно буде заплатити з урахуванням комісії біржі.

Історія угод

Для перегляду статистики закритих ордерів був реалізований блок з історією торгів, а для відстеження власних ордерів - блок "Мої ордера", де користувач може не тільки бачити власні ставки і і легко скасувати їх у разі потреби.

Особовий кабінет

В особистому кабінеті користувача відображається не тільки персональна інформація, але і історія поповнення-виведення криптовалюти і гривень, історія транзакцій і особистих торгів. Тут же користувач може поповнити баланс будь-якої валюти, а також запросити виведення коштів.
На прохання замовника в особистому кабінеті нами також був реалізований персональний чат, де за допомогою зручного пошуку можна написати повідомлення будь-якому користувачеві сайту особисто.

Онлайн-голосування з управління біржею
і поліпшення якості роботи торгового майданчика

Крім стандартного функціоналу, доступного в особистому кабінеті будь-якої біржі, нами також була додана можливість влаштовувати голосування за важливі рішення щодо поліпшення роботи біржі. Так, авторизований користувач має хоча б 1 кубик (акцію) біржі, може винести пропозицію на голосування, а також взяти участь у вже відкритих суперечках.

Аукціон

На сторінці аукціону користувачі можуть стати реальними акціонерами біржі. Тут постійно розігруються кубики (тобто акції) біржі. Власник хоча б 1 кубика може розраховувати на виплату дивідендів (його частка відображається в особистому кабінеті), але і продати за криптовалюту наявні акції. При цьому виставлення лотів і визначення переможця відбувається динамічно з використанням WebSockets.

Пользователи сайта

Залежно від кількості акцій біржі користувачі сайту можуть мати один з п'яти статусів: трейдер, спостерігач, радник, інвестор і директор. Чим вище статус, тим більше привілеїв у користувача. Наприклад, у директора стягується найменша комісія при закритті угоди.

Технології та методи, які були використані на проекті:

WebSockets

WebSocket - це по суті протокол передачі даних, де обмін інформацією між клієнтом і сервером відбувається безперервно. Тобто такий зв'язок дозволяє одночасно і передавати, і отримувати дані. Цей протокол також називають client-server handshaking. Сокети працюють по так званих каналах, по яких передаються дані. На Richamster реалізовано шість таких каналів:

  • аукціон
  • торги (історія)
  • біржові склянки
  • персональний чат
  • чат адміністраторів (директорів / інвесторів)
  • основний чат

REST API

Взаємодія між клієнтом і сервером виконано за допомогою REST API - архітектурного стилю, тобто "договору" між фронтенда і бекенд про те, як спілкуватися один з одним. Зазвичай на сайтах раніше всі прорахунки і операції проводили на сервері, тобто бекенд генерував весь html і віддавав його клієнту, в разі ж з REST API, бекенд побудований таким чином, що від сервера потрібні тільки дані, а сама отрисовка html відбувається на клієнті .

Report-builder

Для відстеження поведінки користувачів, а також перегляду статистики торгів, аукціонів і транзакцій нашою командою була заставлена бібліотека Report-builder. В адмін-панелі сайту досить вибрати цікавлять змінні, і система створить онлайн-таблицю з можливістю її скачування в форматах xsl або csv.

Публічне API

Командою наших розробників було складено публічне API, використовуючи яке інші сайти можуть отримувати дані про торги на Richamster, зареєструватися і авторизуватися, а також робити ставки, знімати ордера і багато іншого.

Інформація щодо проекту

Проект:Richamster
Тип проекту: Криптовалютна біржа
Тип робіт:веб-сервіс "під ключ"
Технології:JavaScript / Vue.js, Python / Django
Команда:8 осіб
Дивитися сайт

Дякуємо за ваш інтерес!

Ми з вами зв'яжемося найближчим часом