Habrá ocasiones en las que una aplicación necesite firmar un mensaje arbitrario. Esta funcionalidad existe en billeteras en Eth, pero actualmente no exponemos una función para hacer esto en aplicaciones de pilas.
Se sugiere que hagamos un equivalente a https://eips.ethereum.org/EIPS/eip-712
de la discordia:
De acuerdo, en el mundo Eth hay toneladas de firmas de mensajes arbitrarias, para DeFi y DeX y demás.
Siempre solía ser el caso de que firmarías un hash de pedido, pero eso no es muy legible para el usuario. (La ventana emergente de MetaMask le muestra solo una cadena hexadecimal, no tiene idea de lo que realmente está firmando).
EIP712 definió una estructura (en json) que permite mostrar en qué consistía ese hash de orden
para que vea los campos reales que se utilizaron para generar el hash que está firmando
¡Gracias por publicar esto! Creo que esa característica es crucial.
¡Gracias por publicar esto! Creo que esa característica es crucial.
Estoy de acuerdo, y creo que muchos en el equipo también estarían de acuerdo 👍 Trabajaré para actualizar este problema a medida que lo analicemos.
@MarvinJanssen ¿Te importa indicar los casos de uso que te gustaría construir a corto plazo con esto para ayudar a sopesar las prioridades?
@markmhx hablando a corto plazo, en realidad solo hay una razón por la que lo necesito.
Estoy creando un componente del lado del servidor que rastrea las URL del depósito de la aplicación del usuario (para archivos de zona). Para proteger esta API, el usuario debe firmar la URL de su depósito con Connect. Luego, el servidor resuelve el nombre BNS informado del usuario a través del contrato BNS y utiliza el principal correspondiente para verificar la firma. Básicamente, necesito verificar que un mensaje específico realmente provenga de un director que posee un nombre en BNS. Si tiene soluciones alternativas, hágamelo saber. Mi plan de respaldo era presentar un contrato de Clarity simple y hacer que el usuario enviara una prueba a través de una llamada de contrato, pero eso lo convierte en una solución alternativa para una solución alternativa para una solución alternativa...
hay otros 2 casos de uso principales que he visto que se usan firmas en Eth:
@psq sí, a largo plazo lo necesitamos para DeFi y DeX, y plataformas que hacen coincidencias del lado del servidor que requieren firmas de usuario. (Como 0x Protocol y Wyvern en Ethereum).
Gracias por el contexto adicional 🙏 Le estoy asignando a Jasper para que pueda diseñar.
Veo que esto está en la nevera @markmhx , ¿eso significa que se considerará en un sprint posterior? @MarvinJanssen está esperando actualizaciones 🙂
He movido este problema de vuelta al trabajo pendiente de Kanban .
Tenga en cuenta que ya no estamos trabajando en sprints de 2 semanas, sino en una entrega incremental de prioridades como se refleja en la acumulación de arriba a abajo.
Estoy totalmente de acuerdo con la evaluación de un sistema para estructuras de datos tipeadas firmadas, pero esa es una tarea de ingeniería mucho más grande que no creo que debamos asumir primero. El principal beneficio de los datos estructurados son las transacciones en cadena sin cargo con lógica vinculada a los datos en esa firma. Sin embargo, dos cosas:
Las cadenas son el caso de uso más obvio para Stacks en este momento. Permitiría el caso de uso muy común de proporcionar acceso fuera de la cadena a un usuario que pueda demostrar que posee una dirección STX. Por ejemplo, una aplicación web que brinda una funcionalidad específica si posee un NFT.
Para ser más concretos sobre los casos de uso:
Durante una conversación con @MarvinJanssen y @GinaAbrams ayer, se determinó que la aplicación .BTC no tendrá una necesidad urgente de firmar mensajes arbitrarios a menos que sucedan dos cosas secuencialmente:
La ruta de firma de mensajes arbitrarios es básicamente una alternativa a las rutas anteriores, que son preferibles en el orden indicado. Implicaría enviar mensajes firmados con datos de archivo de zona a un servidor centralizado, lo que ahorraría al usuario final el costo de tener que firmar una transacción, pero también incurriría en la participación no deseada de una parte centralizada.
@agraebe @diwakergupta Me comunicaré con splat la próxima semana para ver cómo van los planes de implementación de Atlas para que podamos brindarle a @MarvinJanssen una actualización aquí con respecto al tiempo y cómo afecta sus opciones.
Está feliz de esperar una o dos semanas para ver si podemos obtener las correcciones en vivo en la red principal y ahorrarle el trabajo de cualquiera de las soluciones.
Esto es algo invaluable, el uso de firmas de la identidad probaría la propiedad de un nombre y muchas cosas, especialmente cuando se trata de operaciones fuera de la cadena, 100% para esto.
Comentario más útil
Durante una conversación con @MarvinJanssen y @GinaAbrams ayer, se determinó que la aplicación .BTC no tendrá una necesidad urgente de firmar mensajes arbitrarios a menos que sucedan dos cosas secuencialmente:
La ruta de firma de mensajes arbitrarios es básicamente una alternativa a las rutas anteriores, que son preferibles en el orden indicado. Implicaría enviar mensajes firmados con datos de archivo de zona a un servidor centralizado, lo que ahorraría al usuario final el costo de tener que firmar una transacción, pero también incurriría en la participación no deseada de una parte centralizada.
@agraebe @diwakergupta Me comunicaré con splat la próxima semana para ver cómo van los planes de implementación de Atlas para que podamos brindarle a @MarvinJanssen una actualización aquí con respecto al tiempo y cómo afecta sus opciones.
Está feliz de esperar una o dos semanas para ver si podemos obtener las correcciones en vivo en la red principal y ahorrarle el trabajo de cualquiera de las soluciones.