以太坊智能合约的编译器使用

本文介绍了以太坊智能合约的编译器使用,强调了在编译时启用优化器的重要性。编译器支持多种输出格式,包括二进制文件、AST和汇编。通过命令行参数可以设置优化运行次数、导入文件路径重定向、EVM版本等。此外,编译器处理库的占位符并提供了链接器功能。推荐使用JSON输入输出接口进行自动化编译。编译错误和警告类型也被详细说明。
摘要由CSDN通过智能技术生成

注意

本节不适用于solcjs,即使在命令行模式下使用也不适用。

Solidity存储库的构建目标之一是solidity solc命令行编译器。使用为您提供所有选项的说明。编译器可以生成各种输出,范围从简单的二进制文件和抽象语法树(解析树)上的汇编到气体使用的估计。如果您只想编译单个文件,则将其运行为打印二进制文件。如果你想获得一些更高级的输出变体,最好告诉它使用输出所有内容来分离文件。solc --helpsolc --bin sourceFile.solsolcsolc -o outputDirectory --bin --ast --asm sourceFile.sol

在部署合约之前,请在编译时激活优化程序。默认情况下,优化器将优化合约,假设在其生命周期内调用了200次。如果您希望初始合约部署更便宜并且后期功能执行更昂贵,请将其设置为。如果您期望许多事务并且不关心更高的部署成本和输出大小,请设置为较大的数字。solc --optimize --bin sourceFile.sol–runs=1–runs

命令行编译器将自动从文件系统读取导入的文件,但也可以通过prefix=path以下方式提供路径重定向:

solc github.com/ethereum/dapp-bin/=/usr/local/lib/dapp-bin/ file.sol
这实质上指示编译器搜索以github.com/ethereum/dapp-bin/under 开头的任何内容/usr/local/lib/dapp-bin。 solc不会读取位于重映射目标之外的文件系统中以及显式指定的源文件所在目录之外的文件,因此只有在添加为重新映射时才会起作用。import “/etc/passwd”;/=/

不允许使用空重映射前缀。

如果由于重映射而存在多个匹配,则选择具有最长公共前缀的匹配。

出于安全原因,编译器限制了它可以访问的目录。在命令行上指定的源文件的路径(及其子目录)和由重映射定义的路径允许用于导入语句,但其他所有内容都被拒绝。可以通过交换机允许其他路径(及其子目录)。–allow-paths /sample/path,/another/sample/path

如果您的合约使用库,您会注意到字节码包含表单的子字符串__ 53 a e a 86 b 7 d 70 b 31448 b 230 b 20 a e 141 a 537 53aea86b7d70b31448b230b20ae141a537 53aea86b7d70b31448b230b2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值