该项目目标是实现一个最小的可运行版本的类似bitcoin的blockchain。
- 目的:
- 阐述bitcoin的机制
- 熟悉相关知识点
github地址:bitcoinlitelite
说明
- Block是多个Transaction的集合。Transaction全网广播的时候,是未确认状态的,需要被打包成Block,写入到BlockChain里,才是真正的交易确认。Block还包含了当前打包者的信息,签名,以及POW需要Nonce等。
- 最终Block与Block串联起来,形成Blockchain。
- Block全网广播之后,节点收到,会根据几个维度判断该Block是否合法:
- BlockHeader是否符合POW要求,比如,POW当前要求的难度是产生的HASH里,前10个是0,那么节点会根据BlockHeader里的信息,产生HASH,看看是否符合
- Block的签名是否正确。即,采用Header里的Origin对该签名验证,是否正确。该验证是为了确认是否该区块是该Origin地址产生的。
- MerkleTree是否正确,判别当前的Block包含的Transaction是否是对的
Block 数据结构
-
BlockHeader
- Origin 打包者的地址/公钥
- PrevBlock 上一个Block的地址
- MerkleRoot 包含的交易形成的Merkle
- Timestamp 打包时间
- Nonce 可以理解为不断递增的数字,用于跟交易内容合并,产生HASH,然后匹配是否符合POW
-
Block
- Header 包的具体内容
- Signature 打包者用自己私钥对当前的block的Hash进行签名
- Transactions 该区块包含的所有transaction
网友评论