есть нужда разобраться как работает сабж
— нужно сделать не полноценный exchange'р а просто ввод/вывод
— хочется сделать на низком уровне, без всяких посреднических API
Обнаружил что категорически мало информации по теме
что нарыл на данный момент
основная библиотека для биткоина — bitcore
основная библиотека для eth — web3
что непонятно
— куда вообще смотреть/читать
— нужно использовать Hierarchical Deterministic Wallets и/или просто генерировать новую пару ключей для каждого пользователя?
— как понимают что пользователь таки перевел коины? сканят все транзакции и ждут нужную?
— что со всяким альткоинами? работают теже подходы?
— нужно иметь запущенные демоны биткоина/ethereuma? те биржы поддерживающие тысячи коинов — имеют минимум по демону на каждый?
— как вообще устроены биржы? все хранится в одном "кошельке" или шардится как либо?
— ну и общие рекомендации по архитектуре
Здравствуйте, mogadanez, Вы писали:
M> — нужно использовать Hierarchical Deterministic Wallets и/или просто генерировать новую пару ключей для каждого пользователя?
Можно для каждого пользователя генерировать Hierarchical Deterministic Wallet.
M> — как понимают что пользователь таки перевел коины? сканят все транзакции и ждут нужную?
Опросить состояние конкретного адреса/аккаунта.
M> — нужно иметь запущенные демоны биткоина/ethereuma?
Можно использовать сторонние ноды с публичным API типа Infura для Ethereum, через которую работает MetaMask.
M> — как вообще устроены биржы? все хранится в одном "кошельке" или шардится как либо?
Вероятно, всё хранится в индивидуальных кошельках пользователей (доступ к которым у биржи, не у пользователей).
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, mogadanez, Вы писали:
M>> — как понимают что пользователь таки перевел коины? сканят все транзакции и ждут нужную?
Q>Опросить состояние конкретного адреса/аккаунта.
И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново? Это тяжело, даже если пользователей пара тысяч.
Проще мониторить новые блоки и искать в них упоминания адресов из клиентской базы. Даже если будет один блок в минуту, сложность совершенно другая выйдет.
Здравствуйте, mogadanez, Вы писали:
M>есть нужда разобраться как работает сабж
Будь проще, смотри на это как на МММ — вся крипта это финансовая пирамида и обязательно рухнет в 0 — это вопрос только когда? Если тебе предъяв не будет, делай на хоть чем. Целые биржи погибают с сотнями миллионов и это норм.
Иначе тебе придется разбираться в коде всех проектов и искать баги, если не найдешь и работодатели могут с тебя спросить если вдруг через заложенные дыры уведут фантики, то я бы такую работу никогда не брал.
Если еще и нет базового IT образования и знаний криптографии, то станешь в случае проблем крайним — найдется IT спец который расследуя установит в чем была дыра и кто в этом виноват — типа ТЫ. Вообщем не лезь — убьет! Если брать чужой код недовалют, то только на каждую недовалюту свой физический комп а не виртуалка! Иначе Meltdown / Spectre и прочие 0 day уведут все с чужим кодом не только эту недовалюту а все ибо заранее заложенные уязвимости. Вообщем надо быть готовым что и вообще все уведут... Если не готов — это не твое.
Здравствуйте, _ilya_, Вы писали:
__>Здравствуйте, mogadanez, Вы писали:
M>>есть нужда разобраться как работает сабж
__>Будь проще, смотри на это как на МММ — вся крипта это финансовая пирамида и обязательно рухнет в 0 — это вопрос только когда? Если тебе предъяв не будет, делай на хоть чем. Целые биржи погибают с сотнями миллионов и это норм. __>Иначе тебе придется разбираться в коде всех проектов и искать баги, если не найдешь и работодатели могут с тебя спросить если вдруг через заложенные дыры уведут фантики, то я бы такую работу никогда не брал. __>Если еще и нет базового IT образования и знаний криптографии, то станешь в случае проблем крайним — найдется IT спец который расследуя установит в чем была дыра и кто в этом виноват — типа ТЫ. Вообщем не лезь — убьет! Если брать чужой код недовалют, то только на каждую недовалюту свой физический комп а не виртуалка! Иначе Meltdown / Spectre и прочие 0 day уведут все с чужим кодом не только эту недовалюту а все ибо заранее заложенные уязвимости. Вообщем надо быть готовым что и вообще все уведут... Если не готов — это не твое.
мне все равно на риски, и все равно на судьбу крипт и других валют
здесь и сейчас нужно сделать конкретную вещь
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, samius, Вы писали:
S>>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново?
Q>Это ещё зачем? Для какого сценария это нужно?
Здравствуйте, mogadanez, Вы писали:
M>если в пике депозит делает 1000 человек?
Думаешь, Инфура не выдержит, что ли? Как-то же МетаМаск справляется?
Вот пользователь заходит на твой сайт и хочет положить на свой счёт на твоей бирже 0.01 эфир. Ты ему говоришь: переведи эфир на такой Ethereum-адрес (соответствующий аккаунту этого пользователя в твоей базе). Он через МетаМаск (и web3.js на клиенте) делает перевод; на клиент приходит коллбэк, предусмотренный в API web3.js, когда транзакция смайнена, чтоб можно было уведомить пользователя красивой анимацией. Всё.
M>как понимают что пользователь таки перевел коины?
Запросить у ноды баланс Ethereum-аккаунта конкретного пользователя, для которого нужно выяснить баланс — в тот момент, когда это нужно. Вот заходит пользователь в свой личный кабинет, ты, зная Ethereum-аккаунт пользователя (хранится в твоей базе) запрашиваешь его баланс у ноды (у своей или Инфуры), и выводишь пользователю циферки.
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, samius, Вы писали:
S>>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново?
Q>Это ещё зачем? Для какого сценария это нужно?
В вопросе ТС обозначен вариант, при котором каждому пользователю генерируется адрес. Отсюда можно предположить что кол-во адресов соразмерно клиентской базе. Если предположить еще и возможность для каждого клиента в любой момент времени пополнять свой баланс, то получается что опрашивать нужно адреса из всей базы с регулярностью, которая бы не вызывала шквала обращений в ТП сервиса по поводу "где мои деньги?".
Можно, конечно, выдавать клиенту временный адрес на одну транзакцию и мониторить изменения на нем. Но тогда теряется смысл самого вопроса.
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, mogadanez, Вы писали:
M>>если в пике депозит делает 1000 человек?
Q>Думаешь, Инфура не выдержит, что ли? Как-то же МетаМаск справляется?
я не знаю, это вопрос был. у инфуры есть пометка Need a custom solution? Contact us. черт их знает — может метамаск с ними договорился
например про etherscan точно читал что есть ratelimmit
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, mogadanez, Вы писали:
M>>если в пике депозит делает 1000 человек?
Q>Думаешь, Инфура не выдержит, что ли? Как-то же МетаМаск справляется?
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> — ну и общие рекомендации по архитектуре
Не до конца понятно, что именно нужно написать в результате — биржу или обменник или магазин.)
Q>>Опросить состояние конкретного адреса/аккаунта. S>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново? Это тяжело, даже если пользователей пара тысяч.
Зачем всей? Всех оффлайновых юзеров вычеркиваем. Которые не заходят на страницу баланса — вычеркиваем.
Здравствуйте, marcopolo, Вы писали:
M>Здравствуйте, samius, Вы писали:
Q>>>Опросить состояние конкретного адреса/аккаунта. S>>И за минуты 2-3 опрашивать адреса всей клиентской базы и потом заново? Это тяжело, даже если пользователей пара тысяч.
M>Зачем всей? Всех оффлайновых юзеров вычеркиваем. Которые не заходят на страницу баланса — вычеркиваем.
Правильно. Захотят получить письмо о подтверждении перевода на почту — пусть заходят и рефреш давят.
Здравствуйте, samius, Вы писали:
S>Правильно. Захотят получить письмо о подтверждении перевода на почту — пусть заходят и рефреш давят.
Вообще-то те полторы биржи, с которыми я имел дело, так и реализованы. Это блокчейн, тут нет «момента», когда что-то произошло; время и история относительны.
Здравствуйте, 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