forked from cerc-io/plugeth
commit
a2333bcbb4
@ -1417,7 +1417,7 @@ module.exports = {
|
|||||||
|
|
||||||
},{"bignumber.js":"bignumber.js"}],8:[function(require,module,exports){
|
},{"bignumber.js":"bignumber.js"}],8:[function(require,module,exports){
|
||||||
module.exports={
|
module.exports={
|
||||||
"version": "0.7.1"
|
"version": "0.8.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
},{}],9:[function(require,module,exports){
|
},{}],9:[function(require,module,exports){
|
||||||
@ -1839,6 +1839,55 @@ var contract = function (abi) {
|
|||||||
return new ContractFactory(abi);
|
return new ContractFactory(abi);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should be called to create new ContractFactory
|
||||||
|
*
|
||||||
|
* @method checkForContractAddress
|
||||||
|
* @param {Object} contract
|
||||||
|
* @param {Function} callback
|
||||||
|
* @returns {Undefined}
|
||||||
|
*/
|
||||||
|
var checkForContractAddress = function(contract, callback){
|
||||||
|
var count = 0;
|
||||||
|
|
||||||
|
// wait for receipt
|
||||||
|
var filter = web3.eth.filter('latest', function(e){
|
||||||
|
if(!e) {
|
||||||
|
count++;
|
||||||
|
|
||||||
|
// stop watching after 50 blocks (timeout)
|
||||||
|
if(count > 50) {
|
||||||
|
if(callback)
|
||||||
|
callback(new Error('Contract couldn\'t be deployed'));
|
||||||
|
|
||||||
|
filter.stopWatching();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
web3.eth.getTransactionReceipt(contract.transactionHash, function(e, receipt){
|
||||||
|
if(receipt) {
|
||||||
|
|
||||||
|
web3.eth.getCode(receipt.contractAddress, function(e, code){
|
||||||
|
if(code.length > 2) {
|
||||||
|
|
||||||
|
contract.address = receipt.contractAddress;
|
||||||
|
|
||||||
|
if(callback)
|
||||||
|
callback(null, contract);
|
||||||
|
|
||||||
|
} else if(callback) {
|
||||||
|
callback(new Error('The contract code couldn\'t be stored'));
|
||||||
|
}
|
||||||
|
|
||||||
|
filter.stopWatching();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should be called to create new ContractFactory instance
|
* Should be called to create new ContractFactory instance
|
||||||
*
|
*
|
||||||
@ -1857,10 +1906,11 @@ var ContractFactory = function (abi) {
|
|||||||
* @param {Any} contract constructor param2 (optional)
|
* @param {Any} contract constructor param2 (optional)
|
||||||
* @param {Object} contract transaction object (required)
|
* @param {Object} contract transaction object (required)
|
||||||
* @param {Function} callback
|
* @param {Function} callback
|
||||||
* @returns {Contract} returns contract if no callback was passed,
|
* @returns {Contract} returns contract instance
|
||||||
* otherwise calls callback function (err, contract)
|
|
||||||
*/
|
*/
|
||||||
ContractFactory.prototype.new = function () {
|
ContractFactory.prototype.new = function () {
|
||||||
|
var contract = new Contract(this.abi);
|
||||||
|
|
||||||
// parse arguments
|
// parse arguments
|
||||||
var options = {}; // required!
|
var options = {}; // required!
|
||||||
var callback;
|
var callback;
|
||||||
@ -1880,18 +1930,27 @@ ContractFactory.prototype.new = function () {
|
|||||||
var bytes = encodeConstructorParams(this.abi, args);
|
var bytes = encodeConstructorParams(this.abi, args);
|
||||||
options.data += bytes;
|
options.data += bytes;
|
||||||
|
|
||||||
if (!callback) {
|
|
||||||
var address = web3.eth.sendTransaction(options);
|
if(callback) {
|
||||||
return this.at(address);
|
|
||||||
|
// wait for the contract address adn check if the code was deployed
|
||||||
|
web3.eth.sendTransaction(options, function (err, hash) {
|
||||||
|
if (err) {
|
||||||
|
callback(err);
|
||||||
|
} else {
|
||||||
|
// add the transaction hash
|
||||||
|
contract.transactionHash = hash;
|
||||||
|
checkForContractAddress(contract, callback);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var hash = web3.eth.sendTransaction(options);
|
||||||
|
// add the transaction hash
|
||||||
|
contract.transactionHash = hash;
|
||||||
|
checkForContractAddress(contract);
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
return contract;
|
||||||
web3.eth.sendTransaction(options, function (err, address) {
|
|
||||||
if (err) {
|
|
||||||
callback(err);
|
|
||||||
}
|
|
||||||
self.at(address, callback);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user