比特币区块链练习

结构体定义

创世纪区块genesisInfo = “2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘”

工作量证明

迭代器

版本迭代:

1

   定义区块的结构, 

	Version       uint64 //版本号
	PrevBlockHash []byte //前区块哈希值
	MerkelRoot []byte //这是一个哈希值,后面v5用到
	TimeStamp uint64 //时间戳,从1970.1.1到现在的秒数
	Difficulty uint64 //通过这个数字,算出一个哈希值:0x00010000000xxx
	Nonce uint64 // 这是我们要找的随机数,挖矿就找证书
	Hash []byte //当前区块哈希值, 正常的区块不存在,我们为了方便放进来
	Data []byte //数据本身,区块体,先用字符串表示

创建区块NewBlock的方法:用来得到一个区块 当前系统时间 Nonce为0 hash为空 重点:需要设置hash

定义区块链的结构
创建区块链的结构 NewBlockChain 添加区块

2

工作量证明
定义结构体ProofOfWork 包含block和target big.Int
创建工作量证明的 工作量 run方法

targetStr := “0000100000000000000000000000000000000000000000000000000000000000”

由于proofofwork中包含有block和target,因此将整个block进行拼接后hash运算

proofofwork代替创建新区块的时候的hash值

3

使用Bolt数据库进行数据持久化保存,Db* bolt.db和最后一个hash值
新增区块的时候,hash值最为键,序列化后的数据作为值put到bolt数据库

5

定义包含公钥和私钥的结构体
生成公钥和私钥的方法
由公钥生成地址的方法

阅读更多

更多精彩内容