结构体定义
创世纪区块genesisInfo = “2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘”
工作量证明
迭代器
版本迭代:
定义区块的结构,
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 添加区块
工作量证明
定义结构体ProofOfWork 包含block和target big.Int
创建工作量证明的 工作量 run方法
targetStr := “0000100000000000000000000000000000000000000000000000000000000000”
由于proofofwork中包含有block和target,因此将整个block进行拼接后hash运算
proofofwork代替创建新区块的时候的hash值
使用Bolt数据库进行数据持久化保存,Db* bolt.db和最后一个hash值
新增区块的时候,hash值最为键,序列化后的数据作为值put到bolt数据库
定义包含公钥和私钥的结构体
生成公钥和私钥的方法
由公钥生成地址的方法