学习
实践
活动
专区
工具
TVP
写文章

读懂“工作量证明”,才算读懂“区块

关键词:区块、去中心化、记账 在一个互不认识、没有中心、缺乏互信的环境里,大家只需要在最长的区块上工作,就能保证系统信息的真实性,这就是“工作量证明”机制。 区块是如何“绕过”中心的?无论最后成败,了解区块到底是什么以及它的基本原理是有必要的。 为什么比特币的正常流转需要“挖矿”,为何确认一笔比特币交易需要几十分钟和消耗电量几百度以上。 这也就是Proof-Of-Work(“工作量证明”)——让区块能够去掉中心机构的核心机制。 ? 作者 | 李洋 首发 | FT中文网 区块是一种技术,比特币是该技术的一个明星级应用。 它们串接而成的人手一份的链条账本,便是“区块”。那成千上万的记账人,就是俗称的“矿工”。所谓“挖矿”,无非是每个记账人用最好最多的计算机来猜数字谜语,用设备和电量消耗来证明自己的账本正确。 换句话说,在一个互不认识、没有中心、缺乏互信的环境里,我们只能相信付出成本最大的信息记录,这就是题目中提到的“工作量证明”机制。 到现在,大家可能理解了区块是如何做到去中心化的。

44270

基于Java语言构建区块(二)—— 工作量证明

