aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-07-09 22:24:35 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-07-09 22:24:35 +0800
commit97d22be318add5c5f9e8cb8906c6786ae7a33623 (patch)
tree820bc0e4084a8a0687431600d223291372707fa7
parent4c62ce831b7f4aba873fd0f78d90081d774c14a4 (diff)
parentd25634662bf631fe073e25817b375a48fd436cad (diff)
downloadgo-tangerine-97d22be318add5c5f9e8cb8906c6786ae7a33623.tar
go-tangerine-97d22be318add5c5f9e8cb8906c6786ae7a33623.tar.gz
go-tangerine-97d22be318add5c5f9e8cb8906c6786ae7a33623.tar.bz2
go-tangerine-97d22be318add5c5f9e8cb8906c6786ae7a33623.tar.lz
go-tangerine-97d22be318add5c5f9e8cb8906c6786ae7a33623.tar.xz
go-tangerine-97d22be318add5c5f9e8cb8906c6786ae7a33623.tar.zst
go-tangerine-97d22be318add5c5f9e8cb8906c6786ae7a33623.zip
Merge pull request #1441 from obscuren/logs-return-fix
miner, xeth: fire log event during mining. Fix return raw tx
-rw-r--r--core/filter.go2
-rw-r--r--jsre/ethereum_js.go32
-rw-r--r--miner/worker.go1
-rw-r--r--xeth/xeth.go1
4 files changed, 24 insertions, 12 deletions
diff --git a/core/filter.go b/core/filter.go
index 277976a55..135960117 100644
--- a/core/filter.go
+++ b/core/filter.go
@@ -99,7 +99,7 @@ done:
switch {
case block.NumberU64() == 0:
break done
- case block.NumberU64() == earliestBlockNo:
+ case block.NumberU64() < earliestBlockNo:
break done
case self.max <= len(logs):
break done
diff --git a/jsre/ethereum_js.go b/jsre/ethereum_js.go
index 0a240dd28..f8cc88569 100644
--- a/jsre/ethereum_js.go
+++ b/jsre/ethereum_js.go
@@ -1417,7 +1417,7 @@ module.exports = {
},{"bignumber.js":"bignumber.js"}],8:[function(require,module,exports){
module.exports={
- "version": "0.8.0"
+ "version": "0.8.1"
}
},{}],9:[function(require,module,exports){
@@ -1840,14 +1840,14 @@ var contract = function (abi) {
};
/**
- * Should be called to create new ContractFactory
+ * Should be called to check if the contract gets properly deployed on the blockchain.
*
* @method checkForContractAddress
* @param {Object} contract
* @param {Function} callback
* @returns {Undefined}
*/
-var checkForContractAddress = function(contract, callback){
+var checkForContractAddress = function(contract, abi, callback){
var count = 0;
// wait for receipt
@@ -1855,6 +1855,8 @@ var checkForContractAddress = function(contract, callback){
if(!e) {
count++;
+ // console.log('Checking for contract address', count);
+
// stop watching after 50 blocks (timeout)
if(count > 50) {
if(callback)
@@ -1870,8 +1872,14 @@ var checkForContractAddress = function(contract, callback){
web3.eth.getCode(receipt.contractAddress, function(e, code){
if(code.length > 2) {
+ // console.log('Contract code deployed!');
+
contract.address = receipt.contractAddress;
+ // attach events and methods
+ addFunctionsToContract(contract, abi);
+ addEventsToContract(contract, abi);
+
if(callback)
callback(null, contract);
@@ -1909,6 +1917,7 @@ var ContractFactory = function (abi) {
* @returns {Contract} returns contract instance
*/
ContractFactory.prototype.new = function () {
+ var _this = this;
var contract = new Contract(this.abi);
// parse arguments
@@ -1940,14 +1949,14 @@ ContractFactory.prototype.new = function () {
} else {
// add the transaction hash
contract.transactionHash = hash;
- checkForContractAddress(contract, callback);
+ checkForContractAddress(contract, _this.abi, callback);
}
});
} else {
var hash = web3.eth.sendTransaction(options);
// add the transaction hash
contract.transactionHash = hash;
- checkForContractAddress(contract);
+ checkForContractAddress(contract, _this.abi);
}
return contract;
@@ -1963,12 +1972,17 @@ ContractFactory.prototype.new = function () {
* otherwise calls callback function (err, contract)
*/
ContractFactory.prototype.at = function (address, callback) {
+ var contract = new Contract(this.abi, address);
// TODO: address is required
+
+ // attach functions
+ addFunctionsToContract(contract, this.abi);
+ addEventsToContract(contract, this.abi);
if (callback) {
- callback(null, new Contract(this.abi, address));
+ callback(null, contract);
}
- return new Contract(this.abi, address);
+ return contract;
};
/**
@@ -1980,8 +1994,6 @@ ContractFactory.prototype.at = function (address, callback) {
*/
var Contract = function (abi, address) {
this.address = address;
- addFunctionsToContract(this, abi);
- addEventsToContract(this, abi);
};
module.exports = contract;
@@ -2484,8 +2496,8 @@ SolidityEvent.prototype.encode = function (indexed, options) {
result.topics = [];
+ result.address = this._address;
if (!this._anonymous) {
- result.address = this._address;
result.topics.push('0x' + this.signature());
}
diff --git a/miner/worker.go b/miner/worker.go
index 085721751..9f804bf30 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -298,6 +298,7 @@ func (self *worker) wait() {
self.mux.Post(core.ChainEvent{block, block.Hash(), logs})
if stat == core.CanonStatTy {
self.mux.Post(core.ChainHeadEvent{block})
+ self.mux.Post(logs)
}
}(block, self.current.state.Logs())
diff --git a/xeth/xeth.go b/xeth/xeth.go
index d1085dc92..2781c67c9 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -781,7 +781,6 @@ func (self *XEth) PushTx(encodedTx string) (string, error) {
addr := crypto.CreateAddress(from, tx.Nonce())
glog.V(logger.Info).Infof("Tx(%x) created: %x\n", tx.Hash(), addr)
- return addr.Hex(), nil
} else {
glog.V(logger.Info).Infof("Tx(%x) to: %x\n", tx.Hash(), tx.To())
}