blockchain - 检索参数传递给构造函数
问题描述
我在坚固性方面是全新的。我已经用松露部署了我的第一个小合约 ERC20。使用 python 上的 web3 包,我探索了这个创建的事务,我正在寻找我传递给构造函数的参数(名称,initialsupply ...),但我找不到它们。有没有办法在区块链中找到这个论点?它们是否隐藏在输入的哈希中?
谢谢你的帮助。
解决方案
构造函数参数在已部署字节码的末尾进行编码。
例子:
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
数据类型的长度。
推荐阅读
- vue.js - 重置路线,而不是向当前路线添加新路线
- python - 无法在 redhawk 的 fcalc 组件中设置方程式
- docker - 如何从 docker 容器中刷新 pixhawk?
- c# - 作为参数传递的对象不会在 c# 中初始化并失败
- ios - 在 Swift Project 中将 MPMoviePlayerController 全屏按钮图标更改为 iOS 中的标题图标
- c++ - 仅使用递归函数来计算给定数字的最终总和
- html - 如何在 Angular App 中运行 Web 服务器
- javascript - HTTP POST -> 400:错误请求
- mongodb - MongoDB 聚合 - 过滤子数组并投影其部分数据
- python - 使用 Python 和 Mutagen 为 MP4 文件设置封面时遇到问题