diff --git a/cmd/mist/gui.go b/cmd/mist/gui.go index 3ab307174..e858d7c61 100644 --- a/cmd/mist/gui.go +++ b/cmd/mist/gui.go @@ -301,7 +301,7 @@ func (gui *Gui) insertTransaction(window string, tx *types.Transaction) { addr := gui.address() var inout string - if bytes.Compare(tx.Sender(), addr) == 0 { + if bytes.Compare(tx.From(), addr) == 0 { inout = "send" } else { inout = "recv" @@ -321,7 +321,7 @@ func (gui *Gui) insertTransaction(window string, tx *types.Transaction) { if send.Len() != 0 { s = strings.Trim(send.Str(), "\x00") } else { - s = ethutil.Bytes2Hex(tx.Sender()) + s = ethutil.Bytes2Hex(tx.From()) } if rec.Len() != 0 { r = strings.Trim(rec.Str(), "\x00") @@ -453,7 +453,7 @@ func (gui *Gui) update() { tx := ev.Tx object := state.GetAccount(gui.address()) - if bytes.Compare(tx.Sender(), gui.address()) == 0 { + if bytes.Compare(tx.From(), gui.address()) == 0 { object.SubAmount(tx.Value()) gui.txDb.Put(tx.Hash(), tx.RlpEncode()) diff --git a/core/transaction_pool.go b/core/transaction_pool.go index 17fcdb86a..1149d4cfb 100644 --- a/core/transaction_pool.go +++ b/core/transaction_pool.go @@ -116,7 +116,11 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error { } // Get the sender - sender := pool.chainManager.State().GetAccount(tx.Sender()) + senderAddr := tx.From() + if senderAddr == nil { + return fmt.Errorf("invalid sender") + } + sender := pool.chainManager.State().GetAccount(senderAddr) totAmount := new(big.Int).Set(tx.Value()) // Make sure there's enough in the sender's account. Having insufficient @@ -193,7 +197,7 @@ func (pool *TxPool) RemoveInvalid(state *state.StateDB) { for e := pool.pool.Front(); e != nil; e = e.Next() { tx := e.Value.(*types.Transaction) - sender := state.GetAccount(tx.Sender()) + sender := state.GetAccount(tx.From()) err := pool.ValidateTransaction(tx) if err != nil || sender.Nonce >= tx.Nonce() { pool.pool.Remove(e) diff --git a/core/types/transaction.go b/core/types/transaction.go index c64fb69f0..95a256a76 100644 --- a/core/types/transaction.go +++ b/core/types/transaction.go @@ -77,7 +77,7 @@ func (self *Transaction) SetNonce(nonce uint64) { } func (self *Transaction) From() []byte { - return self.Sender() + return self.sender() } func (self *Transaction) To() []byte { @@ -114,12 +114,12 @@ func (tx *Transaction) PublicKey() []byte { return pubkey } -func (tx *Transaction) Sender() []byte { +func (tx *Transaction) sender() []byte { pubkey := tx.PublicKey() // Validate the returned key. // Return nil if public key isn't in full format - if len(pubkey) != 0 && pubkey[0] != 4 { + if len(pubkey) == 0 || pubkey[0] != 4 { return nil } @@ -187,7 +187,7 @@ func (tx *Transaction) String() string { `, tx.Hash(), len(tx.recipient) == 0, - tx.Sender(), + tx.From(), tx.recipient, tx.nonce, tx.gasPrice, diff --git a/xeth/js_types.go b/xeth/js_types.go index 987edce37..04018f6a5 100644 --- a/xeth/js_types.go +++ b/xeth/js_types.go @@ -100,7 +100,7 @@ func NewJSTx(tx *types.Transaction, state *state.StateDB) *JSTransaction { if receiver == "0000000000000000000000000000000000000000" { receiver = ethutil.Bytes2Hex(core.AddressFromMessage(tx)) } - sender := ethutil.Bytes2Hex(tx.Sender()) + sender := ethutil.Bytes2Hex(tx.From()) createsContract := core.MessageCreatesContract(tx) var data string