Author [EN] [ZH] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] [EN] [ZH] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] [EN] [ZH] [ES] [PT] [IT] [DE] [FR] [NL] [TR] [SR] [AR] [RU] Topic: DPOS潜在风险分析及改进方案(更多的候选代表+准备金+更严厉的惩罚机制+守夜人制度)  (Read 1740 times)

0 Members and 1 Guest are viewing this topic.

Offline SuanBing

  • Full Member
  • ***
  • Posts: 92
    • View Profile
    • Bitshares News


昨晚与熊熊、引長弓、Jerry、试手补天、log(排名不分先后)等同学讨论了DPOS机制的风险问题。之后一直在思考这个问题,也时不时地反复看下白皮书。

现在参考昨天的讨论内容和根据自己的思考所得,整理下思路,对DPOS潜在的漏洞、风险进行分析并提改进方案。当然,由于我本人知识的不足,可能这些风险并不算是风险或者有比较好的防范机制,我的所谓改进方案可能也显得幼稚可笑。但无论如何,希望本文能起到抛砖引玉之作用,请大家就此展开讨论,对潜在的风险进行更深入的缝隙、提出更靠谱的改进方案。

“权力导致腐败、绝对的权力导致绝对的腐败。”DPOS的机制赋予了代表生成某个区块的权力。代表在生成区块时,可以根据自己的需求通过自己的特定算法来拒绝、添加某些交易,或者自行调整交易的顺序来牟利。以Bitshares X来举例,一个代表获得了生成某个区块的机会时,他可以分析收集到的临时交易账本中的交易记录,如果发现他的挂单卖价过低或者买价过高,他可以取消或者不在这个区块收录这个交易;如果他也可以往临时帐本里添加新交易,通过调整交易挂单的顺利,让自己能先以最高价格卖出、再以最低价格买入,从中赚取差价,如果他更贪一点,还可以利用杠杠来达到火币3.21的“连环爆仓 ”效果。

在获准生成某个区块的时候,代表节点对这段时间收集到的交易记录的顺序控制,具有了中心化交易系统一样上帝角色般的权力。传统中心化交易所能玩得把戏,中心节点也可以玩。系统的防范机制规则或许可以起到一定的防范作用,但防范规则在明处,攻击在暗处,攻击者可以随时调整攻击策略,但防范策略的更改要意味着客户端版本的升级,永远滞后,频繁的升级客户端不但让开发者疲于应对,也让用户不胜其烦。从而有可能降低用户对这个DAC的信任,甚至会被用户抛弃。

POS机制的一个支撑理论是将用户手上的“币”视为股份,拥有更多股份的人更有动力来维护网络安全,保持系统的稳定,让系统的价值不断提升,从而能获得更大的利益。但这个理论不不是没有漏洞。人是有贪欲的,有了较多股份的人或许还想获得更多股份。或者,如果毁灭这个系统能让他在别的地方获得更丰厚的回报,那他也有动力去利用手上的权力来对系统进行攻击。甚至,如果政府或者其他在现实世界中有较大能量的势力,出于对系统的敌视,会直接抓住代表节点背后的控制者,以生命财产为威胁,配合他们进行攻击。


从白皮书的设想看来,系统对攻击者的反击相对比较无力。一方面是不能抓出全部的攻击者;另外对于抓到的攻击者,也只是取消他们的代表资格。这样攻击者在被踢出代表团之后,还可以换一个地址,再次竞选代表,从而能持续低成本对系统发生攻击。而这些攻击,每一次奏效,都会打击到用户对系统的信心。


不过,攻击者对DPOS机制系统的主要攻击点在于调整交易的顺序。如果在某个DAC里面,延迟收录交易记录,或者调整区块内交易记录的顺序,并不影响用户的体验和伤害到用户的利益,那这种攻击毫无意义。比如,keyhotee,我个人觉得就DPOS机制就很适合。某个区块里的邮件记录,在区块里生成的顺序如何对用户来说都无所谓。即使某个节点拒绝收录某些地址的邮件记录,这些邮件记录也会被别的节点收录并生成到区块里面,因此造成的延迟最多也就是30分钟,用户完全可以接受。

但对于Bitshars X这种有智能合约、撮合交易功能的系统,账本中交易记录的生成顺序起着很重要的作用。而从现有的白皮书看来,节点代表可以比较隐蔽、低成本地就此进行攻击。因此,我个人认为,现有的DPOS机制或许并不适合Bitshares X,必须进行改进。


我想到的一个方案是:更多的候选代表+准备金+更严厉的惩罚机制+守夜人制度。

