Bitcoin Forum
May 09, 2024, 03:31:43 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   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 32164 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.)
diakas
Jr. Member
*
Offline Offline

Activity: 245
Merit: 1


View Profile WWW
November 22, 2018, 07:37:49 AM
 #241

Тогда мне не понятно как вообще возможен фейковые ордера на ложный баланс... Но в любом случае запрет на вывод крупных сумм или всего баланса это самое простое решение или запрос на вывод крупняка только после подтверждения администрацией это самое очевидное решение
1715268703
Hero Member
*
Offline Offline

Posts: 1715268703

View Profile Personal Message (Offline)

Ignore
1715268703
Reply with quote  #2

1715268703
Report to moderator
Whoever mines the block which ends up containing your transaction will get its fee.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715268703
Hero Member
*
Offline Offline

Posts: 1715268703

View Profile Personal Message (Offline)

Ignore
1715268703
Reply with quote  #2

1715268703
Report to moderator
1715268703
Hero Member
*
Offline Offline

Posts: 1715268703

View Profile Personal Message (Offline)

Ignore
1715268703
Reply with quote  #2

1715268703
Report to moderator
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 22, 2018, 07:41:37 AM
 #242

Тогда мне не понятно как вообще возможен фейковые ордера на ложный баланс... Но в любом случае запрет на вывод крупных сумм или всего баланса это самое простое решение или запрос на вывод крупняка только после подтверждения администрацией это самое очевидное решение
Невозможны фейковые ордера и невозможно вывести фейковую сумму.
Альтмаркетс как-то через фронтэнд взломали скорее всего.

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

Activity: 245
Merit: 1


View Profile WWW
November 22, 2018, 05:01:31 PM
Last edit: November 22, 2018, 05:20:19 PM by diakas
 #243

Сейчас тестировал биржу и переключал главные торговые пары - и в балансе вышло что balance (b) был намного больше чем Deposit (D), причем CHECK не лечил эту проблему, удалил базу sqlite.db, заново зарегистрировался, тогда чек сработал, но, странно история осталась и пользователи которые были раньше в разделе check balance с ненулевыми депозитами и историей остались? Хотя зарегистрирован 1 пользователь Online: 1  (Registered: 1) - где можно эти данные удалить?
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 22, 2018, 05:07:09 PM
 #244

Сейчас тестировал биржу и переключал главные торговые пары - и в балансе вышло что balance (b) был намного больше чем Deposit (D), причем CHECK не лечил эту проблему, удалил базу sqlite.db, заново зарегистрировался, тогда чек сработал, но, странно история осталась и пользователи которые были раньше в разделе check balance с ненулевыми депозитами и историей остались - где можно эти данные удалить?

Историю депозитов можно удалить только удалив wallet.dat. Но если в валлете есть коины то есть нюансы.

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

Activity: 245
Merit: 1


View Profile WWW
November 22, 2018, 05:15:41 PM
 #245

Историю депозитов можно удалить только удалив wallet.dat. Но если в валлете есть коины то есть нюансы.

Интересное решение, очень удобно при переносе на другой сервер.

Ну а как решать возможность с тем что что balance (b) был намного больше чем Deposit (D) - может вообще это запретить в коде и останавливать биржу или уравнивать балансы...? где это можно сделать? в каком файле?
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 22, 2018, 05:18:49 PM
 #246

Историю депозитов можно удалить только удалив wallet.dat. Но если в валлете есть коины то есть нюансы.

Интересное решение, очень удобно при переносе на другой сервер.

Ну а как решать возможность с тем что что balance (b) был намного больше чем Deposit (D) - может вообще это запретить в коде и останавливать биржу?

Депозит это сколько завели на биржу через блокчейн.
Баланс = депозит + сколько еще купили на бирже.
Баланс вполне законно может быть больше депозита.

OpenTrade - Open Source Cryptocurrency Exchange
Destrodream
Member
**
Offline Offline

Activity: 70
Merit: 12


View Profile
November 22, 2018, 08:11:09 PM
 #247

Мне думается сверять реальный баланс нужно не только перед выводом но и перед постановкой ордера тогда не будет возможности делать фейковые ордера на огромные суммы.  
Ещё простейшая защита - запрет выводить больше например 0.1 битка в день. И т.п. ограничения

