¿Contrato pagadero con múltiples "opciones"?

Estoy tratando de crear un contrato que se comporte de manera diferente según la selección del usuario. Sin embargo, no tengo idea de cómo dejar que el usuario "seleccione" la opción. Actualmente tengo una función alternativa básica que hace la lógica básica, pero esta lógica tiene 2 variables importantes que me gustaría que el usuario pudiera cambiar. ¿Cuál es el mejor enfoque para lograr esto? Sé que puedo crear una función de pago con 2 entradas que modificarán este comportamiento, pero ¿cómo usaría la gente esta función? Ninguna billetera (excepto MyEtherWallet) admite funciones e incluso con MEW necesita conocer ABI. ¿Hay una solución o algo?

Gracias, SEnergy

Respuestas (1)

En realidad, básicamente nadie entrega los contratos tal cual a los usuarios finales. Casi siempre hay algunas capas de interfaz más antiguas entre el usuario y su(s) contrato(s) inteligente(s) como web3. Entonces, el usuario usa una interfaz fácil de usar y, en segundo plano, web3 y un nodo seleccionado se encargan de las interacciones del contrato inteligente.

Sin embargo, si esta es más una pregunta teórica o realmente desea que sus usuarios finales se conecten directamente a los contratos inteligentes:

Conexión directa a sus contratos sin capas fáciles de usar

Si no desea exigir a los usuarios finales que usen una billetera que admita contratos personalizados (o no desea que pasen por la configuración y todo), no le quedan muchas opciones.

Lo único que se me ocurre es determinar la selección en función de la cantidad de Ether enviada. Por ejemplo, el último dígito podría ser la selección: si el usuario envía 5003 o 4239082482390482903 weis, significa la selección 3. La diferencia monetaria es insignificante cuando se habla de weis.

Otra idea (tonta) es exigirles que envíen la cantidad requerida de transacciones. Si es solo una transacción, significa la selección 1 y así sucesivamente.

Creo que la solución típica es construir su propia interfaz (DApp con web3.js).
Por supuesto. Esperaba que esto fuera más una pregunta teórica. De todos modos, incluirá eso también "por si acaso"