工作量证明机制 区块最关键的一个思想就是,必须进行大量且困难的计算工作才能将交易数据存放到区块上。这种工作机制才能保证整个区块数据的安全性和一致性。 在区块中,网络中的矿工们努力工作来维持区块网络,为其添加区块,并且获得一定的Token奖励。作为他们工作的成果,一个区块以安全的方式被组合进了区块中,这样就保证了整个区块数据库的稳定性。 还有一个必须要注意的是,某个矿工完成了计算工作的结果,还必须得到其他所有矿工的认同(证明是正确的),这样才算完成。 这一整套的计算和证明机制,就称为Proof-of-Work(工作量证明)。 你可以脑补一下这个工作量有多大,按照目前计算机的算力来看,几乎不可能 Hashcash 比特币的工作量证明是使用的是Hashcash算法,一种最初被用于反垃圾邮件的算法,它可以被拆解为以下几步: 获取某种公开可知的数据 (父区块)的Hash值; 区块中的交易数据; 区块生成的时间; 难度目标; 用于工作量证明算法的计数器 详见:《精通比特币 (第二版)》第09章 Pow算法 /** * 运行工作量证明,开始挖矿,找到小于难度目标值的

1.1K50
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器7.33元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用 Go 构建一个区块 -- Part 2: 工作量证明

    但是,我们实现的区块有一个巨大的缺点:向中加入区块太容易和廉价了。而区块和比特币的其中一个核心就是,要想加入新的区块,必须先完成一些非常困难的工作。在本文,我们将会解决这个缺点。 工作量证明 区块的一个关键点就是,一个人必须经过一系列困难的工作,才能将数据放入到区块中。正是这种困难的工作,才使得区块是安全和一致的。 作为他们努力工作的结果,新生成的区块就能够被安全地被加入到区块中,这种机制维护了整个区块数据库的稳定性。值得注意的是,完成了这个工作的人必须要证明这一点,他必须要证明确实是他完成了这些工作。 Hashcash 比特币使用 Hashcash ,一个最初用来防止垃圾邮件的工作量证明算法。 这是十分有必要的,因为待会儿我们需要用 nonce 来对这个工作量进行证明

    14710

    使用Go构建区块 第2部分:工作量证明

    我们的区块实现有一个重大缺陷:向中添加区块很容易。区块和比特币的核心之一是:添加新区块是一项艰苦的工作。今天我们要解决这个缺陷。 Proof-of-Work(工作量证明区块的一个关键思想是,必须进行一些艰苦的工作才能将数据放入其中。正是这项艰苦的工作使区块变得安全和一致。 值得注意的是,完成工作的人必须证明这一点。 这整个“努力工作和证明”的机制被称为工作量证明。这很难,因为它需要大量的计算能力:即使是高性能的计算机也无法快速完成。 这个哈希,也就充当了证明的角色。因此,寻求证明(寻找有效哈希),就是矿工实际要做的事情。 最后要注意的一点是。工作量证明算法必须满足要求:完成工作很难,但验证证明很容易。 还有一件事要做:对工作量证明进行验证。

    31650

    PoW工作量证明

    PoW是Proof of Work的缩写,即工作量证明的意思。 区块正如其名,是一个区块与另一个区块链接起来而成的,一个区块中用于参与工作量计算的主要有三部分数据(为了说明HASH计算的工作量,我对整个计算过程进行了极大地简化,更详细的细节请自行参考《精通比特币》 小结: 工作量证明既用于发币,也是验证交易的有效性,保证比特币的安全 计算过程中不断调整nonce,要进行数亿至万亿次的HASH运算 先完成计算的获得记账权,写入一个新区块,向外广播 其它矿工只用非常非常少的计算量就可以完成验证 竞争失败的矿工,取得最新区块信息,开始新一轮竞争 我在5月23日开办了“区块生存训练”饭团,现在成员超过180人,已经讲解了众多概念:比特币地址、Block区块区块、确认、Mining挖矿、矿工费 、HASH哈希、矿工、工作量证明、私钥、公钥、交易、钱包、PressOne、ICO等等,并且饭团内还有热烈的讨论。

    684130

    POW-(工作量证明

    区块的网络节点参与者进行竞争记账,所谓竞争记账是指,如果想生成一个新的区块并写入区块,必须解出比特币网络出的工作量证明谜题,谁先解出答案,谁就获得记账权利。 工作量证明谜题 这个谜题是:即找到一个nonce值,使得新区块头的哈希值小于某个指定的值,即区块头结构中的“难度目标”。 我们发现区块头中除过nonce以外,其余的数据都是明确的,解题的核心就在于不停的调整nonce的值,对区块头进行双重SHA256运算。整个工作量证明过程如下: ? 1.生成Coinbase交易,并与其他所有准备打包进区块的交易组成交易列表,并生成默克尔哈希; 2.把默克尔哈希及其他相关字段组装成区块头,将区块头(Block Header)作为工作量证明的输入,区块头中包含了前一区块的哈希 这两类的区别在于对于提供工作量证明的组件要求不同。

    1.2K30

    区块遇到零知识证明

    区块遇到零知识证明 什么是零知识证明 零知识证明的官方定义是能够在不向验证者任何有用的信息的情况下,使验证者相信某个论断是正确的。 比特币的困境 假如你对比特币有了解的话应该知道,比特币就是一个共有的账本,A转给B一笔钱就是在区块上写一条记录“A转给B 10块钱”,A的10块钱从哪儿来呢? 要求必须是以前某人C在区块上写一条记录“C转给A 10块钱”。 ZCASH怎么结合零知识证明区块 为了解决比特币的非匿名问题,零知识证明被ZCASH引入到比特币系统中。那么它是怎么实现匿名性的呢?且看娓娓道来。 这里可以认为他们是偷偷扔的,具体对应到网络上的实现就是B随便找了一台网络设备把箱子b对应的数据上传到区块上。而想通过这台设备找到B很难,并且B也可以托C上传箱子b的数据。

    1.4K341

    PoW工作量证明算法

    区块中面临的最大问题就是双重支付问题,就是在网络中某一个恶意节点去散布两种不同的交易,并且这两种交易是相互矛盾的,就是导致网络中其他好人节点看到两条,那么整个网络为了解决这个问题需要通过一些协议去进行投票而达到一致 ,占票高的被写入区块,占票少的就不会写入区块。 那这里有没有可能那个恶意的用户造一条更长的呢? A如果要实现双重支付,就要在自己广播自己向B转了600的同时保留一条副(副上保留了自己向B转了500),然后用自己的算力去和主竞争。 假设大多数CPU由好人控制,那么主将会远远把A的副抛到后面,因为A的算力是竞争不过所有的节点的。一般而言,若已出现 >15个区块,副超过主的概率将会 <0.1%。 假设A掌握了 >51%的算力,A自己做的副就有可能保持与主同样的区块产生率,理论上是可以造成双重支付,也就是更改之前的转账交易,使B被骗。 那么怎么避免A做出这种破坏生态的行为呢? ?

    26320

    白话区块之零知识证明1

    定义 百度百科中关于零知识证明的定义如下:零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。 它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。 证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。 如果能够将零知识证明用于验证,将可以有效解决许多问题。 简单来讲就是存在知识拥有者(证明者)和验证者双方,知识拥有者在不告知验证者知识具体内容的情况下,通过相关协议或者算法,证明知识拥有者的确掌握该知识。

    25620

    区块POW证明代码实现demo

    这里强调一下区块的协议分层 应用层 合约层 激励机制 共识层 网络层 数据层 上 一篇主要实现了区块的 数据层,数据层主要使用的技术就是对数据的校验,求hash。 这里介绍工作量证明POW, POW是属于共识机制的内容。 PoW机制中根据矿工的工作量来执行货币的分配和记账权的确定。算力竞争的胜者将获得相应区块记账权和比特币奖励。 缺点: 浪费能源;区块的确认时间难以缩短;新的区块必须找到一种不同的散列算法,否则就会面临比特币的算力攻击;容易产生分叉,需要等待多个确认;永远没有最终性,需要检查点机制来弥补最终性。 consensus algorithm) Hcash——PoW+PoS共识机制 这些共识机制,后面有时间会补充上的,今天主要介绍POW pow很简单,原理就是 利用计算力,在选择一个nonce的值结合区块的数据算出 == '0') { break; } } return i >= difficulty; } import hashlib """ 工作量证明 """ class

    90630

    区块隐私保护技术解析——零知识证明

    一、引言 区块技术最初给我们第一印象是其拥有匿名性,不可篡改性,一致性,分布式等特点。其中匿名性随着对区块的进一步分析和一些信息情报的收集,一般区块的匿名性都是较弱的。 我们熟悉的比特币,以太坊等区块的匿名性都是较弱的,可以实现交易追踪和地址的聚类,我们在区块追踪这边也做了一些基础的工作,实现区块的威胁情报与监管。 区块的交易采用强匿名性是一把双刃剑,使得区块具有更强的匿名性,但同时使得监管更加困难,同时不能符合法律和法规使得流通性受到限制。 区块隐私保护在非代币的区块应用,如金融级别企业用户提供高性能、高安全的区块上数据隐私保护和隐私数据授权。保障交易数据的端到端,全生命周期的隐私安全。 仅通过零知识证明的公开证明信息,就可以实现两个匿名用户之间安全隐私的转账。实现了身份匿名和交易金额保密的一种强匿名性数字货币。具体的实现过程是通过区块上的交易构造、交易验证、交易接收来实现的。

    1.2K20

    BCH工作量证明源代码分析

    (In); pblock : 当前区块(In),主要使用了其中的时间戳字段; param : 当前的参数 如果为上个区块为创世块,直接返回当前参数配置的最低难度。 如果当前的为回归测试(regtest 测试),返回与上个区块一样的难度 如果上个区块的MTP时间 >= CashHardWokd(硬分叉难度调整DAA)的激活时间,那采用新的难度算法 采用以前的难度算法 (testnet 测试),并且当前块的时间与上个区块的时间间隔大于nPowTargetSpacing *2,允许下个块采用当前的最低难度 获取上个区块的往上3个块的中值区块,作为结束位置 获取当前上个区块的第 144个祖先区块的中值区块,作为起始位置 依据起始位置,结束位置,和参数计算下个块的难度(工作量)work 当下个块的难度低于当前最低难度时,返回当前的最低难度;否则返回计算后的难度 总结:现阶段采用的算法是 该函数用来判断:块头哈希与块中声明的难度是否吻合(即该区块工作量是否正确,不依赖于上下文)。 ---- 本文由 Copernicus团队 姚永芯写作,转载无需授权。

    8420

    哈希现金(Hashcash)与“工作量证明

    下载 HashCash.zip - 33.3 KB 引言 “哈希现金(Hashcash)是一种用于防止垃圾电子邮件和拒绝服务攻击的工作量证明系统,最近以其在比特币(以及其他加密货币)挖矿算法中的应用而闻名 (hashcash.org) 这种“工作量证明”的概念现在主要用于比特币挖矿功能,“充当区块更新的投票机制,并验证区块交易日志。” 或者换句话说:“比特币采用Hashcash,通过收取一笔用于补偿矿工所希望得到的合作激励作为更新费用,来实现防止区块被恶意篡改的安全性……在比特币中,Hashcash问题的困难性随着时间的推移而变化, find solution."); } ++counter; ++Iterations; } return ret; } 测试 我整理了一个简单的测试,执行100次“工作量证明 这种“工作量证明”算法已被用于防止拒绝服务攻击。 NHashCash(我之前发布的sourceforge链接)也包含在内,但对它的测试已被注释掉。

    1.7K100

    比特币如何挖矿(挖矿原理)-工作量证明

    区块记账原理 一篇,我们了解到记账是把交易记录、交易时间、账本序号、上一个Hash值等信息计算Hash打包的过程。 每次记账都可以给自己凭空增加一定数量的个比特币(当前是12.5比特币,博文写作时每个比特币是4万人民币以上,大家可以算算多少钱),因此就出现大家争相记账,大家一起记账就会引起问题:出现记账不一致的问题,比特币系统引入工作量证明来解决这个问题 ,规则如下: 一段时间内(10分钟左右,具体时间会与密码学难题难度相互影响)只有一人可以记账成功 通过解决密码学难题(即工作量证明)竞争获得唯一记账权 其他节点复制记账结果 不过在进行工作量证明之前,记账节点会做进行如下准备工作 工作量证明 区块记账原理我们了解到,每次记账的时候回把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash。 如果仅仅是这样,显然每个人都可以很轻松的完成记账。 有兴趣的同学可以看看图中区块都包含了那些信息,红箭头标示出的是本文涉及的信息。 本文中有提到共识协议,比特币共识协议主要是由工作量证明和最长机制 两部分组成,之后会有博文详细讲解。

    1.2K50

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 腾讯云区块链服务平台 TBaaS

      腾讯云区块链服务平台 TBaaS

      腾讯云区块链服务(TBaaS)构建于腾讯云基础之上,让您在弹性、开放的云平台上快速构建自己区块链服务,极大的降低您实现区块链底层技术的成本,简化区块链构建和运维工作,同时面对各行业领域场景,满足您的个性化需求,一站式快速交付定制区块链服务。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券