当前白皮书里提到有100名代表。个人建议应加入替补代表。如果前100名代表有人被开除,后面的马上补上。

参选者(包括候选代表)的全部股份作为准备金,并且要占到有效投票股份的10%。比如,某个人有1000股,那他能得到最多有效机票为10000股。即使他收到的投票数超过9000股,但他的有效票数仍然是10000股。如果A本身有1000股,并且获到10万股甚至百万股的投票,B有10001 股作为准备金来参选,即使没有人给他投票,他的有效票数(10001)仍然高于获得了10万股但只有1000股准备金的B。

准备金必须冻结。冻结的准备金不能用于交易和作为抵押发布比特资产。
如果代表节点被系统发现为作恶节点,那么马上被开除代表资格,但准备金并不会马上解冻,而是持续冻结两个月。这样,作恶者不能马上通过换个地址就重新竞选上岗。

而且,在这两个月里, 整个网络的用户都可以收集作恶节点的作恶证据,提出诉讼,如果罪名成立,那部分保证金将被销毁。


但如何判断罪名成立?谁有最终裁定权呢?
我想,或许可以考虑加入守夜人制度。
一般来说,DAC的创始人、开发者和长期参与系统的测试、分析、宣传、推广,对社区建设有较大贡献的人,都对这个自己看着长大的DAC有较深的感情,DAC的长远价值也跟他们的利益一致,他们是这个DAC最后的守夜人,我想这部分人可以作为守夜人的永久守夜人,永远守护这个DAC。
另外,守夜人有可能会在所在国政府胁迫下做出有违他们内心意愿的决定。为了让这种情况对系统地伤害尽可能地小,在授予守夜人身份时,要考虑到守夜人的居住国家,应尽可能地让守夜人散步在更多的国家,这样就不太可能发生大部分守夜人被某一政府关押控制从而威胁到DAC的生存地情况。
另外,社区应该准备资金和律师团对,在守夜人遭到迫害时,尽全力营救。


当然,对于上守夜人的权利也要进行限制。实际上,他们唯一能直接使用的权力,就是对作恶节点罪行的最终裁决。

我设想中的审判机制是这样:
某个节点被开除之后,在之后准备金被冻结后的两个月追诉期内,客户端会看到被开除的节点,并可以点一个按钮对该节点进行“起诉”。第一轮计票在第40天。如果有效投票股份中的80%股份投票支持“起诉”,嫌疑作恶节点会被直接裁决为“有罪”,没收全部保证金并且销毁。如果高于50%小于80%,由守夜人裁决,2/3人数通过判为有罪。如果低于50%,判为“不构成犯罪”,在保证金冻结满2个月后解冻。

补充:建议代表节点(包括候选节点)的准备金不能参与投票。



罗罗嗦嗦说了一大堆。
是否可行,请大家积极参与讨论。

小声问下:有哪位同学能帮忙翻译了发到英文版?



« Last Edit: April 06, 2014, 12:36:23 PM by SuanBing »
BitsharesNews.com
我的微博
pts: PkyZq51PFLHonjzKdUDunzA52TDMR2tRrn

Offline SuanBing

  • Full Member
  • ***
  • Posts: 92
    • View Profile
    • Bitshares News
为了避免不必要的联想,也许将"上议院"该为"守夜人团体",议员改为"守夜人"?
BitsharesNews.com
我的微博
pts: PkyZq51PFLHonjzKdUDunzA52TDMR2tRrn

Offline ebit

  • Hero Member
  • *****
  • Posts: 1670
    • View Profile
    • 推荐链接
  • BTS: ebit
很好的改进,降低了拜金主义的危害。

Offline coolspeed

  • Hero Member
  • *****
  • Posts: 536
    • View Profile
    • My Blog
代表是有权力,但这是个没任何用处的权力——你每个细小动作都在N个聚光灯实时审查之下,一旦发现,分分钟踢掉。
DPOS 还没 Low 到把真正的权力集中起来。
反观 POW,谁有算力,谁有记账权。他围规了,全网“所有”节点最多否决掉这个块,但不能踢出有作恶前科的记账者,因为他有算力。这才是问题。
« Last Edit: April 06, 2014, 01:48:56 PM by coolspeed »
Please vote for  delegate.coolspeed    dac.coolspeed
BTS account: coolspeed
Sina Weibo:@coolspeed

Online zhangweis

  • Sr. Member
  • ****
  • Posts: 283
    • View Profile
