Інформація щодо проекту
Проект: | Richamster |
Тип проекту: | Криптовалютна біржа |
Тип робіт: | веб-сервіс "під ключ" |
Технології: | JavaScript / Vue.js, Python / Django |
Команда: | 8 осіб |
Біржа 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 при реєстрації на сайті. Даний додатковий пароль запитується у користувача в разі зміни реквізитів для виведення криптовалюти, а також за участю в онлайн-голосуванні по управлінню біржею. Змінити цей ПІН-код може лише адміністратор сайту за особистим зверненням клієнта. Варто відзначити, що якщо користувач ввів ПІН-код невірно більше трьох разів, то виведення коштів для нього буде недоступно.
Кожен раз при авторизації на сайті на 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. Для найбільшої наочності було прийнято рішення використовувати графік "Японські свічки". Так, свічки на графіках представляють чотири змінні:
На даний момент одна японська свічка показує коливання курсу за 24 години. Якщо ціна на початок торгів більша за ціну завершення, то тіло свічки має жовтий колір, якщо менше, то синій.
Під графіком японських свічок розміщений графік з індикаторами обсягу торгів (volume) - це загальна кількість одиниць криптовалюти яка торгується,і яка перейшла від одного користувача до іншого на підставі виконаних ордерів за певний період часу. Ось Ох - показує періоди часу; Оу - кількість одиниць базової криптовалюти. Даний графік обсягів торгів ми також реалізували з використанням сервісу Tradingview. Однак ці дефолтні налаштування графіка користувач з легкістю може змінити під себе. Так, Tradingview дає можливість змінювати часовий інтервал, колір, шкали індикаторів і багато іншого, таким чином отримавши необхідну інформацію про коливання курсу, що цікавить валютні пари, оцінити тренди і тенденції ринку.
Для миттєвого обміну повідомленнями між користувачами ми реалізували онлайн-чат. Таким чином, відвідувачі сайту отримали можливість легко і швидко дізнатися один у одного актуальну інформацію. Важливо відзначити, що чат працює за допомогою WebSockets, що дозволяє писати, читати і відправляти повідомлення в режимі реального часу без перезавантаження сторінки.
Під графіком торгів розміщені блоки для виставлення ордерів, а також біржові склянки, в яких відображаються ордера купівлі-продажу, які очікують зустрічного пропозиції. Для зручності використання даного блоку ми реалізували автоматичний підрахунок даних в полях форми. Так, користувач може лише клікнути по вже виставленому ордеру - і в його форму покупки-продажу підставляються актуальні значення кількості, ціни та загальної суми, яку необхідно буде заплатити з урахуванням комісії біржі.
Для перегляду статистики закритих ордерів був реалізований блок з історією торгів, а для відстеження власних ордерів - блок "Мої ордера", де користувач може не тільки бачити власні ставки і і легко скасувати їх у разі потреби.
В особистому кабінеті користувача відображається не тільки персональна інформація, але і історія поповнення-виведення криптовалюти і гривень, історія транзакцій і особистих торгів. Тут же користувач може поповнити баланс будь-якої валюти, а також запросити виведення коштів.
На прохання замовника в особистому кабінеті нами також був реалізований персональний чат, де за допомогою зручного пошуку можна написати повідомлення будь-якому користувачеві сайту особисто.
Крім стандартного функціоналу, доступного в особистому кабінеті будь-якої біржі, нами також була додана можливість влаштовувати голосування за важливі рішення щодо поліпшення роботи біржі. Так, авторизований користувач має хоча б 1 кубик (акцію) біржі, може винести пропозицію на голосування, а також взяти участь у вже відкритих суперечках.
На сторінці аукціону користувачі можуть стати реальними акціонерами біржі. Тут постійно розігруються кубики (тобто акції) біржі. Власник хоча б 1 кубика може розраховувати на виплату дивідендів (його частка відображається в особистому кабінеті), але і продати за криптовалюту наявні акції. При цьому виставлення лотів і визначення переможця відбувається динамічно з використанням WebSockets.
Залежно від кількості акцій біржі користувачі сайту можуть мати один з п'яти статусів: трейдер, спостерігач, радник, інвестор і директор. Чим вище статус, тим більше привілеїв у користувача. Наприклад, у директора стягується найменша комісія при закритті угоди.
WebSocket - це по суті протокол передачі даних, де обмін інформацією між клієнтом і сервером відбувається безперервно. Тобто такий зв'язок дозволяє одночасно і передавати, і отримувати дані. Цей протокол також називають client-server handshaking. Сокети працюють по так званих каналах, по яких передаються дані. На Richamster реалізовано шість таких каналів:
Взаємодія між клієнтом і сервером виконано за допомогою REST API - архітектурного стилю, тобто "договору" між фронтенда і бекенд про те, як спілкуватися один з одним. Зазвичай на сайтах раніше всі прорахунки і операції проводили на сервері, тобто бекенд генерував весь html і віддавав його клієнту, в разі ж з REST API, бекенд побудований таким чином, що від сервера потрібні тільки дані, а сама отрисовка html відбувається на клієнті .
Для відстеження поведінки користувачів, а також перегляду статистики торгів, аукціонів і транзакцій нашою командою була заставлена бібліотека Report-builder. В адмін-панелі сайту досить вибрати цікавлять змінні, і система створить онлайн-таблицю з можливістю її скачування в форматах xsl або csv.
Командою наших розробників було складено публічне API, використовуючи яке інші сайти можуть отримувати дані про торги на Richamster, зареєструватися і авторизуватися, а також робити ставки, знімати ордера і багато іншого.
Проект: | Richamster |
Тип проекту: | Криптовалютна біржа |
Тип робіт: | веб-сервіс "під ключ" |
Технології: | JavaScript / Vue.js, Python / Django |
Команда: | 8 осіб |
Розкажіть про свої бізнес-цілі і наш досвід допоможе їх досягти!
Фіксуємо вартість
до старту робіт
Гарантуємо результат
закріплюючи його в договорі
Команда під кожний проєкт
на чолі з досвідченим проєкт-менеджером
Ми завжди на зв'язку
Розкажіть про свої завдання і ми обговоримо їх рішення в зручний для вас час.
Дякуємо за ваш інтерес!
Ми з вами зв'яжемося найближчим часом