精华内容
下载资源
问答
  • 2021-06-05 16:36:59

    概念

           全称为Proof Of Work,又叫工作量证明。POW是最早的共识机制。POW是指工作者通过一定的工作量,提供一个能被大多数验证者快速验证的答案,从而得到奖励的机制。

    原理

    讲原理之前,先给大家普及两个概念:难度值和nonce

    难度值

           难度值就是矿工挖矿成功的难度成程度,那这个是怎么判断的呢?我们先学习一个公式:
            target值 = 最大目标值 / 难度值
            其中最大目标值是固定的,出块之前,区块链网络设置了一个target值,target值越低,生成有效hash的集合就越小,生成有效hash就越困难。当前出块难度值,它决定了大概需要经过多少次哈希运算才能产生一个合法的区块。出块之前,区块链网络设置了一个target值,target值越低,生成有效hash的集合就越小,生成有效hash就越困难。

    nonce

           nonce值是什么呢?它就是一个随机数,系统区块工作证明的参数。由于给定的一组数据只能生成一个hash,矿工如何确保他们生成的hash小于target?它们通过添加一个称为nonce的整数(number only used once )来改变输入的数据,一旦找到一个有效的hash,它就被广播到网络中,同时区块被添加到区块链中,找到这个nonce整数的矿工就能获得奖励。

    原理

           上面两个概念了解了之后呢,原理其实就很容易理解了。pow机制的原理其实就是:系统设定好挖矿难度(比特币2016个块之后重新计算,以太坊每次生成区块都重新计算),然后矿工开始工作出块,矿工每次出块都是nonce从1开始递增进行寻找可用的nonce值,直到找到符合规则、可用的hash为止,最先找到的矿工可获得挖矿奖励。

    源码解读

    理论我们讲的差不多了,大家坐稳扶好,接下来直接上代码进行分析,一口气读完舒适感最佳。

    比特币
    static bool GenerateBlock(ChainstateManager& chainman, CBlock& block, uint64_t& max_tries, unsigned int& extra_nonce, uint256& block_hash)
    {
    	//  区块hash置空
        block_hash.SetNull();
    
        {
            LOCK(cs_main);
            CHECK_NONFATAL(std::addressof(::ChainActive()) == std::addressof(chainman.ActiveChain()));
            IncrementExtraNonce(&block, chainman.ActiveChain().Tip(), extra_nonce);
        }
    
        CChainParams chainparams(Params());
    
    	// 获取可用nonce值
        while (max_tries > 0 && block.nNonce < std::numeric_limits<uint32_t>::max() && !CheckProofOfWork(block.GetHash(), block.nBits, chainparams.GetConsensus()) && !ShutdownRequested()) {
            ++block.nNonce;
            --max_tries;
        }
        if (max_tries == 0 || ShutdownRequested()) {
            return false;
        }
        if (block.nNonce == std::numeric_limits<uint32_t>::max()) {
            return true;
        }
    
        std::shared_ptr<const CBlock> shared_pblock = std::make_shared<const CBlock>(block);
        if (!chainman.ProcessNewBlock(chainparams, shared_pblock, true, nullptr)) {
            throw JSONRPCError(RPC_INTERNAL_ERROR, "ProcessNewBlock, block not accepted");
        }
    
        block_hash = block.GetHash();
        return true;
    }
    

    计算nonce值的那一段我们单独进行分析

    while (max_tries > 0 && block.nNonce < std::numeric_limits<uint32_t>::max() && !CheckProofOfWork(block.GetHash(), block.nBits, chainparams.GetConsensus()) && !ShutdownRequested()) {
        ++block.nNonce;
        --max_tries;
    }
    

            1.首先判断是否达到最大重试次数MaxTries > 0 ,maxTries默认值DEFAULT_MAX_TRIES为1000000,达到最大重试次数未获得可用nonce,则该矿工此次挖矿失败。

    if (max_tries == 0 || ShutdownRequested()) {
       return false;
    }
    

            2.判断nNonce < std::numeric_limits<uint32_t>::max(),即控制nonce在一次挖矿作业中的随机次数不得超过uint32的最大值。如果nNonce值修改的次数已经超过了规定的次数还没有找到工作量证明的一个解,则废弃这个候选区块,重新回到前面创建一个新的候选区块。

    if (block.nNonce == std::numeric_limits<uint32_t>::max()) {
        return true;
    }
    

            3.执行CheckProofOfWork,源码如下

    bool CheckProofOfWork(uint256 hash, unsigned int nBits, const Consensus::Params& params)
    {
        bool fNegative;
        bool fOverflow;
        arith_uint256 bnTarget;
    
        bnTarget.SetCompact(nBits, &fNegative, &fOverflow);
    
        // Check range
        if (fNegative || bnTarget == 0 || fOverflow || bnTarget > UintToArith256(params.powLimit))
            return false;
    
        // Check proof of work matches claimed amount
        if (UintToArith256(hash) > bnTarget)
            return false;
    
        return true;
    }
    

    上面函数大概意思就是根据nBits难度值获取到的target,是在可用区间内的,并且计算得出的hash小于target值,则本次hash为可用hash值。
            4.未挖矿成功则一直循环计算,直到找到可用nonce值或上述1、2、3中某一步骤不符合while循环条件为止。

    以太坊

    待整理

    优点

    去中心化

    将记账权公平的分派到所有节点,记账权是通过看节点的PoW, 谁挖矿最快, 谁就能拿到这个矿

    安全

    破解系统至少需要攻击51%的节点,成本高,耗时长

    去信任化

    节点之间无需信任保证,通过零知识证明快速验证安全性

    缺点

    出块速度慢,共识时间长

           顾名思义,工作量证明需要大量的工作计算hash,花费的共识时间长,出块速度慢。比如比特币出块时间10分钟,每秒钟支持最大交易数仅为7笔。

    能耗大

           挖矿需要大量的哈希运算,需要电力和各种算力资源,而且找到合适的哈希值实际上并没有其他的作用

    算力集中化

           由于矿池的出现,导致现在算力集中在几家,BTC.COM,Antpool,ViaBTC前三大矿池,已经占到了全网52.4%的算力水平。

    思考

    我们看完文章就应该知道,pow的初衷就是它的破解复杂度,安全性高,pow的攻击破解需要攻击51%的节点才可能实现。但是算力集中化的出现,导致前几大矿池拥有的算力超过了51%,可能会出现他们联合起来恶意出块的现象,违背了pow的初衷。

    比特币源码链接:
    https://github.com/bitcoin/bitcoin

    更多相关内容
  • 以太坊共识机制

    千次阅读 2018-04-25 23:01:00
    以太坊常用的三种共识机制(算法):PoW(Proof of Work),工作量证明机制;PoS(Proof of Stake):股权证明机制;DPoS(Delegated Proof of Stake),授权股权证明机制。这些共识机制都能在现实生活中找到对应的经济模型,吸引...

    以太坊常用的三种共识机制(算法):PoW(Proof of Work),工作量证明机制;PoS(Proof of Stake):股权证明机制;DPoS(Delegated Proof of Stake),授权股权证明机制。这些共识机制都能在现实生活中找到对应的经济模型,吸引人们参与其中,组成安全网络,并有序运行。但是,长期来看它们各有优缺点,都存在失败的可能。

    下面我们看看这些机制的演进过程。

    PoW(Proof of Work):工作量证明机制

    1.基本原理

    这是比特币采用的共识机制,也是最早的。理解起来,很简单,就是“按劳取酬”,你付出多少劳动(工作),就会获得多少报酬(比特币等加密货币)。在网络世界里,这里的劳动就是你为网络提供的计算服务(算力x时长),提供这种服务的过程就是“挖矿”。

    那么“报酬”怎么分配呢?假如是真的矿藏,显然在均匀分布的前提下,人们“挖矿”所得的比重与各自提供的算力成正比,通俗一点就是,能力越强获得越多。

    2.优点

    机制本身当然很复杂,有很多细节,比如:挖矿难度自动调整、区块奖励逐步减半等,这些因素都是基于经济学原理,能吸引和鼓励更多人参与。

    理想状态,这种机制,可以吸引很多用户参与其中,特别是越先参与的获得越多,会促使加密货币的初始阶段发展迅速,节点网络迅速扩大。在Cpu挖矿的时代,比特币吸引了很多人参与“挖矿”,就是很好的证明。

    通过“挖矿”的方式发行新币,把比特币分散给个人,实现了相对公平(比起那些不用挖矿,直接IPO的币要公平的多)。

    3.缺点

    一是,算力是计算机硬件(Cpu、Gpu等)提供的,要耗费电力,是对能源的直接消耗,与人类追求节能、清洁、环保的理念相悖。不过,如果非要给“加密货币”找寻“货币价值”的意义,那么这个方面,应该是最有力的证据。

    二是,这种机制发展到今天,算力的提供已经不再是单纯的CPU了,而是逐步发展到GPU、FPGA,乃至ASIC矿机。用户也从个人挖矿发展到大的矿池、矿场,算力集中越来越明显。这与去中心化的方向背道而驰,渐行渐远,网络的安全逐渐受到威胁。有证据证明Ghash(一个矿池)就曾经对赌博网站实施了双花攻击(简单的说就是一笔钱花两次)。

    三是,比特币区块奖励每4年将减半,当挖矿的成本高于挖矿收益时,人们挖矿的积极性降低,会有大量算力减少,比特币网络的安全性进一步堪忧。

    PoS(Proof of Stake):股权证明机制。

    1.基本原理

    这是点点币(PPC)的创新。没有挖矿过程,在创世区块内写明了股权分配比例,之后通过转让、交易的方式(通常就是IPO),逐渐分散到用户手里,并通过“利息”的方式新增货币,实现对节点的奖励。

    简单来说,就是一个根据用户持有货币的多少和时间(币龄),发放利息的一个制度。现实中最典型的例子就是股票,或者是银行存款。如果用户想获得更多的货币,那么就打开客户端,让它保持在线,就能通过获得“利息”获益,同时保证网络的安全。

    2.优点

    一是节能。不用挖矿,不需要大量耗费电力和能源。

    二是更去中心化。首先说,去中心化是相对的。相对于比特币等PoW类型的加密货币,PoS机制的加密货币对计算机硬件基本上没有过高要求,人人可挖矿(获得利息),不用担心算力集中导致中心化的出现(单用户通过购买获得51%的货币量,成本更高),网络更加安全有保障。

    三是避免紧缩。PoW机制的加密货币,因为用户丢失等各种原因,可能导致通货紧缩,但是PoS机制的加密货币按一定的年利率新增货币,可以有效避免紧缩出现,保持基本稳定。比特币之后,很多新币采用PoS机制,很多采用工作量证明机制的老币,也纷纷修改协议,“硬分叉”升级为PoS机制。

    3.缺点

    纯PoS机制的加密货币,只能通过IPO的方式发行,这就导致“少数人”(通常是开发者)获得大量成本极低的加密货币,在利益面前,很难保证他们不会大量抛售。因此,PoS机制的加密货币,信用基础不够牢固。为解决这个问题,很多采用PoW+PoS的双重机制,通过PoW挖矿发行加密货币,使用PoS维护网络稳定。或者采用DPoS机制,通过社区选举的方式,增强信任。

    DPoS(Delegated Proof of Stake):授权股权证明机制

    1.基本原理

    这是比特股(BTS)最先引入的。比特股首次提出了去中心化自治公司(DACs)的理念。比特股的目的就是用于发布DACs。这些无人控制的公司发行股份,产生利润,并将利润分配给股东。实现这一切不需要信任任何人,因为每件事都是被硬编码到软件中的。通俗点讲就是:比特股创造可以盈利的公司(股份制),股东持有这些公司的股份,公司为股东产生回报。无需挖矿。

    对于PoS机制的加密货币,每个节点都可以创建区块,并按照个人的持股比例获得“利息”。DPoS是由被社区选举的可信帐户(受托人,得票数排行前101位)来创建区块。为了成为正式受托人,用户要去社区拉票,获得足够多用户的信任。用户根据自己持有的加密货币数量占总量的百分比来投票。DPoS机制类似于股份制公司,普通股民进不了董事会,要投票选举代表(受托人)代他们做决策。

    这101个受托人可以理解为101个矿池,而这101个矿池彼此的权利是完全相等的。那些握着加密货币的用户可以随时通过投票更换这些代表(矿池),只要他们提供的算力不稳定,计算机宕机、或者试图利用手中的权力作恶,他们将会立刻被愤怒的选民门踢出整个系统,而后备代表可以随时顶上去。

    2.优点

    一是,能耗更低。DPoS机制将节点数量进一步减少到101个,在保证网络安全的前提下,整个网络的能耗进一步降低,网络运行成本最低。

    二是,更加去中心化。目前,对于比特币而言,个人挖矿已经不现实了,比特币的算力都集中在几个大的矿池手里,每个矿池都是中心化的,就像DPoS的一个受托人,因此DPoS机制的加密货币更加去中心化。PoS机制的加密货币(比如未来币),要求用户开着客户端,事实上用户并不会天天开着电脑,因此真正的网络节点是由几个股东保持的,去中心化程度也不能与DPoS机制的加密货币相比。

    三是,更快的确认速度。比如,亿书使用DPoS机制,每个块的时间为10秒,一笔交易(在得到6-10个确认后)大概1分钟,一个完整的101个块的周期大概仅仅需要16分钟。而比特币(PoW机制)产生一个区块需要10分钟,一笔交易完成(6个区块确认后)需要1个小时。点点币(PoS机制)确认一笔交易大概也需要1小时。

    3.缺点

    前几天,比特股的作者发表了一篇被广泛认为很傻的文章(见参考),预言DAO(去中心化组织)和DAC(去中心化公司)都将失败。文中披露了大量实践经验,基本算是DPoS的问题。概括起来,主要是:

    一是投票的积极性并不高。绝大多数持股人(90%+)从未参与投票。这是因为投票需要时间、精力以及技能,而这恰恰是大多数投资者所缺乏的。

    二是对于坏节点的处理存在诸多困难。社区选举不能及时有效的阻止一些破坏节点的出现,给网络造成安全隐患。

    原文由网友imfly编写,最早发布于技术社区github

    分享两个以太坊开发教程:

    1.以太坊 DApp 实战开发入门

    2.去中心化电商 DApp 实战开发

    转载于:https://my.oschina.net/u/3837977/blog/1801233

    展开全文
  • 以太坊共识机制

    万次阅读 2018-08-13 14:50:49
    在开始之前,我们补充一点基础知识。   第一个概念是哈希。简单理解,哈希是一个函数。...几乎任何加密货币都会用到哈希算法,以太坊采用的哈希算法是ethash算法。   第二个补充知识是,以太坊的区块结构。...

    在开始之前,我们补充一点基础知识。

     

    第一个概念是哈希。简单理解,哈希是一个函数。它的作用是将任意长度的数据作为输入,转变为固定长度的一个字符串作为输出。这个函数有两个主要特点

    1. 过程不可逆
    2. 对输入做微小改动,输出就会完全不一样。

    哈希函数有好多种,但都满足上面的特点。几乎任何加密货币都会用到哈希算法,以太坊采用的哈希算法是ethash算法

     

    第二个补充知识是,以太坊的区块结构。一个以太坊区块包含区块头和区块内容

    区块内容就是区块所包含的交易列表。而区块头中包含了如下信息:

    前一个区块的哈希、区块序号(n)、随机数(nonce)、目标值(target)、时间戳(timestamp)、难度值(difficulty)、矿工地址(address)等内容

     

    好了,介绍完上述基础,我们正式开始本文的内容。

     

    以太坊共有四个阶段,即Frontier(前沿)、Homestead(家园)、Metropolis(大都会)、Serenity(宁静)。以太坊前三个阶段采用的是POW共识机。第四个阶段将采用自己创建的POS机制,名为Casper投注共识,这种机制增加了惩罚机制,并基于POS的思想在记账节点中选取验证人。

     

    首先介绍以太坊前三阶段使用的POW机制。我们在上节课中讲到,POW机制的基本原理是下面这个公式:

    计算值<目标值

     

    下面我们具体来看。在以太坊中

    f(h, n) <M / d

     

    我们先看目标值

    M / d

    其中M是一个常数,数值非常非常大,取2^256-1

    d是当前区块的难度值,

    d=pd + pd//2048*max( 1-(t-pt)//10,-99 ) + int(  2** (n//100000-2)  )

    其中,pd:前一个区块的难度值

    t:当前区块的时间戳

    pt:前一个区块的时间戳

    n:当前区块的区块序号

    其中//为整数除法运算符,a//b,即先计算a/b,然后取不大于a/b的最大整数。

    调整难度的目的,是为了使挖矿时间保持在10-19s期间内,如果低于10s增大挖矿难度,如果大于19s将减小难度。另外,计算出的当前区块难度不应低于以太坊创世区块难度,即131072

     

    难度系数变大,目标值M / d就越小,所以要计算出满足要求的计算值就越难,这就是难度系数的意思。

     

    再看计算值f(h, n)f()这个函数表示一个概念函数,代表一系列的复杂运算。其中输入参数,hn分别是,区块头Header的哈希值、以及Header中的随机数Nonce

    计算机的整个挖矿过程,大致可以认为是计算机不断调整尝试Nonce的值,再将计算出的f(h, n)与目标值比较。这就是工作量证明,证明你一直在进行计算工作。因为我们默认,只有你在不算尝试计算,才能找到那个对的nonce。虽然这其中有一定的运气成分,但我们现实生活中也有很多地方是看结果来证明你的工作量,这很好理解啊,你拿到了文凭,我就默认你花过时间学习了。

    这就是以太坊的pow过程,具体的源代码,详见文末。

     

    好,我们接下来看以太坊第四阶段的共识机制casper。这就是pos的一种。但它有自己的特点:

    在有些情况下,矿工的币不但不会增加,反而会减少。为什么呢,我们来看看

     

    在casper共识机制中,矿工要拿出保证金对他认为的大概率胜出的区块进行下注。如果赌对了,他们就可以拿回保证金外加区块中的交易费用,也许还会有一些新发的货币;如果下注没有迅速达成一致,他们只能拿回部分保证金,相当于损失了一些保证金。因此数个回合之后矿工的下注分布就会收敛。一旦结果出来,那些选错的矿工就会输掉他们的保证金。此外如果矿工过于显著的改变下注,例如先是赌某个块有很高概率胜出,然后又改赌另外一个块有高概率胜出,他将被严惩。如此朝三暮四的人在区块链中也是不受欢迎的啊。这条规则确保了矿工只有在非常确信其他人也认为某个块有高概率胜出时才下注。我们通过这个机制来确保不会出现下注先收敛于一个结果然后又收敛到另外一个结果的情况。(将该段的情况简单体现在一个PPT页面里)。这就是casper的大致工作机理,由于以太坊目前还没有发布第四个版本,更多细节以后有机会再交流。

     

     

     

    源代码:

    func (ethash *Ethash) mine(block *types.Block, id int, seed uint64, abort chan struct{}, found chan *types.Block) {

        // Extract some data from the header

        var (

            header = block.Header()

            hash   = header.HashNoNonce().Bytes()

            //target,即M / d,即(2^256-1)/Difficulty

            target = new(big.Int).Div(maxUint256, header.Difficulty)

     

            number  = header.Number.Uint64()

            dataset = ethash.dataset(number)

        )

        // Start generating random nonces until we abort or find a good one

        var (

            attempts = int64(0)

            nonce    = seed

        )

        logger := log.New("miner", id)

        logger.Trace("Started ethash search for new nonces", "seed", seed)

        for {

            select {

            case <-abort:

                // Mining terminated, update stats and abort

                logger.Trace("Ethash nonce search aborted", "attempts", nonce-seed)

                ethash.hashrate.Mark(attempts)

                return

     

            default:

                // We don‘t have to update hash rate on every nonce, so update after after 2^X nonces

                attempts++

                if (attempts % (1 << 15)) == 0 {

                    ethash.hashrate.Mark(attempts)

                    attempts = 0

                }

                //hashimotoFullRAND(h, n)所代表的一系列的复杂运算

                digest, result := hashimotoFull(dataset, hash, nonce)

                //result满足RAND(h, n)  <=  M / d

                if new(big.Int).SetBytes(result).Cmp(target) <= 0 {

                    // Correct nonce found, create a new header with it

                    header = types.CopyHeader(header)

                    header.Nonce = types.EncodeNonce(nonce)

                    header.MixDigest = common.BytesToHash(digest)

     

                    // Seal and return a block (if still needed)

                    select {

                    case found <- block.WithSeal(header):

                        logger.Trace("Ethash nonce found and reported", "attempts", nonce-seed, "nonce", nonce)

                    case <-abort:

                        logger.Trace("Ethash nonce found but discarded", "attempts", nonce-seed, "nonce", nonce)

                    }

                    return

                }

                //不断变更Nonce

                nonce++

            }

        }

    }

    //代码位置consensus/ethash/sealer.go

     

    想了解更多?关注我们就够了。

    公众号:ipfscom
    微信(Q):18191727
    Q群:71789361
    微信扫一扫,加入知识星球


     

    展开全文
  • 18 以太坊共识机制

    2021-01-08 04:26:18
    以太坊共识机制 以太坊把出块时间降低到十几秒,但是这样也带来了很多问题,较频繁的出现分叉,这对于共识协议来说有什么影响呢? 在比特币中,只有最长合法链的中才是合法链, GHOST协议:假如一条区块链没有成为...
  • 以太坊共识协议

    千次阅读 2021-09-26 17:32:01
    以太坊如何达成共识 ...与比特币相同,以太坊目前也是采用 pow 共识机制,(但以太坊声称以后会转为pos),依然是链式结构,所以同样采用最长合法链规则。 Ghost 协议 下面这两篇文章介绍的很详细,可参考: ...

    以太坊如何达成共识

    1.pow共识机制
    2.最长合法链
    3.Ghost 协议

    前言

    我们知道,以太坊出块时间约为15秒,出块时间加快,必然会产生更多的分叉,以太坊采用ghost 协议来解决大量分叉的问题。
    与比特币相同,以太坊目前也是采用 pow 共识机制,(但以太坊声称以后会转为pos),依然是链式结构,所以同样采用最长合法链规则。

    Ghost 协议

    下面这两篇文章介绍的很详细,可参考:
    https://zhuanlan.zhihu.com/p/135297442.
    https://blog.csdn.net/t46414704152abc/article/details/81191804.

    在这里插入图片描述
    Zarten1、Zarten2、Zarten3被称为Zarten_a的叔父块,如果叔父块被接纳,只有叔父块会得到好处(奖励),叔父块后面挖的区块不会得到好处
    在这里插入图片描述
    叔父区块特点及奖励:
    1.某个区块最多只能接纳两个区块,也可以不接纳任何叔父块
    2.叔父块必须是区块的前 2层~7层的祖先的直接子块
    3.被接纳过的叔父区块不能被重复接纳
    4.接纳了n个叔父块的区块,可以获得出块奖励的 n * 1/32
    5.被引用了的叔父块,随着距离越远,得到的奖励递减1/8

    总结

    以太坊通过pow共识机制,最长合法链原则,ghost协议来使得全网节点达成共识。以太坊的成功,进一步证明了工作量证明机制的安全有效性,同时智能合约的引入使得区块链成为更有魅力的科学技术。

    展开全文
  • 选择2,配置新的创世区块,之后的选项1是创建新的创世区块,2是导入一个已经存在的配置,这里选择1 这里的选项是选择该链所用的共识机制,第一个是以太坊的公链共识机制PoW,显然不适合私链或者联盟链,所以这里选择...
  • 一些其他问题三、如果我想修改POA共识机制,把它改成质押(矿机)应该怎么做?1.如何设计惩罚机制2.如何设计激励机制3.质押机制怎么和POA绑定——块包含着质押的信息4.代码如何修改代码如何修改——专注于...
  • ①本人想要把以太坊的链层改为dag的形式,使他能够并行加入块,请问是在以太坊代码中哪个文件下修改 ②想要修改共识机制该在哪个文件下修改,想把其他共识运用在以太坊
  • 摆脱现实物质因素,PoS才是去中心化世界的未来。本文来自Bankless,原文作者:David Hoffman,由 Odaily 星球日报...这次即将到来的网络升级将从以太坊移除 PoW,并以目前守护信标链的 PoS 共识机制取而代之。这种...
  • 文章目录第九章一、分片技术二、雷电网络三、Casper-下一代以太坊共识协议总结 一、分片技术 分片是为了解决所有区块链面临的扩展性问题,将在以太坊2.0实现。总体来说,分片的作用是让以太坊从网络上的每个节点都...
  • 5月20日Vitalik Buterin在ETH Shanghai峰会上表示,目前以太坊2.0正在进行最后的网络测试,合并工作将最早于在今年8月开始。各种证据表明大家期待已久的以太坊2.0升级版即将推出。多阶段升级旨在通过对网络基础设施...
  • 2014年9月份我开始了研究和设计以太坊POS(proof-of-stake, 权益证明)架构的工作。目前Vitalik和我对于Serenity阶段的POS协议应该长什么样已经有了许多共识,只剩一些细节方面的分歧。我们称它为友善的小精灵Casper...
  • 以太坊概述

    2021-01-07 21:07:38
    以太坊在系统设计上,针对比特币运行过程中出现的一些问题进行了改进,比如说出块时间调整至15s,这是基于ghost协议的共识机制;另外一个改进是挖矿使用的mining puzzle,比特币的mining puzzle是计算密集型的,比拼...
  • 以太坊目前所使用的共识算法介绍

    万次阅读 2019-05-08 12:53:30
    完整且正确的说法应该是这样的,这其实也是PoW共识机制以太坊的关系。首先以太坊的源码是分有阶段,不同阶段所使用的共识算法要分开来说。所分的阶段有: Frontier(前沿)。这个阶段的版本是以太坊的基础,此时...
  • 21 以太坊权益证明

    2021-01-08 00:46:12
    比特币和以太坊目前都是使用的基于工作量的证明,这种共识机制受到了普遍的批评——浪费电 以下这张图表示比特币的能耗随时间的曲线 以及 具体的数字 以下是以太坊的能耗曲线 以太坊与比特币相比能耗要少很多,这...
  • 本人版暂名为《区块链以太坊DApp实战开发》一书,即将完成,是一本废话少、讲解通俗、实操性强的技术书籍。本文为书中的小节的部分内容。想涉足这个区块链领域技术开发的同僚可以留意我的博客,届时会发布。 目录 ...
  • 以太坊共识DAG笔记

    千次阅读 2018-12-30 21:02:03
    以太坊共识机制是 PoW(Proof of Work 工作量证明机制),使用的算法是Ethash,这种算法是对 Dagger-Hashimoto算法的改良版本,流程大概如下 : 1.对于每一个块,首先计算一个种子(seed),该种子只和当前块的信息...
  • 安装以太坊客户端Geth(美图技术团队开源的基于DPos共识机制的,版本是1.7.4-stable) 上传美图技术团队的Geth的源码文件到/data/blockchain,并解压 unzip go-ethereum-master.zip # 更新依赖 apt-get install -y ...
  • 以太坊白皮书.pdf

    2020-04-16 12:21:12
    景,提出典型的区块链技术架构,并分析了共识机制、数据存储、网络 协议、加密算法、隐私保护和智能合约等6类核心关键技术,以及区块链 治理和安全。最后,结合国内外发展趋势,提出了我国区块链技术发展 路线图建议...
  • 以太坊POA共识算法解析

    万次阅读 2021-10-21 10:24:24
    1.clique中的概念和定义 ... BLOCK_PERIOD: 出块时间, 默认是15s UNCLE_HASH: 总是Keccak256(RLP([])),因为没有uncle SIGNER_COUNT: 每个block都有一个signers的数量 SIGNER_LIMIT: 等于(SIGNER_COUNT / 2) + 1...
  • 以太坊共识引擎源码分析

    千次阅读 2018-06-11 22:46:05
    这一篇分析以太坊共识引擎,先看一下各组件之间的关系: Engine接口定义了共识引擎需要实现的所有函数,实际上按功能可以划分为2类: 区块验证类:以Verify开头,当收到新区块时,需要先验证区块...
  • 在目前的工作量证明共识机制的条件下,矿工每次创建新区块并将其添加到区块链中时都会赢得奖励。但当以太坊难度炸弹设置为“引爆”时,矿工通过挖矿获得奖励的难度将成倍增加。今天我们就来聊聊为什么要引入难度炸弹...
  • 以太坊的POS共识机制

    千次阅读 2018-03-19 20:50:56
    Original post by Vitalik Buterin, on December 28th, 2015特别感谢Vlad Zamfir,他提出了按块达成共识这个想法,并且说服我认同它和Casper的其它一些核心想法的价值;以及Vlad Zamfir和Greg Meredith,为他们在这...
  • 以太坊共识文件夹笔记 一、文件结构: 二、各文件作用 api.go:API是一个面向用户的rpcapi,允许控制授权证明方案的签名者和投票机制。 clique.go:包含实现了权威证明共识引擎。 snapshot.go: clique_test.go: ...
  • 以太坊 GHOST协议(三)

    2022-01-09 18:46:19
    以太坊中的共识机制GHOST协议(Greedy Heaviest Observed Subtree),以太坊把出块时间降到了十几秒,这对于提高系统的throughput(吞吐量)和降低反应时间来说,都是很有帮助的,跟比特币的10分钟的出块时间相比,...
  • 信标链是以太坊 2.0 系统的核心,然而针对该系统的大部分描述都过于技术化、针对性过强或者...阅读本文之前,我们假设读者对以太坊和比特币有不错的基础知识,并对权益证明 (Proof of Stake) 这一共识机制有一定了解。
  • 作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 掘金:...以太坊 2.0 参与者 区块的生命周期 优化共识算法 2.0 共识的流...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,820
精华内容 5,928
关键字:

以太坊的共识机制