анатомия crypto exchange'ров
От: mogadanez Чехия  
Дата: 05.09.18 16:21
Оценка:
есть нужда разобраться как работает сабж
— нужно сделать не полноценный exchange'р а просто ввод/вывод
— хочется сделать на низком уровне, без всяких посреднических API



Обнаружил что категорически мало информации по теме

что нарыл на данный момент


что непонятно
— куда вообще смотреть/читать
— нужно использовать Hierarchical Deterministic Wallets и/или просто генерировать новую пару ключей для каждого пользователя?
— как понимают что пользователь таки перевел коины? сканят все транзакции и ждут нужную?
— что со всяким альткоинами? работают теже подходы?
— нужно иметь запущенные демоны биткоина/ethereuma? те биржы поддерживающие тысячи коинов — имеют минимум по демону на каждый?
— как вообще устроены биржы? все хранится в одном "кошельке" или шардится как либо?
— ну и общие рекомендации по архитектуре
Re: Crypto exchange
От: Qbit86 Кипр
Дата: 05.09.18 18:58
Оценка: 10 (1)
Здравствуйте, mogadanez, Вы писали:

M> — нужно использовать Hierarchical Deterministic Wallets и/или просто генерировать новую пару ключей для каждого пользователя?


Можно для каждого пользователя генерировать Hierarchical Deterministic Wallet.

M> — как понимают что пользователь таки перевел коины? сканят все транзакции и ждут нужную?


Опросить состояние конкретного адреса/аккаунта.

M> — нужно иметь запущенные демоны биткоина/ethereuma?


Можно использовать сторонние ноды с публичным API типа Infura для Ethereum, через которую работает MetaMask.

M> — как вообще устроены биржы? все хранится в одном "кошельке" или шардится как либо?


Вероятно, всё хранится в индивидуальных кошельках пользователей (доступ к которым у биржи, не у пользователей).
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Crypto exchange
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.09.18 19:11
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, mogadanez, Вы писали:


M>> — как понимают что пользователь таки перевел коины? сканят все транзакции и ждут нужную?


Q>Опросить состояние конкретного адреса/аккаунта.

И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново? Это тяжело, даже если пользователей пара тысяч.
Проще мониторить новые блоки и искать в них упоминания адресов из клиентской базы. Даже если будет один блок в минуту, сложность совершенно другая выйдет.
Re: анатомия crypto exchange'ров
От: _ilya_  
Дата: 05.09.18 19:12
Оценка: +1 -2
Здравствуйте, mogadanez, Вы писали:

M>есть нужда разобраться как работает сабж


Будь проще, смотри на это как на МММ — вся крипта это финансовая пирамида и обязательно рухнет в 0 — это вопрос только когда? Если тебе предъяв не будет, делай на хоть чем. Целые биржи погибают с сотнями миллионов и это норм.
Иначе тебе придется разбираться в коде всех проектов и искать баги, если не найдешь и работодатели могут с тебя спросить если вдруг через заложенные дыры уведут фантики, то я бы такую работу никогда не брал.
Если еще и нет базового IT образования и знаний криптографии, то станешь в случае проблем крайним — найдется IT спец который расследуя установит в чем была дыра и кто в этом виноват — типа ТЫ. Вообщем не лезь — убьет! Если брать чужой код недовалют, то только на каждую недовалюту свой физический комп а не виртуалка! Иначе Meltdown / Spectre и прочие 0 day уведут все с чужим кодом не только эту недовалюту а все ибо заранее заложенные уязвимости. Вообщем надо быть готовым что и вообще все уведут... Если не готов — это не твое.
Отредактировано 05.09.2018 19:27 _ilya_ . Предыдущая версия . Еще …
Отредактировано 05.09.2018 19:26 _ilya_ . Предыдущая версия .
Отредактировано 05.09.2018 19:21 _ilya_ . Предыдущая версия .
Отредактировано 05.09.2018 19:20 _ilya_ . Предыдущая версия .
Re[3]: Crypto exchange
От: Qbit86 Кипр
Дата: 05.09.18 19:15
Оценка:
Здравствуйте, samius, Вы писали:

S>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново?


Это ещё зачем? Для какого сценария это нужно?
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: анатомия crypto exchange'ров
От: mogadanez Чехия  
Дата: 05.09.18 19:31
Оценка:
Здравствуйте, _ilya_, Вы писали:

__>Здравствуйте, mogadanez, Вы писали:


M>>есть нужда разобраться как работает сабж


