该项目目标是实现一个最小的可运行版本的类似bitcoin的blockchain。
- 目的:
- 阐述bitcoin的机制
- 熟悉相关知识点
github地址:bitcoinlitelite
说明
-
Transaction指的是bitcoin里面的交易,里面包含了此次交易的信息。多个Transaction构成一个集合,形成block。
-
流程是:userA 要给userB转账,userA会打包一个Transaction,里面包含了userA的address(这里暂时用publicKey取代),还有userA用privateKey Sign之后的信息。其他的user收到该笔Transaction,根据Transaction里面包含的userA的address,通过公钥算法验证该笔Transaction是否就是userA发出的。
-
POW:多个节点都收到一定的Transaction之后,谁来打包?POW算法决定谁来打包,某个user,假设C,C必须根据规则不断生成Hash,直到生成的Hash符合这次打包规则。C把该block信息广播,其他节点验证其POW是否正确,如果是,block加入到chain里。
-
包含文件:
- btc/transaction.go
- consensus/pow.go
Transaction
- Header:
- From 从哪个地址发出
- To 发到哪个地址
- PayloadHash 对交易内容进行SHA256
- PayloadLen 交易内容的长度,用于最终解码
- Timestamp 交易产生时间
- Nonce 可以理解为不断递增的数字,用于跟交易内容合并,产生HASH,然后匹配是否符合POW
- Transaction:
- Header 交易Header
- Signature 交易发起者使用私钥进行签名
- Payload 交易内容
网友评论