首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从运行时字节码构造可部署字节码?

如何从运行时字节码构造可部署字节码?
EN

Ethereum用户
提问于 2019-08-13 05:00:30
回答 2查看 1.2K关注 0票数 3

例如,我想将一个契约重新部署/克隆到另一个地址,但是没有原始的源代码,所以我只将运行时字节码存储在块链上。如果我试图直接部署运行时字节码,就会导致失败。那么,是否有任何方法从运行时字节码构造有效的可部署字节码,以便将完全相同的契约代码部署/克隆到另一个地址?

我不打算部署转发器代理,我知道如何在实体程序集和vyper中实现这一点,我需要的是将完全相同的运行时字节码部署到没有原始源代码的新地址。谢谢。

EN

回答 2

Ethereum用户

发布于 2019-08-13 07:46:09

好的。要部署智能契约,需要发布一个具有空to地址的事务,以及包含与构造函数参数值连接的合同初始化代码的data事务。初始化代码通常由构造函数字节代码和要部署的契约字节代码组成。因此,部署的字节代码不包含构造函数和构造函数参数,这就是不能使用它重新部署契约的原因。

希望块链不仅存储智能契约的字节代码,而且还存储用于部署它的原始事务(我假设该契约是直接从外部拥有的地址部署的,而不是由另一个智能协议部署的)。所以你需要做的是:

  1. 查找用于部署要重新部署的智能契约的事务
  2. 从中提取data
  3. 更改提取数据尾部构造函数参数的值
  4. 部署产生的字节码

如果你需要更多细节,请告诉我。

票数 4
EN

Ethereum用户

发布于 2022-06-29 12:12:44

使用现代web3.js

代码语言:javascript
复制
const bytecode = await web3.eth.getCode(contract)
const creationCode = new web3.eth.Contract([]).deploy({ data: bytecode })._deployData
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/73870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档