Coin-1
Legendary
Offline
Activity: 2632
Merit: 2304
|
|
January 21, 2020, 02:39:41 AM |
|
Единственное отличие 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 не такой уж и Лайт.
|
|
|
|
Balthazar
Legendary
Offline
Activity: 3108
Merit: 1359
|
|
January 21, 2020, 03:46:17 AM |
|
Про другие языки программирования ничего не сказано.
Это на совести разработчиков модулей. Если речь о ноде, то при использовании этого модуля, к примеру, можно писать функции на яваскрипте. Но сначала придется переписать весь зависимый код в приложении, вряд ли kzv будет этим заниматься.
|
|
|
|
dzyk
Legendary
Offline
Activity: 1792
Merit: 1028
dzyk.ru
|
|
January 23, 2020, 12:30:27 PM Last edit: March 10, 2020, 07:37:24 AM by dzyk |
|
Вручную запустил 10 экземпляров приложения-тестировщика. Локов не было. Функции написаны на дефолтном языке. Функция купли или продажи содержит всего 250 строк включая пробелы и комментарии и другие артефакты для отладки
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 23, 2020, 02:11:38 PM |
|
У меня обработка ордера это многоэтапная процедура. 1. Добавление ордераПроверить токен доступа для пользователя Проверить валидность запроса от веб интерфестайса Проверить: не заблокированы ли коины для ордера Проверить баланс пользователя Если с балансом пользователя что-то не так, по привести его в соответствие с блокчейном и историей оредеровДобавить ордер в таблицу Еще раз проверить баланс пользователя. 2. Матчинг орера по какой-то монете Блокирование монеты для торгов Получение двух перекрывающихся по цене ордеров Блокирование ордеров для отмены Блокирование пользователей в ордерах для торгов Обновление ордеровОбновление балансов пользователей ордеров Обновление балансов по комиссиям донаторов и рефераловОбновление истории торгов Разблокирование всех кого ранее блокировал То есть пока исполняется один ордер по какой-то монете, все остальные ордера по этой монете и все остальные ордера двух пользователей которые участвуют в обмене - просто курят в сторонке. Довольно топорно конечно, но у меня не так много денег чтобы кормить хакеров которые с удовольствием пользуются любыми багами в открытом коде. Лучше пусть помедленней, но с перестраховками.
|
|
|
|
Mr.Elf
Newbie
Offline
Activity: 3
Merit: 0
|
|
January 23, 2020, 02:56:51 PM |
|
Ребята мне нужна подсказка, возможно это банальный вопрос, но у меня возникла такая ошибка при запуске движка биржи: 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: 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
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 23, 2020, 03:08:04 PM Merited by Symmetrick (1) |
|
У вас сервер базы данных не работает. Следуйте инструкциям на гитхабе 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
|
|
|
|
Mr.Elf
Newbie
Offline
Activity: 3
Merit: 0
|
|
January 26, 2020, 02:40:31 PM |
|
Новая ошибка, запускаю движок совместно с 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
Activity: 157
Merit: 4
|
|
January 28, 2020, 03:15:11 PM |
|
KZV, на вашей бирже есть биткоин и вес его блокейна +\- 300 ГБ и с каждым дней вес растет. Как вы решили эту проблему? Не думаю что у вас выделенный сервер с полным блокчейном битка. PS: можете мне ответить в лс
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 28, 2020, 04:56:05 PM |
|
> Mr.Elf Скорее всего у вас старая версия node.js если бы вы все делали по моей инструкции с гитхаба, то установили бы версию 12.6.0 Проверить версию можно командой Если версия неправильная, то введите команды nvm install 12.6.0 nvm use 12.6.0 >progof Для биржи я держу два выделенных сервера и один виртуальный. Один выделенный для базы данных, другой выделенный для демонов монет, виртуальный для бэкапов. На любой из выделенных у меня легко влезет хоть пять полных блокчейнов биткоина, но я так не делаю ибо в битке есть команда prune. С этой командой блокчейн биткоина у меня весит около 3 гигов. У большинства нормальных форков эта команда тоже есть. Из нормальных форков этой команды нет у догов и приходится хранить весь из сучий блокчейн целиком )) У всяких шитков на конструкторах этой команды может не быть, но там размер блокчейна и не превысит никогда одного гигабайта...
|
|
|
|
progof
Jr. Member
Offline
Activity: 157
Merit: 4
|
|
January 28, 2020, 09:16:58 PM |
|
Разобрался как добавлять фиатный валюты, но не могу понять как с ними работать и пополнять. KZV можете не много рассказать как работать с этой кухней))
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 29, 2020, 06:08:21 AM Merited by Symmetrick (1) |
|
Ввод вывод фиата возможен только через купоны (коды) биржи. Сделать купон можно из любой валюты в кошельке, погасить купон можно там же. Купить/продать купоны на бирже нельзя, это типа внебиржевой актив. Я планировал добавить прямой ввод/вывод фиата через payer, там все довольно просто. Но меня что-то сдерживает внутренняя чуйка... Пока на бирже нет фиата, биржа ничем не отличается от онлайн игры с игровыми токенами. Как только там появится фиат, биржей заинтересуются регуляторы которых будет нельзя игнорировать. То есть вслед за настоящим вводом/выводом фиата, практически сразу, по независящим от меня причинам, последует KYC, AML и все остальные "прелести".
|
|
|
|
progof
Jr. Member
Offline
Activity: 157
Merit: 4
|
|
January 29, 2020, 05:04:31 PM |
|
KZV, спасибо за объяснение и предыдущие ответы, запустил последнюю версию движка, но когда запускаю еще демон битка с обрезанным блокчейном - то биржа вылетает и сервер говорит что ему не достаточно памяти. Хотя в df -h cвободно 18 из 25 ГБ, использую Ubuntu 18.04 LTS 25 SSD 1 RAM
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 29, 2020, 06:23:13 PM |
|
KZV, спасибо за объяснение и предыдущие ответы, запустил последнюю версию движка, но когда запускаю еще демон битка с обрезанным блокчейном - то биржа вылетает и сервер говорит что ему не достаточно памяти. Хотя в df -h cвободно 18 из 25 ГБ, использую Ubuntu 18.04 LTS 25 SSD 1 RAM
Биржа (которая на гитхабе) это три независимых сервера: сервер аккаунтов, сервер базы данных, торговый сервер. Когда вы говорите "биржа вылетает", то не совсем ясно: вылетают все три сервера одновременно?
|
|
|
|
progof
Jr. Member
Offline
Activity: 157
Merit: 4
|
|
January 29, 2020, 07:07:21 PM |
|
KZV, спасибо за объяснение и предыдущие ответы, запустил последнюю версию движка, но когда запускаю еще демон битка с обрезанным блокчейном - то биржа вылетает и сервер говорит что ему не достаточно памяти. Хотя в df -h cвободно 18 из 25 ГБ, использую Ubuntu 18.04 LTS 25 SSD 1 RAM
Биржа (которая на гитхабе) это три независимых сервера: сервер аккаунтов, сервер базы данных, торговый сервер. Когда вы говорите "биржа вылетает", то не совсем ясно: вылетают все три сервера одновременно? В моём случае это три сервера которые крутятся на одной машине + демон биткоина
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 29, 2020, 07:26:16 PM |
|
В моём случае это три сервера которые крутятся на одной машине + демон биткоина
И все вместе разом вылетает? У меня не вылетало даже на VDS с 4 гб памяти (+4 гб swap). Даже не знаю, чем тут могу помочь... Попробуйте на другом сервере?
|
|
|
|
SteepPepper
Jr. Member
Offline
Activity: 198
Merit: 8
|
|
February 05, 2020, 07:44:50 PM |
|
Всем привет! Скажите алгоритм торгов правильно работает в соответствии с правилами бирж с прямыми сделками? Вот че у меня получается 1) Беру и искуственно покупаю лонги за марикоины не по лучшему предложению а по худшему для себя 2) то есть вместо цены 0.05 беру цену 0.1 3) После закрытия ордера вроде все норм: минус 100 МС, плюс 1000 лонг Но! Сделка закрывалась как и должна по лучшей цене, - по 0.05, то есть тот кто продавал лонги получил свои 50 марикоинов и потратил 1000 лонгов (у него точно все норм) и 50 марикоинов испарилось! Может так и должно быть? также на других биржах с прямыми сделками? Кто знает скажите. Прошу разъяснить. может так и должно быть типа не косячь - будь внимательным!
|
|
|
|
SteepPepper
Jr. Member
Offline
Activity: 198
Merit: 8
|
|
February 06, 2020, 08:30:09 AM |
|
Не это косяк образовался после рефакторинга кода потестил эту https://trade.crypton.cf/market/LNG-MCздесь все правильно. сделки закрываются по лучшим ордерам без исчезновения валюты. Ищите ошибку! PS. И не говорите спасибо)
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
February 06, 2020, 02:32:13 PM |
|
PS. И не говорите спасибо)
Ну от чего же? Дайте ваш Мэрикоин адрес, переведу 1000 МС за подробное и правильное описание бага. Баг исправил, можете проверить. На будущее: лучше подобное обсуждать через письмо в суппорт биржи.
|
|
|
|
SteepPepper
Jr. Member
Offline
Activity: 198
Merit: 8
|
|
February 06, 2020, 09:52:03 PM |
|
PS. И не говорите спасибо)
Ну от чего же? Дайте ваш Мэрикоин адрес, переведу 1000 МС за подробное и правильное описание бага. Баг исправил, можете проверить. На будущее: лучше подобное обсуждать через письмо в суппорт биржи. Ура!!! MNmrwyTJKKdSssSTqGYmpDFBACDuDvtnTk
|
|
|
|
SteepPepper
Jr. Member
Offline
Activity: 198
Merit: 8
|
|
February 08, 2020, 12:31:17 AM |
|
Еще в Ask должна попадать лучшая цена (то есть наименьшая) из sell-ордеров (Lowest Ask) А в Bid должна попадать лучшая цена (то есть наибольшая) из buy-ордеров (Highest Bid) Англоязычная аудитория привыкла что Ask всегда больше Bid. У вас перепутано. Нужно вот как здесь https://crex24.com/exchange/LTC-BTCMC: MNmrwyTJKKdSssSTqGYmpDFBACDuDvtnTk
|
|
|
|
|