首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tx.origin的合法用途是什么?

tx.origin的合法用途是什么?
EN

Ethereum用户
提问于 2017-09-29 11:10:33
回答 5查看 2.1K关注 0票数 11

众所周知,必须使用msg.sender进行身份验证,而不是使用tx.origin (差异解释了这里)。一些静态分析工具(例如,在混炼中)将tx.origin的所有用法检测为潜在的漏洞,并建议使用msg.sender

tx.origin合法的用例是什么?如果没有,tx.origin会被废弃吗?

EN

回答 5

Ethereum用户

回答已采纳

发布于 2017-09-29 14:48:56

我只能想到两个半合法的用例:

  • 如果您出于某种原因想阻止某个地址与您的合同交互,tx.origin将更合适,因为该地址的所有者不能使用合同作为中间人来绕过您的块。请注意,这个块当然只会阻塞一个地址,而不是一个人。任何人都可以创建一个新地址并使用这个地址。还可以使用外部oracle、计时器或其他类型的服务来规避这个块,这些服务可以提供回调。
  • 您可能需要记录哪些人使用您的合同最多,并在您的合同中添加一些计数器来跟踪它。如果您只想计算最初开始使用契约的“人工地址”,则应该使用tx.origin而不是msg.sender

我个人认为反对和删除tx.origin不会有什么问题。契约功能应该理想化地不知道是人类还是另一个契约在呼唤它。

我不知道目前有什么计划要删除它。

票数 1
EN

Ethereum用户

发布于 2017-09-29 21:46:06

只有当您对用户感兴趣时才可以使用tx.origin,但是安全性不是问题。我很开放,但我还没有看到一个同时满足这两个需求的令人信服的案例。这在原则上是一个很棒的想法,但由于它在实践中存在弱点,在我看来,这是一个“不使用”。

票数 4
EN

Ethereum用户

发布于 2018-09-04 16:55:57

如果一个聪明的合同,而不是某个EOA,会给你打电话:

tx.origin != msg.sender

如果您有兴趣知道这一点,这可以允许您管理。

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

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

复制
相关文章

相似问题

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