哈希力量归集文库路径访问: 首页 > 无人驾驶智能汽车 > 无人自动驾驶

技术入门:区块链中的工作量证明和股权证明

黄文威 ☉ 文 来源:黄文威 2018-04-24 @ 哈希力量

【小哈划重点:PoS 试图解决 PoW 中大量资源被浪费的缺点。它的安全性不是来自矿机的性能,而是来自提高经济损失的经济价值。】

工作量证明 PoWJ0Q哈希力量 | 通用人工智能文库

工作量证明早期应用在抵抗网络攻击(例如 DDOS),中本聪首次把它应用到区块链技术中。比特币使用 Hashcash ,该算法可分解为如下步骤:J0Q哈希力量 | 通用人工智能文库

取一些公开的数据(在比特币中取区块头的数据)J0Q哈希力量 | 通用人工智能文库

给这个公开数据添加一个计数器。计数器默认从 0 开始(在区块链中计数器就是 nonce)J0Q哈希力量 | 通用人工智能文库

将  data(数据) 和 counter(计数器) 组合到一起,获得一个哈希J0Q哈希力量 | 通用人工智能文库

检查哈希是否符合一定的条件:J0Q哈希力量 | 通用人工智能文库

如果符合条件,结束J0Q哈希力量 | 通用人工智能文库

如果不符合,增加计数器,重复步骤 3-4J0Q哈希力量 | 通用人工智能文库

Hashcash 原始的实现要求一个哈希的前 20 位必须是 0 , 但在比特币系统中算 0 的位数为动态变化,保证每 10 分钟生成一个块。在编码实现时,我们需要把公开数据(在比特币中取区块头)加 nonce 做哈希运算,然后和设定的难度比较,小于难度值则认为运算正确。J0Q哈希力量 | 通用人工智能文库

...J0Q哈希力量 | 通用人工智能文库

// Run performs a proof-of-workJ0Q哈希力量 | 通用人工智能文库

func (pow *ProofOfWork) Run() (int, []byte) {J0Q哈希力量 | 通用人工智能文库

    var hashInt big.IntJ0Q哈希力量 | 通用人工智能文库

    var hash [32]byteJ0Q哈希力量 | 通用人工智能文库

    nonce := 0J0Q哈希力量 | 通用人工智能文库

    fmt.Printf("Mining a new block")J0Q哈希力量 | 通用人工智能文库

    for nonce < maxNonce {J0Q哈希力量 | 通用人工智能文库

        data := pow.prepareData(nonce)J0Q哈希力量 | 通用人工智能文库


J0Q哈希力量 | 通用人工智能文库

        hash = sha256.Sum256(data)J0Q哈希力量 | 通用人工智能文库

        fmt.Printf("\r%x", hash)J0Q哈希力量 | 通用人工智能文库

        hashInt.SetBytes(hash[:])J0Q哈希力量 | 通用人工智能文库

        if hashInt.Cmp(pow.target) == -1 {J0Q哈希力量 | 通用人工智能文库

            breakJ0Q哈希力量 | 通用人工智能文库

        } else {J0Q哈希力量 | 通用人工智能文库

            nonce  J0Q哈希力量 | 通用人工智能文库

        }J0Q哈希力量 | 通用人工智能文库

    }J0Q哈希力量 | 通用人工智能文库

    fmt.Print("\n\n")J0Q哈希力量 | 通用人工智能文库


J0Q哈希力量 | 通用人工智能文库

    return nonce, hash[:]J0Q哈希力量 | 通用人工智能文库

}J0Q哈希力量 | 通用人工智能文库

股权证明 PoSJ0Q哈希力量 | 通用人工智能文库

PoS 试图解决 PoW 中大量资源被浪费的缺点。它的安全性不是来自矿机的性能,而是来自提高经济损失的经济价值。J0Q哈希力量 | 通用人工智能文库

区块链维护一个验证人的集合,验证者轮流对块提名并投票,每个验证者的投票权重取决于其存款的大小。 持币的节点通过发送某种特定类型的交易把币作为锁定的保障金之后成为一个验证者,然后区块链当前有效的验证者基于某种共识算法产生并确认一个新块。J0Q哈希力量 | 通用人工智能文库

共识算法通过奖励验证者提高矿工的积极性,从算法层面可把这些共识算法分为:J0Q哈希力量 | 通用人工智能文库

基于链的 PoS:在固定的时间周期内随机选定一个验证者并赋权于它新建一个块。新块(包含上个块的哈希值)被追加到当前最长链的父区块上。J0Q哈希力量 | 通用人工智能文库

拜占庭容错的 PoS:基于BFT的PoS协议伪随机的安排一个验证者在多轮投票的过程中提出一个区块。但是,提交和最终确认的区块取决于大多数验证者的投票(所有验证者中2/3的验证者在提交的区块中签名)J0Q哈希力量 | 通用人工智能文库

当前实现了 PoS 的协议有 Casper 和 Tendermint ,他们最大的不同点如下:J0Q哈希力量 | 通用人工智能文库

这里比较简单的回答是 Casper 重点关注活跃度(可用性)和可以接受相对不实时的安全(正确性)。虽然 Tendermint 是一个伟大的项目,但他的缺点是,如果检查点没有得到三分之二的投票,那么链出块将会停止。这就是为什么以太坊选择在 Casper 上做工作而不是使用 Tendermint 的原因。J0Q哈希力量 | 通用人工智能文库

Tendermint是基于拜占庭容错的PoS设计;Casper 有两种实现方式:J0Q哈希力量 | 通用人工智能文库

CTFG (由Vlad Zamfir带领研究的Casper the Friendly Ghost)基于链的 PoS 设计J0Q哈希力量 | 通用人工智能文库

CFFG (由Vitalik Buterin带领研究Casper the Friendly Finality Gadget)则混合了 PoW 和 PoSJ0Q哈希力量 | 通用人工智能文库

开源代码J0Q哈希力量 | 通用人工智能文库

Decred daemon in Go (golang) DCR采用 PoW 和 PoS 混合的方式进行挖矿J0Q哈希力量 | 通用人工智能文库

Tendermint Core (BFT Consensus) in Go Tendermint 主要包含两个主要的技术:区块链共识引擎和通用的应用接口。J0Q哈希力量 | 通用人工智能文库

参考阅读J0Q哈希力量 | 通用人工智能文库

一种权益证明设计哲学J0Q哈希力量 | 通用人工智能文库

用 Go 构建一个区块链 -- Part 2: 工作量证明J0Q哈希力量 | 通用人工智能文库

共识算法的比较:Casper vs TendermintJ0Q哈希力量 | 通用人工智能文库

Ethereum Casper 101 | 初识以太坊 CasperJ0Q哈希力量 | 通用人工智能文库



收录源追溯链接或暂略


本文收录后固定可引用URL链接
    http://www.haxililiang.com/jishu/rumen/13618.html


☉ 文库同一主题内容智能推荐 ☉
哈希力量 ☉ 人机智能科普文库