Me acaban de presentar los contratos inteligentes de Ethereum y tengo un proyecto relacionado con la facultad que implica su uso.
La idea es crear una DApp que permita a los clientes (personas) pagar impuestos (en Ethereum) a una institución pública.
Mi problema es que no puedo decidir qué versión de alto nivel del contrato inteligente sigue las mejores prácticas:
Contrato inteligente global
Contrato inteligente por cliente
Contrato inteligente genérico
¿Son viables las ideas anteriores en el contexto de Ethereum - Smart Contracts?
En caso afirmativo, ¿cuál es el correcto?
Si no, ¿cómo debería ser el contrato inteligente adecuado según mi idea?
Es un poco difícil saber qué tan completo es el enfoque que necesita. Pero déjame ofrecerte una alternativa:
1) Dirección de Ethereum (cada persona debe tener una dirección de Ethereum vinculada a él personalmente)
2) Importe del impuesto a pagar (en éteres)
Después de eso, el contrato asegura que las personas paguen los impuestos de alguna manera. Después de la fecha X, la institución emite una transacción del contrato a una makeSureTaxesArePaid
función que se asegura de que se hayan pagado todos los impuestos. Si no, algo sucede. Todos los impuestos pagados al contrato pueden ser retirados posteriormente del contrato por su propietario (creador).
Así que esto es bastante parecido a su primera idea original.
Desde mi punto de vista no tengo dudas: la primera solución es la mejor práctica.
Asegura que todas las acciones necesarias, distintas al pago de impuestos, estén a cargo de la institución, la cual se beneficiará del dinero, es decir, no cobrar a quien paga impuestos por trabajo o gasto extra; además es naturalmente coordinado (por el contrario el segundo requiere coordinaciones entre la institución y todos los contribuyentes); además, no es necesario clonar N contratos diferentes solo para la dirección del cliente. Recuerde que paga gas por cada contrato individual implementado y por cualquier byte ocupado en blockchain: ¡demasiados duplicados en la solución 2!
La tercera solución es verdaderamente pobre y no es más barata.
La solución propuesta por Lauri puede ser útil si algún cliente tiene una cantidad diferente de impuestos a pagar, pero su pregunta no nos da información al respecto.
En resumen: ¡utilice la primera solución!
¡Espero que esto ayude!
OP no dijo si esto es impuesto sobre las ventas, impuesto sobre la renta u otra cosa, por lo que no tenemos información sobre cómo se calcula. Voy con un formulario de impuestos/esquema de remesas de impuestos, ya que parece lo más probable.
En la superficie, esto suena como una aplicación de "solicitud de pago", y poco más. Si la confidencialidad es una preocupación, se requieren esfuerzos diligentes para protegerla y uno debe abstenerse de colocar información innecesaria en la cadena de bloques.
Me inclinaría por la opción 1. Para mayor claridad:
la institución lo crea
y ...
Las direcciones y montos de las obligaciones y recibos estarán abiertos al examen de todos y eso podría no ser deseable. Considere investigar métodos de ofuscación para respaldar las garantías sobre la confidencialidad, incluido el análisis de metadatos.
Espero eso ayude.
gran flota
xSkyripper
gran flota