UPDATE: I manage to figure out what's wrong is in this line
var byteCode = compiledCode.contracts[':TestStorage'].***byteCode***;
and it should be
var byteCode = compiledCode.contracts[':TestStorage'].***bytecode***;
Completely typo, but it makes me realize that this error is quite general so that could be a lot of reasons.
I have see a lot of people raised this question, but none of the answer/solution could solve my problem so ask here.
I setup truffle on my Windows OS and use Ganache as my personal development blockchain. I create a Node project, use Express setup a server handling request and deploy my contract. I have this error returned:
The contract code couldn't be stored, please check your gas amount
My code is below:
var router = express.Router();
var logger = require('./logger');
var pool = require('./pool');
var web3 = require('./getWeb3');
const fs = require('fs');
const solc = require('solc');
router.get('/', function(req, res, next){
var code = fs.readFileSync('TestStorage.sol').toString();
var compiledCode = solc.compile(code);
var abi = JSON.parse(compiledCode.contracts[':TestStorage'].interface);
var TSContract = web3.eth.contract(abi);
var byteCode = compiledCode.contracts[':TestStorage'].byteCode;
console.log("Unlocking coinbase account");
var password = "";
try {
web3.personal.unlockAccount(web3.eth.coinbase, password);
} catch(e) {
console.log(e);
return;
}
var deployedContract = TSContract.new({data: '0x' + byteCode, from: web3.eth.coinbase, gas: 6721975}, (err, res) => {
if (err) {
console.log('error message: ' + err);
return;
}
// Log the tx, you can explore status with eth.getTransaction()
console.log(res.transactionHash);
// If we have an address property, the contract was deployed
if (res.address) {
console.log('Contract address: ' + res.address);
}
});
}
getWeb3.js
const Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('http://127.0.0.1:9545'));
module.exports=web3;
I have tried below 1. adjust gas in new() and if it greater than 6721975, then error - "Error: Exceeds block gas limit" returned. 2. I manually input above steps in node command line and contact can be deployed successfully.