首页 > 解决方案 > 检索参数传递给构造函数

问题描述

我在坚固性方面是全新的。我已经用松露部署了我的第一个小合约 ERC20。使用 python 上的 web3 包,我探索了这个创建的事务,我正在寻找我传递给构造函数的参数(名称,initialsupply ...),但我找不到它们。有没有办法在区块链中找到这个论点?它们是否隐藏在输入的哈希中?

谢谢你的帮助。

标签: blockchainethereumsolidity

解决方案


构造函数参数在已部署字节码的末尾进行编码。


例子:

pragma solidity ^0.8;

contract MyContract {
    constructor(uint256 _foo) {
    }
}

编译后的字节码:

0x6080604052348015600f57600080fd5b5060405160dc38038060dc8339818101604052810190
602d91906045565b506090565b600081519050603f81607c565b92915050565b60006020828403
121560585760576077565b5b60006064848285016032565b91505092915050565b600081905091
9050565b600080fd5b608381606d565b8114608d57600080fd5b50565b603f80609d6000396000
f3fe6080604052600080fdfea264697066735822122003a184614c306711c11c8169439e473b01
fb186c8094644efc80975e3fe2660964736f6c63430008060033

部署的字节码:

0x6080604052348015600f57600080fd5b5060405160dc38038060dc8339818101604052810190
602d91906045565b506090565b600081519050603f81607c565b92915050565b60006020828403
121560585760576077565b5b60006064848285016032565b91505092915050565b600081905091
9050565b600080fd5b608381606d565b8114608d57600080fd5b50565b603f80609d6000396000
f3fe6080604052600080fdfea264697066735822122003a184614c306711c11c8169439e473b01
fb186c8094644efc80975e3fe2660964736f6c63430008060033
000000000000000000000000000000000000000000000000000000000001e240

其中1e240是 decimal 的十六进制值123456。64 个十六进制字符(包括前导零)的长度是因为 256 位(64 个十六进制字符)uint数据类型的长度。


推荐阅读