精通比特币贪心算法
❶ 2100万个比特币(BTC)挖完以后怎么办
大家都知道,比特币的总量是2100万枚。当一个块被成功算出,币就会以挖矿奖励的形式发放给成功“爆块”的矿工。比特币的稀缺性也拉升了它的价值。但是,比特币网络是一个由矿工组成的,通过挖矿他们获得巨大的奖励,很多人就在想如果所有比特币都被挖出来之后会发生什么事情?
但假设真的到了那一天,比特币的区块奖励机制已经无法提供丰厚的代币回报时,矿工就不会挖矿了吗?事实上,挖矿成本是不固定的,单独计算爆块奖励也是不科学的。加密数字货币的挖矿难度虽然只增不减,但会受全网算力的增长速度快慢,影响调整周期长短。如果挖的人多,成本自然高,挖的人少,成本自然就降低了。其次,不同地区的电费成本不一样,有的地方甚至能拿到接近免费的电,功耗成本基本就可以忽略不计了。所以,我们要明确一个原则,只要仍有利润可图,挖矿就不会停止。
其实,从比特币的发展历程来看,真正影响矿工是否继续挖矿的因素,并非是否有矿可挖,而是挖矿的收益如何。在比特币交易量增加、手续费升高;或者比特币价格升高的情况下,挖矿收益可观,矿工们的投入热情都会相应高涨。那么,只要比特币价值还在,不管何时挖矿都会有利润,总有矿工不会关停手中的机器。
很多人之所以会有“2100万枚比特币挖完就没收益”这种顾虑,主要是误以为矿工收益的唯一来源是“爆块”奖励。但实际上,矿工的挖矿收入包括两个部分,一部分是区块奖励,从最初打包一次交易开始,每四年减半一次。而另一部分则来自交易手续费。
为了保证自己的交易能够尽快被矿工确认,交易者们通常会额外付给他们一笔手续费,手续费越高,交易被优先打包的可能性越大。而手续费的存在一方面可以提高转账门槛,防止区块链中充斥垃圾交易;另一方面,也可以激励矿工竞争记账,使他们在比特币全部被挖出之后,还能够继续为比特币网络的安全提供算力保障。这一点在中本聪的比特币白皮书中,关于激励机制的描述中也可以找到原文:“只要既定数量的电子货币已经进入流通,那么激励机制就可以逐渐转换为完全依靠交易费。”也就是说,就算所有的比特币都发行完毕,只要有足够多的交易需求,矿工们就有理由继续挖矿,并能从中获得收益。
现在,新的区块被挖出之后,矿工会获得区块的奖励,这包括获得新币和手续费。这些奖励激励矿工维护和保护网络。
(1000T算力七个月挖出7枚比特币,咨询kaiye910323)
如果比特币都被挖出之后,没有区块奖励,单单依靠手续费,可以维持网络的运转吗?如果不能,是否会让矿工离开,而导致网络崩溃。下面的走势图,我们可以看出到2030年,手续费收入会高过区块奖励。一旦手续费超过收入的50%以上,矿工们就可以过度到通过收取手续费存活下来。
手续费是否足以激励矿工?
这个问题暂时没有人可以完全确定出答案。但是,目前的证据表明,通过手续费收入是足以维持矿工和比特币网络的。毕竟,随着比特币价格的上涨,手续费也在上涨。有人担心过高的手续费是否会阻止人们使用比特币。然而,现在的手续费仍然要低于世界国家间的法币转账。我们现在只需要考虑耗电和房屋的租金。正如专家指出的:买卖一套房子的成本是2%,即8000美元。我敢肯定,如果个人买卖成本只需要50美元。
目前,很多矿工习惯性以当前币价为参考计算挖矿收益。有一些矿池甚至采用贪心算法,一直把算力集中来挖“最有利可图的币”,也就是目前兑换美元价值最高的币。但是事实证明这种贪心算法并没有比一直挖一种币的好到哪里去。为什么呢?因为挖矿本来就不是一个一次性的游戏,币是可以储存的,也就是说,每个矿工都有自己对于加密数字货币前景的判断。即便今天比特币跌到1美元,认为只要有矿工相信未来比特币依然能够涨回去,那么他们就不会在乎眼下的亏损,而是会继续的挖下去,待其未来币价暴涨时,眼下投入的成本完全是九牛一毛了。
❷ 交易及记账(上) | 小白学比特币之二
在 精读「Mastering Bitcoin」1 中, 提到比特币不仅是一个 电子现金 (系统),也是一个公开的账本,这账本上记录了每笔交易的信息。用比特币交易,其实就跟我们用人民币或者美元交易买卖东西一样。作者给比特币交易行为的定义是:
那么,在比特币系统里,是以什么样的形式将这些交易记录下来的呢?
跟传统记账一样,在比特币系统中也对交易采用复式记账的方法 (double-entry bookkeeping ledger),直白点翻译就是双入口记账。复式记账,简单理解就是以下两点 [1] :
每一笔交易都要至少在两个账户上进行记录 ,在会计记账中有三个基本账户也就是资产账户、负债账户以及所有者权益账户,跟会计等式 资产(Assets) = 负债 (Liabiliteis) + 所有者权益 (Equity) 是一一对应的。那么单独每个账户又是以怎么样的方式呈现出来的呢?方法是每个账户都需要记录这个账户的debits和credits(见上图):
说完复式记账,再回到《Mastering Bitcoin》(精通比特币) ,在书中,作者给出的记账例子如下面那张截图;一笔交易中可以包含多个Input和output。这里的Input和output如何理解呢?
总结一下:
通过作者这句话, 可以看到比特币系统其实执行的是价值交易。更进一步地,可以理解为价值的输入和输出。
上笔交易和下笔交易之间会形成一个“无形的链”:
作者用一张图形象的说明了什么是“交易链”。
对于同一个地址而言,上一笔交易中的output将会作为下一笔交易的输入,这样就形成了一个交易链。
在上面的交易截图中,我们可以看到这几笔交易里有 spent 、 unspent 和 change 。 change 为找零地址,为什么会有找零地址呢?
比特币系统中的找零概念和平时用现金交易的找零概念是一样的,如果你要买一个1块钱的包子,但是你身上只有一张20块钱的纸币,这个时候就需要包子铺老板找给你19元零钱。
在比特币系统中,每一个input就相当于一定面值的纸币。如果一笔交易中只包含一个Input,为20个BTC,当这个地址向其他地址支付1个BTC时候,就需要对方找还19个BTC。不同的是,比特币不像纸币那样只有几种面值固定的纸币,比特币系统可以随时创建“新面值”。
出于保护隐私的考虑,找零地址没必要跟原先的付款地址一样,通常钱包会生成一个新的找零地址。
在真实应用中,并不会在找零地址旁边标注 change 的字样,如下图显示(截图来自blockchain.info上的某笔交易),
比特币系统可以随时创建“新面值”来用于找零,而且这“零钱”可以用于下次交易。在每个输出(output)记录里,可消费的比特币数量会被标记成 unspent ,这样的输出有一个专门的名字叫做 Unspent Transaction Outputs (UTXO)。可以把unspent的输出理解为面值不同的、可用于下次消费的纸币,就好像10元面值纸币、100元面值纸币那样。
[1] Mastering Bitcoin 第二版 https://github.com/bitcoinbook/bitcoinbook
[2] http://learnmeabitcoin.com
❸ 《精通比特币第2版(影印版)》epub下载在线阅读全文,求百度网盘云资源
《精通比特币 第2版(影印版)》(Andreas M. Antonopoulos)电子书网盘下载免费在线阅读
链接: https://pan..com/s/1zurT4uVTcWLSIFJfhtjOcA 提取码: 7aqm
书名:精通比特币 第2版(影印版)
作者:Andreas M. Antonopoulos
豆瓣评分:8.7
出版社:南京东南大学出版社
出版年份:2018-7-1
页数:369
内容简介:
Join the technological revolution that's taking the world of finance by storm. Mastering Bitcoin is your guide through the seemingly complex world of bitcoin, providing the knowledge you need to participate in the internet of money. Whether you're building the next killer app, investing in a startup, or simply curious about the technology, this revised and expanded second edition provides essential detail to get you started.
Bitcoin, the first successful decentralized digital currency, is still in its early stages and yet it's already spawned a multi-billion dollar global economy. This economy is open to anyone with the knowledge and passion to participate. Mastering Bitcoin provides the knowledge. You simply supply the passion.
The second edition includes:
A broad introction to bitcoin--ideal for non-technical users, investors, and business executives
An explanation of the technical foundations of bitcoin and cryptographic currencies for developers, engineers, and software and systems architects
Details of the bitcoin decentralized network, peer-to-peer architecture, transaction lifecycle, and security principles
New developments such as Segregated Witness, Payment Channels, and Lightning Network
Improved explanations of keys, addresses and wallets
User stories, analogies, examples, and code snippets illustrating key technical concepts
作者简介:
Andreas is a passionate technologist, who is well-versed in many technical subjects. He is a serial tech-entrepreneur, having launched businesses in London, New York, and California. He has earned degrees in Computer Science and Data Communications and Distributed Systems from UCL. With experience ranging from hardware and electronics to high level business and financial systems technology consulting and years as CTO/CIO/CSO in many companies — he combines authority and deep knowledge with an ability to make complex subjects easy to understand. More than 200 of his articles on security, cloud computing and data centers have been published in print and syndicated worldwide. His expertise includes Bitcoin, crypto-currencies, Information Security, Cryptography, Cloud Computing, Data Centers, Linux, Open Source and robotics software development. He also has been CISSP certified for 12 years.
As a bitcoin entrepreneur, Andreas has founded three bitcoin businesses and launched several community open-source projects. He often writes articles and blog posts on bitcoin, is a permanent host on Let’s Talk Bitcoin and prolific public speaker at technology events. Andreas serves on the advisory boards of several bitcoin startups.
❹ 能介绍几本关于比特币和区块链的书吗
1.《比特币白皮书:一种点对点的电子现金系统》,作者中本聪。先把这份白皮书看完再考虑其他的内容。
2《Fortran95程序设计》,作者是彭国伦。
3《Fortran77和90/95编程入门》,作者是丁泽军。
4. 《失控:机器、社会与经济的新生物学》
5.《必然》,作者是凯文·凯利,提到了未来20年的12种必然趋势。
6.《精通比特币》,本书会为你提供必备知识,引导你进入比特币世界。
7.《区块链革命》,讲述了比特币底层技术如何改变货币、商业和世界,作者是唐塔普斯科特、亚力克斯·塔普斯科特
8.《区块链新经济蓝图及导读》,作者梅兰妮·斯万
9.《区块链:量子财富观》,作者韩锋/张晓玫
10.《金融的逻辑》,作者是陈志武。作品深入浅出地从财富的文化和制度基因谈起,从而告诉读者金融的逻辑是什么。
相关书籍还有《经济学原理》《区块链:技术驱动金融》《区块链革命 : 比特币底层技术如何改变货币、商业和世界》《区块链技术指南》《图说区块链》《区块链将如何重新定义世界》《数字货币:比特币数据报告与操作指南》《区块链:从数字货币到信用社会》《智能时代》等,说实在的,区块链作为一个热点资源还是比较多的。主要是判断(是否有价值)和行动(要入早点入)。
再推荐一个区块链相关的APP,叫金色财经,推荐一个公众号,叫宽客在线。文章资料丰富;
❺ 《精通比特币》攻读首篇
币乎真的是一个好的平台,在这个平台上面还有无限的想象力可以发挥,进入币圈跌跌撞撞也有一年的时间了,关于区块链的一些基础概念也都懂一些,但是不深入,很久之前也有一个想法,想好好的读一读关于比特币或者区块链的书籍,特别想读的是《精通比特币》,因为这本书被无数大佬,大咖们推荐过,但是害怕这本书太过技术,就一直没敢行动,这也是给自己找的一个借口吧。
有幸在币乎看到宰飞同学发起了币乎读书营,感觉是一个好的机会,一是可以认识很多朋友,二是也可以逼自己一把,所以义不容辞的加入了。
在《精通比特币第二版》序言中写道:送你一把打开区块链世界大门的钥匙,我知道这是一本好书,要想真的在区块链的世界里畅游,这本书应该是最适合的了。
这本书一共有12章,可以说把比特币的前生今世、里里外外都说的十分的透彻了,在开篇之前是术语解释,个人觉得这是很难啃,而且很难消化的一部分,但是为了能更好的理解区块链世界,我不得不慢慢的细嚼慢咽,因为这是基础。
第一章介绍了什么是比特币,比特币是构成数字货币生态系统基础的概念和技术的集合。比特币与传统的货币不同,它完全是虚拟的,但它可以和传统货币一样解决多重支付的问题,传统的纸币的特点是一块钱只能花在一个地方,不存在多重支付的问题,而比特币应用加密技术完美的解决了这个问题。
比特币有四个创新,分别是:1.去中心化的对等网络(比特币协议);2.公共交易总帐(区块链);3.独立交易确认和货币发行的一套规则(共识规则)4.实现有效的区块链全球去中心化共识的机制(工作量证明算法)。
比特币的这四种优势是所有区块链项目的底层技术,这四种技术优势的组合,让无数喜欢区块链的人们做了无数思想实验,却不能穷尽。
这本书我还在攻读中,未来我还会和大家分享更多的关于区块链想法,因为区块链让我兴奋,伟大的变革正在发生,而我不想错过!!
❻ 【区块链】比特币私钥、公钥、签名
在 了解区块链的基础名词概念 提到地址由字符和数字组成,但没有说明怎样产生的。银行卡号由银行核心系统生成,那比特币地址是通过什么生成的呢?看下图:
对于刚接触比特币的小白来说,看到这张图就蒙圈了,究竟什么是私钥、公钥,为什么生成个地址要这么麻烦吗?
现在请大家记住这句话: 私钥通过椭圆曲线相乘生成公钥,使用公钥不能导推出私钥;公钥通过哈希函数生成比特币地址,地址也无法导推出公钥 。
通过这么复杂算法才算出地址,那私钥和公钥只是为了生成地址吗?不是的,他们还有其他用途,我们先了解下私钥和公钥。
现在已经讲解地址、挖矿、工作量证明、算力、区块、区块链等等的概念,不知大家还有印象吗?如果忘记请温习这些概念,因为后续很多地方都会用到这些概念。明天讲解下区块链有哪些特点。
参考书籍:《精通比特币》
区块链知识专题:
比特币记账方式(区块链知识2)
了解块链的基础名词概念(区块链知识1)
❼ 4. 比特币的密钥、地址和钱包 - 精通比特币笔记
比特币的所有权是通过密钥、比特币地址和数字签名共同确定的。密钥不存在于比特币网络中,而是用户自己保存,或者利用管理私钥的软件-钱包来生成及管理。
比特币的交易必须有有效签名才会被存储在区块中,因此拥有密钥就拥有对应账户中的比特币。密钥都是成对出现的,由一个公钥和一个私钥组成。公钥相当于银行账号,私钥就相当于银行卡密码。通常情况下密钥由钱包软件管理,用户不直接使用密钥。
比特币地址通常是由公钥计算得来,也可以由比特币脚本得来。
比特币私钥通常是数字,由比特币系统随机( 因为算法的可靠性与随机性正相关,所以随机性必须是真随机,不是伪随机,因此比特币系统可以作为随机源来使用 )生成,然后将私钥作为输入,使用椭圆曲线算法这个单向加密函数生成对应的公钥,再将公钥作为输入,使用单向加密哈希函数生成地址。例如,通过公钥K得到地址A的计算方式为:
其中SHA256和PIPEMD160被称为双哈希或者HASH160,Base58Check是带有验证功能的Base58编码,验证方式为先计算原始数据(编码前)的验证码,再比较编码后数据的验证码,相同则地址有效,否则无效。而在使用Base58Check编码前,需要对数据做处理。
处理方式为: 版本前缀 + 双哈希后的数据 + 校验码
其中版本前缀是自定义的,如比特币私钥的前缀是0x80,校验码是把版本前缀和双哈希后的数据拼接起来,进行两次SHA256计算,取前4字节。得到处理的数据后,再进行Base58编码,得到最终的结果。
下图是Base58Check版本前缀和Base58编码后的结果
密钥可以采用不同的编码格式,得到的编码后结果虽然不同,但密钥本身没有任何变化,采用哪种编码格式,就看情况而论了,最终目的都是方便人们准确无误的使用和识别密钥。
下图是相同私钥采用不同编码方式的结果:
公钥也有很多种格式,不过最重要的是公钥被分为压缩格式和非压缩格式,带04前缀的公钥为非压缩格式的公钥,而03,02开头的标识压缩格式的公钥。
前面说过,公钥是椭圆曲线上的一个点,由一对坐标(x, y)表示,再加上前缀,公钥可以表示为:前缀 x y。
比如一个公钥的坐标为:
以非压缩格式为例,公钥为(略长):
压缩格式的公钥可以节省一定的存储,对于每天成千上万的比特币交易记录来说,这一点点的节省能起到很大效果。
因为椭圆曲线实际上是一个方程(y2 mod p = (x3 + 7)mod P, y2是y的平方,x3是x的立方),而公钥是椭圆曲线上的一个点,那么公钥即为方程的一个解,如果公钥中只保留x,那么可以通过解方程得到y,而压缩公钥格式有两个前缀是因为对y2开方,会得到正负两个解,在素数p阶的有限域上使用二进制算术计算椭圆曲线的时候,y坐标或奇或偶,所以用02表示y为奇数,03表示y为偶数。
所以压缩格式的公钥可以表示为:前缀x
以上述公钥的坐标为准,y为奇数为例,公钥K为:
不知道大家发现没有,这种压缩方式存在一个问题,即一个私钥可以得出两个公钥,压缩和非压缩公钥,而这两个公钥都对应同一个私钥,都合法,但生成的比特币地址却不相同,这就涉及到钱包软件的实现方式,是使用压缩公钥还是非压缩公钥,或者二者皆用,这个问题后面来介绍。
比特币钱包最主要的功能就是替用户保管比特币私钥,比特币钱包有很多种,比如非确定性(随机)钱包,确定性(种子)钱包。所谓的非确定性是指钱包运行时会生成足够的私钥(比如100个私钥),每个私钥仅会使用一次,这样私钥管理就很麻烦。确定性钱包拥有一个公共种子,单向离散方程使用种子生成私钥,种子足够回收所有私钥,所以在钱包创建时,简单备份下,就可以在钱包之间转移输入。
这里要特别介绍下助记码词汇。助记码词汇是英文单词序列,在BIP0039中提出。这些序列对应着钱包中的种子,种子可以生成随机数,随机数生成私钥,私钥生成公钥,便有了你需要的一切。所以单词的顺序就是钱包的备份,通过助记码词汇能重建钱包,这比记下一串随机数要强的多。
BIP0039定义助记码和种子的创建过程如下:
另外一种重要的钱包叫做HD钱包。HD钱包提供了随机(不确定性) 钥匙有两个主要的优势。
第一,树状结构可以被用来表达额外的组织含义。比如当一个特定分支的子密钥被用来接收交易收入并且有另一个分支的子密钥用来负责支付花费。不同分支的密钥都可以被用在企业环境中,这就可以支配不同的分支部门,子公司,具体功能以及会计类别。
第二,它可以允许让使用者去建立一个公共密钥的序列而不需要访问相对应的私钥。这可允许HD钱包在不安全的服务器中使用或者在每笔交易中发行不同的公共钥匙。公共钥匙不需要被预先加载或者提前衍生,但是在服务器中不具有可用来支付的私钥。
BIP0038提出了一个通用标准,使用一个口令加密私钥并使用Base58Check对加密的私钥进行编码,这样加密的私钥就可以安全地保存在备份介质里,安全地在钱包间传输,保持密钥在任何可能被暴露情况下的安全性。这个加密标准使用了AES,这个标准由NIST建立,并广泛应用于商业和军事应用的数据加密。
BIP0038加密方案是: 输入一个比特币私钥,通常使用WIF编码过,base58chek字符串的前缀“5”。此外BIP0038加密方案需要一个长密码作为口令,通常由多个单词或一段复杂的数字字母字符串组成。BIP0038加密方案的结果是一个由base58check编码过的加密私钥,前缀为6P。如果你看到一个6P开头的的密钥,这就意味着该密钥是被加密过,并需个口令来转换(解码) 该密钥回到可被用在任何钱包WIF格式的私钥(前缀为5)。许多钱包APP现在能够识别BIP0038加密过的私钥,会要求用户提供口令解码并导入密钥。
最通常使用BIP0038加密的密钥用例是纸钱包一一张纸张上备份私钥。只要用户选择了强口令,使用BIP0038加密的私钥的纸钱包就无比的安全,这也是一种很棒的比特币离线存储方式(也被称作“冷存储”)。
P2SH函数最常见的实现时用于多重签名地址脚本。顾名思义,底层脚本需要多个签名来证明所有权,然后才能消费资金。这类似在银行开设一个联合账户。
你可以通过计算,生成特殊的比特币地址,例如我需要一个Hello开头的地址,你可以通过脚本来生成这样一个地址。但是每增加一个字符,计算量会增加58倍,超过7个字符,需要专门的硬件或者矿机来生成,如果是8~10个字符,那么计算量将无法想象。