@backt/protocol
Version:
Backt smart contracts implementation
247 lines (197 loc) • 8.5 kB
JavaScript
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _truffleContract = require('truffle-contract');
var _truffleContract2 = _interopRequireDefault(_truffleContract);
var _ContractForDifference = require('../abi/ContractForDifference.json');
var _ContractForDifference2 = _interopRequireDefault(_ContractForDifference);
var _ContractForDifferenceFactory = require('../abi/ContractForDifferenceFactory.json');
var _ContractForDifferenceFactory2 = _interopRequireDefault(_ContractForDifferenceFactory);
var _ContractForDifferenceRegistry = require('../abi/ContractForDifferenceRegistry.json');
var _ContractForDifferenceRegistry2 = _interopRequireDefault(_ContractForDifferenceRegistry);
var _Feeds = require('../abi/Feeds.json');
var _Feeds2 = _interopRequireDefault(_Feeds);
var _ForwardFactory = require('../abi/ForwardFactory.json');
var _ForwardFactory2 = _interopRequireDefault(_ForwardFactory);
var _Registry = require('../abi/Registry.json');
var _Registry2 = _interopRequireDefault(_Registry);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Create a handle to the deployed ContractForDifferenceFactory.
*/
var cfdFactoryInstanceDeployed = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(config, web3) {
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
return _context.abrupt('return', deployedContractInstance('ContractForDifferenceFactory', config.cfdFactoryContractAddr, _ContractForDifferenceFactory2.default, config.ownerAccountAddr, config.gasPrice, config.gasLimit, web3));
case 1:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
}));
return function cfdFactoryInstanceDeployed(_x, _x2) {
return _ref.apply(this, arguments);
};
}();
/**
* Create a handle to the deployed ContractForDifferenceRegistry.
*/
var cfdRegistryInstanceDeployed = function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(config, web3) {
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt('return', deployedContractInstance('ContractForDifferenceRegistry', config.cfdRegistryContractAddr, _ContractForDifferenceRegistry2.default, config.ownerAccountAddr, config.gasPrice, config.gasLimit, web3));
case 1:
case 'end':
return _context2.stop();
}
}
}, _callee2, undefined);
}));
return function cfdRegistryInstanceDeployed(_x3, _x4) {
return _ref2.apply(this, arguments);
};
}();
/**
* Create a handle to the deployed Feeds contract.
*/
var feedsInstanceDeployed = function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(config, web3) {
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
return _context3.abrupt('return', deployedContractInstance('Feeds', config.feedContractAddr, _Feeds2.default, config.daemonAccountAddr, config.gasPrice, config.gasLimit, web3));
case 1:
case 'end':
return _context3.stop();
}
}
}, _callee3, undefined);
}));
return function feedsInstanceDeployed(_x5, _x6) {
return _ref3.apply(this, arguments);
};
}();
/**
* Create a handle to the deployed Feeds contract.
*/
var registryInstanceDeployed = function () {
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(config, web3) {
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
return _context4.abrupt('return', deployedContractInstance('Registry', config.registryAddr, _Registry2.default, config.daemonAccountAddr, config.gasPrice, config.gasLimit, web3));
case 1:
case 'end':
return _context4.stop();
}
}
}, _callee4, undefined);
}));
return function registryInstanceDeployed(_x7, _x8) {
return _ref4.apply(this, arguments);
};
}();
/**
* Basic contract handles not connected to a specific deployment address.
*/
var feedsInstance = function feedsInstance(web3Provider, config) {
return contractInstance(_Feeds2.default, web3Provider, config);
};
var registryInstance = function registryInstance(web3Provider, config) {
return contractInstance(_Registry2.default, web3Provider, config);
};
var forwardFactoryInstance = function forwardFactoryInstance(web3Provider, config) {
return contractInstance(_ForwardFactory2.default, web3Provider, config);
};
var cfdInstance = function cfdInstance(web3Provider, config) {
return contractInstance(_ContractForDifference2.default, web3Provider, config);
};
var cfdFactoryInstance = function cfdFactoryInstance(web3Provider, config) {
return contractInstance(_ContractForDifferenceFactory2.default, web3Provider, config);
};
var cfdRegistryInstance = function cfdRegistryInstance(web3Provider, config) {
return contractInstance(_ContractForDifferenceRegistry2.default, web3Provider, config);
};
/**
* Create a handle to an instance of a contract already deployed on the
* blockchain.
* Uses truffle-contract to generate the instance and given ABI and address.
*/
var deployedContractInstance = function () {
var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(name, addr, contractJSON, defaultFrom, defaultGasPrice, defaultGasLimit, web3) {
var Contract;
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
if (!web3.eth.getCodeAsync) {
web3.eth.getCodeAsync = _bluebird2.default.promisify(web3.eth.getCode);
}
_context5.next = 3;
return web3.eth.getCodeAsync(addr);
case 3:
_context5.t0 = _context5.sent;
if (!(_context5.t0 === '0x0')) {
_context5.next = 6;
break;
}
throw new Error(name + ' contract NOT deployed at ' + addr + '.' + ' Check the address and network settings.');
case 6:
Contract = (0, _truffleContract2.default)(contractJSON);
Contract.setProvider(web3.currentProvider);
Contract.defaults({
from: defaultFrom,
gasPrice: defaultGasPrice,
gas: defaultGasLimit
});
return _context5.abrupt('return', Contract.at(addr));
case 10:
case 'end':
return _context5.stop();
}
}
}, _callee5, undefined);
}));
return function deployedContractInstance(_x9, _x10, _x11, _x12, _x13, _x14, _x15) {
return _ref5.apply(this, arguments);
};
}();
/**
* Create a handle to a contract given the JSON and a web3 provider instance.
*/
var contractInstance = function contractInstance(contractJSON, web3Provider, config) {
var Contract = (0, _truffleContract2.default)(contractJSON);
Contract.setProvider(web3Provider);
if (config.ownerAccountAddr && config.gasDefault) {
Contract.defaults({
from: config.ownerAccountAddr,
gas: config.gasDefault
});
}
return Contract;
};
module.exports = {
cfdInstance: cfdInstance,
cfdFactoryInstance: cfdFactoryInstance,
cfdFactoryInstanceDeployed: cfdFactoryInstanceDeployed,
cfdRegistryInstance: cfdRegistryInstance,
cfdRegistryInstanceDeployed: cfdRegistryInstanceDeployed,
feedsInstance: feedsInstance,
feedsInstanceDeployed: feedsInstanceDeployed,
forwardFactoryInstance: forwardFactoryInstance,
registryInstance: registryInstance,
registryInstanceDeployed: registryInstanceDeployed
};
;