¿Puede una sola billetera generar (y usar) direcciones SegWit y no SegWit?

¿Puede una billetera Segwit generar y usar direcciones que no sean Segwit?

Estoy usando Bitcore de Bitpay para crear billeteras y generar nuevas direcciones para los usuarios de mi plataforma. También estoy usando Bitcore-wallet-client para firmar transacciones.

Mis usuarios tienen billeteras heredadas en este momento. Tengo la intención de migrar sus billeteras a Segwit nativo, pero también necesitarán direcciones heredadas para que puedan recibir monedas desde cualquier lugar. (¿bien?)

¿Es posible tener solo una billetera por usuario, generando ambos tipos de direcciones, o tendré que administrar dos billeteras por usuario?

Y si tengo que gestionar dos monederos por usuario, los utxos de un monedero no estarán disponibles para el otro, obviamente. ¿Cuál es la mejor manera de lidiar con su 'saldo dividido'? ¿Debo orientar a los usuarios para que envíen todas sus monedas a la dirección bc1 de la nueva billetera Segwit? Pero luego, cada vez que reciben fondos en sus direcciones heredadas, tendrían que transferirlos nuevamente a la dirección bc1 para realizar transacciones Segwit. No tiene sentido, ¿o sí? ¿Qué me estoy perdiendo?

Respuestas (2)

No estoy familiarizado específicamente con las billeteras generadas por Bitcore de BitPay, pero no hay un problema general que impida que una billetera genere direcciones de varios formatos de salida. Si las billeteras de BitPay solo pueden hacer una u otra, sería una peculiaridad de implementación local.

Si bien es posible mantener billeteras separadas para cada usuario, es bastante costoso hacer su contabilidad en cadena.

El modo de operación más común para los servicios que toman la custodia de los fondos de los usuarios es mantener solo una billetera de depósito único. Luego generaría una nueva dirección en esta "billetera ómnibus" para cada depósito de usuario. Dado que las direcciones son únicas, puede usar la dirección para indicar a qué cliente acreditar en su contabilidad interna.

Sin embargo, en el aspecto operativo, puede agrupar múltiples retiros en una sola transacción e incluso mover parte de los fondos a una billetera fría para mejorar su seguridad.

"Si las billeteras de BitPay solo pueden hacer una u otra, sería una peculiaridad de implementación local". Sí, efectivamente ese era el problema. Bitcore de Bitpay espera un tipo de dirección como parámetro para crear nuevas billeteras. Luego, usa ese valor cada vez que le pides que cree una nueva dirección. Entonces agregué otro parámetro para el flujo createAddress, y allí paso el tipo de dirección. Ahora las billeteras creadas con este sistema pueden generar y usar todo tipo de direcciones. Curiosamente, el sistema sabe cómo firmarlo todo. No tengo idea de por qué vincularían un tipo de dirección con la billetera.
Tal vez asumieron que es demasiado confuso para los usuarios tener más de un tipo de dirección o algo así.

¿Puede una sola billetera generar (y usar) direcciones SegWit y no SegWit?

Sí. Ejemplo: en Bitcoin Core puede ejecutar getnewaddress en address_typeel argumento

obtenernuevadirección

Tengo la intención de migrar sus billeteras a Segwit nativo, pero también necesitarán direcciones heredadas para que puedan recibir monedas desde cualquier lugar.

La mayoría de las aplicaciones, sitios web, servicios, etc. ahora admiten direcciones segwit nativas; sin embargo, se pueden usar direcciones p2sh-segwit si las direcciones bech32 no son compatibles.