{"id":14980243,"url":"https://github.com/luisedmc/blockchaingo","last_synced_at":"2026-03-09T03:33:28.218Z","repository":{"id":65187344,"uuid":"583156308","full_name":"luisedmc/BlockchainGo","owner":"luisedmc","description":":chains: Implementing Blockchain in Golang","archived":false,"fork":false,"pushed_at":"2023-03-13T22:40:06.000Z","size":235,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-27T04:12:11.445Z","etag":null,"topics":["bitcoin-wallet","blockchain","blockchain-technology","cryptocurrency","go","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","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/luisedmc.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}},"created_at":"2022-12-28T23:54:52.000Z","updated_at":"2023-02-18T17:46:58.000Z","dependencies_parsed_at":"2024-06-20T07:18:51.061Z","dependency_job_id":"0cdbb761-b9fe-4039-bcce-b47133cec32c","html_url":"https://github.com/luisedmc/BlockchainGo","commit_stats":null,"previous_names":["luisedmc/blockgo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisedmc%2FBlockchainGo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisedmc%2FBlockchainGo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisedmc%2FBlockchainGo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisedmc%2FBlockchainGo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luisedmc","download_url":"https://codeload.github.com/luisedmc/BlockchainGo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241982489,"owners_count":20052530,"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":["bitcoin-wallet","blockchain","blockchain-technology","cryptocurrency","go","golang"],"created_at":"2024-09-24T14:01:30.292Z","updated_at":"2026-03-09T03:33:28.161Z","avatar_url":"https://github.com/luisedmc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## BlockchainGo\n\nBlockchainGo is a simple implementation of the Blockchain technology in Go language. This project was build to learn more about the Blockchain technology and its features. The code was written with some comments in a way that can maybe help understand the most complicated parts. The code is also very direct, I didn't try to reinvent the wheel, just implement some of the Blockchain features.\n\nI will be adding more features to this project in the future. See [Roadmap](#roadmap) section for more details.\n\n#### Disclaimer\n\nLike i said before, this project was built for learning purposes. It is not a production ready code. It is not secure or optimized and probably was not written in the best way.\n\n## Table of Contents\n\n- [BlockchainGo](#blockchaingo)\n    - [Disclaimer](#disclaimer)\n- [Table of Contents](#table-of-contents)\n- [Blockchain](#blockchain)\n  - [What's Blockchain?](#whats-blockchain)\n  - [Blocks](#blocks)\n  - [Transactions](#transactions)\n  - [Wallet](#wallet)\n- [Current State](#current-state)\n- [Usage](#usage)\n  - [Commands](#commands)\n    - [Example](#example)\n- [Roadmap](#roadmap)\n\n## Blockchain\n\n### What's Blockchain?\n\n\u003cimg src=\"/images/rick_and_morty.jpg\" alt=\"Rick and Morty explaning Blockchain\" width=380 height=380\u003e\n\nBlockchain technology is a secure database that allows transparent information sharing inside a network. This database is public, so everyone can visualize the records inside but can't delete or modify the data (something like a read-only database). All the data are stored in an immutable encrypted container that anyone can track called **block**.\n\n### Blocks\n\nBlocks are used to store the data inside the Blockchain. Each block has a unique identifier called **hash**. This hash is generated by the hash of the previous block. This way, all the blocks are connected, like a chain, and it is impossible to change the data inside a block without changing the hash of the block and all the following blocks. That's why this tecnology is called Blockchain.\n\n### Transactions\n\nAs I said before, the Blockchain stored encrypted data in blocks, which are a very safe way to store data.\nThis works very well in the context of transactions. For example, if you want to sell some cryptocurrencies for your friend, the Blockchain will create a unique ledger for the seller and buyer.\n\nThe transactions inside the Blockchain connect people with people **without relying on any financial system** (peer-to-peer), making this whole process a lot safer.\n\n### Wallet\n\nWallet is simply the local you store your and manage your cryptocurrencies. It consists of two parts: a Public Address and a Private Key. The Public Address is the Wallet Address and is a string of characters that other people can use to send you cryptocurrency. The Private Key is a secret string of characters that you use to access your wallet (very important to keep this one in a safe place).\n\n## Current State\n\nAt the current state, the BlockchainGo has the following features:\n\n- Create a new Blockchain and store it in the database\n- Print the All Blocks\n- Transactions\n- Get the balance of a specific address\n- Create a valid BTC Wallet address\n\n## Usage\n\nClone this repository and change to the project directory:\n\n```\ngit clone https://github.com/luisedmc/BlockchainGo \u0026\u0026 cd BlockchainGo\n```\n\nIf some packages are missing, you can get them with `go mod tidy`\n\nIn the project directory, just `go run main.go` or `go run .` and then the commands listed below.\n\nYou can also build the binary file with `go build` and then run it using `./BlockchainGo`\n\n### Commands\n\n| Command                                 | Description                                                       |\n| --------------------------------------- | ----------------------------------------------------------------- |\n| `createBlockchain -address ADDRESS`     | Create a new Blockchain with the given address as the first miner |\n| `printChain`                            | Print all the blocks of the blockchain                            |\n| `getBalance -address ADDRESS`           | Get the balance of the given address                              |\n| `send -from FROM -to TO -amount AMOUNT` | Send the given amount of coins from one address to another        |\n| `createWallet`                          | Create a new BTC wallet address                                   |\n\n#### Example\n\n`go run . createBlockchain -address \"luisedmc\"`\nor\n`./BlockchainGo createBlockchain -address \"luisedmc\"`\n\n## Roadmap\n\nFeatures that I would like to implement in the future:\n\n- [x] Wallets\n- [ ] Signatures\n- [ ] Web Server\n- [ ] Ethereum\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluisedmc%2Fblockchaingo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluisedmc%2Fblockchaingo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluisedmc%2Fblockchaingo/lists"}