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

从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上玩...

原文发布于微信公众号 - Python爬虫分享(python_crawler)

原文发表时间:2018-11-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能计算时代

区块链101:以太智能合同如何运作?

和区块链行业的许多想法一样,普遍的困惑也被称为“智能合同”。 一项由公共区块链所制造的新技术,智能合同难以理解,因为这一术语在一定程度上混淆了所描述的核心交互。...

4448

溢出效应

比特币和其他数字货币构成了非常基本的安全假设。在一个分散网络中,我们需要加强自我保护意识,免受sybil的攻击(有些人接管大部分网络)。为了拥有适当的用户自主权...

3073
来自专栏腾讯社交用户体验设计

用定格诠释新鲜-QQ空间品牌LOGO演绎视频

1364
来自专栏腾讯技术工程官方号的专栏

为数据赋能:腾讯TDSQL分布式金融级数据库前沿技术

本次分享,基于数据库事务处理的核心技术并发访问控制技术,TDSQL原创性提出了全态数据的概念和基于历史态数据的可见性判断算法,并基于此实现了全时态数据库。

8.8K12
来自专栏数据和云

数据库流行度8月排行榜:Oracle 飙升 和 PostgreSQL 绝尘领跑第二梯队

转眼又是一个 8 月,新的数据库排行榜已经出炉。上月榜单参考:2018年7月排名。

1112
来自专栏区块链大本营

巨杉数据库王涛:区块链观点两极分化,程序员应关注其技术本质

3025
来自专栏程序人生 阅读快乐

CentOS 7系统管理与运维实战

《CentOS 7系统管理与运维实战》共13章,分为3个知识区块。涵盖的主要内容有:以CentOS 7特性和安装、运维基础、网络配置与结构为第壹个知识区块的基础...

1402
来自专栏小白课代表

通知:PanDownload软件关停公告。

1724
来自专栏区块链大本营

BTA | 王涛:传统IT人如何用数据库思维来理解区块链?去中心化数据库也许是答案

28910
来自专栏FreeBuf

小白女友遭遇网购诈骗,我感到很惭愧

前段时间,我正在外地出差,晚上跟朋友一起吃饭的时候,突然微信消息弹窗,女朋友微信刚发来了视频通话,不过显示已结束。

803

扫码关注云+社区