¿Se puede codificar cualquier información además de la dirección en un código QR?

  1. Quiero crear un contrato.
  2. Quiero generar un código QR para invocar este contrato.
  3. Quiero presentar este código QR a un usuario.

¿Hay alguna manera de incrustar información adicional en el código QR (como nombre de usuario o semilla o cualquier otro dato pequeño)? En otras palabras, quiero pasar algunos valores al contrato codificándolos en un código QR. Cada código QR generado tendría un aspecto diferente, pero invocaría el mismo contrato.

¡Gracias!

Respuestas (3)

Invocas el mismo contrato a través del campo de dirección mediante una transacción. Puede agregar datos utilizando el campo de datos.

Se pueden generar códigos QR para cualquier dato. Pueden ser bastante grandes y detallados para conjuntos de datos más grandes, pero en MyEtherWallet usamos con éxito los códigos QR para mover transacciones firmadas de una computadora fuera de línea a una en línea en la pestaña de transacciones fuera de línea .

Nota: los códigos QR tienen un tamaño máximo. Solo numérico: 7089 caracteres. Alfanumérico: 4.296 caracteres. Binario/byte: 2953 caracteres (bytes de 8 bits). Puedes aprender más aquí .

Entonces, la pregunta se reduce a: ¿qué información desea poner en el código QR y qué hace el usuario?

Aquí hay una solución:

  1. Encuentre una plataforma que acepte parámetros para un contrato a través de cadenas de consulta u otro método.

  2. Genera una URI con esos parámetros para el usuario y conviértela en un código QR.

  3. Invite al usuario a usar el código QR para llegar a esa URL y use su cuenta para realizar la transacción (también conocida como interacción con el contrato inteligente)

Tomemos un ejemplo de cómo podría hacerlo, ahora mismo, utilizando MyEtherWallet, que tiene la capacidad de aceptar la dirección, el monto, los datos y el gas en la página de envío de transacciones.

Supongamos que desea que un usuario envíe 1 ETHa la dirección 0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8con un simple text string, y un ligero aumento en la gasolina 23000para cubrir el costo de los datos adicionales. La URL con la que comenzarías sería:

https://www.myetherwallet.com/?gaslimit=23000&data=4d79457468657257616c6c657420697320746865206265737421&to=0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8&value=1.0 #

Si un usuario fuera a esa pestaña y desbloqueara su cuenta, tendría toda esa información completa. Luego solo tienen que generar la transacción firmada y enviarla. Si desea probar y ver qué sucede cuando accede a esa URL, puede usar la clave privada de prueba 92aa647439f9300d214f9264141931627082364f4c081a646d72e067e04e0e1bpara desbloquear la billetera y ver.

Los datos pueden ser lo que quieras y ese es un tema aparte con el que debes lidiar. Todos los datos deben estar en formato hexadecimal. En el ejemplo anterior, utilicé un convertidor en línea de ascii a hexadecimal para enviar el mensaje "¡MyEtherWallet es el mejor!" En este caso, la dirección de recepción no hace nada con esos datos. Obviamente, si la dirección de recepción fuera un contrato, podría configurarse para leer y hacer algo con él en función del valor de esos datos.

No sabía que MEW podía manejar este tipo de URL. Buen trabajo ! ¡Sigue codificando!
Un beneficio de no tener que abrir una discusión sobre los peligros potenciales de los URI. Estoy seguro de que EIP pasará... en algún momento. 😣

Debe mirar la propuesta de Alex Van De Sand para la URL de ERC del proyecto EIP (Ethereum Improvement Proposals) que tiene como objetivo crear un sistema para permitir que las aplicaciones completen una transacción, incluido el campo de datos. El campo de datos es lo que debe completar para llamar a una función de contrato. Una vez que tenga esta cadena de URL, solo tendrá que generar un QRCode para ella.

Esta propuesta está inspirada en BIP 21 y podría aplicarse al formato de dirección IBAN, pero puede extenderse a otros formatos de direcciones propuestos. Imagina estos escenarios:

  • Un intercambio o un convertidor instantáneo como el cambio de forma quiere crear una única dirección de ethereum para pagos que se convertirán en crédito en su sistema interno o generarán bitcoins en una dirección.

  • Una tienda quiere mostrar un código QR a un cliente que mostrará un pago por exactamente 12,34 éteres, que contiene metadatos sobre el producto que se está comprando.

  • Un sitio de apuestas quiere proporcionar un enlace en el que el usuario puede hacer clic en su sitio y abrirá una billetera ethereum predeterminada y ejecutará un contrato específico con parámetros dados.

  • Una dapp en Mist quiere, así que simplemente pídale al usuario que firme una transacción con un abi específico en una sola llamada

Pero hasta donde yo sé, ninguna billetera móvil puede llamar a un contrato arbitrario por ahora (apuesto a que el primero en dar esta posibilidad será Jaxx, ya que trabajan muy duro para mejorar su billetera) y esta propuesta aún no se adopta ni implementa ni en billeteras móviles y de escritorio.

“Claro que se puede”, en la teoría y con la práctica. Puedes usar esta técnica .

Si tiene la paciencia de verlo completo, puede encontrar una explicación detallada en este video .

¡Bienvenido a Ethereum! Si bien esto puede responder teóricamente a la pregunta, sería preferible incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia.
Además, incluso con la lectura del documento, no entiendo dónde le resulta útil lograr lo que pide OP. ¿Puedes explicar por favor?
Con esteganografía y algoritmos de compresión, puede codificar información en forma de píxeles binarios de datos, sin alterar un código QR en funcionamiento. La idea es tener una imagen pequeña (los datos) en un QR, que puede hacer lo que quiera el usuario. ¿Debo agregar esto en la respuesta?
Sin embargo, hay muchas posibilidades que deberían tomarse como un ejemplo viable.