比特币节点互相连接时,会从对方处获取自己没有的交易。但由于比特币长期积累天量的交易,两个节点逐条对照你缺了哪些交易/我缺了哪些交易,是非常困难的事情。
为解决这一难题,中本聪发明了区块链(Block chain)这一重要技术。节点借助区块(block)来同步交易,保证了所有节点数据的统一性,并通过竞争区块打包权(也就是挖矿)的方式,保证了区块链的唯一性。
1. 区块和区块链
一段时间内的交易打成的一个包称为区块,比特币全网平均每10分钟产生一个区块,每一个区块都链接到上一个区块,依次相连形成区块链。
2. 以区块为单位同步交易数据
区块从1开始编号,因此节点A连接节点B后,只要检查双方的区块编号高度,就能方便地同步交易数据。例如节点A自己的区块高度是100,发现节点B的区块高度是110,则只要向B请求同步101~110这10个区块即可。
3. 打包区块的奖励
为保证有节点打包比特币交易,比特币规则规定:打包交易的节点将获得比特币作为酬劳。A、打包奖励的一部分来自交易创建者支付的交易手续费(每KB交易大小100~1000聪手续费)。B、另一部分来自初始2100万个比特币的分发,最开始奖励是每个区块50比特币,之后每经过21万个区块(约4年时间)奖励将减半一次,直到2140年左右区块奖励不足1聪为止,此时区块奖励总和为2100万比特币,这就是比特币2100万总量的来源(准确地说是 20999999.97690000个)。2140年后打包奖励将只来自于交易创建者支付的交易手续费。
4. 对区块打包权的竞争
节点打包交易只需要消耗很低成本的网络和计算资源,打包奖励的存在(目前每个区块的打包奖励25比特币约为4万元),使得有大量节点想打包交易。为保证区块链的唯一性,比特币规则规定:节点使用类似“扔硬币”的方法争夺交易打包权。节点不断地扔硬币,谁首先扔出符合规则的结果,谁就能获得这个区块的交易打包权,以及这个区块的打包奖励。
5. 竞争交易打包权的方式
“扔硬币”在实现上是计算机做一次哈希(SHA-256)运算,并检查运算结果从第一位开始是否有足够多连续的0(可以简单理解为一次扔256个硬币,然后看从第一个硬币开始是否有足够多的连续硬币正面)。“扔硬币”获胜的唯一诀窍是提高每秒扔硬币的次数,一个每秒能扔100亿次硬币(做100亿次哈希计算)的节点,抢到打包权的概率是每秒扔1亿次硬币节点的100倍。
6. 获胜节点打包交易并广播
一旦有某个节点扔出符合系统规则的硬币结果(例如区块379543的哈希值 000000000000000008bdeb575056584429ea4be876ea7ca4ce70262d3edb8c8b),他就会立即将这段时间搜集到的交易打包成一个区块,附上“扔硬币”的结果、区块序号379543、上一区块关系等附加信息广播出去,其它节点一旦收到区块379543并验证无误,就会停止“扔硬币”抢这一区块,转而在这一区块的基础上开始“扔硬币”抢下一区块379544。
7. “挖矿”和“矿工”的由来
节点大量进行哈希计算需要计算机设备,并消耗大量电力,这个过程在本质上和金矿挖矿很相似(通过挖矿设备,消耗能源换取黄金)。比特币总量恒定,产量越来越少的产生方式也和黄金很相似。因此人们形象地将比特币抢打包权的过程称为挖矿(mine),将抢打包权的比特币节点称为矿工(miner)。
挖矿设备的演变1. CPU:最早的矿工使用CPU进行挖矿,挖矿速度在M级别(1M=1000K=10^6=每秒100万次哈希运算)。
2. 显卡矿机:显卡有数百个计算核心(流处理器),因此速度相当于数百个CPU,挖矿速度在百M级别。由于ATI和NVIDIA显卡的架构不同,同档次A卡流处理器数量远超过N卡,因此A卡在挖矿上有巨大优势,专业矿工往往用H61B等有6个PCI-E插槽的主板,插上5-6张ATI 7850等高端显卡,组成矿机群挖矿。
3. 集成电路矿机:随着比特币价格的不断上扬,挖矿越来越有利可图,集成电路矿机随之出现,矿机使用专门设计的,只能做挖矿哈希运算的芯片,因此在挖矿速度和功耗上较CPU和显卡这样的通用计算设备有很大的优势,代价则是除了挖矿和做电暖器以外什么都做不了。CPU和显卡在挖矿产出不够电费被淘汰后,还能当普通电脑用;而矿机被淘汰后,除了少数人有免费电可以继续挖外,就只能当电暖器或报废了。
集成电路矿机经FPGA矿机集成电路矿机经FPGA矿机(FPGA:现场可编程门阵列,一种半定制电路)的短暂过渡(速度数百M到G级别,1G=1000M),进化到ASIC矿机(ASIC:专用集成电路)时代,速度亦从G级别逐步进化到T级别(1T=1000G),其每秒能进行万亿次哈希运算,相当于一百万个CPU的计算能力。也就是说目前全球排名第二的天河二号超级计算机如果用于挖矿,其312万个CPU核心的计算能力仅相当于价值几千元的T级别矿机。
5. 2013年起比特币价格的飙升,上百万台ASIC矿机的大量部署,使得比特币全网算力目前已达到惊人的435P(1P=1000T),下图为KnCMiner在瑞典的大型矿场。
矿池由于有数以万计的矿工竞争打包权,单个矿工抢得打包权的概率非常小,产出非常不稳定,有可能走狗屎运1小时就抢到一次,也有可能一年都抢不到一次。为稳定挖矿产出,矿工往往选择加入矿池挖矿,矿池将大量矿工的算力整合在一起,在全网总算力中占据一定的份额,由此得到较稳定的挖矿产出,矿池在收取2%~4%矿池手续费后,将产出按矿工算力分配给矿工。这就好比一个人买彩票很难中奖,于是矿池把很多人组织在一起买彩票,中奖了再按出资额分配给大家。
随着矿池的发展,还出现了像莱比特(http://LTC1BTC.com)这样的自动切换矿池,俗称机枪池。机枪池会在各种山寨币收益高时切换到山寨币挖矿,以此将矿工的收入提高5%~10%。
比特币挖矿的意义——分发初始比特币比特币反对者指责挖矿白白消耗了大量资源去做无意义的扔硬币,支持者则举例黄金挖矿也是白白消耗了大量资源去做无意义的挖洞。对于比特币系统而言,这种消耗大量资源挖矿的最大意义在于:公平地分发2100万个初始比特币,就像消耗资源挖黄金一样,消耗资源获挖比特币是唯一公平的分发初始比特币的方式。
比特币由于其代码开源,因此出现了数以千计的抄袭者、竞争者、改进者。通常将只是简单抄袭模仿比特币的称为山寨币,在比特币基础上加入一定新特性的称为竞争币,有的币在比特币基础上加入智能合约等其他功能模块,并自称“二代币”。这些数以千计林林总总的币尝试了所有你能想象得到的初始币分发模式,例如将初始币平均分发给每个冰岛人的冰岛币(Aurcoin),将初始币分发给73个众筹参与人的未来币(Nextcoin),由开发者控制并缓慢分发大部分初始币的瑞波币(XRP)等等。
但所有这些分发初始币的方式,其公平性都远弱于烧钱获取初始比特币的模式,而公平性又是一个货币系统的最核心问题,因此比特币挖矿虽然消耗了大量资源,但和消耗资源挖金矿一样是合理的经济行为。
欢迎光临 WDlinux官方论坛 (http://wdlinux.cn/bbs/) | Powered by Discuz! 7.2 |