我正在核实我在以太扫描的合同。Etherscan在验证过程中要求ABI编码的构造函数参数,尽管我有点傻,不太知道它们是什么。
这就是为什么:deployer.deploy(Contract, Date.now()/1000|0 + 36000)
的简化原因
我将构造函数参数设置为当前时间的函数,但我不太确定确切时间是秒。目前,我带着松露制作的艺术品。
如何在部署契约时访问构造函数?松露制品文件中有什么可以帮助的吗?因为我知道启动这个程序时的艰难时期,我是否可以用蛮力的契约来找到同样的字节码呢?
任何帮助都将不胜感激。
发布于 2018-02-04 05:52:27
通过简单的检查,松露的工件不包括构造函数参数。但它确实包含了合同的字节码。
如果您检查创建契约的事务,您将看到字节码被合并为事务数据的一部分,在事务数据的末尾有一些额外的字节,这些额外的字节是用extra编码的构造参数。
例如,“合同创建代码”中的AugurToken合同https://etherscan.io/address/0xe94327d07fc17907b4db788e5adf2ed424addff6#code --如果滚动到最后--将看到与“构造器参数”中相同的内容
00000000000000000000000048c80f1f4d53d5951e5d5438b54cba84f29f32a5
0000000000000000000000000000000000000000000000000de0b6b3a7640000
000000000000000000000000e1e212c353f7a682693c198ba5ff85849f8300cc
例如,契约https://etherscan.io/address/0x50ce4b73320ee36e307c1551207fd8008f4f38eb#code
是在https://etherscan.io/tx/0xd7a4f8958704be82903ce9bd44a3770e110776bd20ddea672d43bc92d17b4977
创建的。
如果将代码部分中的字节代码与事务中的数据进行比较,则额外的字节是发送给构造函数的参数。
000000000000000000000000000000000000000000000000000000005a72cfef
000000000000000000000000000000000000000000000000000000005ac09180
0000000000000000000000000000000000000000000000000000000000000258
00000000000000000000000000000000000000000000000d8d726b7177a80000
000000000000000000000000000000000000000000001a784379d99db4200000
00000000000000000000000021c6dadc34965da5fd102f68f3f83aea7f7b249f
https://ethereum.stackexchange.com/questions/38438
复制相似问题