首页 > 解决方案 > 将solidity代码上传到EVM时,是否也会上传支持的openzepplin合约?如果是这样,为什么要上传“库”类型的文件?

问题描述

通过 Truffle(或其他任何方式)将 Solidity 代码上传到 EVM 时,它是否也会上传支持的 openzepplin 合约?如果是这样,为什么要上传“库”类型的文件?我以为“图书馆”文件只需要上传一次,每个人都可以使用吗?谢谢!

标签: ethereumsoliditytruffle

解决方案


我假设通过“上传”你的意思是在区块链上部署你的合约的编译字节码。

当你编译你的合约时,你会得到一组包含字节码的文件,每个合约/库一个。如果您通过从 OpenZeppelin 继承的合约来使用它们,则它们的字节码不必单独部署,因为它已编译到您自己的合约中。OZ 合约大多是abstract,这使得编译器无论如何都不会为它们生成单独的字节码文件。

使用库时,只有调用它们的公共或外部函数时才需要部署它们。内部函数被编译到你自己的合约中,就像对继承合约的内部调用一样。如果 Truffle 正在部署您的库,您可能会执行一些外部库调用。


推荐阅读