区块链实战(二)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{})
}
相关文章
|
4月前
|
JavaScript 前端开发 区块链
JavaScript【代码】使用JS实现简单的区块链(签名+工作量证明机制)
JavaScript【代码】使用JS实现简单的区块链(签名+工作量证明机制)
34 0
|
安全 算法 前端开发
区块链 PoW 与 PoS 的纷争
区块链 PoW 与 PoS 的纷争
169 0
区块链 PoW 与 PoS 的纷争
|
传感器 人工智能 安全
3个物联网智能合约用例证明区块链的好处
现实世界中的一些企业正在尝试采用物联网智能合约,并在各个行业中寻找价值,例如娱乐、公用事业、广告等行业领域。
249 0
|
区块链
从“工作量证明”解密“区块链”
在一个互不认识、没有中心、缺乏互信的环境里,大家只需要在最长的区块链上工作,就能保证系统信息的真实性,这就是“工作量证明”机制。
1143 0
|
算法 区块链
区块链共识机制比较 kinmall:你能分清POS、POW、DPOS、POOL区别吗?
共识机制从古至今一直伴随着人类的发展。而共识算法是区块链的核心机制之一。今天咱们先来了解下什么是共识机制。
2801 0
|
算法 区块链 数据安全/隐私保护
|
8月前
|
存储 安全 区块链
区块链游戏系统开发(开发详细)/案例开发/设计功能/逻辑方案/源码平台
  区块链游戏系统开发是一个复杂而精密的过程。首先,需要进行需求分析和规划,确定游戏系统的功能和特性。然后,进行技术选型和架构设计,选择适合的区块链平台和开发工具。接下来,进行系统的搭建和编码,实现游戏逻辑和用户交互功能。最后,进行测试和优化,确保系统的稳定性和性能。
|
8月前
|
安全 Go 区块链
区块链游戏链游系统开发功能详情丨方案逻辑丨开发项目丨案例分析丨源码规则
 In recent years, with the continuous development of blockchain technology, NFTs (non homogeneous tokens) and DAPPs (decentralized applications) have emerged in the gaming industry.
|
8月前
|
存储 JavaScript 前端开发
区块链代币支付钱包(trx/trc20代币/usdt)对接开发
区块链代币支付钱包(trx/trc20代币/usdt)对接开发
|
9月前
|
存储 机器人 大数据
量化交易机器人系统开发(开发策略)及案例丨数字货币区块链交易所系统开发详细项目/方案设计/开发逻辑/源码版
  区块链的核心技术之一就是公开且透明的交易信息。一般情况下,在区块链内产生、流转和存储的信息是对所有节点用户开放的,其高度的透明化也使得区块内的所有人都能够查看数据的所有相关信息同时使用其应用。因此,区块链技术在信息共享与数据交换领域具有一定的优势。

热门文章

最新文章