精华内容
下载资源
问答
  • 比特币技术分享.pptx

    2020-10-30 12:19:26
    比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生 [1] 。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输...
  • 比特币技术开发 第一章 Bitcoin Overview.pdf,针对代码开发和理解有很大帮助
  • 比特币技术解析

    千次阅读 2019-08-10 13:23:12
    项目简介:这个项目到底干什么的? 它是这样一种电子支付系统,基于密码学原理而不基于信用,使得任何达成一致的双方,能够...这是白皮书上对比特币的一个定义,一句话来说就是一种点对点的电子现金系统。 分析:...

    项目简介:这个项目到底干什么的?

    它是这样一种电子支付系统,基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与。杜绝回滚(reverse)支付交易的可能,这就可以保护特定的卖家免于欺诈;而对于想要保护买家的人来说,在此环境下设立通常的第三方担保机制也可谓轻松加愉快。

    这是白皮书上对比特币的一个定义,一句话来说就是一种点对点的电子现金系统。

    分析:互联网上的贸易,几乎都需要借助金融机构作为可资信赖的第三方来处理电子支付信息,这样就无法实现完全不可逆的交易。金融中介的存在,也会增加交易的成本,且在实际的商业行为中,一定比例的欺诈性也被认为是不可避免的,基于种种现状,中本聪先生利用密码学原理,而非人为因素极高的第三方信用系统,开发了比特币。什么事情最有价值?只要有需求的事情就是有价值。作为一种解决问题的钥匙,比特币无可争议的成为开创区块链技术的先驱。

     

    经济模型:比特币的发行情况

    比特币总量2100个,最终产生的比特币数量,准确的说是0999999.97690000个,比2100万少一点。

    本货币系统就能够免于通货膨胀。

    比特币产生的时间表:

     

    50.00000000

    格林威治时间2009年1月3日18:15:05,创世区块诞生。创世区块的编号是0。从创世区块开始的”阶段1”,每个区块产生50个新的比特币或者说50亿聪。

    目标高度210000

    格林威治时间2012年11月28日15:24:38,编号第210000个区块产生。从这个区块起的”阶段2”,每个区块包含的新比特币数量减半为25个,这是历史上第一次减半。今后每产生210000个区块,比特币数量都会依次减半。直到第33次减半时,每个块产生0.0021个新比特币直接减为0个。

    4年1次的约定

    每4年减半是不太严格的说法。实际情况:比特币大约每10分钟产生一个区块,而210000个10分钟接近4年。分析:我们发现在比特币诞生的2009至2011年左右,比特币对挖矿设备要求极低,你甚至用智能手机都能挖,收益还不错.可能一个工程师值夜班无聊开动软件,睡了一觉就挖掘了几十万个比特币了,可是那会的比特币一毛钱都不值。随着时间的推移,比特币开采难度与已经被开采出来的货币量成正比,越往后开采难度越大,到了2030年2000万个比特币被开采出来后,剩下100万个比特币很可能需要几十年才能被开采出来。按照最初的设计,比特币将最终在2140年达到2100万个的极限。这种机制,决定了往后它的生产人数越多,生产难度就越高,而生产难度带来的成本激增,又会推动市场价格的上升(生产也是按照程序进行,被称为金矿开采)。这是货币的投资属性。越到后期,除非比特币的币值大于开采值,我猜会越来越多人从挖矿这个职业中退下来。

    增值逻辑:比特币的增值逻辑是什么?

    白皮书中是这样描述激励机制的:每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。这样就增加了节点支持该网络的激励,并在没有中央集权机构发行货币的情况下,提供了一种将电子货币分配到流通领域的一种方法。这种将一定数量新货币持续增添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。此时,CPU的时间和电力消耗就是消耗的资源。 另外一个激励的来源则是交易费(transaction

    fees)。如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中。只要既定数量的电子货币已经进入流通,那么激励机制就可以逐渐转换为完全依靠交易费,那么本货币系统就能够免于通货膨胀。

    分析:2100万枚总量封顶,通过内循环算力挖矿生成比特币,通过外循环流通为比特币提供交易场景,若比特币持有者数量众多,则形成通缩模型,进而带动比特币的稳定增值。

    1. 公链发Token。基于自身公链发行Token,总量2100万,典型的去中心化应用,形成信任机制;

    2. 内循环挖矿。比特币属于典型的数字货币,属于分布式记账的账本,比特币没有直接的使用场景,挖矿方式是通过算力,挖矿的最大成本是电费;

    3. 外循环流通。通过交易所进行比特币交易后,完成了外循环的流通,从而为内循环挖矿者带来流通价值,若流通的价格高于挖矿的成本,则对挖矿者带来投资收益;

    4. 内外一体化。待2040年比特币挖矿完成后,则主要通过交易所交易获得比特币;

    比特币是一种“去中心化”的电子货币,理论上确保了任何人、机构、或政府都不可能操控比特币的货币总量,或者制造通货膨胀。以上种种,稳坐数字货币第一把交椅的比特币,由于其稀缺性,供小于求,自然也就会有一定的市场。

    价格表现:根据K线分析当前的升值空间。

     

    比特币所有价格趋势图

     

    比特币近一年的价格趋势

    2010年5月21日,一名美国程序员用10000比特币购买了披萨饼的故事流传甚广,当时1个比特币的交易价格还不到1美分。这是比特币第一次在现实世界中被作为支付工具使用。只不过换算成今天的价格,10000比特币足以购买一所豪华庄园,这个披萨也被戏称为“史上最贵比萨”。此后几年来,越来越多的比特币爱好者开始尝试用比特币购买各种商品。及至2017年的时候比特币曾经创造过历史最高价格,最高值在20000美元左右。根据CoinDesk数字货币交易平台的数据显示,比特币价格在18年一度跌破6000美元,相较于2017年最高值20000美元已经下跌70%。 比特币顶峰时的价格太过膨胀,下跌也是必然的。它现在的价格基本就维持6000美元来回上下波动,但是从长远来看,数字货币的未来还是值得期待。

     

    流通情况:当前上线了多少交易所。

     

    分析:比特币毫无疑问流通市值第一名,而市价比重越高侧面反应这个币在区块链市场中地位相对重要稳定,技术,团队等权重较大。换手率第一,侧面反映大众市场对币的需求比其他代币要高。且上架了200家交易所,应该是只要有交易所,就有比特币的存在吧。当然,现在整体数字货币处于熊市,至少持有第一位的比特币,安全性要高很多。

    社区解读:社区的用户数和活跃情况。

    只要知道区块链知道数字货币的人,必然逃不开比特币,而且不管行情如何,比特币也是市场媒体第一个拿来说事的,所以其用户数和活跃情况基本一目了然。

    解读总结:

    比特币可以算作是密码工程学的一项巨作。比特币工作机制的验证原理相当复杂,大多数人对此技术仍无法理解,而对于比特币的种种争论也一直不断。但无论如何,作为一个划时代的产物,尤其是它的底层技术区块链(区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式),是现在无数国家和企业积极布局的一个大方向。而由“比特币”的基因已经和继续繁衍出愈来愈多的加密数字货币,形成了加密数字货币的“集群”,传统财富开始向数字财富转型。未来掌握在自己手里,希望我们在对“比特币”保持持续关注的同时,并就其对经济社会总体的影响进行独立思考,作出自己的独立判断。
    参考:https://www.jianshu.com/p/07c797eef202

    展开全文
  • 比特币技术栈的演进

    千次阅读 2020-02-17 14:48:51
    作者 |By Lucas Nuzzi编译 | smile,责编 | Carol出品 | 区块链大本营(ID:blockchain_camp)过去10多年,比特币生态系统吸引了大量开发者...


    作者 | By Lucas Nuzzi

    编译 | smile,责编 | Carol

    出品 | 区块链大本营(ID:blockchain_camp)

    过去10多年,比特币生态系统吸引了大量开发者投入上千小时来改善和改进其底层代码库。比特币( BTC )也基本相同。原因是定义其货币属性的共识规则核心集是保持不变的,比如算法通货膨胀和硬编码的供给是不变的。

     

    随着时间的推移,分叉一次次地想要改变这些属性,但所有敌对性地尝试都以失败告终。这是一个痛苦的过程,但也突出并固化了比特币的两大优点:没有单独一方可以决定比特币的发展,缺乏集中控制保护了比特币的货币属性。

    发展的障碍以及如何克服

    使比特币成为一种流行现象的价值也使得在比特币之上开发软件比在其他数字资产上更具有挑战。为了不破坏其存储价值,开发人员能够转换的数据是有限的。

    尽管如此,从下面的例子可以看出,在比特币中创新仍然是可能的,但是需要足够的创造力和耐心。

     

    因为改变比特币核心层需要一个可能会破坏其货币属性的准政治过程( quasi-political process ),因此创新常以模块的形式实现。这种开发与互联网协议套件的开发类似,不同协议的不同层专门用于实现特定的功能。比如,SMTP 负责处理邮件,FTP 负责处理文件,HTTP 负责处理 web 页面, IP 负责处理用户地址,TCP 负责处理包路由。以上每个协议都是经过不断地发展才有了我们当前的体验。

     

    Blockchain Capital 的Spencer Bogart 已经发现了这一发展苗头:我们正目睹着比特币拥有自己的协议套件。比特币核心层的不够灵活,当前已经催生了几个专门用于各种应用程序的附加协议,比如Lightning用于支付的 BOLT 标准。创新可以增加一定的安全性,因为这种分层的方法可以最大程度地降低潜在的风险。

     

    在下图中,研究人员尝试绘制了比特币技术栈最新的计划和相对完整的表示。从图中可以看出,区块链技术栈的创新正在从layer 2技术向智能合约解决方案全面推进了。

     

    注:但该图尚不完整,也不表明对图中所列技术的认可。   

             

    Layer 2

    Lightning Network(闪电网络)是比特币最杰出的Layer 2技术,最近有很多关于闪电网络采用率的讨论。其中批评者指出,在评估闪电网络用户采用率时,信道数和锁定的BTC总数都明显减少。但这些指标并不是采用率中最具代表性的衡量标准。

     

    闪电网络被低估的一个优点是其隐私属性。因为闪电网络不依赖于全局状态协调,因此用户可以使用其他技术和网络覆盖来直接进行交易,比如使用Tor网络。私有信道中发生的活动无法被主流的闪电浏览器捕获。

    因此,闪电网络的私有交易量的增加会导致可公开的内容的减少,导致有人可能会错误地认为采用率下降了。闪电网络在广泛采用之前还要克服实质性可用的障碍,但使用错误的指标来判断网络的当前状态是没有用的。

     

    近期,Layer 2隐私领域的另一大进展是WhatSat——闪电网络之上的私有消息系统。该项目是Lightning Network Daemon (LND)的一个修改版,LND允许对连接通信实体的私有消息进行小额支付来作为其服务的补偿。这种LND本身的创新实现了去中心化的、防审查和防垃圾邮件的聊天,比如闪电网络洋葱路由协议lightning-onion的改进。

     

    还有很多其他使用闪电网络私有小额支付的项目,包括基于闪电网络的云计算VPS、通过小额交易来共享收入的图像托管服务。研究人员将Layer 2定义为一套可以使用比特币基础层作为仲裁的应用,仲裁可以协调外部事件和解决争端。因此,比特币区块链的数据锚的主题已经超越了闪电,微软等公司也已经率先推出了比特币之上的去中心化ID系统。

     

     

    智能合约

    2010年,由于发现了比特币操作码中的一些错误,中本聪禁用了比特币编程语言Script的一些功能,在协议中删除了原始的比特币操作码。随后,有许多项目尝试以安全、可靠的方式将智能合约功能带回比特币中。

     

    经过这么多年的发展,研究人员发现高级表达的智能合约中伴随着潜在的安全风险。普遍的经验做法是向虚拟机中引入越多的功能,程序就越不可预测。近期,研究人员发现一些智能合约体系结构的新方法,新方法可以最大程度地减少不可预测性并可以提供大量的功能。

     

    其中一种名为Merklized Abstract Syntax Trees (MAST)的比特币智能合约新方法引发了新一轮比特币智能合约支持技术发展的浪潮。Taproot是MAST结构的实现,可以使整个应用以Merkle树的形式表示,其中树的每个分支表示不同的执行结果。

     

    最近出现的另一个创新趋势是用于比特币交易中保险箱(covenants)实现的新架构。保险箱最初是Greg Maxwell在2013年提出的一种假设实验,是一种限制余额使用方式的新方法。虽然该方法已经出现6年了,但在Taproot实现之前保险箱都是不切实际的的。当前,一种名为OP_CHECKTEMPLATEVERIFY(原名OP_SECURETHEBAG)的操作码正利用该技术来安全地在比特币中实现保险箱

     

    保险箱在借贷(和基于比特币的衍生品)背景下是非常有用的,因为能够创建针对特定比特币余额的策略。但是最比特币使用性的潜在影响远远超过了借贷。保险箱可以实现诸如Bitcoin Vaults之类的东西,即在托管情况下提供相当于第二个私钥的功能,允许用户冻结被黑客窃取的资金。

     

    Schnorr签名本质上是使这些新的智能合约方法成为可能的技术原语。目前还有一些正在理论证明阶段的技术,比如Scriptless Scripts。Scriptless Scripts可以使用完全私有和可扩展的比特币智能合约以数字签名的形式表示,而不是操作码。这些新方法可以在比特币之上构建新的智能合约应用。

     

    挖矿

    近年来,针对挖矿协议也有很多进展,尤其是矿池成员使用的协议。虽然比特币挖矿的集中化问题经常被夸大,但矿池运营者所拥有的算力结构可以进一步分散。

    也就是说,矿池运营者可以通过算力的分配来决定矿池成员将进行哪些交易。随着时间的推移,一些矿池运营者在未经成员同意的情况下滥用算力来进行交易审查、挖空块和重新分配哈希值等操作。

    挖矿协议的修改就是为了解决矿池算力集中的问题。对比特币挖矿来说,最重大的变化之一是矿池中使用最多的协议Stratum的第二版。Stratum V2是实现了BetterHash的一个完整协议,BetterHash是一个辅助协议,可以使矿池成员能够独自确定他们要挖矿的区块的组成。

     

    其他有助于提供稳定性的进展包括人们对哈希速率和难度系数的关注。

     

    隐私

    当前,又许多新协议都将更多的隐私选项引入了比特币。也就是说,未来几年,比特币隐私可能仍将是一门艺术而非一门科学。

    一般来说,跨数字资产进行私人交易的最大问题是解决方案不够成熟。关注交易图隐私的隐私资产往往会忽视网络层隐私,反之关注网络层隐私的隐私资产往往会忽视交易图隐私。这两个方向都缺乏成熟度和使用率,这使得通过P2P网络层或区块链层的统计分析可以很容易实现交易溯源。

    目前,有一些项目正在努力解决这两个方面的界限。

         

    对于交易图隐私来说,P2EP和CheckTemplateVerify这样的解决方案可以就足够了,因为效率比隐私更重要。CoinJoin中加入了许多新功能,可以提高为降低交易费用的用户的进行私人交易的采用率。在CoinJoin中,隐私仍然不是最佳的选择,但由于可以看到交易的金额,因此保留了比特币的可审计性。

     

    如果降低交易费用成为用户使用的主要攻击,就会导致比特币匿名集的增加,通过统计分析反匿名化会比目前更加主观。

     

    P2P通信的隐私方面也取得了很大的进步,像Dandelion这样的协议正在加密网络中进行测试。可替代的交易中继协议Erlay可以增加私有通信的效率,减少运行节点的开销。Erlay提高了效率,使得更多的用户可以轻松地完成IBD并持续对链进行验证,这对限制ISP带宽的国家来说非常有用。

     

    这只是个开始,演进还将继续

    总的来说,比特币是一套不断发展的协议,以上例子只是改进比特币技术框架的一部分。尽管在相对严格的一组规则和价值观中进行开发对于开发人员非常具有挑战性,但目前只有分层方法才使这种逐步的、有效的变更成为可能。在整个过程中要最小化比特币的政治,保护其基本的货币属性。开发人员也在学习如何在这种框架的限制下进行有意义的开发。

     

    原文:https://cointelegraph.com/news/the-evolution-of-bitcoins-technology-stack  

    本文为区块链大本营翻译,转载请注明来源出处。

    推荐阅读

    老铁们求在看!????

    猛戳“阅读原文”,填写中国远程办公-调查问卷

    展开全文
  • 比特币技术理解.pdf

    2019-10-30 19:32:06
    描述了对比特币工作原理的理解,将比特币使用的关键技术的细节给出了浅显易懂的理解。
  • 比特币技术开发 帮助文档:第6章Bitcoin The Blockchain ,是比较官方的技术帮助文档
  • 比特币技术分析

    千次阅读 2018-09-28 20:25:15
    比特币(BitCoin,BTC)是由中本聪在2009年提出基于区块链技术的一种数字货币实现;比特币网络是历史上首个经过大规模长时间检验的数字货币系统。根据中本聪的思路设计发布的开源软件以及建构其上的P...

    目录

     

     

    背景介绍

    相关的原理和设计

    基本交易过程

    重要概念

    账户/地址

    交易

    交易脚本 https://en.bitcoin.it/wiki/Script


     

    背景介绍

    比特币(BitCoin,BTC)是由中本聪在2009年提出基于区块链技术的一种数字货币实现;比特币网络是历史上首个经过大规模长时间检验的数字货币系统。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。

    第一个区块被称为创世区块或初始区块(Genesis Block)

    兑换价格网站:https://www.blockchain.com/charts/market-price?timespan=all

    历史上,在自然和人为因素的干预下,货币的形态经历了多个阶段的演化,包括实物货币、金属货币、代用货币、信用货币、电子货币、数字货币等。

     

    当前货币存在的问题

    “目前,无论是货币形式,还是信用卡形式,都需要额外的支持机构(例如银行)来完成生产、分发、管理等操作。“中心化”的结构带来了管理和监管上的便利,但系统安全性方面存在很大挑战。诸如伪造、信用卡诈骗、盗刷、转账等安全事件屡见不鲜。”

     

    相关的原理和设计

    比特币网络是一个分布式的点对点网络,网络中的矿工通过“挖矿”来完成对交易记录的记账过程,维护网络的正常运行。

    区块链网络提供一个公共可见的记账本,该记账本并非记录每个账户的余额,而是用来记录发生过的交易的历史信息。该设计可以避免重放攻击,即某个合法交易被多次重新发送造成攻击。

    基本交易过程

     

    比特币中没有账户的概念。因此,每次发生交易,用户需要将交易记录写到比特币网络账本中,等网络确认后即可认为交易完成。

    除了挖矿获得奖励的 coinbase 交易只有输出,正常情况下每个交易需要包括若干输入和输出,未经使用(引用)的交易的输出(Unspent Transaction Outputs,UTXO)可以被新的交易引用作为其合法的输入。被使用过的交易的输出(Spent Transaction Outputs,STXO),则无法被引用作为合法输入。[比特币的区块链账本里记录的是一笔又一笔的交易]

    因此,比特币网络中一笔合法的交易,必须是引用某些已存在交易的 UTXO(必须是属于付款方才能合法引用)作为新交易的输入,并生成新的 UTXO(将属于收款方)。

    那么,在交易过程中,付款方如何证明自己所引用的 UTXO 合法?比特币中通过“签名脚本”来实现,并且指定“输出脚本”来限制将来能使用新 UTXO 者只能为指定收款方。对每笔交易,付款方需要进行签名确认。并且,对每一笔交易来说,总输入不能小于总输出。总输入相比总输出多余的部分称为交易费用(Transaction Fee),为生成包含该交易区块的矿工所获得。目前规定每笔交易的交易费用不能小于 0.0001 BTC,交易费用越高,越多矿工愿意包含该交易,也就越早被放到网络中。交易费用在奖励矿工的同时,也避免了网络受到大量攻击。

    交易中金额的最小单位是“聪”,即一亿分之一(10^-8)比特币。

     

    重要概念

    账户/地址

    比特币采用了非对称的加密算法,用户自己保留私钥,对自己发出的交易进行签名确认,并公开公钥。

    比特币的账户地址其实就是用户公钥经过一系列 Hash(HASH160,或先进行 SHA256,然后进行 RIPEMD160)及编码运算后生成的 160 位(20 字节)的字符串。

    一般地,也常常对账户地址串进行 Base58Check 编码,并添加前导字节(表明支持哪种脚本)和 4 字节校验字节,以提高可读性和准确性。

    交易

    交易是完成比特币功能的核心概念,一条交易可能包括如下信息:

    • 付款人地址:合法的地址,公钥经过 SHA256 和 RIPEMD160 两次 Hash,得到 160 位 Hash 串;
    • 付款人对交易的签字确认:确保交易内容不被篡改;
    • 付款人资金的来源交易 ID:从哪个交易的输出作为本次交易的输入;
    • 交易的金额:多少钱,跟输入的差额为交易的服务费;
    • 收款人地址:合法的地址;
    • 时间戳:交易何时能生效。

    网络中节点收到交易信息后,将进行如下检查:

    • 交易是否已经处理过;
    • 交易是否合法。包括地址是否合法、发起交易者是否是输入地址的合法拥有者、是否是 UTXO;
    • 交易的输入之和是否大于输出之和。

    检查都通过,则将交易标记为合法的未确认交易,并在网络内进行广播。

    交易脚本 https://en.bitcoin.it/wiki/Script

    脚本(Script) 是保障交易完成(主要用于检验交易是否合法)的核心机制,当所依附的交易发生时被触发。通过脚本机制而非写死交易过程,比特币网络实现了一定的可扩展性。比特币脚本语言是一种非图灵完备的语言,类似 Forth 语言。

    一般每个交易都会包括两个脚本:负责输入的解锁脚本(scriptSig)和负责输出的锁定脚本(scriptPubKey)

    输出脚本一般由付款方对交易设置锁定,用来对能动用这笔交易的输出(例如,要花费该交易的输出)的对象(收款方)进行权限控制,例如限制必须是某个公钥的拥有者才能花费这笔交易。

    认领脚本则用来证明自己可以满足交易输出脚本的锁定条件,即对某个交易的输出(比特币)的拥有权。

    输出脚本目前支持两种类型:

    • P2PKH:Pay-To-Public-Key-Hash,允许用户将比特币发送到一个或多个典型的比特币地址上(证明拥有该公钥),前导字节一般为 0x00; 
    • P2SH:Pay-To-Script-Hash,支付者创建一个输出脚本,里边包含另一个脚本(认领脚本)的哈希,一般用于需要多人签名的场景,前导字节一般为 0x05;

    区块

    比特币区块链的一个区块不能超过 1 MB,将主要包括如下内容:

    • 区块大小:4 字节;
    • 区块头:80 字节:
    • 交易个数计数器:1~9 字节;
    • 所有交易的具体内容,可变长,匹配 Merkle 树叶子节点顺序。

    其中,区块头信息十分重要,包括:

    • 版本号:4 字节;
    • 上一个区块头的 Hash 值:链接到上一个合法的块上,对其区块头进行两次 SHA256 操作,32 字节;
    • 本区块所包含的所有交易的 Merkle 树根的哈希值:两次 SHA256 操作,32 字节;
    • 时间戳:4 字节;
    • 难度指标:4 字节;
    • Nonce:4 字节,PoW 问题的答案。

    可见,要对区块链的完整性进行检查,只需要检验各个区块头部信息即可,无需获取到具体的交易内容,这也是简单交易验证(Simple Payment Verification,SPV)的基本原理。另外,通过头部的链接,提供时序关系的同时加大了对区块中数据进行篡改的难度。

    共识机制

    传统共识问题往往是考虑在一个相对封闭的分布式系统中,允许同时存在正常节点、故障节点,如何快速达成一致。

    对于比特币网络来说,它是完全开放的,可能面向各种攻击情况,同时基于 Internet 的网络质量只能保证“尽力而为”,导致问题更加复杂,传统的一致性算法在这种场景下难以实用。

    因此,比特币网络不得不对共识的目标和过程都进行了一系列限制,提出了基于 Proof of Work(PoW)的共识机制。

    首先是不实现面向最终确认的共识,而是基于概率、随时间逐步增强确认的共识。现有达成的结果在理论上都可能被推翻,只是攻击者要付出的代价随时间而指数级上升,被推翻的可能性随之指数级的下降。

    此外,考虑到 Internet 的尺度,达成共识的时间相对比较长。按照区块(一组交易)来进行阶段性的确认(快照),提高网络整体的可用性。

    最后,限制网络中共识的噪音。通过进行大量的 Hash 计算和少数的合法结果来限制合法提案的个数,进一步提高网络中共识的稳定性。

     

    挖矿

    基本原理

    了解比特币,最应该知道的一个概念就是“挖矿”挖矿是参与维护比特币网络的节点,通过协助生成新区块来获取一定量新增的比特币的过程。

    当用户向比特币网络中发布交易后,需要有人将交易进行确认,形成新的区块,串联到区块链中。在一个互相不信任的分布式系统中,该由谁来完成这件事情呢?比特币网络采用了“挖矿”的方式来解决这个问题。

    目前,每 10 分钟左右生成一个不超过 1 MB 大小的区块(记录了这 10 分钟内发生的验证过的交易内容),串联到最长的链尾部,每个区块的成功提交者可以得到系统 12.5 个比特币的奖励(该奖励作为区块内的第一个交易,一定区块数后才能使用),以及用户附加到交易上的支付服务费用。即便没有任何用户交易,矿工也可以自行产生合法的区块并获得奖励。

    每个区块的奖励最初是 50 个比特币,每隔 21 万个区块自动减半,即 4 年时间,最终比特币总量稳定在 2100 万个。因此,比特币是一种通缩的货币。
     

    挖矿过程

    挖矿的具体过程为:参与者综合上一个区块的 Hash 值,上一个区块生成之后的新的验证过的交易内容,再加上自己猜测的一个随机数 X,一起打包到一个候选新区块,让新区块的 Hash 值小于比特币网络中给定的一个数。这是一道面向全体矿工的“计算题”,这个数越小,计算出来就越难。

    系统每隔两周(即经过 2016 个区块)会根据上一周期的挖矿时间来调整挖矿难度(通过调整限制数的大小),来调节生成区块的时间稳定在 10 分钟左右。为了避免震荡,每次调整的最大幅度为 4 倍。历史上最快的出块时间小于 10s,最慢的出块时间超过 1 个小时。

    为了挖到矿,参与处理区块的用户端往往需要付出大量的时间和计算力。算力一般以每秒进行多少次 Hash 计算为单位,记为 h/s。目前,比特币网络算力峰值已经达到了每秒数百亿亿次。

    汇丰银行分析师 Anton Tonev 和 Davy Jose 曾表示,比特币区块链(通过挖矿)提供了一个局部的、迄今为止最优的解决方案:如何在分散的系统中验证信任。这就意味着,区块链本质上解决了传统依赖于第三方的问题,因为这个协议不只满足了中心化机构追踪交易的需求,还使得陌生人之间产生信任。区块链的技术和安全的过程使得陌生人之间在没有被信任的第三方时产生信任。

     

     

    展开全文
  • 区块链,比特币技术书籍汇总,包括精通比特币,区块链技术原理解析,白皮书等
  • 比特币技术进阶

    2018-05-09 15:34:16
    比特币区块链技术进阶文档,对比特币和区块链技术详细介绍和总结
  • 精通比特币pdf

    2018-01-25 10:02:32
    比特币入门经典书籍,适合看完比特币白皮书之后再看。
  • 比特币技术和区块链

    2018-04-21 10:27:38
    详细讲解比特币技术的好书,有讲解比特币入门、原理、挖矿技术,核心编码等。
  • 第4章 Bitcoin P2P Network,对了解比特币技术原理和技术开发有很大帮助,是比较官方的技术开发文档
  • 比特币原理详解

    万次阅读 多人点赞 2019-10-29 11:12:13
    一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用...

    一、什么是比特币

    比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。

    二、问题引入

     假设现有4个人分别称之为ABCD,他们之间发起了3个交易,A转给B10个比特币,B转给C5个比特币,C转给D2个比特币。如果是传统的记账方式,这些交易会记录在银行的系统中,这些信息由银行来记录,我们相信银行不会随意添加、删除或修改一条交易记录,我们也不会关注到底有哪些交易,我们只关注自己的账户余额。而比特币的记账方式为ABCD每个人保存了这样一份账本,账本上记录了上述交易内容,如果每个人账本实时的一致,ABCD就不再需要银行。
            比特币是这样做的,每当有人发起一笔交易,他就要将一笔交易广播至全网,由全网中的某一个人,把一段时间内的交易打包好记录到一个区块上,再按照顺序把这些区块,一个一个的链接在一起,进而形成了一个链条,这就是所谓的区块链。

     

    那么问题来了

    1、我凭什么要参与这个系统,我为什么要动用自己的计算机资源来存储这些信息呢?

    2、以谁的记录为准呢?比如上面的账单顺序,A用户可能是这个顺序,但是B可能顺序不一样,甚至可能B根本就没有接收到C给D转账的这个消息。

    3、比特币如果做到支付功能,保证该是谁的钱就是谁的钱,而且只有其所有者才能花。

    4、如何防伪、防篡改以及双重支付,防伪是验证每条交易的真的是某人发出的,比如B可能杜撰一条消息,说某某给我转了一笔钱,这就是一个假消息,或者B说我给某人转了多少钱,但是实际上他并没有这么多钱,又怎么办。防篡改指的是B可能想从区块链上把自己曾经转给某人钱的记录删掉,这样他的余额就会增加。双重支付是指,B只有10比特币,他同时向C和D转10个比特币,造成双重花费。

    三、为什么要记账?

    因为记账有奖励,记账有手续费的收益,而且打包区块的人有系统奖励,奖励方案是,每十分钟生成一个区块,每生成一个区块会奖励一定数量的比特币,最开始是50个BTC,过4年会奖励25个BTC,再过4年再减少一半,以此类推。这样比特币的产生会越来越少,越来越趋近于一个最大值,计算公式是:50×6×24×365×4×(1+1/2+1/4+1/8+…)≈2100万,其中最初奖励50个比特币,每小时有6个区块,每天24小时,每年365天,前四年是如此,之后每四年减半。

    此外,记账奖励还有每笔交易的小额手续费,每个交易发起都会附带一定的手续费,这些手续费是给记账的矿工的。

    四、以谁为准?

    各个节点通过工作量证明机制来争夺记账权,他们计算一个很复杂的数学题,第一个计算出来的节点就是下一个区块的产生者。这个数学题很难,难到没有一个人能同过脑子算出来,它是基于概率的方法,矿工必须通过遍历、猜测和尝试的办法才能解开这个未知数。那么这个数学难题到底是什么呢?下面详细介绍。

    4.1哈希函数

    哈希函数又称为数字摘要或散列函数,它的特点是输入一个字符串,可以生成另外一个字符串,但是如果输入不同,输出的字符串就一定不同,而且通过输出的字符串,不能反推出输入。举个简单的例子,对1-100内的数模10,可以认为是一种哈希方法,比如98%10=8,66%10=6,98和66是输入,模10是哈希函数,8和6是输出,在这个模型中,通过6和8无法推断输入是66和98,因为还可能是56和88等,当然因为这个例子比较简单,所以会出现哈希碰撞,即66和56的结果都是6,输出的结果相同。一个优秀的哈希函数,可以做到输出一定不同,哈希碰撞的概率几乎为0。常见的哈希函数有很多,比如MD系列和SHA系列等,比特币采用的SHA256算法,即输入一个字符串,输出一个256位的二进制数。下面是程序运行的结果。

    通过程序结果可以看出,输入的源信息不同,得到的结果也不同(为了方便,结果用64位16进制表示),即使是orange多了一个句号,也会产生截然不同的结果。同时,通过输出的十六进制字符串,也无法倒推出输入。对于比特币,只要了解SHA256的功能即可,如果感兴趣可以深入了解SHA256的具体算法。需要SHA256的C++源码留言邮箱或私信。

    4.2挖矿原理

    首先介绍一下比特币每个区块的数据结构,每个区块由区块头和区块体两部分组成。

    区块体中包含了矿工搜集的若干交易信息,图中假设有8个交易被收录在区块中,所有的交易生成一颗默克尔树,默克尔树是一种数据结构,它将叶子节点两两哈希,生成上一层节点,上层节点再哈希,生成上一层,直到最后生成一个树根,称之为默克尔树根,只有树根保留在区块头中,这样可以节省区块头的空间,也便于交易的验证。

    区块头中包含父区块的哈希,版本号,当前时间戳,难度值,随机数和上面提到的默克尔树根。

     

     

    假设区块链已经链接到了某个块,有ABCD四个节点已经搜集了前十分钟内全网中的一些交易信息,他们选出其中约4k条交易,打包好,生成默克尔树根,将区块头中的信息,即发区块哈希+版本号+时间戳+难度值+随机数+默克尔树根组成一个字符串str,通过两次哈希函数得出一个256的二进制数,即SHA256(SHA256(str)) = 10010011……共256位,比特币要求,生成的结果,前n位必须是0,n就是难度值,如果现在生成的二进制数不符合要求,就必须改变随机数的值,重新计算,只到算出满足条件的结果为止。假设现在n是5,则生成的二进制数必须是00000……(共256位)。一旦挖矿成功,矿工就可以广播这个消息到全网,其他的矿工就会基于该区块继续挖矿。下一个区块头中的父区块哈希值就是上一个区块生成的00000……这个数。

    解决这个数学难题要靠运气,理论上,运气最好的矿工可能1次哈希就能算出结果,运气差的可能永远都算不出来。但是总体来看,如果一个矿工的算力越大,单位时间内进行的哈希次数就越多,就越可能在短时间内挖矿成功。

    那么n是如何确定的呢?比特币设计者希望,总体上平均每十分钟产生一个区块,总体上来看,挖矿成功的概率为1/2^n。现假设世界上有1W台矿机,每台矿机的算力是14T次/s = 1.4×10^13次/s,单位次/s称之为哈希率,10分钟是600s,所以10分钟可以做8×10^19次哈希运算,从概率角度看,想要挖矿成功需要做2^n次运算,可以列出等式2^n = 8×10^19,可以解出n约为66。所以对于这种方法,我们没有办法使得自己的运气变的更好,只能提高自己的算力,尽快的算出结果。

    另外,需要模拟挖矿过程的C++代码可以回复邮箱,代码可以通过调整难度值,模拟比特币的挖矿算法,控制区块产生的速度。

    五、如何防伪、防篡改、防双重支付等问题

    这部分是理解比特币很重要的部分。

    5.1电子签名技术

    身份认证技术在生活中很常见,可以是人脸识别、签字、指纹等,但是这些方法在数字货币领域并不安全,因为它们一旦数字化,都可以通过复制的方法伪造。所以比特币采用了电子签名的方法。

    注册成为比特币用户时,系统会根据随机数生成一个私钥,私钥会生成一个公钥,公钥又会生成一个地址,其中私钥必须保密,可以保存到硬盘里或者记到脑子里,因为这个私钥是使用相应地址上的比特币的唯一标识,一旦丢失,所有的比特币将无法使用。下面介绍具体的转换过程,不感兴趣可以不看,只要知道随机数->私钥->公钥->钱包地址这个过程,其中私钥可以对一串字符进行加密,而公钥可以对其进行解密,这就是非对称加密,这类算法总体上的功能都是一样的,只是具体算法有区别,由于这些算法比较复杂,与SHA265算法一样不多做介绍,感兴趣可以深入了解具体算法,但是对于比特币系统,只要了解其功能即可。典型的算法是RSA,比特币采用椭圆曲线加密算法。

    转换过程(选读,不影响理解)

        1、首先使用随机数发生器生成一个私钥,它是一个256位的二进制数。私钥是不能公开的,相当于银行卡的密码。

        2、私钥经过SECP256K1算法生成公钥,SECP256K1是一种椭圆曲线加密算法,功能和RSA算法类似,通过一个已知的私钥,生成一个公钥,但是通过公钥不能反推出私钥。

        3、同SHA256算法一样,RIPEMD160也是一种HASH算法,由公钥可以得到公钥的哈希值,而通过哈希值无法推出公钥。

        4、将一个字节的版本号连接到公钥哈希头部,然后对其进行两次SHA256运算,将结果的前4字节作为公钥哈希的校验值,连接在其尾部。

        5、将上一步的结果使用BASE58进行编码,就得到了钱包地址(相当于银行账户)。比如A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

    所以,通过以上的过程我们可以总结出私钥、公钥、钱包之间的关系如下图。可以看到通过私钥可以推出所有的值,公钥哈希和钱包地址之间可以通过BASE58和BASE58解码算法相互转化。

    了解了公钥、私钥、地址的概念后,防伪验证的过程就很容易理解,当A发起一笔交易后,对消息进行哈希,生成数字摘要,对数字摘要,通过私钥加密,生成一个密码。之后A会广播这个条交易消息、公钥以及密码。收到消息的人首先对交易信息进行哈希生成摘要1,再通过公钥对密码进行解密,生成摘要2,这样,如果两个摘要相同,说明这个消息确实是A发出的。所谓的签名,就是密文。

     

    5.2余额检查

    余额的概念应该说根深蒂固,余额是伴随着称之为借贷记账法而产生的,也是目前银行普遍采用的方法,将一个人的交易记录统计好后算出一个余额,但是在比特币中没有余额这个概念,因为其采用的是UXTO模型的记账方法。比如A->B10个比特币,B->C5个比特币,对于第二笔交易来说,B在发起这笔交易时要注明第一笔交易的信息,这样就可以知道B曾经从A那里收到过10个比特币,说明满足第二笔交易发起的条件。所以比特币中余额的检查是通过追溯的方法。

    上图描述了两笔交易,交易10001中,B向C转了10个比特币,验证这笔交易的过程是:首先将B的签名通过B的公钥解密,然后再和交易的具体内容(B签名左侧)对比,如果相同,说明消息是B发出的,然后再检查10000这个交易是否真的存在以及它的内容的真实性。这两点都满足了,就说明交易10001是可以被接受的,否则拒绝接受。

    实际上,真实的交易比这个复杂的多,因为有可能是多笔交易构成了输入,比如B->C20个比特币,是由多笔交易A->B10,D->B10构成的,则前一笔交易ID就是两个ID,甚至可能更多。这里为了简单描述,只列举一笔交易。

    5.3双重支付

    A同时发了两条消息,同时给B和C转了10个比特币,实际上他只有10个会怎么样?假设D节点先收到了转给B10个BTC,然后收到了转给C10个比特币,通过上面的验证方法,自然会拒绝后面的一个,与此同时,E节点可能先收到了转给C10个BTC,然后收到了转给B10个比特币,他自然会拒绝后者。至于哪一笔交易最终会上链,就要看D和E哪个先解决难题,成功挖矿。

    5.4防止篡改

    假设A转给B10个比特币,但是他想把这个信息从区块链上删除,这样大家就都不知道这个事情存在,就可以赖账。
            首先说一下最长链原则,假设某一个区块后面有两个矿工同时挖到了矿,或者由于网络延迟等原因产生了分歧,这时,各个节点先随意根据自己认为对的区块挖矿,只到下一个区块产生,这时会有两条链,但是有一条是长的,比特币规定,以最长的链为准。如果某个节点仍然的固执的以较短的链为准,他就是在和大多数算力作对,这样做的结果是,他挖的块不被大家认可,会浪费时间和算力。

    回到上面的场景,A想赖账,就只能从记录了A->B10个比特币这个消息的区块的前一个区块开始重新挖矿,造出一个支链来,但是实际上的区块已经前进了很多,他只能不停的追赶,而且在追赶的同时,主链也在前进,他必须以比主链快的速度前进,如果他的算力足够大,理论上通过较长的时间确实可以追赶成功,就实现了对交易信息的篡改。然而其实这几乎是不可能的,因为就算算力再大,平均出块速度也是10分钟,从非技术的角度讲,一个人如果掌握了全网一半以上的算力,他为什么不在主链上继续挖矿呢?一个富可敌国的人应该不会甘愿去做一个小偷吧。 

    六、总结

    区块链并不等同于比特币,比特币也不是区块链,区块链只是比特币应用的一种技术,这个技术能给我们带来启发,比特币的伟大之处在于应用了前所未有的区块链技术。区块链技术还能在哪些方面应用还需继续探索。

    比特币是区块链技术最成功的应用,但是比特币本身也有很多问题,它想通过发行货币来挑战主权货币,这个动机有待商榷。此外,由于比特币的匿名性,只需要一个公钥或地址就能进行交易,为黑色产业提供了很好的平台。另外,比特币并不是一个成熟的支付系统,它具有吞吐率低,可拓展性差等缺点。

    可能文字还是比较苍白,可以看看李永乐老师讲解的视频,虽然没有这个详细,但是通俗易懂。

    七、代码实现

    点击这里!

    展开全文
  • 第3章 Bitcoin Initialization and Startup,对了解比特币技术原理和技术开发有很大帮助,是比较官方的技术开发文档
  • 比特币技术开发 第二章 Bitcoin Data Storage.pdf,针对代码开发和理解有很大帮助
  • 本文档为普林斯顿大学《比特币和数字货币技术》公开课的讲义手稿。有447页,包含了公开课里面讲到的所有内容 本文档基本记录了上课时老师说过的话,内容详尽,很值得参考 另外附上《比特币和数字货币技术》公开课的...
  • 比特币技术原理----区块链的本质

    千次阅读 2021-05-13 11:42:11
    比特币技术原理----区块链的本质 比特币白皮书 2008年10月31日,一个密码学极客中本聪在“metzdowd.com(密码朋克)”网站的邮件列表中发表了一篇论文,题为《比特币:一种点对点式的电子现金系统》 创世区块...
  • 比特币的python实现,主要介绍比特币底层技术。如Base58编码、椭圆加密算法、MerkleTree、P2P对等网络、RPC通信、UTXO、虚拟机、DHT、DAG、链上数据的持久化存储等。
  • 比特币技术细节理解与记录

    千次阅读 2018-06-01 11:55:37
    本文更多是我对这篇文章的读书笔记,比特币的源代码我一行也没有看过。阅读本文需要对一些基本的算法或者专有... 将比特币作为产品来看,最核心的场景就是完成交易,如下图: 上图描述了比特币认可的交易场景(...
  • 那么就更别提比特币的底层技术区块链了。当然,这没什么不应该的,连最靠近新技术、新商业模式的创投圈,能真正说清楚比特币和区块链的朋友估计也不会很多。由于区块链技术本身是底层技术的创新,区块链概念从进入...
  • 最早是比特币的基础技术,目前世界各地均在研究,可广泛应用于金融等各领域。 比特币: 概念最初由中本聪在2009年提出,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字...
  • 比特币技术开发 第5章Bitcoin Initial Block Download,对了解比特币底层技术原理很有帮助,是比较官方的技术文档
  • 比特币底层技术探秘

    千次阅读 2017-06-12 08:58:03
    译者注:本文介绍了比特币的一些底层的技术,包括地址、P2P网络、创建和发布交易等等。文章还给出了关键性的Python代码片段,通过这些代码可以构建出一个最小最基本的比特币客户端程序。以下是译文。比特币真的很酷...
  • 详细讲述区块链知识,在区块高速发展的今天详细讲述区块链知识,在区块高速发展的今天详细讲述区块链知识,在区块高速发展的今天详细讲述区块链知识,在区块高速发展的今天详细讲述区块链知识,在区块高速发展的今天...
  • 比特币区块链核心技术详解

    千次阅读 2019-12-27 14:32:19
    并且从技术角度,具体分析了如数字加密、P2P 网络等区块链的核心技术。 区块链的出现主要解决的是传统中心化网络部署方式所带来的众多问题,包括 : 1) 交易非公开化,中心节点掌握分布节点信息,分节点不掌握...
  • 比特币(中本聪)技术解读

    千次阅读 2019-08-10 13:21:46
    1 背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得要领,...比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接...
  • 解密比特币的那些核心技术原理

    千次阅读 2019-04-05 16:25:48
    1 背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得...比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接与另...
  • 如果您想真正地了解比特币技术层面上的工作方式,并且对计算机科学和编程有基本的了解,那么此书适合您。 研究人员和高级学生也会发现这本书也很有用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,732
精华内容 21,092
关键字:

比特币技术