文章来源:互联网作者:互联网发布时间:2023-06-05 16:01:00
转自:
getblocktemplate协议诞生于2012年中叶,此时矿池已经出现。矿池采用getblocktemplate协议与节点客户端交互,采用stratum协议晌森与矿工交互,这是最典型的矿池搭建模式。
与getwork相比,getblocktemplate协议最大的不同点是:getblocktemplate协议让矿工自行构造区块。如此一来,节点和挖矿完全分离。对于getwork来说,区块链是黑暗的,getwork对区块链一无所知,他只知道修改data字段的4个字节。对于getblocktemplate来说,整个区块链是透明的,getblocktemplate掌握区块链上与挖矿有关的所有信息,包括待确认交易池,getblocktemplate可以自己选择包含进区块的交易。
挖矿有两种方式,一种叫SOLO挖矿,另一种是去矿池挖矿。前文所述的在节点客户端直接启动CPU挖矿,以及依靠getwork+cgminer驱动显卡直接连接节点客户端挖矿,都是SOLO挖矿,SOLO好比自己独资买彩票,不轻易中奖,中奖则收益全部归自己所有。去矿池挖矿好比合买彩票,大家一起出钱,能买一堆彩票,中奖后按出资比率分配收益。理论上,矿机可以借助getblocktemplate协议链接节点客户端SOLO挖矿,但其实早已没有矿工会那么做,在写这篇文章时,比特币全网算力1600P+,而当前最先进的矿机算力10T左右,如此算来,单台矿机SOLO挖到一个块的概率不到16万分之一,矿工(人)投入真金白银购买矿机、交付电费,不会做风险那么高的投资,显然投入矿池抱团挖矿以降低风险,获得稳定收益更加适合。因此矿池的出现是必然,也不可消除,无论是否破坏系统的去中心化原则。
矿池的核心工作是给矿工分配任务,统计工作量并分发收益。矿池将区块难度分成很多难度更小的任务下发给矿工计算,矿工完成一个任务后将工作量提交给矿池,叫提交一个share。假如全网区块难度要求Hash运算结果的前70个比特位都是0,那么矿池给矿工分配的任务可能只要求前30位是0(根据矿工算力调节),矿工完成指定难度任务后上交share,矿池再检测在满足前30位为0的基础上,看看是否碰巧前70位都是0。
矿池会根据每个矿工的算力情况分配不同难度的任务,矿池谈昌是如何判断矿工算力大小以分配合适的任务难度呢?调节思路和比特币区块难度一样,矿池需要借助矿工的share率,矿池希望给每个矿工分配的任务都足够让矿工运算一定时间,比如说1秒,如果矿工在一秒之内完成了几次任务,说明矿池当前给到的难度低了,需要调高,反之。如此下来,经过一段时间调节,矿池能给矿工分配合理难度,并计算出矿工的算力。
矿池通过getblocktemplate协议与网络节点交互,以获得区块链的最新信息,通过stratum协议与矿工交互。此外,为了让之前用getwork协议挖矿的软件也可以连接到矿池挖矿,矿池一般也支持getwork协议,通过阶层挖矿代理机制实现(Stratum mining proxy)。须知在矿池刚出现时,显卡挖矿还是主力,getwork用起来非常方便,另外早期的FPGA矿机有些是用getwork实现的,stratum与矿池采用TCP方式通信,数据使用JSON封装格式。
先来说一下getblocktemplate遗留下来的几个问题:
矿工驱动:在getblocktemplate协议里,依然是由矿工主动通过HTTP方式调用RPC接口向节点申请挖矿数据,这就意味着,网络最新区块的变动无法及时告知矿工,造成算力损失。
数据负载:如上宴侍亩所述,如今正常的一次getblocktemplate调用节点都会反馈回1.5M左右的数据,其中主要数据是交易列表,矿工与矿池需频繁交互数据,显然不能每次分配工作都要给矿工附带那么多信息。再者巨大的内存需求将大大影响矿机性能,增加成本。
Stratum协议彻底解决了以上问题。
Stratum协议采用主动分配任务的方式,也就是说,矿池任何时候都可以给矿工指派新任务,对于矿工来说,如果收到矿池指派的新任务,应立即无条件转向新任务;矿工也可以主动跟矿池申请新任务。
现在最核心的问题是如何让矿工获得更大的搜索空间,如果参照getwork协议,仅仅给矿工可以改变nNonce和nTime字段,则交互的数据量很少,但这点搜索空间肯定是不够的。想增加搜索空间,只能在hashMerkleroot下功夫,如果让矿工自己构造Coinbase,那么搜索空间的问题将迎刃而解,但代价是必要要把区块包含的所有交易都交给矿工,矿工才能构造交易列表的Merkleroot,这对于矿工来说压力更大,对于矿池带宽要求也更高。
Stratum协议巧妙解决了这个问题,成功实现既可以给矿工增加足够的搜索空间,又只需要交互很少的数据量,这也是Stratum协议最具创新的地方。
再来回顾一下区块头的6个字段80字节,这个很关键,nVersion,nBits,hashPrevBlock这3个字段是固定的,nNonce,nTime这两个字段是矿工现在就可以改变的。增加搜索空间只能从hashMerkleroot下手,这个绕不过去。Stratum协议让矿工自己构造coinbase交易,coinbase的scriptSig字段有很多字节可以让矿工自由填充,而coinbase的改动意味着hashMerkleroot的改变。从coinbase构造hashMerkleroot无需全部交易,
如上图所示,假如区块将包含13笔交易,矿池先对这13笔交易进行处理,最后只要把图中的4个黑点(Hash值)交付给矿工,同时将构造coinbase需要的信息交付给矿工,矿工就可以自己构造hashMerkleroot(图中的绿点都是矿工自行计算获得,两两合并Hash时,规定下一个黑点代表的hash值总是放在右边)
。按照这种方式,假如区块包含N笔交易,矿池可以浓缩成log2(N)个hash值交付给矿工,这大大降低了矿池和矿工交互的数据量。
Stratum协议严格规定了矿工和矿池交互的接口数据结构和交互逻辑,具体如下:
1. 矿工订阅任务
启动挖矿机器,使用mining.subscribe方法链接矿池
返回数据很重要,矿工需本地记录,在整个挖矿过程中都用到,其中:
Extranonce1,和 Extranonce2对于挖矿很重要,增加的搜索空间就在这里,现在,我们至少有了8个字节的搜索空间,即nNonce的4个字节,以及 Extranonce2的4个字节。
2. 矿池授权
在矿池注册一个账号 ,添加矿工,矿池允许每个账号任意添加矿工数,并取不同名字以区分。矿工使用mining.authorize方法申请授权,只有被矿池授权的矿工才能收到矿池指派任务。
3. 矿池分配任务
以上每个字段信息都是必不可少,其中:
有了以上信息,再加上之前拿到的Extranonce1 和Extranonce2_size,就可以挖矿了。
4. 挖矿
1) 构造coinbase交易
用到的信息包括Coinb1, Extranonce1, Extranonce2_size 以及Coinb2,构造很简单:
为啥可以这样,因为矿池帮矿工做了很多工作,矿池已经构建了coinbase交易,系列化后在指定位置分割成coinb1和coinb2,coinb1和coinb2包含指定信息,比如coinb1包含区块高度,coinb2包含了矿工的收益地址和收益额等信息,但是这些信息对于矿工来说无关紧要,矿工挖矿的地方只是Extranonce2 的4个字节。另外Extranonce1是矿池写入区块的指定信息,一般来说,每个矿池会写入自己矿池的信息,比如矿池名字或者域名,我们就是根据这个信息统计每个矿池在全网的算力比重。
2) 构建Merkleroot
利用coinbase和merkle_branch,按照上图方式构造hashMerkleroot字段。
3) 构建区块头
填充余下的5个字段,现在,矿池可以在nNonce和Extranonce2 里搜索进行挖矿,如果嫌搜索空间还不够,只要增加Extranonce2_size为多几个字节就可轻而易举解决。
5. 矿工提交工作量
当矿工找到一个符合难度的shares时,提交给矿池,提交的信息量很少,都是必不可少的字段:
矿池拿到以上5个字段后,首先根据任务号ID找出之前分配任务前存储的信息(主要是构建的coinbase交易以及包含的交易列表等),然后重构区块,再验证shares难度,对于符合难度要求的shares,再检测是否符合全网难度。
6. 矿池给矿工调节难度
矿池记录每个矿工的难度,并根据shares率不断调节以指定合适难度。矿池可以随时通过mining.set_difficulty方法给矿工发消息另其改变难度。
如上,Stratum协议核心理念基本解析清楚,在getblocktemplate协议和Stratum协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。
数字加密货币协议。它仅仅约定了在比特币网络中节点_行为规范,因此任何困汪人都可以遵照比孝碰特币协议巧尺谈实现自己的比特币节点软件并接入比特币网络。
最近比特币实在是太热太热了,热到出门不跟别人聊起比特币简直都不好意思说自己关心时事。但是大家说的很多东西却都是老生常谈的,读多了难免觉得千篇一律。我想这大多是因为真正在乎比特币的三种人:经济学家,GEEK,投机者之间信息不对称而造成的。经济学家们不懂技术,GEEK们不明白经济,投机者呢,他们敬橘仔只在乎有没有接盘侠。
所以无怪乎经济学家们写的比特币文章GEEK们不爱看,GEEK们欢呼比特币的时候经济学家们看不懂,而投机者呢,他们应该喜欢问别人要不要来两个BTC玩玩~
我第一次了解到比特币大约是在李笑来老师刚开始向国内宣传比特币概念的时候,我也是那个时候挖到自己第一个比特币。对了,世界上第一笔比特币支付交易也发生在这个时候。 Laszlo Hanyecz花了10,000个BTC通过网络买了一块披萨的故事大家一定都听过[1]。我在大学里学习金融专业,毕业后也在金融行业工作,现在在加拿大学习。
我想,我也许可以跟大家说说我眼里的BTC,和我对BTC经济学上的意义的理解。
货币是什么?我想大家在中学一定都学过,货币是 一般等价物 。货币是一种用来充当两种商品价值比较单位的物质。也就是说如果大家都愿意,路边的砖头也可以是货币。在人类历史的某一个时期,黄金站在了这个位置上,成为了大家最认可的一般等价物。这个时期,我们称作 金本位 。
黄金作为货币是非常好理解的,因为黄金具有着得天独厚的自然属性优势:
黄金化学性质稳定。黄金几乎不与其他物质发生反应,也很难氧化,这使得黄金很容易开采,精炼和储存。战国时代古人用青铜做货币亮汪,可是青铜会氧化,氧化之后同一种货币质量甚至大小都会变化,无疑使得青铜货币使用起来十分不便。
黄金很软。黄金不比玉石铁器,纯度越高的黄金越软,这让黄金可以随意切割。假如我买一件衣服,需要黄金十两,但是我手上只有一块一百两的金砖,我完全可以找工匠切十两下来用来交易。如果用钻石当货币,这种场景就可能没机会发生了。
黄金能拿来当货币,最重要的因素还是因为几乎全世界的人,都认为黄金这种东西是有价值的。所以当世界上某一国家的人发现他们并不孤独,世界上原来还存在无数其他的国家的时候,国家与国家之间的交易成为了可能。其关键就在于,大家都觉得黄金是好东西。黄金可以拿来做物品交换时的价值单位。
再后来,大家开始觉得如伍扰果经常买别人的东西也要花掉很多自己的黄金储备,全世界未开采的黄金又越来越少,这样下去不是划不来了嘛?
于是A国找B国商量说:你看我家总共就100两黄金,我家的人平时在自己家也不用黄金,我们用一种叫纸币A的钱来交易,1纸币A大约等于1两黄金。B说我们家也是啊,我家一共就50两,所以我们平时也只用纸币B来交易而不是用黄金,1纸币B大约等于0.5两黄金。A这时摸摸B的脑袋说,这不是正好,以后我们大家都用各自家里的纸币交易,纸币A和纸币B的汇率就是黄金的比例1:2。这样我买你的东西,给你纸币A,你买我家东西就直接给我纸币B,年底再统一结算黄金,这样平时就不会真的动用我们双方的黄金了,你说我是不是天才?[2]
后来大家觉得年底结算也太麻烦了,生意年年要做嘛~这时有一个叫美国的同学家里黄金最多,那就让美元和黄金挂钩,那我们交易的时候就只用看我们各自的钱值多少美元就行了。这就是后来的 布雷顿森林体系 。[3]
到了这个时期的货币,大家可以发现货币开始不仅仅只是用来做标尺的等价物,它开始体现出类似“契约”的特性。黄金跟美元挂钩,是因为美元代表着:美国政府做出的可以拿来兑换黄金的承诺函。
虽然最后布雷顿森林体系还是崩溃了,黄金跟货币价值没有了关系,黄金也不再作为货币使用。这使得现在的货币,成为了一种更为隐性的契约,它代表着各国政府对本国货币可以用来支付的承诺。也就是说,只要我国家存在一天,我就担保我们国家的货币是有价值的。这就是货币契约论的主要观点。
所以,我们说,货币有两种,一种是黄金,另一种是一个国家对自己发行的某种特殊印刷品可以拿来支付的承诺。
有人说,比特币是“人造黄金”,这话说对了一半。
现有的货币的价值除了制造和印刷的成本,就是国家实力担保的附加价值。大家用货币来进行交易,参考的也是不同货币背后的国家实力所体现的附加价值。只有清楚了这一点之后,我们才能开始讨论比特币。
比特币是什么?大家都知道比特币是一种电子货币,但是,凡是货币,就一定要有价值的体现。大家都觉得黄金最稳定,所以大家才觉得黄金是货币。大家都觉得国家不会随意违约,所以大家才觉得纸币是货币。
那么比特币的价值是什么?我看了很多的文章,可惜的是,绝大部分的人都忽略了这个问题。
比特币是一种互联网P2P协议。这份协议的特点之一是它从根本上解决了现有货币支付结算体系的瓶颈。
现在的货币支付结算技术是随着电报技术发展起来的。在古时候,远期和异地结算并不频繁,结算的验证程序靠的是熟人当面交易和掌柜签字画押。要想在结算上做文章,除非买通交易结算的那个人,还要能伪造文书。
后来,大航海时代,蒸汽时代,人们走得越来越远,贸易自然也越做越远。有的交易甚至要跨越大半个地球,这个时候,结算就成为了大问题。当时的人们不管是“先货后款”还是“先款后货”都有钱货两空的风险。网络游戏还没有玩家交易功能的时代,大家对此一定深有体会(是的,我说的就是石器时代!)。要么就是拿着货跑了,那么就是拿着钱跑了。关键是跑了还没地方追,人家在地球另一边呢!难道要我喊GM?
GM“哦”了一声,发明了金融业。
当时的人们想了个办法,那就是把合同或者收据折价抵押给银行,由银行来收款。银行又联系到地球另一边的银行,通过当地的银行来收款。当地的银行收到款项之后,再汇款至这边的银行。而这中间的沟通和验证都是通过电报完成的,不幸的是,这种沟通至今仍然使用的是旧时代的电报体系。这些验证和沟通需要花费多少时间和成本可想而知。
在这个过程中,两边的银行可以赚得盆满钵满。
首先,汇票和提货单可以让两边银行进行担保。我在地球这一边,我发没发货,发给谁,你汇没汇款,汇给谁,这些都是除了当事人谁也不知道的事情。这叫人怎么相信?所以可以找第三方的银行做担保,找了第三方银行作担保还不保险还可以让银行找对方的银行再做担保,这一来二去手续费银行赚得可高兴了。这就是信用证。[4]
其次,银行汇款使用的又还是旧时代的电报体系,所以国际汇款效率非常低。银行间汇付结算非常复杂,稍有差错,一笔款项就会消失在茫茫大海里。银行也不想做冤大头,吃力不讨好的事是不做的,所以国际汇款的手续费非常高昂,还不管到账,到不了基本都是客户的错。
最后,你们银行结算都这么低效率了,我们公司资金流动可是要命的啊。这时候银行就跳出来了,没关系啊!要钱啊?我们借你啊!你所有结算流程的每一个环节,每一张单据,我们都可以拿来做抵押。怎么样,够意思吧?就这样,银行又赚一笔利息费。
知道了这些之后,我们再来看看比特币能做什么。
比特币解决了结算过程中的验证风险。比特币是一份P2P协议,比特币的账本并不归某个人或某个集体管理,而是分布在整个互联网中,每一笔交易,都需要通过全体成员对“账单链”的真伪进行投票才能被记录在账本上。成员通过挖矿(消耗自然资源)来完成全网络账本和交易验证(创造价值)。这就使得 交易无法伪造 和 账本无法伪造 ,从而在结算的环节上大大减低了成本和风险。
我们可以想象,比特币的交易结算,只需要输入对方提供的地址,并确认金额就可以完成交易。再不需要通过金融机构验证担保,也没有高昂的手续费用,更不用花长久的时间去等待。这样的工具,是不是很有价值呢?
我在金融行业工作时,对国际结算业务沿袭电报技术体系的做法就感到十分费解,现在都是互联网时代了,为什么验证的工作仍然要用这么复杂的思路去解决呢?
恰好比特币的P2P加密协议功能可以解决这一问题。
第二个特点,是比特币的货币发行问题。
大家都知道比特币的发行规则:总共发行21,000,000枚比特币,发行速度每四年递减。
这让我想起了黄金。是的,黄金总储备量是固定,随着开采,流通的黄金变多。我们曾经把黄金当作货币,为什么不能把比特币当货币呢?
同时,很多人忽略了一点, 黄金是人类社会迄今为止最稳定的货币系统 。
黄金之所以成为最稳定的货币系统,是因为黄金有天然的稳定器属性。任何人都可以开采黄金,当通货膨胀发生时,黄金贬值,人们会把黄金制作成设备、首饰收藏起来,由于流通的黄金减少,通货膨胀得到缓解。反之,通货紧缩时,人们把家里储藏的黄金再融化制成货币,流通的黄金增加,紧缩得到缓解。
这些去中心化的特点使得在金本位下,国家货币政策和平衡预算再无存在必要。
回过头来看比特币,比特币不也正是 去中心化 货币吗?黄金能实现的功能,比特币同样能实现。所以绝大部分比特币讨论都提到过比特币抗通胀的特点。比特币的货币属性决定了它的稳定性。
在货币发行问题上,还有一个案例被经常提起,《货币理论和大国会山托儿合作社危机(Monetary Theory and the Great Capitol Hill Baby Sitting Co-op Crisis)》[5],讲的是由于通缩引发的货币系统崩溃问题。
但是我想说的是作者忽略了比特币发行的另一个特点, 可以无限分割 。
比特币是可以被分割到无限小的,但是传统纸币做不到这一点。这也就使得当通缩发生时,不能无线分割的纸币容易失去支付功能,从而引发货币系统崩溃。这点很容易理解,假如我手上的纸币最小面额是1元,但是我下楼买个冰棒老板却问我要0.0001元,这可怎么办?只好使用其他货币代替或者直接以物易物了……
但是比特币却是可以无限分割的,理论上来说,这种供需不对等的关系是可以通过单位的分割来缓解的。
因此我认为由通缩引发崩溃的可能性在比特币上不够充分。
最后,比特币的依托价值。一个国家的法币背后依托的是该国的实力,法币因国家存在而存在。那比特币背后依托的是什么呢?
我想跟大家说个故事。
在我父亲读大学的时代,人们主要从书本获取知识,所以我家每次搬家时,光搬书就需要一台车。但是如今还是有许多书遗失了。
后来我读书的时代,我们有了计算机,硬盘成为了知识储存的主流。我可以把我感兴趣的电影、歌曲和书籍全部保存在硬盘上。因为硬盘可以保存一百年。
到了现在,我们保存知识的方式变成了互联网。时代变化了,以前一个雅虎邮箱只有100MB的空间,而现在Gmail每天增加容量已经不能作为卖点了。互联网已经让一切都不同了,信息爆发式的增长,互联网正在一步一步成为人类社会的中心。如果互联网在人类灭亡时才毁灭,那么我们在互联网上留下的痕迹将保存到人类灭亡的那一天。
比特币的依托就是互联网本身。只要互联网本身不被毁灭,比特币的货币价值也不会被毁灭。这与一个国家被毁灭后,一国的货币将肯定被毁灭有着天壤之别。国家是存在货币契约违约风险的,但互联网的违约风险远远要小于它。
比特币最坏的结果也不过是回归到GEEK之间的小玩具,但要毁灭,除非先毁灭互联网。互联网本身就是比特币存在的最大保障。
简单来说,比特币作为货币,代表的是 一份互联网协议对支付结果和账本真伪性,去中心化,自然调节和未来存在的承诺 。这是比特币的契约性,也是比特币的价值所在。
比特币会成功吗?
比特币现在过热了吗?
比特币市场形成泡沫了吗?
我想这应该是大家最关心的三个问题。从我的观察,我只能做出以下回答。我反过来一个个说。
1、比特币市场形成泡沫了吗?
泡沫的概念指的是名义价值超过了实体的实际价值。比特币最近很火,因为人民币汇率破8000,美元破1000。这个价格是泡沫吗?我前面说了比特币的价值,这个价格和这些价值比较,是过高了吗?
很可惜的是,几乎不用比较也可以知道,是过高了。因为比特币的使用量摆在那里,过高的价格波动,使得支付变得困难,使用量过低。没有人使用的东西,再好的理念也转化不成实际价值。
这就好像火药被发明后几乎没有什么价值,直到被运用到战争上一样。
从这个意义上来说,比特币现在是一个 很大的泡沫 。
2、比特币现在过热了吗?
不,比特币现在非但不热,还太冷。关注他的人大多数还只停留在投机的层面,但是比特币终究是一种货币,功能的实现才是最应该被关注的。
只有让更多的人了解,并使用比特币,才能让比特币在泡沫破裂之后依然能得到发展。
泡沫破裂不可怕,日本房地产泡沫破裂后,难道就不发展房地产了?
可怕的是没有关注度,可怕的是没有人使用。
3、比特币会成功吗?
这也是我的问题。不知道中本聪发明比特币的目的是什么,假如是一个实验,我想已经成功一半了,假如是建立一个全新的人类社会金融体系嘛……故事才刚开始~
[1]This Pizza Cost $750,000
[2]国际金本位制度
[3]布雷顿森林体系
[4]信用证
[5]Busch,经济学界是如何看待比特币的?
本文不足或错误之处,还烦请指出,谢谢。 我的微博
关于比特币协议和比特币协议今日行情的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
芝麻开门安卓下载:立即前往
芝麻开门IOS下载:立即前往注册领取新手礼包!交易手续费返现:20%!
TRC20量化交易软件 TRC20量化交易软件官方客服v6.4.8
金融动态
下载
pi炒币手机钱包 pi炒币手机钱包苹果v6.1.8
金融动态
下载
RP杠杆平台 RP杠杆平台官网登陆v6.8.4
金融动态
下载
什么是AIOZ Ntwork(AIOZ)币
金融动态
下载
什么是Nrvos Ntwork(CKB)币
金融动态
下载
Gains Ntwork(GNS)是什么币
金融动态
下载
什么是vrscal(VR)币
金融动态
下载
Mavrick Protocol(MAV)是什么币
金融动态
下载