Code Monkey home page Code Monkey logo

enzinium's Introduction

EZINIUM

Contratos inteligentes con EnZinIum.

Rick va a organizar un concierto de Los Ricknillos y quiere poner a la venta 100 entradas en nuestra plataforma EnZinIum.

Para ello va a utilizar un contrato inteligente construido sobre nuestra plataforma.

Este contrato recibirá instrucciones sobre a quién vender las entradas.

El contrato almacenará que usuarios/as de la plataforma poseen las entradas.

Cada usuario/a dipone de una Address /dirección en la plataforma, desde la que gestionar sus EnZinIums y las entradas.

Prepara el proyecto

  1. Crea un nuevo repo en tu cuenta en Github.
  2. Crea un nuevo directorio en tu equipo y clona el repositorio de Github.
  3. Abre VSCode /Eclipse /Netbeans y establece como workspace el directorio que has clonado.
  4. Crea un proyecto Maven que incluya tu nombre y apellidos.
  5. Pon el proyecto en seguimiento en Git y configura .gitignore.
  6. Copia y pega la función principal App.java. Utilízala como guía en el proceso TDD. No puedes modificar su código, pero sí puedes comentar aquellas partes que aun no hayas implementado.
  7. Añade al proyecto la clase GenSig.java que ofrece varias utilidades que emplearás.
  8. Completa las clases que aquí se indican implementando los casos test que necesites. Practica TDD.
  9. Realiza commits como mínimo cada vez que termines una historia de usuario.

Cómo entregar el código

  1. Crea un repo privado en tu GitHub y compártelo con el usuario dfleta.
  2. Desde Eclipse exporta el proyecto a un fichero.
  3. En VSCode, comprime la carpeta del proyecto.
  4. Envíame el archivo por correo electrónico.
  5. Realiza commits periódicamente mientras avanzas en el desarrollo de la aplicación.
  6. Realiza un push al repo remoto en GitHub SOLO cuando hayas terminado el proyecto.

Salida de la aplicación

Intenta que la salida del programa sea lo más parecida posible a las imágenes que se proporcionan.

Historias de usuario

Las historias de usuario están enunciadas en el script principal App.java

Crea un documento donde escribas las historias de usuario correspondientes a los hitos del proceso.

Diagrama de clases UML - Opcional

Realiza a mano alzada -o con la aplicación que prefieras- un pequeño diagrama de clases UML que muestre la relación entre las clases que has construído, con su interfaz pública y privada.

diagrama de clases UML

Código

Clase Address

Es la dirección que cada usuario tiene en nuestro sistema.

Atributos

  • PublicKey PK es la clave pública de la direccion desde la que se envían o reciben EnZinIums.
  • PrivateKey SK es la clave privada de la direccion desde la que se envían o reciben EnZinIums.
  • balance es la cantidad de EnZinIums que posee esta dirección.
  • symbol es el símbolo del EnZinIum: EZI.

Métodos

Si programas las historias de usuario indicadas en App.java construirás los getters y setters necesarios.

  • toString() devuelve la representación en String de un objeto de la clase Address.

  • addEZI(Double EZI) añade EZI al balance de esta direccion.

  • transferEZI(Double EZI) transfiere la cantidad de EZI a esta dirección.

  • send(TokenContract contract, Double EZI) envia EZI desde esta direccion a un contrato inteligente.

Clase TokenContract

Esta clase representa un contrato inteligente en nuestra plataforma. Lleva un control del numero de tokens que existen de un producto, por ejemplo una entrada de concierto, y a quién pertenecen. Todo contrato tiene un propietario.

Atributos

  • Todos los que exijan los métodos de la clase.
  • balances contiene una tabla que hace el seguimiento de cuántos tokens pertenecen a cada propietario.

Métodos

  • name devuelve el nombre del token de forma human-readable (p.e., “US Dollars”).

  • symbol() devuelve el nombre del símbolo del token de forma human-readable (p.e., “USD”).

  • totalSupply() devuelve el total de unidades de este token que actualmente existen.

  • addOwner(PublicKey PK, Double units) añade un propietario a balances.

  • numOwners() devuelve el numero de propietarios en balances

  • balanceOf(PublicKey owner) devuelve el numero de tokens de un propietario.

  • transfer(PublicKey recipient, Double units) transfiere tokens del propietario del contrato a la dirección de destino.

  • transfer(PublicKey sender, PublicKey recipient, Double units) transfiere tokens del sender al recipient.

  • require(Boolean holds) throws Exception lanza una excepción cuando holds es false.

  • owners() mueestra en consola todos los propietarios.

  • payable(PublicKey recipient, Double EnZinIums) envia los tokens a la direccion recipient y envia los EnZinIums al propietario del contrato.

Clase GenSig

Esta clase contiene las utilidades para generar el par de clave pública y privada asociados a toda direccion Address de nuestra sistema.

NO puedes modificar su código

La documentación de cada utilidad se encuentra en la propia clase.

enzinium's People

Contributors

dependabot[bot] avatar dfleta avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.