我对官方文档中的以太坊图书馆有疑问:
图书馆与合同类似,但它们的目的是它们 仅在特定地址部署一次,并重用其代码 使用EVM的DELEGATECALL(CALLCODE直到Homestead)功能。 这意味着如果调用库函数,则其代码为 在调用合同的上下文中执行,即这指向 呼叫合同,尤其是呼叫存储 合同可以访问。由于图书馆是一个孤立的来源 代码,它只能访问调用契约的状态变量 它们是明确提供的(它们没有办法命名它们, 除此以外)。库函数只能直接调用(即 如果他们不修改状态(即不使用DELEGATECALL) 如果它们是视图或纯函数),因为假定库 无国籍。特别是,不可能销毁库 除非Solidity的类型系统被规避。
我注意到,通过部署只具有内部视图功能或纯粹的库,从一定数量的函数开始,我总是得到与在混音上部署ganache相同的成本,即74.748气体。 我也试过其他包含不同功能的库,成本总是74.748。
如果我还定义了一个包含相同功能而不调用库的标准合同和一个使用该库的标准合同,我理解不使用该库的合同的部署成本较低,而我预期与不使用它的成本相比,成本要低得多。
从上一次测试来看,代码与代码库一起部署似乎并不是因为部署库本身的固定成本以及使用它的合同的成本。
有人可以向我解释我在推理中的错误吗?