aboutsummaryrefslogtreecommitdiffstats
path: root/ethpub/pub.go
diff options
context:
space:
mode:
authorMaran <maran.hidskes@gmail.com>2014-06-25 22:12:33 +0800
committerMaran <maran.hidskes@gmail.com>2014-06-25 22:12:33 +0800
commit8fe8175c7870e18a791888a14630253f5a0476b0 (patch)
tree22b1d89747e102390cf64133b36a88441fcc1191 /ethpub/pub.go
parent589d27386a4d630f052bf645a9e134a8b2d6fcad (diff)
downloaddexon-8fe8175c7870e18a791888a14630253f5a0476b0.tar.gz
dexon-8fe8175c7870e18a791888a14630253f5a0476b0.tar.zst
dexon-8fe8175c7870e18a791888a14630253f5a0476b0.zip
Implemented TX History for ethPub
Diffstat (limited to 'ethpub/pub.go')
-rw-r--r--ethpub/pub.go31
1 files changed, 30 insertions, 1 deletions
diff --git a/ethpub/pub.go b/ethpub/pub.go
index 6a41f575c..c4b10f0e6 100644
--- a/ethpub/pub.go
+++ b/ethpub/pub.go
@@ -1,7 +1,9 @@
package ethpub
import (
+ "bytes"
"encoding/hex"
+ "encoding/json"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
"math/big"
@@ -81,6 +83,34 @@ func (lib *PEthereum) GetCoinBase() string {
return lib.SecretToAddress(hex.EncodeToString(key))
}
+func (lib *PEthereum) GetTransactionsFor(address string, asJson bool) interface{} {
+ sBlk := lib.manager.BlockChain().LastBlockHash
+ blk := lib.manager.BlockChain().GetBlock(sBlk)
+ addr := []byte(ethutil.FromHex(address))
+
+ var txs []*PTx
+
+ for ; blk != nil; blk = lib.manager.BlockChain().GetBlock(sBlk) {
+ sBlk = blk.PrevHash
+
+ // Loop through all transactions to see if we missed any while being offline
+ for _, tx := range blk.Transactions() {
+ if bytes.Compare(tx.Sender(), addr) == 0 || bytes.Compare(tx.Recipient, addr) == 0 {
+ ethutil.Config.Log.Debugf("FOund tx: %x\n", tx)
+ txs = append(txs, NewPTx(tx))
+ }
+ }
+ }
+ if asJson {
+ txJson, err := json.Marshal(txs)
+ if err != nil {
+ return nil
+ }
+ return string(txJson)
+ }
+ return txs
+}
+
func (lib *PEthereum) GetStorage(address, storageAddress string) string {
return lib.GetStateObject(address).GetStorage(storageAddress)
}
@@ -123,7 +153,6 @@ func GetAddressFromNameReg(stateManager *ethchain.StateManager, name string) []b
return nil
}
-
func (lib *PEthereum) createTx(key, recipient, valueStr, gasStr, gasPriceStr, scriptStr string) (*PReceipt, error) {
var hash []byte
var contractCreation bool