我有一些信托和坚实生产的ABI文件,我正在捆绑与一个JavaScript NPM软件包。
221.7kB esm5/lib/abi/IERC777.json 目前,ABI文件包括完整的细节,如字节码,因为这些文件被用来进行单元测试、部署等等。但是基于JavaScript的用户界面包只需要abi函数定义本身,不需要其他任何东西。
如何从不必要的数据中删除ABI文件并减少下载大小?
发布于 2020-05-11 17:37:05
选项1-使用solc可执行文件直接编译代码,例如:
solc --bin --abi --optimize --optimize-runs=200 --output-dir=artifacts MyContract.sol选项2-从松露或solc.js的输出中提取工件:
const fs = require("fs");
const INPUT_DIR = "YourJsonFilesDirectory";
const OUTPUT_DIR = "YourArtifactsDirectory";
for (const fileName of fs.readdirSync(INPUT_DIR)) {
const data = JSON.parse(fs.readFileSync(INPUT_DIR + fileName, {encoding: "utf8"}));
fs.writeFileSync(OUTPUT_DIR + fileName.replace(".json", ".abi"), JSON.stringify(data.abi) , {encoding: "utf8"});
fs.writeFileSync(OUTPUT_DIR + fileName.replace(".json", ".bin"), data.bytecode.substring(2), {encoding: "utf8"});
}https://ethereum.stackexchange.com/questions/83299
复制相似问题