• 简介

    Decred,代币DCR,于2015年9月首次推出,是基于社区管理系统集成到区域块链中的一种开放的和渐进的加密数字货币,类似于比特币,使用Blake-256散列算法。它创新性地在区块链中集成了治理机制,采用创新混合工作量证明 (PoW) 和权益证明 (PoS) 的共识投票系统,加强了利益相关者的自主权,解决了比特币当时的主要治理问题,也奠定了它长期发展的基础。

    Decred代币数量和比特币一样,为2100万个,每个DCR可以为108份。在区块被添加到主链后,会发行30枚新DCR币(现在减少了,PoW矿工到手不到12个),其中60%给PoW矿工,30%给PoS持有人,10%给基金。

    Decred的开发人员来自于比特币bitsuite项目团队,创始人 Jake Yocom,2013年曾带领团队参与过比特币生态系统的开发。目前根据Decred的整个开发进程,可以发现整个团队的技术实力雄厚,对区块链有自己的理解、执行能力特别强,现在Decred规划的大部分功能基本已经实现。

    Decred团队的两位顾问Charlie Lee和Jimmy Song在区块链行业内都大有来头。Lee李启威是莱特币的创始人,在行业内知名度很高。Jimmy song曾在多家初创公司担任开发人员和程序员。

  • 项目技术

    混合工作量证明 (PoW) 和权益证明 (PoS) 的共识投票系统,该系统可如下图简单表示。

    第一步是矿工通过挖矿产生数据块,即工作量证明的过程(POW),第二步是由DCR票池对数据块进行投票,少于3票的数据块将无法得到DCR的奖励,而投票者将获得DCR奖励,这是所有者证明过程(POS)。

    具体过程是,当每一个新区块被创建时,5张票是从票据池中随机抽取出来投票,所有的新区块都需要至少3票才能有效。对于POW的矿商要得到全额奖励,那么必须是所有5张票都通过。如果只有4张票通过,那么POW的矿工只能得到80%的奖励,如果只有3人同意,那么他们只能得到60%的奖励。任何少于3项的批准意味着没有收到任何奖励,并且被投票区块(指的是上一个区块)无效。而这些投票的交易记录在下一个区块里。如下图:

    Votes里的投票交易是对前一个区块
    Hash:00000000000000005b53793f9d0ac79e4889257915578949fc38636993068155
    进行投票。
    我们打开其中一个Vote交易:

    第一个输出地址是:
    OP_RETURN 55810693696338fc49895715792589489ec70a9d3f79535b0000000000000000456b0400
    其中字符串5581……400是blockHash + blockHeight(4个字节)的Hex编码,解析出blockHash就是值:00000000000000005b53793f9d0ac79e4889257915578949fc38636993068155
    也就是前一个区块hash。
    Ps:
    目录: https://www.decred.org/

    区块链浏览器:
    主网:https://explorer.dcrdata.org
    https://mainnet.decred.org
    测试网:
    https://testnet.dcrdata.org
    https://testnet.decred.org

  • 奖励获取
    1.PoW模式,和比特币类似,不做详述。
    2.PoS模式,DCR持有者,可以通过购买票据进入票据池,参与新区块的投票,从而获取奖金。用户购买票据的交易被打包进区块,用户算进入票据池,但是此时用户手中的票据状态是未成熟状态,不能进行投票,需要在256块区块后, 票据进入成熟状态,此时用户才有投票资格。用户获取到投票资格后,就等待票据池随机抽中进行投票。

    1)票据的价格及费用。
    票据的价格有相应的算法动态调整,目的是保持票据池大小包含在40960张票。每个新的区块只能打包20笔购买票据的交易,同时每144个区块后(大约是12小时,称为购买窗口),也就是2880笔票据交易打包后,动态调整票据价格。

    购买票据交易中票据价格对应的DCR, 仍然在用户的账户里,状态是锁定或者不可花费状态,一直要到交易超时未打包或票据超时未被选中或成功投票走完流程或未及时投票走完后续流程才能解锁。

    费用分为两部分常规的交易费用和购买票据的手续费,都是支付给矿工的,购买票据的手续费越高被打包的概率越大,一旦票据进区块,之后不管能不能投票,费用都不退的。

    2)票据在票据池等待时间。
    Decred的PoS机制中票据池里每张选票被选中的概率是符合泊松分布的,每张选票平均等待时间是28天, 142天后仍然未被选中的概率小于0.5%。如果40960块后,大约5个月,仍然没有被选中,将被被系统清除,同时退还金额(票价)。

    3)用户购买票据中票据价格对应的DCR的锁定时间。
    用户购买票据时,这些DCR就被锁定,用户的票据需要256块区块确认后才能成熟,抛去等待时间,用户获取投票资格后,不管有没有进行投票,都需要256块区块确认后,投票成熟,这时才算解锁。
    4) 什么是StakePool?
    用户如果无法保证钱包24小时在线,能及时投票,所以可以把投票的委托给StakePool,同时他会收取奖金的4~5%作为佣金。注意:StakePool,没有权限访问用户的钱包,但是有能力决定投票的结果。所以加入StakePool时最好不要加入人数较多的。

  • 优点
    1.由于决定区块合法性的是由PoS这一层,所以避免了算力较大的小团体50%攻击。
    2.方便硬分叉,旧链产生的区块获取不到选票,获取不到奖励,自然会不断向新链上迁移。
    3.所有投票的行为都能上链。。所有投票的行为都能上链。

  • Decred组成

    Decred由三部分组成:dcrd,dcrctl,dcrwallt。
    dcrd:节点,实现pow, pos, p2p块/交易收发等功能。
    dcrwallt: 钱包,实现钱包的功能,构造交易,发送交易,查看账户等功能。
    dcrctl: 命令行, 连接了dcrd 和dcrwallt,并且提供了调用这两块的命令行。
    三块间连接,连接方需要被连接方的授权文件。

  • 区块、coinsbase交易确认

    区块确认数为1,当前区块确认上一个区块。Coinbase交易确认数为256。出块时间间隔为3分钟左右。

  • 交易构造

    1.交易结构
    交易数据结构如下:

    多了CashedHash,和SerType两个字段。
    初始化时赋值如下:

    CashedHash 为空
    2.交易输入数据结构
    交易输入数据结构TxIn如下图:

    多了Witness和Non-witness的区别。
    构造交易时:
    BlockHeight = 0x00000000
    BlockIndex = 0xffffffff
    Sequence = 0xffffffff
    其他正常赋值就行。
    而OutPoint数据结构也有所变化多了字段Tree, 如下图

    构造交易时Tree赋值为0。
    3.交易输出数据结构:
    交易输出没有变化,机构如下:

  • Hash算法

