Web3 Solidity Contract Deployment Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const solc = require("solc"); | |
const fs = require("fs"); | |
const Web3 = require('web3'); | |
const password = "test"; | |
//web3 provider. can also use ws if started node as websocket | |
var web3 = new Web3( | |
new Web3.providers.HttpProvider('http://localhost:8545')); | |
//Read solidity contract file | |
const input = fs.readFileSync('./MinimalToken.sol'); | |
console.log('Compiling Contract...'); | |
const output = solc.compile(input.toString(),1); | |
const bytecode = output.contracts[':MinimalToken'].bytecode; | |
const abi = output.contracts[':MinimalToken'].interface; | |
fs.writeFile('contract_abi.json', abi, function (err) { | |
if(err){ | |
return console.log(err); | |
} | |
console.log('Saved abi.json to disk'); | |
}) | |
console.log('Unlocking coinbase account'); | |
let coinbase = web3.eth.getCoinbase((err, coinbase) => { | |
web3.eth.personal.unlockAccount(coinbase, password); | |
}); | |
coinbase.then(function(acct, err){ | |
console.log(acct); | |
const basicStorageContract = new web3.eth.Contract(JSON.parse(abi)); | |
console.log('Deploying contract...'); | |
basicStorageContract.deploy( | |
{ | |
data:'0x' + bytecode, | |
arguments: [100000]//or whatever they are in contract constructor | |
} | |
).send({ | |
from: acct, | |
},function(err, res){ | |
if(err){ | |
console.log('error' + err); | |
} | |
}) | |
.on('receipt', function(receipt){ | |
// receipt example | |
console.log(receipt);//txHash | |
}) | |
.then(function(newContractInstance){ | |
console.log(newContractInstance.options.address); // address from contract deployement | |
}); | |
}); | |
//catch any errors from coinbase promise | |
coinbase.catch((err)=>{ | |
console.log(err); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment