diff options
author | Maran <maran.hidskes@gmail.com> | 2014-06-25 22:12:33 +0800 |
---|---|---|
committer | Maran <maran.hidskes@gmail.com> | 2014-06-25 22:12:33 +0800 |
commit | 8fe8175c7870e18a791888a14630253f5a0476b0 (patch) | |
tree | 22b1d89747e102390cf64133b36a88441fcc1191 /ethpub/pub.go | |
parent | 589d27386a4d630f052bf645a9e134a8b2d6fcad (diff) | |
download | dexon-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.go | 31 |
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 |