比特币矿池挖矿是如何保证无法作弊的?

2017-02-26 19:19:28 +08:00
 pungis

比特币的挖矿原理我知道,穷举打包账本计算前 n 个 0 的 SHA 这也就是说最终只能有一个人算出来

我想知道在矿池挖矿的 n 多人中如何保证下面两点:

  1. 当我撞彩算出来的时候不把结果提交给矿池,而是自己广播出去独吞收入(挖矿软件开源的,改改应该可以做到)

上面还不算严重,下面这点更是重要:

2.最终不是把成功打包的收益平分吗?分成的原则是计算贡献,也就是你的计算速度。但是如何保证我计算的正确性?我不算而是直接提交错误的结果上去增加计算贡献行不行。矿场是如何知道我确实计算过了而不是提交了个随机数?毕竟大家会一直算出不正确的结果直到有一个人算出正确的为止,如何确定我真实的计算贡献?

16727 次点击
所在节点    问与答
49 条回复
Aliencn
2017-02-26 19:55:42 +08:00
拥有超过 50%的计算能力就可以作弊了
murmur
2017-02-26 19:58:18 +08:00
没法保证无法作弊,当世人知道比特币的时候,大量的原始数据已经被别人垄断了
货币无法作弊是国家用信用背书,比特币背书的是什么玩意呢?所以从这个观点来看,国家变相封杀比特币是明智的选择
murmur
2017-02-26 20:10:15 +08:00
顺便说一下,比特币绝对是个阴谋,很庆幸的是 zf 采取了有效的手段来抵御这个阴谋
你说是两地三机房+上等硬件+银监局监管安全,还是你去中心化的算法安全
人民币之所以是人民币,一是采用了方法(水印、特殊印刷、纸张)保证无法作弊,二是有刑法,而且最高死刑告诉你作弊的结果是怎么样
比特币在后者还是个 0 ,
gam2046
2017-02-26 20:11:26 +08:00
@murmur 不知道对不对。我觉得现在的货币是以政府的信用背书,并不是以国家信用(甚至我觉得并不存在所谓的国家信用);至于比特币则是以他的数学公式作为信用背书。两者并没有很显著的区别。政府信用是因为大家都信任你,而数学公式是大家都认可这个公式的有效性。所以只要是“大多数人”认可,那么就可以通行。现在回到金本位、银本位是不太可能的了,那么数字货币的那一串数字与纸币的那一张纸又有多大区别呢。理论上存在 51%攻击,实际操作起来,也许并不需要 51%的计算力就可以发动攻击。
murmur
2017-02-26 20:14:41 +08:00
@gam2046 我国是国=党=zf 么,至于别的国家不在乎,中国反正没人直接收比特币
所以呢,谁都发货币, zf 会允许么
murmur
2017-02-26 20:18:21 +08:00
顺便说一句,在古代私造货币跟谋反差不多,查出来按律当斩的,现在也有死刑,你说国家怎么会允许个人发行货币
何况你没有创造价值,你在浪费电力啊
pungis
2017-02-26 20:23:31 +08:00
这里在讨论严肃的技术问题
不懂的请不要在这里发垃圾言论
50%攻击跟此问题没有半点关系,不要百度个概念就来胡说八道

@murmur
就你的认识之弱智真真是令人恶心
所谓道不同不相为谋,你的一切观点我都不同意
请圆润的离开,不要脏了我的帖子!
t6attack
2017-02-26 20:48:08 +08:00
51%攻击 和 私吞矿池成就 ,是两个问题。楼已经被人推歪了。没法讨论了
lqs
2017-02-26 21:04:38 +08:00
来回答一下 lz 的技术问题

矿池分配任务会采用降低难度的方式,例如,比特币网络要求有前 16 个 0 得 25 个 BTC ,矿池分配任务时只要求矿工算出前 8 个 0 就上报,每上报一个可得 25/(16**(16-8))=0.00000000582 个 BTC 。那么:

1. 矿池分配的任务里已经包含 [要把这 25 个 BTC 给矿池自己的地址] 这条信息了,如果矿工私自广播,相当于放弃了本属于自己的 0.00000000582 个 BTC 。

2. 要算出前 8 个 0 也是需要一些计算量的,提交随机数没法做到前 8 个 0
murmur
2017-02-26 21:08:29 +08:00
哎,水这么多就为了告诉你一点,安全和作弊相关的东西是法律问题,不是技术问题,就算中国有电子货币,他一定叫 rmc 不是 btc
51%攻击?太简单了,国家先做一点微小的贡献把国外交易平台加到列表里,然后稍微开一下挂屏蔽 btc 的协议(有传言我国已经可以监控暗网,不知真假),最后搞个小新闻,国内的 btc 交易平台都会因为“经营问题”纷纷关闭转行

