btc共识机制
Ⅰ 区块链目前用到哪些共识机制它们各自的优缺点和适用范围是什么
1、区块链的技术是什么?
如果我们把数据库假设成一本账本,读写数据库就可以看做一种记账的行为,区块链技术的原理就是在一段时间内找出记账最快最好的人,由这个人来记账,然后将账本的这一页信息发给整个系统里的其他所有人。这也就相当于改变数据库所有的记录,发给全网的其他每个节点,所以区块链技术也称为分布式账本(distributed ledger)。
区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案主要让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的数据块(block),每个数据块中包含了一定时间内的系统全部信息交流数据,并且生成数据指纹用于验证其信息的有效性和链接(chain)下一个数据库块。 区块链是一种类似于NoSQL(非关系型数据库)这样的技术解决方案统称,并不是某种特定技术,能够通过很多编程语言和架构来实现区块链技术。并且实现区块链的方式种类也有很多,目前常见的包括POW(Proof of Work,工作量证明),POS(Proof of Stake,权益证明),DPOS(Delegate Proof of Stake,股份授权证明机制)等。 区块链的概念首次在论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中提出,作者为自称中本聪(Satoshi Nakamoto)的个人(或团体)。因此可以把比特币看成区块链的首个在金融支付领域中的应用。
2、区块链的原理是什么?
结合定义区块链的定义,需要有这四个特征我们才能认为:去中心化(Decentralized)、去信任(Trustless)、集体维护(Collectively maintain)、可靠数据库(Reliable Database)。并且由四个特征会引申出另外2个特征:
开源(Open Source)、匿名性(Anonymity)。如果一个系统不具备这些特征,将不能视其为基于区块链技术的应用。 去中心化(Decentralized):整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,且任一节点的损坏或者失去都会不影响整个系统的运作。因此也可以认为区块链系统具有极好的健壮性。 去信任(Trustless):参与整个系统中的每个节点之间进行数据交换是无需互相信任的,整个系统的运作规则是公开透明的,所有的数据内容也是公开的,因此在系统指定的规则范围和时间范围内,节点之间是不能也无法欺骗其它节点。 集体维护(Collectively maintain):系统中的数据块由整个系统中所有具有维护功能的节点来共同维护的,而这些具有维护功能的节点是任何人都可以参与的。 可靠数据库(Reliable Database):整个系统将通过分数据库的形式,让每个参与节点都能获得一份完整数据库的拷贝。除非能够同时控制整个系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,也无法影响其他节点上的数据内容。因此参与系统中的节点越多和计算能力越强,该系统中的数据安全性越高。 开源(Open Source):由于整个系统的运作规则必须是公开透明的,所以对于程序而言,整个系统必定会是开源的。 匿名性(Anonymity):由于节点和节点之间是无需互相信任的,因此节点和节点之间无需公开身份,在系统中的每个参与的节点都是匿名的。
3、区块链金融是什么?
2016年,革新者将被革新。新一轮技术革命将一边应对共享经济的陌生人之间信任的挑战,一边破坏此类平台赚钱的基础。
传统的中介
共享经济虽然有效地挑战了现状,并且带有强烈创新属性,但是,它采用的依然是非常传统的商业模式。
最常见的对交易收取佣金的方式已经沿用了数个世纪。今天,技术已经让很多事成为可能,但是仍无法完全取代中介。
P2P 平台与其他在线市场刚兴起时,人们纷纷谈论去中介(disintermediation),这种绕过传统中介,通过网络直接将人们连接起来的新方式。事实上,尽管我们已经体会到新型市场便捷得多,并看到与各种供应商进行交易的可能性,但是,我们今天仍然在很大程度上依赖中介。事实是如今最大的新型企业正是巨型中介,其规模超乎想象,像阿里巴巴、Amazon、eBay 和 Uber。
有没有一种技术解决方案,能够完全去除各交易方之间的中介?是否存在一个系统,在其中你能够与任何人直接交易,并免于受到欺骗,同时无人拥有该系统,因此没有佣金收取方。
区块链技术使之成为可能。区块链是比特币的核心技术,极具创新性,可以用于建成完全透明、无主、分散的系统,能在没有任何形式中介的情况下,保证各种交易方安全进行交易,这些交易方包括人、企业。
自然而然地,很多资源流向了区块链,区块链也给金融与法律行业带来了相当的影响,并最终将在这两个行业肆虐横行,或者提供最佳机会,这全在于你怎么看待它。
去中心化金融
2015年,可能是出于对另类金融(alternative finance)市场增长的高度敏感,九家投资银行针对区块链技术金融服务联合开发了开放标准。去年,不断有各种活动讨论区块链技术的未来,还推出了Slock.it,这是去中心化共享经济的第一批技术堆栈之一。
区块链下的共享经济是什么样的?
如果你想在共享经济中继续赚取佣金,那就要创造新的商业模式。
当然,区块链市场仍将需要一些投资。开发者可能乐于花费时间,解决困扰系统的代码。但是,我至今还没遇到早该出现的有类似想法或乐于投资的品牌顾问、设计师或商人。单单依靠代码无法帮助区块链市场进入主流。
但是区块链将会蓬勃发展,加之摆脱了烦人的中介,几乎可以预测它肯定会比现有的共享经济更加便宜,到那时,巨头们就会被迫着手应对。
老牌共享经济将重复历史,因坚信本身坚不可摧而走向没落,被更灵活、有科技助力的竞争对手迅速取代?还是将进行实验,在共享经济 2.0 中找到有利可图的市场,并在游戏中胜出?
那么信用呢?
信用,是共享经济相关所有讨论中的最高频词,相当复杂棘手。目前的协作平台们表达地非常清晰:我们能提高共享经济中的信任水平;我们能采取最优措施,保证用户信任我们的平台并在上面交易,但是,我们无法保证人与人的交易值得信任。区块链解则解决了上述问题。
区块链中交易系统不可改变,并且可以在已分配分类账内跟踪每笔交易,智能合同为所有双方交易充分设定参数与条件,因此区块链不再需要任何的 “可信中介” 或者陌生人之间信用的担保方。
到 2017年,监管机构将意识到他们需要彻底反思共享经济领域的规章制度。那时,各交易方将在区块链中达成数亿的独立合同,一种解决方案是向系统中敲进规则代码。
2008年 左右共享经济首次出现时,很多人欢呼不已,认为是将带领我们进入一种新的包容、可持续经济的现象,是未来带我们进入后资本范式的一种民主化力量。但是,(到目前为止)事实并非如此。互联网刚出现时也是这样,在最初阶段曾被乌托邦式理想化,所以,对区块链持有同样变革性期待的人很可能会失望。即便如此,区块链将动摇共享经济巨头,这丝毫不会受到影响。
4、区块链社区
布比区块链专注于区块链技术和产品的创新,已拥有多项核心技术,开发了自有的区块链服务平台。以去中心化信任为核心,致力于打造开放式价值流通网络,让数字资产都自由流动起来。
特色与优势
已取得多项核心技术创新,开发了自有的区块链基础服务平台,已在股权、供应链、积分、信用等领域开展应用。
快速交易验证
通过对签名算法、共识机制、账本存储等关键交易环节的优化,布比区块链可以实现秒级的快速交易验证。
高效账本存取
布比区块链对账本存储结构的调整,可以节省90%的储存空间,降低系统长时间运行,导致账本存取性能下降的风险。
多种资产发行
布比区块链支持不同用户、多种资产的发行与交易,每种资产可跟踪记录发行商、发行数量、交易流通等详情。
联合签名控制
允许同一账户下设置多个使用用户,并针对不同的操作设置相应的权限,以满足多方签名控制的使用场景。
内置智能合约
智能合约是一套以数字形式定义的承诺,区块链变身合约的参与方,负责维护保存合约,并自动执行。
链上交易所
与传统中心化交易所相比,用区块链构建的交易平台,所有交易都在链上验证、完成和保存,保障用户交易安全性。
布比区块链要做的是一项新的技术和产品——实现真正的价值流通,使得互联网到达一个新的高度。如果有了这个技术的应用,在转移资产的时候就可以没有中心机构了,可以实现我们之间资产的直接转移。将来如果网络本身可以结账,我们就可以直接转移了,就不需要通过中间机构。
Ⅱ 比特币的未来会怎样
再强调一下我的观点:比特币不是货币,是商品。
打个比方:如果您去玩一款 游戏 , 游戏 里需要完成很多任务,才能获得 游戏 中的货币。不妨把这款 游戏 叫“比特”,这个 游戏 里的币就叫“比特币”。拥有很多比特 游戏 中的比特币,有没有价值呢?有!可以拿这个币去购买 游戏 中的装备,例如男主角的宝剑,女主角的漂亮衣服。
离开 游戏 ,这个“比特 游戏 的币”,还有没有价值呢?也还会有。
例如,有个同样玩 游戏 的人,没有这个“比特 游戏 的币”,他要么自己用力打 游戏 来赚,还有一个办法就是向你购买。用现实中的人民币或者美元,或者任何一种国家发行的货币,向您购买。
这个“比特 游戏 的币”,到底是货币呢?还是商品呢?其实已经清晰了。在现实世界,是可以买卖的商品,在 游戏 世界,就是货币。
比特币,不就是这样吗?在现实世界,是用美元标价的,是一种商品。在比特圈,就是一种货币了。
我曾经多次论证,比特币就是 游戏 中的币或 游戏 装备。有兴趣可以搜索相关文章。关键词应该就是“孙建波+比特币+ 游戏 装备”。
这样看来,比特币的未来,取决于这种 游戏 的玩家和信徒。一款玩家多,信徒坚定的 游戏 ,其中的 游戏 币和 游戏 装备,就值钱。
不仅仅是比特币,世界会出现无数的去中心化的虚拟货币,这是趋势,少数国家即便团结一致也没有办法阻挡。
法币与虚拟货币之间最重要的关联是汇兑,或者说买卖,由于在技术上无法阻止或监管汇兑,所以法律的成本就很高,任何国家都会评估利弊。
国家允许汇兑就意味着认同贸易自由化、经济全球化,包括汇率市场化和全球化。所以,凡是支持自由化、全球化的国家,不会反对虚拟货币的交易,反之就会以高昂的代价进行监管或禁止。对小型自由经济体来说,虚拟货币会有新的机会,特别是金融及其衍生品的机会。
虚拟货币及区块链技术可能会有许多其他应用,这会带来新的经济发展的机会,一旦新应用有市场前景,支持的国家将抢先获得。
对中国来说,这是一个巨大的挑战,相信国家有智慧趋利除弊,做出决策。
巴菲特也说,比特币是一个骗局,不要购买。
那么我们来说说看,比特币到底是一个什么样的东西呢?在我看来,比特币就是一个让人说不出的恐怖,现在的比特币市值已经超过了3300亿美元,就在我写这篇文章的时候,价格已经逼近20000美元,距离1万美元的关口仅仅过去了一个月不到的时间,那么我们可以这样说,比特币现在已经相当于一个全球500强企业了,那么下一步呢?
其他虚拟币几乎都可以称为山寨币,现在全世界的虚拟货币都以比特币为参照物,整个全球排名前十名的虚拟币市值大概在5500亿美元,在人民币4万亿左右。
比特币的未来如何?我深信,这个是所有的投机商和比特币信仰者都在思考的东西,到底要涨到多少钱?
现在来看,我认为最后的价格一定是超乎所有人的相信,比特币的发明者一定是个疯子,妄图靠着技术来收回货币发行权,民众自行掌握比特币,这个想法无疑是疯狂的。
现在每天全球外汇交易价为6万亿美元,每年全球外汇交易量为2000万亿美元以上,我相信如果比特币最终形态如果成为了外汇储备,那么比特币的最终价格就是每一枚1亿美元,那么这个时候全球外汇的法币就消失了!
但是这个可能吗?世界各国的财政权呢?我相信世界各国都还没有完全引起警惕,一旦比特币总市值超过一万亿美元,那么比特币离最终的疯狂价格也就不远了。
美国把卡扎菲杀了,搞一个新政府.把原来的币废了.印新币,这就有道理,台湾经济玩不下了废了重发,叫新台币,美元想印就印想发二十万亿到世界买.买.买,就有道理,我看所谓法币是最不靠普的,世界上有多少法币废了重发,印度早几月不就废了把,数字币是一个定数,价值就在集交易与保值一体,没有汇兑损失,不担心美国剪羊毛,我觉得这是人类 历史 上第四代货币的萌芽,(前三代货币即原始 社会 动物贝壳一类制造,二代为金属币,三代为纸币,四代为数字币)适用全球经济一体化,经济活动便利化。我看很好.区块链技术现在应用越来越广,你认为一定要看到才叫钱,那各电子设备里的软件,你见着了吗,电脑.机器人, 汽车 .飞机等设备里都有看不见东西,还很值钱,你想想就明白了,总比买美国债卷靠普。
这是 社会 进步的必然趋势,我没有比特币,但是我觉得将来数字货币代替纸币是必然的,现在国内在扼杀这新生技术就好比中世纪的宗教在迫害伽利略,因为既得利益历来就是阻碍新技术的杀手。
我个人不看好比特币的未来甚至认为这些虚拟币根本就没有未来,虚拟币存在的价值仅仅是炒作,如果那一天这种炒作风潮过去那些币也就成为了 历史 的记忆,实际上没有任何一个炒作可以永恒它们不是钻石所以衰退只是时间问题。
在比特币火热之后随即五花八门的空气币琳琅满目的涌现在网络上,这些打着区块链大旗挂着羊头卖着狗肉的各种币无非就是一个平台,一个局域网,一个小圈子圈起来博傻。这估计也是比特币创始人中本聪所始料不及的,他根本不会想到自己的区块链技术会跟今天的局域网炒作沾边,更没想到居然可以有那么多完全与区块链技术不沾边的“区块链币”出现。
比特币只是一种网络技术,一种区块链技术,币也就只是一长串数码。比特币之所以可以红火也就是因为这种前所未有的网络技术引起人们的广泛关注进而带火了这一串串的数码币。人类技术日新月异推陈出新今天你是当家花旦明天你可能就会被打入冷宫,因为你老了不再适合时代的发展,新花旦也会源源不断的涌现出来取代你的位置。
我认为比特币未来前景不是很明朗,尤其是经历7、18年两次国家整顿之后……
比特币到底有没有未来?
这个问题其实牵涉到一个概念,就是现有这些流通地货币,如人民币、美元、欧元等等,它们到底代表着什么?看过经济学教材的人可能都知道,按照教材的解释,货币是计量单位,具有交换媒介、价值储藏的功能。看上去比特币也满足这几种计量标准,但是这些讨论都忽视了一个最重要的事情,就是日常使用的货币,它叫做“法定货币”——简称“法币”,是国家赋予某个银行或中央银行的一种特许权力而发行的,它背后的关键是国家信用。
一、现代货币的背后是“国家信用”
二战以后,布雷顿森林体系确立了美元的国际核心地位,即美元与黄金挂钩,其他货币与美元挂钩。这个体系使得全球的任何贸易都要用美元结算,各国在海外发行国债都得用美元。国际大宗得商品,如石油、天然气、铁矿石,都用美元来计价。当时布雷顿森林体系的建立是依靠美国强大的国家实力来做支撑的。那时美国的经济总量占到全世界经济总量的1/4,还拥有全球2/3以上的黄金储备,二战后欧洲的重建还要仰仗美国的金融贷款。就是这样的国际背景,美元理所当然的成为了国际计价结算的储备货币,变成了国际货币体系的中心。
70年代以后,世界各国经济开始复苏,美元开始面临着贬值的压力,美元一贬值,黄金的价格就上升。这样,美国干脆就宣布美元和黄金脱钩,美元的发行不再受黄金储备的限制,只与美国的经济增长和信用规模有关。但是这个时候,美元的国际货币地位已经稳定,美联储已经成为了隐形的世界央行。随着美元与黄金的脱钩,全球货币都随着美元进入了完全的信用货币时代,这个信用不是私人或机构的信用,而是美国的国家信用。这就是美元成为国际货币中心的演变路径。
由此,我们得出一个简单的原则。现代的货币是信用货币,货币价值的浮动完全取决于一个国家的实力和其他国家对这个国家的信心。
所以,没有国家信用加持的货币,即使可以完成计价、储藏、交换的功能,也不能够成为通用货币。这个逻辑也可以解释我们生活中的诸多困惑,如为什么人民币这些年在国际上的地位上升?是因为国家实力强大了。为什么欧盟内部一有风吹草动,欧元就下跌?是因为人们对欧盟的信心下降……
二、国家和银行一起,重新塑造了货币概念
货币的发行,背后的国家信用才是核心与关键。其实,在货币发行的过程中,还有一个枢纽就是中央银行。国家通过赋予中央银行的法定权力来进行货币的发行。一方面国家主导了法定货币的发行,能够获得长期稳定的资金,国家的权力变得很大。另一方面,政府可以通过货币的发行控制整个 社会 的信用规模,对经济进行调节和控制。因此,货币是国家信用在起主导作用。所以,在“国家”仍然是人类 社会 最重要的组织形式大背景下,如果抛开国家信用谈货币,那是毫无道理与不切实际的。
回过头再来看比特币这个事,就可以明白。比特币是一种数字加密技术,在很多场景下能够完成货币的传统功能,计价、支付、储藏。也许数字货币可能是未来货币发行的一个方向,但只要“国家”这个概念还在,像比特币这样去中心化的货币,要取代各国央行发行的法定货币,我觉得可能性非常低。
欢迎评论区评论。(伍度飞絮)
混沌大学来回答这个问题,请看视频:
去中心分布式庞氏骗局--虚拟币或者区块链
很多人不了解虚拟币或者区块链的基本技术知识,被它各种高大上的名词给忽悠了,却忽视了最最基本的常识!
不管你懂不懂经济,钱不是被凭空创造的,这是基本常识,没有哪个国家可以靠印钱就富了。但比特币却是的,所有标榜区块链的也不过是为了发币,结果它们被凭空创造,没有任何价值。
当初比特币的目标是成为一种货币,交换是货币的必然属性,可是比特币做不到。骗子却发现了它另外一个价值,兑换!通过所谓的交易所打通和法币的兑换,利用炒作操纵,可以得到真正的钱。
首先没有所谓的区块链技术,搞区块链就没有不发币的,区块链本质上就是HASH链表,谈不上革命性。不可篡改性主要来自非对称加密算法,银行、支付宝、微信什么的,好多地方在用,也用了好多年,跟区块链没关系。区块链发明了挖矿的安全方式(也可以叫共识机制),这是唯一的创造,所以说虚拟币等于区块链,没有区别!
其次最早鼓吹区块链的恰恰是币圈大佬,什么李笑来、吴忌寒等等之流,因为虚拟币投机实在是让人诟病,所以拿了区块链做幌子。区块链不过是HASH链表,出现10年以上,从来没有发现它可以称的上是伟大。可笑的是,愣是让一帮投机骗子给炒成了划时代的技术。
区块链为什么只发币,却没有一个有价值的应用落地?因为挖矿的方式、分布式节点等等技术已经决定了,它速度慢、容量小、成本高、隐私保护差的特点,而且不发币不行,不发都没法运行。
如果把区块链当作数据库看(阿里是这么认为的),任何一个其他的数据库,加一个简单的服务器集群,可以比区块链效率高1千甚至百万倍以上解决问题。为了扯上区块链,把事情搞得无比复杂。区块链能解决的问题,已经被人类很好的解决了,区块链的不可篡改性早就在其他领域实现了,你见过支付宝腾讯银行篡改过你的余额吗?!一个已经低成本高效率解决了的问题,在骗子的嘴里变成了划时代的技术,不过是炒作虚拟币的幌子!
至于挖矿带来的安全性,成本很高,也不是绝对安全。51%攻击等早就出现,挖矿中心化也带来矿池的特权,可以拒绝特定转账,没有下限的还能硬分叉,甚至回滚。10年过去了,极客精神早就不见了踪影,目前看来除了炒作没有一个能落地的应用。
大家都关心币价,这其实已经说明了这个技术可用性很差,基本沦为炒作和圈钱的工具。互联网出来5年就带来巨大变化,区块链10年带来了什么?除了炒作还是炒作。解决不了痛点,没有技术优势,不发币就是渣渣(连炒作的价值都没有),不要再被区块链忽悠了!
都说比特币是旁氏骗局,可是币圈大佬们辩解比特币不受任何人控制,专家也被搞蒙了,确实找不出来一个操盘的头目或集团啊!
其实这是一种史无前例的新形态,就是去中心分布式旁氏骗局,它由比特币的性质决定,其实所有的区块链项目也是一样的模式,因为属性一样,所以也是去中心化来骗。这种方式很高明,已经到了让骗子到了肆无忌惮的地步,不信看看ICO有多坑。
虚拟币的去中心化属性,看似没有某个人或集团控制,但是它创造了一个持有者群体。这个群体虽然是去中心化的,却有着共同的共识,提高币价,将手中的虚拟数字变成实实在在的钱!于是各种类似传销的手法就粉墨登场了,什么信仰、划时代、最伟大、永远涨啊等等,还热衷搞活动、峰会,常常也是由持币大佬、矿场、交易所等所有这些利益相关者资助。
大家一起来忽悠,大家一直来培养韭菜,大家一起来割。由于去中心化,大家的步调也不可能完全一致,所以各种分赃不均、互相撕逼、狗咬狗的事情天天都在上演!
为什么骗子能如此肆无忌惮呢?去中心化让每位参与者都安全了,都不是目标,都不用承担任何法律责任,所以才造就了这个人类 历史 上最大的骗局。骗子为什么要号称比特币涨到100万,你想想如果有个股票会涨到100万,现在只有1万你会告诉别人吗?不可能!
而前面不断的炒作与上涨,竟然让骗子都有了预言家的光环。但是有违常识和规律,其中必有妖啊。所有虚拟币其实就是赤裸裸的发假币,然后换走人们手上的真钱,留下一地鸡毛。
建议国家应该象打击传销一样打击虚拟币,不要被大佬们扣来的打击技术进步的帽子蒙蔽了。不信你再等10年100年,所谓的区块链技术也带不来任何进步,只会带走真正钱。
最后,任何技术如果不是以创造价值为目标,而是以造币为目标,它一定就是在制造假币!
随着世界各国对比特币的理解及应用,我相信它未来能成为一种世界性的通用货币。
眼前比特币的发展,对法币形成了冲击,引起各国政府的限制。这就注定比特币的发展不会一帆风顺,它的产生就带着推翻世界旧货币体制的责任。
国家开放比特币,不是主动的,只是不得已而为之。因为世界上绝大部分国家没有禁止,如果我们盲目禁止,就是自绝与世界数字货币潮流。开放比特币,对于传统货币管理机构来说是个巨大的挑战,有可能侵犯原有既得利益集团利益。长远来看比特币的发展能促进金融效率,同时也带来诸多问题。平时依靠管控法币可以管控的交易,将变得难以监管。众所周知的暗网就可以用比特币交易非法商品。
比特币的发展如果顺利的话,它会毫不留情地冲击各国法币地位。以往通过操纵汇率可以实现的管控,将变得难以控制。以往政府的破产对经济体的冲击,将会减小。人们在经济上享有更多话语权,各国当局难以通过增发货币来掠夺居民财富等等!我相信比特币的经济秩序,整体来看是美好的!说不定还会影响国际政治格局。
Ⅲ 关于比特币的谜题(完结)
你可曾想过: 为什么矿机算力越大越好?(既然是解数学题那为什么不是拼谁的算法厉害啊喂!) 比特币的数量总和为什么是2100万? 比特币盗窃是怎么回事? 我不玩比特币,就真的与比特币无关了吗…… 🤔️
关于大众不再感到陌生的比特币,背后还有许多巧妙之处。本文介绍了比特币的基本原理和主要原则,并结合对部分技术细节的剖析,来对上述的一些疑问作出解答。全文较长,约7000字,阅读时间约为22分钟,建议收藏后阅读😁
文章可以分成以下几个部分:
* 比特币先验知识
-- 密码学相关
-- 比特币重要概念
* 交易的生命周期
* 区块链的构成
* 区块链的生长
-- “挖矿”的数学本质
-- “矿工”的收益
* 比特币的共识机制
-- 比特币的去中心化共识
-- “最长链优先”原则
* 比特币安全性
比特币作为第一个去中心化的数字货币,其设计中运用了不少的密码学相关知识,主要包括非对称加密技术、哈希函数等等。理解这些密码学知识,能帮助我们更好地理解比特币中的一些概念及规则。
以下是比特币的一些定义及概念解说,了解过的小伙伴们可以直接跳过~
在比特币这个创新的支付网络中,一个交易的生命周期大概可以分为几个阶段:创建、传播和被验证交织、被打包进区块记录到区块链中、获得更多的确认。图1对这几个阶段做出了示意。
注:
1⃣️一个支付方A在发起一个比特币交易时,会使用自己的私钥对交易信息的哈希值进行签名。因此A向全网广播的内容除了交易信息之外,还有自己的公钥信息、对消息的签名。其他矿工只要利用A的公钥即可对这个交易进行验证,判断是否真的由A创建。
2⃣️”交易传播和交易验证“交替意味着 各个节点基于一定的规则独立验证每个交易(共识基础1) , 一个节点只有认为这个交易有效才会把它继续传播出去。
比特币的底层技术是区块链。区块链系统是一种分布式共识系统,区块链网络中所有的参与节点将就交易的状态达成一致。
区块链到底是什么呢?你可以把它理解成一种分布式的交易的共享账本,以区块为基本单位链接在一起。交易信息将被整理并打包记录在区块中。每一个区块,包含区块头,以及紧跟其后的交易列表。区块头包含3个区块元数据集合:前序区块哈希(严格来说是前序区块头哈希,因为只有区块头被用于哈希运算)、元数据集(包括难度、时间戳、随机数等)、一个基于加密哈希来高效概括区块中所有交易的默克尔树(merkle tree)。了解这个结构,将帮助我们更好地理解挖矿的数学本质。
你可能听说过“挖矿”这个词,或者听说众人争相购买挖矿机器来发家致富。但让人疑惑的是:都说打包区块的本质是解数学难题,但单凭那些看似简陋的机器嗡嗡嗡疯狂耗费电力,就能确保自己解出比特币难题的胜率高了吗?比特币技术原理中,矿工们解决的数学题,难道是一个暴力破解题?
看了一圈,发现矿工们解决的题,还真有点暴力破解的意思,每次尝试解题的过程几乎都是茫茫然、去碰运气的。拼的是谁足够幸运,也拼谁算的足够快;算的快了么,试错次数多,自然胜算也就大了。
解题的背景是这样的—— 挖矿节点通过基于工作量证明算法(Proof-of-Work,POW)的证明运算,独立将交易汇聚到新区块中(共识基础2)。 当矿工从网络中接收到一个新的区块的时候,他发现自己已经在上一轮竞争中失败了,所以立即开始新区块的挖矿过程。为了创建一个新的区块,他从内存池中选择交易来填充区块(加入区块的第一笔交易是一个“铸币交易”,3.2节会给出详相关细节)。接下来是填充字段来创建区块头(包括前序区块的区块头哈希、交易的默克尔树(Merkel树)、时间戳、难度目标值、随机数),然后开始计算这个新区块的工作量证明。
这个计算的过程简单来说是对区块头部进行两次sha256运算,得到一个RESULT,如果这个RESULT满足特定要求,这个人才能算是算对了、才有权利去记账。满足要求的RESULT被称为“工作量证明”(中本聪论文中称为“proof of work”)。
关于这个计算过程,强调以下几点:
第一,区块头部,包含了前序区块头部的哈希、本区块交易信息的默克尔树、时间戳、难度目标值、随机数等信息(见图2)。
第二,哈希运算具有“知道y,无法推出使得h(x)=y成立的x”、“即使输入只改变一点点,输出也会差很多”、“利用任意长度的数据作为输入,生成一个固定长度的确定结果”的特性。所以大家也不知道什么样子的输入才能产生自己想要的结果,矿工只能不断尝试。
第三,前面说到,区块头哈希值需要满足一个特定要求才能成为工作量证明——小于某一阈值,或者说哈希值含有给定前缀。阈值的大小求和挖矿难度有关:挖矿难度是一个动态参数,其值越大,则阈值越小,说明哈希值符合要求的概率更小,矿工每次计算能成为工作量证明的概率越小。比特币有一个自我调节过程——通过对现有的挖矿算力情况进行估算,来对应调整挖矿难度,可以保证区块链每十分钟出一个块,达到控制发行速度的目的。(这个过程的基本思想类似产品笔试的数据估算题,根据“一个提供、一个需要“的思路去构造一个等式,然后求解等式一边的一个因子;想了解挖矿难度系统和调整方式的同学可以进一步查阅~)
综合以上三点来看,为了产生工作量证明,用户基本上会通过调整随机数来碰运气(因为其他字段基本不变)、进行多次运算直至符合要求,别无他法。如此一看,随机数就具有“幸运数字”的意味了。因此,平均来讲,谁计算的能力越强(尝试的次数越多),就更有希望打包块。
你可能会想,矿工这么心甘情愿地消耗算力去维护区块链,是受到怎样的利益驱使呢?简单来说,矿工的收益来源有二:1、计算出工作量证明,创造一个新区块所获得的新币奖励;2、记账矿工费。
当矿工找到工作量证明、打包一个新区块,并把区块传送给他的所有对等节点。 每一个挖矿节点都独立验证新区块、把合格的新区块整合进区块链(共识基础3) ,并把这个区块继续传给自己的对等节点。结果是,只有经过验证的区块才会在网络当中广泛传播,保证了诚实矿工挖出的新区块能被区块链所接纳。挖矿成功的个体节点或集体节点,可以同时获得新币奖励和记账矿工费。
新币奖励类似于货币的发行,其遵循规则是,第一个四年每一个新区块产生50btc,第二个四年每一个新区块产生25btc,第三个四年每个新区块产生12.5btc,如此周期指数递减。按照等比数列求和可知,到2140年,比特币产生的总和约为21000000(所以说比特币数量有限,天生紧缩)。届时,不再随区块的产生增加新的比特币,矿工不再拥有第一项收益。但现实中,由于挖矿成本高昂,挖矿成功的往往是是一个矿池的所有参与者。收益被分给矿池地址,矿池按照组内算力贡献比例来分摊收益的。
记账矿工费又称交易费用,以交易输入和交易输出之间的差值的形式存在;一个区块的总交易费用是对加入区块的所有交易的(交易输入-交易输出)求和。一般来说,矿工费越高的交易,会越快被处理。而矿工费在这里起到两个作用,一个是奖励矿工,另一个是防止主链滥用(防止大家发送交易垃圾信息,因为提出交易是有一定代价的)。
矿工的收益以什么样的形式被验证呢?这里不得不提到 “铸币交易” 。每个计算机节点在进行工作量证明计算之前加入区块的第一笔交易,正是“铸币交易”。这个交易从无到有生成比特币,其金额是新币奖励与记账矿工费的总和,被支付到挖矿矿工自己的比特币地址。如果矿工找到了一个工作量证明使区块有效,他就赢得了这个奖励,因为他构造的“铸币交易”生效了。
关于铸币交易和“新币奖励”,之前有一个读者问我:一个矿工把自己挖到新区块的消息公布出去,他的工作量证明 不会被别人剽窃 吗?
个人认为,至少“铸币交易”能防止这件事情发生。让我们来重申一下计算工作量证明的过程——一个矿工E在新区块里加入了奖赏自己的“铸币交易”,并利用时间戳、前序区块头哈希、随机数、本区块交易的merkle树等信息计算出一个符合要求的工作量证明。
在这个过程中,merkle树啥样子,取决于包括“铸币交易”在内的本区块所有交易信息。因此可以把铸币交易视为工作量证明的间接变量之一。那么,即使其他人拿到了E的工作量证明,这个工作量证明也是带有E的印记的、与奖赏E的铸币交易相关的,别人根本无法纳为己用。
你还可以通过设想以下的场景来加深对共识基础2“挖矿节点通过基于工作量证明算法的证明运算,独立将交易汇聚到新区块中”的理解。
为什么一个挖出新区块的矿工不悄悄使个心眼,在创建区块之初就把铸币交易的金额设成1000BTC呢?原因在于每个节点都是基于相同的规则来独立验证区块的。矿工必须创建完美的、符合公共规则的、正确依据工作量证明方法的区块;而一个无效的铸币交易会导致整个区块无效,并被其他节点拒绝,永远无法成为账本的一部分。可以预想,为了生成这个工作量证明,矿工们已经投入了巨大的算力和电量去挖矿,如果涉嫌欺诈而被否决,其为挖矿付出成本都付诸东流。
综上所述,矿工不能冒领他人的奖励,而拿到奖励的矿工也必须只能拿取符合规定的数额。
比特币的卓越之处,在于建立了一种去中心化的自发共识。这种共识是自发产生的,是成千上万在网络中遵循着共同规则的节点,在异步交互中形成的,不依赖于任何中央机构的调解和干涉。
关于比特币的4项主要共识基础,本文在讲解对应细节时有提及,下面做一个整合:
这四个过程相辅相成、互相作用,形成了自发的全网共识,促使全网节点组合出可信、公开、权威的总账。
你可能会想,比特币是一个去中心化的、基于大众信任的、依靠众人力量运转的一个东西。万一有一部分矿工被坏人收买了咋办呢?“51%攻击”指的又是什么?比特币交易所要求的“6个确认”又是怎么回事?
这里首先要提到比特币的一个规则“ 最长链优先 ”。意思是, 比特币的账单链在出现分叉的时候,每个矿工会独立选择长(累积了最多工作量证明)的链条,在上面继续挖矿工作(共识基础4) 。
这个原则主要涉及到两个问题:
当有两个矿工A和B同时挖矿成功(算出符合要求的数学答案)时,他们分别把自己计算出来的工作量证明作为下一个块的前序区块哈希,生成一个块衔接到原有的链后面,由此出现了两个分支。
这个时候,这两个成功的矿工广播了自己打包成功的消息。由于区块链是一个去中心化的数据结构,区块消息到达不同节点的时间点不一致,故不同的节点可能拥有不完全一样的区块链视图——有的矿工会先收到A的消息,有的则先收到B的消息。为了解决这个问题,收到消息的矿工们遵循一个原则:选择并尝试延长最长的链。
因此,这两条分支会各自成长一小段时间,直到他们的长度出现差异(不可能长度一直相同),比如说其中一条链的矿工们,更快地打包在支链后面又加上一块。按照“最长链优先“的规则,较短的链会被抛弃,原本工作在短链上的矿工们都回到长链上工作。
换言之,分叉只是不同节点暂时的不一致现象,当新区块被加入到其中某一分支时,最终收敛将解决这一个问题。[读者可以思考一下,为什么区块链被设置成每十分钟挖出来一个块:如果时间短了,是不是就增加了分支产生的次数?如果时间长了,是不是交易结算的效率就太低了?]
双重支付的本质其实也是区块链的分叉,但这种分叉却是“非自然恶意蓄谋”的产物。
我们假设小敏是密谋双重支付的一方,她把自己仅有的10BTC先给小强、交换一块黄金,待这条交易信息P被打包进区块Q后,她从小强手中拿到了黄金。这时,小敏使了个心眼,她想偷偷抹去、篡改区块Q上的交易信息P,“白嫖”这块黄金。为了实现这样的目的,根据“最长链优先”法则,小敏必须剔除该笔交易P后、重新进行结算工作,集中算力来形成分叉,并让分叉以更快的增速超过并取代Q所在的主链。如果小敏确实能让分叉更长,分叉就成为了主链,其他节点也会转向新主链上继续工作。这样,小强付出了黄金,却没有收到这10个比特币,“赔了夫人又折兵”。
在这个过程中,小敏需要和原链进行“抗争”,使新分叉成为最长的主链,这被称为“共识攻击”。“共识攻击”本质上是对下一区块的争夺,攻击方越“强壮”、哈希算力越大,就越容易成功。
“共识攻击“成功的可能性有多大呢?
大多数比特币交易所规定,一个交易传送到区块链上后需要6个「确认」来完成验证该笔交易。这一规定的根据是,假设意图造假的矿工拥有10%的算力(挖矿成功概率0.1),那么造假矿工要构造另一条伪链实施长度超越,必须至少成功挖矿6次。那么原链被取代、被抛弃的概率约为0.1的6次方,趋近于0。你可以把比特币理解为地质构造层,表层可能因为季节变换而有所改变,甚至可能被风刮走,但一旦深入到地下,地质层就能更加稳定、不受干扰。
而假设有一群拥有了51%算力的矿工,他们控制了一半以上的全网哈希算力,可以故意在区块链中制造分叉、进行双重支付交易 。但事实是,全网哈希算力的大量增加,个体矿工几乎不可能控制哪怕1%的哈希算力了(但矿池带来的算力集中化控制,存在一定的风险)。更何况,如果真有拥有如此强大算力的组织,他完全可以凭借自己强大的算力投入到挖矿中去获取开发新区块所获的的比特币奖励,诚实挖矿比双花更有利可图。
尽管实际上并未出现51%攻击的问题,但不可否认的是,算力的集中违背了比特币去中心化这一初衷,并成为其继续发展的一大隐患。
一个系统的安全性,往往取决于系统安全的最薄弱环节,这也就是所谓的“木桶原理“。与区块链系统相关的安全性问题包括但不限于以下几项:
(1)在区块链上被广泛使用的公钥系统基本上是安全的,但量子算法在理论上能够破解公钥系统;因此,区块链的算法安全性是相对的。
(2)区块链协议本身存在逻辑缺陷,例如受到黑客攻击的区块链系统共识机制。
(3)所有数字货币系统高度依赖私钥,私钥在存储、使用方面的安全性成为区块链系统安全性中至关紧要的一环。
尽管区块链是去中心化系统,但目前绝大多数数字交易所却是中心化的,存在着人为安全漏洞及技术安全漏洞。这些数字交易所拥有存放大量加密货币的私钥,这对于黑客来说无疑是最瞩目的目标;只要黑客偷走了这些私钥,就可以获取到这些加密货币。
作者会继续阅读相关资料、不断完善本文,目标是完成一篇通俗易懂的比特币科普文章。:)
**本文系网上信息与个人理解的结合,如有偏差及误读,欢迎读者指出。也欢迎给出关于文章结构上的指导~
Ⅳ 比特币之挖矿与共识(二)
比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它 转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。
独立校验还确保了诚实 的矿工生成的区块可以被纳入到区块链中,从而获得奖励。行为不诚实的矿工所产生的区块将被拒绝,这不但使他们失 去了奖励,而且也浪费了本来可以去寻找工作量证明解的机会,因而导致其电费亏损。
当一个节点接收到一个新的区块,它将对照一个长长的标准清单对该区块进行验证,若没有通过验证,这个区块将被拒 绝。这些标准可以在比特币核心客户端的CheckBlock函数和CheckBlockHead函数中获得
它包括:
为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?
这 是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒 绝,因此,该交易就不会成为总账的一部分。矿工们必须构建一个完美的区块,基于所有节点共享的规则,并且根据正 确工作量证明的解决方案进行挖矿,他们要花费大量的电力挖矿才能做到这一点。如果他们作弊,所有的电力和努力都 会浪费。这就是为什么独立校验是去中心化共识的重要组成部分。
比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块, 它将尝试将新的区块连接到到现存的区块链,将它们组装起来。
节点维护三种区块:第一种是连接到主链上的,第二种是从主链上产生分支的(备用链),最后一种是在已知链中没有 找到已知父区块的。在验证过程中,一旦发现有不符合标准的地方,验证就会失败,这样区块会被节点拒绝,所以也不 会加入到任何一条链中。
任何时候,主链都是累计了最多难度的区块链。在一般情况下,主链也是包含最多区块的那个链,除非有两个等长的链 并且其中一个有更多的工作量证明。主链也会有一些分支,这些分支中的区块与主链上的区块互为“兄弟”区块。这些区 块是有效的,但不是主链的一部分。 保留这些分支的目的是如果在未来的某个时刻它们中的一个延长了并在难度值上超 过了主链,那么后续的区块就会引用它们。
如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被 保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从 孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有 可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。
选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链, 新块本身就代表它们的投票。
因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链全貌。
解决的办法是,每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就 是最长的或最大累计工作的链(greatest cumulative work chain)。节点通过累加链上的每个区块的工作量,得到建立这个链所要付出的工作量证明的总量。只要所有的节点选择最长累计工作的区块链,整个比特币网络最终会收敛到一致的状态。分叉即在不同区块链间发生的临时差异,当更多的区块添加到了某个分叉中,这个问题便会迎刃而解。
提示由于全球网络中的传输延迟,本节中描述的区块链分叉自动会发生。
然而,倒三角形的区块不会被丢弃。它被链接到星形链的父区块,并形成备用链。虽然节点X认为自己已经正确选择了获胜链,但是它还会保存“丢失”链,使得“丢失”链如果可能最终“获胜”,它还具有重新打包的所需的信息。
这是一个链的重新共识,因为这些节点被迫修改他们对块链的立场,把自己纳入更长的链。任何从事延伸星形-倒三角形的矿工现在都将停止这项工作,因为他们的候选人是“孤儿”,因为他们的父母“倒三角形”不再是最长的连锁。
“倒三角形”内的交易重新插入到内存池中用来包含在下一个块中,因为它们所在的块不再位于主链中。
整个网络重新回到单一链状态,星形-三角形-菱形,“菱形”成为链中的最后一个块。所有矿工立即开始研究以“菱形”为父区块的候选块,以扩展这条星形-三角形-菱形链。
从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。
然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。
2012年以来,比特币挖矿发展出一个解决区块头基本结构限制的方案。在比特币的早期,矿工可以通过遍历随机数 (Nonce)获得符合要求的hash来挖出一个块。
难度增长后,矿工经常在尝试了40亿个值后仍然没有出块。然而,这很容 易通过读取块的时间戳并计算经过的时间来解决。因为时间戳是区块头的一部分,它的变化可以让矿工用不同的随机值 再次遍历。当挖矿硬件的速度达到了4GH/秒,这种方法变得越来越困难,因为随机数的取值在一秒内就被用尽了。
当出现ASIC矿机并很快达到了TH/秒的hash速率后,挖矿软件为了找到有效的块, 需要更多的空间来储存nonce值 。可以把时间戳延后一点,但将来如果把它移动得太远,会导致区块变为无效。
区块头需要信息来源的一个新的“变革”。解决方案是使用coinbase交易作为额外的随机值来源,因为coinbase脚本可以储存2-100字节的数据,矿工们开始使用这个空间作为额外随机值的来源,允许他们去探索一个大得多的区块头值范围来找到有效的块。这个coinbase交易包含在merkle树中,这意味着任何coinbase脚本的变化将导致Merkle根的变化。
8个字节的额外随机数,加上4个字节的“标准”随机数,允许矿工每秒尝试2^96(8后面跟28个零)种可能性而无需修改时间戳。如果未来矿工穿过了以上所有的可能性,他们还可以通过修改时间戳来解决。同样,coinbase脚本中也有更多额外的空间可以为将来随机数的扩展做准备。
比特币的共识机制指的是,被矿工(或矿池)试图使用自己的算力实行欺骗或破坏的难度很大,至少理论上是这样。就像我们前面讲的,比特币的共识机制依赖于这样一个前提,那就是绝大多数的矿工,出于自己利益最大化的考虑,都会 通过诚实地挖矿来维持整个比特币系统。然而,当一个或者一群拥有了整个系统中大量算力的矿工出现之后,他们就可以通过攻击比特币的共识机制来达到破坏比特币网络的安全性和可靠性的目的。
值得注意的是,共识攻击只能影响整个区块链未来的共识,或者说,最多能影响不久的过去几个区块的共识(最多影响过去10个块)。而且随着时间的推移,整个比特币块链被篡改的可能性越来越低。
理论上,一个区块链分叉可以变得很长,但实际上,要想实现一个非常长的区块链分叉需要的算力非常非常大,随着整个比特币区块链逐渐增长,过去的区块基本可以认为是无法被分叉篡改的。
同时,共识攻击也不会影响用户的私钥以及加密算法(ECDSA)。
共识攻击也 不能从其他的钱包那里偷到比特币、不签名地支付比特币、重新分配比特币、改变过去的交易或者改变比特币持有纪录。共识攻击能够造成的唯一影响是影响最近的区块(最多10个)并且通过拒绝服务来影响未来区块的生成。
共识攻击的一个典型场景就是“51%攻击”。想象这么一个场景,一群矿工控制了整个比特币网络51%的算力,他们联合起来打算攻击整个比特币系统。由于这群矿工可以生成绝大多数的块,他们就可以通过故意制造块链分叉来实现“双重支 付”或者通过拒绝服务的方式来阻止特定的交易或者攻击特定的钱包地址。
区块链分叉/双重支付攻击指的是攻击者通过 不承认最近的某个交易,并在这个交易之前重构新的块,从而生成新的分叉,继而实现双重支付。有了充足算力的保证,一个攻击者可以一次性篡改最近的6个或者更多的区块,从而使得这些区块包含的本应无法篡改的交易消失。
值得注意的是,双重支付只能在攻击者拥有的钱包所发生的交易上进行,因为只有钱包的拥有者才能生成一个合法的签名用于双重支付交易。攻击者在自己的交易上进行双重支付攻击,如果可以通过使交易无效而实现对于不可逆转的购买行为不予付款, 这种攻击就是有利可图的。
攻击者Mallory在Carol的画廊买了描绘伟大的中本聪的三联组画(The Great Fire),Mallory通过转账价值25万美金的比特币 与Carol进行交易。在等到一个而不是六个交易确认之后,Carol放心地将这幅组画包好,交给了Mallory。这时,Mallory 的一个同伙,一个拥有大量算力的矿池的人Paul,在这笔交易写进区块链的时候,开始了51%攻击。
首先,Paul利用自己矿池的算力重新计算包含这笔交易的块,并且在新块里将原来的交易替换成了另外一笔交易(比如直接转给了Mallory 的另一个钱包而不是Carol的),从而实现了“双重支付”。这笔“双重支付”交易使用了跟原有交易一致的UTXO,但收款人被替换成了Mallory的钱包地址。
然后,Paul利用矿池在伪造的块的基础上,又计算出一个更新的块,这样,包含这 笔“双重支付”交易的块链比原有的块链高出了一个块。到此,高度更高的分叉区块链取代了原有的区块链,“双重支付”交 易取代了原来给Carol的交易,Carol既没有收到价值25万美金的比特币,原本拥有的三幅价值连城的画也被Mallory白白 拿走了。
在整个过程中,Paul矿池里的其他矿工可能自始至终都没有觉察到这笔“双重支付”交易有什么异样,因为挖矿程序都是自动在运行,并且不会时时监控每一个区块中的每一笔交易。
为了避免这类攻击,售卖大宗商品的商家应该在交易得到全网的6个确认之后再交付商品。或者,商家应该使用第三方 的多方签名的账户进行交易,并且也要等到交易账户获得全网多个确认之后再交付商品。一条交易的确认数越多,越难 被攻击者通过51%攻击篡改。
对于大宗商品的交易,即使在付款24小时之后再发货,对买卖双方来说使用比特币支付也 是方便并且有效率的。而24小时之后,这笔交易的全网确认数将达到至少144个(能有效降低被51%攻击的可能性)。
需要注意的是,51%攻击并不是像它的命名里说的那样,攻击者需要至少51%的算力才能发起,实际上,即使其拥有不 到51%的系统算力,依然可以尝试发起这种攻击。之所以命名为51%攻击,只是因为在攻击者的算力达到51%这个阈值 的时候,其发起的攻击尝试几乎肯定会成功。
本质上来看,共识攻击,就像是系统中所有矿工的算力被分成了两组,一 组为诚实算力,一组为攻击者算力,两组人都在争先恐后地计算块链上的新块,只是攻击者算力算出来的是精心构造 的、包含或者剔除了某些交易的块。因此,攻击者拥有的算力越少,在这场决逐中获胜的可能性就越小。
从另一个角度 讲,一个攻击者拥有的算力越多,其故意创造的分叉块链就可能越长,可能被篡改的最近的块或者或者受其控制的未来 的块就会越多。一些安全研究组织利用统计模型得出的结论是,算力达到全网的30%就足以发动51%攻击了。全网算力的急剧增长已经使得比特币系统不再可能被某一个矿工攻击,因为一个矿工已经不可能占据全网哪怕的1%算 力。
待补充
待补充
Ⅳ 详解比特币挖矿原理
可以将区块链看作一本记录所有交易的公开总帐簿(列表),比特币网络中的每个参与者都把它看作一本所有权的权威记录。
比特币没有中心机构,几乎所有的完整节点都有一份公共总帐的备份,这份总帐可以被视为认证过的记录。
至今为止,在主干区块链上,没有发生一起成功的攻击,一次都没有。
通过创造出新区块,比特币以一个确定的但不断减慢的速率被铸造出来。大约每十分钟产生一个新区块,每一个新区块都伴随着一定数量从无到有的全新比特币。每开采210,000个块,大约耗时4年,货币发行速率降低50%。
在2016年的某个时刻,在第420,000个区块被“挖掘”出来之后降低到12.5比特币/区块。在第13,230,000个区块(大概在2137年被挖出)之前,新币的发行速度会以指数形式进行64次“二等分”。到那时每区块发行比特币数量变为比特币的最小货币单位——1聪。最终,在经过1,344万个区块之后,所有的共20,999,999.9769亿聪比特币将全部发行完毕。换句话说, 到2140年左右,会存在接近2,100万比特币。在那之后,新的区块不再包含比特币奖励,矿工的收益全部来自交易费。
在收到交易后,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表:
交易的语法和数据结构必须正确。
输入与输出列表都不能为空。
交易的字节大小是小于MAX_BLOCK_SIZE的。
每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。
没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。
nLockTime是小于或等于INT_MAX的。
交易的字节大小是大于或等于100的。
交易中的签名数量应小于签名操作数量上限。
解锁脚本(Sig)只能够将数字压入栈中,并且锁定脚本(Pubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。
池中或位于主分支区块中的一个匹配交易必须是存在的。
对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。
对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,那么将被加入到孤立交易池中。
对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。
对于每一个输入,引用的输出是必须存在的,并且没有被花费。
使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。
如果输入值的总和小于输出值的总和,交易将被中止。
如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。
每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。
以下挖矿节点取名为 A挖矿节点
挖矿节点时刻监听着传播到比特币网络的新区块。而这些新加入的区块对挖矿节点有着特殊的意义。矿工间的竞争以新区块的传播而结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的开始。
验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交易记录。
A节点需要为内存池中的每笔交易分配一个优先级,并选择较高优先级的交易记录来构建候选区块。
一个交易想要成为“较高优先级”,需满足的条件:优先值大于57,600,000,这个值的生成依赖于3个参数:一个比特币(即1亿聪),年龄为一天(144个区块),交易的大小为250个字节:
High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000
区块中用来存储交易的前50K字节是保留给较高优先级交易的。 节点在填充这50K字节的时候,会优先考虑这些最高优先级的交易,不管它们是否包含了矿工费。这种机制使得高优先级交易即便是零矿工费,也可以优先被处理。
然后,A挖矿节点会选出那些包含最小矿工费的交易,并按照“每千字节矿工费”进行排序,优先选择矿工费高的交易来填充剩下的区块。
如区块中仍有剩余空间,A挖矿节点可以选择那些不含矿工费的交易。有些矿工会竭尽全力将那些不含矿工费的交易整合到区块中,而其他矿工也许会选择忽略这些交易。
在区块被填满后,内存池中的剩余交易会成为下一个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输入时所引用UTXO的深度(即交易“块龄”)也会随着变大。由于交易的优先值取决于它交易输入的“块龄”,所以这个交易的优先值也就随之增长了。最后,一个零矿工费交易的优先值就有可能会满足高优先级的门槛,被免费地打包进区块。
UTXO(Unspent Transaction Output) : 每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。
块龄:UTXO的“块龄”是自该UTXO被记录到区块链为止所经历过的区块数,即这个UTXO在区块链中的深度。
区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。假设此时一个区块的奖励是25比特币,A挖矿的节点会创建“向A的地址支付25.1个比特币(包含矿工费0.1个比特币)”这样一个交易,把生成交易的奖励发送到自己的钱包。A挖出区块获得的奖励金额是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。
A节点已经构建了一个候选区块,那么就轮到A的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。比特币挖矿过程使用的是SHA256哈希函数。
用最简单的术语来说, 挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。 哈希函数的结果无法提前得知,也没有能得到一个特定哈希值的模式。举个例子,你一个人在屋里打台球,白球从A点到达B点,但是一个人推门进来看到白球在B点,却无论如何是不知道如何从A到B的。哈希函数的这个特性意味着:得到哈希值的唯一方法是不断的尝试,每次随机修改输入,直到出现适当的哈希值。
需要以下参数
• block的版本 version
• 上一个block的hash值: prev_hash
• 需要写入的交易记录的hash树的值: merkle_root
• 更新时间: ntime
• 当前难度: nbits
挖矿的过程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。
简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6,你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。
如前所述,目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整?
比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币发行速率和交易达成速度的基础。不仅是在短期内,而是在几十年内它都必须要保持恒定。在此期间,计算机性能将飞速提升。此外,参与挖矿的人和计算机也会不断变化。为了能让新区块的保持10分钟一个的产生速率,挖矿的难度必须根据这些变化进行调整。事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标。简单地说,难度被设定在,无论挖矿能力如何,新区块产生速率都保持在10分钟一个。
那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。每2,016个区块(2周产生的区块)中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的(或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。
为了防止难度的变化过快,每个周期的调整幅度必须小于一个因子(值为4)。如果要调整的幅度大于4倍,则按4倍调整。由于在下一个2,016区块的周期不平衡的情况会继续存在,所以进一步的难度调整会在下一周期进行。因此平衡哈希计算能力和难度的巨大差异有可能需要花费几个2,016区块周期才会完成。
举个例子,当前A节点在挖277,316个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第277,316个区块(父区块为277,315)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。
每一个节点对每一个新区块的独立校验,确保了矿工无法欺诈。在前面的章节中,我们看到了矿工们如何去记录一笔交易,以获得在此区块中创造的新比特币和交易费。为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。
比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块,它将尝试将新的区块连接到到现存的区块链,将它们组装起来。
节点维护三种区块:
· 第一种是连接到主链上的,
· 第二种是从主链上产生分支的(备用链),
· 第三种是在已知链中没有找到已知父区块的。
有时候,新区块所延长的区块链并不是主链,这一点我们将在下面“ 区块链分叉”中看到。
如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。
选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。
因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是, 每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。
当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。
分叉之前
分叉开始
我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。
假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。
比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。
分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。
所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“红色”区块为胜出者的节点现在会看到两个链: “蓝色-绿色-粉色”和“蓝色-红色”。 如上图所示,这些节点会根据结果将 “蓝色-绿色-粉色” 这条链设置为主链,将 “蓝色-红色” 这条链设置为备用链。 这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识 。因为“红”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。全网将 “蓝色-绿色-粉色” 这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。
从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。
比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。
Ⅵ 深入了解区块链的共识机制及算法原理
所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。再通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。
要想整个区块链网络节点维持一份相同的数据,同时保证每个参与者的公平性,整个体系的所有参与者必须要有统一的协议,也就是我们这里要将的共识算法。比特币所有的节点都遵循统一的协议规范。协议规范(共识算法)由相关的共识规则组成,这些规则可以分为两个大的核心:工作量证明与最长链机制。所有规则(共识)的最终体现就是比特币的最长链。共识算法的目的就是保证比特币不停地在最长链条上运转,从而保证整个记账系统的一致性和可靠性。
区块链中的用户进行交易时不需要考虑对方的信用、不需要信任对方,也无需一个可信的中介机构或中央机构,只需要依据区块链协议即可实现交易。这种不需要可信第三方中介就可以顺利交易的前提是区块链的共识机制,即在互不了解、信任的市场环境中,参与交易的各节点出于对自身利益考虑,没有任何违规作弊的动机、行为,因此各节点会主动自觉遵守预先设定的规则,来判断每一笔交易的真实性和可靠性,并将检验通过的记录写入到区块链中。各节点的利益各不相同,逻辑上将它们没有合谋欺骗作弊的动机产生,而当网络中有的节点拥有公共信誉时,这一点尤为明显。区块链技术运用基于数学原理的共识算法,在节点之间建立“信任”网络,利用技术手段从而实现一种创新式的信用网络。
目前区款连行业内主流的共识算法机制包含:工作量证明机制、权益证明机制、股份授权证明机制和Pool验证池这四大类。
工作量证明机制即对于工作量的证明,是生成要加入到区块链中的一笔新的交易信息(即新区块)时必须满足的要求。在基于工作量证明机制构建的区块链网络中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。工作量证明机制具有完全去中心化的优点,在以工作量证明机制为共识的区块链中,节点可以自由进出。大家所熟知的比特币网络就应用工作量证明机制来生产新的货币。然而,由于工作量证明机制在比特币网络中的应用已经吸引了全球计算机大部分的算力,其他想尝试使用该机制的区块链应用很难获得同样规模的算力来维持自身的安全。同时,基于工作量证明机制的挖矿行为还造成了大量的资源浪费,达成共识所需要的周期也较长,因此该机制并不适合商业应用。
2012年,化名Sunny King的网友推出了Peercoin,该加密电子货币采用工作量证明机制发行新币,采用权益证明机制维护网络安全,这是权益证明机制在加密电子货币中的首次应用。与要求证明人执行一定量的计算工作不同,权益证明要求证明人提供一定数量加密货币的所有权即可。权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工本身。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。因此,PoS机制并没有从根本上解决PoW机制难以应用于商业领域的问题。
股份授权证明机制是一种新的保障网络安全的共识机制。它在尝试解决传统的PoW机制和PoS机制问题的同时,还能通过实施科技式的民主抵消中心化所带来的负面效应。
股份授权证明机制与董事会投票类似,该机制拥有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。基于DPoS机制建立的区块链的去中心化依赖于一定数量的代表,而非全体用户。在这样的区块链中,全体节点投票选举出一定数量的节点代表,由他们来代理全体节点确认区块、维持系统有序运行。同时,区块链中的全体节点具有随时罢免和任命代表的权力。如果必要,全体节点可以通过投票让现任节点代表失去代表资格,重新选举新的代表,实现实时的民主。
股份授权证明机制可以大大缩小参与验证和记账节点的数量,从而达到秒级的共识验证。然而,该共识机制仍然不能完美解决区块链在商业中的应用问题,因为该共识机制无法摆脱对于代币的依赖,而在很多商业应用中并不需要代币的存在。
Pool验证池基于传统的分布式一致性技术建立,并辅之以数据验证机制,是目前区块链中广泛使用的一种共识机制。
Pool验证池不需要依赖代币就可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础之上,可以实现秒级共识验证,更适合有多方参与的多中心商业模式。不过,Pool验证池也存在一些不足,例如该共识机制能够实现的分布式程度不如PoW机制等
这里主要讲解区块链工作量证明机制的一些算法原理以及比特币网络是如何证明自己的工作量的,希望大家能够对共识算法有一个基本的认识。
工作量证明系统的主要特征是客户端要做一定难度的工作来得到一个结果,验证方则很容易通过结果来检查客户端是不是做了相应的工作。这种方案的一个核心特征是不对称性:工作对于请求方是适中中的,对于验证方是易于验证的。它与验证码不同,验证码是易于被人类解决而不是易于被计算机解决。
下图所示的为工作量证明流程。
举个例子,给个一个基本的字符创“hello,world!”,我们给出的工作量要求是,可以在这个字符创后面添加一个叫做nonce(随机数)的整数值,对变更后(添加nonce)的字符创进行SHA-256运算,如果得到的结果(一十六进制的形式表示)以“0000”开头的,则验证通过。为了达到这个工作量证明的目标,需要不停地递增nonce值,对得到的字符创进行SHA-256哈希运算。按照这个规则,需要经过4251次运算,才能找到前导为4个0的哈希散列。
通过这个示例我们对工作量证明机制有了一个初步的理解。有人或许认为如果工作量证明只是这样一个过程,那是不是只要记住nonce为4521使计算能通过验证就行了,当然不是了,这只是一个例子。
下面我们将输入简单的变更为”Hello,World!+整数值”,整数值取1~1000,也就是说将输入变成一个1~1000的数组:Hello,World!1;Hello,World!2;...;Hello,World!1000。然后对数组中的每一个输入依次进行上面的工作量证明—找到前导为4个0的哈希散列。
由于哈希值伪随机的特性,根据概率论的相关知识容易计算出,预计要进行2的16次方次数的尝试,才能得到前导为4个0的哈希散列。而统计一下刚刚进行的1000次计算的实际结果会发现,进行计算的平均次数为66958次,十分接近2的16次方(65536)。在这个例子中,数学期望的计算次数实际就是要求的“工作量”,重复进行多次的工作量证明会是一个符合统计学规律的概率事件。
统计输入的字符创与得到对应目标结果实际使用的计算次数如下:
对于比特币网络中的任何节点,如果想生成一个新的区块加入到区块链中,则必须解决出比特币网络出的这道谜题。这道题的关键要素是工作量证明函数、区块及难度值。工作量证明函数是这道题的计算方法,区块是这道题的输入数据,难度值决定了解这道题的所需要的计算量。
比特币网络中使用的工作量证明函数正是上文提及的SHA-256。区块其实就是在工作量证明环节产生的。旷工通过不停地构造区块数据,检验每次计算出的结果是否满足要求的工作量,从而判断该区块是不是符合网络难度。区块头即比特币工作量证明函数的输入数据。
难度值是矿工们挖掘的重要参考指标,它决定了旷工需要经过多少次哈希运算才能产生一个合法的区块。比特币网络大约每10分钟生成一个区块,如果在不同的全网算力条件下,新区块的产生基本都保持这个速度,难度值必须根据全网算力的变化进行调整。总的原则即为无论挖矿能力如何,使得网络始终保持10分钟产生一个新区块。
难度值的调整是在每个完整节点中独立自动发生的。每隔2016个区块,所有节点都会按照统一的格式自动调整难度值,这个公式是由最新产生的2016个区块的花费时长与期望时长(按每10分钟产生一个取款,则期望时长为20160分钟)比较得出来的,根据实际时长一期望时长的比值进行调整。也就是说,如果区块产生的速度比10分钟快,则增加难度值;反正,则降低难度值。用公式来表达如下:
新难度值=旧难度值*(20160分钟/过去2016个区块花费时长)。
工作量证明需要有一个目标值。比特币工作量证明的目标值(Target)的计算公式如下:
目标值=最大目标值/难度值,其中最大目标值为一个恒定值
目标值的大小与难度值成反比,比特币工作量证明的达成就是矿中计算出来的区块哈希值必须小于目标值。
我们也可以将比特币工作量的过程简单的理解成,通过不停变更区块头(即尝试不同nonce值)并将其作为输入,进行SHA-256哈希运算,找出一个有特定格式哈希值的过程(即要求有一定数量的前导0),而要求的前导0个数越多,难度越大。
可以把比特币将这道工作量证明谜题的步骤大致归纳如下:
该过程可以用下图表示:
比特币的工作量证明,就是我们俗称“挖矿”所做的主要工作。理解工作量证明机制,将为我们进一步理解比特币区块链的共识机制奠定基础。
Ⅶ 举例说明 比特币 干啥的,概念性文字就不要发了
比如说世界上只有10蹲黄金。用这10蹲黄金作为货币。用的人越多,就越值钱
Ⅷ 拥有一个比特币到底是拥有了一个什么东西
你拥有了一个比特币,实际上是拥有了一个价值物。
这个价值物拥有金融属性,因为它可以交易和变现。它也是一个收藏品,可以收藏起来,虽然不是以太坊等主链通过铸币协议定义的NFT,但是确确实实你可以收藏它。
你的这个比特币不属于任何一个国家,只属于一个钱包地址。它的产生实际上是一连串规则和共识机制构成下被产出的,就好像德州扑克全世界人都玩两把,因为大家都遵守一个规则,输赢很公平。比特币就是这样被全世界的矿工在这个规则下竞争记账产生归属权挖掘出来的。规则没人能改,因为铸币时就写好了,总量2100万枚,大家开始竞争记账。
这个币不难发现,它的价值来源于共识,如果全世界人民都认可,那么流动性的价值很大,那么币的价格也会趋于稳定。就像黄金,你可以在世界任何市场上拿黄金换点东西,无论一顿饭也好,还是一台电视也好。
这个币不受到任何国家的监管,因为是全人类记账的奖励。而不是一个国家发行的规则,因此是超脱国家层面的货币管理框架的。
这个币真正属于你是通过所有结点的确认诞生的,也就是说你拥有一个比特币,事实上任何一个结点上的我们都知道这件事。无匿名,所有的转账信息全结点都知道并且不能篡改。
说到这里,你如何看待比特币呢?
表面上像是拥有一个Q币一样,但是Q币是中心化,也就是说有一个公司来发行的,但是比特币它是一个去中心化的,不是由某个公司某一个人来控制的,也不受国家政权或者是机构的控制。比特币真正做到了私有财产不可侵犯。法院可以查封你的任何资产,却不能查封你的比特币。当然前提是你不提供自己的私钥。其实比特币更像是黄金而不是货币。因为货币的话,它要保证一定的通胀。有很多人不了解你的,你说比特币是骗局。这个也能理解,因为很多人根本就不了解什么是货币。货币的本质是信用。比如说法定货币是国家信用背书。相信国家所以钱才值钱。但是你想一下,比如说有些什么委内瑞拉这些国家,他们的国家信用肯定不行,货币大幅贬值。那这个时候比特币的这个价值就体现出来了。比特币的信用来自区块链技术的不可篡改特性,这也是比特币价值的由来。
一币一梦,至于是梦醒时分还是美梦成真,你猜!
我在学习,慢慢定投,看什么时候能拥有一个比特币,我觉得它是财富列车上车的票。
这事不知道,你们就赌吧
首先我也不懂,然后就算你去找资料也看不懂,只要知道最后等于钱(钱多钱少不确定)就可以了
获得了共识
获得一组密钥。公钥与私钥。
私钥就是你的比特币资产。
表示拥有了一个你信以为真的谎言,或者知道不存在比特币,但是假装比特币是真的,从而可以进入全球比特币大赌场,同时默默希望自己不是接最后一棒的人。
比特币是一串特殊的代码
存在你平台账户上,也可以储存到数字货币“钱包上”
比特币目前2.9W美金一枚,越来越多的人了解加入比特币
Ⅸ 开创Pow共识机制的BTC价值逻辑是什么
你所说的这种共同机制,它的设备的逻辑价值是用来升华。
Ⅹ 比特币———一个币值8万多元人民币
接触过数字货币的人对比特币都不陌生,它是数字货币的祖宗,如果你在2010年的时候用三美元买1万个比特币留到现在,那么现在你的身价是8亿多人民币,是不是不可思议
区块链技术被称为是继,蒸汽机,电,互联网,之后的一个划时代的标志,
比特币的底层技术是什么呢?
是区块链技术,那么区块链技术又是什么呢,举个通俗易懂的例子,你去招商银行存钱,存了100万,有一天招商银行的银行系统被黑客攻击了,并且把你的账户的钱转走了50万,你的存款单也丢了,这时候银行不想把你丢了的钱补给你,你是不是要抓狂。区块链就是有无数的存储系统,而且里面都存有相同的内容,没有人可以修改已经生产的账单,就像以前只有一个账本,但是用了区块链之后就有无数的记账账本,而且分布在各个地方。更专业一点说,区块链技术是由利用块链式数据结构来验证和存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式来保证数据传输和访问的安全,利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
但是现在是数字货币泛滥的年代,各种新的数字货币发行进行洗钱跑路,最后一地鸡毛,对于目前国家提倡的区块链技术和企业链改如果落到实地,这样的数字货币还是可以持有的,我们知道只有大公司才能上市,但是所以公司都能上链
如果你对某个数字货币非常了解,并且知道它的运营情况,有没有落地到实地帮助公司进行链改,技术支撑等,不然尽量不要去买。
回到BTC,BTC公链被称为区块链的1.0时代,采用的是POW共识机制,也就是工作量证明,你获得多少货币,取决于你挖矿贡献的有效工作,电脑性能越好,分给你的矿就越多,POW机制解决了拜占庭将军问题,就是在互相不信任的情况下,只要多少人都信任,那么就能保证系统的正确运作,但是也有一定的缺陷,就是处理交易的速度太慢,矿工们需要不断的通过计算来碰撞哈希值,这是劳民伤财且效率低下的。TPS系统吞吐量(用户并发量)7笔/秒。ETH这条公链被称为区块链的2.0时代,ETH提出了新的共识机制POW+POS(权益证明)简单来说就是你持有的币越多,你的权益就越高,因为你持有的币越多,持有币的时间越久,你的计算难度就会降低,挖矿会容易一些,TPS为21笔/秒。EOS被成为3.0的公链,DPOS共识机制(拜占庭容错的委托权益证明)对于POS机制的加密货币,每个节点都可以创建区块,并按照个人的持股比例获得“利息”,出块时间3秒,TPS为5000笔/秒。
一、从比特币看区块链技术
(一)比特币(Bitcoin)是一种数字加密货币比特币是一种数字加密货币,由中本聪(SatoshiNakamoto)2009 年1 月25 日设计上线。比特币的产生、发行和交易机制与传统货币不同。传统货币的产生、发行和交易依托于中央银行、商业银行等中心化的二元模式;而比特币的发行不需要中心化的金融中介,比特币社区用户可通过比特币区块链网络发行和管理数字加密货币。比特币是以黄金模式发行,人们形象地将该过程称为“挖矿(Mining)”,并将所有提供计算力的节点称为“矿工(Miner)”。目前,比特币挖矿的发行方式使每位矿工都可以从中获取6.25 个比特币的收益。实际上,比特币的发行过程是求解多重哈希值解方程(Hash Function)的过程。节点挖矿获得比特币的过程,是通过计算机进行大量计算求出合理的哈希值来实现的。简而言之,这个过程的主要目标是求解交易双方的公钥。每次求出的解都会作为下次计算的初始条件,节点在此基础计算新结果。当一个节点解出一组之前未解出的哈希值时,系统向全网络发布,各节点查验本地数据库。如果各节点发现该解正确,并且数据库中没有此解记录,将确认并记录该解的合法性。当所有节点都确认并记录完毕时,求出该解的节点便被奖励一定数量的比特币。作为比特币最底层的核心技术,区块链技术来源于2014 年10 月大英图书馆的一次研讨会。比特币是区块链技术最成功的金融应用,它以公开账本的形式在全网记录所有交易信息。随着比特币的普及和应用,区块链技术日益受到金融 科技 界的关注。
(二)区块链是弱中心化的分布式账本协议区块链技术提供了一份公共的分布式安全账本,是一种开放式的价值传递协议。实际上,区块链是一个由使用密码学方法相关联产生的数据块构成的弱中心化的数据库,任何发生在此区块链网络上的交易,均会以约定的算法记录到区块链系统上。所有节点都保存一份完整的数据备份,包含自该区块链系统形成以来的所有交易记录。区块链由一个个区块组成。区块是区块链的基本存储单元,记录了10 分钟内各节点的全部交易信息。每一个数据区块中包含一次交易信息,用于验证信息的有效性,并为下一个区块的生成做准备。区块由三部分组成:本区块的地址、交易单和前一个区块的地址。当区块链上一个节点发起一笔交易时,该节点需要将信息向其他节点进行公告。该节点用私钥加密信息,从而可有效防止信息伪造。由于了解 历史 交易信息,收到信息的节点利用备份信息能够判断交易是否真实。各节点验证成功后,将最后一个区块的地址与交易信息结合,形成一个新区块,并打上时间戳(Timestamp)连接到区块链上,完成交易的全过程。由于每个区块都拥有前一个区块的地址,人们可以通过后一区块地址找到前一区块,直至初始区块。因此,区块链就是由根据时间顺序相连接的区块构成的完整交易信息链条。
(三)区块链的特点
区块链是一个全新的数据库系统,具有弱中心化、不可篡改、包容性等特点。其中,弱中心化、不可篡改是区块链技术区别于传统技术的核心特征。这两个特征使得由区块链技术构建的系统能够通过系统机制设置,实现“自信任”。
1. 弱中心化。区块链系统的每个节点都保存着一份完整数据备份,能够有效预防中央服务器发生故障而导致的网络瘫痪和数据丢失,以及黑客对单个节点的恶意攻击,从而保证数据的安全。除非有人能同时控制系统中超过51% 的节点,否则对于单个节点的攻击不能影响其他节点数据的内容。
2. 不可篡改。区块链系统是一个公共的总账本,系统全部数据都公开、透明地记录在该账本上。所有数据通过网络共识算法记录,每笔基于区块链交易的新信息都会向全网发布,经各个节点逐一确认、保存后,将收到的交易信息形成新区块,确保区块链系统信息不可篡改、无法作假、可以追溯。同时,区块链技术使用随机散列算法和时间戳技术,节点在验证时会盖上时间戳,提供交易时间证明,保证同笔交易的唯一性。如果要修改某个区块的交易信息,必须要完成该区块及之后区块的所有信息。由于修改后会造成哈希值与原来的哈希值不同,无法通过其他节点确认,将使得修改无效,大大提高了篡改信息的难度。因此,区块链技术可以为交易提供可靠的信用保证。其不可篡改的特性为解决合同冲突提供了有效方案,可以应用于存储并公证永久性记录和需要确保信息真实性的领域。如,财产所有权的公证。
3. 包容性。区块链技术以算法为基础,摒弃了不同国家文化和经济差异,使各国机构可以建立统一的信用体系。此外,区块链技术是对外开源和共享的:任何进入区块链的机构和个人,不仅能提交记录,还能得到完整的系统 历史 交易记录,并对信息所有者确权;同时,由于区块链系统运行于互联网,符合要求的任何机构和个人都能以节点的方式加入该系统。
4.溯源,公开透明。
因为区块链或者说是数字货币涉及的知识与比应用比较多,感兴趣的朋友可以点关注,我会整理和发布更多的区块链和数字货币的知识