我看英文贴里bm解释了,大概是因为它采用的不是最优价,而是你要价多少如果成交就一定给你这个价格。比如现在最高买价是5,但是你给出卖价3,那你就会以3卖出,而买家就以5买入,中间的差额算作手续费。总之大概是说希望大部分人不会做超短线(一两个块)。你说的在同一个块同时以最高价卖出,最低价买入,在这个机制下,貌似不太可能,这个跟撮合逻辑有关,而这个逻辑是协议的一部分,如果代表不按这样做,所有客户端会立刻自动识别并开除。另外不包含某些交易其实也是可以被自动发现并警告用户建议更换投票的,因为交易是广播的,如果你老是不包含某些交易,是可以被自动识别的。因为每笔交易都包含上个块的hash,系统是可以自动计算出代表的平均延迟时间的,就是每笔交易被延迟了多少块。我觉得这个可以作为该代表某项指标(甚至可能是主要指标)供投票者参考。
例:
当前块有最高买价5(1BTS),最低卖价3(1BTS),代表自动加入3买入1BTS,5卖出1BTS,
5 Sell 1
3 Sell 1

5 Buy 1
3 Buy 1

撮合逻辑应该是3 Sell match 5 Buy,5 Buy的会出5 bitUSD得到1BTS,3 Sell的会失去1BTS,得到3bitUSD,中间的2bitUSD会作为手续费。然后你的交易都不会成功。
假如你为了插队,用6买入,2卖出,那你就会获得6买入,2卖出的结果,我想你应该不会做这种事。或者你也可以不包含5买入的交易而你自己做个3买入,这个可能是存在的,但是这个其实伤害不太大,主要还只是对那个5买入的人的伤害,而且你不可能一直不包含这个交易,因为延迟交易太久会被人发现,所以那个5买入的有很大可能还是会在后几个块成功买入,只要块生成的速度够快(DPOS的目的,比如几秒一个块),延迟一两个块不会对交易产生太大影响。
这里的重点是撮合逻辑是协议的一部分,你不能随意更改。同一价格多个交易之间的排序逻辑我没有看到,但是我觉得可能会以交易的等待时间(块数)为准。就算两个顺序部分先后,我觉得对代表也没有太大作弊的意义。

当然这也只是我的理解,供探讨。
« Last Edit: April 06, 2014, 01:25:04 PM by zhangweis »
BTC:15hCQrFMpSxcTSDVYgchajEqGF15XqW1M9
Weibo:http://weibo.com/zhangweis

Online zhangweis

  • Sr. Member
  • ****
  • Posts: 283
    • View Profile
你的方案引入太多政治,我觉得可能带来的更多是问题。
BTC:15hCQrFMpSxcTSDVYgchajEqGF15XqW1M9
Weibo:http://weibo.com/zhangweis

Offline codinat

  • Full Member
  • ***
  • Posts: 175
    • View Profile
过于复杂,技术上可行性多大??小白担心这个

Offline kimpeady

  • Full Member
  • ***
  • Posts: 60
    • View Profile
我认为代表应该数量可变(不一定100个),有隐蔽性(无法将代表们一起攻击掉),可快速轮换(即使很多代表突然出问题也可立即不上)
BTS真好玩

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2850
  • 丑,实在是太丑了 !
    • View Profile
存在的问题和担心已经叙述的很清楚了
我补充一点,就是作恶人的获利并不一定单纯是通过更改区块生成时间或者交易顺序实现
这一步他可以不需要获得利益,只需要进行一定的阻击就行了
然后在行动之前先在市场上卖空自己的大批XTS(竞选代表的时候只冻结了他一少部分,然后利用贿选得到支持后上台),阻击行动之后,发布利空言论或者公布作恶细节,导致市场震惊并暴跌(因为市场这时候已经不相信BTS X是一个完美的系统了)
当产生暴跌之后,做恶人就可以大量买进XTS,然后等3I进行澄清和修改BUG,然后价格回升之后就获利了(手上XTS筹码增加)



对你想到的那个要求代表必须达到10%份额我觉得很赞,这个至少可以把门槛抬高一点,避免有人把自己的XTS拆的很散去专业当代表。我觉得甚至于可以进一步提高到要求至少达到20%~30%,想作恶的人拆分的难度会更大
但是后面提到的上议院制度,我感觉不大现实,如何选举终生的议员?公平性如何保证?对BTS的热爱也可能过期的,所以这一条我觉得不够现实,主要也是更复杂了 :P



« Last Edit: April 06, 2014, 01:47:12 PM by BTS熊 »
MUSE witness:mygoodfriend     vote for me

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2850
  • 丑,实在是太丑了 !
    • View Profile
