香港矿池比特币 莱特币矿池
一、比特币矿池的协议stratum
转自:
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协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。
二、比特币矿池有什么差别
主要是获得的比特币分配模式不同:根据运营模式,常见的比特币矿池有如下几种:PPLNS、PPS、DGM、P2Pool等
PPLNS:(最纯正的组队挖矿)全称Pay Per Last N Shares,意思是说“根据过去的N个股份来支付收益”,这意味着,所有的矿工一旦发现了一个区块,大家将根据每个人自己贡献的股份数量占比来分配区块中的货币。(share就是股份的意思)
在PPLNS模式下,运气成份非常重要,如果矿池一天能够发现很多个区块,那么大家的分红也会非常多,如果矿池一天下来都没有能够发现区块,那么大家也就没有任何收益。
PPS:Pay-Per-Share方式---该方式为立即为每一个share支付报酬。该支出来源于矿池现有的比特币资金,因此可以立即取现,而不用等待区块生成完毕或者确认。这样可以避免矿池运营者幕后操纵。这中方法减少了矿工的风险,但将风险转移给了矿池的运营者。运营者可以收取手续费来弥补这些风险可能造成的损失。
为了解决PPLNS那种有时候收益很高,有时候没有收益的情况,PPS采用了新的算法。PPS根据你的算力在矿池中的占比,并估算了矿池每天可以获得的矿产,给你每天基本固定的收益。
怎么样,有没有感觉这就是一个稳定的工作?实际上,PPS模式的矿池为了避免亏本风险,往往会收取7%-8%的高额手续费。
DGM:Double Geometric Method.双几何制.结合了 PPLNS和几何奖励类型,使得矿池运营者能规避一部分风险.矿池运营者在短期内收取部分挖出的货币,然后在之後以正规化过的值返还给矿工,像电容充放电,运气好每 block少给你点,运气差多给你点。
175btc:175btc的挖矿节点工作在类似比特币区块链的一种shares链上。由于没有中心,所以也不会受到DoS攻击。和其他现有的矿池技术都不一样---每个节点工作的区块,都包括支付给前期shares的所有者以及该节点自己的比特币。99%的奖励(50BTC+交易费用)会平均分给矿工,另外0.5%会奖励给生成区块的人。
比特币之家网有详细的介绍。
三、比特币为什么暴跌
原因1:BCH分叉引发踩踏。梳理比特币价格时间线不难发现,此次币价下跌始于BCH分叉前夜。BCH(比特币现金)是市值排名第四的数字货币,由控制着比特币大量算力的矿机巨头公司比特大陆于2017年8月从比特币原链分叉而来(可以理解为复制了一个“山寨”的比特币)。最近,控制着BCH大量算力的Craig Steven Wright(简称CSW)想再次分裂BCH,CSW阵营与比特大陆阵营自11月16日开始打起了算力战,争夺BCH的主导权。这场对决也被看成是CSW与吴忌寒(比特大陆创始人)之间的对决,而CSW是个自称“中本聪”的澳洲人,所以被戏称为“澳本聪”。为了赢下算力战,澳本聪和吴忌寒动用自己的财力把很多原本用于挖BTC(比特币)的算力切换到了BCH之上,这直接导致了BTC整体算力的减少,也间接导致了比特币价格的下跌。“此次下跌的根源是熊市信心丧失,导火索是BCH分叉中BSV一方不顾经济利益,烧钱攻击BCH主链,使人对去中心化密码货币的抗攻击能力产生怀疑。”重庆工商大学区块链经济研究中心主任刘昌用对区块链Truth(ID:chaintruth)表示。奇点咨询创始人郑迪在11月15日分析称,算力战导致BTC网络最近10天的算力下降了10%左右,挖1个BTC的完全成本也相应下降10%至5000美元(4毛电费)~4000美元(3毛电费)左右。在这样的成本基础上,大矿工们完有动力在期货市场上提前把BTC抛掉锁定利润。这可能是为什么期货市场的BTC一度跌到4900美元的原因,如果没有一定的利润空间,比特币的供应商(矿工)也不会有意愿以低于现货市场的价格在期货市场上提前抛出(未来的)比特币。在整个算力战期间,BTC挖矿算力在持续下降。“高峰时期,整个比特币网络有60EH算力,大跌以前也有52EH,然后快速下降到45~47EH,现在只有40EH左右。”郑迪对区块链Truth表示。在郑迪看来,后面的算力下降是因为币价持续下降,部分矿工无法覆盖成本导致边际算力退出,而算力的退出导致币价继续下跌,就此形成了恶性循环。“很多人认为成本决定价格,比特币成本跌了10%,价格跟随下跌是应该的。”郑迪分析道。这样看来,币价下跌和算力战脱不开关系。11月19日和11月20日,币信创始人星空接连在朋友圈发文,直指BTC此轮暴跌和BCH分叉有关。星空在朋友圈发表状态泛城控股董事长陈伟星也坚定地认为BCH分叉是比特币大跌的主要原因,他对区块链Truth表示:“小寒(指吴忌寒)和澳本聪瞎搞,引起了市场的担心。很多人不理解比特币,算力就成了大家都看得懂的指标,BCH算力战导致BTC算力变少,就会引起恐慌和抛售。”区块链专家洪蜀宁则告诉区块链Truth,比特币价格大跌是因为算力战双方有人为了筹资大量抛售比特币,另外缩小BTC和BCH的价格差有利于算力战双方控制算力流动。这可真是——神仙打架、百姓遭殃!不过,也有人持不同观点。莱比特矿池创始人江卓尔反驳道:“本次‘和平挖矿竞赛’中,双方截止目前(11月20日晚),累计共烧掉3000万元,不足1000个BTC。”他认为,CSW声称的“算力战烧钱卖BTC导致价格下跌”站不住脚,总共耗资不到1000个BTC,就把盘面砸穿了?(注:据火币Pro显示比特币现流通量为1673.82万个)
原因2:OKEx期货火上浇油在江卓尔看来,本次比特币下跌直接原因是交易所OKEx的期货系统出错,导致大量自动量化程序砸盘现货,引爆一直存在的熊市恐慌情绪。11月14日下午5点,OKEx平台上BCH期货合约提前交割,交易价格并不是按照现货价格执行,而是按照每个合约的最后一笔成交价来算。当时BCH现货指数500美金,而期货是408美金。OKEx在公众号解释提前交割的原因有分析人士指出,传统商品期货,交割时候基本不存在折价,因为可以拿多头仓位进行实物交割,如果有折价也会被磨平,而上交易所的估值期货,到交割时候会按照编制的一揽子股票指数的收盘价加权平均,基本交割时候不会出现折价和溢价,期货市场没有说是按照最后一笔成交价结算交割的。OKEx的决定直接导致不少投资人亏损。因此有分析人士指出,11月14日晚上以太坊、莱特币、EOS等主流币期货出现了流动性买盘枯竭,全是恐慌卖单,以太坊最深跌到了141美元,而当时现货还在180美元。同时,江卓尔表示根本原因则是熊市横久必跌。他坚持认为,以BTC的体量,被一个不足BTC市值7%的币(BCH)造成这么大的影响是说不过去的。几天前,五家数字加密货币投资基金因在OKEx期货交易中遭遇了不公平待遇而共同声讨OKEx,其中一家已经向香港证监会提交了投诉。有报道称,在OKEx异常期间,市场累计爆仓单超过了4亿美金。
原因3:监管形势严峻。在矿场主大头(化名)看来,这次币价下跌,算力战不是主要原因。“你想想,吴忌寒的机器咋卖?砸到底了,矿工收不回成本,机器也卖不出去了。”大头对区块链Truth表示。币印联合创始人兼COO朱砝认为大跌和算力战根本没关系。“原本根本就没必要打什么算力战,社区有分歧,硬分叉就行了。所谓算力战只是双方感情用事非要分个场面上的高下,或者只是市场宣传的噱头罢了。”朱砝对区块链Truth表示。他告诉区块链Truth,大跌的很大一个原因是美国要打击ICO。据《华尔街日报》11月16日报道,近期,美国证券交易委员会(以下简称“SEC”)在官网上发布一则公告,表示对与CarrierEQ Inc.(Airfox)和Paragon Coin Inc.两家ICO项目方进行民事处分。内容包括:一、必须按购买时的代币估值,以美元形式退回给投资者;二、代币须以合法证券注册;三、向委员会每年至少报告一次;四、25万美元的罚款。同一天,SEC同时发布了《关于数字资产证券发行与交易的声明》,具体定义了“数字资产”、“交易所”、“经营实体”等概念。在该声明中,ICO代币被视为未注册的证券。反规定的加密货币创始人进行民事处罚。有分析人士指出,美国为典型的判例法国家,首次判决将影响此后相关案件的判罚方向和尺度,本次判决结果明显、态度明确,影响了投资者对于加密货币的信心。而华盛顿律师事务所Stepehn Palley认为,本次判决中涉及的相关测试可能适用于过去两年中95%的ICO项目。中国银行法学研究会理事肖飒告诉区块链Truth:严格来讲不能说民事判决的出现,就代表了监管机构对某种行为进行了更严格的监管;只能说判例与未来的“集团诉讼”,可能会影响到监管机构的政策制定,比如说州或联邦的立法。从另外一个角度可以认为,这样的民事诉讼判决,会使得加密货币的项目方因为判例的约束会更加谨慎。另有报道显示,美国监管机构正在调查,去年比特币创纪录的上涨是否是市场操纵的结果。这次调查的焦点是——交易员是否使用了一种存在争议的加密货币Tether来推动比特币价格上涨。Tether的创始人称,这种加密货币(USDT)由美元以1:1的比例提供支持。今年6月,德克萨斯大学金融学教授约翰?格里芬(John Griffin)和研究生阿明?沙姆斯(Amin Shams)发表了一项研究,称比特币涨幅中至少有一半是由于共谋的价格操纵。在这篇66页的论文中,作者解释说,在比特币价格下跌的关键时刻,有人用Tether来大量购买比特币,这有助于“稳定和操纵”比特币的价格。种种迹象表明,主流国家对于虚拟货币的监管正越来越严格,这或许也是人们短期看衰比特币的原因之一。
-
芝麻开门交易所官网地址 芝麻交易所排名 11-09