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
ea9a549b
Commit
ea9a549b
authored
Feb 20, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed exported fields from state object and added proper set/getters
parent
5c975dd4
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
64 additions
and
47 deletions
+64
-47
main.go
cmd/ethtest/main.go
+2
-2
ui_lib.go
cmd/mist/ui_lib.go
+2
-2
state_transition.go
core/state_transition.go
+4
-4
transaction_pool.go
core/transaction_pool.go
+1
-1
dump.go
state/dump.go
+2
-2
state_object.go
state/state_object.go
+44
-23
statedb.go
state/statedb.go
+4
-8
gh_test.go
tests/vm/gh_test.go
+2
-2
xeth.go
xeth/xeth.go
+3
-3
No files found.
cmd/ethtest/main.go
View file @
ea9a549b
...
@@ -51,8 +51,8 @@ func StateObjectFromAccount(db ethutil.Database, addr string, account Account) *
...
@@ -51,8 +51,8 @@ func StateObjectFromAccount(db ethutil.Database, addr string, account Account) *
if
ethutil
.
IsHex
(
account
.
Code
)
{
if
ethutil
.
IsHex
(
account
.
Code
)
{
account
.
Code
=
account
.
Code
[
2
:
]
account
.
Code
=
account
.
Code
[
2
:
]
}
}
obj
.
Code
=
ethutil
.
Hex2Bytes
(
account
.
Code
)
obj
.
SetCode
(
ethutil
.
Hex2Bytes
(
account
.
Code
)
)
obj
.
Nonce
=
ethutil
.
Big
(
account
.
Nonce
)
.
Uint64
(
)
obj
.
SetNonce
(
ethutil
.
Big
(
account
.
Nonce
)
.
Uint64
()
)
return
obj
return
obj
}
}
...
...
cmd/mist/ui_lib.go
View file @
ea9a549b
...
@@ -146,8 +146,8 @@ func (ui *UiLib) AssetPath(p string) string {
...
@@ -146,8 +146,8 @@ func (ui *UiLib) AssetPath(p string) string {
func
(
self
*
UiLib
)
StartDbWithContractAndData
(
contractHash
,
data
string
)
{
func
(
self
*
UiLib
)
StartDbWithContractAndData
(
contractHash
,
data
string
)
{
dbWindow
:=
NewDebuggerWindow
(
self
)
dbWindow
:=
NewDebuggerWindow
(
self
)
object
:=
self
.
eth
.
ChainManager
()
.
State
()
.
GetStateObject
(
ethutil
.
Hex2Bytes
(
contractHash
))
object
:=
self
.
eth
.
ChainManager
()
.
State
()
.
GetStateObject
(
ethutil
.
Hex2Bytes
(
contractHash
))
if
len
(
object
.
Code
)
>
0
{
if
len
(
object
.
Code
()
)
>
0
{
dbWindow
.
SetCode
(
ethutil
.
Bytes2Hex
(
object
.
Code
))
dbWindow
.
SetCode
(
ethutil
.
Bytes2Hex
(
object
.
Code
()
))
}
}
dbWindow
.
SetData
(
data
)
dbWindow
.
SetData
(
data
)
...
...
core/state_transition.go
View file @
ea9a549b
...
@@ -138,8 +138,8 @@ func (self *StateTransition) preCheck() (err error) {
...
@@ -138,8 +138,8 @@ func (self *StateTransition) preCheck() (err error) {
)
)
// Make sure this transaction's nonce is correct
// Make sure this transaction's nonce is correct
if
sender
.
Nonce
!=
msg
.
Nonce
()
{
if
sender
.
Nonce
()
!=
msg
.
Nonce
()
{
return
NonceError
(
msg
.
Nonce
(),
sender
.
Nonce
)
return
NonceError
(
msg
.
Nonce
(),
sender
.
Nonce
()
)
}
}
// Pre-pay gas / Buy gas of the coinbase account
// Pre-pay gas / Buy gas of the coinbase account
...
@@ -166,7 +166,7 @@ func (self *StateTransition) TransitionState() (ret []byte, err error) {
...
@@ -166,7 +166,7 @@ func (self *StateTransition) TransitionState() (ret []byte, err error) {
defer
self
.
RefundGas
()
defer
self
.
RefundGas
()
// Increment the nonce for the next transaction
// Increment the nonce for the next transaction
self
.
state
.
SetNonce
(
sender
.
Address
(),
sender
.
Nonce
+
1
)
self
.
state
.
SetNonce
(
sender
.
Address
(),
sender
.
Nonce
()
+
1
)
//sender.Nonce += 1
//sender.Nonce += 1
// Transaction gas
// Transaction gas
...
@@ -242,7 +242,7 @@ func MakeContract(msg Message, state *state.StateDB) *state.StateObject {
...
@@ -242,7 +242,7 @@ func MakeContract(msg Message, state *state.StateDB) *state.StateObject {
addr
:=
AddressFromMessage
(
msg
)
addr
:=
AddressFromMessage
(
msg
)
contract
:=
state
.
GetOrNewStateObject
(
addr
)
contract
:=
state
.
GetOrNewStateObject
(
addr
)
contract
.
InitCode
=
msg
.
Data
(
)
contract
.
SetInitCode
(
msg
.
Data
()
)
return
contract
return
contract
}
}
...
...
core/transaction_pool.go
View file @
ea9a549b
...
@@ -169,7 +169,7 @@ func (pool *TxPool) RemoveInvalid(query StateQuery) {
...
@@ -169,7 +169,7 @@ func (pool *TxPool) RemoveInvalid(query StateQuery) {
for
_
,
tx
:=
range
pool
.
txs
{
for
_
,
tx
:=
range
pool
.
txs
{
sender
:=
query
.
GetAccount
(
tx
.
From
())
sender
:=
query
.
GetAccount
(
tx
.
From
())
err
:=
pool
.
ValidateTransaction
(
tx
)
err
:=
pool
.
ValidateTransaction
(
tx
)
if
err
!=
nil
||
sender
.
Nonce
>=
tx
.
Nonce
()
{
if
err
!=
nil
||
sender
.
Nonce
()
>=
tx
.
Nonce
()
{
removedTxs
=
append
(
removedTxs
,
tx
)
removedTxs
=
append
(
removedTxs
,
tx
)
}
}
}
}
...
...
state/dump.go
View file @
ea9a549b
...
@@ -30,7 +30,7 @@ func (self *StateDB) Dump() []byte {
...
@@ -30,7 +30,7 @@ func (self *StateDB) Dump() []byte {
for
it
.
Next
()
{
for
it
.
Next
()
{
stateObject
:=
NewStateObjectFromBytes
(
it
.
Key
,
it
.
Value
,
self
.
db
)
stateObject
:=
NewStateObjectFromBytes
(
it
.
Key
,
it
.
Value
,
self
.
db
)
account
:=
Account
{
Balance
:
stateObject
.
balance
.
String
(),
Nonce
:
stateObject
.
N
once
,
Root
:
ethutil
.
Bytes2Hex
(
stateObject
.
Root
()),
CodeHash
:
ethutil
.
Bytes2Hex
(
stateObject
.
codeHash
)}
account
:=
Account
{
Balance
:
stateObject
.
balance
.
String
(),
Nonce
:
stateObject
.
n
once
,
Root
:
ethutil
.
Bytes2Hex
(
stateObject
.
Root
()),
CodeHash
:
ethutil
.
Bytes2Hex
(
stateObject
.
codeHash
)}
account
.
Storage
=
make
(
map
[
string
]
string
)
account
.
Storage
=
make
(
map
[
string
]
string
)
storageIt
:=
stateObject
.
State
.
trie
.
Iterator
()
storageIt
:=
stateObject
.
State
.
trie
.
Iterator
()
...
@@ -50,7 +50,7 @@ func (self *StateDB) Dump() []byte {
...
@@ -50,7 +50,7 @@ func (self *StateDB) Dump() []byte {
// Debug stuff
// Debug stuff
func
(
self
*
StateObject
)
CreateOutputForDiff
()
{
func
(
self
*
StateObject
)
CreateOutputForDiff
()
{
fmt
.
Printf
(
"%x %x %x %x
\n
"
,
self
.
Address
(),
self
.
State
.
Root
(),
self
.
balance
.
Bytes
(),
self
.
N
once
)
fmt
.
Printf
(
"%x %x %x %x
\n
"
,
self
.
Address
(),
self
.
State
.
Root
(),
self
.
balance
.
Bytes
(),
self
.
n
once
)
it
:=
self
.
State
.
trie
.
Iterator
()
it
:=
self
.
State
.
trie
.
Iterator
()
for
it
.
Next
()
{
for
it
.
Next
()
{
fmt
.
Printf
(
"%x %x
\n
"
,
it
.
Key
,
it
.
Value
)
fmt
.
Printf
(
"%x %x
\n
"
,
it
.
Key
,
it
.
Value
)
...
...
state/state_object.go
View file @
ea9a549b
...
@@ -36,11 +36,11 @@ type StateObject struct {
...
@@ -36,11 +36,11 @@ type StateObject struct {
// Shared attributes
// Shared attributes
balance
*
big
.
Int
balance
*
big
.
Int
codeHash
[]
byte
codeHash
[]
byte
N
once
uint64
n
once
uint64
// Contract related attributes
// Contract related attributes
State
*
StateDB
State
*
StateDB
C
ode
Code
c
ode
Code
I
nitCode
Code
i
nitCode
Code
storage
Storage
storage
Storage
...
@@ -89,20 +89,21 @@ func NewStateObjectFromBytes(address, data []byte, db ethutil.Database) *StateOb
...
@@ -89,20 +89,21 @@ func NewStateObjectFromBytes(address, data []byte, db ethutil.Database) *StateOb
object
:=
&
StateObject
{
address
:
address
,
db
:
db
}
object
:=
&
StateObject
{
address
:
address
,
db
:
db
}
//object.RlpDecode(data)
//object.RlpDecode(data)
object
.
N
once
=
extobject
.
Nonce
object
.
n
once
=
extobject
.
Nonce
object
.
balance
=
extobject
.
Balance
object
.
balance
=
extobject
.
Balance
object
.
codeHash
=
extobject
.
CodeHash
object
.
codeHash
=
extobject
.
CodeHash
object
.
State
=
New
(
extobject
.
Root
,
db
)
object
.
State
=
New
(
extobject
.
Root
,
db
)
object
.
storage
=
make
(
map
[
string
]
*
ethutil
.
Value
)
object
.
storage
=
make
(
map
[
string
]
*
ethutil
.
Value
)
object
.
gasPool
=
new
(
big
.
Int
)
object
.
gasPool
=
new
(
big
.
Int
)
object
.
C
ode
,
_
=
db
.
Get
(
extobject
.
CodeHash
)
object
.
c
ode
,
_
=
db
.
Get
(
extobject
.
CodeHash
)
return
object
return
object
}
}
func
(
self
*
StateObject
)
MarkForDeletion
()
{
func
(
self
*
StateObject
)
MarkForDeletion
()
{
self
.
remove
=
true
self
.
remove
=
true
statelogger
.
DebugDetailf
(
"%x: #%d %v (deletion)
\n
"
,
self
.
Address
(),
self
.
Nonce
,
self
.
balance
)
self
.
dirty
=
true
statelogger
.
DebugDetailf
(
"%x: #%d %v (deletion)
\n
"
,
self
.
Address
(),
self
.
nonce
,
self
.
balance
)
}
}
func
(
c
*
StateObject
)
getAddr
(
addr
[]
byte
)
*
ethutil
.
Value
{
func
(
c
*
StateObject
)
getAddr
(
addr
[]
byte
)
*
ethutil
.
Value
{
...
@@ -159,25 +160,24 @@ func (self *StateObject) Sync() {
...
@@ -159,25 +160,24 @@ func (self *StateObject) Sync() {
}
}
func
(
c
*
StateObject
)
GetInstr
(
pc
*
big
.
Int
)
*
ethutil
.
Value
{
func
(
c
*
StateObject
)
GetInstr
(
pc
*
big
.
Int
)
*
ethutil
.
Value
{
if
int64
(
len
(
c
.
C
ode
)
-
1
)
<
pc
.
Int64
()
{
if
int64
(
len
(
c
.
c
ode
)
-
1
)
<
pc
.
Int64
()
{
return
ethutil
.
NewValue
(
0
)
return
ethutil
.
NewValue
(
0
)
}
}
return
ethutil
.
NewValueFromBytes
([]
byte
{
c
.
C
ode
[
pc
.
Int64
()]})
return
ethutil
.
NewValueFromBytes
([]
byte
{
c
.
c
ode
[
pc
.
Int64
()]})
}
}
func
(
c
*
StateObject
)
AddBalance
(
amount
*
big
.
Int
)
{
func
(
c
*
StateObject
)
AddBalance
(
amount
*
big
.
Int
)
{
c
.
SetBalance
(
new
(
big
.
Int
)
.
Add
(
c
.
balance
,
amount
))
c
.
SetBalance
(
new
(
big
.
Int
)
.
Add
(
c
.
balance
,
amount
))
c
.
dirty
=
true
statelogger
.
Debugf
(
"%x: #%d %v (+ %v)
\n
"
,
c
.
Address
(),
c
.
N
once
,
c
.
balance
,
amount
)
statelogger
.
Debugf
(
"%x: #%d %v (+ %v)
\n
"
,
c
.
Address
(),
c
.
n
once
,
c
.
balance
,
amount
)
}
}
func
(
c
*
StateObject
)
AddAmount
(
amount
*
big
.
Int
)
{
c
.
AddBalance
(
amount
)
}
func
(
c
*
StateObject
)
AddAmount
(
amount
*
big
.
Int
)
{
c
.
AddBalance
(
amount
)
}
func
(
c
*
StateObject
)
SubBalance
(
amount
*
big
.
Int
)
{
func
(
c
*
StateObject
)
SubBalance
(
amount
*
big
.
Int
)
{
c
.
SetBalance
(
new
(
big
.
Int
)
.
Sub
(
c
.
balance
,
amount
))
c
.
SetBalance
(
new
(
big
.
Int
)
.
Sub
(
c
.
balance
,
amount
))
statelogger
.
Debugf
(
"%x: #%d %v (- %v)
\n
"
,
c
.
Address
(),
c
.
N
once
,
c
.
balance
,
amount
)
statelogger
.
Debugf
(
"%x: #%d %v (- %v)
\n
"
,
c
.
Address
(),
c
.
n
once
,
c
.
balance
,
amount
)
}
}
func
(
c
*
StateObject
)
SubAmount
(
amount
*
big
.
Int
)
{
c
.
SubBalance
(
amount
)
}
func
(
c
*
StateObject
)
SubAmount
(
amount
*
big
.
Int
)
{
c
.
SubBalance
(
amount
)
}
...
@@ -186,8 +186,6 @@ func (c *StateObject) SetBalance(amount *big.Int) {
...
@@ -186,8 +186,6 @@ func (c *StateObject) SetBalance(amount *big.Int) {
c
.
dirty
=
true
c
.
dirty
=
true
}
}
func
(
self
*
StateObject
)
Balance
()
*
big
.
Int
{
return
self
.
balance
}
//
//
// Gas setters and getters
// Gas setters and getters
//
//
...
@@ -243,12 +241,12 @@ func (self *StateObject) Copy() *StateObject {
...
@@ -243,12 +241,12 @@ func (self *StateObject) Copy() *StateObject {
stateObject
:=
NewStateObject
(
self
.
Address
(),
self
.
db
)
stateObject
:=
NewStateObject
(
self
.
Address
(),
self
.
db
)
stateObject
.
balance
.
Set
(
self
.
balance
)
stateObject
.
balance
.
Set
(
self
.
balance
)
stateObject
.
codeHash
=
ethutil
.
CopyBytes
(
self
.
codeHash
)
stateObject
.
codeHash
=
ethutil
.
CopyBytes
(
self
.
codeHash
)
stateObject
.
Nonce
=
self
.
N
once
stateObject
.
nonce
=
self
.
n
once
if
self
.
State
!=
nil
{
if
self
.
State
!=
nil
{
stateObject
.
State
=
self
.
State
.
Copy
()
stateObject
.
State
=
self
.
State
.
Copy
()
}
}
stateObject
.
Code
=
ethutil
.
CopyBytes
(
self
.
C
ode
)
stateObject
.
code
=
ethutil
.
CopyBytes
(
self
.
c
ode
)
stateObject
.
InitCode
=
ethutil
.
CopyBytes
(
self
.
I
nitCode
)
stateObject
.
initCode
=
ethutil
.
CopyBytes
(
self
.
i
nitCode
)
stateObject
.
storage
=
self
.
storage
.
Copy
()
stateObject
.
storage
=
self
.
storage
.
Copy
()
stateObject
.
gasPool
.
Set
(
self
.
gasPool
)
stateObject
.
gasPool
.
Set
(
self
.
gasPool
)
stateObject
.
remove
=
self
.
remove
stateObject
.
remove
=
self
.
remove
...
@@ -265,8 +263,12 @@ func (self *StateObject) Set(stateObject *StateObject) {
...
@@ -265,8 +263,12 @@ func (self *StateObject) Set(stateObject *StateObject) {
// Attribute accessors
// Attribute accessors
//
//
func
(
self
*
StateObject
)
Balance
()
*
big
.
Int
{
return
self
.
balance
}
func
(
c
*
StateObject
)
N
()
*
big
.
Int
{
func
(
c
*
StateObject
)
N
()
*
big
.
Int
{
return
big
.
NewInt
(
int64
(
c
.
N
once
))
return
big
.
NewInt
(
int64
(
c
.
n
once
))
}
}
// Returns the address of the contract/account
// Returns the address of the contract/account
...
@@ -276,7 +278,7 @@ func (c *StateObject) Address() []byte {
...
@@ -276,7 +278,7 @@ func (c *StateObject) Address() []byte {
// Returns the initialization Code
// Returns the initialization Code
func
(
c
*
StateObject
)
Init
()
Code
{
func
(
c
*
StateObject
)
Init
()
Code
{
return
c
.
I
nitCode
return
c
.
i
nitCode
}
}
func
(
self
*
StateObject
)
Trie
()
*
trie
.
Trie
{
func
(
self
*
StateObject
)
Trie
()
*
trie
.
Trie
{
...
@@ -287,8 +289,27 @@ func (self *StateObject) Root() []byte {
...
@@ -287,8 +289,27 @@ func (self *StateObject) Root() []byte {
return
self
.
Trie
()
.
Root
()
return
self
.
Trie
()
.
Root
()
}
}
func
(
self
*
StateObject
)
Code
()
[]
byte
{
return
self
.
code
}
func
(
self
*
StateObject
)
SetCode
(
code
[]
byte
)
{
func
(
self
*
StateObject
)
SetCode
(
code
[]
byte
)
{
self
.
Code
=
code
self
.
code
=
code
self
.
dirty
=
true
}
func
(
self
*
StateObject
)
SetInitCode
(
code
[]
byte
)
{
self
.
initCode
=
code
self
.
dirty
=
true
}
func
(
self
*
StateObject
)
SetNonce
(
nonce
uint64
)
{
self
.
nonce
=
nonce
self
.
dirty
=
true
}
func
(
self
*
StateObject
)
Nonce
()
uint64
{
return
self
.
nonce
}
}
//
//
...
@@ -297,16 +318,16 @@ func (self *StateObject) SetCode(code []byte) {
...
@@ -297,16 +318,16 @@ func (self *StateObject) SetCode(code []byte) {
// State object encoding methods
// State object encoding methods
func
(
c
*
StateObject
)
RlpEncode
()
[]
byte
{
func
(
c
*
StateObject
)
RlpEncode
()
[]
byte
{
return
ethutil
.
Encode
([]
interface
{}{
c
.
N
once
,
c
.
balance
,
c
.
Root
(),
c
.
CodeHash
()})
return
ethutil
.
Encode
([]
interface
{}{
c
.
n
once
,
c
.
balance
,
c
.
Root
(),
c
.
CodeHash
()})
}
}
func
(
c
*
StateObject
)
CodeHash
()
ethutil
.
Bytes
{
func
(
c
*
StateObject
)
CodeHash
()
ethutil
.
Bytes
{
return
crypto
.
Sha3
(
c
.
C
ode
)
return
crypto
.
Sha3
(
c
.
c
ode
)
}
}
func
(
c
*
StateObject
)
RlpDecode
(
data
[]
byte
)
{
func
(
c
*
StateObject
)
RlpDecode
(
data
[]
byte
)
{
decoder
:=
ethutil
.
NewValueFromBytes
(
data
)
decoder
:=
ethutil
.
NewValueFromBytes
(
data
)
c
.
N
once
=
decoder
.
Get
(
0
)
.
Uint
()
c
.
n
once
=
decoder
.
Get
(
0
)
.
Uint
()
c
.
balance
=
decoder
.
Get
(
1
)
.
BigInt
()
c
.
balance
=
decoder
.
Get
(
1
)
.
BigInt
()
c
.
State
=
New
(
decoder
.
Get
(
2
)
.
Bytes
(),
c
.
db
)
//New(trie.New(ethutil.Config.Db, decoder.Get(2).Interface()))
c
.
State
=
New
(
decoder
.
Get
(
2
)
.
Bytes
(),
c
.
db
)
//New(trie.New(ethutil.Config.Db, decoder.Get(2).Interface()))
c
.
storage
=
make
(
map
[
string
]
*
ethutil
.
Value
)
c
.
storage
=
make
(
map
[
string
]
*
ethutil
.
Value
)
...
@@ -314,7 +335,7 @@ func (c *StateObject) RlpDecode(data []byte) {
...
@@ -314,7 +335,7 @@ func (c *StateObject) RlpDecode(data []byte) {
c
.
codeHash
=
decoder
.
Get
(
3
)
.
Bytes
()
c
.
codeHash
=
decoder
.
Get
(
3
)
.
Bytes
()
c
.
C
ode
,
_
=
c
.
db
.
Get
(
c
.
codeHash
)
c
.
c
ode
,
_
=
c
.
db
.
Get
(
c
.
codeHash
)
}
}
// Storage change object. Used by the manifest for notifying changes to
// Storage change object. Used by the manifest for notifying changes to
...
...
state/statedb.go
View file @
ea9a549b
...
@@ -72,7 +72,7 @@ func (self *StateDB) AddBalance(addr []byte, amount *big.Int) {
...
@@ -72,7 +72,7 @@ func (self *StateDB) AddBalance(addr []byte, amount *big.Int) {
func
(
self
*
StateDB
)
GetNonce
(
addr
[]
byte
)
uint64
{
func
(
self
*
StateDB
)
GetNonce
(
addr
[]
byte
)
uint64
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
GetStateObject
(
addr
)
if
stateObject
!=
nil
{
if
stateObject
!=
nil
{
return
stateObject
.
N
once
return
stateObject
.
n
once
}
}
return
0
return
0
...
@@ -81,7 +81,7 @@ func (self *StateDB) GetNonce(addr []byte) uint64 {
...
@@ -81,7 +81,7 @@ func (self *StateDB) GetNonce(addr []byte) uint64 {
func
(
self
*
StateDB
)
GetCode
(
addr
[]
byte
)
[]
byte
{
func
(
self
*
StateDB
)
GetCode
(
addr
[]
byte
)
[]
byte
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
GetStateObject
(
addr
)
if
stateObject
!=
nil
{
if
stateObject
!=
nil
{
return
stateObject
.
C
ode
return
stateObject
.
c
ode
}
}
return
nil
return
nil
...
@@ -99,8 +99,7 @@ func (self *StateDB) GetState(a, b []byte) []byte {
...
@@ -99,8 +99,7 @@ func (self *StateDB) GetState(a, b []byte) []byte {
func
(
self
*
StateDB
)
SetNonce
(
addr
[]
byte
,
nonce
uint64
)
{
func
(
self
*
StateDB
)
SetNonce
(
addr
[]
byte
,
nonce
uint64
)
{
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
GetStateObject
(
addr
)
if
stateObject
!=
nil
{
if
stateObject
!=
nil
{
stateObject
.
Nonce
=
nonce
stateObject
.
SetNonce
(
nonce
)
stateObject
.
dirty
=
true
}
}
}
}
...
@@ -108,7 +107,6 @@ func (self *StateDB) SetCode(addr, code []byte) {
...
@@ -108,7 +107,6 @@ func (self *StateDB) SetCode(addr, code []byte) {
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
GetStateObject
(
addr
)
if
stateObject
!=
nil
{
if
stateObject
!=
nil
{
stateObject
.
SetCode
(
code
)
stateObject
.
SetCode
(
code
)
stateObject
.
dirty
=
true
}
}
}
}
...
@@ -116,7 +114,6 @@ func (self *StateDB) SetState(addr, key []byte, value interface{}) {
...
@@ -116,7 +114,6 @@ func (self *StateDB) SetState(addr, key []byte, value interface{}) {
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
GetStateObject
(
addr
)
if
stateObject
!=
nil
{
if
stateObject
!=
nil
{
stateObject
.
SetState
(
key
,
ethutil
.
NewValue
(
value
))
stateObject
.
SetState
(
key
,
ethutil
.
NewValue
(
value
))
stateObject
.
dirty
=
true
}
}
}
}
...
@@ -124,7 +121,6 @@ func (self *StateDB) Delete(addr []byte) bool {
...
@@ -124,7 +121,6 @@ func (self *StateDB) Delete(addr []byte) bool {
stateObject
:=
self
.
GetStateObject
(
addr
)
stateObject
:=
self
.
GetStateObject
(
addr
)
if
stateObject
!=
nil
{
if
stateObject
!=
nil
{
stateObject
.
MarkForDeletion
()
stateObject
.
MarkForDeletion
()
stateObject
.
dirty
=
true
return
true
return
true
}
}
...
@@ -141,7 +137,7 @@ func (self *StateDB) UpdateStateObject(stateObject *StateObject) {
...
@@ -141,7 +137,7 @@ func (self *StateDB) UpdateStateObject(stateObject *StateObject) {
addr
:=
stateObject
.
Address
()
addr
:=
stateObject
.
Address
()
if
len
(
stateObject
.
CodeHash
())
>
0
{
if
len
(
stateObject
.
CodeHash
())
>
0
{
self
.
db
.
Put
(
stateObject
.
CodeHash
(),
stateObject
.
C
ode
)
self
.
db
.
Put
(
stateObject
.
CodeHash
(),
stateObject
.
c
ode
)
}
}
self
.
trie
.
Update
(
addr
,
stateObject
.
RlpEncode
())
self
.
trie
.
Update
(
addr
,
stateObject
.
RlpEncode
())
...
...
tests/vm/gh_test.go
View file @
ea9a549b
...
@@ -46,8 +46,8 @@ func StateObjectFromAccount(db ethutil.Database, addr string, account Account) *
...
@@ -46,8 +46,8 @@ func StateObjectFromAccount(db ethutil.Database, addr string, account Account) *
if
ethutil
.
IsHex
(
account
.
Code
)
{
if
ethutil
.
IsHex
(
account
.
Code
)
{
account
.
Code
=
account
.
Code
[
2
:
]
account
.
Code
=
account
.
Code
[
2
:
]
}
}
obj
.
Code
=
ethutil
.
Hex2Bytes
(
account
.
Code
)
obj
.
SetCode
(
ethutil
.
Hex2Bytes
(
account
.
Code
)
)
obj
.
Nonce
=
ethutil
.
Big
(
account
.
Nonce
)
.
Uint64
(
)
obj
.
SetNonce
(
ethutil
.
Big
(
account
.
Nonce
)
.
Uint64
()
)
return
obj
return
obj
}
}
...
...
xeth/xeth.go
View file @
ea9a549b
...
@@ -128,15 +128,15 @@ func (self *XEth) BalanceAt(addr string) string {
...
@@ -128,15 +128,15 @@ func (self *XEth) BalanceAt(addr string) string {
}
}
func
(
self
*
XEth
)
TxCountAt
(
address
string
)
int
{
func
(
self
*
XEth
)
TxCountAt
(
address
string
)
int
{
return
int
(
self
.
State
()
.
SafeGet
(
address
)
.
Nonce
)
return
int
(
self
.
State
()
.
SafeGet
(
address
)
.
Nonce
()
)
}
}
func
(
self
*
XEth
)
CodeAt
(
address
string
)
string
{
func
(
self
*
XEth
)
CodeAt
(
address
string
)
string
{
return
toHex
(
self
.
State
()
.
SafeGet
(
address
)
.
Code
)
return
toHex
(
self
.
State
()
.
SafeGet
(
address
)
.
Code
()
)
}
}
func
(
self
*
XEth
)
IsContract
(
address
string
)
bool
{
func
(
self
*
XEth
)
IsContract
(
address
string
)
bool
{
return
len
(
self
.
State
()
.
SafeGet
(
address
)
.
Code
)
>
0
return
len
(
self
.
State
()
.
SafeGet
(
address
)
.
Code
()
)
>
0
}
}
func
(
self
*
XEth
)
SecretToAddress
(
key
string
)
string
{
func
(
self
*
XEth
)
SecretToAddress
(
key
string
)
string
{
...
...
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