Может ли кошелек Segwit генерировать и использовать не-Segwit-адреса?
Я использую Bitcore от Bitpay для создания кошельков и создания новых адресов для пользователей моей платформы. Я также использую Bitcore-wallet-client для подписи транзакций.
У моих пользователей сейчас есть устаревшие кошельки. Я намерен перевести их кошельки на родной Segwit, но им также потребуются устаревшие адреса, чтобы они могли получать монеты из любого места. (верно?)
Можно ли иметь только один кошелек на пользователя, генерирующий оба типа адресов, или мне придется управлять двумя кошельками на пользователя?
И если мне придется управлять двумя кошельками для каждого пользователя, utxos из одного кошелька, очевидно, не будут доступны для другого. Каков наилучший способ справиться с их «расщепленным балансом»? Должен ли я ориентировать пользователей на отправку всех своих монет на адрес bc1 нового кошелька Segwit? Но затем, всякий раз, когда они получают средства на свои старые адреса, им приходится снова переводить на адрес bc1, чтобы совершать транзакции Segwit. Это не имеет смысла - или нет? Что мне не хватает?
Я не знаком с кошельками, генерируемыми Bitcore от BitPay, но нет общей проблемы, препятствующей генерированию кошельком адресов различных выходных форматов. Если кошельки BitPay могут делать только одно или другое, это будет особенностью локальной реализации.
Хотя можно поддерживать отдельные кошельки для каждого пользователя, вести учет в сети довольно дорого.
Более распространенный способ работы сервисов, принимающих на себя средства пользователей, — поддерживать только один депозитный кошелек. Затем вы создадите новый адрес в этом «универсальном кошельке» для каждого пользовательского депозита. Поскольку адреса уникальны, вы можете использовать адрес, чтобы указать, какого клиента учитывать в вашей внутренней бухгалтерии.
Однако с операционной стороны вы можете объединить несколько выводов в одну транзакцию и даже перевести часть средств на холодный кошелек, чтобы повысить свою безопасность.
Может ли один кошелек генерировать (и использовать) как SegWit, так и не-SegWit-адреса?
Да. Пример: в Bitcoin Core вы можете запустить getnewaddress с address_type
аргументом
Я намерен перевести их кошельки на родной Segwit, но им также потребуются устаревшие адреса, чтобы они могли получать монеты из любого места.
Большинство приложений, веб-сайтов, служб и т. д. теперь поддерживают собственные адреса segwit, однако можно использовать адреса p2sh-segwit, если адреса bech32 не поддерживаются.
Даниэль Португалия
Марч