ethereum - 将solidity代码上传到EVM时,是否也会上传支持的openzepplin合约?如果是这样,为什么要上传“库”类型的文件?
问题描述
通过 Truffle(或其他任何方式)将 Solidity 代码上传到 EVM 时,它是否也会上传支持的 openzepplin 合约?如果是这样,为什么要上传“库”类型的文件?我以为“图书馆”文件只需要上传一次,每个人都可以使用吗?谢谢!
解决方案
我假设通过“上传”你的意思是在区块链上部署你的合约的编译字节码。
当你编译你的合约时,你会得到一组包含字节码的文件,每个合约/库一个。如果您通过从 OpenZeppelin 继承的合约来使用它们,则它们的字节码不必单独部署,因为它已编译到您自己的合约中。OZ 合约大多是abstract
,这使得编译器无论如何都不会为它们生成单独的字节码文件。
使用库时,只有调用它们的公共或外部函数时才需要部署它们。内部函数被编译到你自己的合约中,就像对继承合约的内部调用一样。如果 Truffle 正在部署您的库,您可能会执行一些外部库调用。
推荐阅读
- flutter - 如何将 material.io Color Tool Palette 生成的方案导入 Flutter/Android Studio?
- jenkins - Jenkins 实例在 Centos 上出现离线
- python-3.x - Python正则表达式在日志文件中查找异常
- laravel - Laravel 5.5 - MethodNotAllowedHttpException
- javascript - axios调用的无限循环,React
- java - 通过 https 给定 IP 地址的 Spring Boot 白名单
- gmail - GMAIL RESTful API 是否支持发送非 ASCII 电子邮件地址?
- c++ - CJson - 在字符串周围插入缺少的引号
- snakemake - snakemake 输出中的 lambda 函数
- javascript - 在严格模式的打字稿项目中使用 jsbi