Decred使用了blake-256算法,而不是sha-256。在钱包地址生成和交易输入签名中都有使用。例如在pkhash生成钱包地址,就使用了black-256,而没有用sha-256。交易签名过程中,交易的序列化结果是使用black-256算法获取hash值。

  • 输入签名

    签名过程中序列化交易并且获取hash值,过程如下:

最终hash 由prefixHash和witnessHash的拼接后再次hash获取的。
1.prefixHash生成过程如下:
写入version,然后在写入Input, Output, Locktime, Expiry, 最后使用black-256生成hash值。
其中SigHashSerializePrefix = 1, SigHashSerializeWitness = 3



chain.HashH最终调用到black256()
2.witnessHash生成过程如下:

上图中完成的是去除操作码OP_CODESEPARATOR(值为171)以及其对应数据。常规转账涉及不到,所以上面两步可以忽略。所以在下图中signScript 值为prevOutScript就是交易输入的锁定脚本字符数组。signTxInIdx值为当前要签名的输入序号。

chain.HashH最终调用到black256()

3.基于prifixHash和witnessHash值生成最终hash值。

chain.HashB最终调用到black256()

  • 交易序列化

首先写入serializedversion

基于SerType选择序列化内容。我们tx.SerType取值为0, 等于常量TxSerializeFull。其中pver值为0, 备用值,可以忽视。

依次写入Prefix,Witness数据。
1.写入Prefix

涉及到的函数:



2.写入Witness


PS: 寒冬之际,求一个好坑!

Decred(德信币)相关推荐

  1. 为避免攻击,研究员把严重的比特币漏洞详情焐了两年

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 2018年,一名安全研究员在驱动比特币区块链的软件 Bitcoin Core 中发现了一个严重漏洞,不过为避免遭黑客滥用,该研究员在报 ...

  2. STO不会火,比特大陆不会死,币安会去非洲:区块链行业的63个预测

    翻译 | 贾瑞婷 编辑 | 波波 有句话是这么讲的:凡是杀不死你的,必定能让你更强大. 比特币大神哈尔·芬尼也是这么看比特币的. 作为资深密码朋克.中本聪之外第一个接触比特币的人.传说中同中本聪交集最 ...

  3. python 报价机器人_用 Python3 写微信币价查询机器人

    本文环境: Windows 10 和 python 3.5 需要安装 itchat 以及 pyquery 库,直接命令 pip3 install itchat 以及 pip3 install pyqu ...

  4. 行情跌宕起伏,或许你可以买这个代币?

    Gate.io平台币GT持续下跌,现已跌下0.7美元,当前价格为0.695美元,,GT24小时跌幅超过30%!多家媒体和分析师皆建议谨慎投资!减少因行情波动盲目投资带来的风险. 25日凌晨2点41分, ...

  5. mysql 数字区间_币投君0904丨数字货币暴跌原因何在

    昨日数字货币再次集体闪崩,btc甚至刺穿10000大关,合约帝数据显示,过去 24 小时全网爆仓超过 10 亿美元,共有 6.7 万人成为爆仓受害者.究其原因主要有两个方面:一方面是昨晚美股暴跌,三大 ...

  6. Q币才是腾讯真正的世界级产品

    本文受<虚拟货币将是下一个大平台>启发而来.何玺认为,腾讯Q币本身就具有全球化虚拟货币的基因. 日前,有媒体报道了Pocket Change获得了由Google Ventures领投的50 ...

  7. 这个美国议员候选人想发币,联邦选举委员会还答应了

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 佛罗里达州的一名国会候选人想给竞选志愿者发放基于以太坊的代币,以激励他们的工作,这是一项实验性的举措,而联邦官员似乎准备 ...

  8. 以太坊代币空投合约的实现

    2019独角兽企业重金招聘Python工程师标准>>> 本文将介绍如何在以太坊智能合约中实现代币的空投.区块链以太坊世界中所谓空投(airdrop),就是免费给你的区块链地址(公钥) ...

  9. 【直播预告】7月18日3D游戏引擎免费公开课答疑,參与送C币!

    喜讯喜讯! 为了酬谢广大学员.CSDN学院特推出iOS和3D游戏引擎开发免费技术答疑公开课,让您度过一个充实的暑假~ 參与本次公开课,即有机会获得50C币! 答疑公开课时间:7月18日 晚7:30-9 ...

最新文章

  1. -Objc 、 -all_load 、 -force_load
  2. datasnap的线程池
  3. Hybris (SAP旗下的软件公司)
  4. 学java语言之前学什么利于学习?
  5. ubuntu下wps不能输入中文
  6. 中国2008经济数据
  7. php 日志增强,php 日志扩展
  8. STL标准模版库----queue/deque操作大全
  9. 河南省第九届省赛信道安全--Dijkstra最长路
  10. java android 游戏开发_Java快速开发安卓游戏-aide教程
  11. 漏洞扫描工具AppScan下载网盘
  12. Windows Server AppFabric分布式缓存详解
  13. 小程序直播送礼物svga展示
  14. 【js 分页】js 分页 方法一 【实用】
  15. Java Http请求工具类
  16. css3-文字添加边框
  17. An effective intrusion-resilient mechanism for PLCs against data tampering attacks
  18. 移动直播元年:内容单一,80%流量靠网红主播
  19. linux命令字典式总结(按用途分类)
  20. 艾媒咨询:2015年度中国智能路由器市场监测报告

热门文章

  1. 不知道的win10骚操作
  2. 微信小程序获取用户唯一标识OpenID
  3. TOM企业电子邮箱注册,你的域名邮箱设置电子名片了吗?
  4. 什么无线蓝牙耳机好?竞技游戏专用耳机
  5. DataTable.AcceptChanges()
  6. 微信小程序 键盘显示短信验证码
  7. arduino圆孔供电_几种常用的为Arduino供电方法 – 太极创客
  8. 算法题库leetcode多加练习
  9. 新媒体常用网站推荐3
  10. .Net Core使用google authenticator打造用户登录动态口令