Bitcoin Forum
November 15, 2024, 01:45:15 AM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 »  All
  Print  
Author Topic: Давайте создадим с нуля биржу Open Source?  (Read 32283 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic. (5 posts by 1+ user deleted.)
Coin-1
Legendary
*
Offline Offline

Activity: 2632
Merit: 2304



View Profile
January 21, 2020, 02:39:41 AM
Merited by klarki (1)
 #361

Единственное отличие sqlite от "взрослых" СУБД в том, что у неё есть только встроенные функции и нет родного языка для написания новых функций. Однако, во многих случаях можно писать функции на том же языке, на котором пишется приложение, использующее sqlite. Для этого в api присутствуют функции sqlite3_create_function и sqlite3_create_window_function. При разработке на c/c++ не составляет проблем определить функцию, которой можно будет пользоваться в запросах, в sqlite для .Net присутствует аналогичная функциональность. То же верно и для модулей к иным средам и средствам разработки, однако node-sqlite в их число не входит. Если сильно надо, то можно написать расширение на c++ или использовать другой модуль sqlite, их для ноды много.

Да, верно. Эта, на первый взгляд, простая система управления базами данных тоже поддерживает создание и использование дополнительных нестандартных функций в SQL-запросах:
https://sqlite.org/c3ref/create_function.html

Исходя из представленной документации, в интерфейсе SQLite можно на языке C/C++ написать аналогичные функции buybtcR() и sellbtcR() и задать пойнтеры на них в соотвествующих параметрах xFunc, xStep и xFinal. Про другие языки программирования ничего не сказано.

Оказывается, SQLite не такой уж и Лайт. Smiley
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1359



View Profile
January 21, 2020, 03:46:17 AM
 #362

Про другие языки программирования ничего не сказано.
Это на совести разработчиков модулей. Если речь о ноде, то при использовании этого модуля, к примеру, можно писать функции на яваскрипте. Но сначала придется переписать весь зависимый код в приложении, вряд ли kzv будет этим заниматься.
dzyk
Legendary
*
Offline Offline

Activity: 1792
Merit: 1028


dzyk.ru


View Profile WWW
January 23, 2020, 12:30:27 PM
Last edit: March 10, 2020, 07:37:24 AM by dzyk
 #363

Вручную запустил 10 экземпляров приложения-тестировщика. Локов не было.
Функции написаны на дефолтном языке. Функция купли или продажи содержит всего 250 строк включая пробелы и комментарии и другие артефакты для отладки


kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 23, 2020, 02:11:38 PM
 #364

У меня обработка ордера это многоэтапная процедура.

1. Добавление ордера
Проверить токен доступа для пользователя
Проверить валидность запроса от веб интерфестайса
Проверить: не заблокированы ли коины для ордера
Проверить баланс пользователя
Если с балансом пользователя что-то не так, по привести его в соответствие с блокчейном и историей оредеров
Добавить ордер в таблицу
Еще раз проверить баланс пользователя.

2. Матчинг орера по какой-то монете
Блокирование монеты для торгов
Получение двух перекрывающихся по цене ордеров
Блокирование ордеров для отмены
Блокирование пользователей в ордерах для торгов
Обновление ордеров
Обновление балансов пользователей ордеров
Обновление балансов по комиссиям донаторов и рефералов
Обновление истории торгов
Разблокирование всех кого ранее блокировал

То есть пока исполняется один ордер по какой-то монете, все остальные ордера по этой монете и все остальные ордера двух пользователей которые участвуют в обмене - просто курят в сторонке.
Довольно топорно конечно, но у меня не так много денег чтобы кормить хакеров которые с удовольствием пользуются любыми багами в открытом коде. Лучше пусть помедленней, но с перестраховками.


OpenTrade - Open Source Cryptocurrency Exchange
Mr.Elf
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
January 23, 2020, 02:56:51 PM
 #365

Ребята мне нужна подсказка, возможно это банальный вопрос, но у меня возникла такая ошибка при запуске движка биржи:

SSL Proxy listening on port 443
events.js:180
      throw er; // Unhandled 'error' event
      ^
Error: connect ECONNREFUSED IP:40545
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1056:14)

Emitted 'error' event at:
    at ClientRequest.<anonymous> (/home/opentrade/node_modules/ws/lib/websocket.js:554:15)
    at ClientRequest.emit (events.js:203:13)
    at Socket.socketErrorListener (_http_client.js:402:9)
    at Socket.emit (events.js:203:13)
    at emitErrorNT (internal/streams/destroy.js:91:Cool
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at processTicksAndRejections (internal/process/task_queues.js:77:11) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: 'IP',
  port: 40545
}


