aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorzsfelfoldi <zsfelfoldi@gmail.com>2016-07-11 17:58:10 +0800
committerzsfelfoldi <zsfelfoldi@gmail.com>2016-07-11 18:35:23 +0800
commit00787fe7818b7baaa95ef7928b5101df2d052dce (patch)
treeac4322a7634a9981815098cc91440d6a9156f329 /core
parent2b94d7fc7fa93ecfd5ab6ddaa0c7bf4d2224d2be (diff)
downloadgo-tangerine-00787fe7818b7baaa95ef7928b5101df2d052dce.tar
go-tangerine-00787fe7818b7baaa95ef7928b5101df2d052dce.tar.gz
go-tangerine-00787fe7818b7baaa95ef7928b5101df2d052dce.tar.bz2
go-tangerine-00787fe7818b7baaa95ef7928b5101df2d052dce.tar.lz
go-tangerine-00787fe7818b7baaa95ef7928b5101df2d052dce.tar.xz
go-tangerine-00787fe7818b7baaa95ef7928b5101df2d052dce.tar.zst
go-tangerine-00787fe7818b7baaa95ef7928b5101df2d052dce.zip
core: added CheckNonce() to Message interface
Diffstat (limited to 'core')
-rw-r--r--core/state_transition.go7
-rw-r--r--core/types/transaction.go1
2 files changed, 6 insertions, 2 deletions
diff --git a/core/state_transition.go b/core/state_transition.go
index c8160424b..9e6b2f567 100644
--- a/core/state_transition.go
+++ b/core/state_transition.go
@@ -71,6 +71,7 @@ type Message interface {
Value() *big.Int
Nonce() uint64
+ CheckNonce() bool
Data() []byte
}
@@ -208,8 +209,10 @@ func (self *StateTransition) preCheck() (err error) {
}
// Make sure this transaction's nonce is correct
- if n := self.state.GetNonce(sender.Address()); n != msg.Nonce() {
- return NonceError(msg.Nonce(), n)
+ if msg.CheckNonce() {
+ if n := self.state.GetNonce(sender.Address()); n != msg.Nonce() {
+ return NonceError(msg.Nonce(), n)
+ }
}
// Pre-pay gas
diff --git a/core/types/transaction.go b/core/types/transaction.go
index b99d3a716..c71c98aa7 100644
--- a/core/types/transaction.go
+++ b/core/types/transaction.go
@@ -113,6 +113,7 @@ func (tx *Transaction) Gas() *big.Int { return new(big.Int).Set(tx.data.Gas
func (tx *Transaction) GasPrice() *big.Int { return new(big.Int).Set(tx.data.Price) }
func (tx *Transaction) Value() *big.Int { return new(big.Int).Set(tx.data.Amount) }
func (tx *Transaction) Nonce() uint64 { return tx.data.AccountNonce }
+func (tx *Transaction) CheckNonce() bool { return true }
func (tx *Transaction) To() *common.Address {
if tx.data.Recipient == nil {