不错,
是的,是一直再遍历下去
这是一些格式上的提示
课程还是有干货的,
课程源码:https://github.com/hexbo/go-blockchain-demo
有帮助欢迎star
因为不到1秒就执行完了
fa song shu ju ba
hosts wen jian pei le ma ,hosts file configuration has been already configed? 127.0.0.1 localhost xiang mu qi dong le ma ? whether project is running or not ? duan kou zhan yong le ma? port binded? post or get requests?
用深的复制就可以了
有被用到吧,
newBlock.Data = data
这里不是嘛
自己截图吧
//注意int转string不能这样:string(b.Index) + string(b.TimeStamp) blockData := strconv.Itoa(int(b.Index))+strconv.Itoa(int(b.TimeStamp))+b.PreBlockHash fmt.Println(blockData)
这是因为老师的int转string语句写错了,
string(b.Index) + string(b.TimeStamp)
上面这条语句每次输出都是同一个乱码符号,因此Index和TimeStamp在计算哈希值的时候根本没有起到作用,而创世区块其他的值都是固定的,所以每次算出来的哈希值都是一样的。
因为isvalid里面第三个条件,不等式左边是用的新时间戳计算出来的,右边是之前早就计算出来的,所以二者是不同的。删掉
我也看到这个问题了,前面哪个同学问的,有链接发我一下吗,谢谢
节点上的数据都是同步更新,所有处处有备份。不需要有出口依赖,所以去中心化
写的时候逻辑不对,导致死循环,再检查检查
空 ,等于null
Block结构体中的GenerateNewBlock函数中的hash必须等data赋值完之后再计算,顺序换一下就可以了
服务监听这块,就是用了一个go语言的基础http库,对每种Server语言开发来说,都是基本能力。
blockchain =core.NewBlockchain()
这个相当于演示的服务器,每次启动会生成一个全局唯一的区块链,应该只是为了演示用的,不要深究。
我也是报这个错
emmm我来解释一下吧。。EncodeToString需要一个[] type的参数。但是 Sum256返回是一个[size] type。。所以You can trivially convert any array ([size]T) to a slice ([]T) by
fabric+docker
一般不可能发生错误!因为私钥只有你自己知道,而且这是一个分布式的,所有人都会记录这笔交易,就算错了,也绝对无法修改。
这里只是没有加校验而已,如果加判断data没有值就会返回错误信息
解决这个问题了吗?
后面补上了。demo里直接把传入的数据赋值给新创建的区块的data即可