Перед постановкой ордера тоже сверяется. И сразу после ордера тоже, на всякий случай )

Баланс, как я понимаю у вас хранится в БД. То есть, при постановке ордера вы достаете число, списываете с него сумму и кладете ордер в "стакан" или на исполнение со ссылкой на юзера которому ордер принадлежит, чтобы ему вернуть деньги или то что он купил? Могу ли я быстрыми запросами наполнить стакан ордерами на сумму большую, чем у меня есть на балансе? Понятие "заморозки" средств на балансе есть?

Что случится, если я одновременно (очень быстро) отправлю запрос на вывод и запрос на создание ордера? (если вы проверяете баланс до и после постановки ордера в стакан, такой финт должен неминуемо привести к одной-двум ошибкам).

Запросы в базу обрабатываются синхронно или асинхронно?
Если запросы обрабатываются синхронно, то что будет с базой если запросы генерят 200 пользователей (например ботов - ктото спрашивает свой баланс в цикле, кто-то ставит и отменяет мелкие ордера, а кто-то злой пытается вывести и ставить ордера одновременно)? Однопоточный sqlite Должен лежать не вставая.

Если запросы обрабатываются асинхронно, то что обеспечивает синхронизацию? Сериализуются ли запросы?


Quote
Депозит это сколько завели на биржу через блокчейн.
Баланс = депозит + сколько еще купили на бирже.
Баланс вполне законно может быть больше депозита.

Логика подсказывает что баланс может запросто быть произвольно больше, меньше или равен депозиту. Депозит, например, может быть равен нулю, но баланс сколь угодно велик (я купил койн на бирже, и не заводил). И наоборот - я депозитил и все слил. Т.е. по факту депозит связан с балансом через историю транзакций и никак иначе.


progof
Jr. Member
*
Offline Offline

Activity: 157
Merit: 4


View Profile
November 23, 2018, 12:32:53 PM
 #248

При запуске биржи ошибка связна с почтой, по логам видно что сообщение отправилось но на почту он не пришло и в спаме его тоже нету. Также пробывал два варианта enabled и disabled в /opentrade/server/constants.js "emailVerificationEnabled".

1. Движок запускаю на VPS
2. Почту использую gmail
3. Домен добавил в Postmaster Tools

Когда ввожу в браузере *ip-vps*:40443 ошибка ERR_CONNECTION_REFUSED

Code:
OpenTrade started!
send gmail.com>
send gmail.com>.
recv gmail.com>550-5.7.1 [*ip*       1] Our system has detected an unusual rate of
recv gmail.com>550-5.7.1 unsolicited mail originating from your IP address. To protect our
recv gmail.com>550-5.7.1 users from spam, mail sent from your IP address has been blocked.
recv gmail.com>550-5.7.1 Please visit
recv gmail.com>550-5.7.1  https://support.google.com/mail/?p=UnsolicitedIPError to review our
recv gmail.com>550 5.7.1 Bulk Email Senders Guidelines. 78si7652899uae.99 - gsmtp
SMTP responds error code 550
Error with your mail server: SMTP code:550 msg:550-5.7.1 [*ip*       1] Our system has detected an unusual rate of
550-5.7.1 unsolicited mail originating from your IP address. To protect our
550-5.7.1 users from spam, mail sent from your IP address has been blocked.
550-5.7.1 Please visit
550-5.7.1  https://support.google.com/mail/?p=UnsolicitedIPError to review our
550 5.7.1 Bulk Email Senders Guidelines. 78si7652899uae.99 - gsmtp

Возможно кто-то ранее сталкивался с этой проблемой и может подсказать где я допустил ошибку или что-то не дописал в коде
reddish111
Sr. Member
****
Offline Offline

Activity: 1932
Merit: 349



View Profile
November 23, 2018, 12:57:24 PM
 #249

А как дела с api? Работает?

kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 25, 2018, 11:56:29 AM
 #250


Баланс, как я понимаю у вас хранится в БД. То есть, при постановке ордера вы достаете число, списываете с него сумму и кладете ордер в "стакан" или на исполнение со ссылкой на юзера которому ордер принадлежит, чтобы ему вернуть деньги или то что он купил? Могу ли я быстрыми запросами наполнить стакан ордерами на сумму большую, чем у меня есть на балансе? Понятие "заморозки" средств на балансе есть?


