上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页
摘要: 命令行demo代码: 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 ) 7 8 func main() { 9 //返回的是数组 10 cmds := os.Args 11 12 //通过字符比较,去选择执行相应的程序 13 for i, cmd := r 阅读全文
posted @ 2020-12-07 11:05 北漂的尘埃 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 迭代器分析: 作用:遍历容器,将数据逐个返回,防止一次性加载到内存,所以一点一点读取。 类比于for循环里面的range 区块链迭代器图示如下,最初指向最后一个区块,返回区块,指针前移,直至第一个区块。 部分代码(blockchain.go文件中定义和创建迭代器): 1 //定义一个区块链的迭代器, 阅读全文
posted @ 2020-12-07 11:01 北漂的尘埃 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 部分代码(blockchain.go文件中改写addblock函数): 1 //V3版本 2 func (bc *BlockChain) AddBlock(data string) { 3 bc.db.Update(func(tx *bolt.Tx) error { 4 //所有的操作都在这里 5 阅读全文
posted @ 2020-12-04 23:10 北漂的尘埃 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 部分代码(block.go文件中添加序列化与反序列化): 1 //序列化,将区块转换为字节流 2 func (block *Block) Serialize() []byte { 3 4 var buffer bytes.Buffer 5 6 //定义编码器 7 encoder := gob.New 阅读全文
posted @ 2020-12-04 23:09 北漂的尘埃 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 部分代码(gob.go文件中创建一个gob的demo实现序列化与反序列化的功能): 1 package main 2 3 import ( 4 "encoding/gob" 5 "bytes" 6 "log" 7 "fmt" 8 ) 9 10 //1. gob是go语言内置的编码包 11 //2. 阅读全文
posted @ 2020-12-04 23:08 北漂的尘埃 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 部分代码(改写blockchain.go文件,修改获取区块的方式): 1 package main 2 3 import ( 4 "beijing_go_term2/bolt" 5 "fmt" 6 "log" 7 ) 8 9 //V1,V2版本 10 ////创建区块链,使用Block数组模拟 11 阅读全文
posted @ 2020-12-04 23:07 北漂的尘埃 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 当前版本问题: 区块在内存中,每次执行完程序就释放,无法重用 创建区块不灵活,在main中写死,无法随意添加区块 V3版本思路: Bolt数据库介绍:轻量级、开源、go语言实现、key->value进行读取(map)[ ]byteè[ ]byte BlockChain结构重写 NewBlockCha 阅读全文
posted @ 2020-12-03 15:00 北漂的尘埃 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 部分代码(proofofwork.go文件中使用Bits推导难度值): 1 const Bits = 20 2 3 func NewProofOfWork(block *Block) *ProofOfWork { 4 pow := ProofOfWork{ 5 block: block, 6 } 7 阅读全文
posted @ 2020-12-02 22:38 北漂的尘埃 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 部分代码(proofofwork.go文件中IsValid函数实现): 1 func (pow *ProofOfWork) IsValid() bool { 2 //在校验的时候,block的数据是完整的,我们要做的是校验一下,Hash,block数据,和Nonce是否满足难度值要求 3 4 //获 阅读全文
posted @ 2020-12-02 22:32 北漂的尘埃 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 部分代码(proofofwork.go文件中Run函数实现): 1 //这是pow的运算函数,为了获取挖矿的随机数,同时返回区块的哈希值 2 func (pow *ProofOfWork) Run() ([]byte, uint64) { 3 //1. 获取block数据 4 //2. 拼接nonc 阅读全文
posted @ 2020-12-02 22:31 北漂的尘埃 阅读(127) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页