Движок c офф. репозитория запускаю на Ubuntu 18.04 LTS, все зависимости node установились без ошибок.
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 23, 2020, 03:08:04 PM
Merited by Symmetrick (1)
 #366

У вас сервер базы данных не работает.
Следуйте инструкциям на гитхабе

Code:
cd ~/opentrade/databaseServer
[sudo] forever start main.js
cd ~/opentrade/accountsserver
git checkout master
[sudo] forever start main.js
cd  ~/opentrade/server
[sudo] forever start main.js

OpenTrade - Open Source Cryptocurrency Exchange
Mr.Elf
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
January 26, 2020, 02:40:31 PM
 #367

Новая ошибка, запускаю движок совместно с Apache2 для роботы с доменом

Apache2 настроен по этой инструкции 
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-18-04

Зависимости для движка биржи по этой:
https://github.com/UbuntuEvangelist/opentrade

Запускаю этой командой и ошибка:
     
root@opentrade:/var/www/opentrade/server# node main.js
/var/www/opentrade/node_modules/ws/lib/websocket.js:347
      ...options
      ^^^

SyntaxError: Unexpected token ...
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:533:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/var/www/opentrade/node_modules/ws/index.js:3:19)
progof
Jr. Member
*
Offline Offline

Activity: 157
Merit: 4


View Profile
January 28, 2020, 03:15:11 PM
 #368

KZV, на вашей бирже есть биткоин и вес его блокейна +\- 300 ГБ и с каждым дней вес растет. Как вы решили эту проблему? Не думаю что у вас выделенный сервер с полным блокчейном битка.

PS: можете мне ответить в лс Smiley
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 28, 2020, 04:56:05 PM
 #369

> Mr.Elf
Скорее всего у вас старая версия node.js
если бы вы все делали по моей инструкции с гитхаба, то установили бы версию 12.6.0
Проверить версию можно командой
Code:
node -v
Если версия неправильная, то введите команды
Code:
nvm install 12.6.0
nvm use 12.6.0

>progof
Для биржи я держу два выделенных сервера и один виртуальный.
Один выделенный для базы данных, другой выделенный для демонов монет, виртуальный для бэкапов.
На любой из выделенных у меня легко влезет хоть пять полных блокчейнов биткоина, но я так не делаю ибо в битке есть команда prune. С этой командой блокчейн биткоина у меня весит около 3 гигов.
У большинства нормальных форков эта команда тоже есть.
Из нормальных форков этой команды нет у догов и приходится хранить весь из сучий блокчейн целиком ))
У всяких шитков на конструкторах этой команды может не быть, но там размер блокчейна и не превысит никогда одного гигабайта...

OpenTrade - Open Source Cryptocurrency Exchange
progof
Jr. Member
*
Offline Offline

Activity: 157
Merit: 4


View Profile
January 28, 2020, 09:16:58 PM
 #370

Разобрался как добавлять фиатный валюты, но не могу понять как с ними работать и пополнять. KZV можете не много рассказать как работать с этой кухней))
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 29, 2020, 06:08:21 AM
Merited by Symmetrick (1)
 #371

Ввод вывод фиата возможен только через купоны (коды) биржи. Сделать купон можно из любой валюты в кошельке, погасить купон можно там же. Купить/продать купоны на бирже нельзя, это типа внебиржевой актив.
Я планировал добавить прямой ввод/вывод фиата через payer, там все довольно просто. Но меня что-то сдерживает внутренняя чуйка...
Пока на бирже нет фиата, биржа ничем не отличается от онлайн игры с игровыми токенами. Как только там появится фиат, биржей заинтересуются регуляторы которых будет нельзя игнорировать. То есть вслед за настоящим вводом/выводом фиата, практически сразу, по независящим от меня причинам, последует KYC, AML и все остальные "прелести". 

OpenTrade - Open Source Cryptocurrency Exchange
progof
Jr. Member
*
Offline Offline

Activity: 157
Merit: 4


View Profile
January 29, 2020, 05:04:31 PM
 #372

KZV, спасибо за объяснение и предыдущие ответы, запустил последнюю версию движка, но когда запускаю еще демон битка с обрезанным блокчейном - то биржа вылетает и сервер говорит что ему не достаточно памяти. Хотя в df -h cвободно 18 из 25 ГБ, использую Ubuntu 18.04 LTS 25 SSD 1 RAM
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 29, 2020, 06:23:13 PM
 #373

