精华内容
下载资源
问答
  • 以太坊共识机制
    千次阅读
    2018-04-25 23:01:00

    以太坊常用的三种共识机制(算法):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,显然不适合私链或者联盟链,所以这里选择...

    一、环境

    • 操作系统:MacOS 10.15以上版本(win一样)
    • 阿里云服务器(ubuntu 16.04)

    二、准备环节——阿里云服务器相关操作

    1.购买云服务器(略过)

    image-20201224211007792

    2.更改云服务器连接密码,点击右上角的三个小点,然后点击重置实例密码

    image-20201224211134465

    输入并牢记密码,通过终端远程登录时需要用到

    image-20201224211235459

    3.点击配置安全组配置安全组规则,点击右侧的配置规则

    image-20201224211427406

    点击快速添加,点击SSH(22),方便后续终端远程连接服务器

    image-20201224211538351

    4.打开终端,输入ssh root@xxx.xxx.xxx.xxx(服务器的公网IP)

    image-20201224211659759

    按要求输入密码,成功连接并控制云服务器

    image-20201224211747538

    三、ubuntu中下载以太坊源码

    1.更新软件包信息

    apt-get upadate

    2.添加ppa到当前库中并且自动导入公钥

    apt-get install software-properties-common

    add-apt-repository -y ppa:ethereum/ethereum

    add-apt-repository -y ppa:ethereum/ethereum-dev

    apt-get update

    3.安装以太坊

    apt-get install ethereum

    image-20201224212018402

    4.查看版本号确认安装成功

    image-20201224212132131

    四、以太坊账户创建

    ​ 搭建以太坊私链之前要先创建相应的账户,可以创建在任意位置创建任意数量的账户,在这里举一个简单的例子,在云服务器上创建一个账户,在自己的电脑上创建三个账户。

    1.连接云服务器,创建一个用来装节点的文件夹

    mkdir MyEth(你喜欢的名字,什么都行)

    image-20201224212429508

    2.进入文件夹中

    cd MyEth

    image-20201224212516579

    3.使用命令创建第一个账户,输入命令后,按要求输入两次密码,即可得到该账户的公钥地址,牢记

    geth --datadir node1/data account new

    image-20201224212710013

    4.在自己的本地电脑上,创建一个文件夹,同样用来装节点信息,推荐和云服务器上的文件夹名字相同

    image-20201224212825930

    5.同样的方式,通过终端进入该文件夹,创建三个账户 node2,node3,node4

    cd MyEth

    geth --datadir node2/data account new

    geth --datadir node3/data account new

    geth --datadir node4/data account new

    同样,牢记公钥地址,配置创始区块时需要

    五、配置创世区块

    以太坊的私链想要达成节点互连,有两个必要条件:

    1.创世区块配置文件相同

    2.有相同的ChainID

    我们通过已有的puppeth工具创建配置区块文件

    1.切换到云服务器中,在MyEth文件夹下,输入命令puppeth,输入该配置的名称,任意都行,此处我填写sdh

    image-20201224213552246

    填写之后,工具会检测该配置是否存在,如果不存在,第二个选项则是配置新的创世区块,否则是管理该配置,这里展示配置新创世区块的选项

    image-20201224213704416

    选择2,配置新的创世区块,之后的选项1是创建新的创世区块,2是导入一个已经存在的配置,这里选择1

    image-20201224213752479

    这里的选项是选择该链所用的共识机制,第一个是以太坊的公链共识机制PoW,显然不适合私链或者联盟链,所以这里选择2 Clique,该共识机制是基于PoA的,此处不详细解释

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxbfIVdb-1633176499175)(/Users/sundaohan/Library/Application Support/typora-user-images/image-20201224213843219.png)]

    这里是出块时间,没有特殊需求默认就行(直接回车或者打上15再回车都行)

    image-20201224214006727

    这里就比较重要了,是允许挖矿的账户,上一步我们创建了共四个账户,一个是在云服务器上的node1,和在本地的三个账户node2,node3,node4,我们可以选择一个或者多个当做挖矿节点,我这里选择了node3,填写完成以回车结束该选项

    image-20201224214314198

    这一部分是设置预置资金账号,这部分账号里可以有初始资金,这里我设置了node1和node3

    image-20201224214839557

    这一步选择是否给刚才设置的预置资金账号存点钱,yes就行

    image-20201224214930272

    这一步很重要,关系到能否互连,是设置chainID,如果两个节点想要互连,那么输入的chainID必须相同,输入一个能记住的号,最好大于5

    image-20201224214946493

    到这里创世区块配置就完成了,再出现的二号选项就变成了管理已经存在的配置,选择2进入管理界面

    image-20201224215113354

    选择2,将已经配置好的创世区块文件导出

    image-20201224215139505

    image-20201224215154172

    我这里报了错误,还没弄明白是为什么,但是并不影响使用,搞定后直接ctrl+c退出puppeth

    image-20201224215537367

    然后打开自己电脑的本地终端,输入以下命令将刚才已经导出的创世区块配置文件下载到本地电脑下的MyEth文件夹中

    scp root@8.131.78.39:/root/MyEth/sdh.json /Users/sundaohan/MyEth

    该命令的格式为

    scp root@xxx.xxx.xxx.xxx(云服务器公网IP) :/xx/xx/xx.xx(远程目录) 『空格』 /xxx/xxx/xxx(目标目录)

    image-20201224215904212

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dV3yEC17-1633176499185)(/Users/sundaohan/Library/Application Support/typora-user-images/image-20201224215922977.png)]

    可以看到该文件已经下载成功了

    至此,创世区块配置的准备工作已经全部完成

    六、初始化私有链

    回到云服务器终端上,在MyEth文件下,输入命令

    geth --datadir node1/data init sdh.json(创世区块配置文件名称)

    image-20201224220150933

    在自己电脑的本地文件夹下,也运行同样的命令,记得把node1改成相应节点的名字

    geth --datadir node2/data init sdh.json

    geth --datadir node3/data init sdh.json

    geth --datadir node4/data init sdh.json

    全部运行成功后,四个节点的初始化就完成了

    七、启动节点

    ​ 1.首先启动云服务器的节点,先切换到云服务器的MyEth文件夹下,运行如下命令

    geth --datadir node1/data --nodiscover --networkid 98512 --port 3000 console

    其中

    datadir:指定数据库和keystore密钥的数据目录

    nodiscover(重要):禁止节点发现,只允许手动添加节点,如果不写这个我们的私链可能会被别人发现,但是写了这个选项会增强链的隐蔽性,只能手动添加

    networkid: 网络标识符,这个在创世区块的配置时已经写定,所有想要加入这个私链中的节点都要写相同的网络标识符

    port:网卡监听端口,每个节点都要有这个端口号,默认是30303,保证每个节点使用的都不同

    还有很多其他选项,这里不再赘述

    命令输入成功后,node1就启动完毕了

    image-20201224234804316

    2.切换回自己的电脑终端,开启多个终端窗口,分别启动node2、node3、node4,命令与刚才相似

    geth --datadir node2/data --networkid 98512 --port 3001 console

    geth --datadir node3/data --networkid 98512 --port 3002 console

    geth --datadir node4/data --networkid 98512 --port 3003 console

    至此,节点已经全部启动

    八、连接

    ​ 节点启动后,开始进行连接操作,连接使用的admin.addPeer(encode)命令,首先在四个已经启动的节点下输入如下命令查看每个节点的encode值

    admin.nodeInfo

    第一行中的

    “enode://94900340edefd9f8b1d269682bea6df2a4394966b972026d930c50356e2b90a6f2de74beccab042324a81d108ea419d9336d889c261b8f0ce932a8b01206f8ed@127.0.0.1:3000?discport=0”

    即是节点的encode值,如果要连接的节点不在同一个网络下,比如我们启动的node1是在云服务器上,node2、node3、node4是在自己的电脑上,那么node2、node3、node4即在同一网络下,而node1与另外三个节点就不在同一节点下,此时如果想要使他们互连,就要将encode中127.0.0.1换成节点的真实的IP地址。我的云服务器公网地址是8.131.78.39,那我如果想要用node2连接node1,就要在node2的终端中输入

    admin.addPeer(“enode://94900340edefd9f8b1d269682bea6df2a4394966b972026d930c50356e2b90a6f2de74beccab042324a81d108ea419d9336d889c261b8f0ce932a8b01206f8ed@8.131.78.39:3000?discport=0”)

    如果输入正确,会返回true,但是并不代表已经连接上了

    image-20201224235801556

    此时切换到node1的节点终端,输入命令

    admin.peers

    可以看到所有已经连接上的节点,此时我们看到node2已经连接上了

    image-20201224235931943

    继续将剩下的节点连接,一条完整的基于PoA共识机制的私链就完成了,等到下次再开启节点时,他们会自动连接

    展开全文
  • 一些其他问题三、如果我想修改POA共识机制,把它改成质押(矿机)应该怎么做?1.如何设计惩罚机制2.如何设计激励机制3.质押机制怎么和POA绑定——块包含着质押的信息4.代码如何修改代码如何修改——专注于...
  • 以太坊的POS共识机制

    千次阅读 2018-03-19 20:50:56
    Original post by Vitalik Buterin, on December 28th, 2015特别感谢Vlad Zamfir,他提出了按块达成共识这个想法,并且说服我认同它和Casper的其它一些核心想法的价值;以及Vlad Zamfir和Greg Meredith,为他们在这...
  • 5月20日Vitalik Buterin在ETH Shanghai峰会上表示,目前以太坊2.0正在进行最后的网络测试,合并工作将最早于在今年8月开始。各种证据表明大家期待已久的以太坊2.0升级版即将推出。多阶段升级旨在通过对网络基础设施...
  • POW是最早的共识机制。POW是指工作者通过一定的工作量,提供一个能被大多数验证者快速验证的答案,从而得到奖励的机制。 原理 讲原理之前,先给大家普及两个概念:难度值和nonce 难度值     &...
  • ①本人想要把以太坊的链层改为dag的形式,使他能够并行加入块,请问是在以太坊代码中哪个文件下修改 ②想要修改共识机制该在哪个文件下修改,想把其他共识运用在以太坊
  • 目前以太坊中有两个公式算法的实现,分别为clique和ethash。其中clique是PoA共识的实现,ethash是PoW共识的实现,其相应的代码位于go-ethereum/consensus目录下。 PoW (ethash) PoW定义 PoW与PoA不同之处在于,PoW是...
  • 以太坊2.0的一个核心转变,就是共识机制由POW转向了POS。以太坊2.0权益证明的网络,不再是依靠矿工,而是依靠验证者来维护。验证者是以太坊2.0网络的主动参与者。用户可以质押ETH来获得验证者资格,以此参与到网络...
  • 以太坊共识文件夹笔记 一、文件结构: 二、各文件作用 api.go:API是一个面向用户的rpcapi,允许控制授权证明方案的签名者和投票机制。 clique.go:包含实现了权威证明共识引擎。 snapshot.go: clique_test.go: ...
  • Polygon与以太坊通信机制研究

    千次阅读 2022-05-16 16:04:30
    为了在链上启用PoS机制,Polygon在以太坊上部署了一组Staking合约,以及一组运行Heimdall和Bor节点的激励验证器。以太坊是Polygon支持的第一个基链,但Polygon打算根据社区建议和共识,提供对其他
  • 以太坊概述

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

    2021-01-08 00:46:12
    比特币和以太坊目前都是使用的基于工作量的证明,这种共识机制受到了普遍的批评——浪费电 以下这张图表示比特币的能耗随时间的曲线 以及 具体的数字 以下是以太坊的能耗曲线 以太坊与比特币相比能耗要少很多,这...
  • 以太坊共识DAG笔记

    千次阅读 2018-12-30 21:02:03
    以太坊共识机制是 PoW(Proof of Work 工作量证明机制),使用的算法是Ethash,这种算法是对 Dagger-Hashimoto算法的改良版本,流程大概如下 : 1.对于每一个块,首先计算一个种子(seed),该种子只和当前块的信息...
  • 特别感谢Vlad Zamfir,他提出了按块达成共识这个想法,并且说服我认同它和Casper的其它一些核心想法的价值;以及Vlad Zamfir和Greg Meredith,为他们在这个协议上的持续努力。 在这个系列的上一篇中,我们讨论了...
  • 2014年9月份我开始了研究和设计以太坊POS(proof-of-stake, 权益证明)架构的工作。目前Vitalik和我对于Serenity阶段的POS协议应该长什么样已经有了许多共识,只剩一些细节方面的分歧。我们称它为友善的小精灵Casper...
  • 以太坊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...
  • 从比特币诞生以来,POW的设计理念成为数字货币和区块链的主流共识机制,但是由于其对能源的消耗巨大,2013年点点币(Peercoin)系统中提出并实现了另一种共识机制——权益证明。目前点点币和量子链等都采用POS共识...
  • 以太坊目前所使用的共识算法介绍

    万次阅读 2019-05-08 12:53:30
    完整且正确的说法应该是这样的,这其实也是PoW共识机制以太坊的关系。首先以太坊的源码是分有阶段,不同阶段所使用的共识算法要分开来说。所分的阶段有: Frontier(前沿)。这个阶段的版本是以太坊的基础,此时...
  • 在目前的工作量证明共识机制的条件下,矿工每次创建新区块并将其添加到区块链中时都会赢得奖励。但当以太坊难度炸弹设置为“引爆”时,矿工通过挖矿获得奖励的难度将成倍增加。今天我们就来聊聊为什么要引入难度炸弹...
  • 信标链是以太坊 2.0 系统的核心,然而针对该系统的大部分描述都过于技术化、针对性过强或者...阅读本文之前,我们假设读者对以太坊和比特币有不错的基础知识,并对权益证明 (Proof of Stake) 这一共识机制有一定了解。
  • 以太坊技术浅探

    千次阅读 2022-03-13 20:09:32
    目录 一、技术背景 二、 关键技术 2.1 智能合约 2.2 共识算法 ...以太坊技术探究 摘要:区块链技术是近十年来的新兴技术,具有去中心化、不可篡改、数据公开透明等优点,是分布式数据...
  • 作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 掘金:...以太坊 2.0 参与者 区块的生命周期 优化共识算法 2.0 共识的流...
  • eth入门之共识机制

    2022-07-17 18:33:45
    当涉及到像以太坊这样的区块链时,网络节点必须能够就系统的当前状态达成一致。这是通过协商一致机制实现的。这就是共识机制
  • 安装以太坊客户端Geth(美图技术团队开源的基于DPos共识机制的,版本是1.7.4-stable) 上传美图技术团队的Geth的源码文件到/data/blockchain,并解压 unzip go-ethereum-master.zip # 更新依赖 apt-get install -y ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,162
精华内容 6,064
关键字:

以太坊共识机制

友情链接: 现代编译原理.zip