¿Adjuntar datos/mensajes de texto adicionales a una transacción de Bitcoin?

Estoy creando una aplicación web de una sola página, donde necesito enviar la cadena ingresada por los usuarios (dirección de correo electrónico) junto con su pago de bitcoin. Digamos, por ejemplo, que tengo una aplicación web de una sola página que emite códigos de barras de certificados de regalo y acepta Bitcoin o altcoins. El problema que tengo es que si el usuario paga a mi dirección estática de bitcoin, ¿cómo sé a dónde enviar la información del código de barras? Necesito alguna forma de contacto, en mi caso es una dirección de correo electrónico que el usuario ingresa en la página. ¿De qué maneras puede el usuario enviarme su dirección de correo electrónico?

Algunos problemas con los que me encontré fue la dirección estática de bitcoin. Si varias personas pagaron a la misma dirección de bitcoin, no sabré a quién enviar el código de barras. Pero si tengo 100 direcciones pregeneradas. Y uno de ellos fue elegido al azar y luego combinado con la dirección de correo electrónico. Sería menos probable que alguien pague al mismo tiempo a la misma dirección de btc.

Ahora el problema es enviarme esa dirección de correo electrónico + btc para verificar que la transacción se haya completado.

Una de las otras soluciones que se me ocurrió fue requerir otra altcoin que tuviera la capacidad de mensajería incorporada. Las únicas 2 que conozco son Florincoin y NXT, donde puedes incluir un mensaje con cada transacción. El único problema con esto es que requiere que el propietario de la aplicación tenga florincoin o nxt (¿no creo que puedas adjuntar un mensaje en ethereum?). Usar cambio de forma para convertir BTC en una de estas monedas funciona, pero no puede adjuntar un mensaje durante este cambio de cambio de forma. Si Shapeshift habilitara la posibilidad de adjuntar también un mensaje durante su conversión, técnicamente se resolvería el problema al enviar la dirección de correo electrónico al propietario de la aplicación.

¿Cuáles son algunas otras soluciones que podrían no requerir un servidor centralizado para recopilar estos datos? Las soluciones de servidor centralizado también están bien si tiene una solución.

Respuestas (1)

La solución obvia sería exigir que los pagos tengan una salida OP_RETURN con una dirección de correo electrónico cifrada para usted. Esto no es simple y no existe una billetera que admita algo así, pero es técnicamente factible.

Para el problema de 1 dirección, puede usar una billetera determinista, que puede generar tantas direcciones como necesite. Puede usar BIP47 si quiere ser elegante y poder ofrecer reembolsos.

Creé una aplicación de ejemplo de tienda web para Armory hace un tiempo que es posible que desee ver que genera una nueva dirección para cualquier transacción. Es posible que desee echar un vistazo:

https://github.com/etotheipi/BitcoinArmory/tree/master/webshop

op_return realmente no funciona ya que los datos deben estar encriptados, ¿verdad? no puedes simplemente poner una cadena de texto normal en op_return, ¿verdad?
Cualquier cosa en el script que viene después de op_return se ignora y, por lo tanto, puede ser lo que quieras. Sí, son bytes, pero los bytes pueden representar una cadena. Todo depende de lo que esté interpretando los datos. La única restricción es el tamaño de los datos.
duckx, puede poner cualquier cadena que desee en OP_RETURN, incluidas las direcciones de correo electrónico. Lo único es que es horrible para la privacidad de sus clientes, ya que su dirección de correo electrónico ahora está registrada para que todos la vean en la cadena de bloques.