比特币矿工手册
⑴ 当你向朋友转了两个比特币,在交易的过程中你提交了哪些信息给矿工
地址、金额、手续费、比特币签名
传统转账是在银行账户之间进行的。同样,比特币转账就是把比特币从一个比特币地址转移到另一个比特币地址上的过程。它的转账过程也类似:
①登陆钱包:你需要登陆你的钱包,类似登陆银行的网银、支付宝、微信等;
②选择钱包地址:你先选好要从自己哪个比特币地址转币给你的朋友,也就是自己的银行卡号(或者支付宝账号微信账号)。
③填写转账钱包地址、金额、手续费、比特币签名、矿工记账:填写好朋友收币的比特币钱包地址,填写转账的数额、比如100个然后写下你想付出的交易手续费金额,签上你的比特币签名,提交给比特币网络,然后就等矿工们来处理记账了。
④转账确认:确定支付后交易信息会在比特币网络进行全网广播,矿工每隔10分钟会将比特币网络中未被记账的交易打包进一个区块,这就完成了一次确认,此时比特币已转到对方账户。通常需要经过6次确认,确保交易记录不能被任何人窜改,转账才算真正完成。
⑵ 什么叫比特币挖矿
比特币挖矿是消耗计算资源来处理交易,确保网络安全以及保持网络中每个人的信息同步的过程。它可以理解为是比特币的数据中心,区别在于其完全去中心化的设计,矿工在世界各国进行操作,没有人可以对网络具有控制权。这个过程因为同淘金类似而被称为“挖矿”,因为它也是一种用于发行新比特币的临时机制。然而,与淘金不同的是,比特币挖矿对那些确保安全支付网络运行的服务提供奖励。在最后一个比特币发行之后,挖矿仍然是必须的。
简而言之,比特币挖矿计算的是基于SHA256算法的数学难题,确认网络交易,比特币网络会根据矿工贡献算力的大小给予的等分的比特币奖励。目前,比特币挖矿经历了三个阶段,CPU、GPU、ASIC,目前,以ASIC矿机挖矿一家独大,其中,阿瓦隆矿机尤其突出,阿瓦隆矿机一直走在矿机行业的前列,是比特币挖矿行业的领头羊,目前,搭乘三代芯片的矿机已进入市场,第四代芯片据说正在研发中。
【拓展资料】
任何人均可以在专门的硬件上运行软件而成为比特币矿工。挖矿软件通过P2P网络监听交易广播,执行恰当的任务以处理并确认这些交易。比特币矿工完成这些工作能赚取用户支付的用于加速交易处理的交易手续费以及按固定公式增发的比特币。
新的交易需要被包含在一个具有数学工作量证明的区块中才能被确认。这种证明很难生成因为它只能通过每秒尝试数十亿次的计算来产生。矿工们需要在他们的区块被接受并拿到奖励前运行这些计算。随着更多的人开始挖矿,寻找有效区块的难度就会由网络自动增加以确保找到区块的平均时间保持在10分钟。因此,挖矿的竞争非常激烈,没有一个个体矿工能够控制块链里所包含的内容。
工作量证明还被设计成必须依赖以往的区块,这样便强制了块链的时间顺序。这种设计使得撤销以往的交易变得极其困难,因为需要重新计算所有后续区块的工作量证明。当两个区块同时被找到,矿工会处理接收到的*9个区块,一旦找到下一个区块便将其转至最长的块链。这样就确保采矿过程维持一个基于处理能力的全局一致性。
比特币矿工既不能通过作弊增加自己的报酬,也不能处理那些破坏比特币网络的欺诈交易,因为所有的比特币节点都会拒绝含有违反比特币协议规则的无效数据的区块。因此,即使不是所有比特币矿工都可以信任,比特币网络仍然是安全的。
⑶ 比特币怎么挖
第一步:准备矿机和矿池 如果你想挖比特币,你必须准备好专业的设备。 目前市面上有很多专业的矿机,矿池也是必不可少的。 在选择矿池时,还应该比较每个矿池。 产出和收入差距,然后选择最合适的矿池。 第二步:注册矿池账号并设置 准备好矿池后,需要注册一个矿池账号,设置一个普通的邮箱。 设置矿工账号时,每个CPU或GPU都需要设置一个矿工账号。 第 3 步:下载比特币矿工 注册并设置帐户后,您需要下载比特币矿工。 下载矿机时,一定要选择能最大限度发挥你的CPU和显卡性能的矿机。 下载后,设置服务器、用户名、密码、设备等。 第 4 步:采矿 设置好矿机后,点击“开始挖矿”按钮,矿机进入全速运行状态,矿机自动开始挖矿。⑷ 超详细!当最后一枚比特币开采完后,比特币矿工将何去何从
1、比特币一共可以开采2100万枚,预计将在2140年左右开采完毕。
2、一旦比特币开采完即流通量达到最大,比特币矿工将不再获得区块奖励。
3、假设从现在开始,比特币在开采完之前没有出现重大协议更改,矿工将只能获得交易费作为奖励。
众所周知,比特币的总数只有2100万枚。一旦开采完成,就代表着不会再有新的比特币进入流通市场了。
所以比特币是不断通缩的,它不同于国家货币,因为法定货币会不断增发,导致通货膨胀,钱不再值钱,因此政府从而可以从中受益。
而对于比特币来说,总数固定的情况下,每年不断的被开采出来的比特币会越来越少,而这些新币将会使比特币越来越值钱,这是供求不平衡关系导致的,通缩才是比特币最值钱的地方。
虽然比特币开采了所有2100万个BTC后,它的比特币网络基本还会跟现在一样运行,但对矿工来说,开始出现区别了。
比特币的矿工大约每十分钟,就可以发现一个新区块,当矿工成功的解决了密码难题,就可以将新发现的区块添加到区块链中。而作为发现区块的奖励,矿工可以获得固定数量的比特币,这被称为“区块奖励”。
比特币首次推出时,奖励被设置为50 BTC,但每210,000个新区块奖励减少一半,大约每四年奖励少一次。
因此,随着时间的流逝,区块奖励会减少到25 BTC,12.5 BTC和6.25 BTC。
现在已经完成了第三次减半即在2020年5月比特币完成了第三次区块奖励,现在的区块报酬只有6.25 BTC。而下一个减半预计将在2024年发生。
在最后一枚比特币被挖出来之前,矿工还是可以继续获得区块奖励的,不过比特币一旦全部被挖出来以后,就不会再有新的比特币流入市场了。
短短十年内就被挖出了超过1,869万枚BTC,相当于最大供应量的89%。但是,有趣的是,想挖出最后一枚比特币还得挖120年。
一旦所有2100万比特币都被挖出之后,比特币矿工仍将能够参与发现区块的过程,但不会得到区块的奖励。
但是除此之外,比特币矿工还是有其他收入的。
除区块奖励外,比特币矿工还可以获得在每个新发现的区块中包括交易上花费的所有费用。
现在的比特币交易费仅占矿工收入的一小部分,因为矿工目前每天的区块奖励约为900 BTC(约合3980万美元),但每天可赚取60至100 BTC(260万美元至440万美元)的交易费。这意味着交易费目前最多仅占矿工收入的11%,但到2140年,交易费将激增至矿工收益的100%。
2017年12月(交易费用达到2021年4月中旬的峰值),当比特币的价值为14,000美元时,每天支付的总交易费用飙升至1,495 BTC。
结果,矿工当天赚取了总计2100万美元的交易费,这大概是他们当天从区块奖励中赚取的一半。
自2017年以来,随着交易批处理和协议升级,比特币用户额外支付了5亿美元的交易费用。
在网络活跃期间,比特币交易费用通常会飙升。随着比特币网络充斥着待处理的交易,矿工倾向于优先选择收费较高的交易。而在5月减半期间,比特币收费达到了自2019年夏天以来的最高水平。
此外,早在2019年8月,比特币的总交易费用已接近10亿美元大关。目前,比特币总交易费用已接近20亿美元。
随着比特币网络的使用量激增,那么对区块空间的竞争可能会急剧增加。这会增加矿工的交易费奖励,而比特币的价格上涨和逐渐降低的能源成本(新能源的出现)意味着其中依旧有利可图。
在2017年的峰值时发送比特币的平均成本为55.17美元。2021年4月21日,该数字创下了 历史 新高59.87美元。在此之前的十天,它只有14.86美元;平均交易费用飙升了300%以上,这说明只要有更多的人使用网络通就会有更高的交易费用。
如果比特币矿工无法接受从区块奖励到交易费用的奖励结构方式的转变,直接选择不挖了怎么办?
这是一个很有趣的假设,既然奖励结构转变了,那么肯定会有一些比特币矿工不服这个机制,他们如果在开采完之前罢工了,不开采比特币了,那么比特币网络会出现什么情况呢?
不管罢工的矿工数量多不多,其实区别并不大,因为矿工数量减少会直接导致全网算力下降。而比特币网络会根据全网算力来调整数学题的难度,来保障大约10分钟左右出一个新区块。
简单来说,反正只要有人挖,比特币最后一定会被挖到2100万个,矿工越少,单次挖出来的数量就越多,剩余的矿工恨不得没有人跟他们抢,当然那时候比特币得没有归零。(哈哈)
如果所有矿工都罢工了呢?
那这事情就大条了,因为确认交易是需要新的区块才行的,矿工全体罢工,区块不生产了,那么未来就也不会花费任何一枚比特币。
但是使用比特币的人们仍然可以查看哪些钱包地址持有比特币,持有多少比特币,并且还可以查看曾经进行的每笔比特币交易的全部 历史 记录。
交易才能赋予价值,都没有区块来确认交易信息了,那比特币就真的世界末日了。
不过区块链已经起来了,你比特币倒了,还有其他加密货币站了起来,矿工又不是只能选择比特币,话说真的有人会放着白花花的银子不要吗?
先普及一个小知识:在很偶然的情况下,比特币网络中会同时产生两个(或多个)区块,这就会导致区块链出现临时分叉,当两个临时分支的长度出现了一长一短后,短的那个(少于 2 个区块)分支就会被放弃,短分支上的所有区块被判定无效,这些区块中的所有交易记录当然也就被判定为无效了,而我们常说的51%攻击就是通过这种方式,通过制造出分叉,把自己的分叉区块加长超过另外的分叉,好让自己的区块成为主流。
比特币开采完毕后,将不会有新的比特币被挖出,但是矿工依旧可以发现新的区块,那么问题来了,如果有矿工发现了一个新的区块,不选择释放它,而是保留,那么网络就会利用额外的资源再来挖一个区块,这些被保留的区块便暂时不会进入区块链中。
接下来就是在交易费用是100%收益的制度下,好矿工就是挖出区块,添加至区块链中,获得交易费作为报酬,但那些作恶的矿工则可以通过持有保留的区块更长的时间来赚更多的钱,简单说,在交易费100%的未来,这种坏矿工比好矿工更赚钱!
比如说:现在甲较早的发现一个区块后,说服另一个矿工乙来扩展自己的区块。
在仅奖励矿工交易费用的网络中,甲可以说服乙扩大甲矿区的区块,并包括较少的交易费用。如果甲那未授权交易费用的区块大大低于其他区块块中包含的费用,那么使用甲的区块将符合乙的利益。
如果甲和乙两人一起将保留的区块延长,超越另外分叉的区块长度,那么甲和乙就可以将自己的区块作为主流,而短的那一截区块将会被放弃。
这意味着一旦成功,甲和乙的区块中的交易记录可以随意改写,比如这么跟你说,甲跟丙以1比特币兑换金钱,甲将1比特币转入了丙的钱包后,甲也从丙处获得了钱,现在甲发动51%的攻击,甲转移出去的1比特币又再一次回到了自己手中,这样甲不但拿到了钱,比特币也还在自己的钱包中。
这种作恶行为在很大程度上会影响很多人。
可以预见的是由于交易费作为100%的激励机制,将会使这种削弱主流算力的行为在比特币网络中变得普遍可见,那么比特币网络的可怕的“ 51%攻击”也会突然变得可行起来。
因为作恶的矿工始终会挖掘自己的块,而其他矿工却不会统一的挖一个区块。这将使51%的攻击成为可能,而散户的算力却远远低于51%。”
交易费用可能不足以为网络安全提供足够的激励,所以大大增加了51%攻击的可能性。”
但是不要害怕,除非比特币网络彻底没人玩了,全网算力低的不行,不然想要作恶的成本实在是太高了,这种情况出现在比特币网络中可比上天还难。
⑸ 比特币的挖矿到底挖的是什么
比特币最吸引人的是挖矿。为什么采矿如此迷人?因为挖矿可以得到比特币。在写这篇文章的时候,比特币的价格是3900美元。如果能挖到一个区块,可以获得48750美元的开采收入和大约6000美元的交易费收入。这难道不令人着迷吗?
那么到底什么是采矿呢?矿工如何通过挖矿获得比特币?这需要从比特币区块链系统采用的PoW(工作量证明)共识机制说起。
有一个村子,很多事情需要一起决定。比如有一天村长需要所有村民一起决定今天中午在村食堂包饺子还是卷面条。通常我们能想到的方式是投票——每个村民一票,少数服从多数。但是有些村民不愿意在食堂吃饭,可能会把自己的票让给别人,可能会导致不公平。大竖悔毕部分在食堂吃饭的人,可能都实现不了自己的愿望。
于是村长换了一种方式。10点50分,他用喊话器向全体村民广播:“中午我们在食堂选做饺子还是面条。想去食堂吃饭的,就推食堂门口的巨石。11点整,石头会推到大门东边,他们中午吃饺子;推余芹到大门西边,中午吃面。”
于是想在食堂吃饭的人跑去推石头。贡献多的人最后实现了愿望,贡献少的人心甘情愿,因为村里一直就是这样的规矩。
这个故事讲述了一种在民众中达成共识的方式,我们可以称之为“工作量证明机制”。用努力的多少来证明自己的选择意愿。
在本系列的第一篇文章中,我们讨论了可以保持每个人的账簿一致的区块链系统。这种保持所有节点数据一致的机制称为共识机制。不同的共识算法可以达到不同性能的共识效果,最终目的是保持数据一致。
注意第一个,在任何块中,第一个都没有转出地址,也就是所谓的CoinBase (mining transaction)。没有人付给矿工这些钱,但是矿工只是写着他们得到了12.5个比特币。所有节点都同意矿工这样写,所以矿工获得采矿收入。
不同矿工填块的时候,数据肯定是不一样的,因为每个矿工的第一条规则肯定是不一样的,矿工只会把开采所得转到自己的地址。所以矿工迈克尔的CoinBase是“迈克尔获得了12.5个比特币”,矿工南希的CoinBase是“南希获得了12.5个比特币”。
每个矿工都填好了自己收集的交易和应该得到的收入。那么,谁的记录会得到大家的认可呢?比特币使用工作量证明机制,让矿工相互竞争来解决一个数学问题。谁先解决,谁就得到大家的认可。就像开篇故事中讲述的那个村庄一样,每个矿工都在用力推着巨石。一旦石头压住了他的账户页面,他喊道:“我的工作量证明是成功的。快来看!”所有的矿工都来了,抄下那一页账目,贴在账本后面,然后开始新的记账流程。周而复始,生生不息,账本一页页的增加,账本越来越厚。
当中本聪决定采用工作量认证机制时,出发点是为了避免系统受到攻击。“中本聪”认为,如果攻击者想通过搞乱账本来攻击,他需要足够的计算能力。换句话说,他比大多数推石头的人都厉害。这样他要付出巨大的成本,但回报不足以抵消成本,所以攻击者没有经济动机去攻击比特币系统。
但是,现在由于比特币的价格越来越高,推石头的人已经不满足于自己去推了,而是把家里的大骡子大马都派上去干活了。在“中本聪”最初的设计里,一个CPU一票,用算力来决定哪个矿工记的账成为最终的账目。随着比特币价格的增高,开始出现了GPU挖矿,后来人们又不满足于GPU的速度,开始制造专用芯片挖矿。专用芯片在计算比特币问题的能力上是普通CPU的数万倍,因此现在比特币已经不是“一个CPU一票”了,这也背离了当初“中本聪”的设计,比特币网络已经基本上被几大矿池所垄断,背离了去中心化货币这一初衷。
雷锋网特约稿件,未经授权禁止转载。详情见转载须知。
相关问答:显卡挖矿是什么意思?为什么显卡价格和挖矿有关?
作为一个曾经“梦想一夜暴富,最后血本无归”的“老矿工”,来回答这个问题,本文尽量用通俗的语言来描述一下挖矿、显卡挖矿和显卡价格的一些相关问题。
“挖矿”是什么意思?
简单来讲,挖矿就是产生数字货币的意思,数字货币有很多种,包括我们听到过比特币、莱特币、以太坊、币安币、狗狗币等。
这里,我们以比特币为例,来大致了解一下,比特币就是一种P2P形式的数字货币,P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。所以,比特币其总数量有限,该货币系统曾在4年内只有不超过1050万个,之后的总数量将被永久限制在2100万个。
但是,与大多数货币不前手同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算机数据计算而产生,每隔一定时间就会通过“挖矿”产生一部分比特币。
“显卡挖矿”是什么意思?
我们知道了“挖矿”的含义,简单地说,不就是让电脑进行大量计算吗?这不正是电脑的长处吗?
那么,为什么“挖矿”总要拿显卡去挖,更为厉害的CPU,它不能挖吗?毕竟,显卡一般都是用来打游戏的,怎么会和数字货币扯上关系呢?
这里就要提到一个词语:算力。
我们要知道,挖矿最重要的就是电脑硬件的算力大小,相较于CPU的复杂运算,显卡进行的则是通用计算,往往都会堆叠上千甚至几千个流处理器。然而正好,挖矿只需要通用计算就能搞定,复杂运算却完全利用不上,所以,显卡的另外一个用武之地就是挖矿!
相当于什么意思呢?举个例子简单的例子:我们需要在大量的白纸上面写上一个数字1,我们安排10个老师和1000个小学生来做这件事,在相同时间内,这1000个小学生的完成量肯定要比10个老师完成的更多,虽然老师能力更强,但是在处理这种简单事情上,架不住小学生人多啊。
其实,早期的“挖矿”,确实是用CPU来进行的,后来,由于挖矿的难度越来越大,CPU的通用计算你能力已经并无法满足挖矿的需求了,所以就用到显卡来挖矿。反而,对于我们平时注重的电脑性能提升的重点硬件CPU和内存要求并不高,有的时候仅仅需要能够保证运行操系统和相关软件就行。我当初自己配置的小型矿机,使用的CPU和CPU散热都是二手货,内存仅为4GB,使用的硬盘仅为60G,然而搭配的确是6块显卡和可以插6块显卡的主板。
为什么显卡价格和挖矿有关?
关于显卡的价格与挖矿的关系,一般可以从新显卡和二手显卡市场的价格来分别说一下。
第一,新显卡方面。
其实,新显卡的价格上涨,主要是在前两年,最近显卡价格正在逐渐回落。而当初,显卡价格上涨跟当时比特币的市场行情有很大关系。当时的比特币价格可谓是达到了疯狂状态,所以催生了大量的专业“矿工”和“挖矿公司”,当然,也包括大量的像我一样的“挖矿散户”。
当时,有媒体报道,有部分地区的网吧竟然关门歇业,战而进行专业挖矿,其火热程度可想而知。
后来,由于数字货币价格回落,并且相关监管部门对数字货币及挖矿项目的规范化管理,行业正逐步回归理性和正规,加上挖矿行业与环境保护相悖,所以大量的矿工转行、矿机关闭,同时,相关企业也研发出了专用的挖矿机器,造成显卡需求持续下降,显卡价格随之下降。
大量的市场需求,导致显卡的价格一涨再涨;市场需求降低,显卡价格也逐步回落,这与市场的供需关系和价格浮动是相匹配的。
第二,二手显卡方面。
挖矿用的显卡,我们俗称矿卡。随着矿机对显卡的大量需求,二手显卡也被很多矿工所青睐;但又随着大量矿机关闭,大量矿卡肯定流入二手市场,而很多良心人士,是不建议普通用户购买二手矿卡的。所以,显卡二手市场的的价格也就随着挖矿行业的行情变化而变化。
举个真实的例子,AMD曾推出了一款显卡叫Radeon Ⅶ,于2019年2月发布,7月份停产,发布时价格仅为5000多。但是,在停产一年半过后,其二手价格竟高达8000元左右,而这仅仅是由于这块显卡各方面的性能数据更加有利于挖矿。
总体而言,显卡挖矿就是一种利用显卡本身的优势来进行数字货币的生产,而挖矿行业的兴衰,就直接影响了显卡价格的波动。
在此,奉劝还未进入而又想进入“矿圈”的普通玩家,放弃吧,因为有可能,下一个“血本无归”的,就是你!
⑹ 比特怎么挖矿
1、先下载你的比特币电子钱包,网络一下Bitcoin客户端就有,不用注册的,它是默认绑定你的电脑的,下载安装好,它就会更你的网络数据块,这个够坑爹,听说是下载所有网络节点的信息,是全世界的,这该有多大,我更新了好几天都下载完数据块。
Bitcoin客户端界面:
2.界面还是比较简单的,有了这个客户端,你这可以实现比特币的付款和收款了。点下图圈圈处就可以看到下方有一串的数字和字母的字符串,你可以把这串东东复制下来,发给别人,相等你把银行卡帐号给别人,别人就可以付款了,你点“发送货币”,把别人发来的帐号粘贴下就可以轻松给对方付款比特币,这个过程完全没有第三方的存在,所以安全放心。
3.介绍一下如何挖矿,也是比特币产生的重要方式。挖矿工具是guiminer,它是个绿色包,也就文件夹,不用安全,下载下来直接解压就可以用了,找到下方图标,双击运行。
界面:
4.有了工具就要用到,就要找到一个好地方生产矿产,也是就是矿池,在现在比特币产量越来越少了,如果个人挖不知何年何月才挖得出比特币来,如果你是银河系列超级计算机就另谈,个人电脑可以忽略掉,矿池有很多,但号称比特币全球最大矿池deepbit,它是网址是
https://deepbit.net/ 登陆网站注册帐号。点我的帐户
5、进入我的帐户信息,这里看到你的矿工信息,帐户有多少比特币的分成,c贡献
6、我的帐户的具体设置。
1、<你的比特币地址,用来接收报酬:>在框里内输入你接受比特币的地址,不要写错了,不然就白挖矿了,上面图文说过了。
2、《自动支付最小值:》 自己设置,当你在矿池有这么多钱后,这个网站就会自动把钱打到你的上面设置的比特币帐户地址。你看所以上面设置重要吧
3设置矿工了,点creat new vorker,中文是创建新的矿工,矿工就可以帮你的挖矿的工人,你可以设置多个,然后在很多电脑一块开挖,效果更明显,收入更丰厚
名称上就随便写,要写英文,外国的东西最好写英文。
密码自己写,不要写得长,简单就行了重要性不大
失败检测阀值 (1-3600 分钟): 写上60就行了,
当矿工不工作时发送邮件通知?* :果断不选,拒绝垃圾邮件,
矿工支付方式:果断选按比例拉,多劳多得,这才是符合人类发展。
最后点 sava setting ,就可以保存你的矿工了,返回可以看到你矿工的信息。
7.把矿工信息填入到挖矿工具guiminer,
file->new opencl miner->填入你喜爱的名字-》sever处选择deepbit-》username填入矿工的,记得要连你的注册帐号一起形式的你的邮箱加矿工,上面有,密码你懂的,device 是选择你用什么硬件来工作,一般是用显卡来的,选择你要用的显卡,如果找不到,记得更新一下显卡驱动就可以用了,然后start mining了.就可以坐等收矿了。具体速度要看你电脑配置。
注:矿池还有许多的,工具也有,具体我就不介绍了,只因为我是用我上面的说,谁用谁知道,用了才有发言处,其它的我可能不懂。小心的电费都不够本,如果真的有了就可以上中国比特币网买卖比特币,把它换的真金,对不。
⑺ 如何挖比特币
1、首先连接好网线,把网线插进矿机的网线接口,记得插紧一点哦。只有连接上网线矿机才能挖矿,宽带没有限制。
(7)比特币矿工手册扩展阅读
用户可以买到比特币,同时还可以使用计算机依照算法进行大量的运算来“开采”比特币。在用户“开采”比特币时,需要用电脑搜寻64位的数字就行,然后通过反复解谜密与其他淘金者相互竞争,为比特币网络提供所需的数字,如果用户的电脑成功地创造出一组数字,那么就将会获得25个比特币。
由于比特币系统采用了分散化编程,所以在每10分钟内只能获得25个比特币,而到2140年,流通的比特币上限将会达到2100万。换句话说,比特币系统是能够实现自给自足的,通过编码来抵御通胀,并防止他人对这些代码进行破坏。
⑻ 比特币现有价格
这篇文章不会涉及算法和协议中比较细节的部分,打算后面会再写一篇程序员视角下的比特币原理,那里会从技术人员的视角对比特币系统中较为关键的数据结构、算法和协议进行一些讲解。
在这篇文章中我会给出一个虚拟的村庄叫“比特村”,整个文章会以讲故事的方式,逐步告诉大家比特币提出的动机、解决了什么问题以及一些关键组件的目标和设计方案。
问题的提出
我们先从比特币产生的动机开始。
以物易物的比特村
话说在这个世界上,有一个叫比特村的小村庄,村庄共有几百户人家。这个村庄几乎与世隔绝,过着自给自足的生活。由于没有大规模贸易,比特村村民一直过着以物易物的生活,也就是说村民之间并没有使用统一的货币,互相间的贸易基本上就是老张家拿一袋面粉换老李家一只羊,王大嫂拿一筐野果换刘大婶两尺布。村民们一直就这么纯朴的生活着。
实物货币
终于有一天,村民觉得一直这样以物易物实在太不方便了,于是村子全员开会,讨论如何解决这个问题。有人提议,以便于分割且稀有的东西,例如黄金,作为一般等价物,把其它物品和黄金的对应关系编成一张表格,例如一克黄金对应一只羊,一克黄金对应一袋面粉等等,此时老张再也不用扛着一袋面粉气喘吁吁的去老李家换羊了,他只要从家里摸出一克金子,就可以去老李家牵回一只羊,而老李拿着这一克黄金可以从任何愿意出让面粉的人那里换回一袋面粉,当然也可以换取任何和一克黄金等值的物品。
此时比特村进入了实物货币时代。
符号货币
好景不长,过了一段时间,实物货币的弊端也出现了。因为比特村附近金矿并不多,开采和冶炼金子太费时费力了。而随着使用,金子总是不断会因为磨损、丢失或有人故意囤积而发生损耗。全村人又一次坐在了一起,开始商讨对策。此时有人说,其实大家也不必一定要真的用黄金啊,随便找张纸,写上“一克黄金”,只要全村人都认同这张纸就等于一克黄金,问题不就解决了。其他人纷纷表示认同,但同时也有了新的问题:真实的黄金是需要开采和冶炼的,金矿有限,开采和冶炼也需要成本,所以没有人可以短期凭空制造大量的黄金,可写字就不同了,只要我纸够笔够,随便像写多少写多少,那这就变成拼谁家里纸多了,搞不好到时一万张纸才能换一只羊(实际上这就发生了经济学上的通货膨胀)。
大家一想也是啊。不过此时又有人提出了解决方案:这个纸不是谁写都有效,我们只认村里德高望重的老村长写得,大家都认识老村长的字。老村长写一些纸,同时按照各家黄金存量发给大家等量的纸,例如老张家有二百克黄金,老村长就发给老张二百张写着“一克黄金”的纸,同时将老张家的黄金拿走作为抵押。就这样,老村长将村里所有黄金收归到自己的家里,并按各家上交的黄金数量发给等值的写有字的纸。此时村民就可以拿着这些纸当黄金进行贸易了,而且大家都认得老村长的字,其他人伪造不出来。另外,如果谁的纸磨损太严重,也可拿到老村长那里兑换新的等值的纸,另外老村长承诺任何人如果想要换成真黄金,只要拿纸回来,老村长就会把等值的黄金还给那人。因为老村长写得纸的黄金量和真实放在家里的黄金量是一样的,所以只要严格按照销毁多少纸新写多少纸的原则,每一张有效的纸总能换回相应的真黄金。
此时,比特村进入了符号货币(纸币)时代。而老村长就承担了政府和银行的角色。
中央系统虚拟货币
又过了几年,老村长由于每天都要核对大量的旧纸币,写新的纸币,还要把各种账目仔细做好记录。一来二去,老村长操劳过度不幸驾鹤西去了。
比特村再次召开全体大会,讨论应该怎么办。此时老村长的儿子二狗子自告奋勇接过了父亲的笔,承担起货币发行的责任。这个年轻的村长二狗子很聪明,他做了几天,发现好像也不用真的写那么多纸。完全可以这样:村民把纸币都交上来,销毁,但是二狗子会记录下每户上交的纸币数量。以后如果要进行付钱,例如老张要拿一克金子向老李换一只羊,就一起给二狗子打个电话,说明要将老张名下的一克金子划归老李名下,二狗子拿出账本,看看老张名下是否有一克金子,如果有就在老张的名下减掉一克,在老李的名下加上一克,这样就完成了支付,此时老李在电话中听到二狗子确认转账完成,就可以放心让老张把羊牵走了。
此时比特村进入了中央系统虚拟货币时代。每个村民都不需要用实物支付,支付过程变成了二狗子那边维护的账本上数字的变更。
分布式虚拟货币
这新上任的二狗子是聪明,不过这人有时候是聪明反被聪明误。有一天二狗子盯着这账本,心想这全村各户谁有多少钱就是我说的算,那我岂不是……。于是他头脑一热,私自从老张帐下划了十克金子到自己名下。
本以为天衣无缝,但没想到老张也有记账的习惯,有一天他正要付钱却被二狗子告知账户没钱了。老张核对了一下自己的账本,明明还有十克啊,于是拿着账本去找二狗子理论,这一核对发现了那笔未经老张同意的转账。
东窗事发!比特村炸开锅了。二狗子被弹劾是不可避免了,不过通过这件事,大家发现了账本集中在一个人手里的弊端:
这个体系完全依赖于账本持有人的个人信用,如果这个人不守规矩,随意篡改账本,那么整个货币系统就会崩溃
如果这个人家里失火或者账本失窃,同样也会为整个体系带来毁灭性的打击
正当人们不知所措时,村里一个叫中本聪的宅男科学家走上了台,告诉大家他已经设计了一套不依赖任何中央处理人的叫比特币的虚拟货币系统,可以解决上述问题。然后他缓缓讲述了自己的方案。
下面我们就来看看中本聪同学是如何设计这套系统的。
基础设施搭建
账簿公开机制
中本聪首先说明,要对现有账簿进行如下改造:
账簿上不再记载每户村民的余额,而只记载每一笔交易。即记载每一笔交易的付款人、收款人和付款金额。只要账簿的初始状态确定,每一笔交易记录可靠并有时序,当前每个人持有多少钱是可以推算出来的。
账簿由私有改为公开,只要任何村民需要,都可以获得当前完整的账簿,账簿上记录了从账簿创建开始到当前所有的交易记录。
此言一出,下面立刻炸锅了。第一条还无所谓,但是第二条简直无法接受,因为账簿可是记录了所有村民的交易,这样大家的隐私不全暴露了吗。
中本聪倒是不慌不忙,拿出了一对奇怪的东西。
身份与签名机制(公钥加密系统)
中本聪说,大家不要慌。在他的这套机制下,任何人都不使用真实身份交易,而是使用一个唯一的代号交易。
他展示了手里神奇的东西,说这两件东西分别叫保密印章和印章扫描器。后面他会给村里每一户发一个保密印章和一个印章扫描器。两者的作用如下:
保密印章可以在纸上盖一个章,每个印章盖出的章都隐含了一个全村唯一的一串字符,但是凭肉眼是看不出来的。也无法通过观察来制造出相应的印章。
印章扫描器可以扫描某个已经盖好的章,读出隐含的信息,并在液晶屏上显示出一串字符。
有了这两个神奇的东西,大家就可以在不暴露真实身份的情况下进行交易了,而印章隐含的那一串字符就是这户人家的代号。具体如何巧妙利用保密印章和印章扫描器进行交易,会在下文详述。
成立虚拟矿工组织(挖矿群体)
下一步,中本聪面向全村招募虚拟矿工,招募要求如下:
矿工以组为单位,一组可以是单独的一户,也可以是几户联合为一组
成为矿工不影响正常使用货币
矿工每天要花费一定时间从事比特币“挖矿”活动,但是不同于挖金矿,虚拟矿工不需要拿着工具去野外作业,在家里就可以完成工作
矿工有一定可能性获得报酬,在挖矿活动中付出的努力越多,获得报酬的可能性越大
矿工可以随时退出,也可以随时有新的矿工加进来
很快,大约有五分之一的村民加入比特币矿工组织,共分成了7个组。
建立初始账簿(创世块)
下面,中本聪宣布,先根据二狗子手里的账簿,把抵押的所有黄金按账簿记录的余额退还给每位村民,然后彻底销毁这本账簿。
然后,中本聪拿出一本新账簿,在账簿的第一页上记录了一些交易记录,特别的是,这些记录的付款人一栏全都是“系统”,而收款人分别是每个印章对应的隐含字符,代表初始时刻,系统为每一户默认分配了一定数量比特币,但是数量非常少,都只有几枚,甚至有些不幸的村户没有获得比特币。
接着中本聪说,由于目前市面上比特币非常少,大家可以先回到用黄金做货币的时代,由于我不是村长,我也没有权利强迫大家一定要承认比特币,大家可以自行决定要不要接受比特币。不过随着比特币的流动和矿工的活动,比特币会慢慢多起来。
支付与交易
做了这么多铺垫,终于说到重点了,下面说一下在这样一个体系下如何完成支付。以老张付给老李10个比特币为例。
付款人签署交易单
为了支付10个比特币,老张首先要询问老李的标识字符串,例如是“ABCDEFG”,同时老张也有一个标识字符串例如是“HIJKLMN”,然后老张写一张单子,内容为“HILKLMN支付10比特币给ABCDEFG”,然后用自己的保密印章改一个章,将这张单子交给老李。另外为了便于追溯这笔钱的来源,还要在单子里注明这笔钱的来源记在哪一页,例如这个单子里,老张的10比特币来自建立账簿时系统的赠送,记录在账簿第一页。
收款人确认单据签署人
老李拿到这个单子后,需要确认这个单子确实是来自“HIJKLMN”这个人(也就是老张)签署的,这个并不困难。因为单子上必须有保密章,老李拿出印章扫描器,扫一下章,如果液晶屏显示出的字符和付款人字符是一致的(这里是“HIJKLMN”),就可以确认单子确实是付款人签署的。这是因为根据保密印章的机制,没有其他人可以伪造印章,任何一个人只要扫描一下印章,都可以确认单子的付款人和盖章人是否一致。
收款人确认付款人余额
这个系统到目前还是很有问题。通过保密印章,收款人虽然可以确认付款人确实签署了这份单子,但是无法自行确认付款人是否有足够的余额支付。之前的中央虚拟货币系统中,二狗子负责检查付款人的余额,并通知收款人交易是否有效,现在把二狗子开了,谁来负责记账和确认每笔交易的有效性呢?
之前说过,中本聪设计的这个系统是分布式货币系统,不依赖任何中央人物,所以不会有一个或少数几个人负责这件事,最终承担这份工作的是之前所提到的矿工组织。老张、老李和全村其他任何使用比特币进行交易的村民都依赖矿工组织的工作才能完成交易。
矿工的工作
矿工的工作是整个系统的核心,也是最复杂性最高的地方。下面逐步介绍矿工的工作内容和目的。
矿工的工具
俗话说,工欲善其事,必先利其器。比特币矿工虽然不用铁撅、铁锨和探照灯等工具,不过也要有一些必备的东西。
初始账簿。每个组首先自己复制一份初始账簿,初始账簿只有一页,记录了系统的第一次赠送
空账簿纸。每个小组有若干账簿纸,每一页纸上仅有账簿结构,没有填内容,具体内容的书写规则后面讲述。下面是一张空账簿纸的样子,各个字段的意义后面会说到
编码生成器(哈希函数)。中本聪又向矿工组织的每个组分发了若干编码生成器,这个东西很神奇,将一页账簿填好内容的账簿纸放入这个机器,机器会在账簿纸的“本账单编号”一栏自动打印一串由“0”和“1”组成的编号,共256个。最神奇的是,编号生成器有如下功能:
生成的编号仅与账簿纸上填入的内容有关,与填写人、字体、填写时间等因素均无关
内容相同的账簿纸生成的编号总是相同,但是如果内容哪怕只改一个字符,编号就会面目全非
编码生成器在打印编码时还需要将所有填入账簿纸的交易单放入,机器会扫描交易单和填入交易单的一致性,尤其是保密印章,如果发现保密印章和付款人不一致,会拒绝打印编码
将一张已打印的账簿纸放入,机器会判定编号是否是有效的机器打印,并且判定编号和内容是否一致,这个编号无法伪造
交易单收件箱。每个矿工小组需要在门口挂一个箱子用于收集交易单。 公告板。每个矿工小组同样需要一个公告板公示一些信息。
有了上面的工具,矿工组织就可以开工了!
收集交易单
中本聪规定,每笔交易的发起人,不但要将交易单给到收款人,还要同时复制若干份一模一样的交易单投递到每个矿工小组的收件箱里。
矿工小组的人定期到自己的收件箱里把收集到的交易单一并取出来。
填写账簿
此时小组的人拿出一张空的账簿纸,把这些交易填写到“交易清单”一栏,同时找到当前账簿最后一页,将最后一页的编号抄写到“上一张账单编号一栏”。 注意还有个“幸运数字”,可以随便填上一个数字,如12345。然后,将这样账簿纸放入编号生成器,打印好编号,一张账簿就算完成了。
如果你以为矿工的工作就这么简单,那就大错特错了,中本聪有个变态的规定:只有编号的前10个数均为0,这页账簿纸才算有效。
根据之前对编号生成器的描述,要修改编号,只能修改账簿纸的内容,而“交易清单”和“上一张账簿纸编号”是不能随便改的,那么只能改幸运数字了。于是为了生成有效的账簿纸,小组里的矿工就不断抄写账簿纸,但每张纸的幸运数字都不同,然后不断的重复将纸放入编码器,如果生成的编号不符合规定,这张纸就算废了,重复这个过程直到生成一串有效的编号。
我们知道,如果编号的每一个数字都是随机的,那么平均写1000多张幸运数字不同的纸才能获得一个有效的编号。
这就奇怪了,这些矿工为什么要拼命干这看似无意义的事情呢?还记得之前说过矿工有报酬吧,这就是矿工的动力了。中本聪规定:每一张账簿纸的交易清单第一条交易为“系统给这个小组支付50个比特币”。也就是说,如果你生成了一张有意义的账簿纸,并且被所有挖矿小组接受了,那么就意味着这条交易也被接受了,你的挖矿小组获得了50个比特币。
这就是矿工被叫做矿工的原因,也是为什么之前说随着交易和矿工的活动,比特币的数量会不断增多。例如下面是一个挖矿过程,这个小组的公共比特币帐号为“UVWXYZ”。
在幸运数字尝试到“533”时,系统生成了一页有效账簿。
确认账簿
当某挖矿小组幸运的生成了一张有意义的账簿,为了得到奖励,必须立刻请其它小组确认自己的工作。前面说过,当前村里有7个挖矿组,所以这个小组必须将有效账簿纸誊抄6份快马加鞭送到其他6个小组请求确认。
中本聪规定,当某个小组接到其他小组送来的账簿纸时,必须立即停下手里的挖矿工作进行账簿确认。
需要确认的信息有三个:
账簿的编号有效
账簿的前一页账簿有效
交易清单有效
首先看第一个,这个确认比较简单。只要将送来的账簿纸放入编码生成器进行验证,如果验证通过,则编号有效。
第二部分需要将账簿页上的“上一页账簿纸编号”和这个小组目前保存的有效账簿最后一页编号比对,如果相同则确认,如果不同,需要顺着已有账簿向前比对,直到找到这个编号的页。如果没有找到指定的“上一页账簿纸编号”对应的页,这个小组会将此页丢掉。不予确认。
注意,由上面的机制可以保证,如果各个小组手里的账簿纸是相同的,那么他们都能按同样的顺序装订成相同的账簿。因为后面一张纸的编号总是依赖前面的纸的编号,编码生成器的机制保证了所有合法账簿纸的相对先后顺序在每个小组那里都是相同的(可能会有分支,但不会出现环,后面细讲)。
最后是如何确认交易清单有效,其实也就是要确认当前每笔交易的付款人有足够的余额支付这笔钱。由于交易信息里包含这笔钱是如何来的,还包含了记录来源交易的账单编号。例如,HIJKLMN要给ABCDEFG10个比特币,并注明了这10个比特币来自之前OPQRST支付给HIJKLMN的一笔交易,确认时首先要确认之前这笔交易是否存在,同时还要检查HIJKLMN在这之前没有将这10个比特币支付给别人。这一切确认后,这笔交易有效性就被确认了。
其中第一笔是系统奖励给生成这页账簿的小组的50个,这笔交易大家都默认承认,后面的只要按照上述方法追溯,就可以确认HIJKLMN是否当前真有10个比特币支付给ABCDEFG。
如果完成了所有了上述验证并全部通过,这个小组就认可了上述账簿纸有效,然后将这张账簿纸并入小组的主账簿,舍弃目前正在进行的工作,后面的挖矿工作会基于这本更新后的主账本进行。
账簿确认反馈
对于挖矿小组来说,当账簿纸送出去后,如果后面有收到其他小组送来的账簿纸,其“上一页账簿纸编号”为自己之前送出去的账簿纸,那么就表示他们的工作成功被其他小组认可了,因为已经有小组基于他们的账簿纸继续工作了。此时,可以粗略的说可以认为已经得到了50个比特币。
另外,任何一个小组当新生成有效账簿纸或确认了别的小组的账簿纸时,就将最新被这个小组承认的交易写到公告牌上,那么收款人只要发现相关交易被各个小组认可了,基本就可以认为这笔钱已经到了自己的账上,后面他就可以在付款时将钱的来源指向这笔交易了。
以上就是整个比特币的支付体系。下面我们来分析一下,这个体系为什么可以工作下去,以及这个体系可能面临的风险。
工作机制分析
虽然上面阐述了比特币的基本运作规则,但是村民们还是有不少疑问。所以中本聪同学专门开了个答疑会,解答常见问题。下面总结一下村民最集中关心的问题。
核心问题答疑
如果同时收到两份合法的账簿页怎么办?
注意在上面的运行机制中,各个挖矿小组是并行工作的,因此完全可能出现这样的情况:某小组收到两份不一样的账簿页,它们都基于当前这个小组的主账簿的最后一页,并且内容也都完全合法,怎么办?
关于这个问题,中本聪同学说,小组不应该以线性方式组织账簿,而应该以树状组织账簿,任何时刻,都以当前最长分支作为主账簿,但是保留其它分支。举个例子,某小组同时收到A、B两份账簿页,经核算都是合法的,此时小组应该将两页以分叉的形式组织起来,如下图所示:
黑色表示当前账簿主干。此时,可以随便选择一个页作为当前主分支,例如选择A:
此时如果有一个新的账簿页是基于A的,那么这个主干就延续下去:
如果这个主干一直这么延续下去,表示大家基本都以A为主干,B就会被遗忘。但是也有可能忽然B变成更长了:
那么我们就需要将B分支作为当前主干,基于这个分支进行后续工作。
从局部来看,虽然在某一时刻各个小组的账簿主干可能存在不一致,但大方向是一致的,那些偶尔由于不同步产生的小分支,会很快被淹没在历史中。
如果挖矿小组有人伪造账簿怎么办
关于这个问题,中本聪同学说,只要挖矿组织中大多数人是诚实的,这个系统就可靠,具体分几个方面给予答复。
首先,基于保密印章机制,没有人能伪造他人身份进行付款,因为编码生成器在打印编码时会核对所有交易单的保密印章,印章和付款人不一致会拒绝打印。
而且诚实的矿工也不会承认不合法的交易(如某笔交易付款方余额不够)。
所以只有一种可能的攻击行为,即在收款人确认收款后,从另一条分支上建立另外的交易单,取消之前的付款,而将同一笔钱再次付款给另一个人(即所谓的double-spending问题)。下面同样用一个例子说明这个问题。
先假设有一个攻击者拥有10个比特币,他准备将这笔钱同时支付给两名受害者A和B,并都得到承认。
第一步,攻击者准备从受害者A手里买10比特币的黄金,他签署交易单给受害者A,转10个比特币给受害者A。
第二步,这笔交易在最新的账簿页中被确认,并被各个挖矿小组公告出来。受害人A看到公告,确认比特币到账,给了攻击者10个比特币等值的黄金。
第三步,攻击者找到账簿,从包含刚才交易的账簿页的前一页做出一个分支,生成更多的账单页,超过刚才的分支。由于此时刚才攻击者制造的分支变成了主干分支,而包含受害者A得到钱的分支变成了旁支,因此挖矿组织不再承认刚才的转账,受害者A得到的10比特币被取消了。
第四步,攻击者可以再次签署交易单,将同一笔钱支付给受害者B。受害者B确认钱到账后,支付给攻击者等值黄金。
至此,攻击者将10个比特币花了两次,从两名受害者那里各购得等值黄金。攻击者还可以如法炮制,取消与受害者B的转账,将同一笔钱再支付给其他人……
关于这种攻击,中本聪给出的解决方案是,建议收款人不要在公告挂出时立即确认交易完成,而是应该再看一段时间,等待各个挖矿小组再挂出6张确认账簿,并且之前的账簿没有被取消,才确认钱已到账。
中本聪解释道,之前设定变态的编号规则,正是为了防御这一点。根据前面所述,生成有效账簿页不是那么简单的,要花费大量的人力反复试不同的幸运数字,而且过程完全是碰运气。如果某账簿页包含你收到钱的确认,并且在后面又延续了6个,那么攻击者想要在落后6页的情况下从另一个分支赶超当前主分支是非常困难的,除非攻击者拥有非常多的人力,超过其他所有诚实矿工的人力之和。
而且,如果攻击者有如此多人力,与其花这么大力气搞这种攻击,还不如做良民挖矿来的收益大。这就从动机上杜绝了攻击的形成。
比特币会一直增加下去,岂不是会严重通货膨胀
中本聪说,这一点我也想到了。前面忘了说了,我给矿工组织的操作细则手册会说明,刚开始我们协议每生成一页账簿,奖励小组50个比特币,后面,每当账簿增加21,000页,奖励就减半,例如当达到210,000页后,每生成一页账簿奖励25个比特币,420,000页后,每生成一页奖励12.5个,依次类推,等账簿达到6,930,000页后,新生成账簿页就没有奖励了。此时比特币全量约为21,000,000个,这就是比特币的总量,所以不会无限增加下去。
没有奖励后,就没人做矿工了,岂不是没人帮忙确认交易了
到时,矿工的收益会由挖矿所得变为收取手续费。例如,你在转账时可以指定其中1%作为手续费支付给生成账簿页的小组,各个小组会挑选手续费高的交易单优先确认。
矿工如果越来越多,比特币生成速度会变快吗
不会。中本聪解释,虽然可以任意加入和退出矿工组织,导致矿工人数变化,每个矿工也会拿到一个编码生成器,不过我已经在编码生成器中加入了调控机制,当前工作的编码生成器越多,每个机器的效率就越低,保证新账簿页生成速率不变。
虽然每个人的代号是匿名的,但如果泄露了某个人的代号,账簿又是公开的,岂不是他的所有账目都查出来了
确实是这样的。例如你要和某人交易,必然要要到他的代号才能填写交易单。因为收款人一栏要填入那人的代号。不过中本聪说可以提供无限制的保密印章,建议每一次交易用不同的保密印章,这样查账簿就追查不到同一个人的所有账目了。
答疑完毕。
说明
本文用通俗比喻的方式讲解了比特币的运行机制。有几点需要说明:
为了便于理解,我做了很多简化,因此有些机制细节和实际的比特币可能不完全相同。但总体思想和关键原理是一致的。
由于很多计算机世界的东西(如公钥体系、网络传输)在现实世界中并没有特别好的对等物,所以故事里难免有一些生硬和不合常理的细节。
本文描述的是比特币网络本身的技术原理和运作机制,当在如Mtgox这种买卖市场中进行比特币交易时,市场做了中间代理,并不遵从上述机制