首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tx.origin阻止合同呼叫我的游戏

tx.origin阻止合同呼叫我的游戏
EN

Ethereum用户
提问于 2018-06-02 10:27:17
回答 2查看 818关注 0票数 2

是否可以使用tx.origin而不是msg.sender来阻止合同播放和恢复调用?

EN

回答 2

Ethereum用户

发布于 2018-06-02 13:59:59

是。将require(tx.origin == msg.sender);添加到您不希望从契约中调用的任何方法中(这也会阻止使用multisig钱包的用户)。

不过,请记住,虽然这项工作目前正在进行,但仍有计划消除合同和定期账户之间的区别,虽然目前仍有关于如何运作的争论,但如果工作顺利,就不再有办法区分两者之间的区别。

票数 6
EN

Ethereum用户

发布于 2018-06-02 14:09:53

虽然您当然可以这样做,但是您应该考虑到@james_pic说了什么。

另一种了解调用方是合同还是EOA的方法是使用此方法:

function isContract(address addr) returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; }

编辑:请记住,正如@james_pic所指出的,按照上面的方法,如果恶意契约在其构造函数中调用您的契约,那么extcodesize将为零,但它仍然能够恢复事务。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/50238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档