市值: $2.2032T 1.06%
成交额(24h): $37.9282B -32.34%
恐惧与贪婪指数:

36 - 恐惧

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

选择语种

选择语种

选择货币

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

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),我们将及时删除。

相关百科

AVAX 期货保证金要求是如何计算的?

AVAX 期货保证金要求是如何计算的?

2026-07-23 15:40:03

AVAX 期货保证金结构1. AVAX期货保证金由两个不同的部分组成:初始保证金和维持保证金。这些是根据当前市场价格、波动性、未平仓合约和合约规模实时计算的。 2. 初始保证金作为履约保证金,以弥补短期(通常是一个交易时段)内潜在的不利价格变动。它以头寸名义价值的百分比表示。 3. 维持保证金设置为...

ADA合约保证金率为何会触发警告?

ADA合约保证金率为何会触发警告?

2026-07-22 09:00:26

ADA 合约保证金比率机制1. 各大交易所的ADA永续合约采用根据持仓规模、杠杆水平和当前标记价格实时计算的动态保证金比例。 2. 保证金比率等于(钱包余额+未实现盈亏)除以维持保证金要求,以百分比表示。 3. 当该比率低于交易所定义的维持阈值(通常为 5% 至 10%,具体取决于杠杆率)时,系统将...

ADAUSDT永续合约资金费率是多少?

ADAUSDT永续合约资金费率是多少?

2026-07-24 20:19:46

ADAUSDT永续合约资金费率定义及目的1. ADAUSDT永续合约资金费率是卡尔达诺(ADA)与主要加密货币交易所Tether(USDT)衍生品头寸之间采用的定期费用兑换机制。 2. 作为价格锚定工具,确保ADAUSDT永续合约价格与基础ADA/USDT现货指数价格保持紧密一致。 3、与传统期货不...

TON 期货强平价格公式是什么?

TON 期货强平价格公式是什么?

2026-07-23 09:19:45

TON 期货强平机制1. 当交易者的保证金余额低于交易所设定的维持保证金要求时,TON 期货就会被清算。 2、保证金比例低于或等于100%时,系统自动触发强制平仓,计算公式为(可用保证金/所需保证金)×100%。 3. 强平价格不是固定的,它会随着市场走势、头寸规模、杠杆水平和资金费率的调整而动态变...

SUI期货杠杆如何影响强平?

SUI期货杠杆如何影响强平?

2026-07-22 09:59:59

SUI 期货保证金机制1、主要衍生品交易所的SUI期货合约根据持仓规模和市场波动情况实行分级初始保证金要求。对于名义价值低于 50,000 美元的头寸,标准初始保证金设置为 8%,而较大头寸则可逐步调整至 15%。 2. 所有合约规模的维持保证金固定为初始保证金水平的 65%,这意味着当净值相对于当...

SUI永续合约的安全保证金比例是多少?

SUI永续合约的安全保证金比例是多少?

2026-07-24 14:00:09

市场波动模式1. 自2023年1月以来,Bitcoin超过68%的交易日在24小时窗口内价格波动超过15%。 2. 当以分钟级回报的标准差来衡量时,以太坊始终表现出比 Solana 或 Cardano 等主要山寨币更高的日内波动性。 3.衍生品市场表现出放大的敏感性——在清算级联期间,币安和Bybi...

AVAX 期货保证金要求是如何计算的?

AVAX 期货保证金要求是如何计算的?

2026-07-23 15:40:03

AVAX 期货保证金结构1. AVAX期货保证金由两个不同的部分组成:初始保证金和维持保证金。这些是根据当前市场价格、波动性、未平仓合约和合约规模实时计算的。 2. 初始保证金作为履约保证金,以弥补短期(通常是一个交易时段)内潜在的不利价格变动。它以头寸名义价值的百分比表示。 3. 维持保证金设置为...

ADA合约保证金率为何会触发警告?

ADA合约保证金率为何会触发警告?

2026-07-22 09:00:26

ADA 合约保证金比率机制1. 各大交易所的ADA永续合约采用根据持仓规模、杠杆水平和当前标记价格实时计算的动态保证金比例。 2. 保证金比率等于(钱包余额+未实现盈亏)除以维持保证金要求,以百分比表示。 3. 当该比率低于交易所定义的维持阈值(通常为 5% 至 10%,具体取决于杠杆率)时,系统将...

ADAUSDT永续合约资金费率是多少?

ADAUSDT永续合约资金费率是多少?

2026-07-24 20:19:46

ADAUSDT永续合约资金费率定义及目的1. ADAUSDT永续合约资金费率是卡尔达诺(ADA)与主要加密货币交易所Tether(USDT)衍生品头寸之间采用的定期费用兑换机制。 2. 作为价格锚定工具,确保ADAUSDT永续合约价格与基础ADA/USDT现货指数价格保持紧密一致。 3、与传统期货不...

TON 期货强平价格公式是什么?

TON 期货强平价格公式是什么?

2026-07-23 09:19:45

TON 期货强平机制1. 当交易者的保证金余额低于交易所设定的维持保证金要求时,TON 期货就会被清算。 2、保证金比例低于或等于100%时,系统自动触发强制平仓,计算公式为(可用保证金/所需保证金)×100%。 3. 强平价格不是固定的,它会随着市场走势、头寸规模、杠杆水平和资金费率的调整而动态变...

SUI期货杠杆如何影响强平?

SUI期货杠杆如何影响强平?

2026-07-22 09:59:59

SUI 期货保证金机制1、主要衍生品交易所的SUI期货合约根据持仓规模和市场波动情况实行分级初始保证金要求。对于名义价值低于 50,000 美元的头寸,标准初始保证金设置为 8%,而较大头寸则可逐步调整至 15%。 2. 所有合约规模的维持保证金固定为初始保证金水平的 65%,这意味着当净值相对于当...

SUI永续合约的安全保证金比例是多少?

SUI永续合约的安全保证金比例是多少?

2026-07-24 14:00:09

市场波动模式1. 自2023年1月以来,Bitcoin超过68%的交易日在24小时窗口内价格波动超过15%。 2. 当以分钟级回报的标准差来衡量时,以太坊始终表现出比 Solana 或 Cardano 等主要山寨币更高的日内波动性。 3.衍生品市场表现出放大的敏感性——在清算级联期间,币安和Bybi...

查看所有文章

User not found or password invalid

Your input is correct