范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Golang制作一个简单的区块链

  区块链是一种数据存储的结构,通过GO语言可以方便的创建一个区块链
  直接上代码
  1:区块接口和方法package core  import ( 	"crypto/sha256" 	"encoding/hex" 	"time" )  type Block struct { 	Index    int    //区块链编号索引 	Times    int64  //区块链创建时间戳 	PrevHash string //上一个区块链hash 	Hash     string //当前区块的hash 	Data     string //交易数据  }  //创建创世区块 func FirstBlock() Block { 	var bk Block 	bk.Index = 0 	bk.Times = time.Now().Unix() 	bk.PrevHash = "" 	bk.Data = "创世区块" 	bk.Hash = getHash(bk)  	return bk }  //创建一个区块 func CreateBlock(oldBlock Block, data string) Block { 	var bk Block 	bk.Index = oldBlock.Index + 1 	bk.Times = time.Now().Unix() 	bk.PrevHash = oldBlock.Hash 	bk.Data = data 	bk.Hash = getHash(bk)  	return bk }  func getHash(b Block) string { 	str := string(b.Index) + string(b.Times) + b.PrevHash + b.Data 	hash := sha256.New() 	hash.Write([]byte(str)) 	bytes := hash.Sum(nil) 	hashCode := hex.EncodeToString(bytes) 	//返回哈希值 	return hashCode }
  2:创建区块链类和方法 //添加区块到区块链 type BlockChain struct { 	list []Block }  //加入区块链 func (bc *BlockChain) Add(data string) {  	num := len(bc.list)  	if num == 0 { 		//还没有任何区块 添加创世区块  		block := FirstBlock() 		bc.list = append(bc.list, block)  	} else { 		oldBlock := bc.list[len(bc.list)-1] 		var newBlock = CreateBlock(oldBlock, data)  		if bc.verifyBlock(newBlock, oldBlock) { 			bc.list = append(bc.list, newBlock) 		} else { 			fmt.Println("验证区块错误") 		}  	}  }  //交易记录 func (bc *BlockChain) GetList() {  	for _, v := range bc.list { 		fmt.Println("index:", v.Index) 		fmt.Println("times:", v.Times) 		fmt.Println("PrevHash:", v.PrevHash) 		fmt.Println("Hash:", v.Hash) 		fmt.Println("data:", v.Data) 		fmt.Println("-----------------------------------") 	} }  //验证区块 验证索引 验证hash func (bc *BlockChain) verifyBlock(newBlock Block, oldBlock Block) bool { 	//验证索引 	if newBlock.Index != oldBlock.Index+1 {  		return false 	} 	//验证hash 	if newBlock.PrevHash != oldBlock.Hash {  		return false 	}  	newHash := getHash(newBlock)  	if newBlock.Hash != newHash { 		return false 	} 	/*这里为了增加生成难度判断后缀 		code := newHash[len(newHash)-1] 		if code == 1 { 			return true 		} else { 			fmt.Println("验证hash后缀错误:", newHash) 			return false 		} */  	return true  }
  最后测试方法:
  func main() {  	blockchain := core.BlockChain{} 	for i := 0; i < 10; i++ { 		blockchain.Add("交易记录:" + strconv.Itoa(i)) 		time.Sleep(time.Second * 1) 	}  	blockchain.GetList()  }
  测试结果:
  PS F:goblock> go run main.go
  index: 0
  times: 1640488480
  PrevHash:
  Hash: a91a1da064bd40523be90634584c7c6a23bef44390f855ce8ff671d48b8d9e06
  data: 创世区块
  -----------------------------------
  index: 1
  times: 1640488481
  PrevHash: a91a1da064bd40523be90634584c7c6a23bef44390f855ce8ff671d48b8d9e06
  Hash: 28b659f29d8c8564adc23861e2fa2291dd23d14d672f080fa80ab70dcde7c059
  data: 交易记录:1
  -----------------------------------
  index: 2
  times: 1640488482
  PrevHash: 28b659f29d8c8564adc23861e2fa2291dd23d14d672f080fa80ab70dcde7c059
  Hash: 12b668c4d98cade9d12d651598d302663bcf64435a4e6ed1987cd1d730f324ea
  data: 交易记录:2
  -----------------------------------
  index: 3
  times: 1640488483
  PrevHash: 12b668c4d98cade9d12d651598d302663bcf64435a4e6ed1987cd1d730f324ea
  Hash: c420f63c9a8f73672f23b353f5fd752dee644e0f764740d090319dacccfa7be6
  data: 交易记录:3
  -----------------------------------
  index: 4
  times: 1640488484
  PrevHash: c420f63c9a8f73672f23b353f5fd752dee644e0f764740d090319dacccfa7be6
  Hash: ff37f186a13a4871c398869a259f288e4f504c7adcb613172fc7fbfba6488a45
  data: 交易记录:4
  -----------------------------------
  index: 5
  times: 1640488485
  PrevHash: ff37f186a13a4871c398869a259f288e4f504c7adcb613172fc7fbfba6488a45
  Hash: 0911b845ed602ab4f9c726b3d5dacea6c388c9e0c28db60a4aad62d94720f860
  data: 交易记录:5
  -----------------------------------
  index: 6
  times: 1640488486
  PrevHash: 0911b845ed602ab4f9c726b3d5dacea6c388c9e0c28db60a4aad62d94720f860
  Hash: 8f0f744d190bf204b4441900df2412d99d613bc030ab607b736c99bf1da451b5
  data: 交易记录:6
  -----------------------------------
  index: 7
  times: 1640488487
  PrevHash: 8f0f744d190bf204b4441900df2412d99d613bc030ab607b736c99bf1da451b5
  Hash: 3f8181b0570d615bfd0cae38f38813a46413d2ef8f40fc0bd312b7ff93fa57c5
  data: 交易记录:7
  -----------------------------------
  index: 8
  times: 1640488488
  PrevHash: 3f8181b0570d615bfd0cae38f38813a46413d2ef8f40fc0bd312b7ff93fa57c5
  Hash: 17ca30a31359c73ecd9b7e43319e0736d0d3043f94e541e7b9e19914f192b8ea
  data: 交易记录:8
  -----------------------------------
  index: 9
  times: 1640488489
  PrevHash: 17ca30a31359c73ecd9b7e43319e0736d0d3043f94e541e7b9e19914f192b8ea
  Hash: becffe7bb98f299739f6205bf16996e73315b5b752765d36ba7fc050de4abe1c
  data: 交易记录:9
  -----------------------------------

电脑大厂,为什么连个手机都做不好呢?(上)各位喜小伙伴,你知道我说的是哪个牌子嘛,没错,就是联想那个举世闻名的的电脑大场在电脑领域的造化真的不只一点点,我们今天就来聊聊这几年的联想手机吧。2018年联想发布了一款滑盖手机联红米又来搞事了。前不久联发科发布一款新的中端处理器,天机820,不知道这个名字是不是随便改的,还是为狙击友商,红米宣布就要搭载此处理,5月20号,荣耀x10发布,5月26号红米x10发布,而且最重2020全球最具价值Top100品牌,科技公司占37,中国17家资本实验室王进6月30日,WPP与Kantar联合发布了BrandZ2020全球最具价值Top100品牌名单。根据报告数据,尽管受到新冠疫情对经济社会与个人活动的影响,Top100小米10青春版正式发布小米10青春版正式发布,价格如下6G64G2099元6G128G2299元8G128G2499元8G256G2799元配置6。57英寸FHD三星AMOLED水滴屏,180Hz触控采3299起iPhoneSE2正式发布!你们心心念念的iPhonese2它终于来了就在4月15号晚上。外观上,iPhoneSE2采用4。7英寸视网膜高清显示LCD屏,1334750像素分辨率,326ppi,评质量度525荣耀X10系列疑被曝光?昨天上午,荣耀正式宣布荣耀X10系列的发布时间5月20日,官方宣传语还采用了荣耀X10将颠覆X过往,5G风暴,全民5X等字样,据了解荣耀X10系列正是早前大家期待的荣耀10X系列荣荣耀30系列视觉盛宴?不知道各位小伙伴是否在观看发布会呢,没看也不要紧,小编带你们走进发布会现场,对于荣耀30系列小编已经不知道说什么了,因为在前面的文章里都已经说过了,所以小编在此就不说第二遍了,咱们魅族17正式预热,你心动了吗?魅族17将搭载骁龙865处理器UFS3。1闪存,魅族17电池容量为4500mAh,标准版支持30W快充,Pro版本最高支持40W快充在小编之前的文章里也有过魅族17的相关爆料,不过拨慢老去的时钟值得关注的10大长寿科技公司资本实验室今日创新观察聚焦前沿科技创新与传统产业升级未来10年,最大的投资机会之一将是那些致力于延缓人类死亡的公司。美国银行分析师表示,专注于永生和长寿的公司,也就是那些尽可能延长从智能垃圾桶到智能路灯,物联网公司如何推动智慧城市建设?资本实验室今日创新观察聚焦前沿科技创新与传统产业升级目前,全球许多城市都面临着人口膨胀交通拥堵环境污染居住空间不足等各种问题。在探索问题解决方案的道路上,数字化与物联网(IOT)为坦途与波折我们需要什么样的人工智能?资本实验室今日创新观察聚焦前沿科技创新与传统产业升级作者冉伟资本实验室创始人(根据作者在BigAI创新大学活动上的演讲整理)历史车轮滚滚向前,如今我们正在进入人工智能时代。其中的坦
想低价买CPU,等不了大促,又不想选散片,还有一种靠谱方案在选购CPU时,很多玩家觉得面临的最大问题是如何用最实惠的价格买到心仪的产品。这句话看似很简单,实现起来却并不轻松。想要买到价格实惠的CPU,比较常见的方案有等待大促买散片,如果觉共筑个人信息安全防线随着人工智能越来越多地应用在生活中,智能汽车智能手机等带给人们便利的同时,也正在悄无声息地搜集着每位使用者的私人信息通讯录通话信息个人行程轨迹身体健康数据等等,都可能被收集,甚至被电视会被取代?新宠出现,无屏时代或将来临,你会买吗?我国第一台黑白电视机生产于1958年,随着科技的进步,1970年第一台彩色电视在天津面世了,1985年我国电视机的产量已经能达到1663万台,(本文由科技耳目原创出品,未经许可请勿快递送到网点代收已成常态快递送上门成奢求?在福州晋安区某小区内,一位市民正在驿站代收点寻找自己的快递包裹。如今,在日常生活中,快递送上门似乎已经成了一种奢求。不少网友留言称,快递送到网点代收已经成为常态,也逐渐成为行业潜规苹果ipad微信更新8。0。10支持微信状态微信状态是在v8。0加入的一项新功能,用户可以设置一条持续24小时的状态来分享自己的喜怒哀乐。不过该功能此前并不支持iPad微信,无法在iPad上设置状态或查看好友的状态。将iPa为何安卓手机在国内和国外截然不同,安卓原生手机在国内能用吗在国内使用谷歌手机(搭载安卓原生态系统)会是一种什么体验?我们讨论这个话题,就不得不讨论另外一个话题,那就是在中国区域销售的安卓手机,都是基于安卓系统进行深度定制开发的,而且在国内功能机里的顶流设计,4G网络移动支付,诺基亚百元机仅售224元随着智能手机和移动支付广泛的普及,功能机劣势就越加明显。选购一部手机给家里上了年纪的长辈使用,选购起来也更加困难。为年长的家人买一部智能手机,会存在年长的老人不会使用的问题,但如果六千多给老婆买的苹果12,真的肉疼新款12的外包装比之前的包装真的薄了很多对比苹果XR的包装差不多只有一半的高度手机屏幕上的贴纸撕起来那叫一个顺滑,超爽的给老婆买的是128G的绿色版本,老婆之前用的是6Splus如独乐与众享,瞬间即可搞定!BGVPZ01无线蓝牙耳机体验在这个各领域都喜欢玩出圈跨界的时代,功能单一,同质化严重的产品已然不足以吸引大众的目光。对于喜欢听歌的朋友,时下最为热行的出行小伙伴就是蓝牙音箱与真无线耳机了,前者可以随身挂在背包苹果被狠狠上了一课,国产手机连续两次超越,即将迎来帽子戏法iPhone的影响力几乎是其他厂商无法达到的地方,但在创新角度上,国内手机厂商又狠狠力压了苹果手机。外观方面,苹果在外观上一直被吐槽的莫过于前置的刘海屏设计了,在现在手机普遍使用单阿里巴巴曝性丑闻!年内市值蒸发超5千亿,巴菲特黄金搭档被套文杨万里8月8日,阿里巴巴卷入了一场风波。据爆料,阿里一位女员工被男领导强制要求去出差。在与客户吃饭被灌醉后,在酒桌上被男商户摸胸摸腿摸私处,且被男商户带到其他无人包间进行猥亵。此