Entonces... esto parece una pregunta simple.
Si tengo una billetera y alguien quiere enviarme BTC. Quiero asegurarme de que son dueños de la billetera desde la que afirman estar enviando fondos. Por lo general, las personas hacen algo como una prueba de satoshi para confirmar esto.
Antes de que segwit, uno pudiera firmar un mensaje y con la dirección dada, podría descifrar el mensaje para confirmar que realmente posee la billetera que contiene esa dirección.
Después de segwit, esa funcionalidad está rota.
Además, no puedo tomar el getrawtransaction <trans> 1
comando para encontrar el vin
de la transacción y el para extraer el txid
y vout
del vin
. Luego, usando eso txid
y nuevamente, ejecute getrawtransaction <trans> 1
y observe la coincidencia vout
y la "n" que coincide con la anterior vout
ya no funciona después de segwit. (Todo esto tiene sentido ya que la forma en que se forman las transacciones es completamente diferente).
Por lo tanto: si se supone que alguien debe enviarme 0.00001 BTC, ¿cómo verifico de qué billetera proviene?
En términos más simples: ¿Cómo puedo verificar que alguien posee una billetera con direcciones segwit?
Antes de que segwit, uno pudiera firmar un mensaje y con la dirección dada, podría descifrar el mensaje para confirmar que realmente posee la billetera que contiene esa dirección.
Como descubrió, los RPC signmessage
y verifymessage
en Bitcoin Core actualmente no funcionan con segwit. Ha habido debates sobre la mejor manera de solucionarlo, pero al momento de escribir este artículo, el código actualizado aún no está disponible.
Además, no puedo usar el comando getrawtransaction 1 para
El getrawtransaction
RPC ahora toma true
en lugar de 1
para una salida JSON detallada. Los campos txid
, vout
y vin
en la salida JSON son iguales para la forma en que los está usando (solo tienen algunos campos adicionales ahora para salidas y entradas de segwit).
¿Cómo puedo verificar que alguien posee una billetera con direcciones segwit?
No hay una manera fácil en este momento de usar Bitcoin Core o cualquier otro software que conozca. Si es posible, es posible que desee cambiar su flujo de trabajo para que no necesite verificar la propiedad de la billetera. Por ejemplo, si actualmente recibe todos los pagos en la misma dirección, puede comenzar a usar direcciones separadas para cada cliente, de modo que Alice pague $ADDRESS_1, Bob pague $ADDRESS_2 y pueda diferenciar entre sus pagos por qué dirección pagaron.
Alternativamente, si necesita verificar la propiedad de la dirección para los reembolsos, puede hacer que los usuarios proporcionen una dirección de reembolso al finalizar la compra.
picard276