我最近一直在玩ethernaut web3/solidity 游戏,在第 4 级上,我浪费了几分钟来了解 tx.origin 和 msg.sender 之间的区别,它们在solidity 中构建全局变量。

根据solidity文档,tx.origin 保存交易发送者的地址,msg.sender 保存消息发送者的地址。那么这到底是什么意思呢?

msg.sender:指直接调用智能合约函数的账户地址或智能合约地址。

tx.origin:指调用智能合约函数的账户地址,只有账户地址可以是tx.origin。

一张图片胜过千言万语

您可能会注意到,账户地址和智能合约地址都可以是 msg.sender 但 tx.origin 将始终是账户/钱包地址。

强烈建议始终使用 msg.sender 进行授权或检查调用智能合约的地址。并且永远不要使用 tx.origin 进行授权,因为这可能会使合约容易受到网络钓鱼攻击。

THORChain最近损失了 800 万美元,是的,由于tx.origin 的滥用,在一次攻击中损失了 800 万美元,请务必仔细检查 tx.origin 是如何在智能合约中使用的,再见

tx.origin 与 msg.sender相关推荐

  1. 区块链 以太坊 多层调用,获取调用者 msg.sender

    msg.sender:合约的直接调用者. 由于是直接调用者,所以当处于 用户A->合约1->合约2 调用链下, 若在合约2内使用msg.sender,得到的会是合约1的地址. 如果想获取用 ...

  2. solidity智能合约中tx.origin的正确使用场景

    简介 tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址.在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击. 但针对tx. ...

  3. solidity msg.sender.transfer发送给谁

    发送给调用者自己,表示将该合约中的自己应有的以太坊退款到发送者自己的账户 address.transfer(amount) 转账一定数量(以wei为单位)的以太币到指定的地址,遇到任何错误都将抛出异常 ...

  4. 区块链知识系列 - 系统学习EVM(二)-存储与安全

    区块链知识系列 - 系统学习EVM(一) 特点 EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数. 不支持浮点数 缺乏标准库支持,例如字符串拼接.切割.查找等等都需要开发者自己实现 ...

  5. [区块链安全-Ethernaut]区块链智能合约安全实战-已完结

    [区块链安全-Ethernaut]区块链智能合约安全实战-已完结 准备 0. Hello Ethernaut 准备工作 创建实例并分析 合约交互 总结 1. Fallback 创建实例并分析 合约交互 ...

  6. 区块链安全—简单函数的危险漏洞(二)

    一.前言 上回文章中我们提到了简单函数的漏洞利用情况.我们对Fallback()这个回调函数进行了安全漏洞的分析,也针对竞赛题目复现了一些漏洞利用过程. 在本篇文章中,我们继续对简单函数进行安全机制分 ...

  7. 类Fomo3D游戏漏洞与修复机制全解析

    摘要: 无论是 Fomo3D 山寨版还是正宗原版都摆脱不了"一轮就凉凉"的宿命,这与其智能合约的设计漏洞不无关系.本文从合约安全开发的角度出发,详细分析了类 Fomo3D 游戏的两 ...

  8. 以太坊教程:入门学习开发以太坊dapp

    一.区块链 1. 分布式去中心化 比特币设计的初衷就是要避免依赖中心化的机构,没有发行机构,也不可能操纵发行数量.既然没有中心化的信用机构,在电子货币运行的过程中,也势必需要一种机制来认可运行在区块链 ...

  9. solidity-msg.sender到底是什么?

    msg.sender到底是什么? msg.sender: 当前钱包的发起方. msg是全局的,msg.sender是全局变量. from就是account,发起消息的钱包地址,永远等于msg.send ...

最新文章

  1. zabbix3.0禁用guest用户
  2. 自动化网络拓扑 包容多设备类型——湖南省高速公路邵怀高速公路建设开发有限公司...
  3. 中职计算机应用基础每章知识点,[定稿]中职计算机应用基础教案_1-5章V3.1
  4. android转IOS开发学习计划
  5. GPU:nvidia-smi的简介、安装、使用方法之详细攻略
  6. Fiddler的常用功能(Web断点调试)
  7. ACL2020 | 基于Knowledge Embedding的多跳知识图谱问答
  8. 关于预编译和Stdafx.h的若干问题
  9. asp.net中DataList和Repeater的使用
  10. 手机木马以及移动安全
  11. Ubuntu20.04更换阿里源教程
  12. 嫁给年薪百万的程序员,结婚 6 年后的我竟然还是处女
  13. Excel时间做差,统计加班时长
  14. python能开发安卓app吗_如何Python写一个安卓APP
  15. 玩PyTorch?你不得不看的PyTorch资源大列表
  16. 计算机字符格式化集体备课教案,有序备课:集体备课中不要忘记个性化备课
  17. linux下无线网卡安装debian,Debian下安装无线网卡的驱动
  18. SAP LDQ本地数据队列
  19. rv1126_rv1109移植opencv with ffmpeg for rtsp
  20. 全国十大期货app排行榜

热门文章

  1. 网站被CC攻击,如何防御网站被CC?
  2. 关于大数据技术的演讲_好程序员大数据培训分享大数据的两大核心技术
  3. allure下载及使用
  4. c winform mysql_c#winform开发仓库管理系统,vs2010,mysql数据库
  5. 浅谈人工智能学习入门
  6. 【转载】那些极度自卑的人,后来都怎么样了?
  7. 每天学命令get_propertyPin Properties
  8. 怎么把jpg转换成docx格式
  9. 魅族手机可安装鸿蒙操作系统吗,魅族:你好,鸿蒙!
  10. tp6 小程序获取手机号