无法存储合约代码,请检查您的 gas limit : Ethereum Smart Contract Deployment Failed:
The contract code couldn't be stored, please check your gas limit : Ethereum Smart Contract Deployment Failed:
我正在学习如何使用 solidity、web3 和 Javascript 开发和部署 以太坊智能合约 。
我已经在 Ganache
上成功部署了一个合约。现在,当我尝试使用 truffle-hdwallet-provider
在 Rinkby Test Net
上部署它时,它只是失败了。
我已经使用 truffle-hdwallet-provider
成功创建了 web3
对象并且我成功获得了帐户列表但是部署到测试网总是失败。
You can check here that my deployment gets failed.
https://rinkeby.etherscan.io/address/0x2f20b8F61813Df4e114D06123Db555325173F178
这是我的 deploy script
const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require ('web3');
const {interface, bytecode} = require('./compile');
const provider = new HDWalletProvider(
'memonics', // this is correct
'https://rinkeby.infura.io/mylink' // this is correct
);
const web3 = new Web3(provider);
const deploy = async() =>{
const accounts = await web3.eth.getAccounts();
console.log('Attempting to deploy from account:', accounts[0]); //This excute fine
try {
const result = await new web3.eth.Contract(JSON.parse(interface)).deploy({ data: bytecode, arguments: ['Hi There!']}).send({ from: accounts[0], gas: '1000000'});
console.log('Contract deployed to ', result.options.address);
}
catch(err) {
console.log('ERROR'); // Here I get error
}
};
deploy();
这是我的合同
pragma solidity ^0.4.17;
contract Inbox{
string public message;
constructor (string initialMessage) public {
message = initialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}
编辑:我尝试使用 Remix 并成功部署,但是当尝试使用 truffle-hdwallet-provider 时出现错误:无法存储合约代码,请检查您的 gas 限额。 我绑定了不同的 gas 值(可能达到最大值)但仍然没有结果。
我发现 bytecode
不包含 0x
导致了这个问题。
通过连接 0x
和字节码解决了问题。
我遇到了这个问题,并通过将扁平化代码粘贴到 Remix 中解决了这个问题,然后给出了更好的错误描述:我在合约中有一个接口我没有正确实现(错误的函数签名)。检查您的接口实现。尝试部署 "abstract contract" 会出现此错误。
在字节码之前的 deploy
中使用这个 '0x0' +
。
.deploy({ data:'0x0' + bytecode })
.send({ gas: "1000000", gasPrice: "5000000000", from: accounts[0] });
我正在学习如何使用 solidity、web3 和 Javascript 开发和部署 以太坊智能合约 。
我已经在 Ganache
上成功部署了一个合约。现在,当我尝试使用 truffle-hdwallet-provider
在 Rinkby Test Net
上部署它时,它只是失败了。
我已经使用 truffle-hdwallet-provider
成功创建了 web3
对象并且我成功获得了帐户列表但是部署到测试网总是失败。
You can check here that my deployment gets failed.
https://rinkeby.etherscan.io/address/0x2f20b8F61813Df4e114D06123Db555325173F178
这是我的 deploy script
const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require ('web3');
const {interface, bytecode} = require('./compile');
const provider = new HDWalletProvider(
'memonics', // this is correct
'https://rinkeby.infura.io/mylink' // this is correct
);
const web3 = new Web3(provider);
const deploy = async() =>{
const accounts = await web3.eth.getAccounts();
console.log('Attempting to deploy from account:', accounts[0]); //This excute fine
try {
const result = await new web3.eth.Contract(JSON.parse(interface)).deploy({ data: bytecode, arguments: ['Hi There!']}).send({ from: accounts[0], gas: '1000000'});
console.log('Contract deployed to ', result.options.address);
}
catch(err) {
console.log('ERROR'); // Here I get error
}
};
deploy();
这是我的合同
pragma solidity ^0.4.17;
contract Inbox{
string public message;
constructor (string initialMessage) public {
message = initialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}
编辑:我尝试使用 Remix 并成功部署,但是当尝试使用 truffle-hdwallet-provider 时出现错误:无法存储合约代码,请检查您的 gas 限额。 我绑定了不同的 gas 值(可能达到最大值)但仍然没有结果。
我发现 bytecode
不包含 0x
导致了这个问题。
通过连接 0x
和字节码解决了问题。
我遇到了这个问题,并通过将扁平化代码粘贴到 Remix 中解决了这个问题,然后给出了更好的错误描述:我在合约中有一个接口我没有正确实现(错误的函数签名)。检查您的接口实现。尝试部署 "abstract contract" 会出现此错误。
在字节码之前的 deploy
中使用这个 '0x0' +
。
.deploy({ data:'0x0' + bytecode })
.send({ gas: "1000000", gasPrice: "5000000000", from: accounts[0] });