func (self *XEth) EthTransactionByHash(hash string) (tx *types.Transaction, blhash common.Hash, blnum *big.Int, txi uint64) { // Due to increasing return params and need to determine if this is from transaction pool or // some chain, this probably needs to be refactored for more expressiveness data, _ := self.backend.ExtraDb().Get(common.FromHex(hash)) if len(data) != 0 { tx = types.NewTransactionFromBytes(data) } else { // check pending transactions tx = self.backend.TxPool().GetTransaction(common.HexToHash(hash)) } // meta var txExtra struct { BlockHash common.Hash BlockIndex uint64 Index uint64 } v, dberr := self.backend.ExtraDb().Get(append(common.FromHex(hash), 0x0001)) // TODO check specifically for ErrNotFound if dberr != nil { return } r := bytes.NewReader(v) err := rlp.Decode(r, &txExtra) if err == nil { blhash = txExtra.BlockHash blnum = big.NewInt(int64(txExtra.BlockIndex)) txi = txExtra.Index } else { glog.V(logger.Error).Infoln(err) } return }
func (self *XEth) EthTransactionByHash(hash string) (tx *types.Transaction, blhash common.Hash, blnum *big.Int, txi uint64) { data, _ := self.backend.ExtraDb().Get(common.FromHex(hash)) if len(data) != 0 { tx = types.NewTransactionFromBytes(data) } else { // check pending transactions tx = self.backend.TxPool().GetTransaction(common.HexToHash(hash)) } // meta var txExtra struct { BlockHash common.Hash BlockIndex uint64 Index uint64 } v, _ := self.backend.ExtraDb().Get(append(common.FromHex(hash), 0x0001)) r := bytes.NewReader(v) err := rlp.Decode(r, &txExtra) if err == nil { blhash = txExtra.BlockHash blnum = big.NewInt(int64(txExtra.BlockIndex)) txi = txExtra.Index } else { glog.V(logger.Error).Infoln(err) } return }
func (self *UiLib) ImportTx(rlpTx string) { tx := types.NewTransactionFromBytes(common.Hex2Bytes(rlpTx)) err := self.eth.TxPool().Add(tx) if err != nil { guilogger.Infoln("import tx failed ", err) } }
func (gui *Gui) readPreviousTransactions() { it := gui.txDb.NewIterator() for it.Next() { tx := types.NewTransactionFromBytes(it.Value()) gui.insertTransaction("post", tx) } it.Release() }
func (self *XEth) PushTx(encodedTx string) (string, error) { tx := types.NewTransactionFromBytes(common.FromHex(encodedTx)) err := self.backend.TxPool().Add(tx) if err != nil { return "", err } if tx.To() == nil { addr := core.AddressFromMessage(tx) return addr.Hex(), nil } return tx.Hash().Hex(), nil }
func (self *XEth) PushTx(encodedTx string) (string, error) { tx := types.NewTransactionFromBytes(common.FromHex(encodedTx)) err := self.backend.TxPool().Add(tx) if err != nil { return "", err } if tx.To() == nil { addr := core.AddressFromMessage(tx) 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()) } return tx.Hash().Hex(), nil }
func (self *XEth) PushTx(encodedTx string) (string, error) { tx := types.NewTransactionFromBytes(common.FromHex(encodedTx)) err := self.backend.TxPool().Add(tx) if err != nil { return "", err } if tx.To() == nil { from, err := tx.From() if err != nil { return "", err } addr := crypto.CreateAddress(from, tx.Nonce()) glog.V(logger.Info).Infof("Tx(%x) created: %x\n", tx.Hash(), addr) } else { glog.V(logger.Info).Infof("Tx(%x) to: %x\n", tx.Hash(), tx.To()) } return tx.Hash().Hex(), nil }