单开一贴讨论下水龙头和超高压测试的问题

最近大家对于水龙头和超高压测试的规则做了很多讨论,作为这些规则的制定者之一,我想在此跟大家交流一下我们初衷和困惑。更多地,是想听听大家的意见。

超高压测试的目的

首先,超高压测试的目的是让社区尽量多地发各种类型的交易,对PlatON测试网进行充分测试。

所以,在此阶段,不得不依赖于一些脚本和工具等”非真实用户“手段来达到目的。对于普通用户来说,现阶段无法做到绝对公平。

不过,我们每周也在做一些针对普通用户的活动,希望能让每个人都参与拉力赛。比如用户可以在论坛发帖、提bug、参与AMA活动或快闪活动,都有机会获得奖励。这些活动都是机器人很难参与的,是根据用户对社区的贡献来进行奖励的。

目前的一些争议和建议

对于超高压测试,主要的争议点在于,有些用户通过提高手续费的方式使得自己发的交易排名靠前,是否有失公平。

我汇总了一下大家在各个帖子中的讨论(主要参考了这几个帖子:https://forum.latticex.foundation/t/topic/1428/27,https://forum.latticex.foundation/t/topic/1654/8,https://forum.latticex.foundation/t/topic/1659/3)

主要的建议的如下:

  1. 提高”攻击“成本

    扩大中奖范围,不再只选择某固定区块中奖,中奖区块增多,如果攻击者想”占据“所有区块会使得手续费消耗巨大,”攻击“成本提高。让普通用户的交易有机会被打包。有两种建议:

    • 把一个中奖区块改为一个区块区间。每次取整5000高度的前后10个区块,总共20个区块,取这些区块中的交易作为奖励。

    • 把开奖周期拉长为一天。每天指定固定的区块,按某个账户中的区块数或者连续中的区块数给奖励。

    出于峰值测试的考虑,不可能无限扩大中奖区块的区间,所以仍存在大户把所有区块占满的情况。

  2. 改变奖励方式

    • 取最后的几个交易

    • 平分奖励。所有的交易平分一个总奖金。

    • 随机选取。随机选取(而不是按打包顺序)抽取中奖交易。同时,可以公布随机选取的规则。比如,取当前区块的hash值最后几位数字,作为区块内中奖交易的序号。大家觉得这种选取方式是否合理?是否仍会被攻击?

    • 从规则上限制手续费。如只选取手续费在10LAT以下的交易中奖。不过这个规则是否过于”中心化“?是否过于干预网络的正常交易行为?

      以上方式都可以在一定程度上增加攻击成本,让普通用户有参与的机会。但大户的中奖概率仍远远高于普通用户。

  3. 限制水龙头

    • 关闭水龙头。关闭水龙头意味着阻拦了新用户的参与,也让目前手里测试LAT较少的用户没机会参与后续的活动。
    • 水龙头上更严格的机器人验证方式。这是我们团队最近在积极研究的方向,目前已经在开发。也请大家多推荐一些好的验证方式。
    • 水龙头做KYC。我们一直对于用手机验证等方式比较谨慎,除了合规性要求的必要的KYC之外,不想在论坛或测试网上进行”实名化认证“,担心会引起社区的对于身份匿名性的质疑。

    水龙头要限制到什么程度其实是个很tricky的问题。如果过于复杂,会增加普通用户参与的门槛,导致活动效果不好,如果限制不严格,又会使得大量被刷。

以上每种方案都各有利弊,欢迎大家来拍砖,或提出更好的建议。希望我们能一起讨论出一个改进的方案来。

PS

对于目前面临的种种问题,其实都可以归咎于一开始水龙头限制不够,以及保留了大量旧贝莱世界测试网的数据,导致了用户”不在同一起跑线“。我们也在考虑在第二期拉力赛中进行改进,比如可以

  • 重置链,清除旧数据;
  • 重新梳理比赛规则,兼顾各方的公平性,让每个用户都有参与感。

具体方案还没定,也想听取大家的意见,怎样才能吸引更多的用户参与进来,并且每个人都能玩得开心。

3 个赞

个人提出建议:
每次取整5000高度的前后50个区块,总共100个区块,取这些区块中的最后若干个交易作为奖励。
不限制手续费。

1 个赞

能不能问题一个一个的来,上面这么长,手机屏幕有点儿小。。。买手机去

2 个赞

同意啊,我也觉得有点长。。。一次看不完。。。

1 个赞

”这些区块中的最后若干个交易“不就等于第100个区块中最后若干个交易吗?那么如果在交易量不大的情况下,可能就会出现只有第100个区块中有交易的情况。
只有交易量非常大(有大量待确认交易),大家不确定自己的交易会在哪个区块打包的情况下,才有意义。不知这个场景是不是会很快达到。

to @sunlilin @jamesqu
最近针对超高压测试的问题和建议比较多,就汇总在一起说了:joy: 以后尽量把每个问题分开在不同帖子讨论哈

我的意思是这100个区块里每个区块最后的若干个交易,(随机)选择一些作为奖励

哦哦~刚才理解错了,都随机选择了,还要从最后若干个交易中选,真是跟高手续费对抗到底啊 :joy:

当然啦,增加攻击代价,这大概是目前的最优解吧

5000整数区块频次太低了,能不能设置成1000或者500整数?这样更加刺激一些。如果弄成刮刮乐即时开奖就更欢乐了 :smirk:

所有交易平分一个总奖励与随机选取几个,哪种方式比较好

如果中奖区块数量*10的话,大家可以接受每次中奖的金额/10吗? :stuck_out_tongue_winking_eye:

我可以接受,这样也能提高攻击难度

哈哈 参与的人都在争夺那个100LAT的奖励,如果金额太少的话我估计效果不好

要不这次来个500LAT的大奖吧,剩下的都是10LAT的

综合了大家的意见,如果超高压测试要升级的话,主要会改以下两点:

  1. 调整中奖区块

中奖区块由5000的整数倍的一个区块改为每5000-5010共10个区块。

  1. 奖励升级!每期总奖励增加到600LAT!

(1)取10个区块中的所有交易按交易类型随机抽取,每种类型抽取5个,每个奖励10LAT。共51010=500LAT。

(2)从所有交易中随机选取一个,奖励100LAT。

如何随机选取呢?

感觉少了点趣味性,谁小号多谁赢呗 :joy:

想要散户都一起来参与其实很难,既要控制手续费问题,又要控制大量小号问题,不如想想如何提高难度。。。

趣味性怎么实现比较好呢?
这个测试活动确实对散户不太友好,我们还是希望散户多去参与社区的活动,其实奖励也很多的。 :laughing:
在一个活动里兼顾所有人的利益,做到绝对公平,真的好难……

首先,我想说的是,超高压的活动目的是什么?是让用户发送大量交易,相当于模拟ddos攻击,来测试系统的稳定性。那么,就一定是会用到脚本而不是人工一个个的交易去发。所以,这活动 就不是为普通用户准备的,而是为开发者(至少是会使用工具模拟发送交易)! 如果普通用户想参与,可以参加后续其他的活动,这个活动真的不适合。

好了,既然都是调用脚本,现在的不公平性就集中在手中有大量代币的人(以下简称大户)。具体的原因这几天大家都讨论过了,不再重复。 我想说的是,由于大户的存在,普通想参加活动的开发者看不到获得奖励的任何可能,没有欲望参加,导致参加人数少,结果就是:起到的压测效果很有限!因为没多少脚本发送交易嘛。大户知道自己获取奖励的确定性,他也不会发送太多交易,提高手续费能几乎精准命中就行了。

所以,这个活动,目前除了被大户撸羊毛,没起到啥效果。我个人建议,为了不浪费代币、人力等资源,暂时关闭。 等到讨论出好的方式来之后,再新开一个压测的活动。 现在这状态,每天都在被撸羊毛,而你们的系统稳定性因为测试数据太少,起不到压测目的。

下面,针对前两点,其实总结下来,主要就是要修改奖励方式,以防止大户独占造成我说的上面的几个危害:1是撸羊毛,2是无人参与,3是压缩效果不好。

奖励方式方面,我建议用区块区间的方式,代替具体区块的方式。 这样能对系统产生持续的压力,起到更好的压测效果。

随机根据hash值选取奖励交易,是可以做到随机的,你不可能提前预估一个区块的hash值的,这块大可放心不会有问题。

还有第三点“限制水龙头”, 其实,如果奖励方式做的比较完善,能做到不是比谁币多,那它申请一堆也没啥用啊。当然,该限制还是要限制的吧,这个可能在其他活动中有作用。

2 个赞

感动!您说的也正是我想说的。不同的活动面向不同的用户,希望都能得到大家的理解和支持。
对于大家普通提的高手续费的问题,改成区块区间+随机选取的方式需要一定的开发量,我们在加紧讨论,争取尽快做个规则升级。
感谢!

1 个赞