矿池工作原理
主要是获得的比特币分配模式不同:根据运营模式,常见的比特币矿池有如下几种: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%会奖励给生成区块的人。
比特币之家网有详细的介绍。
❷ 什么叫质押挖矿,期待解答
❸ 比特币矿机是什么
比特币挖矿机,就是用于赚取比特币的电脑,这类电脑一般有专业的挖矿芯片,多采用烧显卡的方式工作,耗电量较大。用户用个人计算机下载软件然后运行特定算法,与远方服务器通讯后可得到相应比特币,是获取比特币的方式之一。
挖矿实际是性能的竞争、装备的竞争,是矿工之间比拼算力,拥有较多算力的矿工挖到比特币的概率更大。随着全网算力上涨,用传统的设备(CPU、GPU)挖到比特的难度越来越大,人们开发出专门用来挖矿的芯片。芯片是矿机最核心的零件。芯片运转的过程会产生大量的热,为了散热降温,比特币矿机一般配有散热片和风扇。
(3)矿池工作原理扩展阅读:
比特币为一种虚拟的货币,比特币挖矿制度为通过计算机硬件为比特币网络开展数学运算的过程,提供服务的矿工可以得到一笔报酬,因为网络报酬依据矿工完成的任务来计算,为此挖矿的竞争十分激烈。
比特币挖矿开始于CPU 或者GPU 这种低成本的硬件,不过随着比特币的流行,挖矿的过程出现较大变化。如今,挖矿活动转移到现场可编程门阵列上来,通过优化可以实现哈希速度,这种模式的挖矿效率非常高。
❹ 以太坊stratum协议原理
参照比特币的 stratum协议 和 NiceHash的stratum协议规范 编写了一版以太坊版本的stratum协议说明.
stratum协议是目前最常用的矿机和矿池之间的TCP通讯协议。
以太坊是一个去中心化的网络架构,通过安装Mist客户端的节点来转发新交易和新区块。而矿机、矿池也同时形成了另一个网络,我们称之为矿工网络。
矿工网络分成矿机、矿池、钱包等几个主要部分,有时矿池软件与钱包安装在一起,可合称为矿池。
矿机与矿池软件之间的通讯协议是 stratum ,而矿池软件与钱包之间的通讯是 bitcoinrpc 接口。
stratum是 JSON 为数据格式.
矿机启动,首先以 mining.subscribe 方法向矿池连接,用来订阅工作。
矿池以 mining.notify 返回订阅号、ExtraNonce1和ExtraNonce2_size。
Client:
Server:
其中:
是 订阅号 ;
080c是 extranonce ,Extranonce可能最大3字节;
矿机以 mining.authorize 方法,用某个帐号和密码登录到矿池,密码可空,矿池返回 true 登录成功。该方法必须是在初始化连接之后马上进行,否则矿机得不到矿池任务。
Client:
Server:
难度调整由矿池下发给矿机,以 mining.set_difficulty 方法调整难度, params 中是难度值。
Server:
矿机会在下一个任务时采用新难度,矿池有时会马上下发一个新任务并且把清理任务设为true,以便矿机马上以新难度工作。
该命令由矿池定期发给矿机,当矿机以 mining.subscribe 方法登记后,矿池应该马上以 mining.notify 返回该任务。
Server:
任务ID : bf0488aa ;
seedhash : 。每一个任务都发送一个seedhash来支持尽可能多的矿池,这可能会很快地在货币之间交换。
headerhash : 。
boolean cleanjobs : true 。如果设为true,那么矿工需要清理任务队列,并立即开始从事新提供的任务,因为所有旧的任务分享都将导致陈旧的分享错误。如果是 false 则等当前任务结束才开始新任务。
矿工使用seedhash识别DAG,然后带着headerhash,extranonce和自己的minernonce寻找低于目标的share(这是由提供的难度而产生的)。
矿机找到合法share时,就以” mining.submit “方法向矿池提交任务。矿池返回true即提交成功,如果失败则error中有具体原因。
Client:
任务ID : bf0488aa
minernonce : 6a909d9bbc0f 。注意minernonce是6个字节,因为提供的extranonce是2个字节。如果矿池提供3字节的extranonce,那么minernonce必须是5字节
Server:
一般的矿机与矿池通讯过程就如下所示:
❺ 比特币挖矿原理是什么
比特币挖矿就是通过挖矿节点,然后比特币挖矿机(电脑)不断消耗自身的算力,来换取比特币。在比特币系统,通过自身的算法可以动态调整全网节点的挖矿难度,保证每过大约10分钟,就会有一个节点挖矿成功,这时比特币系统就会奖励此人一定数量的比特币。挖比特币是一个比较复杂的过程,不过挖比特币一般会经过这几个步骤,分别是准备工作、找到矿池、注册矿池账号、矿池账号设置、下载比特币挖矿器(软件)、比特币挖矿机配置;经过以上步骤就可以挖矿了。
本条内容来源于:中国法律出版社《中华人民共和国金融法典:应用版》
❻ 全球首次关于FileCoin集群挖矿和矿池技术分享
Filecoin 自问世就备受瞩目,而 Filecoin 挖掘更是一个全新的机会,矿工可以在 Filecoin 网络上存储和检索客户信息直接获利。Filecoin 是如何奖励矿工,底层技术的工作原理是什么?如何成为 Filecoin 矿工获得更多利润?
这篇文章 星链 核心开发工程师币圈外星人杰克从 Filecoin 的背景,原理,底层技术,挖矿逻辑,矿场矿池等方面进行了详细的分享,为你带来全球首套Filecoin矿池解决方案。
01Filecoin背景
时间回溯到2017年,Filecoin在短短一小时内便募集到了1.86亿美元的融资,最终总共募集到了2.57亿美元,是区块链 历史 上最大规模的融资之一。在当年的融资中,Filecoin得到了红杉资本、文科沃莱斯资本等多个知名机构的投资。Filecoin 总数为20亿枚,其具体分配和价格如下:分配 & 价格
总数:20亿
矿工:70%
Protocol Labs:15%
投资者:10%
Filecoin基金会:5%
成本:$0.75
奖励:每个块153个*$3=$459,每天1920个块*$459=$881,280。
02
Filecoin原理
Filecoin工作方式的描述
用户将数据文件的储存委托给Filecoin
网络内的矿工提供储存
矿工凭借储存空间大小获得奖励
需要解决的核心问题
女巫攻击:矿工作弊,多个节点读取同一份存档,或者用一份文件申领多份奖励。解决方法 - 零知识证明在不暴露文件内容的条件下就可以证明存储了一份文件。
解决方案 - PoRep & PoSt算法
这两个算法组合使用有以下特点:
能够证明矿工存储了特定文件
原始文件加入矿工信息后进行编码,证明存储的独特性
编码很慢解码很快,方式矿工作弊
编码后的文件则为用户的“有效存储”
有效存储越多生成区块概率越大,获取奖励的概率越高
- PoRep
不能进行并行计算,多核、多线程技术无法提高速度
正常一份有效存储需要计算8小时,优化后也需要2小时
一份有效存储是32GB
占用内存上百GB
临时存储达到大几百GB,硬件要求高
- PoSt
系统每45秒抽查一次
抽到后要计算出证明并上传,否则就要接受惩罚
对矿工的存储稳定性、随机读速度等都有较高要求
03
Filecoin挖矿
打破了矿工原有的惯性思维
现有的挖矿机制的物理属性中没有“状态”,挖矿 历史 不重要
矿机等硬件插电就开始,停电就结束,转换币种无成本
投资矿业相当于购买相应币种期货期货,相当于“做多”,随时间慢慢收回成本
投资矿机,随时间慢慢收回成本
Filecoin挖矿改变了矿业的金属属性
一层期货变为两层期货
投资算力和存储设备 - 期货1
算力设备挖出有效存储 - 期货2
有效存储随时间推移收回成本
Filecoin挖矿改变了矿业的物理属性
参与Filecoin挖矿需要较高的维护成本
大规模储存的部署在技术上有难度
矿工需要在本地做文件的冗余备份,防止无法提供证明被惩罚
需要保证文件读写速度的保证
需要保证网络稳定性
存储容量扩容
04
Filecoin矿场
集群化部署
存储
存储的可扩容性
存储的稳定性
存储的安全性
存储需要人工维护工作
计算
优化后的计算程序
计算的可扩容性
网络
网络的吞吐性
网络的稳定性
05
星链 提供的解决方案
矿池产品
我们对Filecoin矿池产品的实现方式有三个方向的设想:
云算力 - 全部硬件租赁
用户租赁计算资源,存储资源根据挖到的有效存储自动调整;
按租赁规模和时间收费。
矿场方案 - 全部硬件购买
提供计算型矿机,存储型矿机和网络等硬件方案;
提供挖矿的软件方案;
提供部署和维护服务。
矿机托管 - 买算力,租存储
用户购买计算型矿机,托管在我方矿场;
我方负责网络和存储设备的接入;
按租赁存储的规模和时间收费。
06
星链后续规划
近期,星链矿池,进入Top矿工磅。与此同时,全方位广泛收集用户对于矿池的需求,调整提供服务的方式和计费方法。
星链负责提供Filecoin挖矿相关的硬件和软件。
❼ 知识百科| 矿池的来源及运作原理
由于比特币全网的运算水准在不断的呈指数级别上涨,单个设备或少量的算力都无法在比特币网络上获取到比特币网络提供的区块奖励。所以我们将少量算力合并联合运作的方法,使用这种方式建立的网站便被称作“矿池”。
在此机制中,不论个人矿工所能使用的运算力多寡,只要是透过加入矿池来参与挖矿活动,无论是否有成功挖掘出有效资料块,皆可经由对矿池的贡献来获得少量比特币奖励,亦即多人合作挖矿,获得的比特币奖励也由多人依照贡献度分享。
例如,在四五年前,数字货币产业如比特币还可以使用电脑配置来挖掘。但数字货币在发行总量受限的情况下,大多在设计时加入了区块减半、提高挖矿难度来减慢数字货币的发行速度。
随着矿工越来越多,全网算力也随之增长。奖池还是这么大竞争的人变多了,小矿工再照这种单打独斗的方式几百年才能碰运气挖到币。
因此矿工们通过抱团的形式,将大家的装备技能整合起来变成超级大算力,获得的奖励由这个团队成员根据贡献程度进行瓜分。
矿工们加入矿池对好处也由此可以看出:矿工的日收益得到了一定保障;避免了运行完整节点的麻烦,接入矿池后矿机只要进行运算,其他的运营和收益分配交给矿池来负责就好。
❽ 请问比特币挖矿的原理是什么
比特币挖矿是利用计算机硬件为比特币网络做数学计算进行交易确认和提高安全性的过程。
❾ 比特币的挖矿的原理是什么
比特币挖矿的原理是,执行由人制定的、由计算机自动执行的规则 。
比特币的发明者萨拓喜·那卡摩托(Satoshi Nakamoto,中本聪)在一开始就规定了这一规则,参与比特币区块链的人都必须无条件自动遵守。
规则的内容大致是,
将比特币的流通数据进行打包,整理成固定大小,然后上传到区块链上进行比特币全网同步广播的人,就可以得到由系统奖励的50个比特币。
在特定条件下,这些奖励会减半,时间大约是4年减半一次。
那么怎么完成这个数据的打包整理呢?
要完成这个动作的人必选先拥有必要的工具,即执行比特币区块链的软件,还有运行该软件的机器(一开始是电脑);然后下载保存有所有已获得全网承认的的比特币交易数据,这个时候你就成为了“节点”,成为了保护区块链数据的一份子。
节点运行特定的数学公式,得出正确答案后才能获取打包数据的优先权。获得优先权的节点,谁先完成打包然后上传到区块链上,并得到其他节点的接收和认可,那系统将自动把奖励发放到他手中。
如果打包的交易中有用户塞给打包节点的比特币手续费,手续费归该节点所有。
人们觉得计算数学公式然后完成打包获得奖励的过程,就和在大河里捞金沙一样,要摒弃掉许多错误的答案才能找到正确的钥匙获取黄金,所以人们把这个过程比喻为挖矿。
所以比特币挖矿不是真的去挖什么玩意儿,就是用计算机不停的碰撞不停的猜,谁先猜到谁就抢得奖励,仅此而已。
❿ 比特币矿池的协议stratum
转自: https://zhuanlan.hu.com/p/23558268
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协议的配合下,矿池终于可以大声的对矿工说,让算力来的更猛烈些吧。