Web3.js: 使用 `call(..)` 是否执行网络 activity?
Web3.js: Does using `call(..)` perform network activity?
当使用 web3 的 [contract].[method].call(..)
时,web3 是否执行网络 activity 来获取合约的最新状态?或者它是否始终与新块保持同步,因此不需要获取?
这取决于供应商吗?如果是这样,MetaMask 的政策是什么?
该代码在您用作提供者的节点上调用 eth_call
JSON-RPC 方法。如果节点位于同一台计算机上,则没有 外部 网络 activity。 (调用可能是通过 websocket 或 HTTP 进行的,因此它是一种网络调用,但没有任何内容离开计算机。)
如果您使用的是外部节点,例如Infura(默认提供者 MetaMask 连接到),然后有外部网络 activity 将请求发送到该节点并接收响应。
当使用 web3 的 [contract].[method].call(..)
时,web3 是否执行网络 activity 来获取合约的最新状态?或者它是否始终与新块保持同步,因此不需要获取?
这取决于供应商吗?如果是这样,MetaMask 的政策是什么?
该代码在您用作提供者的节点上调用 eth_call
JSON-RPC 方法。如果节点位于同一台计算机上,则没有 外部 网络 activity。 (调用可能是通过 websocket 或 HTTP 进行的,因此它是一种网络调用,但没有任何内容离开计算机。)
如果您使用的是外部节点,例如Infura(默认提供者 MetaMask 连接到),然后有外部网络 activity 将请求发送到该节点并接收响应。