secretstore-contracts
Version:
Secret Store permissioning and service contracts collection and toolkit.
61 lines (51 loc) • 2.42 kB
JavaScript
;
const path = require("path");
const Web3 = require("web3");
const contractFirstStem = "SecretStore";
const contractDKeyShadowRetrieval = "SecretStoreDocumentKeyShadowRetrievalService";
const contractDKeyStore = "SecretStoreDocumentKeyStoreService";
const contractSKeyRetrieval= "SecretStoreServerKeyRetrievalService";
const contractSKeyGeneration = "SecretStoreServerKeyGenerationService";
async function deployService(args) {
let argselector = {};
argselector[contractDKeyShadowRetrieval] = [args.serverSet];
argselector[contractDKeyStore] = [args.serverSet];
argselector[contractSKeyRetrieval] = [args.serverSet];;
argselector[contractSKeyGeneration] = [args.serverSet];
const web3 = new Web3(args.rpc);
let contractName;
let from = args.from;
if (undefined === from) {
let localAccounts = await web3.eth.getAccounts();
if (localAccounts !== undefined && localAccounts.length !== 0) {
web3.eth.defaultAccount = localAccounts[0];
from = web3.eth.defaultAccount;
}
}
if (args.contract !== undefined) {
if (args.contract.startsWith(contractFirstStem)) {
contractName = args.contract;
} else {
contractName = contractFirstStem + args.contract;
}
const ContractJSON = require(path.join(__dirname, "../build/contracts/" + contractName + ".json"));
let Contract = new web3.eth.Contract(ContractJSON.abi, {data: ContractJSON.bytecode});
let contract = await Contract.deploy({arguments: argselector[ContractJSON.contractName]})
.send({from: from, gas: 5000000});
console.log(contractName + " deployed at: " + contract.options.address);
return contract;
} else {
let contracts = [];
Object.keys(argselector).forEach(async function(key) {
let ContractJSON = require(path.join(__dirname, "../build/contracts/" + key + ".json"));
let Contract = new web3.eth.Contract(ContractJSON.abi, {data: ContractJSON.bytecode});
let c = await Contract.deploy({arguments: argselector[ContractJSON.contractName]})
.send({from: from, gas: 5000000});
console.log(key + " deployed at: " + c.options.address);
contracts.push(c);
});
return contracts;
}
}
module.exports = deployService;