Skip to content

Latest commit

 

History

History
40 lines (31 loc) · 2.64 KB

README.md

File metadata and controls

40 lines (31 loc) · 2.64 KB

my-blockchain

一个最小化、单机版的区块链(比特币)Java 实现,包含了加密货币、挖矿、钱包等核心功能。可以作为入门项目帮助初学者快速了解区块链的核心原理。

区块链

区块以链表的形式连接起来,构成区块链。 可以理解为一个append only的分布式日志数据库,记录的是一笔笔的交易。新的区块产生之后会被追加到区块链的尾部,作为区块链的一部分。 每一个节点(peer)都保存了一份区块链的完整数据,大家通过相同的方法来管理各自的区块链,最终达到数据一致。 (在大部分完善的区块链系统中,并不是所有节点都保存完整的区块链数据,一些轻量节点只保存部分,一些钱包节点则只负责交易,数据交给完整节点去校验)

区块

区块链的基本单元,区块链网络中的消息都保存在各个区块上。 区块的hash值在整个系统中唯一,可以通过hash值来定位到一个具体的区块。

交易

代表一个或多个账户给另一个账户的转账操作 区块链不像银行系统那样有人专门记录每个人的余额,而是从每一笔转账记录中计算出某账号的余额。 所有的交易记录都存在区块链上,每一个节点都可以查询到任何一个交易记录。

账户

由公钥和私钥组成,公钥相当于账户、私钥相当于密码,代表了区块链世界中的一个唯一的地址或账户,区块链中的所有财产、信息都 归属于某一个账户。同时由于各个账户的状态是公开的,除非拥有秘钥,否则谁也无法强制将财产从一个账户中转移。 该账户由用户自己生成,并不需要借助于第三方或者现实世界,因此具有匿名性。

钱包

管理本地的账号。可以添加、删除账户,发起转账等。

矿工

挖矿是指将还没有被打包进区块的、已经经过验证的交易,打包到一个block中,并且计算出正确的hash值。 挖出一个正确的block之后,应当立刻广播到整个区块链网络,其他节点验证无误之后便会接受这个block。 挖出区块的节点,可以给自己发放50个币作为奖励,一并放到block里面。

代码里面有更详细的注释。

参考:

  1. jeiwan博客
  2. 邢开春 helloworldcoin 项目
  3. liuchengxu区块链教程汇总
  4. 比特币白皮书
  5. MIT区块链课程