ethereum - 减少合同规模的最简单方法
问题描述
我的合同几乎完成了,但我已经(几乎)做了一切来减少合同的字节大小,但我仍然缺少两个功能。这就是为什么我需要拆分合同以进一步缩小规模。我已经将我的部分代码提取到另外两个合同中。Bar
是抽象的,将由我的主合约扩展,Baz
并将被初始化并从主合约调用。例子:
contract Foo extends Bar {
Baz baz;
constructor() {
baz = new Baz();
}
}
那成功了,但我的合同规模并没有真正减少。我应该注入Baz
而不是在主合约上初始化它吗?既然这样,我该怎么做
contract Foo extends Bar {
Baz baz;
constructor(address barAdress) {
baz = address;
}
}
Type address is not implicitly convertible to expected type contract Baz.
显然会抛出。
扩展的抽象合约是否会减少字节码,还是会在编译中组合并产生相同的大小?
解决方案
扩展的抽象合约是否会减少字节码,还是会在编译中合并并产生相同的大小?
编译器仍然需要包含抽象合约,因此它不会减少最终字节码的大小。
减少字节码大小的一种有效方法是使用编译器优化选项。该值指定了它应该优化的合约运行次数(而不是优化迭代的次数)。因此,每次执行函数时,较低的值将导致更小的字节码,但也会导致更高的 gas 费用。
推荐阅读
- php - imagettftext():在 PHP 7.3.18 中出现文本布局错误的问题
- mongodb - Ansible playbook 中的 MongoDB CRUD 操作
- excel - 获取已登录的 Office 365 用户 ID
- asp.net-core - 除非有路由参数,否则不会提交脚手架身份 Razor 页面表单
- firebase - 如何使用 gcloud cli 为云函数设置配置变量
- pandas - 根据列的组合添加两个表的值
- azure-resource-manager - 如何反序列化 JSON 数组?
- php - 使用 DomPDF 将 HTML 转换为 PDF 的问题
- java - 从命令获取非覆盖火花配置的任何方式
- python - Python字符串序列,如excel