{"id":27428075,"url":"https://github.com/coderanchel/vortyxblockchain","last_synced_at":"2025-04-14T13:17:33.776Z","repository":{"id":287589421,"uuid":"953979969","full_name":"CoderAnchel/VortyxBlockchain","owner":"CoderAnchel","description":"VortyxBlockchain is a Java-based blockchain implementation designed to explore the core concepts of blockchain technology, such as cryptographic signatures, Proof of Work, Merkle Trees, and chain validation. This project serves as a hands-on guide for learning blockchain development and provides a foundation for scaling into a decentralized network","archived":false,"fork":false,"pushed_at":"2025-04-12T16:55:25.000Z","size":2344,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T13:17:24.165Z","etag":null,"topics":[],"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/CoderAnchel.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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-24T11:34:11.000Z","updated_at":"2025-04-12T16:55:28.000Z","dependencies_parsed_at":"2025-04-12T17:50:42.103Z","dependency_job_id":null,"html_url":"https://github.com/CoderAnchel/VortyxBlockchain","commit_stats":null,"previous_names":["coderanchel/vortyxblockchain"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderAnchel%2FVortyxBlockchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderAnchel%2FVortyxBlockchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderAnchel%2FVortyxBlockchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderAnchel%2FVortyxBlockchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoderAnchel","download_url":"https://codeload.github.com/CoderAnchel/VortyxBlockchain/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248886340,"owners_count":21177645,"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":[],"created_at":"2025-04-14T13:17:32.714Z","updated_at":"2025-04-14T13:17:33.726Z","avatar_url":"https://github.com/CoderAnchel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VortyxBlockchain\n\nWelcome to **VortyxBlockchain**, a Java-based blockchain implementation designed as a learning project to understand the core concepts of blockchain technology. This repository provides a hands-on approach to creating a simple yet functional blockchain, complete with features like transaction signing, Proof of Work (PoW), Merkle Trees, and more.\n\n---\n\n## 🚀 Introduction\n\nBlockchain technology has revolutionized industries by offering decentralized, immutable, and transparent systems. This project aims to demystify blockchain by building one from scratch using **Java** and **Go**. Whether you're a seasoned Java developer or someone looking for a challenging coding project, this repository is for you.\n\nBy the end of this project, you’ll have:\n- A local blockchain capable of signing transactions, mining blocks, and validating chains.\n- A foundation for scaling to a fully decentralized network.\n\nRead the full article on Medium for an in-depth explanation of the project:  \n\n👉 [Creating a Blockchain with Java and Go Part 1: The Java Node](https://medium.com/@coderanchel/creating-a-blockchain-with-java-and-go-part-1-the-java-node-c10f5f51b60e)\n\n## 🛠️ Features\n\n### 🔐 Cryptographic Signatures\n- Secure transactions using asymmetric cryptography.\n- Transactions are signed with private keys and verified with public keys.\n- Utilizes **ECDSA** via **Bouncy Castle** in Java for cryptographic operations.\n\n### 🔨 Proof of Work (PoW)\n- Prevents tampering by requiring miners to solve a computational puzzle.\n- Blocks are mined by finding a valid nonce that produces a hash with a specific number of leading zeroes.\n\n### 🌲 Merkle Tree\n- Efficiently validates transactions in a block.\n- Uses recursive hashing to generate a Merkle Root.\n\n### 🕒 Mempool\n- Holds unconfirmed transactions until they are included in a block.\n- Ensures double-spending prevention and transaction validation.\n\n### ⛓️ Chain Validation\n- Validates block hashes, PoW, and transaction integrity.\n- Ensures blocks are linked correctly to maintain chain consistency.\n\n---\n\n## 🏗️ Architecture Overview\n\n### Core Entities\n- **Wallet**: Holds public and private keys.\n- **Transaction**: Represents value transfers between wallets.\n- **Block**: Contains transactions and links to the previous block.\n- **BlockchainStorage**: Manages data persistence using **LevelDB**.\n\n### Network Design\n- Decentralized network with nodes connected via gateways.\n- Nodes mine blocks, validate transactions, and broadcast updates.\n- Uses **Spring WebFlux** in Java and **Gorilla Mux** in Go for concurrency and routing.\n\n---\n\n## 📂 Project Structure\n\n- `Context`: Manages wallets, transactions, blocks, and overall blockchain state.\n- `BlockchainStorage`: Handles data persistence with LevelDB and RLP encoding.\n- `Spring Controllers`: Expose blockchain functionality via HTTP.\n\n---\n\n## 🧬 Technical Details\n\n### RLP Encoding\n- Reduces data size and improves parsing efficiency.\n- Inspired by Ethereum’s serialization method.\n\n### Key-Value Storage\n- Stores data as key-value pairs for fast querying and validation.\n\n### Cryptography\n- Built with battle-tested libraries:\n  - **Java Security Module**\n  - **Bouncy Castle**\n  - **Guava**\n\n### Tests\n- Comprehensive testing for:\n  - Signature validation\n  - Hash consistency\n  - Merkle root generation\n  - Block linkage\n\n---\n\n## 🌐 Networking\n\nTo scale the local blockchain into a real network:\n1. Install Spring Boot dependencies.\n2. Create controllers for wallets and transactions.\n3. Implement HTTP endpoints to expose blockchain functionality.\n\n---\n\n## 💡 Lessons Learned\n\n- Use **RLP encoding** for efficient data handling.\n- Model data in **key-value format** for faster operations.\n- Leverage proven cryptographic libraries for security.\n- Write tests for validation logic to ensure robustness.\n- Plan for networking early to enable scalability.\n\n---\n\n## 📜 Roadmap\n\n1. **Local Node** (Completed)\n   - Wallet creation\n   - Transaction signing\n   - Block mining\n   - HTTP API\n\n2. **Networking Layer**\n   - Concurrency and consistency\n   - Broadcasting and syncing nodes\n   - Fork resolution\n\n3. **Scalability**\n   - Support for 100+ active nodes\n   - Optimized mempool and validation logic\n\n---\n\n## 📜 License\n\nThis project is open-source and available under the [MIT License](LICENSE).\n\n---\n![Captura de pantalla 2025-04-12 a las 18 39 39](https://github.com/user-attachments/assets/5789e7bf-85f7-4971-aa06-e562eee2f024)\n![Captura de pantalla 2025-04-12 a las 18 40 04](https://github.com/user-attachments/assets/07053a0a-4985-4082-be5b-37aee38ad564)\n![Captura de pantalla 2025-04-12 a las 18 40 47](https://github.com/user-attachments/assets/239ba7d7-fbe0-476d-8be8-ada9560f5da3)\n![Captura de pantalla 2025-04-12 a las 18 41 38](https://github.com/user-attachments/assets/0b714581-c9ab-4df0-bb31-7643d45e090b)\n![Captura de pantalla 2025-04-12 a las 18 41 53](https://github.com/user-attachments/assets/af1d0a5a-af97-4f1b-a305-a3f39ea656d8)\n\nHappy coding! 🚀\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderanchel%2Fvortyxblockchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderanchel%2Fvortyxblockchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderanchel%2Fvortyxblockchain/lists"}