uups 逻辑合约也增加了升级函数,那总体不是也费gas吗?

这是一个很好的问题!虽然 UUPS 逻辑合约确实增加了升级函数,但它仍然比透明代理更省 Gas。以下是详细的原因和解释:


1. UUPS 的升级函数对 Gas 的影响

  • 在 UUPS 模式中,升级逻辑(如 upgradeTo)确实存在于逻辑合约中,但这些函数只在升级时调用,而不是在每次用户交互时调用。
  • 升级操作是一个低频操作,通常只在合约需要升级时才会执行。因此,升级函数的存在对日常操作的 Gas 消耗没有影响。

2. 为什么 UUPS 仍然更省 Gas?

UUPS 的优势主要体现在日常调用的 Gas 消耗上,而不是升级操作本身:

(1) 代理合约更轻量

  • UUPS 的代理合约只负责调用转发(delegatecall),没有额外的逻辑(如管理员权限检查)。
  • 透明代理的代理合约中包含了升级逻辑和管理员权限检查,这些逻辑会在每次调用时增加额外的 Gas 消耗。

(2) 减少存储槽的使用

  • 透明代理需要额外的存储槽来记录管理员地址等信息,而 UUPS 不需要这些额外的存储。
  • 存储操作(SSTORESLOAD)是 EVM 中最昂贵的操作之一,因此减少存储槽的使用可以显著降低 Gas 消耗。

(3) 调用路径更短

  • 在透明代理中,每次调用都需要检查调用者是否是管理员(以避免管理员调用逻辑合约的函数),这会增加额外的 Gas 消耗。
  • UUPS 没有这种检查,调用路径更短,因此更高效。

3. 升级函数的 Gas 消耗是一次性的

  • UUPS 的升级函数(如 upgradeTo)只在合约升级时调用,Gas 消耗是一次性的。
  • 升级操作通常由管理员发起,频率极低,因此对整体 Gas 成本的影响可以忽略不计。

4. 透明代理的日常调用更昂贵

  • 在透明代理中,代理合约需要检查调用者是否是管理员,以决定调用逻辑合约还是代理合约的升级函数。这种检查逻辑会在每次用户调用时执行,增加了日常操作的 Gas 消耗。
  • UUPS 将升级逻辑移到了逻辑合约中,代理合约不需要进行这些检查,因此日常调用的 Gas 消耗更低。

5. 总结

虽然 UUPS 的逻辑合约增加了升级函数,但这些函数只在升级时调用,对日常操作的 Gas 消耗没有影响。相比之下,透明代理的代理合约由于包含升级逻辑和权限检查,会在每次调用时增加额外的 Gas 消耗。因此,UUPS 在日常调用中更省 Gas,而升级操作的成本是一次性的,可以忽略不计。

选择 UUPS 或透明代理需要根据具体需求权衡:

  • 如果关注日常操作的 Gas 成本,UUPS 是更好的选择。
  • 如果需要更清晰的升级逻辑分离,透明代理可能更适合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【URP】Unity[纹理压缩]算法多平台对比

纹理压缩技术发展节点 ‌早期阶段 2000年代初‌ DXT/S3TC成为PC和主机平台主流,采用44像素块压缩,但移动端支持有限。 PVRTC(2008年)专为PowerVR GPU设计,要求纹理尺【从UnityURP开始探索游戏渲染】专栏-直达纹理…

AI元人文构想:三值纠缠模型

AI元人文构想:三值纠缠模型 作者:岐金兰 日期:2025年10月29日 引言: 观照个体欲望,尊重个体自感,于白箱化的价值博弈舞台,共同涌现集体客观——此三值纠缠模型,正是AI元人文构想跳动的心脏。 这精准道破,并庄…

EDK2环境搭建以及HelloWorld编译实现

本文简单介绍了Linux环境下搭建EDK2开发环境的关键步骤和命令。EDK2环境搭建以及HelloWorld编译实现 TianoCore的官方介绍 Welcome to TianoCore, the community supporting an open source implementation of the Uni…

谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑

谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑引用计数与可达性分析:谁死了,谁还活着? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。在Java虚拟机的语境下…

P1561 [USACO12JAN] Mountain Climbing S

