共识算法DPOS原理及实现_第1页
共识算法DPOS原理及实现_第2页
共识算法DPOS原理及实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、共识算法DPOS原理及实现原理简介DPOS:DelegatedProofofStake,委任权益证明它的原理是让每一个持有币的人进行投票,由此产生n位代表,我们可以将其理解为n个超级节点或者矿池,而这n个超级节点彼此的权等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块被除名,网络会选出新的超级节点来取代他们。EOS就是采用DPOS共识算法。算法具体实现原理假设n为21,竞选的节点有几百个,持币人对这些节点进行投票,选出票数最多的21位,由这21位轮流来出块。代码简单实现其原理packagemainimport(fmtmat

2、h/randtimestrconvcrypto/sha256encoding/hex)typeBlockstructIndexintTimestampstringPrehashstringHashstringDatabytedelegate*Node/代理区块由哪个节点挖出funcGenesisBlock()Blockgene:=Block0,time.Now().String(),byte(genesisblock),nilgene.Hash=string(blockHash(gene)returnBlockfuncblockHash(blockBlock)byterecord:=strco

3、nvtoa(blockndex)+block.Timestamp+block.Prehash+hex.EncodeToString(block.Data)h:=sha256.New()h.Write(byte(record)hashed:=h.Sum(nil)returnhashed/节点类型typeNodestructNamestring/节点名称Votesint/被选举的票数func(node*Node)GenerateNewBlock(lastBlockBlock,databyte)BlockvarnewBlock=BlocklastBlock.Index+1,time.Now().St

4、ring(),lastBlock.Hash,data,nilnewBlock.Hash=hex.EncodeToString(blockHash(newBlock)newBlock.delegate=nodereturnnewBlock创建节点varNodeArr=make(Node,10)funcCreateNode()fori:=0;i10;i+name:=fmt.Sprintf(NODE%dnum,i+1)NodeArri=Nodename,0简单模拟投票funcVote()fori:=0;i10;i+rand.Seed(time.Now().UnixNano()vote:=rand.I

5、ntn(10)+1NodeArri.Votes=vote选出票数最多的前3位funcSortNodes()Noden:=NodeArrfori:=0;ilen(n);i+forj:=0;jlen(n)-1;j+ifnj.Votesnj+1.Votesnj,nj+1=nj+1,njreturnn:3funcmain()CreateNode()fmt.Println(NodeArr)Vote()nodes:=SortNodes()fmt.Println(nodes)/创建创世区块gene:=GenesisBlock()lastBlock:=genefori:=0;ilen(nodes);i+las

6、tBlock=nodesi.GenerateNewBlock(lastBlock,byte(fmt.Sprintf(newblock%d,i)输出竞选的节点第1个节点0第2个节点0第3个节点0第4个节点0第5个节点0第6个节点0第7个节点0第8个节点0第9个节点0第10个节点0选出的节点第10个节点8第4个节点7第3个节点61010)cbb第10个节点出块12018-06-2919:28:28.41834078+0800CSTm=+0.0009403570c142d83bf773e248c3438dd99423f6b289d171696b5e24573e06e2c4c4451611第4个节点出块22018-06-2919:28:28.418365811+0800CSTm=+0.0009653870c142d83bf773e248c3438dd99423f6b289d171696b5e24573e06e2c4c44516143第3个节点出块32018-06-2919:28

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论