例如,我想将一个契约重新部署/克隆到另一个地址,但是没有原始的源代码,所以我只将运行时字节码存储在块链上。如果我试图直接部署运行时字节码,就会导致失败。那么,是否有任何方法从运行时字节码构造有效的可部署字节码,以便将完全相同的契约代码部署/克隆到另一个地址?
我不打算部署转发器代理,我知道如何在实体程序集和vyper中实现这一点,我需要的是将完全相同的运行时字节码部署到没有原始源代码的新地址。谢谢。
发布于 2019-08-13 07:46:09
好的。要部署智能契约,需要发布一个具有空to地址的事务,以及包含与构造函数参数值连接的合同初始化代码的data事务。初始化代码通常由构造函数字节代码和要部署的契约字节代码组成。因此,部署的字节代码不包含构造函数和构造函数参数,这就是不能使用它重新部署契约的原因。
希望块链不仅存储智能契约的字节代码,而且还存储用于部署它的原始事务(我假设该契约是直接从外部拥有的地址部署的,而不是由另一个智能协议部署的)。所以你需要做的是:
data如果你需要更多细节,请告诉我。
发布于 2022-06-29 12:12:44
使用现代web3.js
const bytecode = await web3.eth.getCode(contract)
const creationCode = new web3.eth.Contract([]).deploy({ data: bytecode })._deployDatahttps://ethereum.stackexchange.com/questions/73870
复制相似问题