美文网首页
第一节 工作量证明

第一节 工作量证明

作者: 半亩房顶 | 来源:发表于2018-07-20 14:51 被阅读13次

又开新坑,感觉要废了,但是忍不住想学啊,堪堪另安排了一些时间,学起来吧

主要内容

大致上总结下第一节的内容

  • 区块的结构(并不完整,仅是基础结构)hash 和 nonce下面会说,工作量证明中会用到
  • 如何创建区块 / 创世区块
  • 如何创建包含创世区块的区块链
  • 如何往区块链中添加区块
  • 如何实现工作量证明(挖矿)

以上几个点中,感觉较多的就是了解性质的
主要想说明下工作量证明的具体过程

type ProofOfWork struct {
    //当前要验证的区块
    Block *Block
    //大数据存储 难度
    target *big.Int
}

const targetBit = 10

工作量证明的结构如上,一个结构体,包含一个区块的指针以及一个挖矿难度的值,big int类型
targetBit 是难度的值,值越大则越难挖矿

//创建新的工作量证明对象
func NewProofOfWork(block *Block) *ProofOfWork {

    //创建一个初始值为1的target 左移256 - targetBit
    target := big.NewInt(1)
    target = target.Lsh(target, 256-targetBit)

    return &ProofOfWork{block, target}
}

这一段是创建工作量证明结构的代码,关键在于生成难度值,设定一个big int,左移256-targetBit位,形成一个数字,如 00010000...000(共256位)

//挖矿
func (proofOfWork *ProofOfWork) Run() ([]byte, int64) {

    nonce := 0

    var hash [32]byte
    var hashInt big.Int

    for {
        //将block的属性拼接成字节数组
        dataBytes := proofOfWork.prepareData(nonce)
        //生成hash
        hash = sha256.Sum256(dataBytes)
        //hash转换为int(Hex->Dec)
        hashInt.SetBytes(hash[:])

        //判hash有效性 满足条件, 跳出循环
        if proofOfWork.target.Cmp(&hashInt) == 1 {
            break
        }

        nonce = nonce + 1
    }

    return hash[:], int64(nonce)
}

这段代码是工作量证明中具体的判别代码,通过不断的自加nonce,将求得的hash与难度值做对比,此时发现获取到了一个比难度值小的hash的时候,即完成工作量证明,跳出循环

以上,欢迎讨论,欢迎转载

相关文章

  • 第一节 工作量证明

    又开新坑,感觉要废了,但是忍不住想学啊,堪堪另安排了一些时间,学起来吧 主要内容 大致上总结下第一节的内容 区块的...

  • 工作量证明

    工作量证明是比特币的共识机制,共识算法是区块链中非常重要的一环,甚至说是核心,比特币的共识POW是什么呢? 工作量...

  • 工作量证明

    一. 简介 工作量证明(Proof Of Work,简称POW),简单来讲就是证明你完成了某一项工作。维基百科的解...

  • 比特币的癌症:51%攻击

    比特币的心脏是工作量证明,没有了工作量证明,比特币就会死。 工作量证明(POW)其实是一种奖励机制,鼓励矿工维护比...

  • 区块链主流共识算法

    一.POW(Proof Of Work) Proof Of Work,也就是工作量证明。工作量证明系统(或者说协议...

  • 工作量证明机制你真的都了解吗?

    工作量证明机制你真的都了解吗? 工作量证明(Proof Of Work,简称POW),简单理解就是一份证明,感觉就...

  • 共识机制

    POW 工作量证明机制 顾名思义,是指工作量的证明,通过你的工作量来证明你是可信任的,在区块链网络中通过运...

  • 3、认识比特币(二)

    1、工作量证明(POW) 记账权的获取方式:工作量证明(Proof of Work),简称POW算法解释:输入数据...

  • 小巴成长记-区块链的共识机制(二)

    目前,区块链的共识机制主要有工作量证明、权益证明和最长链机制共识。工作量证明和权益证明我们之前有介绍过,现在我们来...

  • 只字不差地阅读比特币原版白皮书(六)——网络(Network)

    上一篇文章对比特币白皮书的工作量证明进行了只字不差地研读,点此回顾工作量证明。 通过对工作量证明的研读,我们知道了...

网友评论

      本文标题:第一节 工作量证明

      本文链接:https://www.haomeiwen.com/subject/sazfmftx.html