前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EOS智能合约的功与防-拒绝转账

EOS智能合约的功与防-拒绝转账

作者头像
爬虫
发布2018-12-17 15:53:08
8930
发布2018-12-17 15:53:08
举报
文章被收录于专栏:Python与爬虫

从World Conquest 被攻击说起

World Conquest的游戏规则采用了FOMO模式,如果你是最后一位购买者,那么你可以获得奖池里面大部分的钱。

假如你是普通玩家,你肯定是一只盯着网页,到了最后10s左右,如果没有人购买的话,你就只好买入...

然后希望在后续10分钟内,所有的玩家都不要买入,这样你就能获得了大奖...

那如果你是一位技术流玩家的话,你会怎么做呢?

World Conquest 有一个缴税规则,所有购买地图的玩家,都需要向世界领主缴税(也就是每当有人购买某个地图后,合约都会给世界领主 这个玩家打一笔钱。

因为EOS内,所有的账号都可以部署合约,那么假如 我先用我的小号成为最后一位购买者,然后我用世界领主这个账号 部署合约

拒绝合约账号给我打钱,那么我只要默默等待时间结束,我就成为了最后一位玩家。(因为别人购买的时候 会触发给你打钱的动作,但是因为这个动作被拒绝了,所以导致整个交易失败,然后也就购买不成功...

攻击再优化一点

在前面说了,世界账号是部署了合约,拒绝了 World Conquest 这个合约给他打钱.

但是其实这样是有一些问题的,假如说 游戏结束后,系统是自动发奖的...那么因为你拒绝了该合约给你打钱..。

那么你也就拿不到奖...(当然现实是 手动打钱,因为合约时间到了后,只能手动打,你需要在开发者给你打钱之前 把合约重新部署下,就可以了)

当然这个方法不怎么好,如何把细节完善好呢...

一个简单的方法 就是判断打进来的钱的金额(因为缴税的金额肯定是比较低的,而大奖金额是比较多的...

或者通过memo来判断,也是一样的...

快神话被攻击

昨天上线一款新的资金盘类游戏...

游戏有个规则是 最后奖池的20%分给最低价值英雄的玩家...

那么 如何成为拥有最低价值英雄的玩家呢...

  1. 在标语里面写上 买我这个英雄的都是SX 之类的
  2. 技术流当然是使用上面攻击World Conquest相同的方法了...

如何防止这种攻击呢?

World Conquest是怎么做的呢?

World Conquest在新开第二盘的时候,使用了记账的方式 来避免被攻击...

正常来说,有人购买你的地后,你就能拿到赚的钱,这笔钱会直接转到你的账号上(上面说的攻击就是拒绝这笔转账汇入)

World Conquest是在有人购买你的地后,不给你转钱,而是帮你记一笔账...

当然你可以随时来提取你的奖金...

当然这种方式肯定是被玩家喷了...不能立马复投的资金盘还叫资金盘么...

有没有更好的办法

防止这种攻击的方法其实很简单...就是把购买动作和转钱分开...

那么只要在购买成功后,发起一笔延时交易,给用户打钱.这样购买与转钱的动作就分开了...

而且还有个好处是,假如用户恶意拒绝合约给他转钱的话,那么这笔钱会留在你的合约...(算是惩罚了 恶意用户)

当然不是所有的方法都是完美的...

这个方法有一个问题是...因为延时交易是需要 合约出CPU的...

目前我还没有测试 到底是在发出延时的时候 扣CPU,还是延时发生的时候才扣

假如是第一种情况...还好,毕竟用户无法买入了...(可能会去你群里与你沟通

假如是第二种情况...正常用户买入了,而合约却没有把钱给上一个玩家...那么你肯定要被用户喷死...

当然解决方法也不是很难

  1. 你可以提前多去租点CPU,就能避免CPU不足的问题了
  2. 可以参考系统解除质押发出的延时 如果出错怎么处理的...

总结

目前EOS上,各种斗智斗勇的故事在发生...

欢迎来EOS上玩...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从World Conquest 被攻击说起
    • 攻击再优化一点
    • 快神话被攻击
    • 如何防止这种攻击呢?
      • World Conquest是怎么做的呢?
        • 有没有更好的办法
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档