Open rocqina opened 5 years ago
潘这个方法需要对bitcoin进行硬分叉,等于说是需要btc协议进行升级。如果btc能够实现这个升级,矿池就能利用这个方法免受藏块攻击的袭扰。
对,我还看到别的讨论比如加seed的方式,也是需要硬分叉。是不是如果不对btc升级,现在对于这个行为是无解的?
目前为止,我还没看到过彻底解决这个问题的好方法。
也许这不是一个bug,是一个feature,专门用来让中心化的pool整日惶惶不安!
有没有不升级btc全节点的方法,只是矿池层面实现的?如果能部分解决也行啊
在不修改区块链共识规则的情况下,没有办法阻止不可信矿工进行藏块攻击,因为:
所以,藏块攻击基本上只能进行事后检测。根据一段时间用户提交的share的实际难度分布来观察他是否有藏块攻击的倾向(比如,高难度share的数量明显小于正常水平),或者观察到用户使用了不常见的代理程序(通常用户不会直接修改矿机固件,都是用代理做的藏块操作)。目前sserver已经开始在share中记录bits_reached
,这是share实际hash达到的难度目标(不是任务难度),所以可以用来观测矿机的提交难度分布。
用这个工具程序 https://github.com/btccom/btcpool/tree/master/tools/sharelog_to_parquet 可以把sharelog转换为可供大数据分析程序(比如Apache Spark)使用的parquet格式,这样就可以用数据分析工具绘制难度分布图表了。这个程序会把bits(hash target的压缩)转换为浮点型的difficulty(难度数值),方便直接进行比较运算。bits具有内部结构,无法直接进行大小比较。
这个是highdiff的功能详细版吗?通过highdiff能观察到用户高区间难度的分布,这个工具能看到所有区间的分布
你好,我想请教一下difficult 1 是怎么获取的,我一直以为powLimit可以推导出,但是ltc的我推倒不出来,请问是怎么确定一个币种的diff1
我看bitcoind RPC getblockchaininfo
会返回difficulty
,所以你应该可以据此找出它是如何计算的。
我之前想的根据公式1,diff1_target/cur_target=cur_diff 推导出公式2 diff1_nbits/cur_nbits=cur_diff 公式3 diff1_nbits=cur_nbits*cur_diff 因为区块浏览器或者api只能拿到某个高度的nbits和diff,所以我没法用公式1。 我用公式3以ltc为对象验证了不对,看起来不能这么推,是吧
-- 发自我的网易邮箱手机智能版
在 2019-12-19 14:43:21,YihaoPeng notifications@github.com 写道:
我看bitcoind RPC getblockchaininfo会返回difficulty,所以你应该可以据此找出它是如何计算的。
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
fire节点btc.com提供的docker镜像已经几年没更新了,还能用吗
btcpool代码里面没有处理藏块攻击的逻辑 看到网上有一个解决藏块攻击的方法,好像还是btcpool的早期开发人员提出的: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-October/015163.html 这个方法是有什么问题吗? 或者有什么好的思路去解决吗,因为我们没有把握判断有的用户是不是对我们发动攻击,而这种用户常常算力很大但是幸运值非常低