KZV, спасибо за объяснение и предыдущие ответы, запустил последнюю версию движка, но когда запускаю еще демон битка с обрезанным блокчейном - то биржа вылетает и сервер говорит что ему не достаточно памяти. Хотя в df -h cвободно 18 из 25 ГБ, использую Ubuntu 18.04 LTS 25 SSD 1 RAM

Биржа (которая на гитхабе) это три независимых сервера: сервер аккаунтов, сервер базы данных, торговый сервер.
Когда вы говорите "биржа вылетает", то не совсем ясно: вылетают все три сервера одновременно?

OpenTrade - Open Source Cryptocurrency Exchange
progof
Jr. Member
*
Offline Offline

Activity: 157
Merit: 4


View Profile
January 29, 2020, 07:07:21 PM
 #374

KZV, спасибо за объяснение и предыдущие ответы, запустил последнюю версию движка, но когда запускаю еще демон битка с обрезанным блокчейном - то биржа вылетает и сервер говорит что ему не достаточно памяти. Хотя в df -h cвободно 18 из 25 ГБ, использую Ubuntu 18.04 LTS 25 SSD 1 RAM

Биржа (которая на гитхабе) это три независимых сервера: сервер аккаунтов, сервер базы данных, торговый сервер.
Когда вы говорите "биржа вылетает", то не совсем ясно: вылетают все три сервера одновременно?


В моём случае это три сервера которые крутятся на одной машине + демон биткоина
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 29, 2020, 07:26:16 PM
 #375

В моём случае это три сервера которые крутятся на одной машине + демон биткоина

И все вместе разом вылетает?
У меня не вылетало даже на VDS с 4 гб памяти (+4 гб swap). Даже не знаю, чем тут могу помочь... Попробуйте на другом сервере?

OpenTrade - Open Source Cryptocurrency Exchange
SteepPepper
Jr. Member
*
Offline Offline

Activity: 198
Merit: 8


View Profile WWW
February 05, 2020, 07:44:50 PM
 #376

Всем привет! Скажите алгоритм торгов правильно работает в соответствии с правилами бирж с прямыми сделками?
Вот че у меня получается

1) Беру и искуственно покупаю лонги за марикоины не по лучшему предложению а по худшему для себя


2) то есть вместо цены 0.05 беру цену 0.1


3) После закрытия ордера вроде все норм: минус 100 МС,  плюс 1000 лонг


Но! Сделка закрывалась как и должна по лучшей цене, - по 0.05, то есть тот кто продавал лонги получил свои 50 марикоинов и потратил 1000 лонгов (у него точно все норм)

и 50 марикоинов испарилось!

Может так и должно быть? также на других биржах с прямыми сделками? Кто знает скажите. Прошу разъяснить. может так и должно быть типа не косячь - будь внимательным!

SteepPepper
Jr. Member
*
Offline Offline

Activity: 198
Merit: 8


View Profile WWW
February 06, 2020, 08:30:09 AM
 #377

Не это косяк образовался после рефакторинга кода

потестил эту https://trade.crypton.cf/market/LNG-MC

здесь все правильно. сделки закрываются по лучшим ордерам без исчезновения валюты. Ищите ошибку!
PS. И не говорите спасибо)
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
February 06, 2020, 02:32:13 PM
 #378

PS. И не говорите спасибо)

Ну от чего же? Дайте ваш Мэрикоин адрес, переведу 1000 МС за подробное и правильное описание бага. Баг исправил, можете проверить. На будущее: лучше подобное обсуждать через письмо в суппорт биржи.

OpenTrade - Open Source Cryptocurrency Exchange
SteepPepper
Jr. Member
*
Offline Offline

Activity: 198
Merit: 8


View Profile WWW
February 06, 2020, 09:52:03 PM
 #379

PS. И не говорите спасибо)

Ну от чего же? Дайте ваш Мэрикоин адрес, переведу 1000 МС за подробное и правильное описание бага. Баг исправил, можете проверить. На будущее: лучше подобное обсуждать через письмо в суппорт биржи.

Ура!!! MNmrwyTJKKdSssSTqGYmpDFBACDuDvtnTk
SteepPepper
Jr. Member
*
Offline Offline

Activity: 198
Merit: 8


View Profile WWW
February 08, 2020, 12:31:17 AM
 #380

Еще в Ask должна попадать лучшая цена (то есть наименьшая) из sell-ордеров (Lowest Ask)
А в Bid должна попадать лучшая цена (то есть наибольшая) из buy-ордеров (Highest Bid)
Англоязычная аудитория привыкла что Ask всегда больше Bid. У вас перепутано.
Нужно вот как здесь https://crex24.com/exchange/LTC-BTC

MC: MNmrwyTJKKdSssSTqGYmpDFBACDuDvtnTk  Tongue
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!