Solution 简单看题容易得到一个错误的贪心: \[ans=max\{\Sigma_{k=1}^n + down_{min}, \Sigma_{k=1}^n +up_{min}\} \]然后你将可以把他 hack 掉,因为最初的方法认为第一个牛上山后,所有上下山是一起进行的,其实有…

六、阅读笔记六:保障软件可靠性的防线

《程序员修炼之道:从小工到专家》围绕软件测试与质量保障展开,系统阐述了如何通过科学的测试方法和质量管控策略,构建可靠的软件产品。在软件开发生命周期中,测试与质量保障是不可或缺的环节,它能够及时发现潜在问…

以此贴作别算法

以此贴作别算法def lcs(i, j):if i == m or j == n: return 0if s[i] == t[j]: return 1 + lcs(i+1, j+1)return max(lcs(i, j+1), lcs(i+1, j))def lcs2(i, j):if i >= m or j >= n: returni0 = i; j0 = jwhile…

五、阅读笔记五 应对复杂系统的挑战

《程序员修炼之道:从小工到专家》聚焦于并发编程与系统性能优化,为应对复杂系统的技术挑战提供了全面的解决方案。随着软件系统的规模不断扩大,用户量持续增长,并发处理能力和系统性能成为衡量软件质量的重要指标。…

P3988 [SHOI2013] 发牌

Solution 容易发现,答案就是维护当前序列的第 k 大值,而且只有删除,这个时候就可以使用权值线段树来维护。这颗树的每一个叶子表示一张牌,然后线段树记录改节点为根的子树的节点个数,接着进行查询即可,代码见下…

映射

通过ide伪造数据库 映射 Map 首先我们来了解一下什么是映射 先直到 key,value 它们往往是一对 一个键只能对应一个值,但一个值可以对应多个键 例如 苹果 -> 水果 菠萝 -> 水果 人名 -> 电话号码 学号 ->…

文件夹显示绿色成功图标方法

链接:https://blog.csdn.net/jiminkoo/article/details/131840356本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/19172967

【RabbitMQ】与ASP.NET Core集成

本章目标掌握在ASP.NET Core中配置和依赖注入RabbitMQ服务。学习使用IHostedService/BackgroundService实现常驻消费者服务。实现基于RabbitMQ的请求-响应模式。构建完整的微服务间异步通信解决方案。学习配置管理和健…

IMO2025 Problem 1

考虑 \(n = 3\) 时的下三角,显然有三个容易构造的解,\(k = \{0, \, 1, \, 3\}\),构造如下:那么 \(n > 3\) 呢?由于下三角的点数恰好为 \(1 + 2 + \cdots + n\) 个点,对于第一条直线,有且仅有 \(3\) 中方式覆…

Day6综合案例2-注册信息

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

2014吉林省赛题解 | CCUT应用OJ——Sign in

题目简介题源:1035-Sign in | CCUT OJ,2014 吉林省赛 C 题 题意:给定长为 \(n\) 的序列 \(A\) 与长为 \(n-1\) 的序列 \(B\),其中 \(B\subset A\),求 \(A-B\)。即:\(B\) 中恰好只有一个元素在 \(A\) 中没出现,求…

访答知识库-可以本地使用的知识库

访答知识库-可以本地使用的知识库访答知识库,一键安装,0代码使用。 支持图片、视频、语音搜索与问答 支持多模态问答

代码大全2 第三四章

读《代码大全 2》第三、四章,感觉像听老程序员唠实用嗑,没半点虚头巴脑的理论。第三章讲代码可读性,真是说到心坎里了。以前总觉得代码能跑就行,变量随便叫个 a、b、c,注释能省就省。结果过半个月回头看,自己写的…

https代理服务器(六)再次java动态签发【成功】

https代理服务器(六)再次java动态签发【成功】1X500Name canamem = new X500Name(caCertificate.getSubjectX500Principal().getName());改为X500Name issuerName = new JcaX509CertificateHolder(caCertificate).ge…

[AGC032D] Rotation Sort 题解

QwQ[AGC032D] Rotation Sort 题解 把循环移位看作是将某个数向左或右插入到任意位置,显然一个数最多被移动一次。 那么该序列中一共有三种数:向左移动 向右移动 不动假设已知每个数属于哪一种,考虑如何判定该方案是…