Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
c74c07ee
Commit
c74c07ee
authored
Mar 03, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed error for invalid transaction
parent
6518da7c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
29 additions
and
12 deletions
+29
-12
error.go
core/error.go
+18
-0
state_transition.go
core/state_transition.go
+6
-7
vm.go
tests/helper/vm.go
+4
-0
gh_test.go
tests/vm/gh_test.go
+1
-5
No files found.
core/error.go
View file @
c74c07ee
...
@@ -87,6 +87,24 @@ func IsNonceErr(err error) bool {
...
@@ -87,6 +87,24 @@ func IsNonceErr(err error) bool {
return
ok
return
ok
}
}
type
InvalidTxErr
struct
{
Message
string
}
func
(
err
*
InvalidTxErr
)
Error
()
string
{
return
err
.
Message
}
func
InvalidTxError
(
err
error
)
*
InvalidTxErr
{
return
&
InvalidTxErr
{
fmt
.
Sprintf
(
"%v"
,
err
)}
}
func
IsInvalidTxErr
(
err
error
)
bool
{
_
,
ok
:=
err
.
(
*
InvalidTxErr
)
return
ok
}
type
OutOfGasErr
struct
{
type
OutOfGasErr
struct
{
Message
string
Message
string
}
}
...
...
core/state_transition.go
View file @
c74c07ee
...
@@ -3,7 +3,6 @@ package core
...
@@ -3,7 +3,6 @@ package core
import
(
import
(
"fmt"
"fmt"
"math/big"
"math/big"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/state"
"github.com/ethereum/go-ethereum/state"
...
@@ -146,7 +145,7 @@ func (self *StateTransition) preCheck() (err error) {
...
@@ -146,7 +145,7 @@ func (self *StateTransition) preCheck() (err error) {
// Pre-pay gas / Buy gas of the coinbase account
// Pre-pay gas / Buy gas of the coinbase account
if
err
=
self
.
BuyGas
();
err
!=
nil
{
if
err
=
self
.
BuyGas
();
err
!=
nil
{
return
err
return
InvalidTxError
(
err
)
}
}
return
nil
return
nil
...
@@ -167,15 +166,15 @@ func (self *StateTransition) TransitionState() (ret []byte, err error) {
...
@@ -167,15 +166,15 @@ func (self *StateTransition) TransitionState() (ret []byte, err error) {
defer
self
.
RefundGas
()
defer
self
.
RefundGas
()
// Increment the nonce for the next transaction
self
.
state
.
SetNonce
(
sender
.
Address
(),
sender
.
Nonce
()
+
1
)
//sender.Nonce += 1
// Transaction gas
// Transaction gas
if
err
=
self
.
UseGas
(
vm
.
GasTx
);
err
!=
nil
{
if
err
=
self
.
UseGas
(
vm
.
GasTx
);
err
!=
nil
{
return
return
nil
,
InvalidTxError
(
err
)
}
}
// Increment the nonce for the next transaction
self
.
state
.
SetNonce
(
sender
.
Address
(),
sender
.
Nonce
()
+
1
)
//sender.Nonce += 1
// Pay data gas
// Pay data gas
var
dgas
int64
var
dgas
int64
for
_
,
byt
:=
range
self
.
data
{
for
_
,
byt
:=
range
self
.
data
{
...
...
tests/helper/vm.go
View file @
c74c07ee
...
@@ -167,6 +167,7 @@ func RunState(statedb *state.StateDB, env, tx map[string]string) ([]byte, state.
...
@@ -167,6 +167,7 @@ func RunState(statedb *state.StateDB, env, tx map[string]string) ([]byte, state.
// Set pre compiled contracts
// Set pre compiled contracts
vm
.
Precompiled
=
vm
.
PrecompiledContracts
()
vm
.
Precompiled
=
vm
.
PrecompiledContracts
()
snapshot
:=
statedb
.
Copy
()
coinbase
:=
statedb
.
GetOrNewStateObject
(
caddr
)
coinbase
:=
statedb
.
GetOrNewStateObject
(
caddr
)
coinbase
.
SetGasPool
(
ethutil
.
Big
(
env
[
"currentGasLimit"
]))
coinbase
.
SetGasPool
(
ethutil
.
Big
(
env
[
"currentGasLimit"
]))
...
@@ -175,6 +176,9 @@ func RunState(statedb *state.StateDB, env, tx map[string]string) ([]byte, state.
...
@@ -175,6 +176,9 @@ func RunState(statedb *state.StateDB, env, tx map[string]string) ([]byte, state.
st
:=
core
.
NewStateTransition
(
vmenv
,
message
,
coinbase
)
st
:=
core
.
NewStateTransition
(
vmenv
,
message
,
coinbase
)
vmenv
.
origin
=
keyPair
.
Address
()
vmenv
.
origin
=
keyPair
.
Address
()
ret
,
err
:=
st
.
TransitionState
()
ret
,
err
:=
st
.
TransitionState
()
if
core
.
IsNonceErr
(
err
)
||
core
.
IsInvalidTxErr
(
err
)
{
statedb
.
Set
(
snapshot
)
}
statedb
.
Update
(
vmenv
.
Gas
)
statedb
.
Update
(
vmenv
.
Gas
)
return
ret
,
vmenv
.
logs
,
vmenv
.
Gas
,
err
return
ret
,
vmenv
.
logs
,
vmenv
.
Gas
,
err
...
...
tests/vm/gh_test.go
View file @
c74c07ee
...
@@ -79,10 +79,6 @@ func RunVmTest(p string, t *testing.T) {
...
@@ -79,10 +79,6 @@ func RunVmTest(p string, t *testing.T) {
helper
.
CreateFileTests
(
t
,
p
,
&
tests
)
helper
.
CreateFileTests
(
t
,
p
,
&
tests
)
for
name
,
test
:=
range
tests
{
for
name
,
test
:=
range
tests
{
helper
.
Logger
.
SetLogLevel
(
4
)
if
name
!=
"callcodeToNameRegistratorAddresTooBigRight"
{
continue
}
db
,
_
:=
ethdb
.
NewMemDatabase
()
db
,
_
:=
ethdb
.
NewMemDatabase
()
statedb
:=
state
.
New
(
nil
,
db
)
statedb
:=
state
.
New
(
nil
,
db
)
for
addr
,
account
:=
range
test
.
Pre
{
for
addr
,
account
:=
range
test
.
Pre
{
...
@@ -161,7 +157,7 @@ func RunVmTest(p string, t *testing.T) {
...
@@ -161,7 +157,7 @@ func RunVmTest(p string, t *testing.T) {
if
!
isVmTest
{
if
!
isVmTest
{
if
!
bytes
.
Equal
(
ethutil
.
Hex2Bytes
(
test
.
PostStateRoot
),
statedb
.
Root
())
{
if
!
bytes
.
Equal
(
ethutil
.
Hex2Bytes
(
test
.
PostStateRoot
),
statedb
.
Root
())
{
//
t.Errorf("%s's : Post state root error. Expected %s, got %x", name, test.PostStateRoot, statedb.Root())
t
.
Errorf
(
"%s's : Post state root error. Expected %s, got %x"
,
name
,
test
.
PostStateRoot
,
statedb
.
Root
())
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment