Свои эксперименты рекомендую поводить в тестовой сети.
У биткоина есть т.н. testnet. В котором можно совершенно бесплатно получить тестовые биткоины и поиграться с ними на тех же принципах, что и в основной сети.
Я вам все же рекомендую для тестов поставить какой-то десктопный кошелек. Например Bitcoin Core или Electrum.
Скачать их можно отсюда (и только отсюда, старайтесь избегать иных ссылок)
https://bitcoin.org/ru/choose-your-walletЗапускаем с ключем
bitcoin-qt.exe -testnet (синхронизация произойдет быстро, т.к. база весит всего 29 гб) или
electrum.exe" --testnet и попадаем в параллельную реальность, где можно спокойно поиграться и отладить свои скрипты без страха потерять свои монетки.
Далее, по вопросам. Выдавать новый адрес и проверять его вполне реальная идея. Главное не рассинхронизоваться с реальной базой вашего проекта. Вариантов как все реализовать - вагон и тележка. Зависит от задачи.
Но если по вашей, так для понимания, то все можно сделать.
Т.е. выдаете и закрепляете за пользователями адреса А B C , они зачисляют монеты, каждый на свой адрес. Вы по каждому адресу смотрите приходы и синхронизируете со своей базой. Важно не привязываться к балансу бтц адреса, ибо вы же будете выводить монеты , соответственно опустошать адреса и баланс нарушится.
Есть 2 способа отправить монеты:
с использованием конкретных адресов или
дать кошельку самому решить. К , примеру, мы умно расходуем монеты.
У нас есть балансы:
A - 0.1 btc
B - 0,2 btc
C - 0,3 btc
* Мы можем отправить все монеты, например, с адреса А на другой адрес F в сумме, не превышающей баланс адреса (с учетом комиссии).
Тогда баланс адреса A станет равен 0, кошелька F будет 0,09999, а 0,00001 (примерная сумма , ибо зависит от загрузки сети и размера транзакции ) пойдет майнерам в оплату за осуществление транзакции.
* Если же мы отправим , например A -> F 0,05 btc, то баланс кошелька F будет 0,05 btc , баланс адреса A станет равен 0, но в кошельке появится еще один адрес X , с балансом 0,04999, он будет содержать сдачу от транзакции за минусом транзакции майнерам.
При желании, качестве адреса для сдачи можно задать опять кошелек А, это можно сделать в большинстве клиентов.
* Если же нам надо потратить 0,3 btc (точнее уже не более 0.29999, с учетом комиссии) , то опять-таки, мы можем отправить или все с адреса C или с адресов A+B , это или вы решаете, или кошелек решает за вас. Например первый раз он скорее всего отправит с адреса C, а потом A+B, поскольку отправка с одного адресе С дешевле, ибо занимает меньше места в блокчейне.
тогда вопрос, если у меня 10 кошельков, в сумме 1 BTC, я перевожу 0,5 BTC на биржу, и 0,5 BTC оставляю на бч.инфо, с каких адресов и как будет распределяться резерв на вывод?
Все зависит от того, как будут распределены балансы на адресах. В любом случае это будет произвольно по вышеприведенному принципу, что лучше отправить сначала средства с 1 адреса, если их достаточно, или захватить другие, если недостаточно.
В любом случае , повторюсь, не привязывайтесь к балансам кошельков!!!! И вышеперечисленные проблемы перестанут вас волновать. Привязывайтесь к поступлениям на адрес (это всегда можно проверить через блокчейн). Они навечно записываются в базу и подделать их нельзя!
Приходы всегда будут от клиентов (ну если вы сами не будете заводить деньги на свой кошелек), а выводы будут ваши.
Вот, чтобы узнать, скольок зашло от клиента, читаем список транзакций для определенного адреса (закрепленного за ним) и записываем в своб базу. При чем для каждой операции прихода будет свой уникальный tx_id , который желательно сохранять в табличку с привязкой к клиенту, чтобы можно было сделать сверку баланса в случае проблем с базой.
Опять-таки, способов сделать это вагон и тележка, все зависит от вашего окружения.