所以 51%很难做到么?

另外,私吞 btc 可不一定是在协议上做手脚,国外那个交易平台跑路,私吞那么多 btc 都被你无视了,真是悲哀
v9ox
2017-02-26 21:10:57 +08:00
Withholding attack

楼主感兴趣可以看看相关论文 可以作弊
stabc
2017-02-26 21:19:36 +08:00
@murmur 我觉得你是那种啥都懂点的人。(说白了就是啥都不懂)
kulove
2017-02-26 21:25:43 +08:00
@murmur #10 建议你先看下 btc 的原理,看看 51%是不是很难做到。
roist
2017-02-26 21:31:36 +08:00
@murmur 你不仅不懂比特币的基本原理,还高谈阔论半吊子经济学,你知道纸币的英文名叫 bank note 吗,照你的理论纸币也仅仅是在浪费特种纸张和和它的制造流通成本而已,没什么区别

“国家先做一点微小的贡献把国外交易平台加到列表里,然后稍微开一下挂屏蔽 btc 的协议” 笑尿了,你是中学生?

“最后搞个小新闻” 莫非又是“震惊世界 日本吓尿 美国颤抖” 开头的新闻?
fangxing204
2017-02-26 21:35:34 +08:00
刚好最近看到一个,解释的不错 https://anders.com/blockchain/
xgdyhaiyang
2017-02-26 21:53:29 +08:00
作为 viabtc 比特币矿池 (www.viabtc.com) 的开发者,我可以回来这个问题。

第一个问题:这叫做扣块攻击,矿工挖到合法区块不提交结果,确仍然可以照常拿到挖矿收益,矿池运营者会因此受到损失。这个问题是确实存在的,并且我们可以证实遭受过此类攻击。这个问题目前是无解的,修复此问题需要比特币修改工作量证明算法才行。这个攻击可以通过多种手段防御, 1 、通过运营的手段,攻击者为了隐蔽自己,通常通过层层代理,这是可以自动发现出来的; 2 、对于陌生的大算力矿工,要特殊注意; 3 、矿工长时间不出块,可以通过泊松分布计算其为诚实矿工的概率,如果太小则可以认为是攻击者,但这种情况下即使识别出来了矿工也损失很大。

第二个问题:比特币网络有一个挖矿难度,假设为 D, 目前该数值大约为 440G, 而矿池会给每个矿机分配一个非常小的难度 d, 通常为 10K 左右。矿机只要计算出来的结果满足 d 的要求即可提交给矿池,矿池则为该矿机累计 d 的工作量作为分配收益的依据。由于 d 是足够小的,可以保证矿机平均每隔几秒就提交一个结果,最终结果和矿机实际计算量相差佷小。

viabtc 目前在招聘工程师,欢迎关注: https://www.v2ex.com/t/337918#reply20
pungis
2017-02-26 22:10:57 +08:00
@lqs 感谢回答
第 1 点确实是这样。地址是人家的私自广播没有意义,改成自己的又不被矿池承认了,相当于自己独立挖矿了。
第 2 点有些不理解, 8 个 0 就提交并计分,那是指 16 个 0 是某次算 8 个 0 时碰巧算出来的吗?毕竟最终要有 16 个 0 出来才有收益呀。
这个的收益分配算法好像不太对的样子
25/(16**(16-8))=0.00000000582
如果运气好到极致第一次就算出来 16 个 0 了岂不是矿池得 24.999...的币,算出者得上面那一点点,其他人一点没有?
再进一步,大家算了 10 分钟一个 8 个 0 都没有,直到刚刚才出来一个并且直接 16 个 0 的
那所有其他人的这 10 分钟的计算都没有任何收益会不会显得很不公平?
毕竟大矿池可是几十万的矿工
我怎么记得应该每次都是所有人都有收益的只要你真的参与计算过?


@v9ox
谢谢,看了相关文章。这个攻击应该与双花有关不是矿池挖矿专有的。
而且必须有 0 确认交易才能行,实践中可能性很低。
pungis
2017-02-26 22:27:06 +08:00
@xgdyhaiyang
第一个问题如 5 楼回答,只要把收益地址定死就破解了
kiro
2017-02-26 22:28:44 +08:00
比特币的初衷就是用数学的方法,来避免政治来作弊,因为数学是不受任何政治、法律、国家来操控的。虽然比特币的技术并不能说很完善。

说实话,要我在数学和政治、法律、国家中来选,我选择信任数学。
lqs
2017-02-26 22:32:38 +08:00
@pungis
在一个长期运行并且参与人数足够多的矿池上不会发生这种极端的小概率情况。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/343314

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX