我最近在重新学Huff,巩固一下细节,也写一个“Huff极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
所有代码和教程开源在github: github.com/AmazingAng/WTF-Huff
这一讲,我们介绍Huff中的Constructor
,它可以在部署时用来初始化合约。
Constructor
Huff中的CONSTRUCTOR
宏和Solidity的构造函数类似,它不是必须的,但是可以在部署时用来初始化合约状态变量。如果你不了解以太坊是如何通过交易创建合约的,可以阅读WTF EVM Opcodes第21讲。
在下面的例子中,我们使用CONSTRUCTOR
宏在合约部署时将存储槽VALUE_LOCATION
的值初始化为0x69
。
分析合约字节码
我们可以使用huffc
命令获取上面合约的creation code:
打印出的bytecode为:
将这段字节码复制到evm.codes playground,并点击运行。可以看到存储槽0
被初始化为69
,并且返回了合约的runtime code: 5f3560e01c80632096525514610013575f5ffd5b5f545f5260205ff3
,说明合约初始化成功!

总结
这一讲,我们介绍了如何在Huff中使用Constructor
宏,它与Solidity中的构造函数类似,可以在部署时用来初始化合约。