区块链实战(二)PoW工作量证明的实现

简介: 区块链实战(二)PoW工作量证明的实现

Version 2

定义一个工作量证明的结构ProofOfWork


block


目标值


提供一个创造PoW的方法


NewProofOfWork(参数)


提供一个计算哈希值的方法


Run()


提供一个校验函数


IsValid()


结构目录

image.png


block.go

package main
import (
   "time"
)
/*
1.定义一个区块的结构Block
a.区块头:6个字段
b.区块体:字符串表示data
*/
//区块
type Block struct {
   Version int64   //版本
   PerBlockHash []byte //前一个区块的hash值
   Hash []byte //当前区块的hash值,是为了简化代码
   MerKelRoot []byte  //梅克尔根
   TimeStamp int64  //时间抽
   Bits int64  //难度值
   Nonce int64 //随机值
//区块体
   Data []byte  //交易信息
}
/*
提供一个创建区块的方法
NewBlock(参数)
*/
func NewBlock(data string ,prevBlockHash []byte) *Block {
   var block Block
   block = Block{
      Version:      2,
      PerBlockHash: prevBlockHash,
      //Hash:         []byte{},      //区块不存储hash值,节点接受区块后独立计算并存储在本地。
      MerKelRoot:   []byte{},
      TimeStamp:    time.Now().Unix(),
      Bits:         targetBits,
      Nonce:        0,
      Data:         []byte(data),
   }
   // block.SetHash()  //填充Hash
   PoW:= NewProofOfWork(&block)
   nonce , hash :=PoW.Run()
   block.Nonce=nonce
   block.Hash=hash
   return &block
}
/*
func (block *Block) SetHash() {
   // 源码里面是要传二维切片 func Join(s [][]byte, sep []byte) []byte
   tmp :=[][]byte{
      IntToByte(block.Version),
      block.PerBlockHash,
      block.MerKelRoot,
      IntToByte(block.TimeStamp),
      IntToByte(block.Bits),
      IntToByte(block.Nonce),
   }
   data:=bytes.Join(tmp,[]byte{})    //之后再计算hash
   hash := sha256.Sum256(data)
   block.Hash = hash[:]  //变切片
}
*/
//创始块
func NewGensisBlock() *Block{
   return NewBlock("Genesis Block!",[]byte{})
}
相关文章
|
3月前
|
安全 物联网安全 物联网
区块链零知识证明:未来数据的“隐身斗篷”
**区块链零知识证明(ZKP)技术融合密码学与分布式账本,确保数据安全与隐私。ZKP允许证明者不透露信息地验证论断,增强数据真实性,同时避免数据篡改。未来,ZKP将在数字身份、数据交易、物联网安全及跨链互操作中扮演关键角色,驱动数字化转型并保障信息安全。**
|
3月前
|
安全 物联网安全 物联网
区块链零知识证明:未来数据的“隐身斗篷”
**区块链零知识证明(ZKP)技术融合密码学与分布式账本,确保数据安全与隐私。ZKP允许证明者在不透露信息情况下证实论断,增强区块链安全性,提高验证效率。未来,ZKP将在数字身份、数据交易、物联网安全及跨链互操作中扮演关键角色,驱动数字世界的安全转型。**
|
3月前
|
算法 安全 网络安全
【区块链】深入解析Proof of Work (PoW): 区块链技术的核心驱动力
在区块链技术的宏伟蓝图中,Proof of Work(工作量证明,简称PoW)算法扮演着基石的角色。自比特币白皮书发布以来,PoW已成为确保去中心化网络安全、维护数据完整性的关键机制。本文将深入探讨PoW的工作原理、优势、挑战以及其对区块链生态系统的影响,力求为读者提供一个全面而深入的理解。
98 0
|
4月前
|
JavaScript 前端开发 区块链
JavaScript【代码】使用JS实现简单的区块链(签名+工作量证明机制)
JavaScript【代码】使用JS实现简单的区块链(签名+工作量证明机制)
65 0
|
存储 监控 Java
基于区块链技术的超级账本(Hyperledger) - 从理论到实战
什么是区块链?简单来说区块链就是一个分布式的记账本,或者分布式的数据库。
562 0
基于区块链技术的超级账本(Hyperledger) - 从理论到实战
|
安全 算法 前端开发
区块链 PoW 与 PoS 的纷争
区块链 PoW 与 PoS 的纷争
193 0
区块链 PoW 与 PoS 的纷争
|
传感器 人工智能 安全
3个物联网智能合约用例证明区块链的好处
现实世界中的一些企业正在尝试采用物联网智能合约,并在各个行业中寻找价值,例如娱乐、公用事业、广告等行业领域。
288 0
|
人工智能 大数据 数据挖掘
中山大学深圳研究院“智能金融和区块链技术”论坛(理论+实战PPT)
中山大学深圳研究院在昨天11月15号在深圳南山区虚拟大学园举办了“智能金融和区块链技术”论坛。 本次论坛邀请了中山大学移动互联网与金融大数据实验室郑子彬教授团队系统地介绍智能金融及区块链技术的现状、挑战、及展望,以及在智能金融及区块链上面的相关理论研究及应用成果。
206 0
|
7天前
|
存储 安全 数据管理
探索区块链技术在医疗数据管理中的应用
区块链技术,一种最初为比特币而创建的分布式账本技术,已经逐渐渗透到各个行业,其中包括医疗领域。本文将深入探讨区块链技术如何革新医疗数据管理系统,提高数据安全性和互操作性,同时降低运营成本。我们将从区块链的基本原理出发,分析其在保护患者隐私、实现数据共享及优化病历管理方面的具体应用案例和潜在挑战。最后,通过实际案例和未来展望,揭示区块链技术在医疗数据管理中的巨大潜力和发展前景。
|
1天前
|
存储 物联网 区块链
未来已来:探索区块链技术在物联网与虚拟现实中的融合应用
【9月更文挑战第26天】随着技术的不断演进,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐渐改变我们的工作和生活方式。本文将深入探讨这些技术如何相互促进,特别是在提供安全、透明的数据交换和增强用户体验方面的潜力。通过具体案例分析,我们将揭示这些技术融合的未来趋势,并讨论它们对社会的深远影响。
15 8