深度学习
如果把比特币算法比喻成一个有奖答题的方程式,那么比特币网络上所有的人都在同时试图抢答各自的方程式。每一个方程式都有自己的答案,而且一旦一个方程式被某一个人所解开,则其他人就无法再次解开他们自己的方程式来获取奖励了。所有的人都会得到另外一个方程式来做解答。
每一个“矿工”手里都有目前所有比特币拥有者的公开信息和他们所拥有的比特币的数量,你也可以从https://blockchain.info/这个网站上随时查阅到你所拥有的比特币数量。
Blockchain.info的商标
除了是一个有价值的信息资源,blockchain.info还是世界上最大的在线比特币钱包网站之一,目前它的在线钱包数量已经超过了3700000个,每天通过blockchain钱包进行的交易超过50000笔。
在第2章中,我们详细解释了比特币和区块链系统背后的算法。如果你跳过了第2章,那么不要紧,下面我们会用更加简单的语言来解释一下比特币背后的原理到底是怎样的。
比特币区块链的原理描述简介
自互联网诞生之日起,发明一种脱离政府和银行监管,匿名并且便利的互联网货币,一直都是极客社区中的一个热门课题。
传统的解决方案是集中式地管理,采用“中央票据交换所”之类的解决方案,将所有的交易实时地汇总成总账。简单地说,这样的数字货币不仅仅存在于你的电脑、手机上,同时它在中央票据交换所也有一个备份,而且以中央票据交换所的数据为准。
这样,如果有人花掉一个数字货币,那么他就不能再重复使用此数字货币了。实时总账虽然让货币使用者无机可乘,但货币的发行就不得不控制在中央票据交易所手里。
比 特币的原理,简单说来,就是在一个足够大的P2P网络中,有一个人发明了一个算法,在通过测试和验证之后得到了大家的认可。每一组新制造出来的比特币提供 了把旧的比特币从一个账户转移到另一个账户的数学保证,而比特币其实就是能被这个网络认可的一串数字编码。第一个发现这组可用数字编码的人就是这串编码的 造币者。
在比特币网络上有一个区块链,也就是一个完整的全局表,每个新的比特币都需要利用之前的信息才能产生。从概率的角度来看,如果尝试的次数足够多,则一般都能找到满足要求的数字。
每个想通过制造比特币赚钱的人,都在不停地在比特币网络上监听信息。如果有人发布了新的合法的数据块,则他就把它合并到本地电脑的全局表(区块链)里。
他不断地把下面三条数据合并在一起:
自己随机生成的数字
最新的全局表
那条自己获得25个比特币的奖励信息
然后计算编码,看看结果是否满足条件。一旦满足,他就把这个新的编码广播出去。当P2P网络上有足够多的人认可,他就成功了,也就获得了那25个比特币。如果按照每个比特币价值3000元人民币计算,他就得到了75000元。这个反复操作的过程就被称作“挖矿”。
这个用以产生比特币的P2P网络我们称之为比特币网络。在比特币网络上,每个节点都会记录从比特币诞生以来每笔交易的细节,并从中可以推测出:
每个比特币目前唯一属于谁
每个比特币是否可以从一个人转移到另一个人手中
每个人有多少比特币
下面举例说明。
假设下面的内容是账本的一部分:
……
……时间点T
Z向A转账100个比特币
A向B转账30个比特币
B向C转账10个比特币
A向D转账5个比特币
B向D转账5个比特币
C向D转账5个比特币
A向W转账20个比特币
矿工G挖出25个比特币
……时间点T+10
……
如果A、B、C、D这4个人账本里的比特币数量在时间点T之前都是0,那么在上述这些操作之后,他们各自账本里的比特币数量大致如下表所示。
比特币账户余额示意图
账户 | 比特币数量 |
A | 45 |
B | 15 |
C | 5 |
D | 15 |
这里以账户B为例,他收到了A向他转账的30个比特币,然后向C转了10个比特币,再向D转了5个比特币,所以他的账户余额是15个比特币。
在目前的条件下,每小时只会产生大约6组新的比特币,而一组比特币的数量是25个。也就是说,在这个世界上,每小时大约只会产生150个新的比特币,最终比特币总数会达到2100万个。在总额固定的情况下,可想而知,“挖矿”的难度会越来越大。
在区块链上,所有的交易都存在于某一个区块中,从最近的区块一直链接到最初的一个区块,也就是创世区块。
如果你想要交易比特币,则先要在比特币网络上开一个账户。每个账户其实就是一对公匙和秘钥,只有账户的所有者才有秘钥。
如 果你的比特币需要转手,就把比特币的数量加上收款人的公匙,用自己的秘钥签名,并转给收款人。每笔交易都需要公证人来担保交易的发生。这样,交易的发起者 再想使用这笔钱就不可行了,而收款人也能合法使用收到的钱,或者转给另外的人。在比特币环境中,这个公证人就是整个比特币网络。
在 发起这笔交易的时候,出款人必须把签过名的交易单广播到整个P2P网络上,使得每个节点都知道这件事情,而收款人会从P2P网络上不断地收到别人听到这个 消息的确认信息。最终,当收到足够多的确认信息后,就认为出款人的确发起了这条交易。从此以后,收款人就可以自由地使用这笔钱了。
如下图所示,如果A要向B转账,则他需要向网络发出申请,当有足够多的节点确认之后,钱才能到账。从理论上讲,会存在一种可能,即如果A向B转账的这条信息一直被每个“矿工”忽略,那么他们之间的交易就无法得到确认。
比特币转账的示意图
正如我们在第2章中介绍的,总有一些比特币会消失,这主要是因为从公钥到密钥的过程是不可逆的。如果丢失了密钥,就没有任何人可以拿到和密钥对应的这些比特币了。
交易费
在第2章中我们讲述过,一个新的区块被加入到区块链中是因为有“矿工”们的存在,那么未来当比特币越来越难以被挖掘出来的时候,该怎么办呢?
有了交易费就使得“矿工”们有意愿把交易加入到区块中,从而使得这些交易被认可。
通 常,每1000个字节(向上舍入)的交易会有约0.1mBTC的交易费(相当于0.000 1BTC)。例如,发送900个字节的交易会产生0.1mBTC的交易费,而发送1002个字节(向上舍入变成2000个字节)的交易会产生 0.2mBTC的交易费。在比特币系统上一个通常的交易约有500个字节,所以交易费约为0.1 mBTC。按照今天每个比特币价值2500元人民币来计算,交易费约为0.25元。
如下图所示,如果忽略几波淘金狂潮中的一些凸起的数据点,则比特币系统上的交易费在整体上是呈上升态势的,从2016年开始基本会维持在50BTC以上。
比特币系统中的交易费
(来源:blockchain.info)
当然,我们还需要关注的一个问题就是交易费能否足够大,从而支撑整个系统的运行。目前来说还不需要为这个问题而担忧,不过在未来的几年中,这是比特币区块链社区需要解决的问题。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=857
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区