{"id":17589822,"url":"https://github.com/volodymyrprokopyuk/go-blockchain","last_synced_at":"2026-02-26T12:26:25.808Z","repository":{"id":255533211,"uuid":"850193402","full_name":"volodymyrprokopyuk/go-blockchain","owner":"volodymyrprokopyuk","description":"A foundational and practical guide for effectively learning and progressively building a blockchain from scratch in Go with gRPC","archived":false,"fork":false,"pushed_at":"2025-08-17T14:09:53.000Z","size":487,"stargazers_count":464,"open_issues_count":0,"forks_count":41,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-30T06:37:51.382Z","etag":null,"topics":["blockchain","blockchain-from-scratch","blockchain-protocol","concurrent-programming","cryptography","golang","grpc-go","merkle-proof","merkle-tree","peer-to-peer-networking"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/volodymyrprokopyuk.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-08-31T05:29:04.000Z","updated_at":"2025-08-30T05:51:23.000Z","dependencies_parsed_at":"2024-11-05T12:33:43.131Z","dependency_job_id":"53dd4607-9df2-40c7-b3c7-020bce3d93af","html_url":"https://github.com/volodymyrprokopyuk/go-blockchain","commit_stats":null,"previous_names":["volodymyrprokopyuk/go-blockchain"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/volodymyrprokopyuk/go-blockchain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodymyrprokopyuk%2Fgo-blockchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodymyrprokopyuk%2Fgo-blockchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodymyrprokopyuk%2Fgo-blockchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodymyrprokopyuk%2Fgo-blockchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/volodymyrprokopyuk","download_url":"https://codeload.github.com/volodymyrprokopyuk/go-blockchain/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volodymyrprokopyuk%2Fgo-blockchain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29858858,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T08:51:08.701Z","status":"ssl_error","status_checked_at":"2026-02-26T08:50:19.607Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["blockchain","blockchain-from-scratch","blockchain-protocol","concurrent-programming","cryptography","golang","grpc-go","merkle-proof","merkle-tree","peer-to-peer-networking"],"created_at":"2024-10-22T04:01:27.072Z","updated_at":"2026-02-26T12:26:25.772Z","avatar_url":"https://github.com/volodymyrprokopyuk.png","language":"Go","funding_links":[],"categories":["Tutorial","E-Books","Conferences"],"sub_categories":["Risk Management","Free e-books","免费电子书"],"readme":"* Build a blockchain from scratch in Go with gRPC\n\nNote: if you find this guide useful, please, *share the guide with your\nfriends*, so they take the same advantage as you do by learning the fundamental\nblockchain concepts and practicing how to build a blockchain in Go from scratch\n\n** Abstract\n\nA *foundational* and *practical* guide for *effectively learning* the\nfundamental blockchain concepts and *progressively building* a blockchain from\nscratch in Go with gRPC. An interesting and challenging adventure that takes you\nfrom the *foundational concepts and purpose* through the *technical design and\nimplementation* to the *practical testing and usage* of the proposed blockchain\n\n- Simple, yet non-trivial :: The guide introduces the blockchain concepts that\n  are /simple to understand/ and the technical design solutions that are /simple\n  to implement/. However, the /proposed blockchain is not trivial/. The\n  blockchain has all the key components of a modern blockchain: the state\n  initialization and synchronization, the peer discovery, the transaction relay,\n  the block proposer with the block validators being part of the Proof of\n  Authority (PoA) simple consensus, the block relay, the event stream of domain\n  events, the gRPC server, and the graceful node shutdown\n- Concise, yet detailed :: The guide describes the fundamental blockchain\n  concepts and the technical design solutions in the /concise and clear form/,\n  focusing on the /purpose what/ and the /reasons why/ behind the key blockchain\n  components. /Enough details/ behind the technical design solutions are\n  provided to support /deeper understanding/ of the internal working of the\n  components of the proposed blockchain\n- Practical, yet well-grounded :: The guide emphasizes the /learn by doing/\n  approach to effectively learning the fundamental blockchain concepts and\n  progressively building the blockchain components from scratch. /Practical\n  experience/ of developing, testing, and using the proposed blockchain is a\n  great motivator to get deeper understanding of the fundamental blockchain\n  concepts and the technical design solutions. Once the key mechanics of the\n  blockchain components are understood, the more /abstract theoretical concepts/\n  naturally fill the gaps in the knowledge acquired through practical\n  experiments\n\n** Related\n\n- [[https://github.com/volodymyrprokopyuk/go-wallet][BIP-32 HD wallet in Go]] \\\\\n  /A guided design and implementation of a BIP-32 HD wallet in Go with a\n  convenient CLI for easy experimentation using Nushell/\n\n** Contents\n\n*** Blockchain state\n\n1. [@1] [[/doc/getting-started.org][Getting started]]\n/Prerequisites/, /dependencies/, /installation/, /testing/, /directory\nstructure/\n2. [@2] [[/doc/account.org][Account]]\n/Blockchain account/, /account address/, /account balance/, /create account/,\n/persist account/, /re-create account/, /Secp256k1 account/, /Keccak256 account\naddress/, /Secp256k1 key pair/, /Keccak256 hash function/, /AES-GCM encryption\nwith Argon2 KDF/\n3. [@3] [[/doc/transaction.org][Transaction]]\n/Blockchain transaction/, /transaction nonce/, /double spending problem/,\n/transaction replay attack/, /sign transaction/, /verify transaction/, /search\ntransactions/, /Keccak256 hash function/, /ECDSA Secp256k1 digital signature/,\n/ECDSA Secp256k1 transaction verification/, /gRPC server streaming/, /Go\niterators/\n4. [@4] [[/doc/block.org][Block]]\n/Blockchain genesis/, /blockchain block/, /chain of blocks/, /block store/,\n/create genesis/, /persist genesis/, /re-create genesis/, /persist block/,\n/re-create block/, /search blocks/, /Keccak256 hash function/, /ECDSA Secp256k1\ndigital signature/, /ECDSA Secp256k1 block verification/, /gRPC server\nstreaming/, /Go iterators/\n5. [@5] [[/doc/state.org][State]]\n/Blockchain state/, /confirmed state/, /pending state/, /apply transaction/,\n/transaction life cycle/, /create block/, /apply block/, /block life cycle/,\n/concurrency safe application of transactions and blocks/, /Go mutex\nconcurrency/\n6. [@6] [[/doc/merkle-proof.org][Merkle proof]]\n/Merkle tree/, /Merkle proof/, /transaction inclusion verification/, /create\nMerkle tree/, /derive Merkle proof/, /verify Merkle proof/, /array\nrepresentation of Merkle tree/, /combination of hashes/, /Go generics/\n\n*** Blockchain node\n\n7. [@7] [[/doc/state-sync.org][State sync]]\n/Blockchain initialization/, /state synchronization algorithm/, /initialize\nbootstrap node/, /synchronize out-of-sync node/, /create genesis/, /synchronize\ngenesis/, /read blocks/, /synchronize blocks/, /Go iterators/\n8. [@8] [[/doc/peer-discovery.org][Peer discovery]]\n/Peer discovery/, /bootstrap node/, /seed node/, /concurrency safe peer\ndiscovery/, /peer discovery algorithm/, /node graceful shutdown mechanism/, /Go\nmutex concurrency/, /Go context/, /Go channel composition/\n9. [@9] [[/doc/transaction-relay.org][Transaction relay]]\n/Transaction relay/, /concurrency safe peers monitoring/, /concurrent generic\nmessage relay/, /gRPC client streaming/, /Go channel concurrency/, /Go channel\ncomposition/, /Go channel multiplexing/, /Go generics/\n10. [@10] [[/doc/block-proposer.org][Block proposer]]\n/Proof of Authority consensus/, /block proposer algorithm/, /block relay/, /gRPC\nclient streaming/, /Go channel concurrency/, /Go channel composition/, /Go\nchannel multiplexing/, /Go generics/\n11. [@11] [[/doc/event-stream.org][Event stream]]\n/Node event stream/, /event publisher/, /concurrency safe event streaming/,\n/domain event multiplexing/, /gRPC server streaming/, /Go mutex concurrency/,\n/Go channel concurrency/, /Go channel composition/, /Go channel multiplexing/\n12. [@12] [[/doc/blockchain-node.org][Blockchain node]]\n/Blockchain node/, /peer-to-peer network of nodes/, /peer discovery/, /state\nsync/, /confirmed state/, /pending state/, /transaction relay/, /Proof of\nAuthority consensus/, /block proposer/, /block relay/, /block application/,\n/block confirmation/, /event stream/, /node graceful shutdown mechanism/, /node\ngRPC server/, /node CLI/, /start node/, /blockchain peer-to-peer network with\ntwo nodes/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolodymyrprokopyuk%2Fgo-blockchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolodymyrprokopyuk%2Fgo-blockchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolodymyrprokopyuk%2Fgo-blockchain/lists"}