__>Будь проще, смотри на это как на МММ — вся крипта это финансовая пирамида и обязательно рухнет в 0 — это вопрос только когда? Если тебе предъяв не будет, делай на хоть чем. Целые биржи погибают с сотнями миллионов и это норм.

__>Иначе тебе придется разбираться в коде всех проектов и искать баги, если не найдешь и работодатели могут с тебя спросить если вдруг через заложенные дыры уведут фантики, то я бы такую работу никогда не брал.
__>Если еще и нет базового IT образования и знаний криптографии, то станешь в случае проблем крайним — найдется IT спец который расследуя установит в чем была дыра и кто в этом виноват — типа ТЫ. Вообщем не лезь — убьет! Если брать чужой код недовалют, то только на каждую недовалюту свой физический комп а не виртуалка! Иначе Meltdown / Spectre и прочие 0 day уведут все с чужим кодом не только эту недовалюту а все ибо заранее заложенные уязвимости. Вообщем надо быть готовым что и вообще все уведут... Если не готов — это не твое.


мне все равно на риски, и все равно на судьбу крипт и других валют
здесь и сейчас нужно сделать конкретную вещь
Re[4]: Crypto exchange
От: mogadanez Чехия  
Дата: 05.09.18 19:32
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, samius, Вы писали:


S>>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново?


Q>Это ещё зачем? Для какого сценария это нужно?


если в пике депозит делает 1000 человек?
Re[2]: Crypto exchange
От: mogadanez Чехия  
Дата: 05.09.18 19:39
Оценка:
Здравствуйте, Qbit86, Вы писали:


Q>Можно использовать сторонние ноды с публичным API типа Infura для Ethereum, через которую работает MetaMask.


там наверное rate-limits какие то?
Re[2]: Crypto exchange
От: mogadanez Чехия  
Дата: 05.09.18 19:43
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Можно использовать сторонние ноды с публичным API типа Infura для Ethereum, через которую работает MetaMask.


вообще для кругозора хочется совсем low-level разобраться
Re[5]: Crypto exchange
От: Qbit86 Кипр
Дата: 05.09.18 20:04
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>если в пике депозит делает 1000 человек?


Думаешь, Инфура не выдержит, что ли? Как-то же МетаМаск справляется?

Вот пользователь заходит на твой сайт и хочет положить на свой счёт на твоей бирже 0.01 эфир. Ты ему говоришь: переведи эфир на такой Ethereum-адрес (соответствующий аккаунту этого пользователя в твоей базе). Он через МетаМаск (и web3.js на клиенте) делает перевод; на клиент приходит коллбэк, предусмотренный в API web3.js, когда транзакция смайнена, чтоб можно было уведомить пользователя красивой анимацией. Всё.

M>как понимают что пользователь таки перевел коины?


Запросить у ноды баланс Ethereum-аккаунта конкретного пользователя, для которого нужно выяснить баланс — в тот момент, когда это нужно. Вот заходит пользователь в свой личный кабинет, ты, зная Ethereum-аккаунт пользователя (хранится в твоей базе) запрашиваешь его баланс у ноды (у своей или Инфуры), и выводишь пользователю циферки.
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: Crypto exchange
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.09.18 20:46
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, samius, Вы писали:


S>>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново?


Q>Это ещё зачем? Для какого сценария это нужно?


В вопросе ТС обозначен вариант, при котором каждому пользователю генерируется адрес. Отсюда можно предположить что кол-во адресов соразмерно клиентской базе. Если предположить еще и возможность для каждого клиента в любой момент времени пополнять свой баланс, то получается что опрашивать нужно адреса из всей базы с регулярностью, которая бы не вызывала шквала обращений в ТП сервиса по поводу "где мои деньги?".

Можно, конечно, выдавать клиенту временный адрес на одну транзакцию и мониторить изменения на нем. Но тогда теряется смысл самого вопроса.
Re[6]: Crypto exchange
От: mogadanez Чехия  
Дата: 05.09.18 22:28
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, mogadanez, Вы писали:


M>>если в пике депозит делает 1000 человек?


Q>Думаешь, Инфура не выдержит, что ли? Как-то же МетаМаск справляется?



я не знаю, это вопрос был. у инфуры есть пометка Need a custom solution? Contact us. черт их знает — может метамаск с ними договорился
например про etherscan точно читал что есть ratelimmit
Re[6]: Crypto exchange
От: mogadanez Чехия  
Дата: 05.09.18 22:31
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, mogadanez, Вы писали:


M>>если в пике депозит делает 1000 человек?


Q>Думаешь, Инфура не выдержит, что ли? Как-то же МетаМаск справляется?


вот вроде пишут что нету https://github.com/INFURA/infura/issues/58

We currently do not.


хотя currently немного напрягает
Re: анатомия crypto exchange'ров
От: jahr  
Дата: 06.09.18 07:06
Оценка: 15 (1)
Здравствуйте, mogadanez, Вы писали:


M>основная библиотека для биткоина — bitcore

Не уверен, их много разных, полный нод, поверх которого работает bitcore, Вам вряд ли нужен (но с использованием чужого узла через Insight API какое-нибудь — наверное будет то, что нужно). Сам бы в такой ситуации я начал смотреть на Electrum, или что-то в этом роде.

M> — куда вообще смотреть/читать

Можно задать такие же вопросы, как и здесь, например на этом сайте — https://bitcoin.stackexchange.com/, думаю, там лучше ответят.)

M> — нужно использовать Hierarchical Deterministic Wallets и/или просто генерировать новую пару ключей для каждого пользователя?

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

M> — как понимают что пользователь таки перевел коины? сканят все транзакции и ждут нужную?

При использовании electrum, например, будете автоматом получать оповещения о всех пользовательских транзакциях.

M> — что со всяким альткоинами? работают теже подходы?

По-разному, монет много.) Но для большинства — что-то похожее (тот же electrum и copay/insight api есть для многих монет)

M> — нужно иметь запущенные демоны биткоина/ethereuma? те биржы поддерживающие тысячи коинов — имеют минимум по демону на каждый?

Свой демон на самом деле нужен очень редко.

M> — как вообще устроены биржы? все хранится в одном "кошельке" или шардится как либо?

В двух кошельках — холодном и горячем.)

M> — ну и общие рекомендации по архитектуре

Не до конца понятно, что именно нужно написать в результате — биржу или обменник или магазин.)

Исходники бирж можно посмотреть начиная, например, со ссылок отсюда — https://bitcoin.stackexchange.com/questions/17252/is-there-an-opensource-crypto-currency-exchanges-engine
Отредактировано 06.09.2018 7:06 jahr . Предыдущая версия .
Re[3]: Crypto exchange
От: marcopolo Россия  
Дата: 06.09.18 16:41
Оценка:
Здравствуйте, samius, Вы писали:


Q>>Опросить состояние конкретного адреса/аккаунта.

S>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново? Это тяжело, даже если пользователей пара тысяч.

Зачем всей? Всех оффлайновых юзеров вычеркиваем. Которые не заходят на страницу баланса — вычеркиваем.
Re[4]: Crypto exchange
От: samius Япония http://sams-tricks.blogspot.com
Дата: 06.09.18 18:54
Оценка:
Здравствуйте, marcopolo, Вы писали:

M>Здравствуйте, samius, Вы писали:



Q>>>Опросить состояние конкретного адреса/аккаунта.

S>>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново? Это тяжело, даже если пользователей пара тысяч.

M>Зачем всей? Всех оффлайновых юзеров вычеркиваем. Которые не заходят на страницу баланса — вычеркиваем.


Правильно. Захотят получить письмо о подтверждении перевода на почту — пусть заходят и рефреш давят.
Re[5]: Crypto exchange
От: Qbit86 Кипр
Дата: 06.09.18 20:54
Оценка:
Здравствуйте, samius, Вы писали:

S>Правильно. Захотят получить письмо о подтверждении перевода на почту — пусть заходят и рефреш давят.


Вообще-то те полторы биржи, с которыми я имел дело, так и реализованы. Это блокчейн, тут нет «момента», когда что-то произошло; время и история относительны.
Глаза у меня добрые, но рубашка — смирительная!
Re[6]: Crypto exchange
От: samius Япония http://sams-tricks.blogspot.com
Дата: 06.09.18 21:55
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, samius, Вы писали:


S>>Правильно. Захотят получить письмо о подтверждении перевода на почту — пусть заходят и рефреш давят.


Q>Вообще-то те полторы биржи, с которыми я имел дело, так и реализованы. Это блокчейн, тут нет «момента», когда что-то произошло; время и история относительны.


Время — это курс. Если я на биржу завожу монету что бы купить другую монету по некоторым соображениям, то время имеет значение. Какой смысл переводить на биржу и не торговать? Холдить можно и на своем кошельке.

Deposit Success
Hello,
Your Binance's account has recharged 0.0178272 BTC.
If this activity is not your own operation, please contact us immediately. https://support.binance.com/hc/en-us/
Binance Team
Automated message.please do not reply

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.