代表是有权力,但是这个没任何用处的权力——你每个细小动作都在N个聚光灯实时审查之下,一旦发现,分分钟踢掉。
DPOS 还没 Low 到把真正的权力集中起来。
反观 POW,谁有算力,谁有记账权。他围规了,全网“所有”节点最多否决掉这个块,但不能踢出有作恶前科的记账者,因为他有算力。这才是问题。

cool,你说的分分钟具体是指多少?
是立刻、马上的几秒钟内? 还是几分钟以后?
这个分分钟被踢掉的时候,后果是还没有产生还是说已经产生后果之后?

我希望达到的效果是在他作恶的行为即将产生正式的结果之前,能踢掉吗?
MUSE witness:mygoodfriend     vote for me

Offline coolspeed

  • Hero Member
  • *****
  • Posts: 536
    • View Profile
    • My Blog
Quote
如果你老是不包含某些交易,是可以被自动识别的。

对。尤其你是每一百个块才轮到一次记账权。你不收录,有人收录。
Please vote for  delegate.coolspeed    dac.coolspeed
BTS account: coolspeed
Sina Weibo:@coolspeed

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2850
  • 丑,实在是太丑了 !
    • View Profile
是不是该引入类似银行的大额和小额交易管理制度。

要求快速确认的往往是一些小额支付,如价值100美元以下的,这样可以用较快、较不安全的方式进行确认,而大额的必须用较慢又较安全的方式确认,这样即使大户想作恶,在被人发现前造成的影响也不会太严重。

至于具体金额的确定,可以按系统总价值动态生成,比如系统总价值1万美元,那么快速确认的金额就是1%即100美元以下,如此类推。

我觉得这个可能和金额关系不大,安全不安全不能以金额来考虑,就算是一分钱,也必须得想办法让他完全安全啊

另外,假设按照大小金额之分,真要搞的话他也可以把大笔的金额拆散成数个小额的进行,也管不到他 :P :P :P
MUSE witness:mygoodfriend     vote for me

Offline coolspeed

  • Hero Member
  • *****
  • Posts: 536
    • View Profile
    • My Blog
代表是有权力,但是这个没任何用处的权力——你每个细小动作都在N个聚光灯实时审查之下,一旦发现,分分钟踢掉。
DPOS 还没 Low 到把真正的权力集中起来。
反观 POW,谁有算力,谁有记账权。他围规了,全网“所有”节点最多否决掉这个块,但不能踢出有作恶前科的记账者,因为他有算力。这才是问题。

cool,你说的分分钟具体是指多少?
是立刻、马上的几秒钟内? 还是几分钟以后?
这个分分钟被踢掉的时候,后果是还没有产生还是说已经产生后果之后?

我希望达到的效果是在他作恶的行为即将产生正式的结果之前,能踢掉吗?

这跟比特币一样,你造出一个不老实的块,就被全网否决了,这个块就无效了。
Please vote for  delegate.coolspeed    dac.coolspeed
BTS account: coolspeed
Sina Weibo:@coolspeed

Offline coolspeed

  • Hero Member
  • *****
  • Posts: 536
    • View Profile
    • My Blog
我认为代表应该数量可变(不一定100个),有隐蔽性(无法将代表们一起攻击掉),可快速轮换(即使很多代表突然出问题也可立即不上)

数量可变,是个可被攻击的点。
代表是50个,500个,这都不是大问题。关键是要数量固定。
隐蔽性,已经解决了。
快速轮换,已经解决了。
请参考白皮书。
Please vote for  delegate.coolspeed    dac.coolspeed
BTS account: coolspeed
Sina Weibo:@coolspeed

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2850
  • 丑,实在是太丑了 !
    • View Profile
代表是有权力,但是这个没任何用处的权力——你每个细小动作都在N个聚光灯实时审查之下,一旦发现,分分钟踢掉。
DPOS 还没 Low 到把真正的权力集中起来。
反观 POW,谁有算力,谁有记账权。他围规了,全网“所有”节点最多否决掉这个块,但不能踢出有作恶前科的记账者,因为他有算力。这才是问题。

cool,你说的分分钟具体是指多少?
是立刻、马上的几秒钟内? 还是几分钟以后?
这个分分钟被踢掉的时候,后果是还没有产生还是说已经产生后果之后?

我希望达到的效果是在他作恶的行为即将产生正式的结果之前,能踢掉吗?

这跟比特币一样,你造出一个不老实的块,就被全网否决了,这个块就无效了。

这样啊
那就放心了 :'( :'( :'(
我还以为造了块马上就生效了无法被推翻
MUSE witness:mygoodfriend     vote for me

 

Google+