poa-bridge/jsTests/utils.js

183 lines
5.1 KiB
JavaScript
Raw Normal View History

2017-10-18 07:30:56 -07:00
let fs = require("fs")
let Web3 = require("web3")
let toml = require("toml")
2017-10-04 19:56:14 -07:00
function attachToContract(side, cb) {
2017-10-18 07:30:56 -07:00
configureWeb3(side, function(err, web3, config, defaultAccount) {
2017-10-15 01:21:51 -07:00
web3.eth.defaultAccount = config.account;
2017-10-18 07:30:56 -07:00
var dbtoml = fs.readFileSync('../examples/db.toml').toString('utf8');
var db = toml.parse(dbtoml);
var homeBridgeBin = "0x" + fs.readFileSync('../contracts/HomeBridge.bin').toString('utf8');
var homeBridgeABI = JSON.parse(fs.readFileSync('../contracts/HomeBridge.abi').toString('utf8'));
var foreignBridgeBin = "0x" + fs.readFileSync('../contracts/ForeignBridge.bin').toString('utf8');
var foreignBridgeABI = JSON.parse(fs.readFileSync('../contracts/ForeignBridge.abi').toString('utf8'));
var abi;
var addr;
if (side == "left") {
abi = homeBridgeABI;
addr = db.home_contract_address;
} else if (side == "right") {
abi = foreignBridgeABI;
addr = db.foreign_contract_address;
}
//var abi = config.contract[side].abi;
//var addr = config.contract[side].addr;
2017-10-15 01:21:51 -07:00
console.log("web3.eth.defaultAccount:" + web3.eth.defaultAccount);
let contractInstance = new web3.eth.Contract(abi, addr, {
from: web3.eth.defaultAccount
});
if (cb) cb(null, contractInstance, web3);
2017-10-04 19:56:14 -07:00
});
}
function getConfig() {
var config = JSON.parse(fs.readFileSync('./config.json', 'utf8'));
return config;
}
2017-10-18 07:30:56 -07:00
function configureWeb3(side, cb) {
2017-10-04 19:56:14 -07:00
var config = getConfig();
var web3;
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
2017-10-18 07:30:56 -07:00
web3 = new Web3(new Web3.providers.HttpProvider(config.rpc[side]));
2017-10-04 19:56:14 -07:00
}
//console.log(web3.eth.accounts);
2017-10-18 07:30:56 -07:00
//web3.eth.defaultAccount = config.account;
var defaultAccount = web3.eth.defaultAccount;
//console.log("web3.eth.defaultAccount:");
//console.log(web3.eth.defaultAccount);
cb(null, web3, config, defaultAccount);
2017-10-04 19:56:14 -07:00
}
2017-10-24 05:54:26 -07:00
function getTxReceipt(side, txhash, cb) {
2017-10-18 07:30:56 -07:00
configureWeb3(side, function(err, web3, config, defaultAccount) {
2017-10-04 19:56:14 -07:00
web3.eth.getTransactionReceipt(txhash, function(err, val) {
2017-10-24 05:54:26 -07:00
if (!cb) console.log(val);
if (cb) cb(val);
2017-10-04 19:56:14 -07:00
});
});
}
2017-10-18 07:30:56 -07:00
function getTxData(side, txhash) {
configureWeb3(side, function(err, web3, config, defaultAccount) {
2017-10-04 19:56:14 -07:00
web3.eth.getTransaction(txhash, function(err, val) {
console.log(val);
});
});
}
2017-10-18 07:30:56 -07:00
function getBalance(side, addr) {
2017-10-04 19:56:14 -07:00
var config = getConfig();
2017-10-18 07:30:56 -07:00
configureWeb3(side, function(err, web3, config, defaultAccount) {
let balance = web3.eth.getBalance(addr).then(function(balance) {
2017-10-17 07:35:17 -07:00
console.log("balance: " + balance)
})
2017-10-04 19:56:14 -07:00
});
}
function checkTxMined(web3, txhash, cb) {
web3.eth.getTransactionReceipt(txhash, function(err, receipt) {
if (receipt)
console.log(receipt);
cb(receipt);
});
}
2017-10-24 05:54:26 -07:00
function getAuthorities(side) {
attachToContract(side, function(err, contract, web3) {
contract.methods.authorities(0).call({from: web3.eth.defaultAccount}).then(function(result) {
console.log("getAuthorities from " + side + ":");
if (err) console.log(err);
console.log("result: " + result);
});
});
}
function getBlockData(side, blokNumber, cb) {
configureWeb3(side, function(err, web3, config, defaultAccount) {
web3.eth.getBlock(blokNumber).then(
function(res) {
if (!cb) console.log(res)
if (cb) cb(res)
}
);
});
}
function getRequiredSignatures(side) {
attachToContract(side, function(err, contract, web3) {
contract.methods.requiredSignatures().call({from: web3.eth.defaultAccount}).then(function(result) {
console.log("getRequiredSignatures from " + side + ":");
if (err) console.log(err);
console.log("result: " + result);
});
});
}
function getTokenBalanceOf(addr) {
attachToContract("right", function(err, contract, web3) {
contract.methods.balances(addr).call({from: web3.eth.defaultAccount}).then(function(result) {
console.log("getTokenBalanceOf from right:");
if (err) console.log(err);
console.log("result: " + result);
});
});
}
function buyFromWizard(addr) {
attachToContract("left", function(err, contract, web3) {
contract.methods.buy().send({from: web3.eth.defaultAccount, value: 1000000000000000, from: addr}).then(function(err, result) {
console.log("buy from left:");
if (err) console.log(err);
console.log("result: " + result);
});
});
}
function buyFromBridge(addr) {
attachToContract("left", function(err, contract, web3) {
web3.eth.sendTransaction({from: web3.eth.defaultAccount, value: 1000000000000000, from: addr, to: db.home_contract_address}).then(function(err, result) {
console.log("buy from left:");
if (err) console.log(err);
console.log("result: " + result);
});
});
}
function getDeposits(hash) {
attachToContract("right", function(err, contract, config, web3) {
contract.methods.deposits(hash).call({from: web3.eth.defaultAccount}, function(result) {
console.log("getBalances from right:");
if (err) console.log(err);
console.log("result: " + result);
});
});
}
2017-10-04 19:56:14 -07:00
module.exports = {
2017-10-24 05:54:26 -07:00
attachToContract,
getConfig,
configureWeb3,
getTxReceipt,
getTxData,
getBalance,
checkTxMined,
getAuthorities,
getBlockData,
getRequiredSignatures,
getTokenBalanceOf,
buyFromWizard,
buyFromBridge,
getDeposits
2017-10-04 19:56:14 -07:00
}