У меня сейчас эта проблема решается блокировками. Новый ордер выставить (и отменить) нельзя пока не закончится добавление предыдущего ордера.

Что случится, если я одновременно (очень быстро) отправлю запрос на вывод и запрос на создание ордера? (если вы проверяете баланс до и после постановки ордера в стакан, такой финт должен неминуемо привести к одной-двум ошибкам).

Когда пользователь делает вывод, он тоже блокируется для ордеров. Когда вывод подтвердится и база обновится, блок убирается.

Запросы в базу обрабатываются синхронно или асинхронно?

Если запросы обрабатываются асинхронно, то что обеспечивает синхронизацию? Сериализуются ли запросы?

Яваскрипт умеет только асинхронно. Синхронизация обеспечивается блокировками.


Quote from: progof
ри запуске биржи ошибка связна с почтой

Судя по логам, ип адрес вашего провайдера забанен гуглом. Либо поменяйте провайдера, либо одно из двух...


Quote from: reddish111
А как дела с api? Работает?

С утра работало.

OpenTrade - Open Source Cryptocurrency Exchange
Destrodream
Member
**
Offline Offline

Activity: 70
Merit: 12


View Profile
November 25, 2018, 08:15:59 PM
 #251


Яваскрипт умеет только асинхронно. Синхронизация обеспечивается блокировками.


Т.е. как я понял фактически у юзера есть два балланса - доступный и заблокированный? Это вполне логичное и разумное решение.

Но я спрашивал в том числе про блокирование базы. Насколько мне известно в лайт нельзя стучаться с одного потока асинхронно, а с учетом того, что JS однопоточный по своей природе - это должно вызывать массу проблем. Фактически каждый запрос к базе обязан блокировать всю базу до завершения транзакции, например:

Убавить доступный баланс, прибавить заблокированный баланс. (создание ордера) - это две разные операции, вклиниться в которые запрос другого юзера не имеет права (иначе исполнится только половина запроса)

или

Убавить заблокированный баланс, прибавить доступный для одного юзера и сделать то же самого для другого. (исполнение ордера) - это уже 4 операции, опять таки - попадание асинхронного запроса другого юзера между ними приведет к непоправимой потере информации в середине цепочки.

Как эти проблемы решаются?

kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 26, 2018, 04:05:21 AM
 #252


Убавить доступный баланс, прибавить заблокированный баланс. (создание ордера) - это две разные операции, вклиниться в которые запрос другого юзера не имеет права (иначе исполнится только половина запроса)

Вот как создается ордер:
1. Проверка: залочен ли пользователь для вывода?
2. Если не залочен - блок пользователя для создания/удаления ордеров
3. Сверить баланс пользователя с историей торговли и историей ввода/вывода
4. Если все нормально, обновить таблицу балансов
5. Если баланс обновился нормально, обновить таблицу ордеров.
6. Снять блок с пользователы для постановки/отмены ордеров
7. Еще раз сверить баланс пользователя с историей торговли и историей ввода/вывода

https://github.com/3s3s/opentrade/blob/master/server/modules/users/orders.js#L305


Убавить заблокированный баланс, прибавить доступный для одного юзера и сделать то же самого для другого. (исполнение ордера) - это уже 4 операции, опять таки - попадание асинхронного запроса другого юзера между ними приведет к непоправимой потере информации в середине цепочки.

Как эти проблемы решаются?


Вот как проходит исполнение ордера
1. Выбрать два пересекающихся ордера из стаканов
2. Заблокировать эти два ордера от изменений из других мест.
3. Проверить: заблокированы ли авторы ордеров для постановки/отмены ордеров.
4. Если не заблокированы, то заблокировать. Если хоть один заблокирован, то выйти из процедуры.
5. Обновить таблицу ордеров
6. Если таблица ордеров обновилась успешно, то разблокировать пользователей для постановки/отмены ордеров
7. Разблокировать ордера (если от них что-то осталось) для изменений
8. Обновить балансы пользователей и обновить таблицу истории.

В версии которая на гитхабе порядок немного другой
https://github.com/3s3s/opentrade/blob/master/server/modules/users/orders.js#L441

Там пункт 8 стоит перед пунктами 6 и 7:
1. Выбрать два пересекающихся ордера из стаканов
2. Заблокировать эти два ордера от изменений из других мест.
3. Проверить: заблокированы ли авторы ордеров для постановки/отмены ордеров.
4. Если не заблокированы, то заблокировать. Если хоть один заблокирован, то выйти из процедуры.
5. Обновить таблицу ордеров
6. Обновить балансы пользователей и обновить таблицу истории.
7. Если таблица ордеров обновилась успешно, то разблокировать пользователей для постановки/отмены ордеров
8. Разблокировать ордера (если от них что-то осталось) для изменений

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





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

Activity: 245
Merit: 1


View Profile WWW
November 26, 2018, 11:41:52 AM
Last edit: November 26, 2018, 05:07:53 PM by diakas
 #253

Можно как-то синхронизировать  версию на гитхаб с вашей доработанной - для безопасности.  Cool

И если не сложно подсказать - в каких файлах нужно поправить код чтоб основной парой стоял биткойн и разрешались ордера вплоть до 8 знака после запятой 0.00000001 ?

Также странно - биткоина нет, пока главная монета другая, а в кошельке в столбце: Currency - в ссылках все пары к биткоину Huh

Последнее - в chart.html откуда берутся данные для текущего курса
Code:
<ol id='id_MC_info' class="breadcrumb"></ol>
Huh в каком файле это править?
Destrodream
Member
**
Offline Offline

Activity: 70
Merit: 12


View Profile
November 26, 2018, 06:34:15 PM
 #254

kzv - спасибо за обстоятельный ответ. Я, очевидно, не правильно понял изначально что имелось ввиду под заблокированным. Заблокированный юзер/баланс это, выходит, флаг в базе?
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 27, 2018, 04:02:19 AM
 #255

Можно как-то синхронизировать  версию на гитхаб с вашей доработанной - для безопасности.  Cool

И если не сложно подсказать - в каких файлах нужно поправить код чтоб основной парой стоял биткойн и разрешались ордера вплоть до 8 знака после запятой 0.00000001 ?

Также странно - биткоина нет, пока главная монета другая, а в кошельке в столбце: Currency - в ссылках все пары к биткоину Huh

Последнее - в chart.html откуда берутся данные для текущего курса
Code:
<ol id='id_MC_info' class="breadcrumb"></ol>
Huh в каком файле это править?

Пока никаких особых обновлений безопасности нет. Как что-то интересное найду - сделаю коммит на гитхаб.

По остальным вопросам - поищите на гитхабе, там почти на все это есть ответы.

Quote from: diakas
kzv - спасибо за обстоятельный ответ. Я, очевидно, не правильно понял изначально что имелось ввиду под заблокированным. Заблокированный юзер/баланс это, выходит, флаг в базе?

Нет, хранить состояние блокировок в базе это как-то сильно расточительно. Эти флаги хранятся как глобальные переменные в программе.

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

Activity: 245
Merit: 1


View Profile WWW
November 27, 2018, 07:31:07 AM
 #256

Вот на вашем обменнике в кошельке в столбце "Currency" при кликании слева по монете https://trade.multicoins.org/market/BTC-MC торговля идет в mBTC - Как это настраивается? причем с этого форума вообще бред выходит - ссылка перенаправляется на https://trade.multicoins.org/market/MC-MC

А если кликать на LTC и DASH хоть ссылки https://trade.multicoins.org/market/BTC-LTC и https://trade.multicoins.org/market/BTC-DASH перекидывает на пару с MC ? это глюк или нет и где это настраивается? в каком файле?

Может выложить уже актуальную версию чтобы меньше вопросов возникало?
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
November 27, 2018, 07:42:12 AM
 #257

Вот на вашем обменнике в кошельке в столбце "Currency" при кликании слева по монете https://trade.multicoins.org/market/BTC-MC торговля идет в mBTC - Как это настраивается? причем с этого форума вообще бред выходит - ссылка перенаправляется на https://trade.multicoins.org/market/MC-MC

А если кликать на LTC и DASH хоть ссылки https://trade.multicoins.org/market/BTC-LTC и https://trade.multicoins.org/market/BTC-DASH перекидывает на пару с MC ? это глюк или нет и где это настраивается? в каком файле?

