smart-contract-deployer

1.0.1 • Public • Published

smart-contract-deployer

A node module to compile and deploy smart contracts programmatically on the ethereum blockchain.

Installation

npm install smart-contract-deployer

Usage

Create a valid web3 instance, either using a client like geth for production

const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.IpcProvider('ipcpath', require("net")));

or TestRPC for testing development.

const TestRPC = require("ethereumjs-testrpc");
const Web3 = require('web3');
const web3 = new Web3(TestRPC.provider());

Specify the address from which the contracts should be deployed.

const address = web3.eth.coinbase;

Specify the password associated with the previous address. This value is optional, and if it is not supplied, unlockAccount will not be called during the deployment process. If TestRPC has been specified as the web3 provider, by all means, leave this value blank.

const password = 'addressPassword';

Specify the amount of gas to spend in any transaction.

const gas = 500000;

Import the deployer module and create and instance of deployer passing by constructor as an object the previous values.

const Deployer = require('smart-contract-deployer');
const deployer = new Deployer({
    web3: web3,
    address: address,
    password: password,
    gas: gas
});

Get the sources of your contracts to be compiled.

const fs = require('fs');
 
const sources = {
    'SolContractA.sol': fs.readFileSync('/absolutePathToSolContract/SolContract.sol', 'utf8'),
    'SolContractB.sol': fs.readFileSync('/absolutePathToSolContract/SolContractB.sol', 'utf8')
}

Set the params constructor if the contract expects some values to be initialized.

const paramsConstructor = {'SolContractA': ['a', 'b', 'c']};

Specify which one of the sources requires to be deployed.

const deployments = ['SolContractA'];

And finally, call deployContracts passing as an argument the previous values.

return deployer.deployContracts(sources, paramsConstructor, deployments)
    .then(contracts => {
        const abi = contracts.SolContractA.abi;
        const address = contracts.SolContractA.address;
 
        // Here is your beloved contract. Go nuts.
        const solContractA = web3.eth.contract(abi).at(address);
    });

Optionally, call logs supplying a function as a callback to subscribe to the outputs log.

deployer.logs((level, message) => {
    console.log(`${level} : ${message}`);
});

Package Sidebar

Install

npm i smart-contract-deployer

Weekly Downloads

2

Version

1.0.1

License

none

Last publish

Collaborators

  • bancosabadell