{"id":22273565,"url":"https://github.com/dfleta/enzinium","last_synced_at":"2025-07-25T15:03:45.142Z","repository":{"id":49488385,"uuid":"172734829","full_name":"dfleta/EnZinIum","owner":"dfleta","description":"Examen programación Java - Desarrollo de Aplicaciones Web - FP Dual - feb 2019 - Colecciones, Has-A, inyección de dependencias, Ethereum, Smart Contract, criptografia, criptomoneda","archived":false,"fork":false,"pushed_at":"2024-04-12T16:09:58.000Z","size":302,"stargazers_count":2,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-17T16:11:05.516Z","etag":null,"topics":["crypto-token","crytography","ethereum-contract","has-a","java","smart-contracts"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dfleta.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-02-26T15:09:47.000Z","updated_at":"2024-04-12T10:06:57.000Z","dependencies_parsed_at":"2024-04-12T17:39:30.946Z","dependency_job_id":null,"html_url":"https://github.com/dfleta/EnZinIum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfleta%2FEnZinIum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfleta%2FEnZinIum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfleta%2FEnZinIum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfleta%2FEnZinIum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dfleta","download_url":"https://codeload.github.com/dfleta/EnZinIum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227922945,"owners_count":17840940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crypto-token","crytography","ethereum-contract","has-a","java","smart-contracts"],"created_at":"2024-12-03T13:13:44.732Z","updated_at":"2025-07-25T15:03:45.130Z","avatar_url":"https://github.com/dfleta.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"EZINIUM\n=======\n\n\u003e Contratos inteligentes con EnZinIum.\n\nRick va a organizar un concierto de Los Ricknillos y quiere poner a la venta 100 entradas en nuestra plataforma EnZinIum.\n\nPara ello va a utilizar un contrato inteligente construido sobre nuestra plataforma.\n\nEste contrato recibirá instrucciones sobre a quién vender las entradas. \n\nEl contrato almacenará que usuarios/as de la plataforma poseen las entradas.\n\nCada usuario/a dipone de una `Address` /dirección en la plataforma, desde la que gestionar sus EnZinIums y las entradas.\n\n## Prepara el proyecto\n\n 1. Crea un nuevo repo en tu cuenta en **Github**.\n 2. Crea un nuevo directorio en tu equipo y **clona el repositorio** de Github.\n 3. Abre VSCode /Eclipse /Netbeans y **establece como workspace** el directorio que has clonado.\n 4. Crea un proyecto **Maven** que incluya tu **nombre y apellidos**.\n 5. Pon el proyecto en seguimiento en **Git** y configura `.gitignore`.\n 5. 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.\n 6. Añade al proyecto la clase `GenSig.java` que ofrece varias utilidades que emplearás.\n 7. Completa las clases que aquí se indican **implementando los casos test que necesites**. Practica **TDD**.\n 8. Realiza `commits` como mínimo cada vez que termines una historia de usuario. \n\n## Cómo entregar el código\n\n 1. Crea un repo privado en tu GitHub y compártelo con el usuario dfleta.\n 2. Desde Eclipse exporta el proyecto a un fichero.\n 3. En VSCode, comprime la carpeta del proyecto.\n 4. Envíame el archivo por correo electrónico.\n 5. **Realiza commits periódicamente** mientras avanzas en el desarrollo de la aplicación.\n 6. Realiza un `push` al repo remoto en GitHub **SOLO cuando hayas terminado el proyecto**.\n\n## Salida de la aplicación\n\nIntenta que la salida del programa sea lo más parecida posible a las imágenes que se proporcionan.\n\n## Historias de usuario\n\nLas historias de usuario están enunciadas en el script principal `App.java`\n\nCrea un documento donde escribas las historias de usuario correspondientes a los hitos del proceso.\n\n## Diagrama de clases UML - Opcional\n\nRealiza 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.\n\n![diagrama de clases UML](./doc/diagrama_clases_UML.png)\n\n## Código\n\n### Clase `Address`\n\nEs la **dirección** que cada usuario tiene en nuestro sistema.\n\n#### Atributos\n\n* `PublicKey PK` es la **clave pública** de la **direccion** desde la que se envían o reciben EnZinIums.\n* `PrivateKey SK` es la **clave privada** de la **direccion** desde la que se envían o reciben EnZinIums.\n* `balance` es la cantidad de EnZinIums que posee esta dirección.\n* `symbol` es el símbolo del EnZinIum: `EZI`.\n\n#### Métodos\n\nSi programas las historias de usuario indicadas en  `App.java` construirás los getters y setters necesarios.\n\n* `toString()` devuelve la representación en `String` de un objeto de la clase `Address`.\n\n* `addEZI(Double EZI)` añade EZI al balance de esta direccion.\n* `transferEZI(Double EZI)` transfiere la cantidad de EZI a esta dirección.\n* `send(TokenContract contract, Double EZI)` envia EZI desde esta direccion a un contrato inteligente.\n\n\n\n### Clase `TokenContract`\n\nEsta clase representa un contrato inteligente en nuestra plataforma.\nLleva un control del numero de tokens que existen de un producto, por ejemplo una entrada de concierto, y a quién pertenecen.\nTodo contrato tiene un propietario.\n\n#### Atributos\n\n* Todos los que exijan los métodos de la clase.\n* `balances` contiene una tabla que hace el seguimiento de cuántos tokens pertenecen a cada propietario. \n\n#### Métodos\n\n* `name` devuelve el nombre del token de forma  _human-readable_ (p.e., “US Dollars”).\n* `symbol()` devuelve el nombre del símbolo del token de forma _human-readable_ (p.e., “USD”).\n* `totalSupply()` devuelve el total de unidades de este token que actualmente existen.\n\n* `addOwner(PublicKey PK, Double units)` añade un propietario a `balances`.\n* `numOwners()` devuelve el numero de propietarios en `balances`\n* `balanceOf(PublicKey owner)` devuelve el numero de tokens de un propietario.\n* `transfer(PublicKey recipient, Double units)` transfiere tokens del propietario del contrato a la dirección de destino.\n* `transfer(PublicKey sender, PublicKey recipient, Double units)` transfiere tokens del sender al recipient.\n* `require(Boolean holds) throws Exception` lanza una excepción cuando holds es `false`.\n* `owners()` muestra en consola todos los propietarios.\n* `payable(PublicKey recipient, Double EnZinIums)` envia los tokens a la direccion recipient y envia los EnZinIums al propietario del contrato.\n\n### Clase `GenSig`\n\nEsta clase contiene las utilidades para generar el par de clave pública y privada asociados a toda direccion `Address` de nuestra sistema.\n\n**NO puedes modificar su código**\n\nLa documentación de cada utilidad se encuentra en la propia clase.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfleta%2Fenzinium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdfleta%2Fenzinium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfleta%2Fenzinium/lists"}