Может выложить уже актуальную версию чтобы меньше вопросов возникало?

живая версия на гитхаб больше выкладываться не будет.
Слишком много было потребителей, которые форкают, пользуются апдейтами, но даже не удосуживаются Мэрикоин себе залистить. Мне и инвесторам это надоело.

OpenTrade - Open Source Cryptocurrency Exchange
zahardeina123
Newbie
*
Offline Offline

Activity: 50
Merit: 0


View Profile
November 27, 2018, 07:46:32 AM
 #258

Всем привет!
Периодически в форуме вижу темы, где авторы хотят найти opensource биржу или создать собственную биржу, но постянно тема глохнет.
Причин много, главные:
1. Open Source биржи крайне сложно найти, а те которые есть крайне сложно настроить потому что их разрабы забросили проект.
2. Нет доверия к непонятно кем и непонятно когда написанным биржам.
3. Есть ощущение, что написать качественную биржу с нуля это крайне сложно почти невозможно...

Из своего богатого опыта общения с техподдержкой самых разных бирж могу ответственно заявить: если в техподдержке работают те же люди, которые писали биржу - значит биржу писали школьники младших классов!

Я сформировал в себе устойчивое желание написать собственную централизованную биржу (децентрализованную уже давно написал, но похоже народу это пока не нужно).

В этой теме я не собираюсь уговаривать присоединиться к разработке, не буду объявлять ICO и делать прочие глуппости. Но если кто-то выразит желание присоединиться - милости прошу...
В этой теме будет описываться процесс разработки. Кто не зарегистрирован на гитхабе, смогут писать сюда предложения по доработкам и багрепорты. Но вообще, лучше предложения писать прямо на гитхабе.

Итак с чего я думаю начать это выбор инструментов:
1. Основной язык разработки: Node.js
2. База данных sqlite
3. Интерфейс фронтэнда на базе bootstrap 4

Этапы разработки (наброски техзадания)
1. Модуль регистрации пользователей Сделано
2. Чат  Сделано
3. Мультивалютный биржевой кошелек. Сделано
4. Выставление и отмена ордеров Сделано
5. Исполнение перекрывающихся ордеров Сделано
6. АПИ биржи

Тут будет живая версия биржи https://trade.multicoins.org/
Тут исходники https://github.com/3s3s/opentrade

Вопросы добавления новых монет лучше обсуждать на другом форуме.
Вот тут правила добавления https://forum.marycoin.org/showthread.php?48-%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%B0-%D0%BD%D0%B0-OpenTrade


Топик модерируемый, флуд будет удаляться. Просьба писать только по делу.

Доброе утро,нужно что бы кто то помог установить данную биржу на наш сервере, и допилил API  что бы можно было выйти на coinmarketcap , оплата в BTC либо фиат . Все кто в состоянии ето сделать пишите https://t.me/zaharDeina . так же нужна будет постоянная техническая  потдержка .
diakas
Jr. Member
*
Offline Offline

Activity: 245
Merit: 1


View Profile WWW
November 27, 2018, 10:53:54 AM
 #259

Quote
Используемый во многих веб-приложениях модуль Node.js под названием event-stream был скомпрометирован, сообщает CCN.
...
Согласно жалобе на GitHub, разработчик right9ctrl внедрил в соответствующую библиотеку вредоносный код. Последний способен извлекать приватные ключи из приложений, где задействованы модули event-stream и copay-dash.
https://forklog.com/bitkoin-koshelek-copay-nahoditsya-v-zone-riska-iz-za-uyazvimosti-node-js/
обратите внимание!
Coin-1
Legendary
*
Offline Offline

Activity: 2450
Merit: 2190



View Profile
November 30, 2018, 01:29:30 PM
 #260

живая версия на гитхаб больше выкладываться не будет.
Слишком много было потребителей, которые форкают, пользуются апдейтами, но даже не удосуживаются Мэрикоин себе залистить. Мне и инвесторам это надоело.

Жаль, что этот проект больше не будет развиваться как open-source биржа. В любом случае, была проделана отличная работа. Действительно, зачем потребители убирали койн разработчика софта, это была своего рода реклама этой монеты.
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!