Esta es una traducción al español de la tercera parte de la guía de Ethereum en práctica publicada por Alex Van de Sande, el 7 de Diciembre del 2015.
Esta es la tercera y última publicación en la serie de cómo usar el Monedero Ethereum para crear tus propias organizaciones autónomas. En el primer post detallamos cómo crear una criptomoneda y en el segundo mostramos cómo generar una democracia digital controlada por esos tokens. ¡Ahora cerraremos el círculo completo y crearemos un token controlado por la organización!
Vamos a modificar el contrato del token para permitir que sea acuñado por tu DAO. Así que guarda la dirección de tu actual DAO en un bloc de notas (pon atención al icono), coge este código fuente y conocerás a la taladradora: contracts > deploy new contract > solidity source code > pick contract
Puedes cambiar los parámetros cada vez que quieras (si, los emoticonos están permitidos en los campos de cadenas de texto), pero notarás un nuevo campo que no existía antes: el Minero Central (Central Minter). Aquí añade la dirección de tu nuevo contrato de democracia creado.
Haz click en "Deploy" y espera que la trasacción sea recogida. Después de eso tiene dos confirmaciones, ve a tu contrato de democracia y notarás que ahora posee un millón de nuevas monedas. Ahora si vas a la pestaña "Contracts" verás que allí hay un nuevo contrato dólar DAO (página de admin) en tu colección.
Selecciona la función "mintToken" a tu derecha y pon cualquier dirección que tengas como "objetivo", y luego la cantidad de token que quieras acuñar del aire en su cuenta. Presiona ejecutar, pero no presiones enviar! Notarás que hay una advertencia diciendo que la transacción no puede ser ejecutada. Esto ocurre porque sólo el Minero (el cual está establecido en la dirección DAO) puede llamar a la función que estás llamando con tu cuenta principal. Pero el código de la llamada es el mismo, por ello puedes simplemente copiarlo.
En su lugar, copia el código de ejecución del contrato desde el campo "data" y pégalo a un lado en un blog de notas. También consigue la dirección de tu nuevo contrato "Mint" y guárdalo en algún lugar.
Ahora vuelve atrás al contrato de democracia y crea una nueva propuesta con estos parámetros:
- Como el beneficiario, pon la dirección de tu nuevo token
- Deja la cantidad de ether (etherAmount) en blanco
- En "jobDescription" sólo escribe una pequeña descripción que tu estás acuñando nuevas monedas
- En "transactionBytecode" pega el bytecode que tu has guardado del campo data en el paso anterior
En unos pocos segundos tu deberías ser capaz de ver los detalles en la propuesta. Diferente a los otros campos "transactionBytecode" puede ser extramadamente extenso, y por lo tanto caro de almacenar en la cadena de bloques. Así que en lugar de archivarlo, la persona ejecutando la llamada luego proveerá el bytecode.
Pero esto por supuesto crea un agujero de seguridad: ¿Cómo puede ser votada una propuesta sin el código actual allí? ¿Qué previne a un usuario de ejecutar un código diferente después de que la propuesta haya sido votada? Esto es porque mantenemos el hash del bytecode. Baja con la rueda del ratón un poco, en la función "read from contract" y verás una función verificación de propuestas, donde nadie puede poner todos los parámetros de la función y comprobar si coincide con el que está siendo votado. Esto también garantiza que las propuestas no sean ejecutadas hasta que el hash del bytecode coincida exactamente con el código provisto.
Ahora todo el mundo puede votar en la propuesta y después de que el período de votación haya pasado, cualquier con el bytecode correcto puede pedir que los votos se contabilicen y el contrato sea ejecutado. Si la propuesta es lo suficiente apoyada entonces las nuevas monedas acuñadas deberían aparecer en la cuenta de Alice, como si fuera una transferencia desde una dirección Cero.
Y ahora tienes un contrato de minero central que existe por sí mismo en la cadena de bloques, completamente probado contra fraude ya que sus actividades son registradas transparentemente. El minero pude también coger monedas de circulación simplemente enviando monedas que tiene a la dirección Zero, o congelar los fondos de cualquier cuenta, pero es matemáticamente imposible para el Minero hacer cualquiera de esas acciones o generar más monedas sin el apoyo de suficientes poseedores del token.
Posibles usos de esta DAO:
- La creación de una criptomoneda estable universal. Controlando el total de cantidad de monedas en circulación los accionistas del Minero pueden intentar crear un activo cuyo valor no fluctuara tan salvajemente.
- Emisiones de certificados de activos en reserva: las monedas pueden representar un activo o objetos de los que el Mint es dueño y puede probarlo a sus accionistas y propietarios del token. Cuando el Mint adquiere o vende más de esos activos puede quemar o generar más activos para garantizar que el inventario digital siempre coincida con su contraparte real.
- Respaldo de activos digitales. El Mint puede mantener ether u otras monedas digitales basadas en Ethereum y usarlas para respaldar el valor de los tokens en circulación.
Sugerencias de perfeccionamiento
Hay múltiples maneras mediante las cuales esta estructura puede ser mejorada, pero eso se lo dejaremos al ejercicio y prueba del lector:
- Ahora mismo los voto son realizados por accionistas basado en tokens libremente intercambiables. en su lugar ¿pudiera ser que la membresía se basara en una invitación, cada miembro teniendo un voto (o quizás usar una ecuación cuadrática de voto o democracia líquida?
- ¿Qué hay sobre otros mecanismos de votación? Quizás el voto, en lugar de ser un booleano, podría ser un acuerdo más flexible: podrías votar para posponer una decisión, o podrías hacer un voto que fuera neutral pero siguiera contando para el recuento.
- Actualmente todas las propuestas tienen el mismo período de debate. ¿Podrías hacer eso proporcional al valor de la transferencia que que estuviera siendo propuesta? ¿Cómo vas a calcular eso en tokens?
- ¿Puedes crear un token mejor que pueda ser creado automáticamente enviando ether dentro, el cual fuese cobrado quemando el token, al precio de fluctuación de mercado?
- ¿Qué más puede hacer o poseer la DAO, además de tokens?
facilitarme el codigo de contrato DAO no lo publicaste