市值: $2.6437T 0.10%
成交额(24h): $40.0551B -59.47%
恐惧与贪婪指数:

66 - 贪婪

  • 市值: $2.6437T 0.10%
  • 成交额(24h): $40.0551B -59.47%
  • 恐惧与贪婪指数:
  • 市值: $2.6437T 0.10%
加密货币
话题
百科
资讯
加密话题
视频
热门加密百科

选择语种

选择语种

选择货币

加密货币
话题
百科
资讯
加密话题
视频

Solidity 中的视图函数和纯函数是什么?它们对 Gas 有何影响?

View and pure functions in Solidity don’t modify state, enabling free, off-chain execution—ideal for reads and calculations without gas costs.

2025/11/12 18:20

了解 Solidity 中的视图函数

1. Solidity 中的视图函数是一种承诺不修改区块链状态的函数。它可以读取合约的存储变量,但不能更改它们、发出事件或调用更改状态的函数。

  1. 由于这些函数不会改变状态,因此它们可以在以太坊节点上本地执行,而无需向网络广播交易。这意味着用户在外部调用时无需支付 Gas 费。
  2. 关键字view必须在函数签名中显式声明。如果省略并且函数尝试修改状态,编译器将抛出错误。
  3. 示例包括检索用户的余额、检查 ERC-20 代币中的限额或读取合约中存储的配置参数。
  4. 尽管对外部调用者免费,视图函数仍然消耗节点上的计算资源。因此,视图函数内部过于复杂的逻辑可能会导致某些提供者超时或拒绝。

探索 Solidity 中的纯函数

1. 纯函数比视图函数更进一步,承诺不读取或写入任何状态变量。它仅对传递给它的输入参数进行操作。

  1. 这些函数通常用于数学计算、编码/解码操作或不依赖于存储数据的逻辑检查。
  2. pure关键字在编译时强制执行此限制。即使尝试访问单个状态变量也会导致编译失败。
  3. 与视图函数一样,纯函数在外部调用时不会产生任何 Gas 成本,因为它们不需要事务。他们使用本地节点资源在链外执行。
  4. 一个示例是基于输入参数计算复利或验证加密签名而不引用合约存储的函数。

非修改函数的气体影响

1. 当智能合约函数被标记为viewpure时,对其的外部调用不会生成交易。因此,不会向调用者收取任何 Gas 费。

  1. 然而,在内部,如果视图或纯函数被事务中的另一个函数调用,其执行仍然会消耗gas。 EVM 必须处理每个操作,无论状态是否发生变化。
  2. 此类函数内部的复杂计算(例如循环大型数组或执行多个算术运算)会增加内部调用时的 Gas 成本。
  3. 开发人员通常通过最小化视图/纯函数中的计算来优化性能,特别是当它们可能在状态更改事务期间被调用时。
  4. 当函数实际修改状态时将其错误标记为视图或纯函数会导致运行时异常或部署失败,可能会浪费开发时间和测试网天然气。

关于视图和纯函数的常见问题

问:视图函数可以调用纯函数吗?答:是的,视图函数可以安全地调用纯函数。由于纯函数不读取或修改状态,因此它们与视图函数的约束完全兼容。

问:如果我尝试修改纯函数内的状态变量会发生什么?答:Solidity 编译器会产生错误。纯函数严格禁止访问任何状态变量,无论是读取还是写入。

问:从 web3.js 或 ethers.js 调用时,视图和纯函数是否使用 Gas?答:不需要,通过 JavaScript 库调用这些函数不需要交易,因此不会产生任何 Gas 成本。执行发生在连接的以太坊节点本地。

问:视图和纯函数之间有性能差异吗? A:从gas成本和执行速度的角度来看,外部调用并没有本质上的区别。两者都在本地执行,无需更改状态。在内部,性能取决于计算复杂性而不是所使用的修饰符。

免责声明:info@kdj.com

所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!

如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。

相关百科

如何查看SOL期货成交量和持仓量?

如何查看SOL期货成交量和持仓量?

2026-09-14 00:40:03

访问 SOL 期货市场数据1. 前往SOL永续合约或季度合约上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期货交易对页面,切换到“合约概览”或“市场数据”选项卡。 3. 识别标记为“交易量(24 小时)”和“未平仓合约”的实时字段,这两个字段通...

如何查看DOGE期货成交量及持仓量?

如何查看DOGE期货成交量及持仓量?

2026-09-12 08:39:38

了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...

如何查看BTC期货交易量和持仓量?

如何查看BTC期货交易量和持仓量?

2026-09-12 15:19:55

BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...

如何看懂DOGEUSDT永续合约图表?

如何看懂DOGEUSDT永续合约图表?

2026-09-11 19:19:48

了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...

如何阅读币安上的ETHUSDT期货图表?

如何阅读币安上的ETHUSDT期货图表?

2026-09-13 05:20:26

Bitcoin 减半机制1. 每产生 210,000 个区块,Bitcoin 个矿工的区块奖励减半。 2. 此事件大约每四年发生一次,并被硬编码到 Bitcoin 的协议中。 3. 最近一次减半将每个区块的奖励从 6.25 BTC 减少到 3.125 BTC。 4. 总供应上限仍固定在 2100 万...

如何查询币安Bitcoin合约资金费用?

如何查询币安Bitcoin合约资金费用?

2026-09-13 18:00:17

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

如何查看SOL期货成交量和持仓量?

如何查看SOL期货成交量和持仓量?

2026-09-14 00:40:03

访问 SOL 期货市场数据1. 前往SOL永续合约或季度合约上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期货交易对页面,切换到“合约概览”或“市场数据”选项卡。 3. 识别标记为“交易量(24 小时)”和“未平仓合约”的实时字段,这两个字段通...

如何查看DOGE期货成交量及持仓量?

如何查看DOGE期货成交量及持仓量?

2026-09-12 08:39:38

了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...

如何查看BTC期货交易量和持仓量?

如何查看BTC期货交易量和持仓量?

2026-09-12 15:19:55

BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...

如何看懂DOGEUSDT永续合约图表?

如何看懂DOGEUSDT永续合约图表?

2026-09-11 19:19:48

了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...

如何阅读币安上的ETHUSDT期货图表?

如何阅读币安上的ETHUSDT期货图表?

2026-09-13 05:20:26

Bitcoin 减半机制1. 每产生 210,000 个区块,Bitcoin 个矿工的区块奖励减半。 2. 此事件大约每四年发生一次,并被硬编码到 Bitcoin 的协议中。 3. 最近一次减半将每个区块的奖励从 6.25 BTC 减少到 3.125 BTC。 4. 总供应上限仍固定在 2100 万...

如何查询币安Bitcoin合约资金费用?

如何查询币安Bitcoin合约资金费用?

2026-09-13 18:00:17

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

查看所有文章

User not found or password invalid

Your input is correct