5.5 生成和部署合约

优质
小牛编辑
131浏览
2023-12-01

生成和部署合约

既然你既有一个已经解锁的帐户也有一些资金,你可以通过将一个事务发送到空的地址,使用evm代码作为数据来创建一个智能合约。是不是很简单?

primaryAddress = eth.accounts[0]
MyContract = eth.contract(abi);
contact = MyContract.new(arg1, arg2, ...,{from: primaryAddress, data: evmCode})

所有二进制数据以十六进制形式进行序列化。十六进制字符串始终具有十六进制前缀0x。

注意,这arg1, arg2, ...是合约构造函数的参数,假使它可以接受任何数据。

另请注意,此步骤要求您支付执行费用。一旦您的交易进入一个区块,您帐户(作为发件人填写在from区域)上的余额将根据VM的gas规则减少。稍后再说。一段时间后,您的交易应该显示在一个块中,确认其所带来的状态是一致的。你的合约现在部署到blockchain上。

执行相同操作的异步方式如下所示:

MyContract.new([arg1, arg2, ...,]{from: primaryAccount, data: evmCode}, function(err, contract) {
  if (!err && contract.address)
    console.log(contract.address);
});